ZGlmZiAtLWdpdCBhL2RvYy8uaWR4IGIvZG9jLy5pZHgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uY2ViNjI0NQotLS0gL2Rldi9udWxsCisrKyBiL2RvYy8uaWR4CkBAIC0wLDAgKzEsMTIxOCBAQAorLgkKK0dydW5kbGFnZW4JR3J1bmRsYWdlbgorT2JqZWt0ZQlHcnVuZGxhZ2VuL09iamVrdGUKK0VmZml6aWVueglHcnVuZGxhZ2VuL0VmZml6aWVuegorRWZmaXppZW56LjAJR3J1bmRsYWdlbi9FZmZpemllbnouMAorZWZ1bgllZnVuCit0cmFuc3Bvc2VfYXJyYXkJZWZ1bi90cmFuc3Bvc2VfYXJyYXkKK2ZpbmRfcGxheWVyCWVmdW4vZmluZF9wbGF5ZXIKK3dyaXRlX2ZpbGUJZWZ1bi93cml0ZV9maWxlCit3cml0ZV9ieXRlcwllZnVuL3dyaXRlX2J5dGVzCit3cml0ZQllZnVuL3dyaXRlCit3aXpsaXN0X2luZm8JZWZ1bi93aXpsaXN0X2luZm8KK3VzZXJzCWVmdW4vdXNlcnMKK3dpemxpc3QJZWZ1bi93aXpsaXN0Cit3YWxrX21hcHBpbmcJZWZ1bi93YWxrX21hcHBpbmcKK3VuaXF1ZV9hcnJheQllZnVuL3VuaXF1ZV9hcnJheQordW5zaGFkb3cJZWZ1bi91bnNoYWRvdwordW5ib3VuZF9sYW1iZGEJZWZ1bi91bmJvdW5kX2xhbWJkYQordHlwZW9mCWVmdW4vdHlwZW9mCit0cmFjZXByZWZpeAllZnVuL3RyYWNlcHJlZml4Cit0cmFuc2ZlcgllZnVuL3RyYW5zZmVyCit0b19zdHJpbmcJZWZ1bi90b19zdHJpbmcKK3RyYWNlCWVmdW4vdHJhY2UKK3RvX2ludAllZnVuL3RvX2ludAordGhpc19wbGF5ZXIJZWZ1bi90aGlzX3BsYXllcgordG9fZmxvYXQJZWZ1bi90b19mbG9hdAordG9fYXJyYXkJZWZ1bi90b19hcnJheQordGltZQllZnVuL3RpbWUKK3Rocm93CWVmdW4vdGhyb3cKK3RoaXNfaW50ZXJhY3RpdmUJZWZ1bi90aGlzX2ludGVyYWN0aXZlCit0YW4JZWZ1bi90YW4KK3RoaXNfb2JqZWN0CWVmdW4vdGhpc19vYmplY3QKK3RlbGxfb2JqZWN0CWVmdW4vdGVsbF9vYmplY3QKK3RlbGxfcm9vbQllZnVuL3RlbGxfcm9vbQordGVzdF9iaXQJZWZ1bi90ZXN0X2JpdAorc3ltYm9scAllZnVuL3N5bWJvbHAKK3RhaWwJZWZ1bi90YWlsCitzaHV0ZG93bgllZnVuL3NodXRkb3duCitzaW4JZWZ1bi9zaW4KK3N5bWJvbF9mdW5jdGlvbgllZnVuL3N5bWJvbF9mdW5jdGlvbgorc3dhcAllZnVuL3N3YXAKK3N0cnN0cgllZnVuL3N0cnN0cgorc3RybGVuCWVmdW4vc3RybGVuCitzdHJpbmdwCWVmdW4vc3RyaW5ncAorc3NjYW5mCWVmdW4vc3NjYW5mCitzcHJpbnRmCWVmdW4vc3ByaW50Zgorc3FydAllZnVuL3NxcnQKK3NvcnRfYXJyYXkJZWZ1bi9zb3J0X2FycmF5Citzbm9vcAllZnVuL3Nub29wCitzbGljZV9hcnJheQllZnVuL3NsaWNlX2FycmF5CitzaXplb2YJZWZ1bi9zaXplb2YKK3NldGV1aWQJZWZ1bi9zZXRldWlkCitzaGFkb3cJZWZ1bi9zaGFkb3cKK3Nob3V0CWVmdW4vc2hvdXQKK3NldF9leHRyYV93aXppbmZvX3NpemUJZWZ1bi9zZXRfZXh0cmFfd2l6aW5mb19zaXplCitzZXRfdGhpc19wbGF5ZXIJZWZ1bi9zZXRfdGhpc19wbGF5ZXIKK3NldF90aGlzX29iamVjdAllZnVuL3NldF90aGlzX29iamVjdAorc2l6ZW9mCWVmdW4vc2l6ZW9mCitzYXkJZWZ1bi9zYXkKK3NldF9tb2RpZnlfY29tbWFuZAllZnVuL3NldF9tb2RpZnlfY29tbWFuZAorc2V0X3Byb21wdAllZnVuL3NldF9wcm9tcHQKK3JtCWVmdW4vcm0KK3NldF9saWdodAllZnVuL3NldF9saWdodAorc2V0X2xpdmluZ19uYW1lCWVmdW4vc2V0X2xpdmluZ19uYW1lCitzZXRfaGVhcnRfYmVhdAllZnVuL3NldF9oZWFydF9iZWF0CitzZXRfaXNfd2l6YXJkCWVmdW4vc2V0X2lzX3dpemFyZAorc2V0X2V4dHJhX3dpemluZm8JZWZ1bi9zZXRfZXh0cmFfd2l6aW5mbworc2F2ZV9vYmplY3QJZWZ1bi9zYXZlX29iamVjdAorc2V0X2JpdAllZnVuL3NldF9iaXQKK3JlbmFtZQllZnVuL3JlbmFtZQorc2V0X2F1dG9faW5jbHVkZV9zdHJpbmcJZWZ1bi9zZXRfYXV0b19pbmNsdWRlX3N0cmluZworc2VuZF9pbXAJZWZ1bi9zZW5kX2ltcAorcm1kaXIJZWZ1bi9ybWRpcgorcnVzYWdlCWVmdW4vcnVzYWdlCityZXN0b3JlX29iamVjdAllZnVuL3Jlc3RvcmVfb2JqZWN0CitxdWVyeV9vbmNlX2ludGVyYWN0aXZlCWVmdW4vcXVlcnlfb25jZV9pbnRlcmFjdGl2ZQorcmVwbGFjZV9wcm9ncmFtCWVmdW4vcmVwbGFjZV9wcm9ncmFtCityZW5hbWVfb2JqZWN0CWVmdW4vcmVuYW1lX29iamVjdAorcmVtb3ZlX2NhbGxfb3V0CWVmdW4vcmVtb3ZlX2NhbGxfb3V0CityZW1vdmVfYWN0aW9uCWVmdW4vcmVtb3ZlX2FjdGlvbgorcmVtb3ZlX2FsaXN0CWVmdW4vcmVtb3ZlX2FsaXN0CityZWZlcmVuY2VwCWVmdW4vcmVmZXJlbmNlcAorcmVtb3ZlX2ludGVyYWN0aXZlCWVmdW4vcmVtb3ZlX2ludGVyYWN0aXZlCityZWFkX2ZpbGUJZWZ1bi9yZWFkX2ZpbGUKK3JlZ2V4cGxvZGUJZWZ1bi9yZWdleHBsb2RlCityZWdleHAJZWZ1bi9yZWdleHAKK3JlYWRfYnl0ZXMJZWZ1bi9yZWFkX2J5dGVzCityYWlzZV9lcnJvcgllZnVuL3JhaXNlX2Vycm9yCityYW5kb20JZWZ1bi9yYW5kb20KK3F1ZXJ5X3ZlcmIJZWZ1bi9xdWVyeV92ZXJiCitxdW90ZQllZnVuL3F1b3RlCitxdWVyeV9sb2FkX2F2ZXJhZ2UJZWZ1bi9xdWVyeV9sb2FkX2F2ZXJhZ2UKK3F1ZXJ5X3Nub29wCWVmdW4vcXVlcnlfc25vb3AKK3F1ZXJ5X211ZF9wb3J0CWVmdW4vcXVlcnlfbXVkX3BvcnQKK3F1ZXJ5X2lucHV0X3BlbmRpbmcJZWZ1bi9xdWVyeV9pbnB1dF9wZW5kaW5nCitxdWVyeV9pcF9udW1iZXIJZWZ1bi9xdWVyeV9pcF9udW1iZXIKK3F1ZXJ5X2lwX25hbWUJZWZ1bi9xdWVyeV9pcF9uYW1lCitxdWVyeV9pbXBfcG9ydAllZnVuL3F1ZXJ5X2ltcF9wb3J0CitxdWVyeV9lZGl0aW5nCWVmdW4vcXVlcnlfZWRpdGluZworcXVlcnlfaWRsZQllZnVuL3F1ZXJ5X2lkbGUKK2ludGVyYWN0aXZlCWVmdW4vaW50ZXJhY3RpdmUKK2xvZwllZnVuL2xvZworcXVlcnlfYWN0aW9ucwllZnVuL3F1ZXJ5X2FjdGlvbnMKK3Byb2dyYW1fdGltZQllZnVuL3Byb2dyYW1fdGltZQorcHJpbnRmCWVmdW4vcHJpbnRmCitxdWVyeV9ob3N0X25hbWUJZWZ1bi9xdWVyeV9ob3N0X25hbWUKK3Byb2Nlc3Nfc3RyaW5nCWVmdW4vcHJvY2Vzc19zdHJpbmcKK3ByZXZpb3VzX29iamVjdAllZnVuL3ByZXZpb3VzX29iamVjdAorcG9pbnRlcnAJZWZ1bi9wb2ludGVycAorcGVvcGxlCWVmdW4vcGVvcGxlCitwcmVzZW50CWVmdW4vcHJlc2VudAorcGFyc2VfY29tbWFuZAllZnVuL3BhcnNlX2NvbW1hbmQKK3BhcnNlX2NvbW1hbmQuMQllZnVuL3BhcnNlX2NvbW1hbmQuMQorb3JkZXJfYWxpc3QJZWZ1bi9vcmRlcl9hbGlzdAorb2JqZWN0cAllZnVuL29iamVjdHAKK25lZ2F0ZQllZnVuL25lZ2F0ZQorbm90aWZ5X2ZhaWwJZWZ1bi9ub3RpZnlfZmFpbAorbmV4dF9pbnZlbnRvcnkJZWZ1bi9uZXh0X2ludmVudG9yeQorbWtkaXIJZWZ1bi9ta2RpcgorbW92ZV9vYmplY3QJZWZ1bi9tb3ZlX29iamVjdAorbWVtYmVyX2FycmF5CWVmdW4vbWVtYmVyX2FycmF5Citta21hcHBpbmcJZWZ1bi9ta21hcHBpbmcKK21hcHBpbmdwCWVmdW4vbWFwcGluZ3AKK21fY29udGFpbnMJZWZ1bi9tX2NvbnRhaW5zCittZW1iZXIJZWZ1bi9tZW1iZXIKK21hcAllZnVuL21hcAorbV92YWx1ZXMJZWZ1bi9tX3ZhbHVlcworbWFwX2luZGljZXMJZWZ1bi9tYXBfaW5kaWNlcworbWFwX29iamVjdHMJZWZ1bi9tYXBfb2JqZWN0cworbV9pbmRpY2VzCWVmdW4vbV9pbmRpY2VzCittX2RlbGV0ZQllZnVuL21fZGVsZXRlCitsb2dfZmlsZQllZnVuL2xvZ19maWxlCitsb3dlcl9jYXNlCWVmdW4vbG93ZXJfY2FzZQorbGl2aW5nCWVmdW4vbGl2aW5nCitsYW1iZGEJZWZ1bi9sYW1iZGEKK2ludHAJZWZ1bi9pbnRwCitmdW5jdGlvbl9leGlzdHMJZWZ1bi9mdW5jdGlvbl9leGlzdHMKK2ludGVyc2VjdF9hbGlzdAllZnVuL2ludGVyc2VjdF9hbGlzdAoraW5zZXJ0X2FsaXN0Lm9yaWcJZWZ1bi9pbnNlcnRfYWxpc3Qub3JpZworaW5zZXJ0X2FsaXN0LnJlagllZnVuL2luc2VydF9hbGlzdC5yZWoKK2luaGVyaXRfbGlzdAllZnVuL2luaGVyaXRfbGlzdAoraW5wdXRfdG8JZWZ1bi9pbnB1dF90bworaW1wbG9kZQllZnVuL2ltcGxvZGUKK2luc2VydF9hbGlzdAllZnVuL2luc2VydF9hbGlzdAoraGVhcnRfYmVhdF9pbmZvCWVmdW4vaGVhcnRfYmVhdF9pbmZvCitnZXRfdHlwZV9pbmZvCWVmdW4vZ2V0X3R5cGVfaW5mbworZ2V0ZXVpZAllZnVuL2dldGV1aWQKK2dldHVpZAllZnVuL2dldHVpZAorZ2V0X2Vycm9yX2ZpbGUJZWZ1bi9nZXRfZXJyb3JfZmlsZQorZ2V0X2V4dHJhX3dpemluZm8JZWZ1bi9nZXRfZXh0cmFfd2l6aW5mbworZ2V0X2V2YWxfY29zdAllZnVuL2dldF9ldmFsX2Nvc3QKK2dldF9kaXIJZWZ1bi9nZXRfZGlyCitnYXJiYWdlX2NvbGxlY3Rpb24JZWZ1bi9nYXJiYWdlX2NvbGxlY3Rpb24KK2Z1bmNhbGwJZWZ1bi9mdW5jYWxsCitmaW5kX29iamVjdAllZnVuL2ZpbmRfb2JqZWN0CitmaXJzdF9pbnZlbnRvcnkJZWZ1bi9maXJzdF9pbnZlbnRvcnkKK2Z1bmN0aW9ubGlzdAllZnVuL2Z1bmN0aW9ubGlzdAorZmxvYXRwCWVmdW4vZmxvYXRwCitlbmFibGVfY29tbWFuZHMJZWZ1bi9lbmFibGVfY29tbWFuZHMKK2ZpbHRlcl9vYmplY3RzCWVmdW4vZmlsdGVyX29iamVjdHMKK2ZpbmRfbGl2aW5nCWVmdW4vZmluZF9saXZpbmcKK2ZpbmRfY2FsbF9vdXQJZWZ1bi9maW5kX2NhbGxfb3V0CitmaWx0ZXIJZWZ1bi9maWx0ZXIKK2ZpbHRlcl9pbmRpY2VzCWVmdW4vZmlsdGVyX2luZGljZXMKK2ZpbGVfc2l6ZQllZnVuL2ZpbGVfc2l6ZQorb2JqZWN0X25hbWUJZWZ1bi9vYmplY3RfbmFtZQorZmlsZV90aW1lCWVmdW4vZmlsZV90aW1lCitleHBvcnRfdWlkCWVmdW4vZXhwb3J0X3VpZAorZXh0cmFjdAllZnVuL2V4dHJhY3QKK2V4cGxvZGUJZWZ1bi9leHBsb2RlCitleGNsdWRlX2FycmF5CWVmdW4vZXhjbHVkZV9hcnJheQorZXhwCWVmdW4vZXhwCitleGVjCWVmdW4vZXhlYworZXhjbHVkZV9hbGlzdAllZnVuL2V4Y2x1ZGVfYWxpc3QKK2VkCWVmdW4vZWQKK2Vudmlyb25tZW50CWVmdW4vZW52aXJvbm1lbnQKK2RlYnVnX2luZm8JZWZ1bi9kZWJ1Z19pbmZvCitlZnVuCWVmdW4vZWZ1bgorY29zCWVmdW4vY29zCitkZXN0cnVjdAllZnVuL2Rlc3RydWN0CitjcnlwdAllZnVuL2NyeXB0CitkaXNhYmxlX2NvbW1hbmRzCWVmdW4vZGlzYWJsZV9jb21tYW5kcworY2FsbGVyX3N0YWNrX2RlcHRoCWVmdW4vY2FsbGVyX3N0YWNrX2RlcHRoCitkZWVwX2ludmVudG9yeQllZnVuL2RlZXBfaW52ZW50b3J5CitjdGltZQllZnVuL2N0aW1lCitjcmVhdGVfd2l6YXJkCWVmdW4vY3JlYXRlX3dpemFyZAorY3JlYXRvcgllZnVuL2NyZWF0b3IKK2NvcHkJZWZ1bi9jb3B5Citjb21tYW5kCWVmdW4vY29tbWFuZAorY2xvbmVfb2JqZWN0CWVmdW4vY2xvbmVfb2JqZWN0CitjbG9zdXJlcAllZnVuL2Nsb3N1cmVwCitjYXRjaAllZnVuL2NhdGNoCitjbGVhcl9iaXQJZWZ1bi9jbGVhcl9iaXQKK2NpbmRlbnQJZWZ1bi9jaW5kZW50CitjYXQJZWZ1bi9jYXQKK2NhbGxfcmVzb2x2ZWQJZWZ1bi9jYWxsX3Jlc29sdmVkCitjYWxsX291dF9pbmZvCWVmdW4vY2FsbF9vdXRfaW5mbworY2FwaXRhbGl6ZQllZnVuL2NhcGl0YWxpemUKK2NhbGxfb3RoZXIJZWZ1bi9jYWxsX290aGVyCitjYWxsX291dAllZnVuL2NhbGxfb3V0CithbGxvY2F0ZV9tYXBwaW5nCWVmdW4vYWxsb2NhdGVfbWFwcGluZworYnJlYWtfc3RyaW5nCWVmdW4vYnJlYWtfc3RyaW5nCithc3NvYwllZnVuL2Fzc29jCitiaW5kX2xhbWJkYQllZnVuL2JpbmRfbGFtYmRhCithdGFuCWVmdW4vYXRhbgorYXBwbHkJZWZ1bi9hcHBseQorYnJlYWtfcG9pbnQJZWZ1bi9icmVha19wb2ludAorYWxsb2NhdGUJZWZ1bi9hbGxvY2F0ZQorYWRkX3dvcnRoCWVmdW4vYWRkX3dvcnRoCithc2luCWVmdW4vYXNpbgorYWxsX2ludmVudG9yeQllZnVuL2FsbF9pbnZlbnRvcnkKK2FkZF94dmVyYgllZnVuL2FkZF94dmVyYgorc2VuZF9lcnEJZWZ1bi9zZW5kX2VycQorYWRkX3ZlcmIJZWZ1bi9hZGRfdmVyYgorYWNvcwllZnVuL2Fjb3MKK2FkZF9hY3Rpb24JZWZ1bi9hZGRfYWN0aW9uCithdHRhY2hfZXJxX2RlbW9uCWVmdW4vYXR0YWNoX2VycV9kZW1vbgorYmluYXJ5X21lc3NhZ2UJZWZ1bi9iaW5hcnlfbWVzc2FnZQorZGVidWdfbWVzc2FnZQllZnVuL2RlYnVnX21lc3NhZ2UKK3NldF9lbnZpcm9ubWVudAllZnVuL3NldF9lbnZpcm9ubWVudAorZXh0ZXJuX2NhbGwJZWZ1bi9leHRlcm5fY2FsbAorbGFzdF9pbnN0cnVjdGlvbnMJZWZ1bi9sYXN0X2luc3RydWN0aW9ucworcXVlcnlfc2hhZG93aW5nCWVmdW4vcXVlcnlfc2hhZG93aW5nCitzZXRfYnVmZmVyX3NpemUJZWZ1bi9zZXRfYnVmZmVyX3NpemUKK3NldF9jb25uZWN0aW9uX2NoYXJzZXQJZWZ1bi9zZXRfY29ubmVjdGlvbl9jaGFyc2V0CitzZXRfZHJpdmVyX2hvb2sJZWZ1bi9zZXRfZHJpdmVyX2hvb2sKK3N5bWJvbF92YXJpYWJsZQllZnVuL3N5bWJvbF92YXJpYWJsZQordG9fb2JqZWN0CWVmdW4vdG9fb2JqZWN0CitkZWVwX3ByZXNlbnQJZWZ1bi9kZWVwX3ByZXNlbnQKK2VmdW46Om1fZGVsZXRlCWVmdW4vZWZ1bjo6bV9kZWxldGUKK2VmdW46OmV4cGxvZGUJZWZ1bi9lZnVuOjpleHBsb2RlCithbGxfZW52aXJvbm1lbnQJZWZ1bi9hbGxfZW52aXJvbm1lbnQKK2R0aW1lCWVmdW4vZHRpbWUKK2ZpbmRfbGl2aW5ncwllZnVuL2ZpbmRfbGl2aW5ncworZmluZF9uZXRkZWFkCWVmdW4vZmluZF9uZXRkZWFkCitpc19jbG9uZQllZnVuL2lzX2Nsb25lCitsb3dlcmNoYXIJZWZ1bi9sb3dlcmNoYXIKK2xvd2Vyc3RyaW5nCWVmdW4vbG93ZXJzdHJpbmcKK21hdGNoX2xpdmluZwllZnVuL21hdGNoX2xpdmluZworbmV3X2V4cGxvZGUJZWZ1bi9uZXdfZXhwbG9kZQorb2xkX2V4cGxvZGUJZWZ1bi9vbGRfZXhwbG9kZQorcXVlcnlfd2l6X2dycAllZnVuL3F1ZXJ5X3dpel9ncnAKK3F1ZXJ5X3dpel9sZXZlbAllZnVuL3F1ZXJ5X3dpel9sZXZlbAorc2V0X29iamVjdF9oZWFydF9iZWF0CWVmdW4vc2V0X29iamVjdF9oZWFydF9iZWF0Cit1cGRhdGVfYWN0aW9ucwllZnVuL3VwZGF0ZV9hY3Rpb25zCit1cHBlcnN0cmluZwllZnVuL3VwcGVyc3RyaW5nCit1cHRpbWUJZWZ1bi91cHRpbWUKK3RpbWUyc3RyaW5nCWVmdW4vdGltZTJzdHJpbmcKK3JlZ3JlcGxhY2UJZWZ1bi9yZWdyZXBsYWNlCitkdW1wX25ldGRlYWQJZWZ1bi9kdW1wX25ldGRlYWQKK3N0ZAlzdGQKK3Jvb20uZG9rdQlzdGQvcm9vbS5kb2t1Cit3ZWFwb24Jc3RkL3dlYXBvbgordHJhbnNwb3J0CXN0ZC90cmFuc3BvcnQKK3Jvb20Jc3RkL3Jvb20KK3RoaW5nCXN0ZC90aGluZworYXJtb3VyCXN0ZC9hcm1vdXIKK3VuaXQJc3RkL3VuaXQKK3R1ZXIJc3RkL3R1ZXIKK3J1ZXN0dW5nCXN0ZC9ydWVzdHVuZworc2VxdWVuY2VyCXN0ZC9zZXF1ZW5jZXIKK3NjaGx1ZXNzZWwJc3RkL3NjaGx1ZXNzZWwKK2xpdmluZwlzdGQvbGl2aW5nCitkb29yCXN0ZC9kb29yCitjb3Jwc2UJc3RkL2NvcnBzZQorY29udGFpbmVyCXN0ZC9jb250YWluZXIKK3ZlcmVyYnVuZ3NiYWV1bWUJc3RkL3ZlcmVyYnVuZ3NiYWV1bWUKK3ZpcnR1YWxfY29tcGlsZXIJc3RkL3ZpcnR1YWxfY29tcGlsZXIKK01HCU1HCitnaWxkZW4tZG9rdQlNRy9naWxkZW4tZG9rdQord2FmZmVuX3dlcnRlCU1HL3dhZmZlbl93ZXJ0ZQoremF1YmVydHJhZW5rZQlNRy96YXViZXJ0cmFlbmtlCitvYmpfZ2VydWVzdAlNRy9vYmpfZ2VydWVzdAorbmV0eglNRy9uZXR6CitwdXRfYW5kX2dldAlNRy9wdXRfYW5kX2dldAorYXV0b2xvYWQJTUcvYXV0b2xvYWQKK0dPT0RfU1RZTEUJTUcvR09PRF9TVFlMRQorYmVuZW5udW5nCU1HL2JlbmVubnVuZworYmFuaXNoCU1HL2JhbmlzaAorYW5ncmlmZglNRy9hbmdyaWZmCittdXN0ZXJfcmF1bS5jCU1HL211c3Rlcl9yYXVtLmMKK3NraWxscy5kb2MJTUcvc2tpbGxzLmRvYworcHV0X2FuZF9nZXQuYwlNRy9wdXRfYW5kX2dldC5jCitxdWVzdHMuZG9jCU1HL3F1ZXN0cy5kb2MKK3RvZGVzc2VxdWVueglNRy90b2Rlc3NlcXVlbnoKK3NlbnNpdGl2ZQlNRy9zZW5zaXRpdmUKK2NvbmNlcHRzCWNvbmNlcHRzCitlcnEJY29uY2VwdHMvZXJxCitob29rcwljb25jZXB0cy9ob29rcworcHJvcGVydGllcy5uZXcJY29uY2VwdHMvcHJvcGVydGllcy5uZXcKK3Rlcm1pbmFscwljb25jZXB0cy90ZXJtaW5hbHMKK3VpZHMJY29uY2VwdHMvdWlkcworc2ltdWxfZWZ1bgljb25jZXB0cy9zaW11bF9lZnVuCitvb3AJY29uY2VwdHMvb29wCitwcm9wZXJ0aWVzCWNvbmNlcHRzL3Byb3BlcnRpZXMKK21lbW9yeQljb25jZXB0cy9tZW1vcnkKK25ld3MJY29uY2VwdHMvbmV3cworb2JqZWN0cwljb25jZXB0cy9vYmplY3RzCituYXRpdmUJY29uY2VwdHMvbmF0aXZlCittYWlsCWNvbmNlcHRzL21haWwKK2xwYwljb25jZXB0cy9scGMKK2ZpbGVzCWNvbmNlcHRzL2ZpbGVzCitjb25jZXB0cwljb25jZXB0cy9jb25jZXB0cworaW1wCWNvbmNlcHRzL2ltcAorbmVnb3RpYXRpb24JY29uY2VwdHMvbmVnb3RpYXRpb24KK2xmdW4JbGZ1bgorUXVlcnlEYW1hZ2UJbGZ1bi9RdWVyeURhbWFnZQorU2V0SGl0RnVuYwlsZnVuL1NldEhpdEZ1bmMKK0hpdEZ1bmMJbGZ1bi9IaXRGdW5jCitjcmVhdGVfZGVmYXVsdF9ucGMJbGZ1bi9jcmVhdGVfZGVmYXVsdF9ucGMKK1NldERlZmVuZEZ1bmMJbGZ1bi9TZXREZWZlbmRGdW5jCitEZWZlbmRGdW5jCWxmdW4vRGVmZW5kRnVuYworUXVlcnlEZWZlbmQJbGZ1bi9RdWVyeURlZmVuZAorRGVmZW5kCWxmdW4vRGVmZW5kCitBdHRhY2sJbGZ1bi9BdHRhY2sKK0FkZENtZAlsZnVuL0FkZENtZAoraGVhcnRfYmVhdAlsZnVuL2hlYXJ0X2JlYXQKK25hbWUJbGZ1bi9uYW1lCityZXNldAlsZnVuL3Jlc2V0CityZW1vdmUJbGZ1bi9yZW1vdmUKK211c3RlcglsZnVuL211c3RlcgorbG9uZwlsZnVuL2xvbmcKK3F1ZXJ5X3JlYWxfbmFtZQlsZnVuL3F1ZXJ5X3JlYWxfbmFtZQorcmVkdWNlX2hpdF9wb2ludAlsZnVuL3JlZHVjZV9oaXRfcG9pbnQKK21vdmUJbGZ1bi9tb3ZlCitpZAlsZnVuL2lkCittb2RpZnlfY29tbWFuZAlsZnVuL21vZGlmeV9jb21tYW5kCitsZnVuCWxmdW4vbGZ1bgorbG9nb24JbGZ1bi9sb2dvbgoraW5pdAlsZnVuL2luaXQKK2RvX2RhbWFnZQlsZnVuL2RvX2RhbWFnZQorZXhpdAlsZnVuL2V4aXQKK2hlYWxfc2VsZglsZnVuL2hlYWxfc2VsZgorZXh0cmFfbG9vawlsZnVuL2V4dHJhX2xvb2sKK2NsZWFuX3VwCWxmdW4vY2xlYW5fdXAKK2NyZWF0ZQlsZnVuL2NyZWF0ZQorRGlzY292ZXJEb29yCWxmdW4vRGlzY292ZXJEb29yCitjYXRjaF90ZWxsCWxmdW4vY2F0Y2hfdGVsbAorY2F0Y2hfbXNnCWxmdW4vY2F0Y2hfbXNnCitUZWxlcG9ydAlsZnVuL1RlbGVwb3J0CitfX0lOSVQJbGZ1bi9fX0lOSVQKK1NldFByb3AJbGZ1bi9TZXRQcm9wCitTaG93RG9vcnMJbGZ1bi9TaG93RG9vcnMKK0tpbGwJbGZ1bi9LaWxsCitOZXdEb29yCWxmdW4vTmV3RG9vcgorUXVlcnlQb3NzUHJvbm91bglsZnVuL1F1ZXJ5UG9zc1Byb25vdW4KK0NoZWNrUmVzaXN0YW5jZQlsZnVuL0NoZWNrUmVzaXN0YW5jZQorRG9vcklzS25vd24JbGZ1bi9Eb29ySXNLbm93bgorQWRkUHVyc3VlcglsZnVuL0FkZFB1cnN1ZXIKK0FkZFJvb21DbWQJbGZ1bi9BZGRSb29tQ21kCitBZGRJbmZvCWxmdW4vQWRkSW5mbworUmVtb3ZlUnVyc3VlcglsZnVuL1JlbW92ZVJ1cnN1ZXIKK1ByZXZlbnRGb2xsb3cJbGZ1bi9QcmV2ZW50Rm9sbG93CitNZXNzYWdlCWxmdW4vTWVzc2FnZQorSW5GaWdodAlsZnVuL0luRmlnaHQKK0FkZEFtb3VudAlsZnVuL0FkZEFtb3VudAorYWNjZXNzX3JpZ2h0cwlsZnVuL2FjY2Vzc19yaWdodHMKK3RyaWdnZXJfc2Vuc2l0aXZlX2F0dGFjawlsZnVuL3RyaWdnZXJfc2Vuc2l0aXZlX2F0dGFjaworUXVlcnlEb29yU3RhdHVzCWxmdW4vUXVlcnlEb29yU3RhdHVzCitRdWVyeUFsbERvb3JzCWxmdW4vUXVlcnlBbGxEb29ycworU2V0RG9vclN0YXR1cwlsZnVuL1NldERvb3JTdGF0dXMKK1F1ZXJ5RG9vcktleQlsZnVuL1F1ZXJ5RG9vcktleQorQWRkQWRqZWN0aXZlCWxmdW4vQWRkQWRqZWN0aXZlCitBZGRDbGFzcwlsZnVuL0FkZENsYXNzCitBZGREZXRhaWwJbGZ1bi9BZGREZXRhaWwKK0FkZERyaW5rCWxmdW4vQWRkRHJpbmsKK0FkZEV4aXQJbGZ1bi9BZGRFeGl0CitBZGRGb29kCWxmdW4vQWRkRm9vZAorQWRkRnVlbAlsZnVuL0FkZEZ1ZWwKK0FkZEZ1bglsZnVuL0FkZEZ1bgorQWRkSWQJbGZ1bi9BZGRJZAorQWRkSXRlbQlsZnVuL0FkZEl0ZW0KK0FkZE1zZwlsZnVuL0FkZE1zZworQWRkUGx1cmFsSWQJbGZ1bi9BZGRQbHVyYWxJZAorQWRkUmVhZERldGFpbAlsZnVuL0FkZFJlYWREZXRhaWwKK0FkZFJvb21NZXNzYWdlCWxmdW4vQWRkUm9vbU1lc3NhZ2UKK0FkZFJvdXRlCWxmdW4vQWRkUm91dGUKK0FkZFNpbmd1bGFySWQJbGZ1bi9BZGRTaW5ndWxhcklkCitBZGRTcGVjaWFsRGV0YWlsCWxmdW4vQWRkU3BlY2lhbERldGFpbAorRGVjbEFkaglsZnVuL0RlY2xBZGoKK0FkZFNwZWNpYWxFeGl0CWxmdW4vQWRkU3BlY2lhbEV4aXQKK0RvVW53ZWFyCWxmdW4vRG9VbndlYXIKK0RvVW53aWVsZAlsZnVuL0RvVW53aWVsZAorRG9XZWFyCWxmdW4vRG9XZWFyCitFbnRlcglsZnVuL0VudGVyCitHZXREZXRhaWwJbGZ1bi9HZXREZXRhaWwKK0dldEV4aXRzCWxmdW4vR2V0RXhpdHMKK0hhbHQJbGZ1bi9IYWx0CitJZGVudGlmeQlsZnVuL0lkZW50aWZ5CitJc1VuaXQJbGZ1bi9Jc1VuaXQKK0xlYXZlCWxmdW4vTGVhdmUKK01heUFkZFdlaWdodAlsZnVuL01heUFkZFdlaWdodAorUHJldmVudEluc2VydAlsZnVuL1ByZXZlbnRJbnNlcnQKK1F1ZXJ5CWxmdW4vUXVlcnkKK1F1ZXJ5QXJyaXZlZAlsZnVuL1F1ZXJ5QXJyaXZlZAorUXVlcnlBcnRpY2xlCWxmdW4vUXVlcnlBcnRpY2xlCitRdWVyeUJ1eUZhY3QJbGZ1bi9RdWVyeUJ1eUZhY3QKK1F1ZXJ5Q29pbnNQZXJVbml0cwlsZnVuL1F1ZXJ5Q29pbnNQZXJVbml0cworUXVlcnlEdQlsZnVuL1F1ZXJ5RHUKK1F1ZXJ5RmxhdwlsZnVuL1F1ZXJ5RmxhdworUXVlcnlHZW5kZXJTdHJpbmcJbGZ1bi9RdWVyeUdlbmRlclN0cmluZworUXVlcnlHcmFtc1BlclVuaXRzCWxmdW4vUXVlcnlHcmFtc1BlclVuaXRzCitRdWVyeU5hbWUJbGZ1bi9RdWVyeU5hbWUKK1F1ZXJ5UGFzc2VuZ2VycwlsZnVuL1F1ZXJ5UGFzc2VuZ2VycworUXVlcnlQb3NpdGlvbglsZnVuL1F1ZXJ5UG9zaXRpb24KK1F1ZXJ5UHJvbm91bglsZnVuL1F1ZXJ5UHJvbm91bgorUXVlcnlQcm9wCWxmdW4vUXVlcnlQcm9wCitRdWVyeVByb3BlcnRpZXMJbGZ1bi9RdWVyeVByb3BlcnRpZXMKK1JlbW92ZUFkamVjdGl2ZQlsZnVuL1JlbW92ZUFkamVjdGl2ZQorUmVtb3ZlSWQJbGZ1bi9SZW1vdmVJZAorUmVtb3ZlQ2xhc3MJbGZ1bi9SZW1vdmVDbGFzcworUmVtb3ZlQ21kCWxmdW4vUmVtb3ZlQ21kCitSZW1vdmVEZXRhaWwJbGZ1bi9SZW1vdmVEZXRhaWwKK1JlbW92ZUV4aXQJbGZ1bi9SZW1vdmVFeGl0CitSZW1vdmVGdW5jCWxmdW4vUmVtb3ZlRnVuYworUmVtb3ZlUmVhZERldGFpbAlsZnVuL1JlbW92ZVJlYWREZXRhaWwKK1JlbW92ZVJvdXRlCWxmdW4vUmVtb3ZlUm91dGUKK1JlbW92ZVNwZWNpYWxEZXRhaWwJbGZ1bi9SZW1vdmVTcGVjaWFsRGV0YWlsCitSZW1vdmVTcGVjaWFsRXhpdAlsZnVuL1JlbW92ZVNwZWNpYWxFeGl0CitTZXQJbGZ1bi9TZXQKK1NldEJ1eUZhY3QJbGZ1bi9TZXRCdXlGYWN0CitTZXRDb2luc1BlclVuaXRzCWxmdW4vU2V0Q29pbnNQZXJVbml0cworU2V0R3JhbXNQZXJVbml0cwlsZnVuL1NldEdyYW1zUGVyVW5pdHMKK1NldFByb3BlcnRpZXMJbGZ1bi9TZXRQcm9wZXJ0aWVzCitTZXRTdG9yYWdlUm9vbQlsZnVuL1NldFN0b3JhZ2VSb29tCitTaG93UHJvcExpc3QJbGZ1bi9TaG93UHJvcExpc3QKK1N0YXJ0CWxmdW4vU3RhcnQKK1N1Z2dlc3RBcnRpY2xlCWxmdW4vU3VnZ2VzdEFydGljbGUKK1Rha2VGbGF3CWxmdW4vVGFrZUZsYXcKK1Vud2llbGRGdW5jCWxmdW4vVW53aWVsZEZ1bmMKK1dlYXJGdW5jCWxmdW4vV2VhckZ1bmMKK1dpZWxkRnVuYwlsZnVuL1dpZWxkRnVuYworZG9fdW53ZWFyCWxmdW4vZG9fdW53ZWFyCitkb193ZWFyCWxmdW4vZG9fd2VhcgoraW50X2xvbmcJbGZ1bi9pbnRfbG9uZworaW50X3Nob3J0CWxmdW4vaW50X3Nob3J0Citpc19jbGFzc19tZW1iZXIJbGZ1bi9pc19jbGFzc19tZW1iZXIKK2xvY2F0ZV9vYmplY3RzCWxmdW4vbG9jYXRlX29iamVjdHMKK21ha2VfaW52bGlzdAlsZnVuL21ha2VfaW52bGlzdAorcGFyYW1vdmUJbGZ1bi9wYXJhbW92ZQorcHJlc2VudF9vYmplY3RzCWxmdW4vcHJlc2VudF9vYmplY3RzCitxdWVyeV93ZWlnaHRfY29udGVudHMJbGZ1bi9xdWVyeV93ZWlnaHRfY29udGVudHMKK3Nob3J0CWxmdW4vc2hvcnQKK3RyaWdnZXJfc2Vuc2l0aXZlX2ludglsZnVuL3RyaWdnZXJfc2Vuc2l0aXZlX2ludgord2llbGRfbWUJbGZ1bi93aWVsZF9tZQorQWRkU3BlbGwJbGZ1bi9BZGRTcGVsbAorUmVtb3ZlSXRlbQlsZnVuL1JlbW92ZUl0ZW0KK05vdGlmeUdpdmVRdWVzdAlsZnVuL05vdGlmeUdpdmVRdWVzdAorRGFtYWdlCWxmdW4vRGFtYWdlCitTZXRDaGF0cwlsZnVuL1NldENoYXRzCitTZXRBdHRhY2tDaGF0cwlsZnVuL1NldEF0dGFja0NoYXRzCitSZW1vdmVQbHVyYWxJZAlsZnVuL1JlbW92ZVBsdXJhbElkCitSZW1vdmVTaW5ndWxhcklkCWxmdW4vUmVtb3ZlU2luZ3VsYXJJZAorUXVlcnlNYXRlcmlhbAlsZnVuL1F1ZXJ5TWF0ZXJpYWwKK01hdGVyaWFsTGlzdAlsZnVuL01hdGVyaWFsTGlzdAorUXVlcnlNYXRlcmlhbEdyb3VwCWxmdW4vUXVlcnlNYXRlcmlhbEdyb3VwCittaXNjCW1pc2MKK2NhbGxlZF9ieV9wbGF5ZXIJbWlzYy9jYWxsZWRfYnlfcGxheWVyCitzaW11bF9lZnVucwltaXNjL3NpbXVsX2VmdW5zCitDTEVBTl9VUAltaXNjL0NMRUFOX1VQCittZW0JbWlzYy9tZW0KK2JlaXNwaWVsZQliZWlzcGllbGUKK2JzcHJ1ZXN0MS5jCWJlaXNwaWVsZS9ic3BydWVzdDEuYworYnNwbW9uMi5jCWJlaXNwaWVsZS9ic3Btb24yLmMKK3JhdW0xLmMJYmVpc3BpZWxlL3JhdW0xLmMKK3dvbGtlLmMJYmVpc3BpZWxlL3dvbGtlLmMKK2JzcHdhZmZlMS5jCWJlaXNwaWVsZS9ic3B3YWZmZTEuYworYnNwbW9uMS5jCWJlaXNwaWVsZS9ic3Btb24xLmMKK0xQQwlMUEMKK2FsaXN0cwlMUEMvYWxpc3RzCithcnJheXMJTFBDL2FycmF5cworYmxvY2sJTFBDL2Jsb2NrCitjbG9zdXJlcwlMUEMvY2xvc3VyZXMKK2Nsb3N1cmVzLWV4YW1wbGUJTFBDL2Nsb3N1cmVzLWV4YW1wbGUKK2RvLXdoaWxlCUxQQy9kby13aGlsZQorZWQwCUxQQy9lZDAKK2VkMQlMUEMvZWQxCitlZDIJTFBDL2VkMgorZWQzCUxQQy9lZDMKK2VkNAlMUEMvZWQ0CitlZDUJTFBDL2VkNQorZWQ2CUxQQy9lZDYKK2VmdW5zCUxQQy9lZnVucworZm9yCUxQQy9mb3IKK2Z1bmN0aW9ucwlMUEMvZnVuY3Rpb25zCitpbmhlcml0CUxQQy9pbmhlcml0Citpbmhlcml0YW5jZQlMUEMvaW5oZXJpdGFuY2UKK2luaXRpYWxpc2F0aW9uCUxQQy9pbml0aWFsaXNhdGlvbgorbGZ1bnMJTFBDL2xmdW5zCitscGMJTFBDL2xwYworbWFwcGluZ3MJTFBDL21hcHBpbmdzCitvcGVyYXRvcnMJTFBDL29wZXJhdG9ycworcHJhZ21hCUxQQy9wcmFnbWEKK3ByZXByb2Nlc3NvcglMUEMvcHJlcHJvY2Vzc29yCityZWZlcmVuY2VzCUxQQy9yZWZlcmVuY2VzCitzd2l0Y2gJTFBDL3N3aXRjaAordHlwZXMJTFBDL3R5cGVzCit3aGlsZQlMUEMvd2hpbGUKK21hc3RlcgltYXN0ZXIKK3ZhbGlkX3F1ZXJ5X3Nub29wCW1hc3Rlci92YWxpZF9xdWVyeV9zbm9vcAordmFsaWRfc25vb3AJbWFzdGVyL3ZhbGlkX3Nub29wCit2YWxpZF93cml0ZQltYXN0ZXIvdmFsaWRfd3JpdGUKK3ZhbGlkX3JlYWQJbWFzdGVyL3ZhbGlkX3JlYWQKK3ZhbGlkX3NldGV1aWQJbWFzdGVyL3ZhbGlkX3NldGV1aWQKK3Nsb3dfc2h1dF9kb3duCW1hc3Rlci9zbG93X3NodXRfZG93bgordmFsaWRfZXhlYwltYXN0ZXIvdmFsaWRfZXhlYworcmV0cmlldmVfZWRfc2V0dXAJbWFzdGVyL3JldHJpZXZlX2VkX3NldHVwCitzYXZlX2VkX3NldHVwCW1hc3Rlci9zYXZlX2VkX3NldHVwCitydW50aW1lX2Vycm9yCW1hc3Rlci9ydW50aW1lX2Vycm9yCityZW1vdmVfcGxheWVyCW1hc3Rlci9yZW1vdmVfcGxheWVyCitxdWVyeV9wbGF5ZXJfbGV2ZWwJbWFzdGVyL3F1ZXJ5X3BsYXllcl9sZXZlbAorcmVjZWl2ZV9pbXAJbWFzdGVyL3JlY2VpdmVfaW1wCitxdW90YV9kZW1vbgltYXN0ZXIvcXVvdGFfZGVtb24KK3ByZWxvYWQJbWFzdGVyL3ByZWxvYWQKK3ByaXZpbGVnZV92aW9sYXRpb24JbWFzdGVyL3ByaXZpbGVnZV92aW9sYXRpb24KK3JlYWN0aXZhdGVfZGVzdHJ1Y3RlZF9tYXN0ZXIJbWFzdGVyL3JlYWN0aXZhdGVfZGVzdHJ1Y3RlZF9tYXN0ZXIKK3F1ZXJ5X2FsbG93X3NoYWRvdwltYXN0ZXIvcXVlcnlfYWxsb3dfc2hhZG93CitoZWFydF9iZWF0X2Vycm9yCW1hc3Rlci9oZWFydF9iZWF0X2Vycm9yCitvYmplY3RfbmFtZQltYXN0ZXIvb2JqZWN0X25hbWUKK3ByZXBhcmVfZGVzdHJ1Y3QJbWFzdGVyL3ByZXBhcmVfZGVzdHJ1Y3QKK3BhcnNlX2NvbW1hbmRfYWxsX3dvcmQJbWFzdGVyL3BhcnNlX2NvbW1hbmRfYWxsX3dvcmQKK3BhcnNlX2NvbW1hbmRfcHJlcG9zX2xpc3QJbWFzdGVyL3BhcnNlX2NvbW1hbmRfcHJlcG9zX2xpc3QKK21ha2VfcGF0aF9hYnNvbHV0ZQltYXN0ZXIvbWFrZV9wYXRoX2Fic29sdXRlCittYXN0ZXIJbWFzdGVyL21hc3RlcgorZ2V0X3Jvb3RfdWlkCW1hc3Rlci9nZXRfcm9vdF91aWQKK2xvZ19lcnJvcgltYXN0ZXIvbG9nX2Vycm9yCitleHRlcm5hbF9tYXN0ZXJfcmVsb2FkCW1hc3Rlci9leHRlcm5hbF9tYXN0ZXJfcmVsb2FkCitpbmF1Z3VyYXRlX21hc3RlcgltYXN0ZXIvaW5hdWd1cmF0ZV9tYXN0ZXIKK2dldF93aXpfbmFtZQltYXN0ZXIvZ2V0X3dpel9uYW1lCitnZXRfc2ltdWxfZWZ1bgltYXN0ZXIvZ2V0X3NpbXVsX2VmdW4KK2dldF9iYl91aWQJbWFzdGVyL2dldF9iYl91aWQKK2ZsYWcJbWFzdGVyL2ZsYWcKK2VwaWxvZwltYXN0ZXIvZXBpbG9nCitnZXRfZWRfYnVmZmVyX3NhdmVfb2JqZWN0X25hbWUJbWFzdGVyL2dldF9lZF9idWZmZXJfc2F2ZV9vYmplY3RfbmFtZQorY29ubmVjdAltYXN0ZXIvY29ubmVjdAorZGFuZ2xpbmdfbGZ1bl9jbG9zdXJlCW1hc3Rlci9kYW5nbGluZ19sZnVuX2Nsb3N1cmUKK2RlZmluZV9pbmNsdWRlX2RpcnMJbWFzdGVyL2RlZmluZV9pbmNsdWRlX2RpcnMKK2Rpc2Nvbm5lY3QJbWFzdGVyL2Rpc2Nvbm5lY3QKK2NyZWF0b3JfZmlsZQltYXN0ZXIvY3JlYXRvcl9maWxlCitjb21waWxlX29iamVjdAltYXN0ZXIvY29tcGlsZV9vYmplY3QKK21hc3Rlci0zLjIJbWFzdGVyL21hc3Rlci0zLjIKK0dyZXAtUHJpdmlsZWdlCW1hc3Rlci9HcmVwLVByaXZpbGVnZQorR3JlcC1BcHBseS1NYXN0ZXIJbWFzdGVyL0dyZXAtQXBwbHktTWFzdGVyCitHcmVwLUNoZWNrVmFsaWRQYXRoLU1hc3RlcgltYXN0ZXIvR3JlcC1DaGVja1ZhbGlkUGF0aC1NYXN0ZXIKK2dldF9tYXN0ZXJfdWlkCW1hc3Rlci9nZXRfbWFzdGVyX3VpZAoraW5pdGlhbGlzYXRpb24JbWFzdGVyL2luaXRpYWxpc2F0aW9uCittYXN0ZXItMy4yLjEJbWFzdGVyL21hc3Rlci0zLjIuMQorbm90aWZ5X3NodXRkb3duCW1hc3Rlci9ub3RpZnlfc2h1dGRvd24KK3N0YWxlX2VycQltYXN0ZXIvc3RhbGVfZXJxCitlZAllZAorZWQ0CWVkL2VkNAorZWQxCWVkL2VkMQorZWQwCWVkL2VkMAorZWQzCWVkL2VkMworZWQyCWVkL2VkMgorZHJpdmVyCWRyaXZlcgorY29tbWFuZGxpbmUJZHJpdmVyL2NvbW1hbmRsaW5lCitkcml2ZXIJZHJpdmVyL2RyaXZlcgorZGVidWdtYWxsb2MJZHJpdmVyL2RlYnVnbWFsbG9jCitkdW1wYWxsb2JqCWRyaXZlci9kdW1wYWxsb2JqCittYWxsb2MJZHJpdmVyL21hbGxvYworb3BjZHVtcAlkcml2ZXIvb3BjZHVtcAorcHJlZGVmaW5lZAlkcml2ZXIvcHJlZGVmaW5lZAorc2hvd3NtYWxsbmV3bWFsbG9jZWQJZHJpdmVyL3Nob3dzbWFsbG5ld21hbGxvY2VkCitzdGF0dXMJZHJpdmVyL3N0YXR1cworS1VSUwlLVVJTCitMUEMtS1VSUzIJS1VSUy9MUEMtS1VSUzIKK2NoYXB0ZXI1CUtVUlMvTFBDLUtVUlMyL2NoYXB0ZXI1CitjaGFwdGVyNAlLVVJTL0xQQy1LVVJTMi9jaGFwdGVyNAorY2hhcHRlcjMJS1VSUy9MUEMtS1VSUzIvY2hhcHRlcjMKK2NoYXB0ZXI3CUtVUlMvTFBDLUtVUlMyL2NoYXB0ZXI3CitjaGFwdGVyNglLVVJTL0xQQy1LVVJTMi9jaGFwdGVyNgorY2hhcHRlcjIJS1VSUy9MUEMtS1VSUzIvY2hhcHRlcjIKK0NvcHlyaWdodAlLVVJTL0xQQy1LVVJTMi9Db3B5cmlnaHQKK2NoYXB0ZXIxCUtVUlMvTFBDLUtVUlMyL2NoYXB0ZXIxCitDb250ZW50cwlLVVJTL0xQQy1LVVJTMi9Db250ZW50cworTFBDLUtVUlMJS1VSUy9MUEMtS1VSUworSW50cm9kdWN0aW9uCUtVUlMvTFBDLUtVUlMvSW50cm9kdWN0aW9uCitjaGFwdGVyNAlLVVJTL0xQQy1LVVJTL2NoYXB0ZXI0CitjaGFwdGVyMglLVVJTL0xQQy1LVVJTL2NoYXB0ZXIyCitjaGFwdGVyOAlLVVJTL0xQQy1LVVJTL2NoYXB0ZXI4CitjaGFwdGVyNwlLVVJTL0xQQy1LVVJTL2NoYXB0ZXI3CitjaGFwdGVyNglLVVJTL0xQQy1LVVJTL2NoYXB0ZXI2CitjaGFwdGVyNQlLVVJTL0xQQy1LVVJTL2NoYXB0ZXI1CitjaGFwdGVyMwlLVVJTL0xQQy1LVVJTL2NoYXB0ZXIzCitjaGFwdGVyMQlLVVJTL0xQQy1LVVJTL2NoYXB0ZXIxCitDb250ZW50cwlLVVJTL0xQQy1LVVJTL0NvbnRlbnRzCitvYmpla3RlCUtVUlMvb2JqZWt0ZQorcmF1bTEJS1VSUy9yYXVtMQorZWlubGVpdHVuZwlLVVJTL2VpbmxlaXR1bmcKK1JVTEVTCUtVUlMvUlVMRVMKK1JVTEVTLldJWglLVVJTL1JVTEVTLldJWgorQ09NTUVOVFMJS1VSUy9DT01NRU5UUworR1VJREUub2xkCUtVUlMvR1VJREUub2xkCiszLjAJMy4wCittdWRsaWJfb3V0bGluZQkzLjAvbXVkbGliX291dGxpbmUKK3Byb2JsZW1zCTMuMC9wcm9ibGVtcworbGZ1bl9lZnVuLm1hbgkzLjAvbGZ1bl9lZnVuLm1hbgorbGZ1bl9lZnVuLm1lCTMuMC9sZnVuX2VmdW4ubWUKK2F1dG9fZGVzdHJ1Y3QJMy4wL2F1dG9fZGVzdHJ1Y3QKK0xQbXVkLmRvYy5tZQkzLjAvTFBtdWQuZG9jLm1lCitMUG11ZC5kb2MubWFuCTMuMC9MUG11ZC5kb2MubWFuCiszLjAuaW5mbwkzLjAvMy4wLmluZm8KK0BSRUFETUUJQFJFQURNRQorYWJvdXQtZWZ1bitsZnVuLWRvY3MJYWJvdXQtZWZ1bitsZnVuLWRvY3MKK2Nsb3N1cmVzCWNsb3N1cmVzCitmdW5jX3NwZWMJZnVuY19zcGVjCitoZWxwCWhlbHAKK2FiZW50ZXVlcgloZWxwL2FiZW50ZXVlcgorYWJlbnRldXJlcgloZWxwL2FiZW50ZXVyZXIKK2F0dHJpYnV0ZQloZWxwL2F0dHJpYnV0ZQorYmV3ZWd1bmcJaGVscC9iZXdlZ3VuZworYmllcnNjaHVldHRsZXIJaGVscC9iaWVyc2NodWV0dGxlcgorYnVlY2hlcgloZWxwL2J1ZWNoZXIKK2NoYW9zCWhlbHAvY2hhb3MKK2VkaXRvcgloZWxwL2VkaXRvcgorZXJ6bWFnaWVyCWhlbHAvZXJ6bWFnaWVyCitmYXEJaGVscC9mYXEKK2ZvcnNjaGVycHVua3RlCWhlbHAvZm9yc2NoZXJwdW5rdGUKK2dpbGRlbgloZWxwL2dpbGRlbgora2FlbXBmZXIJaGVscC9rYWVtcGZlcgora2FyYXRlCWhlbHAva2FyYXRlCitrbGVydXMJaGVscC9rbGVydXMKK2tvbnplcHQJaGVscC9rb256ZXB0CittYWdpZXIJaGVscC9tYWdpZXIKK3Bvc3QJaGVscC9wb3N0CityZWdpb25lbgloZWxwL3JlZ2lvbmVuCitzY3JpcHRlCWhlbHAvc2NyaXB0ZQorc2VoZXIJaGVscC9zZWhlcgorc3R1ZmVuCWhlbHAvc3R1ZmVuCitzdHVmZW5wdW5rdGUJaGVscC9zdHVmZW5wdW5rdGUKK3N5bnRheAloZWxwL3N5bnRheAoremF1YmVyZWkJaGVscC96YXViZXJlaQoremF1YmVyZXIJaGVscC96YXViZXJlcgoremF1YmVydHJhZW5rZQloZWxwL3phdWJlcnRyYWVua2UKK3ZlcmVpbgloZWxwL3ZlcmVpbgorcHJvcHMJcHJvcHMKK1BfQ09NQkFUQ01EUwlwcm9wcy9QX0NPTUJBVENNRFMKK1BfSU5WSVMJcHJvcHMvUF9JTlZJUworUF9DT01CQVRDTURTLm9sZAlwcm9wcy9QX0NPTUJBVENNRFMub2xkCitQX0hJREVfRVhJVFMJcHJvcHMvUF9ISURFX0VYSVRTCitQX0lOVklTLm9sZAlwcm9wcy9QX0lOVklTLm9sZAorUF9ISURFX0VYSVRTLm9sZAlwcm9wcy9QX0hJREVfRVhJVFMub2xkCitQX0FDCXByb3BzL1BfQUMKK1BfV09STglwcm9wcy9QX1dPUk4KK1BfQVJNT1VSX1RZUEUJcHJvcHMvUF9BUk1PVVJfVFlQRQorUF9ERUZFTkRfRlVOQwlwcm9wcy9QX0RFRkVORF9GVU5DCitQX1dFQVJfRlVOQwlwcm9wcy9QX1dFQVJfRlVOQworUF9SRU1PVkVfRlVOQwlwcm9wcy9QX1JFTU9WRV9GVU5DCitQX05PX0dMT0JBTF9BVFRBQ0sJcHJvcHMvUF9OT19HTE9CQUxfQVRUQUNLCitQX0RBTUFHRUQJcHJvcHMvUF9EQU1BR0VECitQX0VGRkVDVElWRV9XQwlwcm9wcy9QX0VGRkVDVElWRV9XQworUF9FRkZFQ1RJVkVfQUMJcHJvcHMvUF9FRkZFQ1RJVkVfQUMKK1BfTUFYX1dFSUdIVAlwcm9wcy9QX01BWF9XRUlHSFQKK1BfQ09OVEVOVFMJcHJvcHMvUF9DT05URU5UUworUF9DTlRfU1RBVFVTCXByb3BzL1BfQ05UX1NUQVRVUworUF9UUkFOU1BBUkVOVAlwcm9wcy9QX1RSQU5TUEFSRU5UCitQX0RPT1JfSU5GT1MJcHJvcHMvUF9ET09SX0lORk9TCitQX1dBVEVSCXByb3BzL1BfV0FURVIKK1BfRklTSAlwcm9wcy9QX0ZJU0gKK1BfTElRVUlECXByb3BzL1BfTElRVUlECitQX0xPTkdfRU1QVFkJcHJvcHMvUF9MT05HX0VNUFRZCitQX0xPTkdfRlVMTAlwcm9wcy9QX0xPTkdfRlVMTAorUF9HVUFSRAlwcm9wcy9QX0dVQVJECitQX0VWQUxfT0ZGU0VUUwlwcm9wcy9QX0VWQUxfT0ZGU0VUUworUF9FVkFMX0ZBQ1RPUlMJcHJvcHMvUF9FVkFMX0ZBQ1RPUlMKK1BfSU5QQ19MQVNUX1BMQVlFUl9DT05UQUNUCXByb3BzL1BfSU5QQ19MQVNUX1BMQVlFUl9DT05UQUNUCitQX0lOUENfTEFTVF9FTlZJUk9OTUVOVAlwcm9wcy9QX0lOUENfTEFTVF9FTlZJUk9OTUVOVAorUF9JTlBDX1dBTEtfTU9ERQlwcm9wcy9QX0lOUENfV0FMS19NT0RFCitQX0lOUENfV0FMS19ERUxBWVMJcHJvcHMvUF9JTlBDX1dBTEtfREVMQVlTCitQX0lOUENfV0FMS19GTEFHUwlwcm9wcy9QX0lOUENfV0FMS19GTEFHUworUF9JTlBDX1dBTEtfQVJFQQlwcm9wcy9QX0lOUENfV0FMS19BUkVBCitQX0lOUENfV0FMS19ST1VURQlwcm9wcy9QX0lOUENfV0FMS19ST1VURQorUF9JTlBDX0hPTUUJcHJvcHMvUF9JTlBDX0hPTUUKK1BfQVJUSUNMRQlwcm9wcy9QX0FSVElDTEUKK1BfR0VOREVSCXByb3BzL1BfR0VOREVSCitQX0FUVFJJQlVURVMJcHJvcHMvUF9BVFRSSUJVVEVTCitQX0FUVFJJQlVURVNfT0ZGU0VUUwlwcm9wcy9QX0FUVFJJQlVURVNfT0ZGU0VUUworUF9YX0FUVFJfTU9ECXByb3BzL1BfWF9BVFRSX01PRAorUF9BVFRSSUJVVEVTX01PRElGSUVSCXByb3BzL1BfQVRUUklCVVRFU19NT0RJRklFUgorUF9BQklMSVRJRVMJcHJvcHMvUF9BQklMSVRJRVMKK1BfUkVTSVNUQU5DRQlwcm9wcy9QX1JFU0lTVEFOQ0UKK1BfUkVTSVNUQU5DRV9TVFJFTkdIVFMJcHJvcHMvUF9SRVNJU1RBTkNFX1NUUkVOR0hUUworUF9WVUxORVJBQklMSVRZCXByb3BzL1BfVlVMTkVSQUJJTElUWQorUF9UT1RBTF9BQwlwcm9wcy9QX1RPVEFMX0FDCitQX0hBTkRTCXByb3BzL1BfSEFORFMKK1BfTUFYX0hBTkRTCXByb3BzL1BfTUFYX0hBTkRTCitQX1VTRURfSEFORFMJcHJvcHMvUF9VU0VEX0hBTkRTCitQX0FUVEFDS19CVVNZCXByb3BzL1BfQVRUQUNLX0JVU1kKK1BfUFJFRkVSRURfRU5FTVkJcHJvcHMvUF9QUkVGRVJFRF9FTkVNWQorUF9SRVNJU1RBTkNFX1NUUkVOR1RIUwlwcm9wcy9QX1JFU0lTVEFOQ0VfU1RSRU5HVEhTCitQX0FHRQlwcm9wcy9QX0FHRQorUF9BTElHTglwcm9wcy9QX0FMSUdOCitQX0RFQURTCXByb3BzL1BfREVBRFMKK1BfR0hPU1QJcHJvcHMvUF9HSE9TVAorUF9GUk9HCXByb3BzL1BfRlJPRworUF9GT09ECXByb3BzL1BfRk9PRAorUF9NQVhfRk9PRAlwcm9wcy9QX01BWF9GT09ECitQX0RSSU5LCXByb3BzL1BfRFJJTksKK1BfTUFYX0RSSU5LCXByb3BzL1BfTUFYX0RSSU5LCitQX0FMQ09IT0wJcHJvcHMvUF9BTENPSE9MCitQX01BWF9BTENPSE9MCXByb3BzL1BfTUFYX0FMQ09IT0wKK1BfSFAJcHJvcHMvUF9IUAorUF9NQVhfSFAJcHJvcHMvUF9NQVhfSFAKK1BfU1AJcHJvcHMvUF9TUAorUF9NQVhfU1AJcHJvcHMvUF9NQVhfU1AKK1BfWFAJcHJvcHMvUF9YUAorUF9WQUxJRF9HVUlMRFMJcHJvcHMvUF9WQUxJRF9HVUlMRFMKK1BfR1VJTERfU0tJTExTCXByb3BzL1BfR1VJTERfU0tJTExTCitQX0dVSUxEX1JFU1RSSUNUSU9OUwlwcm9wcy9QX0dVSUxEX1JFU1RSSUNUSU9OUworUF9HVUlMRF9ERUZBVUxUX1NQRUxMQk9PSwlwcm9wcy9QX0dVSUxEX0RFRkFVTFRfU1BFTExCT09LCitQX0dVSUxEX01BTEVfVElUTEVTCXByb3BzL1BfR1VJTERfTUFMRV9USVRMRVMKK1BfR1VJTERfRkVNQUxFX1RJVExFUwlwcm9wcy9QX0dVSUxEX0ZFTUFMRV9USVRMRVMKK1BfR1VJTERfTEVWRUxTCXByb3BzL1BfR1VJTERfTEVWRUxTCitQX1NCX1NQRUxMUwlwcm9wcy9QX1NCX1NQRUxMUworUF9HTE9CQUxfU0tJTExQUk9QUwlwcm9wcy9QX0dMT0JBTF9TS0lMTFBST1BTCitQX0dVSUxEX0xFVkVMCXByb3BzL1BfR1VJTERfTEVWRUwKK1BfR1VJTERfVElUTEUJcHJvcHMvUF9HVUlMRF9USVRMRQorUF9HVUlMRF9SQVRJTkcJcHJvcHMvUF9HVUlMRF9SQVRJTkcKK1BfTkVXU0tJTExTCXByb3BzL1BfTkVXU0tJTExTCitQX05FWFRfU1BFTExfVElNRQlwcm9wcy9QX05FWFRfU1BFTExfVElNRQorUF9UTVBfQVRUQUNLX0hPT0sJcHJvcHMvUF9UTVBfQVRUQUNLX0hPT0sKK1BfVE1QX0FUVEFDS19NT0QJcHJvcHMvUF9UTVBfQVRUQUNLX01PRAorUF9MRVAJcHJvcHMvUF9MRVAKK1BfVE1QX0RFRkVORF9IT09LCXByb3BzL1BfVE1QX0RFRkVORF9IT09LCitQX1RNUF9ESUVfSE9PSwlwcm9wcy9QX1RNUF9ESUVfSE9PSworUF9ERUZFTkRFUlMJcHJvcHMvUF9ERUZFTkRFUlMKK1BfU0tJTExfQVRUUklCVVRFUwlwcm9wcy9QX1NLSUxMX0FUVFJJQlVURVMKK1BfSUdOT1JFCXByb3BzL1BfSUdOT1JFCitQX0xBU1RfQ09NTUFORF9FTlYJcHJvcHMvUF9MQVNUX0NPTU1BTkRfRU5WCitQX0hJU1RNSU4JcHJvcHMvUF9ISVNUTUlOCitQX1NIT1dfQUxJQVNfUFJPQ0VTU0lORwlwcm9wcy9QX1NIT1dfQUxJQVNfUFJPQ0VTU0lORworUF9ERUZBVUxUX05PVElGWV9GQUlMCXByb3BzL1BfREVGQVVMVF9OT1RJRllfRkFJTAorUF9ORVRERUFEX0lORk8JcHJvcHMvUF9ORVRERUFEX0lORk8KK1BfSVBfTkFNRQlwcm9wcy9QX0lQX05BTUUKK1BfQVVUSF9JTkZPCXByb3BzL1BfQVVUSF9JTkZPCitQX0xBU1RfS0lMTEVSCXByb3BzL1BfTEFTVF9LSUxMRVIKK1BfQUNUVUFMX05PVElGWV9GQUlMCXByb3BzL1BfQUNUVUFMX05PVElGWV9GQUlMCitQX0xFUF9NQUxVUwlwcm9wcy9QX0xFUF9NQUxVUworUF9MQVNUX0xPR0lOCXByb3BzL1BfTEFTVF9MT0dJTgorUF9MQVNUX0xPR09VVAlwcm9wcy9QX0xBU1RfTE9HT1VUCitQX1NIT1dfRVhJVFMJcHJvcHMvUF9TSE9XX0VYSVRTCitQX1dBTlRTX1RPX0xFQVJOCXByb3BzL1BfV0FOVFNfVE9fTEVBUk4KK1BfQVVUT0xPQURPQkoJcHJvcHMvUF9BVVRPTE9BRE9CSgorUF9UVFkJcHJvcHMvUF9UVFkKK1BfQVVUT0xPQUQJcHJvcHMvUF9BVVRPTE9BRAorUF9NQUlMQUREUglwcm9wcy9QX01BSUxBRERSCitQX0hPTUVQQUdFCXByb3BzL1BfSE9NRVBBR0UKK1BfRk9MTE9XX1NJTEVOVAlwcm9wcy9QX0ZPTExPV19TSUxFTlQKK1BfU0VDT05ECXByb3BzL1BfU0VDT05ECitQX1RFU1RQTEFZRVIJcHJvcHMvUF9URVNUUExBWUVSCitQX1NUQVJUX0hPTUUJcHJvcHMvUF9TVEFSVF9IT01FCitQX0NNU0cJcHJvcHMvUF9DTVNHCitQX0RNU0cJcHJvcHMvUF9ETVNHCitQX0NMT05FX01TRwlwcm9wcy9QX0NMT05FX01TRworUF9ERVNUUlVDVF9NU0cJcHJvcHMvUF9ERVNUUlVDVF9NU0cKK1BfQ0FSUklFRF9WQUxVRQlwcm9wcy9QX0NBUlJJRURfVkFMVUUKK1BfUFJPTVBUCXByb3BzL1BfUFJPTVBUCitQX1NDUkVFTlNJWkUJcHJvcHMvUF9TQ1JFRU5TSVpFCitQX0ZMQUdTCXByb3BzL1BfRkxBR1MKK1BfQ0FOX0ZMQUdTCXByb3BzL1BfQ0FOX0ZMQUdTCitQX1JFQURfTkVXUwlwcm9wcy9QX1JFQURfTkVXUworUF9ORUVERURfUVAJcHJvcHMvUF9ORUVERURfUVAKK1BfSU5URVJNVUQJcHJvcHMvUF9JTlRFUk1VRAorUF9CVUZGRVIJcHJvcHMvUF9CVUZGRVIKK1BfREVBRglwcm9wcy9QX0RFQUYKK1BfUEVSTV9TVFJJTkcJcHJvcHMvUF9QRVJNX1NUUklORworUF9FWFRSQV9MT09LCXByb3BzL1BfRVhUUkFfTE9PSworUF9QUkVTQVkJcHJvcHMvUF9QUkVTQVkKK1BfVElUTEUJcHJvcHMvUF9USVRMRQorUF9BVkVSQUdFX1NJWkUJcHJvcHMvUF9BVkVSQUdFX1NJWkUKK1BfUkVGRVJFTkNFX09CSkVDVAlwcm9wcy9QX1JFRkVSRU5DRV9PQkpFQ1QKK1BfTVNHSU4JcHJvcHMvUF9NU0dJTgorUF9NU0dPVVQJcHJvcHMvUF9NU0dPVVQKK1BfTU1TR0lOCXByb3BzL1BfTU1TR0lOCitQX01NU0dPVVQJcHJvcHMvUF9NTVNHT1VUCitQX1BPVElPTlJPT01TCXByb3BzL1BfUE9USU9OUk9PTVMKK1BfVFJBTktfRklOREVOCXByb3BzL1BfVFJBTktfRklOREVOCitQX1ZJU0lURURfUE9USU9OUk9PTVMJcHJvcHMvUF9WSVNJVEVEX1BPVElPTlJPT01TCitQX0JPTlVTX1BPVElPTlMJcHJvcHMvUF9CT05VU19QT1RJT05TCitQX1FVRVNUUwlwcm9wcy9QX1FVRVNUUworUF9RUAlwcm9wcy9QX1FQCitQX1NLSUxMUwlwcm9wcy9QX1NLSUxMUworUF9CTElORAlwcm9wcy9QX0JMSU5ECitQX0JSSUVGCXByb3BzL1BfQlJJRUYKK1BfT1JJR19OQU1FCXByb3BzL1BfT1JJR19OQU1FCitQX0tJTExFUglwcm9wcy9QX0tJTExFUgorUF9NVVJERVJfTVNHCXByb3BzL1BfTVVSREVSX01TRworUF9LSUxMX01TRwlwcm9wcy9QX0tJTExfTVNHCitQX0tJTExfTkFNRQlwcm9wcy9QX0tJTExfTkFNRQorUF9DT1JQU0UJcHJvcHMvUF9DT1JQU0UKK1BfRU5FTVlfREVBVEhfU0VRVUVOQ0UJcHJvcHMvUF9FTkVNWV9ERUFUSF9TRVFVRU5DRQorUF9MSUdIVAlwcm9wcy9QX0xJR0hUCitQX0NMT05FUglwcm9wcy9QX0NMT05FUgorUF9UT1RBTF9MSUdIVAlwcm9wcy9QX1RPVEFMX0xJR0hUCitQX0xBU1RfQ09OVEVOVF9DSEFOR0UJcHJvcHMvUF9MQVNUX0NPTlRFTlRfQ0hBTkdFCitQX1ZBTFVFCXByb3BzL1BfVkFMVUUKK1BfRk9SQ0VfREVNT05TVAlwcm9wcy9QX0ZPUkNFX0RFTU9OU1QKK1BfSU5GTwlwcm9wcy9QX0lORk8KK1BfUkVBRF9NU0cJcHJvcHMvUF9SRUFEX01TRworUF9GV19BTFdBWVNfUkVBREFCTEUJcHJvcHMvUF9GV19BTFdBWVNfUkVBREFCTEUKK1BfTk9CVVkJcHJvcHMvUF9OT0JVWQorUF9ORVZFUkRST1AJcHJvcHMvUF9ORVZFUkRST1AKK1BfTUFHSUMJcHJvcHMvUF9NQUdJQworUF9XRUlHSFRfUEVSQ0VOVAlwcm9wcy9QX1dFSUdIVF9QRVJDRU5UCitQX0RFVEFJTFMJcHJvcHMvUF9ERVRBSUxTCitQX1NQRUNJQUxfREVUQUlMUwlwcm9wcy9QX1NQRUNJQUxfREVUQUlMUworUF9SRUFEX0RFVEFJTFMJcHJvcHMvUF9SRUFEX0RFVEFJTFMKK1BfRVhJVFMJcHJvcHMvUF9FWElUUworUF9TUEVDSUFMX0VYSVRTCXByb3BzL1BfU1BFQ0lBTF9FWElUUworUF9ET09SUwlwcm9wcy9QX0RPT1JTCitQX0RPT1JTMglwcm9wcy9QX0RPT1JTMgorUF9JVEVNUwlwcm9wcy9QX0lURU1TCitQX05PX1RQT1JUCXByb3BzL1BfTk9fVFBPUlQKK1BfVFBPUlRfQ09TVF9JTglwcm9wcy9QX1RQT1JUX0NPU1RfSU4KK1BfVFBPUlRfQ09TVF9PVVQJcHJvcHMvUF9UUE9SVF9DT1NUX09VVAorUF9JTkRPT1JTCXByb3BzL1BfSU5ET09SUworUF9OT01BR0lDCXByb3BzL1BfTk9NQUdJQworUF9PUkFLRUwJcHJvcHMvUF9PUkFLRUwKK1BfUkFDRQlwcm9wcy9QX1JBQ0UKK1BfVE9UQUxfV0MJcHJvcHMvUF9UT1RBTF9XQworUF9aQVBfTVNHCXByb3BzL1BfWkFQX01TRworUF9BV0FZCXByb3BzL1BfQVdBWQorUF9XRUFQT04JcHJvcHMvUF9XRUFQT04KK1BfQVJNT1VSUwlwcm9wcy9QX0FSTU9VUlMKK1BfTlBDCXByb3BzL1BfTlBDCitQX1dJTVBZCXByb3BzL1BfV0lNUFkKK1BfV0lNUFlfRElSRUNUSU9OCXByb3BzL1BfV0lNUFlfRElSRUNUSU9OCitQX0hFQUwJcHJvcHMvUF9IRUFMCitQX0hCCXByb3BzL1BfSEIKK1BfUE9JU09OCXByb3BzL1BfUE9JU09OCitQX01BWF9QT0lTT04JcHJvcHMvUF9NQVhfUE9JU09OCitQX0RJU0FCTEVfQVRUQUNLCXByb3BzL1BfRElTQUJMRV9BVFRBQ0sKK1BfRElFX01TRwlwcm9wcy9QX0RJRV9NU0cKK1BfS0lMTFMJcHJvcHMvUF9LSUxMUworUF9DQUxMRURfRlJPTV9JUAlwcm9wcy9QX0NBTExFRF9GUk9NX0lQCitQX0RFU0NSSVBUSU9OCXByb3BzL1BfREVTQ1JJUFRJT04KK1BfR1VJTEQJcHJvcHMvUF9HVUlMRAorUF9MRVZFTAlwcm9wcy9QX0xFVkVMCitQX0NBUF9OQU1FCXByb3BzL1BfQ0FQX05BTUUKK1BfRUFSTVVGRlMJcHJvcHMvUF9FQVJNVUZGUworUF9NQVJSSUVECXByb3BzL1BfTUFSUklFRAorUF9BTU9VTlQJcHJvcHMvUF9BTU9VTlQKK1BfVkFMVUVfUEVSX1VOSVQJcHJvcHMvUF9WQUxVRV9QRVJfVU5JVAorUF9XRUlHSFRfUEVSX1VOSVQJcHJvcHMvUF9XRUlHSFRfUEVSX1VOSVQKK1BfRlVFTAlwcm9wcy9QX0ZVRUwKK1BfTElHSFRERVNDCXByb3BzL1BfTElHSFRERVNDCitQX0RPX0RFU1RSVUNUCXByb3BzL1BfRE9fREVTVFJVQ1QKK1BfTElHSFRFRAlwcm9wcy9QX0xJR0hURUQKK1BfQ0hBVFMJcHJvcHMvUF9DSEFUUworUF9DSEFUX0NIQU5DRQlwcm9wcy9QX0NIQVRfQ0hBTkNFCitQX0FDSEFUUwlwcm9wcy9QX0FDSEFUUworUF9BQ0hBVF9DSEFOQ0UJcHJvcHMvUF9BQ0hBVF9DSEFOQ0UKK1BfQk9EWQlwcm9wcy9QX0JPRFkKK1BfQUdHUkVTU0lWRQlwcm9wcy9QX0FHR1JFU1NJVkUKK1BfTk9DT1JQU0UJcHJvcHMvUF9OT0NPUlBTRQorUF9SRUpFQ1QJcHJvcHMvUF9SRUpFQ1QKK1BfUkFDRV9ERVNDUklQVElPTglwcm9wcy9QX1JBQ0VfREVTQ1JJUFRJT04KK1BfUkFDRVNUUklORwlwcm9wcy9QX1JBQ0VTVFJJTkcKK1BfQ09OVEFJTkVSCXByb3BzL1BfQ09OVEFJTkVSCitQX0ZXX1VOREVSU1RBTkQJcHJvcHMvUF9GV19VTkRFUlNUQU5ECitQX1RSQVkJcHJvcHMvUF9UUkFZCitQX0RFRkFVTFRfSU5GTwlwcm9wcy9QX0RFRkFVTFRfSU5GTworUF9MT0dfSU5GTwlwcm9wcy9QX0xPR19JTkZPCitQX1BVUlNVRVJTCXByb3BzL1BfUFVSU1VFUlMKK1BfSFBfSE9PS1MJcHJvcHMvUF9IUF9IT09LUworUF9HSVZFTl9BTU9VTlQJcHJvcHMvUF9HSVZFTl9BTU9VTlQKK1BfR0lWRU5fT0JKRUNUCXByb3BzL1BfR0lWRU5fT0JKRUNUCitQX0NVUlNFRAlwcm9wcy9QX0NVUlNFRAorUF9LRUVQX09OX1NFTEwJcHJvcHMvUF9LRUVQX09OX1NFTEwKK1BfU1BFTExTCXByb3BzL1BfU1BFTExTCitQX1NQRUxMUkFURQlwcm9wcy9QX1NQRUxMUkFURQorUF9JTkZPUk1NRQlwcm9wcy9QX0lORk9STU1FCitQX1dBSVRGT1IJcHJvcHMvUF9XQUlURk9SCitQX0xPQ0FMQ01EUwlwcm9wcy9QX0xPQ0FMQ01EUworUF9DTE9DS01TRwlwcm9wcy9QX0NMT0NLTVNHCitQX1BBUkEJcHJvcHMvUF9QQVJBCitQX1NJWkUJcHJvcHMvUF9TSVpFCitQX0lOVF9TSE9SVAlwcm9wcy9QX0lOVF9TSE9SVAorUF9JTlRfTE9ORwlwcm9wcy9QX0lOVF9MT05HCitQX1JPT01fTVNHCXByb3BzL1BfUk9PTV9NU0cKK1BfRlVOQ19NU0cJcHJvcHMvUF9GVU5DX01TRworUF9NU0dfUFJPQglwcm9wcy9QX01TR19QUk9CCitQX0hBVVNfRVJMQVVCVAlwcm9wcy9QX0hBVVNfRVJMQVVCVAorUF9TRU5TSVRJVkVfSU5WRU5UT1JZCXByb3BzL1BfU0VOU0lUSVZFX0lOVkVOVE9SWQorUF9TRU5TSVRJVkVfSU5WRU5UT1JZX1RSSUdHRVIJcHJvcHMvUF9TRU5TSVRJVkVfSU5WRU5UT1JZX1RSSUdHRVIKK1BfU0VOU0lUSVZFX0FUVEFDSwlwcm9wcy9QX1NFTlNJVElWRV9BVFRBQ0sKK1BfQ1VSUkVOVERJUglwcm9wcy9QX0NVUlJFTlRESVIKK1BfU0hPUlRfQ1dECXByb3BzL1BfU0hPUlRfQ1dECitQX1NOT09QRkxBR1MJcHJvcHMvUF9TTk9PUEZMQUdTCitQX0NPTU1BTkRTCXByb3BzL1BfQ09NTUFORFMKK1BfTkFNRQlwcm9wcy9QX05BTUUKK1BfTkFNRV9BREoJcHJvcHMvUF9OQU1FX0FESgorUF9TSE9SVAlwcm9wcy9QX1NIT1JUCitQX0xPTkcJcHJvcHMvUF9MT05HCitQX0lEUwlwcm9wcy9QX0lEUworUF9BREpFQ1RJVkVTCXByb3BzL1BfQURKRUNUSVZFUworUF9TSE9XX0lOVglwcm9wcy9QX1NIT1dfSU5WCitQX0NMQVNTCXByb3BzL1BfQ0xBU1MKK1BfTk9EUk9QCXByb3BzL1BfTk9EUk9QCitQX05PR0VUCXByb3BzL1BfTk9HRVQKK1BfU0VOU0lUSVZFCXByb3BzL1BfU0VOU0lUSVZFCitQX1VJRAlwcm9wcy9QX1VJRAorUF9FVUlECXByb3BzL1BfRVVJRAorUF9XRUlHSFQJcHJvcHMvUF9XRUlHSFQKK1BfVE9UQUxfV0VJR0hUCXByb3BzL1BfVE9UQUxfV0VJR0hUCitQX0VOVEVSTVNHCXByb3BzL1BfRU5URVJNU0cKK1BfTEVBVkVNU0cJcHJvcHMvUF9MRUFWRU1TRworUF9MRUFWRUZBSUwJcHJvcHMvUF9MRUFWRUZBSUwKK1BfRU5URVJGQUlMCXByb3BzL1BfRU5URVJGQUlMCitQX0FSUklWRU1TRwlwcm9wcy9QX0FSUklWRU1TRworUF9ERVBBUlRNU0cJcHJvcHMvUF9ERVBBUlRNU0cKK1BfRU5URVJDTURTCXByb3BzL1BfRU5URVJDTURTCitQX0xFQVZFQ01EUwlwcm9wcy9QX0xFQVZFQ01EUworUF9NQVhfUEFTU0VOR0VSUwlwcm9wcy9QX01BWF9QQVNTRU5HRVJTCitQX1NURF9PQkpFQ1QJcHJvcHMvUF9TVERfT0JKRUNUCitQX0NPTVBJTEVSX1BBVEgJcHJvcHMvUF9DT01QSUxFUl9QQVRICitQX05SX0hBTkRTCXByb3BzL1BfTlJfSEFORFMKK1BfV0MJcHJvcHMvUF9XQworUF9XRUFQT05fVFlQRQlwcm9wcy9QX1dFQVBPTl9UWVBFCitQX0RBTV9UWVBFCXByb3BzL1BfREFNX1RZUEUKK1BfV0lFTERFRAlwcm9wcy9QX1dJRUxERUQKK1BfSElUX0ZVTkMJcHJvcHMvUF9ISVRfRlVOQworUF9XSUVMRF9GVU5DCXByb3BzL1BfV0lFTERfRlVOQworUF9VTldJRUxEX0ZVTkMJcHJvcHMvUF9VTldJRUxEX0ZVTkMKK1BfSElERV9FWElUUy5yZXMJcHJvcHMvUF9ISURFX0VYSVRTLnJlcworUF9GUklFTkQJcHJvcHMvUF9GUklFTkQKK1BfREFNX0RFU0MJcHJvcHMvUF9EQU1fREVTQworUF9RVUFMSVRZCXByb3BzL1BfUVVBTElUWQorUF9BTENPSE9MX0RFTEFZCXByb3BzL1BfQUxDT0hPTF9ERUxBWQorUF9EUklOS19ERUxBWQlwcm9wcy9QX0RSSU5LX0RFTEFZCitQX0ZPT0RfREVMQVkJcHJvcHMvUF9GT09EX0RFTEFZCitQX0hQX0RFTEFZCXByb3BzL1BfSFBfREVMQVkKK1BfU1BfREVMQVkJcHJvcHMvUF9TUF9ERUxBWQorUF9QT0lTT05fREVMQVkJcHJvcHMvUF9QT0lTT05fREVMQVkKK1BfTUFURVJJQUwJcHJvcHMvUF9NQVRFUklBTAorb2JqCW9iagorZG9vcm1hc3RlcglvYmovZG9vcm1hc3RlcgorUkVHRUxOCVJFR0VMTgorUkVBRE1FCVJFR0VMTi9SRUFETUUKK3p3ZWl0aWVzCVJFR0VMTi96d2VpdGllcworU2NyaXB0ZQlSRUdFTE4vU2NyaXB0ZQorYmFsYW5jZQlSRUdFTE4vYmFsYW5jZQorbnBjcwlSRUdFTE4vbnBjcword2FmZmVuCVJFR0VMTi93YWZmZW4KK3J1ZXN0dW5nZW4JUkVHRUxOL3J1ZXN0dW5nZW4KK3Byb3BlcnRpZXMuaAlwcm9wZXJ0aWVzLmgKK2cuYWJlbnRldXJlcglnLmFiZW50ZXVyZXIKK2F1c3dlaWNoZW4JZy5hYmVudGV1cmVyL2F1c3dlaWNoZW4KK2ZldWVyYmFsbAlnLmFiZW50ZXVyZXIvZmV1ZXJiYWxsCitpZGVudGlmaXppZXJlCWcuYWJlbnRldXJlci9pZGVudGlmaXppZXJlCitrYW1wZnNjaHJlaQlnLmFiZW50ZXVyZXIva2FtcGZzY2hyZWkKK2xpY2h0CWcuYWJlbnRldXJlci9saWNodAorcGZlaWwJZy5hYmVudGV1cmVyL3BmZWlsCitzY2hhZXR6CWcuYWJlbnRldXJlci9zY2hhZXR6CitzY2huZWxsCWcuYWJlbnRldXJlci9zY2huZWxsCitnLmJpZXJzY2h1ZXR0bGVyCWcuYmllcnNjaHVldHRsZXIKK2Fic3R1ZnVuZ2VuCWcuYmllcnNjaHVldHRsZXIvYWJzdHVmdW5nZW4KK2Fsa29ob2xnaWZ0CWcuYmllcnNjaHVldHRsZXIvYWxrb2hvbGdpZnQKK2JlbGllZmVyZQlnLmJpZXJzY2h1ZXR0bGVyL2JlbGllZmVyZQorYmVvYmFjaHRlCWcuYmllcnNjaHVldHRsZXIvYmVvYmFjaHRlCitiZXJ1aGlnZQlnLmJpZXJzY2h1ZXR0bGVyL2JlcnVoaWdlCitiaWVyc2NodWVyemUJZy5iaWVyc2NodWV0dGxlci9iaWVyc2NodWVyemUKK2JsdWJiZXIJZy5iaWVyc2NodWV0dGxlci9ibHViYmVyCitlcmRiZWJlbglnLmJpZXJzY2h1ZXR0bGVyL2VyZGJlYmVuCitmbGllc3NlCWcuYmllcnNjaHVldHRsZXIvZmxpZXNzZQorZmxvZXNzZQlnLmJpZXJzY2h1ZXR0bGVyL2Zsb2Vzc2UKK2ZyZWliaWVyCWcuYmllcnNjaHVldHRsZXIvZnJlaWJpZXIKK2hhYXJ3dWNocwlnLmJpZXJzY2h1ZXR0bGVyL2hhYXJ3dWNocworaGl0emVzY2hsYWcJZy5iaWVyc2NodWV0dGxlci9oaXR6ZXNjaGxhZworbGljaHQJZy5iaWVyc2NodWV0dGxlci9saWNodAorbWFzc2llcmUJZy5iaWVyc2NodWV0dGxlci9tYXNzaWVyZQorbmViZWwJZy5iaWVyc2NodWV0dGxlci9uZWJlbAorbnVlY2h0ZXJuCWcuYmllcnNjaHVldHRsZXIvbnVlY2h0ZXJuCitwYXJ0eQlnLmJpZXJzY2h1ZXR0bGVyL3BhcnR5Citya2F1ZmUJZy5iaWVyc2NodWV0dGxlci9ya2F1ZmUKK3NhbmQJZy5iaWVyc2NodWV0dGxlci9zYW5kCitzY2hpbW1lcglnLmJpZXJzY2h1ZXR0bGVyL3NjaGltbWVyCitzY2h1ZXR0ZWxlCWcuYmllcnNjaHVldHRsZXIvc2NodWV0dGVsZQorc2NodWV0dGVsc3RhcnJlCWcuYmllcnNjaHVldHRsZXIvc2NodWV0dGVsc3RhcnJlCit6YXViZXJzcHJ1ZWNoZQlnLmJpZXJzY2h1ZXR0bGVyL3phdWJlcnNwcnVlY2hlCitnLmthcmF0ZQlnLmthcmF0ZQorYWJ3ZWhyCWcua2FyYXRlL2Fid2VocgorYW5ncmlmZglnLmthcmF0ZS9hbmdyaWZmCitrb256ZW50cmF0aW9uCWcua2FyYXRlL2tvbnplbnRyYXRpb24KK2cua2xlcnVzCWcua2xlcnVzCitiZWlzdGFuZAlnLmtsZXJ1cy9iZWlzdGFuZAorYmV0ZQlnLmtsZXJ1cy9iZXRlCitibGl0eglnLmtsZXJ1cy9ibGl0egorZG9ubmVyCWcua2xlcnVzL2Rvbm5lcgorZWxlbWVudGFyc2NoaWxkCWcua2xlcnVzL2VsZW1lbnRhcnNjaGlsZAorZWxlbWVudGFyc3BoYWVyZQlnLmtsZXJ1cy9lbGVtZW50YXJzcGhhZXJlCitlbnRmbHVjaGUJZy5rbGVydXMvZW50Zmx1Y2hlCitlbnRmcm9zY2hlCWcua2xlcnVzL2VudGZyb3NjaGUKK2VudGdpZnRlCWcua2xlcnVzL2VudGdpZnRlCitoZWlsZQlnLmtsZXJ1cy9oZWlsZQoraGVpbGlnZW5zY2hlaW4JZy5rbGVydXMvaGVpbGlnZW5zY2hlaW4KK2hlaWx0cmFuawlnLmtsZXJ1cy9oZWlsdHJhbmsKK2lkZW50aWZpemllcmUJZy5rbGVydXMvaWRlbnRpZml6aWVyZQora3VyaWVyZQlnLmtsZXJ1cy9rdXJpZXJlCitsYWV1dGVyZQlnLmtsZXJ1cy9sYWV1dGVyZQorbGViZW5za3JhZnQJZy5rbGVydXMvbGViZW5za3JhZnQKK2xldWNodGVuCWcua2xlcnVzL2xldWNodGVuCittZXNzZXJrcmVpcwlnLmtsZXJ1cy9tZXNzZXJrcmVpcworcmVnZW5lcmllcmUJZy5rbGVydXMvcmVnZW5lcmllcmUKK3NjaGFldHoJZy5rbGVydXMvc2NoYWV0egorc2NodXR6aGFuZAlnLmtsZXJ1cy9zY2h1dHpoYW5kCitzZWduZQlnLmtsZXJ1cy9zZWduZQorc29ubmVuc2NodXR6CWcua2xlcnVzL3Nvbm5lbnNjaHV0egorc3BhbHR1bmcJZy5rbGVydXMvc3BhbHR1bmcKK3RyYXVlCWcua2xlcnVzL3RyYXVlCit3ZWloZQlnLmtsZXJ1cy93ZWloZQord3VuZGVyCWcua2xlcnVzL3d1bmRlcgorZy5jaGFvcwlnLmNoYW9zCitnLnphdWJlcmVyCWcuemF1YmVyZXIKK29sZC5hcHBsaWVkCW9sZC5hcHBsaWVkCithcHBsaWVkCW9sZC5hcHBsaWVkL2FwcGxpZWQKK3JlbW92ZQlvbGQuYXBwbGllZC9yZW1vdmUKK2xvZ29uCW9sZC5hcHBsaWVkL2xvZ29uCittb2RpZnlfY29tbWFuZAlvbGQuYXBwbGllZC9tb2RpZnlfY29tbWFuZAorcXVlcnlfbGV2ZWwJb2xkLmFwcGxpZWQvcXVlcnlfbGV2ZWwKK2NhdGNoX3RlbGwJb2xkLmFwcGxpZWQvY2F0Y2hfdGVsbAorY2xlYW5fdXAJb2xkLmFwcGxpZWQvY2xlYW5fdXAKK2NyZWF0ZQlvbGQuYXBwbGllZC9jcmVhdGUKK2hlYXJ0X2JlYXQJb2xkLmFwcGxpZWQvaGVhcnRfYmVhdAoraW5pdAlvbGQuYXBwbGllZC9pbml0CityZXNldAlvbGQuYXBwbGllZC9yZXNldAorX19JTklUCW9sZC5hcHBsaWVkL19fSU5JVAorcGFyc2VfY29tbWFuZF9pZF9saXN0CW9sZC5hcHBsaWVkL3BhcnNlX2NvbW1hbmRfaWRfbGlzdAorcGFyc2VfY29tbWFuZF9hZGplY3Rpdl9pZF9saXN0CW9sZC5hcHBsaWVkL3BhcnNlX2NvbW1hbmRfYWRqZWN0aXZfaWRfbGlzdAorcGFyc2VfY29tbWFuZF9wbHVyYWxfaWRfbGlzdAlvbGQuYXBwbGllZC9wYXJzZV9jb21tYW5kX3BsdXJhbF9pZF9saXN0CitjYXRjaF9tc2cJb2xkLmFwcGxpZWQvY2F0Y2hfbXNnCithZGRfd2VpZ2h0CW9sZC5hcHBsaWVkL2FkZF93ZWlnaHQKK3F1ZXJ5X3JlYWxfbmFtZQlvbGQuYXBwbGllZC9xdWVyeV9yZWFsX25hbWUKK2V4aXQJb2xkLmFwcGxpZWQvZXhpdAorcXVlcnlfd2VpZ2h0CW9sZC5hcHBsaWVkL3F1ZXJ5X3dlaWdodAorZHJvcAlvbGQuYXBwbGllZC9kcm9wCitnZXQJb2xkLmFwcGxpZWQvZ2V0CitpZC5vbGQJb2xkLmFwcGxpZWQvaWQub2xkCitjYW5fcHV0X2FuZF9nZXQJb2xkLmFwcGxpZWQvY2FuX3B1dF9hbmRfZ2V0CitwcmV2ZW50X2luc2VydAlvbGQuYXBwbGllZC9wcmV2ZW50X2luc2VydAoraGlsZmUubWFnaWVyCWhpbGZlLm1hZ2llcgoraGlsZmUuc2VoZXIJaGlsZmUuc2VoZXIKK2hpbGZlLnNwaWVsZXIJaGlsZmUuc3BpZWxlcgorbWNtZAltY21kCithZGRtYXN0ZXIJbWNtZC9hZGRtYXN0ZXIKK2F0CW1jbWQvYXQKK2JhbmlzaAltY21kL2JhbmlzaAorY2F0CW1jbWQvY2F0CitjZAltY21kL2NkCitjbG9uZQltY21kL2Nsb25lCitjcAltY21kL2NwCitkZXN0cnVjdAltY21kL2Rlc3RydWN0CitkbwltY21kL2RvCitlY2hvYWxsCW1jbWQvZWNob2FsbAorZWNob3RvCW1jbWQvZWNob3RvCitlZAltY21kL2VkCitleGVjCW1jbWQvZXhlYworZnJpZWRlbgltY21kL2ZyaWVkZW4KK2dvdG8JbWNtZC9nb3RvCitncmVwCW1jbWQvZ3JlcAoraGVhZAltY21kL2hlYWQKK2hlaWxlCW1jbWQvaGVpbGUKK2hvbWUJbWNtZC9ob21lCitpbgltY21kL2luCitpbnZpcwltY21kL2ludmlzCitsb2FkCW1jbWQvbG9hZAorbG9jYWxjbWQJbWNtZC9sb2NhbGNtZAorbHMJbWNtZC9scworbWFuCW1jbWQvbWFuCittYmFuaXNoCW1jbWQvbWJhbmlzaAorbWVjaG8JbWNtZC9tZWNobworbWtkaXIJbWNtZC9ta2RpcgorbW9yZQltY21kL21vcmUKK21zY2hhdQltY21kL21zY2hhdQorbXYJbWNtZC9tdgorb3JvcGF4CW1jbWQvb3JvcGF4CitwZW9wbGUJbWNtZC9wZW9wbGUKK3BpbmcJbWNtZC9waW5nCitwcm9tcHQJbWNtZC9wcm9tcHQKK3Byb3RlY3QJbWNtZC9wcm90ZWN0Citwd2QJbWNtZC9wd2QKK3B3aG8JbWNtZC9wd2hvCityZW1vdmVtYXN0ZXIJbWNtZC9yZW1vdmVtYXN0ZXIKK3JtCW1jbWQvcm0KK3JtZGlyCW1jbWQvcm1kaXIKK3NhbGxvdwltY21kL3NhbGxvdworc2V0CW1jbWQvc2V0CitzZXRjbXNnCW1jbWQvc2V0Y21zZworc2V0ZG1zZwltY21kL3NldGRtc2cKK3Nob3dwcmVzYXkJbWNtZC9zaG93cHJlc2F5CitzaHV0ZG93bgltY21kL3NodXRkb3duCitzbm9vcAltY21kL3Nub29wCit0YWlsCW1jbWQvdGFpbAordHJhZW5rZQltY21kL3RyYWVua2UKK3RyYW5zCW1jbWQvdHJhbnMKK3VkcHEJbWNtZC91ZHBxCit1cGQJbWNtZC91cGQKK3VwZGF0ZQltY21kL3VwZGF0ZQordmVyZm9sZ2UJbWNtZC92ZXJmb2xnZQordmlzCW1jbWQvdmlzCit6YXAJbWNtZC96YXAKK3p3aW5nZQltY21kL3p3aW5nZQorcGNtZAlwY21kCithZHZlcmIJcGNtZC9hZHZlcmIKK2FsaWFzCXBjbWQvYWxpYXMKK2FudHdvcnRlCXBjbWQvYW50d29ydGUKK2F1c2dhZW5nZQlwY21kL2F1c2dhZW5nZQorYmVoYWx0ZQlwY21kL2JlaGFsdGUKK2ViZW5lbglwY21kL2ViZW5lbgorZW1haWwJcGNtZC9lbWFpbAorZW1vdGUJcGNtZC9lbW90ZQorZW5kZQlwY21kL2VuZGUKK2VudGdpZnRlCXBjbWQvZW50Z2lmdGUKK2Vyc2V0enVuZ3NhbnplaWdlCXBjbWQvZXJzZXR6dW5nc2FuemVpZ2UKK2Vyd2FydGUJcGNtZC9lcndhcnRlCitlcndpZGVyZQlwY21kL2Vyd2lkZXJlCitmZWhsZXIJcGNtZC9mZWhsZXIKK2ZpbmdlcglwY21kL2ZpbmdlcgorZmx1ZXN0ZXJlCXBjbWQvZmx1ZXN0ZXJlCitmcmFnZQlwY21kL2ZyYWdlCitnZXNwcmFlY2gJcGNtZC9nZXNwcmFlY2gKK2dpYglwY21kL2dpYgoraGlsZmUJcGNtZC9oaWxmZQoraGlzdG9yeQlwY21kL2hpc3RvcnkKK2hvbGUJcGNtZC9ob2xlCitpZGVlCXBjbWQvaWRlZQoraWdub3JpZXJlCXBjbWQvaWdub3JpZXJlCitpbmZvCXBjbWQvaW5mbworaW5mb3JtCXBjbWQvaW5mb3JtCitpbnZlbnR1cglwY21kL2ludmVudHVyCitra3dlcglwY21kL2trd2VyCitrbGV0dGVyZQlwY21kL2tsZXR0ZXJlCitrb2JvbGQJcGNtZC9rb2JvbGQKK2t1cnoJcGNtZC9rdXJ6Citrd2VyCXBjbWQva3dlcgorbGFuZwlwY21kL2xhbmcKK21ydWZlCXBjbWQvbXJ1ZmUKK211ZHMJcGNtZC9tdWRzCituaW1tCXBjbWQvbmltbQorcGFzc3dvcnQJcGNtZC9wYXNzd29ydAorcmtudWRkbGUJcGNtZC9ya251ZGRsZQorcnVmZQlwY21kL3J1ZmUKK3J3aW5rZQlwY21kL3J3aW5rZQorc2FnZQlwY21kL3NhZ2UKK3NjaGF1CXBjbWQvc2NoYXUKK3NjaGxhZmUJcGNtZC9zY2hsYWZlCitzZWxic3Rsb2VzY2h1bmcJcGNtZC9zZWxic3Rsb2VzY2h1bmcKK3NwZWljaGVybglwY21kL3NwZWljaGVybgorc3BpZWxwYXVzZQlwY21kL3NwaWVscGF1c2UKK3N0ZWNrZQlwY21kL3N0ZWNrZQorc3RvcAlwY21kL3N0b3AKK3N0dHkJcGNtZC9zdHR5Cit0ZWlsZQlwY21kL3RlaWxlCit0b2V0ZQlwY21kL3RvZXRlCit0cmFnZQlwY21kL3RyYWdlCit0eXBvCXBjbWQvdHlwbwordWhybWVsZHVuZwlwY21kL3Vocm1lbGR1bmcKK3VsdHJha3VyeglwY21kL3VsdHJha3VyegordW5hbGlhcwlwY21kL3VuYWxpYXMKK3VybAlwY21kL3VybAordmVyYmVuCXBjbWQvdmVyYmVuCit2b3JzaWNodAlwY21kL3ZvcnNpY2h0Cit3ZWcJcGNtZC93ZWcKK3dlcglwY21kL3dlcgord2lyZglwY21kL3dpcmYKK3plaWxlbglwY21kL3plaWxlbgoremVpdAlwY21kL3plaXQKK3ppZWhlCXBjbWQvemllaGUKK3p1ZWNrZQlwY21kL3p1ZWNrZQorZW50Z2lmdGUuZGVha3RpdmllcnQJcGNtZC9lbnRnaWZ0ZS5kZWFrdGl2aWVydAorUkVBRE1FCVJFQURNRQorc2NtZAlzY21kCithZW5kZXJlCXNjbWQvYWVuZGVyZQorYXVzZ2FuZwlzY21kL2F1c2dhbmcKK2JlZmVobAlzY21kL2JlZmVobAorYmVzY2hyZWliZQlzY21kL2Jlc2NocmVpYmUKK2VjaG8Jc2NtZC9lY2hvCitlcmxhdWJlCXNjbWQvZXJsYXViZQorZXh0cmFsb29rCXNjbWQvZXh0cmFsb29rCitmZWhsZXJtZWxkdW5nCXNjbWQvZmVobGVybWVsZHVuZworZmx1Y2h0cmljaHR1bmcJc2NtZC9mbHVjaHRyaWNodHVuZworaGF1c2JhdQlzY21kL2hhdXNiYXUKK2luc3RhbnRoYXVzCXNjbWQvaW5zdGFudGhhdXMKK2tvcGllcmUJc2NtZC9rb3BpZXJlCitsaWNodAlzY21kL2xpY2h0Citsb2VzY2hlCXNjbWQvbG9lc2NoZQorbWVsZHVuZ2VuCXNjbWQvbWVsZHVuZ2VuCitub3RpeglzY21kL25vdGl6CitwcmVzYXkJc2NtZC9wcmVzYXkKK3JlbW90ZQlzY21kL3JlbW90ZQorcmV2aWV3CXNjbWQvcmV2aWV3CitzY2hpZWJlCXNjbWQvc2NoaWViZQorc2VoZXJoYXVzCXNjbWQvc2VoZXJoYXVzCitzZXRoYW5kcwlzY21kL3NldGhhbmRzCitzZXRtaW4Jc2NtZC9zZXRtaW4KK3NldG1taW4Jc2NtZC9zZXRtbWluCitzZXRtbW91dAlzY21kL3NldG1tb3V0CitzZXRtb3V0CXNjbWQvc2V0bW91dAorc3BlcnJlCXNjbWQvc3BlcnJlCitzcGlvbglzY21kL3NwaW9uCit0aXRlbAlzY21kL3RpdGVsCit1ZWJlcnNpY2h0CXNjbWQvdWViZXJzaWNodAordmVyYmlldGUJc2NtZC92ZXJiaWV0ZQord2VyZmUJc2NtZC93ZXJmZQord2l6CXdpegorYmFsYW5jZQl3aXovYmFsYW5jZQorZm9yc2NoZXJwdW5rdGUJd2l6L2ZvcnNjaGVycHVua3RlCit0ZXN0c3BpZWxlcgl3aXovdGVzdHNwaWVsZXIKK3p3ZWl0c3BpZWxlcgl3aXovendlaXRzcGllbGVyCitsdXBlCXdpei9sdXBlCitrbmV0ZQl3aXova25ldGUKK21hdGVyaWFsCXdpei9tYXRlcmlhbAorbWF0ZXJpYWxsaXN0ZQl3aXovbWF0ZXJpYWxsaXN0ZQorcmVnaW9uc21hZ2llcgl3aXovcmVnaW9uc21hZ2llcgorbWF0ZXJpYWxncnVwcGVuCXdpei9tYXRlcmlhbGdydXBwZW4KK21hdGVyaWFsZXJrZW5udW5nCXdpei9tYXRlcmlhbGVya2VubnVuZworbWF0ZXJpYWxkYgl3aXovbWF0ZXJpYWxkYgpkaWZmIC0tZ2l0IGEvZG9jLy5wcm9wZGVzYyBiL2RvYy8ucHJvcGRlc2MKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNjM2MDUzNQotLS0gL2Rldi9udWxsCisrKyBiL2RvYy8ucHJvcGRlc2MKQEAgLTAsMCArMSwxMDMzIEBACitQX0xJR0hUCisvLyBHcmVpZnQgYXVmIGRlbiBMaWNodGxldmVsIHp1LiBIYW5kbGUgd2l0aCBjYXJlICEhIQorCitQX05BTUUKKy8vIEluIGRpZXNlciBQcm9wZXJ0eSB3aXJkIGRlciBOYW1lIGRlcyBPYmpla3RlcyBnZXNwZWljaGVydC4gRXIKKy8vIHNvbGx0ZSBudXIgYXVzIGVpbmVtIFdvcnQgYmVzdGVoZW4uIERlciBOYW1lIGRpZW50IGRhenUsIGRhcworLy8gT2JqZWt0IGluIGVpbmVtIFNhdHogenUgZXJ3YWVobmVuIHVuZCB3aXJkIGF1Y2ggZGVrbGluaWVydC4KKworUF9OQU1FX0FESgorLy8gSW4gZGllc2VyIFByb3BlcnR5IGthbm4gZWluIEFkamVrdGl2IGFiZ2VsZWd0IHdlcmRlbiwgZGFzcyBkYW5uCisvLyBiZWkgZGVyIEF1c2dhYmUgbWl0dGVscyBuYW1lKCkgbWl0YmVudXR6dCB3aXJkLgorLy8gKEluIGRlciBSZWdlbCBuaWNodCBub2V0aWcuKQorCitQX1NIT1JUCisvLyBJbiBkaWVzZXIgUHJvcGVydHkgd2lyZCBkaWUgS3VyemJlc2NocmVpYnVuZyBkZXMgT2JqZWt0ZXMKKy8vIGdlc3BlaWNoZXJ0LCBkaWUgYmVpbSBVbXNjaGF1ZW4gaW0gUmF1bSBvZGVyIGJlaSBkZXIgQXVzZ2FiZQorLy8gZGVzIEludmVudGFycyBhdXNnZWdlYmVuIHdpcmQuIEZ1ZXIgdW5zaWNodGJhcmUgT2JqZWt0ZQorLy8gc29sbHRlIHNpZSAwIHNlaW4uCisKK1BfTE9ORworLy8gVW50ZXIgZGllc2VyIFByb3BlcnR5IHdpcmQgZGllIEJlc2NocmVpYnVuZyBnZXNwZWljaGVydCwgZGllCisvLyBiZWkgZGVyIFVudGVyc3VjaHVuZyBkZXMgT2JqZWt0ZXMgYXVzZ2VnZWJlbiB3aXJkLgorCitQX1dFSUdIVAorLy8gRGFzIEdld2ljaHQgZWluZXMgT2JqZXRlcyBpbiBHcmFtbS4KKworUF9WQUxVRQorLy8gV2VydCBkZXMgT2JqZWt0ZXMgaW4gR29sZG11ZW56ZW4uIERpZXNlbiBXZXJ0IGVyaGFlbHQgbWFuIGJlaW0KKy8vIFZlcmthdWYuIEthdWZlbiBrb3N0ZXQgZWluIFZpZWxmYWNoZXMgaGllcnZvbi4KKworUF9JRFMKKy8vIEhpZXIgd2VyZGVuIGRpZSBCZXplaWNobnVuZ2VuIGFiZ2VzcGVpY2hlcnQsIHVudGVyIGRlbmVuIHNpY2ggZGFzCisvLyBPYmpla3QgYW5nZXNwcm9jaGVuIGZ1ZWhsdC4KKy8vIFNvbGx0ZSBudXIgbWl0dGVscyBBZGRJZCggaWQgKTsgZ2VzZXR6dCB3ZXJkZW4uCisKK1BfQURKRUNUSVZFUworLy8gSGllciB3ZXJkZW4gQWRqZWt0aXZlIGdlc3BlaWNoZXJ0LCB1bnRlciBkZW5lbiBzaWNoIGRhcyBPYmpla3QKKy8vIGFuZ2VzcHJvY2hlbiBmdWVobHQuIFNvIHNpbmQgS29tYmluYXRpb25lbiBkZXIgU3lub255bWUgbWl0CisvLyBtZWhyZXJlbiBBZGpla3RpdmVuIG1vZWdsaWNoLiBHZ2Ygc29sbHRlIGF1Y2ggZGVyIGRla2xpbmllcnRlCisvLyBGYWxsIGRlcyBBZGpla3RpdmVzIGVpbmdlZ2ViZW4gd2VyZGVuLgorLy8gU29sbHRlIG51ciBtaXR0ZWxzIEFkZEFkamVjdGl2ZSggYWRqZWN0aXZlICk7IGdlc2V0enQgd2VyZGVuLgorCitQX0lORk8KKy8vIEdlaGVpbWUgSW5mb3JtYXRpb24sIGRpZSBnZ2YuIHVlYmVyIGVpbmVuIFphdWJlcnNwcnVjaAorLy8gdm9uIFNwaWVsZXJuIGVybWl0dGVsdCB3ZXJkZW4ga2Fubi4KKworUF9SRUFEX01TRworLy8gSGllciBrb2VubmVuIEluZm9ybWF0aW9uZW4gZ2VzcGVpY2hlcnQgd2VyZGVuLCBkaWUgYmVpbSBMZXNlbgorLy8gZGVzIE9iamVrdGVzIGF1c2dlZ2ViZW4gd2VyZGVuLgorCitQX1VJRAorLy8gU2ltdWxhdGlvbiBkZXMgWnVncmlmZnMgYXVmIGRpZSB1aWQuCisKK1BfRVVJRAorLy8gU2ltdWxhdGlvbiBkZXMgWnVncmlmZnMgYXVmIGRpZSBldWlkLgorCitQX0FVVE9MT0FET0JKCisvLyBNaXQgZGllc2VyIFByb3BlcnR5IHdlcmRlbiBBdXRvbG9hZG9iamVrdGUgdmVyd2FsdGV0LgorLy8gRGVyIEluaGFsdCBkZXIgUHJvcGVydHkgc2luZCBkaWUgcGVybWFuZW50ZW4gRWlnZW5zY2hhZnRlbiBkZXMKKy8vIE9iamVrdGVzLCBkaWUgZGVyIFNwaWVsZXIgdWViZXJzIGF1c2xvZ2dlbiBoaW53ZWcgYmVpYmVoYWVsdC4KKy8vIEJlaW0gRWlubG9nZ2VuIHdlcmRlbiBzaWUgYXV0b21hdGlzY2ggbmV1IGdlc2V0enQuIChBQ0hUVU5HOgorLy8gRGllIFByb3BlcnR5IG11c3MgaW50ZXJuIHNlbGJzdCB2ZXJ3YWx0ZXQgd2VyZGVuLikKKy8vIEF1dG9sb2Fkb2JqZWt0ZSB3ZXJkZW4gYmVpbSBBdXNsb2dnZW4gbmljaHQgZmFsbGVuZ2VsYXNzZW4hCisKK1BfTk9HRVQKKy8vIERpZXNlIFByb3BlcnR5IGVudGhhZWx0IGVpbmUgTWVsZHVuZywgZGllIGF1c2dlZ2ViZW4gd2lyZCwgd2VubgorLy8gamVtYW5kIHZlcnN1Y2h0LCBkaWVzZXMgT2JqZWt0IHp1IG5laG1lbi4gV2lyZCBkaWUgUHJvcC4gYXVmIGVpbmVuCisvLyBuaWNodC1TdHJpbmctV2VydCBnZXNldHp0LCBzbyB3aXJkIGVpbmUgRGVmYXVsdG1lbGR1bmcgYXVzZ2VnZWJlbi4KKworUF9OT0RST1AKKy8vIERpZXNlIFByb3BlcnR5IGVudGhhZWx0IGVpbmUgTWVsZHVuZywgZGllIGF1c2dlZ2ViZW4gd2lyZCwgd2VubgorLy8gamVtYW5kIHZlcnN1Y2h0LCBkYXMgT2JqZWt0IGZhbGxlbiB6dSBsYXNzZW4uIFdpcmQgZGllIFByb3AuICBhdWYgZWluZW4KKy8vIG5pY2h0LVN0cmluZy1XZXJ0IGdlc2V0enQsIHNvIHdpcmQgZWluZSBEZWZhdWx0bWVsZHVuZyBhdXNnZWdlYmVuLgorCitQX05PQlVZCisvLyBXZW5uIGRpZXNlIFByb3BlcnR5IGdlc2V0enQgaXN0LCB3aXJkIGRhcyBPYmpla3QgbmFjaCBlaW5lbQorLy8gVmVya2F1ZiBpbSBMYWRlbiB6ZXJzdG9lcnQsIGRhbWl0IGVzIG5pY2h0IHdpZWRlciB2b24gZWluZW0gU3BpZWxlcgorLy8gZ2VrYXVmdCB3ZXJkZW4ga2Fubi4KKworUF9ORVZFUkRST1AKKy8vIE9iamVrdGUgbWl0IGRpZXNlciBQcm9wZXJ0eSB3ZXJkZW4gYmVpbSBUb2QgZGVzIFNwaWVsZXJzIG5pY2h0CisvLyBpbiBkZW4gTGVpY2huYW0gZ2VsZWd0LgorLy8gUF9OT0RST1Agd2lyZCBhdXRvbWF0aXNjaCBtaXRnZXNldHp0LgorCitQX05SX0hBTkRTCisvLyBBbnphaGwgZGVyIEhhZW5kZSwgZGllIG1hbiB6dXIgQmVudXp0dW5nIGRlcyBPYmpla3RlcyBiZW5vZXRpZ3QuCisKK1BfTUFHSUMKKy8vIERpZXNlcyBPYmpla3QgaXN0IG1hZ2lzY2guCisKK1BfTUFYX1dFSUdIVAorLy8gTWF4aW1hbGVzIEdld2ljaHQgaW4gR3JhbW0sIGRhcyBpbiBkZW0gQ29udGFpbmVyIHZlcnN0YXV0IHdlcmRlbgorLy8ga2Fubi4KKworUF9UT1RBTF9XRUlHSFQKKy8vIEdld2ljaHQgaW5jbC4gSW5oYWx0IGluIEdyYW1tLiBQX1dFSUdIVF9QRVJDRU5UIHdpcmQgYmVydWVja3NpY2h0aWd0LgorCitQX1RSQU5TUEFSRU5UCisvLyBpc3QgIT0gMCwgd2VubiBoaW5laW4gb2RlciBoaW5hdXNnZXNjaGF1dCB3ZXJkZW4ga2Fubi4KKworUF9DTlRfU1RBVFVTCisvLyBTdGF0dXMgZGVzIENvbnRhaW5lcnMgKG9mZmVuLCBnZXNjaGxvc3NlbiwgYWJnZXNjaGxvc3NlbikKKy8vIHNpZWhlIGF1Y2ggL3N5cy9jb250YWluZXIuaAorCitQX1dFSUdIVF9QRVJDRU5UCisvLyBEaWVzZSBQcm9wZXJ0eSBnaWJ0IGFuLCB3aWV2aWVsIFByb3plbnQgZGVzIEdld2ljaHRzIGRlcyBJbmhhbHRlcworLy8gIm5hY2ggYXVzc2VuIiB3aWVkZXJnZWdlYmVuIHdlcmRlbi4KKworUF9JTlRfU0hPUlQKKy8vIEt1cnpiZXNjaHJlaWJ1bmcsIHdlbm4gbWFuIHNpY2ggaW0gSW5uZXJlbiBkZXMgQ29udGFpbmVycworLy8gYmVmaW5kZXQuCisKK1BfSU5UX0xPTkcKKy8vIEJlc2NocmVpYnVuZywgZGllIG1hbiBiZWtvbW10LCB3ZW5uIG1hbiBzaWNoIGluIGRlbSBDb250YWluZXIKKy8vIHVtc2NoYXV0LgorCitQX0RFVEFJTFMKKy8vIERpZXNlIFByb3BlcnR5IGVudGhhZWx0IGVpbiBtYXBwaW5nLCBpbiBkZXIgT2JqZWt0ZSBpbSBSYXVtCisvLyBkZWZpbmllcnQgd2VyZGVuIHVuZCBCZXNjaHJlaWJ1bmdlbiwgZGllIGF1c2dlZ2ViZW4gd2VyZGVuLAorLy8gd2VubiBtYW4gc2ljaCBkaWVzZSBEZXRhaWxzIGFuc2NoYXV0LgorCitQX1NQRUNJQUxfREVUQUlMUworLy8gTWFwcGluZyB2b24gRGV0YWlscywgZGllIGJlaW0gQW5zY2hhdWVuIGVpbmUgRnVua3Rpb24gc3RhcnRlbi4KKworUF9SRUFEX0RFVEFJTFMKKy8vIERldGFpbHMsIGRpZSBkdXJjaCBMZXNlbiBlcm1pdHRlbHQgd2VyZGVuIGtvZW5uZW4uCisKK1BfUk9PTV9NU0cKKy8vIExpc3RlIG1pdCBNZWxkdW5nZW4sIGRpZSB6dWZhZWxsaWcgaW0gUmF1bSBhdXNnZWdlYmVuIHdlcmRlbi4KKworUF9GVU5DX01TRworLy8gTGlzdGUgbWl0IEZ1bmt0aW9uZW4sIGRpZSB6dWZhZWxsaWcgaW0gUmF1bSBhdWZnZXJ1ZmVuIHdlcmRlbi4KKworUF9NU0dfUFJPQgorLy8gTnVtZXJpc2NoZXIgV2VydCBmdWVyIFdhaHJzY2hlaW5saWNoa2VpdCwgbWl0IGRlciBkaWUgTWVsZHVuZ2VuCisvLyB1bmQvb2RlciBkaWUgRnVua3Rpb25lbiBhdXNnZWdlYmVuL2F1ZmdlcnVmZW4gd2VyZGVuLgorCitQX0VYSVRTCisvLyBNYXBwaW5nIGFsbGVyIHVubWl0dGVsYmFyIHNpY2h0YmFyZW4gQXVzZ2FlbmdlIG1pdCB6dWdlaG9lcmlnZW4KKy8vIE5hY2hiYXJyYWV1bWVuLiBTb2xsdGUgbnVyIG1pdHRlbHMgQWRkRXhpdCgpIGJlbnV0enQgd2VyZGVuLgorCitQX1NQRUNJQUxfRVhJVFMKKy8vIERpdG8sIGFiZXIgYW5zdGF0dCBkZXMgTmFjaGJhcnJhdW1zIHdpcmQgZWluZSBGdW5rdGlvbiAoaW0gUmF1bSkKKy8vIGFuZ2VnZWJlbSwgZGllIGJlaSBFaW5nYWJlIGRlciBSaWNodHVuZyBhdXNnZWZ1ZWhydCB3aXJkLgorCitQX0RPT1JTCisvLyAqKiogT0JTT0xFVCEgKioqCisvLyBTaWVoZSBQX0RPT1JfSU5GT1MKKworUF9DT01NQU5EUworLy8gTWFwcGluZyB2b24gS29tbWFuZG9zLCBkaWUgaW0gT2JqZWt0IGRlZmluaWVydCBzaW5kLgorLy8gU29sbHRlIG51ciBtaXR0ZWxzIEFkZENtZCgpIGJlbnV0enQgd2VyZGVuLgorCitQX0lURU1TCisvLyBEZWZpbml0aW9uIHZvbiBHZWdlbnN0YWVuZGVuLCBkaWUgaW4gZGVtIFJhdW0gbGllZ2VuIHNvbGxlbi4KKy8vIEVya2xhZXJ1bmcgaW4gZWluZW0gRXh0cmFmaWxlLgorCitQX05PX1RQT1JUCisvLyBLYW5uIGZvbGdlbmRlIFdlcnRlIGFubm5laG1lbiAoZGVmaW5pZXJ0IGluIG1vdmluZy5oKToKKy8vIE5PX1RQT1JUX0lOCT0gTWFuIGthbm4gbmljaHQgaW4gZGVuIFJhdW0gaGluZWluIHRlbGVwb3J0aWVyZW4uCisvLyBOT19UUE9SVF9PVVQgPSBNYW4ga2FubiBuaWNodCBhdXMgZGVtIFJhdW0gaGluYXVzIHRlbGVwb3J0aWVyZW4uCisvLyBOT19UUE9SVAk9IFdlZGVyIG5vY2guCisKK1BfSU5ET09SUworLy8gR2VzZXR6dCwgd2VubiB2b24gZGVtIFJhdW0gYXVzIGRlciBIaW1tZWwgbmljaHQgc2ljaHRiYXIgaXN0LgorLy8gRGluZ2Ugd2llIFdldHRlciBvZGVyIE1vbmRhdWZnYWVuZ2Ugd2VyZGVuIGluIHNvbGNoZW4gUmFldW1lbgorLy8gbmljaHQgZ2V6ZWlndC4KKy8vIEF1c3NlcmRlbQorCitQX05PTUFHSUMKKy8vIEFuZ2FiZSBpbiBQcm96ZW50LCBtaXQgd2VsY2hlciBXYWhyc2NoZWlubGljaGtlaXQgaW4gZWluZW0KKy8vIFJhdW0gbmljaHQgZ2V6YXViZXJ0IHdlcmRlbiBrYW5uLiBCZWkgTlBDJ3MgemVpZ3QgZXMgZGllCisvLyBSZXNpc3RlbnogZ2VnZW4gTWFnaWUgYW4uCisvLyAoTm9jaCBuaWNodCBpbXBsZW1lbnRpZXJ0KQorCitQX09SQUtFTAorLy8gV2VubiBkaWVzZSBQcm9wZXJ0eSBnZXNldHp0IGlzdCwga2FubiBkZXIgV2FuZGVyZXIgaW4gZGllc2VuCisvLyBSYXVtIGhpbmVpbi4KKworUF9BTElHTgorLy8gTnVtZXJpc2NoZXIgV2VydCBmdWVyIEd1dC0gb2RlciBCb2VzaGVpdCBkZXMgV2VzZW5zLgorCitQX1JBQ0UKKy8vIFN0cmluZyBtaXQgZGVyIFJhc3NlIGRlcyBXZXNlbnMuCisKK1BfR0VOREVSCisvLyBHcmFtbWF0aWthbGlzY2hlcyBHZXNjaGxlY2h0IGRlcyBPYmpla3RlczoKKy8vIChEZWZpbmllcnQgaW4gbGFuZ3VhZ2UuaCkgTUFMRSwgRkVNQUxFIG9kZXIgTkVVVEVSCisKK1BfQVRUUklCVVRFUworLy8gTWFwcGluZyBtaXQgZGVuIEF0dHJpYnV0ZW4gZGVzIFdlc2Vucy4KKworUF9GT09ECisvLyBOdW1lcmlzY2hlciBXZXJ0IGZ1ZXIgU2FldHRpZ3VuZ3NncmFkIGRlcyBXZXNlbnMuCisKK1BfRFJJTksKKy8vIE51bWVyaXNjaGVyIFdlcnQgZnVlciBTYWV0dGlndW5nIGRlcyBXZXNlbnMgbWl0IEdldHJhZW5rZW4uCisKK1BfQUxDT0hPTAorLy8gTnVtLiBXZXJ0IGZ1ZXIgQmVzb2ZmZW5oZWl0LgorCitQX01BWF9GT09ECisvLyBOdW1lcmlzY2hlciBXZXJ0IGZ1ZXIgZGllIG1heGltYWxlIFNhZXR0aWd1bmcgZGVzIFdlc2Vucy4KKworUF9NQVhfRFJJTksKKy8vIE51bWVyaXNjaGVyIFdlcnQgZnVlciBkaWUgbWF4aW1hbGUgJ1dhc3Nlcm1lbmdlJyBpbSBXZXNlbi4KKworUF9NQVhfQUxDT0hPTAorLy8gTnVtZXJpc2NoZXIgV2VydCBmdWVyIGRpZSBBbGtvaG9sdmVydHJhZWdsaWNoa2VpdCBkZXMgV2VzZW5zLgorCitQX0hQCisvLyBBbnphaGwgZGVyIExlYmVuc3B1bmt0ZSBkZXMgV2VzZW5zLgorCitQX1NQCisvLyBBbnphaGwgZGVyIE1hZ2llcHVua3RlIGRlcyBXZXNlbnMuCisKK1BfTUFYX0hQCisvLyBNYXhpbWFsZSBBbnphaGwgZGVyIExlYmVuc3B1bmt0ZS4KKworUF9NQVhfU1AKKy8vIE1heGltYWxlIEFuemFobCBkZXIgTWFnaWVwdW5rdGUuCisKK1BfWFAKKy8vIEFuemFobCBkZXIgRXJmYWhydW5nc3B1bmt0ZS4KKworUF9UT1RBTF9BQworLy8gTnVtZXJpc2NoZXIgV2VydCBkZXIgQWJ3ZWhyc3RhZXJrZSBkZXMgV2VzZW5zLgorCitQX1RPVEFMX1dDCisvLyBOdW1lcmlzY2hlciBXZXJ0IGRlciBBbmdyaWZmc3N0YWVya2UgZGVzIFdlc2Vucy4KKworUF9NU0dJTgorLy8gU3RyaW5nIG1pdCBkZXIgTWVsZHVuZywgZGllIGJlaW0gVmVybGFzc2VuIGVpbmVzIFJhdW1lcyBtaXQgTV9HTworLy8gYW4gZGllIHVlYnJpZ2VuIEFud2VzZW5kZW4gYXVzZ2VnZWJlbiB3aXJkLgorCitQX01TR09VVAorLy8gU3RyaW5nIG1pdCBkZXIgTWVsZHVuZywgZGllIGJlaW0gQmV0cmV0ZW4gZWluZXMgUmF1bWVzIG1pdCBNX0dPCisvLyBhbiBkaWUgdWVicmlnZW4gQW53ZXNlbmRlbiBhdXNnZWdlYmVuIHdpcmQuCisKK1BfTU1TR0lOCisvLyBTdHJpbmcgbWl0IGRlciBNZWxkdW5nLCBkaWUgYmVpbSBWZXJsYXNzZW4gZWluZXMgUmF1bWVzIG1pdCBNX1RQT1JUCisvLyBhbiBkaWUgdWVicmlnZW4gQW53ZXNlbmRlbiBhdXNnZWdlYmVuIHdpcmQuCisKK1BfTU1TR09VVAorLy8gU3RyaW5nIG1pdCBkZXIgTWVsZHVuZywgZGllIGJlaW0gQmV0cmV0ZW4gZWluZXMgUmF1bWVzIG1pdCBNX1RQT1JUCisvLyBhbiBkaWUgdWVicmlnZW4gQW53ZXNlbmRlbiBhdXNnZWdlYmVuIHdpcmQuCisKK1BfVElUTEUKKy8vIFRpdGVsIGRlcyBTcGllbGVycy4gRXJzY2hlaW50IGhpbnRlciBkZW0gTmFtZW4gaW4gS3Vyei9MYW5nYmVzY2hyZWlidW5nLgorCitQX1BSRVNBWQorLy8gUHJlc2F5IGRlcyBTcGllbGVycy4gRXJzY2hlaW50IHZvciBkZW0gTmFtZW4gaW4gS3Vyei9MYW5nYmVzY2hyZWlidW5nLgorLy8gRXJzY2hlaW50IGF1Y2ggaW4gbmFtZSgpLCBhbHNvIGluIHNhZywgcnVmLCB0ZWlsZSBtaXQgdXN3LgorCitQX1pBUF9NU0cKKy8vIERyZWllbGVtZW50aWdlcyBBcnJheToKKy8vIDEuKSBNZWxkdW5nLCBkaWUgZGVyIE1hZ2llciBiZWltIFphcHBlbiBiZWtvbW10LgorLy8gMi4pIE1lbGR1bmcsIGRpZSBkaWUgU3BpZWxlciBpbSBSYXVtIGJlaW0gWmFwcGVuIGJla29tbWVuLgorLy8gMy4pIE1lbGR1bmcsIGRpZSBkYXMgT3BmZXIgYmVpbSBaYXBwZW4gYmVrb21tdC4KKy8vIE1pdCBAQHdlckBALCBAQHdlc3NlbkBALCAuLi4ga2FubiBkZXIgTmFtZSBkZXMgT3BmZXJzIHVuZCBtaXQKKy8vIEBAaWNoQEAgZGVyIE5hbWUgZGVzIE1hZ2llcnMgaW4gZGllIE1lbGR1bmcgZWluZ2V3ZWJ0IHdlcmRlbi4KKworUF9UUkFOS19GSU5ERU4KKy8vIFdlbm4gZGllIFByb3BlcnR5IGF1ZiAxIHN0ZWh0IGthbm4gaW1tZXIgZWluIFphdWJlcnRyYW5rIGdlZnVuZGVuCisvLyB3ZXJkZW4sIGF1Y2ggd2VubiBlciBuaWNodCBpbiBkZXIgTGlzdGUgZGVzIFNwaWVsZXJzIHN0ZWh0LgorCitQX0FXQVkKKy8vIFN0cmluZyBkZXIgYXVzZ2VnZWJlbiB3aXJkLCB3ZW5uIG1hbiB3ZWcgaXN0IHVuZCBlaW5lIE1pdHRlaWx1bmcgYmVrb21tdC4KKworUF9JR05PUkUKKy8vIEFycmF5IGRlciBTcGllbGVyLCBkZXJlbiBNaXR0ZWlsdW5nZW4gaWdub3JpZXJ0IHdlcmRlbi4KKworUF9XRUFQT04KKy8vIE1vbWVudGFuIGdlenVlY2t0ZSBXYWZmZS4KKworUF9DT01CQVRDTURTCisvLyBGdWVyIGRlbiBLYW1wZiBnZWJyYXVjaGJhcmUgQmVmZWhsZSBzcGV6aWVsbGVyIE9iamVrdGUgKGRhbWl0IGF1Y2gKKy8vIE1vbnN0ZXIgc2llIGF1dG9tYXRpc2NoIHJpY2h0aWcgYW53ZW5kZW4ga29lbm5lbikKKy8vIERlciBJbmhhbHQgdm9uIFBfQ09NQkFUQ01EUyBpc3QgZWluIE1hcHBpbmcsIGRlciBLZXkgaXN0IGRhcyBLb21tYW5kbywKKy8vIHVtIGRlbiBHZWdlbnN0YW5kIHp1IGJlbnV0emVuIChhbHNvIHouQi4gIndpcmYgZmxhbW1lbmt1Z2VsIiksIHVuZCBkZXIKKy8vIFZhbHVlIGVpbiB3ZWl0ZXJlcyBNYXBwaW5nIG1pdCBadXNhdHppbmZvcyAoZGVmaW5pZXJ0IGluIC9zeXMvY29tYmF0LmgpLgorLy8gRm9sZ2VuZGUgS2V5cyBzaW5kIGRlZmluaWVydDoKKy8vIC0gQ19NSU4sIENfQVZHLCBDX01BWDoKKy8vICAgbWluaW1hbGVyLCBtaXR0bGVyZXIgdW5kIG1heGltYWxlciBTY2hhZGVuLCBkZW4gZGFzCisvLyAgIE9iamVrdCBtYWNodC4gQWxsZSBBbmdhYmVuIGluIExFQkVOU1BVTktURU4sIGQuaC4gRGVmZW5kLUVpbmhlaXRlbi8xMC4KKy8vICAgQmVpIGVpbmVtIEF1ZnJ1ZiB3aWUgJ2VuZW15LT5EZWZlbmQoMjAwK3JhbmRvbSgyMDApLCAuLi4pJyBpc3QgZGFubgorLy8gICBDX01JTj0yMCwgQ19BVkc9MzAsIENfTUFYPTQwLgorLy8gLSBDX0RUWVBFUzoKKy8vICAgQXJyYXkgbWl0IGRlbSBTY2hhZGVuc3R5cCBvZGVyIGRlbiBTY2hhZGVuc3R5cGVuLiBCZWltIEVpc3N0YWIKKy8vICAgd3VlcmRlIGRlciBFaW50cmFnIGRhbm4gJ0NfRFRZUEVTOih7RFRfQ09MRH0pJyBsYXV0ZW4uCisvLyAtIENfSEVBTDoKKy8vICAgU29sbHRlIGRhcyBLYW1wZm9iamVrdCB1ZWJlciBkaWUgTW9lZ2xpY2hrZWl0IHZlcmZ1ZWdlbiwgZGVuIEFud2VuZGVyCisvLyAgIGlyZ2VuZHdpZSB6dSBoZWlsZW4sIHNvIHdpcmQgaGllciBkaWUgSGVpbHVuZyBpbiBMUC9NUCBlaW5nZXRyYWdlbi4KKy8vICAgRGFzIGZ1bmt0aW9uaWVydCBhdWNoIGJlaSBPYmpla3RlbiwgZGllIG51ciBoZWlsZW4sIGFsc28gc29uc3QKKy8vICAgbmljaHRzIG1pdCBLYW1wZiB6dSB0dW4gaGFiZW4uCisvLyAgIEltIEx1cGluZW50YWwgei5CLiBnaWJ0IGVzIFBmaXJzaWNoZSwgZGllIGJlaW0gRXNzZW4gNUxQIGhlaWxlbi4gRGEKKy8vICAga2FubiBtYW4gZGFubiAnU2V0UHJvcChQX0NPTUJBVENNRFMsIChbImlzcyBwZmlyc2ljaCI6KFtDX0hFQUw6NV0pXSkpJworLy8gICBlaW50cmFnZW4uCisvLyBFcyBzaW5kIGF1Y2ggbWVocmVyZSBLb21tYW5kb3MgbW9lZ2xpY2gsIHouQi4gYmVpIE9iamVrdGVuLCBkaWUgc293b2hsCisvLyBoZWlsZW4gYWxzIGF1Y2ggS2FtcGZ3aXJrdW5nIGhhYmVuLgorCitQX0FSTU9VUlMKKy8vIExpc3RlIGRlciBnZXRyYWdlbmVuIFNjaHV0emJla2xlaWR1bmdlbi4KKworUF9IQU5EUworLy8gMy1lbGVtLiBBcnJheQorLy8gMS4gRWxlbS46IFN0cmluZyBtaXQgZGVyIE1lbGR1bmcsIHdlbm4gb2huZSBXYWZmZW4gYW5nZWdyaWZmZW4gd2lyZC4KKy8vIDIuIEVsZW0uOiBXZWFwb25jbGFzcywgd2VubiBvaG5lIFdhZmZlbiBhbmdlZ3JpZmZlbiB3aXJkLgorLy8gMy4gRWxlbS46IEFuZ3JpZmZzLXR5cCwgZGVmYXVsdCBpc3QgRFRfQkxVREdFT04KKworUF9SRVNJU1RBTkNFCisvLyBBcnJheSBtaXQgQW5ncmlmZnNhcnRlbiwgZ2VnZW4gZGllIGRhcyBMZWJld2VzZW4gdGVpbHdlaXNlCisvLyByZXNpc3RlbnQgaXN0LgorCitQX1ZVTE5FUkFCSUxJVFkKKy8vIEFycmF5IG1pdCBBbmdyaWZmc2FydGVuLCBnZWdlbiBkaWUgZGFzIExlYmV3ZXNlbiBlbXBmaW5kbGljaAorLy8gaXN0LgorCitQX1JFU0lTVEFOQ0VfU1RSRU5HVEhTCisvLyBNYXBwaW5nIG1pdCBTY2hhZGVuc2Zha3RvcmVuIG1pbnVzIDEuMCBmdWVyIGplZGVuIFNjaGFkZW5zdHlwCisvLyAtMC41IGVudHNwcmljaHQgYWxzbyBSZXNpc3RhbmNlIChGYWt0b3IgMC41KQorLy8gMS4wIGVudHNwcmljaHQgYWxzbyBWdWxuZXJhYmlsaXR5IChGYWt0b3IgMi4wKQorCitQX01BWF9IQU5EUworLy8gQW56YWhsIGRlciBIYWVuZGUsIGRpZSBlaW4gV2VzZW4gaGF0LgorCitQX1VTRURfSEFORFMKKy8vIEFuemFobCBkZXIgSGFlbmRlIGluIEJlbnV0enR1bmcKKworUF9BQklMSVRJRVMKKy8vICoqKiBPQlNPTEVUISAqKioKKy8vIFNpZWhlIFBfTkVXU0tJTExTLgorCitQX0VORU1ZX0RBTUFHRQorLy8gR2lidCBlaW5lIEtvcGllIGRlcyBNYXBwaW5ncyB6dXJ1ZWNrLCBpbiBkZW0gdmVybWVya3Qgd2lyZCwgd2VyCisvLyBkaWVzZW0gTGViZXdlc2VuIHdlbGNoZW4gU2NoYWRlbiB6dWdlZnVlZ3QgaGF0LgorCitQX05QQworLy8gR2VzZXR6dCBiZWkgTW9uc3Rlcm4uCisKK1BfV0lNUFkKKy8vIE51bWVyaXNjaGVyIFdlcnQuIERhcyBXZXNlbiBmbGllaHQsIHdlbm4gZGllIExlYmVuc3B1bmt0ZQorLy8gdW50ZXIgZGllc2VuIFdlcnQgc2lua2VuLgorCitQX0JSSUVGCisvLyBJc3QgZ2VzZXR6dCwgd2VubiBkZXIgU3BpZWxlciBudXIgZGllIEt1cnpiZXNjaHJlaWJ1bmcgc2VoZW4gd2lsbC4KKworUF9IRUFMCisvLyBOdW1lcmlzY2hlciBXZXJ0LCBkZXIgYmVpbSBWZXJ6ZWhyIGRpZXNlcyBPYmpla3RlcyB6dSBkZW4KKy8vIExlYmVuc3B1bmt0ZW4gaGluenVnZXphZWhsdCB3aXJkLiAoa2FubiBhdWNoIG5lZ2F0aXYgc2VpbikKKy8vIERlciBXZXJ0IHNvbGx0ZSB6d2lzY2hlbiArNCB1bmQgLTQgbGllZ2VuIHVuZCBiZWkgbGVpY2h0ZW4KKy8vIE1vbnN0ZXJuIDAgc2Vpbi4KKworUF9ESVNBQkxFX0FUVEFDSworLy8gRGFzIExlYmV3ZXNlbiBrYW5uIG5pY2h0IGFuZ3JlaWZlbi4KKworUF9ESUVfTVNHCisvLyBTdHJpbmcgbWl0IGRlciBNZWxkdW5nLCBkaWUgYXVzZ2VnZWJlbiB3aXJkLCB3ZW5uIGRhcyBXZXNlbiBzdGlyYnQuCisvLyBpc3QgZGllIFByb3BlcnR5IG5pY2h0IGdlc2V0enQsIHNvIG5laG1lICIgZmFlbGx0IHRvdCB6dSBCb2Rlbi5cbiIuCisKK1BfS0lMTFMKKy8vIEFuemFobCBkZXIgU3BpZWxlciwgZGllIGRpZXNlciBTcGllbGVyIHNjaG9uIGdldG9ldGV0IGhhdC4KKy8vIFVuZXJsYXVidGUgTWFuaXB1bGF0aW9uIGlzdCBlaW4gU0NIV0VSRVMgVkVSR0VIRU4gZ2VnZW4KKy8vIGRpZSBNdWRyZWdsZW4uCisKK1BfTUFJTEFERFIKKy8vIEVNYWlsYWRyZXNzZSBkZXMgU3BpZWxlcnMuCisKK1BfQ0FMTEVEX0ZST01fSVAKKy8vIExldHp0ZSBJUC1BZHIsIHZvbiBkZXIgYXVzIHNpY2ggZGVyIFNwaWVsZXIgZWluZ2Vsb2dndCBoYXQuCisKK1BfQ1VSUkVOVERJUgorLy8gTW9tZW50YW5lcyBWZXJ6ZWljaG5pcyBpbiBkZW0gZGVyIFNwaWVsZXIgaXN0LiAobnVyIGZ1ZXIKKy8vIE1hZ2llciB2b24gQmVsYW5nKQorCitQX0FVVE9MT0FECisvLyBNYXBwaW5nIG1pdCBkZXIgTWVuZ2UgZGVyIEF1dG9sb2Fkb2JqZWt0ZSB1bmQgZGVuIHp1Z2VoLgorLy8gUHJvcGVydGllcy4KKworUF9GUk9HCisvLyBHZXNldHp0LCB3ZW5uIGRlciBTcGllbGVyIGVpbiBGcm9zY2ggaXN0LgorCitQX0lOVklTCisvLyBEaWUgUHJvcGVydHkgUF9JTlZJUyBkaWVudCBkYXp1LCBPYmpla3RlIChpbnNiZXNvbmRlcmUgTWFnaWVyKSBhbHMKKy8vIHVuc2ljaHRiYXIgenUga2VubnplaWNobmVuLiBNYW4gc29sbHRlIGRyZWkgQXJ0ZW4gdm9uIHVuc2ljaHRiYXJlbgorLy8gT2JqZWt0ZW4gdW50ZXJzY2hlaWRlbjoKKy8vIC0gR2VnZW5zdGFlbmRlCisvLyAgIEdlZ2Vuc3RhZW5kZSBtYWNodCBtYW4gdW5zaWNodGJhciwgaW5kZW0gbWFuIGluIGlobmVuIGRpZSBQcm9wZXJ0eQorLy8gICBQX1NIT1JUIGF1ZiAwIHNldHp0OyB3aWxsIG1hbiBlaW4gT2JqZWt0IHVuc2ljaHRiYXIgbWFjaGVuLCBvaG5lCisvLyAgIHNlaW5lIEt1cnpiZXNjaHJlaWJ1bmcgenUgYWVuZGVybiwga2FubiBtYW4gYWJlciBhdWNoIFBfSU5WSVMgYXVmCisvLyAgIGVpbmVuIFdlcnQgdW5nbGVpY2ggMCBzZXR6ZW4uCisvLyAtIE5QQ3MKKy8vICAgTlBDcyBtYWNodCBtYW4gZWJlbmZhbGxzIHVuc2ljaHRiYXIsIGluZGVtIG1hbiBpbiBpaG5lbiBkaWUgUHJvcGVydHkKKy8vICAgUF9TSE9SVCBhdWYgMCBzZXR6dC4gR0dmLiBrYW5uIG1hbiBhdWNoIG5vY2ggZGllIFByb3BlcnR5IFBfSU5WSVMgYXVmCisvLyAgIDEgc2V0emVuLgorLy8gICBEZXIgVW50ZXJzY2hpZWQ6IEJlaSBnZXNldHp0ZW0gUF9JTlZJUyB3aXJkIGFscyBOYW1lICdKZW1hbmQnIHZlci0KKy8vICAgd2VuZGV0LCBhbnNvbnN0ZW4gZGVyIG5vcm1hbGUgTmFtZSBkZXMgTlBDcy4KKy8vIC0gU3BpZWxlciAvIE1hZ2llcgorLy8gICBTcGllbGVyIHVuZCBNYWdpZXIgbWFjaHQgbWFuIHVuc2ljaHRiYXIsIGluZGVtIG1hbiBpaG5lbiBkaWUgUHJvcGVydHkKKy8vICAgUF9JTlZJUyBhdWYgZWluZW4gV2VydCA8PjAgc2V0enQuCisvLyAgIFNwaWVsZXIgZHVlcmZlbiBuaWNodCB1bnNpY2h0YmFyIGdlbWFjaHQgd2VyZGVuIQkJCSAhCisvLyAgIFdpcmQgZWluIE1hZ2llciB1bnNpY2h0YmFyIGdlbWFjaHQsIG11c3MgbWFuIGlobSBkaWUgUHJvcGVydHkJICEKKy8vICAgUF9JTlZJUyBhdWYgZGVuIFdlcnQgc2V0emVuLCBkZW4gZGllIFByb3BlcnR5IFBfQUdFIHp1IGRpZXNlbQkgIQorLy8gICBaZWl0cHVua3QgaGF0IChrZWluZSBGX1FVRVJZX01FVEhPRCAhKS4JCQkJICEKKy8vICAgU2V0enQgbWFuIGRpZSBQcm9wZXJ0eSBhdWYgZGVuIFdlcnQgMSwgc28gZXJoYWVsdCBlaW4gU3BpZWxlciwKKy8vICAgd2VubiBlciBkZW4gZW50c3AuIE1hZ2llciBmaW5nZXJ0LCBkaWUgQXVzZ2FiZTogQWx0ZXI6IDAwOjAwOjAyLAorLy8gICB3YXMgZ2VuYXVzbyB2ZXJyYWV0ZXJpc2NoIGlzdCwgd2llIGVpbiBBbHRlciwgZGFzcyBiZWkgZWluZW0KKy8vICAgc2NoZWluYmFyIG5pY2h0IGVpbmdlbG9nZ3RlbiBNYWdpZXIgaW1tZXIgd2VpdGVyIGhvY2hnZXphZWhsdAorLy8gICB3aXJkLgorCitQX0dIT1NUCisvLyBHZXNldHp0LCB3ZW5uIGRlciBTcGllbGVyIHRvdCBpc3QuCisKK1BfRVhUUkFfTE9PSworLy8gU3RyaW5nLCBkZXIgZWluZW4genVzYWV0emxpY2hlbiBUZXh0IGluIGRlciBsb25nKCktQmVzY2hyZWlidW5nCisvLyBlaW5lcyBTcGllbGVycyBlcnpldWd0LgorCitQX0dVSUxECisvLyBHaWxkZSwgZGVyIGRlciBTcGllbGVyIGFuZ2Vob2VydC4KKy8vIERlciBOYW1lIGRlciBHaWxkZSBpc3QgaGllciBhbHMgU3RyaW5nIGRlZmluaWVydC4gQmVpIFNwaWVsZXJuCisvLyBpc3QgZGVyIFdlcnQgZGllc2VyIFByb3BlcnR5IG5pZW1hbHMgMCAoRGVmYXVsdG1hZXNzaWcgZ2Vob2VydAorLy8gZWluIFNwaWVsZXIgZGVyIEFiZW50ZXVyZXJnaWxkZSBhbikuCisKK1BfTEVWRUwKKy8vIFNwaWVsZXItTGV2ZWwgKCE9IE1hZ2llcmxldmVsKQorCitQX1FVRVNUUworLy8gTGlzdGUgZGVyIGdlbG9lc3RlbiBRdWVzdHMuCisKK1BfQ0FQX05BTUUKKy8vIE5hbWUgZGVzIFNwaWVsZXJzLCBkZXIgZGVrbGluaWVydCB1bmQgYXVzZ2VnZW4gd2lyZC4KKy8vIE5PVCBZRVQgSU1QTEVNRU5URUQuCisKK1BfVFRZCisvLyBOYW1lIGRlciBUZXJtaW5hbGVtdWxhdGlvbiwgZGllIGRlciBTcGllbGVyIG51dHp0LgorLy8gTk9UIFlFVCBJTVBMRU1FTlRFRC4KKworUF9TSE9XX0VYSVRTCisvLyBHZXNldHp0LCB3ZW5uIGRlciBTcGllbGVyIGRpZSBvZmZlbnNpY2h0bGljaGVuIEF1c2dhZW5nZQorLy8gaW1tZXIgYXV0b21hdGlzY2ggc2VoZW4gd2lsbC4KKworUF9DQU5fRU1PVEUKKy8vIEdlc2V0enQsIHdlbm4gZGVyIFNwaWVsZXIgJ2Vtb3Rlbicga2Fubi4KKworUF9FQVJNVUZGUworLy8gU2hvdXRzIHZvbiBNYWdpZXJuIG1pdCBMZXZlbCA8IGVhcm11ZmZzIHdlcmRlbiBhYmdlYmxvY2t0CisvLyAoTnVyIGZ1ZXIgTWFnaWVyKQorCitQX1dBTlRTX1RPX0xFQVJOCisvLyBHZXNldHp0LCB3ZW5uIGRlciBNYWdpZXIgZGllIEZpbGVuYW1lbiBzZWhlbiB3aWxsLgorLy8gKE51ciBmdWVyIE1hZ2llcikuIFdpcmQgZGllc2UgUHJvcGVydHkgYXVmIDAgZ2VzZXR6dCwgZ2VoZW4gYXVjaAorLy8gZWluaWdlIGFuZGVyZSBEaW5nZSBuaWNodCBtZWhyIC0gdmVyZm9sZ2UgekIuIEVpZ2VudGxpY2ggc29sbHRlbgorLy8gZGFubiBhdWNoIGRpZSBNYWdpZXJiZWZlaGxlIHdpZSAiZ290byIgdXN3IHVudGVyYnVuZGVuIHdlcmRlbiAtCisvLyBkYXMga29tbXQgdmllbGxlaWNodCBub2NoLgorCitQX1RFU1RQTEFZRVIKKy8vIEdlc2V0enQsIHdlbm4gZGVyIFNwaWVsZXIgbmljaHQgaW4gZGVyIEJlc3Rlbmxpc3RlIGF1ZnRhdWNoZW4gc29sbC4KKworUF9BR0UKKy8vIEFsdGVyIGRlcyBTcGllbGVycyBpbiBIZWFydC1CZWF0cyAoMSBIQiA9PSAyIFNla3VuZGVuKQorCitQX0JMSU5ECisvLyBUUlVFLCB3ZW5uIGRlciBTcGllbGVyIG5pY2h0cyBzZWhlbiBrYW5uLgorCitQX01BUlJJRUQKKy8vIEVudGhhZWx0IGVpbmVuIFN0cmluZyBtaXQgZGVyIHVpZCBkZXMgUGFydG5lcnMKKy8vIChzb2Zlcm4gdm9yaGFuZGVuKQorCitQX1dDCisvLyBOdW1lcmlzY2hlciBXZXJ0IGZ1ZXIgZGllIFN0YWVya2UgZGVyIFdhZmZlLgorCitQX0RBTV9UWVBFCisvLyBTdHJpbmcgbWl0IGRlciBBcnQgZGVyIFZlcmxldHp1bmcuCisKK1BfV0VBUE9OX1RZUEUKKy8vIEFydCBkZXIgV2FmZmUKKworUF9XSUVMREVECisvLyBGbGFnIG9iIGRpZSBXYWZmZSBnZXp1ZWNrdCBpc3QuCisKK1BfQUMKKy8vIE51bWVyaXNjaGVyIFdlcnQgZnVlciBkaWUgQWJ3ZWhyc3RhZXJrZSBkZXIgUnVlc3R1bmcuCisKK1BfQVJNT1VSX1RZUEUKKy8vIFN0cmluZyBmdWVyIEFydCBkZXIgUnVlc3R1bmc7IHdlbGNoZXIgS29lcnBlcnRlaWwgd2lyZAorLy8gZ2VzY2h1ZXR6dD8KKworUF9XT1JOCisvLyBGbGFnLCBvYiBkaWUgUnVlc3R1bmcgaW0gTW9tZW50IGdldHJhZ2VuIHdpcmQuIEZhbGxzIGphLAorLy8gZW50aGFlbHQgZGllIFByb3BlcnR5IGRhcyBUcmFlZ2Vyb2JqZWt0LgorCitQX0FNT1VOVAorLy8gQW56YWhsIGRlciBPYmpla3RlLCBmdWVyIGRpZSBkYXMgT2JqZWt0IHN0ZWh0LgorCitQX1ZBTFVFX1BFUl9VTklUCisvLyBXZXJ0IGluIEdvbGRzdHVlY2tlbiBwcm8gVW50ZXJlaW5oZWl0LgorCitQX1dFSUdIVF9QRVJfVU5JVAorLy8gR2V3aWNodCBpbiBHcmFtbSBwcm8gVW50ZXJlaW5oZWl0LgorCitQX0ZVRUwKKy8vIE51bWVyaXNjaGVyIFdlcnQgZnVlciBkaWUgWmVpdGRhdWVyLCBkaWUgZGllIExpY2h0cXVlbGxlIG5vY2gKKy8vIGxldWNodGVuIGthbm4uCisKK1BfTElHSFRERVNDCisvLyBTdHJpbmcgbWl0IGRlciBCZXplaWNobnVuZyBkZXMgTGV1Y2h0dm9yZ2FuZ3MsIGRlbiBkaWUgTGljaHQtCisvLyBxdWVsbGUgYXVzZnVlaHJ0IChsZXVjaHRlbmQsIGJyZW5uZW5kLCBnbHVlaGVuZCAuLi4pCisKK1BfRE9fREVTVFJVQ1QKKy8vIEZsYWcsIG9iIHNpY2ggZGllIExpY2h0cXVlbGxlIGFtIEVuZGUgZGVyIExldWNodHplaXQgc2VsYnN0CisvLyB6ZXJzdG9lcnQuIChPZGVyIHNvZ2FyIG1pdCBTdHJpbmcgZnVlciBkaWUgTWVsZHVuZywgZGllIGJlaQorLy8gZGVyIFplcnN0b2VydW5nIGFuZ2VnZWJlbiB3aXJkPykKKworUF9MSUdIVEVECisvLyBGbGFnLCBvYiBkaWUgTGljaHRxdWVsbGUgaW4gQmV0cmllYiBpc3QuCisKK1BfQ0hBVFMKKy8vIEFsaXN0IG1pdCBTdHJpbmdzLCBkaWUgZGFzIE1vbnN0ZXIgenVmYWVsbGlnIGF1c2dpYnQuCisKK1BfQ0hBVF9DSEFOQ0UKKy8vIFdhaHJzY2hlaW5saWNoa2VpdCwgbWl0IGRlciBkaWUgQ2hhdHMgYXVzZ2VnZWJlbiB3ZXJkZW4uCisKK1BfQUNIQVRTCisvLyBDaGF0cywgZGllIGRhcyBNb25zdGVyIGltIEthbXBmIGF1c2dpYnQuCisKK1BfQUNIQVRfQ0hBTkNFCisvLyBXYWhyc2NoZWlubGljaGtlaXQgZnVlciBkaWUgQXR0YWNrLUNoYXQtQXVzZ2FiZS4KKworUF9CT0RZCisvLyBOdW1lcmlzY2hlciBXZXJ0IGZ1ZXIgZGllIEFid2VocnN0YWVya2UgZGVzIGJsYW5rZW4gS29lcnBlcnMKKy8vIGRlcyBXZXNlbnMuCisKK1BfSEIKKy8vIERpZXNlIFByb3BlcnR5IHdpcmQgZ2VzZXR6dCwgd2VubiBkYXMgTW9uc3RlciBpbW1lciBlaW5lbgorLy8gaGVhcnRfYmVhdCBoYWJlbiBzb2xsLiAoVk9SU0lDSFQsIG51ciB3ZW5uIGVzIFdJUktMSUNIIHNlaW4gbXVzcyEpCisKK1BfQUdHUkVTU0lWRQorLy8gR2VzZXR6dCwgd2VubiBkYXMgV2VzZW4gdm9uIHNpY2ggYXVzIEFuZ3JpZmZlIHN0YXJ0ZXQuCisKK1BfTk9DT1JQU0UKKy8vIEdlc2V0enQsIHdlbm4gaW0gVG9kZXNmYWxsIGtlaW4gTGVpY2huYW0gZXJ6ZXVndCB3ZXJkZW4gc29sbC4KKworUF9SRUpFQ1QKKy8vIEVpbiBBcnJheSBhdXMgMiBFbGVtZW50ZW4sIGRhcyBiZXN0aW1tdCwgZGFzIGRlciBucGMgbWl0IERpbmdlbgorLy8gdHVlbiBzb2xsLCBkaWUgaWhtIGdlZ2ViZW4gd2VyZGVuLgorLy8gRGVmYXVsdCwgZGVyIG5wYyBiZWhhZWx0IGRpZSBEaW5nZSBlaW5mYWNoLgorLy8gV2VubiBnZXNldHp0OgorLy8gMS5FbGVtZW50OiBBcnQgZGVyIEhhbmRsdW5nLiAoYXVzIDxtb3ZpbmcuaD4pCisvLwlSRUpFQ1RfR0lWRTogRGVyIE5QQyBnaWJ0IGRhcyBPYmpla3QgenVydWVjay4KKy8vCVJFSkVDVF9EUk9QOiBEZXIgTlBDIGxhZXNzdCBkYXMgT2JqZWt0IGZhbGxlbi4KKy8vCVJFSkVDVF9LRUVQOiBEZXIgTlBDIGJlaGFlbHQgZGFzIE9iamVrdCBkb2NoLgorLy8gMi5BcnJheWVsZW1lbnQ6IE1lbGR1bmcsIG1pdCBkZXIgZGVyIE5QQyBkaWUgSGFuZGx1bmcga29tbWVudGllcnQuCisKK1BfRU5URVJNU0cKKy8vIEFycmF5IG1pdCB6d2VpIE1lbGR1bmdlbiwgZWluZSBmdWVyIGRlbiBSYXVtLCBkZW4gZGVyIFNwaWVsZXIKKy8vIHZlcmxhZXNzdCwgdW5kIGVpbmUgZnVlciBkZW4gVHJhbnNwb3J0ZXIsIGluIGRlbiBlciBnZWh0LgorCitQX0xFQVZFTVNHCisvLyBBcnJheSBtaXQgendlaSBNZWxkdW5nZW4sIGVpbmUgZnVlciBkZW4gVHJhbnNwb3J0ZXIsIGRlbiBlciB2ZXJsYWVzc3QsCisvLyB1bmQgZWluZSBmdWVyIGRlbiBSYXVtIGluIGRlbiBlciBrb21tdC4KKworUF9MRUFWRUZBSUwKKy8vIE1lbGR1bmcgYW4gZWluIFdlc2VuLCB3ZW5uIGVzIGF1c3NlcmhhbGIgZGVyIEFubGVnZXplaXRlbiBkZW4gVHJhbnNwb3J0ZXIKKy8vIHZlcmxhc3NlbiB3aWxsLiBJc3QgZGllIFByb3AuIGVpbiBBcnJheSwgc28gd2lyZCBkYXMgZXJzdGUgRWxlbWVudCBhbHMKKy8vIG1lbGR1bmcgYW4gZGFzIFdlc2VuLCBkYXMgendlaXRlIGFscyBNZWxkdW5nIGFuIGRpZSBNaXRzcGllbGVyIGltCisvLyBUcmFuc3BvcnRlciBnZXNjaGlja3QuCisKK1BfRU5URVJGQUlMCisvLyBNZWxkdW5nIGFuIGVpbiBXZXNlbiwgd2VubiBkZW4gdm9sbGVuIFRyYW5zcG9ydGVyIGJldHJldGVuIHdpbGwuCisvLyBJc3QgZGllIFByb3AuIGVpbiBBcnJheSwgc28gd2lyZCBkYXMgZXJzdGUgRWxlbWVudCBhbHMKKy8vIG1lbGR1bmcgYW4gZGFzIFdlc2VuLCBkYXMgendlaXRlIGFscyBNZWxkdW5nIGFuIGRpZSBNaXRzcGllbGVyIGltCisvLyBSYXVtIGdlc2NoaWNrdC4KKworUF9BUlJJVkVNU0cKKy8vIE1lbGR1bmcsIHdlbm4gZGVyIFRyYW5zcG9ydGVyIGFubGVndC4KKworUF9ERVBBUlRNU0cKKy8vIE1lbGR1bmcsIG1pdCBkZXIgZWluIFRyYW5zcG9ydGVyIGFibGVndC4KKworUF9FTlRFUkNNRFMKKy8vIEJlZmVobHNsaXN0ZSwgZGllIHp1bSBCZXRyZXRlbiBkZXMgVHJhbnNwb3J0ZXJzIGZ1ZWhydC4KKworUF9MRUFWRUNNRFMKKy8vIEJlZmVobHNsaXN0ZSwgZGllIHp1bSBWZXJsYXNzZW4gZGVzIFRyYW5zcG9ydGVycyBmdWVocnQuCisKK1BfTUFYX1BBU1NFTkdFUlMKKy8vIE51bWVyaXNjaGVyIFdlcnQgZnVlciBkaWUgbWF4aW1hbGUgQW56YWhsIHZvbiBXZXNlbiBpbiBkZW0gVHJhbnNwb3J0ZXIuCisvLyAwIGJlZGV1dGV0IHVuYmVzY2hhZW5rdGUgU3BpZWxlcnphaGwuCisKK1BfQVJUSUNMRQorLy8gR2lidCBhbiwgb2IgaW4gZGVyIEJlc2NocmVpYnVuZyBlaW4gQXJ0aWtlbCBhdXNnZWdlYmVuIHdlcmRlbiBzb2xsCisvLyBvZGVyIG5pY2h0LgorCitQX0xBU1RfQ09NTUFORF9FTlYKKy8vIERlciBSYXVtLCBpbiBkZW0gZGFzIGxldHp0ZSBLb21tYW5kbyBlaW5nZWdlYmVuIHd1cmRlLgorCitQX05FVERFQURfSU5GTworLy8gSGllciBrYW5uIGVpbiBSYXVtIEluZm9ybWF0aW9uZW4gaW4gZWluZW0gU3BpZWxlciB6d2lzY2hlbnNwZWljaGVybiwgd2VubgorLy8gZGllc2VyIGluIGRlbiBOZXR6dG90ZW5yYXVtIGdlbW92ZWQgd2lyZC4KKworUF9GT0xMT1dfU0lMRU5UCisvLyBXZW5uIGRpZXNlIFByb3BlcnR5IDEgaXN0LCB3aXJkIGRlciBNT1ZFIHZvbSB2ZXJmb2xnZSBTaWxlbnQgYXVzZ2UtCisvLyBmdWVocnQuCisKK1BfU1RBUlRfSE9NRQorLy8gUmF1bSwgaW4gZGVtIGRlciBTcGllbGVyIG5hY2ggZGVtIEVpbmxvZ2dlbiBsYW5kZW4gc29sbAorCitQX0NBUlJJRURfVkFMVUUKKy8vIEVudHNjaGFlZGlndW5nLCBkaWUgZGVyIFNwaWVsZXIgYmVpbSBFaW5sb2dnZW4gZXJoYWVsdC4KKworUF9QUk9NUFQKKy8vIERhcyBQcm9tcHQgKE51ciBmdWVyIE1hZ2llcikuCisKK1BfQ0FORUNITworLy8gWmVpZ3QgYW4sIG9iIGRlciBTZWhlciAiZWNobyIgYmVudXR6ZW4ga2FubiBvZGVyIG5pY2h0LgorCitQX1BPVElPTlJPT01TCisvLyBBbGlzdCBtaXQgZGVuIE51bW1lcm4gZGVyIFJhZXVtZSwgaW4gZGVuZW4gZGVyIFNwaWVsZXIgbm9jaCBaYXViZXItCisvLyB0cmFlbmtlIGZpbmRlbiBrYW5uLgorCitQX1FQCisvLyBBbnphaGwgZGVyIFF1ZXN0cHVua3RlLCBkaWUgZWluIFNwaWVsZXIgaGF0LgorCitQX0VORU1ZX0RFQVRIX1NFUVVFTkNFCisvLyBXZW5uIG1hbiBqZW1hbmRlbiB0b2V0ZXQsIHdpcmQgZGllc2VzIGluIHNlaW5lIFRvZGVzc2VxdWVueiBlaW5nZWZ1ZWd0LgorCitQX0NMT05FUgorLy8gRW50aGFlbHQgZWluZW4gU3RyaW5nIG1pdCBkZW0gTmFtZW4gZGVzamVuaWdlbiwgZGVyIGRhcyBPYmpla3QgZ2VjbG9uZWQgaGF0LgorCitQX1JBQ0VfREVTQ1JJUFRJT04KKy8vIEJlc2NocmVpYnVuZyBkZXIgVm9yL05hY2h0ZWlsZSBlaW5lciBSYXNzZS4KKworUF9ET09SX0lORk9TCisvLyBIYXQgd2FzIG1pdCBkZW4gVHVlcmVuIHp1IHR1biAtPiBNdXNzIFJvY2h1cyBtYWwgZG9rdW1lbnRpZXJlbgorCitQX0FUVFJJQlVURVNfT0ZGU0VUUworLy8gTWFwcGluZyBtaXQgT2Zmc2V0cywgZGllIHp1IGRlbiBBdHRyaWJ1dGVuIGFkZGllcnQgd2VyZGVuIChrb2VubmVuIGF1Y2gKKy8vIG5lZ2F0aXYgc2VpbikgLSB6QiBSYXNzZW5ib25pLgorCitQX0RFQURTCisvLyBBbnphaGwgZGVyIFRvZGUgZGVzIFNwaWVsZXJzIHNlaXQgRWluZnVlaHJ1bmcgZGllc2VyIFByb3BlcnR5IChpcmdlbmR3YW5uCisvLyBpbSBEZXplbWJlciA5NCkKKworUF9MQVNUX0xPR0lOCisvLyBaZWl0cHVua3QgZGVzIGxldHplbiBMb2dpbnMKKworUF9MQVNUX0xPR09VVAorLy8gWmVpdHB1bmt0IGRlcyBsZXR6ZW4gTG9nb3V0cworCitQX1NFQ09ORAorLy8gU3BpZWxlciBpc3QgWndlaXRpZWEKKworUF9TQ1JFRU5TSVpFCisvLyBCaWxkc2NoaXJtZ3JvZXNzZSBpbiBaZWlsZW4gKGZ1ZXIgTW9yZSkKKworUF9GTEFHUworLy8gRmxhZ3MgZGVzIFNwaWVsZXJzCisKK1BfQ0FOX0ZMQUdTCisvLyBGbGFncywgb2IgU3BpZWxlciBlY2hvZW4vZW1vdGVuIGthbm4KKworUF9ORUVERURfUVAKKy8vIEFQcywgZGllIG1hbiBmdWVyIGRlbiBTZWhlcnN0YXR1cyBicmF1Y2h0CisKK1BfSU5URVJNVUQKKy8vIE9ic29sZXQ/CisKK1BfQlVGRkVSCisvLyBFbnRoYWVsdCBLb2JvbGQtTmFjaHJpY2h0ZW4KKworUF9DTEFTUworLy8gRW50aGFlbHQgZGllIEtsYXNzZSAoZGVmaW5pZXJ0IGluIGNsYXNzLmgpLCB6dSBkZXIgZWluIE9iamVrdCBnZWhvZXJ0LgorLy8gU29sbHRlIG51ciBtaXQgQWRkQ2xhc3MoKSBnZXNldHp0IHdlcmRlbi4KKy8vIERhcyBzZXR6ZW4gaXN0IG51ciBub2V0aWcsIHdlbm4gZGllIEtsYXNzZSBuaWNodCBzY2hvbiBhdXMgZGVuIElkcworLy8gb2RlciAoYmVpIExlYmV3ZXNlbikgZGVyIFJhc3NlIGVyc2ljaHRsaWNoIGlzdC4KKworUF9DT05URU5UUworLy8gKioqIE9CU09MRVQhICoqKgorCitQX0tJTExFUgorLy8gPz8/CisKK1BfTVVSREVSX01TRworLy8gV2VsY2hlIE1lbGR1bmcgc29sbCBhdWYgZGVtIE1vZXJkZXItS2FuYWwgZXJzY2hlaW5lbj8KKworUF9LSUxMX01TRworLy8gTWVsZHVuZyBhdWYgZGVtIFRvZGVza2FuYWwsIHdlbm4gamVtYW5kIHZvbiB1bnMgZ2VvdGV0ZXQgd2lyZAorCitQX0NPUlBTRQorLy8gV2VsY2hlbiBDb3Jwc2UgaGludGVybGFzc2VuIHdpcj8KKworUF9XSU1QWV9ESVJFQ1RJT04KKy8vIEZsdWNodHJpY2h0dW5nCisKK1BfUE9JU09OCisvLyBXaWUgc3Rhcmsgd2lyIHZlcmdpZnRldCBzaW5kICgwLTExKQorCitQX1JBQ0VfREVTQ1JJUFRJT04KKy8vIFJhc3NlbmJlc2NocmVpYnVuZywgZGllIG1hbiBiZWkgZGVyIFdhaGwgZGVyIFJhc3NlIGFicnVmZW4ga2FubgorCitQX0RFRkFVTFRfSU5GTworLy8gTlBDLUluZm8tU3lzdGVtOiBEZWZhdWx0LUFudHdvcnQgYXVmIGR1bW1lIEZyYWdlbgorCitQX1BVUlNVRVJTCisvLyBFbnRoYWVsdCBWZXJmb2xnZXIgLSBuaWNodCB2b24gSGFuZCBtYW5pcHVsaWVyZW4hCisKK1BfSFBfSE9PS1MKKy8vIFdlbGNoZSBPYmpla3RlIHNvbGxlbiBiZWkgSFAtQWVuZGVydW5nZW4gYmVuYWNocmljaHRpZ3Qgd2VyZGVuPworCitQX0NVUlNFRAorLy8gVmVyZmx1Y2h0ZSBXYWZmZW4vUnVlc3R1bmdlbiBrYW5uIG1hbiBuaWNodCBhdXN6aWVoZW4vd2Vnc3RlY2tlbgorCitQX1NQRUxMUworLy8gTlBDLVNwZWxscworCitQX1NQRUxMUkFURQorLy8gTlBDLVNwZWxscmF0ZSAoaW4gJSkKKworUF9JTkZPUk1NRQorLy8gSW5mb3JtaWVyZW4gdWViZXIgU3BpZWxlciwgZGllIGlucyBNdWQga29tbWVuL2F1cyBkZW0gTXVkIGdlaGVuPworCitQX1dBSVRGT1IKKy8vIERpZSBFcndhcnRlLUxpc3RlCisKK1BfSEFVU19FUkxBVUJUCisvLyBIaWVyIGRhcmYgZ2ViYXV0IHdlcmRlbgorCitQX1NIT1JUX0NXRAorLy8gLnJlYWRtZSBiZWkgY2QgYXVzZ2ViZW4gb2RlciBuaWNodAorCitQX1BBUkEKKy8vIE51bW1lciBkZXIgUGFyYWxsZWx3ZWx0IGluIGRlciBlaW4gU3BpZWxlciBpc3QuCisKK1BfTE9HX0lORk8KKy8vIFdlbm4gZGllc2UgUHJvcGVydHkgZ2VzZXR6dCBpc3Qgd2lyZCBqZWRlIEZyYWdlLCBkaWUgZWluCisvLyBNb25zdGVyIG5pY2h0IGJlYW50d29ydGVuIGthbm4sIGltIFJlcG9ydC1GaWxlIGRlcworLy8genVzdGFlbmRpZ2VuIE1hZ2llcnMgZ2Vsb2dndC4KKworUF9DT01CQVRDTURTCisvLyBCZWZlaGxlLCBkaWUgbWFuIG1pdCBTcGV6aWFsd2FmZmVuIGF1c2Z1ZWhyZW4ga2FubiB1bmQgZ2VuYXVlcmUKKy8vIEluZm9ybWF0aW9uZW4gaGllcnp1LgorCitQX0RFQUYKKy8vIERlciBTcGllbGVyIGlzdCB0YXViLiBGYWxscyBoaWVyIGVpbiBTdHJpbmcgc3RlaHQsIHdpcmQgZGllc2VyIGJlaQorLy8gInRlaWxlIC4uLiBtaXQiIGFuIGRlbiBNaXR0ZWlsZW5kZW4gYXVzZ2VnZWJlbiwgYW5zb25zdGVuIGtvbW10IG51cgorLy8gIlNvdW5kc28gaXN0IGxlaWRlciBnZXJhZGUgdGF1Yi5cbiIKKworUF9BVFRBQ0tfQlVTWQorLy8gS2FubiBkZXIgU3BpZWxlciBub2NoIFNwZXppYWx3YWZmZW4gKHpCIEZsYW1tZW5rdWdlbCkgZWluc2V0emVuPworCitQX1BSRUZFUkVEX0VORU1ZCisvLyBBcnJheTogMS4gRWxlbWVudDogV2FocnNjaGVpbmxpY2hrZWl0LCBkYXNzIGVpbmVyIGRlciBiZXZvcnp1Z3RlbgorLy8gRmVpbmRlIChyZXN0bGljaGUgRWxlbWVudGUpIGdlbm9tbWVuIHdpcmQuCisKK1BfSElTVE1JTgorLy8gTWluaW1hbGUgTGFlbmdlLCBkaWUgZWluZSBaZWlsZSBoYWJlbiBtdXNzLCB1bSBpbiBkaWUgSGlzdG9yeSB6dSBrb21tZW4KKworUF9TSE9XX0FMSUFTX1BST0NFU1NJTkcKKy8vIEFyYmVpdCBkZXMgUGFyc2VycyBiZW9iYWNodGVuIChkZWJ1Z2dpbmcpCisKK1BfREVGQVVMVF9OT1RJRllfRkFJTAorLy8gV2VsY2hlIEZlaGxlcm1lbGR1bmcga29tbXQsIHdlbm4ga2VpbiBPYmpla3QgZWluIG5vdGlmeV9mYWlsIG1hY2h0PworCitQX0lQX05BTUUKKy8vIFJlY2huZXJuYW1lIGRlcyBJbnRlcmFjdGl2ZXMKKworUF9BVVRIX0lORk8KKy8vIFVzZXJuYW1lIGRlcyBTcGllbGVycywgd2VubiBiZWkgaWhtIGVpbiBBVVRIRCBsYWV1ZnQKKworUF9MQVNUX0tJTExFUgorLy8gTGV0enRlciBNb2VyZGVzIGRlcyBXZXNlbnMKKworUF9DTE9ORV9NU0cKKy8vIE1lbGR1bmcsIGRpZSBiZWltIENsb25lbiBlaW5lcyBPYmogYXVzZ2VnZWdlbiB3aXJkIChudXIgTWFnaWVyKQorCitQX0NNU0cKKy8vICoqKiBPQlNPTEVUISAqKiogU2llaGUgUF9DTE9ORV9NU0cKKworUF9ERVNUUlVDVF9NU0cKKy8vIE1lbGR1bmcsIGRpZSBiZWltIERlc3RydWN0ZW4gT2JqIGF1c2dlZ2VnZW4gd2lyZCAobnVyIE1hZ2llcikKKworUF9ETVNHCisvLyAqKiogT0JTT0xFVCEgKioqIFNpZWhlIFBfREVTVFJVQ1RfTVNHCisKK1BfUkVBRF9ORVdTCisvLyBXZWxjaGUgQXJ0aWtlbCBiZXJlaXRzIGdlbGVzZW4gd3VyZGUgKGZydWVoZXI6IGluIGRlciBNUEEpCisKK1BfTEFTVF9DT05URU5UX0NIQU5HRQorLy8gV2FubiB3dXJkZSB6dW0gbGV0enRlbiBNYWwgd2FzIGlucyBPYmogZ2VzdG9wZnQgb2RlciByYXVzZ2Vub21tZW4/CisvLyBXaWNodGlnIGZ1ZXIgZGVuIFdlaWdodC1DYWNoZQorCitQX01BWF9QT0lTT04KKy8vIE1heGltYWxlIFZlcmdpZnR1bmcKKworUF9ERVNDUklQVElPTgorLy8gQmVzY2hyZWlidW5nIGRlcyBTcGllbGVycworCitQX0tFRVBfT05fU0VMTAorLy8gQmVpICJ2ZXJrYXVmZSBhbGxlcyIgd2lyZCBkYXMgT2JqZWt0IGJlaGFsdGVuLgorCitQX0RFU0NSSVBUSU9OCisvLyBCZXNjaHJlaWJ1bmcgZGVzIFNwaWVsZXJzCisKK1BfS0VFUF9PTl9TRUxMCisvLyBPYmpla3Qgc29sbCBiZWkgdmVya2F1ZmUgYWxsZXMgYmVoYWx0ZW4gd2VyZGVuCisKK1BfQ0xPQ0tNU0cKKy8vIERpZSBNZWxkdW5nIHdpcmQgenVyIHZvbGxlbiBTdHVuZGUgYXVzZ2VnZWJlbgorCitQX1NJWkUKKy8vIEdyb2Vzc2UgZGVzIExlYmV3ZXNlbnMgKGluIGNtKQorCitQX0FWRVJBR0VfU0laRQorLy8gRHVyY2hzY2huaXR0bGljaGUgR3JvZXNzZSBlaW5lcyBXZXNlbnMgZGllc2VyIFJhc3NlIChkZXJ6ZWl0IG51ciBQbGF5ZXIpCisKK1BfUEVSTV9TVFJJTkcKKy8vIEZ1ZXIgU3ByYWNoZmx1ZWNoZS4gSW4gZGVtIE9iamVrdCwgZGFzIGluIFBfUEVSTV9TVFJJTkcgdmVybWVya3QgaXN0LAorLy8gd2lyZCBiZWkgU3ByYWNoYmVmZWhsZW4gcGVybXV0YXRlX3N0cmluZyhzdHIpIGF1ZmdlcnVmZW4gdW5kIGRlcgorLy8genVydWVja2dlZ2ViZW5lIFN0cmluZyBzdGF0dCBkZXNzZW4gYXVzZ2VnZWJlbi4KKworUF9SQUNFU1RSSU5HCisvLyBHaWJ0IGVpbmUgZGVtIEdlc2NobGVjaHQgYW5nZXBhc3N0ZSBCZXNjaHJlaWJ1bmcgZGVyIFJhc3NlIHp1cnVlY2sKKy8vICgiWndlcmciIG9kZXIgIlp3ZXJnaW4iIGV0Yy4pCisKK1BfV0FURVIKKy8vIEdld2Flc3NlcnR5cC4gRXJsYWV0dWVydW5nZW4gaW4gZmlzaGluZy5oCisKK1BfRklTSAorLy8gRmlzY2hkaWNodGUuIEVybGFldXRlcnVuZ2VuIGluIGZpc2hpbmcuaAorCitQX1NDUkVFTlNJWkUKKy8vIFphaGwgZGVyIFplaWxlbiAod2llIG1pdCBkZW0gInplaWxlbiItQmVmZWhsIGVpbmdlc3RlbGx0KS4KKy8vIE51ciBpbSBTcGllbGVyb2JqZWt0IHNpbm52b2xsIDspCisKK1BfU0tJTExTCisvLyAqKiogT0JTT0xFVCEgKioqCisvLyBTaWVoZSBQX05FV1NLSUxMUy4KKworUF9WQUxJRF9HVUlMRFMKKy8vIEVudGhhZWx0IGRpZSB6dWdlbGFzc2VuZW4gR2lsZGVuIHVuZCBpc3QgbnVyIGZ1ZXIgZGVuIEdpbGRlbm1hc3RlcgorLy8gdm9uIEJlZGV1dHVuZy4KKworUF9HVUlMRF9TS0lMTFMKKy8vIEdpbGRlbnByb3BlcnR5CisvLyBFbnRoYWVsdCBlaW4gTWFwcGluZyBtaXQgYWxsZW4gU3BydWVjaGVuIHVuZCBGYWVoaWdrZWl0ZW4gZGVyIEdpbGRlLgorLy8gV2lyZCBtaXQgQWRkU2tpbGwoKS9BZGRTcGVsbCgpIG1vZGlmaXppZXJ0LgorCitQX0dVSUxEX1JFU1RSSUNUSU9OUworLy8gR2lsZGVucHJvcGVydHkKKy8vIEVudGhhZWx0IGVpbiBNYXBwaW5nIG1pdCBkZW4gRWludHJpdHRiZXNjaHJhZW5rdW5nZW4gZWluZXIgR2lsZGUuCisKK1BfR1VJTERfREVGQVVMVF9TUEVMTEJPT0sKKy8vIEdpbGRlbnByb3BlcnR5CisvLyBEZXIgTmFtZSBkZXMgU3BlbGxib29rcywgZGFzIHZvbiBkZXIgR2lsZGUgc3RhbmRhcmRtYWVzc2lnIHZlcndlbmRldAorLy8gd2lyZCAoa2FubiBiZWkgU3BlbGxzIG1pdCBTSV9TUEVMTEJPT0sgdWViZXJzY2hyaWViZW4gd2VyZGVuKS4KKworUF9HVUlMRF9NQUxFX1RJVExFUworLy8gR2lsZGVucHJvcGVydHkKKy8vIEVpbiBNYXBwaW5nIG1pdCBkZW4gU3R1ZmVuYmV6ZWljaG51bmdlbiBmdWVyIG1hZW5ubGljaGUgR2lsZGVubWl0Z2xpZWRlci4KKy8vIEFscyBLZXkgZGllbnQgZGVyIEdpbGRlbmxldmVsLgorCitQX0dVSUxEX0ZFTUFMRV9USVRMRVMKKy8vIEdpbGRlbnByb3BlcnR5CisvLyBFaW4gTWFwcGluZyBtaXQgZGVuIFN0dWZlbmJlemVpY2hudW5nZW4gZnVlciB3ZWlibGljaGUgR2lsZGVubWl0Z2xpZWRlci4KKy8vIEFscyBLZXkgZGllbnQgZGVyIEdpbGRlbmxldmVsLgorCitQX0dVSUxEX0xFVkVMUworLy8gR2lsZGVucHJvcGVydHkKKy8vIEVpbiBNYXBwaW5nIG1pdCBkZW4gU3R1ZmVuYmVzY2hyYWVua3VuZ2VuIGZ1ZXIgZGllIEdpbGRlbmxldmVsLgorLy8gQWxzIEtleSBkaWVudCBkZXIgamV3ZWlsaWdlIEdpbGRlbmxldmVsLgorCitQX1NCX1NQRUxMUworLy8gU3BlbGxib29rcHJvcGVydHkKKy8vIEhpZXIgc2luZCBzYWVtdGxpY2hlIFNwZWxscyBkZXMgU3BlbGxib29rcyB2ZXJtZXJrdCAod2lyZCBtaXQgQWRkU3BlbGwoKQorLy8gdmVyYWVuZGVydCkuCisKK1BfR0xPQkFMX1NLSUxMUFJPUFMKKy8vIEdpbGRlbi0gdW5kIFNwZWxsYm9va3Byb3BlcnR5CisvLyBFaWdlbnNjaGFmdGVuLCBkaWUgQUxMRSBTcGVsbHMgZWluZXMgU3BlbGxib29rcyBiencuIEFMTEUgU2tpbGxzIHVuZAorLy8gU3BlbGxzIGVpbmVyIEdpbGRlIGhhYmVuIHNvbGxlbi4KKworUF9HVUlMRF9MRVZFTAorLy8gR2lsZGVubGV2ZWwgZGVzIFNwaWVsZXJzIChuaWNodCB1bmJlZGluZ3QgaWRlbnRpc2NoIG1pdCBkZW0gU3BpZWxlcmxldmVsKQorCitQX0dVSUxEX1RJVExFCisvLyBHaWxkZW50aXRlbCwgZGVyIGRlbSBHaWxkZW5sZXZlbCBkZXMgU3BpZWxlcnMgZW50c3ByaWNodC4gV2lyZCBudXIKKy8vIGFuZ2V6ZWlndCwgd2VubiBQX1RJVExFPTAgaXN0LgorCitQX0dVSUxEX1JBVElORworLy8gRWluc3R1ZnVuZyBkZXMgU3BpZWxlcnMgaW4gZGVyIEdpbGRlICh6d2lzY2hlbiAwIHVuZCAxMDAwMCkuCisvLyBXaWUgc2ljaCBkaWUgRWluc3R1ZnVuZyB6dXNhbW1lbnNldHp0LCBpc3QgU2FjaGUgZGVyIGpld2VpbGlnZW4gR2lsZGUuCisKK1BfTkVXU0tJTExTCisvLyBIaWVyIHNpbmQgc2FlbXRsaWNoZSBTa2lsbHMgdW5kIFNwZWxscyB2ZXJtZXJrdCwgZGllIGRlciBTcGllbGVyIGtlbm50LgorCitQX05FWFRfU1BFTExfVElNRQorLy8gV2FubiBrYW5uIGRhcyBuYWVjaHN0ZSBNYWwgZ2V6YXViZXJ0IHdlcmRlbj8KKworUF9ISVRfRlVOQworLy8gRW50aGFlbHQgZGFzIE9iamVrdCwgZGFzIGVpbmUgSGl0RnVuYygpIGRlZmluaWVydAorLy8gKGZ1ZXIgV2FmZmVuKQorCitQX1dJRUxEX0ZVTkMKKy8vIEVudGhhZWx0IGRhcyBPYmpla3QsIGRhcyBlaW5lIFdpZWxkRnVuYygpIGRlZmluaWVydAorLy8gKGZ1ZXIgV2FmZmVuKQorCitQX1VOV0lFTERfRlVOQworLy8gRW50aGFlbHQgZGFzIE9iamVrdCwgZGFzIGVpbmUgVW53aWVsZEZ1bmMoKSBkZWZpbmllcnQKKy8vIChmdWVyIFdhZmZlbikKKworUF9ERUZFTkRfRlVOQworLy8gRW50aGFlbHQgZGFzIE9iamVrdCwgZGFzIGVpbmUgRGVmZW5kRnVuYygpIGRlZmluaWVydAorLy8gKGZ1ZXIgUnVlc3R1bmdlbikKKworUF9XRUFSX0ZVTkMKKy8vIEVudGhhZWx0IGRhcyBPYmpla3QsIGRhcyBlaW5lIFdlYXJGdW5jKCkgZGVmaW5pZXJ0CisvLyAoZnVlciBSdWVzdHVuZ2VuKQorCitQX1JFTU9WRV9GVU5DCisvLyBFbnRoYWVsdCBkYXMgT2JqZWt0LCBkYXMgZWluZSBSZW1vdmVGdW5jKCkgZGVmaW5pZXJ0CisvLyAoZnVlciBSdWVzdHVuZ2VuKQorCitQX0xFUAorLy8gTGV2ZWxwdW5rdGUgZWluZXMgU3BpZWxlcnMKKy8vIE5JQ0hUIFZPTiBIQU5EIFNFVFpFTiEhIQorCitQX0xFUF9NQUxVUworLy8gTWFsdXMgYXVmIGRpZSBMZXZlbHB1bmt0ZQorLy8gTklDSFQgVk9OIEhBTkQgU0VUWkVOISEhCisKK1BfT1JJR19OQU1FCisvLyBJbiBlaW5lciBMZWljaGUgZGVyIE5hbWUgZGVzIEdlc3RvcmJlbmVuLiAobmFtZShSQVcpKQorCitQX05PX0dMT0JBTF9BVFRBQ0sKKy8vIEZhbGxzIGRpZXNlIFByb3BlcnRpZSBpbiBlaW5lbSBOUEMgZ2VzZXR6dCBpc3QsIHdpcmQgZGllc2VyIGJlaSBlaW5lbQorLy8gInRvZXRlIGFsbGUiIG5pY2h0IG1pdCBhbmdlZ3JpZmZlbgorLy8gKGRhcyBpc3QgekIuIGJlaSBCZWdsZWl0TlBDcyBnYW56IG51ZXR6bGljaCkKKworUF9EQU1BR0VECisvLyBHcmFkIGRlciBCZXNjaGFlZGlndW5nIGVpbmVyIFdhZmZlL1J1ZXN0dW5nLgorLy8gRGllIFByb3BlcnRpZSBzb2xsdGUgc28gZ2VzZXR6dCBzZWluLCBkYXNzIFBfREFNQUdFRCArIGFrdHVlbGxlcyBQX1dDL0FDCisvLyBkaWUgdXJzcHJ1ZW5nbGljaGUgUF9XQy9BQyBlcmdpYnQKKworUF9FRkZFQ1RJVkVfV0MKKy8vIERpZSBkdXJjaHNjaG5pdHRsaWNoZSBXaXJrdW5nIGVpbmVyIFdhZmZlLCBiYXNpZXJlbmQgYXVmIFBfV0MgdW5kCisvLyBlaW5lciBnZ2YuIHZvcmhhbmRlbmVuIEhpdEZ1bmMoKS4KKworUF9FRkZFQ1RJVkVfQUMKKy8vIERpZSBkdXJjaHNjaG5pdHRsaWNoZSBXaXJrdW5nIGVpbmVyIFJ1ZXN0dW5nLCBiYXNpZXJlbmQgYXVmIFBfQUMKKy8vIHVuZCBlaW5lciBnZ2YuIHZvcmhhbmRlbmVuIERlZmVuZEZ1bmMoKS4KKworUF9IT01FUEFHRQorLy8gRGllIEhvbWVwYWdlIGVpbmVzIFNwaWVsZXJzIChtaXQgZGVtIEJlZmVobCAndXJsJyB6dSBzZXR6ZW4pLgorCitQX1RQT1JUX0NPU1RfSU4KKy8vIEluIGVpbmVtIFJhdW0gbWl0IFNlaGVydG9yOiBLb3N0ZW5hbnRlaWwsIHVtIHNpY2ggaW4gZGVuIFJhdW0genUKKy8vIHRlbGVwb3J0aWVyZW4KKworUF9UUE9SVF9DT1NUX09VVAorLy8gSW4gZWluZW0gUmF1bSBtaXQgU2VoZXJ0b3I6IEtvc3RlbmFudGVpbCwgc2ljaCBhdXMgZGVtIFJhdW0gaGVyYXVzCisvLyB6dSB0ZWxlcG9ydGllcmVuCisKK1BfSElERV9FWElUUworLy8gSXN0IGRpZXNlIFByb3BlcnR5IGluIGVpbmVtIFJhdW0gYXVmIGVpbmVuIFdlcnQgdW5nbGVpY2ggMCwgZ2VzZXR6dCwKKy8vIHdlcmRlbiBlaW5lbSBTcGllbGVyIGZ1ZXIgZGllc2VuIFJhdW0ga2VpbmUgQXVzZ2FlbmdlIGFuZ2V6ZWlndC4KKworUF9UTVBfQVRUQUNLX0hPT0sKKy8vIE1pbmRlc3RlbnMgMy1lbGVtZW50aWdlcyBBcnJheSAoe3plaXRwdW5rdCwgb2JqZWt0LCBmdW5rdGlvbiwgLi4ufSkuCisvLyBEaWUgRnVua3Rpb24gd2lyZCBpbSAnb2JqZWt0JyBtaXQgZGVtIEZlaW5kIGRlcyBMZWJld2VzZW5zIGFscyBQYXJhbWV0ZXIKKy8vIHp1IEJlZ2lubiB2b24gQXR0YWNrKCkgKGRlcyBMZWJld2VzZW5zKSBhdWZnZXJ1ZmVuLCB3ZW5uIGRlciAnemVpdHB1bmt0JworLy8gbm9jaCBuaWNodCB1ZWJlcnNjaHJpdHRlbiBpc3QuIFdlbm4gZGllIEZ1bmt0aW9uIDAgenVydWVja2dpYnQsIHdpcmQKKy8vIEF0dGFjaygpIGFiZ2Vicm9jaGVuLiBVZWJlciBvcHRpb25hbGUgQXJyYXllbGVtZW50ZSBrb2VubmVuIGRlciBGdW5rdGlvbgorLy8gd2VpdGVyZSBQYXJhbWV0ZXIgdWViZXJnZWJlbiB3ZXJkZW4uCisKK1BfVE1QX0RFRkVORF9IT09LCisvLyBNaW5kZXN0ZW5zIDMtZWxlbWVudGlnZXMgQXJyYXkgKHt6ZWl0cHVua3QsIG9iamVrdCwgZnVua3Rpb24sIC4uLn0pLgorLy8gRGllIEZ1bmt0aW9uIHdpcmQgaW0gJ29iamVrdCcgbWl0IGRlbiBnbGVpY2hlbiBQYXJhbWV0ZXJuIHdpZSBEZWZlbmQoKQorLy8genUgQmVnaW5uIHZvbiBEZWZlbmQoKSAoZGVzIExlYmV3ZXNlbnMpIGF1ZmdlcnVmZW4sIHdlbm4gZGVyICd6ZWl0cHVua3QnCisvLyBub2NoIG5pY2h0IHVlYmVyc2Nocml0dGVuIGlzdC4gV2VubiBkaWUgRnVua3Rpb24gMCB6dXJ1ZWNrZ2lidCwgd2lyZAorLy8gRGVmZW5kKCkgYWJnZWJyb2NoZW4sIGFuc29uc3RlbiB3aXJkIGFscyBSdWVja2dhYmUgZWluIDMtZWxlbWVudGlnZXMKKy8vIEFycmF5ICh7c2NoYWRlbiwgc2NoYWRlbnN0eXBlbiwgc3BlbGx9KSBlcndhcnRldCwgZGllIGFuc3RlbGxlIGRlcgorLy8gRGVmZW5kKCkgdWViZXJnZWJlbmVuIFdlcnRlIHZlcndlbmRldCB3ZXJkZW4uIFVlYmVyIG9wdGlvbmFsZSBBcnJheS0KKy8vIGVsZW1lbnRlIGtvZW5uZW4gZGVyIEZ1bmt0aW9uIHdlaXRlcmUgUGFyYW1ldGVyIHVlYmVyZ2ViZW4gd2VyZGVuLgorCitQX1RNUF9ESUVfSE9PSworLy8gTWluZGVzdGVucyAzLWVsZW1lbnRpZ2VzIEFycmF5ICh7emVpdHB1bmt0LCBvYmpla3QsIGZ1bmt0aW9uLCAuLi59KS4KKy8vIERpZSBGdW5rdGlvbiB3aXJkIGltICdvYmpla3QnIG1pdCBkZW0gZ2xlaWNoZW4gUGFyYW1ldGVyIHdpZSBkaWUoKQorLy8genUgQmVnaW5uIHZvbiBkaWUoKSAoZGVzIExlYmV3ZXNlbnMpIGF1ZmdlcnVmZW4sIHdlbm4gZGVyICd6ZWl0cHVua3QnCisvLyBub2NoIG5pY2h0IHVlYmVyc2Nocml0dGVuIGlzdC4gV2VubiBkaWUgRnVua3Rpb24gMSB6dXJ1ZWNrZ2lidCwgd2lyZAorLy8gZGllKCkgYWJnZWJyb2NoZW4uIFVlYmVyIG9wdGlvbmFsZSBBcnJheWVsZW1lbnRlIGtvZW5uZW4gZGVyIEZ1bmt0aW9uCisvLyB3ZWl0ZXJlIFBhcmFtZXRlciB1ZWJlcmdlYmVuIHdlcmRlbi4KKworUF9EQU1fREVTQworLy8gQmVzY2hyZWlidW5nIGJlc2NoYWVkaWd0ZXIgV2FmZmVuL1J1ZXN0dW5nZW4uCisKK1BfTEFTVF9EQU1UWVBFUworLy8gU2NoYWRlbnN0eXBlbiwgbWl0IGRlbmVuIGRhcyBsZXR6dGUgZG9fZGFtYWdlKCkgdm9uIERlZmVuZCgpIGF1cworLy8gYXVzZ2Vsb2VzdCB3dXJkZSAoa2FubiB2b24gTGVpY2hlbiBhYmdlZnJhZ3Qgd2VyZGVuKS4KKy8vIEVudHdlZGVyIGVpbiBBcnJheSBtaXQgZGVuIFNjaGFkZW5zdHlwZW4gb2RlciAwLgorCitQX1RFQU0KKy8vIFRlYW1vYmpla3QsIGZhbGxzIFNwaWVsZXIgaW4gZWluZW0gVGVhbSBpc3QuCisKK1BfVEVBTV9ORVdNRU1CRVIKKy8vIFNwaWVsZXIgbW9lY2h0ZSBpbnMgVGVhbSB2b24gZGllc2VtIE9iamVrdCBhdWZnZW5vbW1lbiB3ZXJkZW4uCisKK1BfVEVBTV9BVFRBQ0tfQ01ECisvLyBBbmdyaWZmc2JlZmVobCBkZXMgU3BpZWxlcnMsIG5pY2h0IHNldHpiYXIuCisKK1BfVEVBTV9BVVRPRk9MTE9XCisvLyBGb2xnZXd1bnNjaCBkZXMgU3BpZWxlcnMsIG5pY2h0IHNldHpiYXIuCisKK1BfVEVBTV9XQU5URURfUk9XCisvLyBHZXd1ZW5zY2h0ZSBSZWloZSBkZXMgU3BpZWxlcnMgKHZvbiAxIGJpcyBNQVhfVEVBTVJPV1MpCisKK1BfVEVBTV9XSU1QWV9ST1cKKy8vIEZsdWNodHJlaWhlIGRlcyBTcGllbGVycyAodm9uIDEgYmlzIE1BWF9URUFNUk9XUykKKy8vIFdlbm4gZGllIEZsdWNodHJlaWhlIDw9MSBpc3QgaXN0IGRpZSBGbHVjaHQgaW4gZWluZSBoaW50ZXJlIFJlaWhlCisvLyBkZWFrdGl2aWVydC4KKworUF9URUFNX0xFQURFUgorLy8gVGVhbW9iamVrdCwgZmFsbHMgU3BpZWxlciBBbmZ1ZWhyZXIgZWluZXMgVGVhbXMgaXN0LgorCitQX1RFQU1fQVNTT0NfTUVNQkVSUworLy8gQXJyYXkgbWl0IGRlbiB6dWdlb3JkbmV0ZW4gTlBDcyBkZXMgU3BpZWxlcnMgYnp3LgorLy8gZGVyIFNwaWVsZXIsIGRlbSBkaWVzZXIgTlBDIHp1Z2VvcmRuZXQgaXN0LgorLy8gWnVnZW9yZG5ldGUgTlBDcyBzaW5kIGF1dG9tYXRpc2NoIGltIFRlYW0gZGVzIFNwaWVsZXJzLgorLy8gRGVyIFp1Z3JpZmYgYXVmIGRpZXNlIFByb3BlcnR5IHNvbGx0ZSB1ZWJlciBBc3NvY01lbWJlcigpCisvLyBiencuIERlQXNzb2NNZW1iZXIoKSBlcmZvbGdlbi4KKworUF9URUFNX0NPTE9SUworLy8gR3Jlbnp3ZXJ0ZSBmdWVyIGZhcmJpZ2UgQW56ZWlnZSBpbSBUZWFtaW5mby4KKy8vIEFycmF5IG1pdCA0IFdlcnRlbiAoeyBscF9yb3QsIGxwX2dlbGIsIHNwX3JvdCwgc3BfZ2VsYiB9KQpkaWZmIC0tZ2l0IGEvZG9jLy5yZWFkbWUgYi9kb2MvLnJlYWRtZQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4xOWQzYWJmCi0tLSAvZGV2L251bGwKKysrIGIvZG9jLy5yZWFkbWUKQEAgLTAsMCArMSwyNSBAQAorRG9rdW1lbnRhdGlvbiB2b24gQmVmZWhsZW4gdW5kIFRoZW1lbiBpbm5lcmhhbGIgZGVzIFNwaWVsczoKKyAqIGhlbHAvICAtIGFsbGdlbWVpbmUgVGhlbWVuLCBkaWUgQUxMRSBiZXRyZWZmZW4KKyAqIHBjbWQvICAtIGRpZSBCZWZlaGxlLCB1ZWJlciBkaWUgbWFuIHNjaG9uIGFscyBlaW5mYWNoZXIgU3BpZWxlciB2ZXJmdWVndAorICogc2NtZC8gIC0gU2VoZXJiZWZlaGxlIHVuZCBIaWxmZW4genVtIEhhdXNiYXUKKyAqIG1jbWQvICAtIGhpZXIgc2luZCBkaWUgTWFnaWVyYmVmZWhsZSBiZXNjaHJpZWJlbgorICogd2l6LyAgIC0gYWxsZ2VtZWluZSBUaGVtZW4gZnVlciBNYWdpZXIKKyAqIGcuWFlaLyAtIEhpbGZlc2VpdGVuLCBkaWUgenVyIEdpbGRlIFhZWiBnZWhvZXJlbgorCitVZWJlcnNpY2h0IHVlYmVyIE9iamVrdGUgdW5kIEZ1bmt0aW9uZW4gTXVkTGliCisgKiBlZnVuLyAgIC0gRnVua3Rpb25lbiwgZGllIGRlciBHYW1lRHJpdmVyIHp1ciBWZXJmdWVndW5nIHN0ZWxsdAorICogbGZ1bi8gICAtIEZ1bmt0aW9uZW4sIGRpZSBkaWUgT2JqZWt0ZSBkZXIgTXVkTGliIHp1ciBWZXJmdWVndW5nIHN0ZWxsZW4KKyAqIG1hc3Rlci8gLSBGdW5rdGlvbmVuLCBkaWUgZGFzIE1hc3Rlcm9iamVjdCB6dXIgVmVyZnVlZ3VuZyBzdGVsbHQKKworICogc3RkLyAgICAtIERpZSBPYmpla3RlIGRlcyBCYXNpcy1NdWRMaWIKKyAqIG9iai8gICAgLSBFaW5pZ2UgaGlsZnJlaWNoZSBadXNhdHpvYmpla3RlCisKKyAqIHByb3BzLyAgLSBEaWUgUHJvcGVydGllcworCisgQWxsZ2VtZWluZXMKKyAqIGJlaXNwaWVsZS8gLSBlaW5pZ2UgaGlsZnJlaWNoZSBCZWlzcGllbGUgZnVlciBkZW4gU3RhcnQgaW5zIE1hZ2llcmxlYmVuCisKK0JlaSBBZW5kZXJ1bmdlbiBiaXR0ZSBHbG9pbnNvbiBCZXNjaGVpZCBnZWJlbiBvZGVyIGVpbmUgTWFpbCBhbgorRG9rdUBNb3JnZW5HcmF1ZW4gc2NoaWNrZW4uIEVpbmUgZ2VuYXVlcmUgVWViZXJzaWNodCB1ZWJlciBkYXMKK0hpbGZzdmVyemVpY2huaXMgZmluZGVzdCBEdSBpbiBkZXIgRGF0ZWkgL2RvYy9SRUFETUUuCisKZGlmZiAtLWdpdCBhL2RvYy8uc3lub255bSBiL2RvYy8uc3lub255bQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4zMmQzZTdkCi0tLSAvZGV2L251bGwKKysrIGIvZG9jLy5zeW5vbnltCkBAIC0wLDAgKzEgQEAKK2xwYyBMUEMKZGlmZiAtLWdpdCBhL2RvYy9LVVJTL0NPTU1FTlRTIGIvZG9jL0tVUlMvQ09NTUVOVFMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNGVmOWNhOQotLS0gL2Rldi9udWxsCisrKyBiL2RvYy9LVVJTL0NPTU1FTlRTCkBAIC0wLDAgKzEsNzUgQEAKKwlCRU1FUktVTkdFTiBaVU0gVEhFTUEgU1BJRUxWRVJERVJCRVIKKwktLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworCUVpbmUga29uc2VxdWVudGUgVmVyd2VuZHVuZyBkZXIgV29ydGUgTW9lcmRlciwgVmVyYnJlY2hlciwKKwlvLmFlLiB2ZXJrZW5udCBkZW4gd2FocmVuIENoYXJha3RlcjoKKwlFcyBzaW5kIGVpbmZhY2ggbnVyIFNwaWVsdmVyZGVyYmVyLCB1bmQgc29sbHRlbiBhdWNoIAorCWRlbWVudHNwcmVjaGVuZCBiZWhhbmRlbHQgd2VyZGVuLgorCisJSW0gTW9tZW50IHdpcmQgbm9jaCBuaWNodCBnZXNwaWVsdC4KKwlFcmdvIGdpYnQgZXMgbm9jaCBrZWluZSBTcGllbHZlcmRlcmJlci4KKworCVdlbm4gZXMgZGVubiB3ZWxjaGUgZ2lidCwgd2llIGdlaHQgbWFuIG1pdCBpaG5lbiB1bSA/CisJLQlNYW4gc3BpZWx0IG5pY2h0IG1laHIgbWl0IElobmVuLgorCS0JTWFuIG5pbW10IGlobmVuIGRlbiBTcGFzcywgc29kYXNzIHNpZSB2b24gc2VsYmVyCisJCWF1ZmhvZXJlbiBtaXR6dXNwaWVsZW4sIGJ6dy4gYW5kZXJlbiBkYXMgU3BpZWwKKwkJenUgdmVyZGVyYmVuLgorCisJVm9yc2NobGFlZ2UoISkgZnVlciBNYXNzbmFobWVuOgorCQorCS0JQmVsZWdlbiBtaXQgRmx1ZWNoZW4uCisKKwkoekIgRXJrYWVsdHVuZ2VuLCBvZGVyIHplaXR3ZWlsaWdlciBWZXJsdXN0IGRlciBGYWVoaWdrZWl0LAorCVdhZmZlbiB6dSB0cmFnZW4sIFNjaGxlY2h0ZXMgR2V3aXNzZW4sIGRhc3MgbWFuIGltbWVyIHdpZWRlcgorCWRhcmFuIGVyaW5uZXJ0IHdpcmQsIHdhcyBtYW4gYm9lc2VzIGdldGFuIGhhdC4gZXRjLikKKwlXZXIgaGF0IHdlaXRlcmUgSWRlZW4gPz8KKworCVZvcnRlaWxlOgorCisJCSsJRGllIEJlc3RyYWZ1bmcgZXJmb2xndCBpbm5lcmhhbGIgZGVzIFNwaWVsZXMuCisJCSsJRHVyY2ggZGllIERhdWVyIGthbm4gZGllIFN0cmFmZSBmZWluIGRvc2llcnQKKwkJCXdlcmRlbi4KKworCU5hY2h0ZWlsOiAKKworCQkrCU1hZ2llciBzaW5kIGF1ZiBkaWVzZSBXZWlzZSBzY2h3ZXIgenUKKwkJCWJlc3RyYWZlbi4KKworCisJLQlHZWxkIG9kZXIgWFAgd2VnbmVobWVuLgorCisJLQlIZXJhYnN0dWZ1bmcuIE51ciBpbSBOT1RGQUxMCisKKwktCUF1c3NzY2hsdXNzIHZvbSBTcGllbC4gTnVyIGltIEFFVVNTRVJTVEVOIE5PVEZBTEwKKworCisJV2VyIGVpbiBTcGllbHZlcmRlcmJlciBpc3QsIGVudHNjaGVpZGV0IGltIGFsbGdlbWVpbmVuCisJZGllIEdlbWVpbnNjaGFmdCBkZXIgU3BpZWxlbmRlbi4gRGVzaGFsYiBkYXJmIGVzIGtlaW5lCisJZmF0YWxlbiBFaW5ncmlmZmUgaW4gZGFzIFNwaWVsIGR1cmNoIGRpZSBFbnRzY2hlaWR1bmcgCisJZWluemVsbmVyIFNwaWVsZXIgZ2ViZW4hCisKKwlCRU1FUktVTkdFTiBaVU0gVEhFTUEgRkxFSVNTIFZPTiBNQUdJRVJOCisJLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCisJV2VubiBlaW4gTWFnaWVyIHNlbHRlbiBpbSBTcGllbCBpc3QsIGhlaXNzdCBkYXMgbmljaHQsCisJZGFzcyBlciBzaWNoLCB3ZW5uIGVyIGVpbm1hbCBkYSBpc3QsIHVtIHNvIHN0YWVya2VyCisJYmVtZXJrYmFyIG1hY2hlbiBtdXNzLgorCisKKwlCRU1FUktVTkdFTiBaVSBHRU5BVUVSRU4gUkVHRUxOCisJLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCisJTWFuIHNvbGx0ZSBzaWNoIG5pY2h0IGFuIGlyZ2VuZHdlbGNoZW4gWmFobGVuICh3aXpfbGV2ZWxzKSwKKwlWZXJvcmRudW5nZW4sIEdlc2NoYWVmdHNvcmRudWduZW4gZXRjLiBmZXN0aGFsdGVuLCBzb25kZXJuIHNpY2gKKwlpbW1lciB2b3IgQXVnZW4gaGFsdGVuLCBkYXNzIGVzIHNpY2ggaW0gZWluIFNwaWVsIGhhbmRlbHQuCisJRXMgaGFiZW4gc2ljaCBMZXV0ZSB6dXNhbW1lbmdlZnVuZGVuLCB1bSBtaXRlaW5hbmRlciBTcGFzcyB6dQorCWhhYmVuLiBEaWVzZXMgU3BpZWwgaXN0IGtlaW5lIHNvIGtvbXBsZXhlIEdlc2VsbHNjaGFmdCB3aWUgZGllCisJcmVhbGU7IGRlc2hhbGIgc29sbHRlIGVzIGF1Y2gga2VpbmVyIHNvIGtvbXBsZXhlbiBSZWdlbG4KKwliZWR1ZXJmZW4uCisKKwlPbHBwLCBTaGVyaWZmIGRlcyBNb3JnZW5HcmF1ZW5zCisJUnVtYXRhLCBNdWRBZG0gZGVzIE1vcmdlbkdyYXVlbnMKKworCVAuUy46CisJCUtvbW1lbnRhcmUgdW5kIHdlaXRlcmUgVm9yc2NobGFlZ2Ugc2luZCBoZXJ6bGljaAorCQl3aWxsa29tbWVuLgpkaWZmIC0tZ2l0IGEvZG9jL0tVUlMvTFBDLUtVUlMvQ29udGVudHMgYi9kb2MvS1VSUy9MUEMtS1VSUy9Db250ZW50cwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4wZGQ0ZWZiCi0tLSAvZGV2L251bGwKKysrIGIvZG9jL0tVUlMvTFBDLUtVUlMvQ29udGVudHMKQEAgLTAsMCArMSwxMyBAQAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBMUEMgQmFzaWNzCisgICAgICAgICAgICAgICAgICAgICAgV3JpdHRlbiBieSBEZXNjYXJ0ZXMgb2YgQm9yZworICAgICAgICAgICAgICAgICAgICAgICAgICAgIDIzIGFwcmlsIDE5OTMKKworSW50cm9kdWN0aW9uCitDaGFwdGVyIDE6IEludHJvZHVjdGlvbiB0byB0aGUgQ29kaW5nIEVudmlyb25tZW50CitDaGFwdGVyIDI6IFRoZSBMUEMgUHJvZ3JhbQorQ2hhcHRlciAzOiBMUEMgRGF0YSBUeXBlcworQ2hhcHRlciA0OiBGdW5jdGlvbnMKK0NoYXB0ZXIgNTogVGhlIEJhc2ljcyBvZiBJbmhlcml0YW5jZQorQ2hhcHRlciA2OiBWYXJpYWJsZSBIYW5kbGluZworQ2hhcHRlciA3OiBGbG93IENvbnRyb2wKK0NoYXB0ZXIgODogVGhlIERhdGEgVHlwZSBPYmplY3QKZGlmZiAtLWdpdCBhL2RvYy9LVVJTL0xQQy1LVVJTL0ludHJvZHVjdGlvbiBiL2RvYy9LVVJTL0xQQy1LVVJTL0ludHJvZHVjdGlvbgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4yZTNjN2ZmCi0tLSAvZGV2L251bGwKKysrIGIvZG9jL0tVUlMvTFBDLUtVUlMvSW50cm9kdWN0aW9uCkBAIC0wLDAgKzEsMTA2IEBACisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIExQQyBCYXNpY3MKKyAgICAgICAgICAgICAgICAgICAgIFdyaXR0ZW4gYnkgRGVzY2FydGVzIG9mIEJvcmcKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAyMyBhcHJpbCAxOTkzCisgCisgCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgSU5UUk9EVUNUSU9OCisgICAgICAgICAgICAgICBUaGlzIG1hbnVhbCwgaG93IHRvIHVzZSBpdCwgYW5kIGl0cyB0ZXJtcworIAorSSBoYXZlIHNlZW4gYSBsb3Qgb2YgcmVxdWVzdHMgbGF0ZWx5IG9uIFVTRU5FVCBmb3IgTFBDIG1hbnVhbHMuICBJbiBhZGRpdGlvbiwKK3RoZSBpbW1vcnRhbHMgb24gbXkgbXVkIGhhdmUgYmVlbiB0ZWxsaW5nIGhvdyBnb29kIHRoZSBidWlsZGluZyBkb2N1bWVudGF0aW9uCitvZiBOaWdodG1hcmUgaXMsIGJ1dCB0aGF0IHRoZXJlIHdhcyBqdXN0IG5vIGFkZXF1YXRlIGV4cGxhbmF0aW9uIG9mIHRoZQorTFBDIHByb2dyYW1taW5nIGxhbmd1YWdlLiAgU28gSSBkZWNpZGVkIHRvIHRyeSBteSBoYW5kIGF0IHdyaXRpbmcgYSBtYW51YWwuCitTb21lIHRoaW5ncyB5b3Ugc2hvdWxkIGtlZXAgaW4gbWluZC4KK0xQQyBpcyBhIHZlcnkgZWFzeSBwcm9ncmFtbWluZyBsYW5ndWFnZSB0byBsZWFybiwgYW5kIGl0IGhhcyByZWFsCit2YWx1ZSBpbiB0aGF0IHBsYWNlIG1vc3Qgb2YgdXMga25vdyBhcyB0aGUgcmVhbCB3b3JsZC4gIEkgYmVnYW4gcGxheWluZworbXVkcyBpbiAxOTkxLCBhbmQgaW4gdGhlIHNwYWNlIG9mIGEgbW9udGggY3JlYXRlZCBhbiB1bmltcHJlc3NpdmUgYXJlYQorYW5kIG11c2ljaWFuJ3MgZ3VpbGQgb24gdGhlIG9yaWdpbmFsIEJhdGVzIENvbGxlZ2UgTVVEIGNhbGxlZCBPcmxpdGguCitBZnRlciB0aGF0LCBJIG1vdmVkIHRvIExvcyBBbmdlbGVzIGZvciBhIHllYXIgYW5kIGhhZCBubyBjb250YWN0IHdpdGgKK211ZGRpbmcgb3IgY29tcHV0ZXJzLiAgSW4gSnVuZSBvZiAxOTkyLCBJIHdhcyBiYWNrIG9uIHRoZSBpbnRlcm5ldCBhbmQKK2Egd2l6YXJkIG9mIElnb3IuICBJbiBTZXB0ZW1iZXIgb2YgMTk5MiBJIGJlZ2FuIGNvZGluZyB0aGUgTmlnaHRtYXJlCittdWRsaWIgZm9yIG91ciB1c2UsIGFuZCB0aGVuIGxhdGVyIGRlY2lkZWQgdG8gZGlzdHJpYnV0ZSBpdCBkdWUgdG8gdGhlcmUKK25vdCBiZWluZyBhbnkgbXVkbGlicyBmb3IgTXVkT1MgYXQgdGhlIHRpbWUgdGhhdCBhIHBlcnNvbiBjb3VsZCBqdXN0IHRocm93Cit1cCBhIHJ1bm5pbmcgbXVkIHdpdGggKG5vdywgdGhhdCBvZiBjb3Vyc2UgaXMgbm90IHRoZSBjYXNlIDopKS4KK1NvLCBJIGhhdmUgYmVlbiBkb2luZyBzZXJpb3VzIGNvZGluZyBmb3IgbGVzcyB0aGFuIGEgeWVhci4gIEFzIGEKK1BoaWxvc29waHkgbWFqb3IgaW4gYSB3b3JsZCBvZiBDb21wdXRlciBTY2llbmNlIG1ham9ycywgSSBqdXN0IHdhbnQgdG8KK21ha2UgY2xlYXIgdGhhdCBpdCBpcyBub3QgYXQgYWxsIHJlcXVpcmVkIHRoYXQgeW91IGhhdmUgZXZlciBkb25lIGFueXRoaW5nCit3aXRoIHlvdXIgY29tcHV0ZXIgdGhhbiBsb2cgaW50byBhIG11ZCBpbiBvcmRlciBmb3IgeW91IHRvIHJlYWxseSBjb21lCit0byB1bmRlcnN0YW5kIExQQyBjb2RpbmcuICBUaGlzIG1hbnVhbCBtYWtlcyB0aGUgZm9sbG93aW5nIGFzc3VtcHRpb25zOgorU29tZW9uZSBoYXMgdGF1Z2h0IHlvdSBiYXNpYyBVTklYIGNvbW1hbmRzIGxpa2UgbHMsIGNkLCBta2RpciwgbXYsIHJtLCBldGMuCitZb3Uga25vdyBob3cgdG8gZW50ZXIgeW91ciBtdWQncyBlZGl0b3IgYW5kIHdyaXRlIGEgZmlsZS4gIE5vIG90aGVyCithc3N1bXB0aW9ucyBhcmUgbWFkZS4gIElmIHlvdSBrbm93IEMsIHlvdSBhcmUgaGFuZGljYXBwZWQgaW4gdGhhdCBMUEMKK2xvb2tzIGEgbG90IGxpa2UgQywgYnV0IGl0IGlzIG5vdCBDLiAgWW91ciBwcmVjb25jZXB0aW9ucyBhYm91dAorbW9kdWxhciBwcm9ncmFtbWluZyBkZXZlbG9wbWVudCB3aWxsIGJlIGEgaGluZGVyZW5jZSB5b3Ugd2lsbCBoYXZlIHRvCitvdmVyY29tZS4gIElmIHlvdSBoYXZlIG5ldmVyIGhlYXJkIG9mIHRoZSBDIHByb2dyYW1taW5nIGxhbmd1YWdlIChsaWtlCittZSBpbiBNYXkgb2YgMTk5MSksIHRoZW4geW91IGFyZSBvbmx5IG1pc3NpbmcgYW4gdW5kZXJzdGFuZGluZyBvZiB0aGUKK3NpbXBsZSBjb25zdHJ1Y3RzIG9mIEMgbGlrZSB0aGUgZmxvdyBvZiBwcm9ncmFtIGV4ZWN1dGlvbiBhbmQgbG9naWNhbAorb3BlcmF0b3JzIGFuZCBzdWNoLiAgU28gYSBDIGd1cnUgaGFzIG5vIHJlYWwgYWR2YW50YWdlIG92ZXIgeW91LCBzaW5jZQord2hhdCB0aGV5IGtub3cgZnJvbSBDIHdoaWNoIGlzIGFwcGxpY2FibGUgdG8gTFBDIGlzIGVhc3kgdG8gcGljayB1cC4KK1RoZSBzdHVmZiB0aGV5IGtub3cgYWJvdXQgQyB3aGljaCBtYWtlcyB0aGVtIGEgZ3VydSBpcyBpcnJlbGV2YW50IHRvCitMUEMuCisgCitUaGUgY2hhcHRlcnMgb2YgdGhpcyBtYW51YWwgYXJlIG1lYW50IHRvIGJlIHJlYWQgaW4gb3JkZXIuICBTdGFydGluZyB3aXRoCit0aGUgaW50cm9kdWN0aW9uLCBnb2luZyBzZXF1ZW50aWFsbHkgdGhyb3VnaCB0aGUgY2hhcHRlciBudW1iZXJzIGFzCitvcmRlcmVkIGluIHRoZSBjb250ZW50cyBmaWxlLiAgRWFjaCBjaGFwdGVyIGJlZ2lucyB3aXRoIGEgcGFyYWdyYXBoIG9yCit0d28gZXhwbGFpbmluZyB3aGF0IHlvdSBzaG91bGQgaGF2ZSBjb21lIHRvIHVuZGVyc3RhbmQgYnkgdGhhdCBwb2ludAoraW4geW91ciBzdHVkaWVzLiAgQWZ0ZXIgdGhvc2UgaW50cm9kdWN0b3J5IHBhcmFncmFwaHMsIHRoZSBjaGFwdGVyIHRoZW4KK2JlZ2lucyB0byBkaXNjdXNzIGl0cyBzdWJqZWN0IG1hdHRlciBpbiBuYXVzZWF0aW5nIGRldGFpbC4gIEF0IHRoZSBlbmQKK29mIHRoZSBjaGFwdGVyIGlzIGEgYnJpZWZseSB3b3JkZWQgc3VtbWFyeSBvZiB3aGF0IHlvdSBzaG91bGQgdW5kZXJzdGFuZAorZnJvbSB0aGF0IGNoYXB0ZXIgaWYgSSBoYXZlIGJlZW4gc3VjY2Vzc2Z1bC4gIEZvbGxvd2luZyB0aGF0IG1heSBvciBtYXkKK25vdCBiZSBzb21lIHNpZGVub3RlcyByZWxldmFudCB0byB0aGUgc3ViamVjdCBhdCBoYW5kLCBidXQgbm90IG5lY2Vzc2FyeQordG8gaXRzIHVuZGVyc3RhbmRpbmcuCisgCitJZiBhdCBhbnkgdGltZSB5b3UgZ2V0IHRvIGEgY2hhcHRlciBpbnRybywgYW5kIHlvdSBoYXZlIHJlYWQgdGhlIHByZWNlZWRpbmcKK2NoYXB0ZXJzIHRob3JvdWdobHkgYW5kIHlvdSBkbyBub3QgdW5kZXJzdGFuZCB3aGF0IGl0IHNheXMgeW91IHNob3VsZAordW5kZXJzdGFuZCBieSB0aGF0IHBvaW50LCBwbGVhc2UgbWFpbCBtZSEgIENsZWFybHksIEkgaGF2ZSBmYWlsZWQgYXQgdGhhdAorcG9pbnQgYW5kIEkgbmVlZCB0byBrbm93IHdoZXJlIGl0IGlzIEkgaGF2ZSBnb25lIHdyb25nIHNvIEkgY2FuIHJldmlzZQoraXQgcHJvcGVybHkuICBTaW1pbGFybHksIGlmIHlvdSBkbyBub3QgdW5kZXJzdGFuZCB3aGF0IHRoZSBjaGFwdGVyIHN1bW1hcnkKK3NheXMgeW91IHNob3VsZCwgcGxlYXNlIG1haWwgbWUuICBJZiB5b3VyIG11bXVkIGlzIG9uIHRoZSBNdWRPUyBpbnRlcm11ZAorc3lzdGVtLCBtYWlsIGRlc2NhcnRlc0BuaWdodG1hcmUuICBPdGhlcndpc2UgbWFpbCBib3JnQGhlYnJvbi5jb25uZWN0ZWQuY29tLgorIAorU29tZSBiYXNpYyB0ZXJtcyB0aGlzIG1hbnVhbCB1c2VzOgorZHJpdmVyLQorVGhpcyBpcyB0aGUgQyBwcm9ncmFtIHdoaWNoIGlzIHRoZSBnYW1lLiAgSXQgYWNjZXB0cyBpbmNvbWluZyBzb2NrZXRzCisobGlua3MgdG8gb3RoZXIgY29tcHV0ZXJzKSwgaW50ZXJwcmV0cyBMUEMgY29kZSBkZWZpbmVkIGJ5IHRoZSBtdWRsaWIsCitrZWVwcyBtdWQgb2JqZWN0cyBpbiBtZW1vcnksIG1ha2VzIHBlcmlvZGljIGF0dGVtcHRzIHRvIGNsZWFuIHVudXNlZAorbXVkIG9iamVjdHMgZnJvbSBtZW1vcnksIG1ha2VzIHBlcmlvZGljIGNhbGxzIHRvIG9iamVjdHMsIGFuZCBzbyBvbi4KKyAKK211ZGxpYi0KK0xQQyBjb2RlIHdoaWNoIGRlZmluZXMgdGhlIHdvcmxkIGluIHdoaWNoIHlvdSBhcmUgaW4uICBUaGUgZHJpdmVyIG9mIGl0c2VsZgoraXMgbm90IGEgZ2FtZS4gIEl0IGlzIGp1c3QgYSBwcm9ncmFtIHdoaWNoIGFsbG93cyB0aGUgY3JlYXRpb24gb2YgYQorbXVsdGktdXNlciBlbnZpcm9ubWVudC4gIEluIHNvbWUgc2Vuc2UsIHRoZSBkcml2ZXIgaXMgbGlrZSBhbiBMUEMKK2NvbXBpbGVyLCBhbmQgdGhlIG11ZGxpYiBpcyBsaWtlIGEgY29tcGlsZXIncyBsaWJyYXJ5IChhIHZlcnkgbG9vc2UKK2FuYWxvZ3kpLiAgVGhlIG11ZGxpYiBkZWZpbmVzIGJhc2ljIG9iamVjdHMgd2hpY2ggd2lsbCBsaWtlbHkgYmUgdXNlZAorb3ZlciBhbmQgb3ZlciBhZ2FpbiBieSBwZW9wbGUgY3JlYXRpbmcgaW4gdGhlIG11ZCB3b3JsZC4gIEV4YW1wbGVzIG9mCitzdWNoIG9iamVjdHMgYXJlIC9zdGQvcm9vbSAob3IgL3Jvb20vcm9vbSksIC9zdGQvdXNlci5jIChvciAvb2JqL3BsYXllci5jKSwKK2FuZCBzbyBvbi4KKyAKK2FyZWEgb3IgY2FzdGxlOgorU3BlY2lmaWMgY3JlYXRvciBjb2RlZCBvYmplY3RzIHdoaWNoIG9mdGVuIHVzZSBhIGZlYXR1cmUgb2YgTFBDIGNhbGxlZAoraW5oZXJpdGFuY2UgdG8gbWFrZSB1c2Ugb2YgdGhlIHByb3BlcnRpZXMgb2YgYmFzaWMgbXVkbGliIG9iamVjdHMgYW5kCit0dXJuIHRoZW0gaW50byBzcGVjaWZpYyBvYmplY3RzIHRvIGJlIHVzZWQgYnkgcGxheWVycyBpbiB0aGUgZ2FtZQorIAorb2JqZWN0OgorYSByb29tLCBhIHdlYXBvbiwgYSBtb25zdGVyLCBhIHBsYXllciwgYSBiYWcsIGV0Yy4gIE1vcmUgaW1wb3J0YW50bHksCitldmVyeSBpbmRpdmlkdWFsIGZpbGUgd2l0aCBhIC5jIGV4dGVuc2lvbiBpcyBhbiBvYmplY3QuICBPYmplY3RzIGFyZQordXNlZCBpbiBkaWZmZXJlbnQgd2F5cy4gIE9iamVjdHMgbGlrZSAvc3RkL2xpdmluZy5jIGFyZSBpbmhlcml0ZWQgYnkKK29iamVjdHMgbGlrZSBtb25zdGVyLmMgYW5kIHVzZXIuYy4gIE90aGVycyBhcmUgY2xvbmVkLCB3aGljaCBtZWFucyBhCitkdXBsaWNhdGUgb2YgdGhhdCBjb2RlIGlzIGxvYWRlZCBpbnRvIG1lbW9yeS4gIEFuZCBzdGlsbCBvdGhlcnMgYXJlCitzaW1wbHkgbG9hZGVkIGludG8gbWVtb3J5IHRvIGJlIHJlZmVyZW5jZWQgYnkgb3RoZXIgb2JqZWN0cy4KKyAKK25hdGl2ZSBhbmQgY29tcGF0OgordGhlc2UgdHdvIHRlcm1zIHJlZmVyIHRvIHR3byBwb3B1bGFyIGZsYXZvdXJzIG9mIGRyaXZlcnMuICBOYXRpdmUgbW9kZQorbXVkbGlicyBtYWtlIHVzZSBvZiBvbiB0aGUgZGVzaWduIG9mIExQTXVkIGRyaXZlciAzLjAgYW5kIGxhdGVyLiAgWW91IG1heQoraGF2ZSBhIDMuMCBkcml2ZXIgaG93ZXZlciwgYnV0IGhhdmUgYSAyLjQuNSBzdHlsZSBtdWRsaWIuICBUaGlzIGlzIHdoYXQKK2lzIG1lYW50IGJ5IGNvbXBhdCBtb2RlLiAgTXVkbGlicyB3aGljaCBhcmUgbmF0aXZlIG1vZGUgYXJlIGFueSBmb3IKK011ZE9TLCBDRCwgYW5kIExQTXVkIG11ZGxpYnMgdGhhdAorYXJlIGxpc3RlZCBhcyBuYXRpdmUuICBDb21wYXQgbXVkbGlicyBhcmUgYW55IExQTXVkIG11ZGxpYiBiZWZvcmUgMy4wIGFuZAordGhvc2Ugd2hpY2ggYXJlIDMuKiBjb21wYXQgbXVkbGlicy4gIEkgYmVsaWV2ZSBBbXlsYWFyJ3MgaXMgY29tcGF0LgorWyBOb3QgdHJ1ZSwgQW15bGFhciBzdXBwb3J0cyBuYXRpdmUgYW5kIGNvbXBhdCBtdWRsaWJzLCBNb3JnZW5HcmF1ZW4KKyAgaXMgbmF0aXZlIC0gQm9pbmcgXQorCitHb29kIEx1Y2shCitHZW9yZ2UgUmVlc2UKKyhEZXNjYXJ0ZXMgb2YgQm9yZykKKzEyIGp1bHkgMTk5MworYm9yZ0BoZWJyb24uY29ubmVjdGVkLmNvbQpkaWZmIC0tZ2l0IGEvZG9jL0tVUlMvTFBDLUtVUlMvY2hhcHRlcjEgYi9kb2MvS1VSUy9MUEMtS1VSUy9jaGFwdGVyMQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi42ZjIzM2QwCi0tLSAvZGV2L251bGwKKysrIGIvZG9jL0tVUlMvTFBDLUtVUlMvY2hhcHRlcjEKQEAgLTAsMCArMSw5MCBAQAorICAgICAgICAgICAgICAgICAgICAgICAgICAgTFBDIEJhc2ljcworICAgICAgICAgICAgICAgICAgV3JpdHRlbiBieSBEZXNjYXJ0ZXMgb2YgQm9yZworICAgICAgICAgICAgICAgICAgZmlyc3QgZWRpdGlvbjogMjMgYXByaWwgMTk5MworICAgICAgICAgICAgICAgICAgc2Vjb25kIGVkaXRpb246IDI1IG1heSAxOTkzCisKK0NIQVBURVIgMTogSW50cm9kdWN0aW9uIHRvIHRoZSBDb2RpbmcgRW52aXJvbm1lbnQKKworMS4xIFVOSVggZmlsZSBzdHJ1Y3R1cmUKK0xQTXVkcyB1c2UgYmFzaWMgVU5JWCBjb21tYW5kcyBhbmQgaXRzIGZpbGUgc3RydWN0dXJlLiAgSWYgeW91IGtub3cKK1VOSVggY29tbWFuZHMgYWxyZWFkeSwgdGhlbiBub3RlICh3aXRoIGEgZmV3IGV4Y2VwdGlvbnMpIG9wdGlvbnMgYXJlCitub3QgYXZhaWxhYmxlIHRvIHRoZSBjb21tYW5kcy4gIExpa2UgRE9TLCBVTklYIGlzIGhlaXJhcmNoaWNhbC4gIFRoZQorcm9vdCBkaXJlY3Rvcnkgb2Ygd2hpY2ggYWxsIGRpcmVjdG9yaWVzIGFyZSBzdWItZGlyZWN0b3JpZXMgaXMgY2FsbGVkCityb290KC8pLiAgQW5kIGZyb20gdGhvc2Ugc3ViLWRpcmVjdG9yaWVzIHlvdSBtYXkgaGF2ZSBmdXJ0aGVyCitzdWItZGlyZWN0b3JpZXMuICBBIGRpcmVjdG9yeSBtYXkgYmUgcmVmZXJyZWQgdG8gaW4gdHdvIGRpZmZlcmVudCB3YXlzOgorMSkgYnkgaXRzIGZ1bGwgbmFtZSwgb3IgYWJzb2x1dGUgbmFtZSwgb3IgMikgYnkgaXRzIHJlbGF0aXZlIG5hbWUuCitBYnNvbHV0ZSBuYW1lIHJlZmVycyB0byB0aGUgZGlyZWN0b3J5J3MgZnVsbCBwYXRoIHN0YXJ0aW5nIGZyb20gLyB3aW5kaW5nCitkb3duIHRoZSBkaXJlY3RvcnkgdHJlZSB1bnRpbCB5b3UgbmFtZSB0aGUgZGlyZWN0b3J5IGluIHF1ZXN0aW9uLiAgRm9yCitleGFtcGxlOgorCisgICAgL3BsYXllcnMvZGVzY2FydGVzL29iai9tb25zdGVyCisKK3JlZmVycyB0byB0aGUgZGlyZWN0b3J5IG1vbnN0ZXIgd2hpY2ggaXMgYSBzdWItZGlyZWN0b3J5IG9mIG9iaiB3aGljaAoraXMgYSBzdWItZGlyZWN0b3J5IG9mIGRlc2NhcnRlcyB3aGljaCBpcyBhIHN1Yi1kaXJlY3Rvcnkgb2YgcGxheWVycword2hpY2ggaXMgYSBzdWRpcmVjdG9yeSBvZiAvLgorCitUaGUgcmVsYXRpdmUgbmFtZSByZWZlcnMgdG8gdGhlIG5hbWUgcmVsYXRpdmUgdG8gYW5vdGhlciBkaXJlY3RvcnkuCitUaGUgYWJvdmUgZXhhbXBsZSBpcyBjYWxsZWQgbW9uc3RlciByZWxhdGl2ZSB0byAvcGxheWVycy9kZXNjYXJ0ZXMvb2JqLAorYnV0IGl0IGlzIGFsc28gY2FsbGVkIG9iai9tb25zdGVyIHJlbGF0aXZlIHRvIC9wbGF5ZXJzL2Rlc2NhcnRlcywKK2Rlc2NhcnRlcy9vYmovbW9uc3RlciByZWxhdGl2ZSB0byAvcGxheWVycywgYW5kIGZpbmFsbHkKK3BsYXllcnMvZGVzY2FydGVzL29iai9tb25zdGVyIHJlbGF0aXZlIHRvIC8uICBZb3UgY2FuIHRlbGwgdGhlCitkaWZmZXJlbmNlIGJldHdlZW4gYWJzb2x1dGUgbmFtZXMgYW5kIHJlbGF0aXZlIG5hbWVzIGJlY2F1c2UgYWJzb2x1dGUKK25hbWVzIGFsd2F5cyBzdGFydCB3aXRoIC8uICBJbiBvcmRlciB0byBrbm93IGV4YWN0bHkgd2hpY2ggZGlyZWN0b3J5CitpcyBiZWluZyBuYW1lZCBieSBhIHJlbGF0aXZlIG5hbWUsIHlvdSBuYXR1cmFsbHkgbXVzdCBrbm93IHdoYXQKK2RpcmVjdG9yeSBpdCBpcyByZWxhdGl2ZSB0by4KKworQSBkaXJlY3RvcnkgY29udGFpbnMgc3ViLWRpcmVjdG9yaWVzIGFuZCBmaWxlcy4gIExQTXVkcyBvbmx5IHVzZSB0ZXh0IGZpbGVzCitpbnNpZGUgdGhlIG11ZGxpYi4gIExpa2UgZGlyZWN0b3JpZXMsIGZpbGVzIGhhdmUgYm90aCBhYnNvbHV0ZSBhbmQKK3JlbGF0aXZlIG5hbWVzLiAgVGhlIG1vc3QgYmFzaWMgcmVsYXRpdmUgbmFtZSBpcyBvZnRlbiByZWZlcnJlZCB0byBhcyB0aGUgZmlsZQorbmFtZSwgd2l0aCB0aGUgcmVzdCBvZiB0aGUgYWJzb2x1dGUgbmFtZSBiZWluZyByZWZlcnJlZCB0byBhcyB0aGUgcGF0aC4gIFNvLAorZm9yIHRoZSBmaWxlOiAvcGxheWVycy9kZXNjYXJ0ZXMvY2FzdGxlLmMsIGNhc3RsZS5jIGlzIHRoZSBmaWxlIG5hbWUsIGFuZAorL3BsYXllcnMvZGVzY2FydGVzIGlzIHRoZSBwYXRoLgorCitPbiBzb21lIG11ZHMsIGEgZmlsZSB3aXRoIGEgZmlsZSBuYW1lIGJlZ2lubmluZyB3aXRoIGEgLiAobGlrZSAucGxhbikgaXMKK25vdCB2aXNpYmxlIHdoZW4geW91IGxpc3QgZmlsZXMgd2l0aCB0aGUgcmVndWxhciBmaWxlIGxpc3RpbmcgY29tbWFuZC4KKworMS4yIFVOSVggQ29tbWFuZHMKK0Fsb25nIHdpdGggdGhlIFVOSVggZmlsZSBzdHJ1Y3R1cmUsIExQTXVkcyB1c2UgbWFueSBVTklYIGNvbW1hbmRzLiAgVHlwaWNhbAorVU5JWCBjb21tYW5kcyBvbiBtb3N0IG11ZHMgYXJlOgorcHdkLCBjZCwgbHMsIHJtLCBtdiwgY3AsIG1rZGlyLCBybWRpciwgbW9yZSwgaGVhZCwgY2F0LCBlZAorSWYgeW91IGhhdmUgbmV2ZXIgYmVmb3JlIHNlZW4gVU5JWCBjb21tYW5kcywgeW91IHByb2JhYmx5IGFyZSB0aGlua2luZyB0aGlzCitpcyBhbGwgbm9uc2Vuc2UuICBXZWxsLCBpdCBpcywgYnV0IHlvdSBnb3QgdG8gdXNlIHRoZW0uICBCZWZvcmUgZ2V0dGluZworaW50byB3aGF0IHRoZXkgbWVhbiB0aG91Z2gsIGZpcnN0IGEgZGlzY3Vzc2lvbiBvZiBjdXJyZW50IGRpcmVjdG9yeS4KK0lmIHlvdSBrbm93IERPUywgdGhlbiB5b3Uga25vdyB3aGF0IGEgY3VycmVudCB3b3JraW5nIGRpcmVjdG9yeSBpcy4KK0F0IGFueSBnaXZlbiBwb2ludCwgeW91IGFyZSBjb25zaWRlcmVkIHRvIGJlICJpbiIgc29tZSBkaXJlY3RvcnkuICBUaGlzCittZWFucyB0aGF0IGFueSByZWxhdGl2ZSBmaWxlIG9yIGRpcmVjdG9yeSBuYW1lcyB5b3UgZ2l2ZSBpbiBVTklYIGNvbW1hbmRzCithcmUgcmVsYXRpdmUgdG8gdGhhdCBkaXJlY3RvcnkuICBGb3IgZXhhbXBsZSwgaWYgbXkgY3VycmVudCBkaXJlY3RvcnkgaXMKKy9wbGF5ZXJzL2Rlc2NhcnRlcyBhbmQgSSB0eXBlICJlZCBjYXN0bGUuYyIgKGVkIGlzIHRoZSBjb21tYW5kIHRvIGVkaXQpLAordGhlbiBpdCBhc3N1bWVzIEkgbWVhbiB0aGUgZmlsZSAvcGxheWVycy9kZXNjYXJ0ZXMvY2FzdGxlLmMKKworcHdkOiBzaG93cyB5b3UgeW91ciBjdXJyZW50IHdvcmtpbmcgZGlyZWN0b3J5CitjZDogY2hhbmdlcyB5b3VyIGN1cnJlbnQgd29ya2luZyBkaXJlY3RvcnkuICBZb3UgbWF5IGdpdmUgZWl0aGVyIHJlbGF0aXZlCisgICAgb3IgYWJzb2x1dGUgcGF0aCBuYW1lcy4gIFdpdGggbm8gYXJndW1lbnRzLCBpdCBjaGFuZ2VzIHRvIHlvdXIgaG9tZQorICAgIGRpcmVjdG9yeS4KK2xzOiBsaXN0cyBhbGwgZmlsZXMgaW4gdGhlIGRpcmVjdG9yeSBuYW1lZC4gIElmIG5vIGRpcmVjdG9yeSBpcyBuYW1lZCwKKyAgICBpdCBsaXN0cyB0aGUgZmlsZXMgb2YgdGhlIGN1cnJlbnQgd29ya2luZyBkaXJlY3RvcnkKK3JtOiBkZWxldGVzIHRoZSBmaWxlIG5hbWVkCittdjogcmVuYW1lcyB0aGUgZmlsZSBuYW1lZAorY3A6IGNvcGllcyB0aGUgZmlsZSBuYW1lZAorbWtkaXI6IG1ha2VzIGEgbmV3IGRpcmVjdG9yeQorcm1kaXI6IGRlbGV0ZXMgYSBkaXJlY3RvcnkuICBBbGwgZmlsZXMgbXVzdCBoYXZlIGJlZW4gZmlyc3QgcmVtb3ZlZC4KK21vcmU6IHBhZ2VzIHRoZSBmaWxlIG5hbWVkIHNvIHRoYXQgdGhlIGZpbGUgYXBwZWFycyBvbiB5b3VyIHNjcmVlbiBvbmUKKyAgICBwYWdlIGF0IGEgdGltZS4KK2NhdDogc2hvd3MgdGhlIHdob2xlIGZpbGUgdG8geW91IGF0IG9uY2UKK2hlYWQ6IHNob3dzIHlvdSB0aGUgZmlyc3Qgc2V2ZXJhbCBsaW5lcyBvZiBhIGZpbGUKK3RhaWw6IHNob3dzIHlvdSB0aGUgbGFzdCBzZXZlcmFsIGxpbmVzIG9mIGEgZmlsZQorZWQ6IGFsbG93cyB5b3UgdG8gZWRpdCBhIGZpbGUgdXNpbmcgdGhlIG11ZCBlZGl0b3IKKworMS4zIENoYXB0ZXIgU3VtbWFyeQorVU5JWCB1c2VzIGEgaGVpcmFyY2hpY2FsIGZpbGUgc3RydWN0dXJlIHdpdGggdGhlIHJvb3Qgb2YgdGhlIHRyZWUgYmVpbmcKK25hbWVkIC8uICBPdGhlciBkaXJlY3RvcmllcyBicmFuY2ggb2ZmIGZyb20gdGhhdCByb290IGRpcmVjdG9yeSBhbmQKK2luIHR1cm4gaGF2ZSB0aGVpciBvd24gc3ViLWRpcmVjdG9yaWVzLiAgQWxsIGRpcmVjdG9yaWVzIG1heSBjb250YWluCitkaXJlY3RvcmllcyBhbmQgZmlsZXMuICBEaXJlY3RvcmllcyBhbmQgZmlsZXMgYXJlIHJlZmVycmVkIHRvIGVpdGhlcgorYnkgdGhlaXIgYWJzb2x1dGUgbmFtZSwgd2hpY2ggYWx3YXlzIGJlZ2lucyB3aXRoIC8sIG9yIGJ5IHRoZWlyIHJlbGF0aXZlCituYW1lIHdoaWNoIGdpdmVzIHRoZSBmaWxlJ3MgbmFtZSByZWxhdGl2ZSB0byBhIHBhcnRpY3VsYXIgZGlyZWN0b3J5LgorSW4gb3JkZXIgdG8gZ2V0IGFyb3VuZCBpbiB0aGUgVU5JWCBmaWxlcyBzdHJ1Y3R1cmUsIHlvdSBoYXZlIHRoZQordHlwaWNhbCBVTklYIGNvbW1hbmRzIGZvciBsaXN0aW5nIGZpbGVzLCB5b3VyIGN1cnJlbnQgZGlyZWN0b3J5LCBldGMuCitPbiB5b3VyIG11ZCwgYWxsIG9mIHRoZSBhYm92ZSBjb21tYW5kcyBzaG91bGQgaGF2ZSBkZXRhaWxlZCBoZWxwIGNvbW1hbmRzCit0byBoZWxwIHlvdSBleHBsb3JlIGV4YWN0bHkgd2hhdCB0aGV5IGRvLiAgSW4gYWRkaXRpb24sIHRoZXJlIHNob3VsZAorYmUgYSB2ZXJ5IGRldGFpbGVkIGZpbGUgb24geW91ciBtdWQncyBlZGl0b3IuICBJZiB5b3UgYXJlIHVuZmFtaWxpYXIKK3dpdGggZWQsIHlvdSBzaG91bGQgZ28gb3ZlciB0aGlzIGNvbnZvbHV0ZWQgZmlsZS4KZGlmZiAtLWdpdCBhL2RvYy9LVVJTL0xQQy1LVVJTL2NoYXB0ZXIyIGIvZG9jL0tVUlMvTFBDLUtVUlMvY2hhcHRlcjIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZjlhZDU2NgotLS0gL2Rldi9udWxsCisrKyBiL2RvYy9LVVJTL0xQQy1LVVJTL2NoYXB0ZXIyCkBAIC0wLDAgKzEsMTk1IEBACisgICAgICAgICAgICAgICAgICAgICAgICAgICBMUEMgQmFzaWNzCisgICAgICAgICAgICAgICAgICBXcml0dGVuIGJ5IERlc2NhcnRlcyBvZiBCb3JnCisgICAgICAgICAgICAgICAgICBmaXJzdCBlZGl0aW9uOiAyMyBhcHJpbCAxOTkzCisgICAgICAgICAgICAgICAgICBzZWNvbmQgZWRpdGlvbjogMTYganVuZSAxOTkzCisKK0NIQVBURVIgMjogVGhlIExQQyBQcm9ncmFtCisKKzIuMSBBYm91dCBwcm9ncmFtcworVGhlIHRpdGxlIG9mIHRoaXMgY2hhcHRlciBvZiB0aGUgdGV4dGJvb2sgaXMgYWN0dWFsbHkgcG9vcmx5IG5hbWVkLCBzaW5jZQorb25lIGRvZXMgbm90IHdyaXRlIHByb2dyYW1zIGluIExQQy4gIEFuIExQQyBjb2RlciBpbnN0ZWFkIHdyaXRlcyAqb2JqZWN0cyouCitXaGF0IGlzIHRoZSBkaWZmZXJlbmNlPyAgV2VsbCwgZm9yIG91ciBwdXJwb3NlcyBub3csIHRoZSBkaWZmZXJlbmNlIGlzCitpbiB0aGUgd2F5IHRoZSBmaWxlIGlzIGV4ZWN1dGVkLiAgV2hlbiB5b3UgInJ1biIgYSBwcm9ncmFtLCBleGVjdXRpb24KK2JlZ2lucyBhdCBhIGRlZmluaXRlIHBsYWNlIGluIHRoZSBwcm9ncmFtLiAgSW4gb3RoZXIgd29yZHMsIHRoZXJlCitpcyBhIHBsYWNlIGluIGFsbCBwcm9ncmFtcyB0aGF0IGlzIG5vdGVkIGFzIHRoZSBiZWdpbm5pbmcgd2hlcmUgcHJvZ3JhbQorZXhlY3V0aW9uIHN0YXJ0cy4gIEluIGFkZGl0aW9uLCBwcm9ncmFtcyBoYXZlIGRlZmluaXRlIGVuZCBwb2ludHMsCitzbyB0aGF0IHdoZW4gZXhlY3V0aW9uIHJlYWNoZXMgdGhhdCBwb2ludCwgdGhlIGV4ZWN1dGlvbiBvZiB0aGUgcHJvZ3JhbQordGVybWluYXRlcy4gIFNvLCBpbiBzaG9ydCwgZXhlY3V0aW9uIG9mIGEgcHJvZ3JhbSBydW5zIGZyb20gYSBkZWZpbml0ZQorYmVnaW5uaW5nIHBvaW50IHRocm91Z2ggdG8gYSBkZWZpbml0ZSBlbmQgcG9pbnQuICBUaGlzIGlzIG5vdCBzbyB3aXRoCitMUEMgb2JqZWN0cy4KKworV2l0aCBtdWRzLCBMUEMgb2JqZWN0cyBhcmUgc2ltcGx5IGRpc3RpbmN0IHBhcnRzIG9mIHRoZSBDIHByb2dyYW0gd2hpY2gKK2lzIHJ1bm5pbmcgdGhlIGdhbWUgKHRoZSBkcml2ZXIpLiAgSW4gb3RoZXIgd29yZHMsIGV4ZWN1dGlvbiBvZiB0aGUgbXVkCitwcm9ncmFtIGJlZ2lucyBhbmQgZW5kcyBpbiB0aGUgZHJpdmVyLiAgQnV0IHRoZSBkcml2ZXIgaW4gZmFjdCBkb2VzCit2ZXJ5IGxpdHRsZSBpbiB0aGUgd2F5IG9mIGNyZWF0aW5nIHRoZSB3b3JsZCB5b3Uga25vdyB3aGVuIHlvdSBwbGF5CithIG11ZC4gIEluc3RlYWQsIHRoZSBkcml2ZXIgcmVsaWVzIGhlYXZpbHkgb24gdGhlIGNvZGUgY3JlYXRlZCBpbiBMUEMsCitleGVjdXRpbmcgbGluZXMgb2YgdGhlIG9iamVjdHMgaW4gdGhlIG11ZCBhcyBuZWVkZWQuICBMUEMgb2JqZWN0cyB0aHVzCitoYXZlIG5vIHBsYWNlIHRoYXQgaXMgbmVjZXNzYXJpbHkgdGhlIGJlZ2lubmluZyBwb2ludCwgbm9yIGRvIHRoZXkKK2hhdmUgYSBkZWZpbml0ZSBlbmRpbmcgcG9pbnQuCisKK0xpa2Ugb3RoZXIgcHJvZ3JhbW1pbmcgbGFuZ3VhZ2VzLCBhbiBMUEMgInByb2dyYW0iIG1heSBiZSBtYWRlIHVwIG9mCitvbmUgb3IgbW9yZSBmaWxlcy4gIEZvciBhbiBMUEMgb2JqZWN0IHRvIGdldCBleGVjdXRlZCwgaXQgc2ltcGxlCituZWVkcyB0byBiZSBsb2FkZWQgaW50byB0aGUgZHJpdmVyJ3MgbWVtb3J5LiAgVGhlIGRyaXZlciB3aWxsIGNhbGwgbGluZXMKK2Zyb20gdGhlIG9iamVjdCBhcyBpdCBuZWVkcyBhY2NvcmRpbmcgdG8gYSBzdHJ1Y3R1cmUgd2hpY2ggd2lsbCBiZQorZGVmaW5lZCB0aHJvdWdob3V0IHRoaXMgdGV4dGJvb2suICBUaGUgaW1wb3J0YW50IHRoaW5nIHlvdSBuZWVkIHRvCit1bmRlcnN0YW5kIGF0IHRoaXMgcG9pbnQgaXMgdGhhdCB0aGVyZSBpcyBubyAiYmVnaW5uaW5nIiB0byBhbiBMUEMKK29iamVjdCBpbiB0ZXJtcyBvZiBleGVjdXRpb24sIGFuZCB0aGVyZSBpcyBubyAiZW5kIi4KKworMi4yIERyaXZlci1tdWRsaWIgaW50ZXJhY3Rpb24KK0FzIEkgaGF2ZSBtZW50aW9uZWQgZWFybGllciwgdGhlIGRyaXZlciBpcyB0aGUgQyBwcm9ncmFtIHRoYXQgcnVucyBvbgordGhlIGhvc3QgbWFjaGluZS4gIEl0IGNvbm5lY3RzIHlvdSBpbnRvIHRoZSBnYW1lIGFuZCBwcm9jZXNzZXMgTFBDIGNvZGUuCitOb3RlIHRoYXQgdGhpcyBpcyBvbmUgdGhlb3J5IG9mIG11ZCBwcm9ncmFtbWluZywgYW5kIG5vdCBuZWNlc3NhcmlseQorYmV0dGVyIHRoYW4gb3RoZXJzLiAgSXQgY291bGQgYmUgdGhhdCB0aGUgZW50aXJlIGdhbWUgaXMgd3JpdHRlbiBpbiBDLgorU3VjaCBhIGdhbWUgd291bGQgYmUgbXVjaCBmYXN0ZXIsIGJ1dCBpdCB3b3VsZCBiZSBsZXNzIGZsZXhpYmxlIGluCit0aGF0IHdpemFyZHMgY291bGQgbm90IGFkZCB0aGluZ3MgdG8gdGhlIGdhbWUgd2hpbGUgaXQgd2FzIHJ1bm5pbmcuIFRoaXMKK2lzIHRoZSB0aGVvcnkgYmVoaW5kIERpa3VNVURzLiAgSW5zdGVhZCwgTFBNVURzIHJ1biBvbiB0aGUgdGhlb3J5IHRoYXQKK3RoZSBkcml2ZXIgc2hvdWxkIGluIG5vIGRlZmluZSB0aGUgbmF0dXJlIG9mIHRoZSBnYW1lLCB0aGF0IHRoZSBuYXR1cmUKK29mIHRoZSBnYW1lIGlzIHRvIGJlIGRlY2lkZWQgYnkgdGhlIGluZGl2aWR1YWxzIGludm9sdmVkLCBhbmQgdGhhdAoreW91IHNob3VsZCBiZSBhYmxlIHRvIGFkZCB0byB0aGUgZ2FtZSAqYXMgaXQgaXMgYmVpbmcgcGxheWVkKi4gIFRoaXMKK2lzIHdoeSBMUE1VRHMgbWFrZSB1c2Ugb2YgdGhlIExQQyBwcm9ncmFtbWluZyBsYW5ndWFnZS4gIEl0IGFsbG93cworeW91IHRvIGRlZmluZSB0aGUgbmF0dXJlIG9mIHRoZSBnYW1lIGluIExQQyBmb3IgdGhlIGRyaXZlciB0byByZWFkIGFuZAorZXhlY3V0ZSBhcyBuZWVkZWQuICBJdCBpcyBhbHNvIGEgbXVjaCBzaW1wbGVyIGxhbmd1YWdlIHRvIHVuZGVyc3RhbmQKK3RoYW4gQywgdGh1cyBtYWtpbmcgdGhlIHByb2Nlc3Mgb2Ygd29ybGQgY3JlYXRpb24gb3BlbiB0byBhIGdyZWF0ZXIKK251bWJlciBvZiBwZW9wbGUuCisKK09uY2UgeW91IGhhdmUgd3JpdHRlbiBhIGZpbGUgaW4gTFBDIChhc3N1bWluZyBpdCBpcyBjb3JyZW50IExQQyApLCBpdCBqdXN0cworc2l0cyB0aGVyZSBvbiB0aGUgaG9zdCBtYWNoaW5lJ3MgaGFyZCBkcml2ZSB1bnRpbCBzb21ldGhpbmcgaW4gdGhlIGdhbWUKK21ha2VzIHJlZmVyZW5jZSB0byBpdC4gIFdoZW4gc29tZXRoaW5nIGluIHRoZSBnYW1lIGZpbmFsbHkgZG9lcyBtYWtlCityZWZlcmVuY2UgdG8gdGhlIG9iamVjdCwgYSBjb3B5IG9mIHRoZSBmaWxlIGlzIGxvYWRlZCBpbnRvIG1lbW9yeSBhbmQKK2Egc3BlY2lhbCAqZnVuY3Rpb24qIG9mIHRoYXQgb2JqZWN0IGlzIGNhbGxlZCBpbiBvcmRlciB0byBpbml0aWFsaXplCit0aGUgdmFsdWVzIG9mIHRoZSB2YXJpYWJsZXMgaW4gdGhlIG9iamVjdC4gIE5vdywgZG8gbm90IGJlIGNvbmNlcm5lZAoraWYgdGhhdCBsYXN0IHNlbnRlbmNlIHdlbnQgcmlnaHQgb3ZlciB5b3VyIGhlYWQsIHNpbmNlIHNvbWVvbmUgYnJhbmQKK25ldyB0byBwcm9ncmFtbWluZyB3b3VsZCBub3Qga25vdyB3aGF0IHRoZSBoZWxsIGEgZnVuY3Rpb24gb3IgYSB2YXJpYWJsZQoraXMuICBUaGUgaW1wb3J0YW50IHRoaW5nIHRvIHVuZGVyc3RhbmQgcmlnaHQgbm93IGlzIHRoYXQgYSBjb3B5IG9mIHRoZQorb2JqZWN0IGZpbGUgaXMgdGFrZW4gYnkgdGhlIGRyaXZlciBmcm9tIHRoZSBtYWNoaW5lJ3MgaGFyZCBkcml2ZSBhbmQKK3N0b3JlZCBpbnRvIG1lbW9yeSAoc2luY2UgaXQgaXMgYSBjb3B5LCBtdWx0aXBsZSB2ZXJzaW9ucyBvZiB0aGF0CitvYmplY3QgbWF5IGV4aXN0KS4gIFlvdSB3aWxsIGxhdGVyIHVuZGVyc3RhbmQgd2hhdCBhIGZ1bmN0aW9uIGlzLCB3aGF0CithIHZhcmlhYmxlIGlzLCBhbmQgZXhhY3RseSBob3cgaXQgaXMgc29tZXRoaW5nIGluIHRoZSBnYW1lIG1hZGUgcmVmZXJlbmNlCit0byB5b3VyIG9iamVjdC4KKworMi4zIExvYWRpbmcgYW4gb2JqZWN0IGludG8gbWVtb3J5CitBbHRob3VnaCB0aGVyZSBpcyBubyBwYXJ0aWN1bGFyIHBsYWNlIGluIGFuIG9iamVjdCBjb2RlIHRoYXQgbXVzdCBleGlzdAoraW4gb3JkZXIgZm9yIHRoZSBkcml2ZXIgdG8gYmVnaW4gZXhlY3V0aW5nIGl0LCB0aGVyZSBpcyBhIHBsYWNlIGZvciB3aGljaAordGhlIGRyaXZlciB3aWxsIHNlYXJjaCBpbiBvcmRlciB0byBpbml0aWFsaXplIHRoZSBvYmplY3QuICBPbiBjb21wYXQgCitkcml2ZXJzLCBpdCBpcyB0aGUgZnVuY3Rpb24gY2FsbGVkIHJlc2V0KCkuICBPbiBuYXRpdmUgbXVkcyBpdCBpcyB0aGUKK2Z1bmN0aW9uIGNhbGxlZCBjcmVhdGUoKS4gWyBNb3JnZW5HcmF1ZW4gaXMgbmF0aXZlIC0gQm9pbmcgXQorCitMUEMgb2JqZWN0cyBhcmUgbWFkZSB1cCBvZiB2YXJpYWJsZXMgKHZhbHVlcyB3aGljaCBjYW4gY2hhbmdlKSBhbmQKK2Z1bmN0aW9ucyB3aGljaCBhcmUgdXNlZCB0byBtYW5pcHVsYXRlIHRob3NlIHZhcmlhYmxlcy4gIEZ1bmN0aW9ucworbWFuaXB1bGF0ZSB2YXJpYWJsZXMgdGhyb3VnaCB0aGUgdXNlIG9mIExQQyBncmFtbWF0aWNhbCBzdHJ1Y3R1cmVzLAord2hpY2ggaW5jbHVkZSBjYWxsaW5nIG90aGVyIGZ1bmN0aW9ucywgdXNpbmcgZXh0ZXJuYWxseSBkZWZpbmVkCitmdW5jdGlvbnMgKGVmdW5zKSwgYW5kIGJhc2ljIExQQyBleHByZXNzaW9ucyBhbmQgZmxvdyBjb250cm9sIAorbWVjaGFuaXNtcy4KKworRG9lcyB0aGF0IHNvdW5kIGNvbnZvbHV0ZWQ/ICBGaXJzdCBsZXRzIHN0YXJ0IHdpdGggYSB2YXJpYWJsZS4gIEEKK3ZhcmlhYmxlIG1pZ2h0IGJlIHNvbWV0aGluZyBsaWtlOiBsZXZlbC4gIEl0IGNhbiAidmFyeSIgZnJvbSBzaXRhdGlvbgordG8gc2l0dWF0aW9uIGluIHZhbHVlLCBhbmQgZGlmZmVyZW50IHRoaW5ncyB1c2UgdGhlIHZhbHVlIG9mIHRoZSBwbGF5ZXIncworbGV2ZWwgdG8gbWFrZSBkaWZmZXJlbnQgdGhpbmdzIGhhcHBlbi4gIEZvciBpbnN0YW5jZSwgaWYgeW91IGFyZSBhCitsZXZlbCAxOSBwbGF5ZXIsIHRoZSB2YWx1ZSBvZiB0aGUgdmFyaWFibGUgbGV2ZWwgd2lsbCBiZSAxOS4gIE5vdworaWYgeW91ciBtdWQgaXMgb24gdGhlIG9sZCBMUE11ZCAyLjQuNSBzeXN0ZW0gd2hlcmUgbGV2ZWxzIDEtMTkgYXJlCitwbGF5ZXJzIGFuZCAyMCsgYXJlIHdpemFyZHMsIHRoaW5ncyBjYW4gYXNrIGZvciB5b3VyIGxldmVsIHZhbHVlIHRvCitzZWUgaWYgeW91IGNhbiBwZXJmb3JtIHdpemFyZCB0eXBlIGFjdGlvbnMuICBCYXNpY2FsbHksIGVhY2ggb2JqZWN0CitpbiBMUEMgaXMgYSBwaWxlIG9mIHZhcmlhYmxlcyB3aXRoIHZhbHVlcyB3aGljaCBjaGFuZ2Ugb3ZlciB0aW1lLgorVGhpbmdzIGhhcHBlbiB0byB0aGVzZSBvYmplY3RzIGJhc2VkIG9uIHdoYXQgdmFsdWVzIGl0cyB2YXJpYWJsZXMKK2hvbGQuICBPZnRlbiwgdGhlbiB0aGluZ3MgdGhhdCBoYXBwZW4gY2F1c2UgdGhlIHZhcmlhYmxlcyB0byBjaGFuZ2UuCisKK1NvLCB3aGVuZXZlciBhbiBvYmplY3QgaW4gTFBDIGlzIHJlZmVyZW5jZWQgYnkgYW5vdGhlciBvYmplY3QgY3VycmVudGx5CitpbiBtZW1vcnksIHRoZSBkcml2ZXIgc2VhcmNoZXMgdG8gc2VlIHdoYXQgcGxhY2VzIGZvciB2YWx1ZXMgdGhlCitvYmplY3QgaGFzIChidXQgdGhleSBoYXZlIG5vIHZhbHVlcyB5ZXQpLiAgT25jZSB0aGF0IGlzIGRvbmUsIHRoZSBkcml2ZXIKK2NhbGxzIGEgZnVuY3Rpb24gaW4gdGhlIG9iamVjdCBjYWxsZWQgcmVzZXQoKSBvciBjcmVhdGUoKSAoZGVwZW5kaW5nCitvbiB5b3VyIGRyaXZlcikgd2hpY2ggd2lsbCBzZXQgdXAgdGhlIHN0YXJ0aW5nIHZhbHVlcyBmb3IgdGhlIG9iamVjdCdzCit2YXJpYWJsZXMuICBJdCBpcyB0aHVzIHRocm91Z2ggKmNhbGxzKiB0byAqZnVuY3Rpb25zKiB0aGF0IHZhcmlhYmxlCit2YWx1ZXMgZ2V0IG1hbmlwdWxhdGVkLgorCitCdXQgY3JlYXRlKCkgb3IgcmVzZXQoKSBpcyBOT1QgdGhlIHN0YXJ0aW5nIHBsYWNlIG9mIExQQyBjb2RlLCBhbHRob3VnaAoraXQgaXMgd2hlcmUgbW9zdCBMUEMgY29kZSBleGVjdXRpb24gZG9lcyBiZWdpbi4gIFRoZSBmYWN0IGlzLCB0aG9zZQorZnVuY3Rpb25zIG5lZWQgbm90IGV4aXN0LiAgSWYgeW91ciBvYmplY3QgZG9lcyBqdXN0IGZpbmUgd2l0aCBpdHMKK3N0YXJ0aW5nIHZhbHVlcyBhbGwgYmVpbmcgTlVMTCBwb2ludGVycyAobWVhbmluZywgZm9yIG91ciBwdXJwb3NlcworaGVyZSwgMCksIHRoZW4geW91IGRvIG5vdCBuZWVkIGEgY3JlYXRlKCkgb3IgcmVzZXQoKSBmdW5jdGlvbi4gIFRodXMKK3RoZSBmaXJzdCBiaXQgb2YgZXhlY3V0aW9uIG9mIHRoZSBvYmplY3QncyBjb2RlIG1heSBiZWdpbiBzb21ld2hlcmUKK2NvbXBsZXRlbHkgZGlmZmVyZW50LgorCitOb3cgd2UgZ2V0IHRvIHdoYXQgdGhpcyBjaGFwdGVyIGlzIGFsbCBhYm91dC4gIFRoZSBxdWVzdGlvbjogV2hhdAorY29uc2lzdHMgYSBjb21wbGV0ZSBMUEMgb2JqZWN0PyAgV2VsbCwgYW4gTFBDIG9iamVjdCBpcyBzaW1wbHkKK29uZSBvciBtb3JlIGZ1bmN0aW9ucyBncm91cGVkIHRvZ2V0aGVyIG1hbmlwdWxhdGluZyAwIG9yIG1vcmUKK3ZhcmlhYmxlcy4gIFRoZSBvcmRlciBpbiB3aGljaCBmdW5jdGlvbnMgYXJlIHBsYWNlZCBpbiBhbiBvYmplY3QKK3JlbGF0aXZlIHRvIG9uZSBhbm90aGVyIGlzIGlycmVsZXZhbnQuICBJbiBvdGhlciB3b3JkczoKKworLS0tLS0KK3ZvaWQgaW5pdCgpIHsgYWRkX2FjdGlvbigic21pbGUiLCAic21pbGUiKTsgfQorCit2b2lkIGNyZWF0ZSgpIHsgcmV0dXJuOyB9CisKK2ludCBzbWlsZShzdHJpbmcgc3RyKSB7IHJldHVybiAwOyB9CistLS0tLQorCitpcyBleGFjdGx5IHRoZSBzYW1lIGFzOgorCistLS0tLQordm9pZCBjcmVhdGUoKSB7IHJldHVybjsgfQorCitpbnQgc21pbGUoc3RyaW5nIHN0cikgeyByZXR1cm4gMDsgfQorCit2b2lkIGluaXQoKSB7IGFkZF9hY3Rpb24oInNtaWxlIiwgInNtaWxlIik7IH0KK19fX19fCisKK0Fsc28gaW1wb3J0YW50IHRvIG5vdGUsIHRoZSBvYmplY3QgY29udGFpbmluZyBvbmx5OgorCistLS0tLQordm9pZCBub25zZW5zZSgpIHt9CistLS0tLQorCitpcyBhIHZhbGlkLCBidXQgdHJpdmlhbCBvYmplY3QsIGFsdGhvdWdoIGl0IHByb2JhYmx5IHdvdWxkIG5vdCBpbnRlcmFjdAorcHJvcGVybHkgd2l0aCBvdGhlciBvYmplY3RzIG9uIHlvdXIgbXVkIHNpbmNlIHN1Y2ggYW4gb2JqZWN0IGhhcyBubword2VpZ2h0LCBpcyBpbnZpc2libGUsIGV0Yy4uCisKKzIuNCBDaGFwdGVyIHN1bW1hcnkKK0xQQyBjb2RlIGhhcyBubyBiZWdpbm5pbmcgcG9pbnQgb3IgZW5kaW5nIHBvaW50LCBzaW5jZSBMUEMgY29kZSBpcyB1c2VkCit0byBjcmVhdGUgb2JqZWN0cyB0byBiZSB1c2VkIGJ5IHRoZSBkcml2ZXIgcHJvZ3JhbSByYXRoZXIgdGhhbiBjcmVhdGUKK2luZGl2aWR1YWwgcHJvZ3JhbXMuICBMUEMgb2JqZWN0cyBjb25zaXN0IG9mIG9uZSBvciBtb3JlIGZ1bmN0aW9ucyB3aG9zZQorb3JkZXIgaW4gdGhlIGNvZGUgaXMgaXJyZWxldmFudCwgYXMgd2VsbCBhcyBvZiB6ZXJvIG9yIG1vcmUgdmFyaWFibGVzIHdob3NlCit2YWx1ZXMgYXJlIG1hbmlwdWxhdGVkIGluc2lkZSB0aG9zZSBmdW5jdGlvbnMuICBMUEMgb2JqZWN0cyBzaW1wbHkgc2l0CitvbiB0aGUgaG9zdCBtYWNoaW5lJ3MgaGFyZCBkcml2ZXIgdW50aWwgcmVmZXJlbmNlZCBieSBhbm90aGVyIG9iamVjdCBpbgordGhlIGdhbWUgKGluIG90aGVyIHdvcmRzLCB0aGV5IGRvIG5vdCByZWFsbHkgZXhpc3QpLiAgT25jZSB0aGUgb2JqZWN0CitpcyByZWZlcmVuY2VkLCBpdCBpcyBsb2FkZWQgaW50byB0aGUgbWFjaGluZSdzIG1lbW9yeSB3aXRoIGVtcHR5Cit2YWx1ZXMgZm9yIHRoZSB2YXJpYWJsZXMuICBUaGUgZnVuY3Rpb24gcmVzZXQoKSBpbiBjb21wYXQgbXVkcyBvcgorY3JlYXRlKCkgaW4gbmF0aXZlIG11ZHMgaXMgY2FsbGVkIGluIHRoYXQgb2JqZWN0IGlmIGl0IGV4aXN0cyB0byBhbGxvdwordGhlIHZhcmlhYmxlcyB0byB0YWtlIG9uIGluaXRpYWwgdmFsdWVzLiAgT3RoZXIgZnVuY3Rpb25zIGluIHRoZSBvYmplY3QKK2FyZSB1c2VkIGJ5IHRoZSBkcml2ZXIgYW5kIG90aGVyIG9iamVjdHMgaW4gdGhlIGdhbWUgdG8gYWxsb3cgaW50ZXJhY3Rpb24KK2Ftb25nIG9iamVjdHMgYW5kIHRoZSBtYW5pcHVsYXRpb24gb2YgdGhlIExQQyB2YXJpYWJsZXMuCisKK0Egbm90ZSBvbiByZXNldCgpIGFuZCBjcmVhdGUoKToKK2NyZWF0ZSgpIGlzIG9ubHkgdXNlZCBieSBtdWRzIGluIG5hdGl2ZSBtb2RlIChzZWUgdGhlIHRleHRib29rIEludHJvZHVjdGlvbgorZm9yIG1vcmUgaW5mb3JtYXRpb24gb24gbmF0aXZlIG1vZGUgdnMuIGNvbXBhdCBtb2RlKS4gIEl0IGlzIG9ubHkgdXNlZAordG8gaW5pdGlhbGl6ZSBuZXdseSByZWZlcmVuY2VkIG9iamVjdHMuCisKK3Jlc2V0KCkgaXMgdXNlZCBieSBib3RoIG11ZHMgaW4gY29tcGF0IG1vZGUgYW5kIG5hdGl2ZSBtb2RlLiAgSW4gY29tcGF0Cittb2RlLCByZXNldCgpIHBlcmZvcm1zIHR3byBmdW5jdGlvbnMuICBGaXJzdCwgaXQgaXMgdXNlZCB0byBpbml0aWFsaXplCituZXdseSByZWZlcmVuY2VkIG9iamVjdHMuICBJbiBhZGRpdGlvbiwgaG93ZXZlciwgY29tcGF0IG1vZGUgbXVkcyB1c2UKK3Jlc2V0KCkgdG8gInJlc2V0IiB0aGUgb2JqZWN0LiAgSW4gb3RoZXIgd29yZHMsIHJldHVybiBpdCB0byBpdHMgaW5pdGlhbAorc3RhdGUgb2YgYWZmYWlycy4gIFRoaXMgYWxsb3dzIG1vbnN0ZXJzIHRvIHJlZ2VuZXJhdGUgaW4gYSByb29tIGFuZCBkb29ycwordG8gc3RhcnQgYmFjayBpbiB0aGUgc2h1dCBwb3NpdGlvbiwgZXRjLi4gIE5hdGl2ZSBtb2RlIG11ZHMgdXNlIHJlc2V0KCkKK3RvIHBlcmZvcm0gdGhlIHNlY29uZCBmdW5jdGlvbiAoYXMgaXRzIG5hbWUgaW1wbGllcykuCisKK1NvIHRoZXJlIGFyZSB0d28gaW1wb3J0YW50IHRoaW5ncyB3aGljaCBoYXBwZW4gaW4gTFAgc3R5bGUgbXVkcyB3aGljaAorY2F1c2UgdGhlIGRyaXZlciB0byBtYWtlIGNhbGxzIHRvIGZ1bmN0aW9ucyBpbiBvYmplY3RzLiAgVGhlIGZpcnN0IGlzCit0aGUgY3JlYXRpb24gb2YgdGhlIG9iamVjdC4gIEF0IHRoaXMgdGltZSwgdGhlIGRyaXZlciBjYWxscyBhIGZ1bmN0aW9uCit0byBpbml0YWxpemUgdGhlIHZhbHVlcyBpbiB0aGUgb2JqZWN0LiAgRm9yIGNvbXBhdCBtb2RlIG11ZHMsIHRoaXMKK2lzIHBlcmZvcm1lZCBieSB0aGUgZnVuY3Rpb24gbmFtZWQgcmVzZXQoKSAod2l0aCBhbiBhcmd1bWVudCBvZiAwLAorbW9yZSBvbiB0aGlzIGxhdGVyIHRob3VnaCkuICBGb3IgbXVkcyBydW5uaW5nIGluIG5hdGl2ZSBtb2RlLCB0aGlzIGlzCitwZXJmb3JtZWQgYnkgdGhlIGZ1bmN0aW9uIGNyZWF0ZSgpLgorCitUaGUgc2Vjb25kIGlzIHRoZSByZXR1cm5pbmcgb2YgdGhlIHJvb20gdG8gc29tZSBiYXNlIHN0YXRlIG9mIGFmZmFpcnMuCitUaGlzIGJhc2Ugc2V0IG9mIGFmZmFpcnMgbWF5IG9yIG1heSBub3QgYmUgZGlmZmVyZW50IGZyb20gdGhlIGluaXRpYWwKK3N0YXRlIG9mIGFmZmFpcnMsIGFuZCBjZXJ0YWlubHkgeW91IHdvdWxkIG5vdCB3YW50IHRvIHRha2UgdXAgdGltZQorZG9pbmcgcmVkdW5kYW50IHRoaW5ncyAobGlrZSByZXNldHRpbmcgdmFyaWFibGVzIHRoYXQgbmV2ZXIgY2hhbmdlKS4KK0NvbXBhdCBtb2RlIG11ZHMgbmV2ZXJ0aGVsZXNzIHVzZSB0aGUgc2FtZSBmdW5jdGlvbiB0aGF0IHdhcyB1c2VkIHRvCitjcmVhdGUgdGhlIG9iamVjdCB0byByZXNldCBpdCwgdGhhdCBiZWluZyByZXNldCgpLiAgTmF0aXZlIG1vZGUgbXVkcywKK3dobyB1c2UgY3JlYXRlKCkgdG8gY3JlYXRlIHRoZSByb29tLCBpbnN0ZWFkIHVzZSByZXNldCgpIHRvIHJlc2V0IGl0LgorQWxsIGlzIG5vdCBsb3N0IGluIGNvbXBhdCBtb2RlIHRob3VnaCwgYXMgdGhlcmUgaXMgYSB3YXkgdG8gdGVsbCB0aGUKK2RpZmZlcmVuY2UgYmV0d2VlbiBjcmVhdGlvbiBhbmQgcmVzZXR0aW5nLiAgRm9yIHJlc2V0IHB1cnBvc2VzLCB0aGUKK2RyaXZlciBwYXNzZXMgZWl0aGVyIDEgb3IgdGhlIHJlc2V0IG51bWJlciBhcyBhbiBhcmd1bWVudCB0byByZXNldCgpCitpbiBjb21wYXQgbW9kZS4gIE5vdyB0aGlzIGlzIG1lYW5pbmdsZXNzIHRvIHlvdSBub3csIGJ1dCBqdXN0IGtlZXAgaW4KK21pbmQgdGhhdCB5b3UgY2FuIGluIGZhY3QgdGVsbCB0aGUgZGlmZmVyZW5jZSBpbiBjb21wYXQgbW9kZS4gIEFsc28KK2tlZXAgaW4gbWluZCB0aGF0IHRoZSBhcmdtZW50IGluIHRoZSBjcmVhdGlvbiB1c2Ugb2YgcmVzZXQgaXMgMCBhbmQKK3RoZSBhcmd1bWVudCBpbiB0aGUgcmVzZXQgdXNlIGlzIGEgbm9uemVybyBudW1iZXIuCmRpZmYgLS1naXQgYS9kb2MvS1VSUy9MUEMtS1VSUy9jaGFwdGVyMyBiL2RvYy9LVVJTL0xQQy1LVVJTL2NoYXB0ZXIzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmY3ZTg5YTQKLS0tIC9kZXYvbnVsbAorKysgYi9kb2MvS1VSUy9MUEMtS1VSUy9jaGFwdGVyMwpAQCAtMCwwICsxLDE4NSBAQAorICAgICAgICAgICAgICAgICAgICAgICAgICAgTFBDIEJhc2ljcworICAgICAgICAgICAgICAgICAgV3JpdHRlbiBieSBEZXNjYXJ0ZXMgb2YgQm9yZworICAgICAgICAgICAgICAgICAgZmlyc3QgZWRpdGlvbjogMjMgYXByaWwgMTk5MworICAgICAgICAgICAgICAgICAgc2Vjb25kIGVkaXRpb246IDE3IGp1bmUgMTk5MworCitDSEFQVEVSIDM6IExQQyBEYXRhIFR5cGVzCisKKzMuMSBXaGF0IHlvdSBzaG91bGQga25vdyBieSBub3cKK0xQQyBvYmplY3QgYXJlIG1hZGUgdXAgb2YgemVybyBvciBtb3JlIHZhcmlhYmxlcyBtYW5pcHVsYXRlZCBieSBvbmUgb3IKK21vcmUgZnVuY3Rpb25zLiAgVGhlIG9yZGVyIGluIHdoaWNoIHRoZXNlIGZ1bmN0aW9ucyBhcHBlYXIgaW4gY29kZSBpcworaXJyZWxldmFudC4gIFRoZSBkcml2ZXIgdXNlcyB0aGUgTFBDIGNvZGUgeW91IHdyaXRlIGJ5IGxvYWRpbmcgY29waWVzIG9mCitpdCBpbnRvIG1lbW9yeSB3aGVuZXZlciBpdCBpcyBmaXJzdCByZWZlcmVuY2VkIGFuZCBhZGRpdGlvbmFsIGNvcGllcwordGhyb3VnaCBjbG9uaW5nLiAgV2hlbiBlYWNoIG9iamVjdCBpcyBsb2FkZWQgaW50byBtZW1vcnksIGFsbCB0aGUgdmFyaWFibGVzCitpbml0aWFsbHkgcG9pbnQgdG8gbm8gdmFsdWUuICBUaGUgcmVzZXQoKSBmdW5jdGlvbiBpbiBjb21wYXQgbXVkcywgYW5kCitjcmVhdGUoKSBpbiBuYXRpdmUgbXVkcyBhcmUgdXNlZCB0byBnaXZlIGluaXRpYWwgdmFsdWVzIHRvIHZhcmlhYmxlcyBpbgorb2JqZWN0cy4gIFRoZSBmdW5jdGlvbiBmb3IgY3JlYXRpb24gaXMgY2FsbGVkIGltbWVkaWF0ZWx5IGFmdGVyIHRoZSBvYmplY3QKK2lzIGxvYWRlZCBpbnRvIG1lbW9yeS4gIEhvd2V2ZXIsIGlmIHlvdSBhcmUgcmVhZGluZyB0aGlzIHRleHRib29rIHdpdGggbm8KK3ByaW9yIHByb2dyYW1taW5nIGV4cGVyaWVuY2UsIHlvdSBtYXkgbm90IGtub3cgd2hhdCBhIGZ1bmN0aW9uIGlzIG9yIGhvdworaXQgZ2V0cyBjYWxsZWQuICBBbmQgZXZlbiBpZiB5b3UgaGF2ZSBwcm9ncmFtbWluZyBleHBlcmllbmNlLCB5b3UgbWF5CitiZSB3b25kZXJpbmcgaG93IHRoZSBwcm9jZXNzIG9mIGZ1bmN0aW9ucyBjYWxsaW5nIGVhY2ggb3RoZXIgZ2V0cyBzdGFydGVkCitpbiBuZXdseSBjcmVhdGVkIG9iamVjdHMuICBCZWZvcmUgYW55IG9mIHRoZXNlIHF1ZXN0aW9ucyBnZXQgYW5zd2VyZWQsCitob3dldmVyLCB5b3UgbmVlZCB0byBrbm93IG1vcmUgYWJvdXQgd2hhdCBpdCBpcyB0aGUgZnVuY3Rpb25zIGFyZQorbWFuaXB1bGF0aW5nLiAgWW91IHRoZXJlZm9yZSBzaG91bGQgdGhvdXJvdWdobHkgY29tZSB0byBrbm93IHRoZSBjb25jZXB0CitiZWhpbmQgTFBDIGRhdGEgdHlwZXMuICBDZXJ0YWlubHkgdGhlIG1vc3QgYm9yaW5nIHN1YmplY3QgaW4gdGhpcyBtYW51YWwsCit5ZXQgaXQgaXMgdGhlIG1vc3QgY3J1Y2lhbCwgYXMgOTAlIG9mIGFsbCBlcnJvcnMgKGV4Y2VwdGluZyBtaXNwbGFjZWQKK3t9IGFuZCAoKSkgaW52b2x2ZSB0aGUgaW1wcm9wZXIgdXNhZ2Ugb2YgTFBDIGRhdGEgdHlwZXMuICBTbyBiZWFyIHRocm91Z2gKK3RoaXMgaW1wb3J0YW50IGNoYXB0ZXIsIGJlY2F1c2UgaXQgaXMgbXkgZmVlbGluZyB0aGF0IHVuZGVyc3RhbmRpbmcgdGhpcworY2hhcHRlciBhbG9uZSBjYW4gaGVscCB5b3UgZmluZCBjb2RpbmcgbXVjaCwgbXVjaCBlYXNpZXIuCisKKzMuMiBDb21tdW5pY2F0aW5nIHdpdGggdGhlIGNvbXB1dGVyCitZb3UgcG9zc2libHkgYWxyZWFkeSBrbm93IHRoYXQgY29tcHV0ZXJzIGNhbm5vdCB1bmRlcnN0YW5kIHRoZSBsZXR0ZXJzCithbmQgbnVtYmVycyB1c2VkIGJ5IGh1bWFucy4gIEluc3RlYWQsIHRoZSAibGFuZ3VhZ2UiIHNwb2tlbiBieSBjb21wdXRlcnMKK2NvbnNpc3RzIG9mIGFuICJhbHBoYWJldCIgb2YgMCdzIGFuZCAxJ3MuICBDZXJ0YWlubHkgeW91IGtub3cgY29tcHV0ZXJzCitkbyBub3QgdW5kZXJzdGFuZCBuYXR1cmFsIGh1bWFuIGxhbmd1YWdlcy4gIEJ1dCBpbiBmYWN0LCB0aGV5IGRvIG5vdAordW5kZXJzdGFuZCB0aGUgY29tcHV0ZXIgbGFuZ3VhZ2VzIHdlIHdyaXRlIGZvciB0aGVtIGVpdGhlci4gIENvbXB1dGVyCitsYW5ndWFnZXMgbGlrZSBCQVNJQywgQywgQysrLCBQYXNjYWwsIGV0Yy4gYXJlIGFsbCBpbnRlcm1lZGlhdGUKK2xhbmd1YWdlcy4gIFRoZXkgYWxsb3cgeW91IHRvIHN0cnVjdHVyZSB5b3VyIHRob3VnaHRzIG1vcmUgY29oZXJlbnRseQorZm9yIHRyYW5zbGF0aW9uIGludG8gdGhlIDAncyBhbmQgMSdzIG9mIHRoZSBjb21wdXRlcidzIGxhbmd1YWdlcy4KKworVGhlcmUgYXJlIHR3byBtZXRob2RzIGluIHdoaWNoIHRyYW5zbGF0aW9uIGlzIGRvbmU6IGNvbXBpbGF0aW9uIGFuZAoraW50ZXJwcmV0YXRpb24uICBUaGVzZSBzaW1wbHkgYXJlIGRpZmZlcmVuY2VzIGJldHdlZW0gd2hlbiB0aGUgCitwcm9ncmFtbWluZyBsYW5ndWFnZSBpcyB0cmFuc2xhdGVkIGludG8gY29tcHV0ZXIgbGFuZ3VhZ2UuICBXaXRoCitjb21waWxlZCBsYW5ndWFnZXMsIHRoZSBwcm9ncmFtbWVyIHdyaXRlcyB0aGUgY29kZSB0aGVuIHVzZXMgYSBwcm9ncmFtCitjYWxsZWQgYSBjb21waWxlciB0byB0cmFuc2xhdGUgdGhlIHByb2dyYW0gaW50byB0aGUgY29tcHV0ZXIncworbGFuZ3VhZ2UuICBUaGlzIHRyYW5zbGF0aW9uIG9jY3VycyBiZWZvcmUgdGhlIHByb2dyYW0gaXMgcnVuLiAgV2l0aAoraW50ZXJwcmV0ZWQgbGFuZ3VhZ2VzIGhvd2V2ZXIsIHRoZSBwcm9jZXNzIG9mIHRyYW5zbGF0aW9uIG9jY3VycyBhcwordGhlIHByb2dyYW0gaXMgYmVpbmcgcnVuLiAgU2luY2UgdGhlIHRyYW5zbGF0aW9uIG9mIHRoZSBwcm9ncmFtIGlzCitvY2N1cnJpbmcgZHVyaW5nIHRoZSB0aW1lIG9mIHRoZSBwcm9ncmFtJ3MgcnVubmluZyBpbiBpbnRlcnByZXRlZAorbGFuZ3VhZ2VzLCBpbnRlcnByZXRlZCBsYW5ndWFnZXMgbWFrZSBtdWNoIHNsb3dlciBwcm9ncmFtcyB0aGFuCitjb21waWxlZCBsYW5ndWFnZXMuCisKK1RoZSBib3R0b20gbGluZSBpcywgbm8gbWF0dGVyIHdoYXQgbGFuZ3VhZ2UgeW91IGFyZSB3cml0aW5nIGluLCBhdAorc29tZSBwb2ludCB0aGlzIGhhcyB0byBiZSBjaGFuZ2VkIGludG8gMCdzIGFuZCAxJ3Mgd2hpY2ggY2FuIGJlCit1bmRlcnN0b29kIGJ5IHRoZSBjb21wdXRlci4gIEJ1dCB0aGUgdmFyaWFibGVzIHdoaWNoIHlvdSBzdG9yZSBpbgorbWVtb3J5IGFyZSBub3Qgc2ltcGx5IDAncyBhbmQgMSdzLiAgU28geW91IGhhdmUgdG8gaGF2ZSBhIHdheSBpbgoreW91ciBwcm9ncmFtbWluZyBsYW5ndWFnZXMgb2YgdGVsbGluZyB0aGUgY29tcHV0ZXIgd2hldGhlciBvciBub3QKK3RoZSAwJ3MgYW5kIDEncyBzaG91bGQgYmUgdHJlYXRlZCBhcyBkZWNpbWFsIG51bWJlcnMgb3IgY2hhcmFjdGVycyBvcgorc3RyaW5ncyBvciBhbnl0aGluZyBlbHNlLiAgWW91IGRvIHRoaXMgdGhyb3VnaCB0aGUgdXNlIG9mIGRhdGEgdHlwZXMuCisKK0ZvciBleGFtcGxlLCBzYXkgeW91IGhhdmUgYSB2YXJpYWJsZSB3aGljaCB5b3UgY2FsbCAneCcgYW5kIHlvdSBnaXZlCitpdCB0aGUgZGVjaW1hbCB3aG9sZSBudW1iZXIgdmFsdWUgNjUuICBJbiBMUEMgeW91IHdvdWxkIGRvIHRoaXMgdGhyb3VnaAordGhlIHN0YXRlbWVudDoKKworLS0tLS0KK3ggPSA2NTsKKy0tLS0tCisKK1lvdSBjYW4gbGF0ZXIgZG8gdGhpbmdzIGxpa2U6CisKK19fX19fCit3cml0ZSh4KyJcbiIpOyAgICAgICAgLyogXG4gaXMgc3ltYm9saWNhbGx5IHJlcHJlc2VudHMgYSBjYXJyaWFnZSByZXR1cm4gKi8KK3kgPSB4ICsgNTsKKy0tLS0tCisKK1RoZSBmaXJzdCBsaW5lIGFsbG93cyB5b3UgdG8gc2VuZCA2NSBhbmQgYSBjYXJyaWFnZSByZXR1cm4gdG8gc29tZW9uZSdzIHNjcmVlbi4KK1RoZSBzZWNvbmQgbGluZSBsZXRzIHlvdSBzZXQgdGhlIHZhbHVlIG9mIHkgdG8gNzAuCitUaGUgcHJvYmxlbSBmb3IgdGhlIGNvbXB1dGVyIGlzIHRoYXQgaXQgZG9lcyBub3Qga25vdyB3aGF0ICc2NScgbWVhbnMgd2hlbgoreW91IHRlbGwgaXQgeCA9IDY1Oy4gIFdoYXQgeW91IHRoaW5rIG9mIDY1LCBpdCBtaWdodCB0aGluayBvZiBhczoKKzAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAxMDAwMDAxCitCdXQsIGFsc28sIHRvIHRoZSBjb21wdXRlciwgdGhlIGxldHRlciAnQScgaXMgcmVwcmVzZW50ZWQgYXM6CiswMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMTAwMDAwMQorU28sIHdoZW5ldmVyIHlvdSBpbnN0cnVjdCB0aGUgY29tcHV0ZXIgd3JpdGUoeCsiXG4iKTssIGl0IG11c3QgaGF2ZSBzb21lCit3YXkgb2Yga25vd2luZyB0aGF0IHlvdSB3YW50IHRvIHNlZSAnNjUnIGFuZCBub3QgJ0EnLgorCitUaGUgY29tcHV0ZXIgY2FuIHRlbGwgdGhlIGRpZmZlcmVuY2UgYmV0d2VlbiAnNjUnIGFuZCAnQScgdGhyb3VnaCB0aGUgdXNlCitvZiBkYXRhIHR5cGVzLiAgQSBkYXRhIHR5cGVzIHNpbXBseSBzYXlzIHdoYXQgdHlwZSBvZiBkYXRhIGlzIGJlaW5nIHN0b3JlZAorYnkgdGhlIG1lbW9yeSBsb2NhdGlvbiBwb2ludGVkIHRvIGJ5IGEgZ2l2ZW4gdmFyaWFibGUuICBUaHVzLCBlYWNoIExQQwordmFyaWFibGUgaGFzIGEgdmFyaWFibGUgdHlwZSB3aGljaCBndWlkZXMgY29udmVyc2lvbnMuICBJbiB0aGUgZXhhbXBsZQorZ2l2ZW4gYWJvdmUsIHlvdSB3b3VsZCBoYXZlIGhhZCB0aGUgZm9sbG93aW5nIGxpbmUgc29tZXdoZXJlIGluIHRoZQorY29kZSAqYmVmb3JlKiB0aGUgbGluZXMgc2hvd24gYWJvdmU6CisKKy0tLS0tCitpbnQgeDsKKy0tLS0tCisKK1RoaXMgb25lIGxpbmUgdGVsbHMgdGhlIGRyaXZlciB0aGF0IHdoYXRldmVyIHZhbHVlIHggcG9pbnRzIHRvLCBpdCB3aWxsCitiZSB1c2VkIGFzIHRoZSBkYXRhIHR5cGUgImludCIsIHdoaWNoIGlzIHNob3J0IGZvciBpbnRlZ2VyLCBvciB3aG9sZQorbnVtYmVyLiAgU28geW91IGhhdmUgYSBiYXNpYyBpbnRyb2R1Y3Rpb24gaW50byB0aGUgcmVhc29uIHdoeSBkYXRhIHR5cGVzCitleGlzdC4gIFRoZXkgZXhpc3Qgc28gdGhlIGRyaXZlciBjYW4gbWFrZSBzZW5zZSBvZiB0aGUgMCdzIGFuZCAxJ3MgdGhhdAordGhlIGNvbXB1dGVyIGlzIHN0b3JpbmcgaW4gbWVtb3J5LgorCiszLjMgVGhlIGRhdGEgdHlwZXMgb2YgTFBDCitBbGwgTFBNdWQgZHJpdmVycyBoYXZlIHRoZSBmb2xsb3dpbmcgZGF0YSB0eXBlczoKKwordm9pZCwgc3RhdHVzLCBpbnQsIHN0cmluZywgb2JqZWN0LCBpbnQgKiwgc3RyaW5nICosIG9iamVjdCAqLCBtaXhlZCAqCisKK01hbnkgZHJpdmVycywgYnV0IG5vdCBhbGwgaGF2ZSB0aGUgZm9sbG93aW5nIGltcG9ydGFudCBkYXRhIHR5cGVzIHdoaWNoCithcmUgaW1wb3J0YW50IHRvIGRpc2N1c3M6CisKK2Zsb2F0LCBtYXBwaW5nLCBmbG9hdCAqLCBtYXBwaW5nICoKKworQW5kIHRoZXJlIGFyZSBhIGZldyBkcml2ZXJzIHdpdGggdGhlIGZvbGxvd2luZyByYXJlbHkgdXNlZCBkYXRhIHR5cGVzCit3aGljaCBhcmUgbm90IGltcG9ydGFudCB0byBkaXNjdXNzOgorCitmdW5jdGlvbiwgZW51bSwgc3RydWN0LCBjaGFyCisKKzMuNCBTaW1wbGUgZGF0YSB0eXBlcworVGhpcyBpbnRyb2R1Y3RvcnkgdGV4dGJvb2sgd2lsbCBkZWFsIHdpdGggdGhlIGRhdGEgdHlwZXMgdm9pZCwgc3RhdHVzLAoraW50LCBmbG9hdCwgc3RyaW5nLCBvYmplY3QsIG1hbmQgbWl4ZWQuICBZb3UgY2FuIGZpbmQgb3V0IGFib3V0IHRoZQorbW9yZSBjb21wbGV4IGRhdGEgdHlwZXMgbGlrZSBtYXBwaW5ncyBhbmQgYXJyYXlzIGluIHRoZSBpbnRlcm1lZGlhdGUKK3RleHRib29rLiAgVGhpcyBjaGFwdGVyIGRlYWxzIHdpdGggdGhlIHR3byBzaW1wbGVzdCBkYXRhIHR5cGVzIChmcm9tIHRoZQorcG9pbnQgb2YgdmlldyBvZiB0aGUgTFBDIGNvZGVyKSwgaW50IGFuZCBzdHJpbmcuCisKK0FuIGludCBpcyBhbnkgd2hvbGUgbnVtYmVyLiAgVGh1cyAxLCA0MiwgLTE3LCAwLCAtMTAwMDAwMjMgYXJlIGFsbCB0eXBlIGludC4KK0Egc3RyaW5nIGlzIG9uZSBvciBtb3JlIGFscGhhbnVtZXJpYyBjaGFyYWN0ZXJzLiAgVGh1cyAiYSIsICJ3ZSBhcmUgYm9yZyIsCisiNDIiLCAiVGhpcyBpcyBhIHN0cmluZyIgYXJlIGFsbCBzdHJpbmdzLiAgTm90ZSB0aGF0IHN0cmluZ3MgYXJlIGFsd2F5cworZW5jbG9zZWQgaW4gIiIgdG8gYWxsb3cgdGhlIGRyaXZlciB0byBkaXN0aW5ndWlzaCBiZXR3ZWVuIHRoZSBpbnQgNDIgYW5kCit0aGUgc3RyaW5nICI0MiIgYXMgd2VsbCBhcyB0byBkaXN0aW5ndWlzaCBiZXR3ZWVuIHZhcmlhYmxlIG5hbWVzIChsaWtlIHgpCithbmQgc3RyaW5ncyBieSB0aGUgc2FtZSBuYW1lcyAobGlrZSAieCIpLgorCitXaGVuIHlvdSB1c2UgYSB2YXJpYWJsZSBpbiBjb2RlLCB5b3UgbXVzdCBmaXJzdCBsZXQgdGhlIGRyaXZlciBrbm93Cit3aGF0IHR5cGUgb2YgZGF0YSB0byB3aGljaCB0aGF0IHZhcmlhYmxlIHBvaW50cy4gIFRoaXMgcHJvY2VzcyBpcworY2FsbGVkICpkZWNsYXJhdGlvbiouICBZb3UgZG8gdGhpcyBhdCB0aGUgYmVnaW5uaW5nIG9mIHRoZSBmdW5jdGlvbgorb3IgYXQgdGhlIGJlZ2lubmluZyBvZiB0aGUgb2JqZWN0IGNvZGUgKG91dHNpZGUgb2YgZnVuY3Rpb25zIGJlZm9yZSBhbGwKK2Z1bmN0aW9ucyB3aGljaCB1c2UgaXQpLiAgVGhpcyBpcyBkb25lIGJ5IHBsYWNpbmcgdGhlIG5hbWUgb2YgdGhlIGRhdGEgdHlwZQorYmVmb3JlIHRoZSBuYW1lIG9mIHRoZSB2YXJpYWJsZSBsaWtlIGluIHRoZSBmb2xsb3dpbmcgZXhhbXBsZToKKworLS0tLS0KK3ZvaWQgYWRkX3R3b19hbmRfdHdvKCkgeworICAgIGludCB4OworICAgIGludCB5OworCisgICAgeCA9IDI7CisgICAgeSA9IHggKyB4OworfQorLS0tLS0KKworTm93LCB0aGlzIGlzIGEgY29tcGxldGUgZnVuY3Rpb24uICBUaGUgbmFtZSBvZiB0aGUgZnVuY3Rpb24gaXMgCithZGRfdHdvX2FuZF90d28oKS4gIFRoZSBmdW5jdGlvbiBiZWdpbnMgd2l0aCB0aGUgZGVjbGFyYXRpb24gb2YgYW4KK2ludCB2YXJpYWJsZSBuYW1lZCB4IGZvbGxvd2VkIGJ5IHRoZSBkZWNsYXJhdGlvbiBvZiBhbiBpbiB2YXJpYWJsZQorbmFtZWQgeS4gIFNvIG5vdywgYXQgdGhpcyBwb2ludCwgdGhlIGRyaXZlciBub3cgaGFzIHR3byB2YXJpYWJsZXMgd2hpY2gKK3BvaW50IHRvIE5VTEwgdmFsdWVzLCBhbmQgaXQgZXhwZWN0cyB3aGF0IGV2ZXIgdmFsdWVzIGVuZCB1cCB0aGVyZSB0byBiZQorb2YgdHlwZSBpbnQuCisKK0Egbm90ZSBhYm91dCB0aGUgZGF0YSB0eXBlcyB2b2lkIGFuZCBzdGF0dXM6CitWb2lkIGlzIGEgdHJpdmlhbCBkYXRhIHR5cGUgd2hpY2ggcG9pbnRzIHRvIG5vdGhpbmcuICBJdCBpcyBub3QgdXNlZAord2l0aCByZXNwZWN0IHRvIHZhcmlhYmxlcywgYnV0IGluc3RlYWQgd2l0aCByZXNwZWN0IHRvIGZ1bmN0aW9ucy4gIFlvdQord2lsbCBjb21lIHRvIHVuZGVyc3RhbmQgdGhpcyBiZXR0ZXIgbGF0ZXIuICBGb3Igbm93LCB5b3UgbmVlZCBvbmx5Cit1bmRlcnN0YW5kIHRoYXQgaXQgcG9pbnRzIHRvIG5vIHZhbHVlLiAgCisKK1RoZSBkYXRhIHR5cGUgc3RhdHVzIGlzIGEgYm9vbGVhbiBkYXRhIHR5cGUuICBUaGF0IGlzLCBpdCBjYW4gb25seSBoYXZlCisxIG9yIDAgYXMgYSB2YWx1ZS4gIFRoaXMgaXMgb2Z0ZW4gcmVmZXJyZWQgdG8gYXMgYmVpbmcgdHJ1ZSBvciBmYWxzZS4KKworMy41IENoYXB0ZXIgc3VtbWFyeQorRm9yIHZhcmlhYmxlcywgdGhlIGRyaXZlciBuZWVkcyB0byBrbm93IGhvdyB0aGUgMCdzIGFuZCAxJ3MgdGhlIGNvbXB1dGVyCitzdG9yZXMgaW4gbWVtb3J5IGdldCBjb252ZXJ0ZWQgaW50byB0aGUgZm9ybXMgaW4gd2hpY2ggeW91IGludGVuZCB0aGVtCit0byBiZSB1c2VkLiAgVGhlIHNpbXBsZXN0IExQQyBkYXRhIHR5cGVzIGFyZSB2b2lkLCBzdGF0dXMsIGludCwgYW5kIHN0cmluZy4KK1lvdSBkbyBub3QgdXNlciB2YXJpYWJsZXMgb2YgdHlwZSB2b2lkLCBidXQgdGhlIGRhdGEgdHlwZSBkb2VzIGNvbWUKK2ludG8gcGxheSB3aXRoIHJlc3BlY3QgdG8gZnVuY3Rpb25zLiAgSW4gYWRkaXRpb24gdG8gYmVpbmcgdXNlZCBmb3IKK3RyYW5zbGF0aW9uIGZyb20gb25lIGZvcm0gdG8gdGhlIG5leHQsIGRhdGEgdHlwZXMgYXJlIHVzZWQgaW4gZGV0ZXJtaW5pbmcKK3doYXQgcnVsZXMgdGhlIGRyaXZlciB1c2VzIGZvciBzdWNoIG9wZXJhdGlvbnMgYXMgKywgLSwgZXRjLiAgRm9yIGV4YW1wbGUsCitpbiB0aGUgZXhwcmVzc2lvbiA1KzUsIHRoZSBkcml2ZXIga25vd3MgdG8gYWRkIHRoZSB2YWx1ZXMgb2YgNSBhbmQgNQordG9nZXRoZXIgdG8gbWFrZSAxMC4gIFdpdGggc3RyaW5ncyBob3dldmVyLCB0aGUgcnVsZXMgZm9yIGludCBhZGRpdGlvbgorbWFrZSBubyBzZW5zZS4gIFNvIGluc3RlYWQsIHdpdGggImEiKyJiIiwgaXQgYXBwZW5kcyAiYiIgdG8gdGhlIHN0cmluZyAiYSIKK3NvIHRoYXQgdGhlIGZpbmFsIHN0cmluZyBpcyAiYWIiLiAgRXJyb3JzIGNhbiB0aHVzIHJlc3VsdCBpZiB5b3UgbWlzdGFrZW5seQordHJ5IHRvIGFkZCAiNSIrNS4gIFNpbmNlIGludCBhZGRpdGlvbiBtYWtlcyBubyBzZW5zZSB3aXRoIHN0cmluZ3MsIHRoZQorZHJpdmVyIHdpbGwgY29udmVydCB0aGUgc2Vjb25kIDUgdG8gIjUiIGFuZCB1c2Ugc3RyaW5nIGFkZGl0aW9uLiAgVGhlIGZpbmFsCityZXN1bHQgd291bGQgYmUgIjU1Ii4gIElmIHlvdSB3ZXJlIGxvb2tpbmcgZm9yIDEwLCB5b3Ugd291bGQgdGhlcmVmb3JlCitoYXZlIGVuZGVkIHVwIHdpdGggZXJyb25lb3VzIGNvZGUuICBLZWVwIGluIG1pbmQsIGhvd2V2ZXIsIHRoYXQgaW4gbW9zdAoraW5zdGFuY2VzLCB0aGUgZHJpdmVyIHdpbGwgbm90IGRvIHNvbWV0aGluZyBzbyB1c2VmdWwgYXMgY29taW5nIHVwIHdpdGgKKyI1NSIuICBJdCBjb21lcyB1cCB3aXRoICI1NSIgY2F1c2UgaXQgaGFzIGEgcnVsZSBmb3IgYWRkaW5nIGEgc3RyaW5nCit0byBhbiBpbnQsIG5hbWVseSB0byB0cmVhdCB0aGUgaW50IGFzIGEgc3RyaW5nLiAgSW4gbW9zdCBjYXNlcywgaWYgeW91Cit1c2UgYSBkYXRhIHR5cGUgZm9yIHdoaWNoIGFuIG9wZXJhdGlvbiBvciBmdW5jdGlvbiBpcyBub3QgZGVmaW5lZAorKGxpa2UgaWYgeW91IHRyaWVkIHRvIGRpdmlkZSAidGhpcyBpcyIgYnkgIm5vbnNlbnNlIiwgInRoaXMgaXMiLyJub25zZW5zZSIpLAordGhlIGRyaXZlciB3aWxsIGJhcmYgYW5kIHJlcG9ydCBhbiBlcnJvciB0byB5b3UuCmRpZmYgLS1naXQgYS9kb2MvS1VSUy9MUEMtS1VSUy9jaGFwdGVyNCBiL2RvYy9LVVJTL0xQQy1LVVJTL2NoYXB0ZXI0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjRmNDRjZGMKLS0tIC9kZXYvbnVsbAorKysgYi9kb2MvS1VSUy9MUEMtS1VSUy9jaGFwdGVyNApAQCAtMCwwICsxLDIyNSBAQAorICAgICAgICAgICAgICAgICAgICAgICAgICAgTFBDIEJhc2ljcworICAgICAgICAgICAgICAgICAgV3JpdHRlbiBieSBEZXNjYXJ0ZXMgb2YgQm9yZworICAgICAgICAgICAgICAgICAgZmlyc3QgZWRpdGlvbjogMjMgYXByaWwgMTk5MworICAgICAgICAgICAgICAgICAgc2Vjb25kIGVkaXRpb246IDIyIGp1bmUgMTk5MworCitDSEFQVEVSIDQ6IEZ1bmN0aW9ucworCis0LjEgUmV2aWV3CitCeSB0aGlzIHBvaW50LCB5b3Ugc2hvdWxkIGJlIGF3YXJlIHRoYXQgTFBDIG9iamVjdHMgY29uc2lzdCBvZiBmdW5jdGlvbnMKK3doaWNoIG1hbmlwdWxhdGUgdmFyaWFibGVzLiAgVGhlIGZ1bmN0aW9ucyBtYW5pcHVsYXRlIHZhcmlhYmxlcyB3aGVuIHRoZXkKK2FyZSBleGVjdXRlZCwgYW5kIHRoZXkgZ2V0IGV4ZWN1dGVkIHRocm91Z2ggKmNhbGxzKiB0byB0aG9zZSBmdW5jdGlvbnMuCitUaGUgb3JkZXIgaW4gd2hpY2ggdGhlIGZ1bmN0aW9ucyBhcmUgcGxhY2VkIGluIGEgZmlsZSBkb2VzIG5vdCBtYXR0ZXIuCitJbnNpZGUgYSBmdW5jdGlvbiwgdGhlIHZhcmlhYmxlcyBnZXQgbWFuaXB1bGF0ZWQuICBUaGV5IGFyZSBzdG9yZWQgaW4KK2NvbXB1dGVyIG1lbW9yeSBhbmQgdXNlZCBieSB0aGUgY29tcHV0ZXIgYXMgMCdzIGFuZCAxJ3Mgd2hpY2gKK2dldCB0cmFuc2xhdGVkIHRvIGFuZCBmcm9tIHVzZWFibGUgb3V0cHV0IGFuZCBpbnB1dCB0aHJvdWdoIGEgZGV2aWNlCitjYWxsZWQgZGF0YSB0eXBpbmcuICBTdHJpbmcgZGF0YSB0eXBlcyB0ZWxsIHRoZSBkcml2ZXIgdGhhdCB0aGUKK2RhdGEgc2hvdWxkIGFwcGVhciB0byB5b3UgYW5kIGNvbWUgZnJvbSB5b3UgaW4gdGhlIGZvcm0gb2YgYWxwaGFudW1lcmljCitjaGFyYWN0ZXJzLiAgVmFyaWFibGVzIG9mIHR5cGUgaW50IGFyZSByZXByZXNlbnRlZCB0byB5b3UgYXMgd2hvbGUKK251bWJlciB2YWx1ZXMuICBUeXBlIHN0YXR1cyBpcyByZXByZXNlbnRlZCB0byB5b3UgYXMgZWl0aGVyIDEgb3IgMC4KK0FuZCBmaW5hbGx5IHR5cGUgdm9pZCBoYXMgbm8gdmFsdWUgdG8geW91IG9yIHRoZSBtYWNoaW5lLCBhbmQgaXMgbm90CityZWFsbHkgdXNlZCB3aXRoIHZhcmlhYmxlIGRhdGEgdHlwZXMuCisKKzQuMiBXaGF0IGlzIGEgZnVuY3Rpb24/CitMaWtlIG1hdGggZnVuY3Rpb25zLCBMUEMgZnVuY3Rpb25zIHRha2UgaW5wdXQgYW5kIHJldHVybiBvdXRwdXQuCitMYW5ndWFnZXMgbGlrZSBQYXNjYWwgZGlzdGluZ3Vpc2ggYmV0d2VlbiB0aGUgY29uY2VwdCBvZiBwcm9jZWVkdXJlIGFiZAordGhlIGNvbmNlcHQgb2YgZnVuY3Rpb24uICBMUEMgZG9lcyBub3QsIGhvd2V2ZXIsIGl0IGlzIHVzZWZ1bCB0bwordW5kZXJzdGFuZCB0aGlzIGRpc3RpbmN0aW9uLiAgV2hhdCBQYXNjYWwgY2FsbHMgYSBwcm9jZWVkdXJlLCBMUEMKK2NhbGxzIGEgZnVuY3Rpb24gb2YgdHlwZSB2b2lkLiAgSW4gb3RoZXIgd29yZHMsIGEgcHJvY2VlZHVyZSwgb3IgZnVuY3Rpb24KK29mIHR5cGUgdm9pZCByZXR1cm5zIG5vIG91dHB1dC4gIFdoYXQgUGFzY2FsIGNhbGxzIGEgZnVuY3Rpb24gZGlmZmVycworaW4gdGhhdCBpdCBkb2VzIHJldHVybiBvdXRwdXQuICBJbiBMUEMsIHRoZSBtb3N0IHRyaXZpYWwsIGNvcnJlY3QKK2Z1bmN0aW9uIGlzOgorCistLS0tLQordm9pZCBkb19ub3RoaW5nKCkgeyB9CistLS0tLQorCitUaGlzIGZ1bmN0aW9uIGFjY2VwdHMgbm8gaW5wdXQsIHBlcmZvcm1zIG5vIGluc3RydWN0aW9ucywgYW5kIHJldHVybnMgbm8KK3ZhbHVlLgorCitUaGVyZSBhcmUgdGhyZWUgcGFydHMgdG8gZXZlcnkgcHJvcGVybHkgd3JpdHRlbiBMUEMgZnVuY3Rpb246CisxKSBUaGUgZGVjbGFyYXRpb24KKzIpIFRoZSBkZWZpbml0aW9uCiszKSBUaGUgY2FsbAorCitMaWtlIHdpdGggdmFyaWFibGVzLCBmdW5jdGlvbnMgbXVzdCBiZSBkZWNsYXJlZC4gIFRoaXMgd2lsbCBhbGxvdyB0aGUKK2RyaXZlciB0byBrbm93IDEpIHdoYXQgdHlwZSBvZiBkYXRhIHRoZSBmdW5jdGlvbiBpcyByZXR1cm5pbmcgYXMgb3V0cHV0LAorYW5kIDIpIGhvdyBtYW55IGlucHV0KHMpIGFuZCBvZiB3aGF0IHR5cGUgdGhvc2UgaW5wdXQocykgYXJlLiAgVGhlCittb3JlIGNvbW1vbiB3b3JkIGZvciBpbnB1dCBpcyBwYXJhbWV0ZXJzLgorQSBmdW5jdGlvbiBkZWNsYXJhdGlvbiB0aGVyZWZvcmUgY29uc2lzdHMgb2Y6Cit0eXBlIG5hbWUocGFyYW1ldGVyMSwgcGFyYW1ldGVyMiwgLi4uLCBwYXJhbWV0ZXJOKTsKK1RoZSBkZWNsYXJhdGlvbiBvZiBhIGZ1bmN0aW9uIGNhbGxlZCBkcmlua193YXRlcigpIHdoaWNoIGFjY2VwdHMgYSBzdHJpbmcgYXMKK2lucHV0IGFuZCBhbiBpbnQgYXMgb3V0cHV0IHdvdWxkIHRodXMgbG9vayBsaWtlIHRoaXM6CisKKy0tLS0tCitpbnQgZHJpbmtfd2F0ZXIoc3RyaW5nIHN0cik7CistLS0tLQorCit3aGVyZSBzdHIgaXMgdGhlIG5hbWUgb2YgdGhlIGlucHV0IGFzIGl0IHdpbGwgYmUgdXNlZCBpbnNpZGUgdGhlIGZ1bmN0aW9uLgorCitUaGUgZnVuY3Rpb24gZGVmaW5pdGlvbiBpcyB0aGUgY29kZSB3aGljaCBkZXNjcmliZXMgd2hhdCB0aGUgZnVuY3Rpb24gYWN0dWFsbHkKK2RvZXMgd2l0aCB0aGUgaW5wdXQgc2VudCB0byBpdC4gIAorVGhlIGNhbGwgaXMgYW55IHBsYWNlIGluIG90aGVyIGZ1bmN0aW9ucyB3aGljaCBpbnZva2VzIHRoZSBleGVjdXRpb24gb2YgdGhlCitmdW5jdGlvbiBpbiBxdWVzdGlvbi4gIEZvciB0d28gZnVuY3Rpb25zIHdyaXRlX3ZhbHMoKSBhbmQgYWRkKCksIHlvdSB0aHVzCittaWdodCBoYXZlIHRoZSBmb2xsb3dpbmcgYml0IG9mIGNvZGU6CisKKy0tLS0tCisvKiBGaXJzdCwgZnVuY3Rpb24gZGVjbGFyYXRpb25zLiAgVGhleSB1c3VhbGx5IGFwcGVhciBhdCB0aGUgYmVnaW5uaW5nCisgICBvZiBvYmplY3QgY29kZS4gCisqLwordm9pZCB3cml0ZV92YWxzKCk7CitpbnQgYWRkKGludCB4LCBpbnQgeSk7CisKKy8qIE5leHQsIHRoZSBkZWZpbml0aW9uIG9mIHRoZSBmdW5jdGlvbiB3cml0ZV92YWxzKCkuICBXZSBhc3N1bWUgdGhhdAorICAgdGhpcyBmdW5jdGlvbiBpcyBnb2luZyB0byBiZSBjYWxsZWQgZnJvbSBvdXRzaWRlIHRoZSBvYmplY3QKKyovCit2b2lkIHdyaXRlX3ZhbHMoKSB7CisgICAgaW50IHg7CisKKyAgICAvKk4gTm93IHdlIGFzc2lnbiB4IHRoZSB2YWx1ZSBvZiB0aGUgb3V0cHV0IG9mIGFkZCgpIHRocm91Z2ggYSBjYWxsICovCisgICAgeCA9IGFkZCgyLCAyKTsKKyAgICB3cml0ZSh4KyJcbiIpOworfQorCisvKiBGaW5hbGx5LCB0aGUgZGVmaW5pdGlvbiBvZiBhZGQoKSAqLworaW50IGFkZChpbnQgeCwgaW50IHkpIHsKKyAgICByZXR1cm4gKHggKyB5KTsKK30KKy0tLS0tCisKK1JlbWVtYmVyLCBpdCBkb2VzIG5vdCBtYXR0ZXIgd2hpY2ggZnVuY3Rpb24gZGVmaW5pdGlvbiBhcHBlYXJzIGZpcnN0IGluIHRoZQorY29kZS4gIFRoaXMgaXMgYmVjYXVzZSBmdW5jdGlvbnMgYXJlIG5vdCBleGVjdXRlZCBjb25zZWN1dGl2ZWx5LiAgSW5zdGVhZCwKK2Z1bmN0aW9ucyBhcmUgZXhlY3V0ZWQgYXMgY2FsbGVkLiAgVGhlIG9ubHkgcmVxdWlyZW1lbnQgaXMgdGhhdCB0aGUKK2RlY2xhcmF0aW9uIG9mIGEgZnVuY3Rpb24gYXBwZWFyIGJlZm9yZSBpdHMgZGVmaW5pdGlvbiBhbmQgYmVmb3JlIHRoZQorZGVmaW5pdGlvbiBvZiBhbnkgZnVuY3Rpb24gd2hpY2ggbWFrZXMgYSBjYWxsIHRvIGl0LgorCis0LjMgRWZ1bnMKK1BlcmhhcHMgeW91IGhhdmUgaGVhcmQgcGVvcGxlIHJlZmVyIHRvIGVmdW5zLiAgVGhleSBhcmUgZXh0ZXJuYWxseSBkZWZpbmVkCitmdW5jdGlvbnMuICBOYW1lbHksIHRoZXkgYXJlIGRlZmluZWQgYnkgdGhlIG11ZCBkcml2ZXIuICBJZiB5b3UgaGF2ZQorcGxheWVkIGFyb3VuZCBhdCBhbGwgd2l0aCBjb2RpbmcgaW4gTFBDLCB5b3UgaGF2ZSBwcm9iYWJseSBmb3VuZCBzb21lCitleHByZXNzaW9ucyB5b3Ugd2VyZSB0b2xkIHRvIHVzZSBsaWtlIHRoaXNfcGxheWVyKCksIHdyaXRlKCksIHNheSgpLAordGhpc19vYmplY3QoKSwgZXRjLiBsb29rIGEgbG90IGxpa2UgZnVuY3Rpb25zLiAgVGhhdCBpcyBiZWNhdXNlIHRoZXkgYXJlCitlZnVucy4gIFRoZSB2YWx1ZSBvZiBlZnVucyBpcyB0aGF0IHRoZXkgYXJlIG11Y2ggZmFzdGVyIHRoYW4gTFBDIGZ1bmN0aW9ucywKK3NpbmNlIHRoZXkgYWxyZWFkeSBleGlzdCBpbiB0aGUgYmluYXJ5IGZvcm0gdGhlIGNvbXB1dGVyIHVuZGVyc3RhbmRzLgorCitJbiB0aGUgZnVuY3Rpb24gd3JpdGVfdmFscygpIGFib3ZlLCB0d28gZnVuY3Rpb25zIGNhbGxzIHdlcmUgbWFkZS4gIFRoZSBmaXJzdCB3YXMgdG8KK3RoZSBmdW5jdGlvbnMgYWRkKCksIHdoaWNoIHlvdSBkZWNsYXJlZCBhbmQgZGVmaW5lZC4gIFRoZSBzZWNvbmQgY2FsbCwgaG93ZXZlciwKK3dhcyB0byBhIGZ1bmN0aW9uIGNhbGxlZCB3cml0ZSgpLCBhbmQgZWZ1bi4gIFRoZSBkcml2ZXIgaGFzIGFscmVhZHkgZGVjbGFyZWQKK2FuZCBkZWZpbmVkIHRoaXMgZnVuY3Rpb24gZm9yIHlvdS4gIFlvdSBuZWVkcyBvbmx5IHRvIG1ha2UgY2FsbHMgdG8gaXQuCisKK0VmdW5zIGFyZSBjcmVhdGVkIHRvIGhhbmxkbGUgY29tbW9uLCBldmVyeSBkYXkgZnVuY3Rpb24gY2FsbHMsIHRvIGhhbmRsZQoraW5wdXQvb3V0cHV0IHRvIHRoZSBpbnRlcm5ldCBzb2NrZXRzLCBhbmQgb3RoZXIgbWF0dGVycyBkaWZmaWN1bHQgdG8gYmUKK2RlYWx0IHdpdGggaW4gTFBDLiAgVGhleSBhcmUgd3JpdHRlbiBpbiBDIGluIHRoZSBnYW1lIGRyaXZlciBhbmQgY29tcGlsZWQKK2Fsb25nIHdpdGggdGhlIGRyaXZlciBiZWZvcmUgdGhlIG11ZCBjb21lcyB1cCwgbWFraW5nIHRoZW0gbXVjaCBmYXN0ZXIKK2luIGV4ZWN1dGlvbi4gIEJ1dCBmb3IgeW91ciBwdXJwb3NlcywgZWZ1biBjYWxscyBhcmUganVzdCBsaWtlIGNhbGxzCittYWRlIHRvIHlvdXIgZnVuY3Rpb25zLiAgU3RpbGwsIGl0IGlzIGltcG9ydGFudCB0byBrbm93IHR3byB0aGluZ3Mgb2YgYW55CitlZnVuOiAxKSB3aGF0IHJldHVybiB0eXBlIGRvZXMgaXQgaGF2ZSwgYW5kIDIpIHdoYXQgcGFyYW1ldGVycyBvZiB3aGF0Cit0eXBlcyBkb2VzIGl0IHRha2UuCisKK0luZm9ybWF0aW9uIG9uIGVmdW5zIHN1Y2ggYXMgaW5wdXQgcGFyYW1ldGVycyBhbmQgcmV0dXJuIHR5cGVzIGlzIG9mdGVuCitmb3VuZCBpbiBhIGRpcmVjdG9yeSBjYWxsZWQgL2RvYy9lZnVuIG9uIHlvdXIgbXVkLiAgSSBjYW5ub3QKK2RldGFpbCBlZnVucyBoZXJlLCBiZWNhdXNlIGVmdW5zIHZhcnkgZnJvbSBkcml2ZXIgdG8gZHJpdmVyLiAgSG93ZXZlciwKK3lvdSBjYW4gb2Z0ZW4gYWNjZXNzIHRoaXMgaW5mb3JtYXRpb24gdXNpbmcgdGhlIGNvbW1hbmRzICJtYW4iIG9yICJoZWxwIgorZGVwZW5kaW5nIG9uIHlvdXIgbXVkbGliLiAgRm9yIGluc3RhbmNlLCB0aGUgY29tbWFuZCAibWFuIHdyaXRlIiB3b3VsZAorZ2l2ZSB5b3UgaW5mb3JtYXRpb24gb24gdGhlIHdyaXRlIGVmdW4uICBCdXQgaWYgYWxsIGVsc2UgZmFpbHMsCisibW9yZSAvZG9jL2VmdW4vd3JpdGUiIHNob3VsZCB3b3JrLgorCitCeSBsb29raW5nIGl0IHVwLCB5b3Ugd2lsbCBmaW5kIHdyaXRlIGlzIGRlY2xhcmVkIGFzIGZvbGxvd3M6CisKKy0tLS0tCit2b2lkIHdyaXRlKHN0cmluZyk7CistLS0tLQorCitUaGlzIHRlbGxzIHlvdSBhbiBhcHByb3ByaWF0ZSBjYWxsIHRvIHdyaXRlIGV4cGVjdHMgbm8gcmV0dXJuIHZhbHVlIGFuZAorcGFzc2VzIGEgc2luZ2xlIHBhcmFtZXRlciBvZiB0eXBlIHN0cmluZy4KKworNC40IERlZmluaW5nIHlvdXIgb3duIGZ1bmN0aW9ucworQWx0aG91Z2ggb3JkZXJpbmcgeW91ciBmdW5jdGlvbnMgd2l0aGluIHRoZSBmaWxlIGRvZXMgbm90IG1hdHRlciwgb3JkZXJpbmcKK3RoZSBjb2RlIHdoaWNoIGRlZmluZXMgYSBmdW5jdGlvbiBpcyBtb3N0IGltcG9ydGFudC4gIE9uY2UgYSBmdW5jdGlvbgoraGFzIGJlZW4gY2FsbGVkLCBmdW5jdGlvbiBjb2RlIGlzIGV4ZWN1dGVkIGluIHRoZSBvcmRlciBpdCBhcHBlYXJzCitpbiB0aGUgZnVuY3Rpb24gZGVmaW5pdGlvbi4gIEluIHdyaXRlX3ZhbHMoKSBhYm92ZSwgdGhlIGluc3RydWN0aW9uOgorICAgIAorLS0tLS0KK3ggPSBhZGQoMiwgMik7CistLS0tLQorCitNdXN0IGNvbWUgYmVmb3JlIHRoZSB3cml0ZSgpIGVmdW4gY2FsbCBpZiB5b3Ugd2FudCB0byBzZWUgdGhlIGFwcHJvcHJpYXRlCit2YWx1ZSBvZiB4IHVzZWQgaW4gd3JpdGUoKS4gIAorCitXaXRoIHJlc3BlY3QgdG8gdmFsdWVzIHJldHVybmVkIGJ5IGZ1bmN0aW9uLCB0aGlzIGlzIGRvbmUgdGhyb3VnaCB0aGUgInJldHVybiIKK2luc3RydWN0aW9uIGZvbGxvd2VkIGJ5IGEgdmFsdWUgb2YgdGhlIHNhbWUgZGF0YSB0eXBlIGFzIHRoZSBmdW5jdGlvbi4gIEluCithZGQoKSBhYm92ZSwgdGhlIGluc3RydWN0aW9uIGlzICJyZXR1cm4gKHgreSk7Iiwgd2hlcmUgdGhlIHZhbHVlIG9mICh4K3kpCitpcyB0aGUgdmFsdWUgcmV0dXJuZWQgdG8gd3JpdGVfdmFscygpIGFuZCBhc3NpZ25lZCB0byB4LiAgT24gYSBtb3JlCitnZW5lcmFsIGxldmVsLCAicmV0dXJuIiBoYWx0cyB0aGUgZXhlY3V0aW9uIG9mIGEgZnVuY3Rpb24gYW5kIHJldHVybnMKK2NvZGUgZXhlY3V0aW9uIHRvIHRoZSBmdW5jdGlvbiB3aGljaCBjYWxsZWQgdGhhdCBmdW5jdGlvbi4gIEluIGFkZGl0aW9uLAoraXQgcmV0dXJucyB0byB0aGUgY2FsbGluZyBmdW5jdGlvbiB0aGUgdmFsdWUgb2YgYW55IGV4cHJlc3Npb24gdGhhdCBmb2xsb3dzLgorVG8gc3RvcCB0aGUgZXhlY3V0aW9uIG9mIGEgZnVuY3Rpb24gb2YgdHlwZSB2b2lkIG91dCBvZiBvcmRlciwgdXNlCisicmV0dXJuIjsgd2l0aG91dCBhbnkgdmFsdWUgZm9sbG93aW5nLiAgT25jZSBhZ2FpbiwgcmVtZW1iZXIsIHRoZSBkYXRhCit0eXBlIG9mIHRoZSB2YWx1ZSBvZiBhbnkgZXhwcmVzc2lvbiByZXR1cm5lZCB1c2luZyAicmV0dXJuIiBNVVNUIGJlIHRoZQorc2FtZSBhcyB0aGUgZGF0YSB0eXBlIG9mIHRoZSBmdW5jdGlvbiBpdHNlbGYuCisKKzQuNSBDaGFwdGVyIFN1bW1hcnkKK1RoZSBmaWxlcyB3aGljaCBkZWZpbmUgTFBDIG9iamVjdHMgYXJlIG1hZGUgb2Ygb2YgZnVuY3Rpb25zLiAgRnVuY3Rpb25zLCBpbgordHVybiwgYXJlIG1hZGUgdXAgb2YgdGhyZWUgcGFydHM6CisgICAgMSkgVGhlIGRlY2xhcmF0aW9uCisgICAgMikgVGhlIGRlZmluaXRpb24KKyAgICAzKSBUaGUgY2FsbAorRnVuY3Rpb24gZGVjbGFyYXRpb25zIGdlbmVyYWxseSBhcHBlYXIgYXQgdGhlIHRvcCBvZiB0aGUgZmlsZSBiZWZvcmUgYW55CitkZWZpbnRpb25zLCBhbHRob3VnaCB0aGUgcmVxdWlyZW1lbnQgaXMgdGhhdCB0aGUgZGVjbGFyYXRpb24gbXVzdCBhcHBlYXIKK2JlZm9yZSB0aGUgZnVuY3Rpb24gZGVmaW5pdGlvbiBhbmQgYmVmb3JlIHRoZSBkZWZpbml0aW9uIG9mIGFueSBmdW5jdGlvbgord2hpY2ggY2FsbHMgaXQuCitGdW5jdGlvbiBkZWZpbml0aW9ucyBtYXkgYXBwZWFyIGluIHRoZSBmaWxlIGluIGFueSBvcmRlciBzbyBsb25nIGFzIHRoZXkKK2NvbWUgYWZ0ZXIgdGhlaXIgZGVjbGFyYXRpb24uICBJbiBhZGRpdGlvbiwgeW91IG1heSBub3QgZGVmaW5lIG9uZSBmdW5jdGlvbgoraW5zaWRlIGFub3RoZXIgZnVuY3Rpb24uCitGdW5jdGlvbiBjYWxscyBhcHBlYXIgaW5zaWRlIHRoZSBkZWZpbml0aW9uIG9mIG90aGVyIGZ1bmN0aW9ucyB3aGVyZSB5b3UKK3dhbnQgdGhlIGNvZGUgdG8gYmVnaW4gZXhlY3V0aW9uIG9mIHlvdXIgZnVuY3Rpb24uICBUaGV5IG1heSBhbHNvIGFwcGVhcgord2l0aGluIHRoZSBkZWZpbml0aW9uIG9mIHRoZSBmdW5jdGlvbiBpdHNlbGYsIGJ1dCB0aGlzIGlzIG5vdCByZWNvbW1lbmRlZAorZm9yIG5ldyBjb2RlcnMsIGFzIGl0IGNhbiBlYXNpbHkgbGVhZCB0byBpbmZpbml0ZSBsb29wcy4KKworVGhlIGZ1bmN0aW9uIGRlZmluaXRpb24gY29uc2lzdHMgb2YgdGhlIGZvbGxvd2luZyBpbiB0aGlzIG9yZGVyOgorICAgIDEpIGZ1bmN0aW9uIHJldHVybiB0eXBlCisgICAgMikgZnVuY3Rpb24gbmFtZQorICAgIDMpIG9wZW5pbmcgKCBmb2xsb3dlZCBieSBhIHBhcmFtZXRlciBsaXN0IGFuZCBhIGNsb3NpbmcgKQorICAgIDQpIGFuIG9wZW5pbmcgeyBpbnN0cnVjdGluZyB0aGUgZHJpdmVyIHRoYXQgZXhlY3V0aW9uIGJlZ2lucyBoZXJlCisgICAgNSkgZGVjbGFyYXRpb25zIG9mIGFueSB2YXJpYWJsZXMgdG8gYmUgdXNlZCBvbmx5IGluIHRoYXQgZnVuY3Rpb24KKyAgICA2KSBpbnN0cnVjdGlvbnMsIGV4cHJlc3Npb25zLCBhbmQgY2FsbHMgdG8gb3RoZXIgZnVuY3Rpb25zIGFzIG5lZWRlZAorICAgIDcpIGEgY2xvc2luZyB9IHN0YXRpbmcgdGhhdCB0aGUgZnVuY3Rpb24gY29kZSBlbmRzIGhlcmUgYW5kLCBpZiBubworICAgICAgICJyZXR1cm4iIGluc3RydWN0aW9uIGhhcyBiZWVuIGdpdmVuIGF0IHRoaXMgcG9pbnQgKHR5cGUgdm9pZCBmdW5jdGlvbnMKKyAgICAgICBvbmx5KSwgZXhlY3V0aW9uIHJldHVybnMgdG8gdGhlIGNhbGxpbmcgZnVuY3Rpb24gYXMgaWYgYSByInJldHVybiIKKyAgICAgICBpbnN0cnVjdGlvbiB3YXMgZ2l2ZW4KKworVGhlIHRyaXZpYWwgZnVuY3Rpb24gd291bGQgdGh1cyBiZToKKworLS0tLS0KK3ZvaWQgZG9fbm90aGluZygpIHt9CistLS0tLQorCitzaW5jZSB0aGlzIGZ1bmN0aW9uIGRvZXMgbm90IGFjY2VwdCBhbnkgaW5wdXQsIHBlcmZvcm0gYW55IGluc3RydWN0aW9ucywgb3IKK3JldHVybiBhbnkgb3V0cHV0LgorCitBbnkgZnVuY3Rpb24gd2hpY2ggaXMgbm90IG9mIHR5cGUgdm9pZCBNVVNUIHJldHVybiBhIHZhbHVlIG9mIGEgZGF0YSB0eXBlCittYXRjaGluZyB0aGUgZnVuY3Rpb24ncyBkYXRhIHR5cGUuCisKK0VhY2ggZHJpdmVyIGhhcyBhIHNldCBvZiBmdW5jdGlvbnMgYWxyZWFkeSBkZWZpbmVkIGZvciB5b3UgY2FsbGVkIGVmdW5zCitUaGVzZSB5b3UgbmVlZCBuZWl0aGVyIG5lZWQgdG8gZGVjbGFyZSBub3IgZGVmaW5lIHNpbmNlIGl0IGhhcyBhbHJlYWR5CitiZWVuIGRvbmUgZm9yIHlvdS4gIEZ1cnRoZXJtb3JlLCBleGVjdXRpb24gb2YgdGhlc2UgZnVuY3Rpb25zIGlzIGZhc3RlcgordGhhbiB0aGUgZXhlY3V0aW9uIG9mIHlvdXIgZnVuY3Rpb25zIHNpbmNlIGVmdW5zIGFyZSBpbiB0aGUgZHJpdmVyLgorSW4gYWRkaXRpb24sIGVhY2ggbXVkbGliIGhhcyBzcGVjaWFsIGZ1bmN0aW9ucyBsaWtlIGVmdW5zIGluIHRoYXQgdGhleQorYXJlIGFscmVhZHkgZGVmaW5lZCBhbmQgZGVjbGFyZWQgZm9yIHlvdSwgYnV0IGRpZmZlcmVudCBpbiB0aGF0IHRoZXkKK2FyZSBkZWZpbmVkIGluIHRoZSBtdWRsaWIgYW5kIGluIExQQy4gIFRoZXkgYXJlIGNhbGxlZCBzaW11bF9lZnVucywgb3IKK3NpbXVsYXRlZCBlZnVucy4gIFlvdSBjYW4gZmluZCBvdXQgYWxsIGFib3V0IGVhY2ggb2YgdGhlc2UgYXMgdGhleSBhcmUKK2xpc3RlZCBpbiB0aGUgL2RvYy9lZnVuIGRpcmVjdG9yeSBvbiBtb3N0IG11ZHMuICBJbiBhZGRpdGlvbiBtYW55CittdWRzIGhhdmUgYSBjb21tYW5kIGNhbGxlZCAibWFuIiBvciBhICJoZWxwIiBjb21tYW5kIHdoaWNoIGFsbG93cyB5b3UKK3NpbXBseSB0byBjYWxsIHVwIHRoZSBpbmZvIGZpbGVzIG9uIHRoZW0uCisKK05vdGUgb24gc3R5bGU6CitTb21lIGRyaXZlcnMgbWF5IG5vdCByZXF1aXJlIHlvdSB0byBkZWNsYXJlIHlvdXIgZnVuY3Rpb25zLCBhbmQgc29tZQorbWF5IG5vdCByZXF1aXJlIHlvdSB0byBzcGVjaWZ5IHRoZSByZXR1cm4gdHlwZSBvZiB0aGUgZnVuY3Rpb24gaW4gaXRzCitkZWZpbml0aW9uLiAgUmVnYXJkbGVzcyBvZiB0aGlzIGZhY3QsIHlvdSBzaG91bGQgbmV2ZXIgb21pdCB0aGlzIGluZm9ybWF0aW9uCitmb3IgdGhlIGZvbGxvd2luZyByZWFzb25zOgorICAgIDEpIEl0IGlzIGVhc2llciBmb3Igb3RoZXIgcGVvcGxlIChhbmQgeW91IGF0IGxhdGVyIGRhdGVzKSB0byByZWFkIHlvdXIKKyAgICAgICBjb2RlIGFuZCB1bmRlcnN0YW5kIHdoYXQgaXMgbWVhbnQuICBUaGlzIGlzIHBhcnRpY3VsYXJseSB1c2VmdWwKKyAgICAgICBmb3IgZGVidWdnaW5nLCB3aGVyZSBhIGxhcmdlIHBvcnRpb24gb2YgZXJyb3JzIChvdXRzaWRlIG9mIG1pc3BsYWNlZAorICAgICAgIHBhcmVudGhlc2VzIGFuZCBicmFja2V0cykgaW52b2x2ZSBwcm9ibGVtcyB3aXRoIGRhdGEgdHlwZXMgKEV2ZXIKKyAgICAgICBnb3R0ZW4gIkJhZCBhcmcgMSB0byBmb28oKSBsaW5lIDMyIj8pLgorICAgIDIpIEl0IGlzIHNpbXBseSBjb25zaWRlcmVkIGdvb2QgY29kaW5nIGZvcm0uCmRpZmYgLS1naXQgYS9kb2MvS1VSUy9MUEMtS1VSUy9jaGFwdGVyNSBiL2RvYy9LVVJTL0xQQy1LVVJTL2NoYXB0ZXI1Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjI5ZDJhMGMKLS0tIC9kZXYvbnVsbAorKysgYi9kb2MvS1VSUy9MUEMtS1VSUy9jaGFwdGVyNQpAQCAtMCwwICsxLDE2MSBAQAorICAgICAgICAgICAgICAgICAgICAgICAgICAgTFBDIEJhc2ljcworICAgICAgICAgICAgICAgICAgV3JpdHRlbiBieSBEZXNjYXJ0ZXMgb2YgQm9yZworICAgICAgICAgICAgICAgICAgZmlyc3QgZWRpdGlvbjogMjMgYXByaWwgMTk5MworICAgICAgICAgICAgICAgICAgc2Vjb25kIGVkaXRpb246IDAxIGp1bHkgMTk5MworCitDSEFQVEVSIDU6IFRoZSBCYXNpY3Mgb2YgSW5oZXJpdGFuY2UKKworNS4xIFJldmlldworWW91IHNob3VsZCBub3cgdW5kZXJzdGFuZCB0aGUgYmFzaWMgd29ya2luZ3Mgb2YgZnVuY3Rpb25zLiAgWW91IHNob3VsZCBiZQorYWJsZSB0byBkZWNsYXJlIGFuZCBjYWxsIG9uZS4gIEluIGFkZGl0aW9uLCB5b3Ugc2hvdWxkIGJlIGFibGUgdG8gcmVjb2duaXplCitmdW5jdGlvbiBkZWZpbml0aW9ucywgYWx0aG91Z2gsIGlmIHRoaXMgaXMgeW91ciBmaXJzdCBleHBlcmllbmNlIHdpdGggTFBDLAoraXQgaXMgdW5saWtlbHkgdGhhdCB5b3Ugd2lsbCBhcyB5ZXQgYmUgYWJsZSB0byBkZWZpbmUgeW91ciBvd24gZnVuY3Rpb25zLgorVGhlcmUgZnVuY3Rpb25zIGZvcm0gdGhlIGJhc2ljIGJ1aWxkaW5nIGJsb2NrcyBvZiBMUEMgb2JqZWN0cy4gIENvZGUKK2luIHRoZW0gaXMgZXhlY3V0ZWQgd2hlbiBhbm90aGVyIGZ1bmN0aW9uIG1ha2VzIGEgY2FsbCB0byB0aGVtLiAgSW4gbWFraW5nCithIGNhbGwsIGlucHV0IGlzIHBhc3NlZCBmcm9tIHRoZSBjYWxsaW5nIGZ1bmN0aW9uIGludG8gdGhlIGV4ZWN1dGlvbiBvZgordGhlIGNhbGxlZCBvbmUuICBUaGUgY2FsbGVkIGZ1bmN0aW9uIHRoZW4gZXhlY3V0ZXMgYW5kIHJldHVybnMgYSB2YWx1ZQorb2YgYSBjZXJ0YWluIGRhdGEgdHlwZSB0byB0aGUgY2FsbGluZyBmdW5jdGlvbi4gIEZ1bmN0aW9ucyB3aGljaCByZXR1cm4KK25vIHZhbHVlIGFyZSBvZiB0eXBlIHZvaWQuCisKK0FmdGVyIGV4YW1pbmluZyB5b3VyIHdvcmtyb29tIGNvZGUsIGl0IG1pZ2h0IGxvb2sgc29tZXRoaW5nIGxpa2UgdGhpcworKGRlcGVuZGluZyBvbiB0aGUgbXVkbGliKToKKworLS0tLS0KK2luaGVyaXQgIi9zdGQvcm9vbSI7CisKK3ZvaWQgY3JlYXRlKCkgeworICAgIDo6Y3JlYXRlKCk7CisgICAgc2V0X3Byb3BlcnR5KCJsaWdodCIsIDIpOworICAgIHNldF9wcm9wZXJ0eSgiaW5kb29ycyIsIDEpOworICAgIHNldCgic2hvcnQiLCAiRGVzY2FydGVzJyBXb3Jrcm9vbSIpOworICAgIHNldCgibG9uZyIsICJUaGlzIGlzIHdoZXJlIERlc2NhcnRlcyB3b3Jrcy5cbkl0IGlzIGEgY3ViZS5cbiIpOworICAgIHNldF9leGl0cyggKHsgIi9kL3N0YW5kYXJkL3NxdWFyZSIgfSksICh7ICJzcXVhcmUiIH0pICk7Cit9CistLS0tLQorCitJZiB5b3UgdW5kZXJzdGFuZCB0aGUgZW50aXJlIHRleHRib29rIHRvIHRoaXMgcG9pbnQsIHlvdSBzaG91bGQgcmVjb2duaXplCitvZiB0aGUgY29kZSB0aGUgZm9sbG93aW5nOgorICAgIDEpIGNyZWF0ZSgpIGlzIHRoZSBkZWZpbml0aW9uIG9mIGEgZnVuY3Rpb24gKGhleSEgaGUgZGlkIG5vdCBkZWNsYXJlIGl0KQorICAgIDIpIEl0IG1ha2VzIGNhbGxzIHRvIHNldF9wcm9wZXJ0eSgpLCBzZXQoKSwgYW5kIHNldF9leGl0cygpLCBub25lCisgICAgICAgb2Ygd2hpY2ggYXJlIGRlY2xhcmVkIG9yIGRlZmluZWQgaW4gdGhlIGNvZGUuCisgICAgMykgVGhlcmUgaXMgYSBsaW5lIGF0IHRoZSB0b3AgdGhhdCBpcyBubyB2YXJpYWJsZSBvciBmdW5jdGlvbiBkZWNsYXJhdGlvbgorICAgICAgIG5vciBpcyBpdCBhIGZ1bmN0aW9uIGRlZmluaXRpb24hCisKK1RoaXMgY2hhcHRlciB3aWxsIHNlZWsgdG8gYW5zd2VyIHRoZSBxdWVzdGlvbnMgdGhhdCBzaG91bGQgYmUgaW4geW91ciBoZWFkCithdCB0aGlzIHBvaW50OgorICAgIDEpIFdoeSBpcyB0aGVyZSBubyBkZWNsYXJhdGlvbiBvZiBjcmVhdGUoKT8KKyAgICAyKSBXaGVyZSBhcmUgdGhlIGZ1bmN0aW9ucyBzZXRfcHJvcGVydHkoKSwgc2V0KCksIGFuZCBzZXRfZXhpdHMoKSBkZWNsYXJlZAorICAgICAgIGFuZCBkZWZpbmVkPworICAgIDMpIFdoYXQgdGhlIGhlbGwgaXMgdGhhdCBsaW5lIGF0IHRoZSB0b3Agb2YgdGhlIGZpbGU/CisKKzUuMiBPYmplY3Qgb3JpZW50ZWQgcHJvZ3JhbW1pbmcKK0luaGVyaXRhbmNlIGlzIG9uZSBvZiB0aGUgcHJvcGVydGllcyB3aGljaCBkZWZpbmUgdHJ1ZSBvYmplY3Qgb3JpZW50ZWQKK3Byb2dyYW1taW5nIChPT1ApLiAgSXQgYWxsb3dzIHlvdSB0byBjcmVhdGUgZ2VuZXJpYyBjb2RlIHdoaWNoIGNhbiBiZSB1c2VkCitpbiBtYW55IGRpZmZlcmVudCB3YXlzIGJ5IG1hbnkgZGlmZmVyZW50IHByb2dyYW1zLiAgV2hhdCBhIG11ZGxpYiBkb2VzIGlzCitjcmVhdGUgdGhlc2UgZ2VuZXJhbGl6ZWQgZmlsZXMgKG9iamVjdHMpIHdoaWNoIHlvdSB1c2UgdG8gbWFrZSB2ZXJ5IHNwZWNpZmljCitvYmplY3RzLgorCitJZiB5b3UgaGFkIHRvIHdyaXRlIHRoZSBjb2RlIG5lY2Vzc2FyeSBmb3IgeW91IHRvIGRlZmluZSB0aGUgd29ya3Jvb20gYWJvdmUsCit5b3Ugd291bGQgaGF2ZSB0byB3cml0ZSBhYm91dCAxMDAwIGxpbmVzIG9mIGNvZGUgdG8gZ2V0IGFsbCB0aGUgZnVuY3Rpb25hbGl0eQorb2YgdGhlIHJvb20gYWJvdmUuICBDbGVhcmx5IHRoYXQgaXMgYSB3YXN0ZSBvZiBkaXNrIHNwYWNlLiAgSW4gYWRkaXRpb24sCitzdWNoIGNvZGUgZG9lcyBub3QgaW50ZXJhY3Qgd2VsbCB3aXRoIHBsYXllcnMgYW5kIG90aGVyIHJvb21zIHNpbmNlIGV2ZXJ5CitjcmVhdG9yIGlzIG1ha2luZyB1cCBoaXMgb3IgaGVyIG93biBmdW5jdGlvbnMgdG8gcGVyZm9ybSB0aGUgZnVuY3Rpb25hbGl0eQorb2YgYSByb29tLiAgVGh1cywgd2hhdCB5b3UgbWlnaHQgdXNlIHRvIHdyaXRlIG91dCB0aGUgcm9vbSdzIGxvbmcgZGVzY3JpcHRpb24sCitxdWVyeV9sb25nKCksIGFub3RoZXIgd2l6YXJkIG1pZ2h0IGJlIGNhbGxpbmcgbG9uZygpLiAgVGhpcyBpcyB0aGUgcHJpbWFyeQorcmVhc29uIG11ZGxpYnMgYXJlIG5vdCBjb21wYXRpYmxlLCBzaW5jZSB0aGV5IHVzZSBkaWZmZXJlbnQgcHJvdG9jb2xzIGZvcgorb2JqZWN0IGludGVyYWN0aW9uLgorCitPT1Agb3ZlcmNvbWVzIHRoZXNlIHByb2JsZW1zLiAgSW4gdGhlIGFib3ZlIHdvcmtyb29tLCB5b3UgaW5oZXJpdCB0aGUKK2Z1bmN0aW9ucyBhbHJlYWR5IGRlZmluZWQgaW4gYSBmaWxlIGNhbGxlZCAiL3N0ZC9yb29tLmMiLiAgSXQgaGFzIGFsbAordGhlIGZ1bmN0aW9ucyB3aGljaCBhcmUgY29tbW9ubHkgbmVlZGVkIGJ5IGFsbCByb29tcyBkZWZpbmVkIGluIGl0LiAgV2hlbgoreW91IGdldCB0byBtYWtlIGEgc3BlY2lmaWMgcm9vbSwgeW91IGFyZSB0YWtpbmcgdGhlIGdlbmVyYWwgZnVuY3Rpb25hbGl0eQorb2YgdGhhdCByb29tIGZpbGUgYW5kIG1ha2luZyBhIHVuaXF1ZSByb29tIGJ5IGFkZGluZyB5b3VyIG93biBmdW5jdGlvbiwKK2NyZWF0ZSgpLgorCis1LjMgSG93IGluaGVyaXRhbmNlIHdvcmtzCitBcyB5b3UgbWlnaHQgaGF2ZSBndWVzc2VkIGJ5IG5vdywgdGhlIGxpbmU6CisKKy0tLS0tCitpbmhlcml0ICIvc3RkL3Jvb20iOworLS0tLS0KKworaGFzIHlvdSBpbmhlcml0IHRoZSBmdW5jdGlvbmFsaXR5IG9mIHRoZSByb29tICIvc3RkL3Jvb20uYyIuICBCeSBpbmhlcml0aW5nCit0aGUgZnVuY3Rpb25hbGl0eSwgaXQgbWVhbnMgdGhhdCB5b3UgY2FuIHVzZSB0aGUgZnVuY3Rpb25zIHdoaWNoIGhhdmUKK2JlZW4gZGVjbGFyZWQgYW5kIGRlZmluZWQgaW4gdGhlIGZpbGUgIi9zdGQvcm9vbS5jIiAgSW4gdGhlIE5pZ2h0bWFyZSBNdWRsaWIsCisiL3N0ZC9yb29tLmMiIGhhcywgYW1vbmcgb3RoZXIgZnVuY3Rpb25zLCBzZXRfcHJvcGVydHkoKSwgc2V0KCksIGFuZAorc2V0X2V4aXRzKCkgZGVjbGFyZWQgYW5kIGRlZmluZWQuICBJbiB5b3VyIGZ1bmN0aW9uIGNyZWF0ZSgpLCB5b3UgYXJlCittYWtpbmcgY2FsbHMgdG8gdGhvc2UgZnVuY3Rpb25zIGluIG9yZGVyIHRvIHNldCB2YWx1ZXMgeW91IHdhbnQgeW91cgorcm9vbSB0byBzdGFydCB3aXRoLiAgVGhlc2UgdmFsdWVzIG1ha2UgeW91ciByb29tIGRpZmZlcmVudCBmcm9tIG90aGVycywgeWV0CithYmxlIHRvIGludGVyYWN0IHdlbGwgd2l0aCBvdGhlciBvYmplY3RzIGluIG1lbW9yeS4KKworSW4gYWN0dWFsIHByYWN0aWNlLCBlYWNoIG11ZGxpYiBpcyBkaWZmZXJlbnQsIGFuZCB0aHVzIHJlcXVpcmVzIHlvdSB0byB1c2UKK2EgZGlmZmVyZW50IHNldCBvZiBzdGFuZGFyZCBmdW5jdGlvbnMsIG9mdGVuIHRvIGRvIHRoZSBzYW1lIHRoaW5nLiAgSXQgaXMKK3RoZXJlZm9yZSBiZXlvbmQgdGhlIHNjb3BlIG9mIHRoaXMgdGV4dGJvb2sgZXZlbiB0byBkZXNjcmliZSB3aGF0CitmdW5jdGlvbnMgZXhpc3QgYW5kIHdoYXQgdGhleSBkby4gIElmIHlvdXIgbXVkbGliIGlzIHdlbGwgZG9jdW1lbnRlZCwKK2hvd2V2ZXIsIHRoZW4gKHByb2JhYmx5IGluIC9kb2MvYnVpbGQpIHlvdSB3aWxsIGhhdmUgdHV0b3JpYWxzIG9uIGhvdwordG8gdXNlIHRoZSBpbmhlcml0YWJsZSBmaWxlcyB0byBjcmVhdGUgc3VjaCBvYmplY3RzLiAgVGhlc2UgdHV0b3JpYWxzCitzaG91bGQgdGVsbCB5b3Ugd2hhdCBmdW5jdGlvbnMgZXhpc3QsIHdoYXQgaW5wdXQgdGhleSB0YWtlLCB0aGUgZGF0YQordHlwZSBvZiB0aGVpciBvdXRwdXQsIGFuZCB3aGF0IHRoZXkgZG8uCisKKzUuNCBDaGFwdGVyIHN1bW1hcnkKK1RoaXMgaXMgZmFyIGZyb20gYSBjb21wbGV0ZSBleHBsYW5hdGlvbiBvZiB0aGUgY29tcGxleCBzdWJqZWN0IG9mIGluaGVyaXRhbmNlLgorVGhlIGlkZWEgaGVyZSBpcyBmb3IgeW91IHRvIGJlIGFibGUgdG8gdW5kZXJzdGFuZCBob3cgdG8gdXNlIGluaGVyaXRhbmNlIGluCitjcmVhdGluZyB5b3VyIG9iamVjdHMuICBBIGZ1bGwgZGlzY3Vzc2lvbiB3aWxsIGZvbGxvdyBpbiBhIGxhdGVyIHRleHRib29rLgorUmlnaHQgbm93IHlvdSBzaG91bGQga25vdyB0aGUgZm9sbG93aW5nOgorICAgIDEpIEVhY2ggbXVkbGliIGhhcyBhIGxpYnJhcnkgb2YgZ2VuZXJpYyBvYmplY3RzIHdpdGggdGhlaXIgb3duIGdlbmVyYWwKKyAgICAgICBmdW5jdGlvbnMgdXNlZCBieSBjcmVhdG9ycyB0aHJvdWdoIGluaGVyaXRhbmNlIHRvIG1ha2UgY29kaW5nIG9iamVjdHMKKyAgICAgICBlYXNpZXIgYW5kIHRvIG1ha2UgaW50ZXJhY3Rpb24gYmV0d2VlbiBvYmplY3RzIHNtb290aGVyLgorICAgIDIpIFRoZSBmdW5jdGlvbnMgaW4gdGhlIGluaGVyaXRhYmxlIGZpbGVzIG9mIGEgbXVkbGliIHZhcnkgZnJvbSBtdWRsaWIKKyAgICAgICB0byBtdWRsaWIuICBUaGVyZSBzaG91bGQgZXhpc3QgZG9jdW1lbnRhdGlvbiBvbiB5b3VyIG11ZCBvbiBob3cgdG8KKyAgICAgICB1c2UgZWFjaCBpbmhlcml0YWJsZSBmaWxlLiAgSWYgeW91IGFyZSB1bmF3YXJlIHdoYXQgZnVuY3Rpb25zIGFyZQorICAgICAgIGF2YWlsYWJsZSwgdGhlbiB0aGVyZSBpcyBzaW1wbHkgbm8gd2F5IGZvciB5b3UgdG8gdXNlIHRoZW0uICBBbHdheXMKKyAgICAgICBwYXkgc3BlY2lhbCBhdHRlbnRpb24gdG8gdGhlIGRhdGEgdHlwZXMgb2YgdGhlIGlucHV0IGFuZCB0aGUgZGF0YQorICAgICAgIHR5cGVzIG9mIGF5IG91dHB1dC4KKyAgICAzKSBZb3UgaW5oZXJpdCB0aGUgZnVuY3Rpb25hbGl0eSBvZiBhbm90aGVyIG9iamVjdCB0aHJvdWdoIHRoZSBsaW5lOgorCistLS0tLQoraW5oZXJpdCAiZmlsZW5hbWUiOworLS0tLS0KKyAgICAgICAKKyAgICAgICB3aGVyZSBmaWxlbmFtZSBpcyB0aGUgbmFtZSBvZiB0aGUgZmlsZSBvZiB0aGUgb2JqZWN0IHRvIGJlIGluaGVyaXRlZC4KKyAgICAgICBUaGlzIGxpbmUgZ29lcyBhdCB0aGUgYmVnaW5uaW5nIG9mIHlvdXIgY29kZS4KKworTm90ZToKK1lvdSBtYXkgc2VlIHRoZSBzeW50YXggOjpjcmVhdGUoKSBvciA6OmluaXQoKSBvciA6OnJlc2V0KCkgaW4gcGxhY2VzLgorWW91IGRvIG5vdCBuZWVkIGZ1bGx5IHRvIHVuZGVyc3RhbmQgYXQgdGhpcyBwb2ludCB0aGUgZnVsbCBudWFuY2VzIG9mIHRoaXMsCitidXQgeW91IHNob3VsZCBoYXZlIGEgY2x1ZSBhcyB0byB3aGF0IGl0IGlzLiBUaGUgIjo6IiBvcGVyYXRvciBpcyBhIHdheQordG8gY2FsbCBhIGZ1bmN0aW9uIHNwZWNpZmljYWxseSBpbiBhbiBpbmhlcml0ZWQgb2JqZWN0IChjYWxsZWQgdGhlIHNjb3BlCityZXNvbHV0aW9uIG9wZXJhdG9yKS4gIEZvciBpbnN0YW5jZSwgbW9zdCBtdWRzJyByb29tLmMgaGFzIGEgZnVuY3Rpb24KK2NhbGxlZCBjcmVhdGUoKS4gIFdoZW4geW91IGluaGVyaXQgcm9vbS5jIGFuZCBjb25maWd1cmUgaXQsIHlvdSBhcmUgZG9pbmcKK3doYXQgaXMgY2FsbGVkIG92ZXJyaWRpbmcgdGhlIGNyZWF0ZSgpIGZ1bmN0aW9uIGluIHJvb20uYy4gIFRoaXMgbWVhbnMKK3RoYXQgd2hlbmV2ZXIgQU5ZVEhJTkcgY2FsbHMgY3JlYXRlKCksIGl0IHdpbGwgY2FsbCAqeW91ciogdmVyc2lvbiBhbmQgbm90Cit0aGUgb25lIGluIHJvb20uYy4gIEhvd2V2ZXIsIHRoZXJlIG1heSBiZSBpbXBvcnRhbnQgc3R1ZmYgaW4gdGhlIHJvb20uYwordmVyc2lvbiBvZiBjcmVhdGUoKS4gIFRoZSA6OiBvcGVyYXRvciBhbGxvd3MgeW91IHRvIGNhbGwgdGhlIGNyZWF0ZSgpIGluCityb29tLmMgaW5zdGVhZCBvZiB5b3VyIGNyZWF0ZSgpLgorQW4gZXhhbXBsZToKKworLS0tLS0KKyMxCisKK2luaGVyaXQgIi9zdGQvcm9vbSI7CisKK3ZvaWQgY3JlYXRlKCkgeyBjcmVhdGUoKTsgfQorLS0tLS0KKworLS0tLS0KKyMyCisKK2luaGVyaXQgIi9zdGQvcm9vbSI7CisKK3ZvaWQgY3JlYXRlKCkgeyA6OmNyZWF0ZSgpOyB9CistLS0tLQorCitFeGFtcGxlIDEgaXMgYSBob3Jyb3IuICBXaGVuIGxvYWRlZCwgdGhlIGRyaXZlciBjYWxscyBjcmVhdGUoKSwgYW5kIHRoZW4KK2NyZWF0ZSgpIGNhbGxzIGNyZWF0ZSgpLCB3aGljaCBjYWxscyBjcmVhdGUoKSwgd2hpY2ggY2FsbHMgY3JlYXRlKCkuLi4KK0luIG90aGVyIHdvcmRzLCBhbGwgY3JlYXRlKCkgZG9lcyBpcyBrZWVwIGNhbGxpbmcgaXRzZWxmIHVudGlsIHRoZSBkcml2ZXIKK2RldGVjdHMgYSB0b28gZGVlcCByZWN1cnNpb24gYW5kIGV4aXRzLgorCitFeGFtcGxlIDIgaXMgYmFzaWNhbGx5IGp1c3QgYSB3YXN0ZSBvZiBSQU0sIGFzIGl0IGlzIG5vIGRpZmZlcmVudCBmcm9tIHJvb20uYworZnVuY3Rpb25hbGx5LiAgV2l0aCBpdCwgdGhlIGRyaXZlciBjYWxscyBpdHMgY3JlYXRlKCksIHdoaWNoIGluIHR1cm4gY2FsbHMKKzo6Y3JlYXRlKCksIHRoZSBjcmVhdGUoKSBpbiByb29tLmMuICBPdGhlcndpc2UgaXQgaXMgZnVuY3Rpb25hbGx5CitleGFjdGx5IHRoZSBzYW1lIGFzIHJvb20uYy4KZGlmZiAtLWdpdCBhL2RvYy9LVVJTL0xQQy1LVVJTL2NoYXB0ZXI2IGIvZG9jL0tVUlMvTFBDLUtVUlMvY2hhcHRlcjYKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNmE2NDIxNQotLS0gL2Rldi9udWxsCisrKyBiL2RvYy9LVVJTL0xQQy1LVVJTL2NoYXB0ZXI2CkBAIC0wLDAgKzEsMzMzIEBACisgICAgICAgICAgICAgICAgICAgICAgICAgICBMUEMgQmFzaWNzCisgICAgICAgICAgICAgICAgICBXcml0dGVuIGJ5IERlc2NhcnRlcyBvZiBCb3JnCisgICAgICAgICAgICAgICAgICBmaXJzdCBlZGl0aW9uOiAyMyBhcHJpbCAxOTkzCisgICAgICAgICAgICAgICAgICBzZWNvbmQgZWRpdGlvbjoganVseSA1IDE5OTMKKworQ0hBUFRFUiA2OiBWYXJpYWJsZSBIYW5kbGluZworCis2LjEgUmV2aWV3CitCeSBub3cgeW91IHNob3VsZCBiZSBhYmxlIHRvIGNvZGUgc29tZSBzaW1wbGUgb2JqZWN0cyB1c2luZyB5b3VyIG11ZHMgc3RhbmRhcmQKK29iamVjdCBsaWJyYXJ5LiAgSW5oZXJpdGFuY2UgYWxsb3dzIHlvdSB0byB1c2UgZnVuY3Rpb25zIGRlZmluZWQgaW4gdGhvc2UKK29iamVjdHMgd2l0aG91dCBoYXZpbmcgdG8gZ28gYW5kIGRlZmluZSB5b3Vyc2VsZi4gIEluIGFkZGl0aW9uLAoreW91IHNob3VsZCBrbm93IGhvdyB0byBkZWNsYXJlIHlvdXIgb3duIGZ1bmN0aW9ucy4gIFRoaXMKK2NoYXB0ZXIgd2lsbCB0ZWFjaCB5b3UgYWJvdXQgdGhlIGJhc2ljIGVsZW1lbnRzIG9mIExQQyB3aGljaCB3aWxsIGFsbG93IHlvdSB0bworZGVmaW5lIHlvdXIgb3duIGZ1bmN0aW9ucyB1c2luZyB0aGUgbWFuaXB1bGF0aW9uIG9mIHZhcmlhYmxlcy4KKworNi4yIFZhbHVlcyBhbmQgb2JqZWN0cworQmFzaWNhbGx5LCB3aGF0IG1ha2VzIG9iamVjdHMgb24gdGhlIG11ZCBkaWZmZXJlbnQgYXJlIHR3byB0aGluZ3M6CisxKSBTb21lIGhhdmUgZGlmZmVyZW50IGZ1bmN0aW9ucworMikgQWxsIGhhdmUgZGlmZmVyZW50IHZhbHVlcworCitOb3csIGFsbCBwbGF5ZXIgb2JqZWN0cyBoYXZlIHRoZSBzYW1lIGZ1bmN0aW9ucy4gIFRoZXkgYXJlIHRoZXJlZm9yZQorZGlmZmVyZW50aWF0ZWQgYnkgdGhlIHZhbHVlcyB0aGV5IGhvbGQuICBGb3IgaW5zdGFuY2UsIHRoZSBwbGF5ZXIKK25hbWVkICJGb3Jsb2NrIiBpcyBkaWZmZXJlbnQgZnJvbSAiRGVzY2FydGVzIiAqYXQgbGVhc3QqIGluIHRoYXQgdGhleQoraGF2ZSBkaWZmZXJlbnQgdmFsdWVzIGZvciB0aGUgdmFyaWFibGUgdHJ1ZV9uYW1lLCB0aG9zZSBiZWluZworImRlc2NhcnRlcyIgYW5kICJmb3Jsb2NrIi4KKworVGhlcmVmb3JlLCBjaGFuZ2VzIGluIHRoZSBnYW1lIGludm9sdmUgY2hhbmdlcyBpbiB0aGUgdmFsdWVzIG9mIHRoZSBvYmplY3RzCitpbiB0aGUgZ2FtZS4gIEZ1bmN0aW9ucyBhcmUgdXNlZCB0byBuYW1lIHNwZWNpZmljIHByb2Nlc3MgZm9yIG1hbmlwdWxhdGluZwordmFsdWVzLiAgRm9yIGluc3RhbmNlLCB0aGUgY3JlYXRlKCkgZnVuY3Rpb24gaXMgdGhlIGZ1bmN0aW9uIHdob3NlCitwcm9jZXNzIGlzIHNwZWNpZmljYWxseSB0byBpbml0aWFsaXplIHRoZSB2YWx1ZXMgb2YgYW4gb2JqZWN0LgorV2l0aGluIGEgZnVuY3Rpb24sIGl0IGlzIHNwZWNpZmljYWxseSB0aGluZ3MgY2FsbGVkIGluc3RydWN0aW9ucyB3aGljaCBhcmUKK3Jlc3BvbnNpYmxlIGZvciB0aGUgZGlyZWN0IG1hbmlwdWxhdGlvbiBvZiB2YXJpYWJsZXMuCisKKzYuMyBMb2NhbCBhbmQgZ2xvYmFsIHZhcmlhYmxlcworTGlrZSB2YXJpYWJsZXMgaW4gbW9zdCBwcm9ncmFtbWluZyBsYW5ndWFnZSwgTFBDIHZhcmlhYmxlcyBtYXkgYmUgZGVjbGFyZWQKK2FzIHZhcmlhYmxlcyAibG9jYWwiIHRvIGEgc3BlY2lmaWMgZnVuY3Rpb24sIG9yICJnbG9iYWxseSIgYXZhaWxhYmxlCit0byBhbGwgZnVuY3Rpb25zLiAgTG9jYWwgdmFyaWFibGVzIGFyZSBkZWNsYXJlZCBpbnNpZGUgdGhlIGZ1bmN0aW9uIHdoaWNoCit3aWxsIHVzZSB0aGVtLiAgTm8gb3RoZXIgZnVuY3Rpb24ga25vd3MgYWJvdXQgdGhlaXIgZXhpc3RlbmNlLCBzaW5jZQordGhlIHZhbHVlcyBhcmUgb25seSBzdG9yZWQgaW4gbWVtb3J5IHdoaWxlIHRoYXQgZnVuY3Rpb24gaXMgYmVpbmcgZXhlY3V0ZWQuCitBIGdsb2JhbCB2YXJpYWJsZSBpcyBhdmFpbGFibGUgdG8gYW55IGZ1bmN0aW9uIHdoaWNoIGNvbWVzIGFmdGVyIGl0cworZGVjbGFyYXRpb24gaW4gdGhlIG9iamVjdCBjb2RlLiAgU2luY2UgZ2xvYmFsIHZhcmlhYmxlcyB0YWtlIHVwIFJBTSBmb3IKK3RoZSBlbnRpcmUgZXhpc3RlbmNlIG9mIHRoZSBvYmplY3QsIHlvdSBzaG91bGQgdXNlIHRoZW0gb25seSB3aGVuCit5b3UgbmVlZCBhIHZhbHVlIHN0b3JlZCBmb3IgdGhlIGVudGlyZSBleGlzdGVuY2Ugb2YgdGhlIG9iamVjdC4KK0hhdmUgYSBsb29rIGF0IHRoZSBmb2xsb3dpbmcgMiBiaXRzIG9mIGNvZGU6CisKKy0tLS0tCitpbnQgeDsKKworaW50IHF1ZXJ5X3goKSB7IHJldHVybiB4OyB9CisKK3ZvaWQgc2V0X3goaW50IHkpIHsgeCA9IHk7IH0KKy0tLS0tCisKKy0tLS0tCit2b2lkIHNldF94KGludCB5KSB7CisgICAgaW50IHg7CisKKyAgICB4ID0geTsKKyAgICB3cml0ZSgieCBpcyBzZXQgdG8geCIreCsiIGFuZCB3aWxsIG5vdyBiZSBmb3Jnb3R0ZW4uXG4iKTsKK30KKy0tLS0tCisKK0luIHRoZSBmaXJzdCBleGFtcGxlLCB4IGlzIGRlY2xhcmVkIG91dHNpZGUgb2YgYW55IGZ1bmN0aW9ucywgYW5kIHRoZXJlZm9yZQord2lsbCBiZSBhdmFpbGFibGUgdG8gYW55IGZ1bmN0aW9uIGRlY2xhcmVkIGFmdGVyIGl0LiAgSW4gdGhhdCBleGFtcGxlLAoreCBpcyBhIGdsb2JhbCB2YXJpYWJsZS4KK0luIHRoZSBzZWNvbmQgZXhhbXBsZSwgeCBpcyBkZWNsYXJlZCBpbnNpZGUgdGhlIGZ1bmN0aW9uIHNldF94KCkuICBJdAorb25seSBleGlzdHMgd2hpbGUgdGhlIGZ1bmN0aW9uIHNldF94KCkgaXMgYmVpbmcgZXhlY3V0ZWQuICBBZnRlcndhcmRzLAoraXQgY2Vhc2VzIHRvIGV4aXN0LiAgSW4gdGhhdCBleGFtcGxlLCB4IGlzIGEgbG9jYWwgdmFyaWFibGUuCisKKzYuNCBNYW5pcHVsYXRpbmcgdGhlIHZhbHVlcyBvZiB2YXJpYWJsZXMKK0luc3RydWN0aW9ucyB0byB0aGUgZHJpdmVyIGFyZSB1c2VkIHRvIG1hbmlwdWxhdGUgdGhlIHZhbHVlcyBvZiB2YXJpYWJsZXMuCitBbiBleGFtcGxlIG9mIGFuIGluc3RydWN0aW9uIHdvdWxkIGJlOgorCistLS0tLQoreCA9IDU7CistLS0tLQorCitUaGUgYWJvdmUgaW5zdHJ1Y3Rpb24gaXMgc2VsZi1leHBsYW5hdG9yeS4gIEl0IGFzc2lnbnMgdG8gdGhlIHZhcmlhYmxlCit4IHRoZSB2YWx1ZSA1LiAgSG93ZXZlciwgdGhlcmUgYXJlIHNvbWUgaW1wb3J0YW50IGNvbmNlcHRzIGluIGludm9sdmVkCitpbiB0aGF0IGluc3RydWN0aW9uIHdoaWNoIGFyZSBpbnZvbHZlZCBpbiBpbnN0cnVjdGlvbnMgaW4gZ2VuZXJhbC4KK1RoZSBmaXJzdCBpbnZvbHZlcyB0aGUgY29uY2VwdCBvZiBhbiBleHByZXNzaW9uLiAgQW4gZXhwcmVzc2lvbiBpcworYW55IHNlcmllcyBvZiBzeW1ib2xzIHdoaWNoIGhhdmUgYSB2YWx1ZS4gIEluIHRoZSBhYm92ZSBpbnN0cnVjdGlvbiwKK3RoZSB2YXJpYWJsZSB4IGlzIGFzc2lnbmVkIHRoZSB2YWx1ZSBvZiB0aGUgZXhwcmVzc2lvbiA1LiAgQ29uc3RhbnQKK3ZhbHVlcyBhcmUgdGhlIHNpbXBsZXN0IGZvcm1zIGluIHdoaWNoIGV4cHJlc3Npb25zIGNhbiBiZSBwdXQuICBBIGNvbnN0YW50CitpcyBhIHZhbHVlIHRoYXQgbmV2ZXIgY2hhbmdlcyBsaWtlIHRoZSBpbnQgNSBvciB0aGUgc3RyaW5nICJoZWxsbyIuCitUaGUgbGFzdCBjb25jZXB0IGlzIHRoZSBjb25jZXB0IG9mIGFuIG9wZXJhdG9yLiAgSW4gdGhlIGFib3ZlIGV4YW1wbGUsCit0aGUgYXNzaWdubWVudCBvcGVyYXRvciA9IGlzIHVzZWQuCisKK1RoZXJlIGFyZSBob3dldmVyIG1hbnkgbW9yZSBvcGVyYXRvcnMgaW4gTFBDLCBhbmQgZXhwcmVzc2lvbnMgY2FuIGdldAorcXVpdGUgY29tcGxleC4gIElmIHdlIGdvIHVwIG9uZSBsZXZlbCBvZiBjb21wbGV4aXR5LCB3ZSBnZXQ6CisKKy0tLS0tCit5ID0gNTsKK3ggPSB5ICsyOworLS0tLS0KKworVGhlIGZpcnN0IGluc3RydWN0aW9uIHVzZXMgdGhlIGFzc2lnbm1lbnQgb3BlcmF0b3IgdG8gYXNzaWduIHRoZSB2YWx1ZQorb2YgdGhlIGNvbnN0YW50IGV4cHJlc3Npb24gNSB0byB0aGUgdmFyaWFibGUgeS4gIFRoZSBzZWNvbmQgb25lCit1c2VzIHRoZSBhc3NpZ25tZW50IG9wZXJhdG9yIHRvIGFzc2lnbiB0byB4IHRoZSB2YWx1ZSBvZiB0aGUgZXhwcmVzc2lvbgorKHkrMikgd2hpY2ggdXNlcyB0aGUgYWRkaXRpb24gb3BlcmF0b3IgdG8gY29tZSB1cCB3aXRoIGEgdmFsdWUgd2hpY2gKK2lzIHRoZSBzdW0gb2YgdGhlIHZhbHVlIG9mIHkgYW5kIHRoZSB2YWx1ZSBvZiB0aGUgY29uc3RhbnQgZXhwcmVzc2lvbiAyLgorU291bmQgbGlrZSBhIGxvdCBvZiBob3QgYWlyPworCitJbiBhbm90aGVyIG1hbm5lciBvZiBzcGVha2luZywgb3BlcmF0b3JzIGNhbiBiZSB1c2VkIHRvIGZvcm0gY29tcGxleAorZXhwcmVzc2lvbnMuICBJbiB0aGUgYWJvdmUgZXhhbXBsZSwgdGhlcmUgYXJlIHR3byBleHByZXNzaW9ucyBpbiB0aGUKK29uZSBpbnN0cnVjdGlvbiB4ID0geSArIDI7OgorICAgIDEpIHRoZSBleHByZXNzaW9uIHkrMgorICAgIDIpIHRoZSBleHByZXNzaW9uIHggPSB5ICsgMgorQXMgc3RhdGVkIGJlZm9yZSwgYWxsIGV4cHJlc3Npb25zIGhhdmUgYSB2YWx1ZS4gIFRoZSBleHByZXNzaW9uCit5KzIgaGFzIHRoZSB2YWx1ZSBvZiB0aGUgc3VtIG9mIHkgYW5kIDIgKGhlcmUsIDcpOworVGhlIGV4cHJlc3Npb24geCA9IHkgKyAyICphbHNvKiBoYXMgdGhlIHZhbHVlIG9mIDcuCitTbyBvcGVyYXRvcnMgaGF2ZSB0byBpbXBvcnRhbnQgdGFza3M6CisgICAgMSkgVGhleSAqbWF5KiBhY3QgdXBvbiBpbnB1dCBsaWtlIGEgZnVuY3Rpb24KKyAgICAyKSBUaGV5IGV2YWx1YXRlIGFzIGhhdmluZyBhIHZhbHVlIHRoZW1zZWx2ZXMuCitOb3csIG5vdCBhbGwgb3BlcmF0b3JzIGRvIHdoYXQgMSBkb2VzLiAgVGhlID0gb3BlcmF0b3JzIGRvZXMgYWN0IHVwb24KK3RoZSB2YWx1ZSBvZiA3IG9uIGl0cyByaWdodCBieSBhc3NpZ25pbmcgdGhhdCB2YWx1ZSB0byB4LiAgVGhlIG9wZXJhdG9yCisrIGhvd2V2ZXIgZG9lcyBub3RoaW5nLiAgVGhleSBib3RoLCBob3dldmVyLCBoYXZlIHRoZWlyIG93biB2YWx1ZXMuCisKKzYuNSBDb21wbGV4IGV4cHJlc3Npb25zCitBcyB5b3UgbWF5IGhhdmUgbm90aWNlZCBhYm92ZSwgdGhlIGV4cHJlc3Npb24geCA9IDUgKml0c2VsZiogaGFzIGEgdmFsdWUKK29mIDUuICBJbiBmYWN0LCBzaW5jZSBMUEMgb3BlcmF0b3JzIHRoZW1zZWx2ZXMgaGF2ZSB2YWx1ZSBhcyBleHByZXNzaW9ucywKK3RoZXkgY2FsIGFsbG93IHlvdSB0byB3cml0ZSBzb21lIHJlYWxseSBjb252b2x1dGVkIGxvb2tpbmcgbm9uc2Vuc2UgbGlrZToKKyAgICBpID0gKCAoeD1zaXplb2YodG1wPXVzZXJzKCkpKSA/IC0teCA6IHNpemVvZih0bXA9Y2hpbGRyZW4oIi9zdGQvbW9uc3RlciIpKS0xKQord2hpY2ggc2F5cyBiYXNpY2FsbHk6CisgICAgYXNzaW5nIHRvIHRtcCB0aGUgYXJyYXkgcmV0dXJuZWQgYnkgdGhlIGVmdW4gdXNlcnMoKSwgdGhlbiBhc3NpZ24gdG8geAorICAgIHRoZSB2YWx1ZSBlcXVhbCB0byB0aGUgbnVtYmVyIG9mIGVsZW1lbnRzIHRvIHRoYXQgYXJyYXkuICBJZiB0aGUgdmFsdWUKKyAgICBvZiB0aGUgZXhwcmVzc2lvbiBhc3NpZ25pbmcgdGhlIHZhbHVlIHRvIHggaXMgdHJ1ZSAobm90IDApLCB0aGVuIGFzc2lnbgorICAgIHggYnkgMSBhbmQgYXNzaWduIHRoZSB2YWx1ZSBvZiB4LTEgdG8gaS4gIElmIHggaXMgZmFsc2UgdGhvdWdoLAorICAgIHRoZW4gc2V0IHRtcCB0byB0aGUgYXJyYXkgcmV0dXJuZWQgYnkgdGhlIGVmdW4gY2hpbGRyZW4oKSwgYW5kIHRoZW4KKyAgICBhc3NpZ24gdG8gaSB0aGUgdmFsdWUgb2YgdGhlIG51bWJlciBvZiBtZW1iZXJzIGluIHRoZSBhcnJheSB0bXAgLTEuCitXb3VsZCB5b3UgZXZlciB1c2UgdGhlIGFib3ZlIHN0YXRlbWVudD8gSSBkb3VidCBpdC4gIEhvd2V2ZXIgeW91IG1pZ2h0CitzZWUgb3IgdXNlIGV4cHJlc3Npb25zIHNpbWlsYXIgdG8gaXQsIHNpbmNlIHRoZSBhYmlsaXR5IHRvIGNvbnNvbGlkYXRlCitzbyBtdWNoIGluZm9ybWF0aW9uIGludG8gb25lIHNpbmdsZSBsaW5lIGhlbHBzIHRvIHNwZWVkIHVwIHRoZSBleGVjdXRpb24gb2YKK3lvdXIgY29kZS4gIEEgbW9yZSBvZnRlbiB1c2VkIHZlcnNpb24gb2YgdGhpcyBwcm9wZXJ0eSBvZiBMUEMgb3BlcmF0b3JzCit3b3VsZCBiZSBzb21ldGhpbmcgbGlrZToKKyAgICB4ID0gc2l6ZW9mKHRtcCA9IHVzZXJzKCkpOworICAgIHdoaWxlKGktLSkgd3JpdGUoKHN0cmluZyl0bXBbaV0tPnF1ZXJ5X25hbWUoKSsiXG4iKTsKK2luc3RlYWQgb2Ygd3JpdGluZyBzb21ldGhpbmcgbGlrZToKKyAgICB0bXAgPSB1c2VycygpOworICAgIHggPSBzaXplb2YodG1wKTsKKyAgICBmb3IoaT0wOyBpPHg7IGkrKykgd3JpdGUoKHN0cmluZyl0bXBbaV0tPnF1ZXJ5X25hbWUoKSsiXG4iKTsKK1RoaW5ncyBsaWtlIGZvcigpLCB3aGlsZSgpLCBhcnJheXMgYW5kIHN1Y2ggd2lsbCBiZSBleHBsYWluZWQgbGF0ZXIuCitCdXQgdGhlIGZpcnN0IGJpdCBvZiBjb2RlIGlzIG1vcmUgY29uY2lzZSBhbmQgaXQgZXhlY3V0ZWQgZmFzdGVyLgorCitOT1RFOiBBIGRldGFpbGVkIGRlc2NyaXB0aW9uIG9mIGFsbCBiYXNpYyBMUEMgb3BlcmF0b3JzIGZvbGxvd3MgdGhlIGNoYXB0ZXIKK3N1bW1hcnkuCisKKworNi42IENoYXB0ZXIgU3VtbWFyeQorWW91IG5vdyBrbm93IGhvdyB0byBkZWNsYXJlIHZhcmlhYmxlcyBhbmQgdW5kZXJzdGFuZCB0aGUgZGlmZmVyZW5jZSBiZXR3ZWVuCitkZWNsYXJpbmcgYW5kIHVzaW5nIHRoZW0gZ2xvYmFsbHkgb3IgbG9jYWxseS4gIE9uY2UgeW91IGJlY29tZSBmYW1pbGlhcgord2l0aCB5b3VyIGRyaXZlcidzIGVmdW5zLCB5b3UgY2FuIGRpc3BsYXkgdGhvc2UgdmFsdWVzIGluIG1hbnkgZGlmZmVyZW50Cit3YXlzLiAgSW4gYWRkaXRpb24sIHRocm91Z2ggdGhlIExQQyBvcGVyYXRvcnMsIHlvdSBrbm93IGhvdyB0byBjaGFuZ2UKK2FuZCBldmFsdWF0ZSB0aGUgdmFsdWVzIGNvbnRhaW5lZCBpbiB2YXJpYWJsZXMuICBUaGlzIGlzIHVzZWZ1bCBvZiBjb3Vyc2UKK2luIHRoYXQgaXQgYWxsb3dzIHlvdSB0byBkbyBzb21ldGhpbmcgbGlrZSBjb3VudCBob3cgbWFueSBhcHBsZXMgaGF2ZQorYmVlbiBwaWNrZWQgZnJvbSBhIHRyZWUsIHNvIHRoYXQgb25jZSBhbGwgYXBwbGVzIGhhdmUgYmVlbiBwaWNrZWQsIG5vCitwbGF5ZXJzIGNhbiBwaWNrIG1vcmUuICBVbmZvcnR1bmF0ZWx5LCB5b3UgZG8gbm90IGtub3cgaG93IHRvIGhhdmUKK2NvZGUgZXhlY3V0ZWQgaW4gYW55dGhpbmcgb3RoZXIgdGhhbiBhIGxpbmVyYSBmYXNoaW9uLiAgSW4gb3RoZXIgd29yZHMsCitob2xkIG9mZiBvbiB0aGF0IGFwcGxlIHVudGlsIHRoZSBuZXh0IGNoYXB0ZXIsIGNhdXNlIHlvdSBkbyBub3Qga25vdworaG93IHRvIGNoZWNrIGlmIHRoZSBhcHBsZXMgcGlja2VkIGlzIGVxdWFsIHRvIHRoZSBudW1iZXIgb2YgYXBwbGVzIGluIHRoZQordHJlZS4gIFlvdSBhbHNvIGRvIG5vdCBrbm93IGFib3V0IHRoZSBzcGVjaWFsIGZ1bmN0aW9uIGluaXQoKSB3aGVyZSB5b3UKK2dpdmUgbmV3IGNvbW1hbmRzIHRvIHBsYXllcnMuICBCdXQgeW91IGFyZSBhbG1vc3QgcmVhZHkgdG8gY29kZSBhIG5pY2UsCitmYWlybHkgY29tcGxleCBhcmVhLgorCis2LjcgTFBDIG9wZXJhdG9ycworVGhpcyBzZWN0aW9uIGNvbnRhaW5zIGEgZGV0YWlsZWQgbGlzdGluZyBvZiB0aGUgc2ltcGxlciBMUEMgb3BlcmF0b3JzLAoraW5jbHVkaW5nIHdoYXQgdGhleSBkbyB0byB0aGUgdmFsdWVzIHRoZXkgdXNlIChpZiBhbnl0aGluZykgYW5kIHRoZSB2YWx1ZQordGhhdCB0aGV5IGhhdmUuCisKK1RoZSBvcGVyYXRvcnMgZGVzY3JpYmVkIGhlcmUgYXJlOgorPSAgICArICAgIC0gICAgKiAgICAvICAgICUgICAgKz0gICAgLT0gICAgKj0gICAgLz0gICAgJT0KKy0tICAgICsrICAgID09ICAgICE9ICAgID4gICAgPCAgICA+PSAgICA8PSAgICAhICAgICYmICAgIHx8CistPiAgICA/IDoKKworVGhvc2Ugb3BlcmF0b3JzIGFyZSBhbGwgZGVzY3JpYmVkIGluIGEgcmF0aGVyIGRyeSBtYW5uZXIgYmVsb3csIGJ1dCBpdCBpcyBiZXN0Cit0byBhdCBsZWFzdCBsb29rIGF0IGVhY2ggb25lLCBzaW5jZSBzb21lIG1heSBub3QgYmVoYXZlICpleGFjdGx5KiBhcworeW91IHRoaW5rLiAgQnV0IGl0IHNob3VsZCBtYWtlIGEgcmF0aGVyIGdvb2QgcmVmZXJlbmNlIGd1aWRlLgorCis9IGFzc2lnbm1lbnQgb3BlcmF0b3I6CisgICAgZXhhbXBsZTogeCA9IDU7CisgICAgdmFsdWU6IHRoZSB2YWx1ZSBvZiB0aGUgdmFyaWFibGUgb24gdGhlICpsZWZ0KiBhZnRlciBpdHMgZnVuY3Rpb24gaXMgZG9uZQorICAgIGV4cGxhbmF0aW9uOiBJdCB0YWtlcyB0aGUgdmFsdWUgb2YgYW55IGV4cHJlc3Npb24gb24gdGhlICpyaWdodCogYW5kCisgICAgICBhc3NpZ25zIGl0IHRvIHRoZSB2YXJpYWJsZSBvbiB0aGUgKmxlZnQqLiAgTm90ZSB0aGF0IHlvdSBtdXN0IHVzZQorICAgICAgYSBzaW5nbGUgdmFyaWFibGUgb24gdGhlIGxlZnQsIGFzIHlvdSBjYW5ub3QgYXNzaWduIHZhbHVlcyB0byAKKyAgICAgIGNvbnN0YW50cyBvciBjb21wbGV4IGV4cHJlc3Npb25zLgorCisrIGFkZGl0aW9uIG9wZXJhdG9yOgorICAgIGV4YW1wbGU6IHggKyA3CisgICAgdmFsdWU6IFRoZSBzdW0gb2YgdGhlIHZhbHVlIG9uIHRoZSBsZWZ0IGFuZCB0aGUgdmFsdWUgb24gdGhlIHJpZ2h0CisgICAgZXhhcGxhbmF0aW9uOiBJdCB0YWtlcyB0aGUgdmFsdWUgb2YgdGhlIGV4cHJlc3Npb24gb24gdGhlIHJpZ2h0IGFuZAorICAgICAgYWRkcyBpdCB0byB0aGUgdmFsdWUgb2YgdGhlIGV4cHJlc3Npb24gb24gdGhlIGxlZnQuIEZvciB2YWx1ZXMKKyAgICAgIG9mIHR5cGUgaW50LCB0aGlzIG1lYW5zIHRoZSBudW1lcmljYWwgc3VtLiAgRm9yIHN0cmluZ3MsCisgICAgICBpdCBtZWFucyB0aGF0IHRoZSB2YWx1ZSBvbiB0aGUgcmlnaHQgaXMgc3R1Y2sgb250byB0aGUgdmFsdWUgb24KKyAgICAgIHRoZSBsZWZ0ICgiYWIiIGlzIHRoZSB2YWx1ZSBvZiAiYSIrImIiKS4gIFRoaXMgb3BlcmF0b3IgZG9lcyBub3QKKyAgICAgIG1vZGlmeSBhbnkgb2YgdGhlIG9yaWdpbmFsIHZhbHVlcyAoaS5lLiB0aGUgdmFyaWFibGUgeCBmcm9tCisgICAgICBhYm92ZSByZXRhaW5zIGl0cyBvbGQgdmFsdWUpLgorCistIHN1YnRyYWN0aW9uIG9wZXJhdG9yOgorICAgIGV4YW1wbGU6IHggLSA3CisgICAgdmFsdWU6IHRoZSB2YWx1ZSBvZiB0aGUgZXhwcmVzc2lvbiBvbiB0aGUgbGVmdCByZWR1Y2VkIGJ5IHRoZSByaWdodAorICAgIGV4cGxhbmF0aW9uOiAgU2FtZSBjaGFyYWN0ZXJpc3RpY3MgYXMgYWRkaXRpb24sIGV4Y2VwdCBpdCBzdWJ0cmFjdHMuCisgICAgICBXaXRoIHN0cmluZ3M6ICJhIiBpcyB0aGUgdmFsdWUgb2YgImFiIiAtICJiIgorCisqIG11bHRpcGxpY2F0aW9uIG9wZXJhdG9yOgorICAgIGV4YW1wbGU6IHgqNworICAgIHZhbHVlIGFuZCBleHBsYW5hdGlvbjogc2FtZSBhcyB3aXRoIGFkZGluZyBhbmQgc3VidHJhY3RpbmcgZXhjZXB0CisgICAgICB0aGlzIG9uZSBwZXJmb3JtcyB0aGUgbWF0aCBvZiBtdWx0aXBsaWNhdGlvbgorCisvIGRpdmlzaW9uIG9wZXJhdG9yOgorICAgIGV4YW1wbGU6IHgvNworICAgIHZhbHVlIGFuZCBleHBsYW5hdGlvbjogc2VlIGFib3ZlCisKKys9IGFkZGl0aXZlIGFzc2lnbm1lbnQgb3BlcmF0b3I6CisgICAgZXhhbXBsZTogeCArPSA1CisgICAgdmFsdWU6IHRoZSBzYW1lIGFzIHggKyA1CisgICAgZXhhcGxhbmF0aW9uOiBJdCB0YWtlcyB0aGUgdmFsdWUgb2YgdGhlIHZhcmlhYmxlIG9uIHRoZSBsZWZ0CisgICAgICBhbmQgdGhlIHZhbHVlIG9mIHRoZSBleHByZXNzaW9uIG9uIHRoZSByaWdodCwgYWRkcyB0aGVtIHRvZ2V0aGVyCisgICAgICBhbmQgYXNzaWducyB0aGUgc3VtIHRvIHRoZSB2YXJpYWJsZSBvbiB0aGUgbGVmdC4KKyAgICAgIGV4YW1wbGU6IGlmIHggPSAyLi4uIHggKz0gNSBhc3NpZ25zIHRoZSB2YWx1ZQorICAgICAgICA3IHRvIHRoZSB2YXJpYWJsZSB4LiAgVGhlIHdob2xlIGV4cHJlc3Npb24KKyAgICAgICAgaGFzIHRoZSB2YWx1ZSBvZiA3LgorCistPSBzdWJ0cmFjdGlvbiBhc3NpZ25tZW50IG9wZXJhdG9yCisgICAgZXhhbXBsZTogeC09NworICAgIHZhbHVlOiB0aGUgdmFsdWUgb2YgdGhlIGxlZnQgdmFsdWUgcmVkdWNlZCBieSB0aGUgcmlnaHQgdmFsdWUKKyAgICBleGFtcGxhbmF0aW9uOiBUaGUgc2FtZSBhcyArPSBleGNlcHQgZm9yIHN1YnRyYWN0aW9uLgorCisqPSBtdWx0aXBsaWNhdGl2ZSBhc3NpZ25tZW50IG9wZXJhdG9yCisgICAgZXhhbXBsZTogeCAqPSA3CisgICAgdmFsdWU6IHRoZSB2YWx1ZSBvZiB0aGUgbGVmdCB2YWx1ZSBtdWx0aXBsaWVkIGJ5IHRoZSByaWdodAorICAgIGV4cGxhbmF0aW9uOiBTaW1pbGFyIHRvIC09IGFuZCArPSBleGNlcHQgZm9yIGFkZGl0aW9uLgorCisvPSBkaXZpc2lvbiBhc3NpZ25tZW50IG9wZXJhdG9yCisgICAgZXhhbXBsZTogeCAvPSA3CisgICAgdmFsdWU6IHRoZSB2YWx1ZSBvZiB0aGUgdmFyaWFibGUgb24gdGhlIGxlZnQgZGl2aWRlZCBieSB0aGUgcmlnaHQgdmFsdWUKKyAgICBleHBsYW5hdGlvbjogc2ltaWxhciB0byBhYm92ZSwgZXhjZXB0IHdpdGggZGl2aXNpb24KKworKysgcG9zdC9wcmUtaW5jcmVtZW50IG9wZXJhdG9ycworICAgIGV4YW1wbGVzOiBpKysgb3IgKytpCisgICAgdmFsdWVzOiAKKyAgICAgIGkrKyBoYXMgdGhlIHZhbHVlIG9mIGkKKyAgICAgICsraSBoYXMgdGhlIHZhbHVlIG9mIGkrMQorICAgIGV4cGxhbmF0aW9uOiArKyBjaGFuZ2VzIHRoZSB2YWx1ZSBvZiBpIGJ5IGluY3JlYXNpbmcgaXQgYnkgMS4KKyAgICAgIEhvd2V2ZXIsIHRoZSB2YWx1ZSBvZiB0aGUgZXhwcmVzc2lvbiBkZXBlbmRzIG9uIHdoZXJlIHlvdQorICAgICAgcGxhY2UgdGhlICsrLiAgKytpIGlzIHRoZSBwcmUtaW5jcmVtZW50IG9wZXJhdG9yLiAgVGhpcyBtZWFucworICAgICAgdGhhdCBpdCBwZXJmb3JtcyB0aGUgaW5jcmVtZW50ICpiZWZvcmUqIGdpdmluZyBhIHZhbHVlLgorICAgICAgaSsrIGlzIHRoZSBwb3N0LW5jcmVtZW50IG9wZXJhdG9yLiAgSXQgZXZhbHV0ZXMgYmVmb3JlIGluY3JlbWVudGluZworICAgICAgaS4gIFdoYXQgaXMgdGhlIHBvaW50PyAgV2VsbCwgaXQgZG9lcyBub3QgbXVjaCBtYXR0ZXIgdG8geW91IGF0CisgICAgICB0aGlzIHBvaW50LCBidXQgeW91IHNob3VsZCByZWNvZ25pemUgd2hhdCBpdCBtZWFucy4KKworLS0gcG9zdC9wcmUtZGVjcmVtZW50IG9wZXJhdG9ycworICAgIGV4YW1wbGVzOiBpLS0gb3IgLS1pCisgICAgdmFsdWVzOgorICAgICAgaS0tIHRoZSB2YWx1ZSBvZiBpCisgICAgICAtLWkgdGhlIHZhbHVlIG9mIGkgcmVkdWNlZCBieSAxCisgICAgZXhwbGFuYXRpb246IGxpa2UgKysgZXhjZXB0IGZvciBzdWJ0cmFjdGlvbgorCis9PSBlcXVhbGl0eSBvcGVyYXRvcgorICAgIGV4YW1wbGU6IHggPT0gNQorICAgIHZhbHVlOiB0cnVlIG9yIGZhbHNlIChub3QgMCBvciAwKQorICAgIGV4cGxhbmF0aW9uOiBpdCBkb2VzIG5vdGhpbmcgdG8gZWl0aGVyIHZhbHVlLCBidXQKKyAgICAgIGl0IHJldHVybnMgdHJ1ZSBpZiB0aGUgMiB2YWx1ZXMgYXJlIHRoZSBzYW1lLgorICAgICAgSXQgcmV0dXJucyBmYWxzZSBpZiB0aGV5IGFyZSBub3QgZXF1YWwuCisKKyE9IGluZXF1YWxpdHkgb3BlcmF0b3IKKyAgICBleGFtcGxlOiB4ICE9IDUKKyAgICB2YWx1ZTogdHJ1ZSBvciBmYWxzZQorICAgIGV4cGxhbmF0aW9uIHJldHVybnMgdHJ1ZSBpZiB0aGUgbGVmdCBleHByZXNzaW9uIGlzIG5vdCBlcXVhbCB0byB0aGUgcmlnaHQKKyAgICAgIGV4cHJlc3Npb24uICBJdCByZXR1cm5zIGZhbHMgaWYgdGhleSBhcmUgZXF1YWwKKworPiBncmVhdGVyIHRoYW4gb3BlcmF0b3IKKyAgICBleGFtcGxlOiB4ID4gNQorICAgIHZhbHVlOiB0cnVlIG9yIGZhbHNlCisgICAgZXhwbGFuYXRpb246IHRydWUgb25seSBpZiB4IGhhcyBhIHZhbHVlIGdyZWF0ZXIgdGhhbiA1CisgICAgICBmYWxzZSBpZiB0aGUgdmFsdWUgaXMgZXF1YWwgb3IgbGVzcworCis8IGxlc3MgdGhhbiBvcGVyYXRvcgorPj0gZ3JlYXRlciB0aGFuIG9yIGVxdWFsIHRvIG9wZXJhdG9yCis8PSBsZXNzIHRoYW4gb3IgZXF1YWwgdG8gb3BlcmF0b3IKKyAgICBleGFtcGxlczogeCA8IHkgICAgeCA+PSB5ICAgIHggPD0geQorICAgIHZhbHVlczogdHJ1ZSBvciBmYWxzZQorICAgIGV4cGxhbmF0aW9uOiBzaW1pbGFyIGFzIHRvID4gZXhjZXB0CisgICAgICA8IHRydWUgaWYgbGVmdCBpcyBsZXNzIHRoYW4gcmlnaHQKKyAgICAgID49IHRydWUgaWYgbGVmdCBpcyBncmVhdGVyIHRoYW4gKm9yIGVxdWFsIHRvKiByaWdodAorICAgICAgPD0gdHJ1ZSBpZiB0aGUgbGVmdCBpcyBsZXNzIHRoYW4gKm9yIGVxdWFsIHRvKiB0aGUgcmlnaHQKKworJiYgbG9naWNhbCBhbmQgb3BlcmF0b3IKK3x8IGxvZ2ljYWwgb3Igb3BlcmF0b3IKKyAgICBleGFtcGxlczogeCAmJiB5ICAgICAgeCB8fCB5CisgICAgdmFsdWVzOiB0cnVlIG9yIGZhbHNlCisgICAgZXhwbGFuYXRpb246IElmIHRoZSByaWdodCB2YWx1ZSBhbmQgbGVmdCB2YWx1ZSBhcmUgbm9uLXplcm8sICYmIGlzIHRydWUuCisgICAgICBJZiBlaXRoZXIgYXJlIGZhbHNlLCB0aGVuICYmIGlzIGZhbHNlLgorICAgICAgRm9yIHx8LCBvbmx5IG9uZSBvZiB0aGUgdmFsdWVzIG11c3QgYmUgdHJ1ZSBmb3IgaXQgdG8gZXZhbHVhdGUKKyAgICAgIGFzIHRydWUuICBJdCBpcyBvbmx5IGZhbHNlIGlmIGJvdGggdmFsdWVzIGluZGVlZAorICAgICAgYXJlIGZhbHNlCisKKyEgbmVnYXRpb24gb3BlcmF0b3IKKyAgICBleGFtcGxlOiAheAorICAgIHZhbHVlOiB0cnVlIG9yIGZhbHNlCisgICAgZXhwbGFuYXRpb246IElmIHggaXMgdHJ1ZSwgdGhlbiAheCBpcyBmYWxzZQorICAgICAgSWYgeCBpcyBmYWxzZSwgIXggaXMgdHJ1ZS4KKworQSBwYWlyIG9mIG1vcmUgY29tcGxpY2F0ZWQgb25lcyB0aGF0IGFyZSBoZXJlIGp1c3QgZm9yIHRoZSBzYWtlIG9mIGJlaW5nCitoZXJlLiAgRG8gbm90IHdvcnJ5IGlmIHRoZXkgdXR0ZXJseSBjb25mdXNlIHlvdS4KKworLT4gdGhlIGNhbGwgb3RoZXIgb3BlcmF0b3IKKyAgICBleGFtcGxlOiB0aGlzX3BsYXllcigpLT5xdWVyeV9uYW1lKCkKKyAgICB2YWx1ZTogVGhlIHZhbHVlIHJldHVybmVkIGJ5IHRoZSBmdW5jdGlvbiBiZWluZyBjYWxsZWQKKyAgICBleHBsYW5hdGlvbjogIEl0IGNhbGxzIHRoZSBmdW5jdGlvbiB3aGljaCBpcyBvbiB0aGUgcmlnaHQgaW4gdGhlIG9iamVjdAorICAgICAgb24gdGhlIGxlZnQgc2lkZSBvZiB0aGUgb3BlcmF0b3IuICBUaGUgbGVmdCBleHByZXNzaW9uICptdXN0KiBiZQorICAgICAgYW4gb2JqZWN0LCBhbmQgdGhlIHJpZ2h0IGV4cHJlc3Npb24gKm11c3QqIGJlIHRoZSBuYW1lIG9mIGEgZnVuY3Rpb24uCisgICAgICBJZiBub3Qgc3VjaCBmdW5jdGlvbiBleGlzdHMgaW4gdGhlIG9iamVjdCwgaXQgd2lsbCByZXR1cm4gMCAob3IKKyAgICAgIG1vcmUgY29ycmVjdGx5LCB1bmRlZmluZWQpLgorCis/IDogY29uZGl0aW9uYWwgb3BlcmF0b3IKKyAgICBleGFtcGxlOiB4ID8geSA6IHoKKyAgICB2YWx1ZXM6IGluIHRoZSBhYm92ZSBleGFtcGxlLCBpZiB4IGlzIHRyeSwgdGhlIHZhbHVlIGlzIHkKKyAgICAgIGlmIHggaXMgZmFsc2UsIHRoZSB2YWx1ZSBvZiB0aGUgZXhwcmVzc2lvbiBpcyB6CisgICAgZXhwbGFuYXRpb246IElmIHRoZSBsZWZ0bW9zdCB2YWx1ZSBpcyB0cnVlLCBpdCB3aWxsIGdpdmUgdGhlIGV4cHJlc3Npb24gYXMKKyAgICAgIGEgd2hvbGUgdGhlIHZhbHVlIG9mIHRoZSBtaWRkbGUgZXhwcmVzc2lvbi4gIEVsc2UsIGl0IHdpbGwgZ2l2ZSB0aGUKKyAgICAgIGV4cHJlc3Npb24gYXMgYSB3aG9sZSB0aGUgdmFsdWUgb2YgdGhlIHJpZ2h0bW9zdCBleHByZXNzaW9uLgorCitBIG5vdGUgb24gZXF1YWxpdHk6ICBBIHZlcnkgbmFzdHkgZXJyb3IgcGVvcGxlIG1ha2UgdGhhdCBpcyBWRVJZIGRpZmZpY3VsdAordG8gZGVidWcgaXMgdGhlIGVycm9yIG9mIHBsYWNpbmcgPSB3aGVyZSB5b3UgbWVhbiA9PS4gIFNpbmNlCitvcGVyYXRvcnMgcmV0dXJuIHZhbHVlcywgdGhleSBib3RoIG1ha2Ugc2Vuc2Ugd2hlbiBiZWluZyBldmFsdWF0ZWQuCitJbiBvdGhlciB3b3Jkcywgbm8gZXJyb3Igb2NjdXJzLiAgQnV0IHRoZXkgaGF2ZSB2ZXJ5IGRpZmZlcmVudCB2YWx1ZXMuICBGb3IgZXhhbXBsZToKKyAgaWYoeCA9PSA1KSAgICBpZih4ID0gNSkKK1RoZSB2YWx1ZSBvZiB4ID09IDUgaXMgdHJ1ZSBpZiB0aGUgdmFsdWUgb2YgeCBpcyA1LCBmYWxzZSBvdGhld2lzZS4KK1RoZSB2YWx1ZSBvZiB4ID0gNSBpcyA1IChhbmQgdGhlcmVmb3JlIGFsd2F5cyB0cnVlKS4KK1RoZSBpZiBzdGF0ZW1lbnQgaXMgbG9va2luZyBmb3IgdGhlIGV4cHJlc3Npb24gaW4gKCkgdG8gYmUgZWl0aGVyIHRydWUgb3IgZmFsc2UsCitzbyBpZiB5b3UgaGFkID0gYW5kIG1lYW50ID09LCB5b3Ugd291bGQgZW5kIHVwIHdpdGggYW4gZXhwcmVzc2lvbiB0aGF0IGlzCithbHdheXMgdHJ1ZS4gIEFuZCB5b3Ugd291bGQgcHVsbCB5b3VyIGhhaXIgb3V0IHRyeWluZyB0byBmaWd1cmUgb3V0Cit3aHkgdGhpbmdzIHdlcmUgbm90IGhhcHBlbmluZyBsaWtlIHRoZXkgc2hvdWxkIDopCmRpZmYgLS1naXQgYS9kb2MvS1VSUy9MUEMtS1VSUy9jaGFwdGVyNyBiL2RvYy9LVVJTL0xQQy1LVVJTL2NoYXB0ZXI3Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjM5ZjMxMWIKLS0tIC9kZXYvbnVsbAorKysgYi9kb2MvS1VSUy9MUEMtS1VSUy9jaGFwdGVyNwpAQCAtMCwwICsxLDQzMiBAQAorICAgICAgICAgICAgICAgICAgICAgICAgICAgTFBDIEJhc2ljcworICAgICAgICAgICAgICAgICAgV3JpdHRlbiBieSBEZXNjYXJ0ZXMgb2YgQm9yZworICAgICAgICAgICAgICAgICAgZmlyc3QgZWRpdGlvbjogMjMgYXByaWwgMTk5MworICAgICAgICAgICAgICAgICAgc2Vjb25kIGVkaXRpb246IDEwIGp1bHkgMTk5MworCitDSEFQVEVSIDc6IEZsb3cgQ29udHJvbAorCis3LjEgUmV2aWV3IG9mIHZhcmlhYmxlcworVmFyaWFibGVzIG1heSBiZSBtYW5pcHVsYXRlZCBieSBhc3NpZ25pbmcgb3IgY2hhbmdpbmcgdmFsdWVzIHdpdGggdGhlCitleHByZXNzaW9ucyA9LCArPSwgLT0sICsrLCAtLS4gIFRob3NlIGV4cHJlc3Npb25zIG1heSBiZSBjb21iaW5lZCB3aXRoCit0aGUgZXhwcmVzc2lvbnMgLSwgKywgKiwgLywgJS4gIEhvd2V2ZXIsIHNvIGZhciwgeW91IGhhdmUgb25seSBiZWVuCitzaG93biBob3cgdG8gdXNlIGEgZnVuY3Rpb24gdG8gZG8gdGhlc2UgaW4gYSBsaW5lYXIgd2F5LiAgRm9yIGV4YW1wbGU6CisgCitpbnQgaGVsbG8oaW50IHgpIHsKKyAgICB4LS07CisgICAgd3JpdGUoIkhlbGxvLCB4IGlzICIreCsiLlxuIik7CisgICAgcmV0dXJuIHg7Cit9CisgCitpcyBhIGZ1bmN0aW9uIHlvdSBzaG91bGQga25vdyBob3cgdG8gd3JpdGUgYW5kIHVuZGVyc3RhbmQuICBCdXQgd2hhdAoraWYgeW91IHdhbnRlZCB0byB3cml0ZSB0aGUgdmFsdWUgb2YgeCBvbmx5IGlmIHggPSAxPyAgT3Igd2hhdCBpZgoreW91IHdhbnRlZCBpdCB0byBrZWVwIHdyaXRpbmcgeCBvdmVyIGFuZCBvdmVyIHVudGlsIHggPSAxIGJlZm9yZQorcmV0dXJuaW5nPyAgTFBDIHVzZXMgZmxvdyBjb250cm9sIGluIGV4YWN0bHkgdGhlIHNhbWUgd2F5IGFzIEMgYW5kIEMrKy4KKworNy4yIFRoZSBMUEMgZmxvdyBjb250cm9sIHN0YXRlbWVudHMKK0xQQyB1c2VzIHRoZSBmb2xsb3dpbmcgZXhwcmVzc2lvbnM6CisgCitpZihleHByZXNzaW9uKSBpbnN0cnVjdGlvbjsKKyAKK2lmKGV4cHJlc3Npb24pIGluc3RydWN0aW9uOworZWxzZSBpbnN0cnVjdGlvbjsKKyAKK2lmKGV4cHJlc3Npb24pIGluc3RydWN0aW9uOworZWxzZSBpZihleHByZXNzaW9uKSBpbnN0cnVjdGlvbjsKK2Vsc2UgaW5zdHJ1Y3Rpb247CisgCit3aGlsZShleHByZXNzaW9uKSBpbnN0cnVjdGlvbjsKKyAKK2RvIHsgaW5zdHJ1Y3Rpb247IH0gd2hpbGUoZXhwcmVzc2lvbik7CisgCitzd2l0Y2goZXhwcmVzc2lvbikgeworICAgIGNhc2UgKGV4cHJlc3Npb24pOiBpbnN0cnVjdGlvbjsgYnJlYWs7CisgICAgZGVmYXVsdDogaW5zdHJ1Y3Rpb247Cit9CisgCitCZWZvcmUgd2UgZGlzY3VzcyB0aGVzZSwgZmlyc3Qgc29tZXRoaW5nIG9uIHdoYXQgaXMgbWVhbnQgYnkgZXhwcmVzc2lvbiBhbmQKK2luc3RydWN0aW9uLiAgQW4gZXhwcmVzc2lvbiBpcyBhbnl0aGluZyB3aXRoIGEgdmFsdWUgbGlrZSBhIHZhcmlhYmxlLAorYSBjb21wYXJpc29uIChsaWtlIHg+NSwgd2hlcmUgaWYgeCBpcyA2IG9yIG1vcmUsIHRoZSB2YWx1ZSBpcyAxLCBlbHNlIHRoZQordmFsdWUgaXMgMCksIG9yIGFuIGFzc2lnbm1lbnQobGlrZSB4ICs9IDIpLiAgQW4gaW5zdHJ1Y3Rpb24gY2FuIGJlIGFueQorc2luZ2xlIGxpbmUgb2YgbHBjIGNvZGUgbGlrZSBhIGZ1bmN0aW9uIGNhbGwsIGEgdmFsdWUgYXNzaWdubWVudCBvcgorbW9kaWZpY2F0aW9uLCBldGMuCisgCitZb3Ugc2hvdWxkIGtub3cgYWxzbyB0aGUgb3BlcmF0b3JzICYmLCB8fCwgPT0sICE9LCBhbmQgIS4gIFRoZXNlIGFyZSB0aGUKK2xvZ2ljYWwgb3BlcmF0b3JzLiAgVGhleSByZXR1cm4gYSBub256ZXJvIHZhbHVlIHdoZW4gdHJ1ZSwgYW5kIDAgd2hlbiBmYWxzZS4KK01ha2Ugbm90ZSBvZiB0aGUgdmFsdWVzIG9mIHRoZSBmb2xsb3dpbmcgZXhwcmVzc2lvbnM6CisgCisoMSAmJiAxKSB2YWx1ZTogMSAgICgxIGFuZCAxKQorKDEgJiYgMCkgdmFsdWU6IDAgICAoMSBhbmQgMCkKKygxIHx8IDApIHZhbHVlOiAxICAgKDEgb3IgMCkKKygxID09IDEpIHZhbHVlOiAxICAgKDEgaXMgZXF1YWwgdG8gMSkKKygxICE9IDEpIHZhbHVlOiAwICAgKDEgaXMgbm90IGVxdWFsIHRvIDEpCisoITEpIHZhbHVlOiAwICAgICAgIChub3QgMSkKKyghMCkgdmFsdWU6IDEgICAgICAgKG5vdCAwKQorIAorSW4gZXhwcmVzc2lvbnMgdXNpbmcgJiYsIGlmIHRoZSB2YWx1ZSBvZiB0aGUgZmlyc3QgaXRlbSBiZWluZyBjb21wYXJlZAoraXMgMCwgdGhlIHNlY29uZCBpcyBuZXZlciB0ZXN0ZWQgZXZlbi4gIFdoZW4gdXNpbmcgfHwsIGlmIHRoZSBmaXJzdCBpcwordHJ1ZSAoMSksIHRoZW4gdGhlIHNlY29uZCBpcyBub3QgdGVzdGVkLgorIAorNy4zIGlmKCkKK1RoZSBmaXJzdCBleHByZXNzaW9uIHRvIGxvb2sgYXQgdGhhdCBhbHRlcnMgZmxvdyBjb250cm9sIGlzIGlmKCkuICBUYWtlCithIGxvb2sgYXQgdGhlIGZvbGxvd2luZyBleGFtcGxlOgorIAorMSB2b2lkIHJlc2V0KCkgeworMiAgICAgaW50IHg7CiszCis0ICAgICA6OnJlc2V0KCk7Cis1ICAgICB4ID0gcmFuZG9tKDEwKTsKKzYgICAgIGlmKHggPiA1MCkgc2V0X3NlYXJjaF9mdW5jKCJmbG9vcmJvYXJkcyIsICJzZWFyY2hfZmxvb3IiKTsKKzcgfQorIAorVGhlIGxpbmUgbnVtYmVycyBhcmUgZm9yIHJlZmVyZW5jZSBvbmx5LgorSW4gbGluZSAyLCBvZiBjb3Vyc2Ugd2UgZGVjbGFyZSBhIHZhcmlhYmxlIG9mIHR5cGUgaW50IGNhbGxlZCB4LiAgTGluZSAzCitpcyBhZXRoZXRpYyB3aGl0ZXNwYWNlIHRvIGNsZWFybHkgc2hvdyB3aGVyZSB0aGUgZGVjbGFyYXRpb25zIGVuZCBhbmQgdGhlCitmdW5jdGlvbiBjb2RlIGJlZ2lucy4gIFRoZSB2YXJpYWJsZSB4IGlzIG9ubHkgYXZhaWxhYmxlIHRvIHRoZSBmdW5jdGlvbgorcmVzZXQoKS4KK0xpbmUgNCBtYWtlcyBhIGNhbGwgdG8gdGhlIHJvb20uYyB2ZXJzaW9uIG9mIHJlc2V0KCkuCitMaW5lIDUgdXNlcyB0aGUgZHJpdmVyIGVmdW4gcmFuZG9tKCkgdG8gcmV0dXJuIGEgcmFuZG9tIG51bWJlciBiZXR3ZWVuCiswIGFuZCB0aGUgcGFyYW1ldGVyIG1pbnVzIDEuICBTbyBoZXJlIHdlIGFyZSBsb29raW5nIGZvciBhIG51bWJlciBiZXR3ZWVuCiswIGFuZCA5OS4KK0luIGxpbmUgNiwgd2UgdGVzdCB0aGUgdmFsdWUgb2YgdGhlIGV4cHJlc3Npb24gKHg+NTApIHRvIHNlZSBpZiBpdCBpcyB0cnVlCitvciBmYWxzZS4gIElmIGl0IGlzIHRydWUsIHRoZW4gaXQgbWFrZXMgYSBjYWxsIHRvIHRoZSByb29tLmMgZnVuY3Rpb24KK3NldF9zZWFyY2hfZnVuYygpLiAgSWYgaXQgaXMgZmFsc2UsIHRoZSBjYWxsIHRvIHNldF9zZWFyY2hfZnVuYygpIGlzIG5ldmVyCitleGVjdXRlZC4KK0luIGxpbmUgNywgdGhlIGZ1bmN0aW9uIHJldHVybnMgZHJpdmVyIGNvbnRyb2wgdG8gdGhlIGNhbGxpbmcgZnVuY3Rpb24KKyh0aGUgZHJpdmVyIGl0c2VsZiBpbiB0aGlzIGNhc2UpIHdpdGhvdXQgcmV0dXJuaW5nIGFueSB2YWx1ZS4KKyAKK0lmIHlvdSBoYWQgd2FudGVkIHRvIGV4ZWN1dGUgbXVsdGlwbGUgaW5zdHJ1Y3Rpb25zIGluc3RlYWQgb2YganVzdCB0aGUgb25lLAoreW91IHdvdWxkIGhhdmUgZG9uZSBpdCBpbiB0aGUgZm9sbG93aW5nIG1hbm5lcjoKKyAKK2lmKHg+NTApIHsKKyAgICBzZXRfc2VhcmNoX2Z1bmMoImZsb29yYm9hcmRzIiwgInNlYXJjaF9mbG9vciIpOworICAgIGlmKCFwcmVzZW50KCJiZWdnYXIiLCB0aGlzX29iamVjdCgpKSkgbWFrZV9iZWdnYXIoKTsKK30KKyAKK05vdGljZSB0aGUge30gZW5jYXBzdWxhdGUgdGhlIGluc3RydWN0aW9ucyB0byBiZSBleGVjdXRlZCBpZiB0aGUgdGVzdAorZXhwcmVzc2lvbiBpcyB0cnVlLiAgSW4gdGhlIGV4YW1wbGUsIGFnYWluIHdlIGNhbGwgdGhlIHJvb20uYyBmdW5jdGlvbgord2hpY2ggc2V0cyBhIGZ1bmN0aW9uIChzZWFyY2hfZmxvb3IoKSkgdGhhdCB5b3Ugd2lsbCBsYXRlciBkZWZpbmUgeW91cnNlbGYKK3RvIGJlIGNhbGxlZCB3aGVuIHRoZSBwbGF5ZXIgdHlwZXMgInNlYXJjaCBmbG9vcmJvYXJkcyIgKE5PVEU6IFRoaXMgaXMKK2hpZ2hseSBtdWRsaWIgZGVwZW5kZW50LiAgTmlnaHRtYXJlIG11ZGxpYnMgaGF2ZSB0aGlzIGZ1bmN0aW9uIGNhbGwuCitPdGhlcnMgbWF5IGhhdmUgc29tZXRoaW5nIHNpbWlsYXIsIHdoaWxlIG90aGVycyBtYXkgbm90IGhhdmUgdGhpcyBmZWF0dXJlCit1bmRlciBhbnkgbmFtZSkuICBOZXh0LCB0aGVyZSBpcyBhbm90aGVyIGlmKCkgZXhwcmVzc2lvbiB0aGF0IHRlc3RzIHRoZQordHJ1dGggb2YgdGhlIGV4cHJlc3Npb24gKCFwcmVzZW50KCJiZWdnYXIiLHRoaXNfb2JqZWN0KCkpKS4gIFRoZSAhIGluIHRoZQordGVzdCBleHByZXNzaW9uIGNoYW5nZXMgdGhlIHRydXRoIG9mIHRoZSBleHByZXNzaW9uIHdoaWNoIGZvbGxvd3MgaXQuICBJbgordGhpcyBjYXNlLCBpdCBjaGFuZ2VzIHRoZSB0cnV0aCBvZiB0aGUgZWZ1biBwcmVzZW50KCksIHdoaWNoIHdpbGwgcmV0dXJuCit0aGUgb2JqZWN0IHRoYXQgaXMgYSBiZWdnYXIgaWYgaXQgaXMgaW4gdGhlIHJvb20gKHRoaXNfb2JqZWN0KCkpLCBvciBpdAord2lsbCByZXR1cm4gMCBpZiB0aGVyZSBpcyBubyBiZWdnYXIgaW4gdGhlIHJvb20uICBTbyBpZiB0aGVyZSBpcyBhIGJlZ2dhcgorc3RpbGwgbGl2aW5nIGluIHRoZSByb29tLCAocHJlc2VudCgiYmVnZ2FyIiwgdGhpc19vYmplY3QoKSkpIHdpbGwgaGF2ZQorYSB2YWx1ZSBlcXVhbCB0byB0aGUgYmVnZ2FyIG9iamVjdCAoZGF0YSB0eXBlIG9iamVjdCksIG90aGVyd2lzZSBpdCB3aWxsCitiZSAwLiAgVGhlICEgd2lsbCBjaGFuZ2UgYSAwIHRvIGEgMSwgb3IgYW55IG5vbnplcm8gdmFsdWUgKGxpa2UgdGhlCitiZWdnYXIgb2JqZWN0KSB0byBhIDAuICBUaGVyZWZvcmUsIHRoZSBleHByZXNzaW9uCisoIXByZXNlbnQoImJlZ2dhciIsIHRoaXNfb2JqZWN0KCkpKSBpcyB0cnVlIGlmIHRoZXJlIGlzIG5vIGJlZ2dhciBpbiB0aGUKK3Jvb20sIGFuZCBmYWxzZSBpZiB0aGVyZSBpcy4gIFNvLCBpZiB0aGVyZSBpcyBubyBiZWdnYXIgaW4gdGhlIHJvb20sCit0aGVuIGl0IGNhbGxzIHRoZSBmdW5jdGlvbiB5b3UgZGVmaW5lIGluIHlvdXIgcm9vbSBjb2RlIHRoYXQgbWFrZXMgYQorbmV3IGJlZ2dhciBhbmQgcHV0cyBpdCBpbiB0aGUgcm9vbS4gKElmIHRoZXJlIGlzIGEgYmVnZ2FyIGluIHRoZSByb29tLAord2UgZG8gbm90IHdhbnQgdG8gYWRkIHlldCBhbm90aGVyIG9uZSA6KSkKKyAKK09mIGNvdXJzZSwgaWYoKSdzIG9mdGVuIGNvbWVzIHdpdGggYW5kcyBvciBidXRzIDopLiAgSW4gTFBDLCB0aGUgZm9ybWFsCityZWFkaW5nIG9mIHRoZSBpZigpIHN0YXRlbWVudCBpczoKKyAKK2lmKGV4cHJlc3Npb24pIHsgc2V0IG9mIGludHJ1Y3Rpb25zIH0KK2Vsc2UgaWYoZXhwcmVzc2lvbikgeyBzZXQgb2YgaW5zdHJ1Y3Rpb25zIH0KK2Vsc2UgeyBzZXQgb2YgaW5zdHJ1Y3Rpb25zIH0KKyAKK1RoaXMgbWVhbnM6CisgCitJZiBleHByZXNzaW9uIGlzIHRydWUsIHRoZW4gZG8gdGhlc2UgaW5zdHJ1Y3Rpb25zLgorT3RoZXJpc2UsIGlmIHRoaXMgc2Vjb25kIGV4cHJlc3Npb24gaXMgdHJ1ZSwgZG8gdGhpcyBzZWNvbmQgc2V0LgorQW5kIGlmIG5vbmUgb2YgdGhvc2Ugd2VyZSB0cnVlLCB0aGVuIGRvIHRoaXMgbGFzdCBzZXQuCisgCitZb3UgY2FuIGhhdmUgaWYoKSBhbG9uZToKKyAKK2lmKHg+NSkgd3JpdGUoIkZvbyxcbiIpOworIAord2l0aCBhbiBlbHNlIGlmKCk6CisgCitpZih4ID4gNSkgd3JpdGUoIlggaXMgZ3JlYXRlciB0aGFuIDUuXG4iKTsKK2Vsc2UgaWYoeCA+Mikgd3JpdGUoIlggaXMgbGVzcyB0aGFuIDYsIGJ1dCBncmVhdGVyIHRoYW4gMi5cbiIpOworIAord2l0aCBhbiBlbHNlOgorIAoraWYoeD41KSB3cml0ZSgiWCBpcyBncmVhdGVyIHRoYW4gNS5cbiIpOworZWxzZSB3cml0ZSgiWCBpcyBsZXNzIHRoYW4gNi5cbiIpOworIAorb3IgdGhlIHdob2xlIGxvdCBvZiB0aGVtIGFzIGxpc3RlZCBhYm92ZS4gIFlvdSBjYW4gaGF2ZSBhbnkgbnVtYmVyIG9mCitlbHNlIGlmKCkncyBpbiB0aGUgZXhwcmVzc2lvbiwgYnV0IHlvdSBtdXN0IGhhdmUgb25lIGFuZCBvbmx5IG9uZQoraWYoKSBhbmQgYXQgbW9zdCBvbmUgZWxzZS4gIE9mIGNvdXJzZSwgYXMgd2l0aCB0aGUgYmVnZ2FyIGV4YW1wbGUsCit5b3UgbWF5IG5lc3QgaWYoKSBzdGF0ZW1lbnRzIGluc2lkZSBpZigpIGluc3RydWN0aW9ucy4gKEZvciBleGFtcGxlLAorICAgIGlmKHg+NSkgeworICAgICAgICBpZih4PT03KSB3cml0ZSgiTHVja3kgbnVtYmVyIVxuIik7CisgICAgICAgIGVsc2Ugd3JpdGUoIlJvbGwgYWdhaW4uXG4iKTsKKyAgICB9CisgICAgZWxzZSB3cml0ZSgiWW91IGxvc2UuXG4iKTsKKyAKKzcuNCBUaGUgc3RhdGVtZW50czogd2hpbGUoKSBhbmQgZG8ge30gd2hpbGUoKQorUHJvdG90eXBlOgord2hpbGUoZXhwcmVzc2lvbikgeyBzZXQgb2YgaW5zdHJ1Y3Rpb25zIH0KK2RvIHsgc2V0IG9mIGluc3RydWN0aW9ucyB9IHdoaWxlKGV4cHJlc3Npb24pOworIAorVGhlc2UgYWxsb3cgeW91IHRvIGNyZWF0ZSBhIHNldCBvZiBpbnN0cnVjdGlvbnMgd2hpY2ggY29udGludWUgdG8KK2V4ZWN1dGUgc28gbG9uZyBhcyBzb21lIGV4cHJlc3Npb24gaXMgdHJ1ZS4gIFN1cHBvc2UgeW91IHdhbnRlZCB0bworc2V0IGEgdmFyaWFibGUgZXF1YWwgdG8gYSBwbGF5ZXIncyBsZXZlbCBhbmQga2VlcCBzdWJ0cmFjdGluZyByYW5kb20KK2Ftb3VudHMgb2YgZWl0aGVyIG1vbmV5IG9yIGhwIGZyb20gYSBwbGF5ZXIgdW50aWwgdGhhdCB2YXJpYWJsZSBlcXVhbHMKKzAgKHNvIHRoYXQgcGxheWVyJ3Mgb2YgaGlnaGVyIGxldmVscyB3b3VsZCBsb3NlIG1vcmUpLiAgWW91IG1pZ2h0IGRvIGl0Cit0aGlzIHdheToKKyAKKzEgICAgaW50IHg7CisyCiszICAgIHggPSAoaW50KXRoaXNfcGxheWVyKCktPnF1ZXJ5X2xldmVsKCk7ICAvKiB0aGlzIGhhcyB5ZXQgdG8gYmUgZXhwbGFpbmVkICovCis0ICAgIHdoaWxlKHggPiAwKSB7Cis1ICAgICAgICBpZihyYW5kb20oMikpIHRoaXNfcGxheWVyKCktPmFkZF9tb25leSgic2lsdmVyIiwgLXJhbmRvbSg1MCkpOworNiAgICAgICAgZWxzZSB0aGlzX3BsYXllcigpLT5hZGRfaHAoLShyYW5kb20oMTApKTsKKzcgICAgICAgIHgtLTsKKzggICAgfQorIAorVGhlIGV4cHJlc3Npb24gdGhpc19wbGF5ZXIoKS0+cXVlcnlfbGV2ZWwoKSBjYWxJbiBsaW5lIDQsIHdlIHN0YXJ0IGEgbG9vcCB0aGF0IGV4ZWN1dGVzIHNvIGxvbmcgYXMgeCBpcyBncmVhdGVyIHRoYW4gMC4KKyAgICBBbm90aGVyIHdheSB3ZSBjb3VsZCBoYXZlIGRvbmUgdGhpcyBsaW5lIHdvdWxkIGJlOgorICAgICAgICB3aGlsZSh4KSB7CisgICAgVGhlIHByb2JsZW0gd2l0aCB0aGF0IHdvdWxkIGJlIGlmIHdlIGxhdGVyIG1hZGUgYSBjaGFuZ2UgdG8gdGhlIGZ1bnRpb24KK3kgYW55d2hlcmUgYmV0d2VlbiAwIGFuZCA0OSBjb2lucy4KK0luIGxpbmUgNiwgaWYgaW5zdGVhZCBpdCByZXR1cm5zIDAsIHdlIGNhbGwgdGhlIGFkZF9ocCgpIGZ1bmN0aW9uIGluIHRoZQorICAgIHBsYXllciB3aGljaCByZWR1Y2VzIHRoZSBwbGF5ZXIncyBoaXQgcG9pbnRzIGFueXdoZXJlIGJldHdlZW4gMCBhbmQgOSBocC4KK0luIGxpbmUgNywgd2UgcmVkdWNlIHggYnkgMS4KK0F0IGxpbmUgOCwgdGhlIGV4ZWN1dGlvbiBjb21lcyB0byB0aGUgZW5kIG9mIHRoZSB3aGlsZSgpIGluc3RydWN0aW9ucyBhbmQKKyAgICBnb2VzIGJhY2sgdXAgdG8gbGluZSA0IHRvIHNlZSBpZiB4IGlzIHN0aWxsIGdyZWF0ZXIgdGhhbiAwLiAgVGhpcworICAgIGxvb3Agd2lsbCBrZWVwIGV4ZWN1dGluZyB1bnRpbCB4IGlzIGZpbmFsbHkgbGVzcyB0aGFuIDEuCisgCitZb3UgbWlnaHQsIGhvd2V2ZXIsIHdhbnQgdG8gdGVzdCBhbiBleHByZXNzaW9uICphZnRlciogeW91IGV4ZWN1dGUgc29tZQoraW5zdHJ1Y3Rpb25zLiAgRm9yIGluc3RhbmNlLCBpbiB0aGUgYWJvdmUsIGlmIHlvdSB3YW50ZWQgdG8gZXhlY3V0ZQordGhlIGluc3RydWN0aW9ucyBhdCBsZWFzdCBvbmNlIGZvciBldmVyeW9uZSwgZXZlbiBpZiB0aGVpciBsZXZlbCBpcworYmVsb3cgdGhlIHRlc3QgbGV2ZWw6CisgCisgICAgaW50IHg7CisgCisgICAgeCA9IChpbnQpdGhpc19wbGF5ZXIoKS0+cXVlcnlfbGV2ZWwoKTsKKyAgICBkbyB7CisgICAgICAgIGlmKHJhbmRvbSgyKSkgdGhpc19wbGF5ZXIoKS0+YWRkX21vbmV5KCJzaWx2ZXIiLCAtcmFuZG9tKDUwKSk7CisgICAgICAgIGVsc2UgdGhpc19wbGF5ZXIoKS0+YWRkX2hwKC1yYW5kb20oMTApKTsKKyAgICAgICAgeC0tOworICAgIH0gd2hpbGUoeCA+IDApOworIAorVGhpcyBpcyBhIHJhdGhlciBiaXphcnJlIGV4YW1wbGUsIGJlaW5nIGFzIGZldyBtdWRzIGhhdmUgbGV2ZWwgMCBwbGF5ZXJzLgorQW5kIGV2ZW4gc3RpbGwsIHlvdSBjb3VsZCBoYXZlIGRvbmUgaXQgdXNpbmcgdGhlIG9yaWdpbmFsIGxvb3Agd2l0aAorYSBkaWZmZXJlbnQgdGVzdC4gIE5ldmVydGhlbGVzcywgaXQgaXMgaW50ZW5kZWQgdG8gc2hvdyBob3cgYSBkb3t9IHdoaWxlKCkKK3dvcmtzLiAgQXMgeW91IHNlZSwgaW5zdGVhZCBvZiBpbml0aWF0aW5nIHRoZSB0ZXN0IGF0IHRoZSBiZWdpbm5pbmcgb2YgdGhlCitsb29wICh3aGljaCB3b3VsZCBpbW1lZGlhdGVseSBleGNsdWRlIHNvbWUgdmFsdWVzIG9mIHgpLCBpdCB0ZXN0cyBhZnRlcgordGhlIGxvb3AgaGFzIGJlZW4gZXhlY3V0ZWQuICBUaGlzIGFzc3VyZXMgdGhhdCB0aGUgaW5zdHJ1Y3Rpb25zIG9mIHRoZSBsb29wCitnZXQgZXhlY3V0ZWQgYXQgbGVhc3Qgb25lIHRpbWUsIG5vIG1hdHRlciB3aGF0IHggaXMuCisgCis3LjUgZm9yKCkgbG9vcHMKK1Byb3RvdHlwZToKK2Zvcihpbml0aWFsaXplIHZhbHVlcyA7IHRlc3QgZXhwcmVzc2lvbiA7IGluc3RydWN0aW9uKSB7IGluc3RydWN0aW9ucyB9CisgCitpbml0aWFsaXplIHZhbHVlczoKK1RoaXMgYWxsb3dzIHlvdSB0byBzZXQgc3RhcnRpbmcgdmFsdWVzIG9mIHZhcmlhYmxlcyB3aGljaCB3aWxsIGJlIHVzZWQKK2luIHRoZSBsb29wLiAgVGhpcyBwYXJ0IGlzIG9wdGlvbmFsLgorIAordGVzdCBleHByZXNzaW9uOgorU2FtZSBhcyB0aGUgZXhwcmVzc2lvbiBpbiBpZigpIGFuZCB3aGlsZSgpLiAgVGhlIGxvb3AgaXMgZXhlY3V0ZWQKK2FzIGxvbmcgYXMgdGhpcyBleHByZXNzaW9uIChvciBleHByZXNzaW9ucykgaXMgdHJ1ZS4gWW91IG11c3QgaGF2ZSBhCit0ZXN0IGV4cHJlc3Npb24uCisgCitpbnN0cnVjdGlvbjoKK0FuIGV4cHJlc3Npb24gKG9yIGV4cHJlc3Npb25zKSB3aGljaCBpcyB0byBiZSBleGVjdXRlZCBhdCB0aGUgZW5kIG9mIGVhY2gKK2xvb3AuICBUaGlzIGlzIG9wdGlvbmFsLgorIAorTm90ZToKK2Zvcig7ZXhwcmVzc2lvbjspIHt9CitJUyBFWEFDVExZIFRIRSBTQU1FIEFTCit3aGlsZShleHByZXNzaW9uKSB7fQorIAorRXhhbXBsZToKKyAKKzEgICAgaW50IHg7CisyCiszICAgIGZvcih4PSAoaW50KXRoaXNfcGxheWVyKCktPnF1ZXJ5X2xldmVsKCk7IHg+MDsgeC0tKSB7Cis0ICAgICAgICBpZihyYW5kb20oMikpIHRoaXNfcGxheWVyKCktPmFkZF9tb25leSgic2lsdmVyIiwgLXJhbmRvbSg1MCkpOworNSAgICAgICAgZWxzZSB0aGlzX3BsYXllcigpLT5hZGRfaHAoLXJhbmRvbSgxMCkpOworNiAgICB9CisgCitUaGlzIGZvcigpIGxvb3AgYmVoYXZlcyBFWEFDVExZIGxpa2UgdGhlIHdoaWxlKCkgZXhhbXBsZS4KK0FkZGl0aW9uYWxseSwgaWYgeW91IHdhbnRlZCB0byBpbml0aWFsaXplIDIgdmFyaWFibGVzOgorIAorZm9yKHg9MCwgeT1yYW5kb20oMjApOyB4PHk7IHgrKykgeyB3cml0ZSh4KyJcbiIpOyB9CisgCitIZXJlLCB3ZSBpbml0aWFsaXplIDIgdmFyaWFibGVzLCB4IGFuZCB5LCBhbmQgd2Ugc2VwYXJhdGUgdGhlbSBieSBhCitjb21tYS4gIFlvdSBjYW4gZG8gdGhlIHNhbWUgd2l0aCBhbnkgb2YgdGhlIDMgcGFydHMgb2YgdGhlIGZvcigpCitleHByZXNzaW9uLgorIAorNy42IFRoZSBzdGF0ZW1lbnQ6IHN3aXRjaCgpCitQcm90b3R5cGU6Citzd2l0Y2goZXhwcmVzc2lvbikgeworICAgIGNhc2UgY29uc3RhbnQ6IGluc3RydWN0aW9ucworICAgIGNhc2UgY29uc3RhbnQ6IGluc3RydWN0aW9ucworICAgIC4uLgorICAgIGNhc2UgY29uc3RhbnQ6IGluc3RydWN0aW9ucworICAgIGRlZmF1bHQ6IGluc3RydWN0aW9ucworfQorIAorVGhpcyBpcyBmdW5jdGlvbmFsbHkgbXVjaCBsaWtlIGlmKCkgZXhwcmVzc2lvbnMsIGFuZCBtdWNoIG5pY2VyIHRvIHRoZQorQ1BVLCBob3dldmVyIG1vc3QgcmFyZWx5IHVzZWQgYmVjYXVzZSBpdCBsb29rcyBzbyBkYW1uIGNvbXBsaWNhdGVkLgorQnV0IGl0IGlzIG5vdC4KKyAKK0ZpcnN0IG9mZiwgdGhlIGV4cHJlc3Npb24gaXMgbm90IGEgdGVzdC4gIFRoZSBjYXNlcyBhcmUgdGVzdHMuICBBIEVuZ2xpc2gKK3NvdW5kaW5nIHdheSB0byByZWFkOgorIAorMSAgICBpbnQgeDsKKzIKKzMgICAgeCA9IHJhbmRvbSg1KTsKKzQgICAgc3dpdGNoKHgpIHsKKzUgICAgICAgIGNhc2UgMTogd3JpdGUoIlggaXMgMS5cbiIpOworNiAgICAgICAgY2FzZSAyOiB4Kys7Cis3ICAgICAgICBkZWZhdWx0OiB4LS07Cis4ICAgIH0KKzkgICAgd3JpdGUoeCsiXG4iKTsKKyAKK2lzOgorIAorc2V0IHZhcmlhYmxlIHggdG8gYSByYW5kb20gbnVtYmVyIGJldHdlZW4gMCBhbmQgNC4KK0luIGNhc2UgMSBvZiB2YXJpYWJsZSB4IHdyaXRlIGl0cyB2YWx1ZSBhZGQgMSB0byBpdCBhbmQgc3VidHJhY3QgMS4KK0luIGNhc2UgMiBvZiB2YXJpYWJsZSB4LCBhZGQgMSB0byBpdHMgdmFsdWUgYW5kIHRoZW4gc3VidHJhY3QgMS4KK0luIG90aGVyIGNhc2VzIHN1YnRyYWN0IDEuCitXcml0ZSB0aGUgdmFsdWUgb2YgeC4KKyAKK3N3aXRjaCh4KSBiYXNpY2FsbHkgdGVsbHMgdGhlIGRyaXZlciB0aGF0IHRoZSB2YXJpYWJsZSB4IGlzIHRoZSB2YWx1ZQord2UgYXJlIHRyeWluZyB0byBtYXRjaCB0byBhIGNhc2UuCitPbmNlIHRoZSBkcml2ZXIgZmluZHMgYSBjYXNlIHdoaWNoIG1hdGNoZXMsIHRoYXQgY2FzZSAqYW5kIGFsbCBmb2xsb3dpbmcKK2Nhc2VzKiB3aWxsIGJlIGFjdGVkIHVwb24uICBZb3UgbWF5IGJyZWFrIG91dCBvZiB0aGUgc3dpdGNoIHN0YXRlbWVudAorYXMgd2VsbCBhcyBhbnkgb3RoZXIgZmxvdyBjb250cm9sIHN0YXRlbWVudCB3aXRoIGEgYnJlYWsgaW5zdHJ1Y3Rpb24gaW4KK29yZGVyIG9ubHkgdG8gZXhlY3V0ZSBhIHNpbmdsZSBjYXNlLiAgQnV0IHRoYXQgd2lsbCBiZSBleHBsYWluZWQgbGF0ZXIuCitUaGUgZGVmYXVsdCBzdGF0ZW1lbnQgaXMgb25lIHRoYXQgd2lsbCBiZSBleGVjdXRlZCBmb3IgYW55IHZhbHVlIG9mCit4IHNvIGxvbmcgYXMgdGhlIHN3aXRjaCgpIGZsb3cgaGFzIG5vdCBiZWVuIGJyb2tlbi4gIFlvdSBtYXkgdXNlIGFueQorZGF0YSB0eXBlIGluIGEgc3dpdGNoIHN0YXRlbWVudDoKKyAKK3N0cmluZyBuYW1lOworIAorbmFtZSA9IChzdHJpbmcpdGhpc19wbGF5ZXIoKS0+cXVlcnlfbmFtZSgpOworc3dpdGNoKG5hbWUpIHsKKyAgICBjYXNlICJkZXNjYXJ0ZXMiOiB3cml0ZSgiWW91IGJvcmcuXG4iKTsKKyAgICBjYXNlICJmbGFtbWUiOgorICAgIGNhc2UgImZvcmxvY2siOgorICAgIGNhc2UgInNoYWRvd3dvbGYiOiB3cml0ZSgiWW91IGFyZSBhIE5pZ2h0bWFyZSBoZWFkIGFyY2guXG4iKTsKKyAgICBkZWZhdWx0OiB3cml0ZSgiWW91IGV4aXN0LlxuIik7Cit9CisgCitGb3IgbWUsIEkgd291bGQgc2VlOgorWW91IGJvcmcuCitZb3UgYXJlIGEgTmlnaHRtYXJlIGhlYWQgYXJjaC4KK1lvdSBleGlzdC4KKyAKK0ZsYW1tZSwgRm9ybG9jaywgb3IgU2hhZG93d29sZiB3b3VsZCBzZWU6CitZb3UgYXJlIGEgTmlnaHRtYXJlIGhlYWQgYXJjaC4KK1lvdSBleGlzdC4KKyAKK0V2ZXJ5b25lIGVsc2Ugd291bGQgc2VlOgorWW91IGV4aXN0LgorIAorNy43IEFsdGVyaW5nIHRoZSBmbG93IG9mIGZ1bmN0aW9ucyBhbmQgZmxvdyBjb250cm9sIHN0YXRlbWVudHMKK1RoZSBmb2xsb3dpbmcgaW5zdHJ1Y3Rpb25zOgorcmV0dXJuICAgIGNvbnRpbnVlICAgIGJyZWFrCisgCithbHRlciB0aGUgbmF0dXJhbCBmbG93IG9mIHRoaW5ncyBhcyBkZXNjcmliZWQgYWJvdmUuCitGaXJzdCBvZiBhbGwsCityZXR1cm4KK25vIG1hdHRlciB3aGVyZSBpdCBvY2N1cnMgaW4gYSBmdW5jdGlvbiwgd2lsbCBjZWFzZSB0aGUgZXhlY3V0aW9uIG9mIHRoYXQKK2Z1bmN0aW9uIGFuZCByZXR1cm4gY29udHJvbCB0byB0aGUgZnVuY3Rpb24gd2hpY2ggY2FsbGVkIHRoZSBvbmUgdGhlCityZXR1cm4gc3RhdGVtZW50IGlzIGluLiAgSWYgdGhlIGZ1bmN0aW9uIGlzIE5PVCBvZiB0eXBlIHZvaWQsIHRoZW4gYQordmFsdWUgbXVzdCBmb2xsb3cgdGhlIHJldHVybiBzdGF0ZW1lbnQsIGFuZCB0aGF0IHZhbHVlIG11c3QgYmUgb2YgYQordHlwZSBtYXRjaGluZyB0aGUgZnVuY3Rpb24uICBBbiBhYnNvbHV0ZSB2YWx1ZSBmdW5jdGlvbiB3b3VsZCBsb29rCitsaWtlIHRoaXM6CisgCitpbnQgYWJzb2x1dGVfdmFsdWUoaW50IHgpIHsKKyAgICBpZih4Pi0xKSByZXR1cm4geDsKKyAgICBlbHNlIHJldHVybiAteDsKK30KKyAKK0luIHRoZSBzZWNvbmQgbGluZSwgdGhlIGZ1bmN0aW9uIGNlYXNlcyBleGVjdXRpb24gYW5kIHJldHVybnMgdG8gdGhlIGNhbGxpbmcKK2Z1bmN0aW9uIGJlY2F1c2UgdGhlIGRlc2lyZWQgdmFsdWUgaGFzIGJlZW4gZm91bmQgaWYgeCBpcyBhIHBvc2l0aXZlCitudW1iZXIuCisgCitjb250aW51ZSBpcyBtb3N0IG9mdGVuIHVzZWQgaW4gZm9yKCkgYW5kIHdoaWxlIHN0YXRlbWVudHMuICBJdCBzZXJ2ZXMKK3RvIHN0b3AgdGhlIGV4ZWN1dGlvbiBvZiB0aGUgY3VycmVudCBsb29wIGFuZCBzZW5kIHRoZSBleGVjdXRpb24gYmFjawordG8gdGhlIGJlZ2lubmluZyBvZiB0aGUgbG9vcC4gIEZvciBpbnN0YW5jZSwgc2F5IHlvdSB3YW50ZWQgdG8gYXZvaWQKK2RpdmlzaW9uIGJ5IDA6CisgCit4PSA0Oword2hpbGUoIHggPiAtNSkgeworICAgIHgtLQorICAgIGlmKCF4KSBjb250aW51ZTsKKyAgICB3cml0ZSgoMTAwL3gpKyJcbiIpOworfQord3JpdGUoIkRvbmUuXG4iKQorIAorWW91IHdvdWxkIHNlZSB0aGUgZm9sbG93aW5nIG91dHB1dDoKKzMzCis1MAorMTAwCistMTAwCistNTAKKy0zMworLTI1CitEb25lLgorVG8gYXZvaWQgYW4gZXJyb3IsIGl0IGNoZWNrcyBpbiBlYWNoIGxvb3AgdG8gbWFrZSBzdXJlIHggaXMgbm90IDAuCitJZiB4IGlzIHplcm8sIHRoZW4gaXQgc3RhcnRzIGJhY2sgd2l0aCB0aGUgdGVzdCBleHByZXNzaW9uIHdpdGhvdXQKK2ZpbmlzaGluZyBpdHMgY3VycmVudCBsb29wLgorIAorSW4gYSBmb3IoKSBleHByZXNzaW9uCisgZm9yKHg9MzsgeD4tNTsgeC0tKSB7CisgICAgaWYoIXgpIGNvbnRpbnVlOworICAgIHdyaXRlKCgxMDAveCkrIlxuIik7CisgfQorIHdyaXRlKCJEb25lLlxuIik7CitJdCB3b3JrcyBtdWNoIHRoZSBzYW1lIHdheS4gIE5vdGUgdGhpcyBnaXZlcyBleGFjdGx5IHRoZSBzYW1lIG91dHB1dAorYXMgYmVmb3JlLiBBdCB4PTEsIGl0IHRlc3RzIHRvIHNlZSBpZiB4IGlzIHplcm8sIGl0IGlzIG5vdCwgc28gaXQKK3dyaXRlcyAxMDAveCwgdGhlbiBnb2VzIGJhY2sgdG8gdGhlIHRvcCwgc3VidHJhY3RzIG9uZSBmcm9tIHgsIGNoZWNrcyB0bworc2VlIGlmIGl0IGlzIHplcm8gYWdhaW4sIGFuZCBpdCBpcyB6ZXJvLCBzbyBpdCBnb2VzIGJhY2sgdG8gdGhlIHRvcAorYW5kIHN1YnRyYWN0cyAxIGFnYWluLgorIAorYnJlYWsKK1RoaXMgb25lIGNlYXNlcyB0aGUgZnVuY3Rpb24gb2YgYSBmbG93IGNvbnRyb2wgc3RhdGVtZW50LiAgTm8gbWF0dGVyCit3aGVyZSB5b3UgYXJlIGluIHRoZSBzdGF0ZW1lbnQsIHRoZSBjb250cm9sIG9mIHRoZSBwcm9ncmFtIHdpbGwgZ28KK3RvIHRoZSBlbmQgb2YgdGhlIGxvb3AuICBTbywgaWYgaW4gdGhlIGFib3ZlIGV4YW1wbGVzLCB3ZSBoYWQKK3VzZWQgYnJlYWsgaW5zdGVhZCBvZiBjb250aW51ZSwgdGhlIG91dHB1dCB3b3VsZCBoYXZlIGxvb2tlZCBsaWtlIHRoaXM6CisgCiszMworNTAKKzEwMAorRG9uZS4KKyAKK2NvbnRpbnVlIGlzIG1vc3Qgb2Z0ZW4gdXNlZCB3aXRoIHRoZSBmb3IoKSBhbmQgd2hpbGUoKSBzdGF0ZW1lbnRzLgorYnJlYWsgaG93ZXZlciBpcyBtb3N0bHkgdXNlZCB3aXRoIHN3aXRjaCgpCisgCitzd2l0Y2gobmFtZSkgeworICAgIGNhc2UgImRlc2NhcnRlcyI6IHdyaXRlKCJZb3UgYXJlIGJvcmcuXG4iKTsgYnJlYWs7CisgICAgY2FzZSAiZmxhbW1lIjogd3JpdGUoIllvdSBhcmUgZmxhbW1lLlxuIik7IGJyZWFrOworICAgIGNhc2UgImZvcmxvY2siOiB3cml0ZSgiWW91IGFyZSBmb3Jsb2NrLlxuIik7IGJyZWFrOworICAgIGNhc2UgInNoYWRvd3dvbGYiOiB3cml0ZSgiWW91IGFyZSBzaGFkb3d3b2xmLlxuIik7IGJyZWFrOworICAgIGRlZmF1bHQ6IHdyaXRlKCJZb3Ugd2lsbCBiZSBhc3NpbWlsYXRlZC5cbiIpOworfQorIAorVGhpcyBmdW5jdGlvbnMganVzdCBsaWtlOgorIAoraWYobmFtZSA9PSAiZGVzY2FydGVzIikgd3JpdGUoIllvdSBhcmUgYm9yZy5cbiIpOworZWxzZSBpZihuYW1lID09ICJmbGFtbWUiKSB3cml0ZSgiWW91IGFyZSBmbGFtbWUuXG4iKTsKK2Vsc2UgaWYobmFtZSA9PSAiZm9ybG9jayIpIHdyaXRlKCJZb3UgYXJlIGZvcmxvY2suXG4iKTsKK2Vsc2UgaWYobmFtZSA9PSAic2hhZG93d29sZiIpIHdyaXRlKCJZb3UgYXJlIHNoYWRvd3dvbGYuXG4iKTsKK2Vsc2Ugd3JpdGUoIllvdSB3aWxsIGJlIGFzc2ltaWxhdGVkLlxuIik7CisgCitleGNlcHQgdGhlIHN3aXRjaCBzdGF0ZW1lbnQgaXMgbXVjaCBiZXR0ZXIgb24gdGhlIENQVS4KK0lmIGFueSBvZiB0aGVzZSBhcmUgcGxhY2VkIGluIG5lc3RlZCBzdGF0ZW1lbnRzLCB0aGVuIHRoZXkgYWx0ZXIgdGhlCitmbG93IG9mIHRoZSBtb3N0IGltbWVkaWF0ZSBzdGF0ZW1lbnQuCisgCis3LjggQ2hhcHRlciBzdW1tYXJ5CitUaGlzIGNoYXB0ZXIgY292ZXJlZCBvbmUgaGVsbCBvZiBhIGxvdCwgYnV0IGl0IHdhcyBzdHVmZiB0aGF0IG5lZWRlZCB0bworYmUgc2VlbiBhbGwgYXQgb25jZS4gIFlvdSBzaG91bGQgbm93IGNvbXBsZXRlbHkgdW5kZXJzdGFuZCBpZigpIGZvcigpCit3aGlsZSgpIGRve30gd2hpbGUoKSBhbmQgc3dpdGNoKCksIGFzIHdlbGwgYXMgaG93IHRvIGFsdGVyIHRoZWlyIGZsb3cKK3VzaW5nIHJldHVybiwgY29udGludWUsIGFuZCBicmVhay4gIEVmZmVjaWVuY3kgc2F5cyBpZiBpdCBjYW4gYmUgZG9uZSBpbgorYSBuYXR1cmFsIHdheSB1c2luZyBzd2l0Y2goKSBpbnN0ZWFkIG9mIGEgbG90IG9mIGlmKCkgZWxzZSBpZigpJ3MsIHRoZW4KK2J5IGFsbCBtZWFucyBkbyBpdC4gIFlvdSB3ZXJlIGFsc28gaW50cm9kdWNlZCB0byB0aGUgaWRlYSBvZiBjYWxsaW5nCitmdW5jdGlvbnMgaW4gb3RoZXIgb2JqZWN0cy4gIFRoYXQgaG93ZXZlciwgaXMgYSB0b3BpYyB0byBiZSBkZXRhaWxlZCBsYXRlci4KK1lvdSBub3cgc2hvdWxkIGJlIGNvbXBsZXRlbHkgYXQgZWFzZSB3cml0aW5nIHNpbXBsZSByb29tcyAoaWYgeW91IGhhdmUKK3JlYWQgeW91ciBtdWRsaWIncyByb29tIGJ1aWxkaW5nIGRvY3VtZW50KSwgc2ltcGxlIG1vbnN0ZXJzLCBhbmQKK290aGVyIHNvcnRzIG9mIHNpbXBsZSBvYmplY3RzLgpkaWZmIC0tZ2l0IGEvZG9jL0tVUlMvTFBDLUtVUlMvY2hhcHRlcjggYi9kb2MvS1VSUy9MUEMtS1VSUy9jaGFwdGVyOApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5hNzk0NzEzCi0tLSAvZGV2L251bGwKKysrIGIvZG9jL0tVUlMvTFBDLUtVUlMvY2hhcHRlcjgKQEAgLTAsMCArMSwxOTUgQEAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIExQQyBCYXNpY3MKKyAgICAgICAgICAgICAgICAgIFdyaXR0ZW4gYnkgRGVzY2FydGVzIG9mIEJvcmcKKyAgICAgICAgICAgICAgICAgIGZpcnN0IGVkaXRpb246IDIzIGFwcmlsIDE5OTMKKyAgICAgICAgICAgICAgICAgIHNlY29uZCBlZGl0aW9uOiAxMiBqdWx5IDE5OTMKKworQ0hBUFRFUiA4OiBUaGUgZGF0YSB0eXBlICJvYmplY3QiCisKKzguMSBSZXZpZXcKK1lvdSBzaG91bGQgbm93IGJlIGFibGUgdG8gZG8gYW55dGhpbmcgc28gbG9uZyBhcyB5b3Ugc3RpY2sgdG8gY2FsbGluZworZnVuY3Rpb25zIHdpdGhpbiB5b3VyIG93biBvYmplY3QuICBZb3Ugc2hvdWxkIGFsc28ga25vdywgdGhhdCBhdCB0aGUKK2JhcmUgbWluaW11bSB5b3UgY2FuIGdldCB0aGUgY3JlYXRlKCkgKG9yIHJlc2V0KCkpIGZ1bmN0aW9uIGluIHlvdXIgb2JqZWN0CitjYWxsZWQgdG8gc3RhcnQganVzdCBieSBsb2FkaW5nIGl0IGludG8gbWVtb3J5LCBhbmQgdGhhdCB5b3VyIHJlc2V0KCkKK2Z1bmN0aW9uIHdpbGwgYmUgY2FsbGVkIGV2ZXJ5IG5vdyBhbmQgdGhlbiBzbyB0aGF0IHlvdSBtYXkgd3JpdGUgdGhlCitjb2RlIG5lY2Vzc2FyeSB0byByZWZyZXNoIHlvdXIgcm9vbS4gIE5vdGUgdGhhdCBuZWl0aGVyIG9mIHRoZXNlCitmdW5jdGlvbnMgTVVTVCBiZSBpbiB5b3VyIG9iamVjdC4gIFRoZSBkcml2ZXIgY2hlY2tzIHRvIHNlZSBpZiB0aGUKK2Z1bmN0aW9uIGV4aXN0cyBpbiB5b3VyIG9iamVjdCBmaXJzdC4gIElmIGl0IGRvZXMgbm90LCB0aGVuIGl0IGRvZXMgbm90Citib3RoZXIuICBZb3UgYXJlIGFsc28gYWNxdWFpbnRlZCB3aXRoIHRoZSBkYXRhIHR5cGVzIHZvaWQsIGludCwgYW5kIHN0cmluZy4KKyAKKzcuMiBPYmplY3RzIGFzIGRhdGEgdHlwZXMKK0luIHRoaXMgY2hhcHRlciB5b3Ugd2lsbCBiZSBhY3F1YWludGVkIHdpdGggYSBtb3JlIGNvbXBsZXggZGF0YSB0eXBlLAorb2JqZWN0LiAgQW4gb2JqZWN0IHZhcmlhYmxlIHBvaW50cyB0byBhIHJlYWwgb2JqZWN0IGxvYWRlZCBpbnRvIHRoZQorZHJpdmVyJ3MgbWVtb3J5LiAgWW91IGRlY2xhcmUgaXQgaW4gdGhlIHNhbWUgbWFubmVyIGFzIG90aGVyIGRhdGEgdHlwZXM6CisgICAgb2JqZWN0IG9iOworSXQgZGlmZmVycyBpbiB0aGF0IHlvdSBjYW5ub3QgdXNlICssIC0sICs9LCAtPSwgKiwgb3IgLyAod2hhdCB3b3VsZCBpdAorbWVhbiB0byBkaXZpZGUgYSBtb25zdGVyIGJ5IGFub3RoZXIgbW9uc3Rlcj8pLiAgQW5kIHNpbmNlIGVmdW5zIGxpa2UKK3NheSgpIGFuZCB3cml0ZSgpIG9ubHkgd2FudCBzdHJpbmdzIG9yIGludHMsIHlvdSBjYW5ub3Qgd3JpdGUoKSBvcgorc2F5KCkgdGhlbSAoYWdhaW4sIHdoYXQgd291bGQgaXQgbWVhbiB0byBzYXkgYSBtb25zdGVyPykuCitCdXQgeW91IGNhbiB1c2UgdGhlbSB3aXRoIHNvbWUgb3RoZXIgb2YgdGhlIG1vc3QgaW1wb3J0YW50IGVmdW5zIG9uIGFueQorTFBNdWQuCisgCis4LjMgVGhlIGVmdW46IHRoaXNfb2JqZWN0KCkKK1RoaXMgaXMgYW4gZWZ1biB3aGljaCByZXR1cm5zIGFuIG9iamVjdCBpbiB3aGljaCB0aGUgZnVuY3Rpb24gYmVpbmcgZXhlY3V0ZWQKK2V4aXN0cy4gIEluIG90aGVyIHdvcmRzLCBpbiBhIGZpbGUsIHRoaXNfb2JqZWN0KCkgcmVmZXJzIHRvIHRoZSBvYmplY3QgeW91cgorZmlsZSBpcyBpbiB3aGV0aGVyIHRoZSBmaWxlIGdldHMgY2xvbmVkIGl0c2VsZiBvciBpbmhlcnRlZCBieSBhbm90aGVyIGZpbGUuCitJdCBpcyBvZnRlbiB1c2VmdWwgd2hlbiB5b3UgYXJlIHdyaXRpbmcgYSBmaWxlIHdoaWNoIGlzIGdldHRpbmcgaW5oZXJpdGVkCitieSBhbm90aGVyIGZpbGUuICBTYXkgeW91IGFyZSB3cml0aW5nIHlvdXIgb3duIGxpdmluZy5jIHdoaWNoIGdldHMKK2luaGVyaXRlZCBieSB1c2VyLmMgYW5kIG1vbnN0ZXIuYywgYnV0IG5ldmVyIHVzZWQgYWxvbmUuICBZb3Ugd2FudCB0byBsb2cKK3RoZSBmdW5jdGlvbiBzZXRfbGV2ZWwoKSBpdCBpcyBhIHBsYXllcidzIGxldmVsIGJlaW5nIHNldCAoYnV0IHlvdSBkbyBub3QKK2NhcmUgaWYgaXQgaXMgYSBtb25zdGVyLgorWW91IG1pZ2h0IGRvIHRoaXM6CisgCit2b2lkIHNldF9sZXZlbChpbnQgeCkgeworICAgIGlmKHRoaXNfb2JqZWN0KCktPmlzX3BsYXllcigpKSBsb2dfZmlsZSgibGV2ZWxzIiwgImZvb1xuIik7CisgICAgbGV2ZWwgPSB4OworfQorIAorU2luY2UgaXNfcGxheWVyKCkgaXMgbm90IGRlZmluZWQgaW4gbGl2aW5nLmMgb3IgYW55dGhpbmcgaXQgaW5oZXJpdHMsCitqdXN0IHNheWluZyBpZihpc19wbGF5ZXIoKSkgd2lsbCByZXN1bHQgaW4gYW4gZXJyb3Igc2luY2UgdGhlIGRyaXZlcgorZG9lcyBub3QgZmluZCB0aGF0IGZ1bmN0aW9uIGluIHlvdXIgZmlsZSBvciBhbnl0aGluZyBpdCBpbmhlcml0cy4KK3RoaXNfb2JqZWN0KCkgYWxsb3dzIHlvdSB0byBhY2Nlc3MgZnVuY3Rpb25zIHdoaWNoIG1heSBvciBtYXkgbm90IGJlCitwcmVzZW50IGluIGFueSBmaW5hbCBwcm9kdWN0cyBiZWNhdXNlIHlvdXIgZmlsZSBpcyBpbmhlcml0ZWQgYnkgb3RoZXJzCit3aXRob3V0IHJlc3VsdGluZyBpbiBhbiBlcnJvci4KKyAKKzguNCBDYWxsaW5nIGZ1bmN0aW9ucyBpbiBvdGhlciBvYmplY3RzCitUaGlzIG9mIGNvdXJzZSBpbnRyb2R1Y2VzIHVzIHRvIHRoZSBtb3N0IGltcG9ydGFudCBjaGFyYWN0ZXJpc3RpYyBvZgordGhlIG9iamVjdCBkYXRhIHR5cGUuICBJdCBhbGxvd3MgdXMgdG8gYWNjZXNzIGZ1bmN0aW9ucyBpbiBvdGhlciBvYmplY3RzLgorSW4gcHJldmlvdXMgZXhhbXBsZXMgeW91IGhhdmUgYmVlbiBhYmxlIHRvIGZpbmQgb3V0IGFib3V0IGEgcGxheWVyJ3MgbGV2ZWwsCityZWR1Y2UgdGhlIG1vbmV5IHRoZXkgaGF2ZSwgYW5kIGhvdyBtdWNoIGhwIHRoZXkgaGF2ZS4KK0NhbGxzIHRvIGZ1bmN0aW9ucyBpbiBvdGhlciBvYmplY3RzIG1heSBiZSBkb25lIGluIHR3byB3YXlzOgorIAorb2JqZWN0LT5mdW5jdGlvbihwYXJhbWV0ZXJzKQorY2FsbF9vdGhlcihvYmplY3QsICJmdW5jdGlvbiIsIHBhcmFtZXRlcnMpOworIAorZXhhbXBsZToKK3RoaXNfcGxheWVyKCktPmFkZF9tb25leSgic2lsdmVyIiwgLTUpOworY2FsbF9vdGhlcih0aGlzX3BsYXllcigpLCAiYWRkX21vbmV5IiwgInNpbHZlciIsIC01KTsKKyAKK0luIHNvbWUgKHZlcnkgbG9vc2Ugc2Vuc2UpLCB0aGUgZ2FtZSBpcyBqdXN0IGEgY2hhaW4gcmVhY3Rpb24gb2YgZnVuY3Rpb24KK2NhbGxzIGluaXRpYXRlZCBieSBwbGF5ZXIgY29tbWFuZHMuICBXaGVuIGEgcGxheWVyIGluaXRpYXRlcyBhIGNoYWluIG9mCitmdW5jdGlvbiBjYWxscywgdGhhdCBwbGF5ZXIgaXMgdGhlIG9iamVjdCB3aGljaCBpcyByZXR1cm5lZCBieQordGhlIGVmdW4gdGhpc19wbGF5ZXIoKS4gIFNvLCBzaW5jZSB0aGlzX3BsYXllcigpIGNhbiBjaGFuZ2UgZGVwZW5kaW5nCitvbiB3aG8gaW5pdGlhdGVkIHRoZSBzZXF1ZW5jZSBvZiBldmVudHMsIHlvdSB3YW50IHRvIGJlIHZlcnkgY2FyZWZ1bAorYXMgdG8gd2hlcmUgeW91IHBsYWNlIGNhbGxzIHRvIGZ1bmN0aW9ucyBpbiB0aGlzX3BsYXllcigpLiAgVGhlIG1vc3QgY29tbW9uCitwbGFjZSB5b3UgZG8gdGhpcyBpcyB0aHJvdWdoIHRoZSBsYXN0IGltcG9ydGFudCBsZnVuICh3ZSBoYXZlIG1lbnRpb25lZAorY3JlYXRlKCkgYW5kIHJlc2V0KCkpIGluaXQoKS4KKyAKKzguNSBUaGUgbGZ1bjogaW5pdCgpCitBbnkgdGltZSBhIGxpdmluZyB0aGluZyBlbmNvdW50ZXJzIGFuIG9iamVjdCAoZW50ZXJzIGEgbmV3IHJvb20sIG9yIGVudGVycwordGhlIHNhbWUgcm9vbSBhcyBhIGNlcnRhaW4gb3RoZXIgb2JqZWN0KSwgaW5pdCgpIGlzIGNhbGxlZCBpbiBhbGwgb2YKK3RoZSBvYmplY3RzIHRoZSBsaXZpbmcgYmVpbmcgbmV3bHkgZW5jb3VudGVycy4gIEl0IGlzIGF0IHRoaXMgcG9pbnQKK3RoYXQgeW91IGNhbiBhZGQgY29tbWFuZHMgdGhlIHBsYXllciBjYW4gaXNzdWUgaW4gb3JkZXIgdG8gYWN0LgorSGVyZSBpcyBhIHNhbXBsZSBpbml0KCkgZnVuY3Rpb24gaW4gYSBmbG93ZXIuCisgCit2b2lkIGluaXQoKSB7CisgICAgOjppbml0KCk7CisgICAgYWRkX2FjdGlvbigic21lbGxfZmxvd2VyIiwgInNtZWxsIik7Cit9CisgCitJdG8gc21lbGxfZmxvd2VyKCkuICBTbyB5b3Ugc2hvdWxkIGhhdmUgc21lbGxfZmxvd2VyKCkgbG9vayBsaWtlIHRoaXM6CisgCisxIGludCBzbWVsbF9mbG93ZXIoc3RyaW5nIHN0cik7ICAgICAgICAvKiBhY3Rpb24gZnVuY3Rpb25zIGFyZSB0eXBlIGludCAqLworMgorMyBpbnQgc21lbGxfZmxvd2VyKHN0cmluZyBzdHIpIHsKKzQgICAgaWYoc3RyICE9ICJmbG93ZXIiKSByZXR1cm4gMDsgICAgIC8qIGl0IGlzIG5vdCB0aGUgZmxvd2VyIGJlaW5nIHNtZWxsZWQgKi8KKzUgICAgd3JpdGUoIllvdSBzbmlmZiB0aGUgZmxvd2VyLlxuIik7Cis2ICAgIHNheSgoc3RyaW5nKXRoaXNfcGxheWVyKCktPnF1ZXJ5X2NhcF9uYW1lKCkrIiBzbWVsbHMgdGhlIGZsb3dlci5cbiIpOworNyAgICB0aGlzX3BsYXllcigpLT5hZGRfaHAocmFuZG9tKDUpKTsKKzggICAgcmV0dXJuIDE7Cis5IH0KKyAKK0luIGxpbmUgMSwgd2UgaGF2ZSBvdXIgZnVuY3Rpb24gZGVjbGFyZWQuCitJbiBsaW5lIDMsIHNtZWxsX2Zsb3dlcigpIGJlZ2lucy4gIHN0ciBiZWNvbWVzIHdoYXRldmVyIGNvbWVzIGFmdGVyIHRoZQorICAgIHBsYXllcnMgY29tbWFuZCAobm90IGluY2x1ZGluZyB0aGUgZmlyc3Qgd2hpdGUgc3BhY2UpLgorSW4gbGluZSA0LCBpdCBjaGVja3MgdG8gc2VlIGlmIHRoZSBwbGF5ZXIgaGFkIHR5cGVkICJzbWVsbCBmbG93ZXIiLiAgSWYKKyAgICB0aGUgcGxheWVyIGhhZCB0eXBlZCAic21lbGwgY2hlZXNlIiwgdGhlbiBzdHIgd291bGQgYmUgImNoZWVzZSIuICBJZgorICAgIGl0IGlzIG5vdCBpbiBmYWN0ICJmbG93ZXIiIHdoaWNoIGlzIGJlaW5nIHNtZWxsZWQsIHRoZW4gMCBpcyByZXR1cm5lZCwKKyAgICBsZXR0aW5nIHRoZSBkcml2ZXIga25vdyB0aGF0IHRoaXMgd2FzIG5vdCB0aGUgZnVuY3Rpb24gd2hpY2ggc2hvdWxkCisgICAgaGF2ZSBiZWVuIGNhbGxlZC4gIElmIGluIGZhY3QgdGhlIHBsYXllciBoYWQgYSBwaWVjZSBvZiBjaGVlc2UgYXMgd2VsbAorICAgIHdoaWNoIGhhZCBhIHNtZWxsIGNvbW1hbmQgdG8gaXQsIHRoZSBkcml2ZXIgd291bGQgdGhlbiBjYWxsIHRoZSBmdW5jdGlvbgorICAgIGZvciBzbWVsbGluZyBpbiB0aGF0IG9iamVjdC4gIFRoZSBkcml2ZXIgd2lsbCBrZWVwIGNhbGxpbmcgYWxsIGZ1bmN0aW9ucworICAgIHRpZWQgdG8gc21lbGwgY29tbWFuZHMgdW50aWwgb25lIG9mIHRoZW0gcmV0dXJucyAxLiAgSWYgdGhleSBhbGwgcmV0dXJuCisgICAgMCwgdGhlbiB0aGUgcGxheWVyIHNlZXMgIldoYXQ/IgorSW4gbGluZSA1LCB0aGUgZWZ1biB3cml0ZSgpIGlzIGNhbGxlZC4gIHdyaXRlKCkgcHJpbnRzIHRoZSBzdHJpbmcgd2hpY2gKKyAgICBpcyBwYXNzZWQgdG8gaXQgdG8gdGhpc19wbGF5ZXIoKS4gIFNvIHdob2V2ZXIgdHlwZWQgdGhlIGNvbW1hbmQgaGVyZQorICAgIHNlZXMgIllvdSBzbmlmZiB0aGUgZmxvd2VyLiIKK0luIGxpbmUgNiwgdGhlIGVmdW4gc2F5KCkgaXMgY2FsbGVkLiAgc2F5KCkgcHJpbnRzIHRoZSBzdHJpbmcgd2hpY2ggaXMKKyAgICBkb2luZyB0aGUgc25pZmZpbmcsIHdlIGhhdmUgdG8gY2FsbCB0aGUgcXVlcnlfY2FwX25hbWUoKSBmdW5jdGlvbgorICAgIGluIHRoaXNfcGxheWVyKCkuICBUaGF0IHdheSBpZiB0aGUgcGxheWVyIGlzIGludmlzLCBpdCB3aWxsIHNheQorICAgICJTb21lb25lIiAob3Igc29tZXRoaW5nIGxpa2UgdGhhdCksIGFuZCBpdCB3aWxsIGFsc28gYmUgcHJvcGVybHkKKyAgICBjYXBpdGFsaXplZC4KK0luIGxpbmUgNywgd2UgY2FsbCB0aGUgYWRkX2hwKCkgZnVuY3Rpb24gaW4gdGhlIHRoaXNfcGxheWVyKCkgb2JqZWN0LAorICAgIHNpbmNlIHdlIHdhbnQgdG8gZG8gYSBsaXR0bGUgaGVhbGluZyBmb3IgdGhlIHNuaWZmIChOb3RlOiBkbyBub3QKKyAgICBjb2RlIHRoaXMgb2JqZWN0IG9uIHlvdXIgbXVkLCB3aG9ldmVyIGJhbGFuY2VzIHlvdXIgbXVkIHdpbGwgc2hvb3QgeW91KS4KK0luIGxpbmUgOCwgd2UgcmV0dXJuIGNvbnRyb2wgb2YgdGhlIGdhbWUgdG8gdGhlIGRyaXZlciwgcmV0dXJuaW5nIDEgdG8KKyAgICBsZXQgaXQga25vdyB0aGF0IHRoaXMgd2FzIGluIGZhY3QgdGhlIHJpZ2h0IGZ1bmN0aW9uIHRvIGNhbGwuCisgCis4LjYgQWRkaW5nIG9iamVjdHMgdG8geW91ciByb29tcworQW5kIG5vdywgdXNpbmcgdGhlIGRhdGEgdHlwZSBvYmplY3QsIHlvdSBjYW4gYWRkIG1vbnN0ZXJzIHRvIHlvdXIgcm9vbXM6CisgCit2b2lkIGNyZWF0ZSgpIHsKKyAgICA6OmNyZWF0ZSgpOworICAgIHNldF9wcm9wZXJ0eSgibGlnaHQiLCAzKTsKKyAgICBzZXQoInNob3J0IiwgIktyYXNuYSBTcXVhcmUiKTsKKyAgICBzZXQoImxvbmciLCAiV2VsY29tZSB0byB0aGUgQ2VudHJhbCBTcXVhcmUgb2YgdGhlIHRvd24gb2YgUHJheGlzLlxuIik7CisgICAgc2V0X2V4aXRzKCAoeyAiZC9zdGFuZGFyZC9oYWxsIiB9KSwgKHsgImVhc3QiIH0pICk7Cit9CisgCit2b2lkIHJlc2V0KCkgeworICAgIG9iamVjdCBvYjsKKyAKKyAgICA6OnJlc2V0KCk7CisgICAgaWYocHJlc2VudCgiZ3VhcmQiKSkgcmV0dXJuOyAgICAgLyogRG8gbm90IHdhbnQgdG8gYWRkIGEgZ3VhcmQgaWYgKi8KKyAgICBvYiA9IG5ldygiL3N0ZC9tb25zdGVyIik7ICAgICAgICAvKiBvbmUgaXMgYWxyZWFkeSBoZXJlICAgICAgICAgICAqLworICAgIG9iLT5zZXRfbmFtZSgiZ3VhcmQiKTsKKyAgICBvYi0+c2V0KCJpZCIsICh7ICJndWFyZCIsICJ0b3duIGd1YXJkIiB9KSApOworICAgIG9iLT5zZXQoInNob3J0IiwgIlRvd24gZ3VhcmQiKTsKKyAgICBvYi0+c2V0KCJsb25nIiwgIkhlIGd1YXJkcyBQcmF4aXMgZnJvbSBub3RoaW5nbmVzcy5cbiIpOworICAgIG9iLT5zZXRfZ2VuZGVyKCJtYWxlIik7CisgICAgb2ItPnNldF9yYWNlKCJodW1hbiIpOworICAgIG9iLT5zZXRfbGV2ZWwoMTApOworICAgIG9iLT5zZXRfYWxpZ25tZW50KDIwMCk7CisgICAgb2ItPnNldF9odW1hbm9pZCgpOworICAgIG9iLT5zZXRfaHAoMTUwKTsKKyAgICBvYi0+c2V0X3dpZWxkaW5nX2xpbWJzKCAoeyAicmlnaHQgaGFuZCIsICJsZWZ0IGhhbmQiIH0pICk7CisgICAgb2ItPm1vdmUodGhpc19vYmplY3QoKSk7Cit9CisgCitOb3csIHRoaXMgd2lsbCBiZSB3aWxkbHkgZGlmZmVyZW50IG9uIG1vc3QgbXVkcy4gIFNvbWUsIGFzIG5vdGVkIGJlZm9yZSwKK2luIHRoYXQgb2JqZWN0IHNvIHlvdSBoYXZlIGEgdW5pcXVlbHkgY29uZmlndXJlZCBtb25zdGVyIG9iamVjdC4gIFRoZQorbGFzdCBhY3QgaW4gbmF0aXZlIG11ZHMgaXMgdG8gY2FsbCBtb3ZlKCkgaW4gdGhlIG1vbnN0ZXIgb2JqZWN0IHRvIG1vdmUKK2l0IHRvIHRoaXMgcm9vbSAodGhpc19vYmplY3QoKSkuICBJbiBjb21wYXQgbXVkcywgeW91IGNhbGwgdGhlIGVmdW4KK21vdmVfb2JqZWN0KCkgd2hpY2ggdGFrZXMgdHdvIHBhcmFtZXRlcnMsIHRoZSBvYmplY3QgdG8gYmUgbW92ZWQsIGFuZCB0aGUKK29iamVjdCBpbnRvIHdoaWNoIGl0IGlzIGJlaW5nIG1vdmVkLgorIAorOC43IENoYXB0ZXIgc3VtbWFyeQorQXQgdGhpcyBwb2ludCwgeW91IG5vdyBoYXZlIGVub3VnaCBrbm93bGVkZ2UgdG8gY29kZSBzb21lIHJlYWxseSBuaWNlCitzdHVmZi4gIE9mIGNvdXJzZSwgYXMgSSBoYXZlIGJlZW4gc3RyZXNzaW5nIGFsbCBhbG9uZywgeW91IHJlYWxseSBuZWVkCit0byByZWFkIHRoZSBkb2N1bWVudHMgb24gYnVpbGRpbmcgZm9yIHlvdXIgbXVkLCBhcyB0aGV5IGRldGFpbCB3aGljaAorZnVuY3Rpb25zIGV4aXN0IGluIHdoaWNoIHR5cGVzIG9mIG9iamVjdHMgZm9yIHlvdSB0byBjYWxsLiAgTm8gbWF0dGVyCit3aGF0IHlvdXIga25vd2xlZGdlIG9mIHRoZSBtdWRsaWIgaXMsIHlvdSBoYXZlIGVub3VnaCBrbm93LWhvdyB0bworZ2l2ZSBhIHBsYXllciBleHRyYSB0aGluZ3MgdG8gZG8gbGlrZSBzbmlmZmluZyBmbG93ZXJzIG9yIGdsdWUgb3Igd2hhdGV2ZXIuCitBdCB0aGlzIHBvaW50IHlvdSBzaG91bGQgZ2V0IGJ1c3kgY29kaW5nIHN0dWZmLiAgQnV0IHRoZSBtb21lbnQgdGhpbmdzCitldmVuIGxvb2sgdG8gYmVjb21lIHRlZGlvdXMsIHRoYXQgbWVhbnMgaXQgaXMgdGltZSBmb3IgeW91IHRvIG1vdmUgdG8KK3RoZSBuZXh0IGxldmVsIGFuZCBkbyBtb3JlLiAgUmlnaHQgbm93IGNvZGUgeW91cnNlbGYgYSBzbWFsbCBhcmVhLgorTWFrZSBleHRlbnNpdmUgdXNlIG9mIHRoZSBzcGVjaWFsIGZ1bmN0aW9ucyBjb2RlZCBpbiB5b3VyIG11ZCdzCityb29tLmMgKHNlYXJjaCB0aGUgZG9jcyBmb3Igb2JzY3VyZSBvbmVzIG5vIG9uZSBlbHNlIHNlZW1zIHRvIHVzZSkuCitBZGQgbG90cyBvJyBuZWF0IGFjdGlvbnMuICBDcmVhdGUgd2VhcG9ucyB3aGljaCBoYXZlIG1hZ2ljIHBvd2VycyB3aGljaAorZ3JhZHVhbGx5IGZhZGUgYXdheS4gIEFsbCBvZiB0aGlzIHlvdSBzaG91bGQgYmUgYWJsZSB0byBkbyBub3cuICBPbmNlCit0aGlzIGJlY29tZXMgcm91dGluZSBmb3IgeW91LCBpdCB3aWxsIGJlIHRpbWUgdG8gbW92ZSBvbiB0byBpbnRlcm1lZGlhdGUKK3N0dWZmLiAgTm90ZSB0aGF0IGZldyBwZW9wbGUgYWN0dWFsbHkgZ2V0IHRvIHRoZSBpbnRlcm1lZGlhdGUgc3R1ZmYuCitJZiB5b3UgaGF2ZSBwbGF5ZWQgYXQgYWxsLCB5b3Ugbm90aWNlIHRoZXJlIGFyZSBmZXcgYXJlYXMgb24gdGhlIG11ZAord2hpY2ggZG8gd2hhdCBJIGp1c3QgdG9sZCB5b3UgeW91IHNob3VsZCBiZSBhYmxlIHRvIGRvLiAgSXQgaXMgbm90CitiZWNhdXNlIGl0IGlzIGhhcmQsIGJ1dCBiZWNhdXNlIHRoZXJlIGlzIGEgbG90IG9mIGFycm9nYW5jZSBvdXQgdGhlcmUKK29uIHRoZSBwYXJ0IG9mIHBlb3BsZSB3aG8gaGF2ZSBnb3R0ZW4gYmV5b25kIHRoaXMgcG9pbnQsIGFuZCB2ZXJ5IGxpdHRsZQorY29tbXVuaWNhdGluZyBvZiB0aGF0IGtub3dsZWRnZS4gIFRoZSB0cmljayBpcyB0byBwdXNoIHlvdXJzZWxmIGFuZAordGhpbmsgb2Ygc29tZXRoaW5nIHlvdSB3YW50IHRvIGRvIHRoYXQgaXMgaW1wb3NzaWJsZS4gIElmIHlvdSBhc2sgc29tZW9uZQoraW4gdGhlIGtub3cgaG93IHRvIGRvIFgsIGFuZCB0aGV5IHNheSB0aGF0IGlzIGltcG9zc2libGUsIGZpbmQgb3V0Cit5b3VzZWxmIGhvdyB0byBjb2RlIGl0IGJ5IGV4cGVyaW1lbnRpbmcuCisKK0dlb3JnZSBSZWVzZQorRGVzY2FydGVzIG9mIEJvcmcKKzEyIGp1bHkgMTk5MworYm9yZ0BoZWJyb24uY29ubmVjdGVkLmNvbQorRGVzY2FydGVzQE5pZ2h0bWFyZSAoaW50ZXJtdWQpCitEZXNjYXJ0ZXNASWdvciAobm90IGludGVybXVkKQpkaWZmIC0tZ2l0IGEvZG9jL0tVUlMvTFBDLUtVUlMyL0NvbnRlbnRzIGIvZG9jL0tVUlMvTFBDLUtVUlMyL0NvbnRlbnRzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmZmNThhOGEKLS0tIC9kZXYvbnVsbAorKysgYi9kb2MvS1VSUy9MUEMtS1VSUzIvQ29udGVudHMKQEAgLTAsMCArMSwxNSBAQAorSW50ZXJtZWRpYXRlIExQQworRGVzY2FydGVzIG9mIEJvcmcgCitOb3ZlbWJlciAxOTkzCisKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ29udGVudHMKKworMTogSW50cm9kdWN0aW9uCisyOiBUaGUgTFBNdWQgRHJpdmVyCiszOiBDb21wbGV4IERhdGEgVHlwZXMKKzQ6IFRoZSBMUEMgUHJlLUNvbXBpbGVyCis1OiBBZHZhbmNlZCBTdHJpbmcgSGFuZGxpbmcKKzY6IEludGVybWVkaWF0ZSBJbmhlcml0YW5jZQorNzogRGVidWdnaW5nCisKK0NvcHlyaWdodCAoYykgR2VvcmdlIFJlZXNlIDE5OTMKZGlmZiAtLWdpdCBhL2RvYy9LVVJTL0xQQy1LVVJTMi9Db3B5cmlnaHQgYi9kb2MvS1VSUy9MUEMtS1VSUzIvQ29weXJpZ2h0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjI5YTI2MjAKLS0tIC9kZXYvbnVsbAorKysgYi9kb2MvS1VSUy9MUEMtS1VSUzIvQ29weXJpZ2h0CkBAIC0wLDAgKzEsNjIgQEAKKyAgICAgICAgICAgICAgICAgICAgICBJbnRlcm1lZGlhdGUgTFBDIGZpcnN0IGVkaXRpb24KKworQ29weXJpZ2h0IChjKSAxOTkzIEdlb3JnZSBSZWVzZQorQWxsIHJpZ2h0cyB0byB0aGlzIHRleHQgYXJlIHJldGFpbmVkIGJ5IHRoZSBhdXRob3IuCisKKworUGVybWlzc2lvbiBpcyBncmFudGVkIHRvIGRpc3RydWJ1dGUgYW5kIGRpc3BsYXkgdGhlIGNvbnRlbnRzIG9mIHRoaXMKK2RvY3VtZW50IGluIGZ1bGwgc28gbG9uZyBhcyB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlIG1ldDoKKzEpIE5vIHBheW1lbnQgbWF5IGJlIHJlY2VpdmVkIGZvciB0aGUgcmVkaXN0cmlidXRpb24gb3IgZGlzcGxheSBvZiB0aGlzIHRleHQsCitleGNlcHQgdG8gY292ZXIgdGhlIGNvc3RzIGZvciBkaXN0cmlidXRpb24gbWVkaWEgYW5kIGFuZCBzaGlwcGluZyBhbmQvb3IKK3RyYW5zbWlzc2lvbiBjaGFyZ2VzLgorMikgVGhlIHRleHRib29rIG11c3QgYmUgZGlzdHJpYnV0ZWQgb3IgZGlzcGxheWVkIGluIGl0cyBlbnRpcmV0eSBpbiBpdHMgb3JpZ2luYWwKK2Zvcm0uICBDaGFuZ2VzIG1heSBvbmx5IGJlIG1hZGUgdG8gcHJpdmF0ZSwgaW5kaXZpZHVhbCBjb3BpZXMsIGV4Y2VwdCBhcworb3V0bGluZWQgYmVsb3cuCisKK0FjY2VwdGFibGUgY2hhbmdlcyBhcmUgZGVmaW5lZCBhcyB0aGUgZm9sbG93aW5nOgorMSkgRm9ybWF0IGNoYW5nZXMsIHN1Y2ggYXMgY2hhbmdpbmcgZnJvbSBXb3JkUGVyZmVjdCB0byBXb3JkIAorMikgTWVkaXVtIGNoYW5nZXMsIHN1Y2ggYXMgZnJvbSBlbGVjdHJvbmljIGNvcHkgdG8gcGFwZXIKKzMpIENvbnRlbnQgY2hhbmdlcyBhcmUgb25seSBhY2NlcHRhYmxlIHVuZGVyIHRoZSBmb2xsb3dpbmcgY2lyY3Vtc3RhbmNlczoKKwlhKSBJbiBlbGVjdHJvbmljIG1lZGlhOiBub25lIG9mIHRoZSBvcmlnaW5hbCB0ZXh0IG1heSBiZSBvbW1pdHRlZC4gCisgICAgICAgIFlvdSBtYXkgYWRkIGNvbW1lbnRzCisJYXMgeW91IGZlZWwgbmVjZXNzYXJ5LCBzbyBsb25nIGFzIGNvbW1lbnRzIGFyZSBlbmNsb3NlZCBpbiA8KiAqPgorICAgICAgICBhbmQgYXJlIGFjY29tcGFuaWVkIGJ5CisJdGhlIGdhbWUgbmFtZSBvciByZWFsIG5hbWUgb2YgdGhlIGF1dGhvciBvZiB0aGUgY29tbWVudHMKKwliKSBJbiBoYXJkIGNvcHk6IG5vbmUgb2YgdGhlIG9yaWdpbmFsIHRleHQgbWF5IGJlIG9taXR0ZWQsIGJ1dCBpdCBtYXkKKyAgICAgICAgYmUgc3RydWNrIG91dCBzbyBsb25nCisJYXMgdGhlIGNvbnRlbnQgb2YgdGhlIG9yaWdpbmFsIHRleHQgaXMgdmlzaWJsZS4gIENvbW1lbnRzIG1heSBiZSBtYWRlCisgICAgICAgIGluIGFueSBmb3JtIHNvIGxvbmcgCisJYXMgdGhleSBhcmUgbWFkZSBpbiBoYW5kd3JpdGluZyBhbmQgdGhleSBhcmUgc2lnbmVkIGJ5IHRoZSBhdXRob3IuIAorICAgICAgICBDb21tZW50cyB3aGljaCBhcmUgdHlwZWQgb3IgcHJpbnRlZCBtdXN0IGJlIG1hZGUgaW4gYWNjb3JkYW5jZSB3aXRoIHRoZQorICAgICAgICBmb3JtYXQgZm9yIGVsZWN0cm9uaWMgbWVkaWEuCisKK1ByYWN0aWNhbGx5IHNwZWFraW5nLCB0aGlzIGlzIHdoYXQgSSBtZWFuOgorRmlyc3QsIEkgd3JvdGUgdGhpcyBtb3N0bHkgZm9yIG11ZCBhZG1pbnMgdG8gcHV0IG9udG8gdGhlaXIgbXVkcyBmb3IgbGVhcm5pbmcKK2NvZGVycyB0byByZWFkIGFzIHRoZXkgYXJlIGxlYXJuaW5nIHRvIGJ1aWxkIHJlYWxtcy4gIEkgZGlkIG5vdCBkbyB0aGlzIGZvcgorc29tZW9uZSBlbHNlIHRvIG1ha2UgYSBidWNrLiAgU28gaWYgeW91IGNoYXJnZSBtb25leSBmb3IgcmVkaXN0cmlidXRpbmcgaXQKK29yIGFsbG93aW5nIHNvbWVvbmUgZWxzZSB0byBzZWUgaXQsIHlvdSBhcmUgaW4gdmlvbGF0aW9uIG9mIHRoaXMgY29weXJpZ2h0LiAKK1VubGVzcyB5b3UgYXJlIHNpbXBseSBjaGFyZ2luZyBmb3Igd2hhdCBpdCBjb3N0IHlvdSB0byBwcmludCB1cCBhIGNvcHkgb3IKK3doYXQgdGhlIGRpc2tldHRlcyBhbmQgcG9zdGFnZSBjb3N0IHRvIG1haWwgaXQuCitTZWNvbmQsIEkgd3JvdGUgdGhpcyB0ZXh0Ym9vaywgYW5kIEkgc2hvdWxkIHJlY2VpdmUgY3JlZGl0L2JsYW1lIGZvciB3aGF0IEkKK3NheSwgYW5kIG90aGVycyBzaG91bGQgcmVjZWl2ZSBjcmVkaXQvYmxhbWUgZm9yIHdoYXQgdGhleSBzYXkuICBGb3IgZXhhbXBsZSwKK2lmIEkgc2FpZCBzb21ldGhpbmcgY29tcGxldGVseSB3cm9uZywgYW5kIHlvdSBzaW1wbHkgY29ycmVjdGVkIGl0LCBJIHdvdWxkCitiZSBnZXR0aW5nIGNyZWRpdCBmb3Igc29tZXRoaW5nIEkgZGlkIG5vdCBkby4gIFlldCwgaWYgeW91IGNvbW1lbnQgYWNjb3JkaW5nCit0byB0aGUgb3V0bGluZSBhYm92ZSwgeW91IHdpbGwgYmUgcHJvcGVybHkgY3JlZGl0ZWQgZm9yIHlvdXIgY29tbWVudHMuIAorTW9yZSBpbXBvcnRhbnQgdG8gbWUsIGhvd2V2ZXIsIGlzIHRoZSBwcmFjdGljYWwgZWZmZWN0IG9mIGhhdmluZyBodW5kcmVkcyBvZgorY29waWVzIG9mIHRoaXMgdGV4dGJvb2sgZXZlcnl3aGVyZS4gIElmIHlvdSBjaGFuZ2Ugc29tZXRoaW5nIEkgaGFkIHJpZ2h0Cit3aXRob3V0IG5vdGluZyBpdCBhcyBhIGNvbW1lbnQsIEkgd2lsbCBiZSBibGFtZWQgZm9yIHNwcmVhZGluZworbWlzaW5mb3JtYXRpb24uICBUaGlzIHByb2JsZW0gaXMgb25seSBjb21wdW5kZWQgaWYgdGhlIHRleHQgaXMgcmVkaXN0cmlidXRlZC4gCitTbyBJIHByZWZlciBteSB3b3JkcyB0byByZW1haW4gbXkgb3duLiAgQnV0LCB3aGVuIEkgbWFrZSBtaXN0YWtlcywgb3IgaWYKK3NvbWV0aGluZyBJIHNheSBkb2VzIG5vdCBmaXQgeW91ciBkcml2ZXIvbXVkbGliLCBwbGVhc2UgY29tbWVudCBpdCBzbyBwZW9wbGUKK3dpbGwga25vdy4gIEluIGFkZGl0aW9uLCBoYXZpbmcgdGhlIGNvbW1lbnRzIHNpZGUtYnktc2lkZSBhbGxvd3MgcGVvcGxlIHRvCitzZWUgb3RoZXIgaWRlYXMsIGxpa2UgaG93IGFub3RoZXIgZHJpdmVyIG1pZ2h0IGhhbmRsZSBzb21ldGhpbmcuCisKKworSSB3YW50IHRvIHBsZWFzZSBub3RlIGFnYWluLCB5b3UgbWF5IGRpc3BsYXkgdGhpcyBvbiB5b3VyIG11ZCAobGlrZSBpbiAvZG9jKS4gCitZb3UgZG8gbm90IG5lZWQgdG8KK21haWwgbWUgZm9yIHBlcm1pc3Npb24uICBJIHdvdWxkIG5vdCBtaW5kIGVtYWlsLCBzaW5jZSBpdCBpcyBuaWNlIHRvIGtub3cKK3Blb3BsZSBhcmUgdXNpbmcgaXQsIGJ1dCB0aGF0IGlzIG5vdCByZXF1aXJlZC4gIEFsc28sIGlmIHlvdSByZWFsbHkgZmVlbCBJIGhhdmUKK2RvbmUgc3VjaCBhIHdvbmRlcmZ1bCBqb2IgdGhhdCB5b3Ugc2hvdWxkIHBheSBtb25leSB0byB1c2UgdGhpcywgdGhlbiBnaXZlCiskNSB0byB5b3VyIGxvY2FsIEFTUENBIChvciBpbnRlcm5hdGlvbmFsIGVxdWl2YWxlbnQpLgorCitTZWUgdGhlIGZpbGUgdGl0bGVkIENvbnRlbnRzIGZvciBhIGZ1bGwgbGlzdCBvZiB0ZXh0Ym9vayBjaGFwdGVycy4KZGlmZiAtLWdpdCBhL2RvYy9LVVJTL0xQQy1LVVJTMi9jaGFwdGVyMSBiL2RvYy9LVVJTL0xQQy1LVVJTMi9jaGFwdGVyMQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi42YzQ1OWNkCi0tLSAvZGV2L251bGwKKysrIGIvZG9jL0tVUlMvTFBDLUtVUlMyL2NoYXB0ZXIxCkBAIC0wLDAgKzEsMTQzIEBACitJbnRlcm1lZGlhdGUgTFBDCitEZXNjYXJ0ZXMgb2YgQm9yZworTm92ZXJtYmVyIDE5OTMKKworICAgICAgICAgICAgICAgICAgICAgICAgIENoYXB0ZXIgMTogSW50cm9kdWN0aW9uCisKKzEuMSBMUEMgQmFzaWNzCitBbnlvbmUgcmVhZGluZyB0aGlzIHRleHRib29rIHNob3VsZCBlaXRoZXIgaGF2ZSByZWFkIHRoZSB0ZXh0Ym9vayBMUEMKK0Jhc2ljcyBvciBiZSBmYW1pbGlhciBlbm91Z2ggd2l0aCBtdWQgcmVhbG0gY29kaW5nIHN1Y2ggdGhhdCBub3Qgb25seSBhcmUKK3RoZXkgY2FwYWJsZSBvZiBidWlsZGluZyByb29tcyBhbmQgb3RoZXIgc3VjaCBvYmplY3RzIGludm9sdmVkIGluIGFyZWEKK2NvZGluZywgYnV0IHRoZXkgYWxzbyBoYXZlIGEgZ29vZCBpZGVhIG9mIHdoYXQgaXMgZ29pbmcgb24gd2hlbiB0aGUgY29kZQordGhleSB3cml0ZSBpcyBleGVjdXRpbmcuICBJZiB5b3UgZG8gbm90IGZlZWwgeW91IGFyZSBhdCB0aGlzIHBvaW50LCB0aGVuIGdvCitiYWNrIGFuZCByZWFkIExQQyBCYXNpY3MgYmVmb3JlIGNvbnRpbnVpbmcuICBJZiB5b3UgZG8gc28sIHlvdSB3aWxsIGZpbmQKK3RoYXQgd2hhdCB5b3UgcmVhZCBoZXJlIHdpbGwgYmUgbXVjaCBtb3JlIG1lYW5pbmdmdWwgdG8geW91LgorCisxLjIgR29hbHMgb2YgVGhpcyBUZXh0Ym9vaworVGhlIGludHJvZHVjdG9yeSB0ZXh0Ym9vayB3YXMgbWVhbnQgdG8gdGFrZSBwZW9wbGUgbmV3IHRvIExQQyBmcm9tCitrbm93aW5nIG5vdGhpbmcgdG8gYmVpbmcgYWJsZSB0byBjb2RlIGEgbmljZSByZWFsbSBvbiBhbnkgTFBNdWQuICBUaGVyZQoraXMgbmF0dXJhbGx5IG11Y2ggbW9yZSB0byBMUEMgYW5kIHRvIExQTXVkIGJ1aWxkaW5nLCBob3dldmVyLCB0aGFuCitidWlsZGluZyByb29tcywgYXJtb3VycywgbW9uc3RlcnMsIGFuZCB3ZWFwb25zLiAgQXMgeW91IGdldCBpbnRvIG1vcmUKK2NvbXBsaWNhdGVkIGNvbmNlcHRzIGxpa2UgZ3VpbGRzLCBvciBkZXNpcmUgdG8gZG8gbW9yZSBpbnZvbHZlZCB0aGluZ3Mgd2l0aAoreW91ciByZWFsbSwgeW91IHdpbGwgZmluZCB0aGUgY29uY2VwdHMgZGV0YWlsZWQgaW4gTFBDIEJhc2ljcyB0byBiZSBsYWNraW5nCitpbiBzdXBwb3J0IGZvciB0aGVzZSBwcm9qZWN0cy4gIEludGVybWVkaWF0ZSBMUEMgaXMgZGVzaWduZWQgdG8gdGFrZSB5b3UKK2JleW9uZCB0aGUgc2ltcGxlIHJlYWxtIGJ1aWxkaW5nIHByb2Nlc3MgaW50byBhIGZ1bGwga25vd2xlZGdlIG9mIExQQyBmb3IKK2Z1bmN0aW9uaW5nIGFzIGEgcmVhbG0gYnVpbGRlciBvbiBhbiBMUE11ZC4gIFRoZSB0YXNrIG9mIG11ZGxpYiBidWlsZGluZworaXRzZWxmIGlzIGxlZnQgdG8gYSBsYXRlciB0ZXh0LiAgQWZ0ZXIgcmVhZGluZyB0aGlzIHRleHRib29rIGFuZCB3b3JraW5nIHRocm91Z2gKK2l0IGJ5IGV4cGVyaW1lbnRpbmcgd2l0aCBhY3R1YWwgY29kZSwgdGhlIHJlYWRlciBzaG91bGQgYmUgYWJsZSB0byBjb2RlIGdhbWUKK29iamVjdHMgdG8gZml0IGFueSBkZXNpZ24gb3IgaWRlYSB0aGV5IGhhdmUgaW4gbWluZCwgc28gbG9uZyBhcyBJIGhhdmUgYmVlbgorc3VjY2Vzc2Z1bC4KKworMS4zIEFuIE92ZXJ2aWV3CitXaGF0IG1vcmUgaXMgdGhlcmU/ICBXZWxsIG1hbnkgb2YgeW91IGFyZSBxdWl0ZSBhd2FyZSB0aGF0IExQQyBzdXBwb3J0cworbWFwcGluZ3MgYW5kIGFycmF5cyBhbmQgaGF2ZSBiZWVuIGFza2luZyBtZSB3aHkgdGhvc2Ugd2VyZSBub3QgZGV0YWlsZWQKK2luIExQQyBCYXNpY3MuICBJIGZlbHQgdGhhdCB0aG9zZSBjb25jZXB0cyB3ZXJlIGJleW9uZCB0aGUgc2NvcGUgb2Ygd2hhdCBJCit3YXMgdHJ5aW5nIHRvIGRvIHdpdGggdGhhdCB0ZXh0Ym9vayBhbmQgd2VyZSBtb3JlIGZpdHRpbmcgdG8gdGhpcyB0ZXh0Ym9vay4gCitCdXQgbmV3IHRvb2xzIGFyZSBhbGwgZmluZSBhbmQgZGFuZHksIHdoYXQgbWF0dGVycywgaG93ZXZlciwgaXMgd2hhdCB5b3UKK2NhbiBkbyB3aXRoIHRob3NlIHRvb2xzLiAgVGhlIGdvYWwgb2YgTFBDIEJhc2ljcyB3YXMgdG8gZ2V0IHlvdSB0byBidWlsZGluZworcXVhbGl0eSBMUE11ZCByZWFsbXMuICBNYXBwaW5ncyBhbmQgYXJyYXlzIGFyZSBub3QgbmVjZXNzYXJ5IHRvIGRvIHRoYXQuIAorVGhlIGdvYWwgb2YgdGhpcyBib29rIGlzIHRvIGFsbG93IHlvdSB0byBjb2RlIGFueSBpZGVhIHlvdSBtaWdodCB3YW50IHRvCitjb2RlIGluIHlvdXIgYXJlYS4gIFRoYXQgYWJpbGl0eSByZXF1aXJlcyB0aGUga25vd2xlZGdlIG9mIG1hcHBpbmdzIGFuZAorYXJyYXlzLgorCitBbnkgaWRlYSB5b3Ugd2FudCB0byBjb2RlIGluIGFuIExQTXVkIGlzIHBvc3NpYmxlLiAgTFBDIGlzIGEgbGFuZ3VhZ2UKK3doaWNoIGlzIGFtYXppbmdseSB3ZWxsIHN1aXRlZCB0byB0aGlzIHRhc2suICBBbGwgdGhhdCBwcmV2ZW50cyB5b3UgZnJvbQorY29kaW5nIHlvdXIgaWRlYXMgaXMgeW91ciBrbm93bGVkZ2Ugb2YgTFBDIG9yIGFuIGluYWRlcXVhdGUgbXVkbGliIG9yCit5b3VyIG11ZNVzIHRoZW1lIG9yIGFkbWluaXN0cmF0aXZlIHBvbGljaWVzLiAgVGhpcyB0ZXh0Ym9vayBjYW5ub3QgbWFrZQordGhlIG11ZGxpYiB5b3UgYXJlIHdvcmtpbmcgd2l0aCBhbnkgYmV0dGVyLCBhbmQgaXQgY2Fubm90IGNoYW5nZSB0aGUgbXVkCit0aGVtZSBvciB0aGUgbXVk1XMgYWRtaW5pc3RyYXRpdmUgcG9saWNpZXMuICBOZXZlciBvbmNlIHRoaW5rIHRoYXQgTFBDIGlzCitpbmNhcGFibGUgb2YgZG9pbmcgd2hhdCB5b3Ugd2FudCB0byBkby4gIElmIHlvdXIgaWRlYSBpcyBwcmV2ZW50ZWQgYnkKK2FkbWluaXN0cmF0aXZlIHBvbGljaWVzIG9yIHRoZW1lcywgdGhlbiBpdCBpcyBzaW1wbHkgbm90IGFuIGlkZWEgZm9yIHlvdXIKK2N1cnJlbnQgbXVkLiAgSWYgdGhlIG11ZGxpYiBpcyBpbmFkZXF1YXRlLCB0YWxrIHRvIHRoZSBwZW9wbGUgaW4gY2hhcmdlIG9mCit5b3VyIG11ZGxpYiBhYm91dCB3aGF0IGNhbiBiZSBkb25lIGF0IHRoZSBtdWRsaWIgbGV2ZWwgdG8gZmFjaWxpdGF0ZSBpdC4gIFlvdQord291bGQgYmUgc3VycHJpc2VkIGJ5IHdoYXQgaXMgYWN0dWFsbHkgaW4gdGhlIG11ZGxpYiB5b3UgZGlkIG5vdCBrbm93CithYm91dC4gIE1vcmUgaW1wb3J0YW50LCBhZnRlciByZWFkaW5nIHRoaXMgdGV4dGJvb2ssIHlvdSBzaG91bGQgYmUgYWJsZSB0bworcmVhZCBhbGwgb2YgdGhlIG11ZGxpYiBjb2RlIGluIHlvdXIgbXVk1XMgbXVkbGliIGFuZCB1bmRlcnN0YW5kIHdoYXQgaXMKK2dvaW5nIG9uIGF0IGVhY2ggbGluZSBpbiB0aGUgbXVkbGliIGNvZGUuICBZb3UgbWF5IG5vdCBhcyB5ZXQgYmUgYWJsZSB0bworcmVwcm9kdWNlIHRoYXQgY29kZSBvbiB5b3VyIG93biwgYnV0IGF0IGxlYXN0IHlvdSBjYW4gdW5kZXJzdGFuZCB3aGF0IGlzCitnb2luZyBvbiBhdCB0aGUgbXVkbGliIGxldmVsLgorCitUaGlzIHRleHRib29rIHN0YXJ0cyBvdXQgd2l0aCBhIGRpc2N1c3Npb24gYWJvdXQgd2hhdCB0aGUgTFBNdWQgZHJpdmVyIGlzCitkb2luZy4gIE9uZSBuaWNlIHRoaW5nIGFib3V0IHRoaXMgdGV4dGJvb2ssIGluIGdlbmVyYWwgaXQgaXMgY29tcGxldGVseSBkcml2ZXIKK2FuZCBtdWRsaWIgaW5kZXBlbmRlbnQgKGV4Y2VwdGluZyBmb3IgdGhlIER3b3JraW4gR2FtZSBEcml2ZXIpLiAgVGhlCitjaGFwdGVyIG9uIHRoZSBnYW1lIGRyaXZlciBkb2VzIG5vdCBnZXQgaW50byBhY3R1YWwgaW1wbGVtZW50YXRpb24sIGJ1dAoraW5zdGVhZCBkZWFscyB3aXRoIHdoYXQgYWxsIGdhbWUgZHJpdmVycyBiYXNpY2FsbHkgZG8gaW4gb3JkZXIgdG8gcnVuIHRoZQorbXVkLgorCitOZXh0IEkgZGlzY3VzcyB0aG9zZSBtYWdpYyB0b3BpY3MgZXZlcnlvbmUgd2FudHMgdG8ga25vdyBtb3JlIGFib3V0LAorYXJyYXlzIGFuZCBtYXBwaW5ncy4gIE1hcHBpbmdzIG1heSBiZSBzaW11bHRhbmVvdXNseSB0aGUgZWFzaWVzdCBhbmQKK21vc3QgZGlmZmljdWx0IGRhdGEgdHlwZSB0byB1bmRlcnN0YW5kLiAgU2luY2UgdGhleSBhcmUgc29ydCBvZiBjb21wbGV4IGFycmF5cworaW4gYSBsb29zZSBzZW5zZSwgeW91IHJlYWxseSBuZWVkIHRvIHVuZGVyc3RhbmQgYXJyYXlzIGJlZm9yZSBkaXNjdXNzaW5nCit0aGVtLiAgQWxsIHRoZSBzYW1lLCBvbmNlIHlvdSB1bmRlcnN0YW5kIHRoZW0sIHRoZXkgYXJlIG11Y2ggZWFzaWVyIHRoYW4KK2FycmF5cyB0byB1c2UgaW4gcmVhbCBzaXR1YXRpb25zLiAgQXQgYW55IHJhdGUsIHNwZW5kIG1vc3Qgb2YgeW91ciB0aW1lCit3b3JraW5nIHdpdGggdGhhdCBjaGFwdGVyLCBiZWNhdXNlIGl0IGlzIHByb2JhYmx5IHRoZSBtb3N0IGRpZmZpY3VsdCwgeWV0IG1vc3QKK3VzZWZ1bCBjaGFwdGVyIGluIHRoZSBib29rLgorCitBZnRlciB0aGF0IGZvbGxvd3MgYSBicmllZiBjaGFwdGVyIG9uIHRoZSBMUEMgcHJlLWNvbXBpbGVyLCBhIHRvb2wgeW91IGNhbgordXNlIGZvciBzb3J0aW5nIG91dCBob3cgeW91ciBjb2RlIHdpbGwgbG9vayBiZWZvcmUgaXQgZ2V0cyBzZW50IHRvIHRoZQorY29tcGlsZXIuICBEZXNwaXRlIG15IGhvcnJpZCBpbnRybyB0byBpdCBoZXJlLCB0aGlzIGNoYXB0ZXIgaXMgcGVyaGFwcyB0aGUKK2Vhc2llc3QgY2hhcHRlciBpbiB0aGUgdGV4dGJvb2suICBJIHB1dCBpdCBhZnRlciB0aGUgbWFwcGluZ3MgYW5kIGFycmF5cworY2hhcHRlciBmb3IgZXhhY3RseSB0aGF0IHJlYXNvbi4KKworU3RyaW5ncyBhcmUgcmUtaW50cm9kdWNlZCBuZXh0LCBnb2luZyBpbnRvIG1vcmUgZGV0YWlsIHdpdGggaG93IHlvdSBjYW4gZG8KK3N1Y2ggdGhpbmdzIGFzIGFkdmFuY2VkIGNvbW1hbmQgaGFuZGxpbmcgYnkgYnJlYWtpbmcgdXAgc3RyaW5ncy4gIE9uY2UKK3lvdSB1bmRlcnN0YW5kIGFycmF5cyBmYWlybHkgd2VsbCwgdGhpcyBjaGFwdGVyIHNob3VsZCBiZSByZWFsbHkgc2ltcGxlLgorCitUaGUgbmV4dCBjaGFwdGVyIGlzIHRoZSBzZWNvbmQgbW9zdCBpbXBvcnRhbnQgaW4gdGhlIGJvb2suICBJdCBtYXkgYmUgdGhlCittb3N0IGltcG9ydGFudCBpZiB5b3UgZXZlciBpbnRlbmQgdG8gZ28gYmV5b25kIHRoZSBpbnRlcm1lZGlhdGUgc3RhZ2UgYW5kCitkaXZlIGludG8gbXVkbGliIGNvZGluZy4gIFRoYXQgY2hhcHRlciBpbnZvbHZlcyB0aGUgY29tcGxleCBpZGVhcyBiZWhpbmQKK0xQQyBpbmhlcml0YW5jZS4gIFNpbmNlIHRoZSBnb2FsIG9mIHRoaXMgdGV4dGJvb2sgaXMgbm90IHRvIHRlYWNoIG11ZGxpYgorcHJvZ3JhbW1pbmcsIHRoZSBjaGFwdGVyIGlzIG5vdCBhIGRldGFpbGVkIGRpc2N1c3Npb24gb24gb2JqZWN0IG9yaWVudGVkCitwcm9ncmFtbWluZy4gIFVuZGVyc3RhbmRpbmcgdGhpcyBjaGFwdGVyLCBob3dldmVyLCB3aWxsIGdpdmUgeW91IHNvbWUKK2dvb2QgaW5zaWdodHMgaW50byB3aGF0IGlzIGludm9sdmVkIHdpdGggb2JqZWN0IG9yaWVudGVkIHByb2dyYW1taW5nLCBhcword2VsbCBhcyBhbGxvdyB5b3UgdG8gYnVpbGQgbW9yZSBjb21wbGV4IG9iamVjdHMgYnkgb3ZlcnJpZGluZyBmdW5jdGlvbnMKK2FuZCBkZWZpbmluZyB5b3VyIG93biBiYXNlIGNsYXNzZXMuCisKK0ZpbmFsbHksIHRoZSB0ZXh0Ym9vayBlbmRzIHdpdGggYSBzaW1wbGUgZGlzY3Vzc2lvbiBvZiBjb2RlIGRlYnVnZ2luZy4gCitUaGlzIGlzIG5vdCBhbiBlc3NlbnRpYWwgY2hhcHRlciwgYnV0IGluc3RlYWQgaXQgaXMgbWVhbnQgYXMgbW9yZSBvZiBhbgorYXV4aWxpYXJ5IHN1cHBsZW1lbnQgdG8gd2hhdCB0aGUga25vd2xlZGdlIHlvdSBoYXZlIGFjY3VtdWxhdGVkIHNvIGZhci4KKworMS40IE5vdCBBcHBlYXJpbmcgaW4gVGhpcyBUZXh0Ym9vaworUGVyaGFwcyB3aGF0IG1pZ2h0IGFwcGVhciB0byBzb21lIGFzIHRoZSBtb3N0IGdsYXJpbmcgb21pc3Npb24gb2YgdGhpcwordGV4dGJvb2sgaXMgbGFyZ2VseSBhIHBvbGl0aWNhbCBvbWlzc2lvbiwgc2hhZG93cy4gIE5ldmVyIGhhdmUgSSBldmVyCitlbmNvdW50ZXJlZCBhbiBleGFtcGxlIG9mIHdoZXJlIGEgc2hhZG93IHdhcyBlaXRoZXIgdGhlIGJlc3Qgb3IgbW9zdAorZWZmZWNpZW50IG1hbm5lciBvZiBkb2luZyBhbnl0aGluZy4gIEl0IGRvZXMgbm90IGZvbGxvdyBmcm9tIHRoYXQsIGhvd2V2ZXIsCit0aGF0IHRoZXJlIGFyZSBubyB1c2VzIGZvciBzaGFkb3dzLiAgTXkgcmVhc29uaW5nIGZvciBvbWl0dGluZyBzaGFkb3dzCitmcm9tIHRoaXMgdGV4dGJvb2sgaXMgdGhhdCB0aGUgbGVhcm5lciBpcyBiZXN0IHNlcnZlZCBieSBsZWFybmluZyB0aGUgY29uY2VwdHMKK2luIHRoaXMgdGV4dGJvb2sgZmlyc3QgYW5kIGhhdmluZyBzcGVudCB0aW1lIHdpdGggdGhlbSBiZWZvcmUgZGVhbGluZyB3aXRoCit0aGUgc3ViamVjdCBvZiBzaGFkb3dzLiAgSW4gdGhhdCB3YXksIEkgZmVlbCB0aGUgcGVyc29uIGxlYXJuaW5nIExQQyB3aWxsIGJlCitiZXR0ZXIgY2FwYWJsZSBvZiBqdWRnaW5nIHRoZSBtZXJpdHMgb2YgdXNpbmcgYSBzaGFkb3cgZG93biB0aGUgcm9hZC4gIEkKK3dpbGwgZGlzY3VzcyBzaGFkb3dzIGluIGEgZnV0dXJlIHRleHRib29rLgorCitJZiB5b3UgYXJlIHNvbWVvbmUgd2hvIHVzZXMgc2hhZG93cyBzb21lIG9yIGEgbG90LCBwbGVhc2UgZG8gbm90IHRha2UgdGhlCithYm92ZSBwYXJhZ3JhcGggYXMgYSBwZXJzb25hbCBhdHRhY2suICBUaGVyZSBtYXkgYmUgc29tZSBwZXJmZWN0bHkgdmFsaWQKK3VzZXMgZm9yIHNoYWRvd3Mgc29tZXdoZXJlIHdoaWNoIEkgaGF2ZSB5ZXQgdG8gZW5jb3VudGVyLiAgTmV2ZXJ0aGVsZXNzLAordGhleSBhcmUgbm90IHRoZSBpZGVhbCB3YXkgdG8gYWNjb21wbGlzaCBhbnkgZ2l2ZW4gdGFzaywgYW5kIHRoZXJlZm9yZSB0aGV5CithcmUgbm90IGNvbnNpZGVyZWQgZm9yIHRoZSBwdXJwb3NlcyBvZiB0aGlzIHRleHRib29rIGFuIGludGVybWVkaWF0ZSBjb2RpbmcKK3Rvb2wuCisKK0kgaGF2ZSBhbHNvIG9taXR0ZWQgZGlzY3Vzc2lvbnMgb2Ygc2VjdXJpdHkgYW5kIG9iamVjdCBvcmllbnRlZAorcHJvZ3JhbW1pbmcuICBCb3RoIGFyZSBxdWl0ZSBvYnZpb3VzbHkgbXVkbGliIGlzc3Vlcy4gIE1hbnkgcGVvcGxlLAoraG93ZXZlciwgbWlnaHQgdGFrZSBleGNlcHRpb24gd2l0aCBteSBsZWF2aW5nIG91dCBhIGRpc2N1c3Npb24gb2Ygb2JqZWN0CitvcmllbnRlZCBwcm9ncmFtbWluZy4gIEkgY2hvc2UgdG8gbGVhdmUgdGhhdCBmb3IgYSBsYXRlciB0ZXh0LCBzaW5jZSBtb3N0IGFyZWEKK2J1aWxkZXJzIGNvZGUgZm9yIHRoZSBjcmVhdGl2aXR5LCBub3QgZm9yIHRoZSBjb21wdXRlciBzY2llbmNlIHRoZW9yeS4gIEluIGJvdGgKK3RoZSBpbnRlcm1lZGlhdGUgYW5kIGJlZ2lubmVyIHRleHRib29rcywgSSBoYXZlIGNob3NlbiBvbmx5IHRvIGRpc2N1c3MKK3RoZW9yeSB3aGVyZSBpdCBpcyBkaXJlY3RseSBhcHBsaWNhYmxlIHRvIHByYWN0aWNhbCBMUEMgcHJvZ3JhbW1pbmcuICBGb3IKK3Blb3BsZSB3aG8gYXJlIHN0YXJ0aW5nIG91dCBncmVlbiBpbiBMUEMgYW5kIHdhbnQgdG8gY29kZSB0aGUgbmV4dCBncmVhdAorbXVkbGliLCBwZXJoYXBzIHRoZW9yeSB3b3VsZCBiZSBtb3JlIHVzZWZ1bC4gIEJ1dCBmb3IgdGhlIHB1cnBvc2VzIG9mIHRoaXMKK2Jvb2ssIGEgZGlzY3Vzc2lvbiBvZiBvYmplY3Qgb3JpZW50ZWQgcHJvZ3JhbW1pbmcgaXMgc2ltcGx5IGEgc25vb3plci4gIEkKK2RvIHBsYW4gdG8gZ2V0IGhlYXZ5IGludG8gdGhlb3J5IHdpdGggdGhlIG5leHQgdGV4dGJvb2suCisKKzEuNSBTdW1tYXJ5CitMUEMgaXMgbm90IGRpZmZpY3VsdCB0byBsZWFybi4gIEl0IGlzIGEgbGFuZ3VhZ2Ugd2hpY2gsIGFsdGhvdWdoIHBhdGhldGljCitjb21wYXJlZCB0byBhbnkgb3RoZXIgbGFuZ3VhZ2UgZm9yIHBlcmZvcm1pbmcgbW9zdCBjb21wdXRlciBsYW5ndWFnZQordGFza3MsIGlzIGluY3JlZGlibHkgcG93ZXJmdWwgYW5kIHVuZXF1YWxsZWQgZm9yIHRoZSB0YXNrcyBvZiBidWlsZGluZyBhbgorYXJlYSBpbiBNVUQgdHlwZSBnYW1lcy4gIEZvciB0aGUgYmVnaW5uZXIsIGl0IGFsbG93cyB5b3UgdG8gZWFzaWx5IGp1bXAgaW4KK2FuZCBjb2RlIHVzZWZ1bCBvYmplY3RzIHdpdGhvdXQgZXZlbiBrbm93aW5nIHdoYXQgeW91IGFyZSBkb2luZy4gIEZvciB0aGUKK2ludGVybWVkaWF0ZSBwZXJzb24sIGl0IGFsbG93cyB5b3UgdG8gdHVybiBhbnkgaWRlYSB5b3UgaGF2ZSBpbnRvIHRleHR1YWwKK3ZpcnR1YWwgcmVhbGl0eS4gIEFuZCBmb3IgdGhlIGFkdmFuY2VkIHBlcnNvbiwgaXTVcyBvYmplY3Qgb3JpZW50ZWQgZmVhdHVyZXMKK2NhbiBhbGxvdyB5b3UgdG8gYnVpbGQgb25lIG9mIHRoZSBtb3N0IHBvcHVsYXIgZ2FtZXMgb24gdGhlIGludGVybmV0LiAgV2hhdAoreW91IGNhbiBkbyBpcyBzaW1wbHkgbGltaXRlZCBieSBob3cgbXVjaCB5b3Uga25vdy4gIEFuZCBsZWFybmluZyBtb3JlCitkb2VzIG5vdCByZXF1aXJlIGEgY29tcHV0ZXIgc2NpZW5jZSBkZWdyZWUuCisKK0NvcHlyaWdodCAoYykgR2VvcmdlIFJlZXNlIDE5OTMKZGlmZiAtLWdpdCBhL2RvYy9LVVJTL0xQQy1LVVJTMi9jaGFwdGVyMiBiL2RvYy9LVVJTL0xQQy1LVVJTMi9jaGFwdGVyMgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41MWE0YzNjCi0tLSAvZGV2L251bGwKKysrIGIvZG9jL0tVUlMvTFBDLUtVUlMyL2NoYXB0ZXIyCkBAIC0wLDAgKzEsMjIzIEBACitJbnRlcm1lZGlhdGUgTFBDCitEZXNjYXJ0ZXMgb2YgQm9yZworTm92ZXJtYmVyIDE5OTMKKworICAgICAgICAgICAgICAgICAgICAgICAgIENoYXB0ZXIgMjogVGhlIExQTXVkIERyaXZlcgorCisyLjEgUmV2aWV3IG9mIEJhc2ljIERyaXZlci9NdWRsaWIgSW50ZXJhY3Rpb24KK0luIHRoZSBMUEMgQmFzaWNzIHRleHRib29rLCB5b3UgbGVhcm5lZCBhIGxvdCBhYm91dCB0aGUgd2F5IHRoZSBtdWRsaWIKK3dvcmtzLCBzcGVjaWZpY2FsbHkgaW4gcmVsYXRpb24gdG8gb2JqZWN0cyB5b3UgY29kZSBpbiBvcmRlciB0byBidWlsZCB5b3VyCityZWFsbS4gIE5vdCBtdWNoIHdhcyBkaXNjdXNzZWQgYWJvdXQgdGhlIGludGVyYWN0aW9uIGJldHdlZW4gdGhlCittdWRsaWIgYW5kIHRoZSBkcml2ZXIuICBZb3Ugc2hvdWxkIGtub3csIGhvd2V2ZXIsIHRoYXQgdGhlIGRyaXZlcgorZG9lcyB0aGUgZm9sbG93aW5nOgorMSkgV2hlbiBhbiBvYmplY3QgaXMgZmlyc3QgbG9hZGVkIGludG8gbWVtb3J5LCB0aGUgZHJpdmVyIHdpbGwgY2FsbAorY3JlYXRlKCkgaW4gbmF0aXZlIG11ZHMgYW5kIHJlc2V0KCkgaW4gY29tcGF0IG11ZHMuICBBIGNyZWF0b3IKK3VzZXMgY3JlYXRlKCkgb3IgcmVzZXQoKSB0byBnaXZlIGluaXRpYWwgdmFsdWVzIHRvIHRoZSBvYmplY3QuCisyKSBBdCBhbiBpbnRlcnZhbCBzZXR1cCBieSB0aGUgZ2FtZSBhZG1pbmlzdHJhdG9yLCB0aGUgZHJpdmVyIGNhbGxzIHRoZQorZnVuY3Rpb24gcmVzZXQoKS4gIFRoaXMgYWxsb3dzIHRoZSBvYmplY3QgdG8gcmVnZW5lcmF0ZSBtb25zdGVycyBhbmQKK3N1Y2guICBOb3RpY2UgdGhhdCBpbiBhIGNvbXBhdCBtdWQsIHRoZSBzYW1lIGZ1bmN0aW9uIGlzIHVzZWQgdG8gc2V0IHVwCitpbml0aWFsIHZhbHVlcyBhcyBpcyB1c2VkIHRvIHJlc2V0IHRoZSByb29tLgorMykgQW55IHRpbWUgYSBsaXZpbmcgb2JqZWN0IGNvbWVzIGluIGNvbnRhY3Qgd2l0aCBhbiBvYmplY3Qgb2YgYW55IHNvcnQsCit0aGUgZHJpdmVyIGNhbGxzIGluaXQoKSBpbiB0aGUgbmV3bHkgZW5jb3VudGVyZWQgb2JqZWN0LiAgVGhpcyBhbGxvd3MKK25ld2x5IGVuY291bnRlcmVkIG9iamVjdHMgdG8gZ2l2ZSBsaXZpbmcgb2JqZWN0cyBjb21tYW5kcyB0byBleGVjdXRlCit0aHJvdWdoIHRoZSBhZGRfYWN0aW9uKCkgZWZ1biwgYXMgd2VsbCBhcyBwZXJmb3JtIG90aGVyIGFjdGlvbnMgd2hpY2gKK3Nob3VsZCBoYXBwZW4gd2hlbmV2ZXIgYSBsaXZpbmcgdGhpbmcgZW5jb3VudGVycyBhIGdpdmVuIG9iamVjdC4KKzQpIFRoZSBkcml2ZXIgZGVmaW5lcyBhIHNldCBvZiBmdW5jdGlvbnMga25vd24gYXMgZWZ1bnMgd2hpY2ggYXJlCithdmFpbGFibGUgdG8gYWxsIG9iamVjdHMgaW4gdGhlIGdhbWUuICBFeGFtcGxlcyBvZiBjb21tb25seSB1c2VkIGVmdW5zCithcmU6IHRoaXNfcGxheWVyKCksIHRoaXNfb2JqZWN0KCksIHdyaXRlKCksIHNheSgpLCBldGMuCisKKzIuMiBUaGUgRHJpdmVyIEN5Y2xlCitUaGUgZHJpdmVyIGlzIGEgQyBwcm9ncmFtIHdoaWNoIHJ1bnMgdGhlIGdhbWUuICBJdHMgYmFzaWMgZnVuY3Rpb25zIGFyZQordG8gYWNjZXB0IGNvbm5lY3Rpb25zIGZyb20gdGhlIG91dHNpZGUgd29ybGQgc28gcGVvcGxlIGNhbiBsb2dpbiwKK2ludGVycHJldCB0aGUgTFBDIGNvZGUgd2hpY2ggZGVmaW5lcyBMUEMgb2JqZWN0cyBhbmQgaG93IHRoZXkKK2Z1bmN0aW9uIGluIHRoZSBnYW1lLCBhbmQgYWNjZXB0IHVzZXIgaW5wdXQgYW5kIGNhbGwgdGhlIGFwcHJvcHJpYXRlIExQQworZnVuY3Rpb25zIHdoaWNoIG1hdGNoIHRoZSBldmVudC4gIEluIGl0cyBtb3N0IHNpbXBsZXN0IGVzc2VuY2UsIGl0IGlzIGFuCit1bmVuZGluZyBsb29wLgorCitPbmNlIHRoZSBnYW1lIGhhcyBib290ZWQgdXAgYW5kIGlzIHByb3Blcmx5IGZ1bmN0aW9uaW5nICh0aGUgYm9vdCB1cAorcHJvY2VzcyB3aWxsIGJlIGRpc2N1c3NlZCBpbiBhIGZ1dHVyZSwgYWR2YW5jZWQgTFBDIHRleHRib29rKSwgdGhlCitkcml2ZXIgZW50ZXJzIGEgbG9vcCB3aGljaCBkb2VzIG5vdCB0ZXJtaW5hdGUgdW50aWwgdGhlIHNodXRkb3duKCkgZWZ1bgoraXMgbGVnYWxseSBjYWxsZWQgb3IgYSBidWcgY2F1c2VzIHRoZSBkcml2ZXIgcHJvZ3JhbSB0byBjcmFzaC4gIEZpcnN0IG9mZiwKK3RoZSBkcml2ZXIgaGFuZGxlcyBhbnkgbmV3IGluY29taW5nIGNvbm5lY3Rpb25zIGFuZCBwYXNzZXMgY29udHJvbCBvZgordGhlIGNvbm5lY3Rpb24gdG8gYSBsb2dpbiBvYmplY3QuICBBZnRlciB0aGF0LCB0aGUgZHJpdmVyIHB1dHMgdG9nZXRoZXIgYQordGFibGUgb2YgY29tbWFuZHMgd2hpY2ggaGF2ZSBiZWVuIGVudGVyZWQgYnkgdXNlcnMgc2luY2UgdGhlIGxhc3QgY3ljbGUKK29mIHRoZSBkcml2ZXIuICBBZnRlciB0aGUgY29tbWFuZCB0YWJsZSBpcyBhc3NlbWJsZWQsIGFsbCBtZXNzYWdlcworc2NoZWR1bGVkIHRvIGJlIHNlbnQgdG8gdGhlIGNvbm5lY3Rpb24gZnJvbSB0aGUgbGFzdCBkcml2ZXIgY3ljbGUgYXJlIHNlbnQKK291dCB0byB0aGUgdXNlci4gIEF0IHRoaXMgcG9pbnQsIHRoZSBkcml2ZXIgZ29lcyB0aHJvdWdoIHRoZSB0YWJsZSBvZgorY29tbWFuZHMgdG8gYmUgZXhlY3V0ZWQgYW5kIGV4ZWN1dGVzIGVhY2ggc2V0IG9mIGNvbW1hbmRzIGVhY2gKK29iamVjdCBoYXMgc3RvcmVkIHRoZXJlLiAgVGhlIGRyaXZlciBlbmRzIGl0cyBjeWNsZSBieSBjYWxsaW5nIHRoZSBmdW5jdGlvbgoraGVhcnRfYmVhdCgpIGluIGV2ZXJ5IG9iamVjdCB3aXRoIGEgaGVhcnRfYmVhdCgpIHNldCBhbmQgZmluYWxseQorcGVyZm9ybWluZyBhbGwgcGVuZGluZyBjYWxsIG91dHMuICBUaGlzIGNoYXB0ZXIgd2lsbCBub3QgZGVhbCB3aXRoIHRoZQoraGFuZGxpbmcgb2YgY29ubmVjdGlvbnMsIGJ1dCBpbnN0ZWFkIHdpbGwgZm9jdXMgb24gaG93IHRoZSBkcml2ZXIKK2hhbmRsZXMgdXNlciBjb21tYW5kcyBhbmQgaGVhcnRiZWF0cyBhbmQgY2FsbCBvdXRzLgorCisyLjMgVXNlciBDb21tYW5kcworQXMgbm90ZWQgaW4gc2VjdGlvbiAxLjIsIHRoZSBkcml2ZXIgc3RvcmVzIGEgbGlzdCBvZiBjb21tYW5kcyBmb3IgZWFjaAordXNlciB0byBiZSBleGVjdXRlZCBlYWNoIGN5Y2xlLiAgVGhlIGNvbW1hbmRzIGxpc3QgaGFzIHRoZSBuYW1lIG9mIHRoZQorbGl2aW5nIG9iamVjdCBwZXJmb3JtaW5nIHRoZSBjb21tYW5kLCB0aGUgb2JqZWN0IHdoaWNoIGdhdmUgdGhlIGxpdmluZworb2JqZWN0IHRoYXQgY29tbWFuZCwgYW5kIHRoZSBmdW5jdGlvbiB3aGljaCBpcyB0byBiZSBleGVjdXRlZCBpbiBvcmRlcgordG8gcGVyZm9ybSB0aGUgY29tbWFuZC4gIFRoZSBkcml2ZXIgcmVmZXJzIHRvIHRoZSBvYmplY3Qgd2hpY2ggdHlwZWQgaW4KK3RoZSBjb21tYW5kIGFzIHRoZSBjb21tYW5kIGdpdmVyLiAgSXQgaXMgdGhlIGNvbW1hbmQgZ2l2ZXIgd2hpY2gKK2dldHMgcmV0dXJuZWQgYXMgdGhpc19wbGF5ZXIoKSBpbiBtb3N0IGNhc2VzLgorCitUaGUgZHJpdmVyIHN0YXJ0cyBhdCB0aGUgdG9wIG9mIHRoZSBsaXN0IG9mIGxpdmluZyBvYmplY3RzIHdpdGggcGVuZGluZworY29tbWFuZHMsIGFuZCBzdWNjZXNzaXZlbHkgcGVyZm9ybXMgZWFjaCBjb21tYW5kIGl0IHR5cGVkIGJ5IGNhbGxpbmcKK3RoZSBmdW5jdGlvbiBhc3NvY2lhdGVkIHdpdGggdGhlIGNvbW1hbmQgYW5kIHBhc3NpbmcgYW55IGFyZ3VtZW50cwordGhlIGNvbW1hbmQgZ2l2ZXIgZ2F2ZSBhcyBhcmd1bWVudHMgdG8gdGhlIGZ1bmN0aW9uLiAgQXMgdGhlIGRyaXZlcgorc3RhcnRzIHdpdGggdGhlIGNvbW1hbmRzIGlzc3VlZCBieSBhIG5ldyBsaXZpbmcgb2JqZWN0LCB0aGUgY29tbWFuZAorZ2l2ZXIgdmFyaWFibGUgaXMgY2hhbmdlZCB0byBiZSBlcXVhbCB0byB0aGUgbmV3IGxpdmluZyBvYmplY3QsIHNvIHRoYXQKK2R1cmluZyB0aGUgc2VxdWVuY2Ugb2YgZnVuY3Rpb25zIGluaXRpYXRlZCBieSB0aGF0IGNvbW1hbmQsIHRoZSBlZnVuCit0aGlzX3BsYXllcigpIHJldHVybnMgdGhlIG9iamVjdCB3aGljaCBpc3N1ZWQgdGhlIGNvbW1hbmQuCisKK0xldCdzIGxvb2sgYXQgdGhlIGNvbW1hbmQgYnVmZmVyIGZvciBhbiBleGFtcGxlIHBsYXllci4gIFNpbmNlIHRoZQorZXhlY3V0aW9uIG9mIGhpcyBsYXN0IGNvbW1hbmQsIEJvem8gaGFzIHR5cGVkICJub3J0aCIgYW5kICJ0ZWxsCitkZXNjYXJ0ZXMgd2hlbiBpcyB0aGUgbmV4dCByZWJvb3QiLiAgVGhlIGNvbW1hbmQgIm5vcnRoIiBpcyBhc3NvY2lhdGVkCit3aXRoIHRoZSBmdW5jdGlvbiAiRG9fTW92ZSgpIiBpbiB0aGUgcm9vbSBCb3pvIGlzIGluICh0aGUgY29tbWFuZAorIm5vcnRoIiBpcyBhdXRvbWF0aWNhbGx5IHNldHVwIGJ5IHRoZSBzZXRfZXhpdHMoKSBlZnVuIGluIHRoYXQgcm9vbSkuICBUaGUKK2NvbW1hbmQgInRlbGwiIGlzIG5vdCBzcGVjaWZpY2FsbHkgbGlzdGVkIGFzIGEgY29tbWFuZCBmb3IgdGhlIHBsYXllciwKK2hvd2V2ZXIsIGluIHRoZSBwbGF5ZXIgb2JqZWN0IHRoZXJlIGlzIGEgZnVuY3Rpb24gY2FsbGVkICJjbWRfaG9vaygpIgord2hpY2ggaXMgYXNzb2NpYXRlZCB3aXRoIHRoZSBjb21tYW5kICIiLCB3aGljaCBtYXRjaGVzIGFueSBwb3NzaWJsZQordXNlciBpbnB1dC4KKworT25jZSB0aGUgZHJpdmVyIGdldHMgZG93biB0byBCb3pvLCB0aGUgY29tbWFuZCBnaXZlciB2YXJpYWJsZSBpcyBzZXQgdG8KK3RoZSBvYmplY3Qgd2hpY2ggaXMgQm96by4gIFRoZW4sIHNlZWluZyBCb3pvIHR5cGVkICJub3J0aCIgYW5kIHRoZQorZnVuY3Rpb24gIm5vcnRoIiBpcyBhc3NvY2lhdGVkIHdpdGgsIHRoZSBkcml2ZXIgY2FsbHMgQm96bydzX1Jvb20tCis+RG9fTW92ZSgwKS4gIEFuIGFyZ3VtZW50IG9mIDAgaXMgcGFzc2VkIHRvIHRoZSBmdW5jdGlvbiBzaW5jZSBCb3pvCitvbmx5IHR5cGVkIHRoZSBjb21tYW5kICJub3J0aCIgd2l0aCBubyBhcmd1bWVudHMuICBUaGUgcm9vbQorbmF0dXJhbGx5IGNhbGxzIHNvbWUgZnVuY3Rpb25zIGl0IG5lZWRzLCBhbGwgdGhlIHdoaWxlIHN1Y2ggdGhhdCB0aGUgZWZ1bgordGhpc19wbGF5ZXIoKSByZXR1cm5zIHRoZSBvYmplY3Qgd2hpY2ggaXMgQm96by4gIEV2ZW50dWFsbHksIHRoZSByb29tCitvYmplY3Qgd2lsbCBjYWxsIG1vdmVfcGxheWVyKCkgaW4gQm96bywgd2hpY2ggaW4gdHVybiBjYWxscyB0aGUKK21vdmVfb2JqZWN0KCkgZWZ1bi4gIFRoaXMgZWZ1biBpcyByZXNwb25zaWJsZSBmb3IgY2hhbmdpbmcgYW4gb2JqZWN0J3MKK2Vudmlyb25tZW50LgorCitXaGVuIHRoZSBlbnZpcm9ubWVudCBvZiBhbiBvYmplY3QgY2hhbmdlcywgdGhlIGNvbW1hbmRzIGF2YWlsYWJsZSB0bworaXQgZnJvbSBvYmplY3RzIGluIGl0cyBwcmV2aW91cyBlbnZpcm9ubWVudCBhcyB3ZWxsIGFzIGZyb20gaXRzIHByZXZpb3VzCitlbnZpcm9ubWVudCBhcmUgcmVtb3ZlZCBmcm9tIHRoZSBvYmplY3QuICBPbmNlIHRoYXQgaXMgZG9uZSwgdGhlIGRyaXZlcgorY2FsbHMgdGhlIGVmdW4gaW5pdCgpIGluIHRoZSBuZXcgZW52aXJvbm1lbnQgYXMgd2VsbCBhcyBpbiBlYWNoIG9iamVjdCBpbgordGhlIG5ldyBlbnZpcm9ubWVudC4gIER1cmluZyBlYWNoIG9mIHRoZXNlIGNhbGxzIHRvIGluaXQoKSwgdGhlIG9iamVjdAorQm96byBpcyBzdGlsbCB0aGUgY29tbWFuZCBnaXZlci4gIFRodXMgYWxsIGFkZF9hY3Rpb24oKSBlZnVucyBmcm9tIHRoaXMKK21vdmUgd2lsbCBhcHBseSB0byBCb3pvLiAgT25jZSBhbGwgdGhvc2UgY2FsbHMgYXJlIGRvbmUsIGNvbnRyb2wgcGFzc2VzCitiYWNrIGZyb20gdGhlIG1vdmVfb2JqZWN0KCkgZWZ1biB0byB0aGUgbW92ZV9wbGF5ZXIoKSBsZnVuIGluIEJvem8uIAorbW92ZV9wbGF5ZXIoKSByZXR1cm5zIGNvbnRyb2wgYmFjayB0byBEb19Nb3ZlKCkgaW4gdGhlIG9sZCByb29tLAord2hpY2ggcmV0dXJucyAxIHRvIHNpZ25pZnkgdG8gdGhlIGRyaXZlciB0aGF0IHRoZSBjb21tYW5kIGFjdGlvbiB3YXMKK3N1Y2Nlc3NmdWwuICBJZiB0aGUgRG9fTW92ZSgpIGZ1bmN0aW9uIGhhZCByZXR1cm5lZCAwIGZvciBzb21lIHJlYXNvbiwKK3RoZSBkcml2ZXIgd291bGQgaGF2ZSB3cml0dGVuICJXaGF0PyIgKG9yIHdoYXRldmVyIHlvdXIgZHJpdmVyJ3MKK2RlZmF1bHQgYmFkIGNvbW1hbmQgbWVzc2FnZSBpcykgdG8gQm96by4KKworT25jZSB0aGUgZmlyc3QgY29tbWFuZCByZXR1cm5zIDEsIHRoZSBkcml2ZXIgcHJvY2VlZHMgb24gdG8gQm96bydzCitzZWNvbmQgY29tbWFuZCwgZm9sbG93aW5nIG11Y2ggdGhlIHNhbWUgc3RydWN0dXJlLiAgTm90ZSB0aGF0IHdpdGgKKyJ0ZWxsIGRlc2NhcnRlcyB3aGVuIGlzIHRoZSBuZXh0IHJlYm9vdCIsIHRoZSBkcml2ZXIgcGFzc2VzICJkZXNjYXJ0ZXMKK3doZW4gaXMgdGhlIG5leHQgcmVib290IiB0byB0aGUgZnVuY3Rpb24gYXNzb2NpYXRlZCB3aXRoIHRlbGwuICBUaGF0CitmdW5jdGlvbiBpbiB0dXJuIGhhcyB0byBkZWNpZGUgd2hhdCB0byBkbyB3aXRoIHRoYXQgYXJndW1lbnQuICBBZnRlciB0aGF0Citjb21tYW5kIHJldHVybnMgZWl0aGVyIDEgb3IgMCwgdGhlIGRyaXZlciB0aGVuIHByb2NlZWRzIG9uIHRvIHRoZSBuZXh0CitsaXZpbmcgb2JqZWN0IHdpdGggY29tbWFuZHMgcGVuZGluZywgYW5kIHNvIG9uIHVudGlsIGFsbCBsaXZpbmcgb2JqZWN0cword2l0aCBwZW5kaW5nIGNvbW1hbmRzIGhhdmUgaGFkIHRoZWlyIGNvbW1hbmRzIHBlcmZvcm1lZC4KKworMi40IFRoZSBFZnVucyBzZXRfaGVhcnRfYmVhdCgpIGFuZCBjYWxsX291dCgpCitPbmNlIGFsbCBjb21tYW5kcyBhcmUgcGVyZm9ybWVkIGZvciBvYmplY3RzIHdpdGggY29tbWFuZHMgcGVuZGluZywKK3RoZSBkcml2ZXIgdGhlbiBwcm9jZWVkcyB0byBjYWxsIHRoZSBoZWFydF9iZWF0KCkgZnVuY3Rpb24gaW4gYWxsIG9iamVjdHMKK2xpc3RlZCB3aXRoIHRoZSBkcml2ZXIgYXMgaGF2aW5nIGhlYXJ0YmVhdHMuICBXaGVuZXZlciBhbiBvYmplY3QgY2FsbHMgdGhlCitlZnVuIHNldF9oZWFydF9iZWF0KCkgd2l0aCBhIG5vbi16ZXJvIGFyZ3VtZW50IChkZXBlbmRpbmcgb24geW91cgorZHJpdmVyLCB3aGF0IG5vbi16ZXJvIG51bWJlciBtYXkgYmUgaW1wb3J0YW50LCBidXQgaW4gbW9zdCBjYXNlcyB5b3UKK2NhbGwgaXQgd2l0aCB0aGUgaW50IDEpLiAgVGhlIGVmdW4gc2V0X2hlYXJ0X2JlYXQoKSBhZGRzIHRoZSBvYmplY3Qgd2hpY2gKK2NhbGxzIHNldF9oZWFydF9iZWF0KCkgdG8gdGhlIGxpc3Qgb2Ygb2JqZWN0cyB3aXRoIGhlYXJ0YmVhdHMuICBJZiB5b3UgY2FsbCBpdAord2l0aCBhbiBhcmd1bWVudCBvZiAwLCB0aGVuIGl0IHJlbW92ZXMgdGhlIG9iamVjdCBmcm9tIHRoZSBsaXN0IG9mIG9iamVjdHMKK3dpdGggaGVhcnRiZWF0cy4KKworVGhlIG1vc3QgY29tbW9uIHVzZSBmb3IgaGVhcnRiZWF0cyBpbiB0aGUgbXVkbGliIGlzIHRvIGhlYWwgcGxheWVycyBhbmQKK21vbnN0ZXJzIGFuZCBwZXJmb3JtIGNvbWJhdC4gIE9uY2UgdGhlIGRyaXZlciBoYXMgZmluaXNoZWQgZGVhbGluZyB3aXRoCit0aGUgY29tbWFuZCBsaXN0LCBpdCBnb2VzIHRocm91Z2ggdGhlIGhlYXJ0YmVhdCBsaXN0IGNhbGxpbmcgaGVhcnRfYmVhdCgpIGluCitlYWNoIG9iamVjdCBpbiB0aGUgbGlzdC4gIFNvIGZvciBhIHBsYXllciwgZm9yIGV4YW1wbGUsIHRoZSBkcml2ZXIgd2lsbCBjYWxsCitoZWFydF9iZWF0KCkgaW4gdGhlIHBsYXllciB3aGljaCB3aWxsOgorMSkgYWdlIHRoZSBwbGF5ZXIKKzIpIGhlYWwgdGhlIHBsYXllciBhY2NvcmRpbmcgdG8gYSBoZWFsIHJhdGUKKzMpIGNoZWNrIHRvIHNlZSBpZiB0aGVyZSBhcmUgYW55IGh1bnRlZCwgaHVudGluZywgb3IgYXR0YWNraW5nIG9iamVjdHMKK2Fyb3VuZAorNCkgcGVyZm9ybSBhbiBhdHRhY2sgaWYgc3RlcCAzIHJldHVybnMgdHJ1ZS4KKzUpIGFueSBvdGhlciB0aGluZ3Mgd2hpY2ggbmVlZCB0byBoYXBwZW4gYXV0b21hdGljYWxseSByb3VnaGx5IGV2ZXJ5CitzZWNvbmQKKworTm90ZSB0aGF0IHRoZSBtb3JlIG9iamVjdHMgd2hpY2ggaGF2ZSBoZWFydGJlYXRzLCB0aGUgbW9yZSBwcm9jZXNzaW5nCit3aGljaCBoYXMgdG8gaGFwcGVuIGV2ZXJ5IGN5Y2xlIHRoZSBtdWQgaXMgdXAuICBPYmplY3RzIHdpdGggaGVhcnRiZWF0cworYXJlIHRodXMga25vd24gYXMgdGhlIG1ham9yIGhvZyBvZiBDUFUgdGltZSBvbiBtdWRzLiAgCisKK1RoZSBjYWxsX291dCgpIGVmdW4gaXMgdXNlZCB0byBwZXJmb3JtIHRpbWVkIGZ1bmN0aW9uIGNhbGxzIHdoaWNoIGRvIG5vdAorbmVlZCB0byBoYXBwZW4gYXMgb2Z0ZW4gYXMgaGVhcnRiZWF0cywgb3Igd2hpY2gganVzdCBoYXBwZW4gb25jZS4gIENhbGwKK291dHMgbGV0IHlvdSBzcGVjaWZ5IHRoZSBmdW5jdGlvbiBpbiBhbiBvYmplY3QgeW91IHdhbnQgY2FsbGVkLiAgVGhlCitnZW5lcmFsIGZvcm11bGEgZm9yIGNhbGwgb3V0cyBpczoKK2NhbGxfb3V0KGZ1bmMsIHRpbWUsIGFyZ3MpOworVGhlIHRoaXJkIGFyZ3VtZW50IHNwZWNpZnlpbmcgYXJndW1lbnRzIGlzIG9wdGlvbmFsLiAgVGhlIGZpcnN0IGFyZ3VtZW50CitpcyBhIHN0cmluZyByZXByZXNlbnRpbmcgdGhlIG5hbWUgb2YgdGhlIGZ1bmN0aW9uIHRvIGJlIGNhbGxlZC4gIFRoZSBzZWNvbmQKK2FyZ3VtZW50IGlzIGhvdyBtYW55IHNlY29uZHMgc2hvdWxkIHBhc3MgYmVmb3JlIHRoZSBmdW5jdGlvbiBnZXRzCitjYWxsZWQuCisKK1ByYWN0aWNhbGx5IHNwZWFraW5nLCB3aGVuIGFuIG9iamVjdCBjYWxscyBjYWxsX291dCgpLCBpdCBpcyBhZGRlZCB0byBhIGxpc3QKK29mIG9iamVjdHMgd2l0aCBwZW5kaW5nIGNhbGwgb3V0cyB3aXRoIHRoZSBhbW91bnQgb2YgdGltZSBvZiB0aGUgY2FsbCBvdXQKK2FuZCB0aGUgbmFtZSBvZiB0aGUgZnVuY3Rpb24gdG8gYmUgY2FsbGVkLiAgRWFjaCBjeWNsZSBvZiB0aGUgZHJpdmVyLCB0aGUKK3RpbWUgaXMgY291bnRlZCBkb3duIHVudGlsIGl0IGJlY29tZXMgdGltZSBmb3IgdGhlIGZ1bmN0aW9uIHRvIGJlIGNhbGxlZC4gCitXaGVuIHRoZSB0aW1lIGNvbWVzLCB0aGUgZHJpdmVyIHJlbW92ZXMgdGhlIG9iamVjdCBmcm9tIHRoZSBsaXN0IG9mCitvYmplY3RzIHdpdGggcGVuZGluZyBjYWxsIG91dHMgYW5kIHBlcmZvcm1zIHRoZSBjYWxsIHRvIHRoZSBjYWxsIG91dAorZnVuY3Rpb24sIHBhc3NpbmcgYW55IHNwZWNpYWwgYXJncyBvcmlnaW5hbGx5IHNwZWNpZmllZCBieSB0aGUgY2FsbCBvdXQKK2Z1bmN0aW9uLgorCitJZiB5b3Ugd2FudCBhIHRvIHJlbW92ZSBhIHBlbmRpbmcgY2FsbCBiZWZvcmUgaXQgb2NjdXJzLCB5b3UgbmVlZCB0byB1c2UKK3RoZSByZW1vdmVfY2FsbF9vdXQoKSBlZnVuLCBwYXNzaW5nIHRoZSBuYW1lIG9mIHRoZSBmdW5jdGlvbiBiZWluZworY2FsbGVkIG91dC4gIFRoZSBkcml2ZXIgd2lsbCByZW1vdmUgdGhlIG5leHQgcGVuZGluZyBjYWxsIG91dCB0byB0aGF0CitmdW5jdGlvbi4gIFRoaXMgbWVhbnMgeW91IG1heSBoYXZlIHNvbWUgYW1iaWd1aXR5IGlmIG1vcmUgdGhhbiBvbmUKK2NhbGwgb3V0IGlzIHBlbmRpbmcgZm9yIHRoZSBzYW1lIGZ1bmN0aW9uLgorCitJbiBvcmRlciB0byBtYWtlIGEgY2FsbCBvdXQgY3ljbGljYWwsIHlvdSBtdXN0IHJlaXNzdWUgdGhlIGNhbGxfb3V0KCkgZWZ1bgoraW4gdGhlIGZ1bmN0aW9uIHlvdSBjYWxsZWQgb3V0LCBzaW5jZSB0aGUgZHJpdmVyIGF1dG9tYXRpY2FsbHkgcmVtb3ZlcyB0aGUKK2Z1bmN0aW9uIGZyb20gdGhlIGNhbGwgb3V0IHRhYmxlIHdoZW4gYSBjYWxsIG91dCBpcyBwZXJmb3JtZWQuICBFeGFtcGxlOgorCit2b2lkIGZvbygpIHsgY2FsbF9vdXQoImhlbGxvIiwgMTApOyB9CisKK3ZvaWQgaGVsbG8oKSB7IGNhbGxfb3V0KCJoZWxsbyIsIDEwKTsgfQorCit3aWxsIHNldCB1cCBoZWxsbygpIHRvIGJlIGNhbGxlZCBldmVyeSAxMCBzZWNvbmRzIGFmdGVyIGZvbygpIGlzIGZpcnN0IGNhbGxlZC4gCitUaGVyZSBhcmUgc2V2ZXJhbCB0aGluZ3MgdG8gYmUgY2FyZWZ1bCBhYm91dCBoZXJlLiAgRmlyc3QsIHlvdSBtdXN0IHdhdGNoCit0byBtYWtlIHN1cmUgeW91IGRvIG5vdCBzdHJ1Y3R1cmUgeW91ciBjYWxsIG91dHMgdG8gYmUgcmVjdXJzaXZlIGluIGFueQordW5pbnRlbmRlZCBmYXNoaW9uLiAgU2Vjb25kLCBjb21wYXJlIHdoYXQgYSBzZXRfaGVhcnRfYmVhdCgpIGRvZXMKK3doZW4gY29tcGFyZWQgZGlyZWN0bHkgdG8gd2hhdCBjYWxsX291dCgpIGRvZXMuCisKK3NldF9oZWFydF9iZWF0KCk6CithKSBBZGRzIHRoaXNfb2JqZWN0KCkgdG8gYSB0YWJsZSBsaXN0aW5nIG9iamVjdHMgd2l0aCBoZWFydGJlYXRzLgorYikgVGhlIGZ1bmN0aW9uIGhlYXJ0X2JlYXQoKSBpbiB0aGlzX29iamVjdCgpIGdldHMgY2FsbGVkIGV2ZXJ5IHNpbmdsZQorZHJpdmVyIGN5Y2xlLgorCitjYWxsX291dCgpOgorYSkgQWRkcyB0aGlzX29iamVjdCgpLCB0aGUgbmFtZSBvZiBhIGZ1bmN0aW9uIGluIHRoaXNfb2JqZWN0KCksIGEgdGltZQorZGVsYXksIGFuZCBhIHNldCBvZiBhcmd1bWVudHMgdG8gYSB0YWJsZSBsaXN0aW5nIGZ1bmN0aW9ucyB3aXRoIHBlbmRpbmcKK2NhbGwgb3V0cy4gIAorYikgVGhlIGZ1bmN0aW9uIG5hbWVkIGlzIGNhbGxlZCBvbmx5IG9uY2UsIGFuZCB0aGF0IGNhbGwgY29tZXMgYWZ0ZXIgdGhlCitzcGVjaWZpZWQgZGVsYXkuCisKK0FzIHlvdSBjYW4gc2VlLCB0aGVyZSBpcyBhIG11Y2ggZ3JlYXRlciBtZW1vcnkgb3ZlcmhlYWQgYXNzb2NpYXRlZAord2l0aCBjYWxsIG91dHMgZm9yIHBhcnQgKGEpLCB5ZXQgdGhhdCB0aGVyZSBpcyBhIG11Y2ggZ3JlYXRlciBDUFUgb3ZlcmhlYWQKK2Fzc29jaWF0ZWQgd2l0aCBoZWFydGJlYXRzIGFzIHNob3duIGluIHBhcnQgKGIpLCBhc3N1bWluZyB0aGF0IHRoZSBkZWxheQorZm9yIHRoZSBjYWxsIG91dCBpcyBncmVhdGVyIHRoYW4gYSBzaW5nbGUgZHJpdmVyIGN5Y2xlLiAKKworQ2xlYXJseSwgeW91IGRvIG5vdCB3YW50IHRvIGJlIGlzc3VpbmcgMSBzZWNvbmQgY2FsbCBvdXRzLCBmb3IgdGhlbiB5b3UKK2dldCB0aGUgd29yc3Qgb2YgYm90aCB3b3JsZHMuICBTaW1pbGFybHksIHlvdSBkbyBub3Qgd2FudCB0byBiZSBoYXZpbmcKK2hlYXJ0IGJlYXRzIGluIG9iamVjdHMgdGhhdCBjYW4gcGVyZm9ybSB0aGUgc2FtZSBmdW5jdGlvbnMgd2l0aCBjYWxsIG91dHMKK29mIGEgZ3JlYXRlciBkdXJhdGlvbiB0aGFuIDEgc2Vjb25kLiAgSSBwZXJzb25hbGx5IGhhdmUgaGVhcmQgbXVjaCB0YWxrCithYm91dCBhdCB3aGF0IHBvaW50IHlvdSBzaG91bGQgdXNlIGEgY2FsbCBvdXQgb3ZlciBhIGhlYXJ0YmVhdC4gIFdoYXQgSQoraGF2ZSBtb3N0bHkgaGVhcmQgaXMgdGhhdCBmb3Igc2luZ2xlIGNhbGxzIG9yIGZvciBjeWNsZXMgb2YgYSBkdXJhdGlvbgorZ3JlYXRlciB0aGFuIDEwIHNlY29uZHMsIGl0IGlzIGJlc3QgdG8gdXNlIGEgY2FsbCBvdXQuICBGb3IgcmVwZXRpdGl2ZSBjYWxscyBvZgorZHVyYXRpb25zIGxlc3MgdGhhbiAxMCBzZWNvbmRzLCB5b3UgYXJlIGJldHRlciBvZmYgdXNpbmcgaGVhcnRiZWF0cy4gIEkgZG8KK25vdCBrbm93IGlmIHRoaXMgaXMgdHJ1ZSwgYnV0IEkgZG8gbm90IHRoaW5rIGZvbGxvd2luZyB0aGlzIGNhbiBkbyBhbnkKK2hhcm0uCisKKzIuNSBTdW1tYXJ5CitCYXNpYyB0byBhIG1vcmUgaW4gZGVwdGggdW5kZXJzdGFuZGluZyBvZiBMUEMgaXMgYW5kIHVuZGVyc3RhbmRpbmcgb2YKK3RoZSB3YXkgaW4gd2hpY2ggdGhlIGRyaXZlciBpbnRlcmFjdHMgd2l0aCB0aGUgbXVkbGliLiAgWW91IHNob3VsZCBub3cKK3VuZGVyc3RhbmQgdGhlIG9yZGVyIGluIHdoaWNoIHRoZSBkcml2ZXIgcGVyZm9ybXMgZnVuY3Rpb25zLCBhcyB3ZWxsIGFzIGEKK21vcmUgZGV0YWlsZWQga25vd2xlZGdlIG9mIHRoZSBlZnVucyB0aGlzX3BsYXllcigpLCBhZGRfYWN0aW9uKCksIGFuZAorbW92ZV9vYmplY3QoKSBhbmQgdGhlIGxmdW4gaW5pdCgpLiAgSW4gYWRkaXRpb24gdG8gdGhpcyBidWlsZGluZyB1cG9uCitrbm93bGVkZ2UgeW91IGdvdCBmcm9tIHRoZSBMUEMgQmFzaWNzIHRleHRib29rLCB0aGlzIGNoYXB0ZXIgaGFzCitpbnRyb2R1Y2VkIGNhbGwgb3V0cyBhbmQgaGVhcnRiZWF0cyBhbmQgdGhlIG1hbm5lciBpbiB3aGljaCB0aGUgZHJpdmVyCitoYW5kbGVzIHRoZW0uICBZb3Ugc2hvdWxkIG5vdyBoYXZlIGEgYmFzaWMgdW5kZXJzdGFuZGluZyBvZiBjYWxsIG91dHMKK2FuZCBoZWFydGJlYXRzIHN1Y2ggdGhhdCB5b3UgY2FuIGV4cGVyaW1lbnQgd2l0aCB0aGVtIGluIHlvdXIgcmVhbG0KK2NvZGUuCisKK0NvcHlyaWdodCAoYykgR2VvcmdlIFJlZXNlIDE5OTMKZGlmZiAtLWdpdCBhL2RvYy9LVVJTL0xQQy1LVVJTMi9jaGFwdGVyMyBiL2RvYy9LVVJTL0xQQy1LVVJTMi9jaGFwdGVyMwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5mOTg2NzM3Ci0tLSAvZGV2L251bGwKKysrIGIvZG9jL0tVUlMvTFBDLUtVUlMyL2NoYXB0ZXIzCkBAIC0wLDAgKzEsNDgxIEBACitJbnRlcm1lZGlhdGUgTFBDCitEZXNjYXJ0ZXMgb2YgQm9yZworTm92ZW1iZXIgMTk5MworCisgICAgICAgICAgICAgICAgICAgICAgICBDaGFwdGVyIDM6IENvbXBsZXggRGF0YSBUeXBlcworCiszLjEgU2ltcGxlIERhdGEgVHlwZXMKK0luIHRoZSB0ZXh0Ym9vayBMUEMgQmFzaWNzLCB5b3UgbGVhcm5lZCBhYm91dCB0aGUgY29tbW9uLCBiYXNpYyBMUEMKK2RhdGEgdHlwZXM6IGludCwgc3RyaW5nLCBvYmplY3QsIHZvaWQuICBNb3N0IGltcG9ydGFudCB5b3UgbGVhcm5lZCB0aGF0CittYW55IG9wZXJhdGlvbnMgYW5kIGZ1bmN0aW9ucyBiZWhhdmUgZGlmZmVyZW50bHkgYmFzZWQgb24gdGhlIGRhdGEgdHlwZQorb2YgdGhlIHZhcmlhYmxlcyB1cG9uIHdoaWNoIHRoZXkgYXJlIG9wZXJhdGluZy4gIFNvbWUgb3BlcmF0b3JzIGFuZAorZnVuY3Rpb25zIHdpbGwgZXZlbiBnaXZlIGVycm9ycyBpZiB5b3UgdXNlIHRoZW0gd2l0aCB0aGUgd3JvbmcgZGF0YQordHlwZXMuICBGb3IgZXhhbXBsZSwgImEiKyJiIiBpcyBoYW5kbGVkIG11Y2ggZGlmZmVyZW50bHkgdGhhbiAxKzEuIAorV2hlbiB5b3UgYXNzICJhIisiYiIsIHlvdSBhcmUgYWRkaW5nICJiIiBvbnRvIHRoZSBlbmQgb2YgImEiIHRvIGdldAorImFiIi4gIE9uIHRoZSBvdGhlciBoYW5kLCB3aGVuIHlvdSBhZGQgMSsxLCB5b3UgZG8gbm90IGdldCAxMSwgeW91IGdldAorMiBhcyB5b3Ugd291bGQgZXhwZWN0LgorCitJIHJlZmVyIHRvIHRoZXNlIGRhdGEgdHlwZXMgYXMgc2ltcGxlIGRhdGEgdHlwZXMsIGJlY2F1c2UgdGhleSBhdG9taWMgaW4KK3RoYXQgdGhleSBjYW5ub3QgYmUgYnJva2VuIGRvd24gaW50byBzbWFsbGVyIGNvbXBvbmVudCBkYXRhIHR5cGVzLiAKK1RoZSBvYmplY3QgZGF0YSB0eXBlIGlzIGEgc29ydCBvZiBleGNlcHRpb24sIGJ1dCB5b3UgcmVhbGx5IGNhbm5vdCByZWZlcgoraW5kaXZpZHVhbGx5IHRvIHRoZSBjb21wb25lbnRzIHdoaWNoIG1ha2UgaXQgdXAsIHNvIEkgcmVmZXIgdG8gaXQgYXMgYQorc2ltcGxlIGRhdGEgdHlwZS4KKworVGhpcyBjaGFwdGVyIGludHJvZHVjZXMgdGhlIGNvbmNlcHQgb2YgdGhlIGNvbXBsZXggZGF0YSB0eXBlLCBhIGRhdGEgdHlwZQord2hpY2ggaXMgbWFkZSB1cCBvZiB1bml0cyBvZiBzaW1wbGUgZGF0YSB0eXBlcy4gIExQQyBoYXMgdHdvIGNvbW1vbgorY29tcGxleCBkYXRhIHR5cGVzLCBib3RoIGtpbmRzIG9mIGFycmF5cy4gIEZpcnN0LCB0aGVyZSBpcyB0aGUgdHJhZGl0aW9uYWwKK2FycmF5IHdoaWNoIHN0b3JlcyB2YWx1ZXMgaW4gY29uc2VjdXRpdmUgZWxlbWVudHMgYWNjZXNzZWQgYnkgYSBudW1iZXIKK3JlcHJlc2VudGluZyB3aGljaCBlbGVtZW50IHRoZXkgYXJlIHN0b3JlZCBpbi4gIFNlY29uZCBpcyBhbiBhc3NvY2lhdGl2ZQorYXJyYXkgY2FsbGVkIGEgbWFwcGluZy4gIEEgbWFwcGluZyBhc3NvY2lhdGVzIHRvIHZhbHVlcyB0b2dldGhlciB0bworYWxsb3cgYSBtb3JlIG5hdHVyYWwgYWNjZXNzIHRvIGRhdGEuCisKKzMuMiBUaGUgVmFsdWVzIE5VTEwgYW5kIDAKK0JlZm9yZSBnZXR0aW5nIGZ1bGx5IGludG8gYXJyYXlzLCB0aGVyZSBmaXJzdCBzaG91bGQgYmUgYSBmdWxsIHVuZGVyc3RhbmRpbmcKK29mIHRoZSBjb25jZXB0IG9mIE5VTEwgdmVyc3VzIHRoZSBjb25jZXB0IG9mIDAuICBJbiBMUEMsIGEgbnVsbCB2YWx1ZSBpcworcmVwcmVzZW50ZWQgYnkgdGhlIGludGVnZXIgMC4gIEFsdGhvdWdoIHRoZSBpbnRlZ2VyIDAgYW5kIE5VTEwgYXJlIG9mdGVuCitmcmVlbHkgaW50ZXJjaGFuZ2VhYmxlLCB0aGlzIGludGVyY2hhbmdlYWJpbGl0eSBvZnRlbiBsZWFkcyB0byBzb21lIGdyZWF0Citjb25mdXNpb24gd2hlbiB5b3UgZ2V0IGludG8gdGhlIHJlYWxtIG9mIGNvbXBsZXggZGF0YSB0eXBlcy4gIFlvdSBtYXkKK2hhdmUgZXZlbiBlbmNvdW50ZXJlZCBzdWNoIGNvbmZ1c2lvbiB3aGlsZSB1c2luZyBzdHJpbmdzLgorCiswIHJlcHJlc2VudHMgYSB2YWx1ZSB3aGljaCBmb3IgaW50ZWdlcnMgbWVhbnMgdGhlIHZhbHVlIHlvdSBhZGQgdG8KK2Fub3RoZXIgdmFsdWUgeWV0IHN0aWxsIHJldGFpbiB0aGUgdmFsdWUgYWRkZWQuICBUaGlzIGZvciBhbnkgYWRkaXRpb24KK29wZXJhdGlvbiBvbiBhbnkgZGF0YSB0eXBlLCB0aGUgWkVSTyB2YWx1ZSBmb3IgdGhhdCBkYXRhIHR5cGUgaXMgdGhlIHZhbHVlCit0aGF0IHlvdSBjYW4gYWRkIHRvIGFueSBvdGhlciB2YWx1ZSBhbmQgZ2V0IHRoZSBvcmlnaW5hbCB2YWx1ZS4gIFRodXM6ICAgQQorcGx1cyBaRVJPIGVxdWFscyBBIHdoZXJlIEEgaXMgc29tZSB2YWx1ZSBvZiBhIGdpdmVuIGRhdGEgdHlwZSBhbmQKK1pFUk8gaXMgdGhlIFpFUk8gdmFsdWUgZm9yIHRoYXQgZGF0YSB0eXBlLiAgVGhpcyBpcyBub3QgYW55IHNvcnQgb2YKK29mZmljaWFsIG1hdGhlbWF0aWNhbCBkZWZpbml0aW9uLiAgVGhlcmUgZXhpc3RzIG9uZSwgYnV0IEkgYW0gbm90IGEKK21hdGhlbWF0aWNpYW4sIHNvIEkgaGF2ZSBubyBpZGVhIHdoYXQgdGhlIHRlcm0gaXMuICBUaHVzIGZvciBpbnRlZ2VycywgMAoraXMgdGhlIFpFUk8gdmFsdWUgc2luY2UgMSArIDAgZXF1YWxzIDEuCisKK05VTEwsIG9uIHRoZSBvdGhlciBoYW5kLCBpcyB0aGUgYWJzZW5jZSBvZiBhbnkgdmFsdWUgb3IgbWVhbmluZy4gIFRoZQorTFBDIGRyaXZlciB3aWxsIGludGVycHJldCBOVUxMIGFzIGFuIGludGVnZXIgMCBpZiBpdCBjYW4gbWFrZSBzZW5zZSBvZiBpdAoraW4gdGhhdCBjb250ZXh0LiAgSW4gYW55IGNvbnRleHQgYmVzaWRlcyBpbnRlZ2VyIGFkZGl0aW9uLCBBIHBsdXMgTlVMTAorY2F1c2VzIGFuIGVycm9yLiAgTlVMTCBjYXVzZXMgYW4gZXJyb3IgYmVjYXVzZSBhZGRpbmcgdmFsdWVsZXNzIGZpZWxkcworaW4gb3RoZXIgZGF0YSB0eXBlcyB0byB0aG9zZSBkYXRhIHR5cGVzIG1ha2VzIG5vIHNlbnNlLgorCitMb29raW5nIGF0IHRoaXMgZnJvbSBhbm90aGVyIHBvaW50IG9mIHZpZXcsIHdlIGNhbiBnZXQgdGhlIFpFUk8gdmFsdWUKK2ZvciBzdHJpbmdzIGJ5IGtub3dpbmcgd2hhdCBhZGRlZCB0byAiYSIgd2lsbCBnaXZlIHVzICJhIiBhcyBhIHJlc3VsdC4gCitUaGUgYW5zd2VyIGlzIG5vdCAwLCBidXQgaW5zdGVhZCAiIi4gIFdpdGggaW50ZWdlcnMsIGludGVyY2hhbmdpbmcgTlVMTAorYW5kIDAgd2FzIGFjY2VwdGFibGUgc2luY2UgMCByZXByZXNlbnRzIG5vIHZhbHVlIHdpdGggcmVzcGVjdCB0byB0aGUKK2ludGVnZXIgZGF0YSB0eXBlLiAgVGhpcyBpbnRlcmNoYW5nZWFiaWxpdHkgaXMgbm90IHRydWUgZm9yIG90aGVyIGRhdGEgdHlwZXMsCitzaW5jZSB0aGVpciBaRVJPIHZhbHVlcyBkbyBub3QgcmVwcmVzZW50IG5vIHZhbHVlLiAgTmFtZWx5LCAiIgorcmVwcmVzZW50cyBhIHN0cmluZyBvZiBubyBsZW5ndGggYW5kIGlzIHZlcnkgZGlmZmVyZW50IGZyb20gMC4gIAorCitXaGVuIHlvdSBmaXJzdCBkZWNsYXJlIGFueSB2YXJpYWJsZSBvZiBhbnkgdHlwZSwgaXQgaGFzIG5vIHZhbHVlLiAgQW55CitkYXRhIHR5cGUgZXhjZXB0IGludGVnZXJzIHRoZXJlZm9yZSBtdXN0IGJlIGluaXRpYWxpemVkIHNvbWVob3cgYmVmb3JlCit5b3UgcGVyZm9ybSBhbnkgb3BlcmF0aW9uIG9uIGl0LiAgR2VuZXJhbGx5LCBpbml0aWFsaXphdGlvbiBpcyBkb25lIGluIHRoZQorY3JlYXRlKCkgZnVuY3Rpb24gZm9yIGdsb2JhbCB2YXJpYWJsZXMsIG9yIGF0IHRoZSB0b3Agb2YgdGhlIGxvY2FsIGZ1bmN0aW9uCitmb3IgbG9jYWwgdmFyaWFibGVzIGJ5IGFzc2lnbmluZyB0aGVtIHNvbWUgdmFsdWUsIG9mdGVuIHRoZSBaRVJPIHZhbHVlCitmb3IgdGhhdCBkYXRhIHR5cGUuICBGb3IgZXhhbXBsZSwgaW4gdGhlIGZvbGxvd2luZyBjb2RlIEkgd2FudCB0byBidWlsZCBhCitzdHJpbmcgd2l0aCByYW5kb20gd29yZHM6CisKK3N0cmluZyBidWlsZF9ub25zZW5zZSgpIHsKKyAgICBzdHJpbmcgc3RyOworICAgIGludCBpOworCisgICAgc3RyID0gIiI7IC8qIEhlcmUgc3RyIGlzIGluaXRpYWxpemVkIHRvIHRoZSBzdHJpbmcKK1pFUk8gdmFsdWUgKi8KKyAgICBmb3IoaT0wOyBpPDY7IGkrKykgeworICAgICAgICBzd2l0Y2gocmFuZG9tKDMpKzEpIHsKKyAgICAgICAgICAgIGNhc2UgMTogc3RyICs9ICJiaW5nIjsgYnJlYWs7CisgICAgICAgICAgICBjYXNlIDI6IHN0ciArPSAiYm9yZyI7IGJyZWFrOworICAgICAgICAgICAgY2FzZSAzOiBzdHIgKz0gImZvbyI7IGJyZWFrOworICAgICAgICB9CisgICAgICAgIGlmKGk9PTUpIHN0ciArPSAiLlxuIjsKKyAgICAgICAgZWxzZSBzdHIgKz0gIiAiOworICAgIH0KKyAgICByZXR1cm4gY2FwaXRhbGl6ZShzdHIpOworfQorCitJZiB3ZSBoYWQgbm90IGluaXRpYWxpemVkIHRoZSB2YXJpYWJsZSBzdHIsIGFuIGVycm9yIHdvdWxkIGhhdmUgcmVzdWx0ZWQKK2Zyb20gdHJ5aW5nIHRvIGFkZCBhIHN0cmluZyB0byBhIE5VTEwgdmFsdWUuICBJbnN0ZWFkLCB0aGlzIGNvZGUgZmlyc3QKK2luaXRpYWxpemVzIHN0ciB0byB0aGUgWkVSTyB2YWx1ZSBmb3Igc3RyaW5ncywgIiIuICBBZnRlciB0aGF0LCBpdCBlbnRlcnMgYQorbG9vcCB3aGljaCBtYWtlcyA2IGN5Y2xlcywgZWFjaCB0aW1lIHJhbmRvbWx5IGFkZGluZyBvbmUgb2YgdGhyZWUKK3Bvc3NpYmxlIHdvcmRzIHRvIHRoZSBzdHJpbmcuICBGb3IgYWxsIHdvcmRzIGV4Y2VwdCB0aGUgbGFzdCwgYW4gYWRkaXRpb25hbAorYmxhbmsgY2hhcmFjdGVyIGlzIGFkZGVkLiAgRm9yIHRoZSBsYXN0IHdvcmQsIGEgcGVyaW9kIGFuZCBhIHJldHVybgorY2hhcmFjdGVyIGFyZSBhZGRlZC4gIFRoZSBmdW5jdGlvbiB0aGVuIGV4aXRzIHRoZSBsb29wLCBjYXBpdGFsaXplcyB0aGUKK25vbnNlbnNlIHN0cmluZywgdGhlbiBleGl0cy4KKworMy4zIEFycmF5cyBpbiBMUEMKK0FuIGFycmF5IGlzIGEgcG93ZXJmdWwgY29tcGxleCBkYXRhIHR5cGUgb2YgTFBDIHdoaWNoIGFsbG93cyB5b3UgdG8KK2FjY2VzcyBtdWx0aXBsZSB2YWx1ZXMgdGhyb3VnaCBhIHNpbmdsZSB2YXJpYWJsZS4gIEZvciBpbnN0YW5jZSwKK05pZ2h0bWFyZSBoYXMgYW4gaW5kZWZpbml0ZSBudW1iZXIgb2YgY3VycmVuY2llcyBpbiB3aGljaCBwbGF5ZXJzIG1heQorZG8gYnVzaW5lc3MuICBPbmx5IGZpdmUgb2YgdGhvc2UgY3VycmVuY2llcywgaG93ZXZlciwgY2FuIGJlIGNvbnNpZGVyZWQKK2hhcmQgY3VycmVuY2llcy4gIEEgaGFyZCBjdXJyZW5jeSBmb3IgdGhlIHNha2Ugb2YgdGhpcyBleGFtcGxlIGlzIGEKK2N1cnJlbmN5IHdoaWNoIGlzIHJlYWRpbHkgZXhjaGFuZ2VhYmxlIGZvciBhbnkgb3RoZXIgaGFyZCBjdXJyZW5jeSwKK3doZXJlYXMgYSBzb2Z0IGN1cnJlbmN5IG1heSBvbmx5IGJlIGJvdWdodCwgYnV0IG5vdCBzb2xkLiAgSW4gdGhlIGJhbmssCit0aGVyZSBpcyBhIGxpc3Qgb2YgaGFyZCBjdXJyZW5jaWVzIHRvIGFsbG93IGJhbmsga2VlcGVycyB0byBrbm93IHdoaWNoCitjdXJyZW5jaWVzIGFyZSBpbiBmYWN0IGhhcmQgY3VycmVuY2llcy4gIFdpdGggc2ltcGxlIGRhdGEgdHlwZXMsIHdlIHdvdWxkCitoYXZlIHRvIHBlcmZvcm0gdGhlIGZvbGxvd2luZyBuYXN0eSBvcGVyYXRpb24gZm9yIGV2ZXJ5IGV4Y2hhbmdlCit0cmFuc2FjdGlvbjoKKworaW50IGV4Y2hhbmdlKHN0cmluZyBzdHIpIHsKKyAgICBzdHJpbmcgZnJvbSwgdG87CisgICAgaW50IGFtdDsKKworICAgIGlmKCFzdHIpIHJldHVybiAwOworICAgIGlmKHNzY2FuZihzdHIsICIlZCAlcyBmb3IgJXMiLCBhbXQsIGZyb20sIHRvKSAhPSAzKQorICAgICAgcmV0dXJuIDA7CisgICAgaWYoZnJvbSAhPSAicGxhdGludW0iICYmIGZyb20gIT0gImdvbGQiICYmIGZyb20gIT0KKyAgICAgICJzaWx2ZXIiICYmCisgICAgICBmcm9tICE9ICJlbGVjdHJ1bSIgJiYgZnJvbSAhPSAiY29wcGVyIikgeworICAgICAgICBub3RpZnlfZmFpbCgiV2UgZG8gbm90IGJ1eSBzb2Z0IGN1cnJlbmNpZXMhXG4iKTsKKyAgICAgICAgcmV0dXJuIDA7CisgICAgfQorICAgIC4uLgorfQorCitXaXRoIGZpdmUgaGFyZCBjdXJyZW5jaWVzLCB3ZSBoYXZlIGEgcmF0aGVyIHNpbXBsZSBleGFtcGxlLiAgQWZ0ZXIgYWxsIGl0Cit0b29rIG9ubHkgdHdvIGxpbmVzIG9mIGNvZGUgdG8gcmVwcmVzZW50IHRoZSBpZiBzdGF0ZW1lbnQgd2hpY2ggZmlsdGVyZWQKK291dCBiYWQgY3VycmVuY2llcy4gIEJ1dCB3aGF0IGlmIHlvdSBoYWQgdG8gY2hlY2sgYWdhaW5zdCBhbGwgdGhlIG5hbWVzCit3aGljaCBjYW5ub3QgYmUgdXNlZCB0byBtYWtlIGNoYXJhY3RlcnMgaW4gdGhlIGdhbWU/ICBUaGVyZSBtaWdodCBiZQorMTAwIG9mIHRob3NlOyB3b3VsZCB5b3Ugd2FudCB0byB3cml0ZSBhIDEwMCBwYXJ0IGlmIHN0YXRlbWVudD8KK1doYXQgaWYgeW91IHdhbnRlZCB0byBhZGQgYSBjdXJyZW5jeSB0byB0aGUgbGlzdCBvZiBoYXJkIGN1cnJlbmNpZXM/ICBUaGF0CittZWFucyB5b3Ugd291bGQgaGF2ZSB0byBjaGFuZ2UgZXZlcnkgY2hlY2sgaW4gdGhlIGdhbWUgZm9yIGhhcmQKK2N1cnJlbmNpZXMgdG8gYWRkIG9uZSBtb3JlIHBhcnQgdG8gdGhlIGlmIGNsYXVzZXMuICBBcnJheXMgYWxsb3cgeW91CitzaW1wbGUgYWNjZXNzIHRvIGdyb3VwcyBvZiByZWxhdGVkIGRhdGEgc28gdGhhdCB5b3UgZG8gbm90IGhhdmUgdG8gZGVhbAord2l0aCBlYWNoIGluZGl2aWR1YWwgdmFsdWUgZXZlcnkgdGltZSB5b3Ugd2FudCB0byBwZXJmb3JtIGEgZ3JvdXAKK29wZXJhdGlvbi4KKworQXMgYSBjb25zdGFudCwgYW4gYXJyYXkgbWlnaHQgbG9vayBsaWtlIHRoaXM6CisgICAgKHsgInBsYXRpbnVtIiwgImdvbGQiLCAic2lsdmVyIiwgImVsZWN0cnVtIiwgImNvcHBlciIgfSkKK3doaWNoIGlzIGFuIGFycmF5IG9mIHR5cGUgc3RyaW5nLiAgSW5kaXZpZHVhbCBkYXRhIHZhbHVlcyBpbiBhcnJheXMgYXJlCitjYWxsZWQgZWxlbWVudHMsIG9yIHNvbWV0aW1lcyBtZW1iZXJzLiAgSW4gY29kZSwganVzdCBhcyBjb25zdGFudAorc3RyaW5ncyBhcmUgcmVwcmVzZW50ZWQgYnkgc3Vycm91bmRpbmcgdGhlbSB3aXRoICIiLCBjb25zdGFudCBhcnJheXMgYXJlCityZXByZXNlbnRlZCBieSBiZWluZyBzdXJyb3VuZGVkIGJ5ICh7IH0pLCB3aXRoIGluZGl2aWR1YWwgZWxlbWVudHMgb2YKK3RoZSBhcnJheSBiZWluZyBzZXBhcmF0ZWQgYnkgYSAsLgorCitZb3UgbWF5IGhhdmUgYXJyYXlzIG9mIGFueSBMUEMgZGF0YSB0eXBlLCBzaW1wbGUgb3IgY29tcGxleC4gIEFycmF5cworbWFkZSB1cCBvZiBtaXhlcyBvZiB2YWx1ZXMgYXJlIGNhbGxlZCBhcnJheXMgb2YgbWl4ZWQgdHlwZS4gIEluIG1vc3QKK0xQQyBkcml2ZXJzLCB5b3UgZGVjbGFyZSBhbiBhcnJheSB1c2luZyBhIHRocm93LWJhY2sgdG8gQyBsYW5ndWFnZQorc3ludGF4IGZvciBhcnJheXMuICBUaGlzIHN5bnRheCBpcyBvZnRlbiBjb25mdXNpbmcgZm9yIExQQyBjb2RlcnMKK2JlY2F1c2UgdGhlIHN5bnRheCBoYXMgYSBtZWFuaW5nIGluIEMgdGhhdCBzaW1wbHkgZG9lcyBub3QgdHJhbnNsYXRlIGludG8KK0xQQy4gIE5ldmVydGhlbGVzcywgaWYgd2Ugd2FudGVkIGFuIGFycmF5IG9mIHR5cGUgc3RyaW5nLCB3ZSB3b3VsZAorZGVjbGFyZSBpdCBpbiB0aGUgZm9sbG93aW5nIG1hbm5lcjoKKworc3RyaW5nICphcnI7CisKK0luIG90aGVyIHdvcmRzLCB0aGUgZGF0YSB0eXBlIG9mIHRoZSBlbGVtZW50cyBpdCB3aWxsIGNvbnRhaW4gZm9sbG93ZWQgYnkKK2Egc3BhY2UgYW5kIGFuIGFzdGVyaXNrLiAgUmVtZW1iZXIsIGhvd2V2ZXIsIHRoYXQgdGhpcyBuZXdseSBkZWNsYXJlZAorc3RyaW5nIGFycmF5IGhhcyBhIE5VTEwgdmFsdWUgaW4gaXQgYXQgdGhlIHRpbWUgb2YgZGVjbGFyYXRpb24uCisKKzMuNCBVc2luZyBBcnJheXMKK1lvdSBub3cgc2hvdWxkIHVuZGVyc3RhbmQgaG93IHRvIGRlY2xhcmUgYW5kIHJlY29nbml6ZSBhbiBhcnJheSBpbgorY29kZS4gIEluIG9yZGVyIHRvIHVuZGVyc3RhbmQgaG93IHRoZXkgd29yayBpbiBjb2RlLCBsZXQncyByZXZpZXcgdGhlCitiYW5rIGNvZGUsIHRoaXMgdGltZSB1c2luZyBhcnJheXM6CisKK3N0cmluZyAqaGFyZF9jdXJyZW5jaWVzOworCitpbnQgZXhjaGFuZ2Uoc3RyaW5nIHN0cikgeworICAgIHN0cmluZyBmcm9tLCB0bzsKKyAgICBpbnQgYW10OworCisgICAgaWYoIXN0cikgcmV0dXJuIDA7CisgICAgaWYoc3NjYW5mKHN0ciwgIiVkICVzIGZvciAlcyIsIGFtdCwgZnJvbSwgdG8pICE9IDMpCityZXR1cm4gMDsKKyAgICBpZihtZW1iZXJfYXJyYXkoZnJvbSwgaGFyZF9jdXJyZW5jaWVzKSA9PSAtMSkgeworICAgICAgICBub3RpZnlfZmFpbCgiV2UgZG8gbm90IGJ1eSBzb2Z0IGN1cnJlbmNpZXMhXG4iKTsKKyAgICAgICAgcmV0dXJuIDA7CisgICAgfQorICAgIC4uLgorfQorCitUaGlzIGNvZGUgYXNzdW1lcyBoYXJkX2N1cnJlbmNpZXMgaXMgYSBnbG9iYWwgdmFyaWFibGUgYW5kIGlzIGluaXRpYWxpemVkCitpbiBjcmVhdGUoKSBhczoKKyAgICBoYXJkX2N1cnJlbmNpZXMgPSAoeyAicGxhdGludW0iLCAiZ29sZCIsICJlbGVjdHJ1bSIsICJzaWx2ZXIiLAorICAgImNvcHBlciIgfSk7CitJZGVhbGx5LCB5b3Ugd291bGQgaGF2ZSBoYXJkIGN1cnJlbmNpZXMgYXMgYSAjZGVmaW5lIGluIGEgaGVhZGVyIGZpbGUgZm9yCithbGwgb2JqZWN0cyB0byB1c2UsIGJ1dCAjZGVmaW5lIGlzIGEgdG9waWMgZm9yIGEgbGF0ZXIgY2hhcHRlci4KKworT25jZSB5b3Uga25vdyB3aGF0IHRoZSBtZW1iZXJfYXJyYXkoKSBlZnVuIGRvZXMsIHRoaXMgbWV0aG9kCitjZXJ0YWlubHkgaXMgbXVjaCBlYXNpZXIgdG8gcmVhZCBhcyB3ZWxsIGFzIGlzIG11Y2ggbW9yZSBlZmZpY2llbnQgYW5kCitlYXNpZXIgdG8gY29kZS4gIEluIGZhY3QsIHlvdSBjYW4gcHJvYmFibHkgZ3Vlc3Mgd2hhdCB0aGUKK21lbWJlcl9hcnJheSgpIGVmdW4gZG9lczogIEl0IHRlbGxzIHlvdSBpZiBhIGdpdmVuIHZhbHVlIGlzIGEgbWVtYmVyIG9mCit0aGUgYXJyYXkgaW4gcXVlc3Rpb24uICBTcGVjaWZpY2FsbHkgaGVyZSwgd2Ugd2FudCB0byBrbm93IGlmIHRoZSBjdXJyZW5jeQordGhlIHBsYXllciBpcyB0cnlpbmcgdG8gc2VsbCBpcyBhbiBlbGVtZW50IGluIHRoZSBoYXJkX2N1cmVuY2llcyBhcnJheS4gCitXaGF0IG1pZ2h0IGJlIGNvbmZ1c2luZyB0byB5b3UgaXMsIG5vdCBvbmx5IGRvZXMgbWVtYmVyX2FycmF5KCkgdGVsbCB1cworaWYgdGhlIHZhbHVlIGlzIGFuIGVsZW1lbnQgaW4gdGhlIGFycmF5LCBidXQgaXQgaW4gZmFjdCB0ZWxscyB1cyB3aGljaCBlbGVtZW50CitvZiB0aGUgYXJyYXkgdGhlIHZhbHVlIGlzLgorCitIb3cgZG9lcyBpdCB0ZWxsIHlvdSB3aGljaCBlbGVtZW50PyAgSXQgaXMgZWFzaWVyIHRvIHVuZGVyc3RhbmQgYXJyYXlzIGlmCit5b3UgdGhpbmsgb2YgdGhlIGFycmF5IHZhcmlhYmxlIGFzIGhvbGRpbmcgYSBudW1iZXIuICBJbiB0aGUgdmFsdWUgYWJvdmUsCitmb3IgdGhlIHNha2Ugb2YgYXJndW1lbnQsIHdlIHdpbGwgc2F5IHRoYXQgaGFyZF9jdXJyZW5jaWVzIGhvbGRzIHRoZQordmFsdWUgMTc5MDAwLiAgVGhpcyB2YWx1ZSB0ZWxscyB0aGUgZHJpdmVyIHdoZXJlIHRvIGxvb2sgZm9yIHRoZSBhcnJheQoraGFyZF9jdXJyZW5jaWVzIHJlcHJlc2VudHMuICBUaHVzLCBoYXJkX2N1cnJlbmNpZXMgcG9pbnRzIHRvIGEgcGxhY2UKK3doZXJlIHRoZSBhcnJheSB2YWx1ZXMgbWF5IGJlIGZvdW5kLiAgV2hlbiBzb21lb25lIGlzIHRhbGtpbmcgYWJvdXQKK3RoZSBmaXJzdCBlbGVtZW50IG9mIHRoZSBhcnJheSwgdGhleSB3YW50IHRoZSBlbGVtZW50IGxvY2F0ZWQgYXQgMTc5MDAwLiAKK1doZW4gdGhlIG9iamVjdCBuZWVkcyB0aGUgdmFsdWUgb2YgdGhlIHNlY29uZCBlbGVtZW50IG9mIHRoZSBhcnJheSwgaXQKK2xvb2tzIGF0IDE3OTAwMCArIG9uZSB2YWx1ZSwgdGhlbiAxNzkwMDAgcGx1cyB0d28gdmFsdWVzIGZvciB0aGUgdGhpcmQsCithbmQgc28gb24uICBXZSBjYW4gdGhlcmVmb3JlIGFjY2VzcyBpbmRpdmlkdWFsIGVsZW1lbnRzIG9mIGFuIGFycmF5IGJ5Cit0aGVpciBpbmRleCwgd2hpY2ggaXMgdGhlIG51bWJlciBvZiB2YWx1ZXMgYmV5b25kIHRoZSBzdGFydGluZyBwb2ludCBvZgordGhlIGFycmF5IHdlIG5lZWQgdG8gbG9vayB0byBmaW5kIHRoZSB2YWx1ZS4gIEZvciB0aGUgYXJyYXkKK2hhcmRfY3VycmVuY2llcyBhcnJheToKKyJwbGF0aW51bSIgaGFzIGFuIGluZGV4IG9mIDAuCisiZ29sZCIgaGFzIGFuIGluZGV4IG9mIDEuCisiZWxlY3RydW0iIGhhcyBhbiBpbmRleCBvZiAyLgorInNpbHZlciIgaGFzIGFuIGluZGV4IG9mIDMuCisiY29wcGVyIiBoYXMgYW4gaW5kZXggb2YgNC4KKworVGhlIGVmdW4gbWVtYmVyX2FycmF5KCkgdGh1cyByZXR1cm5zIHRoZSBpbmRleCBvZiB0aGUgZWxlbWVudCBiZWluZwordGVzdGVkIGlmIGl0IGlzIGluIHRoZSBhcnJheSwgb3IgLTEgaWYgaXQgaXMgbm90IGluIHRoZSBhcnJheS4gIEluIG9yZGVyIHRvCityZWZlcmVuY2UgYW4gaW5kaXZpZHVhbCBlbGVtZW50IGluIGFuIGFycmF5LCB5b3UgdXNlIGl0cyBpbmRleCBudW1iZXIgaW4KK3RoZSBmb2xsb3dpbmcgbWFubmVyOgorYXJyYXlfbmFtZVtpbmRleF9ub10KK0V4YW1wbGU6CitoYXJkX2N1cnJlbmNpZXNbM10KK3doZXJlIGhhcmRfY3VycmVuY2llc1szXSB3b3VsZCByZWZlciB0byAic2lsdmVyIi4KKworU28sIHlvdSBub3cgc2hvdWxkIG5vdyBzZXZlcmFsIHdheXMgaW4gd2hpY2ggYXJyYXlzIGFwcGVhciBlaXRoZXIgYXMKK2Egd2hvbGUgb3IgYXMgaW5kaXZpZHVhbCBlbGVtZW50cy4gIEFzIGEgd2hvbGUsIHlvdSByZWZlciB0byBhbiBhcnJheQordmFyaWFibGUgYnkgaXRzIG5hbWUgYW5kIGFuIGFycmF5IGNvbnN0YW50IGJ5IGVuY2xvc2luZyB0aGUgYXJyYXkgaW4gKHsgfSkKK2FuZCBzZXBhcmF0aW5nIGVsZW1lbnRzIGJ5ICwuICBJbmRpdmlkdWFsbHksIHlvdSByZWZlciB0byBhcnJheSB2YXJpYWJsZXMKK2J5IHRoZSBhcnJheSBuYW1lIGZvbGxvd2VkIGJ5IHRoZSBlbGVtZW50J3MgaW5kZXggbnVtYmVyIGVuY2xvc2VkIGluCitbXSwgYW5kIHRvIGFycmF5IGNvbnN0YW50cyBpbiB0aGUgc2FtZSB3YXkgeW91IHdvdWxkIHJlZmVyIHRvIHNpbXBsZSBkYXRhCit0eXBlcyBvZiB0aGUgc2FtZSB0eXBlIGFzIHRoZSBjb25zdGFudC4gIEV4YW1wbGVzOgorCitXaG9sZSBhcnJheXM6Cit2YXJpYWJsZTogIGFycgorY29uc3RhbnQ6ICh7ICJwbGF0aW51bSIsICJnb2xkIiwgImVsZWN0cnVtIiwgInNpbHZlciIsICJjb3BwZXIiIH0pCisKK0luZGl2aWR1YWwgbWVtYmVycyBvZiBhcnJheXM6Cit2YXJpYWJsZTogYXJyWzJdCitjb25zdGFudDogImVsZWN0cnVtIgorCitZb3UgY2FuIHVzZSB0aGVzZSBtZWFucyBvZiByZWZlcmVuY2UgdG8gZG8gYWxsIHRoZSB0aGluZ3MgeW91IGFyZSB1c2VkIHRvCitkb2luZyB3aXRoIG90aGVyIGRhdGEgdHlwZXMuICBZb3UgY2FuIGFzc2lnbiB2YWx1ZXMsIHVzZSB0aGUgdmFsdWVzIGluCitvcGVyYXRpb25zLCBwYXNzIHRoZSB2YWx1ZXMgYXMgcGFyYW1ldGVycyB0byBmdW5jdGlvbnMsIGFuZCB1c2UgdGhlCit2YWx1ZXMgYXMgcmV0dXJuIHR5cGVzLiAgSXQgaXMgaW1wb3J0YW50IHRvIHJlbWVtYmVyIHRoYXQgd2hlbiB5b3UgYXJlCit0cmVhdGluZyBhbiBlbGVtZW50IGFsb25lIGFzIGFuIGluZGl2aWR1YWwsIHRoZSBpbmRpdmlkdWFsIGVsZW1lbnQgaXMgbm90CitpdHNlbGYgYW4gYXJyYXkgKHVubGVzcyB5b3UgYXJlIGRlYWxpbmcgd2l0aCBhbiBhcnJheSBvZiBhcnJheXMpLiAgSW4gdGhlCitleGFtcGxlIGFib3ZlLCB0aGUgaW5kaXZpZHVhbCBlbGVtZW50cyBhcmUgc3RyaW5ncy4gIFNvIHRoYXQ6CisgICAgc3RyID0gYXJyWzNdICsgIiBhbmQgIiArIGFyclsxXTsKK3dpbGwgY3JlYXRlIHN0ciB0byBlcXVhbCAic2lsdmVyIGFuZCBnb2xkIi4gIEFsdGhvdWdoIHRoaXMgc2VlbXMgc2ltcGxlCitlbm91Z2gsIG1hbnkgcGVvcGxlIG5ldyB0byBhcnJheXMgc3RhcnQgdG8gcnVuIGludG8gdHJvdWJsZSB3aGVuIHRyeWluZwordG8gYWRkIGVsZW1lbnRzIHRvIGFuIGFycmF5LiAgV2hlbiB5b3UgYXJlIHRyZWF0aW5nIGFuIGFycmF5IGFzIGEgd2hvbGUKK2FuZCB5b3Ugd2lzaCB0byBhZGQgYSBuZXcgZWxlbWVudCB0byBpdCwgeW91IG11c3QgZG8gaXQgYnkgYWRkaW5nCithbm90aGVyIGFycmF5LgorCitOb3RlIHRoZSBmb2xsb3dpbmcgZXhhbXBsZToKK3N0cmluZyBzdHIxLCBzdHIyOworc3RyaW5nICphcnI7CisKK3N0cjEgPSAiaGkiOworc3RyMiA9ICJieWUiOworLyogc3RyMSArIHN0cjIgZXF1YWxzICJoaWJ5ZSIgKi8KK2FyciA9ICh7IHN0cjEgfSkgKyAoeyBzdHIyIH0pOworLyogYXJyIGlzIGVxdWFsIHRvICh7IHN0cjEsIHN0cjIgfSkgKi8KK0JlZm9yZSBnb2luZyBhbnkgZnVydGhlciwgSSBoYXZlIHRvIG5vdGUgdGhhdCB0aGlzIGV4YW1wbGUgZ2l2ZXMgYW4KK2V4dHJlbWVseSBob3JyaWJsZSB3YXkgb2YgYnVpbGRpbmcgYW4gYXJyYXkuICBZb3Ugc2hvdWxkIHNldCBpdDogYXJyID0gKHsKK3N0cjEsIHN0cjIgfSkuICBUaGUgcG9pbnQgb2YgdGhlIGV4YW1wbGUsIGhvd2V2ZXIsIGlzIHRoYXQgeW91IG11c3QgYWRkCitsaWtlIHR5cGVzIHRvZ2V0aGVyLiAgSWYgeW91IHRyeSBhZGRpbmcgYW4gZWxlbWVudCB0byBhbiBhcnJheSBhcyB0aGUgZGF0YQordHlwZSBpdCBpcywgeW91IHdpbGwgZ2V0IGFuIGVycm9yLiAgSW5zdGVhZCB5b3UgaGF2ZSB0byB0cmVhdCBpdCBhcyBhbiBhcnJheSBvZgorYSBzaW5nbGUgZWxlbWVudC4KKworMy41IE1hcHBpbmdzCitPbmUgb2YgdGhlIG1ham9yIGFkdmFuY2VzIG1hZGUgaW4gTFBNdWRzIHNpbmNlIHRoZXkgd2VyZSBjcmVhdGVkIGlzCit0aGUgbWFwcGluZyBkYXRhIHR5cGUuICBQZW9wbGUgYWx0ZXJuYXRlbHkgcmVmZXIgdG8gdGhlbSBhcyBhc3NvY2lhdGl2ZQorYXJyYXlzLiAgUHJhY3RpY2FsbHkgc3BlYWtpbmcsIGEgbWFwcGluZyBhbGxvd3MgeW91IGZyZWVkb20gZnJvbSB0aGUKK2Fzc29jaWF0aW9uIG9mIGEgbnVtZXJpY2FsIGluZGV4IHRvIGEgdmFsdWUgd2hpY2ggYXJyYXlzIHJlcXVpcmUuIAorSW5zdGVhZCwgbWFwcGluZ3MgYWxsb3cgeW91IHRvIGFzc29jaWF0ZSB2YWx1ZXMgd2l0aCBpbmRpY2VzIHdoaWNoCithY3R1YWxseSBoYXZlIG1lYW5pbmcgdG8geW91LCBtdWNoIGxpa2UgYSByZWxhdGlvbmFsIGRhdGFiYXNlLgorCitJbiBhbiBhcnJheSBvZiA1IGVsZW1lbnRzLCB5b3UgYWNjZXNzIHRob3NlIHZhbHVlcyBzb2xlbHkgYnkgdGhlaXIgaW50ZWdlcgoraW5kaWNlcyB3aGljaCBjb3ZlciB0aGUgcmFuZ2UgMCB0byA0LiAgSW1hZ2luZSBnb2luZyBiYWNrIHRvIHRoZSBleGFtcGxlCitvZiBtb25leSBhZ2Fpbi4gIFBsYXllcnMgaGF2ZSBtb25leSBvZiBkaWZmZXJlbnQgYW1vdW50cyBhbmQgZGlmZmVyZW50Cit0eXBlcy4gIEluIHRoZSBwbGF5ZXIgb2JqZWN0LCB5b3UgbmVlZCBhIHdheSB0byBzdG9yZSB0aGUgdHlwZXMgb2YgbW9uZXkKK3RoYXQgZXhpc3QgYXMgd2VsbCBhcyByZWxhdGUgdGhlbSB0byB0aGUgYW1vdW50IG9mIHRoYXQgY3VycmVuY3kgdHlwZSB0aGUKK3BsYXllciBoYXMuICBUaGUgYmVzdCB3YXkgdG8gZG8gdGhpcyB3aXRoIGFycmF5cyB3b3VsZCBoYXZlIGJlZW4gdG8KK3N0b3JlIGFuIGFycmF5IG9mIHN0cmluZ3MgcmVwcmVzZW50aW5nIG1vbmV5IHR5cGVzIGFuZCBhbiBhcnJheSBvZgoraW50ZWdlcnMgcmVwcmVzZW50aW5nIHZhbHVlcyBpbiB0aGUgcGxheWVyIG9iamVjdC4gIFRoaXMgd291bGQgcmVzdWx0IGluCitDUFUtZWF0aW5nIHVnbHkgY29kZSBsaWtlIHRoaXM6CisKK2ludCBxdWVyeV9tb25leShzdHJpbmcgdHlwZSkgeworICAgIGludCBpOworCisgICAgaSA9IG1lbWJlcl9hcnJheSh0eXBlLCBjdXJyZW5jaWVzKTsKKyAgICBpZihpPi0xICYmIGkgPCBzaXplb2YoYW1vdW50cykpICAvKiBzaXplb2YgZWZ1bgorcmV0dXJucyAjIG9mIGVsZW1lbnRzICovCisgICAgICAgIHJldHVybiBhbW91bnRzW2ldOworICAgIGVsc2UgcmV0dXJuIDA7Cit9CisKK0FuZCB0aGF0IGlzIGEgc2ltcGxlIHF1ZXJ5IGZ1bmN0aW9uLiAgTG9vayBhdCBhbiBhZGQgZnVuY3Rpb246CisKK3ZvaWQgYWRkX21vbmV5KHN0cmluZyB0eXBlLCBpbnQgYW10KSB7CisgICAgc3RyaW5nICp0bXAxOworICAgIGludCAqIHRtcDI7CisgICAgaW50IGksIHgsIGosIG1heGo7CisgICAgCisgICAgaSA9IG1lbWJlcl9hcnJheSh0eXBlLCBjdXJyZW5jaWVzKTsKKyAgICBpZihpID49IHNpemVvZihhbW91bnRzKSkgLyogIGNvcnJ1cHQgZGF0YSwgd2UgYXJlIGluCisgICAgICBhIGJhZCB3YXkgKi8KKyAgICAgICAgcmV0dXJuOworICAgIGVsc2UgaWYoaT09IC0xKSB7CisgICAgICAgIGN1cnJlbmNpZXMgKz0gKHsgdHlwZSB9KTsKKyAgICAgICAgYW1vdW50cyArPSAoeyBhbXQgfSk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisgICAgZWxzZSB7CisgICAgICAgIGFtb3VudHNbaV0gKz0gYW10OworICAgICAgICBpZihhbW91bnRzW2ldIDwgMSkgeworICAgICAgICAgICAgdG1wMSA9IGFsbG9jYXRlKHNpemVvZihjdXJyZW5jaWVzKS0xKTsKKyAgICAgICAgICAgIHRtcDIgPSBhbGxvY2F0ZShzaXplb2YoYW1vdW50cyktMSk7CisgICAgICAgICAgICBmb3Ioaj0wLCB4ID0wLCBtYXhqPXNpemVvZih0bXAxKTsgaiA8IG1heGo7CisgICAgICAgICAgICAgIGorKykgeworICAgICAgICAgICAgICAgIGlmKGo9PWkpIHggPSAxOworICAgICAgICAgICAgICAgIHRtcDFbal0gPSBjdXJyZW5jaWVzW2oreF07CisgICAgICAgICAgICAgICAgdG1wMltqXSA9IGFtb3VudHNbait4XTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGN1cnJlbmNpZXMgPSB0bXAxOworICAgICAgICAgICAgYW1vdW50cyA9IHRtcDI7CisgICAgICAgIH0KKyAgICB9Cit9CisKK1RoYXQgaXMgcmVhbGx5IHNvbWUgbmFzdHkgY29kZSB0byBwZXJmb3JtIHRoZSByYXRoZXIgc2ltcGxlIGNvbmNlcHQgb2YKK2FkZGluZyBzb21lIG1vbmV5LiAgRmlyc3QsIHdlIGZpZ3VyZSBvdXQgaWYgdGhlIHBsYXllciBoYXMgYW55IG9mIHRoYXQKK2tpbmQgb2YgbW9uZXksIGFuZCBpZiBzbywgd2hpY2ggZWxlbWVudCBvZiB0aGUgY3VycmVuY2llcyBhcnJheSBpdCBpcy4gCitBZnRlciB0aGF0LCB3ZSBoYXZlIHRvIGNoZWNrIHRvIHNlZSB0aGF0IHRoZSBpbnRlZ3JpdHkgb2YgdGhlIGN1cnJlbmN5IGRhdGEKK2hhcyBiZWVuIG1haW50YWluZWQuICBJZiB0aGUgaW5kZXggb2YgdGhlIHR5cGUgaW4gdGhlIGN1cnJlbmNpZXMgYXJyYXkgaXMKK2dyZWF0ZXIgdGhhbiB0aGUgaGlnaGVzdCBpbmRleCBvZiB0aGUgYW1vdW50cyBhcnJheSwgdGhlbiB3ZSBoYXZlIGEKK3Byb2JsZW0gc2luY2UgdGhlIGluZGljZXMgYXJlIG91ciBvbmx5IHdheSBvZiByZWxhdGluZyB0aGUgdHdvIGFycmF5cy4gCitPbmNlIHdlIGtub3cgb3VyIGRhdGEgaXMgaW4gdGFjdCwgaWYgdGhlIGN1cnJlbmN5IHR5cGUgaXMgbm90IGN1cnJlbnRseQoraGVsZCBieSB0aGUgcGxheWVyLCB3ZSBzaW1wbHkgdGFjayBvbiB0aGUgdHlwZSBhcyBhIG5ldyBlbGVtZW50IHRvIHRoZQorY3VycmVuY2llcyBhcnJheSBhbmQgdGhlIGFtb3VudCBhcyBhIG5ldyBlbGVtZW50IHRvIHRoZSBhbW91bnRzIGFycmF5LiAKK0ZpbmFsbHksIGlmIGl0IGlzIGEgY3VycmVuY3kgdGhlIHBsYXllciBjdXJyZW50bHkgaGFzLCB3ZSBqdXN0IGFkZCB0aGUKK2Ftb3VudCB0byB0aGUgY29ycmVzcG9uZGluZyBpbmRleCBpbiB0aGUgYW1vdW50cyBhcnJheS4gIElmIHRoZSBtb25leQorZ2V0cyBiZWxvdyAxLCBtZWFuaW5nIGhhdmluZyBubyBtb25leSBvZiB0aGF0IHR5cGUsIHdlIHdhbnQgdG8gY2xlYXIKK3RoZSBjdXJyZW5jeSBvdXQgb2YgbWVtb3J5LgorCitTdWJ0cmFjdGluZyBhbiBlbGVtZW50IGZyb20gYW4gYXJyYXkgaXMgbm8gc2ltcGxlIG1hdHRlci4gIFRha2UsIGZvcgorZXhhbXBsZSwgdGhlIHJlc3VsdCBvZiB0aGUgZm9sbG93aW5nOgorCitzdHJpbmcgKmFycjsKKworYXJyID0gKHsgImEiLCAiYiIsICJhIiB9KTsKK2FyciAtPSAoeyBhcnJbMl0gfSk7CisKK1doYXQgZG8geW91IHRoaW5rIHRoZSBmaW5hbCB2YWx1ZSBvZiBhcnIgaXM/IFdlbGwsIGl0IGlzOgorICAgICh7ICJiIiwgImEiIH0pCitTdWJ0cmFjdGluZyBhcnJbMl0gZnJvbSB0aGUgb3JpZ2luYWwgYXJyYXkgZG9lcyBub3QgcmVtb3ZlIHRoZSB0aGlyZAorZWxlbWVudCBmcm9tIHRoZSBhcnJheS4gIEluc3RlYWQsIGl0IHN1YnRyYWN0cyB0aGUgdmFsdWUgb2YgdGhlIHRoaXJkCitlbGVtZW50IG9mIHRoZSBhcnJheSBmcm9tIHRoZSBhcnJheS4gIEFuZCBhcnJheSBzdWJ0cmFjdGlvbiByZW1vdmVzIHRoZQorZmlyc3QgaW5zdGFuY2Ugb2YgdGhlIHZhbHVlIGZyb20gdGhlIGFycmF5LiAgU2luY2Ugd2UgZG8gbm90IHdhbnQgdG8gYmUKKzwqIE5PVEUgSGlnaGxhbmRlckBNb3JnZW5HcmF1ZW4gMTEuMi45NDoKKwlXUk9ORyBpbiBNb3JnZW5HcmF1ZW4gKGF0IGxlYXN0KS4gVGhlIHJlc3VsdCBpcyBhY3R1YWxseSAoeyAiYiIgfSkuIEFycmF5CisJc3VidHJhY3Rpb24gcmVtb3ZlcyBBTEwgaW5zdGFuY2VzIG9mIHRoZSBzdWJ0cmFjdGVkIHZhbHVlIGZyb20gdGhlIGFycmF5LgorCVRoaXMgaG9sZHMgdHJ1ZSBmb3IgYWxsIEFteWxhYXItZHJpdmVyIExQTXVkcy4KKyo+Citmb3JjZWQgb24gY291bnRpbmcgb24gdGhlIGVsZW1lbnRzIG9mIHRoZSBhcnJheSBhcyBiZWluZyB1bmlxdWUsIHdlIGFyZQorZm9yY2VkIHRvIGdvIHRocm91Z2ggc29tZSBzb21lcnNhdWx0cyB0byByZW1vdmUgdGhlIGNvcnJlY3QgZWxlbWVudAorZnJvbSBib3RoIGFycmF5cyBpbiBvcmRlciB0byBtYWludGFpbiB0aGUgY29ycmVzcG9uZGVuY2Ugb2YgdGhlIGluZGljZXMKK2luIHRoZSB0d28gYXJyYXlzLgorCitNYXBwaW5ncyBwcm92aWRlIGEgYmV0dGVyIHdheS4gIFRoZXkgYWxsb3cgeW91IHRvIGRpcmVjdGx5IGFzc29jaWF0ZSB0aGUKK21vbmV5IHR5cGUgd2l0aCBpdHMgdmFsdWUuICBTb21lIHBlb3BsZSB0aGluayBvZiBtYXBwaW5ncyBhcyBhcnJheXMKK3doZXJlIHlvdSBhcmUgbm90IHJlc3RyaWN0ZWQgdG8gaW50ZWdlcnMgYXMgaW5kaWNlcy4gIFRydXRoIGlzLCBtYXBwaW5ncworYXJlIGFuIGVudGlyZWx5IGRpZmZlcmVudCBjb25jZXB0IGluIHN0b3JpbmcgYWdncmVnYXRlIGluZm9ybWF0aW9uLiAgQXJyYXlzCitmb3JjZSB5b3UgdG8gY2hvb3NlIGFuIGluZGV4IHdoaWNoIGlzIG1lYW5pbmdmdWwgdG8gdGhlIG1hY2hpbmUgZm9yCitsb2NhdGluZyB0aGUgYXBwcm9wcmlhdGUgZGF0YS4gIFRoZSBpbmRpY2VzIHRlbGwgdGhlIG1hY2hpbmUgaG93IG1hbnkKK2VsZW1lbnRzIGJleW9uZCB0aGUgZmlyc3QgdmFsdWUgdGhlIHZhbHVlIHlvdSBkZXNpcmUgY2FuIGJlIGZvdW5kLiAgV2l0aAorbWFwcGluZ3MsIHlvdSBjaG9vc2UgaW5kaWNlcyB3aGljaCBhcmUgbWVhbmluZ2Z1bCB0byB5b3Ugd2l0aG91dAord29ycnlpbmcgYWJvdXQgaG93IHRoYXQgbWFjaGluZSBsb2NhdGVzIGFuZCBzdG9yZXMgaXQuCisKK1lvdSBtYXkgcmVjb2duaXplIG1hcHBpbmdzIGluIHRoZSBmb2xsb3dpbmcgZm9ybXM6CisKK2NvbnN0YW50IHZhbHVlczoKK3dob2xlOiAoWyBpbmRleDp2YWx1ZSwgaW5kZXg6dmFsdWUgXSkgRXg6IChbICJnb2xkIjoxMCwgInNpbHZlciI6MjAgXSkKK2VsZW1lbnQ6ICAxMAorCit2YXJpYWJsZSB2YWx1ZXM6Cit3aG9sZTogICAgbWFwICAgKHdoZXJlIG1hcCBpcyB0aGUgbmFtZSBvZiBhIG1hcHBpbmcgdmFyaWFibGUpCitlbGVtZW50OiBtYXBbImdvbGQiXQorCitTbyBub3cgbXkgbW9uZXRhcnkgZnVuY3Rpb25zIHdvdWxkIGxvb2sgbGlrZToKKworaW50IHF1ZXJ5X21vbmV5KHN0cmluZyB0eXBlKSB7IHJldHVybiBtb25leVt0eXBlXTsgfQorCit2b2lkIGFkZF9tb25leShzdHJpbmcgdHlwZSwgaW50IGFtdCkgeworICAgIGlmKCFtb25leVt0eXBlXSkgbW9uZXlbdHlwZV0gPSBhbXQ7CisgICAgZWxzZSBtb25leVt0eXBlXSArPSBhbXQ7CisgICAgaWYobW9uZXlbdHlwZV0gPCAxKQorICAgICAgbWFwX2RlbGV0ZShtb25leSwgdHlwZSk7ICAgICAgICAgIC8qIHRoaXMgaXMgZm9yCisgICAgICAgICAgTXVkT1MgKi8KKyAgICAgICAgICAgIC4uLk9SLi4uIAorICAgICAgICAgICAgbW9uZXkgPSBtX2RlbGV0ZShtb25leSwgdHlwZSkgIC8qIGZvciBzb21lCisgICAgICAgICAgTFBNdWQgMy4qIHZhcmlldGllcyAqLworICAgICAgICAgICAgLi4uIE9SLi4uIAorICAgICAgICAgbV9kZWxldGUobW9uZXksIHR5cGUpOyAgICAvKiBmb3Igb3RoZXIgTFBNdWQgMy4qCisgICAgICAgICAgdmFyaWV0aWVzICovCit9CisKK1BsZWFzZSBub3RpY2UgZmlyc3QgdGhhdCB0aGUgZWZ1bnMgZm9yIGNsZWFyaW5nIGEgbWFwcGluZyBlbGVtZW50IGZyb20gdGhlCittYXBwaW5nIHZhcnkgZnJvbSBkcml2ZXIgdG8gZHJpdmVyLiAgQ2hlY2sgd2l0aCB5b3VyIGRyaXZlcidzCitkb2N1bWVudGF0aW9uIGZvciB0aGUgZXhhY3QgbmFtZSBhbiBzeW50YXggb2YgdGhlIHJlbGV2YW50IGVmdW4uCisKK0FzIHlvdSBjYW4gc2VlIGltbWVkaWF0ZWx5LCB5b3UgZG8gbm90IG5lZWQgdG8gY2hlY2sgdGhlIGludGVncml0eSBvZgoreW91ciBkYXRhIHNpbmNlIHRoZSB2YWx1ZXMgd2hpY2ggaW50ZXJlc3QgeW91IGFyZSBpbmV4dHJpY2FibHkgYm91bmQgdG8KK29uZSBhbm90aGVyIGluIHRoZSBtYXBwaW5nLiAgU2Vjb25kbHksIGdldHRpbmcgcmlkIG9mIHVzZWxlc3MgdmFsdWVzIGlzIGEKK3NpbXBsZSBlZnVuIGNhbGwgcmF0aGVyIHRoYW4gYSB0cmlja3ksIENQVS1lYXRpbmcgbG9vcC4gIEZpbmFsbHksIHRoZQorcXVlcnkgZnVuY3Rpb24gaXMgbWFkZSB1cCBzb2xlbHkgb2YgYSByZXR1cm4gaW5zdHJ1Y3Rpb24uIAorCitZb3UgbXVzdCBkZWNsYXJlIGFuZCBpbml0aWFsaXplIGFueSBtYXBwaW5nIGJlZm9yZSB1c2luZyBpdC4gCitEZWNsYXJhdGlvbnMgbG9vayBsaWtlOgorbWFwcGluZyBtYXA7CitXaGVyZWFzIGNvbW1vbiBpbml0aWFsaXphdGlvbnMgbG9vayBsaWtlOgorbWFwID0gKFtdKTsKK21hcCA9IG1fYWxsb2NhdGUoMTApICAgLi4uT1IuLi4gICBtYXAgPSBtX2FsbG9jYXRlKDEwKTsKK21hcCA9IChbICJnb2xkIjogMjAsICJzaWx2ZXIiOiAxNSBdKTsKKworQXMgd2l0aCBvdGhlciBkYXRhIHR5cGVzLCB0aGVyZSBhcmUgcnVsZXMgZGVmaW5pbmcgaG93IHRoZXkgd29yayBpbgorY29tbW9uIG9wZXJhdGlvbnMgbGlrZSBhZGRpdGlvbiBhbmQgc3VidHJhY3Rpb246CisgICAgKFsgImdvbGQiOjIwLCAic2lsdmVyIjozMCBdKSArIChbICJlbGVjdHJ1bSI6NSBdKSAKK2dpdmVzOgorICAgIChbImdvbGQiOjIwLCAic2lsdmVyIjozMCwgImVsZWN0cnVtIjo1XSkgICAKK0FsdGhvdWdoIG15IGRlbW9uc3RyYXRpb24gc2hvd3MgYSBjb250aW51aXR5IG9mIG9yZGVyLCB0aGVyZSBpcyBpbiBmYWN0CitubyBndWFyYW50ZWUgb2YgdGhlIG9yZGVyIGluIHdoaWNoIGVsZW1lbnRzIG9mIG1hcHBpbmdzIHdpbGwgc3RvcmVkLiAKK0VxdWl2YWxlbmNlIHRlc3RzIGFtb25nIG1hcHBpbmdzIGFyZSB0aGVyZWZvcmUgbm90IGEgZ29vZCB0aGluZy4KKworMy42IFN1bW1hcnkKK01hcHBpbmdzIGFuZCBhcnJheXMgY2FuIGJlIGJ1aWx0IGFzIGNvbXBsZXggYXMgeW91IG5lZWQgdGhlbSB0byBiZS4gCitZb3UgY2FuIGhhdmUgYW4gYXJyYXkgb2YgbWFwcGluZ3Mgb2YgYXJyYXlzLiAgU3VjaCBhIHRoaW5nIHdvdWxkIGJlCitkZWNsYXJlZCBsaWtlIHRoaXM6CisKK21hcHBpbmcgKm1hcF9vZl9hcnJzOword2hpY2ggbWlnaHQgbG9vayBsaWtlOgorKHsgKFsgaW5kMTogKHsgdmFsQTEsIHZhbEEyfSksIGluZDI6ICh7dmFsQjEsIHZhbEIyfSkgXSksIChbIGluZFg6Cisoe3ZhbFgxLHZhbFgyfSkgXSkgfSkKKworTWFwcGluZ3MgbWF5IHVzZSBhbnkgZGF0YSB0eXBlIGFzIGFuIGluZGV4LCBpbmNsdWRpbmcgb2JqZWN0cy4gCitNYXBwaW5nIGluZGljZXMgYXJlIG9mdGVuIHJlZmVycmVkIHRvIGFzIGtleXMgYXMgd2VsbCwgYSB0ZXJtIGZyb20KK2RhdGFiYXNlcy4gIEFsd2F5cyBrZWVwIGluIG1pbmQgdGhhdCB3aXRoIGFueSBub24taW50ZWdlciBkYXRhIHR5cGUsCit5b3UgbXVzdCBmaXJzdCBpbml0aWFsaXplIGEgdmFyaWFibGUgYmVmb3JlIG1ha2luZyB1c2Ugb2YgaXQgaW4gY29tbW9uCitvcGVyYXRpb25zIHN1Y2ggYXMgYWRkaXRpb24gYW5kIHN1YnRyYWN0aW9uLiAgSW4gc3BpdGUgb2YgdGhlIGVhc2UgYW5kCitkeW5hbWljcyBhZGRlZCB0byBMUEMgY29kaW5nIGJ5IG1hcHBpbmdzIGFuZCBhcnJheXMsIGVycm9ycyBjYXVzZWQKK2J5IGZhaWxpbmcgdG8gaW5pdGlhbGl6ZSB0aGVpciB2YWx1ZXMgY2FuIGJlIHRoZSBtb3N0IG1hZGRlbmluZyBleHBlcmllbmNlCitmb3IgcGVvcGxlIG5ldyB0byB0aGVzZSBkYXRhIHR5cGVzLiAgSSB3b3VsZCB2ZW50dXJlIHRoYXQgYSB2ZXJ5IGhpZ2gKK3BlcmNlbnRhZ2Ugb2YgYWxsIGVycm9ycyBwZW9wbGUgZXhwZXJpbWVudGluZyB3aXRoIG1hcHBpbmdzIGFuZCBhcnJheXMKK2ZvciB0aGUgZmlyc3QgdGltZSBlbmNvdW50ZXIgYXJlIG9uZSBvZiB0aHJlZSBlcnJvciBtZXNzYWdlczoKKwlJbmRleGluZyBvbiBpbGxlZ2FsIHR5cGUuCisJSWxsZWdhbCBpbmRleC4KKwlCYWQgYXJndW1lbnQgMSB0byAoKyArPSAtIC09KSAvKiBpbnNlcnQgeW91ciBmYXZvdXJpdGUgb3BlcmF0b3IgKi8KK0Vycm9yIG1lc3NhZ2VzIDEgYW5kIDMgYXJlIGRhcm4gbmVhciBhbG1vc3QgYWx3YXlzIGNhdXNlZCBieSBhIGZhaWx1cmUKK3RvIGluaXRpYWxpemUgdGhlIGFycmF5IG9yIG1hcHBpbmcgaW4gcXVlc3Rpb24uICBFcnJvciBtZXNzYWdlIDIgaXMgY2F1c2VkCitnZW5lcmFsbHkgd2hlbiB5b3UgYXJlIHRyeWluZyB0byB1c2UgYW4gaW5kZXggaW4gYW4gaW5pdGlhbGl6ZWQgYXJyYXkKK3doaWNoIGRvZXMgbm90IGV4aXN0LiAgQWxzbywgZm9yIGFycmF5cywgb2Z0ZW4gcGVvcGxlIG5ldyB0byBhcnJheXMgd2lsbAorZ2V0IGVycm9yIG1lc3NhZ2UgMyBiZWNhdXNlIHRoZXkgdHJ5IHRvIGFkZCBhIHNpbmdsZSBlbGVtZW50IHRvIGFuIGFycmF5CitieSBhZGRpbmcgdGhlIGluaXRpYWwgYXJyYXkgdG8gdGhlIHNpbmdsZSBlbGVtZW50IHZhbHVlIGluc3RlYWQgb2YgYWRkaW5nCithbiBhcnJheSBvZiB0aGUgc2luZ2xlIGVsZW1lbnQgdG8gdGhlIGluaXRpYWwgYXJyYXkuICBSZW1lbWJlciwgYWRkIG9ubHkKK2FycmF5cyB0byBhcnJheXMuCisKK0F0IHRoaXMgcG9pbnQsIHlvdSBzaG91bGQgZmVlbCBjb21mb3J0YWJsZSBlbm91Z2ggd2l0aCBtYXBwaW5ncyBhbmQKK2FycmF5cyB0byBwbGF5IHdpdGggdGhlbS4gIEV4cGVjdCB0byBlbmNvdW50ZXIgdGhlIGFib3ZlIGVycm9yIG1lc3NhZ2VzCithIGxvdCB3aGVuIGZpcnN0IHBsYXlpbmcgd2l0aCB0aGVzZS4gIFRoZSBrZXkgdG8gc3VjY2VzcyB3aXRoIG1hcHBpbmdzIGlzCitpbiBkZWJ1Z2dpbmcgYWxsIG9mIHRoZXNlIGVycm9ycyBhbmQgc2VlaW5nIGV4YWN0bHkgd2hhdCBjYXVzZXMgd2hvbGVzCitpbiB5b3VyIHByb2dyYW1taW5nIHdoaWNoIGFsbG93IHlvdSB0byB0cnkgdG8gd29yayB3aXRoIHVuaW5pdGlhbGl6ZWQKK21hcHBpbmdzIGFuZCBhcnJheXMuICBGaW5hbGx5LCBnbyBiYWNrIHRocm91Z2ggdGhlIGJhc2ljIHJvb20gY29kZSBhbmQKK2xvb2sgYXQgdGhpbmdzIGxpa2UgdGhlIHNldF9leGl0cygpIChvciB0aGUgZXF1aXZhbGVudCBvbiB5b3VyIG11ZGxpYikKK2Z1bmN0aW9uLiAgQ2hhbmNlcyBhcmUgaXQgbWFrZXMgdXNlIG9mIG1hcHBpbmdzLiAgSW4gc29tZSBpbnN0YW5jZXMsIGl0Cit3aWxsIHVzZSBhcnJheXMgYXMgd2VsbCBmb3IgY29tcGF0aWJpbGl0eSB3aXRoIG11ZGxpYi5uLgorCitDb3B5cmlnaHQgKGMpIEdlb3JnZSBSZWVzZSAxOTkzCmRpZmYgLS1naXQgYS9kb2MvS1VSUy9MUEMtS1VSUzIvY2hhcHRlcjQgYi9kb2MvS1VSUy9MUEMtS1VSUzIvY2hhcHRlcjQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYzNlOTkwNQotLS0gL2Rldi9udWxsCisrKyBiL2RvYy9LVVJTL0xQQy1LVVJTMi9jaGFwdGVyNApAQCAtMCwwICsxLDE5NSBAQAorSW50ZXJtZWRpYXRlIExQQworRGVzY2FydGVzIG9mIEJvcmcKK05vdmVtYmVyIDE5OTMKKworICAgICAgICAgICAgICAgICAgICAgICBDaGFwdGVyIDQ6IFRoZSBMUEMgUHJlLUNvbXBpbGVyCisKKzQuMSBSZXZpZXcKK1RoZSBwcmV2aW91cyBjaGFwdGVyIHdhcyBxdWl0ZSBoZWF2eSwgc28gbm93IEkgd2lsbCBzbG93IGRvd24gYSBiaXQgc28KK3lvdSBjYW4gZGlnZXN0IGFuZCBwbGF5IHdpdGggbWFwcGluZ3MgYW5kIGFycmF5cyBieSB0YWtpbmcgb24gdGhlCityYXRoZXIgc2ltcGxlIHRvcGljIG9mIHRoZSBMUEMgcHJlLWNvbXBpbGVyLiAgQnkgdGhpcyBwb2ludCwgaG93ZXZlciwKK3lvdSBzaG91bGQgd2VsbCB1bmRlcnN0YW5kIGhvdyB0aGUgZHJpdmVyIGludGVyYWN0cyB3aXRoIHRoZSBtdWRsaWIgYW5kCitiZSBhYmxlIHRvIGNvZGUgb2JqZWN0cyB3aGljaCB1c2UgY2FsbCBvdXRzIGFuZCBoZWFydCBiZWF0cy4gIEluIGFkZGl0aW9uLAoreW91IHNob3VsZCBiZSBjb2Rpbmcgc2ltcGxlIG9iamVjdHMgd2hpY2ggdXNlIG1hcHBpbmdzIGFuZCBhcnJheXMsCitub3RpbmcgaG93IHRoZXNlIGRhdGEgdHlwZXMgcGVyZm9ybSBpbiBvYmplY3RzLiAgSXQgaXMgYWxzbyBhIGdvb2QgaWRlYSB0bworc3RhcnQgbG9va2luZyBpbiBkZXRhaWwgYXQgdGhlIGFjdHVhbCBtdWRsaWIgY29kZSB0aGF0IG1ha2VzIHVwIHlvdXIgbXVkLiAKK1NlZSBpZiB5b3UgdW5kZXJzdGFuZCBldmVyeXRoaW5nIHdoaWNoIGlzIGdvaW5nIG9uIGluIHlvdXIgbXVkbGlicworcm9vbSBhbmQgbW9uc3RlciBjb2Rlcy4gIEZvciB0aGluZ3MgeW91IGRvIG5vdCB1bmRlcnN0YW5kLCBhc2sgdGhlCitwZW9wbGUgb24geW91ciBtdWQgZGVzaWduYXRlZCB0byBhbnN3ZXIgY3JlYXRvciBjb2RpbmcgcXVlc3Rpb25zLgorCitQcmUtY29tcGlsZXIgaXMgYWN0dWFsbHkgYSBiaXQgb2YgYSBtaXNub21lciBzaW5jZSBMUEMgY29kZSBpcyBuZXZlcgordHJ1bHkgY29tcGlsZWQuICBBbHRob3VnaCB0aGlzIGlzIGNoYW5naW5nIHdpdGggcHJvdG90eXBlcyBvZiBuZXdlcgorTFBDIGRyaXZlcnMsIExQQyBkcml2ZXJzIGludGVycHJldCB0aGUgTFBDIGNvZGUgd3JpdHRlbiBieSBjcmVhdG9ycworcmF0aGVyIHRoYW4gY29tcGlsZSBpdCBpbnRvIGJpbmFyeSBmb3JtYXQuICBOZXZlcnRoZWxlc3MsIHRoZSBMUEMgcHJlLQorY29tcGlsZXIgZnVuY3Rpb25zIHN0aWxsIHBlcmZvcm0gbXVjaCBsaWtlIHByZS1jb21waWxlcnMgZm9yIGNvbXBpbGVkCitsYW5ndWFnZXMgaW4gdGhhdCBwcmUtY29tcGlsZXIgZGlyZWN0aXZlcyBhcmUgaW50ZXJwcmV0ZWQgYmVmb3JlIHRoZSBkcml2ZXIKK2V2ZW4gc3RhcnRzIHRvIGxvb2sgYXQgb2JqZWN0IGNvZGUuIAorCis0LjIgUHJlLWNvbXBpbGVyIERpcmVjdGl2ZXMKK0lmIHlvdSBkbyBub3Qga25vdyB3aGF0IGEgcHJlLWNvbXBpbGVyIGlzLCB5b3UgcmVhbGx5IGRvIG5vdCBuZWVkIHRvCit3b3JyeS4gIFdpdGggcmVzcGVjdCB0byBMUEMsIGl0IGlzIGJhc2ljYWxseSBhIHByb2Nlc3Mgd2hpY2ggaGFwcGVucworYmVmb3JlIHRoZSBkcml2ZXIgYmVnaW5zIHRvIGludGVycHJldCBMUEMgY29kZSB3aGljaCBhbGxvd3MgeW91IHRvCitwZXJmb3JtIGFjdGlvbnMgdXBvbiB0aGUgZW50aXJlIGNvZGUgZm91bmQgaW4geW91ciBmaWxlLiAgU2luY2UgdGhlIGNvZGUKK2lzIG5vdCB5ZXQgaW50ZXJwcmV0ZWQsIHRoZSBwcmUtY29tcGlsZXIgcHJvY2VzcyBpcyBpbnZvbHZlZCBiZWZvcmUgdGhlIGZpbGUKK2V4aXN0cyBhcyBhbiBvYmplY3QgYW5kIGJlZm9yZSBhbnkgTFBDIGZ1bmN0aW9ucyBvciBpbnN0cnVjdGlvbnMgYXJlIGV2ZXIKK2V4YW1pbmVkLiAgVGhlIHByZS1jb21waWxlciBpcyB0aHVzIHdvcmtpbmcgYXQgdGhlIGZpbGUgbGV2ZWwsIG1lYW5pbmcKK3RoYXQgaXQgZG9lcyBub3QgZGVhbCB3aXRoIGFueSBjb2RlIGluIGluaGVyaXRlZCBmaWxlcy4KKworVGhlIHByZS1jb21waWxlciBzZWFyY2hlcyBhIGZpbGUgc2VudCB0byBpdCBmb3IgcHJlLWNvbXBpbGVyIGRpcmVjdGl2ZXMuIAorVGhlc2UgYXJlIGxpdHRsZSBpbnN0cnVjdGlvbnMgaW4gdGhlIGZpbGUgbWVhbnQgb25seSBmb3IgdGhlIHByZS1jb21waWxlcgorYW5kIGFyZSBub3QgcmVhbGx5IHBhcnQgb2YgdGhlIExQQyBsYW5ndWFnZS4gIEEgcHJlLWNvbXBpbGVyIGRpcmVjdGl2ZSBpcworYW55IGxpbmUgaW4gYSBmaWxlIGJlZ2lubmluZyB3aXRoIGEgcG91bmQgKCMpIHNpZ24uICBQcmUtY29tcGlsZXIKK2RpcmVjdGl2ZXMgYXJlIGdlbmVyYWxseSB1c2VkIHRvIGNvbnN0cnVjdCB3aGF0IHRoZSBmaW5hbCBjb2RlIG9mIGEgZmlsZSB3aWxsCitsb29rIGF0LiAgVGhlIG1vc3QgY29tbW9uIHByZS1jb21waWxlciBkaXJlY3RpdmVzIGFyZToKKworI2RlZmluZQorI3VuZGVmaW5lCisjaW5jbHVkZQorI2lmZGVmCisjaWZuZGVmCisjaWYKKyNlbHNlaWYKKyNlbHNlCisjZW5kaWYKKyNwcmFnbWEKKworTW9zdCByZWFsbSBjb2RlcnMgb24gbXVkcyB1c2UgZXhjbHVzaXZlbHkgdGhlIGRpcmVjdGl2ZXMgI2RlZmluZSBhbmQKKyNpbmNsdWRlLiAgVGhlIG90aGVyIGRpcmVjdGl2ZXMgeW91IG1heSBzZWUgb2Z0ZW4gYW5kIHNob3VsZCB1bmRlcnN0YW5kCit3aGF0IHRoZXkgbWVhbiBldmVuIGlmIHlvdSBuZXZlciB1c2UgdGhlbS4KKworVGhlIGZpcnN0IHBhaXIgb2YgZGlyZWN0aXZlcyBhcmU6CisjZGVmaW5lCisjdW5kZWZpbmUKKworVGhlICNkZWZpbmUgZGlyZWN0aXZlIHNldHMgdXAgYSBzZXQgb2YgY2hhcmFjdGVycyB3aGljaCB3aWxsIGJlIHJlcGxhY2VkCithbnkgd2hlcmUgdGhleSBleGlzdCBpbiB0aGUgY29kZSBhdCBwcmVjb21waWxlciB0aW1lIHdpdGggdGhlaXIgZGVmaW5pdGlvbi4gCitGb3IgZXhhbXBsZSwgdGFrZToKKworI2RlZmluZSBPQl9VU0VSICIvc3RkL3VzZXIiCisKK1RoaXMgZGlyZWN0aXZlIGhhcyB0aGUgcHJlLWNvbXBpbGVyIHNlYXJjaCB0aGUgZW50aXJlIGZpbGUgZm9yIGluc3RhbmNlcyBvZgorT0JfVVNFUi4gIEV2ZXJ5d2hlcmUgaXQgc2VlcyBPQl9VU0VSLCBpdCByZXBsYWNlcyB3aXRoICIvc3RkL3VzZXIiLiAKKzwqIE5PVEUgSGlnaGxhbmRlckBNb3JnZW5HcmF1ZW4gMTEuMi45NDoKKwlXUk9ORy4gT0JfVVNFUiB3aWxsIF9ub3RfIGJlIHJlcGxhY2VkIGlmIHdpdGhpbiAiIiBpbiB3aGljaCBjYXNlIGl0IGlzCisJdHJlYXRlZCBhcyBhIG5vcm1hbCBzdHJpbmcuIFNvIGl0IGlzIHBvc3NpYmxlIHRvIHdyaXRlIHRoZSB0ZXh0IE9CX1VTRVIuCisqPgorTm90ZSB0aGF0IGl0IGRvZXMgbm90IG1ha2UgT0JfVVNFUiBhIHZhcmlhYmxlIGluIHRoZSBjb2RlLiAgVGhlIExQQworaW50ZXJwcmV0ZXIgbmV2ZXIgc2VlcyB0aGUgT0JfVVNFUiBsYWJlbC4gIEFzIHN0YXRlZCBhYm92ZSwgdGhlIHByZS0KK2NvbXBpbGVyIGlzIGEgcHJvY2VzcyB3aGljaCB0YWtlcyBwbGFjZSBiZWZvcmUgY29kZSBpbnRlcnByZXRhdGlvbi4gIFNvCit3aGF0IHlvdSB3cm90ZSBhczoKKworI2RlZmluZSBPQl9VU0VSICIvc3RkL3VzZXIiCisKK3ZvaWQgY3JlYXRlKCkgeworICAgIGlmKCFmaWxlX2V4aXN0cyhPQl9VU0VSKyIuYyIpKSB3cml0ZSgiTWVyZGUhIE5vIHVzZXIgZmlsZSEiKTsKKyAgICBlbHNlIHdyaXRlKCJHb29kISBVc2VyIGZpbGUgc3RpbGwgZXhpc3RzISIpOworfQorCit3b3VsZCBhcnJpdmUgYXQgdGhlIExQQyBpbnRlcnByZXRlciBhczoKKwordm9pZCBjcmVhdGUoKSB7CisgICAgaWYoIWZpbGVfZXhpc3RzKCIvc3RkL3VzZXIiKyIuYyIpKSB3cml0ZSgiTWVyZGUhIE5vIHVzZXIgZmlsZSEiKTsKKyAgICBlbHNlIHdyaXRlKCJHb29kISBVc2VyIGZpbGUgc3RpbGwgZXhpc3RzISIpOworfQorCis8KiBOT1RFIEhpZ2hsYW5kZXJATW9yZ2VuR3JhdWVuIDExLjIuOTQKKwlCdXQ6IHdyaXRlKCJUZXh0IGlzIE9CX1VTRVIgZm9vIGJhclxuIik7CisJc2ltcGx5IHdyaXRlcyAiVGV4dCBpcyBPQl9VU0VSIGZvbyBiYXIiLiBDb25mZXIgcHJldmlvdXMgbm90ZS4KKyo+CisKK1NpbXBseSBwdXQsICNkZWZpbmUganVzdCBsaXRlcmFsbHkgcmVwbGFjZXMgdGhlIGRlZmluZWQgbGFiZWwgd2l0aCB3aGF0ZXZlcgorZm9sbG93cyBpdC4gIFlvdSBtYXkgYWxzbyB1c2UgI2RlZmluZSBpbiBhIHNwZWNpYWwgaW5zdGFuY2Ugd2hlcmUgbm8KK3ZhbHVlIGZvbGxvd3MuICBUaGlzIGlzIGNhbGxlZCBhIGJpbmFyeSBkZWZpbml0aW9uLiAgRm9yIGV4YW1wbGU6CisKKyNkZWZpbmUgX19OSUdIVE1BUkUKKworZXhpc3RzIGluIHRoZSBjb25maWcgZmlsZSBmb3IgdGhlIE5pZ2h0bWFyZSBNdWRsaWIuICBUaGlzIGFsbG93cyBmb3IgcHJlLQorY29tcGlsZXIgdGVzdHMgd2hpY2ggd2lsbCBiZSBkZXNjcmliZWQgbGF0ZXIgaW4gdGhlIGNoYXB0ZXIuCisKK1RoZSBvdGhlciBwcmUtY29tcGlsZXIgZGlyZWN0aXZlIHlvdSBhcmUgbGlrZWx5IHRvIHVzZSBvZnRlbiBpcyAjaW5jbHVkZS4gCitBcyB0aGUgbmFtZSBpbXBsaWVzLCAjaW5jbHVkZSBpbmNsdWRlcyB0aGUgY29udGVudHMgb2YgYW5vdGhlciBmaWxlIHJpZ2h0CitpbnRvIHRoZSBmaWxlIGJlaW5nIHByZS1jb21waWxlZCBhdCB0aGUgcG9pbnQgaW4gdGhlIGZpbGUgd2hlcmUgdGhlIGRpcmVjdGl2ZQoraXMgcGxhY2VkLiAgRmlsZXMgbWFkZSBmb3IgaW5jbHVzaW9uIGludG8gb3RoZXIgZmlsZXMgYXJlIG9mdGVuIGNhbGxlZCBoZWFkZXIKK2ZpbGVzLiAgVGhleSBzb21ldGltZXMgY29udGFpbiB0aGluZ3MgbGlrZSAjZGVmaW5lIGRpcmVjdGl2ZXMgdXNlZCBieQorbXVsdGlwbGUgZmlsZXMgYW5kIGZ1bmN0aW9uIGRlY2xhcmF0aW9ucyBmb3IgdGhlIGZpbGUuICBUaGUgdHJhZGl0aW9uYWwgZmlsZQorZXh0ZW5zaW9uIHRvIGhlYWRlciBmaWxlcyBpcyAuaC4KKworSW5jbHVkZSBkaXJlY3RpdmVzIGZvbGxvdyBvbmUgb2YgMiBzeW50YXgnczoKKworI2luY2x1ZGUgPGZpbGVuYW1lPgorI2luY2x1ZGUgImZpbGVuYW1lIgorCitJZiB5b3UgZ2l2ZSB0aGUgYWJzb2x1dGUgbmFtZSBvZiB0aGUgZmlsZSwgdGhlbiB3aGljaCBzeW50YXggeW91IHVzZSBpcworaXJyZWxldmFudC4gIEhvdyB5b3UgZW5jbG9zZSB0aGUgZmlsZSBuYW1lIGRldGVybWluZXMgaG93IHRoZSBwcmUtCitjb21waWxlciBzZWFyY2hlcyBmb3IgdGhlIGhlYWRlciBmaWxlcy4gIFRoZSBwcmUtY29tcGlsZXIgZmlyc3Qgc2VhcmNoZXMgaW4KK3N5c3RlbSBpbmNsdWRlIGRpcmVjdG9yaWVzIGZvciBmaWxlcyBlbmNsb3NlZCBpbiA8Pi4gIEZvciBmaWxlcyBlbmNsb3NlZCBpbgorIiIsIHRoZSBwcmUtY29tcGlsZXIgYmVnaW5zIGl0cyBzZWFyY2ggaW4gdGhlIHNhbWUgZGlyZWN0b3J5IGFzIHRoZSBmaWxlCitnb2luZyB0aHJvdWdoIHRoZSBwcmUtY29tcGlsZXIuICBFaXRoZXIgd2F5LCB0aGUgcHJlLWNvbXBpbGVyIHdpbGwKK3NlYXJjaCB0aGUgc3lzdGVtIGluY2x1ZGUgZGlyZWN0b3JpZXMgYW5kIHRoZSBkaXJlY3Rvcnkgb2YgdGhlIGZpbGUgZm9yIHRoZQoraGVhZGVyIGZpbGUgYmVmb3JlIGdpdmluZyB1cC4gIFRoZSBzeW50YXggc2ltcGx5IGRldGVybWluZXMgdGhlIG9yZGVyLgorPCogTk9URSBIaWdobGFuZGVyQE1vcmdlbkdyYXVlbiAxMS4yLjk0CisJV2hlbiB1c2luZyBzdGFuZGFyZC1oZWFkZXJmaWxlcyBvbmUgc2hvdWxkIGNob29zZSA8Pi4gIiIgaXMgYXBwcm9wcmlhdGUKKwl3aGVuIGRlYWxpbmcgd2l0aCBzZWxmZGVmaW5lZCBoZWFkZXJmaWxlcy4KKyo+CisKK1RoZSBzaW1wbGVzdCBwcmUtY29tcGlsZXIgZGlyZWN0aXZlIGlzIHRoZSAjcHJhZ21hIGRpcmVjdGl2ZS4gIEl0IGlzCitkb3VidGZ1bCB5b3Ugd2lsbCBldmVyIHVzZSB0aGlzIG9uZS4gIEJhc2ljYWxseSwgeW91IGZvbGxvdyB0aGUgZGlyZWN0aXZlCit3aXRoIHNvbWUga2V5d29yZCB3aGljaCBpcyBtZWFuaW5nZnVsIHRvIHlvdXIgZHJpdmVyLiAgVGhlIG9ubHkKK2tleXdvcmQgSSBoYXZlIGV2ZXIgc2VlbiBpcyBzdHJpY3RfdHlwZXMsIHdoaWNoIHNpbXBseSBsZXRzIHRoZSBkcml2ZXIKK2tub3cgeW91IHdhbnQgdGhpcyBmaWxlIGludGVycHJldGVkIHdpdGggc3RyaWN0IGRhdGEgdHlwaW5nLiAgSSBkb3VidCB5b3UKK3dpbGwgZXZlciBuZWVkIHRvIHVzZSB0aGlzLCBhbmQgeW91IG1heSBuZXZlciBldmVuIHNlZSBpdC4gIEkganVzdCBpbmNsdWRlZAoraXQgaW4gdGhlIGxpc3QgaW4gdGhlIGV2ZW50IHlvdSBkbyBzZWUgaXQgc28geW91IGRvIG5vdCB0aGluayBpdCBpcyBkb2luZworYW55dGhpbmcgdHJ1bHkgbWVhbmluZ2Z1bC4KKworVGhlIGZpbmFsIGdyb3VwIG9mIHByZS1jb21waWxlciBkaXJlY3RpdmVzIGFyZSB0aGUgY29uZGl0aW9uYWwgcHJlLQorY29tcGlsZXIgZGlyZWN0aXZlcy4gIFRoZXkgYWxsb3cgeW91IHRvIHByZS1jb21waWxlIHRoZSBmaWxlIG9uZSB3YXkKK2dpdmVuIHRoZSB0cnV0aCB2YWx1ZSBvZiBhbiBleHByZXNzaW9uLCBvdGhlcndpc2UgcHJlLWNvbXBpbGUgdGhlIGZpbGUKK2Fub3RoZXIgd2F5LiAgVGhpcyBpcyBtb3N0bHkgdXNlZnVsIGZvciBtYWtpbmcgY29kZSBwb3J0YWJsZSBhbW9uZworbXVkbGlicywgc2luY2UgcHV0dGluZyB0aGUgbV9kZWxldGUoKSBlZnVuIGluIGNvZGUgb24gYSBNdWRPUyBtdWQKK3dvdWxkIG5vcm1hbGx5IGNhdXNlIGFuIGVycm9yLCBmb3IgZXhhbXBsZS4gIFNvIHlvdSBtaWdodCB3cml0ZSB0aGUKK2ZvbGxvd2luZzoKKworI2lmZGVmICBNVURPUworICAgIG1hcF9kZWxldGUobWFwLCBrZXkpOworI2Vsc2UKKyAgICBtYXAgPSBtX2RlbGV0ZShtYXAsIGtleSk7CisjZW5kaWYKKword2hpY2ggYWZ0ZXIgYmVpbmcgcGFzc2VkIHRocm91Z2ggdGhlIHByZS1jb21waWxlciB3aWxsIGFwcGVhciB0byB0aGUKK2ludGVycHJldGVyIGFzOgorCisgICAgbWFwX2RlbGV0ZShtYXAsIGtleSk7ICAgCisKK29uIGEgTXVkT1MgbXVkLCBhbmQ6CisgIAorICAgIG1hcCA9IG1fZGVsZXRlKG1hcCwga2V5KTsKKworb24gb3RoZXIgbXVkcy4gIFRoZSBpbnRlcnByZXRlciBuZXZlciBzZWVzIHRoZSBmdW5jdGlvbiBjYWxsIHRoYXQgd291bGQKK2NhdXNlIGl0IHRvIHNwYW0gb3V0IGluIGVycm9yLiAKKworTm90aWNlIHRoYXQgbXkgZXhhbXBsZSBtYWRlIHVzZSBvZiBhIGJpbmFyeSBkZWZpbml0aW9uIGFzIGRlc2NyaWJlZAorYWJvdmUuICBCaW5hcnkgZGVmaW5pdGlvbnMgYWxsb3cgeW91IHRvIHBhc3MgY2VydGFpbiBjb2RlIHRvIHRoZQoraW50ZXJwcmV0ZXIgYmFzZWQgb24gd2hhdCBkcml2ZXIgb3IgbXVkbGliIHlvdSBhcmUgdXNpbmcsIGFtb25nIG90aGVyCitjb25kaXRpb25zLgorCis0LjMgU3VtbWFyeQorVGhlIHByZS1jb21waWxlciBpcyBhIHVzZWZ1bCBMUEMgdG9vbCBmb3IgbWFpbnRhaW5pbmcgbW9kdWxhcml0eSBhbW9uZworeW91ciBwcm9ncmFtcy4gIFdoZW4geW91IGhhdmUgdmFsdWVzIHRoYXQgbWlnaHQgYmUgc3ViamVjdCB0byBjaGFuZ2UsCitidXQgYXJlIHVzZWQgd2lkZWx5IHRocm91Z2hvdXQgeW91ciBmaWxlcywgeW91IG1pZ2h0IHN0aWNrIGFsbCBvZiB0aG9zZQordmFsdWVzIGluIGEgaGVhZGVyIGZpbGUgYXMgI2RlZmluZSBzdGF0ZW1lbnRzIHNvIHRoYXQgYW55IG5lZWQgdG8gbWFrZSBhCitmdXR1cmUgY2hhbmdlIHdpbGwgY2F1c2UgeW91IHRvIG5lZWQgdG8gY2hhbmdlIGp1c3QgdGhlICNkZWZpbmUgZGlyZWN0aXZlLiAKK0EgdmVyeSBnb29kIGV4YW1wbGUgb2Ygd2hlcmUgdGhpcyB3b3VsZCBiZSB1c2VmdWwgd291bGQgYmUgYSBoZWFkZXIKK2ZpbGUgY2FsbGVkIG1vbmV5LmggIHdoaWNoIGluY2x1ZGVzIHRoZSBkaXJlY3RpdmU6CisjZGVmaW5lIEhBUkRfQ1VSUkVOQ0lFUyAoeyAiZ29sZCIsICJwbGF0aW51bSIsICJzaWx2ZXIiLAorImVsZWN0cnVtIiwgImNvcHBlciIgfSkKK3NvIHRoYXQgaWYgZXZlciB5b3Ugd2FudGVkIHRvIGFkZCBhIG5ldyBoYXJkIGN1cnJlbmN5LCB5b3Ugb25seSBuZWVkCitjaGFuZ2UgdGhpcyBkaXJlY3RpdmUgaW4gb3JkZXIgdG8gdXBkYXRlIGFsbCBmaWxlcyBuZWVkaW5nIHRvIGtub3cgd2hhdCB0aGUKK2hhcmQgY3VycmVuY2llcyBhcmUuCisKK1RoZSBMUEMgcHJlLWNvbXBpbGVyIGFsc28gYWxsb3dzIHlvdSB0byB3cml0ZSBjb2RlIHdoaWNoIGNhbiBiZQorcG9ydGVkIHdpdGhvdXQgY2hhbmdlIGFtb25nIGRpZmZlcmVudCBtdWRsaWJzIGFuZCBkcml2ZXJzLiAgRmluYWxseSwKK3lvdSBzaG91bGQgYmUgYXdhcmUgdGhhdCB0aGUgcHJlLWNvbXBpbGVyIG9ubHkgYWNjZXB0cyBsaW5lcyBlbmRpbmcgaW4KK2NhcnJpYWdlIHJldHVybnMuICBJZiB5b3Ugd2FudCBhIG11bHRpcGxlIGxpbmUgcHJlLWNvbXBpbGVyIGRpcmVjdGl2ZSwgeW91CituZWVkIHRvIGVuZCBlYWNoIGluY29tcGxldGUgbGluZSB3aXRoIGEgYmFja3NsYXNoKFwpLgorCitDb3B5cmlnaHQgKGMpIEdlb3JnZSBSZWVzZSAxOTkzCmRpZmYgLS1naXQgYS9kb2MvS1VSUy9MUEMtS1VSUzIvY2hhcHRlcjUgYi9kb2MvS1VSUy9MUEMtS1VSUzIvY2hhcHRlcjUKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZjQ1YjZmYQotLS0gL2Rldi9udWxsCisrKyBiL2RvYy9LVVJTL0xQQy1LVVJTMi9jaGFwdGVyNQpAQCAtMCwwICsxLDE4NiBAQAorSW50ZXJtZWRpYXRlIExQQworRGVzY2FydGVzIG9mIEJvcmcKK05vdmVtYmVyIDE5OTMKKworICAgICAgICAgICAgICAgICAgICAgQ2hhcHRlciA1OiBBZHZhbmNlZCBTdHJpbmcgSGFuZGxpbmcKKworNS4xIFdoYXQgYSBTdHJpbmcgSXMKK1RoZSBMUEMgQmFzaWNzIHRleHRib29rIHRhdWdodCBzdHJpbmdzIGFzIHNpbXBsZSBkYXRhIHR5cGVzLiAgTFBDCitnZW5lcmFsbHkgZGVhbHMgd2l0aCBzdHJpbmdzIGluIHN1Y2ggYSBtYXR0ZXIuICBUaGUgdW5kZXJseWluZyBkcml2ZXIKK3Byb2dyYW0sIGhvd2V2ZXIsIGlzIHdyaXR0ZW4gaW4gQywgd2hpY2ggaGFzIG5vIHN0cmluZyBkYXRhIHR5cGUuICBUaGUKK2RyaXZlciBpbiBmYWN0IHNlZXMgc3RyaW5ncyBhcyBhIGNvbXBsZXggZGF0YSB0eXBlIG1hZGUgdXAgb2YgYW4gYXJyYXkgb2YKK2NoYXJhY3RlcnMsIGEgc2ltcGxlIEMgZGF0YSB0eXBlLiAgTFBDLCBvbiB0aGUgb3RoZXIgaGFuZCBkb2VzIG5vdAorcmVjb2duaXplIGEgY2hhcmFjdGVyIGRhdGEgdHlwZSAodGhlcmUgbWF5IGFjdHVhbGx5IGJlIGEgZHJpdmVyIG9yIHR3byBvdXQKK3RoZXJlIHdoaWNoIGRvIHJlY29nbml6ZSB0aGUgY2hhcmFjdGVyIGFzIGEgZGF0YSB0eXBlLCBidXQgaW4gZ2VuZXJhbCBub3QpLiAKK1RoZSBuZXQgZWZmZWN0IGlzIHRoYXQgdGhlcmUgYXJlIHNvbWUgYXJyYXktbGlrZSB0aGluZ3MgeW91IGNhbiBkbyB3aXRoCitzdHJpbmdzIHRoYXQgeW91IGNhbm5vdCBkbyB3aXRoIG90aGVyIExQQyBkYXRhIHR5cGVzLgorCitUaGUgZmlyc3QgZWZ1biByZWdhcmRpbmcgc3RyaW5ncyB5b3Ugc2hvdWxkIGxlYXJuIGlzIHRoZSBzdHJsZW4oKSBlZnVuLiAKK1RoaXMgZWZ1biByZXR1cm5zIHRoZSBsZW5ndGggaW4gY2hhcmFjdGVycyBvZiBhbiBMUEMgc3RyaW5nLCBhbmQgaXMgdGh1cwordGhlIHN0cmluZyBlcXVpdmFsZW50IHRvIHNpemVvZigpIGZvciBhcnJheXMuICBKdXN0IGZyb20gdGhlIGJlaGF2aW91ciBvZgordGhpcyBlZnVuLCB5b3UgY2FuIHNlZSB0aGF0IHRoZSBkcml2ZXIgdHJlYXRzIGEgc3RyaW5nIGFzIGlmIGl0IHdlcmUgbWFkZSB1cAorb2Ygc21hbGxlciBlbGVtZW50cy4gIEluIHRoaXMgY2hhcHRlciwgeW91IHdpbGwgbGVhcm4gaG93IHRvIGRlYWwgd2l0aAorc3RyaW5ncyBvbiBhIG1vcmUgYmFzaWMgbGV2ZWwsIGFzIGNoYXJhY3RlcnMgYW5kIHN1YiBzdHJpbmdzLgorCis1LjIgU3RyaW5ncyBhcyBDaGFyYWN0ZXIgQXJyYXlzCitZb3UgY2FuIGRvIG5lYXJseSBhbnl0aGluZyB3aXRoIHN0cmluZ3MgdGhhdCB5b3UgY2FuIGRvIHdpdGggYXJyYXlzLAorZXhjZXB0IGFzc2lnbiB2YWx1ZXMgb24gYSBjaGFyYWN0ZXIgYmFzaXMuICBBdCB0aGUgbW9zdCBiYXNpYywgeW91IGNhbgorYWN0dWFsbHkgcmVmZXIgdG8gY2hhcmFjdGVyIGNvbnN0YW50cyBieSBlbmNsb3NpbmcgdGhlbSBpbiAnJyAoc2luZ2xlCitxdW90ZXMpLiAgJ2EnIGFuZCAiYSIgYXJlIHRoZXJlZm9yZSB2ZXJ5IGRpZmZlcmVudCB0aGluZ3MgaW4gTFBDLiAgJ2EnCityZXByZXNlbnRzIGEgY2hhcmFjdGVyIHdoaWNoIGNhbm5vdCBiZSB1c2VkIGluIGFzc2lnbm1lbnQgc3RhdGVtZW50cyBvcgorYW55IG90aGVyIG9wZXJhdGlvbnMgZXhjZXB0IGNvbXBhcmlzb24gZXZhbHVhdGlvbnMuICAiYSIgb24gdGhlIG90aGVyCitoYW5kIGlzIGEgc3RyaW5nIG1hZGUgdXAgb2YgYSBzaW5nbGUgY2hhcmFjdGVyLiAgWW91IGNhbiBhZGQgYW5kIHN1YnRyYWN0CitvdGhlciBzdHJpbmdzIHRvIGl0IGFuZCBhc3NpZ24gaXQgYXMgYSB2YWx1ZSB0byBhIHZhcmlhYmxlLgorCitXaXRoIHN0cmluZyB2YXJpYWJsZXMsIHlvdSBjYW4gYWNjZXNzIHRoZSBpbmRpdmlkdWFsIGNoYXJhY3RlcnMgdG8gcnVuCitjb21wYXJpc29ucyBhZ2FpbnN0IGNoYXJhY3RlciBjb25zdGFudHMgdXNpbmcgZXhhY3RseSB0aGUgc2FtZSBzeW50YXgKK3RoYXQgaXMgdXNlZCB3aXRoIGFycmF5cy4gIEluIG90aGVyIHdvcmRzLCB0aGUgc3RhdGVtZW50OgorICAgIGlmKHN0clsyXSA9PSAnYScpCitpcyBhIHZhbGlkIExQQyBzdGF0ZW1lbnQgY29tcGFyaW5nIHRoZSBzZWNvbmQgY2hhcmFjdGVyIGluIHRoZSBzdHIgc3RyaW5nCit0byB0aGUgY2hhcmFjdGVyICdhJy4gIFlvdSBoYXZlIHRvIGJlIHZlcnkgY2FyZWZ1bCB0aGF0IHlvdSBhcmUgbm90Citjb21wYXJpbmcgZWxlbWVudHMgb2YgYXJyYXlzIHRvIGNoYXJhY3RlcnMsIG5vciBhcmUgeW91IGNvbXBhcmluZworY2hhcmFjdGVycyBvZiBzdHJpbmdzIHRvIHN0cmluZ3MuCisKK0xQQyBhbHNvIGFsbG93cyB5b3UgdG8gYWNjZXNzIHNldmVyYWwgY2hhcmFjdGVycyB0b2dldGhlciB1c2luZyBMUEMncworcmFuZ2Ugb3BlcmF0b3IgLi46CisgICAgaWYoc3RyWzAuLjFdID09ICJhYiIpCitJbiBvdGhlciB3b3JkcywgeW91IGNhbiBsb29rIGZvciB0aGUgc3RyaW5nIHdoaWNoIGlzIGZvcm1lZCBieSB0aGUKK2NoYXJhY3RlcnMgMCB0aHJvdWdoIDEgaW4gdGhlIHN0cmluZyBzdHIuICBBcyB3aXRoIGFycmF5cywgeW91IG11c3QgYmUKK2NhcmVmdWwgd2hlbiB1c2luZyBpbmRleGluZyBvciByYW5nZSBvcGVyYXRvcnMgc28gdGhhdCB5b3UgZG8gbm90IHRyeSB0bworcmVmZXJlbmNlIGFuIGluZGV4IG51bWJlciBsYXJnZXIgdGhhbiB0aGUgbGFzdCBpbmRleC4gIERvaW5nIHNvIHdpbGwKK3Jlc3VsdCBpbiBhbiBlcnJvci4KKworTm93IHlvdSBjYW4gc2VlIGEgY291cGxlIG9mIHNpbWlsYXJpdGllcyBiZXR3ZWVuIHN0cmluZ3MgYW5kIGFycmF5czoKKzEpIFlvdSBtYXkgaW5kZXggb24gYm90aCB0byBhY2Nlc3MgdGhlIHZhbHVlcyBvZiBpbmRpdmlkdWFsIGVsZW1lbnRzLgorCWEpIFRoZSBpbmRpdmlkdWFsIGVsZW1lbnRzIG9mIHN0cmluZ3MgYXJlIGNoYXJhY3RlcnMKKwliKSBUaGUgaW5kaXZpZHVhbCBlbGVtZW50cyBvZiBhcnJheXMgbWF0Y2ggdGhlIGRhdGEgdHlwZSBvZiB0aGUKK2FycmF5LgorMikgWW91IG1heSBvcGVyYXRlIG9uIGEgcmFuZ2Ugb2YgdmFsdWVzCisJYSkgRXg6ICJhYmNkZWYiWzEuLjNdIGlzIHRoZSBzdHJpbmcgImJjZCIKKwliKSBFeDogKHsgMSwgMiwgMywgNCwgNSB9KVsxLi4zXSBpcyB0aGUgaW50IGFycmF5ICh7IDIsIDMsIDQgfSkKKzwqIE5PVEUgSGlnaGxhbmRlckBNb3JnZW5HcmF1ZW4KKwlBbHNvIHBvc3NpYmxlIGluIE1vcmdlbkdyYXVlbiAoaW4gY29tbW9uOiBBbXlsYWFyLWRyaXZlciBMUE11ZHMpOgorCSJhYmNkZWYiWzIuLl0gICAgLT4gImNkZWYiIGFuZAorCSJhYmNkZWYiWzEuLjwyXSAgLT4gImJjZGUiICAoPCBtZWFucyBzdGFydCBjb3VudGluZyBmcm9tIHRoZSBlbmQgYW5kIHdpdGggMSkKKyo+CisKK0FuZCBvZiBjb3Vyc2UsIHlvdSBzaG91bGQgYWx3YXlzIGtlZXAgaW4gbWluZCB0aGUgZnVuZGFtZW50YWwKK2RpZmZlcmVuY2U6IGEgc3RyaW5nIGlzIG5vdCBtYWRlIHVwIG9mIGEgbW9yZSBmdW5kYW1lbnRhbCBMUEMgZGF0YSB0eXBlLiAKK0luIG90aGVyIHdvcmRzLCB5b3UgbWF5IG5vdCBhY3Qgb24gdGhlIGluZGl2aWR1YWwgY2hhcmFjdGVycyBieQorYXNzaWduaW5nIHRoZW0gdmFsdWVzLgorCis1LjMgVGhlIEVmdW4gc3NjYW5mKCkKK1lvdSBjYW5ub3QgZG8gYW55IGRlY2VudCBzdHJpbmcgaGFuZGxpbmcgaW4gTFBDIHdpdGhvdXQgdXNpbmcKK3NzY2FuZigpLiAgV2l0aG91dCBpdCwgeW91IGFyZSBsZWZ0IHRyeWluZyB0byBwbGF5IHdpdGggdGhlIGZ1bGwgc3RyaW5ncworcGFzc2VkIGJ5IGNvbW1hbmQgc3RhdGVtZW50cyB0byB0aGUgY29tbWFuZCBmdW5jdGlvbnMuICBJbiBvdGhlcgord29yZHMsIHlvdSBjb3VsZCBub3QgaGFuZGxlIGEgY29tbWFuZCBsaWtlOiAiZ2l2ZSBzd29yZCB0byBsZW8iLCBzaW5jZQoreW91IHdvdWxkIGhhdmUgbm8gd2F5IG9mIHNlcGFyYXRpbmcgInN3b3JkIHRvIGxlbyIgaW50byBpdHMgY29uc3RpdHVlbnQKK3BhcnRzLiAgQ29tbWFuZHMgc3VjaCBhcyB0aGVzZSB0aGVyZWZvcmUgdXNlIHRoaXMgZWZ1biBpbiBvcmRlciB0byB1c2UKK2NvbW1hbmRzIHdpdGggbXVsdGlwbGUgYXJndW1lbnRzIG9yIHRvIG1ha2UgY29tbWFuZHMgbW9yZQorIkVuZ2xpc2gtbGlrZSIuCisKK01vc3QgcGVvcGxlIGZpbmQgdGhlIG1hbnVhbCBlbnRyaWVzIGZvciBzc2NhbmYoKSB0byBiZSByYXRoZXIgZGlmZmljdWx0CityZWFkaW5nLiAgVGhlIGZ1bmN0aW9uIGRvZXMgbm90IGxlbmQgaXRzZWxmIHdlbGwgdG8gdGhlIGZvcm1hdCB1c2VkIGJ5CittYW51YWwgZW50cmllcy4gIEFzIEkgc2FpZCBhYm92ZSwgdGhlIGZ1bmN0aW9uIGlzIHVzZWQgdG8gdGFrZSBhIHN0cmluZyBhbmQKK2JyZWFrIGl0IGludG8gdXNhYmxlIHBhcnRzLiAgVGVjaG5pY2FsbHkgaXQgaXMgc3VwcG9zZWQgdG8gdGFrZSBhIHN0cmluZyBhbmQKK3NjYW4gaXQgaW50byBvbmUgb3IgbW9yZSB2YXJpYWJsZXMgb2YgdmFyeWluZyB0eXBlcy4gIFRha2UgdGhlIGV4YW1wbGUKK2Fib3ZlOgorCitpbnQgZ2l2ZShzdHJpbmcgc3RyKSB7CisgICAgc3RyaW5nIHdoYXQsIHdob207CisKKyAgICBpZighc3RyKSByZXR1cm4gbm90aWZ5X2ZhaWwoIkdpdmUgd2hhdCB0byB3aG9tP1xuIik7CisgICAgaWYoc3NjYW5mKHN0ciwgIiVzIHRvICVzIiwgd2hhdCwgd2hvbSkgIT0gMikgCisgICAgICByZXR1cm4gbm90aWZ5X2ZhaWwoIkdpdmUgd2hhdCB0byB3aG9tP1xuIik7CisgICAgLi4uIHJlc3Qgb2YgZ2l2ZSBjb2RlIC4uLgorfQorCitUaGUgZWZ1biBzc2NhbmYoKSB0YWtlcyB0aHJlZSBvciBtb3JlIGFyZ3VtZW50cy4gIFRoZSBmaXJzdCBhcmd1bWVudCBpcwordGhlIHN0cmluZyB5b3Ugd2FudCBzY2FubmVkLiAgVGhlIHNlY29uZCBhcmd1bWVudCBpcyBjYWxsZWQgYSBjb250cm9sCitzdHJpbmcuICBUaGUgY29udHJvbCBzdHJpbmcgaXMgYSBtb2RlbCB3aGljaCBkZW1vbnN0cmF0ZXMgaW4gd2hhdCBmb3JtCit0aGUgb3JpZ2luYWwgc3RyaW5nIGlzIHdyaXR0ZW4sIGFuZCBob3cgaXQgc2hvdWxkIGJlIGRpdmlkZWQgdXAuICBUaGUgcmVzdAorb2YgdGhlIGFyZ3VtZW50cyBhcmUgdmFyaWFibGVzIHRvIHdoaWNoIHlvdSB3aWxsIGFzc2lnbiB2YWx1ZXMgYmFzZWQKK3Vwb24gdGhlIGNvbnRyb2wgc3RyaW5nLgorCitUaGUgY29udHJvbCBzdHJpbmcgaXMgbWFkZSB1cCBvZiB0aHJlZSBkaWZmZXJlbnQgdHlwZXMgb2YgZWxlbWVudHM6IDEpCitjb25zdGFudHMsIDIpIHZhcmlhYmxlIGFyZ3VtZW50cyB0byBiZSBzY2FubmVkLCBhbmQgMykgdmFyaWFibGUKK2FyZ3VtZW50cyB0byBiZSBkaXNjYXJkZWQuICBZb3UgbXVzdCBoYXZlIGFzIG1hbnkgb2YgdGhlIHZhcmlhYmxlCithcmd1bWVudHMgaW4gc3NjYW5mKCkgYXMgeW91IGhhdmUgZWxlbWVudHMgb2YgdHlwZSAyIGluIHlvdXIgY29udHJvbAorc3RyaW5nLiAgSW4gdGhlIGFib3ZlIGV4YW1wbGUsIHRoZSBjb250cm9sIHN0cmluZyB3YXMgIiVzIHRvICVzIiwgd2hpY2gKK2lzIGEgdGhyZWUgZWxlbWVudCBjb250cm9sIHN0cmluZyBtYWRlIHVwIG9mIG9uZSBjb25zdGFudCBwYXJ0ICgiIHRvICIpLAorYW5kIHR3byB2YXJpYWJsZSBhcmd1bWVudHMgdG8gYmUgc2Nhbm5lZCAoIiVzIikuICBUaGVyZSB3ZXJlIG5vCit2YXJpYWJsZXMgdG8gYmUgZGlzY2FyZGVkLgorCitUaGUgY29udHJvbCBzdHJpbmcgYmFzaWNhbGx5IGluZGljYXRlcyB0aGF0IHRoZSBmdW5jdGlvbiBzaG91bGQgZmluZCB0aGUKK3N0cmluZyAiIHRvICIgaW4gdGhlIHN0cmluZyBzdHIuICBXaGF0ZXZlciBjb21lcyBiZWZvcmUgdGhhdCBjb25zdGFudCB3aWxsCitiZSBwbGFjZWQgaW50byB0aGUgZmlyc3QgdmFyaWFibGUgYXJndW1lbnQgYXMgYSBzdHJpbmcuICBUaGUgc2FtZSB0aGluZword2lsbCBoYXBwZW4gdG8gd2hhdGV2ZXIgY29tZXMgYWZ0ZXIgdGhlIGNvbnN0YW50LgorCitWYXJpYWJsZSBlbGVtZW50cyBhcmUgbm90ZWQgYnkgYSAiJSIgc2lnbiBmb2xsb3dlZCBieSBhIGNvZGUgZm9yCitkZWNvZGluZyB0aGVtLiAgSWYgdGhlIHZhcmlhYmxlIGVsZW1lbnQgaXMgdG8gYmUgZGlzY2FyZGVkLCB0aGUgIiUiIHNpZ24KK2lzIGZvbGxvd2VkIGJ5IHRoZSAiKiIgYXMgd2VsbCBhcyB0aGUgY29kZSBmb3IgZGVjb2RpbmcgdGhlIHZhcmlhYmxlLiAKK0NvbW1vbiBjb2RlcyBmb3IgdmFyaWFibGUgZWxlbWVudCBkZWNvZGluZyBhcmUgInMiIGZvciBzdHJpbmdzIGFuZCAiZCIKK2ZvciBpbnRlZ2Vycy4gIEluIGFkZGl0aW9uLCB5b3VyIG11ZGxpYiBtYXkgc3VwcG9ydCBvdGhlciBjb252ZXJzaW9uCitjb2Rlcywgc3VjaCBhcyAiZiIgZm9yIGZsb2F0LiAgU28gaW4gdGhlIHR3byBleGFtcGxlcyBhYm92ZSwgdGhlICIlcyIgaW4KK3RoZSBjb250cm9sIHN0cmluZyBpbmRpY2F0ZXMgdGhhdCB3aGF0ZXZlciBsaWVzIGluIHRoZSBvcmlnaW5hbCBzdHJpbmcgaW4gdGhlCitjb3JyZXNwb25kaW5nIHBsYWNlIHdpbGwgYmUgc2Nhbm5lZCBpbnRvIGEgbmV3IHZhcmlhYmxlIGFzIGEgc3RyaW5nLgorCitBIHNpbXBsZSBleGVyY2lzZS4gIEhvdyB3b3VsZCB5b3UgdHVybiB0aGUgc3RyaW5nICIxNDUiIGludG8gYW4KK2ludGVnZXI/CisKK0Fuc3dlcjoKK2ludCB4Oworc3NjYW5mKCIxNDUiLCAiJWQiLCB4KTsKKworQWZ0ZXIgdGhlIHNzY2FuZigpIGZ1bmN0aW9uLCB4IHdpbGwgZXF1YWwgdGhlIGludGVnZXIgMTQ1LgorCitXaGVuZXZlciB5b3Ugc2NhbiBhIHN0cmluZyBhZ2FpbnN0IGEgY29udHJvbCBzdHJpbmcsIHRoZSBmdW5jdGlvbgorc2VhcmNoZXMgdGhlIG9yaWdpbmFsIHN0cmluZyBmb3IgdGhlIGZpcnN0IGluc3RhbmNlIG9mIHRoZSBmaXJzdCBjb25zdGFudCBpbgordGhlIG9yaWdpbmFsIHN0cmluZy4gIEZvciBleGFtcGxlLCBpZiB5b3VyIHN0cmluZyBpcyAibWFnaWMgYXR0YWNrIDEwMCIgYW5kCit5b3UgaGF2ZSB0aGUgZm9sbG93aW5nOgoraW50IGltcHJvdmUoc3RyaW5nIHN0cikgeworICAgIHN0cmluZyBza2lsbDsKKyAgICBpbnQgeDsKKworICAgIGlmKHNzY2FuZihzdHIsICIlcyAlZCIsIHNraWxsLCB4KSAhPSAyKSByZXR1cm4gMDsKKyAgICAuLi4KK30KK3lvdSB3b3VsZCBmaW5kIHRoYXQgeW91IGhhdmUgY29tZSB1cCB3aXRoIHRoZSB3cm9uZyByZXR1cm4gdmFsdWUgZm9yCitzc2NhbmYoKSAobW9yZSBvbiB0aGUgcmV0dXJuIHZhbHVlcyBsYXRlcikuICBUaGUgY29udHJvbCBzdHJpbmcsICIlcyAlZCIsCitpcyBtYWRlIHVwIG9mIHRvIHZhcmlhYmxlcyB0byBiZSBzY2FubmVkIGFuZCBvbmUgY29uc3RhbnQuICBUaGUgY29uc3RhbnQKK2lzICIgIi4gIFNvIHRoZSBmdW5jdGlvbiBzZWFyY2hlcyB0aGUgb3JpZ2luYWwgc3RyaW5nIGZvciB0aGUgZmlyc3QgaW5zdGFuY2UKK29mICIgIiwgcGxhY2luZyB3aGF0ZXZlciBjb21lcyBiZWZvcmUgdGhlICIgIiBpbnRvIHNraWxsLCBhbmQgdHJ5aW5nIHRvCitwbGFjZSB3aGF0ZXZlciBjb21lcyBhZnRlciB0aGUgIiAiIGludG8geC4gIFRoaXMgc2VwYXJhdGVzICJtYWdpYyBhdHRhY2sKKzEwMCIgaW50byB0aGUgY29tcG9uZW50cyAibWFnaWMiIGFuZCAiYXR0YWNrIDEwMCIuICBUaGUgZnVuY3Rpb24sCitob3dldmVyLCBjYW5ub3QgbWFrZSBoZWFkcyBvciB0YWxlcyBvZiAiYXR0YWNrIDEwMCIgYXMgYW4gaW50ZWdlciwgc28gaXQKK3JldHVybnMgMSwgbWVhbmluZyB0aGF0IDEgdmFyaWFibGUgdmFsdWUgd2FzIHN1Y2Nlc3NmdWxseSBzY2FubmVkCisoIm1hZ2ljIiBpbnRvIHNraWxsKS4KKworUGVyaGFwcyB5b3UgZ3Vlc3NlZCBmcm9tIHRoZSBhYm92ZSBleGFtcGxlcywgYnV0IHRoZSBlZnVuIHNzY2FuZigpCityZXR1cm5zIGFuIGludCwgd2hpY2ggaXMgdGhlIG51bWJlciBvZiB2YXJpYWJsZXMgaW50byB3aGljaCB2YWx1ZXMgZnJvbQordGhlIG9yaWdpbmFsIHN0cmluZyB3ZXJlIHN1Y2Nlc3NmdWxseSBzY2FubmVkLiAgU29tZSBleGFtcGxlcyB3aXRoCityZXR1cm4gdmFsdWVzIGZvciB5b3UgdG8gZXhhbWluZToKKworc3NjYW5mKCJzd28gIHJkIGRlc2NhcnRlcyIsICIlcyB0byAlcyIsIHN0cjEsIHN0cjIpICAgICAgICAgICByZXR1cm46IDAKK3NzY2FuZigic3dvICByZCBkZXNjYXJ0ZXMiLCAiJXMgJXMiLCBzdHIxLCBzdHIyKSAgICAgICAgICAgICAgcmV0dXJuOiAyCitzc2NhbmYoIjIwMCBnb2xkIHRvIGRlc2NhcnRlcyIsICIlZCAlcyB0byAlcyIsIHgsIHN0cjEsIHN0cjIpIHJldHVybjogMworc3NjYW5mKCIyMDAgZ29sZCB0byBkZXNjYXJ0ZXMiLCAiJWQgJSpzIHRvICVzIiwgeCwgc3RyMSkgICAgICByZXR1cm46IDIKK3doZXJlIHggaXMgYW4gaW50IGFuZCBzdHIxIGFuZCBzdHIyIGFyZSBzdHJpbmcKKworNS40IFN1bW1hcnkKK0xQQyBzdHJpbmdzIGNhbiBiZSB0aG91Z2h0IG9mIGFzIGFycmF5cyBvZiBjaGFyYWN0ZXJzLCB5ZXQgYWx3YXlzCitrZWVwaW5nIGluIG1pbmQgdGhhdCBMUEMgZG9lcyBub3QgaGF2ZSB0aGUgY2hhcmFjdGVyIGRhdGEgdHlwZSAod2l0aAorbW9zdCwgYnV0IG5vdCBhbGwgZHJpdmVycykuICBTaW5jZSB0aGUgY2hhcmFjdGVyIGlzIG5vdCBhIHRydWUgTFBDIGRhdGEKK3R5cGUsIHlvdSBjYW5ub3QgYWN0IHVwb24gaW5kaXZpZHVhbCBjaGFyYWN0ZXJzIGluIGFuIExQQyBzdHJpbmcgaW4gdGhlCitzYW1lIG1hbm5lciB5b3Ugd291bGQgYWN0IHVwb24gZGlmZmVyZW50IGRhdGEgdHlwZXMuICBOb3RpY2luZyB0aGUKK2ludGltYXRlIHJlbGF0aW9uc2hpcCBiZXR3ZWVuIHN0cmluZ3MgYW5kIGFycmF5cyBuZXZlcnRoZWxlc3MgbWFrZXMgaXQKK2Vhc2llciB0byB1bmRlcnN0YW5kIHN1Y2ggY29uY2VwdHMgYXMgdGhlIHJhbmdlIG9wZXJhdG9yIGFuZCBpbmRleGluZyBvbgorc3RyaW5ncy4KKworVGhlcmUgYXJlIGVmdW5zIG90aGVyIHRoYW4gc3NjYW5mKCkgd2hpY2ggaW52b2x2ZSBhZHZhbmNlZCBzdHJpbmcKK2hhbmRsaW5nLCBob3dldmVyLCB0aGV5IGFyZSBub3QgbmVlZGVkIG5lYXJseSBhcyBvZnRlbi4gIFlvdSBzaG91bGQKK2NoZWNrIG9uIHlvdXIgbXVkIGZvciBtYW4gb3IgaGVscCBmaWxlcyBvbiB0aGUgZWZ1bnM6IGV4cGxvZGUoKSwKK2ltcGxvZGUoKSwgcmVwbGFjZV9zdHJpbmcoKSwgc3ByaW50ZigpLiAgQWxsIG9mIHRoZXNlIGFyZSB2ZXJ5IHZhbHVhYmxlCit0b29scywgZXNwZWNpYWxseSBpZiB5b3UgaW50ZW5kIHRvIGRvIGNvZGluZyBhdCB0aGUgbXVkbGliIGxldmVsLgorCitDb3B5cmlnaHQgKGMpIEdlb3JnZSBSZWVzZSAxOTkzCmRpZmYgLS1naXQgYS9kb2MvS1VSUy9MUEMtS1VSUzIvY2hhcHRlcjYgYi9kb2MvS1VSUy9MUEMtS1VSUzIvY2hhcHRlcjYKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOThiMzU1MgotLS0gL2Rldi9udWxsCisrKyBiL2RvYy9LVVJTL0xQQy1LVVJTMi9jaGFwdGVyNgpAQCAtMCwwICsxLDI3NiBAQAorSW50ZXJtZWRpYXRlIExQQworRGVzY2FydGVzIG9mIEJvcmcKK05vdmVtYmVyIDE5OTMKKworICAgICAgICAgICAgICAgICAgICAgICBDaGFwdGVyIDY6IEludGVybWVkaWF0ZSBJbmhlcml0YW5jZQorCis2LjEgQmFzaWNzIG9mIEluaGVyaXRhbmNlCitJbiB0aGUgdGV4dGJvb2sgTFBDIEJhc2ljcywgeW91IGxlYXJuZWQgaG93IGl0IGlzIHRoZSBtdWRsaWIgbWFpbnRhaW5zCitjb25zaXN0ZW5jeSBhbW91bmcgbXVkIG9iamVjdHMgdGhyb3VnaCBpbmhlcml0YW5jZS4gIEluaGVyaXRhbmNlCithbGxvd3MgdGhlIG11ZCBhZG1pbmlzdHJhdG9ycyB0byBjb2RlIHRoZSBiYXNpYyBmdW5jdGlvbnMgYW5kIHN1Y2ggdGhhdAorYWxsIG11ZGxpYiBvYmplY3RzLCBvciBhbGwgbXVkbGliIG9iamVjdHMgb2YgYSBjZXJ0YWluIHR5cGUgbXVzdCBoYXZlIHNvCit0aGF0IHlvdSBjYW4gY29uY2VudHJhdGUgb24gY3JlYXRpbmcgdGhlIGZ1bmN0aW9ucyB3aGljaCBtYWtlIHRoZXNlCitvYmplY3RzIGRpZmZlcmVudC4gIFdoZW4geW91IGJ1aWxkIGEgcm9vbSwgb3IgYSB3ZWFwb24sIG9yIGEgbW9uc3RlciwKK3lvdSBhcmUgdGFraW5nIGEgc2V0IG9mIGZ1bmN0aW9ucyBhbHJlYWR5IHdyaXR0ZW4gZm9yIHlvdSBhbmQgaW5oZXJpdGluZwordGhlbSBpbnRvIHlvdXIgb2JqZWN0LiAgSW4gdGhpcyB3YXksIGFsbCBvYmplY3RzIG9uIHRoZSBtdWQgY2FuIGNvdW50IG9uCitvdGhlciBvYmplY3RzIHRvIGJlaGF2ZSBpbiBhIGNlcnRhaW4gbWFubmVyLiAgRm9yIGluc3RhbmNlLCBwbGF5ZXIgb2JqZWN0cworY2FuIHJlbHkgb24gdGhlIGZhY3QgdGhhdCBhbGwgcm9vbSBvYmplY3RzIHdpbGwgaGF2ZSBhIGZ1bmN0aW9uIGluIHRoZW0KK2NhbGxlZCBxdWVyeV9sb25nKCkgd2hpY2ggZGVzY3JpYmVzIHRoZSByb29tLiAgSW5oZXJpdGFuY2UgdGh1cyBrZWVwcworeW91IGZyb20gaGF2aW5nIHRvIHdvcnJ5IGFib3V0IHdoYXQgdGhlIGZ1bmN0aW9uIHF1ZXJ5X2xvbmcoKSBzaG91bGQKK2xvb2sgbGlrZS4KKworTmF0dXJhbGx5LCB0aGlzIHRleHRib29rIHRyaWVzIHRvIGdvIGJleW9uZCB0aGlzIGZ1bmRhbWVudGFsIGtub3dsZWRnZQorb2YgaW5oZXJpdGFuY2UgdG8gZ2l2ZSB0aGUgY29kZXIgYSBiZXR0ZXIgdW5kZXJ0c3RhbmRpbmcgb2YgaG93Citpbmhlcml0YW5jZSB3b3JrcyBpbiBMUEMgcHJvZ3JhbW1pbmcuICBXaXRob3V0IGdldHRpbmcgaW50byBkZXRhaWwgdGhhdAordGhlIGFkdmFuY2VkIGRvbWFpbiBjb2Rlci9iZWdpbm5lciBtdWRsaWIgY29kZXIgc2ltcGx5IGRvZXMgbm90IHlldAorbmVlZCwgdGhpcyBjaGFwdGVyIHdpbGwgdHJ5IHRvIGV4cGxhaW4gZXhhY3RseSB3aGF0IGhhcHBlbnMgd2hlbiB5b3UKK2luaGVyaXQgYW4gb2JqZWN0LgorCis2LjIgQ2xvbmluZyBhbmQgSW5oZXJpdGFuY2UKK1doZW5ldmVyIGEgZmlsZSBpcyByZWZlcmVuY2VkIGZvciB0aGUgZmlyc3QgdGltZSBhcyBhbiBvYmplY3QgKGFzIG9wcG9zZWQKK3RvIHJlYWRpbmcgdGhlIGNvbnRlbnRzIG9mIHRoZSBmaWxlKSwgdGhlIGdhbWUgdHJpZXMgdG8gbG9hZCB0aGUgZmlsZSBpbnRvCittZW1vcnkgYW5kIGNyZWF0ZSBhbiBvYmplY3QuICBJZiB0aGUgb2JqZWN0IGlzIHN1Y2Nlc3NmdWxseSBsb2FkZWQgaW50bworbWVtb3J5LCBpdCBiZWNvbWVzIGFzIG1hc3RlciBjb3B5LiAgTWFzdGVyIGNvcGllcyBvZiBvYmplY3RzIG1heSBiZQorY2xvbmVkIGJ1dCBub3QgdXNlZCBhcyBhY3R1YWwgZ2FtZSBvYmplY3RzLiAgVGhlIG1hc3RlciBjb3B5IGlzIHVzZWQgdG8KK3N1cHBvcnQgYW55IGNsb25lIG9iamVjdHMgaW4gdGhlIGdhbWUuCisKK1RoZSBtYXN0ZXIgY29weSBpcyB0aGUgc291cmNlIG9mIG9uZSBvZiB0aGUgY29udHJvdmVyc2llcyBvZiBtdWQgTFBDCitjb2RpbmcsIHRoYXQgaXMgd2hldGhlciB0byBjbG9uZSBvciBpbmhlcml0LiAgV2l0aCByb29tcywgdGhlcmUgaXMgbm8KK3F1ZXN0aW9uIG9mIHdoYXQgeW91IHdpc2ggdG8gZG8sIHNpbmNlIHRoZXJlIHNob3VsZCBvbmx5IGJlIG9uZSBpbnN0YW5jZQorb2YgZWFjaCByb29tIG9iamVjdCBpbiB0aGUgZ2FtZS4gIFNvIHlvdSBnZW5lcmFsbHkgdXNlIGluaGVyaXRhbmNlIGluCitjcmVhdGluZyByb29tcy4gIE1hbnkgbXVkIGFkbWluaXN0cmF0b3JzLCBpbmNsdWRpbmcgbXlzZWxmLCBob3dldmVyCitlbmNvdXJhZ2UgY3JlYXRvcnMgdG8gY2xvbmUgdGhlIHN0YW5kYXJkIG1vbnN0ZXIgb2JqZWN0IGFuZCBjb25maWd1cmUgaXQKK2Zyb20gaW5zaWRlIHJvb20gb2JqZWN0cyBpbnN0ZWFkIG9mIGtlZXBpbmcgbW9uc3RlcnMgaW4gc2VwYXJhdGUgZmlsZXMKK3doaWNoIGluaGVyaXQgdGhlIHN0YW5kYXJkIG1vbnN0ZXIgb2JqZWN0LgorCitBcyBJIHN0YXRlZCBhYm92ZSwgZWFjaCB0aW1lIGEgZmlsZSBpcyByZWZlcmVuY2VkIHRvIGNyZWF0ZSBhbiBvYmplY3QsIGEKK21hc3RlciBjb3B5IGlzIGxvYWRlZCBpbnRvIG1lbW9yeS4gIFdoZW4geW91IGRvIHNvbWV0aGluZyBsaWtlOgordm9pZCByZXNldCgpIHsKKyAgICBvYmplY3Qgb2I7CisgICAgb2IgPSBuZXcoIi9zdGQvbW9uc3RlciIpOworICAgICAgLyogY2xvbmVfb2JqZWN0KCIvc3RkL21vbnN0ZXIiKSBzb21lIHBsYWNlcyAqLworICAgIG9iLT5zZXRfbmFtZSgiZm9vIG1vbnN0ZXIiKTsKKyAgICAuLi4gIHJlc3Qgb2YgbW9uc3RlciBjb25maWcgY29kZSBmb2xsb3dlZCBieSBtb3ZpbmcKK2l0IHRvIHRoZSByb29tIC4uLgorfQordGhlIGRyaXZlciBzZWFyY2hlcyB0byBzZWUgaWYgdGhlaXIgaXMgYSBtYXN0ZXIgb2JqZWN0IGNhbGxlZCAiL3N0ZC9tb25zdGVyIi4gCitJZiBub3QsIGl0IGNyZWF0ZXMgb25lLiAgSWYgaXQgZG9lcyBleGlzdCwgb3IgYWZ0ZXIgaXQgaGFzIGJlZW4gY3JlYXRlZCwgdGhlCitkcml2ZXIgdGhlbiBjcmVhdGVzIGEgY2xvbmUgb2JqZWN0IGNhbGxlZCAiL3N0ZC9tb25zdGVyIzxudW1iZXI+Ii4gIElmCit0aGlzIGlzIHRoZSBmaXJzdCB0aW1lICIvc3RkL21vbnN0ZXIiIGlzIGJlaW5nIHJlZmVyZW5jZWQsIGluIGVmZmVjdCwgdHdvCitvYmplY3RzIGFyZSBiZWluZyBjcmVhdGVkOiB0aGUgbWFzdGVyIG9iamVjdCBhbmQgdGhlIGNsb25lZCBpbnN0YW5jZS4KKworT24gdGhlIG90aGVyIGhhbmQsIGxldCdzIHNheSB5b3UgZGlkIGFsbCB5b3VyIGNvbmZpZ3VyaW5nIGluIHRoZSBjcmVhdGUoKQorb2YgYSBzcGVjaWFsIG1vbnN0ZXIgZmlsZSB3aGljaCBpbmhlcml0cyAiL3N0ZC9tb25zdGVyIi4gIEluc3RlYWQgb2YKK2Nsb25pbmcgdGhlIHN0YW5kYXJkIG1vbnN0ZXIgb2JqZWN0IGZyb20geW91ciByb29tLCB5b3UgY2xvbmUgeW91cgorbW9uc3RlciBmaWxlLiAgSWYgdGhlIHN0YW5kYXJkIG1vbnN0ZXIgaGFzIG5vdCBiZWVuIGxvYWRlZCwgaXQgZ2V0cyBsb2FkZWQKK3NpbmNlIHlvdXIgbW9uc3RlciBpbmhlcml0cyBpdC4gIEluIGFkZGl0aW9uLCBhIG1hc3RlciBjb3B5IG9mIHlvdXIgZmlsZQorZ2V0cyBsb2FkZWQgaW50byBtZW1vcnkuICBGaW5hbGx5LCBhIGNsb25lIG9mIHlvdXIgbW9uc3RlciBpcyBjcmVhdGVkCithbmQgbW92ZWQgaW50byB0aGUgcm9vbSwgZm9yIGEgdG90YWwgb2YgdGhyZWUgb2JqZWN0cyBhZGRlZCB0byB0aGUgZ2FtZS4gCitOb3RlIHRoYXQgeW91IGNhbm5vdCBtYWtlIHVzZSBvZiB0aGUgbWFzdGVyIGNvcHkgZWFzaWx5IHRvIGdldCBhcm91bmQKK3RoaXMuICBJZiwgZm9yIGV4YW1wbGUsIHlvdSB3ZXJlIHRvIGRvOgorICAgICIvd2l6YXJkcy9kZXNjYXJ0ZXMvbXlfbW9uc3RlciItPm1vdmUodGhpc19vYmplY3QoKSk7CitpbnN0ZWFkIG9mCisgICAgbmV3KCIvd2l6YXJkcy9kZXNjYXJ0ZXMvbXlfbW9uc3RlciIpLT5tb3ZlKHRoaXNfb2JqZWN0KCkpOworeW91IHdvdWxkIG5vdCBiZSBhYmxlIHRvIG1vZGlmeSB0aGUgZmlsZSAibXlfbW9uc3Rlci5jIiBhbmQgdXBkYXRlIGl0LAorc2luY2UgdGhlIHVwZGF0ZSBjb21tYW5kIGRlc3Ryb3lzIHRoZSBjdXJyZW50IG1hc3RlciB2ZXJzaW9uIG9mIGFuCitvYmplY3QuICBPbiBzb21lIG11ZGxpYnMgaXQgYWxzbyBsb2FkcyB0aGUgbmV3IHZlcnNpb24gaW50byBtZW1vcnkuIAorSW1hZ2luZSB0aGUgbG9vayBvbiBhIHBsYXllcidzIGZhY2Ugd2hlbiB0aGVpciBtb25zdGVyIGRpc2FwcGVhcnMgaW4KK21pZC1jb21iYXQgY2F1c2UgeW91IHVwZGF0ZWQgdGhlIGZpbGUhCisKK0Nsb25pbmcgaXMgdGhlcmVmb3JlIGEgdXNlZnVsIHRvbyB3aGVuIHlvdSBwbGFuIG9uIGRvaW5nIGp1c3QgdGhhdC0KK2Nsb25pbmcuICBJZiB5b3UgYXJlIGRvaW5nIG5vdGhpbmcgc3BlY2lhbCB0byBhIG1vbnN0ZXIgd2hpY2ggY2Fubm90IGJlCitkb25lIHRocm91Z2ggYSBmZXcgY2FsbCBvdGhlcnMsIHRoZW4geW91IHdpbGwgc2F2ZSB0aGUgbXVkIGZyb20gZ2V0dGluZworbG9hZGVkIHdpdGggdXNlbGVzcyBtYXN0ZXIgY29waWVzLiAgSW5oZXJpdGFuY2UsIGhvd2V2ZXIsIGlzIHVzZWZ1bCBpZgoreW91IHBsYW4gdG8gYWRkIGZ1bmN0aW9uYWxpdHkgdG8gYW4gb2JqZWN0ICh3cml0ZSB5b3VyIG93biBmdW5jdGlvbnMpIG9yCitpZiB5b3UgaGF2ZSBhIHNpbmdsZSBjb25maWd1cmF0aW9uIHRoYXQgZ2V0cyB1c2VkIG92ZXIgYW5kIG92ZXIgYWdhaW4KKyh5b3UgaGF2ZSBhbiBhcm15IG9mIG9yYyBndWFyZHMgYWxsIHRoZSBzYW1lLCBzbyB5b3Ugd3JpdGUgYSBzcGVjaWFsIG9yYworZmlsZSBhbmQgY2xvbmUgaXQpLgorCis2LjMgSW5zaWRlIEluaGVyaXRhbmNlCitXaGVuIG9iamVjdHMgQSBhbmQgQiBpbmhlcml0IG9iamVjdCBDLCBhbGwgdGhyZWUgb2JqZWN0cyBoYXZlIHRoZWlyIG93bgorc2V0IG9mIGRhdGEgc2hhcmluZyBvbmUgc2V0IG9mIGZ1bmN0aW9uIGRlZmluaXRpb25zIGZyb20gb2JqZWN0IEMuICBJbgorYWRkaXRpb24sIEEgYW5kIEIgd2lsbCBoYXZlIHNlcGFyYXRlIGZ1bmN0aW9ucyBkZWZpbml0aW9ucyB3aGljaCB3ZXJlCitlbnRlcmVkIHNlcGFyYXRlbHkgaW50byB0aGVpciBjb2RlLiAgRm9yIHRoZSBzYWtlIG9mIGV4YW1wbGUgdGhyb3VnaG91dAordGhlIHJlc3Qgb2YgdGhlIGNoYXB0ZXIsIHdlIHdpbGwgdXNlIHRoZSBmb2xsb3dpbmcgY29kZS4gIERvIG5vdCBiZQorZGlzdHVyYmVkIGlmLCBhdCB0aGlzIHBvaW50LCBzb21lIG9mIHRoZSBjb2RlIG1ha2VzIG5vIHNlbnNlOgorCitPQkpFQ1QgQworcHJpdmF0ZSBzdHJpbmcgbmFtZSwgY2FwX25hbWUsIHNob3J0LCBsb25nOworcHJpdmF0ZSBpbnQgc2V0dXA7CisKK3ZvaWQgc2V0X25hbWUoc3RyaW5nIHN0cikKK25vbWFzayBzdHJpbmcgcXVlcnlfbmFtZSgpOworcHJpdmF0ZSBpbnQgcXVlcnlfc2V0dXAoKTsKK3N0YXRpYyB2b2lkIHVuc2V0dXAoKTsKK3ZvaWQgc2V0X3Nob3J0KHN0cmluZyBzdHIpOworc3RyaW5nIHF1ZXJ5X3Nob3J0KCk7Cit2b2lkIHNldF9sb25nKHN0cmluZyBzdHIpOworc3RyaW5nIHF1ZXJ5X2xvbmcoKTsKKworCit2b2lkIHNldF9uYW1lKHN0cmluZyBzdHIpIHsgCisgICAgaWYoIXF1ZXJ5X3NldHVwKCkpIHsKKyAgICAgICAgbmFtZSA9IHN0cjsKKyAgICBzZXR1cCA9IDE7Cit9CisKK25vbWFzayBzdHJpbmcgcXVlcnlfbmFtZSgpIHsgcmV0dXJuIG5hbWU7IH0KKworcHJpdmF0ZSBxdWVyeV9zZXR1cCgpIHsgcmV0dXJuIHNldHVwOyB9CisKK3N0YXRpYyB2b2lkIHVuc2V0dXAoKSB7IHNldHVwID0gMDsgfQorCitzdHJpbmcgcXVlcnlfY2FwX25hbWUoKSB7CisgICAgcmV0dXJuIChuYW1lID8gY2FwaXRhbGl6ZShuYW1lKSA6ICIiKTsgfQorfQorCit2b2lkIHNldF9zaG9ydChzdHJpbmcgc3RyKSB7IHNob3J0ID0gc3RyOyB9CisKK3N0cmluZyBxdWVyeV9zaG9ydCgpIHsgcmV0dXJuIHNob3J0OyB9CisKK3ZvaWQgc2V0X2xvbmcoc3RyaW5nIHN0cikgeyBsb25nID0gc3RyOyB9CisKK3N0cmluZyBxdWVyeV9sb25nKCkgeyByZXR1cm4gc3RyOyB9CisKK3ZvaWQgY3JlYXRlKCkgeyBzZXRldWlkKGdldHVpZCgpKTsgfQorCitPQkpFQ1QgQgoraW5oZXJpdCAiL3N0ZC9vYmplY3RjIjsKKworcHJpdmF0ZSBpbnQgd2M7CisKK3ZvaWQgc2V0X3djKGludCB3Yyk7CitpbnQgcXVlcnlfd2MoKTsKK2ludCB3aWVsZHdlYXBvbihzdHJpbmcgc3RyKTsKKwordm9pZCBjcmVhdGUoKSB7IDo6Y3JlYXRlKCk7IH0KKwordm9pZCBpbml0KCkgeworICAgIGlmKGVudmlyb25tZW50KHRoaXNfb2JqZWN0KCkpID09IHRoaXNfcGxheWVyKCkpCisgICAgICBhZGRfYWN0aW9uKCJ3aWVsZHdlYXBvbiIsICJ3aWVsZCIpOworfQorCit2b2lkIHNldF93YyhpbnQgeCkgeyB3YyA9IHg7IH0KKworaW50IHF1ZXJ5X3djKCkgeyByZXR1cm4gd2M7IH0KKworaW50IHdpZWxkd2VhcG9uKHN0cmluZyBzdHIpIHsKKyAgICAuLi4gY29kZSBmb3Igd2llbGRpbmcgdGhlIHdlYXBvbiAuLi4KK30KKworT0JKRUNUIEEKK2luaGVyaXQgIi9zdGQvb2JqZWN0YyI7CisKK2ludCBnaG9zdDsKKwordm9pZCBjcmVhdGUoKSB7IDo6Y3JlYXRlKCk7IH0KKwordm9pZCBjaGFuZ2VfbmFtZShzdHJpbmcgc3RyKSB7CisgICAgaWYoISgoaW50KXRoaXNfb2JqZWN0KCktPmlzX3BsYXllcigpKSkgdW5zZXR1cCgpOworICAgIHNldF9uYW1lKHN0cik7Cit9CisKK3N0cmluZyBxdWVyeV9jYXBfbmFtZSgpIHsKKyAgICBpZihnaG9zdCkgcmV0dXJuICJBIGdob3N0IjsKKyAgICBlbHNlIHJldHVybiA6OnF1ZXJ5X2NhcF9uYW1lKCk7Cit9CisKK0FzIHlvdSBjYW4gc2VlLCBvYmplY3QgQyBpcyBpbmhlcml0ZWQgYm90aCBieSBvYmplY3QgQSBhbmQgb2JqZWN0IEIuIAorT2JqZWN0IEMgaXMgYSByZXByZXNlbnRhdGlvbiBvZiBhIG11Y2ggb3ZlcnNpbXBsaWZpZWQgYmFzZSBvYmplY3QsIHdpdGggQgorYmVpbmcgYW4gZXF1YWxseSBvdmVyc2ltcGxpZmllZCB3ZWFwb24gYW5kIEEgYmVpbmcgYW4gZXF1YWxseQorc2ltcGxpZmllZCBsaXZpbmcgb2JqZWN0LiAgT25seSBvbmUgY29weSBvZiBlYWNoIGZ1bmN0aW9uIGlzIHJldGFpbmVkIGluCittZW1vcnksIGV2ZW4gdGhvdWdoIHdlIGhhdmUgaGVyZSB0aHJlZSBvYmplY3RzIHVzaW5nIHRoZSBmdW5jdGlvbnMuIAorVGhlcmUgYXJlIG9mIGNvdXJzZSwgdGhyZWUgaW5zdGFuY2VzIG9mIHRoZSB2YXJpYWJsZXMgZnJvbSBPYmplY3QgQyBpbgorbWVtb3J5LCB3aXRoIG9uZSBpbnN0YW5jZSBvZiB0aGUgdmFyaWFibGVzIG9mIE9iamVjdCBBIGFuZCBPYmplY3QgQiBpbgorbWVtb3J5LiAgRWFjaCBvYmplY3QgdGh1cyBnZXRzIGl0cyBvd24gZGF0YS4gIAorCis2LjQgRnVuY3Rpb24gYW5kIFZhcmlhYmxlIExhYmVscworTm90aWNlIHRoYXQgbWFueSBvZiB0aGUgZnVuY3Rpb25zIGFib3ZlIGFyZSBwcm9jZWVkZWQgd2l0aCBsYWJlbHMgd2hpY2gKK2hhdmUgbm90IHlldCBhcHBlYXJlZCBpbiBlaXRoZXIgdGhpcyB0ZXh0IG9yIHRoZSBiZWdpbm5lciB0ZXh0LCB0aGUgbGFiZWxzCitzdGF0aWMsIHByaXZhdGUsIGFuZCBub21hc2suICBUaGVzZSBsYWJlbHMgZGVmaW5lIHNwZWNpYWwgcHJpdmVsZWRnZXMKK3doaWNoIGFuIG9iamVjdCBtYXkgaGF2ZSB0byBpdHMgZGF0YSBhbmQgbWVtYmVyIGZ1bmN0aW9ucy4gIEZ1bmN0aW9ucworeW91IGhhdmUgdXNlZCB1cCB0byB0aGlzIHBvaW50IGhhdmUgdGhlIGRlZmF1bHQgbGFiZWwgcHVibGljLiAgVGhpcyBpcworZGVmYXVsdCB0byBzdWNoIGEgZGVncmVlLCBzb21lIGRyaXZlcnMgZG8gbm90IHN1cHBvcnQgdGhlIGxhYmVsaW5nLgorCitBIHB1YmxpYyB2YXJpYWJsZSBpcyBhdmFpbGFibGUgdG8gYW55IG9iamVjdCBkb3duIHRoZSBpbmhlcml0YW5jZSB0cmVlCitmcm9tIHRoZSBvYmplY3QgaW4gd2hpY2ggdGhlIHZhcmlhYmxlIGlzIGRlY2xhcmVkLiAgUHVibGljIHZhcmlhYmxlcyBpbgorb2JqZWN0IEMgbWF5IGJlIGFjY2Vzc2VkIGJ5IGJvdGggb2JqZWN0cyBBIGFuZCBCLiAgU2ltaWxhcmx5LCBwdWJsaWMKK2Z1bmN0aW9ucyBtYXkgYmUgY2FsbGVkIGJ5IGFueSBvYmplY3QgZG93biB0aGUgaW5oZXJpdGFuY2UgdHJlZSBmcm9tIHRoZQorb2JqZWN0IGluIHdoaWNoIHRoZXkgYXJlIGRlY2xhcmVkLiAKKworVGhlIG9wcG9zaXRlIG9mIHB1YmxpYyBpcyBvZiBjb3Vyc2UgcHJpdmF0ZS4gIEEgcHJpdmF0ZSB2YXJpYWJsZSBvcgorZnVuY3Rpb24gbWF5IG9ubHkgYmUgcmVmZXJlbmNlZCBmcm9tIGluc2lkZSB0aGUgb2JqZWN0IHdoaWNoIGRlY2xhcmVzIGl0LiAKK0lmIG9iamVjdCBBIG9yIEIgdHJpZWQgdG8gbWFrZSBhbnkgcmVmZXJlbmNlIHRvIGFueSBvZiB0aGUgdmFyaWFibGVzIGluCitvYmplY3QgQywgYW4gZXJyb3Igd291bGQgcmVzdWx0LCBzaW5jZSB0aGUgdmFyaWFibGVzIGFyZSBzYWlkIHRvIGJlIG91dCBvZgorc2NvcGUsIG9yIG5vdCBhdmFpbGFibGUgdG8gaW5oZXJpdGluZyBjbGFzc2VzIGR1ZSB0byB0aGVpciBwcml2YXRlIGxhYmVscy4gCitGdW5jdGlvbnMsIGhvd2V2ZXIsIHByb3ZpZGUgYSB1bmlxdWUgY2hhbGxlbmdlIHdoaWNoIHZhcmlhYmxlcyBkbyBub3QuIAorRXh0ZXJuYWwgb2JqZWN0cyBpbiBMUEMgaGF2ZSB0aGUgYWJpbGl0eSB0byBjYWxsIGZ1bmN0aW9ucyBpbiBvdGhlciBvYmplY3RzCit0aHJvdWdoIGNhbGwgb3RoZXJzLiAgVGhlIHByaXZhdGUgbGFiZWwgZG9lcyBub3QgcHJvdGVjdCBhZ2FpbnN0IGNhbGwKK290aGVycy4KKworVG8gcHJvdGVjdCBhZ2FpbnN0IGNhbGwgb3RoZXJzLCBmdW5jdGlvbnMgdXNlIHRoZSBsYWJlbCBzdGF0aWMuICBBIGZ1bmN0aW9uCit3aGljaCBpcyBzdGF0aWMgbWF5IG9ubHkgYmUgY2FsbGVkIGZyb20gaW5zaWRlIHRoZSBjb21wbGV0ZSBvYmplY3Qgb3IKK2Zyb20gdGhlIGdhbWUgZHJpdmVyLiAgQnkgY29tcGxldGUgb2JqZWN0LCBJIG1lYW4gb2JqZWN0IEEgY2FuIGNhbGwKK3N0YXRpYyBmdW5jdGlvbnMgaW4gdGhlIG9iamVjdCBDIGl0IGluaGVyaXRzLiAgVGhlIHN0YXRpYyBvbmx5IHByb3RlY3RzIGFnYWluc3QKK2V4dGVybmFsIGNhbGwgb3RoZXJzLiAgSW4gYWRkaXRpb24sIHRoaXNfb2JqZWN0KCktPmZvbygpIGlzIGNvbnNpZGVyZWQgYW4KK2ludGVybmFsIGNhbGwgYXMgZmFyIGFzIHRoZSBzdGF0aWMgbGFiZWwgZ29lcy4KKworU2luY2UgdmFyaWFibGVzIGNhbm5vdCBiZSByZWZlcmVuY2VkIGV4dGVybmFsbHksIHRoZXJlIGlzIG5vIG5lZWQgZm9yIGFuCitlcXVpdmFsZW50IGxhYmVsIGZvciB0aGVtLiAgU29tZXdoZXJlIGFsb25nIHRoZSBsaW5lLCBzb21lb25lIGRlY2lkZWQKK3RvIG11ZGR5IHVwIHRoZSB3YXRlcnMgYW5kIHVzZSB0aGUgc3RhdGljIGxhYmVsIHdpdGggdmFyaWFibGVzIHRvIGhhdmUgYQorY29tcGxldGVseSBzZXBhcmF0ZSBtZWFuaW5nLiAgV2hhdCBpcyBldmVuIG1vcmUgbWFkZGVuaW5nIGlzIHRoYXQgdGhpcworbGFiZWwgaGFzIG5vdGhpbmcgdG8gZG8gd2l0aCB3aGF0IGl0IG1lYW5zIGluIHRoZSBDIHByb2dyYW1taW5nCitsYW5ndWFnZS4gIEEgc3RhdGljIHZhcmlhYmxlIGlzIHNpbXBseSBhIHZhcmlhYmxlIHRoYXQgZG9lcyBub3QgZ2V0IHNhdmVkIHRvCitmaWxlIHRocm91Z2ggdGhlIGVmdW4gc2F2ZV9vYmplY3QoKSBhbmQgZG9lcyBub3QgZ2V0IHJlc3RvcmVkIHRocm91Z2gKK3Jlc3RvcmVfb2JqZWN0KCkuICBHbyBmaWd1cmUuCisKK0luIGdlbmVyYWwsIGl0IGlzIGdvb2QgcHJhY3RpY2UgdG8gaGF2ZSBwcml2YXRlIHZhcmlhYmxlcyB3aXRoIHB1YmxpYworZnVuY3Rpb25zLCB1c2luZyBxdWVyeV8qKCkgZnVuY3Rpb25zIHRvIGFjY2VzcyB0aGUgdmFsdWVzIG9mIGluaGVyaXRlZAordmFyaWFibGVzLCBhbmQgc2V0XyooKSwgYWRkXyooKSwgYW5kIG90aGVyIHN1Y2ggZnVuY3Rpb25zIHRvIGNoYW5nZQordGhvc2UgdmFsdWVzLiAgSW4gcmVhbG0gY29kaW5nIHRoaXMgaXMgbm90IHNvbWV0aGluZyBvbmUgcmVhbGx5IGhhcyB0bword29ycnkgYSBsb3QgYWJvdXQuICBBcyBhIG1hdHRlciBvZiBmYWN0LCBpbiByZWFsbSBjb2RpbmcgeW91IGRvIG5vdCBoYXZlCit0byBrbm93IG11Y2ggb2YgYW55dGhpbmcgd2hpY2ggaXMgaW4gdGhpcyBjaGFwdGVyLiAgVG8gYmUgY29tZSBhIHJlYWxseQorZ29vZCByZWFsbSBjb2RlciwgaG93ZXZlciwgeW91IGhhdmUgdG8gYmUgYWJsZSB0byByZWFkIHRoZSBtdWRsaWIKK2NvZGUuICBBbmQgbXVkbGliIGNvZGUgaXMgZnVsbCBvZiB0aGVzZSBsYWJlbHMuICBTbyB5b3Ugc2hvdWxkIHdvcmsKK2Fyb3VuZCB3aXRoIHRoZXNlIGxhYmVscyB1bnRpbCB5b3UgY2FuIHJlYWQgY29kZSBhbmQgdW5kZXJzdGFuZCB3aHkgaXQKK2lzIHdyaXR0ZW4gdGhhdCB3YXkgYW5kIHdoYXQgaXQgbWVhbnMgdG8gb2JqZWN0cyB3aGljaCBpbmhlcml0IHRoZSBjb2RlLgorCitUaGUgZmluYWwgbGFiZWwgaXMgbm9tYXNrLCBhbmQgaXQgZGVhbHMgd2l0aCBhIHByb3BlcnR5IG9mIGluaGVyaXRhbmNlCit3aGljaCBhbGxvd3MgeW91IHRvIHJld3JpdGUgZnVuY3Rpb25zIHdoaWNoIGhhdmUgYWxyZWFkeSBiZWVuIGRlZmluZWQuIAorRm9yIGV4YW1wbGUsIHlvdSBjYW4gc2VlIGFib3ZlIHRoYXQgb2JqZWN0IEEgcmV3cm90ZSB0aGUgZnVuY3Rpb24KK3F1ZXJ5X2NhcF9uYW1lKCkuICBBIHJld3JpdGUgb2YgIGZ1bmN0aW9uIGlzIGNhbGxlZCBvdmVycmlkaW5nIHRoZQorZnVuY3Rpb24uICBUaGUgbW9zdCBjb21tb24gb3ZlcnJpZGUgb2YgYSBmdW5jdGlvbiB3b3VsZCBiZSBpbiBhIGNhc2UKK2xpa2UgdGhpcywgd2hlcmUgYSBjb25kaXRpb24gcGVjdWxpYXIgdG8gb3VyIG9iamVjdCAob2JqZWN0IEEpIG5lZWRzIHRvCitoYXBwZW4gb24gYSBjYWxsIG90IHRoZSBmdW5jdGlvbiB1bmRlciBjZXJ0YWluIGNpcmN1bXN0YW5jZXMuICBQdXR0aW5nIHRlc3QKK2NvZGUgaW50byBvYmplY3QgQyBqdXN0IHNvIG9iamVjdCBBIGNhbiBiZSBhIGdob3N0IGlzIHBsYWluIHNpbGx5LiAgU28KK2luc3RlYWQsIHdlIG92ZXJyaWRlIHF1ZXJ5X2NhcF9uYW1lKCkgaW4gb2JqZWN0IEEsIHRlc3RpbmcgdG8gc2VlIGlmIHRoZQorb2JqZWN0IGlzIGEgZ2hvc3QuICBJZiBzbywgd2UgY2hhbmdlIHdoYXQgaGFwcGVucyB3aGVuIGFub3RoZXIgb2JqZWN0CitxdWVyaWVzIGZvciB0aGUgY2FwIG5hbWUuICBJZiBpdCBpcyBub3QgYSBnaG9zdCwgdGhlbiB3ZSB3YW50IHRoZSByZWd1bGFyCitvYmplY3QgYmVoYXZpb3VyIHRvIGhhcHBlbi4gIFdlIHRoZXJlZm9yZSB1c2UgdGhlIHNjb3BlIHJlc29sdXRpb24KK29wZXJhdG9yICg6OikgdG8gY2FsbCB0aGUgaW5oZXJpdGVkIHZlcnNpb24gb2YgdGhlIHF1ZXJ5X2NhcF9uYW1lKCkKK2Z1bmN0aW9uIGFuZCByZXR1cm4gaXRzIHZhbHVlLgorCitBIG5vbWFzayBmdW5jdGlvbiBpcyBvbmUgd2hpY2ggY2Fubm90IGJlIG92ZXJyaWRkZW4gZWl0aGVyIHRocm91Z2gKK2luaGVyaXRhbmNlIG9yIHRocm91Z2ggc2hhZG93aW5nLiAgU2hhZG93aW5nIGlzIGEgc29ydCBvZiBiYWNrd2FyZHMKK2luaGVyaXRhbmNlIHdoaWNoIHdpbGwgYmUgZGV0YWlsZWQgaW4gdGhlIGFkdmFuY2VkIExQQyB0ZXh0Ym9vay4gIEluIHRoZQorZXhhbXBsZSBhYm92ZSwgbmVpdGhlciBvYmplY3QgQSBub3Igb2JqZWN0IEIgKG5vciBhbnkgb3RoZXIgb2JqZWN0IGZvcgordGhhdCBtYXR0ZXIpIGNhbiBvdmVycmlkZSBxdWVyeV9uYW1lKCkuICBTaW5jZSB3ZSB3YW50IHRvIHVzZQorcXVlcnlfbmFtZSgpIGFzIGEgdW5pcXVlIGlkZW50aWZpZXIgb2Ygb2JqZWN0cywgd2UgZG9uJ3Qgd2FudCBwZW9wbGUKK2Zha2luZyB1cyB0aHJvdWdoIHNoYWRvd2luZyBvciBpbmhlcml0YW5jZS4gIFRoZSBmdW5jdGlvbiB0aGVyZWZvcmUgZ2V0cwordGhlIG5vbWFzayBsYWJlbC4KKworNi41IFN1bW1hcnkKK1Rocm91Z2ggaW5oZXJpdGFuY2UsIGEgY29kZXIgbWF5IG1ha2UgdXNlciBvZiBmdW5jdGlvbnMgZGVmaW5lZCBpbgorb3RoZXIgb2JqZWN0cyBpbiBvcmRlciB0byByZWR1Y2UgdGhlIHRlZGl1bSBvZiBwcm9kdWNpbmcgbWFzc2VzIG9mCitzaW1pbGFyIG9iamVjdHMgYW5kIHRvIGluY3JlYXNlIHRoZSBjb25zaXN0ZW5jeSBvZiBvYmplY3QgYmVoYXZpb3VyIGFjcm9zcworbXVkbGliIG9iamVjdHMuICBMUEMgaW5oZXJpdGFuY2UgYWxsb3dzIG9iamVjdHMgbWF4aW11bSBwcml2ZWxlZGdlcyBpbgorZGVmaW5pbmcgaG93IHRoZWlyIGRhdGEgY2FuIGJlIGFjY2Vzc2VkIGJ5IGV4dGVybmFsIG9iamVjdHMgYXMgd2VsbCBhcworb2JqZWN0cyBpbmhlcml0aW5nIHRoZW0uICBUaGlzIGRhdGEgc2VjdXJpdHkgaXMgbWFpbnRhaW5lZCB0aHJvdWdoIHRoZQora2V5d29yZHMsIG5vbWFzaywgcHJpdmF0ZSwgYW5kIHN0YXRpYy4KKworSW4gYWRkaXRpb24sIGEgY29kZXIgaXMgYWJsZSB0byBjaGFuZ2UgdGhlIGZ1bmN0aW9uYWxpdHkgb2Ygbm9uLXByb3RlY3RlZAorZnVuY3Rpb25zIGJ5IG92ZXJyaWRpbmcgdGhlbS4gIEV2ZW4gaW4gdGhlIHByb2Nlc3Mgb2Ygb3ZlcnJpZGluZyBhCitmdW5jdGlvbiwgaG93ZXZlciwgYW4gb2JqZWN0IG1heSBhY2Nlc3MgdGhlIG9yaWdpbmFsIGZ1bmN0aW9uIHRocm91Z2gKK3RoZSBzY29wZSByZXNvbHV0aW9uIG9wZXJhdG9yLgorCitDb3B5cmlnaHQgKGMpIEdlb3JnZSBSZWVzZSAxOTkzCmRpZmYgLS1naXQgYS9kb2MvS1VSUy9MUEMtS1VSUzIvY2hhcHRlcjcgYi9kb2MvS1VSUy9MUEMtS1VSUzIvY2hhcHRlcjcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYWE4Y2MwZQotLS0gL2Rldi9udWxsCisrKyBiL2RvYy9LVVJTL0xQQy1LVVJTMi9jaGFwdGVyNwpAQCAtMCwwICsxLDI5OCBAQAorSW50ZXJtZWRpYXRlIExQQworRGVzY2FydGVzIG9mIEJvcmcKK05vdmVtYmVyIDE5OTMKKworICAgICAgICAgICAgICAgICAgICAgICAgICAgIENoYXB0ZXIgNzogRGVidWdnaW5nCisKKzcuMSBUeXBlcyBvZiBFcnJvcnMKK0J5IG5vdywgeW91IGhhdmUgbGlrZWx5IHJ1biBpbnRvIGVycm9ycyBoZXJlLCB0aGVyZSwgYW5kIGV2ZXJ5d2hlcmUuICBJbgorZ2VuZXJhbCwgdGhlcmUgYXJlIHRocmVlIHNvcnRzIG9mIGVycm9ycyB5b3UgbWlnaHQgc2VlOiBjb21waWxlIHRpbWUKK2Vycm9ycywgcnVuIHRpbWUgZXJyb3JzLCBhbmQgbWFsZnVuY3Rpb25pbmcgY29kZS4gIE9uIG1vc3QgbXVkcyB5b3UKK3dpbGwgZmluZCBhIHBlcnNvbmFsIGZpbGUgd2hlcmUgeW91ciBjb21waWxlIHRpbWUgZXJyb3JzIGFyZSBsb2dnZWQuICBGb3IKK3RoZSBtb3N0IHBhcnQsIHRoaXMgZmlsZSBjYW4gYmUgZm91bmQgZWl0aGVyIGluIHlvdXIgaG9tZSBkaXJlY3RvcnkgYXMgdGhlCitmaWxlIG5hbWVkICJsb2ciIG9yICIubG9nIiwgb3Igc29tZXdoZXJlIGluIHRoZSBkaXJlY3RvcnkgIi9sb2ciIGFzIGEgZmlsZQord2l0aCB5b3VyIG5hbWUuLiAgSW4gYWRkaXRpb24sIG11ZHMgdGVuZCB0byBrZWVwIGEgbG9nIG9mIHJ1biB0aW1lIGVycm9ycword2hpY2ggb2NjdXIgd2hpbGUgdGhlIG11ZCBpcyB1cC4gIEFnYWluLCB0aGlzIGlzIGdlbmVyYWxseSBmb3VuZCBpbgorIi9sb2ciLiAgT24gTXVkT1MgbXVkcyBpdCBpcyBjYWxsZWQgImRlYnVnLmxvZyIuICBPbiBvdGhlciBtdWRzIGl0IG1heQorYmUgY2FsbGVkIHNvbWV0aGluZyBkaWZmZXJlbnQgbGlrZSAibHBtdWQubG9nIi4gIEFzayB5b3VyIGFkbWluaXN0cmF0b3JzCit3aGVyZSBjb21waWxlIHRpbWUgYW5kIHJ1biB0aW1lIGVycm9ycyBhcmUgZWFjaCBsb2dnZWQgaWYgeW91IGRvIG5vdAorYWxyZWFkeSBrbm93LgorCitDb21waWxlIHRpbWUgZXJyb3JzIGFyZSBlcnJvcnMgd2hpY2ggb2NjdXIgd2hlbiB0aGUgZHJpdmVyIHRyaWVzIHRvIGxvYWQKK2FuIG9iamVjdCBpbnRvIG1lbW9yeS4gIElmLCB3aGVuIHRoZSBkcml2ZXIgaXMgdHJ5aW5nIHRvIGxvYWQgYW4gb2JqZWN0CitpbnRvIG1lbW9yeSwgaXQgZW5jb3VudGVycyB0aGluZ3Mgd2hpY2ggaXQgc2ltcGx5IGRvZXMgbm90IHVuZGVyc3RhbmQKK3dpdGggcmVzcGVjdCB0byB3aGF0IHlvdSB3cm90ZSwgaXQgd2lsbCBmYWlsIHRvIGxvYWQgaXQgaW50byBtZW1vcnkgYW5kIGxvZword2h5IGl0IGNvdWxkIG5vdCBsb2FkIHRoZSBvYmplY3QgaW50byB5b3VyIHBlcnNvbmFsIGVycm9yIGxvZy4gIFRoZSBtb3N0Citjb21tb24gY29tcGlsZSB0aW1lIGVycm9ycyBhcmUgdHlwb3MsIG1pc3Npbmcgb3IgZXh0cmEgKCksIHt9LiBbXSwgb3IgIiIsCithbmQgZmFpbHVyZSB0byBkZWNsYXJlIHByb3Blcmx5IGZ1bmN0aW9ucyBhbmQgdmFyaWFibGVzIHVzZWQgYnkgdGhlCitvYmplY3QuCisKK1J1biB0aW1lIGVycm9ycyBvY2N1ciB3aGVuIHNvbWV0aGluZyB3cm9uZyBoYXBwZW5zIHRvIGFuIG9iamVjdCBpbgorbWVtb3J5IHdoaWxlIGl0IGlzIGV4ZWN1dGluZyBhIHN0YXRlbWVudC4gIEZvciBleGFtcGxlLCB0aGUgZHJpdmVyCitjYW5ub3QgdGVsbCB3aGV0aGVyIHRoZSBzdGF0ZW1lbnQgIngveSIgd2lsbCBiZSB2YWxpZCBpbiBhbGwgY2lyY3Vtc3RhbmNlcy4gCitJbiBmYWN0LCBpdCBpcyBhIHZhbGlkIExQQyBleHByZXNzaW9uLiAgWWV0LCBpZiB0aGUgdmFsdWUgb2YgeSBpcyAwLCB0aGVuIGEKK3J1biB0aW1lIGVycm9yIHdpbGwgb2NjdXIgc2luY2UgeW91IGNhbm5vdCBkaXZpZGUgYnkgMC4gIFdoZW4gdGhlIGRyaXZlcgorcnVucyBhY3Jvc3MgYW4gZXJyb3IgZHVyaW5nIHRoZSBleGVjdXRpb24gb2YgYSBmdW5jdGlvbiwgaXQgYWJvcnRzCitleGVjdXRpb24gb2YgdGhlIGZ1bmN0aW9uIGFuZCBsb2dzIGFuIGVycm9yIHRvIHRoZSBnYW1lJ3MgcnVuIHRpbWUgZXJyb3IKK2xvZy4gIEl0IHdpbGwgYWxzbyBzaG93IHRoZSBlcnJvciB0byB0aGlzX3BsYXllcigpLCBpZiBkZWZpbmVkLCBpZiB0aGUgcGxheWVyCitpcyBhIGNyZWF0b3IsIG9yIGl0IHdpbGwgc2hvdyAiV2hhdD8iIHRvIHBsYXllcnMuICBNb3N0IGNvbW1vbiBjYXVzZXMKK2ZvciBydW4gdGltZSBlcnJvcnMgYXJlIGJhZCB2YWx1ZXMgYW5kIHRyeWluZyB0byBwZXJmb3JtIG9wZXJhdGlvbnMgd2l0aAorZGF0YSB0eXBlcyBmb3Igd2hpY2ggdGhvc2Ugb3BlcmF0aW9ucyBhcmUgbm90IGRlZmluZWQuCisKK1RoZSBtb3N0IGluc2lkZW91cyB0eXBlIG9mIGVycm9yLCBob3dldmVyLCBpcyBwbGFpbiBtYWxmdW5jdGlvbmluZworY29kZS4gIFRoZXNlIGVycm9ycyBkbyBub3QgbG9nLCBzaW5jZSB0aGUgZHJpdmVyIG5ldmVyIHJlYWxseSByZWFsaXplcyB0aGF0Cithbnl0aGluZyBpcyB3cm9uZy4gIEluIHNob3J0LCB0aGlzIGVycm9yIGhhcHBlbnMgd2hlbiB5b3UgdGhpbmsgdGhlIGNvZGUKK3NheXMgb25lIHRoaW5nLCBidXQgaW4gZmFjdCBpdCBzYXlzIGFub3RoZXIgdGhpbmcuICBQZW9wbGUgdG9vIG9mdGVuCitlbmNvdW50ZXIgdGhpcyBidWcgYW5kIGF1dG9tYXRpY2FsbHkgaW5zaXN0IHRoYXQgaXQgbXVzdCBiZSBhIG11ZGxpYiBvcgorZHJpdmVyIGJ1Zy4gIEV2ZXJ5b25lIG1ha2VzIGFsbCB0eXBlcyBvZiBlcnJvcnMgdGhvdWdoLCBhbmQgbW9yZSBvZnRlbgordGhhbiBub3Qgd2hlbiBjb2RlIGlzIG5vdCBmdW5jdGlvbmluZyB0aGUgd2F5IHlvdSBzaG91bGQsIGl0IHdpbGwgYmUKK2JlY2F1c2UgeW91IG1pc3JlYWQgaXQuICAKKworNy4yIERlYnVnZ2luZyBDb21waWxlIFRpbWUgRXJyb3JzCitDb21waWxlIHRpbWUgZXJyb3JzIGFyZSBjZXJ0YWlubHkgdGhlIG1vc3QgY29tbW9uIGFuZCBzaW1wbGVzdCBidWdzIHRvCitkZWJ1Zy4gIE5ldyBjb2RlcnMgb2Z0ZW4gZ2V0IGZydXN0cmF0ZWQgYnkgdGhlbSBkdWUgdG8gdGhlIG9ic2N1cmUKK25hdHVyZSBvZiBzb21lIGVycm9yIG1lc3NhZ2VzLiAgTmV2ZXJ0aGVsZXNzLCBvbmNlIGEgcGVyc29uIGJlY29tZXMKK3VzZWQgdG8gdGhlIGVycm9yIG1lc3NhZ2VzIGdlbmVyYXRlZCBieSB0aGVpciBkcml2ZXIsIGRlYnVnZ2luZyBjb21waWxlCit0aW1lIGVycm9ycyBiZWNvbWVzIHV0dGVybHkgcm91dGluZS4KKworSW4geW91ciBlcnJvciBsb2csIHRoZSBkcml2ZXIgd2lsbCB0ZWxsIHlvdSB0aGUgdHlwZSBvZiBlcnJvciBhbmQgb24gd2hpY2gKK2xpbmUgaXQgZmluYWxseSBub3RpY2VkIHRoZXJlIHdhcyBhbiBlcnJvci4gIE5vdGUgdGhhdCB0aGlzIGlzIG5vdCBvbiB3aGljaAorbGluZSB0aGUgYWN0dWFsIGVycm9yIG5lY2Vzc2FyaWx5IGV4aXN0cy4gIFRoZSBtb3N0IGNvbW1vbiBjb21waWxlIHRpbWUKK2Vycm9yLCBiZXNpZGVzIHRoZSB0eXBvLCBpcyB0aGUgbWlzc2luZyBvciBzdXBlcmZsdW91cyBwYXJlbnRoZXNlcywKK2JyYWNrZXRzLCBicmFjZXMsIG9yIHF1b3Rlcy4gIFlldCB0aGlzIGVycm9yIGlzIHRoZSBvbmUgdGhhdCBtb3N0IGJhZmZsZXMKK25ldyBjb2RlcnMsIHNpbmNlIHRoZSBkcml2ZXIgd2lsbCBub3Qgbm90aWNlIHRoZSBtaXNzaW5nIG9yIGV4dHJhIHBpZWNlCit1bnRpbCB3ZWxsIGFmdGVyIHRoZSBvcmlnaW5hbC4gIFRha2UgZm9yIGV4YW1wbGUgdGhlIGZvbGxvd2luZyBjb2RlOgorCisxIGludCB0ZXN0KHN0cmluZyBzdHIpIHsKKzIgICAgaW50IHg7CiszICAgIGZvcih4ID0wOyB4PDEwOyB4KyspCis0ICAgICAgICB3cml0ZSh4KyJcbiIpOworNSAgICB9Cis2ICAgIHdyaXRlKCJEb25lLlxuIik7Cis3IH0KKworRGVwZW5kaW5nIG9uIHdoYXQgeW91IGludGVuZGVkLCB0aGUgYWN0dWFsIGVycm9yIGhlcmUgaXMgZWl0aGVyIGF0IGxpbmUgMworKG1lYW5pbmcgeW91IGFyZSBtaXNzaW5nIGEgeykgb3IgYXQgbGluZSA1IChtZWFpbmcgeW91IGhhdmUgYW4gZXh0cmEgfSkuIAorTmV2ZXJ0aGVsZXNzLCB0aGUgZHJpdmVyIHdpbGwgcmVwb3J0IHRoYXQgaXQgZm91bmQgYW4gZXJyb3Igd2hlbiBpdCBnZXRzIHRvCitsaW5lIDYuICBUaGUgYWN0dWFsIGRyaXZlciBtZXNzYWdlIG1heSB2YXJ5IGZyb20gZHJpdmVyIHRvIGRyaXZlciwgYnV0IG5vCittYXR0ZXIgd2hpY2ggZHJpdmVyLCB5b3Ugd2lsbCBzZWUgYW4gZXJyb3Igb24gbGluZSA2LCBzaW5jZSB0aGUgfSBpbiBsaW5lIDUKK2lzIGludGVycHJldGVkIGFzIGVuZGluZyB0aGUgZnVuY3Rpb24gdGVzdCgpLiAgQXQgbGluZSA2LCB0aGUgZHJpdmVyIHNlZXMgdGhhdAoreW91IGhhdmUgYSB3cml0ZSgpIHNpdHRpbmcgb3V0c2lkZSBhbnkgZnVuY3Rpb24gZGVmaW5pdGlvbiwgYW5kIHRodXMKK3JlcG9ydHMgYW4gZXJyb3IuICBHZW5lcmFsbHksIHRoZSBkcml2ZXIgd2lsbCBhbHNvIGdvIG9uIHRvIHJlcG9ydCB0aGF0IGl0Citmb3VuZCBhbiBlcnJvciBhdCBsaW5lIDcgaW4gdGhlIGZvcm0gb2YgYW4gZXh0cmEgfS4KKworVGhlIHNlY3JldCB0byBkZWJ1Z2dpbmcgdGhlc2UgaXMgY29kaW5nIHN0eWxlLiAgSGF2aW5nIGNsb3NpbmcgfSBtYXRjaAordXAgdmVydGljYWxseSB3aXRoIHRoZSBjbGF1c2VzIHRoZXkgY2xvc2Ugb3V0IGhlbHBzIHlvdSBzZWUgd2hlcmUgeW91IGFyZQorbWlzc2luZyB0aGVtIHdoZW4geW91IGFyZSBkZWJ1Z2dpbmcgY29kZS4gIFNpbWlsYXJseSwgd2hlbiB1c2luZworbXVsdGlwbGUgc2V0cyBvZiBwYXJlbnRoZXNlcywgc3BhY2Ugb3V0IGRpZmZlcmVudCBncm91cHMgbGlrZSB0aGlzOgorICAgIGlmKCAoeD1zaXplb2Yod2hvPXVzZXJzKCkpID4gKCAoeSt6KS8oYS1iKSArICgtKHJhbmRvbSg3KSkpICkgKSAKK0FzIHlvdSBjYW4gc2VlLCB0aGUgcGFyZW50aGVzZXMgZm9yIHRoZSBmb3IoKSBzdGF0ZW1lbnQsIGFyZSBzcGFjZWQgb3V0Citmcm9tIHRoZSByZXN0IG9mIHRoZSBzdGF0ZW1lbnQuICBJbiBhZGRpdGlvbiwgaW5kaXZpZHVhbCBzdWItZ3JvdXBzIGFyZQorc3BhY2VkIHNvIHRoZXkgY2FuIGVhc2lseSBiZSBzb3J0ZWQgb3V0IGluIHRoZSBldmVudCBvZiBhbiBlcnJvci4KKworT25jZSB5b3UgaGF2ZSBhIGNvZGluZyBzdHlsZSB3aGljaCBhaWRzIGluIHBpY2tpbmcgdGhlc2Ugb3V0LCB5b3UgbGVhcm4KK3doaWNoIGVycm9yIG1lc3NhZ2VzIHRlbmQgdG8gaW5kaWNhdGUgdGhpcyBzb3J0IG9mIGVycm9yLiAgV2hlbgorZGVidWdnaW5nIHRoaXMgc29ydCBvZiBlcnJvciwgeW91IHRoZW4gdmlldyBhIHNlY3Rpb24gb2YgY29kZSBiZWZvcmUgYW5kCithZnRlciB0aGUgbGluZSBpbiBxdWVzdGlvbi4gIEluIG1vc3QgYWxsIGNhc2VzLCB5b3Ugd2lsbCBjYXRjaCB0aGUgYnVnIHJpZ2h0CitvZmYuCisKK0Fub3RoZXIgY29tbW9uIGNvbXBpbGUgdGltZSBlcnJvciBpcyB3aGVyZSB0aGUgZHJpdmVyIHJlcG9ydHMgYW4KK3Vua25vd24gaWRlbnRpZmllci4gIEdlbmVyYWxseSwgdHlwb3MgYW5kIGZhaWx1cmUgdG8gZGVjbGFyZSB2YXJpYWJsZXMKK2NhdXNlcyB0aGlzIHNvcnQgb2YgZXJyb3IuICBGb3J0dW5hdGVseSwgdGhlIGVycm9yIGxvZyB3aWxsIGFsbW9zdCBhbHdheXMKK3RlbGwgeW91IGV4YWN0bHkgd2hlcmUgdGhlIGVycm9yIGlzLiAgU28gd2hlbiBkZWJ1Z2dpbmcgaXQsIGVudGVyIHRoZQorZWRpdG9yIGFuZCBmaW5kIHRoZSBsaW5lIGluIHF1ZXN0aW9uLiAgSWYgdGhlIHByb2JsZW0gaXMgd2l0aCBhIHZhcmlhYmxlIGFuZAoraXMgbm90IGEgdHlwbywgbWFrZSBzdXJlIHlvdSBkZWNsYXJlZCBpdCBwcm9wZXJseS4gIE9uIHRoZSBvdGhlciBoYW5kLCBpZgoraXQgaXMgYSB0eXBvLCBzaW1wbHkgZml4IGl0IQorCitPbmUgdGhpbmcgdG8gYmV3YXJlIG9mLCBob3dldmVyLCBpcyB0aGF0IHRoaXMgZXJyb3Igd2lsbCBzb21ldGltZXMgYmUKK3JlcG9ydGVkIGluIGNvbmp1bmN0aW9uIHdpdGggYSBtaXNzaW5nIHBhcmVudGhlc2VzLCBicmFja2V0cywgb3IgYnJhY2VzCit0eXBlIGVycm9yLiAgSW4gdGhlc2Ugc2l0dWF0aW9ucywgeW91ciBwcm9ibGVtIHdpdGggYW4gdW5rbm93biBpZGVudGlmaWVyCitpcyBvZnRlbiBib2d1cy4gIFRoZSBkcml2ZXIgbWlzcmVhZHMgdGhlIHdheSB0aGUge30gb3Igd2hhdGV2ZXIgYXJlCitzZXR1cCwgYW5kIHRodXMgZ2V0cyB2YXJpYWJsZSBkZWNsYXJhdGlvbnMgY29uZnVzZWQuICBUaGVyZWZvcmUgbWFrZQorc3VyZSBhbGwgb3RoZXIgY29tcGlsZSB0aW1lIGVycm9ycyBhcmUgY29ycmVjdGVkIGJlZm9yZSBib3RoZXJpbmcgd2l0aAordGhlc2UgdHlwZXMgb2YgZXJyb3JzLgorCitJbiB0aGUgc2FtZSBjbGFzcyB3aXRoIHRoZSBhYm92ZSBlcnJvciwgaXMgdGhlIGdlbmVyYWwgc3ludGF4IGVycm9yLiAgVGhlCitkcml2ZXIgZ2VuZXJhdGVzIHRoaXMgZXJyb3Igd2hlbiBpdCBzaW1wbHkgZmFpbHMgdG8gdW5kZXJzdGFuZCB3aGF0IHlvdQorc2FpZC4gIEFnYWluLCB0aGlzIGlzIG9mdGVuIGNhdXNlZCBieSB0eXBvcywgYnV0IGNhbiBhbHNvIGJlIGNhdXNlZCBieSBub3QKK3Byb3Blcmx5IHVuZGVyc3RhbmRpbmcgdGhlIHN5bnRheCBvZiBhIGNlcnRhaW4gZmVhdHVyZSBsaWtlIHdyaXRpbmcgYSBmb3IoKQorc3RhdGVtZW50OiBmb3IoeD0wLCB4PDEwLCB4KyspLiAgSWYgeW91IGdldCBhbiBlcnJvciBsaWtlIHRoaXMgd2hpY2ggaXMKK25vdCBhIHN5bnRheCBlcnJvciwgdHJ5IHJldmlld2luZyB0aGUgc3ludGF4IG9mIHRoZSBzdGF0ZW1lbnQgaW4gd2hpY2ggdGhlCitlcnJvciBpcyBvY2N1cnJpbmcuCisKKzcuMyBEZWJ1Z2dpbmcgUnVuIFRpbWUgRXJyb3JzCitSdW4gdGltZSBlcnJvcnMgYXJlIG11Y2ggbW9yZSBjb21wbGV4IHRoYW4gdGhlaXIgY29tcGlsZSB0aW1lCitjb3VudGVycGFydHMuICBGb3J0dW5hdGVseSB0aGVzZSBlcnJvcnMgZG8gZ2V0IGxvZ2dlZCwgdGhvdWdoIG1hbnkKK2NyZWF0b3JzIGRvIG5vdCByZWFsaXNlIG9yIHRoZXkgZG8gbm90IGtub3cgd2hlcmUgdG8gbG9vay4gIFRoZSBlcnJvciBsb2cKK2ZvciBydW4gdGltZSBlcnJvcnMgYXJlIGFsc28gZ2VuZXJhbGx5IG11Y2ggbW9yZSBkZXRhaWxlZCB0aGFuIGNvbXBpbGUKK3RpbWUgZXJyb3JzLCBtZWFuaW5nIHRoYXQgeW91IGNhbiB0cmFjZSB0aGUgaGlzdG9yeSBvZiB0aGUgZXhlY3V0aW9uIHRyYWluCitmcm9tIHdoZXJlIGl0IHN0YXJ0ZWQgdG8gd2hlcmUgaXQgd2VudCB3cm9uZy4gIFlvdSB0aGVyZWZvcmUgY2FuIHNldHVwCitkZWJ1Z2dpbmcgdHJhcHMgdXNpbmcgcHJlY29tcGlsZXIgc3RhdGVtZW50cyBtdWNoIGVhc2llciB1c2luZyB0aGVzZQorbG9ncy4gIFJ1biB0aW1lIGVycm9ycywgaG93ZXZlciwgdGVuZCB0byByZXN1bHQgZnJvbSB1c2luZyBtb3JlCitjb21wbGV4IGNvZGlnbiB0ZWNobmlxdWVzIHRoYW4gYmVnaW5uZXJzIHRlbmQgdG8gdXNlLCB3aGljaCBtZWFucyB5b3UKK2FyZSBsZWZ0IHdpdGggZXJyb3JzIHdoaWNoIGFyZSBnZW5lcmFsbHkgbW9yZSBjb21wbGljYXRlZCB0aGFuIHNpbXBsZQorY29tcGlsZSB0aW1lIGVycm9ycy4KKworUnVuIHRpbWUgZXJyb3JzIGFsbW9zdCBhbHdheXMgcmVzdWx0IGZyb20gbWlzdXNpbmcgTFBDIGRhdGEgdHlwZXMuIAorTW9zdCBjb21tb25seSwgdHJ5aW5nIHRvIGRvIGNhbGwgb3RoZXJzIHVzaW5nIG9iamVjdCB2YXJpYWJsZXMgd2hpY2ggYXJlCitOVUxMLCBpbmRleGluZyBvbiBtYXBwaW5nLCBhcnJheSwgb3Igc3RyaW5nIHZhcmlhYmxlcyB3aGljaCBhcmUKK05VTEwsIG9yIHBhc3NpbmcgYmFkIGFyZ3VtZW50cyB0byBmdW5jdGlvbnMuICBXZSB3aWxsIGxvb2sgYXQgYSByZWFsCitydW4gdGltZSBlcnJvciBsb2cgZnJvbSBOaWdodG1hcmU6CisKK0JhZCBhcmd1bWVudCAxIHRvIGV4cGxvZGUoKQorcHJvZ3JhbTogYmluL3N5c3RlbS9fZ3JlcC5jLCBvYmplY3Q6IGJpbi9zeXN0ZW0vX2dyZXAKK2xpbmUgMzIKKycgICAgICAgY21kX2hvb2snIGluICcgICAgICAgIHN0ZC9saXZpbmcuYycgKCcgICAgICAKK3N0ZC91c2VyIzQwMDInKWxpbmUgODMKKycgICAgICAgY21kX2dyZXAnIGluICcgIGJpbi9zeXN0ZW0vX2dyZXAuYycgKCcgICAKK2Jpbi9zeXN0ZW0vX2dyZXAnKWxpbmUgMzIgICAgIAorQmFkIGFyZ3VtZW50IDIgdG8gbWVzc2FnZSgpCitwcm9ncmFtOiBhZG0vb2JqL3NpbXVsX2VmdW4uYywgb2JqZWN0OiBhZG0vb2JqL3NpbXVsX2VmdW4KK2xpbmUgMzQKKycgICAgICAgY21kX2hvb2snIGluICcgICAgICAgIHN0ZC9saXZpbmcuYycgKCcgICAgICAKK3N0ZC91c2VyIzQ5NTcnKWxpbmUgODMKKycgICAgICAgY21kX2xvb2snIGluICcgIGJpbi9tb3J0YWwvX2xvb2suYycgKCcgICAKK2Jpbi9tb3J0YWwvX2xvb2snKWxpbmUgMjMKKycgZXhhbWluZV9vYmplY3QnIGluICcgIGJpbi9tb3J0YWwvX2xvb2suYycgKCcgICAKK2Jpbi9tb3J0YWwvX2xvb2snKWxpbmUgNzgKKycgICAgICAgICAgd3JpdGUnIGluICdhZG0vb2JqL3NpbXVsX2VmdW4uYycgKCcgCithZG0vb2JqL3NpbXVsX2VmdW4nKWxpbmUgMzQKK0JhZCBhcmd1bWVudCAxIHRvIGNhbGxfb3RoZXIoKQorcHJvZ3JhbTogYmluL3N5c3RlbS9fY2xvbmUuYywgb2JqZWN0OiBiaW4vc3lzdGVtL19jbG9uZQorbGluZSAyNQorJyAgICAgICBjbWRfaG9vaycgaW4gJyAgICAgICAgc3RkL2xpdmluZy5jJyAoJyAgICAgIAorc3RkL3VzZXIjMzczNCcpbGluZSA4MworJyAgICAgIGNtZF9jbG9uZScgaW4gJyBiaW4vc3lzdGVtL19jbG9uZS5jJyAoJyAgCitiaW4vc3lzdGVtL19jbG9uZScpbGluZSAyNQorSWxsZWdhbCBpbmRleAorcHJvZ3JhbTogc3RkL21vbnN0ZXIuYywgb2JqZWN0Ogord2l6YXJkcy96YWtuYWlmZW4vc3B5IzcyMDUgbGluZSA3NgorJyAgICAgaGVhcnRfYmVhdCcgaW4gJyAgICAgICBzdGQvbW9uc3Rlci5jJworKCd3aXphcmRzL3pha25haWZlbi9zcHkjNzIwNScpbGluZQorNzYgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCisKK0FsbCBvZiB0aGUgZXJyb3JzLCBleGNlcHQgdGhlIGxhc3Qgb25lLCBpbnZvbHZlIHBhc3NpbmcgYSBiYWQgYXJndW1lbnQgdG8gYQorZnVuY3Rpb24uICBUaGUgZmlyc3QgYnVnLCBpbnZvbHZlcyBwYXNzaW5nIGEgYmFkIGZpcnN0IGFydW1lbnQgdG8gdGhlIGVmdW4KK2V4cGxvZGUoKS4gIFRoaXMgZWZ1biBleHBlY3RzIGEgc3RyaW5nIGFzIGl0cyBmaXJzdCBhcmdtZW50LiAgSW4gZGVidWdnaW5nCit0aGVzZSBraW5kcyBvZiBlcnJvcnMsIHdlIHdvdWxkIHRoZXJlZm9yZSBnbyB0byBsaW5lIDMyIGluCisvYmluL3N5c3RlbS9fZ3JlcC5jIGFuZCBjaGVjayB0byBzZWUgd2hhdCB0aGUgZGF0YSB0eXBlIG9mIHRoZSBmaXJzdAorYXJndW1lbnQgYmVpbmcgcGFzc2VkIGluIGZhY3QgaXMuICBJbiB0aGlzIHBhcnRpY3VsYXIgY2FzZSwgdGhlIHZhbHVlIGJlaW5nCitwYXNzZWQgc2hvdWxkIGJlIGEgc3RyaW5nLgorCitJZiBmb3Igc29tZSByZWFzb24gSSBoYXMgYWN0dWFsbHkgcGFzc2VkIHNvbWV0aGluZyBlbHNlLCBJIHdvdWxkIGJlIGRvbmUKK2RlYnVnZ2luZyBhdCB0aGF0IHBvaW50IGFuZCBmaXggaXQgc2ltcGx5IGJ5IG1ha2luZyBzdXJlIHRoYXQgSSB3YXMKK3Bhc3NpbmcgYSBzdHJpbmcuICBUaGlzIHNpdHVhdGlvbiBpcyBtb3JlIGNvbXBsZXguICBJIG5vdyBuZWVkIHRvIHRyYWNlCit0aGUgYWN0dWFsIHZhbHVlcyBjb250YWluZWQgYnkgdGhlIHZhcmlhYmxlIGJlaW5nIHBhc3NlZCB0byBleHBsb2RlLCBzbwordGhhdCBJIGNhbiBzZWUgd2hhdCBpdCBpcyB0aGUgZXhwbG9kZSgpIGVmdW4gc2VlcyB0aGF0IGl0IGlzIGJlaW5nIHBhc3NlZC4KKworVGhlIGxpbmUgaXMgcXVlc3Rpb24gaXMgdGhpczoKKyBib3JnW2ZpbGVzW2ldXSA9IHJlZ2V4cChleHBsb2RlKHJlYWRfZmlsZShmaWxlc1tpXSksICJcbiIpLCBleHApOword2hlcmUgZmlsZXMgaXMgYW4gYXJyYXkgZm9yIHN0cmluZ3MsIGkgaXMgYW4gaW50ZWdlciwgYW5kIGJvcmcgaXMgYSBtYXBwaW5nLiAKK1NvIGNsZWFybHkgd2UgbmVlZCB0byBmaW5kIG91dCB3aGF0IHRoZSB2YWx1ZSBvZiByZWFkX2ZpbGUoZmlsZXNbaV0pIGlzLiAKK1dlbGwsIHRoaXMgZWZ1biByZXR1cm5zIGEgc3RyaW5nIHVubGVzcyB0aGUgZmlsZSBpbiBxdWVzdGlvbiBkb2VzIG5vdCBleGlzdCwKK3RoZSBvYmplY3QgaW4gcXVlc3Rpb24gZG9lcyBub3QgaGF2ZSByZWFkIGFjY2VzcyB0byB0aGUgZmlsZSBpbiBxdWVzdGlvbiwgb3IKK3RoZSBmaWxlIGluIHF1ZXN0aW9uIGlzIGFuIGVtcHR5IGZpbGUsIGluIHdoaWNoIGNhc2VzIHRoZSBmdW5jdGlvbiB3aWxsCityZXR1cm4gTlVMTC4gIENsZWFybHksIG91ciBwcm9ibGVtIGlzIHRoYXQgb25lIG9mIHRoZXNlIGV2ZW50cyBtdXN0CitoYXZlIGhhcHBlbmVkLiAgSW4gb3JkZXIgdG8gc2VlIHdoaWNoLCB3ZSBuZWVkIHRvIGxvb2sgYXQgZmlsZXNbaV0uCisKK0V4YW1pbmluZyB0aGUgY29kZSwgdGhlIGZpbGVzIGFycmF5IGdldHMgaXRzIHZhbHVlIHRocm91Z2ggdGhlIGdldF9kaXIoKQorZWZ1bi4gIFRoaXMgcmV0dXJucyBhbGwgdGhlIGZpbGVzIGluIGEgZGlyZWN0b3J5IGlmIHRoZSBvYmplY3QgaGFzIHJlYWQgYWNjZXNzCit0byB0aGUgZGlyZWN0b3J5LiAgVGhlcmVmb3JlIHRoZSBwcm9ibGVtIGlzIG5laXRoZXIgbGFjayBvZiBhY2Nlc3Mgb3Igbm9uLQorZXhpc3RlbnQgZmlsZXMuICBUaGUgZmlsZSB3aGljaCBjYXVzZWQgdGhpcyBlcnJvciB0aGVuIG11c3QgaGF2ZSBiZWVuIGFuCitlbXB0eSBmaWxlLiAgQW5kLCBpbiBmYWN0LCB0aGF0IGlzIGV4YWN0bHkgd2hhdCBjYXVzZWQgdGhpcyBlcnJvci4gIFRvCitkZWJ1ZyB0aGF0LCB3ZSB3b3VsZCBwYXNzIGZpbGVzIHRocm91Z2ggdGhlIGZpbHRlcigpIGVmdW4gYW5kIG1ha2UKK3N1cmUgdGhhdCBvbmx5IGZpbGVzIHdpdGggYSBmaWxlIHNpemUgZ3JlYXRlciB0aGFuIDAgd2VyZSBhbGxvd2VkIGludG8gdGhlCithcnJheS4KKworVGhlIGtleSB0byBkZWJ1Z2dpbmcgYSBydW4gdGltZSBlcnJvciBpcyB0aGVyZWZvcmUga25vd2luZyBleGFjdGx5IHdoYXQKK3RoZSB2YWx1ZXMgb2YgYWxsIHZhcmlhYmxlcyBpbiBxdWVzdGlvbiBhcmUgYXQgdGhlIGV4YWN0IG1vbWVudCB3aGVyZSB0aGUKK2J1ZyBjcmVhdGVkLiAgV2hlbiByZWFkaW5nIHlvdXIgcnVuIHRpbWUgbG9nLCBiZSBjYXJlZnVsIHRvIHNlcGFyYXRlIHRoZQorb2JqZWN0IGZyb20gdGhlIGZpbGUgaW4gd2hpY2ggdGhlIGJ1ZyBvY2N1cnJlZC4gIEZvciBleGFtcGxlLCB0aGUKK2luZGV4aW5nIGVycm9yIGFib3ZlIGNhbWUgYWJvdXQgaW4gdGhlIG9iamVjdCAvd2l6YXJkcy96YWtuYWlmZW4vc3B5LAorYnV0IHRoZSBlcnJvciBvY2N1cmVkIHdoaWxlIHJ1bm5pbmcgYSBmdW5jdGlvbiBpbiAvc3RkL21vbnN0ZXIuYywgd2hpY2gKK3RoZSBvYmplY3QgaW5oZXJpdGVkLgorCis3LjQgTWFsZnVuY3Rpb25pbmcgQ29kZQorVGhlIG5hc3RpZXN0IHByb2JsZW0gdG8gZGVhbCB3aXRoIGlzIHdoZW4geW91ciBjb2RlIGRvZXMgbm90IGJlaGF2ZSB0aGUKK3dheSB5b3UgaW50ZW5kZWQgaXQgdG8gYmVoYXZlLiAgVGhlIG9iamVjdCBsb2FkcyBmaW5lLCBhbmQgaXQgcHJvZHVjZXMgbm8KK3J1biB0aW1lIGVycm9ycywgYnV0IHRoaW5ncyBzaW1wbHkgZG8gbm90IGhhcHBlbiB0aGUgd2F5IHRoZXkgc2hvdWxkLiAKK1NpbmNlIHRoZSBkcml2ZXIgZG9lcyBub3Qgc2VlIGEgcHJvYmxlbSB3aXRoIHRoaXMgdHlwZSBvZiBjb2RlLCBubyBsb2dzCithcmUgcHJvZHVjZWQuICBZb3UgdGhlcmVmb3JlIG5lZWQgdG8gZ28gdGhyb3VnaCB0aGUgY29kZSBsaW5lIGJ5IGxpbmUKK2FuZCBmaWd1cmUgb3V0IHdoYXQgaXMgaGFwcGVuaW5nLgorCitTdGVwIDE6IExvY2F0ZSB0aGUgbGFzdCBsaW5lIG9mIGNvZGUgeW91IGtuZXcgc3VjY2Vzc2Z1bGx5IGV4ZWN1dGVkCitTdGVwIDI6IExvY2F0ZSB0aGUgZmlyc3QgbGluZSBvZiBjb2RlIHdoZXJlIHlvdSBrbm93IHRoaW5ncyBhcmUgZ29pbmcKK3dyb25nCitTdGVwIDM6IEV4YW1pbmUgdGhlIGZsb3cgb2YgdGhlIGNvZGUgZnJvbSB0aGUga25vd24gc3VjY2Vzc2Z1bCBwb2ludCB0bwordGhlIGZpcnN0IGtub3duIHVuc3VjY2Vzc2Z1bCBwb2ludC4KKworTW9yZSBvZnRlbiB0aGFuIG5vdCwgdGhlc2UgcHJvYmxlbXMgb2NjdXJyIHdoZW4geW91IGFyZSB1c2luZyBpZigpCitzdGF0ZW1lbnRzIGFuZCBub3QgYWNjb3VudGluZyBmb3IgYWxsIHBvc3NpYmlsaXRpZXMuICBGb3IgZXhhbXBsZToKKworaW50IGNtZChzdHJpbmcgdG1wKSB7CisgICAgaWYoc3RyaW5ncCh0bXApKSByZXR1cm4gZG9fYSgpCisgICAgZWxzZSBpZihpbnRwKHRtcCkpIHJldHVybiBkb19iKCkKKyAgICByZXR1cm4gMTsKK30KKworSW4gdGhpcyBjb2RlLCB3ZSBmaW5kIHRoYXQgaXQgY29tcGlsZXMgYW5kIHJ1bnMgZmluZS4gIFByb2JsZW0gaXMgbm90aGluZworaGFwcGVucyB3aGVuIGl0IGlzIGV4ZWN1dGVkLiAgV2Uga25vdyBmb3Igc3VyZSB0aGF0IHRoZSBjbWQoKSBmdW5jdGlvbgoraXMgZ2V0dGluZyBleGVjdXRlZCwgc28gd2UgY2FuIHN0YXJ0IHRoZXJlLiAgV2UgYWxzbyBrbm93IHRoYXQgYSB2YWx1ZSBvZgorMSBpcyBpbiBmYWN0IGJlaW5nIHJldHVybmVkLCBzaW5jZSB3ZSBkbyBub3Qgc2VlICJXaGF0PyIgd2hlbiB3ZSBlbnRlcgordGhlIGNvbW1hbmQuICBJbW1lZGlhdGVseSwgd2UgY2FuIHNlZSB0aGF0IGZvciBzb21lIHJlYXNvbiB0aGUKK3ZhcmlhYmxlIHRtcCBoYXMgYSB2YWx1ZSBvdGhlciB0aGFuIHN0cmluZyBvciBpbnQuICBBcyBpdCB0dXJucyBvdXQsIHdlCitpc3N1ZWQgdGhlIGNvbW1hbmQgd2l0aG91dCBwYXJhbWV0ZXJzLCBzbyB0bXAgd2FzIE5VTEwgYW5kIGZhaWxlZAorYWxsIHRlc3RzLgorCitUaGUgYWJvdmUgZXhhbXBsZSBpcyByYXRoZXIgc2ltcGxpc3RpYywgYm9yZGVyaW5nIG9uIHNpbGx5LiAKK05ldmVydGhlbGVzcywgaXQgZ2l2ZXMgeW91IGFuIGlkZWEgb2YgaG93IHRvIGV4YW1pbmUgdGhlIGZsb3cgb2YgdGhlCitjb2RlIHdoZW4gZGVidWdnaW5nIG1hbGZ1bmN0aW9uaW5nIGNvZGUuICBPdGhlciB0b29scyBhcmUgYXZhaWxhYmxlIGFzCit3ZWxsIHRvIGhlbHAgaW4gZGVidWdnaW5nIGNvZGUuICBUaGUgbW9zdCBpbXBvcnRhbnQgdG9vbCBpcyB0aGUgdXNlIG9mCit0aGUgcHJlY29tcGlsZXIgdG8gZGVidWcgY29kZS4gIFdpdGggdGhlIGNvZGUgYWJvdmUsIHdlIGhhdmUgYSBjbGF1c2UKK2NoZWNraW5nIGZvciBpbnRlZ2VycyBiZWluZyBwYXNzZWQgdG8gY21kKCkuICBXaGVuIHdlIHR5cGUgImNtZCAxMCIsCit3ZSBhcmUgZXhwZWN0aW5nIGRvX2IoKSB0byBleGVjdXRlLiAgV2UgbmVlZCB0byBzZWUgd2hhdCB0aGUgdmFsdWUgb2YKK3RtcCBpcyBiZWZvcmUgd2UgZ2V0IGludG8gdGhlIGxvb3A6CisKKyNkZWZpbmUgREVCVUcKK2ludCBjbWQoc3RyaW5nIHRtcCkgeworI2lmZGVmIERFQlVHCisgICAgd3JpdGUodG1wKTsKKyNlbmRpZgorICAgIGlmKHN0cmluZ3AodG1wKSkgcmV0dXJuIGRvX2EoKTsKKyAgICBlbHNlIGlmKGludHAodG1wKSkgcmV0dXJuIGRvX2IoKTsKKyAgICBlbHNlIHJldHVybiAxOworfQorCitXZSBmaW5kIG91dCBpbW1lZGlhdGVseSB1cG9uIGlzc3VpbmcgdGhlIGNvbW1hbmQsIHRoYXQgdG1wIGhhcyBhCit2YWx1ZSBvZiAiMTAiLiAgTG9va2luZyBiYWNrIGF0IHRoZSBjb2RlLCB3ZSBzbGFwIG91cnNlbHZlcyBzaWxseSwKK2ZvcmdldHRpbmcgdGhhdCB3ZSBoYXZlIHRvIGNoYW5nZSBjb21tYW5kIGFyZ3VtZW50cyB0byBpbnRlZ2VycyB1c2luZworc3NjYW5mKCkgYmVmb3JlIGV2YWx1YXRpbmcgdGhlbSBhcyBpbnRlZ2Vycy4KKworNy41IFN1bW1hcnkKK1RoZSBrZXkgdG8gZGVidWdnaW5nIGFueSBMUEMgcHJvYmxlbSBpcyBhbHdheXMgYmVpbmcgYXdhcmUgb2Ygd2hhdAordGhlIHZhbHVlcyBvZiB5b3VyIHZhcmlhYmxlcyBhcmUgYXQgYW55IGdpdmVuIHN0ZXAgaW4geW91ciBjb2RlLiAgTFBDCitleGVjdXRpb24gcmVkdWNlcyBvbiB0aGUgc2ltcGxlc3QgbGV2ZWwgdG8gY2hhbmdlcyBpbiB2YXJpYWJsZSB2YWx1ZXMsIHNvCitiYWQgdmFsdWVzIGFyZSB3aGF0IGNhdXNlcyBiYWQgdGhpbmdzIHRvIGhhcHBlbiBvbmNlIGNvZGUgaGFzIGJlZW4KK2xvYWRlZCBpbnRvIG1lbW9yeS4gIElmIHlvdSBnZXQgZXJyb3JzIGFib3V0IGJhZCBhcmd1bWVudHMgdG8KK2Z1bmN0aW9ucywgbW9yZSBsaWtlbHkgdGhhbiBub3QgeW91IGFyZSBwYXNzaW5nIGEgTlVMTCB2YWx1ZSB0byBhCitmdW5jdGlvbiBmb3IgdGhhdCBhcmd1bWVudC4gIFRoaXMgaGFwcGVucyBtb3N0IG9mdGVuIHdpdGggb2JqZWN0cywgc2luY2UKK3Blb3BsZSB3aWxsIGRvIG9uZSBvZiB0aGUgZm9sbG93aW5nOgorICAgIDEpIHVzZSBhIHZhbHVlIHRoYXQgd2FzIHNldCB0byBhbiBvYmplY3QgdGhhdCBoYXMgc2luY2UgZGVzdHJ1Y3RlZAorICAgIDIpIHVzZSB0aGUgcmV0dXJuIHZhbHVlIG9mIHRoaXNfcGxheWVyKCkgd2hlbiB0aGVyZSBpcyBubyB0aGlzX3BsYXllcigpCisgICAgMykgdXNlIHRoZSByZXR1cm4gdmFsdWUgb2YgdGhpc19vYmplY3QoKSBqdXN0IGFmdGVyIHRoaXNfb2JqZWN0KCkgd2FzCisgICAgZGVzdHJ1Y3RlZAorCitJbiBhZGRpdGlvbiwgcGVvcGxlIHdpbGwgb2Z0ZW4gcnVuIGludG8gZXJyb3JzIGludm9sdmluZyBpbGxlZ2FsIGluZGV4aW5nIG9yCitpbmRleGluZyBvbiBpbGxlZ2FsIHR5cGVzLiAgTW9zdCBvZnRlbiwgdGhpcyBpcyBiZWNhdXNlIHRoZSBtYXBwaW5nIG9yCithcnJheSBpbiBxdWVzdGlvbiB3YXMgbm90IGluaXRpYWxpemVkLCBhbmQgdGhlcmVmb3JlIGNhbm5vdCBiZSBpbmRleGVkLiAKK1RoZSBrZXkgaXMgdG8ga25vdyBleGFjdGx5IHdoYXQgdGhlIGZ1bGwgdmFsdWUgb2YgdGhlIGFycmF5IG9yIG1hcHBpbmcKK3Nob3VsZCBiZSBhdCB0aGUgcG9pbnQgaW4gcXVlc3Rpb24uICBJbiBhZGRpdGlvbiwgd2F0Y2ggZm9yIHVzaW5nIGluZGV4CitudW1iZXJzIGxhcmdlciB0aGFuIHRoZSBzaXplIG9mIGdpdmVuIGFycmF5cworCitGaW5hbGx5LCBtYWtlIHVzZSBvZiB0aGUgcHJlY29tcGlsZXIgdG8gdGVtcG9yYXJseSB0aHJvdyBvdXQgY29kZSwgb3IKK2ludHJvZHVjZSBjb2RlIHdoaWNoIHdpbGwgc2hvdyB5b3UgdGhlIHZhbHVlcyBvZiB2YXJpYWJsZXMuICBUaGUKK3ByZWNvbXBpbGVyIG1ha2VzIGl0IGVhc3kgdG8gZ2V0IHJpZCBvZiBkZWJ1Z2dpbmcgY29kZSBxdWlja2x5IG9uY2UgeW91CithcmUgZG9uZS4gIFlvdSBjYW4gc2ltcGx5IHJlbW92ZSB0aGUgREVCVUcgZGVmaW5lIHdoZW4geW91IGFyZQorZG9uZS4KKworQ29weXJpZ2h0IChjKSBHZW9yZ2UgUmVlc2UgMTk5MwpkaWZmIC0tZ2l0IGEvZG9jL0tVUlMvUlVMRVMgYi9kb2MvS1VSUy9SVUxFUwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5hYzg4Y2ZjCi0tLSAvZGV2L251bGwKKysrIGIvZG9jL0tVUlMvUlVMRVMKQEAgLTAsMCArMSw2MCBAQAorCQlESUUgWldFSSBHRUJPVEUgSU4gTU9SR0VOR1JBVUVOCisJCT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKworCVdhcyBzb2xsZW4gR2Vib3RlPworCS0tLS0tLS0tLS0tLS0tLS0tLQorCisJV2llIGluIGplZGVtIFNwaWVsIHNvIGhhYmVuIHNpY2ggYXVjaCBpbiB1bnNlcmVtIE1VRCBhbGxlCisJTWl0c3BpZWxlciAoTWFnaWVyIGVpbmdlc2NobG9zc2VuKSBhbiBTcGllbHJlZ2VsbiB6dSBoYWx0ZW4uCisJQWxsZXJkaW5ncyBtYWNoZW4gZGllIFNwaWVsZSBhbSBtZWlzdGVuIFNwYXNzLCBkaWUgZGllCisJd2VuaWdzdGVuIFJlZ2VsbiBiZXNpdHplbi4gCisKKwlVbSB6dSB2ZXJoaW5kZXJuLCBkYXNzIGpldHp0IHNjaG9uIGFuZ2VmYW5nZW4gd2lyZCwgZGFzcworCXVuc2VyIE1VRCBpbiBmZXN0ZSBSZWdlbG4gZ2VkcmFlbmd0IHdpcmQsIGhhYmUgaWNoIG1pY2ggCisJZW50c2NobG9zc2VuLCBzZWxiZXIgZGVtIFNwaWVsIGVpbiBSZWdlbHdlcmsgenUgZ2ViZW4uCisJQWJlciBpY2ggd2VyZGUgZGFmdWVyIHNvcmdlbiwgZGFzcyBzaWUga3VyeiBibGVpYmVuLgorCQorCTEuR2Vib3QgKQlEVSBTT0xMU1QgTkVUVCBTRUlOLgorCisJRGFzIE1VRCBpc3QgZWluIFNwaWVsOyB1bmQgU3BpZWxlIG1hY2hlbiBudXIgZGFubiBTcGFzcywKKwl3ZW5uIG1hbiBzaWNoIG5pY2h0IGdlZ2Vuc2VpdGlnIHZlcnN1Y2h0IGluIGRpZSBQZmFubmUgenUKKwloYXVlbjsgc29taXQgZ2lsdCBkaWVzZSBSZWdlbCBmdWVyIFNwaWVsZXIgd2llIGZ1ZXIgTWFnaWVyLgorCisJMi5HZWJvdCApCURVIFNPTExTVCBESUUgTVVETElCIEVIUkVOIFVORCBWRVJNRUhSRU4uCisKKwlEYXMgTVVEIHN0ZWh0IHVuZCBmYWVsbHQgbWl0IGRlciBHdWV0ZSBzZWluZXIgTXVkbGliOyB1bmQgZGEKKwl1bnNlciBIYXVwdHppZWwgZWluIHNjaG9lbmVzIE1VRCBpc3QsIGlzdCBlcyBkaWUgdm9ycmFuZ2lnZQorCUF1ZmdhYmUgYWxsZXIgTWFnaWVyLCBmdWVyIGRlbiBBdWZiYXUsIGRpZSBXYXJ0dW5nIHVuZCBkaWUKKwlFcmhhbHR1bmcgZGVyIE11ZGxpYiB6dSBzb3JnZW4uCisKKwladW0gVGhlbWEgVmVybWVocnVuZzoKKwktLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworCUVzIGdpYnQgaW4gZWluZW0gTVVEIG5hdHVlcmxpY2ggYXVjaCBub2NoIGFuZGVyZSBBdWZnYWJlbjoKKwktCVJlZ2lvbnNrb29yZGluYXRpb24KKwkJKFJlZ2lvbnNtYWdpZXIsRXJ6bWFnaWVyIGRlcyBWZXJrZWhycykKKwktCVdhaHJ1bmcgZGVzIEdsZWljaGdld2ljaHRlcyBkZXIgS3JhZWZ0ZQorCQkoV2FmZmVuLFJ1ZXN0dW5nZW4sR2VsZCxYUCxNb25zdGVyLHUucy53LikKKwktCVNjaHV0eiBkZXMgTVVEcyB2b3IgU3BpZWx2ZXJkZXJiZXJuLgorCQkoU2hlcmlmZikKKworCURpZXNlIEF1ZmdhYmVuIHNpbmQgYWJlciBrZWluZSBMZWJlbnNhdWZnYWJlbjsgc2llIHNpbmQKKwlBdWZnYWJlbiwgZGllIHNpY2ggZGVuIEdlYm90ZW4gdW50ZXJ6dW9yZG5lbiBoYWJlbi4KKwlJbnNiZXNvbmRlcmUgc29sbGVuIE1hZ2llciwgZGllIG5pY2h0cyB6dXIgVmVybWVocnVuZyBkZXIKKwlNdWRsaWIgYmVpdHJhZ2VuLCBuaWNodCB1ZWJlciBhbmRlcmUgdXJ0ZWlsZW4uCisKKwladW0gVGhlbWEgRWhydW5nOgorCS0tLS0tLS0tLS0tLS0tLS0tCisKKwlIaWVybWl0IG1laW5lIGljaCBkZW4gQXVmcnVmIGFuIGRpZSBNYWdpZXIsIGtlaW5lIE9iamVrdGUKKwl6dSBzY2hyZWliZW4sIGRpZSBkYXMgR2xlaWNodGdld2ljaHQgZGVyIEtyYWVmdGUgdmVybGV0emVuLgorCisJVW5kIGljaCBtZWluZSBkZW4gQXVmcnVmIGFuIGRpZSBNYWdpZXIsIGRhZnVlciB6dSBzb3JnZW4sCisJZGFzcyBlcyBpbiBkaWVzZW0gTVVEIEhlcmF1c2ZvcmRlcnVuZ2VuIGdpYnQsIGRpZSAoenVtaW5kZXN0CisJdGVpbHdlaXNlKSBuaWNodCB1bWdhbmdlbiB3ZXJkZW4ga29lbm5lbi4KKwlOYXR1ZXJsaWNoIGlzdCBkYW1pdCBhdWNoIGdlbWVpbnQsIGRhc3MgU3BpZWxlcm4gbnVyIGluIGRlbgorCUZhZWxsZW4gZ2Vob2xmZW4gd2lyZCwgd28gRmVobGVyIG9kZXIgTHVlY2tlbiBpbiBkZXIgTXVkbGliCisJYXVmdGF1Y2hlbi4KKworCU9scHAsIFNoZXJpZmYgZGVzIE1vcmdlbkdyYXVlbnMKKwlSdW1hdGEsIE11ZEFkbSBkZXMgTW9yZ2VuR3JhdWVucwpkaWZmIC0tZ2l0IGEvZG9jL0tVUlMvUlVMRVMuV0laIGIvZG9jL0tVUlMvUlVMRVMuV0laCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjM0OWYwYjYKLS0tIC9kZXYvbnVsbAorKysgYi9kb2MvS1VSUy9SVUxFUy5XSVoKQEAgLTAsMCArMSw0NiBAQAorVGhlc2UgYXJlIHRoZSBydWxlcyBmb3IgYSB3aXphcmQuCisoV2lyZCBub2NoIHVlYmVyYXJiZWl0ZXQsIGFtIGJlc3RlbiBPbHBwIG9kZXIgUnVtYXRhIGZyYWdlbiwgd2FzCit3aXJrbGljaCBTYWNoZSBpc3QuIEFiZXIgZWluZSBncm9iZSBSaWNodHVuZyB3ZWlzZW4gZGllc2UgImFsdGVuIgorUmVnZWxuIHNjaG9uIDotKQorCisxLiBZb3UgbWF5IG5vdCBoZWxwIG90aGVyIHBsYXllcnMsIGV2ZW4gaWYgdGhleSBsb3N0IHBvaW50cyBkdWUgdG8KKyAgIGxvc3QgY29ubmVjdGlvbi4gVGhleSBoYXZlIHRvIGdvIHRvIHRoZSBwb3N0IG9mZmljZSBhbmQgYXNrIExhcnMsCisgICBvciB1c2UgYnVnLgorCisyLiBOZXZlciBhdHRhY2sgYSBwbGF5ZXIgb3Iga2lsbCBoaW0uIElmIGEgcGxheWVyIGJlaGF2ZXMgYmFkbHksIGZpbGUKKyAgIHRoZSBjb21wbGFpbnQgdG8gTGFycy4KKworMy4gRG8gbm90IG1ha2UgJ2RlYWRseScgdHJhcHBzLiBBIHBsYXllciBtdXN0IG5ldmVyIGRpZSBiZWNhdXNlIGhlIGRpZG4ndAorICAga25vdyB3aGF0IGhhcHBlbnMgaW4gdGhlIG5leHQgcm9vbS4gSWYgc29tZSByb29tIGlzIHZlcnkgZGFuZ2Vyb3VzLAorICAgbWFrZSBzb21lIGhpbnQgKGxpa2UgdGhlIGdpYW50IGZvb3RwcmludHMgYmVzaWRlIHRoZSBnaWFudCBsYWlyKS4KKworNC4gTmV2ZXIgaW5pdGlhbGl6ZSB0aGUgZGVzdGluYXRpb24gb2YgYW4gb2JqZWN0IG91dHNpZGUgeW91ciBjYXN0bGUuIElmIHlvdQorICAgbWFrZSBhIG1vbnN0ZXIgdGhhdCBjYW4gd2FsayBvdXQgb2YgdGhlIGNhc3RsZSwgYmUgc3VyZSB0aGF0IGl0IGlzIGEKKyAgIHZlcnkgbmljZSBtb25zdGVyLgorCis1LiBOZXZlciBnZW5lcmF0ZSBtZXNzYWdlcyB0aGF0IGxvb2tzIGxpa2Ugc29tZXRoaW5nIGl0IGlzbid0IChnb29kIGFuZCBwcmVjaXNlCisgICBydWxlIDotKS4gVGhhdCBpcywgZG9uJ3QgdHJ5IHRvIGZvb2wgdGhlIHBsYXllciB0aGF0IHNvbWVvbmUgc2F5cyBzb21ldGhpbmcKKyAgIHdoZW4gaXQgaXNuJ3QgdHJ1ZSBldGMuCisKKzYuIElmIHlvdSBoYXZlIGEgInRlc3QiIGNoYXJhY3RlciwgbWFrZSBzdXJlIGlzIGlzbid0IHNlZW4gaW4gdGhlIHRvcCBzY29yZQorICAgbGlzdC4gSGUgbXVzdCBubyBiZSB3aXphcmQgZWl0aGVyLgorCis3LiBUcnkgdG8gYXZvaWQgbWFraW5nIGRldmljZXMsIHNpdHVhdGlvbnMgd2hpY2ggbWFrZXMgdGhlIHBsYXllcnMgbG9vc2UKKyAgIGV4cGVyaWVuY2UgaWYgdGhleSBhcmUgYWR2ZW50dXJpbmcgb3IgZXhhbWluaW5nIG9iamVjdHMuIFBsYXllcnMgc2hvdWxkIGJlCisgICByZXdhcmRlZCBmb3IgYWR2ZW50dXJpbmcgYW5kIGRpc2NvdmVyaW5nIHRoaW5ncy4gSWYgdGhleSBnZXQga2lsbGVkLi4uCisgICBXZWxsLCB0aGV5IHdpbGwgdGhlbiBsb29zZSBzb21lIGV4cGVyaWVuY2UsIGJ1dCB0aGlzIGlzIGEgc3BlY2lhbCBjYXNlIQorCis4LiBUaGUgZ2FtZSBpcyBzdXBwb3NlZCB0byBiZSBpbiB0aGUgImxvbmcgZGlzdGFudCBwYXN0IiwgYW5kIHRodXMgbm8KKyAgIG1vZGVybiB0aGluZ3Mgc2hvdWxkIGV4aXN0LiBJZiB5b3Ugd2FudCBzb21lIGtpbmQgb2YgYWlycGxhbmUsIHVzZSBhCisgICBmbHlpbmcgaG9yc2UgaW4gc3RlYWQgZXRjLgorCis5LiBJZiB5b3UgbWFrZSBhdmFpbGFibGUgc29tZSBraW5kIG9mIHJlc3RhdXJhbnQgdGhhdCBzZWxscyBmb29kIHRoYXQKKyAgIGhlYWxzLCB0aGVuIHRoZSBoZWFsaW5nIG11c3QgY29zdCBvbiBhdmVyYWdlIDQgZ3AvaHAgKG9yIG1vcmUpLiBUaGUgYW1vdW50CisgICBvZiBoZWFsaW5nIG11c3QgYWxzbyBiZSBsaW1pdGVkIHBlciByZXNldC4gR2VuZXJhdGluZyBoZWFsaW5nIGl0ZW1zIGZvcgorICAgZnJlZSBpcyBvbmx5IGFsbG93ZWQgaWYgdGhleSBoZWFsIGF0IG1vc3QgMjAgcG9pbnRzLCBhbmQgYXJlIGRlc3RydWN0ZWQuCisgICBOb3QgbW9yZSB0aGFuIG9uZSBzdWNoIGl0ZW0gbWF5IGJlIGdlbmVyYXRlZCBwZXIgcm9vbSBhbmQgcmVzZXQuCisKKzEwLlRlbGVwb3J0aW5nIGl0ZW1zIHNob3VsZCBiZSBWRVJZIHJlc3RyaWN0ZWQsIGFuZCB2ZXJ5IHJhcmUuIFRoZXkgbXVzdAorICAgbm90IGFsbG93IHRlbGVwb3J0YXRpb25zIHRvIGFueXdoZXJlLCBidXQgb25seSB0byBvbmUgb3IgbW9yZSBwcmVkZWZpbmVkCisgICByb29tLiBOZXZlciB0byBhIHNwZWNpZmljIHBsYXllci4gSXQgbXVzdCBjb3N0IGF0IGxlYXN0IDUwIHNwZWxsIHBvaW50cworICAgdG8gdXNlIGVhY2ggdGltZS4KZGlmZiAtLWdpdCBhL2RvYy9LVVJTL2VpbmxlaXR1bmcgYi9kb2MvS1VSUy9laW5sZWl0dW5nCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjE0ODMxNTUKLS0tIC9kZXYvbnVsbAorKysgYi9kb2MvS1VSUy9laW5sZWl0dW5nCkBAIC0wLDAgKzEsNDUgQEAKKwlFaW5mdWVocnVuZyBpbiBkaWUgUHJvZ3JtbWllcnVuZyBkZXIgTW9yZ2VuZ3JhdWVuLU11ZGxpYgorCXZvbiBEb24gUnVtYXRhLCBNdWRBZG0gZGVzIE1vcmdlbkdyYXVlbnMKKwk9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorCisJRUlOTEVJVFVORzoKKwktLS0tLS0tLS0tLQorCisJSGVyemxpY2ggd2lsbGtvbW1lbiBhbHMgTWFnaWVyIGltIE1vcmdlbkdyYXVlbi4gRHUgYmlzdAorCWdlcmFkZSBNYWdpZXIgZ2V3b3JkZW4uIERpZXNlciBLdXJzIHNvbGwgRGlyIGhlbGZlbiwKKwlpbiBkaWVzZW0gTVVEIGFsbGVzIE1vZWdsaWNoZSB6dSBwcm9ncmFtbWllcmVuLiAKKworCisJV0lDSFRJR0UgSU5GT1JNQVRJT05FTiBGVUVSIERFTiBBTkZBTkc6CisJLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKKwlFaW4gTWFnaWVyIGhhdCBzaWNoIGdld2lzc2VuIFJlZ2VsbiB6dSB1bnRlcndlcmZlbiwgd2llIG1hbgorCXNpY2ggYmVpbiBlaW5lbSBTcGllbCBhdWNoIGluIGRpZSBTcGllbHJlZ2VsbiB6dSBoYWx0ZW4gaGF0LgorCURpZXNlIFNwaWVscmVnZWxuIHN0ZWhlbiBpbiBSVUxFUyAoZGFzIHNpbmQgZGllIHdpY2h0aWdlbikKKwl1bmQgaW4gUlVMRVMuV0laIChkYXMgc2luZCBkaWUgdGVjaG5pc2NoZW4gSGlud2Vpc2UpLgorCisJV2VubiBEdSBGaWxlcyBlZGl0aWVyZW4gd2lsbHN0LCBnaWJ0IGVzIG1laHJlcmUgTW9lZ2xpY2gtCisJa2VpdGVuOgorCisJMS4pIE1pdCBkZW0gQmVmZWhsICJlZCA8ZmlsZW5hbWU+IjoKKwkgICAgRWluZSBFaW5sZWl0dW5nIGZ1ZXIgZWQga2FubnN0IER1IGluIC9kb2MvZWQvKiBmaW5kZW4uCisKKwkyLikgRmlsZXVlYmVydHJhZ3VuZyBwZXIgZnRwCisJMy4pIEZpbGV1ZWJlcnRyYWd1bmcgcGVyIG10cAorCSAgICBmcmFnZSBhbSBiZXN0ZW4gZWluZW4gZGVyIGVyZmFocmVuZW4gTWFnaWVyLgorCisKKwlLVVJTVUVCRVJCTElDSzoKKwktLS0tLS0tLS0tLS0tLS0KKworCUkJUHJvZ3JhbW1pZXJ1bmcgdm9uIFJhZXVtZW4KKwkgICAgIDEuCUVpbiBlaW5mYWNoZXIgUmF1bQorCSAKKwlJSQlQcm9ncmFtbWllcnVuZyB2b24gT2JqZWt0ZW4KKwkKKwlJSUkJUHJvZ3JhbW1pZXJ1bmcgdm9uIE1vbnN0ZXJuCisKKworCUFjaGphOiBJY2ggYml0dGUgZmxlaGVudGxpY2ggdW0gS29ycmVrdHVybGVzZW4gdW5kCisJVmVyYmVzc2VydW5ncy9FcmdhZW56dW5nc3ZvcnNjaGxhZWdlLiBVbmQgbm9jaCBtZWhyCisJdW0gTWl0YXJiZWl0LiAoSWNoIGhhYiBzY2hvbiBqZXR6dCB3dW5kZSBGaW5nZXIgOi0pCmRpZmYgLS1naXQgYS9kb2MvS1VSUy9vYmpla3RlIGIvZG9jL0tVUlMvb2JqZWt0ZQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5mYmIxMWQzCi0tLSAvZGV2L251bGwKKysrIGIvZG9jL0tVUlMvb2JqZWt0ZQpAQCAtMCwwICsxLDI5IEBACisJT0JKRUtURQorCQorCUFscyBlcnN0ZXMgbXVzc3QgRHUgd2lzc2VuLCBkYXNzIGplZGVzIE9iamVrdCBpbiBkaWVzZW0KKwlNdWQgZHVyY2ggZWluIEZpbGUgcmVwcmFlc2VudGllcnQgd2lyZC4gRGllc2VzIEZpbGUKKwl3aXJkIGF1Y2ggZGllICJCbHVlcHJpbnQiIGdlbmFubnQuIER1IGthbm5zdCBuZXVlIE9iamVrdGUKKwlhdWYgMiBBcnRlbiBlcnNjaGFmZmVuLgorCisJMS4pICJjbG9uZSJuIHZvbiBCbHVlcHJpbnRzLiBEYXMgYmVkZXV0ZXQsIGRhc3MgRHUgZWluCisJICAgIE9iamVrdCBlcnNjaGFmZnN0LCBkYXMgZGllIEVpZ2Vuc2NoYWZ0ZW4gaGF0LCBkaWUgaW4KKwkgICAgZGVyIEJsdWVwcmludCBwcm9ncmFtbWllcnQgd29yZGVuIHNpbmQuIFZvbiBlaW5lcgorCSAgICBCbHVlcHJpbnQga29lbm5lbiBtZWhyZXJlICJDbG9uZXMiIGV4aXN0aWVyZW4uCisJICAgIFR5cGlzY2hlIEJlaXNwaWVsZSBmdWVyICJDbG9uZXMiIHNpbmQgV2FmZmVuLAorCSAgICBNb25zdGVyLCBHZWxkIG9kZXIgU3BpZWxlci4KKworCTIuKSAibG9hZCJlbiB2b24gQmx1ZXByaW50cy4gRGFzIGJlZGV1dGV0LCBkYXNzIER1CisJICAgIGRpZXNlIEJsdWVwcmludCB6dSBMZWJlbiBlcndlY2tzdC4gSW4gZ2V3aXNzZXIgV2Vpc2UKKwkgICAgYmVuZWhtZW4gc2ljaCBkaWVzZSBPYmpla3RlIGdlbmF1c28gd2llIGRpZSAiQ2xvbmVzIiwKKwkgICAgYWxsZXJkaW5ncyBrb2VubmVuIHZvbiBlaW5tYWwgZ2VsYWRlbmVuIEJsdWVwcmludHMKKwkgICAga2VpbmUgIkNsb25lcyIgbWVociBlcnNjaGFmZmVuIHdlcmRlbi4KKwkgICAgVHlwaXNjaGUgZ2VsYWRlbmUgT2JqZWt0ZSBzaW5kIFJhZW1lLgorCisJS05JR0dFIEZVRVIgTUFHSUVSCisKKwlEYWR1cmNoLCBkYXNzIER1IGJlbGllYmlnZSBGaWxlcyBsYWRlbiBvZGVyIGNsb25lbiBrYW5uc3QsCisJYmlzdCBEdSBpbiBkZXIgTGFnZSwgamVkZW0gU3BpZWxlciBkYXMgZ2V3dWVuc2NodGUgT2JqZWt0CisJenUgYmVzY2hhZmZlbi4gQWJlciBkYXMgaXN0IG5hdHVlcmxpY2ggbmljaHQgZGVyIFNpbm4gZGVyCisJU2FjaGUuIEFscyBNYWdpZXIgYmlzdCBEdSB2ZXJwZmxpY2h0ZXQsIGRlbiBTcGllbGVybiBudXIKKwlub2NoIGRhbm4genUgaGVsZmVuLCB3ZW5uIHNpZSBhdWZncnVuZCB2b24gUHJvZ3JhbW1pZXItCisJZmVobGVybiBpbiBTY2h3aWVyaWdrZWl0ZW4gZ2VyYXRlbi4KZGlmZiAtLWdpdCBhL2RvYy9LVVJTL3JhdW0xIGIvZG9jL0tVUlMvcmF1bTEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYjYyM2MzNQotLS0gL2Rldi9udWxsCisrKyBiL2RvYy9LVVJTL3JhdW0xCkBAIC0wLDAgKzEsMTM3IEBACisKKwlQUk9HUkFNTUlFUlVORyBWT04gUkFFVU1FTiAtIFRFSUwgMQorCXZvbiBEb24gUnVtYXRhLCBNdWRBZG0gZGVzIE1vcmdlbkdyYXVlbnMKKwk9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CisKKwlFaW4gUmF1bSBpc3Qgc2VociBlaW5mYWNoIHp1IHByb2dyYW1taWVyZW4uIE1hbiBmdWVsbHQKKwlpaG4gbWl0IGRlbiBJbmZvcm1hdGlvbmVuLCBkaWUgbWFuIGluIGlobSBoYWJlbiB3aWxsLgorCisJQW0gYmVzdGVuIGVya2xhZXJ0IHNpY2ggYWxsZXMgYW4gZWluZW0gQmVpc3BpZWwuIFp1IGRlbgorCUZ1bmt0aW9uZW4gc2luZCBpbiAvZG9jL2VmdW5zIHVuZCAvZG9jL2xmdW5zIHdlaXRlcmUKKwlJbmZvcm1hdGlvbmVuIGVyaGFlbHRsaWNoLgorCisJTmFjaGZvbGdlbmQga2FubnN0IER1IGVpbmVuICh6dWdlZ2ViZW5lZXJtYXNzZW4gdWViZXItCisJYXVzZnVlaHJsaWNoKSBkb2t1bWVudGllcnRlbiBCZWlzcGllbHJhdW0gZmluZGVuLgorCUluIC9kb2MvYmVpc3BpZWxlL3JhdW0xLmMga2FubnN0IER1IGRlbiBzZWxiZW4gUmF1bQorCW5vY2ggZWlubWFsIChvaG5lIEtvbW1lbnRhcmUpIGZpbmRlbi4gRGVuIFJhdW0KKwlrYW5uc3QgRHUgdWVicmlnZW5zIGF1Y2ggYmV0cmV0ZW4uCisKKy8qIGJlaXNwaWVscmF1bS5jIHZvbiBSdW1hdGEgKi8KKworaW5oZXJpdCAic3RkL3Jvb20iOworCS8vIEFsbGUgUmFldW1lIG11ZXNzZW4gZGllc2UgWmVpbGUgZW50aGFsdGVuLCBkYSBpbiBkZW0KKwkvLyBTdGFuZGFyZHJhdW0gd2ljaHRpZ2UgRnVua3Rpb25lbiBkZWZpbmllcnQgd2VyZGVuLCBkaWUKKwkvLyBpbm5lcmhhbGIgZGVzIFNwaWVsZXMgYmVub2V0aWd0IHdlcmRlbi4KKworI2luY2x1ZGUgPHByb3BlcnRpZXMuaD4KKwkvLyBJbiBkaWVzZW0gRmlsZSBzaW5kIGRpZSBOYW1lbiBkZXIgUHJvcGVydGllcyBkZWZpbmllcnQuCisJLy8gRnVlciBuYWVocmUgSW5mb3JtYXRpb25lbiBrYW5uc3QgRHUgaW4KKwkvLyAvZG9jL2NvbmNlcHRzL3Byb3BlcnRpZXMgdW5kIGluIC9kb2MvcHJvcGVydGllcy5oCisJLy8gbmFjaHNjaGF1ZW4sIGRhIGVzIHNlaHIgdmllbGUgdmVyc2NoaWVkZW5lIFByb3BlcnRpZXMKKwkvLyBnaWJ0LgorCisjaW5jbHVkZSA8bGFuZ3VhZ2UuaD4KKwkvLyBEaWVzZSBNb2R1bGUgZW50aGFsdGVuIGFsbGUgRGVmaW5pdGlvbmVuIGltIFp1c2FtbWVuaGFuZworCS8vIG1pdCBTcHJhY2hlLiBTaWVoZSAvZG9jL2xhbmd1YWdlLmgKKworY3JlYXRlKCkKKy8vIERpZXNlIEZ1bmt0aW9uIHdpcmQgYXV0b21hdGlzY2ggYXVmZ2VydWZlbiwgd2VubiBkZXIgUmF1bSBnZWxhZGVuCisvLyB3aXJkLiBEYXMgcGFzc2llcnQgYmVpbSBLb21tYW5kbyAibG9hZCAvZG9jL2JlaXNwaWVsL2JzcHJhdW0xIiBvZGVyCisvLyB3ZW5uIGVpbiBTcGllbGVyIGRlbiBSYXVtIGFscyBlcnN0ZXIgYmV0cml0dC4KK3sKKwk6OmNyZWF0ZSgpOworCS8vIERpZXNlIEZ1bmt0aW9uIGRhcmYgTklFTUFMUyBmZWhsZW4hIFNpZSBzb3JndCBkYWZ1ZXIsIGRhc3MKKwkvLyBkZXIgUmF1bSBhdWNoIGRpZSBhbGxnZW1laW5lIEluaXRpYWxpc2llcnVuZyBkdXJjaGZ1ZWhydCwKKwkvLyBkYSBkaWVzZSBoaWVyIGRpZSBkZXIgIk11dHRlci1LbGFzc2UiIHN0ZC9yb29tIHVlYmVybGFlZHQuCisKKwlTZXRQcm9wKCBQX0lOVF9TSE9SVCwgIkVpbiBrbGVpbmVzIFNjaHJlaWJ6aW1tZXIiICk7CisJU2V0UHJvcCggUF9JTlRfTE9ORywKKwkJIkR1IHN0ZWhzdCBpbiBlaW5lbSBrbGVpbmVuIFNjaHJlaWJ6aW1tZXIuXG4iCisJKwkiRXMgZ2Vob2VydGUgd29obCBpcmdlbmR3YW5uIGVpbm1hbCBlaW5lbSBNYWdpZXIsIGFiZXIgbnVuXG4iCisJKwkiaXN0IGRpZXNlciBSYXVtIHZlcndhaXN0IHVuZCByb3R0ZXQgdm9yIHNpY2ggaGluLlxuIgorCSsJIkVpbiBncm9zc2VyIFNjaHJlaWJ0aXNjaCBpbiBkZXIgTWl0dGUgZGVzIFJhdW1lcyBzY2hlaW50XG4iCisJKwkibm9jaCBlaW5pZ2VybWFzc2VuIGd1dCBlcmhhbHRlbiB6dSBzZWluLiBEdXJjaCBkaWUgVHVlclxuIgorCSsJImltIE5vcmRlbiBmYWVsbHQgZXR3YXMgTGljaHQgaGluZWluLlxuIgorCSk7CisJU2V0UHJvcCggUF9MSUdIVCwgMSApOworCVNldFByb3AoIFBfSU5ET09SUywgMSApOworCS8vIERpZXNlIFByb3BlcnRpZXMgTVVFU1NFTiBpbiBKRURFTSBSYXVtIGdlc2V0enQgd2VyZGVuLgorCS8vIFBfSU5UX1NIT1JUCT0gQmVzY2hyZWlidW5nIGZ1ZXIgU3BpZWxlciBpbSAia3VyeiItTW9kdXMuCisJLy8gUF9JTlRfTE9ORwk9IEJlc2NocmVpYnVuZyBmdWVyIFNwaWVsZXIgaW0gImxhbmciLU1vZHVzLgorCS8vIFBfTElHSFQJPSAxIGZ1ZXIgSGVsbCwgMCBmdWVyIER1bmtlbAorCS8vIFBfSU5ET09SUwk9IDEsIHdlbm4gbWFuIGRlbiBIaW1tZWwgbmljaHQgc2VoZW4ga2Fubi4KKworCUFkZERldGFpbCggKHsgInNjaHJlaWJ0aXNjaCIsICJ0aXNjaCIgfSksCisJCSJBdWYgZGVtIFRpc2NoIGxpZWd0IGVpbmUgZGlja2UgU3RhdWJzY2hpY2h0LlxuIgorCSsJIkVpbmUgU2NodWJsYWRlIGZpbmRlc3QgRHUgZWJlbmZhbGxzLlxuIgorCSk7CisJQWRkRGV0YWlsKCAoeyAic3RhdWIiLCAic3RhdWJzY2hpY2h0IiwgInNjaGljaHQiIH0pLAorCQkiRHUgbWFsc3QgZ2VsYW5nd2VpbHQgZWluaWdlIEtyZWlzZSBpbiBkZW4gU3RhdWIuXG4iCisJKTsKKwlBZGREZXRhaWwoICJzY2h1YmxhZGUiLAorCQkiU28gc2VociBEdSBEaWNoIGFuc3RyZW5nc3Q7IER1IGthbm5zdCBzaWUgbmljaHQgYmV3ZWdlbi5cbiIKKwkpOworCUFkZERldGFpbCggInR1ZXIiICwKKwkJIlNpZSBzdGVodCBzZWl0IEphaHJlbiBvZmZlbiB1bmQgaXN0IGluIGRpZXNlciBMYWdlXG4iCisJKwkiaG9mZm51bmdzbG9zIGZlc3RnZXJvc3RldC5cbiIKKwkpOworCS8vIERldGFpbHMgc2luZCBEaW5nZSwgZGllIG1hbiBzaWNoIGluIGVpbmVtIFJhdW0gYW5zY2hhdWVuCisJLy8gYWJlciBuaWNodCBuZWhtZW4ga2Fubi4gSmUgbWVociBEZXRhaWxzIGVpbiBSYXVtIGhhdCwgZGVzdHNvCisJLy8gc2Nob2VuZXIgaXN0IGVyLiBTY2hhdXQgc2ljaCBlaW4gU3BpZWxlciBlaW4gRGV0YWlsIGFuLAorCS8vIHNvIGJla29tbXQgZGVyIGRpZSBhbmdlZ2ViZW5lIEJlc2NocmVpYnVuZy4KKworCUFkZFJvb21DbWQoICh7ICJzY2hsaWVzc2UiLCAib2VmZm5lIiwgImJld2VnZSIsCisJCSJzY2hsaWVzcyIsICJiZXdlZyIgfSksICJiZXdlZ19ldHdhcyIgKTsKKwkvLyBSb29tQ29tbWFuZHMgc2luZCBCZWZlaGxlLCBkaWUgbWFuIGluIGRpZXNlbSBhdXNmdWVocmVuIGthbm4uCisJLy8gRXMgd2lyZCBkaWUgYW5nZWdlYmVuZSBGdW5rdGlvbiBhdXNnZWZ1ZWhydC4KKwkvLyBXSUNIVElHOiBBbHMgVmVyYmVuIHNvbGx0ZW4gaW1tZXIgZGllIElNUEVSQVRJVkUgYmVudXR6dAorCS8vCXdlcmRlbiEgQWxzbyBuaWNodCAibGVzZSIsIHNvbmRlcm4gImxpZXMiLgorCQorCUFkZEV4aXQoICJub3JkZW4iLCAicGxheWVycy9ydW1hdGEvd29ya3Jvb20iICk7CisJLy8gRGVmaW5pdGlvbiBlaW5lcyBBdXNnYW5ncy4gRGFzIHplaXRlIEFyZ3VtZW50IGJlc3RpbW10IGRlbgorCS8vIFJhdW0sIGRlbiBlaW4gU3BpZWxlciBlcnJlaWNodCwgd2VubiBlciBpbiBkaWUgYW5nZWdlYmVuZQorCS8vIFJpY2h0dW5nIGdlaHQuCisKK30KKworYmV3ZWdfZXR3YXMoIHN0ciApCisvLyBXZW5uIGVpbiBTcGllbGVyIGVpbiBLb21tYW5kbyBhdXNmdWVocnQsIHNvIHdpcmQgYWxsZXMsIHdhcyBoaW50ZXIKKy8vIGRlbSBWZXJiIHN0ZWh0IGFscyBTdHJpbmcgdWViZXJnZWJlbiwgZXMgbGFuZGV0IGFsc28gaGllciBpbiAic3RyIi4KKy8vIFdJQ0hUSUc6IFdlbm4gZGVyIEJlZmVobCBhYmdlYXJiZWl0ZXQgd2lyZCwgTVVTUyBlciBlaW5lIDEgenVydWVjay0KKy8vICAgICAgICAgIGdlYmVuLiBXZW5uIGRlciBCZWZlaGwgbmljaHRzIFNpbm52b2xsZXMgdHVlbiBrb25udGUsIGVpbmUgMC4KK3sKKwlub3RpZnlfZmFpbCggIldhcyB3aWxsc3QgRHUgZGVubiBiZXdlZ2VuID8iICk7CisJLy8gTWVsZHVuZywgZGllIGRlciBTcGllbGVyIGJla29tbXQsIHdlbm4gYXVzc2VyIGRlbSBSYXVtIGF1Y2gKKwkvLyBrZWluIGFuZGVyZXMgT2JqZWt0IGRlbiBCZWZlaGwgdmVyYXJiZWl0ZW4ga29ubnRlLgorCWlmKCBzdHIgPT0gInR1ZXIiICkKKwl7CisJCXdyaXRlKCAiRGllIFR1ZXIgaXN0IGhvZmZudW5nc2xvcyBmZXN0Z2Vyb3N0ZXQuXG4iICk7CisJCS8vIFdyaXRlIGdpYnQgZWluZSBNZWxkdW5nIGFuIGRlbiBTcGllbGVyICh1bmQgbnVyIGFuIGlobikKKwkJLy8gYXVzLgorCQlyZXR1cm4gMTsKKwkJLy8gRGFzIEtvbW1hbmRvIGJld2lya3QgendhciBhdXMgU2ljaHQgZGVzIFNwaWVsZXJzCisJCS8vIG5pY2h0cywgYWJlciBlcyBrb25udGUgYWJnZWFyYmVpdGV0IHdlcmRlbi4KKwkJLy8gQWxzbyBnaWIgZWluZSAxIHp1cnVlY2suCisJfQorCWlmICggc3RyID09ICJsYWRlIiB8fCBzdHIgPT0gInNjaHVibGFkZSIgKQorCXsKKwkJd3JpdGUoICJEaWUgU2NodWJsYWRlIGtsZW1tdCBlaW5mYWNoIG51ci5cbiIgKTsKKwkJcmV0dXJuIDE7CisJfQorCWlmICggcXVlcnlfdmVyYigpID09ICJiZXdlZ2UiICYmCisJCSggc3RyID09ICJ0aXNjaCIgfHwgc3RyID09ICJzY2hyZWlidGlzY2giICkgKQorCXsKKwkJd3JpdGUoCisJCQkiRGVyIFRpc2NoIHNjaGVpbnQgYW0gQm9kZW4gZmVzdGdlc2NocmF1YnQgenUgc2Vpbi5cbiIKKwkJKTsKKwkJc2F5KAorCQkJdGhpc19wbGF5ZXIoKS0+bmFtZShXRVIsMikrIiB6ZXJydCBhbSBTY2hyZWlidGlzY2guXG4iCisJCSk7CisJCS8vIHNheSBnaWJ0IGVpbmUgTWVsZHVuZyBhbiBhbGxlIFNwaWVsZXIgaW0gc2VsYmVuCisJCS8vIFJhdW0gd2llIGRlciBTcGllbGVyIChhYmVyIG5pY2h0IGFuIGlobiBzZWxic3QpIGF1cy4KKwkJcmV0dXJuIDE7CisJfQorCXJldHVybiAwOworCS8vIERlciBSYXVtIGtvbm50ZSBuaWNodHMgbWl0IGRlbSBLb21tYW5kbyBhbmZhbmdlbiwgYWxzbyBnaWIKKwkvLyBlaW5lIDAgenVydWVjay4KK30KZGlmZiAtLWdpdCBhL2RvYy9MUEMvLnN5bm9ueW0gYi9kb2MvTFBDLy5zeW5vbnltCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjMwMDkxNmIKLS0tIC9kZXYvbnVsbAorKysgYi9kb2MvTFBDLy5zeW5vbnltCkBAIC0wLDAgKzEsMjYgQEAKK2FycmF5IGFycmF5cwordmVyZXJidW5nIGluaGVyaXRhbmNlCitlcmJlbiBpbmhlcml0YW5jZQoraW50ZWdlciBpbnRlZ2VycworbWFwcGluZyBtYXBwaW5ncworbW9kdWxvIG9wZXJhdG9ycworb3BlcmF0b3JlbiBvcGVyYXRvcnMKK2luY3JlbWVudCBvcGVyYXRvcnMKK2RlY3JlbWVudCBvcGVyYXRvcnMKK3N0cmluZyBzdHJpbmdzCitjYXNlIHN3aXRjaAorcHJpdmF0ZSBtb2RpZmllcnMKK3B1YmxpYyBtb2RpZmllcnMKK3N0YXRpYyBtb2RpZmllcnMKK25vbWFzayBtb2RpZmllcnMKK3Byb3RlY3RlZCBtb2RpZmllcnMKK25vc2F2ZSBtb2RpZmllcnMKK3ZpcnR1YWwgbW9kaWZpZXJzCitzdHJ1Y3Qgc3RydWN0cworc3Ryb25nX3R5cGVzIHByYWdtYQorc3RyaWN0X3R5cGVzIHByYWdtYQorc2F2ZV90eXBlcyBwcmFnbWEKK3BlZGFudGljIHByYWdtYQorcmFuZ2VfY2hlY2sgcHJhZ21hCitydHRjIHByYWdtYQorcnR0X2NoZWNrcyBwcmFnbWEKZGlmZiAtLWdpdCBhL2RvYy9MUEMvYWxpc3RzIGIvZG9jL0xQQy9hbGlzdHMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNTU1MGRlNwotLS0gL2Rldi9udWxsCisrKyBiL2RvYy9MUEMvYWxpc3RzCkBAIC0wLDAgKzEsNTMgQEAKK0NPTkNFUFQKKyAgICAgICAgYWxpc3RzCisKK0xBU1QgVVBEQVRFCisgICAgICAgIDIgTWFyIDkyIDIxOjEwOjIxIEdNVAorCitBVVRIT1IKKyAgICAgICAgRnJvbTogYW15bGFhckBtY3NoaC5oYW5zZS5kZSAoSm9lcm4gUmVubmVja2UpCisgICAgICAgIFN1YmplY3Q6IGdlbmVyYWwgZG9jdW1lbnRhdGlvbiBvbiBhbGlzdHMKKworREVTQ1JJUFRJT04KKyAgICAgICAgQWxpc3RzIHByb3ZpZGUgYSBmYXN0IGFuZCBjb252ZW5pZW50IHdheSB0byBhY2Nlc3MgZGF0YQorICAgICAgICBhc3NvY2lhdGl2ZWx5LgorCisgICAgICAgIEFsaXN0cyBhcmUgaW1wbGVtZW50ZWQgYXMgYXJyYXlzIG9mIGFycmF5cywgdGhlIGZpcnN0IGJlaW5nCisgICAgICAgIHRoZSBhcnJheSBob2xkaW5nIHRoZSBrZXlzLCB0aGUgb3RoZXJzIGFycmF5cyBob2xkaW5nCisgICAgICAgIGFzc29jaWF0ZWQgZGF0YS4gQW4gZW1wdHkgYWxpc3QgaXMgYW4gYXJyYXkgb2YgZW1wdHkgYXJyYXlzLgorCisgICAgICAgIE5vdGUgdGhhdCB0aGUgdGhlIGRpbWVuc2lvbnMgb2YgdGhlIGFycmF5cyBhcmUgdXNlZCB0aGUgb3RoZXIKKyAgICAgICAgd2F5IHRoYW4gaW4gbGlzcCB0byBhbGxvdyBmb3IgZmFzdGVyIHNlYXJjaGluZy4KKworICAgICAgICBLZXlzIGhhdmUgdG8gYmUgb2YgdHlwZSBpbnRlZ2VyLCBzdHJpbmcgb3Igb2JqZWN0LiBUeXBlcyBjYW4KKyAgICAgICAgYmUgbWl4ZWQuCisKKyAgICAgICAgVGhlIHNlYXJjaCBmdW5jdGlvbnMgcmV0dXJuIGFuIHVuZGVmaW5lZCB2YWx1ZSB3aGVuIGFub3RoZXIKKyAgICAgICAgbGlzdCBpcyBnaXZlbiBpbiBwbGFjZSBvZiBhIHByZXNvcnRlZCBrZXkgbGlzdC4KKworICAgICAgICBBIGxpc3Qgd2l0aCBub24tbnVtZXJpYyBrZXlzIHJldHJpZXZlZCBieSByZXN0b3JlX29iamVjdCgpIGhhcworICAgICAgICB0byBiZSByZWFkanVzdGVkIGJ5IHVzaW5nIG9yZGVyX2FsaXN0KCksIGVzcGVjaWFsbHkgYWZ0ZXIKKyAgICAgICAgcmVib290LgorCisgICAgICAgIERlbGV0aW5nIGFuIGVudHJ5IGNhbiBzYWZlbHkgYmUgZG9uZSB3aXRoIGV4Y2x1ZGVfYXJyYXkgYXMKKyAgICAgICAgbG9uZyBhcyBhbGwgYXNzb2NpYXRlZCBkYXRhIGxpc3RzIGFyZSB0cmVhdGVkIGxpa2UgdGhlIGtleQorICAgICAgICBhcnJheTsgaW5kZXggZmluZGluZyBmb3Igc3VjaCBwdXJwb3NlcyBjYW4gYmUgZG9uZSB3aXRoIGFzc29jLgorCisgICAgICAgIFR5cGljYWwgYXBwbGljYXRpb25zOiBob2xkaW5nIGFkbWluaXN0cmFyeSBpbmZvcm1hdGlvbiBhYm91dAorICAgICAgICB3aXphcmRzLCBsaXN0IG9mIHZpc2l0b3JzIGluIGEgcHViLCBsaXN0IG9mIGN1c3RvbWVycyBoYXZpbmcKKyAgICAgICAgc29tZSBzb3J0IG9mIGNyZWRpdCwgaW5mb3JtYXRpb24gcmVtZW1iZXJlZCBhYm91dCBpdGVtcyBldGMuCisKK05PVEUKKyAgICAgICAgVGhlIG1haW4gdXNlIG9mIGFsaXN0cywgc3RvcmluZyBkYXRhIGFzc29jaWF0aXZlbHksIGlzIG5vdworICAgICAgICBiZXR0ZXIgcGVyZm9ybWVkIGJ5IG1hcHBpbmdzLiBBbGlzdHMgYXJlIG5lZWRlZCBmb3IgbW9yZQorICAgICAgICBleHRyZW1lIHNpdHVhdGlvbnMgb25seS4KKworICAgICAgICBBbGlzdHMgYXJlIGF2YWlsYWJsZSBvbmx5IGlmIHRoZSBkcml2ZXIgaXMgY29tcGlsZWQgd2l0aAorICAgICAgICBhbGlzdCBzdXBwb3J0LiBJbiB0aGF0IGNhc2UsIF9fQUxJU1RTX18gaXMgZGVmaW5lZC4KKworSElTVE9SWQorICAgICAgICBMRE11ZCAzLjMgbWFkZSBhbGlzdHMgYW4gb3B0aW9uYWwgZWZ1bi4KKworU0VFIEFMU08KKyAgICAgICAgbWFwcGluZ3MoTFBDKSwgb3JkZXJfYWxpc3QoRSksIGluc2VydF9hbGlzdChFKSwgYXNzb2MoRSksCisgICAgICAgIHRyYW5zcG9zZV9hcnJheShFKQpkaWZmIC0tZ2l0IGEvZG9jL0xQQy9hcnJheXMgYi9kb2MvTFBDL2FycmF5cwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44ODNkZGRiCi0tLSAvZGV2L251bGwKKysrIGIvZG9jL0xQQy9hcnJheXMKQEAgLTAsMCArMSwxMTYgQEAKK0NPTkNFUFQKKyAgICAgICAgYXJyYXlzCisKK0RFU0NSSVBUSU9OCisgICAgICAgIFRoZXJlIGlzIHN1cHBvcnQgZm9yIGFycmF5cy4gVGhlIGFycmF5cyBjYW4ndCBiZSBkZWNsYXJlZCwgYnV0CisgICAgICAgIHNob3VsZCBiZSBhbGxvY2F0ZWQgZHluYW1pY2FsbHkgd2l0aCB0aGUgZnVuY3Rpb24gJ2FsbG9jYXRlKCknCisgICAgICAgIChzZWUgZWZ1bi9hbGxvY2F0ZSkuCisKKyAgICAgICAgQXJyYXlzIGFyZSBzdG9yZWQgYnkgcmVmZXJlbmNlLCBzbyBhbGwgYXNzaWdubWVudHMgb2Ygd2hvbGUKKyAgICAgICAgYXJyYXlzIHdpbGwganVzdCBjb3B5IHRoZSBhZGRyZXNzLiBUaGUgYXJyYXkgd2lsbCBiZQorICAgICAgICBkZWFsbG9jYXRlZCB3aGVuIG5vIHZhcmlhYmxlIHBvaW50cyB0byBpdCBhbnkgbG9uZ2VyLgorCisgICAgICAgIFdoZW4gYSB2YXJpYWJsZSBwb2ludHMgdG8gYW4gYXJyYXksIGl0ZW1zIGNhbiBiZSBhY2Nlc3NlZCB3aXRoCisgICAgICAgIGluZGV4aW5nOiAnYXJyWzNdJyBhcyBhbiBleGFtcGxlLiBUaGUgbmFtZSBvZiB0aGUgYXJyYXkgYmVpbmcKKyAgICAgICAgaW5kZXhlZCBjYW4gYmUgYW55IGV4cHJlc3Npb24sIGV2ZW4gYSBmdW5jdGlvbiBjYWxsOgorICAgICAgICAnZnVuYygpWzJdJy4gSXQgY2FuIGFsc28gYmUgYW5vdGhlciBhcnJheSwgaWYgdGhpcyBhcnJheSBoYXMKKyAgICAgICAgcG9pbnRlcnMgdG8gYXJyYXlzOgorCisgICAgICAgIGFyciA9IGFsbG9jYXRlKDIpOworICAgICAgICBhcnJbMF0gPSBhbGxvY2F0ZSgzKTsKKyAgICAgICAgYXJyWzFdID0gYWxsb2NhdGUoMyk7CisKKyAgICAgICAgTm93ICdhcnJbMV1bMl0nIGlzIGEgdmFsaWQgdmFsdWUuCisKKyAgICAgICAgVGhlICdzaXplb2YoKScgZnVuY3Rpb24gKGluIHRydWUgQyBhIGNvbXBpbGVyLWRpcmVjdGl2ZSwgbm90IGEKKyAgICAgICAgZnVuY3Rpb24pIHdpbGwgZ2l2ZSB0aGUgbnVtYmVyIG9mIGVsZW1lbnRzIGluIGFuIGFycmF5IChzZWUKKyAgICAgICAgZWZ1bi9zaXplb2YpLgorCitOT1RFCisgICAgICAgIE5vd2FkYXlzIGl0IGlzIG1vc3Qgb2YgdGhlIHRpbWUgcHJlZmVyYWJsZSB0byB1c2UgYW4gYXJyYXkKKyAgICAgICAgY29uc3RydWN0b3IsIGEgbGlzdCBzdXJyb3VuZGVkIGJ5ICcoeycgYW5kICd9KScsCisgICAgICAgIGUuZy4gKHsgMSwgInh4IiwgMiB9KSB3aWxsIGNvbnN0cnVjdCBhIG5ldyBhcnJheSB3aXRoIHNpemUgMywKKyAgICAgICAgaW5pdGlhbGl6ZWQgd2l0aCAxLCAieHgiIGFuZCAyIHJlc3BlY3RpdmVseS4KKworCitPUEVSQVRJT05TCisKKyAgICAgICAgSU5ERVhJTkcKKyAgICAgICAgVGhlcmUgYXJlIHNldmVyYWwgdmVyeSB1c2VmdWwgb3BlcmF0aW9ucyBkZWZpbmVkIG9uIGFycmF5cy4KKyAgICAgICAgVGhlIG1vc3QgdXNlZCBpcyB0aGUgaW5kZXhpbmc6CisgICAgICAgICAgICAgICAgYT0oeyAwLDEsMiwzIH0pOworICAgICAgICAgICAgICAgIHJldHVybiBhWzJdOyAgICAgIC8vIHRoaXMgd2lsbCByZXR1cm4gMgorICAgICAgICBZb3UgYWxzbyBjYW4gY291bnQgZnJvbSB0aGUgZW5kIG9mIHRoZSBhcnJheS4gVXNlIDwxIHRvIHNwZWNpZnkKKyAgICAgICAgdGhlIGxhc3QgZWxlbWVudCBpbiB0aGUgYXJyYXk6CisgICAgICAgICAgICAgICAgYT0oeyAwLDEsMiwzIH0pOworICAgICAgICAgICAgICAgIHJldHVybiBhWzwzXTsgICAgIC8vIHRoaXMgd2lsbCByZXR1cm4gMQorICAgICAgICBXaXRoIGluZGV4aW5nIHlvdSBjYW4gYWxzbyBjcmVhdGUgc3ViLWFycmF5czoKKyAgICAgICAgICAgICAgICBhPSh7IDAsMSwyLDMsNCw1LDYsNyB9KTsKKyAgICAgICAgICAgICAgICByZXR1cm4gYVszLi41XTsgICAvLyB0aGlzIHdpbGwgcmV0dXJuICh7IDMsNCw1IH0pCisgICAgICAgICAgICAgICAgcmV0dXJuIGFbMi4uPDJdOyAgLy8gdGhpcyB3aWxsIHJldHVybiAoeyAyLDMsNCw1LDYgfSkKKyAgICAgICAgICAgICAgICByZXR1cm4gYVs8NS4uPDNdOyAvLyB0aGlzIHdpbGwgcmV0dXJuICh7IDMsNCw1IH0pCisgICAgICAgICAgICAgICAgcmV0dXJuIGFbPDYuLjVdOyAgLy8gdGhpcyB3aWxsIHJldHVybiAoeyAyLDMsNCw1IH0pCisgICAgICAgICAgICAgICAgcmV0dXJuIGFbMy4uM107ICAgLy8gdGhpcyB3aWxsIHJldHVybiAoeyAzIH0pCisgICAgICAgICAgICAgICAgcmV0dXJuIGFbMy4uMl07ICAgLy8gdGhpcyB3aWxsIHJldHVybiAoeyB9KQorICAgICAgICAgICAgICAgIHJldHVybiBhWzMuLjBdOyAgIC8vIHRoaXMgd2lsbCByZXR1cm4gKHsgfSkKKyAgICAgICAgICAgICAgICByZXR1cm4gYVs1Li4xMDBdOyAvLyB0aGlzIHdpbGwgcmV0dXJuICh7IDUsNiw3IH0pCisgICAgICAgICAgICAgICAgW3guLl0gaXMgaW50ZXJwcmV0ZWQgYXMgW3guLjwxXQorCisgICAgICAgIEFERElORworICAgICAgICBZb3UgY2FuIGFkZCB0d28gYXJyYXlzLiBUaGUgcmVzdWx0IGlzIG9uZSBhcnJheSB3aXRoIHRoZSBlbGVtZW50cworICAgICAgICBvZiBib3RoIHRoZSBmb3JtZXIgYXJyYXlzOgorICAgICAgICAgICAgICAgIGE9KHsgMCwxIH0pOworICAgICAgICAgICAgICAgIGI9KHsgImEiLCJiIiB9KTsKKyAgICAgICAgICAgICAgICByZXR1cm4gYStiOyAgICAgICAvLyB0aGlzIHdpbGwgcmV0dXJuICh7IDAsMSwiYSIsImIiIH0pCisgICAgICAgICAgICAgICAgcmV0dXJuIGIrYTsgICAgICAgLy8gdGhpcyB3aWxsIHJldHVybiAoeyAiYSIsImIiLDAsMSB9KQorCisgICAgICAgIFNVQlRSQUNUSU5HCisgICAgICAgIFlvdSBjYW4gZXJhc2UgYWxsIGVsZW1lbnRzIG9mIG9uZSBhcnJheSB0aGF0IG9jY3VyIGluIGFub3RoZXIKKyAgICAgICAgYXJyYXk6CisgICAgICAgICAgICAgICAgYT0oeyAwLDEsMiwzLDQsNSw2LDcgfSk7CisgICAgICAgICAgICAgICAgYj0oeyA3LDIsNSw4LDEsOSB9KTsKKyAgICAgICAgICAgICAgICByZXR1cm4gYS1iOyAgICAgICAvLyB0aGlzIHdpbGwgcmV0dXJuICh7IDAsMyw0LDYgfSkKKyAgICAgICAgICAgICAgICByZXR1cm4gYi1hOyAgICAgICAvLyB0aGlzIHdpbGwgcmV0dXJuICh7IDgsOSB9KQorCisgICAgICAgIElOVEVSSlVOQ1RJT04KKyAgICAgICAgVXNlIHRoZSAmLW9wZXJhdG9yIHRvIGNyZWF0ZSB0aGUgaW50ZXJqdW5jdGlvbiBvZiB0d28gYXJyYXlzOgorICAgICAgICAgICAgICAgIGE9KHsgNSwyLDgsMSw5LDQgfSkKKyAgICAgICAgICAgICAgICBiPSh7IDEsNiw3LDMsNCw1IH0pCisgICAgICAgICAgICAgICAgcmV0dXJuIGEmYjsgICAgICAgLy8gdGhpcyB3aWxsIHJldHVybiAoeyAxLDQsNSB9KQorCisgICAgICAgIEFTU0lHTklORworICAgICAgICBBc3NpZ25pbmcgY2FuIGFsc28gYmUgZG9uZSB0byBzdWItYXJyYXlzIGFuZCBpcyB0aHVzIHZlcnkgcG93ZXJmdWw6CisgICAgICAgICAgICAgICAgYT0oeyAwLDEsMiwzLDQsNSw2LDcgfSk7CisgICAgICAgICAgICAgICAgYVs8NC4uPDNdPSh7IDgsOSB9KTsKKyAgICAgICAgICAgICAgICByZXR1cm4gYTsgICAgICAgICAvLyB0aGlzIHdpbGwgcmV0dXJuICh7IDAsMSwyLDMsOCw5LDYsNyB9KQorCisgICAgICAgICAgICAgICAgYT0oeyAwLDEsMiwzLDQsNSw2LDcgfSk7CisgICAgICAgICAgICAgICAgYVsyLi41XT0oeyB9KTsKKyAgICAgICAgICAgICAgICByZXR1cm4gYTsgICAgICAgICAvLyB0aGlzIHdpbGwgcmV0dXJuICh7IDAsMSw2LDcgfSkKKworICAgICAgICAgICAgICAgIGE9KHsgMCwxLDIsMyw0IH0pOworICAgICAgICAgICAgICAgIGFbMy4uMl09KHsgOCw5IH0pOworICAgICAgICAgICAgICAgIHJldHVybiBhOyAgICAgICAgIC8vIHRoaXMgd2lsbCByZXR1cm4gKHsgMCwxLDIsOCw5LDMsNCB9KQorCisgICAgICAgICAgICAgICAgYT0oeyAwLDEsMiwzLDQgfSk7CisgICAgICAgICAgICAgICAgYVszLi4wXT0oeyA4LDkgfSk7CisgICAgICAgICAgICAgICAgcmV0dXJuIGE7ICAgICAgICAgLy8gdGhpcyB3aWxsIHJldHVybiAoeyAwLDEsMiw4LDksMSwyLDMsNCB9KQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHRoaXMgaXMgcXVpdGUgZnVubnkgYnV0IHRydWUgOy0pCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gV0FSTklORzogSWYgZG9uZSB1bmludGVudGlvbmFsbHkgYW5kCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gd2l0aGluIGEgbG9vcCwgeW91IGNhbiBxdWlja2x5IGNhdXNlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gdGhlIGdhbWUgdG8gcnVuIG91dCBvZiBtZW1vcnkhCisKKyAgICAgICAgR0VORVJBTAorICAgICAgICBPZiBjb3Vyc2UgZm9yIGFueSBvZiB0aGUgb3BlcmF0b3JzIGV4cGxhaW5lZCBhYm92ZSB5b3UgY2FuIHVzZQorICAgICAgICB0aGUgY29tYmluZWQgZm9ybSBvZiBhc3NpZ25pbmcgYW5kIG9wZXJhdGluZzsgdGhhdCBtZWFucyB0aGUKKyAgICAgICAgb3BlcmF0b3JzICs9LCAtPSBhbmQgJj0gd29yay4KKworCitUSVBTCisgICAgICAgIElmIHlvdSB3YW50IHRvIG1ha2Ugc3VyZSB0aGF0IG5vIGVsZW1lbnQgaXMgbW9yZSB0aGFuIG9uY2UgaW4gYW4KKyAgICAgICAgYXJyYXkgeW91IGNhbiB1c2UgdGhlIGZvbGxvd2luZzoKKyAgICAgICAgICAgICAgICBhID0gbV9pbmRpY2VzKG1rbWFwcGluZyhhKSk7CisgICAgICAgIFRoaXMgY3JlYXRlcyBhIG1hcHBpbmcgb3V0IG9mIHRoZSBhcnJheSBhbmQgcmVjcmVhdGVzIHRoZSBhcnJheQorICAgICAgICBhdCBvbmNlLiBUaGUgZWxlbWVudHMgaW4gdGhlIGFycmF5IGNhbiBiZSBzaHVmZmxlZCBieSB0aGlzCisgICAgICAgIHByb2NlZHVyZS4KKwpkaWZmIC0tZ2l0IGEvZG9jL0xQQy9ibG9jayBiL2RvYy9MUEMvYmxvY2sKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMjllYjM4MgotLS0gL2Rldi9udWxsCisrKyBiL2RvYy9MUEMvYmxvY2sKQEAgLTAsMCArMSw0OCBAQAorTkFNRQorICAgICAgICBibG9jaworCitERVNDUklQVElPTgorICAgICAgICBBIGJsb2NrIGlzIGEgc3BlY2lhbCBzdGF0bWVudCwgdGhhdCBiZWdpbnMgd2l0aCAneycsIGNvbnRhaW5zCisgICAgICAgIGEgbGlzdCBvZiBzdGF0ZW1lbnRzLCBhbmQgZW5kcyB3aXRoICd9Jy4KKworICAgICAgICBUaGUgYmxvY2sgbWF5IGRlZmluZSBsb2NhbCB2YXJpYWJsZXMuIElmIGZvciBhIHZhcmlhYmxlIG5vCisgICAgICAgIGluaXRpYWxpc2F0aW9uIGlzIGdpdmVuLCB0aGUgdmFyaWFibGUgaXMgaW5pdGlhbGlzZWQgdG8gMCBldmVyeQorICAgICAgICB0aW1lIHRoZSBibG9jayBpcyBlbnRlcmVkLiBPdGhlcndpc2UsIHRoZSBpbml0aWFsaXNhdGlvbgorICAgICAgICBleHByZXNzaW9uIGlzIGV2YWx1YXRlZCBhbmQgaXRzIHJlc3VsdCBhc3NpZ25lZCB0byB0aGUgdmFyaWFibGUKKyAgICAgICAgZXZlcnl0aW1lIHRoZSBibG9jayBpcyBlbnRlcmVkLgorCisgICAgICAgIEV4YW1wbGUgZGVmaW5pdGlvbnMgYXJlOgorCisgICAgICAgICAgaW50IGk7CisgICAgICAgICAgaW50IGogPSAzOworICAgICAgICAgIGludCBrID0gMyAqIGosIGw7CisKKyAgICAgICAgICBIZXJlLCBpIGFuZCBsIGFyZSBib3RoIGluaXRpYWxpc2VkIHRvIDA7IGogaXMgaW5pdGlhbGlzZWQKKyAgICAgICAgICB0byAzLCBhbmQgayBpcyBpbml0aWFsaXNlZCB0byA5ICgzICogaikuCisKKyAgICAgICAgTG9jYWwgdmFyaWFibGVzIGRlZmluZWQgaW4gYSBibG9jayBhcmUgdmlzaWJsZSBvbmx5IHVudGlsIHRoZQorICAgICAgICBlbmQgb2YgdGhlIGJsb2NrLiBEZWZpbml0aW9ucyBpbiBhbiBpbm5lciBibG9jayBoaWRlIGRlZmluaXRpb25zIGluCisgICAgICAgIG91dGVyIGJsb2Nrcy4KKworSElTVE9SWQorICAgICAgICBVcCB0byAzLjIuNyBsb2NhbCB2YXJpYWJsZXMgd2VyZSB2aXNpYmxlIChmcm9tIHRoZWlyIHBvaW50IG9mCisgICAgICAgIGRlZmluaXRpb24pIGluIHRoZSB3aG9sZSBmdW5jdGlvbi4gVGhhdCBpcywgY29kZSBsaWtlCisKKyAgICAgICAgICAgIGRvIHsKKyAgICAgICAgICAgICAgICBpbnQgcmVzOworCisgICAgICAgICAgICAgICAgcmVzID0gLi4uCisgICAgICAgICAgICB9IHdoaWxlIChyZXMgPT0gNSk7CisgICAgICAgICAgICB3cml0ZShyZXMpOworCisgICAgICAgIHdhcyBwZXJmZWN0bHkgbGVnYWwuIEl0IGlzIG5vIGxvbmdlciwgYXMgJ3JlcycgY2Vhc2VzIHRvIGV4aXN0CisgICAgICAgIHdpdGggdGhlIGNsb3NpbmcgJ30nIG9mIHRoZSB3aGlsZSgpLgorCisgICAgICAgIFVwIHRvIDMuNS4wIHlvdSBjb3VsZCBnZXQgdGhpcyBvbGQgYmVoYXZpb3VyIGJhY2sgd2l0aCB0aGUgCisgICAgICAgICNwcmFnbWEgbm9fbG9jYWxfc2NvcGVzIGFuZCBzd2l0Y2ggaXQgb2ZmIGFnYWluIHdpdGggCisgICAgICAgICNwcmFnbWEgbG9jYWxfc2NvcGVzLgorCisgICAgICAgIFNpbmNlIDMuNS4wIGl0IGlzIG5vdCBwb3NzaWJsZSB0byBkaXNhYmxlIHRoZSBsb2NhbCBzY29wZSBiZWhhdmlvdXIuCisKKyAgICAgICAgVXAgdG8gMy4yLjgsIGxvY2FsIHZhcmlhYmxlcyBjb3VsZCBub3QgYmUgaW5pdGlhbGlzZWQgaW4gdGhlaXIKKyAgICAgICAgZGVmaW5pdGlvbi4KZGlmZiAtLWdpdCBhL2RvYy9MUEMvY2xvc3VyZV9ndWlkZSBiL2RvYy9MUEMvY2xvc3VyZV9ndWlkZQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi40MzhiYTQ2Ci0tLSAvZGV2L251bGwKKysrIGIvZG9jL0xQQy9jbG9zdXJlX2d1aWRlCkBAIC0wLDAgKzEsNzMwIEBACitDbG9zdXJlIEd1aWRlIGZvciBMUEMKKworVGFibGUgb2YgQ29udGVudHMKKworICAgICAgICAxIEluZHJvZHVjdGlvbiwgT3ZlcnZpZXcgYW5kIEVmdW4tQ2xvc3VyZXMKKworICAgICAgICAyIExmdW4tLCBJbmxpbmUgYW5kIExhbWJkYS1DbG9zdXJlcworICAgICAgICAyLjEgTGZ1bi1DbG9zdXJlcworICAgICAgICAyLjIgSW5saW5lLUNsb3N1cmVzCisgICAgICAgIDIuMyBMYW1iZGEtQ2xvc3VyZXMKKyAgICAgICAgMi4zLjEgQWR2YW50YWdlcyBvZiBMYW1iZGEtQ2xvc3VyZXMKKyAgICAgICAgMi4zLjIgRnJlZSBWYXJpYWJsZXMgaW4gTGFtYmRhLUNsb3N1cmUgQ29uc3RydWN0cworICAgICAgICAyLjMuMyBTcGVjaWFsIEVmdW4tQ2xvc3VyZXMgYW5kIE9wZXJhdG9yLUNsb3N1cmVzIGZvciBMYW1iZGFzCisgICAgICAgIDIuNCBDbG9zdXJlcyB3aXRoIFN0cmFuZ2UgTmFtZXMKKyAgICAgICAgMi41IE9wZXJhdG9yLUNsb3N1cmVzCisgICAgICAgIDIuNiBWYXJpYWJsZS1DbG9zdXJlcworCisgICAgICAgIDMgRXhhbXBsZXMKKyAgICAgICAgMy4xIExmdW4tQ2xvc3VyZQorICAgICAgICAzLjIgTGFtYmRhLUNsb3N1cmUKKworMSBJbnRyb2R1Y3Rpb24sIE92ZXJ2aWV3IGFuZCBFZnVuLUNsb3N1cmVzCisKKyAgQSBjbG9zdXJlIGlzIGEgcG9pbnRlciB0byBhIGZ1bmN0aW9uLiBUaGF0IG1lYW5zIHRoYXQgaXQgaXMgZGF0YSBsaWtlIGFuCisgIGludCBvciBhIHN0cmluZyBhcmUuIEl0IG1heSBiZSBhc3NpZ25lZCB0byBhIHZhcmlhYmxlIG9yIGdpdmVuIHRvIGFub3RoLQorICBlciBmdW5jdGlvbiBhcyBhcmd1bWVudC4KKworICBUbyBjcmVhdGUgYSBjbG9zdXJlIHRoYXQgcG9pbnRzIHRvIGFuIGVmdW4gbGlrZSB3cml0ZSgpIHlvdSBjYW4gd3JpdGUKKyAgdGhlIG5hbWUgb2YgdGhlIGVmdW4gcHJlcGVuZGVkIHdpdGggImhhc2gtdGljayI6ICMnLiAjJ3dyaXRlIGlzIGEgY2xvLQorICBzdXJlIHRoYXQgcG9pbnRzIHRvIHRoZSBlZnVuIHdyaXRlKCkuCisKKyAgSSB2ZXJ5IG9mdGVuIHB1dCBwYXJlbnRoZXNlcyBhcm91bmQgc3VjaCBhIGNsb3N1cmUtbm90YXRpb24gYmVjYXVzZQorICBvdGhlcndpc2UgbXkgZWRpdG9yIGdldHMgY29uZnVzZWQgYnkgdGhlIGhhc2htYXJrOiAoIyd3cml0ZSkuIFRoaXMgaXMKKyAgZXNwZWNpYWxseSBvZiBpbnRlcmVzdCB3aXRoaW4gbGFtYmRhLWNsb3N1cmVzIChzZWUgYmVsb3cpLgorCisgIEEgY2xvc3VyZSBjYW4gYmUgZXZhbHVhdGVkICh3aGljaCBtZWFucyB0aGF0IHRoZSBmdW5jdGlvbiBpdCBwb2ludHMgdG8KKyAgaXMgY2FsbGVkKSB1c2luZyB0aGUgZWZ1bnMgZnVuY2FsbCgpIG9yIGFwcGx5KCksIHdoaWNoIGFsc28gYWxsb3cgdG8KKyAgZ2l2ZSBhcmd1bWVudHMgdG8gdGhlIGZ1bmN0aW9uLiBFeGFtcGxlOgorCisgICAgZnVuY2FsbCgjJ3dyaXRlLCJoZWxsbyIpOworCisgIFRoaXMgd2lsbCByZXN1bHQgaW4gdGhlIHNhbWUgYXMgd3JpdGUoImhlbGxvIik7IGFsb25lLiBUaGUgc3RyaW5nCisgICJoZWxsbyIgaXMgZ2l2ZW4gYXMgZmlyc3QgKGFuZCBvbmx5KSBhcmd1bWVudCB0byB0aGUgZnVuY3Rpb24gdGhlIGNsby0KKyAgc3VyZSAjJ3dyaXRlIHBvaW50cyB0by4KKworICBUaGUgcmV0dXJuIHZhbHVlIG9mIHRoZSBmdW5jdGlvbiB0aGUgY2xvc3VyZSBwb2ludHMgdG8gaXMgcmV0dXJuZWQgYnkKKyAgdGhlIGVmdW4gZnVuY2FsbCgpIG9yIGFwcGx5KCkuIChTaW5jZSB3cml0ZSgpIGFsd2F5cyByZXR1cm5zIDAgdGhlIHJlLQorICB0dXJuIHZhbHVlIG9mIHRoZSBleGFtcGxlIGFib3ZlIHdpbGwgYmUgMC4pCisKKyAgV2hhdCBhcmUgY2xvc3VyZXMgZ29vZCBmb3I/IFdpdGggY2xvc3VyZXMgeW91IGNhbiBtYWtlIG11Y2ggbW9yZSB1bml2ZXItCisgIHNhbGx5IHVzYWJsZSBmdW5jdGlvbnMuIEEgZ29vZCBleGFtcGxlIGlzIHRoZSBmdW5jdGlvbiBmaWx0ZXIoKS4KKyAgSXQgZ2V0cyBhbiBhcnJheSBhbmQgYSBjbG9zdXJlIGFzIGFyZ3VtZW50cy4gVGhlbiBpdCBjYWxscyB0aGUgZnVuY3Rpb24KKyAgdGhlIGNsb3N1cmUgcG9pbnRzIHRvIGZvciBlYWNoIGVsZW1lbnQgb2YgdGhlIGFycmF5OgorCisgICAgZmlsdGVyKCh7ICJibGEiLCJmb28iLCJiYXIiIH0pLCMnd3JpdGUpOworCisgIFRoaXMgd2lsbCBjYWxsIHdyaXRlKCJibGEiKSwgd3JpdGUoImZvbyIpIGFuZCB3cml0ZSgiYmFyIikgaW4gYW55IG9yZGVyOworICB0aGUgb3JkZXIgaXMgdW5kZWZpbmVkLgorICAoSW4gdGhlIGN1cnJlbnQgaW1wbGVtZW50YXRpb24gdGhlIGdpdmVuIGNsb3N1cmUgaXMgZXZhbHVhdGVkIGZvciBhbGwKKyAgZWxlbWVudHMgZnJvbSB0aGUgZmlyc3QgdG8gdGhlIGxhc3QsIHNvIHRoZSBvdXRwdXQgd2lsbCBiZSAiYmxhZm9vYmFyIi4pCisKKyAgRnVydGhlcm1vcmUgdGhlIGVmdW4gZmlsdGVyKCkgZXhhbWluZXMgdGhlIHJldHVybiB2YWx1ZSBvZiBlYWNoCisgIGNhbGwgb2YgdGhlIGZ1bmN0aW9uIHRoZSBjbG9zdXJlIHBvaW50cyB0byAodGhlIHJldHVybiB2YWx1ZSBvZiB0aGUKKyAgd3JpdGUoKXMpLiBJZiB0aGUgdmFsdWUgaXMgdHJ1ZSAobm90IDApIHRoZW4gdGhpcyBlbGVtZW50IGlzIHB1dCBpbnRvCisgIGFub3RoZXIgYXJyYXkgd2hpY2ggZmlsdGVyKCkgYnVpbGRzIHVwLiBJZiB0aGUgcmV0dXJuIHZhbHVlIGlzCisgIGZhbHNlICg9PSAwKSB0aGVuIHRoaXMgZWxlbWVudCBpcyBfbm90XyBwdXQgaW50byB0aGlzIGFycmF5LiBXaGVuIGFsbAorICBjYWxscyBhcmUgZG9uZSB0aGUgc2xvd2x5IGJ1aWx0IHVwIGFycmF5IGlzIHJldHVybmVkLiBUaHVzLAorICBmaWx0ZXIoKSBmaWx0ZXJzIGZyb20gdGhlIGdpdmVuIGFycmF5IGFsbCBlbGVtZW50cyB0aGF0IHRoZSBnaXZlbgorICBjbG9zdXJlIGV2YWx1YXRlcyAidHJ1ZSIgZm9yIGFuZCByZXR1cm5zIGFuIGFycmF5IG9mIHRob3NlLiAoVGhlIGFycmF5CisgIGdpdmVuIHRvIGZpbHRlcigpIGl0c2VsZiBpcyBfbm90XyBjaGFuZ2VkISkKKworICBBIG1vcmUgc2Vuc2ljYWwgZXhhbXBsZSBmb3IgZmlsdGVyd291bGQgYmUgdGhpczoKKworICAgIHggPSBmaWx0ZXIodXNlcnMoKSwjJ3F1ZXJ5X2lzX3dpemFyZCk7CisKKyAgdXNlcnMoKSBpcyBhbiBlZnVuIHRoYXQgZ2V0cyBubyBhcmd1bWVudHMgYW5kIHJldHVybnMgYW4gYXJyYXkgb2YgYWxsCisgIGxvZ2dlZCBpbiBwbGF5ZXJzICh3aXphcmRzIGFuZCBwbGF5ZXJzKS4gcXVlcnlfaXNfd2l6YXJkKCkgaXMgYQorICBzaW11bF9lZnVuIHRoYXQgZ2V0cyBhbiBvYmplY3QgYXMgZmlyc3QgKGFuZCBvbmx5KSBhcmd1bWVudCBhbmQgcmV0dXJucworICB0cnVlICgxKSBpZiB0aGlzIG9iamVjdCBpcyBhIHdpemFyZCBhbmQgMCBvdGhlcndpc2UuCisKKyAgU28sIGZvciBlYWNoIGVsZW1lbnQgb2YgdGhlIGFycmF5IHJldHVybmVkIGJ5IHVzZXJzKCkgdGhlIGZ1bmN0aW9uCisgIHF1ZXJ5X2lzX3dpemFyZCgpIGlzIGNhbGxlZCBhbmQgb25seSB0aG9zZSBmb3Igd2hpY2ggMSB3YXMgcmV0dXJuZWQgYXJlCisgIGNvbGxlY3RlZCBpbnRvIHRoZSByZXN1bHQgYW5kIHRoZW4gcHV0IGludG8gdGhlIHZhcmlhYmxlIHguCisKKyAgV2Ugbm93IGhhdmUgYWxsIGxvZ2dlZCBpbiB3aXphcmRzIHN0b3JlZCBhcyBhcnJheSBpbiB0aGUgdmFyaWFibGUgeC4KKworICBBbm90aGVyIGV4YW1wbGU6IFdlIHdhbnQgdG8gZmlsdGVyIG91dCBhbGwgbnVtYmVycyB0aGF0IGFyZSBncmVhdGVyIHRoYW4KKyAgNDIgZnJvbSB0aGUgYXJyYXkgYSBvZiBpbnRlZ2VyczoKKworICAgIHggPSBmaWx0ZXIoKHsgMTAsNTAsMzAsNzAgfSksIyc+LDQyKTsKKworICAoeCB3aWxsIG5vdyBiZSAoeyA1MCw3MCB9KS4pCisKKyAgSGVyZSB0d28gdGhpbmdzIGFyZSBuZXc6IGZpcnN0OiB3ZSBjcmVhdGUgYSBjbG9zdXJlIHRoYXQgcG9pbnRzIHRvIGFuCisgIG9wZXJhdG9yOyBzZWNvbmQ6IHdlIHVzZSB0aGUgcG9zc2liaWxpdHkgdG8gZ2l2ZSBleHRyYSBhcmd1bWVudHMgdG8KKyAgZmlsdGVyKCkuCisKKyAgTGlrZSBhbGwgZWZ1bnMgdGhlIHVzdWFsIG9wZXJhdG9ycyBjYW4gYmUgcG9pbnRlZCB0byB3aXRoIGEgY2xvc3VyZSBieQorICBwcmVwZW5kaW5nICMnIHRvIHRoZW0uIGZ1bmNhbGwoIyc+LDQsNSkgaXMgZXhhY3RseSB0aGUgc2FtZSBhcyAoND41KS4KKworICBUaGUgZXh0cmEgYXJndW1lbnRzIGdpdmVuIGFzIHRoaXJkIHRvIGxhc3QgYXJndW1lbnQgKGFzIG1hbnkgYXMgeW91CisgIGxpa2UpIHRvIGZpbHRlcigpIGFyZSBnaXZlbiBhcyBzZWNvbmQgdG8gbGFzdCBhcmd1bWVudCB0byB0aGUKKyAgZnVuY3Rpb24gcG9pbnRlZCB0byBieSB0aGUgY2xvc3VyZSBlYWNoIHRpbWUgaXQgaXMgY2FsbGVkLgorCisgIFRodXMgd2Ugbm93IGNhbGwgKCh7IDEwLDUwLDMwLDcwIH0pWzBdPjQyKSwgKCh7IDEwLDUwLDMwLDcwIH0pWzFdPjQyKSAuLi4KKyAgKHdoaWNoIGlzICgxMD40MiksICg1MD40MikgLi4uKSBhbmQgcmV0dXJuIGFuIGFycmF5IG9mIGFsbCBlbGVtZW50cyB0aGlzCisgIHJldHVybnMgdHJ1ZSBmb3IgYW5kIHN0b3JlIGl0IGludG8geC4KKworICBJZiB5b3Ugd2FudCB0byBjcmVhdGUgYSBjbG9zdXJlIHRvIGFuIGVmdW4gb2Ygd2hpY2ggeW91IGhhdmUgdGhlIG5hbWUKKyAgc3RvcmVkIGluIGEgc3RyaW5nIHlvdSBjYW4gY3JlYXRlIHN1Y2ggYW4gZWZ1bi1jbG9zdXJlIHdpdGggdGhlIGVmdW4KKyAgc3ltYm9sX2Z1bmN0aW9uKCk6CisKKyAgICBzeW1ib2xfZnVuY3Rpb24oIndyaXRlIikgLy8gdGhpcyB3aWxsIHJldHVybiAjJ3dyaXRlCisKKyAgICBmdW5jYWxsKHN5bWJvbF9mdW5jdGlvbigid3JpdGUiKSwiZm9vYmFyIik7ICAvLyA9PSB3cml0ZSgiZm9vYmFyIik7CisKKyAgVGhpcyBmdW5jdGlvbiBkb2VzIG5vdCB2ZXJ5IG9mdGVuIG9jY3VyIGluIG5vcm1hbCBjb2RlIGJ1dCBpdCBpcyB2ZXJ5CisgIHVzZWZ1bCBmb3IgdG9vbC1wcm9ncmFtbWluZyAoZWcgdGhlIHJvYmUgdXNlcyBzeW1ib2xfZnVuY3Rpb24oKSB0byBhbGxvdworICB5b3UgY2FsbCBhbnkgZWZ1biB5b3UgZ2l2ZSkuCisKKzIgTGZ1bi0gYW5kIExhbWJkYS1DbG9zdXJlcworCisgIFZlcnkgb2Z0ZW4gdGhlIHBvc3NpYmlsaXRpZXMgY2xvc3VyZXMgdG8gZWZ1bnMgb2ZmZXIgYXJlIG5vdCBzdWZmaWNpZW50CisgIGZvciB0aGUgcHVycG9zZSBvbmUgaGFzLiBJbiBuZWFybHkgYWxsIGNhc2VzIHRocmVlIHBvc3NpYmlsaXRpZXMgZXhpc3QgaW4KKyAgc3VjaCBjYXNlczogdXNlIGFuIGxmdW4tIG9yIGlubGluZS1jbG9zdXJlLCBvciBhIGxhbWJkYS1jbG9zdXJlLgorCisyLjEgTGZ1bi1DbG9zdXJlcworCisgICAgVGhlIGZpcnN0IHBvc3NpYmlsaXR5IGlzIHJhdGhlciBlYXN5OiBsaWtlIHdpdGggdGhlIGVmdW4tY2xvc3VyZXMgeW91CisgICAgY2FuIGNyZWF0ZSBhIHBvaW50ZXIgdG8gYSBmdW5jdGlvbiBpbiB0aGUgc2FtZSBvYmplY3QgeW91IGFyZSBieSB1c2luZworICAgIHRoZSAjJyB0byBwcmVwZW5kIGl0IHRvIGEgZnVuY3Rpb24gbmFtZSBvZiBhIGZ1bmN0aW9uIGRlY2xhcmVkIGFib3ZlLgorICAgIEV4YW1wbGU6CisKKyAgICAgIHN0YXR1cyBmb28oaW50IHgpIHsKKyAgICAgICAgcmV0dXJuICgoeCoyKSA+IDQyKTsKKyAgICAgIH0KKworICAgICAgaW50ICpiYXIoKSB7CisgICAgICAgIHJldHVybiBmaWx0ZXIoKHsgMTAsNTAsMzAsNzAgfSksIydmb28pOworICAgICAgfQorCisgICAgVGh1cywgIydmb28gaXMgdXNlZCBsaWtlIHRoZXJlIHdhcyBhbiBlZnVuIG9mIHRoaXMgbmFtZSBhbmQgZG9pbmcgdGhlCisgICAgam9iIHRoYXQgaXMgZG9uZSBpbiBmb28oKS4KKworMi4yIElubGluZSBDbG9zdXJlCisKKyAgICBJbmxpbmUgY2xvc3VyZXMgYXJlIGEgdmFyaWFudCBvZiBsZnVuIGNsb3N1cmVzLCB0aGUgZGlmZmVyZW5jZSBiZWluZworICAgIHRoYXQgdGhlIGZ1bmN0aW9uIHRleHQgaXMgd3JpdHRlbiByaWdodCB3aGVyZSB0aGUgY2xvc3VyZSBpcyB1c2VkLAorICAgIGVuY2xvc2VkIGluIGEgcGFpciBvZiAnKDonIGFuZCAnOiknLiBUaGUgY29tcGlsZXIgd2lsbCB0aGVuIHRha2UgY2FyZQorICAgIG9mIGNyZWF0aW5nIGEgcHJvcGVyIGxmdW4gYW5kIGxmdW4tY2xvc3VyZS4gVGhlIGFyZ3VtZW50cyBwYXNzZWQgdG8KKyAgICBzdWNoIGFuIGlubGluZSBjbG9zdXJlIGFyZSBhY2Nlc3NpYmxlIGJ5IHBvc2l0aW9uOiAkMSB3b3VsZCBiZSB0aGUKKyAgICBmaXJzdCBhcmd1bWVudCwgJDIgdGhlIHNlY29uZCwgYW5kIHNvIG9uLiBXaXRoIHRoaXMsIHRoZQorICAgIGFib3ZlIGV4YW1wbGUgd291bGQgcmVhZDoKKworICAgICAgaW50ICogYmFyKCkgeworICAgICAgICByZXR1cm4gZmlsdGVyKCh7IDEwLDUwLDMwLDcwIH0pLCAoOiAoJDEgKiAyKSA+IDQyIDopKTsKKyAgICAgIH0KKworICAgIG9yIGFsdGVybmF0aXZlbHk6CisKKyAgICAgIGludCAqIGJhcigpIHsKKyAgICAgICAgcmV0dXJuIGZpbHRlcigoeyAxMCw1MCwzMCw3MCB9KSwgKDogcmV0dXJuICgkMSAqIDIpID4gNDI7IDopKTsKKyAgICAgIH0KKworICAgIFRoZSBkaWZmZXJlbmNlIGJldHdlZW4gdGhlIHR3byB2ZXJzaW9ucyBpcyB0aGF0IGluIHRoZSBmaXJzdCBmb3JtIHRoZSB0ZXh0CisgICAgb2YgdGhlIGlubGluZSBjbG9zdXJlIG11c3QgYmUgYW4gZXhwcmVzc2lvbiBvbmx5LCB3aGVyZWFzIGluIHRoZSBzZWNvbmQKKyAgICBmb3JtIGFueSBsZWdhbCBzdGF0ZW1lbnQgaXMgYWxsb3dlZC4gVGhlIGNvbXBpbGVyIGRpc3Rpbmd1aXNoZXMgdGhlIHR3bworICAgIGZvcm1zIGJ5IHRoZSBsYXN0IGNoYXJhY3RlciBiZWZvcmUgdGhlICc6KSc6IGlmIGl0J3MgYSAnOycgb3IgJ30nLCB0aGUKKyAgICBjb21waWxlciB0cmVhdHMgdGhlIGNsb3N1cmUgYXMgc3RhdGVtZW50KHMpLCBvdGhlcndpc2UgYXMgZXhwcmVzc2lvbi4KKworICAgIElubGluZSBjbG9zdXJlcyBtYXkgYWxzbyBuZXN0ZWQsIHNvIHRoYXQgdGhlIGZvbGxvd2luZyAobm90IHZlcnkgdXNlZnVsKQorICAgIGV4YW1wbGUgaXMgbGVnYWwsIHRvbzoKKworICAgICAgcmV0dXJuIGZpbHRlciggKHsgMTAsIDUwLCAzMCwgNzAgfSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAsICg6IHN0cmluZyAqczsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHMgPSBtYXAodXNlcnMoKSwgKDogJDEtPnF1ZXJ5X25hbWUoKSA6KSk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gc1tyYW5kb20oc2l6ZW9mKHMpKV0gKyAoJDEgKiAyKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA6KSk7CisKKyAgICBUaGUgbm90YXRpb24gb2YgaW5saW5lIGNsb3N1cmVzIGlzIG1vZGVsbGVkIGFmdGVyIHRoZSBNdWRPUyBmdW5jdGlvbmFscywKKyAgICBidXQgdGhlcmUgYXJlIGEgZmV3IGltcG9ydGFudCBkaWZmZXJlbmNlcyBpbiBiZWhhdmlvdXIuCisKKworMi4zIExhbWJkYS1DbG9zdXJlcworCisgICAgTGFtYmRhLUNsb3N1cmVzIHRha2UgdGhlIGlkZWEgb2YgJ2RlZmluZSBpdCB3aGVyZSB5b3UgdXNlIGl0JyBvbmUgc3RlcAorICAgIGZ1cnRoZXIuIE9uIGZpcnN0IGdsYW5jZSB0aGV5IG1heSBsb29rIGxpa2UgaW5saW5lIGNsb3N1cmVzIHdpdGggYW4gdWdsaWVyCisgICAgbm90YXRpb24sIGJ1dCB0aGV5IG9mZmVyIGEgZmV3IGluY3JlYXNlZCBwb3NzaWJpbGl0aWVzLiBCdXQgZmlyc3QgdGhpbmdzCisgICAgZmlyc3QuCisKKyAgICBUaGUgZWZ1biBsYW1iZGEoKSBjcmVhdGVzIGEgZnVuY3Rpb24gdGVtcG9yYXJpbHkgYW5kIHJldHVybnMgYSBjbG9zdXJlCisgICAgcG9pbnRpbmcgdG8gdGhpcyBmdW5jdGlvbi4gbGFtYmRhKCkgdGhlcmVmb3IgZ2V0cyB0d28gYXJyYXlzIGFzCisgICAgYXJndW1lbnRzLCB0aGUgZmlyc3QgaXMgYSBsaXN0IG9mIGFsbCBhcmd1bWVudHMgdGhlIGZ1bmN0aW9uIHNoYWxsIGV4cGVjdAorICAgIGFuZCB0aGUgc2Vjb25kIGFycmF5IGlzIHRoZSBjb2RlIG9mIHRoZSBmdW5jdGlvbiAoaW4gYSBtb3JlIG9yIGxlc3MKKyAgICBjb21wbGljYXRlZCBmb3JtOyBhdCBsZWFzdCBub3QgaW4gQy0gb3IgTFBDLXN5bnRheCkuIFRoZSBjbG9zdXJlICMnZm9vCisgICAgZnJvbSB0aGUgZXhhbXBsZSBhYm92ZSBjb3VsZCBiZSBub3RhdGVkIGFzIGxhbWJkYS1jbG9zdXJlOgorCisgICAgICBsYW1iZGEoKHsgJ3ggfSksKHsgKCMnPiksCisgICAgICAgICAgICAgICAgICAgICAgICAgKHsgKCMnKiksJ3gsMiB9KSwKKyAgICAgICAgICAgICAgICAgICAgICAgICA0MgorICAgICAgICAgICAgICAgICAgICAgIH0pKQorCisgICAgTm93LCB0aGUgZmlyc3QgYXJndW1lbnQgaXMgKHsgJ3ggfSksIGFuIGFycmF5IG9mIGFsbCBhcmd1bWVudHMgdGhlCisgICAgZnVuY3Rpb24gc2hhbGwgZXhwZWN0OiAxIGFyZ3VtZW50IChjYWxsZWQgJ3gpIGlzIGV4cGVjdGVkLiBOb3RpY2UgdGhlCisgICAgc3RyYW5nZSBub3RhdGlvbiBmb3IgdGhpcyBhcmd1bWVudCB3aXRoIG9uZSBzaW5nbGUgbGVhZGluZyB0aWNrLiBMaWtlCisgICAgVGhlIGhhc2gtdGljayB0byBkZW5vdGUgY2xvc3VyZXMgdGhlIGxlYWRpbmcgdGljayBpcyB1c2VkIHRvIGRlbm90ZQorICAgIHRoaW5ncyBjYWxsZWQgInN5bWJvbHMiLiBUaGV5IGRvIG5vdCBkaWZmZXIgbXVjaCBmcm9tIHN0cmluZ3MgYW5kIGlmCisgICAgeW91IGRvIG5vdCB3YW50IHRvIGhhdmUgYSBkZWVwZXIgbG9vayBpbnRvIGNsb3N1cmVzIHlvdSBjYW4gbGVhdmUgaXQKKyAgICB0aGlzIHdheS4KKworICAgIFRoZSBzZWNvbmQgYXJndW1lbnQgaXMgYW4gYXJyYXkuIFRoZSBmaXJzdCBlbGVtZW50IG9mIHN1Y2ggYW4gYXJyYXkKKyAgICBtdXN0IGJlIGFuIGVmdW4tIG9yIGFuIGxmdW4tY2xvc3VyZSwgdGhlIGZ1cnRoZXIgZWxlbWVudHMgYXJlIHRoZQorICAgIGFyZ3VtZW50cyBmb3IgdGhlIGZ1bmN0aW9uIHRoaXMgY2xvc3VyZSBwb2ludHMgdG8uIElmIHN1Y2ggYW4gYXJndS0KKyAgICBtZW50IGlzIGFuIGFycmF5LCBpdCBpcyB0cmVhdGVkIGFsaWtlOyB0aGUgZmlyc3QgZWxlbWVudCBtdXN0IGJlIGEKKyAgICBjbG9zdXJlIGFuZCB0aGUgcmVtYWluaW5nIGVsZW1lbnRzIGFyZSBhcmd1bWVudHMgKHdoaWNoIG9mIGNvdXJzZQorICAgIGFsc28gbWlnaHQgYmUgYXJyYXlzIC4uLikuCisKKyAgICBUaGlzIGxlYWRzIHRvIGEgcHJvYmxlbTogc29tZXRpbWVzIHlvdSB3YW50IHRvIGdpdmUgYW4gYXJyYXkgYXMgYW4KKyAgICBhcmd1bWVudCB0byBhIGZ1bmN0aW9uLiBCdXQgYXJyYXlzIGluIGFuIGFycmF5IGdpdmVuIHRvIGxhbWJkYSgpIGFyZQorICAgIGludGVycHJldGVkIGFzIGNvZGUtYXJyYXlzLiBUbyBhbGxvdyB5b3UgdG8gZ2l2ZSBhbiBhcnJheSBhcyBhbiBhcmd1LQorICAgIG1lbnQgd2l0aGluIGFuIGFycmF5IGdpdmVuIHRvIGxhbWJkYSgpLCB5b3UgY2FuIHVzZSB0aGUgZnVuY3Rpb24KKyAgICBxdW90ZSgpIHRvIG1ha2UgeW91ciBhcnJheSB0byBhIHF1b3RlZCBhcnJheSAoYSBxdW90ZWQgYXJyYXkgaXMgZm9yCisgICAgYW4gYXJyYXkgd2hhdCBhIHN5bWJvbCBpcyBmb3IgYSBzdHJpbmcpOgorCisgICAgICBsYW1iZGEoMCwoeyAoIydzaXplb2YpLAorICAgICAgICAgICAgICAgICAgcXVvdGUoKHsgMTAsNTAsMzAsNzAgfSkpCisgICAgICAgICAgICAgICB9KSkKKworICAgIEZvciBhcnJheSBjb25zdGFudHMsIHlvdSBjYW4gYWxzbyB1c2UgYSBzaW5nbGUgcXVvdGUgdG8gdGhlIHNhbWUKKyAgICBlZmZlY3Q6CisKKyAgICAgIGxhbWJkYSgwLCh7ICgjJ3NpemVvZiksCisgICAgICAgICAgICAgICAgICAnKHsgMTAsNTAsMzAsNzAgfSkKKyAgICAgICAgICAgICAgIH0pKQorCisgICAgVGhpcyBsYW1iZGEtY2xvc3VyZSBwb2ludHMgdG8gYSBmdW5jdGlvbiB0aGF0IHdpbGwgcmV0dXJuIDQgKGl0IHdpbGwKKyAgICBjYWxsIHNpemVvZigpIGZvciB0aGUgYXJyYXkgKHsgMTAsNTAsMzAsNzAgfSkpLiBBbm90aGVyIHRoaW5nOiBpZgorICAgIHdlIHdhbnQgdG8gY3JlYXRlIGEgZnVuY3Rpb24gdGhhdCBleHBlY3RzIG5vIGFyZ3VtZW50cywgd2UgY2FuIGdpdmUKKyAgICBhbiBlbXB0eSBhcnJheSBhcyBmaXJzdCBhcmd1bWVudCB0byBsYW1iZGEoKSBidXQgd2UgY2FuIGdpdmUgMCBhcworICAgIHdlbGwgdG8gYXR0YWluIHRoaXMuIFRoaXMgaXMganVzdCBhbiBhYmJyZXZpYXRpb24uCisKKyAgICBMYW1iZGEtY2xvc3VyZSBjb25zdHJ1Y3RzIGNhbiBiZWNvbWUgcXVpdGUgbGFyZ2UgYW5kIGhhcmQgdG8gcmVhZC4gVGhlCisgICAgbGFyZ2VyIHRoZXkgYmVjb21lIHRoZSBoYXJkZXIgdGhlIGNvZGUgaXMgdG8gcmVhZCBhbmQgeW91IHNob3VsZCBhdm9pZAorICAgIGV4dHJlbWUgY2FzZXMuIFZlcnkgb2Z0ZW4gdGhlIHBvc3NpYmlsaXR5IHRvIHVzZSBhbiBsZnVuIG9yIGFuIGlubGluZQorICAgIGluc3RlYWQgb2YgYSBsYXJnZSBsYW1iZGEgc2hvcnRlbnMgdGhlIGNvZGUgZHJhbWF0aWNhbGx5LiBFeGFtcGxlOgorCisgICAgICBzdGF0dXMgZm9vKG9iamVjdCBvKSB7CisgICAgICAgIHJldHVybiBlbnZpcm9ubWVudChvKS0+cXVlcnlfbGV2ZWwoKT5XTF9BUFBSRU5USUNFOworICAgICAgfQorCisgICAgICB4PWZpbHRlcihhLCMnZm9vKTsKKworICAgIGRvZXMgdGhlIHNhbWUgYXMKKworICAgICAgeD1maWx0ZXIoYSxsYW1iZGEoKHsgJ28gfSksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoeyAoIyc+KSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICh7ICgjJ2NhbGxfb3RoZXIpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHsgKCMnZW52aXJvbm1lbnQpLCdvIH0pLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInF1ZXJ5X2xldmVsIgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBXTF9BUFBSRU5USUNFCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KSkpOworCisgICAgKE5vdGUgdGhhdCB0aGUgc3ludGF4IHdpdGggdGhlIGFycm93ICItPiIgZm9yIGNhbGxfb3RoZXIoKXMgY2Fubm90IGJlCisgICAgdXNlZCwgIyctPiBkb2VzIG5vdCBleGlzdC4gWW91IGhhdmUgdG8gdXNlICMnY2FsbF9vdGhlciBmb3IgdGhpcyBhbmQKKyAgICBnaXZlIHRoZSBuYW1lIG9mIHRoZSBsZnVuIHRvIGJlIGNhbGxlZCBhcyBhIHN0cmluZy4pCisKKyAgICBUaGlzIGV4YW1wbGUgYWxzbyBkZW1vbnN0cmF0ZXMgdGhlIHR3byBkaXNhZHZhbnRhZ2VzIG9mIGxhbWJkYSBjbG9zdXJlcy4KKyAgICBGaXJzdCwgdGhleSBhcmUgdmVyeSBkaWZmaWN1bHQgdG8gcmVhZCwgZXZlbiBmb3IgYSBzaW1wbGUgZXhhbXBsZSBsaWtlCisgICAgdGhpcy4gU2Vjb25kLCB0aGUgbGFtYmRhIGNsb3N1cmUgaXMgcmUtY3JlYXRlZCBldmVyeXRpbWUgdGhlCisgICAgZmlsdGVyKCkgaXMgZXhlY3V0ZWQsIGV2ZW4gdGhvdWdoIHRoZSBjcmVhdGVkIGNvZGUgaXMgYWx3YXlzIHRoZQorICAgIHNhbWUuCisKKyAgICAnV2h5IHVzZSBsYW1iZGFzIGF0IGFsbCB0aGVuPycgeW91IG1heSBhc2sgbm93LiBXZWxsLCByZWFkIG9uLgorCisKKzIuMy4xIEFkdmFudGFnZXMgb2YgTGFtYmRhIENsb3N1cmVzCisKKyAgICBUaGUgYWR2YW50YWdlcyBvZiBsYW1iZGFzIHN0ZW0gZnJvbSB0aGUgZmFjdCB0aGF0IHRoZXkgYXJlIGNyZWF0ZWQKKyAgICBhdCBydW50aW1lIGZyb20gbm9ybWFsIGFycmF5cy4KKworICAgIFRoaXMgbWVhbnMgdGhhdCB0aGUgYmVoYXZpb3VyIG9mIGEgbGFtYmRhIGNhbiBiZSBtYWRlIGRlcGVuZGFudCBvbiBkYXRhCisgICAgYXZhaWxhYmxlIG9ubHkgYXQgcnVudGltZS4gRm9yIGV4YW1wbGU6CisKKyAgICAgIGNsb3N1cmUgYzsKKyAgICAgIGMgPSBsYW1iZGEoMCwgKHsjJy0sICh7ICMndGltZSB9KSwgdGltZSgpIH0pICk7CisKKyAgICBXaGVuZXZlciB5b3Ugbm93IGNhbGwgdGhpcyBjbG9zdXJlICgnZnVuY2FsbChjKScpIGl0IHdpbGwgcmV0dXJuIHRoZQorICAgIGVsYXBzZWQgdGltZSBzaW5jZSB0aGUgY2xvc3VyZSB3YXMgY3JlYXRlZC4KKworICAgIFRoZSBzZWNvbmQgYWR2YW50YWdlIG9mIGxhbWJkYXMgaXMgdGhhdCB0aGUgYXJyYXlzIGZyb20gd2hpY2ggdGhleQorICAgIGFyZSBjb21waWxlZCBjYW4gYmUgY29uc3RydWN0ZWQgYXQgcnVudGltZS4gSW1hZ2luZSBhIGN1c3RvbWl6YWJsZSBwcm9tcHQKKyAgICB3aGljaCBjYW4gYmUgY29uZmlndXJlZCB0byBkaXNwbGF5IHRoZSB0aW1lLCB0aGUgZW52aXJvbm1lbnQsIG9yIGJvdGg6CisKKyAgICAgIG1peGVkIGNvZGU7CisKKyAgICAgIGNvZGUgPSAoeyAiPiAiIH0pOworICAgICAgaWYgKHVzZXJfd2FudHNfdGltZSkKKyAgICAgICAgY29kZSA9ICh7ICMnKywgKHsgIydjdGltZSB9KSwgY29kZSB9KTsKKyAgICAgIGlmICh1c2VyX3dhbnRzX2Vudmlyb25tZW50KQorICAgICAgICBjb2RlID0gKHsgIycrLCAoeyMndG9fc3RyaW5nLCAoeyMnZW52aXJvbm1lbnQsICh7Iyd0aGlzX3BsYXllciB9KSB9KSB9KQorICAgICAgICAgICAgICAgICAgICAgLCBjb2RlIH0pOworICAgICAgc2V0X3Byb21wdChsYW1iZGEoMCwgY29kZSkpOworCisKKzIuMy4yIEZyZWUgVmFyaWFibGVzIGluIExhbWJkYS1DbG9zdXJlIENvbnN0cnVjdHMKKworICAgICAgWW91IGNhbiB1c2UgbG9jYWwgdmFyaWFibGVzIGluIGxhbWJkYSBjb25zdHJ1Y3RzIHdpdGhvdXQgZGVjbGFyaW5nCisgICAgICB0aGVtLCBqdXN0IHVzZSB0aGVtLiBUaGUgb25seSBsaW1pdGF0aW9uIGlzIHRoYXQgeW91IGF0IGZpcnN0IGhhdmUKKyAgICAgIHRvIGFzc2lnbiBzb21ldGhpbmcgdG8gdGhlbS4gR2l2ZSB0aGVtIGFzIHN5bWJvbHMgbGlrZSB5b3UgZG8gd2l0aAorICAgICAgdGhlIGFyZ3VtZW50cy4gVGhpcyBmZWF0dXJlIGRvZXMgbm90IG1ha2UgbXVjaCBzZW5zZSB3aXRob3V0IHRoZSB1c2UKKyAgICAgIG9mIGNvbXBsZXhlciBmbG93IGNvbnRyb2xsaW5nIGZlYXR1cmVzIGRlc2NyaWJlZCBiZWxvdy4KKworICAgICAgVGhlIGNsb3N1cmUgIyc9IGlzIHVzZWQgdG8gYXNzaWduIGEgdmFsdWUgdG8gc29tZXRoaW5nIChsaWtlIHRoZQorICAgICAgTFBDLW9wZXJhdG9yID0gaXMpLgorCisyLjMuMyBTcGVjaWFsIEVmdW4tQ2xvc3VyZXMgYW5kIE9wZXJhdG9yLUNsb3N1cmVzIGZvciBMYW1iZGFzCisKKyAgICAgIFRoZXJlIGFyZSBzb21lIHNwZWNpYWwgY2xvc3VyZXMgdGhhdCBhcmUgc3VwcG9zZWQgdG8gYmUgdXNlZCBvbmx5CisgICAgICB3aXRoaW4gYSBsYW1iZGEgY29uc3RydWN0LiBXaXRoIHRoZW0geW91IGNhbiBjcmVhdGUgbmVhcmx5IGFsbCBjb2RlCisgICAgICB5b3UgY2FuIHdpdGggcmVndWxhciBMUEMtY29kZSBsaWtlIGxvb3BzIGFuZCBjb25kaXRpb25zLgorCisgICAgICAjJz8gYWN0cyBsaWtlIHRoZSAiaWYiIHN0YXRlbWVudCBpbiBMUEMuIFRoZSBmaXJzdCBhcmd1bWVudCBpcyB0aGUKKyAgICAgICAgICBjb25kaXRpb24sIHRoZSBzZWNvbmQgaXMgdGhlIGNvZGUgdG8gYmUgZXhlY3V0ZWQgaWYgdGhlIGNvbmRpdGlvbgorICAgICAgICAgIHJldHVybnMgdHJ1ZS4gVGhlIGZvbGxvd2luZyBhcmd1bWVudHMgY2FuIGFsc28gYmUgc3VjaCBjb3VwbGVzIG9mCisgICAgICAgICAgY29kZS1hcnJheXMgdGhhdCBzdGF0ZSBhIGNvbmRpdGlvbiBhbmQgYSBwb3NzaWJsZSByZXN1bHQuIElmIGF0CisgICAgICAgICAgdGhlIGVuZCB0aGVyZSBpcyBhIHNpbmdsZSBhcmd1bWVudCwgaXQgaXMgdXNlZCBhcyB0aGUgZWxzZS1jYXNlCisgICAgICAgICAgaWYgbm8gY29uZGl0aW9uIHJldHVybmVkIHRydWUuCisKKyAgICAgICAgICBsYW1iZGEoKHsgJ3ggfSksKHsgKCMnPyksICAgICAgICAgICAgIC8vIGlmCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICh7ICgjJz4pLCd4LDUgfSksICAvLyAgICAoeCA+IDUpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICh7ICgjJyopLCd4LDIgfSksICAvLyAgICAgICByZXN1bHQgaXMgeCAqIDI7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICh7ICgjJzwpLCd4LC01IH0pLCAvLyBlbHNlIGlmICh4IDwgLTUpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICh7ICgjJy8pLCd4LDIgfSksICAvLyAgICByZXN1bHQgaXMgeC8yOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAneCAgICAgICAgICAgICAgICAgLy8gZWxzZSByZXN1bHQgaXMgeDsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgfSkpCisKKyAgICAgICMnPyEgaXMgbGlrZSB0aGUgIyc/IGJ1dCBpdCBuZWdhdGVzIGFsbCBjb25kaXRpb25zIGFmdGVyIGV2YWx1YXRpb24KKyAgICAgICAgICAgYW5kIHRodXMgaXMgbGlrZSBhbiBpZm5vdCBpbiBMUEMgKGlmIHRoZXJlIHdlcmUgb25lKS4KKworICAgICAgIycsICh3aGljaCBsb29rcyBhIGJpdCBzdHJhbmdlKSBpcyB0aGUgZXF1aXZhbGVudCBvZiB0aGUgY29tbWEtb3BlcmF0b3IKKyAgICAgICAgICBpbiBMUEMgYW5kIHNheXM6IGV2YWx1YXRlIGFsbCBhcmd1bWVudHMgYW5kIHJldHVybiB0aGUgdmFsdWUgb2YKKyAgICAgICAgICB0aGUgbGFzdC4gSXQgaXMgdXNlZCB0byBkbyBzZXZlcmFsIHRoaW5ncyBpbnNpZGUgYSBsYW1iZGEtY2xvc3VyZS4KKworICAgICAgICAgIGxhbWJkYSgoeyAneCB9KSwoeyAoIycsKSwgIC8vIHR3byBjb21tYXMgbmVjZXNzYXJ5IQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIG9uZSBmb3IgdGhlIGNsb3N1cmUgYW5kIG9uZSBhcworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGRlbGltaXRlciBpbiB0aGUgYXJyYXkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHsgKCMnd3JpdGUpLCJoZWxsbyB3b3JsZCEiIH0pLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoeyAoIydzYXkpLCJGb29iYXIuIiB9KQorICAgICAgICAgICAgICAgICAgICAgICAgICB9KSkKKworICAgICAgIyd3aGlsZSBhY3RzIGxpa2UgdGhlIExQQyBzdGF0ZW1lbnQgIndoaWxlIiBhbmQgcmVwZWF0cyBleGVjdXRpbmcgb25lCisgICAgICAgICAgICAgIGNvZGUtYXJyYXkgd2hpbGUgYW5vdGhlciByZXR1cm5zIHRydWUuCisgICAgICAgICAgICAgICMnd2hpbGUgZXhwZWN0cyB0d28gb3IgbW9yZSBhcmd1bWVudHM6IHRoZSBjb25kaXRpb24gYXMgZmlyc3QKKyAgICAgICAgICAgICAgYXJndW1lbnQsIHRoZW4gdGhlIHJlc3VsdCB0aGUgd2hvbGUgZXhwcmVzc2lvbiBzaGFsbCBoYXZlIGFmdGVyCisgICAgICAgICAgICAgIHRoZSBjb25kaXRpb24gdHVybnMgZmFsc2UgKHRoaXMgaXMgaW4gbWFueSBjYXNlcyBvZiBubyBpbnRlcmVzdCkKKyAgICAgICAgICAgICAgYW5kIGFzIHRoaXJkIHRvIGxhc3QgYXJndW1lbnQgdGhlIGJvZHkgb2YgdGhlIGxvb3AuCisKKyAgICAgICAgICAgICAgbGFtYmRhKDAsKHsgKCMnLCksICAgICAgICAgICAgLy8gc2V2ZXJhbCB0aGluZ3MgdG8gZG8gLi4uCisgICAgICAgICAgICAgICAgICAgICAgICAgICh7ICgjJz0pLCdpLDAgfSksICAgIC8vIGkgaXMgYSBsb2NhbCB2YXJpYWJsZSBvZiB0aGlzCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGxhbWJkYS1jbG9zdXJlIGFuZCBpcworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBpbml0aWFsaXplZCB3aXRoIDAgbm93LgorICAgICAgICAgICAgICAgICAgICAgICAgICAoeyAoIyd3aGlsZSksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICh7ICgjJzwpLCdpLDEwIH0pLCAgIC8vIGNvbmRpdGlvbjogaSA8IDEwCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDQyLCAgICAgICAgICAgICAgICAgIC8vIHJlc3VsdCBpcyBub3QgaW50ZXJlc3RpbmcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGJ1dCB3ZSBtdXN0IGdpdmUgb25lCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICh7ICgjJ3dyaXRlKSwnaSB9KSwgIC8vIGdpdmUgb3V0IGkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHsgKCMnKz0pLCdpLDEgfSkgICAgLy8gaW5jcmVhc2UgaQorICAgICAgICAgICAgICAgICAgICAgICAgICB9KQorICAgICAgICAgICAgICAgICAgICAgICB9KSkKKworICAgICAgICAgICAgICAgVGhlIGZ1bmN0aW9uIHRoaXMgY2xvc3VyZSBwb2ludHMgdG8gd2lsbCBnaXZlIG91dCB0aGUKKyAgICAgICAgICAgICAgIG51bWJlcnMgZnJvbSAwIHRvIDkgYW5kIHRoZW4gcmV0dXJuIDQyLgorCisgICAgICAjJ2RvIGlzIGxpa2UgdGhlIGRvLXdoaWxlIHN0YXRlbWVudCBpbiBMUEMgYW5kIGlzIHZlcnkgbXVjaCBsaWtlIHRoZQorICAgICAgICAgICAjJ3doaWxlLiBUaGUgZGlmZmVyZW5jZSBpcyB0aGF0ICMnd2hpbGUgdGVzdHMgdGhlIGNvbmRpdGlvbiBhbC0KKyAgICAgICAgICAgcmVhZHkgYmVmb3JlIHRoZSBib2R5IGlzIGV2YWx1YXRlZCBmb3IgdGhlIGZpcnN0IHRpbWUsIHRoaXMgbWVhbnMKKyAgICAgICAgICAgdGhhdCB0aGUgYm9keSBtaWdodCBub3QgYmUgZXZhbHVhdGVkIGV2ZW4gb25jZS4gIydkbyBldmFsdWF0ZXMKKyAgICAgICAgICAgdGhlIGJvZHkgZmlyc3QgYW5kIHRoZW4gdGhlIGNvbmRpdGlvbiwgdGh1cyB0aGUgYm9keSBpcyBldmFsdWF0ZWQKKyAgICAgICAgICAgYXQgbGVhc3Qgb25lIHRpbWUuCisgICAgICAgICAgIEZ1cnRoZXJtb3JlLCB0aGUgYXJndW1lbnRzIGZvciAjJ2RvIGFyZSBjaGFuZ2VkIGluIG9yZGVyLiAjJ2RvCisgICAgICAgICAgIGV4cGVjdHMgYXMgZmlyc3QgdG8gbGFzdCBidXQgdHdvIHRoZSBib2R5IG9mIHRoZSBsb29wLCB0aGVuIHRoZQorICAgICAgICAgICBjb25kaXRpb24gKGFzIGxhc3QtYnV0LW9uZSd0aCBhcmd1bWVudCkgYW5kIHRoZSByZXN1bHQgdmFsdWUgYXMKKyAgICAgICAgICAgbGFzdCBhcmd1bWVudC4gU28gIydkbyBtdXN0IGhhdmUgYXQgbGVhc3QgdHdvIGFyZ3VtZW50czogdGhlCisgICAgICAgICAgIGNvbmRpdGlvbiBhbmQgdGhlIHJlc3VsdC4KKworICAgICAgICAgICBsYW1iZGEoMCwoeyAoIycsKSwgICAgICAgICAgLy8gc2V2ZXJhbCB0aGluZ3MgdG8gZG8gLi4uCisgICAgICAgICAgICAgICAgICAgICAgICh7ICgjJz0pLCdpLDAgfSksICAvLyBpIGlzIGEgbG9jYWwgdmFyaWFibGUgb2YgdGhpcworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gbGFtYmRhLWNsb3N1cmUgYW5kIGlzIGluaXRpYWxpemVkCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyB3aXRoIDAgbm93LgorICAgICAgICAgICAgICAgICAgICAgICAoeyAoIydkbyksCisgICAgICAgICAgICAgICAgICAgICAgICAgICh7ICgjJ3dyaXRlKSwnaSB9KSwgIC8vIGdpdmUgb3V0IGkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgKHsgKCMnKz0pLCdpLDEgfSkgICAgLy8gaW5jcmVhc2UgaQorICAgICAgICAgICAgICAgICAgICAgICAgICAoeyAoIyc8KSwnaSwxMCB9KSwgICAvLyBjb25kaXRpb246IGkgPCAxMAorICAgICAgICAgICAgICAgICAgICAgICAgICA0MiAgICAgICAgICAgICAgICAgICAvLyByZXN1bHQgaXMgbm90IGludGVyZXN0aW5nCisgICAgICAgICAgICAgICAgICAgICAgIH0pCisgICAgICAgICAgICAgICAgICAgIH0pKQorCisgICAgICBOT1RFOiBUaGVyZSBpcyBubyAjJ2ZvciBpbiBMUEMsIHlvdSBzaG91bGQgdXNlICMnd2hpbGUgZm9yIHRoaXMuCisKKyAgICAgICMnZm9yZWFjaCBpcyBsaWtlIHRoZSBmb3JlYWNoKCkgc3RhdGVtZW50IGluIExQQy4gSXQgZXZhbHVhdGVzIG9uZSBvcgorICAgICAgICAgICBtb3JlIGJvZGllcyByZXBlYXRlZGx5IGZvciBldmVyeSB2YWx1ZSBpbiBhIGdpdmluZyBzdHJpbmcsIGFycmF5CisgICAgICAgICAgIG9yIG1hcHBpbmcuIFRoZSByZXN1bHQgb2YgdGhlIGNsb3N1cmUgaXMgMC4KKworICAgICAgICAgICAjJ2ZvcmVhY2ggZXhwZWN0cyB0d28gb3IgbW9yZSBhcmd1bWVudHM6CisgICAgICAgICAgICAtIGEgc2luZ2xlIHZhcmlhYmxlIHN5bWJvbCwgb3IgYW4gYXJyYXkgd2l0aCBzZXZlcmFsIHZhcmlhYmxlCisgICAgICAgICAgICAgIHN5bWJvbHMKKyAgICAgICAgICAgIC0gdGhlIHZhbHVlIHRvIGl0ZXJhdGUgb3ZlcgorICAgICAgICAgICAgLSB6ZXJvIG9yIG1vcmUgYm9kZXMgdG8gZXZhbHVhdGUgaW4gZWFjaCBpdGVyYXRpb24uCisKKyAgICAgICAgICAgVGhlIHNpbmdsZSB2YWx1ZXMgcmV0cmlldmVkIGZyb20gdGhlIGdpdmVuIHZhbHVlIGFyZSBhc3NpZ25lZAorICAgICAgICAgICBvbmUgYWZ0ZXIgYW5vdGhlciB0byB0aGUgdmFyaWFibGUocyksIHRoZW4gdGhlIGJvZGllcyBhcmUgZXhlY3V0ZWQKKyAgICAgICAgICAgZm9yIGVhY2ggYXNzaWdubWVudC4KKworICAgICAgICAgICBsYW1iZGEoMCwgKHsjJ2ZvcmVhY2gsICdvLCAoeyMndXNlcnN9KQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLCAoeyMnY2FsbF9vdGhlciwgJ28sICJkaWUiIH0pCisgICAgICAgICAgICAgICAgICAgICB9KSk7CisKKyAgICAgICAgICAgbGFtYmRhKDAsICh7Iydmb3JlYWNoLCAoeydrLCAndn0pLCAoeyAuLi5tYXBwaW5nLi4ufSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICwgKHsjJ3ByaW50ZiwgIiVPOiVPXG4iLCAnaywgJ3YgfSkKKyAgICAgICAgICAgICAgICAgICAgIH0pKTsKKworICAgICAgIydyZXR1cm4gZ2V0cyBvbmUgYXJndW1lbnQgYW5kIGFjdHMgbGlrZSB0aGUgInJldHVybiIgc3RhdGVtZW50IGluIExQQworICAgICAgICAgICAgICAgaW4gdGhlIGZ1bmN0aW9uIHRoYXQgaXMgY3JlYXRlZCBieSBsYW1iZGEoKS4gSXQgYWJvcnRzIHRoZQorICAgICAgICAgICAgICAgZXhlY3V0aW9uIG9mIHRoaXMgZnVuY3Rpb24gYW5kIHJldHVybnMgdGhlIGFyZ3VtZW50LgorCisgICAgICAgICAgICAgICBsYW1iZGEoMCwoeyAoIyd3aGlsZSksLy8gbG9vcAorICAgICAgICAgICAgICAgICAgICAgICAgICAgMSwgICAgICAgIC8vIGNvbmRpdGlvbiBpcyAxID09PiBlbmRsZXMgbG9vcAorICAgICAgICAgICAgICAgICAgICAgICAgICAgNDIsICAgICAgIC8vIHJldHVybiB2YWx1ZSAod2hpY2ggd2lsbCBuZXZlciBiZSB1c2VkKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgKHsgKCMnd3JpdGUpLCJncmluIiB9KQorICAgICAgICAgICAgICAgICAgICAgICAgICAgKHsgKCMnPyEpLCAgICAgICAgICAgICAgIC8vIGlmbm90CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoeyAoIydyYW5kb20pLDEwIH0pLCAgLy8gICAgICAgKHJhbmRvbSgxMCkpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoeyAoIydyZXR1cm4pLDEwMCB9KSAgLy8gICByZXR1cm4gMTAwOworICAgICAgICAgICAgICAgICAgICAgICAgICAgfSkKKyAgICAgICAgICAgICAgICAgICAgICAgIH0pKQorCisgICAgICAgICAgICAgICAgVGhpcyBmdW5jdGlvbiB3aWxsIGVudGVyIGFuIGVuZGxlcyBsb29wIHRoYXQgd2lsbCBpbiBlYWNoCisgICAgICAgICAgICAgICAgdHVybiBnaXZlIG91dCAiZ3JpbiIgYW5kIGlmIHJhbmRvbSgxMCkgcmV0dXJucyAwICh3aGljaCB3aWxsCisgICAgICAgICAgICAgICAgb2YgY291cnNlIGhhcHBlbiB2ZXJ5IHNvb24pIGl0IHdpbGwgbGVhdmUgdGhlIGZ1bmN0aW9uIHdpdGgKKyAgICAgICAgICAgICAgICAicmV0dXJuIDEwMCIuIFRoZSB2YWx1ZSA0MiB0aGF0IGlzIGdpdmVuIGFzIHJlc3VsdCBvZiB0aGUKKyAgICAgICAgICAgICAgICBsb29wIHdvdWxkIGJlIHJldHVybmVkIGlmIHRoZSBjb25kaXRpb24gd291bGQgZXZhbHVhdGUgdG8gMAorICAgICAgICAgICAgICAgIHdoaWNoIGNhbm5vdCBiZS4gKDEgaXMgbmV2ZXIgMCA7LSkKKworICAgICAgIydicmVhayBpcyB1c2VkIGxpa2UgdGhlICJicmVhayIgc3RhdGVtZW50IGluIExQQyBhbmQgYWJvcnRzIHRoZSBleGUtCisgICAgICAgICAgICAgIGN1dGlvbiBvZiBsb29wcyBhbmQgc3dpdGNoZXMuCisgICAgICAgICAgICAgIEl0IG11c3Qgbm90IGFwcGVhciBvdXRzaWRlIGEgbG9vcCBvciBzd2l0Y2ggb2YgdGhlIGxhbWJkYQorICAgICAgICAgICAgICBjbG9zdXJlIGl0c2VsZiwgaXQgY2Fubm90IGFib3J0IHRoZSBleGVjdXRpb24gb2YgdGhlIGZ1bmN0aW9uCisgICAgICAgICAgICAgIHRoZSBjbG9zdXJlIHBvaW50cyB0byEKKworICAgICAgICAgICAgICAgIGxhbWJkYSgwLCh7ICgjJz8pLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICh7ICgjJ3JhbmRvbSksMiB9KSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAoeyAoIydicmVhaykgfSksIC8vIHRoaXMgd2lsbCBjYXVzZSB0aGUgZXJyb3IKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vICJVbmltcGxlbWVudGVkIG9wZXJhdG9yIGJyZWFrCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBmb3IgbGFtYmRhKCkiCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgInJhbmRvbSB3YXMgZmFsc2UhIgorICAgICAgICAgICAgICAgICAgICAgICAgIH0pKTsKKworICAgICAgICAgICAgICBZb3UgY2FuIHVzZSAoeyAjJ3JldHVybiwwIH0pIGluc3RlYWQgb2YgKHsgIydicmVhayB9KSBpbiBzdWNoCisgICAgICAgICAgICAgIGNhc2VzLgorCisgICAgICAjJ2NvbnRpbnVlIGlzIHVzZWQgbGlrZSB0aGUgImNvbnRpbnVlIiBzdGF0ZW1lbnQgaW4gTFBDIGFuZCBqdW1wcyB0bworICAgICAgICAgICAgICAgICB0aGUgZW5kIG9mIHRoZSBjdXJyZW50IGxvb3AgYW5kIGNvbnRpbnVlcyB3aXRoIHRoZSBsb29wCisgICAgICAgICAgICAgICAgIGNvbmRpdGlvbi4KKworICAgICAgIydkZWZhdWx0IG1heSBiZSB1c2VkIHdpdGhpbiBhICMnc3dpdGNoLWNvbnN0cnVjdCBidXQgYmUgY2FyZWZ1bCEKKyAgICAgICAgICAgICAgICBUbyBjYWxsIHN5bWJvbF9mdW5jdGlvbigiZGVmYXVsdCIpICh3aGljaCBpcyBkb25lIHVzdWFsbHkKKyAgICAgICAgICAgICAgICBieSB0b29scyB0aGF0IGFsbG93IGNsb3N1cmUtY3JlYXRpb24pIG1pZ2h0IGNyYXNoIHRoZQorICAgICAgICAgICAgICAgIGRyaXZlciEgU28gcGxlYXNlIGRvIG9ubHkgdXNlIGl0IHdpdGhpbiB5b3VyIExQQy1maWxlcy4KKyAgICAgICAgICAgICAgICAoTk9URTogVGhpcyBkcml2ZXIgYnVnIGlzIGZpeGVkIHNvbWV3aGVyZSBiZWxvdyAzLjIuMUAxMzEuKQorCisgICAgICAjJy4uIG1heSBiZSB1c2VkIHdpdGhpbiBhICMnc3dpdGNoLWNvbnN0cnVjdCBidXQgaXMgbm90IGltcGxlbWVudGVkCisgICAgICAgICAgIHlldCAoMy4yLjFAMTMxKS4gQnV0ICMnWy4uXSB3b3JrcyB3ZWxsIGluc3RlYWQgb2YgaXQuCisKKyAgICAgICMnc3dpdGNoIGlzIHVzZWQgdG8gY3JlYXRlIGNsb3N1cmVzIHdoaWNoIGJlaGF2ZSB2ZXJ5IG11Y2ggbGlrZSB0aGUKKyAgICAgICAgICAgICAgIHN3aXRjaC1jb25zdHJ1Y3QgaW4gTFBDLiBUbyB1bmRlcnN0YW5kIHRoZSBmb2xsb3dpbmcgeW91CisgICAgICAgICAgICAgICBzaG91bGQgYWxyZWFkeSBrbm93IHRoZSBzeW50YXggYW5kIHBvc3NpYmlsaXRpZXMgb2YgdGhlCisgICAgICAgICAgICAgICBsYXR0ZXIgb25lICh3aGljaCBpcyBtaWdodGllciB0aGFuIHRoZSBDLXZlcnNpb24gb2Ygc3dpdGNoKS4KKworICAgICAgICAgICAgICAgSSB3aWxsIGNvbmZyb250IHNvbWUgTFBDIHZlcnNpb25zIGFuZCB0aGUgY29ycmVzcG9uZGluZyBjbG8tCisgICAgICAgICAgICAgICBzdXJlIHZlcnNpb25zIGJlbG93LgorCisgICAgICAgICAgICAgICBMUEM6ICAgICAgICAgICAgICAgICAgQ2xvc3VyZToKKyAgICAgICAgICAgICAgICAgc3dpdGNoICh4KSB7ICAgICAgICAgIGxhbWJkYSgwLCh7ICgjJ3N3aXRjaCksIHgsCisgICAgICAgICAgICAgICAgIGNhc2UgNTogICAgICAgICAgICAgICAgICAgICAgICAgICAoeyA1IH0pLAorICAgICAgICAgICAgICAgICAgIHJldHVybiAiZml2ZSI7ICAgICAgICAgICAgICAgICAgKHsgKCMncmV0dXJuKSwiZml2ZSIgfSksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIycsKSwKKyAgICAgICAgICAgICAgICAgY2FzZSA2Li45OiAgICAgICAgICAgICAgICAgICAgICAgICh7IDYsICgjJ1suLl0pLCA5IH0pLAorICAgICAgICAgICAgICAgICAgIHJldHVybiAic2l4IHRvIG5pbmUiOyAgICAgICAgICAgKHsgKCMncmV0dXJuKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJzaXggdG8gbmluZSIgfSksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIycsKSwKKyAgICAgICAgICAgICAgICAgY2FzZSAxOiAgICAgICAgICAgICAgICAgICAgICAgICAgICh7IDEgfSksCisgICAgICAgICAgICAgICAgICAgd3JpdGUoIm9uZSIpOyAgICAgICAgICAgICAgICAgICAoeyAoIyd3cml0ZSksIm9uZSIgfSksCisgICAgICAgICAgICAgICAgICAgLy8gZmFsbCB0aHJvdWdoICAgICAgICAgICAgICAgICAoIycsKSwKKyAgICAgICAgICAgICAgICAgY2FzZSAyOiAgICAgICAgICAgICAgICAgICAgICAgICAgICh7IDIsCisgICAgICAgICAgICAgICAgIGNhc2UgMTA6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAxMCB9KSwKKyAgICAgICAgICAgICAgICAgICByZXR1cm4gInR3byBvciB0ZW4iOyAgICAgICAgICAgICh7ICgjJ3JldHVybiksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAidHdvIG9yIHRlbiIgfSksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIycsKSwKKyAgICAgICAgICAgICAgICAgY2FzZSAzLi40OiAgICAgICAgICAgICAgICAgICAgICAgICh7IDMsICgjJ1suLl0pLCA0IH0pLAorICAgICAgICAgICAgICAgICAgIHdyaXRlKCJ0aHJlZSB0byBmb3VyIik7ICAgICAgICAgKHsgKCMnd3JpdGUpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInRocmVlIHRvIGZvdXIiIH0pLAorICAgICAgICAgICAgICAgICAgIGJyZWFrOyAgLy8gbGVhdmUgc3dpdGNoICAgICAgICAgKCMnYnJlYWspLAorICAgICAgICAgICAgICAgICBkZWZhdWx0OiAgICAgICAgICAgICAgICAgICAgICAgICAgKHsgKCMnZGVmYXVsdCkgfSksCisgICAgICAgICAgICAgICAgICAgd3JpdGUoInNvbWV0aGluZyBlbHNlIik7ICAgICAgICAoeyAoIyd3cml0ZSksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAic29tZXRoaW5nIGVsc2UiIH0pLAorICAgICAgICAgICAgICAgICAgIGJyZWFrOyAgICAgICAgICAgICAgICAgICAgICAgICAgKCMnYnJlYWspCisgICAgICAgICAgICAgICAgIH0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KSkKKworICAgICAgIycmJiBldmFsdWF0ZXMgdGhlIGFyZ3VtZW50cyBmcm9tIHRoZSBmaXJzdCBvbiBhbmQgc3RvcHMgaWYgb25lIGV2YWx1LQorICAgICAgICAgICBhdGVzIHRvIDAgYW5kIHJldHVybnMgMC4gSWYgbm9uZSBldmFsdWF0ZXMgdG8gMCBpdCByZXR1cm5zIHRoZQorICAgICAgICAgICByZXN1bHQgb2YgdGhlIGxhc3QgYXJndW1lbnQuCisKKyAgICAgICMnfHwgZXZhbHVhdGVzIHRoZSBhcmd1bWVudHMgZnJvbSB0aGUgZmlyc3Qgb24gYW5kIHN0b3BzIGlmIG9uZSBldmFsdS0KKyAgICAgICAgICAgYXRlcyB0byB0cnVlIChub3QgMCkgYW5kIHJldHVybnMgaXQuIElmIGFsbCBldmFsdWF0ZSB0byAwIGl0CisgICAgICAgICAgIHJldHVybnMgMC4KKworICAgICAgIydjYXRjaCBleGVjdXRlcyB0aGUgY2xvc3VyZSBnaXZlbiBhcyBhcmd1bWVudCwgYnV0IGNhdGNoZXMgYW55CisgICAgICAgICAgIHJ1bnRpbWUgZXJyb3IgKHNlZSBjYXRjaChFKSkuIE9wdGlvbmFsbHkgdGhlIHN5bWJvbHMgJ25vbG9nLAorICAgICAgICAgICAncHVibGlzaCBhbmQgJ3Jlc2VydmUgbWF5IGJlIGdpdmVuIGFzIGFkZGl0aW9uYWwgYXJndW1lbnRzIHRvCisgICAgICAgICAgIG1vZGlmeSB0aGUgYmVoYXZpb3VyIG9mIHRoZSBjYXRjaC4KKworICAgICAgIydzc2NhbmYgYWN0cyBzaW1pbGFyIHRvIGhvdyBhIGZ1bmNhbGwgd291bGQsIGJ1dCBwYXNzZXMgdGhlIHRoaXJkCisgICAgICAgICAgIGFuZCBmb2xsb3dpbmcgYXJndW1lbnRzIGFzIGx2YWx1ZXMsIHRoYXQgaXMsIHZhbHVlcyB3aGljaCBjYW4KKyAgICAgICAgICAgYmUgYXNzaWduZWQgdG8uCisKKyAgICAgICMnPSBhbmQgdGhlICMnPG9wPj0gdmFyaWFudHMgYXJlIGFsc28gc3BlY2lhbCBiZWNhdXNlIHRoZSBmaXJzdAorICAgICAgICAgICBhcmd1bWVudCBoYXMgdG8gYmUgYW4gbHZhbHVlLgorCisyLjQgQ2xvc3VyZXMgd2l0aCBTdHJhbmdlIE5hbWVzCisKKyAgICAjJ25lZ2F0ZSBpcyB0aGUgdW5hcnkgbWludXMgdGhhdCByZXR1cm5zIC14IGZvciB0aGUgYXJndW1lbnQgeC4KKworICAgICAgICAgICAgIG1hcCgoeyAxLDIsMyB9KSwjJ25lZ2F0ZSkKKworICAgICAgICAgICAgIFRoaXMgcmV0dXJucyAoeyAtMSwtMiwtMyB9KS4KKworICAgICMnWyBpcyB1c2VkIGZvciB0aGUgdGhpbmdzIHRoYXQgaW4gTFBDIGFyZSBkb25lIHdpdGgKKyAgICAgICAgICAgICB0aGUgW10tb3BlcmF0b3IgKGl0IGluZGV4ZXMgYW4gYXJyYXkgb3IgYSBtYXBwaW5nKS4KKworICAgICAgICAgICAgIGxhbWJkYSgwLCh7ICMnWyxxdW90ZSgoeyAxMCw1MCwzMCw3MCB9KSksMiB9KSkgPT0+IDMwCisgICAgICAgICAgICAgbGFtYmRhKDAsKHsgIydbLChbICJ4IjoxMDs1MCwgInkiOjMwOzcwIF0pLCJ4IiwxIH0pKSA9PT4gNTAKKworICAgICMnWzwgaXMgdGhlIHNhbWUgYXMgIydbIGJ1dCBjb3VudHMgdGhlIGVsZW1lbnRzIGZyb20gdGhlCisgICAgICAgICAgICAgICBlbmQgKGxpa2UgaW5kZXhpbmcgd2l0aCBbXSBhbmQgdGhlICI8IikuCisKKyAgICAjJ1suLl0gcmV0dXJucyBhIHN1YmFycmF5IG9mIHRoZSBhcmd1bWVudCBmcm9tIHRoZSBvbmUKKyAgICAgICAgICAgICBnaXZlbiBpbmRleCB0byB0aGUgb3RoZXIgZ2l2ZW4gaW5kZXgsIGJvdGggY291bnRlZCBmcm9tIHRoZQorICAgICAgICAgICAgIGJlZ2lubmluZyBvZiB0aGUgYXJyYXkuCisKKyAgICAjJ1suLjxdCisgICAgIydbPC4uXQorICAgICMnWzwuLjxdIHNhbWUgYXMgYWJvdmUsIGJ1dCB0aGUgaW5kZXhlcyBhcmUgY291bnRlZCBmcm9tIHRoZSBlbmQsCisKKyAgICAgICAgICAgICAgICBsYW1iZGEoMCwoeyAjJ1suLjxdLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHF1b3RlKCh7IDAsMSwyLDMsNCw1LDYsNyB9KSksMiwzCisgICAgICAgICAgICAgICAgICAgICAgICAgfSkpCisKKyAgICAgICAgICAgICAgICBUaGlzIHdpbGwgcmV0dXJuICh7IDIsMyw0LDUgfSkuCisgICAgIydbLi4KKyAgICAjJ1s8Li4gc2FtZSBhcyBhYm92ZSwgYnV0IG9ubHkgdGhlIGZpcnN0IGluZGV4IGlzIGdpdmVuLCB0aGUKKyAgICAgICAgICAgICAgIHN1YmFycmF5IHdpbGwgZ28gdGlsbCB0aGUgZW5kIG9mIHRoZSBvcmlnaW5hbCAobGlrZSB3aXRoCisgICAgICAgICAgICAgICBbeC4uXSkuCisKKyAgICAjJyh7IGlzIHVzZWQgdG8gY3JlYXRlIGFycmF5cyAoYXMgd2l0aCAoeyB9KSBpbiBMUEMpLiBBbGwgYXJndW1lbnRzCisgICAgICAgICAgICAgYmVjb21lIHRoZSBlbGVtZW50cyBvZiB0aGUgYXJyYXkuCisKKyAgICAgICAgICAgICBsYW1iZGEoMCwoeyAjJyh7LAorICAgICAgICAgICAgICAgICAgICAgICAgICh7ICgjJ3JhbmRvbSksMTAgfSksCisgICAgICAgICAgICAgICAgICAgICAgICAgKHsgKCMncmFuZG9tKSw1MCB9KSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAoeyAoIydyYW5kb20pLDMwIH0pLAorICAgICAgICAgICAgICAgICAgICAgICAgICh7ICgjJ3JhbmRvbSksNzAgfSkKKyAgICAgICAgICAgICAgICAgICAgICB9KSkKKworICAgICAgICAgICAgIFRoaXMgcmV0dXJucyAoeyByYW5kb20oMTApLHJhbmRvbSg1MCkscmFuZG9tKDMwKSxyYW5kb20oNzApIH0pLgorCisgICAgIycoWyBpcyB1c2VkIHRvIGNyZWF0ZSBtYXBwaW5ncyBvdXQgb2Ygc2luZ2xlIGVudHJpZXMgKHdpdGggc2V2ZS0KKyAgICAgICAgICAgICAgIHJhbCB2YWx1ZXMpIGxpa2UgdGhlIChbIF0pIGluIExQQy4gVmVyeSB1bnVzdWFsIGlzIHRoZSBmYWN0CisgICAgICAgICAgICAgICB0aGF0IHRoaXMgY2xvc3VyZSBnZXRzIGFycmF5cyBhcyBhcmd1bWVudCB0aGF0IGFyZSBub3QgZXZhbC0KKyAgICAgICAgICAgICAgIHVhdGVkLCBhbHRob3VnaCB0aGV5IGFyZSBub3QgcXVvdGVkLgorCisgICAgICAgICAgICAgICBsYW1iZGEoMCwoeyAjJyhbLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgKHsgIngiLDEsMiwzIH0pLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgKHsgInkiLDQsNSw2IH0pCisgICAgICAgICAgICAgICAgICAgICAgICB9KSk7CisKKyAgICAgICAgICAgICAgIFRoaXMgcmV0dXJucyAoWyAieCI6IDE7MjszLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJ5IjogNDs1OzYgXSkuCisKKyAgICAgICAgICAgICAgIEhvd2V2ZXIsIHRoZSBlbGVtZW50cyBvZiB0aGUgYXJyYXlzIGFyZSBldmFsdWF0ZWQgYXMgbGFtYmRhCisgICAgICAgICAgICAgICBleHByZXNzaW9ucywgc28gaWYgeW91IHdhbnQgdG8gY3JlYXRlIGEgbWFwcGluZyBmcm9tIHZhbHVlcworICAgICAgICAgICAgICAgZXZhbHVhdGVkIGF0IGNhbGwgdGltZSwgd3JpdGUgdGhlbSBhcyBsYW1iZGEgY2xvc3VyZXM6CisKKyAgICAgICAgICAgICAgIGxhbWJkYSgwLCAoeyAjJyhbLCAoeyAxLCAoeyAjJ2N0aW1lIH0pIH0pIH0pICkKKworICAgICAgICAgICAgICAgd2lsbCByZXR1cm4gKFsgMTogPHJlc3VsdCBvZiBjdGltZSgpIGF0IGNhbGwgdGltZSBdKS4KKworICAgICAgICAgICAgICAgQXJyYXlzIGNhbiBiZSBwdXQgaW50byB0aGUgbWFwcGluZyBieSBxdW90aW5nOgorCisgICAgICAgICAgICAgICBsYW1iZGEoMCwgKHsgIycoWywgKHsgMSwgJyh7IDIgfSkgfSkgfSkgKQorCisgICAgICAgICAgICAgICB3aWxsIHJldHVybiAoWyAxOiAoeyAyIH0pIF0pCisKKworICAgICMnWyxdIGlzIG5lYXJseSB0aGUgc2FtZSBhcyAjJ1suIFRoZSBvbmx5IGRpZmZlcmVuY2UKKyAgICAgICAgICAgICAgICAgICAgIHNob3dzIHVwIGlmIHlvdSB3YW50IHRvIGluZGV4IGEgbWFwcGluZyB3aXRoIGEgd2lkdGgKKyAgICAgICAgICAgICAgICAgICAgIGdyZWF0ZXIgdGhhbiAxICh3aXRoIG1vcmUgdGhhbiBqdXN0IG9uZSB2YWx1ZSBwZXIKKyAgICAgICAgICAgICAgICAgICAgIGtleSkgZGlyZWN0bHkgd2l0aCBmdW5jYWxsKCkuIEV4YW1wbGU6CisgICAgICAgICAgICAgICAgICAgICBmdW5jYWxsKCMnWywoWyAwOjE7MiwgMzo0OzUgXSksMCwxKQorICAgICAgICAgICAgICAgICAgICAgVGhpcyB3aWxsIG5vdCB3b3JrLiBVc2UgIydbLF0gYW5kIGl0IHdpbGwKKyAgICAgICAgICAgICAgICAgICAgIHdvcmsuIElmIHlvdSB3YW50IHRvIHVzZSBpdCBpbiBhIGxhbWJkYSBjbG9zdXJlIHlvdQorICAgICAgICAgICAgICAgICAgICAgZG8gbm90IGhhdmUgdG8gdXNlICMnWyxdIGFuZCAjJ1sgd2lsbAorICAgICAgICAgICAgICAgICAgICAgZG8gZmluZS4gT24gdGhlIG90aGVyIGhhbmQsICMnWyxdIGNhbm5vdAorICAgICAgICAgICAgICAgICAgICAgd29yayB3aXRoIGFycmF5cywgc28gaW4gbmVhcmx5IGFsbCBjYXNlcyB1c2UgIydbCisgICAgICAgICAgICAgICAgICAgICBhbmQganVzdCBpbiB0aGUgZGVzY3JpYmVkIHNwZWNpYWwgY2FzZSwgdXNlCisgICAgICAgICAgICAgICAgICAgICAjJ1ssXS4KKyAgICAgICAgICAgICAgICAgICAgIFRoaXMgaXMgYSBzdHJhbmdlIHRoaW5nIGFuZCBJIGRlZW0gaXQgYSBidWcsIHNvIGl0CisgICAgICAgICAgICAgICAgICAgICBtaWdodCBjaGFuZ2UgaW4gdGhlIGZ1dHVyZS4KKworMi41IE9wZXJhdG9yLUNsb3N1cmVzCisKKyAgICBNb3N0IG9mIHRoZSBjbG9zdXJlcyB0aGF0IGFyZSB1c2VkIGZvciB0aGluZ3Mgd2hpY2ggYXJlIGRvbmUgYnkgb3BlcmEtCisgICAgdG9ycyBhcmUgaW4gZmFjdCBub3Qgb3BlcmF0b3ItY2xvc3VyZXMgYnV0IGVmdW4tY2xvc3VyZXMuIEJ1dCB0aGVyZSBhcmUKKyAgICBhIGZldyB3aGljaCBkbyBub3QgaGF2ZSB0aGUgc3RhdGUgb2YgZWZ1bi1jbG9zdXJlcyBidXQgYXJlIGNhbGxlZAorICAgICJvcGVyYXRvci1jbG9zdXJlcyIuICMncmV0dXJuIGlzIGFuIGV4YW1wbGUsIGEgY29tcGxldGUgbGlzdCBvZiB0aGVtIGlzCisgICAgZ2l2ZW4gYmVsb3cuCisKKyAgICBUaGVzZSBjbG9zdXJlcyBjYW5ub3QgYmUgY2FsbGVkIGRpcmVjdGx5IHVzaW5nIGZ1bmNhbGwoKSBvciBhcHBseSgpIChvcgorICAgIG90aGVyIGVmdW5zIGxpa2UgZmlsdGVyKCkpLCBidXQgbXVzdCBhcHBlYXIgb25seSBpbiBsYW1iZGEtY29uLQorICAgIHN0cnVjdHMuCisKKyAgICAgIGZ1bmNhbGwoIydyZXR1cm4sNCk7ICAvLyBkb2VzIG5vdCB3b3JrISBUaGlzIHdpbGwgcmFpc2UgYW4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBVbmNhbGxhYmxlLWNsb3N1cmUgZXJyb3IuCisgICAgICBmdW5jYWxsKGxhbWJkYSgwLCAgICAgLy8gdGhpcyBpcyBhIGNvcnJlY3QgZXhhbXBsZQorICAgICAgICAgICAgICAgICAgICAgKHsgKCMncmV0dXJuKSw0IH0pCisgICAgICAgICAgICAgICAgICAgICkpOworCisgICAgQWxsIG9wZXJhdG9yLWNsb3N1cmVzOgorICAgICMnJiYKKyAgICAjJ3x8CisgICAgIycsCisgICAgIyc/CisgICAgIyc/IQorICAgICMnPQorICAgICMnPG9wPj0KKyAgICAjJysrCisgICAgIyctLQorICAgICMnYnJlYWsKKyAgICAjJ2NhdGNoCisgICAgIydjb250aW51ZQorICAgICMnZGVmYXVsdAorICAgICMnZG8KKyAgICAjJ2ZvcmVhY2gKKyAgICAjJ3JldHVybgorICAgICMnc3NjYW5mCisgICAgIydzd2l0Y2gKKyAgICAjJ3doaWxlCisgICAgIycoeworICAgICMnKFsKKworICAgICMnLi4gaXMgdmVyeSBsaWtlbHkgdG8gYmUgYW4gb3BlcmF0b3IgY2xvc3VyZSB0b28sIGJ1dCBzaW5jZSBpdCBpcworICAgIG5vdCBpbXBsZW1lbnRlZCB5ZXQsIEkgY2Fubm90IHNheSBmb3Igc3VyZS4KKworMi42IFZhcmlhYmxlLUNsb3N1cmVzCisKKyAgICBBbGwgb2JqZWN0LWdsb2JhbCB2YXJpYWJsZXMgbWlnaHQgYmUgImNsb3N1cmVkIiBieSBwcmVwZW5kaW5nIGEgIycgdG8KKyAgICB0aGVtIHRvIGFsbG93IGFjY2VzcyBhbmQvb3IgbWFuaXB1bGF0aW9uIG9mIHRoZW0uIFNvIGlmIHlvdXIgb2JqZWN0IGhhcworICAgIGEgZ2xvYmFsIHZhcmlhYmxlIHggeW91IGNhbiB1c2UgIyd4IHdpdGhpbiBhIGNsb3N1cmUuCisKKyAgICBOb3JtYWxseSB5b3Ugd2lsbCB0cmVhdCB0aG9zZSBleHByZXNzaW9ucyBsaWtlIGxmdW4tY2xvc3VyZXM6IHB1dCB0aGVtCisgICAgaW50byBhbiBhcnJheSB0byBnZXQgdGhlIHZhbHVlOgorCisgICAgb2JqZWN0LmM6CisgICAgICAgICAgICAgIGludCB4OworICAgICAgICAgICAgICBpbnQgZm9vKCkgeworICAgICAgICAgICAgICAgIHJldHVybiBsYW1iZGEoMCwoeyAoIyd3cml0ZSksKHsgKCMneCkgfSkgfSkpOworICAgICAgICAgICAgICB9CisKKyAgICBBbnlib2R5IHdobyBub3cgY2FsbHMgb2JqZWN0LT5mb28oKSB3aWxsIGdldCBhIGNsb3N1cmUgd2hpY2ggd2lsbCwgd2hlbgorICAgIGV2YWx1YXRlZCwgd3JpdGUgdGhlIGFjdHVhbCB2YWx1ZSBvZiBvYmplY3QncyBnbG9iYWwgdmFyaWFibGUgeC4KKworICAgIFZhcmlhYmxlIGNsb3N1cmVzIGRvIG5vdCBhY2NlcHQgYXJndW1lbnRzLgorCiszIEV4YW1wbGVzCisKKyAgSW4gdGhpcyBzZWN0aW9uIEkgd2lsbCBnaXZlIGFuZCBleHBsYWluIHNvbWUgZXhhbXBsZXMgY29taW5nIG91dCBvZgorICBwcmF4aXMuIElmIHRoZSBleHBsYW5hdGlvbiBzZWVtcyB0byBiZSBpbiBzb21lIGNhc2VzIHRvbyBkZXRhaWxlZCB0aGlzCisgIGNhbiBiZSBleHBsYWluZWQgYnkgdGhlIHRyaWFsIHRvIGFsbG93IHRoZSByZWFkZXIgdG8gcmVhZCB0aGUgZXhhbXBsZXMKKyAgc2VjdGlvbiBmaXJzdCA7LSkKKworMy4xIExmdW4tQ2xvc3VyZQorCisgICAgQW4gaXRlbSB3aXRoIGEgY29tcGxleCBsb25nLWRlc2NyaXB0aW9uIGxpa2UgYSB3YXRjaCB0aGF0IHNoYWxsIGFsd2F5cworICAgIHNob3cgdGhlIGFjdHVhbCB0aW1lIHdpbGwgdXN1YWxseSBiYXNlIHVwb24gdGhlIGNvbXBsZXgvaXRlbS1jbGFzcyBhbmQKKyAgICBnaXZlIGFuIGxmdW4tY2xvc3VyZSBhcyBhcmd1bWVudCB0byB0aGUgc2V0X2xvbmcoKS1tZXRob2QuCisKKyAgICB3YXRjaC5jOgorICAgICAgICAgICAgIGluaGVyaXQgImNvbXBsZXgvaXRlbSI7CisKKyAgICAgICAgICAgICBzdHJpbmcgbXlfbG9uZygpIHsKKyAgICAgICAgICAgICAgIHJldHVybiAoIlRoZSB3YXRjaCBpcyBzbWFsbCBhbmQgaGFzIGEgc3RyYW5nZSBvdGhlcndvcmxkbHkiCisgICAgICAgICAgICAgICAgICAgICAgICIgYXVyYSBhYm91dCBpdC5cbiIKKyAgICAgICAgICAgICAgICAgICAgICAgIlRoZSBjdXJyZW50IHRpbWUgaXM6ICIrY3RpbWUoKSsiLlxuIik7CisgICAgICAgICAgICAgfQorCisgICAgICAgICAgICAgdm9pZCBjcmVhdGUoKSB7CisgICAgICAgICAgICAgICBzZXRfc2hvcnQoImEgbGl0dGxlIHdhdGNoIik7CisgICAgICAgICAgICAgICBzZXRfaWQoKHsgIndhdGNoIiwibGl0dGxlIHdhdGNoIiB9KSk7CisgICAgICAgICAgICAgICBzZXRfbG9uZygjJ215X2xvbmcpOyAgLy8gdGhlIGxmdW4tY2xvc3VyZSB0byB0aGUgbGZ1biBteV9sb25nKCkKKyAgICAgICAgICAgICB9CisKKzMuMiBMYW1iZGEtQ2xvc3VyZQorCisgICAgVGhlIGV4YW1wbGUgZnJvbSAzLjEgY2FuIGFsc28gYmUgd3JpdHRlbiB1c2luZyBhIGxhbWJkYS1jbG9zdXJlLgorCisgICAgd2F0Y2guYzoKKyAgICAgICAgICAgICBpbmhlcml0ICJjb21wbGV4L2l0ZW0iOworCisgICAgICAgICAgICAgdm9pZCBjcmVhdGUoKSB7CisgICAgICAgICAgICAgICBzZXRfc2hvcnQoImEgbGl0dGxlIHdhdGNoIik7CisgICAgICAgICAgICAgICBzZXRfaWQoKHsgIndhdGNoIiwibGl0dGxlIHdhdGNoIiB9KSk7CisgICAgICAgICAgICAgICBzZXRfbG9uZyhsYW1iZGEoMCwoeyAoIycrKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJUaGUgd2F0Y2ggaXMgc21hbGwgYW5kIGhhcyBhIHN0cmFuZ2UiCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiIG90aGVyd29ybGRseSBhdXJhIGFib3V0IGl0LlxuIgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIlRoZSBjdXJyZW50IHRpbWUgaXM6ICIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoeyAoIycrKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICh7ICgjJ2N0aW1lKSB9KSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICIuXG4iCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSkpKTsKKyAgICAgICAgICAgICB9CmRpZmYgLS1naXQgYS9kb2MvTFBDL2Nsb3N1cmVzIGIvZG9jL0xQQy9jbG9zdXJlcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5iYTVkODA0Ci0tLSAvZGV2L251bGwKKysrIGIvZG9jL0xQQy9jbG9zdXJlcwpAQCAtMCwwICsxLDMzMSBAQAorQ09OQ0VQVAorICAgICAgICBjbG9zdXJlcworCitOT1RFCisgICAgICAgIFRoaXMgaXMgdGhlIG9mZmljaWFsIG1hbiBwYWdlIGNvbmNlcm5pbmcgY2xvc3VyZXMuIElmIHlvdSBmaW5kCisgICAgICAgIGl0IGhhcmQgdG8gcmVhZCBtYXliZSB0aGUgQ2xvc3VyZSBHdWlkZSBpcyBhbiBlYXNpZXIgaW50cm9kdWN0aW9uCisgICAgICAgIGZvciB5b3U6IFNlZSBjbG9zdXJlX2d1aWRlKExQQykgYW5kIGNsb3N1cmVzLWV4YW1wbGUoTFBDKS4KKworREVTQ1JJUFRJT04KKyAgICAgICAgQ2xvc3VyZXMgcHJvdmlkZSBhIG1lYW5zIG9mIGNyZWF0aW5nIGNvZGUgZHluYW1pY2FsbHkgYW5kCisgICAgICAgIHBhc3NpbmcgcGllY2VzIG9mIGNvZGUgYXMgcGFyYW1ldGVycywgc3RvcmluZyB0aGVtIGluCisgICAgICAgIHZhcmlhYmxlcy4gT25lIG1pZ2h0IHRoaW5rIG9mIHRoZW0gYXMgYSB2ZXJ5IGFkdmFuY2VkIGZvcm0gb2YKKyAgICAgICAgcHJvY2Vzc19zdHJpbmcoKS4gSG93ZXZlciwgdGhpcyBmYWxscyBzaG9ydCBvZiB3aGF0IHlvdSBjYW4KKyAgICAgICAgYWN0dWFsbHkgZG8gd2l0aCB0aGVtLgorCisgICAgICAgIFRoZSBzaW1wbGVzdCBraW5kIG9mIGNsb3N1cmVzIGFyZSBlZnVucywgbGZ1bnMgb3Igb3BlcmF0b3JzLgorICAgICAgICBGb3IgZXhhbXBsZSwgIyd0aGlzX3BsYXllciBpcyBhbiBleGFtcGxlIG9mIGEgY2xvc3VyZS4gWW91IGNhbgorICAgICAgICBhc3NpZ24gaXQgdG8gYSB2YXJpYWJsZSBhcyBpbgorCisgICAgICAgICAgICAgICAgY2xvc3VyZSBmOworICAgICAgICAgICAgICAgIG9iamVjdCBwOworICAgICAgICAgICAgICAgIGYgPSAjJ3RoaXNfcGxheWVyOworCisgICAgICAgIGFuZCBsYXRlciB1c2UgZWl0aGVyIHRoZSBmdW5jYWxsKCkgb3IgYXBwbHkoKSBlZnVuIHRvIGV2YWx1YXRlCisgICAgICAgIGl0LiBMaWtlCisKKyAgICAgICAgICAgICAgICBwID0gZnVuY2FsbChmKTsKKworICAgICAgICBvcgorCisgICAgICAgICAgICAgICAgcCA9IGFwcGx5KGYpOworCisgICAgICAgIEluIGJvdGggY2FzZXMgdGhlcmUgcCB3aWxsIGFmdGVyd2FyZHMgaG9sZCB0aGUgdmFsdWUgb2YKKyAgICAgICAgdGhpc19wbGF5ZXIoKS4gIE9mIGNvdXJzZSwgdGhpcyBpcyBvbmx5IGEgcmF0aGVyIHNpbXBsZQorICAgICAgICBhcHBsaWNhdGlvbi4KKworICAgICAgICBJbmxpbmUgY2xvc3VyZXMgYXJlIGEgdmFyaWFudCBvZiBsZnVuIGNsb3N1cmVzLCB0aGUgZGlmZmVyZW5jZQorICAgICAgICBiZWluZyB0aGF0IHRoZSBmdW5jdGlvbiB0ZXh0IGlzIHdyaXR0ZW4gcmlnaHQgd2hlcmUgdGhlCisgICAgICAgIGNsb3N1cmUgaXMgdXNlZC4gIFNpbmNlIHRoZXkgYXJlIHByZXR0eSBwb3dlcmZ1bCBieQorICAgICAgICB0aGVtc2VsdmVzLCBpbmxpbmUgY2xvc3VyZXMgaGF2ZSB0aGVpciBvd24gbWFucGFnZS4KKworICAgICAgICBNb3JlIHVzZWZ1bCBpbnN0YW5jZXMgb2YgY2xvc3VyZXMgY2FuIGJlIGNyZWF0ZWQKKyAgICAgICAgdXNpbmcgdGhlIGxhbWJkYSgpIGVmdW4uIEl0IGlzIG11Y2ggbGlrZSB0aGUgbGFtYmRhIGZ1bmN0aW9uCisgICAgICAgIGluIExJU1AuIEZvciBleGFtcGxlLCB5b3UgY2FuIGRvIHRoZSBmb2xsb3dpbmc6CisKKyAgICAgICAgICAgICAgICBmID0gbGFtYmRhKCAoeyAneCB9KSwgKHsgIydlbnZpcm9ubWVudCwgJ3ggfSkgKTsKKworICAgICAgICBUaGlzIHdpbGwgY3JlYXRlIGEgbGFtYmRhIGNsb3N1cmUgYW5kIGFzc2lnbiBpdCB0byBmLiBUaGUKKyAgICAgICAgZmlyc3QgYXJndW1lbnQgdG8gbGFtYmRhIGlzIGFuIGFycmF5IGRlc2NyaWJpbmcgdGhlIGFyZ3VtZW50cworICAgICAgICAoc3ltYm9scykgcGFzc2VkIHRvIHRoZSBjbG9zdXJlIHVwb24gZXZhbHVhdGlvbiBieSBmdW5jYWxsKCkKKyAgICAgICAgb3IgYXBwbHkoKS4gWW91IGNhbiBub3cgZXZhbHVhdGUgZiwgZm9yIGV4YW1wbGUgYnkgbWVhbnMgb2YKKyAgICAgICAgZnVuY2FsbChmLHRoaXNfb2JqZWN0KCkpLiBUaGlzIHdpbGwgcmVzdWx0IGluIHRoZSBmb2xsb3dpbmcKKyAgICAgICAgc3RlcHM6CisKKyAgICAgICAgICAgICAgICAxLiBUaGUgdmFsdWUgb2YgdGhpc19vYmplY3QoKSB3aWxsIGJlIGJvdW5kIHRvIHN5bWJvbCB4LgorICAgICAgICAgICAgICAgIDIuIGVudmlyb25tZW50KHgpIGV2YWx1YXRlcyB0byBlbnZpcm9ubWVudCh0aGlzX29iamVjdCgpKQorICAgICAgICAgICAgICAgICAgIGFuZCBpcyByZXR1cm5lZCBhcyB0aGUgcmVzdWx0IG9mIHRoZSBmdW5jYWxsKCkuCisKKyAgICAgICAgT25lIG1pZ2h0IHdvbmRlciB3aHkgdGhlcmUgYXJlIHR3byBmdW5jdGlvbnMsIGZ1bmNhbGwoKSBhbmQKKyAgICAgICAgYXBwbHkoKSwgdG8gcGVyZm9ybSB0aGUgc2VlbWluZ2x5IHNhbWUgam9iLCBuYW1lbHkgZXZhbHVhdGluZworICAgICAgICBhIGNsb3N1cmUuIE9mIGNvdXJzZSB0aGVyZSBpcyBhIHN1YnRsZSBkaWZmZXJlbmNlLiBJZiB0aGUgbGFzdAorICAgICAgICBhcmd1bWVudCB0byBhcHBseSgpIGlzIGFuIGFycmF5LCB0aGVuIGVhY2ggb2YgaXRzIGVsZW1lbnRzCisgICAgICAgIGdldHMgZXhwYW5kZWQgdG8gYW4gYWRkaXRpb25hbCBwYXJhbWF0ZXIuIFRoZSBvYnZpb3VzIHVzZQorICAgICAgICB3b3VsZCBiZSAjJ2NhbGxfb3RoZXIgYXMgaW46CisKKyAgICAgICAgICAgICAgICBtaXhlZCBldmFsKG9iamVjdCBvYixzdHJpbmcgZnVuYyxtaXhlZCAqYXJncykgeworICAgICAgICAgICAgICAgICAgcmV0dXJuIGFwcGx5KCMnY2FsbF9vdGhlcixvYixmdW5jLGFyZ3MpOworICAgICAgICAgICAgICAgIH0KKworICAgICAgICBUaGlzIHdpbGwgcmVzdWx0IGluIGNhbGxpbmcKKyAgICAgICAgb2ItPmZ1bmMoYXJnc1swXSxhcmdzWzFdLC4uLixhcmdzW3NpemVvZihhcmdzKS0xXSkuICBVc2luZworICAgICAgICBmdW5jYWxsKCkgaW5zdGVhZCBvZiBhcHBseSgpIHdvdWxkIGhhdmUgZ2l2ZW4gdXMKKyAgICAgICAgb2ItPmZ1bmMoYXJncykuCisKKyAgICAgICAgT2YgY291cnNlLCBiZXNpZGVzIGVmdW5zIHRoZXJlIGFyZSBjbG9zdXJlcyBmb3Igb3BlcmF0b3JzLAorICAgICAgICBsaWtlICMnKywgJy0sICMnPCwgIycmJiwgZXRjLgorCisgICAgICAgIFdlbGwsIHNvIGZhciBjbG9zdXJlcyBoYXZlIGJlZW4gcHJldHR5IG11Y2ggbGltaXRlZCBkZXNwaXRlCisgICAgICAgIHRoZWlyIG9idmlvdXMgZmxleGliaWxpdHkuIFRoaXMgY2hhbmdlcyBub3cgd2l0aCB0aGUKKyAgICAgICAgaW50cm9kdWN0aW9uIG9mIGNvbmRpdGlvbmFsIGFuZCBsb29wIG9wZXJhdG9ycy4gRm9yIGV4YW1wbGUsCisgICAgICAgIHRyeToKKworICAgICAgICAgICAgICAgIGNsb3N1cmUgbWF4OworICAgICAgICAgICAgICAgIG1heCA9IGxhbWJkYSggKHsgJ3gsICd5IH0pLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHsgIyc/ICwoeyAjJz4sICd4LCAneSB9KSwgJ3gsICd5IH0pICk7CisgICAgICAgICAgICAgICAgcmV0dXJuIGZ1bmNhbGwobWF4LDcsMyk7CisKKyAgICAgICAgVGhlIGFib3ZlIGV4YW1wbGUgd2lsbCByZXR1cm4gNy4gV2hhdCBoYXBwZW5lZD8gT2YgY291cnNlICMnPworICAgICAgICBpcyB0aGUgY29uZGl0aW9uYWwgb3BlcmF0b3IgYW5kIGl0cyAnc3ludGF4JyBpcyBhcyBmb2xsb3dzOgorCisgICAgICAgICAgICAgICAgKHsgIyc/LCBjb25kMSwgdmFsMSwgY29uZDIsIHZhbDIsIC4uLiwgY29uZG4sIHZhbG4sCisgICAgICAgICAgICAgICAgICB2YWxkZWZhdWx0IH0pOworCisgICAgICAgIEl0IGV2YWx1YXRlcyBjb25kMSwgY29uZDIsIC4uLiwgY29uZG4gc3VjY2Vzc2l2ZWx5IHVudGlsIGl0CisgICAgICAgIGdldHMgYSBub256ZXJvIHJlc3VsdCBhbmQgdGhlbiByZXR1cm5zIHRoZSBjb3JyZXNwb25kaW5nCisgICAgICAgIHZhbHVlLiBJZiB0aGVyZSBpcyBubyBjb25kaXRpb24gZXZhbHVhdGluZyB0byBhIG5vbnplcm8KKyAgICAgICAgcmVzdWx0LCB2YWxkZWZhdWx0IGdldHMgcmV0dXJuZWQuIElmIHZhbGRlZmF1bHQgaXMgb21pdHRlZCwgMAorICAgICAgICBnZXRzIHJldHVybmVkLiAjJz8hIHdvcmtzIGp1c3QgbGlrZSAjJz8sIGV4Y2VwdCB0aGF0IHRoZSAhCisgICAgICAgIG9wZXJhdG9yIGlzIGFwcGxpZWQgdG8gY29uZGl0aW9ucyBiZWZvcmUgdGVzdGluZy4gVGhlcmVmb3JlLAorICAgICAgICB3aGlsZSAjJz8gaXMgc29tZXdoYXQgbGlrZSBhbiBpZiBzdGF0ZW1lbnQsICMnPyEgcmVzZW1ibGVzIGFuCisgICAgICAgIGlmX25vdCBzdGF0ZW1lbnQgaWYgdGhlcmUgd2VyZSBvbmUuCisKKyAgICAgICAgVGhlcmUgYXJlIGFsc28gbG9vcHM6CisKKyAgICAgICAgICAgICAgICAoeyAjJ2RvLCBsb29wYm9keTEsIC4uLiwgbG9vcGJvZHlOLCBsb29wY29uZCwgbG9vcHJlc3VsdCB9KQorCisgICAgICAgIHdpbGwgZXZhbHVhdGUgdGhlIGxvb3Bib2RpZXMgdW50aWwgbG9vcGNvbmQgZXZhbHVhdGVzIHRvIDAgYW5kCisgICAgICAgIHRoZW4gcmV0dXJuIHRoZSB2YWx1ZSBvZiBsb29wcmVzdWx0LiBTeW1ib2xzIG1heSBiZSB1c2VkIGFzCisgICAgICAgIHZhcmlhYmxlcywgb2YgY291cnNlLgorCisgICAgICAgICAgICAgICAgKHsgIyd3aGlsZSwgbG9vcGNvbmQsIGxvb3ByZXN1bHQsIGxvb3Bib2R5MSwgLi4uLCBsb29wYm9keU4gfSkKKworICAgICAgICB3b3JrcyBzaW1pbGFyIGJ1dCBldmFsdWF0ZXMgbG9vcGNvbmQgYmVmb3JlIHRoZSBsb29wYm9kaWVzLgorCisgICAgICAgIFRoZSBmb3JlYWNoKCkgbG9vcCBhbHNvIGV4aXN0czoKKworICAgICAgICAgICAgICAgICh7ICMnZm9yZWFjaCwgJ3ZhciwgZXhwciwgbG9vcGJvZHkxLCAuLi4sIGxvb3Bib2R5TiB9KQorICAgICAgICAgICAgICAgICh7ICMnZm9yZWFjaCwgKHsgJ3ZhcjEsIC4uLiwgJ3Zhck59KSAsIGV4cHIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAsIGxvb3Bib2R5MSwgLi4uLCBsb29wYm9keU4gfSkKKworCisgICAgICAgIE5vdyBvbiB0byBhIGNvdXBsZSBvZiB0cmlja3kgdGhpbmdzOgorCisgICAgICAgIGEpIEhvdyBkbyBJIHdyaXRlIGRvd24gYW4gYXJyYXkgd2l0aGluIGEgbGFtYmRhIGNsb3N1cmUgdG8KKyAgICAgICAgICAgYXZvaWQgaW50ZXJwcmV0YXRpb24gYXMgYSBzdWJjbG9zdXJlPworCisgICAgICAgICAgICh7ICMnbWVtYmVyLCAoeyAiYWJjIiwgInh5eiIgfSksICd4IH0pIHdpbGwgb2J2aW91c2x5CisgICAgICAgICAgIHJlc3VsdCBpbiBhbiBlcnJvciBhcyBzb29uIGFzIGxhbWJkYSgpIHRyaWVzIHRvIGludGVycHJldAorICAgICAgICAgICAiYWJjIiBhcyBhIGNsb3N1cmUgb3BlcmF0b3IuIFRoZSBzb2x1dGlvbiBpcyB0byBxdW90ZSB0aGUKKyAgICAgICAgICAgYXJyYXksIGFzIGluOiAoeyAjJ21lbWJlciwgJyh7ICJhYmMiLCAieHl6IiB9KSwgJ3ggfSkuCisgICAgICAgICAgIEFwcGx5aW5nIGxhbWJkYSgpIHRvIHRoaXMgd2lsbCBub3QgcmVzdWx0IGluIGFuIGVycm9yLgorICAgICAgICAgICBJbnN0ZWFkLCB0aGUgcXVvdGUgd2lsbCBiZSBzdHJpcHBlZCBmcm9tIHRoZSBhcnJheSBhbmQgdGhlCisgICAgICAgICAgIHJlc3VsdCByZWdhcmRlZCBhcyBhIG5vcm1hbCBhcnJheSBsaXRlcmFsLiBUaGUgc2FtZSBjYW4gYmUKKyAgICAgICAgICAgYWNoaWV2ZWQgYnkgdXNpbmcgdGhlIGVmdW4gcXVvdGUoKSwgZS5nLjoKKworICAgICAgICAgICAoeyAjJ21lbWJlciwgcXVvdGUoICh7ICJhYmMiLCAieHl6IiB9KSwgJ3ggKSB9KQorCisgICAgICAgIGIpIElzbid0IGl0IGEgc2VjdXJpdHkgcmlzayB0byBwYXNzLCBzYXksIGEgY2xvc3VyZSB0byB0aGUKKyAgICAgICAgICAgbWFzdGVyIG9iamVjdCB3aGljaCB0aGVuIGV2YWx1YXRlcyBpdCB3aXRoIGFsbCB0aGUKKyAgICAgICAgICAgcGVybWlzc2lvbnMgaXQgZ290PworCisgICAgICAgICAgIEx1Y2tpbHksIG5vLiBFYWNoIGNsb3N1cmUgZ2V0cyB1cG9uIGNvbXBpbGF0aW9uIGJvdW5kIHRvCisgICAgICAgICAgIHRoZSBvYmplY3QgZGVmaW5pbmcgaXQuIFRoYXQgbWVhbnMgdGhhdCBleGVjdXRpbmcgaXQgZmlyc3QKKyAgICAgICAgICAgc2V0cyB0aGlzX29iamVjdCgpIHRvIHRoZSBvYmplY3QgdGhhdCBkZWZpbmVkIGl0IGFuZCB0aGVuCisgICAgICAgICAgIGV2YWx1YXRlcyB0aGUgY2xvc3VyZS4gVGhpcyBhbHNvIGFsbG93cyB1cyB0byBjYWxsIGxmdW5zCisgICAgICAgICAgIHdoaWNoIG1pZ2h0IG90aGVyd2lzZSBiZSB1bmRlZmluZWQgaW4gdGhlIGNhbGxpbmcgb2JqZWN0LgorCisgICAgICAgICAgIFRoZXJlIGlzIGhvd2V2ZXIsIGEgdmFyaWFudCBvZiBsYW1iZGEoKSwgY2FsbGVkCisgICAgICAgICAgIHVuYm91bmRfbGFtYmRhKCksIHdoaWNoIHdvcmtzIHNpbWlsYXIgYnV0IGRvZXMgbm90IGFsbG93CisgICAgICAgICAgIHRoZSB1c2Ugb2YgbGZ1bnMgYW5kIGRvZXMgbm90IGJpbmQgdGhlIGNsb3N1cmUgdG8gdGhlCisgICAgICAgICAgIGRlZmluaW5nIG9iamVjdC4gVGhlIGRyYXdiYWNrIGlzIHRoYXQgdHJ5aW5nIHRvIGV2YWx1YXRlIGl0CisgICAgICAgICAgIGJ5IGFwcGx5KCkgb3IgZnVuY2FsbCgpIHdpbGwgcmVzdWx0IGluIGFuIGVycm9yLiBUaGUKKyAgICAgICAgICAgY2xvc3VyZSBmaXJzdCBuZWVkcyB0byBiZSBib3VuZCBieSBjYWxsaW5nIGJpbmRfbGFtYmRhKCkuCisgICAgICAgICAgIGJpbmRfbGFtYmRhKCkgbm9ybWFsbHkgdGFrZXMgb25lIGFyZ3VtZW50IGFuZCB0cmFuc2Zvcm1zIGFuCisgICAgICAgICAgIHVuYm91bmQgY2xvc3VyZSBpbnRvIGEgY2xvc3VyZSBib3VuZCB0byB0aGUgb2JqZWN0CisgICAgICAgICAgIGV4ZWN1dGluZyB0aGUgYmluZF9sYW1iZGEoKS4KKworICAgICAgICAgICBQcml2aWxlZ2VkIG9iamVjdHMsIGxpa2UgdGhlIG1hc3RlciBhbmQgdGhlIHNpbXVsX2VmdW4KKyAgICAgICAgICAgb2JqZWN0IChvciB0aG9zZSBhdXRob3JpemVkIGJ5IHRoZSBwcml2aWxlZ2VfdmlvbGF0aW9uKCkKKyAgICAgICAgICAgZnVuY3Rpb24gaW4gdGhlIG1hc3RlcikgbWF5IGFsc28gZ2l2ZSBhbiBvYmplY3QgYXMgdGhlCisgICAgICAgICAgIHNlY29uZCBhcmd1bWVudCB0byBiaW5kX2xhbWJkYSgpLiBUaGlzIHdpbGwgYmluZCB0aGUKKyAgICAgICAgICAgY2xvc3VyZSB0byB0aGF0IG9iamVjdC4gQSBzYW1wbGUgYXBwbGljYXRpb24gaXM6CisKKyAgICAgICAgICAgZHVtcF9vYmplY3Qob2IpCisgICAgICAgICAgIC8vIHdpbGwgZHVtcCB0aGUgdmFyaWFibGVzIG9mIG9iIHRvIC9kdW1wLm8KKyAgICAgICAgICAgeworICAgICAgICAgICAgIGNsb3N1cmUgc2F2ZTsKKyAgICAgICAgICAgICBzYXZlID0gdW5ib3VuZF9sYW1iZGEoICh7IH0pLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHsgIydzYXZlX29iamVjdCwgIi9vcGVuL2R1bXAiIH0pICk7CisgICAgICAgICAgICAgYmluZF9sYW1iZGEoc2F2ZSxvYik7CisgICAgICAgICAgICAgZnVuY2FsbChzYXZlKTsKKyAgICAgICAgICAgfQorCisgICAgICAgICAgIGJpbmRfbGFtYmRhKCkgY2FuIGFsc28gYmUgdXNlZCB3aXRoIGVmdW4gY2xvc3VyZXMuCisKKyAgICAgICAgYykgSXQgbWlnaHQgYmUgYW4gaW50ZXJlc3RpbmcgYXBwbGljYXRpb24gdG8gY3JlYXRlIGNsb3N1cmVzCisgICAgICAgICAgIGR5bmFtaWNhbGx5IGFzIGFuIGFsdGVybmF0aXZlIHRvIHdyaXRpbmcgTFBDIGNvZGUgdG8gYSBmaWxlCisgICAgICAgICAgIGFuZCB0aGVuIGxvYWRpbmcgaXQuICBIb3dldmVyLCBob3cgZG8gSSBhdm9pZCBkb2luZyBleGFjdGx5CisgICAgICAgICAgIHRoYXQgaWYgSSBuZWVkIHN5bWJvbHMgbGlrZSAneCBvciAneT8KKworICAgICAgICAgICBUbyBkbyB0aGF0IG9uZSB1c2VzIHRoZSBxdW90ZSgpIGVmdW4uIEl0IHRha2VzIGEgc3RyaW5nIGFzCisgICAgICAgICAgIGl0cyBhcmd1bWVudCBhbmQgdHJhbnNmb3JtcyBpdCBpbnRvIGEgc3ltYm9sLiBGb3IgZXhhbXBsZSwKKyAgICAgICAgICAgd3JpdGluZyBxdW90ZSgieCIpIGlzIGV4YWN0bHkgdGhlIHNhbWUgYXMgd3JpdGluZyAneC4KKworICAgICAgICBkKSBIb3cgZG8gSSB0ZXN0IGlmIGEgdmFyaWFibGUgaG9sZHMgYSBjbG9zdXJlPworCisgICAgICAgICAgIFVzZSB0aGUgY2xvc3VyZXAoKSBlZnVuIHdoaWNoIHdvcmtzIGxpa2UgYWxsIHRoZSBvdGhlciB0eXBlCisgICAgICAgICAgIHRlc3RpbmcgZWZ1bnMuIEZvciBzeW1ib2xzIHRoZXJlIGlzIGFsc28gc3ltYm9scCgpCisgICAgICAgICAgIGF2YWlsYWJsZS4KKworICAgICAgICBlKSBUaGF0IG1lYW5zLCBJIGNhbiBkbzoKKyAgICAgICAgICAgaWYgKGNsb3N1cmVwKGYpKSByZXR1cm4gZnVuY2FsbChmKTsgZWxzZSByZXR1cm4gZjsgPworCisgICAgICAgICAgIFllcywgYnV0IGluIHRoZSBjYXNlIG9mIGZ1bmNhbGwoKSBpdCBpcyB1bm5lY2Vzc2FyeS4gSWYKKyAgICAgICAgICAgZnVuY2FsbCgpIGdldHMgb25seSBvbmUgYXJndW1lbnQgYW5kIGl0IGlzIG5vdCBhIGNsb3N1cmUgaXQKKyAgICAgICAgICAgd2lsbCBiZSByZXR1cm5lZCB1bmNoYW5nZWQuIFNvIHJldHVybiBmdW5jYWxsKGYpOyB3b3VsZAorICAgICAgICAgICBzdWZmaWNlLgorCisgICAgICAgIGYpIEkgd2FudCB0byB1c2UgYSBmdW5jdGlvbiBpbiBzb21lIG9iamVjdCBhcyBhIGNsb3N1cmUuIEhvdyBkbyBJIGRvCisgICAgICAgICAgIHRoYXQ/CisKKyAgICAgICAgICAgVGhlcmUgYXJlIHNldmVyYWwgd2F5cy4gSWYgdGhlIGZ1bmN0aW9uIHJlc2lkZXMgaW4KKyAgICAgICAgICAgdGhpc19vYmplY3QoKSwganVzdCB1c2UgIydmdW5jX25hbWUuIElmIG5vdCwgb3IgaWYgeW91IHdhbnQKKyAgICAgICAgICAgdG8gY3JlYXRlIHRoZSBmdW5jdGlvbiBkbnluYW1pY2FsbHksIHVzZSB0aGUgZWZ1bgorICAgICAgICAgICBzeW1ib2xfZnVuY3Rpb24oKS4gSXQgdGFrZXMgYSBzdHJpbmcgYXMgaXQgZmlyc3QgYW5kIGFuCisgICAgICAgICAgIG9iamVjdCBhcyBpdHMgc2Vjb25kIGFyZ3VtZW50IGFuZCByZXR1cm5zIGEgY2xvc3VyZSB3aGljaAorICAgICAgICAgICB1cG9uIGV2YWx1YXRpb24gY2FsbHMgdGhlIGdpdmVuIGZ1bmN0aW9uIGluIHRoZSBnaXZlbgorICAgICAgICAgICBvYmplY3QgKGFuZCBmYXN0ZXIgdGhhbiBjYWxsX290aGVyKCksIHRvbywgaWYgZG9uZSBmcm9tCisgICAgICAgICAgIGluc2lkZSBhIGxvb3AsIHNpbmNlIGZ1bmN0aW9uIHNlYXJjaCB3aWxsIGJlIGRvbmUgb25seSB3aGVuCisgICAgICAgICAgIGNhbGxpbmcgc3ltYm9sX2Z1bmN0aW9uKCkuCisKKyAgICAgICAgZykgQ2FuIEkgY3JlYXRlIGVmdW4gY2xvc3VyZXMgZHluYW1pY2FsbHksIHRvbz8KKworICAgICAgICAgICBZZXMsIGp1c3QgdXNlIHN5bWJvbF9mdW5jdGlvbigpIHdpdGggYSBzaW5nbGUgYXJndW1lbnQuCisgICAgICAgICAgIE1vc3QgdXNlZnVsIGZvciBtYXJrZXIgb2JqZWN0cyBhbmQgdGhlIGxpa2UuIEJ1dAorICAgICAgICAgICB0aGVvcmV0aWNhbGx5IGEgc2VjdXJpdHkgcmlzayBpZiBub3QgdXNlZCBwcm9wZXJseSBhbmQgZnJvbQorICAgICAgICAgICBpbnNpZGUgYSBzZWN1cml0eSByZWxldmFudCBvYmplY3QuICBUYWtlIGNhcmUsIGhvd2V2ZXIsCisgICAgICAgICAgIHRoYXQsIGlmIHRoZXJlIGlzIGEgc2ltdWxfZWZ1biB3aXRoIHRoZSBzYW1lIG5hbWUsIGl0IHdpbGwKKyAgICAgICAgICAgYmUgcHJlZmVycmVkIGFzIGluIHRoZSBjYXNlIG9mICMnZnVuY3Rpb24uIFVzZSB0aGUgZWZ1bjo6CisgICAgICAgICAgIG1vZGlmaWVyIHRvIGdldCB0aGUgZWZ1biBpZiB5b3UgbmVlZCBpdC4KKworICAgICAgICBoKSBBcmUgdGhlcmUgb3RoZXIgdXNlcyBvZiBjbG9zdXJlcyBleGNlcHQgdXNpbmcgdGhlbSB0byBzdG9yZQorICAgICAgICAgICBjb2RlPworCisgICAgICAgICAgIExvdHMuIEZvciBleGFtcGxlLCB5b3UgY2FuIHVzZSB0aGVtIHdpdGhpbiBhbG1vc3QgYWxsIG9mCisgICAgICAgICAgIHRoZSBlZnVucyB3aGVyZSB5b3UgZ2l2ZSBhIGZ1bmN0aW9uIGFzIGFuIGFyZ3VtZW50LCBsaWtlCisgICAgICAgICAgIGZpbHRlcigpLCBzb3J0X2FycmF5KCkgb3Igd2Fsa19tYXBwaW5nKCkuCisgICAgICAgICAgIHNvcnRfYXJyYXkoYXJyYXksIyc+KSBkb2VzIGluZGVlZCB3aGF0IGlzIGV4cGVjdGVkLiBBbm90aGVyCisgICAgICAgICAgIGFwcGxpY2F0aW9uIGlzIHNldF9wcm9tcHQoKSwgd2hlcmUgYSBjbG9zdXJlIGNhbiBvdXRwdXQKKyAgICAgICAgICAgeW91ciBvd24gcHJvbXB0IGJhc2VkIG9uIHRoZSBjdXJyZW50IHRpbWUgYW5kIG90aGVyIHN0dWZmCisgICAgICAgICAgIHdoaWNoIGNoYW5nZXMgYWxsIHRoZSB0aW1lLgorCisgICAgICAgIEZpbmFsbHksIHRoZXJlIGFyZSBzb21lIHNwZWNpYWwgZWZ1bi9vcGVyYXRvciBjbG9zdXJlczoKKworICAgICAgICAjJ1sgOiBpbmRleGVzIGFuIGFycmF5LgorICAgICAgICAjJ1s8IDogZG9lcyB0aGUgc2FtZSwgYnV0IHN0YXJ0aW5nIGF0IHRoZSBlbmQuCisgICAgICAgICMnWy4uXSA6IGdldHMgYW4gYXJyYXkgYW5kIHR3byBudW1iZXJzCisgICAgICAgICAgICAgICAgYW5kIHJldHVybnMgYSBzdWItYXJyYXkuCisgICAgICAgICMnWy4uPF0gOiBzYW1lIGFzIGFib3ZlIGJ1dCB0aGUgc2Vjb25kIGluZGV4IGlzCisgICAgICAgICAgICAgICAgaW50ZXJwcmV0ZWQgYXMgY291bnRlZCBmcm9tIHRoZSBsZWZ0IGVuZC4KKyAgICAgICAgIydbPC4uXSAgYW5kCisgICAgICAgICMnWzwuLjxdIDogc2hvdWxkIGJlIGNsZWFyIG5vdy4KKyAgICAgICAgIydbLi4gOiB0YWtlcyBvbmx5IG9uZSBpbmRleCBhbmQgcmV0dXJucyB0aGUgc3ViLQorICAgICAgICAgICAgICAgIGFycmF5IGZyb20gdGhpcyBpbmRleCB0byB0aGUgZW5kLgorICAgICAgICAjJ1s8Li4gOiBzYW1lIGFzIGFib3ZlIGJ1dCB0aGUgaW5kZXggaXMgaW50ZXJwcmV0ZWQKKyAgICAgICAgICAgICAgICBhcyBjb3VudGVkIGZyb20gdGhlIGxlZnQgZW5kLgorICAgICAgICAjJyh7IDogcHV0cyBhbGwgYXJndW1lbnRzIGludG8gYW4gYXJyYXkuCisgICAgICAgICMnKFsgOiBnZXRzIGFuIHVucXVvdGVkICghKSBhcnJheSB3aGljaCBtdXN0IGluY2x1ZGUKKyAgICAgICAgICAgICAgICBhdCBsZWFzdCBvbmUgZWxlbWVudCBhcyBhcmd1bWVudCBhbmQgcmV0dXJucyBhIG1hcHBpbmcgb2YKKyAgICAgICAgICAgICAgICB0aGUgd2lkdGggb2YgdGhlIGdpdmVuIGFycmF5J3Mgc2l6ZSB3aXRoIG9uZSBlbnRyeSB0aGF0CisgICAgICAgICAgICAgICAgY29udGFpbnMgdGhlIGZpcnN0IGVsZW1lbnQgYXMga2V5IGFuZCB0aGUgb3RoZXIgZWxlbWVudHMKKyAgICAgICAgICAgICAgICBhcyB2YWx1ZXMgdG8gdGhlIGtleS4KKworICAgICAgICAjJ25lZ2F0ZSBpcyBmb3IgdW5hcnkgbWludXMuCisgICAgICAgICMnLCBtYXkgYmUgZm9sbG93ZWQgYnkgYW55IG51bWJlciBvZiBjbG9zdXJlcywKKyAgICAgICAgZS5nLjogKHsgKCMnLCksCisgICAgICAgICAgICAgICAgICh7Iyc9ICdoLCAnYSwgfSksICh7Iyc9LCAnYSwgJ2IgfSksICh7Iyc9LCAnYiwgJ2ggfSkgfSkKKyAgICAgICAgd2lsbCBzd2FwICdhIGFuZCAnYiB3aGVuIGNvbXBpbGVkIGFuZCBleGVjdXRlZC4KKworCisgICAgICAgIFByb2NlZHVyYWwgZWxlbWVudHM6CisgICAgICAgID09PT09PT09PT09PT09PT09PT09CisKKyAgICAgICAgZGVmaW5pdGlvbiBvZiB0ZXJtczoKKyAgICAgICAgICA8YmxvY2s+ICA6IHplcm8gb3IgbW9yZSB2YWx1ZXMgdG8gYmUgZXZhbHVhdGVkLgorICAgICAgICAgIDx0ZXN0PiAgIDogb25lIHZhbHVlIHRvIGJlIGV2YWx1YXRlZCBhcyBicmFuY2ggb3IgbG9vcCBjb25kaXRpb24uCisgICAgICAgICAgPHJlc3VsdD4gOiBvbmUgdmFsdWUgdG8gYmUgZXZhbHVhdGVkIGF0IHRoZSBlbmQgb2YgdGhlCisgICAgICAgICAgICAgICAgICAgICBleGVjdXRpb24gb2YgdGhlIGZvcm07IHRoZSB2YWx1ZSBpcyByZXR1cm5lZC4KKyAgICAgICAgICA8bHZhbHVlPiA6IGxvY2FsIHZhcmlhYmxlL3BhcmFtZXRlciwgZ2xvYmFsIHZhcmlhYmxlLCBvciBhbgorICAgICAgICAgICAgICAgICAgICAgaW5kZXhlZCBsdmFsdWUuCisgICAgICAgIHVzZWRlZCBFQk5GIG9wZXJhdG9yczoKKyAgICAgICAgeyB9ICAgICBpdGVyYXRpb24KKyAgICAgICAgWyBdICAgICBvcHRpb24KKworICAgICAgICBmb3JtczoKKyAgICAgICAgICAoeyMnLCA8Ym9keT4gPHJlc3VsdD59KQorICAgICAgICAgICh7Iyc/IHsgPHRlc3Q+IDxyZXN1bHQ+IH0gWyA8cmVzdWx0PiBdIH0pCisgICAgICAgICAgKHsjJz8hIHsgPHRlc3Q+IDxyZXN1bHQ+IH0gWyA8cmVzdWx0PiBdIH0pCisgICAgICAgICAgKHsjJyYmIHsgdGVzdCB9IH0pCisgICAgICAgICAgKHsjJ3x8IHsgdGVzdCB9IH0pCisgICAgICAgICAgKHsjJ3doaWxlIDx0ZXN0PiA8cmVzdWx0PiA8Ym9keT59KSAgICBsb29wIHdoaWxlIHRlc3QKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGV2YWx1YXRlcyBub24temVyby4KKyAgICAgICAgICAoeyMnZG8gPGJvZHk+IDx0ZXN0PiA8cmVzdWx0Pn0pICAgICAgIGxvb3AgdGlsbCB0ZXN0CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBldmFsdWF0ZXMgemVyby4KKyAgICAgICAgICAoeyMnPSB7IDxsdmFsdWU+IDx2YWx1ZT4gfSB9KSAgICAgICAgIGFzc2lnbm1lbnQKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG90aGVyIGFzc2lnbm1lbnQKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9wZXJhdG9ycyB3b3JrLCB0b28uCisKKyAgICAgICAgbGlzcCBzaW1pbGFyczoKKyAgICAgICAgICAjJywgICAgICAgICAgIHByb2duCisgICAgICAgICAgIyc/ICAgICAgICAgICBjb25kCisgICAgICAgICAgIycmJiAgICAgICAgICBhbmQKKyAgICAgICAgICAjJ3x8ICAgICAgICAgIG9yCisgICAgICAgICAgIyd3aGlsZSAgICAgICBkbyAgICAgIC8qIGJ1dCBsaXNwIGhhcyBtb3JlIHN5bnRhY3RpYyBjYW5keSBoZXJlICovCisgICAgICAgICAgIyc9ICAgICAgICAgICBzZXRxCisKKyAgICAgICAgQSBwYXJhbWV0ZXIgLyBsb2NhbCB2YXJpYWJsZSAnZm9vJyBpcyByZWZlcmVuY2VkIGFzICdmb28gLCBhCisgICAgICAgIGdsb2JhbCB2YXJpYWJsZSBhcyAoeyMnZm9vfSkgLiBJbiBsdmFsdWUgcG9zaXRpb25zCisgICAgICAgIChhc3NpZ25tZW50KSwgeW91IG5lZWQgbm90IGVuY2xvc2UgZ2xvYmFsIHZhcmlhYmxlIGNsb3N1cmVzIGluCisgICAgICAgIGFycmF5cy4KKworICAgICAgICBDYWxsIGJ5IHJlZmVyZW5jZSBwYXJhbWV0ZXJzIGFyZSBnaXZlbiB3aXRoICh7IycmLCA8bHZhbHVlPn0pCisKKyAgICAgICAgU29tZSBzcGVjaWFsIGVmdW5zOgorICAgICAgICAjJ1sgICAgICAgICAgICAgaW5kZXhpbmcKKyAgICAgICAgIydbPCAgICAgICAgICAgIGluZGV4aW5nIGZyb20gdGhlIGVuZAorICAgICAgICAjJ25lZ2F0ZSAgICAgICAgdW5hcnkgLQorCisgICAgICAgIFVuYm91bmQgbGFtYmRhIGNsb3N1cmVzCisgICAgICAgID09PT09PT09PT09PT09PT09PT09PT09CisKKyAgICAgICAgVGhlc2UgY2xvc3VyZXMgYXJlIG5vdCBib3VuZCB0byBhbnkgb2JqZWN0LiBUaGV5IGFyZSBjcmVhdGVkCisgICAgICAgIHdpdGggdGhlIGVmdW4gdW5ib3VuZF9sYW1iZGEoKSAuIFRoZXkgY2Fubm90IGNvbnRhaW4KKyAgICAgICAgcmVmZXJlbmNlcyB0byBnbG9iYWwgdmFyaWFibGVzLCBhbmQgYWxsIGxmdW4gY2xvc3VyZXMgYXJlCisgICAgICAgIGluc2VydGVkIGFzIGlzLCBzaW5jZSB0aGVyZSBpcyBubyBuYXRpdmUgb2JqZWN0IGZvciB0aGlzCisgICAgICAgIGNsb3N1cmUuICBZb3UgY2FuIGJpbmQgYW5kIHJlYmluZCB1bmJvdW5kIGxhbWJkYSBjbG9zdXJlcyB0bworICAgICAgICBhbiBvYmplY3Qgd2l0aCBlZnVuIGJpbmRfbGFtYmRhKCkgWW91IG5lZWQgdG8gYmluZCBpdCBiZWZvcmUKKyAgICAgICAgaXQgY2FuIGJlIGNhbGxlZC4gT3JkaW5hcnkgb2JqZWN0cyBjYW4gb2JseSBiaW5kIHRvCisgICAgICAgIHRoZW1zZWx2ZXMsIGJpbmRpbmcgdG8gb3RoZXIgb2JqZWN0cyBjYXVzZXMgYSBwcml2aWxlZ2UKKyAgICAgICAgdmlvbGF0aW9uKCkuICBUaGUgcG9pbnQgaXMgdGhhdCBwcmV2aW91c19vYmplY3QgZm9yIGNhbGxzIGRvbmUKKyAgICAgICAgZnJvbSBpbnNpZGUgdGhlIGNsb3N1cmUgd2lsbCByZWZsZWN0IHRoZSBvYmplY3QgZG9pbmcKKyAgICAgICAgYmluZF9sYW1iZGEoKSwgYW5kIGFsbCBvYmplY3QgLyB1aWQgYmFzZWQgc2VjdXJpdHkgd2lsbCBhbHNvCisgICAgICAgIHJlZmVyIHRvIHRoaXMgb2JqZWN0LgorCisKK0FVVEhPUgorICAgICAgICBNYWNCZXRoLCBBbXlsYWFyLCBIeXAKKworU0VFIEFMU08KKyAgICAgICAgY2xvc3VyZXMtYWJzdHJhY3QoTFBDKSwgY2xvc3VyZXMtZXhhbXBsZShMUEMpLCBjbG9zdXJlX2d1aWRlKExQQykKKyAgICAgICAgaW5saW5lLWNsb3N1cmVzKExQQykKZGlmZiAtLWdpdCBhL2RvYy9MUEMvY2xvc3VyZXMtYWJzdHJhY3QgYi9kb2MvTFBDL2Nsb3N1cmVzLWFic3RyYWN0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjZiMWQ5MzIKLS0tIC9kZXYvbnVsbAorKysgYi9kb2MvTFBDL2Nsb3N1cmVzLWFic3RyYWN0CkBAIC0wLDAgKzEsODIgQEAKK1Byb2NlZHVyYWwgZWxlbWVudHM6Cis9PT09PT09PT09PT09PT09PT09PQorCitkZWZpbml0aW9uIG9mIHRlcm1zOgorICA8YmxvY2s+ICAgICA6IHplcm8gb3IgbW9yZSB2YWx1ZXMgdG8gYmUgZXZhbHVhdGVkLgorICA8dGVzdD4gICAgICA6IG9uZSB2YWx1ZSB0byBiZSBldmFsdWF0ZWQgYXMgYnJhbmNoIG9yIGxvb3AgY29uZGl0aW9uLgorICA8cmVzdWx0PiAgICA6IG9uZSB2YWx1ZSB0byBiZSBldmFsdWF0ZWQgYXQgdGhlIGVuZCBvZiB0aGUgZXhlY3V0aW9uIG9mCisgICAgICAgICAgICAgICAgdGhlIGZvcm07IHRoZSB2YWx1ZSBpcyByZXR1cm5lZC4KKyAgPGx2YWx1ZT4gICAgOiBsb2NhbCB2YXJpYWJsZS9wYXJhbWV0ZXIsIGdsb2JhbCB2YXJpYWJsZSwgb3IgYW4gaW5kZXhlZAorICAgICAgICAgICAgICAgIGx2YWx1ZS4KKyAgPGV4cHJlc3Npb24+OiBvbmUgdmFsdWUgdG8gYmUgZXZhbHVhdGVkLgorICA8aW50ZWdlcj4gICA6IGFuIGludGVnZXIgY29uc3RhbnQKKyAgPHN0cmluZz4gICAgOiBhIHN0cmluZyBjb25zdGFudCwgb3IgMC4KK3VzZWQgRUJORiBvcGVyYXRvcnM6Cit7IH0gICAgICAgIGl0ZXJhdGlvbgorWyBdICAgICAgICBvcHRpb24KK3wgICAgICAgIGFsdGVybmF0aXZlCisKK2Zvcm1zOgorICAoeyMnLCA8Ym9keT4gPHJlc3VsdD59KQorICAoeyMnPyB7IDx0ZXN0PiA8cmVzdWx0PiB9IFsgPHJlc3VsdD4gXSB9KQorICAoeyMnPyEgeyA8dGVzdD4gPHJlc3VsdD4gfSBbIDxyZXN1bHQ+IF0gfSkKKyAgKHsjJyYmIHsgdGVzdCB9IH0pCisgICh7Iyd8fCB7IHRlc3QgfSB9KQorICAoeyMnd2hpbGUgPHRlc3Q+IDxyZXN1bHQ+IDxib2R5Pi4uLn0pICAgICAgICBsb29wIHdoaWxlIHRlc3QgZXZhbHVhdGVzIG5vbi16ZXJvLgorICAoeyMnZG8gPGJvZHk+IDx0ZXN0PiA8cmVzdWx0Pn0pICAgICAgICBsb29wIHRpbGwgdGVzdCBldmFsdWF0ZXMgemVyby4KKyAgKHsjJ2ZvcmVhY2ggPHZhcj4gPGV4cHI+IDxib2R5Pi4uLn0pICAgICAgICBsb29wIG92ZXIgYWxsIHZhbHVlcyBvZiA8ZXhwcj4uCisgICh7Iydmb3JlYWNoICh7IDx2YXI+Li4uPHZhcj4gfSkgPGV4cHI+IDxib2R5Pi4uLn0pCisgICh7Iyc9IHsgPGx2YWx1ZT4gPHZhbHVlPiB9IH0pICAgICAgICAgICAgICAgIGFzc2lnbm1lbnQKKyAgICAgICAgICAgICAgICAJCQlvdGhlciBhc3NpZ25tZW50IG9wZXJhdG9ycyB3b3JrIHRvby4KKyAgY2FzZV9sYWJlbDogPGludGVnZXI+IHwgPHN0cmluZz4gfCAjJ2RlZmF1bHQKKyAgZ2VuZXJhbGl6ZWRfY2FzZV9sYWJlbDogY2FzZV9sYWJlbCB8IDxpbnRlZ2VyPiAjJy4uIDxpbnRlZ2VyPgorICBjYXNlX2xhYmVsX2xpc3Q6IGNhc2VfbGFiZWwgfCAoeyB7IGdlbmVyYWxpemVkX2Nhc2VfbGFiZWwgfSB9KQorICBjYXNlX2RlbGltaXRlcjogIycsIHwgIydicmVhaworICAoeyMnc3dpdGNoIDxleHByZXNzaW9uPiB7IGNhc2VfbGFiZWxfbGlzdCA8cmVzdWx0PiBjYXNlX2RlbGltaXRlciB9IH0pCisgICAgICAgIEV2YWx1YXRlIGV4cHJlc3Npb24sIHRoZW4gZXZhbHVhdGUgdGhlIHJlc3VsdCBmb3JtIGxhYmVsZWQgd2l0aAorICAgICAgICB0aGUgdmFsdWUgZXF1YWwgdG8gdGhlIHZhbHVlIGV2YWx1YXRlZCBmcm9tIGV4cHJlc3Npb24uCisgICAgICAgIElmIG5vIG1hdGNoaW5nIGxhYmVsIGV4aXN0cywgdGhlIHZhbHVlIG9mICMnc3dpdGNoIGlzIDAuCisgICh7IydjYXRjaCwgPGJvZHk+IFssICdub2xvZyBdIFssICdwdWJsaXNoIF0sIFssICdyZXNlcnZlLCA8ZXhwcj4gIH0pCisgICAgICAgIEV2YWx1YXRlcyB0aGUgPGJvZHk+IGFuZCBjYXRjaGVzIGFueSBydW50aW1lIGVycm9yLiBJZiB0aGUgc3ltYm9sCisgICAgICAgICdub2xvZyBpcyBhbHNvIGdpdmVuLCBhIGNhdWdodCBlcnJvciBpcyBub3QgbG9nZ2VkLiBJZiB0aGUKKyAgICAgICAgc3ltYm9sICdwdWJsaXNoIGlzIGFsc28gZ2l2ZW4sIG1hc3Rlcjo6cnVudGltZV9lcnJvcigpIGlzCisgICAgICAgIGNhbGxlZCBmb3IgdGhlIGNhdWdodCBlcnJvci4gSWYgdGhlIHN5bWJvbCAncmVzZXJ2ZSB3aXRoIGEKKyAgICAgICAgZm9sbG93aW5nIGV4cHJlc3Npb24gaXMgZ2l2ZW4sIHRoaXMgdmFsdWUgaXMgdXNlZCBhcyB0aGUKKyAgICAgICAgY29tcHV0aW5nIHJlc2VydmUuCisKKworbGlzcCBzaW1pbGFyczoKKyAgIycsICAgICAgICAgICAgICAgIHByb2duCisgICMnPyAgICAgICAgICAgICAgICBjb25kCisgICMnJiYgICAgICAgICAgICAgICAgYW5kCisgICMnfHwgICAgICAgICAgICAgICAgb3IKKyAgIyd3aGlsZSAgICAgICAgZG8gICAgICAgICAvKiBidXQgbGlzcCBoYXMgbW9yZSBzeW50YWN0aWMgY2FuZHkgaGVyZSAqLworICAjJz0gICAgICAgICAgICAgICAgc2V0cQorCitBIHBhcmFtZXRlciAvIGxvY2FsIHZhcmlhYmxlICdmb28nIGlzIHJlZmVyZW5jZWQgYXMgJ2ZvbyAsIGEgZ2xvYmFsCit2YXJpYWJsZSBhcyAoeyMnZm9vfSkgLiBJbiBsdmFsdWUgcG9zaXRpb25zIChhc3NpZ25tZW50KSwgeW91IG5lZWQgbm90CitlbmNsb3NlIGdsb2JhbCB2YXJpYWJsZSBjbG9zdXJlcyBpbiBhcnJheXMuCisKK0NhbGwgYnkgcmVmZXJlbmNlIHBhcmFtZXRlcnMgYXJlIGdpdmVuIHdpdGggKHsjJyYsIDxsdmFsdWU+fSkKKworU29tZSBzcGVjaWFsIGVmdW5zOgorIydbICAgICAgICAgICAgICAgIGluZGV4aW5nCisjJ1s8ICAgICAgICAgICAgICAgIGluZGV4aW5nIGZyb20gdGhlIGVuZAorIyduZWdhdGUgICAgICAgIHVuYXJ5IC0KKworVW5ib3VuZCBsYW1iZGEgY2xvc3VyZXMKKz09PT09PT09PT09PT09PT09PT09PT09CisKK1RoZXNlIGNsb3N1cmVzIGFyZSBub3QgYm91bmQgdG8gYW55IG9iamVjdC4gVGhleSBhcmUgY3JlYXRlZCB3aXRoIHRoZSBlZnVuCit1bmJvdW5kX2xhbWJkYSgpIC4gVGhleSBjYW5ub3QgY29udGFpbiByZWZlcmVuY2VzIHRvIGdsb2JhbCB2YXJpYWJsZXMsIGFuZAorYWxsIGxmdW4gY2xvc3VyZXMgYXJlIGluc2VydGVkIGFzIGlzLCBzaW5jZSB0aGVyZSBpcyBubyBuYXRpdmUgb2JqZWN0IGZvcgordGhpcyBjbG9zdXJlLgorWW91IGNhbiBiaW5kIGFuZCByZWJpbmQgdW5ib3VuZCBsYW1iZGEgY2xvc3VyZXMgdG8gYW4gb2JqZWN0IHdpdGggZWZ1bgorYmluZF9sYW1iZGEoKSBZb3UgbmVlZCB0byBiaW5kIGl0IGJlZm9yZSBpdCBjYW4gYmUgY2FsbGVkLiBPcmRpbmFyeSBvYmplY3RzCitjYW4gb2JseSBiaW5kIHRvIHRoZW1zZWx2ZXMsIGJpbmRpbmcgdG8gb3RoZXIgb2JqZWN0cyBjYXVzZXMgYSBwcml2aWxlZ2UKK3Zpb2xhdGlvbigpLgorVGhlIHBvaW50IGlzIHRoYXQgcHJldmlvdXNfb2JqZWN0IGZvciBjYWxscyBkb25lIGZyb20gaW5zaWRlIHRoZSBjbG9zdXJlCit3aWxsIHJlZmxlY3QgdGhlIG9iamVjdCBkb2luZyBiaW5kX2xhbWJkYSgpLCBhbmQgYWxsIG9iamVjdCAvIHVpZCBiYXNlZAorc2VjdXJpdHkgd2lsbCBhbHNvIHJlZmVyIHRvIHRoaXMgb2JqZWN0LgorCisKZGlmZiAtLWdpdCBhL2RvYy9MUEMvY2xvc3VyZXMtZXhhbXBsZSBiL2RvYy9MUEMvY2xvc3VyZXMtZXhhbXBsZQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5mNTBmZDM1Ci0tLSAvZGV2L251bGwKKysrIGIvZG9jL0xQQy9jbG9zdXJlcy1leGFtcGxlCkBAIC0wLDAgKzEsMjAyIEBACitDT05DRVBUCisgICAgICAgIGNsb3N1cmVzIGV4YW1wbGUKKworREVTQ1JJUFRJT04KKyAgICAgICAgVGhpcyBkb2N1bWVudCBjb250YWlucyBzbWFsbCBleGFtcGxlcyBvZiB0aGUgdXNhZ2Ugb2YKKyAgICAgICAgKGxhbWJkYS0pY2xvc3VyZXMuIEZvciB0ZWNobmljYWwgZGV0YWlscyBzZWUgdGhlIGNsb3N1cmVzKExQQykKKyAgICAgICAgZG9jLiBGb3IgaGludHMgd2hlbiB0byB1c2Ugd2hpY2ggdHlwZSBvZiBjbG9zdXJlLCBzZWUgdGhlIGVuZAorICAgICAgICBvZiB0aGlzIGRvYy4KKworCisgICAgICAgIE1hbnkgTXVkcyB1c2UgJ2RldGFpbHMnIHRvIGFkZCBtb3JlIGZsYXZvdXIuICdEZXRhaWxzJyBhcmUKKyAgICAgICAgaXRlbXMgd2hpY2ggY2FuIGJlIGxvb2tlZCBhdCwgYnV0IGFyZSBub3QgaW1wbGVtZW50ZWQgYXMgb3duCisgICAgICAgIG9iamVjdHMsIGJ1dCBpbnN0ZWFkIHNpbXVsYXRlZCBieSB0aGUgZW52aXJvbm1lbnQuCisgICAgICAgIExldHMgYXNzdW1lIHRoYXQgdGhlIGZ1bmN0aW9uCisKKyAgICAgICAgICBBZGREZXRhaWwoc3RyaW5nIGtleXdvcmQsIHN0cmluZ3xjbG9zdXJlIGRlc2MpCisKKyAgICAgICAgYWRkcyB0aGUgZGV0YWlsICdrZXl3b3JkJyB0byB0aGUgcm9vbSwgd2hpY2gsIHdoZW4gbG9vayBhdCwKKyAgICAgICAgcmV0dXJucyB0aGUgc3RyaW5nICdkZXNjJyByZXNwLiB0aGUgcmVzdWx0IG9mIHRoZSBleGVjdXRpb24gb2YKKyAgICAgICAgY2xvc3VyZSAnZGVzYycgYXMgdGhlIGRldGFpbCBkZXNjcmlwdGlvbiB0byB0aGUgcGxheWVyLgorCisgICAgICAgIE5vdyBpbWFnaW5lIHRoYXQgb25lIHdhbnRzIHRvIGVxdWlwIGEgcm9vbSB3aXRoIG1hZ2ljIHJ1bmVzLAorICAgICAgICB3aGljaCByZWFkIGFzICdIZWxsbyA8cGxheWVybmFtZT4hXG4iIHdoZW4gbG9va2VkIGF0LgorICAgICAgICBPYnZpb3VzbHkKKworICAgICAgICAgIEFkZERldGFpbCgicnVuZXMiLCBzcHJpbnRmKCAiSGVsbG8gJXMhXG4iCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAsIHRoaXNfcGxheWVyKCktPlF1ZXJ5TmFtZSgpKSk7CisKKyAgICAgICAgaXMgbm90IHN1ZmZpY2llbnQsIGFzIHRoZSAndGhpc19wbGF5ZXIoKScgaXMgZXhlY3V0ZWQgdG8gZWFybHkKKyAgICAgICAgYW5kIGp1c3Qgb25jZTogZm9yIHRoZSBwbGF5ZXIgbG9hZGluZyB0aGUgcm9vbS4KKworICAgICAgICBUaGUgc29sdXRpb24gaXMgdG8gdXNlIGNsb3N1cmVzLiBGaXJzdCwgdGhlIHNvbHV0aW9uIHVzaW5nCisgICAgICAgIGxmdW4tY2xvc3VyZXM6CisKKyAgICAgICAgICBwcml2YXRlIHN0cmluZyBfZGV0YWlsX3J1bmVzICgpIHsKKyAgICAgICAgICAgIHJldHVybiBzcHJpbnRmKCJIZWxsbyAlcyFcbiIsIHRoaXNfcGxheWVyKCktPlF1ZXJ5TmFtZSgpKTsKKyAgICAgICAgICB9CisgICAgICAgICAgICAuLi4KKyAgICAgICAgICBBZGREZXRhaWwoInJ1bmVzIiwgIydfZGV0YWlsX3J1bmVzKTsKKworICAgICAgICBvciB3aXRoIGFuIGlubGluZSBjbG9zdXJlOgorCisgICAgICAgICAgQWRkRGV0YWlsKCJydW5lcyIKKyAgICAgICAgICAgICAgICAgICAsICg6IHNwcmludGYoIkhlbGxvICVzIVxuIiwgdGhpc19wbGF5ZXIoKS0+UXVlcnlOYW1lKCkpIDopCisgICAgICAgICAgICAgICAgICAgKTsKKworCisgICAgICAgIFNpbXBsZT8gSGVyZSBpcyB0aGUgc2FtZSBjb2RlLCB0aGlzIHRpbWUgYXMgbGFtYmRhLWNsb3N1cmU6CisKKyAgICAgICAgICBBZGREZXRhaWwoICJydW5lcyIKKyAgICAgICAgICAgICAgICAgICAsIGxhbWJkYSgwCisgICAgICAgICAgICAgICAgICAgICAsICh7IydzcHJpbnRmLCAiSGVsbG8gJXMhXG4iCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLCAoeyMnY2FsbF9vdGhlciwgKHsjJ3RoaXNfcGxheWVyfSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLCAiUXVlcnlOYW1lIiB9KQorICAgICAgICAgICAgICAgICAgICAgICB9KQorICAgICAgICAgICAgICAgICAgICkpOworCisgICAgICAgIFdoeSB0aGUgZXh0cmEgKHsgfSkgYXJvdW5kICcjJ3RoaXNfcGxheWVyJz8gIyd0aGlzX3BsYXllcgorICAgICAgICBhbG9uZSBpcyBqdXN0IGEgc3ltYm9sLCBzeW1ib2xpemluZyB0aGUgZWZ1biB0aGlzX3BsYXllcigpLAorICAgICAgICBidXQgY2FsbF9vdGhlcigpIG5lZWRzIGFuIG9iamVjdCBhcyBmaXJzdCBhcmd1bWVudC4gVGhlcmVmb3JlLAorICAgICAgICB0aGUgIyd0aGlzX3BsYXllciBoYXMgdG8gYmUgaW50ZXJwcmV0ZWQgYXMgZnVuY3Rpb24gdG8KKyAgICAgICAgZXZhbHVhdGUsIHdoaWNoIGlzIGVuZm9yY2VkIGJ5IGVuY2xvc2luZyBpdCBpbiAoeyB9KS4gVGhlIHNhbWUKKyAgICAgICAgcmVhc29uIGFsc28gZGljdGF0ZXMgdGhlIGVuY2xvc2luZyBvZiB0aGUgd2hvbGUgIydjYWxsX290aGVyCisgICAgICAgIGV4cHJlc3Npb24gaW50byAoeyB9KS4KKyAgICAgICAgTm90ZSBhbHNvIHRoZSBtaXNzaW5nICMncmV0dXJuOiBpdCBpcyBub3QgbmVlZGVkLiBUaGUgcmVzdWx0CisgICAgICAgIG9mIGEgbGFtYmRhLWNsb3N1cmUgaXMgdGhlIGxhc3QgdmFsdWUgY29tcHV0ZWQuCisKKworICAgICAgICBBbm90aGVyIGV4YW1wbGU6IFRhc2sgaXMgdG8gcmVkdWNlIHRoZSBIUCBvZiBldmVyeSBsaXZpbmcgaW4gYQorICAgICAgICByb29tIGJ5IDEwLCB1bmxlc3MgdGhlIHJlc3VsdCB3b3VsZCBiZSBuZWdhdGl2ZS4KKyAgICAgICAgU2VsZWN0aW5nIGFsbCBsaXZpbmdzIGluIGEgcm9vbSBpcyBzaW1wbHkKKworICAgICAgICAgIGZpbHRlcihhbGxfaW52ZW50b3J5KHJvb20pLCAjJ2xpdmluZykKKworICAgICAgICBUaGUgdHJpY2t5IHBhcnQgaXMgdG8gcmVkdWNlIHRoZSBIUC4gQWdhaW4sIGZpcnN0IHRoZQorICAgICAgICBsZnVuLWNsb3N1cmUgc29sdXRpb246CisKKyAgICAgICAgICBwcml2YXRlIF9yZWR1Y2VfaHAgKG9iamVjdCBsaXYpIHsKKyAgICAgICAgICAgIGludCBocDsKKyAgICAgICAgICAgIGhwID0gbGl2LT5RdWVyeUhQKCk7CisgICAgICAgICAgICBpZiAoaHAgPiAxMCkKKyAgICAgICAgICAgICAgbGl2LT5TZXRIUChocC0xMCk7CisgICAgICAgICAgfQorICAgICAgICAgICAgLi4uCisKKyAgICAgICAgICBtYXAoIGZpbHRlcihhbGxfaW52ZW50b3J5KHJvb20pLCAjJ2xpdmluZykKKyAgICAgICAgICAgICAgICAgICAsICMnX3JlZHVjZV9ocCkKKworICAgICAgICBvciBhcyBhbiBpbmxpbmUgY2xvc3VyZToKKworICAgICAgICAgIG1hcCggZmlsdGVyKGFsbF9pbnZlbnRvcnkocm9vbSksICMnbGl2aW5nKQorICAgICAgICAgICAgICAgICAgICwgKDogaW50IGhwOworICAgICAgICAgICAgICAgICAgICAgICAgaHAgPSBsaXYtPlF1ZXJ5SFAoKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGlmIChocCA+IDEwKQorICAgICAgICAgICAgICAgICAgICAgICAgICBsaXYtPlNldEhQKGhwIC0gMTApOworICAgICAgICAgICAgICAgICAgICAgIDopICk7CisKKyAgICAgICAgQm90aCBmaWx0ZXIoKSBhbmQgbWFwKCkgcGFzcyB0aGUgYWN0dWFsIGFycmF5IGl0ZW0KKyAgICAgICAgYmVpbmcgZmlsdGVyZWQvbWFwcGVkIGFzIGZpcnN0IGFyZ3VtZW50IHRvIHRoZSBjbG9zdXJlLgorCisgICAgICAgIE5vdywgdGhlIGxhbWJkYS1jbG9zdXJlIHNvbHV0aW9uOgorCisgICAgICAgICAgbWFwKCBmaWx0ZXIoYWxsX2ludmVudG9yeShyb29tKSwgIydsaXZpbmcpCisgICAgICAgICAgLCBsYW1iZGEoICh7ICdsaXYgfSkKKyAgICAgICAgICAgICwgKHsnIywgLCAoeyMnPSwgJ2hwLCAoeyMnY2FsbF9vdGhlciwgJ2xpdiwgIlF1ZXJ5SFAiIH0pIH0pCisgICAgICAgICAgICAgICAgICAgICwgKHsjJz8sICh7Iyc+LCAnaHAsIDEwIH0pCisgICAgICAgICAgICAgICAgICAgICAgICAgICAsICh7IydjYWxsX290aGVyLCAnbGl2LCAiU2V0SFAiCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLCAoeyMnLSwgJ2hwLCAxMCB9KQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KQorICAgICAgICAgICAgICAgICAgICAgIH0pCisgICAgICAgICAgICAgIH0pCisgICAgICAgICAgICApIC8vIG9mIGxhbWJkYSgpCisgICAgICAgICAgKTsKKworICAgICAgICBJdCBpcyB3b3J0aHkgdG8gcG9pbnQgb3V0IGhvdyBsb2NhbCB2YXJpYWJsZXMgbGlrZSAnaHAnIGFyZQorICAgICAgICBkZWNsYXJlZCBpbiBhIGxhbWJkYS1jbG9zdXJlOiBub3QgYXQgYWxsLiBUaGV5IGFyZSBqdXN0IHVzZWQKKyAgICAgICAgYnkgd3JpdGluZyB0aGVpciBzeW1ib2wgJ2hwIC4gU2FtZSBhcHBsaWVzIHRvIHRoZSBjbG9zdXJlcworICAgICAgICBwYXJhbWV0ZXIgJ2xpdiAuCisgICAgICAgIFRoZSBsYW1iZGEtY2xvc3VyZSBzb2x1dGlvbiBpcyBub3QgcmVjb21tZW5kZWQgZm9yIHRocmVlCisgICAgICAgIHJlYXNvbnM6IGl0IGlzIGNvbXBsaWNhdGVkLCBkb2VzIG5vdCB1c2UgdGhlIHBvd2VycyBvZgorICAgICAgICBsYW1iZGEoKSwgYW5kIHRoZSBsYW1iZGEoKSBpcyByZWNvbXBpbGVkIGV2ZXJ5IHRpbWUgdGhpcworICAgICAgICBzdGF0ZW1lbnQgaXMgZXhlY3V0ZWQhCisKKworICAgICAgICBTbyBmYXIsIGxhbWJkYS1jbG9zdXJlcyBzZWVtIHRvIGJlIGp1c3QgY29tcGxpY2F0ZWQsIGFuZCBpbgorICAgICAgICBmYWN0OiB0aGV5IGFyZS4gVGhlaXIgcG93ZXJzIGxpZSBlbHNld2hlcmUuCisKKyAgICAgICAgSW1hZ2luZSBhIGNvbXB1dGF0aW9uLCBsaWtlIGZvciBza2lsbCByZXNvbHV0aW9uLCB3aGljaAorICAgICAgICBpbnZvbHZlcyB0d28gb2JqZWN0IHByb3BlcnRpZXMgbXVsdGlwbGllZCB3aXRoIGZhY3RvcnMgYW5kCisgICAgICAgIHRoZW4gYWRkZWQuCisgICAgICAgIFRoZSBzdHJhaWdodGZvcndhcmQgc29sdXRpb24gd291bGQgYmUgYSBmdW5jdGlvbiBsaWtlOgorCisgICAgICAgICAgaW50IENvbXB1dGUgKG9iamVjdCBvYmosIHN0cmluZyBzdGF0MSwgaW50IGZhY3RvcjEKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICwgc3RyaW5nIHN0YXQyLCBpbnQgZmFjdG9yMikKKyAgICAgICAgICB7CisgICAgICAgICAgICByZXR1cm4gICBjYWxsX290aGVyKG9iaiwgIlF1ZXJ5IitzdGF0MSkgKiBmYWN0b3IxCisgICAgICAgICAgICAgICAgICAgKyBjYWxsX290aGVyKG9iaiwgIlF1ZXJ5IitzdGF0MikgKiBmYWN0b3IyOworICAgICAgICAgIH0KKworICAgICAgICBFYWNoIGNhbGwgdG8gQ29tcHV0ZSgpIGludm9sdmVzIHNldmVyYWwgb3BlcmF0aW9ucyAoY29tcHV0aW5nCisgICAgICAgIHRoZSBmdW5jdGlvbiBuYW1lcyBhbmQgcmVzb2x2aW5nIHRoZSBjYWxsX290aGVyKClzKSB3aGljaCBpbgorICAgICAgICBmYWN0IG5lZWQgdG8gYmUgZG9uZSBqdXN0IG9uY2UuIFVzaW5nIGxhbWJkYS1jbG9zdXJlcywgb25lIGNhbgorICAgICAgICBjb25zdHJ1Y3QgYW5kIGNvbXBpbGUgYSBwaWVjZSBvZiBjb2RlIHdoaWNoIGJlaGF2ZXMgbGlrZSBhCisgICAgICAgIENvbXB1dGUoKSB0YWlsb3JlZCBmb3IgYSBzcGVjaWZpYyBzdGF0L2ZhY3RvciBjb21iaW5hdGlvbjoKKworICAgICAgICAgIGNsb3N1cmUgQ29uc3RydWN0Q29tcHV0ZSAob2JqZWN0IG9iaiwgc3RyaW5nIHN0YXQxLCBpbnQgZmFjdG9yMQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICwgc3RyaW5nIHN0YXQyLCBpbnQgZmFjdG9yMikKKyAgICAgICAgICB7CisgICAgICAgICAgICBtaXhlZCBjb2RlOworCisgICAgICAgICAgICAvLyBDb25zdHJ1Y3QgdGhlIGZpcnN0IG11bHRpcGxpY2F0aW9uLgorICAgICAgICAgICAgLy8gVGhlIHN5bWJvbF9mdW5jdGlvbigpIGNyZWF0ZXMgYSBzeW1ib2wgZm9yIHRoZQorICAgICAgICAgICAgLy8gbGZ1biAnUXVlcnk8c3RhdDE+Jywgc3BlZWRpbmcgdXAgbGF0ZXIgY2FsbHMuCisgICAgICAgICAgICAvLyBOb3RlIGFnYWluIHRoZSBleHRyYSAoeyB9KSBhcm91bmQgdGhlIGNyZWF0ZWQgc3ltYm9sLgorCisgICAgICAgICAgICBjb2RlID0gKHsjJyosICh7IHN5bWJvbF9mdW5jdGlvbigiUXVlcnkiK3N0YXQxLCBvYmopIH0pCisgICAgICAgICAgICAgICAgICAgICAgICAsIGZhY3RvcjEgfSk7CisKKyAgICAgICAgICAgIC8vIENvbnN0cnVjdCB0aGUgc2Vjb25kIG11bHRpcGxpY2F0aW9uLCBhbmQgdGhlIGFkZGl0aW9uCisgICAgICAgICAgICAvLyBvZiBib3RoIHRlcm1zLgorCisgICAgICAgICAgICBjb2RlID0gKHsjJyssIGNvZGUKKyAgICAgICAgICAgICAgICAgICAgICAgICwgKHsjJyosICh7IHN5bWJvbF9mdW5jdGlvbigiUXVlcnkiK3N0YXQyLCBvYmopIH0pCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLCBmYWN0b3IyIH0pCisgICAgICAgICAgICAgICAgICAgfSk7CisKKyAgICAgICAgICAgIC8vIENvbXBpbGUgdGhlIGNvZGUgYW5kIHJldHVybiB0aGUgZ2VuZXJhdGVkIGNsb3N1cmUuCisgICAgICAgICAgICByZXR1cm4gbGFtYmRhKDAsIGNvZGUpOworICAgICAgICAgIH0KKworICAgICAgICBPbmNlIHRoZSBjbG9zdXJlIGlzIGNvbXBpbGVkLAorCisgICAgICAgICAgc3RyX2RleF9mdW4gPSBDb25zdHJ1Y3RDb21wdXRlKG9iaiwgIlN0ciIsIDEwLCAiRGV4IiwgOTApOworCisgICAgICAgIGl0IGNhbiBiZSB1c2VkIHdpdGggYSBzaW1wbGUgJ2Z1bmNhbGwoc3RyX2RleF9mdW4pJy4KKworCitERVNDUklQVElPTiAtLSBXaGVuIHRvIHVzZSB3aGljaCBjbG9zdXJlPworICAgICAgICBGaXJzdCwgYSBjbG9zdXJlIGlzIG9ubHkgdGhlbiB1c2VmdWwgaWYgaXQgbmVlZG4ndCB0byBsaXZlIGFueQorICAgICAgICBsb25nZXIgdGhhbiB0aGUgb2JqZWN0IGRlZmluaW5nIGl0LiBSZWFzb246IHdoZW4gdGhlIGRlZmluaW5nCisgICAgICAgIG9iamVjdCBnZXRzIGRlc3RydWN0ZWQsIHRoZSBjbG9zdXJlIHdpbGwgdmFuaXNoLCB0b28uCisKKyAgICAgICAgRWZ1bi0sIGxmdW4tIGFuZCBpbmxpbmUgY2xvc3VyZXMgc2hvdWxkIGJlIHVzZWQgd2hlcmUgdXNlZnVsLCBhcyB0aGV5CisgICAgICAgIG1vc3RseSBkbyB0aGUgam9iIGFuZCBhcmUgZWFzeSB0byByZWFkLiBUaGUgZGlzYWR2YW50YWdlIG9mIGxmdW4tIGFuZAorICAgICAgICBpbmxpbmUgY2xvc3VyZXMgaXMgdGhhdCB0aGV5IG1ha2UgYSByZXBsYWNlX3Byb2dyYW0oKSBpbXBvc3NpYmxlCisgICAgICAgIC0gYnV0IHNpbmNlIHN1Y2ggb2JqZWN0cyB0ZW5kIHRvIG5vdCBiZWluZyByZXBsYWNlYWJsZSBhdCBhbGwsIHRoaXMgaXMKKyAgICAgICAgbm8gcmVhbCBsb3NzLgorCisgICAgICAgIExhbWJkYSBjbG9zdXJlcyBhcmUgbmVlZGVkIGlmIHRoZSBhY3Rpb25zIG9mIHRoZSBjbG9zdXJlIGFyZQorICAgICAgICBoZWF2aWx5IGRlcGVuZGluZyBvbiBzb21lIGRhdGEgYXZhaWxhYmxlIG9ubHkgYXQgcnVudGltZSwgbGlrZQorICAgICAgICB0aGUgYWN0dWFsIGludmVudG9yeSBvZiBhIGNlcnRhaW4gcGxheWVyLgorICAgICAgICBJZiB5b3UgdXNlIGxmdW4tY2xvc3VyZXMgYW5kIGZpbmQgeW91cnNlbGYgc2hvdmluZyBhcm91bmQKKyAgICAgICAgcnVudGltZSBkYXRhIGluIGFyZ3VtZW50cyBvciAoZ2FzcCEpIGdsb2JhbCB2YXJpYWJsZXMsIGl0IGlzCisgICAgICAgIHRpbWUgdG8gdGhpbmsgYWJvdXQgdXNpbmcgYSBsYW1iZGEtY2xvc3VyZSwgY29tcGlsaW5nIHRoZQorICAgICAgICB2YWx1ZSBoYXJkIGludG8gaXQuCisgICAgICAgIFRoZSBkaXNhZHZhbnRhZ2VzIG9mIGxhbWJkYSBjbG9zdXJlcyBhcmUgY2xlYXI6IHRoZXkgYXJlIGRhbW4KKyAgICAgICAgaGFyZCB0byByZWFkLCBhbmQgZWFjaCBsYW1iZGEoKSBzdGF0ZW1lbnQgcmVxdWlyZXMgZXh0cmEgdGltZSB0bworICAgICAgICBjb21waWxlIHRoZSBjbG9zdXJlLgorCisKK1NFRSBBTFNPCisgICAgICAgIGNsb3N1cmVzKExQQyksIGNsb3N1cmVfZ3VpZGUoTFBDKSwgY2xvc3VyZXMtYWJzdHJhY3QoTFBDKQpkaWZmIC0tZ2l0IGEvZG9jL0xQQy9jbG9zdXJlczIgYi9kb2MvTFBDL2Nsb3N1cmVzMgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5mYzUyODk0Ci0tLSAvZGV2L251bGwKKysrIGIvZG9jL0xQQy9jbG9zdXJlczIKQEAgLTAsMCArMSwzNjkgQEAKK0Nsb3N1cmVzIHByb3ZpZGUgYSBtZWFucyBvZiBjcmVhdGluZyBjb2RlIGR5bmFtaWNhbGx5IGFuZCBwYXNzaW5nIHBpZWNlcworb2YgY29kZSBhcyBwYXJhbWV0ZXJzLCBzdG9yaW5nIHRoZW0gaW4gdmFyaWFibGVzLiBPbmUgbWlnaHQgdGhpbmsgb2YgdGhlbQorYXMgYSB2ZXJ5IGFkdmFuY2VkIGZvcm0gb2YgcHJvY2Vzc19zdHJpbmcoKS4gSG93ZXZlciwgdGhpcyBmYWxscyBzaG9ydCBvZgord2hhdCB5b3UgY2FuIGFjdHVhbGx5IGRvIHdpdGggdGhlbS4KKworVGhlIHNpbXBsZXN0IGtpbmQgb2YgY2xvc3VyZXMgYXJlIGVmdW5zLCBsZnVucyBvciBvcGVyYXRvcnMuIEZvcgorZXhhbXBsZSwgIyd0aGlzX3BsYXllciBpcyBhbiBleGFtcGxlIG9mIGEgY2xvc3VyZS4gWW91IGNhbiBhc3NpZ24gaXQKK3RvIGEgdmFyaWFibGUgYXMgaW4KKworCWNsb3N1cmUgZjsKKwlvYmplY3QgcDsKKwlmID0gIyd0aGlzX3BsYXllcjsKKworYW5kIGxhdGVyIHVzZSBlaXRoZXIgdGhlIGZ1bmNhbGwoKSBvciBhcHBseSgpIGVmdW4gdG8gZXZhbHVhdGUgaXQuIExpa2UKKworCXAgPSBmdW5jYWxsKGYpOworCitvcgorCXAgPSBhcHBseShmKTsKKworSW4gYm90aCBjYXNlcyB0aGVyZSBwIHdpbGwgYWZ0ZXJ3YXJkcyBob2xkIHRoZSB2YWx1ZSBvZiB0aGlzX3BsYXllcigpLgorT2YgY291cnNlLCB0aGlzIGlzIG9ubHkgYSByYXRoZXIgc2ltcGxlIGFwcGxpY2F0aW9uLiBNb3JlIHVzZWZ1bAoraW5zdGFuY2VzIG9mIGNsb3N1cmVzIGNhbiBiZSBjcmVhdGVkIHVzaW5nIHRoZSBsYW1iZGEoKSBlZnVuLiBJdCBpcyBtdWNoCitsaWtlIHRoZSBsYW1iZGEgZnVuY3Rpb24gaW4gTElTUC4gRm9yIGV4YW1wbGUsIHlvdSBjYW4gZG8gdGhlIGZvbGxvd2luZzoKKworCWYgPSBsYW1iZGEoICh7ICd4IH0pLCAoeyAjJ2Vudmlyb25tZW50LCAneCB9KSApOworCitUaGlzIHdpbGwgY3JlYXRlIGEgbGFtYmRhIGNsb3N1cmUgYW5kIGFzc2lnbiBpdCB0byBmLiBUaGUgZmlyc3QgYXJndW1lbnQKK3RvIGxhbWJkYSBpcyBhbiBhcnJheSBkZXNjcmliaW5nIHRoZSBhcmd1bWVudHMgKHN5bWJvbHMpIHBhc3NlZCB0byB0aGUKK2Nsb3N1cmUgdXBvbiBldmFsdWF0aW9uIGJ5IGZ1bmNhbGwoKSBvciBhcHBseSgpLiBZb3UgY2FuIG5vdyBldmFsdWF0ZSBmLAorZm9yIGV4YW1wbGUgYnkgbWVhbnMgb2YgZnVuY2FsbChmLHRoaXNfb2JqZWN0KCkpLiBUaGlzIHdpbGwgcmVzdWx0IGluCit0aGUgZm9sbG93aW5nIHN0ZXBzOgorCisJMS4gVGhlIHZhbHVlIG9mIHRoaXNfb2JqZWN0KCkgd2lsbCBiZSBib3VuZCB0byBzeW1ib2wgeC4KKwkyLiBlbnZpcm9ubWVudCh4KSBldmFsdWF0ZXMgdG8gZW52aXJvbm1lbnQodGhpc19vYmplY3QoKSkKKwkgICBhbmQgaXMgcmV0dXJuZWQgYXMgdGhlIHJlc3VsdCBvZiB0aGUgZnVuY2FsbCgpLgorCitPbmUgbWlnaHQgd29uZGVyIHdoeSB0aGVyZSBhcmUgdHdvIGZ1bmN0aW9ucywgZnVuY2FsbCgpIGFuZCBhcHBseSgpLCB0bworcGVyZm9ybSB0aGUgc2VlbWluZ2x5IHNhbWUgam9iLCBuYW1lbHkgZXZhbHVhdGluZyBhIGNsb3N1cmUuIE9mIGNvdXJzZQordGhlcmUgaXMgYSBzdWJ0bGUgZGlmZmVyZW5jZS4gSWYgdGhlIGxhc3QgYXJndW1lbnQgdG8gYXBwbHkoKSBpcyBhbiBhcnJheSwKK3RoZW4gZWFjaCBvZiBpdHMgZWxlbWVudHMgZ2V0cyBleHBhbmRlZCB0byBhbiBhZGRpdGlvbmFsIHBhcmFtYXRlci4gVGhlCitvYnZpb3VzIHVzZSB3b3VsZCBiZSAjJ2NhbGxfb3RoZXIgYXMgaW46CisKKwltaXhlZCBldmFsKG9iamVjdCBvYixzdHJpbmcgZnVuYyxtaXhlZCAqYXJncykKKwl7CisJICByZXR1cm4gYXBwbHkoIydjYWxsX290aGVyLG9iLGZ1bmMsYXJncyk7CisJfQorCitUaGlzIHdpbGwgcmVzdWx0IGluIGNhbGxpbmcgb2ItPmZ1bmMoYXJnc1swXSxhcmdzWzFdLC4uLixhcmdzW3NpemVvZihhcmdzKS0xXSkuCitVc2luZyBmdW5jYWxsKCkgaW5zdGVhZCBvZiBhcHBseSgpIHdvdWxkIGhhdmUgZ2l2ZW4gdXMgb2ItPmZ1bmMoYXJncykuCisKK09mIGNvdXJzZSwgYmVzaWRlcyBlZnVucyB0aGVyZSBhcmUgY2xvc3VyZXMgZm9yIG9wZXJhdG9ycywgbGlrZSAjJyssCisjJy0sICMnPCwgIycmJiwgZXRjLgorCitXZWxsLCBzbyBmYXIgY2xvc3VyZXMgaGF2ZSBiZWVuIHByZXR0eSBtdWNoIGxpbWl0ZWQgZGVzcGl0ZSB0aGVpcgorb2J2aW91cyBmbGV4aWJpbGl0eS4gVGhpcyBjaGFuZ2VzIG5vdyB3aXRoIHRoZSBpbnRyb2R1Y3Rpb24gb2YKK2NvbmRpdGlvbmFsIGFuZCBsb29wIG9wZXJhdG9ycy4gRm9yIGV4YW1wbGUsIHRyeToKKworCWNsb3N1cmUgbWF4OworCW1heCA9IGxhbWJkYSggKHsgJ3gsICd5IH0pLCAoeyAjJz8gLCh7ICMnPiwgJ3gsICd5fSksICd4LCAneSB9KSB9KTsKKwlyZXR1cm4gZnVuY2FsbChtYXgsNywzKTsKKworVGhlIGFib3ZlIGV4YW1wbGUgd2lsbCByZXR1cm4gNy4gV2hhdCBoYXBwZW5lZD8gT2YgY291cnNlICMnPyBpcyB0aGUKK2NvbmRpdGlvbmFsIG9wZXJhdG9yIGFuZCBpdHMgJ3N5bnRheCcgaXMgYXMgZm9sbG93czoKKworCSh7ICMnPywgY29uZDEsIHZhbDEsIGNvbmQyLCB2YWwyLCAuLi4sIGNvbmRuLCB2YWxuLCB2YWxkZWZhdWx0IH0pOworCitJdCBldmFsdWF0ZXMgY29uZDEsIGNvbmQyLCAuLi4sIGNvbmRuIHN1Y2Nlc3NpdmVseSB1bnRpbCBpdCBnZXRzIGEKK25vbnplcm8gcmVzdWx0IGFuZCB0aGVuIHJldHVybnMgdGhlIGNvcnJlc3BvbmRpbmcgdmFsdWUuIElmIHRoZXJlIGlzIG5vCitjb25kaXRpb24gZXZhbHVhdGluZyB0byBhIG5vbnplcm8gcmVzdWx0LCB2YWxkZWZhdWx0IGdldHMgcmV0dXJuZWQuIElmCit2YWxkZWZhdWx0IGlzIG9taXR0ZWQsIDAgZ2V0cyByZXR1cm5lZC4gIyc/ISB3b3JrcyBqdXN0IGxpa2UgIyc/LCBleGNlcHQKK3RoYXQgdGhlICEgb3BlcmF0b3IgaXMgYXBwbGllZCB0byBjb25kaXRpb25zIGJlZm9yZSB0ZXN0aW5nLiBUaGVyZWZvcmUsCit3aGlsZSAjJz8gaXMgc29tZXdoYXQgbGlrZSBhbiBpZiBzdGF0ZW1lbnQsICMnPyEgcmVzZW1ibGVzIGFuIGlmX25vdAorc3RhdGVtZW50IGlmIHRoZXJlIHdlcmUgb25lLgorCisJVGhlcmUgYXJlIGFsc28gbG9vcHM6CisJKHsgIydkbywgbG9vcGJvZHksIGxvb3Bjb25kLCBsb29wcmVzdWx0IH0pCisJd2lsbCBldmFsdWF0ZSBsb29wYm9keSB1bnRpbCBsb29wY29uZCBldmFsdWF0ZXMgdG8gMCBhbmQKKwl0aGVuIHJldHVybiB0aGUgdmFsdWUgb2YgbG9vcHJlc3VsdC4gU3ltYm9scyBteSBiZSB1c2VkCisJYXMgdmFyaWFibGVzLCBvZiBjb3Vyc2UuCisKKwkoeyAjJ3doaWxlLCBsb29wY29uZCwgbG9vcHJlc3VsdCwgbG9vcGJvZHkgfSkKKwl3b3JrcyBzaW1pbGFyIGJ1dCBldmFsdWF0ZXMgbG9vcGNvbmQgYmVmb3JlIGxvb3Bib2R5LgorCitUaGVyZSBhcmUsIGhvd2V2ZXIsIHNvbWUgcXVlc3Rpb25zIG9wZW46CisKK2EpIEhvdyBkbyBJIHdyaXRlIGRvd24gYW4gYXJyYXkgd2l0aGluIGEgbGFtYmRhIGNsb3N1cmUgdG8gYXZvaWQKKyAgIGludGVycHJldGF0aW9uIGFzIGEgc3ViY2xvc3VyZT8KKyAgICh7ICMnbWVtYmVyX2FycmF5LCAneCwgKHsgImFiYyIsICJ4eXogfSkgfSkgd2lsbCBvYnZpb3VzbHkgcmVzdWx0IGluCisgICBhbiBlcnJvciBhcyBzb29uIGFzIGxhbWJkYSgpIHRyaWVzIHRvIGludGVycHJldCAiYWJjIiBhcyBhIGNsb3N1cmUKKyAgIG9wZXJhdG9yLiBUaGUgc29sdXRpb24gaXMgdG8gcXVvdGUgdGhlIGFycmF5LCBhcyBpbjoKKyAgICh7ICMnbWVtYmVyX2FycmF5LCAneCwgJyh7ICJhYmMiLCAieHl6IH0pIH0pLiBBcHBseWluZyBsYW1iZGEoKSB0bworICAgdGhpcyB3aWxsIG5vdCByZXN1bHQgaW4gYW4gZXJyb3IuIEluc3RlYWQsIHRoZSBxdW90ZSB3aWxsIGJlIHN0cmlwcGVkCisgICBmcm9tIHRoZSBhcnJheSBhbmQgdGhlIHJlc3VsdCByZWdhcmRlZCBhcyBhIG5vcm1hbCBhcnJheSBsaXRlcmFsLiBUaGUKKyAgIHNhbWUgY2FuIGJlIGFjaGlldmVkIGJ5IHVzaW5nIHRoZSBlZnVuIHF1b3RlKCksIGUuZy46CisgICAoeyAjJ21lbWJlcl9hcnJheSwgJ3gsIHF1b3RlKCAoeyAiYWJjIiwgInh5eiB9KSApIH0pCitiKSBJc24ndCBpdCBhIHNlY3VyaXR5IHJpc2sgdG8gcGFzcywgc2F5LCBhIGNsb3N1cmUgdG8gdGhlIG1hc3RlciBvYmplY3QKKyAgIHdoaWNoIHRoZW4gZXZhbHVhdGVzIGl0IHdpdGggYWxsIHRoZSBwZXJtaXNzaW9ucyBpdCBnb3Q/CisgICBMdWNraWx5LCBuby4gRWFjaCBjbG9zdXJlIGdldHMgdXBvbiBjb21waWxhdGlvbiBib3VuZCB0byB0aGUgb2JqZWN0CisgICBkZWZpbmluZyBpdC4gVGhhdCBtZWFucyB0aGF0IGV4ZWN1dGluZyBpdCBmaXJzdCBzZXRzIHRoaXNfb2JqZWN0KCkKKyAgIHRvIHRoZSBvYmplY3QgdGhhdCBkZWZpbmVkIGl0IGFuZCB0aGVuIGV2YWx1YXRlcyB0aGUgY2xvc3VyZS4gVGhpcworICAgYWxzbyBhbGxvd3MgdXMgdG8gY2FsbCBsZnVucyB3aGljaCBtaWdodCBvdGhlcndpc2UgYmUgdW5kZWZpbmVkIGluCisgICB0aGUgY2FsbGluZyBvYmplY3QuCisgICBUaGVyZSBpcyBob3dldmVyLCBhIHZhcmlhbnQgb2YgbGFtYmRhKCksIGNhbGxlZCB1bmJvdW5kX2xhbWJkYSgpLAorICAgd2hpY2ggd29ya3Mgc2ltaWxhciBidXQgZG9lcyBub3QgYWxsb3cgdGhlIHVzZSBvZiBsZnVucyBhbmQgZG9lcyBub3QKKyAgIGJpbmQgdGhlIGNsb3N1cmUgdG8gdGhlIGRlZmluaW5nIG9iamVjdC4gVGhlIGRyYXdiYWNrIGlzIHRoYXQgdHJ5aW5nCisgICB0byBldmFsdWF0ZSBpdCBieSBhcHBseSgpIG9yIGZ1bmNhbGwoKSB3aWxsIHJlc3VsdCBpbiBhbiBlcnJvci4gVGhlCisgICBjbG9zdXJlIGZpcnN0IG5lZWRzIHRvIGJlIGJvdW5kIGJ5IGNhbGxpbmcgYmluZF9sYW1iZGEoKS4KKyAgIGJpbmRfbGFtYmRhKCkgbm9ybWFsbHkgdGFrZXMgb25lIGFyZ3VtZW50IGFuZCB0cmFuc2Zvcm1zIGFuIHVuYm91bmQKKyAgIGNsb3N1cmUgaW50byBhIGNsb3N1cmUgYm91bmQgdG8gdGhlIG9iamVjdCBleGVjdXRpbmcgdGhlCisgICBiaW5kX2xhbWJkYSgpLgorICAgUHJpdmlsZWdlZCBvYmplY3RzLCBsaWtlIHRoZSBtYXN0ZXIgYW5kIHRoZSBzaW11bF9lZnVuIG9iamVjdCAob3IKKyAgIHRob3NlIGF1dGhvcml6ZWQgYnkgdGhlIHByaXZpbGVnZV92aW9sYXRpb24oKSBmdW5jdGlvbiBpbiB0aGUgbWFzdGVyKQorICAgbWF5IGFsc28gZ2l2ZSBhbiBvYmplY3QgYXMgdGhlIHNlY29uZCBhcmd1bWVudCB0byBiaW5kX2xhbWJkYSgpLiBUaGlzCisgICB3aWxsIGJpbmQgdGhlIGNsb3N1cmUgdG8gdGhhdCBvYmplY3QuIEEgc2FtcGxlIGFwcGxpY2F0aW9uIGlzOgorCisgICBkdW1wX29iamVjdChvYikKKyAgIC8vIHdpbGwgZHVtcCB0aGUgdmFyaWFibGVzIG9mIG9iIHRvIC9kdW1wLm8KKyAgIHsKKyAgICAgY2xvc3VyZSBzYXZlOworICAgICBzYXZlID0gdW5ib3VuZF9sYW1iZGEoICh7IH0pLCAoeyAjJ3NhdmVfb2JqZWN0LCAiL29wZW4vZHVtcCIgfSkgKTsKKyAgICAgYmluZF9sYW1iZGEoc2F2ZSxvYik7CisgICAgIGZ1bmNhbGwoc2F2ZSk7CisgICB9CisKKyAgIGJpbmRfbGFtYmRhKCkgY2FuIGFsc28gYmUgdXNlZCB3aXRoIGVmdW4gY2xvc3VyZXMuCisKK2MpIEl0IG1pZ2h0IGJlIGFuIGludGVyZXN0aW5nIGFwcGxpY2F0aW9uIHRvIGNyZWF0ZSBjbG9zdXJlcyBkeW5hbWljYWxseQorICAgYXMgYW4gYWx0ZXJuYXRpdmUgdG8gd3JpdGluZyBMUEMgY29kZSB0byBhIGZpbGUgYW5kIHRoZW4gbG9hZGluZyBpdC4KKyAgIEhvd2V2ZXIsIGhvdyBkbyBJIGF2b2lkIGRvaW5nIGV4YWN0bHkgdGhhdCBpZiBJIG5lZWQgc3ltYm9scyBsaWtlICd4CisgICBvciAneT8KKyAgIFRvIGRvIHRoYXQgb25lIHVzZXMgdGhlIHF1b3RlKCkgZWZ1bi4gSXQgdGFrZXMgYSBzdHJpbmcgYXMgaXRzCisgICBhcmd1bWVudCBhbmQgdHJhbnNmb3JtcyBpdCBpbnRvIGEgc3ltYm9sLiBGb3IgZXhhbXBsZSwgd3JpdGluZworICAgcXVvdGUoIngiKSBpcyBleGFjdGx5IHRoZSBzYW1lIGFzIHdyaXRpbmcgJ3guCisKK2QpIEhvdyBkbyBJIHRlc3QgaWYgYSB2YXJpYWJsZSBob2xkcyBhIGNsb3N1cmU/CisgICBVc2UgdGhlIGNsb3N1cmVwKCkgZWZ1biB3aGljaCB3b3JrcyBsaWtlIGFsbCB0aGUgb3RoZXIgdHlwZSB0ZXN0aW5nCisgICBlZnVucy4gRm9yIHN5bWJvbHMgdGhlcmUgaXMgYWxzbyBzeW1ib2xwKCkgYXZhaWxhYmxlLgorCitlKSBUaGF0IG1lYW5zLCBJIGNhbiBkbzoKKyAgIGlmIChjbG9zdXJlcChmKSkgcmV0dXJuIGZ1bmNhbGwoZik7IGVsc2UgcmV0dXJuIGY7ID8KKyAgIFllcywgYnV0IGluIHRoZSBjYXNlIG9mIGZ1bmNhbGwoKSBpdCBpcyB1bm5lY2Vzc2FyeS4gSWYgZnVuY2FsbCgpCisgICBnZXRzIG9ubHkgb25lIGFyZ3VtZW50IGFuZCBpdCBpcyBub3QgYSBjbG9zdXJlIGl0IHdpbGwgYmUgcmV0dXJuZWQKKyAgIHVuY2hhbmdlZC4gU28gcmV0dXJuIGZ1bmNhbGwoZik7IHdvdWxkIHN1ZmZpY2UuCisKK2YpIEkgd2FudCB0byB1c2UgYSBmdW5jdGlvbiBpbiBzb21lIG9iamVjdCBhcyBhIGNsb3N1cmUuIEhvdyBkbyBJIGRvCisgICB0aGF0PworICAgVGhlcmUgYXJlIHNldmVyYWwgd2F5cy4gSWYgdGhlIGZ1bmN0aW9uIHJlc2lkZXMgaW4gdGhpc19vYmplY3QoKSwKKyAgIGp1c3QgdXNlICMnZnVuY19uYW1lLiBJZiBub3QsIG9yIGlmIHlvdSB3YW50IHRvIGNyZWF0ZSB0aGUgZnVuY3Rpb24KKyAgIGRueW5hbWljYWxseSwgdXNlIHRoZSBlZnVuIHN5bWJvbF9mdW5jdGlvbigpLiBJdCB0YWtlcyBhIHN0cmluZyBhcworICAgaXQgZmlyc3QgYW5kIGFuIG9iamVjdCBhcyBpdHMgc2Vjb25kIGFyZ3VtZW50IGFuZCByZXR1cm5zIGEgY2xvc3VyZQorICAgd2hpY2ggdXBvbiBldmFsdWF0aW9uIGNhbGxzIHRoZSBnaXZlbiBmdW5jdGlvbiBpbiB0aGUgZ2l2ZW4gb2JqZWN0CisgICAoYW5kIGZhc3RlciB0aGFuIGNhbGxfb3RoZXIoKSwgdG9vLCBpZiBkb25lIGZyb20gaW5zaWRlIGEgbG9vcCwKKyAgIHNpbmNlIGZ1bmN0aW9uIHNlYXJjaCB3aWxsIGJlIGRvbmUgb25seSB3aGVuIGNhbGxpbmcgc3ltYm9sX2Z1bmN0aW9uKCkuCisKK2cpIENhbiBJIGNyZWF0ZSBlZnVuIGNsb3N1cmVzIGR5bmFtaWNhbGx5LCB0b28/CisgICBZZXMsIGp1c3QgdXNlIHN5bWJvbF9mdW5jdGlvbigpIHdpdGggYSBzaW5nbGUgYXJndW1lbnQuIE1vc3QgdXNlZnVsCisgICBmb3IgbWFya2VyIG9iamVjdHMgYW5kIHRoZSBsaWtlLiBCdXQgdGhlb3JldGljYWxseSBhIHNlY3VyaXR5IHJpc2sKKyAgIGlmIG5vdCB1c2VkIHByb3Blcmx5IGFuZCBmcm9tIGluc2lkZSBhIHNlY3VyaXR5IHJlbGV2YW50IG9iamVjdC4KKyAgIFRha2UgY2FyZSwgaG93ZXZlciwgdGhhdCwgaWYgdGhlcmUgaXMgYSBzaW11bF9lZnVuIHdpdGggdGhlIHNhbWUKKyAgIG5hbWUsIGl0IHdpbGwgYmUgcHJlZmVycmVkIGFzIGluIHRoZSBjYXNlIG9mICMnZnVuY3Rpb24uIFVzZSB0aGUKKyAgIGVmdW46OiBtb2RpZmllciB0byBnZXQgdGhlIGVmdW4gaWYgeW91IG5lZWQgaXQuCisKK2gpIEFyZSB0aGVyZSBvdGhlciB1c2VzIG9mIGNsb3N1cmVzIGV4Y2VwdCB1c2luZyB0aGVtIHRvIHN0b3JlIGNvZGU/CisgICBMb3RzLiBGb3IgZXhhbXBsZSwgeW91IGNhbiB1c2UgdGhlbSB3aXRoaW4gYWxtb3N0IGFsbCBvZiB0aGUKKyAgIGVmdW5zIHdoZXJlIHlvdSBnaXZlIGEgZnVuY3Rpb24gYXMgYW4gYXJndW1lbnQsIGxpa2UgZmlsdGVyKCksCisgICBzb3J0X2FycmF5KCkgb3Igd2Fsa19tYXBwaW5nKCkuIHNvcnRfYXJyYXkoYXJyYXksIyc+KSBkb2VzIGluZGVlZAorICAgd2hhdCBpcyBleHBlY3RlZC4gQW5vdGhlciBhcHBsaWNhdGlvbiBpcyBzZXRfcHJvbXB0KCksIHdoZXJlIGEKKyAgIGNsb3N1cmUgY2FuIG91dHB1dCB5b3VyIG93biBwcm9tcHQgYmFzZWQgb24gdGhlIGN1cnJlbnQgdGltZSBhbmQgb3RoZXIKKyAgIHN0dWZmIHdoaWNoIGNoYW5nZXMgYWxsIHRoZSB0aW1lLgorCitGaW5hbGx5LCB0aGVyZSBhcmUgc29tZSBzcGVjaWFsIGVmdW4vb3BlcmF0b3IgY2xvc3VyZXM6CisKKyMnWyBpbmRleGVzIGFuIGFycmF5LgorIydbPCBkb2VzIHRoZSBzYW1lLCBidXQgc3RhcnRpbmcgYXQgdGhlIGVuZC4KKyMnbmVnYXRlIGlzIGZvciB1bmFyeSBtaW51cy4KKyMnLCBtYXkgYmUgZm9sbG93ZWQgYnkgYW55IG51bWJlciBvZiBjbG9zdXJlcywKK2UuZy46ICh7ICMnLCAoeyMnPSAnaCwgJ2EsIH0pLCAoeyMnPSwgJ2EsICdiIH0pLCAoeyMnPSwgJ2IsICdoIH0pIH0pCit3aWxsIHN3YXAgJ2EgYW5kICdiIHdoZW4gY29tcGlsZWQgYW5kIGV4ZWN1dGVkLgorCistLS0tLS0tLS0tLS0KK0FuIGV4YW1wbGUgZnJvbSBBbXlsYWFyOgorCisjSSBoYXZlIHRlc3RlZCB0aGUgcmVwbGFjZV9wcm9ncmFtKCkgZnVuY3Rpb25hbGl0eSB3aXRoIG9uZSBleGFtcGxlLCB3aGljaCBJCisjaW5jbHVkZSBiZWxvdy4gVGhlIHJvb20gaXMgY29tbW9ubHkga25vd24gYXMgL3Jvb20vb3JjX3ZhbGxleS5jIC4KKyNBIHByZXJlcXVpc2l0ZSB0byBtYWtlIHRoaXMgd29yayBpcyB0byBoYXZlIHZhbHVlZCBwcm9wZXJ0aWVzIGluIHJvb20uYyAuCisjVGhlIHByb3BlcnR5IENfRVhUUkFfUkVTRVQsIGlmIGRlZmluZWQsIGlzIGV2YWx1YXRlZCBhdCByZXNldCB0aW1lIGluCisjdGhlIHJlc2V0KCkgb2YgdGhlIHVzZWQgcm9vbS5jIC4KKyNNb3Jlb3ZlciwgeW91IG5lZWQgYSBmdW5jdGlvbiB0byBxdWVyeSBhbiB1bnByb2Nlc3NlZCBwcm9wZXJ0eSB0byB1c2UKKyNvcmNfdmFsbGV5LmMgZnJvbSBmb3J0cmVzcy5jIChUaGF0IGlzLCBkb24ndCBkbyBhbiBhdXRvbWF0aWMgZnVuY2FsbCB0aGVyZS4pCisjSWYgeW91IGNhbid0IHN1cHBseSBzdWNoIGEgZnVuY3Rpb24sIHlvdSBoYXZlIHRvIHNldCB0aGUgcHJvcGVydHkgImdldF9vcmMiCisjYXQgdGhlIGVuZCBvZiBvcmNfdmFsbGV5LmMgJ3MgZXh0cmFfcmVzZXQoKSB3aXRoOgorIyAgICBhZGRfcHJvcCgiZ2V0X29yYyIsIGxhbWJkYSgwLCBnZXRfb3JjKSApOworI3doaWNoIHdpbGwgc2V0IHRoZSBwcm9wZXJ0eSB0byBhIGZ1bmN0aW9uIHRoYXQgcmV0dXJucyB0aGUgZnVuY3Rpb24gdGhhdAorI2lzIGluIHRoZSB2YXJpYWJsZSBnZXRfb3JjIGF0IHRoZSB0aW1lIHlvdSBkbyB0aGUgYWRkX3Byb3AoKSBjYWxsLgorIworI0JhY2sgdG8gZm9ydHJlc3MuYyA6IEFzc3VtZSB5b3UgaGF2ZSB0aGUgZnVuY3Rpb24gc3VjY2Vzc2Z1bGx5IHF1ZXJpZWQgYW5kCisjc3RvcmVkIGluIHRoZSB2YXJpYWJsZSBnZXRfb3JjLiBOb3cgeW91IGNhbiBjb21wdXRlIHlvdXIgZXh0cmFfcmVzZXQoKQorI2Z1bmN0aW9uIGJ5OgorIyAgICBnZXRfb3JjID0gbGFtYmRhKCAwLCAoeyMnZnVuY2FsbCwgZ2V0X29yYywgOCwgNDB9KSApOworI3doaWNoIGNyZWF0ZXMgdGhlIHVzdWFsIDggb3JjcyB3aXRoIGFuIGFfY2hhdCBjaGFuY2Ugb2YgNDAuCisjCisjSGVyZSBjb21lcyB0aGUgb3JjX3ZhbGxleS5jIHNvdXJjZToKKyMKKyMgICAgLS0tLS0tLS0tLS0gY3V0IGhlcmUgLS0tLS0tLSBjdXQgaGVyZSAtLS0tLS0tLSBjdXQgaGVyZSAtLS0tLS0tLS0tLS0KKyMKKyMjaW5jbHVkZSAicm9vbS5oIgorIyNpbmNsdWRlICIvc3lzL3N0ZHByb3BlcnRpZXMuaCIKKyMjdW5kZWYgRVhUUkFfUkVTRVQKKyMjZGVmaW5lIEVYVFJBX1JFU0VUIGV4dHJhX3Jlc2V0KCk7CisjCisjZXh0cmFfcmVzZXQoKSB7CisjICAgIGNsb3N1cmUgZ2V0X29yYzsKKyMKKyMgICAgcmVwbGFjZV9wcm9ncmFtKCJyb29tL3Jvb20iKTsgLyogTXVzdCBjb21lIGZpcnN0LiAqLworIyAgICBnZXRfb3JjID0gbGFtYmRhKCAoeydudW1fb3JjcywgJ2NoYXRfY2hhbmNlfSksCisjICAgICAgICh7Iyc/ISwgKHsjJ3ByZXNlbnQsICJvcmMiLCAoeyMncHJldmlvdXNfb2JqZWN0fSkgfSksCisjICAgICAgICAgICAoeyMnZG8sCisjICAgICAgICAgICAgICAgKHsjJz0sICdvcmMsICh7IydjbG9uZV9vYmplY3QsICJvYmovbW9uc3RlciJ9KSB9KSwKKyMgICAgICAgICAgICAgICAoeyMnPSwgJ2ksIDl9KSwKKyMgICAgICAgICAgICAgICAoeyMnZG8sCisjICAgICAgICAgICAgICAgICAgICh7IydjYWxsX290aGVyLCAnb3JjLCAic2V0X2xldmVsIiwKKyMgICAgICAgICAgICAgICAgICAgICAgICh7IycrLCAoeyMncmFuZG9tLCAyfSksIDF9KSB9KSwKKyMgICAgICAgICAgICAgICAgICAgKHsjJ2NhbGxfb3RoZXIsICdvcmMsCisjICAgICAgICAgICAgICAgICAgICAgICAoeyMnWywKKyMgICAgICAgICAgICAgICAgICAgICAgICAgICBxdW90ZSgoeyJzZXRfYWdncmVzc2l2ZSIsICJzZXRfYWMiLCAic2V0X3Nob3J0IiwKKyMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAic2V0X2FsIiwgInNldF9lcCIsICJzZXRfaHAiLCAic2V0X3JhY2UiLAorIyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJzZXRfYWxpYXMiLCAic2V0X25hbWUifSkpLCAoeyMnLT0sICdpLCAxfSkgfSksCisjICAgICAgICAgICAgICAgICAgICAgICAoeyMnWywKKyMgICAgICAgICAgICAgICAgICAgICAgICAgICBxdW90ZSgoezEsIDAsICJBbiBvcmMiLCAtNjAsIDEwMTQsIDMwLCAib3JjIiwKKyMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiZGlydHkgY3JhcCIsICJvcmMifSkpLCAnaX0pIH0pLAorIyAgICAgICAgICAgICAgICdpLCAwfSksCisjICAgICAgICAgICAgICAgKHsjJ2NhbGxfb3RoZXIsICdvcmMsICJsb2FkX2FfY2hhdCIsICdjaGF0X2NoYW5jZSwKKyMgICAgICAgICAgICAgICAgICAgcXVvdGUoKHsgIk9yYyBzYXlzOiBLaWxsICdlbSFcbiIsCisjICAgICAgICAgICAgICAgICAgICAgICAiT3JjIHNheXM6IEJsb29keSBodW1hbnMhXG4iLAorIyAgICAgICAgICAgICAgICAgICAgICAgIk9yYyBzYXlzOiBTdG9wICdlbSFcbiIsCisjICAgICAgICAgICAgICAgICAgICAgICAiT3JjIHNheXM6IEdldCAnZW0hXG4iLAorIyAgICAgICAgICAgICAgICAgICAgICAgIk9yYyBzYXlzOiBMZXQncyByaXAgb3V0IGhpcyBndXRzIVxuIiwKKyMgICAgICAgICAgICAgICAgICAgICAgICJPcmMgc2F5czogS2lsbCAnZW0gYmVmb3JlIHRoZXkgcnVuIGF3YXkhXG4iLAorIyAgICAgICAgICAgICAgICAgICAgICAgIk9yYyBzYXlzOiBXaGF0IGlzIHRoYXQgaHVtYW4gZG9pbmcgaGVyZSFcbiIsCisjICAgICAgICAgICAgICAgICAgIH0pKSB9KSwKKyMgICAgICAgICAgICAgICAoeyMnPSwgJ24sICh7IycqLCAoeyMncmFuZG9tLCAzfSksIDV9KSB9KSwKKyMgICAgICAgICAgICAgICAoeyMnPSwgJ3dlYXBvbiwgKHsjJ2Nsb25lX29iamVjdCwgIm9iai93ZWFwb24ifSkgfSksCisjICAgICAgICAgICAgICAgKHsjJz0sICdpLCA1fSksCisjICAgICAgICAgICAgICAgKHsjJ2RvLAorIyAgICAgICAgICAgICAgICAgICAoeyMnY2FsbF9vdGhlciwgJ3dlYXBvbiwKKyMgICAgICAgICAgICAgICAgICAgICAgICh7IydbLAorIyAgICAgICAgICAgICAgICAgICAgICAgICAgIHF1b3RlKCh7ICJzZXRfYWx0X25hbWUiLCAic2V0X3dlaWdodCIsICJzZXRfdmFsdWUiLAorIyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAic2V0X2NsYXNzIiwgInNldF9uYW1lIn0pKSwgKHsjJy09LCAnaSwgMX0pIH0pLAorIyAgICAgICAgICAgICAgICAgICAgICAgKHsjJ1ssCisjICAgICAgICAgICAgICAgICAgICAgICAgICAgcXVvdGUoKHsgImtuaWZlIiwgMSwgOCwgIDUsICJrbmlmZSIsCisjICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJrbmlmZSIsIDEsIDE1LCA3LCAiY3VydmVkIGtuaWZlIiwKKyMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImF4ZSIsICAgMiwgMjUsIDksICJoYW5kIGF4ZSIsICB9KSksCisjICAgICAgICAgICAgICAgICAgICAgICAgICAgKHsjJyssICduLCAnaX0pIH0pIH0pLAorIyAgICAgICAgICAgICAgICdpLCAwfSksCisjICAgICAgICAgICAgICAgKHsjJ3RyYW5zZmVyLCAnd2VhcG9uLCAnb3JjfSksCisjICAgICAgICAgICAgICAgKHsjJ2NvbW1hbmQsCisjICAgICAgICAgICAgICAgICAgICh7IycrLCAid2llbGQgIiwKKyMgICAgICAgICAgICAgICAgICAgICAgICh7IydjYWxsX290aGVyLCAnd2VhcG9uLCAicXVlcnlfbmFtZSJ9KSB9KSwgJ29yY30pLAorIyAgICAgICAgICAgICAgICh7Iydtb3ZlX29iamVjdCwgJ29yYywgKHsjJ3ByZXZpb3VzX29iamVjdH0pIH0pLAorIyAgICAgICAgICAgKHsjJy09LCAnbnVtX29yY3MsIDF9KSwgMH0pCisjICAgICAgIH0pCisjICAgICk7CisjICAgIGFkZF9wcm9wKCJnZXRfb3JjIiwgZ2V0X29yYyk7CisjICAgIGdldF9vcmMgPSBsYW1iZGEoIDAsICh7IydmdW5jYWxsLCBnZXRfb3JjLCAyLCA1MH0pICk7CisjICAgIGFkZF9wcm9wKENfRVhUUkFfUkVTRVQsIGdldF9vcmMpOworIyAgICBmdW5jYWxsKGdldF9vcmMpOworI30KKyMKKyNUV09fRVhJVCgicm9vbS9zbG9wZSIsICJlYXN0IiwKKyMgICAgICAgICJyb29tL2ZvcnRyZXNzIiwgIm5vcnRoIiwKKyMgICAgICAgICJUaGUgb3JjIHZhbGxleSIsCisjICAgICAgICAiWW91IGFyZSBpbiB0aGUgb3JjIHZhbGxleS4gVGhpcyBwbGFjZSBpcyBpbmhhYml0ZWQgYnkgb3Jjcy5cbiIgKworIyAgICAgICAgIlRoZXJlIGlzIGEgZm9ydHJlc3MgdG8gdGhlIG5vcnRoLCB3aXRoIGxvdCBvZiBzaWducyBvZiBvcmNzLlxuIiwgMSkKKyMKKyMgICAgLS0tLS0tLS0tLS0gY3V0IGhlcmUgLS0tLS0tLSBjdXQgaGVyZSAtLS0tLS0tLSBjdXQgaGVyZSAtLS0tLS0tLS0tLS0KKyMKK1Byb2NlZHVyYWwgZWxlbWVudHM6Cis9PT09PT09PT09PT09PT09PT09PQorCitkZWZpbml0aW9uIG9mIHRlcm1zOgorICA8YmxvY2s+ICA6IHplcm8gb3IgbW9yZSB2YWx1ZXMgdG8gYmUgZXZhbHVhdGVkLgorICA8dGVzdD4gICA6IG9uZSB2YWx1ZSB0byBiZSBldmFsdWF0ZWQgYXMgYnJhbmNoIG9yIGxvb3AgY29uZGl0aW9uLgorICA8cmVzdWx0PiA6IG9uZSB2YWx1ZSB0byBiZSBldmFsdWF0ZWQgYXQgdGhlIGVuZCBvZiB0aGUgZXhlY3V0aW9uIG9mIHRoZQorICAgICAgICAgICAgIGZvcm07IHRoZSB2YWx1ZSBpcyByZXR1cm5lZC4KKyAgPGx2YWx1ZT4gOiBsb2NhbCB2YXJpYWJsZS9wYXJhbWV0ZXIsIGdsb2JhbCB2YXJpYWJsZSwgb3IgYW4gaW5kZXhlZCBsdmFsdWUuCit1c2VkZWQgRUJORiBvcGVyYXRvcnM6Cit7IH0gICAgIGl0ZXJhdGlvbgorWyBdICAgICBvcHRpb24KKworZm9ybXM6CisgICh7IycsIDxib2R5PiA8cmVzdWx0Pn0pCisgICh7Iyc/IHsgPHRlc3Q+IDxyZXN1bHQ+IH0gWyA8cmVzdWx0PiBdIH0pCisgICh7Iyc/ISB7IDx0ZXN0PiA8cmVzdWx0PiB9IFsgPHJlc3VsdD4gXSB9KQorICAoeyMnJiYgeyB0ZXN0IH0gfSkKKyAgKHsjJ3x8IHsgdGVzdCB9IH0pCisgICh7Iyd3aGlsZSA8dGVzdD4gPHJlc3VsdD4gPGJvZHk+fSkgICAgbG9vcCB3aGlsZSB0ZXN0IGV2YWx1YXRlcyBub24temVyby4KKyAgKHsjJ2RvIDxib2R5PiA8dGVzdD4gPHJlc3VsdD59KSAgICAgICBsb29wIHRpbGwgdGVzdCBldmFsdWF0ZXMgemVyby4KKyAgKHsjJz0geyA8bHZhbHVlPiA8dmFsdWU+IH0gfSkgICAgICAgICBhc3NpZ25tZW50CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3RoZXIgYXNzaWdubWVudCBvcGVyYXRvcnMgd29yayB0b28uCisKK2xpc3Agc2ltaWxhcnM6CisgICMnLCAgICAgICAgICAgcHJvZ24KKyAgIyc/ICAgICAgICAgICBjb25kCisgICMnJiYgICAgICAgICAgYW5kCisgICMnfHwgICAgICAgICAgb3IKKyAgIyd3aGlsZSAgICAgICBkbyAgICAgIC8qIGJ1dCBsaXNwIGhhcyBtb3JlIHN5bnRhY3RpYyBjYW5keSBoZXJlICovCisgICMnPSAgICAgICAgICAgc2V0cQorCitBIHBhcmFtZXRlciAvIGxvY2FsIHZhcmlhYmxlICdmb28nIGlzIHJlZmVyZW5jZWQgYXMgJ2ZvbyAsIGEgZ2xvYmFsCit2YXJpYWJsZSBhcyAoeyMnZm9vfSkgLiBJbiBsdmFsdWUgcG9zaXRpb25zIChhc3NpZ25tZW50KSwgeW91IG5lZWQgbm90CitlbmNsb3NlIGdsb2JhbCB2YXJpYWJsZSBjbG9zdXJlcyBpbiBhcnJheXMuCisKK0NhbGwgYnkgcmVmZXJlbmNlIHBhcmFtZXRlcnMgYXJlIGdpdmVuIHdpdGggKHsjJyYsIDxsdmFsdWU+fSkKKworU29tZSBzcGVjaWFsIGVmdW5zOgorIydbICAgICAgICAgICAgIGluZGV4aW5nCisjJ1s8ICAgICAgICAgICAgaW5kZXhpbmcgZnJvbSB0aGUgZW5kCisjJ25lZ2F0ZSAgICAgICAgdW5hcnkgLQorCitVbmJvdW5kIGxhbWJkYSBjbG9zdXJlcworPT09PT09PT09PT09PT09PT09PT09PT0KKworVGhlc2UgY2xvc3VyZXMgYXJlIG5vdCBib3VuZCB0byBhbnkgb2JqZWN0LiBUaGV5IGFyZSBjcmVhdGVkIHdpdGggdGhlIGVmdW4KK3VuYm91bmRfbGFtYmRhKCkgLiBUaGV5IGNhbm5vdCBjb250YWluIHJlZmVyZW5jZXMgdG8gZ2xvYmFsIHZhcmlhYmxlcywgYW5kCithbGwgbGZ1biBjbG9zdXJlcyBhcmUgaW5zZXJ0ZWQgYXMgaXMsIHNpbmNlIHRoZXJlIGlzIG5vIG5hdGl2ZSBvYmplY3QgZm9yCit0aGlzIGNsb3N1cmUuCitZb3UgY2FuIGJpbmQgYW5kIHJlYmluZCB1bmJvdW5kIGxhbWJkYSBjbG9zdXJlcyB0byBhbiBvYmplY3Qgd2l0aCBlZnVuCitiaW5kX2xhbWJkYSgpIFlvdSBuZWVkIHRvIGJpbmQgaXQgYmVmb3JlIGl0IGNhbiBiZSBjYWxsZWQuIE9yZGluYXJ5IG9iamVjdHMKK2NhbiBvYmx5IGJpbmQgdG8gdGhlbXNlbHZlcywgYmluZGluZyB0byBvdGhlciBvYmplY3RzIGNhdXNlcyBhIHByaXZpbGVnZQordmlvbGF0aW9uKCkuCitUaGUgcG9pbnQgaXMgdGhhdCBwcmV2aW91c19vYmplY3QgZm9yIGNhbGxzIGRvbmUgZnJvbSBpbnNpZGUgdGhlIGNsb3N1cmUKK3dpbGwgcmVmbGVjdCB0aGUgb2JqZWN0IGRvaW5nIGJpbmRfbGFtYmRhKCksIGFuZCBhbGwgb2JqZWN0IC8gdWlkIGJhc2VkCitzZWN1cml0eSB3aWxsIGFsc28gcmVmZXIgdG8gdGhpcyBvYmplY3QuCisKKworVGhlIGZvbGxvd2luZyBpcyBtb3N0bHkgdmFwb3Vyd2FyZS4KK1dlbGwsIGFub3RoZXIgYXBwbGljYXRpb24gd291bGQgYmUgdGhhdCBzb21lIHRoaW5ncyBpbiB0aGUgZHJpdmVyIGNhbiBiZSwKK3NvcnQgb2YsIG1pY3JvcHJvZ3JhbW1lZC4KK1RoZSBtYXN0ZXIgb2JqZWN0IGNvdWxkIHNldCBzb21lIGhvb2tzIGluIGluYXVndXJhdGVfbWFzdGVyKCksIGxpa2UgY3JlYXRpbmcKK3RoZSBjb2RlIGZvciBtb3ZlX29iamVjdCgpLCB1c2luZyBhIHByaW1pdGl2ZSBsb3dfbW92ZV9vYmplY3QoKSBvcgorX19tb3ZlX29iamVjdCgpIG9yIHN1Y2guIEFsbCBjYWxscyBvZiBpbml0KCksIGV4aXQoKSwgZXRjLiBjYW4gdGh1cyBiZQorY29udHJvbGxlZCBvbiBtdWRsaWIgbGV2ZWwuCitUaGUgZHJpdmVyIHdvdWxkIGRvIGFuIGltcGxpY2l0IGJpbmRfbGFtYmRhKCkgdG8gdGhlIHZpY3RpbSB3aGVuIHRoZSBjbG9zdXJlCitpcyB1c2VkLgorCitlLmcuCisoeyMnPywgKHsjJz0sICdvYiwgKHsjJ2ZpcnN0X2ludmVudG9yeSwgJ2Rlc3RpbmF0aW9ufSkgfSksCisgICAgKHsjJ2RvLAorICAgICAgICAoeyMnY2FsbF9vdGhlciwgJ29iLCAiaW5pdCJ9KSwKKyAgICAoeyMnPSwgJ29iLCAoeyMnbmV4dF9pbnZlbnRvcnksICdvYn0pIH0pLCAwIH0pCit9KQorCitvcgorCisoeyMnZmlsdGVyX29iamVjdHMsICh7IydhbGxfaW52ZW50b3J5LCAnZGVzdGluYXRpb259KSwgImluaXQifSkKKy8qIFdvbid0IHNob3cgaW5pdCBmYWlsdXJlcyBkdWUgdG8gbW92ZS9kZXN0cnVjdCAqLworCitpcyBlcXVpdmFsZW50IHRvCisKK2lmIChvYiA9IGZpcnN0X2ludmVudG9yeShkZXN0aW5hdGlvbikgKSB7CisgICAgZG8geworICAgICAgICBvYi0+aW5pdCgpOworICAgIH0gd2hpbGUob2IgPSBuZXh0X2ludmVudG9yeShvYikgKTsKK30KKworYW5kIGl0J3Mgc3BlZWQgaXMgbWFpbmx5IGRldGVybWluZWQgYnkgdGhlIGNhbGxfb3RoZXIuIFRodXMsIGl0IHNob3VsZG4ndCBiZQorbm90aWNhYmx5IHNsb3dlciB0aGFuIHRoZSBjdXJyZW50IEMgY29kZSBpbiBtb3ZlX29iamVjdCgpLgorCmRpZmYgLS1naXQgYS9kb2MvTFBDL2NvbW1lbnRzIGIvZG9jL0xQQy9jb21tZW50cwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5hM2IwZmQwCi0tLSAvZGV2L251bGwKKysrIGIvZG9jL0xQQy9jb21tZW50cwpAQCAtMCwwICsxLDQ0IEBACitOQU1FCisgICAgICAgIGNvbW1lbnRzCisKK1NZTlRBWAorICAgICAgICAvKiBibG9jayBjb21tZW50IHRleHQgKi8KKyAgICAgICAgLy8gbGluZSBjb21tZW50IHRleHQgPGVuZCBvZiBsaW5lPgorCisKK0RFU0NSSVBUSU9OCisgICAgICAgIENvbW1lbnRzIGFyZSB1c2VkIHRvIHN0b3JlZCBhcmJpdHJhcnkgdGV4dCBpbiB0aGUgTFBDIHByb2dyYW0KKyAgICAgICAgc291cmNlLiBJdCBpcyBhIGdvb2QgaWRlYSBpZiBzb21lIGlmIHRoaXMgdGV4dCBleHBsYWlucyB0aGUKKyAgICAgICAgZGVlcGVyIGludGVudGlvbnMgYmVoaW5kIHRoZSBhY3R1YWwgTFBDIHN0YXRlbWVudHMuCisKKyAgICAgICAgVGhlcmUgYXJlIGJsb2NrIGNvbW1lbnRzIGFuZCBsaW5lIGNvbW1lbnRzLgorCisgICAgICAgIEJsb2NrIGNvbW1lbnRzIHN0YXJ0IHdpdGggYSAnLyonIGFuZCBlbmQgd2l0aCBhICcqLycuIFRoZXkgY2Fubm90CisgICAgICAgIGJlIG5lc3RlZCwgc28KKworICAgICAgICAgIC8qIHRoaXMgLyogaXMgKi8gaWxsZWdhbCAqLworCisgICAgICAgIHdpbGwgdHJlYXQgJy8qIHRoaXMgLyogaXMgKi8nIGFzIHRoZSBjb21tZW50LgorCisgICAgICAgIExpbmUgY29tbWVudHMgc3RhcnQgd2l0aCAnLy8nIGFuZCBjb250aW51ZSB1bnRpbCB0aGUgdW5lc2NhcGVkKCEpCisgICAgICAgIGVuZCBvZiB0aGUgbGluZSAoYXMgaW4gdGhlIG5ldyBDIHN0YW5kYXJkKS4KKworICAgICAgICBJdCBpcyBub3QgcG9zc2libGUgdG8gbmV4dCBibG9jayBhbmQgbGluZSBjb21tZW50cyB3aXRoaW4KKyAgICAgICAgZWFjaCBvdGhlci4gTWVhbmluZzogJy8vJyB3aXRoaW4gLyogLi4uICovIGhhcyBubyBzcGVjaWFsIG1lYW5pbmcsCisgICAgICAgIG5laXRoZXIgZG9lcyAnLyonIG9yICcqLycgaGF2ZSBhZnRlciBhIC8vLgorCitFWEFNUExFUworICAgICAgICAvKiBTaW1wbGUgYmxvY2sgY29tbWVudCAqLworCisgICAgICAgIC8qIEJsb2NrIGNvbW1lbnRzIGNhbgorICAgICAgICAgICBzcGFuIHNldmVyYWwgbGluZXMgKi8KKworICAgICAgICAvLyBTaW1wbGUgbGluZSBjb21tZW50CisKKyAgICAgICAgLy8gTGluZSBjb21tZW50cyBjYW4gXAorICAgICAgICAgICBzcGFuIHNldmVyYWwgbGluZXMsIHRvbyEKKworICAgICAgICAvLyNkZWZpbmUgTE9OR19NQUNSTyBUaGUgdW5pcXVlIGJlaGF2aW91ciBcCisgICAgICAgICAgIG9yIGxpbmUgY29tbWVudHMgcmVnYXJkaW5nIHRoZSBlbmQgb2YgbGluZSBcCisgICAgICAgICAgIGNhbiBiZSB1c2VkIGZvciBleGFtcGxlIHRvIGNvbW1lbnQgb3V0IGEgXAorICAgICAgICAgICBsYXJnZSBtYWNybyB3aXRoIGp1c3QgdG8ga2V5c3Ryb2tlcy4KZGlmZiAtLWdpdCBhL2RvYy9MUEMvZG8td2hpbGUgYi9kb2MvTFBDL2RvLXdoaWxlCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjhmNjliMmEKLS0tIC9kZXYvbnVsbAorKysgYi9kb2MvTFBDL2RvLXdoaWxlCkBAIC0wLDAgKzEsMTUgQEAKK05BTUUKKyAgICAgICAgZG8td2hpbGUKKworU1lOVEFYCisgICAgICAgIGRvIHsgc3RhdGVtZW50IH0gd2hpbGUoZXhwcik7CisKK0RFU0NSSVBUSU9OCisgICAgICAgIEV4ZWN1dGUgJ3N0YXRtZW50JyB1bnRpbCAnZXhwcicgZXZhdWxhdGVzIHRvIDAuCisKKyAgICAgICAgQSAnYnJlYWsnIGluIHRoZSAnc3RhdGVtZW50JyB3aWxsIHRlcm1pbmF0ZSB0aGUgbG9vcC4gQQorICAgICAgICAnY29udGludWUnIHdpbGwgY29udGludWUgdGhlIGV4ZWN1dGlvbiBmcm9tIHRoZSBiZWdpbm5pbmcgb2YKKyAgICAgICAgdGhlIGxvb3AuCisKK1NFRSBBTFNPCisgICAgICAgIGZvcihMUEMpLCBmb3JlYWNoKExQQyksIHdoaWxlKExQQyksIGlmKExQQyksIHN3aXRjaChMUEMpCmRpZmYgLS1naXQgYS9kb2MvTFBDL2VkMCBiL2RvYy9MUEMvZWQwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjBlZGFjN2YKLS0tIC9kZXYvbnVsbAorKysgYi9kb2MvTFBDL2VkMApAQCAtMCwwICsxLDM5IEBACitOQU1FCisgICAgICAgIGVkMAorCitERVNDUklQVElPTgorICAgICAgICBXaGVuIGluICdlZCcsIHRoZSBwcm9tcHQgaXMgJzonLgorCisgICAgICAgIEVkIGhhcyB0d28gbW9kZXMsIGNvbW1hbmQgbW9kZSBhbmQgaW5zZXJ0IG1vZGUuIFRoZSBpbnNlcnQKKyAgICAgICAgbW9kZSBoYXMgbm8gcHJvbXB0LiBZb3UgZXhpdCB0aGUgaW5zZXJ0IG1vZGUgYnkgdHlwaW5nIGEKKyAgICAgICAgc2luZ2xlICcuJyBvbiBhIGxpbmUuCisKKyAgICAgICAgQWxsIGNvbW1hbmRzIGhhdmUgdGhlIGZvbGxvd2luZyBzeW50YXg6CisKKyAgICAgICAgWCxZY21kCisKKyAgICAgICAgb3IKKworICAgICAgICBYY21kCisKKyAgICAgICAgRm9yIGV4YW1wbGU6CisKKyAgICAgICAgMSwxMHAKKyAgICAgICAgV2lsbCBwcmludCBsaW5lIDEgdG8gMTAuCisgICAgICAgIDEsNWQKKyAgICAgICAgV2lsbCBkZWxldGUgbGluZSAxIHRvIDUuCisgICAgICAgIDhwCisgICAgICAgIFdpbGwgcHJpbnQgbGluZSA4LgorICAgICAgICBBICcuJyBpcyB0aGUgImN1cnJlbnQgbGluZSIuIFRoZSBjdXJyZW50IGxpbmUgaXMgdGhlIGxhc3QgbGluZQorICAgICAgICByZWZlcmVuY2VkLiBJZiB5b3Ugd2FudCB0byBwcmludCBsYXN0IGxpbmUgKyAxMCBtb3JlOgorICAgICAgICAuLC4rMTBwCisKK05PVEUKKyAgICAgICAgVGhlc2UgbWFucGFnZXMgc2VlbSBhIGJpdCBhbnRpcXVlLCB0aG91Z2ggc3RpbGwgY29ycmVjdC4gRm9yIGEKKyAgICAgICAgYmV0dGVyIGRldGFpbGVkIGhlbHAsIGludm9rZSBlZCBhbmQgdXNlIHRoZSBgYGgnJyBjb21tYW5kLgorICAgICAgICBBbHNvIHlvdSBjb3VsZCBsb29rIGludG8gdGhlIG1hbiBwYWdlIGZvciBlZCgxKSBvbiB5b3UgbmVhcmVzdAorICAgICAgICBVbml4IGJveC4gQW5kIGZvciBhIGJpdCBvZiBmdW4geW91IGNhbiB0cnkgdGhlIGdvb2Qgb2xkCisgICAgICAgIHF1aXooNiksIGludm9rZSBhcyBgYHF1aXogZnVuY3Rpb24gZWQtY29tbWFuZCcnLgorCitTRUUgQUxTTworICAgICAgICBlZDEoTFBDKSwgZWQoRSkKZGlmZiAtLWdpdCBhL2RvYy9MUEMvZWQxIGIvZG9jL0xQQy9lZDEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMjVmM2FjMgotLS0gL2Rldi9udWxsCisrKyBiL2RvYy9MUEMvZWQxCkBAIC0wLDAgKzEsMzIgQEAKK05BTUUKKyAgICAgICAgZWQxCisKK0RFU0NSSVBUSU9OCisgICAgICAgIENvbW1hbmRzIHRoYXQgdXNlIGEgbGluZSByYW5nZToKKyAgICAgICAgSWYgbm8gbGluZSBpcyBnaXZlbiwgdGhlbiBjdXJlbnQgbGluZSBpcyBwcmludGVkLgorCisgICAgICAgIHAgICAgICAgIFByaW50IGxpbmUuCisgICAgICAgIGQgICAgICAgIERlbGV0ZSBsaW5lLgorICAgICAgICBsICAgICAgICBQcmludCBsaW5lIHdpdGggY29udHJvbCBjaGFyYWN0ZXJzLgorICAgICAgICByIGZpbGUgICAgICAgIFJlYWQgaW4gYSBmaWxlIGFmdGVyIHRoZSBsaW5lIHNwZWNpZmllZC4KKyAgICAgICAgcyAgICAgICAgU3Vic3RpdHV0ZSBwYXR0ZXJucy4gU2VlIHNwZWNpYWwgZG9jdW1lbnRhdGlvbi4KKyAgICAgICAgeiAgICAgICAgUHJpbnQgMTAgbGluZXMuCisgICAgICAgIGEgICAgICAgIFN0YXJ0IGluc2VydCBtb2RlIGFmdGVyIHNwZWNpZmllZCBsaW5lLiBFeGl0IHdpdGgKKyAgICAgICAgICAgICAgICAnLic8cmV0dXJuPi4KKyAgICAgICAgaSAgICAgICAgU3RhcnQgaW5zZXJ0IG1vZGUgYmVmb3JlIHNwZWNpZmllZCBsaW5lLiBFeGl0IHdpdGgKKyAgICAgICAgICAgICAgICAnLic8cmV0dXJuPi4KKworICAgICAgICBDb21tYW5kcyB1c2VkIHdpdGhvdXQgbGluZSBzcGVjaWZpY2F0aW9uOgorCisgICAgICAgIHEgICAgICAgIFF1aXQuIFdvbid0IHdvcmsgaWYgZmlsZSBpcyBjaGFuZ2VkLgorICAgICAgICBRICAgICAgICBRdWl0IGFuZCBkaXNjYXJkIGFsbCBjaGFuZ2VzIGlmIG5vdCBzYXZlZC4KKyAgICAgICAgdyAgICAgICAgV3JpdGUgdGhlIGZpbGUgb3V0LgorICAgICAgICB3IGZpbGUgICAgICAgIFdyaXRlIHRoZSBmaWxlIG91dCB3aXRoIG5hbWUgJ2ZpbGUnLgorICAgICAgICBlIGZpbGUgICAgICAgIEVkaXQgYSBmaWxlLgorICAgICAgICAhY21kICAgICAgICBHaXZlIGEgZ2FtZSBjb21tYW5kLiBGb3IgZXhhbXBsZSAic2F5IFdhaXQsIEkgYW0gYnVzeSIuCisKKyAgICAgICAgQXMgbGluZSBudW1iZXJzICcuJyBpcyBjdXJyZW50IGxpbmUsIGFuZCAnJCcgaXMgbGFzdCBsaW5lIG9mCisgICAgICAgIGZpbGUuIFRodXMgJzEsJHAnIHdpbGwgYWx3YXlzIHByaW50IGFsbCBvZiB0aGUgZmlsZS4KKworU0VFIEFMU08KKyAgICAgICAgZWQyKExQQykKZGlmZiAtLWdpdCBhL2RvYy9MUEMvZWQyIGIvZG9jL0xQQy9lZDIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uODVkNTIwZQotLS0gL2Rldi9udWxsCisrKyBiL2RvYy9MUEMvZWQyCkBAIC0wLDAgKzEsMjUgQEAKK05BTUUKKyAgICAgICAgZWQyCisKK0RFU0NSSVBUSU9OCisgICAgICAgIFN1YnN0aXR1dGlvbnMgYXJlIHZlcnkgYWR2YW5jZWQuCisKKyAgICAgICAgRmlyc3QgYSBzaW1wbGUgZXhhbXBsZToKKworICAgICAgICBzL2FwYS9iZXBhLworICAgICAgICBUaGlzIHdpbGwgc3Vic3RpdHVlIHRoZSAnYXBhJyBpbiBjdXJyZW50IGxpbmUgdG8gJ2JlcGEnLgorICAgICAgICBJZiBhbiAncCcgaXMgYXBwZW5kZWQsIHlvdSB3aWxsIGFsc28gaW1tZWRpYXRlbHkgc2VlIHRoZSByZXN1bHQuCisKKyAgICAgICAgMSwkcy9hcGEvYmVwYS8KKyAgICAgICAgU2FtZSwgYnV0IGFsbCBsaW5lcyBpbiBmaWxlLiBPbmx5IGZpcnN0IG9jY3VyZW5jZSBvbiBldmVyeSBsaW5lLgorCisgICAgICAgIEFueSBjaGFyYWN0ZXIgY2FuIHVzZWQgaW5zdGVhZCBvZiAnLyc6CisgICAgICAgIHMhYXBhIWJlcGEhZworICAgICAgICBUaGUgJ2cnIHNwZWNpZmllcyB0aGF0IGFsbCBvY2N1cmVuY2VzIG9mIGFwYSBvbiB0aGlzIGxpbmUgYXJlCisgICAgICAgIGNoYW5nZWQgdG8gYmVwYS4KKworICAgICAgICBUaGUgcGF0dGVybiB0aGF0IGFyZSBzdXBwb3NlZCB0byBiZSByZXBsYWNlZCwgY2FuIGJlIGEgcmVndWxhcgorICAgICAgICBleHByZXNzaW9uLiBTZWUgZWQzIGFib3V0IHRoYXQuCisKK1NFRSBBTFNPCisgICAgICAgIGVkMyhMUEMpCmRpZmYgLS1naXQgYS9kb2MvTFBDL2VkMyBiL2RvYy9MUEMvZWQzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjM4MGMwMDgKLS0tIC9kZXYvbnVsbAorKysgYi9kb2MvTFBDL2VkMwpAQCAtMCwwICsxLDMwIEBACitOQU1FCisgICAgICAgIGVkMworCitERVNDUklQVElPTgorICAgICAgICBTZWFyY2hpbmcgaXMgZG9uZSB3aXRoOgorICAgICAgICAvaGVsbG8vCisgICAgICAgIEZpbmQgZmlyc3QgbGluZSBpbiBvZiBhZnRlciBjdXJyZW50IGxpbmUuCisgICAgICAgIEp1c3QgLy8gd2lsbCByZXBlYXQgdGhlIHNlYXJjaC4KKworICAgICAgICBUaGUgcGF0dGVybnMgYXJlIHJlZ3VsYXIgZXhwcmVzc2lvbnMsIHdoZXJlIHNvbWUgY2hhcmFjdGVycworICAgICAgICBoYXZlIGEgc3BlY2lhbCBtZWFuaW5nOgorICAgICAgICAuICAgICAgICBNYXRjaCBhbnkgY2hhcmFjdGVyLgorICAgICAgICB4KiAgICAgICAgTWF0Y2ggYW55IG51bWJlcnMgb2YgeCAoMCBvciBtb3JlKS4KKyAgICAgICAgW2FiY10gICAgICAgIE1hdGNoICdhJywgJ2InIG9yICdjJy4KKyAgICAgICAgWzAtOV0gICAgICAgIE1hdGNoIGFueSBkaWdpdCAwIC0gOS4KKyAgICAgICAgW2Etel0gICAgICAgIE1hdGNoIGFueSBsb3dlcmNhc2UgbGV0dGVyLgorICAgICAgICBceCAgICAgICAgTWF0Y2ggJ3gnIHdoZXJlICd4JyBjYW4gYmUgYW55IGNoYXJhY3RlciBleGNlcHQgJygnCisgICAgICAgICAgICAgICAgYW5kICcpJy4KKworRVhBTVBMRQorICAgICAgICBzL2FiLmQvQUJDRC8KKyAgICAgICAgU3Vic3RpdHV0ZSBhbnkgc3RyaW5nICdhYlhkJyBhZ2FpbnN0ICdBQkNEJyB3aGVyZSBYIGNhbiBiZSBhbnkKKyAgICAgICAgY2hhcmFjdGVyLgorCitOT1RFCisgICAgICAgIFRoaXMgb25seSBoYWxmIHRoZSB0cnV0aCwgdGhlcmUgaXMgbG90cyBtb3JlIG1hZ2ljIGluIHRoZQorICAgICAgICByZWdleHBzLgorCitTRUUgQUxTTworICAgICAgICByZWdleHAoRSksIGVkNChMUEMpCmRpZmYgLS1naXQgYS9kb2MvTFBDL2VkNCBiL2RvYy9MUEMvZWQ0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjJkNTMwM2MKLS0tIC9kZXYvbnVsbAorKysgYi9kb2MvTFBDL2VkNApAQCAtMCwwICsxLDEyIEBACitOQU1FCisgICAgICAgIGVkNAorCitERVNDUklQVElPTgorICAgICAgICBIb3cgdG8gY29weSBmcm9tIGEgc3RhbmRhcmQgZmlsZS4KKworICAgICAgICBFbnRlciBlZC4gVGhlbiBkbyAnciAvcm9vbS92aWxsX2dyZWVuLmMnLiBOb3cgeW91IGhhdmUKKyAgICAgICAgc29tZXRoaW5nIGluIHRoZSBidWZmZXIuIENoYW5nZSBpdCBpbnRvIHdoYXQgeW91IHdhbnQgaXQgdG8KKyAgICAgICAgYmUuIFRoZW4gJ3cgL3BsYXllcnMvcGV0ZXIvaGFsbC5jJy4gT3IgJ3cgaGFsbC5jJy4KKworU0VFIEFMU08KKyAgICAgICAgZWQ1KExQQykKZGlmZiAtLWdpdCBhL2RvYy9MUEMvZWQ1IGIvZG9jL0xQQy9lZDUKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOTE1NmZmMwotLS0gL2Rldi9udWxsCisrKyBiL2RvYy9MUEMvZWQ1CkBAIC0wLDAgKzEsNDcgQEAKK05BTUUKKyAgICAgICAgZWQ1CisKK0RFU0NSSVBUSU9OCisgICAgICAgID0gOiBwcmludHMgY3VycmVudCBsaW5lCisgICAgICAgIGEgOiBhcHBlbmQgbGluZXMKKyAgICAgICAgYyA6IGNoYW5nZSwgdGhhdCBpcywgZGVsYXRlLCB0aGFuIGluc2VydAorICAgICAgICBkIDogZGVsZXRlIGxpbmUocykKKyAgICAgICAgRSA8ZmlsZW5hbWU+IDogIGRpc2NhcmQgY3VycmVudCBidWZmZXIgYW5kIGVkaXQgdGhlIGZpbGUgbmFtZWQKKyAgICAgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT4KKyAgICAgICAgZSA8ZmlsZW5hbWU+IDogbGlrZSBlLCBidXQgcmVmdXNlIGlmIGZpbGUgaGFzIGJlZW4gY2hhbmdlZAorICAgICAgICBmIDogcHJpbnQgY3VycmVudCBmaWxlbmFtZQorICAgICAgICBmIDxmaWxlbmFtZT4gOiBzZXQgZmlsZW5hbWUKKyAgICAgICAgaSA6IGluc2VydCBsaW5lKHMpCisgICAgICAgIGogOiB3aXRoIG5vIG9yIG9uZSBhcmd1bWVudDogam9pbiBsaW5lIHdpdGggZm9sbG93aW5nIGxpbmUKKyAgICAgICAgaiA6IHdpdGggdHdvIGFyZ3VtZW50cyA6IGpvaW4gbGluZSByYW5nZSBnaXZlbgorICAgICAgICBrPGxldHRlcj4gOiBzZXQgbWFyayA8bGV0dGVyPiB0byBjdXJyZW50IGxpbmUuIDxsZXR0ZXI+IG11c3QKKyAgICAgICAgICAgICAgICBiZSBpbiB0aGUgcmFuZ2UgW2Etel0gLiBUaGUgbWFyayBjYW4gYmUgdXNlZAorICAgICAgICAgICAgICAgIHRoZXJlaW5hZnRlciBhcyBhIGxpbmUgYWRkcmVzcywgd2l0aCBhIGxlYWRpbmcgc2xhc2guCisgICAgICAgICAgICAgICAgKGUuZy4ga2EgdG8gc2V0IG1hcmsgYSwgL2FwIHRvIHByaW50IG1hcmtlZCBsaW5lKQorICAgICAgICBsIDogcHJpbnQgbGluZSB3aXRoIGNvbnRyb2wgY2hhcmFjdGVycworICAgICAgICA8c3RhcnQ+LDxlbmQ+bTxkZXN0PiA6IG1vdmUgYmxvY2sgKGxpbmVzIGZyb20gc3RhcnQgdG8gZW5kKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBiZWhpbmQgbGluZSAjIGRlc3QKKyAgICAgICAgPGxpbmU+bTxkZXN0PiAgICAgICAgOiBtb3ZlIHNpbmdsZSBsaW5lCisgICAgICAgIG08ZGVzdD4gICAgICAgICAgICAgICAgOiBtb3ZlIGN1cnJlbnQgbGluZQorICAgICAgICBNIDogcmVtb3ZlIEN0cmwtTSAoQ1IpIGNoYXJhY3RlcnMuCisgICAgICAgIHAgOiBwcmludCBsaW5lCisgICAgICAgIFAgOiBwcmludCBsaW5lCisgICAgICAgIFEgOiBxdWl0LCBkaXNjYXJkaW5nIHRoZSBidWZmZXIKKyAgICAgICAgcSA6IHRoZSBzYW1lLCBidXQgcmVmdXNlIGlmIGZpbGUgaGFzIGJlZW4gY2hhbmdlZCBzaW5jZSBsYXN0CisgICAgICAgICAgICB3cml0ZQorICAgICAgICByIDogcmVhZCBpbiBmaWxlLiBJZiBubyBhZHJlc3MgaXMgZ2l2ZW4sIGF0IHRoZSBsYXN0IGluc2VydAorICAgICAgICAgICAgcG9zaXRpb24sIGlmIGFsc28gbm90aGluZyB3YXMgaW5zZXJ0ZWQsIGF0IHRoZSBlbmQgb2YgdGhlCisgICAgICAgICAgICBidWZmZXIKKyAgICAgICAgcyA6IHN1YnN0aXR1dGUKKyAgICAgICAgPHN0YXJ0Piw8ZW5kPnQ8ZGVzdD4gICAgICAgIDogY29weSBibG9jayAoIGxpbmVzIGZyb20gc3RhcnQgdG8gZW5kICkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBiZWhpbmQgbGluZSBwb3NpdGlvbiBkZXN0CisgICAgICAgIDxsaW5lPnQ8ZGVzdD4gICAgICAgICAgICAgICAgOiBjb3B5IHNpbmdsZSBsaW5lCisgICAgICAgIHQ8ZGVzdD4gICAgICAgICAgICAgICAgICAgICAgICA6IGNvcHkgY3VycmVudCBsaW5lCisgICAgICAgIHcgOiB3cml0ZSBmaWxlCisgICAgICAgIFcgOiB3cml0ZSBmaWxlCisgICAgICAgIHggOiB3cml0ZSBmaWxlIGlmIGJ1ZmZlciBoYXMgYmVlbiBjaGFuZ2VkIHNpbmNlIGxhc3QgY2hhbmdlLAorICAgICAgICAgICAgdGhlbiBxdWl0CisgICAgICAgIHogOiBzaG93IGFwcHJveC4gYSBzY3JlZW5mdWwgb2YgbGluZXMKKworU0VFIEFMU08KKyAgICAgICAgZWQ2KExQQykKZGlmZiAtLWdpdCBhL2RvYy9MUEMvZWQ2IGIvZG9jL0xQQy9lZDYKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOGI4MGE3MAotLS0gL2Rldi9udWxsCisrKyBiL2RvYy9MUEMvZWQ2CkBAIC0wLDAgKzEsMzIgQEAKK05BTUUKKyAgICAgICAgZWQ2CisKK0RFU0NSSVBUSU9OCisgICAgICAgIFRoaXMgaXMgdGhlIGxpc3Qgb2YgZXh0ZW5kZWQgZWQgY29tbWFuZHMgdGhhdCBYaW8gdW5lYXJ0aGVkCisgICAgICAgIHNvbWV3aGVyZSwgdGhhbmtzIQorCisgICAgICAgIGEpIG5ldmVyIHVzZSAxLCRwIHRvIHByaW50IG91dCBhbiBlZGl0ZmlsZSwgYmVjYXVzZSB5b3Ugd2lsbAorICAgICAgICAgIGJlIHRocm93biBvdXQgJ2NhdXNlIG9mIHRvbyBtdWNoIHRleHQgdHJhbnNmZXJlZWQgdG8geW91LgorCisgICAgICAgIGIpICQ6IGp1bXAgdG8gZW5kIG9mIGZpbGUuCisKKyAgICAgICAgYykgP2FueXRoaW5nPyBhbmQgPz8gOiBzZWFyY2ggZnJvbSBib3R0b20gdG8gdXAuIChsaWtlICcvJworICAgICAgICAgICBmcm9tIGJlZ2lubmluZyB0byBlbmQgb2YgZmlsZS4gKGFsc28gd2l0aCBzdWJzdGl0dXRpb25zLAorICAgICAgICAgICB0cnkgb3V0Li4pCisKKyAgICAgICAgZCkgKCBnL3h4eC9wIHNlYXJjaCBnbG9iYWwgeHh4IGFuZCBwcmludCBjb3JyZXNwb25kaW5nIGxpbmVzLAorICAgICAgICAgICAveHh4L3MvbmV3L29sZC9wIDogc2VhcmNoIHh4eCwgc3Vic3RpdHV0ZSBuZXcgdG8gb2xkIGluIHRoaXMKKyAgICAgICAgICAgbGluZSBhbmQgcHJpbnQgb3V0LiAodHJ5IHRoaXMgY29uY2F0ZW5hdGlvbnMgd2l0aCBvdGhlcgorICAgICAgICAgICBjb21tYW5kcykKKworICAgICAgICBlKSAxLG5teCAoIHNlZSBlZDUgKSAsIGJ1dCBhbHNvOiAxLG50eCA6IGRvbid0IG1vdmUgdGhlIGxpbmVzLAorICAgICAgICAgICBidXQgbWFrZSBhIGNvcHkgb2YgdGhlbS4KKworICAgICAgICBmKSB4LHkgdyBuYW1lIDogc2F2ZSBsaW5lcyB4IHRvIHkgdG8gZmlsZSBuYW1lIChpZiB5b3UgZG9uJ3QKKyAgICAgICAgICAga25vdyB0aGUgbGluZSBudW1iZXJzIDogJz0nIGN1cnJlbnQgbGluZSBudW1iZXIpCisKKyAgICAgICAgZykgcy8kL3RleHQvcCA6IGFwcGVuZCB0ZXh0IHRvIHRoZSBlbmQgb2YgY3VycmVudCBMSU5FIGFuZAorICAgICAgICAgICBwcmludCBsaW5lCisKKyAgICAgICAgaCkgcy9eL3RleHQvcCA6IGluc2VydCB0ZXh0IGF0IGJlZ2lubmluZyBvZyBjdXJyZW50IExJTkUgYW5kCisgICAgICAgICAgIHByaW50IGxpbmUKZGlmZiAtLWdpdCBhL2RvYy9MUEMvZWZ1bnMgYi9kb2MvTFBDL2VmdW5zCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmNhNWIyMjQKLS0tIC9kZXYvbnVsbAorKysgYi9kb2MvTFBDL2VmdW5zCkBAIC0wLDAgKzEsMTYgQEAKK0NPTkNFUFQKKyAgICAgICAgZWZ1bnMKKworREVTQ1JJUFRJT04KKyAgICAgICAgRWZ1bnMgYXJlICJzeXN0ZW0gY2FsbHMiIGluIHRoZSBMUEMgZHJpdmVyLCB0aGUgQyBwcm9ncmFtCisgICAgICAgIHdoaWNoIGNvbXBpbGVzIGFuZCBleGVjdXRlcyB0aGUgTFBDIHByb2dyYW1zIG9mIHRoZSBtdWRsaWIuCisgICAgICAgIFRoZXNlIGFyZSBoYXJkY29kZWQgZnVuY3Rpb25zIHdoaWNoIHBlcmZvcm0gYmFzaWMgdGFza3Mgd2hpY2gKKyAgICAgICAgd291bGQgYmUgaW5lZmZlY3RpdmUgb3IgaW1wb3NzaWJsZSB0byBiZSBpbXBsZW1lbnRlZCBpbiB0aGUKKyAgICAgICAgbXVkbGliLgorCisgICAgICAgIFRoZXJlIGFyZSBlZnVucyBmb3IgYWNjZXNzaW5nIHRoZSB1bmRlcmx5aW5nIGZpbGVzeXN0ZW0sIGZvcgorICAgICAgICBjcmVhdGluZywgbW92aW5nIGFuZCBkZXN0cnVjdGluZyBvYmplY3RzLCBmb3Igd3JpdGluZworICAgICAgICBtZXNzYWdlcyB0byB1c2VycywgZm9yIG1hbmlwdWxhdGlvbiBvZiBMUEMgZGF0YSB0eXBlcy4KKworU0VFIEFMU08KKyAgICAgICAgZWZ1bihFKSwgbGZ1bnMoTFBDKSwgYXBwbGllZChBKSwgbWFzdGVyKE0pCmRpZmYgLS1naXQgYS9kb2MvTFBDL2VzY2FwZSBiL2RvYy9MUEMvZXNjYXBlCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjg1MTg3NDkKLS0tIC9kZXYvbnVsbAorKysgYi9kb2MvTFBDL2VzY2FwZQpAQCAtMCwwICsxLDgxIEBACitDT05DRVBUCisgICAgICAgIGNoYXJhY3RlciBlc2NhcGUgY29kZXMKKworREVTQ1JJUFRJT04KKwlDaGFyYWN0ZXIgZXNjYXBlIGNvZGVzIGFyZSB1c2VkIHRvIHJlcHJlc2VudCBzb21lIGNvbW1vbgorCXNwZWNpYWwgY2hhcmFjdGVycyB0aGF0IHdvdWxkIGJlIGF3a3dhcmQgb3IgaW1wb3NzaWJsZSB0bworCWVudGVyIGluIHRoZSBzb3VyY2UgcHJvZ3JhbSBkaXJlY3RseS4gVGhlIGVzY2FwZSBjaGFyYWN0ZXJzCisJY29tZSBpbiB0d28gdmFyaWV0aWVzOiAnY2hhcmFjdGVyIGVzY2FwZXMnLCB3aGljaCBjYW4gYmUKKwl1c2VkIHRvIHJlcHJlc2VudCBzb21lIHBhcnRpY3VsYXIgZm9ybWF0dGluZyBhbmQgc3BlY2lhbAorCWNoYXJhY3RlcnMsIGFuZCAnbnVtZXJpYyBlc2NhcGVzJywgd2hpY2ggYWxsb3cgYSBjaGFyYWN0ZXIgdG8KKwliZSBzcGVjaWZpZWQgYnkgaXRzIG51bWVyaWMgZW5jb2RpbmcuCisKKwlFc2NhcGVzIGJlZ2luIGFsd2F5cyB3aXRoIGEgYmFja3NsYXNoICdcJy4gSWYgdGhlIGZvbGxvd2luZworCWNoYXJhY3RlcnMgY291bGQgbm90IGJlIHRyZWF0ZWQgYXMgYSB2YWxpZCBlc2NhcGUgdGhlIGJhY2tzbGFzaAorCWlzIG1lcmVseSBpZ25vcmVkLgorCisJVGhlIGZvbGxvd2luZyBjaGFyYWN0ZXIgZXNjYXBlcyBhcmUgYXZhaWxhYmxlIGluIExQQyAodGhlIGNvZGUKKwltYXkgZGlmZmVyIGZyb20gcGxhdGZvcm0gdG8gcGxhdGZvcm0pOgorCisJICBcYSAgICBDb2RlIDAwNyAgICBCZWxsCisgICAgICAgICAgXGIgICAgQ29kZSAwMDggICAgQmFja3NwYWNlCisgICAgICAgICAgXGUgICAgQ29kZSAwMjcgICAgRXNjYXBlCisJICBcZiAgICBDb2RlIDAxMiAgICBGb3JtZmVlZAorCSAgXG4gICAgQ29kZSAwMTAgICAgTmV3bGluZQorCSAgXHIgICAgQ29kZSAwMTMgICAgQ2FycmlhZ2UtUmV0dXJuCisJICBcdCAgICBDb2RlIDAwOSAgICBUYWJ1bGF0b3IKKwkgIFxcICAgIENvZGUgMDkyICAgIEJhY2tzbGFzaCBpdHNlbGYKKwkgIFwnICAgIENvZGUgMDM5ICAgIFNpbmdsZSBxdW90ZQorCSAgXCIgICAgQ29kZSAwMzQgICAgRG91YmxlIHF1b3RlCisKKwlUaGUgc2luZ2xlIHF1b3RlIG1heSBhcHBlYXIgd2l0aG91dCBwcmVjZWRpbmcgYmFja3NsYXNoIGluIGNoYXJhY3RlcgorCWNvbnN0YW50cywgYW5kIHRoZSBkb3VibGUgcXVvdGUgbWF5IGFwcGVhciB3aXRob3V0IGEgYmFja3NsYXNoIGluCisJc3RyaW5nIGNvbnN0YW50cy4KKworCVRoZSBudW1lcmljIGVzY2FwZXMgY291bGQgYmUgdXNlZCB0byBleHByZXNzIGEgY2hhcmFjdGVyIGRpcmVjdGx5CisJYnkgaXRzIGNvZGUgaW4gYmluYXJ5LCBvY3RhbCwgZGVjaW1hbCBvciBoZXhhZGVjaW1hbCBub3RhdGlvbi4KKwkKKwkgIFwwYiAgIEJlZ2lubmluZyBvZiBiaW5hcnkgbm90YXRpb24KKwkgIFwwbyAgIEJlZ2lubmluZyBvZiBvY3RhbCBub3RhdGlvbgorCSAgXDB4ICAgQmVnaW5uaW5nIG9mIGhleGFkZWNpbWFsIG5vdGF0aW9uCisJICBceCAgICBCZWdpbm5pbmcgb2YgaGV4YWRlY2ltYWwgbm90YXRpb24KKworCUEgYmFja3NsYXNoIGZvbGxvd2VkIGJ5IGEgZGlnaXQgKFswLTldKSB3aGljaCBkb2VzIG5vdCBtYXAgdG8gb25lCisJb2YgdGhlIGFib3ZlIHN0YXJ0cyBhbiBlc2NhcGUgaW4gZGVjaW1hbCBub3RhdGlvbi4KKworCUEgbnVtZXJpYyBlc2NhcGUgdGVybWluYXRlcyB3aGVuIE4gZGlnaXRzIGhhdmUgYmVlbiB1c2VkIHVwIG9yCisJd2hlbiB0aGUgZmlyc3QgY2hhcmFjdGVyIHRoYXQgaXMgbm90IGEgdmFsaWQgZGlnaXQgaW4gdGhhdAorCW5vdGF0aW9uIGlzIGVuY291bnRlcmVkLiBOIGlzIDIgZm9yIGhleGFkZXhpbWFscywgMyBmb3IKKwlkZWNpbWFscyBhbmQgb2N0YWxzIGFuZCA4IGZvciBiaW5hcnlzLgorCisJSWYgdGhlIHNwZWNpZmllZCBjb2RlIGlzIGdyZWF0ZXIgdGhhbiAyNTUgYSB3YXJuaW5nIGlzIGlzc3VlZCBhbmQKKwl0aGUgdmFsdWUgbW9kdWxvIDI1NiBpcyB1c2VkLgorCitFWEFNUExFUworCVB1dCBhIG5ld2xpbmUgYXQgdGhlIGVuZCBvZiB1c2VyIG91dHB1dAorCSAgIllvdSBlbnRlci5cbiIKKworCUFsZXJ0IHRoZSB1c2VyCisJICAiQmVlZXAuXGEgV2FrZSB1cFxuIgorCisJUHV0IGEgZG91YmxlIHF1b3RlIGluIGEgc3RyaW5nCisJICAiWW91IHNheSBcImhlbGxvXCJcbiIKKworCVdyaXRlIHRoZSBsaW5lIGZyb20gYWJvdmUKKwkgICJcIllvdSBzYXkgXFxcImhlbGxvXFxcIlxcblwiIgorCisJUHV0IGEgc2luZ2xlIHF1b3RlIGluIGEgc3RyaW5nCisJICAiWW91IHNheSAnaGVsbG8nXG4iCisKKwlTb21lIGZvcm1zIHRvIHdyaXRlICJhYmNkZSIKKwkgICJhYmNkZSIKKwkgICJhYlw5OWRlIiAgICAgICAgICAgICAgKHdpdGggYydzIGNvZGUgYmVpbmcgOTkpCisJICAiYWJcMDk5ZGUiCisJICAiYWJceDYzZGUiICAgICAgICAgICAgICg5OSA9IDB4NjMpCisJICAiYWJcMHg2M2RlIgorCisJVGhlIGZvbGxvd2luZyBzdHJpbmcgY29uc2lzdHMgb2YgdHdvIGNoYXJhY3RlcnMKKwkgICJcMDExMSIgICAgICAgICAgICAgICAgKFwwMTEgYW5kIDEpCisKKwlUaGUgZm9sbG93aW5nIHN0cmluZyBjb25zaXN0cyBvZiB0aHJlZSBjaGFyYWN0ZXJzCisJICAiXDBvMDkwIiAgICAgICAgICAgICAgIChcMDAwIGFuZCA5IGFuZCAwKQpkaWZmIC0tZ2l0IGEvZG9jL0xQQy9mb3IgYi9kb2MvTFBDL2ZvcgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5lN2E5ODhkCi0tLSAvZGV2L251bGwKKysrIGIvZG9jL0xQQy9mb3IKQEAgLTAsMCArMSwzNiBAQAorTkFNRQorICAgICAgICBmb3IKKworU1lOVEFYCisgICAgICAgIGZvcihpbml0OyBleHByMjsgZXhwcjMpIHN0YXRlbWVudDsKKworREVTQ1JJUFRJT04KKyAgICAgICAgRXhlY3V0ZSA8aW5pdD4gb25jZS4gVGhlbiwgd2hpbGUgPGV4cHIyPiByZXR1cm5zIGEgbm9uLXplcm8KKyAgICAgICAgdmFsdWUsIGV4ZWN1dGUgPHN0YXRlbWVudD4uIEV2ZXJ5IHRpbWUgPHN0YXRlbWVudD4gaGFzIGJlZW4KKyAgICAgICAgZXhlY3V0ZWQsIG9yIGEgJ2NvbnRpbnVlJyBzdGF0ZW1lbnQgaGFzIGJlZW4gZXhlY3V0ZWQsIGV4ZWN1dGUKKyAgICAgICAgPGV4cHIzPiBiZWZvcmUgbmV4dCBsb29wLgorCisgICAgICAgIDxpbml0PiBpcyB1c3VhbGx5IGEgc2VyaWVzIG9mIG9uZSBvciBtb3JlIGV4cHJlc3Npb25zIChyZW1lbWJlcgorICAgICAgICB0aGF0IGFzc2lnbm1lbnRzIGFyZSBleHByZXNzaW9ucywgdG9vKSwgc2VwYXJhdGVkIGJ5IGNvbW1hcy4KKyAgICAgICAgQWRkaXRpb25hbGx5IGl0IGlzIGFsc28gYWxsb3dlZCB0byBkZWZpbmUgbmV3IGxvY2FsIHZhcmlhYmxlcworICAgICAgICBoZXJlIGFuZCBhc3NpZ24gdGhlbSBhbiBpbml0aWFsIHZhbHVlLiBUaGUgc2NvcGUgb2Ygc3VjaCB2YXJpYWJsZXMKKyAgICAgICAgaXMgdGhlIHdob2xlIGZvciBzdGF0ZW1lbnQuCisKKyAgICAgICAgRXhhbXBsZXMgZm9yIGxlZ2FsIDxpbml0PiBleHByZXNzaW9ucyBhcmU6CisKKyAgICAgICAgICAgZm9yIChpID0gMDsgLi4uCisgICAgICAgICAgIGZvciAoaSA9IDAsIGogPSAwOyAuLi4KKyAgICAgICAgICAgZm9yIChpID0gMCwgaW50IGogPSBpOyAuLi4KKyAgICAgICAgICAgZm9yIChpbnQgaiA9IDQ7IC4uLgorCisgICAgICAgIElsbGVnYWwgPGluaXQ+IGV4cHJlc3Npb25zIGFyZToKKworICAgICAgICAgICBmb3IgKGludCBpOyAuLi4gICAgICA6IG5vIHZhbHVlIGFzc2lnbmVkCisgICAgICAgICAgIGZvciAoaW50IGkgKz0gNDsgLi4uIDogb25seSBwbGFpbiBhc3NpZ25tZW50cyBhbGxvd2VkCisKKyAgICAgICAgQSAnYnJlYWsnIGluIHRoZSAnc3RhdGVtZW50JyB3aWxsIHRlcm1pbmF0ZSB0aGUgbG9vcC4gQQorICAgICAgICAnY29udGludWUnIHdpbGwgY29udGludWUgdGhlIGV4ZWN1dGlvbiBmcm9tIHRoZSBiZWdpbm5pbmcgb2YKKyAgICAgICAgdGhlIGxvb3AuCisKK1NFRSBBTFNPCisgICAgZm9yZWFjaChMUEMpLCBpZihMUEMpLCBkby13aGlsZShMUEMpLCB3aGlsZShMUEMpLCBzd2l0Y2goTFBDKQpkaWZmIC0tZ2l0IGEvZG9jL0xQQy9mb3JlYWNoIGIvZG9jL0xQQy9mb3JlYWNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjdlNjA2MGIKLS0tIC9kZXYvbnVsbAorKysgYi9kb2MvTFBDL2ZvcmVhY2gKQEAgLTAsMCArMSwxMzIgQEAKK05BTUUKKyAgICAgICAgZm9yZWFjaAorCitTWU5UQVgKKyAgICAgICAgZm9yZWFjaCAoPHZhcj4gOiA8ZXhwcj4pIDxzdGF0ZW1lbnQ+OworICAgICAgICBmb3JlYWNoICg8dmFyPiwgPHZhcjI+LCAuLi4gLDx2YXJOPiA6IDxleHByPikgPHN0YXRlbWVudD47CisKKyAgICAgICAgZm9yZWFjaCAoPHZhcj4gOiA8ZXhwcjE+IC4uIDxleHByMj4pIDxzdGF0ZW1lbnQ+OworICAgICAgICBmb3JlYWNoICg8dmFyPiwgPHZhcjI+LCAuLi4gLDx2YXJOPiA6IDxleHByMT4uLjxleHByMj4gKSA8c3RhdGVtZW50PjsKKworICAgICAgICAvKiBNdWRPUyBjb21wYXRpYmlsaXR5IG9ubHkgLSBub3QgZm9yIG5ldyBjb2RlOiAqLworICAgICAgICBmb3JlYWNoICg8dmFyPiBpbiA8ZXhwcj4pIDxzdGF0ZW1lbnQ+OworICAgICAgICBmb3JlYWNoICg8dmFyPiwgPHZhcjI+LCAuLi4gLDx2YXJOPiBpbiA8ZXhwcj4pIDxzdGF0ZW1lbnQ+OworCitERVNDUklQVElPTgorICAgICAgICBUaGUgaW5zdHJ1Y3Rpb24gZXZhbHVhdGVzIGl0cyByYW5nZSBzcGVjaWZpY2F0aW9uIC0gZWl0aGVyIGEKKyAgICAgICAgc2ltcGxlIDxleHByPiB3aGljaCBjYW4geWllbGQgYW4gYXJyYXksIGEgc3RydWN0LCBhIHN0cmluZywgYQorICAgICAgICBtYXBwaW5nIG9yIGFuIGludGVnZXIsIG9yIGFuIGludGVnZXIgcmFuZ2UgPGV4cHIxPiB0aHJvdWdoCisgICAgICAgIDxleHByMj4gLSBhbmQgZXhlY3V0ZXMgPHN0YXRlbWVudD4gb25jZSBmb3IgZWFjaCB2YWx1ZSBpbiB0aGUKKyAgICAgICAgcmFuZ2UuIFRoZSByZXNwZWN0aXZlIHZhbHVlIGlzIGFzc2lnbmVkIHRvIDx2YXI+IHJpZ2h0IGJlZm9yZQorICAgICAgICA8c3RhdGVtZW50PiBpcyBleGVjdXRlZC4KKworICAgICAgICBBICdicmVhaycgaW4gdGhlIDxzdGF0ZW1lbnQ+IHdpbGwgdGVybWluYXRlIHRoZSBsb29wLiBBCisgICAgICAgICdjb250aW51ZScgd2lsbCBjb250aW51ZSB0aGUgZXhlY3V0aW9uIGZyb20gdGhlIGJlZ2lubmluZyBvZgorICAgICAgICB0aGUgbG9vcC4KKworICAgICAgICBFdmVyeSA8dmFyPiBzcGVjaWZpY2F0aW9uIGNhbiBkZWNsYXJlIGEgbmV3IGxvY2FsIHZhcmlhYmxlLCB3aG9zZQorICAgICAgICBzY29wZSBpcyB0aGUgd2hvbGUgZm9yZWFjaCgpIHN0YXRlbWVudC4KKworCisgICAgICAgIFRoZSBub3JtYWwgZm9ybSAob25lIDxleHByPik6CisKKyAgICAgICAgICAgIDxleHByPiBpcyBldmFsdWF0ZWQgYW5kIGhhcyB0byB5aWVsZCBhbiBhcnJheSwgYSBzdHJ1Y3QsIGEKKyAgICAgICAgICAgIHN0cmluZyBvciBhIG1hcHBpbmcgKG9yIHJlZmVyZW5jZSB0byB0aGUgZm9ybWVyKSwgb3IgYW4KKyAgICAgICAgICAgIGludGVnZXIuCisKKyAgICAgICAgICAgIElmIDxleHByPiBpcyBhIGFycmF5LCBzdHJ1Y3QsIG9yIHN0cmluZywgdGhlIHZhbHVlcyBvZgorICAgICAgICAgICAgPGV4cHI+IChpbiBjYXNlIG9mIHRoZSBzdHJpbmcsIHRoZSBpbnRlZ2VyIHZhbHVlcyBvZiB0aGUKKyAgICAgICAgICAgIGNoYXJhY3RlcnMpIGFyZSB0aGVuIGFzc2lnbmVkIG9uZSBieSBvbmUgaW4gb3JkZXIgb2YKKyAgICAgICAgICAgIG9jY3VyZW5jZSB0byA8dmFyPiwgYW5kIDxzdGF0ZW1lbnQ+IGlzIGV4ZWN1dGVkIGZvciBldmVyeQorICAgICAgICAgICAgYXNzaWdubWVudC4KKworICAgICAgICAgICAgSWYgPGV4cHI+IGlzIGEgbWFwcGluZywgdGhlIGtleXMgYXJlIGFzc2lnbmVkIG9uZSBieSBvbmUKKyAgICAgICAgICAgIHRvIDx2YXI+LCBhbmQgdGhlIHZhbHVlcyBmb3IgZWFjaCBrZXkgYXJlIGFzc2lnbmVkIGluCisgICAgICAgICAgICBvcmRlciB0byA8dmFyMj4uLjx2YXJOPi4gIElmIHRoZXJlIGFyZSBtb3JlIHZhbHVlcyB0aGFuCisgICAgICAgICAgICB2YXJpYWJsZSwgdGhlIGV4dHJhbmVvdXMgdmFsdWVzIGFyZSBpZ25vcmVkLiBEdWUgdG8gdGhlCisgICAgICAgICAgICBuYXR1cmUgb2YgbWFwcGluZ3MsIGEgc3BlY2lmaWMgb3JkZXIgb2YgdGhlIGtleXMgY2FuIG5vdAorICAgICAgICAgICAgYmUgZ3VhcmFudGVlZC4KKworICAgICAgICAgICAgSWYgPGV4cHI+IGV2YWx1YXRlcyB0byBhIHJlZmVyZW5jZSB0byBhbiBhcnJheSwgbWFwcGluZywgb3IKKyAgICAgICAgICAgIHN0cmluZywgdGhlIGxvb3Agd2lsbCBhc3NpZ24gcmVmZXJlbmNlcyB0byB0aGUgdmFsdWVzIGludG8KKyAgICAgICAgICAgIHRoZSB2YXJpYWJsZXMuIFRoaXMgYWxsb3dzIHRoZSBsb29wIGJvZHkgdG8gY2hhbmdlIHRoZSBjb250ZW50cworICAgICAgICAgICAgb2YgdGhlIG9yaWdpbmFsIGRhdGEuCisKKyAgICAgICAgICAgIElmIDxleHByPiBldmFsdXRlcyB0byBhbiBpbnRlZ2VyLCB0aGUgbG9vcCB3aWxsIGNvdW50IHVwIDx2YXI+CisgICAgICAgICAgICBmcm9tIDAgdG8gPGV4cHI+LTEsIGJhc2ljYWxseSBpbXBsZW1lbnRpbmcgYSBjb3VudCBsb29wLgorCisgICAgICAgICAgICBJZiB0aGVyZSBhcmUgbW9yZSB2YXJpYWJsZXMgdGhhbiBuZWNlc3NhcnksIHRoZSB1bm5lZWRlZCBvbmVzCisgICAgICAgICAgICBhcmUgbm90IGNoYW5nZWQuCisKKworICAgICAgICBUaGUgcmFuZ2VkIGZvcm0gKDxleHByMT4gLi4gPGV4cHIyPik6CisKKyAgICAgICAgICAgIDxleHByMT4gYW5kIDxleHByMj4gYXJlIGV2YWx1YXRlZCBhbmQgbXVzdCB5aWVsZCBpbnRlZ2Vycy4KKyAgICAgICAgICAgIFRoZSBsb29wIHdpbGwgY291bnQgdXAgPHZhcj4gZnJvbSA8ZXhwcjE+IHRvIDxleHByMj4sIGJhc2ljYWxseQorICAgICAgICAgICAgaW1wbGVtZW50aW5nIGEgY291bnRlZCBsb29wLgorCisgICAgICAgICAgICBJZiA8ZXhwcjE+IGlzIGxlc3MgdGhhbiA8ZXhwcjI+LCB0aGUgbG9vcCB3aWxsIHRlcm1pbmF0ZSBhdCBvbmNlLgorCisgICAgICAgICAgICBJZiB0aGVyZSBhcmUgbW9yZSB0aGFuIHZhcmlhYmxlLCB0aGUgdW5uZWVkZWQgb25lcyBhcmUgbm90CisgICAgICAgICAgICBjaGFuZ2VkLgorCisKKworICAgICAgICBXSEFUIEhBUFBFTlMgSUYgPGV4cHI+IElTIENIQU5HRUQgSU4gVEhFIExPT1A/CisKKyAgICAgICAgSWYgPGV4cHI+IHlpZWxkcyBhbiBhcnJheSBvciBzdHJ1Y3Q6CisgICAgICAgICAtIGFzc2lnbm1lbnRzIHRvIHNpbmdsZSBlbGVtZW50cyBvciB0byBhcnJheSByYW5nZXMgZWZmZWN0CisgICAgICAgICAgIHRoZSB2YWx1ZXMgYXNzaWduZWQgdG8gdGhlIHZhcmlhYmxlOgorICAgICAgICAgICAgIGEgPSAoezEsIDIsIDN9KQorICAgICAgICAgICAgIGZvcmVhY2goeCA6IGEpIHsgYVsxLi4yXSA9ICh7NCwgNX0pOyB3cml0ZSh4KyIgIik7IH0KKyAgICAgICAgICAgd2lsbCB3cml0ZSAoIjEgNCA1ICIpLgorICAgICAgICAgLSBvcGVyYXRpb25zIHdoaWNoIGltcGxpY2l0ZWx5IGNvcHkgdGhlIGFycmF5IG9yIHN0cnVjdCAodGhpcworICAgICAgICAgICBpbmNsdWRlcyByYW5nZSBhc3NpZ25tZW50cyB3aGljaCBjaGFuZ2UgdGhlIHNpemUpIGRvbid0CisgICAgICAgICAgIGhhdmUgYW4gZWZmZWN0IG9uIHRoZSBsb29wLgorCisgICAgICAgIElmIDxleHByPiB5aWVsZHMgYSBtYXBwaW5nLCB0aGUgbG9vcCB3aWxsIHJ1biBvdmVyIHRoZSBpbmRpY2VzCisgICAgICAgIHRoZSBtYXBwaW5nIGhhZCBhdCB0aGUgYmVnaW4gb2YgdGhlIGxvb3AuIERlbGV0ZWQgaW5kaWNlcyBhcmUgc2lsZW50bHkKKyAgICAgICAgc2tpcHBlZCwgbmV3IGluZGljZXMgaWdub3JlZCwgYnV0IGNoYW5nZXMgb2YgdGhlIGRhdGEgb2YgZXhpc3RpbmcKKyAgICAgICAgaW5kaWNlcyBhcmUgYWNrbm93bGVkZ2VkLgorCisgICAgICAgIElmIDxleHByPiB5aWVsZHMgYSBzdHJpbmcsIHRoZSB2YWx1ZSB1c2VkIGF0IHRoZSBzdGFydCBvZiB0aGUgbG9vcAorICAgICAgICByZW1haW5zLgorCisKK1dBUk5JTkcKKyAgICAgICAgVGhlIGFkZGl0aW9uYWwgc3ludGF4IGZvcm1zIHVzaW5nICJpbiIgYXMga2V5d29yZCBhcmUgbWVhbnQKKyAgICAgICAgdG8gbWFrZSByZS1lbmdpbmVlcmluZyBvZiBNdWRPUyBvYmplY3RzIGVhc2llci4gRG8gbm90IHVzZSB0aGVtCisgICAgICAgIGZvciBuZXdseSB3cml0dGVuIGNvZGUsIGFzIHRoZXkgbWF5IG5vdCBiZSBhdmFpbGFibGUgaW4gZnV0dXJlLgorCisKK0VYQU1QTEVTCisgICAgICAgIC8vIENhbGwgcXVpdCgpIGluIGFsbCBpbnRlcmFjdGl2ZSB1c2VycworICAgICAgICBmb3JlYWNoKG8gOiB1c2VycygpKSBvLT5xdWl0KCk7CisgICAgICAgIGZvcmVhY2gob2JqZWN0IG8gOiB1c2VycygpKSBvLT5xdWl0KCk7CisKKyAgICAgICAgLy8gUHJpbnQgdGhlIGNvbnRlbnRzIG9mIGEgbWFwcGluZyA8bT4KKyAgICAgICAgZm9yZWFjaChrZXksIHZhbHVlIDogbSkgcHJpbnRmKCIlTzolT1xuIiwga2V5LCB2YWx1ZSk7CisgICAgICAgIGZvcmVhY2gobWl4ZWQga2V5LCBtaXhlZCB2YWx1ZSA6IG0pIHByaW50ZigiJU86JU9cbiIsIGtleSwgdmFsdWUpOworCisgICAgICAgIC8vIERvbid0IGNoYW5nZSB0aGUgY29udGVudCBvZiBhIHN0cmluZzogcyByZW1haW5zICJGT09CQVIiLgorICAgICAgICBzID0gIkZPT0JBUiI7CisgICAgICAgIGZvcmVhY2goaSA6IHMpIGkgKz0gMzI7CisKKyAgICAgICAgLy8gRG8gY2hhbmdlIHRoZSBjb250ZW50IG9mIGEgc3RyaW5nOiBzIHdpbGwgYmVjb21lICJmb29iYXIiLgorICAgICAgICBzID0gIkZPT0JBUiI7CisgICAgICAgIGZvcmVhY2goaSA6ICZzKSBpICs9IDMyOworCisgICAgICAgIC8vIENvdW50IGZyb20gMCB0byA1CisgICAgICAgIGZvcmVhY2goaSA6IDYpIHByaW50ZigiJWRcbiIsIGkpOworCisgICAgICAgIC8vIENvdW50IGZyb20gMSB0byA2CisgICAgICAgIGZvcmVhY2goaSA6IDEgLi4gNikgcHJpbnRmKCIlZFxuIiwgaSk7CisKK0hJU1RPUlkKKyAgICAgICAgTERNdWQgMy4zLjQ0IGludHJvZHVjZWQgdGhlIHVzZSBvZiByZWZlcmVuY2VzLCB0aGUgbG9vcCBvdmVyCisgICAgICAgICAgYW4gaW50ZWdlciBleHByZXNzaW9uLCBhbmQgdGhlIGxvb3Agb3ZlciBhbiBpbnRlZ2VyIHJhbmdlLgorICAgICAgICBMRE11ZCAzLjMuMjY2IGFkZGVkIHN1cHBvcnQgZm9yIHN0cnVjdHMuCisKKworU0VFIEFMU08KKyAgICAgICAgZm9yKExQQykKZGlmZiAtLWdpdCBhL2RvYy9MUEMvZnVuY3Rpb25zIGIvZG9jL0xQQy9mdW5jdGlvbnMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNTBjMzlhMAotLS0gL2Rldi9udWxsCisrKyBiL2RvYy9MUEMvZnVuY3Rpb25zCkBAIC0wLDAgKzEsMTc0IEBACitDT05DRVBUCisgICAgICAgIGZ1bmN0aW9ucworCitERVNDUklQVElPTgorICAgICAgICBGdW5jdGlvbnMgYXJlIG5hbWVkIGJsb2NrcyBvZiBjb2RlIHdoaWNoIGFyZSBiZSBjYWxsZWQgd2l0aAorICAgICAgICBhIG51bWJlciBvZiBhcmd1bWVudCB2YWx1ZXMsIGFuZCB3aGljaCByZXR1cm4gYSByZXN1bHQgdmFsdWUKKyAgICAgICAgdG8gdGhlIGNhbGxlci4KKworICAgICAgICBGdW5jdGlvbnMgYXJlIGRlZmluZWQgaW4gYW4gb2JqZWN0IGFuZCBhcmUgYWxzbyBrbm93biBhcworICAgICAgICAibG9jYWwgZnVucyIgb3Igc2hvcnQgImxmdW5zIi4KKworCisgICAgICAgIERFRklOSU5HIEEgRlVOQ1RJT04KKworICAgICAgICBBIGZ1bmN0aW9uIGRlZmluaXRpb24gdGFrZXMgdGhlIGZvcm0KKworICAgICAgICAgIDxtb2RpZmllcnM+IDx0eXBlPiBuYW1lICggPGFyZ3VtZW50cz4gKSB7CisgICAgICAgICAgICAgc3RhdGVtZW50cy4uLgorICAgICAgICAgIH0KKworICAgICAgICBUaGUgcGFydHMgaW4gZGV0YWlsOgorICAgICAgICAgIC0gPG1vZGlmaWVycz4gY2FuIGJlIGFueSBvbmUgb2YgInN0YXRpYyIsICJwcml2YXRlIiwgInB1YmxpYyIKKyAgICAgICAgICAgICAgYW5kICJwcm90ZWN0ZWQiIChzZWUgbW9kaWZpZXJzKExQQykpLCBvcHRpb25hbGx5IGNvbWJpbmVkCisgICAgICAgICAgICAgIHdpdGggInZhcmFyZ3MiIChzZWUgdmFyYXJncyhMUEMpKSBhbmQvb3IgIm5vbWFzayIuCisgICAgICAgICAgICAgIElmIG5vdCBzcGVjaWZpZWQsIHRoZSBmdW5jdGlvbiBiZWhhdmVzIGFzIGlmIGl0IHdhcworICAgICAgICAgICAgICBzcGVjaWZpZWQgYXMgInB1YmxpYyIsIGJ1dCB0aGlzIHZpc2liaWxpdHkgY2FuIGJlIHJlc3RyaWN0ZWQKKyAgICAgICAgICAgICAgaW4gZGVyaXZlZCBvYmplY3QgdGhyb3VnaCBub24tcHVibGljIGluaGVyaXRhbmNlLgorICAgICAgICAgIC0gPHR5cGU+IGlzIHRoZSB0eXBlIG9mIHRoZSByZXN1bHQgcmV0dXJuZWQgYnkgdGhlIGZ1bmN0aW9uLgorICAgICAgICAgICAgICBJZiBzcGVjaWZpZWQgYXMgInZvaWQiLCB0aGUgZnVuY3Rpb24gaXMgY29tcGlsZWQgdG8gcmV0dXJuCisgICAgICAgICAgICAgIHRoZSB2YWx1ZSAwIHVuZGVyIGFsbCBjaXJjdW1zdGFuY2VzLiBJZiBub3Qgc3BlY2lmaWVkLCB0aGUKKyAgICAgICAgICAgICAgdHlwZSBpcyBhc3N1bWVkIHRvIGJlICJtaXhlZCIsIGZ1cnRoZXJtb3JlIHR5cGVjaGVja2luZyBpcworICAgICAgICAgICAgICBkaXNhYmxlZCBmb3IgdGhpcyBmdW5jdGlvbi4KKyAgICAgICAgICAtIG5hbWUgaXMgdGhlIG5hbWUgb2YgdGhlIGZ1bmN0aW9uLCBlLmcuICJzaG9ydCIsIG9yICJOaWNlX1RyeSIsCisgICAgICAgICAgICAgIHVuZGVyIHdoaWNoIGl0IGlzIG1hZGUga25vd24uCisgICAgICAgICAgLSA8YXJndW1lbnRzPiBpcyBhIGxpc3Qgb2YgdmFyaWFibGUgZGVmaW5pdGlvbnMgaW4gdGhlCisgICAgICAgICAgICAgIG5vcm1hbCAnPHR5cGU+IDxuYW1lPicgc3R5bGUsIHNlcGFyYXRlZCBieSBjb21tYS4KKyAgICAgICAgICAgICAgRXhhbXBsZXM6ICgpIDogbm8gYXJndW1lbnQgdGFrZW4KKyAgICAgICAgICAgICAgICAgICAgICAgIChpbnQgYSkgOiB0YWtlcyBvbiBpbnRlZ2VyIGFyZ3VtZW50CisgICAgICAgICAgICAgICAgICAgICAgICAobWl4ZWQgYSwgb2JqZWN0ICpiKTogdGFrZXMgdHdvIGFyZ3VtZW50cywgb25lCisgICAgICAgICAgICAgICAgICAgICAgICAgICBhcmJpdHJhcnkgdHlwZSwgb25lIGFycmF5IG9mIG9iamVjdHMuCisgICAgICAgICAgLSB7IHN0YXRlbWVudHMuLi4gfSBkZWZpbmVzIHRoZSBjb2RlIGZvciB0aGlzIGZ1bmN0aW9uLiBUaGlzCisgICAgICAgICAgICAgIGlzIGEgbm9ybWFsIGJsb2NrIChzZWUgYmxvY2soTFBDKSkgYW5kIGFzIHN1Y2ggY2FuIGRlZmluZQorICAgICAgICAgICAgICBpdHMgb3duIGxvY2FsIHZhcmlhYmxlcy4KKworCisgICAgICAgIERFQ0xBUklORyBBIEZVTkNUSU9OCisKKyAgICAgICAgQSBmdW5jdGlvbiBkZWNsYXJhdGlvbiBtYWtlcyB0aGUgbmFtZSBhbmQgdHlwZSBvZiBhIGZ1bmN0aW9uIGtub3duCisgICAgICAgIHRvIHRoZSBjb21waWxlciB3aXRoIHRoZSBhc3NlcnRpb24gdGhhdCB0aGUgY29kZSBmb3IgdGhpcyBmdW5jdGlvbgorICAgICAgICB3aWxsIGJlIHByb3ZpZGVkICJlbHNld2hlcmUiLgorCisgICAgICAgIFRoZSBmb3JtIGlzOgorCisgICAgICAgICAgPG1vZGlmaWVycz4gPHR5cGU+IG5hbWUgKCA8YXJndW1lbnRzPiApOworCisgICAgICAgIFR5cGljYWwgdXNlcyBhcmU6CisgICAgICAgICAgLSB0byBkZWNsYXJlIGluIGFkdmFuY2UgZnVuY3Rpb25zIHdoaWNoIGFyZSBjYWxsZWQgYmVmb3JlIHRoZXkKKyAgICAgICAgICAgIGNhbiBiZSBkZWZpbmVkOyBmb3IgZXhhbXBsZSBpZiB0aGUgY3JlYXRlKCkgZnVuY3Rpb24gb2YgYW4gb2JqZWN0CisgICAgICAgICAgICBjYWxscyBvdGhlciBmdW5jdGlvbnMgd2hpY2ggYXJlIGRlZmluZWQgYWZ0ZXIgdGhlIGNyZWF0ZSgpLgorICAgICAgICAgIC0gdG8gZGVjbGFyZSBmdW5jdGlvbnMgd2hpY2ggd2lsbCBiZSBwcm92aWRlZCBieSBhbiBpbmhlcml0aW5nCisgICAgICAgICAgICBvYmplY3QuCisKKyAgICAgICAgQ2FsbGluZyBhIGRlY2xhcmVkIGJ1dCB1bmRlZmluZWQgZnVuY3Rpb24gcmVzdWx0cyBpbiBhIHJ1bnRpbWUgZXJyb3IuCisKKworICAgICAgICBDQUxMSU5HIEEgRlVOQ1RJT04KKworICAgICAgICBGdW5jdGlvbnMgaW4gb3RoZXIgb2JqZWN0cyBhcmUgY2FsbGVkIHdpdGggdGhlIGNhbGxfb3RoZXIoKSBlZnVuLAorICAgICAgICB3aGljaCBjYW4gYmUgc2hvcnRlbmVkIHRvICctPic6CisKKyAgICAgICAgICAgb2ItPmZ1bihhLCBiLCBjKQorICAgICAgICAgICBjYWxsX290aGVyKG9iLCAiZnVuIiwgYSwgYiwgYykKKworICAgICAgICBOb3RlOiBTZWUgdGhlIGVudHJ5IEhfREVGQVVMVF9NRVRIT0QgaW4gaG9va3MoQykgZm9yIGEgbW9kaWZpY2F0aW9uCisgICAgICAgIG9mIHRoaXMgYmVoYXZpb3VyLgorCisgICAgICAgIEZ1bmN0aW9ucyBpbiB0aGUgc2FtZSBvYmplY3QgYXJlIGNhbGxlZCBqdXN0IGJ5IHdyaXRpbmcgdGhlaXIgbmFtZSwKKyAgICAgICAgZm9sbG93ZWQgYnkgdGhlIGFyZ3VtZW50cyBpbiBwYXJlbnRoZXNpczoKKworICAgICAgICAgICBzaG9ydCgpCisgICAgICAgICAgIGNvbXB1dGUoYSkKKyAgICAgICAgICAgZG9fdGhhdChhLCAiZm9vIikKKworICAgICAgICBBcnJheSBmdW5jdGlvbiBhcmd1bWVudHMgY2FuIGJlICdmbGF0dGVuZWQnIHdpdGggdGhlICcuLi4nIG9wZXJhdG9yLgorICAgICAgICBGb3IgZXhhbXBsZToKKworICAgICAgICAgICBtaXhlZCAqIG0gPSAoeyAiZm9vIiwgImJhciIgfSk7CisgICAgICAgICAgIGZ1bihtLi4uLCAxKTsKKworICAgICAgICB3aWxsIGJlIGV4ZWN1dGVkIGFzOgorCisgICAgICAgICAgIGZ1bigiZm9vIiwgImJhciIsIDEpOworCisKKyAgICAgICAgSWYgdGhlIG51bWJlciBvZiB2YWx1ZXMgcGFzc2VkIHRvIHRoZSBmdW5jdGlvbiBkb2VzIG5vdCBtYXRjaCB0aGUKKyAgICAgICAgbnVtYmVyIG9mIGV4cGVjdGVkIGFyZ3VtZW50cyAoYW5kIGlmIHR5cGUgY2hlY2tpbmcgaXMgbm90IGVuYWJsZWQpLCB0aGUKKyAgICAgICAgZHJpdmVyIHdpbGwgcGVyZm9ybSB0aGUgbmVjZXNzYXJ5IGFkYXB0aW9uIGF0IGNhbGwgdGltZTogZXhjZXNzCisgICAgICAgIHZhbHVlcyBhcmUgaWdub3JlZCwgbWlzc2luZyB2YWx1ZXMgYXJlIHN1YnN0aXR1dGVkIGJ5IHRoZSBudW1iZXIgMC4KKyAgICAgICAgVGhlIHZhbHVlcyBwYXNzZWQgdG8gdGhlIGNhbGxlZCBmdW5jdGlvbiBhcmUgbWFzc2FnZWQgYnkgdGhlIGRyaXZlcgorICAgICAgICB0byBtYXRjaCB0aGUgYXJndW1lbnQgbGlzdAorCisKKyAgICAgICAgRlVOQ1RJT05TIEFORCBJTkhFUklUQU5DRQorCisgICAgICAgIEEgInB1YmxpYyIgb3IgInByb3RlY3RlZCIgKD09ICJzdGF0aWMiKSBmdW5jdGlvbiBkZWZpbmVkIGluIG9uZQorICAgICAgICBvYmplY3QgaXMgYWxzbyB2aXNpYmxlIGluIGFsbCBpbmhlcml0aW5nIG9iamVjdHMuIFRoZSBleGNlcHRpb24gZnJvbQorICAgICAgICB0aGlzIHJ1bGUgaXMgd2hlbiBhbiBpbmhlcml0aW5nIGNoaWxkIHJlZGVmaW5lcyAoIm92ZXJsb2FkcyIpIHRoZQorICAgICAgICBpbmhlcml0ZWQgZnVuY3Rpb24gd2l0aCBpdHMgb3duLiBXaGVuIGNvbXBpbGluZyB3aXRoIHR5cGUgY2hlY2tpbmcsCisgICAgICAgIHRoZSBhcmd1bWVudCBsaXN0IG9mIHRoZSByZWRlZmluZWQgZnVuY3Rpb24gaGFzIHRvIG1hdGNoIHRoZQorICAgICAgICBvcmlnaW5hbCBvbmUuCisKKyAgICAgICAgV2hlbiBhIGZ1bmN0aW9uIGlzIGNhbGxlZCwgdGhlIGRyaXZlciBsb29rcyBmb3IgdGhlIGZ1bmN0aW9uIGZpcnN0CisgICAgICAgIGluIHRoZSBvYmplY3QgY2FsbGVkLCBhbmQgaWYgbm90IGZvdW5kIHRoZXJlLCB0aGVuIGluIHRoZSBpbmhlcml0ZWQKKyAgICAgICAgb2JqZWN0cy4KKworICAgICAgICBUbyBleHBsaWNpdGVseSBjYWxsIGFuIGluaGVyaXRlZCBmdW5jdGlvbiAodXNlZnVsIHdoZW4gYSByZWRlZmluaW5nCisgICAgICAgIGZ1bmN0aW9ucyB3YW50cyB0byB1c2UgdGhlIG9yaWdpbmFsIG9uZSksIHRoZSAiOjoiIG9wZXJhdG9yIGlzIHVzZWQ6CisKKyAgICAgICAgICAgIDo6Y3JlYXRlKCkKKyAgICAgICAgICAgIDo6Y29tcHV0ZShhKQorCisgICAgICAgIFRoZSBuYW1lZCBmdW5jdGlvbiBpcyBzZWFyY2hlZCBvbmx5IGluIHRoZSBpbmhlcml0ZWQgb2JqZWN0cywgYW5kCisgICAgICAgIHRoZSBmaXJzdCBmb3VuZCBpcyB1c2VkLgorCisKKyAgICAgICAgSWYgdGhlIGZ1bmN0aW9uIGlzIGluaGVyaXRlZCBmcm9tIHNldmVyYWwgb2JqZWN0cyBhbmQgYSBzcGVjaWZpYworICAgICAgICBvbmUgaXMgdG8gYmUgY2FsbGVkLCB0aGUgIjo6IiBjYW4gYmUgZXh0ZW5kZWQgdG8gY29udGFpbiB0aGUKKyAgICAgICAgcGFydGlhbCBvciBmdWxsIG5hbWUgb2YgdGhlIGluaGVyaXRlZCBvYmplY3Q6CisKKyAgICAgICAgICAgIGluaGVyaXQgIi9vYmovY29va2VyIjsKKyAgICAgICAgICAgIGluaGVyaXQgIi9vYmovY29udGFpbmVyIjsKKworICAgICAgICAgICAgdGFpbmVyOjpjcmVhdGUoKQorICAgICAgICAgICAgY29udGFpbmVyOjpjcmVhdGUoKQorICAgICAgICAgICAgInRhaW5lciI6OmNyZWF0ZSgpCisgICAgICAgICAgICAiY29udGFpbmVyIjo6Y3JlYXRlKCkKKyAgICAgICAgICAgICJvYmovY29udGFpbmVyIjo6Y3JlYXRlKCkKKyAgICAgICAgICAgICIvb2JqL2NvbnRhaW5lciI6OmNyZWF0ZSgpCisKKyAgICAgICAgYWxsIGNhbGwgdGhlIGNyZWF0ZSgpIGluIHRoZSBjb250YWluZXIgaW5oZXJpdC4gTm90ZSB0aGF0IHRoZQorICAgICAgICBuYW1lIGdpdmVuIHRvIHRoZSA6OiBvcGVyYXRvciBpcyBtYXRjaGVkIGFnYWluc3QgdGhlIGVuZHMgb2YKKyAgICAgICAgdGhlIGluaGVyaXRlZCBuYW1lcy4KKworCisgICAgICAgIE9uZSBzcGVjaWFsIGZvcm0gb2YgdGhpcyBjYWxsIGlzCisKKyAgICAgICAgICAgIGVmdW46OmZpbmRfb2JqZWN0KCkKKworICAgICAgICB3aGljaCBieXBhc3NlcyBhbnkgcmVkZWZpbml0aW9uIG9mIGFuIGVmdW4gKGhlcmUgZmluZF9vYmplY3QoKSkKKyAgICAgICAgYW5kIGRpcmVjdGx5IGNhbGxzIHRoZSBlZnVuIGl0c2VsZi4gVGhpcyBpcyBvbmx5IHBvc3NpYmxlIGZvcgorICAgICAgICBlZnVuLXJlZGVmaW5pdGlvbnMgd2hpY2ggZG8gbm90IHVzZSB0aGUgIm5vbWFzayIgbW9kaWZpZXIuCisKKworICAgICAgICBBZGRpdGlvbmFsbHksIGEgY2FsbCB0byBhIGZ1bmN0aW9uIGluaGVyaXRlZCBmcm9tIHNldmVyYWwgb2JqZWN0cworICAgICAgICBjYW4gYmUgaW5zdHJ1Y3RlZCB0byBjYWxsIF9hbGxfIGluaGVyaXRlZCBmdW5jdGlvbnMgdGhyb3VnaCB0aGUKKyAgICAgICAgdXNlIG9mIHRoZSB3aWxkY2FyZHMgIioiIChtYXRjaCBhbnkgbnVtYmVyIG9mIGFyYml0cmFyeSBjaGFyYWN0ZXJzKQorICAgICAgICBhbmQgIj8iIChtYXRjaCBvbmUgYXJiaXRyYXJ5IGNoYXJhY3Rlcik6CisKKyAgICAgICAgICAgIGluaGVyaXQgIi9vYmovY29va2VyIjsKKyAgICAgICAgICAgIGluaGVyaXQgIi9vYmovY29udGFpbmVyIjsKKworICAgICAgICAgICAgIioiOjpjcmVhdGUoKQorICAgICAgICAgICAgImNvKiI6OmNyZWF0ZSgpCisgICAgICAgICAgICAiKmVyIjo6Y3JlYXRlKCkKKworICAgICAgICBhbGwgY2FsbCBib3RoIGluaGVyaXRlZCBjcmVhdGUoKXMuIFRoZSBmdW5jdGlvbiBjYWxsZWQgdGhpcyB3YXkKKyAgICAgICAgbXVzdCBub3QgdGFrZSBhcmd1bWVudHMsIGFuZCB0aGUgc2luZ2xlIHJlc3VsdHMgZnJvbSBhbGwgY2FsbHMgYXJlCisgICAgICAgIGNvbWJpbmVkIGludG8gb25lIGFycmF5IHVzZWQgYXMgZmluYWwgcmVzdWx0LiBJZiB0aGVyZSBpcyBubyBzdWNoCisgICAgICAgIGZ1bmN0aW9uIGluaGVyaXRlZCBhdCBhbGwsIHRoZSBzdGF0ZW1lbnQgd2lsbCBqdXN0IHJldHVybgorICAgICAgICBhbiBlbXB0eSBhcnJheS4KKworU0VFIEFMU08KKyAgICAgICAgdHlwZXMoTFBDKSwgbW9kaWZpZXJzKExQQyksIHZhcmFyZ3MoTFBDKSwgcmVmZXJlbmNlcyhMUEMpLAorICAgICAgICBjYWxsX290aGVyKEUpLCBzaW11bF9lZnVuKEMpLCBjYWxsX291dChFKQpkaWZmIC0tZ2l0IGEvZG9jL0xQQy9pZiBiL2RvYy9MUEMvaWYKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMzNiYmZmMgotLS0gL2Rldi9udWxsCisrKyBiL2RvYy9MUEMvaWYKQEAgLTAsMCArMSwzOSBAQAorTkFNRQorICAgICAgICBpZgorCitTWU5UQVgKKyAgICAgICAgaWYgKGV4cHIxKSBzdGF0ZW1lbnQxOworICAgICAgICBlbHNlIGlmIChleHByMikgc3RhdGVtZW50MjsKKyAgICAgICAgLi4uCisgICAgICAgIGVsc2UgaWYgKGV4cHJOKSBzdGF0ZW1lbnROOworICAgICAgICBlbHNlIHN0YXRlbWVudFg7CisKK0RFU0NSSVBUSU9OCisgICAgICAgIFRoZSBpZigpIHN0YXRlbWVudCBpbXBsZW1lbnRzIHRoZSBjb25kaXRpb25hbCBleGVjdXRpb24gb2Ygc3RhdGVtZW50cy4KKyAgICAgICAgVGhlIGV4cHJlc3Npb25zICdleHByMScgLi4gJ2V4cHJOJyBhcmUgZXZhbHVhdGUgaW4gdGhlIG9yZGVyIHRoZXkKKyAgICAgICAgYXBwZWFyIHVudGlsIG9uZSBvZiB0aGUgZXhwcmVzc2lvbnMgcmV0dXJucyBub24tMCAoJ3RydWUnKS4gQXQgdGhhdAorICAgICAgICBwb2ludCwgdGhlIHN0YXRlbWVudCBhc3NvY2lhdGVkIHdpdGggdGhlIGV4cHJlc3Npb24gaXMgZXhlY3V0ZWQsIGFuZAorICAgICAgICB0aGUgcHJvZ3JhbSBjb250aW51ZXMgYWZ0ZXIgdGhlIGlmKCkgc3RhdGVtZW50LiBJZiBub25lIG9mIHRoZQorICAgICAgICBleHByZXNzaW9ucyBldmFsdWF0ZSB0byAndHJ1ZScsIHRoZSBzdGF0ZW1lbnRYIGluIHRoZSAnZWxzZSctYnJhbmNoCisgICAgICAgIGlzIGV4ZWN1dGVkLgorCisgICAgICAgIEJvdGggdGhlICdlbHNlIGlmJyBicmFuY2hlcyBhbmQgdGhlICdlbHNlJyBicmFuY2ggYXJlIG9wdGlvbmFsLCBhbmQKKyAgICAgICAgdGhlcmUgY2FuIGJlIGFueSBudW1iZXIgb2YgJ2Vsc2UgaWYnIGJyYW5jaGVzIC0gYnV0IHRoZXJlIG11c3QgYmUgb25lCisgICAgICAgICdpZicgYnJhbmNoLCBhbmQgdGhlIGJyYW5jaGVzIG11c3QgYmUgaW4gdGhlIG9yZGVyIGdpdmVuIGFib3ZlLgorCisgICAgICAgIEFueSAnZWxzZScgb3IgJ2Vsc2UgaWYnIGFsd2F5cyByZWxhdGVzIHRvIHRoZSBpbW1lZGlhdGVseSBwcmVjZWVkaW5nCisgICAgICAgICdpZicgcmVzcC4gJ2Vsc2UgaWYnIGNvbmRpdGlvbmFsLiBUaGlzIG1lYW5zIHRoYXQKKworICAgICAgICAgIGlmIChhKQorICAgICAgICAgIGlmIChiKSBkb19iOworICAgICAgICAgIGVsc2UgZG9fYzsKKworICAgICAgICBpcyBpbnRlcnByZXRlZCBhcworCisgICAgICAgICAgaWYgKGEpIHsKKyAgICAgICAgICAgIGlmIChiKSBkb19iOworICAgICAgICAgICAgZWxzZSAgIGRvX2M7CisgICAgICAgICAgfQorCitTRUUgQUxTTworICAgICAgICBmb3IoTFBDKSwgZm9yZWFjaChMUEMpLCBkby13aGlsZShMUEMpLCB3aGlsZShMUEMpLCBzd2l0Y2goTFBDKQpkaWZmIC0tZ2l0IGEvZG9jL0xQQy9pbmhlcml0IGIvZG9jL0xQQy9pbmhlcml0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjBlNGMwZjIKLS0tIC9kZXYvbnVsbAorKysgYi9kb2MvTFBDL2luaGVyaXQKQEAgLTAsMCArMSw5IEBACitOQU1FCisgICAgICAgIGluaGVyaXQKKworREVTQ1JJUFRJT04KKyAgICAgICAgVGhlIGNvbmNlcHQgb2YgaW5oZXJpdGFuY2UgYW5kIHRoZSBpbmhlcml0IHN0YXRlbWVudCBhcmUKKyAgICAgICAgZXhwbGFpbmVkIGluIGRldGFpbCBpbiB0aGUgbWFuIHBhZ2UgZm9yIGBgaW5oZXJpdGFuY2UnJy4KKworU0VFIEFMU08KKyAgICAgICAgaW5oZXJpdGFuY2UoQykKZGlmZiAtLWdpdCBhL2RvYy9MUEMvaW5oZXJpdGFuY2UgYi9kb2MvTFBDL2luaGVyaXRhbmNlCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjIzZmI4MDQKLS0tIC9kZXYvbnVsbAorKysgYi9kb2MvTFBDL2luaGVyaXRhbmNlCkBAIC0wLDAgKzEsMTgxIEBACitLT05aRVBUCisgICAgIGluaGVyaXRhbmNlCisKK0JFU0NIUkVJQlVORworICAgICBNaXR0ZWxzIFZlcmVyYnVuZyBrYW5uIG1hbiBkYXMgVmVyaGFsdGVuIHVuZC9vZGVyIGRpZSBpbXBsZW1lbnRpZXJ0ZW4KKyAgICAgTWV0aG9kZW4gZWluZXMgT2JqZWt0ZXMgaW4gZWluIG5ldWVzIE9iamVrdCBoaW5laW5lcmJlbi4KKworICAgICAxLiBXb3p1IGlzdCBWZXJlcmJ1bmcgZ3V0CisgICAgIDEuMS4gRXJiZW4gdm9uIEltcGxlbWVudGF0aW9uZW46IFN0cnVrdHVyaWVyZW4gdm9uIEJpYmxpb3RoZWtlbgorICAgICBNaXQgVmVyZXJidW5nIGRlciBJbXBsZW1lbnRhdGlvbiBrb2VubmVuIGF1ZmVpbmFuZGVyIGF1ZmJhdWVuZGUgdW5kIGd1dAorICAgICB3YXJ0LS9udXR6YmFyZSBTdHJ1a3R1cmVuIGdlc2NoYWZmZW4gd2VyZGVuOgorICAgICAKKyAgICAgL3N0ZC90aGluZy9kZXNjcmlwdGlvbiBiZWluaGFsdGV0CisgICAgIC0gd2llIGVpbiBPYmpla3QgYXVzc2llaHQvd2VsY2hlIERldGFpbHMgZXMgZ2lidAorICAgICAtIHdpZSBtYW4gZGFzIE9iamVrdCBmaW5kZW4vaWRlbnRpZml6aWVyZW4ga2FubgorICAgICAvc3RkL3RoaW5nL21vdmluZyBiZWluaGFsdGV0CisgICAgIC0gd2llIG1hbiBlaW4gT2JqZWt0IGJld2VnZW4ga2FubgorICAgICAvc3RkL3RoaW5nIGVyYnQKKyAgICAgLSAvc3RkL3RoaW5nL2Rlc2NyaXB0aW9uIHVuZAorICAgICAtIC9zdGQvdGhpbmcvbW92aW5nCisgICAgIC0gZGFtaXQgZGVuIENvZGUgYXVzIGJlaWRlbiBPYmpla3RlbiAodW5kIG5vY2ggYW5kZXJlKQorCisgICAgIFNvd29obCB0aGluZy9kZXNjcmlwdGlvbiBhbHMgYXVjaCB0aGluZy9tb3Zpbmcgc2luZCBuaWNodCBhbHMKKyAgICAgZWlnZW5zdGFlbmRpZ2UgT2JqZWt0ZSBzaW5udm9sbCBudXR6YmFyLCBzaW5kIGFic3RyYWt0LgorCisgICAgIDEuMi4gRXJiZW4gdm9uIFNjaG5pdHRzdGVsbGVuIHVuZCBWZXJoYWx0ZW4gICAgICAKKyAgICAgRHVyY2ggZGFzIEVyYmVuIHZvbiAvc3RkL3RoaW5nIHdlcmRlbiBTY2huaXR0c3RlbGxlIHVuZCBhdWNoCisgICAgIFZlcmhhbHRlbiB2b24gL3N0ZC90aGluZyBnZWVyYnQ6CisgICAgIAorICAgICAtLSBrZWtzLmMgLS0KKyAgICAgaW5oZXJpdCAiL3N0ZC90aGluZyI7CisgICAgIC0tCisgICAgIAorICAgICBEYWR1cmNoIGtvZW5uZW4gamV0enQgYW5kZXJlIE9iamVrdGUsIHdpZSBOUENzIG9kZXIgU3BpZWxlciBtaXQgZGVtCisgICAgIEtla3MtT2JqZWt0IHNvIGludGVyYWdpZXJlbiwgYWxzIHdlbm4gZXMgZWluIC9zdGQvdGhpbmcgd2FlcmUuCisKKyAgICAgTW9yZ2VuZ3JhdWVuIHN0ZWxsdCBlaW5lIGdyb3NzZSBCaWJsaW90aGVrIHZvbiBtaXRlaW5hbmRlciBzaW5udm9sbAorICAgICBhZ2llcmVuZGVuIE9iamVrdGVuIHVudGVyIC9zdGQgenVyIFZlcmZ1ZWd1bmcsIERpZSBkb3J0IHZlcmZ1ZWdiYXJlbgorICAgICBPYmpla3RlIHNpbmQgZ3JvZXNzdGVudGVpbHMgc2VsYnN0ZXJrbGFlcmVuZCwgd2llIC9zdGQvbnBjLAorICAgICAvc3RkL2FybW91ciBvZGVyIC9zdGQvd2VhcG9uLgorCisgICAgIERhcyBLZWtzLU9iamVrdCBtdXNzIGVyd2VpdGVydCB3ZXJkZW4sIHdlbm4gZXMgc2ljaCB2b20gbm9ybWFsZW4KKyAgICAgRGluZyB1bnRlcnNjaGVpZGVuIHNvbGwuIFR5cGlzY2hlcndlaXNlIGdlc2NoaWVodCBkYXMgZHVyY2gKKyAgICAgVWViZXJzY2hyZWliZW4gZGVyIEluaXRpYWxpc2llcnVuZ21ldGhvZGUgbmFtZW5zICJjcmVhdGUiLiAKKyAgICAgICAKKyAgICAgMi4gVWViZXJzY2hyZWliZW4vRXJ3ZWl0ZXJuIHZvbiBWZXJoYWx0ZW4vTWV0aG9kZW4KKyAgICAgMi4xLiBVZWJlcnNjaHJlaWJlbgorICAgICBVbSBkYXMgVmVyaGFsdGVuIHZvbiBnZWVyYnRlbiBNZXRob2RlbiB6dSBlcndlaXRlcm4sIG11c3MgZGllc2UKKyAgICAgdWViZXJzY2hyaWViZW4gd2VyZGVuOgorICAgICAKKyAgICAgLS0ga2Vrcy5jIC0tCisgICAgIC4uLgorICAgICB2b2lkIGNyZWF0ZSgpIHsKKyAgICAgICBTZXRQcm9wKFBfTkFNRSwgIktla3MiKTsKKyAgICAgICBTZXRQcm9wKFBfR0VOREVSLCBNQUxFKTsKKyAgICAgICBBZGRJZCgoeyJrZWtzIn0pKTsKKyAgICAgfQorICAgICAtLQorICAgICAKKyAgICAgQWxsZXJkaW5ncyB3dWVyZGUgamV0enQgZGVyIG5vcm1hbGUgQ29kZSB2b24gImNyZWF0ZSIgaW4gL3N0ZC90aGluZworICAgICBuaWNodCBtZWhyIGF1c2dlZnVlaHJ0IHdlcmRlbi4gTWl0IGRlbSAnc2NvcGUnLU9wZXJhdG9yIDo6IHdpcmQKKyAgICAgaW5uZXJoYWxiIGVpbmVyIHVlYmVyc2NocmllYmVuZW4gTWV0aG9kZSBhdWYgZGVyZW4gYmlzaGVyaWdlCisgICAgIEltcGxlbWVudGF0aW9uIHp1Z2VncmlmZmVuOgorCisgICAgIC0tIGtla3MuYyAtLQorICAgICAuLi4KKyAgICAgdm9pZCBjcmVhdGUoKSB7CisgICAgICAgOjpjcmVhdGUoKTsKKyAgICAgICBTZXRQcm9wKFBfTkFNRSwgIktla3MiKTsKKyAgICAgICBTZXRQcm9wKFBfR0VOREVSLCBNQUxFKTsKKyAgICAgICBBZGRJZCgoeyJrZWtzIn0pKTsKKyAgICAgfQorICAgICAtLQorCisgICAgIEF1ZiBnZWVyYnRlIGdsb2JhbGUgVmFyaWFibGVuIGthbm4gbm9ybWFsIHp1Z2VncmlmZmVuIHdlcmRlbiwgd2VubiAKKyAgICAgZGllc2UgbmljaHQgdm9yIGRpcmVrdGVtIFp1Z3JpZmYgZHVyY2ggZXJiZW5kZSBPYmpla3RlIGdlc2NodWV0enQKKyAgICAgd3VyZGVuLiBBbHNvIGluIGlocmVyIFNpY2h0YmFya2VpdCB2ZXJhZW5kZXJ0IHd1cmRlLgorICAgICAKKyAgICAgVWViZXJzY2hyZWliZW4gdm9uIE1ldGhvZGVuIGluIGRlbiBkYXZvbiBlcmJlbmRlbiBPYmpla3RlbiBrYW5uIGR1cmNoCisgICAgIGRhcyBTY2hsdWVzc2Vsd29ydCAnbm9tYXNrJyB2ZXJib3RlbiB3ZXJkZW4uCisKKyAgICAgMi4yLiBTaWNodGJhcmtlaXQgdm9uIE1ldGhvZGVuIHVuZCBWYXJpYWJsZW4KKyAgICAgRXMgaXN0IG1vZWdsaWNoLCBNZXRob2RlbiB1bmQgVmFyaWFibGVuIG1pdCBlaW5lbSBNb2RpZmlrYXRvciBmdWVyCisgICAgIGlocmUgU2ljaHRiYXJrZWl0IHp1IHZlcnNlaGVuLCBkZXIgYXVjaCBiZWkgZGVyIFZlcmVyYnVuZyB6dW0KKyAgICAgVHJhZ2VuIGtvbW10OgorICAgICAtICdwdWJsaWMnIE1ldGhvZGVuIHNpbmQgdm9uIGF1c3Nlbi9pbm5lbiBpbiBFbHRlcm4vS2luZCB6dWdyZWlmYmFyCisgICAgIC0gJ3Byb3RlY3RlZCcgTWV0aG9kZW4gc2luZCBudXIgdm9uIGlubmVuIGluIEVsdGVybi9LaW5kIHp1Z3JlaWZiYXIKKyAgICAgLSAncHJpdmF0ZScgTWV0aG9kZW4gc2luZCBudXIgdm9uIGlubmVuIGluIEVsdGVybiB6dWdyZWlmYmFyCisgICAgICAgICAgICAgICAgIChhbHNvIG51ciBpbSBkZWZpbmllcmVuZGVuIE9iamVrdCBzZWxic3QpICAgCisKKyAgICAgMi4zIExhdWZ6ZWl0LVBvbHltb3JwaGllICh2aWVsZ2VzdGFsdGVzIFZlcmhhbHRlbikKKyAgICAgTWV0aG9kZW4gd2VyZGVuIGluIExQQyBpbW1lciBlcnN0IHp1bSBaZWl0cHVua3QgaWhyZXMgQXVmcnVmcworICAgICBnZWJ1bmRlbiwgYWxzbyBuaWNodCBzY2hvbiBiZWltIExhZGVuLiBCZWlzcGllbHN3ZWlzZSBrb2VubmVuCisgICAgIHdpciB1bnNlcmVuIEtla3MgZXNzYmFyIG1hY2hlbjoKKworICAgICAtLSBrZWtzLmMgLS0KKyAgICAgLi4uCisgICAgIHZvaWQgY3JlYXRlKCkgeworICAgICAgIC4uLgorICAgICAgIEFkZENtZCgiaXNzJkBJRCIsICJhY3Rpb25fZXNzZW4iLCAiV2FzIHdpbGxzdCBkdSBlc3Nlbj8iKTsKKyAgICAgfQorICAgICAKKyAgICAgaW50IGFjdGlvbl9lc3NlbigpIHsKKyAgICAgICBpZih0aGlzX3BsYXllcigpLT5lYXRfZm9vZCgxLCAwLCAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJEdSBiZWtvbW1zdCAiK1F1ZXJ5UHJvbm91bihXRU4pKworCQkJCSAiIG5pY2h0IG1laHIgaGluZWluZ2VzdG9wZnQuXG4iKT4wKSB7CisgICAgICAgICB3cml0ZSgiRHUgaXNzdCAiK25hbWUoV0VOLDEpKyIuXG4iKTsKKyAgICAgICAgIHNheSh0aGlzX3BsYXllcigpLT5OYW1lKFdFUikrIiBpc3N0ICIrbmFtZShXRU4pKyIuXG4iKTsKKyAgICAgICAgIHJlbW92ZSgpOworICAgICAgIH0KKyAgICAgICByZXR1cm4gMTsKKyAgICAgfQorICAgICAtLQorICAgICAKKyAgICAgdW5kIGpldHp0IGluIGVpbmVtIGRhdm9uIGVyYmVuZGVuIEtydWVtZWxrZWtzIGRpZXNlbiBiZWltIEVudGZlcm5lbgorICAgICBpbSAicmVtb3ZlIiBrcnVlbWVsbiBsYXNzZW46CisgICAgIAorICAgICAtLSBrcnVlbWVsa2Vrcy5jIC0tCisgICAgIGluaGVyaXQgIi9kb2MvYmVpc3BpZWxlL2luaGVyaXQva2Vrcy5jIjsKKyAgICAgLi4uCisgICAgIHZhcmFyZ3MgaW50IHJlbW92ZShpbnQgc2lsZW50KSB7CisgICAgICAgaWYoIXNpbGVudCAmJiBsaXZpbmcoZW52aXJvbm1lbnQoKSkpCisgICAgICAgICB0ZWxsX29iamVjdChlbnZpcm9ubWVudCgpLCBOYW1lKFdFUiwxKSsKKwkgICAgICAgICAgICAgICAgICAgICAgICAgICAgIiBrcnVlbWVsdCBlaW4gbGV0enRlcyBNYWwuXG4iKTsKKyAgICAgICByZXR1cm4gOjpyZW1vdmUoc2lsZW50KTsKKyAgICAgfQorICAgICAtLQorICAgICAKKyAgICAgVHJvdHpkZW0gd2lyICJhY3Rpb25fZXNzZW4iIG5pY2h0IG1vZGlmaXppZXJ0IGhhYmVuLCB3aXJkIHZvbiBkaWVzZXIKKyAgICAgTWV0aG9kZSBpbiBlaW5lbSBLcnVlbWVsa2VrcyBpbW1lciBhdXRvbWF0aXNjaCBkaWUgYWt0dWVsbGUgdW5kCisgICAgIGtydWVtZWxlbmRlICJyZW1vdmUiIGF1ZmdlcnVmZW4uCisKKyAgICAgMy4gTXVsdGlwbGUgSW5oZXJpdGFuY2UKKyAgICAgSW4gTFBDIGlzdCBtdWx0aXBsZSBWZXJlcmJ1bmcgbW9lZ2xpY2guIERhcyBoZWlzc3QsIG1hbiBrYW5uIHZvbiAKKyAgICAgbWVocmVyZW4gT2JqZWt0ZW4gZXJiZW4uIERhcyBrYW5uIHp1IEtvbmZsaWt0ZW4gZnVlaHJlbiwgenVtIEJlaXNwaWVsIAorICAgICB3ZW5uIGVpbmUgTWV0aG9kZSBpbiB6d2VpIE9iamVrdGVuIHZvbiBkZW5lbiBnZWVyYnQgd3VyZGUgdm9ya29tbXQuIAorICAgICAKKyAgICAgRGllc2UgS29uZmxpa3RlIHNvbGx0ZSBtYW4gZGFubiAicGVyIEhhbmQiIGxvZXNlbiBpbiBkZW0gbWFuIGRpZXNlIAorICAgICBzcGV6aWVsbGUgTWV0aG9kZSB1ZWJlcnNjaHJlaWJ0IHVuZCBtaXR0ZWxzIGRlcyBzY29wZS1PcGVyYXRvcnMgZGllIAorICAgICBnZXd1ZW5zY2h0ZShuKSBnZWVyYnQoZW4pIE1ldGhvZGUobikgYXVmcnVmdDoKKworICAgICBpbmhlcml0ICIvc3RkL3dlYXBvbiI7CisgICAgIGluaGVyaXQgIi9zdGQvbGlnaHRzb3VyY2UiOworCisgICAgIHZvaWQgY3JlYXRlKCkgeworICAgICAgIHdlYXBvbjo6Y3JlYXRlKCk7CisgICAgICAgbGlnaHRzb3VyY2U6OmNyZWF0ZSgpOworICAgICAgIC4uLgorICAgICB9CisKKyAgICAgdm9pZCBpbml0KCkgeworICAgICAgIHdlYXBvbjo6aW5pdCgpOworICAgICAgIGxpZ2h0c291cmNlOjppbml0KCk7CisgICAgICAgLy8gb2RlciBzZWhyIGdlbmVyZWxsIHVuZCB1bmtvbnRyb2xsaWVydDoKKyAgICAgICAvLyAiKiI6OmluaXQoKTsKKyAgICAgfQorCisgICAgIFNjaHdlcndpZWdlbmRlIEtvbmZsaWt0ZSBrb2VubmVuIGF1ZnRyZXRlbiwgd2VubiBlaW5lIGdsZWljaG5hbWlnZQorICAgICBWYXJpYWJsZSBhdXMgdmVyc2NoaWVkZW5lbiBPYmpla3RlbiBnZWVyYnQgd2lyZC4gRGllIFZhcmlhYmxlbgorICAgICBleGlzdGllcmVuIGltIGxldHp0bGljaCBlcmJlbmRlbiBPYmpla3QgendlaW1hbCB1bmQgZGllIHZlcnNjaGllZGVuZW4KKyAgICAgZ2VlcmJ0ZW4gTWV0aG9kZW4gZ3JlaWZlbiBhdWYgaWhyZSBqZXdlaWxpZ2UgVmFyaWFudGUgenUuCisKKyAgICAgQmVpc3BpZWwgaXN0IGRpZSBzb2cuICJNYXNjaGUiIG9kZXIgZGVyICJEaWFtb25kIG9mIERlYXRoIjogCisKKyAgICAgICAgICAgICAgICAgICAgICAgIEEgICAgKFVyc3BydW5nc29iamVrdCBtaXQgZ2xvYmFsZXIgVmFyaWFibGUgeCkgICAKKyAgICAgICAgICAgICAgICAgICAgICAgLyBcCisgICAgICAgICAgICAgICAgICAgICAgQiAgIEMgIChCLCBDIGVyYmVuIHZvbiBBIHVuZCBtYW5pcHVsaWVyZW4gYmVpZGUgeCkKKyAgICAgICAgICAgICAgICAgICAgICAgXCAvCisgICAgICAgICAgICAgICAgICAgICAgICBEICAgIChEIGVyYnQgdm9uIEIgdW5kIEEpCisKKyAgICAgTWl0IGRlbSBTY2hsdWVzc2Vsd29ydCAndmlydHVhbCcga2FubiBkaWUgRG9wcGVsdW5nIGJlaW0gRXJiZW4KKyAgICAgaW4gQiB1bmQgQyB1bnRlcmJ1bmRlbiB3ZXJkZW4uCisKK1NJRUhFIEFVQ0g6CisgICAgIGluaGVyaXQKKyAgICAgcHJpdmF0ZSwgcHJvdGVjdGVkLCBwdWJsaWMsIG5vbWFzaworICAgICB2aXJ0dWFsCisgICAgIG9iamVrdGUsIG9vcAorICAgICAvZG9jL2JlaXNwaWVsZS9pbmhlcml0CisKKzIuRmViIDIwMDggR2xvaW5zb24KZGlmZiAtLWdpdCBhL2RvYy9MUEMvaW5pdGlhbGlzYXRpb24gYi9kb2MvTFBDL2luaXRpYWxpc2F0aW9uCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjYxZjNjMmIKLS0tIC9kZXYvbnVsbAorKysgYi9kb2MvTFBDL2luaXRpYWxpc2F0aW9uCkBAIC0wLDAgKzEsOTMgQEAKK0NPTkNFUFQKKworICAgICAgICBWQVJJQUJMRSBJTklUSUFMSVpBVElPTgorCitERVNDUklQVElPTgorICAgICAgICBHbG9iYWwgdmFyaWFibGVzLCBsaWtlIHRoZWlyIGxvY2FsIGNvdW50ZXJwYXJ0cywgY2FuIGJlIGRlZmluZWQKKyAgICAgICAgd2l0aCBhbiBpbml0aWFsIHZhbHVlOgorCisgICAgICAgICAgICBpbnQgKiBhID0gKHsgMywgNCB9KTsKKworICAgICAgICBUaGUgaW5pdGlhbGl6YXRpb24gdmFsdWUgY2FuIGJlIGFueSBsZWdhbCBMUEMgZXhwcmVzc2lvbiwKKyAgICAgICAgaW5jbHVkaW5nIGZ1bmN0aW9uIGNhbGxzLiBUaGUgY29kZSBmb3IgdGhlIGluaXRpYWxpemF0aW9ucyBpcworICAgICAgICBjb2xsZWN0ZWQgaW4gYSBjb21waWxlci1nZW5lcmF0ZWQgZnVuY3Rpb24gX19JTklUKCkgd2hpY2ggaXMKKyAgICAgICAgY2FsbGVkIGV2ZW4gYmVmb3JlIHRoZSBjcmVhdGUtaG9vayBpcyBhcHBsaWVkIG9uIHRoZSBvYmplY3QuCisKKyAgICAgICAgRHVyaW5nIGluaXRpYWxpemF0aW9uLCBibHVlcHJpbnRzIGFuZCBjbG9uZXMgYXJlIHRyZWF0ZWQKKyAgICAgICAgc2xpZ2h0bHkgZGlmZmVyZW50bHk6CisKKyAgICAgICAgQmx1ZXByaW50IHZhcmlhYmxlcyBhcmUgYWx3YXlzIGFsbCBpbml0aWFsaXplZCB1c2luZyBfX0lOSVQoKS4KKworICAgICAgICBGb3IgY2xvbmVzIHRoZSBwcm9ncmFtbWVyIGNhbiBzZWxlY3Qgd2hldGhlciB0aGUgY2xvbmUncworICAgICAgICB2YXJpYWJsZXMgc2hvdWxkIGFsc28gYmUgaW5pdGlhbGl6ZWQgd2l0aCBfX0lOSVQoKSwgb3IgaWYgdGhleQorICAgICAgICBzaG91bGQgYmUgYXNzaWduZWQgZnJvbSB0aGUgY3VycmVudCBibHVlcHJpbnQgdmFsdWVzCisgICAgICAgICgnc2hhcmVkIHdpdGggdGhlIGJsdWVwcmludCcpLiBUaGUgbGF0dGVyIG1ldGhvZCBpcyB1c2VmdWwgZm9yCisgICAgICAgIGV4YW1wbGUgaWYgYmx1ZXByaW50cyBhbmQgY2xvbmVzIHNoYWxsIHNoYXJlIGFycmF5cyBvcgorICAgICAgICBtYXBwaW5ncy4KKworICAgICAgICBUaGUgc2VsZWN0aW9uIGlzIHBlcmZvcm1lZCB3aXRoIHRoZSB0d28gcHJhZ21hcworICAgICAgICAnaW5pdF92YXJpYWJsZXMnIGFuZCAnc2hhcmVfdmFyaWFibGVzJy4gVGhlIHN0YXR1cyBvZiB0aGlzCisgICAgICAgIHByYWdtYSBhdCB0aGUgcG9pbnQgb2YgdGhlIGZpcnN0IHZhcmlhYmxlIGRlZmluaXRpb24gY291bnRzLAorICAgICAgICBhbmQgaXMgYXBwbGllZCB0byBhbGwgdmFyaWFibGVzIGluIHRoZSBwcm9ncmFtLgorCisgICAgICAgIFRoZSBjbG9uZSBpbml0aWFsaXphdGlvbiBtZXRob2QgaXMgZXZhbHVhdGVkIHBlci1wcm9ncmFtLCBpLmUuCisgICAgICAgIGlmIGFuIGluaGVyaXRlZCBwcm9ncmFtIGRlZmluZXMgJ3NoYXJlX3ZhcmlhYmxlcycgYW5kIHRoZSBjaGlsZAorICAgICAgICBwcm9ncmFtIGRvZXNuJ3QsIG9ubHkgdGhlIGluaGVyaXRlZCB2YXJpYWJsZXMgYXJlIGluaXRpYWxpemVkCisgICAgICAgIGZyb20gdGhlIGJsdWVwcmludCwgYW5kIGFsbCBvdGhlcnMgZnJvbSBfX0lOSVQoKS4KKworICAgICAgICBUaGUgZGVmYXVsdCBzZXR0aW5nIGZvciB0aGUgcHJhZ21hIGlzIGNvbmZpZ3VyZWQgaW50byB0aGUKKyAgICAgICAgZHJpdmVyLCBidXQgY2FuIGFsc28gYmUgY2hvc2VuIHdoZW4gc3RhcnRpbmcgdGhlIGRyaXZlci4KKyAgICAgICAgCitFWEFNUExFCisgICAgICAgIEZvciB0aGUgb2JqZWN0CisKKyAgICAgICAgICAtLS0tLS0tLS0tCisgICAgICAgICAgaW5oZXJpdCAiYSI7CisgICAgICAgICAgaW50IGEgPSA0OworICAgICAgICAgIGludCBiOworICAgICAgICAgIC0tLS0tLS0tLS0KKworICAgICAgICB0aGUgY29tcGlsZXIgZXhlY3V0ZXMgdGhlIGVxdWl2YWxlbnQgb2YgdGhlc2UgX19JTklUKCkgZnVuY3Rpb25zOgorCisgICAgICAgICNwcmFnbWEgc2hhcmVfdmFyaWFibGVzOgorCisgICAgICAgICAgICB1bmtub3duIF9fSU5JVCgpCisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgImEiOjpfX0lOSVQoKTsKKyAgICAgICAgICAgICAgICBpZiAoY2xvbmVwKHRoaXNfb2JqZWN0KCkpKQorICAgICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAgICAgYSA9IChibHVlcHJpbnQgb2YgdGhpc19vYmplY3QoKSktPmE7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgICAgIGEgPSA0OworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICByZXR1cm4gMTsKKyAgICAgICAgICAgIH0KKworCisgICAgICAgICNwcmFnbWEgaW5pdF92YXJpYWJsZXM6CisKKyAgICAgICAgICAgIHVua25vd24gX19JTklUKCkKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAiYSI6Ol9fSU5JVCgpOworICAgICAgICAgICAgICAgIGEgPSA0OworICAgICAgICAgICAgICAgIHJldHVybiAxOworICAgICAgICAgICAgfQorCisKKyAgICAgICAgSW4gZWl0aGVyIGNhc2UgdGhlIHZhcmlhYmxlICdiJyAoaW4gZmFjdCBhbGwgdmFyaWFibGVzKSBhcmUKKyAgICAgICAgc2V0IHRvICcwJyBhcyBwYXJ0IG9mIHRoZSBsb2FkaW5nL2Nsb25pbmcgcHJvY2VzcyBiZWZvcmUgdGhlCisgICAgICAgIGRyaXZlciBwZXJmb3JtcyB0aGUgc3BlY2lmaWMgaW5pdGlhbGlzYXRpb24uCisKK1dBUk5JTkcKKyAgICAgICAgRG8gbm90IGNhbGwgX19JTklUKCkgeW91cnNlbGYsIG92ZXJsb2FkLCBvciB1c2UgaXQgZGlyZWN0bHkgaW4KKyAgICAgICAgYW55IG90aGVyIHdheS4gVGhlIGltcGxlbWVudGF0aW9uIG9mIHRoZSB2YXJpYWJsZQorICAgICAgICBpbml0aWFsaXphdGlvbiBtYXkgY2hhbmdlIGF0IGFueSB0aW1lLgorCitISVNUT1JZCisgICAgICAgIEJlZm9yZSBMRE11ZCAzLjMuMzc4LCB0aGUgY2hvaWNlIGJldHdlZW4gc2hhcmluZyBhbmQgaW5pdGlhbGl6aW5nCisgICAgICAgICAgdmFyaWFibGVzIHdhcyBhIGZpeGVkIGNvbmZpZ3VyYXRpb24gY2hvaWNlIG9mIHRoZSBkcml2ZXIuCisKK1NFRSBBTFNPCisgICAgICAgIHByYWdtYShMUEMpLCBjcmVhdGUoSCksIGludm9jYXRpb24oRCkKZGlmZiAtLWdpdCBhL2RvYy9MUEMvaW5saW5lLWNsb3N1cmVzIGIvZG9jL0xQQy9pbmxpbmUtY2xvc3VyZXMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uM2EyZWNkZAotLS0gL2Rldi9udWxsCisrKyBiL2RvYy9MUEMvaW5saW5lLWNsb3N1cmVzCkBAIC0wLDAgKzEsMTMxIEBACitDT05DRVBUCisgICAgICAgIGlubGluZSBjbG9zdXJlcworCitTWU5UQVgKKyAgICAgICAgZnVuY3Rpb24gPHJldHVybnR5cGU+ICggPGFyZ3VtZW50cz4gKSA6IDxjb250ZXh0PiB7IDxjb2RlPiB9CisKKyAgICAgICAgKDogPHN0YXRlbWVudHM+IDsgPGV4cHI+LCAuLi4gLCA8ZXhwcj4gOikKKworCitERVNDUklQVElPTgorICAgICAgICBJbmxpbmUgY2xvc3VyZXMgYXJlIGEgd2F5IHRvIHByb2dyYW0gY2xvc3VyZXMgd2hpY2ggYXJlCisgICAgICAgIGNvbXBpbGVkIGF0IHRoZSB0aW1lIGFuIG9iamVjdCBpcyBsb2FkZWQsIGJ1dCBjYW4gYWNjZXNzCisgICAgICAgIHZhbHVlcyBmcm9tIHRoZWlyIGVuY2xvc2luZyBmdW5jdGlvbiBhdCBydW50aW1lLgorCisgICAgICAgIEV4YW1wbGU6CisKKyAgICAgICAgICBjbG9zdXJlIGZhY3RvcnkgKGludCBhcmcpIHsKKyAgICAgICAgICAgIHJldHVybiBmdW5jdGlvbiBpbnQgKGludCB2YWwpIHsgcmV0dXJuIHZhbCAqIGFyZzsgfTsKKyAgICAgICAgICB9CisKKyAgICAgICAgICBjbG9zdXJlIGYxID0gZmFjdG9yeSgyKTsKKyAgICAgICAgICBjbG9zdXJlIGYyID0gZmFjdG9yeSgzKTsKKyAgICAgICAgICBmdW5jYWxsKGYxLCAzKSAtPiB3aWxsIHlpZWxkIDYuCisgICAgICAgICAgZnVuY2FsbChmMiwgMykgLT4gd2lsbCB5aWVsZCA5LgorCisgICAgICAgIFRoZSBjbG9zdXJlIGhlcmUgJ2luaGVyaXRzJyB0aGUgY3VycmVudCB2YWx1ZSBvZiB0aGUgbG9jYWwKKyAgICAgICAgdmFyaWFibGUgJ2FyZycgYXQgdGhlIHRpbWUgdGhlIGNsb3N1cmUgaXMgY3JlYXRlZC4gVGhlc2UKKyAgICAgICAgdmFsdWVzIGFyZSBjYWxsZWQgdGhlICJjb250ZXh0IiBvZiB0aGUgY2xvc3VyZXMgLSB0aGV5IGFyZQorICAgICAgICBzdG9yZWQgaW4gYSBzcGVjaWFsIHNldCBvZiB2YXJpYWJsZXMgaW4gdGhlIGNsb3N1cmUuCisKKyAgICAgICAgT25lIHNwZWNpZmljIGZlYXR1cmUgb2YgdGhlIGNsb3N1cmUgY29udGV4dCBpcyB0aGF0IGl0IGNhbiBiZQorICAgICAgICBjaGFuZ2VkIGZyb20gd2l0aGluIHRoZSBjbG9zdXJlLCBhbmQgdGhhdCB0aGVzZSBjaGFuZ2VzIHJlbWFpbgorICAgICAgICBwZXJtYW5lbnQ6CisKKyAgICAgICAgICBjbG9zdXJlIGZhY3RvcnkgKGludCBhcmcpIHsKKyAgICAgICAgICAgIHJldHVybiBmdW5jdGlvbiBpbnQgKGludCB2YWwpIHsgcmV0dXJuIHZhbCAqIGFyZysrOyB9OworICAgICAgICAgIH0KKworICAgICAgICAgIGNsb3N1cmUgZiA9IGZhY3RvcnkoMik7CisgICAgICAgICAgZnVuY2FsbChmLCAzKSAtPiB3aWxsIHlpZWxkIDYuCisgICAgICAgICAgZnVuY2FsbChmLCAzKSAtPiB3aWxsIG5vdyB5aWVsZCA5IQorCisgICAgICAgIEJ1dCBjaGFuZ2VzIG9mIHRoZSBjbG9zdXJlIGNvbnRleHQgd2lsbCBub3QgcmVmbGVjdCBvbiB0aGUKKyAgICAgICAgbG9jYWwgdmFyaWFibGUgaXQgd2FzIGNvcGllZCBmcm9tIGFuZCB2aWNlIHZlcnNhLgorCisgICAgICAgIEluIGFkZGl0aW9uIHRvIHRoZSBpbXBsaWNpdGUgY29udGV4dCBpbmhlcml0ZWQgZnJvbSB0aGUKKyAgICAgICAgZGVmaW5pbmcgZnVuY3Rpb24sIGFkZGl0aW9uYWwgY29udGV4dCB2YXJpYWJsZXMgY2FuIGJlIGRlZmluZWQKKyAgICAgICAgaW4gdGhlIGNsb3N1cmU6CisKKyAgICAgICAgICBjbG9zdXJlIGZhY3RvcnkgKGludCBhcmcpIHsKKyAgICAgICAgICAgIHJldHVybiBmdW5jdGlvbiBpbnQgKGludCB2YWwpIDogaW50IHggPSAyICogYXJnCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IHJldHVybiB2YWwgKiB4OyB9OworICAgICAgICAgIH0KKworICAgICAgICAgIGNsb3N1cmUgZiA9IGZhY3RvcnkoMik7CisgICAgICAgICAgZnVuY2FsbChmLCAzKSAtPiB3aWxsIHlpZWxkIDEyLgorCisgICAgICAgIEl0IGlzIHBvc3NpYmxlIHRvIGRlZmluZSBtdWx0aXBsZSBjb250ZXh0IHZhcmlhYmxlcyB3aXRoIGFuZAorICAgICAgICB3aXRob3V0IGluaXRpYWxpc2F0aW9uOgorCisgICAgICAgICAgY2xvc3VyZSBmYWN0b3J5IChpbnQgYXJnKSB7CisgICAgICAgICAgICByZXR1cm4gZnVuY3Rpb24gaW50IChpbnQgdmFsKSA6IGludCB5LCB4ID0gMiAqIGFyZzsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IHoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgcmV0dXJuIHZhbCAqIHg7IH07CisgICAgICAgICAgfQorCisgICAgICAgIFRoZXNlIGV4cGxpY2l0ZSBjb250ZXh0IHZhcmlhYmxlcyBhcmUgdXNlZnVsIHdoZW4gdGhlIGNsb3N1cmVzCisgICAgICAgIG5lZWRzIHRvIGtlZXAgYSBzdGF0ZSwgb3IgdG8gaW1wcm92ZSBwZXJmb3JtYW5jZToKKworICAgICAgICAgIG1hcHBpbmcgbSA9IC4uLjsKKyAgICAgICAgICBjbG9zdXJlIHNsb3cgKGludCBhcmcpIHsKKyAgICAgICAgICAgIHJldHVybiBmdW5jdGlvbiBtaXhlZCAoKSB7IHJldHVybiBtW2FyZ107IH0KKyAgICAgICAgICB9CisgICAgICAgICAgY2xvc3VyZSBmYXN0IChpbnQgYXJnKSB7CisgICAgICAgICAgICByZXR1cm4gZnVuY3Rpb24gbWl4ZWQgKCkgOiBtaXhlZCB2YWwgPSBtW2FyZ10geyByZXR1cm4gdmFsOyB9CisgICAgICAgICAgfQorCisgICAgICAgIEluIHRoZSBhYm92ZSBleGFtcGxlLCB0aGUgZmFzdCgpIGZ1bmN0aW9uIGV4ZWN1dGVzIHRoZSBsb29rdXAKKyAgICAgICAgbVthcmddIG9ubHkgb25jZSB3aGVuIHRoZSBpbmxpbmUgY2xvc3VyZSBpcyBjcmVhdGVkOyB0aGUKKyAgICAgICAgc2xvdygpIGZ1bmN0aW9uIG9uIHRoZSBvdGhlciBoYW5kIHJldHVybnMgYSBjbG9zdXJlcyB3aGljaAorICAgICAgICBsb29rcyB1cCBtW2FyZ10gZXZlcnkgdGltZSBpdCBpcyBjYWxsZWQuIEEgc2Vjb25kIGVmZmVjdCBpcworICAgICAgICB0aGF0IHRoZSByZXN1bHRzIG9mIHRoZSBzbG93IGNsb3N1cmUgY2hhbmdlIHdoZW4gbSBjaGFuZ2VzOworICAgICAgICB0aGUgcmVzdWx0IG9mIHRoZSBmYXN0IGNsb3N1cmUgaXMgYWx3YXlzIHRoZSBzYW1lLgorCisKKyAgICAgICAgSW4gdGhlIGRlZmluaXRpb24gb2YgYW4gaW5saW5lIGNsb3N1cmUsIHNvbWUgZWxlbWVudHMgYXJlCisgICAgICAgIG9wdGlvbmFsOgorCisgICAgICAgICAgPHJldHVybnR5cGU+ICAgICBkZWZhdWx0cyB0byAnbWl4ZWQnCisgICAgICAgICAgKCA8YXJndW1lbnRzPiApICBkZWZhdWx0cyB0byAnKG1peGVkICQxIC4uLiAgbWl4ZWQgJDkpJworICAgICAgICAgIDogPGNvbnRleHQ+ICAgICAgbm8gZGVmYXVsdAorCisKKyAgICAgICAgVGhlIHNwZWNpYWwgKDogOikgZm9ybSBpcyBtZWFudCBmb3Igc2ltcGxlIGV4cHJlc3Npb25zIChhbmQKKyAgICAgICAgTXVkT1MgY29tcGF0aWJpbGl0eSkuIFRoZSBmb3JtCisKKyAgICAgICAgICAoOiA8c3RhdGVtZW50cz4gOyA8ZXhwcj4sIC4uLiwgPGV4cHI+IDopCisKKyAgICAgICAgaXMgdGhlIHNob3J0aGFuZCBub3RhdGlvbiBmb3IKKworICAgICAgICAgIGZ1bmN0aW9uIHsgPHN0YXRlbWVudHM+OyByZXR1cm4gPGV4cHI+LCAuLi4sIDxleHByPjsgfQorCisgICAgICAgIEZvciBleGFtcGxlIHRoZSB0d28gc3RhdGVtZW50cworCisgICAgICAgICAgc29ydF9hcnJheShhcnIsIGZ1bmN0aW9uIHsgcmV0dXJuICQxIDwgJDI7IH0gKQorICAgICAgICAgIHNvcnRfYXJyYXkoYXJyLCAoOiAkMSA8ICQyIDopICkKKworICAgICAgICBkbyB0aGUgc2FtZS4gVGhlIGV4YW1wbGUgYWxzbyBkZW1vbnN0cmF0ZXMgdGhhdCBib3RoIHRoZSA8c3RhdGVtZW50cz4KKyAgICAgICAgYW5kIHRoZSA8ZXhwcj4gcGFydCBpbiB0aGlzIGZvcm0gYXJlIG9wdGlvbmFsLgorCisKKworTk9URVMKKyAgICAgICAgVGhlIG1hY3JvIF9fTFBDX0lOTElORV9DTE9TVVJFU19fIGlzIGRlZmluZWQgd2hlbiB0aGUKKyAgICAgICAgaW5saW5lIGNsb3N1cmVzIGFzIGRlc2NyaWJlZCBoZXJlIGFyZSBhdmFpbGFibGUuIElmIG5vdAorICAgICAgICBkZWZpbmVkLCB0aGUgZHJpdmVyIGltcGxlbWVudHMgYSBtb3JlIHJlc3RyaWN0ZWQgdmVyc2lvbgorICAgICAgICAoJyg6IDopJyBzeW50YXggb25seSwgbm8gY29udGV4dCB2YXJpYWJsZXMpIGZvciBiYWNrd2FyZHMKKyAgICAgICAgY29tcGF0aWJpbGl0eS4KKworICAgICAgICBJbmxpbmUgY2xvc3VyZXMgYXJlIG5vdCB0byBiZSBjb25mdXNlZCB3aXRoIGlubGluZSBmdW5jdGlvbnMKKyAgICAgICAga25vd24gZnJvbSBvdGhlciBsYW5ndWFnZXMuCisKK0hJU1RPUlkKKyAgICAgICAgTERNdWQgMy4yLjcgaW1wbGVtZW50ZWQgdGhlIG9sZGVyLCByZXN0cmljdGVkIGZvcm0gb2YgaW5saW5lCisgICAgICAgIGNsb3N1cmVzLgorICAgICAgICBMRE11ZCAzLjMuMjcxIGltcGxlbWVudGVkIHRoZSBmdWxsIGZvcm0gb2YgaW5saW5lIGNsb3N1cmVzLgorICAgICAgICBMRE11ZCAzLjMuMjc1IHJlLWFsbG93ZWQgc3RhdGVtZW50cyBpbiB0aGUgKDogOikgZm9ybS4KKworU0VFIEFMU08KKyAgICAgICAgY2xvc3VyZXMtYWJzdHJhY3QoTFBDKSwgY2xvc3VyZXMtZXhhbXBsZShMUEMpLCBjbG9zdXJlX2d1aWRlKExQQykKKyAgICAgICAgY2xvc3VyZXMoTFBDKQpkaWZmIC0tZ2l0IGEvZG9jL0xQQy9pbnRlZ2VycyBiL2RvYy9MUEMvaW50ZWdlcnMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZWRiZDg0OAotLS0gL2Rldi9udWxsCisrKyBiL2RvYy9MUEMvaW50ZWdlcnMKQEAgLTAsMCArMSw0MCBAQAorTkFNRQorICAgICAgICBpbnRlZ2VycworCitERVNDUklQVElPTgorICAgICAgICBpbnQgaXMgdGhlIGZhc3Rlc3QgZGF0YSB0eXBlIGluIExQQy4KKworICAgICAgICBBbiBpbnRlZ2VyIGNvbnRhaW5zIGEgd2hvbGUgbnVtYmVyIGJldHdlZW4KKyAgICAgICAgLTIxNDc0ODM2NDggYW5kIDIxNDc0ODM2NDcuCisKKyAgICAgICAgT3BlcmF0aW9ucyB3aXRoIGludGVnZXJzOgorICAgICAgICAgICsgIHBsdXMgICAgICAgICAgICAgICAmICAgQU5EICAgIDw8IFNISUZUIHJpZ2h0CisgICAgICAgICAgLSAgbWludXMgICAgICAgICAgICAgIHwgICBPUiAgICAgPj4gU0hJRlQgbGVmdAorICAgICAgICAgICogIG11bHRpcGx5ICAgICAgICAgICBeICAgWE9SCisgICAgICAgICAgLyAgZGl2aWRlICh3aG9sZSkgICAgIH4gICBOT1QgICAgPSAgQXNzaWduIHZhbHVlCisgICAgICAgICAgJSAgZGl2aWRlIChtb2R1bG8pICAgICs9ICBhZGQgICAgLT0gc3VidHJhY3QgICAgICAgIAorCisgICAgICAgIFRoZSByZXN1bHQgb2YgYSBib29sZWFuIGV4cHJlc3Npb24gaXMgYWxzbyBhbiBpbnRlZ2VyOgorICAgICAgICAgIDAgKGZhbHNlKQorICAgICAgICAgIDEgKHRydWUpCisKKyAgICAgICAgQm9vbGVhbiBvcGVyYXRvcnMgYXJlOgorICAgICAgICAgICEgIChub3QpCisgICAgICAgICAgPT0gKGVxdWFsKQorICAgICAgICAgIHx8IChvcikKKyAgICAgICAgICAmJiAoYW5kKQorCitGVU5DVElPTlMKKyAgICAgICAgaW50IHRvX2ludChzdHJpbmcpCisgICAgICAgIGludCB0b19pbnQoZmxvYXQpCisgICAgICAgIGludCBzc2NhbmYoc3RyaW5nIHN0ciwgc3RyaW5nIGZtdCwgbWl4ZWQgdmFyMSwgbWl4ZWQgdmFyMiwgLi4uKQorICAgICAgICB2b2lkIHByaW50ZihzdHJpbmcgZm9ybWF0LCAuLi4pCisKK1JFTUFSS1MKKyAgICAgICAgU2luZ2xlIGNoYXJhY3RlcnMgaW4gc3RyaW5ncyBhcmUgYWxzbyBpbnRlZ2Vycy4KKworU0VFIEFMU08KKyAgICAgICAgYXJyYXlzLCBtYXBwaW5ncywgb3BlcmF0b3JzLCBzdHJpbmdzLCB0eXBlcworCitMQVNUIENIQU5HRUQKKyAgICAgICAgV2VkbmVzZGF5LCA3dGggTWF5LCAyMDAzLCBieSBBbWFyeWxsaXMKZGlmZiAtLWdpdCBhL2RvYy9MUEMvbGZ1bnMgYi9kb2MvTFBDL2xmdW5zCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmE5YzU1OWQKLS0tIC9kZXYvbnVsbAorKysgYi9kb2MvTFBDL2xmdW5zCkBAIC0wLDAgKzEsMzEgQEAKK0NPTkNFUFQKKyAgICAgICAgbGZ1bnMKKworREVTQ1JJUFRJT04KKyAgICAgICAgQSBsZnVuIGlzIGEgTFBDIGZ1bmN0aW9uIHdpdGhpbiBhbiBvYmplY3Qgd2hpY2ggaXMgcHVibGljIGFuZCBjYW4KKyAgICAgICAgYmUgY2FsbGVkIGJ5IG90aGVyIG9iamVjdHMuIEluIE9PIHRlcm1zLCBsZnVucyBhcmUgIm1ldGhvZHMiCisgICAgICAgIHdoaWNoIHlvdSBjYW4gc2VuZCAibWVzc2FnZXMiIHRvLgorCisgICAgICAgIENhbGxpbmcgbGZ1bnMgaXMgZG9uZSBieSB1c2luZyB0aGUgZWZ1biBjYWxsX290aGVyKCksIHdoaWNoCisgICAgICAgIHRha2VzIGFzIGFyZ3VtZW50cyB0aGUgb2JqZWN0IGluIHdoaWNoIHRoZSBsZnVuIGlzIHRvIGJlIGNhbGxlZCwKKyAgICAgICAgdGhlIG5hbWUgb2YgdGhlIGxmdW4gdG8gYmUgY2FsbGVkIGluIHRoZSBvYmplY3QsIGFuZCBhZGRpdGlvbmFsCisgICAgICAgIGFuZCBvcHRpb25hbCBhcmd1bWVudHMuCisKKyAgICAgICAgQW4gZXhhbXBsZSBsb29rcyBsaWtlIHRoaXM6CisKKyAgICAgICAgY2FsbF9vdGhlcihkcmluaywgIlF1ZXJ5U2hvcnQiKTsKKworICAgICAgICBUaGlzIGNhbGwgbWF5IGFsc28gYmUgd3JpdHRlbiBhcworCisgICAgICAgIGRyaW5rLT5RdWVyeVNob3J0KCk7CisKKyAgICAgICAgVGhpcyBtZWFucyBjYWxsX290aGVyKG9iamVjdCwgImZ1bmN0aW9uIiwgYXJncy4uLikgY2FuIGFsc28gYmUKKyAgICAgICAgd3JpdHRlbiBhcyBvYmplY3QtPmZ1bmN0aW9uKGFyZ3MuLi4pLiBUaGUgc2Vjb25kIGZvcm0gaXMKKyAgICAgICAgcHJlZmVycmVkIGFzIGl0IGlzIGVhc2llciB0byByZWFkLgorCisgICAgICAgIFNvbWUgbGZ1bnMgaGF2ZSBhIHNwZWNpYWwgbWVhbmluZyBmb3IgdGhlIExQQyBkcml2ZXIsIGJlY2F1c2UKKyAgICAgICAgdGhleSBhcmUgYXBwbGllZCBieSB0aGUgaW50ZXJwcmV0ZXIgaW5zdGVhZCBmcm9tIGFuIExQQyBvYmplY3QuCisgICAgICAgIFRvIGRpc3Rpbmd1aXNoIHRob3NlLCB0aGV5IGFyZSBjYWxsZWQgYGBhcHBsaWVkIGxmdW5zJycuCisKK1NFRSBBTFNPCisgICAgICAgIGVmdW5zKExQQyksIGVmdW4oRSksIGFwcGxpZWQoQSksIG1hc3RlcihNKSwgY2FsbF9vdGhlcihFKQpkaWZmIC0tZ2l0IGEvZG9jL0xQQy9scGMgYi9kb2MvTFBDL2xwYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5jMDNkZjBmCi0tLSAvZGV2L251bGwKKysrIGIvZG9jL0xQQy9scGMKQEAgLTAsMCArMSw5IEBACitOQU1FCisgICAgICAgIGxwYworCitERVNDUklQVElPTgorICAgICAgICBUaGlzIGRpcmVjdG9yeSBjb250YWlucyBtYW4gcGFnZXMgYWJvdXQgdmFyaW91cyBhc3BlY3RzIG9mIHRoZQorICAgICAgICBMUEMgbGFuZ3VhZ2UgYXMgaXQgaXMgcHJvdmlkZWQgYnkgQW15bGFhcnMgcGFyc2VyL2RyaXZlci4KKworU0VFIEFMU08KKyAgICAgICAgY29uY2VwdHMoQyksIGRyaXZlcihEKSwgZWZ1bihFKSwgYXBwbGllZChBKSwgbWFzdGVyKE0pCmRpZmYgLS1naXQgYS9kb2MvTFBDL21hcHBpbmdzIGIvZG9jL0xQQy9tYXBwaW5ncwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4zODFlM2M4Ci0tLSAvZGV2L251bGwKKysrIGIvZG9jL0xQQy9tYXBwaW5ncwpAQCAtMCwwICsxLDQ3NCBAQAorQ09OQ0VQVAorICAgICAgICBtYXBwaW5ncworCitMQVNUIFVQREFURQorICAgICAgICBNb24sIDE1IE1hciAxOTk5CisKK0RFU0NSSVBUSU9OCisKKyAgQSBzdGVwLWJ5LXN0ZXAgaW50cm9kdWN0aW9uIHRvIG1hcHBpbmdzOgorICAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKKyAgMS4gV2hhdCBpcyBhIG1hcHBpbmc/CisKKyAgICBBIG1hcHBpbmcgaXMgYSBkYXRhdHlwZSB3aGljaCBhbGxvd3MgdG8gc3RvcmUgZGF0YSBhc3NvY2lhdGVkIHRvIGEga2V5LgorICBJbiBvdGhlciBsYW5ndWFnZXMgIHRoZXkgYXJlIGFsc28gIGtub3duICBhcyAnZGljdGlvbmFyaWVzJyBvciAgJ2FsaXN0cycuCisgIFRoZXJlIGFyZSBhbHNvIGFsaXN0cyBpbiBMUEMgYnV0IHRoZXkgYXJlIG5vdCBhIHNlcGFyYXRlIGRhdGF0eXBlIGJ1dCBhcmUKKyAgaW1wbGVtZW50ZWQgb24gIHRvcCBvZiBhcnJheXMuICBBbGlzdHMgYXJlICB0aGUgcHJlZGVjZXNzb3JzIG9mIG1hcHBpbmdzLgorICBUaGUga2V5cyBhbmQgdGhlIHZhbHVlcyAgY2FuIGJlIG9mICBhbnkgdHlwZS4gIEJ1dCBtb3N0IGNvbW1vbiAgZGF0YXR5cGVzCisgIGZvciBrZXlzIGFyZSBzdHJpbmdzLCBpbnRlZ2VycyBhbmQgb2JqZWN0cy4gIE90aGVycyBsaWtlIGFycmF5cywgbWFwcGluZ3MKKyAgb3IgY2xvc3VyZXMgYXJlbid0IGEgZ29vZCBjaG9pY2UgYmVjYXVzZSBjb21wYXJpc2lvbiBiZXR3ZWVuIGkuZS4gIGFycmF5cworICBvZnRlbiByZXR1cm5zIGZhbHNlICBldmVuIGlmIHRoZXkgZXF1YWwgIGluIGNvbnRlbnQuICBUaGlzIGlzIGJlY2F1c2UgdGhlCisgIGRyaXZlciBjb21wYXJlcyBpLmUuIHR3byBhcnJheXMgYnkgdGhlaXIgaW50ZXJuYWwgcG9pbnRlcnMgYW5kIG5vdCBieQorICB0aGVpciBjb250ZW50LiBUaGUgcmVhc29uIGZvciB0aGlzIGlzIHNpbXBsZTogc3BlZWQuCisKKyAgICBNYXBwaW5ncyAgYXJlIGFsbHdheXMgIHRyZWF0ZWQgIGFzIHJlZmVyZW5jZXMgICAgd2hlbiBwYXNzaW5nICB0aGVtICB0bworICBmdW5jdGlvbnMuIFRoaXMgbWVhbnMgd2hlbiB5b3UgcGFzcyBhIG1hcHBpbmcgIHRvIGFub3RoZXIgb2JqZWN0IGFuZCB0aGlzCisgIG9iamVjdCBtb2RpZmllcyB0aGUgbWFwcGluZyB0aGUgbW9kaWZpY2F0aW9uIHdpbGwgIHRha2UgcGxhY2UgaW4gYSBnbG9iYWwKKyAgc2NvcGUgLSB2aXNpYmxlIHRvIGFsbCBvYmplY3RzIGhvbGRpbmcgdGhpcyBtYXBwaW5nIGluIGEgdmFyaWFibGUuCisKKworICAyLiBXaGF0IGFyZSBtYXBwaW5ncyBnb29kIGZvcj8KKworICAgIFRoZSB0ZXJtICdkaWN0aW9uYXJ5JyAgcHJvYmFibHkgZGVzY3JpYmVzIHRoZSAgdXNlICBvZiBhIG1hcHBpbmcgIGJlc3QuCisgIE9wcG9zZWQgIHRvIGFycmF5cyBtYXBwaW5ncyBkb24ndCBoYXZlICBhIHNwZWNpZmljICBvcmRlci4gVGhleSBwcm92aWRlIGEKKyAgbWVjaGFuaXNtIHRvICAgY3JlYXRlICBhIHNldCAgb2YgYXNzb2NpYXRpb25zICBiZXR3ZWVuICB2YWx1ZXMuICBTdWNoICBhbgorICBhc3NvY2lhdGlvbiBjb25zaXN0cyBvZiBhIHVuaXF1ZSAga2V5IGFuZCBkYXRhICB0aGF0IGlzIGlkZW50aWZpZWQgYnkgdGhlCisgIGtleS4gVGhpbmsgb2YgIGEgZGljdGlvbmFyeSAgd2hlcmUgeW91IGhhdmUgIGEgIHdvcmQgYW5kIGEgZGVmaW5pdGlvbiAgb2YKKyAgaXQuIFlvdSB1c2UgdGhlIHdvcmQgdG8gbG9va3VwIGl0cyBkZWZpbml0aW9uLgorCisgICAgTWFwcGluZ3MgY2FuIGJlIHVzZWQgaS5lLiAgdG8gaG9sZCAgYWxpYXNlcyBmb3IgY29tbWFuZHMuIFRoZSBrZXkgd291bGQKKyAgdGhlbiBiZSB0aGUgIG5hbWUgb2YgIHRoZSBhbGlhcyBhbmQgIHRoZSAgZGF0YSB0aGUgY29tbWFuZChzKSBiZWhpbmQgICBhbgorICBhbGlhcy4gIE9yIHRoZXkgY2FuIGJlIHVzZWQgZm9yICB0aGUgZXhpdHMgb2YgYSAgcm9vbS4gIFRoZSBrZXlzIHdvdWxkIGJlCisgIHRoZSBkaXJlY3Rpb25zIHdoZXJlIG9uZSBjYW4gZ28gIHRvIGFuZCB0aGUgYXNzb2NpYXRlZCAgZGF0YSB3b3VsZCBiZSB0aGUKKyAgZmlsZSBuYW1lcyBvZiB0aGUgIHJvb21zLiAgQnV0IG1hcHBpbmdzIGNhbiAgYWxzbyBiZSB1c2VkICBhcyBhIGtpbmQgb2YgYQorICBzcGFyc2UgYXJyYXkuICAgQSAgc3BhcnNlIGFycmF5IGlzICBhbiAgYXJyYXkgd2hlcmUgbW9zdCBvZiAgdGhlIGVsZW1lbnRzCisgIGFyZW4ndCB1c2VkICAob2NjdXBpZWQgYnkgMCkuICBJLmUuICBpZiAgeW91IHdhbnQgdG8gIHN0b3JlIHZhbHVlcyBhdCB0aGUKKyAgcG9zaXRpb24gMCwgMTMgIGFuZCAzNzY0MiBvZiBhbiAgYXJyYXkgeW91IHdvdWxkICBoYXZlIHRvIGNyZWF0ZSBhbiBhcnJheQorICB3aXRoIGEgc2l6ZSBvZiBhdCBsZWFzdCAzNzY0My4gIFRoaXMgIGNvc3RzIGEgbG90ICBvZiBtZW1vcnkgc28gYSBtYXBwaW5nCisgIHdvdWxkIGJlICBtb3JlIHVzZWZ1bCBiZWNhdXNlIHlvdSB3b3VsZCAgdGhlbiB1c2UgdGhlICBudW1iZXJzIDAsICAxMyBhbmQKKyAgMzc2NDIgYXMgYSBrZXkgYW5kIG5vdCBhcyBhbiBpbmRleCB0byBhIHBvc2l0aW9uICAoYWN0dWFsbHkgdGhlIGtleXMgb2YgYQorICBtYXBwaW5nIGFyZSBzb21ldGltZXMgIGNhbGxlZCBpbmRpY2VzICBidXQgdGhpcyAgaXMganVzdCAgYmVjYXVzZSB0aGUgd2F5CisgIGRhdGEgaXMgYWNjZXNzZWQgaW4gYSBtYXBwaW5nIGlzIHNpbWlsYXIgdG8gIGFycmF5czogYnkgdGhlIFtdIG9wZXJhdG9yKS4KKyAgVGhpcyBhbHNvIGFsbG93cyB0byAgcXVlcnkgYWxsIG9jY3VwaWVkICAgcG9zaXRpb25zIG9mIGEgc3BhcnNlIGFycmF5ICBieQorICBxdWVyeWluZyBmb3IgYWxsICB0aGUga2V5cyBvZiAgdGhlIG1hcHBpbmcgb3Bwb3NlZCAgdG8gYW4gYXJyYXkgd2hlcmUgeW91CisgIGhhdmUgdG8gaXRlcmF0ZSBvdmVyIGFsbCBlbGVtZW50cy4KKworCisgIDMuIEhvdyBkbyBJIGNyZWF0ZSBhIG1hcHBpbmc/CisKKyAgICBUaGVyZSBhcmUgc2V2ZXJhbCB3YXlzIHRvIGRvIHNvLiBUaGUgbW9zdCBjb252ZW5pZW50IGlzIHRoZSBmb2xsb3dpbmc6CisKKyAgICAgIG1hcHBpbmcgbWFwOworICAgICAgbWFwID0gKFsga2V5MDogdmFsdWUwMDsgLi4uOyB2YWx1ZTBuLAorICAgICAgICAgICAgICAgLi4uIDogLi4uICAgIDsgLi4uOyAuLi4gICAgLAorICAgICAgICAgICAgICAga2V5bjogdmFsdWVuMDsgLi4uOyB2YWx1ZW5uIF0pOworCisgICAgQXMgeW91IGNhbiBzZWUsIGEga2V5IG1heSAgaGF2ZSBtb3JlIHRoYW4gIG9uZSB2YWx1ZSBhc3NpZ25lZC4gIEJ1dCB0aGUKKyAgYW1vdW50IG9mIHZhbHVlcyBwZXIga2V5IG11c3QgYWx3YXlzIGJlIGVxdWFsLiAgSXQgIGlzICBldmVuICBwb3NzaWJsZSB0bworICBoYXZlIG1hcHBpbmdzIHdpdGhvdXQgYW55IHZhbHVlcyEKKyAgICBBbm90aGVyICBtZXRob2QgaXMgIHRvIHVzZSB0aGUgICBlZnVuIG1rbWFwcGluZygpLiAgVGhpcyAgZWZ1biBnZXRzIHR3bworICBhcmd1bWVudHMgd2l0aCB0aGUgZmlyc3QgYmVlaW5nIGFuIGFycmF5IG9mIGtleXMgYW5kIHRoZSBmb2xsb3dpbmcgYmVlaW5nCisgIGFycmF5cyBvZiB2YWx1ZXM6CisKKyAgICAgIG1hcHBpbmcgbWFwOworICAgICAgbWFwID0gbWttYXBwaW5nICgoeyBrZXkwICAgLCAuLi4sIGtleW4gICAgfSksCisgICAgICAgICAgICAgICAgICAgICAgICh7IHZhbHVlMDAsIC4uLiwgdmFsdWUwbiB9KSwKKyAgICAgICAgICAgICAgICAgICAgICAgKHsgLi4uICAgICwgLi4uLCAuLi4gICAgIH0pLAorICAgICAgICAgICAgICAgICAgICAgICAoeyB2YWx1ZW4wLCAuLi4sIHZhbHVlbm4gfSkpOworCisgICAgSWYgdGhlIGVmdW4gb25seSBnZXRzIG9uZSBhcmd1bWVudCwgdGhlbiB0aGlzIGFyZ3VtZW50IHdpbGwgYmUgdGFrZW4gYXMKKyAgYW4gYXJyYXkgb2Yga2V5cyBhbmQgYSBtYXBwaW5nICB3aXRob3V0IHZhbHVlcyB3aWxsICBiZSByZXR1cm5lZC4KKworICAgIEFuIGVtcHR5IG1hcHBpbmcgY2FuIGJlIGNyZWF0ZWQgYnkgdXNpbmcgdGhlIGFib3ZlIGRlc2NyaWJlZCBtZXRob2RzIGJ5CisgIHNpbXBseSBvbW1pdHRpbmcgdGhlIGtleXMgYW5kIHZhbHVlczoKKworICAgICAgbWFwcGluZyBtYXA7CisgICAgICBtYXAgPSAoW10pOworICBvcjoKKyAgICAgIG1hcCA9IG1rbWFwcGluZygoe30pLCAoe30pKTsKKworICAgIE9yICBieSAgdXNpbmcgdGhlIGVmdW4gICBtX2FsbG9jYXRlKCkuICBUaGlzIGVmdW4gZ2V0cyAgYXMgIGZpcnN0CisgIGFyZ3VtZW50IHRoZSAgYW1vdW50ICBvZiBrZXlzIHdoaWNoIHdpbGwgIGJlICBhZGRlZCBzb29uIGFuZCAgYW4gb3B0aW9uYWwKKyAgc2Vjb25kIGFyZ3VtZW50IHNwZWNpZnlpbmcgdGhlIHdpZHRoIG9mIHRoZSBtYXBwaW5nOgorCisgICAgICBtYXAgPSBtX2FsbG9jYXRlKG4sIHdpZHRoKTsKKworICAgIFRoZSB2YWx1ZSA8bj4gIG1heSBiZSBhIGJpdCAgY29uZnVzaW5nICBzaW5jZSBtYXBwaW5ncyBzaHJpbmsgYW5kICBncm93CisgIGR5bmFtaWNhbGx5LiBUaGlzIHZhbHVlIGp1c3QgdGVsbHMgdGhlIGRyaXZlciBob3cgJ2xvbmcnIHRoaXMgIG1hcHBpbmcgaXMKKyAgZ29pbmcgdG8gYmUgIHNvIHByb3BlciBtZW1vcnkgIGFsbG9jYXRpb25zICB3aWxsIGJlICBwZXJmb3JtZWQgdG8gIHJlZHVjZQorICB0aGUgb3ZlcmhlYWQgb2YgbWVtb3J5IHJlYWxsb2NhdGlvbi4gIEkuZS4gIGlmIHlvdSB3YW50IHRvIHJlYWQgaW4gYSBmaWxlCisgIGFuZCBzdG9yZSB0aGUgIHJlYWQgZGF0YSBpbiAgYSBtYXBwaW5nICB5b3UgcHJvYmFibHkgIGtub3cgIHRoZSBhbW91bnQgb2YKKyAga2V5cy4gIFNvIHlvdSBhbGxvY2F0ZSAgYSBtYXBwaW5nIHdpdGggdGhpcyAgZWZ1biBhbmQgdGVsbCB0aGUgZHJpdmVyIGhvdworICBtdWNoIG1lbW9yeSBzaG91bGQgIGJlIGFsbG9jYXRlZCAgYnkgc3BlY2lmaW5nICBhIHByb3BlciA8bj4gIHZhbHVlLgorICBUaHVzIGNhdXNpbmcgIGEgICAgc3BlZWR1cCB3aGVuIGFkZGluZyAgdGhlICByZWFkICAgZGF0YSB0byB0aGUgICBtYXBwaW5nCisgIGFmdGVyd2FyZHMuICAgIFRoZSA8d2lkdGg+IGp1c3Qgc3BlY2lmaWVzIGhvdyAgIG1hbnkgIHZhbHVlcyBwZXIga2V5IHRoaXMKKyAgbWFwcGluZyBpcyAgIGdvaW5nIHRvIGhhdmUuIElmICBubyAgd2lkdGggaXMgZ2l2ZW4sIDEgIHdpbGwgIGJlICB0YWtlbiBhcworICBkZWZhdWx0LgorCisgIEFuIGVtcHR5IG1hcHBpbmcgY3JlYXRlZCB3aXRoICcoW10pJyB3aWxsIGFsd2F5cyBoYXZlIGEgd2lkdGggb2YgMS4gVG8KKyAgY3JlYXRlIGVtcHR5IG1hcHBpbmdzIHdpdGggb3RoZXIgd2lkdGhzLCB3cml0ZSBpdCBhcworCisgICAgICBtYXAgPSAoWzp3aWR0aCBdKTsKKworICA8d2lkdGg+IGNhbiBiZSBhbnkgZXhwcmVzc2lvbiByZXR1cm5pbmcgYW4gaW50ZWdlciB2YWx1ZSAoaW5jbHVkaW5nCisgIGZ1bmN0aW9uIGNhbGxzKSwgYW5kIGluIGZhY3QgdGhpcyBub3RhdGlvbiBpcyBqdXN0IGEgZmFuY3kgd2F5IG9mCisgIHdyaXRpbmcKKworICAgICAgbWFwID0gbV9hbGxvY2F0ZSgwLCB3aWR0aCk7CisKKworCisgIDQuIEhvdyBjYW4gSSBtb2RpZnkgdGhlIGRhdGEgb2YgYSBtYXBwaW5nPworCisgICAgQWRkaW5nIGEgIG5ldyBrZXkgaXMgc2ltaWxpYXIgdG8gICBtb2RpZnlpbmcgdGhlIGFzc29jaWF0ZWQgIGRhdGEgb2YgYW4KKyAgZXhpc3Rpbmcga2V5OgorCisgICAgICBtYXAgKz0gKFsga2V5OiB2YWx1ZTA7IC4uLjsgdmFsdWVuIF0pOworCisgICAgT3IgaW4gY2FzZSBvbmx5IGEgc2luZ2xlIHZhbHVlIHNob3VsZCBiZSBtb2RpZmllZDoKKworICAgICAgbWFwW2tleSwgbl0gPSB2YWx1ZW47CisKKyAgICBJZiAgPG4+IGlzIG91dCBvZiAgcmFuZ2Ugb3IgaWYgPGtleT4gZG9lc24ndCAgZXhpc3RzIGFuZCA8bj4gaXMgZ3JlYXRlcgorICB0aGFuIDAgYW4gIklsbGVnYWwgaW5kZXgiIGVycm9yIHdpbGwgYmUgcmVwb3J0ZWQuIElmIDxuPiBpcyBlcXVhbCB0byAwIG9yCisgIHRoZSBtYXBwaW5nIG9ubHkgaGFzIGEgc2luZ2xlIHZhbHVlIHBlciBrZXkgb25lIGNhbiBhYmJyZXZpYXRlIGl0IHdpdGg6CisKKyAgICAgIG1hcFtrZXldID0gdmFsdWU7CisKKyAgICBJZiB0aGVyZSBpcyBubyA8a2V5PiAoYW5kIDxuPiBpcyBlcXVhbCB0byAwIG9yICBub3Qgc3BlY2lmaWVkIGF0IGFsbCkgYQorICBuZXcgb25lIHdpbGwgYmUgYWRkZWQgYXV0b21hdGljYWxseS4KKworICAgIERlbGV0aW9uICAgb2YgYSBrZXkgICAgaXMgIGRvbmUgd2l0aCAgICB0aGUgIC09ICBvcGVyYXRvciBvciAgdGhlICBlZnVuCisgIG1fZGVsZXRlKCkuIEEgbWFwcGluZyBjYW4gb25seSBiZSBzdWJzdHJhY3RlZCBieSBvbmUgd2l0aG91dCBhbnkgdmFsdWVzOgorCisgICAgICBtYXAgLT0gKFsga2V5IF0pOworICBvcjoKKyAgICAgIG1hcCAtPSAoWyBrZXkwLCAuLi4sIGtleW4gXSk7CisKKyAgVGhlIGVmdW4gdGFrZXMgYSBtYXBwaW5nIGFzIGZpcnN0IGFuZCBhIGtleSBhcyBzZWNvbmQgYXJndW1lbnQ6CisKKyAgICAgIG1fZGVsZXRlKG1hcCwga2V5KTsKKworICAgIFRoZSAgZWZ1biAgIG1fZGVsZXRlKCkgcmV0dXJucyAgdGhlIG1hcHBpbmcgICBidXQgYmVjYXVzZSAgbWFwcGluZ3MgYXJlCisgIGhhbmRsZWQgYXMgcmVmZXJlbmNlcyB0aGVyZSBpcyBubyBuZWVkIG9mIGFuIGFzc2lnbm1lbnQgbGlrZToKKworICAgICAgbWFwID0gbV9kZWxldGUobWFwLCBrZXkpOworCisKKyAgNS4gSG93IGNhbiBJIGFjY2VzcyB0aGUgZGF0YSBzdG9yZWQgaW4gYSBtYXBwaW5nPworCisgICAgVGhpcyBjYW4gYmUgZG9uZSBieToKKworICAgICAgdmFsdWVuID0gbWFwW2tleSwgbl07CisKKyAgICBPciBpbiBjYXNlIG9mIGEgbWFwcGluZyB3aXRoIGp1c3Qgb25lIHZhbHVlIHBlciBrZXk6CisKKyAgICAgIHZhbHVlMCA9IG1hcFtrZXldOworCisgICAgSWYgdGhlcmUgaXMgbm8gIDxrZXk+IGluIHRoZSBtYXBwaW5nICBhbmQgPG4+IGlzICAwIG9yIG5vdCBzcGVjaWZpZWQgYXQKKyAgYWxsICh3aGljaCBpcyB0aGUgc2FtZSkgYSAwIHdpbGwgYmUgcmV0dXJuZWQgb3IgaWYgPG4+ICBpcyBncmVhdGVyIHRoYW4gMAorICBhbiAiSWxsZWdhbCBpbmRleCIgZXJyb3Igd2lsbCBiZSByZXBvcnRlZC4KKworCisgIDYuIEhvdyBjYW4gSSB0ZXN0IGZvciB0aGUgZXhpc3RhbmNlIG9mIGEga2V5PworCisgICAgQSAgcmV0dXJuIHZhbHVlIG9mIDAgaXMgIHN1ZmZpY2llbnQgZm9yIG1vc3QgYXBwbGljYXRpb25zIGJ1dCBzb21ldGltZXMKKyAgdGhlIGFtYmlndWl0eSAgYmV0d2VlbiBhbiBleGlzdGluZyB2YWx1ZSBvZiAgMCBhbmQgIGEgbm9uZXhpc3Rpbmcga2V5IGNhbgorICBsZWFkICAgdG8gIGEgIHByb2JsZW0uICBUaGVyZWZvcmUgICBvbmUgIGNhbiB1c2UgICB0aGUgIGVmdW4gbWVtYmVyKCkgIG9yCisgIG1hcHBpbmdfY29udGFpbnMoKSB0byBjaGVjayBpZiB0aGVyZSBhY3R1YWxseSBpcyBhIGtleSBpbiB0aGUgbWFwcGluZzoKKworICAgICAgaWYgKG1lbWJlcihtYXAsIGtleSkpIHsKKyAgICAgICAgLi4uCisgICAgICB9CisgIG9yOgorICAgICAgaWYgKG1hcHBpbmdfY29udGFpbnMoJnZhbHVlMCwgLi4uLCAmdmFsdWVuLCBtYXAsIGtleSkpIHsKKyAgICAgICAgLi4uCisgICAgICB9CisKKyAgICBUaGlzIGFsc28gc2hvd3MgaG93ICBvbmUgY2FuIHJldHJpZXZlIGFsbCB2YWx1ZXMgICBhc3NvY2lhdGVkIHRvIGEgIGtleQorICBmcm9tIGEgbWFwcGluZyBpbiBhIHNpbmdsZSBzdGVwLiBUaGUgJyYnIGlzICB0aGUgcmVmZXJlbmNlIG9wZXJhdG9yIHdoaWNoCisgIGlzIG5lY2Nlc2FyeSB0byBsZXQgdGhlIGVmdW4gc3RvcmUgdGhlIHZhbHVlcyBpbiB0aGUgdmFyaWFibGVzLgorCisgICAgSW4gY2FzZSAgIG9mICBtYXBwaW5ncyAgIHdpdGggICBubyAgdmFsdWVzLCAgIHRoZSAgZWZ1biAgIG1lbWJlcigpICBhbmQKKyAgbWFwcGluZ19jb250YWlucygpIGFyZSBlcXVhbCBpbiB0aGVpciBiZWhhdmlvdXIgIGFuZCB0aGVpciB3YXkgb2YgY2FsbGluZworICBiZWNhdXNlIG1hcHBpbmdfY29udGFpbnMoKSB3b24ndCBnZXQgYW55IHJlZmVyZW5jZSB2YXJpYWJsZXMgdG8gc3RvcmUgdGhlCisgIHZhbHVlcyBpbiAob2J2aW91c2x5LCBiZWNhdXNlIHRoZXJlIGFyZW4ndCBhbnkpLgorCisgICAgIEFsc28gbm9ybWFsbHkgbWVtYmVyKCkgaXMga25vd24gdG8gcmV0dXJuIHRoZSBwb3N0aW9uIG9mIGFuIGVsZW1lbnQgaW4KKyAgYSBsaXN0IChpLmUuICBhICBjaGFyYWN0ZXIgaW4gYSAgc3RyaW5nIG9yIGRhdGEgICBpbiBhbiBhcnJheSkgYW5kIGlmICBhbgorICBlbGVtZW50IGNvdWxkbid0IGJlICBmb3VuZCAtMSBpcyByZXR1cm5lZC4gICBCdXQgaW4gdGhlIGNhc2UgIG9mIG1hcHBpbmdzCisgIHRoZXJlIGFyZSBubyBzdWNoIHRoaW5ncyBhcyBvcmRlciBhbmQgcG9zdGlvbi4gU28gbWVtYmVyKCkgb25seSByZXR1cm5zIDAKKyAgb3IgMS4KKworCisgIDcuIEhvdyBjYW4gSSBjb3B5IGEgbWFwcGluZz8KKworICAgIEEgIG1hcHBpbmcgY2FuICBiZSAgY29waWVkICAgd2l0aCAgdGhlICArICBvcGVyYXRvciAgIG9yIGJ5IHRoZSAgICBlZnVuCisgIGNvcHlfbWFwcGluZygpOgorCisgICAgICBuZXdtYXAgPSAoW10pICsgbWFwOworICBvcjoKKyAgICAgIG5ld21hcCA9IGNvcHlfbWFwcGluZyhtYXApOworCisgICAgQSBtYXBwaW5nIHNob3VsZCBvbmx5IGJlIGNvcGllZCB3aGVuIGl0IGlzIG5lY2Nlc2FyeSB0byBnZXQgYW4gb3duIGNvcHkKKyAgb2YgaXQgdGhhdCAgbXVzdCBub3QgYmUgIHNoYXJlZCBieSBvdGhlciBvYmplY3RzLgorCisKKyAgOC4gSG93IGNhbiBJIGdldCBhbGwga2V5cyBvZiBhIG1hcHBpbmc/CisKKyAgICBUaGUgIGVmdW4gbV9pbmRpY2VzKCkgZ2V0cyBhIG1hcHBpbmcgIGFzIGFyZ3VtZW50ICBhbmQgcmV0dXJucyBhbiBhcnJheQorICBob2xkaW5nIGFsbCBrZXlzIGRlZmluZWQgaW4gdGhpcyBtYXBwaW5nOgorCisgICAgICBrZXlzID0gbV9pbmRpY2VzKG1hcCk7CisKKworICA5LiBIb3cgY2FuIEkgZ2V0IGFsbCB0aGUgdmFsdWVzIG9mIGEgbWFwcGluZz8KKworICAgIFRoZSBlZnVuIG1fdmFsdWVzKCkgZ2V0cyAgYSBtYXBwaW5nIGFzICBhcmd1bWVudCAgYW5kIHJldHVybnMgIGFuIGFycmF5CisgIGhvbGRpbmcgYWxsIHRoZSBmaXJzdCAoc2Vjb25kLCAuLi4pIHZhbHVlcyBvZiBpdC4KKworICAgICAgdmFsdWVzMCA9IG1fdmFsdWVzKG1hcCk7ICAgICByZXR1cm5zIHRoZSBmaXJzdCB2YWx1ZXMKKyAgICAgIHZhbHVlczAgPSBtX3ZhbHVlcyhtYXAsIDApOyAgZGl0bworICAgICAgdmFsdWVzMSA9IG1fdmFsdWVzKG1hcCwgMSk7ICByZXR1cm5zIHRoZSBzZWNvbmQgdmFsdWVzCisgICAgICAgIGV0YworCisKKyAgMTAuIEhvdyBjYW4gSSBkZXRlcm1pbmUgdGhlIHNpemUgb2YgYSBtYXBwaW5nPworCisgICAgQmVjYXVzZSBhIG1hcHBpbmcgaXMgYSBraW5kIG9mIHJlY3RhbmdsZSBpdCBoYXMgdHdvIHNpemVzOiBhIGxlbmd0aCBhbmQKKyAgYSB3aWR0aC4gIFRoZXJlIGFyZSB0aHJlZSBkaWZmZXJlbnQgZWZ1bnMgIHRvIHF1ZXJ5IHRoZXNlIHZhbHVlcy4gVGhlIGZpcnN0CisgIHR3byBhcmUgdGhlICBlZnVucyBzaXplb2YoKSwgd2hpY2ggcmV0dXJucyB0aGUgIGFtb3VudCBvZiBrZXktdmFsdWUKKyAgYXNzb2NpYXRpb25zICh0aGUgbGVuZ3RoIG9mICBhIG1hcHBpbmcpLCBhbmQgd2lkdGhvZigpLCB3aGljaCByZXR1cm5zIHRoZQorICBudW1iZXIgb2YgdmFsdWVzIHBlciBrZXkgKHRoZSB3aWR0aCkuIFRoZSB0aGlyZCBpcyB0aGUgZWZ1biBnZXRfdHlwZV9pbmZvKCkuCisgIGdldF90eXBlX2luZm8oKSBpcyBtZWFudCAgdG8gYmUgYSBmdW5jdGlvbiAgdG8gaWRlbnRpZnkgYSBkYXRhdHlwZS4gICBJdHMKKyAgcmV0dXJuIHZhbHVlIGlzIGFuICBhcnJheSBvZiB0d28gIG51bWVyaWNhbCB2YWx1ZXMuICBUaGUgZmlyc3QgIHNwZWNpZmllcworICB0aGUgZGF0YXR5cGUgICBvZiB0aGUgYXJndW1lbnQgYW5kICAgdGhlIHNlY29uZCBpcyBhICAgZGF0YXR5cGUgZGVwZW5kZW5kCisgIHZhbHVlLiBJbiB0aGUgY2FzZSBvZiBhIG1hcHBpbmcgdGhlIGZpcnN0IHZhbHVlICBpcyBUX01BUFBJTkcgKHdoaWNoIGlzIGEKKyAgdmFsdWUgZGVmaW5lZCBpbiAgPGxwY3R5cGVzLmg+KSBhbmQgdGhlICBzZWNvbmQgdGhlIGFtb3VudCBvZiB2YWx1ZXMgIHBlcgorICBrZXkgKGEuay5hLiAgY29sdW1ucyBvciB0aGUgd2lkdGggIG9mIHRoZSBtYXBwaW5nICAtIGFjdHVhbGx5IGl0IHdvdWxkIGJlCisgIGNvcnJlY3QgdG8gc2F5IHRoYXQgdGhlIHdpZHRoIG9mIGEgbWFwcGluZyBpcyB0aGUgIGFtb3VudCBvZiBjb2x1bW5zIHBsdXMKKyAgb25lIGZvciB0aGUga2V5cyBidXQgdGhpcyBpcyB1bmNvbW1vbikuCisKKworICAxMS4gV2hhdCBpcyB0aGUgYmVzdCBtZXRob2QgdG8gaXRlcmF0ZSBvdmVyIGEgbWFwcGluZz8KKworICAgIEZpcnN0IG9mIGFsbCB0aGUgbWFpbiBwdXJwb3NlIG9mIGEgbWFwcGluZyBpcyBub3QgbWVhbnQgdG8gIGJlIGEgc2V0IG9mCisgIGRhdGEgdG8gaXRlcmF0ZSBvdmVyLiBBZnRlcmFsbCB0aGUga2V5cyBpbiBhIG1hcHBpbmcgaGF2ZSBubyBzcGVjaWZpYyBidXQKKyAgYSByYW5kb20gb3JkZXIgKGF0IGxlYXN0IG9uIHRoZSBMUEMgc2lkZSkuICBCdXQgIHN0aWxsIGl0IGlzIHBvc3NpYmxlIGFuZAorICBzb21ldGltZXMgZXZlbiBuZWNjZXNhcnkgdG8gZG8gc28uCisKKyAgICBJZiBhbGwga2V5LXZhbHVlIGFzc29jaWF0aW9ucyAgc2hvdWxkIGJlIHByb2Nlc3NlZCAgdGhlbiBvbmUgc2hvdWxkIHVzZQorICB3YWxrX21hcHBpbmcoKS4gIElmIGFsbCBrZXlzIG9mIGEgbWFwcGluZyBzaG91bGQgYmUgcHJvY2Vzc2VkIHRvIGNyZWF0ZSBhCisgIG5ldyBtYXBwaW5nIGJlaW5nIGEgc3Vic2V0IG9mIHRoZSBnaXZlbiBvbmUsIHRoZW4gZmlsdGVyX21hcHBpbmcoKSBzaG91bGQKKyAgYmUgIHVzZWQuICBJZiBhbGwgIGtleXMgIGFyZSBnb2luZyB0byAgYmUgIHByb2Nlc3NlZCBhbmQgIHRvIGNyZWF0ZSBhIG5ldworICBtYXBwaW5nIHdpdGggdGhlICBzYW1lIHNldCBvZiBrZXlzIGFzICB0aGUgZ2l2ZW4gbWFwcGluZywgdGhlbiBvbmUgIHdvdWxkCisgIHVzZSBtYXBfbWFwcGluZygpLiAgQnV0IGluIHRoZSBjYXNlIG9mIGFuICBpdGVyYXRpb24gdGhhdCBzaG91bGQvY2FuIHN0b3AKKyAgZXZlbiBpZiBub3QgYWxsIGRhdGEgaXMgcHJvY2Vzc2VkIGl0IGlzIHByb2JhYmx5IHdpc2UgdG8gaXRlcmF0ZSBvdmVyIHRoZQorICBtYXBwaW5nIGJ5IGZpcnN0IHF1ZXJ5aW5nIGZvciB0aGUga2V5cyBhbmQgdGhlbiB0byBpdGVyYXRlIG92ZXIgdGhlbSB3aXRoCisgIGEgZm9yKCkgb3IgYSB3aGlsZSgpIGxvb3AgYW5kIHF1ZXJ5aW5nIHRoZSB2YWx1ZXMgYnkgJ2hhbmQnLgorCisgICAgVGhlIGVmdW4gd2Fsa19tYXBwaW5nKCkgZ2V0cyAgYSBtYXBwaW5nIGFzICBmaXJzdCBhcmd1bWVudCBhbmQgdGhlIG5hbWUKKyAgb2YgYSBmdW5jdGlvbiAgYXMgc2Vjb25kIG9uZS4gQWxsIHRoZSAgZm9sbG93aW5nIGFyZ3VtZW50cyBhcmUgdHJlYXRlZCBhcworICBleHRyYXMgd2hpY2ggIHdpbGwgIGJlICBwYXNzZWQgdG8gdGhlICAgZnVuY3Rpb24gc3BlY2lmaWVkICB3aXRoIHRoZSAgMm5kCisgIGFyZ3VtZW50LiBJbnN0ZWFkIG9mIGEgc3RyaW5nIGZvciB0aGUgbmFtZSBvZiBhIGZ1bmN0aW9uIGEgY2xvc3VyZSBjYW4gYmUKKyAgdXNlZCwgdG9vLiBOb3RoaW5nIHdpbGwgYmUgcmV0dXJuZWQ6CisKKyAgICAgIC4uLgorICAgICAgd2Fsa19tYXBwaW5nKG1hcCwgImZ1bmMiLCB4YXJnMCwgLi4uLCB4YXJnbik7CisgICAgICAuLi4KKworICAgICAgdm9pZCBmdW5jKG1peGVkIGtleSwgbWl4ZWQgdmFsdWUwLCAuLi4sIG1peGVkIHZhbHVlbiwKKyAgICAgICAgICAgICAgICBtaXhlZCB4YXJnMCwgLi4uLCBtaXhlZCB4YXJnbikgeworICAgICAgICAuLi4KKyAgICAgIH0KKworICAgIGZ1bmMoKSB3aWxsIGJlIGNhbGxlZCBmb3IgYWxsIGtleS12YWx1ZSBhc3NvY2lhdGlvbnMgIGFuZCBnZXRzIGFzIGZpcnN0CisgIGFyZ3VtZW50IHRoZSBrZXkuICBUaGUgbmV4dCBhcmd1bWVudHMgYXJlIHRoZSAgdmFsdWVzIGJlaGluZCB0aGUga2V5ICBhbmQKKyAgYXJlIHBhc3NlZCBhcyByZWZlcmVuY2VzLiAgVGhlICByZXN0ICBvZiB0aGUgIHBhc3NlZCBhcmd1bWVudHMgYXJlICB0aG9zZQorICBzcGVjaWZpZWQgYXMgZXh0cmFzLiBCZWNhdXNlIHRoZSB2YWx1ZXMgYXJlIHBhc3NlZCBhcyByZWZlcmVuY2VzIChvcHBvc2VkCisgIHRvICBjb3BpZXMpIGl0IGlzIHBvc3NpYmxlICB0byBtb2RpZnkgdGhlbSAgZnJvbSAgaW5zaWRlIGZ1bmMoKSBieSBzaW1wbHkKKyAgYXNzaWduaW5nIG5ldyB2YWx1ZSB0byB0aGUgdmFyaWFibGVzIDx2YWx1ZTA+LCAuLi4sIDx2YWx1ZW4+LgorCisgICAgVGhlIGVmdW4gZmlsdGVyX21hcHBpbmcoKSBjYWxscyAgYSBmdW5jdGlvbiBmb3IgIGVhY2gga2V5IGluICBhIG1hcHBpbmcKKyAgYW5kIGNyZWF0ZXMgYSBuZXcgbWFwcGluZyAgd2hpY2ggb25seSBjb250YWlucyBrZXktdmFsdWUgYXNzb2NpYXRpb25zIGZvcgorICB3aGljaCB0aGUgY2FsbGVkIGZ1bmN0aW9uIHJldHVybmVkIHRydWUgKG5vdCAgZXF1YWwgMCB0aGF0IGlzKS4gVGhlIGZpcnN0CisgIGFyZ3VtZW50IGlzIHRoZSBtYXBwaW5nIHRvIGl0ZXJhdGUgb3ZlciBhbmQgdGhlIHNlY29uZCBpcyBhIGZ1bmN0aW9uIG5hbWUKKyAgZ2l2ZW4gYXMgYSBzdHJpbmcgb3IgYSBjbG9zdXJlOgorCisgICAgICAuLi4KKyAgICAgIHN1Ym1hcCA9IGZpbHRlcl9tYXBwaW5nKG1hcCwgImZ1bmMiLCB4YXJnMCwgLi4uLCB4YXJnbik7CisgICAgICAuLi4KKworICAgICAgaW50IGZ1bmMobWl4ZWQga2V5LCBtaXhlZCB4YXJnMCwgLi4uLCBtaXhlZCB4YXJnbikgeworICAgICAgICAuLi4KKyAgICAgIH0KKworICAgIGZ1bmMoKSBnZXRzICBhcyBmaXJzdCBhcmd1bWVudCB0aGUga2V5ICBhbmQgdGhlIG90aGVycyBhcmUgdGhvc2UgcGFzc2VkCisgIGFzIGV4dHJhcyB0byBmaWx0ZXJfbWFwcGluZygpLgorCisgICAgVGhlIGVmdW4gbWFwX21hcHBpbmcoKSBnZXRzIGEgbWFwcGluZyBhcyBmaXJzdCBhcmd1bWVudCBhbmQgYSBzdHJpbmcgYXMKKyAgYSBmdW5jdGlvbiBuYW1lIChvciBhZ2FpbiBhIGNsb3N1cmUpIGFzICBzZWNvbmQgYXJndW1lbnQuICBBbnkgYWRkaXRpb25hbAorICBhcmd1bWVudHMgYXJlIGFnYWluIHVzZWQgIGFzIGV4dHJhcyB0aGF0IHdpbGwgIGJlIHBhc3NlZCB0byB0aGUgaXRlcmF0aW9uCisgIGZ1bmN0aW9uLiBUaGlzIGVmdW4gcmV0dXJucyBhIG5ldyBtYXBwaW5nIHdpdGggdGhlIHNhbWUga2V5cyBhcyB0aGUgZ2l2ZW4KKyAgb25lLiAgVGhlIHZhbHVlcyAgcmV0dXJuZWQgYnkgdGhlIGZ1bmN0aW9uICB0aGF0IGlzIGludm9rZWQgIGZvciBlYWNoIGtleQorICB3aWxsIGJlIHVzZWQgYXMgdGhlIGFzc29jaWF0ZWQgZGF0YSBiZWhpbmQgZWFjaCBrZXkgb2YgdGhlIG5ldyBtYXBwaW5nOgorCisgICAgICAuLi4KKyAgICAgIG5ld21hcCA9IG1hcF9tYXBwaW5nKG1hcCwgImZ1bmMiLCB4YXJnMCwgLi4uLCB4YXJnbik7CisgICAgICAuLi4KKworICAgICAgbWl4ZWQgZnVuYyhtaXhlZCBrZXksIG1peGVkIHhhcmcwLCAuLi4sIG1peGVkIHhhcmduKSB7CisgICAgICAgIC4uLgorICAgICAgfQorCisgICAgZnVuYygpIGdldHMgIGFzIGZpcnN0IGFyZ3VtZW50IHRoZSBrZXkgIGFuZCB0aGUgb3RoZXJzIGFyZSB0aG9zZSBwYXNzZWQKKyAgYXMgZXh0cmFzIHRvIG1hcF9tYXBwaW5nKCkuCisKKyAgICBCZWNhdXNlIGEgZnVuY3Rpb24gY2FuIG9ubHkgcmV0dXJuICBhIHNpbmdsZSB2YWx1ZSAgKGV2ZW4gd2hlbiBpdCBpcyBhbgorICBhcnJheSkgaXQgcmVzdHJpY3RzIHRoZSB1c2UgIG9mIG1hcF9tYXBwaW5nKCkgdG8gIG9ubHkgYWxsb3cgY3JlYXRpb24gIG9mCisgIG1hcHBpbmdzIHdpdGggYSBzaW5nbGUgdmFsdWUgcGVyIGtleS4KKworCisgIDEyLiBJcyBpdCBwb3NzaWJsZSB0byBqb2luL2ludGVyc2VjdC9jdXQgbWFwcGluZ3Mgd2l0aCBhbm90aGVyPworCisgICAgSm9pbmluZyBtYXBwaW5ncyBpcyBvbmx5IHBvc3NpYmxlLCBpZiAgdGhleSBoYXZlIHRoZSBzYW1lIHdpZHRoIChhbW91bnQKKyAgb2YgdmFsdWVzIHBlciBrZXkpLiBPbmUgY2FuIHVzZSB0aGUgKyBhbmQgKz0gb3BlcmF0b3I6CisKKyAgICAgIG1hcCA9IG1hcDEgKyBtYXAyICsgLi4uICsgbWFwbjsKKyAgICAgIG1hcCArPSBtYXAxICsgbWFwMiArIC4uLiArIG1hcG47CisKKyAgICBJbnRlcnNlY3Rpb24gICAgIG9mICAgdHdvICAgbWFwcGluZ3MgaXMgICAgb25seSAgICAgIHBvc3NpYmxlIGJ5ICB1c2luZworICBmaWx0ZXJfbWFwcGluZygpLiBUaGVyZSBpcyAgbm8gZWZ1biBvciBvcGVyYXRvciAgd2hpY2ggZmVhdHVyZXMgdGhpcy4gVGhlCisgICdlYXNpZXN0JyB3YXkgbWF5IGJlIHRoZSBmb2xsb3dpbmcgZnVuY3Rpb246CisKKyAgICAgIG1hcHBpbmcgaW50ZXJzZWN0X21hcHBpbmcobWFwcGluZyBtYXAxLCBtYXBwaW5nIG1hcDIpIHsKKyAgICAgICAgY2xvc3VyZSBjbDsKKworICAgICAgICBjbCA9IGxhbWJkYSgoeyAna2V5IH0pLCAoeyAjJ21lbWJlciwgbWFwMiwgJ2tleSB9KSk7CisgICAgICAgIHJldHVybiBmaWx0ZXJfbWFwcGluZyhtYXAxLCBjbCwgbWFwMik7CisgICAgICB9CisKKyAgICBUaGlzIGZ1bmN0aW9uIHJldHVybnMgYSAgbmV3IG1hcHBpbmcgd2hpY2ggICBjb25zaXN0cyBvZiBhbGwgIGtleS12YWx1ZQorICBhc3NvY2lhdGlvbnMgICBvZiAgPG1hcDE+ICBmb3Igd2hpY2ggIGFuICBlcXVhbCAga2V5ICBjb3VsZCAgIGJlIGZvdW5kIGluCisgIDxtYXAyPi4gVGhpcyBmdW5jdGlvbiB1c2VzICBhIGNsb3N1cmUgd2hpY2ggcmV0dXJucyAwICBvciAxICBkZXBlbmRpbmcgb24KKyAgd2V0aGVyIGEga2V5IGZyb20gPG1hcDE+IGlzIGNvbnRhaW5lZCBpbiA8bWFwMj4gb3Igbm90LgorCisgICAgQ3V0dGluZyBvdXQgIGFsbCBrZXktdmFsdWUgYXNzb2NpYXRpb25zIG9mIGEgICBtYXBwaW5nIGZvciB3aGljaCAgYSBrZXkKKyAgY291bGQgYmUgIGZvdW5kIGluIGFub3RoZXIgbWFwcGluZyAgY2FuICBiZSBkb25lICBieSB1c2luZyAgdGhlICAtIGFuZCAtPQorICBvcGVyYXRvcjoKKworICAgICAgbWFwcGluZyBjdXRfbWFwcGluZyhtYXBwaW5nIG1hcDEsIG1hcHBpbmcgbWFwMikgeworICAgICAgICByZXR1cm4gbWFwMSAtIG1rbWFwcGluZyhtX2luZGljZXMobWFwMikpOworICAgICAgfQorCisgICAgQmVjYXVzZSBhIG1hcGluZyBjYW4gIG9ubHkgYmUgc3Vic3RyYWN0ZWQgYnkgb25lICB3aXRob3V0IGFueSB2YWx1ZXMgd2UKKyAgZmlyc3QgaGF2ZSB0byBjcmVhdGUgc3VjaCBieSB1c2luZyBtX2luZGljZXMoKSBhbmQgbWttYXBwaW5nKCkuCisKKworICAxMy4gV2hhdCBhcmUgdGhvc2UgbWFwcGluZ3Mgd2l0aG91dCBhbnkgdmFsdWVzIChiZXNpZGVzIGtleXMpIGdvb2QgZm9yPworCisgICAgQmVjYXVzZSB0aGUgd2F5IGhvdyB0aGUgZHJpdmVyICBzZWFyY2hlcyBmb3IgYSAga2V5IGluIGEgbWFwcGluZyBpcworICByYXRoZXIgZmFzdCwgdGhvc2UgbWFwcGluZ3MgY2FuIGJlIHVzZWQgYXMgYSAgc2V0IG9mIGVsZW1lbnRzIHdpdGggYSBmYXN0CisgIG1ldGhvZCBmb3IgdGVzdGluZyBpZiBhbiBlbGVtZW50IGlzICBjb250YWluZWQgaW4gdGhlIHNldC4gVGhpcyB0ZWNobmlxdWUKKyAgaXMgY2FsbGVkIGhhc2hpbmcgKGZ1cnRoZXIgIGV4cGxhbmF0aW9uICAgd291bGQgbGVhZCAgdG9vIGZhcikgIHdoaWNoICBpcworICBmYXN0ZXIgIHRoYW4gc2VhcmNoaW5nIGZvciAgdmFsdWVzICBpbiBhcnJheSAgKHdoaWNoICBpcyBkb25lIGluIGEgbGluZWFyCisgIGZhc2hpb24pLgorCisgICAgQW5vdGhlciAobWF5YmUgIG1vcmUgcHJhdGljYWwpIHVzZSAgb2YgdGhlc2UgIG1hcHBpbmdzICBhcmUgdG8gY3JlYXRlIGEKKyAgYXJyYXkgb2YgdW5pcXVlIHZhbHVlcyBvdXQgb2YgYW4gYXJyYXkgd2l0aCBzZXZlcmFsIGVxdWFsIHZhbHVlczoKKworICAgICAgdW5pcXVlcyA9IG1faW5kaWNlcyhta21hcHBpbmcoYXJyYXkpKTsKKworICAgIG1rbWFwcGluZygpIHVzZXMgIDxhcnJheT4gdG8gIGNyZWF0ZSAgYSBtYXBwaW5nIHdpdGhvdXQgYW55ICB2YWx1ZXMgYnV0CisgIGp1c3Qga2V5cy4gQW5kICBiZWNhdXNlIGEgbWFwcGluZyBjYW4gb25seSAgaGF2ZSB1bmlxdWUga2V5cyBhbGwgbXVsdGlwbGUKKyAgdmFsdWVzIGluIDxhcnJheT4gYXJlIHRha2VuIGFzIG9uZS4gIFRoZSBjYWxsIG9mIG1faW5kaWNlcygpIHRoZW4gcmV0dXJucworICBhbiAgYXJyYXkgIG9mICB0aGVzZSAgdW5pcXVlIGtleXMuICBBY3R1YWxseSB3ZSAgb25seSAgbWFrZSAgdXNlIG9mIHRob3NlCisgIG1hcHBpbmdzIHRlbXBvcmFyaWx5LgorCisKKyAgMTQuIEhvdyBjYW4gSSBjb252ZXJ0IGFuIGFsaXN0IGludG8gYSAgbWFwcGluZyBhbmQgdmljZSB2ZXJzYT8KKworICAgIFRoZXJlIGFyZSBubyBzcGVjaWFsIGVmdW5zIHdoaWNoIGhhbmRsZSBzdWNoIGNvbnZlcnNpb25zLiBCdXQgaXQgY2FuIGJlCisgIGRvbmUgYnkgdGhlIGZvbGxvd2luZyBmdW5jdGlvbnM6CisKKyAgICAgIG1hcHBpbmcgYWxpc3RfdG9fbWFwcGluZyhtaXhlZCAqYWxpc3QpIHsKKyAgICAgICAgcmV0dXJuIGFwcGx5KCMnbWttYXBwaW5nLCBhbGlzdCk7CisgICAgICB9CisKKyAgICBUaGUgZWZ1biBhcHBseSgpIHRha2VzIGEgY2xvc3VyZSBhbmQgYW4gYXJyYXkgb2YgdmFsdWVzIGFuZCBwYXNzZXMgZWFjaAorICBlbGVtZW50IG9mIHRoZSAgYXJyYXkgYXMgYW4gIGFyZ3VtZW50ICB0byB0aGUgIGNsb3N1cmUuIEJlY2F1c2UgIGFuIGFsaXN0CisgIGNvbnNpc3RzIG9mIGFuIGFycmF5IG9mIGFycmF5cyB3aXRoIHRoZSBmaXJzdCBiZWVpbmcgdGhlIGxpc3Qgb2Yga2V5cyBhbmQKKyAgdGhlIG90aGVycyB0aGUgdmFsdWVzIGFzc29jaWF0ZWQgdG8gZWFjaCBrZXkgcGFzc2luZyB0aGVtIGFzIGFyZ3VtZW50cyB0bworICB0aGUgZWZ1biBjbG9zdXJlICMnbWttYXBwaW5nIHZpYSBhcHBseSgpIGNhdXNlcyB0aGUgY3JlYXRpb24gb2YgYSBtYXBwaW5nCisgIG91dCBvZiBhbiBhbGlzdC4KKworICAgICAgbWl4ZWQgKm1hcHBpbmdfdG9fYWxpc3QobWFwcGluZyBtYXApIHsKKyAgICAgICAgbWl4ZWQgKmFsaXN0OworICAgICAgICBzeW1ib2wgKnZhcnM7CisgICAgICAgIHN0cmluZyB2YXI7CisgICAgICAgIGNsb3N1cmUgY2w7CisgICAgICAgIGludCB3aWR0aDsKKworICAgICAgICB3aWR0aCA9IGdldF90eXBlX2luZm8obWFwKVsxXTsKKyAgICAgICAgYWxpc3QgPSBhbGxvY2F0ZSh3aWR0aCArIDEpOworICAgICAgICB2YXJzICA9IGFsbG9jYXRlKHdpZHRoICsgMik7CisgICAgICAgIGZvciAodmFyID0gImEiOyB3aWR0aDsgdmFyWzBdKyssIHdpZHRoLS0pIHsKKyAgICAgICAgICBhbGlzdFt3aWR0aF0gPSAoe30pOworICAgICAgICAgIHZhcnNbd2lkdGhdICA9IHF1b3RlKHZhcik7CisgICAgICAgIH0KKyAgICAgICAgYWxpc3RbMF0gPSAoe30pOworICAgICAgICB2YXJzWzBdICA9ICdrZXk7CisgICAgICAgIHZhcnNbPDFdID0gJ2FsaXN0OworICAgICAgICBjbCA9IGxhbWJkYSh2YXJzLCAoeyAjJz0sICdhbGlzdCwgKHsgIydpbnNlcnRfYWxpc3QgfSkgKyB2YXJzIH0pKTsKKyAgICAgICAgd2Fsa19tYXBwaW5nKG1hcCwgY2wsICZhbGlzdCk7CisgICAgICAgIHJldHVybiBhbGlzdDsKKyAgICAgIH0KKworICAgIFRoaXMgZnVuY3Rpb24gaXMgIGEgYml0IG1vcmUgIGNvbXBsaWNhdGVkICB0aGFuIHRoZSBvdGhlciAgYW5kIGRldGFpbGVkCisgIGRlc2NyaXB0aW9uIHdvdWxkIGxlYWQgICB0b28gZmFyIG9mICAgdGhlIHRvcGljLiAgVGhpcyAgZnVuY3Rpb24gaGFzICBvbmUKKyAgcmVzdHJpY3Rpb246ICBpdCBjYW4gb25seSB0dXJuIGEgIG1hcHBpbmdzIHdpdGggdXAgdG8gIDI2ICB2YWx1ZXMgcGVyIGtleQorICBpbnRvIGFuICBhbGlzdC4gICAgQnV0ICB0aGlzICBzaG91bGQgIGJlICAgc3VmZmljaWVudCBmb3IgcHJvYmFibHkgICAgYWxsCisgIGFwcGxpY2F0aW9ucyB3aGljaCB1c2UgbWFwcGluZ3MuCisKKyAgQW5kIEh5cHMgZnVydGhlciBjb21tZW50IG9uIHRoaXM6CisgICAgICAgIFRoZSBmdW5jdGlvbiBtYXBwaW5nX3RvX2FsaXN0KCkgaXMgYWxzbyBub3QgdGhhdAorICAgICAgICBjbGV2ZXIgYmVjYXVzZSBpbnNlcnRfYWxpc3QoKSBhbGx3YXlzIGNyZWF0ZXMgYSBuZXcKKyAgICAgICAgYWxpc3QuICBBIHNlY29uZCAob3B0aW9uYWwpIGFyZ3VtZW50IHRvIG1fdmFsdWVzKCkgdG8KKyAgICAgICAgc3BlY2lmeSB0aGUgdmFsdWUgY29sdW1uIHdvdWxkIGJlIGJldHRlci4gQmVzaWRlcworICAgICAgICB0aGlzLCB0aGUgY29udmVyc2lvbiBvZiBhIG1hcHBpbmcgaW50byBhbiBhbGlzdCBjb3VsZAorICAgICAgICBiZSBkb25lIGJ5IHRvX2FycmF5KCkuCisKKyAgMTUuIERpcnR5IE1hcHBpbmdzCisKKyAgJ0RpcnR5IG1hcHBpbmdzJyBhcmUgbm90aGluZyB0aGUgTFBDIHByb2dyYW1tZXIgZGlyZWN0bHkgaXMgaW52b2x2ZWQKKyAgd2l0aCwgaG93ZXZlciwgYXMgaXQgcmVsYXRlcyB0byB0aGUgd2F5IG1hcHBpbmdzIGFyZSBpbXBsZW1lbnRlZAorICBpbnRlcm5hbGx5IGJ5IHRoZSBnYW1lZHJpdmVyLiBIb3dldmVyLCBhcyB0aGlzIHRlcm0gc2hvd3MgdXAgaW4KKyAgdmFyaW91cyBkcml2ZXIgc3RhdGlzdGljcywgaXQgaXMgZXhwbGFpbmVkIGhlcmUuCisKKyAgVGhlcmUgYXJlIHR3byBmdW5kYW1lbnRhbCBhcHByb2FjaGVzIHRvIGltcGxlbWVudCBtYXBwaW5nczoKKworICAgIDEuIFN0b3JlIGFsbCBkYXRhIGVudHJpZXMgaW4gYW4gYXJyYXktbGlrZSBzdHJ1Y3R1cmUsIGluIHNvcnRlZCBvcmRlci4gCisgICAgMi4gU3RvcmUgYWxsIGRhdGEgaW4gYSBoYXNodGFibGUsIGVhY2ggZW50cnkgYWxsb2NhZWQgc2VwYXJhdGVseS4KKworICBNZXRob2QgMSBpcyB2ZXJ5IHNwYWNlIGVmZmljaWVudCwgYXMgaXQgZG9lc24ndCBuZWVkIG11Y2ggb3ZlcmhlYWQKKyAgcGVyIGVudHJ5OyBob3dldmVyLCBpbnNlcnRpb25zIGFuZCBkZWxldGlvbnMgb2YgZW50cmllcyBhcmUKKyAgcmVsYXRpdmVseSBzbG93IGFzIGFsbCBvdGhlciBlbnRyaWVzIG5lZWQgdG8gYmUgbW92ZWQuICDCoMKgwqAKKyAgTWV0aG9kIDIgaXMgdmVyeSBmYXN0IGFzIG5vdGhpbmcgbmVlZHMgdG8gYmUgbW92ZWQgaW4gbWVtb3J5LAorICBob3dldmVyIGl0IGhhcyBhIGxhcmdlIG92ZXJoZWFkLgorCisgIFRoZSBnYW1lZHJpdmVyIHVzZXMgYSBoeWJyaWQgbWV0aG9kOiBhdCB0aGUgYmFzaXMgaXMgYSBtYXBwaW5nCisgIGltcGxlbWVudGF0aW9uIGJhc2VkIG9uIGFycmF5cy4gSG93ZXZlciB0aGUgZHJpdmVyIHVzZXMgYSBoYXNoIHRhYmxlCisgIGluIGFkZGl0aW9uIHRvIGhhbmRsZSBhbGwgdGhlIG9uZ29pbmcgaW5zZXJ0aW9ucyBhbmQgZGVsZXRpb25zLgorICBFdmVyeSBvbmNlIGluIGEgd2hpbGUsIHRoZSBjb250ZW50cyBvZiB0aGUgaGFzaCB0YWJsZSBhcmUgc29ydGVkCisgIGludG8gdGhlIGJhc2UgYXJyYXksIHJlYXNvbmluZyB0aGF0IGFueSBlbnRyeSBzdXJ2aXZpbmcgZm9yIGxvbmdlcgorICB0aW1lIGluIHRoZSBoYXNoIHRhYmxlIGlzIHdvcnRoIGtlZXBpbmcgaW4gYSBtb3JlIHNwYWNlLWVmZmljaWVudAorICBtYW5uZXIuICdEaXJ0eScgbWFwcGluZ3MgYXJlIHN1Y2ggbWFwcGluZ3Mgd2l0aCBib3RoIGFuIGFycmF5IGFuZCBhCisgIGhhc2ggcGFydCwgJ2NsZWFuJyBtYXBwaW5ncyBhcmUgdGhvc2Ugd2l0aCBqdXN0IGFuIGFycmF5IHBhcnQuCisKK0hJU1RPUlkKKyAgICAgICAgVGhlIChbOndpZHRoIF0pIG5vdGF0aW9uIHdhcyBhZGRlZCBpbiBMRE11ZCAzLjIuOS8zLjMuMjA4IC4KKworU0VFIEFMU08KKyAgICAgICAgYWxpc3RzKExQQyksIGNsb3N1cmVzKExQQyksIHN0cnVjdHMoTFBDKSwgbWttYXBwaW5nKEUpLAorICAgICAgICB3YWxrX21hcHBpbmcoRSkKZGlmZiAtLWdpdCBhL2RvYy9MUEMvbW9kaWZpZXJzIGIvZG9jL0xQQy9tb2RpZmllcnMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYTMwOTA0ZQotLS0gL2Rldi9udWxsCisrKyBiL2RvYy9MUEMvbW9kaWZpZXJzCkBAIC0wLDAgKzEsMTgyIEBACitDT05DRVBUCisgICAgICAgIG1vZGlmaWVycworCitERVNDUklQVElPTgorICAgICAgICBBIG1vZGlmaWVyIGNoYW5nZXMgdGhlIHN5bnRhY3RpYyBhbmQvb3Igc2VtYW50aWMgYmVoYXZpb3VyIG9mCisgICAgICAgIGFuIG9iamVjdC1nbG9iYWwgdmFyaWFibGUgb3IgYSBmdW5jdGlvbiBpbiBhbiBvYmplY3QuCisgICAgICAgIFRoZSBleGlzdGluZyBtb2RpZmllcnMgYXJlIGRlc2NyaWJlZCBiZWxvdy4KKyAgICAgICAgVG8gdXNlIGEgbW9kaWZpZXIganVzdCBwcmVwZW5kIGl0IHRvIHRoZSBkZWNsYXJhdGlvbi4gSWYgc2V2ZXJhbAorICAgICAgICBtb2RpZmllcnMgYXJlIHRvIGJlIHVzZWQgdGhlaXIgb3JkZXIgZG9lcyBub3QgbWF0dGVyOgorCisgICAgICAgIHByaXZhdGUgaW50IGJhcjsgICAgICAgICAgICAgICAgICAgICAgICAgLy8gZXhhbXBsZSBmb3IgYSB2YXJpYWJsZQorICAgICAgICBwcm90ZWN0ZWQgbm9tYXNrIGludCBmb28oKSB7IHJldHVybiAzOyB9IC8vIGV4YW1wbGUgZm9yIGEgZnVuY3Rpb24KKworICAgICAgICBGb3IgZnVuY3Rpb25zOgorICAgICAgICB+fn5+fn5+fn5+fn5+fgorICAgICAgICBwcml2YXRlICAgLS0gc3VjaCBmdW5jdGlvbnMgY2FuIG9ubHkgYmUgY2FsbGVkIHdpdGggYW4gaW50ZXJuYWwKKyAgICAgICAgICAgICAgICAgICAgIGNhbGwgZnJvbSB3aXRoaW4gdGhpcyBmaWxlLiBOb3QgZXZlbiBpbmhlcml0aW5nCisgICAgICAgICAgICAgICAgICAgICBvYmplY3RzIGNhbiBjYWxsIHRoZXNlIGZ1bmN0aW9ucy4gWW91IGNhbiBuZXZlcnRoZWxlc3MKKyAgICAgICAgICAgICAgICAgICAgIGJ1aWxkIGFuIGxmdW4tY2xvc3VyZSB3aXRoICMnIG91dCBvZiBhIHByaXZhdGUgZnVuY3Rpb24KKyAgICAgICAgICAgICAgICAgICAgIChidXQgeW91IGNhbm5vdCBzYXZlIGFuZCByZXN0b3JlIGl0KS4KKyAgICAgICAgcHJvdGVjdGVkIC0tIHN1Y2ggZnVuY3Rpb25zIGNhbiBiZSBjYWxsZWQgZnJvbSB3aXRoaW4gdGhlIG9iamVjdCwKKyAgICAgICAgICAgICAgICAgICAgIG9yIGZyb20gaW5oZXJpdGluZyBvYmplY3RzOyBidXQgaW4gbmVpdGhlciBjYXNlCisgICAgICAgICAgICAgICAgICAgICB3aXRoIGNhbGxfb3RoZXIoKS4gSXQgaXMgcG9zc2libGUgdG8gY3JlYXRlICMnIGNsb3N1cmVzCisgICAgICAgICAgICAgICAgICAgICBvciB1c2Ugc3ltYm9sX2Z1bmN0aW9uKCkgZnJvbSB3aXRoaW4gdGhlIG9iamVjdC4KKyAgICAgICAgICAgICAgICAgICAgIEl0cyB1c2UgaXMgcHJlZmVycmVkIG92ZXIgdGhlIG9sZGVyICJzdGF0aWMiLgorICAgICAgICBzdGF0aWMgICAgLS0gc3VjaCBmdW5jdGlvbnMgY2FuIGJlIGNhbGxlZCBmcm9tIHdpdGhpbiB0aGUgb2JqZWN0CisgICAgICAgICAgICAgICAgICAgICBpbiBlaXRoZXIgd2F5IChpbnRlcm5hbCBjYWxsIG9yIHdpdGggY2FsbF9vdGhlcigpKS4KKyAgICAgICAgICAgICAgICAgICAgIEluaGVyaXRpbmcgb2JqZWN0cyBjYW4gY2FsbCBzdWNoIGZ1bmN0aW9ucy4KKyAgICAgICAgICAgICAgICAgICAgIEJ1dCBpdCBpcyBub3QgcG9zc2libGUgdG8gY2FsbCBzdGF0aWMgZnVuY3Rpb25zIGZyb20KKyAgICAgICAgICAgICAgICAgICAgIG90aGVyIG9iamVjdHMgdmlhIGNhbGxfb3RoZXIoKS4KKyAgICAgICAgICAgICAgICAgICAgIFRoZSB1c2Ugb2YgJ3N0YXRpYycgaW4gbmV3IGNvZGUgaXMgbm90IHJlY29tbWVuZGVkLgorICAgICAgICAgICAgICAgICAgICAgTm90ZSB0aGF0IGFuIGFkZF9hY3Rpb24oKSBpcyB0cmVhdGVkIGxpa2UgYSBjYWxsCisgICAgICAgICAgICAgICAgICAgICBmcm9tIHdpdGhpbiB0aGUgb2JqZWN0IGV4Y2VwdCB0aGUgcGxheWVyIHdobyBnb3QgdGhlCisgICAgICAgICAgICAgICAgICAgICBhZGRfYWN0aW9uKCkgd2FzIGZvcmNlZCAodGh1cyBpdCBpcyBhIHNpbXBsZSB3YXkgdG8KKyAgICAgICAgICAgICAgICAgICAgIHNlY3VyZSBhbiBhZGRfYWN0aW9uKCkgYWdhaW5zdCBmb3JjZXMsIGFsdGhvdWdoIHRoaXMKKyAgICAgICAgICAgICAgICAgICAgIG1ldGhvZCBoYXMgdGhlIHNldmVyZSBkaXNhZHZhbnRhZ2VzIG9mIHJhaXNpbmcgYW4gZXJyb3IKKyAgICAgICAgICAgICAgICAgICAgIGF0IHRoZSBmb3JjZSBzbyBiZXR0ZXIgdXNlIHRoZSBzZWN1cml0eSBzeXN0ZW0pLgorICAgICAgICAgICAgICAgICAgICAgQWxzbyBlZnVucyBsaWtlIGNhbGxfb3V0KCkgb3IgaW5wdXRfdG8oKSBjYW4gY2FsbAorICAgICAgICAgICAgICAgICAgICAgdGhlc2UgZnVuY3Rpb25zIGlmIGdpdmVuIGFzIGEgc3RyaW5nLgorICAgICAgICBwdWJsaWMgICAgLS0gdGhpcyBpcyB0aGUgZGVmYXVsdCB0eXBlLiBTdWNoIGZ1bmN0aW9ucyBjYW4gYmUgY2FsbGVkCisgICAgICAgICAgICAgICAgICAgICBmcm9tIHdpdGhpbiB0aGUgZmlsZSBhcyB3ZWxsIGFzIGZyb20gaW5oZXJpdGluZyBvYmplY3RzCisgICAgICAgICAgICAgICAgICAgICBhbmQgb3RoZXIgb2JqZWN0cyB2aWEgY2FsbF9vdGhlcigpLgorICAgICAgICAgICAgICAgICAgICAgVG8gZGVjbGFyZSBhIGZ1bmN0aW9uIHB1YmxpYyBvbmx5IHJlc3VsdHMgaW4gdGhlCisgICAgICAgICAgICAgICAgICAgICBpbXBvc3NpYmlsaXR5IHRvIGNoYW5nZSB0aGUgYWNjZXNzaWJpbGl0eSBhdCB0aGUKKyAgICAgICAgICAgICAgICAgICAgIGluaGVyaXQgc3RhdGVtZW50IChzZWUgYmVsb3cpLiBObyBlcnJvciB3aWxsIG9jY3VyLAorICAgICAgICAgICAgICAgICAgICAgb25seSB0aGUgdHlwZSB3aWxsIG5vdCBiZSBtb2RpZmllZCBieSB0aGUgaW5oZXJpdAorICAgICAgICAgICAgICAgICAgICAgc3RhdGVtZW50LgorICAgICAgICBub21hc2sgICAgLS0gc3VjaCBmdW5jdGlvbnMgY2Fubm90IGJlIG92ZXJyaWRkZW4gYnkgaW5oZXJpdGluZworICAgICAgICAgICAgICAgICAgICAgb2JqZWN0cy4gSWYgeW91IGhhdmUgdGhlIGZ1biBmb28oKSBkZWZpbmVkIGluIHlvdXIKKyAgICAgICAgICAgICAgICAgICAgIG9iamVjdCBhbmQgaW5oZXJpdCBhbiBvYmplY3Qgd2hpY2ggYWxzbyBoYXMgZGVjbGFyZWQKKyAgICAgICAgICAgICAgICAgICAgIGEgZnVuY3Rpb24gZm9vKCkgYW5kIHRoaXMgbm9tYXNrLCB5b3Ugd2lsbCBnZXQgYW4KKyAgICAgICAgICAgICAgICAgICAgIGNvbXBpbGUgZXJyb3IgaWYgeW91IHRyeSB0byBsb2FkIHlvdXIgb2JqZWN0LgorICAgICAgICAgICAgICAgICAgICAgRnVydGhlcm1vcmUgYSBzaGFkb3cgd2lsbCBmYWlsIGlmIGl0IHRyaWVzIHRvIHNoYWRvdworICAgICAgICAgICAgICAgICAgICAgYSBub21hc2sgZGVjbGFyZWQgZnVuY3Rpb24uCisgICAgICAgIHZhcmFyZ3MgICAtLSB0aGlzIGNoYW5nZXMgdGhlIHN5bnRheCBvZiB0aGUgZnVuY3Rpb24gaW4gYSB3YXkgdGhhdAorICAgICAgICAgICAgICAgICAgICAgbm90IGFsbCBvZiB0aGUgYXJndW1lbnRzIGluIHRoZSBkZWNsYXJhdGlvbiBtdXN0IGJlCisgICAgICAgICAgICAgICAgICAgICBnaXZlbiBhdCB0aGUgY2FsbC4gVGhpcyBpcyBvZnRlbiB2ZXJ5IHVzZWZ1bGwgaWYgc29tZQorICAgICAgICAgICAgICAgICAgICAgb2YgdGhlIGFyZ3VtZW50cyBzaGFsbCBiZSBvbWl0YWJsZSAodGhlIG9taXR0ZWQKKyAgICAgICAgICAgICAgICAgICAgIGFyZ3VtZW50cyBhcmUgc2V0IHRvIDAgaWYgdGhlIGZ1bmN0aW9uIGlzIGNhbGxlZCB3aXRoCisgICAgICAgICAgICAgICAgICAgICBmZXdlciBhcmd1bWVudHMgdGhhbiBzcGVjaWZpZWQpLgorICAgICAgICAgICAgICAgICAgICAgVGhpcyBpcyBtYWlubHkgd2l0aGluIHRoZSBvYmplY3QgcmVhbGx5IG5lY2Vzc2FyeTsKKyAgICAgICAgICAgICAgICAgICAgIGNhbGxfb3RoZXIoKXMgdXN1YWxseSAodGhhdCBpcyBpZiB0aGV5IGRvIG5vdCBoYXZlIGEKKyAgICAgICAgICAgICAgICAgICAgIGNlcnRhaW4gcHJhZ21hICgnbWFuIHByYWdtYScpKSBkbyBub3QgbmVlZCB0aGUgY2FsbGVkCisgICAgICAgICAgICAgICAgICAgICBmdW5jdGlvbiB0byBiZSBkZWNsYXJlZCB2YXJhcmdzIHRvIG9taXQgYW55IGFyZ3VtZW50cywKKyAgICAgICAgICAgICAgICAgICAgIGJ1dCBpdCBpcyBnb29kIHN0eWxlIHRvIHVzZSB0aGlzIG1vZGlmaWVyIHRvIGRvY3VtZW50CisgICAgICAgICAgICAgICAgICAgICB0aGUgY29kZSBieSB0aGlzLgorICAgICAgICBkZXByZWNhdGVkIC0gV2hlbmV2ZXIgdGhpcyBmdW5jdGlvbiBpcyBjYWxsZWQsIGEgd2FybmluZyBpcyBpc3N1ZWQuCisgICAgICAgICAgICAgICAgICAgICBVc3VhbGx5IHRoaXMgaXMgZG9uZSBhdCBjb21waWxlLXRpbWUuIEV4Y2VwdGlvbnMgYXJlCisgICAgICAgICAgICAgICAgICAgICBjYWxsX290aGVycyBhbmQgc3ltYm9sX2Z1bmN0aW9uKCkgd2hpY2ggd2FybiBhdCBydW4tdGltZS4KKworICAgICAgICBGb3Igb2JqZWN0LWdsb2JhbCB2YXJpYWJsZXM6CisgICAgICAgIH5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn4KKyAgICAgICAgcHJpdmF0ZSAgIC0tIHN1Y2ggdmFyaWFibGVzIGNhbiBvbmx5IGJlIGFjY2Vzc2VkIGZyb20gd2l0aGluIHRoZQorICAgICAgICAgICAgICAgICAgICAgc2FtZSBvYmplY3QuIE5vdCBldmVuIGluaGVyaXRpbmcgb2JqZWN0cyBjYW4gYWNjZXNzCisgICAgICAgICAgICAgICAgICAgICBwcml2YXRlIHZhcmlhYmxlcy4KKyAgICAgICAgICAgICAgICAgICAgIEl0IGlzIGEgZ29vZCBzdHlsZSB0byBkZWNsYXJlIGFsbCBpbnRlcm5hbCB2YXJpYWJsZXMKKyAgICAgICAgICAgICAgICAgICAgIHByaXZhdGUgdG8gcHJldmVudCBpbmhlcml0aW5nIG9iamVjdHMgZnJvbSBhY2Nlc3NpbmcKKyAgICAgICAgICAgICAgICAgICAgIHRoZSB2YXJpYWJsZXMgZGlyZWN0bHkgd2l0aG91dCB1c2luZyBmdW5jdGlvbnMuCisgICAgICAgIG5vc2F2ZSAgICAtLSBzdWNoIHZhcmlhYmxlcyBhcmUgbmVpdGhlciBzdG9yZWQgd2l0aCBzYXZlX29iamVjdCgpCisgICAgICAgICAgICAgICAgICAgICBub3IgcmVzdG9yZWQgd2l0aCByZXN0b3JlX29iamVjdCgpLiBUaGlzIGNhbiBiZSB2ZXJ5CisgICAgICAgICAgICAgICAgICAgICB1c2VmdWwgaWYgeW91IHdhbnQgYSByb29tIHRvIHVzZSBzYXZlX29iamVjdCgpIGFuZAorICAgICAgICAgICAgICAgICAgICAgcmVzdG9yZV9vYmplY3QoKSB0byBzYXZlIHlvdXIgb3duIGRlZmluZWQgdmFyaWFibGVzCisgICAgICAgICAgICAgICAgICAgICBidXQgbm90IHRoZSBodW5kcmVkcyBvZiB2YXJpYWJsZXMgaW5oZXJpdGVkIGZyb20gYQorICAgICAgICAgICAgICAgICAgICAgcm9vbS1jbGFzcyAoZS5nLiAvY29tcGxleC9yb29tKS4gWW91IHRoZW4gdXNlIHRoZSBtb2RpZmllcgorICAgICAgICAgICAgICAgICAgICAgYXQgdGhlIGluaGVyaXQgc3RhdGVtZW50IChzZWUgYmVsb3cpLgorICAgICAgICAgICAgICAgICAgICAgTm90ZSB0aGF0IG5vc2F2ZSBhbmQgcHJpdmF0ZSBkbyBub3Qgb3ZlcmxhcCBpbiBhbnkKKyAgICAgICAgICAgICAgICAgICAgIHdheS4gVGhleSBhcmUgYWJzb2x1dGVseSBpbmRlcGVuZGFudC4KKyAgICAgICAgc3RhdGljICAgIC0tIHRoZSBvbGQgbmFtZSBmb3IgJ25vc2F2ZScuIEl0cyB1c2UgaXMgZGVwcmVjYXRlZC4KKyAgICAgICAgcHVibGljICAgIC0tIGRlY2xhcmVzIHRoZSB2YXJpYWJsZSBwdWJsaWMuIEl0IGNhbm5vdCBiZSBkZWNsYXJlZAorICAgICAgICAgICAgICAgICAgICAgcHJpdmF0ZSBvciBzdGF0aWMgYnkgaW5oZXJpdGluZy4gTm8gZXJyb3Igd2lsbCBvY2N1ciwKKyAgICAgICAgICAgICAgICAgICAgIG9ubHkgdGhlIHR5cGUgd2lsbCBub3QgYmUgbW9kaWZpZWQgYnkgdGhlIGluaGVyaXQKKyAgICAgICAgICAgICAgICAgICAgIHN0YXRlbWVudC4KKyAgICAgICAgZGVwcmVjYXRlZCAtIFdoZW5ldmVyIHRoaXMgdmFyaWFibGUgaXMgdXNlZCwgYSB3YXJuaW5nIGlzIGlzc3VlLgorICAgICAgICAgICAgICAgICAgICAgVXN1YWxseSB0aGlzIGlzIGRvbmUgYXQgY29tcGlsZS10aW1lLCBidXQKKyAgICAgICAgICAgICAgICAgICAgIHN5bWJvbF92YXJpYWJsZSgpIHdhcm5zIGF0IHJ1bi10aW1lLgorCisgICAgICAgIEl0IGlzIG5vIGdvb2Qgc3R5bGUgdG8gbGV0IGluaGVyaXRpbmcgb2JqZWN0cyBoYXZlIGFjY2VzcyB0bworICAgICAgICBpbnRlcm5hbCB2YXJpYWJsZXMgc28gZGVjbGFyZSB0aGVtIGFzIHByaXZhdGUgYW5kIG9mZmVyIGZ1bmN0aW9ucworICAgICAgICB0byBxdWVyeSBhbmQgY2hhbmdlIHRoZSB2YXJpYWJsZXMgaWYgcG9zc2libGUuCisKKyAgICAgICAgSXQgaXMgYWxzbyBwb3NzaWJsZSB0byByZWRlY2xhcmUgYWxsIHZhcmlhYmxlcyBhbmQvb3IgZnVuY3Rpb25zCisgICAgICAgIG9mIGFuIGluaGVyaXRlZCBvYmplY3QgZm9yIHRoZSBvd24gb2JqZWN0IGF0IHRoZSBpbmhlcml0aW5nCisgICAgICAgIHN0YXRlbWVudDoKKworICAgICAgICBwcml2YXRlIGZ1bmN0aW9ucyBub3NhdmUgdmFyaWFibGVzIGluaGVyaXQgImNvbXBsZXgvcm9vbSI7CisgICAgICAgIHB1YmxpYyB2YXJpYWJsZXMgaW5oZXJpdCAiY29tcGxleC9yb29tIjsKKyAgICAgICAgcHJpdmF0ZSBmdW5jdGlvbnMgaW5oZXJpdCAiY29tcGxleC9yb29tIjsKKworICAgICAgICBUbyByZWRlY2xhcmUgYSBmdW5jdGlvbiBvciBhIHZhcmlhYmxlIGRlY2xhcmVkIHB1YmxpYyBpbiB0aGUKKyAgICAgICAgaW5oZXJpdGVkIG9iamVjdCB0byBiZSBwcml2YXRlIG9yIHByb3RlY3RlZCBpcyBub3QgcG9zc2libGUuCisKKyAgICAgICAgVGhlcmUgYWxzbyBleGlzdHMgYSBtb2RpZmllciBleHBsaWNpdGx5IGZvciB0aGUgaW5oZXJpdCBzdGF0ZW1lbnQ6CisKKyAgICAgICAgdmlydHVhbCAgIC0tIGluaGVyaXRzIHRoZSBnaXZlbiBvYmplY3QgdmlydHVhbGx5LiBUaGlzIG9ubHkgbWFrZXMKKyAgICAgICAgICAgICAgICAgICAgIHNlbnNlIGluIGEgY29tcGxleCBpbmhlcml0IHRyZWUuCisgICAgICAgICAgICAgICAgICAgICBJZiBhbiBvYmplY3QgaXMgaW5oZXJpdGVkIG5vcm1hbGx5IChub3QgdmlydHVhbGx5KQorICAgICAgICAgICAgICAgICAgICAgdHdpY2Ugc29tZXdoZXJlIGluIHRoZSBpbmhlcml0IHRyZWUgdGhlIGludGVybgorICAgICAgICAgICAgICAgICAgICAgdmFyaWFibGVzIGV4aXN0IHR3aWNlLiBJZiBpbmhlcml0ZWQgdmlydHVhbGx5IHRoZXkKKyAgICAgICAgICAgICAgICAgICAgIGV4aXN0IG9ubHkgb25jZS4KKyAgICAgICAgICAgICAgICAgICAgIEV4YW1wbGU6CisgICAgICAgICAgICAgICAgICAgICBBIGluaGVyaXRzIEIgYW5kIEMuCisgICAgICAgICAgICAgICAgICAgICBCIGluaGVyaXRzIEQuCisgICAgICAgICAgICAgICAgICAgICBDIGluaGVyaXRzIEQuCisgICAgICAgICAgICAgICAgICAgICBJZiB0aGUgaW5oZXJpdGFuY2Ugb2YgRCBpcyB2aXJ0dWFsIGluIEIgYW5kIEMKKyAgICAgICAgICAgICAgICAgICAgIEQncyB2YXJpYWJsZXMgZXhpc3Qgb25seSBvbmNlIGluIEEuIElmIEEgY2hhbmdlcworICAgICAgICAgICAgICAgICAgICAgRCdzIHZhcmlhYmxlcyB2aWEgZnVuY3Rpb25zIG9mIEIgdGhpcyBhbHNvIGNoYW5nZXMKKyAgICAgICAgICAgICAgICAgICAgIHRoZSB2YXJpYWJsZXMgb2YgRCBhcyBrbm93biBieSBDLgorCisgICAgICAgICAgICAgICAgICAgICB2aXJ0dWFsOiAgICAgICAgICAgICAgIG5vbi12aXJ0dWFsOgorICAgICAgICAgICAgICAgICAgICAgICAgQSAgICAgICAgICAgICAgICAgICAgICAgIEEKKyAgICAgICAgICAgICAgICAgICAgICAgLyBcICAgICAgICAgICAgICAgICAgICAgIC8gXAorICAgICAgICAgICAgICAgICAgICAgIEIgICBDICAgICAgICAgICAgICAgICAgICBCICAgQworICAgICAgICAgICAgICAgICAgICAgICBcIC8gICAgICAgICAgICAgICAgICAgICB8ICAgfAorICAgICAgICAgICAgICAgICAgICAgICAgRCAgICAgICAgICAgICAgICAgICAgICBEICAgRAorCisKKyAgICAgICAgVG8gc2ltcGxpZnkgdGhlIGFkb3B0aW9uIG9mIGV4aXN0aW5nIGNvZGUsIExQQyBhbGxvd3MgdG8gc3BlY2lmeQorICAgICAgICBhIGRlZmF1bHQgdmlzaWJpbGl0eSBmb3IgZnVuY3Rpb25zIGFuZCB2YXJpYWJsZXMsIHVzaW5nIGEgc3ludGF4CisgICAgICAgIHNpbWlsYXIgdG8gdGhlIGluaGVyaXQgc3ludGF4OgorCisgICAgICAgICAgZGVmYXVsdCBwcml2YXRlOworCisgICAgICAgICAgICBBbGwgdmFyaWFibGVzIGFuZCBmdW5jdGlvbnMgYXJlIGJ5IGRlZmF1bHQgcHJpdmF0ZS4KKworICAgICAgICAgIGRlZmF1bHQgcHJpdmF0ZSB2YXJpYWJsZXMgcHVibGljIGZ1bmN0aW9uczsKKworICAgICAgICAgICAgQWxsIHZhcmlhYmxlcyBhcmUgYnkgZGVmYXVsdCBwcml2YXRlLCBidXQgZnVuY3Rpb25zIGFyZSBwdWJsaWMuCisKKyAgICAgICAgT25seSB0aGUgbW9kaWZpZXJzICdwcml2YXRlJywgJ3B1YmxpYycgYW5kICdwcm90ZWN0ZWQnIChhbmQgJ3N0YXRpYycKKyAgICAgICAgZm9yIGZ1bmN0aW9ucyBvbmx5KSBhcmUgYWxsb3dlZCBoZXJlLgorCisgICAgICAgIFRoZSBkZWZhdWx0IHZpc2liaWxpdHkgdGh1cyBzZXQgYWZmZWN0cyBvbmx5IHZhcmlhYmxlcy9mdW5jdGlvbnMgd2l0aAorICAgICAgICBubyBleHBsaWNpdGUgdmlzaWJpbGl0eToKKworICAgICAgICAgIGRlZmF1bHQgcHJpdmF0ZTsKKworICAgICAgICAgIGludCBwcml2YXRlX3ZhcjsKKyAgICAgICAgICBwdWJsaWMgaW50IHB1YmxpY192YXI7CisKKyAgICAgICAgVGhlIGRlZmluaXRpb24gaXMgdmFsaWQgZnJvbSB0aGUgcG9pbnQgb2YgdGhlICdkZWZhdWx0JyBzdGF0ZW1lbnQKKyAgICAgICAgdW50aWwgdGhlIGVuZCBvZiB0aGUgZmlsZSwgb3IgdW50aWwgdGhlIG5leHQgJ2RlZmF1bHQnIHN0YXRlbWVudDoKKworICAgICAgICAgIGRlZmF1bHQgcHJpdmF0ZTsKKworICAgICAgICAgIGludCBwcml2YXRlX3ZhcjsKKworICAgICAgICAgIGRlZmF1bHQgcHVibGljOworCisgICAgICAgICAgaW50IHB1YmxpY192YXI7CisKKyAgICAgICAgTm90ZSB0aGF0IHRoaXMgZGVmYXVsdCB2aXNpYmlsaXR5IGRvZXMgbm90IGFmZmVjdCBpbmhlcml0cy4KKworCitISVNUT1JZCisgICAgICAgIFRoZSBtb2RpZmllciAnc3RhdGljJyBmb3IgdmFyaWFibGVzIHdhcyByZW5hbWVkIHRvICdub3NhdmUnCisgICAgICAgIHdpdGggTERNdWQgMy4yLjguICdzdGF0aWMnIGlzIHN0aWxsIHJlY29nbml6ZWQgYXMgYW4gYWxpYXMuCisKKyAgICAgICAgVGhlIGRlZmF1bHQgdmlzaWJpbGl0eSB3YXMgYWRkZWQgaW4gTERNdWQgMy4yLjkgYXMgZXhwZXJpbWVudGFsCisgICAgICAgIGZlYXR1cmUuCisKK1NFRSBBTFNPCisgICAgICAgICAgICBjbG9zdXJlcyhMUEMpLCBpbmhlcml0YW5jZShMUEMpLCBmdW5jdGlvbnMoTFBDKSwgdHlwZXMoTFBDKQpkaWZmIC0tZ2l0IGEvZG9jL0xQQy9vcGVyYXRvcnMgYi9kb2MvTFBDL29wZXJhdG9ycwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4xODQwNmEzCi0tLSAvZGV2L251bGwKKysrIGIvZG9jL0xQQy9vcGVyYXRvcnMKQEAgLTAsMCArMSwyMTMgQEAKK05BTUUKKyAgICAgICAgb3BlcmF0b3JzCisKK0RFU0NSSVBUSU9OCisKKyAgICAgICAgVGhlc2UgYXJlIHRoZSBvcGVyYXRvcnMgYXZhaWxhaWxhYmxlIGluIExQQy4gVGhleSBhcmUgbGlzdGVkCisgICAgICAgIGluIHRoZSBvcmRlciBvZiBwcmVjZWRlbmNlIChsb3cgcHJpb3JpdHkgZmlyc3QpOgorCisKKyAgICAgICAgZXhwcjEgLCBleHByMiAgICAgICAgRXZhbHVhdGUgJ2V4cHIxJyBhbmQgdGhlbiAnZXhwcjInLiBUaGUKKyAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybmVkIHZhbHVlIGlzIHRoZSByZXN1bHQgb2YgJ2V4cHIyJy4gVGhlCisgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm5lZCB2YWx1ZSBvZiAnZXhwcjEnIGlzIHRocm93biBhd2F5LgorCisgICAgICAgIHZhciA9IGV4cHIgICAgICAgIEV2YWx1YXRlICdleHByJywgYW5kIGFzc2lnbiB0aGUgdmFsdWUgdG8KKyAgICAgICAgICAgICAgICAgICAgICAgICd2YXInLiBUaGUgbmV3IHZhbHVlIG9mICd2YXInIGlzIHRoZSByZXN1bHQuCisKKyAgICAgICAgdmFyICs9IGV4cHIgICAgICAgIEFzc2lnbiB0aGUgdmFsdWUgb2YgJ2V4cHInICsgJ3ZhcicgdG8gJ3ZhcicuCisgICAgICAgICAgICAgICAgICAgICAgICBUaGlzIGlzIG1vc3RseSBlcXVpdmFsZW50IHRvICJ2YXIgPSB2YXIgKyBleHByIi4KKworICAgICAgICB2YXIgLT0gZXhwciAgICAgICAgU2ltaWxhciB0byAnKz0nIGFib3ZlLgorICAgICAgICB2YXIgJj0gZXhwcgorICAgICAgICB2YXIgfD0gZXhwcgorICAgICAgICB2YXIgXj0gZXhwcgorICAgICAgICB2YXIgPDw9IGV4cHIKKyAgICAgICAgdmFyID4+PSBleHByCisgICAgICAgIHZhciA+Pj49IGV4cHIKKyAgICAgICAgdmFyICo9IGV4cHIKKyAgICAgICAgdmFyICU9IGV4cHIKKyAgICAgICAgdmFyIC89IGV4cHIKKyAgICAgICAgdmFyICYmPSBleHByCisgICAgICAgIHZhciB8fD0gZXhwcgorCisgICAgICAgIGV4cHIxID8gZXhwcjIgOiBleHByMworICAgICAgICAgICAgICAgICAgICAgICAgRXZhbHVhdGVzICdleHByMScgYW5kIGJyYW5jaGVzIGFjY29yZGluZyB0bworICAgICAgICAgICAgICAgICAgICAgICAgaXRzIHRydXRoIHZhbHVlLiBJZiBpdCBpcyB0cnVlLCB0aGUgJ2V4cHIyJyBpcworICAgICAgICAgICAgICAgICAgICAgICAgZXZhbHVhdGVkIGFuZCByZXR1cm5lZCBhcyByZXN1bHQsIGVsc2UKKyAgICAgICAgICAgICAgICAgICAgICAgICdleHByMycuCisKKyAgICAgICAgZXhwcjEgfHwgZXhwcjIgICAgICAgIFRoZSByZXN1bHQgaXMgdHJ1ZSBpZiAnZXhwcjEnIG9yICdleHByMicgaXMKKyAgICAgICAgICAgICAgICAgICAgICAgIHRydWUuICdleHByMicgaXMgbm90IGV2YWx1YXRlZCBpZiAnZXhwcjEnIHdhcworICAgICAgICAgICAgICAgICAgICAgICAgdHJ1ZS4KKworICAgICAgICBleHByMSAmJiBleHByMiAgICAgICAgVGhlIHJlc3VsdCBpcyB0cnVlIGkgJ2V4cHIxJyBhbmQgJ2V4cHIyJyBpcworICAgICAgICAgICAgICAgICAgICAgICAgdHJ1ZS4gJ2V4cHIyJyBpcyBub3QgZXZhbHVhdGVkIGlmICdleHByMScgd2FzCisgICAgICAgICAgICAgICAgICAgICAgICBmYWxzZS4KKworICAgICAgICBleHByMSB8IGV4cHIyICAgICAgICBUaGUgcmVzdWx0IGlzIHRoZSBiaXR3aXNlIG9yIG9mICdleHByMScgYW5kCisgICAgICAgICAgICAgICAgICAgICAgICAnZXhwcjInLgorICAgICAgICAgICAgICAgICAgICAgICAgRm9yIGFycmF5cywgdGhlIHVuaW9uIHNldCBpcyBjb21wdXRlZDogYWxsIGVsZW1lbnRzCisgICAgICAgICAgICAgICAgICAgICAgICBmcm9tIDxleHByMT4gcGx1cyBhbGwgdGhvc2UgZnJvbSA8ZXhwcjI+IHdoaWNoCisgICAgICAgICAgICAgICAgICAgICAgICBhcmUgbm90IGluIDxleHByMT4uCisKKyAgICAgICAgZXhwcjEgXiBleHByMiAgICAgICAgVGhlIHJlc3VsdCBpcyB0aGUgYml0d2lzZSB4b3Igb2YgJ2V4cHIxJyBhbmQKKyAgICAgICAgICAgICAgICAgICAgICAgICdleHByMicuCisgICAgICAgICAgICAgICAgICAgICAgICBGb3IgYXJyYXlzLCB0aGUgc3ltbWV0cmljIGRpZmZlcmVuY2UgaXMgY29tcHV0ZWQ6CisgICAgICAgICAgICAgICAgICAgICAgICBhbGwgZWxlbWVudHMgZnJvbSA8ZXhwcjE+IHdoaWNoIGFyZSBub3QgaW4gPGV4cHIyPiwKKyAgICAgICAgICAgICAgICAgICAgICAgIHBsdXMgYWxsIHRob3NlIGZyb20gPGV4cHIyPiB3aGljaCBhcmUgbm90IGluIDxleHByMT4uCisKKyAgICAgICAgZXhwcjEgJiBleHByMiAgICAgICAgVGhlIHJlc3VsdCBpcyB0aGUgYml0d2lzZSBhbmQgb2YgJ2V4cHIxJyBhbmQKKyAgICAgICAgICAgICAgICAgICAgICAgICdleHByMicuCisKKyAgICAgICAgICAgICAgICAgICAgICAgIEZvciBhcnJheXMgYW5kIHN0cmluZ3MsIHRoZSBpbnRlcnNlY3Rpb24gc2V0CisgICAgICAgICAgICAgICAgICAgICAgICAoYWxsIGVsZW1lbnRzIHJlc3AuIGNoYXJhY3RlcnMgZnJvbSBleHByMSB3aGljaAorICAgICAgICAgICAgICAgICAgICAgICAgd2hpY2ggYXJlIGFsc28gaW4gdGhlIGV4cHIyKSBpcyBjb21wdXRlZC4KKyAgICAgICAgICAgICAgICAgICAgICAgIE5vdGU6ICJhYWIiICYgImEiIC0+ICJhYSIKKyAgICAgICAgICAgICAgICAgICAgICAgICBidXQgICh7ICdhJywnYScsJ2InIH0pICYgKHsgJ2EnIH0pIC0+ICh7ICdhJyB9KQorICAgICAgICAgICAgICAgICAgICAgICAgRXZlbnR1YWxseSB0aGUgYXJyYXkgYmVoYXZpb3VyIHdpbGwgYmUgY2hhbmdlZAorICAgICAgICAgICAgICAgICAgICAgICAgdG8gbWF0Y2ggdGhlIHN0cmluZyBiZWhhdmlvdXIuCisKKyAgICAgICAgICAgICAgICAgICAgICAgIEludGVyc2VjdGluZyBhbiBhcnJheSB3aXRoIGEgbWFwcGluZyBpcyBlcXVpdmFsZW50CisgICAgICAgICAgICAgICAgICAgICAgICB0byBpbnRlcnNlY3RpbmcgdGhlIGFycmF5IHdpdGggdGhlIGluZGljZXMgb2YgdGhlCisgICAgICAgICAgICAgICAgICAgICAgICBtYXBwaW5nOiBhcnJheSAmIG1hcHBpbmcgPSBhcnJheSAmIG1faW5kaWNlcyhtYXBwaW5nKQorCisgICAgICAgICAgICAgICAgICAgICAgICBNYXBwaW5ncyBjYW4gYmUgaW50ZXJzZWN0ZWQgd2l0aCBhbm90aGVyIG1hcHBpbmcKKyAgICAgICAgICAgICAgICAgICAgICAgIG9yIGFuIGFycmF5LiBUaGUgcmVzdWx0aW5nIG1hcHBpbmcgaG9sZHMgYWxsCisgICAgICAgICAgICAgICAgICAgICAgICB0aG9zZSBlbnRyaWVzIGZyb20gdGhlIGZpcnN0IG1hcHBpbmcsIHdoaWNoIGFyZQorICAgICAgICAgICAgICAgICAgICAgICAgYWxzbyBtZW50aW9uZWQgaW4gdGhlIHNlY29uZCBtYXBwaW5nIChhcyBpbmRleCkKKyAgICAgICAgICAgICAgICAgICAgICAgIHJlc3AuIGluIHRoZSBhcnJheS4KKworICAgICAgICBleHByMSA9PSBleHByMiAgICAgICAgQ29tcGFyZSB2YWx1ZXMuIFZhbGlkIGZvciBzdHJpbmdzLCBudW1iZXJzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb2JqZWN0cyBhbmQgY2xvc3VyZXMuCisKKyAgICAgICAgZXhwcjEgIT0gZXhwcjEgICAgICAgIENvbXBhcmUgdmFsdWVzLiBWYWxpZCBmb3Igc3RyaW5ncywgbnVtYmVycywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9iamVjdHMgYW5kIGNsb3N1cmVzLgorCisgICAgICAgIGV4cHIxID4gZXhwcjIgICAgICAgIFZhbGlkIGZvciBzdHJpbmdzIGFuZCBudW1iZXJzLgorCisgICAgICAgIGV4cHIxID49IGV4cHIyICAgICAgICBWYWxpZCBmb3Igc3RyaW5ncyBhbmQgbnVtYmVycy4KKworICAgICAgICBleHByMSA8IGV4cHIyICAgICAgICBWYWxpZCBmb3Igc3RyaW5ncyBhbmQgbnVtYmVycy4KKworICAgICAgICBleHByMSA8PSBleHByMiAgICAgICAgVmFsaWQgZm9yIHN0cmluZ3MgYW5kIG51bWJlcnMuCisKKyAgICAgICAgZXhwcjEgPDwgZXhwcjIgICAgICAgIFNoaWZ0ICdleHByMScgbGVmdCBieSAnZXhwcjInIGJpdHM7IHRoZSBzaWduCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBiaXQgaXMgbm90IHByZXNlcnZlZC4KKworICAgICAgICBleHByMSA+PiBleHByMiAgICAgICAgU2hpZnQgJ2V4cHIxJyByaWdodCBieSAnZXhwcjInIGJpdHMuCisgICAgICAgICAgICAgICAgICAgICAgICBUaGlzIHNoaWZ0IHByZXNlcnZlcyB0aGUgc2lnbiBvZiAnZXhwcjEnLgorCisgICAgICAgIGV4cHIxID4+PiBleHByMiAgICAgICAgU2hpZnQgJ2V4cHIxJyByaWdodCBieSAnZXhwcjInIGJpdHMuCisgICAgICAgICAgICAgICAgICAgICAgICBUaGlzIHNoaWZ0IGRvZXMgbm90IHByZXNlcnZlIHRoZSBzaWduIG9mICdleHByMScsCisgICAgICAgICAgICAgICAgICAgICAgICBpbnN0ZWFkIGl0IHNoaWZ0cyBpbiAwIGJpdHMuCisKKyAgICAgICAgZXhwcjEgKyBleHByMiAgICAgICAgQWRkICdleHByMScgYW5kICdleHByMicuIElmIG51bWJlcnMsIHRoZW4KKyAgICAgICAgICAgICAgICAgICAgICAgIGFyaXRobWV0aWMgYWRkaXRpb24gaXMgdXNlZC4gSWYgb25lIG9mIHRoZQorICAgICAgICAgICAgICAgICAgICAgICAgZXhwcmVzc2lvbnMgYXJlIGEgc3RyaW5nLCB0aGVuIHRoYXQgc3RyaW5nIGlzCisgICAgICAgICAgICAgICAgICAgICAgICBjb25jYXRlbmF0ZWQgd2l0aCB0aGUgb3RoZXIgdmFsdWUuCisgICAgICAgICAgICAgICAgICAgICAgICBJZiB0aGUgZXhwcmVzc2lvbnMgYXJlIGFycmF5cywgdGhlIHJlc3VsdCBpcworICAgICAgICAgICAgICAgICAgICAgICAgdGhlIHJpZ2h0IGFycmF5IGFwcGVuZGVkIHRvIHRoZSBsZWZ0LgorICAgICAgICAgICAgICAgICAgICAgICAgSWYgdGhlIGV4cHJlc3Npb25zIGFyZSBtYXBwaW5ncyBvZiBlcXVhbCB3aWR0aCwKKyAgICAgICAgICAgICAgICAgICAgICAgIHRoZSByZXN1bHQgaXMgbWVyZ2VyIG9mIHRoZSB0d28gbWFwcGluZ3MuIElmIG9uZQorICAgICAgICAgICAgICAgICAgICAgICAga2V5IGV4aXN0cyBpbiBib3RoIG1hcHBpbmdzLCB0aGUgZWxlbWVudCBmcm9tIHRoZQorICAgICAgICAgICAgICAgICAgICAgICAgcmlnaHQgbWFwcGluZyBhcHBlYXJzIGluIHRoZSByZXN1bHQuIElmIHRoZSB0d28KKyAgICAgICAgICAgICAgICAgICAgICAgIG1hcHBpbmdzIGFyZSBvZiBkaWZmZXJlbnQgd2lkdGgsIHRoZSByZXN1bHQgaXMKKyAgICAgICAgICAgICAgICAgICAgICAgIDxleHByMT4gaWYgbm9uLWVtcHR5LCBhbmQgPGV4cHIyPiBvdGhlcndpc2UuCisKKyAgICAgICAgZXhwcjEgLSBleHByMiAgICAgICAgU3VidHJhY3QgJ2V4cHIyJyBmcm9tICdleHByMScuIFZhbGlkIGZvcgorICAgICAgICAgICAgICAgICAgICAgICAgbnVtYmVycywgc3RyaW5ncywgYXJyYXlzLCBtYXBwaW5ncy4KKyAgICAgICAgICAgICAgICAgICAgICAgIEZvciBhcnJheXMgYW5kIHN0cmluZ3MsIGFsbCBvY2N1cmVuY2VzIG9mIHRoZQorICAgICAgICAgICAgICAgICAgICAgICAgZWxlbWVudHMgcmVzcC4gY2hhcmFjdGVycyBpbiAnZXhwcjInIGFyZSByZW1vdmVkCisgICAgICAgICAgICAgICAgICAgICAgICBmcm9tICdleHByMScsIGFuZCB0aGUgcmVzdWx0IGlzIHJldHVybmVkLgorICAgICAgICAgICAgICAgICAgICAgICAgRm9yIG1hcHBpbmcsIGFsbCBvY2N1cmFuY2VzIG9mIGVsZW1lbnMgaW4gJ2V4cHIxJworICAgICAgICAgICAgICAgICAgICAgICAgd2hpY2ggaGF2ZSBhIG1hdGNoaW5nIGtleSBpbiAnZXhwcjInIGFyZSByZW1vdmVkLCBhbmQKKyAgICAgICAgICAgICAgICAgICAgICAgIHRoZSByZXN1bHQgaXMgcmV0dXJuZWQuCisKKyAgICAgICAgZXhwcjEgKiBleHByMiAgICAgICAgTXVsdGlwbHkgJ2V4cHIxJyB3aXRoICdleHByMicuCisgICAgICAgICAgICAgICAgICAgICAgICBJZiBzdHJpbmdzIG9yIGFycmF5cyBhcmUgbXVsdGlwbGllZCB3aXRoIGEgbnVtYmVyCisgICAgICAgICAgICAgICAgICAgICAgICAoemVybyBvciBwb3NpdGl2ZSksIHRoZSByZXN1bHQgaXMgYSByZXBldGl0aW9uIG9mIHRoZQorICAgICAgICAgICAgICAgICAgICAgICAgb3JpZ2luYWwgc3RyaW5nIG9yIGFycmF5LgorCisgICAgICAgIGV4cHIxICUgZXhwcjIgICAgICAgIFRoZSBtb2R1bG8gb3BlcmF0b3Igb2YgbnVtZXJpYyBhcmd1bWVudHMuCisKKyAgICAgICAgZXhwcjEgLyBleHByMiAgICAgICAgSW50ZWdlciBkaXZpc2lvbi4KKworICAgICAgICArKyB2YXIgICAgICAgICAgICAgICAgSW5jcmVtZW50IHRoZSB2YWx1ZSBvZiB2YXJpYWJsZSAndmFyJywgYW5kCisgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gdGhlIG5ldyB2YWx1ZS4KKworICAgICAgICAtLSB2YXIgICAgICAgICAgICAgICAgRGVjcmVtZW50IHRoZSB2YWx1ZSBvZiB2YXJpYWJsZSAndmFyJywgYW5kCisgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gdGhlIG5ldyB2YWx1ZS4KKworICAgICAgICAtIHZhciAgICAgICAgICAgICAgICBDb21wdXRlIHRoZSBuZWdhdGl2ZSB2YWx1ZSBvZiAndmFyJy4KKworICAgICAgICAhIHZhciAgICAgICAgICAgICAgICBDb21wdXRlIHRoZSBsb2dpY2FsICdub3QnIG9mIGFuIGludGVnZXIuCisKKyAgICAgICAgfiB2YXIgICAgICAgICAgICAgICAgVGhlIGJvb2xlYW4gJ25vdCcgb2YgYW4gaW50ZWdlci4KKworICAgICAgICAoIHR5cGUgKSB2YXIgICAgUmV0dXJuIHRoZSB2YWx1ZSBvZiA8dmFyPiBjb252ZXJ0ZWQgdG8gPHR5cGU+LgorICAgICAgICAgICAgICAgICAgICAgICAgPHR5cGU+IGNhbiBiZSAnc3RyaW5nJywgJ2ludCcsICdvYmplY3QnLCAnZmxvYXQnCisgICAgICAgICAgICAgICAgICAgICAgICBvciAnaW50KicuIDx2YXI+IG11c3QgYmUgb2YgYSBzcGVjaWZpYyB0eXBlCisgICAgICAgICAgICAgICAgICAgICAgICBmb3IgYSBjb252ZXJzaW9uIHRvIHRha2UgcGxhY2U7IGlmIDx2YXI+IGlzICdtaXhlZCcKKyAgICAgICAgICAgICAgICAgICAgICAgIG9yIHVua25vd24sIHRoZSBjYXN0IGlzIHB1cmVseSBkZWNsYXJhdGl2ZS4KKyAgICAgICAgICAgICAgICAgICAgICAgIEFsc28sIGlmIHRoZSBkZWNsYXJlZCB0eXBlIG9mIDx2YXI+IGlzIHRoYXQgb2YgPHR5cGU+LAorICAgICAgICAgICAgICAgICAgICAgICAgdGhlIHZhbHVlIGlzIG5vdCBjaGFuZ2VkLgorCisgICAgICAgICAgICAgICAgICAgICAgICBOQi4gVGhlIGxpdGVyYWwgbnVtYmVyIDAgaXMgb2YgdW5rbm93biB0eXBlLCBhcworICAgICAgICAgICAgICAgICAgICAgICAgaXQgZG91YmxlcyBhcyAnbm90IGluaXRpYWxpemVkJyBmb3Igc3RyaW5ncywgb2JqZWN0cywKKyAgICAgICAgICAgICAgICAgICAgICAgIGFuZCBhcnJheXMuCisKKyAgICAgICAgICAgICAgICAgICAgICAgIFRoZSBvcGVyYXRvciBhY3RzIGxpa2UgdGhlIGVmdW5zCisgICAgICAgICAgICAgICAgICAgICAgICB0b19zdHJpbmcoKSwgdG9faW50KCksIHRvX29iamVjdCgpLCB0b19mbG9hdCgpCisgICAgICAgICAgICAgICAgICAgICAgICBhbmQgdG9fYXJyYXkoKS4gSXQgaXMgYWR2aXNhYmxlIHRvIHVzZSB0aGUKKyAgICAgICAgICAgICAgICAgICAgICAgIGVmdW5zIGRpcmVjdGx5IGluc3RlYWQgb2YgdGhlIGNhc3QuCisKKyAgICAgICAgKHsgdHlwZSB9KSB2YXIgIDx2YXI+IGlzIG5vdyBhc3N1bWVkIHRvIGhhdmUgdGhlIHR5cGUgPHR5cGU+LgorICAgICAgICAgICAgICAgICAgICAgICAgVGhpcyBpcyBwdXJlbHkgZGVjbGFyYXRpdmUsIHRoZSBhY3R1YWwgdmFsdWUKKyAgICAgICAgICAgICAgICAgICAgICAgIG9mIDx2YXI+IGlzIG5vdCBjaGFuZ2VkLgorCisgICAgICAgIHZhciArKyAgICAgICAgICAgICAgICBJbmNyZW1lbnQgdGhlIHZhbHVlIG9mIHZhcmlhYmxlICd2YXInLCBhbmQKKyAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB0aGUgb2xkIHZhbHVlLgorCisgICAgICAgIHZhciAtLSAgICAgICAgICAgICAgICBEZWNyZW1lbnQgdGhlIHZhbHVlIG9mIHZhcmlhYmxlICd2YXInLCBhbmQKKyAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB0aGUgb2xkIHZhbHVlLgorCisgICAgICAgIGV4cHIxW2V4cHIyXSAgICAgICAgVGhlIGFycmF5IG9yIG1hcHBpbmcgZ2l2ZW4gYnkgJ2V4cHIxJyBpcworICAgICAgICAgICAgICAgICAgICAgICAgaW5kZXhlZCBieSAnZXhwcjInLgorCisgICAgICAgIGV4cHIxW2V4cHIyLi5leHByM10gRXh0cmFjdHMgYQorICAgICAgICAgICAgICAgICAgICAgICAgcGllY2UgZnJvbSBhbiBhcnJheSBvciBzdHJpbmcuCisgICAgICAgICAgICAgICAgICAgICAgICBleHByMiBvciBleHByMyBtYXkgYmUgb21pdHRlZCwgZGVmYXVsdCBpcyB0aGUgYmVnaW4KKyAgICAgICAgICAgICAgICAgICAgICAgIG9yIGVuZCBvZiBleHByMS4KKyAgICAgICAgICAgICAgICAgICAgICAgIE5lZ2F0aXZlIG51bWJlcnMgZm9yIGV4cHIyIG9yIGV4cHIzCisgICAgICAgICAgICAgICAgICAgICAgICBtZWFuIGBgY291bnQgZnJvbSBiZWZvcmUgdGhlIGJlZ2lubmluZycnLCBpLmUuCisgICAgICAgICAgICAgICAgICAgICAgICBmb29bLTIuLi0xXSBpcyBhbiBlbXB0eSBhcnJheSBvciBzdHJpbmcuCisgICAgICAgICAgICAgICAgICAgICAgICBmb29bPDIuLjwxXSBnaXZlcyB0aGUgMm5kIGFuZCBsYXN0IGVsZW1lbnQgb2YKKyAgICAgICAgICAgICAgICAgICAgICAgIHRoZSBhcnJheSByZXNwLiBjaGFycyBvZiB0aGUgc3RyaW5nLgorCisgICAgICAgIGV4cHIxLT5uYW1lKC4uLikgVGhlIHN5bWJvbGljIGZvcm0gb2YgY2FsbF9vdGhlcigpLiAnZXhwcjEnCisgICAgICAgICAgICAgICAgICAgICAgICBnaXZlcyBlaXRoZXIgYW4gb2JqZWN0IG9yIGEgc3RyaW5nIHdoaWNoIGlzCisgICAgICAgICAgICAgICAgICAgICAgICB1c2VkIGFzIHRoZSBmaWxlX25hbWUgb2YgYW4gb2JqZWN0LCBhbmQgY2FsbHMKKyAgICAgICAgICAgICAgICAgICAgICAgIHRoZSBmdW5jdGlvbiAnbmFtZScgaW4gdGhpcyBvYmplY3QuCisKKyAgICAgICAgaWRlbnQ6Om5hbWUoLi4uKQorICAgICAgICAgICAgICAgICAgICAgICAgQ2FsbCB0aGUgaW5oZXJpdGVkIGZ1bmN0aW9uICduYW1lJyB3aXRoIHRoZQorICAgICAgICAgICAgICAgICAgICAgICAgZ2l2ZW4gcGFyYW1ldGVycyBpbiB0aGUgcGFyZW50ICdpZGVudCcuCisgICAgICAgICAgICAgICAgICAgICAgICAnaWRlbnQnIG1heSBiZSBnaXZlbiBhcyBzdHJpbmcgY29udGFpbmluZyB0aGUKKyAgICAgICAgICAgICAgICAgICAgICAgIGZ1bGwgcGF0aG5hbWUsIG9yIGFzIGlkZW50aWZpZXIgY29udGFpbmluZyB0aGUKKyAgICAgICAgICAgICAgICAgICAgICAgIHB1cmUgYmFzZW5hbWUuCisgICAgICAgICAgICAgICAgICAgICAgICBJZiAnaWRlbnQnIGlzIG9taXR0ZWQsIHRoZSBsYXN0IGluaGVyaXRlZAorICAgICAgICAgICAgICAgICAgICAgICAgZnVuY3Rpb24gb2YgdGhpcyAnbmFtZScgaXMgY2FsbGVkLgorCisgICAgICAgICh7IH0pICAgICAgICAgICAgICAgIEFycmF5IGNvbnN0cnVjdG9yLgorICAgICAgICAoWyBdKSAgICAgICAgICAgICAgICBNYXBwaW5nIGNvbnN0cnVjdG9yLgorCitOT1RFCisgICAgICAgIFRoZSBjbG9zdXJlIG9wZXJhdG9ycyBhcmUgbm90IGRlc2NyaWJlZCBoZXJlLgorCitISVNUT1JZCisgICAgICAgIExETXVkIDMuMi45IGFkZGVkICc+Pj4nLCAnPj4+PScsICcmJj0nIGFuZCAnfHw9Jy4KKyAgICAgICAgTERNdWQgMy4yLjEwIGV4dGVuZGVkICcmJyB0byBtYXBwaW5ncy4KKyAgICAgICAgTERNdWQgMy4zIGV4dGVuZGVkICd8JyBhbmQgJ14nIHRvIGFycmF5cy4KKworU0VFIEFMU08KKyAgICAgICAgYXJyYXlzKExQQyksIGFsaXN0cyhMUEMpLCBtYXBwaW5ncyhMUEMpLCBjbG9zdXJlcyhMUEMpCmRpZmYgLS1naXQgYS9kb2MvTFBDL3ByYWdtYSBiL2RvYy9MUEMvcHJhZ21hCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmQyNmYzMjYKLS0tIC9kZXYvbnVsbAorKysgYi9kb2MvTFBDL3ByYWdtYQpAQCAtMCwwICsxLDExNiBAQAorTkFNRQorICAgICAgICBwcmFnbWEKKworREVTQ1JJUFRJT04KKyAgICAgICAgVGhlIHByZXByb2Nlc3NvciBkaXJlY3RpdmUgI3ByYWdtYSBjYW4gYmUgdXNlZCB0byBzZWxlY3QKKyAgICAgICAgc2V2ZXJhbCBjb21waWxhdGlvbiBvcHRpb25zLiBNdWx0aXBsZSBvcHRpb25zIGNhbiBiZSBzZWxlY3RlZAorICAgICAgICBpbiBvbmUgI3ByYWdtYSBkaXJlY3RpdmUgYnkgc2VwYXJhdGluZyB0aGVtIHdpdGggY29tbWFzLgorCisgICAgICAgIG5vX2Nsb25lOiBUaGUgYmx1ZXByaW50IG9iamVjdCBjYW4ndCBiZSBjbG9uZWQuCisgICAgICAgIG5vX2luaGVyaXQ6IFRoZSBwcm9ncmFtIGNhbid0IGJlIGluaGVyaXRlZC4KKyAgICAgICAgbm9fc2hhZG93OiBUaGUgcHJvZ3JhbSBjYW4ndCBiZSBzaGFkb3dlZCAoc2ltaWxhciB0byBkZWNsYXJpbmcKKyAgICAgICAgICAgICAgICBhbGwgZnVuY3Rpb25zIGFzICdub21hc2snKS4KKworICAgICAgICBpbml0X3ZhcmlhYmxlczogQ2xvbmUgdmFyaWFibGVzIGFyZSBpbml0aWFsaXplZCBieSBfX0lOSVQoKS4KKyAgICAgICAgc2hhcmVfdmFyaWFibGVzOiBDbG9uZSB2YXJpYWJsZXMgYXJlIGluaXRpYWxpemVkIGZyb20gdGhlCisgICAgICAgICAgICAgICAgYmx1ZXByaW50LgorCisgICAgICAgIHdlYWtfdHlwZXM6IG5vIHR5cGUgY2hlY2tpbmcgKHRoaXMgaXMgdGhlIGRlZmF1bHQpLgorICAgICAgICBzdHJpY3RfdHlwZXM6IGFsbCBmdW5jdGlvbnMgbXVzdCBiZSBkZWNsYXJlZCB3aXRoIGFyZ3VtZW50CisgICAgICAgICAgICAgICAgcHJvdG90eXBlcywgYW5kIHRoZSByZXR1cm4gdmFsdWVzIG9mIGNhbGxfb3RoZXIoKSBtdXN0CisgICAgICAgICAgICAgICAgYmUgY2FzdGVkLgorICAgICAgICBzdHJvbmdfdHlwZXM6IGFsbCBmdW5jdGlvbnMgbXVzdCBiZSBkZWNsYXJlZCB3aXRoIGNvbXBsZXRlCisgICAgICAgICAgICAgICAgdHlwZXMgb2YgcmV0dXJuIHZhbHVlIGFuZCBwYXJhbWV0ZXJzLgorICAgICAgICBzYXZlX3R5cGVzOiB0aGUgZGVjbGFyYXRpb24gZGF0YSBpcyBrZXB0IGFmdGVyIGNvbXBpbGF0aW9uIGFuZAorICAgICAgICAgICAgICAgIGNoZWNrZWQgYXQgcnVudGltZS4gVGhpcyBpcyBpbXBvcnRhbnQgZm9yIHR5cGUtc2FmZQorICAgICAgICAgICAgICAgIGluaGVyaXRhbmNlLgorCisgICAgICAgIHJ0dF9jaGVja3M6IHJ1bnRpbWUgY2hlY2tzIGR1cmluZyBleGVjdXRpb24gb2YgdGhpcyBwcm9ncmFtIHdpbGwgYmUKKyAgICAgICAgICAgICAgICBlbmFibGVkLiBUaGUgaW50ZXJwcmV0ZXIgd2lsbCBjaGVjayBmb3IgY29ycmVjdCBkYXRhdHlwZXMgb2YKKyAgICAgICAgICAgICAgICBhcmd1bWVudHMgb24gZnVuY3Rpb24gY2FsbHMuIChMYXRlciBpdCB3aWxsIGluY2x1ZGUgY2hlY2tzCisgICAgICAgICAgICAgICAgdXBvbiBhc3NpZ25tZW50cy4pCisgICAgICAgICAgICAgICAgRG9uJ3QgY29uZnVzZSB0aGlzIHdpdGggc3Ryb25nL3N0cmljdF90eXBlcywgdGhleSBvbmx5CisgICAgICAgICAgICAgICAgY2hlY2sgYXQgY29tcGlsZSB0aW1lLgorICAgICAgICAgICAgICAgIHN0cm9uZ190eXBlcy9zdHJpY3RfdHlwZXMgaXMgc2VyaW91c2x5IHJlY29tbWVuZGVkLgorICAgICAgICAgICAgICAgIFRoaXMgcHJhZ21hIGltcGxpY2l0bHkgZW5hYmxlcyBzYXZlX3R5cGVzIGFzIHdlbGwuCisgICAgICAgIG5vX3J0dF9jaGVja3M6IGRpc2FibGUgcnVudGltZSB0eXBlIGNoZWNrcyBmb3IgdGhpcyBwcm9ncmFtIChkZWZhdWx0KS4KKworICAgICAgICBwZWRhbnRpYzogQ2VydGFpbiB3YXJuaW5ncyBhcmUgdHJlYXRlZCBhcyBlcnJvcnM6CisgICAgICAgICAgICAgICAgLSBmYWlsdXJlIHRvIHBhc3MgZW5vdWdoIGFyZ3VtZW50cyB0byBzaW11bCBlZnVucworICAgICAgICBzbG9wcHk6IFR1cm5zIG9mZiBwZWRhbnRpYyAodGhlIGRlZmF1bHQpLgorCisgICAgICAgIHJhbmdlX2NoZWNrOiBVc2Ugb2YgcXVlc3Rpb25hYmxlIHJhbmdlcyAocmFuZ2VzIG9mIG5lZ2F0aXZlIHNpemVzLAorICAgICAgICAgICAgICAgIG9yIHdpdGggYm91bmRzIGJleW9uZCB0aGUgYXJyYXkncyBzaXplKSBjYXVzZSBhIHJ1bnRpbWUKKyAgICAgICAgICAgICAgICB3YXJuaW5nLgorICAgICAgICBub19yYW5nZV9jaGVjazogVHVybnMgb2ZmIHJhbmdlX2NoZWNrICh0aGUgZGVmYXVsdCkuCisKKyAgICAgICAgd2Fybl9kZXByZWNhdGVkOiBVc2Ugb2YgZGVwcmVjYXRlZCBlZnVucyBvciBpbmRleGluZyBvcGVyYXRpb25zCisgICAgICAgICAgICAgICAgY2F1c2VzIHRoZSBjb21waWxlciB0byBpc3N1ZSBhIHdhcm5pbmcgKHRoZSBkZWZhdWx0KS4KKyAgICAgICAgbm9fd2Fybl9kZXByZWNhdGVkOiBUdXJucyBvZmYgd2Fybl9kZXByZWNhdGVkLgorCisgICAgICAgIHdhcm5fZW1wdHlfY2FzdHM6IEEgY2FzdCBvZiBhIHZhbHVlIHRvIGl0cyBvd24gdHlwZSBnZW5lcmF0ZXMKKyAgICAgICAgICAgICAgICBhIHdhcm5pbmcgKHRoZSBkZWZhdWx0KS4gRXhjZXB0aW9uIGFyZSBjYXN0cyB0byB0eXBlCisgICAgICAgICAgICAgICAgJ21peGVkJy4KKyAgICAgICAgbm9fd2Fybl9lbXB0eV9jYXN0czogVHVybnMgb2ZmIHdhcm5fZW1wdHlfY2FzdHMuCisKKyAgICAgICAgd2Fybl9taXNzaW5nX3JldHVybjogV2FybiBpZiBhIHZhbHVlLXJldHVybmluZyBmdW5jdGlvbiBpcyBtaXNzaW5nCisgICAgICAgICAgICAgICAgYSByZXR1cm4gc3RhdGVtZW50ICh0aGUgZGVmYXVsdCkuIElmIHBvc3NpYmxlLCB0aGUgZHJpdmVyCisgICAgICAgICAgICAgICAgd2lsbCB0cnkgdG8gZGV0ZWN0IHRoaXMgYXQgY29tcGlsZSB0aW1lOyBvdGhlcndpc2UgYSBydW50aW1lCisgICAgICAgICAgICAgICAgd2FybmluZyB3aWxsIGJlIGdlbmVyYXRlZCB3aGVuIHRoZSBmdW5jdGlvbiBpcyBleGVjdXRlZC4KKyAgICAgICAgICAgICAgICBUaGUgY2hlY2sgYXBwbGllcyBvbmx5IHRvIGZ1bmN0aW9ucyB3aXRoIGEgZGVjbGFyZWQgcmV0dXJuCisgICAgICAgICAgICAgICAgdHlwZSBvdGhlciB0aGFuICd2b2lkJy4KKyAgICAgICAgbm9fd2Fybl9taXNzaW5nX3JldHVybjogVHVybiBvZmYgd2Fybl9taXNzaW5nX3JldHVybi4KKworICAgICAgICB3YXJuX2Z1bmN0aW9uX2luY29uc2lzdGVudDogSWYgYW4gaW5oZXJpdGVkIGZ1bmN0aW9uIGlzCisgICAgICAgICAgICAgICAgb3ZlcmxvYWRlZCB3aXRoIGluY29uc2lzdGVudCByZXR1cm4gdHlwZXMgb3IgYXJndW1lbnRzLAorICAgICAgICAgICAgICAgIGEgd2FybmluZyBpcyBnZW5lcmF0ZWQ7IG9yIGlmIHByYWdtYV9wZWRhbnRpYyBpcyBpbiBlZmZlY3QsCisgICAgICAgICAgICAgICAgYW4gZXJyb3IuIEJ5IGRlZmF1bHQgdGhpcyBpcyBhY3RpdmUuCisgICAgICAgIG5vX3dhcm5fZnVuY3Rpb25faW5jb25zaXN0ZW50OiBBbiBpbmhlcml0ZWQgZnVuY3Rpb24gY2FuCisgICAgICAgICAgICAgICAgYmUgb3ZlcmxvYWRlZCB3aXRoIGluY29uc2lzdGVudCByZXR1cm4gdHlwZXMgb3IgYXJndW1lbnRzLAorICAgICAgICAgICAgICAgIGFzIGxvbmcgYXMgcHJhZ21hX3BlZGFudGljIGlzIG5vdCBpbiBlZmZlY3QuCisKKyAgICAgICAgICAgICAgICBUaGlzIHByYWdtYSBpcyBtZWFudCB0byBlYXNlbiB0aGUgYWRhcHRpb24gb2YgbGVnYWN5CisgICAgICAgICAgICAgICAgbXVkbGliIGNvZGUgLSBpbiBnZW5lcmFsIG9uZSBzaG91bGQgZml4IHRoZSB3YXJuaW5ncywKKyAgICAgICAgICAgICAgICBub3QgdHVybiB0aGVtIG9mZi4KKworICAgICAgICBXaGVuIGFuIG9iamVjdCBpcyBjb21waWxlZCB3aXRoIHR5cGUgdGVzdGluZyAoI3ByYWdtYQorICAgICAgICBzdHJpY3RfdHlwZXMpLCBhbGwgdHlwZXMgYXJlIHNhdmVkIG9mIHRoZSBhcmd1bWVudHMgZm9yIHRoYXQKKyAgICAgICAgZnVuY3Rpb24gZHVyaW5nIGNvbXBpbGF0aW9uLiAgSWYgdGhlICNwcmFnbWEgc2F2ZV90eXBlcyBpcworICAgICAgICBzcGVjaWZpZWQsIHRoZW4gdGhlIHR5cGVzIGFyZSBzYXZlZCBldmVuIGFmdGVyIGNvbXBpbGF0aW9uLCB0bworICAgICAgICBiZSB1c2VkIHdoZW4gdGhlIG9iamVjdCBpcyBpbmhlcml0ZWQuCisKKyAgICAgICAgVGhlIGZvbGxvd2luZyB0d28gcHJhZ21hcyBhcmUgYXZhaWxhYmxlIGlmIHRoZSBkcml2ZXIgd2FzCisgICAgICAgIGNvbXBpbGVkIHdpdGggREVCVUcgYW5kIFRSQUNFX0NPREUgb3B0aW9uczoKKworICAgICAgICBzZXRfY29kZV93aW5kb3c6IFNldHMgYW4gb2Zmc2V0IHRvIHRoZSBjdXJyZW50IHByb2dyYW0gd3JpdGluZworICAgICAgICAgICAgICAgIHBvc2l0aW9uLiBVc2UgdGhpcyBCRUZPUkUgYSBwaWVjZSBvZiBjb2RlIHdoZXJlIHlvdQorICAgICAgICAgICAgICAgIHdhbnQgdG8gY2hlY2sgdG8gd2hhdCBieXRlY29kZXMgaXQgaXMgY29tcGlsZWQuCisgICAgICAgIHNob3dfY29kZV93aW5kb3c6IHNob3dzIHNvbWUgYnl0ZXMgc3RhcnRpbmcgYXQgb3IgbmVhciB0aGUKKyAgICAgICAgICAgICAgICBsYXN0IHBvaW50IHNldF9jb2RlX3dpbmRvdyB3YXMgY2FsbGVkLgorCitFWEFNUExFUworICAgICAgICAjcHJhZ21hIHN0cmljdF90eXBlcworICAgICAgICAjcHJhZ21hIG5vX2Nsb25lLCBub19pbmhlcml0CisKK0hJU1RPUlkKKyAgICAgICAgTERNdWQgMy4yLjcgYWRkZWQgbG9jYWxfc2NvcGVzLCBub19sb2NhbF9zY29wZXMsIG5vX2Nsb25lCisgICAgICAgIGFuZCBub19pbmhlcml0LgorICAgICAgICBMRE11ZCAzLjIuOCBhZGRlZCB3ZWFrX3R5cGVzLCBwZWRhbnRpYyBhbmQgc2xvcHB5LgorICAgICAgICBMRE11ZCAzLjIuOSBhbGxvd2VkIHRvIHNwZWNpZnkgbXVsdGlwbGUgcHJhZ21hcyBpbiBvbmUgZGlyZWN0aXZlLgorICAgICAgICBMRE11ZCAzLjIuOSBhZGRlZCAobm9fKXdhcm5fZGVwcmVjYXRlZC4KKyAgICAgICAgTERNdWQgMy4yLjEwIGFkZGVkIChub18pd2Fybl9lbXB0eV9jYXN0cy4KKyAgICAgICAgU3RhcnRpbmcgd2l0aCBMRE11ZCAzLjIuMTAsICNwcmFnbWEgeHh4X3R5cGVzIGluIGFuIGluY2x1ZGVkIGZpbGUgYXJlCisgICAgICAgICAgbm8gbG9uZ2VyIHZhbGlkIG9ubHkgdW50aWwgdGhlIGVuZCBvZiB0aGUgZmlsZSwgYnV0IHJlbWFpbiBhY3RpdmUKKyAgICAgICAgICB3aGVuIHByb2Nlc3NpbmcgcmV0dXJucyB0byB0aGUgaW5jbHVkaW5nIGZpbGUuCisgICAgICAgIExETXVkIDMuMi4xMSBhZGRlZCAobm9fKXdhcm5fZnVuY3Rpb25faW5jb25zaXN0ZW50LgorICAgICAgICBMRE11ZCAzLjMuMzc4IGFkZGVkIGluaXRfdmFyaWFibGVzLCBzaGFyZV92YXJpYWJsZXMuCisgICAgICAgIExETXVkIDMuMy4zNTcgYWRkZWQgKG5vXyl3YXJuX21pc3NpbmdfcmV0dXJuLgorICAgICAgICBMRE11ZCAzLjMuNjQ2IGFkZGVkIChub18pcmFuZ2VfY2hlY2suCisgICAgICAgIExETXVkIDMuNS4wIHJlbW92ZWQgY29tYmluZV9zdHJpbmdzIGFuZCBub19jb21iaW5lX3N0cmluZ3MuCisgICAgICAgIExETXVkIDMuNS4wIHJlbW92ZWQgbG9jYWxfc2NvcGVzIGFuZCBub19sb2NhbF9zY29wZXMuCisgICAgICAgIExETXVkIDMuNS4wIHJlbW92ZWQgdmVyYm9zZV9lcnJvcnMgKG1ha2luZyBpdHMgYmVoYXZpb3VyIG1hbmRhdG9yeSkuCisgICAgICAgIExETXVkIDMuNS4wIGVuYWJsZWQgd2Fybl9kZXByZWNhdGVkIGJ5IGRlZmF1bHQuCisKK1NFRSBBTFNPCisgICAgICAgIGluaGVyaXRhbmNlKExQQyksIGluaXRpYWxpc2F0aW9uKExQQyksIG9iamVjdHMoQyksCisgICAgICAgIG9wZXJhdG9ycyhMUEMpCmRpZmYgLS1naXQgYS9kb2MvTFBDL3ByZXByb2Nlc3NvciBiL2RvYy9MUEMvcHJlcHJvY2Vzc29yCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjYxNTkzZjAKLS0tIC9kZXYvbnVsbAorKysgYi9kb2MvTFBDL3ByZXByb2Nlc3NvcgpAQCAtMCwwICsxLDIzIEBACitOQU1FCisgICAgICAgIHByZXByb2Nlc3NvcgorCitERVNDUklQVElPTgorICAgICAgICBUaGUgTFBDIGRyaXZlciB1bmRlcnN0YW5kcyB0aGUgZm9sbG93aW5nIHByZXByb2Nlc3NvcgorICAgICAgICBkaXJlY3RpdmVzOgorCisgICAgICAgICNpbmNsdWRlLCAjZGVmaW5lLCAjaWYsICNpZmRlZiwgI2lmbmRlZiwgI2Vsc2UsICNlbGlmLAorICAgICAgICAjZW5kaWYsICN1bmRlZgorICAgICAgICAgICAgICAgIHNhbWUgYXMgaW4gQU5TSSBDCisKKyAgICAgICAgI2xpbmUgPG51bT4KKyAgICAgICAgICAgICAgICBsaW5lIG51bWJlcnMgc3RhcnQgYXQgPG51bT4gd2l0aCB0aGUgbmV4dCBsaW5lCisKKyAgICAgICAgI2VjaG8KKyAgICAgICAgICAgICAgICB0aGUgcmVzdCBvZiB0aGUgbGluZSBpcyBwcmludGVkIHRvIHRoZSBlcnJvciBvdXRwdXQKKyAgICAgICAgICAgICAgICAoc3RkZXJyKSwgdGh1cyBjYW4gYmUgY2FwdHVyZWQgaW50byBhIGxvZyBmaWxlCisKKyAgICAgICAgI3ByYWdtYQorICAgICAgICAgICAgICAgIHNlZSB0aGUgc2VwYXJhdGUgbWFuIHBhZ2UKKworU0VFIEFMU08KKyAgICAgICAgcHJhZ21hKExQQyksIHByZWRlZmluZWQoRCkKZGlmZiAtLWdpdCBhL2RvYy9MUEMvcmVmZXJlbmNlcyBiL2RvYy9MUEMvcmVmZXJlbmNlcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5jMWQ2MGYwCi0tLSAvZGV2L251bGwKKysrIGIvZG9jL0xQQy9yZWZlcmVuY2VzCkBAIC0wLDAgKzEsNDkgQEAKK0NPTkNFUFQKKyAgICAgICAgcmVmZXJlbmNlcworCitERVNDUklQVElPTgorICAgICAgICBDYWxsIGJ5IHJlZmVyZW5jZSBjYW4gYmUgdXNlZCB0byBoYXZlIGEgZnVuY3Rpb24gdGhhdCBwYXNzZXMKKyAgICAgICAgbW9yZSB0aGFuIG9uZSB2YWx1ZSB0byB0aGUgY2FsbGVyLCB3aXRob3V0IHVzaW5nIGFycmF5cyB0aGF0CisgICAgICAgIGhhdmUgdG8gYmUgdW5wYWNrZWQgdGhlcmVpbmFmdGVyLgorICAgICAgICBUaGVyZSBpcyBub3RoaW5nIHNwZWNpYWwgdG8gZGVjbGFyZSBpbiB0aGUgY2FsbGluZyBmdW5jdGlvbiwKKyAgICAgICAgeW91IHNpbXBseSBkbyBhbiBhc3NpZ25tZW50IHRvIGEgcGFyYW1ldGVyIG9mIHRoZSBmdW5jdGlvbi4KKyAgICAgICAgVGhlIGNhbGxlciBoYXMgdG8gcGFzcyByZWZlcmVuY2VzIGV4cGxpY2l0ZWx5OyB0aGlzIGlzIGRvbmUgYnkKKyAgICAgICAgcHJlZml4aW5nIGFuIGx2YWx1ZSB3aXRoICcmJyAuCisgICAgICAgIFRvIHBhc3MgYSByZWZlcmVuY2UgdG8gYW4gZWxlbWVudCBvZiBhbiBhcnJheSwgeW91IGhhdmUgdG8KKyAgICAgICAgZW5jbG9zZSB0aGUgaW5kZXhlZCBsdmFsdWUgaW4gcm91bmQgYnJhY2tldHMuCisKK0VYQU1QTEUKKworICAgICAgICB2b2lkIGFzc2lnbihtaXhlZCBkZXN0aW5hdGlvbiwgbWl4ZWQgc291cmNlKSB7CisgICAgICAgICAgICBkZXN0aW5hdGlvbiA9IHNvdXJjZTsKKyAgICAgICAgfQorCisgICAgICAgIHZvaWQgZXh0cmFjdF9udW1iZXIoaW50IGRlc3RpbmF0aW9uLCBzdHJpbmcgc291cmNlKSB7CisgICAgICAgICAgICBzc2NhbmYoc291cmNlLCAiJWQiLCBkZXN0aW5hdGlvbik7CisgICAgICAgIH0KKworICAgICAgICB2b2lkIHRlc3QoKSB7CisgICAgICAgICAgICBpbnQgaTsKKyAgICAgICAgICAgIGZsb2F0IGY7CisgICAgICAgICAgICBtaXhlZCAqYTsKKworICAgICAgICAgICAgZXh0cmFjdF9udW1iZXIoJmksICI0MiBwYWxhbnRpcnMiKTsKKyAgICAgICAgICAgIGFzc2lnbigmZiwgMy4xNDE1OTI2NTM1ODk3OTMpOworICAgICAgICAgICAgYXNzaWduKCZhLCAoeyBpLCBmIH0pKTsKKyAgICAgICAgICAgIGFzc2lnbigmKGFbPDAuLjwxXSksICh7MSwyLDMsInNpbmsiLCJ4IiwieSIsIngifSkpOworICAgICAgICAgICAgYXNzaWduKCYoYVs1XVswXSksICd3Jyk7CisgICAgICAgICAgICBhc3NpZ24oJihhWzVdWzwxXSksICdnJyk7CisgICAgICAgICAgICBwcmludGYoIiVPIiwgYSkpOworICAgICAgICB9CisKKyAgICAgICAgKHsgLyogc2l6ZW9mKCkgPT0gOSAqLworICAgICAgICAgIDQyLAorICAgICAgICAgIDMuMTQxNTksCisgICAgICAgICAgMSwKKyAgICAgICAgICAyLAorICAgICAgICAgIDMsCisgICAgICAgICAgIndpbmciLAorICAgICAgICAgICJ4IiwKKyAgICAgICAgICAieSIsCisgICAgICAgICAgIngiCisgICAgICAgIH0pCmRpZmYgLS1naXQgYS9kb2MvTFBDL3N0cmluZ3MgYi9kb2MvTFBDL3N0cmluZ3MKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMTU4MjBlZgotLS0gL2Rldi9udWxsCisrKyBiL2RvYy9MUEMvc3RyaW5ncwpAQCAtMCwwICsxLDY1IEBACitOQU1FCisgICAgICAgIHN0cmluZ3MKKworREVTQ1JJUFRJT04KKyAgICAgICAgQSBzdHJpbmcgaXMgYSBkYXRhIHR5cGUgaW4gTFBDLgorCisgICAgICAgIEl0IGNvbnNpc3RzIG9mIHNldmVyYWwgQVNDSUkgY2hhcmFjdGVycyAobGV0dGVycyksIG51bWJlcnMKKyAgICAgICAgYW5kIHNwZWNpYWwgY2hhcmFjdGVycy4gQVNDSUkgY2hhcmFjdGVycyBtYXkgY29udGFpbiBvZgorICAgICAgICB2YWx1ZXMgYmV0d2VlbiAtMTI4IGFuZCAxMjcgKGUuZy4gJ0EnICg2NSkgb3IgJzUnICg1MykpLCBidXQKKyAgICAgICAgMCBpcyBub3QgYWxsb3dlZCAoYmVjYXVzZSBzdHJpbmdzIGFyZSAnbnVsbCB0ZXJtaW5hdGVkJywKKyAgICAgICAgd2hpY2ggbWVhbnMgdGhhdCBtYXJrcyB0aGUgZW5kIG9mIGEgc3RyaW5nKS4KKworICAgICAgICBOb3RhdGlvbnMgZm9yIHN0cmluZ3M6CisgICAgICAgICJhYmMiICsgImRlZiIgImdoaSIgKyA1ICsgImprbCIgKyB0b19zdHJpbmcoICh7J20nLCduJ30pICkKKyAgICAgICAgPT0gImFiY2RlZmdoaTVqa2xtbiIKKworICAgICAgICBTcGVjaWFsIGNoYXJhY3RlcnMgbXVzdCBiZSBlc2NhcGVkIHdpdGggYSBsZWFkaW5nICdcJzoKKyAgICAgICAgICBcbiAgIChuZXcgbGluZSkKKyAgICAgICAgICBcdCAgICh0YWJ1bGF0b3IpCisgICAgICAgICAgXGIgICAoYmFja3NwYWNlKQorICAgICAgICAgIC4uLgorCisgICAgICAgIFRoZSBzaW5nbGUgY2hhcmFjdGVycyBjYW4gYmUgYWNjZXNzZWQgbGlrZSBhbiBhcnJheToKKyAgICAgICAgICBzdHJpbmcgczsKKyAgICAgICAgICBpbnQgaSxqOworCisgICAgICAgICAgcz0idGVzdCI7CisKKyAgICAgICAgICBzWzBdICAgICAgIChBU0NJSSBDb2RlICh2YWx1ZSkgb2YgdGhlIGZpcnN0IGNoYXJhY3RlcikgICAgID0ndCcKKyAgICAgICAgICBzWzwxXSAgICAgIChsYXN0IGNoYXJhY3RlcikgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID0ndCcKKyAgICAgICAgICBzWzAuLjBdICAgIChzdHJpbmcgY29tcG9zZWQgb2YgdGhlIGZpcnN0IGNoYXIpICAgICAgICAgICAgID0idCIKKyAgICAgICAgICBzWzEuLjwyXSAgIChzdHJpbmcgZnJvbSBzZWNvbmQgdG8gY2hhcmFjdGVyIGJlZm9yZSBsYXN0KSAgID0iZXMiCisgICAgICAgICAgc1syLi5dICAgICAoc3RyaW5nIGZyb20gdGhpcmQgdG8gbGFzdCBjaGFyYWN0ZXIpICAgICAgICAgICA9InN0IgorICAgICAgICAgIC4uLgorCisgICAgICAgIFN0cmluZyBtYW5pcHVsYXRpb25zOgorICAgICAgICAgIHNbMF09c1swXS0zMiAgICAoInRlc3QiIC0+ICJUZXN0IikKKyAgICAgICAgICBzWzEuLjwyXT0ibyIgICAgKCJ0ZXN0IiAtPiAidG90IikKKyAgICAgICAgICAuLi4KKworRlVOQ1RJT05TCisgICAgICAgIGludCBzdHJsZW4oc3RyaW5nIHN0cikKKyAgICAgICAgaW50IG1lbWJlcihzdHJpbmcgcywgaW50IGVsZW0pCisgICAgICAgIGludCBzdHJzdHIgKHN0cmluZyBzdHIsIHN0cmluZyBzdHIyLCBpbnQgcG9zKQorICAgICAgICBpbnQgdG9faW50KHN0cmluZykKKyAgICAgICAgbWl4ZWQgKnRvX2FycmF5KHN0cmluZykKKyAgICAgICAgc3RyaW5nIHRvX3N0cmluZyhtaXhlZCkKKyAgICAgICAgc3RyaW5nIHVwcGVyc3RyaW5nKHN0cmluZyBzdHIpCisgICAgICAgIHN0cmluZyBsb3dlcnN0cmluZyhzdHJpbmcgc3RyKQorICAgICAgICBzdHJpbmcgbG93ZXJfY2FzZShzdHJpbmcgc3RyKQorICAgICAgICBzdHJpbmcgY2FwaXRhbGl6ZShzdHJpbmcgc3RyKQorICAgICAgICBzdHJpbmcgYnJlYWtfc3RyaW5nKHN0cmluZyBzdHIsIGludCB3aWR0aCwgaW50IHNwYWNlLCBpbnQgbGVhdmVfbGZzKQorICAgICAgICBzdHJpbmcgc3ByaW50ZihzdHJpbmcgZm10LCAuLi4pCisgICAgICAgIGludCBzc2NhbmYoc3RyaW5nIHN0ciwgc3RyaW5nIGZtdCwgbWl4ZWQgdmFyMSwgbWl4ZWQgdmFyMiwgLi4uKQorICAgICAgICBzdHJpbmcgKm5ld19leHBsb2RlKHN0cmluZyBzdHIsIHN0cmluZyBkZWwpCisgICAgICAgIHN0cmluZyAqZXhwbG9kZShzdHJpbmcgc3RyLCBzdHJpbmcgZGVsKTsKKyAgICAgICAgc3RyaW5nIGltcGxvZGUobWl4ZWQgKmFyciwgc3RyaW5nIGRlbCkKKyAgICAgICAgc3RyaW5nICpyZWdleHBsb2RlIChzdHJpbmcgdGV4dCwgc3RyaW5nIHBhdHRlcm4pCisgICAgICAgIHN0cmluZyAqcmVnZXhwKHN0cmluZyAqbGlzdCwgc3RyaW5nIHBhdHRlcm4pCisKK1NFRSBBTFNPCisgICAgICAgIGFycmF5cywgaW50ZWdlcnMsIG1hcHBpbmdzLCBvcGVyYXRvcnMsIHR5cGVzCisKK0xBU1QgQ0hBTkdFRAorICAgICAgICAxMi4gTWFyIDIwMDQgR2xvaW5zb24KZGlmZiAtLWdpdCBhL2RvYy9MUEMvc3RydWN0cyBiL2RvYy9MUEMvc3RydWN0cwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4yMTdiMGE2Ci0tLSAvZGV2L251bGwKKysrIGIvZG9jL0xQQy9zdHJ1Y3RzCkBAIC0wLDAgKzEsMjI3IEBACitDT05DRVBUCisgICAgICAgIHN0cnVjdHMKKworSU5UUk9EVUNUSU9OCisgICAgICAgIHN0cnVjdHMgYXJlLCBuZXh0IHRvIGFycmF5cyBhbmQgbWFwcGluZ3MsIGEgd2F5IHRvIGdyb3VwIGEKKyAgICAgICAgY29sbGVjdGlvbiBvZiB2YWx1ZSB0b2dldGhlci4KKworICAgICAgICBBIHN0cnVjdCBob2xkcyBhIGZpeGVkIG51bWJlciBvZiB2YWx1ZXMsIGNhbGxlZCAnbWVtYmVycycsIGFuZAorICAgICAgICBhbGxvd3MgdG8gYWNjZXNzIHRoZW0gYnkgdGhlaXIgZ2l2ZW4gbmFtZS4gVGhlIG5hbWUgaXMgcmVzb2x2ZWQKKyAgICAgICAgd2hlbiB0aGUgTFBDIGNvZGUgaXMgY29tcGlsZWQsIG1ha2luZyBzdHJ1Y3QgbWVtYmVyIGFjY2VzcyBhcyBmYXN0CisgICAgICAgIGFzIGFycmF5IG1lbWJlciBhY2Nlc3MuCisKKyAgICAgICAgc3RydWN0cyBhcmUgcGFzc2VkIGJ5IHJlZmVyZW5jZS4KKworCitERUZJTklUSU9OCisgICAgICAgIEEgbmV3IHN0cnVjdCB0eXBlIGhhcyB0byBiZSBkZWZpbmVkIGF0IHRoZSB0b3AgbGV2ZWwgb2YgYW4KKyAgICAgICAgb2JqZWN0LiBGb3IgZXhhbXBsZQorCisgICAgICAgICAgICBzdHJ1Y3QgRm9vIHsKKyAgICAgICAgICAgICAgaW50ICAgICAgICBvbmUsICp0d287CisgICAgICAgICAgICAgIHN0cnVjdCBCYXIgdGhyZWU7CisgICAgICAgICAgICB9OworCisgICAgICAgIGRlZmluZXMgdGhlIG5ldyBzdHJ1Y3QgJ0Zvbycgd2l0aCB0aHJlZSBtZW1iZXJzOiBpbnRlZ2VyICdvbmUnLAorICAgICAgICBpbnRlZ2VyIGFycmF5ICd0d28nLCBhbmQgc3RydWN0IEJhciAndGhyZWUnCisKKyAgICAgICAgSXQgaXMgcG9zc2libGUgdG8gJ2luaGVyaXQnIHN0cnVjdHMgZnJvbSBlYWNoIG90aGVyLiBHaXZlbiBhYm92ZQorICAgICAgICBkZWZpbml0aW9uIG9mIHN0cnVjdCBGb28sIHRoZSBmb2xsb3dpbmcgZGVmaW5pdGlvbgorCisgICAgICAgICAgICBzdHJ1Y3QgUXV1eCAoRm9vKSB7CisgICAgICAgICAgICAgIGludCBmb3VyOworICAgICAgICAgICAgfTsKKworICAgICAgICBpcyBlcXVpdmFsZW50IHRvIHRoZSBkZWZpbml0aW9uCisKKyAgICAgICAgICAgIHN0cnVjdCBRdXV4IHsKKyAgICAgICAgICAgICAgaW50ICAgICAgICBvbmUsICp0d287CisgICAgICAgICAgICAgIHN0cnVjdCBCYXIgdGhyZWU7CisgICAgICAgICAgICAgIGludCBmb3VyOworICAgICAgICAgICAgfTsKKworCisgICAgICAgIFRoZSB1c3VhbCB2aXNpYmlsaXR5IG1vZGlmaWVycyBhcHBseSwgZS5nLgorCisgICAgICAgICAgICBwcm90ZWN0ZWQgc3RydWN0IEJhbmcgey4uLn07CisKKworICAgICAgICBzdHJ1Y3QgZGVmaW5pdGlvbnMgYXJlIHByb21vdGVkIHRocm91Z2ggaW5oZXJpdGFuY2UgbGlrZSBmdW5jdGlvbnMsCisgICAgICAgIHdpdGggdGhlIGRpZmZlcmVuY2UgdGhhdCBhbGwgc3RydWN0cyBsaXZlIGluIHRoZSBzYW1lIGZsYXQgbmFtZXNwYWNlLgorICAgICAgICBUaGlzIG1lYW5zOiBhIHN0cnVjdCBkZWZpbmVkIGluIGEgcHJvZ3JhbSBpcyB2aXNpYmxlIGluIF9hbGxfCisgICAgICAgIGluaGVyaXRlZCBwcm9ncmFtcywgcmVnYXJkbGVzcyBvZiBob3cgZGVlcCB0aGUgaW5oZXJpdGFuY2UgaXMKKyAgICAgICAgbmVzdGVkLiAgVGhpcyBhbHNvIG1lYW5zIHRoYXQgaW4gb25lIHByb2dyYW0gdGhlcmUgbXVzdCBub3QgYmUKKyAgICAgICAgdHdvIHN0cnVjdHMsIGluaGVyaXRlZCBvciBub3QsIHdpdGggdGhlIHNhbWUgbmFtZS4KKworCisgICAgICAgIFRvIGRlY2xhcmUgYSBzdHJ1Y3Qgd2l0aG91dCBkZWZpbmluZyBpdCwgd3JpdGU6CisKKyAgICAgICAgICAgIHN0cnVjdCBRdXV4OworCisgICAgICAgIFRoaXMgbm90YXRpb24gaXMgdXNlZnVsIGlmIHlvdSBoYXZlIHR3byBzdHJ1Y3RzIHJlZmVyZW5jaW5nCisgICAgICAgIGVhY2ggb3RoZXI6CisKKyAgICAgICAgICAgIHN0cnVjdCBRdXV4OworCisgICAgICAgICAgICBzdHJ1Y3QgQmFyIHsKKyAgICAgICAgICAgICAgc3RydWN0IFF1dXggcXV1eDsKKyAgICAgICAgICAgIH07CisgICAgICAgICAgICBzdHJ1Y3QgUXV1eCB7CisgICAgICAgICAgICAgIHN0cnVjdCBCYXIgYmFyOworICAgICAgICAgICAgfTsKKworCitVU0FHRQorICAgICAgICBUbyB1c2UgYSBzdHJ1Y3QsIGl0cyBkZWZpbml0aW9uIG11c3QgYmUgdmlzaWJsZSAtIGVpdGhlciBiZWNhdXNlIGl0CisgICAgICAgIGlzIGRlZmluZWQgaW4gdGhlIG9iamVjdCBjb21waWxlZCwgb3IgaXQgaGFzIGJlZW4gaW5oZXJpdGVkLgorICAgICAgICAoTm90ZTogI2luY2x1ZGUnaW5nIHN0cnVjdHMgZG9lcyBub3Qgd2hhdCB5b3UgdGhpbmsgaXQgZG9lczogaW4KKyAgICAgICAgTFBDIGl0IGNvbnN0cnVjdHMgYSBuZXcgc3RydWN0IHR5cGUgd2hlcmVldmVyIGl0IGlzIGluY2x1ZGVkKS4KKworCisgICAgICAgIEEgdmFyaWFibGUgdG8gaG9sZCBhIHN0cnVjdCBpcyBkZWZpbmVkIGxpa2UgdGhpczoKKworICAgICAgICAgICAgc3RydWN0IEZvbyB2YXI7CisKKyAgICAgICAgYW5kIHNpbWlsYXIgZm9yIGZ1bmN0aW9uIGFyZ3VtZW50czoKKworICAgICAgICAgICAgdm9pZCBmdW4gKHN0cnVjdCBGb28gYXJnKQorCisKKyAgICAgICAgSnVzdCB3cml0aW5nICdzdHJ1Y3QgRm9vIHZhcicgaG93ZXZlciBkb2VzIG5vdCBfY3JlYXRlXyBhIHN0cnVjdCwKKyAgICAgICAgaXQganVzdCBjcmVhdGVzIGEgdmFyaWFibGUgY2FwYWJsZSBvZiBob2xkaW5nIG9uZS4gVG8gYXNzaWduIGEgdmFsdWUKKyAgICAgICAgdG8gdGhlIHZhcmlhYmxlIHVwb24gY3JlYXRpb24sIGFzc2lnbiBpdCB3aXRoIGEgc3RydWN0IHZhbHVlLCBlaXRoZXIKKyAgICAgICAgZnJvbSBhbm90aGVyIHZhcmlhYmxlIG9yIGZyb20gYSBsaXRlcmFsIHN0cnVjdDoKKworICAgICAgICAgICAgc3RydWN0IEZvbyB2YXIgPSAoPEZvbz4pOworCisKKyAgICAgICAgTGl0ZXJhbCBzdHJ1Y3RzIGFyZSB3cml0dGVuIHVzaW5nICg8PikgYXMgZGVsaW1pdGVyczoKKworICAgICAgICAgICAgKDxGb28+KQorICAgICAgICAgICAgICAgIGNyZWF0ZXMgYW4gZW1wdHkgaW5zdGFuY2Ugb2Ygc3RydWN0IEZvbworCisgICAgICAgICAgICAoPEZvbz4gMSwgKHsgMiB9KSwgYmFyKQorICAgICAgICAgICAgICAgIGNyZWF0ZXMgYW4gaW5zdGFuY2Ugb2Ygc3RydWN0IEZvbywgYW5kIGFzc2lnbnMgMSB0byBtZW1iZXIKKyAgICAgICAgICAgICAgICAnb25lJywgKHsgMiB9KSB0byBtZW1iZXIgJ3R3bycsIGFuZCB0aGUgY29udGVudCBvZiB2YXJpYWJsZQorICAgICAgICAgICAgICAgIGJhciB0byBtZW1iZXIgJ3RocmVlJy4KKworICAgICAgICAgICAgKDxGb28+IHR3bzogKHsgMiB9KSApCisgICAgICAgICAgICAgICBjcmVhdGVzIGFuIGluc3RhbmNlIG9mIHN0cnVjdCBGb28gd2hpY2ggaXMgYWxsIGVtcHR5IGV4Y2VwdAorICAgICAgICAgICAgICAgZm9yIG1lbWJlciAndHdvJyB3aGljaCBpcyBhc3NpZ25lZCB0aGUgdmFsdWUgKHsgMiB9KS4KKworICAgICAgICBJdCBpcyBub3QgcG9zc2libGUgdG8gdXNlIGJvdGggbmFtZWQgYW5kIHVubmFtZWQgaW5pdGlhbGl6ZXJzCisgICAgICAgIGluIHRoZSBzYW1lIGxpdGVyYWwuCisKKworICAgICAgICBBIHN0cnVjdCBtZW1iZXIgaXMgYWNjZXNzZWQgdXNpbmcgdGhlIC0+IG9wZXJhdG9yOgorCisgICAgICAgICAgICBzdHJ1Y3QgRm9vIHZhciA9IC4uLjsKKworICAgICAgICAgICAgdmFyLT5vbmUgPSAxOworCisKKyAgICAgICAgSXQgaXMgcG9zc2libGUgdG8gY29tcHV0ZSBzdHJ1Y3QgbG9va3VwcyBhdCBydW50aW1lOgorCisgICAgICAgICAgICBzdHJ1Y3QgRm9vIGJhciA9IC4uLjsKKyAgICAgICAgICAgIHN0cmluZyBtZW1iZXIgPSAib25lIjsKKworICAgICAgICAgICAgYmFyLT4obWVtYmVyKSA9IDE7IC8vIHNldHMgYmFyLT5vbmUgdG8gMQorICAgICAgICAgICAgYmFyLT4oMCkgPSAxOyAgICAgIC8vIHNldHMgYmFyLT5vbmUgdG8gMQorCisKKyAgICAgICAgV2hlbiB1c2luZyBzdHJ1Y3QgdmFsdWVzIGhlbGQgaW4gdmFyaWFibGVzL2V4cHJlc3Npb25zIG9mIHR5cGUKKyAgICAgICAgJ21peGVkJywgdGhlICdtaXhlZCcgdmFsdWUgc2hvdWxkIHRvIGJlIGNhc3RlZCB0byB0aGUgc3RydWN0CisgICAgICAgIHZhbHVlLiBUaGUgY2FzdCBjYW4gYmUgb21pdHRlZCBpZiB0aGUgbG9va2VkLXVwIG1lbWJlciBleGlzdHMKKyAgICAgICAgaW4gb25seSBvbmUgc3RydWN0IChhbmQgaXRzIGNoaWxkcmVuKSBrbm93biB0byB0aGUgY29tcGlsZXI6CisKKyAgICAgICAgICAgIHN0cnVjdCBGb28geyBpbnQgb25lOyB9OworICAgICAgICAgICAgc3RydWN0IEJhciB7IGludCB0d287IH07CisgICAgICAgICAgICBzdHJ1Y3QgQmF6IHsgaW50IHR3bzsgfTsKKyAgICAgICAgICAgIG1peGVkIHZhcjsKKworICAgICAgICAgICAgICAgICAgICAgICAgdmFyLT5vbmUgIC8vIGxvb2tzIHVwIEZvby0+b25lCisgICAgICAgICAgICAoc3RydWN0IEZvbyl2YXItPm9uZSAgLy8gbG9va3MgdXAgRm9vLT5vbmUKKyAgICAgICAgICAgICAgICAgICAgICAgIHZhci0+dHdvICAvLyBFUlJPUjogYW1iaWd1b3VzIGxvb2t1cAorICAgICAgICAgICAgKHN0cnVjdCBCYXIpdmFyLT5vbmUgIC8vIGxvb2tzIHVwIEJhci0+b25lCisKKworVVNBR0UgSU4gQ0xPU1VSRVMKKyAgICAgICAgVGhlICMnKDwgb3BlcmF0b3IgY2FuIGJlIHVzZWQgaW4gbGFtYmRhIGNsb3N1cmVzIHRvIGNyZWF0ZSBhCisgICAgICAgIHN0cnVjdDsgdGhlIHR5cGUgb2YgdGhlIHN0cnVjdCBpcyBnaXZlbiBieSB0aGUgJ3RlbXBsYXRlJworICAgICAgICBzdHJ1Y3QgcGFzc2VkIGFzIGZpcnN0IGFyZ3VtZW50LiBUaGUgY29udGVudCBvZiB0aGUgdGVtcGxhdGUKKyAgICAgICAgc3RydWN0IGlzIGlycmVsZXZhbnQsIHNvIGFuIGVtcHR5IHN0cnVjdCBzdWZmaWNlcy4gRm9yCisgICAgICAgIGV4YW1wbGUsIHRvIGNyZWF0ZSBhbiBpbnN0YW5jZSBvZiBzdHJ1Y3QgRm9vOgorICAgICAgICAKKyAgICAgICAgICAgICh7ICMnKDwsICg8Rm9vPiksIDEsICh7IDIgfSksICg8QmFyPikgfSkKKworICAgICAgICBUaGUgb3JkZXIgb2YgdGhlIG1lbWJlciB2YWx1ZXMgaXMgdGhlIG9yZGVyIGluIHdoaWNoIHRoZXkKKyAgICAgICAgYXBwZWFyIGluIHRoZSBzdHJ1Y3QgZGVmaW5pdGlvbi4KKworICAgICAgICBUbyBhY2Nlc3MgYSBzdHJ1Y3QgbWVtYmVyIGluIGEgbGFtYmRhIGNsb3N1cmUsIHVzZSB0aGUgIyctPgorICAgICAgICBvcGVyYXRvciB3aXRoIHRoZSBuYW1lIG9mIHRoZSBtZW1iZXIgYXMgZG91YmxlLXF1b3RlZCBzeW1ib2wKKyAgICAgICAgb3IgbGl0ZXJhbCBzdHJpbmc6CisKKyAgICAgICAgICAgICh7ICMnLT4sIHN0cnVjdC1leHByZXNzaW9uLCAnJ29uZSB9KQorICAgICAgICAgICAgKHsgIyctPiwgc3RydWN0LWV4cHJlc3Npb24sICJvbmUiIH0pCisKKworTUlTQ0VMTEFORU9VUworICAgICAgICBJbnRlcm5hbGx5IHN0cnVjdHMgY2FuIGJlIGlkZW50aWZpZWQgYnkgdGhlIElEIHN0cmluZworICAgICAgICByZXR1cm5lZCBmcm9tIGdldF90eXBlX2luZm8oKS4gVGhpcyBzdHJpbmcgY29udGFpbnMgdGhlIG5hbWUKKyAgICAgICAgb2YgdGhlIHN0cnVjdCwgdGhlIG5hbWUgb2YgdGhlIHByb2dyYW0gaXRzIHR5cGUgd2FzIGRlZmluZWQgaW4sCisgICAgICAgIGFuZCB0aGUgSUQgbnVtYmVyIG9mIHRoZSBwcm9ncmFtLiBIb3dldmVyLCBkbyBub3QgcmVseSBvbgorICAgICAgICBhIHBhcnRpY3VsYXIgZm9ybWF0IG9mIHRoaXMgc3RyaW5nIQorCisgICAgICAgIFN1cHBvcnQgZm9yIHN0cnVjdHMgaXMgc2lnbmFsZWQgYnkgdGhlIG1hY3JvIF9fTFBDX1NUUlVDVFNfXy4KKworICAgICAgICBTaW5jZSBzdHJ1Y3RzIGFyZSB0aWVkIHRvIHRoZSBwcm9ncmFtIHRoZXkgYXJlIGRlZmluZWQgaW4sCisgICAgICAgIHJlLWNvbXBpbGluZyBhIHByb2dyYW0gY3JlYXRlcyBuZXcgc3RydWN0IHR5cGVzIHdoaWNoIGFyZQorICAgICAgICBpbiBwcmluY2lwbGUgaW5jb21wYXRpYmxlIHRvIHRoZSBvbGQgb25lcy4gSG93ZXZlciwgdGhlIExQQworICAgICAgICBjb21waWxlciBjaGVja3MgaWYgdGhlIG5ld2x5IGNvbXBpbGVkIHN0cnVjdHMgaGF2ZSB0aGUgc2FtZQorICAgICAgICBzdHJ1Y3R1cmUgYXMgdGhlaXIgb2xkZXIgY291bnRlcnBhcnRzIG9mIHRoZSBzYW1lIG5hbWUKKyAgICAgICAgKGFuZCBkZWZpbmluZyBwcm9ncmFtKS4gSWYgdGhlIHN0cnVjdHVyZXMgY29uZm9ybSwgdGhlIGV4aXN0aW5nCisgICAgICAgIG9sZGVyIHN0cnVjdCB0eXBlcyBhcmUgdXNlZCBpbnN0ZWFkIG9mIHRoZSBuZXcgb25lcy4gVGhpcyB3YXkKKyAgICAgICAgYW4gYWNjaWRlbnRhbCBvZiBmb3IgZXhhbXBsZSAvc3RkL3R5cGVzLmMgZG9lc24ndCBicmVhaworICAgICAgICB0aGUgd2hvbGUgbXVkLgorCisKK0VYQU1QTEVTCisgICAgICAgIFN1cHBvc2Ugd2UgaGF2ZSB0d28gb2JqZWN0czogYSBtb25zdGVyLCBhbmQgYSBtb25zdGVyCisgICAgICAgIGNvb3JkaW5hdGUgdHJhY2tlciwgYW5kIHdlIHdhbnQgdG8gdXNlIGEgc3RydWN0IHRvIHN0b3JlIHRoZQorICAgICAgICBjb29yZGluYXRlOgorCisgICAgICAgICAgLS0gbW9uc3Rlcl9jb29yZGluYXRlLmMgLS0KKyAgICAgICAgICAgIHN0cnVjdCBDb29yZGluYXRlIHsgaW50IHg7IGludCB5OyB9OworCisgICAgICAgICAgLS0gbW9uc3Rlcl90cmFja2VyLmMgLS0KKyAgICAgICAgICAgIGluaGVyaXQgIm1vbnN0ZXJfY29vcmRpbmF0ZSI7CisKKyAgICAgICAgICAgIHZvaWQgdHJhY2sgKHN0cnVjdCBDb29yZGluYXRlIGNvb3JkKSB7IC4uLiB9CisKKyAgICAgICAgICAtLSBtb25zdGVyLmMgLS0KKyAgICAgICAgICAgIGluaGVyaXQgIm1vbnN0ZXJfY29vcmRpbmF0ZSI7CisKKyAgICAgICAgICAgIGludCBtb3ZlICguLikgeworICAgICAgICAgICAgICAuLi4KKyAgICAgICAgICAgICAgIm1vbnN0ZXJfdHJhY2tlciItPnRyYWNrKCAoPENvb3JkaW5hdGU+IG15X3gsIG15X3kpICk7CisgICAgICAgICAgICB9CisKKyAgICAgICAgTm90ZSB0aGF0IHVzaW5nICcjaW5jbHVkZSAibW9uc3Rlcl9jb29yZGluYXRlLmMiJyBpbnN0ZWFkIG9mIGluaGVyaXQKKyAgICAgICAgd29uJ3Qgd29yay4gV2hpbGUgdGhlIG9iamVjdHMgd291bGQgY29tcGlsZSwgdGhlIGZpcnN0IGNhbGwgdG8KKyAgICAgICAgdHJhY2soKSB3b3VsZCBjYXVzZSBhIHJ1bnRpbWUgZXJyb3Igb2YgdGhlIHR5cGUgCisKKyAgICAgICAgICBJbGxlZ2FsIHR5cGUgdG8gc3RydWN0LT4oKTogc3RydWN0IENvb3JkaW5hdGUgKC9tb25zdGVyLmMgIzIzNCksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGV4cGVjdGVkIHN0cnVjdCBDb29yZGluYXRlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgvbW9uc3Rlcl90cmFja2VyLmMgIzU1MikKKworCitISVNUT1JZCisgICAgICAgIHN0cnVjdHMgd2VyZSBmdWxseSBpbXBsZW1lbnRlZCBmaXJzdCBpbiBMRE11ZCAzLjMuMjQ2LgorICAgICAgICBUaGUgaW1wbGVtZW50YXRpb24gd2FzIHJldmlzZWQgaW4gTERNdWQgMy4zLjM0NC4KKyAgICAgICAgVGhlIHJlYWN0aXZhdGlvbiBvZiB1bmNoYW5nZWQgc3RydWN0cyBpbiBvYmplY3QgdXBkYXRlcyB3YXMKKyAgICAgICAgaW1wbGVtZW50ZWQgaW4gTERNdWQgMy4zLjQxNy4KKworCitTRUUgQUxTTworICAgICAgICBtYXBwaW5ncyhMUEMpLCBnZXRfdHlwZV9pbmZvKEUpLCBzdHJ1Y3RwKEUpLCB0b19tYXBwaW5nKEUpLAorICAgICAgICB0b19zdHJ1Y3QoRSksIHN0cnVjdF9pbmZvKEUpLCBiYXNlb2YoRSkKZGlmZiAtLWdpdCBhL2RvYy9MUEMvc3dpdGNoIGIvZG9jL0xQQy9zd2l0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOWJjYTU5NgotLS0gL2Rldi9udWxsCisrKyBiL2RvYy9MUEMvc3dpdGNoCkBAIC0wLDAgKzEsOTMgQEAKK05BTUUKKyAgICAgICAgc3dpdGNoCisKK1NZTlRBWAorICAgICAgICBzd2l0Y2ggKGV4cHIpIGJsb2NrCisKK0RFU0NSSVBUSU9OCisgICAgICAgIEJyYW5jaCB0byB0aGUgY2FzZSBsYWJlbCBpbiBzdGF0ZW1lbnQgdGhhdCBtYXRjaGVzIGV4cHIuCisgICAgICAgIElmIG5vIG1hdGNoaW5nIGNhc2UgbGFiZWwgaXMgZm91bmQgKGJ5IHZhbHVlIG9yIGJ5IHR5cGUpLAorICAgICAgICBicmFuY2ggdG8gdGhlIGRlZmF1bHQgbGFiZWwgaW4gc3RhdGVtZW50LgorCisgICAgICAgIEEgY2FzZSBsYWJlbCBoYXMgdGhlIGZvcm0KKworICAgICAgICAgICAgICAgIGNhc2UgZXhwcl9uIDoKKworICAgICAgICB3aGVyZSBleHByX24gbXVzdCBiZSBjb25zdGFudCwgb3IgdGhlIGZvcm0KKworICAgICAgICAgICAgICAgIGNhc2UgZXhwcl9uMSAuLiBleHByX24yIDoKKworICAgICAgICB3aGVyZSBleHByX24xIGFuZCBleHByX24yIG11c3QgYmUgbnVtZXJpYyBjb25zdGFudHMgYW5kCisgICAgICAgIGV4cHJfbjEgPCBleHByX24yLgorCisgICAgICAgIEVpdGhlciBhbGwgY2FzZSBsYWJlbHMgaGF2ZSB0byBiZSBzdHJpbmdzIG9yIGFsbCBoYXZlIHRvIGJlCisgICAgICAgIG51bWVyaWMuIE9ubHkgMCBpcyBzcGVjaWFsOiBpdCBpcyBhbGxvd2VkIGluIGEgc3dpdGNoCisgICAgICAgIHN0YXRlbWVudCB3aGVyZSBhbGwgb3RoZXIgbGFiZWxzIGFyZSBzdHJpbmdzLgorCisgICAgICAgIEEgZGVmYXVsdCBsYWJlbCBoYXMgdGhlIGZvcm0KKworICAgICAgICAgICAgICAgIGRlZmF1bHQgOgorCisgICAgICAgIFRoZSBkZWZhdWx0IGxhYmVsIGRlZmF1bHRzIHRvIHRoZSBlbmQgb2Ygc3RhdGVtZW50IGlmIG5vdAorICAgICAgICBnaXZlbiBleHBsaWNpdGx5LgorCisgICAgICAgIFdoZW5ldmVyIGEgJ2JyZWFrJyBzdGF0ZW1lbnQgaXMgZXhlY3V0ZWQgaW5zaWRlICdzdGF0ZW1lbnQnIGEKKyAgICAgICAgYnJhbmNoIHRvIHRoZSBlbmQgb2YgdGhlIHN3aXRjaCBzdGF0ZW1lbnQgaXMgcGVyZm9ybWVkLgorCitFWEFNUExFCisgICAgICAgIFR5cGljYWwgdXNhZ2U6CisKKyAgICAgICAgICAgIHN3aXRjaChyYW5kb20oMTAwKSkgeworICAgICAgICAgICAgICBjYXNlIDAgLi4gMjIgOiB3cml0ZSgiTm90aGluZyBoYXBwZW5zIik7IGJyZWFrOworICAgICAgICAgICAgICBjYXNlIDIzIC4uIDI3IDoKKyAgICAgICAgICAgICAgICB3cml0ZSgiWW91IGFyZSBzdXJyb3VuZGVkIGJ5IGEgZ29sZGVuIGdsb3ciKTsKKyAgICAgICAgICAgICAgICB0aGlzX3BsYXllcigpLT5oZWFsX3NlbGYocmFuZG9tKDMpKTsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgY2FzZSAyOCAuLiAzMiA6CisgICAgICAgICAgICAgICAgd3JpdGUoIlRoZSB3YXRlciB3YXMgcG9pc29uZWQhXG4iKTsKKyAgICAgICAgICAgICAgICB0aGlzX3BsYXllcigpLT5hZGRfZXhwKHRoaXNfcGxheWVyKCktPmhpdF9wbGF5ZXIocmFuZG9tKDQpKSk7CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgIGNhc2UgMzMgOiB3cml0ZSgiWW91IGhlYXIgYSB2b2ljZSB3aGlzcGVyaW5nOiAiK3JhbmRvbV9oaW50KCkpOworICAgICAgICAgICAgICAvKiBmYWxsIHRocm91Z2ggKi8KKyAgICAgICAgICAgICAgY2FzZSAzNCA6CisgICAgICAgICAgICAgICAgd3JpdGUoIldoaWxlIHlvdSBkaWRuJ3QgcGF5IGF0dGVudGlvbiwgYSB3YXRlciBkZW1vbiAiCisgICAgICAgICAgICAgICAgICAgICAgInNuYXRjaGVzIGEgY29pbiBvdXQgb2YgeW91ciBwdXJzZSFcbiIpOworICAgICAgICAgICAgICAgIHRoaXNfcGxheWVyKCktPmFkZF9tb25leSgtMSk7CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgIGRlZmF1bHQgOiB3cml0ZSAiWW91IGhlYXIgc29tZSBzdHJhbmdlIG5vaXNlc1xuIjsgYnJlYWs7CisgICAgICAgICAgICAgIGNhc2UgNDIgOiByZXR1cm47CisgICAgICAgICAgICAgIGNhc2UgOTkgOiB3cml0ZSgiSXQgdGFzdGVzIGdvb2QuXG4iOworICAgICAgICAgICAgfQorCitOT1RFCisgICAgICAgIEluIEMsIHRoZSBncmFtbWFyIGZvciBzd2l0Y2goKSBpcworCisgICAgICAgICAgICBzd2l0Y2ggKGV4cHIpIHN0YXRlbWVudAorCisgICAgICAgIGFsbG93aW5nIGNvbnN0cnVjdHMgbGlrZQorCisgICAgICAgICAgICBzd2l0Y2ggKGV4cHIpCisgICAgICAgICAgICAgIHdoaWxlIChleHByMikKKyAgICAgICAgICAgICAgeworICAgICAgICAgICAgICBjYXNlIDE6IC4uLgorICAgICAgICAgICAgICBjYXNlIDI6IC4uLgorICAgICAgICAgICAgICB9CisKKyAgICAgICAgSW4gTFBDIGEgc3dpdGNoIGhhcyB0byBiZSBmb2xsb3dlZCBieSBhIGJsb2NrIHRoYXQgY29udGFpbnMgdGhlCisgICAgICAgIGNhc2UgbGFiZWxzIGRpcmVjdGx5LiBJbiBjb250cmFzdCB0byBDIHRoZSBncm91cCBvZiBzdGF0ZW1lbnRzCisgICAgICAgIGZvbGxvd2luZyBhIGNhc2UgbGFiZWwgaGF2ZSB0aGVpciBvd24gbGV4aWNhbCBzY29wZSBzbyB0aGF0CisgICAgICAgIHZhcmlhYmxlIGRlY2xhcmF0aW9ucyBtYXkgbm90IGNyb3NzIGNhc2UgbGFiZWxzLgorCitISVNUT1JZCisgICAgICAgIExETXVkIDMuMi4xMCBjb25zdHJhaW5lZCB0aGUgZ3JhbW1hciB0byByZXF1aXJlIGEgYmxvY2sgZm9yIHRoZQorICAgICAgICAgIHN3aXRjaCgpIGJvZHksIG5vdCBqdXN0IGEgc3RhdGVtZW50LiBUaGlzIGRpZmZlcnMgZnJvbSB0aGUgQworICAgICAgICAgIHN5bnRheCwgYnV0IHdhcyBuZWNlc3NhcnkgYXMgdGhlIGNvbXBpbGVyIGRpZG4ndCBoYW5kbGUKKyAgICAgICAgICB0aGUgc3RhdGVtZW50IGNhc2UgY29ycmVjdGx5LgorICAgICAgICBMRE11ZCAzLjMgYWxsb3dlZCB0byBwYXNzIHZhbHVlcyBvZiB0aGUgd3JvbmcgdHlwZSB0byBzd2l0Y2goKSwgdGhlCisgICAgICAgICAgZHJpdmVyIHdvdWxkIGluIHRoYXQgY2FzZSB1c2UgdGhlIGRlZmF1bHQgY2FzZS4gQmVmb3JlLCB2YWx1ZXMgb2YKKyAgICAgICAgICB0aGUgd3JvbmcgdHlwZSBjYXVzZWQgYSBydW50aW1lIGVycm9yLgorICAgICAgICBMRE11ZCAzLjMuNzE4IGRpc2FsbG93ZWQgY2FzZSBsYWJlbHMgaW4gaW5uZXIgYmxvY2tzIGFuZCB2YXJpYWJsZQorICAgICAgICAgIGRlY2xhcmF0aW9ucyB0aGF0IGNyb3NzIGNhc2UgbGFiZWxzLgorCitTRUUgQUxTTworICAgICAgICBmb3IoTFBDKSwgZm9yZWFjaChMUEMpLCBkby13aGlsZShMUEMpLCBpZihMUEMpLCB3aGlsZShMUEMpCmRpZmYgLS1naXQgYS9kb2MvTFBDL3R5cGVzIGIvZG9jL0xQQy90eXBlcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi45MDNhMWJlCi0tLSAvZGV2L251bGwKKysrIGIvZG9jL0xQQy90eXBlcwpAQCAtMCwwICsxLDEzNiBAQAorQ09OQ0VQVAorICAgIHR5cGVzCisKK0RFU0NSSVBUSU9OCisKKyAgICBWYXJpYWJsZXMgY2FuIGhhdmUgdGhlIGZvbGxvd2luZyB0eXBlczoKKworICAgIG8gaW50ICAgICAgIEFuIGludGVnZXIuIE5vcm1hbGx5IGZ1bGwgMzIgYml0cyBzaWduZWQsIHlpZWxkaW5nIGEKKyAgICAgICAgICAgICAgICByYW5nZSBvZiBhdCBsZWFzdCAtMiwxNDcsNDgzLDY0OCB0byAyLDE0Nyw0ODMsNjQ3LiBUaGUKKyAgICAgICAgICAgICAgICBleGFjdCBhdmFpbGFibGUgcmFuZ2UgaXMgZ2l2ZW4gYnkgdGhlIHByZWRlZmluZWQKKyAgICAgICAgICAgICAgICBtYWNyb3MgX19JTlRfTUlOX18gYW5kIF9fSU5UX01BWF9fLgorCisgICAgICAgICAgICAgICAgSW50ZWdlciB2YWx1ZXMgY2FuIGJlIHNwZWNpZmllZCBpbiBkZWNpbWFsLCBpbgorICAgICAgICAgICAgICAgIHNlZGVjaW1hbCB3aGVuIHByZWNlZWRlZCBieSAnMHgnIChlLmcuIDB4MTEpLCBiaW5hcnkKKyAgICAgICAgICAgICAgICB3aGVuIHByZWNlZWRlZCBieSAnMGInIChlLmcuIDBiMDAwMTAwMDEpLCBvY3RhbCB3aGVuCisgICAgICAgICAgICAgICAgcHJlY2VlZGVkIGJ5ICcwbycgKGUuZy4gMG8yMSkgYW5kIGFzIGNoYXJhY3RlcgorICAgICAgICAgICAgICAgIHlpZWxkaW5nIHRoZSBjaGFyc2V0IHZhbHVlIGZvciB0aGUgY2hhcmFjdGVyIGFzIHRoZSBudW1iZXIKKyAgICAgICAgICAgICAgICB0byB1c2UgKGUuZy4gJzAnIHlpZWxkcyA0OCBvbiBBU0NJSSBtYWNoaW5lcykuCisKKyAgICAgICAgICAgICAgICBDaGFyYWN0ZXIgdmFsdWVzIGFyZSBlbmNsb3NlZCBpbiBzaW5nbGUtcXVvdGVzICgnKSwKKyAgICAgICAgICAgICAgICB3aXRoIHRoZSBzZXF1ZW5jZSAnJycgcmV0dXJuaW5nIHRoZSBzaW5nbGUtcXVvdGUKKyAgICAgICAgICAgICAgICBpdHNlbGYuIEluc3RlYWQgb2YgdGhlIGxpdGVyYWwgY2hhcmFjdGVyIGFuCisgICAgICAgICAgICAgICAgZXNjYXBlLXNlcXVlbmNlIGNhbiBiZSB3cml0dGVuIGJldHdlZW4gdGhlCisgICAgICAgICAgICAgICAgc2luZ2xlLXF1b3RlczoKKyAgICAgICAgICAgICAgICAgIFxOICAgOiB0aGUgY2hhcmFjdGVyIGNvZGUgTiBpbiBkZWNpbWFsCisgICAgICAgICAgICAgICAgICBcMHhOIDogdGhlIGNoYXJhY3RlciBjb2RlIE4gaW4gc2VkZWNpbWFsCisgICAgICAgICAgICAgICAgICBceE4gIDogdGhlIGNoYXJhY3RlciBjb2RlIE4gaW4gc2VkZWNpbWFsCisgICAgICAgICAgICAgICAgICBcMG9OIDogdGhlIGNoYXJhY3RlciBjb2RlIE4gaW4gb2N0YWwKKyAgICAgICAgICAgICAgICAgIFwwYk4gOiB0aGUgY2hhcmFjdGVyIGNvZGUgTiBpbiBiaW5hcnkKKyAgICAgICAgICAgICAgICAgIFxhICAgOiBCRUwgKDB4MDcpCisgICAgICAgICAgICAgICAgICBcYiAgIDogQmFja3NwYWNlICgweDA4KQorICAgICAgICAgICAgICAgICAgXHQgICA6IFRhYiAoMHgwOSkKKyAgICAgICAgICAgICAgICAgIFxlICAgOiBFc2NhcGUgKDB4MWIpCisgICAgICAgICAgICAgICAgICBcbiAgIDogTmV3bGluZSAoMHgwYSkKKyAgICAgICAgICAgICAgICAgIFxmICAgOiBGb3JtZmVlZCAoMHgwYykKKyAgICAgICAgICAgICAgICAgIFxyICAgOiBDYXJyaWFnZSBSZXR1cm4gKDB4MGQpCisgICAgICAgICAgICAgICAgICBcPG90aGVyIGNoYXJhY3Rlcj46IHRoZSBnaXZlbiBjaGFyYWN0ZXIKKworICAgIG8gc3RhdHVzICAgIE9VVERBVEVEIC0gc3RhdHVzIHdhcyBwbGFubmVkIHRvIGJlIGFuIG9wdGltaXplZAorICAgICAgICAgICAgICAgIGJvb2xlYW4gZm9ybWF0LCBidXQgdGhpcyB3YXMgbmV2ZXIgYWN0dWFsbHkKKyAgICAgICAgICAgICAgICBpbXBsZW1lbnRlZC4gc3RhdHVzIGRvZXMgd29yazsgaG93ZXZlciwgc2luY2UgaXQKKyAgICAgICAgICAgICAgICBpcyBvbmx5IGFuIGFsaWFzIGZvciB0eXBlICdpbnQnLCBqdXN0IHVzZSBpbnQuCisKKyAgICBvIHN0cmluZyAgICBTdHJpbmdzIGluIGxwYyBhcmUgdHJ1ZSBzdHJpbmdzLCBub3QgYXJyYXlzIG9mIGNoYXJhY3RlcnMKKyAgICAgICAgICAgICAgICBhcyBpbiBDIChhbmQgbm90IHBvaW50ZXJzIHRvIHN0cmluZ3MpLiBTdHJpbmdzIGFyZQorICAgICAgICAgICAgICAgIG11dGFibGUgLS0gdGhhdCBpcywgdGhlIGNvbnRlbnRzIG9mIGEgc3RyaW5nIGNhbiBiZQorICAgICAgICAgICAgICAgIG1vZGlmaWVkIGFzIG5lZWRlZC4KKworICAgICAgICAgICAgICAgIFRoZSB0ZXh0IG9mIGEgc3RyaW5nIGlzIHdyaXR0ZW4gYmV0d2VlbiBkb3VibGUtcXVvdGVzCisgICAgICAgICAgICAgICAgKCIpLiBBIHN0cmluZyBjYW4gd3JpdHRlbiBvdmVyIHNldmVyYWwgbGluZXMgd2hlbiB0aGUKKyAgICAgICAgICAgICAgICBsaW5lZW5kcyBhcmUgZXNjYXBlZCAobGlrZSBhIG1hY3JvKSwgaG93ZXZlciBhIGJldHRlcgorICAgICAgICAgICAgICAgIHNvbHV0aW9uIGlzIHRvIHdyaXRlIG9uZSBzdHJpbmcgcGVyIGxpbmUgYW5kIGxldCB0aGUKKyAgICAgICAgICAgICAgICBnYW1lZHJpdmVyIGNvbmNhdGVuYXRlIHRoZW0uCisKKyAgICAgICAgICAgICAgICBTdHJpbmcgdGV4dCB0eXBpY2FsbHkgY29uc2lzdHMgb2YgbGl0ZXJhbCBjaGFyYWN0ZXJzLAorICAgICAgICAgICAgICAgIGJ1dCBlc2NhcGUtc2VxdWVuY2VzIGNhbiBiZSB1c2VkIGluc3RlYWQgb2YKKyAgICAgICAgICAgICAgICBjaGFyYWN0ZXJzOgorICAgICAgICAgICAgICAgICAgXDxDUj4gICAgIDogQ2FycmlhZ2UgUmV0dXJuICgweDBkKQorICAgICAgICAgICAgICAgICAgXDxDUj48TEY+IDogaWdub3JlZAorICAgICAgICAgICAgICAgICAgXDxMRj4gICAgIDogaWdub3JlZAorICAgICAgICAgICAgICAgICAgXDxMRj48Q1I+IDogaWdub3JlZAorCisgICAgICAgICAgICAgICAgICBcTiAgIDogdGhlIGNoYXJhY3RlciBjb2RlIE4gaW4gZGVjaW1hbAorICAgICAgICAgICAgICAgICAgXDB4TiA6IHRoZSBjaGFyYWN0ZXIgY29kZSBOIGluIHNlZGVjaW1hbAorICAgICAgICAgICAgICAgICAgXHhOICA6IHRoZSBjaGFyYWN0ZXIgY29kZSBOIGluIHNlZGVjaW1hbAorICAgICAgICAgICAgICAgICAgXDBvTiA6IHRoZSBjaGFyYWN0ZXIgY29kZSBOIGluIG9jdGFsCisgICAgICAgICAgICAgICAgICBcMGJOIDogdGhlIGNoYXJhY3RlciBjb2RlIE4gaW4gYmluYXJ5CisgICAgICAgICAgICAgICAgICBcYSAgIDogQkVMICgweDA3KQorICAgICAgICAgICAgICAgICAgXGIgICA6IEJhY2tzcGFjZSAoMHgwOCkKKyAgICAgICAgICAgICAgICAgIFx0ICAgOiBUYWIgKDB4MDkpCisgICAgICAgICAgICAgICAgICBcZSAgIDogRXNjYXBlICgweDFiKQorICAgICAgICAgICAgICAgICAgXG4gICA6IE5ld2xpbmUgKDB4MGEpCisgICAgICAgICAgICAgICAgICBcZiAgIDogRm9ybWZlZWQgKDB4MGMpCisgICAgICAgICAgICAgICAgICBcciAgIDogQ2FycmlhZ2UgUmV0dXJuICgweDBkKQorICAgICAgICAgICAgICAgICAgXCIgICA6IFRoZSBkb3VibGUgcXVvdGUgKCIpCisgICAgICAgICAgICAgICAgICBcPG90aGVyIGNoYXJhY3Rlcj46IHRoZSBnaXZlbiBjaGFyYWN0ZXIKKworICAgICAgICAgICAgICAgIEFkamFjZW50IHN0cmluZyBsaXRlcmFscyBhcmUgYXV0b21hdGljYWxseQorICAgICAgICAgICAgICAgIGNvbmNhdGVuYXRlZCBieSB0aGUgZHJpdmVyIHdoZW4gdGhlIExQQyBwcm9ncmFtIGlzCisgICAgICAgICAgICAgICAgY29tcGlsZWQuIFN0cmluZyBsaXRlcmFscyBqb2luZWQgd2l0aCAnKycgYXJlCisgICAgICAgICAgICAgICAgY29uY2F0ZW5hdGVkIGJ5IHRoZSBMUEMgY29tcGlsZXIgYXMgd2VsbC4KKworICAgIG8gb2JqZWN0ICAgIFBvaW50ZXIgdG8gYW4gb2JqZWN0LiBPYmplY3RzIGFyZSBhbHdheXMgcGFzc2VkIGJ5CisgICAgICAgICAgICAgICAgcmVmZXJlbmNlLgorCisgICAgbyBhcnJheSAgICAgUG9pbnRlciB0byBhIHZlY3RvciBvZiB2YWx1ZXMsIHdoaWNoIGNvdWxkIGFsc28KKyAgICAgICAgICAgICAgICBiZSBhbiBhbGlzdC4gQXJyYXlzIHRha2UgdGhlIGZvcm0gKHsgbjEsIG4yLCBuMyB9KQorICAgICAgICAgICAgICAgIGFuZCBtYXkgY29udGFpbiBhbnkgdHlwZSBvciBhIG1peCBvZiB0eXBlcy4gQXJyYXlzCisgICAgICAgICAgICAgICAgYXJlIGFsd2F5cyBwYXNzZWQgYnkgcmVmZXJlbmNlLiBOb3RlIHRoYXQgdGhlIHNpemUKKyAgICAgICAgICAgICAgICBvZiBhcnJheXMgaW4gTFBDLCB1bmxpa2UgbW9zdCBwcm9ncmFtbWluZyBsYW5ndWFnZXMsCisgICAgICAgICAgICAgICAgQ0FOIGJlIGNoYW5nZWQgYXQgcnVuLXRpbWUuCisKKyAgICBvIG1hcHBpbmcgICBBbiAnYXNzb2NpYXRpdmUgYXJyYXknIGNvbnNpc3Rpbmcgb2YgdmFsdWVzIGluZGV4ZWQgYnkKKyAgICAgICAgICAgICAgICBrZXlzLiBUaGUgaW5kaWNlcyBjYW4gYmUgYW55IGtpbmQgb2YgZGF0YXR5cGUuCisgICAgICAgICAgICAgICAgTWFwcGluZ3MgdGFrZSB0aGUgZm9ybSAoWyBrZXkxOiB2YWx1ZTEsIGtleTI6IHZhbHVlMiBdKS4KKyAgICAgICAgICAgICAgICBCeSBkZWZhdWx0LCBtYXBwaW5ncyBhcmUgcGFzc2VkIGJ5IHJlZmVyZW5jZS4KKworICAgIG8gY2xvc3VyZSAgIFJlZmVyZW5jZXMgdG8gZXhlY3V0YWJsZSBjb2RlLCBib3RoIHRvIGxvY2FsCisgICAgICAgICAgICAgICAgZnVuY3Rpb25zLCBlZnVucyBhbmQgdG8gZnVuY3Rpb25zIGNvbXBpbGVkIGF0CisgICAgICAgICAgICAgICAgcnVuLXRpbWUgKCJsYW1iZGEgY2xvc3VyZXMiKS4KKworICAgIG8gc3ltYm9sICAgIElkZW50aWZpZXIgbmFtZXMsIHdoaWNoIGluIGVzc2VuY2UgYXJlIHF1b3RlZCBzdHJpbmdzLgorICAgICAgICAgICAgICAgIFRoZXkgYXJlIHVzZWQgdG8gY29tcHV0ZSBsYW1iZGEgY2xvc3VyZXMsIGUuZy4gaW5zdGVhZAorICAgICAgICAgICAgICAgIG9mICh7Li4uLCAnaWRlbnQsIC4uLiB9KSB5b3UgY2FuIHdyaXRlIGRlY2xhcmUgYQorICAgICAgICAgICAgICAgICdzeW1ib2wnIHZhcmlhYmxlIGZvbywgY29tcHV0ZSBhIHZhbHVlIGZvciBpdCwgYW5kIHRoZW4KKyAgICAgICAgICAgICAgICBjcmVhdGUgdGhlIGNsb3N1cmUgYXMgKHsgLi4uLCBmb28sIC4uLiB9KQorCisgICAgbyBmbG9hdCAgICAgQSBmbG9hdGluZyBwb2ludCBudW1iZXIgaW4gdGhlIGFic29sdXRlIHJhbmdlCisgICAgICAgICAgICAgICAgX19GTE9BVF9NSU5fXyB0byBfX0ZMT0FUX01BWF9fICh0eXBpY2FsbHkgMWUtMzggdG8gMWUrMzgpLgorICAgICAgICAgICAgICAgIEZsb2F0aW5nIHBvaW50IG51bWJlcnMgYXJlIHNpZ25pZmllZCBieSBhICcuJworICAgICAgICAgICAgICAgIGFwcGVhcmluZywgZS5nLiAnMScgaXMgaW50ZWdlciAxLCBidXQgJzEuJyBpcworICAgICAgICAgICAgICAgIGZsb2F0aW5nLXBvaW50IDEgLgorCisgICAgbyBtaXhlZCAgICAgQSB2YXJpYWJsZSBhbGxvd2VkIHRvIHRha2UgYSB2YWx1ZSBvZiBhbnkgdHlwZSAoaW50LAorICAgICAgICAgICAgICAgIHN0cmluZywgb2JqZWN0LCBhcnJheSwgbWFwcGluZywgZmxvYXQgb3IgY2xvc3VyZSkuCisKKyAgICBvIHN0cnVjdCAgICBBIGNvbGxlY3Rpb24gb2YgdmFsdWVzLiBTZWUgc3RydWN0cyhMUEMpLgorCisgICAgbyB1bmlvbiAgICAgQSByYW5nZSBvZiB0eXBlcywgZWl0aGVyIG9mIHdoaWNoIHRoZSB2YXJpYWJsZQorICAgICAgICAgICAgICAgIGNhbiBjb250YWluIGF0IHJ1bnRpbWUuIFNlZSB1bmlvbnMoTFBDKS4KKworICAgIEFsbCB1bmluaXRpYWxpemVkIHZhcmlhYmxlcyBoYXZlIHRoZSB2YWx1ZSAwLgorCisgICAgVGhlIHR5cGUgb2YgYSB2YXJpYWJsZSBpcyByZWFsbHkgb25seSBmb3IgZG9jdW1lbnRhdGlvbi4gVW5sZXNzCisgICAgeW91IGRlZmluZSAjcHJhZ21hIHN0cm9uZ190eXBlcyBvciBydHRfY2hlY2tzLCB2YXJpYWJsZXMgY2FuCisgICAgYWN0dWFsbHkgYmUgb2YgYW55IHR5cGUgYW5kIGhhcyBubyBlZmZlY3QgYXQgYWxsIG9uIHRoZSBwcm9ncmFtLgorICAgIEhvd2V2ZXIsIGl0J3MgZXh0cmVtZWx5IGJhZCBzdHlsZSB0byBkZWNsYXJlIG9uZSB0eXBlIGJ1dCB1c2UKKyAgICBhbm90aGVyLCBzbyBwbGVhc2UgdHJ5IHRvIGF2b2lkIHRoaXMuCisKKyAgICBBIHBvaW50ZXIgdG8gYSBkZXN0cnVjdGVkIG9iamVjdCB3aWxsIGFsd2F5cyBoYXZlIHRoZSB2YWx1ZSAwLgorCisKK1NFRSBBTFNPCisgICAgYWxpc3RzKExQQyksIGFycmF5cyhMUEMpLCBtYXBwaW5ncyhMUEMpLCBjbG9zdXJlcyhMUEMpLCBzdHJ1Y3RzKExQQyksCisgICAgdW5pb25zKExQQyksIHR5cGVvZihFKSwgZ2V0X3R5cGVfaW5mbyhFKSwgaW5oZXJpdGFuY2UoTFBDKSwKKyAgICBwcmFnbWEoTFBDKSwgbW9kaWZpZXJzKExQQyksIGVzY2FwZShMUEMpCmRpZmYgLS1naXQgYS9kb2MvTFBDL3VuaW9ucyBiL2RvYy9MUEMvdW5pb25zCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjY1YTg0MWQKLS0tIC9kZXYvbnVsbAorKysgYi9kb2MvTFBDL3VuaW9ucwpAQCAtMCwwICsxLDMwIEBACitDT05DRVBUCisgICAgICAgIHVuaW9ucworCitERVNDUklQVElPTgorICAgICAgICBVbmlvbnMgdHlwZXMgYXJlIGEgZGVjbGFyYXRpb24gYXQgY29tcGlsZSB0aW1lIHRoYXQgYSB2YXJpYWJsZSwKKyAgICAgICAgZnVuY3Rpb24gcGFyYW1ldGVyIG9yIGZ1bmN0aW9uIHJldHVybiB2YWx1ZSBjYW4gYmUgb25lIG9mCisgICAgICAgIHNldmVyYWwgdHlwZXMuCisKKyAgICAgICAgRXhjZXB0IGZvciB0eXBlIGNoZWNrcyB1c2luZyAjcHJhZ21hIHJ0dF9jaGVja3MgdGhleSBoYXZlIG5vCisgICAgICAgIGltcGFjdCBhdCBydW50aW1lLiBUaGVyZSBpcyBubyBydW50aW1lIHVuaW9uIHR5cGUsIHRoZSBjb25jcmV0ZQorICAgICAgICB2YWx1ZSB0eXBlIGlzIG9uZSBvZiB0aGUgcG9zc2liaWxpdGllcyBvZiB0aGUgdW5pb24gdHlwZS4KKworICAgICAgICBVbmlvbiB0eXBlcyBoYXZlIG5vIHR5cGUgbmFtZXMgZm9yIHRoZW1zZWx2ZXMsIHRoZXkgYXJlIGRlY2xhcmVkCisgICAgICAgIGFub255bW91c2x5IHdpdGggdGhlIGRlY2xhcmF0aW9uIG9mIHRoZSB2YXJpYWJsZSwgZnVuY3Rpb24KKyAgICAgICAgcGFyYW1ldGVyIG9yIHJldHVybiB0eXBlOgorCisgICAgICAgICAgICBpbnR8c3RyaW5nIHZhcjsKKyAgICAgICAgICAgIGludHxmbG9hdCBmdW4ob2JqZWN0fGNsb3N1cmUgZik7CisKKyAgICAgICAgV2hlbiB1c2luZyB1bmlvbiB0eXBlcyBhcyBhcnJheSBtZW1iZXIgdHlwZXMgdGhleSBtdXN0IGJlCisgICAgICAgIGVuY2xvc2VkIHdpdGggPCA+OgorCisgICAgICAgICAgICA8aW50fHN0cmluZz4qIGFycjsgICAgLyogQW4gYXJyYXkgb2YgaW50cyBhbmQgc3RyaW5ncy4gKi8KKyAgICAgICAgICAgIGludCp8c3RyaW5nKiAgYXJyOyAgICAvKiBFaXRoZXIgYW4gYXJyYXkgb2YgaW50cyBvcgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFuIGFycmF5IG9mIHN0cmluZ3MuICAgICAgICAgICovCisKKyAgICAgICAgICAgIC8qIFRoZXJlIG11c3QgYmUgYSB3aGl0ZXNwYWNlIGJldHdlZW4gdHdvIGNvbnNlY3V0aXZlIDwKKyAgICAgICAgICAgICAgIHRvIGJlIG5vdCBjb25mdXNlZCB3aXRoIHRoZSA8PCBvcGVyYXRvcjogICAgICAgICAgICAqLworICAgICAgICAgICAgPCA8aW50fHN0cmluZz4qfG9iamVjdCA+KiBhcnI7CisKZGlmZiAtLWdpdCBhL2RvYy9MUEMvdmFyYXJncyBiL2RvYy9MUEMvdmFyYXJncwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5lZjIxODM3Ci0tLSAvZGV2L251bGwKKysrIGIvZG9jL0xQQy92YXJhcmdzCkBAIC0wLDAgKzEsNzUgQEAKK0NPTkNFUFQKKyAgICB2YXJhcmdzCisKK0RFU0NSSVBUSU9OCisgICAgQSBmdW5jdGlvbiB1c2VzICJ2YXJhcmdzIiwgc2hvcnQgZm9yICJ2YXJpYWJsZSBhcmd1bWVudHMiLCBpZgorICAgIGl0IGludGVudGlvbmFsbHkgbWF5IGJlIGNhbGxlZCB3aXRoIGxlc3Mgb3IgbW9yZSBhcmd1bWVudHMKKyAgICB0aGFuIGZvcm1hbGx5IHNwZWNpZmllZC4KKworICAgIFRoZSBwcm9wZXIgb3JkZXIgdG8gZGVmaW5lIGEgZnVuY3Rpb24gY2FsbCBpczoKKworICAgICAgICBbIG1vZGlmaWVyIF0gWyB2YXJhcmdzIF0gWyByZXR1cm4gdHlwZSBdIGZ1bmN0aW9uKCBhcmdzLi4uKQorCisgICAgIEFueSBvdGhlciBvcmRlciB3aWxsIHJlc3VsdCBpbiBhbiBlcnJvci4KKworCisgICAgR2l2ZW4gYSBmdW5jdGlvbiBkZWZpbml0aW9uIGxpa2UgdGhpczoKKworICAgICAgICB2b2lkIGZ1biAoc3RyaW5nIGFyZzEsIGludCBhcmcyLCBpbnQgYXJnMykKKworICAgIGZ1bigpIGhhcyB0byBiZSBjYWxsZWQgd2l0aCBleGFjdGx5IHRocmVlIHBhcmFtZXRlcnM6IG9uZQorICAgIHN0cmluZyBhbmQgdHdvIGludGVnZXJzLgorCisKKyAgICBJZiB0aGUgZnVuY3Rpb24gaXMgZGVmaW5lZCBhcworCisgICAgICAgIHZhcmFyZ3Mgdm9pZCBmdW4gKHN0cmluZyBhcmcxLCBpbnQgYXJnMiwgaW50IGFyZzMpCisKKyAgICBpdCBpcyBwb3NzaWJsZSB0byBjYWxsIHRoZSBmdW5jdGlvbiB3aXRoIGp1c3QgYXJnMSwgb3IgYXJnMQorICAgIGFuZCBhcmcyLiBUaGUgcmVtYWluaW5nIHVuc3BlY2lmaWVkIGFyZ3VtZW50cyAoYXJnMiBhbmQgYXJnMywKKyAgICByZXNwLiBhcmczKSBhcmUgaW4gdGhlc2UgY2FzZXMgYXNzdW1lZCB0byBiZSAwLgorCisKKyAgICBUbyBwYXNzIG1vcmUgYXJndW1lbnRzIHRoYW4gc3BlY2lmaWVkLCB0aGUgZnVuY3Rpb25zIGxhc3QKKyAgICBwYXJhbWV0ZXIgbXVzdCBiZSBkZWZpbmVkIGFzIGZvbGxvd2luZzoKKworICAgICAgICB2b2lkIGZ1biAoc3RyaW5nIGFyZzEsIGludCBhcmcyLCB2YXJhcmdzIGludCAqIGFyZzMpCisKKyAgICBUaGlzIGFsbG93cyBmdW4oKSB0byBiZSBjYWxsZWQgd2l0aCB0d28gb3IgbW9yZSBhcmd1bWVudHMuCisgICAgVGhlIGFyZ3VtZW50cywgZXhjZXB0IHRob3NlIGFzc2lnbmVkIHRvIHRoZSBvdGhlciBwYXJhbWV0ZXJzLAorICAgIGluIHRoaXMgY2FzZSBhcmcxIGFuZCBhcmcyLCBhbmQgY29sbGVjdGVkIGludG8gYW4gYXJyYXkgd2hpY2gKKyAgICBpcyB0aGVuIHBhc3NlZCBhcyBhcmczLiBGb3IgZXhhbXBsZQorCisgICAgICAgIGZ1bigiZm9vIiwgMSkgICAgICAgLT4gYXJnMyA9PSAoeyB9KQorICAgICAgICBmdW4oImZvbyIsIDEsIDIpICAgIC0+IGFyZzMgPT0gKHsgMiB9KQorICAgICAgICBmdW4oImZvbyIsIDEsIDIsIDMpIC0+IGFyZzMgPT0gKHsgMiwgMyB9KQorCisgICAgVGhlIHR5cGUgb2YgdGhlIHZhcmFyZ3MgYXJndW1lbnQgaGFzIHRvIGJlIGFuIGFycmF5IG9mIHRoZQorICAgIGV4cGVjdGVkIHR5cGUgKGludCosIG9iamVjdCosIHN0cmluZyosIC4uLik7IGluIHRoaXMgZXhhbXBsZSwKKyAgICBvbmx5IGludGVnZXJzIGFyZSBhbGxvd2VkLiBUbyBhY2NlcHQgYXJndW1lbnRzIG9mIGFueSBraW5kLAorICAgIGRlZmluZSB0aGUgcGFyYW1ldGVyIGFzICd2YXJhcmdzIG1peGVkJyBvciAndmFyYXJncyBtaXhlZConLgorCisgICAgVG8gJ2ZsYXR0ZW4nIHRoZSByZWNlaXZlZCBhcmd1bWVudCBhcnJheSBpbiB5b3VyIG93biBmdW5jdGlvbgorICAgIGNhbGxzLCB1c2UgdGhlIGVmdW4gYXBwbHkoKTsgZS5nLjoKKworICAgICAgICBhcHBseSgjJ2NhbGxfb3V0LCAiYmFyIiwgMSwgYXJnMykKKworICAgIG9yIHRoZSAnZmxhdHRlbiBhcmd1bWVudHMnIG9wZXJhdG9yOgorCisgICAgICAgY2FsbF9vdXQoImJhciIsIDEsIGFyZzMuLi4pCisKKyAgICBUaGUgdHdvIHZhcmFyZ3MgdmFyaWFudHMgY2FuIG9mIGNvdXJzZSBiZSBjb21iaW5lZDoKKworICAgICAgICB2YXJhcmdzIHZvaWQgZnVuIChzdHJpbmcgYXJnMSwgaW50IGFyZzIsIHZhcmFyZ3MgaW50KiBhcmczKQorCisgICAgZGVmaW5lcyBhIGZ1bmN0aW9uIHdoaWNoIG1heSBiZSBjYWxsZWQgd2l0aCBhbnkgbnVtYmVyIG9mCisgICAgYXJndW1lbnRzLgorCisKK0hJU1RPUlkKKyAgICBUaGUgcG9zc2liaWxpdHkgdG8gcGFzcyBtb3JlIGFyZ3VtZW50cyB0aGFuIGZvcm1hbGx5IHNwZWNpZmllZAorICAgIHdhcyBpbnRyb2R1Y2VkIGluIDMuMi4xQDEzMi4gQmVmb3JlLCB0aGUgZXhjZXNzIGFyZ3VtZW50cyB3ZXJlCisgICAgc2lsZW50bHkgaWdub3JlZC4KKworU0VFIEFMU08KKyAgICBwcmFnbWEoTFBDKSwgYXBwbHkoRSksIG1vZGlmaWVycyhMUEMpCmRpZmYgLS1naXQgYS9kb2MvTFBDL3doaWxlIGIvZG9jL0xQQy93aGlsZQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5hZGM0NzA4Ci0tLSAvZGV2L251bGwKKysrIGIvZG9jL0xQQy93aGlsZQpAQCAtMCwwICsxLDE1IEBACitOQU1FCisgICAgICAgIHdoaWxlCisKK1NZTlRBWAorICAgICAgICB3aGlsZSAoZXhwcikgc3RhdGVtZW50OworCitERVNDUklQVElPTgorICAgICAgICBXaGlsZSAnZXhwcicgZXZhbHVhdGVzIHRvIG5vbiAwLCBleGVjdXRlIHN0YXRlbWVudC4KKworICAgICAgICBBICdicmVhaycgaW4gdGhlICdzdGF0ZW1lbnQnIHdpbGwgdGVybWluYXRlIHRoZSBsb29wLiBBCisgICAgICAgICdjb250aW51ZScgd2lsbCBjb250aW51ZSB0aGUgZXhlY3V0aW9uIGZyb20gdGhlIGJlZ2lubmluZyBvZgorICAgICAgICB0aGUgbG9vcC4KKworU0VFIEFMU08KKyAgICAgICAgZm9yKExQQyksIGZvcmVhY2goTFBDKSwgZG8td2hpbGUoTFBDKSwgaWYoTFBDKSwgc3dpdGNoKExQQykKZGlmZiAtLWdpdCBhL2RvYy9SRUFETUUgYi9kb2MvUkVBRE1FCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjUxMjFmOWEKLS0tIC9kZXYvbnVsbAorKysgYi9kb2MvUkVBRE1FCkBAIC0wLDAgKzEsNTQgQEAKK0luIGRpZXNlbSBWZXJ6ZWljaG5pcyBiZWZpbmRldCBzaWNoIGFsbGVzLCB3YXMgZGFzIE1vcmdlbkdyYXVlbiBhbgorRG9rdW1lbnRhdGlvbiB6dSBiaWV0ZW4gaGF0LiBPYndvaGwgaGllciBzY2hvbiBzbyBlaW5pZ2VzIHp1IGZpbmRlbiBpc3QsCitpc3QgZGllIERva3VtZW50YXRpb24gbm9jaCBsYW5nZSBuaWNodCBrb21wbGV0dC4KK1p1bSBUZWlsIHdlcmRlbiBkaWUgVmVyemVpY2huaXNzZSBub2NoIHVtc3RydWt0dXJpZXJ0LiBXYXMgZ2VuYXUgd28genUKK2ZpbmRlbiBpc3QsIHN0ZWh0IHVudGVuIHNvd2llIGluIGRlbiAucmVhZG1lLURhdGVpZW4gZGVyIGpld2VpbGlnZW4KK1ZlcnplaWNobmlzc2UuCisKK0RpZSBIaWxmZXNlaXRlbiB3ZXJkZW4gcGFyYWxsZWwgaW0gQVNDSUktIHVuZCBpbSBIVE1MLUZvcm1hdCBnZWZ1ZWhydC4KK0RpZSBIVE1MLVNlaXRlbiBzaW5kIHVudGVyIGh0dHA6Ly9tZy5tdWQuZGUvaGVscC8genUgZmluZGVuLgorCitCZWkgQWVuZGVydW5nZW4gYW4gZGVuIFNlaXRlbiBhY2h0ZXQgYml0dGUgYXVmIEtvcnJla3RoZWl0LiBJbSBad2VpZmVsc2ZhbGwKK3NjaHJlaWJ0IGVpbmUgTWFpbCBhbiBlaW5lbiBha3RpdmVuIEggb2RlciBFTS4KKworRGllIFVudGVydmVyemVpY2huaXNzZSB1bmQgRGF0ZWllbiBoaWVyIGhhYmVuIGZvbGdlbmRlIEJlZGV1dHVuZ2VuOgorCisqIERva3VtZW50YXRpb24gdm9uIEJlZmVobGVuIHVuZCBUaGVtZW4gaW5uZXJoYWxiIGRlcyBTcGllbHMKKyAgKG1laHIgb2RlciB3ZW5pZ2VyIGtvbXBsZXR0IHVlYmVyYXJiZWl0ZXQpCisgICBvIGhlbHAvICAgLSBhbGxnZW1laW5lIFRoZW1lbiwgZGllIEFMTEUgYmV0cmVmZmVuCisgICBvIHBjbWQvICAgLSBkaWUgQmVmZWhsZSwgZGllIGFsbGUgU3BpZWxlciBiZWhlcnJzY2hlbgorICAgbyBzY21kLyAgIC0gU2VoZXJiZWZlaGxlIHVuZCBIaWxmZW4genVtIEhhdXNiYXUKKyAgIG8gbWNtZC8gICAtIGhpZXIgc2luZCBkaWUgTWFnaWVyYmVmZWhsZSBiZXNjaHJpZWJlbgorICAgbyB3aXovICAgIC0gYWxsZ2VtZWluZSBUaGVtZW4gZnVlciBNYWdpZXIKKyAgIG8gZy4qLyAgICAtIEhpbGZlc2VpdGVuLCBkaWUgenVyIEdpbGRlIFhZWiBnZWhvZXJlbgorICAgbyBoaWxmZS4qIC0gVWViZXJzaWNodHNzZWl0ZW4gbWl0IGRlbiBlbnRzcHJlY2hlbmRlbiBCZWZlaGxlbgorICAgbyBiYWxhbmNlLy0gVWViZXJzaWNodCB1ZWJlciBiYWxhbmNlcmVsZXZhbnRlIFRoZW1lbiB1bmQgUmVnZWxuCisKKyogVWViZXJzaWNodCB1ZWJlciBPYmpla3RlIHVuZCBGdW5rdGlvbmVuIE11ZExpYiAobmllIHZvbGxzdGFlbmRpZykKKyAgIG8gZWZ1bi8gICAtIEZ1bmt0aW9uZW4sIGRpZSBkZXIgR2FtZURyaXZlciB6dXIgVmVyZnVlZ3VuZyBzdGVsbHQKKyAgIG8gbGZ1bi8gICAtIEZ1bmt0aW9uZW4sIGRpZSBkaWUgT2JqZWt0ZSBkZXIgTXVkTGliIHp1ciBWZXJmdWVndW5nIHN0ZWxsZW4KKyAgIG8gbWFzdGVyLyAtIEZ1bmt0aW9uZW4sIGRpZSBkYXMgTWFzdGVyb2JqZWt0IHp1ciBWZXJmdWVndW5nIHN0ZWxsdAorCisgICBvIHN0ZC8gICAgLSBEaWUgT2JqZWt0ZSBkZXMgQmFzaXMtTXVkTGliCisgICBvIG9iai8gICAgLSBFaW5pZ2UgaGlsZnJlaWNoZSBadXNhdHpvYmpla3RlCisKKyAgIG8gcHJvcHMvICAtIERpZSBQcm9wZXJ0aWVzCisgICBvIHByb3BzL3Byb3BlcnRpZXMuaAorCSAgICAgLSBLdXJ6dWViZXJzaWNodCBkZXIgUHJvcGVydGllcyAoRWluemVsc2VpdGVuIHNpbmQgYWt0dWVsbGVyKQorCisqIFNvbnN0aWdlcworICAgbyAzLjAvICAgICAgICAgLSBlaW5pZ2UgU0VIUiBhbHRlIEhpbGZlc2VpdGVuIHVlYmVyIExQbXVkcyBpbSBBbGxnZW1laW5lbgorICAgbyBiZWlzcGllbGUvICAgLSBCZWlzcGllbG9iamVrdGUgdW5kIC1yYWV1bWUsIG11c3MgZHJpbmdlbmQgZ2VmdWVsbHQgd2VyZGVuCisgICBvIGNvbmNlcHRzLyAgICAtIEdydW5ka29uemVwdGUgdm9uIExQQworICAgbyBkcml2ZXIvICAgICAgLSBCZWZlaGxlIHVuZCBLb21tYW5kb3plaWxlIGRlcyBHYW1lRHJpdmVycworICAgbyBlZC8gICAgICAgICAgLSBlaW4gcGFhciBIaWxmZXNlaXRlbiBmdWVyIGRlbiAnZWQnaXRvcgorICAgbyBHcnVuZGxhZ2VuLyAgLSBlaW4gcGFhciBncnVuZGxlZ2VuZGUgSW5mb3JtYXRpb25lbjsgbGFuZGV0IHZpZWxsZWljaHQKKyAgICAgICAgICAgICAgICAgICAgbWFsIGltIEt1cnMgKHMudS4pCisgICBvIEtVUlMvICAgICAgICAtIEhpZXIgc29sbCBtYWwgZWluIE1HLXNwZXppZmlzY2hlciBMUEMtS3VycyBoaW4uIERlciBLdXJzCisgICAgICAgICAgICAgICAgICAgIGluIGRlbiBVbnRlcnZlcnplaWNobmlzc2VuIExQQy1LVVJTLyB1bmQgTFBDLUtVUlMyLyBpc3QKKyAgICAgICAgICAgICAgICAgICAgYSkgaW4gZW5nbGlzY2ggdW5kIGIpIG5pY2h0IHVuYmVkaW5ndCBmdWVyIGRhcworICAgICAgICAgICAgICAgICAgICBQcm9ncmFtbWllcmVuIGltIE1HIGdlZWlnbmV0LiBGdWVycyBMZXJuZW4gdm9uIExQQyBzb2xsdGUKKyAgICAgICAgICAgICAgICAgICAgZXIgYWJlciBhdXNyZWljaGVuLgorICAgbyBMUEMvICAgICAgICAgLSBEYXRlbnR5cGVuIHVuZCBTcHJhY2hlbGVtZW50ZSB2b24gTFBDCisgICBvIG1pc2MvICAgICAgICAtIGFsbGVzLCB3YXMgc29uc3QgbmlyZ2VuZHdvIHBhc3N0CisKZGlmZiAtLWdpdCBhL2RvYy9hYm91dC1lZnVuK2xmdW4tZG9jcyBiL2RvYy9hYm91dC1lZnVuK2xmdW4tZG9jcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi40NzNlMzg0Ci0tLSAvZGV2L251bGwKKysrIGIvZG9jL2Fib3V0LWVmdW4rbGZ1bi1kb2NzCkBAIC0wLDAgKzEsNzIgQEAKK05BTUUKKwlhYm91dC1lZnVuK2xmdW4tZG9jcworCitBVVRIT1IKKwlUaGVzZSBtYW4gcGFnZXMgd2VyZSBjb2xsZWN0ZWQgZnJvbSB0aGUgb3JpZ2luYWwgMi40LjUgZG9jcywKKwlmcm9tIHRoZSBpbnN0YWxsZWQgZG9jcyBvZiBOaWdodEZhbGwsIFR1Yk11ZCBhbmQgTW9yZ2VuR3JhdWVuLgorCisJVGhleSB3ZXJlIGNvbGxlY3RlZCBjb3JyZWN0ZWQgYW5kIGNvbXBsZXRlZCBQZXBlbEBOaWdodEZhbGwsCisJd2l0aCBhc3Npc3RhbmNlIGFuZCBzdXBwb3J0IGJ5IHRoZSBMUEMgd2l6YXJkcyBvZiBOaWdodEZhbGwsCisJVHViTXVkIGFuZCBNb3JnZW5HcmF1ZW4sIG5hbWVseSBIeXAsIE1hY2JldGggYW5kIE1hdGVlc2UuIEFsc28KKwl0byBtZW50aW9uIGFyZSBCdW1ibGViZWUsIEJvaW5nLCBEZWVwdGhvdWdodCwgRGVtb3MsIEhhdGUgYW5kCisJSm9mLgorCitERVNDUklQVElPTgorCVRoZSBtYW4gcGFnZXMgZ2VuZXJhbGx5IGFkaGVyZSB0byB0aGUgZm9sbG93aW5nIGZvcm1hdCwgd2hpY2gKKwl3YXMgaW5zcGlyZWQgYnkgdGhlIFVuaXggbWFuIHBhZ2VzLgorCisJPG1hbnBhZ2U+IDo6PSA8c2VjdGlvbj4rCisKKwlUaGVyZSBhcmUgb25lIG9yIG1vcmUgc2VjdGlvbnMgaW4gYSBtYW4gcGFnZS4KKworCTxzZWN0aW9uPiA6Oj0gPHNlY3Rpb24tbmFtZT48bmV3bGluZT48c2VjdGlvbi10ZXh0PjxuZXdsaW5lPgorCisJVGhlIHNlY3Rpb24gbmFtZXMgYXJlIGFsd2F5cyBhdCB0aGUgYmVnaW5uaW5nIG9mIGEgbGluZSwgYW5kCisJaW4gYWxsIGNhcGl0YWwgbGV0dGVycyAoZGViYXRhYmxlIHVnbHluZXNzKS4KKworCTxzZWN0aW9uLW5hbWU+IDo6PSAgICdOQU1FJyB8ICdDT05DRVBUJyB8ICdTWU5PUFNJUycKKwkJCSAgIHwgJ0xBU1QgVVBEQVRFRCcKKwkJCSAgIHwgJ0RFU0NSSVBUSU9OJyB8ICdBVVRIT1InIHwgJ0JVR1MnCisJCQkgICB8ICdDQVZFQVRTJyB8ICdXQVJOSU5HJyB8ICdOT1RFJyB8ICdOT1RFUycKKwkJCSAgIHwgJ0VYQU1QTEUnIHwgJ0VYQU1QTEVTJworCQkJICAgfCAnU0VFIEFMU08nCisKKwlJZiBhIE5BTUUgc2VjdGlvbiBvY2N1cnMsIGl0IHNob3VsZCBnaXZlIHRoZSBuYW1lIG9mIHRoZSBtYW4KKwlwYWdlLgorCUlmIGEgU1lOT1BTSVMgc2VjdGlvbiBvY2N1cnMsIHRoZSBuYW1lIG9mIHRoZSBtYW4gcGFnZSBjYW5iIGJlCisJZGVyaXZlZCBmcm9tIHRoZSBmdW5jdGlvbiBuYW1lLCB0aGF0IGFwcGVhcnMgaW4gdGhlIGxpbmUgYWZ0ZXIKKwlTWU5PUFNJUywgd2hpY2ggbG9va3MgYXMgZm9sbG93czoKKworCTxyZXR1cm50eXBlPjxzcGFjZT5bJyonXTxmdW5jdGlvbi1uYW1lPicoJzxwYXJhbWV0ZXItcHJvdG90eXBlcz4KKworCVNFRSBBTFNPIGlzIGZvbGxvd2VkIGJ5IG9uZSBvciBtb3JlIGxpbmVzIHRoYXQgY29udGFpbgorCWNyb3NzcmVmZXJlbmNlcyBvZiB0aGUgZm9ybQorCisJPGNyb3NzcmVmZXJlbmNlcz4gOjo9CisJCTxjcm9zc3JlZj5bJywnPHdoaXRlLXNwYWNlPjxjcm9zc3JlZj5dKjx3aGl0ZS1zcGFjZT48RU9GPgorCTxjcm9zc3JlZj4gOjo9IDxtYW4tcGFnZS1uYW1lPicoJzxjaGFwdGVyLWFiYnJldj4nKScKKworCVRoZSBuYW1lcyBvZiB0aGUgcmVmZXJlbmNlZCBtYW4gcGFnZXMgYXJlIGZvbGxvd2VkIGluIGJyYWNrZXRzCisJYnkgYW4gYWJicmV2ZWlhdGlvbiBmb3IgdGhlIGNoYXBlciAoaS5lLiBkaXJlY3RvcnkpIHRoZSBtYW4KKwlwYWdlIGlzIGluLiBUaGUgYWJicmV2cyBhcmUKKwlFIGZvciBlZnVuLwl0aGUgYGBzeXN0ZW0gY2FsbHMnJyBvZiBMUEMKKwlMIGZvciBsZnVuLwltZW1iZXIgZnVuY3Rpb25zIHRoYXQgdGhlIGRyaXZlciBhcHBsaWVzIHRvIG9iamVjdHMKKwlDIGZvciBjb25jZXB0cy8JZ2VuZXJhbCBjb25jZXB0cyBvZiBMUE1VRCBhbmQgTFBDCisJTFBDIGZvciBMUEMvCWFib3V0IHBhcnRzIG9mIHRoZSBMUEMgbGFuZ3VhZ2UKKwlNIGZvciBtYXN0ZXIvCWxmdW5zIHRoYXQgYXJlIGFwcGxpZWQgdG8gdGhlIG1hc3RlciBvYmplY3Qgb25seQorCUQgZm9yIGRyaXZlci8Jc29tZSBpbmZvIGFib3V0IGludGVybmFsIG9wZXJhdGlvbiBvZiB0aGUgZHJpdmVyCisKKwlJZiB5b3Ugd2FudCB0byBwcm9jZXNzIHRoZXNlIG1hbiBwYWdlcyBieSBzb21lIGNvbnZlcnRlcgorCXByb2dyYW0sIHlvdSBjYW4gdXNlIHRoZXNlIHRvIG1hcCB0aGUgY2hhcHRlciBuYW1lcyB0byBmaWxlCisJbmFtZXMgb3Igd2hhdGV2ZXIuCisKK0JVR1MKKwlUaGVyZSBhcmUgbm8gbWFuIHBhZ2VzIHN1cHBvcnRlZCBieSBBbXlsYWFyIGhpbXNlbGYuCisJSSBob3BlIG9uZSBkYXkgSSBjYW4gY29udmluY2UgaGltIHRvIGF0IGxlYXN0IHB1dCB0aGVzZSBkb2NzCisJaW50byB0aGUgZHJpdmVyIGRpc3RyaWJ1dGlvbi4KKworCU1lYW53aGlsZSwgcGxlYXNlIHJlcG9ydCBhbnkgY29ycmVjdGlvbnMgLyBzdWdnZXN0aW9ucyAvCisJY29tcGxldGlvbnMgdG8gPHBlcGVsQGlici5jcy50dS1icy5kZT4KKworU0VFIEFMU08KKwllZnVuKEUpLCBsZnVuKEwpLCBjb25jZXB0cyhDKSwgbHBjKExQQyksIG1hc3RlcihNKSwgZHJpdmVyKEQpCmRpZmYgLS1naXQgYS9kb2MvYXBwbGllZC9fX0lOSVQgYi9kb2MvYXBwbGllZC9fX0lOSVQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZGM1NmY2YwotLS0gL2Rldi9udWxsCisrKyBiL2RvYy9hcHBsaWVkL19fSU5JVApAQCAtMCwwICsxLDEyIEBACitTWU5PUFNJUworICAgICAgICBfX0lOSVQKKworREVTQ1JJUFRJT04KKyAgICAgICAgVGhpcyBmdW5jdGlvbiBpcyBjb25zdHJ1Y3RlZCBhdXRvbWFnaWNhbGx5IGJ5IHRoZSBwYXJzZXIgYXQKKyAgICAgICAgY29tcGlsZXIsIGlmIHRoZSBwYXJzZXIgd2FzIGNvbXBpbGVkIHdpdGggI2RlZmluZQorICAgICAgICBJTklUSUFMSVNBVElPTl9fSU5JVC4gVGhpcyBmdW5jdGlvbiBpcyBub3QgaW50ZW5kZWQgdG8gYmUKKyAgICAgICAgZGVmaW5lZCBieSB0aGUgbHBjIG9iamVjdHMsIGFuZCBuZXZlciB0byBiZSBjYWxsZWQgZnJvbSBscGMKKyAgICAgICAgb2JqZWN0cy4gVGhpcyBtYW4gcGFnZSBpcyBoZXJlIGp1c3QgZm9yIGNvbXBsZXRlbmVzcy4KKworU0VFIEFMU08KKyAgICAgICAgaW5pdGlhbGlzYXRpb24oTFBDKQpkaWZmIC0tZ2l0IGEvZG9jL2FwcGxpZWQvYWRkX3dlaWdodCBiL2RvYy9hcHBsaWVkL2FkZF93ZWlnaHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNWY4OTEyZgotLS0gL2Rldi9udWxsCisrKyBiL2RvYy9hcHBsaWVkL2FkZF93ZWlnaHQKQEAgLTAsMCArMSwyNCBAQAorREVQUkVDQVRFRAorU1lOT1BTSVMKKyAgICAgICAgaW50IGFkZF93ZWlnaHQoaW50IHcpCisKK0RFU0NSSVBUSU9OCisgICAgICAgIEluIGNvbXBhdCBtb2RlLCB0aGlzIGZ1bmN0aW9uIGlzIHVzZWQgYnkgdGhlIGVmdW4gdHJhbnNmZXIoKS4KKworICAgICAgICBBbiBvYmplY3QgdGhhdCBjYW4gY29udGFpbiBvdGhlciBvYmplY3RzIGFuZCBpcyBub3QgYSByb29tCisgICAgICAgIG11c3QgZGVmaW5lIHRoaXMgZnVuY3Rpb24uIEl0IGlzIGNhbGxlZCB3aXRoIHRoZSBleHRyYSB3ZWlnaHQKKyAgICAgICAgb2YgdGhlIG9iamVjdCB0aGF0IGlzIG1vdmVkIGludG8gaXQuIElmIHRoaXMgaXMgb2ssIHRoZW4gaXQKKyAgICAgICAgaGFzIHRvIGluY3JlbWVudCB0aGUgbG9jYWwgd2VpZ2h0IGNvdW50LCBhbmQgcmV0dXJuIHRydWUuCisgICAgICAgIE90aGVyd2lzZSwgcmV0dXJuIGZhbHNlLCBhbmQgdGhlIG5ldyBvYmplY3QgY2FuIG5vdCBiZSBlbnRlcmVkCisgICAgICAgIGludG8gdGhpcyBvYmplY3QuCisKKyAgICAgICAgVGhlIGZ1bmN0aW9uIGlzIGFsc28gY2FsbGVkIHdpdGggdGhlIG5lZ2F0aXZlIHdlaWdodCBpbiB0aGUKKyAgICAgICAgb2JqZWN0IHRoYXQgdGhlIG1vdmluZyBsZWF2ZXMuCisKKyAgICAgICAgTm90ZSB0aGF0IG5vIHNldF93ZWlnaHQoKSBpcyByZXF1aXJlZCBieSB0aGUgcGFyc2VyLgorCitISVNUT1JZCisgICAgICAgIERlcHJlY2F0ZWQgaW4gTERNdWQgMy4zIGFzIHRyYW5zZmVyKCkgaGFzIGJlZW4gZGVwcmVjYXRlZC4KKworU0VFIEFMU08KKyAgICAgICAgdHJhbnNmZXIoRSksIHF1ZXJ5X3dlaWdodChBKSwgcHJldmVudF9pbnNlcnQoQSkKZGlmZiAtLWdpdCBhL2RvYy9hcHBsaWVkL2FwcGxpZWQgYi9kb2MvYXBwbGllZC9hcHBsaWVkCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmI3ZjYzYjkKLS0tIC9kZXYvbnVsbAorKysgYi9kb2MvYXBwbGllZC9hcHBsaWVkCkBAIC0wLDAgKzEsMTIgQEAKK05BTUUKKyAgICAgICAgYXBwbGllZAorCitERVNDUklQVElPTgorICAgICAgICBUaGlzIGRpcmVjdG9yeSBjb250YWlucyBkZXNjcmlwdGlvbnMgZm9yIHRoZSBsZnVucyB1c2VkIGJ5CisgICAgICAgIEFteWxhYXIncyB2ZXJzaW9uIG9mIHRoZSBMUEMgcGFyc2VyLgorCisgICAgICAgIFRoZXNlIGFyZSBmdW5jdGlvbnMgdGhhdCBhcmUgYXBwbGllZCBieSB0aGUgcGFyc2VyIHRvIHRoZSBMUEMKKyAgICAgICAgb2JqZWN0cyBvbiB2YXJpb3VzIG9jY2FzaW9ucy4KKworU0VFIEFMU08KKyAgICAgICAgZWZ1bihFKSwgbWFzdGVyKE0pLCBjb25jZXB0cyhDKSwgbHBjKExQQyksIGRyaXZlcihEKQpkaWZmIC0tZ2l0IGEvZG9jL2FwcGxpZWQvY2FuX3B1dF9hbmRfZ2V0IGIvZG9jL2FwcGxpZWQvY2FuX3B1dF9hbmRfZ2V0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjU0Nzk4MzIKLS0tIC9kZXYvbnVsbAorKysgYi9kb2MvYXBwbGllZC9jYW5fcHV0X2FuZF9nZXQKQEAgLTAsMCArMSwyMCBAQAorREVQUkVDQVRFRAorU1lOT1BTSVMKKyAgICAgICAgaW50IGNhbl9wdXRfYW5kX2dldCgpCisKK0RFU0NSSVBUSU9OCisgICAgICAgIEluIGNvbXBhdCBtb2RlLCB0aGlzIGZ1bmN0aW9uIGlzIHVzZWQgYnkgdGhlIGVmdW4gdHJhbnNmZXIoKS4KKworICAgICAgICBEZWZpbmUgdGhpcyBmdW5jdGlvbiBpbiBvYmplY3RzIHRoYXQgYXJlIG5laXRoZXIgbGl2aW5nIG5vcgorICAgICAgICByb29tcyBpZiB5b3Ugd2FudCB0byBtYWtlIGl0IHBvc3NpYmxlIHRvIHB1dCBzb21ldGhpbmcgaW50bworICAgICAgICBjdXJyZW50IG9iamVjdC4KKworICAgICAgICBSZXR1cm4gdHJ1ZSBpZiBvaywgb3RoZXJ3aXNlIDAuIFRoYXQgbWVhbnMgdGhhdCBkZWZhdWx0IGlzCisgICAgICAgIHRoYXQgaXQgaXMgbm90IHBvc3NpYmxlIHRvIHB1dCBzb21ldGhpbmcgaW50byBhbiBvYmplY3QuCisKK0hJU1RPUlkKKyAgICAgICAgRGVwcmVjYXRlZCBpbiBMRE11ZCAzLjMgYXMgdHJhbnNmZXIoKSBoYXMgYmVlbiBkZXByZWNhdGVkLgorCitTRUUgQUxTTworICAgICAgICB0cmFuc2ZlcihFKSwgcHJldmVudF9pbnNlcnQoQSkKKwpkaWZmIC0tZ2l0IGEvZG9jL2FwcGxpZWQvY2F0Y2hfbXNnIGIvZG9jL2FwcGxpZWQvY2F0Y2hfbXNnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmQyNDRhZjQKLS0tIC9kZXYvbnVsbAorKysgYi9kb2MvYXBwbGllZC9jYXRjaF9tc2cKQEAgLTAsMCArMSwxOSBAQAorU1lOT1BTSVMKKyAgICAgICAgdm9pZCBjYXRjaF9tc2cobWl4ZWQgKnxzdHJ1Y3R8bWFwcGluZ3xvYmplY3QgbXNnLCBvYmplY3Qgb2JqKQorCitERVNDUklQVElPTgorICAgICAgICBXaGVuIHNheSgpLCB0ZWxsX3Jvb20oKSBvciB0ZWxsX29iamVjdCgpIGFyZSB1c2VkIHdpdGggYW4KKyAgICAgICAgbm9uLXN0cmluZyBhcyBtZXNzYWdlLCB0aGUgdmFsdWUgd2lsbCBiZSBwYXNzZWQgdG8gY2F0Y2hfbXNnKCkKKyAgICAgICAgaW4gYWxsIGxpdmluZyBvYmplY3RzIHRoYXQgY2FuIGhlYXIgaXQsIGluc3RlYWQgb2Ygd3JpdGluZyB0bworICAgICAgICB0aGUgdXNlciByZXNwLiAgc2VuZGluZyB0byBjYXRjaF90ZWxsKCkuIFRoaXMgY2FuIGJlIHVzZWQgdG8KKyAgICAgICAgaW1wbGVtZW50IGNvbW11bmljYXRpb24gcHJvdG9jb2xzIGJldHdlZW4gbGl2aW5ncy4gVGhlIHNlY29uZAorICAgICAgICBhcmd1bWVudCBkZW5vdGVzIHRoZSBvYmplY3QgdGhhdCBoYXMgc2VudCB0aGUgbWVzc2FnZS4KKworSElTVE9SWQorICAgICAgICBMRE11ZCAzLjIuMTEgYWRkZWQgdGVsbF9vYmplY3QoKSB0byB0aGUgZWZ1bnMgY2FsbGluZyB0aGlzCisgICAgICAgIGxmdW4gZm9yIHN5bW1ldHJ5IHJlYXNvbnMuCisgICAgICAgIExETXVkIDMuMy42ODYgYWRkZWQgdGhlIHVzZSBvZiBhIG1hcHBpbmcvc3RydWN0L29iamVjdCBhcyBtZXNzYWdlCisgICAgICAgIHZhbHVlLgorCitTRUUgQUxTTworICAgICAgICBzYXkoRSksIHRlbGxfcm9vbShFKSwgY2F0Y2hfdGVsbChBKQpkaWZmIC0tZ2l0IGEvZG9jL2FwcGxpZWQvY2F0Y2hfdGVsbCBiL2RvYy9hcHBsaWVkL2NhdGNoX3RlbGwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOTQyYTgxYQotLS0gL2Rldi9udWxsCisrKyBiL2RvYy9hcHBsaWVkL2NhdGNoX3RlbGwKQEAgLTAsMCArMSwyMiBAQAorU1lOT1BTSVMKKyAgICAgICAgdm9pZCBjYXRjaF90ZWxsKHN0cmluZykKKworREVTQ1JJUFRJT04KKyAgICAgICAgV2hlbiBhIG1lc3NhZ2UgaXMgc2VudCB0byBhbiBub24taW50ZXJhY3RpdmUgb2JqZWN0LCB2aWEgc2F5KCksCisgICAgICAgIHRlbGxfb2JqZWN0LCB0ZWxsX3Jvb20oKSBvciB3cml0ZSgpLCBpdCB3aWxsIGdldCB0byB0aGUgZnVuY3Rpb24KKyAgICAgICAgY2F0Y2hfdGVsbChzdHJpbmcpLiBUaGUgaWRlYSBpcyB0byBlbmFibGUgY29tbXVuaWNhdGlvbnMgYmV0d2VlbgorICAgICAgICBOUENzIGFuZCBmcm9tIGEgdXNlciB0byBhbiBOUEMuCisKKyAgICAgICAgTWVzc2FnZXMgc2VudCB0byBhbiBpbnRlcmFjdGl2ZSBvYmplY3QgYXJlIGFsc28gcGFzc2VkIHRvIHRoYXQKKyAgICAgICAgb2JqZWN0J3MgY2F0Y2hfdGVsbCgpIGxmdW4sIF9pZiBpdCBoYXMgb25lXy4gSWYgdGhlIHJlY2VpdmVyCisgICAgICAgIChvciBvbmUgb2YgaXRzIHNoYWRvd3MpIGRvZXNuJ3QgaGF2ZSB0aGF0IGxmdW4sIHRoZSB0ZXh0IGlzIHNlbnQKKyAgICAgICAgdG8gdGhlIHNvY2tldCBkaXJlY3RseS4gT25seSBtZXNzYWdlcyBzZW50IGJ5IGFuIGludGVyYWN0aXZlCisgICAgICAgIG9iamVjdCB0byBpdHNlbGYgaW5zaWRlIGEgY2F0Y2hfdGVsbCBhbHdheXMgd3JpdHRlbiB0byB0aGUgc29ja2V0CisgICAgICAgIGltbWVkaWF0ZWx5LgorCisgICAgICAgIFRoaXMgYWxsb3dzIHRvIGZpbHRlciBhbmQgcHJvY2VzcyB0ZXh0IGJlZm9yZSBpdCBpcyB3cml0dGVuCisgICAgICAgIHRvIGEgcGxheWVyLgorCitTRUUgQUxTTworICAgICAgICBlbmFibGVfY29tbWFuZHMoRSksIHNheShFKSwgdGVsbF9vYmplY3QoRSksIHRlbGxfcm9vbShFKSwKKyAgICAgICAgd3JpdGUoRSksIHNub29wKEUpLCBjYXRjaF9tc2coQSkKZGlmZiAtLWdpdCBhL2RvYy9hcHBsaWVkL2NsZWFuX3VwIGIvZG9jL2FwcGxpZWQvY2xlYW5fdXAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNDdkZmE3MwotLS0gL2Rldi9udWxsCisrKyBiL2RvYy9hcHBsaWVkL2NsZWFuX3VwCkBAIC0wLDAgKzEsNTEgQEAKK1NZTk9QU0lTCisgICAgICAgIGludCA8bGZ1bj4gKGludCByZWZjb3VudCkKKyAgICAgICAgaW50IDxjbG9zdXJlPihpbnQgcmVmLCBvYmplY3Qgb2IpCisKK0RFU0NSSVBUSU9OCisgICAgICAgIFRoZSBob29rIEhfQ0xFQU5fVVAgZGVmaW5lcyBhIGxmdW4gb3IgYSBjbG9zdXJlIHVzZWQgdG8gY2xlYW4KKyAgICAgICAgdXAgYW4gb2JqZWN0LiBJbiBvbGRlciBkcml2ZXJzIHRoaXMgd2FzIGhhcmR3aXJlZCB0byB0aGUgbGZ1bgorICAgICAgICBjbGVhbl91cCgpLgorCisgICAgICAgIFRoZSBmdW5jdGlvbiBpcyBhcHBsaWVkIGJ5IHRoZSBkcml2ZXIgd2hlbiBhbiBvYmplY3QgaGFzbid0IGJlZW4KKyAgICAgICAgdXNlZCBmb3IgYSBsb25nIHRpbWUsIHRvIGdpdmUgaXQgYSBwb3NzaWJpbGl0eSB0bworICAgICAgICBzZWxmLWRlc3RydWN0LiBUaGUgcmVmY291bnQgPHJlZj4gcGFzc2VkIGFzIGFyZ3VtZW50IHdpbGwgYmUgMCBmb3IKKyAgICAgICAgY2xvbmUgb2JqZWN0cywgMSBmb3IgYSBzaW1wbGUgbG9hZGVkIG9iamVjdCwgYW5kIGdyZWF0ZXIgd2hlbgorICAgICAgICB0aGUgb2JqZWN0IGlzIGNsb25lZCBvciBpbmhlcml0ZWQgYnkgc29tZSBleGlzdGluZyBvYmplY3QuICBJdAorICAgICAgICBpcyByZWNvbW1lbmRlZCBub3QgdG8gc2VsZl9kZXN0cnVjdCB0aGUgb2JqZWN0IHdoZW4gdGhlCisgICAgICAgIHJlZmVyZW5jZSBjb3VudCBpcyBncmVhdGVyIHRoYW4gb25lLgorCisgICAgICAgIEJ5IGNvbnZlbnRpb24sIGEgcmVmY291bnQgPCAwIGlzIHVzZWQgaWYgc29tZSBvdGhlciBvYmplY3QKKyAgICAgICAgYXNrcyB0aGUgY2FsbGVkIG9iamVjdCB0byBjbGVhbl91cC4KKworICAgICAgICBJZiB0aGUgZnVuY3Rpb24gaXMgYSBjbG9zdXJlLCB0aGUgc2Vjb25kIGFyZ3VtZW50IDxvYj4gaXMgdGhlCisgICAgICAgIG9iamVjdCB0byBjbGVhbiB1cC4KKworICAgICAgICBJZiB0aGUgaG9vayBzcGVjaWZpZXMgYSBub24tZXhpc3RpbmcgbGZ1biwgb3IgaWYgdGhlIGNhbGwKKyAgICAgICAgcmV0dXJucyAwLCBubyBmdXJ0aGVyIGF0dGVtcHQgdG8gY2xlYW4gdXAgdGhpcyBvYmplY3Qgd2lsbCBiZSBkb25lLgorCisgICAgICAgIFJldHVybmluZyBhIG5vbi16ZXJvIHZhbHVlIGlzIG9ubHkgcmVjb21tZW5kZWQgd2hlbiB0aGUgcmVhc29uCisgICAgICAgIHdoeSB0aGUgb2JqZWN0IGNhbid0IHNlbGYtZGVzdHJ1Y3QgaXMgbGlrZWx5IHRvIHZhbmlzaCB3aXRob3V0CisgICAgICAgIHRoZSBvYmplY3QgYmVpbmcgdG91Y2hlZCwgdGhhdCBpcywgd2hlbiBubyBsb2NhbCBmdW5jdGlvbiBpcworICAgICAgICBjYWxsZWQgaW4gaXQsIChhbmQgaW4gY29tcGF0IG1vZGUgYWxzbyB3aGVuIHRoZSBvYmplY3QgaXMgbm90CisgICAgICAgIGJlaW5nIG1vdmVkIGFyb3VuZCkuCisKKyAgICAgICAgQSB0eXBpY2FsIG11ZCBjb25maWd1cmF0aW9uIGRlZmluZXMgdGhlIHRpbWUgdG8gd2FpdCBmb3IKKyAgICAgICAgY2xlYW5fdXAoKSBzbyBsb25nIHRoYXQgeW91IGNhbiBhc3NlcnQgcmVzZXQoKSBoYXMgYmVlbgorICAgICAgICBjYWxsZWQgc2luY2UgdGhlIG9iamVjdCBoYXMgYmVlbiB0b3VjaGVkIGxhc3QgdGltZS4KKworRVhBTVBMRVMKKyAgICAgICAgQSBjbG9uZSBvZiAvc3RkL2RyaW5rIGRlZmluZXMgY2xlYW5fdXAoKSB0byBzZWxmLWRlc3RydWN0IGlmCisgICAgICAgIGl0IGlzIGVtcHR5LCBub3QgY2FycmllZCBhIGxpdmluZyBiZWluZyBhbmQgbm90IHRvdWNoZWQgZm9yCisgICAgICAgIGEgbG9uZyB0aW1lLgorCisgICAgICAgIEEgcm9vbSB0aGF0IGluaGVyaXRzIC9zdGQvcm9vbSBkZWZpbmVzIGNsZWFuX3VwKCkgdG8KKyAgICAgICAgc2VsZi1kZXN0cnVjdCBpZiBpdCBpcyBuZWl0aGVyIGluaGVyaXRlZCBub3IgdXNlZCBhcyBhCisgICAgICAgIGJsdWVwcmludCwgaXMgZW1wdHkgYW5kIHdhcyBub3QgZW50ZXJlZCBmb3IgYSBsb25nIHRpbWUuCisKK0hJU1RPUlkKKyAgICAgICAgQmVmb3JlIDMuMi4xLCB0aGUgZnVuY3Rpb24gd2FzIGhhcmR3aXJlZCB0byB0aGUgbGZ1biBjbGVhbl91cCgpLgorCitTRUUgQUxTTworICAgICAgICByZXNldChBKSwgaGVhcnRfYmVhdChBKSwgY2FsbF9vdXQoRSksIGRlc3RydWN0KEUpLCByZW1vdmUoQSksCisgICAgICAgIGhvb2tzKEMpCmRpZmYgLS1naXQgYS9kb2MvYXBwbGllZC9jcmVhdGUgYi9kb2MvYXBwbGllZC9jcmVhdGUKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMTA1NmUxMwotLS0gL2Rldi9udWxsCisrKyBiL2RvYy9hcHBsaWVkL2NyZWF0ZQpAQCAtMCwwICsxLDI5IEBACitTWU5PUFNJUworICAgICAgICB2b2lkIGNyZWF0ZSgpCisKK0RFU0NSSVBUSU9OCisgICAgICAgIFRoZSBIX0NSRUFURV9TVVBFUi9fT0IvX0NMT05FIGhvb2tzIGRlZmluZSB0aGUgZnVuY3Rpb24gb3IgY2xvc3VyZQorICAgICAgICB0byBiZSBjYWxsZWQgd2hlbiB0aGUgZHJpdmVyIGNyZWF0ZXMgYSBuZXcgb2JqZWN0LiBJbiBvbGRlcgorICAgICAgICBkcml2ZXJzIHRoaXMgd2FzIGhhcmR3aXJlZCB0byB0aGUgbGZ1biBjcmVhdGUoKSwgYW5kIGEgbG90IG9mCisgICAgICAgIGhvb2sgaW1wbGVtZW50YXRpb25zIHN0aWxsIGZvbGxvdyB0aGlzIHRyYWRpdGlvbi4KKworICAgICAgICBUaGlzIGZ1bmN0aW9uIHdpbGwgYmUgY2FsbGVkIG9ubHkgb25jZSBvbiBjcmVhdGlvbiBvZiB0aGUKKyAgICAgICAgb2JqZWN0ICh0aGlzIGlzIHdoZW4gdGhlIG9iamVjdCB3aWxsIGJlIGxvYWRlZCBvciBjbG9uZWQpLgorICAgICAgICBJbnNpZGUgdGhpcyBmdW5jdGlvbiBhbGwgbWFqb3IgaW5pdGlhbGl6YXRpb24gY2FuIGJlIGRvbmUuIFRoZQorICAgICAgICBjdXJyZW50IHVzZXIgYW5kIHRoZSBwcmV2aW91cyBvYmplY3QgYXJlIGRlZmluZWQgYnV0IHRoZQorICAgICAgICBvYmplY3QgaGFzIG5vIGVudmlyb25tZW50LgorCitFWEFNUExFCisgICAgICAgIG9iamVjdCBjbG9uZXI7CisgICAgICAgIHZvaWQgY3JlYXRlKCkgeworICAgICAgICAgICBjbG9uZXI9dGhpc19wbGF5ZXIoKTsKKyAgICAgICAgfQorCisgICAgICAgIEluaXRpYWxpemUgdGhlIGdsb2JhbCB2YXJpYWJsZSB0byBob2xkIHRoZSBvbmUgd2hvCisgICAgICAgIGNyZWF0ZWQvY2xvbmVkIHRoZSBvYmplY3QuCisKKyAgICAgICAgRm9yIDMuMi4xLCB0aGUgbXVkbGliIG1heSBiZSBwcm9ncmFtbWVkIHRvIGNhbGwgb3RoZXIgbGZ1bnMKKyAgICAgICAgdGhhbiBjcmVhdGUoKSBvbiBhbiBvYmplY3RzIGNyZWF0aW9uLgorCitTRUUgQUxTTworICAgICAgICByZXNldChBKSwgaW5pdChBKSwgX19JTklUKEEpLCBpbml0aWFsaXNhdGlvbihMUEMpLCBob29rcyhDKSwgbmF0aXZlKEMpCmRpZmYgLS1naXQgYS9kb2MvYXBwbGllZC9kcm9wIGIvZG9jL2FwcGxpZWQvZHJvcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4xNGYyYmIxCi0tLSAvZGV2L251bGwKKysrIGIvZG9jL2FwcGxpZWQvZHJvcApAQCAtMCwwICsxLDI1IEBACitERVBSRUNBVEVECitTWU5PUFNJUworICAgICAgICBpbnQgZHJvcCh2b2lkKQorICAgICAgICBpbnQgZHJvcChpbnQgc2lsZW50bHkpCisKK0RFU0NSSVBUSU9OCisgICAgICAgIEluIGNvbXBhdCBtb2RlIHRoaXMgbGZ1biBpcyB1c2VkIGJ5IHRoZSBlZnVuIHRyYW5zZmVyKCkuCisKKyAgICAgICAgSXQgaXMgY2FsbGVkIHRvIGNoZWNrIGlmIGFuIG9iamVjdCB3YW50cyB0byBiZSBtb3ZlZCBvdXQgb2YKKyAgICAgICAgdGhlIGludmVudG9yeSBvZiBhIGxpdmluZyBvYmplY3QuIGRyb3AoKSBzaG91bGQgcmV0dXJuIDEgdG8KKyAgICAgICAgcHJldmVudCBkcm9wcGluZy4gVGhpcyBpcyB0aGUgb3Bwb3NpdGUgb2YgdGhlIGdldCgpIGZ1bmN0aW9uLgorICAgICAgICBUaGF0IGlzIGJlY2F1c2UgaWYgZHJvcCgpIGlzIG5vdCBkZWZpbmVkLCBpdCB3aWxsIGFsd2F5cyBiZQorICAgICAgICBwb3NzaWJsZSB0byBkcm9wIGFuIG9iamVjdC4KKworICAgICAgICBJZiB0aGUgb2JqZWN0IHNlbGYtZGVzdHJ1Y3RzIHdoZW4gZHJvcCgpIGlzIGNhbGxlZCwgYmUgc3VyZSB0bworICAgICAgICByZXR1cm4gMSwgYXMgdGhlIGRlc3RydWN0ZWQgaXRlbSBzdXJlbHkgbm90IGNhbiBiZSBkcm9wcGVkLgorCisgICAgICAgIE1vc3QgY29tcGF0IG1vZGUgTFBDIGxpYnJhcmllcyB0byBkZWZpbmUgb25lIGFyZ3VtZW50IGZvcgorICAgICAgICBkcm9wLiBJZiBzaWxlbnRseSBpcyB0cnVlLCBubyBtZXNzYWdlcyBzaG91bGQgYmUgd3JpdHRlbi4KKworSElTVE9SWQorICAgICAgICBEZXByZWNhdGVkIGluIExETXVkIDMuMyBhcyB0cmFuc2ZlcigpIGhhcyBiZWVuIGRlcHJlY2F0ZWQuCisKK1NFRSBBTFNPCisgICAgICAgIHRyYW5zZmVyKEUpCmRpZmYgLS1naXQgYS9kb2MvYXBwbGllZC9leGl0IGIvZG9jL2FwcGxpZWQvZXhpdApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41NzVmZGQzCi0tLSAvZGV2L251bGwKKysrIGIvZG9jL2FwcGxpZWQvZXhpdApAQCAtMCwwICsxLDIxIEBACitTWU5PUFNJUworICAgICAgICB2b2lkIGV4aXQob2JqZWN0IG9iKQorCitERVNDUklQVElPTgorICAgICAgICBUaGlzIGZ1bmN0aW9uIHdhcyB1c2VkIGluIGNvbXBhdCBtb2RlIGRyaXZlcnMgaW4gY29udGV4dAorICAgICAgICB3aXRoIG1vdmluZyBvYmplY3RzLiBOb3dhZGF5cyBvYmplY3RzIGFyZSBtb3ZlZCBieSBtZWFucworICAgICAgICBvZiB0aGUgSF9NT1ZFX09CSkVDVDAvMSBob29rcywgYW5kIHVzZSBvZiB0aGlzIGxmdW4gaXMKKyAgICAgICAgdXAgdG8gdGhlIG11ZGxpYi4KKworICAgICAgICBUaGlzIGZ1bmN0aW9uIHdhcyBjYWxsZWQgaW4gdGhlIG9sZCBlbnZpcm9ubWVudCBldmVyeXRpbWUgYQorICAgICAgICBsaXZpbmcgb2JqZWN0IG9iIGxlYXZlcyBpdC4KKworICAgICAgICBUaGUgZnVuY3Rpb24gdGhpc19wbGF5ZXIoKSB3aWxsIHJldHVybiBhIHJhbmRvbSB2YWx1ZSwgZG9uJ3QKKyAgICAgICAgdXNlIGl0IGF0IHRoaXMgcG9pbnQuCisKKyAgICAgICAgV0FSTklORzogVXNpbmcgdGhpcyBmdW5jdGlvbiBpcyBFWFRSRU1FTFkgZGFuZ2Vyb3VzLiBBIHNpbmdsZQorICAgICAgICBidWcsIGFuZCB5b3UgYXJlIGZvcmV2ZXIgKGkuZS4gdW50aWwgdGhlIG5leHQgcmVib290IG9jY3VycykKKyAgICAgICAgY2F1Z2h0IGluIHRoZSByb29tLgorCitTRUUgQUxTTworICAgICAgICBpbml0KEEpCmRpZmYgLS1naXQgYS9kb2MvYXBwbGllZC9nZXQgYi9kb2MvYXBwbGllZC9nZXQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNjU1YTFiMAotLS0gL2Rldi9udWxsCisrKyBiL2RvYy9hcHBsaWVkL2dldApAQCAtMCwwICsxLDE4IEBACitERVBSRUNBVEVECitTWU5PUFNJUworICAgICAgICBpbnQgZ2V0KCkKKworREVTUklQVElPTgorICAgICAgICBJbiBjb21wYXQgbW9kZSwgdGhpcyBmdW5jdGlvbiBpcyB1c2VkIGJ5IHRoZSBlZnVuIHRyYW5zZmVyKCkuCisKKyAgICAgICAgSWYgYW4gb2JqZWN0IHdhbnRzIGNvbnRyb2wgb3ZlciB3aGVuIGl0IGlzIHBvc3NpYmxlIHRvIHBpY2sgaXQKKyAgICAgICAgdXAsIGkuZS4gbW92ZWQgaW50byBhIGxpdmluZyBvYmplY3QsIHRoZW4gaXQgbXVzdCBkZWZpbmUKKyAgICAgICAgZ2V0KCksIGFuZCByZXR1cm4gMSBpZiBvayB0byBwaWNrIHVwLgorCisgICAgICAgIGlkKCkgaGFzIGJlZW4gY2FsbGVkIGJlZm9yZSB0aGlzIHRvIGlkZW50aWZ5IHRoZSBvYmplY3QuCisKK0hJU1RPUlkKKyAgICAgICAgRGVwcmVjYXRlZCBpbiBMRE11ZCAzLjMgYXMgdHJhbnNmZXIoKSBoYXMgYmVlbiBkZXByZWNhdGVkLgorCitTRUUgQUxTTworICAgICAgICB0cmFuc2ZlcihFKSwgZHJvcChBKQpkaWZmIC0tZ2l0IGEvZG9jL2FwcGxpZWQvaGVhcnRfYmVhdCBiL2RvYy9hcHBsaWVkL2hlYXJ0X2JlYXQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOTg3NmIwMwotLS0gL2Rldi9udWxsCisrKyBiL2RvYy9hcHBsaWVkL2hlYXJ0X2JlYXQKQEAgLTAsMCArMSw0NyBAQAorU1lOT1BTSVMKKyAgICAgICAgdm9pZCBoZWFydF9iZWF0KCkKKworREVTQ1JJUFRJT04KKyAgICAgICAgVGhpcyBmdW5jdGlvbiB3aWxsIGJlIGNhbGxlZCBhdXRvbWF0aWNhbGx5IGV2ZXJ5CisgICAgICAgIF9fSEVBUlRfQkVBVF9JTlRFUlZBTF9fIHNlY29uZHMuIFRoZSBkcml2ZXIgd2lsbCBjYWxsIHRoZSBmdW5jdGlvbgorICAgICAgICBkaXJlY3RseSBpbiB0aGUgb2JqZWN0LCBldmVuIGlmIHRoZSBmdW5jdGlvbiBpcyBiZWluZyBzaGFkb3dlZC4KKworICAgICAgICBUaGUgc3RhcnQgYW5kIHN0b3Agb2YgaGVhcnQgYmVhdCBpcyBjb250cm9sbGVkIGJ5IHRoZSBlZnVuCisgICAgICAgIHNldF9oZWFydF9iZWF0KCkuIEJlIGNhcmVmdWwgbm90IHRvIGhhdmUgb2JqZWN0cyB3aXRoIGhlYXJ0CisgICAgICAgIGJlYXQgcnVubmluZyBhbGwgdGhlIHRpbWUsIGFzIGl0IHVzZXMgYSBsb3Qgb2YgZHJpdmVyCisgICAgICAgIHJlc291cmNlcy4gSWYgdGhlcmUgaXMgYW4gZXJyb3IgaW4gdGhlIGhlYXJ0IGJlYXQgcm91dGluZSwgdGhlCisgICAgICAgIGhlYXJ0IGJlYXQgd2lsbCBiZSB0dXJuZWQgb2ZmIGZvciB0aGlzIG9iamVjdCBhbmQgdGhlCisgICAgICAgIG1hc3RlciBmdW5jdGlvbiBoZWFydF9iZWF0X2Vycm9yKCkgaXMgY2FsbGVkLiBJZiB0aGUgY2FsbAorICAgICAgICB0byB0aGUgbWFzdGVyIGZ1bmN0aW9uIHJldHVybnMgYSBub24temVybyB2YWx1ZSwgdGhlIGhlYXJ0IGJlYXQKKyAgICAgICAgd2lsbCBiZSB0dXJuZWQgYmFjayBvbiBhZ2Fpbi4KKworICAgICAgICBUaGUgZnVuY3Rpb24gdGhpc19wbGF5ZXIoKSB3aWxsIHJldHVybiB0aGlzIG9iamVjdCwgYnV0IG9ubHkgaWYKKyAgICAgICAgaXQgaXMgbGl2aW5nLiBPdGhlcndpc2UsIHRoaXNfcGxheWVyKCkgd2lsbCByZXR1cm4gMC4KKworICAgICAgICBUaGUgZnVuY3Rpb24gd2lsbCBiZSBjYWxsZWQgb25seSBpZiB0aGVyZSBpcyBhdCBsZWFzdCBvbmUgaW50ZXJhY3RpdmUKKyAgICAgICAgdXNlciBpbiB0aGUgZ2FtZS4KKworICAgICAgICBOb3RlIHRoYXQgZXJyb3IgbWVzc2FnZXMgd2lsbCBiZSBnaXZlbiB0byB0aGUgY3VycmVudCB1c2VyCisgICAgICAgIHdoaWNoIHdpbGwgYmUgdGhlIG9iamVjdCBpdHNlbGYgb3Igbm9ib2R5LgorCitFWEFNUExFCisgICAgICAgIG9iamVjdCBvd25lcjsKKyAgICAgICAgdm9pZCBjcmVhdGUoKSB7CisgICAgICAgICAgIC4uLgorICAgICAgICAgICBvd25lcj10aGlzX3BsYXllcigpOworICAgICAgICAgICBzZXRfaGVhcnRfYmVhdCgxKTsKKyAgICAgICAgfQorICAgICAgICB2b2lkIGhlYXJ0X2JlYXQoKSB7CisgICAgICAgICAgIHRlbGxfb2JqZWN0KG93bmVyLCAiWW91ciBoZWFydCBnb2VzOiBCVU0gQlVNXG4iKTsKKyAgICAgICAgfQorCisgICAgICAgIFdlIGhhdmUgdG8gdXNlIHRlbGxfb2JqZWN0KCkgYmVjYXVzZSB3cml0ZSBnb2VzIHRvIHRoZSBjdXJyZW50CisgICAgICAgIHVzZXIgYW5kIHRoaXMgY2FuIG9ubHkgYmUgdGhlIG9iamVjdCBpdHNlbGYgb3Igbm9ib2R5LgorCitISVNUT1JZCisgICAgICAgIExETXVkIDMuMy42ODcgbWFkZSB0aGUgaW50ZXJ2YWwgdGltZSBjb25maWd1cmFibGUgYXQgZHJpdmVyIGNvbXBpbGUKKyAgICAgICAgdGltZSAodXNlZCB0byBiZSAyIHNlY29uZHMgZml4ZWQpLgorCitTRUUgQUxTTworICAgICAgICBzZXRfaGVhcnRfYmVhdChFKSwgY2FsbF9vdXQoRSksIGVuYWJsZV9jb21tYW5kcyhFKSwKKyAgICAgICAgaGVhcnRfYmVhdF9lcnJvcihNKQpkaWZmIC0tZ2l0IGEvZG9jL2FwcGxpZWQvaWQgYi9kb2MvYXBwbGllZC9pZApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5iZGIxZmIyCi0tLSAvZGV2L251bGwKKysrIGIvZG9jL2FwcGxpZWQvaWQKQEAgLTAsMCArMSwxNyBAQAorU1lOT1BTSVMKKyAgICAgICAgdmFyYXJncyBpbnQgaWQoc3RyaW5nIHN0ciwgaW50IGx2bCk7CisKK0RFU0NSSVBUSU9OCisgICAgICAgIExldCB0aGUgb2JqZWN0IGlkZW50aWZ5IGl0c2VsZi4gSWYgc3RyIG1hdGNoZXMgYW4gaWQgb2YgdGhlCisgICAgICAgIGN1cnJlbnQgb2JqZWN0IHRoZW4gcmV0dXJuIGEgbm9uZSB6ZXJvIHZhbHVlLgorCisgICAgICAgIFRoaXMgbGZ1biBpcyBhcHBsaWVkIGZvciB0aGUgZWZ1biBwcmVzZW50KCkuCisKK0VYQU1QTEUKKyAgICAgICAgaW50IGlkKHN0cmluZyBzdHIpIHsKKyAgICAgICAgICAgcmV0dXJuICJzd29yZCIgPT0gc3RyIHx8ICJzd29yZCBvZiBmaXJlIiA9PSBzdHI7CisgICAgICAgIH0KKworU0VFIEFMU08KKyAgICAgICAgcHJlc2VudChFKQorICAgICAgICBpZChMKQpkaWZmIC0tZ2l0IGEvZG9jL2FwcGxpZWQvaW5pdCBiL2RvYy9hcHBsaWVkL2luaXQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMTc2NzVkYQotLS0gL2Rldi9udWxsCisrKyBiL2RvYy9hcHBsaWVkL2luaXQKQEAgLTAsMCArMSw3MCBAQAorU1lOT1BTSVMKKyAgICAgICAgdm9pZCBpbml0KCkKKworREVTQ1JJUFRJT04KKyAgICAgICAgVGhlIEhfTU9WRV9PQkpFQ1QwLzEgaW1wbGVtZW50IHRoZSBkZXRhaWxzIG9mIG1vdmluZyBvYmplY3RzLgorICAgICAgICBJbiBvbGRlciBkcml2ZXJzLCBpbml0KCkgd2FzIGNhbGxlZCB0byBoYW5kbGUgdGhlIGFkZGluZyBvZgorICAgICAgICBhY3Rpb25zLCBhbmQgYSBsb3Qgb2YgaG9vayBpbXBsZW1lbnRhdGlvbnMgc3RpbGwgZm9sbG93IHRoaXMKKyAgICAgICAgdHJhZGl0aW9uLgorCisgICAgICAgIFRoZSBtYWluIHB1cnBvc2Ugb2YgdGhpcyBmdW5jdGlvbiBpcyB0byBwdWJsaXNoIHRoZSBjb21tYW5kcworICAgICAgICBhbiBvYmplY3QgaW1wbGVtZW50cyB0byBvdGhlciwgbGl2aW5nIG9iamVjdHMuIFRyYWRpdGlvbmFsbHksCisgICAgICAgIHdoZW5ldmVyIGEgbGl2aW5nIG9iamVjdCBlbnRlcnMgdGhlIHZpY2luaXR5IG9mIGFub3RoZXIKKyAgICAgICAgb2JqZWN0LCBpbml0KCkgaXMgY2FsbGVkIGluIHRoZSBsYXR0ZXIgYW5kIHRoaXNfcGxheWVyKCkgd2lsbAorICAgICAgICBwb2ludCB0byB0aGUgZm9ybWVyIG9iamVjdC4gVGhpcyBoYXBwZW5zIG11dHVhbGx5IHNob3VsZCBib3RoCisgICAgICAgIG9iamVjdHMgaGFwcGVuIHRvIGJlIGxpdmluZy4KKworICAgICAgICBPciBtb3JlIGZvcm1hbGx5OgorCisgICAgICAgICAgICBJZiB0aGUgb2JqZWN0IE8gdGhhdCBtb3ZlcyBpcyBtYXJrZWQgYXMgbGl2aW5nIHRoZW4gZmlyc3QKKyAgICAgICAgICAgIGNhbGwgaW5pdCgpIG9mIHRoZSBkZXN0aW5hdGlvbiBvYmplY3QgRCB3aXRoIHRoaXNfcGxheWVyKCkKKyAgICAgICAgICAgIHNldCB0byBPLgorCisgICAgICAgICAgICBUaGVuIGFwcGx5IHRoZSB0d28gZm9sbG93aW5nIHJ1bGVzIGZvciBlYWNoIG9iamVjdCBDCisgICAgICAgICAgICBpbnNpZGUgRDoKKworICAgICAgICAgICAgICAgICAgICBJZiBDIGlzIG1hcmtlZCBhcyBsaXZpbmcgdGhlbiBjYWxsIE8tPmluaXQoKSB3aXRoCisgICAgICAgICAgICAgICAgICAgIHRoaXNfcGxheWVyKCkgc2V0IHRvIEMuCisKKyAgICAgICAgICAgICAgICAgICAgSWYgTyBpcyBtYXJrZWQgYXMgbGl2aW5nIHRoZW4gY2FsbCBDLT5pbml0KCkgd2l0aAorICAgICAgICAgICAgICAgICAgICB0aGlzX3BsYXllcigpIHNldCB0byBPLgorCisgICAgICAgICAgICBGaW5hbGx5LCBpZiBEIGlzIG1hcmtlZCBhcyBsaXZpbmcgdGhlbiBjYWxsIE8tPmluaXQoKSwKKyAgICAgICAgICAgIHdpdGggdGhpc19wbGF5ZXIoKSBzZXQgdG8gRC4KKworICAgICAgICBTdGFydGluZyB3aXRoIDMuMi4xLCB0aGUgYWN0dWFsIG1vdmUgaGFuZGxpbmcgYmVjYW1lIHBhcnQgb2YgdGhlCisgICAgICAgIG9iamVjdCBsaWJyYXJ5LCBzbyBhIGdpdmVuIGluc3RhbGxhdGlvbiBtYXkgaW1wbGVtZW50IGFueSBvdGhlciBzY2hlbWUKKyAgICAgICAgb2YgY2FsbGluZyBpbml0KCkuCisKKyAgICAgICAgT25lIGNhdmVhdDogY29tbWFuZHMgZGVmaW5lZCBpbiB0aGUgcGxheWVyIG9iamVjdCBmb3IgdGhlIHBsYXllcgorICAgICAgICBoaW1zZWxmIHNob3VsZCBub3QgYmUgZGVmaW5lZCBpbiBpbml0KCksIGFzIHRoZXNlIGNvbW1hbmRzIHdvdWxkIGJlCisgICAgICAgIGFkZGVkIHRvIF9vdGhlcl8gcGxheWVycyB3aGVuZXZlciB0aGV5IGhhcHBlbiB0byBiZSBuZWFyYnkuIEluc3RlYWQKKyAgICAgICAgdXNlIGEgc2VwYXJhdGUgZnVuY3Rpb24gKCJhZGRfcGxheWVyX2NvbW1hbmRzKCkiIG9yIHNvKSB3aGljaAorICAgICAgICBpcyBjYWxsZWQgZHVyaW5nIHRoZSBjcmVhdGlvbiBvZiB0aGUgcGxheWVyLgorCitFWEFNUExFCisgICAgICAgIChUaGlzIGV4YW1wbGUgYXNzdW1lcyBhIHRyYWRpdGlvbmFsIGltcGxlbWVudGF0aW9uIG9mIHRoZQorICAgICAgICAgbW92ZW1lbnQgaGFuZGxpbmcpCisKKyAgICAgICAgTGV0cyBzYXkgd2UgaGF2ZSBhIG9iamVjdCBzdHJ1Y3R1cmUgb2YgbGl2aW5nIChsMSBhbmQgbDIpIGFuZAorICAgICAgICBub24gbGl2aW5nIG9iamVjdHMgKG4xIGFuZCBuMikgYXMgdGhlIGZvbGxvd2luZzoKKworICAgICAgICBsMQorICAgICAgICAgICBuMQorICAgICAgICAgICBsMgorICAgICAgICAgICBuMgorCisgICAgICAgIElmIHdlIG5vdyBtb3ZlIGFub3RoZXIgbGl2aW5nIG9iamVjdCBsMyBpbnRvIGwxLCB0aGUgY2FsbAorICAgICAgICBzdWVxdWVuY2Ugb2YgdGhlIGluaXQoKSBmdW5jdGlvbnMgbG9va3MgbGlrZSB0aGlzOgorCisgICAgICAgIGwxLT5pbml0KCkgIGZpcnN0IGluaXQoKSBvZiB0aGUgZGVzdGluYXRpb24gd2lsbCBiZSBjYWxsZWQKKyAgICAgICAgbjEtPmluaXQoKSAgbm93IGl0ZXJhdGUgdGhyb3cgdGhlIGludmVudG9yeSBvZiB0aGUgZGVzdGluYXRpb24KKyAgICAgICAgbDMtPmluaXQoKQorICAgICAgICBsMi0+aW5pdCgpCisgICAgICAgIG4yLT5pbml0KCkKKyAgICAgICAgbDMtPmluaXQoKSAgYW5kIGZpbmFsbHkgY2FsbCBpbml0KCkgb2YgdGhlIG9iamVjdCB0aGF0IGhhcworICAgICAgICAgICAgICAgICAgICBiZWVuIG1vdmVkCisKK1NFRSBBTFNPCisgICAgICAgIGFkZF9hY3Rpb24oRSksIHNldF9lbnZpcm9ubWVudChFKSwgZW52aXJvbm1lbnQoRSksIG1vdmVfb2JqZWN0KEUpLAorICAgICAgICBob29rcyhDKQpkaWZmIC0tZ2l0IGEvZG9jL2FwcGxpZWQvbG9nb24gYi9kb2MvYXBwbGllZC9sb2dvbgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi45N2YwMzczCi0tLSAvZGV2L251bGwKKysrIGIvZG9jL2FwcGxpZWQvbG9nb24KQEAgLTAsMCArMSwyOCBAQAorU1lOT1BTSVMKKyAgICAgICAgaW50IGxvZ29uICh2b2lkKQorICAgICAgICBpbnQgbG9nb24gKGludCBmbGFnKQorCitERVNDUklQVElPTgorICAgICAgICBXaGVuIHRoZSBkcml2ZXIgY3JlYXRlZCBhIG5ldyBjb25uZWN0aW9uIChlaXRoZXIgYnkgYWNjZXB0aW5nCisgICAgICAgIGl0IG9yIGJ5IGNyZWF0aW5nIGl0IHdpdGggbmV0X2Nvbm5lY3QoKSkgYW5kIGJvdW5kIGl0IHRvIGFuCisgICAgICAgIG9iamVjdCwgaXQgdGhlbiBjYWxscyBsb2dvbigpIGluIHRoYXQgb2JqZWN0LgorCisgICAgICAgIFRoZSBtZXRob2Qgc2hvdWxkIHJldHVybiAwIG9uIGZhaWx1cmUsIGFuZCBldmVyeXRoaW5nIGVsc2Ugb24KKyAgICAgICAgc3VjY2Vzcy4KKworICAgICAgICBJZiB0aGUgZHJpdmVyIGF0dGVtcHRlZCB0byBjcmVhdGUgYSBjb25uZWN0aW9uIGluIHRoZQorICAgICAgICBiYWNrZ3JvdW5kIGFuZCBmYWlsZWQsIGl0IHdpbGwgY2FsbCBsb2dvbigtMSkgaW4gdGhlIGludGVuZGVkCisgICAgICAgIG9iamVjdCB0byBpbmZvcm0gdGhlIG11ZGxpYiBhYm91dCB0aGUgZmFpbHVyZS4KKworICAgICAgICBJZiB0aGUgbWFzdGVyIGF0dGVtcHRlZCBhIHNlY3VyZSBjb25uZWN0aW9uIGluIGNvbm5lY3QoRSkgYW5kCisgICAgICAgIGRpZCBub3Qgc2V0IGFuIGV4cGxpY2l0IFRMUyBjYWxsYmFjaywgdGhlIGNhbGwgdG8gbG9nb24oKSB3b24ndAorICAgICAgICBoYXBwZW4gdW50aWwgdGhlIFRMUyBoYW5kc2hha2UgaXMgY29tcGxldGUuIElmIHRoZSBtYXN0ZXIgc2V0CisgICAgICAgIGEgVExTIGNhbGxiYWNrLCB0aGF0IHdpbGwgYmUgZXhlY3V0ZWQgaW4gcGxhY2Ugb2YgbG9nb24oKS4KKworSElTVE9SWQorICAgICAgICBMRE11ZCAzLjIuMTAgYWRkZWQgdGhlIGV4dGVuZGVkIG1lYW5pbmcgZm9yIG5ldF9jb25uZWN0KCkuCisgICAgICAgIExETXVkIDMuMi4xMy8zLjMuNzEzIHN0cmVhbWxpbmVkIHRoZSBoYW5kbGluZyBvZiBzZWN1cmUgY29ubmVjdGlvbnMKKyAgICAgICAgZHVyaW5nIGxvZ29uLgorCitTRUUgQUxTTworICAgICAgICBjb25uZWN0KE0pLCBuZXRfY29ubmVjdChFKSwgZXhlYyhFKSwgdGxzX2luaXRfY29ubmVjdGlvbihFKQpkaWZmIC0tZ2l0IGEvZG9jL2FwcGxpZWQvbW9kaWZ5X2NvbW1hbmQgYi9kb2MvYXBwbGllZC9tb2RpZnlfY29tbWFuZApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi40YTRiMmVmCi0tLSAvZGV2L251bGwKKysrIGIvZG9jL2FwcGxpZWQvbW9kaWZ5X2NvbW1hbmQKQEAgLTAsMCArMSwyNyBAQAorU1lOT1BTSVMKKyAgICAgICAgaW50fHN0cmluZyA8bmFtZT4oc3RyaW5nIGNtZCkKKworREVTQ1JJUFRJT04KKyAgICAgICAgQWZ0ZXIgc2V0X21vZGlmeV9jb21tYW5kKG1vYikgd2FzIGNhbGxlZCBmb3IgYW4gaW50ZXJhY3RpdmUKKyAgICAgICAgb2JqZWN0IGlvYiwgYWxsIGNvbW1hbmRzIGZvciB0aGF0IHVzZXIgd2lsbCBiZSBwYXNzZWQgdG8KKyAgICAgICAgbW9iLT48bmFtZT4oKSwgYW5kIHRoZSByZXR1cm4gd2lsbCB0aGVuIGJlIGNoZWNrZWQgZm9yCisgICAgICAgIGFjdGlvbnMuIFRoZSBhY3R1YWwgbmFtZSBvZiB0aGUgbGZ1biB0byBjYWxsIGlzIHNwZWNpZmllZAorICAgICAgICBieSB0aGUgSF9NT0RJRllfQ09NTUFORF9GTkFNRSBob29rIC0gdHJhZGl0aW9uYWxseSBpdCdzCisgICAgICAgICdtb2RpZnlfY29tbWFuZCcuCisKKyAgICAgICAgSWYgdGhlIHJlc3VsdCBpcyBhIHN0cmluZywgaXQgaXMgdGhlIG5ldyBjb21tYW5kIHRvIGV4ZWN1dGUKKyAgICAgICAgaW5zdGVhZCBvZiB0aGUgZ2l2ZW4gb25lLiBOb3RlIHRoYXQgaXQgaXMgbm90IHBvc3NpYmxlIHRvCisgICAgICAgIG1ha2Ugc2V2ZXJhbCBjb21tYW5kcyBmcm9tIG9uZSB0aGlzIHdheSEKKyAgICAgICAgSWYgdGhlIHJlc3VsdCBpcyBhIG5vbi16ZXJvIG51bWJlciwgdGhlIGdpdmVuIGNvbW1hbmQgaXMgdG8KKyAgICAgICAgYmUgaWdub3JlZC4gSW4gY2FzZSBvZiB0aGUgY2xvc3VyZS9sZnVuIHNldHRpbmcgdGhpcyBtYXkKKyAgICAgICAgbWVhbiB0aGF0IHRoZSBjbG9zdXJlL2xmdW4gYWxyZWFkeSBleGVjdXRlZCBpdC4KKyAgICAgICAgSWYgdGhlIHJlc3VsdCBpcyAwLCB0aGUgb3JpZ2luYWxseSBnaXZlbiBjb21tYW5kIGlzIHRvIGJlCisgICAgICAgIHVzZWQuCisKK0hJU1RPUlkKKyAgICAgICAgSW4gMy4yLjFAMTA5IHRoZSBuYW1lIG9mIHRoZSBsZnVuIHRvIGNhbGwgbXVzdCBiZSBzcGVjaWZpZWQKKyAgICAgICAgdXNpbmcgdGhlIEhfTU9ESUZZX0NPTU1BTkRfRk5BTUUgZHJpdmVyIGhvb2suCisKKworU0VFIEFMU08KKyAgICAgICAgc2V0X21vZGlmeV9jb21tYW5kKEUpLCBob29rcyhDKQpkaWZmIC0tZ2l0IGEvZG9jL2FwcGxpZWQvcGFyc2VfY29tbWFuZF9hZGplY3Rpdl9pZF9saXN0IGIvZG9jL2FwcGxpZWQvcGFyc2VfY29tbWFuZF9hZGplY3Rpdl9pZF9saXN0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjc3NDVkZTkKLS0tIC9kZXYvbnVsbAorKysgYi9kb2MvYXBwbGllZC9wYXJzZV9jb21tYW5kX2FkamVjdGl2X2lkX2xpc3QKQEAgLTAsMCArMSwxNSBAQAorU1lOT1BTSVMKKyAgICAgICAgc3RyaW5nICpwYXJzZV9jb21tYW5kX2FkamVjdGl2X2lkX2xpc3Qodm9pZCkKKworREVTQ1JJUFRJT04KKyAgICAgICAgUmV0dXJuIGFsbCBhZGplY3RpdmVzIGFzc29jaWF0ZWQgd2l0aCB0aGlzIG9iamVjdC4KKworICAgICAgICBVc2VkIGJ5IHBhcnNlX2NvbW1hbmQoKS4KKworRVhBTVBMRQorICAgICAgICBzdHJpbmcgKiBwYXJzZV9jb21tYW5kX2FkamVjdGl2X2lkX2xpc3QoKSB7CisgICAgICAgICAgICByZXR1cm4gKHsgImlmZmlzaCIgfSk7CisgICAgICAgIH0KKworU0VFIEFMU08KKyAgICAgICAgcGFyc2VfY29tbWFuZChFKQpkaWZmIC0tZ2l0IGEvZG9jL2FwcGxpZWQvcGFyc2VfY29tbWFuZF9pZF9saXN0IGIvZG9jL2FwcGxpZWQvcGFyc2VfY29tbWFuZF9pZF9saXN0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjRjOGZjNzMKLS0tIC9kZXYvbnVsbAorKysgYi9kb2MvYXBwbGllZC9wYXJzZV9jb21tYW5kX2lkX2xpc3QKQEAgLTAsMCArMSwxMCBAQAorU1lOT1BTSVMKKyAgICAgICAgc3RyaW5nICpwYXJzZV9jb21tYW5kX2lkX2xpc3Qodm9pZCkKKworREVTQ1JJUFRJT04KKyAgICAgICAgUmV0dXJuIHRoZSBub3JtYWwgc2luZ3VsYXIgbmFtZXMgb2YgdGhpcyBvYmplY3QuCisKKyAgICAgICAgVXNlZCBieSBwYXJzZV9jb21tYW5kKCkuCisKK1NFRSBBTFNPCisgICAgICAgIHBhcnNlX2NvbW1hbmQoRSksIHBhcnNlX2NvbW1hbmRfcHVyYWxfaWRfbGlzdChBKQpkaWZmIC0tZ2l0IGEvZG9jL2FwcGxpZWQvcGFyc2VfY29tbWFuZF9wbHVyYWxfaWRfbGlzdCBiL2RvYy9hcHBsaWVkL3BhcnNlX2NvbW1hbmRfcGx1cmFsX2lkX2xpc3QKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZWU4ZDU2NAotLS0gL2Rldi9udWxsCisrKyBiL2RvYy9hcHBsaWVkL3BhcnNlX2NvbW1hbmRfcGx1cmFsX2lkX2xpc3QKQEAgLTAsMCArMSwxMyBAQAorU1lOT1BTSVMKKyAgICAgICAgc3RyaW5nICpwYXJzZV9jb21tYW5kX3BsdXJhbF9pZF9saXN0KHZvaWQpCisKK0RFU0NSSVBUSU9OCisgICAgICAgIFJldHVybiB0aGUgcGx1cmFsIG5hbWVzIG9mIHRoaXMgb2JqZWN0LgorCisgICAgICAgIElmIHRoaXMgZnVuY3Rpb24gZG9lc24ndCBleGlzdCwgdGhlIHBhcnNlciB0cmllcyB0byBwbHVyYWxpemUKKyAgICAgICAgdGhlIG5hbWVzIHJldHVybmVkIGJ5IHBhcnNlX2NvbW1hbmRfaWRfbGlzdCgpLgorCisgICAgICAgIFVzZWQgYnkgcGFyc2VfY29tbWFuZCgpLgorCitTRUUgQUxTTworICAgICAgICBwYXJzZV9jb21tYW5kKEUpLCBwYXJzZV9jb21tYW5kX2lkX2xpc3QoQSkKZGlmZiAtLWdpdCBhL2RvYy9hcHBsaWVkL3ByZXZlbnRfaW5zZXJ0IGIvZG9jL2FwcGxpZWQvcHJldmVudF9pbnNlcnQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYTE1NGFkOQotLS0gL2Rldi9udWxsCisrKyBiL2RvYy9hcHBsaWVkL3ByZXZlbnRfaW5zZXJ0CkBAIC0wLDAgKzEsMTkgQEAKK0RFUFJFQ0FURUQKK1NZTk9QU0lTCisgICAgICAgIGludCBwcmV2ZW50X2luc2VydCgpCisKK0RFU0NSSVBUSU9OCisgICAgICAgIEluIGNvbXBhdCBtb2RlLCB0aGlzIGZ1bmN0aW9uIGlzIHVzZWQgYnkgdGhlIGVmdW4gdHJhbnNmZXIoKS4KKworICAgICAgICBEZWZpbmUgdGhpcyBmdW5jdGlvbiBpbiBvYmplY3RzIHRoYXQgYXJlIG5laXRoZXIgbGl2aW5nIG5vcgorICAgICAgICByb29tcyBpZiB5b3Ugd2FudCB0byBwcmV2ZW50IHRvIHB1dCBzb21ldGhpbmcgaW50byBjdXJyZW50CisgICAgICAgIG9iamVjdC4KKworICAgICAgICBSZXR1cm4gdHJ1ZSBpZiBvaywgb3RoZXJ3aXNlIDAuIFRoYXQgbWVhbnMgdGhhdCBkZWZhdWx0IGlzCisgICAgICAgIHRoYXQgaXQgaXMgbm90IHBvc3NpYmxlIHRvIHB1dCBzb21ldGhpbmcgaW50byBhbiBvYmplY3QuCisKK0hJU1RPUlkKKyAgICAgICAgRGVwcmVjYXRlZCBpbiBMRE11ZCAzLjMgYXMgdHJhbnNmZXIoKSBoYXMgYmVlbiBkZXByZWNhdGVkLgorCitTRUUgQUxTTworICAgICAgICB0cmFuc2ZlcihFKSwgY2FuX3B1dF9hbmRfZ2V0KEEpCmRpZmYgLS1naXQgYS9kb2MvYXBwbGllZC9xdWVyeV93ZWlnaHQgYi9kb2MvYXBwbGllZC9xdWVyeV93ZWlnaHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uN2QzMGI4NQotLS0gL2Rldi9udWxsCisrKyBiL2RvYy9hcHBsaWVkL3F1ZXJ5X3dlaWdodApAQCAtMCwwICsxLDEzIEBACitERVBSRUNBVEVECitTWU5PUFNJUworICAgICAgICBpbnQgcXVlcnlfd2VpZ2h0KHZvaWQpCisKK0RFU0NSSVBUSU9OCisgICAgICAgIEluIGNvbXBhdCBtb2RlIHRoaXMgbGZ1biBpcyB1c2VkIGJ5IHRoZSBlZnVuIHRyYW5zZmVyKCkuCisgICAgICAgIE5vdCB0aGF0IG5vIHNldF93ZWlnaHQoKSBpcyByZXF1aXJlZCBieSB0aGUgcGFyc2VyLgorCitISVNUT1JZCisgICAgICAgIERlcHJlY2F0ZWQgaW4gTERNdWQgMy4zIGFzIHRyYW5zZmVyKCkgaGFzIGJlZW4gZGVwcmVjYXRlZC4KKworU0VFIEFMU08KKyAgICAgICAgdHJhbnNmZXIoRSksIGFkZF93ZWlnaHQoQSkKZGlmZiAtLWdpdCBhL2RvYy9hcHBsaWVkL3JlbW92ZSBiL2RvYy9hcHBsaWVkL3JlbW92ZQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5iYjczMmIyCi0tLSAvZGV2L251bGwKKysrIGIvZG9jL2FwcGxpZWQvcmVtb3ZlCkBAIC0wLDAgKzEsMjEgQEAKK1NZTk9QU0lTCisgICAgICAgIGludCByZW1vdmUodm9pZCkKKworREVTQ1JJUFRJT04KKyAgICAgICAgcmVtb3ZlKCkgZG9lcyBzb21lIGhvdXNla2VlcGluZyB0byBlbnN1cmUgY29uc2lzdGVuY3kgYW5kIHRoZW4KKyAgICAgICAgZGVzdHJ1Y3RzIHRoZSBjdXJyZW50IG9iamVjdC4KKworICAgICAgICBUaGlzIGxmdW4gaXMgbm90IGFwcGxpZWQgYnkgdGhlIHBhcnNlciwgYnV0IGJ5IG90aGVyIG9iamVjdHMKKyAgICAgICAgdG8gdGVsbCB0aGUgY3VycmVudCBvYmplY3QgdG8gc2VsZi1kZXN0cnVjdC4gcmVtb3ZlKCkgc2hvdWxkCisgICAgICAgIGJlIHN1cHBsaWVkIGJ5IHRoZSBiYXNlIGNsYXNzZXMgb2YgdGhlIGxpYnJhcnkuICBSZXR1cm4gMSBpZgorICAgICAgICBhY3R1YWxseSBzZWxmLWRlc3RydWN0ZWQsIDAgb3RoZXJ3aXNlLgorCisgICAgICAgIEFuIGFsdGVybmF0aXZlIHdheSB0byBlbnN1cmUgdGhlIGhvdXNla2VlcGluZyBvbiBkZXN0cnVjdGlvbgorICAgICAgICBpcyB0aHJvdWdoIHRoZSB1c2Ugb2YgdGhlIG1hc3RlciBhcHBseSBwcmVwYXJlX2Rlc3RydWN0KCkuCisKK05PVEUKKyAgICAgICAgWW91ciBhY3R1YWwgbXVkbGliIG1heSBuYW1lIHRoaXMgbGZ1biBkaWZmZXJlbnRseSwgInJlbW92ZSgpIiBpcworICAgICAgICBqdXN0IHRoZSB0cmFkaXRpb25hbCBuYW1lLgorCitTRUUgQUxTTworICAgICAgICBkZXN0cnVjdChFKSwgcHJlcGFyZV9kZXN0cnVjdChNKQpkaWZmIC0tZ2l0IGEvZG9jL2FwcGxpZWQvcmVzZXQgYi9kb2MvYXBwbGllZC9yZXNldApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5kYjA4YmVjCi0tLSAvZGV2L251bGwKKysrIGIvZG9jL2FwcGxpZWQvcmVzZXQKQEAgLTAsMCArMSwzNyBAQAorU1lOT1BTSVMKKyAgICAgICAgdm9pZCByZXNldChpbnQgYXJnKSAgICAgICAgLyogY29tcGF0IG1vZGUgKi8KKyAgICAgICAgdm9pZCByZXNldCh2b2lkKSAgICAgICAgICAgLyogbmF0aXZlIG1vZGUgKi8KKworREVTQ1JJUFRJT04KKyAgICAgICAgVGhlIEhfUkVTRVQgaG9vayBkZWZpbmVzIHRoZSBmdW5jdGlvbiBvciBjbG9zdXJlIHRvIGJlIGNhbGxlZAorICAgICAgICB3aGVuIHRoZSBkcml2ZXIgbmVlZHMgdG8gcmVzZXQgYW4gb2JqZWN0LiBJbiBvbGRlciBkcml2ZXJzCisgICAgICAgIHRoaXMgd2FzIGhhcmR3aXJlZCB0byB0aGUgbGZ1biByZXNldCgpLCBhbmQgYSBsb3Qgb2YgaG9vaworICAgICAgICBpbXBsZW1lbnRhdGlvbnMgc3RpbGwgZm9sbG93IHRoaXMgdHJhZGl0aW9uLgorCisgICAgICAgIEluIGNvbXBhdCBtb2RlLCByZXNldCgpIHdhcyBjYWxsZWQgd2l0aCBhcmcgMCBhZnRlciB0aGUgb2JqZWN0CisgICAgICAgIHdhcyBjb21waWxlZCwgYW5kIHdpdGggYXJnICE9IDAgZXZlcnkgb25jZSBpbiBhIHdoaWxlLiAgICAgICAgSW4KKyAgICAgICAgbmF0aXZlIG1vZGUsIGNyZWF0ZSgpIGlzIGNhbGxlZCBhZnRlciBjb21waWxpbmcsIGFuZCByZXNldCgpCisgICAgICAgIGlzIGNhbGxlZCB3aXRob3V0IGFyZ3VtZW50cyBldmVyeSBvbmNlIGluIGEgd2hpbGUuCisKKyAgICAgICAgU28sIGlmIHRoZSBhcmd1bWVudCBpcyB6ZXJvLCB0aGUgcGFyc2VyIGlzIHJ1bm5pbmcgaW4gY29tcGF0CisgICAgICAgIG1vZGUsIGFuZCByZXNldCgpIG1heSBjYWxsIHlvdXIgY3JlYXRlKCkgY29kZS4gSWYgY3JlYXRlKCkgaXMKKyAgICAgICAgY2FsbGVkLCB5b3UncmUgb24gdGhlIG5ldyB2ZXJzaW9uIGFuZCByZXNldCgpIGlzIG5vdCBjYWxsZWQKKyAgICAgICAgZm9yIG9iamVjdCBjcmVhdGlvbi4gWW91IG1heSBjYWxsIHJlc2V0KCkgZnJvbSBjcmVhdGUoKSBhbmQKKyAgICAgICAgdmljZSB2ZXJzYSwgYnV0IG1ha2Ugc3VyZSB0aGV5IGRvIG5vdCBjYWxsIGVhY2ggb3RoZXIKKyAgICAgICAgcmVjdXJzaXZlIG9uIGVpdGhlciB0eXBlIG9mIGRyaXZlci4KKworICAgICAgICByZXNldCgpIHdpbGwgYmUgY2FsbGVkIG9ubHkgaW4gb2JqZWN0cyB0aGF0IGhhdmUgYmVlbiB1c2VkCisgICAgICAgIHNpbmNlIHRoZSBsYXN0IGNhbGwgdG8gcmVzZXQoKSwgaS5lLiBhIGZ1bmN0aW9uIGluIHRoZW0gd2FzCisgICAgICAgIGNhbGxlZCAob3RoZXIgdGhhbiByZXNldCgpIG9yIGNsZWFuX3VwKCkpLCBvciBpdCB3YXMgbW92ZWQKKyAgICAgICAgYXJvdW5kLgorCisgICAgICAgIFRoaXMgZnVuY3Rpb24gY2FuIGJlIHVzZWQgdG8gcmVzZXQgdGhlIHN0YXRlIG9mIHRoZSBvYmplY3Qgb3IKKyAgICAgICAgZG8gc29tZSBjaGVja3Mgb3Igd2hhdCBldmVyLiBUaGUgZ2FtZSB3b3VsZG4ndCBiZSBmdW4gaWYgbm8KKyAgICAgICAgY2hhbGxlbmdlcyByZW1haW5lZC4KKworICAgICAgICBGb3IgMy4yLjEsIHRoZSBtdWRsaWIgY2FuIGJlIHByb2dyYW1tZWQgdG8gY2FsbCBhbiBvdGhlciBsZnVuCisgICAgICAgIHRoYW4gcmVzZXQoKSB0byByZXNldCBhbiBvYmplY3QuCisKK1NFRSBBTFNPCisgICAgICAgIGNsZWFuX3VwKEEpLCBoZWFydF9iZWF0KEEpLCBjYWxsX291dChFKSwgY3JlYXRlKEEpLCBfX0lOSVQoQSksCisgICAgICAgIHJlc2V0KEgpLCBob29rcyhDKSwgaW5pdGlhbGlzYXRpb24oTSksIG5hdGl2ZShDKQpkaWZmIC0tZ2l0IGEvZG9jL2JhbGFuY2UvYXJ0aWxsZXJpZSBiL2RvYy9iYWxhbmNlL2FydGlsbGVyaWUKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOTE0Mjc4ZAotLS0gL2Rldi9udWxsCisrKyBiL2RvYy9iYWxhbmNlL2FydGlsbGVyaWUKQEAgLTAsMCArMSw2MyBAQAorUmVnZWxuIGZ1ZXIgQXJ0aWxsZXJpZS1PYmpla3RlCis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKworMS4gRGVmaW5pdGlvbiB2b24gQXJ0aWxsZXJpZQorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCitVbnRlciBkZW0gQmVncmlmZiAiQXJ0aWxsZXJpZSIgZmFzc3QgbWFuIGFsbGUgT2JqZWt0ZSB6dXNhbW1lbiwgZGllCit6dXNhZXR6bGljaCB6dSBkZW4gdm9yaGFuZGVuZW4gR2lsZGVuZmFlaGlna2VpdGVuIGR1cmNoIGVpbiB2b20KK1NwaWVsZXIgaW5pdGlpZXJ0ZXMgS29tbWFuZG8gZGlyZWt0IFNjaGFkZW4gYW4gZWluZW0gb2RlciBtZWhyZXJlbgorR2VnbmVybiB2ZXJ1cnNhY2hlbi4KKworV2FmZmVuIHVuZCBSdWVzdHVuZ2VuLCB3ZWxjaGUgcGVyIEtvbW1hbmRvIFNjaGFkZW4gdmVydXJzYWNoZW4gKHouIEIuCitFaXNzdGFiLCBSaW5nIHZvbSBTY2hsYW1tZHJhY2hlbiksIGZhbGxlbiB1bnRlciBkaWVzZQorRGVmaW5pdGlvbi4gV2FmZmVuIHVuZCBSdWVzdHVuZ2VuLCBkaWUgInZvbiBzaWNoIGF1cyIgKHVlYmxpY2hlcndlaXNlCitwZXIgSGl0LS9EZWZlbmRGdW5jKSBTY2hhZGVuIHZlcnVyc2FjaGVuICh6LiBCLiBUb2Rlc2RyYWNoZW5wYW56ZXIsCitHb2JsaW5yaW5nKSwgZmFsbGVuIG5pY2h0IHVudGVyIGRpZXNlIERlZmluaXRpb24sIHNpbmQgYWJlciBuYXR1ZXJsaWNoCituYWNoIHdpZSB2b3IgZ2VuZWhtaWd1bmdzcGZsaWNodGlnLgorCisyLiBCYXNpc2FuZm9yZGVydW5nZW4KKy0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIAorU29sY2hlIEFydGlsbGVyaWUgbXVzcyBmb2xnZW5kZW4gQW5mb3JkZXJ1bmdlbiBnZW51ZWdlbjoKKworIGEuIEFydGlsbGVyaWUgX211c3NfIFBfQVRUQUNLX0JVU1kgYmVhY2h0ZW4gKHNldHplbi9hYmZyYWdlbikuCisgYi4gQXJ0aWxsZXJpZSBfbXVzc18gYmVpIFZlcndlbmR1bmcgS29uemVudHJhdGlvbnNwdW5rdGUgCisgICAgdmVyYnJhdWNoZW4uCisgYy4gQXJ0aWxsZXJpZSBkYXJmIG5pY2h0IChiencuIG51ciBiZWdyZW56dCkgZ2Vob3J0ZXQgd2VyZGVuCisgICAga29lbm5lbi4KKyBkLiBBcnRpbGxlcmllIGRhcmYgYmVpIFBhcmFseXNlIG5pY2h0IGFuZ2V3ZW5kZXQgd2VyZGVuIGtvZW5uZW4KKyAgICAoUF9ESVNBQkxFX0FUVEFDSykuCisgZS4gQXJ0aWxsZXJpZSBtdXNzIGR1cmNoIFNldHplbiBkZXIgUHJvcGVydHkgUF9JU19BUlRJTExFUlkgCisgICAgZ2VrZW5uemVpY2huZXQgc2Vpbi4gCisgZi4gQXJ0aWxsZXJpZSwgZGllIE11bml0aW9uIGJlbnV0enQgb2RlciBzZWxic3QgTXVuaXRpb24gaXN0ICh3aWUgei5CLgorICAgIFd1cmZzdGVybmUpLCBtdXNzIGRhcyBVbml0b2JqZWt0IHVuZCBkZW4gZG9ydGlnZW4gTWVjaGFuaXNtdXMgenVtCisgICAgWmVyZmFsbCB2b24gT2JqZWt0ZW4gbnV0emVuLiBEYWJlaSBzaW5kIFBfVU5JVF9ERUNBWV9JTlRFUlZBTCB1bmQKKyAgICBQX1VOSVRfREVDQVlfUVVPVEEgc28genUgc2V0emVuLCBkYXNzIGRpZSBNdW5pdGlvbiBlaW5lIEhhbGJ3ZXJ0c3plaXQKKyAgICB6d2lzY2hlbiA1IHVuZCAxMCAgVGFnZW4gaGF0LCBkZXIgaWhyZXIgVmVyZnVlZ2JhcmtlaXQgYW5nZW1lc3NlbgorICAgIGlzdC4gRGllcyBsYWVzc3Qgc2ljaCBkdXJjaCBnZWVpZ25ldGVzIEVpbnN0ZWxsZW4gZGVzCisgICAgUHJvemVudHNhdHplcyB1bmQvb2RlciBkZXIgUmVzZXR6ZWl0IGVycmVpY2hlbi4KKworICAgIEJlaXNwaWVsZToKKyAgICBTZXR6dCBtYW4gcD0xJSBaZXJmYWxsIHBybyBSZXNldCBhbiwgZGFubiBtdXNzIGRlciBSZXNldAorICAgIGZ1ZXIgZWluZSBIYWxid2VydHN6ZWl0IHZvbiA1IFRhZ2VuIGRhbm4gCisgICAgdD1sbigwLjUpL2xuKDAsOTkpKjUqMjQqMzYwMCBzIGRhdWVybiwgZGFzIHNpbmQgNjIyNCBzLgorCisgICAgTW9lY2h0ZSBtYW4gbGllYmVyIGRlbiBub3JtYWxlbiBSZXNldCwgZGVyIGltIE1pdHRlbCA0NSBtaW4sIGQuaC4gMTYwCisgICAgUmVzZXRzIGluIDUgVGFnZW4gYmV0cmFlZ3QsIHNvIGVyaGFlbHQgbWFuIGZvbGdlbmRlbiBQcm96ZW50c2F0ejoKKyAgICBwID0gMS0wLDVeKDEvMTYwKSBkLmguIGNhLiAwLDQzJS4KKyBnLiBBcnRpbGxlcmllIGlzdCBpbW1lciBnZW5laG1pZ3VuZ3NwZmxpY2h0aWcuCisKK0RldGFpbHMgd2VyZGVuIGZhbGx3ZWlzZSBlbnRzY2hpZWRlbi4KKworCiszLiBJbmtyYWZ0cmV0ZW4KKy0tLS0tLS0tLS0tLS0tLQorCitEaWVzZSBSZWdlbG4gdHJldGVuIGFtIDUuIEF1Z3VzdCAyMDAzIGluIEtyYWZ0LgorUmV2aXNpb24gYW0gNS4gQXByaWwgMjAwOAorUmV2aXNpb24gYW0gNy4gQXByaWwgMjAxMQorUmV2aXNpb24gYW0gMjQuIEF1Z3VzdCAyMDExCisKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCitMZXR6dGUgQWVuZGVydW5nOiBNaSwgMjQuOC4gMjAxMSB2b24gSHVtbmkKZGlmZiAtLWdpdCBhL2RvYy9iYWxhbmNlL2F0dHJpYnV0ZSBiL2RvYy9iYWxhbmNlL2F0dHJpYnV0ZQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5jMWI3ZjliCi0tLSAvZGV2L251bGwKKysrIGIvZG9jL2JhbGFuY2UvYXR0cmlidXRlCkBAIC0wLDAgKzEsNDUgQEAKKworIEFUVFJJQlVUVkVSQUVOREVSVU5HRU4KKworICAgIFBvc2l0aXZlIFZlcmFlbmRlcnVuZ2VuIGFuIFNwaWVsZXJhdHRyaWJ1dGVuIHNpbmQgYXVmIGplZGVuIEZhbGwgdm9uCisgICAgZGVyIEJhbGFuY2UgenUgZ2VuZWhtaWdlbi4gRGFiZWkgZ2VsdGVuIGZvbGdlbmRlIFJlZ2VsbjoKKworICAgLSBTb2xsIGVpbmUgQXR0cmlidXR2ZXJhZW5kZXJ1bmcgZHVyY2ggZGFzIFRyYWdlbi9adWVja2VuIHZvbiBSdWVzdHVuZ2VuCisgICAgb2RlciBXYWZmZW4gYXVzZ2Vsb2VzdCB3ZXJkZW4sIGdlc2NoaWVodCBkaWVzIHVlYmVyIGRhcyBTZXR6ZW4gZGVyCisgICAgUHJvcGVydHkgUF9NX0FUVFJfTU9ELiBBdWNoIG5lZ2F0aXZlIFZlcmFlbmRlcnVuZ2VuIHNpbmQgdm9uIGRlciBCYWxhbmNlCisgICAgenUgZ2VuZWhtaWdlbiwgZGEgZGllc2UgUHJvcGVydHkgbWl0IFBfWF9BVFRSX01PRCBpbnRlcmFnaWVydC4KKyAgIC0gU29sbCBzY2hvbiBkZXIgQmVzaXR6IGVpbmVzIE9iamVrdGVzIGRpZSBBdHRyaWJ1dHZlcmFlbmRlcnVuZworICAgIGF1c2xvZXNlbiwgbXVzcyBQX1hfQVRUUl9NT0QgZ2VzZXR6dCB3ZXJkZW4uIEF1Y2ggbmVnYXRpdmUgCisgICAgVmVyYWVuZGVydW5nZW4gc2luZCB2b24gZGVyIEJhbGFuY2UgenUgZ2VuZWhtaWdlbiwgZGEgZGllc2UgUHJvcGVydHkgCisgICAgbWl0IFBfTV9BVFRSX01PRCBpbnRlcmFnaWVydC4KKyAgIC0gU29sbCBlaW5lIEF0dHJpYnV0dmVyYWVuZGVydW5nIG9obmUgQmVydWVja3NpY2h0aWd1bmcgZGVyIFByb3BlcnRpZXMKKyAgICBQX01fQVRUUl9NT0QgdW5kIFBfWF9BVFRSX01PRCB2ZXLkbmRlcnQgd2VyZGVuLCBnZXNjaGllaHQgZGFzIHVlYmVyIGRpZQorICAgIFByb3BlcnR5IFBfVElNRURfQVRUUl9NT0QuIAorCisKKyAgICBBdHRyaWJ1dHZlcmFlbmRlcnVuZ2VuIHNpbmQgbWl0IGRlciBCYWxhbmNlIGFienVrbGFlcmVuLgorCisgICAgQWxzIFJlZ2VsbiBzaWVodCBkaWUgQmFsYW5jZSB2b3I6CisgICAgLSBCZWkgT2JqZWt0ZW4gbWl0IGVpbmVtIGVpbnplbG5lbiBCb251cyBkYXJmICsxMCBuaWNodCB1ZWJlcnNjaHJpdHRlbiAKKyAgICB3ZXJkZW4uCisgICAgLSBCZWkgT2JqZWt0ZW4gbWl0IGVpbmVtIGVpbnppZ2VuIE1hbHVzIGRhcmYgLTQgbmljaHQgdW50ZXJzY2hyaXR0ZW4KKyAgICB3ZXJkZW4uCisgICAgLSBCZWkgT2JqZWt0ZW4gbWl0IG1laHJlcmVuIHBvc2l0aXZlbiBvZGVyIG5lZ2F0aXZlbiBWZXJhZW5kZXJ1bmdlbgorICAgIGRhcmYgZGllIFN1bW1lICs0IGJ6dy4gLTQgbmljaHQgdWViZXIvdW50ZXJzY2hyZWl0ZW4uCisgICAgLSBFcyBkdWVyZmVuIG5pY2h0IG1laHIgYWxzIDIgQXR0cmlidXRlIGluIGVpbmVtIE9iamVrdCBnZWFlbmRlcnQKKyAgICB3ZXJkZW4uIERpZSBEaWZmZXJlbnogZGFyZiA2IG5pY2h0IHVlYmVyc2NocmVpdGVuLgorICAgIC0gSmEgaG9laGVyIGRpZSBBdHRyaWJ1dHN2ZXJhZW5kZXJ1bmcsIHVtIHNvIHNjaGxlY2h0ZXIgc29sbHRlIGRhcworICAgIE9iamVrdCBzb25zdCBzZWluIChrZWluZSBBQyA1MCBtaXQgQXVzZGF1ZXIgKzEwIG9kZXIgYXVjaCAtNCkuCisgICAgLSBBbGxlIE9iamVrdGUsIGRpZSBBdHRyaWJ1dGUgdmVyYWVuZGVybiwgbXVlc3NlbiBSdWVzdHVuZ3MtIG9kZXIKKyAgICBXYWZmZW5zbG90cyBiZWxlZ2VuLiBBdXNuYWhtZSBzaW5kIEtyYW5raGVpdGVuLCBkaWUgZGVyIFNwaWVsZXIKKyAgICBuaWNodCBzdGV1ZXJuIGthbm4uCisKKyBTSUVIRSBBVUNICisKKyAgICAgYmFsYW5jZSwgcnVlc3R1bmdlbiwgd2FmZmVuLCBmZXJud2FmZmVuLCB1bmlxdWVzLCBucGNzLAorICAgICByZXNpc3Rlbnplbiwga2FtcGZvYmpla3RlLCBncmVuendlcnRlCisKKworLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCitMYXN0IG1vZGlmaWVkOiBUaHUgMjAxMS0wNC0wNyBieSBIdW1uaQorCmRpZmYgLS1naXQgYS9kb2MvYmFsYW5jZS9hdHRyaWJ1dHN2ZXJhZW5kZXJ1bmdlbiBiL2RvYy9iYWxhbmNlL2F0dHJpYnV0c3ZlcmFlbmRlcnVuZ2VuCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmRkZDZiZjAKLS0tIC9kZXYvbnVsbAorKysgYi9kb2MvYmFsYW5jZS9hdHRyaWJ1dHN2ZXJhZW5kZXJ1bmdlbgpAQCAtMCwwICsxLDQ3IEBACisKKyBBVFRSSUJVVFZFUkFFTkRFUlVOR0VOCisKKyAgICBQb3NpdGl2ZSBWZXJhZW5kZXJ1bmdlbiBhbiBTcGllbGVyYXR0cmlidXRlbiBzaW5kIGF1ZiBqZWRlbiBGYWxsIHZvbgorICAgIGRlciBCYWxhbmNlIHp1IGdlbmVobWlnZW4uIERhYmVpIGdlbHRlbiBmb2xnZW5kZSBSZWdlbG46CisKKyAgIC0gU29sbCBlaW5lIEF0dHJpYnV0dmVyYWVuZGVydW5nIGR1cmNoIGRhcyBUcmFnZW4vWnVlY2tlbiB2b24gUnVlc3R1bmdlbgorICAgIG9kZXIgV2FmZmVuIGF1c2dlbG9lc3Qgd2VyZGVuLCBnZXNjaGllaHQgZGllcyB1ZWJlciBkYXMgU2V0emVuIGRlcgorICAgIFByb3BlcnR5IFBfTV9BVFRSX01PRC4gQXVjaCBuZWdhdGl2ZSBWZXJhZW5kZXJ1bmdlbiBzaW5kIHZvbiBkZXIgQmFsYW5jZQorICAgIHp1IGdlbmVobWlnZW4sIGRhIGRpZXNlIFByb3BlcnR5IG1pdCBQX1hfQVRUUl9NT0QgaW50ZXJhZ2llcnQuCisgICAtIFNvbGwgc2Nob24gZGVyIEJlc2l0eiBlaW5lcyBPYmpla3RlcyBkaWUgQXR0cmlidXR2ZXJhZW5kZXJ1bmcKKyAgICBhdXNsb2VzZW4sIG11c3MgUF9YX0FUVFJfTU9EIGdlc2V0enQgd2VyZGVuLiBBdWNoIG5lZ2F0aXZlIAorICAgIFZlcmFlbmRlcnVuZ2VuIHNpbmQgdm9uIGRlciBCYWxhbmNlIHp1IGdlbmVobWlnZW4sIGRhIGRpZXNlIFByb3BlcnR5IAorICAgIG1pdCBQX01fQVRUUl9NT0QgaW50ZXJhZ2llcnQuCisgICAtIFNvbGwgZWluZSBBdHRyaWJ1dHZlcmFlbmRlcnVuZyBvaG5lIEJlcnVlY2tzaWNodGlndW5nIGRlciBQcm9wZXJ0aWVzCisgICAgUF9NX0FUVFJfTU9EIHVuZCBQX1hfQVRUUl9NT0QgdmVy5G5kZXJ0IHdlcmRlbiwgZ2VzY2hpZWh0IGRhcyB1ZWJlciBkaWUKKyAgICBQcm9wZXJ0eSBQX1RJTUVEX0FUVFJfTU9ELiAKKworCisgICAgQXR0cmlidXR2ZXJhZW5kZXJ1bmdlbiBzaW5kIG1pdCBkZXIgQmFsYW5jZSBhYnp1a2xhZXJlbi4KKworICAgIEFscyBSZWdlbG4gc2llaHQgZGllIEJhbGFuY2Ugdm9yOgorICAgIC0gQmVpIE9iamVrdGVuIG1pdCBlaW5lbSBlaW56ZWxuZW4gQm9udXMgZGFyZiArMTAgbmljaHQgdWViZXJzY2hyaXR0ZW4gCisgICAgd2VyZGVuLgorICAgIC0gQmVpIE9iamVrdGVuIG1pdCBlaW5lbSBlaW56aWdlbiBNYWx1cyBkYXJmIC00IG5pY2h0IHVudGVyc2Nocml0dGVuCisgICAgd2VyZGVuLgorICAgIC0gQmVpIE9iamVrdGVuIG1pdCBtZWhyZXJlbiBwb3NpdGl2ZW4gb2RlciBuZWdhdGl2ZW4gVmVyYWVuZGVydW5nZW4KKyAgICBkYXJmIGRpZSBTdW1tZSArNCBiencuIC00IG5pY2h0IHVlYmVyL3VudGVyc2NocmVpdGVuLgorICAgIC0gRXMgZHVlcmZlbiBuaWNodCBtZWhyIGFscyAyIEF0dHJpYnV0ZSBpbiBlaW5lbSBPYmpla3QgZ2VhZW5kZXJ0CisgICAgd2VyZGVuLiBEaWUgRGlmZmVyZW56IGRhcmYgNiBuaWNodCB1ZWJlcnNjaHJlaXRlbi4KKyAgICAtIEphIGhvZWhlciBkaWUgQXR0cmlidXRzdmVyYWVuZGVydW5nLCB1bSBzbyBzY2hsZWNodGVyIHNvbGx0ZSBkYXMKKyAgICBPYmpla3Qgc29uc3Qgc2VpbiAoa2VpbmUgQUMgNTAgbWl0IEF1c2RhdWVyICsxMCBvZGVyIGF1Y2ggLTQpLgorICAgIC0gQWxsZSBPYmpla3RlLCBkaWUgQXR0cmlidXRlIHZlcmFlbmRlcm4sIG11ZXNzZW4gUnVlc3R1bmdzLSBvZGVyCisgICAgV2FmZmVuc2xvdHMgYmVsZWdlbi4gQXVzbmFobWUgc2luZCBLcmFua2hlaXRlbiwgZGllIGRlciBTcGllbGVyCisgICAgbmljaHQgc3RldWVybiBrYW5uIHVuZCBBZWhubGljaGVzLiBEYW1pdCBzaW5kIGF1Y2ggU3RlbGxlbiB2ZXJib3RlbiwKKyAgICBhbiBkZXIgU3BpZWxlciBkZXJhcnRpZ2UgS3JhbmtoZWl0ZW4gZ2V6aWVsdCBiZWtvbW1lbiB1bmQgbG9zd2VyZGVuCisgICAga2Fubi4gSW0gWndlaWZlbCBlbnRzY2hlaWRldCBkaWUgQmFsYW5jZS4KKworIFNJRUhFIEFVQ0gKKworICAgICBiYWxhbmNlLCBydWVzdHVuZ2VuLCB3YWZmZW4sIGZlcm53YWZmZW4sIHVuaXF1ZXMsIG5wY3MsCisgICAgIHJlc2lzdGVuemVuLCBrYW1wZm9iamVrdGUsIGdyZW56d2VydGUKKworCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KK0xhc3QgbW9kaWZpZWQ6IFRodSAyMDExLTA2LTEwIGJ5IEh1bW5pCisKZGlmZiAtLWdpdCBhL2RvYy9iYWxhbmNlL2JhbGFuY2UgYi9kb2MvYmFsYW5jZS9iYWxhbmNlCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjY1OGQ4YzUKLS0tIC9kZXYvbnVsbAorKysgYi9kb2MvYmFsYW5jZS9iYWxhbmNlCkBAIC0wLDAgKzEsNzMgQEAKKworS3VyemVyIEFicmlzcyB1bnNlcmVzIEF1ZmdhYmVuYmVyZWljaGVzOgorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKKzEpIFdhcyB3aXJkIHZvbiB1bnMgYmVndXRhY2h0ZXQ/CisKKyAgIEFsbGUgUnVlc3R1bmdlbiB1bmQgV2FmZmVuLCBkaWUgdWViZXIgZWluZSBEZWZlbmRGdW5jIAorICAgdmVyZnVlZ2VuLCBkaWUgZnVlciBTcGllbGVyIHZvbiBOdXR6ZW4gaXN0LgorCisgICBBbGxlIFJ1ZXN0dW5nZW4gdW5kIFdhZmZlbiwgZGllIHVlYmVyIGVpbmUgSGl0RnVuYworICAgdmVyZnVlZ2VuLCBkaWUgZnVlciBTcGllbGVyIHZvbiBOdXR6ZW4gaXN0LgorCisgICBBbGxlIFJ1ZXN0dW5nZW4gdW5kIFdhZmZlbiwgZGVyZW4gQUMvV0MgZGllIEdlbmVobWlndW5ncy0KKyAgIGdyZW56ZSB1ZWJlcnNjaHJlaXRldC4gQXVjaCBzb2xjaGUsIGJlaSBkZW5lbiBkaWVzIGVyc3QKKyAgIGluIGVpbmVyIEhpdC0gb2RlciBEZWZlbmRGdW5jIGRlciBGYWxsIGlzdC4KKworICAgQWxsZSBSdWVzdHVuZ2VuIHVuZCBXYWZmZW4sIGRpZSBlaW5lbiBnZW5laG1pZ3VuZ3MtCisgICBwZmxpY2h0aWdlbiBTY2hhZGVuc3R5cCBlbnRoYWx0ZW4uCisgICAKKyAgIEFsbGUgT2JqZWt0ZSwgZGllIGluIGlyZ2VuZGVpbmVyIFdlaXNlIGRhcyBLYW1wZmdlc2NoZWhlbgorICAgYmVlaW5mbHVzc2VuLgorCisyKSBXYXMgZW50c2NoZWlkZW4gd2lyIGZ1ZXIgR2lsZGVuPworCisgICBOdXIgS2FlbXBmZXItQm9uaSBpbiBXYWZmZW4gdW5kIFJ1ZXN0dW5nZW4gKFdhZmZlbnNjaGxhZywgRmludGUpLiAKKyAgIEFsbGUgYW5kZXJlbiBHaWxkZW4sIHouQi4gVW50ZXJzdHVldHp1bmdlbiBmdWVyIFphdWJlcmVyLVNwcnVlY2hlLCAKKyAgIENoYW9za29tcG9uZW50ZW4gdW50ZXJsaWVnZW4gZGVtIHp1c3RhZW5kaWdlbiBHaWxkZW5NYWdpZXIgdW5kIAorICAgZGVyIEdpbGRlbkJhbGFuY2UuCisKKyAgIFNlbGJzdCB1ZWJlciBFaW5zY2hyYWVua3VuZ2VuIGZ1ZXIgR2lsZGVuIGhhYmVuIHdpciBuaWNodCB6dSAKKyAgIGVudHNjaGVpZGVuLiBXZW5uIGVpbiBNYWdpZXIgc2VpbiBPYmpla3QgbnVyIGZ1ZXIgQ2hhb3RlbiBudXR6LQorICAgYmFyIG1hY2hlbiBtb2VjaHRlLCBtYWNodCBlciBkYXMgZWJlbi4gT2RlciB3ZW5uIGVyIFRhbmppYW4gYXVzLQorICAgc2NobGllc3NlbiBtb2VjaHRlIGViZW5mYWxscy4gRGFzIG5lbm50IHNpY2ggZGFubiBQcm9ncmFtbWllci0KKyAgIGZyZWloZWl0LgorCiszKSBXYXMgaXN0IG1pdCBPYmpla3RlbiwgZGllIGtlaW5lIFdhZmZlL1J1ZXN0dW5nIHNpbmQ/CisKKyAgIEhpZXIgdW50ZXJsaWVnZW4gYWxsZSBPYmpla3RlIHVuc2VyZXIgQmVndXRhY2h0dW5nLCBkaWUgaXJnZW5kLQorICAgd2llIGVpbmUga2FtcGZyZWxldmFudGUgQmVkZXV0dW5nIGhhYmVuLiBEYXp1IHphZWhsdDoKKworICAgLSBTY2hhZGVuIHZlcnVyc2FjaGVuIGtvZW5uZW4gKFNhZXVyZWt1Z2VsbikKKyAgIC0gUGFyYWx5c2V0b29scyAoZ3JhdWUgU3RlaW5lKQorICAgLSBCZWdsZWl0LU5wYyAoRWluaG9ybiwgRmV1ZXJlbGVtZW50YXIpCisgICAtIEluZm9ybWF0aW9uZW4gdWViZXIgZWluZ2VoZW5kZSBTY2hhZGVuc3R5cGVuIGdlYmVuCisgICAtIFdhZmZlbi9SdWVzdHVuZ2VuIG1hbmlwdWxpZXJlbiBrb2VubmVuIChHZWlzdGVyaGF1Y2gsIEJsdXRzdHJvcGZlbikKKyAgIC0gSW5mb3JtYXRpb25lbiB1ZWJlciBOcGMsIFJhZXVtZSwgUmVzZXQtWmVpdGVuIHVzdy4gYXVzZ2ViZW4KKyAgIC0gV2VydGUgbWFuaXB1bGllcmVuIChBdHRyaWJ1dGUgb2RlciBHZXNjaHdpbmRpZ2tlaXQgZXJob2VoZW4pCisKKyAgIEVpbiBTb25kZXJmYWxsIHN0ZWxsZW4gaGllciBPYmpla3RlIGRhciwgZGllIHZvbSBUeXAgQVRfTUlTQyBvZGVyCisgICBXVF9NSVNDIHNpbmQuIEZ1ZXIgZGllc2UgZ2lsdDoKKworICAgLSBTaWUgZHVlcmZlbiBrZWluZXJsZWkgcG9zaXRpdmUgVmVyYWVuZGVydW5nZW4gaW0gU3BpZWxlciB2b3ItCisgICAgIG5laG1lbgorICAgLSBTaWUgZHVlcmZlbiBrZWluZXJsZWkga2FtcGZyZWxldmFudGUgQmVkZXV0dW5nIGhhYmVuIChpbSBTaW5uZSAKKyAgICAgdm9uIFNwZWxsLS9Ta2lsbC0vR2VnbmVyLU1hbmlwdWxhdGlvbiwgQXR0cmlidXRzdmVyYWVuZGVydW5nZW4sIAorICAgICBIZWlsdW5nZW4sIEluZm9ybWF0aW9uZW4gdS5hLikgb2RlciBzb25zdHdpZSBlaW5lbiBLYW1wZiBiZS0KKyAgICAgZWluZmx1c3NlbgorICAgLSBTaWUgZHVlcmZlbiB1ZWJlciBrZWluZSBIaXQtIG9kZXIgRGVmZW5kRnVuYyB2ZXJmdWVnZW4uIERpZSBBQyAKKyAgICAgYnp3LiBXQyBzb2xjaGVyIE9iamVrdGUgaXN0IGltbWVyIDAKKworNCkgV29yYXVmIGlzdCBiZXNvbmRlcnMgenUgYWNodGVuPworCisgICBEaWUgR3Jlbnp3ZXJ0ZSBiZWkgV2FmZmVuIHVuZCBSdWVzdHVuZ2VuIHNvbGxlbiBkZW4gZnVlciBkaWVzZW4gCisgICBUeXAgZ2VsdGVuZGVuIFdlcnQgbnVyIGltIHNlbHRlbnN0ZW4gRmFsbCB1ZWJlcnNjaHJlaXRlbi4gRGllcworICAgZ2lsdCBhdWNoIGZ1ZXIgV2VydGUgZWluZXIgRGVmZW5kLSBvZGVyIEhpdEZ1bmMuCisKKyAgIEJvbmkgYXVzIGVpbmVyIERlZmVuZC0gb2RlciBIaXRGdW5jIHNpbmQgSU1NRVIgcGVyIHJhbmRvbSgpIHp1CisgICBnZWJlbiEKKworICAgQmVzb25kZXJzIGd1dGUgT2JqZWt0ZSBoYWJlbiB1ZWJlciBSZXN0cmlrdGlvbmVuIHp1IHZlcmZ1ZWdlbi4KKworICAgQmVzb25kZXJzIGd1dGUgT2JqZWt0ZSBzb2xsdGVuIGF1Y2ggTmFjaHRlaWxlIGhhYmVuLgorCmRpZmYgLS1naXQgYS9kb2MvYmFsYW5jZS9iZWdsZWl0bnBjcyBiL2RvYy9iYWxhbmNlL2JlZ2xlaXRucGNzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmQ4NTU0YTUKLS0tIC9kZXYvbnVsbAorKysgYi9kb2MvYmFsYW5jZS9iZWdsZWl0bnBjcwpAQCAtMCwwICsxLDIyIEBACitCRUdMRUlUTlBDUworLS0tLS0tLS0tLS0KKworTWFuY2hlIE5QQ3MgdW50ZXJzdHVldHplbiBkZW4gU3BpZWxlciBpbSBLYW1wZiB1bmQgbGF1ZmVuIG1pdCBpaG0gbWl0LgorQWxzIFJlZ2VsbiBmdWVyIGRpZXNlIE5QQ3MgaGF0IGRpZSBCYWxhbmNlIGZvbGdlbmRlIFJlZ2VsbiBhdWZnZXN0ZWxsdDoKKworYS4gTlBDcyBfbXVlc3Nlbl8gc2ljaCBpbSBTcGllbGVyIHJlZ2lzdHJpZXJlbi4KK2IuIE1hbiBkYXJmIG51ciBlaW5lbiBLYW1wZmhlbGZlciB6dXIgZ2xlaWNoZW4gWmVpdCBiZXNjaHdvZXJlbiwgYXVzbmFobWVuCitrb2VubmVuIHN0YXRpc2NoZSBOUENzIG5hY2ggQWJzcHJhY2hlIHNlaW4uCitjLiBLZWluIEthbXBmaGVsZmVyIGRhcmYgZWluZSBzdGFlcmtlcmUgUmVzaXN0ZW56IGFscyAtMC41IGhhYmVuCitkLiBJc3QgZWluIEthbXBmaGVsZmVyIGluIGVpbmVyIGJlc3RpbW10ZW4gS2F0aGVnb3JpZSAoQW5ncmlmZiwgdmVydGVpZGlndW5nCisuLi4pIGRldXRsaWNoIGJlc3NlciBhbHMgRHVyY2hzY2huaXR0bGljaGUgR2lsZGVuLU5QQ3MsIG11c3MgZXIgZW50c3ByZWNoZW5kZQorTmFjaHRlaWxlIG1pdGJyaW5nZW4uIERlbmtiYXIgd2FlcmVuIHouQi46IEt1cnplIEhhbHRiYXJrZWl0LCB0ZXVlciBpbiBkZXIKK0Fuc2NoYWZmdW5nLCB0ZXVlciBpbSBVbnRlcmhhbHQsIGthbm4gbmljaHQgYmV0YW5rdC9nZWhlaWx0L2Jld2VndCB3ZXJkZW4sIGhhdAorbnVyIHdlbmlnIExQLCBncm9zc2UgQW5mYWVsbGlna2VpdGVuIHVzdy4KK2UuIEltIE5vcm1hbGZhbGwgc29sbHRlbiBCZWdsZWl0LU5QQ3MgbmljaHQgaW4gVGVhbXMgZWludHJldGVuLiBFaW5lIEF1c25haG1lCitrb2VubnRlIHouQi4gZWluIEJvZ2Vuc2NodWV0emUsIGRlciBzaWNoIGluIGRpZSB6d2VpdGUgUmVpaGUgc3RlbGx0IG9kZXIgZXR3YXMKK2luIGRlciBBcnQgc2Vpbi4gCisKK1p1bSBSZWdpc3RyaWVyZW4gZGVyIE5QQ3Mgc2llaGUgUmVnaXN0ZXJIZWxwZXJOUEMgdW5kIFVucmVnaXN0ZXJIZWxwZXJOUEMuCisKKzIwMTEtMDItMjIsIEh1bW5pCmRpZmYgLS1naXQgYS9kb2MvYmFsYW5jZS9mZXJud2FmZmVuIGIvZG9jL2JhbGFuY2UvZmVybndhZmZlbgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5lMDcwOTg0Ci0tLSAvZGV2L251bGwKKysrIGIvZG9jL2JhbGFuY2UvZmVybndhZmZlbgpAQCAtMCwwICsxLDk0IEBACitNaXQgRmVybndhZmZlbiBzaW5kIHVlYnJpZ2VucyBhdXNuYWhtc2xvcyBXYWZmZW4gZ2VtZWludCwgZGllIE11bml0aW9uIAorYmVub2V0aWdlbiwgbmljaHQgZXR3YSBTcGVlcmUgb2RlciBkZXJnbGVpY2hlbi4gQWxsZSBGZXJud2FmZmVuIHNpbmQgCithdXNuYWhtc2xvcyBnZW5laG1pZ3VuZ3NwZmxpY2h0aWcsIGRhcyBnaWx0IGF1Y2ggZnVlciBqZWdsaWNoZSBNdW5pdGlvbi4gCisgICAgIAorUHJvcGVydGllcyBpbiBGZXJud2FmZmVuIHVuZCBpaHJlIEJlZGV1dHVuZzoKKworICAgICBQX1dDCisgICAgICAgIFZvcnNpY2h0IG1pdCBkaWVzZXIgUHJvcGVydHkuIEJlaSBGZXJud2FmZmVuIGdpYnQgc2llIF9udXJfIGRlbgorICAgICAgICBTY2hhZGVuIGJlaSBad2Vja2VudGZyZW1kdW5nIGRlciBXYWZmZSBhbHMgS251ZXBwZWwgYW4uIAorICAgICAgICBEZW1lbnRzcHJlY2hlbmQgaXN0IGRpZXNlciBXZXJ0IGV4dHJlbSBuaWVkcmlnIHp1IGhhbHRlbi4KKyAgICAgICAgU3RhbmRhcmR3ZXJ0IGlzdCBoaWVyIDMwLCBkZXIgYXVjaCBudXIgaW4gQXVzbmFobWVmYWVsbGVuIAorICAgICAgICB1ZWJlcnNjaHJpdHRlbiB3ZXJkZW4gc29sbHRlLiBLYXVtIGVpbmUgQXJtYnJ1c3Qgb2RlciBlaW4gQm9nZW4gCisgICAgICAgIHRhdWd0IG51bm1hbCBhbHMgZ3Jvc3NhcnRpZ2UgTmFoa2FtcGZ3YWZmZS4KKworICAgICBQX1FVQUxJVFkKKyAgICAgICAgV2lyZCBudXIgYmVpbSBOYWhrYW1wZiBtaXQgZGVyIFdhZmZlIGJlYWNodGV0LiBTdGFuZGFyZG1hZXNzaWcgYXVmCisgICAgICAgIDEwMCBnZXNldHp0LCBkYSBCb2VnZW4gdW5kIEFybWJydWVzdGUgbGVpY2h0IGJlc2NoYWVkaWd0IHdlcmRlbiwKKyAgICAgICAgd2VubiBtYW4gZGFtaXQgYXVmIGplbWFuZGVuIGVpbnBydWVnZWx0LgorCisgICAgIFBfSElUX0ZVTkMgCisgICAgICAgIEhpdEZ1bmMgZnVlciBkZW4gX05haGthbXBmXy4gSGF0IGJlaW0gU2NodXNzIG1pdCBkZXIgV2FmZmUga2VpbmVuCisgICAgICAgIEVpbmZsdXNzLiAKKyAgICAgICAgICAgICAgICAKKyAgICAgUF9OUl9IQU5EUworICAgICAgICBCb2VnZW4gdW5kIEFybWJydWVzdGUgc2luZCBpbiBqZWRlbSBGYWxsIHp3ZWloYWVuZGlnLiBFaW5oYWVuZGlnZQorICAgICAgICBGZXJud2FmZmVuIHNpbmQgYWJlciBkZW5rYmFyIChTY2hsaW5nZW4genVtIFNjaGxldWRlcm4ga2xlaW5lciAKKyAgICAgICAgU3RlaW5lIHouQi4pCisgICAgICAgIAorICAgICBQX1NIT09USU5HX1dDCisgICAgICAgIERpZSBCYXNpcy1XYWZmZW5rbGFzc2UgZGVyIEZlcm53YWZmZS4gWnUgaWhyIHdpcmQgZGllIFdhZmZlbmtsYXNzZQorICAgICAgICBkZXIgTXVuaXRpb24gYWRkaWVydCwgdW0gZGVuIGVuZGd1ZWx0aWdlbiBBbmdyaWZmc3dlcnQgYmVpbSBTY2h1c3MKKyAgICAgICAgenUgYmVyZWNobmVuLgorICAgICAKKyAgICAgUF9SQU5HRSAKKyAgICAgICAgUmVpY2h3ZWl0ZSBkZXIgV2FmZmUgaW4gTWV0ZXJuLiBXaWNodGlnLCB3ZW5uIGF1cyBDb250YWluZXJuIAorICAgICAgICAoV2FjaHR1ZXJtZW4sIFNjaGlmZmVuLCBldGMuKSBuYWNoIGF1c3NlbiBnZXNjaG9zc2VuIHdpcmQuCisgICAgICAgIERhbWl0IGRhcyBmdW5rdGlvbmllcnQsIG11c3MgZGllc2VyIFdlcnQgaG9laGVyIHNlaW4gYWxzIGRlcgorICAgICAgICBpbSBDb250YWluZXIgZGVmaW5pZXJ0ZSAoc3RlaHQgZG9ydCBpbiBkZXIgUF9TSE9PVElOR19BUkVBKS4KKyAgICAKKyAgICAgUF9TVFJFVENIX1RJTUUKKyAgICAgICAgQW56YWhsIGRlciBSdW5kZW4sIGRpZSB6dW0gTGFkZW4vU3Bhbm5lbiBkZXIgV2FmZmUgYmVub2V0aWd0CisgICAgICAgIHdlcmRlbi4gMSBpc3QgaGllciBkZXIgU3RhbmRhcmR3ZXJ0LCBkYXMgYmVkZXV0ZXQsIGVzIGthbm4gamVkZQorICAgICAgICBSdW5kZSBnZXNjaG9zc2VuIHdlcmRlbi4KKyAgICAgCisgICAgIFBfQU1NVU5JVElPTgorICAgICAgICBCZW5vZXRpZ3RlciBNdW5pdGlvbnN0eXAuIEhpZXIgaXN0IGVpbmUgZGVyIG1vZWdsaWNoZW4gS29uc3RhbnRlbgorICAgICAgICAoTVVOXyopIGVpbnp1c2V0emVuICh6LkIuIE1VTl9BUlJPVyBmdWVyIEJvZWdlbikuCisgICAgIAorICAgICBQX05PR0VUCisgICAgICAgIEhhdCBiZWkgRmVybndhZmZlbiBlaW5lIHp1c2FldHpsaWNoZSBCZWRldXR1bmcuIFdlbm4gZ2VzZXR6dCwgbXVzcworICAgICAgICBkaWUgV2FmZmVuIG5pY2h0IGdlenVlY2t0IHdlcmRlbiwgdW0gc2llIGFiZmV1ZXJuIHp1IGtvZW5uZW4uIERhcworICAgICAgICBpc3Qgei5CLiBmdWVyIEthdGFwdWx0ZSBnZWRhY2h0LCBkaWUgaW0gUmF1bSBzdGVoZW4uCisgICAgICAgIAorICAgICBGdWVyIGRpZSBNdW5pdGlvbiBnaWJ0IGVzIGtlaW4gU3RhbmRhcmRvYmpla3QuIFdpY2h0aWcgaXN0IG51ciwgZGFzcyAKKyAgICAgZGllIGVudHNwcmVjaGVuZGVuIFByb3BlcnRpZXMgZ2VzZXR6dCBzaW5kLiBOb3JtYWxlcndlaXNlIHNvbGx0ZSBkaWUgCisgICAgIE11bml0aW9uIG5hdHVlcmxpY2ggZWluZSBVbml0IHNlaW4sIGFiZXIgYXVjaCBFaW56ZWxvYmpla3RlIChlaW4KKyAgICAgYmVzb25kZXJlciBQZmVpbCBvZGVyIGVpbiBncm9zc2VyIFN0ZWluIGZ1ZXIgZWluIEthdGFwdWx0KSBzaW5kIAorICAgICBtb2VnbGljaC4KKworUHJvcGVydGllcyBmdWVyIGRpZSBNdW5pdGlvbiBzaW5kOgorICAgICAKKyAgICAgUF9TSE9PVElOR19XQworICAgICAgICBEaWUgV2FmZmVua2xhc3NlIGRlciBNdW5pdGlvbi4gV2lyZCB6dXIgV0MgZGVyIFdhZmZlIGFkZGllcnQuCisgICAgICAgIAorICAgICBQX0RBTV9UWVBFCisgICAgICAgIFNjaGFkZW5zdHlwIGRlciBNdW5pdGlvbi4gU29sbHRlIG5vcm1hbGVyd2Vpc2UgRFRfUElFUkNFIGZ1ZXIgCisgICAgICAgIFBmZWlsZSBhbGxlciBBcnQgdW5kIERUX0JMVURHRU9OIGZ1ZXIgc3R1bXBmZSBNdW5pdGlvbiB3aWUgU3RlaW5lCisgICAgICAgIHNlaW4uIE1hZ2lzY2hlIFNjaGFkZW5zYXJ0ZW4gc2luZCBhYmVyIG5hdHVlcmxpY2ggbW9lZ2xpY2guCisgICAgICAgIAorICAgICBQX0hJVF9GVU5DCisgICAgICAgIEhpdEZ1bmMsIGRpZSBiZWltIFNjaHVzcyBtaXQgZGVyIE11bml0aW9uIGJlbnV0enQgd2lyZC4KKyAgICAgICAgCisgICAgIEF1c3NlcmRlbSBtdXNzIGluIGRlciBNdW5pdGlvbiBtaXR0ZWxzIEFkZElkKCkgZGVyIGVudHNwcmVjaGVuZGUKKyAgICAgTXVuaXRpb25zdHlwIGdlc2V0enQgd2VyZGVuLCB6LkIuIE1VTl9BUlJPVy4KKworR2VuZWhtaWd1bmdzZ3JlbnplbjoKKy0tLS0tLS0tLS0tLS0tLS0tLS0KKyAgICAgQWxsZSBXYWZmZW4gZGllc2VyIEFydCBzaW5kIGdydW5kc2FldHpsaWNoIGdlbmVobWlndW5nc3BmbGljaHRpZy4KKyAgICAgRm9sZ2VuZGUgV2VydGUgc29sbHRlbiBhbGxlcmRpbmdzIE9iZXJncmVuemVuIGRhcnN0ZWxsZW4sIGRpZQorICAgICBpbSBOb3JtYWxmYWxsIG5pY2h0IHp1IFVlYmVyc2NocmVpdGVuIHNpbmQ6CisgICAgIAorICAgICBXYWZmZSBrYW5uIGplZGUgUnVuZGUgYWJnZWZldWVydCB3ZXJkZW46ICBQX1NIT09USU5HX1dDIDEwMAorICAgICBXYWZmZSBicmF1Y2h0IGVpbmUgTGFkZXplaXQgICAgICAgICAgICA6ICBQX1NIT09USU5HX1dDIDEzMAorICAgICAKKyAgICAgRGllIE9iZXJncmVuemUgZnVlciBNdW5pdGlvbiBsaWVndCBiZWkgOiAgUF9TSE9PVElOR19XQyA2MC4KKworICAgICBWb3JzaWNodGlnIG1pdCBQX1NIT09USU5HX0FSRUEgaW4gUmFldW1lbi9Db250YWluZXJuLiAKKworICAgICBCaXNoZXIgaXN0IGRpZXNlcyBTY2hpZXNzZW4gdm9uIFJhdW0genUgUmF1bSB3ZWl0ZXN0Z2VoZW5kIHVuZ2V0ZXN0ZXQsCisgICAgIHVuZCBlcyBpc3QgbmljaHQga2xhciwgd2VsY2hlIFByb2JsZW1lIGRhcyB2ZXJ1cnNhY2hlbiBrYW5uLiBXZW5uIAorICAgICBldmVudHVlbGxlIFppZWxlIGtlaW5lIE1vZWdsaWNoa2VpdCBoYWJlbiwgc2ljaCB6dSB3ZWhyZW4gb2RlciAKKyAgICAgd2VnenVsYXVmZW4sIGlzdCBzY2huZWxsIGplZ2xpY2hlIEJhbGFuY2UgZGFoaW4uIERpZSBSZWdpb25zbWFnaWVyCisgICAgIGhhYmVuIGJlaSBBYm5haG1lIHZvbiBHZWJpZXRlbiBkYXJhdWYgenUgYWNodGVuLCBkYXNzIGRpZXNlIFByb3BlcnR5CisgICAgIG51ciBpbiB3ZW5pZ2VuLCBndXQgYmVncnVlbmRldGVuIFJhZXVtZW4gZ2VzZXR6dCB3aXJkLgpkaWZmIC0tZ2l0IGEvZG9jL2JhbGFuY2UvZ3Jlbnp3ZXJ0ZSBiL2RvYy9iYWxhbmNlL2dyZW56d2VydGUKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZjJmYzFhNgotLS0gL2Rldi9udWxsCisrKyBiL2RvYy9iYWxhbmNlL2dyZW56d2VydGUKQEAgLTAsMCArMSw1OCBAQAorIEdSRU5aV0VSVEUKKworICAgIFdhZmZlbjoKKyAgIAorICAgICAgRWluaGFlbmRpZ2UgV2FmZmVuICA6ICAgIGFiIFBfV0MgPj0gMTQwCisgICAgICBad2VpaGFlbmRpZ2UgV2FmZmVuIDogICAgYWIgUF9XQyA+PSAxNzUKKworICAgICAgRnVlciBXYWZmZW4gZGllIGVpbmVuIG5pY2h0cGh5c2lrYWxpc2NoZW4gU2NoYWRlbnN0eXAgZW50aGFsdGVuOgorCisgICAgICBFaW5oYWVuZGlnZSBXYWZmZW4gIDogICAgYWIgUF9XQyA+PSAxMjAKKyAgICAgIFp3ZWloYWVuZGlnZSBXYWZmZW4gOiAgICBhYiBQX1dDID49IDE1MAorCisgICAgICBHZW5laG1pZ3VuZ3NwZmxpY2h0aWcgc2luZCBhdWNoIGdlbmVyZWxsIFdhZmZlbiwgZGllIGFscyBTY2hhZGVucy0KKyAgICAgIHR5cCBEVF9URVJST1IsIERUX1NPVU5ELCBEVF9BSVIgb2RlciBEVF9TUVVFRVpFIGVudGhhbHRlbiwgdW5hYmhhZW5naWcKKyAgICAgIHZvbiBkZXIgV0MuCisKKyAgICAgIERlciBTY2hhZGVuc3R5cCBEVF9FWFBMT1NJT04gd2lyZCBuaWNodCBtZWhyIGdlbmVobWlndC4KKworICAgICAgQWxsZSBXYWZmZW4gbWl0IEhpdEZ1bmMgb2RlciBlbnRzcHJlY2hlbmRlciBGdW5rdGlvbiBtdWVzc2VuIGdlbmVobWlndAorICAgICAgd2VyZGVuIChFcyBzZWkgZGVubiBkaWVzZSB3aXJrZW4gbnVyIGJlaSAhaW50ZXJhY3RpdmUoKSBvZGVyIGVyaG9laGVuIAorICAgICAgZGVuIFNjaGFkZW4gbmljaHQpLgorCisgICAgUnVlc3R1bmdlbjoKKworICAgICAgKy0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rCisgICAgICB8IFJ1ZXN0dW5nc3R5cCB8IE1BWF9BQyB8IEdlbmVobWlndW5nc2dyZW56ZSAoaW5rbC4pIHwKKyAgICAgICstLS0tLS0tLS0tLS0tLSstLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKworICAgICAgfCBBVF9BTVVMRVQgICAgfCAgICAyICAgfCAgICAgICAgICAgICAtLSAgICAgICAgICAgICB8CisgICAgICB8IEFUX0FSTU9VUiAgICB8ICAgNTAgICB8ICAgICAgICAgICAgIDM4ICAgICAgICAgICAgIHwKKyAgICAgIHwgQVRfQkVMVCAgICAgIHwgICAgMiAgIHwgICAgICAgICAgICAgLS0gICAgICAgICAgICAgfAorICAgICAgfCBBVF9CT09UICAgICAgfCAgICA2ICAgfCAgICAgICAgICAgICAgNSAgICAgICAgICAgICB8CisgICAgICB8IEFUX0NMT0FLICAgICB8ICAgMTAgICB8ICAgICAgICAgICAgICA4ICAgICAgICAgICAgIHwKKyAgICAgIHwgQVRfR0xPVkUgICAgIHwgICAgNSAgIHwgICAgICAgICAgICAgIDUgICAgICAgICAgICAgfAorICAgICAgfCBBVF9IRUxNRVQgICAgfCAgIDE1ICAgfCAgICAgICAgICAgICAxMyAgICAgICAgICAgICB8CisgICAgICB8IEFUX1FVSVZFUiAgICB8ICAgIDAgICB8ICAgICAgICAgICAgIC0tICAgICAgICAgICAgIHwKKyAgICAgIHwgQVRfUklORyAgICAgIHwgICAgMiAgIHwgICAgICAgICAgICAgLS0gICAgICAgICAgICAgfAorICAgICAgfCBBVF9TSElFTEQgICAgfCAgIDQwICAgfCAgICAgICAgICAgICAyOCAgICAgICAgICAgICB8CisgICAgICB8IEFUX1RST1VTRVJTICB8ICAgMTUgICB8ICAgICAgICAgICAgIDEzICAgICAgICAgICAgIHwKKyAgICAgIHwgQVRfTUlTQyAgICAgIHwgICAgMCAgIHwgICAgICAgICAgICAgLS0gICAgICAgICAgICAgfAorICAgICAgKy0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rCisKKyAgICBSdWVzdHVuZ2VuIG1pdCBEZWZlbmRGdW5jIG8uYWUuIG11ZXNzZW4gZ2VuZXJlbGwgZ2VuZWhtaWd0IHdlcmRlbiAKKyAgICAoc2llaGUgV2FmZmVuKS4KKworICAgIFJ1ZXN0dW5nZW4gdW5kIFdhZmZlbiB2b20gVHlwIEFUX01JU0Mgb2RlciBXVF9NSVNDIGR1ZXJmZW4ga2VpbmVyLQorICAgIGxlaSBwb3NpdGl2ZSBWZXJhZW5kZXJ1bmdlbiBpbSBTcGllbGVyIGhlcnZvcnJ1ZmVuLCBrZWluZSBTdGF0cworICAgIHZlcmFlbmRlcm4gb2RlciBzb25zdHdpZSBrYW1wZnJlbGV2YW50ZSBCZWRldXR1bmcgaGFiZW4uIERpZSBXQy9BQworICAgIHNvbGNoZXIgT2JqZWt0ZSBpc3QgaW1tZXIgMCB1bmQgd2lyZCBhdWNoIG5pY2h0IGFuZGVycyBnZW5laG1pZ3QuCisKKyBTSUVIRSBBVUNICisKKyAgICAgYmFsYW5jZSwgcnVlc3R1bmdlbiwgZmVybndhZmZlbiwgdW5pcXVlcywgbnBjcywgc2NoYWRlbnN0eXBlbgorICAgICBhdHRyaWJ1dHN2ZXJhZW5kZXJ1bmdlbiwgcmVzaXN0ZW56ZW4sIGthbXBmb2JqZWt0ZQorCisKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIExFVFpURSBBZU5ERVJVTkc6CisgICAgRG9uLCAwMy4wMS4wMiwgMTI6MDA6MDAgdm9uIFRpbGx5CmRpZmYgLS1naXQgYS9kb2MvYmFsYW5jZS9rYWVtcGZlcnByb3BlcnRpZXMgYi9kb2MvYmFsYW5jZS9rYWVtcGZlcnByb3BlcnRpZXMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYTdlZDI3MQotLS0gL2Rldi9udWxsCisrKyBiL2RvYy9iYWxhbmNlL2thZW1wZmVycHJvcGVydGllcwpAQCAtMCwwICsxLDkgQEAKK1Byb3BlcnRpZXMgaW4gV2FmZmVuIGZ1ZXIgVHJ2ZXMgdW5kIGlocmUgSG9lY2hzdHdlcnRlOgorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworS19USFJPV0lOR19XRUFQT04gICAgICAgICBXYWZmZW53dXJmICAgICAgICAgICAgPT0+IE1heDogIDUwCitLX0JSQVdMSU5HX1dDICAgICAgICAgICAgIFdhZmZlbnNjaGxhZyAgICAgICAgICA9PT4gTWF4OiAgMzAKK0tfV0VBUE9OX1NIQVRURVIgICAgICAgICAgV2FmZmVuYnJ1Y2ggICAgICAgICAgID09PiBNYXg6ICA1MAorS19ESVNUUkFDVElOR19XRUFQT04gICAgICBGaW50ZSAvIFdhZmZlbnRyaWNrICAgPT0+IE1heDogIDUwCitLX0NSSVRJQ0FMX0hJVCAgICAgICAgICAgIFRvZGVzc3Rvc3MgICAgICAgICAgICA9PT4gTWF4OiAxMDAKKwpkaWZmIC0tZ2l0IGEvZG9jL2JhbGFuY2Uva2FlbXBmZXJ3YWZmZW4gYi9kb2MvYmFsYW5jZS9rYWVtcGZlcndhZmZlbgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4wNjY2MzE2Ci0tLSAvZGV2L251bGwKKysrIGIvZG9jL2JhbGFuY2Uva2FlbXBmZXJ3YWZmZW4KQEAgLTAsMCArMSwxNDMgQEAKKworICAgICAgU3BlemlhbC1XYWZmZW4gZnVlciBkaWUgS2FlbXBmZXJnaWxkZQorICAgICAgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKK0Z1ZXIgZGllIFdhZmZlbiBiencuIFJ1ZXN0dW5nZW4gbXVzcyAvcC9rYWVtcGZlci9rYW1wZi5oIGluY2x1ZGV0IHdlcmRlbi4KKyAgCisgIAorCitadWVyc3QgZWlubWFsIHdhcyB1ZWJlciBkZW4gV2VhcG9uLVR5cGUuIFp1bSBodW5kZXJ0ZXN0ZW4gbWFsZSBkZXIgSGlud2VpcywKK2Rhc3MgZXMgbmljaHQgbnVyIFNjaHdlcnRlciBnaWJ0ISBPYndvaGwgZGllIEthZW1wZmVyIGplZGUgYmVsaWViaWdlCitXYWZmZSBiZW51dHplbiBrb2VubmVuLCBnaWJ0IGVzIGRvY2gsIGplIG5hY2ggUmFzc2UsIHNlaHIgZ3Jvc3NlIFVudGVyLQorc2NoaWVkZS4gTnVyIHVtIGVpbiBCZWlzcGllbCB6dSBuZW5uZToKK0VpbiBIb2JiaXQsIGRlciBhbGxlIFdlcnRlIGF1ZiAxMDAlIGhhdCwgaGF0IG1pdCBkZW0gS25vY2hlbnNjaGFlbG1lc3NlcgorKFdDIDE0NSkgZWluZW4gaG9laGVyZW4gQW5ncmlmZnN3ZXJ0IGFscyBtaXQgZWluZXIgTGFuemUgKFdDIDIwMCkhISEKKworCisxKSBQYXJpZXJ3YWZmZW4KKworICBQYXJpZXJ3YWZmZW4gZWlnZW5lbiBzaWNoIHZvciBhbGxlbSB6dW0gUGFyaWVyZW4sIHdpZSB6LkIuIGRlciBTYWkuCisgIERhIG1hbiBtaXQgc29sY2hlbiBXYWZmZW4gb2Z0IGF1Y2ggZGllIGdlZ25lcmlzY2hlIFdhZmZlIGZlc3RoYWx0ZW4KKyAga2FubiwgZ2lsdCBkZXIgQm9udXMgYXVjaCBmdWVyIGRlbiBCbG9jay4gUGFyaWVyd2FmZmVuIGhhYmVuIG1laXN0ZW5zCisgIGVpbmUgbmljaHQgc28gaG9oZSBXQy4KKyAgRXMgd2lyZCBkaWUgUHJvcGVydHkgUF9FRkZFQ1RJVkVfQUMgZ2VzZXR6dC4KKyAgTm9ybWFsZSBXYWZmZW4sIGRpZSB6dXNhZXR6bGljaCB6dW0gUGFyaWVyZW4gZ2VlaWduZXQgc2luZDoKKyAgICBQX0VGRkVDVElWRV9BQzogMSAtIDE1CisgIFJlaW5lIFBhcmllcndhZmZlbiBtaXQgbmllZHJpZ2VyIFdDOgorICAgIFBfRUZGRUNUSVZFX0FDOiAyMCAtIDMwCisgIAorMikgV3VyZndhZmZlbgorCisgIFd1cmZ3YWZmZW4gc2luZCBzcGVjaWVsbCBhdXNiYWxhbnppZXJ0LCBiZXNpdHplbiBtZWlzdCBrZWluZW4gcmljaHRpZ2VuCisgIEdyaWZmIGV0Yy4gQXVzIGRpZXNlbSBHcnVuZGUgc29sbHRlIGlocmUgV0MgbmljaHQgenUgaG9jaCBzZWluLgorICBFcyB3aXJkIEtfVEhST1dJTkdfV0VBUE9OIGdlc2V0enQuIERlciBXZXJ0IHNvbGx0ZSB6d2lzY2hlbiAxLTUwIAorICBsaWVnZW4sIHdvYmVpIHdpcmtsaWNoIG51ciBzZWhyIGd1dGUgV3VyZndhZmZlbiBtaXQgbmllZHJpZ2VyZXIKKyAgV0MgV2VydGUgendpc2NoZW4gMzUgLSA1MCBoYWJlbiBzb2xsdGVuLgorICAKKzMpIFdhZmZlbiBtaXQgdW5nZXdvZWhuaWNoZW4gQW5ncmlmZnNtb2VnbGljaGtlaXRlbgorCisgIE1hbiBrYW5uIGFuIFdhZmZlbiBhdWNoIGFuIHVuZ2V3b2VobmxpY2hlciBTdGVsbGUgenVzYWV0emxpY2hlCisgIEFuZ3JpZmZzbW9lZ2xpY2hrZWl0ZW4gYW5iYXVlbi4gU28ga29lbm50ZSB6LkIuIGRpZSBQYXJpZXJzdGFuZ2UKKyAgYmVpIGVpbmVtIFNjaHdlcnQgYXVzIEtsaW5nZW4gYmVzdGVoZW4sIG9kZXIgZGFzIEVuZGUgZGVzIFN0aWVscworICBiZWkgZWluZXIgQXh0IGluIGVpbmVtIERvcm4gZW5kZW4uIEJlaW0gV2FmZmVuc2NobGFnIHdpcmQgbWl0CisgIGRpZXNlbiBFeHRyYXdhZmZlbiBnZWFyYmVpdGV0LiBEaWVzZSBCZXNvbmRlcmhlaXRlbiAoS2xpbmdlIGFtIAorICBQb21tZWwgZGVzIEdyaWZmcywgZXRjKSBzb2xsdGVuIG5hdHVlcmxpY2ggYXVjaCBpbiBQX0xPTkcKKyAgZXJ3YWVobnQgd2VyZGVuLCBzY2hsaWVzc2xpY2ggc2luZCBzaWUgamEgbWl0IGJsb3NzZW0gQXVnZQorICB6dSBlcmtlbm5lbi4KKyAgUHJvcGVydHk6IEtfQlJBV0xJTkdfV0MgbWl0IFdlcnRlbiB6d2lzY2hlbiAxIC0gMzAKKyAgV2VpdGVyaGluIGJlc3RlaHQgZGllIE1vZWdsaWNoa2VpdCBkaWVzZXIgenVzYWV0emxpY2hlbiBBbmdyaWZmcy0KKyAgbW9lZ2xpY2hrZWl0IGVpbmVuIGVpZ2VuZW4gU2NoYWRlbnN0eXAgenUgZ2ViZW4uIERhenUgc2V0enQgbWFuCisgIGRpZSBQcm9wZXJ0eSBLX0JSQVdMSU5HX0RUIChhbmFsb2cgenUgUF9EQU1fVFlQRSkuCisKKzQpIFdhZmZlbiwgZGllIGFuZGVyZSBXYWZmZW4gemVyc3RvZXJlbiBzb2xsZW4KKyAgCisgIEFscyBLYWVtcGZlciBrYW5uIG1hbiB2ZXJzdWNoZW4sIGRpZSBXYWZmZSBkZXMgR2VnbmVycyB6dSBiZXNjaGFlZGlnZW4uCisgIERhZnVlciBlaWduZW4gc2ljaCBuYXR1ZXJsaWNoIGJlc29uZGVycyBzY2h3ZXJlIFdhZmZlbiwgdm9yIGFsbGVtCisgIHouQi4gSGFlbW1lci4gTWFuIGtvZW5udGUgbmF0dWVybGljaCBXYWZmZW4ga29uc3RydWllcmVuLCBkaWUgYmVzb25kZXJzCisgIGRhZnVlciBnZWVpZ25ldCBzaW5kLiBEYWZ1ZXIgd2lyZCBLX1dFQVBPTl9TSEFUVEVSIGdlc2V0enQuCisgIERlciBXZXJ0IHNvbGx0ZSB6d2lzY2hlbiAxIC0gNTAgbGllZ2VuLgorICAKKzUpIFdhZmZlbiwgZGllIGJlc29uZGVycyBndXQgZnVlciBkZW4gS08tU2NobGFnIHNpbmQKKyAgCisgIERlciBLYWVtcGZlciBrYW5uIHZlcnN1Y2hlbiBlaW5lbiBHZWduZXIgenUgYmV0YWV1YmVuLiBEaWVzIGdlc2NoaWVkCisgIGluIGRlciBSZWdlbCBkdXJjaCBlaW5lbiBTY2hsYWcgYXVmIGRlbiBLb3BmLiBKZSBob2VoZXIgZGFzIEdld2ljaHQKKyAgZGVyIFdhZmZlLCBkZXN0byBiZXNzZXIuIEVzIGdpYnQgbmF0dWVybGljaCBXYWZmZW4sIGRpZSBkYWZ1ZXIgYmVzb25kZXJzCisgIGdlZWlnbmV0IHNpbmQgKHouQiBUb2RzdHNjaGxhZWdlcikuIERhbm4gd2lyZCBLX0tPIGFscyBQcm9wZXJ0eSBnZXNldHp0LgorICBEZXIgV2VydCBzb2xsdGUgendpc2NoZW4gMSAtIDUwIGxpZWdlbi4gCisgCis2KSBXYWZmZW4sIGRpZSBkZW4gR2VnbmVyIGJlc29uZGVycyBndXQgYWJsZW5rZW4ga29lbm5lbgorICAKKyAgRXMgZ2lidCBuYXR1ZXJsaWNoIFdhZmZlbiwgZGllIGRlbiBHZWduZXIgbGVpY2h0IGFibGVua2VuIGtvZW5uZW4uCisgIERpZXMgaXN0IGZ1ZXIgRmludGVuIHVuZCBkZW4gV2FmZmVudHJpY2sgc2VociBudWV0emxpY2guIEVpbmUgc29sY2hlCisgIFdhZmZlIGlzdCB6LkIuIGRlciBzaW5nZW5kZSBTcGVlciwgZGVyIGRlbiBHZWduZXIgKHVuZCBkZW4gVHJhZWdlcikKKyAgZnVlcmNodGVybGljaCBuZXJ2dC4gR2VzZXR6dCB3aXJkIEtfRElTVFJBQ1RJTkdfV0VBUE9OLCB3b2JlaQorICBkZXIgV2VydCB6d2lzY2hlbiAxIC0gNTAgbGllZ2VuIHNvbGx0ZS4KKyAKKzcpIFdhZmZlbiwgZGllIGJlaW0gVG9kZXNzdG9zcyBiZXNvbmRlcnMgZWZmZWt0aXYgc2luZAorCisgIE1hbiBrYW5uIHNpY2ggV2FmZmVuIHZvcnN0ZWxsZW4sIGRpZSBzcGV6aWVsbCBmdWVyIGRlbiBUb2Rlc3N0b3NzCisgIGdlZWlnbmV0IHNpbmQuIFZvciBhbGxlbSBtYWdpc2NoZSBXYWZmZW4sIGRpZSB6LkIuIGRpZSBTZWVsZSBhdXMgZGVtCisgIGdlc2Nod2FlY2h0ZW4gS29lcnBlciBkZXMgR2VnbmVycyByZWlzc2VuLCBzaW5kIHZvcnN0ZWxsYmFyLiBPZGVyCisgIFdhZmZlbiBtaXQgYmVzb25kZXJzIGxhbmdlbiwgc3BpdHplbiB1bmQgZHVlbm5lbiBLbGluZ2VuLCBkaWUgc2ljaAorICB0aWVmIGluIGRlbiBHZWduZXIgYm9ocmVuLiBFcyB3aXJkIEtfQ1JJVElDQUxfSElUIGdlc2V0enQsIGRlcgorICBXZXJ0IGxpZWd0IHp3aXNjaGVuIDEgdW5kIDEwMCwgd29iZWkgMTAwIGVpbmUgVmVyZG9wcGx1bmcgZGVzIAorICBTY2hhZGVucyBlcmdpYnQhISEgQWxzbyB3aXJrbGljaCBzZWhyIHZvcnNpY2h0aWcgdmVyd2VuZGVuISEhISEKKworCis4KSBTY2hpbGRlIGZ1ZXIgZGVuIFNjaGlsZHN0b3NzCisKKyAgSXN0IGVpbiBTY2hpbGQgZXh0cmEgZnVlciBkZW4gU2NoaWxkc3Rvc3MgYW5nZWZlcnRpZ3QgKGhhdCBlcyB6LkIuIGVpbmVuCisgIERvcm4gbW9udGllcnQsIG1pdCBkZW0gbWFuIGdlZmFlaHJsaWNoIGRlbiBHZWduZXIgcmFtbWVuIGthbm4pIHNvCisgIGthbm4gaW0gU2NoaWxkIFBfRUZGRUNUSVZFX1dDIGdlc2V0enQgd2VyZGVuLiBBdXNzZXJkZW0gaXN0IGVzIG1vZWdsaWNoCisgIGVpbmVuIGJlc3RpbW10ZW4gU2NoYWRlbnN0eXAgbWl0IFBfREFNX1RZUEUgYW56dWdlYmVuIChGZXVlcnNjaGlsZCkuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAorOSkgU3BlY2lhbC1SdWVzdHVuZ2VuCisKKyAgRm9sZ2VuZGUgUnVlc3R1bmdzdHlwZW4ga29lbm5lbiBmdWVyIGRpZSBLYWVtcGZlciBtb2RpZml6aWVydCB3ZXJkZW46CisgIEFUX1RST1VTRVJTOyBBVF9IRUxNRVQ7IEFUX0FSTU9VUjsgQVRfQk9PVC4gRGFiZWkgc2luZCBkcmVpIHZlcnNjaGllZGVuZQorICBTYWNoZW4gbW9lZ2xpY2guIAorICBhKSBQX0VGRkVDVElWRV9BQyB3aXJkIGdlc2V0enQsIHdlbm4gZGllIFJ1ZXN0dW5nIGR1cmNoIGJlc29uZGVyZQorICAgICBEZWZlbmRGdW5jJ3MgZWluZW4gaG9laGVyZW4gU2NodXR6IGFscyBkaWUgQUMgbWFjaHQKKyAgYikgRGllIFJ1ZXN0dW5nIHNvbGwgYXVjaCBhbHMgV2FmZmUgenUgdmVyd2VuZGVuIHNlaW4gKFN0aWVmZWwgYmVpbQorICAgICBLYW1wZnRyaXR0LCBIb3NlIGJlaW0gS25pZXN0b3NzLCBIZWxtIGJlaW0gS29wZnN0b3NzIHVuZCBSdWVzdHVuZworICAgICBiZWltIEVsbGJvZ2Vuc2NobGFnKS4gei5CLiB3YWVyZW4gRG9ybmVuIGFuIGRlbiBTdGllZmVsbiBkZW5rYmFyLgorICAgICBEYWR1cmNoIHdlcmRlbiBkaWUgU3RpZWZlbCBqYSBuaWNodCBhbHMgU2NodXR6IGJlc3NlciwgYWJlciBhbHMKKyAgICAgV2FmZmUuIERlc2hhbGIgUF9FRkZFQ1RJVkVfV0Mgc2V0emVuLiBEZW4gV2VydCBuaWNodCBob2VoZXIgYWxzCisgICAgIGRvcHBlbHRlIEFDLgorICAgICBbQm9pbmc6XQorICAgICBXZW5uIG1hbiBkZXIgUnVlc3R1bmcgd2lya2xpY2ggZWluZW4gQXR0YWNrZWJvbnVzIGdlYmVuIG1vZWNodGUsCisgICAgIGRhbm4gbXVzcyBQX0VGRkVDVElWRV9XQyBob2VoZXIgc2VpbiwgYWxzIFBfQUMgZGVyIFJ1ZXN0dW5nIQorICAgICBEYSBpbSBGYWxsZSwgd2VubiBQX0VGRkVDVElWRV9XQyBuaWNodCBnZXNldHp0IGlzdCwgUF9BQyBhbHMKKyAgICAgQW5ncmlmZnN3ZXJ0IGdlbm9tbWVuIHdpcmQsIHdhZXJlIGRhcyBhbnNvbnN0ZW4gZWluZSBTY2h3YWVjaHVuZyEKKyAgICAgRGFzIGthbm4gbWFuIG5hdHVlcmxpY2ggZ2V6aWVsdCBlaW5zZXR6ZW4sIHdlbm4gbWFuIGVpbmUgUnVlc3R1bmcKKyAgICAgbWFjaGVuIHdpbGwsIGRpZSBzZWhyIGd1dCBzY2h1ZXR6dCwgYWJlciBudXIgZ2VyaW5nZSBLYWVtcGZlcmJvbmkKKyAgICAgYXVmd2Vpc3QuIAorICAgICBCZWlzcGllbDogCisgICAgICAgIFJ1ZXN0dW5nIG1pdCBhYyA0MCB1bmQga2VpbmVyIGVmZl93YzogYW5ncmlmZnN3ZXJ0IGlzdCA0MAorICAgICAgICBSdWVzdHVuZyBtaXQgYWMgNDAgdW5kIGVmZl93YyAyMDogICAgIGFuZ3JpZmZzd2VydCBpc3QgMjAKKyAgICAgICAgUnVlc3R1bmcgbWl0IGFjIDQwIHVuZCBlZmZfd2VjIDYwOiAgICBhbmdyaWZmc3dlcnQgaXN0IDYwCisgIGMpIERpZSBSdWVzdHVuZyBtYWNodCBlaW5lbiBiZXNvbmRlcmVuIFNjaGFkZW5zdHlwLiB6LkIuIEZsYW1tZW5zdGllZmVsLAorICAgICBkaWUgYmVpbSBLYW1wZnRyaXR0IERUX0ZJUkUgdW5kIERUX0JMVURHRU9OIG1hY2hlbiwgb2RlciBIb3NlbgorICAgICBtaXQgU3Bpa2VzIGFuIGRlbiBLbmllbiAtPiBEVF9QSUVSQ0UuIEVzIHNvbGx0ZSBpbW1lciBlaW4KKyAgICAgcGh5c2lrYWxpc2NoZXIgU2NoYWRlbiB2b3JoYW5kZW4gc2Vpbi4gWnVzYWV0emxpY2ggd2FlcmUgamVkZXIKKyAgICAgbWFnaXNjaGUgU2NoYWRlbiBkZW5rYmFyLCBkZXIgUGhhbnRhc2llIHNpbmQga2VpbmUgR3JlbnplbiBnZXNldHp0LgorICAgICBOYXR1ZXJsaWNoIHNvbGx0ZW4gc29sY2hlIFNwZWNpYWxzYWNoZW4gYXVjaCBpbiBQX0xPTkcgZGVyIFJ1ZXN0dW5nCisgICAgIGF1ZnRhdWNoZW4uIERpZSBLYWVtcGZlciBoYWJlbiBhYmVyIGRpZSBNb2VnbGljaGtlaXQgUnVlc3R1bmdlbgorICAgICBlaW56dXNjaGFldHplbiB1bmQgc293YXMgenUgZW50ZGVja2VuLgorICAgICAKKworCisgIEJpdHRlIGFsbGUgZnVlciBkaWUgS2FlbXBmZXIgZ2VhZW5kZXJ0ZW4gV2FmZmVuIHVuZCBSdWVzdHVuZ2VuCisgIGJlaSBtaXIgYWJzZWduZW4gbGFzc2VuLCBpY2ggbW9lY2h0ZSBkZW4gVWViZXJibGljayBuaWNodCB2ZXJsaWVyZW4gOikpCisgIEF1c3NlcmRlbSBzb2xsdGVuIGRpZSBXZXJ0ZSBuaWNodCBnbGVpY2ggenUgaG9jaCBnZXdhZWhsdCB3ZXJkZW4uCisgIERpZSBNYXhpbWFsd2VydGUgc29sbHRlbiBzbyBndXQgd2llIG5pZSB2ZXJnZWJlbiB3ZXJkZW4uIAorICBWb3JzaWNodCEhISBXZXJkZW4gZGllIFdlcnRlIHVlYmVyIGRpZSBHcmVuemVuIGVyaG9laHQsIHdpcmQgZWluIAorICBLYWVtcGZlciBtaXQgc28gZWluZXIgV2FmZmUgdmllbCB6dSBzdGFyay4gQmlzIGpldHp0IGhhYiBpY2ggbm9jaCBrZWluZQorICBTaWNoZXJoZWl0c2Z1bmt0aW9uIGVpbmdlYmF1dCwgd2FzIHNpY2ggYWJlciBhZW5kZXJuIHdpcmQsIHdlbm4gCisgIGVzIGplbWFuZCB1ZWJlcnRyZWlidCA6KSkKKyAgW0JvaW5nOl0gTGVpZGVyIHd1cmRlIGVzIHVlYmVydHJpZWJlbiwgYWxzbyBpc3QgamV0enQgZWluZSBTaWNoZXJoZWl0cy0KKyAgZnVua3Rpb24gZHJpbi4KKworCitDaWFvIFphcmRvegorICAgICAKZGlmZiAtLWdpdCBhL2RvYy9iYWxhbmNlL2thbXBmb2JqZWt0ZSBiL2RvYy9iYWxhbmNlL2thbXBmb2JqZWt0ZQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5lMzE3OTNkCi0tLSAvZGV2L251bGwKKysrIGIvZG9jL2JhbGFuY2Uva2FtcGZvYmpla3RlCkBAIC0wLDAgKzEsMzEgQEAKKyAgICBIaWVyenUgemFlaGxlbiBhbGxlIFNhY2hlbiwgZGllIGlyZ2VuZGVpbmVuIEVpbmZsdXNzIGF1ZiBkZW4gS2FtcGYgbmVobWVuCisgICAgdW5kIHdlZGVyIGAvc3RkL3dlYXBvbi5jJyBub2NoIGAvc3RkL2FybW91ci5jJyBzaW5kLiBBbHNvIGRpZSBzb2dlbmFubnRlCisgICAgQXJ0aWxsZXJpZSwgRWlzc3RhYiB1bmQgYXJ0dmVyd2FuZHRlcywgV3VyZnN0ZXJuZSwgUGFyYXN0ZWluZSwgQnVtaSB1bmQKKyAgICB1bnRlcnN0dWV0emVuZGUgTlBDLgorCisgICAgUHJpbnppcGllbGwgc2luZCBhbGxlIGRpZXNlIFNhY2hlbiBnZW5laG1pZ3VuZ3NwZmxpY2h0aWcuCisgICAgCisgICAgQXV0by1TZWxic3RmYWhyZXIsIGFsc28gU2FjaGVuLCBkaWUgb2huZSBFaW5ncmlmZiBkZXMgU3BpZWxlcnMgYWdpZXJlbiwKKyAgICBzaW5kIHVuZXJ3dWVuc2NodCB1bmQgc29sbHRlbiB2ZXJtaWVkZW4gd2VyZGVuLiBTb3JyeSBmdWVyIGRpZQorICAgIExhZ2dlcGxhZ3Rlbi4uLgorCisgICAgS2FtcGZvYmpla3RlIHNvbGx0ZW4gUF9BVFRBQ0tfQlVTWSBzZXR6ZW4gdW5kIGF1Y2ggdm9yIGRlciBBbndlbmR1bmcKKyAgICBhYmZyYWdlbiwgZGFtaXQgc2llIG5pY2h0IHVuYmVncmVuenQgaGludGVyZWluYW5kZXIgZ2VudXR6dCB3ZXJkZW4KKyAgICBrb2VubmVuLiBNYWdpc2NoZSBTYWNoZW4gc29sbHRlbiBlbnR3ZWRlciBhdWZnZWxhZGVuIHdlcmRlbiBtdWVzc2VuIG9kZXIKKyAgICBpaHJlIG1hZ2lzY2hlIEVuZXJnaWUgdmVybGllcmVuLCBkYW1pdCBzaWUgbmljaHQgdW5lbmRsaWNoIGhhbHRiYXIgc2luZC4KKyAgICBBdXNzZXJkZW0gaGF0IE1hZ2llIG5vcm1hbGVyd2Vpc2UgYXVjaCB1bmVyd3VlbnNjaHRlIE5lYmVud2lya3VuZ2VuLiBEaWUKKyAgICBTcGllbGVyIHNvbGxlbiBkaWUgbW9lZ2xpY2hlbiBWb3J0ZWlsZSBnZWdlbiBOYWNodGVpbGUgb2RlciBOZWJlbndpcmt1bmdlbgorICAgIGRlcyBHZWdlbnN0YW5kcyBhYndhZWdlbi4gQXVjaCBiZWkgZGllc2VuIE9iamVrdGVuICptdXNzKiBQX0lORk8gZ2VzZXR6dAorICAgIHdlcmRlbiwgdW0gZWluZSBCZWdydWVuZHVuZyBmdWVyIGRpZSBiZXNvbmRlcmUgV2lya3VuZyB1bmQgei5CLiBlaW5lbgorICAgIEhpbndlaXMgYXVmIGRpZSBCZW51dHp1bmcgenUgbGllZmVybi4KKyAgICAKKyAgICBTaWUgc29sbHRlbiBrZWluZXNmYWxscyBrYWV1ZmxpY2ggZXJ3b3JiZW4gd2VyZGVuIGtvZW5uZW4uCisKKyAgICBPYmpla3RlLCBkaWUgQXVza3VuZnQgdWViZXIgZWluLSB1bmQvb2RlciBhdXNnZWhlbmRlIFNjaGFlZGVuIGdlYmVuLCAKKyAgICBzaW5kIGdlbmVobWlndW5nc3BmbGljaHRpZy4gU29sY2hlIE9iamVrdGUgc29sbHRlbiBuYWNoIE1vZWdsaWNoa2VpdAorICAgIGVpbmUgV2FmZmUgb2RlciBLbGVpZHVuZ3NzdHVlY2sgLSBkaWVzIGplZG9jaCBuaWNodCBBVF9NSVNDIC0gc2Vpbi4KKyAgICBEYXNzIHNvbGNoZSBPYmpla3RlIGF1Y2ggdWViZXIgTHVlY2tlbiBpbiBkZXIgQW5nYWJlIGRlciBTY2hhZWRlbiB1bmQKKyAgICBOYWNodGVpbGUgdmVyZnVlZ2VuIHNvbGx0ZW4sIGlzdCBlaWdlbnRsaWNoIGtsYXIuIAorICAgIFNvbGNoZSBOYWNodGVpbGUgbGllc3NlbiBzaWNoIHVlYmVyIGVpbmUgTWluZGVzdC1TY2hhZGVuc2hvZWhlIG9kZXIKKyAgICByYW5kb20gcmVhbGlzaWVyZW4uIEluZm9ybWF0aW9uZW4gdWViZXIgbWVocmVyZSBTY2hhZGVuc3R5cGVuIGR1cmNoIAorICAgIGVpbiB1bmQgZGFzIHNlbGJlIE9iamVrdCBzaW5kIG5pY2h0IGVyd3VlbnNjaHQuCmRpZmYgLS1naXQgYS9kb2MvYmFsYW5jZS9tb2RpZnlza2lsbGF0dHJpYnV0ZSBiL2RvYy9iYWxhbmNlL21vZGlmeXNraWxsYXR0cmlidXRlCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmUwNzI3OTEKLS0tIC9kZXYvbnVsbAorKysgYi9kb2MvYmFsYW5jZS9tb2RpZnlza2lsbGF0dHJpYnV0ZQpAQCAtMCwwICsxLDEwMCBAQAorTW9kaWZ5U2tpbGxBdHRyaWJ1dGUoKQorCitGVU5LVElPTjoKKyAgICBwdWJsaWMgaW50IE1vZGlmeVNraWxsQXR0cmlidXRlKHN0cmluZyBhdHJuYW1lLCBtaXhlZCB2YWx1ZSwgCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgZHVyYXRpb24pCisKK0RFRklOSUVSVCBJTjoKKyAgICAvc3RkL2xpdmluZy9za2lsbF9hdHRyaWJ1dGVzLmMKKworQVJHVU1FTlRFOgorICAgIDxhdHJuYW1lPiAgIHN0cmluZworICAgICAgICAgICAgICAgIE5hbWUgZGVzIHp1IHZlcmFlbmRlcm5kZW4gQXR0cmlidXRlcworICAgICAgICAgICAgICAgIChEZWZpbmllcnQgaW4gL3N5cy9saXZpbmcvc2tpbGxfYXR0cmlidXRlcy5oKQorCisgICAgPHZhbHVlPiAgICAgaW50IG9kZXIgY2xvc3VyZQorICAgICAgICAgICAgICAgIFdlcnQgZGVzIE1vZGlmaWthdG9ycworICAgICAgICAgICAgICAgIG9kZXIKKyAgICAgICAgICAgICAgICBlaW5lIENsb3N1cmUsIHdlbGNoZSBiZWkgQWJmcmFnZSBkZXMgYmV0cmVmZmVuZGVuIFNBcworICAgICAgICAgICAgICAgIGFiZ2VmcmFndCB1bSBkZW4gTW9kaWZpa2F0b3IgenUgYmVzdGltbWVuLgorCisgICAgPGR1cmF0aW9uPiAgaW50CisgICAgICAgICAgICAgICAgRGF1ZXIgaW4gU2VrdW5kZW4KKworQkVTQ0hSRUlCVU5HOgorICAgIEFlbmRlcnQgdGVtcG9yYWVyLCBkLmguIGZ1ZXIgZWluZSBiZXN0aW1tdGUgWmVpdCwgZWluIFNraWxsLUF0dHJpYnV0IGVpbmVzCisgICAgTGViZXdlc2VuLCBpbmRlbSBlaW4gTW9kaWZpa2F0b3IgaGluenVnZWZ1ZWd0IHdpcmQuCisgICAgCisgICAgRGVyIFN0YW5kYXJkd2VydCBlaW5lcyBTQSB3aXJkIHZvbiBQX1NLSUxMX0FUVFJJQlVURV9PRkZTRVRTIGZlc3RnZWxlZ3QKKyAgICBvZGVyIGlzdCAxMDAsIHdlbm4gYmVzYWd0ZSBQcm9wZXJ0eSBsZWVyIGlzdC4KKyAgICBBbGxlIE1vZGlmaWthdG9yZW4gKG5lZ2F0aXYgd2llIHBvc2l0aXYpIHdlcmRlbiBhZGRpZXJ0IHVuZCBiaWxkZW4KKyAgICB6dXNhbW1lbiBtaXQgZGVtIFN0YW5kYXJkd2VydCBlaW5lIEdlc2FtdHN1bW1lLgorICAgIEJlaSBhbGxlbiBTQXMgYXVzc2VyIFNBX1FVQUxJVFkgd2lyZCBkaWVzZSBHZXNhbXRzdW1tZSBub2NoIG1pdAorICAgIFNBX1FVQUxJVFkgKHdlbGNoZXMgc2ljaCBkYW1pdCBhdWYgYWxsZSBhbmRlcmVuIFNraWxsLUF0dHJpYnV0ZSBhdXN3aXJrdCkKKyAgICBtdWx0aXBsaXppZXJ0IHVuZCBkYXMgRXJnZWJuaXMgc3RlbGx0IGRlbiBFbmR3ZXJ0IGRlcyBTQSBkYXIuCisgICAgKEJlaXNwaWVsIHMudS4pCisKKyAgICBEZXIgV2VydCBlaW5lcyBNb2RpZmlrYXRvcnMgbXVzcyB6d2lzY2hlbiAtMTAwMCB1bmQgMTAwMCBsaWVnZW4uIERlcgorICAgIEdlc2FtdHdlcnQgZWluZXMgU0Ega2FubiAxMCBuaWNodCB1bnRlci0gdW5kIDEwMDAgbmljaHQgdWViZXJzY2hyZWl0ZW4uCisKKyAgICBGYWxsZSA8dmFsdWU+IGVpbmUgQ2xvc3VyZSBpc3QsIHdpcmQgZGllc2UgQ2xvc3VyZSBqZWRlc21hbCBhdXNnZWZ1ZWhydCwKKyAgICB3ZW5uIGRhcyBlbnRzcHJlY2hlbmRlIFNBIGFiZ2VmcmFndCB3aXJkLiBEZXIgUnVlY2tnYWJld2VydCBkaWVzZXIgQ2xvc3VyZQorICAgIHN0ZWxsdCBkYW5uIGRlbiBXZXJ0IGRlcyBNb2RpZmlrYXRvcnMgZGFyLiBBdWNoIGRpZXNlciBtdXNzIHp3aXNjaGVuIC0xMDAwCisgICAgdW5kIDEwMDAgbGllZ2VuLiBHaWJ0IGRpZSBDbG9zdXJlIGtlaW5lbiBpbnQgenVydWVjaywgd2lyZCBkZXIgTW9kaWZpa2F0b3IKKyAgICBnZWxvZXNjaHQuCisKKyAgICBHdWVsdGlnZSBTa2lsbC1BdHRyaWJ1dGUgc2luZCBtb21lbnRhbjoKKyAgICAqIFNBX1FVQUxJVFk6ICBBbGxnZW1laW5lIFF1YWxpdGFldAorICAgICogU0FfREFNQUdFOiAgIFNjaGFkZW4sIGRlbiBkYXMgTGViZXdlc2VuIG1hY2h0CisgICAgKiBTQV9TUEVFRDogICAgR2VzY2h3aW5kaWdrZWl0IGRlcyBMZWJld2VzZW5zCisgICAgKiBTQV9EVVJBVElPTjogU3BlbGwtL1NraWxsZGF1ZXIKKyAgICAqIFNBX0VORU1ZX1NBVkU6IGlkZW50aXNjaCB6dSBTQV9TUEVMTF9QRU5FVFJBVElPTiAoT0JTT0xFVCEpCisgICAgKiBTQV9TUEVMTF9QRU5FVFJBVElPTjogQ2hhbmNlIGRlcyBfQ2FzdGVyc18sIGVpbmVuIFNwZWxsIGR1cmNoIGVpbgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIFBfTk9NQUdJQyBkdXJjaHp1a3JpZWdlbi4KKyAgICAqIFNBX1JBTkdFOiAgICAgUmVpY2h3ZWl0ZSBkZXMgTGViZXdlc2VucyAoZWhlciB1bmJlbnV0enQpCisgICAgKiBTQV9FWFRFTlNJT046ICAiQXVzZGVobnVuZyIgKHVuYmVudXR6dCkKKworUlVFQ0tHQUJFV0VSVDoKKyAgICBTQV9NT0RfT0sgICAgICAgICAgICAgIHdlbm4gZGVyIE1vZGlmaWthdG9yIGdlc2V0enQgd3VyZGUKKyAgICBTQV9UT09fTUFOWV9NT0RTICAgICAgIHdlbm4gZGllIG1heC4gQW56YWhsIGFuIE1vZHMgc2Nob24gZXJyZWljaHQgaXN0LgorICAgIFNBX01PRF9UT09fU01BTEwgICAgICAgd2VubiBkZXIgTW9kIHp1IGtsZWluIGlzdAorICAgIFNBX01PRF9UT09fQklHICAgICAgICAgd2VubiBkZXIgTW9kIHp1IGdyb3NzIGlzdAorICAgIFNBX01PRF9JTlZBTElEX0FUVFIgICAgd2VubiBkYXMgZ2V3dWVuc2NodGUgU0EgZ2FyIG5pY2h0IGV4aXN0aWVydAorICAgIFNBX01PRF9JTlZBTElEX09CSkVDVCAgd2VubiBkYXMgc2V0emVuZGUgT2JqZWt0IHVuZ3VlbHRpZyBpc3QKKyAgICBXZW5uIG1hbiBudXIgd2lzc2VuIHdpbGwsIG9iIGRpZSBPcGVyYXRpb24gZXJmb2xncmVpY2ggd2FyLCBlbXBmaWVobHQgZXMKKyAgICBzaWNoLCBhdWYgPT0gU0FfTU9EX09LIHp1IHBydWVmZW4uCisKK0JFTUVSS1VOR0VOOgorICAgIE5hY2hkZW0gZWluIE9iamVrdCwgd2VsY2hlcyBNb2RpZmlrYXRvcmVuIHNldHp0ZSwgemVyc3RvZXJ0IHd1cmRlLCB3ZXJkZW4KKyAgICBkaWUgTW9kaWZpa2F0b3JlbiBzcGFldGVzdGVucyB1bmd1ZWx0aWcsIHNvYmFsZCBpbiBkZW0gbWFuaXB1bGllcnRlbgorICAgIExlYmV3ZXNlbiBlcm5ldXQgTW9kaWZ5U2tpbGxBdHRyaWJ1dGUoKSBnZXJ1ZmVuIHdpcmQhIEJlaSBDbG9zdXJlcyBpc3QgZGVyCisgICAgTW9kIHNvZm9ydCB3ZWcuCisKK0JFSVNQSUVMRToKKyAgICAvLyBzZWkgUEwgZWluIFNwaWVsZXIsIGRlbiBtZWluIE5QQyBzY2h3YWVjaGVuIHdpbGw6CisgICAgUEwtPk1vZGlmeVNraWxsQXR0cmlidXRlKFNBX1FVQUxJVFksIC03NSwgMTMpOworICAgIC8vIEZ1ZXIgMTNzIHdpcmQgU0FfUVVBTElUWSB1bSA3NSByZWR1emllcnQuIERpZXMgd2lya3Qgc2ljaCBhdWYgYWxsZQorICAgIC8vIGFuZGVyZW4gU0FzIGF1cyEgKHMuIGRyaXR0ZXMgQmVpc3BpZWwpCisKKyAgICAvLyBzZWkgUEwgZWluIExlYmV3ZXNlbiwgd2VsY2hlbSBpY2ggZnVlciAxMXMgMiBTY2hsYWVnZSBwcm8gS2FtcGZydW5kZQorICAgIC8vIHp1c2FldHpsaWNoIGdlYmVuIG1vZWNodGU6CisgICAgUEwtPk1vZGlmeVNraWxsQXR0cmlidXRlKFNBX1NQRUVELCAyMDAsIDExKTsKKyAgICAvLyB3ZW5uIGtlaW5lIHdlaXRlcmVzIE1vZGlmaWthdG9yZW4gd2lya2VuLCBoYXQgUEwgamV0enQgMyBTY2hsYWVnZSBwcm8KKyAgICAvLyBLYW1wZnJ1bmRlIChCYXNpc3dlcnQgMTAwICsgMjAwID09IDMwMCA9PiAzKS4KKworICAgIEFuZ2Vub21tZW4sIGVpbiBMZWJld2VzZW4gaGF0IGVpbmVuIEJhc2lzd2VydCB2b24gMTMwIGF1ZiBTQV9TUEVFRCB1bmQgMTAwCisgICAgYXVmIFNBX1FVQUxJVFkgKFBfU0tJTExfQVRUUklCVVRFX09GRlNFVFMpIHVuZCBudW4gMyBNb2RpZmlrYXRvcmVuCisgICAgZ2VzZXR6dDogU0FfU1BFRUQgKzEwMCwgU0FfU1BFRUQgLTMwIHVuZCBTQV9RVUFMSVRZIHZvbiAtMTA6CisgICAgWnVuYWVjaHN0IHdpcmQgU0FfUVVBTElUWSBiZXN0aW1tdDogMTAwIC0gMTAgPSA5MCAgPT4gMC45CisgICAgQW5zY2hsaWVzc2VuZCB3aXJkIFNBX1NQRUVEIGJlc3RpbW10OiAxMzAgKyAxMDAgLSAzMCA9IDIwMCA9PiAyCisgICAgTnVuIHdpcmQgU0FfU1BFRUQgbm9jaCBtaXQgU0FfUVVBTElUWSBtdWx0aXBsaXppZXJ0OiAyICogMC45ID0gMS44CisgICAgRGFzIExlYmV3ZXNlbiBoYXQgbnVuIGFsc28gaW0gRW5kZWZmZWt0IDEuOCBTY2hsYWVnZSBwcm8gS2FtcGZydW5kZS4KKworICAgIAorU0lFSEUgQVVDSDoKKyAgICBQX1NLSUxMX0FUVFJJQlVURVMsIFBfU0tJTExfQVRUUklCVVRFX09GRlNFVFMsCisgICAgUXVlcnlTa2lsbEF0dHJpYnV0ZSgpLCBRdWVyeVNraWxsQXR0cmlidXRlTW9kaWZpZXIoKSwKKyAgICBSZW1vdmVTa2lsbEF0dHJpYnV0ZU1vZGlmaWVyKCkKKworLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKzA3LjA4LjIwMDgsIFplc3N0cmEKZGlmZiAtLWdpdCBhL2RvYy9iYWxhbmNlL211bHRpb2JqZWt0ZSBiL2RvYy9iYWxhbmNlL211bHRpb2JqZWt0ZQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi40NjA4NmE1Ci0tLSAvZGV2L251bGwKKysrIGIvZG9jL2JhbGFuY2UvbXVsdGlvYmpla3RlCkBAIC0wLDAgKzEsNDcgQEAKK01VTFRJT0JKRUtURToKKworCWEuIFdhcyBzaW5kIE11bHRpb2JqZWt0ZT8KKworCU11bHRpb2JqZWt0ZSBzaW5kIE11bHRpd2FmZmVuIG9kZXIgTXVsdGlydWVzdHVuZ2VuLgorCisJYi4gTXVsdGl3YWZmZW4KKworCU11bHRpd2FmZmVuIHNpbmQgV2FmZmVuLCBkaWUgbWVocmVyZSBGdW5rdGlvbmVuIGhhYmVuIGtvZW5uZW4uIERhcyAKKwlrbGFzc2lzY2hlIEJlaXNwaWVsIHNpbmQgV2FmZmVuLCBkaWUgbWVocmVyZSBTY2hhZGVuc2FydGVuIHZlcnVyc2FjaGVuCisJa29lbm5lbiwgdW5kIGRpZXNlIHouQi4gYXVmIEtvbW1hbmRvIHdlY2hzZWxuIGtvZW5uZW4uIE9kZXIgYXVjaCBkaWUKKwlXYWZmZW5nYXR0dW5nLgorCisJRWJlbmZhbGxzIGFscyBNdWx0aXdhZmZlbiB3ZXJkZW4gV2FmZmVuIGJlaGFuZGVsdCwgYmVpIGRlbmVuIGltIAorCWdlcmluZ2VuIFVta3JlaXMgdW0gZWluZSBGdW5kc3RlbGxlIHZpZWxlIGFlaG5saWNoZSBXYWZmZW4gYXVmZmluZGJhcgorCXNpbmQsIGRpZSBzaWNoIHouQi4gbnVyIGluIGRlciBHYXR0dW5nIHVudGVyc2NoZWlkZW4gKGVpbiAKKwlRdWV0c2Noc2Nod2VydCwgZWluZSBRdWV0c2Noa2V1bGUsIGVpbiBRdWV0c2Noc3RhYiwgZWluIFF1ZXRzY2hzcGVlci4uCisJb2RlciA6IEVpbiBGZXVlcnNjaHdlcnQsIGVpbiBFaXNzY2h3ZXJ0LCBlaW4gU2FldXJlc2Nod2VydCwgZWluCisJQmxpdHpzY2h3ZXJ0LCBlaW4gV2Fzc2Vyc2Nod2VydC4uLikKKworCWMuIE11bHRpcnVlc3R1bmdlbgorCisJTXVsdGlydWVzdHVuZ2VuIHNpbmQgYW5hbG9nIFJ1ZXN0dWduZW4sIGRpZSBnZWdlbiBiZXN0aW1tdGUgU2NoYWVkZW4KKwlzY2h1ZXR6ZW4gdW5kIGVudHdlZGVyIHNlbGJzdCBpbiBTY2hhZGVuc2FydCB3YW5kZWxiYXIgc2luZCwgb2RlciB3bworCWVzIHZpZWxlIGdsZWljaGFydGlnZSBpbiBlaW5lbSBnZXJpbmdlbiBVbWtyZWlzIGdpYnQuIChCbGl0emhlbG0sCisJQmxpdHpob3NlLCBCbGl0enBhbnplciwgQmxpdHpyaW5nLi4uIG9kZXIgRmV1ZXJyaW5nLCBXYXNzZXJyaW5nLAorCUJsaXR6cmluZywgRWlzcmluZy4uLikuIEFuYWxvZ2VzIGdpbHQgZnVlciBkaWUgU2NoYWRlbnNhcnQgZGVyCisJUnVlc3R1bmcgZnVlciBkaWUgS2FlbXBmZXJnaWxkZS4KKworCWQuIFJlZ2VsCisKKwlNdWx0aW9iamVrdGUgZHVlcmZlbiBpbiBlaW5lbSBnZXJpbmdlbiBVbWtyZWlzIG51ciBpbiBtYXhpbWFsIDQgCisJVmFyaWFudGVuIHZvcmtvbW1lbiBvZGVyIHZvbi9mdWVyIFNwaWVsZXIgaGVyc3RlbGxiYXIgc2Vpbi4KKworCURpZXNlIFJlZ2VsdW5nIGlzdCBzY2h3YW1taWcsIGFiZXIgc2llIHNvbGwgdmVyaGluZGVybiwgZGFzcyBlcyBlaW4KKwl1bml2ZXJzZWxsZXMgQXVzcnVlc3R1bmdzZ2ViaWV0IGdpYnQuCisKKwlXYXMgZWluIGdlcmluZ2VyIFVta3JlaXMgaXN0LCBvYiBXYWZmZW4gb2RlciBSdWVzdHVuZ2VuIGFscworCU11bHRpb2JqZWt0ZSBnZWx0ZW4sIG9iIGRpZSBUYXRiZXN0YWVuZGUgYWxzbyBmdWVyIGRlbiBrb25rcmV0ZW4KKwlQcm9ncmFtbWllcnVuZ3NzYWNodmVyaGFsdCBnZWx0ZW4sIGVudHNjaGVpZGV0IGRpZSBCYWxhbmNlIG5hY2gKKwlBdXNsZWd1bmcgdW5kIGV2dGwuIFJlZ2VsZm9ydGJpbGR1bmcgZGVtIFNpbm4gYnp3LiBkZXIgSGlzdG9yaWUKKwlkaWVzZXIgUmVnZWwgbmFjaC4KKworCUFscyBBbnNwcmVjaHBhcnRuZXIgZnVlciBkaWVzZSBSZWdlbCBzdGVodCBkaWUgQmFsYW5jZSB6dXIKKwlWZXJmdWVndW5nLgorCitMZXR6dGUgQWVuZGVydW5nOiBIdW1uaSwgMjAxMS0wMS0xNQpkaWZmIC0tZ2l0IGEvZG9jL2JhbGFuY2UvcGFyaWVyd2FmZmVuIGIvZG9jL2JhbGFuY2UvcGFyaWVyd2FmZmVuCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmQ3ZTM4YjQKLS0tIC9kZXYvbnVsbAorKysgYi9kb2MvYmFsYW5jZS9wYXJpZXJ3YWZmZW4KQEAgLTAsMCArMSw3IEBACitBa3R1ZWxsZSBHcmVuendlcnRlOgorPT09PT09PT09PT09PT09PT09PT0KKworICBQYXJpZXItVHlwICAgR2VuZWhtaWd1bmdzZ3JlbnplCisgIC0tLS0tLS0tLS0tLSAtLS0tLS0tLS0tLS0tLS0tLS0tLQorICBQQVJSWV9PTkxZICAgV2llIFJ1ZXN0dW5nZW4gdm9tIFR5cCBBVF9TSElFTEQKKyAgUEFSUllfVE9PICAgIEdlbmVyZWxsZSBHZW5laG1pZ3VuZ3NwZmxpY2h0CmRpZmYgLS1naXQgYS9kb2MvYmFsYW5jZS9wcm9wZXJ0aWVzIGIvZG9jL2JhbGFuY2UvcHJvcGVydGllcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5lODQ5YWI2Ci0tLSAvZGV2L251bGwKKysrIGIvZG9jL2JhbGFuY2UvcHJvcGVydGllcwpAQCAtMCwwICsxLDE5NCBAQAorUF9BQyAgICAgICAgICAgICAgICAgIDogQXJtb3VyQ2xhc3MsIFdlcnQgZGVyIGRlbiBTY2h1dHogZWluZXIgUnVlc3R1bmcgCisgICAgICAgICAgICAgICAgICAgICAgICAoUF9BUk1PVVJTLFBfQVJNT1VSX1RZUEUpIGFuZ2lidAorCitQX0FUVEFDS19CVVNZICAgICAgICAgOiBBbnphaGwgZGVyIG1vZWdsaWNoZW4gQWt0aW9uZW4gZWluZXMgTGViZXdlc2VucyBwcm8KKyAgICAgICAgICAgICAgICAgICAgICAgIEthbXBmcnVuZGUgKDEgSGVhcnRCZWF0KS4gQmVpIFNwaWVsZXJuIGlzdCBkaWVzIDEsIAorICAgICAgICAgICAgICAgICAgICAgICAgYmVpIFNlaGVybiBtYXguIDUuIFdlZ2VuIGRlcyBob2VoZXJlbiBXZXJ0ZXMgYmVpCisgICAgICAgICAgICAgICAgICAgICAgICBTZWhlcm4gaXN0IGRhcmF1ZiB6dSBhY2h0ZW4sIGRhcyBoaWVyIEFERElFUlQgd2lyZAorICAgICAgICAgICAgICAgICAgICAgICAgdW5kIG5pY2h0IGVpbmZhY2ggbnVyIGF1ZiAxIGdlc2V0enQuCisgICAgICAgICAgICAgICAgICAgICAgICBTaWVoZSBhdWNoOiBibWFuIGthbXBmb2JqZWt0ZQorCitQX0FUVFJJQlVURVMgICAgICAgICAgOiBBdHRyaWJ1dGUgZWluZXMgU3BpZWxlcnMsIGtvZW5uZW4gZHVyY2ggT2JqZWt0ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgIEZsdWVjaGUgdW5kL29kZXIgS3JhbmtoZWl0ZW4gbWFuaXB1bGllcnQgd2VyZGVuLgorICAgICAgICAgICAgICAgICAgICAgICAgU2llaGUgYXVjaDogYm1hbiBhdHRyaWJ1dGUKKworUF9BVFRSSUJVVEVTX01PRElGSUVSIDogSGllciB3ZXJkZW4gQXR0cmlidXQtTW9kaWZpZXIgZ2VzcGVpY2hlcnQsIGRpZSAKKyAgICAgICAgICAgICAgICAgICAgICAgIHVlYmVyIGVpbmVuIGxhZW5nZXJlbiBaZWl0cmF1bSB3aXJrZW4gc29sbGVuLgorICAgICAgICAgICAgICAgICAgICAgICAgQmVrYW5udGVzdGUgQmVpc3BpZWxlIHNpbmQgd29obCBkZXIgVG9kZXMtTWFsdXMKKyAgICAgICAgICAgICAgICAgICAgICAgIHVuZCBkZXIgRnJvc2NoLU1hbHVzLiBOb3JtYWxlIEFlbmRlcnVuZ2VuIHNvbGx0ZW4KKyAgICAgICAgICAgICAgICAgICAgICAgIHBlciBQX1hfQVRUUl9NT0Qgb2RlciBQX01fQVRUUl9NT0QgcmVhbGlzaWVydCAKKyAgICAgICAgICAgICAgICAgICAgICAgIHdlcmRlbgorICAgICAgICAgICAgICAgICAgICAgICAgU2llaGUgYXVjaDogYm1hbiBhdHRyaWJ1dGUKKworUF9DT01CQVRDTURTICAgICAgICAgIDogQmVpbmhhbHRldCBCZWZlaGxlLCBTY2hhZGVuc2hvZWhlIHVuZCAtYXJ0ZW4gaW4gCisgICAgICAgICAgICAgICAgICAgICAgICBLYW1wZm9iamVrdGVuLCBkYW1pdCBkaWVzZSBhdWNoIHZvbiBOUEMgYmVudXR6dAorICAgICAgICAgICAgICAgICAgICAgICAgd2VyZGVuIGtvZW5uZW4uCisgICAgICAgICAgICAgICAgICAgICAgICBTaWVoZSBhdWNoOiBibWFuIGthbXBmb2JqZWt0ZQorCitQX0NVUlNFRCAgICAgICAgICAgICAgOiBPYmpla3RlIGluIGRlbmVuIGhpZXIgZWluIFN0cmluZyBvZGVyIEludC1XZXJ0IGdlLQorICAgICAgICAgICAgICAgICAgICAgICAgc2V0enQgaXN0LCBrb2VubmVuIG5pY2h0IGFiZ2VsZWd0IHdlcmRlbi4gS2xlcmlrZXIKKyAgICAgICAgICAgICAgICAgICAgICAgIGhhYmVuIGRpZSBGYWVoaWdrZWl0LCB6dSBlbnRmbHVjaGVuCisKK1BfREFNQUdFRCAgICAgICAgICAgICA6IEdyYWQgZGVyIEJlc2NoYWVkaWd1bmcgZWluZXIgV2FmZmUgb2RlciBSdWVzdHVuZy4KKyAgICAgICAgICAgICAgICAgICAgICAgIFdpcmQgbWVpc3RlbnMgcGVyIHdhZmZlLT5EYW1hZ2UoeCkgcmVhbGlzaWVydC4gS2FubgorICAgICAgICAgICAgICAgICAgICAgICAgYmVpIGRpdi4gU2NobWllZGVuIHdpZWRlciBhdWYgMCBnZXNldHp0IHdlcmRlbiwgVHJ2ZXMKKyAgICAgICAgICAgICAgICAgICAgICAgIGtvZW5uZW4gZXMgZHVyY2ggV2FmZmVuc2NoYWVyZmVuIHNvZ2FyIHNlbGJzdAorCitQX0RBTV9UWVBFICAgICAgICAgICAgOiBTY2hhZGVuc3R5cCwgZGVuIGVpbmUgUnVlc3R1bmcgb2RlciBXYWZmZSBtYWNodAorICAgICAgICAgICAgICAgICAgICAgICAgU2llaGUgYXVjaDogYm1hbiBzY2hhZGVuc3R5cGVuCisKK1BfREVGRU5EX0ZVTkMgICAgICAgICA6IEdlc2V0enQgd2VubiBlaW5lIFJ1ZXN0dW5nIGVpbmUgRGVmZW5kRnVuYyBkZWZpbmllcnQKKyAgICAgICAgICAgICAgICAgICAgICAgIGhhdC4gV2VydGUgZWluZXIgRGVmZW5kRnVuYyBzaW5kIElNTUVSIHBlciByYW5kb20KKyAgICAgICAgICAgICAgICAgICAgICAgIHp1IGdlYmVuLCBBdXNuYWhtZTogbmVnYXRpdmVyIFJ1ZWNrZ2FiZXdlcnQuIEF1Y2gKKyAgICAgICAgICAgICAgICAgICAgICAgIGhpZXIgaXN0IGRhcmF1ZiB6dSBhY2h0ZW4sIGRhcyBQX1dDICsgUnVlY2tnYWJld2VydAorICAgICAgICAgICAgICAgICAgICAgICAgbmljaHQgdWViZXIgZGVuIEdyZW56d2VydCBrb21tZW4KKyAgICAgICAgICAgICAgICAgICAgICAgIFNpZWhlIGF1Y2g6IGJtYW4gZ3Jlbnp3ZXJ0ZSwgYm1hbiBydWVzdHVuZ2VuCisKK1BfRElTQUJMRV9BVFRBQ0sgICAgICA6IEdlc2V0enQgd2VubiBkYXMgTGViZXdlc2VuIGF1c25haG1zd2Vpc2UgbWFsIG5pY2h0CisgICAgICAgICAgICAgICAgICAgICAgICBhbmdyZWlmZW4ga2Fubi4gRXMgd2lyZCBkaWUgQW56YWhsIGRlciBLYW1wZnJ1bmRlbgorICAgICAgICAgICAgICAgICAgICAgICAgKGFsc28gSGVhcnRCZWF0cykgZ2VzZXR6dCwgaW4gZGVuZW4gZGllIFBhcmFseXNlCisgICAgICAgICAgICAgICAgICAgICAgICB3aXJrdC4gTmV1ZSBQYXJhbHlzZS1Ub29scyBzaW5kIG5pY2h0IGdlcm4gZ2VzZWhlbgorICAgICAgICAgICAgICAgICAgICAgICAgdW5kIGhhYmVuIHdlbmlnIENoYW5jZW4gYXVmIEdlbmVobWlndW5nCisKK1BfRUZGRUNUSVZFX0FDICAgICAgICA6IERpZSBlZmZla3RpdmUgQXJtb3VyQ2xhc3MgZWluZXIgUnVlc3R1bmcuIElzdCBpbgorICAgICAgICAgICAgICAgICAgICAgICAgZWluZXIgUnVlc3R1bmcgbm9jaCBlaW5lIFBfREVGRU5EX0ZVTkMgZGVmaW5pZXJ0LAorICAgICAgICAgICAgICAgICAgICAgICAgc28gYmV0cmFlZ3QgaXN0IFBfRUZGRUNUSVZFX0FDID0gUF9BQyArIDIgKiBNaXR0ZWx3ZXJ0CisgICAgICAgICAgICAgICAgICAgICAgICBkZXMgZG9ydGlnZW4gUnVlY2tnYWJld2VydGVzCisKK1BfRUZGRUNUSVZFX1dDICAgICAgICA6IERpZSBlZmZla3RpdmUgV2VhcG9uQ2xhc3MgZWluZXIgV2FmZmUgb2RlciBSdWVzdHVuZy4KKyAgICAgICAgICAgICAgICAgICAgICAgIElzdCBpbiBlaW5lciBXYWZmZSBlaW5lIFBfSElUX0ZVTkMgZGVmaW5pZXJ0LCBzbyBiZS0KKyAgICAgICAgICAgICAgICAgICAgICAgIHJlY2huZXQgc2ljaCBkaWUgUF9FRkZFQ1RJVkUgYXVzIGRlciBTdW1tZSB2b24gUF9XQworICAgICAgICAgICAgICAgICAgICAgICAgdW5kIGRlbSBkb3BwZWx0ZW4gTWl0dGVsd2VydCBkZXMgZG9ydGlnZW4gUnVlY2tnYWJlLQorCQkJd2VydGVzCisKK1BfSEFORFMgICAgICAgICAgICAgICA6IEVudGhhZWx0IG1laHJlcmUgRWludHJhZWdlLCBkaWUgTWVsZHVuZywgU3RhZXJrZQorICAgICAgICAgICAgICAgICAgICAgICAgZWluZXMgQW5ncmlmZmVzIG1pdCBibG9zc2VuIEhhZW5kZW4gdW5kIGRlbiBvZGVyCisgICAgICAgICAgICAgICAgICAgICAgICBkaWUgZGFiZWkgdmVydXJzYWNodGVuIFNjaGFkZW5zdHlwZW4gYmVpbmhhbHRlbgorCitQX0hJVF9GVU5DICAgICAgICAgICAgOiBHZXNldHp0LCB3ZW5uIGVpbmUgV2FmZmUgb2RlciBSdWVzdHVuZyBlaW5lIEhpdEZ1bmMKKyAgICAgICAgICAgICAgICAgICAgICAgIGRlZmluaWVydCBoYXQuIERpZSBXZXJ0ZSBtdWVzc2VuIElNTUVSIHBlciByYW5kb20KKyAgICAgICAgICAgICAgICAgICAgICAgIGdlZ2ViZW4gd2VyZGVuLiBBdWNoIGhpZXIgc2luZCBlaW56aWcgbmVnYXRpdmUgUnVlY2stCisgICAgICAgICAgICAgICAgICAgICAgICBnYWJld2VydGUgZGllIEF1c25haG1lLiBEYXJhdWYgenUgYWNodGVuIGlzdCwgZGFzIAorICAgICAgICAgICAgICAgICAgICAgICAgUF9BQyArIFJ1ZWNrZ2FiZXdlcnQgbmljaHQgZGVuIEdyZW56d2VydCB1ZWJlci0KKyAgICAgICAgICAgICAgICAgICAgICAgIHNjaHJlaXRlbgorICAgICAgICAgICAgICAgICAgICAgICAgU2llaGUgYXVjaDogYm1hbiBncmVuendlcnRlCisKK1BfSFAgICAgICAgICAgICAgICAgICA6IEFrdHVlbGxlIExlYmVuc3B1bmt0ZSAoSGVhbHRoUG9pbnRzKSBlaW5lcyBMZWJlLQorICAgICAgICAgICAgICAgICAgICAgICAgd2VzZW5zCisKK1BfSFBfREVMQVkgICAgICAgICAgICA6IE51bWVyaXNjaGVyIFdlcnQsIGRlciBhbmdpYnQsIHdpZXZpZWxlIEhlYXJ0QmVhdHMKKyAgICAgICAgICAgICAgICAgICAgICAgIG5vdHdlbmRpZyBzaW5kLCBkYW1pdCBzaWNoIGRpZSBQX0hQIHVtIDEgcmVnZW5pZXJlbgorCitQX0hQX0hPT0tTICAgICAgICAgICAgOiBXYXMgZnVlciBPYmpla3RlIHNvbGxlbiBiZWkgZWluZXIgQWVuZGVydW5nIGRlciBQX0hQCisgICAgICAgICAgICAgICAgICAgICAgICBiZW5hY2hyaWNodGlndCB3ZXJkZW4/IEJla2FubnRlc3RlcyBCZWlzcGllbCBpc3QgCisgICAgICAgICAgICAgICAgICAgICAgICBoaWVyIHNpY2hlciBkZXIgVGVkZHkgYXVzIGRlciBOaWJlbHVuZ2VucXVlc3QKKworUF9MRVAgICAgICAgICAgICAgICAgIDogTEV2ZWxQb2ludHMsIGFic29sdXRlIFN0dWZlbnB1bmt0ZSBlaW5lcyBTcGllbGVycy4KKyAgICAgICAgICAgICAgICAgICAgICAgIElzdCBtYW5jaG1hbCBzaW5udm9sbGVyLCBQX0xFUCBhYnp1ZnJhZ2VuIGFuc3RhdHQKKyAgICAgICAgICAgICAgICAgICAgICAgIFBfTEVWRUwKKworUF9NX0FUVFJfTU9EICAgICAgICAgIDogTWFwcGluZyBtaXQgQXR0cmlidXRlbiBkaWUgdmVyYWVuZGVydCB3ZXJkZW4sIHdlbm4KKyAgICAgICAgICAgICAgICAgICAgICAgIGRhcyBMZWJld2VzZW4gZGllc2UgUlVFU1RVTkcgb2RlciBXQUZGRSB0cmFlZ3Qgb2RlcgorICAgICAgICAgICAgICAgICAgICAgICAgenVlY2t0LiBKZWRlcyBBdHRyaWJ1dCBrYW5uIG51ciBkdXJjaCBlaW5lbiBNb2RpZmllcgorICAgICAgICAgICAgICAgICAgICAgICAgYmVlaW5mbHVzc3Qgd2VyZGVuLiBJc3QgYWxzbyBlaW4gQXR0cmlidXQgYmxvY2tpZXJ0LAorICAgICAgICAgICAgICAgICAgICAgICAga2FubiBkaWUgUnVlc3R1bmcvV2FmZmUgbmljaHQgYW5nZXpvZ2VuL2dlenVlY2t0CisgICAgICAgICAgICAgICAgICAgICAgICB3ZXJkZW4uIEZ1ZXIgS3JhbmtoZWl0ZW4gdXN3LiBnaWJ0IGVzIFBfWF9BVFRSX01PRAorICAgICAgICAgICAgICAgICAgICAgICAgU2llaGUgYXVjaDogYm1hbiBhdHRyaWJ1dGUKKworUF9NX0hFQUxUSF9NT0QgICAgICAgIDogTWFwcGluZyBtaXQgZGVtIGRpZSBtYXguIFBfSFAgdW5kIG1heC4gUF9TUCBlaW5lcworICAgICAgICAgICAgICAgICAgICAgICAgTGViZXdlc2VucyBtYW5pcHVsaWVydCB3ZXJkZW4ga29lbm5lbiwgd2VubiBlcyBkaWVzZQorICAgICAgICAgICAgICAgICAgICAgICAgUlVFU1RVTkcgb2RlciBXQUZGRSB0cmFlZ3Qgb2RlciB6dWVja3QuIEVzIGVyZm9sZ3QKKyAgICAgICAgICAgICAgICAgICAgICAgIGtlaW5lcmxlaSBCbG9ja2FkZS4gRnVlciBLcmFua2hlaXRlbiB1c3cuIGdpYnQgZXMgCisgICAgICAgICAgICAgICAgICAgICAgICBQX1hfSEVBTFRIX01PRAorCitQX05PTUFHSUMgICAgICAgICAgICAgOiBXZXJ0IHp3aXNjaGVuIDAgKGRlZmF1bHQpIHVuZCAxMDAsIGRlciBkZW4gR3JhZCBhbi0KKyAgICAgICAgICAgICAgICAgICAgICAgIGdpYnQsIG1pdCB3ZWxjaGVyIFdhaHJzY2hlaW5saWNoa2VpdCBNYWdpZSBrZWluZQorICAgICAgICAgICAgICAgICAgICAgICAgV2lya3VuZyBlcnppZWx0LiBLYW5uIGluIFJhZXVtZW4sIE5wYyB1bmQgT2JqZWt0ZW4KKyAgICAgICAgICAgICAgICAgICAgICAgIGdlc2V0enQgd2VyZGVuLiBWb24gU3BpZWxlciBuaWNodCBnZXJuIGdlc2VoZW4gOikKKworUF9OUl9IQU5EUyAgICAgICAgICAgIDogV2lldmllbCBmcmVpZSBIYWVuZGUgc2luZCBub3R3ZW5kaWcsIHVtIGRpZXNlIFdhZmZlCisgICAgICAgICAgICAgICAgICAgICAgICBvZGVyIGRpZXNlbiBTY2hpbGQgenUgenVlY2tlbj8KKyAKK1BfUEFSUllfV0VBUE9OICAgICAgICA6IEluIFdhZmZlbiBnZXNldHp0IHdlbm4gZXMgc2ljaCB1bSBlaW5lIFBhcmllcndhZmZlCisgICAgICAgICAgICAgICAgICAgICAgICBoYW5kZWx0CisgICAgICAgICAgICAgICAgICAgICAgICBTaWVoZSBhdWNoOiBibWFuIHBhcmllcndhZmZlbgorCitQX1BVUlNVRVJTICAgICAgICAgICAgOiBCZWluaGFsdGV0IGFsbGUgT2JqZWt0ZS9OcGMgZGllIGRlbiBTcGllbGVyIG1vbWVudGFuCisgICAgICAgICAgICAgICAgICAgICAgICB2ZXJmb2xnZW4KKworUF9RVUFMSVRZICAgICAgICAgICAgIDogQmVsaWViaWdlciBXZXJ0IGluIFdhZmZlbi4gU2V0enQgbWFuIGlobiBhdWYgbiwgc28gd2lyZAorICAgICAgICAgICAgICAgICAgICAgICAgZGllIFdhZmZlIGJlaSBqZWRlbSBuLXRlbiBTY2hsYWcgdW0gMSBQdW5rdCBiZS0KKyAgICAgICAgICAgICAgICAgICAgICAgIGJlc2NoYWVkaWd0IChQX0RBTUFHRUQgYWxzbyB1bSAxIGVyaG9laHQpIHVuZCBkaWVzZXIgCisgICAgICAgICAgICAgICAgICAgICAgICB2b24gZGVyIFBfQUMgYWJnZXpvZ2VuLCBkZXIgU2NoYWRlbiBsYWVzc3Qgc2ljaCBpbgorICAgICAgICAgICAgICAgICAgICAgICAgZWluZXIgU2NobWllZGUgcmVwYXJpZXJlbi4KKyAgICAgICAgICAgICAgICAgICAgICAgCitQX1JFTU9WRV9GVU5DICAgICAgICAgOiBGdW5rdGlvbiBkaWUgdm9yIGRlbSBBdXN6aWVoZW4gZWluZXIgUnVlc3R1bmcgYXVmLQorICAgICAgICAgICAgICAgICAgICAgICAgZ2VydWZlbiB3aXJkCisgICAgICAgICAgICAgICAgICAgICAgICBTaWVoZSBhdWNoOiBibWFuIHJ1ZXN0dW5nZW4KKworUF9SRVNJU1RBTkNFICAgICAgICAgIDogV2FzIGZ1ZXIgUmVzaXN0ZW56ZW4gc2luZCBnZXNldHp0PyBFbnRoYWVsdCBlaW4gCisgICAgICAgICAgICAgICAgICAgICAgICBBcnJheSBkZXIgU2NoYWRlbnN0eXBlbiwgZ2VnZW4gZGllIGRhcyBMZWJld2VzZW4KKyAgICAgICAgICAgICAgICAgICAgICAgIHJlc2lzdGVudCBzZWluIHNvbGwuIFBfUkVTSVNUQU5DRV9TVFJFTkdIVFMgaXN0IGhpZXIKKyAgICAgICAgICAgICAgICAgICAgICAgIHZpZWwgZ2VuYXVlciB1bmQgc29sbHRlIGRlc3dlZ2VuIHZlcndlbmRldCB3ZXJkZW4KKworUF9SRVNJU1RBTkNFX01PRElGSUVSIDogSGllciBzdGVodCBkaWUgU3VtbWUgYWxsZXIgTW9kaWZpa2F0b3JlbiwgZGllIAorICAgICAgICAgICAgICAgICAgICAgICAgUmVzaXN0ZW56ZW4gdW5kIEFuZmFlbGxpZ2tlaXRlbiBiZXRyZWZmZW4uIERpZXNlCisgICAgICAgICAgICAgICAgICAgICAgICBQcm9wZXJ0aWUgc29sbHRlIE5JRSBkaXJla3QgbWFuaXB1bGllcnQgd2VyZGVuCisKK1BfUkVTSVNUQU5DRV9TVFJFTkdIVFM6IEh1ZWJzY2hlciBUeXBvIGJlaSBSZWFsaXNpZXJ1bmcgdm9uIEFuZmFlbGxpZ2tlaXRlbgorICAgICAgICAgICAgICAgICAgICAgICAgdW5kIFJlc2lzdGVuemVuIGVpbmVzIExlYmVud2VzZW5zIDotKQorCitQX1JFU0lTVEFOQ0VfU1RSRU5HVEhTOiBXYXMgZnVlciBSZXNpc3RlbnplbiBvZGVyIEFuZmFlbGxpZ2tlaXRlbiBoYXQgZGFzCisgICAgICAgICAgICAgICAgICAgICAgICBMZWJld2VzZW4/IEdlc2V0enQgd2lyZCBlaW4gTWFwcGluZyBtaXQgZGVuCisgICAgICAgICAgICAgICAgICAgICAgICBTY2hhZGVuc3R5cGVuIHVuZCBlaW4gZW50c3ByZWNoZW5kZXIgbnVtZXJpc2NoZXIgCisgICAgICAgICAgICAgICAgICAgICAgICBXZXJ0LiBEaWVzZXIgV2VydCBnZWh0IHZvbiAtMSAuLiAwIC4uIDEsIGlzdCBlcgorICAgICAgICAgICAgICAgICAgICAgICAgbmVnYXRpdiwgc28gaXN0IGRhcyBMZWJld2VzZW4gcmVzaXN0ZW50LCBpc3QgZXIgCisgICAgICAgICAgICAgICAgICAgICAgICBwb3NpdGl2LCBzbyBpc3QgZGFzIExlYmV3ZXNlbiBhbmZhZWxsaWcKKworUF9SRVNUUklDVElPTlMgICAgICAgIDogV2lyZCB2b3IgZGVtIFp1ZWNrZW4gb2RlciBBbnppZWhlbiBlaW5lciBXYWZmZSBvZGVyCisgICAgICAgICAgICAgICAgICAgICAgICBSdWVzdHVuZyBnZXBydWVmdC4gSGllciBsYXNzZW4gc2ljaCBkaXZlcnNlIFdlcnRlCisgICAgICAgICAgICAgICAgICAgICAgICBhYmZyYWdlbiwgZGllIGRhcyB2ZXJoaW5kZXJuCisgICAgICAgICAgICAgICAgICAgICAgICBTaWVoZSBhdWNoOiBibWFuIHJlc3RyaWt0aW9uZW4KKworUF9TUCAgICAgICAgICAgICAgICAgIDogU3BlbGxQb2ludHMsIGFrdHVlbGxlIEtvbnplbnRyYXRpb25zcHVua3RlIGVpbmVzCisgICAgICAgICAgICAgICAgICAgICAgICBMZWJld2VzZW5zCisKK1BfU1BfREVMQVkgICAgICAgICAgICA6IE51bWVyaXNjaGVyIFdlcnQsIGRlciBhbmdpYnQsIHdpZXZpZWxlIEhlYXJ0QmVhdHMKKyAgICAgICAgICAgICAgICAgICAgICAgIG5vdHdlbmRpZyBzaW5kLCBkYW1pdCBzaWNoIGRpZSBQX1NQIHVtIDEgcmVnZW5pZXJlbgorCitQX1VOV0lFTERfRlVOQyAgICAgICAgOiBGdW5rdGlvbiwgZGllIHZvciBkZW0gV2Vnc3RlY2tlbiBlaW5lciBXYWZmZSBhdWYtCisgICAgICAgICAgICAgICAgICAgICAgICBnZXJ1ZmVuIHdpcmQKKworUF9WVUxORVJBQklMSVRZICAgICAgIDogRW1wZmluZGxpY2hrZWl0ZW4gZWluZXMgTnBjL1NwaWVsZXJzLCBzb2xsdGUgdWViZXIKKyAgICAgICAgICAgICAgICAgICAgICAgIFBfUkVTSVNUQU5DRV9TVFJFTkdUSFMgcmVhbGlzaWVydCB3ZXJkZW4KKyAgICAgICAgICAgICAgICAgICAgICAgICAKK1BfV0MgICAgICAgICAgICAgICAgICA6IFdlYXBvbkNsYXNzLCBXZXJ0IGRlciBkaWUgR3VldGUgZWluZXIgV2FmZmUgYW5naWJ0LgorICAgICAgICAgICAgICAgICAgICAgICAgQWJzb2x1dGVyIE9iZXJ3ZXJ0IGlzdCAyMDAKKyAgICAgICAgICAgICAgICAgICAgICAgIFNpZWhlIGF1Y2g6IGJtYW4gZ3Jlbnp3ZXJ0ZQorCitQX1dFQVBPTl9UWVBFICAgICAgICAgOiBVbSB3YXMgZnVlciBlaW5lIFdhZmZlIGhhbmRlbHQgZXMgc2ljaD8gS2V1bGUsIFNwZWVyCisgICAgICAgICAgICAgICAgICAgICAgICBvZGVyIEF4dD8gT2RlciB3YXMgYW5kZXJlcz8gCisgICAgICAgICAgICAgICAgICAgICAgICBTaWVoZSBhdWNoOiBibWFuIHdhZmZlbgorCitQX1dFQVJfRlVOQyAgICAgICAgICAgOiBGdW5rdGlvbiBkaWUgdm9yIGRlbSBBbnppZWhlbiBlaW5lciBSdWVzdHVuZyBhdWYtCisgICAgICAgICAgICAgICAgICAgICAgICBnZXJ1ZmVuIHdpcmQuIFNpZSBrYW5uIGRhcyBBbnppZWhlbiB2ZXJoaW5kZXJuLCBoaWVyCisgICAgICAgICAgICAgICAgICAgICAgICBpc3Qgb2Z0bWFscyBlaW4gRWludHJhZyBpbiBQX1JFU1RSSUNUSU9OUyBzaW5udm9sbGVyCisgICAgICAgICAgICAgICAgICAgICAgICBTaWVoZSBhdWNoOiBibWFuIHJlc3RyaWt0aW9uZW4KKworUF9XSUVMRF9GVU5DICAgICAgICAgIDogRnVua3Rpb24sIGRpZSB2b3IgZGVtIFp1ZWNrZW4gZWluZXIgV2FmZmUgYXVmZ2VydWZlbgorICAgICAgICAgICAgICAgICAgICAgICAgd2lyZC4gU2llIGthbm4gZGFzIFp1ZWNrZW4gdmVyaGluZGVybi4gT2Z0bWFscyBpc3QKKyAgICAgICAgICAgICAgICAgICAgICAgIGRhIGVpbiBFaW50cmFnIHBlciBQX1JFU1RSSUNUSU9OUyB2b3J0ZWlsaGFmdGVyCisgICAgICAgICAgICAgICAgICAgICAgICBTaWVoZSBhdWNoOiBibWFuIHJlc3RyaWt0aW9uZW4KKworUF9YX0FUVFJfTU9EICAgICAgICAgIDogTWFwcGluZyBtaXQgQXR0cmlidXRlbiBkaWUgdmVyYWVuZGVydCB3ZXJkZW4sIHdlbm4KKyAgICAgICAgICAgICAgICAgICAgICAgIGRhcyBMZWJld2VzZW4gZGllc2VzIE9CSkVLVCBiZWkgc2ljaCBoYXQuIElzdCBmdWVyCisgICAgICAgICAgICAgICAgICAgICAgICBLcmFua2hlaXRlbiB1LmFlLiBnZWRhY2h0LiBCZWthbm50ZXMgQmVpc3BpZWwgc2luZAorICAgICAgICAgICAgICAgICAgICAgICAgZGllIEZsdWVjaGUsIGRpZSBtYW4gc2ljaCBhdWYgQWtoYXIgTnRoJ3RhciB3ZWctCisgICAgICAgICAgICAgICAgICAgICAgICBob2xlbiBrYW5uCisgICAgICAgICAgICAgICAgICAgICAgICBTaWVoZSBhdWNoOiBibWFuIGF0dHJpYnV0ZQorCitQX1hfSEVBTFRIX01PRCAgICAgICAgOiBNYXBwaW5nIG1pdCBkZW0gZGllIG1heC4gUF9IUCB1bmQgbWF4LiBQX1NQIGVpbmVzCisgICAgICAgICAgICAgICAgICAgICAgICBMZWJld2VzZW5zIHZlcmFlbmRlcnQgd2VyZGVuLCBkYXMgZGllc2VzIE9CSkVLVCBiZWkKKyAgICAgICAgICAgICAgICAgICAgICAgIHNpY2ggdHJhZWd0LiBPaG5lIG5hY2hnZXNlaGVuIHp1IGhhYmVuIHNhZyBpY2ggbWFsLAorICAgICAgICAgICAgICAgICAgICAgICAgZGFzIGVzIHNvIHouQi4gYmVpbSBSYXR0ZW5ibHV0IGdlbWFjaHQgd2lyZAorICAgICAgICAgICAgICAgICAgICAgICAgU2llaGUgYXVjaDogYm1hbiBrYW1wZm9iamVrdGUKZGlmZiAtLWdpdCBhL2RvYy9iYWxhbmNlL3Jlc2lzdGVuemVuIGIvZG9jL2JhbGFuY2UvcmVzaXN0ZW56ZW4KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZjJiOTJhOQotLS0gL2Rldi9udWxsCisrKyBiL2RvYy9iYWxhbmNlL3Jlc2lzdGVuemVuCkBAIC0wLDAgKzEsNTkgQEAKKworIFJFU0lTVEFOQ0UgTU9ESUZJRVI6CisgICAgU29sbCBlaW4gT2JqZWt0IGluIGVpbmVtIFNwaWVsZXIgUmVzaXN0YW5jZU1vZGlmaWVyIHNldHplbiwgZ2VsdGVuCisgICAgZm9sZ2VuZGUgUmVnZWxuOgorCisgICAgYSkgRXMgbXVzcyBzaWNoIHVtIGVpbmUgUnVlc3R1bmcgaGFuZGVsbiAoaW4gZ2FueiBzZWx0ZW5lbiBGYWVsbGVuCisgICAgICAgd2VyZGVuIGF1Y2ggV2FmZmVuIG1pdCBkaWVzZXIgTW9lZ2xpY2hrZWl0IGVybGF1YnQpLiBCZWkgUnVlc3R1bmdlbgorICAgICAgIG11c3MgX25pY2h0XyBBZGRSZXNpc3RhbmNlTW9kaWZpZXIoKSBiZW51dHp0IHdlcmRlbiwgc29uZGVybiBlcyAKKyAgICAgICBnZW51ZWd0LCBQX1JFU0lTVEFOQ0VfU1RSRU5HVEggaW4gZGVyIFJ1ZXN0dW5nIHp1IHNldHplbi4gIERhYmVpIAorICAgICAgIHdlcmRlbiBfYW5kZXJzXyBhbHMgYmVpIEFkZFJlc2lzdGFuY2VNb2RpZmVyKCkgUHJvemVudHdlcnRlIGRlciAKKyAgICAgICBtYXhpbWFsIGVybGF1YnRlbiBSZXNpc3RlbnogZnVlciBkZW4gZW50c3ByZWNoZW5kZW4gUnVlc3R1bmdzdHlwIAorICAgICAgIGFuZ2VnZWJlbi4gRGllc2Ugd2VyZGVuIGJlaW0gVHJhZ2VuIGRlciBSdWVzdHVuZyBhdXRvbWF0aXNjaAorICAgICAgIGluIHRhdHNhZWNobGljaGUgUmVzaXN0ZW56ZW4gZGVzIFRyYWVnZXJzIHVtZ2VyZWNobmV0LgorICAgICAgIChCZWlzcGllbCBzaWVoZSAibWFuIFBfUkVTSVNUQU5DRV9TVFJFTkdUSFMiKS4KKworICAgIGIpIERhcyBPYmpla3QgbXVzcyBuYXR1ZXJsaWNoIGdlbmVobWlndCB3ZXJkZW4uCisKKyAgICBjKSBEaWUgU3VtbWUgYWxsZXIgUmVzaXN0ZW56ZW4gZGFyZiBtYXguIC0wLjE1IGJldHJhZ2VuLiBBdXNzZXJkZW0KKyAgICAgICBtdWVzc2VuIHp1IGplZGVtIFNjaGFkZW5zdHlwIGdsZWljaHplaXRpZyBFbXBmaW5kbGljaGtlaXRlbiBpbgorICAgICAgIG1pbmRlc3RlbnMgZ2xlaWNoZXIgU3RhZXJrZSBiZWkgZWluZW0gYW5kZXJlbiBTY2hhZGVuc3R5cCBnZXNldHp0CisgICAgICAgd2VyZGVuIG9kZXIgZGllIFJlc2lzdGVuemVuIG11ZXNzZW4gbWl0IGFuZGVyZW4gTmFjaHRlaWxlbiAoei5CLgorICAgICAgIEF1ZmxvZXN1bmcgZGVzIE9iamVrdGUgYmVpIEFuZ3JpZmYgbWl0IGVpbmVtIGJlc3RpbW10ZW4gU2NoYWRlbnN0eXApCisgICAgICAgYXVzZ2VnbGljaGVuIHdlcmRlbi4KKyAgICAgICAKKyAgICAgICBCZWkgUnVlc3R1bmdlbiBkYXJmIG1heGltYWwgZWluZSByZWxhdGl2ZSBSZXNpc3Rlbnogdm9uIAorICAgICAgIChsb2dpc2NoZXJ3ZWlzZSkgMTAwJSBlaW5nZXRyYWdlbiB3ZXJkZW4uIDEwMCUgaW4gZGVyIFByb3BlcnR5CisgICAgICAgUF9SRVNJU1RBTkNFX1NUUkVOR1RIIGVpbmVyIFJ1ZXN0dW5nIGJlZGV1dGVuIGZvbGdlbmRlIFJlc2lzdGVuemVuCisgICAgICAgaW0gVHJhZWdlcjoKKyAgICAgICAKKyAgICAgICBBVF9BUk1PUiwKKyAgICAgICBBVF9TSElFTEQgOiAtMC4xNQorICAgICAgIAorICAgICAgIEFUX0NMT0FLLAorICAgICAgIEFUX1JJTkcsCisgICAgICAgQVRfQU1VTEVUIDogLTAuMTAKKyAgICAgICAKKyAgICAgICBBVF9NSVNDICAgOiBuaWNodCBnZXN0YXR0ZXQhCisKKyAgICAgICBhbmRlcmUgICAgOiAtMC4wNQorICAgICAgIAorICAgIGQpIFp1ciBsZWljaHRlcmVuICdJZGVudGlmaXppZXJiYXJrZWl0JyBzb2xsdGVuIGRpZSBSZXNpc3RhbmNlTW9kaWZpZXIKKyAgICAgICBzb2xsdGVuIGRpZSBnZXNldHp0ZW4gTW9kaWZpZXIgYXVjaCBpbiBkZW0gc2V0emVuZGVuIE9iamVrdCBhbHMKKyAgICAgICBQX1JFU0lTVEFOQ0VfU1RSRU5HVEhTIGdlc2V0enQgd2VyZGVuLiBCZWkgUnVlc3R1bmdlbiBNVVNTIGRpZXMKKyAgICAgICBnZXNjaGVoZW4gKHNpZWhlIGEpICkuCisKKyAgICBlKSBFcyBkdWVyZmVuIGtlaW5lIG1lY2hhbmlzY2hlbiBSZXNpc3RlbnplbiBnZXNldHp0IHdlcmRlbi4gU2NodXR6CisgICAgICAgdm9yIG1lY2hhbmlzY2hlbiBBbmdyaWZmZW4gd2lyZCBkdXJjaCBkaWUgUnVlc3R1bmdlbiBzb3dpZXNvIAorICAgICAgIHNjaG9uIGdld2FlaHJ0IChpbSBHZWdlbnNhdHogenUgU2NodXR6IHZvciBuaWNodG1lY2hhbmlzY2hlbikuIFVuZAorICAgICAgIE5FSU4sIGRhIGdpYnQgZXMga2VpbmUgQXVzbmFobWVuIQorCisgU0lFSEUgQVVDSAorCisgICAgIGJhbGFuY2UsIHJ1ZXN0dW5nZW4sIHdhZmZlbiwgZmVybndhZmZlbiwgdW5pcXVlcywgbnBjcywKKyAgICAgYXR0cmlidXRzdmVyYWVuZGVydW5nZW4sIGthbXBmb2JqZWt0ZSwgZ3Jlbnp3ZXJ0ZQorCisKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIExFVFpURSBBZU5ERVJVTkc6CisgICAgMjAwMy0wOC0yOSwgWm9vay4KZGlmZiAtLWdpdCBhL2RvYy9iYWxhbmNlL3Jlc3RyaWt0aW9uZW4gYi9kb2MvYmFsYW5jZS9yZXN0cmlrdGlvbmVuCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjgzOGJiN2QKLS0tIC9kZXYvbnVsbAorKysgYi9kb2MvYmFsYW5jZS9yZXN0cmlrdGlvbmVuCkBAIC0wLDAgKzEsMzAgQEAKK0VzIGlzdCBtb2VnbGljaCwgV2FmZmVuIHVuZCBSdWVzdHVuZ2VuIHp1IGJlc2NocmFlbmtlbiwgc28gZGFzcyBzaWUKK251ciB2b24gU3BpZWxlcm4gYmVudXR6dCB3ZXJkZW4ga29lbm5lbiwgZGllIGdld2lzc2UgS3JpdGVyaWVuIGVyZnVlbGxlbi4KK0RpZXNlIFBydWVmdW5nIHdpcmQgYWxsZXJkaW5ncyBfbnVyXyBiZWltIFp1ZWNrZW4gb2RlciBBbnppZWhlbiBnZXBydWVmdC4KK1NvbGx0ZSBzaWNoIGRpZSBlbnRzcHJlY2hlbmRlIEVpZ2Vuc2NoYWZ0IGRlcyBTcGllbGVycyB3YWVocmVuZCBkZXIKK0JlbnV0enVuZyBhZW5kZXJuLCBrYW5uIGVyIG9kZXIgc2llIGRhcyBlbnRzcHJlY2hlbmRlIFRlaWwgd2VpdGVyCitudXR6ZW4sIGJpcyBlcyBhdXNnZXpvZ2VuL3dlZ2dlc3RlY2t0IHdpcmQuCisKK1VtIHNvbGNoZSBSZXN0cmlrdGlvbmVuIHp1IGltcGxlbWVudGllcmVuLCBtdXNzIGVpbiBFaW50cmFnIGluIGRpZQorUHJvcGVydHkgUF9SRVNUUklDVElPTlMgZXJmb2xnZW4uIFdhcyBrYW5uIGRvcnQgYWxsZXMgZWluZ2V0cmFnZW4KK3dlcmRlbj8KKworLSBNaW5kZXN0d2VydGUgZnVlciBhbGxlIEF0dHJpYnV0ZSAoR2VzY2hpY2tsaWNoa2VpdCBldGMuKQorLSBNaW5kZXN0d2VydGUgZnVlciAtIFF1ZXN0cHVua3RlCisgICAgICAgICAgICAgICAgICAgIC0gU3BpZWxlcmxldmVsCisgICAgICAgICAgICAgICAgICAgIC0gRXJmYWhydW5nc3B1bmt0ZQorLSBTcGllbGVycmFzc2Ugb2RlciBlaW5lIExpc3RlIHZvbiBlaW4tIGJ6dy4gYXVzZ2VzY2hsb3NzZW5lbiBSYXNzZW4KKy0gR2lsZGVubGV2ZWwgKG1hY2h0IG51ciB3ZW5pZyBTaW5uKQorLSBTZWhlcnN0YXR1cworLSBNYXhpbWFsd2VydGUgZnVlciBBbGtvaG9sLCBFc3NlbiwgVHJpbmtlbgorLSBHZXNpbm51bmcgKG5hY2ggb2JlbiB1bmQgdW50ZW4pCistIEtvZXJwZXJncm9lc3NlIChuYWNoIG9iZW4gdW5kIHVudGVuKQorLSBBbnphaGwgZGVyIGZyZWllbiBIYWVuZGUKKworRGllIEJlZGluZ3VuZ2VuIHNpbmQgYmVsaWViaWcgenUga29tYmluaWVyZW4sIG1hbiBrYW5uIGFsc28gZWluZSBXYWZmZQorcHJvZ3JhbW1pZXJlbiwgZGllIG51ciB2b24gdWViZXIgMiBNZXRlciBncm9zc2VuIHNhdGFuaXNjaGVuIEhvYmJpdHMKK2dlenVlY2t0IHdlcmRlbiBrYW5uLCBkaWUgZWluZW4gbGVlcmVuIE1hZ2VuIGhhYmVuLiAoVmVybXV0bGljaCBlaW5lCityaWVzaWdlIEZsZWlzY2hnYWJlbC4uLikKK0Z1ZXIgZ3V0ZSBXYWZmZW4gdW5kIFJ1ZXN0dW5nZW4gc2luZCBhbGxlcmRpbmdzIHZlcm11dGxpY2ggaW4gZXJzdGVyIExpbmllCitkaWUgUmVzdHJpa3Rpb25lbiBTcGllbGVybGV2ZWwsIFNlaGVyc3RhdHVzIHVuZCB2aWVsbGVpY2h0IG5vY2ggQXR0cmlidXRlCitpbnRlcmVzc2FudC4gVmllbGxlaWNodCBhdWNoIG5vY2ggRXJmYWhydW5nc3B1bmt0ZS4KZGlmZiAtLWdpdCBhL2RvYy9iYWxhbmNlL3J1ZXN0dW5nZW4gYi9kb2MvYmFsYW5jZS9ydWVzdHVuZ2VuCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmE3N2E3MzUKLS0tIC9kZXYvbnVsbAorKysgYi9kb2MvYmFsYW5jZS9ydWVzdHVuZ2VuCkBAIC0wLDAgKzEsMTI4IEBACitBbGxnZW1laW5lcyB1bmQgZ2VuZXJlbGxlcyB1ZWJlciBSdWVzdHVuZ2VuOgorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCitQcm9wZXJ0aWVzOgorCisgICAgICAgIFBfV0VJR0hUCisgICAgICAgICAgIEJpdHRlIHJlYWxpc3Rpc2NoIGhhbHRlbi4gUmluZ2UgbWl0IHdlaXQgdWViZXIgMTAwIEdyYW1tIHNpbmQKKyAgICAgICAgICAgU2Nod2FjaHNpbm4sIGViZW5zbyBIb3NlbiBtaXQgR2V3aWNodGVuIHVudGVyIDIwMCB1c3cuCisgICAgICAgICAgIE9yaWVudGllcnVuZ2VuIGFuIG1pdHRlbGFsdGVuIFJ1ZXN0dW5nZW47IGJlaSBuZXVlcmVuIHRyZXRlbiB6dW0KKyAgICAgICAgICAgVGVpbCBsYWVjaGVybGljaGUgV2VydGUgYXVmLCBkaWUgYmVpIEdlbGVnZW5oZWl0IGFuZ2VwYXNzdCB3ZXJkZW4KKyAgICAgICAgICAgbXVlc3Nlbi4KKworICAgICAgICBQX1ZBTFVFCisgICAgICAgICAgIFdlcnQgZGVyIFJ1ZXN0dW5nZW4gc29sbHRlIGF1Y2ggbmljaHQgenUgZ3Jvc3Mgc2VpbiB1bmQgc2ljaCBlaW4KKyAgICAgICAgICAgd2VuaWcgYW4gZGVyIEFDIG9yaWVudGllcmVuLiBFYmVuZmFsbHM6IFJNcywgc2NoYXV0IGdlbmF1IGhpbi4KKworICAgICAgICBQX0FSTU9VUl9UWVBFCisgICAgICAgICAgIEJpdHRlIHNpbm52b2xsIGJlbnV0emVuISBLbGVpZGVyIGFscyBIb3NlbiBkZWZpbmllcmVuIG9kZXIKKyAgICAgICAgICAgYWVobmxpY2hlcyBpc3QgdW5zaW5uaWcgdW5kIHNvbGx0ZSBuaWNodCBnZW5laG1pZ3Qgd2VyZGVuLiBTaW5kIG1hbAorICAgICAgICAgICB3aWVkZXIgZGllIFJNcyBmdWVyIHp1c3RhZW5kaWcuIEJpdHRlIGFjaHRldCBkcmF1ZiEKKworICAgICAgICBGb2xnZW5kZSBSdWVzdHVuZ3N0eXBlbiBzaW5kIG1vZWdsaWNoOgorCisgICAgICAgICAgICBBVF9BUk1PVVIKKyAgICAgICAgICAgICAgIEFsbGVzIHdhcyBpcmdlbmR3aWUgZGVuIFRvcnNvIHNjaHVldHp0LiBBbHNvIHZvcm4gdW5kIGhpbnRlbiwKKyAgICAgICAgICAgICAgIHdpZSBlaW4gUHVsbG92ZXIsIGVpbiBLZXR0ZW5oZW1kLCBlaW4gUGFuemVyIGV0Yy4KKyAgICAgICAgICAgIEFUX0NMT0FLCisgICAgICAgICAgICAgICBVbWhhZW5nZSwgYXVjaCBpbSB3ZWl0ZXJlbiBTaW5uIHdpZSBEZWNrZW4gdW5kIFNjaGxlaWVyLiBJbQorICAgICAgICAgICAgICAgUHJpbnppcCBkYXMsIHdhcyBub3JtYWxlcndlaXNlIG51ciBkZW4gUnVlY2tlbiBzY2h1ZXR6dCwgYmVpCisgICAgICAgICAgICAgICBCZWRhcmYgYWJlciBhdWNoIHZvcm4gaGVydW0gZ2V3aWNrZWx0IHdlcmRlbiBrb2VubnRlLgorICAgICAgICAgICAgQVRfSEVMTUVUCisgICAgICAgICAgICAgICBLb3BmYmVkZWNrdW5nZW4gamVkZXIgQXJ0LCB2b20gbm9ybWFsZW4gSHV0IHVlYmVyIEtyb25lbiBiaXMKKyAgICAgICAgICAgICAgIGhpbiB6dSBTdGlybmJhZW5kZXJuICh3ZW5uIHNpZSBzY2h1ZXR6ZW4gc29sbGVuKQorICAgICAgICAgICAgQVRfVFJPVVNFUlMKKyAgICAgICAgICAgICAgIEhvc2VuLiBBbGxlcyB3YXMgenVtIHVlYmVyd2llZ2VuZGVuIFRlaWwgZGF6dSBnZWRhY2h0IGlzdCwgZGllCisgICAgICAgICAgICAgICBCZWluZSB1bmQvb2RlciBkZW4gUG9wbyB6dSBzY2h1ZXR6ZW4sIGFsc28gYXVjaCBTY2h1ZXJ6ZW4gb2RlcgorICAgICAgICAgICAgICAgTGVnZ2lucy4gTmF0dWVybGljaCBnZWhvZXJlbiBhdWNoIEJhZGVob3NlbiBvZGVyIExlbmRlbnNjaHVlcnplCisgICAgICAgICAgICAgICBoaWVyaGVyLiBBQyBkYW5uIHNlbGJzdHZlcnN0YWVuZGxpY2ggZ2VyaW5nLgorICAgICAgICAgICAgQVRfQk9PVAorICAgICAgICAgICAgICAgU2NodWhlLCBTdGllZmVsIHVuZCBGdXNzYmVrbGVpZHVuZ2VuIGplZGVyIEFydC4KKyAgICAgICAgICAgIEFUX0dMT1ZFCisgICAgICAgICAgICAgICBIYW5kc2NodWhlIG9kZXIgYWxsZXMsIHdhcyBtYW4gc28genVtIFNjaHV0eiBkZXIgb2JlcmVuCisgICAgICAgICAgICAgICBFeHRyZW1pdGFldGVuIGJlbnV0enQsIHdpZSBBcm1zY2hvbmVyLCBHbGFjZWhhbmRzY2h1aGUsCisgICAgICAgICAgICAgICBGYWV1c3RsaW5nZSwgQm94aGFuZHNjaHVoZSBldGMuCisgICAgICAgICAgICBBVF9RVUlWRVIKKyAgICAgICAgICAgICAgIEtvZWNoZXIgdW5kIGFlaG5saWNoZXMsIGluIGRlbmVuIG1hbiBNdW5pdGlvbiBmdWVyCisgICAgICAgICAgICAgICBTY2h1c3N3YWZmZW4gdW50ZXJicmluZ2VuIGthbm4uIFNjaHVldHplbiB0dXQgc293YXMKKyAgICAgICAgICAgICAgIG5hdHVlcmxpY2ggbmljaHQuCisgICAgICAgICAgICBBVF9TSElFTEQKKyAgICAgICAgICAgICAgIEFsbGVzLCB3YXMgbWFuIHNvIGFuc3RlbGxlIGRlciBlaWdlbmVuIEFybWUgaW4gZWluZW4KKyAgICAgICAgICAgICAgIGdlZ25lcmlzY2hlbiBTY2hsYWcgaGFsdGVuIGthbm4gdW5kIGRhcyBuaWNodCBvZmZpemllbGwgYWxzCisgICAgICAgICAgICAgICBXYWZmZSBkZWtsYXJpZXJ0IGlzdC4gRXMgc29sbHRlIG5pY2h0IGdyYWRlIGF1cyBQYXBpZXIKKyAgICAgICAgICAgICAgIGJlc3RlaGVuLCB1bmQgZGFzIEdld2ljaHQgaXN0IG1pdCBlbnRzY2hlaWRlbmQgZnVlciBkaWUgR3VldGUKKyAgICAgICAgICAgICAgIGRlcyBTY2hpbGRlcy4gU2llIHdlcmRlbiBzZWhyIHdlbmlnIGltIE1HIGdlbnV0enQsIHdhcworICAgICAgICAgICAgICAgZWlnZW50bGljaCBzZWx0c2FtIGlzdC4gU2NobGllc3NsaWNoIGVycmVpY2h0IGVpbiBndXRlciBTY2hpbGQKKyAgICAgICAgICAgICAgIGRpZSBHdWV0ZSB2b24gSGVsbSwgSG9zZSB1bmQgSGFuZHNjaHVoZW4genVzYW1tZW4gb2RlciAzLzQgZGVyCisgICAgICAgICAgICAgICBRdWFsaXRhZXQgZWluZXIgUnVlc3R1bmcuIEFuZGVyZXJzZWl0czogZXMgZ2lidCBhdWNoIG5pY2h0IHNlaHIKKyAgICAgICAgICAgICAgIHZpZWxlIFNjaGlsZGUuIERhIGhlcnJzY2h0IEJlZGFyZiEKKyAgICAgICAgICAgIEFUX1JJTkcKKyAgICAgICAgICAgICAgIFJpbmdlLiBQcmluemlwaWVsbCBzb2xsdGUgZ2VsdGVuLCBkYXMgUmluZ2UgcHJha3Rpc2NoIGtlaW5lICAgICAKKwkgICAgICAgICAgICAgU2NodXR6d2lya3VuZyBoYWJlbiAoYWxzbyBBQyAxIG9kZXIgbWF4LiAyKS4gTnVyLCB1bmQgZGFmdWVyCisJICAgICAgICAgICAgIHNpbmQgZGllIERpbmdlciBkYSwgd2VubiBzaWUgbWFnaXNjaCBzaW5kIGtvZW5uZW4gc2llCisJICAgICAgICAgICAgIHp1c2FldHpsaWNoZSBGdW5rdGlvbmVuIGhhYmVuLgorICAgICAgICAgICAgQVRfQU1VTEVUCisgICAgICAgICAgICAgICBJbSBQcmluemlwIGRhc3NlbGJlIHdpZSBiZWkgQVRfUklORywgbnVyIHdlcmRlbiBkaWUgRGluZ2VyCisgICAgICAgICAgICAgICBtZWlzdCBhbiBLb3JkZWxuIHVtIGRlbiBIYWxzIG9kZXIgYWxzIEJyb3NjaGVuIGFuIGRlbiBLbGFtb3R0ZW4KKyAgICAgICAgICAgICAgIGdldHJhZ2VuLCBrb2VubnRlbiBhbHNvIGplIG5hY2ggR3JvZXNzZSB0YXRzYWVjaGxpY2ggbWVocgorICAgICAgICAgICAgICAgU2NodXR6IGJpZXRlbiBhbHMgZWluIFJpbmcuIEFiZXIgYXVjaCBoaWVyIGdpbHQ6IEFDPjIgc2NocmVpdAorICAgICAgICAgICAgICAgbmFjaCBFcmtsYWVydW5nIHVuZCBzb2xsdGUgbWFnaXNjaGVuIERpbmdlcm4gdm9yYmVoYWx0ZW4KKyAgICAgICAgICAgICAgIGJsZWliZW4uCisgICAgICAgICAgICBBVF9CRUxUCisgICAgICAgICAgICAgICBHdWVydGVsIGFsbGVyIEFydCAoei5CLiBXYWZmZW5ndWVydGVsIG9kZXIgTWFnaXN0ZXJndWVydGVsCisgICAgICAgICAgICAgICBkZXIgWmF1YmVyZXIpLiBTY2h1dHp3aXJrdW5nIGhhdCBzb3dhcyBuYXR1ZXJsaWNoIGthdW0uCisgICAgICAgICAgICBBVF9NSVNDCisgICAgICAgICAgICAgICBBbGxlcywgd2FzIG1hbiBzb25zdCBub2NoIHNvIGFuemllaGVuIGthbm4sIHdhcyBhYmVyIGVoZXIgYWxzCisgICAgICAgICAgICAgICBaaWVycmF0IGdlZGFjaHQgaXN0LiBBQyBpbW1lciAwLiBCaXR0ZSAqa2VpbmUqCisgICAgICAgICAgICAgICBLbGVpZHVuZ3NzdHVlY2tlLCBkaWUgaW4gZWluZSBkZXIgYW5kZXJlbiBLYXRlZ29yaWVuIHBhc3NlbiwKKyAgICAgICAgICAgICAgIGFscyBBVF9NSVNDIGRlZmluaWVyZW4uIERhbm4gbGllYmVyIGRpZSBBQyBzZWhyIHRpZWYuIFdlbm4gZXMKKyAgICAgICAgICAgICAgIGVoIGFscyBHYWcgZ2VkYWNodCBpc3Qga29lbm5lbiBkaWUgU3BpZWxlciBzaWNoIGF1Y2ggYmVpIEJlZGFyZgorICAgICAgICAgICAgICAgdW16aWVoZW4uCisKKyAgICAgICAgUF9FRkZFQ1RJVkVfQUMKKyAgICAgICAgICAgRmFsbHMgZWluZSBEZWZlbmRGdW5jIHZvcmhhbmRlbiBpc3QgdW5kIGRpZSByZWd1bGFlcmUgQUMKKyAgICAgICAgICAgdmVyYWVuZGVydCwgc29sbHRlIHNpZSBnZXNldHp0IHdlcmRlbi4gRXMgd2lyZCBkZXIKKyAgICAgICAgICAgRHVyY2hzY2huaXR0c3dlcnQgZGVyIEFDIGluY2wuIGRlciBEZWZlbmRGdW5jIGdlc2V0enQuIERpZW50IGRlcgorICAgICAgICAgICBLYWVtcGZlcmdpbGRlIHp1ciBFaW5zY2hhZXR6dW5nLCB3aXJkIGF1Y2ggdm9uIEdpbGRlbiBldnRsLiB6dXIKKyAgICAgICAgICAgQmVyZWNobnVuZyB2b24gWnVzYXR6c2NodXR6IG9kZXIgd2VpdGVyZW4gRWZmZWt0ZW4gdmVyd2VuZGV0LgorCisgICAgICAgIFBfREFNX1RZUEUKKyAgICAgICAgICAgQXVjaCBSdWVzdHVuZ2VuIGtvZW5uZW4gZWluZW4gRGFtYWdlLVR5cCBoYWJlbi4gTnV0emVuIHR1dCBkYXMKKyAgICAgICAgICAgYmlzaGVyIG51ciBkaWUgS2FlbXBmZXJnaWxkZSwgYWJlciBzY2hhZGVuIHR1dCdzIGtlaW5lbS4gRGVmYXVsdAorICAgICAgICAgICBpc3QgRFRfQkxVREdFT04uCisKKyAgICAgICAgUF9OT0JVWQorICAgICAgICAgICBBbGxlIFJ1ZXN0dW5nZW4gYWIgMi8zIGRlciBtYXhpbWFsIGZ1ZXIgZGVuIGpld2VpbGlnZW4gUnVlc3R1bmdzdHlwCisgICAgICAgICAgIHp1bGFlc3NpZ2VuIEFDIHdlcmRlbiBiZWltIFZlcmthdWYgaW0gTGFkZW4gZWluYmVoYWx0ZW4uIERlbm5vY2gKKyAgICAgICAgICAgc29sbHRlbiBiZXNvbmRlcmUgUnVlc3R1bmdlbiBQX05PQlVZIGdlc2V0enQgaGFiZW4uIEluc2Jlc29uZGVyZQorICAgICAgICAgICB3YWVyZSBkYXMgZnVlciBhbGxlcyBtaXQgRGVmZW5kRnVuY3MgenUgd3VlbnNjaGVuLCBhYmVyIGF1Y2gKKyAgICAgICAgICAgU2FjaGVuLCBkaWUgYWxzIEdhZyBnZWRhY2h0IHNpbmQuIERhZnVlciBrb2VubmVuIHNpY2ggZGllIFNwaWVsZXIKKyAgICAgICAgICAgcnVoaWcgZXR3YXMgcmVja2VuLgorCisgICAgICAgIFBfREFNQUdFRAorICAgICAgICAgICAgRGllc2UgUHJvcGVydHkgKHNpZSBnaWJ0IGRlbiBHcmFkIGRlciBCZXNjaGFlZGlndW5nIGVpbmVyIFdhZmZlCisgICAgICAgICAgICBvZGVyIFJ1ZXN0dW5nIGFuKSBzb2xsdGUgbWFuIF9uaWNodF8gcGVyIEhhbmQgc2V0emVuLiBTdGF0dGRlc3NlbgorICAgICAgICAgICAgcnVmdCBtYW4gaW4gZGVyIFJ1ZXN0dW5nIERhbWFnZShpbnQpIGF1Zi4gRWluIHBvc2l0aXZlciBQYXJhbWV0ZXIKKyAgICAgICAgICAgIGJlZGV1dGV0IGVpbmUgQmVzY2hhZWRpZ3VuZywgZWluIG5lZ2F0aXZlciBSZXBhcmF0dXIgdW0gZGllc2VuCisgICAgICAgICAgICBXZXJ0LiBJbiBkZXIgRnVua3Rpb24gd2VyZGVuIGFsbGUgbm90d2VuZGlnZW4gQmVkaW5ndW5nZW4KKyAgICAgICAgICAgIGdlcHJ1ZWZ0IChtYXhpbWFsZSBSdWVzdHVuZ3NrbGFzc2UgZXRjKS4KKworCitTcGV6aWFscnVlc3R1bmdlbi9SdWVzdHVuZ2VuIG1pdCBTb25kZXJmdW5rdGlvbjoKKworICAgICAgIEFsbGUgUnVlc3R1bmdlbiwgZGllIHVlYmVyIGVpbmUgRGVmZW5kRnVuYyBvZGVyIGFlaG5saWNoZXMgdmVyZnVlZ2VuCisgICAgICAgc2luZCBnZW5laG1pZ3VuZ3NwZmxpY2h0aWcuCisKKyAgICAgICBQcmluemlwaWVsbCBzb2xsdGVuIGRpZSBnZWx0ZW5kZW4gR3Jlbnp3ZXJ0ZSBuaWNodCB1ZWJlcnNjaHJpdHRlbiAKKyAgICAgICB3ZXJkZW47IEF1c25haG1lbiBrb2VubmVuIHVudGVyIFVtc3RhZW5kZW4gZ2VuZWhtaWd0CisgICAgICAgd2VyZGVuLiBJbW1lciBpc3QgZGVyIFJldHVybi1XZXJ0IHBlciByYW5kb20oKSB6dXJ1ZWNrenVsaWVmZXJuLCBkYSBkZXIKKyAgICAgICBXZXJ0IG9obmUgd2VpdGVyZXMgcmFuZG9tKCkgYXVmYWRkaWVydCB3aXJkLgorCisgICAgICAgU2FlbXRsaWNoZSBTb25kZXJmdW5rdGlvbmVuLCB3aWUgSGVpbHVuZ2VuLCBTb25kZXJhdHRhY2tlbiBhdWYgR2VnbmVyLAorICAgICAgIFdhZmZlbmJlc2NoYWVkaWd1bmdlbiBldGMuIG11ZXNzZW4gZ2VuZWhtaWd0IHdlcmRlbi4KKworICAgICAgIERpZSBQcm9wZXJ0aWVzLCBtaXQgZGVuZW4gSGFuZHNjaHVoZSAnaGFuZGZyZWknIGJ6dyAnZmluZ2VyZnJlaScgZ2VtYWNodAorICAgICAgIHdlcmRlbiwgZHVlcmZlbiBudXIgdmVyZ2ViZW4gd2VyZGVuLCB3ZW5uIGRpZSBIYW5kc2NodWhlIGRlbiBTY2hhZGVuIGRlciBIYW5kCisgICAgICAgbmljaHQgdmVyYWVuZGVybiB1bmQgZGllIEJlc2NocmVpYnVuZyBkZXIgSGFuZHNjaHVoZSBkYXp1IHBhc3N0LgorCistLS0tLS0tLS0tLS0tLS0tLS0tIExFVFpURSBBRU5ERVJVTkc6IEh1bW5pLCAyMDExLTEwLTEzCmRpZmYgLS1naXQgYS9kb2MvYmFsYW5jZS9zY2hhZGVuc3R5cGVuIGIvZG9jL2JhbGFuY2Uvc2NoYWRlbnN0eXBlbgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi40MTg5NmYyCi0tLSAvZGV2L251bGwKKysrIGIvZG9jL2JhbGFuY2Uvc2NoYWRlbnN0eXBlbgpAQCAtMCwwICsxLDQ4IEBACitTY2hhZGVuc3R5cGVuOgorCitFcyB3ZXJkZW4gendlaSBBcnRlbiB2b24gU2NoYWRlbnN0eXBlbiB1bnRlcnNjaGllZGVuOgorCithKSBwaHlzaWthbGlzY2hlIFNjaGFkZW5zdHlwZW4KKworICAgRFRfQkxVREdFT04gICAgICBTY2hsYWdzY2hhZGVuLCB6LkIuIEtldWxlbgorICAgRFRfRVhQTE9TSU9OICAgICBTY2hhZGVuIGR1cmNoIGVpbmUgRXhwbG9zaW9uCisgICBEVF9QSUVSQ0UgICAgICAgIFN0ZWNoc2NoYWRlbiwgei5CLiBMYW56ZW4KKyAgIERUX1JJUCAgICAgICAgICAgUmVpc3NlbmRlciBTY2hhZGUsIHouQi4gS3JhbGxlbgorICAgRFRfU0xBU0ggICAgICAgICBTY2huaXR0c2NoYWRlbiwgei5CLiBTY2h3ZXJ0ZXIKKyAgIERUX1NRVUVFWkUgICAgICAgUXVldHNjaHNjaGFkZW4sIHouQi4gVGVudGFrZWwKKyAgIERUX1dISVAgICAgICAgICAgUGVpdHNjaGVuc2NoYWRlbiwgei5CLiBQZWl0c2NoZW4KKworICAgQWxsZSBwaHlzaWthbGlzY2hlbiBTY2hhZGVuc3R5cGVuIHN0ZWhlbiBhdWNoIGluIGRlbSBNYXBwaW5nCisgICBQSFlTSUNBTF9EQU1BR0VfVFlQRVMuCisKK2IpIG1hZ2lzY2hlIFNjaGFkZW5zdHlwZW4KKworICAgRFRfQUNJRCAgICAgICAgICBTYWV1cmVzY2hhZGVuCisgICBEVF9BSVIgICAgICAgICAgIEx1ZnQobWFuZ2VsKXNjaGFkZW4KKyAgIERUX0NPTEQgICAgICAgICAgS2FlbHRlc2NoYWRlbgorICAgRFRfRklSRSAgICAgICAgICBGZXVlcnNjaGFkZW4KKyAgIERUX0hPTFkgICAgICAgICAgSGVpbGlnZXIgU2NoYWRlbgorICAgRFRfTElHSFROSU5HICAgICBCbGl0enNjaGFkZW4KKyAgIERUX01BR0lDICAgICAgICAgR2VuZXJlbGxlciBtYWdpc2NoZXIgU2NoYWRlbgorICAgRFRfUE9JU09OICAgICAgICBHaWZ0c2NoYWRlbgorICAgRFRfU09VTkQgICAgICAgICBMYWVybXNjaGFkZW4KKyAgIERUX1RFUlJPUiAgICAgICAgQW5nc3RzY2hhZGVuCisgICBEVF9VTkhPTFkgICAgICAgIFVuaGVpbGlnZXIvZGFlbW9uaXNjaGVyIFNjaGFkZW4KKyAgIERUX1dBVEVSICAgICAgICAgV2Fzc2Vyc2NoYWRlbgorCisgICBBbGxlIG1hZ2lzY2hlbiBTY2hhZGVuc3R5cGVuIHN0ZWhlbiBhdWNoIGluIGRlbSBNYXBwaW5nCisgICBNQUdJQ0FMX0RBTUFHRV9UWVBFUy4KKworV2FmZmVuIGR1ZXJmZW4gbWF4aW1hbCA1MCUgaG9tb2dlbmVuIG1hZ2lzY2hlbiBTY2hhZGVuIG1hY2hlbi4gCitEaWUgU3VtbWUgZGVyIG1hZ2lzY2hlbiBTY2hhZWRlbiBkYXJmIG1heGltYWwgNjYlIGJldHJhZ2VuLiAKK0VzIF9tdXNzXyBpbW1lciBtaW5kZXN0ZW5zIGVpbiBwaHlzaWthbGlzY2hlciBTY2hhZGVuIGdlc2V0enQgCitzZWluLiBEZXIgQW50ZWlsIGFuIHBoeXNpa2FsaXNjaGVtIFNjaGFkZW4gYmV0cmFlZ3QgZGVtenVmb2xnZQoraW1tZXIgbWluZGVzdGVucyAzNCUuIFNvbGNoZSBXYWZmZW4gc2luZCBnZW5lcmVsbCBnZW5laG1pZ3VuZ3MtCitwZmxpY2h0aWcuCisKK0dlbmVobWlndW5nc3BmbGljaHRpZyBzaW5kIGF1Y2ggZ2VuZXJlbGwgV2FmZmVuLCBkaWUgYWxzIFNjaGFkZW5zLQordHlwIERUX1RFUlJPUiwgRFRfU09VTkQsIERUX0FJUiBvZGVyIERUX1NRVUVFWkUgZW50aGFsdGVuLgorCitEZXIgU2NoYWRlbnN0eXAgRFRfRVhQTE9TSU9OIHdpcmQgbmljaHQgbWVociBnZW5laG1pZ3QuCisKKwpkaWZmIC0tZ2l0IGEvZG9jL2JhbGFuY2UvdGVjaG5pa2VuIGIvZG9jL2JhbGFuY2UvdGVjaG5pa2VuCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjljMTBlYWUKLS0tIC9kZXYvbnVsbAorKysgYi9kb2MvYmFsYW5jZS90ZWNobmlrZW4KQEAgLTAsMCArMSwxMDggQEAKKyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyogRGllc2VyIFRleHQgaXN0IHZlcmFsdGV0LiBEaWUgVGVjaG5pa2VuIHdlcmRlbiB2b24gZGVyIE11ZGxpYiBuaWNodCAgICAgICoKKyogYXVzZ2V3ZXJ0ZXQgdW5kIG1vbWVudGFuIGF1Y2ggdm9uIGtlaW5lciBHaWxkZSAoQXVzbmFobWU6IGRpZSBUYW5qaWFuICAgICoKKyogemVpZ3Qgc2llIGFuLCB0dXQgYWJlciBuaXggZGFtaXQuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoKKyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAgICAgUF9URUNITklRVUU6IFRlY2huaWtlbiwgbWl0IGRlbmVuIFdhZmZlbiBlaW5nZXNldHp0IHdlcmRlbiBrb2VubmVuCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK1RRX1RIUkFTSCAtICJTY2hsYWd0ZWNobmlrIgorCisgICAgRGllIHZvbSBWZXJzdGFlbmRuaXMgaGVyIGVpbmZhY2hzdGUgVGVjaG5pazogTWFuIG5laG1lIHNpY2ggZWluZW4KKyAgICBHZWdlbnN0YW5kLCAgZGVyIGdyb3NzIGdlbnVnIGlzdCB1bmQgaGFsYndlZ3MgIGJyYXVjaGJhcmUgIERpY2h0ZSAKKyAgICBiZXNpdHp0IC0gYWxzbyBuaWNodCBnZXJhZGUgZmVkZXJsZWljaHQgIGZ1ZXIgc2VpbmUgR3JvZXNzZSBpc3QgLSAKKyAgICB1bmQgaGF1ZSBkcmF1Zi4gIEVnYWwgb2IgSGVua2Vyc2F4dCwgIFN0b2NrLCAgU3R1aGwsICBCaWVyZmxhc2NoZSAKKyAgICAoZ2FueiksIEtudWVwcGVsLCBLZXVsZSBvZGVyIEJyYXRwZmFubmUsICBkYXMgdW5kIGFlaG5saWNoZXMgc2luZCAKKyAgICBicmF1Y2hiYXJlICAnV2FmZmVuJywgIHVtIG1pdCBkaWVzZXIgVGVjaG5payBFcmZvbGcgenUgaGFiZW4uICBFcyAKKyAgICBpc3QgZWluZSBzY2hsYWdlbmRlIEJld2VndW5nLCAgYWxzbyBkYXMgZ2V3b2xsdGUgc2Nod3VuZ2hhZnRlIFp1LQorICAgIHNhbW1lbmZ1ZWhyZW4gendlaWVyIEtvZXJwZXIsIGZ1ZXIgZ2V3b2VobmxpY2ggV2FmZmUgdW5kIEdlZ25lci4KKworCitUUV9USFJVU1QgLSAiU3Rvc3N0ZWNobmlrIgorCisgICAgQXVjaCBkaWVzZSBUZWNobmlrIGVyZnJldXQgc2ljaCB6dW1pbmRlc3QgaW4gS25laXBlbnNjaGxhZWdlcmVpZW4KKyAgICBncm9zc2VyIEJlbGllYnRoZWl0OiBEYXMgU3Rvc3Nlbi4gIE1pdCBlaW5lbSB2b3J6dWdzd2Vpc2Ugc3BpdHplbgorICAgIEdlZ2Vuc3RhbmQgd2llIFNwZWVyLCBEb2xjaCwgQmllcmZsYXNjaGUgKHplcmJyb2NoZW4pIG9kZXIgSGVsbGUtCisgICAgYmFyZGUgIHdpcmQgZGVtIEdlZ25lciBlaW4gTG9jaCBpbiBkZW4gTGVpYiAgZ2VzdG9zc2VuLCAgaW0gRmFsbGUgCisgICAgZWluZXMgICBzdHVtcGZlbiBHZWdlbnN0YW5kZXMgd2llIHouQi4gIGVpbmVtIEthbXBmc3RvY2sgb2RlciBkZW0gCisgICAgZWlnZW5lbiAgWmVpZ2VmaW5nZXIgb2RlciBLbm9lY2hlbCB6aWVsdCBtYW4gYXVmIFZpdGFscHVua3RlIG9kZXIKKyAgICBXZWljaHRlaWxlIHVuZCBlcnppZWx0IGF1Y2ggZGFtaXQgYmVlaW5kcnVja2VuZGUgRXJnZWJuaXNzZS4gIERhcworICAgIEdld2ljaHQgZGVyIFdhZmZlIGlzdCAgd2VuaWdlciB2b24gQmVkZXV0dW5nLCAgZGEgIGRlciBBa3RldXIgYmVpIAorICAgIGVpbmVtIGtvcnJla3QgYXVzZ2VmdWVocnRlbSBzZWluZSBlaWdlbmUgTWFzc2UgbWl0IGVpbnNldHp0LgorCisKK1RRX1NUUk9LRSAtICJTdHJlaWNodGVjaG5payIKKworICAgIEVpbiBldHdhcyBlaWdlbndpbGxpZyBhbm11dGVuZGVyIEJlZ3JpZmYsICBhYmVyIGJlaSBnZW5hdWVyZXIgQmUtCisgICAgdHJhY2h0dW5nIGhhdCAgZGllc2UgVGVjaG5payB0YXRzYWVjaGxpY2ggZXR3YXMgbWl0IFN0cmVpY2hlbG4genUKKyAgICB0dW46ICBEaWUgd2ljaHRpZ3N0ZSBLb21wb25lbnRlIGRlciBCZXdlZ3VuZyBmdWVocnQgbWVociBvZGVyIHdlLQorICAgIG5pZ2VyIGFtICBHZWduZXIgX2VudGxhbmdfIHVuZCBuaWNodCBhdWYgaWhuIHp1LiAgTWFuIHN0ZWxsZSBzaWNoIAorICAgIGVpbiBTY2h3ZXJ0IHZvciwgZGFzIGdlc2NobWVpZGlnIGR1cmNoIGRpZSBLZWhsZSBlaW5lcyBPcmtzIGdsZWktCisgICAgdGV0ICB1bmQgZWluZSBNZW5nZSBCbHV0ICBmcmVpc2V0enQgb2RlciBlaW4gUGVyZ2FtZW50YmxhdHQsICBkYXMKKyAgICBtYW4gYXVzIGRlciBIYW5kIGdlem9nZW4gYmVrb21tdCAgKHVuZCBlYmVuZmFsbHMgZWluZSBNZW5nZSAgQmx1dAorICAgIGZyZWlzZXR6dCkuICBJbiBkZW4gYWxsZXJtZWlzdGVuIEZhZWxsZW4gaXN0IGFsc28gZWluZSBtb2VnbGljaHN0CisgICAgc2NoYXJmZSBTY2huZWlkZSBpbSBTcGllbCB1bmQsIGF1Y2ggd2VubiBzY2htZXJ6aGFmdGUgRXJmYWhydW5nZW4KKyAgICBtaXQgIFBhcmdhbWVudGthbnRlbiBnZWxlZ2VudGxpY2ggZ2VnZW50ZWlsaWdlcyAgdmVybXV0ZW4gbGFzc2VuLCAKKyAgICBqZSBzY2hhZXJmZXIgZGllIFNjaG5laWRlLCBkZXN0byB3ZW5pZ2VyIERydWNrIGluIFJpY2h0dW5nIGZlaW5kLQorICAgIGxpY2hlbiAgWmllbGtvZXJwZXIgIG11c3MgZnVlciAgZWluZW4gICJkdXJjaHNjaG5laWRlbmRlbiBFcmZvbGciIAorICAgIGF1c2dldWVidCB3ZXJkZW4uCisKKworVFFfV0hJUCAtICJQZWl0c2NodGVjaG5payIKKworICAgIFVudGVyIGRlciBQZWl0c2NodGVjaG5payB3aXJkIG51biBhbGxlcyB6dXNhbW1lbmdlZmFzc3QsICB3YXMgZGVuCisgICAgVW1nYW5nIG1pdCBiZXdlZ2xpY2hlbiBFbGVtZW50ZW4gYW4gZGVyIFdhZmZlIGJldHJpZmZ0LiAgRWdhbCwgb2IKKyAgICBQZWl0c2NoZSBhIGxhIEdlb3JnZSBMdWNhcywgbmV1bnNjaHdhZW56aWdlIEthdHplLCBNYW5yaWtpLUd1c2FyaQorICAgIChlaW5lIGhhbGJtZXRlciBsYW5nZSBLZXR0ZSBtaXQgR2V3aWNodGVuIGFuIGRlbiBFbmRlbiksIGVpbi0gYmlzCisgICAgZHJlaWtvZXBmaWdlbSAgYmVrZXR0ZXRlbiBNb3JnZW5zdGVybiBvZGVyIGdhciBEcmVzY2hmbGVnZWwsICBzaWUgCisgICAgc2luZCB6dW1pbmRlc3R0ZWlsd2Vpc2Ugc2VociB1bnRlcnNjaGllZGxpY2gga29uemlwaWVydCAoc28gZmVobHQKKyAgICBkZXIgIFBlaXRzY2hlIGFtIGFldXNzZXJlbiBFbmRlIGRhcyBHZXdpY2h0LCAgc28gZGFzcyBqZW5lcyBkdXJjaAorICAgIGVpbmUgZ2VnZW5sYWV1ZmlnZSBCZXdlZ3VuZyBiZXNjaGxldW5pZ3Qgd2VyZGVuIG11c3MpLCBoYWJlbiBhYmVyCisgICAgZWluZXMgZ2VtZWluc2FtOiBEZXIgU2NoYWRlbiB3aXJkIGR1cmNoIGVpbiB1ZWJlciBkaWUgbm9ybWFsZSBCZS0KKyAgICB3ZWd1bmcgZGVzIEthZW1wZmVycyAgaGluYXVzIGJlc2NobGV1bmlndGVzIFRlaWwgZGVyIFdhZmZlIHZlcnVyLQorICAgIHNhY2h0LiBEdXJjaCBqZW5lIEJld2VnbGljaGtlaXQgZGVyICBXYWZmZSB3aXJkIGVpbiBzZWhyICBncm9zc2VzIAorICAgIE1hc3MgYW4gS29vcmRpbmF0aW9uc3Zlcm1vZWdlbiB2b20gS2FlbXBmZXIgYWJ2ZXJsYW5ndC4KKworLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCitWZXJtaXNjaHRlcworCisgICAgLSBXYWZmZW4ga29lbm5lbiAgc2ljaCBmdWVyIG1laHJlcmUgIFRlY2huaWtlbiBlaWduZW4uICBNaXQgZWluZW0KKyAgICAgIEthdGFuYSwgZGVtIFNjaHdlcnQgZGVyIFNhbXVyYWksIGJlaXNwaWVsc3dlaXNlIGthbm4gbWFuIGluIGRpZQorICAgICAgdW5nZXNjaHVldHp0ZW4gUGFydGllbiBkZXMgR2VnbmVycyBzdGVjaGVuLCAgZGVtIEdlZ25lciBtaXQgZGVyIAorICAgICAgU3RyZWljaHRlY2huaWsgdGllZmUgU2Nobml0dGUgaW4gZGllIFVudGVyc2VpdGVuIGRlciBBcm1lICAoZWluCisgICAgICBkdXJjaCB0eXBpc2NoZSBTYW11cmFpcnVlc3R1bmdlbiBzY2hsZWNodCBnZXNjaHVldHp0ZXIgQmVyZWljaCkKKyAgICAgIHp1ZnVlZ2VuLCB1bmQgbWl0IGRlciBiZXJ1ZWhtdGVuIGhhbGJlbiBLb2VycGVyZHJlaHVuZyBkZW0gaW4tCisgICAgICB6d2lzY2hlbiB0YXVtZWxuZGVtIEtvbnRyYWhlbnRlbiBkZW4gS29wZiBhYnNjaGxhZ2VuLiAKKworICAgIC0gV2FmZmVuIGtvZW5uZW4gc2ljaCwgb2J3b2hsIHZvbiBkZXIgZ2xlaWNoZW4gR2F0dHVuZywgZnVlciB2ZXItCisgICAgICBzY2hpZWRlbmUgVGVjaG5pa2VuIGVpZ25lbi4gIEVpbiBzcGl0emVyIERvbGNoIG1hZyBlaW5lIHN0dW1wZmUKKyAgICAgIEtsaW5nZSBoYWJlbiAgdW5kIG51ciBmdWVyIGF1c3NjaGxpZXNzbGljaCBzdG9zc2VuZGUgIFByYWt0aWtlbgorICAgICAgenUgZ2VicmF1Y2hlbiB6dSBzZWluLCB3YWVocmVuZCBlaW4gYWJnZXJ1bmRldGVzIEt1ZWNoZW5tZXNzZXIsCisgICAgICBlYmVuZmFsbHMgdm9tIFR5cCAiWnluIiwgZnVlciBrYW50aWdlcyBadXNjaGxhZ2VuIHVuZCBldmVudHVlbGwKKyAgICAgIGF1Y2ggZnVlciBzY2huaXR0aWdlIFN0cmVpY2h0ZWNobmlrZW4gaGVyaGFsdGVuIGthbm4uCisKKyAgICAtIEplIG5hY2ggWndlY2sgdW5kIEtvZW5uZW4gd2lyZCBkaWUgYmVzdGUgenUgdmVyd2VuZGVuZGUgVGVjaG5payAKKyAgICAgIHZhcmlpZXJlbjogIFdlbm4gZXMgdW0gYXJtZSBHcmFzaGFsbWUgZ2VodCwgIHdpcmQgZGllIFNlbnNlIG1pdCAKKyAgICAgIHNjaG5laWRlbmRlbiBCZXdlZ3VuZ2VuIGdlZnVlaHJ0ICAoc2Nob2VuIGluIGRlciAgTWlsa2EtV2VyYnVuZyAKKyAgICAgIHp1IHNlaGVuLCAgZnVlciBkaWUsIGRpZSBlcyBwYXJ0b3V0IG5pY2h0IGdsYXViZW4gd29sbGVuKSwgIGJlaSAKKyAgICAgIGVpbmVyIEJhdWVybnJldm9sdGUgbWFnIGRhcyBndXRlIFN0dWVjayBqZWRvY2ggYXVjaCBtaXQgYW5kZXJlbiAKKyAgICAgIFRlY2huaWtlbiBlZmZla3RpdiAodW5kIHZpZWxsZWljaHQgc29nYXIgZWZmZWt0aXZlcikgZWluZ2VzZXR6dCAKKyAgICAgIHdlcmRlbiwgd2VyIHdlaXNzLCB3ZXIgd2FyIHNjaG9uIGRhYmVpLi4uPyAgU2VsYnN0IGJlaSBub3JtYWxlbgorICAgICAgV2FmZmVuIHdpZSBTY2h3ZXJ0ZXJuICB3dWVyZGUgZWluIFVuZ2V1ZWJ0ZXIgIHNlbHRlbiB2ZXJzdWNoZW4sICAKKyAgICAgIG1pdCBTdHJlaWNodGVjaG5pa2VuIFNjaGFkZW4genUgdmVydXJzYWNoZW4sIGRlbm4gZGFzIFp1c3RlY2hlbiAKKyAgICAgIGlzdCBzY2hsaWNodCBlaW5mYWNoZXIuCisKKyAgICAtIEVzIHdpcmQgaW1tZXIgIGJlc29uZGVyZSBXYWZmZW4gZ2ViZW4uICBTbyAgc2luZCBiZWlzcGllbHN3ZWlzZQorICAgICAgZGFzIFp3ZWlsaWxpZW4gdW5kICBkaWUgSGVsbGViYXJkZSAgYmVpZGUgZGVtIFR5cCAiS3pyb2siIChmdWVyCisgICAgICBuaWNodC1UcnZlczogU3RhbmdlbndhZmZlbikgenV6dW9yZG5lbiwgZGllIFRlY2huaWtlbiAgd2VpY2hlbiwKKyAgICAgIGJlZGluZ3QgIGR1cmNoIGRpZSBWaWVsc2VpdGlna2VpdCAgZGVyIFdhZmZlbiwgIGplZG9jaCB2b24gIGRlcgorICAgICAgTm9ybSBhYjogRGFzIFp3ZWlsaWxpZW4sIGFuIGplZGVtICBFbmRlIGVpbmUgbGFuZ2UgdW5kICBzY2hhcmZlCisgICAgICBLbGluZ2UsICBrYW5uICBlYmVuc28gIHZpZWxzZWl0aWcgIGdlaGFuZGhhYnQgIHdlcmRlbiAgd2llICBlaW4gCisgICAgICBTY2h3ZXJ0LCAgd2FlaHJlbmQgZGllIEhlbGxlYmFyZGUgKGVpbmUgTWlzY2h1bmcgYXVzICBMYW56ZSB1bmQKKyAgICAgIEF4dCkgZHVyY2ggaWhyZSB1bmF1c2dld29nZW5lIEdld2ljaHRzdmVydGVpbHVuZyAgdW5kIGRlbSBkYW1pdAorICAgICAgdmVyYnVuZGVuZW4gUG90ZW56aWFsIGFuIFNjaHd1bmcgc2NobGljaHR3ZWcgRElFIFdhZmZlIGRlciBXYWhsIAorICAgICAgZnVlciBmZWlnZSBad2VyZ2UgaXN0OiAgU2Nod2luZ2VuIHdpZSBlaW5lIGdyb3NzZSAgQXh0IHVuZCAgZGVuIAorICAgICAgR2VnbmVyIGF1ZiBEaXN0YW56IGhhbHRlbiBrb2VubmVuLiAgR3V0LCAgZGFzcyBlcyBrZWluZSAgZmVpZ2VuIAorICAgICAgWndlcmdlIGdpYnQgO28pCmRpZmYgLS1naXQgYS9kb2MvYmFsYW5jZS93YWZmZW4gYi9kb2MvYmFsYW5jZS93YWZmZW4KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNDRmYTZlMwotLS0gL2Rldi9udWxsCisrKyBiL2RvYy9iYWxhbmNlL3dhZmZlbgpAQCAtMCwwICsxLDExMiBAQAorQWxsZ2VtZWluZXMgdW5kIGdlbmVyZWxsZXMgenUgV2FmZmVuOgorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKKyAgIFBfV0MKKyAgICAgICAgRGllIFdDIHNvbGx0ZSBlaW5pZ2VybWFzc2VuICJyZWFsaXN0aXNjaCIgZ2V3YWVobHQgd2VyZGVuLiBEaWUKKyAgICAgICAgVmVyYW50d29ydHVuZyBoaWVyZnVlciBvYmxpZWd0IGRlbiBqZXdlaWxpZ2VuIFJNcy4gU2llIHNvbGx0ZQorICAgICAgICB6d2lzY2hlbiBjYS4gMzUgdW5kIDIwMCBsaWVnZW4uIEF1ZiBqZWRlbiBGYWxsIHNpbmQgZGllIGFrdHVlbGxlbgorICAgICAgICBHZW5laG1pZ3VuZ3NncmVuemVuIHp1IGJlYWNodGVuLiBTb2xsdGUgZGllIFdDIGRpZXNlIEdyZW56ZW4KKyAgICAgICAgdWViZXJzY2hyZWl0ZW4sIHVudGVybGllZ3QgZGllIFdhZmZlIGF1c3NlciBkZXIgR2VuZWhtaWd1bmcgZHVyY2gKKyAgICAgICAgZGVuIFJNIGRlciBCZXVydGVpbHVuZyBkdXJjaCBkYXMgV2FmZmVuZ3JlbWl1bS4KKworICAgUF9OUl9IQU5EUworICAgICAgICBXYWZmZW4gdWViZXIgZWluZXIgZWZmZWt0aXZlbiBXQyB2b24gMTUwIG11ZXNzZW4gendlaWhhZW5kaWcgc2Vpbi4KKyAgICAgICAgQXVzbmFobWVuIGtvZW5uZW4gdW50ZXIgVW1zdGFlbmRlbiBnZW5laG1pZ3Qgd2VyZGVuLCB6dW0gQmVpc3BpZWwKKyAgICAgICAgd2VubiBkaWUgV2FmZmUgc2Nod2VyIGVycmVpY2hiYXIgb2RlciB6YWhsZW5tYWVzc2lnIGJlZ3Jlbnp0LCBlaW5lCisgICAgICAgIFF1ZXN0YmVsb2hudW5nIGV0Yy4gaXN0LiBBbGxlIGVpbmhhZW5kaWdlbiBXYWZmZW4gdWViZXIgV0MgMTQwIHNpbmQKKyAgICAgICAgaW4gamVkZW0gRmFsbCBnZW5laG1pZ2VuIHp1IGxhc3Nlbi4KKworICAgICAgICBNZXNzZXIgbXVlc3NlbiBnZW5lcmVsbCBlaW5oYWVuZGlnIHNlaW4hCisKKyAgIFBfV0VJR0hUIAorICAgICAgICBCaXR0ZSByZWFsaXN0aXNjaCBoYWx0ZW4uIERhbWl0IGlzdCAqbmljaHQqIGRhcyBSTC1HZXdpY2h0CisgICAgICAgIGdlbWVpbnQsIHNvbmRlcm4gbWFuIHNvbGx0ZSBhbSBiZXN0ZW4gdmVyZ2xlaWNoYmFyZSBXYWZmZW4gZGVzCisgICAgICAgIE1HIGFscyBNYXNzc3RhYiBudXR6ZW4uIERhIGhpZXIgei5ULiBncmF2aWVyZW5kZSBEaXNrcmVwYW56ZW4gCisgICAgICAgIGJlc3RlaGVuLCBldnRsLiBtYWwgbWVocmVyZSB2ZXJnbGVpY2hlbi4gRGllIFZlcmFudHdvcnR1bmcgCisgICAgICAgIGhpZXJmdWVyIG9ibGllZ3QgZGVuIFJNcy4KKworICAgICAgICBXYWZmZW4gbWl0IGVpbmVtIEdld2ljaHQgdm9uIHVlYmVyIDQwMDAgR3JhbW0gc29sbHRlbiBub3JtYWxlcndlaXNlCisgICAgICAgIGF1Y2ggendlaWhhZW5kaWcgc2VpbiBvZGVyIG11ZXNzZW4gZGVyIEJhbGFuY2Ugdm9yZ2VsZWd0IHdlcmRlbi4KKwkKKyAgIFBfVkFMVUUKKyAgICAgIFdpZSBiZWkgUF9XRUlHSFQgc2luZCBkaWUgUk1zIGdlZnJhZ3Q6IEF1Z2VubWFzcyB6YWVobHQuIFdlcnRlCisgICAgICB1ZWJlciAxMDAwMCBvZGVyIHNvIHNpbmQgendhciBuZXR0LCBhYmVyIHNpbm5sb3MgdW5kIHVucmVhbGlzdGlzY2guCisKKyAgIFBfREFNX1RZUEUKKyAgICAgIEplZGUgV2FmZmUsIGRpZSBhdXMgcGh5c2lrYWxpc2NoZW0gTWF0ZXJpYWwgYmVzdGVodCAoYWxzbyBmYWt0aXNjaAorICAgICAgYWxsZXMgbWl0IEhhcmR3YXJlKSAqbXVzcyogZWluZW4gcGh5c2lrYWxpc2NoZW4gU2NoYWRlbnN0eXAgaGFiZW4uCisKKyAgIFBfV0VBUE9OX1RZUEUKKyAgICAgIFdUX1NXT1JELCBXVF9BWEUsICBXVF9DTFVCLCBXVF9TUEVBUiwgV1RfS05JRkUsIFdUX0FNTVUsIFdUX01BR0lDLAorICAgICAgV1RfV0hJUCwgV1RfU1RBRkYsIFdUX01JU0MsIFdUX1JBTkdFRF9XRUFQT04gCisKKyAgIFBfREFNQUdFRAorICAgICAgRGllc2UgUHJvcGVydHkgKHNpZSBnaWJ0IGRlbiBHcmFkIGRlciBCZXNjaGFlZGlndW5nIGVpbmVyIFdhZmZlCisgICAgICBvZGVyIFJ1ZXN0dW5nIGFuKSBzb2xsdGUgbWFuIF9uaWNodF8gcGVyIEhhbmQgc2V0emVuLiBTdGF0dGRlc3NlbgorICAgICAgcnVmdCBtYW4gaW4gZGVyIFdhZmZlIERhbWFnZShpbnQpIGF1Zi4gRWluIHBvc2l0aXZlciBQYXJhbWV0ZXIKKyAgICAgIGJlZGV1dGV0IGVpbmUgQmVzY2hhZWRpZ3VuZywgZWluIG5lZ2F0aXZlciBSZXBhcmF0dXIgdW0gZGllc2VuCisgICAgICBXZXJ0LiBJbiBkZXIgRnVua3Rpb24gd2VyZGVuIGFsbGUgbm90d2VuZGlnZW4gQmVkaW5ndW5nZW4KKyAgICAgIGdlcHJ1ZWZ0IChtaW5pbWFsZS9tYXhpbWFsZSBXYWZmZW5rbGFzc2UgZXRjKS4KKworICAgUF9FRkZFQ1RJVkVfV0MKKyAgICAgIEhpZXIga2FubiBkaWUgZXZ0bCBkdXJjaCBlaW5lIEhpdEZ1bmMgdmVyYWVuZGVydGUgV0MgYW5nZWdlYmVuCisgICAgICB3ZXJkZW4uIERlciBEdXJjaHNjaG5pdHRzd2VydCBzb2xsIGRhIHN0ZWhlbi4gRGllIEthZW1wZmVyZ2lsZGUKKyAgICAgIGthbm4gZGFzIGluIGdld2lzc2VuIEdyZW56ZW4gYWJzY2hhZXR6ZW4gdW5kIGVzIHdpcmQgYXVjaCBmdWVyCisgICAgICBkaWUgR3VldGUgdm9uIFp1c2F0emFuZ3JpZmZlbiB2b24gR2lsZGVuIGdlbnV0enQuCisKKyAgIFBfRUZGRUNUSVZFX0FDCisgICAgICBGdWVyIFBhcmFkZXdhZmZlbiBzZXR6ZW4uIFdlcnRlIHVuYmVkaW5ndCBtaXQgQm9pbmcgYWJzcHJlY2hlbiEKKworICAgUF9OT0JVWQorICAgICAgV2FmZmVuIGFiIFdDIDE1MCB3ZXJkZW4gYmVpbSBWZXJrYXVmIGltIExhZGVuIHp1cnVlY2tiZWhhbHRlbi4gRXMKKyAgICAgIHNvbGx0ZSBhYmVyIGF1Y2ggZnVlciBXYWZmZW4sIGRpZSBIaXRGdW5jcyBlbnRoYWx0ZW4sIFBfTk9CVVkKKyAgICAgIGdlc2V0enQgd2VyZGVuLgorCitTcGV6aWFsd2FmZmVuL1dhZmZlbiBtaXQgU29uZGVyZnVua3Rpb24KKworICAgKiogQUxMRSBXYWZmZW4gbWl0IEhpdEZ1bmMgb2RlciBlbnRzcHJlY2hlbmRlciBGa3QuIG11ZXNzZW4gICAqKgorICAgKiogZ2VuZWhtaWd0IHdlcmRlbiEgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKgorCisgICBTb2xjaGUgV2FmZmVuIG11ZXNzZW4gdWViZXIgZWluIFBfSU5GTyB2ZXJmdWVnZW4gdW5kIGlyZ2VuZHdvIGluIGlocmVyCisgICBCZXNjaHJlaWJ1bmcgb2RlciBpbSBQX0lORk8gbWluZGVzdGVucyBlaW5lIEFuZGV1dHVuZyB1ZWJlciBkaWUKKyAgIEhlcmt1bmZ0IG9kZXIgZGVuIEdydW5kIGlocmVyIGJlc29uZGVyZW4gRmFlaGlna2VpdCBoYWJlbi4KKworICAgQXVjaCBTcGV6aWFsd2FmZmVuIHNvbGx0ZW4gbmFjaCBNb2VnbGljaGtlaXQgbmljaHQgdWViZXIgZWluZQorICAgRUZGRUNUSVZFX1dDIHZvbiAyMDAgaGluYXVzZ2VoZW4uIERlciBSZXR1cm4tV2VydCBkZXIgSGl0RnVuYywgc29mZXJuCisgICBlciB2b24gMCBhYndlaWNodCwgTVVTUyBwZXIgcmFuZG9tKCkgenVydWVja2dlZ2ViZW4gd2VyZGVuLCBkYSBlciBvaG5lCisgICB3ZWl0ZXJlcyByYW5kb20oKSBhdWYgZGllIFdDIGF1ZmFkZGllcnQgd2lyZC4KKworICAgWnUgYmVhY2h0ZW4gaXN0LCBkYXNzIG1hbiBiZWkgV2FmZmVuLCBkaWUgbnVyIGZ1ZXIgTlBDcyBtZWhyIFNjaGFkZW4gCisgICBtYWNoZW4gc29sbGVuLCBuaWNodCAobnVyKSB1ZWJlciBQX1JBQ0UgcHJ1ZWZ0LCBvYiBkZXIgQmVudXR6ZXIgZWluIAorICAgc29sY2hlciBpc3QuIEVzIGlzdCBkZW5rYmFyLCBkYXNzIFNwaWVsZXIgaWhyZSBSYXNzZSB0ZW1wb3JhZXIgdmVyLQorICAgYWVuZGVybiBrb2VubmVuLiBXYWZmZW4gZGllIG51ciBkYW5uIGJlc3NlciB6dXNjaGxhZ2VuLCB3ZW5uIGVzCisgICBrZWluZW0gU3BpZWxlciB6dWd1dGVuIGtvbW1lbiBrYW5uICghaW50ZXJhY3RpdmUsIG5pY2h0IHp1ZWNrYmFyIAorICAgZHVyY2ggSGlsZnMtTlBDIGV0Yy4pLCBtdWVzc2VuIG5pY2h0IGdlbmVobmlndCB3ZXJkZW4uCisKKyAgIFdhZmZlbiwgZGllIE1vbnN0ZXIgdmVyZ2lmdGVuIChhbHNvIG5pY2h0IG51ciBQX0RBTV9UWVBFIERUX1BPSVNPTgorICAgaGFiZW4pIHNpbmQgendhciBuaWNodCBncnVuZHNhZXR6bGljaCB2ZXJib3RlbiwgYWJlciBkb2NoIHVuZXJ3dWVuc2NodC4KKyAgIFNpZSBzaW5kIGF1ZiBqZWRlbiBGYWxsIGdlbmVobWlndW5nc3BmbGljaHRpZy4gQXVzc2VyZGVtIHNvbGx0ZSBkaWUKKyAgIFdhaHJzY2hlaW5saWNoa2VpdCBlaW5lciBWZXJnaWZ0dW5nIHBybyBLYW1wZnJ1bmRlIG1heC4gYmVpIDElIGxpZWdlbi4KKworUGFyaWVyd2FmZmVuCisgICAgICAgCisgICBQYXJpZXJ3YWZmZW4gc2luZCBXYWZmZW4sIGRpZSBkaWUgVmVydGVpZGlndW5nIHVudGVyc3R1ZXR6ZW4uICAKKyAgIEVpbmUgV2FmZmUgd2lyZCBhbHMgUGFyaWVyd2FmZmUgdmVyd2VuZGV0LCB3ZW5uIGRpZSBQcm9wZXJ0eQorICAgUF9QQVJSWSBnZXNldHp0IGlzdC4gRm9sZ2VuZGUgV2VydGUgc2luZCBtb2VnbGljaDoKKyAgICAgICAKKyAgIFBBUlJZX05PVCAgICAgRGllIGlzdCBLRUlORSBQYXJpZXJ3YWZmZSAoPWRlZmF1bHQpLgorICAgICAgIAorICAgUEFSUllfT05MWSAgICBEaWVzIGlzdCBlaW5lIHJlaW5lIFBhcmllcndhZmZlLgorCisgICBQQVJSWV9UT08gICAgIERpZXNlIFdhZmZlIHdpcmQgc293b2hsIGFscyBQYXJpZXJ3YWZmZSBhbHMgYXVjaAorICAgICAgICAgICAgICAgICBhbHMgQW5ncmlmZnN3YWZmZSBiZW51dHp0CisgICAgICAgCisgICBEaWUgU2NodXR6d2lya3VuZyBkZXIgUGFyaWVyd2FmZmUgd2lyZCB3aWUgYmVpIFJ1ZXN0dW5nZW4gdWViZXIgZGllCisgICBQcm9wZXJ0eSBQX0FDIGdlc2V0enQuIFVlYmVyIGRpZSBQcm9wZXJ0eSBQX0RFRkVORF9GVU5DIGthbm4gd2llCisgICBiZWkgUnVlc3R1bmdlbiBlaW5lIERlZmVuZEZ1bmMgZ2VzZXR6dCB3ZXJkZW4uCisgICAgICAgCisgICBXYWZmZW4gbWl0IFBBUlJZX09OTFkgdW50ZXJsaWVnZW4gZGVuIGdsZWljaGVuIFBfQUMtR3Jlbnp3ZXJ0ZW4KKyAgIHdpZSBSdWVzdHVuZ2VuIHZvbSBUeXAgQVRfU0hJRUxELiBXYWZmZW4gbWl0IFBBUlJZX1RPTyBvZGVyIGVpbmVyCisgICBEZWZlbmRGdW5jIG11ZXNzZW4gZ2VuZXJlbGwgZ2VuZWhtaWd0IHdlcmRlbi4KKworLS0tLS0tLS0tLSBMRVRaVEUgQUVOREVSVU5HOiBIdW1uaSwgMjAxMS0xMC0xMgpkaWZmIC0tZ2l0IGEvZG9jL2JlaXNwaWVsZS9BZGRDbWQvRWluZnVlaHJ1bmcuQWRkQ21kLnR4dCBiL2RvYy9iZWlzcGllbGUvQWRkQ21kL0VpbmZ1ZWhydW5nLkFkZENtZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZWFkZjZmOQotLS0gL2Rldi9udWxsCisrKyBiL2RvYy9iZWlzcGllbGUvQWRkQ21kL0VpbmZ1ZWhydW5nLkFkZENtZC50eHQKQEAgLTAsMCArMSwxNzQgQEAKK0hhbGxvIE1pdG1hZ2llcklubmVuICpnKiwKKworT2ssIGRhbm4gZ2VodHMgbWFsIGVpbiBiaXNjaGVuIHp1ciBTYWNoZToKKworL3N0ZC90aGluZy9jb21tYW5kcy5jIHd1cmRlIHNvIGVyd2VpdGVydCwgZGFzcyBtYW4gYXVjaCBrb21wbGV4ZSBTeW50YXgKK2RpcmVrdCBpbSBBZGRDbWQgdm9ycGFyc2VuIGthbm4uCisKK0RhenUgZWluIGt1cnplcyBCZWlzcGllbDoKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworSW4gZWluZW0gT2JqZWt0IChlaW4gQnVzY2gpIGZpbmRldCBzaWNoIGZvbGdlbmRlIFN5bnRheGRlZmluaXRpb24uCisKKyBBZGRDbWQoInBmbHVlY2tlfGVybnRlJmZydWVjaHRlfGJlZXJlbiZASUQiLCJjbWRfcGZsdWVja2VuIiwKKyAgICAgICAgIldhcyB3aWxsc3QgRHUgZGVubiBAdmVyYmVuP3xXbyB3aWxsc3QgRHUgZGVubiBkaWUgQmVlcmVuIEB2ZXJiZW4/Iik7CisKK0RlciBlcnN0ZSBQYXJhbWV0ZXIgZGVmaW5pZXJ0IGRpZSBTeW50YXguIERhcyBaZWljaGVuICYgdHJlbm50IHZlcnNjaGllZGVuZQorenUgcGFyc2VuZGUgSXRlbXM6CisKKzEuIHBmbHVlY2tlfGVybnRlCisyLiBmcnVlY2h0ZXxiZWVyZW4KKzMuIEBJRAorCitVbnRlciAxLiBmaW5kZW4gc2ljaCBkaWUgVmVyYmVuIC0gZGFzIHNpbmQgZGllIGdsZWljaGVuLCBkaWUgbWFuIGluIGRlcgorYWx0ZW4gVmVyc2lvbiBhdWNoIGJlbGVnZW4ga29ubnRlLiBEaWUgUmVnZWwgcmVhZ2llcnQgYWxzbyBhdWYgInBmbHVlY2tlIgorb2RlciBhdWYgImVybnRlIi4KKworQWxsZSB3ZWl0ZXJlbiBSZWdlbG4gbXVlc3NlbiBlcmZ1ZWxsdCB3ZXJkZW4sIGRhbWl0IGRlciB6d2VpdGUgUGFyYW1ldGVyCisoZGllIEZ1bmt0aW9uKSBhdWZnZXJ1ZmVuIHdpcmQuIEBJRCBzdGVodCBkYWJlaSBmdWVyIGRpZSBJRCBkZXMgT2JqZWt0ZXMsCitpbiBkZW0gZGFzIEFkZENtZCBzdGVodC4gSGllciBhbHNvIGRlciBCdXNjaC4KKworRGF6dSBlaW5pZ2UgQmVpc3BpZWxlOgorCithKSA+IHBmbHVlY2tlIGJlZXJlbgorIC0+IGVyZnVlbGx0IDEgdW5kIDIuIEFiZXIgbmljaHQgMy4gPT4gRmVobGVybWVsZHVuZy4KKworYikgPiBlcm50ZSB2b24gYnVzY2gKKyAtPiBlcmZ1ZWxsdCAxIHVuZCAzLCBqZWRvY2ggMiBuaWNodC4gPT4gRmVobGVybWVsZHVuZy4KKworYykgPiBwZmx1ZWNrZSBmcnVlY2h0ZSB2b24gYnVzY2gKKyAtPiBlcmZ1ZWxsdCAxLCAyIHVuZCAzIC0+IGJ1c2NoLT5jbWRfcGZsdWVja2VuKCkgd2lyZCBhdWZnZXJ1ZmVuLiBEYXMgInZvbiIKKyAgICBpc3QgRnVlbGx3ZXJrLiBEYXZvbiBrYW5uIGJlbGllYmlnIHZpZWwgaW0gU3RyaW5nIHNlaW4uIFNpZSB3ZXJkZW4gCisgICAgaWdub3JpZXJ0LgorICAgIEVzIHNpbmQgYWxzbyBhdWNoIHVuc2lubmlnZSBTeW50YXhlIHJpY2h0aWcsIHNvbGFuZ2UgZGVyIFN0cmluZyBkaWUgCisgICAgSXRlbXMgZXJ1ZmVsbHQuCisKK0ltIEZhbGwgYykgd2lyZCBkYXMgVmVyaGFsdGVuIGRlcyBCdXNjaGVzIGR1cmNoIGRpZSBGdW5rdGlvbiAiY21kX3BmbHVlY2tlbiIKK2RlZmluaWVydCwgd2llIGF1Y2ggaW4gZGVyIGFsdGVuIFZlcnNpb24gdm9uIEFkZENtZC4KKworV2FzIHBhc3NpZXJ0IGFiZXIgaW4gZGVuIEZhZWxsZW4gYSkgdW5kIGIpPyBEYWZ1ZXIgaXN0IGRlciBkcml0dGUKK1BhcmFtZXRlciBkYToKKyAgIldhcyB3aWxsc3QgRHUgZGVubiBAVkVSQmVuP3xXbyB3aWxsc3QgRHUgZGVubiBkaWUgQmVlcmVuIEBWRVJCZW4/Iik7CisKK0hpZXIgc2luZCB6d2VpIEZlaGxlcm1lbGR1bmdlbiwgZHVyY2ggfCBnZXRyZW5udCwgZGVmaW5pZXJ0OgorCit4KSBXYXMgd2lsbHN0IER1IGRlbm4gQFZFUkJlbj8KK3kpIFdvIHdpbGxzdCBEdSBkZW5uIGRpZSBCZWVyZW4gQFZFUkJlbj8KKworRXJzdCB3aXJkIGdlcHJ1ZWZ0LCBvYiAyLiBlcmZ1ZWxsdCBpc3QuIEZhbGxzIG5pY2h0LCBnaWJ0IGVzIEZlaGxlcm1lbGR1bmcgeCkKK0Rhbm4gd2lyZCBhdWYgMy4gZ2VwcnVlZnQuIElzdCBkYXMgbmljaHQgZXJmdWVsbHQgKGFiZXIgMi4gc2Nob24pIGdpYnQgZXMKK0ZlaGxlcm1lbGR1bmcgeSkuCisKK0ltIEZhbGwgYSBzaW5kIDEgdW5kIDIgZXJmdWVsbHQuIERlbW5hY2ggd2lyZCB5KSBhdXNnZWdlYmVuLiBAVkVSQiB3aXJkCitkYWJlaSBkdXJjaCBkYXMgYmVudXR6dGUgVmVyYiBlcnNldHp0IChkYXMgYWJzY2hsaWVzc2VuZGUgZW4sIGJ6dyBlIHdpcmQKK2FiZ2VzY2huaXR0ZW4pOgorIFdvIHdpbGxzdCBEdSBkZW5uIGRpZSBCZWVyZW4gcGZsdWVja2VuPworCitJbSBGYWxsIGIgaXN0IDEgZXJ1ZmVsbHQsIDIgYWJlciBzY2hvbiBuaWNodC4gRGFoZXIgZ2lidCBlcyBGZWhsZXJtZWxkdW5nCit4KS4gQXVmIDMuIHdpcmQgbmljaHQgbWVociBnZXBydWVmdC4KKyBXYXMgd2lsbHN0IER1IGRlbm4gZXJudGVuPworCitXaWUgc2Nob24gZXJ3YWVobnQgZXJmdWVsbHQgYykgYWxsZSBCZWRpbmd1bmdlbiB1bmQgZXMgZ2lidCBrZWluZSBBdXNnYWJlIC0KK1N0YXR0IGRlc3NlbiBrYW5uIG1hbiBkYXMgUGZsdWVja2VuIGluIGRlciBGdW5rdGlvbiBhYmhhbmRlbG4uCisKK0luIGRlbiBGYWVsbGVuIDEgdW5kIDIgd2lyZCBkaWUgRmVobGVybWVsZHVuZyB1ZWJlciBub3RpZnlfZmFpbCgpCithYmdlaGFuZGVsdC4gRXJnbyB3aXJkIGhpZXIgYW5kZXJlbiBCZWZlaGxlbiB2b24gYW5kZXJlbiBPYmpla3RlbiBub2NoCitlaW5lIENoYW5jZSBnZWdlYmVuLiBHbGVpY2hlcyBnaWx0IGZ1ZXIgZGllIEZ1bmt0aW9uIGNtZF9wZmx1ZWNrZW4oKSwgd2VubgorZGVyZW4gUnVlY2tnYWJld2VydCAwIGlzdC4gQXVjaCBoaWVyIGdpYnQgZXMgZGllIEFuYWxvZ2llIHp1bSBhbHRlbiBBZGRDbWQuCisKK0dpYnQgY21kX3BmbHVlY2tlbigpIGVpbmVuIFdlcnQgdW5nbGVpY2ggMCB6dXJ1ZWNrLCB3aXJkIGRpZSBTdWNoZSBuYWNoCitkZXIgcmljaHRpZ2VuIFN5bnRheCBkYW5hY2ggYWJnZWJyb2NoZW4sIHNvIGRhc3MgYXVjaCBrZWluIGFuZGVyZXMgT2JqZWt0CittZWhyIGdlZnJhZ3Qgd2lyZCAod2llIGdlaGFidCkuCisKK0RhcyBpc3QgYXVjaCBmdWVyIEZvcnNjaGVycHVua3RlIHdpY2h0aWcuIEZQIHdlcmRlbiBnZW5lcmVsbCBudXIgYmVpIGVpbmVtCitSdWVja2dhYmV3ZXJ0IHVuZ2xlaWNoIDAgdmVyZ2ViZW4uCisKK0VpbmUga2xlaW5lIEVyd2VpdGVydW5nIGRlciBCZWlzcGllbHN5bnRheDoKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworIEFkZENtZCgicGZsdWVja2V8ZXJudGUmZnJ1ZWNodGV8YmVlcmVuJkBJREBcaW1wb3NzaWJsZSIsMCwKKyAgIldhcyB3aWxsc3QgRHUgZGVubiBAVkVSQmVuP3xXbyB3aWxsc3QgRHUgZGVubiBkaWUgQmVlcmVuIEBWRVJCZW4/fCIKKyAgIkR1IHBmbHVlY2tzdCBlaW4gcGFhciBCZWVyZW4gdW5kIGlzc3Qgc2llIGF1Zi5eQFdFUiBpc3N0IGVpbiBwYWFyCisgIEJlZXJlbi4iKTsKKworRWluZSBuZXVlIFJlZ2VsOgorCis0LiBcaW1wb3NzaWJsZQorCitVbmQgZWluZSBuZXVlIEZlaGxlcm1lbGR1bmc6Cit6KSBEdSBwZmx1ZWNrc3QgZWluIHBhYXIgQmVlcmVuIHVuZCBpc3N0IHNpZSBhdWYuXkBXRVIgaXNzdCBlaW4gcGFhciBCZWVyZW4uCisKK1p1ciBSZWdlbDoKKworRGllIFJlZ2VsIGlzdCBuaWNodCBlcmZ1ZWxsYmFyLCBkYSBTcGllbGVyIGRhcyBcaSBuaWNodCBlcnpldWdlbgora29lbm5lbi4gWndhbmdzbGFldWZpZyBnaWJ0IGVzIGF1Y2gga2VpbmUgRnVua3Rpb24sIGRpZSBhdWZnZXJ1ZmVuIHdlcmRlbgora29lbm50ZS4KKworRGFmdWVyIGdpYnQgZXMgZWluZSBGZWhsZXJtZWxkdW5nLCBkaWUgZWluIG5ldWVzIEVsZW1lbnQgZW50aGFlbHQuIERhcworXi4gV2lyZCBkaWVzZSBNZWxkdW5nIGF1c2dlZ2ViZW4gaXN0IGRhcyBnZW5hdSB3aWUgZWluIHJldHVybiAxIGluIGRlcgorRnVua3Rpb24uIERpZSBTeW50YXggd2lyZCBhbHMgcmljaHRpZyBhbmVya2FubnQuIChFcyBrYW5uIGhpZXJmdWVyIGFsc28KK2F1Y2ggRlAgZ2ViZW4pLgorCitEZXIgVGV4dCB2b3IgZGVtIF4gZ2VodCBhbiBkZW4gU3BpZWxlciwgYWxsZXMgZGFoaW50ZXIgZ2VodCBhbiBkaWUgU3BpZWxlcgoraW0gUmF1bS4gU3RlaHQgaGludGVyIGRlbSBeIG5pY2h0cywgZ2lidCBlcyBrZWluZSBSYXVtbWVsZHVuZy4KKworQXVmIGRpZXNlIFdlaXNlIGthbm4gbWFuIGxlaWNodCBlaW4gUmF1bWtvbW1hbmRvIGVyc3RlbGxlbiwgZGFzcyBudXIKK1RleHRhdXNnYWJlbiBtYWNodCwgYWJlciBrZWluZSBGdW5rdGlvbmFsaXRhZXQgZW50aGFlbHQuIEVzIGlzdCBrZWluZQorZWlnZW5zdGFlbmRpZ2UgRnVua3Rpb24gbWl0IGlyZ2VuZHdlbGNoZW0gZWlnZW5lbiBQYXJzaW5nIG1laHIgbm9ldGlnLgorCitEYXMgQFdFUiB3aXJkIGR1cmNoIHRoaXNfcGxheWVyKCktPk5hbWUoKSBlcnNldHp0LCBzbyBkYXNzIG1hbiBhdWNoIGVpbmVuCitQZXJzb2VubGljaGVuIGJlenVnIGluIGRlbiBNZWxkdW5nZW4gaGVyc3RlbGxlbiBrYW5uLgorCitBYndhZXJ0c2tvbXBhdGliZWwKKy0tLS0tLS0tLS0tLS0tLS0tLQorCitEaWUgRXJ3ZWl0ZXJ1bmdlbiB2b24gQWRkQ21kIGVybGF1YmVuIGVpbiBlaW5mYWNoZXJlcyBFcnN0ZWxsZW4gdm9uCitTdGFuZGFyZC1Lb21tYW5kb3MsIG9obmUgZGFzcyBtYW4gc2ljaCBtaXQgZGVtIFBhcnNlbiBpbiBGdW5rdGlvbmVuCitiZXNjaGFlZnRpZ2VuIG11c3MuCisKK0RpZSBBZW5kZXJ1bmcgaXN0IHZvbGxzdGFlbmRpZyBhYndhZXJ0c2tvbXBhdGliZWwuIFdlciBzaWNoIGFsc28gc2FndCwKK2RhcyBkYXMgYWxsZXMgdmllbCB6dSBrb21wbGl6aWVydCBzZWksIGthbm4gd2VpdGVyaGluOgorCisgQWRkQ21kKCh7InBmbHVlY2tlIiwiZXJudGUifSksImNtZF9wZmx1ZWNrZW4iKTsKKworYmVudXR6ZW4uIERhcyBWZXJoYWx0ZW4gaXN0IGhhYXJnZW5hdSBkYXMgc2VsYmUgd2llIGJpc2hlci4gRGVtZW50c3ByZWNoZW5kCitpc3QgYXVjaCBrYXVtIEF1ZndhbmQgYmVpbSBFaW5wZmxlZ2VuIGRpZXNlciBBZW5kZXJ1bmcgbm90d2VuZGlnLgorCitadXIgQmVhY2h0dW5nCistLS0tLS0tLS0tLS0tCisKK1VlYmVyYWxsLCB3byBkaXJla3QgYXVmIFBfQ09NTUFORFMgenVnZWdyaWZmZW4gd2lyZCwga2FubiBlcyBwcmluemlwaWVsbAorenUgUHJvYmxlbWVuIGtvbW1lbiwgZGEgc2ljaCBkaWUgU3RydWt0dXIgZGVzIE1hcHBpbmdzIHVuZCBkZXIgWnVncmlmZgorZGFyYXVmIGdlYWVuZGVydCBoYXQuCisKK0ltIEZvbGdlYXJ0aWtlbCBmaW5kZXQgc2ljaCBlaW5lIExpc3RlIG1pdCBhbGxlbiBPYmpla3RlbiwgZGllIGRhcyBtYWNoZW4uIEluCitkZW4gb2VmZmVudGxpY2hlbiBWZXJ6ZWljaG5pc3NlbiB3ZXJkZSBpY2ggbWljaCBtaXQgZGVuIE1hZ2llcm4gaW4gVmVyYmluZHVuZworc2V0emVuIG9kZXIgc2VsYnN0IGtvbnRyb2xsaWVyZW4sIG9iIEFlbmRlcnVuZ2VuIG5vdHdlbmRpZyBzaW5kLgorCitPYmpla3RlIGluIGRlbiBQbGF5ZXJzLVZlcnplaWNobmlzc2VuIHdlcmRlIGljaCBudXIgaW4gQXVzbmFobWVmYWVsbGVuCithbnBhc3Nlbi4gWnVyIEVyaW5uZXJ1bmc6IEFuZ2VzY2hsb3NzZW5lcyBnZWhvZXJ0IG5pY2h0IG5hY2ggL3BsYXllcnMvLgorCitEZXIgQ29kZSBpc3QgYXVmIEtvbXBhdGliaWxpdGFldCBtaXQgZGVtIGFsdGVuIFN5c3RlbSBhdXNnZWxlZ3QsIGRlbm5vY2gKK2dpYnQgZXMgZWluIHBhYXIgQWVuZGVydW5nZW4uIFp1bSBCZWlzcGllbCBpc3QgUF9DT01NQU5EUyBrZWluZSBlY2h0ZQorUHJvcGVydHkgbWVociBzb25kZXJuIGVpbmUgbG9rYWxlIFZhcmlhYmxlLiBEZW16dWZvbGdlIHdpcmQgUF9DT01NQU5EUworYmVpICJ4cHJvcCIgbmljaHQgbWVociBhbmdlemVpZ3QuIERpZSBTY2huaXR0c3RlbGxlIHdpcmQgZHVyY2ggX3NldF8KK3VuZCBfcXVlcnlfZnVua3Rpb25lbiByZWFsaXNpZXJ0LiBEaWUgTWFwcGluZ3Mgd2VyZGVuIF9pbW1lcl8gYWxzIEtvcGllbgorcmF1c2dlZ2ViZW4sIHNvIGRhc3MgbWFuIGRhbWl0IG5pY2h0IHZlcnNlaGVudGxpY2ggVW5zaW5uIG1hY2hlbiBrYW5uLgorCitTY2hsdXNzd29ydAorLS0tLS0tLS0tLS0KKworRGllc2VyIEFydGlrZWwgc3RlbGx0IG51ciBlaW5lIEVpbmxlaXR1bmcgaW4gZGllIEFlbmRlcnVuZyB1bmQgZGVyZW4KK01vZWdsaWNoa2VpdGVuIGRhciB1bmQgaXN0IGtlaW5lc2ZhbGxzIHZvbGxzdGFlbmRpZy4gV2VyIG1laHIgZGFydWViZXIgd2lzc2VuCit3aWxsLCBpc3QgZWluZ2VsYWRlbiwgc2ljaCBkaWUgTWFucGFnZSB6dSAiQWRkQ21kIiB1bmQgenUgZGVuIEJlaXNwaWVsZW4KKyJBZGRDbWRfYnNwIiBhbnp1c2NoYXVlbi4KKworRGllIFNlaXRlbiBzaW5kIGF1cyBkZW0gUmVnZW5ib2dlbiAiZ2VsaWVoZW4iIHVuZCB3ZXJkZW4gaW4gZGVuIGtvbW1lbmRlbgorVGFnZW4gbm9jaCBhdWYgZGllIEJlZHVlcmZuaXNzZSBkZXMgTW9yZ2VuZ3JhdWVuIGFuZ2VwYXNzdC4KKworTWVpbiBEYW5rIGdlaHQgYW4gR2xvaW5zb24sIGRlciBkaWUgSWRlZSBoYXR0ZSwgZGllIEFucGFzc3VuZ2VuIHZvcnp1bmVobWVuCit1bmQgTWlncmF0aW9uIGRlcyBDb2RlcyBpbnMgTW9yZ2VuR3JhdWVuIHVlYmVybm9tbWVuIGhhdC4KKworRmFsbHMgbnVuIG5vY2ggRnJhZ2VuIHNpbmQsIG51ciB6dSEgOikKKworViosCmRpZmYgLS1naXQgYS9kb2MvYmVpc3BpZWxlL0FkZENtZC9idXNjaC5jIGIvZG9jL2JlaXNwaWVsZS9BZGRDbWQvYnVzY2guYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5kYTNjNWIzCi0tLSAvZGV2L251bGwKKysrIGIvZG9jL2JlaXNwaWVsZS9BZGRDbWQvYnVzY2guYwpAQCAtMCwwICsxLDU4IEBACitpbmhlcml0ICIvc3RkL3RoaW5nIjsKKyNpbmNsdWRlIDxwcm9wZXJ0aWVzLmg+CisjaW5jbHVkZSA8bW92aW5nLmg+CisjaW5jbHVkZSA8bGFuZ3VhZ2UuaD4KKworI3ByYWdtYSBzdHJpY3RfdHlwZXMsc2F2ZV90eXBlcyxydHRfY2hlY2tzCisKK3Byb3RlY3RlZCB2b2lkIGNyZWF0ZSgpCit7CisgICA6OmNyZWF0ZSgpOworCisgICBTZXRQcm9wKFBfR0VOREVSLCBORVVURVIpOworICAgU2V0UHJvcChQX05BTUUsICJHZWJ1ZXNjaCIpOworICAgU2V0UHJvcChQX1NIT1JULCJFaW4gR2VidWVzY2giKTsKKyAgIFNldFByb3AoUF9MT05HLCJEdSBzdGVoc3Qgdm9yIGVpbmVtIGdhYW56IG5vcm1hbGVuIEdlYnVlc2NoLiBFcyB0cmFlZ3QgIgorICAgICAgICAgICAgICAgICAgIkZydWVjaHRlLiBVbmQgZXZlbnR1ZWxsXG5rYW5uIG1hbiBkYXJpbiBldHdhcyBmaW5kZW4uXG4iKTsKKyAgIFNldFByb3AoUF9OT0dFVCwiRXMgaXN0IGZlc3RnZXdhY2hzZW4sIGV2ZW50dWVsbCBrYW5uIG1hbiBlcyBhdXNncmFiZW4/XG4iKTsKKworICAgU2V0UHJvcChQX1dFSUdIVCw1MDAwKTsKKyAgIFNldFByb3AoUF9TSVpFLDEwMCk7CisKKyAgIEFkZElkKCh7ImJ1c2NoIiwiZ2VidWVzY2gifSkpOworCisgICBBZGREZXRhaWwoKHsiZnJ1ZWNodGUiLCJmcnVjaHQifSksCisgICAgICJFcyBzY2hlaW5lbiBCZWVyZW4genUgc2Vpbi4gVmllbGxlaWNodCBrYW5uc3QgRHUgc2llIHBmbHVlY2tlbj9cbiIpOworICAgQWRkRGV0YWlsKCJiZWVyZW4iLAorICAgICAiUGZsdWVjayBzaWUgZG9jaCwgdmllbGxlaWNodCBicmluZ3QgZGFzIGphIHdhcy5cbiIpOworCisgICAvLyBOdXIgd2VubiBkaWUgU3ludGF4IGVyZnVlbGx0IGlzdCwgd2lyZCBjbWRfcGZsdWVja2VuKCkgYXVmZ2VydWZlbi4KKyAgIC8vICJwZmx1ZWNrZSBiZWVyZW4gdm9uIGJ1c2NoIiBldGMuCisgICBBZGRDbWQoInBmbHVlY2tlfGVybnRlJmZydWVjaHRlfGJlZXJlbiZASUQiLCJjbWRfcGZsdWVja2VuIiwKKyAgICAgICAgICAiV2FzIHdpbGxzdCBEdSBkZW5uIEB2ZXJiZW4/fFdvIHdpbGxzdCBEdSBkZW5uIGRpZSBCZWVyZW4gQHZlcmJlbj8iKTsKKworICAgLy8gc3VjaGVuIGdpYnQgbnVyIGVpbmUgTWVsZHVuZyBhdXMuIERhZnVlciBicmF1Y2h0IG1hbiBrdWVuZnRpZyBrZWluZQorICAgLy8gRnVua3Rpb25lbiBtZWhyLgorICAgQWRkQ21kKCJzdWNofHN1Y2hlfGR1cmNoc3VjaHxkdXJjaHN1Y2hlJkBJRCZcbmltcG9zc2libGUiLDAsIAorICAgICAgICAgICJXbyB3aWxsc3QgRHUgQFZFUkJlbj98RHUgZHVyY2hzdWNoc3QgZGFzIEdlYnVlc2NoLCBmaW5kZXN0IGFiZXIgbmljaHRzLl4iCisgICAgICAgICAgIkBXRVIxIGR1cmNoc3VjaHQgZWluIEdlYnVlc2NoLCBmaW5kZXQgYWJlciBuaWNodHMuIik7CisKKyAgIC8vIEdyYWJlbiBnZWh0IGVoIG5pY2h0LiBEYWhlciBudXIgRmVobGVybWVsZHVuZ2VuLgorICAgLy8gRGFzIF4gc2FndCwgZGFzcyBoaWVyIGVpbiByZXR1cm4xIHp1cnVlY2tnZWdlYmVuIHdpcmQuIEVzIGdpYnQgYWJlciBrZWluZSAKKyAgIC8vIFJhdW1tZWxkdW5nLgorICAgQWRkQ21kKCJncmFifGdyYWJlJkBJRCZhdXNAXG5pbXBvc3NpYmxlIiwwLAorICAgICAgICAgICJXYXMgd2lsbHN0IER1IGdyYWJlbj98RHUgd2lsbHN0IGRhcyBHZWJ1ZXNjaCBhdXNncmFiZW4/fCIKKyAgICAgICAgICAiRGllIFd1cnplbG4gc2NoZWluZW4gdGllZiB6dSByZWNoZW4uIERhcyB3aXJkIG5pY2h0cy5eIik7Cit9CisKK2ludCBjbWRfcGZsdWVja2VuKHN0cmluZyBhcmcsIG1peGVkICpwYXJhbSkKK3sKKyAgICBvYmplY3Qgb2JqOworICAgIG9iaj1jbG9uZV9vYmplY3QoX19ESVJfXyJvYnN0Iik7CisgICAgd3JpdGUoIlZlcnd1bmRlcnQgcGZsdWVja3N0IER1ICIrKG9iai0+bmFtZSgpKSsiIHZvbSBCdXNjaC4gS29taXNjaC5cbiIpOworCisgICAgLy8gRGFzIGhpZXIgaXN0IGVpbiBCZWlzcGllbCBmdWVyIEFkZENtZCwgZGFoZXIgbWFjaCBpY2ggbWlyIG5pY2ggCisgICAgLy8gZGllIE11ZWhlIGRhcyByaWNodGlnIHp1IG1hY2hlbi4gSXMgZWggbnVyIGZ1ZXIgTWFnaWVyIQorICAgIG9iai0+bW92ZSh0aGlzX3BsYXllcigpLE1fR0VUfE1fTk9DSEVDSyk7CisgICAgcmV0dXJuIDE7Cit9CmRpZmYgLS1naXQgYS9kb2MvYmVpc3BpZWxlL0FkZENtZC9vYnN0LmMgYi9kb2MvYmVpc3BpZWxlL0FkZENtZC9vYnN0LmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOGVmYjQ3MQotLS0gL2Rldi9udWxsCisrKyBiL2RvYy9iZWlzcGllbGUvQWRkQ21kL29ic3QuYwpAQCAtMCwwICsxLDIzMiBAQAorLyogSGlud2VpcyB6dSBkaWVzZW0gQmVpc3BpZWxvYmpla3Q6IExlYmVuc21pdHRlbCBsYXNzZW4gc2ljaCBiZXNzZXIgdm9uCisgKiAvc3RkL2Zvb2QgYWJsZWl0ZW4sIGRhcyBicmluZ3QgdmllbGUgRnVua3Rpb25hbGl0YWV0ZW4gbWl0LCBkaWUgbWFuIHNvbnN0CisgKiBtdWVoc2FtIHNlbGJlciBiYXN0ZWxuIG11c3MuCisgKi8KKworaW5oZXJpdCAiL3N0ZC90aGluZyI7CisKKyNpbmNsdWRlIDxtb3ZpbmcuaD4KKyNpbmNsdWRlIDxwcm9wZXJ0aWVzLmg+CisjaW5jbHVkZSA8d2l6bGV2ZWxzLmg+CisKKyNkZWZpbmUgU0FFVFRJR1VORyAyCisjZGVmaW5lIEhFSUxVTkcgMjAKKyNkZWZpbmUgRUFUX0RFTEFZIDEyMDAgLy8gMjAgTWludXRlbgorCisjZGVmaW5lIEJTNzgoeCkgYnJlYWtfc3RyaW5nKHgsNzgpCisKK3Byb3RlY3RlZCB2b2lkIGNyZWF0ZSgpCit7CisgIDo6Y3JlYXRlKCk7CisKKyAgLy8gR2VtZWluc2FtZXIgVGVpbCBkZXMgY3JlYXRlCisgIEFkZElkKCJvYnN0Iik7CisgIFNldFByb3AoIFBfVkFMVUUsIDYwK3JhbmRvbSgxMCkgKTsKKworICAvLyBBZGRDbWQoICh7ImlzcyIsImVzc2UifSksICJhY3RfZXNzZW4iKTsgIAorICAvLyBuZXcgc3R5bGUgQWRkQ21kCisgIEFkZENtZCggImlzc3xlc3NlJkBJRCIsImFjdF9lc3NlbiIsIldhcyB3aWxsc3QgRHUgZGVubiBlc3Nlbj8iKTsKKworICAvLyBOYWNoIGNhLiAxMCBNaW51dGVuIHJlc2V0ZXQgZGFzIE9ic3QsIGltIFJlc2V0IHdpcmQgZXMgZGVzdHJ1Y3RldCwgCisgIC8vIHNvIHNwYXJlIGljaCBjYWxsX291dHMKKyAgc2V0X25leHRfcmVzZXQoNjAwKTsKKworICAvLyBOYW1lLCBJRCwgR2VuZGVyLCBEZXNjIHVuZCBHZXdpY2h0IHNpbmQgQWJoYWVuZ2lnIHZvbiBkZXIgT2JzdGFydAorICBzd2l0Y2ggKHJhbmRvbSgxMSkpeworICBkZWZhdWx0OgorICAgIFNldFByb3AoIFBfR0VOREVSLCBNQUxFICk7CisgICAgU2V0UHJvcCggUF9OQU1FLCAiQXBmZWwiICk7CisgICAgQWRkSWQoICJhcGZlbCIgKTsKKyAgICBTZXRQcm9wKCBQX1NIT1JULCAiRWluIEFwZmVsIiApOworICAgIFNldFByb3AoIFBfTE9ORywgQlM3OCgKKyAgICAgICJFaW4gc2FmdGlnZXIgQXBmZWwuIERpciBsYWV1ZnQgZGFzIFdhc3NlciBpbSBNdW5kZSB6dXNhbW1lbi4iCisgICAgKSk7CisgICAgU2V0UHJvcCggUF9XRUlHSFQsIDgwICk7CisgICAgYnJlYWs7CisgIGNhc2UgMToKKyAgICBTZXRQcm9wKCBQX0dFTkRFUiwgRkVNQUxFICk7CisgICAgU2V0UHJvcCggUF9OQU1FLCAiQmlybmUiICk7CisgICAgQWRkSWQoICJiaXJuZSIgKTsKKyAgICBTZXRQcm9wKCBQX1NIT1JULCAiRWluZSBCaXJuZSIgKTsKKyAgICBTZXRQcm9wKCBQX0xPTkcsIEJTNzgoCisgICAgICAiRWluZSBrb2VzdGxpY2hlLCByZWlmZSBCaXJuZS4gRGllIGlzdCBzaWNoZXIgbGVja2VyLiIKKyAgICApKTsKKyAgICBTZXRQcm9wKCBQX1dFSUdIVCwgOTAgKTsKKyAgICBicmVhazsKKyAgY2FzZSAyOgorICAgIFNldFByb3AoIFBfR0VOREVSLCBGRU1BTEUgKTsKKyAgICBTZXRQcm9wKCBQX05BTUUsICJCYW5hbmUiICk7CisgICAgQWRkSWQoICJiYW5hbmUiICk7CisgICAgU2V0UHJvcCggUF9TSE9SVCwgIkVpbmUgQmFuYW5lIiApOworICAgIFNldFByb3AoIFBfTE9ORywgQlM3OCgKKyAgICAgICJEaWUgQmFuYW5lIHNpZWh0IHdpcmtsaWNoIGxlY2tlciBhdXMsIGFtIGJlc3RlbiBnbGVpY2ggZXNzZW4uIgorICAgICkpOworICAgIFNldFByb3AoIFBfV0VJR0hULCAxMTAgKTsKKyAgICBicmVhazsgIAorICBjYXNlIDM6CisgICAgU2V0UHJvcCggUF9HRU5ERVIsIEZFTUFMRSApOworICAgIFNldFByb3AoIFBfTkFNRSwgIktpd2kiICk7CisgICAgQWRkSWQoICJraXdpIiApOworICAgIFNldFByb3AoIFBfU0hPUlQsICJFaW5lIEtpd2kiICk7CisgICAgU2V0UHJvcCggUF9MT05HLCBCUzc4KAorICAgICAgIktsZWluIHVuZCBncnVlbiwgYWJlciBtaXQgbGVja2VyZW4gSW5uZW5sZWJlbi4gWWFtIHlhbS4iCisgICAgKSk7CisgICAgU2V0UHJvcCggUF9XRUlHSFQsIDUwICk7CisgICAgYnJlYWs7ICAKKyAgY2FzZSA0OgorICAgIFNldFByb3AoIFBfR0VOREVSLCBGRU1BTEUgKTsKKyAgICBTZXRQcm9wKCBQX05BTUUsICJFcmRiZWVyZSIgKTsKKyAgICBBZGRJZCggImVyZGJlZXJlIiApOworICAgIFNldFByb3AoIFBfU0hPUlQsICJFaW5lIEVyZGJlZXJlIiApOworICAgIFNldFByb3AoIFBfTE9ORywgQlM3OCgKKyAgICAgICJFaW5lIHVlYmVyZHVyY2hzY2huaXR0bGljaCBncm9zc2UgRXJkYmVlcmUuIFNpZSAiCisgICAgICAiaXN0IHNpY2hlciBzdWVzcyB1bmQgc2FmdGlnLiIKKyAgICApKTsKKyAgICBTZXRQcm9wKCBQX1dFSUdIVCwgMjAgKTsKKyAgICBicmVhazsgIAorICBjYXNlIDU6CisgICAgU2V0UHJvcCggUF9HRU5ERVIsIEZFTUFMRSApOworICAgIFNldFByb3AoIFBfTkFNRSwgIktpcnNjaGUiICk7CisgICAgQWRkSWQoICJraXJzY2hlIiApOworICAgIFNldFByb3AoIFBfU0hPUlQsICJFaW5lIEtpcnNjaGUiICk7CisgICAgU2V0UHJvcCggUF9MT05HLCBCUzc4KAorICAgICAgIlp3YXIgbnVyIGtsZWluIGlzdCBkaWVzZSBLaXJzY2hlLCBhYmVyIHNvIGR1bmtlbCB3aWUgc2llICIKKyAgICAgICJhdXNzaWVodCwgaXN0IHNpZSBzaWNoZXIgdG90YWwgc3Vlc3MgdW5kIGxlY2tlci4iCisgICAgKSk7CisgICAgU2V0UHJvcCggUF9XRUlHSFQsIDE1ICk7CisgICAgYnJlYWs7ICAKKyAgY2FzZSA2OgorICAgIFNldFByb3AoIFBfR0VOREVSLCBGRU1BTEUgKTsKKyAgICBTZXRQcm9wKCBQX05BTUUsICJPcmFuZ2UiICk7CisgICAgQWRkSWQoICJvcmFuZ2UiICk7CisgICAgU2V0UHJvcCggUF9TSE9SVCwgIkVpbmUgT3JhbmdlIiApOworICAgIFNldFByb3AoIFBfTE9ORywgQlM3OCgKKyAgICAgICJFaW5lIGdyb3NzZSwgZ2VsYmUgT3JhbmdlLiBFaW5lIHZvbiBkaWVzZW4gc3Vlc3NlbiwgZGllIHNpY2ggc28gIgorICAgICAgImxlaWNodCBzY2hhZWxlbiBsYXNzZW4gdW5kIGtlaW5lIFppY2tlbiBtYWNoZW4sIHNvIHdpZSBTYWZ0b3Jhbmdlbi4iCisgICAgKSk7CisgICAgU2V0UHJvcCggUF9XRUlHSFQsIDkwICk7CisgICAgYnJlYWs7ICAKKyAgY2FzZSA3OgorICAgIFNldFByb3AoIFBfR0VOREVSLCBGRU1BTEUgKTsKKyAgICBTZXRQcm9wKCBQX05BTUUsICJNYW5kYXJpbmUiICk7CisgICAgQWRkSWQoICJtYW5kYXJpbmUiICk7CisgICAgU2V0UHJvcCggUF9TSE9SVCwgIkVpbmUgTWFuZGFyaW5lIiApOworICAgIFNldFByb3AoIFBfTE9ORywgQlM3OCgKKyAgICAgICJTdWVzcyB1bmQgc2FmdGlnIHVuZCBnZXN1bmQuIFNvIG11c3MgZGFzIEVzc2VuIGltIFBhcmFkaWVzICIKKyAgICAgICJnZXdlc2VuIHNlaW4uIgorICAgICkpOworICAgIFNldFByb3AoIFBfV0VJR0hULCA2MCApOworICAgIGJyZWFrOyAgCisgIGNhc2UgODoKKyAgICBTZXRQcm9wKCBQX0dFTkRFUiwgRkVNQUxFICk7CisgICAgU2V0UHJvcCggUF9OQU1FLCAiWml0cm9uZSIgKTsKKyAgICBBZGRJZCggInppdHJvbmUiICk7CisgICAgU2V0UHJvcCggUF9TSE9SVCwgIkVpbmUgWml0cm9uZSIgKTsKKyAgICBTZXRQcm9wKCBQX0xPTkcsIEJTNzgoCisgICAgICAiU2F1ZXIsIHNhdWVyIHVuZCBub2NobWFscyBzYXVlci4gQWJlciB1bHRyYWxlY2tlci4gTmEsIHNhYmJlcnN0IER1ICIKKyAgICAgICJzY2hvbiBhdWYgZGllIFRhc3RhdHVyPyIKKyAgICApKTsKKyAgICBTZXRQcm9wKCBQX1dFSUdIVCwgNjAgKTsKKyAgICBicmVhazsgIAorICBjYXNlIDk6CisgICAgU2V0UHJvcCggUF9HRU5ERVIsIE1BTEUgKTsKKyAgICBTZXRQcm9wKCBQX05BTUUsICJHcmFuYXRhcGZlbCIgKTsKKyAgICBBZGRJZCggImdyYW5hdGFwZmVsIiApOworICAgIFNldFByb3AoIFBfU0hPUlQsICJFaW4gR3JhbmF0YXBmZWwiICk7CisgICAgU2V0UHJvcCggUF9MT05HLCBCUzc4KAorICAgICAgIkVyIGlzdCB6d2FyIGV0d2FzIHNjaHdpZXJpZ2VyLCBkZW4genUgZXNzZW4sIGFiZXIgZGVyIEF1ZndhbmQgIgorICAgICAgImxvaG50IHNpY2guIgorICAgICkpOworICAgIFNldFByb3AoIFBfV0VJR0hULCA5MCApOworICAgIGJyZWFrOyAgCisgIGNhc2UgMTA6CisgICAgU2V0UHJvcCggUF9HRU5ERVIsIEZFTUFMRSApOworICAgIFNldFByb3AoIFBfTkFNRSwgIlBmbGF1bWUiICk7CisgICAgQWRkSWQoICJwZmxhdW1lIiApOworICAgIFNldFByb3AoIFBfU0hPUlQsICJFaW5lIFBmbGF1bWUiICk7CisgICAgU2V0UHJvcCggUF9MT05HLCBCUzc4KAorICAgICAgIkVpbmUgZ3Jvc3NlLCBibGF1ZSBQZmxhdW1lLiBMYXNzIHNpZSBEaXIgZG9jaCBzY2htZWNrZW4uIgorICAgICkpOworICAgIFNldFByb3AoIFBfV0VJR0hULCAyMCApOworICAgIGJyZWFrOworICB9Cit9CisKK3ZvaWQgcmVzZXQoKQoreworICBvYmplY3QgZW52ID0gZW52aXJvbm1lbnQodGhpc19vYmplY3QoKSk7CisKKyAgaWYgKGVudikgeworICAgIGlmIChxdWVyeV9vbmNlX2ludGVyYWN0aXZlKGVudikpeworICAgICAgLy8gTWVpbiBFbnYgaXMgZWluIFVzZXIKKyAgICAgIHRlbGxfb2JqZWN0KGVudiwgQlM3OCgKKyAgICAgICAgY2FwaXRhbGl6ZSh0aGlzX29iamVjdCgpLT5uYW1lKFdFUikpKyIgdmVyc2Nod2luZGV0IG1pdCBlaW5lbSAiKworICAgICAgICAiXCJQTE9QUFwiIGF1cyBkZWluZW0gSW52ZW50YXIuIERhIHNjaGVpbnQgTWFnaWUgaW0gU3BpZWwgenUgc2Vpbi4iCisgICAgICApKTsKKyAgICB9IGVsc2UgaWYgKHNpemVvZihhbGxfaW52ZW50b3J5KGVudikmdXNlcnMoKSkpeworICAgICAgLy8gSW4gbWVpbmVtIEVudmlyb25tZW50IHNpbmQgVXNlciAoRXMgaXN0IGVpbiBSYXVtKQorICAgICAgdGVsbF9yb29tKGVudiwgQlM3OCgKKyAgICAgICAgY2FwaXRhbGl6ZSh0aGlzX29iamVjdCgpLT5uYW1lKFdFUikpKyIgdmVyc2Nod2luZGV0IG1pdCBlaW5lbSAiKworICAgICAgICAiXCJQTE9QUFwiLiBEYSBzY2hlaW50IE1hZ2llIGltIFNwaWVsIHp1IHNlaW4uIgorICAgICAgKSk7CisgICAgfQorICB9CisKKyAgLy8gT2JqZWt0IHplcnN0b2VyZW4KKyAgcmVtb3ZlKDEpOworfQorCitzdGF0aWMgaW50IGFjdF9lc3NlbihzdHJpbmcgYXJncykKK3sKKyAgICAvLyBOdXIgZWluIERlbW8tT2JqZWt0CisgICAgaWYgKCFJU19MRUFSTklORyh0aGlzX3BsYXllcigpKSkKKyAgICB7CisgICAgICB3cml0ZSgiU2Nod3VwcywgbnVuIGlzdCBAQG5hbWVAQCB2ZXJzY2h3dW5kZW4uIFdhciB3b2hsIGVpbmUgSWxsdXNpb24uIik7CisgICAgICByZW1vdmUoMSk7CisgICAgfQorCisgICAgLy8gRGVyIFN5bnRheHRlc3QgaXN0IHVubm9ldGlnLCBkZXIgaXN0IHNjaG9uIGltIG5ldyBzdHlsZQorICAgIC8vIEFkZENtZCgpIGVpbmdlYmF1dC4KKworICAgIC8vIFdlbm4gZGFzIE9iamVrdCBlaW4gRW52aXJvbm1lbnQgaGF0IChob2ZmIGljaCBkb2NoKQorICAgIC8vIHVuZCBkYXMgRW52aXJvbm1lbnQgbmljaHQgdGhpc19wbGF5ZXIoKSBpc3QsIAorICAgIC8vIGhhdCBkZXIgU3BpZWxlciBkYXMgT2JzdCBuaWNoIGltIEludiAtIGRhcyBnZWh0IGRvY2ggbmljaHQgLi4uCisgICAgaWYgKGVudmlyb25tZW50KHRoaXNfb2JqZWN0KCkpICYmIChlbnZpcm9ubWVudCh0aGlzX29iamVjdCgpKSAhPSB0aGlzX3BsYXllcigpKSApCisgICAgeworICAgICAgd3JpdGUoQlM3OCgKKyAgICAgICAgIkR1IHNvbGx0ZXN0ICIrIHRoaXNfb2JqZWN0KCktPm5hbWUoV0VSLDEpICsgIiBlcnN0bWFsIG5laG1lbi4iCisgICAgICApKTsKKyAgICAgIHJldHVybiAxOworICAgIH0KKworICAgIC8vIERFQlVHICgiU2F0dD8iKTsKKyAgICBpZiAodGhpc19wbGF5ZXIoKS0+ZWF0X2Zvb2QoU0FFVFRJR1VORykpCisgICAgeworICAgICAgLy8gREVCVUcoIk5vZSEiKTsKKyAgICAgIGlmICh0aGlzX3BsYXllcigpLT5jaGVja19hbmRfdXBkYXRlX3RpbWVkX2tleShFQVRfREVMQVksInZhbmlvbl96YWNoX29ic3QiKT09LTEpCisgICAgICB7CisgICAgICAgIHdyaXRlKEJTNzgoCisgICAgICAgICAgIkR1IGlzc3QgZ2VudWVzc2xpY2ggIit0aGlzX29iamVjdCgpLT5uYW1lKFdFTiwwKSsKKyAgICAgICAgICAiLiBEdSBmdWVobHN0IERpY2ggZ2VzdGFlcmt0LiIKKyAgICAgICAgKSk7CisgICAgICAgIHNheShCUzc4KAorICAgICAgICAgIHRoaXNfcGxheWVyKCktPm5hbWUoKSsiIGlzc3QgbWl0IHZvbGxlbSBHZW51c3MgIit0aGlzX29iamVjdCgpLT5uYW1lKFdFTiwwKSsiLiAiCisgICAgICAgICAgIkRpciBsYWV1ZnQgZGFzIFdhc3NlciBpbSBNdW5kZSB6dXNhbW1lbi4iCisgICAgICAgICkpOworICAgICAgICAvLyBIZWlsZW4gdW5kIGF1ZmVzc2VuIDopCisgICAgICAgIHRoaXNfcGxheWVyKCktPmhlYWxfc2VsZihIRUlMVU5HKTsKKyAgICAgIH0KKyAgICAgIGVsc2UgeyAvLyBpZiAoY2hlY2tfYW5kX3VwZGF0ZV90aW1lZF9rZXkoKSkKKyAgICAgICAgLy8gV2VubiBlcyBub2NoIHp1IGZydWVoIGlzdCwgd2llZGVyIHdlbGNoZXMgenUgZXNzZW4KKyAgICAgICAgLy8gS2VpbmUgSGVpbHVuZywgYWJlciBTYWV0dGlndW5nCisgICAgICAgIHdyaXRlKEJTNzgoCisgICAgICAgICAgIkR1IHNvbGx0ZXN0ICIrdGhpc19vYmplY3QoKS0+bmFtZShXRU4sMSkrIiBsaWViZXIgamVtYW5kZW0gZ2ViZW4sICIKKyAgICAgICAgICAiZGVuIER1IG1hZ3N0LCBzdGF0dCBhbGxlcyBzZWxic3QgenUgZnV0dGVybiwgZmluZGVzdCBEdSBuaWNodD8gIgorICAgICAgICAgICJEZWluZSBHaWVyIGhhdCBEaXIgamV0enQgbnVyIGVpbmVuIHZvbGxlbiBCYXVjaCB1bmQgZWluIHNjaGxlY2h0ZXMgIgorICAgICAgICAgICJHZXdpc3NlbiBiZXNjaGVlcnQuIgorICAgICAgICApKTsKKyAgICAgIH0gLy8gZW5kIGlmIChjaGVja19hbmRfdXBkYXRlX3RpbWVkX2tleSgpKQorICAgICAgaWYgKCFyZW1vdmUoKSkgZGVzdHJ1Y3QodGhpc19vYmplY3QoKSk7CisgICAgfSAvLyBlbmQgb2YgZWF0X2Zvb2QKKyAgICByZXR1cm4gMTsKK30KZGlmZiAtLWdpdCBhL2RvYy9iZWlzcGllbGUvUHJheGlzLUt1cnMvUkVBRE1FIGIvZG9jL2JlaXNwaWVsZS9QcmF4aXMtS3Vycy9SRUFETUUKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOTlhOGRkMAotLS0gL2Rldi9udWxsCisrKyBiL2RvYy9iZWlzcGllbGUvUHJheGlzLUt1cnMvUkVBRE1FCkBAIC0wLDAgKzEsMTYgQEAKK0luIGRpZXNlbSBWZXJ6ZWljaG5pcyBiZWZpbmRldCBzaWNoIGVpbiBrbGVpbmVyICJQcmF4aXMgTFBDLUt1cnMiLgorSW0gUHJpbnppcCBzaW5kIGVzIHZlcnNjaGllZGVuZSBndXQgZG9rdW1lbnRpZXJ0ZSBMUEMtT2JqZWt0ZSBkaWUKK2F1ZmVpbmFuZGVyIGF1ZmJhdWVuIHVuZCBpbiBkZW5lbiBhbGxlcyBub3R3ZW5kaWdlIGVya2xhZXJ0IHdpcmQuCitXZXIgYWxzbyBzY2hvbiBtYWwgaXJnZW5kd28gcHJvZ3JhbW1pZXJ0IGhhdCB1bmQgc2ljaCBudXIgYW4gZGllCitMUEMtVW1nZWJ1bmcgZ2V3b2VobmVuIG11c3MsIGZ1ZXIgZGVuIGlzdCBkaWVzZXIgTWluaS1LdXJzIHNpY2hlcgorZ2VuYXUgZGFzIHJpY2h0aWdlLiBGdWVyIGplbWFuZCBkZXIgbm9jaCBuaWUgcHJvZ3JhbW1pZXJ0IGhhdCBpc3QKK2RpZXNlciBLdXJzIGFsbGVpbmUgYWJlciBzaWNoZXIgbmljaHQgZ2VlaWduZXQgdW0gcHJvZ3JhbW1pZXJlbiB6dQorbGVybmVuLiBEaWUgRmlsZXMgc29sbHRlbiBpbiBkZXIgQWxwaGFiZXRpc2NoZXIgUmVpaGVuZm9sZ2UgdW5kIGRhCitkaWUgRmlsZXMgYXVmZWluYW5kZXIgYXVmYmF1ZW4sIGF1Y2ggdm9sbHN0YWVuZGlnIGR1cmNoZ2VnYW5nZW4KK3dlcmRlbi4KK0JlaSBkZW0gVmVyemVpY2huaXMgemF1YmVyd2FsZCBoYW5kZWx0IGVzIHNpY2ggdW0gZWluIGtsZWluZXMgdW5kCitkYWR1cmNoIHVlYmVyc2NoYXViYXJlcyBHZWJpZXQgdm9uIG1pciwgZGFzIG5pY2h0IGVpbmUgQW5zYW1tbHVuZwordm9uIEFkZERldGFpbHMgZGFyc3RlbGx0LCBzb25kZXJuIGF1Y2gga29tcGxleGVyZSBGdW5rdGlvbmVuIHdpZQorVmlydHVhbCBDb21waWxlciBvZGVyIEhlaWxzdGVsbGVuIGVudGhhZWx0LgorCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQYWRyZWljCmRpZmYgLS1naXQgYS9kb2MvYmVpc3BpZWxlL1ByYXhpcy1LdXJzL2hlbGxvX3dvcmxkLmMgYi9kb2MvYmVpc3BpZWxlL1ByYXhpcy1LdXJzL2hlbGxvX3dvcmxkLmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uODEwOWUwNgotLS0gL2Rldi9udWxsCisrKyBiL2RvYy9iZWlzcGllbGUvUHJheGlzLUt1cnMvaGVsbG9fd29ybGQuYwpAQCAtMCwwICsxLDM3IEBACisvLyAoYykgYnkgUGFkcmVpYyAoUGFkcmVpY0BtZy5tdWQuZGUpCisKKy8vIEF1Y2ggd2VubiBkaWVzZXMgT2JqZWt0IG5vY2gga2VpbmVybGVpIHRpZWZlcmVuIFNpbm4gaGF0LCBzbyBpc3QgZXMgZG9jaAorLy8gYmVyZWl0cyBlaW4gdm9sbHN0YWVuZGlnZXMgT2JqZWt0IChiZXJlaXRzIGVpbmUgZWluemlnZSBGdW5rdGlvbiByZWljaHQKKy8vICBmdWVyIGVpbiBMUEMtT2JqZWN0IGF1cykuCisKKy8vIERpZSAzIEZ1bmt0aW9uZW4gaW4gZGllc2VtIE9iamVrdCBoYWJlbiBkYXJ1ZWJlciBoaW5hdXMgbm9jaCBlaW5lCisvLyBnYW56IGJlc29uZGVyZSBCZWRldXR1bmcuIEplZGUgZGllc2VyIDMgRnVua3Rpb25lbiB3aXJkIHZvbSBHYW1lLURyaXZlcgorLy8gaW0gbGF1ZmVuZGVuIEJldHJpZWIgYmVpIGJlc29uZGVyZW4gQW5sYWVzc2VuIGF1ZmdlcnVmZW4uCisKK3Byb3RlY3RlZCB2b2lkIGNyZWF0ZSgpCisvLyBEaWVzZSBGdW5rdGlvbiB3aXJkIGF1ZmdlcnVmZW4gc29iYWxkIGRpZXNlcyBPYmpla3QgZ2VjbG9udCB3aXJkLgoreworICAgLy8gZ2lidCBhbiBkZW4gU3BpZWxlciBkZXIgZGllc2VzIE9iamVrdCBjbG9udCBlaW5lIE1lbGR1bmcgYXVzLgorICAgdGVsbF9vYmplY3QodGhpc19wbGF5ZXIoKSwgIkhlbGxvIFdvcmxkIVxuIik7Cit9CisKK3ZvaWQgaW5pdCgpCisvLyBEaWVzZSBGdW5rdGlvbiB3aXJkIGF1ZmdlcnVmZW4sIHNvYmFsZCBlaW4gU3BpZWxlciBvZGVyIGVpbiBOUEMgaW4KKy8vIFJlaWNod2VpdGUgZGllc2VzIE9iamVrdGVzIGtvbW10OiBBbHNvIGVudHdlZGVyIHdlbm4gZWluIExlYmV3ZXNlbiBpbgorLy8gZGFzIE9iamVrdCBiZXdlZ3Qgd2lyZCBvZGVyIHVtZ2VrZWhydCBvZGVyIHdlbm4gZWluIExlYmV3ZXNlbiBpbiBkaWUKKy8vIFVtZ2VidW5nIGVpbmVzIE9iamVrdGVzIGtvbW10IG9kZXIgdW1nZWtlaHJ0LgoreworICAgLy8gZ2lidCB3aWVkZXIgZWluZSBNZWxkdW5nIGFuIGRlbiBTcGllbGVyIGF1cy4uLgorICAgdGVsbF9vYmplY3QodGhpc19wbGF5ZXIoKSwgKCJIZWxsbyBhZ2FpbiA6KS5cbiIpOworfQorCit2b2lkIHJlc2V0KCkKKy8vIERpZXNlIEZ1bmt0aW9uIHdpcmQgaW0gYmVydWVtdGVuIFJlc2V0IGF1ZmdlcnVmZW4sIGRlbiBEdSBqYSBzaWNoZXIgYXVjaAorLy8gc2Nob24gYWxzIFNwaWVsZXIga2VubmVuZ2VsZXJudCBoYXN0IChBbHNvIGFsbGUgMzAtNjAgTWludXRlbikuCisvLyBBdXNuYWhtZTogV2VubiBkYXMgT2JqZWt0IGxhZW5nZXJlIFplaXQgbWl0IGtlaW5lbSBhbmRlcmVuIE9iamVrdAorLy8ga29tbXVuaXppZXJ0IGhhdCwgd2lyZCBkaWVzZSBGdW5rdGlvbiB2b3JsYWV1ZmlnIG5pY2h0IG1laHIgYXVmZ2VydWZlbiEKK3sKKyAgLy8gSGllciBrYW5uIG1hbiBudW4gYXVjaCBpcmdlbmRldHdhcyBtYWNoZW4uIEVpbiB3cml0ZSgiLi4iKSBoYWV0dGUKKyAgLy8gaGllciBqZWRvY2gga2VpbmVuIEVmZmVrdCwgZGEga2VpbiBTcGllbGVyIGRpZXNlIEZ1bmt0aW9uIGF1c2dlbG9lc3QKKyAgLy8gaGF0IHVuZCBkYWhlciBuaWNodCBiZWthbm50IGlzdCwgYW4gd2VuIGRpZSBNZWxkdW5nIGRlbm4gZ2VoZW4gc29sbC4uLgorfQpkaWZmIC0tZ2l0IGEvZG9jL2JlaXNwaWVsZS9QcmF4aXMtS3Vycy9qdXdlbGVuLmMgYi9kb2MvYmVpc3BpZWxlL1ByYXhpcy1LdXJzL2p1d2VsZW4uYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5jMTA3MGE2Ci0tLSAvZGV2L251bGwKKysrIGIvZG9jL2JlaXNwaWVsZS9QcmF4aXMtS3Vycy9qdXdlbGVuLmMKQEAgLTAsMCArMSw2NiBAQAorLy8gKGMpIGJ5IFBhZHJlaWMgKFBhZHJlaWNAbWcubXVkLmRlKQorCisvLyBEaWVzZXMgaXN0IGVpbiBlcnN0ZXMgT2JqZWt0IGRhcyBzbyBvZGVyIGFlaG5saWNoIHRhdHNhZWNobGljaCBpbQorLy8gTW9yZ2VuR3JhdWVuIHZvcmtvbW1lbiBrb2VubnRlLgorCisvLyBKZWRlcyBPYmpla3QgaW0gTW9yZ2VuR3JhdWVuIGJyYXVjaHQgYmVyZWl0cyBlaW5lIHNvbGNoZSBWaWVsemFobCB2b24KKy8vIFN0YW5kYXJkZnVua3Rpb25lbiwgZGFzcyBlcyB6aWVtbGljaCB1bm1vZWdsaWNoIGlzdCwgZGllc2UgYWxsZSBpbiBqZWRlbQorLy8gT2JqZWt0IHp1IGRlZmluaWVyZW4uIERhaGVyICJlcmJ0IiBtYW4gZGllc2UgRnVua3Rpb25lbiB2b24gZWluZW0KKy8vIFN0YW5kYXJkb2JqZWt0LgorLy8gIkVyYmVuIiBiZWRldXRldCBoaWVyYmVpLCBkYXMgbWFuIGF1ZiBhbGxlIEZ1bmt0aW9uZW4sIGRpZSBiZXJlaXRzIGltCisvLyBTdGFuZGFyZG9iamVrdCBkZWZpbmllcnQgc2luZCwgenVncmVpZmVuIGthbm4uCisvLworLy8gRGllIGZvbGdlbmRlIFplaWxlIGVya2xhZXJ0LCBkYXNzIG1hbiBkYXMgT2JqZWt0IGFuIGRlciBQb3NpdGlvbgorLy8gIC9zdGQvdGhpbmcuYyAiZXJiZW4iIG1vZWNodGUuCitpbmhlcml0ICIvc3RkL3RoaW5nIjsKKworCisvLyBEaWUgRnVua3Rpb24gZm9sZ2VuZGVyIFplaWxlIGthbm4gbWFuIHNpY2ggcmVjaHQgZWluZmFjaCB3aWUgZm9sZ3QKKy8vIHZvcnN0ZWxsZW46IFdlbm4gZGVyIEdhbWUtRHJpdmVyIGRpZXNlcyBPYmpla3QgaGllciBjb21waWxpZXJ0LCBkYW5uCisvLyB0dXQgZXIgc28sIGFscyB3dWVyZGUgZGllIERhdGVpIC9zeXMvcHJvcGVydGllcy5oIGdlbmF1IGFuIGRpZXNlciBTdGVsbGUKKy8vIGhpZXIgaW0gQ29kZSBzdGVoZW4uCisvLworLy8gRGllIERhdGVpIHByb3BlcnRpZXMuaCBiZWluaGFsdGV0IGVpbmZhY2ggbnVyIGhhdWZlbndlaXNlIERlZmluZXMgZnVlcgorLy8gZGllIGhhdWZlbndlaXNlIFByb3BlcnRpZXMuCisvLworLy8gQW5tZXJrdW5nOiBBbGxlIERlZmluZXMgaW4gZGllc2VyIERhdGVpIHN0YXJ0ZW4gdWVicmlnZW5zIG1pdCBlaW5lbSAnUF8nLgorLy8gQW0gQmVzdGVuIHNvbGx0ZXN0IER1IGVpbmZhY2ggbWFsIGt1cnogaW4gL2RvYy9wcm9wZXJ0aWVzLmggcmVpbnNlaG4KKy8vIHVuZCBlaW4gYmlzc2NoZW4gcnVtbGVzZW4KKy8vICAoa2VpbmUgQW5nc3QsIGRpZSBtdXNzIG1hbiBuaWNodCBhbGxlIGtlbm5lbiA6KS4KKyNpbmNsdWRlIDxwcm9wZXJ0aWVzLmg+CisKK3Byb3RlY3RlZCB2b2lkIGNyZWF0ZSgpCit7CisgIC8vIERpZSBGdW5rdGlvbiBjcmVhdGUoKSB3dXJkZSBuYWVtbGljaCBiZXJlaXRzIGluIC9zdGQvdGhpbmcuYworICAvLyBiZXNjaHJpZWJlbiwga2FubiBhYmVyIG5pY2h0IG1laHIgdWViZXIgY3JlYXRlKCkgYXVmZ2VydWZlbiB3ZXJkZW4sIGRhCisgIC8vIGRhbm4gamEgd2llZGVyIGRpZXNlIEZ1bmt0aW9uIGhpZXIgYXVmZ2VydWZlbiB3dWVyZGUKKyAgLy8gKHdvZHVyY2ggd2lyIGRhbm4gZWluZSBFbmRsb3MtUmVrdXJzaW9uIGhhZXR0ZW4pLgorICAvLyBLdXJ6c2NocmVpYndlaXNlIHdhZXJlIDo6Y3JlYXRlKCk7IHdlbm4gbWFuIG51ciB2b24gZWluZW0gT2JqZWt0IGVyYnQuCisgIHRoaW5nOjpjcmVhdGUoKTsgLy8gb2RlciBhdWNoIGVpbmZhY2ggOjpjcmVhdGUoKTsKKworICAvLyBBdWNoIGRpZXNlIEZ1bmt0aW9uIHd1cmRlIGF1cyAvc3RkL3RoaW5nIGdlZXJidC4KKyAgLy8gU2V0UHJvcCgpIGlzdCBlaW5lIGRlciB3aWNodGlnc3RlbiBGdW5rdGlvbmVuIHVlYmVyaGF1cHQsIHdlbm4gZXMgZGFydW0KKyAgLy8gZ2VodCwgZWluIE9iamVrdCB6dSBiZXNjaHJlaWJlbi4gTWl0IGRpZXNlciBGdW5rdGlvbiBrYW5uc3QgRHUgbmFlbWxpY2gKKyAgLy8gemFobHJlaWNoZSBFaWdlbnNjaGFmdGVuIChlbmdsLiBwcm9wZXJ0aWVzKSBkZXMgT2JqZWt0ZXMgZmVzdGxlZ2VuLgorICBTZXRQcm9wKFBfU0hPUlQsICJFaW5pZ2Ugd2VydHZvbGxlIEp1d2VsZW4iKTsgICAgICAvLyBkaWUgS3VyemJlc2NocmVpYnVuZworICBTZXRQcm9wKFBfTE9ORywgIkRpZSBKdXdlbGVuIGdsaXR6ZXJuIHZlcmxvY2tlbmQuXG4iKTsgLy8gTGFuZ2Jlc2NocmVpYnVuZworICBTZXRQcm9wKFBfTkFNRSwgIkp1d2VsZW4iKTsgLy8gZGVyIGVpZ2VudGxpY2hlIE5hbWUKKyAgU2V0UHJvcChQX05BTUVfQURKLCAid2VydHZvbGwiKTsgLy8gZGFzIEFkamVrdGl2IHZvciBkZW0gTmFtZW4KKyAgU2V0UHJvcChQX0dFTkRFUiwgRkVNQUxFKTsgLy8gR2VzY2hsZWNodCAoa2FubiBhdWNoIE1BTEUgb2RlciBORVVURVIgc2VpbikKKyAgU2V0UHJvcChQX1dFSUdIVCwgNTAwMCk7IC8vIGRpZXNlcyBPYmpla3Qgd2llZ3QgNWtnCisgIFNldFByb3AoUF9WQUxVRSwgMTAwMDApOyAvLyBkYXMgT2JqZWt0IGlzdCBpbnNnZXNhbXQgMTAwMDAgTXVlbnplbiBXZXJ0CisgIAorICAvLyBNaXQgZGllc2VyIEZ1bmt0aW9uIGthbm4gbWFuIGVpbmUgaWQgYW5nZWJlbiwgdWViZXIgZGllIGRhcyBPYmpla3QKKyAgLy8gYW5zcHJlY2hiYXIgaXN0LgorICAvLyBBbm1lcmt1bmc6IEF1Y2ggZGllc2UgRnVua3Rpb24gaXN0IHdpZWRlciB2b24gc3RkL3RoaW5nIGdlZXJidCwgaW0KKyAgLy8gICBmb2xnZW5kZW4gd2VyZGUgaWNoIGRpZXMgYWJlciBuaWNodCBtZWhyIGJlaSBqZWRlciBGdW5rdGlvbiBleHRyYQorICAvLyAgIGFuZ2ViZW4uIFdlbm4gbmljaHQgYW5kZXJzIGFuZ2VnZWJlbiwgaGFuZGVsdCBlcyBzaWNoIGFiIGpldHp0CisgIC8vICAgbmFlbWxpY2ggX2ltbWVyXyB1bSBlcmVyYnRlIEZ1bmt0aW9uZW4uCisgIEFkZElkKCJqdXdlbGVuIik7CisgIAorICAvLyBJbiBkaWVzZW0gRmFsbCBiZW5vZXRpZ3QgbWFuIG5vY2ggZWluIHdlaXRlcmVzIEFkamVrdGl2LCBkYSBtYW4gZGFzCisgIC8vIE9iamVrdCBqYSBhdWNoIG1pdCB3ZXJ0dm9sbGUgSnV3ZWxlbiBhbnNwcmVjaGVuIGtvZW5uZW4gbW9lY2h0ZS4KKyAgLy8gei5CLjogdW50IHdlcnR2b2xsZSBqdXdlbGVuCisgIC8vICAgICAgIGdpYiB3ZXJ0dm9sbGUganV3ZWxlbiBhbiBwYWRyZWljCisgIEFkZEFkamVjdGl2ZSgid2VydHZvbGxlIik7Cit9CmRpZmYgLS1naXQgYS9kb2MvYmVpc3BpZWxlL1ByYXhpcy1LdXJzL2xvcy5jIGIvZG9jL2JlaXNwaWVsZS9QcmF4aXMtS3Vycy9sb3MuYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5mM2I0MWU4Ci0tLSAvZGV2L251bGwKKysrIGIvZG9jL2JlaXNwaWVsZS9QcmF4aXMtS3Vycy9sb3MuYwpAQCAtMCwwICsxLDExOCBAQAorLy8gKGMpIGJ5IFBhZHJlaWMgKFBhZHJlaWNAbWcubXVkLmRlKQorCisjaW5jbHVkZSA8cHJvcGVydGllcy5oPiAvLyB3aWVkZXIgdW5zZXJlIGFsbGdlbWVpbmVuIFByb3BlcnR5cworI2luY2x1ZGUgPG1vdmluZy5oPiAgICAgLy8gZWluaWdlIERlZmluZXMgenVtIEJld2VnZW4gdm9uIE9iamVrdGVuIChzLnUuKQorCitpbmhlcml0ICIvc3RkL3RoaW5nIjsKKworcHJvdGVjdGVkIHZvaWQgY3JlYXRlKCkKK3sKKyAgOjpjcmVhdGUoKTsKKyAgIC8vIE9iamVrdCB1ZWJlciBzZWluZSBQcm9wZXJ0aWVzIGJlc2NocmVpYmVuLi4uCisgICBTZXRQcm9wKFBfU0hPUlQsICJFaW4gUnViYmVsbG9zIik7CisgICBTZXRQcm9wKFBfTE9ORywKKyAgICAiRHUga2FubnN0IGRpZXNlcyBMb3MgYXVmcnViYmVsbiB1bSB6dSBzZWhlbiwgb2IgRHUgZWluZW4gZ3Jvc3NlbiAiCisgICAgIlNjaGF0elxuZ2V3b25uZW4gaGFzdC5cbiIpOworICAgU2V0UHJvcChQX05BTUUsICJSdWJiZWxsb3MiKTsKKyAgIFNldFByb3AoUF9BUlRJQ0xFLCAxKTsgLy8gaXN0IGVpZ2VudGxpY2ggYmVyZWl0cyBEZWZhdWx0d2VydAorICAgU2V0UHJvcChQX0dFTkRFUiwgTkVVVEVSKTsKKyAgIFNldFByb3AoUF9WQUxVRSwgMTAwMCk7CisgICBTZXRQcm9wKFBfV0VJR0hULCA1MDApOworICAgU2V0UHJvcChQX0lORk8sICJEZWluZSBHZXdpbm5jaGFuY2VuIGJlaSBkaWVzZW4gTG9zZW4gc2luZCBuaWNodCAiCisgICAgICAgICAgICAgICAgICAgInNvbmRlcmxpY2ggZ3V0LlxuIik7CisgICBTZXRQcm9wKFBfTUFHSUMsIDApOyAvLyAoZWluZmFjaCBudXIsIHVtIG1hbCBhbGxlIFByb3BlcnRpZXMgenUgYmVudXR6ZW4pCisgICBBZGRJZCgibG9zIik7IC8vIG5vY2ggZWluZSBpZCBhbmdlYmVuLi4uCisKKyAgIC8vIE1pdCBIaWxmZSBkaWVzZXIgbmV1ZW4gd2ljaHRpZ2VuIEZ1bmt0aW9uIGlzdCBlcyBtb2VnbGljaCwgQmVmZWhsZSB6dQorICAgLy8gZGVmaW5pZXJlbiwgdWViZXIgZGllIG1hbiBpcmdlbmRldHdhcyBhdXNsb2VzZW4ga29lbm5lbiBzb2xsOgorICAgLy8gVW5kIHp3YXIgd2lyZCBzb2JhbGQgZWluIFNwaWVsZXIgZGVuIEJlZmVobCBydWJibGUgb2RlciBydWJiZWwKKyAgIC8vIGJlbnV0enQsIGRpZSBGdW5rdGlvbiBfcnViYmVsbigpIGhpZXIgaW0gT2JqZWt0IGF1ZmdlcnVmZW4uIERhIGRpZXNlCisgICAvLyBGdW5rdGlvbiBiaXNoZXIgamEgbm9jaCBuaWNodCBkZWZpbmllcnQgaXN0LCBtdXNzIGRpZXNlIG5hdHVlcmxpY2gKKyAgIC8vIGF1Y2ggbm9jaCBwcm9ncmFtbWllcnQgd2VyZGVuLgorICAgQWRkQ21kKCh7InJ1YmJsZSIsICJydWJiZWwifSksICJfcnViYmVsbiIpOworfQorCisvLyBEaWVzZSBGdW5rdGlvbiBzaWVodCBnbGVpY2ggdW0gZWluaWdlcyBrb21wbGV4ZXIgYXVzIGFscyBkaWUgRnVua3Rpb25lbgorLy8gY3JlYXRlKCksIGluaXQoKSB1bmQgcmVzZXQoKSwgZGllIGJpc2hlciBiZW51dHp0IHd1cmRlbi4KKy8vIERhcyBzdGF0aWMgYW0gQW5mYW5nIGVya2xhZXJ0IG51ciwgZGFzcyBkaWVzZSBGdW5rdGlvbiBuaWNodCB2b24gYXVzc2VuLAorLy8gc29uZGVybiBudXIgdm9uIGlubmVyaGFsYiBkZXMgT2JqZWt0ZXMgYXVmZ2VydWZlbiB3ZXJkZW4ga2Fubi4KKy8vIERhcyAiaW50IiBhbnN0ZWxsZSBkZXMgInZvaWQiIGJlZGV1dGV0LCBkYXNzIGRpZSBGdW5rdGlvbmVuIGVpbiBFcmdlYm5pcworLy8genVydWVja2xpZWZlcnQuIERhIGRpZXNlIEZ1bmt0aW9uIGluIFZlcmJpbmR1bmcgbWl0IEFkZENtZCgpIGJlbnV0enQKKy8vIHdpcmQsIGhhdCBkaWVzZXIgUnVlY2tnYWJld2VydCBhdWNoIGVpbmUgYmVzb25kZXJlIEJlZGV1dHVuZzoKKy8vICAgRWluZSAxIGJlZGV1dGV0LCBkYXNzIGRlciBCZWZlaGwgZmVydGlnIGFiZ2VhcmJlaXRldCB3dXJkZS4KKy8vICAgRWluZSAwIGJlZGV1dGV0LCBkYXMgT2JqZWt0IGtvbm50ZSBtaXQgZGVtIEJlZmVobCBuaWNodHMgYW5mYW5nZW4sIGRlcgorLy8gICAgR2FtZWRyaXZlciBtdXNzIGFsc28gbm9jaCBpbiB3ZWl0ZXJlbiBPYmpla3RlbiBhbmZyYWdlbiwgZGllIGRlcgorLy8gICAgU3BpZWxlciBiZWkgc2ljaCB0cmFlZ3QuCisvLyBEZXIgU3RyaW5nICdzdHInLCBkZW4gZGllIEZ1bmt0aW9uIGFscyBQYXJhbWV0ZXIgdWViZXJnZWJlbiBiZWtvbW10LAorLy8gZW50aGFlbHQgZGFzLCB3YXMgZGVyIFNwaWVsZXIgYXVzc2VyIGRlbSBlaWdlbnRsaWNoZW4gVmVyYiBlaW5nZWdlYmVuCisvLyBoYXQgKFdvZXJ0ZXIgd2llICd1bmQnLCAnZWluJywgJ2RlcicsICdkaWUnLCAnZGFzJyAuLi4gd2VyZGVuIGhpZXJiZWkKKy8vICB6dXZvciBoZXJhdXNnZWZpbHRlcnQpCisvLyBCc3AuOiAgIHJ1YmJlbCBsb3MgICAgICAtPiAgX3J1YmJlbG4oImxvcyIpCisvLyAgICAgICAgIHJ1YmJlbCBrYXR6ZSAgICAtPiAgX3J1YmJlbG4oImthdHplIikKKy8vICAgICAgICAgcnViYmVsIGxvcyBhdWYgIC0+ICBfcnViYmVsbigibG9zIGF1ZiIpCitwdWJsaWMgaW50IF9ydWJiZWxuKHN0cmluZyBzdHIpCit7CisgICAvLyBEaWUgRnVua3Rpb24gbm90aWZ5X2ZhaWwoKSBpc3Qgd2llZGVyIGVpbmUgRnVua3Rpb24gZGVzIEdhbWVkcml2ZXJzOgorICAgLy8gVW5kIHp3YXIgaXN0IGVzIG1vZWdsaWNoIGhpZXIgZWluZSBNZWxkdW5nIGFuenVnZWJlbiwgZGllIGFuc3RlbGxlCisgICAvLyBlaW5lcyAiV2llIGJpdHRlPyIga29tbXQsIGZhbGxzIGtlaW4gT2JqZWt0IGRlbiBCZWZlaGwgcmljaHRpZworICAgLy8gYWJnZWFyYmVpdGV0IGhhdC4KKyAgIG5vdGlmeV9mYWlsKCJTeW50YXg6IHJ1YmJlbCBsb3MgYXVmXG4iKTsgLy8gZWlnZW50bGljaCBlZnVuOjpub3RpZnlfZmFpbCgpCisKKyAgIC8vIFdlbm4gZGVyIHVlYmVyZ2ViZW5lIFN0cmluZyB1bmdsZWljaCAibG9zIGF1ZiIgaXN0LCBkYW5uIGZ1ZWhsdCBzaWNoCisgICAvLyBkYXMgT2JqZWt0IG5pY2h0IGFuZ2VzcHJvY2hlbiwga2FubiBkYXMgVmVyYiBhbHNvIG5pY2h0IGtvbXBsZXR0CisgICAvLyBhYmFyYmVpdGVuIHVuZCBnaWJ0IGRlc2hhbGIgZWluZSAwIHp1cnVlY2suCisgICBpZiAoc3RyIT0ibG9zIGF1ZiIpIHJldHVybiAwOworCisgICAvLyBBdWNoIGRpZSBGdW5rdGlvbiByYW5kb20oKSBpc3Qgd2llZGVyIGVpbmUgRnVua3Rpb24gZGVzIEdhbWVkcml2ZXI6CisgICAvLyBVbmQgendhciBsaWVmZXJ0IHNpZSBlaW5lIGdhbnp6YWhsaWdlIFp1ZmFsbHN6YWhsIHp3aXNjaGVuIDAgdW5kIG4tMQorICAgLy8gICh3b2JlaSBuIGRpZSB1ZWJlcmdlYmVuZSBaYWhsIGlzdCkuIEluIGRpZXNlbSBGYWxsIGFsc28gendpc2NoZW4KKyAgIC8vIDAgdW5kIDk5LgorICAgaWYgKHJhbmRvbSgxMDApPDkyKSB7IC8vIHNvbGx0ZSBkaWVzZSBaYWhsIDwgOTIgc2VpbiwgZGFubiB0dWUgRm9sZ2VuZGVzOgorICAgICB3cml0ZSgiRHUgcnViYmVsc3QgZGFzIExvcyBhdWYuIExlaWRlciB3YXIgZXMgamVkb2NoIG51ciBlaW5lIE5pZXRlLlxuIgorICAgICAgICAgICsiVmVyYWVyZ2VydCBsYWVzc3QgRHUgZGFzIExvcyBkZXNoYWxiIGZhbGxlbi5cbiIpOworICAgfQorICAgZWxzZSB7IC8vIHNvbGx0ZSBkaWUgWmFobCBuaWNodCA8IDkyIGdld2VzZW4gc2VpbiwgZGFubiB0dWUgRm9sZ2VuZGVzOgorICAgICBvYmplY3Qgb2I7IC8vIGJlcmVpdHN0ZWxsZW4gZWluZXIgSGlsZnN2YXJpYWJsZW4KKworICAgICB3cml0ZSgiRHUgcnViYmVsc3QgZGFzIExvcyBhdWYgdW5kIHN0cmFobHN0IHZvciBGcmV1ZGUuIEVzIHdhciBkZXIgIgorICAgICAgICAgICsiYWJzb2x1dGUgSGF1cHRnZXdpbm4uXG5Tb2ZvcnQga29tbXQgZWluIEJvdGUgaGVyZWluIHVuZCAiCisgICAgICAgICAgKyJ1ZWJlcnJlaWNodCBEaXIgRGVpbmVuIEdld2lubi5cbiIpOworCisgICAgIC8vIE1pdCBjbG9uZV9vYmplY3QoKSBrYW5uIG1hbiBlaW4gYmVsaWViaWdlcyBPYmpla3QgQ2xvbmVuLCBpbmRlbSBtYW4KKyAgICAgLy8gZWluZmFjaCBkZW4gZW50c3ByZWNoZW5kZW4gRmlsZW5hbWVuIGFscyBQYXJhbWV0ZXIgdWViZXJnaWJ0LgorICAgICBvYj1jbG9uZV9vYmplY3QoIi9kb2MvYmVpc3BpZWxlL1ByYXhpcy1LdXJzL2p1d2VsZW4iKTsKKworICAgICAvLyBOdW4ga29tbWVuIGdsZWljaCAzIG5ldWUgRGluZ2UgYXVmIGVpbm1hbC4uLgorICAgICAvLyBNaXQgLT4gd2lyZCBlaW5lIEZ1bmt0aW9uIGluIGVpbmVtIGFuZGVyZW4gT2JqZWt0IGF1ZmdlcnVmZW4KKyAgICAgLy8gIChhbHRlcm5hdGl2IGF1Y2g6IGNhbGxfb3RoZXIob2IsbW92ZSx0aGlzX3BsYXllcigpLCBNX0dFVCk7ICkKKyAgICAgLy8gRGllIEZ1bmt0aW9uLCBkaWUgaGllcmJlaSBhdWZnZXJ1ZmVuIHdlcmRlbiBzb2xsLCBoZWlzc3QgbW92ZSgpLgorICAgICAvLyBEaWVzZSBGdW5rdGlvbiBpc3QgaW4gYWxsZW4gT2JqZWt0ZW4gZGVmaW5pZXJ0LCBkaWUgL3N0ZC90aGluZyBlcmJlbi4KKyAgICAgLy8gU29taXQga29lbm5lbiB3aXIgYWxzbyBmZXN0IGRhdm9uIGF1c2dlaGVuLCBkYXNzIHNpZSBhdWNoIGluIHVuc2VyZW4KKyAgICAgLy8gSnV3ZWxlbiB2b3JoYW5kZW4gaXN0LgorICAgICAvLyB0aGlzX3BsYXllcigpIGlzdCBlaW5lIHNlaHIgd2ljaHRpZ2UgR2FtZWRyaXZlci1GdW5rdGlvbiwgZGEgc2llCisgICAgIC8vIHVucyBkYXMgTGViZXdlc2VuIHp1cnVlY2tsaWVmZXJ0LCBkYXMgZ2VyYWRlIGFrdGl2IGR1cmNoIGVpbmVuIEJlZmVobAorICAgICAvLyBkZW4gYWt0dWVsbGVuIEZ1bmt0aW9uc2F1ZnJ1ZiBnZXN0YXJ0ZXQgaGF0LgorICAgICAvLyBNX0dFVCBpc3QgbGVkaWdsaWNoIGVpbiBEZWZpbmUsIGRhcyBpbiBtb3ZpbmcuaCBkZWZpbmllcnQgaXN0LgorICAgICAvLyBOYWVoZXJlcyBoaWVyenUgZmluZGV0IG1hbiBhdWNoIGluIDxtYW4gbW92ZT4uCisgICAgIG9iLT5tb3ZlKHRoaXNfcGxheWVyKCksIE1fR0VUKTsKKyAgICAgLy8gQUNIVFVORzogdW0gZGllc2VzIEJlaXNwaWVsIHNpbXBlbCB6dSBoYWx0ZW4sIHdpcmQgaGllciBkYXJhdWYKKyAgICAgLy8gdmVyemljaHRldCwgenUgcHJ1ZWZlbiwgb2IgZGllc2UgQmV3ZWd1bmcgdWViZXJoYXVwdCBmdW5rdGlvbmllcnQKKyAgICAgLy8gaGF0LiBOb3JtYWxlcndlaXNlIG11c3MgbWFuIGluIGRpZXNlbSBGYWxsIChtaXNzbHVuZ2VuZSBCZXdlZ3VuZykKKyAgICAgLy8gZWluZSBGZWhsZXJiZWhhbmRsdW5nIGR1cmNoZnVlaHJlbiAoei5CLiBvYiB3aWVkZXIgZW50ZmVybmVuLAorICAgICAvLyBNZWxkdW5nIGFuIGRlbiBTcGllbGVyIGF1c2dlYmVuKS4KKyAgIH0KKworICAgLy8gRGllIEZ1bmt0aW9uIHNheSgpIGdpYnQgYW4gYWxsZSBTcGllbGVyIGltIFJhdW0gZGVzIGFrdGl2ZW4gU3BpZWxlcnMKKyAgIC8vIGVpbmUgTmFjaHJpY2h0IGF1cywgYWJlciBuaWNodCBhbiBkZW4gYmV0cm9mZmVuZW4gU3BpZWxlciBzZWxic3QhCisgICAvLyBEaWUgRnVua3Rpb24gTmFtZSgpLCBkaWUgaGllciBpbSBTcGllbGVyIGF1ZmdlcnVmZW4gd2lyZCwgd2VydGV0CisgICAvLyBkZXNzZW4gUHJvcGVydGllIFBfTkFNRSBhdXMgdW5kIGRla2xpbmllcnQgZGVuIE5hbWVuIGltIGFuZ2VnZWJlbmVuCisgICAvLyBGYWxsLgorICAgc2F5KHRoaXNfcGxheWVyKCktPk5hbWUoV0VSKSsiIHJ1YmJlbHQgZWluIExvcyBhdWYuXG4iKTsKKworICAgLy8gVW5kIG51biBzb2xsIHNpY2ggZGFzIE9iamVrdCBzZWxic3QgZW50ZmVybmVuICh6ZXJzdG9lcmVuKS4KKyAgIHJlbW92ZSgpOworCisgICAvLyBEYSBkZXIgQmVmZWhsIGphIGtvbXBsZXR0IGFiZ2VhcmJlaXRldCB3dXJkZSwgZ2ViZW4gd2lyIGVpbmUgMQorICAgLy8genVydWVjay4KKyAgIHJldHVybiAxOworfQpkaWZmIC0tZ2l0IGEvZG9jL2JlaXNwaWVsZS9QcmF4aXMtS3Vycy9taWxjaC5jIGIvZG9jL2JlaXNwaWVsZS9QcmF4aXMtS3Vycy9taWxjaC5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjY2YjYxNzMKLS0tIC9kZXYvbnVsbAorKysgYi9kb2MvYmVpc3BpZWxlL1ByYXhpcy1LdXJzL21pbGNoLmMKQEAgLTAsMCArMSw5MSBAQAorLy8gKGMpIGJ5IFBhZHJlaWMgKFBhZHJlaWNAbWcubXVkLmRlKQorCisvLyBBbm1lcmt1bmc6IEhldXR6dXRhZ2UgZ2lidCBlcyBmdWVyIExlYmVuc21pdHRlbCAoYnp3LiBhbGxlIERpbmdlLCBkaWUKKy8vIG1hbiBlc3NlbiBvZGVyIHRyaW5rZW4ga2FubikgZWluIFN0YW5kYXJkb2JqZWt0IG5hbWVucyAvc3RkL2Zvb2QsCisvLyB3ZWxjaGVzIHZpZWxlIEZ1bmt0aW9uYWxpdGFldCBtaXRicmluZ3QsIGRpZSBtYW4gYW5zb25zdGVuIHNlbGJlcgorLy8gbXVlaHNhbSBiYXN0ZWxuIG11c3MuIERpZSBWZXJ3ZW5kdW5nIGlzdCBkcmluZ2VuZCBlbXBmb2hsZW4uCisKKyNpbmNsdWRlIDxwcm9wZXJ0aWVzLmg+IC8vIHdpZWRlciB1bnNlcmUgYWxsZ2VtZWluZW4gUHJvcGVydGllcworCitpbmhlcml0ICIvc3RkL3RoaW5nIjsKKworLy8gZ2xvYmFsZSBWYXJpYWJsZSwgZGllIGFuZ2lidCwgd2llIHZvbGwgZGllIEZsYXNjaGUgaXN0LiBFcyBzaW5kIDUKKy8vIFBvcnRpb25lbiBlbnRoYWx0ZW4uCitpbnQgbWVuZ2UgPSA1OworCitwcm90ZWN0ZWQgdm9pZCBjcmVhdGUoKQoreworICAgOjpjcmVhdGUoKTsKKyAgIC8vIE9iamVrdCB1ZWJlciBzZWluZSBQcm9wZXJ0aWVzIGJlc2NocmVpYmVuLi4uCisgICAvLyBQX1NIT1JUIHVuZCBQX0xPTkcgd2VyZGVuIGRpcmVrdCBhbHMgRnVua3Rpb24gaW1wbGVtZW50aWVydCAocy51LikKKyAgIFNldFByb3AoUF9OQU1FLCAiTWlsY2hmbGFzY2hlIik7CisgICBTZXRQcm9wKFBfR0VOREVSLCBGRU1BTEUpOworICAgU2V0UHJvcChQX1ZBTFVFLCA4MCk7CisgICBTZXRQcm9wKFBfV0VJR0hULCAxMDAwKTsKKyAgIEFkZElkKCh7ImZsYXNjaGUiLCAibWlsY2hmbGFzY2hlIn0pKTsKKyAgIEFkZENtZCgoeyJ0cmluayIsICJ0cmlua2UifSksICJfdHJpbmtlbiIpOworfQorCisvLyBBbnN0ZWxsZSB2b24gUF9TSE9SVCBLdXJ6YmVzY2hyZWlidW5nIHVlYmVyIEZ1bmt0aW9uIHNob3J0KCkuCisvLyBEaWVzIGlzdCBuaWNodCBpbW1lciBtb2VnbGljaCwgZGEgbmljaHQgendhbmdzbGFldWZpZyB6dSBqZWRlciBQcm9wZXJ0aWUKKy8vIGVpbmUgZ2xlaWNobmFtaWdlIEZ1bmt0aW9uIGV4aXN0aWVydC4KKy8vIEVzIGlzdCBhbGxlcmRpbmdzIG5vY2ggc29nLiBRdWVyeW1ldGhvZGVuIChzaWVoZSBkYXp1IDxtYW4gUXVlcnlQcm9wPiB1bmQKKy8vIDxtYW4gUXVlcnk+IGJlaSBCZWRhcmYpLgorcHVibGljIHN0cmluZyBzaG9ydCgpCit7CisgICBzdHJpbmcgc3RyOworICAgc3dpdGNoKG1lbmdlKSB7CisgICAgIGNhc2UgMTogc3RyPSJFaW5lIGZhc3QgbGVlcmUgTWlsY2hmbGFzY2hlLlxuIjsgYnJlYWs7CisgICAgIGNhc2UgMjogc3RyPSJFaW5lIGJhbGQgbGVlcmUgTWlsY2hmbGFzY2hlLlxuIjsgYnJlYWs7CisgICAgIGNhc2UgMzogc3RyPSJFaW5lIGhhbGJ2b2xsZSBNaWxjaGZsYXNjaGUuXG4iOyAgYnJlYWs7CisgICAgIGNhc2UgNDogc3RyPSJFaW5lIGZhc3Qgdm9sbGUgTWlsY2hmbGFzY2hlLlxuIjsgYnJlYWs7CisgICAgIGNhc2UgNTogc3RyPSJFaW5lIHZvbGxlIE1pbGNoZmxhc2NoZS5cbiI7ICAgICAgYnJlYWs7CisgICAgIGRlZmF1bHQ6IHN0cj0iRWluZSBsZWVyZSBNaWxjaGZsYXNjaGUuXG4iOworICAgfQorICAgcmV0dXJuIHN0cjsKK30KKworcHVibGljIHN0cmluZyBsb25nKCkKK3sKKyAgIGlmIChtZW5nZT4xKQorICAgICAgcmV0dXJuICJFaW5lIEZsYXNjaGUgbWl0IGxlY2tlcmVyIFZvbGxtaWxjaC5cbiI7CisgICBlbHNlCisgICAgICByZXR1cm4gIkRpZSBNaWxjaGZsYXNjaGUgaXN0IGJhbGQgbGVpZGVyIHNjaG9uIGFsbGUsIER1IHNvbGx0ZXN0ICIKKyAgICAgICAgICAgICAiRGljaCB2aWVsbGVpY2h0IG1hbFxubmFjaCBOYWNoc2NodWIgdW1zZWhuLlxuIjsKK30KKworcHVibGljIGludCBfdHJpbmtlbihzdHJpbmcgc3RyKQoreworICAgbm90aWZ5X2ZhaWwoIlN5bnRheDogdHJpbmtlIGF1cyBtaWxjaGZsYXNjaGVcbiIpOworCisgICAvLyBGYWxscyBkaWUgZXJzdGVuIHZpZXIgWmVpY2hlbiBpbiBkZW0gdWViZXJnZWJlbmVuIFN0cmluZyB1bmdsZWljaAorICAgLy8gImF1cyAiIHNpbmQsIGRhbm4gZnVlaGx0IHNpY2ggZGFzIE9iamVrdCBuaWNodCBhbmdlc3Byb2NoZW4sIGthbm4gZGFzCisgICAvLyBWZXJiIGFsc28gbmljaHQga29tcGxldHQgYWJhcmJlaXRlbiB1bmQgZ2lidCBkZXNoYWxiIGVpbmUgMCB6dXJ1ZWNrLgorICAgaWYgKHN0clswLi4zXSE9ImF1cyAiKSByZXR1cm4gMDsKKworICAgLy8gSWNoIGJlbnV0emUgbnVuIGFsbGVzIGFiIGRlbSB2aWVydGVuIFplaWNoZW4gdW5kIHBydWVmZSwgb2Igc2ljaCBkYXMKKyAgIC8vIE9iamVrdCBkYXZvbiBhbmdlc3Byb2NoZW4gZnVlaGx0LiBIaWVyenUgZGllbnQgZGllIEZ1bmt0aW9uIGlkKCkuCisgICAvLyBHcm9zc2VyIFZvcnRlaWw6IFVlYmVyc2ljaHRsaWNoIHVuZCBzcGFldGVyZXMgRXJnYWVuemVuIHZvbiBJZHMgYnp3LgorICAgLy8gQWRqZWt0aXZlbiBnZWh0IHNlaHIgZWluZmFjaCB1bmQgZXJzcGFydCBsYW5nZSBpZigpLUFiZnJhZ2VuLgorICAgaWYgKCAhaWQoc3RyWzQuLl0pICkgcmV0dXJuIDA7CisKKyAgIGlmIChtZW5nZTw9MCkgeworICAgICB3cml0ZSgiRGllIE1pbGNoZmxhc2NoZSBpc3QgbGVpZGVyIHNjaG9uIGxlZXIgOiguXG4iKTsKKyAgIH0KKyAgIGVsc2UgeworICAgICAvLyBkcmlua19zb2Z0KCkgaXN0IGVpbmUgRnVua3Rpb24sIGRpZSBpbiBhbGxlbiBMZWJld2VzZW4gaW0KKyAgICAgLy8gTW9yZ2VuZ3JhdWVuIGRlZmluaWVydCBpc3QgdW5kIHVlYmVyIGRpZSBtYW4gc293b2hsIEFiZnJhZ2VuIGFscworICAgICAvLyBhdWNoIGhvY2hzZXR6ZW4gdm9uIFBfRFJJTksgdm9ybmVobWVuIHNvbGx0ZS4KKyAgICAgaWYgKHRoaXNfcGxheWVyKCktPmRyaW5rX3NvZnQoMTApKSB7CisKKyAgICAgICAvLyBoZWFsX3NlbGYoKSBpc3QgYXVjaCBpbiBhbGxlbiBMZWJld2VzZW4gZGVmaW5pZXJ0IHVuZCBoZWlsdCBiZWkKKyAgICAgICAvLyBkZW0gTGViZXdlc2VuIExlYmVucy0gdW5kIEtvbnplbnRyYXRpb25zcHVua3RlLgorICAgICAgIHRoaXNfcGxheWVyKCktPmhlYWxfc2VsZigxMCk7CisgICAgICAgd3JpdGUoIkdlbnVlc3NsaWNoIHRyaW5rc3QgRHUgZWluZW4gU2NobHVjayBNaWxjaC5cbiIpOworICAgICAgIHNheSh0aGlzX3BsYXllcigpLT5OYW1lKFdFUikrIiB0cmlua3QgZWluZW4gU2NobHVjayBWb2xsbWlsY2gsXG4iKTsKKyAgICAgICBtZW5nZS0tOworICAgICB9CisgICAgIGVsc2Ugd3JpdGUoIlNvdmllbCBrYW5uc3QgRHUgbGVpZGVyIG5pY2h0IG1laHIgdHJpbmtlbi5cbiIpOworICAgfQorICAgcmV0dXJuIDE7Cit9CmRpZmYgLS1naXQgYS9kb2MvYmVpc3BpZWxlL1ByYXhpcy1LdXJzL25wYy5jIGIvZG9jL2JlaXNwaWVsZS9QcmF4aXMtS3Vycy9ucGMuYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4zOWE1NGZkCi0tLSAvZGV2L251bGwKKysrIGIvZG9jL2JlaXNwaWVsZS9QcmF4aXMtS3Vycy9ucGMuYwpAQCAtMCwwICsxLDExNSBAQAorLy8gKGMpIGJ5IFBhZHJlaWMgKFBhZHJlaWNAbWcubXVkLmRlKQorCisjaW5jbHVkZSA8cHJvcGVydGllcy5oPgorI2luY2x1ZGUgPGF0dHJpYnV0ZXMuaD4KKyNpbmNsdWRlIDxjb21iYXQuaD4KKyNpbmNsdWRlIDxndWFyZC5oPgorI2luY2x1ZGUgPG1vdmluZy5oPgorI2luY2x1ZGUgPG5ld19za2lsbHMuaD4KKworLy8gRWluIE5QQyB3aXJkIG5pY2h0IHZvbiAvc3RkL3RoaW5nIGRpcmVrdCBnZWVyYnQsIHNvbmRlcm4gdm9uIC9zdGQvbnBjLgorLy8gRGEgL3N0ZC9ucGMgYWJlciBzZWluZXJzZWl0cyB3aWVkZXIgdm9uIC9zdGQvdGhpbmcgZXJidCwgc2luZCBpbSBOUEMgYXVjaAorLy8gc2FlbXRsaWNoZSBGdW5rdGlvbmVuIGRlZmluaWVydCwgZGllIGJlcmVpdHMgaW4gL3N0ZC90aGluZyBlbnRoYWx0ZW4gc2luZC4KK2luaGVyaXQgIi9zdGQvbnBjIjsKKwordm9pZCBjcmVhdGUoKQoreworICAgOjpjcmVhdGUoKTsKKyAgIC8vIGNyZWF0ZV9kZWZhdWx0X25wYygpIHNldHp0IHNjaG9uIG1hbCBlaW5pZ2Ugd2ljaHRpZ2UgUHJvcGVydGllcyB3aWUKKyAgIC8vIFBfQVRUUklCVVRFUyBhdXRvbWF0aXNjaC4uLgorICAgY3JlYXRlX2RlZmF1bHRfbnBjKDIwLCAzMDApOworCisgICAvLyBLZWluZSBBbmdzdDogRXMgbXVlc3NlbiBrZWluZXN3ZWdzIGltbWVyIGFsbGUgZGllc2UgUHJvcGVydGllcyBiZW51dHp0CisgICAvLyB3ZXJkZW4sIGF1Y2ggd2VubiBpY2ggc2llIGpldHp0IGVpbm1hbCBhbGxlIGFuZ2ViZSwgdW0gZWluZSBVZWJlcnNpY2h0CisgICAvLyB6dSBnZWJlbiwgd2FzIG1hbiBhbGxlcyB1ZWJlciBQcm9wZXJ0aWVzIHN0ZXVlcm4ga2Fubi4uLgorICAgU2V0UHJvcChQX1NIT1JULCAiRWluIGZpZXNlciBPcmsiKTsKKyAgIFNldFByb3AoUF9MT05HLCAiRGVyIE9yayBzY2hhdXQgRGljaCBncmltbWlnIGFuLlxuIik7CisgICBTZXRQcm9wKFBfTkFNRSwgIk9yayIpOworICAgU2V0UHJvcChQX05BTUVfQURKLCAiZmllcyIpOworICAgU2V0UHJvcChQX0dFTkRFUiwgTUFMRSk7CisgICBTZXRQcm9wKFBfTUFHSUMsIDApOworICAgU2V0UHJvcChQX01BVEVSSUFMLCBNQVRfTUlTQ19MSVZJTkcpOworCisgICAvLyBudW4ga29tZW4gZWluaWdlIHdpcmtsaWNoIG5ldWUgUHJvcGVydGllcworICAgU2V0UHJvcChQX0lORk8sICJEZXIgT3JrIGlzdCBlaW4gZ2FueiBnZW1laW5lci4uLiA6KVxuIik7CisgICBTZXRQcm9wKFBfQUxJR04sIC01MDApOyAvLyBBbGlnbm1lbnQgZGVzIEdlZ25lcnMKKyAgIFNldFByb3AoUF9SQUNFLCAiT3JrIik7IC8vIFJhc3NlIGRlcyBOUENzCisgICBTZXRQcm9wKFBfQUdHUkVTU0lWRSwgMSk7IC8vIGdyZWlmdCBhZ2dyZXNzaXYgamVkZW4gYW4KKyAgIFNldFByb3AoUF9BVFRSSUJVVEVTLCAoW0FfSU5UOjUsIEFfREVYOjEwLCBBX1NUUjoyNSwgQV9DT046MTBdKSk7CisgICBTZXRQcm9wKFBfU0laRSwgMTM0KTsgLy8gR3JvZXNzZSBpbiBjbQorICAgU2V0UHJvcChQX01BWF9IUCwgMzAwKTsgLy8gbWF4LiBMZWJlbnNwdW5rdGUKKyAgIFNldFByb3AoUF9IUCwgMzAwKTsgLy8gTGViZW5zcHVua3RlCisgICBTZXRQcm9wKFBfTUFYX1NQLCAyMDApOyAvLyBtYXguIE1hZ2llcHVua3RlCisgICBTZXRQcm9wKFBfU1AsIDIwMCk7IC8vIE1hZ2llcHVua3RlCisgICBTZXRQcm9wKFBfQk9EWSwgODApOyAvLyBHcnVuZHJ1ZXN0dW5nc3NjaHV0eiBkZXMgS29lcnBlcnMKKyAgIFNldFByb3AoUF9NQVhfSEFORFMsIDIpOyAvLyBrYWVtcGZ0IG1pdCB6d2VpIEhhZW5kZW4uLi4KKyAgIFNldFByb3AoUF9IQU5EUywgKHsiIG1pdCBibG9zc2VuIEhhZW5kZW4iLCAxNTB9KSk7CisgICBTZXRQcm9wKFBfTk9NQUdJQywgMjApOyAvLyAyMCUgUmVzaXN0ZW56IGdlZ2VuIFNwZWxscworICAgU2V0UHJvcChQX0dVQVJELCAyMCk7IC8vIERlciBOUEMgbGFlc3N0IHNpY2ggZ2dmLiB3ZWdsb2NrZW4KKyAgIFNldFByb3AoUF9OT19HTE9CQUxfQVRUQUNLLCAwKTsgLy8gd2lyZCB2b24gJ3RvZXRlIGFsbGVzJyBlcmZhc3N0CisgICBTZXRQcm9wKFBfTk9fQVRUQUNLLCAwKTsgIC8vIGthbm4gbWFuIGRlbiBOUEMgdWViZXJoYXVwdCBhbmdyZWlmZW4/CisgICBTZXRQcm9wKFBfRlJJRU5ELCAwKTsgLy8gc29sbCBkZXIgTlBDIGluIFNwZWxscyBhbHMgRnJldW5kIGVyZmFzc3QKKyAgICAgICAgICAgICAgICAgICAgICAgICAvLyB3ZXJkZW4/CisgICBTZXRQcm9wKFBfUkVTSVNUQU5DRSwgRFRfRklSRSk7ICAvLyBSZXNpc3RlbnplbgorICAgU2V0UHJvcChQX1ZVTE5FUkFCSUxJVFksIERUX0hPTFkpOyAgLy8gRW1wZmluZGxpY2hrZWl0ZW4KKyAgIFNldFByb3AoUF9GT09ELCAwKTsKKyAgIFNldFByb3AoUF9NQVhfRk9PRCwgMTAwKTsKKyAgIFNldFByb3AoUF9EUklOSywgMCk7CisgICBTZXRQcm9wKFBfTUFYX0RSSU5LLCAxMDApOworICAgU2V0UHJvcChQX0FMQ09IT0wsIDApOworICAgU2V0UHJvcChQX01BWF9BTENPSE9MLCAxMDApOworICAgU2V0UHJvcChQX1hQLCBRdWVyeVByb3AoUF9NQVhfSFApKlF1ZXJ5UHJvcChQX0hBTkRTKVswXSo1KTsgLy8gRXJmYWhydW5nCisgICBTZXRQcm9wKFBfTVVSREVSX01TRywgIkljaCBrb21tZSBkb2NoIGVoIHdpZWRlciFcbiIpOyAvLyBNb2VyZGVybWVsZHVuZworICAgU2V0UHJvcChQX0tJTExfTkFNRSwgIkVpbiBmaWVzZXIgVGVzdG9yayIpOyAvLyBub2V0aWcgZmFsbHMgIT0gUF9OQU1FCisgICBTZXRQcm9wKFBfS0lMTF9NU0csICJEYXMga29tbXQgZGF2b24gd2VubiBtYW4gc2ljaCBtaXQgbWlyIGFubGVndC5cbiIpOworICAgU2V0UHJvcChQX0RJRV9NU0csICJEZXIgT3JrIHNjaHJlaXQgZWluIGxldHp0ZXMgbWFsIGxhdXQgYXVmLlxuIik7CisgICBTZXRQcm9wKFBfTk9DT1JQU0UsIDApOyAvLyBzb2xsIGRlciBOUEMgZWluZSBMZWljaGUgaGludGVybGFzc2VuPworICAgU2V0UHJvcChQX0hFQUwsIC0xMCk7IC8vIHdpZXZpZWwgTFAgYmVrb21tdCBtYW4gYmVpbSBMZWljaGVuIGVzc2VuLi4uCisKKyAgIC8vIGRlciBPcmsgaXN0IE1pdGdsaWVkIGRlciBBYmVudGV1cmVyZ2lsZGUuLi4KKyAgIFNldFByb3AoUF9HVUlMRCwgImFiZW50ZXVyZXIiKTsgLy8gaW4gZGllIEFiZW50ZXVlcmdpbGRlIG1pdCBpaG0uLi4KKyAgIFNldFByb3AoUF9HVUlMRF9MRVZFTCwgMjApOworICAgTW9kaWZ5U2tpbGwoImZldWVyYmFsbCIsKFtTSV9TS0lMTEFCSUxJVFk6MTAwMDBdKSwxLCJhYmVudGV1cmVyIik7CisKKyAgIC8vIG51biBub2NoIGVpbmUgYW5kZXJlIEFydCB6dSB6YXViZXJuLi4uCisgICBTZXRQcm9wKFBfU1BFTExSQVRFLCAxMCk7CisgICBBZGRTcGVsbCgxMDAsIDQwMCwKKyAgICAgIkRlciBPcmsgdHJpdHQgRGljaCBlaW5tYWwgZmVzdGUgendpc2NoZW4gZGllIEJlaW5lLlxuIiwKKyAgICAgIkRlciBPcmsgdHJpdHQgQFdFTiBlaW5tYWwgZmVzdGUgendpc2NoZW4gZGllIEJlaW5lLlxuIiwgRFRfQkxVREdFT04pOworCisgICAvLyB3YXMgc29sbCBkZXIgTlBDIG1pdCBpaG0gZ2VnZWJlbmVuIEdlZ2Vuc3RhZW5kZW4gbWFjaGVuLi4uCisgICBTZXRQcm9wKFBfUkVKRUNULCAoe1JFSkVDVF9EUk9QLCAiRGFtaXQga2FubiBpY2ggbmljaHRzIGFuZmFuZ2VuLlxuIn0pKTsKKworICAgLy8gdW5kIG5hdHVlcmxpY2ggYXVjaCBub2NoIGVpbmUgaWQgZnVlciBkZW4gb3JrCisgICBBZGRJZCgib3JrIik7CisKKyAgIC8vIERlciBOUEMgaGF0IGltbWVyIGVpbmlnZSBKdXdlbGVuIGJlaSBzaWNoLgorICAgQWRkSXRlbSgiL2RvYy9iZWlzcGllbGUvUHJheGlzLUt1cnMvanV3ZWxlbiIpOworfQorCisvLyBEaWVzZSBGdW5rdGlvbiB3aXJkIGF1ZmdlcnVmZW4sIHdlbm4gbWFuIGVpbmVuIEdlZ2Vuc3RhbmQgYmVrb21tdC4uLgorcHVibGljIHZvaWQgZ2l2ZV9ub3RpZnkob2JqZWN0IG9iKQoreworICAgaWYgKG9iLT5pZCgibWlsY2hmbGFzY2hlIikpIC8vIE1pbGNoIGFubmVobWVuIHVuZCBlaW5lbiBTcHJ1Y2ggYXVmc2FnZW4KKyAgICAgd3JpdGUoIkRlciBPcmsgc2FndDogT2hoLi4uLiBEYW5rZSBmdWVyIGRpZSBsZWNrZXJlIE1pbGNoLlxuIik7CisgICBlbHNlIDo6Z2l2ZV9ub3RpZnkob2IpOyAvLyBHZWdlbnN0YW5kIGZhbGxlbiBsYXNzZW4KK30KKworLy8gRGllc2UgRnVua3Rpb24gd2lyZCBhdWZnZXJ1ZmVuLCB3ZW5uIHVucyBqZW1hbmQgaW0gS2FtcGYgU2NoYWRlbiB6dWZ1ZWdlbgorLy8gbW9lY2h0ZS4uLgorcHVibGljIHZhcmFyZ3MgaW50IERlZmVuZChpbnQgZGFtLCBtaXhlZCBkYW1fdHlwZSwgbWl4ZWQgc3BlbGwsIG9iamVjdCBlbmVteSkKK3sKKyAgIGlmICghcmFuZG9tKDQpKQorICAgICB3cml0ZSgiRGVyIE9yayB3ZWljaHQgRGVpbmVtIEFuZ3JpZmYgZ2VzY2hpY2t0IGF1cy5cbiIpOworICAgZWxzZQorICAgICByZXR1cm4gOjpEZWZlbmQoZGFtLCBkYW1fdHlwZSwgc3BlbGwsIGVuZW15KTsKK30KKworcHVibGljIHZvaWQgQXR0YWNrKG9iamVjdCBlbmVteSkKK3sKKyAgLy8gZGFzIEtvbW1hbmRvICdGZXVlcmJhbGwnIGVpbmdlYmVuLiBEYSBkZXIgTlBDIE1pdGdsaWVkIGRlcgorICAvLyBBYmVudGV1cmVyZ2lsZGUgaXN0IChzLm8uKSwgc3ByaWNodCBlciBhbHNvIGRlbiBTcGVsbCwgZmFsbHMgZXIgZ2VudWcKKyAgLy8gTWFnaWVwdW5rdCBkYWZ1ZXIgaGF0LgorICBpZiAoIXJhbmRvbSgzKSkgY29tbWFuZF9tZSgiZmV1ZXJiYWxsIik7CisgIDo6QXR0YWNrKGVuZW15KTsKK30KZGlmZiAtLWdpdCBhL2RvYy9iZWlzcGllbGUvZmVybndhZmZlbi9rdXJ6Ym9nZW4uYyBiL2RvYy9iZWlzcGllbGUvZmVybndhZmZlbi9rdXJ6Ym9nZW4uYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi45MzYyM2U1Ci0tLSAvZGV2L251bGwKKysrIGIvZG9jL2JlaXNwaWVsZS9mZXJud2FmZmVuL2t1cnpib2dlbi5jCkBAIC0wLDAgKzEsMzIgQEAKK2luaGVyaXQgIi9zdGQvcmFuZ2VkX3dlYXBvbiI7CisKKyNpbmNsdWRlICIuL3BhdGguaCIKKyNpbmNsdWRlIDxwcm9wZXJ0aWVzLmg+CisKK3ZvaWQgY3JlYXRlKCkgeworICBpZiAoIWNsb25lcCh0aGlzX29iamVjdCgpKSkgcmV0dXJuOworICA6OmNyZWF0ZSgpOworCisgIFNldFByb3AoUF9TSE9SVCwgIkVpbiBLdXJ6Ym9nZW4iKTsKKyAgU2V0UHJvcChQX0lORk8sCisgICAgIkRpZSBTeW50YXggbGF1dGV0OiBzY2hpZXNzZSA8Z2VzY2hvc3M+IGF1ZiA8emllbD5cbiIpOworICBTZXRQcm9wKFBfTkFNRSwgIkt1cnpib2dlbiIpOworICBTZXRQcm9wKFBfTE9ORywgYnJlYWtfc3RyaW5nKAorICAgICJNaXQgZGllc2VtIEt1cnpib2dlbiBrYW5uIG1hbiBzaWNoZXIgbmljaHQgd2VpdCBzY2hpZXNzZW4uIikpOworICBTZXRQcm9wKFBfTUFURVJJQUwsIE1BVF9NSVNDX1dPT0QpOworCisgIEFkZElkKCJrdXJ6Ym9nZW4iKTsKKyAgU2V0UHJvcChQX0dFTkRFUiwgTUFMRSk7CisgIFNldFByb3AoUF9XRUlHSFQsIDgwMCk7CisgIFNldFByb3AoUF9WQUxVRSwgMzAwKTsKKworICBTZXRQcm9wKFBfV0MsIDEwKTsKKyAgU2V0UHJvcChQX0RBTV9UWVBFLCBEVF9CTFVER0VPTik7CisKKyAgU2V0UHJvcChQX1NIT09USU5HX1dDLCA2MCk7CisgIFNldFByb3AoUF9OUl9IQU5EUywgMik7CisgIFNldFByb3AoUF9XRUFQT05fVFlQRSwgV1RfUkFOR0VEX1dFQVBPTik7CisgIFNldFByb3AoUF9BTU1VTklUSU9OLCBNVU5fQVJST1cpOworICBTZXRQcm9wKFBfU1RSRVRDSF9USU1FLCAxKTsKKyAgU2V0UHJvcChQX1JBTkdFLCAxMCk7Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZG9jL2JlaXNwaWVsZS9mZXJud2FmZmVuL2xhbmdib2dlbi5jIGIvZG9jL2JlaXNwaWVsZS9mZXJud2FmZmVuL2xhbmdib2dlbi5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjc5NTZkZDMKLS0tIC9kZXYvbnVsbAorKysgYi9kb2MvYmVpc3BpZWxlL2Zlcm53YWZmZW4vbGFuZ2JvZ2VuLmMKQEAgLTAsMCArMSwzMiBAQAoraW5oZXJpdCAiL3N0ZC9yYW5nZWRfd2VhcG9uIjsKKworI2luY2x1ZGUgIi4vcGF0aC5oIgorI2luY2x1ZGUgPHByb3BlcnRpZXMuaD4KKwordm9pZCBjcmVhdGUoKSB7CisgIGlmICghY2xvbmVwKHRoaXNfb2JqZWN0KCkpKSByZXR1cm47CisgIDo6Y3JlYXRlKCk7CisKKyAgU2V0UHJvcChQX1NIT1JULCAiRWluIExhbmdib2dlbiIpOworICBTZXRQcm9wKFBfSU5GTywKKyAgICAiRGllIFN5bnRheCBsYXV0ZXQ6IHNjaGllc3NlIDxnZXNjaG9zcz4gYXVmIDx6aWVsPlxuIik7CisgIFNldFByb3AoUF9OQU1FLCAiTGFuZ2JvZ2VuIik7CisgIFNldFByb3AoUF9MT05HLCBicmVha19zdHJpbmcoCisgICAgIk1pdCBkaWVzZW0gTGFuZ2JvZ2VuIGthbm4gbWFuIGJlc3RpbW10IGhlcnZvcnJhZ2VuZCB3ZWl0IHNjaGllc3Nlbi4iKSk7CisgIFNldFByb3AoUF9NQVRFUklBTCwgTUFUX01JU0NfV09PRCk7CisKKyAgQWRkSWQoImxhbmdib2dlbiIpOworICBTZXRQcm9wKFBfR0VOREVSLCBNQUxFKTsKKyAgU2V0UHJvcChQX1dFSUdIVCwgODAwKTsKKyAgU2V0UHJvcChQX1ZBTFVFLCAzMDApOworCisgIFNldFByb3AoUF9XQywgMzApOworICBTZXRQcm9wKFBfREFNX1RZUEUsIERUX0JMVURHRU9OKTsKKworICBTZXRQcm9wKFBfU0hPT1RJTkdfV0MsIDEyMCk7CisgIFNldFByb3AoUF9OUl9IQU5EUywgMik7CisgIFNldFByb3AoUF9XRUFQT05fVFlQRSwgV1RfUkFOR0VEX1dFQVBPTik7CisgIFNldFByb3AoUF9BTU1VTklUSU9OLCBNVU5fQVJST1cpOworICBTZXRQcm9wKFBfU1RSRVRDSF9USU1FLCAyKTsKKyAgU2V0UHJvcChQX1JBTkdFLCAzMCk7Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZG9jL2JlaXNwaWVsZS9mZXJud2FmZmVuL25wYy5jIGIvZG9jL2JlaXNwaWVsZS9mZXJud2FmZmVuL25wYy5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjM1NDRkNDQKLS0tIC9kZXYvbnVsbAorKysgYi9kb2MvYmVpc3BpZWxlL2Zlcm53YWZmZW4vbnBjLmMKQEAgLTAsMCArMSwyOSBAQAoraW5oZXJpdCAiL3N0ZC9ucGMiOworCisjaW5jbHVkZSAiLi9wYXRoLmgiCisjaW5jbHVkZSA8cHJvcGVydGllcy5oPgorCit2b2lkIGNyZWF0ZSgpIHsKKyAgOjpjcmVhdGUoKTsKKyAgQWRkSWQoKHsibnBjIiwgImdlZ25lciIsICJ6aWVsIn0pKTsKKyAgU2V0UHJvcChQX05BTUUsICJaaWVsIik7CisgIFNldFByb3AoUF9HRU5ERVIsIE5FVVRFUik7CisgIFNldFByb3AoUF9TSE9SVCwgIkVpbiBaaWVsIik7CisKKyAgU2V0UHJvcChQX0hQLCAxMDAwKTsKKyAgU2V0UHJvcChQX0JPRFksIDEwMCk7Cit9CisKK3ZhcmFyZ3MgaW50IERlZmVuZChpbnQgZGFtLCBzdHJpbmcqIGRhbV90eXBlLCBtaXhlZCBzcGVsbCwgb2JqZWN0IGVuZW15KSB7CisgIGludCBwcmVkYW0gPSBkYW07CisgIGludCByZXN1bHQgPSA6OkRlZmVuZChkYW0sICZkYW1fdHlwZSwgJnNwZWxsLCBlbmVteSk7CisgIAorICBzdHJpbmcgc3RyID0gYnJlYWtfc3RyaW5nKHNwcmludGYoCisgICAgIkRpZSBaaWVsc2NoZWliZSBzYWd0OiAlZCBTY2hhZGVuIHJlaW4gdW5kIGZ1ZXIgJWQgZ2V0cm9mZmVuLiIsCisgICAgcHJlZGFtLCByZXN1bHQpLCA3OCk7CisKKyAgdGVsbF9yb29tKGxvYWRfb2JqZWN0KF9fUEFUSF9fKDApInppZWxyYXVtIiksIHN0cik7CisgIHRlbGxfcm9vbShsb2FkX29iamVjdChfX1BBVEhfXygwKSJzY2h1c3NyYXVtIiksIHN0cik7CisKKyAgcmV0dXJuIHJlc3VsdDsKK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9kb2MvYmVpc3BpZWxlL2Zlcm53YWZmZW4vcGF0aC5oIGIvZG9jL2JlaXNwaWVsZS9mZXJud2FmZmVuL3BhdGguaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5kMjg0MTQwCi0tLSAvZGV2L251bGwKKysrIGIvZG9jL2JlaXNwaWVsZS9mZXJud2FmZmVuL3BhdGguaApAQCAtMCwwICsxLDMgQEAKKyNwcmFnbWEgcnR0X2NoZWNrcywgc2F2ZV90eXBlcworI3ByYWdtYSBwZWRhbnRpYywgIHJhbmdlX2NoZWNrCisjcHJhZ21hIHdhcm5fZW1wdHlfY2FzdHMsIHdhcm5fbWlzc2luZ19yZXR1cm4sIHdhcm5fZnVuY3Rpb25faW5jb25zaXN0ZW50ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZG9jL2JlaXNwaWVsZS9mZXJud2FmZmVuL3BmZWlsZS5jIGIvZG9jL2JlaXNwaWVsZS9mZXJud2FmZmVuL3BmZWlsZS5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmY0YjExYTMKLS0tIC9kZXYvbnVsbAorKysgYi9kb2MvYmVpc3BpZWxlL2Zlcm53YWZmZW4vcGZlaWxlLmMKQEAgLTAsMCArMSw0MSBAQAoraW5oZXJpdCAiL3N0ZC91bml0IjsKKworI2luY2x1ZGUgIi4vcGF0aC5oIgorI2luY2x1ZGUgPHByb3BlcnRpZXMuaD4KKyNpbmNsdWRlIDxjbGFzcy5oPgorCit2b2lkIGNyZWF0ZSgpIHsKKyAgaWYgKCFjbG9uZXAodGhpc19vYmplY3QoKSkpIHJldHVybjsKKyAgOjpjcmVhdGUoKTsKKworICBTZXRQcm9wKFBfTkFNRSwgKHsiUGZlaWwiLCAiUGZlaWxlIn0pICk7CisgIFNldFByb3AoUF9MT05HLCBicmVha19zdHJpbmcoCisgICAgIkVpbiBwYWFyIGVpbmZhY2hlIEhvbHpwZmVpbGUuIiwgNzgpKTsKKyAgU2V0UHJvcChQX0dFTkRFUiwgTUFMRSk7CisgIFNldFByb3AoUF9BTU9VTlQsIDEpOworICBTZXRQcm9wKFBfU0hPT1RJTkdfV0MsIDQwKTsKKyAgU2V0UHJvcChQX0RBTV9UWVBFLCAoe0RUX1BJRVJDRX0pKTsKKyAgU2V0UHJvcChQX1dFQVBPTl9UWVBFLCBXVF9BTU1VKTsKKyAgU2V0UHJvcChQX01BVEVSSUFMLCBNQVRfTUlTQ19XT09EKTsKKworICBTZXRHcmFtc1BlclVuaXRzKDEyMCwxKTsKKyAgU2V0Q29pbnNQZXJVbml0cygyNSwxKTsKKworICBBZGRJZChNVU5fQVJST1cpOworICBBZGRTaW5ndWxhcklkKCJwZmVpbCIpOworICBBZGRQbHVyYWxJZCgicGZlaWxlIik7CisgIEFkZENsYXNzKENMX0FNTVVOSVRJT04pOworCisgIFNldFByb3AoUF9ISVRfRlVOQywgdGhpc19vYmplY3QoKSk7Cit9CisKK2ludCBIaXRGdW5jKG9iamVjdCBlbmVteSkgeworICBpZighcmFuZG9tKDUpKSB7CisgICAgdGVsbF9vYmplY3QoZW52aXJvbm1lbnQoKSwgYnJlYWtfc3RyaW5nKAorICAgICAgIkRlciBQZmVpbCBzY2hudXJydCB2b20gQm9nZW4gdW5kIGRhYmVpIHNwbGl0dGVydCBkYXMgSG9seiAiCisgICAgICAiZXR3YXMuIEdyYXRpc3dpZGVyaGFrZW4sIGRhcyBpc3QgamEgdG9sbCEiLCA3OCkpOworICAgIHJldHVybiAyMDsKKyAgfQorCisgIHJldHVybiAwOworfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2RvYy9iZWlzcGllbGUvZmVybndhZmZlbi9zY2h1c3NyYXVtLmMgYi9kb2MvYmVpc3BpZWxlL2Zlcm53YWZmZW4vc2NodXNzcmF1bS5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjc5MTc5YzkKLS0tIC9kZXYvbnVsbAorKysgYi9kb2MvYmVpc3BpZWxlL2Zlcm53YWZmZW4vc2NodXNzcmF1bS5jCkBAIC0wLDAgKzEsMzQgQEAKK2luaGVyaXQgIi9zdGQvcm9vbSI7CisKKyNpbmNsdWRlICIuL3BhdGguaCIKKyNpbmNsdWRlIDxwcm9wZXJ0aWVzLmg+CisKK3ZvaWQgY3JlYXRlKCkgeworICA6OmNyZWF0ZSgpOworCisgIFNldFByb3AoUF9MSUdIVCwgMSk7CisgIFNldFByb3AoUF9JTlRfU0hPUlQsICJBdWYgZWluZW0gQmF1bSIpOworICBTZXRQcm9wKFBfSU5UX0xPTkcsIGJyZWFrX3N0cmluZygKKyAgICAiRHUgaG9ja3N0IGF1ZiBlaW5lbSBCYXVtIHVuZCBrYW5uc3QgYXVmIGRpZSBMaWNodHVuZyB1bnRlciBEaXIgc2VoZW4uICIKKyAgICAiJ3NjaGF1IHJ1bnRlcicgaGlsZnQgc2ljaGVybGljaCwgWmllbGUgYXVzenVtYWNoZW4uIikpOworCisgIEFkZERldGFpbCgicnVudGVyIiwgZnVuY3Rpb24gc3RyaW5nIHsgCisgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gX19QQVRIX18oMCkiemllbHJhdW0iLT5pbnRfbG9uZyh0aGlzX3BsYXllcigpKTsKKyAgICAgICAgICAgICAgICAgICAgICB9KTsKKworICBBZGRJdGVtKF9fUEFUSF9fKDApImxhbmdib2dlbiIsIFJFRlJFU0hfUkVNT1ZFKTsKKyAgQWRkSXRlbShfX1BBVEhfXygwKSJrdXJ6Ym9nZW4iLCBSRUZSRVNIX1JFTU9WRSk7CisgIEFkZEl0ZW0oX19QQVRIX18oMCkicGZlaWxlIiwgUkVGUkVTSF9SRU1PVkUsIChbUF9BTU9VTlQ6IDIwXSkpOworCisgIEFkZEV4aXQoInppZWxyYXVtIiwgX19QQVRIX18oMCkiemllbHJhdW0iKTsKKyAgbG9hZF9vYmplY3QoX19QQVRIX18oMCkiemllbHJhdW0iKTsKKworICBTZXRQcm9wKFBfVEFSR0VUX0FSRUEsIF9fUEFUSF9fKDApInppZWxyYXVtIik7IC8vIGFuZGVyZXIgUmF1bSBiZXNjaGllc3NiYXIKKyAgU2V0UHJvcChQX1NIT09USU5HX0FSRUEsIDE1KTsgICAgICAgICAgICAgICAgICAvLyAxNSBFbnRmZXJudW5nCit9CisKKy8vIG51ciB3ZWdlbiBkZXMgUF9ORVZFUl9DTEVBTiBpbSBaaWVscmF1bSB1bmQgbnVyIGhpZXIgaW4gZG9jIHJlbGV2YW50CitwdWJsaWMgdmFyYXJncyBpbnQgcmVtb3ZlKGludCBzaWxlbnQpIHsKKyAgX19QQVRIX18oMCkiemllbHJhdW0iLT5yZW1vdmUoKTsKKyAgcmV0dXJuIDo6cmVtb3ZlKCk7Cit9CmRpZmYgLS1naXQgYS9kb2MvYmVpc3BpZWxlL2Zlcm53YWZmZW4vemllbHJhdW0uYyBiL2RvYy9iZWlzcGllbGUvZmVybndhZmZlbi96aWVscmF1bS5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjYxNzcwMzIKLS0tIC9kZXYvbnVsbAorKysgYi9kb2MvYmVpc3BpZWxlL2Zlcm53YWZmZW4vemllbHJhdW0uYwpAQCAtMCwwICsxLDE5IEBACitpbmhlcml0ICIvc3RkL3Jvb20iOworCisjaW5jbHVkZSAiLi9wYXRoLmgiCisjaW5jbHVkZSA8cHJvcGVydGllcy5oPgorCit2b2lkIGNyZWF0ZSgpIHsKKyAgOjpjcmVhdGUoKTsKKworICBTZXRQcm9wKFBfTElHSFQsIDEpOworICBTZXRQcm9wKFBfSU5UX1NIT1JULCAiQXVmIGVpbmVyIExpY2h0dW5nIik7CisgIFNldFByb3AoUF9JTlRfTE9ORywgYnJlYWtfc3RyaW5nKAorICAgICJBdWYgZGllc2VyIExpY2h0dW5nIHN0ZWh0IGVpbiBCYXVtLCBkZXIgdmVyZGFlY2h0aWcgdmllbGUgQWVzdGUgaGF0LCAiCisgICAgInZvbiBkZW5lbiBtYW4gYXVmIGRpZSBMaWNodHVuZyBndXQgc2VoZW4ga2Fubi4iKSk7CisgIFNldFByb3AoUF9ORVZFUl9DTEVBTiwgMSk7IC8vIGRhbWl0IGRlciBSYXVtIGF1Y2ggZGEgYmxlaWJ0CisKKyAgQWRkSXRlbShfX1BBVEhfXygwKSJucGMiLCBSRUZSRVNIX1JFTU9WRSk7CisKKyAgQWRkRXhpdCgic2NodXNzcmF1bSIsIF9fUEFUSF9fKDApInNjaHVzc3JhdW0iKTsKK30KZGlmZiAtLWdpdCBhL2RvYy9iZWlzcGllbGUvZm9vZC9iYW5hbmUuYyBiL2RvYy9iZWlzcGllbGUvZm9vZC9iYW5hbmUuYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44ODgyZjRmCi0tLSAvZGV2L251bGwKKysrIGIvZG9jL2JlaXNwaWVsZS9mb29kL2JhbmFuZS5jCkBAIC0wLDAgKzEsMTE0IEBACisvKgorQmVpc3BpZWwgZnVlciBlaW5lIEJhbmFuZSwgZGllIGluIGVpbmVtIEhhcHMgd2VnIGlzdCwKK2FiZXIgZWluZSBTY2hhbGUgaGF0LCBkaWUgdWVicmlnIGJsZWlidCB1bmQgZ2VuYXUgd2llIGRpZQora29tcGxldHRlIEJhbmFuZSB2ZXJnYW1tZWx0IHVuZCB2ZXJnZWh0LgorKi8KKworI2luY2x1ZGUgPGZvb2QuaD4KKworaW5oZXJpdCAiL3N0ZC9mb29kIjsKKworc3RyaW5nIF9xdWVyeV9sb25nKCkgeworICBzdHJpbmcgbSA9ICJEdSBoYWVsdHN0ICI7CisgIGlmIChpc19ub3RfZW1wdHkoKSkgeworICAgIG0gKz0gImVpbmUgQmFuYW5lIGluIGRlciBIYW5kLiI7CisgICAgaWYgKCFpc19iYWQoKSkKKyAgICAgIG0gKz0gIiBTaWUgaXN0IHNjaG9lbiBnZWxiIHVuZCBvaG5lIGJyYXVuZSBGbGVja2VuLiI7CisgICAgZWxzZQorICAgICAgbSArPSAiIFNpZSBpc3QgdG90YWwgYnJhdW4gdW5kIHNjaG9uIGdhbnogbWF0c2NoaWcuIjsKKworICB9IGVsc2UgeworICAgIG0gKz0gImVpbmUgQmFuYW5lbnNjaGFsZSBpbiBkZXIgSGFuZC4iOworICAgIGlmIChpc19iYWQoKSkKKyAgICAgIG0gKz0gIiBTaWUgaXN0IGdhbnogdmVyc2NoaW1tZWx0LiI7CisgIH0KKyAgcmV0dXJuIGJyZWFrX3N0cmluZyhtKTsKK30KKwordm9pZCBjcmVhdGUoKSB7CisgIGlmICghY2xvbmVwKHRoaXNfb2JqZWN0KCkpKSB7CisgICAgc2V0X25leHRfcmVzZXQoLTEpOworICAgIHJldHVybjsKKyAgfQorICA6OmNyZWF0ZSgpOworCisgIFNldFByb3AoUF9TSE9SVCwiRWluZSBzY2hvZW5lIHJlaWZlIEJhbmFuZSIpOworICBTZXRQcm9wKFBfTkFNRSwgIkJhbmFuZSIpOworICBTZXRQcm9wKFBfR0VOREVSLEZFTUFMRSk7CisgIFNldFByb3AoUF9WQUxVRSwyMCk7IC8vIG9obmUgU2NoYWxlCisgIFNldFByb3AoUF9XRUlHSFQsNTApOyAvLyBvaG5lIFNjaGFsZQorICAvLyBTZXRQcm9wKFBfUE9USU9OLDEpOyAvLyBpc3QgZWggU3RhbmRhcmQKKyAgU2V0UHJvcChQX0NPTlNVTUVfTVNHLAorICAgICJAV0VSMiBzY2hhZWx0IGVpbmUgQmFuYW5lIHVuZCBpc3N0IHNpZSBnZW51ZXNzbGljaC4iKTsKKyAgU2V0UHJvcChQX0VBVEVSX01TRywKKyAgICAiRHUgc2NoYWVsc3QgZWluZSBCYW5hbmUgdW5kIGlzc3Qgc2llIGdlbnVlc3NsaWNoLiIpOworICBTZXRQcm9wKFBfQkFEX01TRywKKyAgICAiRGllIEJhbmFuZSB3aXJkIGdhbnogbWF0c2NoaWcgdW5kIHNjaGxlY2h0LiIpOworICBTZXRQcm9wKFBfUkVNT1ZFX01TRywKKyAgICAiRGllIEJhbmFuZSBpc3Qgc28gdmVyc2NoaW1tZWx0LCBkYXNzIER1IHNpZSBlbnRzb3Jnc3QuIik7CisgIFNldFByb3AoUF9FTVBUWV9NU0csCisgICAgIkFiZXIgZGFzIGlzdCBkb2NoIG51ciBlaW5lIEJhbmFuZW5TQ0hBTEUsIGRpZSB3aWxsc3QgRHUgbmljaHQgZXNzZW4hIik7CisKKyAgU2V0UHJvcChQX01BVEVSSUFMLChbTUFUX01JU0NfUExBTlQ6MTAwXSkpOworCisgIFNldFByb3AoUF9FTVBUWV9QUk9QUywgKFsKKyAgICBQX1NIT1JUOiJFaW5lIEJhbmFuZW5zY2hhbGUiLAorICAgIFBfTkFNRToiQmFuYW5lbnNjaGFsZSIsCisgICAgUF9FTVBUWV9JRFM6KHsic2NoYWxlIiwiYmFuYW5lbnNjaGFsZSIsImJhbmFuZSJ9KSwKKyAgICBQX1ZBTFVFOjUsIC8vIFdlcnQgZGVyIEJhbmFuZW5zY2hhbGUKKyAgICBQX1dFSUdIVDo1ICAvLyBHZXdpY2h0IGRlciBCYW5hbmVuc2NoYWxlCisgIF0pKTsKKworICAvL1NldFByb3AoUF9SRVNFVF9MSUZFVElNRSwxKTsgLy8gaXN0IGVoIFN0YW5kYXJkCisgIFNldFByb3AoUF9ERVNUUk9ZX0JBRCwzMDApOyAvLyB2ZXJkb3JiZW5lIEJhbmFuZW4gdmVyc2Nod2luZGVuIG5hY2ggNSBNaW4KKworICBTZXRQcm9wKFBfRk9PRCw1MCk7IC8vIEZ1ZWxsZ3JhZCBkZXIgQmFuYW5lCisgIFNldFByb3AoUF9IUCw1KTsKKyAgU2V0UHJvcChQX1NQLDUpOworCisgIEFkZElkKCh7ImJhbmFuZSJ9KSk7CisKK30KKworLy8gRGVyIEJlaGFlbHRlciB2ZXJnYW1tZWx0IGF1Y2gKK3B1YmxpYyBpbnQgbWFrZV9kZXN0cm95KCkgeworICBpZiAoITo6bWFrZV9kZXN0cm95KCkpIHsKKyAgICByZXR1cm4gcmVtb3ZlKDEpOworICB9CisgIHJldHVybiAxOworfQorCitwdWJsaWMgaW50IG1ha2VfZW1wdHkoKSB7CisgIFNldFByb3AoUF9CQURfTVNHLAorICAgICJEaWUgQmFuYW5lbnNjaGFsZSB3aXJkIGdhbnogc2NoaW1tbGlnLiIpOworICBTZXRQcm9wKFBfUkVNT1ZFX01TRywKKyAgICAiRGllIEJhbmFuZW5zY2hhbGUgemVyc2V0enQgc2ljaCB2b2xsc3RhZW5kaWcuIik7CisgIHJldHVybiA6Om1ha2VfZW1wdHkoKTsKK30KKworLy8gcGFyZW50IG1ldGhvZGUgaW1tZXIgYXVmcnVmZW4gdW5kIHBydWVmZW4hIQordm9pZCBtYWtlX2JhZCgpIHsKKyAgaWYgKCE6Om1ha2VfYmFkKCkpIHsKKyAgICBpZiAoaXNfbm90X2VtcHR5KCkpIHsKKyAgICAgIFNldFByb3AoUF9TSE9SVCwiRWluZSBtYXRzY2hpZ2UgQmFuYW5lIik7CisgICAgICBBZGRBZGplY3RpdmUoKHsibWF0c2NoaWdlIiwibWF0c2NoaWdlbiJ9KSk7CisgICAgICBTZXRQcm9wKFBfRUFURVJfTVNHLCJEdSBsdXRzY2hzdCBkaWUgbWF0c2NoaWdlIEJhbmFuZSBhdXMgaWhyZXIiCisgICAgICAgICJTY2hhbGUuIEJhZWgsIGRpZSBzY2htZWNrdCB1ZWJlcmhhdXB0IG5pY2h0IG1laHIuIik7CisgICAgICBTZXRQcm9wKFBfQ09OU1VNRV9NU0csCisgICAgICAgICJAV0VSMiBsdXRzY2h0IGVpbmUgbWF0c2NoaWdlIEJhbmFuZSBhdXMgaWhyZXIgU2NoYWxlLiIpOworICAgICAgLy8gRGllIFNjaGFsZSBpc3QgZGFubiBuYXR1ZXJsaWNoIGF1Y2ggdmVyZ2FtbWVsdAorICAgICAgU2V0UHJvcChQX0VNUFRZX1BST1BTLCAoWworICAgICAgICBQX1NIT1JUOiJFaW5lIHZlcnNjaGltbWVsdGUgQmFuYW5lbnNjaGFsZSIsCisgICAgICAgIFBfTkFNRToiQmFuYW5lbnNjaGFsZSIsCisgICAgICAgIFBfRU1QVFlfSURTOih7InNjaGFsZSIsImJhbmFuZW5zY2hhbGUiLCJiYW5hbmUifSksCisgICAgICAgIFBfRU1QVFlfQURKOih7InZlcnNjaGltbWVsdGUiLCJ2ZXJzY2hpbW1lbHRlbiJ9KSwKKyAgICAgICAgUF9WQUxVRTo1LCAvLyBXZXJ0IGRlciBCYW5hbmVuc2NoYWxlCisgICAgICAgIFBfV0VJR0hUOjUgIC8vIEdld2ljaHQgZGVyIEJhbmFuZW5zY2hhbGUKKyAgICAgIF0pKTsKKyAgICB9IGVsc2UgeworICAgICAgbWVzc2FnZShQX0JBRF9NU0cpOworICAgICAgU2V0UHJvcChQX1NIT1JULCJFaW5lIHZlcnNjaGltbWVsdGUgQmFuYW5lbnNjaGFsZSIpOworICAgICAgQWRkQWRqZWN0aXZlKCh7InZlcnNjaGltbWVsdGUiLCJ2ZXJzY2hpbW1lbHRlbiJ9KSk7CisgICAgfQorICB9Cit9CmRpZmYgLS1naXQgYS9kb2MvYmVpc3BpZWxlL2Zvb2Qvd2Fzc2VyZmxhc2NoZS5jIGIvZG9jL2JlaXNwaWVsZS9mb29kL3dhc3NlcmZsYXNjaGUuYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4zYzYyYzEzCi0tLSAvZGV2L251bGwKKysrIGIvZG9jL2JlaXNwaWVsZS9mb29kL3dhc3NlcmZsYXNjaGUuYwpAQCAtMCwwICsxLDkyIEBACisvKgorQmVpc3BpZWwgZnVlciBlaW4gdHJhZ2JhcmVzIEdldHJhZW5rIGluIGVpbmVyIEZsYXNjaGUuCisqLworCisjaW5jbHVkZSA8Zm9vZC5oPgorCitpbmhlcml0ICIvc3RkL2Zvb2QiOworCitzdHJpbmcgX3F1ZXJ5X2xvbmcoKSB7CisgIHN0cmluZyBtID0gIkR1IHNpZWhzdCBlaW5lIEdsYXNmbGFzY2hlLCI7CisgIGlmIChpc19ub3RfZW1wdHkoKSkgeworICAgIG0gKz0gIiBpbiBkZXIgc2ljaCBXYXNzZXIgYmVmaW5kZXQuIjsKKyAgICBpZiAoIWlzX2JhZCgpKQorICAgICAgbSArPSAiIEVzIGlzdCBnbGFza2xhciB1bmQgc2llaHQgaXJnZW5kd2llIHZlcmxvY2tlbmQgYXVzLiI7CisgICAgZWxzZQorICAgICAgbSArPSAiIEVzIGlzdCB0cnVlYmUgdW5kIHNpZWh0IG5pY2h0IGdlcmFkZSB2ZXJsb2NrZW5kIGF1cy4iOworCisgICAgbSArPSAiIERpZSBGbGFzY2hlIGlzdCAiOworICAgIHN3aXRjaCAodG9faW50KChRdWVyeVByb3AoUF9QT1JUSU9OUyktMSkvMi41KSkgeworICAgICAgY2FzZSAwOgorICAgICAgICBtICs9ICJmYXN0IGxlZXIuIjsKKyAgICAgICAgYnJlYWs7CisgICAgICBjYXNlIDE6CisgICAgICAgIG0gKz0gImhhbGIgdm9sbC4iOworICAgICAgICBicmVhazsKKyAgICAgIGNhc2UgMjoKKyAgICAgICAgbSArPSAiZmFzdCB2b2xsLiI7CisgICAgICAgIGJyZWFrOworICAgICAgY2FzZSAzOgorICAgICAgICBtICs9ICJ2b2xsLiI7CisgICAgICAgIGJyZWFrOworICAgICAgZGVmYXVsdDoKKyAgICAgICAgbSArPSAibmljaHQgbGVlci4iOworICAgIH0KKyAgfSBlbHNlIHsKKyAgICBtICs9ICIgaW4gZGVyIGZydWVoZXIgbWFsIFdhc3NlciB3YXIuIjsKKyAgfQorICByZXR1cm4gYnJlYWtfc3RyaW5nKG0pOworfQorCit2b2lkIGNyZWF0ZSgpIHsKKyAgaWYgKCFjbG9uZXAodGhpc19vYmplY3QoKSkpIHsKKyAgICBzZXRfbmV4dF9yZXNldCgtMSk7CisgICAgcmV0dXJuOworICB9CisgIDo6Y3JlYXRlKCk7CisKKyAgU2V0UHJvcChQX1NIT1JULCJFaW5lIEZsYXNjaGUgbWl0IFdhc3NlciIpOworICBTZXRQcm9wKFBfTkFNRSwgIldhc3NlcmZsYXNjaGUiKTsKKyAgU2V0UHJvcChQX0dFTkRFUixGRU1BTEUpOworICBTZXRQcm9wKFBfVkFMVUUsNSk7IC8vIHBybyBQb3J0aW9uIChvaG5lIEZsYXNjaGUpCisgIFNldFByb3AoUF9XRUlHSFQsNTApOyAvLyBwcm8gUG9ydGlvbiAob2huZSBGbGFzY2hlKQorICBTZXRQcm9wKFBfUE9SVElPTlMsMTApOworICBTZXRQcm9wKFBfREVTVFJPWV9CQUQsMCk7IC8vIHZlcmRvcmJlbmVzIFdhc3NlciB3aXJkIG5pY2h0IHplcnN0b2VydAorICBTZXRQcm9wKFBfQ09OU1VNRV9NU0csCisgICAgIkBXRVIyIHRyaW5rdCBhdXMgZWluZXIgRmxhc2NoZS4gV2Fzc2VyIGxhZXVmdCB1ZWJlciBAV0VOUVBQTlMyIEtpbm4uIik7CisgIFNldFByb3AoUF9FQVRFUl9NU0csCisgICAgIkR1IHRyaW5rc3QgV2Fzc2VyIGF1cyBkZXIgRmxhc2NoZS4gRXR3YXMgbGFldWZ0IERpciB1ZWJlciBkYXMgS2lubi4iKTsKKyAgU2V0UHJvcChQX0JBRF9NU0csCisgICAgIkRhcyBXYXNzZXIgaW4gZGVyIEZsYXNjaGUgd2lyZCB0cnVlYmUuIik7CisKKyAgU2V0UHJvcChQX01BVEVSSUFMLChbTUFUX0dMQVNTOjE1LCBNQVRfV0FURVI6ODVdKSk7CisKKyAgU2V0UHJvcChQX0VNUFRZX1BST1BTLCAoWworICAgIFBfU0hPUlQ6IkVpbmUgbGVlcmUgRmxhc2NoZSIsCisgICAgUF9OQU1FOiJGbGFzY2hlIiwKKyAgICBQX0VNUFRZX0lEUzooeyJmbGFzY2hlIn0pLAorICAgIFBfRU1QVFlfQURKOih7ImxlZXJlIiwibGVlcmVuIn0pLAorICAgIFBfTUFURVJJQUw6KFtNQVRfR0xBU1M6MTAwXSksCisgICAgUF9WQUxVRTo1LCAvLyBXZXJ0IGRlciBGbGFzY2hlIG9obmUgV2Fzc2VyCisgICAgUF9XRUlHSFQ6MjAgIC8vIEdld2ljaHQgZGVyIEZsYXNjaGUgb2huZSBXYXNzZXIKKyAgXSkpOworCisgIFNldFByb3AoUF9SRVNFVF9MSUZFVElNRSwzKTsgLy8gMyBSZXNldHMsIGVoZSBkYXMgV2Fzc2VyIHRydWViZSB3aXJkCisgIFNldFByb3AoUF9EUklOSyw1MCk7IC8vIEZ1ZWxsZ3JhZCBwcm8gU2NobHVjaworICBTZXRQcm9wKFBfRElTVFJJQlVUSU9OLDEwKTsgLy8gUHVua3RlIEhlaWx1bmcgcHJvIEhlYXJ0YmVhdAorICBTZXRQcm9wKFBfSFAsMzApOyAvLyBwcm8gU2NobHVjaworICBTZXRQcm9wKFBfU1AsMzApOyAvLyBwcm8gU2NobHVjaworCisgIEFkZElkKCh7ImZsYXNjaGUiLCJ3YXNzZXJmbGFzY2hlIiwid2Fzc2VyIn0pKTsKKyAgQWRkQWRqZWN0aXZlKCh7InZvbGxlIiwidm9sbGVuIn0pKTsKKworfQorCisvLyBwYXJlbnQgbWV0aG9kZSBpbW1lciBhdWZydWZlbiB1bmQgcHJ1ZWZlbiEhCit2b2lkIG1ha2VfYmFkKCkgeworICBpZiAoITo6bWFrZV9iYWQoKSAmJiBpc19ub3RfZW1wdHkoKSkgeworICAgIC8vIGRpZSBUcmlua21lbGR1bmcgYWVuZGVybiB3aXIgbWFsCisgICAgU2V0UHJvcChQX0VBVEVSX01TRywiRHUgdHJpbmtzdCB0cnVlYmVzIFdhc3NlciBhdXMgZGVyIEZsYXNjaGUuICIKKyAgICAgICJEYXMgd2FyIHdvaGwgbmljaHQgc28gZ3V0LiBEaXIgd2lyZCBnYW56IHVlYmVsISIpOworICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZG9jL2JlaXNwaWVsZS9rZWtzZS9rZWtzLmMgYi9kb2MvYmVpc3BpZWxlL2tla3NlL2tla3MuYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5mNGEyYWI1Ci0tLSAvZGV2L251bGwKKysrIGIvZG9jL2JlaXNwaWVsZS9rZWtzZS9rZWtzLmMKQEAgLTAsMCArMSwyOCBAQAorLyogRWluZmFjaGVzIEJlaXNwaWVsIHp1ciBEZW1vbnN0cmF0aW9uIHZvbiBWZXJlcmJ1bmcuCisgICBBQ0hUVU5HOiBEaWVzZXMgQmVpc3BpZWwgc3RlbGx0IF9rZWluXyBzaW5udm9sbGVzIExlYmVuc21pdHRlbG9iamVrdCBkYXIuCisgICAgICAgICAgICBIaWVyZnVlciBzb2xsdGUgL3N0ZC9mb29kIHZlcndlbmRldCB3ZXJkZW4sIHNpZWhlIGF1Y2gKKyAgICAgICAgICAgIC9kb2MvYmVpc3BpZWxlL2Zvb2QvCisqLworCisjaW5jbHVkZSA8cHJvcGVydGllcy5oPgorI2luY2x1ZGUgPG1vdmluZy5oPgoraW5oZXJpdCAiL3N0ZC90aGluZyI7CisKK3Byb3RlY3RlZCB2b2lkIGNyZWF0ZSgpIHsKKyAgOjpjcmVhdGUoKTsKKyAgU2V0UHJvcChQX05BTUUsICJLZWtzIik7CisgIFNldFByb3AoUF9HRU5ERVIsIE1BTEUpOworICBBZGRJZCgoeyJrZWtzIn0pKTsKKyAgQWRkQ21kKCJpc3MmQElEIiwgImFjdGlvbl9lc3NlbiIsICJXYXMgd2lsbHN0IGR1IGVzc2VuPyIpOworfQorCitwdWJsaWMgaW50IGFjdGlvbl9lc3NlbihzdHJpbmcgY21kKSB7CisgIGlmKHRoaXNfcGxheWVyKCktPmVhdF9mb29kKDEsIDAsIAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICJEdSBiZWtvbW1zdCAiK1F1ZXJ5UHJvbm91bihXRU4pKworICAgICAgICAgICAgICAgICAgICAgICAgICAgICIgbmljaHQgbWVociBoaW5laW5nZXN0b3BmdC5cbiIpPjApIHsKKyAgICB3cml0ZSgiRHUgaXNzdCAiK25hbWUoV0VOLDEpKyIuXG4iKTsKKyAgICBzYXkodGhpc19wbGF5ZXIoKS0+TmFtZShXRVIpKyIgaXNzdCAiK25hbWUoV0VOKSsiLlxuIik7CisgICAgcmVtb3ZlKDEpOworICB9CisgIHJldHVybiAxOworfQpkaWZmIC0tZ2l0IGEvZG9jL2JlaXNwaWVsZS9rZWtzZS9rcnVlbWVsa2Vrcy5jIGIvZG9jL2JlaXNwaWVsZS9rZWtzZS9rcnVlbWVsa2Vrcy5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjJmZWU4NWEKLS0tIC9kZXYvbnVsbAorKysgYi9kb2MvYmVpc3BpZWxlL2tla3NlL2tydWVtZWxrZWtzLmMKQEAgLTAsMCArMSwxNSBAQAorLyogRWluZmFjaGVzIEJlaXNwaWVsIHp1ciBEZW1vbnN0cmF0aW9uIHZvbiBWZXJlcmJ1bmcuCisgICBBQ0hUVU5HOiBEaWVzZXMgQmVpc3BpZWwgc3RlbGx0IF9rZWluXyBzaW5udm9sbGVzIExlYmVuc21pdHRlbG9iamVrdCBkYXIuCisgICAgICAgICAgICBIaWVyZnVlciBzb2xsdGUgL3N0ZC9mb29kIHZlcndlbmRldCB3ZXJkZW4sIHNpZWhlIGF1Y2gKKyAgICAgICAgICAgIC9kb2MvYmVpc3BpZWxlL2Zvb2QvCisqLworCisjaW5jbHVkZSA8cHJvcGVydGllcy5oPgoraW5oZXJpdCBfX0RJUl9fImtla3MiOworCit2YXJhcmdzIGludCByZW1vdmUoaW50IHNpbGVudCkgeworICBpZighc2lsZW50ICYmIGxpdmluZyhlbnZpcm9ubWVudCgpKSkKKyAgICB0ZWxsX29iamVjdChlbnZpcm9ubWVudCgpLCBOYW1lKFdFUiwxKSsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiIGtydWVtZWx0IGVpbiBsZXR6dGVzIE1hbC5cbiIpOworICByZXR1cm4gOjpyZW1vdmUoc2lsZW50KTsKK30KZGlmZiAtLWdpdCBhL2RvYy9iZWlzcGllbGUvbWFzdGVyL2FjY2Vzc19yaWdodHMuYyBiL2RvYy9iZWlzcGllbGUvbWFzdGVyL2FjY2Vzc19yaWdodHMuYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4zNjdlOTA5Ci0tLSAvZGV2L251bGwKKysrIGIvZG9jL2JlaXNwaWVsZS9tYXN0ZXIvYWNjZXNzX3JpZ2h0cy5jCkBAIC0wLDAgKzEsMTMgQEAKKy8vIFdlbm4gZWluIFZlcnplaWNobmlzIGZ1ZXIgZWluIE9iamVrdCBuaWNodCBzY2hyZWliYmFyIGlzdCwga2FubiBkZXIKKy8vIEJlc2l0emVyIGRlcyBWZXJ6ZWljaG5pc3NlcyBlaW5lIERhdGVpIGFjY2Vzc19yaWdodHMgYW5sZWdlbiwgZGllCisvLyBkaWVzZXMgUmVjaHQgdmVyZ2lidC4KKy8vIERhIERPQyBoaWVyIGVpZ2VudGxpY2ggbmljaHQgc2NocmVpYmVuIGRhcmYsIHdhciBkYXMgaGllciBub2V0aWcuCisvLyBFaW4gTWFnaWVyIHdpcmQgZGFzIGZ1ZXIgZGllIGVpZ2VuZW4gVmVyei4gaWRSIG5pY2h0IGJyYXVjaGVuLgorCitpbnQgYWNjZXNzX3JpZ2h0cyggc3RyaW5nIHVzZXIsIHN0cmluZyBwZmFkICkgeworICBpZiggdXNlcj09IkRPQyIgJiYgcGZhZD09Im9wZmVyc3RvY2tsb2ciICkgeworICAJLy8gRE9DIGRhcmYgb3BmZXJzdG9ja2xvZyBzY2hyZWliZW4KKwlyZXR1cm4gMTsKKyAgfQorICByZXR1cm4gMDsKK30KZGlmZiAtLWdpdCBhL2RvYy9iZWlzcGllbGUvbWFzdGVyL29wZmVyc3RvY2suYyBiL2RvYy9iZWlzcGllbGUvbWFzdGVyL29wZmVyc3RvY2suYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4wNDhhNDYxCi0tLSAvZGV2L251bGwKKysrIGIvZG9jL2JlaXNwaWVsZS9tYXN0ZXIvb3BmZXJzdG9jay5jCkBAIC0wLDAgKzEsMTQyIEBACisjaW5jbHVkZSA8ZGVmaW5lcy5oPgorI2luY2x1ZGUgPHByb3BlcnRpZXMuaD4KKyNpbmNsdWRlIDxtb3ZpbmcuaD4KKy8vCisvLyBCeSBSdW1hdGFATW9yZ2VuR3JhdWVuIDMvOTkKKy8vCisvLyBCZWlzcGllbGRhdGVpIGZ1ZXIgZGllIEJlbnV0enVuZyB2b24gTWFzdGVybiB1bmQgS2xpZW50ZW4uCisvLworLy8gSWNoIGdlaGUgaGllciBuaWNodCBhdWYgZGllICJub3JtYWxlbiIgRnVua3Rpb25lbiBlaW4uCisKK2luaGVyaXQgIi9zdGQvdGhpbmciOworCisjZGVmaW5lIE9TX01BU1RFUiAiL2RvYy9iZWlzcGllbGUvbWFzdGVyL29wZmVyc3RvY2ttYXN0ZXIiCisKK3ZvaWQgY3JlYXRlKCkKK3sKKwlpZihJU19CTFVFKE1FKSkgcmV0dXJuOworCTo6Y3JlYXRlKCk7CisJU2V0UHJvcCggUF9OQU1FLCAiT3BmZXJzdG9jayIgKTsKKwlTZXRQcm9wKCBQX0dFTkRFUiwgTUFMRSApOworCVNldFByb3AoIFBfVkFMVUUsIDEwMDAgKyByYW5kb20oMjAwMCkgKTsKKwlBZGRJZCggKHsic3RvY2siLCJpbnNjaHJpZnQiLCJvcGZlcnN0b2NrIn0pICk7CisJU2V0UHJvcCggUF9TSE9SVCwgIkluIGVpbmVyIEVja2Ugc3RlaHQgZWluIE9wZmVyc3RvY2siICk7CisJU2V0UHJvcCggUF9MT05HLAorCQkiRGVyIE9wZmVyc3RvY2sgYmVzdGVodCBhdXMgc29saWRlbSBIb2x6LiBWb3JuZSBhdWYgZGVtIEthc3RlbiBpc3QgZWluZVxuIgorCSsJIkluc2NocmlmdCB6dSBzZWhlbiwgZGllIER1IGxlc2VuIGthbm5zdC5cbiIKKwkrCSJAQGNvbnRlbnRzQEAiCisJKTsKKwlTZXRQcm9wKCBQX1JFQURfTVNHLAorCQkiPj4+Pj4+Pj4+Pj4+IEZ1ZXIgZGVuIEF1ZmJhdSBlaW5lcyBPcmt3YWlzZW5oYXVzZXMgPDw8PDw8PDw8PDw8XG4iCisJKwkiSW4gZGVuIGxldHp0ZW4gSmFocmVuIHd1cmRlbiBpbW1lciB3aWVkZXIgdW5zY2h1bGRpZ2UgT3Jra2luZGVyXG4iCisJKwkiZHVyY2ggYnJ1dGFsZSBBYmVudGV1cmVyIGlocmVyIEVsdGVybiBiZXJhdWJ0LiBCaXR0ZSB1bnRlci1cbiIKKwkrCSJzdHVldHplbiBTaWUgbWl0IGVpbmVyIGtsZWluZW4gU3BlbmRlIGRlbiBBdWZiYXUgZWluZXMgV2Fpc2VuLVxuIgorCSsJImhhdXNlcyBmdWVyIGRpZXNlIGJlbWl0bGVpZGVuc3dlcnRlbiBLcmVhdHVyZW4uXG4iCisJKTsKKwlBZGREZXRhaWwoICJob2x6IiwgIlNvbGlkZSB1bmQgc28gZ3V0IHdpZSB1bnplcmJyZWNobGljaC5cbiIgKTsKKwlTZXRQcm9wKCBQX05PR0VULAorCQkiRGVyIE9wZmVyc3RvY2sgaXN0IG5pY2h0IG9obmUgR3J1bmQgYW0gQm9kZW4gZmVzdGdlbmFnZWx0LlxuIiApOworCUFkZENtZCggInNwZW5kZSIsInNwZW5kZSIgKTsKKwlBZGRDbWQoICh7InN0ZWNrZSIsInN0ZWNrIn0pLCAic3RlY2tlbiIgKTsKKwlBZGRDbWQoICJvZWZmbmUiLCJvZWZmbmUiICk7CisJQWRkQ21kKCAoeyJicmljaCIsImJyZWNoZSJ9KSwiYnJlY2hlIiApOworfQorCitjb250ZW50cygpCit7CisJc3dpdGNoKFF1ZXJ5UHJvcChQX1ZBTFVFKSkKKwl7CisJY2FzZSAwOgorCQlyZXR1cm4gIkVyIGlzdCBsZWVyLlxuIjsKKwljYXNlIDE6CisJCXJldHVybiAiRXIgZW50aGFlbHQ6XG5FaW5lIE11ZW56ZS5cbiI7CisJZGVmYXVsdDoKKwkJcmV0dXJuICJFciBlbnRoYWVsdDpcbiIrUXVlcnlQcm9wKFBfVkFMVUUpKyIgTXVlbnplbi5cbiI7CisJfQorfQorCitzdGVja2VuKCBzdHIgKQoreworCXN0cmluZyB3YXMsIHdvcmVpbjsKKwlpZiggIXN0ciB8fCBzc2NhbmYoc3RyLCIlcyBpbiAlcyIsd2FzLHdvcmVpbikhPTIgfHwgIWlkKHdvcmVpbikgKSByZXR1cm4gMDsKKwlyZXR1cm4gc3BlbmRlKCBzdHIgKTsKK30KKworc3BlbmRlKCBzdHIgKQoreworCWludCBhbnosIG5ld0FsOworCXN0cmluZyBhcmc7CisJCisJbm90aWZ5X2ZhaWwoICJXaWV2aWVsZSBNdWVuemVuIHdpbGxzdCBEdSBkZW5uIHNwZW5kZW4/XG4iICk7CisJaWYoICFzdHIgfHwgc3RyPT0iIiApCisJCXJldHVybiAwOworCWlmKCBzc2NhbmYoc3RyLCIlZCAlcyIsYW56LGFyZyk9PSAyICkKKwkJc3RyID0gYXJnOworCWVsc2UKKwl7CisJCWlmKCBzdHI9PSJlaW5lIG11ZW56ZSIgfHwgc3RyPT0iZWluIGdvbGRzdHVlY2siICkKKwkJeworCQkJYW56ID0gMTsKKwkJCXN0ciA9ICJtdWVuemUiOworCQl9CisJCWVsc2UKKwkJCXJldHVybiAwOworCX0KKwlpZiggYW56PD0wIHx8IAorCQltZW1iZXIoKHsibXVlbnplIiwiZ29sZHN0dWVjayIsIm11ZW56ZW4iLCJnb2xkc3R1ZWNrZSJ9KSwgc3RyKT09LTEKKwkpCisJCXJldHVybiAwOworCWlmKCBhbno+UEwtPlF1ZXJ5TW9uZXkoKSApCisJeworCQl3cml0ZSggIlNvIHZpZWwgR2VsZCBoYXN0IER1IG5pY2h0LlxuIiApOworCQlyZXR1cm4gMTsKKwl9CisJUEwtPkFkZE1vbmV5KC1hbnopOworCVNldFByb3AoUF9WQUxVRSxRdWVyeVByb3AoUF9WQUxVRSkrYW56KTsKKworCS8vIEhpZXIgd2lyZCBkZXIgTWFzdGVyIGF1ZmdlcnVmZW4sIGRlciBkYXMgQWxpZ25tZW50IGRlciBTcGllbGVyCisJLy8gZGFubiBhZW5kZXJ0LgorCWlmKCBPU19NQVNURVItPmFkZEFsaWdubWVudCggUEwsIGFuei8zICkgPiAwICkgeworCQkvLyBFaWdlbnRsaWNoIGv2bm50ZSBtYW4gaGllciBhdWNoIGRpZSBNZWxkdW5nIGF1c2dlYmVuLCBhYmVyCisJCS8vIGRlciBTcGllbGVyIHNvbGwgZGVuIFVudGVyc2NoaWVkIHp3aXNjaGVuIEFsaWdubWVudCBnZWFlbmRlcnQKKwkJLy8gdW50IEFsaWdubWVudCBuaWNodCBnZWFlbmRlcnQgc2VoZW4ga29lbm5lbi4KKwl9CisJd3JpdGUoICJEdSBoYXN0IHdhaHJoYWZ0IGRhcyBHZWZ1ZWhsLCBldHdhcyBHdXRlcyBnZXRhbiB6dSBoYWJlbi5cbiIgKTsKKworCXNheSggY2FwaXRhbGl6ZShQTC0+bmFtZShXRVIpKSsiIHNwZW5kZXQgIithbnoKKwkJKyAoKGFuej09MSk/IiBNdWVuemUuXG4iOiIgTXVlbnplbi5cbiIpICk7CisJcmV0dXJuIDE7Cit9CisKK29lZmZuZSggc3RyICkKK3sKKwlpbnQgbmV3QWw7CisJCisJbm90aWZ5X2ZhaWwoICJXQVMgd2lsbHN0IER1IG9lZmZuZW4/XG4iICk7CisJaWYoICFpZChzdHIpICkKKwkJcmV0dXJuIDA7CisJT1NfTUFTVEVSLT5hZGRBbGlnbm1lbnQoIFBMLCAtMzAgKTsKKwl3cml0ZSggIkFsbGVpbiBzY2hvbiBkZXIgR2VkYW5rZS4uLi5cbiIgKTsKKwlyZXR1cm4gMTsKK30KKworYnJlY2hlKCBzdHIgKQoreworCXN0cmluZyBhcmc7CisJbm90aWZ5X2ZhaWwoICJXQVMgd2lsbHN0IER1IGF1ZmJyZWNoZW4/XG4iICk7CisJaWYoICFzdHIgKQorCQlyZXR1cm4gMDsKKwlpZiggc3NjYW5mKHN0ciwiJXMgYXVmIixhcmcpPT0xICkKKwkJc3RyID0gYXJnOworCWlmKCAhaWQoc3RyKSApCisJCXJldHVybiAwOworCXdyaXRlKCAiRGVpbiBsYXV0ZXMgR2V0b2VzZSBydWZ0IGVpbmVuIFRldWZlbCBoZXJiZWksIGRlciBEaWNoIGdsZWljaFxuIgorCSsJIm1pdCBpbiBkaWUgSG9lbGxlIG5pbW10LlxuIgorCSk7CisJc2F5KCBjYXBpdGFsaXplKFBMLT5uYW1lKFdFUikpKyIgdmVyc3VjaHQsIGRlbiBPcGZlcnN0b2NrIGF1Znp1YnJlY2hlbi5cbiIKKwkrICJHbGVpY2ggZXJzY2hlaW50IGVpbiBUZXVmZWwsIHVtICIrUEwtPlF1ZXJ5UHJvbm91bihXRU4pCisJKwkiIGluIGRpZSBIb2VsbGUgenUgcmVpc3Nlbi5cbiIgKTsKKwlQTC0+bW92ZSgiL2QvdW50ZXJ3ZWx0L3JhZXVtZS9xdWFsZW5yYXVtIixNX0dPLCJ6dXIgSG9lbGxlIiwiZmFlaHJ0Iik7CisJT1NfTUFTVEVSLT5hZGRBbGlnbm1lbnQoIFBMLCAtMjAwICk7CisJcmV0dXJuIDE7Cit9CmRpZmYgLS1naXQgYS9kb2MvYmVpc3BpZWxlL21hc3Rlci9vcGZlcnN0b2NrbWFzdGVyLmMgYi9kb2MvYmVpc3BpZWxlL21hc3Rlci9vcGZlcnN0b2NrbWFzdGVyLmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMzNhMDgxZgotLS0gL2Rldi9udWxsCisrKyBiL2RvYy9iZWlzcGllbGUvbWFzdGVyL29wZmVyc3RvY2ttYXN0ZXIuYwpAQCAtMCwwICsxLDEyMCBAQAorLyoKKyAqIEJlaXNwaWVsZGF0ZWkgZnVlciBlaW5lbiBlaW5mYWNoZW4gTWFzdGVyLCBkZXIgU3BpZWxlcmRhdGVuIGF1Y2gKKyAqIHVlYmVyIHJlYm9vdHMsIHJlc2V0cyB1bmQgdXBkYXRlcyBoaW53ZWcgc3BlaWNoZXJ0LCB1bmQgZ2xlaWNoemVpdGcKKyAqIGRhZnVlciBzb3JndCwgZGFzcyBkaWUgRGF0ZW5tZW5nZW4gbmljaHQgaW1tZXIgZ3JvZXNzZXIgd2VyZGVuLgorICoKKyAqIEJ5OiBSdW1hdGFATW9yZ2VuR3JhdWVuIDMvOTkKKyAqCisgKi8KKworLy8gVm9uIGRpZXNlbSBPYmpla3QgZ2lidCBlcyBrZWluZSBDbG9uZXMsIHNvbmRlcm4gbnVyIGRpZSBCbHVlcHJpbnQuCisvLyBEYXMgS29uc3RydWt0IGlmKCBjbG9uZXAoTUUpICkgZGVzdHJ1Y3QodGhpc19vYmplY3QoKSk7IGlzdCBkYWR1cmNoCisvLyBvYnNvbGV0LgorI3ByYWdtYSBub19jbG9uZQorCisjaW5jbHVkZSA8cHJvcGVydGllcy5oPgorI2luY2x1ZGUgPGRlZmluZXMuaD4KKworLy8gT3J0LCBhbiBkZW0gZGllIERhdGVuIGdlc3BlaWNoZXJ0IHdlcmRlbiBrb2VubmVuLiBEaWUgRW5kdW5nIC5vCisvLyB3aXJkIHZvbSBTeXN0ZW0gYW5nZWhhZW5ndC4KKyNkZWZpbmUgU0FWRUZJTEUgIi9kb2MvYmVpc3BpZWxlL21hc3Rlci9vcGZlcnN0b2NrbG9nIgorCisvLyBEaWVzZXMgaXN0IGRlciBLbGllbnQsIGRlciBkaWVzZW4gTWFzdGVyIGJlbnV0enQuIERpZXNlciBXZXJ0IHdpcmQKKy8vIGluIGRpZXNlbSBQcm9ncmFtbSB6d2FyIG5pY2h0IGJlbnV0enQsIHN0ZWh0IGhpZXIgYWJlciwgZGFtaXQgbWFuCisvLyB3ZWlzcywgd29mdWVyIGRpZXNlciBNYXN0ZXIgZ3V0IGlzdC4KKyNkZWZpbmUgQ0xJRU5UICIvZG9jL2JlaXNwaWVsZS9tYXN0ZXIvb3BmZXJzdG9jayIKKworLy8gRXMgYnJhdWNodCBrZWluIE9iamVrdCBpbmhlcml0ZXQgd2VyZGVuLCBkYSB3aXIga2VpbmVybGVpIFNwaWVsLQorLy8gRnVua3Rpb25pdGFldCBicmF1Y2hlbi4gRGVyIE1hc3RlciBrYW5uIG5pY2h0IGdlbm9tbWVuLCBiZXdlZ3Qgb2RlcgorLy8gc29uc3R3aWUgaW5uaGVybGFiIGRlcyBNdWRzIGJlbnV0enQgd2VyZGVuLiBJbnNiZXNvbmRlcmUgc29sbGVuCisvLyBpbSBzYXZlZmlsZSB6dW0gTWFzdGVyIGtlaW5lIFByb3BlcnRpZXMgb2RlciBzbyBhdWZ0YXVjaGVuLgorLy8gaW5oZXJ0ICIvc3RkL3RoaW5nIjsKKworLy8gVW0gZGllc2UgRGF0ZW4gZ2VodCBlcy4KKy8vIERhcyBNYXBwaW5nIHNwZWljaGVydCB6dSBqZWRlbSBTcGllbGVyLCB3YW5uIGRhcyBsZXR6dGUgTWFsIGR1cmNoIGVpbmVuCisvLyBkZXIgS2xpZW50ZW4gZGFzIEFsaWdubWVudCBnZWFlbmRlcnQgd3VyZGUuIEFsdGUgRGF0ZW4gd2VyZGVuIGJlaQorLy8gR2VsZWdlbmhlaXQgZ2Vsb2VzY2h0LgorbWFwcGluZyBkYXRhOworCit2b2lkIHB1cmdlKCk7CisKK3ZvaWQgY3JlYXRlKCkgeworCisgIC8vIERhbWl0IFNjaHJlaWJ6dWdyaWZmIGF1ZiBTYXZlZmlsZSBtb2VnbGljaC4KKyAgc2V0ZXVpZChnZXR1aWQoKSk7CisKKyAgaWYoIHJlc3RvcmVfb2JqZWN0KCBTQVZFRklMRSApICkgeworICAgIHB1cmdlKCk7CisgIH0gZWxzZSB7CisgICAgZGF0YSA9IChbXSk7CisgICAgc2F2ZV9vYmplY3QoIFNBVkVGSUxFICk7IC8vIERhbWl0IFNhdmVmaWxlIHVuZCBEYXRlbiBpbW1lciBzeW5jaHJvbiBzaW5kLgorICB9Cit9CisKKy8vIERpZXNlIEZ1bmt0aW9uIHRlc3RldCBlaW5lbiBlaW56ZWxuZW4gRWludHJhZywgb2IgZXIgdmVyYWx0ZXQgaXN0LgorLy8gKGlzdCBuaWNodCBKYWhyIDIwMzgtZmVzdCA6LSkKK2ludCBub3RFeHBpcmVkKCBzdHJpbmcgbmFtZSwgaW50IGRhdGUgKSB7CisgIHJldHVybiB0aW1lKCkgLSBkYXRlIDwgODY0MDA7Cit9CisKKy8vIERhcyBNYXBwaW5nIHVudGVyc3VjaGVuLCBvYiBFaW50cmFlZ2Ugdm9yaGFuZGVuIHNpbmQsIGRpZSBuaWNodAorLy8gbWVociBiZW5vZXRpZ3Qgd2VyZGVuLgorLy8gKEluIGRpZXNlbSBGYWxsIHNpbmQgZGFzIEVpbnRyYWVnZSwgZGllIGFlbHRlciBhbHMgZWluZW4gVGFnIHNpbmQuKQorLy8gRXMgcmVpY2h0IHVucywgZGllc2UgRnVua3Rpb24gZWlubWFsIHBybyByZWJvb3QgYXVzenVmdWVocmVuLiBCZWkKKy8vIGFuZGVyZW4gQW53ZW5kdW5nZW4ga29lbm50ZSBkYXMgbmF0dWVybGljaCBoYWV1ZmlnZXIgbm9ldGlnIHNlaW4uCit2b2lkIHB1cmdlKCkgeworICBkYXRhID0gZmlsdGVyX2luZGljZXMoIGRhdGEsICMnbm90RXhwaXJlZCApOworICBzYXZlX29iamVjdCggU0FWRUZJTEUgKTsKK30KKworLy8gRGllc2UgRnVua3Rpb24gaXN0IGRpZSBlaW5nZXRsaWNoZSBGdW5rdGlvbiwgZGllICJnZW1hc3RlcnQiIHdlcmRlbgorLy8gc29sbCwgYWxzbyBm/HIgbWVocmVyZSBPcGZlcnN0b2Vja2UgZ2VtZWluc2FtIGJlbnV0enQgd2lyZC4KKy8vIERlciBPcGZlcnN0b2NrIHVlYmVyZ2lidCBkYXMgU3BpZWxlcm9iamVrdCB1bmQgZGllIGdld3VlbnNjaHRlCisvLyBBbGlnbm1lbnRhZW5kZXJ1bmcsIGFscyBFcmdlYm5pcyB3aXJkIDEgZ2VsaWVmZXJ0LCB3ZW5uIGVpbmUgQWVuZGVydW5nCisvLyB2b3JnZW5vbW1lbiB3dXJkZSAoMCBzb25zdCkgdW5kIGRhcyBBbGlnbm1lbnQgZGVzIFNwaWVsZXJzIGVudHNwcmVjaGVuZAorLy8gZ2VzZXR6dC4KK2ludCBhZGRBbGlnbm1lbnQoIG9iamVjdCBwbGF5ZXIsIGludCBhbGlnbiApIHsKKyAgaW50IG5ld0FsaWduOworICBzdHJpbmcgbmFtZTsKKworICAvKgorICAvLyBGYWxscyBtYW4gdmVyaGluZGVybiB3aWxsLCBkYXNzIG51ciBkZXIgS2xpZW50IGF1ZiBkaWUgRGF0ZW4genVncmVpZnQsCisgIC8vIGthbm4gbWFuIGhpZXIgbm9jaCBBYmZyYWdlbiBlaW5iYXVlbiwgdHlwaXNjaGVyd2Vpc2Ugc2llaHQgZGFzIGRhbm4gc28KKyAgLy8gYXVzOgorICBpZiggb2JqZWN0X25hbWUocHJldmlvdXNfb2JqZWN0KCkpWzAuLnh4eF0gIT0gQ0xJRU5UICkgcmV0dXJuIC0xOworICAvLyBvZGVyCisgIGlmKCBnZXRldWlkKHByZXZpb3VzX29iamVjdCgpKSAhPSBnZXRldWlkKCkgKSByZXR1cm4gLTE7CisgIC8vIGV0Yy4gZXRjLgorICAqLworCisgIG5hbWUgPSBnZXRldWlkKHBsYXllcik7CisKKyAgLy8gTnVyIGVpbmUgQWVuZGVydW5nIHBybyBUYWcuCisgIC8vIFdpciBiZW51dHplbiBoaWVyLCBkYXNzIGRhdGFbbmFtZV0gPT0gMCBpc3QsIGZhbGxzIGRhdGEgZGVuIE5hbWVuIG5pY2h0CisgIC8vIGVudGhhZWx0IQorICBpZiggbm90RXhwaXJlZCggbmFtZSwgZGF0YVtuYW1lXSApICkgcmV0dXJuIDA7CisKKyAgLy8gRGF0ZW4gc2V0emVuIHVuZCBzcGVpY2hlcm4uCisgIGRhdGFbbmFtZV0gPSB0aW1lKCk7CisgIHNhdmVfb2JqZWN0KCBTQVZFRklMRSApOworCisgIC8vIE1heGltYWxlIEFlbmRlcnVuZzogMjAwCisgIGlmKCBhbGlnbiA8IC0yMDAgKSBhbGlnbiA9IC0yMDA7CisgIGlmKCBhbGlnbiA+IDIwMCApIGFsaWduID0gMjAwOworCisgIG5ld0FsaWduID0gcGxheWVyLT5RdWVyeVByb3AoIFBfQUxJR04gKSArIGFsaWduOworCisgIC8vIEthcHB1bmcgYmVpICstMTAwMAorICBpZiggbmV3QWxpZ24gPCAtMTAwMCApIG5ld0FsaWduID0gLTEwMDA7CisgIGlmKCBuZXdBbGlnbiA+IDEwMDAgKSBuZXdBbGlnbiA9IDEwMDA7CisgCisgIHBsYXllci0+U2V0UHJvcCggUF9BTElHTiwgbmV3QWxpZ24gKTsKKyAgcmV0dXJuIDE7Cit9CisKKy8vIFNjaGx1c3NiZW1lcmt1bmc6CisvLworLy8gR2V3aXR6dGUgUHJvZ3JhbW1pZXJlciBrb2VubnRlbiBkZW4gS2xpZW50IHVuZCBkZW4gTWFzdGVyIGluIGVpbmVyCisvLyBEYXRlaSB6dXNhbW1lbiBhYmxlZ2VuLiBEaWUgQmx1ZXByaW50IHdpcmQgYWxzIE1hc3RlciwgZGllIENsb25lcyB3ZXJkZW4KKy8vIGFscyBLbGllbnRlbiBiZW51dHp0LiBJY2ggaGFiZSBkYXMgaGllciBiZXd1c3N0IGFuZGVycyBnZW1hY2h0IHVuZCBlbXBmZWhsZQorLy8gZGFzIGF1Y2ggYWxzIFZvcmJpbGQsIHdlaWwgc28gZGVyIENvZGUgd2VzZW50bGljaCBiZXNzZXIgenUgdmVyc3RlaGVuIGlzdC4KZGlmZiAtLWdpdCBhL2RvYy9iZWlzcGllbGUvbWlzYy9ic3Btb24xLmMgYi9kb2MvYmVpc3BpZWxlL21pc2MvYnNwbW9uMS5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjhiYTg1ZmMKLS0tIC9kZXYvbnVsbAorKysgYi9kb2MvYmVpc3BpZWxlL21pc2MvYnNwbW9uMS5jCkBAIC0wLDAgKzEsNzggQEAKKy8qCisqKiBFaW4gZ2FueiBub3JtYWxlcyBTdGFuZGFyZC1tb25zdGVyIG9obmUgQmVzb25kZXJoZWl0ZW4KKyoqICh2b24gQm9pbmcpCisqLworCisvLyBEaWVzZSBQcmFnbWFzIHNvcmdlbiBkYWZ1ZXIsIGRhc3MgZGVyIERyaXZlciBkYXJhdWYgYWNodGV0LCBkYXNzIGJlaQorLy8gRnVua3Rpb25zYXJndW1lbnRlbiwgLVJ1ZWNrZ2FiZXdlcnRlbiB1bmQgdGVpbHdlaXNlIGJlaSBadXdlaXN1bmcgdm9uCisvLyBXZXJ0ZW4gYW4gVmFyaWFibGVuIGRlciByaWNodGlnZSBEYXRlbnR5cCB2ZXJ3ZW5kZXQgd2lyZCAoei5iLiBrZWluIHN0cmluZworLy8gYW5zdGVsbGUgZWluZXMgaW50IHZlcndlbmRldCB3aXJkKS4gU29sbHRlIGluIGtlaW5lbSBPYmpla3QgZmVobGVuLgorI3ByYWdtYSBzdHJvbmdfdHlwZXMsIHNhdmVfdHlwZXMsIHJ0dF9jaGVja3MKKworLy8gZGVuIFN0YW5kYXJkLU5QQyBkZXIgTXVkbGliIGVyYmVuLgoraW5oZXJpdCAiL3N0ZC9ucGMiOworCisjaW5jbHVkZSA8cHJvcGVydGllcy5oPgorI2luY2x1ZGUgPGxhbmd1YWdlLmg+CisKK3Byb3RlY3RlZCB2b2lkIGNyZWF0ZSgpCit7CisgIDo6Y3JlYXRlKCk7ICAgIC8qIE5pY2h0IHZlcmdlc3Nlbiwgb2huZSBkYXMgZ2VodCBuaWNodHMgKi8KKworLyogRGllIEt1cnpiZXNjaHJlaWJ1bmcgd2lyZCB6dW0gQmVpc3BpZWwgYW5nZXplaWd0IHdlbm4gbWFuIGluIGVpbmVuIFJhdW0KKyAgIG1pdCBkZW0gTW9uc3RlciByZWlubGFldWZ0ICovCisgIFNldFByb3AoUF9TSE9SVCwgIkJlaXNwaWVsbW9uc3RlciIpOworCisvKiBCZWltIEFuc2NoYXVlbiBkZXMgTW9uc3RlcnMgd2lyZCBkaWUgbG9uZy1kZXNjcmlwdGlvbiBhbmdlemVpZ3QgKi8KKyAgU2V0UHJvcChQX0xPTkcsICJFaW4gQmVpc3BpZWxtb25zdGVyIG9obmUgQmVzb25kZXJoZWl0ZW4uXG4iKTsKKworLyogRWluIE5hbWUgbXVzcyBzZWluLCBkYSBzb25zdCB6LkIuIGltIFRvZGVzZmFsbCAnTGVpY2hlIHZvbiAwJyBkYWxpZWd0ICovCisgIFNldFByb3AoUF9OQU1FLCAiTW9uc3RlciIpOworCisvKiBEYXMgR2VzY2hsZWNodCBkZXMgTW9uc3RlcnMuIEFscyBHZXNjaGxlY2h0ZXIgc2luZCAqLworLyogZGllIGluIDxsYW5ndWFnZS5oPiBkZWZpbmllcnRlbiBTeW1ib2xlIE5FVVRFUiwgTUFMRSAgICovCisvKiB1bmQgRkVNQUxFIHp1bGFlc3NpZy4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgU2V0UHJvcChQX0dFTkRFUiwgTkVVVEVSKTsKKworLyogRWluIE1vbnN0ZXIgYnJhdWNodCBtaW5kZXN0ZW5zIGVpbmUgSUQsIHVudGVyIGRlciBtYW4gZXMgYW5zcHJlY2hlbiBrYW5uICovCisvKiBFcyBrYW5uIGFiZXIgYXVjaCBtZWhyZXJlIHZlcnNjaGllZGVuZSBJRCdzIGhhYmVuLiAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgQWRkSWQoIm1vbnN0ZXIiKTsKKyAgQWRkSWQoImJlaXNwaWVsbW9uc3RlciIpOworCisvKiBadWVyc3Qgc29sbHRlIG1hbiBkZW0gTW9uc3RlciBlaW5lbiBHcnVuZGxldmVsIGdlYmVuLiAqLworLyogRGllIFNwZWxscHVua3RlIHVuZCBkaWUgTGViZW5wdW5rdGUgc293aWUgZGllIEF0dHJpYnV0ZSB3ZXJkZW4gZGFubiAqLworLyogYXV0b21hdGlzY2ggYW5nZXBhc3N0LiAqLworICBjcmVhdGVfZGVmYXVsdF9ucGMoIDEwICk7CisKKy8qIE51biBtYWNoZW4gd2lyIGVzIGV0d2FzIHdpZGVyc3RhbmRzZmFlaGlnZXIsIGluZGVtIHdpciBQX0JPRFkgc2V0emVuLiAgKi8KKy8qIE5pZSBQX1RPVEFMX0FDIG9kZXIgUF9BQyBzZXR6ZW4sIFBfVE9UQUxfQUMgd2lyZCBhdXRvbWF0aXNjaCBiZXJlY2huZXQgKi8KKy8qIHVuZCBQX0FDIGlzdCBudXIgZnVlciBSdWVzdHVuZ2VuIGRhLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgU2V0UHJvcChQX0JPRFksIDU1KTsKKworLyogRGFzIE1vbnN0ZXIgc2NobGFlZ3QgbWl0IGJsb3NzZW4gSGFlbmRlbiB6dSwgYWxzbyB3aXJkIFBfSEFORFMgZ2VzZXR6dC4gICAqLworLyogQXVjaCBoaWVyIHdlZGVyIFBfVE9UQUxfV0Mgbm9jaCBQX1dDIHNldHplbi4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICBTZXRQcm9wKFBfSEFORFMsICh7IiBtaXQgc2VpbmVuIEhhZW5kZW4iLCA1NX0pKTsKKy8qICAgICAgICAgICAgICAgICAgXiBkaWVzZXMgTGVlcnplaWNoZW4gaXN0IHdpY2h0aWcgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKy8qIEJlaW0gS2FtcGYgZXJzY2hlaW50IG51bjogJ0RhcyBNb25zdGVyIGdyZWlmdCBEaWNoIG1pdCBzZWluZW4gSGFlbmRlbiBhbicgKi8KKy8qIDU1IGVudHNwcmljaHQgZGVyIFdhZmZlbmtsYXNzZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKworLyogR2VzaW5udW5nIGRlcyBNb25zdGVycywgMCBpc3QgbmV1dHJhbCwgbmVnYXRpdiBib2VzZSB1bmQgcG9zaXRpdiBndXQgKi8KKyAgU2V0UHJvcChQX0FMSUdOLCAxMDApOyAgLyogRWluaWdlcm1hc3NlbiBuZXR0LCBhYmVyIG5pY2h0cyBiZXNvbmRlcmVzICovCisKKy8qIERpZSBSYXNzZSBkZXMgTW9uc3RlcnMgKi8KKyAgU2V0UHJvcChQX1JBQ0UsICJJcmdlbmRuZXJhc3NlIik7CisKKy8qIEVyZmFocnVuZ3NwdW5rdGUgZGVzIE1vbnN0ZXJzLCBiZWltIFRvZCBlcmhhZWx0IGRlciAnS2lsbGVyJyBlaW4gICAqLworLyogaHVuZGVydHN0ZWwgZGllc2VzIFdlcnRlcy4gU2Nob24gaW0gS2FtcGYgZXJoYWVsdCBtYW4gYmVpIGplZGVtICAgICovCisvKiBTY2hsYWcgd2VhcG9uX2NsYXNzKnNjaGFkZW4vMTAgcHVua3RlICh3ZWFwb25fY2xhc3MgaGllciA1NSksIGFsc28gKi8KKy8qIGluc2dlc2FtdCB3ZWFwb25fY2xhc3MqaGl0X3BvaW50cy8xMC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICBTZXRQcm9wKFBfWFAsIDEwMDAwKTsKKworLyogRGllIEdyb2Vzc2UgZGVzIE1vbnN0ZXJzIGluIGNtLiBEaWVzIHdpcmQgYmVpIGVpbmlnZW4gS2FtcGZiZWZlaGxlbiAqLworLyogYXVzZ2V3ZXJ0ZXQsIHNvd2llIGJlaSBlaW5pZ2VuIElkZW50aWZpa2F0aW9uc3NwcnVlY2hlbiB2b24gR2lsZGVuICAqLworICBTZXRQcm9wKFBfU0laRSwxODApOworCisvKiBXZWl0ZXJlIFdlcnRlOiBQXyhNQVgpX0ZPT0QsIFBfKE1BWClfRFJJTkssIFBfKE1BWClfQUxDT0hPTCwgICAgICAgKi8KKy8qIFBfTVNHSU4sIFBfTVNHT1VULCBQX01NU0dJTiwgUF9NTVNHT1VULCBQX01BWF9IQU5EUywgUF9VU0VEX0hBTkRTICAqLworCit9CmRpZmYgLS1naXQgYS9kb2MvYmVpc3BpZWxlL21pc2MvYnNwbW9uMi5jIGIvZG9jL2JlaXNwaWVsZS9taXNjL2JzcG1vbjIuYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi45NWYzOTA5Ci0tLSAvZGV2L251bGwKKysrIGIvZG9jL2JlaXNwaWVsZS9taXNjL2JzcG1vbjIuYwpAQCAtMCwwICsxLDE5OSBAQAorLyoKKyoqIEVpbiBCZWlzcGllbG1vbnN0ZXIgbWl0IGRpdiBFeHRyYXMgKHZvbiBCb2luZywgYWt0dWFsaXNpZXJ0IHZvbiBXaW0rWmVzc3RyYSkKKyovCisKKy8vIERpZXNlIFByYWdtYXMgc29yZ2VuIGRhZnVlciwgZGFzcyBkZXIgRHJpdmVyIGRhcmF1ZiBhY2h0ZXQsIGRhc3MgYmVpCisvLyBGdW5rdGlvbnNhcmd1bWVudGVuLCAtUnVlY2tnYWJld2VydGVuIHVuZCB0ZWlsd2Vpc2UgYmVpIFp1d2Vpc3VuZyB2b24KKy8vIFdlcnRlbiBhbiBWYXJpYWJsZW4gZGVyIHJpY2h0aWdlIERhdGVudHlwIHZlcndlbmRldCB3aXJkICh6LmIuIGtlaW4gc3RyaW5nCisvLyBhbnN0ZWxsZSBlaW5lcyBpbnQgdmVyd2VuZGV0IHdpcmQpLiBTb2xsdGUgaW4ga2VpbmVtIE9iamVrdCBmZWhsZW4uCisjcHJhZ21hIHN0cm9uZ190eXBlcywgc2F2ZV90eXBlcywgcnR0X2NoZWNrcworCitpbmhlcml0ICIvc3RkL25wYyI7CisKKyNpbmNsdWRlIDxwcm9wZXJ0aWVzLmg+CisjaW5jbHVkZSA8bGFuZ3VhZ2UuaD4KKyNpbmNsdWRlIDxjb21iYXQuaD4gICAgLy8gZnVlciBkaWUgZGFtYWdlIHR5cGVzCisjaW5jbHVkZSA8bW92aW5nLmg+ICAgIC8vIGZ1ZXIgUkVKRUNUX0tFRVAgICAKKyNpbmNsdWRlIDxjbGFzcy5oPiAgICAgLy8gZnVlciBBZGRDbGFzcyAKKyNpbmNsdWRlIDxuZXdfc2tpbGxzLmg+IC8vIGZ1ZXIgU1BfKiBiZWkgQWRkU3BlbGwKKworcHJvdGVjdGVkIHZvaWQgY3JlYXRlKCkKK3sKKyAgOjpjcmVhdGUoKTsgICAgICAgLyogV0lDSFRJRyEhISAqLworCisvKiBTdGFuZGFyZC1Lbm9maWd1cmF0aW9uIChFcmxhZXV0ZXJ1bmdlbiBzaWVoZSBic3Btb24xLmMpOiAqLworICBTZXRQcm9wKFBfU0hPUlQsICJFaW4gWmF1YmVyZXIiKTsKKyAgU2V0UHJvcChQX0xPTkcsICJEaWVzZXIgWmF1YmVyZXIgemF1YmVydCB3aWUgd2lsZCB1bmQgc2Nod2luZ3QgZGFiZWkgIgorICAgICJzZWluZW4gbGFuZ2VuIEJhcnQuXG4iKTsKKyAgU2V0UHJvcChQX05BTUUsICJaYXViZXJlciIpOworICBTZXRQcm9wKFBfR0VOREVSLCBNQUxFKTsKKyAgQWRkSWQoInphdWJlcmVyIik7CisgIGNyZWF0ZV9kZWZhdWx0X25wYygxOCk7CisgIFNldFByb3AoUF9BTElHTiwgLTcwMCk7ICAgLyogQnJyciwgaXN0IGRlciBib2VzZSAuLi4uICovCisgIFNldFByb3AoUF9CT0RZLCAxMjUpOworICBTZXRQcm9wKFBfSEFORFMsICh7IiBtaXQgc2VpbmVtIGxhbmdlbiBCYXJ0IiwgMTg1fSkgKTsKKyAgU2V0UHJvcChQX1NJWkUsMTgwKTsKKyAgU2V0UHJvcChQX01BWF9IQU5EUywgMik7ICAvKiBBbnphaGwgZGVyIEhhZW5kZSAoZGVmYXVsdCBpc3QgMikgKi8KKyAgLy8gc2V0X2xpdmluZ19uYW1lKCkgc2V0enQgZWluZW4gTmFtZW4sIG1pdCBkZXIgZGVyIFphdWJlcmVyIHouQi4gbWl0IGVpbmVtCisgIC8vICdmaW5kZScgZ2VmdW5kZW4gd2VyZGVuIGthbm4uIEZ1ZXIgZGllIG1laXN0ZW4gTlBDIGlzdCBkaWVzIG5pY2h0IG5vZXRpZy4KKyAgLy8gU3BlemllbGwgc29sbHRlIG1hbiBrZWluZSBnZW5lcmlzY2hlbiBCZXplaWNobnVuZ2VuIGhpZXIgYW5tZWxkZW4sIHdlbm4KKyAgLy8gc2Nob24sIGRhbm4gaW5kaXZpZHVlbGxlIE5hbWVuLgorICAvKiBzZXRfbGl2aW5nX25hbWUoInphdWJlcmVyIik7ICovCisKKy8qIE1pdCBBZGRDbGFzcygpIHVuZCBQX1JBQ0Ugd2lyZCBmZXN0Z2VsZWd0LCBpbiB3ZWxjaGUgR3J1cHBlIHZvbiBMZWJlLSAgKi8KKy8qIHdlc2VuIGRlciBOUEMgZ2Vob2VydCwgd2VsY2hlIG1pdCBpc19jbGFzc19tZW1iZXIobWl4ZWQgc3RyKSBhYmdlZnJhZ3QgKi8KKy8qIHdlcmRlbiBrYW5uLiBJbSBNaW5pbWFsZmFsbCBpc3QgZGVyIE5QQyB2b24gZGVyIEtsYXNzZSwgZGllIGJlaSBQX1JBQ0UgKi8KKy8qIGVpbmdldHJhZ2VuIGlzdC4gTWl0IEFkZENsYXNzKCkga29lbm5lbiBhYmVyIG5vY2ggd2VpdGVyZSBFaWdlbi0gICAgICAgKi8KKy8qIHNjaGFmdGVuIGhpbnp1Z2VmdWVndCB3ZXJkZW4uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKworICBTZXRQcm9wKFBfUkFDRSwiU3VwZXJkdXBlcnphdWJlcmVyIik7CisgIEFkZENsYXNzKCAoeyBDTF9IVU1BTiwgQ0xfTUFNTUFMIH0pICk7CisKKy8qIE1pdCBQX1JFU0lTVEFOQ0UgdW5kIFBfVlVMTkVSQUJJTElUWSB3ZXJkZW4gZml4ZSBXZXJ0ZSAoNTAlKSBmdWVyICAgICAgKi8KKy8qIFJlc2lzdGVuemVuIHJlc3Bla3RpdmUgQW5mYWVsbGlna2VpdGVuIGdlc2V0enQgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKy8qIERpZSBMaXN0ZSBkZXIgbW9lZ2xpY2hlbiBTY2hhZGVuc2FydGVuIGlzdCBpbiAvc3lzL2NvbWJhdC5oIGRlZmluaWVydC4gKi8gIAorLyogei5CLiAgU2V0UHJvcChQX1JFU0lTVEFOQ0UsICh7IERUX01BR0lDIH0pKTsgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworLyogICAgICAgU2V0UHJvcChQX1ZVTE5FUkFCSUxJVFksICh7IERUX0NPTEQgfSkpICAgICAgICAgICAgICAgICAgICAgICAgICAqLworLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworLyogTWl0IFBfUkVTSVNUQU5DRV9TVFJFTkdUSFMga29lbm5lbiBSZXNpc3RlbnplbiB1bmQgQW5mYWVsbGlna2VpdCAgICAgICAqLworLyoga29uZmlndXJpZXJ0IHdlcmRlbi4gRGllc2UgUHJvcGVydHkgZW50aGFlbHQgZWluIE1hcHBpbmcgdm9uICAgICAgICAgICAqLworLyogdm9uIFNjaGFkZW5zYXJ0ZW4gZW50aGFlbHQuIE5lZ2F0aXZlIEZha3RvcmVuIGJpcyBtYXhpbWFsIC0xLjAgICAgICAgICAqLyAKKy8qICg9SW1tdW5pdGFldCkgZ2ViZW4gUmVzaXN0ZW56ZW4sIHBvc2l0aXZlIFdlcnRlIEFuZmFlbGxpZ2tlaXRlbiBhbi4gICAgKi8KKworICBTZXRQcm9wKFBfUkVTSVNUQU5DRV9TVFJFTkdUSFMsIChbIERUX01BR0lDOiAtMC41LCBEVF9DT0xEOiAyLjBdKSApOwkJCQkJICAgICAgCisKKy8qIER1cmNoIGRpZXNlbiBCZWZlaGwgd2lyZCBlaW5lIFdhZmZlIGdlY2xvbnQsIHNvZmVybiBzaWUgbmljaHQgaW0gUmF1bSAgKi8KKy8qIGhlcnVtbGllZ3QgKGluIGRlbSBGYWxsIHdpcmQgc2llIHZvbSBOUEMgYXVmZ2Vob2JlbiksIHVuZCBnZXp1ZWNrdCAgICAgKi8gCisvKiAoZGVmaW5pZXJ0IGluIC9zdGQvbnBjL2l0ZW1zLmMgcmVzcC4gL3N5cy9ucGMuaCkgICAgICAgICAgICAgICAgICAgICAgICovCisKKyAgQWRkSXRlbSgiL2RvYy9iZWlzcGllbGUvbWlzYy9ic3B3YWZmZTEiLCBDTE9ORV9XSUVMRCk7CisvKiBVbmQgbm9jaCBlaW5lIFJ1ZXN0dW5nIGNsb25lbiB1bmQgYW56aWVoZW4uICAgICAgICAgICAgICAgICAgICAgICAgICAgICovICAKKyAgQWRkSXRlbSgiL2RvYy9iZWlzcGllbGUvbWlzYy9ic3BydWVzdDEiLCBDTE9ORV9XRUFSKTsKKworLyogSmV0enQgd2lyZCBnZXphdWJlcnQgLi4uLiAgICAgKi8KKworLyogU2V0UHJvcChQX1NQRUxMUkFURSwpIGxlZ3QgZGllIFdhaHJzY2hlaW5saWNoa2VpdCBmZXN0LCBtaXQgZGVyIGVpbiAgICovCisvKiBaYXViZXJzcHJ1Y2ggZHVyY2hnZWZ1ZWhydCB3aXJkLCBoaWVyIDQwJSAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICBTZXRQcm9wKFBfU1BFTExSQVRFLDQwKTsKKworLyogTWl0IEFkZFNwZWxsKCkgd2lyZCBlaW4gWmF1YmVyc3BydWNoIGhpbnp1Z2VmdWVndC4gRGFzIGVyc3RlIEFyZ3VtZW50ICAqLworLyogaXN0IHNvIGV0d2FzIHdpZSBkaWUgcmVsYXRpdmUgV2FocnNjaGVpbmxpY2hrZWl0IGRlcyBTcHJ1Y2hzIGltICAgICAgICAqLworLyogVmVyZ2xlaWNoIHp1IGRlbiBhbmRlcmVuLCBoaWVyIGJlaW0gZXJzdGVuIHNwcnVjaCAxIGJlaW0gendlaXRlbiAyLCAgICAqLworLyogZGFzIGhlaXNzdCBpbiAyMCUgZGVyIEZhZWxsZSB3aXJkIGRlciBlcnN0ZSBaYXViZXJzcHJ1Y2ggZ2Vub21tZW4gdW5kICAqLworLyogaW4gNDAlIGRlciB6d2VpdGUgdW5kIGluIDYwJSBkZXIgZHJpdHRlLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworLyogRGFzIHp3ZWl0ZSBBcmd1bWVudCBpc3QgZGVyIG1heGltYWxlIFNjaGFkZW4sIGVudHNwcmVjaGVuZCBkZXIgV0MgICAgICAqLworLyogZWluZXIgV2FmZmUgb2RlciBQX0hBTkRTIGJlaW0gd2FmZmVubG9zZW4gS2FtcGYuICAgICAgICAgICAgICAgICAgICAgICAqLworLyogRGllIHp3ZWkgd2VpdGVyZW4gQXJndW1lbnRlIHNpbmQgZGllIE1lbGR1bmdlbiBkaWUgZGVyIGFuZ2VncmlmZmVuZSAgICAqLworLyogU3BpZWxlciBzZWxic3QgdW5kIGV2ZW50dWVsbGUgWnVzY2hhdWVyIGVyaGFsdGVuLiBIaWVyYmVpIHN0ZWhlbiBAV0VSLCAqLworLyogQFdFTiwgQFdFTSB1bmQgQFdFU1NFTiBmdWVyIGRlbiBOYW1lbiBkZXMgT3BmZXJzIGltIGVudHNwcmVjaGVuZGVuICAgICAqLworLyogRmFsbC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworLyogRGFzIDUuIEFyZ3VtZW50IGlzdCBvcHRpb25hbCB1bmQgZ2lidCBkZW4gU2NoYWRlbnN0eXAgYW4sIGZlaGx0IGVyICAgICAqLworLyogd2lyZCBEVF9NQUdJQyBhbmdlbm9tbWVuLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLyAgCisvKiBJbSA2LiBBcnVndW1lbnQga2FubiBlaW5lIEZ1bmt0aW9uIHN0ZWhlbiwgZGllIGJlaSBkZW0gU3BydWNoIGF1c2dlLSAgICovCisvKiBmdWVocnQgd2VyZGVuIHNvbGwsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisvKiBEYXMgc2llYnRlIHVlYmVyZ2lidCBkaWUgU3BlbGwgUGFyYW1ldGVyLCBoaWVyIGlzdCB3aWNodGlnLCBkYXNzIGJlaSAgICovCisvKiBwaHlzaWthbGlzY2hlbiBTY2hhZWRlbiBhdWNoIFNQX1BIWVNJQ0FMX0FUVEFDSyBnZXNldHp0IHdpcmQsIGRhIHNvbnN0ICovCisvKiBlaW5pZ2UgR2lsZGVuIGRlbiAiWmF1YmVyc3BydWNoIiBhYndlaHJlbiBrb2VubmVuIChzaWVoZSBTcGVsbERlZmVuZCkgICovCisKKyAgQWRkU3BlbGwoMjAsNjAsIAorCSAgICIgIERlciBaYXViZXJlciB3aXJmdCBlaW5lbiBGZXVlcmJhbGwgbmFjaCBEaXIuXG4iLAorCSAgICIgIERlciBaYXViZXJlciB3aXJmdCBlaW5lbiBGZXVlcmJhbGwgbmFjaCBAV0VNLlxuIiwKKwkgICAoeyBEVF9GSVJFIH0pICk7CisgIEFkZFNwZWxsKDQwLDk1LAorCSAgICIgIERlciBaYXViZXJlciBiZXNjaHdvZXJ0IGVpbmVuIFN0dXJtIHVlYmVyIGRlaW5lbSBLb3BmIGhlcnZvci5cbiIsCisJICAgIiAgRGVyIFphdWJlcmVyIGJlc2Nod29lcnQgZWluZW4gU3R1cm0gdWViZXIgQFdFU1NFTiBLb3BmIGhlcnZvci5cbiIsCisJICAgKHsgRFRfQUlSLCBEVF9MSUdIVE5JTkcgfSkgKTsgIAorICBBZGRTcGVsbCg2MCw1MCwKKyAgICAgICAgICAgIiAgRGVyIFphdWJlcmVyIHRyaXR0IERpY2ggaGludGVybGlzdGlnLlxuIiwKKwkgICAiICBEZXIgWmF1YmVyZXIgdHJpdHQgbmFjaCBAV0VNLlxuIiwKKwkgICAoeyBEVF9CTFVER0VPTiB9KSwgMCwKKwkgICAoW1NQX1NIT1dfREFNQUdFOjEsIFNQX1BIWVNJQ0FMX0FUVEFDSzoxXSkgKTsgIAkgICAKKworCisvKiBSZWRlbiBrYW5uIGRlciBaYXViZXJlciBhdWNoIHZvbiBhbGxlaW5lLCBoaWVyIGtvbW1lbiBkaWUgY2hhdHM6ICAgICAqLworCisvKiBEYXMgZXJzdGUgQXJndW1lbnQgaXN0IGRpZSBXYWhyc2NoZWlubGljaGtlaXQsIG1pdCBkZXIgZGFzIE1vbnN0ZXIKKyAqIGVpbmVuIFNwcnVjaCBicmluZ3QgKHdlbmlnZXIgaXN0IG1laHIhKS4gRGFzIHp3ZWl0ZSBBcmd1bWVudCBpc3QgZGllIExpc3RlCisgKiBkZXIgU3BydWVjaGUgKG9kZXIgQWt0aW9uZW4pLgorICovCisKKyAgU2V0Q2hhdHMoMiwgKHsKKyAgIkRlciBaYXViZXJlciBsYWV1ZnQgaW0gS3JlaXMgaGVydW0uXG4iLAorICAiRGVyIFphdWJlcmVyIHN0b2xwZXJ0IHVlYmVyIHNlaW5lbiBCYXJ0LlxuIiwKKyAgIkRlciBaYXViZXJlciBzYWd0OiBIZWggRHUhIFdhcyBtYWNoc3QgRHUgZGE/XG4iLAorICAiRGVyIFphdWJlcmVyIG11cm1lbHQgZWluIHBhYXIgc2VsdHNhbWUgV29ydGUgaW4gc2VpbmVuIEJhcnQuXG4iLAorICAiRGVyIFphdWJlcmVyIGJyaWNodCBpbiB1bmtvbnRyb2xsaWVydGVzIEdlbGFlY2h0ZXIgYXVzLlxuIiwKKyAgIkRlciBaYXViZXJlciBzYWd0OiBIYXN0IG1pciBtYWwgbmUgTWFyaywgZXk/XG4iLAorICAiRGVyIFphdWJlcmVyIHNhZ3Q6IFdlbm4gaWNoIGRpZXNlbiBPbHBwIGVyd2lzY2hlIC4uLlxuIiwKKyAgIkRlciBaYXViZXJlciB6YXViZXJ0IGVpbiBLYW5pbmNoZW4gYXVzIHNlaW5lbSBIdXQuXG4iCisgIH0pICk7CisKKy8qIERhcyBzZWxiZSBmdWVyIFNwcnVlY2hlIGRpZSB3YWVocmVuZCBlaW5lcyBLYW1wZmVzIGtvbW1lbiBzb2xsZW4gICAgKi8KKworICBTZXRBdHRhY2tDaGF0cygyMCwgKHsKKyAgIkRlciBaYXViZXJlciBtYWNodDogQnVoIVxuIiwKKyAgIkRlciBaYXViZXJlciB3aXJmdCBtaXQgd2Vpc3NlbiBNYWV1c2VuIG5hY2ggRGlyLlxuIiwKKyAgIkRlciBaYXViZXJlciBzYWd0OiBEYXMgd2FyIGVpbiBncm9zc2VyIEZlaGxlciFcbiIsCisgICJEZXIgWmF1YmVyZXIgYmVpc3N0IERpY2ggaW4gZGVuIEFybS5cbiIsCisgICJEZXIgWmF1YmVyZXIgemF1YmVydCBncnVlbmUgUHVua3RlIGF1ZiBkZWluZSBXYW5nZS5cbiIsCisgICJEZXIgWmF1YmVyZXIgdmVyd2FuZGVsdCBzaWNoIGluIGVpbmUgS3JvZXRlLlxuIiwKKyAgIkRlciBaYXViZXJlciB2ZXJzY2h3aW5kZXQgdW5kIHRhdWNodCBoaW50ZXIgRGlyIHdpZWRlciBhdWYuXG4iCisgIH0pICk7CisKKy8qIFdlbm4gZXIgc3RpcmJ0IHNvbGwgZWluZSBiZXNvbmRlcmUgTWVsZHVuZyBlcnNjaGVpbmVuLiAqLworICBTZXRQcm9wKCBQX0RJRV9NU0csICIgbG9lc3Qgc2ljaCBpbiBMdWZ0IGF1Zi5cbiIgKTsKKy8qIERhbm4gc29sbCBuYXR1ZXJsaWNoIGF1Y2gga2VpbiBMZWljaG5hbSBydW1saWVnZW4gKi8KKyAgU2V0UHJvcCggUF9OT0NPUlBTRSwgMSApOworIAorLyogTnVuIHdvbGxlbiB3aXIgZGVuIFphdWJlcmVyIG5vY2ggYXVmIGVpbiBwYWFyIEZyYWdlbiBhbnR3b3J0ZW4gbGFzc2VuICAgICovCisvKiBBZGRJbmZvKERFRkFVTFRfSU5GTywpIHNldHp0IGRpZSBBbnR3b3J0IGF1ZiBhbGxlIEZyYWdlbiwgd28gZGVyICAgICAgICAgKi8KKy8qIFNjaGx1ZXNzZWwgbmljaHQgYmVrYW5udCBpc3QuIERlciBOYW1lIGRlcyBaYXViZXJlcnMgd2lyZCBpbW1lciB2b3IgZGVuICAqLworLyogU3RyaW5nIGdlc2V0enQuIChTZXRQcm9wKFBfREVGQVVMVF9JTkZPLCBpc3Qgb2Jzb2xldCB1bmQgc29sbHRlIG5pY2h0ICAgICovCisvKiBtZWhyIGFuZ2V3ZW5kZXQgd2VyZGVuLikgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8gCisKKyAgQWRkSW5mbyhERUZBVUxUX0lORk8sInNhZ3Q6IEtlaW5lIEFobnVuZywgdm9uIHdhcyBEdSByZWRlc3QuXG4iLDAsCisgICAgICAgICAgICAgICAgICAgICAgICJzYWd0IHp1IEBXRU06IEtlaW5lIEFobnVuZywgdm9uIHdhcyBEdSByZWRlc3QuXG4iKTsKKworLyogRGllIGJla2FubnRlbiBTY2hsdWVzc2VsIHdlcmRlbiBtaXQgQWRkSW5mbyBkYXp1Z2VmdWVndCwgZGFzIGVyc3RlICAgICAgICovCisvKiBBcmd1bWVudCBpc3QgZGFzIFdvcnQgKG9kZXIgZGllIExpc3RlIHZvbiBXb2VydGVybiksIHp1IGRlciBkZXIgWmF1YmVyZXIgKi8KKy8qIGJlZnJhZ3Qgd2VyZGVuIGthbm4sIGRhcyB6d2VpdGUgQXJndW1lbnQgaXN0IGRpZSBlbnRzcHJlY2hlbmRlIEFudHdvcnQuICAqLworLyogaXN0IGRhcyBkcml0dGUgQXJndW1lbnQgZ2VzZXR6dCwgc28gd2lyZCBkaWUgQW50d29ydCBhdXRvbWF0aXNjaCB1bWdlLSAgICovCisvKiBicm9jaGVuIHVuZCBiZWtvbW10IGRlbiBUZXh0IGRlcyBBcmd1bWVudHMgdm9yIGplZGUgWmVpbGUgZ2VzdGVsbHQuICAgICAgKi8KKy8qIERhcyB2aWVydGUsIGViZW5mYWxscyBvcHRpb25hbGUsIEFyZ3VtZW50IHdpcmQgc29mZXJuIGdlc2V0enQgYW4gZGllICAgICAqLworLyogdW1zdGVoZW5kZW4gUGVyc29uZW4gYXVzZ2VnZWJlbiwgZGFkdXJjaCBsYWVzc3Qgc2ljaCBlaW4gRmx1ZXN0ZXJuIG9kZXIgICovCisvKiBlaW5lIHNwaWVsZXJhYmhhZW5naWdlIEFudHdvcnQgcmVhbGlzaWVyZW4uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKworICBBZGRJbmZvKCJrYW5pbmNoZW4iLAorICAic2FndDogRGllIGhvbCBpY2ggaW1tZXIgYXVzIG1laW5lbSBIdXQuXG4iKTsKKyAgQWRkSW5mbygiemF1YmVyZWkiLAorICAic2FndDogSWNoIGJpbiBlaW4gTWVpc3RlciBkZXIgWmF1YmVyZWkuXG4iKTsKKyAgQWRkSW5mbygoeyJtYXVzIiwgIm1hZXVzZSJ9KSwKKyAgInNhZ3Q6IE1hZXVzZSBzaW5kIG1laW5lIExpZWJsaW5nc3RpZXJlLlxuIik7IAorICAKKyAgQWRkSW5mbyggKHsidGllciIsInRpZXJlIn0pLCAKKyAgICAgICAgICAiT2gsIGhhdXB0c2FlY2hsaWNoIGJlc2NoYWVmdGlnZSBpY2ggbWljaCBtaXQgS2FuaW5jaGVuIHVuZCBNYWV1c2VuLiIsCisgICAgICAgICAgImZsdWVzdGVydCBEaXIgenU6ICIsCisgICAgICAgICAgImZsdWVzdGVydCBtaXQgQFdFTS5cbiIpOworCisvKiBOb3JtYWxlcndlaWxlIG5laG1lbiBNb25zdGVyIGFsbGVzIHdhcyBtYW4gaWhuZW4gZ2lidCwgb2huZSBlaW5lbiBUb24gKi8KKy8qIHp1IHNhZ2VuLiBXaWxsIG1hbiBkb3J0IGVpbiBhbmRlcmVzIFZlcmhhbHRlbiwgc28gdHV0IG1hbiBkYXMgc286ICAgICAqLworLyogTW9lZ2xpY2ggc2luZCBhdWNoIFJFSkVDVF9HSVZFICg9IHp1cnVlY2tnZWJlbikgUkVKRUNUX0RST1AgKD1mYWxsZW4gICovCisvKiBsYXNzZW4uICovCisgIFNldFByb3AoIFBfUkVKRUNULCAoeyBSRUpFQ1RfS0VFUCwgIkRlciBaYXViZXJlciBzYWd0OiBEYW5rZXNjaG9lbi5cbiIgfSkgKTsKKworLyogRGVyIFphdWJlcmVyIGthbm4gYXVjaCB6dXNhZXR6bGljaGUgVmVyYmVuIGhhYmVuLCBkaWUgbnVyIGVyIHNlbGJlcgorICogYmVudXR6ZW4ga2Fubiwga2VpbiBhbmRlcmVzIExpdmluZy4gRGllc2Uga29lbm5lbiBtaXQgYWRkX2FjdGlvbigpIGltCisgKiBjcmVhdGUgZWluZXMgTlBDIGFuZ2VtZWxkZXQgd2VyZGVuICh1bmQgaWRSIE5VUiBpbiBkaWVzZXIgRnVua3Rpb24gdW5kIE5VUgorICogaW4gTGViZXdlc2VuLCBuaWNodCBpbiBzb25zdGlnZW4gT2JqZWt0ZW4hICovCisgIGFkZF9hY3Rpb24oIm5hc2Vib2hyZW4iLCAiYm9ocmVpbm5hc2UiKTsKKworLyogVmVyYmVuLCBkaWUgU3BpZWxlciBpbiBHZWdlbndhcnQgZGVzIFphdWJlcmVycyBrb2VubmVuIHNvbGxlbiwgd2VyZGVuICAgICAqLworLyogbWl0IEFkZENtZCBhbmdlbWVsZGV0LiAqLworfQorCitpbnQgbmFzZWJvaHJlbiggc3RyaW5nIHN0ciApIC8vIHN0ciBpc3QgZGFzLCB3YXMgaGludGVyIGRlbSB2ZXJiIGVpbmdlZ2ViZW4gd3VyZGUuCit7CisgICBzYXkoICJEZXIgWmF1YmVyZXIgYm9ocnQgbWl0IGRlbSBTdGFiIGluIHNlaW5lciBOYXNlLlxuIiApOworICAgcmV0dXJuIDE7IC8vIFZlcmIgd2FyIGVyZm9sZ3JlaWNoLgorfQorCmRpZmYgLS1naXQgYS9kb2MvYmVpc3BpZWxlL21pc2MvYnNwcmF1bTEuYyBiL2RvYy9iZWlzcGllbGUvbWlzYy9ic3ByYXVtMS5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjM0ODMwOTUKLS0tIC9kZXYvbnVsbAorKysgYi9kb2MvYmVpc3BpZWxlL21pc2MvYnNwcmF1bTEuYwpAQCAtMCwwICsxLDc4IEBACisvKiAvZG9jL2JlaXNwaWVsZS9taXNjL2JzcHJhdW0xLmMgdm9uIFJ1bWF0YSAqLworCisvLyBEaWVzZSBQcmFnbWFzIHNvcmdlbiBkYWZ1ZXIsIGRhc3MgZGVyIERyaXZlciBkYXJhdWYgYWNodGV0LCBkYXNzIGJlaQorLy8gRnVua3Rpb25zYXJndW1lbnRlbiwgLVJ1ZWNrZ2FiZXdlcnRlbiB1bmQgdGVpbHdlaXNlIGJlaSBadXdlaXN1bmcgdm9uCisvLyBXZXJ0ZW4gYW4gVmFyaWFibGVuIGRlciByaWNodGlnZSBEYXRlbnR5cCB2ZXJ3ZW5kZXQgd2lyZCAoei5iLiBrZWluIHN0cmluZworLy8gYW5zdGVsbGUgZWluZXMgaW50IHZlcndlbmRldCB3aXJkKS4gU29sbHRlIGluIGtlaW5lbSBPYmpla3QgZmVobGVuLgorI3ByYWdtYSBzdHJvbmdfdHlwZXMsIHNhdmVfdHlwZXMsIHJ0dF9jaGVja3MKKworaW5oZXJpdCAiL3N0ZC9yb29tIjsKKworI2luY2x1ZGUgPHByb3BlcnRpZXMuaD4KKyNpbmNsdWRlIDxsYW5ndWFnZS5oPgorCitwcm90ZWN0ZWQgdm9pZCBjcmVhdGUoKQoreworICAgIDo6Y3JlYXRlKCk7CisKKyAgICBTZXRQcm9wKCBQX0lOVF9TSE9SVCwgIkVpbiBrbGVpbmVzIFNjaHJlaWJ6aW1tZXIiICk7CisgICAgU2V0UHJvcCggUF9JTlRfTE9ORywKKyAgICAgICAgIkR1IHN0ZWhzdCBpbiBlaW5lbSBrbGVpbmVuIFNjaHJlaWJ6aW1tZXIuXG4iCisgICAgICAgICAiRXMgZ2Vob2VydGUgd29obCBpcmdlbmR3YW5uIGVpbm1hbCBlaW5lbSBNYWdpZXIsIGFiZXIgbnVuXG4iCisgICAgICAgICAiaXN0IGRpZXNlciBSYXVtIHZlcndhaXN0IHVuZCByb3R0ZXQgdm9yIHNpY2ggaGluLlxuIgorICAgICAgICAgIkVpbiBncm9zc2VyIFNjaHJlaWJ0aXNjaCBpbiBkZXIgTWl0dGUgZGVzIFJhdW1lcyBzY2hlaW50XG4iCisgICAgICAgICAibm9jaCBlaW5pZ2VybWFzc2VuIGd1dCBlcmhhbHRlbiB6dSBzZWluLiBEdXJjaCBkaWUgVHVlclxuIgorICAgICAgICAgImltIE5vcmRlbiBmYWVsbHQgZXR3YXMgTGljaHQgaGluZWluLlxuIgorICAgICk7CisgICAgU2V0UHJvcCggUF9MSUdIVCwgMSApOworICAgIFNldFByb3AoIFBfSU5ET09SUywgMSApOworCisgICAgQWRkRGV0YWlsKCAoeyAic2NocmVpYnRpc2NoIiwgInRpc2NoIiB9KSwKKyAgICAgICAgIkF1ZiBkZW0gVGlzY2ggbGllZ3QgZWluZSBkaWNrZSBTdGF1YnNjaGljaHQuXG4iCisgICAgICAgICJFaW5lIFNjaHVibGFkZSBmaW5kZXN0IER1IGViZW5mYWxscy5cbiIKKyAgICApOworICAgIEFkZERldGFpbCggKHsgInN0YXViIiwgInN0YXVic2NoaWNodCIsICJzY2hpY2h0IiB9KSwKKyAgICAgICAgIkR1IG1hbHN0IGdlbGFuZ3dlaWx0IGVpbmlnZSBLcmVpc2UgaW4gZGVuIFN0YXViLlxuIgorICAgICk7CisgICAgQWRkRGV0YWlsKCAic2NodWJsYWRlIiwKKyAgICAgICAgIlNvIHNlaHIgRHUgRGljaCBhbnN0cmVuZ3N0OyBEdSBrYW5uc3Qgc2llIG5pY2h0IGJld2VnZW4uXG4iCisgICAgKTsKKyAgICBBZGREZXRhaWwoICJ0dWVyIiAsCisgICAgICAgICJTaWUgc3RlaHQgc2VpdCBKYWhyZW4gb2ZmZW4gdW5kIGlzdCBpbiBkaWVzZXIgTGFnZVxuIgorICAgICAgICAiaG9mZm51bmdzbG9zIGZlc3RnZXJvc3RldC5cbiIKKyAgICApOworCisgICAgQWRkQ21kKCAoeyAic2NobGllc3NlIiwgIm9lZmZuZSIsICJiZXdlZ2UiLCAic2NobGllc3MiLCAiYmV3ZWciIH0pLCAKKyAgICAgICAgICAgICJiZXdlZ19ldHdhcyIgKTsKKyAgICBBZGRFeGl0KCAibm9yZGVuIiwgInBsYXllcnMvcnVtYXRhL3dvcmtyb29tIiApOworfQorCitwdWJsaWMgaW50IGJld2VnX2V0d2FzKCBzdHJpbmcgc3RyICkKK3sKKyAgICBub3RpZnlfZmFpbCggIldhcyB3aWxsc3QgRHUgZGVubiBiZXdlZ2VuID8iICk7CisgICAgaWYoIHN0ciA9PSAidHVlciIgKQorICAgIHsKKyAgICAgICAgd3JpdGUoICJEaWUgVHVlciBpc3QgaG9mZm51bmdzbG9zIGZlc3RnZXJvc3RldC5cbiIgKTsKKyAgICAgICAgcmV0dXJuIDE7CisgICAgfQorICAgIGlmICggc3RyID09ICJsYWRlIiB8fCBzdHIgPT0gInNjaHVibGFkZSIgKQorICAgIHsKKyAgICAgICAgd3JpdGUoICJEaWUgU2NodWJsYWRlIGtsZW1tdCBlaW5mYWNoIG51ci5cbiIgKTsKKyAgICAgICAgcmV0dXJuIDE7CisgICAgfQorICAgIGlmICggcXVlcnlfdmVyYigpID09ICJiZXdlZ2UiICYmCisgICAgICAgICggc3RyID09ICJ0aXNjaCIgfHwgc3RyID09ICJzY2hyZWlidGlzY2giICkgKQorICAgIHsKKyAgICAgICAgdGVsbF9vYmplY3QodGhpc19wbGF5ZXIoKSwKKyAgICAgICAgICAgICJEZXIgVGlzY2ggc2NoZWludCBhbSBCb2RlbiBmZXN0Z2VzY2hyYXVidCB6dSBzZWluLlxuIgorICAgICAgICApOworICAgICAgICB0ZWxsX3Jvb20odGhpc19vYmplY3QoKSwKKyAgICAgICAgICAgIHRoaXNfcGxheWVyKCktPm5hbWUoV0VSLDIpKyIgemVycnQgYW0gU2NocmVpYnRpc2NoLlxuIgorICAgICAgICApOworICAgICAgICByZXR1cm4gMTsKKyAgICB9CisgLy8gb2ZmZW5iYXIgcGFzc3RlIG5peCwgS29tbWFuZG8gbmljaHQgZXJmb2xncmVpY2ggYWJnZWFyYmVpdGV0LiBHZ2YuIHdlaXRlcmUKKyAvLyB2ZXJzdWNoZW4gdW5kL29kZXIgZGllIG5vdGlmeV9mYWlsLU1lbGR1bmcgYXVzZ2ViZW4uCisgICAgcmV0dXJuIDA7Cit9CisKZGlmZiAtLWdpdCBhL2RvYy9iZWlzcGllbGUvbWlzYy9ic3BydWVzdDEuYyBiL2RvYy9iZWlzcGllbGUvbWlzYy9ic3BydWVzdDEuYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4xMGUzYjBlCi0tLSAvZGV2L251bGwKKysrIGIvZG9jL2JlaXNwaWVsZS9taXNjL2JzcHJ1ZXN0MS5jCkBAIC0wLDAgKzEsMzggQEAKKy8qCisqKiBFaW5lIEJlaXNwaWVscnVlc3R1bmcKKyoqICh2b24gQm9pbmcpCisqLworCisvLyBEaWVzZSBQcmFnbWFzIHNvcmdlbiBkYWZ1ZXIsIGRhc3MgZGVyIERyaXZlciBkYXJhdWYgYWNodGV0LCBkYXNzIGJlaQorLy8gRnVua3Rpb25zYXJndW1lbnRlbiwgLVJ1ZWNrZ2FiZXdlcnRlbiB1bmQgdGVpbHdlaXNlIGJlaSBadXdlaXN1bmcgdm9uCisvLyBXZXJ0ZW4gYW4gVmFyaWFibGVuIGRlciByaWNodGlnZSBEYXRlbnR5cCB2ZXJ3ZW5kZXQgd2lyZCAoei5iLiBrZWluIHN0cmluZworLy8gYW5zdGVsbGUgZWluZXMgaW50IHZlcndlbmRldCB3aXJkKS4gU29sbHRlIGluIGtlaW5lbSBPYmpla3QgZmVobGVuLgorI3ByYWdtYSBzdHJvbmdfdHlwZXMsIHNhdmVfdHlwZXMsIHJ0dF9jaGVja3MKKworaW5oZXJpdCAiL3N0ZC9hcm1vdXIiOworCisjaW5jbHVkZSA8cHJvcGVydGllcy5oPgorI2luY2x1ZGUgPGNvbWJhdC5oPgorI2luY2x1ZGUgPGxhbmd1YWdlLmg+CisKK3Byb3RlY3RlZCB2b2lkIGNyZWF0ZSgpCit7CisgIDo6Y3JlYXRlKCk7ICAgLyogV0lDSFRJRyEhISAqLworCisvKiBTdGFuZGFyZGtvbmZpZ3VyYXRpb24sIGdlbmF1ZXJlcyBzaWVoZSAvZG9jL2JlaXNwaWVsZS9ic3B3YWZmZTEuYyAgICAqLworICBTZXRQcm9wKFBfU0hPUlQsICJFaW4gZ3JhdWVyIFVtaGFuZyIpOworICBTZXRQcm9wKFBfTE9ORywgIkVzIGlzdCBlaW4gbGFuZ2VyIGdyYXVlciBVbWhhbmcgYXVzIGVpbmVtIGZlaW5lbiBNYXRlcmlhbC5cbiIpOworICBTZXRQcm9wKFBfTkFNRSwgIlVtaGFuZyIpOworICBTZXRQcm9wKFBfR0VOREVSLCBNQUxFKTsKKyAgQWRkSWQoInVtaGFuZyIpOworICBTZXRQcm9wKFBfV0VJR0hULCAyNTApOworICBTZXRQcm9wKFBfVkFMVUUsIDIwMCk7CisKKy8qIFp1ciBXYWZmZSBmZWhsdCBuaWNodCBtZWhyIHZpZWwsIG51ciBub2NoIGRpZSBSdWVzdHVuZ3NrbGFzc2UgKEFDKSAgICAqLworLyogc2V0emVuIHVuZCBlaW5lbiBSdWVzdHVuZ3N0eXAgc2V0emVuLiBEaWUgVHlwZW4gc2luZCBpbiBzeXMvY29tYmF0LmggICovCisvKiBkZWZpbmllcnQuIFJpY2h0bGluaWVuIHp1IFJ1ZXN0dW5nc2tsYXNzZW4gZGVyIHZlcnNjaGllZGVuZW4gVHlwZW4gICAgKi8KKy8qIHN0ZWhlbiBtb21lbnRhbiBpbiAvcGxheWVycy9ib2luZy93YWZmZW4uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworCisgIFNldFByb3AoUF9BUk1PVVJfVFlQRSwgQVRfQ0xPQUspOworICBTZXRQcm9wKFBfQUMsIDgpOworfQpkaWZmIC0tZ2l0IGEvZG9jL2JlaXNwaWVsZS9taXNjL2JzcHRyYW5zcG9ydGVyMS5jIGIvZG9jL2JlaXNwaWVsZS9taXNjL2JzcHRyYW5zcG9ydGVyMS5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjNlMjYwMjAKLS0tIC9kZXYvbnVsbAorKysgYi9kb2MvYmVpc3BpZWxlL21pc2MvYnNwdHJhbnNwb3J0ZXIxLmMKQEAgLTAsMCArMSwxMzIgQEAKK2luaGVyaXQgInN0ZC90cmFuc3BvcnQiOworCisvKiB3b2xrZS5jIEVpbiBCZWlzcGllbCB6dXIgUHJvZ3JhbW1pZXJ1bmcgZWluZXMgVHJhbnNwb3J0ZXJzICovCisvKiB2b24gUnVtYXRhIChtaXQga2xlaW5lbiBCdWdmaXhlcyB2b24gV2FyZ29uIDspICovCisKKyNpbmNsdWRlIDxwcm9wZXJ0aWVzLmg+CisjaW5jbHVkZSA8bGFuZ3VhZ2UuaD4KKworY3JlYXRlKCkKK3sKKyAgOjpjcmVhdGUoKTsKKyAgU2V0UHJvcCggUF9OQU1FLCAiV29lbGtjaGVuIiApOworICBBZGRJZCggKHsgIndvbGtlIiwgIndvZWxrY2hlbiIgfSkgKTsKKyAgU2V0UHJvcCggUF9HRU5ERVIsIE5FVVRFUiApOworICBTZXRQcm9wKCBQX0lOVF9TSE9SVCwgIkF1ZiBlaW5lciBrbGVpbmVuIFdvbGtlIiApOworICBTZXRQcm9wKCBQX0lOVF9MT05HLAorCSAgIkR1IHNpdHp0IGF1ZiBlaW5lciBrbGVpbmVuIFdvbGtlLCBkaWUgendpc2NoZW4gSm9mcyB1bmQgUnVtYXRhc1xuIgorCSAgKwkiQXJiZWl0c3ppbW1lciBoaW4tIHVuZCBoZXJwZW5kZWx0LiBXZW5uIHNpZSBuaWVkcmlnIGZsaWVndCwga2FubnN0XG4iCisJICArCSJEdSBiZXN0aW1tdCB2b24gaWhyIGhlcnVudGVyc3RlaWdlbi5cbiIKKwkgICk7CisgIFNldFByb3AoIFBfU0hPUlQsICJFaW5lIGtsZWluZSBXb2xrZSIgKTsKKyAgU2V0UHJvcCggUF9MT05HLAorCSAgIkRpZXNlIHN1ZXNzZSBrbGVpbmUgQ3VtdWx1c3dvbGtlIHNjaHdlYnQgendpc2NoZW4gSm9mcyB1bmQgUnVtYXRhc1xuIgorCSAgKwkiQXJiZWl0c3ppbW1lciBoaW4gdW5kIGhlci4gVmllbGxlaWNodCBrYW5uc3QgRHUgYXVmIHNpZSBkcmF1ZnN0ZWlnZW4uXG4iCisJICApOworICBTZXRQcm9wKFBfTElHSFQsIDEgKTsKKyAgU2V0UHJvcChQX1RSQU5TUEFSRU5ULDEpOworICAvLyBNYW4gc29sbCBhdWYoaW4pIGRpZSBXb2xrZSB1bmQgdm9uIGlociBoZXJ1bnRlciBzY2hhdWVuIGtvZW5uZW4uCisgICAgCisgIC8qKiogTWVsZHVuZ2VuLCBkaWUgVHJhbnNwb3J0ZXIgZ2ViZW4ga29lbm5lbiAqKiovCisgIAorICBTZXRQcm9wKCBQX0RFUEFSVE1TRywgKHsKKyAgICAiRGllIFdvbGtlIHN0ZWlndCBpbiBkaWUgTHVmdC5cbiIsIAorICAgICJEaWUgV29sa2UgZmxpZWd0IGRhdm9uLlxuIgorICB9KSApOworICAvLyBEaWUgZXJzdGUgTWVsZHVuZyBpc3QgZnVlciBMZXV0ZSBhdWYgZGVyIFdvbGtlLgorICAvLyBEaWUgendlaXRlIGZ1ZXIgTGV1dGUgaW4gZGVtIFJhdW0sIGluIGRlbSBkaWUgV29sa2UgYW5rb21tdC4KKyAgICAgIAorICBTZXRQcm9wKCBQX0FSUklWRU1TRywgKHsKKyAgICAiRGllIFdvbGtlIG5hZWhlcnQgc2ljaCBkZW0gQm9kZW4gdm9uIEBAUXVlcnlBcnJpdmVkQEAuXG4iLAorICAgICJFaW5lIGtsZWluZSBXb2xrZSBzY2h3ZWJ0IGhlcmFiLlxuIgorICB9KSApOworICAvLyBEaWUgZXJzdGUgTWVsZHVuZyBpc3QgZnVlciBMZXV0ZSBhdWYgZGVyIFdvbGtlLgorICAvLyBEaWUgendlaXRlIGZ1ZXIgTGV1dGUgaW4gZGVtIFJhdW0sIGF1cyBkZW0gZGllIFdvbGtlIGFicmVpc3QuCisgICAgCisgIFNldFByb3AoIFBfRU5URVJNU0csICh7CisgICAgInN0ZWlndCBhdWYgZGllIFdvbGtlIiwKKyAgICAia29tbXQgYXVmIGRpZSBXb2xrZSIKKyAgfSkgKTsKKyAgLy8gRGllIGVyc3RlIE1lbGR1bmcgaXN0IGZ1ZXIgZGVuIFJhdW0sIGF1cyBkZW0gZGVyIFNwaWVsZXIga29tbXQuCisgIC8vICg9UmF1bSkuIERpZSB6d2VpdGUgTWVsZHVuZyBpc3QgZnVlciBTcGllbGVyIGluIGRlbSBSYXVtLCBpbgorICAvLyBkZW4gZGVyIFNwaWVsZXIgZ2VodCAoPVRyYW5zcG9ydGVyKS4KKwkKKyAgU2V0UHJvcCggUF9MRUFWRU1TRywgKHsKKyAgICAic3RlaWd0IHZvbiBkZXIgV29sa2UiLAorICAgICJzdGVpZ3Qgdm9uIGRlciBXb2xrZSIKKyAgfSkgKTsKKyAgLy8gRGllIGVyc3RlIE1lbGR1bmcgaXN0IGZ1ZXIgZGVuIFJhdW0sIGF1cyBkZW0gZGVyIFNwaWVsZXIga29tbXQuCisgIC8vICg9VHJhbnNwb3J0ZXIpLiBEaWUgendlaXRlIE1lbGR1bmcgaXN0IGZ1ZXIgU3BpZWxlciBpbiBkZW0gUmF1bSwKKyAgLy8gaW4gZGVuIGRlciBTcGllbGVyIGdlaHQgKD1SYXVtKS4KKyAgICAgIAorICBTZXRQcm9wKCBQX0xFQVZFRkFJTCwgIkRpZSBXb2xrZSBzY2h3ZWJ0IHZpZWwgenUgaG9jaCIgKTsKKyAgLy8gTWVsZHVuZywgZGllIGtvbW10LCB3ZW5uIGVpbiBTcGllbGVyIGRlbiBUcmFuc3BvcnRlciB2ZXJsYXNzZW4KKyAgLy8gd2lsbCwgYWJlciBkaWVzZXIgYW4ga2VpbmVtIFJhdW0gYW5nZWxlZ3QgaGF0LgorICAvLyBJc3QgZGVyIFBhcmFtZXRlciBlaW4gU3RyaW5nIChzbyB3aWUgaGllciksIHNvIGJla29tbXQgbnVyCisgIC8vIGRlciBiZXRyZWZmZW5kZSBTcGllbGVyIGRpZSBNZWxkdW5nLCB3ZW5uIHNpZSBlaW4gQXJyYXkgYXVzCisgIC8vIDIgRWxlbWVudGVuIGlzdCwgYmVrb21tdCBkZXIgU3BpZWxlciBkaWUgZXJzdGUgdW5kIGFsbGUKKyAgLy8gYW5kZXJlbiBTcGllbGVyIGltIFRyYW5zcG9ydGVyIGRpZSB6d2VpdGUgKG1pdCBkZW0gTmFtZW4KKyAgLy8gZGVzIFNwaWVsZXJzIGRhdm9yKS4KKyAgLy8gTW9lZ2xpY2ggd2FlcmUgYWxzbyBhdWNoOgorICAvKgorICAgICBTZXRQcm9wKCBQX0xFQVZFRkFJTCwgKHsKKyAgICAgIkRpZSBXb2xrZSBzY2h3ZWJ0IHZpZWwgenUgaG9jaCB6dW0gSGVydW50ZXJzcHJpbmdlbiIsCisgICAgICJmYWVsbHQgZmFzdCB2b24gZGVyIFdvbGtlIgorICAgICB9KSApOworICAqLworCisgIFNldFByb3AoIFBfRU5URVJGQUlMLCAiRXMgcGFzc2VuIG51ciA1IFBhc3NhZ2llcmUgYXVmIGRpZSBXb2xrZS5cbiIgKTsKKyAgLy8gRGllc2UgTWVsZHVuZyBiZWtvbW10IGRlciBTcGllbGVyLCB3ZW5uIGVyIHZlcnN1Y2h0LCBlaW5lbgorICAvLyB2b2xsZW4gVHJhbnNwb3J0ZXIgenUgYmV0cmV0ZW4uIEhpZXIgaXN0IG51ciBlaW5lIE1lbGR1bmcKKyAgLy8gKGFuIGRlbiBTcGllbGVyKSB2b3JnZXNlaGVuLgorCisgIFNldFByb3AoIFBfTUFYX1BBU1NFTkdFUlMsIDUgKTsKKyAgLy8gTWF4aW1hbGUgQW56YWhsIGRlciBTcGllbGVyLCBkaWUgc2ljaCBpbSBUcmFuc3BvcnRlciBiZWZpbmRlbgorICAvLyBrb2VubmVuLiBGdWVyIEdlZ2Vuc3RhZW5kZSBnaWJ0IGVzIGtlaW5lIEJlc2NocmFlbmt1bmcuCisKKyAgLyogVmVyYmVuICovCisgIEFkZENtZCggKHsgInN0ZWlnIiwgInN0ZWlnZSIsICJzcHJpbmciLCAic3ByaW5nZSIgfSksICJzdGVpZ2UiICk7CisKKyAgLyogS3VycyAqLworICBBZGRSb3V0ZSggInBsYXllcnMvcnVtYXRhL3dvcmtyb29tIiwgMzAsIDIwLCAiUnVtYXRhcyBBcmJlaXRzemltbWVyIiApOworICAvLyBIaWVyIHdpcmQgZGVyIFJhdW0gL3BsYXllcnMvcnVtYXRhL3dvcmtyb29tIGFscyBBbmxlZ2VwbGF0egorICAvLyBpbiBkZW4gS3VycyBlaW5nZWZ1ZWd0LiBEZXIgVHJhbnNwb3J0ZXIgdmVyd2VpbHQgMzBzZWsgaW4gZGllc2VtCisgIC8vIFJhdW0gdW5kIGZhZWh0IGRhbm4gMjBzZWsgbGFuZywgYmlzIGVyIGRlbiBuYWVjaHRlbiBQdW5rdAorICAvLyBlcnJlaWNodC4gRGFuYWNoIGthbm4gbWFuIG5vY2ggZGVuIENvZGUgYW5nZWJlbiwgZGVyIGJlaQorICAvLyBRdWVyeUFycml2ZWQgenVydWVja2dlZ2ViZW4gd2lyZCwgc2V0emVuLiBXaXJkIGtlaW4gQ29kZQorICAvLyBnZXNldHp0LCB3byB3aXJkIGRvcnQgZWluIExlZXJzdHJpbmcgenVydWVja2dlZ2ViZW4uIDAgd2lyZAorICAvLyBkYW5uIHp1cnVlY2tnZWdlYmVuLCB3ZW5uIGRlciBUcmFuc3BvcnRlciBhbiBrZWluZW0gUmF1bSBhbmdlbGVndAorICAvLyBoYXQuCisKKyAgQWRkTXNnKCAiRGllIFdvbGtlIHRyZWlidCBudW4gaW0gV2luZCBSaWNodHVuZyBKb2ZzIEFyYmVpdHN6aW1tZXIuXG4iLCAzMCApOworICAvLyBIaWVyIHdpcmQgZWluZSBNZWxkdW5nIGF1c2dlZ2ViZW4sIHVuZCBkZXIgVHJhbnNwb3J0ZXIgcmVpc3QgMzBzZWsgbGFuZworICAvLyB3ZWl0ZXIuCisKKyAgQWRkTXNnKCAiRGllIFdvbGtlIGJlZ2lubnQgenUgc2lua2VuLlxuIiwgMTAgKTsKKyAgQWRkUm91dGUoICJwbGF5ZXJzL2pvZi93b3Jrcm9vbSIsIDMwLCAyMCwgIkpvZnMgQXJiZWl0c3ppbW1lciIgKTsKKyAgQWRkTXNnKCAiRGllIFdvbGtlIHRyZWlidCBudW4gaW0gV2luZCBSaWNodHVuZyBSdW1hdGFzIEFyYmlldHN6aW1tZXIuXG4iLCAzMCApOworICBBZGRNc2coICJEaWUgV29sa2UgYmVnaW5udCB6dSBzaW5rZW4uXG4iLCAxMCApOworICAvLyBOYWNoIGRlbSBMZXR6dGVuIEhhbHRlcHVua3Qgd2lyZCBkZXIgS3VycyB3aWVkZXIgdm9uIHZvcm4KKyAgLy8gYmVmYWhyZW4uCisgCQorICBTdGFydCgpOworICAvLyBMYXNzZSBkZW4gVHJhbnNwb3J0ZXIgYW0gZXJzdGVuIGRpZXNlciBIYWx0ZXB1bmt0ZSBzdGFydGVuLgorfQorCitzdGVpZ2Uoc3RyKQoreworICBzdHJpbmcgYXJnLCBhcmcyOworICAKKyAgaWYgKHNzY2FuZiggc3RyLCAiYXVmICVzIiwgYXJnICkgPiAwICYmIGlkKG9sZF9leHBsb2RlKGFyZywiICIpWzBdKSkKKyAgICByZXR1cm4gRW50ZXIoKTsKKyAgLy8gV2VubiBzaWNoZXIgaXN0LCBkYXNzIGRlciBTcGllbGVyIGRpZSBXb2xrZSBCRXN0ZWlnZW4gd2lsbCwKKyAgLy8ga2FubiBtYW4gbWl0IHJldHVybiBFbnRlcigpIGFsbGUgd2VpdGVyZW4gVGVzdHMgZHVyY2hmdWVocmVuLgorCisgIGlmIChzc2NhbmYoIHN0ciwgInZvbiAlcyIsIGFyZyApID4gMCAmJiBpZChvbGRfZXhwbG9kZShhcmcsICIgIilbMF0pKQorICAgIHJldHVybiBMZWF2ZSgpOworICAvLyBEYXMgc2VsYmUgZ2lsdCBmdWVyIGRhcyBBQnN0ZWlnZW4gdW5kIExlYXZlKCkuCisgIC8vIFZlcmJlbiBzb2xsdGVuIG5hY2ggRW50ZXIoKSBvZGVyIExlYXZlKCkga2VpbmUgd2VpdGVyZW4gQmVmZWhsZQorICAvLyBlbnRoYWx0ZW4uCit9CisKKwpkaWZmIC0tZ2l0IGEvZG9jL2JlaXNwaWVsZS9taXNjL2JzcHdhZmZlMS5jIGIvZG9jL2JlaXNwaWVsZS9taXNjL2JzcHdhZmZlMS5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjI1OWFlMmEKLS0tIC9kZXYvbnVsbAorKysgYi9kb2MvYmVpc3BpZWxlL21pc2MvYnNwd2FmZmUxLmMKQEAgLTAsMCArMSw1NiBAQAorLyoKKyoqIEVpbmUgQmVpc3BpZWx3YWZmZQorKiogKHZvbiBCb2luZykKKyovCisKKy8vIERpZXNlIFByYWdtYXMgc29yZ2VuIGRhZnVlciwgZGFzcyBkZXIgRHJpdmVyIGRhcmF1ZiBhY2h0ZXQsIGRhc3MgYmVpCisvLyBGdW5rdGlvbnNhcmd1bWVudGVuLCAtUnVlY2tnYWJld2VydGVuIHVuZCB0ZWlsd2Vpc2UgYmVpIFp1d2Vpc3VuZyB2b24KKy8vIFdlcnRlbiBhbiBWYXJpYWJsZW4gZGVyIHJpY2h0aWdlIERhdGVudHlwIHZlcndlbmRldCB3aXJkICh6LmIuIGtlaW4gc3RyaW5nCisvLyBhbnN0ZWxsZSBlaW5lcyBpbnQgdmVyd2VuZGV0IHdpcmQpLiBTb2xsdGUgaW4ga2VpbmVtIE9iamVrdCBmZWhsZW4uCisjcHJhZ21hIHN0cm9uZ190eXBlcywgc2F2ZV90eXBlcywgcnR0X2NoZWNrcworCitpbmhlcml0ICIvc3RkL3dlYXBvbiI7CisKKyNpbmNsdWRlIDxwcm9wZXJ0aWVzLmg+ICAgICAvKiBEZWZpbml0aW9uIGRlciBQcm9wZXJ0aWVzICovCisjaW5jbHVkZSA8Y29tYmF0Lmg+ICAgICAgICAgLyogRGVmaW5pdGlvbiBkZXIga2FtcGZzcGV6aWZpc2NoZW4gS29uc3RhbnRlbiAqLworI2luY2x1ZGUgPGxhbmd1YWdlLmg+ICAgICAgIC8qIERlZmluaXRpb24gdm9uIE1BTEUsIEZFTUFMRSwgV0VSLCAuLi4gKi8KKworcHJvdGVjdGVkIHZvaWQgY3JlYXRlKCkKK3sKKyAgOjpjcmVhdGUoKTsgICAvKiBXSUNIVElHISEhICovCisKKy8qIEt1cnpiZXNjaHJlaWJ1bmcgZnVlciBEYXJzdGVsbHVuZyBpbiBpbnZlbnRvcmllcyAqLworICBTZXRQcm9wKFBfU0hPUlQsICJFaW4gS251ZXBwZWwiKTsKKworLyogQmVzY2hyZWlidW5nIGRlcyBLbnVlcHBlbHMgKi8KKyAgU2V0UHJvcChQX0xPTkcsIAorICAiRGllc2VyIEtudWVwcGVsIGlzdCB6aWVtbGljaCBub3JtYWwsIGVyIGlzdCBhdXMgZmVzdGVtIEhvbHogZ2VmZXJ0aWd0IHVuZFxuIisKKwkgICJtYW4ga2FubiBpaG4gYWxzIFdhZmZlIGJlbnV0emVuLlxuIik7CisKKy8qIE5hbWUgdW5kIEdlc2NobGVjaHQgc2luZCB3aWNodGlnLCBqZWRlcyBPYmpla3QgYnJhdWNodCBkYXMgKi8KKyAgU2V0UHJvcChQX05BTUUsICJLbnVlcHBlbCIpOworICBTZXRQcm9wKFBfR0VOREVSLCBNQUxFKTsKKworLyogSmVkZXMgT2JqZWt0IGJyYXVjaHQgZWluZSBvZGVyIG1laHJlcmUgSWQncyAqLworICBBZGRJZCgia251ZXBwZWwiKTsKKworLyogV2VydCB1bmQgR2V3aWNodCAqLworICBTZXRQcm9wKFBfVkFMVUUsIDMwMCk7CisgIFNldFByb3AoUF9XRUlHSFQsIDEyNTApOyAgIC8qIGluIEdyYW1tICovCisKKy8qIE51biBkaWUgd2lya2xpY2ggV2FmZmVuc3BlemlmaXNjaGVuIERpbmdlOiAgICAgICAgICAgICAgICAgICAqLworLyogV2FmZmVuLSB1bmQgU2NoYWRlbnNhcnRlbiBzaW5kIGluIC9zeXMvY29tYmF0LmggZGVmaW5pZXJ0ICAgICovCisgIFNldFByb3AoUF9XRUFQT05fVFlQRSwgV1RfQ0xVQik7CisgIFNldFByb3AoUF9EQU1fVFlQRSwgRFRfQkxVREdFT04pOworCisvKiBEaWUgV2FmZmVua2xhc3NlIG11c3MgaW0gQmVyZWljaCB6d2lzY2hlbiAxIHVuZCAyMDAgbGllZ2VuICAgKi8KKyAgU2V0UHJvcChQX1dDLCAxMjUpOworICAKKy8qIEFuemFobCBkZXIgYmVub2V0aWd0ZW4gSGFlbmRlLCB1bSBkaWUgV2FmZmUgenUgenVlY2tlbi4gICAgICAqLworLyogV2FmZmVuIG1pdCBlaW5lciBXQyBncm9lc3NlciAxNTAsIHNvbGx0ZW4gYXVmIGplZGVuIEZhbGwgICAgICovCisvKiBad2VpaGFlbmRlciBzZWluLCBiZWkgU29uZGVyZmFlbGxlbiBiaXR0ZSBhbiBkZW4gRXJ6bWFnaWVyICAgKi8KKy8qIGZ1ZXIgV2FmZmVuIHdlbmRlbi4gV2VubiBuaWNodHMgZ2VzZXR6dCB3aXJkLCBpc3QgZGllIFdhZmZlICAqLworLyogZWluIFp3ZWloYWVuZGVyLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIFNldFByb3AoUF9OUl9IQU5EUywgMSk7Cit9CisKZGlmZiAtLWdpdCBhL2RvYy9iZWlzcGllbGUvbWlzYy9rcmFua2hlaXQuYyBiL2RvYy9iZWlzcGllbGUvbWlzYy9rcmFua2hlaXQuYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5jNTgxNmEzCi0tLSAvZGV2L251bGwKKysrIGIvZG9jL2JlaXNwaWVsZS9taXNjL2tyYW5raGVpdC5jCkBAIC0wLDAgKzEsNjYgQEAKKy8qICBQYXJhY2Vsc3VzOiBFaW5lIEtyYW5raGVpdAorKioKKyoqICAgICAgQmVpc3BpZWwgZnVlciBkaWUgVmVyd2VuZHVuZyB2b24gUF9YX0FUVFJfTU9EIHVuZCBQX1hfSEVBTFRIX01PRAorKioKKyoqICAgICAgRGllc2UgS3JhbmtoZWl0IHNldHp0IGFsbGUgQXR0cmlidXRlIGhlcmFiIHVuZCBlcm5pZWRyaWd0CisqKiAgICAgIHp1c2FldHpsaWNoIFBfTUFYX0hQIHVuZCBQX01BWF9TUCB1bSBqZXcuIDIwICh6dXNhZXR6bGljaCB6dSBkZW4KKyoqICAgICAgQXVzd2lya3VuZ2VuIGRlciBBdHRyaWJ1dHNlbmt1bmdlbikuCisqKiAgICAgIEdlc3RhcnRldCB3aXJkIGRpZSBLcmFua2hlaXQsIGluZGVtIHNpZSBlaW5mYWNoIGluIGRhcyBPcGZlcgorKiogICAgICBiZXdlZ3Qgd2lyZC4KKyoqICAgICAgTWFuIGJlYWNodGUsIGRhc3MgaW0gcmVtb3ZlKCkgZGllIFBfWF8qLVByb3BlcnRpZXMgZWluIGxlZXJlcworKiogICAgICBNYXBwaW5nIHp1Z2V3aWVzZW4gYmVrb21tZW4gdW5kIGtlaW5lIDAuIE51ciBzbyB3ZXJkZW4gZGllCisqKiAgICAgIEtyYW5raGVpdHNmb2xnZW4gcnVlY2tnYWVuZ2lnIGdlbWFjaHQuCisqLworCisvLyBEaWVzZSBQcmFnbWFzIHNvcmdlbiBkYWZ1ZXIsIGRhc3MgZGVyIERyaXZlciBkYXJhdWYgYWNodGV0LCBkYXNzIGJlaQorLy8gRnVua3Rpb25zYXJndW1lbnRlbiwgLVJ1ZWNrZ2FiZXdlcnRlbiB1bmQgdGVpbHdlaXNlIGJlaSBadXdlaXN1bmcgdm9uCisvLyBXZXJ0ZW4gYW4gVmFyaWFibGVuIGRlciByaWNodGlnZSBEYXRlbnR5cCB2ZXJ3ZW5kZXQgd2lyZCAoei5iLiBrZWluIHN0cmluZworLy8gYW5zdGVsbGUgZWluZXMgaW50IHZlcndlbmRldCB3aXJkKS4gU29sbHRlIGluIGtlaW5lbSBPYmpla3QgZmVobGVuLgorI3ByYWdtYSBzdHJvbmdfdHlwZXMsIHNhdmVfdHlwZXMsIHJ0dF9jaGVja3MKKworaW5oZXJpdCAiL3N0ZC90aGluZyI7CisKKyNpbmNsdWRlIDxwcm9wZXJ0aWVzLmg+CisjaW5jbHVkZSA8bW92aW5nLmg+CisjaW5jbHVkZSA8bGFuZ3VhZ2UuaD4KKyNpbmNsdWRlIDxjbGFzcy5oPgorCitwcm90ZWN0ZWQgdm9pZCBjcmVhdGUoKQoreworICAgIDo6Y3JlYXRlKCk7CisKKyAgICAvLyBhdXNuYWhtc3dlaXNlIGRhcmYgZGllc2VzIE9iamVrdCBtYWwga2VpbiBQX1NIT1JUK1BfTE9ORyBoYWJlbi4uLgorICAgIFNldFByb3AoUF9TSE9SVCwwKTsKKyAgICBTZXRQcm9wKFBfTE9ORywgMCk7CisgICAgU2V0UHJvcChQX0lOVklTLCAxKTsgLy8gdW5zaWNodGJhciBtYWNoZW4uCisgICAgU2V0UHJvcChQX05BTUUsIktyYW5raGVpdCIpOworICAgIFNldFByb3AoUF9HRU5ERVIsRkVNQUxFKTsKKyAgICAvLyB3aWNodGlnLCBzb25zdCB3aWVndCBkaWUgS3JhbmtoZWl0IDFrZyAoU3RhbmRhcmRnZXdpY2h0IGZ1ZXIgdGhpbmcpIAorICAgIFNldFByb3AoUF9XRUlHSFQsMCk7CisgICAgU2V0UHJvcChQX1ZBTFVFLDApOworICAgIFNldFByb3AoUF9NQVRFUklBTCxNQVRfTUlTQ19NQUdJQyk7CisgICAgU2V0UHJvcChQX05PRFJPUCwxKTsgLy8gTmljaHQgd2Vnd2VyZmJhci4KKworLy8gLS0tLT4gRGllc2VyIEFic2Nobml0dCBzb3JndCBmdWVyIGZpZXNlIFN0YXRhYnp1ZWdlCisKKyAgICBTZXRQcm9wKFBfWF9IRUFMVEhfTU9ELAorICAgIChbCisgICAgICAgIFBfSFAgOiAtMjAsICAgLy8gTWF4LiBMZWJlbnNwdW5rdGUgdW0gMjAgcnVudGVyCisgICAgICAgIFBfU1AgOiAtMjAgICAgLy8gTWF4LiBLb256ZW50cmF0aW9uc3B1bmt0ZSB1bSAyMCBydW50ZXIKKyAgICBdKSApOworICAgIFNldFByb3AoUF9YX0FUVFJfTU9ELAorICAgIChbCisgICAgICAgIEFfQ09OIDogLTEsICAgLy8gQXVzZGF1ZXIgdW0gMSBydW50ZXIsIHJlZHV6aWVydCBhdWNoIG1heC4gTFAhCisgICAgICAgIEFfREVYIDogLTEsICAgLy8gR2VzY2hpY2tsaWNoa2VpdCB1bSAxIHJ1bnRlcgorICAgICAgICBBX0lOVCA6IC0yLCAgIC8vIEludGVsbGlnZW56IHVtIDIgcnVudGVyLCByZWR1emllcnQgYXVjaCBtYXguIEtQIQorICAgICAgICBBX1NUUiA6IC00LCAgIC8vIFN0YWVya2UgdW0gNCBydW50ZXIKKyAgICBdKSApOworCisvLyA8LS0tLQorCisgICAgQWRkSWQoICh7IlBBUkFcblNJQ0tcbkVYQU1QTEUifSkgKTsKKworICAgIEFkZENsYXNzKENMX0RJU0VBU0UpOyAvLyBEYW1pdCBLbGVyaWtlciBoZWxmZW4ga29lbm5lbi4KKyAgICBTZXRQcm9wKFBfTEVWRUwsMTUpOyAgLy8gQWJlciBuaWNodCBnYW56IHNvIGVpbmZhY2ggenUgZW50ZmVybmVuCit9CisKZGlmZiAtLWdpdCBhL2RvYy9iZWlzcGllbGUvbWlzYy9sZWJlbnNyaW5nLmMgYi9kb2MvYmVpc3BpZWxlL21pc2MvbGViZW5zcmluZy5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmY4MmVhNWUKLS0tIC9kZXYvbnVsbAorKysgYi9kb2MvYmVpc3BpZWxlL21pc2MvbGViZW5zcmluZy5jCkBAIC0wLDAgKzEsNTYgQEAKKy8qIFBhcmFjZWxzdXM6IExlYmVuc3JpbmcKKyoqCisqKiAgICBFaW4gQmVpc3BpZWwgZnVlciBkaWUgQW53ZW5kdW5nIHZvbiBQX01fSEVBTFRIX01PRAorKioKKyoqICAgIFppZWh0IGVpbiBTcGllbGVyIGRpZXNlbiBSaW5nIGFuLCBzbyBlcmhvZWhlbiBzaWNoIHNlaW5lIG1heGltYWxlbgorKiogICAgTGViZW5zcHVua3RlIGRhYmVpIHVtIDEwLCB3YWVocmVuZCBzZWluZSBtYXguIEtvbnplbnRyYXRpb25zcHVua3RlCisqKiAgICB1bSA1IGVybmllZHJpZ3Qgd2VyZGVuLgorKi8KKworLy8gRGllc2UgUHJhZ21hcyBzb3JnZW4gZGFmdWVyLCBkYXNzIGRlciBEcml2ZXIgZGFyYXVmIGFjaHRldCwgZGFzcyBiZWkKKy8vIEZ1bmt0aW9uc2FyZ3VtZW50ZW4sIC1SdWVja2dhYmV3ZXJ0ZW4gdW5kIHRlaWx3ZWlzZSBiZWkgWnV3ZWlzdW5nIHZvbgorLy8gV2VydGVuIGFuIFZhcmlhYmxlbiBkZXIgcmljaHRpZ2UgRGF0ZW50eXAgdmVyd2VuZGV0IHdpcmQgKHouYi4ga2VpbiBzdHJpbmcKKy8vIGFuc3RlbGxlIGVpbmVzIGludCB2ZXJ3ZW5kZXQgd2lyZCkuIFNvbGx0ZSBpbiBrZWluZW0gT2JqZWt0IGZlaGxlbi4KKyNwcmFnbWEgc3Ryb25nX3R5cGVzLCBzYXZlX3R5cGVzLCBydHRfY2hlY2tzCisKK2luaGVyaXQgIi9zdGQvYXJtb3VyIjsKKworI2luY2x1ZGUgPHByb3BlcnRpZXMuaD4KKyNpbmNsdWRlIDxhcm1vdXIuaD4KKyNpbmNsdWRlIDxsYW5ndWFnZS5oPgorI2luY2x1ZGUgPGNvbWJhdC5oPgorCitwcm90ZWN0ZWQgdm9pZCBjcmVhdGUoKQoreworICAgIDo6Y3JlYXRlKCk7CisKKyAgICBTZXRQcm9wKFBfU0hPUlQsIkVpbiBMZWJlbnNyaW5nIik7CisgICAgU2V0UHJvcChQX0xPTkcsCisgICAgICAgICJFaW4ga2xlaW5lciBSaW5nIGF1cyBlaW5lbSBzZWx0c2FtZW4sIGdydWVuZW4gTWF0ZXJpYWwuXG4iKTsKKyAgICBTZXRQcm9wKFBfSU5GTywKKyAgICAgICAgIkRpZXNlciBSaW5nIHVudGVyc3R1ZXR6dCBkaWUgR2VzdW5kaGVpdC5cbiIrCisgICAgICAgICJEYWJlaSBzY2h3YWVjaHQgZXIgbGVpZGVyIGRlbiBHZWlzdC5cbiIpOworICAgIFNldFByb3AoUF9OQU1FLCJMZWJlbnNyaW5nIik7CisgICAgU2V0UHJvcChQX0dFTkRFUixNQUxFKTsKKyAgICBTZXRQcm9wKFBfV0VJR0hULDgwKTsKKyAgICBTZXRQcm9wKFBfVkFMVUUsMjAwMCtyYW5kb20oNTAxKSk7CisgICAgU2V0UHJvcChQX0FSTU9VUl9UWVBFLEFUX1JJTkcpOworICAgIFNldFByb3AoUF9BQywwKTsgLy8ga2VpbmUgU2NodXR6d2lya3VuZyBpbSBLYW1wZgorICAgIFNldFByb3AoUF9NQVRFUklBTCxNQVRfTUlTQ19NQUdJQyk7CisKKy8vIC0tLS0+CisKKyAgICBTZXRQcm9wKFBfTV9IRUFMVEhfTU9ELAorICAgIChbCisgICAgICAgIFBfSFAgOiAxMCwgICAgICAvLyBNYXguIExQIHVtIDEwIGVyaG9laGVuCisgICAgICAgIFBfU1AgOiAtNSAgICAgICAvLyBNYXguIEtQIHVtIDUgdmVycmluZ2VybgorICAgIF0pICk7CisKKy8vIDwtLS0tCisKKyAgICBBZGRJZCggKHsicmluZyIsImxlYmVuc3JpbmcifSkgKTsKKworICAgIEFkZERldGFpbCggIm1hdGVyaWFsIiwKKyAgICAgICAgIkVzIGlzdCBncnVlbi5cbiIpOworfQorCmRpZmYgLS1naXQgYS9kb2MvYmVpc3BpZWxlL21pc2Mvc2VoZXJoYXVzLmMgYi9kb2MvYmVpc3BpZWxlL21pc2Mvc2VoZXJoYXVzLmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZWExMjdlNAotLS0gL2Rldi9udWxsCisrKyBiL2RvYy9iZWlzcGllbGUvbWlzYy9zZWhlcmhhdXMuYwpAQCAtMCwwICsxLDEzNiBAQAorLyoKK0t1cnplIFVlYmVyc2ljaHQgZGVyIFRlcm1pbmk6CisKK1BfSEFVU19FUkxBVUJUICAgICBQcm9wZXJ0aWUsIGRpZSBkYXMgQmF1ZW4gZWluZXMgSGF1c2VzIGltIFJhdW0gZXItCisgICAgICAgICAgICAgICAgICAgbGF1YnQgb2RlciB2ZXJiaWV0ZXQuIERlZmF1bHQgYXVmIDAKKyAgICAgICAgICAgICAgICAgICBTeW50YXg6IHhjYWxsICRoLT5TZXRQcm9wKFBfSEFVU19FUkxBVUJULHgpCisgICAgICAgICAgICAgICAgICAgCitTYXZlKCkgICAgICAgICAgICAgTXVzcyBuYWNoIEFlbmRlcnVuZ2VuIGFtIEhhdXMgYXVmZ2VydWZlbiB3ZXJkZW4uCisgICAgICAgICAgICAgICAgICAgU3ludGF4OiB4Y2FsbCAvZC9zZWhlci9oYWV1c2VyL3RpbGx5aGF1cy0+U2F2ZSgpCisKK09rYXksIGFsc28gZWluIFNlaGVyIG1vZWNodGUsIGRhc3Mgc2VpbiBIYXVzIDEpIHVuc2ljaHRiYXIgaXN0LCAyKSBtaXQKK2VpbmVtIGFuZGVyZW4gS29tbWFuZG8gYmV0cmV0ZW4gd2VyZGVuIHNvbGwgdW5kIDMpIG5pY2h0IGF1ZiBkaWUgaWQgCis8aGF1cz4gaG9lcnQgc29uZGVybiBhdWYgZWluZSBhbmRlcmU6CisKK1p1IDEpOiBHYW56IGVpbmZhY2gsIG1hbiB0aXBwZSAKKworICAgICAgICd4Y2FsbCAvZC9zZWhlci9oYWV1c2VyL3RpbGx5aGF1cy0+U2V0UHJvcChQX1NIT1JULDApJyB1bmQKKyAgICAgICAneGNhbGwgL2Qvc2VoZXIvaGFldXNlci90aWxseWhhdXMtPlNhdmUoKScKKworWnUgMikgdW5kIDMpOiBEYXMgaXN0IG5pY2h0IHNvIGVpbmZhY2gsIHNvbmRlcm4gbXVzcyB1ZWJlciBkZW4gUmF1bSwgaW4gCisgICAgICAgICAgICAgIGRlbSBkYXMgSGF1cyBzdGVodCwgZ2VtYWNodCB3ZXJkZW4uIERlc3dlZ2VuIGZvbGdlbmQgbnVuIAorICAgICAgICAgICAgICBlaW4gQmVpc3BpZWwgenUgRnVua3Rpb25lbiBpbiBzbyBlaW5lbSBSYXVtLgorCisKK0ZvbGdlbmRlIERpbmdlIHN0ZWhlbiBuYXR1ZXJsaWNoIHNjaG9uIGltIFJhdW0sIHNvbnN0IGxpZXNzZSBlciBzaWNoCituaWNodCBsYWRlbiA6LSkgICAgICAgICAgICAgIAorKi8KKworI3ByYWdtYSBzdHJvbmdfdHlwZXMsIHNhdmVfdHlwZXMsIHJ0dF9jaGVja3MKKworaW5oZXJpdCAiL3N0ZC9yb29tIjsKKworI2luY2x1ZGUgPHByb3BlcnRpZXMuaD4KKyNpbmNsdWRlIDxsYW5ndWFnZS5oPgorI2luY2x1ZGUgPG1vdmluZy5oPgorCisvKgorICAgRnVlciBwcm9wZXJ0aWVzIHVuZCBzb25zdGlnZSBEZWZpbml0aW9uZW4genVtIFNlaGVyaGF1cy4KKyovCisjaW5jbHVkZSAiL2Qvc2VoZXIvaGFldXNlci9oYXVzLmgiCisKKy8qCisgICBBdXMgR3J1ZW5kZW4gZGVyIFVlYmVyc2ljaHRsaWNoa2VpdCB6aWVoZW4gdmllbGUgTWFnaWVyIHZvciwgZGVuIEhhdXNrcmFtcworICAgaW4gZWluZSBzZXBhcmF0ZSBGdW5rdGlvbiB6dXNhbW1lbnp1ZmFzc2VuLgorKi8KK3ByaXZhdGUgdm9pZCBoYXVzX2NyZWF0ZSgpOworCisvKgorRXMgZm9sZ3QgbnVuIGRhcyBub3JtYWxlIGNyZWF0ZSgpIGVpbmVzIFJhdW1lcworKi8KK3ZvaWQgY3JlYXRlKCl7CisgIDo6Y3JlYXRlKCk7CisgIC8qIC4uLiBkaXYuIEtvbmZpZ3VyYXRpb24gZGVzIFJhdW0gLi4uICovCisKKyAgLyoKKyAgRGFzIGV4dHJhLWNyZWF0ZSgpIG11c3MgbmF0dWVybGljaCBhdWZnZXJ1ZmVuIHdlcmRlbgorICAqLyAgCisgIGhhdXNfY3JlYXRlKCk7Cit9ICAgICAgCisKKy8qCitIaWVyIGtvbW1lbiB3aXIgbnVuIHp1IGRlciBGa3QsIGRpZSBhbGxlcyBhbSBTZWhlcmhhdXMgdmVyd2FsdGV0CisqLworcHJpdmF0ZSB2b2lkIGhhdXNfY3JlYXRlKCkKK3sKKyAgb2JqZWN0IG9iID0gZmluZF9vYmplY3QoSEFVU05BTUUoInRpbGx5IikpOyAvLyBmaW5kZXQgSGF1cyB2b24gVGlsbHkKKworICAvKgorICBXZW5uIGRhcyBIYXVzIGltIFJhdW0gc3RlaHQuIEhhdCBkZW4gVm9ydGVpbCwgZGFzcyBiZWkgZWluZW0gVmVybGVnZW4KKyAgZGVzIEhhdXNlcywgQ21kJ3MgdXN3IG5pY2h0IG1laHIgdmVyZnVlZ2JhciBzaW5kIC0+IEtlaW5lIGV2dGwgQnVncyA6KQorICAqLworICBpZihvYmplY3RwKG9iKSkKKyAgeworICAgIC8qCisgICAgRGVyIFNwaWVsZXIgd29sbHRlIGVzIGphIG5pY2h0IGFuZGVycworICAgICovCisgICAgb2ItPlJlbW92ZUNtZCgoeyJiZXRyZXQiLCJiZXRyaXR0IiwiYmV0cmV0ZSJ9KSk7CisgICAgb2ItPlJlbW92ZUlkKCJoYXVzIik7CisgICAgb2ItPlJlbW92ZUlkKCJoYXVzIHZvbiB0aWxseSIpOworICAgIG9iLT5BZGRJZCgic3RlaW5oYXVmZW4iKTsKKyAgICAKKyAgICBBZGREZXRhaWwoKHsiaGF1ZmVuIiwic3RlaW5oYXVmZW4ifSksIkRhIGlzdCBkb2NoIGVpbiBrbGVpbmVyIFNwYWx0PyAiCisgICAgICsiVmllbGxlaWNodCBrYW5uc3QgRHUgYXVmIGRlbiBTdGVpbmhhdWZlbiBrbGV0dGVybj9cbiIpOworCisgICAgQWRkQ21kKCh7ImtsZXR0ZXIiLCJrbGV0dGVyZSJ9KSwia2xldHRlcl9jbWQiKTsKKyAgfQorfQorCitwdWJsaWMgaW50IGtsZXR0ZXJfY21kKHN0cmluZyBzdHIpCit7CisgIG9iamVjdCBvYiA9IGZpbmRfb2JqZWN0KEhBVVNOQU1FKCJ0aWxseSIpKTsKKworICBfbm90aWZ5X2ZhaWwoIldvIG1vZWNodGVzdCBEdSBoaW5rbGV0dGVybj9cbiIpOworCisgIGlmKCFzdHIpIHJldHVybiAwOworCisgIGlmKHN0cj09ImF1ZiBoYXVmZW4iIHx8IHN0cj09ImF1ZiBzdGVpbmhhdWZlbiIpCisgIHsKKyAgICBpZihvYmplY3RwKG9iKSkKKyAgICB7CisgICAgICAvKgorICAgICAgRGFzIGlzdCBkaWUgTWVsZHVuZywgZGllIGVpbiBTcGllbGVyIGJla29tbXQsIHdlbm4gZGFzIFNlaGVyaGF1cworICAgICAgYWJnZXNjaGxvc3NlbiBpc3QgdW5kIGVyIHZlcnN1Y2h0LCBlcyB6dSAnYmV0cmV0ZW4nLgorICAgICAgKi8KKyAgICAgIG5vdGlmeV9mYWlsKCJEdSBrbGV0dGVyc3QgYXVmIGRlbiBIYXVmZW4sIGRvY2ggZGVyIFNwYWx0IGlzdCB6dSAiCisgICAgICAgInNjaG1hbCBmdWVyIERpY2guXG4iKTsKKyAgICAgICAKKyAgICAgIGlmKCEob2ItPlF1ZXJ5UHJvcChIX0RPT1JTVEFUKSAmIERfQ0xPU0VEKSkKKyAgICAgIHsKKyAgICAgICAgdGVsbF9vYmplY3QodGhpc19wbGF5ZXIoKSwKKyAgICAgICAgICAgICJEdSBrbGV0dGVyc3QgYXVmIGRlbiBTdGVpbmhhdWZlbiwgcnV0c2Noc3QgZGVuIFNwYWx0IHJ1bnRlciAiCisgICAgICAgICAgICAgInVuZCBmaW5kZXN0IERpY2ggdXJwbG9ldHpsaWNoIGluIGVpbmVyIHNjaHVtbXJpZ2VuIEhvZWhsZS5cbiIpOworICAgICAgICB0ZWxsX3Jvb20odGhpc19vYmplY3QoKSx0aGlzX3BsYXllcigpLT5uYW1lKCkrIiBrbGV0dGVydCBhdWYgZWluZW4gIgorICAgICAgICAgICJTdGVpbmhhdWZlbiB1bmQgaXN0IHBsb2V0emxpY2ggdmVyc2Nod3VuZGVuLiIsKHt0aGlzX3BsYXllcigpfSkpOworICAgICAgICB0ZWxsX3Jvb20oUkFVTU5BTUUoInRpbGx5IiwwKSx0aGlzX3BsYXllcigpLT5uYW1lKCkrCisgICAgICAgICAgIiBmYWVsbHQgZmx1Y2hlbmQgaGVyZWluLlxuIik7CisgICAgICAgIHRoaXNfcGxheWVyKCktPm1vdmUoUkFVTU5BTUUoInRpbGx5IiwwKSxNX0dPfE1fU0lMRU5ULDApOworICAgICAgICByZXR1cm4gMTsKKyAgICAgIH0KKyAgICB9CisgIH0KKyAgcmV0dXJuIDA7Cit9CisgIAorLyoKK05hdHVlcmxpY2ggZ2lidCBlcyBub2NoIHZpZWwgbWVociBNb2VnbGljaGtlaXRlbiBydW5kIHVtIFNlaGVyaGFldXNlciwgCitkb2NoIHNvbGx0ZSBkaWVzIGVyc3RtYWwgcmVpY2hlbi4gWnUgYmVhY2h0ZW4gaXN0IGJlaSBzb2xjaGVyIFZvcmdlaGVucy0KK3dlaXNlLCBkYXNzIGVpbiAnc2NobGllc3NlfG9lZmZuZSBoYXVzJyBldnRsIHp1IEZlaGxlcm1lbGR1bmdlbiBmdWVocnQuCitEZW0gU3BpZWxlciBzZWkgbmFoZWdlbGVndCwgZXMgZG9jaCBtaXQgJ29lZmZuZSBoYXVzdHVlcicgenUgdmVyc3VjaGVuLgorCitIQVVTTkFNRSB1bmQgUkFVTU5BTUUgKHUuYS4pIHNpbmQgRGVmaW5lcyBhdXMgZGVtIGhhdXMuaC4gTWFuIHNvbGx0ZSBzaWNoCitkaWVzZXMgRmlsZSBhbnNjaGF1ZW4gdW5kIGRpZSBkb3J0aWdlbiBEZWZpbmVzIHVlYmVybmVobWVuLiBEYW5uIGJ1Z3QgYXVjaCAKK25pY2h0cywgZmFsbHMgbWFsIGV0d2FzIGFuIGRlbiBIYWV1c2VybiB1bWdlc3RlbGx0IHdpcmQuCisKK1RpbGx5LCAyMC4gTWFpIDIwMDEsIDAwOjEwOjI0aAorKi8KZGlmZiAtLWdpdCBhL2RvYy9iZWlzcGllbGUvbWlzYy9zdGF0a3JhbGxlbi5jIGIvZG9jL2JlaXNwaWVsZS9taXNjL3N0YXRrcmFsbGVuLmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYTBhZTRjMwotLS0gL2Rldi9udWxsCisrKyBiL2RvYy9iZWlzcGllbGUvbWlzYy9zdGF0a3JhbGxlbi5jCkBAIC0wLDAgKzEsNjEgQEAKKy8qIFBhcmFjZWxzdXM6IFN0YXRrcmFsbGVuCisqKgorKiogICAgIEJlaXNwaWVsIGZ1ZXIgZGllIFZlcndlbmR1bmcgdm9uIFBfTV9BVFRSX01PRAorKioKKyoqICAgICBaaWVodCBlaW4gU3BpZWxlciBkaWVzZSBLcmFsbGVuIGFuLCBzbyBlcmhvZWh0IHNpY2ggc2VpbmUgU3RhZXJrZQorKiogICAgIHVtIDIuIEdsZWljaHplaXRpZyB3aXJkIGRhcyBFcmhvZWhlbiBzZWluZXIgR2VzY2hpY2tsaWNoa2VpdCBkdXJjaAorKiogICAgIGFuZGVyZSBSdWVzdHVuZ2VuL1dhZmZlbiBibG9ja2llcnQuIAorKiogICAgIERpZSBLcmFsbGVuIGtvZW5uZW4gbnVyIGFuZ2V6b2dlbiB3ZXJkZW4sIHdlbm4gd2VkZXIgQV9TVFIgbm9jaAorKiogICAgIEFfREVYIGR1cmNoIGVpbmUgYW5kZXJlIFJ1ZXN0dW5nL1dhZmZlIGJsb2NraWVydCB3aXJkLgorKi8KKworLy8gRGllc2UgUHJhZ21hcyBzb3JnZW4gZGFmdWVyLCBkYXNzIGRlciBEcml2ZXIgZGFyYXVmIGFjaHRldCwgZGFzcyBiZWkKKy8vIEZ1bmt0aW9uc2FyZ3VtZW50ZW4sIC1SdWVja2dhYmV3ZXJ0ZW4gdW5kIHRlaWx3ZWlzZSBiZWkgWnV3ZWlzdW5nIHZvbgorLy8gV2VydGVuIGFuIFZhcmlhYmxlbiBkZXIgcmljaHRpZ2UgRGF0ZW50eXAgdmVyd2VuZGV0IHdpcmQgKHouYi4ga2VpbiBzdHJpbmcKKy8vIGFuc3RlbGxlIGVpbmVzIGludCB2ZXJ3ZW5kZXQgd2lyZCkuIFNvbGx0ZSBpbiBrZWluZW0gT2JqZWt0IGZlaGxlbi4KKyNwcmFnbWEgc3Ryb25nX3R5cGVzLCBzYXZlX3R5cGVzLCBydHRfY2hlY2tzCisKKyNpbmNsdWRlIDxwcm9wZXJ0aWVzLmg+CisjaW5jbHVkZSA8bGFuZ3VhZ2UuaD4KKyNpbmNsdWRlIDxjb21iYXQuaD4KKworaW5oZXJpdCAiL3N0ZC9hcm1vdXIiOworCitwcm90ZWN0ZWQgdm9pZCBjcmVhdGUoKQoreworICAgIDo6Y3JlYXRlKCk7CisKKyAgICBTZXRQcm9wKFBfU0hPUlQsIlN0YXRrcmFsbGVuIik7CisgICAgU2V0UHJvcChQX0xPTkcsCisgICAgICAgICJEaWVzZSBrcmFsbGVuYmV3ZWhydGVuIEhhbmRzY2h1aGUgc2NoaW1tZXJuIGJsYWV1bGljaC5cbiIpOworICAgIFNldFByb3AoUF9OQU1FLCJTdGF0a3JhbGxlbiIpOworICAgIFNldFByb3AoUF9JTkZPLCJEaWUgS3JhbGxlbiBtYWNoZW4gc3RhZXJrZXIuXG4iKTsKKyAgICBTZXRQcm9wKFBfR0VOREVSLEZFTUFMRSk7CisgICAgU2V0UHJvcChQX05PQlVZLDEpOyAvLyB3aXJkIGJlaSBWZXJrYXVmIGltIGxhZGVuIHplcnN0b2VydC4KKyAgICBTZXRQcm9wKFBfV0VJR0hULDgwMCk7CisgICAgU2V0UHJvcChQX1ZBTFVFLDUwMDArcmFuZG9tKDIwMDApKTsKKyAgICBTZXRQcm9wKFBfQVJNT1VSX1RZUEUsQVRfR0xPVkUpOworICAgIFNldFByb3AoUF9BQywyKTsKKyAgICBTZXRQcm9wKFBfRUZGRUNUSVZFX1dDLDE1KTsKKyAgICBTZXRQcm9wKFBfTUFURVJJQUwsCisgICAgKFsKKyAgICAgICAgTUFUX0xFQVRIRVIgICAgOiA2MCwKKyAgICAgICAgTUFUX01JU0NfTUVUQUwgOiA0MAorICAgIF0pICk7CisKKy8vIC0tLS0+CisKKyAgICBTZXRQcm9wKFBfTV9BVFRSX01PRCwKKyAgICAoWworICAgICAgICBBX1NUUiA6IDIsICAvLyBTdGFlcmtlIHVtIDIgZXJob2VoZW4KKyAgICAgICAgQV9ERVggOiAwICAgLy8gR2VzY2hpY2tsaWNoa2VpdCBibG9ja2llcmVuCisgICAgXSkgKTsKKworLy8gPC0tLS0KKworICAgIEFkZElkKCAoeyJoYW5kc2NodWhlIiwia3JhbGxlbiJ9KSApOworCisgICAgQWRkRGV0YWlsKCAic2NoaW1tZXIiLAorICAgICAgICAiRWluIGJsYWV1bGljaGVyIFNjaGltbWVyIGxpZWd0IGF1ZiBkZW4gS3JhbGxlbi5cbiIpOworfQorCmRpZmYgLS1naXQgYS9kb2MvYmVpc3BpZWxlL3ByZWNvbXBpbGVyL2tvbnN0YW50ZW4uYyBiL2RvYy9iZWlzcGllbGUvcHJlY29tcGlsZXIva29uc3RhbnRlbi5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjY4N2QxYTMKLS0tIC9kZXYvbnVsbAorKysgYi9kb2MvYmVpc3BpZWxlL3ByZWNvbXBpbGVyL2tvbnN0YW50ZW4uYwpAQCAtMCwwICsxLDUwIEBACisvLyBNaXQgZGVtIFByYWVjb21waWxlciBsYXNzZW4gc2ljaCBzeW1ib2xpc2NoZSBLb25zdGFudGVuIGRlZmluaWVyZW4uIERpZXMKKy8vIHouQi4gc2lubnZvbGwsIHdlbm4gZWluZSBaYWhsIGVpbmUgYmVzdGltbXRlIEJlZGV1dHVuZyBoYXQuIFouYi4gaGF0IGRpZQorLy8gWmFobCA0MiBhbiBzaWNoIGtlaW5lIGZpeGUgQmVkZXV0dW5nLCBoaWVyIGlzdCBkaWUgamVkb2NoIGRpZSBBbnR3b3J0IQorI2RlZmluZSBBTlRXT1JUIDQyCisvLyBTY2hyZWlidCBtYW4gbnVuIGlyZ2VuZHdvIGltIENvZGUgQU5UV09SVCwgZXJzZXR6dCBkZXIgUHJhZWNvbXBpbGVyIGplZGVzCisvLyBWb3Jrb21tZW4gdm9uIEFOVFdPUlQgZHVyY2ggNDIuCisKKy8vIGF1Y2gga29tcGxleGVyZSBLb25zdGFudGVuIHNpbmQgbW9lZ2xpY2gsIHouQi4gZWluIEFyZ3VtZW50IGVpbmVzIERlZmluZXM6CisjZGVmaW5lIFJPT00oeCkgKCIvZC9lYmVuZS96ZXNzdHJhL2FkdmVudC9yb29tLyIreCkKKy8vIERpZXMgZGllbnQgbWVpc3QsIHVtIHNpY2ggU2NocmVpYmFyYmVpdCB6dSBzcGFyZW4uIEZvcm11bGllcnQgbWFuIG5hY2gKKy8vIGRpZXNlbSAjZGVmaW5lIGVpbiBST09NKCJ3ZWcxIiksIGVyemV1Z3QgZGVyIFByYWVjb21waWxlciBoaWVyYXVzOgorLy8gKCIvZC9lYmVuZS96ZXNzdHJhL2FkdmVudC9yb29tL3dlZzEiKQorCisvLyBXZWl0ZXJlcyBCZWlzcGllbDoKKyNkZWZpbmUgQlMoeCkgYnJlYWtfc3RyaW5nKHgsIDc4KQorLy8gZXJ6ZXVndCBhbHNvIGF1cyBCUygibGFuZ2VyIHRleHQiKSBlaW4gYnJlYWtfc3RyaW5nKCJsYW5nZXIgdGV4dCIsNzgpCisKKy8vIEVzIGdlaGVuIGF1Y2ggbWVocmVyZSBBcmd1bWVudGU6CisjZGVmaW5lIEJTKHgseSkgYnJlYWtfc3RyaW5nKHgsIDc4LCB5KQorLy8gQlMoImxhbmdlciB0ZXh0IiwgNzgsICJaZXNzdHJhIHNhZ3Q6ICIpCisvLyAgIC0+IGJyZWFrX3N0cmluZygibGFuZ2VyIHRleHQiLCA3OCwgIlplc3N0cmEgc2FndDogIikKKworLy8gU29sY2hlIERlZmluZXMgbGFzc2VuIHNpY2ggc2NoYWNodGVsbjoKKyNkZWZpbmUgSE9NRSh4KSAoIi9kL2ViZW5lL3plc3N0cmEvYWR2ZW50LyIreCkKKyNkZWZpbmUgUk9PTSh4KSAoSE9NRSgicm9vbS8iK3gpKQorLy8gRWluIFJPT00oIndlZzEiKSB3aXJkIG51biBkdXJjaCAoSE9NRSgicm9vbS8iKyJ3ZWcxIikpIGVyc2V0enQKKy8vIHVuZCBkaWVzZXMgd2llZGVydW0gZHVyY2ggZWluIAorLy8gKCgiL2QvZWJlbmUvemVzc3RyYS9hZHZlbnQvIisicm9vbS8iKyJ3ZWcxIikpLCB3YXMgbGV0enRlbmRsaWNoIGVpbgorLy8gKCgiL2QvZWJlbmUvemVzc3RyYS9hZHZlbnQvcm9vbS93ZWcxIikpIGlzdC4KKworLy8gTGV0enRlcmVzIHdpcmQgaGFldWZpZyBiZW51dHp0IGJlaSBkZXIgRXJzdGVsbHVuZyB2b24gR2ViaWV0ZW4gdW0gc2ljaCBiZWkKKy8vIFVtenVlZ2VuIEFyYmVpdCB6dSBzcGFyZW46IHppZWh0IGRhcyBHZWJpZXQgdW0gKHouQi4gdm9uIC9wbGF5ZXJzL3plc3N0cmEvCisvLyBuYWNoIC9kL2ViZW5lL3plc3N0cmEvYWR2ZW50LywgcmVpY2h0IGVzIGF1cywgSE9NRSB6dSBhZW5kZXJuIHVuZCBtYW4gbXVzcworLy8gbmljaHQgMTUwbWFsIGRlbiBrb21wbGV0dGVuIFBmYWQgaW0gQ29kZSBhZW5kZXJuLgorCisvLyBtb2VjaHRlIG1hbiBlaW4gRGVmaW5lIHVlYmVyIG1laHJlcmUgWmVpbGVuIGRlZmluaWVyZW4sIG11c3MgZGVyCisvLyBaZWlsZW51bWJydWNoIG1pdCBlaW5lbSBcIGVzY2FwZWQgIHdlcmRlbjoKKyNkZWZpbmUgTE9HKHgpIGxvZ19maWxlKCJibGEiLFwKKyAgICAiRGllcyBpc3QgZWluIGxhZW5nZXJlciBUZXh0LlxuIikKKy8vIFdJQ0hUSUc6IEhpbnRlciBkZW0gXCBkYXJmIEtFSU4gTGVlcnplaWNoZW4sIFRhYiBvLmFlLiBzdGVoZW4hCisKKy8vIFRpcHM6CisvLyAqIERhbWl0IG1hbiBEZWZpbmVzIHNjaG5lbGwgYWxzIHNvbGNoZSBlcmtlbm50LCBzb2xsdGVuIGFsbGUgRGVmaW5lcworLy8gICBncm9zc2dlc2NocmllYmVuIHdlcmRlbjogei5CLiBQTCB2cy4gcGwKKy8vICogdm9uIGtvbXBsZXhlbiBEZWZpbmVzIHdpcmQgYWJnZXJhdGVuLCB3ZWlsIHNpZSBzY2huZWxsIFVlYmVyc2ljaHQgCisvLyAgIHVuZCBFZmZpemllbnogcnVpbmllcmVuIGtvZW5uZW4KKy8vICogZWluaWdlIGhhZXVmaWcgYmVudXR6dGUgRGVmaW5lcyBmaW5kZW4gc2ljaCBpbiA8ZGVmaW5lcy5oPgorLy8gKiBkZXIgRHJpdmVyIGRlZmluaWVydCBiZXN0aW1tdGUgRGVmaW5lcyBhdXRvbWF0aXNjaC4gRWluZSBMaXN0ZQorLy8gICBmaW5kZXQgc2ljaCBpbiAvZG9jL2RyaXZlci9wcmVkZWZpbmVkCisKZGlmZiAtLWdpdCBhL2RvYy9iZWlzcGllbGUvcm90YXVnZW52YW1waXJlLy5yZWFkbWUgYi9kb2MvYmVpc3BpZWxlL3JvdGF1Z2VudmFtcGlyZS8ucmVhZG1lCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmEyY2VlYjYKLS0tIC9kZXYvbnVsbAorKysgYi9kb2MvYmVpc3BpZWxlL3JvdGF1Z2VudmFtcGlyZS8ucmVhZG1lCkBAIC0wLDAgKzEsMyBAQAorRHJlaSBCZWlzcGllbG1vbnN0ZXIsIGRpZSB3aWNodGlnZSBCYXNpc2VpZ2Vuc2NoYWZ0ZW4gdm9uIE5QQ3Mgc293aWUKK2RpZSBWZXJlcmJ1bmcgZGVtb25zdHJpZXJlbi4gQW5nZWxlaG50IGFuIGJzcG1vbjEuYyB2b24gQm9pbmcuCisoWmVzc3RyYSkKZGlmZiAtLWdpdCBhL2RvYy9iZWlzcGllbGUvcm90YXVnZW52YW1waXJlL3JvdGF1Z2VudmFtcGlyLmMgYi9kb2MvYmVpc3BpZWxlL3JvdGF1Z2VudmFtcGlyZS9yb3RhdWdlbnZhbXBpci5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmNhNDY0ZDUKLS0tIC9kZXYvbnVsbAorKysgYi9kb2MvYmVpc3BpZWxlL3JvdGF1Z2VudmFtcGlyZS9yb3RhdWdlbnZhbXBpci5jCkBAIC0wLDAgKzEsMTM1IEBACisvKgorICAgRWluIEJlaXNwaWVsLU5QQyAodm9uIFplc3N0cmEsIGFuZ2VsZWhudCBhbiBCb2luZ3MgYnNwbW9uMS5jKQorKi8KKworLy8gRGllc2UgUHJhZ21hcyBzb3JnZW4gZGFmdWVyLCBkYXNzIGRlciBEcml2ZXIgZGFyYXVmIGFjaHRldCwgZGFzcyBiZWkKKy8vIEZ1bmt0aW9uc2FyZ3VtZW50ZW4sIC1SdWVja2dhYmV3ZXJ0ZW4gdW5kIHRlaWx3ZWlzZSBiZWkgWnV3ZWlzdW5nIHZvbgorLy8gV2VydGVuIGFuIFZhcmlhYmxlbiBkZXIgcmljaHRpZ2UgRGF0ZW50eXAgdmVyd2VuZGV0IHdpcmQgKHouYi4ga2VpbiBzdHJpbmcKKy8vIGFuc3RlbGxlIGVpbmVzIGludCB2ZXJ3ZW5kZXQgd2lyZCkuIFNvbGx0ZSBpbiBrZWluZW0gT2JqZWt0IGZlaGxlbi4KKyNwcmFnbWEgc3Ryb25nX3R5cGVzLCBzYXZlX3R5cGVzLCBydHRfY2hlY2tzCisvLyBFaW5pZ2UgV2FybnVuZ2VuIHdlcmRlbiBhbHMgRmVobGVyIGJldHJhY2h0ZXQgKGVtcGZvaGxlbikKKyNwcmFnbWEgcGVkYW50aWMsIHJhbmdlX2NoZWNrCisvLyBTY2hhbHRldCBiZXN0aW1tdGUgV2FybnVuZ2VuIGVpbiAoZW1wZm9obGVuKQorI3ByYWdtYSB3YXJuX2RlcHJlY2F0ZWQsIHdhcm5fZW1wdHlfY2FzdHMsIHdhcm5fbWlzc2luZ19yZXR1cm4KKyNwcmFnbWEgd2Fybl9mdW5jdGlvbl9pbmNvbnNpc3RlbnQKKworLy8gRXJidCBkZW4gU3RhbmRhcmQtTlBDIC8gZGFzIFN0YW5kYXJkLU1vbnN0ZXIKK2luaGVyaXQgIi9zdGQvbnBjIjsKKworLy8gSW5rbHVkaWVydCBEZWZpbml0aW9uZW4gZnVlciBQcm9wZXJ0aWVzIHVuZCBlaW5pZ2UgS29uc3RhbnRlbgorI2luY2x1ZGUgPHByb3BlcnRpZXMuaD4KKyNpbmNsdWRlIDxsYW5ndWFnZS5oPgorI2luY2x1ZGUgPGNsYXNzLmg+IC8vIEtvbnN0YW50ZW4gZnVlciBBZGRDbGFzcygpCisKKy8vIGNyZWF0ZSgpIHdpcmQgYmVpbSBFcnpldWdlbiBkZXMgT2JqZWt0IHZvbSBEcml2ZXIgZ2VydWZlbiB1bmQgaW5pdGlhbGlzaWVydAorLy8gZGllc2VuIE5QQy4gRXMgYmVrb21tdCBrZWluIEFyZ3VtZW50LCBnaWJ0IGtlaW5lbiBXZXJ0IHp1cnVlY2sgKFR5cDogdm9pZCkKKy8vIHVuZCBrYW5uIG5pY2h0IHZvbiBhdXNzZXJoYWxiIGRlcyBPYmpla3RlcyBnZXJ1ZmVuIHdlcmRlbiAocHJvdGVjdGVkKS4KK3Byb3RlY3RlZCB2b2lkIGNyZWF0ZSgpCit7CisgIC8vIE5pY2h0IHZlcmdlc3Nlbiwgb2huZSBkYXMgZ2VodCBuaWNodHMuIEZ1ZWhydCBkYXMgY3JlYXRlKCkgZGVzIGdlZXJidGVuCisgIC8vIC9zdGQvbnBjIGF1cyB1bmQgaW5pdGlhbGlzaWVydCBkZW4gU3RhbmRhcmQtTlBDLgorICA6OmNyZWF0ZSgpOworCisvKiBEaWUgS3VyemJlc2NocmVpYnVuZyB3aXJkIHp1bSBCZWlzcGllbCBhbmdlemVpZ3Qgd2VubiBtYW4gaW4gZWluZW4gUmF1bQorICAgbWl0IGRlbSBNb25zdGVyIHJlaW5sYWV1ZnQgKi8KKyAgU2V0UHJvcChQX1NIT1JULCAiUm90YXVnZW52YW1waXIiKTsKKworLyogQmVpbSBBbnNjaGF1ZW4gZGVzIE1vbnN0ZXJzIHdpcmQgZGllIGxvbmctZGVzY3JpcHRpb24gYW5nZXplaWd0LAorICogWmVpbGVudW1icnVjaCBuYWNoIEJlZGFyZiBuYWNoIDc4IFplaWNoZW4uICovCisgIFNldFByb3AoUF9MT05HLCBicmVha19zdHJpbmcoCisgICAgIkVpbiBmaW5zdGVyIGF1c3NlaGVuZGVyIFJvdGF1Z2VudmFtcGlyLiIsNzgpKTsKKworLyogRWluIE5hbWUgbXVzcyBzZWluLCBkYSBzb25zdCB6LkIuIGltIFRvZGVzZmFsbCAnTGVpY2hlIHZvbiAwJyBkYWxpZWd0ICovCisgIFNldFByb3AoUF9OQU1FLCAiUm90YXVnZW52YW1waXIiKTsKKyAgU2V0UHJvcChQX05BTUVfQURKLCJhdXNnZW1lcmdlbHQiKTsKKyAgCisvKiBEYXMgR2VzY2hsZWNodCBkZXMgTW9uc3RlcnMuIEFscyBHZXNjaGxlY2h0ZXIgc2luZCAqLworLyogZGllIGluIDxsYW5ndWFnZS5oPiBkZWZpbmllcnRlbiBTeW1ib2xlIE5FVVRFUiwgTUFMRSAgICovCisvKiB1bmQgRkVNQUxFIHp1bGFlc3NpZy4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgU2V0UHJvcChQX0dFTkRFUiwgTUFMRSk7CisKKy8qIEVpbiBNb25zdGVyIGJyYXVjaHQgbWluZGVzdGVucyBlaW5lIElELCB1bnRlciBkZXIgbWFuIGVzIGFuc3ByZWNoZW4ga2FubiAqLworLyogRXMga2FubiBhYmVyIGF1Y2ggbWVocmVyZSB2ZXJzY2hpZWRlbmUgSUQncyBoYWJlbi4gICAgICAgICAgICAgICAgICAgICAgICovCisgIEFkZElkKCAoeyJ2YW1waXIiLCJyb3RhdWdlbnZhbXBpciJ9KSApOworCisvKiBadWVyc3Qgc29sbHRlIG1hbiBkZW0gTW9uc3RlciBlaW5lbiBHcnVuZGxldmVsIGdlYmVuLiAqLworLyogU2V0enQgU3RhbmRhcmR3ZXJ0ZSBmdWVyIFBfTEVWRUwsIFBfTUFYX0hQIChMZWJlbnNwdW5rdGUpLCBQX01BWF9TUAorICogKE1hZ2llcHVua3RlKSwgUF9IQU5EUywgUF9CT0RZLCBQX1hQIHVuZCBkaWUgQXR0cmlidXRlIEFfU1RSLCBBX0lOVCwgQV9ERVgKKyAqIHVuZCBBX0NPTi4gQWxsZSBrb2VubmVuIHNwYWV0ZXIgbm9jaCBnZWFlbmRlcnQgd2VyZGVuLgorICovCisgIGNyZWF0ZV9kZWZhdWx0X25wYyggMjUgKTsKKworLyogTnVuIG1hY2hlbiB3aXIgZXMgZXR3YXMgd2lkZXJzdGFuZHNmYWVoaWdlciwgaW5kZW0gd2lyIFBfQk9EWSBzZXR6ZW4uICAqLworLyogTmllIFBfVE9UQUxfQUMgb2RlciBQX0FDIHNldHplbiwgUF9UT1RBTF9BQyB3aXJkIGF1dG9tYXRpc2NoIGJlcmVjaG5ldCAqLworLyogdW5kIFBfQUMgaXN0IG51ciBmdWVyIFJ1ZXN0dW5nZW4gZGEuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICBTZXRQcm9wKFBfQk9EWSwgNTUpOworCisvKiBEYXMgTW9uc3RlciBzY2hsYWVndCBtaXQgYmxvc3NlbiBIYWVuZGVuIHp1LCBhbHNvIHdpcmQgUF9IQU5EUyBnZXNldHp0LiAgICovCisvKiBBdWNoIGhpZXIgd2VkZXIgUF9UT1RBTF9XQyBub2NoIFBfV0Mgc2V0emVuLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIFNldFByb3AoUF9IQU5EUywgKHsiIG1pdCBzZWluZW4gSGFlbmRlbiIsIDEzNX0pKTsKKy8qICAgICAgICAgICAgICAgICAgICBeIGRpZXNlcyBMZWVyemVpY2hlbiBpc3Qgd2ljaHRpZyAgICAgICAgICAgICAgICAgICAgICAgKi8KKy8qIEJlaW0gS2FtcGYgZXJzY2hlaW50IG51bjogJ0RhcyBNb25zdGVyIGdyZWlmdCBEaWNoIG1pdCBzZWluZW4gSGFlbmRlbiBhbicgKi8KKy8qIDEzNSBlbnRzcHJpY2h0IGRlciBXYWZmZW5rbGFzc2UgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisKKy8qIEdlc2lubnVuZyBkZXMgTW9uc3RlcnMsIDAgaXN0IG5ldXRyYWwsIG5lZ2F0aXYgYm9lc2UgdW5kIHBvc2l0aXYgZ3V0ICovCisgIFNldFByb3AoUF9BTElHTiwgLTEwMCk7ICAvKiBldHdhcyBib2VzZSwgYWJlciBuaWNodHMgYmVzb25kZXJlcyAqLworCisvKiBEaWUgUmFzc2UgZGVzIE1vbnN0ZXJzICovCisgIFNldFByb3AoUF9SQUNFLCAiVmFtcGlyIik7CisKKy8qIEVyZmFocnVuZ3NwdW5rdGUgZGVzIE1vbnN0ZXJzLCBiZWltIFRvZCBlcmhhZWx0IGRlciAnS2lsbGVyJyBlaW4gICAqLworLyogaHVuZGVydHN0ZWwgZGllc2VzIFdlcnRlcy4gU2Nob24gaW0gS2FtcGYgZXJoYWVsdCBtYW4gYmVpIGplZGVtICAgICovCisvKiBTY2hsYWcgd2VhcG9uX2NsYXNzKnNjaGFkZW4vMTAgcHVua3RlICh3ZWFwb25fY2xhc3MgaGllciA1NSksIGFsc28gKi8KKy8qIGluc2dlc2FtdCB3ZWFwb25fY2xhc3MqaGl0X3BvaW50cy8xMC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworLyogQWIgMjAwMDAwIGdpYnQgZGVyIE5QQyBlaW5lbiBTdHVmZW5wdW5rdCwgYWIgNjAwMDAwIDIgU3R1ZmVucHVua3RlICovCisgIFNldFByb3AoUF9YUCwgMTMwMDAwKTsKKyAgCisvKiBEaWUgR3JvZXNzZSBkZXMgTW9uc3RlcnMgaW4gY20uIERpZXMgd2lyZCBiZWkgZWluaWdlbiBLYW1wZmJlZmVobGVuICovCisvKiBhdXNnZXdlcnRldCwgc293aWUgYmVpIGVpbmlnZW4gSWRlbnRpZmlrYXRpb25zc3BydWVjaGVuIHZvbiBHaWxkZW4uCisgKiBJcmdlbmR3YXMgendpc2NoZW4gMTcwIHVuZCAxOTAgY20uICAqLworICBTZXRQcm9wKFBfU0laRSwgMTcwICsgcmFuZG9tKDIxKSk7CisKKy8qIEVpbiBHZXdpY2h0IChpbiBHcmFtbSkgc29sbHRlIGRlciBOUEMgaGFiZW4sIGlyZ2VuZHdhcyB6d2lzY2hlbiA0MCB1bmQgNDgKKyAqIGtnLgorICovCisgIFNldFByb3AoUF9XRUlHSFQsIDQwMDAwICsgcmFuZG9tKDgwMDApKTsKKworLyogV2VpdGVyZSBXZXJ0ZTogUF8oTUFYKV9GT09ELCBQXyhNQVgpX0RSSU5LLCBQXyhNQVgpX0FMQ09IT0wsICAgICAgICovCisvKiBQX01TR0lOLCBQX01TR09VVCwgUF9NTVNHSU4sIFBfTU1TR09VVCwgUF9NQVhfSEFORFMgICAgICAgICAgICAgICAgKi8KKworLyogU3BlemllbGxlIEluZm9zIChmdWVyIGRlbiBJZGVudGlmaXppZXJlLVNwcnVjaCkgKi8KKyAgU2V0UHJvcChQX0lORk8sIGJyZWFrX3N0cmluZygKKyAgICAiRGVyIFJvdGF1Z2VudmFtcGlyIGxhZXNzdCBzaWNoIHZpZWxsZWljaHQgbWl0IEtub2JsYXVjaCB2ZXJ0cmVpYmVuLiIsCisgICAgNzgpKTsKKworLyogTlBDIGtvZW5uZW4gZWluZXIgS2xhc3NlIGFuZ2Vob2VyZW4gdW5kIFdhZmZlbiBrb2VubnRlbiB6LkIuIGdlZ2VuCisgKiBiZXN0aW1tdGUgS2xhc3Nlbi9SYXNzZW4gYmVzb25kZXJzIChpbillZmZla3RpdiBzZWluLgorICovCisgIEFkZENsYXNzKCh7Q0xfVkFNUElSRSxDTF9VTkRFQUR9KSk7CisKKy8qIFJlc2lzdGVuemVuIChuZWdhdGl2KSB1bmQgQW5mYWVsbGlna2VpdGVuIChwb3NpdGl2KSAqLworICBTZXRQcm9wKFBfUkVTSVNUQU5DRV9TVFJFTkdUSFMsIChbCisgICAgICAgIERUX0JMVURHRU9OOjAuMixEVF9SSVA6MC4yLAorICAgICAgICBEVF9NQUdJQzogLTAuMiwgRFRfQ09MRDogLTAuMSwgRFRfVEVSUk9SOiAtMC44IF0pICk7CisgIAorLy8gV2VyIGhhdCBkZW4gU3BpZWxlciBnZWtpbGx0IHVuZCB3YXMgc2FndCBtYW4gZGFubj8KKyAgU2V0UHJvcChQX0tJTExfTkFNRSwiRWluIFJvdGF1Z2VudmFtcGlyIik7CisgIFNldFByb3AoUF9LSUxMX01TRywoeyJHcm9zc2FydGlnICVzISBFaW4gd2VpdGVyZXMgT3BmZXIgZnVlciBaZXNzdHJhISIsIAorICAgICAgICAgICAgICAgICAgICAgICBNU0dfU0FZfSkpOworCisgIC8vIGJlc2Nod2VyZGUgYXVmIC1tb2VyZGVyCisgIFNldFByb3AoUF9NVVJERVJfTVNHLCJEdSBzdGVja3N0IGRvY2ggbWl0IEpvZiBpbSBCdW5kZSwgJXMhIik7CisgIFNldFByb3AoUF9ESUVfTVNHLCIgYnJpY2h0IHN0b2VobmVuZCB6dXNhbW1lbi5cbiIpOworCisgIC8vIEF1Y2ggTlBDIHNvbGx0ZW4gRGV0YWlscyBoYWJlbjoKKyAgQWRkRGV0YWlsKCAoeyJhdWdlbiIsImF1Z2VubGlkZXIiLCJsaWRlciJ9KSwgYnJlYWtfc3RyaW5nKAorICAgICJEZXIgUm90YXVnZW52YW1waXIgc2NoYXV0IERpY2ggbWl0IHdlaXQgYXVmZ2VyaXNzZW5lbiwgcm90ICIKKyAgICAic2NoaW1tZXJuZGVuIEF1Z2VuIHdpbGQgYW4uIiw3OCkpOworICAvLyAuLi4KKworICAvLyByaWVjaHQgZGVyIG5hY2ggd2FzPyAtPiBBZGRTbWVsbHMoKQorICAKKyAgLy8gS2FubiBtYW4gZGVuIG5hY2ggd2FzIGZyYWdlbj8gLT4gQWRkSW5mbygpLgorCit9CisKZGlmZiAtLWdpdCBhL2RvYy9iZWlzcGllbGUvcm90YXVnZW52YW1waXJlL3JvdGF1Z2VudmFtcGlybWFnaWVyLmMgYi9kb2MvYmVpc3BpZWxlL3JvdGF1Z2VudmFtcGlyZS9yb3RhdWdlbnZhbXBpcm1hZ2llci5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmE2YzVhYWYKLS0tIC9kZXYvbnVsbAorKysgYi9kb2MvYmVpc3BpZWxlL3JvdGF1Z2VudmFtcGlyZS9yb3RhdWdlbnZhbXBpcm1hZ2llci5jCkBAIC0wLDAgKzEsNzcgQEAKKy8qCisgICBFaW4gbWFnaXNjaCBiZWdhYnRlciBCZWlzcGllbC1OUEMgKHZvbiBaZXNzdHJhLCBhbmdlbGVobnQgYW4gQm9pbmdzCisgICBic3Btb24xLmMpCisqLworCisvLyBEaWVzZSBQcmFnbWFzIHNvcmdlbiBkYWZ1ZXIsIGRhc3MgZGVyIERyaXZlciBkYXJhdWYgYWNodGV0LCBkYXNzIGJlaQorLy8gRnVua3Rpb25zYXJndW1lbnRlbiwgLVJ1ZWNrZ2FiZXdlcnRlbiB1bmQgdGVpbHdlaXNlIGJlaSBadXdlaXN1bmcgdm9uCisvLyBXZXJ0ZW4gYW4gVmFyaWFibGVuIGRlciByaWNodGlnZSBEYXRlbnR5cCB2ZXJ3ZW5kZXQgd2lyZCAoei5iLiBrZWluIHN0cmluZworLy8gYW5zdGVsbGUgZWluZXMgaW50IHZlcndlbmRldCB3aXJkKS4gU29sbHRlIGluIGtlaW5lbSBPYmpla3QgZmVobGVuLgorI3ByYWdtYSBzdHJvbmdfdHlwZXMsIHNhdmVfdHlwZXMsIHJ0dF9jaGVja3MKKy8vIEVpbmlnZSBXYXJudW5nZW4gd2VyZGVuIGFscyBGZWhsZXIgYmV0cmFjaHRldCAoZW1wZm9obGVuKQorI3ByYWdtYSBwZWRhbnRpYywgcmFuZ2VfY2hlY2sKKy8vIFNjaGFsdGV0IGJlc3RpbW10ZSBXYXJudW5nZW4gZWluIChlbXBmb2hsZW4pCisjcHJhZ21hIHdhcm5fZGVwcmVjYXRlZCwgd2Fybl9lbXB0eV9jYXN0cywgd2Fybl9taXNzaW5nX3JldHVybgorI3ByYWdtYSB3YXJuX2Z1bmN0aW9uX2luY29uc2lzdGVudAorCisvLyBEaWVzZXIgTlBDIHNvbGwgZWluIFJvdGF1Z2VudmFtcGlyIHNlaW4sIGRlciBlaW4gcGFhciBTcGVsbHMga2Fubi4gVW5kIG5lbgorLy8gUm90YXVnZW52YW1waXIgZ2lidCBlcyBzY2hvbi4gQWxzbyBlaW5mYWNoIGRlbiBub3JtYWxlbiBSb3RhdWdlbnZhbXBpcgorLy8gYXVzIGRpZXNlbSBWZXJ6ZWljaG5pcyBlcmJlbi4KK2luaGVyaXQgX19ESVJfXysicm90YXVnZW52YW1waXIiOworCisvLyBJbmtsdWRpZXJ0IERlZmluaXRpb25lbiBmdWVyIFByb3BlcnRpZXMKKyNpbmNsdWRlIDxwcm9wZXJ0aWVzLmg+CisKK3Byb3RlY3RlZCB2b2lkIGNyZWF0ZSgpCit7CisgIC8vIE5pY2h0IHZlcmdlc3Nlbiwgb2huZSBkYXMgZ2VodCBuaWNodHMuIEZ1ZWhydCBkYXMgY3JlYXRlKCkgZGVzIGdlZXJidGVuCisgIC8vIFJvdGF1Z2VudmFtcGlyIGF1cyB1bmQga29uZmlndXJpZXJ0IGlobi4KKyAgOjpjcmVhdGUoKTsKKworLyogRGllIEt1cnpiZXNjaHJlaWJ1bmcgd2lyZCB6dW0gQmVpc3BpZWwgYW5nZXplaWd0IHdlbm4gbWFuIGluIGVpbmVuIFJhdW0KKyAgIG1pdCBkZW0gTW9uc3RlciByZWlubGFldWZ0ICovCisgIFNldFByb3AoUF9TSE9SVCwgIlJvdGF1Z2VudmFtcGlybWFnaWVyIik7CisKKy8qIEJlaW0gQW5zY2hhdWVuIGRlcyBNb25zdGVycyB3aXJkIGRpZSBsb25nLWRlc2NyaXB0aW9uIGFuZ2V6ZWlndCwKKyAqIFplaWxlbnVtYnJ1Y2ggbmFjaCBCZWRhcmYgbmFjaCA3OCBaZWljaGVuLiAqLworICBTZXRQcm9wKFBfTE9ORywgYnJlYWtfc3RyaW5nKAorICAgICJFaW4gZmluc3RlciBhdXNzZWhlbmRlciBSb3RhdWdlbnZhbXBpciBpbiBlaW5lciBLdXR0ZS4iLDc4KSk7CisKKy8qIEVpbiBOYW1lIG11c3Mgc2VpbiwgZGEgc29uc3Qgei5CLiBpbSBUb2Rlc2ZhbGwgJ0xlaWNoZSB2b24gMCcgZGFsaWVndCAqLworICBTZXRQcm9wKFBfTkFNRSwgIlJvdGF1Z2VudmFtcGlybWFnaWVyIik7CisgIFNldFByb3AoUF9OQU1FX0FESiwibGlzdGVucmVpY2giKTsKKworICAvLyBmYXN0IGFsbGUgRWlnZW5zY2hhZnRlbiB1ZWJlcm5laG1lbiB3aXIgZWluZmFjaCB1bnZlcmFlbmRlcnQgdW52ZXJhZW5kZXJ0CisgIC8vIHZvbSBub3JtYWxlbiBSb3RhdWdlbnZhbXBpci4gRGllIEhhbmRzIG5pY2h0LCBkZXIgTWFnaWVyIGhhdXQgbmljaHQgc28KKyAgLy8gZ3V0IHp1Li4uCisgIFNldFByb3AoUF9IQU5EUywgKHsiIG1pdCBzZWluZW4gSGFlbmRlbiIsIDg1fSkpOworCisgIC8vIG9rLCBzcGllbHQgd2VuaWcgUm9sbGUgaW4gZGllc2VtIEZhbGwsIGFiZXIgZGFtaXRzIHN0aWxlY2h0IGlzdCwga3JpZWd0CisgIC8vIGRlciBoaWVyIGpldHp0IGV0d2FzIG1laHIgYW4gTWFnaWVwdW5rdGVuIChzcGVsbHBvaW50cykKKyAgU2V0UHJvcChQX01BWF9TUCwgMzUwKTsKKworICAvLyB1bmQgbm9jaCBlaW4gcGFhciBTcGVsbHMKKyAgLy8gQW5tZXJrdW5nOiBkaWVzZSBTcGVsbHMgaGFiZW4gbmljaHRzIG1pdCBpcmdlbmR3ZWxjaGVuIEdpbGRlbnNwZWxscyB6dQorICAvLyB0dW4gdW5kIC0gamEsIHRhdHNhZWNobGljaCAtIHZlcmJyYXVjaGVuIGtlaW5lIE1hZ2llcHVua3RlLi4uCisKKyAgLy8gd2FocnNjaGVpbmxpY2hrZWl0IGluICUgcHJvIHJ1bmRlLCBlaW5lbiBTcGVsbCB6dSBjYXN0ZW46CisgIFNldFByb3AoUF9TUEVMTFJBVEUsMzApOworICAvLyBFaW4gU3BlbGwsIGRlciAxMDAgU2NoYWRlbnNwdW5rdGUgbWFjaHQgdW5kIGluIDYwJSBkZXIgRmFlbGxlIGF1c2dld2FlaGx0CisgIC8vIHdpcmQuIEVyc3RlIE1lbGR1bmcgZ2VodCBhbiBkZW4gU3BpZWxlciwgZGllIHp3ZWl0ZSBhbiBkZW4gUmF1bS4KKyAgLy8gU2NoYWRlbnN0eXAgaXN0IFNjaGxhZ3NjaGFkZW4uCisgIEFkZFNwZWxsKDYwLDEwMCwKKyAgICBicmVha19zdHJpbmcoTmFtZShXRVIpICsgIiBtYWNodCBlaW5lIEhhbmRiZXdlZ3VuZyB2b3IgRGVpbmVtIEdlc2ljaHQuICIKKyAgICAgICJTbyBhYmdlbGVua3Qgc3RvbHBlcnN0IER1IGluIGZhZWxsc3QgaGFydCB6dSBCb2Rlbi4iLDc4KSwKKyAgICBicmVha19zdHJpbmcoTmFtZShXRVIpICsgIiBtYWNodCBlaW5lIEhhbmRiZXdlZ3VuZyB2b3IgQFdFU1NFTiBHZXNpY2h0LiAiCisgICAgICAiQFdFUiBzdG9scGVydCB1bmQgZmFlbGx0IGhhcnQgYXVmIGRlbiBCb2Rlbi4iLDc4KSwKKyAgICAoe0RUX0JMVURHRU9OfSkgKTsKKyAgLy8gRWluIFNwZWxsLCBkZXIgODAwIFNjaGFkZW5zcHVua3RlIG1hY2h0IHVuZCBpbiA0MCUgZGVyIEZhZWxsZSBhdXNnZXdhZWhsdAorICAvLyB3aXJkLiBTY2hhZGVuc3R5cDogRmV1ZXIuCisgIEFkZFNwZWxsKDQwLDgwMCwKKyAgICBicmVha19zdHJpbmcoTmFtZShXRVIpICsgIiBzY2hhdXQgRGljaCBtaXQgYnJlbm5lbmRlbiBBdWdlbiAiCisgICAgICAiZHVyY2hkcmluZ2VuZCBhbi4gRHUgZ2xhdWJzdCwgaW5uZXJsaWNoIHp1IHZlcmJyZW5uZW4uIiw3OCksCisgICAgYnJlYWtfc3RyaW5nKE5hbWUoV0VSKSArICIgc2NoYXV0IEBXRU4gbWl0IGdsdWVoZW5kZW4gQXVnZW4gYW4uICIKKyAgICAgICJAV0VSIGtydWVtbXQgc2ljaCB2b3IgU2NobWVyemVuLiIsNzgpLAorICAgICh7RFRfRklSRX0pICk7Cit9CisKZGlmZiAtLWdpdCBhL2RvYy9iZWlzcGllbGUvcm90YXVnZW52YW1waXJlL3JvdGF1Z2VudmFtcGlybWFnaWVyaW4uYyBiL2RvYy9iZWlzcGllbGUvcm90YXVnZW52YW1waXJlL3JvdGF1Z2VudmFtcGlybWFnaWVyaW4uYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5iNTA2ZTFlCi0tLSAvZGV2L251bGwKKysrIGIvZG9jL2JlaXNwaWVsZS9yb3RhdWdlbnZhbXBpcmUvcm90YXVnZW52YW1waXJtYWdpZXJpbi5jCkBAIC0wLDAgKzEsNDggQEAKKy8qCisgICBFaW4gbWFnaXNjaCBiZWdhYnRlciBCZWlzcGllbC1OUEMgKHZvbiBaZXNzdHJhLCBhbmdlbGVobnQgYW4gQm9pbmdzCisgICBic3Btb24xLmMpCisgICBJbiBkaWVzZW0gRmFsbCBzb2xsIGVpbmUgTWFnaWVyaW4gc2VpbiwgZGllIGFiZXIgZGllIGdsZWljaGVuIFN0YXRzIHdpZSBkZXIKKyAgIG1hZW5ubGljaGUgS29sbGVnZSBoYXQuCisqLworCisvLyBEaWVzZSBQcmFnbWFzIHNvcmdlbiBkYWZ1ZXIsIGRhc3MgZGVyIERyaXZlciBkYXJhdWYgYWNodGV0LCBkYXNzIGJlaQorLy8gRnVua3Rpb25zYXJndW1lbnRlbiwgLVJ1ZWNrZ2FiZXdlcnRlbiB1bmQgdGVpbHdlaXNlIGJlaSBadXdlaXN1bmcgdm9uCisvLyBXZXJ0ZW4gYW4gVmFyaWFibGVuIGRlciByaWNodGlnZSBEYXRlbnR5cCB2ZXJ3ZW5kZXQgd2lyZCAoei5iLiBrZWluIHN0cmluZworLy8gYW5zdGVsbGUgZWluZXMgaW50IHZlcndlbmRldCB3aXJkKS4gU29sbHRlIGluIGtlaW5lbSBPYmpla3QgZmVobGVuLgorI3ByYWdtYSBzdHJvbmdfdHlwZXMsIHNhdmVfdHlwZXMsIHJ0dF9jaGVja3MKKy8vIEVpbmlnZSBXYXJudW5nZW4gd2VyZGVuIGFscyBGZWhsZXIgYmV0cmFjaHRldCAoZW1wZm9obGVuKQorI3ByYWdtYSBwZWRhbnRpYywgcmFuZ2VfY2hlY2sKKy8vIFNjaGFsdGV0IGJlc3RpbW10ZSBXYXJudW5nZW4gZWluIChlbXBmb2hsZW4pCisjcHJhZ21hIHdhcm5fZGVwcmVjYXRlZCwgd2Fybl9lbXB0eV9jYXN0cywgd2Fybl9taXNzaW5nX3JldHVybgorI3ByYWdtYSB3YXJuX2Z1bmN0aW9uX2luY29uc2lzdGVudAorCisvLyBEaWVzZXIgTlBDIHNvbGwgZWluZSBSb3RhdWdlbnZhbXBpcm1hZ2llcmluIHNlaW4uIFVuZCBuZW4KKy8vIFJvdGF1Z2VudmFtcGlybWFnaWVyIGdpYnQgZXMgc2Nob24uIEFsc28gZWluZmFjaCBkZW4gbm9ybWFsZW4KKy8vIFJvdGF1Z2VudmFtcGlybWFnaWVyIGF1cyBkaWVzZW0gVmVyemVpY2huaXMgZXJiZW4uCitpbmhlcml0IF9fRElSX18rInJvdGF1Z2VudmFtcGlybWFnaWVyIjsKKworLy8gSW5rbHVkaWVydCBEZWZpbml0aW9uZW4gZnVlciBQcm9wZXJ0aWVzCisjaW5jbHVkZSA8cHJvcGVydGllcy5oPgorI2luY2x1ZGUgPGxhbmd1YWdlLmg+IC8vIGZ1ZXIgRkVNQUxFLURlZmluZQorCitwcm90ZWN0ZWQgdm9pZCBjcmVhdGUoKQoreworICAvLyBOaWNodCB2ZXJnZXNzZW4sIG9obmUgZGFzIGdlaHQgbmljaHRzLiBGdWVocnQgZGFzIGNyZWF0ZSgpIGRlcyBnZWVyYnRlbgorICAvLyBSb3RhdWdlbnZhbXBpcm1hZ2llcnMgYXVzIHVuZCBrb25maWd1cmllcnQgaWhuLgorICA6OmNyZWF0ZSgpOworCisgIC8vIEdlc2NobGVjaHQgYWVuZGVybi4KKyAgU2V0UHJvcChQX0dFTkRFUiwgRkVNQUxFKTsKKworICAvLyBLdXJ6LSB1bmQgTGFuZ2Jlc2NocmVpYnVuZyBhZW5kZXJuLgorICBTZXRQcm9wKFBfU0hPUlQsICJSb3RhdWdlbnZhbXBpcm1hZ2llcmluIik7CisgIFNldFByb3AoUF9MT05HLCBicmVha19zdHJpbmcoCisgICAgIkVpbmUgZmluc3RlciBhdXNzZWhlbmRlIFJvdGF1Z2VudmFtcGlybWFnaWVyaW4gaW4gZWluZXIgS3V0dGUuIiw3OCkpOworCisgIC8vIE5hbWUgYW5wYXNzZW4KKyAgU2V0UHJvcChQX05BTUUsICJSb3RhdWdlbnZhbXBpcm1hZ2llcmluIik7CisKKyAgLy8gTWVsZHVuZyBhbnBhc3Nlbi4KKyAgU2V0UHJvcChQX0hBTkRTLCAoeyIgbWl0IGlocmVuIEhhZW5kZW4iLCA4NX0pKTsKK30KKwpkaWZmIC0tZ2l0IGEvZG9jL2JlaXNwaWVsZS9zaGFkb3cvYWEuYyBiL2RvYy9iZWlzcGllbGUvc2hhZG93L2FhLmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMTc5ZDdlMwotLS0gL2Rldi9udWxsCisrKyBiL2RvYy9iZWlzcGllbGUvc2hhZG93L2FhLmMKQEAgLTAsMCArMSw4IEBACisgICAgIHZvaWQgZnVuKCkgeworICAgICAgICAgcHJpbnRmKCIlTyBbYV0gZnVuKClcbiIsIHRoaXNfb2JqZWN0KCkpOworICAgICB9CisKKyAgICAgdm9pZCBmdW4zKCkgeworICAgICAgICAgcHJpbnRmKCIlTyBbYV0gZnVuMygpXG4iLCB0aGlzX29iamVjdCgpKTsKKyAgICAgfQorCmRpZmYgLS1naXQgYS9kb2MvYmVpc3BpZWxlL3NoYWRvdy9iYi5jIGIvZG9jL2JlaXNwaWVsZS9zaGFkb3cvYmIuYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi45Yzc3MDkwCi0tLSAvZGV2L251bGwKKysrIGIvZG9jL2JlaXNwaWVsZS9zaGFkb3cvYmIuYwpAQCAtMCwwICsxLDEzIEBACisgICAgIGludCBmdW4oKSB7CisgICAgICAgICBwcmludGYoIiVPIFtiXSBmdW4oKVxuIiwgdGhpc19vYmplY3QoKSk7CisgICAgICAgICBmaW5kX29iamVjdCgiL2RvYy9iZWlzcGllbGUvc2hhZG93L2FhIiktPmZ1bigpOworICAgICB9CisKKyAgICAgdm9pZCBmdW4yKCkgeworICAgICAgICAgcHJpbnRmKCIlTyBbYl0gZnVuMigpXG4iLCB0aGlzX29iamVjdCgpKTsKKyAgICAgICAgIGZpbmRfb2JqZWN0KCIvZG9jL2JlaXNwaWVsZS9zaGFkb3cvYWEiKS0+ZnVuMygpOworICAgICAgICAgdGhpc19vYmplY3QoKS0+ZnVuMygpOworICAgICB9CisKKyAgICAgdm9pZCBkb19zaGFkb3cob2JqZWN0IHRhcmdldCkgeyBzaGFkb3codGFyZ2V0LCAxKTsgfQorCmRpZmYgLS1naXQgYS9kb2MvYmVpc3BpZWxlL3NoYWRvdy9jYy5jIGIvZG9jL2JlaXNwaWVsZS9zaGFkb3cvY2MuYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44YWE2MGVkCi0tLSAvZGV2L251bGwKKysrIGIvZG9jL2JlaXNwaWVsZS9zaGFkb3cvY2MuYwpAQCAtMCwwICsxLDExIEBACisgICAgIGludCBmdW4oKSB7CisgICAgICAgICBwcmludGYoIiVPIFtjXSBmdW4oKVxuIiwgdGhpc19vYmplY3QoKSk7CisgICAgICAgICBmaW5kX29iamVjdCgiL2RvYy9iZWlzcGllbGUvc2hhZG93L2FhIiktPmZ1bigpOworICAgICB9CisKKyAgICAgdm9pZCBmdW4zKCkgeworICAgICAgICAgcHJpbnRmKCIlTyBbY10gZnVuMygpXG4iLCB0aGlzX29iamVjdCgpKTsKKyAgICAgfQorCisgICAgIHZvaWQgZG9fc2hhZG93KG9iamVjdCB0YXJnZXQpIHsgc2hhZG93KHRhcmdldCwgMSk7IH0KKwpkaWZmIC0tZ2l0IGEvZG9jL2JlaXNwaWVsZS9zaGFkb3cvbG9hZG1lLmMgYi9kb2MvYmVpc3BpZWxlL3NoYWRvdy9sb2FkbWUuYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi45ZDZlNGQ1Ci0tLSAvZGV2L251bGwKKysrIGIvZG9jL2JlaXNwaWVsZS9zaGFkb3cvbG9hZG1lLmMKQEAgLTAsMCArMSwyNCBAQAordm9pZCBjcmVhdGUoKSB7CisgICAgIG9iamVjdCBhLCBiLCBjOworCisgICAgIGlmIChmaW5kX29iamVjdCgiL2RvYy9iZWlzcGllbGUvc2hhZG93L2FhIikpCisgICAgICAgZGVzdHJ1Y3QoZmluZF9vYmplY3QoIi9kb2MvYmVpc3BpZWxlL3NoYWRvdy9hYSIpKTsKKyAgICAgYSA9IGxvYWRfb2JqZWN0KCIvZG9jL2JlaXNwaWVsZS9zaGFkb3cvYWEiKTsKKyAgICAgaWYgKGZpbmRfb2JqZWN0KCIvZG9jL2JlaXNwaWVsZS9zaGFkb3cvYmIiKSkKKyAgICAgICBkZXN0cnVjdChmaW5kX29iamVjdCgiL2RvYy9iZWlzcGllbGUvc2hhZG93L2JiIikpOworICAgICBiID0gbG9hZF9vYmplY3QoIi9kb2MvYmVpc3BpZWxlL3NoYWRvdy9iYiIpOworICAgICBpZiAoZmluZF9vYmplY3QoIi9kb2MvYmVpc3BpZWxlL3NoYWRvdy9jYyIpKQorICAgICAgIGRlc3RydWN0KGZpbmRfb2JqZWN0KCIvZG9jL2JlaXNwaWVsZS9zaGFkb3cvY2MiKSk7CisgICAgIGMgPSBsb2FkX29iamVjdCgiL2RvYy9iZWlzcGllbGUvc2hhZG93L2NjIik7CisKKyAgICAgYi0+ZG9fc2hhZG93KGEpOworICAgICBjLT5kb19zaGFkb3coYSk7CisgICAgIHByaW50ZigiLS0tIGEtPmZ1bigpIC0tLVxuIik7CisgICAgIGEtPmZ1bigpOworICAgICBwcmludGYoIi0tLSBiLT5mdW4oKSAtLS1cbiIpOworICAgICBiLT5mdW4oKTsKKyAgICAgcHJpbnRmKCItLS0gYy0+ZnVuKCkgLS0tXG4iKTsKKyAgICAgYy0+ZnVuKCk7CisgICAgIHByaW50ZigiLS0tIGItPmZ1bjIoKSAtLS1cbiIpOworICAgICBiLT5mdW4yKCk7Cit9CmRpZmYgLS1naXQgYS9kb2MvYmVpc3BpZWxlL3NzcC9SRUFETUUgYi9kb2MvYmVpc3BpZWxlL3NzcC9SRUFETUUKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYmQxY2FkMQotLS0gL2Rldi9udWxsCisrKyBiL2RvYy9iZWlzcGllbGUvc3NwL1JFQURNRQpAQCAtMCwwICsxLDMgQEAKK0RpZXNlIERhdGVpZW4gc2luZCBudXIgYWxzIEJlaXNwaWVsZSB6dSB2ZXJ3ZW5kZW4gdW5kIG5pY2h0IGluIGVpbmVtCithbmRlcmVuIE11ZCBhbHMgZGVtIE1vcmdlbkdyYXVlbiBmdWVyIFNwaWVsZXIgenVnYWVuZ2xpY2ggenUgbWFjaGVuLgorICBCb2luZwpkaWZmIC0tZ2l0IGEvZG9jL2JlaXNwaWVsZS9zc3AvZmlsZXMuaCBiL2RvYy9iZWlzcGllbGUvc3NwL2ZpbGVzLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOGM1OTUxYQotLS0gL2Rldi9udWxsCisrKyBiL2RvYy9iZWlzcGllbGUvc3NwL2ZpbGVzLmgKQEAgLTAsMCArMSwxMyBAQAorI2RlZmluZSBTTSh4KSAoIi9kb2MvYmVpc3BpZWxlL3NzcC8iK3gpCisjZGVmaW5lIEwxKHgpIChTTSgibDEvIit4KSkKKyNkZWZpbmUgTDIoeCkgKFNNKCJsMi8iK3gpKQorI2RlZmluZSBMMyh4KSAoU00oImwzLyIreCkpCisjZGVmaW5lIEw0KHgpIChTTSgibDQvIit4KSkKKyNkZWZpbmUgTDUoeCkgKFNNKCJsNS8iK3gpKQorI2RlZmluZSBMNih4KSAoU00oImw2LyIreCkpCisjZGVmaW5lIE1PTih4KSAoU00oIm1vbi8iK3gpKQorI2RlZmluZSBPQkooeCkgKFNNKCJvYmovIit4KSkKKworI2RlZmluZSBMT0dfT0JKICIvcGxheWVycy9ib2luZy9vYmovbG9nb2JqIgorI2RlZmluZSBQRkxBTlpFICIvZG9jL2JlaXNwaWVsZS9zc3AvbW9uL3BmbGFuemUiCisjZGVmaW5lIE1NT05TVCAiL2RvYy9iZWlzcGllbGUvc3NwL21vbi9tZXRhbGxtb25zdGVyIgpkaWZmIC0tZ2l0IGEvZG9jL2JlaXNwaWVsZS9zc3AvbDEvbTF4MS5jIGIvZG9jL2JlaXNwaWVsZS9zc3AvbDEvbTF4MS5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmY5NTQzNzIKLS0tIC9kZXYvbnVsbAorKysgYi9kb2MvYmVpc3BpZWxlL3NzcC9sMS9tMXgxLmMKQEAgLTAsMCArMSwzMCBAQAoraW5oZXJpdCAic3RkL3Jvb20iOworCisjaW5jbHVkZSA8cHJvcGVydGllcy5oPgorI2luY2x1ZGUgPHJvb21zLmg+CisjaW5jbHVkZSAiLi4vZmlsZXMuaCIKKworY3JlYXRlKCkKK3sKKyAgcmVwbGFjZV9wcm9ncmFtKCJzdGQvcm9vbSIpOworICA6OmNyZWF0ZSgpOworICBTZXRQcm9wKFBfTElHSFQsIDApOworICBTZXRQcm9wKFBfSU5ET09SUywgMSk7CisgIFNldFByb3AoUF9JTlRfU0hPUlQsICJNZXRhbGxlYmVuZSIpOworICBTZXRQcm9wKFBfSU5UX0xPTkcsCisgICJEdSBiaXN0IGltIEhvZWhsZW5sYWJ5cmludGggZGVyIFNjaHJlY2tlbnNzcGl0emUuIERlciBSYXVtIGlzdCBnZWZ1ZWxsdFxuIisKKyAgIm1pdCBncmF1LWJsYXVlbSBSYXVjaCwgZGVyIHZvbiBkZW0gZ3Jvc3NlbiBEcmFjaGVuIHN0YW1tdCwgZGVyIGlobiBiZS1cbiIrCisgICJ3b2hudC4gRXMgaXN0IHNlaHIgd2FybSBoaWVyIGRyaW4gdW5kIGFuIGRlbiBXYWVuZGVuIHVuZCBhbiBkZXIgRGVja2VcbiIrCisgICJrb25kZW5zaWVydCBkZXIgRGFtcGYgenUga2xlaW5lbiBUcm9wZmVuLiBEZXIgZWluemlnZSBBdXNnYW5nIGxpZWd0IGltXG4iKworICAiT3N0ZW4uXG4iKTsKKyAgQWRkRGV0YWlsKCJyYXVtIiwgIkVpbiBEcmFjaGUgd29obnQgaGllciBub3JtYWxlcndlaXNlLlxuIik7CisgIEFkZERldGFpbCgoeyJkcmFjaGUiLCAiZHJhY2hlbiJ9KSwgIkVyIHNjaGVpbnQgZ2VyYWRlIG5pY2h0IGRhIHp1IHNlaW4uXG4iKTsKKyAgQWRkRGV0YWlsKCJyYXVjaCIsICJEZXIgUmF1Y2ggemllaHQgenVtIEF1c2dhbmcgaW0gT3N0ZW4gaGluYXVzLlxuIik7CisgIEFkZERldGFpbCgoeyJ3YW5kIiwgIndhZW5kZSIsICJib2RlbiIsICJkZWNrZSIsICJtZXRhbGwiLCAic3RhaGwifSksICJBbGxlcyBoaWVyIGlzdCBhdXMgcmVpbmVtIFN0YWhsLlxuIik7CisgIEFkZERldGFpbCgiZGFtcGYiLCAiRXIga29uZGVuc2llcnQgYW4gZGVuIFdhZW5kZW4uXG4iKTsKKyAgQWRkRGV0YWlsKCh7Indhc3NlciIsICJrb25kZW5zd2Fzc2VyIn0pLCAiRXMgdHJvcGZ0IHp1IEJvZGVuLlxuIik7CisgIEFkZERldGFpbCgidHJvcGZlbiIsICJTaWUgdHJvcGZlbiBhdWYgZGVuIEJvZGVuLlxuIik7CisgIEFkZERldGFpbCgiYXVzZ2FuZyIsICJFciBsaWVndCBpbSBPc3Rlbi5cbiIpOworICBBZGRJdGVtKE1PTigic3RhaGxkcmFjaGUiKSwgUkVGUkVTSF9SRU1PVkUpOworICBBZGRFeGl0KCJvc3RlbiIsTDEoIm0yeDEiKSk7Cit9CmRpZmYgLS1naXQgYS9kb2MvYmVpc3BpZWxlL3NzcC9sMS9tMXgyLmMgYi9kb2MvYmVpc3BpZWxlL3NzcC9sMS9tMXgyLmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYzkxMzU1YQotLS0gL2Rldi9udWxsCisrKyBiL2RvYy9iZWlzcGllbGUvc3NwL2wxL20xeDIuYwpAQCAtMCwwICsxLDI3IEBACitpbmhlcml0ICJzdGQvcm9vbSI7CisKKyNpbmNsdWRlIDxwcm9wZXJ0aWVzLmg+CisjaW5jbHVkZSA8cm9vbXMuaD4KKyNpbmNsdWRlICIuLi9maWxlcy5oIgorCitjcmVhdGUoKQoreworICByZXBsYWNlX3Byb2dyYW0oInN0ZC9yb29tIik7CisgIDo6Y3JlYXRlKCk7CisgIFNldFByb3AoUF9MSUdIVCwgMCk7CisgIFNldFByb3AoUF9JTlRfU0hPUlQsICJNZXRhbGxlYmVuZSIpOworICBTZXRQcm9wKFBfSU5UX0xPTkcsCisgICJEdSBiaXN0IGltIEhvZWhsZW5sYWJ5cmludGggZGVyIFNjaHJlY2tlbnNzcGl0emUuIEluIGRpZXNlciBnZW11ZXRsaWNoZW5cbiIrCisgICJFY2tlIChuYXR1ZXJsaWNoIG51ciBmdWVyIE1ldGFsbCBsaWViZW5kZSBMZWJld2VzZW4pIGhhdCBzaWNoIHdvaGwgZWluZVxuIisKKyAgImRlciBtZXJrd3VlcmRpZ2VuIFRpdGFud2FsemVuIGVpbmdlbmlzdGV0LCBhdWYgamVkZW4gRmFsbCBpc3QgZGVyIEJvZGVuXG4iKworICAiZGVybWFzc2VuIHBsYXR0Z2V3YWx6dCwgd2llIGVzIG51ciBkaWVzZSBBcnQgc2NoYWZmZW4ga2Fubi4gRGVyIEdhbmdcbiIrCisgICJzZWxic3QgZnVlaHJ0IGhpZXIgbmFjaCBTdWVkZW4gdW5kIE9zdGVuLlxuIik7CisgIEFkZERldGFpbCgiZWNrZSIsICJSaWNodGlnIG5ldHQgaGllciAuLi5cbiIpOworICBBZGREZXRhaWwoKHsid2FuZCIsICJ3YWVuZGUiLCAiZGVja2UiLCAibWV0YWxsIn0pLCAiQWxsZXMgaGllciBpc3QgYXVzIE1ldGFsbC5cbiIpOworICBBZGREZXRhaWwoKHsid2FsemUiLCAidGl0YW53YWx6ZSJ9KSwgIkRpZSBUaXRhbndhbHplIHNjaGVpbnQgZ2VyYWRlIG5pY2h0IGRhaGVpbSB6dSBzZWluLlxuIik7CisgIEFkZERldGFpbCgiYm9kZW4iLCAiRGVyIEJvZGVuIGlzdCBhYnNvbHV0IHBsYXR0LlxuIik7CisgIEFkZERldGFpbCgiZ2FuZyIsICJFaW4gYXVzIE1ldGFsbCBnZWFyYmVpdGV0ZXIgR2FuZy5cbiIpOworICBBZGRFeGl0KCJzdWVkZW4iLEwxKCJtMXgzIikpOworICBBZGRFeGl0KCJvc3RlbiIsTDEoIm0yeDIiKSk7CisgIEFkZEl0ZW0oTU9OKCJ0aXRhbndhbHplIiksIFJFRlJFU0hfUkVNT1ZFKTsKK30KZGlmZiAtLWdpdCBhL2RvYy9iZWlzcGllbGUvc3NwL2wxL20xeDMuYyBiL2RvYy9iZWlzcGllbGUvc3NwL2wxL20xeDMuYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi42MDkzMDI5Ci0tLSAvZGV2L251bGwKKysrIGIvZG9jL2JlaXNwaWVsZS9zc3AvbDEvbTF4My5jCkBAIC0wLDAgKzEsMjQgQEAKK2luaGVyaXQgInN0ZC9yb29tIjsKKworI2luY2x1ZGUgPHByb3BlcnRpZXMuaD4KKyNpbmNsdWRlICIuLi9maWxlcy5oIgorCitjcmVhdGUoKQoreworICByZXBsYWNlX3Byb2dyYW0oInN0ZC9yb29tIik7CisgIDo6Y3JlYXRlKCk7CisgIFNldFByb3AoUF9MSUdIVCwgMCk7CisgIFNldFByb3AoUF9JTkRPT1JTLCAxKTsKKyAgU2V0UHJvcChQX0lOVF9TSE9SVCwgIk1ldGFsbGViZW5lIik7CisgIFNldFByb3AoUF9JTlRfTE9ORywKKyAgIkR1IGJpc3QgaW0gSG9laGxlbmxhYnlyaW50aCBkZXIgU2NocmVja2Vuc3NwaXR6ZS4gRWluZSBsYW5nZSBNZXRhbGxyb2VocmVcbiIrCisgICJmdWVocnQgd2VpdGVyIHZvbiBTdWVkZW4gbmFjaCBOb3JkZW4gdW5kIHNjaGVpbnQga2VpbiBFbmRlIHp1IG5laG1lbi4gRGVpbmVcbiIrCisgICJTY2hyaXR0ZSBoYWxsZW4gYmxlY2hlcm4gZHVyY2ggZGllIEdhZW5nZSB1bmQgaW5mb3JtaWVyZW4gZGVyZW4gQmV3b2huZXJcbiIrCisgICJ1ZWJlciBEZWluZSBBbndlc2VuaGVpdC5cbiIpOworICBBZGREZXRhaWwoKHsibWV0YWxscm9laHJlIiwgInJvZWhyZSIsICJnYW5nIiwgImdhZW5nZSJ9KSwgIkR1IGJlZmluZGVzdCBEaWNoIGluIGVpbmVyIGxhbmdlbiBNZXRhbGxyb2VocmUuXG4iKTsKKyAgQWRkRGV0YWlsKCJtZXRhbGwiLCAiRGFzIE1ldGFsbCBzaWVodCBzZWhyIHN0YWJpbCBhdXMuXG4iKTsKKyAgQWRkRGV0YWlsKCh7ImJvZGVuIiwgImRlY2tlIiwgIndhbmQiLCAid2FlbmRlIn0pLCAiQWxsZXMgaXN0IGF1cyBNZXRhbGwuXG4iKTsKKyAgQWRkRGV0YWlsKCJiZXdvaG5lciIsICJIaWVyIHNjaGVpbmVuIGtlaW5lIHp1IHNlaW4uXG4iKTsKKyAgQWRkRXhpdCgibm9yZGVuIixMMSgibTF4MiIpKTsKKyAgQWRkRXhpdCgic3VlZGVuIixMMSgibTF4NCIpKTsKK30KZGlmZiAtLWdpdCBhL2RvYy9iZWlzcGllbGUvc3NwL2wxL20xeDQuYyBiL2RvYy9iZWlzcGllbGUvc3NwL2wxL20xeDQuYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5hMjc5YWFkCi0tLSAvZGV2L251bGwKKysrIGIvZG9jL2JlaXNwaWVsZS9zc3AvbDEvbTF4NC5jCkBAIC0wLDAgKzEsMjQgQEAKK2luaGVyaXQgInN0ZC9yb29tIjsKKworI2luY2x1ZGUgPHByb3BlcnRpZXMuaD4KKyNpbmNsdWRlICIuLi9maWxlcy5oIgorCitjcmVhdGUoKQoreworICByZXBsYWNlX3Byb2dyYW0oInN0ZC9yb29tIik7CisgIDo6Y3JlYXRlKCk7CisgIFNldFByb3AoUF9MSUdIVCwgMCk7CisgIFNldFByb3AoUF9JTkRPT1JTLCAxKTsKKyAgU2V0UHJvcChQX0lOVF9TSE9SVCwgIk1ldGFsbGViZW5lIik7CisgIFNldFByb3AoUF9JTlRfTE9ORywKKyAgIkR1IGJpc3QgaW0gSG9laGxlbmxhYnlyaW50aCBkZXIgU2NocmVja2Vuc3NwaXR6ZS4gRGllIE1ldGFsbHJvZWhyZSwgaW4gZGVyXG4iKworICAiRHUgRGljaCBiZWZpbmRlc3QgZnVlaHJ0IHZvbiBTdWVkZW4gbmFjaCBOb3JkZW4uIEF1Y2ggaGllciBrbGluZ3QgZGVyIEJvZGVuXG4iKworICAidW50ZXIgRGVpbmVuIEZ1ZXNzZW4gcmVjaHQgaG9obCwgZXMgaXN0IHdvaGwgd2lya2xpY2ggZXR3YXMgQmVzb25kZXJlc1xuIisKKyAgImRhcnVudGVyLiBBbGxlcmRpbmdzIHNpbmQga2VpbmVybGVpIEFuemVpY2hlbiBmdWVyIGVpbmVuIFp1Z2FuZyB6dSBzZWhlbi5cbiIpOworICBBZGREZXRhaWwoKHsiZ2FuZyIsICJyb2VocmUiLCAibWV0YWxscm9laHJlIn0pLCAiRGVyIEdhbmcgZnVlaHJ0IG5hY2ggTm9yZGVuIHVuZCBTdWVkZW4uXG4iKTsKKyAgQWRkRGV0YWlsKCJtZXRhbGwiLCAiSGFydGVzLCBnbGFlbnplbmRlcyBNZXRhbGwuXG4iKTsKKyAgQWRkRGV0YWlsKCh7IndhbmQiLCAid2FlbmRlIiwgImJvZGVuIiwgImRlY2tlIn0pLCAiQWxsZXMgaXN0IGF1cyBNZXRhbGwuXG4iKTsKKyAgQWRkRGV0YWlsKCJ6dWdhbmciLCAiRXMgaXN0IGtlaW5lciB6dSBzZWhlbi5cbiIpOworICBBZGRFeGl0KCJub3JkZW4iLEwxKCJtMXgzIikpOworICBBZGRFeGl0KCJzdWVkZW4iLEwxKCJtMXg1IikpOworfQpkaWZmIC0tZ2l0IGEvZG9jL2JlaXNwaWVsZS9zc3AvbDEvbTF4NS5jIGIvZG9jL2JlaXNwaWVsZS9zc3AvbDEvbTF4NS5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjY5NGZiNmEKLS0tIC9kZXYvbnVsbAorKysgYi9kb2MvYmVpc3BpZWxlL3NzcC9sMS9tMXg1LmMKQEAgLTAsMCArMSwzMSBAQAoraW5oZXJpdCAic3RkL3Jvb20iOworCisjaW5jbHVkZSA8cHJvcGVydGllcy5oPgorI2luY2x1ZGUgPHJvb21zLmg+CisjaW5jbHVkZSA8bW92aW5nLmg+CisjaW5jbHVkZSAiLi4vZmlsZXMuaCIKKworY3JlYXRlKCkKK3sKKyAgOjpjcmVhdGUoKTsKKyAgU2V0UHJvcChQX0xJR0hULCAwKTsKKyAgU2V0UHJvcChQX0lORE9PUlMsIDEpOworICBTZXRQcm9wKFBfSU5UX1NIT1JULCAiTWV0YWxsZWJlbmUiKTsKKyAgU2V0UHJvcChQX0lOVF9MT05HLAorICAiRHUgYmlzdCBpbSBIb2VobGVubGFieXJpbnRoIGRlciBTY2hyZWNrZW5zc3BpdHplLiBEZXIgdm9lbGxpZyBtaXQgTWV0YWxsXG4iKworICAidmVya2xlaWRldGUgR2FuZyBtYWNodCBoaWVyIGVpbmUgQmllZ3VuZyB2b24gT3N0ZW4gbmFjaCBOb3JkZW4sIHdvIGVyXG4iKworICAiaW4gZGllIHNjaHdhcnplIER1bmtlbGhlaXQgZnVlaHJ0LiBEZWluZSBTY2hyaXR0ZSBoYWxsZW4gaGllciBsZWljaHQgbmFjaCxcbiIrCisgICJlcyBzY2hlaW50IHNpY2ggd29obCBlaW4gSG9obHJhdW0gdW50ZXIgZGVtIEJvZGVuIHp1IGJlZmluZGVuLlxuIik7CisgIEFkZERldGFpbCgibWV0YWxsIiwgIkVzIHNjaGVpbnQgRWlzZW4gb2RlciBTdGFobCB6dSBzZWluLlxuIik7CisgIEFkZERldGFpbCgoeyJlaXNlbiIsICJzdGFobCJ9KSwgIkR1IHdlaXNzdCBuaWNodCBnZW5hdSwgb2IgZXMgRWlzZW4gb2RlciBTdGFobCBpc3QuXG4iKTsKKyAgQWRkRGV0YWlsKCh7ImdhbmciLCAicm9laHJlIn0pLCAiRGVyIEdhbmcgbWFjaHQgZWluZW4gS25pY2suXG4iKTsKKyAgQWRkRGV0YWlsKCJkdW5rZWxoZWl0IiwgIlNpZSB2ZXJzY2hsaW5ndCBhbGxlcy5cbiIpOworICBBZGREZXRhaWwoKHsid2FuZCIsICJ3YWVuZGUiLCAiYm9kZW4iLCAiZGVja2UifSksICJBbGxlcyBpc3QgYXVzIE1ldGFsbC5cbiIpOworICBBZGREZXRhaWwoImhvaGxyYXVtIiwgIkR1IGthbm5zdCBrZWluZSBIaW53ZWlzZSBhdWYgZWluZW4gWnVnYW5nIGZpbmRlbi5cbiIpOworICBBZGREZXRhaWwoInp1Z2FuZyIsICJEdSBzaWVoc3Qga2VpbmVuLlxuIik7CisgIEFkZERldGFpbCgoeyJrbmljayIsICJiaWVndW5nIn0pLCAiU28gbmVubnQgc2ljaCBzb3dhcyBoYWx0IC4uLiBpY2gga2FubiBuaXggZGFmdWVyIVxuIik7CisgIEFkZEl0ZW0oTU9OKCJrYW1wZmJsZWNoIiksIFJFRlJFU0hfUkVNT1ZFKTsKKyAgCisgIEFkZEV4aXQoIm5vcmRlbiIsIEwxKCJtMXg0IikpOworICBBZGRFeGl0KCJvc3RlbiIsTDEoIm0yeDUiKSk7Cit9CmRpZmYgLS1naXQgYS9kb2MvYmVpc3BpZWxlL3NzcC9sMS9tMngxLmMgYi9kb2MvYmVpc3BpZWxlL3NzcC9sMS9tMngxLmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZDRlN2FlNwotLS0gL2Rldi9udWxsCisrKyBiL2RvYy9iZWlzcGllbGUvc3NwL2wxL20yeDEuYwpAQCAtMCwwICsxLDI3IEBACitpbmhlcml0ICJzdGQvcm9vbSI7CisKKyNpbmNsdWRlIDxwcm9wZXJ0aWVzLmg+CisjaW5jbHVkZSAiLi4vZmlsZXMuaCIKKworY3JlYXRlKCkKK3sKKyAgcmVwbGFjZV9wcm9ncmFtKCJzdGQvcm9vbSIpOworICA6OmNyZWF0ZSgpOworICBTZXRQcm9wKFBfTElHSFQsIDApOworICBTZXRQcm9wKFBfSU5ET09SUywgMSk7CisgIFNldFByb3AoUF9JTlRfU0hPUlQsICJNZXRhbGxlYmVuZSIpOworICBTZXRQcm9wKFBfSU5UX0xPTkcsCisgICJEdSBiaXN0IGltIEhvZWhsZW5sYWJ5cmludGggZGVyIFNjaHJlY2tlbnNzcGl0emUuIERpZXNlciBHYW5nIGhpZXIgaXN0IGF1c1xuIisKKyAgInJlaW5zdGVtIFN0YWhsIGdlZmVydGlndCwgZGVyIGluIERlaW5lbSBMaWNodCBtYXR0IGZ1bmtlbHQuIEF1cyBlaW5lclxuIisKKyAgIkthbW1lciBpbSBXZXN0ZW4gZHJpbmdlbiBSYXVjaHNjaHdhZGVuIGhlcnZvciB1bmQgZWluIFNjaG5hdWJlbiBpc3QgenVcbiIrCisgICJob2VyZW4uIER1IGthbm5zdCBlcyBhbGxlcmRpbmdzIGF1Y2ggdm9yemllaGVuLCBuYWNoIFN1ZWRlbiBkZW0gVW5oZWlsXG4iKworICAienUgZW50Z2VoZW4uXG4iKTsKKyAgQWRkRGV0YWlsKCh7ImdhbmciLCAiZ2FlbmdlIiwgInJvZWhyZSIsICJyb2VocmVuIn0pLCAiRGVyIEdhbmcgbWFjaHQgZWluZSBCaWVndW5nIHZvbiBTdWVkZW4gbmFjaCBXZXN0ZW4uXG4iKTsKKyAgQWRkRGV0YWlsKCh7ImJvZGVuIiwgImRlY2tlIiwgIndhbmQiLCAid2FlbmRlIiwgIm1ldGFsbCIsICJzdGFobCJ9KSwgIkFsbGVzIGhpZXIgaXN0IGF1cyBoYXJ0ZW0gU3RhaGwuXG4iKTsKKyAgQWRkRGV0YWlsKCJrYW1tZXIiLCAiSW0gV2VzdGVuIGxpZWd0IGVpbmUgS2FtbWVyLlxuIik7CisgIEFkZERldGFpbCgoeyJyYXVjaHNjaHdhZGVuIiwgInJhdWNoIiwgInNjaHdhZGVuIn0pLCAiRGVyIFJhdWNoIHppZWh0IGR1cmNoIGVpbiBwYWFyIFJpdHplbiBpbiBkZXIgRGVja2UgYWIuXG4iKTsKKyAgQWRkRGV0YWlsKCh7InJpdHplIiwgInJpdHplbiJ9KSwgIkRpZSBSaXR6ZW4gaGFiZW4gbmljaHRzIEJlbWVya2Vuc3dlcnRlcyBhbiBzaWNoLlxuIik7CisgIEFkZERldGFpbCgic2NobmF1YmVuIiwgIlZvbiB3ZW0gd29obCBkYXMgU2NobmF1YmVuIGtvbW10P1xuIik7CisgIEFkZEV4aXQoIndlc3RlbiIsTDEoIm0xeDEiKSk7CisgIEFkZEV4aXQoInN1ZWRlbiIsTDEoIm0yeDIiKSk7Cit9CmRpZmYgLS1naXQgYS9kb2MvYmVpc3BpZWxlL3NzcC9sMS9tMngyLmMgYi9kb2MvYmVpc3BpZWxlL3NzcC9sMS9tMngyLmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOGNlZmNjZAotLS0gL2Rldi9udWxsCisrKyBiL2RvYy9iZWlzcGllbGUvc3NwL2wxL20yeDIuYwpAQCAtMCwwICsxLDI2IEBACitpbmhlcml0ICJzdGQvcm9vbSI7CisKKyNpbmNsdWRlIDxwcm9wZXJ0aWVzLmg+CisjaW5jbHVkZSAiLi4vZmlsZXMuaCIKKworY3JlYXRlKCkKK3sKKyAgcmVwbGFjZV9wcm9ncmFtKCJzdGQvcm9vbSIpOworICA6OmNyZWF0ZSgpOworICBTZXRQcm9wKFBfTElHSFQsIDApOworICBTZXRQcm9wKFBfSU5ET09SUywgMSk7CisgIFNldFByb3AoUF9JTlRfU0hPUlQsICJNZXRhbGxlYmVuZSIpOworICBTZXRQcm9wKFBfSU5UX0xPTkcsCisgICJEdSBiaXN0IGltIEhvZWhsZW5sYWJ5cmludGggZGVyIFNjaHJlY2tlbnNzcGl0emUuIEhpZXIgdmVyendlaWd0IHNpY2ggZGVyXG4iKworICAiR2FuZyBpbiB2ZXJzY2hpZWRlbmUgTWV0YWxscm9laHJlbiwgZGllIG5hY2ggTm9yZGVuLCBTdWVkZW4gdW5kIFdlc3RlblxuIisKKyAgImZ1ZWhyZW4uIEF1c3NlcmRlbSBpc3QgaW4gZGVyIERlY2tlIGVpbiBrbGVpbmVzIExvY2gsIGR1cmNoIGRhcyBlaW5lXG4iKworICAiTGVpdGVyIG5hY2ggb2JlbiBmdWVocnQuXG4iKTsKKyAgQWRkRGV0YWlsKCh7ImdhbmciLCAiZ2FlbmdlIiwgIm1ldGFsbHJvZWhyZSIsICJtZXRhbGxyb2VocmVuIiwgInJvZWhyZSIsICJyb2VocmVuIn0pLCAiR2FlbmdlIGZ1ZWhyZW4gaW4gZGllIHZlcnNjaGllZGVuc3RlbiBSaWNodHVuZ2VuLlxuIik7CisgIEFkZERldGFpbCgoeyJ3YW5kIiwgIndhZW5kZSIsICJib2RlbiIsICJtZXRhbGwifSksICJIaWVyIGlzdCBlaW5mYWNoIGFsbGVzIGF1cyBNZXRhbGwuXG4iKTsKKyAgQWRkRGV0YWlsKCJsZWl0ZXIiLCAiRGllIExlaXRlciBmdWVocnQgZHVyY2ggZWluIExvY2ggaW4gZGVyIERlY2tlIG5hY2ggb2Jlbi5cbiIpOworICBBZGREZXRhaWwoKHsibG9jaCIsICJkZWNrZSJ9KSwgIkluIGRlciBEZWNrZSBpc3QgZWluIExvY2guXG4iKTsKKyAgQWRkRXhpdCgic3VlZGVuIixMMSgibTJ4MyIpKTsKKyAgQWRkRXhpdCgibm9yZGVuIixMMSgibTJ4MSIpKTsKKyAgQWRkRXhpdCgid2VzdGVuIixMMSgibTF4MiIpKTsKKyAgQWRkRXhpdCgib2JlbiIsIEwxKCJvYmVuIikpOworfQpkaWZmIC0tZ2l0IGEvZG9jL2JlaXNwaWVsZS9zc3AvbDEvbTJ4My5jIGIvZG9jL2JlaXNwaWVsZS9zc3AvbDEvbTJ4My5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmYyOTFhYzIKLS0tIC9kZXYvbnVsbAorKysgYi9kb2MvYmVpc3BpZWxlL3NzcC9sMS9tMngzLmMKQEAgLTAsMCArMSwyNyBAQAoraW5oZXJpdCAic3RkL3Jvb20iOworCisjaW5jbHVkZSA8cHJvcGVydGllcy5oPgorI2luY2x1ZGUgPHJvb21zLmg+CisjaW5jbHVkZSAiLi4vZmlsZXMuaCIKKworY3JlYXRlKCkKK3sKKyAgcmVwbGFjZV9wcm9ncmFtKCJzdGQvcm9vbSIpOworICA6OmNyZWF0ZSgpOworICBTZXRQcm9wKFBfTElHSFQsIDApOworICBTZXRQcm9wKFBfSU5ET09SUywgMSk7CisgIFNldFByb3AoUF9JTlRfU0hPUlQsICJNZXRhbGxlYmVuZSIpOworICBTZXRQcm9wKFBfSU5UX0xPTkcsCisgICJEdSBiaXN0IGltIEhvZWhsZW5sYWJ5cmludGggZGVyIFNjaHJlY2tlbnNzcGl0emUuIERlciBHYW5nLCBpbiBkZW0gRHVcbiIrCisgICJEaWNoIGJlZmluZGVzdCBmdWVocnQgc2NobnVyZ2VyYWRlIHZvbiBOb3JkZW4gbmFjaCBTdWVkZW4uIERpZSBXYWVuZGVcbiIrCisgICJyZWZsZWt0aWVyZW4gZGFzIExpY2h0IHVuZCBEZWluZSBTY2hyaXR0ZSBlcnpldWdlbiBlaW5lbiBtZXRhbGxpc2NoZW5cbiIrCisgICJLbGFuZyBhdWYgZGVtIEJvZGVuLlxuIik7IAorICBBZGREZXRhaWwoKHsiYm9kZW4iLCAid2FuZCIsICJ3YWVuZGUiLCAiZGVja2UiLCAibWV0YWxsIn0pLCAiQWxsZXMgaXN0IGF1cyBNZXRhbGwuXG4iKTsKKyAgQWRkRGV0YWlsKCJnYW5nIiwgIkVyIGZ1ZWhydCBuYWNoIE5vcmRlbiB1bmQgU3VlZGVuLlxuIik7CisgIEFkZERldGFpbCgibGljaHQiLCAiRXMga29tbXQgaXJnZW5kd29oZXIuXG4iKTsKKyAgQWRkRGV0YWlsKCJzY2hyaXR0ZSIsICJXZW5uIER1IGxhZXVmc3QsIG1hY2hzdCBEdSBTY2hyaXR0ZSwgZGFzIHd1c3N0ZXN0IER1IGFiZXIsIG9kZXI/XG4iKTsKKyAgQWRkRGV0YWlsKCJrbGFuZyIsICJEZXIgS2xhbmcgaXN0IG5pY2h0IHNvbmRlcmxpY2ggaW50ZXJlc3NhbnQsIGFiZXIgendlaWZlbGxvcyB2b3JoYW5kZW4uXG4iKTsKKyAgQWRkRXhpdCgibm9yZGVuIixMMSgibTJ4MiIpKTsKKyAgQWRkRXhpdCgic3VlZGVuIixMMSgibTJ4NCIpKTsKKyAgQWRkSXRlbShNT04oImRvc2Vub2VmZm5lciIpLCBSRUZSRVNIX1JFTU9WRSk7Cit9CmRpZmYgLS1naXQgYS9kb2MvYmVpc3BpZWxlL3NzcC9sMS9tMng0LmMgYi9kb2MvYmVpc3BpZWxlL3NzcC9sMS9tMng0LmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNjc0YjQ0ZQotLS0gL2Rldi9udWxsCisrKyBiL2RvYy9iZWlzcGllbGUvc3NwL2wxL20yeDQuYwpAQCAtMCwwICsxLDIyIEBACitpbmhlcml0ICJzdGQvcm9vbSI7CisKKyNpbmNsdWRlIDxwcm9wZXJ0aWVzLmg+CisjaW5jbHVkZSAiLi4vZmlsZXMuaCIKKworY3JlYXRlKCkKK3sKKyAgcmVwbGFjZV9wcm9ncmFtKCJzdGQvcm9vbSIpOworICA6OmNyZWF0ZSgpOworICBTZXRQcm9wKFBfTElHSFQsIDApOworICBTZXRQcm9wKFBfSU5ET09SUywgMSk7CisgIFNldFByb3AoUF9JTlRfU0hPUlQsICJNZXRhbGxlYmVuZSIpOworICBTZXRQcm9wKFBfSU5UX0xPTkcsCisgICJEdSBiaXN0IGltIEhvZWhsZW5sYWJ5cmludGggZGVyIFNjaHJlY2tlbnNzcGl0emUuIERlciB2b2VsbGlnIG1pdCBNZXRhbGxcbiIrCisgICJhdXNnZXNjaGxhZ2VuZSBHYW5nIG1hY2h0IGhpZXIgZWluZW4gc2NoYXJmZW4gS25pY2sgdm9uIE5vcmRlbiBuYWNoIE9zdGVuXG4iKworICAidW5kIHZlcnNjaHdpbmRldCBkb3J0IGluIGRlciBEdW5rZWxoZWl0LlxuIik7CisgIEFkZERldGFpbCgoeyJ3YW5kIiwgIndhZW5kZSIsICJib2RlbiIsICJkZWNrZSIsICJtZXRhbGwifSksICJBbGxlcyBoaWVyIGlzdCBhdXMgTWV0YWxsLlxuIik7CisgIEFkZERldGFpbCgiZ2FuZyIsICJEZXIgR2FuZyBmdWVocnQgbmFjaCBOb3JkZW4gdW5kIE9zdGVuLlxuIik7CisgIEFkZERldGFpbCgiZHVua2VsaGVpdCIsICJEdSBrYW5uc3QgaGluZ2VoZW4gdW5kIHNjaGF1ZW4sIG9iIHNpZSBkYW5uIG5vY2ggZGEgaXN0LlxuIik7CisgIEFkZEV4aXQoIm5vcmRlbiIsTDEoIm0yeDMiKSk7CisgIEFkZEV4aXQoIm9zdGVuIixMMSgibTN4NCIpKTsKK30KZGlmZiAtLWdpdCBhL2RvYy9iZWlzcGllbGUvc3NwL2wxL20yeDUuYyBiL2RvYy9iZWlzcGllbGUvc3NwL2wxL20yeDUuYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi45NWIwYzNkCi0tLSAvZGV2L251bGwKKysrIGIvZG9jL2JlaXNwaWVsZS9zc3AvbDEvbTJ4NS5jCkBAIC0wLDAgKzEsMjYgQEAKK2luaGVyaXQgInN0ZC9yb29tIjsKKworI2luY2x1ZGUgPHJvb21zLmg+CisjaW5jbHVkZSA8cHJvcGVydGllcy5oPgorI2luY2x1ZGUgIi4uL2ZpbGVzLmgiCisKK2NyZWF0ZSgpCit7CisgIDo6Y3JlYXRlKCk7CisgIFNldFByb3AoUF9MSUdIVCwgMCk7CisgIFNldFByb3AoUF9JTkRPT1JTLCAxKTsKKyAgU2V0UHJvcChQX0lOVF9TSE9SVCwgIk1ldGFsbGViZW5lIik7CisgIFNldFByb3AoUF9JTlRfTE9ORywKKyAgIkR1IGJpc3QgaW0gSG9laGxlbmxhYnlyaW50aCBkZXIgU2NocmVja2Vuc3NwaXR6ZS4gRGllIFdhZW5kZSBkZXMgR2FuZ2VzLFxuIisKKyAgImRlciB2b24gT3N0ZW4gbmFjaCBXZXN0ZW4gKG9kZXIgYW5kZXJzcnVtKSB2ZXJsYWV1ZnQsIHNpbmQgbWl0IGdsYWVuemVuZGVtXG4iKworICAiTWV0YWxsIGF1c2dla2xlaWRldC4gSXJnZW5kd2llIGtvbW10IERpciBkaWVzZSBVbWdlYnVuZyB6aWVtbGljaCBzZWx0c2FtXG4iKworICAidm9yLCBhYmVyIGtlaW5lIFNvcmdlLCBlcyBrb21tdCBub2NoIHZpZWwgc2NobGltbWVyIVxuIik7CisgIEFkZERldGFpbCgoeyJnYW5nIiwgInJvZWhyZSJ9KSwgIkRlciBHYW5nIHZlcmxhZXVmdCB2b24gT3N0ZW4gbmFjaCBXZXN0ZW4uXG4iKTsKKyAgQWRkRGV0YWlsKCh7IndhbmQiLCAid2FlbmRlIiwgImRlY2tlIiwgImJvZGVuIn0pLCAiQWxsZXMgaXN0IGF1cyBnbGFlbnplbmRlbSBNZXRhbGwuXG4iKTsKKyAgQWRkRGV0YWlsKCJtZXRhbGwiLCAiRGFzIE1ldGFsbCBpc3QgYW4gZWluZXIgU3RlbGxlIGxlaWNodCBlaW5nZWRlbGx0LlxuIik7CisgIEFkZERldGFpbCgoeyJkZWxsZSIsICJzdGVsbGUiLCAiYmV1bGUifSksICJEYSB3b2xsdGUgd29obCBqZW1hbmQgbWl0IGRlbSBLb3BmIGR1cmNoIGRpZSBXYW5kLlxuIik7CisgIEFkZEV4aXQoIm9zdGVuIixMMSgibTN4NSIpKTsKKyAgQWRkRXhpdCgid2VzdGVuIixMMSgibTF4NSIpKTsKKyAgQWRkSXRlbShNT04oImRvc2Vub2VmZm5lciIpLCBSRUZSRVNIX1JFTU9WRSk7CisgIEFkZEl0ZW0oTU9OKCJkb3Nlbm9lZmZuZXIiKSwgUkVGUkVTSF9SRU1PVkUpOworfQpkaWZmIC0tZ2l0IGEvZG9jL2JlaXNwaWVsZS9zc3AvbDEvbTN4MS5jIGIvZG9jL2JlaXNwaWVsZS9zc3AvbDEvbTN4MS5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjMwMDIyZjQKLS0tIC9kZXYvbnVsbAorKysgYi9kb2MvYmVpc3BpZWxlL3NzcC9sMS9tM3gxLmMKQEAgLTAsMCArMSwzMSBAQAoraW5oZXJpdCAic3RkL3Jvb20iOworCisjaW5jbHVkZSA8cHJvcGVydGllcy5oPgorI2luY2x1ZGUgPHJvb21zLmg+CisjaW5jbHVkZSAiLi4vZmlsZXMuaCIKKworY3JlYXRlKCkKK3sKKyAgOjpjcmVhdGUoKTsKKyAgU2V0UHJvcChQX0xJR0hULCAwKTsKKyAgU2V0UHJvcChQX0lORE9PUlMsIDEpOworICBTZXRQcm9wKFBfSU5UX1NIT1JULCAiU3RlaW5lYmVuZSIpOworICBTZXRQcm9wKFBfSU5UX0xPTkcsCisgICJEdSBiaXN0IGFtIEVpbmdhbmcgenVtIEhvZWhsZW5sYWJ5cmludGggZGVyIFNjaHJlY2tlbnNzcGl0emUuIEV0d2FzIExpY2h0XG4iKworICAiZHJpbmd0IHZvbSBBdXNnYW5nIGltIE5vcmRlbiBoZXJlaW4sIGRvY2ggaW0gU3VlZGVuIGxhdWVydCBkaWUgcGVjaHNjaHdhcnplXG4iKworICAiRHVua2VsaGVpdC5cbiIpOworICBBZGREZXRhaWwoImVpbmdhbmciLCAiRXMgaXN0IGRlciBFaW5nYW5nIHp1IG1laHIsIGFscyBEdSBkZW5rc3QuXG4iKTsKKyAgQWRkRGV0YWlsKCJib2RlbiIsICJEZXIgQm9kZW4gYmVzdGVodCBhdXMgZ3JhdWVtIEZlbHMuXG4iKTsKKyAgQWRkRGV0YWlsKCJmZWxzIiwgIkRlciBGZWxzIGlzdCBuaWNodCBiZXNvbmRlcnMgaW50ZXJlc3NhbnQsIG51ciBncmF1LlxuIik7CisgIEFkZERldGFpbCgoeyJ3YW5kIiwgIndhZW5kZSJ9KSwgIkRpZSBXYWVuZGUgc2luZCB2b24gT3JrYmx1dCBiZXNjaG11dHp0LlxuIik7CisgIEFkZERldGFpbCgoeyJvcmtibHV0IiwgImJsdXQifSksICJPcmtzIHdlcmRlbiBoaWVyIHdvaGwgenVtIFNwYXNzIGdlbWV0emVsdC5cbiIpOworICBBZGREZXRhaWwoImRlY2tlIiwgIlVlYmVyIERlaW5lbSBLb3BmLCBkYXMgd2lyZCBEaXIgaGllciBub2NoIG9lZnRlcnMgcGFzc2llcmVuLlxuIik7CisgIEFkZERldGFpbCgoeyJob2VobGVubGFieXJpbnRoIiwgImxhYnlyaW50aCIsICJob2VobGVuIn0pLCAiRGllc2UgTGFieXJpbnRoIGVyc3RyZWNrdCBzaWNoIHVlYmVyIGV0bGljaGUgRWJlbmVuLCB2aWVsIFNwYXNzIGJlaW1cbkVya3VuZGVuLlxuIik7CisgIEFkZERldGFpbCgibGljaHQiLCAiRGFzIGxldHp0ZSBUYWdlc2xpY2h0LlxuIik7CisgIEFkZERldGFpbCgiYXVzZ2FuZyIsICJEZXIgQXVzZ2FuZyBhdXMgZGVyIER1bmtlbGhlaXQuXG4iKTsKKyAgQWRkRGV0YWlsKCJkdW5rZWxoZWl0IiwgIkRhcyB3aXJkIERpciBkb3J0IHVudGVuIG5vY2ggb2VmdGVycyBiZWdlZ25lbi5cbiIpOworICBBZGRJdGVtKE1PTigib3JrIiksIFJFRlJFU0hfUkVNT1ZFKTsKKyAgQWRkSXRlbShNT04oIm9yayIpLCBSRUZSRVNIX1JFTU9WRSk7CisgIEFkZEV4aXQoIm5vcmRlbiIsICIvZC9nZWJpcmdlL3Jvb20vc3BpdHplNCIpOworICBBZGRFeGl0KCJzdWVkZW4iLEwxKCJtM3gyIikpOworfQpkaWZmIC0tZ2l0IGEvZG9jL2JlaXNwaWVsZS9zc3AvbDEvbTN4Mi5jIGIvZG9jL2JlaXNwaWVsZS9zc3AvbDEvbTN4Mi5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmQ5MTM1MjcKLS0tIC9kZXYvbnVsbAorKysgYi9kb2MvYmVpc3BpZWxlL3NzcC9sMS9tM3gyLmMKQEAgLTAsMCArMSwyOSBAQAoraW5oZXJpdCAic3RkL3Jvb20iOworCisjaW5jbHVkZSA8cHJvcGVydGllcy5oPgorI2luY2x1ZGUgIi4uL2ZpbGVzLmgiCisKK2NyZWF0ZSgpCit7CisgIDo6Y3JlYXRlKCk7CisgIFNldFByb3AoUF9MSUdIVCwgMCk7CisgIFNldFByb3AoUF9JTkRPT1JTLCAxKTsKKyAgU2V0UHJvcChQX0lOVF9TSE9SVCwgIlN0ZWluZWJlbmUiKTsKKyAgU2V0UHJvcChQX0lOVF9MT05HLAorICAiRHUgYmlzdCBpbSBIb2VobGVubGFieXJpbnRoIGRlciBTY2hyZWNrZW5zc3BpdHplLiBFaW4gc2NobWFsZXIgR2FuZywgZGVyXG4iKworICAidm9uIE5vcmRlbiBuYWNoIFN1ZWRlbiBmdWVocnQsIGlzdCBoaWVyIGR1cmNoIGRlbiBoYXJ0ZW4gRmVscyBnZWhhdWVuLlxuIisKKyAgIkRlciBHYW5nIGlzdCBudXIgZ3JvYiBiZWhhdWVuLCBlaW4gWmVpY2hlbiBkYWZ1ZXIsIGRhc3MgaGllciBuaWNodCBad2VyZ2VcbiIrCisgICJhbSBXZXJrIHdhcmVuLCBzb25kZXJuIGJvZXNlIFdlc2VuLCB3YWhyc2NoZWlubGljaCBPcmtzLlxuIik7CisgIEFkZERldGFpbCgiZmVscyIsICJEZXIgRmVscyBpc3QgaGFydCB1bmQgbnVyIGdyb2IgYmVoYXVlbi5cbiIpOworICBBZGREZXRhaWwoKHsiZ2FuZyIsICJnYWVuZ2UifSksICJEZXIgR2FuZyBmdWVocnQgdm9uIE5vcmRlbiBuYWNoIFN1ZWRlbi5cbiIpOworICBBZGREZXRhaWwoImJvZGVuIiwgIkF1ZiBkZW0gQm9kZW4gc2llaHN0IER1IHphaGxyZWljaGUgVWViZXJyZXN0ZSB2b24gQWJlbnRldXJlcm4sIGRpZSBuaWNodFxudm9yc2ljaHRpZyBnZW51ZyB3YXJlbi5cbiIpOworICBBZGREZXRhaWwoKHsicmVzdCIsICJ1ZWJlcnJlc3QiLCAicmVzdGUiLCAidWViZXJyZXN0ZSIsICJhYmVudGV1cmVyIn0pLAorICAiVWhvaCAuLi4gYmx1dGlnZSBTYWNoZSAuLi5cbiIpOworICBBZGREZXRhaWwoImJsdXQiLCAiV2VpYSAuLi5cbiIpOworICBBZGREZXRhaWwoKHsid2FuZCIsICJ3YWVuZGUifSksICJEaWUgV2FlbmRlIHNpbmQgYXVzIEZlbHMgdW5kIG5pY2h0IHNvbmRlcmxpY2ggaW50ZXJlc3NhbnQuXG4iKTsKKyAgQWRkRGV0YWlsKCJkZWNrZSIsICJXZW5uIER1IHVlYmVybGVnc3QsIHdhcyBkYSBhbGxlcyB1ZWJlciBEZWluZW0gS29wZiBzY2h3ZWJ0IC4uLiBvaG9oIVxuIik7CisgIEFkZERldGFpbCgoeyJvcmsiLCAib3JrcyJ9KSwgIkRhdm9uIGhhdCBlcyBzaWNoZXIgZWluaWdlIGluIGRlciBOYWVoZS5cbiIpOworICBBZGREZXRhaWwoKHsiendlcmciLCAiendlcmdlIn0pLCAiWndlcmdlIGhhYmVuIGhpZXJtaXQgbmljaHRzIHp1IHR1biFcbiIpOworICBBZGRFeGl0KCJzdWVkZW4iLEwxKCJtM3gzIikpOworICBBZGRFeGl0KCJub3JkZW4iLEwxKCJtM3gxIikpOworfQpkaWZmIC0tZ2l0IGEvZG9jL2JlaXNwaWVsZS9zc3AvbDEvbTN4My5jIGIvZG9jL2JlaXNwaWVsZS9zc3AvbDEvbTN4My5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmY4NGZjZTUKLS0tIC9kZXYvbnVsbAorKysgYi9kb2MvYmVpc3BpZWxlL3NzcC9sMS9tM3gzLmMKQEAgLTAsMCArMSwyNyBAQAoraW5oZXJpdCAic3RkL3Jvb20iOworCisjaW5jbHVkZSA8cHJvcGVydGllcy5oPgorI2luY2x1ZGUgPHJvb21zLmg+CisjaW5jbHVkZSAiLi4vZmlsZXMuaCIKKworY3JlYXRlKCkKK3sKKyAgOjpjcmVhdGUoKTsKKyAgU2V0UHJvcChQX0xJR0hULCAwKTsKKyAgU2V0UHJvcChQX0lORE9PUlMsIDEpOworICBTZXRQcm9wKFBfSU5UX1NIT1JULCAiU3RlaW5lYmVuZSIpOworICBTZXRQcm9wKFBfSU5UX0xPTkcsCisgICJEdSBiaXN0IGltIEhvZWhsZW5sYWJ5cmludGggZGVyIFNjaHJlY2tlbnNzcGl0emUuIERlciBzY2htYWxlIEdhbmcgbWFjaHRcbiIrCisgICJoaWVyIGVpbmUgQmllZ3VuZyB2b24gTm9yZGVuIG5hY2ggT3N0ZW4sIHdvIGVyIGpld2VpbHMgaW4gZGllIER1bmtlbGhlaXRcbiIrCisgICJmdWVocnQuXG4iKTsKKyAgQWRkRGV0YWlsKCJnYW5nIiwgIkRlciBHYW5nIG1hY2h0IGVpbmUgQmllZ3VuZy5cbiIpOworICBBZGREZXRhaWwoImR1bmtlbGhlaXQiLCAiU2Nod2FyemUgRHVua2VsaGVpdC5cbiIpOworICBBZGREZXRhaWwoImJvZGVuIiwgIkF1ZiBkZW0gQm9kZW4gaXN0IG5pY2h0cyBCZXNvbmRlcmVzIHp1IHNlaGVuLlxuIik7CisgIEFkZERldGFpbCgiZGVja2UiLCAiRGllIERlY2tlIGlzdCB0b3RhbCBsYW5nd2VpbGlnLlxuIik7CisgIEFkZERldGFpbCgoeyJ3YW5kIiwgIndhZW5kZSJ9KSwgIkFuIGRlciBXYW5kIGhhZW5ndCBlaW5lIEhhbmQuXG4iKTsKKyAgQWRkRGV0YWlsKCJoYW5kIiwgIkFjaCBuZWUsIGhhdCBzaWNoIG51ciBnZXJlaW10LlxuIik7CisgIEFkZERldGFpbCgiYmllZ3VuZyIsICJTaWUgZnVlaHJ0IG5hY2ggTm9yZGVuIHVuZCBPc3Rlbi5cbiIpOworICBBZGRFeGl0KCJub3JkZW4iLEwxKCJtM3gyIikpOworICBBZGRFeGl0KCJvc3RlbiIsTDEoIm00eDMiKSk7CisgIEFkZEl0ZW0oTU9OKCJvcmsiKSwgUkVGUkVTSF9SRU1PVkUpOworfQpkaWZmIC0tZ2l0IGEvZG9jL2JlaXNwaWVsZS9zc3AvbDEvbTN4NC5jIGIvZG9jL2JlaXNwaWVsZS9zc3AvbDEvbTN4NC5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjU0OTQ5MmEKLS0tIC9kZXYvbnVsbAorKysgYi9kb2MvYmVpc3BpZWxlL3NzcC9sMS9tM3g0LmMKQEAgLTAsMCArMSwzOSBAQAoraW5oZXJpdCAic3RkL3Jvb20iOworCisjaW5jbHVkZSA8cHJvcGVydGllcy5oPgorI2luY2x1ZGUgPHJvb21zLmg+CisjaW5jbHVkZSA8bW92aW5nLmg+CisjaW5jbHVkZSAiLi4vZmlsZXMuaCIKKworY3JlYXRlKCkKK3sKKyAgOjpjcmVhdGUoKTsKKyAgU2V0UHJvcChQX0xJR0hULCAwKTsKKyAgU2V0UHJvcChQX0lORE9PUlMsIDEpOworICBTZXRQcm9wKFBfSU5UX1NIT1JULCAiTWV0YWxsZWJlbmUiKTsKKyAgU2V0UHJvcChQX0lOVF9MT05HLAorICAiRHUgYmlzdCBpbSBIb2VobGVubGFieXJpbnRoIGRlciBTY2hyZWNrZW5zc3BpdHplLiBNZXRhbGxiZXNjaGxhZ2VuZSBXYWVuZGVcbiIrCisgICJ1bXJpbmdlbiBEaWNoIGltIE5vcmRlbiwgT3N0ZW4gdW5kIFN1ZWRlbiB3YWVocmVuZCBlaW4gcm9laHJlbmFydGlnZXIgR2FuZ1xuIisKKyAgIm5hY2ggV2VzdGVuIGZ1ZWhydC4gQXVzc2VyZGVtIGJlZmluZGV0IHNpY2ggaW0gQm9kZW4gZWluIExvY2gsIGR1cmNoIGRhc1xuIisKKyAgImVpbmUgTGVpdGVyIG5hY2ggdW50ZW4gZnVlaHJ0LlxuIik7CisgIEFkZERldGFpbCgibG9jaCIsICJXYXMgZWluZW4gZGEgdW50ZW4gd29obCBlcndhcnRlbiBtYWc/XG4iKTsKKyAgQWRkRGV0YWlsKCJsZWl0ZXIiLCAiRGllIExlaXRlciBmdWVocnQgbmFjaCB1bnRlbi5cbiIpOworICBBZGREZXRhaWwoImJvZGVuIiwgIkltIEJvZGVuIGlzdCBlaW4gTG9jaC5cbiIpOworICBBZGREZXRhaWwoKHsid2FuZCIsICJ3YWVuZGUiLCAiZGVja2UiLCAibWV0YWxsIn0pLCAiQWxsZXMgaXN0IGF1cyBNZXRhbGwuXG4iKTsKKyAgQWRkRGV0YWlsKCh7InJvZWhyZSIsICJnYW5nIn0pLCAiRGVyIEdhbmcgZnVlaHJ0IG5hY2ggV2VzdGVuLlxuIik7CisgIEFkZEl0ZW0oTU9OKCJ0aXRhbndhbHplIiksIFJFRlJFU0hfUkVNT1ZFKTsKKyAgQWRkRXhpdCgid2VzdGVuIixMMSgibTJ4NCIpKTsKKyAgQWRkU3BlY2lhbEV4aXQoInVudGVuIiwgInVudGVuIik7Cit9CisKK3VudGVuKCkKK3sKKyAgaWYgKHByZXNlbnQoInRpdGFud2FsemUiKSkKKyAgeworICAgIHdyaXRlKCJEaWUgVGl0YW53YWx6ZSBsYWVzc3QgRGljaCBuaWNodCB2b3JiZWkuXG4iKTsKKyAgICByZXR1cm4gMTsKKyAgfQorICB0aGlzX3BsYXllcigpLT5tb3ZlKEwyKCJtM3g0IiksIE1fR08sICJuYWNoIHVudGVuIik7CisgIHRoaXNfcGxheWVyKCktPlNldFByb3AoImJvaW5nOmRyb21fbWFya2VyIiwgMSk7CisgIHJldHVybiAxOworfQpkaWZmIC0tZ2l0IGEvZG9jL2JlaXNwaWVsZS9zc3AvbDEvbTN4NS5jIGIvZG9jL2JlaXNwaWVsZS9zc3AvbDEvbTN4NS5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjY5YzU4ZmEKLS0tIC9kZXYvbnVsbAorKysgYi9kb2MvYmVpc3BpZWxlL3NzcC9sMS9tM3g1LmMKQEAgLTAsMCArMSwyNiBAQAoraW5oZXJpdCAic3RkL3Jvb20iOworCisjaW5jbHVkZSA8cHJvcGVydGllcy5oPgorI2luY2x1ZGUgIi4uL2ZpbGVzLmgiCisKK2NyZWF0ZSgpCit7CisgIDo6Y3JlYXRlKCk7CisgIFNldFByb3AoUF9MSUdIVCwgMCk7CisgIFNldFByb3AoUF9JTkRPT1JTLCAxKTsKKyAgU2V0UHJvcChQX0lOVF9TSE9SVCwgIk1ldGFsbGViZW5lIik7CisgIFNldFByb3AoUF9JTlRfTE9ORywKKyAgIkR1IGJpc3QgaW0gSG9laGxlbmxhYnlyaW50aCBkZXIgU2NocmVja2Vuc3NwaXR6ZS4gRGVyIHJvZWhyZW5hcnRpZ2UgR2FuZ1xuIisKKyAgImZ1ZWhydCB2b24gT3N0ZW4gbmFjaCBXZXN0ZW4gZHVyY2ggZGllIER1bmtlbGhlaXQsIG51ciBoaWVyIGdsYWVuenQgZGFzXG4iKworICAiTWV0YWxsIGluIERlaW5lbSBMaWNodC5cbiIpOworICBBZGREZXRhaWwoKHsiZ2FuZyIsICJyb2VocmUifSksICJXZXIgd29obCBkaWVzZW4gR2FuZyBhbmdlbGVndCBoYXQ/XG4iKTsKKyAgQWRkRGV0YWlsKCJkdW5rZWxoZWl0IiwgIkR1IGthbm5zdCBzaWUgbmljaHQgZXJyZWljaGVuLCBzb2xhbmdlIER1IERlaW4gTGljaHQgYW4gbGFlc3N0LlxuIik7CisgIEFkZERldGFpbCgibWV0YWxsIiwgIkFsbGVzIGhpZXIgaXN0IGF1cyBibGFua2VtIE1ldGFsbC5cbiIpOworICBBZGREZXRhaWwoImJvZGVuIiwgIlppZW1saWNoIHVuaW50ZXJlc3NhbnQuXG4iKTsKKyAgQWRkRGV0YWlsKCh7IndhbmQiLCAid2FlbmRlIn0pLCAiSGV5ISBEYSBpc3QgZWluZSBJbnNjaHJpZnQhXG4iKTsKKyAgQWRkRGV0YWlsKCJpbnNjaHJpZnQiLCAiRGFzIGlzdCBldHdhcywgd2FzIG1hbiBsZXNlbiBrYW5uLlxuIik7CisgIEFkZFJlYWREZXRhaWwoImluc2NocmlmdCIsICJEdSBsaWVzdDogQm9pbmcgd2FyIGhpZXIuXG4iKTsKKyAgQWRkRGV0YWlsKCJkZWNrZSIsICJJc3Qgc2llIG5pY2h0IGh1ZWJzY2g/XG4iKTsKKyAgQWRkRXhpdCgib3N0ZW4iLEwxKCJtNHg1IikpOworICBBZGRFeGl0KCJ3ZXN0ZW4iLEwxKCJtMng1IikpOworfQpkaWZmIC0tZ2l0IGEvZG9jL2JlaXNwaWVsZS9zc3AvbDEvbTR4MS5jIGIvZG9jL2JlaXNwaWVsZS9zc3AvbDEvbTR4MS5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmE2NDM1MWUKLS0tIC9kZXYvbnVsbAorKysgYi9kb2MvYmVpc3BpZWxlL3NzcC9sMS9tNHgxLmMKQEAgLTAsMCArMSwzOCBAQAoraW5oZXJpdCAic3RkL3Jvb20iOworCisjaW5jbHVkZSA8cHJvcGVydGllcy5oPgorI2luY2x1ZGUgPHJvb21zLmg+CisjaW5jbHVkZSAiLi4vZmlsZXMuaCIKKworY3JlYXRlKCkKK3sKKyAgOjpjcmVhdGUoKTsKKyAgU2V0UHJvcChQX0xJR0hULCAwKTsKKyAgU2V0UHJvcChQX0lOVF9TSE9SVCwgIlN0ZWluZWJlbmUiKTsKKyAgU2V0UHJvcChQX0lOVF9MT05HLAorICAiRHUgYmlzdCBpbSBIb2VobGVubGFieXJpbnRoIGRlciBTY2hyZWNrZW5zc3BpdHplLiBEdSBoYXN0IGRpZSBIb2VobGUgZWluZXNcbiIrCisgICJzY2hyZWNrbGljaGVuIFVudGllcnMgZXJyZWljaHQuIERlciBHZXN0YW5rIGlzdCB3aXJrbGljaCBncmF1ZW5lcnJlZ2VuZFxuIisKKyAgInVuZCBkZXIgQW5ibGljayBydW1saWVnZW5kZXIgS25vY2hlbiB1bmQgaGFsYiB2ZXJ3ZXN0ZXIgS29lcnBlcnRlaWxlIHZvblxuIisKKyAgImFybWVuIE9wZmVybiB0dXQgc2VpbiBVZWJyaWdlcywgdW0gRGlyIGRlbiBBcHBldGl0IHp1IHZlcmRlcmJlbi4gRGVyXG4iKworICAiZWluemlnZSBBdXNnYW5nIGF1cyBkaWVzZW0gTG9jaCBiZWZpbmRldCBzaWNoIGltIE9zdGVuLlxuIik7CisgIEFkZERldGFpbCgoeyJob2VobGUiLCAibG9jaCJ9KSwgIkVpbiB1ZWJsZXMgTG9jaCwgaW4gZGFzIER1IGhpZXIgZ2VyYXRlbiBiaXN0LlxuIik7CisgIEFkZERldGFpbCgiZ2VzdGFuayIsICJEaXIgd2lyZCBiZWluYWhlIHNjaGxlY2h0LlxuIik7CisgIEFkZERldGFpbCgoeyJ0ZWlsZSIsICJrb2VycGVydGVpbGUifSksICJCdWFoLCBkYXMgaXN0IGphIHdpZGVybGljaC5cbiIpOworICBBZGREZXRhaWwoImF1c2dhbmciLCAiRGVyIEF1c2dhbmcgaXN0IGltIE9zdGVuLlxuIik7CisgIEFkZFNwZWNpYWxEZXRhaWwoImtub2NoZW4iLCAia25vY2hlbiIpOworICBBZGREZXRhaWwoKHsid2FuZCIsICJ3YWVuZGUifSksICJEaWUgV2FlbmRlIHNpbmQgbGFuZ3dlaWxpZyB1bmQgZ3JhdS5cbiIpOworICBBZGREZXRhaWwoImRlY2tlIiwgIkRpZSBEZWNrZSBpc3QgdW5pbnRlcmVzc2FudC5cbiIpOworICBBZGREZXRhaWwoImJvZGVuIiwgIkRpZSB2ZXJ3ZXNlbmRlbiBLb2VycGVydGVpbGUgYXVmIGRlbSBCb2RlbiBzaW5kIGtlaW4gc2Nob2VuZXIgQW5ibGljay5cbiIpOworICBBZGRFeGl0KCJvc3RlbiIsTDEoIm01eDEiKSk7CisgIEFkZEl0ZW0oTU9OKCJ0cm9sbG1vcHMiKSwgUkVGUkVTSF9SRU1PVkUpOworfQorCitrbm9jaGVuKCkKK3sKKyAgIGlmIChwcmVzZW50KCJ0cm9sbG1vcHMiKSkKKyAgICAgIHJldHVybiAiRGVyIFRyb2xsbW9wcyBsYWVzc3QgbmljaHQgenUsIGRhc3MgRHUgc2VpbiBBYmVuZGVzc2VuIGR1cmNod3VlaGxzdC5cbiI7CisKKyAgIGlmICh0aGlzX3BsYXllcigpLT5GaW5kUG90aW9uKCJEdSB3dWVobHN0IGluIGRlbiBLbm9jaGVuIGhlcnVtIHVuZCBmaW5kZXN0IGVpbmVuIFphdWJlcnRyYW5rLlxuIikpCisgICAgICByZXR1cm4gIiI7CisgICByZXR1cm4gIkR1IHd1ZWhsc3QgaW4gZGVuIEtub2NoZW4gaGVydW0sIGZpbmRlc3QgYWJlciBuaWNodHMuXG4iOworfQpkaWZmIC0tZ2l0IGEvZG9jL2JlaXNwaWVsZS9zc3AvbDEvbTR4Mi5jIGIvZG9jL2JlaXNwaWVsZS9zc3AvbDEvbTR4Mi5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjE0NTZlZjIKLS0tIC9kZXYvbnVsbAorKysgYi9kb2MvYmVpc3BpZWxlL3NzcC9sMS9tNHgyLmMKQEAgLTAsMCArMSw0MSBAQAoraW5oZXJpdCAic3RkL3Jvb20iOworCisjaW5jbHVkZSA8cHJvcGVydGllcy5oPgorI2luY2x1ZGUgPHJvb21zLmg+CisjaW5jbHVkZSAiLi4vZmlsZXMuaCIKKworY3JlYXRlKCkKK3sKKyAgOjpjcmVhdGUoKTsKKyAgU2V0UHJvcChQX0xJR0hULCAwKTsKKyAgU2V0UHJvcChQX0lORE9PUlMsIDEpOworICBTZXRQcm9wKFBfSU5UX1NIT1JULCAiU3RlaW5lYmVuZSIpOworICBTZXRQcm9wKFBfSU5UX0xPTkcsCisgICJEdSBiaXN0IGltIEhvZWhsZW5sYWJ5cmludGggZGVyIFNjaHJlY2tlbnNzcGl0emUuIERhcyBoaWVyIHNjaGVpbnQgd29obFxuIisKKyAgImRlciBBdWZlbnRoYWx0c3JhdW0gdm9uIGVpbiBwYWFyIHN0aW5rZW5kZW4gVHJvbGxlbiB6dSBzZWluLiBFaW5lIE1lbmdlXG4iKworICAiYWx0ZXIgS25vY2hlbiBsaWVnZW4gYXVmIGRlbSBCb2RlbiBydW0gdW5kIGluIGRlciBFY2tlIHN0aW5rdCBlaW4gZ3Jvc3NlclxuIisKKyAgIkhhdWZlbiBUcm9sbGtvdCB2b3Igc2ljaCBoaW4uIEFsbGVzIGluIGFsbGVtIGtlaW4gZ2VtdWV0bGljaGVyIE9ydCxcbiIrCisgICJ2aWVsbGVpY2h0IHNvbGx0ZXN0IER1IGlobiBuYWNoIFN1ZWRlbiB2ZXJsYXNzZW4uXG4iKTsKKyAgQWRkRGV0YWlsKCJrbm9jaGVuIiwgIkRpZSBLbm9jaGVuIHd1cmRlbiB2b24gVHJvbGxlbiBhYmdlbmFndC5cbiIpOworICBBZGREZXRhaWwoImJvZGVuIiwgIkF1ZiBkZW0gQm9kZW4gbGllZ2VuIEtub2NoZW4uXG4iKTsKKyAgQWRkRGV0YWlsKCJkZWNrZSIsICJEaWUgRGVja2UgaGllciBpc3QgbmljaHQgc28gZ3JhdWVuaGFmdCBpbnRlcmVzc2FudCwgaWNoIHdldHRlIGVzIHdpcmRcbmludGVyZXNzYW50ZXIsIHdlbm4gRHUgZWluIHBhYXIgRWJlbmVuIHRpZWZlciB2b3JkcmluZ3N0LlxuIik7CisgIEFkZERldGFpbCgoeyJlYmVuZSIsICJlYmVuZW4ifSksICJUamEsIHdlbm4gRHUgd3Vlc3N0ZXN0IHdpZXZpZWxlIEhvaGxyYWV1bWUgc2ljaCB1bnRlciBEaXIgYmVmaW5kZW4sIGRhbm5cbnd1ZXJkZXN0IER1IGhpZXIgbmljaHQgc28gcnVoaWcgc3RlaGVuLlxuIik7CisgIEFkZERldGFpbCgoeyJob2hscmF1bSIsICJob2hscmFldW1lIn0pLCAiRXJrdW5kZSBzaWUhIFNvZm9ydCFcbiIpOworICBBZGREZXRhaWwoKHsid2FuZCIsICJ3YWVuZGUifSksICJTaWUgc2luZCB2ZXJzY2htaWVydCB1bmQgZWtlbGhhZnQuXG4iKTsKKyAgQWRkRGV0YWlsKCJ0cm9sbCIsICJLZWluZXIgZGEhIEFldHNjaGJhZXRzY2ghXG4iKTsKKyAgQWRkRGV0YWlsKCJlY2tlIiwgIld1ZXJnIVxuIik7CisgIEFkZERldGFpbCgoeyJ0cm9sbGtvdCIsICJrb3QiLCAiaGF1ZmVuIn0pLCAiSWdpdHQhIERhcyBzdGlua3QgamEgZXJiYWVybWxpY2guXG4iKTsKKyAgQWRkRXhpdCgic3VlZGVuIixMMSgibTR4MyIpKTsKKyAgQWRkSXRlbShNT04oInRyb2xsIiksIFJFRlJFU0hfUkVNT1ZFKTsKKyAgQWRkSXRlbShNT04oInRyb2xsIiksIFJFRlJFU0hfUkVNT1ZFKTsKKyAgQWRkQ21kKCJlcmt1bmRlIiwgImVya3VuZGVuIik7Cit9CisKK2Vya3VuZGVuKHN0cikKK3sgCisgICBub3RpZnlfZmFpbCgiV2FzIG1vZWNodGVzdCBEdSBlcmt1bmRlbj9cbiIpOworICAgaWYgKCFzdHIgfHwgKHN0ciE9ImhvaGxyYXVtIiAmJiBzdHIgIT0iaG9obHJhZXVtZSIpKQorICAgICAgcmV0dXJuIDA7CisgICB3cml0ZSgiQWxzbyBlaW4gYmlzc2NoZW4gbWVociBtdXNzdCBEdSBkYSBzY2hvbiBmdWVyIHR1bi5cbiIpOworICAgcmV0dXJuIDE7Cit9CmRpZmYgLS1naXQgYS9kb2MvYmVpc3BpZWxlL3NzcC9sMS9tNHgzLmMgYi9kb2MvYmVpc3BpZWxlL3NzcC9sMS9tNHgzLmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMzc0NzJhOQotLS0gL2Rldi9udWxsCisrKyBiL2RvYy9iZWlzcGllbGUvc3NwL2wxL200eDMuYwpAQCAtMCwwICsxLDMxIEBACitpbmhlcml0ICJzdGQvcm9vbSI7CisKKyNpbmNsdWRlIDxwcm9wZXJ0aWVzLmg+CisjaW5jbHVkZSAiLi4vZmlsZXMuaCIKKworY3JlYXRlKCkKK3sKKyAgOjpjcmVhdGUoKTsKKyAgU2V0UHJvcChQX0xJR0hULCAwKTsKKyAgU2V0UHJvcChQX0lORE9PUlMsIDEpOworICBTZXRQcm9wKFBfSU5UX1NIT1JULCAiU3RlaW5lYmVuZSIpOworICBTZXRQcm9wKFBfSU5UX0xPTkcsCisgICJEdSBiaXN0IGltIEhvZWhsZW5sYWJ5cmludGggZGVyIFNjaHJlY2tlbnNzcGl0emUuIERlciBkdXJjaCBkZW4gaGFydGVuXG4iKworICAiRmVscyBnZWhhdWVuZSBHYW5nIHZlcnp3ZWlndCBzaWNoIGhpZXIgbmFjaCBOb3JkZW4sIE9zdGVuIHVuZCBXZXN0ZW4uXG4iKworICAiRHUgc3RlbGxzdCBmZXN0LCBkYXNzIHZvbSBOb3JkZW4gaGVyIGVpbiB6aWVtbGljaCB1bmFuZ2VuZWhtZXIgR2VydWNoXG4iKworICAia29tbXQuXG4iKTsKKyAgQWRkRGV0YWlsKCJmZWxzIiwgIkRlciBGZWxzIHd1cmRlIHZvbiBPcmtzIG9kZXIgVHJvbGxlbiBiZWFyYmVpdGV0LCB1bmQgZGFzIHppZW1saWNoIHNjaGxlY2h0LlxuIik7CisgIEFkZERldGFpbCgoeyJnYW5nIiwgImdhZW5nZSJ9KSwgIkRlciBHYW5nIHZlcnp3ZWlndCBzaWNoIGhpZXIuXG4iKTsKKyAgQWRkRGV0YWlsKCJnZXJ1Y2giLCAiTWFuIGtvZW5udGUgZXMgYXVjaCBHZXN0YW5rIG5lbm5lbi5cbiIpOworICBBZGREZXRhaWwoImdlc3RhbmsiLCAiV2VubiBkZXIgSGltbWVsIGhpZXIgc2ljaHRiYXIgd2FlcmUsIHd1ZXJkZSBlcyB6dSBpaG0gc3Rpbmtlbi5cbiIpOworICBBZGREZXRhaWwoImJvZGVuIiwgIkF1ZiBkZW0gQm9kZW4gZmluZGVzdCBEdSBuaWNodHMgdm9uIEJlZGV1dHVuZy5cbiIpOworICBBZGREZXRhaWwoImRlY2tlIiwgIkdyYXVlciBGZWxzLlxuIik7CisgIEFkZERldGFpbCgoeyJ3YW5kIiwgIndhZW5kZSJ9KSwgIkFuIGRlciBXYW5kIHNpZWhzdCBEdSBlaW5lIEluc2NocmlmdC5cbiIpOworICBBZGREZXRhaWwoImluc2NocmlmdCIsICJEdSBrYW5uc3Qgc2llIGxlc2VuLlxuIik7CisgIEFkZFJlYWREZXRhaWwoImluc2NocmlmdCIsICJEdSBsaWVzdDogTmljaHQgYWxsZXMsIHdhcyBtYW4gbmljaHQgc2llaHQsIGlzdCBhdWNoIHdpY2h0aWcuXG4iKTsKKyAgQWRkRGV0YWlsKCh7Im9ya3MiLCAidHJvbGxlIn0pLCAiRGllIGxhdWZlbiBoaWVyIGlyZ2VuZHdvIHJ1bSAuLi4gb2RlciBsaWVnZW4gdG90IGluIGRlciBFY2tlLlxuIik7CisgIEFkZERldGFpbCgiZWNrZSIsICJJbiBkaWVzZXIgRWNrZSBzaW5kIGplZGVuZmFsbHMga2VpbmUuXG4iKTsKKyAgQWRkRXhpdCgibm9yZGVuIixMMSgibTR4MiIpKTsKKyAgQWRkRXhpdCgib3N0ZW4iLEwxKCJtNXgzIikpOworICBBZGRFeGl0KCJ3ZXN0ZW4iLEwxKCJtM3gzIikpOworfQpkaWZmIC0tZ2l0IGEvZG9jL2JlaXNwaWVsZS9zc3AvbDEvbTR4NC5jIGIvZG9jL2JlaXNwaWVsZS9zc3AvbDEvbTR4NC5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmJlMDQ4NWYKLS0tIC9kZXYvbnVsbAorKysgYi9kb2MvYmVpc3BpZWxlL3NzcC9sMS9tNHg0LmMKQEAgLTAsMCArMSwyOCBAQAoraW5oZXJpdCAic3RkL3Jvb20iOworCisjaW5jbHVkZSA8cHJvcGVydGllcy5oPgorI2luY2x1ZGUgPHJvb21zLmg+CisjaW5jbHVkZSAiLi4vZmlsZXMuaCIKKworY3JlYXRlKCkKK3sKKyAgOjpjcmVhdGUoKTsKKyAgU2V0UHJvcChQX0xJR0hULCAwKTsKKyAgU2V0UHJvcChQX0lORE9PUlMsIDEpOworICBTZXRQcm9wKFBfSU5UX1NIT1JULCAiTWV0YWxsZWJlbmUiKTsKKyAgU2V0UHJvcChQX0lOVF9MT05HLAorICAiRHUgYmlzdCBpbSBIb2VobGVubGFieXJpbnRoIGRlciBTY2hyZWNrZW5zc3BpdHplLiBEaWVzIGlzdCB6d2VpZmVsbG9zIGRpZVxuIisKKyAgIkhlaW1hdCBlaW5lcyBkZXIgYmVydWVjaHRpZ3RlbiBFaXNlbmZyZXNzZXIsIGRpZSBXYWVuZGUgc2VoZW4gYXVjaCBzY2hvblxuIisKKyAgImdhbnogemVybmFndCBhdXMuIERlciBlaW56aWdlIEF1c2dhbmcgZnVlaHJ0IG5hY2ggU3VlZGVuLlxuIik7CisgIEFkZERldGFpbCgoeyJ3YW5kIiwgIndhZW5kZSJ9KSwgIkRpZSBXYWVuZGUgc2luZCBhdXMgcmVpbmVtIEVpc2VuIHVuZCB3dXJkZW4gdm9uIGVpbmVtIEVpc2VuZnJlc3NlciBzY2hvblxuemllbWxpY2ggc3RhcmsgbWlzc2hhbmRlbHQuXG4iKTsKKyAgQWRkRGV0YWlsKCJib2RlbiIsICJEZXIgQm9kZW4gaXN0IGF1cyBNZXRhbGwgdW5kIGZ1bmtlbHQgaW0gTGljaHQuIFNvbGx0ZXN0IER1IG5hdHVlcmxpY2ggTmFjaHQtXG5zaWNodCBoYWJlbiwgZGFubiBmdW5rZWx0IGVzIG51ciBpbiBEZWluZXIgRWluYmlsZHVuZy5cbiIpOworICBBZGREZXRhaWwoImRlY2tlIiwgIkRpZSBEZWNrZSBoYXQgZWluZSBnZXdhbHRpZ2UgTGFzdCB6dSB0cmFnZW4uXG4iKTsKKyAgQWRkRGV0YWlsKCJsYXN0IiwgIkZyYWcgbWljaCBuaWNodCB3aWV2aWVsZSBUb25uZW4gR2VzdGVpbiBzaWNoIHVlYmVyIERpciBiZWZpbmRlbi5cbiIpOworICBBZGREZXRhaWwoImdlc3RlaW4iLCAiU293YXMgZ2lidCBlcyBpbSBHZWJpcmdlLCB3ZW5uIGVzIGF1Y2ggaGllciBuaWNodCBzbyBvZmZlbnNpY2h0bGljaCBpc3QuXG4iKTsKKyAgQWRkRGV0YWlsKCJnZWJpcmdlIiwgIkFjaCBob2VyIGRvY2ggYXVmIC4uLlxuIik7CisgIEFkZERldGFpbCgiZWlzZW5mcmVzc2VyIiwgIkRlciBoYXQgc2ljaCB3b2hsIHp1IFRvZGUgZ2VmcmVzc2VuLlxuIik7CisgIEFkZERldGFpbCgoeyJtZXRhbGwiLCAiZWlzZW4ifSksICJFcyBnbGFlbnp0IG1hdHQuXG4iKTsKKyAgQWRkRGV0YWlsKCJhdXNnYW5nIiwgIkVyIGxpZWd0IGltIFN1ZWRlbi5cbiIpOworICBBZGRJdGVtKE1PTigiZWlzZW5mcmVzc2VyIiksIFJFRlJFU0hfUkVNT1ZFKTsKKyAgQWRkRXhpdCgic3VlZGVuIixMMSgibTR4NSIpKTsKK30KZGlmZiAtLWdpdCBhL2RvYy9iZWlzcGllbGUvc3NwL2wxL200eDUuYyBiL2RvYy9iZWlzcGllbGUvc3NwL2wxL200eDUuYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5kNjQ3NzRiCi0tLSAvZGV2L251bGwKKysrIGIvZG9jL2JlaXNwaWVsZS9zc3AvbDEvbTR4NS5jCkBAIC0wLDAgKzEsMjYgQEAKK2luaGVyaXQgInN0ZC9yb29tIjsKKworI2luY2x1ZGUgPHByb3BlcnRpZXMuaD4KKyNpbmNsdWRlICIuLi9maWxlcy5oIgorCitjcmVhdGUoKQoreworICByZXBsYWNlX3Byb2dyYW0oInN0ZC9yb29tIik7CisgIDo6Y3JlYXRlKCk7CisgIFNldFByb3AoUF9MSUdIVCwgMCk7CisgIFNldFByb3AoUF9JTkRPT1JTLCAxKTsKKyAgU2V0UHJvcChQX0lOVF9TSE9SVCwgIk1ldGFsbGViZW5lIik7CisgIFNldFByb3AoUF9JTlRfTE9ORywKKyAgIkR1IGJpc3QgaW0gSG9laGxlbmxhYnlyaW50aCBkZXIgU2NocmVja2Vuc3NwaXR6ZS4gRGllIG1ldGFsbGlzY2hlbiBSb2VocmVuXG4iKworICAidmVyendlaWdlbiBzaWNoIGhpZXIgbmFjaCBOb3JkZW4sIE9zdGVuIHVuZCBXZXN0ZW4uIEltIE5vcmRlbiBzY2hlaW50IGV0d2FzXG4iKworICAiVW5hbmdlbmVobWVzIHp1IGxhdWVybiwgbWVya3d1ZXJkaWdlIEdlcmFldXNjaGUgZHJpbmdlbiB2b24gZG9ydCBoaWVyaGVyLlxuIik7CisgIEFkZERldGFpbCgoeyJ3YW5kIiwgIndhZW5kZSIsICJyb2VocmUiLCAicm9laHJlbiIsICJnYWVuZ2UiLCAiZ2FuZyJ9KSwgIkRpZSBHYWVuZ2Ugc2luZCB2b2VsbGlnIG1pdCBNZXRhbGwgYXVzZ2VrbGVpZGV0LlxuIik7CisgIEFkZERldGFpbCgibWV0YWxsIiwgIkRhcyBNZXRhbGwgZ2xhZW56dCBzaWxiZXJuLlxuIik7CisgIEFkZERldGFpbCgidW5hbmdlbmVobWVzIiwgIldlciB3ZWlzcywgd2FzIHNpY2ggZG9ydCB2ZXJiaXJndCAuLi5cbiIpOworICBBZGREZXRhaWwoImJvZGVuIiwgIkR1IGJpc3QgZnJvaCwgZGFzcyBlcyBoaWVyIGVpbmVuIEJvZGVuIGdpYnQsIHNvbnN0IHd1ZXJkZXN0IER1IHRpZWYgZmFsbGVuLlxuIik7CisgIEFkZERldGFpbCgiZGVja2UiLCAiRGllIERlY2tlIGlzdCBtZXRhbGxpc2NoIHVuZCBnbGFlbnp0LlxuIik7CisgIEFkZERldGFpbCgoeyJnZXJhZXVzY2giLCAiZ2VyYWV1c2NoZSJ9KSwgIkVzIHF1aWV0c2NodC5cbiIpOworICBBZGRFeGl0KCJub3JkZW4iLEwxKCJtNHg0IikpOworICBBZGRFeGl0KCJvc3RlbiIsTDEoIm01eDUiKSk7CisgIEFkZEV4aXQoIndlc3RlbiIsTDEoIm0zeDUiKSk7Cit9CmRpZmYgLS1naXQgYS9kb2MvYmVpc3BpZWxlL3NzcC9sMS9tNXgxLmMgYi9kb2MvYmVpc3BpZWxlL3NzcC9sMS9tNXgxLmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNTg2NWE5MQotLS0gL2Rldi9udWxsCisrKyBiL2RvYy9iZWlzcGllbGUvc3NwL2wxL201eDEuYwpAQCAtMCwwICsxLDI2IEBACitpbmhlcml0ICJzdGQvcm9vbSI7CisKKyNpbmNsdWRlIDxwcm9wZXJ0aWVzLmg+CisjaW5jbHVkZSAiLi4vZmlsZXMuaCIKKworY3JlYXRlKCkKK3sKKyAgOjpjcmVhdGUoKTsKKyAgU2V0UHJvcChQX0xJR0hULCAwKTsKKyAgU2V0UHJvcChQX0lORE9PUlMsIDEpOworICBTZXRQcm9wKFBfSU5UX1NIT1JULCAiU3RlaW5lYmVuZSIpOworICBTZXRQcm9wKFBfSU5UX0xPTkcsCisgICJEdSBiaXN0IGltIEhvZWhsZW5sYWJ5cmludGggZGVyIFNjaHJlY2tlbnNzcGl0emUuIERlciBncm9iIGJlaGF1ZW5lIEdhbmdcbiIrCisgICJtYWNodCBoaWVyIGVpbmUgQmllZ3VuZyB2b24gU3VlZGVuIG5hY2ggV2VzdGVuLCB3byBlciBpbiBlaW5lbSBzY2h3YXJ6ZW5cbiIrCisgICJMb2NoIHZlcnNjaHdpbmRldCwgYXVzIGRlbSBlaW4gZnVlcmNodGVybGljaGVyIEdlc3RhbmsgZHJpbmd0LlxuIik7IAorICBBZGREZXRhaWwoImdhbmciLCAiRGVyIEdhbmcgZnVlaHJ0IGluIGRpZSBEdW5rZWxoZWl0LlxuIik7CisgIEFkZERldGFpbCgiZHVua2VsaGVpdCIsICJTY2h3YXJ6ZSwgbGljaHRsb3NlIER1bmtlbGhlaXQuXG4iKTsKKyAgQWRkRGV0YWlsKCJsb2NoIiwgIkhpZXIgbGF1ZXJ0IGlyZ2VuZCBldHdhcyBTY2hyZWNrbGljaGVzLlxuIik7CisgIEFkZERldGFpbCgiZ2VzdGFuayIsICJEZXIgR2VzdGFuayBpc3Qgd2lya2xpY2ggZ3JhdWVuaGFmdC5cbiIpOworICBBZGREZXRhaWwoImJvZGVuIiwgIkhvcHBsYSwgaGllciBsaWVnZW4gRmxlaXNjaGZldHplbiBydW0sIGltIFdlc3RlbiBzY2hlaW50IHdvaGwgd2FzIHp1IHd1ZXRlbi5cbiIpOworICBBZGREZXRhaWwoKHsiZmxlaXNjaGZldHplbiIsICJmZXR6ZW4iLCAiZmxlaXNjaCJ9KSwgIklzdCBqYSBla2xpZyFcbiIpOworICBBZGREZXRhaWwoKHsid2FuZCIsICJ3YWVuZGUifSksICJEaWUgV2FlbmRlIHNpbmQgdmVyc2NobWllcnQuXG4iKTsKKyAgQWRkRGV0YWlsKCJkZWNrZSIsICJHYWVobi5cbiIpOworICBBZGRFeGl0KCJ3ZXN0ZW4iLEwxKCJtNHgxIikpOworICBBZGRFeGl0KCJzdWVkZW4iLEwxKCJtNXgyIikpOworfQpkaWZmIC0tZ2l0IGEvZG9jL2JlaXNwaWVsZS9zc3AvbDEvbTV4Mi5jIGIvZG9jL2JlaXNwaWVsZS9zc3AvbDEvbTV4Mi5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjc1ZjZhNWYKLS0tIC9kZXYvbnVsbAorKysgYi9kb2MvYmVpc3BpZWxlL3NzcC9sMS9tNXgyLmMKQEAgLTAsMCArMSwyNiBAQAoraW5oZXJpdCAic3RkL3Jvb20iOworCisjaW5jbHVkZSA8cHJvcGVydGllcy5oPgorI2luY2x1ZGUgIi4uL2ZpbGVzLmgiCisKK2NyZWF0ZSgpCit7CisgIDo6Y3JlYXRlKCk7CisgIFNldFByb3AoUF9MSUdIVCwgMCk7CisgIFNldFByb3AoUF9JTkRPT1JTLCAxKTsKKyAgU2V0UHJvcChQX0lOVF9TSE9SVCwgIlN0ZWluZWJlbmUiKTsKKyAgU2V0UHJvcChQX0lOVF9MT05HLAorICAiRHUgYmlzdCBpbSBIb2VobGVubGFieXJpbnRoIGRlciBTY2hyZWNrZW5zc3BpdHplLiBFaW4gbWl0IHJvaGVyIEdld2FsdCBpblxuIisKKyAgImRlbiBGZWxzIGdlbmFndGVyIEdhbmcgZnVlaHJ0IHZvbiBTdWVkZW4gbmFjaCBOb3JkZW4uIER1IHNwdWVyc3QsIGRhc3NcbiIrCisgICJoaW50ZXIgamVkZXIgRWNrZSBPcmtzIG9kZXIgYW5kZXJlcyB1ZWJsZXMgR2V6dWVjaHQgbGF1ZXJuIGtvZW5uZW4uXG4iKTsKKyAgQWRkRGV0YWlsKCh7ImdhbmciLCAiZ2FlbmdlIn0pLCAiRGVyIEdhbmcgZnVlaHJ0IHZvbiBTdWVkZW4gbmFjaCBOb3JkZW4uXG4iKTsKKyAgQWRkRGV0YWlsKCJmZWxzIiwgIkVzIGlzdCBlaW4gaGFydGVyIEZlbHMsIGRlciB2b24gYm9lc2VuIFdlc2VuIGR1cmNoYm9ocnQgd3VyZGUuXG4iKTsKKyAgQWRkRGV0YWlsKCh7Im9yayIsICJvcmtzIiwgImdlenVlY2h0In0pLCAiTW9tZW50YW4gc2llaHN0IER1IGtlaW5lIE9ya3MsIGFiZXIgZGFzIGthbm4gc2ljaCBqYSBzY2huZWxsIGFlbmRlcm4uXG4iKTsKKyAgQWRkRGV0YWlsKCJib2RlbiIsICJCbGFua2VyIEZlbHMuXG4iKTsKKyAgQWRkRGV0YWlsKCJmZWxzIiwgIkRhcyB3aXJkIGFsbG1hZWhsaWNoIGxhbmd3ZWlsaWcuXG4iKTsKKyAgQWRkRGV0YWlsKCJkZWNrZSIsICJBbiBkZXIgRGVja2UgaGFlbmd0IGVpbmUgYnVudGUgR2lybGFuZGUuXG4iKTsKKyAgQWRkRGV0YWlsKCJnaXJsYW5kZSIsICJXZXIgZGllIHdvaGwgZGEgYXVmZ2VoYWVuZ3QgaGF0P1xuIik7CisgIEFkZERldGFpbCgoeyJ3YW5kIiwgIndhZW5kZSJ9KSwgIkRhIGdpYnQgZXMgbmljaHRzIGludGVyZXNzYW50ZXMgenUgc2VoZW4uXG4iKTsKKyAgQWRkRXhpdCgibm9yZGVuIixMMSgibTV4MSIpKTsKKyAgQWRkRXhpdCgic3VlZGVuIixMMSgibTV4MyIpKTsKK30KZGlmZiAtLWdpdCBhL2RvYy9iZWlzcGllbGUvc3NwL2wxL201eDMuYyBiL2RvYy9iZWlzcGllbGUvc3NwL2wxL201eDMuYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5iN2Q0Y2U3Ci0tLSAvZGV2L251bGwKKysrIGIvZG9jL2JlaXNwaWVsZS9zc3AvbDEvbTV4My5jCkBAIC0wLDAgKzEsMzIgQEAKK2luaGVyaXQgInN0ZC9yb29tIjsKKworI2luY2x1ZGUgPHByb3BlcnRpZXMuaD4KKyNpbmNsdWRlIDxtb3ZpbmcuaD4KKyNpbmNsdWRlIDxyb29tcy5oPgorI2luY2x1ZGUgIi4uL2ZpbGVzLmgiCisKK2NyZWF0ZSgpCit7CisgIDo6Y3JlYXRlKCk7CisgIFNldFByb3AoUF9MSUdIVCwgMCk7CisgIFNldFByb3AoUF9JTkRPT1JTLCAxKTsKKyAgU2V0UHJvcChQX0lOVF9TSE9SVCwgIlN0ZWluZWJlbmUiKTsKKyAgU2V0UHJvcChQX0lOVF9MT05HLAorICAiRHUgYmlzdCBpbSBIb2VobGVubGFieXJpbnRoIGRlciBTY2hyZWNrZW5zc3BpdHplLiBEdW5rbGUgR2FlbmdlIGZ1ZWhyZW5cbiIrCisgICJuYWNoIE5vcmRlbiwgU3VlZGVuIHVuZCBXZXN0ZW4uIERlciBzdWVkbGljaGUgR2FuZyBpc3QgZXR3YXMgbWVya3d1ZXJkaWcsXG4iKworICAiZGVubiBzZWluIEVpbmdhbmcgaXN0IG1pdCBnbGFlbnplbmRlbSBNZXRhbGwgc2VsdHNhbSBiZXNjaGxhZ2VuLlxuIik7CisgIEFkZERldGFpbCgoeyJmZWxzYm9kZW4iLCAiYm9kZW4ifSksICJEZXIgYmxhbmtlIEZlbHNib2RlbiBnZWh0IGltIFN1ZWRlbiBpbiBNZXRhbGwgdWViZXIuXG4iKTsKKyAgQWRkRGV0YWlsKCh7ImdhbmciLCAiZ2FlbmdlIn0pLCAiRXMgc2luZCBHYWVuZ2UgZGVyIE9ya3MuXG4iKTsKKyAgQWRkRGV0YWlsKCJlaW5nYW5nIiwgIkltIFN1ZWRlbiBnbGFlbnplbiBkaWUgV2FlbmRlLCBkaWUgbWl0IE1ldGFsbCBiZXNjaGxhZ2VuIHNpbmQuXG4iKTsKKyAgQWRkRGV0YWlsKCh7IndhbmQiLCAid2FlbmRlIn0pLCAiRGllIFdhZW5kZSBzaW5kIGRhIC4uLiB3aWUgaW1tZXIuXG4iKTsKKyAgQWRkRGV0YWlsKCJkZWNrZSIsICJEaWUgRGVja2UgaXN0IG5pY2h0IGludGVyZXNzYW50LlxuIik7CisgIEFkZERldGFpbCgiZmVscyIsICJHcmF1ZXIgRmVscy5cbiIpOworICBBZGREZXRhaWwoIm1ldGFsbCIsICJFcyBzY2hlaW50IEVpc2VuIHp1IHNlaW4uXG4iKTsKKyAgQWRkRGV0YWlsKCJlaXNlbiIsICJKYSwgendlaWZlbGxvcywgZXMgaXN0IEVpc2VuLlxuIik7CisgIEFkZEV4aXQoIndlc3RlbiIsTDEoIm00eDMiKSk7CisgIEFkZEV4aXQoIm5vcmRlbiIsTDEoIm01eDIiKSk7CisgIEFkZEV4aXQoInN1ZWRlbiIsTDEoIm01eDQiKSk7CisKKyAgQWRkSXRlbShNT04oIm9ya2NoZWYiKSwgUkVGUkVTSF9SRU1PVkUpOworfQorCmRpZmYgLS1naXQgYS9kb2MvYmVpc3BpZWxlL3NzcC9sMS9tNXg0LmMgYi9kb2MvYmVpc3BpZWxlL3NzcC9sMS9tNXg0LmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYjk1ZDE1ZQotLS0gL2Rldi9udWxsCisrKyBiL2RvYy9iZWlzcGllbGUvc3NwL2wxL201eDQuYwpAQCAtMCwwICsxLDI1IEBACitpbmhlcml0ICJzdGQvcm9vbSI7CisKKyNpbmNsdWRlIDxwcm9wZXJ0aWVzLmg+CisjaW5jbHVkZSAiLi4vZmlsZXMuaCIKKworY3JlYXRlKCkKK3sKKyAgcmVwbGFjZV9wcm9ncmFtKCJzdGQvcm9vbSIpOworICA6OmNyZWF0ZSgpOworICBTZXRQcm9wKFBfTElHSFQsIDApOworICBTZXRQcm9wKFBfSU5ET09SUywgMSk7CisgIFNldFByb3AoUF9JTlRfU0hPUlQsICJNZXRhbGxlYmVuZSIpOworICBTZXRQcm9wKFBfSU5UX0xPTkcsCisgICJEdSBiaXN0IGltIEhvZWhsZW5sYWJ5cmludGggZGVyIFNjaHJlY2tlbnNzcGl0emUuIERlciBHYW5nLCBkZXIgaGllciB2b25cbiIrCisgICJOb3JkZW4gbmFjaCBTdWVkZW4gZnVlaHJ0LCBhZWhuZWx0IG1laHIgZWluZXIgUm9laHJlLCBkZW5uIGFsbGVzIGlzdCB2b2xsLVxuIisKKyAgInN0YWVuZGlnIGF1cyBlaW5lbSBnbGFlbnplbmRlbiBNZXRhbGwuIER1IGZyYWdzdCBEaWNoLCB3ZXIgd29obCBkaWVzZVxuIisKKyAgIkdhZW5nZSBhbmdlbGVndCBoYXQuXG4iKTsKKyAgQWRkRGV0YWlsKCh7ImdhbmciLCAiZ2FlbmdlIiwgInJvZWhyZSIsICJyb2hyIn0pLCAiRGllIEdhZW5nZSBzaW5kIHZvZWxsaWcgbWl0IE1ldGFsbCBhdXNnZWtsZWlkZXQuXG4iKTsKKyAgQWRkRGV0YWlsKCJtZXRhbGwiLCAiRGFzIE1ldGFsbCBnbGFlbnp0IHNpbGJlcm4uXG4iKTsKKyAgQWRkRGV0YWlsKCh7IndhbmQiLCAid2FlbmRlIn0pLCAiRGllIFdhZW5kZSBnbGFlbnplbiBzaWxiZXJuLlxuIik7CisgIEFkZERldGFpbCgiYm9kZW4iLCAiU2VpIGZyb2gsIGRhc3MgZXIgZGEgaXN0LlxuIik7CisgIEFkZERldGFpbCgiZGVja2UiLCAiRGllIERlY2tlIGlzdCB3aXJrbGljaCB6aWVtbGljaCBsYW5nd2VpbGlnLlxuIik7CisgIEFkZEV4aXQoIm5vcmRlbiIsTDEoIm01eDMiKSk7CisgIEFkZEV4aXQoInN1ZWRlbiIsTDEoIm01eDUiKSk7Cit9CmRpZmYgLS1naXQgYS9kb2MvYmVpc3BpZWxlL3NzcC9sMS9tNXg1LmMgYi9kb2MvYmVpc3BpZWxlL3NzcC9sMS9tNXg1LmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNGY5OWJhMQotLS0gL2Rldi9udWxsCisrKyBiL2RvYy9iZWlzcGllbGUvc3NwL2wxL201eDUuYwpAQCAtMCwwICsxLDI3IEBACitpbmhlcml0ICJzdGQvcm9vbSI7CisKKyNpbmNsdWRlIDxwcm9wZXJ0aWVzLmg+CisjaW5jbHVkZSA8cm9vbXMuaD4KKyNpbmNsdWRlICIuLi9maWxlcy5oIgorCitjcmVhdGUoKQoreworICA6OmNyZWF0ZSgpOworICBTZXRQcm9wKFBfTElHSFQsIDApOworICBTZXRQcm9wKFBfSU5ET09SUywgMSk7CisgIFNldFByb3AoUF9JTlRfU0hPUlQsICJNZXRhbGxlYmVuZSIpOworICBTZXRQcm9wKFBfSU5UX0xPTkcsCisgICJEdSBiaXN0IGltIEhvZWhsZW5sYWJ5cmludGggZGVyIFNjaHJlY2tlbnNzcGl0emUuIEVpZ2VudGxpY2gga29lbm50ZSBtYW5cbiIrCisgICJlcyBhdWNoIGZhc3QgUm9laHJlbmxhYnlyaW50aCBuZW5uZW4sIGRlbm4gRHUgYmVmaW5kZXN0IERpY2ggaW4gZWluZXJcbiIrCisgICJzb2xjaGVuLCBkaWUgaGllciBlaW5lIEJpZWd1bmcgdm9uIE5vcmRlbiBuYWNoIFdlc3RlbiBtYWNodC4gRGllIFdhZW5kZVxuIisKKyAgInNpbmQgYXVzIGVpbmVtIGdsYWVuemVuZGVuIE1ldGFsbCBnZWZlcnRpZ3QsIHdhcyBEaXIgemllbWxpY2ggbWVya3d1ZXJkaWdcbiIrCisgICJ2b3Jrb21tdC5cbiIpOworICBBZGREZXRhaWwoKHsid2FuZCIsICJ3YWVuZGUiLCAicm9laHJlIiwgInJvZWhyZW4iLCAiZ2FlbmdlIiwgImdhbmcifSksICJEaWUgR2FlbmdlIHNpbmQgdm9lbGxpZyBtaXQgTWV0YWxsIGF1c2dla2xlaWRldC5cbiIpOworICBBZGREZXRhaWwoIm1ldGFsbCIsICJEYXMgTWV0YWxsIGdsYWVuenQgc2lsYmVybi5cbiIpOworICBBZGREZXRhaWwoImJvZGVuIiwgIkRlciBCb2RlbiBpc3QgYXVzIE1ldGFsbC5cbiIpOworICBBZGREZXRhaWwoImRlY2tlIiwgIlNlbGJzdCBkaWUgRGVja2UgZ2xhZW56dCBtZXRhbGxpc2NoLCBEdSBmcmFnc3QgRGljaCwgd2VyIGRhcyBhbmdlbGVndCBoYXQuXG4iKTsKKyAgQWRkRGV0YWlsKCJiaWVndW5nIiwgIkRpZSBCaWVndW5nIGZ1ZWhydCB2b24gTm9yZGVuIG5hY2ggV2VzdGVuLlxuIik7CisgIEFkZEl0ZW0oTU9OKCJrYW1wZmJsZWNoIiksIFJFRlJFU0hfUkVNT1ZFKTsKKyAgQWRkRXhpdCgibm9yZGVuIixMMSgibTV4NCIpKTsKKyAgQWRkRXhpdCgid2VzdGVuIixMMSgibTR4NSIpKTsKK30KZGlmZiAtLWdpdCBhL2RvYy9iZWlzcGllbGUvc3NwL2wxL29iZW4uYyBiL2RvYy9iZWlzcGllbGUvc3NwL2wxL29iZW4uYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5mM2JjMDM5Ci0tLSAvZGV2L251bGwKKysrIGIvZG9jL2JlaXNwaWVsZS9zc3AvbDEvb2Jlbi5jCkBAIC0wLDAgKzEsMjcgQEAKK2luaGVyaXQgInN0ZC9yb29tIjsKKyAKKyNpbmNsdWRlIDxwcm9wZXJ0aWVzLmg+CisjaW5jbHVkZSA8cm9vbXMuaD4KKyNpbmNsdWRlICIuLi9maWxlcy5oIgorIAorY3JlYXRlKCkKK3sKKyAgcmVwbGFjZV9wcm9ncmFtKCJzdGQvcm9vbSIpOworICA6OmNyZWF0ZSgpOworICBTZXRQcm9wKFBfTElHSFQsIDApOworICBTZXRQcm9wKFBfSU5ET09SUywgMSk7CisgIFNldFByb3AoUF9JTlRfU0hPUlQsICJCZWltIEtub2NoZW5zY2hhZWxlciIpOworICBTZXRQcm9wKFBfSU5UX0xPTkcsCisgICJEdSBiaXN0IGltIEhvZWhsZW5sYWJ5cmludGggZGVyIFNjaHJlY2tlbnNzcGl0emUuIERpZXNlciBrbGVpbmUgUmF1bSBpc3RcbiIrCisgICJkaWUgSGVpbWF0IGVpbmVzIGZ1ZXJjaHRlcmxpY2hlbiBVbmdlaGV1ZXJzLCBkaWUgSGVpbWF0IGRlcyBzY2hyZWNrbGljaGVuXG4iKworICAiS25vY2hlbnNjaGFlbGVycy4gSW0gQm9kZW4gZGVzIFJhdW1zIGlzdCBlaW4ga2xlaW5lcyBMb2NoLCBkdXJjaCBkYXMgZWluZVxuIisKKyAgIkxlaXRlciBuYWNoIHVudGVuIGZ1ZWhydC5cbiIpOworICBBZGREZXRhaWwoInJhdW0iLCAiRGVyIFJhdW0gaXN0IHppZW1saWNoIGtsZWluLlxuIik7CisgIEFkZERldGFpbCgoeyJ3YW5kIiwgImRlY2tlIiwgIndhZW5kZSIsICJtZXRhbGwifSksICJBbGxlcyBpc3QgYXVzIE1ldGFsbC5cbiIpOworICBBZGREZXRhaWwoKHsiYm9kZW4iLCAibG9jaCJ9KSwgIkltIEJvZGVuIGlzdCBlaW4gTG9jaCwgZHVyY2ggZGFzIGVpbmUgTGVpdGVyIG5hY2ggdW50ZW4gZnVlaHJ0LlxuIik7CisgIEFkZERldGFpbCgibGVpdGVyIiwgIkRpZSBMZWl0ZXIgZnVlaHJ0IG5hY2ggdW50ZW4uXG4iKTsKKyAgQWRkRGV0YWlsKCJ1bmdlaGV1ZXIiLCAiRGVyIEtub2NoZW5zY2hhZWxlciBpc3QgZWluZmFjaCBmdWVyY2h0ZXJsaWNoLlxuIik7CisgIEFkZERldGFpbCgia25vY2hlbnNjaGFlbGVyIiwgIlp1bSBHbHVlY2sgaXN0IGVyIGdlcmFkZSBuaWNodCBkYWhlaW0uXG4iKTsKKyAgQWRkSXRlbShNT04oImtub2NoZW5zY2hhZWxlciIpLCBSRUZSRVNIX1JFTU9WRSk7CisgIEFkZEV4aXQoInVudGVuIiwgTDEoIm0yeDIiKSk7Cit9CmRpZmYgLS1naXQgYS9kb2MvYmVpc3BpZWxlL3NzcC9tb24vZG9zZW5vZWZmbmVyLmMgYi9kb2MvYmVpc3BpZWxlL3NzcC9tb24vZG9zZW5vZWZmbmVyLmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNDZkNjI3YwotLS0gL2Rldi9udWxsCisrKyBiL2RvYy9iZWlzcGllbGUvc3NwL21vbi9kb3Nlbm9lZmZuZXIuYwpAQCAtMCwwICsxLDI0IEBACisjaW5jbHVkZSA8cHJvcGVydGllcy5oPgorI2luY2x1ZGUgIi4uL2ZpbGVzLmgiCisKK2luaGVyaXQgTU1PTlNUOworCitjcmVhdGUoKQoreworICBpZiAoIWNsb25lcCh0aGlzX29iamVjdCgpKSkgcmV0dXJuOworICAgOjpjcmVhdGUoKTsKKyAgIEFkZElkKCh7ImRvc2Vub2VmZm5lciIsICJvZWZmbmVyIn0pKTsKKyAgIEFkZEFkamVjdGl2ZSgoeyJtb2JpbGVyIiwgIm1vYmlsZW4ifSkpOworICAgU2V0UHJvcChQX1NIT1JULCAiRWluIG1vYmlsZXIgRG9zZW5vZWZmbmVyIik7CisgICBTZXRQcm9wKFBfTE9ORywgIkRlciBEb3Nlbm9lZmZuZXIgbW9lY2h0ZSBEaXIgc2ljaGVybGljaCBkZW4gS29wZiBtaXQgc2VpbmVuIHNjaGFyZmVuXG5TY2huZWlkZXJhZWRlcm4gb2VmZm5lbi5cbiIpOworICAgU2V0UHJvcChQX05BTUUsICJEb3Nlbm9lZmZuZXIiKTsKKyAgIFNldFByb3AoUF9HRU5ERVIsIDEpOworICAgU2V0UHJvcChQX0xFVkVMLCAxMik7CisgICBTZXRQcm9wKFBfTUFYX0hQLCAxMjApOworICAgU2V0UHJvcChQX0FMSUdOLCAtMTIzKTsKKyAgIFNldFByb3AoUF9CT0RZLCA4MCk7CisgICBTZXRQcm9wKFBfSEFORFMsICh7IiBtaXQgc2NoYXJmZW4gU2NobmVpZGVyYWVkZXJuIiwgNTB9KSk7CisgICBTZXRQcm9wKFBfWFAsIDMwMDAwKTsKKyAgIFNldFByb3AoUF9TSVpFLCByYW5kb20oMjApKzQwKTsKKyAgIHNldF9saXZpbmdfbmFtZSgiZG9zZW5vZWZmbmVyIik7Cit9CmRpZmYgLS1naXQgYS9kb2MvYmVpc3BpZWxlL3NzcC9tb24vZWlzZW5mcmVzc2VyLmMgYi9kb2MvYmVpc3BpZWxlL3NzcC9tb24vZWlzZW5mcmVzc2VyLmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYmE3YjA0MQotLS0gL2Rldi9udWxsCisrKyBiL2RvYy9iZWlzcGllbGUvc3NwL21vbi9laXNlbmZyZXNzZXIuYwpAQCAtMCwwICsxLDI4IEBACisjaW5jbHVkZSA8cHJvcGVydGllcy5oPgorI2luY2x1ZGUgIi4uL2ZpbGVzLmgiCisKK2luaGVyaXQgTU1PTlNUOworCitjcmVhdGUoKQoreworICBpZiAoIWNsb25lcCh0aGlzX29iamVjdCgpKSkgcmV0dXJuOworICAgOjpjcmVhdGUoKTsKKyAgIEFkZElkKCh7ImVpc2VuZnJlc3NlciIsICJmcmVzc2VyIn0pKTsKKyAgIFNldFByb3AoUF9TSE9SVCwgIkVpbiBFaXNlbmZyZXNzZXIiKTsKKyAgIFNldFByb3AoUF9MT05HLAorICAgIkVpc2VuZnJlc3NlciBlcm5hZWhyZW4gc2ljaCBhdXNzY2hsaWVzc2xpY2ggdm9uIEVpc2VuLCBhbGxlcmRpbmdzIHNpbmRcbiIrCisgICAic2llIHNvIGt1cnpzaWNodGlnLCBkYXNzIHNpZSBlcnN0bWFsIGluIGFsbGVzIHJlaW5iZWlzc2VuLCB3YXMgc2llXG4iKworICAgImlyZ2VuZHdpZSB3YWhybmVobWVuLlxuIik7CisgICBTZXRQcm9wKFBfTkFNRSwgIkVpc2VuZnJlc3NlciIpOworICAgU2V0UHJvcChQX0dFTkRFUiwgMSk7CisgICBTZXRQcm9wKFBfTEVWRUwsIDE0KTsKKyAgIFNldFByb3AoUF9NQVhfSFAsIDE1MCk7CisgICBTZXRQcm9wKFBfQUxJR04sIC0yMTUpOworICAgU2V0UHJvcChQX0JPRFksIDc1KTsKKyAgIFNldFByb3AoUF9IQU5EUywgKHsiIG1pdCBlaXNlbmJlc2NobGFnZW5lbiBaYWVobmVuIiwgNTV9KSk7CisgICBTZXRQcm9wKFBfWFAsIDQyMDAwKTsKKyAgIFNldFByb3AoUF9BR0dSRVNTSVZFLCAxKTsKKyAgIFNldFByb3AoUF9TSVpFLCByYW5kb20oMjAwKSs1MCk7ICAgLyogTmFqYSwga3VyenNpY2h0aWcgaGFsdC4uLiA7LSkgKi8KKyAgIHNldF9saXZpbmdfbmFtZSgiZWlzZW5mcmVzc2VyIik7CisgICBBZGRJdGVtKCBPQkooImVpc2Vua2x1bXBlbiIpICk7Cit9CmRpZmYgLS1naXQgYS9kb2MvYmVpc3BpZWxlL3NzcC9tb24va2FtcGZibGVjaC5jIGIvZG9jL2JlaXNwaWVsZS9zc3AvbW9uL2thbXBmYmxlY2guYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5lMjE4ZDAxCi0tLSAvZGV2L251bGwKKysrIGIvZG9jL2JlaXNwaWVsZS9zc3AvbW9uL2thbXBmYmxlY2guYwpAQCAtMCwwICsxLDM2IEBACisjaW5jbHVkZSA8cHJvcGVydGllcy5oPgorI2luY2x1ZGUgPGNvbWJhdC5oPgorI2luY2x1ZGUgIi4uL2ZpbGVzLmgiCisKK2luaGVyaXQgInN0ZC9ucGMiOworCitjcmVhdGUoKQoreworICBpZiAoIWNsb25lcCh0aGlzX29iamVjdCgpKSkgcmV0dXJuOworICAgOjpjcmVhdGUoKTsKKyAgIFNldFByb3AoUF9TSE9SVCwgIkVpbiBLYW1wZmJsZWNoIik7CisgICBTZXRQcm9wKFBfTE9ORywgCisgICAiRGFzIEthbXBmYmxlY2ggc2llaHQgaXJnZW5kd2llIGF1cyB3aWUgZWluIG5vcm1hbGVzIEJhY2tibGVjaCwgbnVyXG4iKworICAgInZpZWwgZ2VmYWVocmxpY2hlciFcbiIpOworICAgU2V0UHJvcChQX05BTUUsICJLYW1wZmJsZWNoIik7CisgICBTZXRQcm9wKFBfR0VOREVSLCAwKTsKKyAgIEFkZElkKCh7ImJsZWNoIiwgImthbXBmYmxlY2giLCJcbmthbXBmYmxlY2gifSkpOworICAgU2V0UHJvcChQX0xFVkVMLCA4KTsKKyAgIFNldFByb3AoUF9NQVhfSFAsIDEwMCk7CisgICBTZXRQcm9wKFBfQUxJR04sIC0zMyk7CisgICBTZXRQcm9wKFBfQk9EWSwgNzApOworICAgU2V0UHJvcChQX0hBTkRTLCAoeyIgbWl0IGVpc2VuaGFydGVuIFNjaGxhZWdlbiIsIDYwfSkpOworICAgU2V0UHJvcChQX1hQLCAzMDAwMCk7CisgICBTZXRQcm9wKFBfU0laRSwgNDApOworICAgU2V0UHJvcChQX1JBQ0UsICJNZXRhbGxtb25zdGVyIik7CisgICBTZXRQcm9wKFBfVlVMTkVSQUJJTElUWSwgKHsgRFRfV0FURVIgfSkpOworICAgU2V0UHJvcChQX05PQ09SUFNFLCAxKTsKKyAgIFNldFByb3AoUF9ESUVfTVNHLCAiIGZhZWxsdCBsYXV0IHNjaGVwcGVybmQgdW0uXG4iKTsKKyAgIHNldF9saXZpbmdfbmFtZSgia2FtcGZibGVjaCIpOworfQorCitkaWUoKQoreworICAgY2xvbmVfb2JqZWN0KE9CSigia2FtcGZibGVjaCIpKS0+bW92ZShlbnZpcm9ubWVudCgpKTsKKyAgIDo6ZGllKCk7Cit9CmRpZmYgLS1naXQgYS9kb2MvYmVpc3BpZWxlL3NzcC9tb24va25vY2hlbnNjaGFlbGVyLmMgYi9kb2MvYmVpc3BpZWxlL3NzcC9tb24va25vY2hlbnNjaGFlbGVyLmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uODRjMWUzYgotLS0gL2Rldi9udWxsCisrKyBiL2RvYy9iZWlzcGllbGUvc3NwL21vbi9rbm9jaGVuc2NoYWVsZXIuYwpAQCAtMCwwICsxLDQzIEBACisjaW5jbHVkZSA8cHJvcGVydGllcy5oPgorI2luY2x1ZGUgPGNvbWJhdC5oPgorI2luY2x1ZGUgIi4uL2ZpbGVzLmgiCisKK2luaGVyaXQgTU1PTlNUOworCitjcmVhdGUoKQoreworICBpZiAoIWNsb25lcCh0aGlzX29iamVjdCgpKSkgcmV0dXJuOworICAgOjpjcmVhdGUoKTsKKyAgIFNldFByb3AoUF9TSE9SVCwgIkRlciBLbm9jaGVuc2NoYWVsZXIiKTsKKyAgIFNldFByb3AoUF9MT05HLAorICAgIkRlciBLbm9jaGVuc2NoYWVsZXIgZ2VodCB1bSwgZ2VodCB1bVxuIisKKyAgICJEZXIgS25vY2hlbnNjaGFlbGVyIGdlaHQgdW0sIGdlaHQgdW1cbiIrCisgICAiU2VpbiBNZXNzZXIgc28gbGFuZywgd2llIHRhdXNlbmQgZ3Jvc3NlIFphZWhuZVxuIisKKyAgICJXaWUgdGF1c2VuZCBncm9zc2UgWmFlaG5lLCBzZWluIE1lc3NlciBzbyBsYW5nXG4iKworICAgIkVyIHNjaG5laWRldCBEaWNoIGluIFN0dWVja2UsIHBvcnRpb25zZ2VyZWNodCB1bmQgZmVpblxuIisKKyAgICJFciBzY2huZWlkZXQgRGljaCBpbiBTdHVlY2tlLCB1bmQga2VpbmVyIHR1dHMgaWhtIGdsZWljaFxuIisKKyAgICJFciBzY2hhZWx0IGRpZSBLbm9jaGVuLCBlciBxdWFlbHQgRGVpbmVuIEdlaXN0XG4iKworICAgIkVyIHNjaGFlbHQgZGllIEtub2NoZW4sIGVyIHF1YWVsdCBEZWluZW4gR2Vpc3RcbiIrCisgICAiSGFiZXQgYWNodCwgaGFiZXQgYWNodCEgU2VpZXQgdm9yc2ljaHRpZywgaGFiZXQgQWNodCFcbiIrCisgICAiU2NoYXUgRGljaCB1bSwgc2NoYXUgRGljaCB1bVxuIisKKyAgICJTY2hhdSBEaWNoIHVtLCBEdSB3aXJzdCBkZXIgbmFlY2hzdGUgc2VpblxuIik7CisgICBTZXRQcm9wKFBfTkFNRSwgIktub2NoZW5zY2hhZWxlciIpOworICAgU2V0UHJvcChQX0dFTkRFUiwgMSk7CisgICBBZGRJZCgoeyJzY2hhZWxlciIsICJrbm9jaGVuc2NoYWVsZXIifSkpOworICAgU2V0UHJvcChQX0xFVkVMLCAxOCk7CisgICBTZXRQcm9wKFBfTUFYX0hQLCAzMDApOworICAgU2V0UHJvcChQX0FMSUdOLCAtNzg5KTsKKyAgIFNldFByb3AoUF9IQU5EUywgKHsiIG1pdCBzZWluZW0gbGFuZ2VuIE1lc3NlciIsIDE0NX0pICk7CisgICBTZXRQcm9wKFBfQk9EWSwgMTEwKTsKKyAgIFNldFByb3AoUF9YUCwgMjIwMDAwKTsKKyAgIFNldFByb3AoUF9BR0dSRVNTSVZFLCAxKTsKKyAgIFNldFByb3AoUF9TSVpFLCAyMjApOworICAgc2V0X2xpdmluZ19uYW1lKCJrbm9jaGVuc2NoYWVsZXIiKTsKKyAgIGNsb25lX29iamVjdChPQkooInNjaGFlbG1lc3NlciIpKS0+bW92ZSh0aGlzX29iamVjdCgpKTsKKyAgIGNvbW1hbmQoInp1ZWNrZSBtZXNzZXIiKTsKK30KKworUXVlcnlBcnRpY2xlKGMsIGQsIGYpCit7CisgICByZXR1cm4gOjpRdWVyeUFydGljbGUoYywgMSwgZik7Cit9CmRpZmYgLS1naXQgYS9kb2MvYmVpc3BpZWxlL3NzcC9tb24vbWV0YWxsbW9uc3Rlci5jIGIvZG9jL2JlaXNwaWVsZS9zc3AvbW9uL21ldGFsbG1vbnN0ZXIuYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41NDgyMTg2Ci0tLSAvZGV2L251bGwKKysrIGIvZG9jL2JlaXNwaWVsZS9zc3AvbW9uL21ldGFsbG1vbnN0ZXIuYwpAQCAtMCwwICsxLDI4IEBACitpbmhlcml0ICJzdGQvbnBjIjsKKworI2luY2x1ZGUgPHByb3BlcnRpZXMuaD4KKyNpbmNsdWRlIDxjb21iYXQuaD4KKyNpbmNsdWRlICIuLi9maWxlcy5oIgorCitjcmVhdGUoKQoreworICBpZiAoIWNsb25lcCh0aGlzX29iamVjdCgpKSkgcmV0dXJuOworICAgOjpjcmVhdGUoKTsKKyAgIFNldFByb3AoUF9OT0NPUlBTRSwgMSk7CisgICBTZXRQcm9wKFBfUkFDRSwgIk1ldGFsbG1vbnN0ZXIiKTsKKyAgIFNldFByb3AoUF9ESUVfTVNHLCAiIHplcmZhZWxsdCBpbiBzZWluZSBCZXN0YW5kdGVpbGUuXG4iKTsKKyAgIFNldFByb3AoUF9WVUxORVJBQklMSVRZLCAoeyBEVF9XQVRFUiB9KSk7Cit9CisKK2RpZSgpCit7CisgICBjcmVhdGVfYmxlY2goKTsKKyAgIDo6ZGllKCk7Cit9CisKK2NyZWF0ZV9ibGVjaCgpCit7CisgICBvYmplY3QgYjsKKyAgIGIgPSBjbG9uZV9vYmplY3QoT0JKKCJibGVjaCIpKTsKKyAgIGItPm1vdmUoZW52aXJvbm1lbnQodGhpc19vYmplY3QoKSkpOworfQpkaWZmIC0tZ2l0IGEvZG9jL2JlaXNwaWVsZS9zc3AvbW9uL29yay5jIGIvZG9jL2JlaXNwaWVsZS9zc3AvbW9uL29yay5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjk3NWU1OTYKLS0tIC9kZXYvbnVsbAorKysgYi9kb2MvYmVpc3BpZWxlL3NzcC9tb24vb3JrLmMKQEAgLTAsMCArMSwyNiBAQAorI2luY2x1ZGUgPHByb3BlcnRpZXMuaD4KKyNpbmNsdWRlICIuLi9maWxlcy5oIgorCitpbmhlcml0ICJzdGQvbnBjIjsKKworY3JlYXRlKCkKK3sKKyAgaWYgKCFjbG9uZXAodGhpc19vYmplY3QoKSkpIHJldHVybjsKKyAgIDo6Y3JlYXRlKCk7CisgICBTZXRQcm9wKFBfU0hPUlQsICJFaW4gZ3JpbW1pZ2VyIE9yayIpOworICAgU2V0UHJvcChQX0xPTkcsICJEZXIgT3JrIHNjaGF1dCBEaWNoIHVuZnJldW5kbGljaCBhbiB1bmQgd2VkZWx0IG1pdCBzZWluZW0gS3J1bW1zY2h3ZXJ0LlxuIik7CisgICBTZXRQcm9wKFBfTkFNRSwgIk9yayIpOworICAgU2V0UHJvcChQX0dFTkRFUiwgMSk7CisgICBBZGRJZCgib3JrIik7CisgICBTZXRQcm9wKFBfUkFDRSwgIk9yayIpOworICAgU2V0UHJvcChQX0xFVkVMLCAxMCk7CisgICBTZXRQcm9wKFBfTUFYX0hQLCAxMzApOworICAgU2V0UHJvcChQX0FMSUdOLCAtMjUwKTsKKyAgIFNldFByb3AoUF9YUCwgOTAwMDApOworICAgU2V0UHJvcChQX0JPRFksIDUwKTsKKyAgIFNldFByb3AoUF9TSVpFLCByYW5kb20oMjApKzExMCk7CisgICBzZXRfbGl2aW5nX25hbWUoIm9yayIpOworICAgc2V0ZXVpZChnZXR1aWQodGhpc19vYmplY3QoKSkpOworICAgQWRkSXRlbShPQkooImtydW1tc2Nod2VydCIpLENMT05FX1dJRUxEKTsKKyAgIEFkZEl0ZW0oT0JKKCJvcmtob3NlIiksQ0xPTkVfV0VBUik7Cit9CmRpZmYgLS1naXQgYS9kb2MvYmVpc3BpZWxlL3NzcC9tb24vb3JrY2hlZi5jIGIvZG9jL2JlaXNwaWVsZS9zc3AvbW9uL29ya2NoZWYuYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4yZDZlNmNkCi0tLSAvZGV2L251bGwKKysrIGIvZG9jL2JlaXNwaWVsZS9zc3AvbW9uL29ya2NoZWYuYwpAQCAtMCwwICsxLDI5IEBACitpbmhlcml0ICJzdGQvbnBjIjsKKworI2luY2x1ZGUgPHByb3BlcnRpZXMuaD4KKyNpbmNsdWRlICIuLi9maWxlcy5oIgorCitjcmVhdGUoKQoreworICBpZiAoIWNsb25lcCh0aGlzX29iamVjdCgpKSkgcmV0dXJuOworICAgOjpjcmVhdGUoKTsKKyAgIFNldFByb3AoUF9TSE9SVCwgIkVpbiBBbmZ1ZWhyZXIgZGVyIE9ya3MiKTsKKyAgIFNldFByb3AoUF9MT05HLCAiRGllcyBpc3QgZWluIGZldHRlciwgc3RpbmtlbmRlciBPcmstSGFldXB0bGluZywgZGVyIERpciBhbGxlcyBcbmFuZGVyZSBhbHMgZnJldW5kbGljaCBnZXNvbm5lbiBpc3QuXG4iKTsKKyAgIFNldFByb3AoUF9OQU1FLCAiT3JrIik7CisgICBTZXRQcm9wKFBfR0VOREVSLCAxKTsKKyAgIEFkZElkKCh7Im9yayIsICJhbmZ1ZWhyZXIiLCAiaGFldXB0bGluZyJ9KSk7CisgICBTZXRQcm9wKFBfUkFDRSwgIk9yayIpOworICAgU2V0UHJvcChQX0xFVkVMLCAxNik7CisgICBTZXRQcm9wKFBfTUFYX0hQLCAyMjApOworICAgU2V0UHJvcChQX0FMSUdOLCAtMjgwKTsKKyAgIFNldFByb3AoUF9YUCwgMTYwMDAwKTsKKyAgIFNldFByb3AoUF9CT0RZLCA2MCk7CisgICBTZXRQcm9wKFBfU0laRSwgcmFuZG9tKDIwKSsxMzApOworICAgc2V0X2xpdmluZ19uYW1lKCJvcmtjaGVmIik7CisgICBzZXRldWlkKGdldHVpZCh0aGlzX29iamVjdCgpKSk7CisgICBBZGRJdGVtKE9CSigic2FlYmVsIiksQ0xPTkVfV0lFTEQpOworICAgQWRkSXRlbShPQkooIm9ya2hvc2UiKSxDTE9ORV9XRUFSKTsKKyAgIEFkZEl0ZW0oT0JKKCJvcmtoZWxtIiksQ0xPTkVfV0VBUik7Cit9CisKKyAgICAgIApkaWZmIC0tZ2l0IGEvZG9jL2JlaXNwaWVsZS9zc3AvbW9uL3N0YWhsZHJhY2hlLmMgYi9kb2MvYmVpc3BpZWxlL3NzcC9tb24vc3RhaGxkcmFjaGUuYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5iNGVmY2FjCi0tLSAvZGV2L251bGwKKysrIGIvZG9jL2JlaXNwaWVsZS9zc3AvbW9uL3N0YWhsZHJhY2hlLmMKQEAgLTAsMCArMSwzOSBAQAorI2luY2x1ZGUgPHByb3BlcnRpZXMuaD4KKyNpbmNsdWRlIDxjb21iYXQuaD4KKyNpbmNsdWRlICIuLi9maWxlcy5oIgorCitpbmhlcml0IE1NT05TVDsKKworY3JlYXRlKCkKK3sKKyAgaWYgKCFjbG9uZXAodGhpc19vYmplY3QoKSkpIHJldHVybjsKKyAgIDo6Y3JlYXRlKCk7CisgICBTZXRQcm9wKFBfU0hPUlQsICJFaW4gU3RhaGxkcmFjaGUiKTsKKyAgIFNldFByb3AoUF9MT05HLAorICAgIkRlciBTdGFobGRyYWNoZSBpc3QgZWluIGVybnN0enVuZWhtZW5kZXIgR2VnbmVyLCBnZXBhbnplcnQgbWl0IFBsYXR0ZW5cbiIrCisgICAiYXVzIHJlaW5lbSBTdGFobCBpc3QgZXMgc2Nod2VyLCBpaG0gaXJnZW5kd2llIFNjaGFkZW4genV6dWZ1ZWdlbi5cbiIpOworICAgU2V0UHJvcChQX05BTUUsICh7IlN0YWhsZHJhY2hlIiwgIlN0YWhsZHJhY2hlbiIsICJTdGFobGRyYWNoZW4iLCAiU3RhaGxkcmFjaGVuIn0pKTsKKyAgIFNldFByb3AoUF9HRU5ERVIsIDEpOworICAgQWRkSWQoKHsiZHJhY2hlIiwgInN0YWhsZHJhY2hlIiwgImRyYWNoZW4iLCAic3RhaGxkcmFjaGVuIn0pKTsKKyAgIFNldFByb3AoUF9SQUNFLCAiRHJhY2hlIik7CisgICBTZXRQcm9wKFBfTEVWRUwsIDIwKTsKKyAgIFNldFByb3AoUF9NQVhfSFAsIDQwMCk7CisgICBTZXRQcm9wKFBfQUxJR04sIC0yNTApOworICAgU2V0UHJvcChQX0hBTkRTLCAoeyIgbWl0IHN0YWVobGVybmVuIEtsYXVlbiIsIDE1MH0pKTsKKyAgIFNldFByb3AoUF9CT0RZLCAxMzApOworICAgU2V0UHJvcChQX1hQLCAzMDAwMDApOworICAgU2V0UHJvcChQX1NJWkUsIHJhbmRvbSg1MCkrMjUwKTsKKyAgIFNldENoYXRzKDQwLCAoeworICAgICAgIkRlciBTdGFobGRyYWNoZSBzY2huYXVidCBsYXV0LlxuIiwKKyAgICAgICJEZXIgU3RhaGxkcmFjaGUgc2NoYXV0IERpY2ggbWl0IHN0YWVobGVybmVtIEJsaWNrIGFuLlxuIiwKKyAgICAgICJEZXIgU3RhaGxkcmFjaGUgd2FlbHp0IHNpY2ggaGVydW0uXG4iLAorICAgICAgIkRlciBTdGFobGRyYWNoZSBzcHVja3QgZXR3YXMgc3RhaGxibGF1ZXMgRmV1ZXIuXG4iLAorICAgfSkgKTsKKyAgIEFkZFNwZWxsKDEsIDExNSwgIkRlciBTdGFobGRyYWNoZSBzcHVja3Qgc3RhaGxibGF1ZXMgRmV1ZXIgYXVmIERpY2guXG4iLAorICAJICAgICAgICAgICAgIkRlciBTdGFobGRyYWNoZSBzcHVja3Qgc3RhaGxibGF1ZXMgRmV1ZXIgYXVmIEBXRU4uXG4iLAorCSAgICBEVF9GSVJFKTsKKyAgIFNldFByb3AoUF9TUEVMTFJBVEUsMjApOworICAgY2xvbmVfb2JqZWN0KE9CSigiZ3VtbWlzdGllZmVsIikpLT5tb3ZlKHRoaXNfb2JqZWN0KCkpOworICAgY2xvbmVfb2JqZWN0KE9CSigic3RhaGxzY2h3ZXJ0IikpLT5tb3ZlKHRoaXNfb2JqZWN0KCkpOworICAgc2V0X2xpdmluZ19uYW1lKCJzdGFobGRyYWNoZSIpOworfQpkaWZmIC0tZ2l0IGEvZG9jL2JlaXNwaWVsZS9zc3AvbW9uL3RpdGFud2FsemUuYyBiL2RvYy9iZWlzcGllbGUvc3NwL21vbi90aXRhbndhbHplLmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMjMxMTNlNgotLS0gL2Rldi9udWxsCisrKyBiL2RvYy9iZWlzcGllbGUvc3NwL21vbi90aXRhbndhbHplLmMKQEAgLTAsMCArMSwzMCBAQAorI2luY2x1ZGUgPHByb3BlcnRpZXMuaD4gICAgICAgICAgICAgICAgICAgIAorI2luY2x1ZGUgPGNvbWJhdC5oPgorI2luY2x1ZGUgIi4uL2ZpbGVzLmgiCisKK2luaGVyaXQgTU1PTlNUOworIAorY3JlYXRlKCkKK3sKKyAgaWYgKCFjbG9uZXAodGhpc19vYmplY3QoKSkpIHJldHVybjsKKyAgIDo6Y3JlYXRlKCk7CisgICBTZXRQcm9wKFBfU0hPUlQsICJFaW5lIFRpdGFud2FsemUiKTsKKyAgIFNldFByb3AoUF9MT05HLCAiUGFzcyBudXIgYXVmLCBkYXNzIGRpZXNlIFRpdGFud2FsemUgRGlyIG5pY2h0IHVlYmVyIGRpZSBaZWhlbiByb2xsdC5cbkJlaSBkaWVzZW0gR2V3aWNodCBrb2VubnRlIGRhcyBhdWVzc2Vyc3QgdW5hbmdlbmVobWUgRm9sZ2VuIGhhYmVuLlxuIik7CisgICBTZXRQcm9wKFBfTkFNRSwgIlRpdGFud2FsemUiKTsKKyAgIFNldFByb3AoUF9HRU5ERVIsIDIpOworICAgQWRkSWQoKHsid2FsemUiLCAidGl0YW53YWx6ZSJ9KSk7CisgICBTZXRQcm9wKFBfTEVWRUwsIDE0KTsKKyAgIFNldFByb3AoUF9NQVhfSFAsIDE3MCk7CisgICBTZXRQcm9wKFBfQUxJR04sIDEyMCk7CisgICBTZXRQcm9wKFBfWFAsIDUxMDAwKTsKKyAgIFNldFByb3AoUF9CT0RZLCA5MCk7CisgICBTZXRQcm9wKFBfSEFORFMsICh7IiBtaXQgd3VjaHRpZ2VuIFNjaGxhZWdlbiIsIDYwfSkpOworICAgU2V0UHJvcChQX1NJWkUsIDIxMCk7CisgICBTZXRQcm9wKFBfRElFX01TRywgIiB6ZXJmYWVsbHQgaW4gaWhyZSBCZXN0YW5kdGVpbGUuXG4iKTsKKyAgIFNldEF0dGFja0NoYXRzKDMwLCAoeworICAgIkRpZSBUaXRhbndhbHplIHZlcnN1Y2h0IERpY2ggcGxhdHQgenUgd2FsemVuLlxuIiwKKyAgICJEaWUgVGl0YW53YWx6ZSBtYWNodDogUnVtcGVsLCBwb2x0ZXIgLi4uXG4iLAorICAgIkRpZSBUaXRhbndhbHplIHJvZWhydC5cbiJ9KSk7CisgICBzZXRfbGl2aW5nX25hbWUoInRpdGFud2FsemUiKTsKKyAgIEFkZEl0ZW0oT0JKKCJ0aXRhbnJpbmciKSk7IAorfQpkaWZmIC0tZ2l0IGEvZG9jL2JlaXNwaWVsZS9zc3AvbW9uL3Ryb2xsLmMgYi9kb2MvYmVpc3BpZWxlL3NzcC9tb24vdHJvbGwuYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44ZWIxMDQzCi0tLSAvZGV2L251bGwKKysrIGIvZG9jL2JlaXNwaWVsZS9zc3AvbW9uL3Ryb2xsLmMKQEAgLTAsMCArMSwyOCBAQAorI2luY2x1ZGUgPHByb3BlcnRpZXMuaD4KKyNpbmNsdWRlICIuLi9maWxlcy5oIgorCitpbmhlcml0ICJzdGQvbnBjIjsKKworY3JlYXRlKCkKK3sKKyAgaWYgKCFjbG9uZXAodGhpc19vYmplY3QoKSkpIHJldHVybjsKKyAgIDo6Y3JlYXRlKCk7CisgICBTZXRQcm9wKFBfU0hPUlQsICJFaW4gVHJvbGwiKTsKKyAgIFNldFByb3AoUF9MT05HLCAiRWluIFRyb2xsIHdpZSBhdXMgZGVtIEJpbGRlcmJ1Y2g6IEdyb3NzLCBoYWVzc2xpY2ggdW5kIGR1bW0uXG4iKTsKKyAgIFNldFByb3AoUF9OQU1FLCAiVHJvbGwiKTsKKyAgIFNldFByb3AoUF9HRU5ERVIsIDEpOworICAgU2V0UHJvcChQX1JBQ0UsICJUcm9sbCIpOworICAgQWRkSWQoInRyb2xsIik7CisgICBTZXRQcm9wKFBfTEVWRUwsIDE1KTsKKyAgIFNldFByb3AoUF9NQVhfSFAsIDIwMCk7CisgICBTZXRQcm9wKFBfQUxJR04sIC00MTcpOworICAgU2V0UHJvcChQX1hQLCAxMjAwMDApOworICAgU2V0UHJvcChQX0JPRFksIDM1KTsKKyAgIFNldFByb3AoUF9TSVpFLCByYW5kb20oNDApKzE5OSk7CisgICBzZXRfbGl2aW5nX25hbWUoInRyb2xsIik7CisgICBzZXRldWlkKGdldHVpZCh0aGlzX29iamVjdCgpKSk7CisgICBBZGRJdGVtKE9CSigidHJvbGxkb2xjaCIpLENMT05FX1dJRUxEKTsKKyAgIEFkZEl0ZW0oT0JKKCJzdGVpbnJpbmciKSxDTE9ORV9XRUFSKTsKKyAgIEFkZEl0ZW0oT0JKKCJsa2hlbWQiKSxDTE9ORV9XRUFSKTsKK30KKyAgICAgIApkaWZmIC0tZ2l0IGEvZG9jL2JlaXNwaWVsZS9zc3AvbW9uL3Ryb2xsbW9wcy5jIGIvZG9jL2JlaXNwaWVsZS9zc3AvbW9uL3Ryb2xsbW9wcy5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjU4MzA3OTYKLS0tIC9kZXYvbnVsbAorKysgYi9kb2MvYmVpc3BpZWxlL3NzcC9tb24vdHJvbGxtb3BzLmMKQEAgLTAsMCArMSwzMSBAQAorI2luY2x1ZGUgPHByb3BlcnRpZXMuaD4KKyNpbmNsdWRlICIuLi9maWxlcy5oIgorCitpbmhlcml0ICJzdGQvbnBjIjsKKworY3JlYXRlKCkKK3sKKyAgaWYgKCFjbG9uZXAodGhpc19vYmplY3QoKSkpIHJldHVybjsKKyAgIDo6Y3JlYXRlKCk7CisgICBTZXRQcm9wKFBfU0hPUlQsICJFaW4gVHJvbGxtb3BzIik7CisgICBTZXRQcm9wKFBfTE9ORywgCisgICAiRGllcyBpc3QgZWluZXIgZGVyIHNhZ2VudW13b2JlbmVuLCBibHV0cnVlbnN0aWdlbiBUcm9sbG1vZXBzZS4gSGVydm9yLVxuIisKKyAgICJnZWdhbmdlbiBhdXMgZGVyIG1pc3NsdW5nZW5lbiBLcmV1enVuZyB6d2lzY2hlbiBlaW5lbSBUcm9sbCB1bmQgZWluZW1cbiIrCisgICAiTW9wcywgdGVycm9yaXNpZXJlbiBkaWVzZSBncmF1c2FtZW4gQmVzdGllbiBqZXR6dCBkaWUgV2VsdC4gRmxpZWgsIHNvLVxuIisKKyAgICJsYW5nZSBEdSBub2NoIGthbm5zdC5cbiIpOworICAgU2V0UHJvcChQX05BTUUsICJUcm9sbG1vcHMiKTsKKyAgIFNldFByb3AoUF9HRU5ERVIsIDEpOworICAgQWRkSWQoInRyb2xsbW9wcyIpOworICAgQWRkSWQoInRyb2xsIik7CisgICBBZGRJZCgibW9wcyIpOworICAgU2V0UHJvcChQX1JBQ0UsICJUcm9sbCIpOworICAgU2V0UHJvcChQX0xFVkVMLCAyMCk7CisgICBTZXRQcm9wKFBfTUFYX0hQLCAzNTApOworICAgU2V0UHJvcChQX0FMSUdOLCAtNzM1IC0gcmFuZG9tKDEwMCkpOworICAgU2V0UHJvcChQX0hBTkRTLCAoeyIgbWl0IGJsdXR2ZXJzY2htaWVydGVuIEtyYWxsZW4iLCAyMDAgK3JhbmRvbSgxMCl9KSk7CisgICBTZXRQcm9wKFBfWFAsIDM1MDAwMCk7CisgICBTZXRQcm9wKFBfQk9EWSwgMTQwICsgcmFuZG9tKDQwKSk7CisgICBTZXRQcm9wKFBfU0laRSwgcmFuZG9tKDIwKSsxMDUpOyAgLyogRGEgc2luZCBkaWUgR3JvZXNzZW4gZGVyIEVsdGVybiBkcmluICovCisgICBzZXRfbGl2aW5nX25hbWUoInRyb2xsbW9wcyIpOworICAgU2V0UHJvcChQX0FHR1JFU1NJVkUsIDEpOworfQpkaWZmIC0tZ2l0IGEvZG9jL2JlaXNwaWVsZS9zc3Avb2JqL2JsZWNoLmMgYi9kb2MvYmVpc3BpZWxlL3NzcC9vYmovYmxlY2guYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41YzVjMmVjCi0tLSAvZGV2L251bGwKKysrIGIvZG9jL2JlaXNwaWVsZS9zc3Avb2JqL2JsZWNoLmMKQEAgLTAsMCArMSwxNiBAQAorI2luY2x1ZGUgPHByb3BlcnRpZXMuaD4KKworaW5oZXJpdCAiL3N0ZC90aGluZyI7CisKK2NyZWF0ZSgpIHsKKyAgaWYgKCFjbG9uZXAodGhpc19vYmplY3QoKSkpIHJldHVybjsKKyAgOjpjcmVhdGUoKTsKKyAgU2V0UHJvcChQX1NIT1JULCAiRWluIGFsdGVzIEJsZWNoIik7CisgIFNldFByb3AoUF9MT05HLCAiRGFzIHNpbmQgZGllIFVlYmVycmVzdGUgZWluZXMgTWV0YWxsbW9uc3RlcnMuXG4iKTsKKyAgU2V0UHJvcChQX05BTUUsICJCbGVjaCIpOworICBTZXRQcm9wKFBfR0VOREVSLCAwKTsKKyAgQWRkSWQoImJsZWNoIik7CisgIEFkZEFkamVjdGl2ZSgoeyJhbHQiLCAiYWx0ZXMifSkpOworICBTZXRQcm9wKFBfV0VJR0hULCAxMTAwKTsKKyAgU2V0UHJvcChQX1ZBTFVFLCByYW5kb20oUXVlcnlQcm9wKFBfTUFYX0hQKSkrMTAwKTsKK30KZGlmZiAtLWdpdCBhL2RvYy9iZWlzcGllbGUvc3NwL29iai9laXNlbmtsdW1wZW4uYyBiL2RvYy9iZWlzcGllbGUvc3NwL29iai9laXNlbmtsdW1wZW4uYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5iYWMxMjJiCi0tLSAvZGV2L251bGwKKysrIGIvZG9jL2JlaXNwaWVsZS9zc3Avb2JqL2Vpc2Vua2x1bXBlbi5jCkBAIC0wLDAgKzEsMTYgQEAKKyNpbmNsdWRlIDxwcm9wZXJ0aWVzLmg+CisKK2luaGVyaXQgIi9zdGQvdGhpbmciOworCitjcmVhdGUoKSB7CisgIGlmICghY2xvbmVwKHRoaXNfb2JqZWN0KCkpKSByZXR1cm47CisgIDo6Y3JlYXRlKCk7CisgIFNldFByb3AoUF9TSE9SVCwgIkVpbiBLbHVtcGVuIEVpc2VuIik7CisgIFNldFByb3AoUF9MT05HLCAiU2llaHQgYXVzLCBhbHMgaGFldHRlIGRhIHNjaG9uIGplbWFuZCBkcmFuIHJ1bWdlbmFndC4gRGVyamVuaWdlIG11c3NcbmFiZXIgc2VociBzdGFiaWxlIFphZWhuZSBnZWhhYnQgaGFiZW4uXG4iKTsKKyAgU2V0UHJvcChQX05BTUUsICJLbHVtcGVuIik7CisgIFNldFByb3AoUF9HRU5ERVIsIDEpOworICBBZGRJZCgoeyJrbHVtcGVuIiwgImVpc2VuIiwgImtsdW1wZW4gZWlzZW4ifSkpOworICBTZXRQcm9wKFBfTUFURVJJQUwsIE1BVF9JUk9OKTsKKyAgU2V0UHJvcChQX1dFSUdIVCwgMjQzOCk7CisgIFNldFByb3AoUF9WQUxVRSwgcmFuZG9tKDc1MCkpOworfQpkaWZmIC0tZ2l0IGEvZG9jL2JlaXNwaWVsZS9zc3Avb2JqL2d1bW1pc3RpZWZlbC5jIGIvZG9jL2JlaXNwaWVsZS9zc3Avb2JqL2d1bW1pc3RpZWZlbC5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmVhNDcyOGUKLS0tIC9kZXYvbnVsbAorKysgYi9kb2MvYmVpc3BpZWxlL3NzcC9vYmovZ3VtbWlzdGllZmVsLmMKQEAgLTAsMCArMSwzNyBAQAorI2luY2x1ZGUgPHByb3BlcnRpZXMuaD4KKyNpbmNsdWRlIDxsYW5ndWFnZS5oPgorI2luY2x1ZGUgPGNvbWJhdC5oPgorI2luY2x1ZGUgIi4uL2ZpbGVzLmgiCisgCitpbmhlcml0ICJzdGQvYXJtb3VyIjsKKyAKK2NyZWF0ZSgpCit7CisgIGlmICghY2xvbmVwKHRoaXNfb2JqZWN0KCkpKSByZXR1cm47CisgICA6OmNyZWF0ZSgpOworICAgU2V0UHJvcChQX1NIT1JULCAiRWluIFBhYXIgR3VtbWlzdGllZmVsIik7CisgICBTZXRQcm9wKFBfTE9ORywgIkRhbWl0IGJla29tbXQgbWFuIHNpY2hlciBrZWluZSBuYXNzZW4gRnVlc3NlLlxuIik7CisgICBTZXRQcm9wKFBfTkFNRSwgIlBhYXIgR3VtbWlzdGllZmVsIik7CisgICBTZXRQcm9wKFBfR0VOREVSLCAwKTsKKyAgIEFkZElkKCh7InN0aWVmZWwiLCAiZ3VtbWlzdGllZmVsIiwgInBhYXIiLCAicGFhciBzdGllZmVsIn0pKTsKKyAgIFNldFByb3AoUF9BUk1PVVJfVFlQRSwgQVRfQk9PVCk7CisgICBTZXRQcm9wKFBfQUMsIDApOworICAgU2V0UHJvcChQX1dFSUdIVCwgNzAwKTsKKyAgIFNldFByb3AoUF9WQUxVRSwgMTIwKTsKKyAgIFNldFByb3AoUF9SRU1PVkVfRlVOQywgdGhpc19vYmplY3QoKSk7Cit9CisKK1JlbW92ZUZ1bmMoKQoreworICAgb2JqZWN0IGVudjsKKyAgIGlmICgoZW52PWVudmlyb25tZW50KFF1ZXJ5UHJvcChQX1dPUk4pKSk9PWZpbmRfb2JqZWN0KEwyKCJtMngxIikpIHx8CisgICAgICAgZW52PT1maW5kX29iamVjdChMMigibTF4MSIpKSkKKyAgIHsKKyAgICAgIHdyaXRlKCJEYXMgd2FlcmUga2VpbmUgc28gdG9sbGUgSWRlZSBoaWVyIGRpZSBHdW1taXN0aWVmZWwgYXVzenV6aWVoZW4uXG4iKTsKKyAgICAgIHJldHVybiAwOworICAgfQorICAgcmV0dXJuIDE7Cit9CisgICAgICAgCisKKwpkaWZmIC0tZ2l0IGEvZG9jL2JlaXNwaWVsZS9zc3Avb2JqL2thbXBmYmxlY2guYyBiL2RvYy9iZWlzcGllbGUvc3NwL29iai9rYW1wZmJsZWNoLmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNjNjOTUzYQotLS0gL2Rldi9udWxsCisrKyBiL2RvYy9iZWlzcGllbGUvc3NwL29iai9rYW1wZmJsZWNoLmMKQEAgLTAsMCArMSwyMiBAQAorI2luY2x1ZGUgPHByb3BlcnRpZXMuaD4KKyNpbmNsdWRlIDxjb21iYXQuaD4KK2luaGVyaXQgInN0ZC9hcm1vdXIiOworIAorY3JlYXRlKCkKK3sKKyAgaWYgKCFjbG9uZXAodGhpc19vYmplY3QoKSkpIHJldHVybjsKKyAgOjpjcmVhdGUoKTsKKyAgU2V0UHJvcChQX1NIT1JULCAiRWluIHRvdGVzIEthbXBmYmxlY2giKTsKKyAgU2V0UHJvcChQX0xPTkcsICJTaWVodCBhdXMgd2llIGVpbiBub3JtYWxlcyBLYW1wZmJsZWNoLCBudXIgdG90LiBBdXNzZXJkZW0gdWViZXJyYXNjaHQgRGljaCBkZXIgbWVya3d1ZXJkaWdlIEdyaWZmLlxuIik7CisgIFNldFByb3AoUF9OQU1FLCAiS2FtcGZibGVjaCIpOworICBTZXRQcm9wKFBfTkFNRV9BREosICJ0b3QiKTsKKyAgU2V0UHJvcChQX0dFTkRFUiwgMCk7CisgIFNldFByb3AoUF9BUk1PVVJfVFlQRSwgQVRfU0hJRUxEKTsKKyAgU2V0UHJvcChQX0FDLCAxMik7CisgIFNldFByb3AoUF9XRUlHSFQsIDg1MCk7CisgIFNldFByb3AoUF9WQUxVRSwgNDIwKTsKKyAgU2V0UHJvcChQX01BVEVSSUFMLCBNQVRfTUlTQ19NRVRBTCk7CisgIFNldFByb3AoUF9JTkZPLCAiWmllbWxpY2hlciBTY2h3YWNoc2lubiBkaWVzZXMgT2JqZWt0LCBvZGVyIG5pY2h0P1xuIik7CisgIEFkZElkKCh7InNjaGlsZCIsICJibGVjaCIsICJrYW1wZmJsZWNoIiwgInRvdGVzIGthbXBmYmxlY2gifSkpOworICBBZGREZXRhaWwoImdyaWZmIiwgIk1pdCBIaWxmZSBkZXMgR3JpZmZzIGthbm5zdCBEdSBkYXMgdG90ZSBLYW1wZmJsZWNoIGFscyBTY2hpbGQgYmVudXR6ZW4uXG4iKTsKK30KZGlmZiAtLWdpdCBhL2RvYy9iZWlzcGllbGUvc3NwL29iai9rcnVtbXNjaHdlcnQuYyBiL2RvYy9iZWlzcGllbGUvc3NwL29iai9rcnVtbXNjaHdlcnQuYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi42NTlmZjAyCi0tLSAvZGV2L251bGwKKysrIGIvZG9jL2JlaXNwaWVsZS9zc3Avb2JqL2tydW1tc2Nod2VydC5jCkBAIC0wLDAgKzEsMjIgQEAKKyNpbmNsdWRlIDxwcm9wZXJ0aWVzLmg+CisjaW5jbHVkZSA8Y29tYmF0Lmg+Citpbmhlcml0ICJzdGQvd2VhcG9uIjsKKyAKK2NyZWF0ZSgpCit7CisgIGlmICghY2xvbmVwKHRoaXNfb2JqZWN0KCkpKSByZXR1cm47CisgIDo6Y3JlYXRlKCk7CisgIFNldFByb3AoUF9TSE9SVCwgIkVpbiBLcnVtbXNjaHdlcnQiKTsKKyAgU2V0UHJvcChQX0xPTkcsICJEYXMgS3J1bW1zY2h3ZXJ0IHNpZWh0IGF1cywgYWxzIGhhZXR0ZSBlcyBlaW5tYWwgZWluZW0gT3JrIGdlaG9lcnQuXG4iKTsKKyAgU2V0UHJvcChQX05BTUUsICJLcnVtbXNjaHdlcnQiKTsKKyAgU2V0UHJvcChQX0dFTkRFUiwgMCk7CisgIFNldFByb3AoUF9XQywgMTMwICsgcmFuZG9tKDE1KSk7CisgIFNldFByb3AoUF9WQUxVRSwgMTIwMCArIHJhbmRvbSgyMDApKTsKKyAgU2V0UHJvcChQX1dFSUdIVCwgMTEwMCArIHJhbmRvbSgxMDApKTsKKyAgU2V0UHJvcChQX1dFQVBPTl9UWVBFLCBXVF9TV09SRCk7CisgIFNldFByb3AoUF9EQU1fVFlQRSwgRFRfU0xBU0gpOworICBTZXRQcm9wKFBfTlJfSEFORFMsIDEpOworICBTZXRQcm9wKFBfTUFURVJJQUwsIE1BVF9NSVNDX01FVEFMKTsKKyAgQWRkSWQoInNjaHdlcnQiKTsKKyAgQWRkSWQoImtydW1tc2Nod2VydCIpOworfQpkaWZmIC0tZ2l0IGEvZG9jL2JlaXNwaWVsZS9zc3Avb2JqL2xraGVtZC5jIGIvZG9jL2JlaXNwaWVsZS9zc3Avb2JqL2xraGVtZC5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjVjMzgxYmMKLS0tIC9kZXYvbnVsbAorKysgYi9kb2MvYmVpc3BpZWxlL3NzcC9vYmovbGtoZW1kLmMKQEAgLTAsMCArMSwxOSBAQAorI2luY2x1ZGUgPHByb3BlcnRpZXMuaD4KKyNpbmNsdWRlIDxjb21iYXQuaD4KK2luaGVyaXQgInN0ZC9hcm1vdXIiOworIAorY3JlYXRlKCkKK3sKKyAgaWYgKCFjbG9uZXAodGhpc19vYmplY3QoKSkpIHJldHVybjsKKyAgOjpjcmVhdGUoKTsKKyAgU2V0UHJvcChQX1NIT1JULCAiRWluIGxlaWNodGVzIEtldHRlbmhlbWQiKTsKKyAgU2V0UHJvcChQX0xPTkcsICJFaW4gbmljaHQgc29uZGVybGljaCBndXQgZ2VhcmJlaXRldGVzIEtldHRlbmhlbWQuIEFuemllaGVuIGthbm4gbWFuXG5lcyBhYmVyIHRyb3R6ZGVtLlxuIik7CisgIFNldFByb3AoUF9OQU1FLCAiS2V0dGVuaGVtZCIpOworICBTZXRQcm9wKFBfR0VOREVSLCAwKTsKKyAgU2V0UHJvcChQX0FSTU9VUl9UWVBFLCBBVF9BUk1PVVIpOworICBTZXRQcm9wKFBfQUMsIDE4KTsKKyAgU2V0UHJvcChQX1dFSUdIVCwgMTcwMCk7CisgIFNldFByb3AoUF9WQUxVRSwgMTIwMCArcmFuZG9tKDEwMCkpOworICBTZXRQcm9wKFBfTUFURVJJQUwsIE1BVF9NSVNDX01FVEFMKTsKKyAgQWRkSWQoKHsia2V0dGVuaGVtZCIsICJoZW1kIn0pKTsKK30KZGlmZiAtLWdpdCBhL2RvYy9iZWlzcGllbGUvc3NwL29iai9vcmtoZWxtLmMgYi9kb2MvYmVpc3BpZWxlL3NzcC9vYmovb3JraGVsbS5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjM2ZDZhOGIKLS0tIC9kZXYvbnVsbAorKysgYi9kb2MvYmVpc3BpZWxlL3NzcC9vYmovb3JraGVsbS5jCkBAIC0wLDAgKzEsMjAgQEAKK2luaGVyaXQgInN0ZC9hcm1vdXIiOworIAorI2luY2x1ZGUgPHByb3BlcnRpZXMuaD4gICAgICAgICAgICAgICAgICAgIAorI2luY2x1ZGUgPGNvbWJhdC5oPgorIAorY3JlYXRlKCkKK3sKKyAgaWYgKCFjbG9uZXAodGhpc19vYmplY3QoKSkpIHJldHVybjsKKyAgOjpjcmVhdGUoKTsKKyAgU2V0UHJvcChQX1NIT1JULCAiRWluIE9ya2hlbG0iKTsKKyAgU2V0UHJvcChQX0xPTkcsICJFaW4gc3RhYmlsZXIgSGVsbSwgZGVyIHNjaG9uIGF1c2dpZWJpZyB2b24gZWluZW0gc3RpbmtlbmRlbiBPcmtcbmdldHJhZ2VuIHd1cmRlLlxuIik7CisgIFNldFByb3AoUF9OQU1FLCAiT3JraGVsbSIpOworICBTZXRQcm9wKFBfR0VOREVSLCAxKTsKKyAgU2V0UHJvcChQX0FSTU9VUl9UWVBFLCBBVF9IRUxNRVQpOworICBTZXRQcm9wKFBfQUMsIDcpOworICBTZXRQcm9wKFBfV0VJR0hULCA0NTApOworICBTZXRQcm9wKFBfVkFMVUUsIDM1MCk7CisgIFNldFByb3AoUF9NQVRFUklBTCwgKFtNQVRfTUlTQ19NRVRBTDo5NSwgTUFUX1NMSU1FOjVdKSk7CisgIEFkZElkKCh7ImhlbG0iLCAib3JraGVsbSJ9KSk7Cit9CmRpZmYgLS1naXQgYS9kb2MvYmVpc3BpZWxlL3NzcC9vYmovb3JraG9zZS5jIGIvZG9jL2JlaXNwaWVsZS9zc3Avb2JqL29ya2hvc2UuYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44YmEwMDU2Ci0tLSAvZGV2L251bGwKKysrIGIvZG9jL2JlaXNwaWVsZS9zc3Avb2JqL29ya2hvc2UuYwpAQCAtMCwwICsxLDE5IEBACisjaW5jbHVkZSA8cHJvcGVydGllcy5oPgorI2luY2x1ZGUgPGNvbWJhdC5oPgoraW5oZXJpdCAic3RkL2FybW91ciI7CisgCitjcmVhdGUoKQoreworICBpZiAoIWNsb25lcCh0aGlzX29iamVjdCgpKSkgcmV0dXJuOworICA6OmNyZWF0ZSgpOworICBTZXRQcm9wKFBfU0hPUlQsICJFaW5lIE9ya2hvc2UiKTsKKyAgU2V0UHJvcChQX0xPTkcsICJEaWUgQmVpbmJla2xlaWR1bmcgdm9uIE9ya3MuXG4iKTsKKyAgU2V0UHJvcChQX05BTUUsICJIb3NlIik7CisgIFNldFByb3AoUF9HRU5ERVIsIDIpOworICBTZXRQcm9wKFBfQVJNT1VSX1RZUEUsIEFUX1RST1VTRVJTKTsKKyAgU2V0UHJvcChQX0FDLCA3KTsKKyAgU2V0UHJvcChQX1dFSUdIVCwgNTU1KTsKKyAgU2V0UHJvcChQX1ZBTFVFLCA0ODAgKyByYW5kb20oNDApKTsKKyAgU2V0UHJvcChQX01BVEVSSUFMLCAoW01BVF9DTE9USDo5OSwgTUFUX1NISVQ6MV0pKTsKKyAgQWRkSWQoKHsiaG9zZSIsICJob3NlbiIsICJvcmtob3NlIiwgIm9ya2hvc2VuIn0pKTsKK30KZGlmZiAtLWdpdCBhL2RvYy9iZWlzcGllbGUvc3NwL29iai9zYWViZWwuYyBiL2RvYy9iZWlzcGllbGUvc3NwL29iai9zYWViZWwuYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4zYWVjOTU4Ci0tLSAvZGV2L251bGwKKysrIGIvZG9jL2JlaXNwaWVsZS9zc3Avb2JqL3NhZWJlbC5jCkBAIC0wLDAgKzEsMjMgQEAKK2luaGVyaXQgInN0ZC93ZWFwb24iOworCisjaW5jbHVkZSA8cHJvcGVydGllcy5oPiAgICAgICAgICAgICAgICAgICAgCisjaW5jbHVkZSA8Y29tYmF0Lmg+CisgCitjcmVhdGUoKQoreworICBpZiAoIWNsb25lcCh0aGlzX29iamVjdCgpKSkgcmV0dXJuOworICA6OmNyZWF0ZSgpOworICBTZXRQcm9wKFBfU0hPUlQsICJFaW4gc2NoYXJ0aWdlciBTYWViZWwiKTsKKyAgU2V0UHJvcChQX0xPTkcsICJEZXIgU2FlYmVsIGlzdCBzY2hhcnRpZywga29lbm50ZSBhYmVyIHRyb3R6ZGVtIHJlY2h0IGJyYXVjaGJhciBzZWluLlxuIik7CisgIFNldFByb3AoUF9OQU1FLCAiU2FlYmVsIik7IAorICBTZXRQcm9wKFBfR0VOREVSLCAxKTsKKyAgU2V0UHJvcChQX1dDLCAxNDQpOworICBTZXRQcm9wKFBfVkFMVUUsIDE1MjUpOworICBTZXRQcm9wKFBfV0VJR0hULCAxMjY0KTsKKyAgU2V0UHJvcChQX1dFQVBPTl9UWVBFLCBXVF9TV09SRCk7CisgIFNldFByb3AoUF9EQU1fVFlQRSwgRFRfU0xBU0gpOworICBTZXRQcm9wKFBfTlJfSEFORFMsIDEpOworICBTZXRQcm9wKFBfTUFURVJJQUwsIE1BVF9NSVNDX01FVEFMKTsKKyAgQWRkSWQoInNhZWJlbCIpOworICBBZGRBZGplY3RpdmUoKHsic2NoYXJ0aWciLCAic2NoYXJ0aWdlciIsICJzY2hhcnRpZ2VuIn0pKTsKK30KZGlmZiAtLWdpdCBhL2RvYy9iZWlzcGllbGUvc3NwL29iai9zY2hhZWxtZXNzZXIuYyBiL2RvYy9iZWlzcGllbGUvc3NwL29iai9zY2hhZWxtZXNzZXIuYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4yYjBiNjg2Ci0tLSAvZGV2L251bGwKKysrIGIvZG9jL2JlaXNwaWVsZS9zc3Avb2JqL3NjaGFlbG1lc3Nlci5jCkBAIC0wLDAgKzEsMjUgQEAKK2luaGVyaXQgInN0ZC93ZWFwb24iOworCisjaW5jbHVkZSA8Y29tYmF0Lmg+CisjaW5jbHVkZSA8cHJvcGVydGllcy5oPgorCitjcmVhdGUoKQoreworICBpZiAoIWNsb25lcCh0aGlzX29iamVjdCgpKSkgcmV0dXJuOworICAgOjpjcmVhdGUoKTsKKyAgIFNldFByb3AoUF9TSE9SVCwgIkVpbiBLbm9jaGVuc2NoYWVsbWVzc2VyIik7CisgICBTZXRQcm9wKFBfTE9ORywgCisJICAgIkVpbiBNZXNzZXIgc28gbGFuZywgd2llIHRhdXNlbmQgZ3Jvc3NlIFphZWhuZVxuIisKKwkgICAiV2llIHRhdXNlbmQgZ3Jvc3NlIFphZWhuZSwgZWluIE1lc3NlciBzbyBsYW5nXG4iKworCSAgICJTbyBsYW5nLCB3aWUgdGF1c2VuZCBncm9zc2UsIGdyb3NzZSBaYWVobmVcbiIpOworICAgU2V0UHJvcChQX05BTUUsICJLbm9jaGVuc2NoYWVsbWVzc2VyIik7CisgICBTZXRQcm9wKFBfR0VOREVSLCAwKTsKKyAgIEFkZElkKCh7Imtub2NoZW5zY2hhZWxtZXNzZXIiLCAic2NoYWVsbWVzc2VyIiwgIm1lc3NlciJ9KSk7CisgICBTZXRQcm9wKFBfV0MsIDE0NSk7CisgICBTZXRQcm9wKFBfTlJfSEFORFMsIDEpLAorICAgU2V0UHJvcChQX1dFQVBPTl9UWVBFLCBXVF9LTklGRSk7CisgICBTZXRQcm9wKFBfREFNX1RZUEUsIERUX1NMQVNIKTsKKyAgIFNldFByb3AoUF9WQUxVRSwgMTYxMCk7CisgICBTZXRQcm9wKFBfV0VJR0hULCAxMTUwKTsKKyAgIFNldFByb3AoUF9NQVRFUklBTCwgTUFUX01JU0NfTUVUQUwpOworfQpkaWZmIC0tZ2l0IGEvZG9jL2JlaXNwaWVsZS9zc3Avb2JqL3N0YWhsc2Nod2VydC5jIGIvZG9jL2JlaXNwaWVsZS9zc3Avb2JqL3N0YWhsc2Nod2VydC5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjQ0NDY4OTgKLS0tIC9kZXYvbnVsbAorKysgYi9kb2MvYmVpc3BpZWxlL3NzcC9vYmovc3RhaGxzY2h3ZXJ0LmMKQEAgLTAsMCArMSwyMSBAQAorI2luY2x1ZGUgPHByb3BlcnRpZXMuaD4KKyNpbmNsdWRlIDxjb21iYXQuaD4KK2luaGVyaXQgInN0ZC93ZWFwb24iOworIAorY3JlYXRlKCkKK3sKKyAgaWYgKCFjbG9uZXAodGhpc19vYmplY3QoKSkpIHJldHVybjsKKyAgOjpjcmVhdGUoKTsKKyAgU2V0UHJvcChQX1NIT1JULCAiRWluIFN0YWhsc2Nod2VydCIpOworICBTZXRQcm9wKFBfTE9ORywgIkRpZXNlcyBTY2h3ZXJ0IGhhdCBlaW5lIEtsaW5nZSBhdXMgcmVpbmVtIFN0YWhsLCBtaXQgZGVyIG1hbiBzZWluZSBHZWduZXJcbndvaGwgemllbWxpY2ggZ3V0IG5pZWRlcm1hY2hlbiBrYW5uLiBEYXMgU2Nod2VydCBpc3QgcmVjaHQgc2Nod2VyIHVuZFxubGFlc3N0IHNpY2ggbnVyIG1pdCB6d2VpIEhhZW5kZW4gZnVlaHJlbi5cbiIpOworICBTZXRQcm9wKFBfTkFNRSwgIlN0YWhsc2Nod2VydCIpOworICBTZXRQcm9wKFBfR0VOREVSLCAwKTsKKyAgU2V0UHJvcChQX1dDLCAxNzUpOworICBTZXRQcm9wKFBfVkFMVUUsIDE3NTAgKyByYW5kb20oMTAwKSk7CisgIFNldFByb3AoUF9XRUlHSFQsIDI5MjYpOworICBTZXRQcm9wKFBfV0VBUE9OX1RZUEUsIFdUX1NXT1JEKTsKKyAgU2V0UHJvcChQX0RBTV9UWVBFLCBEVF9TTEFTSCk7CisgIFNldFByb3AoUF9OUl9IQU5EUywgMik7CisgIFNldFByb3AoUF9NQVRFUklBTCwgTUFUX1NURUVMKTsKKyAgQWRkSWQoKHsic2Nod2VydCIsICJzdGFobHNjaHdlcnQiLCAiXG5zc3BzdGFobHNjaHdlcnQifSkpOworfQpkaWZmIC0tZ2l0IGEvZG9jL2JlaXNwaWVsZS9zc3Avb2JqL3N0ZWlucmluZy5jIGIvZG9jL2JlaXNwaWVsZS9zc3Avb2JqL3N0ZWlucmluZy5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjVkYTA5YTcKLS0tIC9kZXYvbnVsbAorKysgYi9kb2MvYmVpc3BpZWxlL3NzcC9vYmovc3RlaW5yaW5nLmMKQEAgLTAsMCArMSwxOSBAQAorI2luY2x1ZGUgPHByb3BlcnRpZXMuaD4KKyNpbmNsdWRlIDxjb21iYXQuaD4KK2luaGVyaXQgInN0ZC9hcm1vdXIiOworIAorY3JlYXRlKCkKK3sKKyAgaWYgKCFjbG9uZXAodGhpc19vYmplY3QoKSkpIHJldHVybjsKKyAgOjpjcmVhdGUoKTsKKyAgU2V0UHJvcChQX1NIT1JULCAiRWluIFN0ZWlucmluZyIpOworICBTZXRQcm9wKFBfTE9ORywgIkVpbiBrbGVpbmVyIFJpbmcsIHZvZWxsaWcgYXVzIGVpbmVtIGdyYXVlbiBTdGVpbi5cbiIpOworICBTZXRQcm9wKFBfTkFNRSwgIlN0ZWlucmluZyIpOworICBTZXRQcm9wKFBfR0VOREVSLCAxKTsKKyAgU2V0UHJvcChQX0FSTU9VUl9UWVBFLCBBVF9SSU5HKTsKKyAgU2V0UHJvcChQX0FDLCAyKTsKKyAgU2V0UHJvcChQX1dFSUdIVCwgMjcwKTsKKyAgU2V0UHJvcChQX1ZBTFVFLCAzMDAgK3JhbmRvbSgxNTApKTsKKyAgU2V0UHJvcChQX01BVEVSSUFMLCBNQVRfTUlTQ19TVE9ORSk7CisgIEFkZElkKCh7InJpbmciLCAic3RlaW5yaW5nIn0pKTsKK30KZGlmZiAtLWdpdCBhL2RvYy9iZWlzcGllbGUvc3NwL29iai90aXRhbnJpbmcuYyBiL2RvYy9iZWlzcGllbGUvc3NwL29iai90aXRhbnJpbmcuYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4zODlkZTY2Ci0tLSAvZGV2L251bGwKKysrIGIvZG9jL2JlaXNwaWVsZS9zc3Avb2JqL3RpdGFucmluZy5jCkBAIC0wLDAgKzEsMTggQEAKK2luaGVyaXQgInN0ZC9hcm1vdXIiOworCisjaW5jbHVkZSA8cHJvcGVydGllcy5oPgorI2luY2x1ZGUgPGNvbWJhdC5oPgorCitjcmVhdGUoKQoreworICA6OmNyZWF0ZSgpOworICBTZXRQcm9wKFBfU0hPUlQsICJFaW4gVGl0YW5yaW5nIik7CisgIFNldFByb3AoUF9MT05HLCAiRWluIFJpbmcgYXVzIFRpdGFuLlxuIik7CisgIFNldFByb3AoUF9OQU1FLCAiVGl0YW5yaW5nIik7CisgIFNldFByb3AoUF9HRU5ERVIsIDEpOworICBBZGRJZCgoeyJ0aXRhbnJpbmciLCAicmluZyJ9KSk7CisgIFNldFByb3AoUF9BUk1PVVJfVFlQRSwgQVRfUklORyk7CisgIFNldFByb3AoUF9BQywgMik7CisgIFNldFByb3AoUF9XRUlHSFQsIDI4MCk7CisgIFNldFByb3AoUF9WQUxVRSwgNTIwKTsKK30KZGlmZiAtLWdpdCBhL2RvYy9iZWlzcGllbGUvc3NwL29iai90cm9sbGRvbGNoLmMgYi9kb2MvYmVpc3BpZWxlL3NzcC9vYmovdHJvbGxkb2xjaC5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmZkMDYwOTIKLS0tIC9kZXYvbnVsbAorKysgYi9kb2MvYmVpc3BpZWxlL3NzcC9vYmovdHJvbGxkb2xjaC5jCkBAIC0wLDAgKzEsMjEgQEAKKyNpbmNsdWRlIDxwcm9wZXJ0aWVzLmg+CisjaW5jbHVkZSA8Y29tYmF0Lmg+Citpbmhlcml0ICJzdGQvd2VhcG9uIjsKKyAKK2NyZWF0ZSgpCit7CisgIGlmICghY2xvbmVwKHRoaXNfb2JqZWN0KCkpKSByZXR1cm47CisgIDo6Y3JlYXRlKCk7CisgIFNldFByb3AoUF9TSE9SVCwgIkVpbiBUcm9sbGRvbGNoIik7CisgIFNldFByb3AoUF9MT05HLCAiRWluIGxhbmdlciwgc2NoYXJmZXIgRG9sY2gsIGRlbSBHZXN0YW5rIG5hY2ggbXVzcyBlciBlaW5lbSBUcm9sbFxuZ2Vob2VydCBoYWJlbi5cbiIpOworICBTZXRQcm9wKFBfTkFNRSwgIlRyb2xsZG9sY2giKTsKKyAgU2V0UHJvcChQX0dFTkRFUiwgMSk7CisgIFNldFByb3AoUF9XQywgMTE5KTsKKyAgU2V0UHJvcChQX1ZBTFVFLCAxMDAwICtyYW5kb20oNDAwKSk7CisgIFNldFByb3AoUF9XRUlHSFQsIDUwMCArcmFuZG9tKDUwKSk7CisgIFNldFByb3AoUF9XRUFQT05fVFlQRSwgV1RfS05JRkUpOworICBTZXRQcm9wKFBfREFNX1RZUEUsIERUX1BJRVJDRSk7CisgIFNldFByb3AoUF9OUl9IQU5EUywgMSk7CisgIFNldFByb3AoUF9NQVRFUklBTCwgTUFUX01JU0NfTUVUQUwpOworICBBZGRJZCgoeyJkb2xjaCIsICJ0cm9sbGRvbGNoIn0pKTsKK30KZGlmZiAtLWdpdCBhL2RvYy9iZWlzcGllbGUvdGVzdG9iamVrdGUvLnJlYWRtZSBiL2RvYy9iZWlzcGllbGUvdGVzdG9iamVrdGUvLnJlYWRtZQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41NmZmNDFmCi0tLSAvZGV2L251bGwKKysrIGIvZG9jL2JlaXNwaWVsZS90ZXN0b2JqZWt0ZS8ucmVhZG1lCkBAIC0wLDAgKzEsMTMgQEAKKworSGllciBsaWVnZW4gVGVzdC1PYmpla3RlIHp1IG1hbi1wYWdlcy4gVW50ZXJzY2hpZWRlbiB3aXJkIG1vbWVudGFuIG51ciBuYWNoOgorLSB4eHhfdGVzdG9iaiAtPiBkYXMga2FubiBtYW4gbGFkZW4gdW5kIGdnZiBjbG9uZW4KKy0geHh4X3Rlc3RyYXVtIC0+IGRlbiBrYW5uIG1hbiBiZXRyZXRlbgorCitEZXIgUHJhZWZpeCBkZXV0ZXQgYW4sIGZ1ZXIgd2VsY2hlIEZlYXR1cmVzIChhbHNvIG1hbi1wYWdlcykgZGVyIFRlc3Rjb2RlIGdlc2NocmllYmVuIHd1cmRlLiBEaWUgbWFuLXBhZ2Ugc2VsYnN0IG5lbm50IGRpZXNlbiBEYXRlaW5hbWVuIGhpZXIsIGluc29mZXJuOgorKiBiaXR0ZSBtaXQgQmVkYWNodCB2ZXJhZW5kZXJuIC0gcHJ1ZWZlbiwgd2VsY2hlIEZ1bmt0aW9uYWxpdGFldAorICBiZWlzcGllbGhhZnQgZ2V6ZWlndCB3ZXJkZW4gc29sbCB1bmQgZGFzIG5pY2h0IGxvZXNjaGVuCisqIGJpdHRlIERhdGVpbmFtZW4gbnVyIHZlcmFlbmRlcm4sIHdlbm4gaWhyIGV1Y2ggc2ljaGVyIHNlaWQsIF9hbGxlXworICBkYXJhdWYgdmVyd2Vpc2VuZGVuIG1hbi1wYWdlcyBlYmVuZmFsbHMgZ2VhZW5kZXJ0IHp1IGhhYmVuCisKK1ZlcmFudHdvcnRsaWNoOiBHbG9pbnNvbgorCmRpZmYgLS1naXQgYS9kb2MvYmVpc3BpZWxlL3Rlc3RvYmpla3RlL2F0dGFja19idXN5X3NlbnNpdGl2ZV90ZXN0b2JqLmMgYi9kb2MvYmVpc3BpZWxlL3Rlc3RvYmpla3RlL2F0dGFja19idXN5X3NlbnNpdGl2ZV90ZXN0b2JqLmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNDIyNWQ4OAotLS0gL2Rldi9udWxsCisrKyBiL2RvYy9iZWlzcGllbGUvdGVzdG9iamVrdGUvYXR0YWNrX2J1c3lfc2Vuc2l0aXZlX3Rlc3RvYmouYwpAQCAtMCwwICsxLDEwNSBAQAoraW5oZXJpdCAiL3N0ZC90aGluZyI7DQorI2luY2x1ZGUgPHByb3BlcnRpZXMuaD4NCisjaW5jbHVkZSA8bmV3X3NraWxscy5oPg0KKyNpbmNsdWRlIDxzZW5zaXRpdmUuaD4NCisNCitwcml2YXRlIGFjdGlvbl9wdXN0ZShzdHJpbmcgc3RyKTsNCitwcml2YXRlIGludCBjb3VudGVyOw0KKw0KK3ZvaWQgY3JlYXRlKCkgew0KKyAgaWYgKCFjbG9uZXAodGhpc19vYmplY3QoKSkpIHJldHVybjsNCisgIDo6Y3JlYXRlKCk7DQorICBjb3VudGVyID0gMityYW5kb20oNCk7DQorICANCisgIFNldFByb3AoUF9OQU1FLCAiUHVzdGVibHVtZSIpOw0KKyAgU2V0UHJvcChQX1NIT1JULCAiRWluZSBrbGVpbmUgUHVzdGJsdW1lIik7DQorICBTZXRQcm9wKFBfTE9ORywgYnJlYWtfc3RyaW5nKA0KKyAgICAiRWluZSBhYmdlYmx1ZWh0ZSBQZmxhbnplLCBkaWUgamV0enQgd2llIGVpbiBrbGVpbmVyLCB3ZWlzc2VyIEJhbGwgIg0KKwkiYXVzc2llaHQuIERpZSBmaWVkcmlnZW4gU2FtZW4gZmxpZWdlbiBiZXN0aW1tdCBwcmltYS4iLCA3OCkpOw0KKyAgQWRkRGV0YWlsKCJzYW1lbiIsICJFciBzaWVodCBzZWhyIGZlaW4gdW5kIGxlaWNodCBhdXMuXG4iKTsNCisgIFNldFByb3AoUF9HRU5ERVIsRkVNQUxFKTsNCisgIFNldFByb3AoUF9NQVRFUklBTCwgTUFUX01JU0NfUExBTlQpOw0KKyAgU2V0UHJvcChQX05PQlVZLCAxKTsNCisgIFNldFByb3AoUF9WQUxVRSwgcmFuZG9tKDEwKSk7DQorDQorICBTZXRQcm9wKFBfSU5GTywgIlN0YXJrZXIgV2luZCB0YWV0ZSBpaHIgbmljaHQgZ3V0LlxuIik7DQorDQorICBBZGRJZCgoeyJibHVtZSIsICJwdXN0ZWJsdW1lIiwgImxvZXdlbnphaG4ifSkpOw0KKyAgU2V0UHJvcChQX0NPTUJBVENNRFMsKFsicHVzdGUgbG9ld2VuemFobiI6DQorICAgICAgICAgICAgICAgICAgICAgICAgIChbQ19IRUFMOiA1XSldKSk7DQorDQorICBTZXRQcm9wKFBfU0VOU0lUSVZFLCh7KHtTRU5TSVRJVkVfQVRUQUNLLCBEVF9BSVIsIDIwfSksDQorICAgICAgICAgICAgICAgICAgICAgICAgKHtTRU5TSVRJVkVfSU5WRU5UT1JZLCBEVF9BSVIsIDIwfSl9KSk7DQorIA0KKyAgQWRkQ21kKCJwdXN0ZSZASUQiLCAjJ2FjdGlvbl9wdXN0ZSwgIlB1c3RlIHdlbiBvZGVyIHdhcyAoYW4pPyIpOw0KK30NCisNCitwcml2YXRlIGFjdGlvbl9wdXN0ZShzdHJpbmcgc3RyKSB7DQorICBpZihlbnZpcm9ubWVudCgpIT10aGlzX3BsYXllcigpKSB7DQorICAgIG5vdGlmeV9mYWlsKCJEYXp1IHNvbGx0ZXN0IGR1ICIrbmFtZShXRU4sMSkrIiBoYWJlbi5cbiIpOw0KKwlyZXR1cm4gMDsNCisgIH0NCisgIGlmICh0aGlzX3BsYXllcigpLT5RdWVyeVByb3AoUF9BVFRBQ0tfQlVTWSkpIHsNCisgICAgd3JpdGUoIkR1IGhhc3QgZGFmdWVyIG1vbWVudGFuIGVpbmZhY2ggbmljaHQgbWVociBkaWUgUHVzdGUuXG4iKTsNCisgICAgcmV0dXJuIDE7DQorICB9DQorICB0aGlzX3BsYXllcigpLT5TZXRQcm9wKFBfQVRUQUNLX0JVU1ksIDEpOw0KKw0KKyAgaWYoY291bnRlcjwwKSB7DQorICAgIHdyaXRlKGJyZWFrX3N0cmluZygiRHUgcHVzdGVzdCBzaW5ubG9zIGF1ZiAiK25hbWUoV0VOLCAyKSsiLiIsIDc4KSk7DQorCXNheShicmVha19zdHJpbmcodGhpc19wbGF5ZXIoKS0+TmFtZShXRVIpKw0KKwkgICIgcHVzdGV0IHdpZSBkYWVtbGljaCBnZWdlbiAiK25hbWUoV0VOLCAwKSsiLiIsIDc4KSk7DQorCXJldHVybiAxOw0KKyAgfSBlbHNlIHsNCisgICAgd3JpdGUoYnJlYWtfc3RyaW5nKA0KKyAgICAgICJEdSBwdXN0ZXN0ICIrbmFtZShXRU4sIDIpKyIgdm9yc2ljaHRpZyBhbiwgZWluaWdlIFNhbWVuICINCisgICAgICAibG9lc2VuIHNpY2ggdW5kIGZsaWVnZW4gdGF1bWVsbmQgaW4gZGVpbmVtIEF0ZW0gZGF2b24uIisNCisJICAoY291bnRlcjwwPyIgRXMgYmxlaWJ0IG51ciBub2NoIGVpbiBudXR6bG9zZXIgU3RydW5rLiI6IiIpLCA3OCkpOw0KKyAgICBzYXkoYnJlYWtfc3RyaW5nKA0KKyAgICAgIHRoaXNfcGxheWVyKCktPk5hbWUoV0VSKSsiIHB1c3RldCBzYWNodGUgZ2VnZW4gIituYW1lKFdFTiwgMCkrIiB1bmQgIg0KKwkgICJkdSBzY2hhdXN0IHZlcnp1ZWNrdCBkZW4gZGF2b25mbGllZ2VuZGVuIFNhbWVuIG5hY2guIiwgNzgpKTsNCisgIH0NCisJDQorICBvYmplY3Qgd2hvID0gdGhpc19wbGF5ZXIoKS0+UXVlcnlFbmVteSgpOw0KKyAgDQorICBpZihvYmplY3RwKHdobykpIHsNCisgICAgaWYoIWludGVyYWN0aXZlKHRoaXNfcGxheWVyKCkpKSB7DQorICAgICAgd2hvLT5Nb2RpZnlTa2lsbEF0dHJpYnV0ZShTQV9TUEVFRCwgODArcmFuZG9tKDEwKSwgNik7DQorCSAgdGhpc19wbGF5ZXIoKS0+aGVhbF9zZWxmKDUpOw0KKwl9IGVsc2UNCisJICB3aG8tPk1vZGlmeVNraWxsQXR0cmlidXRlKFNBX1NQRUVELCA5MCtyYW5kb20oMTApLCA0KTsNCisgIH0NCisNCisgIGNvdW50ZXItLTsNCisgIGlmKGNvdW50ZXI8MCkgew0KKyAgICBjYWxsX291dCgjJ3JlbW92ZSwgMTArcmFuZG9tKDYwKSk7DQorCUFkZElkKCJzdHJ1bmsiKTsNCisJU2V0UHJvcChQX05BTUUsICJTdHJ1bmsiKTsNCisJU2V0UHJvcChQX1NIT1JULCAiRGVyIFN0cnVuayBlaW5lciBQdXN0ZWJsdW1lIik7DQorCVNldFByb3AoUF9MT05HLCAiRWluIGhhZXNzbGljaGVyLCBsZWVyZXIgU3RydW5rLlxuIik7DQorCVNldFByb3AoUF9HRU5ERVIsIE1BTEUpOw0KKyAgfQ0KKyAgcmV0dXJuIDE7DQorfQ0KKw0KK3ByaXZhdGUgdm9pZCBub3RpZnlfZW52X2Rlc3Ryb3koKSB7DQorICBvYmplY3Qgb2IgPSBlbnZpcm9ubWVudCgpOw0KKyAgd2hpbGUob2IgJiYgIWxpdmluZyhvYikpIG9iID0gZW52aXJvbm1lbnQob2IpOw0KKyAgaWYob2JqZWN0cChvYikpDQorICAgIHRlbGxfb2JqZWN0KG9iLCAiRGVyIFdpbmQgemVyYmxhZXN0ICIrbmFtZShXRU4sIDIpKyIuXG4iKTsNCisgIHJlbW92ZSgxKTsNCit9DQorDQordmFyYXJncyB2b2lkIHRyaWdnZXJfc2Vuc2l0aXZlX2F0dGFjaygpIHsNCisgIG5vdGlmeV9lbnZfZGVzdHJveSgpOw0KK30NCisNCit2YXJhcmdzIHZvaWQgdHJpZ2dlcl9zZW5zaXRpdmVfaW52KCkgew0KKyAgbm90aWZ5X2Vudl9kZXN0cm95KCk7DQorfQ0KKw0KK3ZhcmFyZ3MgaW50IHJlbW92ZShpbnQgc2lsZW50KSB7DQorICBpZighc2lsZW50ICYmIGxpdmluZyhlbnZpcm9ubWVudCgpKSkNCisgICAgdGVsbF9vYmplY3QoZW52aXJvbm1lbnQoKSwgIkR1IHdpcmZzdCAiK25hbWUoV0VOLCAyKSsiIHdlZy5cbiIpOw0KKyAgcmV0dXJuIDo6cmVtb3ZlKHNpbGVudCk7DQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2RvYy9iZWlzcGllbGUvdGVzdG9iamVrdGUvY29tbWFuZF9tZV90ZXN0cmF1bS5jIGIvZG9jL2JlaXNwaWVsZS90ZXN0b2JqZWt0ZS9jb21tYW5kX21lX3Rlc3RyYXVtLmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMjkwODZjZQotLS0gL2Rldi9udWxsCisrKyBiL2RvYy9iZWlzcGllbGUvdGVzdG9iamVrdGUvY29tbWFuZF9tZV90ZXN0cmF1bS5jCkBAIC0wLDAgKzEsMzMgQEAKKyNpbmNsdWRlIDxwcm9wZXJ0aWVzLmg+Citpbmhlcml0ICIvc3RkL3Jvb20iOworCit2b2lkIGNyZWF0ZSgpIHsKKyAgOjpjcmVhdGUoKTsKKyAgU2V0UHJvcChQX0xPTkcsICJBZGRDbWQtVGVzdHJhdW0sIEtvbW1hbmRvcyAiCisgICAgICAgICAgICAgICAgICAiXCJrcmllY2hcIiB1bmQgXCJzY2hsZWljaGUmaGVyYW58aGVydW1cIi4iKTsKKyAgQWRkQ21kKCJzY2hsZWljaGUmaGVyYW58aGVydW0iLCAiYWN0aW9uX3NjaGxlaWNoZW4iKTsKKyAgQWRkRXhpdCgiZ2lsZGUiLCAiL2dpbGRlbi9hYmVudGV1cmVyIik7Cit9CisKK3ZvaWQgaW5pdCgpIHsKKyAgOjppbml0KCk7CisgIGFkZF9hY3Rpb24oImFjdGlvbl9rcmllY2hlbiIsICJrcmllY2giLCAxKTsKK30KKworc3RhdGljIGFjdGlvbl9zY2hsZWljaGVuKHN0cmluZyBzdHIpIHsKKyAgc3RyaW5nIHRtcCA9IHRoaXNfcGxheWVyKCktPlF1ZXJ5UHJvcChQX1JBQ0UpOworICBpZih0bXBbPDFdPT0nZScpIHRtcD10bXBbMC4uPDJdOworICB3cml0ZShicmVha19zdHJpbmcoIkR1IHZlcnN1Y2hzdCBsZWlzZSB6dSBzY2hsZWljaGVuLCBkYWJlaSBwYXNzaWVydCAiCisgICAgImRpciBhYmVyIGVpbiBhbGx6dSAiKworCSh0bXA9PSJNZW5zY2giPyJtZW5zY2hsaWNoZXMiOmxvd2VyX2Nhc2UodG1wKSsiaXNjaGVzIikrCisJIiBNaXNzZ2VzY2hpY2suIFZlcmZsdWNodCEiLCA3OCkpOworICB0aGlzX3BsYXllcigpLT5jb21tYW5kX21lKCJcXGZ1cnplIik7CisgIHJldHVybiAxOworfQorCitzdGF0aWMgaW50IGFjdGlvbl9rcmllY2hlbihzdHJpbmcgc3RyKSB7CisgIHdyaXRlKGJyZWFrX3N0cmluZygiRGVpbmUgS25pZSB0dW4genUgc2VociB3ZWggZGFmdWVyLiIsIDc4KSk7CisgIHRlbGxfcm9vbSh0aGlzX29iamVjdCgpLCBicmVha19zdHJpbmcodGhpc19wbGF5ZXIoKS0+TmFtZShXRVIpKworICAgICIga25hY2t0IG1pdCBkZW4gS25pZW4uIiwgNzgpKTsKKyAgcmV0dXJuIDE7Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZG9jL2JlaXNwaWVsZS90ZXN0b2JqZWt0ZS9tb2RpZnlza2lsbHNwZWxsX3Rlc3QuYyBiL2RvYy9iZWlzcGllbGUvdGVzdG9iamVrdGUvbW9kaWZ5c2tpbGxzcGVsbF90ZXN0LmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uM2M1ODM0MgotLS0gL2Rldi9udWxsCisrKyBiL2RvYy9iZWlzcGllbGUvdGVzdG9iamVrdGUvbW9kaWZ5c2tpbGxzcGVsbF90ZXN0LmMKQEAgLTAsMCArMSwxMDMgQEAKKy8vIE1vZGlmeVNraWxsLUJlaXNwaWVsIGZ1ZXIgZWluZW0gU3BlbGwuIEVybGFldXRlcnVuZyBhdWYgbWFuLVBhZ2UKKy8vIHVuZCBpbSBPYmpla3Qgc2VsYnN0Citpbmhlcml0ICIvc3RkL3RoaW5nIjsKKyNpbmNsdWRlIDxuZXdfc2tpbGxzLmg+CisjaW5jbHVkZSA8cHJvcGVydGllcy5oPgorI2luY2x1ZGUgPHdpemxldmVscy5oPgorI2luY2x1ZGUgPGJyZWFrX3N0cmluZy5oPgorCitzdGF0aWMgaW50IHNraWxsc2V0KHN0cmluZyBzdHIpOworc3RhdGljIGludCBza2lsbHVuc2V0KHN0cmluZyBzdHIpOworCit2b2lkIGNyZWF0ZSgpIHsKKyAgaWYoIWNsb25lcCh0aGlzX29iamVjdCgpKSkgeworICAgIHNldF9uZXh0X3Jlc2V0KC0xKTsKKyAgICByZXR1cm47CisgIH0KKworICA6OmNyZWF0ZSgpOworICBzZXRfbmV4dF9yZXNldCg3MjAwKTsKKworICBTZXRQcm9wKFBfTkFNRSwgIlNraWxsYmVpc3BpZWwiKTsKKyAgU2V0UHJvcChQX1NIT1JULCAiRWluZSBTa2lsbGJlaXNwaWVsIik7CisgIFNldFByb3AoUF9MT05HLCBicmVha19zdHJpbmcoCisgICAgIk1pdCBcInNraWxsc2V0XCIga2FubiBtYW4gc2ljaCBkZW4gU2tpbGwgKGVpZ2VudGxpY2ggU3BlbGwpICIKKyAgICAiXCJmbnJ4XCIgc2V0emVuLlxuIisKKyAgICAiRHVyY2ggXCJza2lsbHVuc2V0XCIgd2lyZCBkZXIgU2tpbGwgZ2Vsb2VzY2h0LlxuIgorICAgICJEYXMgemFlaGx0IGRlc2hhbGIgYWxzIFNwZWxsLCB3ZWlsIGVyIGtsZWluZ2VzY2hyaWViZW4gdW5kICIKKyAgICAiZGFtaXQgZGlyZWt0IHZvbSBTcGllbGVyIChhbHNvIGRpcikgYWxzIEtvbW1hbmRvIHZpYSBVc2VTcGVsbCgpICIKKyAgICAiYXVzZnVlaHJiYXIgaXN0LiIsIDc4LCAwLCBCU19MRUFWRV9NWV9MRlMpKTsKKyAgU2V0UHJvcChQX0dFTkRFUiwgTkVVVEVSKTsKKyAgQWRkSWQoKHsiYmVpc3BpZWwiLCAic2tpbGxiZWlzcGllbCIsICJzcGVsbGJlaXNwaWVsIiwKKyAgICAgICAgICAic2tpbGwiLCAic3BlbGwifSkpOworICAKKyAgQWRkQ21kKCJza2lsbHNldCIsICMnc2tpbGxzZXQpOworICBBZGRDbWQoInNraWxsdW5zZXQiLCAjJ3NraWxsdW5zZXQpOworfQorCisvLyBUZXN0ZnVua3Rpb24sIHdlaWwgaW0gQ29kZSBkYXp1IGF1ZmdlZm9yZGVydCB3aXJkLCBkYXMgT2JqZWt0IGF1Y2gKKy8vIG1hbCB6dSB3ZWd6dWxlZ2VuLiBTcGllbGVyIHNvbGx0ZW4gbmljaHQgYW4gc2ljaCBoZXJ1bWZ1bW1lbG4uCitwcml2YXRlIHN0YXRpYyBpbnQgX2NoZWNrTGVhcm5lcihvYmplY3QgcGwpIHsKKyAgaWYoIUlTX0xFQVJORVIodGhpc19wbGF5ZXIoKSkpIHsKKyAgICBub3RpZnlfZmFpbCgiRHUgYmlzdCBrZWluIE1hZ2llciwgZGVzaGFsYiBnZWh0IGRhcyBuaWNodC5cbiIpOworICAgIGNhbGxfb3V0KCMncmVtb3ZlLCAxKTsKKyAgICByZXR1cm4gMDsKKyAgfQorICByZXR1cm4gMTsKK30KKworc3RhdGljIGludCBza2lsbHNldChzdHJpbmcgc3RyKSB7CisgIGlmKCFfY2hlY2tMZWFybmVyKHRoaXNfcGxheWVyKCkpKQorICAgIHJldHVybiAwOworCisgIGlmKHRoaXNfcGxheWVyKCktPlF1ZXJ5U2tpbGwoImZucngiKSkgeworICAgIG5vdGlmeV9mYWlsKCJEdSBrYW5uc3QgZGVuIFNraWxsIHNjaG9uLlxuIik7CisgICAgcmV0dXJuIDA7CisgIH0KKworICB0aGlzX3BsYXllcigpLT5Nb2RpZnlTa2lsbCgiZm5yeCIsCisgICAgKFtTSV9DTE9TVVJFOiBmdW5jdGlvbiBpbnQgKG9iamVjdCBjYXN0ZXIsIHN0cmluZyBza2lsbCwgbWFwcGluZyBzaW5mKSB7CisgICAgICAgICAgICBjYXN0ZXItPkxlYXJuU2tpbGwoImZucngiLCAxKTsKKyAgICAgICAgICAgIHRlbGxfb2JqZWN0KGNhc3RlciwgIlBlbmchIERlaW4gU2tpbGx3ZXJ0IHN0ZWlndCBhdWYgIisKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FzdGVyLT5RdWVyeVNraWxsQWJpbGl0eSgiZm5yeCIpKyIuXG4iKTsKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIDE7CisgICAgICAgICAgICAgICAgICB9LAorICAgICAgU0lfU0tJTExBQklMSVRZOiA4NDMyXSksIDEwMCwgIkFOWSIpOworICB0ZWxsX29iamVjdCh0aGlzX3BsYXllcigpLCBicmVha19zdHJpbmcoCisgICAgIkRlciBTa2lsbCBpc3QgZ2VzZXR6dC4gVGlwcCBkb2NoIGVpbiBwYWFyIE1hbCBcImZucnhcIiB1bmQgc2NoYXUgZGVuICIKKyAgICAiQ29kZSB1bnRlciAiK2xvYWRfbmFtZSh0aGlzX29iamVjdCgpKSsiIGFuLCBkYW1pdCBkdSBzaWVoc3QsIGRhc3MgZGVyICIKKyAgICAiU2tpbGwgamV0enQgbnVyIGF1cyBlaW5lbSBFaW50cmFnIGluIGRpciB1bmQgZWluZXIgdWViZXIgVXNlU3BlbGwoKSAiCisgICAgImdlcnVmZW5lbiBGdW5rdGlvbiBpbiBkaWVzZW0gT2JqZWt0IGJlc3RlaHQuIERlciBTa2lsbCBpc3Qga2VpbiAiCisgICAgIktvbW1hbmRvIGluIGVpbmVtIGFuZGVyZW4gT2JqZWt0LlxuXG4iCisgICAgIldlbm4gZHUgZGllc2VzIE9iamVrdCB3ZWdsZWdzdCwgZnVua3Rpb25pZXJ0IGFsc28gYWxsZXMgd2VpdGVyLiAiCisgICAgIlplcnN0b2Vyc3QgZHUgYWJlciBkYXMgT2JqZWt0IChvZGVyIGRpY2ggbWl0IFwiZW5kZVwiLCBmdW5rdGlvbmllcnQgIgorICAgICJkaWUgU2tpbGxmdW5rdGlvbiBuaWNodCBtZWhyLlxuIgorICAgICJTY2hhdSBkaXIgYXVjaCB4ZXZhbCB0aGlzX3BsYXllcigpLT5RdWVyeVNraWxsKFwiZm5yeFwiKSBhbi4iLCA3OCwgMCwKKyAgICBCU19MRUFWRV9NWV9MRlMpKTsKKyAgcmV0dXJuIDE7Cit9CisKKy8vIEhlcmUgYmUgZHJhZ29ucyEKKy8vIEJpdHRlIGJlbnV0enQgZGllIGZvbGdlbmRlIEFydCB2b24gTWFuaXB1bGF0aW9uIGRlciBTa2lsbHMgbnVyIGRhbm4sCisvLyB3ZW5uIGlociBnZW5hdSB3aXNzdCwgd2FzIGlociB0dXQuIEluIGFuZGVyZW4gV29ydGVuOiBOSUNIVCBNQUNIRU4hCisvLyBVbmQgd2VubiwgZGFubiBOVVIgQU0gRUlHRU5FTiBNQUdJRVJPQkpFS1QsIE5JQ0hUIEFOIFNQSUVMRVJOIQorc3RhdGljIGludCBza2lsbHVuc2V0KHN0cmluZyBzdHIpIHsKKyAgaWYoIV9jaGVja0xlYXJuZXIodGhpc19wbGF5ZXIoKSkpCisgICAgcmV0dXJuIDA7CisKKyAgLy8gcGVyIFF1ZXJ5KCkgZGFzIE1hcHBpbmcgYW4gZGVyIF9xdWVyeV8qLUZ1biB2b3JiZWkgZGlyZWt0IGhvbGVuCisgIG1hcHBpbmcgc2tpbGxzID0gdGhpc19wbGF5ZXIoKS0+UXVlcnkoUF9ORVdTS0lMTFMpOworICAvLyAuLi4gdW5kIG1hbmlwdWxpZXJlbiAod2lya3Qgc2ljaCB3ZWdlbiBSZWZlcmVueiBkaXJla3QgYXVzKQorICBpZihtYXBwaW5ncChza2lsbHMpICYmIG1hcHBpbmdwKHNraWxsc1siQU5ZIl0pICYmCisgICAgIG1lbWJlcihza2lsbHNbIkFOWSJdLCAiZm5yeCIpKSB7CisgICAgZWZ1bjo6bV9kZWxldGUoc2tpbGxzWyJBTlkiXSwgImZucngiKTsKKyAgICB0ZWxsX29iamVjdCh0aGlzX3BsYXllcigpLCAiRXJsZWRpZ3QuXG4iKTsKKyAgfSBlbHNlCisgICAgdGVsbF9vYmplY3QodGhpc19wbGF5ZXIoKSwgIk5pY2h0cyB6dSBlcmxlZGlnZW4uXG4iKTsKKyAgCisgIHJldHVybiAxOworfQorCit2b2lkIHJlc2V0KCkgeworICByZW1vdmUoKTsKK30KZGlmZiAtLWdpdCBhL2RvYy9iZWlzcGllbGUvdGVzdG9iamVrdGUvbmV0ZGVhZF9pbmZvX3Rlc3RyYXVtLmMgYi9kb2MvYmVpc3BpZWxlL3Rlc3RvYmpla3RlL25ldGRlYWRfaW5mb190ZXN0cmF1bS5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmIyZDhhNzEKLS0tIC9kZXYvbnVsbAorKysgYi9kb2MvYmVpc3BpZWxlL3Rlc3RvYmpla3RlL25ldGRlYWRfaW5mb190ZXN0cmF1bS5jCkBAIC0wLDAgKzEsNjkgQEAKKy8vIEJlaXNwaWVscmF1bSBmdWVyIFBfTkVUREVBRF9JTkZPLUZ1bmt0aW9uYWxpdGFldAorI2luY2x1ZGUgPHByb3BlcnRpZXMuaD4KKyNpbmNsdWRlIDxicmVha19zdHJpbmcuaD4KK2luaGVyaXQgIi9zdGQvcm9vbSI7CisgICAgIAorc3RyaW5nIGNyZWF0ZV9kZXN0aW55KG1peGVkIHZhbCk7CitpbnQgY3JlYXRlX3Jvb20oc3RyaW5nIGRpcik7CisKK3ZvaWQgY3JlYXRlKCkgeworICA6OmNyZWF0ZSgpOworCisgIGlmIChjbG9uZXAodGhpc19vYmplY3QoKSkpIHsKKyAgICAvLyBzZXR6ZSBJbmZvcm1hdGlvbmVuLCBkaWUgaW4gZWluZW0gTmV0enRvdGVuIGdlc3BlaWNoZXJ0IHdlcmRlbiBzb2xsZW4KKyAgICBTZXQoUF9ORVRERUFEX0lORk8sIHJhbmRvbSg1KSk7CisgICAgU2V0UHJvcChQX0lOVF9MT05HLCBicmVha19zdHJpbmcoCisgICAgICAiV2VubiBkdSBoaWVyIGVpbnNjaGxhZWZzdCwgd2lyZCBkZXIgUmF1bSBuYWNoIDMwcyB6ZXJzdG9lcnQuIEJlaW0gIgorICAgICAgIkF1ZndhY2hlbiB3aXJzdCBkdSBhbiBkaWUgQmx1ZXByaW50IGRpZXNlcyBSYXVtcyBkaWUgSW5mbyAiKworICAgICAgUXVlcnlQcm9wKFBfTkVUREVBRF9JTkZPKSsiIHVlYmVyZ2ViZW4uIERpZXNlIHdpcmQgYXVzIGRpZXNlciBJbmZvICIKKyAgICAgICJlaW5lbiBSYXVtcGZhZCBlcm1pdHRlbG4sIGluIGRlbiBkdSBiZXdlZ3Qgd2lyc3QuIiwgNzgpKTsKKyAgfSBlbHNlIHsKKyAgICAvLyBCbHVlcHJpbnQ6IGhpZXIga2FubiBtYW4genUgZWluZW0gQ2xvbmVyYXVtIGdlaGVuCisgICAgQWRkRXhpdCgiY2xvbmVyYXVtIiwgIydjcmVhdGVfcm9vbSk7CisgICAgU2V0UHJvcChQX0lOVF9MT05HLCBicmVha19zdHJpbmcoCisgICAgICAiWnVtIFRlc3RlbiBlaW5mYWNoIGRlbiBBdXNnYW5nICdjbG9uZXJhdW0nIGJlbnV0emVuLiBFcyB3aXJkIGRhbm4gIgorICAgICAgImVpbiBSYXVtIGdlY2xvbnQsIGluIGRlbiBtYW4gYmV3ZWd0IHdpcmQuIFdlbm4gbWFuIGRvcnQgZWluc2NobGFlZnQsICIKKyAgICAgICJ3aXJkIGRlciBnZWNsb250ZSBSYXVtIG5hY2ggY2lyY2EgMzBzIHplcnN0b2VydC5cbiIKKyAgICAgICJCZWltIEF1ZndhY2hlbiB3ZXJkZW4gZGllIGltIFNwaWVsZXIgZ2VzcGVpY2hlcnRlbiBJbmZvcm1hdGlvbmVuIGRlcyAiCisgICAgICAiZ2VjbG9udGVuICh1bmQgbnVubWVociB6ZXJzdG9lcnRlbikgUmF1bWVzIGJlbnV0enQsIHVtIGVpbmVuICIKKyAgICAgICJhbHRlcm5hdGl2ZW4gQXVmd2FjaHJhdW0gKEtsZXJ1c2dpbGRlLCBLYXJhdGVnaWxkZSwgV2FsZCBvZGVyIFBvcnQgIgorICAgICAgIlZhaW4pIHp1IGJlc3RpbW1lbi5cbiIKKyAgICAgICJBbmRlcm5mYWxscyB3dWVyZGUgZGVyIFNwaWVsZXIgaW4gZGVyIEFiZW50ZXVyZXJnaWxkZSBlcndhY2hlbi4iLCA3OCwKKyAgICAgIDAsIEJTX0xFQVZFX01ZX0xGUykpOworICB9CisKKyAgLy8gU2V0LU1ldGhvZCwgdW0gZGllIEluZm9ybWF0aW9uZW4gYXVzIFBfTkVUREVBRF9JTkZPIGJlaW0gQXVmd2FjaGVuCisgIC8vIGluIGRlciBCbHVlcHJpbnQgYXVzd2VydGVuIHp1IGtvZW5uZW4KKyAgU2V0KFBfTkVUREVBRF9JTkZPLCAjJ2NyZWF0ZV9kZXN0aW55LCBGX1NFVF9NRVRIT0QpOworICBTZXRQcm9wKFBfTElHSFQsIDEpOworfQorICAgICAKKy8vIFJhdW0gZW50ZmVybmVuLCBub3JtYWxlcndlaXNlIHNvIEtFSU5FIEdVVEUgSURFRSEKK3ZvaWQgQmVjb21lc05ldERlYWQob2JqZWN0IHBsKSB7CisgIGNhbGxfb3V0KCMncmVtb3ZlLCAzMCk7Cit9CisKKy8vIGVyemV1Z2UgZWluZW4gQ2xvbmVyYXVtIHVuZCBiZXdlZ2UgZGVuIFNwaWVsZXIgZGFoaW4KK2ludCBjcmVhdGVfcm9vbShzdHJpbmcgZGlyKSB7CisgIG9iamVjdCBkZXN0ID0gY2xvbmVfb2JqZWN0KG9iamVjdF9uYW1lKHRoaXNfb2JqZWN0KCkpKTsKKyAgdGhpc19wbGF5ZXIoKS0+bW92ZShkZXN0LCBNX05PQ0hFQ0spOworICByZXR1cm4gMTsKK30KKyAgICAgCisvLyBTZXQtTWV0aG9kIGZ1ZXIgUF9ORVRERUFEX0lORk86IGdpYnQgUGZhZCB6dXJ1ZWNrCisvLyBiZW51dHplIGRpZSBJbmZvcm1hdGlvbmVuIGF1cyBkZW0gamV0enQgYXVmd2FjaGVuZGVuIE5ldHp0b3RlbiwgdW0gZWluZW4KKy8vIGFsdGVybmF0aXZlbiBBdWZ3YWNocmF1bSB6dSBlcm1pdHRlbG4sIGRhIGRlciBFaW5zY2hsYWZyYXVtIHplcnN0b2VydCBpc3QKK3N0cmluZyBjcmVhdGVfZGVzdGlueShtaXhlZCB2YWwpIHsKKyAgaWYgKGludHAodmFsKSkgeworICAgIHN3aXRjaCAodmFsKSB7CisgICAgICBjYXNlIDA6CisgICAgICAgIHJldHVybiAiL2QvZWJlbmUvcm9vbS9Qb3J0VmFpbi9wb19oYWYxIjsKKyAgICAgIGNhc2UgMToKKyAgICAgICAgcmV0dXJuICIvZ2lsZGVuL2tsZXJ1cyI7CisgICAgICBjYXNlIDI6CisgICAgICAgIHJldHVybiAiL2dpbGRlbi9rYXJhdGUiOworICAgICAgZGVmYXVsdDoKKyAgICB9CisgICAgcmV0dXJuICIvZC9lYmVuZS9yb29tL3dhbGR3ZWc0IjsKKyAgfQorfQpkaWZmIC0tZ2l0IGEvZG9jL2JlaXNwaWVsZS92aXJ0dWFsLy5yZWFkbWUgYi9kb2MvYmVpc3BpZWxlL3ZpcnR1YWwvLnJlYWRtZQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi43Y2JkZWQyCi0tLSAvZGV2L251bGwKKysrIGIvZG9jL2JlaXNwaWVsZS92aXJ0dWFsLy5yZWFkbWUKQEAgLTAsMCArMSwyIEBACitFaW4gZWluZmFjaGVzIEJlaXNwaWVsIGZ1ZXIgcGVyIHZpcnR1YWwgY29tcGlsZXIgZXJ6ZXVndGUgT2JqZWt0ZSB2b24gWmVzc3RyYQordW5kIGVpbiBsZWljaHQga29tcGxleGVyZXMgdm9uIEhhdGUuCmRpZmYgLS1naXQgYS9kb2MvYmVpc3BpZWxlL3ZpcnR1YWwvaGF0ZS92X3Jvb20uYyBiL2RvYy9iZWlzcGllbGUvdmlydHVhbC9oYXRlL3Zfcm9vbS5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjU5YzI4ZmQKLS0tIC9kZXYvbnVsbAorKysgYi9kb2MvYmVpc3BpZWxlL3ZpcnR1YWwvaGF0ZS92X3Jvb20uYwpAQCAtMCwwICsxLDEyIEBACitpbmhlcml0ICIvc3RkL3Jvb20iOworCisjaW5jbHVkZSA8cHJvcGVydGllcy5oPgorI2luY2x1ZGUgPGRlZmluZXMuaD4KKworY3JlYXRlKCkKK3sKKyAgICAgICAgaWYoSVNfQkxVRSh0aGlzX29iamVjdCgpKSkgcmV0dXJuOworICAgICAgICA6OmNyZWF0ZSgpOworICAgICAgICBwcmV2aW91c19vYmplY3QoKS0+Q3VzdG9taXplT2JqZWN0KCk7CisgICAgICAgIGNhbGxfb3V0KHN5bWJvbF9mdW5jdGlvbigiUXVlcnlPYmplY3QiLCBmaW5kX29iamVjdChPQkpFQ1REKSksIDIpOworfQpkaWZmIC0tZ2l0IGEvZG9jL2JlaXNwaWVsZS92aXJ0dWFsL2hhdGUvdnJfY29tcGlsZXIuYyBiL2RvYy9iZWlzcGllbGUvdmlydHVhbC9oYXRlL3ZyX2NvbXBpbGVyLmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMWE1MGQwYgotLS0gL2Rldi9udWxsCisrKyBiL2RvYy9iZWlzcGllbGUvdmlydHVhbC9oYXRlL3ZyX2NvbXBpbGVyLmMKQEAgLTAsMCArMSw4NSBAQAorLy8gTW9yZ2VuR3JhdWVuIE1VRGxpYgorLy8KKy8vIFZSX0NPTVBJTEVSLkMgLS0gdmlydHVhbCByb29tIGNvbXBpbGVyCisvLworLy8gJERhdGU6IDIwMDIvMDgvMjggMDk6NTc6MTggJAorLy8gJFJldmlzaW9uOiAxLjMgJAorLyogJExvZzogdnJfY29tcGlsZXIuYyx2ICQKKyAqIFJldmlzaW9uIDEuMyAgMjAwMi8wOC8yOCAwOTo1NzoxOCAgUmlrdXMKKyAqIGF1ZiBzdHJvbmdfdHlwZXMgdW1nZXN0ZWxsdAorICoKKyAqIFJldmlzaW9uIDEuMiAgMTk5NC8wNy8yNyAxNDo0ODoxOCAgSm9mCisgKiBzdWlkCisgKgorICogUmV2aXNpb24gMS4xICAxOTk0LzAyLzAxICAxOTo0Nzo1NyAgSGF0ZQorICogSW5pdGlhbCByZXZpc2lvbgorICoKKyovCisKKy8vIHByaW5jaXBsZToKKy8vIAktIGluaGVyaXQgdGhpcyBvYmplY3QgaW50byB5b3VyIG93biAndmlydHVhbF9jb21waWxlci5jJworLy8gIC0gY3VzdG9taXplIFZhbGlkYXRlKCkgYW5kIEN1c3RvbWl6ZU9iamVjdCgpIGZvciB5b3Ugb3duIHNha2UKKy8vICAKKy8vICAqIFZhbGlkYXRlKCkgY2hlY2tzIGlmIGEgcm9vbSBmaWxlbmFtZSBnaXZlbiBhcyBhcmd1bWVudCAod2l0aG91dCBwYXRoKQorLy8gICAgaXMgdmFsaWQgYW5kIHJldHVybnMgdGhpcyBmaWxlbmFtZSB3aXRoIHN0cmlwcGVkICcuYychIQorLy8gICogQ3VzdG9taXplT2JqZWN0KCkgdXNlcyB0aGUgcHJldmlvdXNfb2JqZWN0KCktPkZ1bmN0aW9uKCkgc3RyYXRlZ3kgdG8KKy8vICAgIGN1c3RvbWl6ZSB0aGUgc3RhbmRhcmQgb2JqZWN0IChmb3IgZXhhbXBsZSB0byBzZXQgYSBkZXNjcmlwdGlvbikKKy8vCisvLyBQcm9wZXJ0aWVzOiBQX1ZBTElEX05BTUUsIFBfTUlOX1gsIFBfTUFYX1gsIFBfTUlOX1ksIFBfTUFYX1kKKworI3ByYWdtYSBzdHJvbmdfdHlwZXMKKworaW5oZXJpdCAiL3N0ZC92aXJ0dWFsL3ZfY29tcGlsZXIiOworCisjZGVmaW5lIE5FRURfUFJPVE9UWVBFUworCisjaW5jbHVkZSA8dGhpbmcvcHJvcGVydGllcy5oPgorI2luY2x1ZGUgPGRlZmluZXMuaD4KKyNpbmNsdWRlIDx2X2NvbXBpbGVyLmg+CisjaW5jbHVkZSAiL29iai92aXJ0dWFsL3ZyX2NvbXBpbGVyLmgiCisjaW5jbHVkZSA8c3lzX2RlYnVnLmg+CisKK3ZvaWQgY3JlYXRlKCkKK3sKKyAgOjpjcmVhdGUoKTsKKyAgU2V0UHJvcChQX1ZBTElEX05BTUUsICJyYXVtIik7Cit9CisKK3N0cmluZyBWYWxpZGF0ZShzdHJpbmcgZmlsZSkKK3sKKyAgaW50IHgseTsKKyAgc3RyaW5nIHBhdGgsIG5hbWU7CisKKyAgZmlsZSA9IDo6VmFsaWRhdGUoZmlsZSk7CisJaWYoKHNzY2FuZihmaWxlLCAiJXNbJWQsJWRdIiwgbmFtZSwgeCwgeSkgPT0gMykgJiYKKwkJCW5hbWUgPT0gUXVlcnlQcm9wKFBfVkFMSURfTkFNRSkgJiYKKwkJICAoeCA+PSBRdWVyeVByb3AoUF9NSU5fWCkgJiYgeCA8PSBRdWVyeVByb3AoUF9NQVhfWCkpICYmCisJCSAgKHkgPj0gUXVlcnlQcm9wKFBfTUlOX1kpICYmIHkgPD0gUXVlcnlQcm9wKFBfTUFYX1kpKQorCQkpCisgICAgICByZXR1cm4gZmlsZTsKK30KKworbWl4ZWQgQ3VzdG9taXplT2JqZWN0KCkKK3sKKwlzdHJpbmcgcGF0aCwgZmlsZSwgbmFtZTsKKwlpbnQgeCx5OworCisJaWYoIShmaWxlID0gOjpDdXN0b21pemVPYmplY3QoKSkpIHJldHVybiAwOworCisJcGF0aCA9IFF1ZXJ5UHJvcChQX0NPTVBJTEVSX1BBVEgpOworCXNzY2FuZihmaWxlLCAiJXNbJWQsJWRdIiwgbmFtZSwgeCwgeSk7CisJbmFtZSA9IFF1ZXJ5UHJvcChQX1ZBTElEX05BTUUpOworCWlmKHkgPCBRdWVyeVByb3AoUF9NQVhfWSkpCisJICAgIHByZXZpb3VzX29iamVjdCgpLT5BZGRFeGl0KCJub3JkZW4iLCAKKwkJcGF0aCsiLyIrbmFtZSsiWyIrKHggICkrIiwiKyh5KzEpKyJdIik7CisJaWYoeSA+IFF1ZXJ5UHJvcChQX01JTl9ZKSkKKwkgICAgcHJldmlvdXNfb2JqZWN0KCktPkFkZEV4aXQoInN1ZWRlbiIsIAorCQlwYXRoKyIvIituYW1lKyJbIisoeCAgKSsiLCIrKHktMSkrIl0iKTsKKwlpZih4IDwgUXVlcnlQcm9wKFBfTUFYX1gpKQorCSAgICBwcmV2aW91c19vYmplY3QoKS0+QWRkRXhpdCgib3N0ZW4iICwgCisJCXBhdGgrIi8iK25hbWUrIlsiKyh4KzEpKyIsIisoeSAgKSsiXSIpOworCWlmKHggPiBRdWVyeVByb3AoUF9NSU5fWCkpCisJICAgIHByZXZpb3VzX29iamVjdCgpLT5BZGRFeGl0KCJ3ZXN0ZW4iLCAKKwkJcGF0aCsiLyIrbmFtZSsiWyIrKHgtMSkrIiwiKyh5ICApKyJdIik7Cit9CisKZGlmZiAtLWdpdCBhL2RvYy9iZWlzcGllbGUvdmlydHVhbC9oYXRlL3ZyX2NvbXBpbGVyLmggYi9kb2MvYmVpc3BpZWxlL3ZpcnR1YWwvaGF0ZS92cl9jb21waWxlci5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjY3M2ZjNTQKLS0tIC9kZXYvbnVsbAorKysgYi9kb2MvYmVpc3BpZWxlL3ZpcnR1YWwvaGF0ZS92cl9jb21waWxlci5oCkBAIC0wLDAgKzEsMzMgQEAKKy8vIE1vcmdlbkdyYXVlbiBNVURsaWIKKy8vCisvLyBWX0NPTVBJTEVSLkggLS0gYSBnZW5lcmFsIHZpcnR1YWwgY29tcGlsZXIgb2JqZWN0CisvLworLy8gJERhdGU6IDE5OTQvMDIvMDEgMTk6NDc6NTcgJAorLy8gJFJldmlzaW9uOiAxLjEgJAorLyogJExvZzogdnJfY29tcGlsZXIuaCx2ICQKKyAqIFJldmlzaW9uIDEuMSAgMTk5NC8wMi8wMSAgMTk6NDc6NTcgIEhhdGUKKyAqIEluaXRpYWwgcmV2aXNpb24KKyAqCisqLworCisjaW5jbHVkZSA8dl9jb21waWxlci5oPgorCisjaWZuZGVmIF9fVlJfQ09NUElMRVJfSF9fCisjZGVmaW5lIF9fVlJfQ09NUElMRVJfSF9fCisKKyNkZWZpbmUgUF9WQUxJRF9OQU1FCSJ2YWxpZF9uYW1lIgorI2RlZmluZSBQX01JTl9YCQkJCSJtaW5feCIKKyNkZWZpbmUgUF9NQVhfWAkJCQkibWF4X3giCisjZGVmaW5lIFBfTUlOX1kJCQkJIm1pbl95IgorI2RlZmluZSBQX01BWF9ZCQkJCSJtYXhfeSIKKworI2VuZGlmIC8vIF9fVl9DT01QSUxFUl9IX18KKworI2lmZGVmIE5FRURfUFJPVE9UWVBFUworCisjaWZuZGVmIF9fVlJfQ09NUElMRVJfSF9QUk9UT19fCisjZGVmaW5lIF9fVlJfQ09NUElMRVJfSF9QUk9UT19fCisKKyNlbmRpZiAvLyBfX1ZSX0NPTVBJTEVSX0hfUFJPVE9fXworCisjZW5kaWYgLy9ORUVEX1BST1RPVFlQRVMKZGlmZiAtLWdpdCBhL2RvYy9iZWlzcGllbGUvdmlydHVhbC96ZXNzdHJhL3N0ZF9hcmVuYS5jIGIvZG9jL2JlaXNwaWVsZS92aXJ0dWFsL3plc3N0cmEvc3RkX2FyZW5hLmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZGUyZTVhMgotLS0gL2Rldi9udWxsCisrKyBiL2RvYy9iZWlzcGllbGUvdmlydHVhbC96ZXNzdHJhL3N0ZF9hcmVuYS5jCkBAIC0wLDAgKzEsMjAgQEAKK2luaGVyaXQgIi9zdGQvcm9vbSI7CisKKyNwcmFnbWEgc3Ryb25nX3R5cGVzLHNhdmVfdHlwZXMscnR0X2NoZWNrcworI2luY2x1ZGUgPHByb3BlcnRpZXMuaD4KKworcHJvdGVjdGVkIHZvaWQgY3JlYXRlKCkKK3sKKyAgICBpZighY2xvbmVwKFRPKSkKKyAgICAgICAgcmV0dXJuOworICAgIDo6Y3JlYXRlKCk7CisKKyAgICBTZXRQcm9wKFBfSU5UX0xPTkcsIGJyZWFrX3N0cmluZygKKyAgICAgICAgICAiRHUgc3RlaHN0IGhpZXIgaW4gZWluZXIgdm9lbGxpZyBsZWVyZW4gQXJlbmEuIgorICAgICAgICAgICJHZWdlbiB3ZW4gc29sbHRlc3QgRHUgaGllciBkZW5uIGdsZWljaCBrYWVtcGZlbi4uLj8iLDc4KSk7CisgICAgU2V0UHJvcChQX0lOVF9TSE9SVCwgIkluIGVpbmVyIEFyZW5hIik7CisgICAgU2V0UHJvcChQX0xJR0hULCAxKTsKKyAgICBTZXRQcm9wKFBfSU5ET09SUywwKTsKKworICAgIEFkZEV4aXQoInJhdXMiLCAiL2dpbGRlbi9hYmVudGV1cmVyIik7Cit9CmRpZmYgLS1naXQgYS9kb2MvYmVpc3BpZWxlL3ZpcnR1YWwvemVzc3RyYS92aXJ0dWFsX2NvbXBpbGVyLmMgYi9kb2MvYmVpc3BpZWxlL3ZpcnR1YWwvemVzc3RyYS92aXJ0dWFsX2NvbXBpbGVyLmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMzY3NTNkZgotLS0gL2Rldi9udWxsCisrKyBiL2RvYy9iZWlzcGllbGUvdmlydHVhbC96ZXNzdHJhL3ZpcnR1YWxfY29tcGlsZXIuYwpAQCAtMCwwICsxLDMyIEBACitpbmhlcml0ICIvc3RkL3ZpcnR1YWwvdl9jb21waWxlci5jIjsKKworI3ByYWdtYSBzdHJvbmdfdHlwZXMscnR0X2NoZWNrcyxzYXZlX3R5cGVzCisKKyNpbmNsdWRlIDx0aGluZy9wcm9wZXJ0aWVzLmg+CisKKyNkZWZpbmUgTkVFRF9QUk9UT1RZUEVTCisjaW5jbHVkZSA8dl9jb21waWxlci5oPgorI3VuZGVmIE5FRURfUFJPVE9UWVBFUworCitwcm90ZWN0ZWQgdm9pZCBjcmVhdGUoKSB7CisgICAgOjpjcmVhdGUoKTsKKworICAgIC8vIGplZGVyIFNwaWVsZXIga3JpZWd0IGVpbmUgIktvcGllIiB2b24gc3RkX2FyZW5hIGFscyBSYXVtLgorICAgIFNldFByb3AoUF9TVERfT0JKRUNULCBfX0RJUl9fInN0ZF9hcmVuYSIpOworICAgIFNldFByb3AoUF9DT01QSUxFUl9QQVRILCBfX0RJUl9fKTsKK30KKworcHVibGljIHN0cmluZyBWYWxpZGF0ZShzdHJpbmcgZmlsZSkKK3sKKyAgICBzdHJpbmcgcmF1bSwgc3BpZWxlcjsKKyAgICAvLy5jIGFic2NobmVpZGVuCisgICAgZmlsZT06OlZhbGlkYXRlKGZpbGUpOworICAgIC8vIHdlbm4gZGFzIGdld3VlbnNjaHQgZmlsZSBkZW0gU2NoZW1hICJhcmVuYXxzcGllbGVybmFtZSIgZm9sZ3QsIGlzdCBlcworICAgIC8vIHp1bGFlc3NpZy4KKyAgICBpZihzc2NhbmYoZmlsZSwiJXN8JXMiLHJhdW0sc3BpZWxlcik9PTIgJiYgcmF1bT09ImFyZW5hIikKKyAgICAgICByZXR1cm4gZmlsZTsKKworICAgIC8vIG5pY2h0IHp1bGFlc3NpZy4KKyAgICByZXR1cm4gMDsKK30KKwpkaWZmIC0tZ2l0IGEvZG9jL2JlaXNwaWVsZS96YXViZXJ3YWxkL2ZpbGVzLmggYi9kb2MvYmVpc3BpZWxlL3phdWJlcndhbGQvZmlsZXMuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44NTI1ZDc4Ci0tLSAvZGV2L251bGwKKysrIGIvZG9jL2JlaXNwaWVsZS96YXViZXJ3YWxkL2ZpbGVzLmgKQEAgLTAsMCArMSwyNSBAQAorLy8gKGMpIGJ5IFBhZHJlaWMgKFBhZHJlaWNAbWcubXVkLmRlKQorCisjZGVmaW5lIEhPTUUoeCkgIi9kb2MvYmVpc3BpZWxlLyIreAorI2RlZmluZSBXQUxEKHgpIEhPTUUoInphdWJlcndhbGQvIit4KQorI2RlZmluZSBST09NKHgpIFdBTEQoInJvb20vIit4KQorI2RlZmluZSBOUEMoeCkgIFdBTEQoIm5wYy8iK3gpCisjZGVmaW5lIE9CSih4KSAgV0FMRCgib2JqLyIreCkKKworI2luY2x1ZGUgPGRlZmluZXMuaD4KKyNpbmNsdWRlIDxwcm9wZXJ0aWVzLmg+CisjaW5jbHVkZSAiL3Avc2VydmljZS9wYWRyZWljL21ucGMvbW5wYy5oIgorCisjZGVmaW5lIEJTKHgpIGJyZWFrX3N0cmluZyh4LCA3OCkKKyNkZWZpbmUgUE8gICAgcHJldmlvdXNfb2JqZWN0KCkKKyNkZWZpbmUgREVCVUcoeCkgdGVsbF9vYmplY3QoZmluZF9wbGF5ZXIoInBhZHJlaWMiKSwgeCk7CisKKyNkZWZpbmUgU0FFQ0tDSEVOICIvZC93YWxkL3BhZHJlaWMvb2JqL3NhZWNrY2hlbi5jIgorCisKKyNkZWZpbmUgWkFVQkVSV0FMRCAiXG5wYWRyZWljemF1YmVyd2FsZCIgLyogZ2VzZXR6dCB3ZW5uIG1hbiBpbSB3YWxkIGlzdCAqLworI2RlZmluZSBBR0dSRVNTSVZFX1RJTUUgOTAwICAgICAgICAgICAgICAvKiB6ZWl0IGJpcyB6dXIgYmVmcmllZHVuZyAqLworI2RlZmluZSBaQVVCRVJXQUxETlBDIFdBTERJRCgibnBjIikKKyNkZWZpbmUgQVVTR0FORyAgICAgIlxucGFkcmVpY2F1c2dhbmciICAgLyogZGllIGxldHp0ZSBCZXdlZ3VuZyAqLworI2RlZmluZSBXQUxESUQoeCkgICBaQVVCRVJXQUxEK3gKKyNkZWZpbmUgRVhUUkFfTE9ORyAgICJcbnBhZHJlaWN6dXNhdHpsb25nIiAvKiB6dXIgZXJnYWVuenVuZyB6dXIgVkMtbG9uZyAqLwpkaWZmIC0tZ2l0IGEvZG9jL2JlaXNwaWVsZS96YXViZXJ3YWxkL25wYy9hcmluYS5jIGIvZG9jL2JlaXNwaWVsZS96YXViZXJ3YWxkL25wYy9hcmluYS5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjllMDhlMjUKLS0tIC9kZXYvbnVsbAorKysgYi9kb2MvYmVpc3BpZWxlL3phdWJlcndhbGQvbnBjL2FyaW5hLmMKQEAgLTAsMCArMSwxMDEgQEAKKy8vIChjKSBieSBQYWRyZWljIChQYWRyZWljQG1nLm11ZC5kZSkKKworI2luY2x1ZGUgIi4uL2ZpbGVzLmgiCisjaW5jbHVkZSA8Y29tYmF0Lmg+CisjaW5jbHVkZSA8bmV3X3NraWxscy5oPgorI2luY2x1ZGUgIi9wL3phdWJlcmVyL3phdWJlcmVyLmgiCisKK2luaGVyaXQgTlBDKCJzdGRucGMiKTsKKwordm9pZCBjcmVhdGUoKQoreworICAgOjpjcmVhdGUoKTsKKyAgIFNldFByb3AoUF9TSE9SVCwgIkFyaW5hIGRpZSBXYWxkZmVlIik7CisgICBTZXRQcm9wKFBfTE9ORywKKyAgICAgICJWb3IgRGlyIHN0ZWh0IEFyaW5hIGRpZSB3ZWlzZSBXYWxkZmVlLiBTaWUgaXN0IGRpZSBMZWhyZXJpbiBkZXMgV2FsZGVzIHVuZFxuIgorICAgICArInVudGVycmljaHRldCBkaWUgUGl4aWVzLiBJbiBpaHJlciBIYW5kIGhhZWx0IHNpZSBlaW5lbiBrbGVpbmVuIFplaWdlc3RvY2sgbWl0XG4iCisgICAgICsiZGVtIHNpZSBhbGxlcyBtb2VnbGljaGUgZXJrbGFlcnQgdW5kIEJ1Y2hzdGFiZW4gaW4gZGVuIFNhbmQgemVpY2huZXQuIEF1Y2hcbiIKKyAgICAgKyJBcmluYSBpc3QsIGdlbmF1c28gd2llIGlocmUgU2Nod2VzdGVuLCBiaWxkaHVlYnNjaCwgZG9jaCBpaHIgZ2VzdHJlbmdlciBCbGlja1xuIgorICAgICArImZsb2Vzc3QgamVkZW0gaW4gaWhyZXIgTmFlaGUgZ3Jvc3NlbiBSZXNwZWt0IGVpbi5cbiIpOworICAgU2V0UHJvcChQX05BTUUsICJBcmluYSIpOworICAgU2V0UHJvcChQX0FSVElDTEUsIDApOworICAgU2V0UHJvcChQX0dFTkRFUiwgRkVNQUxFKTsKKyAgIFNldFByb3AoUF9MRVZFTCwgODApOworICAgU2V0UHJvcChQX0FUVFJJQlVURVMsIChbImludCI6ODAsImNvbiI6NDAsInN0ciI6MTYsImRleCI6NTBdKSApOworICAgU2V0UHJvcChQX0RJU0FCTEVfQVRUQUNLLCAtMTAwMDApOyAvLyBpcyBuaWNoIDopCisgICBTZXRQcm9wKFBfQk9EWSwgODApOworICAgU2V0UHJvcChQX01BWF9TUCwgMjAwMCk7CisgICBTZXRQcm9wKFBfU1AsIDIwMDApOworICAgU2V0UHJvcChQX01BWF9IUCwgNzAwKTsKKyAgIFNldFByb3AoUF9IUCwgNzAwKTsKKyAgIFNldFByb3AoUF9BTElHTiwgNDAwKTsKKyAgIFNldFByb3AoUF9SQUNFLCAiRmVlIik7CisgICBTZXRQcm9wKFBfU0laRSwgMTYwK3JhbmRvbSgxNikpOworICAgU2V0UHJvcChQX0FMQ09IT0wsIDApOworICAgU2V0UHJvcChQX0NPUlBTRSwgT0JKKCJmZWVubGVpY2hlIikpOworICAgU2V0UHJvcChQX01BWF9BTENPSE9MLCAwKTsgLy8ga2VpbiByYXVzY2hlbiA6KQorICAgQWRkQWRqZWN0aXZlKCJ3dW5kZXJzY2hvZW4iKTsKKyAgIEFkZElkKCh7ImFyaW5hIiwgImZlZSIsICJ3YWxkZmVlIiwgV0FMRElEKCJmZWUiKX0pKTsKKyAgIFNldFByb3AoUF9IQU5EUywgKHsiIG1pdCBpaHJlbiB6YXJ0ZW4gSGFlbmRlbiIsIDE1MCwgRFRfQkxVREdFT059KSApOworICAgU2V0UHJvcChQX1NLSUxMX0FUVFJJQlVURV9PRkZTRVRTLCAoW1NBX1NQRUxMX1BFTkVUUkFUSU9OOiAyMDBdKSk7CisgICBTZXRQcm9wKFBfWFAsIDgwMCoyMDAqNSoyKTsKKyAgIFNldFByb3AoUF9HVUlMRCwgInphdWJlcmVyIik7CisgICBTZXRQcm9wKFBfWl9OT19NQVRFUklBTCwgMSk7CisgICBTZXRQcm9wKFBfREVGQVVMVF9JTkZPLCAic2Nod2VpZ3QgdW5kIGxhZWNoZWx0IERpY2ggZWluZmFjaCBudXIgZnJldW5kbGljaCBhbi5cbiIpOworICAgTW9kaWZ5U2tpbGwoInZlcmxldHplIiwKKyAgICAgIChbU0lfU0tJTExBQklMSVRZOjkwMDAsIFNJX1NQRUxMQ09TVDowLAorICAgICAgICBTSV9TUEVMTEZBVElHVUU6MCwgU0lfTk9fQ09OU0VRVUVOQ0VTOjEwMDAwLAorICAgICAgICBTSV9TS0lMTFJFU1RSX1VTRTooW1BfR1VJTERfTEVWRUw6MCxTUl9GUkVFX0hBTkRTOjBdKSwKKyAgICAgICAgU0lfQVJNT1VSX1JFU1RSOjBdKSwwLCJ6YXViZXJlciIpOworICAgU2V0UHJvcChQX0dVSUxELCAwKTsKKyAgIFNldFByb3AoUF9SRVNJU1RBTkNFX1NUUkVOR1RIUywKKyAgICAgIChbRFRfUE9JU09OOiAwLjE1LAorICAgICAgICBEVF9NQUdJQzogLTAuMyBdKSApOworICAgQWRkSXRlbShPQkooInN0b2NrIiksIENMT05FX1dJRUxEKTsKKyAgIEFkZEl0ZW0oT0JKKCJrbGVpZCIpLCBDTE9ORV9XRUFSKTsKKyAgIGlmIChmaWxlX3NpemUoU0FFQ0tDSEVOKT4wKSBBZGRJdGVtKFNBRUNLQ0hFTiwgQ0xPTkVfTkVXKTsKK30KKwordm9pZCBBdHRhY2sob2JqZWN0IGVuZW15KQoreworICAgaW50IG5vcm1hbF9zcGVlZDsKKyAgIG5vcm1hbF9zcGVlZD0oZW5lbXktPlF1ZXJ5UHJvcChQX1NLSUxMX0FUVFJJQlVURV9PRkZTRVRTKXx8KFtdKSlbU0FfU1BFRURdfHwxMDA7CisgICBpZiAoZW5lbXkgJiYgZW5lbXktPlF1ZXJ5U2tpbGxBdHRyaWJ1dGUoU0FfU1BFRUQpID4gbm9ybWFsX3NwZWVkKSB7CisgICAgICB3cml0ZSgiRGllIEZlZSBtYWNodCBlaW5lIGJlcnVoaWdlbmRlIEhhbmRiZXdlZ3VuZyB1bmQgcGxvZXR6bGljaCBmdWVobHN0IER1IERpY2hcbiIKKyAgICAgICAgICAgKyJydWhpZyB1bmQgRHUgbWVya3N0IHdpZSBEdSBhbGxtYWVobGljaCB3aWVkZXIgbGFuZ3NhbWVyIHdpcnN0Li4uXG4iKTsKKyAgICAgIGVuZW15LT5Nb2RpZnlTa2lsbEF0dHJpYnV0ZShTQV9TUEVFRCwgLTIwLCAxODApOworICAgfQorICAgaWYgKGVuZW15KSA6OkF0dGFjayhlbmVteSk7CisgICBTZXRQcm9wKFBfR1VJTEQsICJ6YXViZXJlciIpOworICAgY29tbWFuZCgidmVybGV0emUgbWl0ICIrKHsiZmV1ZXIiLCAibWFnaWUiLCAiZWlzIiwgIndhc3NlciIsICJ3aW5kIn0pW3JhbmRvbSg1KV0gKTsKKyAgIFNldFByb3AoUF9HVUlMRCwgMCk7Cit9CisKK2ludCBEZWZlbmQoaW50IGRhbSwgbWl4ZWQgZHRzLCBtaXhlZCBzcGVsbCwgb2JqZWN0IGVuZW15KQoreworICAgaW50IG5vcm1hbF9zcGVlZDsKKyAgIG5vcm1hbF9zcGVlZD0oZW5lbXktPlF1ZXJ5UHJvcChQX1NLSUxMX0FUVFJJQlVURV9PRkZTRVRTKXx8KFtdKSlbU0FfU1BFRURdfHwxMDA7CisgICBpZiAoZW5lbXkgJiYgZW5lbXktPlF1ZXJ5U2tpbGxBdHRyaWJ1dGUoU0FfU1BFRUQpID4gbm9ybWFsX3NwZWVkKSB7CisgICAgICB3cml0ZShOYW1lKFdFUikrIiBtYWNodCBlaW5lIGJlcnVoaWdlbmRlIEhhbmRiZXdlZ3VuZyB1bmQgcGxvZXR6bGljaCBmdWVobHN0IER1IERpY2hcbiIKKyAgICAgICAgICAgKyJydWhpZyB1bmQgRHUgbWVya3N0IHdpZSBEdSBhbGxtYWVobGljaCB3aWVkZXIgbGFuZ3NhbWVyIHdpcnN0Li4uXG4iKTsKKyAgICAgIGVuZW15LT5Nb2RpZnlTa2lsbEF0dHJpYnV0ZShTQV9TUEVFRCwgLTIwLCAxODApOworICAgfQorCisgICBpZiAoKCFzcGVsbCB8fCAobWFwcGluZ3Aoc3BlbGwpICYmIHNwZWxsW1NQX1BIWVNJQ0FMX0FUVEFDS10pKSAmJiAhcmFuZG9tKDMpKSB7CisgICAgICB0ZWxsX3Jvb20oZW52aXJvbm1lbnQoKSwgTmFtZShXRVIpKyIgd2VpY2h0IHNjaG5lbGwgZWluZW4gU2Nocml0dCB6dXJ1ZWNrIHVuZCB3ZWljaHQgRGVpbmVtIEFuZ3JpZmYgYXVzLlxuIik7CisgICAgICBkYW09MDsKKyAgIH0KKyAgIHJldHVybiAoaW50KTo6RGVmZW5kKGRhbSwgZHRzLCBzcGVsbCwgZW5lbXkpOworfQorCit2b2lkIE5vdGlmeVBsYXllckRlYXRoKG9iamVjdCB3aG8sIG9iamVjdCBraWxsZXIsIG9iamVjdCBsb3N0X2V4cCkKK3sKKyAgaWYgKCF3aG8gfHwga2lsbGVyIT1NRSkgcmV0dXJuOyAvLyB1bmludGVyZXNzYW50CisgIGxvZ19maWxlKCJwYWRyZWljL2tpbGwiLCBjdGltZSh0aW1lKCkpKyIgIitjYXBpdGFsaXplKGdldHVpZCh3aG8pKSsiIGdldG9ldGV0IHZvbiAvemF1YmVyd2FsZC9hcmluYVxuIik7Cit9CisKK3ZvaWQgZGllKCkKK3sKKyAgbG9nX2ZpbGUoInBhZHJlaWMva2lsbCIsIGN0aW1lKHRpbWUoKSkrIiBBcmluYSB3dXJkZSB2b24gIitnZXRfa2lsbGVyKCkrIiBnZXRvZXRldC5cbiIpOworICA6OmRpZSgpOworfQpkaWZmIC0tZ2l0IGEvZG9jL2JlaXNwaWVsZS96YXViZXJ3YWxkL25wYy9sYXVmZWljaGUuYyBiL2RvYy9iZWlzcGllbGUvemF1YmVyd2FsZC9ucGMvbGF1ZmVpY2hlLmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMDY0OTI3NgotLS0gL2Rldi9udWxsCisrKyBiL2RvYy9iZWlzcGllbGUvemF1YmVyd2FsZC9ucGMvbGF1ZmVpY2hlLmMKQEAgLTAsMCArMSwxMjQgQEAKKy8vIChjKSBieSBQYWRyZWljIChQYWRyZWljQG1nLm11ZC5kZSkKKworI2luY2x1ZGUgIi4uL2ZpbGVzLmgiCisjaW5jbHVkZSA8Y29tYmF0Lmg+CisjaW5jbHVkZSA8bW92aW5nLmg+CisjaW5jbHVkZSA8bmV3X3NraWxscy5oPgorCitpbmhlcml0IE5QQygic3RkbnBjIik7Citpbmhlcml0IE1OUENfTU9WSU5HOworCit2b2lkIGNyZWF0ZSgpCit7CisgICBpZiAoIWNsb25lcChNRSkpIHJldHVybjsKKyAgIHN0ZG5wYzo6Y3JlYXRlKCk7CisgICBtb3Zpbmc6Om1ucGNfY3JlYXRlKCk7CisgICBTZXRQcm9wKFBfTkFNRV9BREosICJhbHQiKTsKKyAgIFNldFByb3AoUF9OQU1FLCAiRWljaGUiKTsKKyAgIFNldFByb3AoUF9TSE9SVCwgIkVpbmUgYWx0ZSBFaWNoZSIpOworICAgU2V0UHJvcChQX01TR09VVCwgIndhbmRlcnQiKTsKKyAgIFNldFByb3AoUF9MT05HLAorICAgICAiVm9yIERpciBzdGVodCBlaW5lIHNlaHIgc2VociBhbHRlIEVpY2hlLiBEb2NoIGRpZXNlIEVpY2hlIGlzdCBrZWluZVxuIgorICAgICsiZ2V3b2VobmxpY2hlIEVpY2hlLCB3aWUgRHUgc2llIGJlcmVpdHMgYW4gdmllbGVuIGFuZGVyZW4gU3RlbGxlbiBnZXNlaG4gaGFzdC5cbiIKKyAgICArIkRpZXNlIEVpY2hlIGxlYnQhIER1IGthbm5zdCBkZXV0bGljaCBlaW5lbiBNdW5kLCBlaW5lIE5hc2UgdW5kIHNvZ2FyIHp3ZWlcbiIKKyAgICArIk9ocmVuIGVya2VubmVuLiBTaWUgaXN0IGVpZ2VudGxpY2ggc2VociBmcmllZGxpY2ggZ2Vzb25uZW4sIGthbm4gYWJlciBhdWNoXG4iCisgICAgKyJzZWhyIHNlaHIgYm9lc2Ugd2VyZGVuLCB3ZW5uIGVzIGplbWFuZCB3YWd0IGRpZSBSdWhlIGRlcyBXYWxkZXMgenUgc3RvZXJlbi5cbiIpOworICAgU2V0UHJvcChQX1JBQ0UsICJlaWNoZSIpOworICAgU2V0UHJvcChQX0xFVkVMLCA1MCk7CisgICBTZXRQcm9wKFBfQVRUUklCVVRFUywgKFsiaW50Ijo1MCwiY29uIjo1MCwic3RyIjo3MCwiZGV4IjoxNV0pICk7CisgICBTZXRQcm9wKFBfR0VOREVSLCBGRU1BTEUpOworICAgU2V0UHJvcChQX01BWF9IUCwgNTAwKTsKKyAgIFNldFByb3AoUF9IUCwgNTAwKTsKKyAgIFNldFByb3AoUF9BTElHTiwgNTAwKTsKKyAgIFNldFByb3AoUF9CT0RZLCAxMDApOworICAgU2V0UHJvcChQX1NJWkUsIDY1MCtyYW5kb20oMTUxKSk7CisgICBBZGRBZGplY3RpdmUoImFsdCIpOworICAgQWRkSWQoKHsiZWljaGUiLCAiZWljaGVuIiwgV0FMRElEKCJlaWNoZSIpIH0pKTsKKyAgIFNldFByb3AoUF9IQU5EUywgKHsiIG1pdCBlaW5lbSBpaHJlciBsYW5nZW4gQWVzdGUiLDQwMCwgRFRfV0hJUH0pICk7CisgICBTZXRQcm9wKFBfU0tJTExfQVRUUklCVVRFX09GRlNFVFMsIChbU0FfU1BFRUQ6MTgwXSkpOworICAgU2V0UHJvcChQX05PQ09SUFNFLCAxKTsKKyAgIFNldFByb3AoUF9YUCwgNTAwKjQwMCo1KTsKKyAgIFNldFByb3AoUF9ERUZBVUxUX0lORk8sICJibGVpYnQgYWJzb2x1dCByZWd1bmdzbG9zIHVuZCByZWFnaWVydCB1ZWJlcmhhdXB0IG5pY2h0LlxuIik7CisgICBTZXRQcm9wKFBfUkVTSVNUQU5DRV9TVFJFTkdUSFMsCisgICAgKFtEVF9TTEFTSDogICAgIDAuMSwKKyAgICAgIERUX01BR0lDOiAgICAtMS4wLAorICAgICAgRFRfQkxVREdFT046IC0wLjUsCisgICAgICBEVF9QT0lTT046ICAgIDAuMjUsCisgICAgICBEVF9IT0xZOiAgICAgLTEuMCwKKyAgICAgIERUX1JJUDogICAgICAgMC4yNSwKKyAgICAgIERUX0ZJUkU6ICAgICAgMC4yNSwKKyAgICAgIERUX1BJRVJDRTogICAtMC41LAorICAgICAgRFRfV0hJUDogICAgIC0xLjAgXSkgKTsKKyAgIFNldFByb3AoTU5QQ19BUkVBLCAoeyBST09NKCJ3ZWcyIiksIFJPT00oImxpY2h0dW5nIikgfSkgKTsKKyAgIFNldFByb3AoTU5QQ19SQU5ET00sIDEwKTsKKyAgIFNldFByb3AoTU5QQ19ERUxBWSwgOCk7CisgICBTZXRQcm9wKE1OUENfV0FMS19USU1FLCA2MDApOworICAgU2V0UHJvcChNTlBDX0ZMQUdTLCBNTlBDX1dBTEt8TU5QQ19OT19XQUxLX0lOX0ZJR0hUfE1OUENfT05MWV9FWElUUyk7Cit9CisKK3N0YXRpYyBzdHJpbmcgX3F1ZXJ5X2luZm8oKQoreworICAgaWYgKCFQTCB8fCBQTC0+UXVlcnlQcm9wKFpBVUJFUldBTEQpPD10aW1lKCkpCisgICAgICByZXR1cm4gIkRpZSBhbHRlIEVpY2hlIGlzdCBEaXIgc2VociBmcmllZGxpY2ggZ2Vzb25uZW4uIEVzIGlzdCBqZWRvY2ggYXVjaCBzaWNoZXJcbiIKKyAgICAgICAgICAgICsia2x1ZyBkaWVzZXMgbmljaHQgenUgYWVuZGVybiwgZGEgc2llIG1pdCBpaHJlbiBBZXN0ZW4gd29obCBhdWNoIHNlaHIga3JhZWZ0aWdcbiIKKyAgICAgICAgICAgICsienVzY2hsYWdlbiBrYW5uLlxuIjsKKyAgIHJldHVybiAiRHUgaGFzdCBkZW4gWm9ybiBkZXIgYWx0ZW4gRWljaGUgYXVmIERpY2ggZ2V6b2dlbiwgZGFzIHdhciBnYW56IHVuZCBnYXIgbmljaHRcbiIKKyAgICAgICAgICsia2x1ZyB2b24gRGlyLiBKZXR6dCBsZWJlIGF1Y2ggbWl0IGRlbiBLb25zZXF1ZW56ZW4uLi4uXG4iOworfQorCitpbnQgcmVtb3ZlKCkKKy8vIHdlbm4gZWluZSBFaWNoZSBnZXRvZXRldCB3aXJkLCBkYW5uIHZlcmxhbmdzYW10IGRhcyBkZW4gcmVzZXQgZGVyIEVpY2hlCisvLyBkaWUgYXVmIHdlZzIgYmxvY2t0LiBJbiBkZXIgUmVnZWwgc3RlaHQgamEgYXVjaCBzbyBzY2hvbiBpbW1lciBlaW5lIGRlcgorLy8gd2FuZGVyZGVuIEVpY2hlbiBkb3J0LiBEaWVzIHNvbGwgdmVyaGluZGVybiwgZGFzIGdlcmFkZSBlaW5lIEVpY2hlIHJlc2V0ZXQKKy8vIHdlbm4gbWFuIGVpbmUgdG9kIGhhdC4KK3sKKyAgIGNhbGxfb3RoZXIoUk9PTSgid2VnMiIpLCAiZGVsYXlfcmVzZXQiKTsKKyAgIGNhdGNoKGNhbGxfb3RoZXIoUXVlcnlQcm9wKE1OUENfSE9NRSksICJkZWxheV9yZXNldCIsIDkwMCtyYW5kb20oMzYwMCkpKTsKKyAgIHJldHVybiAoaW50KTo6cmVtb3ZlKCk7Cit9CisKKy8vIHdlbm4gbWFuIGRlbiBNTlBDIG1pdCBlaW5lbSBhbmRlcmVuIHN0ZG5wYyBrb21iaW5pZXJ0IG11ZXNzZW4gZWluaWdlCisvLyBmdW5rdGlvbmVuIHBlciBIYW5kIHVlYmVyc2NocmllYmVuIHdlcmRlbi4uLi4KKwordm9pZCByZXNldCgpCit7CisgICBzdGRucGM6OnJlc2V0KCk7CisgICBtb3Zpbmc6Om1ucGNfcmVzZXQoKTsKK30KKwordm9pZCBpbml0KCkKK3sKKyAgIHN0ZG5wYzo6aW5pdCgpOworICAgbW92aW5nOjptbnBjX2luaXQoKTsKK30KKwordmFyYXJncyBpbnQgbW92ZShtaXhlZCBkZXN0LCBpbnQgbWV0aCwgc3RyaW5nIGRpciwgc3RyaW5nIG91dCwgc3RyaW5nIGluKQoreworICAgaW50IGk7CisKKyAgIC8vIGV4dHJhIGZ1ZXIgZGVuIFphdWJlcndhbGQgZWluZ2ViYXV0CisgICBpZiAoZW52aXJvbm1lbnQoKSAmJiBvYmplY3RfbmFtZShlbnZpcm9ubWVudCgpKT09Uk9PTSgid2VnMiIpKSB7CisgICAgICAvLyB3ZW5uIGVzIGRpZSBlaW56aWdlIEVpY2hlIGlzdCwgZGFubiBibGVpYnQgc2llIGhpZXIgc3RlaG4sCisgICAgICAvLyBiZXdhY2h0IGRlbiBXZWcgdW5kIGJld2VndCBzaWNoIG5pY2h0IG1laHIgaGllciB3ZWchCisgICAgICBvYmplY3QgKmludjsKKworICAgICAgaW52ID0gYWxsX2ludmVudG9yeShlbnZpcm9ubWVudCgpKSAtICh7IE1FIH0pOworICAgICAgZm9yIChpPXNpemVvZihpbnYpLTE7IGk+PTA7IGktLSkKKyAgICAgICAgIGlmIChCTFVFX05BTUUoaW52W2ldKT09TlBDKCJsYXVmZWljaGUiKSkgYnJlYWs7CisgICAgICBpZiAoaTwwKSByZXR1cm4gTUVfQ0FOVF9MRUFWRV9FTlY7CisgICB9CisgICAvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLworICAgaT0oaW50KXN0ZG5wYzo6bW92ZShkZXN0LCBtZXRoLCBkaXIsIG91dCwgaW4pOworICAgaWYgKGkhPTEpIHJldHVybiBpOworICAgbW92aW5nOjptbnBjX21vdmUoKTsKKyAgIHJldHVybiAxOworfQorCitpbnQgUHJldmVudEZvbGxvdyhvYmplY3QgZGVzdCkKK3sgIHJldHVybiBtb3Zpbmc6Om1ucGNfUHJldmVudEZvbGxvdyhkZXN0KTsgIH0KKwordm9pZCBOb3RpZnlQbGF5ZXJEZWF0aChvYmplY3Qgd2hvLCBvYmplY3Qga2lsbGVyLCBvYmplY3QgbG9zdF9leHApCit7CisgIGlmICghd2hvIHx8IGtpbGxlciE9TUUpIHJldHVybjsgLy8gdW5pbnRlcmVzc2FudAorICBsb2dfZmlsZSgicGFkcmVpYy9raWxsIiwgY3RpbWUodGltZSgpKSsiICIrY2FwaXRhbGl6ZShnZXR1aWQod2hvKSkrIiBnZXRvZXRldCB2b24gL3phdWJlcndhbGQvbGF1ZmVpY2hlXG4iKTsKK30KZGlmZiAtLWdpdCBhL2RvYy9iZWlzcGllbGUvemF1YmVyd2FsZC9ucGMvcGl4aWUuYyBiL2RvYy9iZWlzcGllbGUvemF1YmVyd2FsZC9ucGMvcGl4aWUuYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi43ZWQ5NTNkCi0tLSAvZGV2L251bGwKKysrIGIvZG9jL2JlaXNwaWVsZS96YXViZXJ3YWxkL25wYy9waXhpZS5jCkBAIC0wLDAgKzEsMTUwIEBACisvLyAoYykgYnkgUGFkcmVpYyAoUGFkcmVpY0BtZy5tdWQuZGUpCisKKyNpbmNsdWRlICIuLi9maWxlcy5oIgorI2luY2x1ZGUgPG1vdmluZy5oPgorI2luY2x1ZGUgPGNvbWJhdC5oPgorCitpbmhlcml0IE5QQygic3RkbnBjIik7CisKK3ZvaWQgY3JlYXRlKCkKK3sKKyAgIDo6Y3JlYXRlKCk7CisgICBTZXRQcm9wKFBfU0hPUlQsICJFaW4ga2xlaW5lciBQaXhpZSIpOworICAgU2V0UHJvcChQX1NJWkUsIDU1K3JhbmRvbSgxMSkpOworICAgU2V0UHJvcChQX0xPTkcsIEJTKAorICAgICAiRGVyIFBpeGllIGlzdCBldHdhICIrUXVlcnlQcm9wKFBfU0laRSkrImNtIGdyb3NzIHVuZCBzaWVodCB2ZXJtdXRsaWNoIGVpbmVtICIKKyAgICArImtsZWluZW4gcHVtZWxpZ2VuIE1lbnNjaGVua2luZCBhbSBhZWhubGljaHN0ZW4uIFdpZSBhbGxlIFBpeGllcyBzY2hlaW50IGVyICIKKyAgICArInNlaHIgdmVyc3BpZWx0IHp1IHNlaW4gdW5kIG5pY2h0cyBhbHMgVW5mdWcgaW0gS29wZiB6dSBoYWJlbiwgRHUgc29sbHRlc3QgIgorICAgICsiRGljaCBhbHNvIHZvciBpaG0gaWhuIGFjaHQgbmVobWVuLiBBdWNoIHdlbm4gZXIgYXVzc2llaHQgd2llIGVpbiBLaW5kLCBzaWNoICIKKyAgICArImJlbmltbXQgd2llIGVpbiBLaW5kLCBzbyBrYW5uIGVyIERpciBtaXQgc2VpbmVyIE1hZ2llIHNpY2hlciB1ZWJlbCB6dSBzcGllbG4uIikpOworICAgU2V0UHJvcChQX0lORk8sIC8qIGtsZWluZSBXYXJudW5nIGZ1ZXIgZGllIEthZW1wZmVyIDopICovCisgICAgICJNYW4gc29sbHRlIHNpY2ggaW1tZXIgdm9yIGRlciBNYWdpZSBkZXIgUGl4aWVzIGluIGFjaHQgbmVobWVuLCBzaWUgaXN0IG5pY2h0XG4iCisgICAgKyJ1bmJlZGluZ3QgZ2VmYWVocmxpY2gsIGFiZXIgZXMga29lbm5lbiBkaWUgdW5lcndhcnRlc3RlbiBEaW5nZSBnZXNjaGVobi4gU29cbiIKKyAgICArImlzdCBkdXJjaGF1cyB2b24gTGV1dGVuIGJla2FubnQgZGllIGVpbmVuIEthbXBmIGFscyBrbGVpbmUgUmF0dGUgYmVlbmRldGVuLFxuIgorICAgICsib2RlciBkZXJlbiBTY2h3ZXJ0IGltIEthbXBmIHBsb2V0emxpY2ggenUgU2NoZWlzc2UgemVyZmxvc3MuLi5cbiIpOworICAgU2V0UHJvcChQX05BTUVfQURKLCAia2xlaW4iKTsKKyAgIFNldFByb3AoUF9OQU1FLCAiUGl4aWUiKTsKKyAgIFNldFByb3AoUF9HRU5ERVIsIE1BTEUpOworICAgU2V0UHJvcChQX1JBQ0UsICJwaXhpZSIpOworICAgU2V0UHJvcChQX0FUVFJJQlVURVMsIChbImludCI6MzAsImNvbiI6MjAsInN0ciI6MTUsImRleCI6MzBdKSApOworICAgU2V0UHJvcChQX0xFVkVMLCAyMCk7CisgICBTZXRQcm9wKFBfTUFYX0hQLCA2MDApOworICAgU2V0UHJvcChQX0hQLCA2MDApOworICAgU2V0UHJvcChQX01BWF9TUCwgODAwKTsKKyAgIFNldFByb3AoUF9TUCwgODAwKTsKKyAgIFNldFByb3AoUF9BTElHTiwgMjUwKTsKKyAgIFNldFByb3AoUF9IQU5EUywgKHsiIG1pdCBzZWluZW4ga2xlaW5lbiBIYWVuZGVuIiwgMTUwLCBEVF9CTFVER0VPTn0pICk7CisgICBTZXRQcm9wKFBfWFAsIDYwMCoxNTAqNSk7CisgICBBZGRBZGplY3RpdmUoImtsZWluIik7CisgICBBZGRJZCgicGl4aWUiKTsKK30KKworLy8gdGVsZXBvcnRlciBaaWVsZSBpbSBHZWJpZXQuIERlciBQaXhpZSB3aWxsIGphIGVpbmZhY2ggbnVyIGVpbiBiaXNzY2hlbgorLy8gQWVyZ2VybiB1bmQgbmljaHQgaGVsZmVuIChlaW4gUGl4aWVrYW1wZiBpc3Qga2VpbiBBdXNnYW5nIDopCisjZGVmaW5lIERFU1QgKHsibGljaHR1bmdubyIsICJsaWNodHVuZ3NvIiwgImxpY2h0dW5nbiIsICJsaWNodHVuZ3MiLCBcCisgICAgICAgICAgICAgICAibGljaHR1bmdudyIsICJsaWNodHVuZ3N3IiwgImxpY2h0dW5nbyIsICJsaWNodHVuZ3ciLCBcCisgICAgICAgICAgICAgICAid2VnMiIsICJzdGVpbiJ9KQorCit2b2lkIEF0dGFjayhvYmplY3QgZW5lbXkpCit7CisgICBvYmplY3Qgb2IsIHdlYXBvbjsKKyAgIAorICAgb2I9U2VsZWN0RW5lbXkoKTsKKyAgIGlmIChvYikgc3dpdGNoKHJhbmRvbSg3KjgpKSB7IC8vIGplZGUgOHRlIFJ1bmRlIGVpbiBaYXViZXJzcHJ1Y2guLi4KKyAgICAgIGNhc2UgMDogLy8gaW4gRnJvc2NoIHZlcndhbmRlbG4uLi4KKyAgICAgICAgaWYgKCFvYi0+UXVlcnlQcm9wKFBfRlJPRykpIHsKKyAgICAgICAgICB0ZWxsX29iamVjdChvYiwgIkRlciBQaXhpZSBkcmVodCBEaXIgZWluZSBsYW5nZSBOYXNlIHVuZCB2ZXJ3YW5kZWx0IERpY2ggaW4gZWluZW4gRnJvc2NoLlxuIik7CisgICAgICAgICAgc2F5KEJTKCJEZXIgUGl4aWUgZHJlaHQgIitvYi0+bmFtZShXRU0pKyIgZWluZSBsYW5nZSBOYXNlIHVuZCB2ZXJ3YW5kZWx0ICIKKyAgICAgICAgICAgICAgICArb2ItPlF1ZXJ5UHJvbm91bihXRU4pKyIgaW4gZWluZW4gRnJvc2NoLCIpLCBvYik7CisgICAgICAgICAgb2ItPlNldFByb3AoUF9GUk9HLCAxKTsKKyAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKyAgICAgICAgYnJlYWs7CisgICAgICBjYXNlIDguLjEwOiAvLyBlaW5mYWNoIG51ciBuZXJ2aWdlciBUZWxlcG9ydCBpbm5lcmhhbGIgZGVzIEdlYmlldHMgOikKKyAgICAgICAgdGVsbF9vYmplY3Qob2IsCisgICAgICAgICAgIkRlciBQaXhpZSBzY2hsaWVzc3Qga3VyeiBzZWluZSBBdWdlbiB1bmQgZWggRHUgRGljaCB2ZXJzaWVoc3QsIHZlcnNjaHdpbW10XG4iCisgICAgICAgICArImFsbGVzIHVtIERpY2ggaGVydW0uLi5cbiIpOworICAgICAgICBzYXkoQlMoIkRlciBQaXhpZSBzY2hsaWVzc3Qga3VyeiBzZWluZSBBdWdlbiB1bmQgcGxvZXR6bGljaCBsb2VzdCBzaWNoICIKKyAgICAgICAgICAgICAgK29iLT5uYW1lKFdFUikrIiBpbiBMdWZ0IGF1Zi4iKSwgb2IpOworICAgICAgICBvYi0+bW92ZShST09NKERFU1RbcmFuZG9tKHNpemVvZihERVNUKSldKSwgTV9UUE9SVHxNX05PQ0hFQ0t8TV9TSUxFTlQpOworICAgICAgICByZXR1cm47CisgICAgICBjYXNlIDE2OiAvLyBHZXNjaGxlY2h0IGFlbmRlcm4uLi4gOikKKyAgICAgICAgdGVsbF9vYmplY3Qob2IsCisgICAgICAgICAgIkRlciBQaXhpZSBncmluc3QgYnJlaXQgYmlzIHVlYmVyIGJlaWRlIE9ocmVuIHVuZCBzY2hhdXQgRGljaCBhbiwgRHUgd2Vpc3N0XG4iCisgICAgICAgICArImdhciBuaWNodCB3aWUgRGlyIGdlc2NoaWVodCwgYWJlciBpcmdlbmRldHdhcyBhZW5kZXJ0IHNpY2ggYW4gRGVpbmVtIEtvZXJwZXIuXG4iKTsKKyAgICAgICAgc2F5KEJTKCJEZXIgUGl4aWUgZ3JpbnN0ICIrb2ItPm5hbWUoV0VOKSsiIGJyZWl0IGFuLiBQbG9ldHpsaWNoICIKKyAgICAgICAgICsob2ItPlF1ZXJ5UHJvcChQX0dFTkRFUik9PUZFTUFMRQorICAgICAgICAgPyAidmVyc2Nod2luZGVuIGlocmUgQnJ1ZXN0ZSB1bmQgZXMgd2FlY2hzdCBpaHIgcGxvZXR6bGljaCBlaW4gQmFydC4iCisgICAgICAgICA6ICJ2ZXJzY2h3aW5kZXQgc2VpbiBCYXJ0IHVuZCBpaG0gd2FjaHNlbiB6d2VpIG5ldWUgQnJ1ZXN0ZS4iKSksIG9iKTsKKyAgICAgICAgaWYgKG9iLT5RdWVyeVByb3AoUF9HRU5ERVIpPT1GRU1BTEUpCisgICAgICAgICAgb2ItPlNldFByb3AoUF9HRU5ERVIsIE1BTEUpOworICAgICAgICBlbHNlIG9iLT5TZXRQcm9wKFBfR0VOREVSLCBGRU1BTEUpOworICAgICAgICByZXR1cm47CisgICAgICBjYXNlIDI0OgorICAgICAgICBpZiAob2JqZWN0cCh3ZWFwb249b2ItPlF1ZXJ5UHJvcChQX1dFQVBPTikpKSB7CisgICAgICAgICAgIHdlYXBvbi0+RG9VbndpZWxkKDEpOworICAgICAgICAgICAvLyB2ZXJmbHVjaHRlIFdhZmZlbiBuaWNodCBiZXRyZWZmZW4gOikpCisgICAgICAgICAgIGlmICghb2JqZWN0cCh3ZWFwb24tPlF1ZXJ5UHJvcChQX1dJRUxERUQpKSkgeworICAgICAgICAgICAgICBzdHJpbmcgc3RyMSwgc3RyMjsKKyAgICAgICAgICAgICAgc3RyMT1zdHIyPSh3ZWFwb24pLT5uYW1lKFdFUik7CisgICAgICAgICAgICAgIGlmIChzdHIxWzAuLjJdPT0iZWluIikgeworICAgICAgICAgICAgICAgIHN0cjE9IkQiK3N0cjE7CisgICAgICAgICAgICAgICAgc3RyMj0icyIrc3RyMjsKKyAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICB0ZWxsX29iamVjdChvYiwgQlMoCisgICAgICAgICAgICAgICAiRGVyIFBpeGllIHN0YXJydCBEaXIgaW4gZGllIEF1Z2VuIHVuZCBzY2huaXBwc3QgZWlubWFsIGt1cnogbWl0IHNlaW5lbiAiCisgICAgICAgICAgICAgICsiRmluZ2Vybi4gUGxvZXR6bGljaCB6ZXJyaW50ICIrc3RyMSsiIGluIERlaW5lbiBIYWVuZGVuIHp1IGVpbmVtIEhhdWZlbiAiCisgICAgICAgICAgICAgICsiU2NoZWlzc2UuIikpOworICAgICAgICAgICAgICBzYXkoQlMoIkRlciBQaXhpZSBzdGFycnQgIit3ZWFwb24tPm5hbWUoV0VNKSsiIGluIGRpZSBBdWdlbiB1bmQgIgorICAgICAgICAgICAgICAgICAgICArInNjaG5pcHBzdCBlaW5tYWwga3VyeiBtaXQgZGVuIEZpbmdlcm4uIFBsb2V0emxpY2ggIgorICAgICAgICAgICAgICAgICAgICArInplcnJpbnQgIit3ZWFwb24tPm5hbWUoV0VNKSsiICIrc3RyMgorICAgICAgICAgICAgICAgICAgICArIiBpbiBlaW5lbiBIYXVmZW4gU2NoZWlzc2UuIiksIG9iKTsKKyAgICAgICAgICAgICAgd2VhcG9uLT5yZW1vdmUoKTsKKyAgICAgICAgICAgICAgaWYgKHdlYXBvbikgZGVzdHJ1Y3Qod2VhcG9uKTsKKyAgICAgICAgICAgICAgcmV0dXJuOworICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgICAgYnJlYWs7CisgICAgICBjYXNlIDMyOgorICAgICAgICBpZiAoIW9iLT5RdWVyeVByb3AoUF9CTElORCkpIHsKKyAgICAgICAgICB0ZWxsX29iamVjdChvYiwgQlMoCisgICAgICAgICAgICAgIkRlciBQaXhpZSBoYWVsdCBzaWNoIGRpZSBIYW5kIHZvciBkaWUgQXVnZW4gdW5kIGdyaW5zdCBicmVpdC4gUGxvZXR6bGljaCAiCisgICAgICAgICAgICArIm1lcmtzdCBEdSwgd2llIGFsbGVzIGdhbnogZHVua2VsIHVtIERpY2ggcnVtIHdpcmQuLi4iKSk7CisgICAgICAgICAgc2F5KEJTKCJEZXIgUGl4aWUgaGFlbHQgc2ljaCBkaWUgSGFuZCB2b3IgZGllIEF1Z2VuIHVuZCBncmluc3QgYnJlaXQuICIKKyAgICAgICAgICAgICAgICArb2ItPm5hbWUoV0VSKQorICAgICAgICAgICAgICAgICsiIHNjaGF1dCBkYXJhdWZoaW4gemllbWxpY2ggaXJyaXRpZXJ0IGluIGRpZSBHZWdlbmQuIiksIG9iKTsKKyAgICAgICAgICBvYi0+U2V0UHJvcChQX0JMSU5ELCAxKTsKKyAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKyAgICAgICAgYnJlYWs7CisgICAgICBjYXNlIDQwOgorICAgICAgICBpZiAob2ItPlF1ZXJ5UHJvcChQX1BPSVNPTik8MyAmJiBvYi0+UXVlcnlQcm9wKFBfTUFYX1BPSVNPTik+PTMpIHsKKyAgICAgICAgICB0ZWxsX29iamVjdChvYiwgQlMoCisgICAgICAgICAgICAgIkRlciBQaXhpZSBzdHJlaWNodCBzaWNoIG1pdCBkZXIgSGFuZCB6dWZyaWVkZW4gdWViZXIgc2VpbmVuIEJhdWNoIHVuZCBzY2hhdXQgIgorICAgICAgICAgICAgKyJEaWNoIGRhYmVpIGFuLiBQbG9ldHpsaWNoIHdpcmQgRGlyIHJpY2h0aWcgdWViZWwuLi4iKSk7CisgICAgICAgICAgc2F5KEJTKCJEZXIgUGl4aWUgc3RyZWljaHQgc2ljaCBtaXQgc2VpbmVyIEhhbmQgenVmcmllZGVuIHVlYmVyIHNlaW5lbiBCYXVjaCB1bmRcbiIKKyAgICAgICAgICAgICAgICArInNjaGF1dCAiK29iLT5uYW1lKFdFTSkrIiBkYWJlaSBpbiBkaWUgQXVnZW4uIFBsb2V0emxpY2ggd2lyZCAiK29iLT5uYW1lKFdFTSkKKyAgICAgICAgICAgICAgICArIiBnYW56IHVlYmVsLiIpLCBvYik7CisgICAgICAgICAgb2ItPlNldFByb3AoUF9QT0lTT04sIDMpOworICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorICAgICAgICBicmVhazsKKyAgICAgIGNhc2UgNDg6CisgICAgICAgIGlmICghb2ItPlF1ZXJ5UHJvcChQX0RFQUYpKSB7CisgICAgICAgICAgdGVsbF9vYmplY3Qob2IsICJEZXIgUGl4aWUgaGFlbHQgc2ljaCBkaWUgT2hyZW4genUgdW5kIGdyaW5zdCBicmVpdC5cbiIpOworICAgICAgICAgIHNheShCUygiRGVyIFBpeGllIGhhZWx0IHNpY2ggZGllIE9ocmVuIHp1IHVuZCBncmluc3QgZGFiZWkgIgorICAgICAgICAgICAgICAgICtvYi0+bmFtZShXRU4pKyIgYW4uIiksIG9iKTsKKyAgICAgICAgICBvYi0+U2V0UHJvcChQX0RFQUYsIDEpOworICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorICAgICAgICBicmVhazsKKyAgICAgIGRlZmF1bHQ6CisgICB9CisgICBpZiAoZW5lbXkgJiYgcHJlc2VudChlbmVteSwgZW52aXJvbm1lbnQoKSkpIDo6QXR0YWNrKGVuZW15KTsKK30KKwordm9pZCBOb3RpZnlQbGF5ZXJEZWF0aChvYmplY3Qgd2hvLCBvYmplY3Qga2lsbGVyLCBvYmplY3QgbG9zdF9leHApCit7CisgIGlmICghd2hvIHx8IGtpbGxlciE9TUUpIHJldHVybjsgLy8gdW5pbnRlcmVzc2FudAorICBsb2dfZmlsZSgicGFkcmVpYy9raWxsIiwgY3RpbWUodGltZSgpKSsiICIrY2FwaXRhbGl6ZShnZXR1aWQod2hvKSkrIiBnZXRvZXRldCB2b24gL3phdWJlcndhbGQvcGl4aWVcbiIpOworfQpkaWZmIC0tZ2l0IGEvZG9jL2JlaXNwaWVsZS96YXViZXJ3YWxkL25wYy9yaWVzZS5jIGIvZG9jL2JlaXNwaWVsZS96YXViZXJ3YWxkL25wYy9yaWVzZS5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmE2OGEzZTIKLS0tIC9kZXYvbnVsbAorKysgYi9kb2MvYmVpc3BpZWxlL3phdWJlcndhbGQvbnBjL3JpZXNlLmMKQEAgLTAsMCArMSw5MiBAQAorLy8gKGMpIDIwMDMgYnkgUGFkcmVpYyAoUGFkcmVpY0BtZy5tdWQuZGUpCisKKyNpbmNsdWRlICIuLi9maWxlcy5oIgorI2luY2x1ZGUgPHByb3BlcnRpZXMuaD4KKworaW5oZXJpdCBOUEMoInN0ZG5wYyIpOworCit2b2lkIGNyZWF0ZSgpCit7CisgICA6OmNyZWF0ZSgpOworICAgY3JlYXRlX2RlZmF1bHRfbnBjKDMwLCAyNTAwKTsKKyAgIFNldFByb3AoUF9BUlRJQ0xFLCAwKTsKKyAgIFNldFByb3AoUF9TSE9SVCwgIkdyaW1tYmFydCBGZWxzZW5zY2hpZWJlciIpOworICAgU2V0UHJvcChQX0xPTkcsCisgICAgICJWb3IgRGlyIHNpdHp0IGRlciBSaWVzZSBHcmltbWJhcnQgRmVsc2Vuc2NoaWViZXIuIEVpZ2VudGxpY2ggc2NoZWludCBlclxuIgorICAgICsiZWluIHNlaHIgZ3V0bXVldGlnZXIgdW5kIGZyZXVuZGxpY2hlciBSaWVzZSB6dSBzZWluLiBBYmVyIGlyZ2VuZHdpZSB3aXJrdFxuIgorICAgICsiZXIgZGVyemVpdCBzZWhyIHRyYXVyaWcuXG4iKTsKKworICAgU2V0UHJvcChQX05BTUUsICJHcmltbWJhcnQgRmVsc2Vuc2NoaWViZXIiKTsKKyAgIFNldFByb3AoUF9HRU5ERVIsIE1BTEUpOworICAgU2V0UHJvcChQX1NJWkUsIDI5Nyk7CisgICBTZXRQcm9wKFBfQUxJR04sIDIwMCk7CisgICBTZXRQcm9wKFBfUkVTSVNUQU5DRV9TVFJFTkdUSFMsCisgICAgIChbRFRfSE9MWTotMS4wLAorICAgICAgIERUX1VOSE9MWTowLjUsCisgICAgICAgRFRfTUFHSUM6MC4yNSwKKyAgICAgICBEVF9QT0lTT046LTAuMjUsCisgICAgICAgRFRfV0hJUDotMC42LAorICAgICAgIERUX0JMVURHRU9OOi0wLjMsCisgICAgICAgRFRfUElFUkNFOi0wLjEsCisgICAgICAgRFRfU0xBU0g6LTAuMQorICAgICBdKSk7CisKKyAgIEFkZEluZm8oKHsiZmVsc2VuIiwgImZlbHMifSksCisgICAgICJJY2ggbGllYmUgZXMgbWVpbmUgTXVza2VsbiBhbnp1c3Bhbm5lbiB1bmQgRmVsc2VuIHp1IHNjaGllYmVuLiIsCisgICAgICJhbnR3b3J0ZXQ6ICIpOworICAgQWRkSW5mbygic2NoaWViZW4iLAorICAgICAiSWNoIGhhYmUgZG9jaCBrZWluZSBGZWxzZW4gbWVociBkaWUgaWNoIHNjaGllYmVuIGtvZW5udGUuIik7CisgICBBZGRJbmZvKCh7InRyYXVlciIsICJ0cmF1cmlna2VpdCJ9KSwKKyAgICAgIkZydWVoZXIgZGEgaGFiZSBpY2ggZGVuIGdhbnplbiBUYWcgaGllciBtZWluZSBGZWxzZW4gaGluLSB1bmQgIgorICAgICsiaGVyZ2VzY2hvYmVuLCBhYmVyIG51biBoYXQgVWxpbmlhIG1pciB2ZXJib3RlbiBoaWVyIGltIFdhbGQgbWl0ICIKKyAgICArImRlbiBGZWxzZW4genUgc3BpZWxlbiB1bmQgaWNoIG11c3N0ZSBzaWUgYWxsZSB3ZWd0cmFnZW4gOm8oIiwKKyAgICAgImphbW1lcnQ6ICIpOworICAgQWRkSW5mbygidGFnIiwgIkphIHNvIGVpbiBUYWcgaXN0IGdhbnogc2Nob2VuIGxhbmcgb2huZSBGZWxzZW4iLAorICAgICAic2FndDogIik7CisgICBBZGRJbmZvKCJ1bGluaWEiLAorICAgICAgIkVpbmUgcmljaHRpZyBibG9lZGUgRmVlIHVuZCBoYWV0dGUgc2llIGlocmUgZG9vZmVuIFphdWJlcmtyYWVmdGUgbmljaHQsIgorICAgICArImtvZW5udGUgc2llIHVucyBoaWVyIGF1Y2ggbmljaHQgYWxsZSBzbyBydW1rb21tYW5kaWVyZW4gKm1vcHBlciouIiwKKyAgICAgInNhZ3Q6ICIpOworICAgQWRkSW5mbygiZ3J1bmQiLAorICAgICAgIk51ciB3ZWlsIG1pciBlaW5tYWwgYXVzdmVyc2VoZW4gZWluIGtsaXR6ZWtsZWluZXIgRmVscyBpbiBkZW4gVHVlbXBlbCAiCisgICAgICsiZ2VmYWxsZW4gaXN0LCBtdXNzdGUgaWNoIGFsbCBtZWluZSBzY2hvZW5lbiBGZWxzZW4gYXVzIGRlbSBXYWxkIGJyaW5nZW4uIiwKKyAgICAgInNhZ3Q6ICIpOworICAgQWRkSW5mbygidHVlbXBlbCIsCisgICAgICAiQmxvZWRlciBUdWVtcGVsLCB3ZXIgYnJhdWNodCBkZW4gc2Nob24hIiwgImFudHdvcnRldCBnZXJlaXp0OiAiKTsKKyAgIEFkZEluZm8oInphdWJlcmtyYWVmdGUiLAorICAgICAgIkljaCBmcmV1IG1pY2ggc2Nob24gcmljaHRpZyBhdWYgZGVuIFRhZywgYW4gZGVtIFVsaW5pYXMgWmF1YmVya3JhZWZ0ZSAiCisgICAgICsibmFjaGxhc3NlbiEiLAorICAgICAgInNhZ3Q6ICIpOworICAgQWRkSW5mbygoeyJ3YWxkIiwgInphdWJlcndhbGQifSksCisgICAgICAiV2VubiBlcyBoaWVyIHdpZWRlciBnYW56IHZpZWxlIHNjaG9lbmUgRmVsc2VuIGdhZWJlLCB3YWVyIGVyIHdpZWRlciBkYXMgIgorICAgICArInJlaW5zdGUgUGFyYWRpZXMuIiwgImFudHdvcnRldDogIik7CisgICBBZGRJbmZvKCJwYXJhZGllcyIsCisgICAgICAiSmEgZnJ1ZWhlciB3YXIgZGVyIFdhbGQgaGllciBlaW5tYWwgZGFzIHJlaW5zdGUgUGFyYWRpZXMuIiwgImFudHdvcnRldDogIik7CisKKyAgIFNldENoYXRzKDMsCisgICAgICh7TmFtZShXRVIpKyIgc2FndDogSWNoIGJpbiBzbyB0cmF1cmlnLlxuIiwKKyAgICAgICBOYW1lKFdFUikrIiBzY2hsdWNoenQ6IG1laW5lIHNjaG9lbmVuIEZlbHNlbi4uIHd1YWFhaGhoaGhcbiIsCisgICAgICAgTmFtZShXRVIpKyIgc2FndDogbmllIHdpZWRlciB3ZXJkZSBpY2ggRmVsc2VuIHNjaGllYmVuIGtvZW5uZW4uXG4iLAorICAgICAgIE5hbWUoV0VSKSsiIHNhZ3Q6IEYgRSBMIFMgRSBOICFcbiIsCisgICAgICAgTmFtZShXRVIpKyIgamFtbWVydDogRGllIFdlbHQgaXN0IHNvIGZ1cmNodGJhciB1bmdlcmVjaHQhXG4iLAorICAgICAgIE5hbWUoV0VSKSsiIGZyYWd0OiBXaWUgc29sbCBpY2ggc28gYmxvc3Mgd2VpdGVybGViZW4/XG4iCisgICAgIH0pKTsKKyAgIAorICAgQWRkSWQoInJpZXNlIik7CisgICBBZGRJZCgiZ3JpbW1iYXJ0Iik7CisgICBBZGRJZCgiZmVsc2Vuc2NoaWViZXIiKTsKK30KKwordm9pZCBOb3RpZnlQbGF5ZXJEZWF0aChvYmplY3Qgd2hvLCBvYmplY3Qga2lsbGVyLCBvYmplY3QgbG9zdF9leHApCit7CisgIGlmICghd2hvIHx8IGtpbGxlciE9TUUpIHJldHVybjsgLy8gdW5pbnRlcmVzc2FudAorICBsb2dfZmlsZSgicGFkcmVpYy9raWxsIiwgY3RpbWUodGltZSgpKSsiICIrY2FwaXRhbGl6ZShnZXR1aWQod2hvKSkKKyAgICArImdldG9ldGV0IHZvbiAvemF1YmVyd2FsZC9yaWVzZVxuIik7Cit9CisKK3ZvaWQgZGllKCkKK3sKKyAgbG9nX2ZpbGUoInBhZHJlaWMva2lsbCIsIGN0aW1lKHRpbWUoKSkrIiBHcmltbWJhcnQgd3VyZGUgdm9uICAiK2dldF9raWxsZXIoKQorICAgICsiIGdldG9ldGV0LlxuIik7CisgIDo6ZGllKCk7Cit9CmRpZmYgLS1naXQgYS9kb2MvYmVpc3BpZWxlL3phdWJlcndhbGQvbnBjL3N0ZG5wYy5jIGIvZG9jL2JlaXNwaWVsZS96YXViZXJ3YWxkL25wYy9zdGRucGMuYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5hMmIzZDJmCi0tLSAvZGV2L251bGwKKysrIGIvZG9jL2JlaXNwaWVsZS96YXViZXJ3YWxkL25wYy9zdGRucGMuYwpAQCAtMCwwICsxLDM5IEBACisvLyAoYykgYnkgUGFkcmVpYyAoUGFkcmVpY0BtZy5tdWQuZGUpCisKKyNpbmNsdWRlICIuLi9maWxlcy5oIgorCitpbmhlcml0ICIvc3RkL25wYyI7Citpbmhlcml0ICIvcC9zZXJ2aWNlL211cGZlbC9nZXRraWxsIjsKKwordm9pZCBjcmVhdGUoKQoreworICAgOjpjcmVhdGUoKTsKKyAgIFNldFByb3AoWkFVQkVSV0FMRE5QQywgMSk7CisgICBTZXRQcm9wKFBfQUdHUkVTU0lWRSwgKFtQX1JBQ0U6KFsiRHVua2VsZWxmIjoxLCAwOjAuMF0pIF0pKTsKK30KKworaW50IEF1dG9BdHRhY2sob2JqZWN0IG9iKQoreworICAgaWYgKG9iICYmIG9iLT5RdWVyeVByb3AoWkFVQkVSV0FMRCk+dGltZSgpKSByZXR1cm4gMTsKKyAgIHJldHVybiA6OkF1dG9BdHRhY2sob2IpOworfQorCitpbnQgSW5zZXJ0RW5lbXkob2JqZWN0IG9iKQoreworICAgaW50IHJldCwgaXNfZW5lbXk7CisgICBpc19lbmVteT1Jc0VuZW15KG9iKTsKKyAgIHJldD0oaW50KTo6SW5zZXJ0RW5lbXkob2IpOworICAgaWYgKCFpc19lbmVteSkgeyAvLyBhbGxlIGFuZGVyZW4gWmF1YmVyd2FsZC1OUENzIGltIFJhdW0gdmVyc3RhZW5kaWdlbgorICAgICAgZmlsdGVyX29iamVjdHMoCisgICAgICAgIGZpbHRlcl9vYmplY3RzKGFsbF9pbnZlbnRvcnkoZW52aXJvbm1lbnQoKSktdXNlcnMoKSwgIlF1ZXJ5UHJvcCIsIFpBVUJFUldBTEROUEMpLAorICAgICAgICAiSW5zZXJ0RW5lbXkiLCBvYgorICAgICAgKTsKKyAgIH0KKyAgIHJldHVybiByZXQ7Cit9CisKK2ludCBEZWZlbmQoaW50IGRhbSwgbWl4ZWQgZHRzLCBtaXhlZCBzcGVsbCwgb2JqZWN0IGVuZW15KQoreworICAgaWYgKGVuZW15KSBlbmVteS0+U2V0UHJvcChaQVVCRVJXQUxELCB0aW1lKCkrQUdHUkVTU0lWRV9USU1FKTsKKyAgIHJldHVybiAoaW50KTo6RGVmZW5kKGRhbSwgZHRzLCBzcGVsbCwgZW5lbXkpOworfQpkaWZmIC0tZ2l0IGEvZG9jL2JlaXNwaWVsZS96YXViZXJ3YWxkL25wYy90aXRpbmEuYyBiL2RvYy9iZWlzcGllbGUvemF1YmVyd2FsZC9ucGMvdGl0aW5hLmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYWRjZTA2MgotLS0gL2Rldi9udWxsCisrKyBiL2RvYy9iZWlzcGllbGUvemF1YmVyd2FsZC9ucGMvdGl0aW5hLmMKQEAgLTAsMCArMSwxMTQgQEAKKy8vIChjKSBieSBQYWRyZWljIChQYWRyZWljQG1nLm11ZC5kZSkKKworI2luY2x1ZGUgIi4uL2ZpbGVzLmgiCisjaW5jbHVkZSA8Y29tYmF0Lmg+CisjaW5jbHVkZSA8bmV3X3NraWxscy5oPgorI2luY2x1ZGUgIi9wL3phdWJlcmVyL3phdWJlcmVyLmgiCisKK2luaGVyaXQgTlBDKCJzdGRucGMiKTsKKwordm9pZCBjcmVhdGUoKQoreworICAgOjpjcmVhdGUoKTsKKyAgIFNldFByb3AoUF9TSE9SVCwgIlRpdGluYSBkaWUgV2FsZGZlZSIpOworICAgU2V0UHJvcChQX0xPTkcsCisgICAgICBCUygiVm9yIERpciBzdGVodCBUaXRpbmEgZGllIFdhbGRmZWUuIElociBsYW5nZXMgZ29sZGVuZXMgSGFhciB3ZWh0ICIKKyAgICAgKyJsZWljaHQgaW0gV2luZCB1bmQgZGFzIGVpbnppZ2Ugd2FzIHNpZSBiZWRlY2t0LCBpc3QgZWluIGxlaWNodGVzIEJsYWV0dGVya2xlaWQgIgorICAgICArImRhcyBpaHJlIHdlaWJsaWNoZW4gUnVuZHVuZ2VuIGF1c3Nlcm9yZGVudGxpY2ggZ3V0IHp1ciBHZWx0dW5nIGJyaW5ndC4gIgorICAgICArIklocmUgc2Nob2VuZW4gYmxhdWVuIEF1Z2VuLCB0dW4gZWluIHVlYnJpZ2VzIHVtIERpY2ggZ2FueiB3YWhuc2lubmlnIHp1IG1hY2hlbi4iKSk7CisgICBTZXRQcm9wKFBfTkFNRSwgIlRpdGluYSIpOworICAgU2V0UHJvcChQX0FSVElDTEUsIDApOworICAgU2V0UHJvcChQX0dFTkRFUiwgRkVNQUxFKTsKKyAgIFNldFByb3AoUF9MRVZFTCwgODApOworICAgU2V0UHJvcChQX0FUVFJJQlVURVMsIChbImludCI6NjAsImNvbiI6NDAsInN0ciI6MTYsImRleCI6NTBdKSApOworICAgU2V0UHJvcChQX0RJU0FCTEVfQVRUQUNLLCAtMTAwMDApOyAvLyBpcyBuaWNoIDopCisgICBTZXRQcm9wKFBfQk9EWSwgODApOworICAgU2V0UHJvcChQX01BWF9TUCwgMjAwMCk7CisgICBTZXRQcm9wKFBfU1AsIDIwMDApOworICAgU2V0UHJvcChQX01BWF9IUCwgNjAwKTsKKyAgIFNldFByb3AoUF9IUCwgNjAwKTsKKyAgIFNldFByb3AoUF9BTElHTiwgNDAwKTsKKyAgIFNldFByb3AoUF9SQUNFLCAiRmVlIik7CisgICBTZXRQcm9wKFBfU0laRSwgMTYwK3JhbmRvbSgxNikpOworICAgU2V0UHJvcChQX0FMQ09IT0wsIDApOworICAgU2V0UHJvcChQX0NPUlBTRSwgT0JKKCJmZWVubGVpY2hlIikpOworICAgU2V0UHJvcChQX01BWF9BTENPSE9MLCAwKTsgLy8ga2VpbiByYXVzY2hlbiA6KQorICAgQWRkQWRqZWN0aXZlKCJ3dW5kZXJzY2hvZW4iKTsKKyAgIEFkZElkKCh7InRpdGluYSIsICJmZWUiLCAid2FsZGZlZSIsIFdBTERJRCgiZmVlIil9KSk7CisgICBTZXRQcm9wKFBfSEFORFMsICh7IiBtaXQgaWhyZW4gemFydGVuIEhhZW5kZW4iLCAxNTAsIERUX0JMVURHRU9OfSkgKTsKKyAgIFNldFByb3AoUF9TS0lMTF9BVFRSSUJVVEVfT0ZGU0VUUywgKFtTQV9TUEVMTF9QRU5FVFJBVElPTjogMTAwXSkpOworICAgU2V0UHJvcChQX1hQLCA4MDAqMjAwKjUqMik7CisgICBTZXRQcm9wKFBfR1VJTEQsICJ6YXViZXJlciIpOworICAgU2V0UHJvcChQX1pfTk9fTUFURVJJQUwsIDEpOworICAgU2V0UHJvcChQX0RFRkFVTFRfSU5GTywgInNjaHdlaWd0IHVuZCBsYWVjaGVsdCBEaWNoIGVpbmZhY2ggbnVyIGZyZXVuZGxpY2ggYW4uXG4iKTsKKyAgIE1vZGlmeVNraWxsKCJ2ZXJsZXR6ZSIsCisgICAgICAoW1NJX1NLSUxMQUJJTElUWTo4MDAwLCBTSV9TUEVMTENPU1Q6MCwKKyAgICAgICAgU0lfU1BFTExGQVRJR1VFOjAsIFNJX05PX0NPTlNFUVVFTkNFUzoxMDAwMCwKKyAgICAgICAgU0lfU0tJTExSRVNUUl9VU0U6KFtQX0dVSUxEX0xFVkVMOjAsU1JfRlJFRV9IQU5EUzowXSksCisgICAgICAgIFNJX0FSTU9VUl9SRVNUUjowXSksMCwiemF1YmVyZXIiKTsKKyAgIFNldFByb3AoUF9HVUlMRCwgMCk7CisgICBTZXRQcm9wKFBfUkVTSVNUQU5DRV9TVFJFTkdUSFMsCisgICAgICAoW0RUX1VOSE9MWTogMC4yNSwKKyAgICAgICAgRFRfQUlSOiAgICAwLjMsCisgICAgICAgIERUX1BPSVNPTjogMC4xNV0pICk7IC8vIHNvbnN0IHNlbHRlbiBpbiBiZW51dHp1bmcgOikKKworICAgQWRkSXRlbShPQkooImthbW0iKSwgQ0xPTkVfV0lFTEQpOworICAgQWRkSXRlbShPQkooImtsZWlkIiksIENMT05FX1dFQVIpOworICAgaWYgKGZpbGVfc2l6ZShTQUVDS0NIRU4pPjApIEFkZEl0ZW0oU0FFQ0tDSEVOLCBDTE9ORV9ORVcpOworfQorCitzdGF0aWMgc3RyaW5nIF9xdWVyeV9sb25nKCkKK3sKKyAgIGlmICghUEwgfHwgUEwtPlF1ZXJ5UHJvcChQX0dFTkRFUik9PUZFTUFMRSkKKyAgICAgIHJldHVybiBRdWVyeShQX0xPTkcpCisgICAgICAgICsiSWhyIHVlYmVyaGVibGljaGVzIGxhZWNoZWxuIGJyaW5ndCBEaWNoIGplZG9jaCB0b3RhbCB6dXIgV2Vpc3NnbHV0LCBzbyBlaW5lXG4iCisgICAgICAgICsiWmlja2UgaGllciBkZW4gZ2FuemVuIFRhZyBydW16dXNpdHplbiB1bmQgc2ljaCBudXIgZGllIEhhYXJlIHp1IGthZW1tZW4uXG4iOworICAgcmV0dXJuIFF1ZXJ5KFBfTE9ORykKKyAgICAgKyJNaXQgaWhyZW0gY2hhcm1hbnRlbiBsYWVjaGVsbiwgemllaHQgc2llIERpY2ggc29mb3J0IGluIGlocmVuIEJhbm4gdW5kIER1XG4iCisgICAgICsid3VlcmRlc3QgaWhyIGplZGVuIFd1bnNjaCBlcmZ1ZWxsZW4sIHNvIHNpZSBkZW5uIGVpbmVuIGFldXNzZXJuIHd1ZXJkZS5cbiI7Cit9CisKK3ZvaWQgQXR0YWNrKG9iamVjdCBlbmVteSkKK3sKKyAgIGludCBub3JtYWxfc3BlZWQ7CisgICBub3JtYWxfc3BlZWQ9KGVuZW15LT5RdWVyeVByb3AoUF9TS0lMTF9BVFRSSUJVVEVfT0ZGU0VUUyl8fChbXSkpW1NBX1NQRUVEXXx8MTAwOworICAgaWYgKGVuZW15ICYmIGVuZW15LT5RdWVyeVNraWxsQXR0cmlidXRlKFNBX1NQRUVEKSA+IG5vcm1hbF9zcGVlZCkgeworICAgICAgd3JpdGUoIkRpZSBGZWUgbWFjaHQgZWluZSBiZXJ1aGlnZW5kZSBIYW5kYmV3ZWd1bmcgdW5kIHBsb2V0emxpY2ggZnVlaGxzdCBEdSBEaWNoXG4iCisgICAgICAgICAgICsicnVoaWcgdW5kIER1IG1lcmtzdCB3aWUgRHUgYWxsbWFlaGxpY2ggd2llZGVyIGxhbmdzYW1lciB3aXJzdC4uLlxuIik7CisgICAgICBlbmVteS0+TW9kaWZ5U2tpbGxBdHRyaWJ1dGUoU0FfU1BFRUQsIC0yMCwgMTgwKTsKKyAgIH0KKyAgIGlmIChlbmVteSkgOjpBdHRhY2soZW5lbXkpOworICAgU2V0UHJvcChQX0dVSUxELCAiemF1YmVyZXIiKTsKKyAgIGNvbW1hbmQoInZlcmxldHplIG1pdCAiKyh7ImZldWVyIiwgIm1hZ2llIiwgImVpcyIsICJ3YXNzZXIiLCAiZ2lmdCIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJ3aW5kIiwgInNhZXVyZSIsICJsYWVybSJ9KVtyYW5kb20oOCldICk7CisgICBTZXRQcm9wKFBfR1VJTEQsIDApOworfQorCitpbnQgRGVmZW5kKGludCBkYW0sIG1peGVkIGR0cywgbWl4ZWQgc3BlbGwsIG9iamVjdCBlbmVteSkKK3sKKyAgIGludCBub3JtYWxfc3BlZWQ7CisgICBub3JtYWxfc3BlZWQ9KGVuZW15LT5RdWVyeVByb3AoUF9TS0lMTF9BVFRSSUJVVEVfT0ZGU0VUUyl8fChbXSkpW1NBX1NQRUVEXXx8MTAwOworICAgaWYgKGVuZW15ICYmIGVuZW15LT5RdWVyeVNraWxsQXR0cmlidXRlKFNBX1NQRUVEKSA+IG5vcm1hbF9zcGVlZCkgeworICAgICAgd3JpdGUoTmFtZShXRVIpKyIgbWFjaHQgZWluZSBiZXJ1aGlnZW5kZSBIYW5kYmV3ZWd1bmcgdW5kIHBsb2V0emxpY2ggZnVlaGxzdCBEdSBEaWNoXG4iCisgICAgICAgICAgICsicnVoaWcgdW5kIER1IG1lcmtzdCB3aWUgRHUgYWxsbWFlaGxpY2ggd2llZGVyIGxhbmdzYW1lciB3aXJzdC4uLlxuIik7CisgICAgICBlbmVteS0+TW9kaWZ5U2tpbGxBdHRyaWJ1dGUoU0FfU1BFRUQsIC0yMCwgMTgwKTsKKyAgIH0KKworICAgaWYgKCghc3BlbGwgfHwgKG1hcHBpbmdwKHNwZWxsKSAmJiBzcGVsbFtTUF9QSFlTSUNBTF9BVFRBQ0tdKSkgJiYgIXJhbmRvbSg0KSkgeworICAgICAgdGVsbF9yb29tKGVudmlyb25tZW50KCksIE5hbWUoV0VSKSsiIHdlaWNodCBzY2huZWxsIGVpbmVuIFNjaHJpdHQgenVydWVjayB1bmQgd2VpY2h0IERlaW5lbSBBbmdyaWZmIGF1cy5cbiIpOworICAgICAgZGFtPTA7CisgICB9CisgICByZXR1cm4gKGludCk6OkRlZmVuZChkYW0sIGR0cywgc3BlbGwsIGVuZW15KTsKK30KKwordm9pZCBOb3RpZnlQbGF5ZXJEZWF0aChvYmplY3Qgd2hvLCBvYmplY3Qga2lsbGVyLCBvYmplY3QgbG9zdF9leHApCit7CisgIGlmICghd2hvIHx8IGtpbGxlciE9TUUpIHJldHVybjsgLy8gdW5pbnRlcmVzc2FudAorICBsb2dfZmlsZSgicGFkcmVpYy9raWxsIiwgY3RpbWUodGltZSgpKSsiICIrY2FwaXRhbGl6ZShnZXR1aWQod2hvKSkrIiBnZXRvZXRldCB2b24gL3phdWJlcndhbGQvdGl0aW5hXG4iKTsKK30KKwordm9pZCBkaWUoKQoreworICBsb2dfZmlsZSgicGFkcmVpYy9raWxsIiwgY3RpbWUodGltZSgpKSsiIFRpdGluYSB3dXJkZSB2b24gIitnZXRfa2lsbGVyKCkrIiBnZXRvZXRldC5cbiIpOworICA6OmRpZSgpOworfQpkaWZmIC0tZ2l0IGEvZG9jL2JlaXNwaWVsZS96YXViZXJ3YWxkL25wYy91bGluaWEuYyBiL2RvYy9iZWlzcGllbGUvemF1YmVyd2FsZC9ucGMvdWxpbmlhLmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uN2VhNTk2ZQotLS0gL2Rldi9udWxsCisrKyBiL2RvYy9iZWlzcGllbGUvemF1YmVyd2FsZC9ucGMvdWxpbmlhLmMKQEAgLTAsMCArMSwxNjAgQEAKKy8vIChjKSBieSBQYWRyZWljIChQYWRyZWljQG1nLm11ZC5kZSkKKworI2luY2x1ZGUgIi4uL2ZpbGVzLmgiCisjaW5jbHVkZSA8Y29tYmF0Lmg+CisjaW5jbHVkZSA8bW92aW5nLmg+CisjaW5jbHVkZSA8bmV3X3NraWxscy5oPgorI2luY2x1ZGUgIi9wL3phdWJlcmVyL3phdWJlcmVyLmgiCisKK2luaGVyaXQgTlBDKCJzdGRucGMiKTsKKworc3RyaW5nIGluZm9fdGFybnphdWJlcigpCit7CisgICBvYmplY3Qgb2I7CisgICBpZiAocHJlc2VudCgiXG50YXJuemF1YmVyIiwgUEwpKQorICAgICAgcmV0dXJuICJzYWd0OiBJY2ggaGFiZSBEaWNoIGRvY2ggYmVyZWlzdCB2ZXJ6YXViZXJ0LlxuIjsKKyAgIG9iPWNsb25lX29iamVjdChPQkooInRhcm56YXViZXIiKSk7CisgICBvYi0+bW92ZShQTCwgTV9OT0NIRUNLKTsKKyAgIG9iLT5Jbml0aWFsaXplKFBMKTsKKyAgIHJldHVybiAic2FndDogTnVuIGd1dCwgc28gc2VpIGVzLi4uXG4iCisgICAgICAgICArIm1hY2h0IGVpbmUgd2VpdGUgSGFuZGJld2VndW5nIHVuZCBEdSBmdWVobHN0IHdpZSBEdSBEaWNoIHZlcndhbmRlbHN0LlxuIgorICAgICAgICAgKyJzYWd0OiBWaWVsIEdsdWVjayEiOworfQorCit2b2lkIGNyZWF0ZSgpCit7CisgICA6OmNyZWF0ZSgpOworICAgU2V0UHJvcChQX1NIT1JULCAiVWxpbmlhIGRpZSBXYWxkZmVlIik7CisgICBTZXRQcm9wKFBfTE9ORywKKyAgICAgIEJTKCJVZWJlciBkZW0gVGVpY2ggc2Nod2VidCBVbGluaWEgZGllIFdhbGRmZWUuIElociBsYW5nZXMgZ29sZGVuZXMgSGFhciB3ZWh0ICIKKyAgICAgKyJsZWljaHQgaW0gV2luZCB1bmQgZGFzIGVpbnppZ2Ugd2FzIHNpZSBiZWRlY2t0LCBpc3QgZWluIGxlaWNodGVzIEJsYWV0dGVya2xlaWQgIgorICAgICArImRhcyBpaHJlIHdlaWJsaWNoZW4gUnVuZHVuZ2VuIGF1c3Nlcm9yZGVudGxpY2ggZ3V0IHp1ciBHZWx0dW5nIGJyaW5ndC4gIgorICAgICArIkluIGRlciBIYW5kIGhhZWx0IHNpZSBlaW5lbiBrbGVpbmVuIFphdWJlcnN0YWIsIG1pdCBkZW0gc2llIGhvY2ggdWViZXIgYWxsZW0gdGhyb250LiIpKTsKKyAgIFNldFByb3AoUF9OQU1FLCAiVWxpbmlhIik7CisgICBTZXRQcm9wKFBfQVJUSUNMRSwgMCk7CisgICBTZXRQcm9wKFBfR0VOREVSLCBGRU1BTEUpOworICAgU2V0UHJvcChQX0xFVkVMLCA4MCk7CisgICBTZXRQcm9wKFBfQVRUUklCVVRFUywgKFsiaW50Ijo4MCwiY29uIjo0MCwic3RyIjoxNiwiZGV4Ijo1MF0pICk7CisgICBTZXRQcm9wKFBfRElTQUJMRV9BVFRBQ0ssIC0xMDAwMCk7IC8vIGlzIG5pY2ggOikKKyAgIFNldFByb3AoUF9CT0RZLCA4MCk7CisgICBTZXRQcm9wKFBfTUFYX1NQLCAyMDAwKTsKKyAgIFNldFByb3AoUF9TUCwgMjAwMCk7CisgICBTZXRQcm9wKFBfTUFYX0hQLCA4MDApOworICAgU2V0UHJvcChQX0hQLCA4MDApOworICAgU2V0UHJvcChQX0FMSUdOLCA0MDApOworICAgU2V0UHJvcChQX1JBQ0UsICJGZWUiKTsKKyAgIFNldFByb3AoUF9TSVpFLCAxNjArcmFuZG9tKDE2KSk7CisgICBTZXRQcm9wKFBfQUxDT0hPTCwgMCk7CisgICBTZXRQcm9wKFBfQ09SUFNFLCBPQkooImZlZW5sZWljaGUiKSk7CisgICBTZXRQcm9wKFBfTUFYX0FMQ09IT0wsIDApOyAvLyBrZWluIHJhdXNjaGVuIDopCisgICBBZGRBZGplY3RpdmUoInd1bmRlcnNjaG9lbiIpOworICAgQWRkSWQoKHsiZmVlIiwgIndhbGRmZWUiLCAidWxpbmlhIiwgV0FMRElEKCJmZWUiKX0pKTsKKyAgIFNldFByb3AoUF9IQU5EUywgKHsiIG1pdCBpaHJlbiB6YXJ0ZW4gSGFlbmRlbiIsIDE1MCwgRFRfQkxVREdFT059KSApOworICAgU2V0UHJvcChQX1NLSUxMX0FUVFJJQlVURV9PRkZTRVRTLCAoW1NBX1NQRUxMX1BFTkVUUkFUSU9OOiAyNTBdKSk7CisgICBTZXRQcm9wKFBfWFAsIDgwMCoyMDAqNSoyKTsKKyAgIFNldFByb3AoUF9HVUlMRCwgInphdWJlcmVyIik7CisgICBTZXRQcm9wKFBfWl9OT19NQVRFUklBTCwgMSk7CisgICBTZXRQcm9wKFBfREVGQVVMVF9JTkZPLCAic2Nod2VpZ3QgdW5kIGxhZWNoZWx0IERpY2ggZWluZmFjaCBudXIgZnJldW5kbGljaCBhbi5cbiIpOworICAgQWRkSW5mbygoeyJxdWVzdCIsICJoaWxmZSIsICJhdWZnYWJlIiwgImR1bmtlbGVsZmVuYW11bGV0dCIsICJkZWxmZW5hbXVsZXR0In0pLAorICAgICAiT2hoIGluIGRlciBUYXQgaGFldHRlIGljaCBkYSBlaW5lIEF1ZmdhYmUgZnVlciBEaWNoLCBhYmVyIGljaCBtdXNzIERpY2ggIgorICAgICsid2FybmVuLCBkYXMgc2llIG5pY2h0IGdhbnogdW5nZWZhZWhybGljaCBpc3QuXG4iCisgICAgKyJFaW4gYmVmcmV1bmRldGVyIEtvYm9sZCBiZXJpY2h0ZXRlIG1pciB2b24gZWluZW0gbGFuZ2UgdmVyc2Nob2xsZW5lbiBCdWNoLCAiCisgICAgKyJkYXNzIGluIGRlciBCaWJsaW90aGVrIGRlciBEdW5rZWxlbGZlbiB3aWVkZXIgYXVmZ2V0YXVjaHQgaXN0LiBJbiBkaWVzZW0gIgorICAgICsiQnVjaCBpc3QgdW50ZXIgYW5kZXJlbSB2b24gZWluZW0gYWx0ZW4gQW11bGV0dCBkaWUgUmVkZSwgbWl0IGRlc3NlbiBIaWxmZSAiCisgICAgKyJkaWUgRHVua2VsZWxmZW4gaWhyZSBhbHRlIE1hY2h0IHdpZWRlcmVybGFuZ2VuIHVuZCBlcm5ldXQgRnVyY2h0IHVuZCAiCisgICAgKyJTY2hyZWNrZW4gdWViZXIgZGFzIGdlc2FtdGUgTW9yZ2VuZ3JhdWVuIGJyaW5nZW4ga29lbm50ZW4uICIKKyAgICArIldlbm4gRHUgZGllIEdlZmFociBuaWNodCBzY2hldXN0LCB3YWVyZSBlcyBhdXNzZXJvcmRlbnRsaWNoIG5ldHQgd2VubiBEdSAiCisgICAgKyJEaWNoIG5hY2ggWnplcmVuenplbiBiZWdlYmVuIHd1ZXJkZXN0IHVuZCBkb3J0IG5hY2ggZGVtIEFtdWxldHQgc3VjaHN0LlxuIgorICAgICsiU29sbHRlc3QgRHUgZGFzIEFtdWxldHQgdGF0c2FlY2hsaWNoIGZpbmRlbiwgc28gaXN0IGVzIHdpY2h0aWcgZGFzIGVzICIKKyAgICArImF1ZiBrZWluZW4gRmFsbCBpbiBkaWUgSGFuZCBkZXIgRHVua2VsZWxmZW4gZ2VyYWV0IHVuZCB6ZXJzdG9lcnQgd2lyZC4iLAorICAgICJhbnR3b3J0ZXQ6ICIpOworICAgQWRkSW5mbygiZ2VmYWhyIiwKKyAgICAgIk51biBEdSB3aXJzdCBEaWNoIG1pdHRlbiB1bnRlciBkaWUgRHVua2VsZWxmZW4gYmVnZWJlbiBtdWVzc2VuIHVtICIKKyAgICArInp1IGlocmVyIEJpYmxpb3RoZWsgZ2VsYW5nZW4genUga29lbm5lbi4gSW4gWnplcmVuenplbiB3aXJzdCBEdSAiCisgICAgKyJoaWVyYmVpIHZvZWxsaWcgYXVmIERpY2ggYWxsZWluIGdlc3RlbGx0IHNlaW4uXG4iCisgICAgKyJBbGxlcyB3YXMgaWNoIGhpZXJiZWkgZnVlciBEaWNoIHR1biBrYW5uLCBpc3QgZWluZW4gVGFybnphdWJlciB6dSAiCisgICAgKyJzcHJlY2hlbiBkZXIgRGljaCBhZXVzc2VybGljaCBpbiBlaW5lbiBEdW5rZWxlbGZlbiB2ZXJ3YW5kZWx0LiAiCisgICAgKyJBYmVyIHZvcnNpY2h0LCBzcGFldGVzdGVucyB3ZW5uIER1IERpY2ggaW4gZWluZW4gS2FtcGYgdmVyd2lja2Vsc3QsICIKKyAgICArIndpcmQgc2ljaCBkZXIgWmF1YmVyIGxvZXNlbi4iLCAic2FndDogIik7CisgICBBZGRJbmZvKCJ0YXJuemF1YmVyIiwgIydpbmZvX3Rhcm56YXViZXIsICIiKTsKKyAgIEFkZEluZm8oKHsiZnVyY2h0IiwgInNjaHJlY2tlbiIsICJtYWNodCJ9KSwKKyAgICAgIkphIGZydWVoZXIgd2FyZW4gZGllIER1bmtlbGVsZmVuIHNlaHIgc2VociBtYWVjaHRpZyB1bmQgYWxsZSAiCisgICAgKyJmcmllZGxpZWJlbmRlbiBHZXNjaG9lcGZlIGRpZXNlciBXZWx0IHNvbGx0ZW4gaG9mZmVuIGRhcyBzaWUgIgorICAgICsibmllIHdpZWRlciBpaHJlIGFsdGUgTWFjaHQgZXJsYW5nZW4gd2VyZGVuLiIsICJhbnR3b3J0ZXQ6ICIpOyAgCisgICBBZGRJbmZvKCJhbXVsZXR0IiwKKyAgICAgIk51biBsZWlkZXIgd2Vpc3MgaWNoIGF1Y2ggbmljaHRzIGdlbmF1ZXMgdWViZXIgZGFzIEFtdWxldHQuIEljaCBiaW4gIgorICAgICsibmljaHQgbWFsIHNpY2hlciBvYiBlcyBleGlzdGllcnQgb2RlciBqZSBleGlzdGllcnQgaGF0LiBBYmVyIHNvbGx0ZSAiCisgICAgKyJlcyBub2NoIGV4aXN0aWVyZW4sIG11c3MgZXMgYXVmIGplZGVuIEZhbGwgemVyc3RvZXJ0IHdlcmRlbiEiLCAic2FndDogIik7CisgICBBZGRJbmZvKCJrb2JvbGQiLAorICAgICAiSWNoIGhhYmUgdmVyc3Byb2NoZW4gaWhuIG5pY2h0IHp1IHZlcnJhdGVuIHVuZCBzbyBrYW5uIGljaCBEaXIgbmljaHRzICIKKyAgICArIndlaXRlciB1ZWJlciBpaG4gc2FnZW4uIiwgImFudHdvcnRldDogIik7CisgICBBZGRJbmZvKCh7ImJ1Y2giLCAiYmlibGlvdGhlayJ9KSwKKyAgICAgIkljaCBkZW5rZSBhbSBiZXN0ZW4gYmVnaWJzdCBEdSBEaWNoIGluIGRpZSBIb2VobGUgZGVzIExvZXdlbiB1bmQgdmVyc3VjaHN0ICIKKyAgICArImluIGRlciBCaWJsaW90aGVrIGRlciBEdW5rZWxlbGZlbiBzZWxic3QgZWluIEJsaWNrIGluIGRpZXMgQnVjaCB6dSB3ZXJmZW4uXG4iCisgICAgKyJXZW5uIGljaCBkYXMgbm9jaCByZWNodCBpbiBFcmlubmVydW5nIGhhYmUsIGhhbmRlbHQgZXMgc2ljaCBoaWVyYmVpIHVtICIKKyAgICArImRhcyBCdWNoIGVpbmVzIER1bmtlbGVsZmVuIG5hbWVzIFRleXJpb24uIiwgInNhZ3Q6ICIpOworICAgQWRkSW5mbygibG9ld2VuIiwgIkRhcyBpc3QgZG9jaCBibG9zcyBlaW5lIFJlZGV3ZW5kdW5nLiIsICJzYWd0OiAiKTsKKyAgIEFkZEluZm8oInJlZGV3ZW5kdW5nIiwgIk5hIGRhcyBzYWd0IG1hbiBoYWx0IHNvLi4uIiwgInNhZ3Q6ICIpOworICAgQWRkSW5mbygoeyJob2VobGUiLCAienplcmVuenplbiJ9KSwKKyAgICAgIkRlciBFaW5nYW5nIG5hY2ggWnplcmVuenplbiBsaWVndCBpbiBkZXIgbmFlaGUgdm9uIFdpbGhlbG1zYnVyZyBndXQgaGludGVyICIKKyAgICArImVpbmVtIFdhc3NlcmZhbGwgdmVyc3RlY2t0LiIsICJzYWd0OiAiKTsKKyAgIE1vZGlmeVNraWxsKCJ2ZXJsZXR6ZSIsCisgICAgICAoW1NJX1NLSUxMQUJJTElUWToxMDAwMCwgU0lfU1BFTExDT1NUOjAsCisgICAgICAgIFNJX1NQRUxMRkFUSUdVRTowLCBTSV9OT19DT05TRVFVRU5DRVM6MTAwMDAsCisgICAgICAgIFNJX1NLSUxMUkVTVFJfVVNFOihbUF9HVUlMRF9MRVZFTDowLFNSX0ZSRUVfSEFORFM6MF0pLAorICAgICAgICBTSV9BUk1PVVJfUkVTVFI6MF0pLDAsInphdWJlcmVyIik7CisgICBTZXRQcm9wKFBfR1VJTEQsIDApOworICAgU2V0UHJvcChQX1JFU0lTVEFOQ0VfU1RSRU5HVEhTLAorICAgICAgKFtEVF9VTkhPTFk6IDAuMjUsCisgICAgICAgIERUX1BPSVNPTjogMC4xNSwgCisgICAgICAgIERUX01BR0lDOiAtMC4zXSkgKTsKKworICAgQWRkSXRlbShPQkooInphdWJlcnN0YWIiKSwgQ0xPTkVfV0lFTEQpOworICAgQWRkSXRlbShPQkooImtsZWlkIiksIENMT05FX1dFQVIpOworICAgaWYgKGZpbGVfc2l6ZShTQUVDS0NIRU4pPjApIEFkZEl0ZW0oU0FFQ0tDSEVOLCBDTE9ORV9ORVcpOworfQorCit2b2lkIEF0dGFjayhvYmplY3QgZW5lbXkpCit7CisgICBpbnQgbm9ybWFsX3NwZWVkOworICAgbm9ybWFsX3NwZWVkPShlbmVteS0+UXVlcnlQcm9wKFBfU0tJTExfQVRUUklCVVRFX09GRlNFVFMpfHwoW10pKVtTQV9TUEVFRF18fDEwMDsKKyAgIGlmIChlbmVteSAmJiBlbmVteS0+UXVlcnlTa2lsbEF0dHJpYnV0ZShTQV9TUEVFRCkgPiBub3JtYWxfc3BlZWQpIHsKKyAgICAgIHdyaXRlKCJEaWUgRmVlIG1hY2h0IGVpbmUgYmVydWhpZ2VuZGUgSGFuZGJld2VndW5nIHVuZCBwbG9ldHpsaWNoIGZ1ZWhsc3QgRHUgRGljaFxuIgorICAgICAgICAgICArInJ1aGlnIHVuZCBEdSBtZXJrc3Qgd2llIER1IGFsbG1hZWhsaWNoIHdpZWRlciBsYW5nc2FtZXIgd2lyc3QuLi5cbiIpOworICAgICAgZW5lbXktPk1vZGlmeVNraWxsQXR0cmlidXRlKFNBX1NQRUVELCAtMjAsIDE4MCk7CisgICB9CisgICBpZiAoZW5lbXkpIDo6QXR0YWNrKGVuZW15KTsKKyAgIFNldFByb3AoUF9HVUlMRCwgInphdWJlcmVyIik7CisgICBjb21tYW5kKCJ2ZXJsZXR6ZSBtaXQgIisoeyJmZXVlciIsICJtYWdpZSIsICJlaXMiLCAid2Fzc2VyIiwgImdpZnQiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAid2luZCIsICJzYWV1cmUiLCAibGFlcm0ifSlbcmFuZG9tKDgpXSApOworICAgU2V0UHJvcChQX0dVSUxELCAwKTsKK30KKworaW50IERlZmVuZChpbnQgZGFtLCBtaXhlZCBkdHMsIG1peGVkIHNwZWxsLCBvYmplY3QgZW5lbXkpCit7CisgICBpbnQgbm9ybWFsX3NwZWVkOworICAgbm9ybWFsX3NwZWVkPShlbmVteS0+UXVlcnlQcm9wKFBfU0tJTExfQVRUUklCVVRFX09GRlNFVFMpfHwoW10pKVtTQV9TUEVFRF18fDEwMDsKKyAgIGlmIChlbmVteSAmJiBlbmVteS0+UXVlcnlTa2lsbEF0dHJpYnV0ZShTQV9TUEVFRCkgPiBub3JtYWxfc3BlZWQpIHsKKyAgICAgIHdyaXRlKE5hbWUoV0VSKSsiIG1hY2h0IGVpbmUgYmVydWhpZ2VuZGUgSGFuZGJld2VndW5nIHVuZCBwbG9ldHpsaWNoIGZ1ZWhsc3QgRHUgRGljaFxuIgorICAgICAgICAgICArInJ1aGlnIHVuZCBEdSBtZXJrc3Qgd2llIER1IGFsbG1hZWhsaWNoIHdpZWRlciBsYW5nc2FtZXIgd2lyc3QuLi5cbiIpOworICAgICAgZW5lbXktPk1vZGlmeVNraWxsQXR0cmlidXRlKFNBX1NQRUVELCAtMjAsIDE4MCk7CisgICB9CisKKyAgIGlmICgoIXNwZWxsIHx8IChtYXBwaW5ncChzcGVsbCkgJiYgc3BlbGxbU1BfUEhZU0lDQUxfQVRUQUNLXSkpICYmICFyYW5kb20oMykpIHsKKyAgICAgIHRlbGxfcm9vbShlbnZpcm9ubWVudCgpLCBOYW1lKFdFUikrIiB3ZWljaHQgc2NobmVsbCBlaW5lbiBTY2hyaXR0IHp1cnVlY2sgdW5kIHdlaWNodCBEZWluZW0gQW5ncmlmZiBhdXMuXG4iKTsKKyAgICAgIGRhbT0wOworICAgfQorICAgcmV0dXJuIChpbnQpOjpEZWZlbmQoZGFtLCBkdHMsIHNwZWxsLCBlbmVteSk7Cit9CisKK3ZvaWQgTm90aWZ5UGxheWVyRGVhdGgob2JqZWN0IHdobywgb2JqZWN0IGtpbGxlciwgb2JqZWN0IGxvc3RfZXhwKQoreworICBpZiAoIXdobyB8fCBraWxsZXIhPU1FKSByZXR1cm47IC8vIHVuaW50ZXJlc3NhbnQKKyAgbG9nX2ZpbGUoInBhZHJlaWMva2lsbCIsIGN0aW1lKHRpbWUoKSkrIiAiK2NhcGl0YWxpemUoZ2V0dWlkKHdobykpKyIgZ2V0b2V0ZXQgdm9uIC96YXViZXJ3YWxkL3VsaW5pYVxuIik7Cit9CisKK3ZvaWQgZGllKCkKK3sKKyAgbG9nX2ZpbGUoInBhZHJlaWMva2lsbCIsIGN0aW1lKHRpbWUoKSkrIiBVbGluaWEgd3VyZGUgdm9uICIrZ2V0X2tpbGxlcigpKyIgZ2V0b2V0ZXQuXG4iKTsKKyAgOjpkaWUoKTsKK30KZGlmZiAtLWdpdCBhL2RvYy9iZWlzcGllbGUvemF1YmVyd2FsZC9ucGMvd2FlY2h0ZXIuYyBiL2RvYy9iZWlzcGllbGUvemF1YmVyd2FsZC9ucGMvd2FlY2h0ZXIuYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41NWMxYTEwCi0tLSAvZGV2L251bGwKKysrIGIvZG9jL2JlaXNwaWVsZS96YXViZXJ3YWxkL25wYy93YWVjaHRlci5jCkBAIC0wLDAgKzEsODcgQEAKKy8vIChjKSBieSBQYWRyZWljIChQYWRyZWljQG1nLm11ZC5kZSkKKworI2luY2x1ZGUgIi4uL2ZpbGVzLmgiCisjaW5jbHVkZSA8Y29tYmF0Lmg+CisjaW5jbHVkZSA8bmV3X3NraWxscy5oPgorCitpbmhlcml0IE5QQygic3RkbnBjIik7CisKK3ZvaWQgY3JlYXRlKCkKK3sKKyAgIDo6Y3JlYXRlKCk7CisgICBTZXRQcm9wKFBfTkFNRSwgIldhZWNodGVyIGRlcyBXYWxkZXMiKTsKKyAgIFNldFByb3AoUF9TSE9SVCwgIkRlciBXYWVjaHRlciBkZXMgV2FsZGVzIik7CisgICBTZXRQcm9wKFBfTE9ORywKKyAgICAgIlZvciBEaXIgc3RlaHQgZWluZSBzZWhyIHNlaHIgYWx0ZSBFaWNoZS4gRG9jaCBkaWVzZSBFaWNoZSBpc3Qga2VpbmVcbiIKKyAgICArImdld29laG5saWNoZSBFaWNoZSwgd2llIER1IHNpZSBiZXJlaXRzIGFuIHZpZWxlbiBhbmRlcmVuIFN0ZWxsZW4gZ2VzZWhuIGhhc3QuXG4iCisgICAgKyJEaWVzZSBFaWNoZSBsZWJ0ISBEdSBrYW5uc3QgZGV1dGxpY2ggZWluZW4gTXVuZCwgZWluZSBOYXNlIHVuZCBzb2dhciB6d2VpXG4iCisgICAgKyJPaHJlbiBlcmtlbm5lbi4gU2llIGlzdCBlaWdlbnRsaWNoIHNlaHIgZnJpZWRsaWNoIGdlc29ubmVuLCBrYW5uIGFiZXIgYXVjaFxuIgorICAgICsic2VociBzZWhyIGJvZXNlIHdlcmRlbiwgd2VubiBlcyBqZW1hbmQgd2FndCBkaWUgUnVoZSBkZXMgV2FsZGVzIHp1IHN0b2VyZW4uXG4iKTsKKyAgIFNldFByb3AoUF9SQUNFLCAiZWljaGUiKTsKKyAgIFNldFByb3AoUF9BR0dSRVNTSVZFLCAwKTsKKyAgIFNldFByb3AoUF9MRVZFTCwgMTAwKTsKKyAgIFNldFByb3AoUF9BVFRSSUJVVEVTLCAoWyJpbnQiOjgwLCJjb24iOjEwMCwic3RyIjoxMDAsImRleCI6MjBdKSApOworICAgU2V0UHJvcChQX0dFTkRFUiwgTUFMRSk7CisgICBTZXRQcm9wKFBfTUFYX0hQLCAxMDAwKTsKKyAgIFNldFByb3AoUF9IUCwgMTAwMCk7CisgICBTZXRQcm9wKFBfQUxJR04sIDUwMCk7CisgICBTZXRQcm9wKFBfQk9EWSwgMTAwKTsKKyAgIFNldFByb3AoUF9TSVpFLCAxNTAwKTsKKyAgIFNldFByb3AoUF9ESVNBQkxFX0FUVEFDSywgLTEwMDAwKTsgLy8gaXMgbmljaCA6KQorICAgQWRkSWQoKHsiZWljaGUiLCAid2FlY2h0ZXIiLCJ3YWVjaHRlciBkZXMgd2FsZGVzIiwgV0FMRElEKCJ3YWVjaHRlcmVpY2hlIikgfSkpOworICAgU2V0UHJvcChQX0hBTkRTLCAoeyIgbWl0IGVpbmVtIHNlaW5lciBsYW5nZW4gQWVzdGUiLDU1MCxEVF9XSElQfSkgKTsKKyAgIFNldFByb3AoUF9TS0lMTF9BVFRSSUJVVEVfT0ZGU0VUUywgKFtTQV9TUEVFRDoyMTBdKSk7CisgICBTZXRQcm9wKFBfTk9DT1JQU0UsIDEpOworICAgU2V0UHJvcChQX1hQLCAxMDAwKjU1MCo1KTsKKyAgIFNldFByb3AoUF9ERUZBVUxUX0lORk8sICJibGVpYnQgYWJzb2x1dCByZWd1bmdzbG9zIHVuZCByZWFnaWVydCB1ZWJlcmhhdXB0IG5pY2h0LlxuIik7CisgICBTZXRQcm9wKFBfUkVTSVNUQU5DRV9TVFJFTkdUSFMsCisgICAgKFtEVF9TTEFTSDogICAgIDAuMSwKKyAgICAgIERUX01BR0lDOiAgICAtMS4wLAorICAgICAgRFRfQkxVREdFT046IC0wLjUsCisgICAgICBEVF9QT0lTT046ICAgIDAuMjUsCisgICAgICBEVF9IT0xZOiAgICAgLTEuMCwKKyAgICAgIERUX1JJUDogICAgICAgMC4yNSwKKyAgICAgIERUX0ZJUkU6ICAgICAgMC4yNSwKKyAgICAgIERUX1BJRVJDRTogICAtMC41LAorICAgICAgRFRfV0hJUDogICAgIC0xLjAgXSkgKTsKKyAgIEFkZENtZCgoeyJvc3RlbiIsICJ3ZXN0ZW4ifSksICJjbWRfYmxvY2tlbiIpOworfQorCitzdGF0aWMgc3RyaW5nIF9xdWVyeV9pbmZvKCkKK3sKKyAgIGlmICghUEwgfHwgUEwtPlF1ZXJ5UHJvcChaQVVCRVJXQUxEKTw9dGltZSgpKQorICAgICAgcmV0dXJuICJEaWUgYWx0ZSBFaWNoZSBpc3QgRGlyIHNlaHIgZnJpZWRsaWNoIGdlc29ubmVuLiBFcyBpc3QgamVkb2NoIGF1Y2ggc2ljaGVyXG4iCisgICAgICAgICAgICArImtsdWcgZGllc2VzIG5pY2h0IHp1IGFlbmRlcm4sIGRhIHNpZSBtaXQgaWhyZW4gQWVzdGVuIHdvaGwgYXVjaCBzZWhyIGtyYWVmdGlnXG4iCisgICAgICAgICAgICArInp1c2NobGFnZW4ga2Fubi5cbiI7CisgICByZXR1cm4gIkR1IGhhc3QgZGVuIFpvcm4gZGVyIGFsdGVuIFdhZWNodGVyZWljaGUgYXVmIERpY2ggZ2V6b2dlbiwgZGFzIHdhciBnYW56IHVuZFxuIgorICAgICAgICAgKyJnYXIgbmljaHQga2x1ZyB2b24gRGlyLiBKZXR6dCBsZWJlIGF1Y2ggbWl0IGRlbiBLb25zZXF1ZW56ZW4uLi4uXG4iOworfQorCitzdGF0aWMgaW50IGNtZF9ibG9ja2VuKCkKK3sKKyAgIGlmIChQTC0+UXVlcnlQcm9wKFBfUkFDRSk9PSJEdW5rZWxlbGYiICYmCisgICAgICAgUEwtPlF1ZXJ5UHJvcChBVVNHQU5HKT09cXVlcnlfdmVyYigpKSB7CisgICAgICB3cml0ZShCUyhOYW1lKFdFUiwgMSkrIiBsYWVzc3QgRGljaCBuaWNodCB2b3JiZWkuIikKKyAgICAgICAgICAgK2JyZWFrX3N0cmluZygiRHUgc29sbHRlc3QgaGllciBiZXNzZXIgdmVyc2Nod2luZGVuLCAiCisgICAgICAgICAgICAgICAgICAgICAgICArInNvIFR5cGVuIHdpZSBEdSBzaW5kIGhpZXIgbmljaHQgZ2VybiBnZXNlaG4hIiwKKyAgICAgICAgICAgICAgICAgICAgICAgIDc4LCBOYW1lKFdFUiwgMSkrIiBzYWd0OiAiKSk7CisgICAgICByZXR1cm4gMTsKKyAgIH0KKyAgIGlmIChQTCAmJiBQTC0+UXVlcnlQcm9wKFpBVUJFUldBTEQpICYmCisgICAgICAgUEwtPlF1ZXJ5UHJvcChBVVNHQU5HKT09cXVlcnlfdmVyYigpKSB7CisgICAgICB3cml0ZShCUyhOYW1lKFdFUiwgMSkrIiBzdGVodCBEaXIgZGEgbGVpZGVyIGltIFdlZyB1bmQgbGFlc3N0IERpY2ggbmljaHQgdm9yYmVpLiIpKTsKKyAgICAgIHJldHVybiAxOworICAgfQorfQorCitpbnQgcmVtb3ZlKCkKK3sKKyAgIGNhbGxfb3RoZXIoUk9PTSgid2VnMSIpLCAiZGVsYXlfcmVzZXQiKTsKKyAgIHJldHVybiAoaW50KTo6cmVtb3ZlKCk7Cit9CisKK3ZvaWQgTm90aWZ5UGxheWVyRGVhdGgob2JqZWN0IHdobywgb2JqZWN0IGtpbGxlciwgb2JqZWN0IGxvc3RfZXhwKQoreworICBpZiAoIXdobyB8fCBraWxsZXIhPU1FKSByZXR1cm47IC8vIHVuaW50ZXJlc3NhbnQKKyAgbG9nX2ZpbGUoInBhZHJlaWMva2lsbCIsIGN0aW1lKHRpbWUoKSkrIiAiK2NhcGl0YWxpemUoZ2V0dWlkKHdobykpKyIgZ2V0b2V0ZXQgdm9uIC96YXViZXJ3YWxkL3dhZWNodGVyXG4iKTsKK30KZGlmZiAtLWdpdCBhL2RvYy9iZWlzcGllbGUvemF1YmVyd2FsZC9vYmovZmVlbmxlaWNoZS5jIGIvZG9jL2JlaXNwaWVsZS96YXViZXJ3YWxkL29iai9mZWVubGVpY2hlLmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMGU3ZTAzNAotLS0gL2Rldi9udWxsCisrKyBiL2RvYy9iZWlzcGllbGUvemF1YmVyd2FsZC9vYmovZmVlbmxlaWNoZS5jCkBAIC0wLDAgKzEsMjQgQEAKKy8vIChjKSBieSBQYWRyZWljIChQYWRyZWljQG1nLm11ZC5kZSkKKworI2luY2x1ZGUgIi4uL2ZpbGVzLmgiCisjaW5jbHVkZSA8bW92aW5nLmg+CisKK2luaGVyaXQgInN0ZC9jb3Jwc2UiOworCitpbnQgbWFtcGYoIHN0cmluZyBzdHIgKQoreworICAgb2JqZWN0IG9iOworICAgaWYgKFF1ZXJ5RGVjYXkoKTwzKSByZXR1cm4gKGludCk6Om1hbXBmKHN0cik7CisgICBub3RpZnlfZmFpbCgiV2FzIG1vZWNodGVzdCBEdSBlc3Nlbj9cbiIpOworICAgaWYgKCFzdHIgfHwgIWlkKHN0cikpIHJldHVybiAwOworICAgaWYgKCFQTC0+ZWF0X2Zvb2QoOCkpIHJldHVybiAxOyAvLyBmZWhsZXJtZWxkdW5nIGdpYnQgZWF0X2Zvb2QgYXVzCisgICBpZiAoIW9iamVjdHAob2I9cHJlc2VudChXQUxESUQoImxlaWNoZW5tcCIpLCBQTCkpKSB7CisgICAgICBvYj1jbG9uZV9vYmplY3QoT0JKKCJsZWljaGVubXAiKSk7CisgICAgICBvYi0+bW92ZShQTCwgTV9OT0NIRUNLfE1fR0VUKTsKKyAgIH0KKyAgIG9iLT5uZXdfY29ycHNlKCk7CisgICBQTC0+cmVzdG9yZV9zcGVsbF9wb2ludHMoNTArcmFuZG9tKDEwMCkpOworICAgd3JpdGUoIkR1IG1lcmtzdCB3aWUgZGllIG5vY2ggaW0gS29lcnBlciB2ZXJibGllYmVuZSBFbmVyZ2llIGluIERpY2ggdWViZXJmbGllc3N0LlxuIik7CisgICByZW1vdmUoKTsKKyAgIHJldHVybiAxOworfQpkaWZmIC0tZ2l0IGEvZG9jL2JlaXNwaWVsZS96YXViZXJ3YWxkL29iai9oYWhuZW5mdXNzLmMgYi9kb2MvYmVpc3BpZWxlL3phdWJlcndhbGQvb2JqL2hhaG5lbmZ1c3MuYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44OTkyZTQ2Ci0tLSAvZGV2L251bGwKKysrIGIvZG9jL2JlaXNwaWVsZS96YXViZXJ3YWxkL29iai9oYWhuZW5mdXNzLmMKQEAgLTAsMCArMSwzMiBAQAorI2luY2x1ZGUgPGl0ZW1zL2tyYWV1dGVyL2tyYWV1dGVybGlzdGUuaD4KKyNpbmNsdWRlIDxpdGVtcy9rcmFldXRlci9rcmFldXRlci5oPgorI2luY2x1ZGUgIi4uL2ZpbGVzLmgiCisKK2luaGVyaXQgU1REUExBTlQ7CisKK3ZvaWQgY3JlYXRlKCkKK3sKKyAgIDo6Y3JlYXRlKCk7CisgICBjdXN0b21pemVNZShXQVNTRVJfSEFITkVORlVTU19XRUlTUyk7Cit9CisKKy8qdmFyYXJncyBpbnQgbW92ZShtaXhlZCBkZXN0LCBpbnQgbWV0aG9kKQoreworICAgLy8gZGllIEVpbndvaG5lciBkZXMgWmF1YmVyd2FsZHMgc2VoZW4gZXMgbmljaHQgZ2VybmUsIHdlbm4gamVtYW5kIGlocmUKKyAgIC8vIG1hZ2lzY2hlbiBQZmxhbnplbiBwZmx1ZWNrdC4uLgorICAgaW50IHJlczsKKyAgIHJlcz0oaW50KTo6bW92ZShkZXN0LCBtZXRob2QpOworICAgaWYgKHJlcyE9MSkgcmV0dXJuIHJlczsKKyAgIGlmIChlbnZpcm9ubWVudCgpKSAKKyAgICAgZW52aXJvbm1lbnQoKS0+U2V0UHJvcChaQVVCRVJXQUxELCB0aW1lKCkrQUdHUkVTU0lWRV9USU1FKTsKKyAgIHJldHVybiAxOworfSovCisKK3Byb3RlY3RlZCB2b2lkIE5vdGlmeU1vdmUob2JqZWN0IGRlc3QsIG9iamVjdCBvbGRlbnYsIGludCBtZXRob2QpIHsKKyAgaWYgKCAhb2xkZW52ICYmIG9iamVjdHAoZGVzdCkgJiYgcXVlcnlfb25jZV9pbnRlcmFjdGl2ZShkZXN0KSAmJgorICAgICAgIHN0cnN0cihvYmplY3RfbmFtZShlbnZpcm9ubWVudChkZXN0KSksInphdWJlcndhbGQiKT4tMSkgeworICAgIGRlc3QtPlNldFByb3AoWkFVQkVSV0FMRCwgdGltZSgpK0FHR1JFU1NJVkVfVElNRSk7CisgIH0KKyAgcmV0dXJuIDo6Tm90aWZ5TW92ZShkZXN0LCBvbGRlbnYsIG1ldGhvZCk7Cit9CisKZGlmZiAtLWdpdCBhL2RvYy9iZWlzcGllbGUvemF1YmVyd2FsZC9vYmova2FtbS5jIGIvZG9jL2JlaXNwaWVsZS96YXViZXJ3YWxkL29iai9rYW1tLmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYjI2ZDZmOAotLS0gL2Rldi9udWxsCisrKyBiL2RvYy9iZWlzcGllbGUvemF1YmVyd2FsZC9vYmova2FtbS5jCkBAIC0wLDAgKzEsMzkgQEAKKy8vIChjKSBieSBQYWRyZWljIChQYWRyZWljQG1nLm11ZC5kZSkKKworaW5oZXJpdCAic3RkL3dlYXBvbiI7CisKKyNpbmNsdWRlICIuLi9maWxlcy5oIgorI2luY2x1ZGUgPGNvbWJhdC5oPgorCit2b2lkIGNyZWF0ZSgpCit7CisgICA6OmNyZWF0ZSgpOworICAgU2V0UHJvcChQX1NIT1JULCAiRWluIGxhbmdlciBLYW1tIik7CisgICBTZXRQcm9wKFBfTkFNRSwgIkthbW0iKTsKKyAgIFNldFByb3AoUF9HRU5ERVIsIE1BTEUpOworICAgU2V0UHJvcChQX0xPTkcsCisgICAgICJEaWVzZXIgc2Nob2VuZSBLYW1tIGdlaG9lcnRlIGVpbm1hbCBlaW5lciBXYWxkZmVlIGRpZSBkYW1pdCBpbW1lciBpaHIgc2Nob2VuZXNcbiIKKyAgICArImxhbmdlcyBIYWFyIGthZW1tdGUuLi5cbiIpOworICAgQWRkQWRqZWN0aXZlKCJrYW1tIik7CisgICBBZGRJZCgia2FtbSIpOworICAgU2V0UHJvcChQX1dFQVBPTl9UWVBFLCBXVF9DTFVCKTsKKyAgIFNldFByb3AoUF9EQU1fVFlQRSwgRFRfUElFUkNFKTsKKyAgIFNldFByb3AoUF9OUl9IQU5EUywgMSk7CisgICBTZXRQcm9wKFBfV0MsIDEwMCk7CisgICBTZXRQcm9wKFBfVkFMVUUsIDEwMCk7CisgICBTZXRQcm9wKFBfTk9CVVksIDEpOworICAgU2V0UHJvcChQX01BVEVSSUFMLCAoeyBNQVRfTUlTQ19NQUdJQywgTUFUX0hPUk4gfSkgKTsKKyAgIEFkZENtZCgia2FlbW1lIiwgImNtZF9rYWVtbWVuIik7Cit9CisKK3N0YXRpYyBpbnQgY21kX2thZW1tZW4oc3RyaW5nIHN0cikKK3sKKyAgIG5vdGlmeV9mYWlsKCJXYXMgbW9lY2h0ZXN0IER1IGRlbm4ga2FlbW1lbj9cbiIpOworICAgaWYgKHN0ciE9ImhhYXJlIikgcmV0dXJuIDA7CisgICB3cml0ZSgiRWl0ZWwgd2llIER1IGJpc3QsIHZlcnN1Y2hzdCBEdSBEaXIgbWl0IGRlbSBLYW1tIGRpZSBIYWFyZSB6dSBrYWVtbWVuLCBkb2NoXG4iCisgICAgICAgICsiaXJnZW5kd2llIGlzdCBlciBlaW4gYmlzc2NoZW4genUgZ3Jvc3MgZnVlciBEZWluZSBIYWFyZS5cbiIpOworICAgc2F5KEJTKCJFaXRlbCB3aWUgIitQTC0+UXVlcnlQcm9ub3VuKCkrIiBpc3QsIGthZW1tdCBzaWNoICIrUEwtPm5hbWUoV0VSKQorICAgICAgICAgKyIgZGllIEhhYXJlLiBEb2NoIGlyZ2VuZHdpZSBpc3QgZGVyIEthbW0gZWluIGJpc3NjaGVuIHp1IGdyb3NzIGZ1ZXIgIgorICAgICAgICAgK1BMLT5RdWVyeVBvc3NQcm9ub3VuKE5FVVRFUiwgV0VOLCAxKSsiIGt1cnplbiBIYWFyZS4iKSk7CisgICByZXR1cm4gMTsKK30KZGlmZiAtLWdpdCBhL2RvYy9iZWlzcGllbGUvemF1YmVyd2FsZC9vYmova2xlaWQuYyBiL2RvYy9iZWlzcGllbGUvemF1YmVyd2FsZC9vYmova2xlaWQuYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5mNTJlMTU3Ci0tLSAvZGV2L251bGwKKysrIGIvZG9jL2JlaXNwaWVsZS96YXViZXJ3YWxkL29iai9rbGVpZC5jCkBAIC0wLDAgKzEsMzggQEAKKy8vIChjKSBieSBQYWRyZWljIChQYWRyZWljQG1nLm11ZC5kZSkKKworaW5oZXJpdCAic3RkL2FybW91ciI7CisKKyNpbmNsdWRlICIuLi9maWxlcy5oIgorI2luY2x1ZGUgPGNvbWJhdC5oPgorCit2b2lkIGNyZWF0ZSgpCit7CisgICA6OmNyZWF0ZSgpOworICAgU2V0UHJvcChQX05BTUUsICJCbGFldHRlcmtsZWlkIik7CisgICBTZXRQcm9wKFBfU0hPUlQsICJFaW4gQmxhZXR0ZXJrbGVpZCIpOworICAgU2V0UHJvcChQX0dFTkRFUiwgTkVVVEVSKTsKKyAgIFNldFByb3AoUF9MT05HLAorICAgICAiRGFzIEJsYWV0dGVya2xlaWQgc3RhbW10IHZvbiBlaW5lciBXYWxkZmVlIHVuZCB3YXIgZ2VuYXUgYXVmIGlocmUgUnVuZHVuZ2VuXG4iCisgICAgKyJ1bmQgaWhyZSBHcm9lc3NlIGFiZ2VwYXNzdC4gRHUgaGFzdCBsZWlkZXIgbmljaHQgZGllIGdlcmluZ3N0ZSBDaGFuY2UsIGRpZXNlc1xuIgorICAgICsiS2xlaWQgamVtYWxzIHRyYWdlbiB6dSBrb2VubmVuLlxuIik7CisgICBBZGRJZCgoeyJrbGVpZCIsICJibGFldHRlcmtsZWlkIn0pKTsKKyAgIFNldFByb3AoUF9NQVRFUklBTCwgTUFUX01JU0NfV09PRCk7CisgICBTZXRQcm9wKFBfQVJNT1VSX1RZUEUsIEFUX0FSTU9VUik7CisgICBTZXRQcm9wKFBfVkFMVUUsIDUwMCk7CisgICBTZXRQcm9wKFBfTk9CVVksIDEpOworICAgU2V0UHJvcChQX0FDLCAxMCk7CisgICBTZXRQcm9wKFBfV0VBUl9GVU5DLCBNRSk7Cit9CisKK2ludCBXZWFyRnVuYyhvYmplY3QgbWUsIGludCBzaWxlbnQpCit7CisgICBpZiAoIVBMIHx8IHF1ZXJ5X29uY2VfaW50ZXJhY3RpdmUoUEwpIHx8IGdldHVpZChQTCkhPWdldHVpZCgpIHx8CisgICAgICAgUEwtPlF1ZXJ5UHJvcChQX1JBQ0UpIT0iRmVlIikgeworICAgICAgaWYgKCFzaWxlbnQpCisgICAgICAgIHdyaXRlKCJEaWVzZXMgS2xlaWQgd2FyIGdlbmF1IGF1ZiBkaWUgUnVuZHVuZ2VuIHVuZCBkaWUgR3JvZXNzZSBkZXIgV2FsZGZlZVxuIgorICAgICAgICAgICAgICsiYW5nZXBhc3N0IHZvbiBkZXIgZXMgc3RhbW10LiBEdSBoYXN0IGxlaWRlciBuaWNodCBkaWUgZ2VyaW5nc3RlIENoYW5jZSxcbiIKKyAgICAgICAgICAgICArImRpZXNlcyBLbGVpZCBqZW1hbHMgdHJhZ2VuIHp1IGtvZW5uZW4uXG4iKTsKKyAgICAgIHJldHVybiAwOworICAgfQorICAgcmV0dXJuIDE7Cit9CmRpZmYgLS1naXQgYS9kb2MvYmVpc3BpZWxlL3phdWJlcndhbGQvb2JqL2xlaWNoZW5tcC5jIGIvZG9jL2JlaXNwaWVsZS96YXViZXJ3YWxkL29iai9sZWljaGVubXAuYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5hZWE3YzEwCi0tLSAvZGV2L251bGwKKysrIGIvZG9jL2JlaXNwaWVsZS96YXViZXJ3YWxkL29iai9sZWljaGVubXAuYwpAQCAtMCwwICsxLDgxIEBACisvLyAoYykgYnkgUGFkcmVpYyAoUGFkcmVpY0BtZy5tdWQuZGUpCisvKiBDaGFuZ2Vsb2c6CisgICAqIDA5LjExLjA2IFplc3N0cmEKKyAgICAgb2JqZWN0X2luZm8oKVsxMV0gZHVyY2ggcXVlcnlfbmV4dF9yZXNldCgpIGVyc2V0enQuCisgICAgICovCisjaW5jbHVkZSAiLi4vZmlsZXMuaCIKKworaW5oZXJpdCAiL3N0ZC90aGluZyI7CisKK3N0YXRpYyBpbnQgbGVpY2hlbjsKKwordm9pZCBjcmVhdGUoKQoreworICAgIGxlaWNoZW49MDsKKyAgICBpZiAoIWNsb25lcChNRSkpCisgICAgICAgc2V0X25leHRfcmVzZXQoLTEpOworICAgIGVsc2UgeworICAgICAgIDo6Y3JlYXRlKCk7CisgICAgICAgU2V0UHJvcChQX0lOVklTLCAxKTsKKyAgICAgICBTZXRQcm9wKFBfTk9EUk9QLCAxKTsKKyAgICAgICBTZXRQcm9wKFBfTkVWRVJEUk9QLCAxKTsKKyAgICAgICBBZGRJZChXQUxESUQoImxlaWNoZW5tcCIpKTsKKyAgICAgICBzZXRfbmV4dF9yZXNldCgzNjAwKjMpOyAvLyBlcnN0ZXIgcmVzZXQgbmFjaCAzaAorICAgIH0KK30KKworaW50IHJlbW92ZSgpCit7CisgICAgY2xvc3VyZSBjbG87CisgICAgaWYgKGVudmlyb25tZW50KCkpIHsKKyAgICAgIGNsbz1lbnZpcm9ubWVudCgpLT5RdWVyeShQX01BWF9TUCwgRl9RVUVSWV9NRVRIT0QpOworICAgICAgaWYgKGNsbyAmJiB0b19vYmplY3QoY2xvKT09TUUpCisgICAgICAgICAgZW52aXJvbm1lbnQoKS0+U2V0KFBfTUFYX1NQLCAwLCBGX1FVRVJZX01FVEhPRCk7CisgICAgfQorICAgIGRlc3RydWN0KE1FKTsKKyAgICByZXR1cm4gMTsKK30KKworaW50IGNhbGN1bGF0ZV9tcCgpCit7CisgICAgaW50IG1wOworICAgIHN3aXRjaChsZWljaGVuKSB7CisgICAgICAgY2FzZSAxOiAgbXAgPSA1OyAgYnJlYWs7CisgICAgICAgY2FzZSAyOiAgbXAgPSA5OyAgYnJlYWs7CisgICAgICAgY2FzZSAzOiAgbXAgPSAxMjsgYnJlYWs7CisgICAgICAgY2FzZSA0OiAgbXAgPSAxNDsgYnJlYWs7CisgICAgICAgY2FzZSA1OiAgbXAgPSAxNTsgYnJlYWs7CisgICAgICAgZGVmYXVsdDogbXAgPSAwOworICAgIH0KKyAgICBTZXRQcm9wKFBfWF9IRUFMVEhfTU9ELCAoW1BfU1A6bXBdKSApOworfQorCit2b2lkIG5ld19jb3Jwc2UoKQoreworICAgIGNsb3N1cmUgY2xvOworICAgIGNsbz1QTC0+UXVlcnkoUF9NQVhfU1AsIEZfUVVFUllfTUVUSE9EKTsKKyAgICBpZiAoY2xvICYmIHRvX29iamVjdChjbG8pIT1NRSkgeworICAgICAgIGNhbGxfb3V0KCJyZW1vdmUiLCAwKTsKKyAgICAgICByZXR1cm47CisgICAgfQorICAgIGlmIChsZWljaGVuPDUpIHsKKyAgICAgICBsZWljaGVuKys7CisgICAgICAgc2V0X25leHRfcmVzZXQoMzYwMCszKTsKKyAgICB9CisgICAgZWxzZSBzZXRfbmV4dF9yZXNldCggKHF1ZXJ5X25leHRfcmVzZXQoTUUpLXRpbWUoKSkrMzYwMCApOworICAgIGNhbGN1bGF0ZV9tcCgpOworfQorCit2b2lkIHJlc2V0KCkKK3sKKyAgIGxlaWNoZW4tLTsKKyAgIGlmIChlbnZpcm9ubWVudCgpKSB7CisgICAgICB0ZWxsX29iamVjdChlbnZpcm9ubWVudCgpLCAiRHUgc3B1ZXJzdCB3aWUgRGVpbmUgbWVudGFsZW4gS3JhZWZ0ZSBzY2h3YWVjaGVyIHdlcmRlbi4uLlxuIik7CisgICAgICBpZiAoZW52aXJvbm1lbnQoKS0+UXVlcnlQcm9wKFBfU1ApID4gZW52aXJvbm1lbnQoKS0+UXVlcnlQcm9wKFBfTUFYX1NQKSkKKyAgICAgICAgICBlbnZpcm9ubWVudCgpLT5TZXRQcm9wKFBfU1AsIGVudmlyb25tZW50KCktPlF1ZXJ5UHJvcChQX01BWF9TUCkpOworICAgfQorICAgY2FsY3VsYXRlX21wKCk7CisgICBpZiAobGVpY2hlbjw9MCkKKyAgICAgIHJlbW92ZSgpOworICAgZWxzZSBzZXRfbmV4dF9yZXNldCgzNjAwKTsKK30KZGlmZiAtLWdpdCBhL2RvYy9iZWlzcGllbGUvemF1YmVyd2FsZC9vYmovc3RvY2suYyBiL2RvYy9iZWlzcGllbGUvemF1YmVyd2FsZC9vYmovc3RvY2suYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5mNzlkNWU0Ci0tLSAvZGV2L251bGwKKysrIGIvZG9jL2JlaXNwaWVsZS96YXViZXJ3YWxkL29iai9zdG9jay5jCkBAIC0wLDAgKzEsMjYgQEAKKy8vIChjKSBieSBQYWRyZWljIChQYWRyZWljQG1nLm11ZC5kZSkKKworaW5oZXJpdCAic3RkL3dlYXBvbiI7CisKKyNpbmNsdWRlICIuLi9maWxlcy5oIgorI2luY2x1ZGUgPGNvbWJhdC5oPgorCit2b2lkIGNyZWF0ZSgpCit7CisgICA6OmNyZWF0ZSgpOworICAgU2V0UHJvcChQX1NIT1JULCAiRWluIGtsZWluZXIgWmVpZ2VzdG9jayIpOworICAgU2V0UHJvcChQX05BTUUsICJaZWlnZXN0b2NrIik7CisgICBTZXRQcm9wKFBfR0VOREVSLCBNQUxFKTsKKyAgIFNldFByb3AoUF9MT05HLAorICAgICAiRWluIGtsZWluZXIgU3RvY2ssIG1pdCBkZW0gbWFuIGd1dCBEaW5nZSB6ZWlnZW4gb2RlciBpbiBkZW4gU2FuZCBtYWxlbiBrYW5uLlxuIik7CisgICBBZGRBZGplY3RpdmUoImtsZWluIik7CisgICBBZGRJZCgoeyJzdG9jayIsICJ6ZWlnZXN0b2NrIn0pKTsKKyAgIFNldFByb3AoUF9XRUFQT05fVFlQRSwgV1RfU1RBRkYpOworICAgU2V0UHJvcChQX1NJWkUsIDEyMCk7CisgICBTZXRQcm9wKFBfREFNX1RZUEUsIERUX0JMVURHRU9OKTsKKyAgIFNldFByb3AoUF9OUl9IQU5EUywgMSk7CisgICBTZXRQcm9wKFBfV0MsIDEyMCk7CisgICBTZXRQcm9wKFBfVkFMVUUsIDMwMCk7CisgICBTZXRQcm9wKFBfTk9CVVksIDEpOworICAgU2V0UHJvcChQX01BVEVSSUFMLCBNQVRfTUlTQ19XT09EKTsKK30KZGlmZiAtLWdpdCBhL2RvYy9iZWlzcGllbGUvemF1YmVyd2FsZC9vYmovdGFybnphdWJlci5jIGIvZG9jL2JlaXNwaWVsZS96YXViZXJ3YWxkL29iai90YXJuemF1YmVyLmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYzIyNjQ5NAotLS0gL2Rldi9udWxsCisrKyBiL2RvYy9iZWlzcGllbGUvemF1YmVyd2FsZC9vYmovdGFybnphdWJlci5jCkBAIC0wLDAgKzEsNzggQEAKKy8vIChjKSAyMDAzIGJ5IFBhZHJlaWMgKFBhZHJlaWNAbWcubXVkLmRlKQorLy8gRGFzIE9iamVrdCByZWFsaXNpZXJ0IGVpbmVuIFRhcm56YXViZXIsIGFlaG5saWNoCisvLyBkZW0gVGFybmhlbG0uIEplZG9jaCBvaG5lIFNoYWRvdyB1bmQgbnVyIGF1ZiBkaWUKKy8vIFJhc3NlIGJlc2NocmFlbmt0LgorCisjaW5jbHVkZSA8cHJvcGVydGllcy5oPgorI2luY2x1ZGUgPGxhbmd1YWdlLmg+CisjaW5jbHVkZSA8bW92aW5nLmg+CisjaW5jbHVkZSA8ZGVmaW5lcy5oPgorCitpbmhlcml0ICIvc3RkL3RoaW5nIjsKKworc3RhdGljIHN0cmluZyByYWNlOworCitjcmVhdGUoKQoreworICBpZiAoIWNsb25lcCh0aGlzX29iamVjdCgpKSkgcmV0dXJuOworICA6OmNyZWF0ZSgpOworICBTZXRQcm9wKFBfU0hPUlQsIDApOworICBTZXRQcm9wKFBfTE9ORywgIlRhcm56YXViZXIiKTsKKyAgU2V0UHJvcChQX05BTUUsICJUYXJuemF1YmVyIik7CisgIFNldFByb3AoUF9JTlZJUywgMSk7CisgIFNldFByb3AoUF9HRU5ERVIsIE1BTEUpOworICBTZXRQcm9wKFBfVkFMVUUsICAwKTsKKyAgU2V0UHJvcChQX05PR0VULCAxKTsKKyAgU2V0UHJvcChQX1dFSUdIVCwgMCk7CisgIFNldChQX0RFRkVORF9GVU5DLCBNRSk7CisgIEFkZElkKCJcbnRhcm56YXViZXIiKTsKK30KKworLy8gZGllIE5QQ3MgaW0gWmF1YmVyd2FsZCBkdXJjaHNjaGF1ZW4gZGVuIFphdWJlci4uLiA6bykKK3N0cmluZyBfcXVlcnlfcmFjZSgpCit7CisgICBpZiAocHJldmlvdXNfb2JqZWN0KDEpICYmIGdldHVpZChwcmV2aW91c19vYmplY3QoMSkpPT1nZXR1aWQoKSkKKyAgICAgIHJldHVybiBwcmV2aW91c19vYmplY3QoKS0+X3F1ZXJ5X3JhY2UoKXx8cmFjZTsKKyAgIHJldHVybiAiRHVua2VsZWxmIjsKK30KKwordm9pZCBJbml0aWFsaXplKG9iamVjdCBwbCkKK3sKKyAgIG9iamVjdCAqYXJtb3VyczsKKyAgIHBsLT5TZXQoUF9SQUNFLCAjJ19xdWVyeV9yYWNlLCBGX1FVRVJZX01FVEhPRCk7CisgICBhcm1vdXJzPShwbC0+UXVlcnlQcm9wKFBfQVJNT1VSUykpOworICAgaWYgKG1lbWJlcihhcm1vdXJzLCBNRSk+PTApIHJldHVybiAwOworICAgcGwtPlNldFByb3AoUF9BUk1PVVJTLCBhcm1vdXJzKyh7IE1FIH0pKTsKKyAgIHJhY2U9cGwtPlF1ZXJ5KFBfUkFDRSk7Cit9CisKK2ludCBRdWVyeURlZmVuZChzdHJpbmcgKmR0eXAsIG1peGVkIHNwZWxsLCBvYmplY3QgZW5lbXkpCit7CisgIG1peGVkIGFtOworICAvLyBub2NoIGVpbiBwYWFyIHBhcmFub2lkZSBTaWNoZXJoZWl0c2FiZnJhZ2VuLi4uIDpvKQorICBpZiAoIXByZXZpb3VzX29iamVjdCgpIHx8CisgICAgICAhcG9pbnRlcnAoYW09cHJldmlvdXNfb2JqZWN0KCktPlF1ZXJ5UHJvcChQX0FSTU9VUlMpKSB8fAorICAgICAgbWVtYmVyKGFtLCBNRSk9PS0xKSByZXR1cm4gMDsKKyAgdGVsbF9vYmplY3QocHJldmlvdXNfb2JqZWN0KCksICJEZWluIFRhcm56YXViZXIgbG9lc3Qgc2ljaCBhdWYuXG4iKTsKKyAgcmVtb3ZlKCk7Cit9CisKK2ludCBEZWZlbmRGdW5jKHN0cmluZyAqZHR5cCwgbWl4ZWQgc3BlbGwsIG9iamVjdCBlbmVteSkKK3sKKyAgIHJldHVybiBRdWVyeURlZmVuZChkdHlwLCBzcGVsbCwgZW5lbXkpOworfQorCit2YXJhcmdzIGludCBtb3ZlKG1peGVkIGRlc3QsIGludCBtZXRob2QpCisvLyBiZWltIFRvZCBzb2xsIHNpY2ggZGVyIFphdWJlciBlbnRmZXJuZW4gdW5kIGF1Y2ggbmlyZ2VuZHMgcnVtZmxpZWdlbgoreworICAgaW50IHJlczsKKyAgIHJlcz0oaW50KTo6bW92ZShkZXN0LCBtZXRob2QpOworICAgaWYgKCFsaXZpbmcoZW52aXJvbm1lbnQoKSkpIHJlbW92ZSgpOworICAgcmV0dXJuIHJlczsKK30KKwordmFyYXJncyBpbnQgcmVtb3ZlKGludCBzaWxlbnQpCit7CisgIGlmIChsaXZpbmcoZW52aXJvbm1lbnQoKSkpIGVudmlyb25tZW50KCktPlNldChQX1JBQ0UsMCxGX1FVRVJZX01FVEhPRCk7CisgIHJldHVybiAoaW50KTo6cmVtb3ZlKHNpbGVudCk7Cit9CmRpZmYgLS1naXQgYS9kb2MvYmVpc3BpZWxlL3phdWJlcndhbGQvb2JqL3phdWJlcnN0YWIuYyBiL2RvYy9iZWlzcGllbGUvemF1YmVyd2FsZC9vYmovemF1YmVyc3RhYi5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjFlMDFmYTYKLS0tIC9kZXYvbnVsbAorKysgYi9kb2MvYmVpc3BpZWxlL3phdWJlcndhbGQvb2JqL3phdWJlcnN0YWIuYwpAQCAtMCwwICsxLDM2IEBACisvLyAoYykgYnkgUGFkcmVpYyAoUGFkcmVpY0BtZy5tdWQuZGUpCisKK2luaGVyaXQgInN0ZC93ZWFwb24iOworCisjaW5jbHVkZSAiLi4vZmlsZXMuaCIKKyNpbmNsdWRlIDxjb21iYXQuaD4KKwordm9pZCBjcmVhdGUoKQoreworICAgOjpjcmVhdGUoKTsKKyAgIFNldFByb3AoUF9TSE9SVCwgIkVpbiBaYXViZXJzdGFiIik7CisgICBTZXRQcm9wKFBfTkFNRSwgIlphdWJlcnN0YWIiKTsKKyAgIFNldFByb3AoUF9HRU5ERVIsIE1BTEUpOworICAgU2V0UHJvcChQX0xPTkcsCisgICAgICJEaWVzIHdhciBlaW5tYWwgZGVyIFphdWJlcnN0YWIgZWluZXIgV2FsZGZlZSBhdXMgZGVtIFphdWJlcndhbGQuIEluIGRlbSBTdGFiXG4iCisgICAgKyJsaWVndCBzaWNoZXJsaWNoIG5vY2ggZWluZSBncm9zc2UgTWFnaWUgdmVyYm9yZ2VuLCBkb2NoIG51dHplbiBrYW5uc3QgRHUgc2llXG4iCisgICAgKyJuaWNodC5cbiIpOworICAgQWRkSWQoKHsic3RhYiIsICJ6YXViZXJzdGFiIn0pKTsKKyAgIFNldFByb3AoUF9XRUFQT05fVFlQRSwgV1RfQ0xVQik7CisgICBTZXRQcm9wKFBfREFNX1RZUEUsICh7IERUX01BR0lDLCBEVF9CTFVER0VPTiB9KSApOworICAgU2V0UHJvcChQX05SX0hBTkRTLCAxKTsKKyAgIFNldFByb3AoUF9XQywgMTQwKTsKKyAgIFNldFByb3AoUF9WQUxVRSwgODAwKTsKKyAgIFNldFByb3AoUF9OT0JVWSwgMSk7CisgICBTZXRQcm9wKFBfSElUX0ZVTkMsIE1FKTsKKyAgIFNldFByb3AoUF9NQVRFUklBTCwgKHsgTUFUX01JU0NfTUFHSUMsIE1BVF9NSVNDX1dPT0QgfSkgKTsKK30KKworaW50IEhpdEZ1bmMob2JqZWN0IGVuZW15KQoreworICAgIG9iamVjdCBvYjsKKyAgICBvYj1RdWVyeVByb3AoUF9XSUVMREVEKTsKKyAgICBpZiAob2IgJiYgIXF1ZXJ5X29uY2VfaW50ZXJhY3RpdmUob2IpICYmIGdldHVpZChvYik9PWdldHVpZCgpICYmCisgICAgICAgIG9iLT5RdWVyeVByb3AoUF9SQUNFKT09IkZlZSIpIHJldHVybiAxMDArcmFuZG9tKDMwMCk7CisgICAgcmV0dXJuIDA7Cit9CmRpZmYgLS1naXQgYS9kb2MvYmVpc3BpZWxlL3phdWJlcndhbGQvcm9vbS9laW5nYW5nLmMgYi9kb2MvYmVpc3BpZWxlL3phdWJlcndhbGQvcm9vbS9laW5nYW5nLmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMDU4YTA1ZQotLS0gL2Rldi9udWxsCisrKyBiL2RvYy9iZWlzcGllbGUvemF1YmVyd2FsZC9yb29tL2VpbmdhbmcuYwpAQCAtMCwwICsxLDQ4IEBACisvLyAoYykgYnkgUGFkcmVpYyAoUGFkcmVpY0BtZy5tdWQuZGUpCisKKyNpbmNsdWRlICIuLi9maWxlcy5oIgorCitpbmhlcml0IFJPT00oInN0ZHJvb20iKTsKKwordm9pZCBjcmVhdGUoKQoreworICAgOjpjcmVhdGUoKTsKKyAgIFNldFByb3AoUF9JTkRPT1JTLCAwKTsKKyAgIFNldFByb3AoUF9MSUdIVCwgMSk7CisgICBTZXRQcm9wKFBfSU5UX1NIT1JULCAiQXVmIGVpbmVtIGtsZWluZW4gV2FsZHdlZyIpOworICAgU2V0UHJvcChQX0lOVF9MT05HLAorICAgICAiRHUgc3RlaHN0IGF1ZiBlaW5lbSBrbGVpbmVuIFdhbGR3ZWcgZGVyIG5hY2ggV2VzdGVuIGhpbiB0aWVmZXIgaW4gZGVuIFdhbGRcbiIKKyAgICArImhpbmVpbiBmdWVocnQuIE5hY2ggT3N0ZW4ga2FubnN0IER1IGplZG9jaCBhdWNoIHdpZWRlciB6dXJ1ZWNrIHp1ciBLcmV1enVuZ1xuIgorICAgICsiZ2VsYW5nZW4uIEFsbGVzIGlzdCBoaWVyIHJlY2h0IGR1ZXN0ZXIsIGRlbm4gZGFzIFp3ZWlnZGFjaCBkZXIgQmFldW1lIGxhZXNzdFxuIgorICAgICsia2F1bSBub2NoIFNvbm5lbmxpY2h0IGhpbmR1cmNoLlxuIik7CisgICBBZGREZXRhaWwoIndhbGQiLCBRdWVyeVByb3AoUF9JTlRfTE9ORykpOworICAgQWRkRGV0YWlsKCh7ImJvZGVuIiwgIndlZyIsICJlcmRlIiwgIndhbGR3ZWcifSksCisgICAgICJEZXIgV2VnIHd1cmRlIG5pY2h0IHJpY2h0aWcgYW5nZWxlZ3QgdW5kIGVzIHNjaGVpbnQgYXVjaCBuaWNodCBzbywgYWxzIHd1ZXJkZVxuIgorICAgICsiaWhuIGplbWFuZCBwZmxlZ2VuLiBEZW5ub2NoIHdhY2hzZW4ga2VpbmVybGVpIFBmbGFuemVuIGF1ZiBkZW0gV2VnIHVuZCBEdVxuIgorICAgICsiZ2Voc3QgYXVmIGRlciBibG9zc2VuIEVyZGUuXG4iKTsKKyAgIEFkZERldGFpbCgoeyJ3ZWdyYW5kIiwgIndlZ2VzcmFuZCIsICJnZXN0cnVlcHAifSksCisgICAgICJBbSBXZWdlc3JhbmQgd2FjaHNlbiBlaW5pZ2UgYWx0ZSBCYWV1bWUgdW5kIGFuZGVyZSBQZmxhbnplbiBkaWUgenVzYW1tZW4gZWluXG4iCisgICAgKyJ1bmR1cmNoZHJpbmdsaWNoZXMgR2VzdHJ1ZXBwIGVyZ2ViZW4uIERpciBibGVpYnQgYWxzbyBuaWNodHMgd2VpdGVyIHVlYnJpZywgYWxzXG4iCisgICAgKyJudXIgZGVuIFdlZyBuYWNoIFdlc3RlbiBvZGVyIG5hY2ggT3N0ZW4genUgZm9sZ2VuLlxuIik7CisgICBBZGREZXRhaWwoKHsiYmFldW1lIiwgImFsdGVyIn0pLAorICAgICAiRGFzIEFsdGVyIGRlciBCYWV1bWUgbGFlc3N0IHNpY2ggbmljaHQgZ2VuYXUgYmVzdGltbWVuLCBzaWUgc2NoZWluZW4gamVkb2NoXG4iCisgICAgKyJzZWhyIHNlaHIgYWx0IHp1IHNlaW4uIEluIGVpbmVtIGRlciBCYWV1bWUgc2llaHN0IER1IGVpbiBrbGVpbmVzIEJhdW1oYXVzLlxuIik7CisgICBBZGREZXRhaWwoKHsicGZsYW56ZW4iLCAiZmFybmUiLCAic3RyYWV1Y2hlciJ9KSwKKyAgICAgIlZlcnNjaGllZGVuZSBTdHJhZXVjaGVyLCBGYXJuZSB1bmQgemFobHJlaWNoZSBCYWV1bWUgemllcmVuIGRlbiBXZWdlc3JhbmQuXG4iCisgICAgKyJEdSBlbnRkZWNrc3QgZGFiZWkgYWJlciBuaWNodHMgd2VpdGVyIGF1ZmZhZWxsaWdlcy5cbiIpOworICAgQWRkRGV0YWlsKCh7Im9zdGVuIiwgImtyZXV6dW5nIn0pLAorICAgICAiV2VubiBEdSBkZW0gV2VnIG5hY2ggT3N0ZW4gaGluIGZvbGdzdCwga2FubnN0IER1IHp1cnVlY2sgenVyIEtyZXV6dW5nIGdlbGFuZ2VuLlxuIik7CisgICBBZGREZXRhaWwoKHsiendlaWdlIiwgInp3ZWlnZGFjaCIsICJzb25uZW5saWNodCIsICJsaWNodCIsICJkYWNoIiwgIndlc3RlbiJ9KSwKKyAgICAgIkRhcyBad2VpZ2RhY2ggZGVyIEJhZXVtZSBsYWVzc3QgaGllciBzbyB3ZW5pZyBTb25uZW5saWNodCBoaW5kdXJjaCwgZGFzIER1IGVpblxuIgorICAgICsiU3R1ZWNrIHdlaXRlciBpbSBXZXN0ZW4ga2F1bSBub2NoIG9obmUgZWlnZW5lIExpY2h0cXVlbGxlIHdlaXRlcmtvbW1lbiBrYW5uc3QuXG4iCisgICAgKyJEdSBzb2xsdGVzdCBEaWNoIGFsc28gYmVzc2VyIG5pY2h0IG9obmUgZWlnZW5lIExpY2h0cXVlbGxlIHRpZWZlciBpbiBkZW4gV2FsZFxuIgorICAgICsiaGluZWluIHdhZ2VuLlxuIik7CisgICBBZGREZXRhaWwoKHsiZmFja2VsIiwgImxhbXBlIiwgImxpY2h0IiwgImxpY2h0cXVlbGxlIiwgImxpY2h0c3BydWNoIn0pLAorICAgICAiV2VubiBEdSBiZWFic2ljaHRpZ3N0IHdlaXRlciBuYWNoIFdlc3RlbiB6dSBnZWhuLCBzb2xsdGVzdCBEdSBlaW5lIEZhY2tlbCxcbiIKKyAgICArImVpbmUgTGFtcGUgb2RlciBzb25zdCBpcmdlbmRlaW5lIExpY2h0cXVlbGxlIG1pdG5laGVtbi4gWnVtaW5kZXN0IGlzdCBlcyBkb3J0XG4iCisgICAgKyJzZWhyIGR1bmtlbC5cbiIpOworICAgQWRkRGV0YWlsKCh7IndvbGtlIiwgIndvbGtlbiIsICJzb25uZSIsICJoaW1tZWwifSksCisgICAgICJEZXIgSGltbWVsIGlzdCBkdXJjaCBkYXMgZGljaHRlIERhY2ggZGVyIFp3ZWlnZSwgbmljaHQgbWVociB6dSBzZWhuLlxuIik7CisgICBBZGRFeGl0KCJvc3RlbiIsICIvZC91bnRlcndlbHQvcmFldW1lL3dhbGQ0Iik7CisgICBBZGRFeGl0KCJ3ZXN0ZW4iLCBST09NKCJ3ZWcxIikpOworfQpkaWZmIC0tZ2l0IGEvZG9jL2JlaXNwaWVsZS96YXViZXJ3YWxkL3Jvb20vaHVldHRlLmMgYi9kb2MvYmVpc3BpZWxlL3phdWJlcndhbGQvcm9vbS9odWV0dGUuYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5lMTlhMjcyCi0tLSAvZGV2L251bGwKKysrIGIvZG9jL2JlaXNwaWVsZS96YXViZXJ3YWxkL3Jvb20vaHVldHRlLmMKQEAgLTAsMCArMSwxMjkgQEAKKy8vIChjKSBieSBQYWRyZWljIChQYWRyZWljQG1nLm11ZC5kZSkKKworLy8gRWluIFJhdW0genVtIHNjaG9lbmVuIGVpbmJpbmRlbiBlaW5lcyBTZWhlcmhhdXNlcyBpbiBkZW4gV2FsZAorCisjaW5jbHVkZSAiLi4vZmlsZXMuaCIKKyNpbmNsdWRlIDxtb3ZpbmcuaD4KKworaW5oZXJpdCBST09NKCJzdGRyb29tIik7CisKK3ZvaWQgY3JlYXRlKCkKK3sKKyAgIDo6Y3JlYXRlKCk7CisgICBTZXRQcm9wKFBfSU5ET09SUywgMSk7CisgICBTZXRQcm9wKFBfTElHSFQsIDEpOworICAgU2V0UHJvcChQX0lOVF9TSE9SVCwgIk1pdHRlbiBpbSBXYWxkIik7CisgICBTZXRQcm9wKFBfSU5UX0xPTkcsCisgICAgICJEdSBzdGVoc3QgbnVuIGlubWl0dGVuIGRlcyBaYXViZXJ3YWxkcyBnZW5hdSB2b3IgZWluZXIgcmllc2lnZW4gQnVjaGUgdW50ZXJcbiIKKyAgICArImRlciBqZW1hbmQgZWluZSBrbGVpbmUgSHVldHRlIGdlYmF1dCBoYXQuIFJpbmdzdW1oZXIgc3RlaGVuIHdlaXRlcmUgQnVlc2NoZVxuIgorICAgICsidW5kIEJhZXVtZSB1bmQgYmlsZGVuIGVpbmUgZGljaHRlIFZlZ2V0YXRpb24sIGRvY2ggaW0gVmVyZ2xlaWNoIHp1IGRpZXNlclxuIgorICAgICsicmllc2lnZW4gQnVjaGUgd2lya3QgYWxsZXMgYW5kZXJlIHdpcmtsaWNoIG1pY2tyaWcuIER1cmNoIGRhcyBkaWNodGVcbiIKKyAgICArIkJsYWV0dGVyZGFjaCBkcmluZ3QgbnVyIHdlbmlnIExpY2h0IHVuZCBzbyB3dW5kZXJ0IGVzIGF1Y2ggbmljaHQgZGFzIGRlclxuIgorICAgICsiQm9kZW4gaGllciByZWxhdGl2IGZldWNodCBpc3QgdW5kIGRpZSBQZmxhbnplbiBzbyBndXQgZ2VkZWloZW4ga29lbm5lbi4gTmFjaFxuIgorICAgICsiTm9yZGVuIGZ1ZWhydCBhbHMgZWluemlnZXIgQXVzZ2FuZyBlaW4ga2xlaW5lciBUcmFtcGVscGZhZCB6dXIgTGljaHR1bmcuXG4iKTsKKyAgIEFkZERldGFpbCgoeyJuYXR1ciIsICJ3YWxkIiwgInphdWJlcndhbGQifSksIFF1ZXJ5UHJvcChQX0lOVF9MT05HKSk7CisgICBBZGREZXRhaWwoKHsiYnVlc2NoZSIsICJiYWV1bWUiLCAidmVnZXRhdGlvbiIsICJwZmxhbnplbiIsICJmYXJuZSJ9KSwKKyAgICAgIlJpbmdzIHVtIGRpZSBIdWV0dGUgaGVyc2NodCBlaW5lIHdpbGRlIFZlZ2V0YXRpb24uIEVzIHdhY2hzZW4gdmVyc2NoaWVkZW5zdGVcbiIKKyAgICArIkZhcm5lIHVuZCBCdWVzY2hlIHVuZCBlaW5lIHZpZWxmYWx0IHZlcnNjaGllZGVuc3RlciBCYWV1bWUuIEFsbGVzIHp1c2FtbWVuXG4iCisgICAgKyJiaWxkZXQgZWluZSBmYXN0IHVuZHVyY2hkcmluZ2xpY2hlIFZlZ2V0YXRpb24uXG4iKTsKKyAgIEFkZERldGFpbCgoeyJsaWNodCIsICJibGFldHRlcmRhY2gifSksCisgICAgICJEdXJjaCBkYXMgcmVsYXRpdiBkaWNodGUgQmxhZXR0ZXJkYWNoIGRlciBob2hlbiBCYWV1bWUsIGZhZWxsdCBlaWdlbnRsaWNoIG51clxuIgorICAgICsic2VociB3ZW5pZyBMaWNodCBkdXJjaCB1bmQgc28gaXN0IGVzIGhpZXIgZG9jaCBzY2hvbiByZWxhdGl2IGR1ZXN0ZXIsIGF1Y2hcbiIKKyAgICArIndlbm4gbWFuIG5vY2ggbmljaHQgdW5iZWRpbmd0IGVpbmUgZWlnZW5lIExpY2h0cXVlbGxlIGJyYXVjaHQgdW0gZXR3YXMgc2VoZW5cbiIKKyAgICArInp1IGtvZW5uZW4uXG4iKTsKKyAgIEFkZERldGFpbCgibGljaHRxdWVsbGUiLAorICAgICAiRWluZSBlaWdlbmUgTGljaHRxdWVsbGUgaXN0IGhpZXIgbmljaHQgdW5iZWRpbmd0IGVyZm9yZGVybGljaCwgZGEgZGFubiBkb2NoXG4iCisgICAgKyJub2NoIGdlbnVlZ2VuZCBMaWNodCBkdXJjaCBkYXMgQmxhZXR0ZXJkYWNoIGR1cmNoZHJpbmd0LlxuIik7CisgICBBZGREZXRhaWwoImhpbW1lbCIsCisgICAgICJFcyBzY2hlaW50IERpciBhbHMgd3VlcmRlIGRpZSBTb25uZSBnZXJhZGUgc2NoZWluZW4sIGF1Y2ggd2VuIGRhcyBkaWNodGVcbiIKKyAgICArIkJsYWV0dGVyZGFjaCBkaWUgbWVpc3RlbiBTb25uZW5zdHJhaGxlbiBuaWNodCBoaW5kdXJjaCBsYWVzc3QuXG4iKTsKKyAgIEFkZERldGFpbCgiYm9kZW4iLAorICAgICAiRGVyIEJvZGVuIGlzdCBoaWVyIGVpZ2VudGxpY2gsIG1pdCBBdXNuYWhtZSBkZXMgVHJhbXBlbHBmYWRzIG5hdHVlcmxpY2gsXG4iCisgICAgKyJ6aWVtbGljaCB6dWdld2FjaHNlbiB1bmQgdm9uIHphaGxyZWljaGVuIFBmbGFuemVuIHVlYmVyd3VjaGVydC5cbiIpOworICAgQWRkRGV0YWlsKCJlcmRlIiwKKyAgICAgIkRpZSBFcmRlIGlzdCBoaWVyIHVlYmVyYWxsIGVpbiB3ZW5pZyBsZWhtaWcsIGFiZXIgd2lya2xpY2ggYmVzb25kZXJlcyBrYW5uc3RcbiIKKyAgICArIkR1IGFuIGRlciBFcmRlIG5pY2h0IGVudGRlY2tlbi5cbiIpOworICAgQWRkRGV0YWlsKCh7InRyYW1wZWxwZmFkIiwgImF1c2dhbmciLCAicGZhZCJ9KSwKKyAgICAgIkRlciBUcmFtcGVscGZhZCBzY2hlaW50IGRvY2ggcmVsYXRpdiBvZnQgYmVudXR6dCB6dSB3ZXJkZW4sIGRlbm4gZGllIEVyZGUgaXN0XG4iCisgICAgKyJmYXN0IHZvZWxsaWcgYmxvc3MgZ2VsZWd0IHVuZCBkaWUgd2VuaWdlbiBQZmxhbnplbiBkaWUgZGFubiBkb2NoIHZlcnN1Y2hlbiBpaG5cbiIKKyAgICArInp1IGJld2FjaHNlbiBzaW5kIGZhc3QgYWxsZSBuaWVkZXJnZXRyYW1wZWx0LlxuIik7CisgICBBZGREZXRhaWwoKHsibGljaHR1bmciLCAibm9yZGVuIn0pLAorICAgICAiVmllbGxlaWNodCBzb2xsdGVzdCBEdSBlaW5mYWNoIGRlbSBUcmFtcGVscGZhZCBuYWNoIE5vcmRlbiBmb2xnZW4gdW5kIERpciBkaWVcbiIKKyAgICArIkxpY2h0dW5nIGVpbmZhY2ggYXVzIGRlciBOYWVoZSBhbnNjaGF1ZW4uXG4iKTsKKyAgIEFkZERldGFpbCgoeyJidWNoZSIsICJyaWVzaWdlIGJ1Y2hlIn0pLAorICAgICAiRWljaGVuIHNvbGxzdCBEdSB3ZWljaGVuLCBCdWNoZW4gc29sbHN0IER1IHN1Y2hlbiFcbiIpOworICAgQWRkRGV0YWlsKCh7ImVpY2hlIiwgImVpY2hlbiJ9KSwKKyAgICAgIkR1IHNpZWhzdCB6d2FyIGFsbGVzIG1vZWdsaWNoZSBhbiBCYWV1bWVuIGhpZXIsIGFiZXIgRWljaGVuIGJlZmluZGVuIHNpY2ggenVtXG4iCisgICAgKyJHbHVlY2sgbmljaHQgZGFkcnVudGVyLlxuIik7CisgICBBZGREZXRhaWwoKHsiZ2x1ZWNrIiwgImZyYWdlIn0pLAorICAgICAiT2IgZXMgc29ldHdhcyB3aWUgR2x1ZWNrIHVlYmVyaGF1cHQgZ2lidCwgaXN0IHdvaGwgZWhlciBlaW5lIHBoaWxvc29waGlzY2hlXG4iCisgICAgKyJGcmFnZSB1bmQgZXR3YXMgd28gbWFuIHN0dW5kZW5sYW5nIGRydWViZXIgZGlza3V0aWVyZW4ga29lbm50ZS4gRnVlciBkZW5cbiIKKyAgICArIk1vbWVudCBiZXNjaGxpZXNzdCBEdSBqZWRlbmZhbGxzIGxpZWJlciBkaWUgc2Nob2VuZSBOYXR1ciB6dSBnZW5pZXNzZW4gdW5kXG4iCisgICAgKyJkZW0gendpdHNjaGVybiBkZXIgVm9lZ2VsIHp1IGxhdXNjaGVuLCBhbHMgRGljaCBtaXQgc29ldHdhcyB6dSBiZXNjaGFlZnRpZ2VuLlxuIik7CisgICBBZGREZXRhaWwoKHsidm9lZ2VsIiwgInppcGZlbCIsICJiYXVtemlwZmVsIiwgInppcGZlbCBkZXIgYmFldW1lIn0pLAorICAgICAiT2JlbiBpbiBkZW4gWmlwZmVsbiBkZXIgQmFldW1lIGthbm5zdCBEdSB3YWdlIGVpbmlnZSBWb2VnZWwgZXJrZW5uZW4sIGRvY2ggdW1cbiIKKyAgICArImRpZXNlIG5hZWhlciBzcGV6aWZpemllcmVuIHp1IGtvZW5uZW4sIHNpbmQgZGllc2UgZGFubiBkb2NoIHp1IHdlaXQgd2VnLlxuIik7CisgICBBZGREZXRhaWwoIm1vbWVudCIsCisgICAgICJHZW5pZXNzZSBkZW4gTW9tZW50IHVuZCBsZWJlIERlaW4gTGViZW4hXG4iKTsKKyAgIEFkZERldGFpbCgicnVoZSIsCisgICAgICJEaWUgUnVoZSB3aXJkIGhpZXIgdW5kIGRhIGxlZGlnbGljaCB2b20gendpdHNjaGVybiBlaW5pZ2VyIFZvZWdlbCB1bnRlcmJyb2NoZW4uXG4iKTsKKyAgIEFkZFNwZWNpYWxEZXRhaWwoKHsiaHVldHRlIn0pLCAiZGV0X2h1ZXR0ZSIpOworICAgQWRkU291bmRzKFNFTlNFX0RFRkFVTFQsCisgICAgICJFcyBpc3QgaGllciB3aXJrbGljaCBoZXJybGljaCBydWhpZyB1bmQgbnVyIGhpZXIgdW5kIGRhIGhvZXJzdCBEdSBkYXNcbiIKKyAgICArInp3aXRzY2hlcm4gZWluaWdlciBWb2VnZWwuIE5hdHVyIHB1ci5cbiIpOworICAgQWRkU291bmRzKCh7InZvZWdlbCIsICJ6d2l0c2NoZXJuIiwgInZvZWdlbCB6d2l0c2NoZXJuIn0pLAorICAgICAiRHUgbGF1c2Noc3QgZGVtIHp3aXRzY2hlcm4gZGVyIFZvZWdlbCB1bmQgZ2VuaWVzc3QgZGllIGhpbW1saXNjaGUgUnVoZS5cbiIpOworICAgQWRkQ21kKCh7InN1Y2giLCAic3VjaGUifSksICJjbWRfc3VjaGVuIik7CisgICBBZGRDbWQoKHsiZ2VuaWVzcyIsICJnZW5pZXNzZSJ9KSwgImNtZF9nZW5pZXNzZW4iKTsKKyAgIEFkZENtZCgoeyJsZWIiLCAibGViZSJ9KSwgImNtZF9sZWJlbiIpOworICAgQWRkQ21kKCh7ImtsZXR0ZXIiLCAia2xldHRlcmUifSksICJjbWRfa2xldHRlcm4iKTsKKyAgIEFkZEV4aXQoIm5vcmRlbiIsIFJPT00oImxpY2h0dW5ncyIpKTsKK30KKworc3RhdGljIHN0cmluZyBkZXRfaHVldHRlKCkKKy8vIExhbmdiZXNjaHJlaWJ1bmcgbmljaHQgZmVzdCBzZXR6ZW4sIGRhbWl0IGRlciBTcGllbGVyIHNpZSBzZWxic3QKKy8vIGFlbmRlcm4ga2Fubi4KK3sKKyAgIG9iamVjdCBvYjsKKyAgIGlmIChvYj1wcmVzZW50KCJcbm1vcmdlbmVzaGF1cyIsIE1FKSkKKyAgICAgIHJldHVybiBvYi0+bG9uZygpOworfQorCitzdGF0aWMgaW50IGNtZF9zdWNoZW4oc3RyaW5nIHN0cikKK3sKKyAgIG5vdGlmeV9mYWlsKCJXQVMgbW9lY2h0ZXN0IER1IHN1Y2hlbj9cbiIpOworICAgaWYgKHN0ciE9ImJ1Y2hlbiIgJiYgc3RyIT0iYnVjaGUiKSByZXR1cm4gMDsKKyAgIHdyaXRlKCJEdSBicmF1Y2hzdCBuaWNodCBsYW5nZSBzdWNoZW4gdW5kIHNjaG9uIGVudGRlY2t0IER1IGVpbmUgcmllc2lnZSBCdWNoZSB2b3JcbiIKKyAgICAgICAgKyJEaXIsIGFiZXIgZWlnZW50bGljaCB3YWVyZSBlcyB3b2hsIGF1Y2ggZWhlciBlcnN0YXVubGljaCwgd2VubiBEdSBkaWVzZVxuIgorICAgICAgICArInJpZXNpZ2UgQnVjaGUgZGlyZWt0IHZvciBEZWluZXIgTmFzZSB1ZWJlcnNlaGVuIHd1ZXJkZXN0IDopLlxuIik7CisgICByZXR1cm4gMTsKK30KKworc3RhdGljIGludCBjbWRfZ2VuaWVzc2VuKHN0cmluZyBzdHIpCit7CisgICBub3RpZnlfZmFpbCgiV0FTIG1vZWNodGVzdCBEdSBnZW5pZXNzZW4/XG4iKTsKKyAgIGlmIChzdHIhPSJtb21lbnQiICYmIHN0ciE9ImRlbiBtb21lbnQiICYmIHN0ciE9InJ1aGUiKSByZXR1cm4gMDsKKyAgIHdyaXRlKCJEdSBoYWVsdHN0IGVpbmVuIE1vbWVudCBpbm5lIHVuZCBnZW5pZXNzdCBkaWUgaGltbWxpc2NoZSBSdWhlLCBkaWUgbnVyIGR1cmNoXG4iCisgICAgICAgICsiZGFzIHp3aXRzY2hlcm4gZWluaWdlciBWb2VnZWwgZHVyY2hicm9jaGVuIGFiZXIgbmljaHQgZ2VzdG9lcnQgd2lyZC5cbiIpOworICAgcmV0dXJuIDE7Cit9CisKK3N0YXRpYyBpbnQgY21kX2xlYmVuKHN0cmluZyBzdHIpCit7CisgICBub3RpZnlfZmFpbCgiV0FTIG1vZWNodGVzdCBEdSBsZWJlbj9cbiIpOworICAgaWYgKHN0ciE9ImxlYmVuIiAmJiBzdHIhPSJtZWluIGxlYmVuIiAmJiBzdHIhPSJkZWluIGxlYmVuIikgcmV0dXJuIDA7CisgICB3cml0ZSgiTnVuLCB3ZW5uIGRpZSBXZWx0IHNvIGVpbmZhY2ggd2FlcmUgZGFzIER1IG1pdCBlaW5lbSBzaW1wbGVuIEtvbW1hbmRvIERlaW5cbiIKKyAgICAgICAgKyJnYW56ZXMgTGViZW4gc3RldWVybiBrb2VubnRlc3QsIGRhbm4gd2FlciBkaWUgV2VsdCBkb2NoIHdpcmtsaWNoIGxhbmd3ZWlsaWcsXG4iCisgICAgICAgICsib2Rlcj8gSWNoIHdpbGwgZG9jaCBzdGFyayBob2ZmZW4sIGRhcyBlcyBzb29vIHdlaXQgbm9jaCBuaWNodCBiZWkgRGlyIGlzdCA6KS5cbiIpOworICAgcmV0dXJuIDE7Cit9CisKK3N0YXRpYyBpbnQgY21kX2tsZXR0ZXJuKHN0cmluZyBzdHIpCit7CisgICBub3RpZnlfZmFpbCgiV09ISU4gb2RlciBXT1JBVUYgbW9lY2h0ZXN0IER1IGtsZXR0ZXJuP1xuIik7CisgICBpZiAobWVtYmVyKCh7ImF1ZiBiYXVtIiwgImF1ZiBiYXVtemlwZmVsIiwgImJhdW0gaG9jaCIsCisgICAgICAgICAgICAgICAgImJ1Y2hlIGhvY2giLCAiYXVmIGJ1Y2hlIn0pLCBzdHIpPT0tMSkgcmV0dXJuIDA7CisgICB3cml0ZSgiRHUgdmVyc3VjaHN0IHZlcmdlYmxpY2ggZGllIHJpZXNpZ2UgQnVjaGUgaG9jaHp1a2xldHRlcm4sIGRvY2ggZGllIHVudGVyZW5cbiIKKyAgICAgICAgKyJBZXN0ZSBoYWVuZ2VuIGxlaWRlciBiZXJlaXRzIHZpZWwgenUgaG9jaCwgdW0gZGllc2UgZXJrbGltbWVuIHp1IGtvZW5uZW4uXG4iKTsKKyAgIHJldHVybiAxOworfQpkaWZmIC0tZ2l0IGEvZG9jL2JlaXNwaWVsZS96YXViZXJ3YWxkL3Jvb20vc2NodWxlLmMgYi9kb2MvYmVpc3BpZWxlL3phdWJlcndhbGQvcm9vbS9zY2h1bGUuYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5hOTdhY2M0Ci0tLSAvZGV2L251bGwKKysrIGIvZG9jL2JlaXNwaWVsZS96YXViZXJ3YWxkL3Jvb20vc2NodWxlLmMKQEAgLTAsMCArMSw3OCBAQAorLy8gKGMpIGJ5IFBhZHJlaWMgKFBhZHJlaWNAbWcubXVkLmRlKQorCisjaW5jbHVkZSAiLi4vZmlsZXMuaCIKKworaW5oZXJpdCBST09NKCJzdGRyb29tIik7CisKK3ZvaWQgY3JlYXRlKCkKK3sKKyAgIDo6Y3JlYXRlKCk7CisgICBTZXRQcm9wKFBfSU5ET09SUywgMCk7CisgICBTZXRQcm9wKFBfTElHSFQsIDEpOworICAgQWRkU3BlY2lhbERldGFpbCgoeyJwaXhpZXNjaHVsZSIsICJzY2h1bGUiLCAic2FuZHBsYXR6IiwgIndhbGRzY2h1bGUifSksICJfcXVlcnlfaW50X2xvbmciKTsKKyAgIEFkZERldGFpbCgoeyJzcHVyZW4iLCAia2FtcGZwbGF0eiIsICJzYW5kIn0pLAorICAgICAiRGllIFNwdXJlbiBpbSBTYW5kIGRldXRlbiBhdWYgZWluZW4gbGFlbmdlcmVuIEthbXBmIGhpbiwgZGVyIGhpZXIgZ2V0b2J0XG4iCisgICAgKyJoYWJlbiBtdXNzLiBXZXIgYXVjaCBpbW1lciBpaG4gdmVybG9yZW4gaGF0LCBlciBoYXQgc2ljaCB3YWNrZXIgZ2V3ZWhydC5cbiIpOworICAgQWRkRGV0YWlsKCJ3YWxkIiwKKyAgICAgIldhcyBtZWluc3QgRHUgZWlnZW50bGljaCwgd28gRHUgZ2VyYWQgZGllIGdhbnplIFplaXQgcnVtbGFldWZzdD8gTWFjaCBlaW5mYWNoXG4iCisgICAgKyJkaWUgQXVnZW4gYXVmIHVuZCBzY2hhdSBEaXIgYWxsZXMgaW4gUnVoZSBhbi5cbiIpOworICAgQWRkRGV0YWlsKCJydWhlIiwgIkluIGRlciBSdWhlIGxpZWd0IGRpZSBLcmFmdC4uLlxuIik7CisgICBBZGREZXRhaWwoKHsiYXVnZW4iLCAiZGV0YWlscyIsICJrYW1wZnphdWJlciIsICJrb3BmIiwgImZyZXVuZCJ9KSwKKyAgICAgIk51IHVlYmVydHJlaWIgbWFsIG5pY2gsIG5pY2h0IGplZGVzIFN1YnN0YW50aXYgdmVyYmlyZ3Qgd2lya2xpY2ggZWluXG4iCisgICAgKyJzaW5udm9sbGVzIERldGFpbC5cbiIpOworICAgQWRkRGV0YWlsKCJrcmFmdCIsCisgICAgICJXb3chIERlaW5lIEtyYWZ0IGlzdCBwbG9ldHpsaWNoIGF1ZiAzMiBhbmdlc3RpZWdlbi4uLlxuIgorICAgICsiRGFzIGhhc3QgRHUgamV0enQgYWJlciBuaWNodCB3aXJrbGljaCBnZWdsYXVidCwgb2Rlcj9cbiIKKyAgICArIldpZXNvIHVudGVyc3VjaHN0IER1IHNvbGNoZSBEZXRhaWxzIGVpZ2VudGxpY2g/XG4iKTsKKyAgIEFkZFNwZWNpYWxEZXRhaWwoInplaXQiLCAiZGV0X3plaXQiKTsKKyAgIEFkZERldGFpbCgoeyJwaXhpZXMiLCAiYmxvZWRzaW5uIiwgInVuZnVnIiwgInphdWJlcndlc2VuIiwgInN0cmVpY2gifSksIAorICAgICAiUGl4aWVzIHNpbmQga2xlaW5lIFphdWJlcndlc2VuLCBkaWUgbmljaHRzIGFscyBVbmZ1ZyBpbSBLb3BmIGhhYmVuLiBXaWVcbiIKKyAgICArIm5pZW1hbmQgc29uc3QgbnV0emVuIHNpZSBpaHJlIG1hZ2lzY2hlbiBGYWVoaWdrZWl0ZW4gbmljaHQgdW0gamVtYW5kZW4genVcbiIKKyAgICArImhlaWxlbiBvZGVyIGZ1ZXIgS2FtcGZ6YXViZXIuIE5laW4gc2llIG51dHplbiBzaWUgdW0gamVtYW5kZW4genUgQWVyZ2VyblxuIgorICAgICsib2RlciBpaG0gZWluZW4gU3RyZWljaCB6dSBzcGllbGVuLiBFaW5lbiBQaXhpZSB6dW0gRnJldW5kIHp1IGhhYmVuLCBrYW5uXG4iCisgICAgKyJzaWNoZXIgc2VociB1bnRlcmhhbHRzYW0gc2VpbiwgYXVmIGRpZSBEYXVlciBhYmVyIHdvaGwgYXVjaCB6aWVtbGljaFxuIgorICAgICsiYW5zdHJlbmdlbmQuXG4iKTsKKyAgIEFkZFNwZWNpYWxEZXRhaWwoImJvZGVuIiwgImRldF9ib2RlbiIpOworICAgQWRkRGV0YWlsKCJoYWxia3JlaXMiLAorICAgICAiRWluaWdlIFBpeGllcyBzaXR6ZW4gaW0gSGFsYmtyZWlzIHVtIEFyaW5hIGhlcnVtIHVuZCBob2VyZW4gZ2VzcGFubnQgenUsIHdpZVxuIgorICAgICsic2llIGlobmVuIGVpbmVuIHNwYW5uZW5kZSBHZXNjaGljaHRlIGVyemFlaGx0LlxuIik7CisgICBBZGREZXRhaWwoKHsiZ2VzY2hpY2h0ZW4iLCAic3ByYWNoZSJ9KSwKKyAgICAgIldlbm4gQXJpbmEgZG9jaCBibG9zcyBpbiBlaW5lciBTcHJhY2hlIHNwcmVjaGVuIHd1ZXJkZSwgRGllIER1IHZlcnN0ZWhzdC4uLlxuIgorICAgICsiSWhyZSBHZXNjaGljaHRlbiBob2VyZW4gc2ljaCBqZWRlbmZhbGxzIGF1c3Nlcm9yZGVudGxpY2ggc3Bhbm5lbmQgYW4uICpzZXVmeipcbiIpOworICAgQWRkRGV0YWlsKCJoaW1tZWwiLCAiRGVyIEhpbW1lbCBpc3Qga2xhciB1bmQgbmFoZXp1IHdvbGtlbmZyZWkuXG4iKTsKKyAgIEFkZERldGFpbCgoeyJvc3RlbiIsICJhdXNnYW5nIiwgImxpY2h0dW5nIiwgIndlZyIsICJ3YWxkd2VnIn0pLAorICAgICAiRGVyIGVpbnppZ2UgQXVzZ2FuZyB2b24gaGllciwgaXN0IGRlciBrbGVpbmUgV2FsZHdlZyBpbSBPc3RlbiBkZXIgenVydWVja1xuIgorICAgICsienVyIGdyb3NzZW4gTGljaHR1bmcgZnVlaHJ0LlxuIik7CisgICBTZXRQcm9wKFBfSU5UX1NIT1JULCAiRGllIFBpeGllc2NodWxlIik7CisgICBBZGRFeGl0KCJvc3RlbiIsIFJPT00oImxpY2h0dW5nbnciKSk7CisgICBBZGRJdGVtKE5QQygicGl4aWUiKSwgUkVGUkVTSF9NT1ZFX0hPTUUpOworICAgQWRkSXRlbShOUEMoInBpeGllIiksIFJFRlJFU0hfTU9WRV9IT01FKTsKKyAgIEFkZEl0ZW0oTlBDKCJwaXhpZSIpLCBSRUZSRVNIX01PVkVfSE9NRSk7CisgICBBZGRJdGVtKE5QQygiYXJpbmEiKSwgUkVGUkVTSF9SRU1PVkUsIDEpOworfQorCitzdGF0aWMgc3RyaW5nIGRldF9ib2RlbigpCit7CisgICBpZiAocHJlc2VudChXQUxESUQoImZlZSIpLCBNRSkpCisgICAgICByZXR1cm4gR2V0RGV0YWlsKCJoYWxia3JlaXMiKTsKKyAgIHJldHVybiBHZXREZXRhaWwoInNhbmQiKTsKK30KKworc3RhdGljIHN0cmluZyBkZXRfemVpdCgpCit7ICByZXR1cm4gIldpciBoYWJlbiBnZW5hdSAiK2R0aW1lKHRpbWUoKSlbPDguLl0rIi5cbiI7IH0KKworc3RhdGljIHN0cmluZyBfcXVlcnlfaW50X2xvbmcoKQoreworICAgaWYgKHByZXNlbnQoV0FMRElEKCJmZWUiKSwgTUUpKQorICAgICAgcmV0dXJuICJEdSBiZWZpbmRlc3QgRGljaCBpbiBkZXIgV2FsZHNjaHVsZSBkZXIgUGl4aWVzLiBFaW5pZ2UgUGl4aWVzIHNpdHplbiBpbVxuIgorICAgICAgICAgICAgKyJIYWxia3JlaXMgdW0gZGllIFdhbGRmZWUgQXJpbmEgcnVtIHVuZCBob2VyZW4gZ2VzcGFubnQgaWhyZW4gR2VzY2hpY2h0ZW4genUuXG4iCisgICAgICAgICAgICArIkdlbGVnZW50bGljaCBlcmhlYnQgc2ljaCBBcmluYSB1bSBtaXQgZWluZW0gU3RvY2sgZXR3YXMgaW4gZGVuIFNhbmQgenVcbiIKKyAgICAgICAgICAgICsiemVpY2huZW4sIG9kZXIgdW0gZWluZW4gZGVyIFBpeGllcyB6dSBlcm1haG5lbiB3ZWlsIGVyIHdpZWRlciBpcmdlbmRlaW5lblxuIgorICAgICAgICAgICAgKyJ2ZXJydWVja3RlbiBCbG9lZHNpbm4gZ2VtYWNodCBoYXQuIERhIHNpY2ggcmluZ3NoZXJ1bSBkZXIgZGljaHRlIFdhbGRcbiIKKyAgICAgICAgICAgICsiYW5zY2hsaWVzc3QsIGlzdCBkZXIgZWluemlnZSBBdXNnYW5nLCBkZXIgV2VnIHp1cnVlY2sgbmFjaCBPc3RlbiBhdWYgZGllXG4iCisgICAgICAgICAgICArImdyb3NzZSBMaWNodHVuZy5cbiI7CisgICByZXR1cm4gIkR1IHN0ZWhzdCBhdWYgZWluZW0ga2xlaW5lbiBTYW5kcGxhdHogbWl0dGVuIGltIFdhbGQuIEhpZXIgdW5kIGRhIHNpZWhzdCBEdVxuIgorICAgICAgICAgKyJpbSBTYW5kIG5vY2ggZGV1dGxpY2ggZGllIFNwdXJlbiBlaW5lcyBLYW1wZmVzLiBVbWdlYmVuIHdpcmQgZGllc2VyIFBsYXR6XG4iCisgICAgICAgICArInZvbiBlaW5lbSBkaWNodGVuIFdhbGQsIHNvIGRhc3MgZGVyIGVpbnppZ2UgQXVzZ2FuZyBkZXIgV2VnIHp1cnVlY2sgbmFjaFxuIgorICAgICAgICAgKyJPc3RlbiB6dXIgZ3Jvc3NlbiBMaWNodHVuZyBpc3QuXG4iOworfQpkaWZmIC0tZ2l0IGEvZG9jL2JlaXNwaWVsZS96YXViZXJ3YWxkL3Jvb20vc3RkbGljaHR1bmcuYyBiL2RvYy9iZWlzcGllbGUvemF1YmVyd2FsZC9yb29tL3N0ZGxpY2h0dW5nLmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMzQxZWU2ZQotLS0gL2Rldi9udWxsCisrKyBiL2RvYy9iZWlzcGllbGUvemF1YmVyd2FsZC9yb29tL3N0ZGxpY2h0dW5nLmMKQEAgLTAsMCArMSwxNTcgQEAKKy8vIChjKSBieSBUaG9tYXMgV2luaGVsbGVyIChQYWRyZWljQG1nLm11ZC5kZSkKKworI2luY2x1ZGUgIi4uL2ZpbGVzLmgiCisjaW5jbHVkZSA8bW92aW5nLmg+CisKK2luaGVyaXQgUk9PTSgic3Rkcm9vbSIpOworaW5oZXJpdCAiL3N0ZC9yb29tL2tyYWV1dGVyIjsKKwordm9pZCBtYXliZV9yZXBsYWNlX3Byb2dyYW0oKQorLy8gZGllc2VyIFN0YW5kYXJkcmF1bSwgZGFyZiBfbmljaHRfIHJlcGxhY2VkIHdlcmRlbi4uLgoreyB9CisKK2ludCB0dWVtcGVsX2V4KHN0cmluZyBleGl0LCBtYXBwaW5nIG1hcF9sZGZpZWQpCit7ICAgcmV0dXJuIG1hcF9sZGZpZWRbZXhpdF09PVJPT00oInR1ZW1wZWwiKTsgIH0KKworc3RhdGljIGludCBwbGFudDsKKwordm9pZCBjcmVhdGUoKQoreworICAgaW50IGk7CisgICBzdHJpbmcgdHVlbXBlbCwgZGlyOworICAgbWl4ZWQgdG1wOworCisgICBpZiAoIWNsb25lcChNRSkpIHJldHVybjsKKyAgIDo6Y3JlYXRlKCk7CisgICBwbGFudD0wOworICAgU2V0UHJvcChQX0lORE9PUlMsIDApOworICAgU2V0UHJvcChQX0xJR0hULCAxKTsKKyAgIFNldFByb3AoUF9JTlRfU0hPUlQsICJBbSBSYW5kZSBkZXIgWmF1YmVybGljaHR1bmciKTsKKyAgIFNldFByb3AoRVhUUkFfTE9ORywgIiIpOworICAgaWYgKFBPKSBkaXI9KFBPLT5DdXN0b21pemVPYmplY3QoKSk7CisgICBpZiAoIWRpcikgcmV0dXJuOworICAgZGlyPShbIm8iOiJvc3QiLCAidyI6Indlc3QiLCAibiI6Im5vcmQiLCAicyI6InN1ZWQiLAorICAgICAgICAgIm5vIjoibm9yZG9zdCIsICJudyI6Im5vcmR3ZXN0IiwKKyAgICAgICAgICJzbyI6InN1ZWRvc3QiLCAic3ciOiJzdWVkd2VzdCJdKVtkaXJbOC4uXV07CisgICB0dWVtcGVsPWZpbHRlcihtX2luZGljZXMoUXVlcnlQcm9wKFBfRVhJVFMpfHwoW10pKSwgInR1ZW1wZWxfZXgiLCBNRSwgUXVlcnlQcm9wKFBfRVhJVFMpfHwoW10pKVswXVswLi48M107CisgICBkaXI9Y2FwaXRhbGl6ZShkaXIpOyB0dWVtcGVsPWNhcGl0YWxpemUodHVlbXBlbCk7CisgICBTZXRQcm9wKFBfSU5UX0xPTkcsIEJTKAorICAgICAiRHUgc3RlaHN0IGFtICIrZGlyKyJyYW5kIGRlciBncm9zc2VuIExpY2h0dW5nIGlubWl0dGVuIGRlcyBaYXViZXJ3YWxkcy4gIgorICAgICt0dWVtcGVsKyJsaWNoIHZvbiBoaWVyLCBiZWZpbmRldCBzaWNoIGdlbmF1IGluIGRlciBNaXR0ZSBkZXIgIgorICAgICsiTGljaHR1bmcgZWluIGtsZWluZXIgVHVlbXBlbCBpbiBkZXNzZW4gV2Fzc2VyIHNpY2ggZGFzIFNvbm5lbmxpY2h0IGluICIKKyAgICArImFsbGVuIEZhcmJlbiBkZXMgUmVnZW5ib2dlbnMgc3BpZWdlbHQuIEhpZXIgdW5kIGRhIHN0ZWhlbiB1bSBkZW4gVGVpY2ggIgorICAgICsiaGVydW0gdmVyZWluemVsdCBlaW5pZ2UgRWljaGVuIGRpZSBzaWNoIGlyZ2VuZHdpZSB6dSBiZXdlZ2VuICIKKyAgICArInNjaGVpbmVuIHVuZCBhYiB1bmQgenUgc2llaHN0IER1IHdpZSBzaWNoIGVpbmlnZSBrbGVpbmUgUGl4aWVzIGF1cyAiCisgICAgKyJkZW0gV2FsZCBoZXJhdXMgYW5zIFdhc3NlciB0cmF1ZW4uIERpZSBFaWNoZW4gamVkb2NoLCBoYWx0ZW4gaW1tZXIgIgorICAgICsiZWluZW4gZGV1dGxpY2hlbiBBYnN0YW5kIHp1bSBXYXNzZXIuIitRdWVyeVByb3AoRVhUUkFfTE9ORykpKTsKKyAgIEFkZERldGFpbCgoeyJyYXVtIiwgbG93ZXJfY2FzZShkaXIpKyJyYW5kIiwgInphdWJlcndhbGQifSksIFF1ZXJ5UHJvcChQX0lOVF9MT05HKSk7CisgICBBZGREZXRhaWwoKHsicGl4aWVzIiwgInphdWJlcndlc2VuIiwgInVuZnVnIn0pLAorICAgICAiUGl4aWVzIHNpbmQga2xlaW5lIHZlcnNwaWVsdGUgWmF1YmVyd2VzZW4sIGRpZSBoaWVyIGltIFphdWJlcndhbGQgd29obmVuLiBVbVxuIgorICAgICsiZWluZW0gdm9uIGlobmVuIHp1IGJlZ2VnbmVuIHdpcnN0IER1IGhpZXIgaW0gV2FsZCBzaWNoZXIgbmljaCBsYW5nZSBzdWNoZW5cbiIgCisgICAgKyJtdWVzc2VuLCBkb2NoIHZvcnNpY2h0LCBzaWUgaGFiZW4gbmljaHRzIGFscyBVbmZ1ZyBpbSBLb3BmLi4uXG4iKTsKKyAgIEFkZERldGFpbCgoeyJmYXJiZW4iLCAicmVnZW5ib2dlbiIsICJjb21wdXRlciJ9KSwKKyAgICAgIk5vY2ggbmllIGVpbmVuIFJlZ2VuYm9nZW4gZ2VzZWhuPyBIbW0uLiBkYW5uIHNpdHp0IER1IHdpcmtsaWNoIGVpbmRldXRpZ1xuIgorICAgICsienV2aWVsIHZvciBEZWluZW0gQ29tcHV0ZXIuLi5cbiIpOworICAgQWRkRGV0YWlsKCJhYnN0YW5kIiwKKyAgICAgIldpZXNvIHNpZSBkaWVzZW4gQWJzdGFuZCBoYWx0ZW4ga2FubnN0IER1IG5pY2h0IG5hY2h2b2xsemllaG4sIGFiZXIgbWVociBhbHNcbiIKKyAgICArImVpbiBwYWFyIE1ldGVyIGdlaGVuIHNpZSBuaWUgYW4gZGVuIGFsdGVuIFdlaWhlciBkcmFuLlxuIik7CisgICBBZGREZXRhaWwoKHsic29ubmUiLCAic29ubmVuc3RyYWhsZW4iLCAic29ubmVubGljaHQiLCAiaGltbWVsIiwgImhlcnoifSksCisgICAgICJaYWhscmVpY2hlIHdhcm1lIFNvbm5lbnN0cmFobGVuIGVyd2Flcm1lbiBEZWluIEhlcnogdW5kIER1IGJpc3QgcmljaHRpZ1xuIgorICAgICsiZ2x1ZWNrbGljaC4gU29sY2ggZWluIElkeWxsaXNjaGVzIFBsYWV0emNoZW4gd2lsbHN0IER1IGFtIGxpZWJzdGVuIG5pZVxuIgorICAgICsid2llZGVyIHZlcmxhc3Nlbi4gRmVobHQgZWlnZW50bGljaCBudXIgbm9jaCBlaW4gUGFydG5lciwgbWl0IGRlbSBtYW5cbiIKKyAgICArImhpZXIgZ2VtZWluc2FtIGluIGRlciBTb25uZSBsaWVnZW4gdW5kIGRhcyByYXVzY2hlbiBkZXMgV2Fzc2VycyBnZW5pZXNzZW5cbiIKKyAgICArImthbm4uXG4iKTsKKyAgIEFkZERldGFpbCgicGFydG5lciIsICJEZW4gbXVzc3QgRHUgRGlyIHNjaG9uIHNlbGJzdCBtaXRicmluZ2VuLi4uXG4iKTsKKyAgIEFkZERldGFpbCgoeyJ3YWxkIiwgInphdWJlcndhbGQifSksCisgICAgICJEdSBiZWZpbmRlc3QgRGljaCBxdWFzaSBtaXR0ZW0gaWhuIGlobS4gUnVuZCBoZXJ1bSB1bSBkaWUgTGljaHR1bmcgc2NobGllc3N0XG4iCisgICAgKyJzaWNoIGVpbiBkaWNodGVyIFdhbGQgYW4uXG4iKTsKKyAgIEFkZERldGFpbCgoeyJlaWNoZSIsICJlaWNoZW4ifSksCisgICAgICJIaWVyIGJlZmluZGV0IHNpY2ggZ2VyYWRlIGtlaW5lLCBzbyBkYXNzIER1IHNpZSBuaWNoIG5hZWhlciBhbnNlaG4ga2FubnN0LlxuIik7CisgICBBZGREZXRhaWwoKHsibGljaHR1bmciLCAicmFuZCIsICJwbGFldHpjaGVuIn0pLCBRdWVyeVByb3AoUF9JTlRfTE9ORykpOworICAgQWRkRGV0YWlsKCh7Indhc3NlciIsICJ0dWVtcGVsIiwgInRlaWNoIiwgbG93ZXJfY2FzZSh0dWVtcGVsKSsiZW4iLCAibWl0dGUifSksCisgICAgICJXZW5uIER1IERpciBkZW4gVHVlbXBlbCBpbiBkZXIgTWl0dGUgZGVyIExpY2h0dW5nIGV0d2FzIG5hZWhlciBhbnNlaGVuXG4iCisgICAgKyJtb2VjaHRlc3QsIHNvbGx0ZXN0IER1IHZpZWxsZWljaHQgZWluZmFjaCBub2NoIGVpbiBiaXNzY2hlbiBuYWVoZXIgcmFuZ2Vobi5cbiIpOworICAgQWRkRGV0YWlsKCh7IndhbGR3ZWciLCAid2VnIn0pLAorICAgICAiVWViZXIgZGVuIFdhbGR3ZWcga2FubnN0IER1IGRlbiBXYWxkIHdpZWRlciB2ZXJsYXNzZW4gd2VubiBEdSBtb2VjaHRlc3QuXG4iKTsKKyAgIEFkZERldGFpbCgoeyJib2RlbiJ9KSwKKyAgICAgIkRlciBCb2RlbiBpc3QgaGllciBuaXJnZW5kcyBuYWNrdCBzaWNodGJhciwgc29uZGVybiBpc3QgbWl0IGVpbmVtIHNjaG9lbmVuXG4iCisgICAgKyJncnVlbmVuIFJhc2VudGVwcGljaCBiZWRlY2t0LiBOaWNodCB6dSBob2NoIHVuZCBuaWNodCB6dSB0aWVmLCBvZmZlbnNpY2h0bGljaFxuIgorICAgICsiYmVkYXJmIGRpZXNlIEdyYXNhcnQga2VpbmVybGVpIFBmbGVnZSBvZGVyIGFiZXIgaXJnZW5kamVtYW5kIHBmbGVndCBkaWVzZW5cbiIKKyAgICArIlJhc2VuIGhpZXIgc2VlZWhoaGhycnIgZ3J1ZW5kbGljaC5cbiIpOworICAgQWRkRGV0YWlsKCh7ImdyYXNhcnQiLCAicmFzZW4iLCAiYXJ0IiwgImdyYXMiLCAicmFzZW50ZXBwaWNoIiwgImhhbG1lIn0pLAorICAgICAiRHUgc2NoYXVzdCBEaXIgZGVuIFJhc2VuIG5vY2ggZWlubWFsIGdydWVuZGxpY2ggYW4gdW5kIHN0cmVpY2hzdCBtaXQgRGVpbmVyXG4iCisgICAgKyJIYW5kIGR1cmNoIGRpZSBIYWxtZS4gV2FzIGF1Y2ggaW1tZXIgZGFzIGZ1ZXIgZWluZSBBcnQgaXN0LCBzb2xjaCBlaW5lbiBSYXNlblxuIgorICAgICsiaGFzdCBEdSBub2NoIG5pY2h0IGdlc2Vobi5cbiIpOworICAgQWRkRGV0YWlsKCJoYW5kIiwKKyAgICAgIlNlaSBsaWViZXIgdm9yc2ljaHRpZywgc29uc3QgaXN0IGRpZSBIYW5kIHNjaG5lbGxlciBhYiBhbHMgRHUgZGVua3N0Li4uXG4iKTsKKyAgIEFkZERldGFpbCgicGZsZWdlIiwKKyAgICAgIk9iIGplbWFuZCBkaWVzZW4gUmFzZW4gcGZsZWd0LCBiencuIF93ZXJfIGthbm5zdCBEdSBuaWNodCBlbnRkZWNrZW4uLi5cbiIpOworICAgQWRkU291bmRzKCh7InJhdXNjaGVuIiwgIndhc3NlciJ9KSwgIkxlaXNlIGhvZXJzdCBEdSBkYXMgcmF1c2NoZW4gZGVzIFdhc3NlcnMuLi4uXG4iKTsKK30KKworI2RlZmluZSBWRVJCIChbImlzcyI6ICJlc3NlbiIsICJlc3NlIjogImVzc2VuIiwgInBmbHVlY2siOiAicGZsdWVja2VuIiwgInBmbHVlY2tlIjogInBmbHVlY2tlbiJdKQorCitzdGF0aWMgaW50IGNtZF9waWx6ZShzdHJpbmcgc3RyKQoreworICAgbm90aWZ5X2ZhaWwoIldhcyBtb2VjaHRlc3QgRHUgIitWRVJCW3F1ZXJ5X3ZlcmIoKV0rIj9cbiIpOworICAgaWYgKHN0ciE9InBpbHoiICYmIHN0ciE9InBpbHplIikgcmV0dXJuIDA7CisgICBpZiAocGxhbnQ+dGltZSgpKSB7CisgICAgICB3cml0ZSgiRHUgc29sbHRlc3QgZGllIFBpbHplIGVyc3RtYWwgaW4gUnVoZSB3aWVkZXIgZXR3YXMgbmFjaHdhY2hzZW4gbGFzc2VuLlxuIik7CisgICAgICByZXR1cm4gMTsKKyAgIH0KKyAgIGlmIChQTC0+UXVlcnlQcm9wKFpBVUJFUldBTEQpPD10aW1lKCkpIHsKKyAgICAgIHdyaXRlKCJEdSBiaXN0IG51ciBHYXN0IGhpZXIgdW5kIGRpZSBCZXdvaG5lciBkZXMgWmF1YmVyd2FsZHMsIHNlaGVuIGVzIG5pY2h0IGdlcm5lXG4iCisgICAgICAgICAgICsid2VubiBtYW4gaGllciBlaW5mYWNoIHNvIGRpZSBQaWx6ZSBwZmx1ZWNrdC5cbiIpOworICAgICAgcmV0dXJuIDE7CisgICB9CisgICBwbGFudD10aW1lKCkrMzAwOworICAgd3JpdGUoIkR1IHBmbHVlY2tzdCBEaXIgZWluaWdlIFBpbHplIHVuZCBpc3N0IHNpZS4gQW5zY2hsaWVzc2VuZCBnZWh0IGVzIERpclxuIgorICAgICAgICArImJlZGV1dGVuZCBiZXNzZXIuXG4iKTsKKyAgIFBMLT5yZWR1Y2VfaGl0X3BvaW50cyggbmVnYXRlKDEwMCtyYW5kb20oMTAwKSkgKTsKKyAgIHJldHVybiAxOworfQorCitzdGF0aWMgaW50IGNtZF9mYXJuZShzdHJpbmcgc3RyKQoreworICAgaW50IGZvb2Q7CisgICBub3RpZnlfZmFpbCgiV2FzIG1vZWNodGVzdCBEdSAiK1ZFUkJbcXVlcnlfdmVyYigpXSsiP1xuIik7CisgICBpZiAoc3RyIT0iZmFybiIgJiYgc3RyIT0iZmFybmUiKSByZXR1cm4gMDsKKyAgIGlmIChQTC0+UXVlcnlQcm9wKFpBVUJFUldBTEQpPD10aW1lKCkpIHsKKyAgICAgIHdyaXRlKCJEdSBiaXN0IG51ciBHYXN0IGhpZXIgdW5kIGRpZSBCZXdvaG5lciBkZXMgWmF1YmVyd2FsZHMsIHNlaGVuIGVzIG5pY2h0IGdlcm5lXG4iCisgICAgICAgICAgICsid2VubiBtYW4gaGllciBlaW5mYWNoIHNvIGRlbiBGYXJuIGFicmVpc3N0LlxuIik7CisgICAgICByZXR1cm4gMTsKKyAgIH0KKyAgIC8vIGRhcyB0YW5rZW4gYW0gV2Fzc2VyIGlzdCB1bXNvbnN0LCBlcyBoZWlsdCBkYWJlaSB3aWUgZWluCisgICAvLyBtaXR0bGVyZXMgS25laXBlbmVzc2VuIGRhcyBnZW5hdSAxIE11ZW56ZSBrb3N0ZXQuIEdlaGVpbHQgd2VyZGVuIG51ciBIUAorICAgLy8gRWluIE1pc3NicmF1Y2ggaXN0IGltIFdhbGQgYXVzZ2VzY2hsb3NzZW4sIGJ6dy4gbWFuIG11ZXNzdGUgZGVuCisgICAvLyBnZXNhbXRlbiBXYWxkIGxlZXJtZXR6ZWxuIHVuZCBrYW5uIGRhbm4gaGllciB0YW5rZW4gYmlzIHp1bSBuYWVjaHN0ZW4KKyAgIC8vIHJlc2V0LiBCZWkgS29zdGVuIHZvbiBlaW5lciBNdWVuemUgcHJvIEhlaWx1bmcgaXN0IGVzIHNlaHIgZnJhZ2xpY2gKKyAgIC8vIG9iIHNpY2ggZGFzIGxvaG50Li4uLiA6KQorICAgZm9vZD0oUEwtPlF1ZXJ5UHJvcChQX01BWF9GT09EKSkgLSAoUEwtPlF1ZXJ5UHJvcChQX0ZPT0QpKTsKKyAgIGlmIChmb29kPjEwKSBmb29kPTEwOyAvLyBuaWUgbWVociBhbHMgZnVlciAxMCBmb29kIHRhbmtlbi4uLgorICAgaWYgKGZvb2QgPD0gMCB8fCAhUEwtPmVhdF9mb29kKGZvb2QsIDEpKSB7CisgICAgICB3cml0ZSgiRHUgYmlzdCBzbyB2b2xsLCBEdSBrYW5uc3QgbGVpZGVyIHdpcmtsaWNoIG5pY2h0cyBtZWhyIGVzc2VuLi4uXG4iKTsKKyAgICAgIHJldHVybiAxOworICAgfQorICAgd3JpdGUoIkR1IHBmbHVlY2tzdCBlaW4gd2VuaWcgdm9uIGRlbSBGYXJuIHVuZCBpc3N0IGlobi4gU29nbGVpY2ggc3B1ZXJzdCBEdSwgd2llIGVzXG4iCisgICAgICAgICsiRGlyIGFsbG1hZWhsaWNoIHdpZWRlciBiZXNzZXIgZ2VodC4uLlxuIik7CisgICBpZiAoUEwtPmVhdF9mb29kKGZvb2QpKSB7IC8vIGZvb2QgZ3V0c2NocmVpYmVuIGVyZm9sZ3JlaWNoPworICAgICAgUEwtPmJ1ZmZlcl9ocChmb29kKjYsIDgpOworICAgICAgUEwtPlNldFByb3AoWkFVQkVSV0FMRCwgdGltZSgpK0FHR1JFU1NJVkVfVElNRSk7CisgICB9CisgICByZXR1cm4gMTsKK30KKworc3RhdGljIGludCBjbWRfc3VlZGVuKCkKK3sKKyAgIGlmIChQTC0+UXVlcnlQcm9wKFpBVUJFUldBTEQpPnRpbWUoKSkgeworICAgICAgd3JpdGUoIkR1IHZlcnN1Y2hzdCBpbiBkZW4gV2FsZCB6dSBmbHVlY2h0ZW4sIGRvY2ggZGllIEZhcm5lIHVuZCBCdWVzY2hlIGJpbGRlblxuIgorICAgICAgICAgICArImVpbmUgcGZsYW56bGljaGUgQmFycmllcmUgdW5kIGxhc3NlbiBEaWNoIG5pY2h0IGhpbmR1cmNoLlxuIik7CisgICAgICByZXR1cm4gMTsKKyAgIH0KKyAgIHdyaXRlKCJEdSBtYWNoc3QgZWluZW4gU2Nocml0dCBoaW4gbmFjaCBTdWVkZW4gdW5kIHNvZm9ydCBiaWVnZW4gc2ljaCBhdWYgbWFnaXNjaGVcbiIKKyAgICAgICAgKyJXZWlzZSBkaWUgRmFybmUgdW5kIEJ1ZXNjaGUgenVyIFNlaXRlIHVuZCBnZWJlbiBlaW5lbiBUcmFtcGVscGZhZCBuYWNoIFN1ZWRlblxuIgorICAgICAgICArImZyZWkuXG4iKTsKKyAgIFBMLT5tb3ZlKFJPT00oImh1ZXR0ZSIpLCBNX0dPLCAiZHVyY2ggZGllIEJ1ZXNjaGUgbmFjaCBTdWVkZW4iLCAiendhZW5ndCBzaWNoIik7CisgICByZXR1cm4gMTsKK30KZGlmZiAtLWdpdCBhL2RvYy9iZWlzcGllbGUvemF1YmVyd2FsZC9yb29tL3N0ZHJvb20uYyBiL2RvYy9iZWlzcGllbGUvemF1YmVyd2FsZC9yb29tL3N0ZHJvb20uYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4zNTI5N2U2Ci0tLSAvZGV2L251bGwKKysrIGIvZG9jL2JlaXNwaWVsZS96YXViZXJ3YWxkL3Jvb20vc3Rkcm9vbS5jCkBAIC0wLDAgKzEsNTIgQEAKKy8vIChjKSBieSBQYWRyZWljIChQYWRyZWljQG1nLm11ZC5kZSkKKworaW5oZXJpdCAic3RkL3Jvb20iOworCisjaW5jbHVkZSAiLi4vZmlsZXMuaCIKKyNpbmNsdWRlIDxtb3ZpbmcuaD4KKworc3RhdGljIHN0cmluZyBzb3VuZHMoKTsKKwordm9pZCBjcmVhdGUoKQoreworICAgOjpjcmVhdGUoKTsKKyAgIFNldFByb3AoUF9OT19UUE9SVCwgTk9fVFBPUlQpOworICAgQWRkU21lbGxzKFNFTlNFX0RFRkFVTFQsCisgICAgICJEZXIgRHVmdCB2b20gSGFyeiBkZXIgQmFldW1lIHVuZCBlaW5pZ2VyIHNvbnN0aWdlciBQZmxhbnplbiBsaWVndCBpbiBkZXIgTHVmdC5cbiIKKyAgICArIk1hbiBtZXJrdCBzb2ZvcnQsIER1IHN0ZWhzdCBtaXR0ZW0gaW0gV2FsZC5cbiIpOworICAgQWRkU291bmRzKFNFTlNFX0RFRkFVTFQsICMnc291bmRzKTsKKyAgIEFkZFNvdW5kcygoeyJ2b2VnZWwiLCAidm9lZ2VsbiIsICJ6d2l0c2NoZXJuIn0pLAorICAgICAiRGFzIGhlcnJsaWNoZSB6d2l0c2NoZXJuIGRlciBWb2VnZWwsIGlzdCBkYXMgZWluemlnZSBkYXMgZGllIFJ1aGUgaW0gV2FsZFxuIgorICAgICsiZHVyY2hicmljaHQuXG4iKTsKK30KKworc3RhdGljIHN0cmluZyBzb3VuZHMoKQoreworICAgaWYgKHNpemVvZihmaWx0ZXJfb2JqZWN0cyhhbGxfaW52ZW50b3J5KCksICJJbkZpZ2h0IikpKQorICAgICAgcmV0dXJuICJEZXIgTGFlcm0gZGVzIEthbXBmZXMgc3RvZXJ0IGRpZSBSdWhlIGRlcyBXYWxkZXMgdW5kIHVlYmVydG9lbnQgYWxsZXMuXG4iOworICAgaWYgKHNpemVvZihmaWx0ZXIoYWxsX2ludmVudG9yeSgpLCAjJ3F1ZXJ5X29uY2VfaW50ZXJhY3RpdmUpKT4xKQorICAgICAgcmV0dXJuICJFcyBpc3QgdW5oZWltbGljaCBzdGlsbCBoaWVyIGltIFdhbGQgdW5kIG51ciBkYXMgendpdHNjaGVybiBlaW5pZ2VyIFZvZWdlbFxuIgorICAgICAgICAgICAgKyJpc3QgenUgaG9lcmVuLlxuIjsKKyAgIHJldHVybiAiRHUgaGFzdCBkYXMgR2VmdWVobCwgYWxzIHdhZXJzdCBEdSBnYW56IGFsbGVpbiBoaWVyIGltIFdhbGQuIEFsbGVzIGlzdCBydWhpZ1xuIgorICAgICAgICAgKyJ1bmQgbnVyIGhpZXIgdW5kIGRhIHZlcm5pbW1zdCBEdSBkYXMgendpdHNjaGVybiBlaW5pZ2VyIFZvZWdlbC5cbiI7Cit9CisKK3ZhcmFyZ3Mgdm9pZCBkZWxheV9yZXNldChpbnQgdGltZSkKKy8vIE5QQ3Mga29lbm5lbiBib2luZyByZXNldHMgdmVyaGluZGVybgoreworICAgaWYgKHRpbWUpCisgICAgICBzZXRfbmV4dF9yZXNldCh0aW1lKTsKKyAgIGVsc2Ugc2V0X25leHRfcmVzZXQoMzYwMCk7Cit9CisKK2ludCBfbm9ybWFsZnVuY3Rpb24oKQoreworICBtaXhlZCB6OworICBpbnQgaTsKKyAgej10aGlzX3BsYXllcigpLT5RdWVyeVByb3AoQVVTR0FORyk7CisgIHRoaXNfcGxheWVyKCktPlNldFByb3AoQVVTR0FORywgcXVlcnlfdmVyYigpKTsKKyAgaT0oaW50KTo6X25vcm1hbGZ1bmN0aW9uKCk7CisgIGlmICghaSkgdGhpc19wbGF5ZXIoKS0+U2V0UHJvcChBVVNHQU5HLCB6KTsKKyAgcmV0dXJuIGk7Cit9CisgICAgICAgICAgICAgIApcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2RvYy9iZWlzcGllbGUvemF1YmVyd2FsZC9yb29tL3N0ZWluLmMgYi9kb2MvYmVpc3BpZWxlL3phdWJlcndhbGQvcm9vbS9zdGVpbi5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmNkNzRiMDcKLS0tIC9kZXYvbnVsbAorKysgYi9kb2MvYmVpc3BpZWxlL3phdWJlcndhbGQvcm9vbS9zdGVpbi5jCkBAIC0wLDAgKzEsMTEyIEBACisvLyAoYykgYnkgUGFkcmVpYyAoUGFkcmVpY0BtZy5tdWQuZGUpCisKKyNpbmNsdWRlICIuLi9maWxlcy5oIgorCitpbmhlcml0IFJPT00oInN0ZHJvb20iKTsKKwordm9pZCBjcmVhdGUoKQoreworICAgOjpjcmVhdGUoKTsKKyAgIFNldFByb3AoUF9JTkRPT1JTLCAwKTsKKyAgIFNldFByb3AoUF9MSUdIVCwgMSk7CisgICBTZXRQcm9wKFBfSU5UX1NIT1JULCAiQmVpIGVpbmVtIFN0ZWluIik7CisgICBBZGRTcGVjaWFsRGV0YWlsKCh7Im9ydCIsICJ3YWxkIiwgInBsYXR6In0pLCAiX3F1ZXJ5X2ludF9sb25nIik7CisgICBBZGREZXRhaWwoInN0ZWluIiwKKyAgICAgIkRlciBTdGVpbiBpc3QsIGR1cmNoIGRpZSBTb25uZW5zdHJhaGxlbiBvcmRlbnRsaWNoIGF1ZmdlaGVpenQsIGFuZ2VuZWhtIHdhcm1cbiIKKyAgICArInVuZCBiaWV0ZXQgZWlnZW50bGljaCBkZW4gaWRlYWxlbiBQbGF0eiB1bSBlcyBzaWNoIGd1dCBnZWhuIHp1IGxhc3NlbiB1bmQgaW5cbiIKKyAgICArImRlciBTb25uZSB6dSBsaWVnZW4uXG4iKTsKKyAgIEFkZERldGFpbCgoeyJzb25uZSIsICJoaW1tZWwiLCAic29ubmVuc3RyYWhsZW4iLCAic3RyYWhsZW4ifSksCisgICAgICJEZXIgYmxhdWUgSGltbWVsIGlzdCBuYWhlenUgd29sa2VuZnJlaSB1bmQgc28gc3RyYWhsdCBkaWUgU29ubmUgaW4gdm9sbGVyXG4iCisgICAgKyJQcmFjaHQgb2JlbiBhbSBIaW1tZWwgdW5kIGlocmUgU3RyYWhsZW4gcHJhc3NlbG4gYXVmIERlaW5lIEhhdXQuXG4iKTsKKyAgIEFkZERldGFpbCgoeyJib2RlbiIsICJ3ZWciLCAid2FsZHdlZyIsICJlcmRlIn0pLAorICAgICAiRWluIGdhbnogbm9ybWFsZXIgV2FsZHdlZyBoYWx0LCBlaW4gYmlzc2NoZW4gc2FuZGlnLCBlaW5pZ2Uga2xlaW5lIEFlc3RjaGVuXG4iCisgICAgKyJnYW56IG5vcm1hbCBoYWx0LlxuIik7CisgICBBZGRTcGVjaWFsRGV0YWlsKCJ6ZWl0IiwgImRldF96ZWl0Iik7CisgICBBZGREZXRhaWwoKHsiYWVzdGNoZW4iLCAic3RvZWNrY2hlbiJ9KSwKKyAgICAgIkdhbnoga2xlaW5lIGhlcnVudGVyZ2VmYWxsZW5lIFN0b2Vja2NoZW4sIGR1cmNoIHJlZ2VzIGRydWViZXIgbGF1ZmVuXG4iCisgICAgKyJpbSBMYXVmZSBkZXIgWmVpdCBrbGVpbmdlbWFsZW4gdW5kIHZvbSBXZXR0ZXIgYXVmZ2Vsb2VzdC4uLlxuIik7CisgICBBZGREZXRhaWwoIndldHRlciIsCisgICAgICJBdWNoIHdlbm4gaGllciBoZXV0ZSBkaWUgU29ubmUgc2NoZWludCwgZ2lidCBlcyBuYXR1ZXJsaWNoIGF1Y2ggaGllclxuIgorICAgICsiZ2VsZWdlbnRsaWNoIHZlcnJlZ25ldGUgVGFnZS5cbiIpOworICAgQWRkRGV0YWlsKCJ0YWdlIiwgIk5hamEuLi4gYWxsenV2aWVsZSBzaW5kIGVzIGplZG9jaCBuaWNodC5cbiIpOworICAgQWRkRGV0YWlsKCh7Im5vcmRvc3RlbiIsICJsaWNodHVuZyIsICJhdXNnYW5nIiwgIndlaWhlciJ9KSwKKyAgICAgIkltIE5vcmRvc3RlbiBrYW5uc3QgRHUgaW1tZXIgbm9jaCBkaWUgZ3Jvc3NlIExpY2h0dW5nIG1pdCBkZW4gd2FuZGVybmRlbiBFaWNoZW5cbiIKKyAgICArInVuZCBkZW0gdmVyd3Vuc2NoZW5lbiBXZWloZXIgZXJrZW5uZW4uXG4iKTsKKyAgIEFkZERldGFpbCgoeyJlaWNoZW4iLCAid2FuZGVybmRlIGVpY2hlbiJ9KSwKKyAgICAgIkltIE5vcmRvc3RlbiBhdWYgZGVyIExpY2h0dW5nIGhhc3QgRHUgdm9yaGluIHdhbmRlcm5kZSBFaWNoZW4gZ2VzZWhuLFxuIgorICAgICsidmllbGxlaWNodCBzb2xsdGVzdCBEdSBlaW5mYWNoIG5vY2htYWwgenVydWVjayBnZWhuIHVuZCBzaWUgRGlyIG5hZWhlclxuIgorICAgICsiYW5zY2hhdW4uXG4iKTsKKyAgIEFkZERldGFpbCgoeyJ3b2xrZSIsICJ3b2xrZW4iLCAic2NoYWVmY2hlbndvbGtlIn0pLAorICAgICAiRGVyIEhpbW1lbCBpc3QgZWlnZW50bGljaCB3b2xrZW5mcmVpIG51ciBoaWVyIHVuZCBkYSB6aWVodCBtYWwgZWluZSBrbGVpbmVcbiIKKyAgICArIlNjaGFlZmNoZW53b2xrZSB2b3JiZWkuXG4iKTsKKyAgIEFkZEV4aXQoIm5vcmRvc3RlbiIsIFJPT00oImxpY2h0dW5nc3ciKSk7CisgICBBZGRJdGVtKE5QQygidGl0aW5hIiksIFJFRlJFU0hfUkVNT1ZFLCAxKTsKKyAgIEFkZENtZCgoeyJzZXR6IiwgInNldHplIiwgImxlZyIsICJsZWdlIiwgImtsZXR0ZXIiLCAia2xldHRlcmUifSksICJjbWRfc2V0emVuIik7CisgICBBZGRDbWQoKHsic3RlaCIsICJzdGVoZSJ9KSwgImNtZF9hdWZzdGVobiIpOworfQorCisjZGVmaW5lIFNURUlOIFdBTERJRCgic3RlaW4iKQorCit2b2lkIGluaXQoKQoreworICBpZiAoUEwpIFBMLT5TZXRQcm9wKFNURUlOLCAwKTsKKyAgOjppbml0KCk7Cit9CisKK3N0YXRpYyBpbnQgY21kX2F1ZnN0ZWhuKHN0cmluZyBzdHIpCit7CisgICAgaWYgKCFQTC0+UXVlcnlQcm9wKFNURUlOKSkgcmV0dXJuIDA7CisgICAgaWYgKHN0ciE9ImF1ZiIgJiYgc3RyIT0idm9uIHN0ZWluIGF1ZiIpIHsKKyAgICAgICBub3RpZnlfZmFpbCgiVm9uIHdhcyBtb2VjaHRlc3QgRHUgYXVmc3RlaG4/XG4iKTsKKyAgICAgICByZXR1cm4gMDsKKyAgICB9CisgICAgUEwtPlNldFByb3AoU1RFSU4sIDApOworICAgIHdyaXRlKCJEdSBrbGV0dGVyc3QgYWxzbyB2b20gU3RlaW4gd2llZGVyIHJ1bnRlciB1bmQgc3RlaHN0IGF1Zi5cbiIpOworICAgIHJldHVybiAxOworfQorCisjZGVmaW5lIFZFUkIoeCkgKFsic2V0eiI6ICJzZXR6dCIsICJsZWciOiAibGVnc3QiLCAia2xldHRlciI6ICJrbGV0dGVyc3QiXSlbeF0KKworc3RhdGljIGludCBjbWRfc2V0emVuKHN0cmluZyBzdHIpCit7CisgICBzdHJpbmcgdmVyYjsKKyAgIHZlcmI9cXVlcnlfdmVyYigpOworICAgaWYgKHZlcmIgJiYgdmVyYls8MV09PSdlJykgdmVyYj12ZXJiWzAuLjwyXTsKKyAgIGlmIChzdHIhPSJhdWYgc3RlaW4iICYmIHN0ciE9InN0ZWluIiAmJiBzdHIhPSJ2b24gc3RlaW4iKSB7CisgICAgICBub3RpZnlfZmFpbChCUygiV29oaW4gbW9lY2h0ZXN0IER1ICIKKyAgICAgICAgICAgICAgICAgKyh2ZXJiIT0ia2xldHRlciIgPyAiRGljaCAiIDogIiIpK3ZlcmIrImVuPyIpKTsKKyAgICAgIHJldHVybiAwOworICAgfQorICAgaWYgKFBMLT5RdWVyeVByb3AoU1RFSU4pKSB7CisgICAgICBpZiAodmVyYiE9ImtsZXR0ZXIiIHx8IHN0cj09ImF1ZiBzdGVpbiIpIHsKKyAgICAgICAgIHdyaXRlKCJEdSBzaXR6dCBkb2NoIGJlcmVpdHMgYXVmIGRlbSBTdGVpbiFcbiIpOworICAgICAgICAgcmV0dXJuIDE7CisgICAgICB9CisgICAgICBQTC0+U2V0UHJvcChTVEVJTiwgMCk7CisgICAgICB3cml0ZSgiRHUga2xldHRlcnN0IGFsc28gdm9tIFN0ZWluIHdpZWRlciBydW50ZXIgdW5kIHN0ZWhzdCBhdWYuXG4iKTsKKyAgICAgIHJldHVybiAxOworICAgfQorCisgICB3cml0ZShCUygiRW50c3Bhbm50ICIrVkVSQih2ZXJiKSsiIER1ICIrKHZlcmIhPSJrbGV0dGVyIiA/ICJEaWNoICIgOiAiIikKKyAgICAgICAgKyJhdWYgZGVuIFN0ZWluIHVuZCBnZW5pZXNzdCBkaWUgU29ubmUuIikpOworICAgUEwtPlNldFByb3AoU1RFSU4sIHRpbWUoKSk7CisgICByZXR1cm4gMTsKK30KKworc3RhdGljIHN0cmluZyBkZXRfemVpdCgpCit7ICByZXR1cm4gIldpciBoYWJlbiBnZW5hdSAiK2R0aW1lKHRpbWUoKSlbPDguLl0rIi5cbiI7IH0KKworc3RhdGljIHN0cmluZyBfcXVlcnlfaW50X2xvbmcoKQoreworICAgaWYgKHByZXNlbnQoV0FMRElEKCJmZWUiKSwgTUUpKQorICAgICAgcmV0dXJuCisgICAgICAgICJIaWVyIG1pdHRlbiBpbSBXYWxkIHN0ZWh0IGVpbiBncm9zc2VyIFN0ZWluLCBhdWYgZGVtIFRpdGluYSBkaWUgd3VuZGVyc2Nob2VuZVxuIgorICAgICAgICsiV2FsZGZlZSBzaXR6dCB1bmQgc2ljaCBpbiBhbGxlciBSdWhlIGlociBsYW5nZXMgZ29sZGVuZXMgSGFhciBrYWVtbXQuIERpZVxuIgorICAgICAgICsiU29ubmUgc3RyYWhsdCBnZW5hdSBhdWYgZGVuIFN0ZWluIHVuZCBlcyBpc3Qgd29obCB3aXJrbGljaCBkZXIgZ2VtdWV0bGljaHN0ZVxuIgorICAgICAgICsiT3J0IGF1ZiBFcmRlbi4gTGlua3MgdW5kIHJlY2h0cyB2b20gV2VnIHNjaGxpZXNzdCBkZXIgZGljaHRlIFdhbGQgYW4gdW5kIHNvXG4iCisgICAgICAgKyJpc3QgZGVyIGVpbnppZ2UgQXVzZ2FuZyBSaWNodHVuZyBOb3Jkb3N0ZW4genVydWVjayB6dXIgTGljaHR1bmcuXG4iOworICAgcmV0dXJuICJIaWVyIG1pdHRlbiBpbSBXYWxkIHN0ZWh0IGVpbiBncm9zc2VyIFN0ZWluLCBkZXIgdm9uIGRlciBTb25uZSBvcmRlbnRsaWNoXG4iCisgICAgICAgICArImF1ZmdlaGVpenQgd2lyZCB1bmQgaWhuIHp1IGVpbmVtIHRyYXVtaGFmdGVuIE9ydCBmdWVyIGFsbGUgU29ubmVubGllYmhhYmVyXG4iCisgICAgICAgICArIm1hY2h0LiBMaW5rcyB1bmQgcmVjaHRzIHZvbSBXZWcgc2NobGllc3N0IGRpcmVrdCBkZXIgZGljaHRlIFdhbGQgYW4gdW5kIHNvXG4iCisgICAgICAgICArImlzdCBkZXIgZWluemlnZSBBdXNnYW5nIFJpY2h0dW5nIE5vcmRvc3RlbiB6dXJ1ZWNrIHp1ciBMaWNodHVuZy5cbiI7Cit9CmRpZmYgLS1naXQgYS9kb2MvYmVpc3BpZWxlL3phdWJlcndhbGQvcm9vbS90dWVtcGVsLmMgYi9kb2MvYmVpc3BpZWxlL3phdWJlcndhbGQvcm9vbS90dWVtcGVsLmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNmYyMmQ4NgotLS0gL2Rldi9udWxsCisrKyBiL2RvYy9iZWlzcGllbGUvemF1YmVyd2FsZC9yb29tL3R1ZW1wZWwuYwpAQCAtMCwwICsxLDE3OSBAQAorLy8gKGMpIGJ5IFRob21hcyBXaW5oZWxsZXIgKFBhZHJlaWNAbWcubXVkLmRlKQorCisjaW5jbHVkZSAiLi4vZmlsZXMuaCIKKyNpbmNsdWRlIDxtb3ZpbmcuaD4KKworaW5oZXJpdCBST09NKCJzdGRyb29tIik7Citpbmhlcml0ICIvc3RkL3Jvb20va3JhZXV0ZXIiOworCit2b2lkIGNyZWF0ZSgpCit7CisgICA6OmNyZWF0ZSgpOworICAgU2V0UHJvcChQX0xJR0hULCAyKTsKKyAgIFNldFByb3AoUF9JTkRPT1JTLCAwKTsKKyAgIFNldFByb3AoUF9JTlRfU0hPUlQsICJBbiBlaW5lbSB2ZXJ3dW5zY2hlbmRlbiBXZWloZXIiKTsKKyAgIEFkZFNwZWNpYWxEZXRhaWwoKHsib3J0IiwgIndlaWhlciJ9KSwgIl9xdWVyeV9pbnRfbG9uZyIpOworICAgQWRkRGV0YWlsKCh7InNlZXJvc2VuIiwgImZhcmJlbiIsICJmYXJiZW52aWVsZmFsdCJ9KSwKKyAgICAgIkF1ZiBkZW0gV2Fzc2VyIHNjaHdpbW1lbiB6YWhscmVpY2hlIFNlZXJvc2VuIGluIGFsbGVuIEZhcmJlbiBkZXMgUmVnZW5ib2dlbnNcbiIKKyAgICArImVpbmUgc29sY2hlIEZhcmJlbnZpZWxmYWx0IHdpZSBoaWVyLCBoYXN0IER1IGJpc2hlciBub2NoIG5pcmdlbmR3byBzb25zdFxuIgorICAgICsiZ2VzZWhuLlxuIik7CisgICBBZGREZXRhaWwoInJlZ2VuYm9nZW4iLCAiRGVyemVpdCBzdGVodCBrZWluZXIgYW0gSGltbWVsLlxuIik7CisgICBBZGREZXRhaWwoKHsibGliZWxsZSIsICJsaWJlbGxlbiIsICJhdG1vc3BoYWVyZSIsICJzdW1tZW4ifSksCisgICAgICJIaWVyIHVuZCBkYSBzY2h3aXJyZW4gdWViZXIgZGVtIFdlaWhlciBlaW5pZ2UgTGliZWxsZW4gaGVydW0uIElociBTdW1tZW5cbiIKKyAgICArInZlcmJyZWl0ZXQgZWluZSByaWNodGlnIGlkeWxsaXNjaGUgQXRtb3NwaGFlcmUgYW4gZGllc2VtIE9ydC5cbiIpOworICAgQWRkRGV0YWlsKCh7InBpeGllcyIsICJ6YXViZXJ3ZXNlbiJ9KSwKKyAgICAgIlBpeGllcyBzaW5kIGtsZWluZSB2ZXJzcGllbHRlIFphdWJlcndlc2VuLCBkaWUgaGllciBpbSBaYXViZXJ3YWxkIHdvaG5lbi4gVW1cbiIKKyAgICArImVpbmVtIHZvbiBpaG5lbiB6dSBiZWdlZ25lbiB3aXJzdCBEdSBoaWVyIGltIFdhbGQgc2ljaGVyIG5pY2ggbGFuZ2Ugc3VjaGVuXG4iCisgICAgKyJtdWVzc2VuLCBkb2NoIHZvcnNpY2h0LCBzaWUgaGFiZW4gbmljaHRzIGFscyBVbmZ1ZyBpbSBLb3BmLi4uXG4iKTsKKyAgIEFkZERldGFpbCgoeyJ3YWxkIiwgInphdWJlcndhbGQiLCAicHVua3QifSksCisgICAgICJEZXIgdmVyd3Vuc2NoZW5lIFdlaWhlciBpc3QgbWVociBvZGVyIHdlbmlnZXIgZGVyIHplbnRyYWxlIFB1bmt0IGhpZXIgaW1cbiIKKyAgICArIlphdWJlcndhbGQuIEVyIGxpZWd0IG1pdHRlbiBhdWYgZWluZXIgZ3Jvc3NlbiBMaWNodHVuZyB1bWdlYmVuIHZvbSBkaWNodGVuXG4iCisgICAgKyJXYWxkIGRlciBQaXhpZXNcbiIpOworICAgQWRkRGV0YWlsKCh7ImxpY2h0dW5nIiwgIm1pdHRlIn0pLAorICAgICAiRGVyIFdlaWhlciBiZWZpbmRldCBzaWNoIGdlbmF1IGluIGRlciBNaXR0ZSBkZXIgTGljaHR1bmcsIHNpZWggRGljaCBoYWx0XG4iCisgICAgKyJlaW5mYWNoIG1hbCB1bS5cbiIpOworICAgQWRkRGV0YWlsKCh7ImJvZGVuIiwgInVmZXIifSksCisgICAgICJEYXMgVWZlciBkZXMgV2VpaGVycyBiZXN0ZWh0IGF1cyB6YWhscmVpY2hlbiBTdGVpbmVuIGRpZSBiaXMgaW4gZGVuIFdlaWhlclxuIgorICAgICsiaGluZWlucmVpY2hlbi4gQXVmIHVuZCB6d2lzY2hlbiBkaWVzZW4gU3RlaW5lbiBzaW5kIGplZG9jaCB1ZWJlcmFsbCB6YWhscmVpY2hlXG4iCisgICAgKyJrbGVpbmUgdW5kIG1pdHRsZXJlIFBmbGFuemVuIGdld2FjaHNlbi5cbiIpOworICAgQWRkRGV0YWlsKCh7InN0ZWluIiwgInN0ZWluZSJ9KSwgIkVpbiBTdGVpbiBpc3QgZWluIFN0ZWluIGlzdCBlaW4gU3RlaW4gaXN0IGVpbiBTdGVpbiBpc3QgZWluIFN0ZWluLlxuIik7CisgICBBZGREZXRhaWwoInBmbGFuemVuIiwKKyAgICAgIkRpZSB2ZXJzY2hpZWRlbnN0ZW4gUGZsYW56ZW4gd2FjaHNlbiB6d2lzY2hlbiBkZW4gU3RlaW5lbiBlbXBvciB1bmQgYmVncnVlbmVuXG4iCisgICAgKyJkYXMgVWZlci4gQW4gZWluZXIgU3RlbGxlIGthbm5zdCBEdSBzb2dhciB3ZWlzc2VuIFdhc3Nlci1IYWhuZW5mdXNzIHdhY2hzZW5cbiIKKyAgICArInNlaGVuLlxuIik7CisgICBBZGREZXRhaWwoKHsid2Fzc2VyIiwgInNjaGltbWVyIiwgInNjaGltbWVybiJ9KSwKKyAgICAgIkRhcyBXYXNzZXIgaXN0IGlyZ2VuZHdpZSByZWNodCB0cnVlYiB1bmQgZXMgZ2VodCBlaW4gc2VociBzZWx0c2FtZXMgU2NoaW1tZXJuXG4iCisgICAgKyJ2b24gaWhtIGF1cy4gSXJnZW5kZXR3YXMgYmVzb25kZXJlcyBoYXQgZXMgbWl0IGRpZXNlbSBXYXNzZXIgYXVmIHNpY2gsIGRhc1xuIgorICAgICsic3B1ZXJzdCBEdSBnZW5hdS4gRHUgd2Vpc3N0IGplZG9jaCBuaWNodCwgb2IgZXMgZXR3YXMgZ3V0ZXMgb2RlciBldHdhcyBib2VzZXNcbiIKKyAgICArImlzdC5cbiIpOworICAgQWRkRGV0YWlsKCh7ImhpbW1lbCIsICJsdWZ0IiwgInNvbm5lIiwgIndhZXJtZSIsICJzdHJhaGxlbiIsICJzb25uZW5zdHJhaGxlbiJ9KSwKKyAgICAgIkRpZSBTb25uZSBzdGVodCBob2NoIGFtIEhpbW1lbCB1bmQgZnVlbGx0IGRpZXNlbiBPcnQgbWl0IGVpbmVyIGhlcnJsaWNoZW5cbiIKKyAgICArIldhZXJtZSB1bmQgaWhyZSBTdHJhaGxlbiByZWZsZWt0aWVyZW4gaW0gV2Fzc2VyIGluIGFsbGVuIGVyZGVua2xpY2hlbiBGYXJiZW4uXG4iKTsKKyAgIEFkZEV4aXQoIm5vcmRlbiIsIFJPT00oImxpY2h0dW5nbiIpKTsKKyAgIEFkZEV4aXQoIm5vcmRvc3RlbiIsIFJPT00oImxpY2h0dW5nbm8iKSk7CisgICBBZGRFeGl0KCJub3Jkd2VzdGVuIiwgUk9PTSgibGljaHR1bmdudyIpKTsKKyAgIEFkZEV4aXQoIm9zdGVuIiwgUk9PTSgibGljaHR1bmdvIikpOworICAgQWRkRXhpdCgid2VzdGVuIiwgUk9PTSgibGljaHR1bmd3IikpOworICAgQWRkRXhpdCgic3VlZGVuIiwgUk9PTSgibGljaHR1bmdzIikpOworICAgQWRkRXhpdCgic3VlZHdlc3RlbiIsIFJPT00oImxpY2h0dW5nc3ciKSk7CisgICBBZGRFeGl0KCJzdWVkb3N0ZW4iLCBST09NKCJsaWNodHVuZ3NvIikpOworICAgQWRkSXRlbShOUEMoInVsaW5pYSIpLCBSRUZSRVNIX1JFTU9WRSwgMSk7CisgICBBZGRDbWQoKHsiYmFkIiwgImJhZGUiLCAic2Nod2ltbSIsICJzY2h3aW1tZSIsICJ0YXVjaCIsICJ0YXVjaGUifSksICJjbWRfc2Nod2ltbWVuIik7CisgICBBZGRDbWQoKHsidHJpbmsiLCAidHJpbmtlIn0pLCAiY21kX3RyaW5rZW4iKTsKKyAgIEFkZENtZCgoeyJwZmx1ZWNrIiwgInBmbHVlY2tlIn0pLCAiY21kX3BmbHVlY2tlbiIpOworICAgLy8gRGV0YWlsIHBlciBIYW5kIGhpbnp1ZnVlZ2VuLCBkYSBHZXRQbGFudCBhbnN0ZWxsZSB2b24gQWRkUGxhbnQKKyAgIC8vIHZlcndlbmRldCB3aXJkLgorICAgQWRkUGxhbnREZXRhaWwoT0JKKCJoYWhuZW5mdXNzIikpOworfQorCitzdGF0aWMgaW50IGNtZF90cmlua2VuKHN0cmluZyBzdHIpCit7CisgICBpbnQgZHJpbms7CisgICBvYmplY3Qgb2I7CisgICBpZiAobWVtYmVyKCh7Indhc3NlciIsICJ3YXNzZXIgYXVzIHRlaWNoIiwgIndhc3NlciBhdXMgdHVlbXBlbCIsCisgICAgICAgICAgICAgICAgIndhc3NlciBhdXMgc2VlIiwgImF1cyB0ZWljaCIsICJhdXMgdHVlbXBlbCIsICJhdXMgd2Fzc2VyIiwKKyAgICAgICAgICAgICAgICAiYXVzIHNlZSJ9KSwgc3RyKT09LTEpIHsKKyAgICAgIG5vdGlmeV9mYWlsKCJXYXMgbW9lY2h0ZXN0IER1IHRyaW5rZW4/XG4iKTsKKyAgICAgIHJldHVybiAwOworICAgfQorICAgaWYgKChvYj1wcmVzZW50KFdBTERJRCgiZmVlIiksIE1FKSkgJiYgIW9iLT5Jc0VuZW15KFBMKSkgeworICAgICAgd3JpdGUoQlMoIkRpZSBXYWxkZmVlIHNjaGVpbnQgRGVpbmVuIEVudHNjaGx1c3MgZWluIHdlbmlnIHZvbiBkZW0gIgorICAgICAgICAgKyJXYXNzZXIgenUga29zdGVuLCBiZW1lcmt0IHp1IGhhYmVuIHVuZCBzdHJhZnQgRGljaCBtaXQgZWluZW0gIgorICAgICAgICAgKyJtYWhuZW5kZW4gQmxpY2sgYWIuIER1IHVlYmVybGVnc3QgZXMgRGlyIGFsc28gbm9jaCBlaW5tYWwgdW5kICIKKyAgICAgICAgICsibGFlc3N0IHZvbiBEZWluZW0gVm9yaGFiZW4gYWIuIikpOworICAgICAgcmV0dXJuIDE7CisgICB9CisgICAvLyBkYXMgdGFua2VuIGFtIFdhc3NlciBpc3QgdW1zb25zdCwgZXMgaGVpbHQgZGFiZWkgd2llIGVpbgorICAgLy8gS25laXBlbmdldHJhZW5rIGRhcyBnZW5hdSAxIE11ZW56ZSBrb3N0ZXQuIEdlaGVpbHQgd2VyZGVuIG51ciBTUAorICAgLy8gRWluIE1pc3NicmF1Y2ggaXN0IGltIFdhbGQgYXVzZ2VzY2hsb3NzZW4sIGJ6dy4gbWFuIG11ZXNzdGUgZGVuCisgICAvLyBnZXNhbXRlbiBXYWxkIGxlZXJtZXR6ZWxuIHVuZCBrYW5uIGRhbm4gdWViZW4gYmlzIHp1bSBuYWVjaHN0ZW4KKyAgIC8vIHJlc2V0LiBCZWkgS29zdGVuIHZvbiBlaW5lciBNdWVuemUgcHJvIEhlaWx1bmcgaXN0IGVzIHNlaHIgZnJhZ2xpY2gKKyAgIC8vIG9iIHNpY2ggZGFzIGxvaG50Li4uLiA6KQorICAgZHJpbms9KFBMLT5RdWVyeVByb3AoUF9NQVhfRFJJTkspKSAtIChQTC0+UXVlcnlQcm9wKFBfRFJJTkspKTsKKyAgIGlmIChkcmluaz4xMCkgZHJpbms9MTA7IC8vIG5pZSBtZWhyIGFscyBmdWVyIDEwIHNvYWsgdGFua2VuLi4uCisgICBpZiAoZHJpbmsgPD0gMCB8fCAhUEwtPmRyaW5rX3NvZnQoZHJpbmssIDEpKSB7CisgICAgICB3cml0ZSgiRHUgYmlzdCBzbyB2b2xsLCBEdSBrYW5uc3QgbGVpZGVyIHdpcmtsaWNoIG5pY2h0cyBtZWhyIHRyaW5rZW4uLi5cbiIpOworICAgICAgcmV0dXJuIDE7CisgICB9CisgICB3cml0ZSgiRHUgZ2Voc3QgYW4gZGVuIFJhbmQgZGVzIFdlaWhlcnMgdW5kIG5pbW1zdCBlaW5lbiBrcmFlZnRpZ2VuIFNjaGx1Y2sgdm9uIGRlbVxuIgorICAgICAgICArIldhc3Nlci4gU29nbGVpY2ggc3B1ZXJzdCBEdSwgd2llIERlaW5lIG1lbnRhbGVuIEtyYWVmdGUgbGFuZ3NhbSBnZXN0YWVya3RcbiIKKyAgICAgICAgKyJ3ZXJkZW4uXG4iKTsKKyAgIGlmIChQTC0+ZHJpbmtfc29mdChkcmluaykpIHsgLy8gc29hayBndXRzY2hyZWliZW4gZXJmb2xncmVpY2g/CisgICAgICBQTC0+YnVmZmVyX3NwKGRyaW5rKjYsIDUpOworICAgICAgUEwtPlNldFByb3AoWkFVQkVSV0FMRCwgdGltZSgpK0FHR1JFU1NJVkVfVElNRSk7CisgICB9CisgICByZXR1cm4gMTsKK30KKworc3RhdGljIGludCBjbWRfc2Nod2ltbWVuKHN0cmluZyBzdHIpCit7CisgICBzdHJpbmcgdmVyYjsKKworICAgLy8gYmVzb25kZXJlIEVpZ2Vuc2NoYWZ0IGRlciBzY2hsdWVzc2Vsd29lcnRlciBhdXNudXR6ZW4uLi4gOikKKyAgIHZlcmI9KHF1ZXJ5X3ZlcmIoKXx8IiIpOworICAgaWYgKHZlcmJbPDFdIT0nZScpIHZlcmIrPSJlIjsKKyAgIGlmIChtZW1iZXIoKHsiaW4gdGVpY2giLCAiaW4gd2VpaGVyIiwgImluIHR1ZW1wZWwiLCAiaW4gc2VlIn0pLCBzdHIpPT0tMSkgeworICAgICAgbm90aWZ5X2ZhaWwoIldvcmluIHdpbGxzdCBEdSAiK3ZlcmIrIm4/XG4iKTsKKyAgICAgIHJldHVybiAwOworICAgfQorICAgc3RyPWNhcGl0YWxpemUoc3RyWzMuLl0pOyAvLyAiaW4gIiBhYnNjaG5laWRlbi4uLgorICAgaWYgKHByZXNlbnQoV0FMRElEKCJmZWUiKSwgTUUpKSB7CisgICAgICB3cml0ZShCUygiRGllIFdhbGRmZWUgc2NoZWludCBEZWluZW4gRW50c2NobHVzcyBpbSAiK3N0cisiICIrdmVyYgorICAgICAgICAgKyJuIHp1IGdlaG4gaXJnZW5kd2llIGJlbWVya3QgenUgaGFiZW4gdW5kIHN0cmFmdCBEaWNoIG1pdCBlaW5lbSAiCisgICAgICAgICArIm1haG5lbmRlbiBCbGljayBhYi4gRGVpbmUgTHVzdCB6dW0gIitjYXBpdGFsaXplKHZlcmIpCisgICAgICAgICArIm4gc2lua3Qgc29nbGVpY2ggZ2VnZW4gbnVsbCwgZGVubiBEdSB2ZXJzcHVlcnN0IGtlaW5lIGdyb3NzZSAiCisgICAgICAgICArIkx1c3QgRGljaCBtaXQgZGVyIFdhbGRmZWUgYW56dWxlZ2VuLiIpKTsKKyAgICAgIHJldHVybiAxOworICAgfQorICAgd3JpdGUoQlMoIk11dGlnIGdlaHN0IER1IGVpbmVuIFNjaHJpdHQgaW5zIFdhc3NlciwgZGEgdWViZXJrb21tdCBEaWNoIGF1Y2ggIgorICAgICAgICAgICArInNjaG9uIGVpbiBzZWx0c2FtZXMga3JpYmJlbG4gYW0gZ2FuemVuIEtvZXJwZXIuIEluIHdpbmRlc2VpbGUgIgorICAgICAgICAgICArImhhc3QgRHUgZGVuICIrc3RyKyIgYXVjaCBzY2hvbiB3aWVkZXIgdmVybGFzc2VuLiIpKTsKKyAgIHJldHVybiAxOworfQorCitzdGF0aWMgaW50IGNtZF9wZmx1ZWNrZW4oc3RyaW5nIHN0cikKK3sKKyAgIG9iamVjdCBvYjsKKyAgIG5vdGlmeV9mYWlsKCJXQVMgbW9lY2h0ZXN0IER1IHBmbHVlY2tlbj9cbiIpOworICAgaWYgKG1lbWJlcigoeyJoYWhuZW5mdXNzIiwKKyAgICAgICAgICAgICAgICAid2Fzc2VyLWhhaG5lbmZ1c3MiLAorICAgICAgICAgICAgICAgICJ3ZWlzc2VyIGhhaG5lbmZ1c3MiLAorICAgICAgICAgICAgICAgICJ3ZWlzc2VyIHdhc3Nlci1oYWhuZW5mdXNzIn0pLCBzdHIpPDApIHJldHVybiAwOworICAgaWYgKChvYj1wcmVzZW50KFdBTERJRCgiZmVlIiksIE1FKSkgJiYgIW9iLT5Jc0VuZW15KFBMKSkgeworICAgICAgd3JpdGUoQlMoIkRpZSBXYWxkZmVlIHNjaGVpbnQgRGVpbiBWb3JoYWJlbiBiZW1lcmt0IHp1IGhhYmVuIHVuZCAiCisgICAgICAgICArInN0cmFmdCBEaWNoIG1pdCBlaW5lbSBtYWhuZW5kZW4gQmxpY2sgYWIuIER1IHVlYmVybGVnc3QgZXMgRGlyICIKKyAgICAgICAgICsid2llZGVyIGFuZGVycyB1bmQgbGFlc3N0IHZvbiBEZWluZW0gVm9yaGFiZW4gYWIsIHNvbGFuZ2UgZGllICIKKyAgICAgICAgICsiRmVlIGhpZXIgd2FjaHQuIikpOworICAgICAgcmV0dXJuIDE7CisgICB9CisgICBvYj1HZXRQbGFudChPQkooImhhaG5lbmZ1c3MiKSk7CisgICBpZiAob2JqZWN0cChvYikpIHsKKyAgICAgIGlmIChvYi0+bW92ZShQTCwgTV9HRVQpPT0xKQorICAgICAgICAgIHdyaXRlKEJTKCJWb3JzaWNodGlnIHBmbHVlY2tzdCBEdSAiK29iLT5uYW1lKFdFTiwgMSkKKyAgICAgICAgICAgICAgICAgICsiIHVuZCBuaW1tc3QgIitvYi0+UXVlcnlQcm9ub3VuKFdFTikrIiBhbiBEaWNoLiIpKTsKKyAgICAgIGVsc2Ugd3JpdGUoQlMoIlZvcnNpY2h0aWcgcGZsdWVja3N0IER1ICIrb2ItPm5hbWUoV0VOLCAxKSsiIGthbm5zdCAiCisgICAgICAgICAgICAgICAgICArb2ItPlF1ZXJ5UHJvbm91bihXRU4pKyIgYWJlciBuaWNodCBuZWhtZW4uIikpOworICAgfQorICAgZWxzZSBpZiAoIW9iKQorICAgICAgd3JpdGUoQlMoIkRlciBIYWhuZW5mdXNzIGlzdCBub2NoIG5pY2h0IHdpZWRlciB3ZWl0IGdlbnVnICIKKyAgICAgICAgICAgICAgKyJuYWNoZ2V3YWNoc2VuIHVtIGlobiBwZmx1ZWNrZW4genUga29lbm5lbi4iKSk7CisgICByZXR1cm4gMTsKK30KKworc3RhdGljIHN0cmluZyBfcXVlcnlfaW50X2xvbmcoKQoreworICAgaWYgKHByZXNlbnQoV0FMRElEKCJmZWUiKSwgTUUpKQorICAgICAgcmV0dXJuCisgICAgICAgICJEdSBzdGVoc3QgbnVuIGFuIGVpbmVtIGtsZWluZW4gdmVyd3Vuc2NoZW5lbiBXZWloZXIsIGlubWl0dGVuIGRlcyBaYXViZXJ3YWxkcy5cbiIKKyAgICAgICArIkF1ZiBkZW0gV2Fzc2VyIHNjaHdpbW1lbiB6YWhscmVpY2hlIFNlZXJvc2VuIGluIGRlbiB2ZXJzY2hpZWRlbnN0ZW4gRmFyYmVuXG4iCisgICAgICAgKyJ1bmQgaGllciB1bmQgZG9ydCBzY2h3aXJydCBlaW5lIExpYmVsbGUgaW4gZGVyIEx1ZnQuIE1pdHRlbiB1ZWJlciBkZW0gV2VpaGVyXG4iCisgICAgICAgKyJzY2h3ZWJ0IGVpbmUgd3VuZGVyc2Nob2VuZSBXYWxkZmVlIGluIGRlciBMdWZ0IHVuZCBzY2hlaW50IGRlbiBXZWloZXIgenVcbiIKKyAgICAgICArImJld2FjaGVuLiBJcmdlbmRldHdhcyBnZWhlaW1uaXN2b2xsZXMgc2NoZWludCBlcyBtaXQgZGVtIFdlaWhlciBhdWYgc2ljaFxuIgorICAgICAgICsienUgaGFiZW4sIG51ciB3YXM/XG4iOworICAgcmV0dXJuCisgICAgICJEdSBzdGVoc3QgbnVuIGFuIGVpbmVtIGtsZWluZW4gdmVyd3Vuc2NoZW5lbiBXZWloZXIsIGlubWl0dGVuIGRlcyBaYXViZXJ3YWxkcy5cbiIKKyAgICArIkF1ZiBkZW0gV2Fzc2VyIHNjaHdpbW1lbiB6YWhscmVpY2hlIFNlZXJvc2VuIGluIGRlbiB2ZXJzY2hpZWRlbnN0ZW4gRmFyYmVuIHVuZFxuIgorICAgICsiaGllciB1bmQgZG9ydCBzY2h3aXJydCBlaW5lIExpYmVsbGUgaW4gZGVyIEx1ZnQuIEFsbGVzIHNjaGVpbnQgaGllciBzZWhyXG4iCisgICAgKyJmcmllZGxpY2ggenUgc2VpbiwgZmFzdCBlaW4gd2VuaWcgenUgZnJpZWRsaWNoLiBJcmdlbmRldHdhcyBnZWhlaW1uaXN2b2xsZXNcbiIKKyAgICArInNjaGVpbnQgZXMgbWl0IGRpZXNlbSBXZWloZXIgYXVmIHNpY2ggenUgaGFiZW4sIG51ciB3YXM/XG4iOworfQpkaWZmIC0tZ2l0IGEvZG9jL2JlaXNwaWVsZS96YXViZXJ3YWxkL3Jvb20vdmlydHVhbF9jb21waWxlci5jIGIvZG9jL2JlaXNwaWVsZS96YXViZXJ3YWxkL3Jvb20vdmlydHVhbF9jb21waWxlci5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjFjYzRkNWMKLS0tIC9kZXYvbnVsbAorKysgYi9kb2MvYmVpc3BpZWxlL3phdWJlcndhbGQvcm9vbS92aXJ0dWFsX2NvbXBpbGVyLmMKQEAgLTAsMCArMSwxMzMgQEAKKy8vIChjKSBieSBQYWRyZWljIChQYWRyZWljQG1nLm11ZC5kZSkKKworI2luY2x1ZGUgPHByb3BlcnRpZXMuaD4KKyNpbmNsdWRlIDx2X2NvbXBpbGVyLmg+CisjaW5jbHVkZSAiLi4vZmlsZXMuaCIKKyNpbmNsdWRlICIvcC9zZXJ2aWNlL3BhZHJlaWMva3JhZXV0ZXIvcGxhbnQuaCIKKworaW5oZXJpdCAic3RkL3ZpcnR1YWwvdl9jb21waWxlciI7CisKK2NyZWF0ZSgpCit7CisgIDo6Y3JlYXRlKCk7CisgIFNldFByb3AoUF9TVERfT0JKRUNULCBST09NKCJzdGRsaWNodHVuZyIpKTsKKyAgU2V0UHJvcChQX0NPTVBJTEVSX1BBVEgsIFJPT00oIiIpKTsKK30KKworc3RyaW5nIFZhbGlkYXRlKHN0cmluZyBmaWxlKQoreworICBmaWxlPTo6VmFsaWRhdGUoZmlsZSk7CisgIHN3aXRjaChmaWxlKSB7IAorICAgICBjYXNlICJsaWNodHVuZ3NvIjoKKyAgICAgY2FzZSAibGljaHR1bmdvIjoKKyAgICAgY2FzZSAibGljaHR1bmdubyI6CisgICAgIGNhc2UgImxpY2h0dW5nbiI6CisgICAgIGNhc2UgImxpY2h0dW5ncyI6CisgICAgIGNhc2UgImxpY2h0dW5nbnciOgorICAgICBjYXNlICJsaWNodHVuZ3ciOgorICAgICBjYXNlICJsaWNodHVuZ3N3IjogIHJldHVybiBmaWxlOworICAgICBkZWZhdWx0OgorICB9Cit9CisgICAgICAgICAKK21peGVkIEN1c3RvbWl6ZU9iamVjdCgpCit7CisgIHN0cmluZyBmaWxlOworICBmaWxlPVZhbGlkYXRlKDo6Q3VzdG9taXplT2JqZWN0KCkpOworICBpZiAoIXJhbmRvbSgzKSkgUE8tPkFkZEl0ZW0oTlBDKCJsYXVmZWljaGUiKSwgUkVGUkVTSF9ERVNUUlVDVCwgKFtNTlBDX0hPTUU6IFJPT00oZmlsZSldKSApOworICBzd2l0Y2goZmlsZSkgeworICAgICBjYXNlICJsaWNodHVuZ25vIjoKKyAgICAgICBQTy0+QWRkRXhpdCgid2VzdGVuIiwgUk9PTSgibGljaHR1bmduIikpOworICAgICAgIFBPLT5BZGRFeGl0KCJzdWVkZW4iLCBST09NKCJsaWNodHVuZ28iKSk7CisgICAgICAgUE8tPkFkZEV4aXQoInN1ZWR3ZXN0ZW4iLCBST09NKCJ0dWVtcGVsIikpOworICAgICAgIFBPLT5BZGRFeGl0KCJzdWVkb3N0ZW4iLCBST09NKCJ3ZWcyIikpOworICAgICAgIFBPLT5TZXRQcm9wKEVYVFJBX0xPTkcsCisgICAgICAgICAiIEltIFN1ZWRvc3RlbiBiZWZpbmRldCBzaWNoIGRlciBXYWxkd2VnLCB1ZWJlciBkZW4gRHUgZGVuIFdhbGQgd2llZGVyICIKKyAgICAgICAgKyJ2ZXJsYXNzZW4ga2FubnN0LiIpOworICAgICAgIHJldHVybiBmaWxlOworCisgICAgIGNhc2UgImxpY2h0dW5nbyI6CisgICAgICAgUE8tPkFkZEV4aXQoIm5vcmRlbiIsIFJPT00oImxpY2h0dW5nbm8iKSk7CisgICAgICAgUE8tPkFkZEV4aXQoInN1ZWRlbiIsIFJPT00oImxpY2h0dW5nc28iKSk7CisgICAgICAgUE8tPkFkZEV4aXQoIndlc3RlbiIsIFJPT00oInR1ZW1wZWwiKSk7CisgICAgICAgUE8tPkFkZEV4aXQoIm9zdGVuIiwgUk9PTSgid2VnMiIpKTsKKyAgICAgICBQTy0+U2V0UHJvcChFWFRSQV9MT05HLAorICAgICAgICAgIiBJbSBPc3RlbiBiZWZpbmRldCBzaWNoIGRlciBXYWxkd2VnLCB1ZWJlciBkZW4gRHUgZGVuIFdhbGQgd2llZGVyICIKKyAgICAgICAgKyJ2ZXJsYXNzZW4ga2FubnN0LiIpOworICAgICAgIHJldHVybiBmaWxlOworCisgICAgIGNhc2UgImxpY2h0dW5nc28iOgorICAgICAgIFBPLT5BZGRFeGl0KCJ3ZXN0ZW4iLCBST09NKCJsaWNodHVuZ3MiKSk7CisgICAgICAgUE8tPkFkZEV4aXQoIm5vcmRlbiIsIFJPT00oImxpY2h0dW5nbyIpKTsKKyAgICAgICBQTy0+QWRkRXhpdCgibm9yZHdlc3RlbiIsIFJPT00oInR1ZW1wZWwiKSk7CisgICAgICAgUE8tPkFkZEV4aXQoIm5vcmRvc3RlbiIsIFJPT00oIndlZzIiKSk7CisgICAgICAgUE8tPlNldFByb3AoRVhUUkFfTE9ORywKKyAgICAgICAgICIgSW0gTm9yZG9zdGVuIGJlZmluZGV0IHNpY2ggZGVyIFdhbGR3ZWcsIHVlYmVyIGRlbiBEdSBkZW4gV2FsZCB3aWVkZXIgIgorICAgICAgICArInZlcmxhc3NlbiBrYW5uc3QuIik7CisgICAgICAgUE8tPkFkZEl0ZW0oTlBDKCJyaWVzZSIpLCBSRUZSRVNIX0RFU1RSVUNUKTsKKyAgICAgICByZXR1cm4gZmlsZTsKKworICAgICBjYXNlICJsaWNodHVuZ3MiOgorICAgICAgIFBPLT5BZGRFeGl0KCJ3ZXN0ZW4iLCBST09NKCJsaWNodHVuZ3N3IikpOworICAgICAgIFBPLT5BZGRFeGl0KCJvc3RlbiIsIFJPT00oImxpY2h0dW5nc28iKSk7CisgICAgICAgUE8tPkFkZEV4aXQoIm5vcmRlbiIsIFJPT00oInR1ZW1wZWwiKSk7CisgICAgICAgUE8tPlNldFByb3AoRVhUUkFfTE9ORywKKyAgICAgICAgICIgSW4gZGVyIFdpZXNlIHNpZWhzdCBEdSBhbiBlaW5lciBTdGVsbGUgZXR3YXMgS2xlZSB3YWNoc2VuLiIpOworICAgICAgIFBPLT5BZGRQbGFudChCSVRURVJLTEVFKTsKKyAgICAgICAvLyAia2xlZSIgX25hY2hfIGRlbSBBZGRQbGFudCBlaW5mdWVnZW4sIGRhbWl0IGRpZSByZXN0bGljaGVuIERldGFpbHMKKyAgICAgICAvLyB3aWUgQml0dGVya2xlZSB0cm90emRlbSBub2NoIGVpbmdlZnVlZ3Qgd2VyZGVuCisgICAgICAgUE8tPlJlbW92ZURldGFpbCgoeyJrbGVlIn0pKTsKKyAgICAgICBQTy0+QWRkRGV0YWlsKCh7InN0ZWxsZSIsICJrbGVlIn0pLAorICAgICAgICAgIkJlaSBkZXIgU3RlbGxlIHNjaGVpbnQgZXMgc2ljaCB1bnp3ZWlmZWxoYWZ0IHVtIEJpdHRlcmtsZWUgenUgaGFuZGVsbi5cbiIpOworICAgICAgIFBPLT5BZGRDbWQoInN1ZWRlbiIsICJjbWRfc3VlZGVuIik7CisgICAgICAgcmV0dXJuIGZpbGU7CisKKyAgICAgY2FzZSAibGljaHR1bmduIjoKKyAgICAgICBQTy0+QWRkRXhpdCgid2VzdGVuIiwgUk9PTSgibGljaHR1bmdudyIpKTsKKyAgICAgICBQTy0+QWRkRXhpdCgib3N0ZW4iLCBST09NKCJsaWNodHVuZ25vIikpOworICAgICAgIFBPLT5BZGRFeGl0KCJzdWVkZW4iLCBST09NKCJ0dWVtcGVsIikpOworICAgICAgIFBPLT5TZXRQcm9wKEVYVFJBX0xPTkcsICIgQW0gUmFuZCBkZXIgV2llc2UgZW50ZGVja3QgRHUgZWluaWdlIGtsZWluZSBQaWx6ZSBpbSBHcmFzLiIpOworICAgICAgIFBPLT5BZGRDbWQoKHsiZXNzZSIsICJpc3MiLCAicGZsdWVjayIsICJwZmx1ZWNrZSJ9KSwgImNtZF9waWx6ZSIpOworICAgICAgIFBPLT5BZGREZXRhaWwoKHsicGlseiIsICJwaWx6ZSIsICJzY2hpbW1lciJ9KSwKKyAgICAgICAgICJEaWUgUGlsemUgaGFiZW4gZWluZW4gYWV1c3NlcnN0IHNlbHRzYW1lbiBtZXRhbGxpc2NoZW0gU2NoaW1tZXIgdW5kXG4iCisgICAgICAgICsidmVyYnJlaXRlbiBlaW5lbiBzZWhyIGFuZ2VuZWhtZW4gc3Vlc3NsaWNoZW4gRHVmdCBpbSBSYXVtLlxuIik7CisgICAgICAgUE8tPkFkZFNtZWxscygoeyJwaWx6IiwgInBpbHplIn0pLAorICAgICAgICAgIkRpZSBQaWx6ZSB2ZXJicmVpdGVuIGVpbmVuIHNlaHIgc3Vlc3NsaWNoZW4gRHVmdC5cbiIpOworICAgICAgIFBPLT5BZGRTbWVsbHMoImR1ZnQiLCAiRGVyIER1ZnQgaXN0IGVpZ2VudGxpY2ggc2VociBiZWZyZWllbmQgdW5kIGFuZ2VuZWhtLlxuIik7CisgICAgICAgcmV0dXJuIGZpbGU7CisKKyAgICAgY2FzZSAibGljaHR1bmdudyI6CisgICAgICAgUE8tPkFkZEV4aXQoIndlc3RlbiIsIFJPT00oInNjaHVsZSIpKTsKKyAgICAgICBQTy0+QWRkRXhpdCgib3N0ZW4iLCBST09NKCJsaWNodHVuZ24iKSk7CisgICAgICAgUE8tPkFkZEV4aXQoInN1ZWRlbiIsIFJPT00oImxpY2h0dW5ndyIpKTsKKyAgICAgICBQTy0+QWRkRXhpdCgic3VlZG9zdGVuIiwgUk9PTSgidHVlbXBlbCIpKTsKKyAgICAgICBQTy0+U2V0UHJvcChFWFRSQV9MT05HLAorICAgICAgICAgIiBOYWNoIFdlc3RlbiBrYW5uc3QgRHUgZWluIFN0dWVjayBpbiBkZW4gV2FsZCBoaW5laW4gZ2Vobi4iKTsKKyAgICAgICByZXR1cm4gZmlsZTsKKworICAgICBjYXNlICJsaWNodHVuZ3ciOgorICAgICAgIFBPLT5BZGRFeGl0KCJub3JkZW4iLCBST09NKCJsaWNodHVuZ253IikpOworICAgICAgIFBPLT5BZGRFeGl0KCJzdWVkZW4iLCBST09NKCJsaWNodHVuZ3N3IikpOworICAgICAgIFBPLT5BZGRFeGl0KCJvc3RlbiIsIFJPT00oInR1ZW1wZWwiKSk7CisgICAgICAgUE8tPlNldFByb3AoRVhUUkFfTE9ORywgIiBBbSBXYWxkcmFuZCBzdGVoZW4gZWluaWdlIGJsYWV1bGljaGUgRmFybmUuIik7CisgICAgICAgUE8tPkFkZENtZCgoeyJlc3NlIiwgImlzcyIsICJwZmx1ZWNrIiwgInBmbHVlY2tlIn0pLCAiY21kX2Zhcm5lIik7CisgICAgICAgUE8tPkFkZERldGFpbCgoeyJmYXJuIiwgImZhcm5lIn0pLAorICAgICAgICAgIkRpZSBibGFldWxpY2hlbiBGYXJuZSBzaW5kIHdpcmtsaWNoIHNlaHIgbWVya3d1ZXJkaWcuIHNvZXR3YXMgaGFzdCBEdSBiaXNoZXJcbiIKKyAgICAgICAgKyJub2NoIG5pcmdlbmR3byBnZXNlaG4uIElyZ2VuZGV0d2FzIGJlc29uZGVyZXMgaGF0IGVzIHNpY2hlcmxpY2ggZGFtaXQgYXVmIHNpY2guXG4iKTsKKyAgICAgICByZXR1cm4gZmlsZTsKKworICAgICBjYXNlICJsaWNodHVuZ3N3IjoKKyAgICAgICBQTy0+QWRkRXhpdCgib3N0ZW4iLCBST09NKCJsaWNodHVuZ3MiKSk7CisgICAgICAgUE8tPkFkZEV4aXQoIm5vcmRlbiIsIFJPT00oImxpY2h0dW5ndyIpKTsKKyAgICAgICBQTy0+QWRkRXhpdCgibm9yZG9zdGVuIiwgUk9PTSgidHVlbXBlbCIpKTsKKyAgICAgICBQTy0+QWRkRXhpdCgic3VlZHdlc3RlbiIsIFJPT00oInN0ZWluIikpOworICAgICAgIFBPLT5TZXRQcm9wKEVYVFJBX0xPTkcsCisgICAgICAgICAiIE5hY2ggU3VlZHdlc3RlbiBrYW5uc3QgRHUgZWluIFN0dWVjayBpbiBkZW4gV2FsZCBoaW5laW4gZ2Vobi4iKTsKKyAgICAgICByZXR1cm4gZmlsZTsKKworICAgICBkZWZhdWx0OiByZXR1cm4gMDsKKyAgfQorICByZXR1cm4gZmlsZTsKK30KKworaW50IE5vUGFyYU9iamVjdHMoKSB7IHJldHVybiAxOyB9CmRpZmYgLS1naXQgYS9kb2MvYmVpc3BpZWxlL3phdWJlcndhbGQvcm9vbS93ZWcxLmMgYi9kb2MvYmVpc3BpZWxlL3phdWJlcndhbGQvcm9vbS93ZWcxLmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMTY5YjczZgotLS0gL2Rldi9udWxsCisrKyBiL2RvYy9iZWlzcGllbGUvemF1YmVyd2FsZC9yb29tL3dlZzEuYwpAQCAtMCwwICsxLDc1IEBACisvLyAoYykgYnkgUGFkcmVpYyAoUGFkcmVpY0BtZy5tdWQuZGUpCisKKyNpbmNsdWRlICIuLi9maWxlcy5oIgorCitpbmhlcml0IFJPT00oInN0ZHJvb20iKTsKKwordm9pZCBjcmVhdGUoKQoreworICAgOjpjcmVhdGUoKTsKKyAgIFNldFByb3AoUF9JTkRPT1JTLCAwKTsKKyAgIFNldFByb3AoUF9MSUdIVCwgMCk7CisgICBTZXRQcm9wKFBfSU5UX1NIT1JULCAiQXVmIGVpbmVtIFdhbGR3ZWcgaW0gWmF1YmVyd2FsZCIpOworICAgQWRkRGV0YWlsKCh7ImJsYWV0dGVyZGFjaCIsICJkYWNoIiwgImJhZXVtZSJ9KSwKKyAgICAgIkRpZSBCYWV1bWUgcmVjaHRzIHVuZCBsaW5rcyBkZXMgV2VnZXMgYmlsZGVuIHVlYmVyIGRlbSBXZWcgZWluIHNvIGRpY2h0ZXNcbiIKKyAgICArIkJsYWV0dGVyZGFjaCwgZGFzIHNvIGd1dCB3aWUgdWViZXJoYXVwdCBrZWluIFNvbm5lbmxpY2h0IG1laHIgYXVmIGRlbiBXZWdcbiIKKyAgICArInNjaGVpbnQuXG4iKTsKKyAgIEFkZFNwZWNpYWxEZXRhaWwoInN6ZW5lIiwgIl9xdWVyeV9pbnRfbG9uZyIpOworICAgQWRkU3BlY2lhbERldGFpbCgoeyJ3ZWciLCAid2VnZXMiLCAid2FsZHdlZyIsICJib2RlbiJ9KSwgImRldF93ZWciKTsKKyAgIEFkZERldGFpbCgoeyJsaWNodCIsICJzb25uZW5saWNodCIsICJzb25uZW5zdHJhaGxlbiJ9KSwKKyAgICAgIkR1cmNoIGRhcyBkaWNodGUgQmxhZXR0ZXJkYWNoIHNjaGFmZmVuIGVzIGRpZSBTb25uZW5zdHJhaGxlbiBudXIgbm9jaCBzZWhyXG4iCisgICAgKyJ2ZXJlaW56ZWx0IGJpcyBhdWYgZGVuIFdlZyBkdXJjaHp1a29tbWVuLiBEYWR1cmNoIGlzdCBlcyBoaWVyIHVudGVuIHJlbGF0aXZcbiIKKyAgICArIkZldWNodCwga2FsdCB1bmQgZHVua2VsLlxuIik7CisgICBBZGREZXRhaWwoKHsiaGltbWVsIiwgInNvbm5lIiwgIndvbGtlIiwgIndvbGtlbiJ9KSwKKyAgICAgIkRhcyBCbGFldHRlcmRhY2ggaXN0IGhpZXIgc28gZGljaHQsIGRhcyBEdSBkZW4gSGltbWVsIG5pY2h0IG1hbCBtZWhyIGVyYWhuZW5cbiIKKyAgICArImthbm5zdC4gRHUgd2Vpc3N0IG5pY2h0IG1hbCwgb2IgZXMgcmVnbmV0IG9kZXIgb2IgZGllIFNvbm5lIHNjaGVpbnQuXG4iKTsKKyAgIEFkZERldGFpbCgiZmV1Y2h0IiwKKyAgICAgIkJsb3NzIHdlaWwgZmV1Y2h0IGdyb3NzZ2VzY2hyaWViZW4gaXN0IGVzIG5vY2ggbGFuZ2Uga2VpbiBTdWJzdGFudGl2LCB3ZW5uXG4iCisgICAgKyJ1ZWJlcmhhdXB0IGhlaXNzdCBlcyBkYW5uIF9GZXVjaHRpZ2tlaXRfIDopLlxuIik7CisgICBBZGREZXRhaWwoInN1YnN0YW50aXYiLCAiTmljaHQgamVkZXMgU3Vic3RhbnRpdiBpc3QgZWluIHNpbm52b2xsZXMgRGV0YWlsIDopXG4iKTsKKyAgIEFkZERldGFpbCgiZmV1Y2h0aWdrZWl0IiwgIkVpbiB3ZW5pZyBmZXVjaHQsIHdpZSBtYW4gZXMgaGFsdCBhdXMgamVkZW0gV2FsZCBzbyBrZW5udC5cbiIpOworICAgQWRkRGV0YWlsKCJrYWVsdGUiLAorICAgICAiRHVyY2ggZGFzIHdlbmlnZSBTb25uZW5saWNodCwgZGFzIGJpcyBuYWNoIGhpZXIgdW50ZW4gZHVyY2hkcmluZ3QsIGlzdCBlc1xuIgorICAgICsiaGllciB2ZXJoYWVsdG5pc21hZXNzaWcgZnJpc2NoLlxuIik7CisgICBBZGREZXRhaWwoImR1bmtlbGhlaXQiLAorICAgICAiV2VubiBlcyBoZWxsIGlzdCwgaXN0IGVzIG5pY2h0IG1laHIgZHVua2VsIHVuZCB3ZW5uIGVzIG5pY2h0IGhlbGwgaXN0LCBrYW5uc3RcbiIKKyAgICArIkR1IG5pY2h0IHZpZWwgc2Vobi4gV2llIGFsc28gd2lsbHN0IER1IGRpZSBEdW5rZWxoZWl0IHVudGVyc3VjaGVuIDopP1xuIik7CisgICBBZGREZXRhaWwoIl9mZXVjaHRpZ2tlaXRfIiwgIk1laW5lIEd1ZXRlLCBuaW1tIGRvY2ggbmljaCBpbW1lciBhbGxlcyBnbGVpY2ggX3NvXyB3b2VydGxpY2guXG4iKTsKKyAgIEFkZERldGFpbCgiZ3VldGUiLCAiU2VpIGxpZWJlciB2b3JzaWNodGlnLCBzb28gZ3VldGlnIGJpbiBpY2ggbnUgYXVjaCBuaWNodCA6KS5cbiIpOworICAgQWRkRGV0YWlsKCh7ImxpY2h0cXVlbGxlIiwgIm5hY2h0c2ljaHQifSksCisgICAgICJIaWVyIGlzdCBlcyBlaWdlbnRsaWNoIHZlcmRhbW10IGR1bmtlbCB1bmQgb2huZSBOYWNodHNpY2h0IG9kZXIgZWluZSBlaWdlbmVcbiIKKyAgICArIkxpY2h0cXVlbGxlLCBrb2VubnRlc3QgRHUgaGllciBfbmljaHRzXyBzZWhuLlxuIik7CisgICBBZGREZXRhaWwoKHsiYXVzZ2FuZyIsICJvc3RlbiJ9KSwKKyAgICAgIldlbm4gRHUgZGVtIFdlZyBSaWNodHVuZyBPc3RlbiBmb2xnc3QsIGRhbm4ga29tbXN0IER1IHppZW1saWNoIGJhbGQgd2llZGVyXG4iCisgICAgKyJSaWNodHVuZyBBdXNnYW5nLlxuIik7CisgICBBZGREZXRhaWwoKHsic3R1ZWNrIiwgIndhbGQiLCAid2VzdGVuIn0pLAorICAgICAiTmFqYS4uIER1IHN0ZWhzdCB6d2FyIHNjaG9uIGltIFdhbGQgZHJpbiwgYWJlciBuYWNoIFdlc3RlbiBoaW4sIGdlaHN0IGVzIG5vY2hcbiIKKyAgICArImVpbiBTdHVlY2sgdGllZmVyIGhpbmVpbi5cbiIpOworICAgQWRkRXhpdCgib3N0ZW4iLCBST09NKCJlaW5nYW5nIikpOworICAgQWRkRXhpdCgid2VzdGVuIiwgUk9PTSgid2VnMiIpKTsKKyAgIEFkZEl0ZW0oTlBDKCJ3YWVjaHRlciIpLCBSRUZSRVNIX1JFTU9WRSwgMSk7Cit9CisKK3N0YXRpYyBzdHJpbmcgZGV0X3dlZygpCit7CisgICBpZiAocHJlc2VudChXQUxESUQoIndhZWNodGVyZWljaGUiKSwgTUUpKQorICAgICAgcmV0dXJuICJNaXR0ZW4gYXVmIGRlbSBXZWcgc3RlaHQgZGVyIFdhZWNodGVyIGRlcyBXYWxkZXMgdW5kIGtvbnRyb2xsaWVydCBzZWhyIGdlbmF1LFxuIgorICAgICAgICAgICAgKyJ3ZXIgaW4gZGVuIFdhbGQgaGluZWluIGRhcmYgdW5kIHdlciBuaWNodC4gRWlnZW50bGljaCBpc3QgZXIgamVkb2NoIGRlblxuIgorICAgICAgICAgICAgKyJtZWlzdGVuIGltbWVyIHNlaHIgZnJpZWRsaWNoIGdlc29ubmVuLlxuIjsKKyAgIHJldHVybiAiRGVyIFdlZyBmdWVocnQgaGllciBuYWNoIFdlc3RlbiBub2NoIGVpbiBTdHVlY2sgdGllZmVyIGluIGRlbiBXYWxkIGhpbmVpbixcbiIKKyAgICAgICAgICsibmFjaCBPc3RlbiBrYW5uc3QgRHUgamVkb2NoIHdpZWRlciBpbiBSaWNodHVuZyBBdXNnYW5nIGRlcyBaYXViZXJ3YWxkcyBnZWhuLlxuIjsKK30KKworc3RhdGljIHN0cmluZyBfcXVlcnlfaW50X2xvbmcoKQoreworICAgaWYgKHByZXNlbnQoV0FMRElEKCJ3YWVjaHRlcmVpY2hlIiksIE1FKSkKKyAgICAgIHJldHVybiAiSGllciBpc3QgZXMgamV0enQgcmljaHRpZyBkdWVzdGVyIHVuZCBvaG5lIGVpZ2VuZSBMaWNodHF1ZWxsZSBrb2VubnRlc3QgRHVcbiIKKyAgICAgICAgICAgICsibmljaHRzIG1laHIgc2VobiwgZGEgc28gZ3V0IHdpZSB1ZWJlcmhhdXB0IGtlaW4gTGljaHQgbWVociBkdXJjaCBkYXNcbiIKKyAgICAgICAgICAgICsiQmxhZXR0ZXJkYWNoIGF1ZiBkZW4gV2VnIHNjaGVpbnQuIE1pdHRlbiBpbiBkaWVzZXIgZWlnZW50bGljaCBsZWJlbnMtXG4iCisgICAgICAgICAgICArInVuZnJldW5kbGljaGVuIFN6ZW5lLCBzdGVodCBlaW5lIGdyb3NzZSBhbHRlIEVpY2hlIG1pdHRlbiBhdWYgZGVtIFdlZy5cbiI7CisgICByZXR1cm4gIkhpZXIgaXN0IGVzIGpldHp0IHJpY2h0aWcgZHVlc3RlciB1bmQgb2huZSBlaWdlbmUgTGljaHRxdWVsbGUga29lbm50ZXN0IER1XG4iCisgICAgICAgICArImhpZXIgbmljaHRzIG1laHIgc2VobiwgZGEgc28gZ3V0IHdpZSB1ZWJlcmhhdXB0IGtlaW4gTGljaHQgbWVociBkdXJjaCBkYXNcbiIKKyAgICAgICAgICsiQmxhZXR0ZXJkYWNoIGF1ZiBkZW4gV2VnIHNjaGVpbnQuIER1IGthbm5zdCBub2NoIGVpbiBTdHVlY2sgdGllZmVyIGluIGRlblxuIgorICAgICAgICAgKyJXYWxkIGhpbmVpbiB1bmQgbmFjaCBXZXN0ZW4gZ2Vobiwgb2RlciBhYmVyIHp1cnVlY2sgUmljaHR1bmcgS3JldXp1bmcgbmFjaFxuIgorICAgICAgICAgKyJPc3Rlbi5cbiI7Cit9CmRpZmYgLS1naXQgYS9kb2MvYmVpc3BpZWxlL3phdWJlcndhbGQvcm9vbS93ZWcyLmMgYi9kb2MvYmVpc3BpZWxlL3phdWJlcndhbGQvcm9vbS93ZWcyLmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMGQwNjE2OQotLS0gL2Rldi9udWxsCisrKyBiL2RvYy9iZWlzcGllbGUvemF1YmVyd2FsZC9yb29tL3dlZzIuYwpAQCAtMCwwICsxLDkzIEBACisvLyAoYykgYnkgUGFkcmVpYyAoUGFkcmVpY0BtZy5tdWQuZGUpCisKKyNpbmNsdWRlICIuLi9maWxlcy5oIgorCitpbmhlcml0IFJPT00oInN0ZHJvb20iKTsKKwordm9pZCBjcmVhdGUoKQoreworICAgOjpjcmVhdGUoKTsKKyAgIFNldFByb3AoUF9JTkRPT1JTLCAwKTsKKyAgIFNldFByb3AoUF9MSUdIVCwgMSk7CisgICBTZXRQcm9wKFBfSU5UX1NIT1JULCAiQW0gUmFuZGUgZWluZXIgTGljaHR1bmcgaW0gWmF1YmVyd2FsZCIpOworICAgQWRkU3BlY2lhbERldGFpbCgoeyJ3YWxkIiwgInphdWJlcndhbGQifSksICJfcXVlcnlfaW50X2xvbmciKTsKKyAgIEFkZERldGFpbCgoeyJ3ZXN0ZW4iLCAibGljaHR1bmciLCAicGxhZXR6Y2hlbiIsICJpZHlsbGlzY2hlcyBwbGFldHpjaGVuIn0pLAorICAgICAiSW0gV2VzdGVuIGJlZmluZGV0IHNpY2ggZWluZSBncm9zc2UgTGljaHR1bmcgbWl0IGVpbmVtIGtsZWluZW4gVHVlbXBlbCwgYW1cbiIKKyAgICArIlJhbmRlIGRlciBMaWNodHVuZyBzdGVoZW4gdmVyZWluemVsdCBub2NoIGVpbmlnZSBCYWV1bWUgYWJlciB6dW0gVHVlbXBlbCBoaW4sXG4iCisgICAgKyJ3aXJkIGVzIGRhbm4gbWVociB1bmQgbWVociBudXIgbm9jaCBHcmFzIGRhcyBkZW4gQm9kZW4gYmVkZWNrdC5cbiIpOworICAgQWRkRGV0YWlsKCh7InJhc2VuIiwgImdyYXMifSksCisgICAgICJBbSBiZXN0ZW4gYmV0cml0dHN0IER1IGRpZSBMaWNodHVuZyBlaW5mYWNoIHVuZCBzY2hhdXN0IERpciBkZW4gUmFzZW5cbiIKKyAgICArIm5hZWhlciBhbi5cbiIpOworICAgQWRkRGV0YWlsKCJ0dWVtcGVsIiwKKyAgICAgIldlbm4gRHUgRGlyIGRlbiBUdWVtcGVsIG5hZWhlciBhbnNlaGVuIG1vZWNodGVzdCwgZGFubiBzb2xsdGVzdCBEdSBzY2hvblxuIgorICAgICsiZWluIFN0dWVjayBuYWVoZXIgcmFuZ2VoZW4uXG4iKTsKKyAgIEFkZERldGFpbCgoeyJzdHVlY2siLCAicmF1bSJ9KSwKKyAgICAgIk5hIHdlbmlnc3RlbnMgZWluZW4gUmF1bSB3ZWl0ZXIgc29sbHRlc3QgRHUgc2Nob24gZ2Vobi5cbiIpOworICAgQWRkRGV0YWlsKCJzY2hhdHRlbiIsCisgICAgICJIaWVyIGJlZmluZGVzdCBEdSBEaWNoIG5vY2ggaW0gU2NoYXR0ZW4gZGVyIEJhZXVtZSwgZGllIExpY2h0dW5nIGltIFdlc3RlblxuIgorICAgICsibGllZ3QgamVkb2NoIGtvbXBsZXR0IGluIGRlciB3YWVybWVuZGVuIFNvbm5lLlxuIik7CisgICBBZGRTcGVjaWFsRGV0YWlsKCJzb25uZSIsICJkZXRfc29ubmUiKTsKKyAgIEFkZERldGFpbCgoeyJ3ZWdlc3JhbmQiLCAiYmFldW1lIiwgIndlZ3JhbmQiLCAicmFuZCJ9KSwKKyAgICAgIkFtIFdlZ2VzcmFuZCBzdGVoZW4gZWluaWdlIEJhZXVtZSBkaWUgZWluIHNjaG9lbmVzIEJsYWV0dGVyZGFjaCB1ZWJlciBkZW4gV2VnXG4iCisgICAgKyJzcGFubmVuIHVuZCBkZW4gV2VnIGluIGlocmVuIFNjaGF0dGVuIGxlZ2VuLlxuIik7CisgICBBZGREZXRhaWwoKHsiaGltbWVsIiwgImJsYWV0dGVyZGFjaCIsICJkYWNoIiwgImxpY2h0IiwgInNvbm5lbnN0cmFobGVuIiwgIndvbGtlbiIsICJ3b2xrZSJ9KSwKKyAgICAgIkRhcyBCbGFldHRlcmRhY2ggaXN0IHppZW1saWNoIGRpY2h0LCBzbyBkYXNzIER1IG5pY2h0IHNvbyB2aWVsIHNlaGVuIGthbm5zdCxcbiIKKyAgICArImFiZXIgZWluaWdlIFNvbm5lbnN0cmFobGVuIGR1cmNoYnJlY2hlbiBkYXMgRGFjaCB1bmQgZXJyZWljaGVuIGRlbiBXZWcuXG4iKTsKKyAgIEFkZERldGFpbCgoeyJ3ZWciLCAiYm9kZW4iLCAiZXJkZSIsICJhdXNnYW5nIiwgIm9zdGVuIiwgInJpY2h0dW5nIn0pLAorICAgICAiSW0gV2VzdGVuIGZ1ZWhydCBkZXIgV2VnIHp1IGVpbmVyIGdyb3NzZW4gTGljaHR1bmcsIHdhZWhyZW5kIGVyIG5hY2ggT3N0ZW4gaGluXG4iCisgICAgKyJSaWNodHVuZyBBdXNnYW5nIGRlcyBaYXViZXJ3YWxkcyBmdWVocnQuXG4iKTsKKyAgIEFkZERldGFpbCgidm9lZ2VsIiwgIkR1IGthbm5zdCBzaWUgZGV1dGxpY2ggaG9lcmVuLCBiZWtvbW1zdCBhYmVyIGtlaW5lbiB6dSBzZWhuLlxuIik7CisgICBBZGRFeGl0KCJvc3RlbiIsIFJPT00oIndlZzEiKSk7CisgICBBZGRFeGl0KCJzdWVkd2VzdGVuIiwgUk9PTSgibGljaHR1bmdzbyIpKTsKKyAgIEFkZEV4aXQoIndlc3RlbiIsIFJPT00oImxpY2h0dW5nbyIpKTsKKyAgIEFkZEV4aXQoIm5vcmR3ZXN0ZW4iLCBST09NKCJsaWNodHVuZ25vIikpOworICAgQWRkQ21kKCJvc3RlbiIsICJjbWRfb3N0ZW4iKTsKKyAgIEFkZEl0ZW0oTlBDKCJsYXVmZWljaGUiKSwgUkVGUkVTSF9ERVNUUlVDVCk7Cit9CisKK3N0YXRpYyBzdHJpbmcgZGV0X3Nvbm5lKCkKK3sKKyAgIGlmIChQTCkgUEwtPlNldFByb3AoUF9CTElORCwgMSk7CisgICByZXR1cm4gIkR1IHNjaGF1c3QgZmFzemluaWVydCBpbiBkaWUgU29ubmUgdW5kIHVudGVyc3VjaHQgc2llIG5hZWhlciwgZG9jaCBkYXMgd2FyXG4iCisgICAgICAgICArIndvaGwgZWluIGdyb3NzZXIgRmVobGVyLCBkZW5uIHBsb2V0emxpY2ggd2lyZCBlcyBnYW56IGdhbnogZHVua2VsIHVtIERpY2ggcnVtLlxuIjsKK30KKwordm9pZCBpbml0KCkKK3sKKyAgIC8vIHdlbm4gbWFuIHZvbiB3ZXN0ZW4ga29tbXQgdW5kIGtlaW5lIGJsb2NrZW5kZSBFaWNoZSBoaWVyIGlzdCwgZGFubgorICAgLy8gc28gYmV0cmFjaHRlbiBhbHMgd2FlcmUgbWFuIGF1cyBkZW0gb3N0ZW4gZ2Vrb21tZW4KKyAgIGlmIChxdWVyeV9vbmNlX2ludGVyYWN0aXZlKFBMKSAmJiAhcHJlc2VudChXQUxESUQoImVpY2hlIikpKQorICAgICAgUEwtPlNldFByb3AoQVVTR0FORywgIndlc3RlbiIpOworICAgOjppbml0KCk7Cit9CisKK3N0YXRpYyBpbnQgY21kX29zdGVuKCkKKy8vIHdlbm4gZ2VyYWRlIGVpbmUgRWljaGUgaGllcmhpbiBnZWxhdWZlbiBpc3QsIGtvbW1lbiBmZWluZGxpY2hlCisvLyBTcGllbGVyIG5pY2h0IG1laHIgdm9yYmVpIDopCit7CisgICBpZiAoUEwgJiYgUEwtPlF1ZXJ5UHJvcChBVVNHQU5HKSE9Indlc3RlbiIgJiYKKyAgICAgICBQTC0+UXVlcnlQcm9wKFpBVUJFUldBTEQpPnRpbWUoKSAmJiBwcmVzZW50KFdBTERJRCgiZWljaGUiKSwgTUUpKSB7CisgICAgICBpZiAocHJlc2VudChXQUxESUQoImVpY2hlIDIiKSwgTUUpKQorICAgICAgICAgd3JpdGUoIkRpZSBFaWNoZW4gc3RlaGVuIERpciBkYWJlaSBsZWlkZXIgaW0gV2VnIHVuZCBsYXNzZW4gRGljaCBuaWNodCB2b3JiZWkuXG4iKTsKKyAgICAgIGVsc2Ugd3JpdGUoIkRpZSBFaWNoZSBzdGVodCBEaXIgZGFiZWkgbGVpZGVyIGltIFdlZyB1bmQgbGFlc3N0IERpY2ggbmljaHQgdm9yYmVpLlxuIik7CisgICAgICByZXR1cm4gMTsKKyAgIH0KK30KKworc3RhdGljIHN0cmluZyBfcXVlcnlfaW50X2xvbmcoKQoreworICAgaWYgKCFQTCB8fCBQTC0+UXVlcnlQcm9wKFpBVUJFUldBTEQpPD10aW1lKCkpCisgICAgIHJldHVybgorICAgICAgIkR1IHN0ZWhzdCBudW4gbWl0dGVuIGltIFphdWJlcndhbGQuIEltIFdlc3RlbiBlcnN0cmVja3Qgc2ljaCB2b3IgRGlyIGVpbmVcbiIKKyAgICAgKyJncm9zc2UgTGljaHR1bmcsIGF1ZiBkaWUgRHUgbXVlaGVsb3MgZ2VsYW5nZW4ga2FubnN0LiBOYWNoIE9zdGVuIGhpbiBmdWVocnRcbiIKKyAgICAgKyJlaW4gc2NobWFsZXIgV2VnIHp1cnVlY2sgenVtIEF1c2dhbmcgZGVzIFdhbGRlcy4gQWxsZXMgc2NoZWludCBoaWVyIHNlaHJcbiIKKyAgICAgKyJmcmllZGxpY2ggenUgc2VpbiwgZGllIFZvZWdlbCB6d2l0c2NoZXJuIHVuZCBkYXMgQmxhZXR0ZXJkYWNoIGlzdCBoaWVyIGF1Y2hcbiIKKyAgICAgKyJuaWNodCBtZWhyIHNvIGRpY2h0IHdpZSBpbSBPc3Rlbiwgc28gZGFzcyBlaW5pZ2UgU29ubmVuc3RyYWhsZW4gZGVuIFdlZ1xuIgorICAgICArImVycmVpY2hlbi4gRXMgemllaHQgRGljaCBmb2VybWxpY2ggbmFjaCBXZXN0ZW4gYXVmIGRpZSBMaWNodHVuZywgbWl0dGVuIGF1ZlxuIgorICAgICArImRpZXNlcyBzb25uaWdlIGlkeWxsaXNjaGUgUGxhZXR6Y2hlbi5cbiI7CisgICByZXR1cm4gIk5pY2h0cyB3aWUgcmF1cyBoaWVyLiBFcyB3YXIgZ2FueiB1bmQgZ2FyIGtlaW5lIGd1dGUgSWRlZSBoaWVyIGltIFdhbGQgRGVpbmVyXG4iCisgICAgICAgICArIkFnZ3Jlc3Npdml0YWV0IGZyZWllbiBMYXVmIHp1IGxhc3Nlbi4gRHUga2FubnN0IHZvbiBHbHVlY2sgaGFiZW4sIHdlbm4gRHUgbWl0XG4iCisgICAgICAgICArImVpbmVtIGJsYXVlbiBBdWdlIGRhdm9uIGtvbW1zdCB1bmQgZGVuIFdhbGQgbm9jaCBsZWJlbmQgdmVybGFzc2VuIGthbm5zdC5cbiIKKyAgICAgICAgICsiTmFjaCBXZXN0ZW4gZ2VsYW5nc3QgRHUgYXVmIGRpZSBncm9zc2UgTGljaHR1bmcsIHJhdHNhbWVyIHdhZXJlIGplZG9jaCB3b2hsXG4iCisgICAgICAgICArImVoZXIgZGVyIFdhbGR3ZWcgaW0gT3N0ZW4sIHVlYmVyIGRlbiBEdSBkZW4gWmF1YmVyd2FsZCB3aWVkZXIgdmVybGFzc2VuIGthbm5zdC5cbiI7Cit9CmRpZmYgLS1naXQgYS9kb2MvY29uY2VwdHMvLnN5bm9ueW0gYi9kb2MvY29uY2VwdHMvLnN5bm9ueW0KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMDZiYjQwYQotLS0gL2Rldi9udWxsCisrKyBiL2RvYy9jb25jZXB0cy8uc3lub255bQpAQCAtMCwwICsxLDE5IEBACitlZmZpemllbnQgZWZmaXppZW56CitvcHRpbWllcmVuIGVmZml6aWVuegorb3B0aW1pZXJ1bmcgZWZmaXppZW56CitvcHRpbWFsIGVmZml6aWVuegorcGVyZm9ybWFueiBlZmZpemllbnoKK3NwZWljaGVyIG1lbW9yeQorc3dhcCBtZW1vcnkKK3N3YXBwaW5nIG1lbW9yeQorb2JqZWt0IG9iamVjdHMKK29iamVrdGUgb2JqZWN0cworb2JqZWt0b3JpZW50aWVydCBvb3AKK29iamVrdG9yaWVudGllcnVuZyBvb3AKK3Byb3BlcnR5IHByb3BlcnRpZXMKK3Byb3BzIHByb3BlcnRpZXMKK3Rlcm1pbmFsIHRlcm1pbmFscworc3RpbCBnb29kc3R5bGUKK3N0eWxlIGdvb2RzdHlsZQorZ3V0ZXJzdGlsIGdvb2RzdHlsZQora29zdGVuIHRpY2tzCmRpZmYgLS1naXQgYS9kb2MvY29uY2VwdHMvY29uY2VwdHMgYi9kb2MvY29uY2VwdHMvY29uY2VwdHMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNTRiZmFlMAotLS0gL2Rldi9udWxsCisrKyBiL2RvYy9jb25jZXB0cy9jb25jZXB0cwpAQCAtMCwwICsxLDkgQEAKK05BTUUKKyAgICAgICAgY29uY2VwdHMKKworREVTQ1JJUFRJT04KKyAgICAgICAgVGhpcyBkaXJlY3RvcnkgY29udGFpbnMgbWFuIHBhZ2VzIGFib3V0IGJhc2ljIGNvbmNlcHRzIG9mIHRoZQorICAgICAgICBMUEMgbGFuZ3VhZ2UgYXMgaXQgaXMgcHJvdmlkZWQgYnkgQW15bGFhcnMgcGFyc2VyL2ludGVycHJldGVyLgorCitTRUUgQUxTTworICAgICAgICBkcml2ZXIoRCksIGVmdW4oRSksIGFwcGxpZWQoQSksIG1hc3RlcihNKSwgbHBjKExQQykKZGlmZiAtLWdpdCBhL2RvYy9jb25jZXB0cy9lZmZpemllbnogYi9kb2MvY29uY2VwdHMvZWZmaXppZW56Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjNmOTljNDgKLS0tIC9kZXYvbnVsbAorKysgYi9kb2MvY29uY2VwdHMvZWZmaXppZW56CkBAIC0wLDAgKzEsMjIyIEBACitFZmZpemllbnoKKyBCRVNDSFJFSUJVTkc6CisgICAgIEVmZml6aWVueiBpbiBkZXIgUHJvZ3JhbW1pZXJ1bmcgaXN0IGxlaWRlciBuaWNodCBnYW56IHNvIGVpbmZhY2ggenUKKyAgICAgYmVzY2hyZWliZW4sIGRhIGVzIHZpZWwgbWl0IGRlciB6dWdydW5kZWxpZWdlbmRlbiBWZXJhcmJlaXR1bmcgZGVyCisgICAgIFByb2dyYW1tZSB6dSB0dW4gaGF0LiBFcyBnZWh0IGdhbnogZ3V0IGFtIEJlaXNwaWVsLgorCisgICAgIEdlbmVyZWxsIGhhYmVuIExlc2JhcmtlaXQgdW5kIFdhcnRiYXJrZWl0IHZvbiBDb2RlIFZvcnJhbmcgdm9yIGRlc3NlbgorICAgICBFZmZpemllbnosIGdlcmFkZSB3ZWlsIGRpZSB3aXJrbGljaCBhcmJlaXRzbGFzdGlnZW4gTWV0aG9kZW4gaW4gZGVyIExpYgorICAgICBzdGVja2VuLiBBdXNzZXJkZW0gaXN0IGVzIGltIEFsbGdlbWVpbmVuIG5pY2h0IGVtcGZlaGxlbnN3ZXJ0LCAodmllbCkKKyAgICAgQXVmd2FuZCBpbiBkaWUgT3B0aW1pZXJ1bmcgdm9uIENvZGUgenUgc3RlY2tlbiwgc29sYW5nZSBuaWNodCBrbGFyIGlzdCwKKyAgICAgZGFzcyBkaWVzIHVlYmVyaGF1cHQgbm90d2VuZGlnIGlzdC4KKyAgICAgTGVzLS9XYXJ0YmFya2VpdCB1bmQgZWZmaXppZW50ZXIgU3RpbCBzY2hsaWVzc2VuIHNpY2ggYWJlciBuaWNodCBhdXMgdW5kCisgICAgIGVpbmlnZSAoZWluZmFjaGUpIEdydW5kcmVnZWxuIGxhc3NlbiBzaWNoIGVpbmZhY2ggZWluaGFsdGVuLgorCisgICAgIEZ1ZXIgZGllamVuaWdlbiB1bnRlciBldWNoLCBkaWUgZ2VyYWRlIGVyc3QgbWl0IExQQyB6dXNhbW1lbnN0b3NzZW4KKyAgICAgZ2lidCBlcyAoKikgYW4gZGVuIGJlc29uZGVycyB3aWNodGlnZW4gU3RlbGxlbi4gQXVmIERhdWVyIHNvbGx0ZXQgaWhyCisgICAgIGFiZXIgbWFsIGFsbGUgRWludHJhZWdlIHVlYmVyZmxpZWdlbi4gRGVuIGVyc3RlbiBrb2VubmVuIGFsbGUgaGllcgorICAgICBiZWhlcnppZ2VuOgorCisgICAgIExQQyB3aXJkIGJlaW0gTGFkZW4gbmljaHQgb3B0aW1pZXJ0OgorICAgICAgRGFzIHdhcyBpaHIgc2NocmVpYnQsIHdpcmQgYXVjaCBzbyBhdXNnZWZ1ZWhydCwgZXMgd2VyZGVuIGtlaW5lCisgICAgICBTY2hsZWlmZW4gb3B0aW1pZXJ0LCBrZWluZSB1bm5vZXRpZ2VuIFp1d2Vpc3VuZ2VuIGVudGZlcm50LCBuaWNodHMKKyAgICAgIHdpcmQgdmVyYWVuZGVydDoKKyAgICAgIC0gdWViZXJsZWd0IGV1Y2ggYWxzbyBldXJlbiBDb2RlIGd1dCwgd2VubiBlciBhbiBrcml0aXNjaGVuIFN0ZWxsZW4KKyAgICAgICAgc3RlaHQgb2RlciBzZWhyIHZpZWwgUmVjaGVuemVpdCBrb3N0ZXQgKHpCIGdlc2NoYWNodGVsdGUgU2NobGVpZmVuKQorICAgICAgLSB0ZXN0ZXQgZWluZmFjaCBtYWwgVmFyaWFudGVuIHVuZCBmcmFndCBhdWYgLWxwYyBuYWNoIE9wdGltaWVydW5nIQorCisgICAgIGNhbGxfb3V0IHVuZCBoZWFydF9iZWF0IGVyemV1Z2VuIGtvbnN0YW50ZSBMYXN0OgorICAgICAgSmVkZXIgY2FsbF9vdXQoKSBzdGVodCBpbiBlaW5lciBMaXN0ZSwgZGllIGltIHNlbGJlbiBUYWt0IHdpZSBkZXIKKyAgICAgIGhlYXJ0X2JlYXQoKSBkdXJjaHN1Y2h0IHdpcmQuIEJlaWRlcyBrb3N0ZXQgWmVpdC4gQmVpZGUgTWV0aG9kZW4KKyAgICAgIHZlcmhpbmRlcm4genVkZW0gZGFzIEF1c3N3YXBwZW4gZGVzIGVudHNwcmVjaGVuZGVuIE9iamVrdGVzLiBEZXNoYWxiCisgICAgICBzY2hhbHRlbiBzaWNoIFJhdW1tZWxkdW5nZW4gKEFkZFJvb21NZXNzYWdlIGZ1bmt0aW9uaWVydCB1ZWJlcgorICAgICAgY2FsbF9vdXQoKSkgdW5kIGRlciBoZWFydF9iZWF0KCkgdm9uIC9zdGQvbnBjIG5hY2ggZGVtIFZlcmxhc3NlbiBkZXMKKyAgICAgIFJhdW1lcyBkdXJjaCBkZW4gbGV0enRlbiBTcGllbGVyIHNlbGJzdCBhdXMuCisgKiAgICAtIGJpdHRlIGFjaHRldCBkYXJhdWYsIHVubm9ldGlnZSBjYWxsX291dC9oZWFydF9iZWF0IHp1IHZlcm1laWRlbi4KKyAgICAgICAgKEluc2Jlc29uZGVyZSBzaWNoIGJld2VnZW5kZSBOUENzIHNvbGx0ZW4gc2ljaCBhdWNoIGlyZ2VuZHdhbm4KKyAgICAgICAgIHdpZWRlciBhYnNjaGFsdGVuIC0gZXMgZ2lidCBlaW5lbiBmdW5rdGlvbmllcmVuZGVuIE1OUEMgbWl0IGRpZXNlbgorICAgICAgICAgRWlnZW5zY2hhZnRlbiB1bnRlciAvcC9zZXJ2aWNlL3BhZHJlaWMvbW5wYy4pCisgICAgICAtIGZ1ZXIgcmVnZWxtYWVzc2lnZSBBdWZydWZlIGluIGVpbmVtIE9iamVrdCwgd28gZGVyIGdlbmF1ZSBaZWl0cHVua3QKKyAgICAgICAgbmljaHQgYXVmIGVpbmlnZSBTZWt1bmRlbiBhbmtvbW10LCAgYmlldGV0IHNpY2ggYXVjaCByZXNldCgpIG1pdAorICAgICAgICBzZXRfbmV4dF9yZXNldCgpIGFuCisgICAgICAtIHN0YXR0IGNhbGxfb3V0KCktS2V0dGVuIGluIGVpbmVtIFJhdW0gbGF1ZmVuIHp1IGxhc3Nlbiwga2FubiBtYW4KKyAgICAgICAgc2ljaCBhdWNoIGRpZSBsZXR6dGUgQWt0aXZpZXJ1bmcgbWVya2VuIHVuZCBiZWkgZWluZW0gaW5pdCgpCisgICAgICAgIHdpZWRlciBlaW4gZW50c3ByZWNoZW5kIGxhbmdlcyBjYWxsX291dCgpIHN0YXJ0ZW4KKworICAgICBTcGVpY2hlciB1bmQgZGFzIERydW1oZXJ1bToKKyAgICAgIERpZSBTcGVpY2hlcnNpdHVhdGlvbiBpc3QgbmljaHQgbWVociB2ZXJ6d2VpZmVsdC4gRGFzIGhlaXNzdCBhYmVyCisgICAgICBuaWNodCwgZGFzcyBkYW1pdCBnZXNjaGxhbXB0IHdlcmRlbiBrYW5uLiBHbGVpY2h6ZWl0aWcgaXN0IGRpZQorICAgICAgUmVzZXJ2aWVydW5nIHZvbiBTcGVpY2hlciB1bmQgZGllIEdhcmJhZ2UgQ29sbGVjdGlvbiwgZGFzIEVpbnNhbW1lbG4KKyAgICAgIGZyZWlnZWdlYmVuZW4gU3BlaWNoZXJzIGJlaSBGcmVpZ2FiZW4gdm9uIFZhcmlhYmxlbiAod2llIGJlaSB4K3ksCisgICAgICB4PTAgKHgseT09YXJyYXkvbWFwcGluZykpIGltbWVyIGtvc3RzcGllbGlnLiBGb2xnZW5kIGVpbiBwYWFyCisgICAgICBUaXBwcyBkYXp1OgorICAgICAgR3JvZXNzZToKKyAgICAgIC0gd2VubiBtb2VnbGljaCwgZ2xvYmFsZSBWYXJpYWJsZW4gbmFjaCBOdXR6dW5nIGZyZWlnZWJlbiAtIGdnZi4KKyAgICAgICAgI2RlZmluZXMgYmVudXR6ZW46IFZvcnNpY2h0IGplZG9jaCBiZWkgTWFwcGluZy9BcnJheSAoc2llaGUgdW50ZW4pCisgICAgICAtIGdsb2JhbGUgb2RlciBpbiBQcm9wZXJ0aWVzIGFiZ2VzcGVpY2hlcnRlIE1hcHBpbmdzL0FycmF5cy8KKyAgICAgICAgU3RyaW5ncyBrbGVpbiBoYWx0ZW4gdW5kIG51ciBkeW5hbWlzY2ggZXJ3ZWl0ZXJuCisgICAgICAtIHByb2dyYW1taWVydCBtYW4gYW4gdmllbGVuIFN0ZWxsZW4gZ2xlaWNoZW4gQ29kZSwgZGFubiBpc3QgZXMKKyAgICAgICAgc2lubnZvbGwsIGRpZXNlbiBpbiBlaW5lIGVpZ2VuZSBEYXRlaS9LbGFzc2UgenUgZ2llc3NlbiB1bmQgdm9uCisgICAgICAgIGRpZXNlciB6dSBlcmJlbiAtIGRhcyBzcGFydCBTcGVpY2hlciB1bmQgbGFlc3N0IHNpY2ggYmVzc2VyIHdhcnRlbgorICAgICAgLSByZXBsYWNlX3Byb2dyYW0gYml0dGUgbnVyIGJlbnV0emVuLCB3ZW5uIG1hbiB3ZWlzcywgd2FzIGVzIGJld2lya3QsCisgICAgICAgIC9zdGQvcm9vbSB2ZXJ3ZW5kZXQgZXMgYmVyZWl0cyBhdXRvbWFnaXNjaAorICogICAgLSBPYmpla3RlIGluIFJhZXVtZW4gdW5kIE5QQ3Mgc29sbHRlbiBwZXIgQWRkSXRlbSgpIGFkZGllcnQgd2VyZGVuLAorICAgICAgICBkYSBkaWUgZ2VuZXJlbGxlIEF1ZnJhZXVtZnVua3Rpb24gL3N0ZC9yb29tOjpjbGVhbl91cCgpIGRhbm4gd2Vpc3MKKyAgICAgICAgb2IgZGVyIFJhdW0gZW50ZmVybnQgd2VyZGVuIGthbm4KKyAgICAgIC0gZXMgc29sbHRlIGtlaW5lIGV3aWdlbiBPYmpla3RxdWVsbGVuIGdlYmVuCisgICAgICAtIEJsdWVwcmludHM6CisgICAgICAgIC0gU29sbCBlcyBpbW1lciBudXIgZWluIE9iamVrdCB2b24gZXR3YXMgZ2ViZW4sIHN0ZWxsdCBkaWUgQmx1ZXByaW50CisgICAgICAgICAgcGVyIEFkZEl0ZW0oLi4uLC4uLiwxKSBkb3J0IGhpbi4KKyAgICAgICAgICBBY2h0dW5nOiBCbHVlcHJpbnRzIG5ldSB6dSBsYWRlbiwgaXN0IHRldWVyIGltIFZlcmdsZWljaCB6dW0gY2xvbmVuLgorICAgICAgICAgICAgICAgICAgIEdlcmFkZSBiZWkgTlBDcyAoZGllIGJlaW0gVG9kIHplcnN0b2VydCB3ZXJkZW4pLCBzb2xsdGUKKyAgICAgICAgICAgICAgICAgICBtYW4gZGFzIGltIEhpbnRlcmtvcGYgYmVoYWx0ZW4uCisgICAgICAgIC0gRGllIEJQIHZvbiBnZWNsb250ZW4gT2JqZWt0ZW4gbXVzcyBuaWNodCBpbW1lciBpbml0aWFsaXNpZXJ0IHdlcmRlbiwKKyAgICAgICAgICBzcGV6aWVsbCBiZWkga29tcGxleGVuIE9iamVrdGVuIGthbm4gZXMgc2ljaCBsb2huZW4sIGRpZQorICAgICAgICAgIEluaXRpYWxpc2llcnVuZyBkZXIgQlAgaW0gY3JlYXRlIGFienVicmVjaGVuLiAoRGVubiBtZWlzdGVucyBpc3QgbnVyCisgICAgICAgICAgaWhyIFByb2dyYW1tIGludGVyZXNzYW50KQorICAgICAgICAgIHByb3RlY3RlZCB2b2lkIGNyZWF0ZSgpIHsKKyAgICAgICAgICAgIGlmKCFjbG9uZXAodGhpc19vYmplY3QoKSkpIHsKKyAgICAgICAgICAgICAgc2V0X25leHRfcmVzZXQoLTEpOyAgIC8vIGZhbGxzIGRpZSBDbG9uZXMgaW0gcmVzZXQoKSB3YXMKKyAgICAgICAgICAgICAgcmV0dXJuOyAgICAgICAgICAgICAgIC8vIG1hY2hlbgorICAgICAgICAgICAgfQorICAgICAgICAgICAgOjpjcmVhdGUoKTsgLi4uCisgICAgICAgICAgfQorICAgICAgCisgICAgIEtvc3RlbjoKKyAqICAgIC0gZXMgbG9obnQsIGxva2FsZSBNYXBwaW5ncyBvZGVyIEFycmF5cyBtaXQgYmVrYW5udGVyIEdyb2Vzc2UgdmlhCisgICAgICAgIGFsbG9jYXRlKCkgb2RlciBtX2FsbG9jYXRlKCkgdm9yIEJlbGVndW5nIGluIHZvbGxlciBiZW5vZXRpZ2VyCisgICAgICAgIEdyb2Vzc2UgenUgcmVzZXJ2aWVyZW46CisgICAgICAgIHN0YXR0OgorICAgICAgICAgIGludCAqeCA9ICh7fSk7IGZvcmVhY2goaW50IGk6IDEwKSB4Kz0oe2l9KTsKKyAgICAgICAgbGllYmVyOgorICAgICAgICAgIGludCAqeCA9IGFsbG9jYXRlKDEwKTsgZm9yZWFjaChpbnQgaTogMTApIHhbaV0gPSBpOworICogICAgLSB3aWVkZXJob2x0ZXMgQXVzc2NobmVpZGVuIChzbGljZSkgYXVzIEFycmF5cyB2ZXJtZWlkZW4sIGRhYmVpIHdpcmQKKyAgICAgICAgc3RhZW5kaWcgU3BlaWNoZXIgbmV1IGFsbG96aWllcnQgdW5kIGJlbnV0enRlciBTcGVpY2hlciBmcmVpZ2VnZWJlbjoKKyAgICAgICAgc3RhdHQ6CisgICAgICAgICAgaW50ICp4OyAuLi47IHdoaWxlKHNpemVvZih4KSkgeyB4WzBdLi4uOyB4PVsxLi54XTsgfQorICAgICAgICBsaWViZXI6CisgICAgICAgICAgaW50ICp4OyAuLi47IGk9c2l6ZW9mKHgpOyB3aGlsZShqPGkpIHsgeFtqXS4uLjsgaisrOyB9CisgKiAgICAtIGRpcmVrdGUgTWFwcGluZy9BcnJheSAoe30pLCAoW10pIGluIE1ldGhvZGVuICh6QiB1ZWJlciAjZGVmaW5lKQorICAgICAgICBzcGFyZW4gendhciBnbG9iYWxlbiBQbGF0eiwga29zdGVuIGFiZXIgS29uc3RydWt0aW9uc3plaXQgYmVpIGplZGVtCisgICAgICAgIEF1ZnJ1ZiBkaWVzZXIgTWV0aG9kZW4gLSBmdWVyIGhhZXVmaWcgZ2VydWZlbmUgTWV0aG9kZW4gc29sbHRlbgorICAgICAgICBncm9zc2UgRGF0ZW5zdHJ1a3R1cmVuIGVpbm1hbCBnbG9iYWwga29uc3RydWllcnQgd2VyZGVuCisgICAgICAgIHN0YXR0OiAgICAjZGVmaW5lIEdST1NTRVNfTUFQUElORyAoWy4uLi5dKQorICAgICAgICAgICAgICAgICAgdm9pZCBoYWV1ZmlnZV9mdW4oKSB7IC4uLiBHUk9TU0VTX01BUFBJTkcgLi4uIH0KKyAgICAgICAgbGllYmVyOiAgIG1hcHBpbmcgR1JPU1NFU19NQVBQSU5HID0gKFsuLi4uXSk7CisgICAgICAgICAgICAgICAgICB2b2lkIGhhZXVmaWdlX2Z1bigpIHsgLi4uIEdST1NTRVNfTUFQUElORyAuLi4gfQorICogICAgLSBkaXZlcnNlIGVmdW5zIHNpbmQgZ2VuYXVzbyBzY2huZWxsIHp1Z3JlaWZiYXIgd2llIFZhcmlhYmxlbiwKKyAgICAgICAgbXVlc3NlbiBhbHNvIG51ciB6dWdld2llc2VuIHdlcmRlbiwgd2VubiBzaWNoIGRlciBXZXJ0IGFlbmRlcm4ga2FubjoKKyAgICAgICAgdGhpc19wbGF5ZXIoKSwgdGhpc19pbnRlcmFjdGl2ZSgpLCBlbnZpcm9ubWVudCgpLCBwcmV2aW91c19vYmplY3QoKSwKKyAgICAgICAgdGhpc19vYmplY3QoKS4KKyAqICAgIC0gc3RhdHQgYWxsX2ludmVudG9yeSgpIGVpbmVyIFZhcmlhYmxlbiB6dXp1d2Vpc2VuIHVuZCBkYXJ1ZWJlcgorICAgICAgICB6dSBpdGVyaWVyZW4sIGthbm4gbWFuIG9mdCBtaXQgZmlyc3RfaW52ZW50b3J5KCkgdW5kIG5leHRfaW52ZW50b3J5KCkKKyAgICAgICAgZWluIEludmVudG9yeSBkdXJjaGdlaGVuCisKKyAgICAgTWV0aG9kZW46CisgICAgICBEaWUgTWV0aG9kZW4gZWluZXMgT2JqZWt0ZXMgd2VyZGVuIGluIGVpbmVyIExpc3RlIGdlc3BlaWNoZXJ0LCBkaWUKKyAgICAgIGJlaW0gQXVmcnVmIGVpbmVyIE1ldGhvZGUgdWViZXIgY2FsbF9vdGhlcigpIChvZGVyIG8tPmZ1bigpKQorICAgICAgZHVyY2hnZXNlaGVuIHdpcmQuIERhcyBoYXQgZm9sZ2VuZGUgS29uc2VxdWVuemVuOgorICogICAgLSBqZWRlIG9lZmZlbnRsaWNoZSBNZXRob2RlIHdpcmQgYmVpIGNhbGxfb3RoZXIoKSBkdXJjaHN1Y2h0IHVuZAorICAgICAgICBkYXMga29zdGV0IFplaXQsIHdlbm4gZWluZSBNZXRob2RlIGFsc28gbmljaHQgb2VmZmVudGxpY2ggc2VpbgorICAgICAgICBtdXNzLCBkYW5uIHNjaHJlaWJ0IGF1Y2ggZWluICJwcm90ZWN0ZWQiIGRhdm9yLCB3ZW5uIHNpZSBpbiBkZW4KKyAgICAgICAgZXJiZW5kZW4gS2xhc3NlbiBuaWNodCBzaWNodGJhciBzZWluIG11c3M6ICJwcml2YXRlIgorICAgICAgLSBudXR6dCBpaHIgZWluZSBmcmVtZGUgTWV0aG9kZSBtZWhyZmFjaCAoekIgUXVlcnlQcm9wKSwgZGFubiBpc3QgZXMKKyAgICAgICAgYW4gc2VociBrcml0aXNjaGVuIFN0ZWxsZW4gc2lubnZvbGwsIGRpZXNlIGVpbm1hbCB6dSBzdWNoZW4gdW5kIGFuCisgICAgICAgIGVpbmUgTGZ1bi1DbG9zdXJlIHp1IGJpbmRlbiwgd2VpdGVyZSBBdWZydWZlIHNpbmQgc2NobmVsbGVyOgorICAgICAgICAgY2xvc3VyZSBjbDsKKyAgICAgICAgIGNsPXN5bWJvbF9mdW5jdGlvbigiUXVlcnlQcm9wIix0aGlzX3BsYXllcigpKTsKKyAgICAgICAgIGZ1bmNhbGwoY2wsIFBfTEVWRUwpOyBmdW5jYWxsKGNsLCBQX1NJWkUpOyAuLi4KKyAgICAgIE5lYmVuYmVpIGJlbWVya3Q6CisgICAgICAtIGVzIGdpYnQgaW4gTFBDIGtlaW4gc29nLiBmcnVlaGVzIEJpbmRlbiwgInRoaXNfb2JqZWN0KCktPmZ1bmN0aW9uKCk7IgorICAgICAgICBpc3QgZmFzdCBpbW1lciB1bm5vZXRpZyB1bmQgZmFzdCBpbW1lciBudXIgZWluIFplaWNoZW4gZnVlciBGYXVsaGVpdCBkaWUKKyAgICAgICAgcmljaHRpZ2VuIFByb3RvdHlwZW4genUgaW5rbHVkaWVyZW4vZm9ybXVsaWVyZW4uCisKKyAgICAgTGFtYmRhczoKKyAgICAgIExhbWJkYS1DbG9zdXJlcyBzaW5kIG5pY2h0IG51ciBzY2h3ZXIgenUgbGVzZW4sIHNvbmRlcm4gb2Z0IGF1Y2ggbGFuZ3NhbWVyCisgICAgICBhbHMgYW5kZXJlIENsb3N1cmVzLiBTcGV6aWVsbCB3aXJkIGJlaSBqZWRlbSBBdWZ0cmV0ZW4gdm9uIGxhbWJkYSgpIGRpZQorICAgICAgTGFtYmRhIG5ldSBlcnpldWd0LgorICAgICAgTmVobXQgZXVjaCBkaWUgWmVpdCBhdXMgZWluZXIgTGFtYmRhLUNsb3N1cmUgZWluZSBMZnVuLUNsb3N1cmUgenUKKyAgICAgIG1hY2hlbiBvZGVyIHNpZSB6dW1pbmRlc3QgYW4gZWluZSBnbG9iYWxlIENsb3N1cmUtVmFyaWFibGUgenUgYmluZGVuLAorICAgICAgZGFtaXRzIHNpZSBzY2huZWxsIGF1c2dlZnVlaHJ0IHdlcmRlbiBrYW5uLiAjZGVmaW5lIGJpZXRldCBzaWNoIGhpZXIKKyAgICAgIG5pY2h0IGFuLgorICAgICAgc3RhdHQ6ICBmaWx0ZXIodXNlcnMoKSwKKyAgICAgICAgICAgICAgICAgICAgICAgbGFtYmRhKCh7J3h9KSwgKHsjJ2NhbGxfb3RoZXIsJ3gsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiUXVlcnlQcm9wIixQX1NFQ09ORH0pKSk7CisgICAgICBsaWViZXI6IHByaXZhdGUgc3RhdGljIGludCBfaXNhc2VjKG9iamVjdCBvKSB7CisgICAgICAgICAgICAgICAgcmV0dXJuIG8tPlF1ZXJ5UHJvcChQX1NFQ09ORCk7CisgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgLi4uCisgICAgICAgICAgICAgIGZpbHRlcih1c2VycygpLCAjJ19pc2FzZWMpOworICAgICAgb2RlcjogICBjbG9zdXJlIGNsOworICAgICAgICAgICAgICBjbD1sYW1iZGEoKHsneH0pLCAuLi4gKTsKKyAgICAgICAgICAgICAgLi4uCisgICAgICAgICAgICAgIGZpbHRlcih1c2VycygpLCBjbCk7CisgICAgICBvZGVyOgorICAgICAgQmVzc2VyZSBBbHRlcm5hdGl2ZSB6dSBMYW1iZGFzIHNpbmQgdWVicmlnZW5zIGlubGluZS1jbG9zdXJlcyAobWFuCisgICAgICBpbmxpbmUtY2xvc3VyZXMpLCBkaWUgZGV1dGxpY2ggc2NobmVsbGVyIHVuZCBlaW5mYWNoZXIgenUgbGVzZW4gc2luZC4KKyAgICAgICAgICAgICAgZmlsdGVyKHVzZXJzKCksIGZ1bmN0aW9uIG1peGVkIChwbCkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGwtPlF1ZXJ5UHJvcChQX1NFQ09ORCk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgICk7CisKKworICAgICBTaW11bC1lZnVuIHVuZCBkaWUgTGFzdCBkZXIgVmVyZ2FuZ2VuaGVpdDoKKyAgICAgIEVzIGdpYnQgZWluaWdlIFNpbXVsLUVmdW5zLCBkaWUgYW5zdGVsbGUgZWluZXIgYWVobmxpY2hlbiBFZnVuIHZlcndlbmRldAorICAgICAgd2VyZGVuLCBhYmVyIGxhbmdzYW1lciBzaW5kLiBCZWlzcGllbDogZGllIHNlZnVuIG1fY29weV9kZWxldGUoKSBtYWNodAorICAgICAgZmFzdCBkYXMgZ2xlaWNoZSB3aWUgbV9kZWxldGUoKSwgZXJ6ZXVndCBhYmVyIHZvcmhlciBpbW1lciBlaW5lIEtvcGllLgorICAgICAgV2VubiBtYW4gZGllc2UgbmljaHQgYnJhdWNodCwgc29sbHRlIG1hbiBtX2RlbGV0ZSgpIGRlbiBWb3J6dWcgZ2ViZW4uCisKKworICAgICBHZW5lcmVsbGUgQmVtZXJrdW5nZW46CisgKioqICAtIExBRyBlbnRzdGVodCB2b3IgYWxsZW0gZGFubiwgd2VubiB6dSB2aWVsZSBEaW5nZSBhdWYgZWlubWFsCisgICAgICAgIGlkZW50aWZpemllcnQsIGJld2VndCwgZ2VsYWRlbiwgZ2VjbG9uZWQgb2RlciBrb3BpZXJ0IHdlcmRlbgorICAgICAgICBzb2xsZW4gKGluIG51ciBlaW5lbSBLb21tYW5kbywgaW4gZWluZW0gcmVzZXQoKSwgLi4uKQorICAgICAgICAtIHplcmxlZ3Qgc29sY2hlIEF1ZmdhYmVuIG1pdCBjYWxsX291dC9oZWFydF9iZWF0IGluIEhhZXBwY2hlbgorICAgICAgICAtIGxhc3N0IGVzIGVpbmVuIEVyem1hZ2llciBkdXJjaHNlaGVuCisgKiAgICAtIFZhcmlhYmxlbiBzaW5kIGltbWVyIGF1ZiAwIGluaXRpYWxpc2llcnQsCisgICAgICAgIGFsbG9jYXRlKCktQXJyYXlzIHNpbmQgbWl0IDAgb2RlciBXdW5zY2h3ZXJ0IGluaXRpYWxpc2llcnQuCisgICAgICAtIGdsZWljaGVyIENvZGUgc29sbHRlIGF1cyBTY2hsZWlmZW4gc29sbHRlbiBlbnRmZXJudCB3ZXJkZW4sCisgICAgICAgIHpCIGJlaSBJdGVyYXRpb24gdWViZXIgZWluIEFycmF5IGdlaG9lcnQgZGFzIHNpemVvZigpIHZvciBkaWUKKyAgICAgICAgU2NobGVpZmUsIG5pY2h0IGluIGRlbiBUZXN0CisgKiAgICAtIGJlaW0gSWRlbnRpZml6aWVyZW4gZWluZGV1dGlnZXIgT2JqZWt0ZSBpc3QgcHJlc2VudF9jbG9uZSgpCisgICAgICAgIHdlc2VudGxpY2ggYmlsbGlnZXIgYWxzIGVpbiBwcmVzZW50KCkgKyBnZXNjaHVldHp0ZW4gSURzCisgKiAgICAtIGF1cyBBcnJheXMga29lbm5lbiBtaXR0ZWxzICItIiB2aWVsZSBpZGVudGlzY2hlIFdlcnRlIGF1ZiBlaW5tYWwKKyAgICAgICAgZW50ZmVybnQgd2VyZGVuLCBlcyBpc3QgYWxzbyBzaW5udm9sbCBiZWkgTG9lc2Nob3BlcmF0aW9uZW4KKyAgICAgICAgenUgbG9lc2NoZW5kZSBXZXJ0ZSBhdWYgZWluZW4gYmVzdGltbXRlbiBXZXJ0IHp1IHNldHplbiB1bmQgZGllc2VuCisgICAgICAgIGRhbm4gbWl0dGVscyBhcnJheS09KHt3ZXJ0fSkgenUgZW50ZmVybmVuLgorICAgICAgICBXaXIgZW50ZmVybmVuIGFsbGUgZ2V0b2V0ZXRlbiBOUEMsIGQuaC4gYWxsZSBnZWxvZXNjaHRlbiBPYmpla3RlCisgICAgICAgIGF1cyBlaW5lciBMaXN0ZTogbWVpbmVsaXN0ZW1pdG5wY3MtPSh7MH0pCisgICAgICAtIGVmdW5zIHNpbmQgb2Z0IHNjaG5lbGxlciBhbHMgZWlnZW5lIEtvbnN0cnVrdGUsIGdlcmFkZSB3YXMKKyAgICAgICAgQXJyYXlzIGJldHJpZmZ0LiBQYXVzY2hhbGlzaWVydCBrYW5uIGRhcyBuaWNodCB3ZXJkZW4sIG1hbiBtdXNzCisgICAgICAgIGF1Y2ggaW1tZXIgZGllIG5vZXRpZ2UgUmVzZXJ2aWVydW5nIHZvbiBTcGVpY2hlciBtaXRiZXRyYWNodGVuIQorICAgICAgICBadXNhbW1lbiBtaXQgZWluZXIgUmVmZXJlbnogc2luZCBzb3J0X2FycmF5KCksIGZpbHRlcigpLCBtYXAoKSBldGMuCisgICAgICAgIGRlbm5vY2ggb2Z0IGV1ZXIgRnJldW5kOgorICAgICAgICBzdGF0dDogICB0PWFsbG9jYXRlKDApOworICAgICAgICAgICAgICAgICBmb3IgKGk9c2l6ZW9mKGExKTsgaS0tOyApCisgICAgICAgICAgICAgICAgICAgaWYgKG1lbWJlcihhMixhMVtpXSk+PTApIHQrPSh7YTFbaV19KTsKKyAgICAgICAgbGllYmVyOiAgcHJpdmF0ZSBzdGF0aWMgbWl4ZWQgX2lzX21lbWJlcihtaXhlZCB4LCBhKSB7CisgICAgICAgICAgICAgICAgICAgaWYgKG1lbWJlcihhLHgpPj0wKSByZXR1cm4gMTsKKyAgICAgICAgICAgICAgICAgICBlbHNlIHJldHVybiAwOworICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgIC4uLgorICAgICAgICAgICAgICAgICB0PWZpbHRlcihhMSwgIydfaXNfbWVtYmVyLCAmYTIpOworICAgICAgICBvZGVyIGhpZXIgbm9jaCBiZXNzZXI6CisgICAgICAgICAgICAgICAgICAgdD1hMSZhMjsKKyAgICAgIC0geCZ5IGlzdCBiZWkgendlaSBncm9zc2VuIEFycmF5cyBtYW5jaG1hbCBkaWUgc2NobGVjaHRlcmUgV2FobDoKKyAgICAgICAgc3RhdHQ6ICAgdD1hbGxfaW52ZW50b3J5KFRPKSZ1c2VycygpOyAgICAgICAvLyB6d2VpIEFycmF5cworICAgICAgICBsaWViZXI6ICB0PWZpbHRlcihhbGxfaW52ZW50b3J5KFRPKSwgICAgICAgIC8vIGVpbiBBcnJheSEKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIydxdWVyeV9vbmNlX2ludGVyYWN0aXZlKTsKKyAgICAgICAgRXZlbnR1ZWxsIGxvaG50IGVzIHNpY2ggaGllciwgZ2xlaWNoIG1pdCBmaXJzdF9pbnZlbnRvcnkoKSB1bmQKKyAgICAgICAgbmV4dF9pbnZlbnRvcnkoKSB1ZWJlciBkZW4gUmF1bSB6dSBpdGVyaWVyZW4gdW5kIGF1ZiBhbGxlbgorICAgICAgICBxdWVyeV9vbmNlX2ludGVyYWN0aXZlKCkgZGllIGdld3VlbnNjaHRlbiBPcGVyYXRpb25lbiB2b3J6dW5laG1lbi4KKyAgICAgIC0gZm9yZWFjaCgpIGlzdCBvZnQgZ2VnZW51ZWJlciBmb3IoKSBkaWUgYmVzc2VyZSBBbHRlcm5hdGl2ZSAoZXR3YXMKKyAgICAgICAgc2NobmVsbGVyLCBlaW5mYWNoZXIgZm9ybXVsaWVydCkKKyAgICAgIC0gd2VpdGVyZSBzY2huZWxsZSBlZnVuczoKKyAgICAgICAgcXVlcnlfdmVyYigpLCBpbnRlcmFjdGl2ZSgpLCBxdWVyeV9vbmNlX2ludGVyYWN0aXZlKCksIGxpdmluZygpLAorICAgICAgICBzdHJpbmdwKCksIGludHAoKSwgY2xvc3VyZXAoKSwgb2JqZWN0cCgpLCAuLi4KKworIFNJRUhFIEFVQ0g6CisgICAgIG1lbW9yeSwgb2JqZWt0ZSwgbXVkcmVjaG5lciwgZ29vZHN0eWxlLCB0aWNrcworCisgNi4gU2VwIDIwMTIgR2xvaW5zb24KZGlmZiAtLWdpdCBhL2RvYy9jb25jZXB0cy9lcnEgYi9kb2MvY29uY2VwdHMvZXJxCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjM3OGQ1OWQKLS0tIC9kZXYvbnVsbAorKysgYi9kb2MvY29uY2VwdHMvZXJxCkBAIC0wLDAgKzEsNTc4IEBACitDT05DRVBUCisgICAgICAgIGVycSAtIEV4dGVybmFsIFJlcXVlc3QgRGVtb24KKworREVTQ1JJUFRJT04KKyAgICAgICAgVXAgdG8gdmVyc2lvbiAzLjIuMUA2MSwgTFBNdWQgdXRpbGl6ZWQgdHdvIGV4dGVybmFsIHByb2dyYW1zCisgICAgICAgIGluIGFuIGFkLWhvYyBtYW5uZXIgdG8gc29sdmUgcHJvYmxlbXM6IHRoZSAnaG5hbWUnIHByb2dyYW0gdG8KKyAgICAgICAgcmVzb2x2ZSBJUCBhZGRyZXNzZXMgaW50byBtZWFuaW5nZnVsIGhvc3RuYW1lcywgYW5kIHRoZQorICAgICAgICAnaW5kZW50JyBwcm9ncmFtIHRvIHByb3Blcmx5IGluZGVudCBMUEMgZmlsZXMuCisgICAgICAgIEluIHZlcnNpb24gMy4yLjFANjEgYm90aCBmdW5jdGlvbnMgd2VyZSB1bml0ZWQgaW4gYQorICAgICAgICBnZW5lcmFsaXplZCAnZXJxJyBwcm9jZXNzLCB0byB3aGljaCBhZGRpdGlvbmFsIGZ1bmN0aW9ucyBtYXkKKyAgICAgICAgYmUgYXR0YWNoZWQuIFVuZm9ydHVuYXRlbHkgaXQgd2FzIG5ldmVyIGRvY3VtZW50ZWQgYnkgQW15bGFhciwKKyAgICAgICAgc28gdGhlIGluZm9ybWF0aW9uIHByZXNlbnRlZCBoZXJlIGhhZCB0byBiZSByZXZlcnNlIGVuZ2luZWVyZWQKKyAgICAgICAgZnJvbSB0aGUgc291cmNlcyAtIGJldHRlciB0YWtlIGl0IHdpdGggYSBncmFpbiBvZiBzYWx0LgorCisgICAgICAgIFRoZSBlcnEgZmVhdHVyZSBpcyBhdmFpbGFibGUgaWYgdGhlIGRyaXZlciBpcyBjb21waWxlZCB3aXRoCisgICAgICAgIEVSUV9ERU1PTiBkZWZpbmVkIChpbiBjb25maWcuaCkuCisKKyAgICAgICAgV2hlbiB0aGUgZHJpdmVyIHN0YXJ0cyB1cCwgaXQgdHJpZXMgdG8gZm9yayBvZmYgdGhlIHByb2dyYW0KKyAgICAgICAgJ0JJTkRJUi9lcnEgLS1mb3JrZWQgPG90aGVyIGFyZ3M+JyAod2l0aCBCSU5ESVIgZGVmaW5lZCBpbgorICAgICAgICB0aGUgTWFrZWZpbGUpLiBJZiB0aGlzIHN1Y2NlZWRzLCB0aGUgZXJxIG1heSB0YWxrIHdpdGgKKyAgICAgICAgdGhlIGRyaXZlciB0aHJvdWdoIHN0ZGluIGFuZCBzdGRvdXQgKHBpcGVkIHRocm91Z2ggQUZfVU5JWAorICAgICAgICBzb2NrZXRzKS4gVGhlIGVycSBoYXMgdG8gc2lnbmFsIGl0cyBzdWNjZXNzZnVsbCBzdGFydCBieQorICAgICAgICB3cml0aW5nIHRoZSBjaGFyYWN0ZXIgJzEnIGJhY2sgdG8gdGhlIGRyaXZlci4KKworICAgICAgICBUaGUgZXJxIGhhcyB0byB1bmRlcnN0YW5kIHRoZXNlIGNvbW1hbmRsaW5lIGFyZ3VtZW50czoKKworICAgICAgICAgIC0tZm9ya2VkOiBleHBsYWluZWQgYWJvdmUKKyAgICAgICAgICAtLWV4ZWNkaXIgPGRpcj46IFRoZSBkaXJlY3Rvcnkgd2hlcmUgdGhlIGNhbGxhYmxlIGV4ZWN1dGFibGVzCisgICAgICAgICAgICAgICAgICAgIGNhbiBiZSBmb3VuZC4gSWYgbm90IHNwZWNpZmllZCwgRVJRX0RJUiBpcyB1c2VkLgorICAgICAgICAgICAgICAgICAgICA8ZGlyPiBtdXN0IG5vdCBlbmQgaW4gYSAnLycgYW5kIHNob3VsZCBiZSBhYnNvbHV0ZS4KKworICAgICAgICBBdCBydW50aW1lLCB0aGUgZXJxIG1heSBiZSBjaGFuZ2VkL3JlbW92ZWQgZnJvbSB3aXRoaW4gdGhlCisgICAgICAgIG11ZGxpYiB1c2luZyB0aGUgZWZ1biBhdHRhY2hfZXJxX2RlbW9uKCkuIFRoaXMgZWZ1biBpcyBnaXZlbgorICAgICAgICBhbiBpbnRlcmFjdGl2ZSBvYmplY3QgYXMgYXJndW1lbnQsIGFuZCB0YWtlcyB0aGUgY29ubmVjdGlvbgorICAgICAgICBhd2F5KCEpIGZyb20gdGhpcyBvYmplY3QgYW5kIHN0b3JlcyBpdCBhcyB0aGUgZXJxIGNvbm5lY3Rpb24KKyAgICAgICAgdG8gdXNlIChhbiBvbGQgZXJxIGNvbm5lY3Rpb24gaXMgY2xvc2VkIGZpcnN0KS4gVGhlIG9iamVjdAorICAgICAgICAod2hpY2ggbm93IG5vIGxvbmdlciBpcyBpbnRlcmFjdGl2ZSkgaXMgdGhlbiBubyBsb25nZXIgbmVlZGVkLAorICAgICAgICBidXQgbWF5IGNvbnRpbnVlIHRvIGV4aXN0LgorICAgICAgICBUaGUgZXJxIGF0dGFjaGVkIHRoaXMgd2F5IG9mIGNvdXJzZSBoYXMgdG8gdXNlIHRoZSBzb2NrZXRzIGl0CisgICAgICAgIG9wZW5lZCB0byBjb21tdW5pY2F0ZSB3aXRoIHRoZSBkcml2ZXIuCisKKyAgICAgICAgTW9zdCBvZiB0aGUgY29tbXVuaWNhdGlvbiBiZXR3ZWVuIGVycSBhbmQgZHJpdmVyIGlzIGdvaW5nIHRvCisgICAgICAgIGJlIGluaXRpYXRlZCBieSB0aGUgZHJpdmVyICh0aGUgZXJxIGhhcyB0byBsb29rIHVwIHRoZQorICAgICAgICBob3N0bmFtZXMgZm9yIGdpdmVuIElQIGFkZHJlc3NlcyksIGJ1dCB1c2luZyB0aGUgZWZ1bgorICAgICAgICBzZW5kX2VycSgpIHRoZSBtdWRsaWIgbWF5IHRhbGsgd2l0aCB0aGUgZXJxIGFzIHdlbGwuCisKKyAgICAgICAgVGhlIGNvbW11bmljYXRpb24gYmV0d2VlbiBkcml2ZXIgYW5kIGVycSBpcyBkb25lIHVzaW5nCisgICAgICAgIG1lc3NhZ2VzIG9mIHNwZWNpZmllZCBzdHJ1Y3R1cmVzIGFuZCBjb25zdGFudHMgKGRlZmluZWQgaW4KKyAgICAgICAgdXRpbC9lcnEuaCByZXNwLiBzeXMvZXJxLmgpLiBUaGUgJ2ludDMyJ3MgYXJlIHNpZ25lZCBpbnRlZ2VycworICAgICAgICBvZiBmb3VyIGJ5dGUgbGVuZ3RoLCBhbmQgYXJlIHNlbnQgd2l0aCB0aGUgTVNCeXRlIGZpcnN0LgorICAgICAgICBFdmVyeSBtZXNzYWdlIG11c3QgYmUgc2VudCBhdG9taWNhbGx5IQorCisgICAgICAgIFRoZSBoZWFkIG9mIHRoZSBtZXNzYWdlcyBpcyBhbHdheXMgdGhlIHNhbWU6CisKKyAgICAgICAgICBzdHJ1Y3QgZXJxX21zZ2hlYWQgeworICAgICAgICAgICAgaW50MzIgIG1zZ2xlbjsgIC8qIFRvdGFsIHNpemUgb2YgbWVzc2FnZSBpbiBieXRlcyAqLworICAgICAgICAgICAgaW50MzIgIGhhbmRsZTsgIC8qIElkZW50aWZpY2F0aW9uIG51bWJlciAqLworICAgICAgICAgIH0KKworICAgICAgICBUaGUgJ2hhbmRsZScgbnVtYmVyIGlzIHNldCBieSB0aGUgZHJpdmVyIChkbyBub3QgbWFrZQorICAgICAgICBhc3N1bXB0aW9ucyBhYm91dCBpdHMgdmFsdWUpIGFuZCBpcyB1c2VkIHRvIGFzc29jaWF0ZWQgdGhlIGVycQorICAgICAgICByZXNwb25zZXMgd2l0aCB0aGUgcGVuZGluZyByZXF1ZXN0cy4gVGhpcyB3YXkgdGhlIGVycSBpcyBmcmVlCisgICAgICAgIHRvIHJlc3BvbmQgaW4gYW4gb3JkZXIgZGlmZmVyZW50IHRvIHRob3NlIG9mIHRoZSBpbmNvbWluZworICAgICAgICByZXF1ZXN0cy4KKworICAgICAgICBUaGUgbWVzc2FnZXMgc2VuZCB0byB0aGUgZXJxIGZvbGxvdyB0aGlzIHN5bWJvbGljIGZvcm1hdDoKKworICAgICAgICAgIHN0cnVjdCB0b19lcnFfbXNnIHsKKyAgICAgICAgICAgIGludDMyICBtc2dsZW47CisgICAgICAgICAgICBpbnQzMiAgaGFuZGxlOworICAgICAgICAgICAgY2hhciAgIHJlcXVlc3Q7CisgICAgICAgICAgICBjaGFyICAgZGF0YVswXTsKKyAgICAgICAgICB9CisKKyAgICAgICAgVGhlICdyZXF1ZXN0JyBkZW5vdGVzIHdoaWNoIHNlcnZpY2UgaXMgcmVxdWVzdGVkIGZyb20gdGhlIGVycSwKKyAgICAgICAgdGhlIHNpemUgYW5kIGNvbnRlbnQgb2YgJ2RhdGEnIGRlcGVuZHMgb24gdGhlIHJlcXVlc3RlZAorICAgICAgICBzZXJ2aWNlLgorCisgICAgICAgIFRoZSBhbnN3ZXIgbWVzc2FnZSBmcm9tIHRoZSBlcnEgdG8gdGhlIGRyaXZlciAoaWYgdGhlcmUgaXMgb25lCisgICAgICAgIGF0IGFsbCkgbWF5IGhhdmUgdHdvIGZvcm1zOgorCisgICAgICAgICAgc3RydWN0IGZyb21fZXJxX21zZyB7CisgICAgICAgICAgICBpbnQzMiAgbXNnbGVuOworICAgICAgICAgICAgaW50MzIgIGhhbmRsZTsKKyAgICAgICAgICAgIGNoYXIgICBkYXRhWzBdOworICAgICAgICAgIH0KKworICAgICAgICAgIHN0cnVjdCBmcm9tX2VycV9rZWVwX21zZyB7CisgICAgICAgICAgICBpbnQzMiAgICAgICAgbXNnbGVuOworICAgICAgICAgICAgY29uc3QgaW50MzIgIGtlZXAgPSBFUlFfS0VFUF9IQU5ETEU7CisgICAgICAgICAgICBpbnQzMiAgICAgICAgaGFuZGxlOworICAgICAgICAgICAgY2hhciAgICAgICAgIGRhdGFbMF07CisgICAgICAgICAgfQorCisgICAgICAgIFRoZSByZXBsaWVkIGRhdGEgZnJvbSB0aGUgZXJxIGlzIHN0b3JlZCBpbiAnZGF0YScsIHdoaWNoIHNpemUKKyAgICAgICAgYW5kIGNvbnRlbnQgZGVwZW5kcyBvbiB0aGUgcmVxdWVzdCBhbnN3ZXJlZC4gVGhlIGFuc3dlciBpcworICAgICAgICBpZGVudGlmaWVkIGJ5ICdoZWFkZXIuaGFuZGxlJy4gTm9ybWFsbHksIG9uZSByZXF1ZXN0IHJlc3VsdHMKKyAgICAgICAgaW4ganVzdCBvbmUgcmVzcG9uc2Ugc2VudCBieSB0aGUgZXJxIHVzaW5nIHN0cnVjdCBmcm9tX2VycV9tc2csCisgICAgICAgIHNvIHRoZSBoYW5kbGUgaXMgcmVjeWNsZWQgYWZ0ZXIgdGhpcyByZXNwb25zZS4KKyAgICAgICAgU2hhbGwgdGhlIGVycSBzZW5kIHNldmVyYWwgcmVzcG9uc2VzIChvciBicmVhayBvbmUgcmVzcG9uc2UKKyAgICAgICAgaW50byBzZXZlcmFsIHBhcnRzKSwgdGhlIHN0cnVjdCBmcm9tX2VycV9rZWVwX21zZyBoYXMgdG8gYmUKKyAgICAgICAgdXNlZCBmb3IgYWxsIGJ1dCB0aGUgbGFzdCByZXNwb25zZSAtIHRoaXMgbWVzc2FnZSB3aXRoIGl0cworICAgICAgICBpbmNsdWRlZCBzcGVjaWFsIGhhbmRsZSBrZWVwcyB0aGUgcmVhbCBoYW5kbGUgYWxpdmUuCisKKworICAgICAgICBNdWRsaWIgZ2VuZXJhdGVkIGVycS1jYWxscyBzcGVjaWZ5IHRoZSAncmVxdWVzdCcgYW5kIHRoZQorICAgICAgICAnZGF0YScgdG8gYmUgc2VudCwgYW5kIHJlY2VpdmUgdGhlICdkYXRhJyByZXBsaWVkLiBXaGVuCisgICAgICAgIGRlYWxpbmcgd2l0aCBzcGF3bmVkIHByb2dyYW1zLCB0aGUgZmlyc3QgYnl0ZSBvZiB0aGUgcmV0dXJuZWQKKyAgICAgICAgJ2RhdGEnIGRldGVybWluZXMgdGhlIGNvbnRlbnQgdHlwZSBvZiB0aGUgcmVjZWl2ZWQgbWVzc2FnZS4KKyAgICAgICAgVGhlIGFjdHVhbCAnZGF0YScgd2hpY2ggdGhlIGxwYyBwcm9ncmFtcyBnZXQgdG8gc2VlIGlzIHNlbnQKKyAgICAgICAgYW5kIHJldHJpZXZlZCBhcyBhcnJheXMgb2YgYnl0ZSBpbnRlZ2VycyAoaW50ZWdlcnMgaW4gdGhlCisgICAgICAgIHJhbmdlIG9mIDAuLjI1NSkuCisKKworICAgICAgICBUaGUgYWN0dWFsIGludGVyZmFjZSBiZXR3ZWVuIGVycSBkZW1vbiBhbmQgZHJpdmVyIGlzIGxpbWl0ZWQKKyAgICAgICAgdG8gdGhlIGdlbmVyYWwgbWVzc2FnZSBmb3JtYXRzIGFuZCB0aGUgaG9zdG5hbWUgbG9va3VwCisgICAgICAgIG1lY2hhbmlzbS4gVGhlIGRyaXZlciBpcyBtZWFudCB0byB3aXRoc3RhbmQgZXJxIGRlbW9uIGZhaWx1cmVzCisgICAgICAgIGF0IGxlYXN0IGluIGEgZ2FyYmFnZS1pbiBnYXJiYWdlLW91dCBmYXNoaW9uLiBZb3UgY291bGQgYWRkCisgICAgICAgIG5ldyByZXF1ZXN0cyB0byB0aGUgZXJxIGRlbW9uLCBvciB3cml0ZSB5b3VyIG93biBmcm9tIHNjcmF0Y2gsCisgICAgICAgIHdpdGhvdXQgY2hhbmdpbmcgdGhlIGRyaXZlci4KKworCisgICAgICAgIEN1cnJlbnRseSBmaXZlIHNlcnZpY2VzIGFyZSBwcmVkZWZpbmVkIGluIHRoZSBzdXBwbGllZAorICAgICAgICBlcnEtZGVtb24gKHV0aWwvZXJxLmMgaW4gdGhlIGRyaXZlciBzb3VyY2UgYXJjaGl2ZSk6IGxvb2tpbmcKKyAgICAgICAgdXAgYSBob3N0bmFtZSwgZXhlY3V0aW9uLCBmb3JraW5nIG9yIHNwYXduaW5nIGFuIGV4dGVybmFsCisgICAgICAgIHByb2dyYW0sIGF1dGhlbnRpZmljYXRpb24gb2YgYSBjb25uZWN0aW9uLCBhbmQgaGFuZGxpbmcgb2YKKyAgICAgICAgZXh0ZXJuYWwgVURQL1RDUCBjb25uZWN0aW9ucy4gQXMgbWVudGlvbmVkIGFib3ZlLCBvbmx5IHRoZQorICAgICAgICBob3N0bmFtZS1sb29rdXAgaXMgYSB0cnVlIG11c3QuCisKKyAgICAgICAgRm9yIGEgcHJvZ3JhbSB0byBiZSBleGVjdXRhYmxlIGZvciBlcnEsIGl0IG11c3QgYmUgcGxhY2VkIGluCisgICAgICAgIG9yIGJlbG93IEVSUV9ESVIgKGRlZmluZWQgaW4gY29uZmlnLmgpLiBPbiBtb3N0IHVuaXggc3lzdGVtcywKKyAgICAgICAgaXQgaXMgcG9zc2libGUgdG8gdXNlIGEgc3ltbGluayBpbnN0ZWFkIG9mIHRoZSB3aG9sZSBwcm9ncmFtCisgICAgICAgIGlmIHlvdSB3YW50IGEgc3RhbmRhcmQgYmluYXJ5LiBZb3UgY291bGQgZXZlbiBzeW1saW5rIGVudGlyZQorICAgICAgICBkaXJlY3RvcmllcyBsaWtlIC91c3Ivc2JpbiwgYnV0IGNoYW5jZXMgYXJlIHlvdSBtYWtlIGEgYmlnCisgICAgICAgIHNlY3VyaXR5IGhvbGUgdGhpcyB3YXkgOi0pCisKKworICAgICAgICBIb3N0bmFtZSBsb29rdXA6CisKKyAgICAgICAgICByZXF1ZXN0ICA6IEVSUV9STE9PS1VQCisgICAgICAgICAgZGF0YSBzZW50OiBzdHJ1Y3QgaW5fYWRkci5zX2FkZHIgYWRkciAvLyB0aGUgYWRkcmVzcyB0byByZXNvbHZlCisgICAgICAgICAgZGF0YSByZWN2OiBzdHJ1Y3QgaW5fYWRkci5zX2FkZHIgYWRkciAvLyB0aGUgcmVzb2x2ZWQgYWRkcmVzcworICAgICAgICAgICAgICAgICAgICAgY2hhcltdICAgICAgICAgICAgICAgIG5hbWUgLy8gdGhlIGhvc3RuYW1lIChpZiBhbnkpCisKKyAgICAgICAgICBJZiB0aGUgc2VudCBhZGRyZXNzIGNhbid0IGJlIHJlc29sdmVkLCBqdXN0IHRoZSBhZGRyZXNzIGlzCisgICAgICAgICAgdG8gYmUgcmV0dXJuZWQuIFRoZSBzdHJpbmcgbmVlZCBub3QgYmUgMC10ZXJtaW5hdGVkLgorCisKKyAgICAgICAgSG9zdG5hbWUgbG9va3VwOgorCisgICAgICAgICAgcmVxdWVzdCAgOiBFUlFfTE9PS1VQCisgICAgICAgICAgZGF0YSBzZW50OiBjaGFyW10gICAgICAgICAgICAgICAgbmFtZSAvLyB0aGUgbmFtZSB0byByZXNvbHZlCisgICAgICAgICAgZGF0YSByZWN2OiBzdHJ1Y3QgaW5fYWRkci5zX2FkZHIgYWRkciAvLyB0aGUgcmVzb2x2ZWQgYWRkcmVzcworCisgICAgICAgICAgSWYgdGhlIHNlbnQgYWRkcmVzcyBjYW4ndCBiZSByZXNvbHZlZCwgbm8gZGF0YSBpcyByZXR1cm5lZCAodGhlCisgICAgICAgICAgZHJpdmVyIHdpbGwgZ2V0IGEgbWVzc2FnZSB3aXRoIGp1c3QgdGhlIGhlYWRlcikuCisKKworICAgICAgICBIb3N0bmFtZSBsb29rdXAgLSBJUHY2OgorCisgICAgICAgICAgcmVxdWVzdCAgOiBFUlFfUkxPT0tVUFY2CisgICAgICAgICAgZGF0YSBzZW50OiBjaGFyW10gYWRkciAgLy8gdGhlIGFkZHJlc3MgdG8gcmVzb2x2ZQorICAgICAgICAgIGRhdGEgcmVjdjogY2hhcltdIGRhdGEgIC8vIHRoZSByZXNvbHZlZCBuYW1lCisKKyAgICAgICAgICBJZiB0aGUgYWRkcmVzcyBjb3VsZCBiZSByZXNvbHZlZCwgdGhlIHJldHVybmVkIGRhdGEgaXMgYSBzdHJpbmcsCisgICAgICAgICAgd2l0aCBleGFjdGx5IG9uZSBzcGFjZSwgaW4gdGhlIGZvcm0gIjxhZGRyPiA8bmFtZT4iLiA8YWRkcj4gaXMKKyAgICAgICAgICB0aGUgYWRkcmVzcyBwYXNzZWQgdG8gdGhlIGVycSwgPG5hbWU+IGlzIHRoZSBob3N0bmFtZSBvZiB0aGUKKyAgICAgICAgICBhZGRyZXNzIG9yLCBpZiB0aGVyZSBpcyBubyByZXZlcnNlLUlQdjYgZW50cnkgZm9yIDxhZGRyPiwgdGhlCisgICAgICAgICAgSVB2NiBhZGRyZXNzIHdoaWNoIG1heSBvciBtYXkgbm90IGJlIGRpZmZlcmVudCBmcm9tIDxhZGRyPi4KKworICAgICAgICAgIElmIHRoZSBhZGRyZXNzIGNhbiBub3QgYmUgcmVzb2x2ZWQsIHRoZSByZXR1cm5lZCBkYXRhIGlzCisgICAgICAgICAgYW4gZXJyb3IgbWVzc2FnZSB3aXRob3V0IGEgc3BhY2UgKGN1cnJlbnRseSwganVzdCAiaW52YWxpZC1mb3JtYXQiCisgICAgICAgICAgYW5kICJvdXQtb2YtbWVtb3J5IiBhcmUgcmV0dXJuZWQpLgorCisKKyAgICAgICAgRXhlY3V0ZS9Gb3JrIHByb2dyYW06CisKKyAgICAgICAgICByZXF1ZXN0ICA6IEVSUV9FWEVDVVRFL0VSUV9GT1JLCisgICAgICAgICAgZGF0YSBzZW50OiBjaGFyW10gY29tbWFuZCAgLy8gdGhlIGNvbW1hbmQgdG8gZXhlY3V0ZQorICAgICAgICAgIGRhdGEgcmVjdjogY2hhciAgIHN0YXR1cyA9IENISUxEX0ZSRUUKKyAgICAgICAgICAgICAgICAgICAgIGNoYXIgICByYyAgICAgICAvLyB0aGUgc3VjY2Vzcy9lcnJvciBjb2RlCisgICAgICAgICAgICAgICAgICAgICBjaGFyICAgaW5mbyAgICAgLy8gYWRkaXRpb25hbCBpbmZvcm1hdGlvbgorCisgICAgICAgICAgVGhlIGVycSBleGVjdXRlcyB0aGUgc2VudCBjb21tYW5kIHVzaW5nIHRoZSBleGVjdigpLgorICAgICAgICAgIFRoZSBlcnEgZG9lcyB0aGUgcHJvY2Vzc2luZyBvZiB0aGUgY29tbWFuZCBsaW5lIGFyZ3VtZW50cworICAgICAgICAgICh3aGljaCBtdXN0IG5vdCBjb250YWluICdcJykgYW5kIGNoZWNrcyB0aGUgdmFsaWRpdHkgb2YgdGhlCisgICAgICAgICAgY29tbWFuZCAoaXQgbXVzdCBub3Qgc3RhcnQgd2l0aCAnLycgbm9yIGNvbnRhaW4gJy4uJyksIHdoaWNoCisgICAgICAgICAgaXMgaW50ZXJwcmV0ZWQgcmVsYXRpdmUgdG8gRVJRX0RJUi4KKyAgICAgICAgICBUaGUgZXh0ZXJuYWwgcHJvZ3JhbSBpcyBleGVjdXRlZCBmcm9tIGEgZm9yaygpZWQgaW5zdGFuY2Ugb2YKKyAgICAgICAgICB0aGUgZXJxLCBob3dldmVyLCB3aXRoIEVSUV9FWEVDVVRFIHRoZSBlcnEgd2FpdHMgdW50aWwgdGhlCisgICAgICAgICAgZXh0ZXJuYWwgcHJvZ3JhbSBmaW5pc2hlZCBiZWZvcmUgcmVwbHlpbmcgaXRzIHJlc3BvbnNlLCB3aXRoCisgICAgICAgICAgRVJRX0ZPUksgdGhlIHJlc3BvbnNlIGlzIGltbWVkaWF0ZWx5IHNlbnQgYmFjay4KKworICAgICAgICAgIFBvc3NpYmxlIHJldHVybiBjb2RlcyBhcmU6CisgICAgICAgICAgICBFUlFfT0sgICAgICAgICA6IE9wZXJhdGlvbiBzdWNjZWVkZWQuCisgICAgICAgICAgICBFUlFfRV9BUkdMRU5HVEg6IFRvbyBsb25nIGNvbW1hbmQuCisgICAgICAgICAgICBFUlFfRV9BUkdGT1JNQVQ6IElsbGVnYWwgYXJndW1lbnQgZ2l2ZW4gKGNvbnRhaW5zICdcJyk7CisgICAgICAgICAgICBFUlFfRV9BUkdOVU1CRVI6IFRvbyBtdWNoIGFyZ3VtZW50cyAoPj0gOTYpLgorICAgICAgICAgICAgRVJRX0VfSUxMRUdBTCAgOiBDb21tYW5kIGZyb20gb3V0c2lkZSBFUlFfRElSIHJlcXVlc3RlZC4KKyAgICAgICAgICAgIEVSUV9FX1BBVEhMRU4gIDogQ29tbWFuZHBhdGggdG9vIGxvbmcuCisgICAgICAgICAgICBFUlFfRV9GT1JLRkFJTCA6IENvbW1hbmQgY291bGQgbm90IGJlIGZvcmtlZDsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5mbyBob2xkcyB0aGUgZXJybm8gdmFsdWUuCisKKyAgICAgICAgICBFUlFfRVhFQ1VURSBmZWF0dXJlcyBzb21lIG1vcmUgcmV0dXJuIGNvZGVzOgorICAgICAgICAgICAgRVJRX09LICAgICAgICAgOiBPcGVyYXRpb24gc3VjY2VlZGVkLCA8aW5mbz4gaG9sZHMgdGhlIGV4aXQgc3RhdHVzLgorICAgICAgICAgICAgRVJRX1NJR05BTEVEICAgOiBDb21tYW5kIHRlcm1pbmF0ZWQgdGhlIHNpZ25hbCA8aW5mbz4uCisgICAgICAgICAgICBFUlFfRV9OT1RGT1VORCA6IE5vIHByb2Nlc3MgZm91bmQgdG8gd2FpdCgpIGZvci4KKyAgICAgICAgICAgIEVSUV9FX1VOS05PV04gIDogVW5rbm93biBleGl0IGNvbmRpdGlvbiBmcm9tIHdhaXQoKS4KKworCisgICAgICAgIFNwYXduIHByb2dyYW06CisKKyAgICAgICAgICByZXF1ZXN0ICA6IEVSUV9TUEFXTgorICAgICAgICAgIGRhdGEgc2VudDogY2hhcltdIGNvbW1hbmQgIC8vIHRoZSBjb21tYW5kIHRvIGV4ZWN1dGUKKyAgICAgICAgICBkYXRhIHJlY3Y6IFNwYXduIGZhaWxlZDoKKyAgICAgICAgICAgICAgICAgICAgIGNoYXIgICByYyAgICAgICAvLyB0aGUgZXJyb3IgY29kZSAoc2VlIEVSUV9GT1JLKQorICAgICAgICAgICAgICAgICAgICAgY2hhciAgIGluZm8gICAgIC8vIGFkZGl0aW9uYWwgaW5mb3JtYXRpb24KKyAgICAgICAgICBkYXRhIHJlY3Y6IFNwYXduIHN1Y2NlZWRlZDoKKyAgICAgICAgICAgICAgICAgICAgIGNoYXIgICByYyA9IEVSUV9PSworICAgICAgICAgICAgICAgICAgICAgY2hhcltdIHRpY2tldCAgICAgICAgLy8gdGhlIHNwYXduIHRpY2tldC4KKworICAgICAgICAgIFRoZSBlcnEgZXhlY3V0ZXMgdGhlIHNlbnQgY29tbWFuZCBhcyBpZiBnaXZlbiBhbiBFUlFfRk9SSworICAgICAgICAgIGNvbW1hbmQsIGJ1dCByZXR1cm5zIGFkZGl0aW9uYWwgaW5mb3JtYXRpb24gYWJvdXQgdGhlCisgICAgICAgICAgc3RhcnRlZCBwcm9jZXNzIHRvIGFsbG93IGZ1cnRoZXIgY29tbXVuaWNhdGlvbi4KKyAgICAgICAgICBJbiBjb250cmFzdCB0byBFUlFfRk9SSywgRVJRX1NQQVdORUQgcHJvY2Vzc2VzIG1heSBiZQorICAgICAgICAgIGNvbnRyb2xsZWQgdmlhIEVSUV9LSUxMLCByZWNlaXZlIGRhdGEgZnJvbSB0aGUgbXVkIHZpYQorICAgICAgICAgIEVSUV9TRU5EIG9uIHRoZWlyIHN0ZGluLCBhbmQgb3V0cHV0IGZyb20gdGhlaXIgc3Rkb3V0L3N0ZGVycgorICAgICAgICAgIGlzIHNlbnQgYmFjayB0byB0aGUgbXVkLgorICAgICAgICAgIFRoZSBzcGF3bmVkIHByb2Nlc3MgaXMgaWRlbnRpZmllZCBieSBpdHMgPHRpY2tldD4gKGRvbid0CisgICAgICAgICAgbWFrZSBhbnkgYXNzdW1wdGlvbnMgYWJvdXQgaXRzIGxlbmd0aCBvciBjb250ZW50KSwgdGhlIHRyYW5zYWN0aW9uCisgICAgICAgICAgaXRzZWxmIGJ5IDxoYW5kbGU+LgorCisKKyAgICAgICAgU2VuZCBkYXRhIHRvIHNwYXduZWQgcHJvZ3JhbToKKworICAgICAgICAgIHJlcXVlc3QgIDogRVJRX1NFTkQKKyAgICAgICAgICBkYXRhIHNlbnQ6IGNoYXJbXSAgdGlja2V0IC8vIHRoZSBhZGRyZXNzZWQgcHJvY2VzcyB0aWNrZXQuCisgICAgICAgICAgICAgICAgICAgICBjaGFyW10gIHRleHQgICAvLyB0aGUgdGV4dCB0byBzZW5kLgorICAgICAgICAgIGRhdGEgcmVjdjogY2hhciAgICByYyAgICAgLy8gdGhlIHN1Y2Nlc3MvZXJyb3IgY29kZS4KKyAgICAgICAgICAgICAgICAgICAgIGludDMyICAgaW5mbyAgIC8vIG9wdDogYWRkaXRpb25hbCBpbmZvLgorCisgICAgICAgICAgVGhlIDx0ZXh0PiBpcyBzZW50IHRvIHRoZSBzdGRpbiBvZiB0aGUgc3Bhd25lZCBwcm9jZXNzCisgICAgICAgICAgaWRlbnRpZmllZCBieSA8dGlja2V0Pi4KKworICAgICAgICAgIFBvc3NpYmxlIHJldHVybiBjb2RlcyBhcmU6CisgICAgICAgICAgICBFUlFfT0sgICAgICAgICAgOiBPcGVyYXRpb24gc3VjY2VlZGVkLCBubyA8aW5mbz4gaXMgcmVwbGllZC4KKyAgICAgICAgICAgIEVSUV9FX1RJQ0tFVCAgICA6IFRoZSBnaXZlbiB0aWNrZXQgaXMgaW52YWxpZCwgbm8gPGluZm8+IHJlcGxpZWQuCisgICAgICAgICAgICBFUlFfRV9JTkNPTVBMRVRFOiBPbmx5IDxpbmZvPiBjaGFycyBvZiB0aGUgdGV4dCBoYXZlIGJlZW4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbnQuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBJZiBhIGNhbGxiYWNrIGlzIHNwZWNpZmllZCwgdGhlIGVycSB3aWxsIHNlbmQKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGEgRVJRX09LIG1lc3NhZ2Ugb25jZSBhbGwgZGF0YSBoYXMgYmVlbiBzZW50CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAodGhpcyBtYXkgbmV2ZXIgaGFwcGVuKS4KKyAgICAgICAgICAgIEVSUV9FX1dPVUxEQkxPQ0s6IEVycm9yIEVfV09VTERCTE9DSyAoYWxzbyBzdG9yZWQgaW4gPGluZm8+KQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaGFwcGVuZWQgd2hpbGUgc2VuZGluZyB0aGUgdGV4dC4KKyAgICAgICAgICAgIEVSUV9FX1BJUEUgICAgICA6IEVycm9yIEVfUElQRSAoYWxzbyBzdG9yZWQgaW4gPGluZm8+KQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaGFwcGVuZWQgd2hpbGUgc2VuZGluZyB0aGUgdGV4dC4KKyAgICAgICAgICAgIEVSUV9FX1VOS05PV04gICA6IFRoZSBlcnJvciB3aXRoIGNvZGUgPGluZm8+IGhhcHBlbmVkCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aGlsZSBzZW5kaW5nIHRoZSBkYXRhLgorCisgICAgICAgICBBbXlsYWFyLWVycSBkb2Vzbid0IHRyeSB0byByZS1zZW5kIHRoZSByZW1haW5pbmcgZGF0YSBhZnRlcgorICAgICAgICAgYSBFUlFfRV9JTkNPTVBMRVRFLCBzbyB0aGVyZSB3aWxsIG5ldmVyIGJlIGFuIEVSUV9PSy4KKworCisgICAgICAgIFNlbmQgYSBzaWduYWwgdG8gYSBzcGF3bmVkIHByb2dyYW06CisKKyAgICAgICAgICByZXF1ZXN0ICA6IEVSUV9LSUxMCisgICAgICAgICAgZGF0YSBzZW50OiBjaGFyW10gIHRpY2tldCAvLyB0aGUgYWRkcmVzc2VkIHByb2Nlc3MgdGlja2V0CisgICAgICAgICAgICAgICAgICAgICBpbnQzMiAgIHNpZ25hbCAvLyB0aGUgc2lnbmFsIHRvIHNlbmQKKyAgICAgICAgICBkYXRhIHJlY3Y6IGNoYXIgICAgcmMgICAgIC8vIHRoZSBzdWNjZXNzL2Vycm9yIGNvZGUKKworICAgICAgICAgIFRoZSA8c2lnbmFsPiBpcyBzZW50IHRvIHRoZSBzcGF3bmVkIHByb2Nlc3MgaWRlbnRpZmllZCBieSA8dGlja2V0Pi4KKworICAgICAgICAgIFBvc3NpYmxlIHJldHVybiBjb2RlcyBhcmU6CisgICAgICAgICAgICBFUlFfT0sgICAgICAgICAgOiBPcGVyYXRpb24gc3VjY2VlZGVkLCBubyA8aW5mbz4gaXMgcmVwbGllZC4KKyAgICAgICAgICAgIEVSUV9FX1RJQ0tFVCAgICA6IFRoZSBnaXZlbiB0aWNrZXQgaXMgaW52YWxpZCwgbm8gPGluZm8+IHJlcGxpZWQuCisgICAgICAgICAgICBFUlFfRV9JTExFR0FMICAgOiBUaGUgZ2l2ZW4gc2lnbmFsIGlzIGlsbGVnYWwuCisKKworICAgICAgICBEYXRhIHJlcGxpZXMgZnJvbSBzcGF3bmVkIHByb2dyYW1zOgorCisgICAgICAgICAgZGF0YSByZWN2OiBjaGFyICAgb3V0X29yX2VyciAgLy8gdHlwZSBvZiB0ZXh0IG91dHB1dAorICAgICAgICAgICAgICAgICAgICAgY2hhcltdIHRleHQgICAgICAgIC8vIHRleHQgb3V0cHV0IGJ5IGNoaWxkIHByb2Nlc3MKKworICAgICAgICAgIFRoZSBjaGlsZCBwcm9jZXNzIGNvbnRyb2xsZWQgYnkgdGhlIGVycSBkaWQgb3V0cHV0IDx0ZXh0PgorICAgICAgICAgIG9uIHN0ZG91dCAoPG91dF9vcl9lcnI+ID09IEVSUV9TVERPVVQpIHJlc3AuIG9uIHN0ZGVycgorICAgICAgICAgICg8b3V0X29yX2Vycj4gPT0gRVJRX1NUREVSUikuCisKKworICAgICAgICBFeGl0IG5vdGlmaWNhdGlvbnMgZnJvbSBzcGF3bmVkIHByb2dyYW1zOgorCisgICAgICAgICAgZGF0YSByZWN2OiBjaGFyICAgcmMgICAgICAgICAgLy8gdGhlIGV4aXQgY29kZQorICAgICAgICAgICAgICAgICAgICAgY2hhciAgIGluZm8gICAgICAgIC8vIGFkZGl0aW9uYWwgaW5mb3JtYXRpb24uCisKKyAgICAgICAgICBUaGUgY2hpbGQgcHJvY2VzcyBjb250cm9sbGVkIGJ5IHRoZSBlcnEgZGlkIHRlcm1pbmF0ZS4KKyAgICAgICAgICBQb3NzaWJsZSBleGl0IGNvZGVzIGFyZToKKyAgICAgICAgICAgIEVSUV9FWElURUQgICAgOiBQcm9jZXNzIGV4aXRlZCB3aXRoIHN0YXR1cyA8aW5mbz4uCisgICAgICAgICAgICBFUlFfU0lHTkFMRUQgIDogUHJvY2VzcyB0ZXJtaW5hdGVkIGJ5IHNpZ25hbCA8aW5mbz4uCisgICAgICAgICAgICBFUlFfRV9VTktOT1dOIDogUHJvY2VzcyB0ZXJtaW5hdGVkIGZvciB1bmtub3duIHJlYXNvbi4KKworCisgICAgICAgIEF1dGhlbnRpZmljYXRlIGNvbm5lY3Rpb24gKHNlZSByZmMgOTMxKToKKworICAgICAgICAgIHJlcXVlc3QgIDogRVJRX0FVVEgKKyAgICAgICAgICBkYXRhIHNlbnQ6IHN0cnVjdCBzb2NrYWRkcl9pbiByZW1vdGUgLy8gdGhlIGFkZHJlc3MgdG8gY2hlY2sKKyAgICAgICAgICAgICAgICAgICAgIGludDMyICAgICAgICAgICAgICBwb3J0ICAgLy8gdGhlIG11ZCBwb3J0CisgICAgICAgICAgICAgb3IKKyAgICAgICAgICBkYXRhIHNlbnQ6IGludDMyICByZW1vdGVfaXAgICAgLy8gcmVtb3RlIGlwIHRvIGNoZWNrCisgICAgICAgICAgICAgICAgICAgICBpbnQxNiAgcmVtb3RlX3BvcnQgIC8vIHJlbW90ZSBwb3J0IHRvIGNoZWNrCisgICAgICAgICAgICAgICAgICAgICBpbnQxNiAgbG9jYWxfcG9ydCAgIC8vIHRoZSBtdWQgcG9ydAorCisgICAgICAgICAgZGF0YSByZWN2OiBjaGFyW10gICAgICAgICAgICAgcmVwbHkgIC8vIHRoZSBkYXRhIHJlY2VpdmVkIGJ5IGF1dGhkCisKKyAgICAgICAgICBUaGUgZXJxIGF0dGVtcHRzIHRvIGNvbm5lY3QgdGhlIGF1dGhkIG9uIHRoZSByZW1vdGUgc3lzdGVtCisgICAgICAgICAgYW5kIHRvIHZlcmlmeSB0aGUgY29ubmVjdGlvbiBiZXR3ZWVuIHRoZSByZW1vdGUgcG9ydCBhbmQgdGhlCisgICAgICAgICAgbXVkIHBvcnQuIFRoZSBsYXR0ZXIgd2lsbCBub3JtYWxseSBiZSB0aGUgcG9ydCBudW1iZXIgb2YgdGhlCisgICAgICAgICAgc29ja2V0IG9uIGJlc2lkZXMgb2YgdGhlIGdhbWVkcml2ZXIsIHJldHJpZXZlYWJsZSBieQorICAgICAgICAgIHF1ZXJ5X2lwX251bWJlcigpLgorCisgICAgICAgICAgVGhlIGFuc3dlciBmcm9tIHRoZSBhdXRoZCAob25lIGxpbmUgb2YgdGV4dCkgaWYgdGhlcmUgaXMgYW55CisgICAgICAgICAgaXMgcmV0dXJuZWQgYXMgcmVzdWx0LgorCisgICAgICAgICAgVGhlIHNlY29uZCBmb3JtIG9mIHRoZSBFUlFfQVVUSCBjb21tYW5kIGlzIHJlY29nbml6ZWQgYnkKKyAgICAgICAgICB0aGUgeGVycSBhcyBhbHRlcm5hdGl2ZS4KKworCisgICAgICAgIE9wZW4gYW4gVVBEIHBvcnQ6CisKKyAgICAgICAgICByZXF1ZXN0ICA6IEVSUV9PUEVOX1VEUAorICAgICAgICAgIGRhdGEgc2VudDogY2hhclsyXSBwb3J0ICAgLy8gdGhlIHBvcnQgbnVtYmVyIHRvIG9wZW4gKG5ldHdvcmsgb3JkZXIpCisgICAgICAgICAgZGF0YSByZWN2OiBPcGVuIGZhaWxlZDoKKyAgICAgICAgICAgICAgICAgICAgIGNoYXIgICAgcmMgICAgIC8vIHRoZSBzdWNjZXNzL2Vycm9yIGNvZGUuCisgICAgICAgICAgICAgICAgICAgICBjaGFyICAgIGluZm8gICAvLyBvcHQ6IGFkZGl0aW9uYWwgaW5mby4KKyAgICAgICAgICBkYXRhIHJlY3Y6IE9wZW4gc3VjY2VlZGVkOgorICAgICAgICAgICAgICAgICAgICAgY2hhciAgIHJjID0gRVJRX09LCisgICAgICAgICAgICAgICAgICAgICBjaGFyW10gdGlja2V0ICAvLyB0aGUgY29ubmVjdGlvbiB0aWNrZXQuCisKKyAgICAgICAgICBUaGUgZXJxIG9wZW5zIGFuIFVEUC1wb3J0IG9uIHRoZSBob3N0IG1hY2hpbmUgd2l0aCB0aGUgZ2l2ZW4KKyAgICAgICAgICBwb3J0IG51bWJlci4KKyAgICAgICAgICBQb3NzaWJsZSBleGl0IGNvZGVzIGFyZToKKyAgICAgICAgICAgIEVSUV9PSyAgICAgICAgICA6IE9wZXJhdGlvbiBzdWNjZWVkZWQuCisgICAgICAgICAgICBFUlFfRV9BUkdMRU5HVEggOiBUaGUgcG9ydCBudW1iZXIgZ2l2ZW4gZG9lcyBub3QgY29uc2lzdAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb2YgdHdvIGJ5dGVzLgorICAgICAgICAgICAgRVJRX0VfTlNMT1RTICAgIDogVGhlIG1heCBudW1iZXIgb2YgY2hpbGQgcHJvY2Vzc2VzIChnaXZlbgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW4gPGluZm8+KSBpcyBleGhhdXN0ZWQuCisgICAgICAgICAgICBFUlFfRV9VTktOT1dOICAgOiBFcnJvciA8aW5mbz4gb2NjdXJlZCBpbiBvbmUgb2YgdGhlIHN5c3RlbQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FsbHMgZG9uZSB0byBvcGVuIHRoZSBwb3J0LgorCisgICAgICAgICAgT25jZSB0aGUgcG9ydCBpcyBvcGVuLCBpdCBpcyB0cmVhdGVkIGFzIGlmIGlzIGp1c3QgYW5vdGhlcgorICAgICAgICAgIHNwYXduZWQgcHJvZ3JhbS4KKworCisgICAgICAgIFNlbmQgZGF0YSBvdmVyIGFuIFVEUCBwb3J0OgorCisgICAgICAgICAgcmVxdWVzdCAgOiBFUlFfU0VORAorICAgICAgICAgIGRhdGEgc2VudDogY2hhcltdICAgICAgICAgICAgICAgIHRpY2tldCAvLyB0aGUgYWRkcmVzc2VkIHBvcnQncyB0aWNrZXQuCisgICAgICAgICAgICAgICAgICAgICBzdHJ1Y3QgaW5fYWRkci5zX2FkZHIgYWRkciAgIC8vIGFkZHJlc3Mgb2YgcmVjZWl2ZXIuCisgICAgICAgICAgICAgICAgICAgICBzdHJ1Y3QgYWRkci5zaW5fcG9ydCAgcG9ydCAgIC8vIHBvcnQgb2YgcmVjZWl2ZXIuCisgICAgICAgICAgICAgICAgICAgICBjaGFyW10gICAgICAgICAgICAgICAgdGV4dCAgIC8vIHRoZSB0ZXh0IHRvIHNlbmQuCisgICAgICAgICAgZGF0YSByZWN2OiBjaGFyICAgcmMgICAgIC8vIHRoZSBzdWNjZXNzL2Vycm9yIGNvZGUuCisgICAgICAgICAgICAgICAgICAgICBpbnQzMiAgaW5mbyAgIC8vIG9wdDogYWRkaXRpb25hbCBpbmZvLgorCisgICAgICAgICAgVGhlIDx0ZXh0PiBpcyBzZW50IGZyb20gb3VyIHBvcnQgPHRpY2tldD4gdG8gdGhlIG5ldHdvcmsKKyAgICAgICAgICBhZGRyZXNzIDxhZGRyPiwgcG9ydCA8cG9ydD4uCisKKyAgICAgICAgICBQb3NzaWJsZSByZXR1cm4gY29kZXMgYXJlOgorICAgICAgICAgICAgRVJRX09LICAgICAgICAgIDogT3BlcmF0aW9uIHN1Y2NlZWRlZCwgbm8gPGluZm8+IGlzIHJlcGxpZWQuCisgICAgICAgICAgICBFUlFfRV9USUNLRVQgICAgOiBUaGUgZ2l2ZW4gdGlja2V0IGlzIGludmFsaWQsIG5vIDxpbmZvPiByZXBsaWVkLgorICAgICAgICAgICAgRVJRX0VfSU5DT01QTEVURTogT25seSA8aW5mbz4gY2hhcnMgb2YgdGhlIHRleHQgaGF2ZSBiZWVuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZW50LiBUaGUgZXJxIHdpbGwgc2VuZCBhIEVSUV9PSyBtZXNzYWdlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvbmNlIGFsbCBkYXRhIGhhcyBiZWVuIHNlbnQuCisgICAgICAgICAgICBFUlFfRV9XT1VMREJMT0NLOiBFcnJvciBFX1dPVUxEQkxPQ0sgKGFsc28gc3RvcmVkIGluIDxpbmZvPikKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhhcHBlbmVkIHdoaWxlIHNlbmRpbmcgdGhlIHRleHQuCisgICAgICAgICAgICBFUlFfRV9QSVBFICAgICAgOiBFcnJvciBFX1BJUEUgKGFsc28gc3RvcmVkIGluIDxpbmZvPikKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhhcHBlbmVkIHdoaWxlIHNlbmRpbmcgdGhlIHRleHQuCisgICAgICAgICAgICBFUlFfRV9VTktOT1dOICAgOiBUaGUgZXJyb3Igd2l0aCBjb2RlIDxpbmZvPiBoYXBwZW5lZAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2hpbGUgc2VuZGluZyB0aGUgZGF0YS4KKworCisgICAgICAgIENsb3NlIGFuIFVEUCBwb3J0OgorCisgICAgICAgICAgcmVxdWVzdCAgOiBFUlFfS0lMTAorICAgICAgICAgIGRhdGEgc2VudDogY2hhcltdICB0aWNrZXQgLy8gdGhlIGFkZHJlc3NlZCBwb3J0J3MgdGlja2V0CisgICAgICAgICAgICAgICAgICAgICBpbnQzMiAgIHNpZ25hbCAvLyB0aGUgc2lnbmFsIHRvIHNlbmQgKGlnbm9yZWQpCisgICAgICAgICAgZGF0YSByZWN2OiBjaGFyICAgIHJjID0gRVJRX09LCisKKyAgICAgICAgICBUaGUgcG9ydCA8dGlja2V0PiBpcyBjbG9zZWQuIFRoZSA8c2lnbmFsPiBtdXN0IGJlIHNlbnQsIGJ1dAorICAgICAgICAgIGl0cyB2YWx1ZSBpcyBpZ25vcmVkLgorCisKKyAgICAgICAgRGF0YSByZWNlaXZlZCBvdmVyIGFuIFVEUCBjb25uZWN0aW9uOgorCisgICAgICAgICAgZGF0YSByZWN2OiBjaGFyICAgICAgICAgICAgICAgICAgb3V0X29yX2VyciA9IEVSUV9TVERPVVQKKyAgICAgICAgICAgICAgICAgICAgIHN0cnVjdCBpbl9hZGRyLnNfYWRkciBhZGRyICAgIC8vIGlwLWFkZHJlc3Mgb2Ygc2VuZGVyCisgICAgICAgICAgICAgICAgICAgICBzdHJ1Y3QgYWRkci5zaW5fcG9ydCAgcG9ydCAgICAvLyBwb3J0IG9mIHNlbmRlcgorICAgICAgICAgICAgICAgICAgICAgY2hhcltdICAgICAgICAgICAgICAgIHRleHQgICAgLy8gZGF0YSByZWNlaXZlZAorCisgICAgICAgICAgVGhlIFVQRCBwb3J0IGNvbnRyb2xsZWQgYnkgdGhlIGVycSBkaWQgcmVjZWl2ZSA8dGV4dD4gb3ZlcgorICAgICAgICAgIHRoZSBuZXR3b3JrIGZyb20gdGhlIHNlbmRlciBhdCA8YWRkcj4sIHJlcGx5IHBvcnQgbnVtYmVyIDxwb3J0Pi4KKworCisgICAgICAgIE9wZW4gYW4gVENQIHRvIGxpc3RlbiBmb3IgY29ubmVjdGlvbnM6CisKKyAgICAgICAgICByZXF1ZXN0ICA6IEVSUV9MSVNURU4KKyAgICAgICAgICBkYXRhIHNlbnQ6IHN0cnVjdCBhZGRyLnNpbl9wb3J0IHBvcnQgICAvLyB0aGUgcG9ydCBudW1iZXIgdG8gb3BlbgorICAgICAgICAgIGRhdGEgcmVjdjogT3BlbiBmYWlsZWQ6CisgICAgICAgICAgICAgICAgICAgICBjaGFyICAgIHJjICAgICAvLyB0aGUgc3VjY2Vzcy9lcnJvciBjb2RlLgorICAgICAgICAgICAgICAgICAgICAgY2hhciAgICBpbmZvICAgLy8gb3B0OiBhZGRpdGlvbmFsIGluZm8uCisgICAgICAgICAgZGF0YSByZWN2OiBPcGVuIHN1Y2NlZWRlZDoKKyAgICAgICAgICAgICAgICAgICAgIGNoYXIgICByYyA9IEVSUV9PSworICAgICAgICAgICAgICAgICAgICAgY2hhcltdIHRpY2tldCAgLy8gdGhlIGNvbm5lY3Rpb24gdGlja2V0LgorCisgICAgICAgICAgVGhlIGVycSBvcGVucyBhbiBUQ1AtcG9ydCBvbiB0aGUgaG9zdCBtYWNoaW5lIHdpdGggdGhlIGdpdmVuCisgICAgICAgICAgcG9ydCBudW1iZXIgdG8gbGlzdGVuIGZvciBjb25uZWN0aW9ucy4KKyAgICAgICAgICBQb3NzaWJsZSBleGl0IGNvZGVzIGFyZToKKyAgICAgICAgICAgIEVSUV9PSyAgICAgICAgICA6IE9wZXJhdGlvbiBzdWNjZWVkZWQuCisgICAgICAgICAgICBFUlFfRV9BUkdMRU5HVEggOiBUaGUgcG9ydCBudW1iZXIgZ2l2ZW4gZG9lcyBub3QgY29uc2lzdAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb2YgdHdvIGJ5dGVzLgorICAgICAgICAgICAgRVJRX0VfTlNMT1RTICAgIDogVGhlIG1heCBudW1iZXIgb2YgY2hpbGQgcHJvY2Vzc2VzIChnaXZlbgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW4gPGluZm8+KSBpcyBleGhhdXN0ZWQuCisgICAgICAgICAgICBFUlFfRV9VTktOT1dOICAgOiBFcnJvciA8aW5mbz4gb2NjdXJlZCBpbiBvbmUgb2YgdGhlIHN5c3RlbQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FsbHMgZG9uZSB0byBvcGVuIHRoZSBwb3J0LgorCisgICAgICAgICAgT25jZSB0aGUgcG9ydCBpcyBvcGVuLCBpdCBpcyB0cmVhdGVkIGFzIGlmIGlzIGp1c3QgYW5vdGhlcgorICAgICAgICAgIHNwYXduZWQgcHJvZ3JhbS4KKworCisgICAgICAgIE9wZW4gYW4gVENQIHBvcnQ6CisKKyAgICAgICAgICByZXF1ZXN0ICA6IEVSUV9PUEVOX1RDUAorICAgICAgICAgIGRhdGEgc2VudDogc3RydWN0IGluX2FkZHIuc19hZGRyIGlwICAgLy8gdGhlIGlwIHRvIGFkZHJlc3MKKyAgICAgICAgICAgICAgICAgICAgIHN0cnVjdCBhZGRyLnNpbl9wb3J0ICBwb3J0IC8vIHRoZSBwb3J0IHRvIGFkZHJlc3MKKyAgICAgICAgICBkYXRhIHJlY3Y6IE9wZW4gZmFpbGVkOgorICAgICAgICAgICAgICAgICAgICAgY2hhciAgICByYyAgICAgLy8gdGhlIHN1Y2Nlc3MvZXJyb3IgY29kZS4KKyAgICAgICAgICAgICAgICAgICAgIGNoYXIgICAgaW5mbyAgIC8vIG9wdDogYWRkaXRpb25hbCBpbmZvLgorICAgICAgICAgIGRhdGEgcmVjdjogT3BlbiBzdWNjZWVkZWQ6CisgICAgICAgICAgICAgICAgICAgICBjaGFyICAgcmMgPSBFUlFfT0sKKyAgICAgICAgICAgICAgICAgICAgIGNoYXJbXSB0aWNrZXQgIC8vIHRoZSBjb25uZWN0aW9uIHRpY2tldC4KKworICAgICAgICAgIFRoZSBlcnEgb3BlbnMgYW4gVENQLXBvcnQgb24gdGhlIGhvc3QgbWFjaGluZSBhbmQgdHJpZXMgdG8gY29ubmVjdAorICAgICAgICAgIGl0IHRvIHRoZSBhZGRyZXNzIDxpcD46PHBvcnQ+LgorICAgICAgICAgIFBvc3NpYmxlIGV4aXQgY29kZXMgYXJlOgorICAgICAgICAgICAgRVJRX09LICAgICAgICAgIDogT3BlcmF0aW9uIHN1Y2NlZWRlZC4KKyAgICAgICAgICAgIEVSUV9FX0FSR0xFTkdUSCA6IFRoZSBwb3J0IG51bWJlciBnaXZlbiBkb2VzIG5vdCBjb25zaXN0CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvZiB0d28gYnl0ZXMuCisgICAgICAgICAgICBFUlFfRV9OU0xPVFMgICAgOiBUaGUgbWF4IG51bWJlciBvZiBjaGlsZCBwcm9jZXNzZXMgKGdpdmVuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbiA8aW5mbz4pIGlzIGV4aGF1c3RlZC4KKyAgICAgICAgICAgIEVSUV9FX1VOS05PV04gICA6IEVycm9yIDxpbmZvPiBvY2N1cmVkIGluIG9uZSBvZiB0aGUgc3lzdGVtCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYWxscyBkb25lIHRvIG9wZW4gdGhlIHBvcnQuCisKKyAgICAgICAgICBPbmNlIHRoZSBwb3J0IGlzIG9wZW4sIGl0IGlzIHRyZWF0ZWQgYXMgaWYgaXMganVzdCBhbm90aGVyCisgICAgICAgICAgc3Bhd25lZCBwcm9ncmFtLgorCisKKyAgICAgICAgU2VuZCBkYXRhIG92ZXIgYSBUQ1AgY29ubmVjdGlvbjoKKworICAgICAgICAgIHJlcXVlc3QgIDogRVJRX1NFTkQKKyAgICAgICAgICBkYXRhIHNlbnQ6IGNoYXJbXSAgdGlja2V0IC8vIHRoZSBhZGRyZXNzZWQgcHJvY2VzcyB0aWNrZXQuCisgICAgICAgICAgICAgICAgICAgICBjaGFyW10gIHRleHQgICAvLyB0aGUgdGV4dCB0byBzZW5kLgorICAgICAgICAgIGRhdGEgcmVjdjogY2hhciAgICByYyAgICAgLy8gdGhlIHN1Y2Nlc3MvZXJyb3IgY29kZS4KKyAgICAgICAgICAgICAgICAgICAgIGludDMyICAgaW5mbyAgIC8vIG9wdDogYWRkaXRpb25hbCBpbmZvLgorCisgICAgICAgICAgVGhlIDx0ZXh0PiBpcyBzZW50IHRvIHRoZSBzdGRpbiBvZiB0aGUgc3Bhd25lZCBwcm9jZXNzCisgICAgICAgICAgaWRlbnRpZmllZCBieSA8dGlja2V0Pi4KKworICAgICAgICAgIFBvc3NpYmxlIHJldHVybiBjb2RlcyBhcmU6CisgICAgICAgICAgICBFUlFfT0sgICAgICAgICAgOiBPcGVyYXRpb24gc3VjY2VlZGVkLCBubyA8aW5mbz4gaXMgcmVwbGllZC4KKyAgICAgICAgICAgIEVSUV9FX1RJQ0tFVCAgICA6IFRoZSBnaXZlbiB0aWNrZXQgaXMgaW52YWxpZCwgbm8gPGluZm8+IHJlcGxpZWQuCisgICAgICAgICAgICBFUlFfRV9JTkNPTVBMRVRFOiBPbmx5IDxpbmZvPiBjaGFycyBvZiB0aGUgdGV4dCBoYXZlIGJlZW4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbnQuIFRoZSBlcnEgd2lsbCBzZW5kIGEgRVJRX09LIG1lc3NhZ2UKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9uY2UgYWxsIGRhdGEgaGFzIGJlZW4gc2VudC4KKyAgICAgICAgICAgIEVSUV9FX1dPVUxEQkxPQ0s6IEVycm9yIEVfV09VTERCTE9DSyAoYWxzbyBzdG9yZWQgaW4gPGluZm8+KQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaGFwcGVuZWQgd2hpbGUgc2VuZGluZyB0aGUgdGV4dC4KKyAgICAgICAgICAgIEVSUV9FX1BJUEUgICAgICA6IEVycm9yIEVfUElQRSAoYWxzbyBzdG9yZWQgaW4gPGluZm8+KQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaGFwcGVuZWQgd2hpbGUgc2VuZGluZyB0aGUgdGV4dC4KKyAgICAgICAgICAgIEVSUV9FX1VOS05PV04gICA6IFRoZSBlcnJvciB3aXRoIGNvZGUgPGluZm8+IGhhcHBlbmVkCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aGlsZSBzZW5kaW5nIHRoZSBkYXRhLgorCisKKyAgICAgICAgRGF0YSByZWFkeSB0byByZWFkIG9uIFRDUCBjb25uZWN0aW9uOgorCisgICAgICAgICAgZGF0YSByZWN2OiBjaGFyICAgIG91dF9vcl9lcnIgPSBFUlFfT0sKKyAgICAgICAgICAgICAgICAgICAgIGNoYXJbXSAgdGlja2V0ICAvLyB0aWNrZXQgb2YgdGhpcyBjb25uZWN0aW9uCisKKyAgICAgICAgICBUaGVyZSBpcyBkYXRhIGF2YWlsYWJsZSB0byByZWFkIG9uIHRoZSBzcGVjaWZpZWQgVENQIGNvbm5lY3Rpb24uCisKKworICAgICAgICBEYXRhIHJlY2VpdmVkIG92ZXIgYSBUQ1AgY29ubmVjdGlvbjoKKworICAgICAgICAgIGRhdGEgcmVjdjogY2hhciAgICBvdXRfb3JfZXJyID0gRVJRX1NURE9VVAorICAgICAgICAgICAgICAgICAgICAgY2hhcltdICB0ZXh0ICAgIC8vIGRhdGEgcmVjZWl2ZWQKKworICAgICAgICAgIFRoZSBUQ1AgcG9ydCBjb250cm9sbGVkIGJ5IHRoZSBlcnEgZGlkIHJlY2VpdmUgPHRleHQ+LgorCisKKyAgICAgICAgVENQIGNvbm5lY3Rpb24gY2xvc2VzIG9uIGVycm9yOgorCisgICAgICAgICAgZGF0YSByZWN2OiBjaGFyICAgIG91dF9vcl9lcnIgPSBFUlFfRV9VTktOT1dOCisgICAgICAgICAgICAgICAgICAgICBjaGFyICAgIGVycm5vICAgLy8gZXJybm8gZnJvbSBzb2NrZXQgb3BlcmF0aW9uCisKKyAgICAgICAgICBUaGUgVENQIGNvbm5lY3Rpb24gY2F1c2VkIGFuIGVycm9yIDxlcnJubz4gYW5kIGhhcyBiZWVuIGNsb3NlZC4KKworCisgICAgICAgIFRDUCBjb25uZWN0aW9uIGNsb3NlZDoKKworICAgICAgICAgIGRhdGEgcmVjdjogY2hhciAgICBvdXRfb3JfZXJyID0gRVJRX0VYSVRFRAorCisgICAgICAgICAgVGhlIFRDUCBjb25uZWN0aW9uIGNsb3NlZCByZWd1bGFyaWx5IChFbmQgT2YgRmlsZSkuCisKKworICAgICAgICBDb25uZWN0aW9uIHBlbmRpbmcgb24gVENQIHNvY2tldDoKKworICAgICAgICAgIGRhdGEgcmVjdjogY2hhciAgICBvdXRfb3JfZXJyID0gRVJRX1NURE9VVAorCisgICAgICAgICAgVGhlIFRDUCAnbGlzdGVuJyBwb3J0IGNvbnRyb2xsZWQgYnkgdGhlIGVycSByZWNlaXZlZAorICAgICAgICAgIGEgY29ubmVjdGlvbiByZXF1ZXN0LgorCisKKyAgICAgICAgQWNjZXB0IGEgcGVuZGluZyBjb25uZWN0aW9uczoKKworICAgICAgICAgIHJlcXVlc3QgIDogRVJRX0FDQ0VQVAorICAgICAgICAgIGRhdGEgc2VudDogY2hhcltdICB0aWNrZXQgLy8gdGhlIHRpY2tldCBvZiB0aGlzIHNvY2tldAorICAgICAgICAgIGRhdGEgcmVjdjogQWNjZXB0IGZhaWxlZDoKKyAgICAgICAgICAgICAgICAgICAgIGNoYXIgICAgcmMgICAgIC8vIHRoZSBzdWNjZXNzL2Vycm9yIGNvZGUuCisgICAgICAgICAgICAgICAgICAgICBjaGFyICAgIGluZm8gICAvLyBvcHQ6IGFkZGl0aW9uYWwgaW5mby4KKyAgICAgICAgICBkYXRhIHJlY3Y6IEFjY2VwdCBzdWNjZWVkZWQ6CisgICAgICAgICAgICAgICAgICAgICBjaGFyICAgIHJjID0gRVJRX09LCisgICAgICAgICAgICAgICAgICAgICBzdHJ1Y3QgaW5fYWRkci5zX2FkZHIgaXAgICAgLy8gcmVtb3RlIHNpZGUncyBpcAorICAgICAgICAgICAgICAgICAgICAgc3RydWN0IGFkZHIuc2luX3BvcnQgIHBvcnQgIC8vIHJlbW90ZSBzaWRlJ3MgcG9ydAorICAgICAgICAgICAgICAgICAgICAgY2hhcltdICAgICAgICAgICAgICAgIHRpY2tldCAgLy8gdGhlIG5ldyB0aWNrZXQuCisKKyAgICAgICAgICBUaGUgZXJxIGFjY2VwdHMgYSBuZXcgY29ubmVjdGlvbiBvbiBhbiBhY2NlcHQtVENQLXBvcnQsIGNyZWF0ZXMKKyAgICAgICAgICBhbiBjaGlsZCBhbmQgdGlja2V0IGZvciBpdCBhbmQgcmV0dXJucyBpdHMgdGlja2V0IHRvZ2V0aGVyIHdpdGgKKyAgICAgICAgICB0aGUgcmVtb3RlJ3Mgc2lkZSA8aXA+Ojxwb3J0PiBudW1iZXIgKGluIG5ldHdvcmsgYnl0ZSBvcmRlcikuCisgICAgICAgICAgUG9zc2libGUgZXhpdCBjb2RlcyBhcmU6CisgICAgICAgICAgICBFUlFfT0sgICAgICAgICAgOiBPcGVyYXRpb24gc3VjY2VlZGVkLgorICAgICAgICAgICAgRVJRX0VfQVJHTEVOR1RIIDogVGhlIHBvcnQgbnVtYmVyIGdpdmVuIGRvZXMgbm90IGNvbnNpc3QKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9mIHR3byBieXRlcy4KKyAgICAgICAgICAgIEVSUV9FX05TTE9UUyAgICA6IFRoZSBtYXggbnVtYmVyIG9mIGNoaWxkIHByb2Nlc3NlcyAoZ2l2ZW4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluIDxpbmZvPikgaXMgZXhoYXVzdGVkLgorICAgICAgICAgICAgRVJRX0VfVElDS0VUICAgIDogdGhlIHRpY2tldCBkaWRuJ3QgbWF0Y2gKKyAgICAgICAgICAgIEVSUV9FX1VOS05PV04gICA6IEVycm9yIDxpbmZvPiBvY2N1cmVkIGluIG9uZSBvZiB0aGUgc3lzdGVtCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYWxscyBkb25lIHRvIG9wZW4gdGhlIHBvcnQuCisKKyAgICAgICAgICBPbmNlIHRoZSBwb3J0IGlzIG9wZW4sIGl0IGlzIHRyZWF0ZWQgYXMgaWYgaXMganVzdCBhbm90aGVyCisgICAgICAgICAgc3Bhd25lZCBwcm9ncmFtLgorCisKK0VYQU1QTEUKKyAgICAgICAgQXNzdW1lIHlvdSBoYXZlIGEgc2NyaXB0ICd3ZWxjb21lLW1haWwnIHRvIHNlbmQgYSB3ZWxjb21lIG1haWwKKyAgICAgICAgdG8gYSBuZXcgcGxheWVyLiBQdXQgdGhpcyBzY3JpcHQgaW50byB0aGUgZGlyZWN0b3J5IGZvciB0aGUgY2FsbGFibGUKKyAgICAgICAgZXhlY3V0YWJsZXMsIHRoZW4geW91IGNhbiB1c2UgaXQgbGlrZSB0aGlzOgorCisgICAgICAgIHZvaWQgZXJxX3Jlc3BvbnNlKG1peGVkICogZGF0YSkKKyAgICAgICAgeworICAgICAgICAgICAgd3JpdGVfZmlsZSggIldFTENPTUVMT0ciCisgICAgICAgICAgICAgICAgICAgICAgLCBzcHJpbnRmKCJyYyAlZCwgaW5mbyAlZFxuIiwgZGF0YVswXSwgZGF0YVsxXSkpOworICAgICAgICB9CisKKyAgICAgICAgdm9pZCBzZW5kX21haWwoc3RyaW5nIHBsYXllcl9uYW1lLCBzdHJpbmcgcGxheWVyX2VtYWlsKQorICAgICAgICB7CisgICAgICAgICAgICBzZW5kX2VycSggRVJRX0VYRUNVVEUKKyAgICAgICAgICAgICAgICAgICAgLCAid2VsY29tZS1tYWlsICciK3BsYXllcl9uYW1lKyInICciK3BsYXllcl9lbWFpbCsiJyIKKyAgICAgICAgICAgICAgICAgICAgLCAjJ2VycV9yZXNwb25zZSk7CisgICAgICAgIH0KKworCitISVNUT1JZCisgICAgICAgIFRoZSBlcnEgd2FzIGludHJvZHVjZWQgd2l0aCAzLjIuMUA2MS4KKyAgICAgICAgRVJRX0FVVEggd2FzIGludHJvZHVjZWQgd2l0aCAzLjIuMUA4MS4KKyAgICAgICAgRVJRX1NFTkQsIEVSUV9TUEFXTiwgRVJRX0tJTEwgd2VyZSBpbnRyb2R1Y2VkIHdpdGggMy4yLjFAODIuCisgICAgICAgIEVSUV9PUEVOX1VEUCwgRVJRX09QRU5fVENQLCBFUlFfTElTVCB3ZXJlIGludHJvZHVjZWQgd2l0aCAzLjIuMUA5OC4KKyAgICAgICAgRVJRX1JMT09LVVBWNiB3YXMgaW50cm9kdWNlZCBpbiAzLjIuOC4KKyAgICAgICAgTERNdWQgMy4yLjkgYWRkZWQgdGhlICctLWV4ZWNkaXInIGFyZ3VtZW50IHRvIGVycSwgYW5kIHRoZSBFUlFfT0sKKyAgICAgICAgICBhZnRlciBFUlFfRV9JTkNPTVBMRVRFIHByb3RvY29sLgorCitTRUUgQUxTTworICAgICAgICBhdHRhY2hfZXJxX2RlbW9uKEUpLCBzZW5kX2VycShFKSwgc3RhbGVfZXJxKE0pLCByZmMgOTMxCisgICAgICAgIHF1ZXJ5X2lwX251bWJlcihFKQpkaWZmIC0tZ2l0IGEvZG9jL2NvbmNlcHRzL2ZpbGVzIGIvZG9jL2NvbmNlcHRzL2ZpbGVzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjU2ZTZlNjQKLS0tIC9kZXYvbnVsbAorKysgYi9kb2MvY29uY2VwdHMvZmlsZXMKQEAgLTAsMCArMSwxNiBAQAorQ09OQ0VQVAorICAgICAgICBmaWxlcworCitERVNDUklQVElPTgorICAgICAgICBBcyBhIHdpemFyZCwgeW91IGFyZSB3b3JraW5nIHdpdGggZmlsZXMuIEVhY2ggZmlsZSByZXByZXNlbnRzCisgICAgICAgIHRoZSBidWxkaW5nIHBsYW4gZm9yIG9uZSBvciBtb3JlIG9iamVjdHMgKGV4Y2VwdCB0ZXh0IG9yIGRvYyBmaWxlcworICAgICAgICBvZiBjb3Vyc2UpLgorCisgICAgICAgIFRoZSBtdWRsaWIgaGFzIGEgcm9vdCwgYW5kIHdoZW4gd29ya2luZyB3aXRoIGZpbGVuYW1lcywgeW91CisgICAgICAgIGNhbiBhbHdheXMgc3BlY2lmeSBhIGZ1bGwgcGF0aG5hbWUgZnJvbSB0aGUgcm9vdCBieSBzdGFydGluZworICAgICAgICB3aXRoIGEgJy8nIChzbGFzaCkgYXQgdGhlIGJlZ2lubmluZyBvZiB0aGUgZmlsZSBuYW1lLgorCisgICAgICAgIChvb3BzLCB0cnVuY2F0ZWQgLSB3aHkgd2hlbiB3aGVyZSBkaWQgaXQgaGFwcGVuPykKKworU0VFIEFMU08KKyAgICAgICAgb2JqZWN0cyhDKSwgY3JlYXRlKEEpLCByZXNldChBKQpkaWZmIC0tZ2l0IGEvZG9jL2NvbmNlcHRzL2dvb2RzdHlsZSBiL2RvYy9jb25jZXB0cy9nb29kc3R5bGUKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMTVlYTA0YgotLS0gL2Rldi9udWxsCisrKyBiL2RvYy9jb25jZXB0cy9nb29kc3R5bGUKQEAgLTAsMCArMSw3NCBAQAorR3V0ZXIgU3RpbAorIEJFU0NIUkVJQlVORzoKKyAgICAgR3V0ZW4gU3RpbCBrYW5uIG1hbiBsZXJuZW4uIFp1bWluZGVzdCBpbiBkZXIgUHJvZ3JhbW1pZXJ1bmcuIEd1dGVyIFN0aWwKKyAgICAgYmVkZXV0ZXQgdm9yIGFsbGVtOiBTY2hyZWliIGVzIHNvLCBkYXMgYW5kZXJlIGVzIGxlc2VuIHVuZCB2ZXJzdGVoZW4KKyAgICAga29lbm5lbi4gKEFuc29uc3RlbiB3ZXJkZSAvc2VjdXJlLy1FcnptYWdpZXIsIGRpZSBtdWVzc2VuIGF1ZmdydW5kCisgICAgIGVpbmdlYmF1dGVyIFBhcmFub2lhIHNlbGJzdHZlcnNjaGx1ZXNzZWxuZCBzY2hyZWliZW4uKQorCisgICAgIExlcm5lbiBrYW5uIG1hbiBhdWNoIGFtIEJlaXNwaWVsLCB1bnRlciAvZC9nZWJpcmdlL3Jvb20vLAorICAgICAvZC9nZWJpcmdlL29iai8sIC9kL2dlYmlyZ2UvbW9uLywgL2RvYy9iZWlzcGllbGUvIGlzdCBzYXViZXJlciBDb2RlCisgICAgIHp1IGZpbmRlbi4KKworICAgICBUaXBwcyB6dW0gQXVzc2VoZW46CisgICAgIC0gUHJvZ3JhbW16ZWlsZW4gbmljaHQgbGFlbmdlciBhbHMgODAgWmVpY2hlbiBzY2hyZWliZW4sIGRlbm4gODAgWmVpY2hlbgorICAgICAgIGJyZWl0ZSBGZW5zdGVyIHNpbmQgaW1tZXIgbm9jaCBkaWUgUmVnZWwKKyAgICAgICAtIENvZGUga2FubiBhdWYgZGVyIG5hZWNoc3RlbiBaZWlsZSB3ZWl0ZXJmdWVocmVuOgorICAgICAgICAgZmlsdGVyKGFsbF9pbnZlbnRvcnkoZW52aXJvbm1lbnQoVFApKSwKKwkJICAgICAgIydlaW5ldG9sbGVzb3J0aWVyZnVua3Rpb24sICZleHRyYXZhcmlhYmxlbik7CisgICAgICAgLSBTdHJpbmdzIGtvZW5uZW4gKG9obmUgQWRkaXRpb24gbWl0ICspIHVudGVyYnJvY2hlbiB3ZXJkZW46CisgICAgICAgICAiSmVtYW5kICI8RU9MPiAgICAiamFtbWVydCIgPT0gIkplbWFuZCBqYW1tZXJ0IgorICAgICAgICAgIkplbWFuZCBcPEVPTD5qYW1tZXJ0IiAgICAgID09ICJKZW1hbmQgamFtbWVydCIKKworICAgICAtIEJsb2Vja2UgKG1pdCB7fSB1bXJhbmRldGVyIENvZGUpIGVpbnJ1ZWNrZW4sIGRhbWl0IG1hbiBkZW4KKyAgICAgICBnZXBsYW50ZW4gUHJvZ3JhbW1mbHVzcyBndXQgZXJrZW5uZW4ga2FubgorICAgICAgIC0gMiBiaXMgNCBaZWljaGVuLCBuaWNodCBnbGVpY2ggZWluIGdhbnplcyBUYWIgKHNpZWhlIGVyc3RlIFJlZ2VsKQorICAgICAgIC0gZGllIHsgdW5kIH0gcnVoaWcgaW4gZWluemVsZW4gWmVpbGVuIHNjaHJlaWJlbgorCisgICAgIC0gVmFyaWFibGVuIGluIGRlbSBCbG9jayBkZWtsYXJpZXJlbiwgaW4gZGVtIHNpZSBnZWJyYXVjaHQgd2VyZGVuLAorICAgICAgIGRhZHVyY2ggc2luZCBzaWUgc2NobmVsbGVyIHp1IGZpbmRlbgorCisgICAgIC0gI2RlZmluZSBuaWNodCB1ZWJlcnRyZWliZW4sIHdlbm4ga29tcGxleGUgRnVua3Rpb25lbiBkYW1pdCBnZWJhdXQKKyAgICAgICBzaW5kLCB1ZWJlcnNpZWh0IGRlciBMZXNlciBkZW4gQ29kZSBvZnQgbmljaHQgbWVocgorICAgICAgIC0gI2RlZmluZSBzb2xsdGVuIGluICNpbmNsdWRldGVuIEhlYWRlcmRhdGVpZW4gc3RlaGVuCisgICAgICAgLSB3ZW5uIGVzIGVpbmUgb2Z0IGJlbnV0enRlIEZ1bmt0aW9uIGlzdCwgc2NocmVpYiBzaWUgYWxzIExmdW4KKyAgICAgICAtIGlzdCBlcyB2aWVsbGVpY2h0IHNjaG9uIGluIC9zeXMvKi5oIG9kZXIgL3NlY3VyZS8qLmggZGVmaW5pZXJ0PworCisgICAgIFRpcHBzIHp1bSBDb2RlOgorICAgICAtIG9iamVrdG9yaWVudGllcnQgcHJvZ3JhbW1pZXJlbgorICAgICAgIC0gZGFzIHdhcyBhbmRlcmUgbmljaHQgdm9uIGF1c3NlbiBzZWhlbiBvZGVyIGF1ZnJ1ZmVuIG11ZXNzZW4sIG1pdAorICAgICAgICAgInByb3RlY3RlZCIgb2RlciAicHJpdmF0ZSIgYmVpIFZlcmVyYnVuZyB2ZXJzdGVja2VuCisKKyAgICAgLSByZXR1cm4gbWl0dGVuIGltIENvZGUgd2VubiBtb2VnbGljaCB2ZXJtZWlkZW4sIGRhIGRlciBQcm9ncmFtbWZsdXNzCisgICAgICAgZGFtaXQgYXVmZ2VzcGxpdHRlcnQgd2lyZCAtIGVpbiBlaW56aWdlciBGdW5rdGlvbnNhdXNnYW5nIGlzdAorICAgICAgIHVlYmVyc2ljaHRsaWNoZXIKKyAgICAgICAtIEF1c25haG1lIGhpZXJ2b24ga2FubiBhYmVyIHNlaW4sIChkaWUgbWVpc3RlbikgQXVzc2NobHVzc2JlZGluZ3VuZ2VuCisgICAgICAgICBmdWVyIGlyZ2VuZHdhcyBhbSBBbmZhbmcgZWluZXIgRnVua3Rpb24gYWJ6dXBydWVmZW4gdW5kIGRpZSBGdW5rdGlvbgorICAgICAgICAgZGFubiBhdWNoIHNvZm9ydCB6dSB2ZXJsYXNzZW4uCisgICAgICAKKyAgICAgLSBrb3JyZWt0ZSBUeXBlbiBiZWkgVmFyaWFibGVuIHVuZCBUeXBlbiB2ZXJ3ZW5kZW4sIGRhbWl0IGRlciBMZXNlcgorICAgICAgIGVya2VubnQgd2VsY2hlcyBEaW5nIHdhcyBpc3QKKyAgICAgICAtICNwcmFnbWEgc3Ryb25nX3R5cGVzIG9kZXIgZ2FyICNwcmFnbWEgc3RyaWN0X3R5cGVzIGhpbGZ0CisgICAgICAgLSBBdWNoIFR5cHBydWVmdW5nZW4genVyIExhdWZ6ZWl0ICgjcHJhZ21hIHJ0dF9jaGVja3MpIHZlcndlbmRlbgorICAgICAgIC0gYmVpIE9iamVrdGVuLCBkaWUgZ2VlcmJ0IHdlcmRlbiwgaW1tZXIgYXVjaCAgI3ByYWdtYSBzYXZlX3R5cGVzCisKKyAgICAgVGlwcHMgenUgRGF0ZWllbjoKKyAgICAgLSB1bnRlcnRlaWx0IGV1cmUgR2VnZW5kZW4gYW0gYmVzdGVuIGluIHZlcnNjaGllZGVuZSBWZXJ6ZWljaG5pc3NlLAorICAgICAgIGRhbm4gZmluZGV0IG1hbiBzaWNoIHNjaG5lbGwgenVyZWNodDoKKyAgICAgICAtIE5QQ3MsIE9iamVrdGUsIFJhZXVtZSwgTWFzdGVyIChnZ2YuIFdhZmZlbiwgUnVlc3R1bmdlbiB3ZW5uIHp1IHZpZWwpCisKKyAgICAgLSBQZmFkZSBzb2xsdGVuIGluIGVpbmVyIHplbnRyYWxlbiAjaW5jbHVkZSBEYXRlaSBzdGVoZW4sIHdlbGNoZSBkYW5uCisgICAgICAgcmVsYXRpdiAjaW5jbHVkZWQgd2VyZGVuIGthbm4uIERhbWl0IGVybGVpY2h0ZXJ0IG1hbiBzcGFldGVyZW4gTWFnaWVybgorICAgICAgIGV2ZW50dWVsbCBub2V0aWdlIFZlcnplaWNobmlzYWVuZGVydW5nZW4uCisgICAgICAgc3RhdHQ6CUFkZEl0ZW0oIi9kL2ViZW5lLzxtYWdpZXI+L3N1bXBmL25wYy9zY2hsZWltaSIsIC4uLik7CisgICAgICAgbGllYmVyOgorICAgICAgICAgI2luY2x1ZGUgIi4uL2xvY2FsLmgiCisgICAgICAgICAgIFtlbnRoYWVsdCBlaW4KKyAgICAgICAgICAgICNkZWZpbmUgU1VNUEZOUEMoeCkgKCIvZC9lYmVuZS88bWFnaWVyPi9zdW1wZi9ucGMvIiB4KV0KKwkJICAgICAuLi4KKwkJICAgICBBZGRJdGVtKFNVTVBGTlBDKCJzY2hsZWltaSIpLCAuLi4pOworCisgU0lFSEUgQVVDSDoKKyAgICAgaW5oZXJpdGFuY2UsIGVmZml6aWVueiwgcHJhZ21hLCBvb3AKKworMDUuMDYuMjAxNCwgWmVzc3RyYQorCmRpZmYgLS1naXQgYS9kb2MvY29uY2VwdHMvaG9va3MgYi9kb2MvY29uY2VwdHMvaG9va3MKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMTA4ZGEwOAotLS0gL2Rldi9udWxsCisrKyBiL2RvYy9jb25jZXB0cy9ob29rcwpAQCAtMCwwICsxLDE0NCBAQAorQ09OQ0VQVAorICAgICAgICBkcml2ZXIgaG9va3MKKworREVTQ1JJUFRJT04KKyAgICAgICAgVG8gYWxsb3cgYSBncmVhdGVyIGZsZXhpYmlsaXR5IG9mIHRoZSBtdWRzLCB0aGUgZ2FtZWRyaXZlcnMKKyAgICAgICAgc2luY2UgMy4yLjEgbW92ZWQgc2V2ZXJhbCBvbmNlIGhhcmRjb2RlZCAndW5kZXJncm91bmQnCisgICAgICAgIGFjdGl2aXRpZXMgZnJvbSB0aGUgZHJpdmVyIGludG8gdGhlIG11ZGxpYi4gVGhpcyBpbmNsdWRlcyBmb3IKKyAgICAgICAgZXhhbXBsZSB0aGUgZGlmZmVyZW5jZXMgYmV0d2VlbiBjb21wYXQgYW5kIG5hdGl2ZSBtb2RlLgorCisgICAgICAgIFRoZSBob29rcyBhcmUgc2V0IHdpdGggdGhlIHByaXZpbGVnZWQgZWZ1biBzZXRfZHJpdmVyX2hvb2soKS4KKyAgICAgICAgU29tZSBvZiB0aGUgaG9va3MgYXJlIG1hbmRhdG9yeSwgc29tZSBub3QuIE1vc3QgaG9va3MgYWNjZXB0CisgICAgICAgIHVuYm91bmQgbGFtYmRhIGNsb3N1cmVzIGFzIHZhbHVlcywgc29tZSBhbHNvIGxmdW4gY2xvc3VyZXMgb3IKKyAgICAgICAgZXZlbiBzdHJpbmdzLgorICAgICAgICBUaGUgaG9va3MgYXJlIGlkZW50aWZpZWQgYnkgYW4gb3JkaW5hbCBudW1iZXIsIGZvciB3aGljaAorICAgICAgICBzeW1ib2xpYyBuYW1lcyBhcmUgZGVmaW5lZCBpbiAvc3lzL2RyaXZlcmhvb2tzLmguCisKKyAgICAgICAgSF9NT1ZFX09CSkVDVDAKKyAgICAgICAgSF9NT1ZFX09CSkVDVDEKKyAgICAgICAgICBNYW5kYXRvcnkgaG9va3MgdG8gaW1wbGVtZW50IHRoZSBlZnVuIHZvaWQgbW92ZV9vYmplY3QoKS4KKworCisgICAgICAgIEhfTE9BRF9VSURTCisgICAgICAgIEhfQ0xPTkVfVUlEUworICAgICAgICAgIE1hbmRhdG9yeSBob29rcyB0byBkZXRlcm1pbmUgdGhlIHVpZCBhbmQgZXVpZCBvZiBsb2FkZWQgb3IgY2xvbmVkCisgICAgICAgICAgb2JqZWN0cy4KKworCisgICAgICAgIEhfQ1JFQVRFX1NVUEVSCisgICAgICAgIEhfQ1JFQVRFX09CCisgICAgICAgIEhfQ1JFQVRFX0NMT05FCisgICAgICAgICAgT3B0aW9uYWwgaG9va3MgdG8gaW5pdGlhbGl6ZSBhbiBvYmplY3QgYWZ0ZXIgY3JlYXRpb24uCisKKyAgICAgICAgICBIX0NSRUFURV9TVVBFUiBpcyBjYWxsZWQgZm9yIGJsdWVwcmludHMgaW1wbGljaXRlbHkgbG9hZGVkCisgICAgICAgICAgYnkgaW5oZXJpdGFuY2UsIEhfQ1JFQVRFX09CIGZvciBleHBsaWNpdGVseSBsb2FkZWQKKyAgICAgICAgICBibHVlcHJpbnRzL29iamVjdHMsIGFuZCBIX0NSRUFURV9DTE9ORSBmb3IgY2xvbmVkIG9iamVjdHMuCisKKworICAgICAgICBIX1JFU0VUCisgICAgICAgICAgT3B0aW9uYWwgaG9vayB0byByZXNldCBhbiBvYmplY3QuCisKKworICAgICAgICBIX0NMRUFOX1VQCisgICAgICAgICAgT3B0aW9uYWwgaG9vayB0byBjbGVhbiB1cCBhbiBvYmplY3QuCisKKworICAgICAgICBIX0RFRkFVTFRfTUVUSE9ECisgICAgICAgICAgT3B0aW9uYWwgaG9vayB0byBwcm92aWRlIGRlZmF1bHQgaW1wbGVtZW50YXRpb24gZm9yIHVucmVzb2x2ZWQKKyAgICAgICAgICBjYWxscy4KKworCisgICAgICAgIEhfREVGQVVMVF9QUk9NUFQKKyAgICAgICAgICBPcHRpb25hbCBob29rIGZvciB0aGUgY29tbWFuZCBwcm9tcHQuIElmIHRoaXMgaG9vayBpcyBub3QgdXNlZCwKKyAgICAgICAgICB0aGUgZHJpdmVyIHdpbGwgdXNlICI+ICIgYXMgdGhlIGNvbW1hbmQgcHJvbXB0LgorCisKKyAgICAgICAgSF9QUklOVF9QUk9NUFQKKyAgICAgICAgICBPcHRpb25hbCBob29rIHRvIHByaW50IHRoZSBjdXJyZW50IGNvbW1hbmQgcHJvbXB0LiBJZiB0aGlzIGhvb2sgaXMKKyAgICAgICAgICBub3Qgc2V0LCB0aGUgZHJpdmVyIHdpbGwganVzdCBwcmludCB0aGUgcHJvbXB0IHRvIHRoZSB1c2VyLgorCisKKyAgICAgICAgSF9DT01NQU5ECisgICAgICAgICAgT3B0aW9uYWwgaG9vayB0byBwYXJzZSBhbmQgZXhlY3V0ZSBjb21tYW5kcy4gSWYgdGhpcyBob29rIGlzIHVzZWQsCisgICAgICAgICAgaXQgYnlwYXNzZXMgdGhlIG5vcm1hbCBjb21tYW5kIHBhcnNpbmcgZG9uZSBieSB0aGUgZHJpdmVyIChpbmNsdWRpbmcKKyAgICAgICAgICB0aGUgTU9ESUZZX0NPTU1BTkQgYW5kIE5PVElGWV9GQUlMIGhvb2tzKS4KKworCisgICAgICAgIEhfTU9ESUZZX0NPTU1BTkQKKyAgICAgICAgICBPcHRpb25hbCBob29rIHRvIG1vZGlmeSBjb21tYW5kcyAoYm90aCBlbnRlcmVkIG9yIGdpdmVuIGJ5IGEKKyAgICAgICAgICBjYWxsIHRvIGNvbW1hbmQoKSkgYmVmb3JlIHRoZSBwYXJzZXIgc2VlcyB0aGVtICh0aGlzIGluY2x1ZGVzCisgICAgICAgICAgc3BlY2lhbCBjb21tYW5kcyBsaWtlICdzdGF0dXMnKS4KKworCisgICAgICAgIEhfTU9ESUZZX0NPTU1BTkRfRk5BTUUKKyAgICAgICAgICBNYW5kYXRvcnkgaG9vayBzcGVjaWZ5aW5nIHRoZSBuYW1lIG9mIHRoZSAnbW9kaWZ5X2NvbW1hbmQnCisgICAgICAgICAgbGZ1biB0byBjYWxsIGZvciBuZXdseSBlbnRlcmVkIGNvbW1hbmRzIGFzIHJlc3VsdCBvZiBhCisgICAgICAgICAgc2V0X21vZGlmeV9jb21tYW5kKCkuCisKKworICAgICAgICBIX05PVElGWV9GQUlMCisgICAgICAgICAgTWFuZGF0b3J5IGhvb2sgdG8gaXNzdWUgdGhlIGRlZmF1bHQgbWVzc2FnZSBpZiBhbiBlbnRlcmVkCisgICAgICAgICAgY29tbWFuZCBjb3VsZG4ndCBiZSBwYXJzZWQgYW5kIG5vIG5vdGlmeV9mYWlsKCkgY29tbWFuZCBpcworICAgICAgICAgIGluIGVmZmVjdC4KKworCisgICAgICAgIEhfU0VORF9OT1RJRllfRkFJTAorICAgICAgICAgIE9wdGlvbmFsIGhvb2sgdG8gc2VuZCB0aGUgbm90aWZ5IGZhaWwgbWVzc2FnZSwgcmVnYXJkbGVzcworICAgICAgICAgIG9mIGhvdyBpdCB3YXMgZGV0ZXJtaW5lZCwgdG8gdGhlIHBsYXllci4gSWYgdGhlIGhvb2sgaXMgbm90CisgICAgICAgICAgc2V0LCB0aGUgbWVzc2FnZSBpcyBkZWxpdmVyZWQgdXNpbmcgdGVsbF9vYmplY3QoKSBpbnRlcm5hbGx5LgorCisKKyAgICAgICAgSF9OT19JUENfU0xPVAorICAgICAgICAgIE9wdGlvbmFsIGhvb2sgc3BlY2lmeWluZyB0aGUgbWVzc2FnZSBnaXZlbiB0byBsb2dpbnMKKyAgICAgICAgICByZWplY3RlZCBkdWUgdG8gc3BhY2UgbGltaXRhdGlvbnMgKE1BWF9QTEFZRVIpLgorCisKKyAgICAgICAgSF9JTkNMVURFX0RJUlMKKyAgICAgICAgICBTZW1pLW1hbmRhdG9yeSBob29rIHNwZWNpZnlpbmcgdGhlIGRpcmVjdG9yaWVzIHdoZXJlIDw+LXR5cGUKKyAgICAgICAgICBpbmNsdWRlIGZpbGVzIGFyZSBzZWFyY2hlZCAodGhpcyBpbmNsdWRlcyAiIi1pbmNsdWRlcyBub3QKKyAgICAgICAgICBmb3VuZCBhcyBzcGVjaWZpZWQpLgorCisKKyAgICAgICAgSF9BVVRPX0lOQ0xVREUKKyAgICAgICAgICBPcHRpb25hbCBob29rIHNwZWNpZnlpbmcgYSBzdHJpbmcgdG8gYmUgaW5jbHVkZWQgYmVmb3JlCisgICAgICAgICAgdGhlIHNvdXJjZSBvZiBldmVyeSBjb21waWxlZCBMUEMgb2JqZWN0LgorCisKKyAgICAgICAgSF9URUxORVRfTkVHCisgICAgICAgICAgT3B0aW9uYWwgaG9vayB0byBzcGVjaWZpeSBob3cgdG8gcGVyZm9ybSBhIHNpbmdsZSB0ZWxuZXQKKyAgICAgICAgICBuZWdvdGlhdGlvbi4gIElmIG5vdCBzZXQsIG1vc3QgdGVsbmV0IG9wdGlvbnMgYXJlIHJlamVjdGVkIChyZWFkOgorICAgICAgICAgIG9ubHkgYSB2ZXJ5IG1pbmltYWwgbmVnb3RpYXRpb24gdGFrZXMgcGxhY2UpLgorCisKKyAgICAgICAgSF9OT0VDSE8KKyAgICAgICAgICBPcHRpb25hbCBob29rIHRvIHNwZWNpZml5IGhvdyB0byBwZXJmb3JtIHRoZSB0ZWxuZXQgYWN0aW9ucworICAgICAgICAgIHRvIHN3aXRjaCB0aGUgZWNobyBtb2RlICh1c2VkIGZvciBlLmcuIHBhc3N3b3JkIGlucHV0X3RvKClzKS4KKyAgICAgICAgICBJZiBub3Qgc2V0LCBhIGRlZmF1bHQgaGFuZGxpbmcgaXMgcGVyZm9ybWVkLgorCisgICAgICAgICAgSU1QT1JUQU5UOiBJZiB0aGlzIGhvb2sgaXMgdXNlZCwgdGhlIGNvbnRyb2wgb2YgYWxsIHRlbG5ldAorICAgICAgICAgIG5lZ290aWF0aW9uIGlzIHRyYW5zZmVycmVkIHRvIHRoZSBtdWRsaWIgKHlvdSBtdXN0IGNvbWJpbmUgaXQKKyAgICAgICAgICB3aXRoIEhfVEVMTkVUX05FRyB0byBjb25mb3JtIHRvIHRoZSB0ZWxuZXQgcHJvdG9jb2wpLgorCisKKyAgICAgICAgSF9FUlFfU1RPUAorICAgICAgICAgIE9wdGlvbmFsIGhvb2sgdG8gbm90aWZ5IHRoZSBtdWRsaWIgYWJvdXQgdGhlIHRlcm1pbmF0aW9uIG9mCisgICAgICAgICAgdGhlIGVycSBkZW1vbi4KKworCitISVNUT1JZCisgICAgICAgIFRoZSBob29rcyBjb25jZXB0IHdhcyBpbnRyb2R1Y2VkIGluIDMuMi4xCisgICAgICAgIEhfTU9WRV9PQkpFQ1QwLzEgd2VyZSBpbnRyb2R1Y2VkIGluIDMuMi4xQDEKKyAgICAgICAgSF9DTEVBTl9VUCB3YXMgaW50cm9kdWNlZCBpbiAzLjIuMUAzNAorICAgICAgICBIX01PRElGWV9DT01NQU5EIHdhcyBpbnRyb2R1Y2VkIGluIDMuMi4xQDUxLgorICAgICAgICBIX01PRElGWV9DT01NQU5EX0ZOQU1FIHdhcyAnaG9va2VkJyBpbiAzLjIuMUAxMDkuCisgICAgICAgIEhfTk9USUZZX0ZBSUxFIGFuZCBIX05PX0lQQ19TTE9UIHdlcmUgaW50cm9kdWNlZCBpbiAzLjIuMUA1NS4KKyAgICAgICAgSF9JTkNMVURFX0RJUlMgd2FzIGludHJvZHVjZWQgaW4gMy4yLjFANTcuCisgICAgICAgIEhfVEVMTkVUX05FRyB3YXMgaW50cm9kdWNlZCBpbiAzLjIuMUA2MC4KKyAgICAgICAgSF9OT0VDSE8gYW5kIEhfRVJRX1NUT1Agd2VyZSBpbnRyb2R1Y2VkIGluIDMuMi4xQDg1LgorICAgICAgICBIX0NPTU1BTkQgd2FzIGludHJvZHVjZWQgaW4gMy4yLjcuCisgICAgICAgIEhfU0VORF9OT1RJRllfRkFJTCBhbmQgSF9BVVRPX0lOQ0xVREUgd2VyZSBpbnRyb2R1Y2VkIGluIDMuMi45LgorICAgICAgICBIX0RFRkFVTFRfTUVUSE9EIHdhcyBpbnRyb2R1Y2VkIGluIDMuMy4xMTMuCisgICAgICAgIEhfREVGQVVMVF9QUk9NUFQgYW5kIEhfUFJJTlRfUFJPTVBUIHdlcmUgaW50cm9kdWNlZCBpbiAzLjMuMTYzLgorCitTRUUgQUxTTworICAgICAgICBuYXRpdmUoQyksIHNldF9kcml2ZXJfaG9vayhFKSwgYWxsIGluIChIKQpkaWZmIC0tZ2l0IGEvZG9jL2NvbmNlcHRzL2hzcmVnZXhwIGIvZG9jL2NvbmNlcHRzL2hzcmVnZXhwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjA0MjY2YmUKLS0tIC9kZXYvbnVsbAorKysgYi9kb2MvY29uY2VwdHMvaHNyZWdleHAKQEAgLTAsMCArMSw5OSBAQAorU1lOT1BTSVMKKyAgICAgICAgSGVucnkgU3BlbmNlciBSZWd1bGFyIEV4cHJlc3Npb25zCisKKworREVTQ1JJUFRJT04KKyAgICAgICAgVGhpcyBkb2N1bWVudCBkZXNjcmliZXMgdGhlIHJlZ3VsYXIgZXhwcmVzc2lvbnMgc3VwcG9ydGVkIGJ5IHRoZQorICAgICAgICBpbXBsZW1lbnRhdGlvbiBieSBIZW5yeSBTcGVuY2VyICh0aGUgdHJhZGl0aW9uYWwgcGFja2FnZSBmb3IKKyAgICAgICAgTFBNdWQpLgorCisKK09QVElPTlMKKyAgICAgICAgVGhlIGZvbGxvd2luZyBiaXRmbGFnIG9wdGlvbnMgbW9kaWZ5IHRoZSBiZWhhdmlvdXIgb2YgdGhlCisgICAgICAgIHJlZ3VsYXIgZXhwcmVzc2lvbnMgLSBib3RoIGludGVycHJldGF0aW9uIGFuZCBhY3R1YWwgbWF0Y2hpbmcuCisKKyAgICAgICAgVGhlIGVmdW5zIG1heSB1bmRlcnN0YW5kIGFkZGl0aW9uYWwgb3B0aW9ucy4KKworICAgICAgICAgIFJFX0VYQ09NUEFUSUJMRQorCisgICAgICAgIElmIHRoaXMgYml0IGlzIHNldCwgdGhlIHBhdHRlcm4gaXMgaW50ZXJwcmV0ZWQgYXMgdGhlIFVOSVggZWQKKyAgICAgICAgZWRpdG9yIHdvdWxkIGRvIGl0OiAoKSBtYXRjaCBsaXRlcmFsbHksIGFuZCB0aGUgXCggXCkgZ3JvdXAKKyAgICAgICAgZXhwcmVzc2lvbnMuCisKKworUkVHVUxBUiBFWFBSRVNTSU9OIERFVEFJTFMKKyAgICAgICAgQSByZWd1bGFyIGV4cHJlc3Npb24gaXMgYSBwYXR0ZXJuIHRoYXQgaXMgbWF0Y2hlZCBhZ2FpbnN0ICBhCisgICAgICAgIHN1YmplY3Qgc3RyaW5nIGZyb20gbGVmdCB0byByaWdodC4gTW9zdCBjaGFyYWN0ZXJzIHN0YW5kIGZvcgorICAgICAgICB0aGVtc2VsdmVzIGluIGEgcGF0dGVybiwgYW5kIG1hdGNoIHRoZSBjb3JyZXNwb25kaW5nIGNoYXJhYy0KKyAgICAgICAgdGVycyBpbiB0aGUgc3ViamVjdC4gQXMgYSB0cml2aWFsIGV4YW1wbGUsIHRoZSBwYXR0ZXJuCisKKyAgICAgICAgICBUaGUgcXVpY2sgYnJvd24gZm94CisKKyAgICAgICAgbWF0Y2hlcyBhIHBvcnRpb24gb2YgYSBzdWJqZWN0IHN0cmluZyB0aGF0IGlzICBpZGVudGljYWwgIHRvCisgICAgICAgIGl0c2VsZi4gIFRoZSAgcG93ZXIgIG9mICByZWd1bGFyICBleHByZXNzaW9ucyBjb21lcyBmcm9tIHRoZQorICAgICAgICBhYmlsaXR5IHRvIGluY2x1ZGUgYWx0ZXJuYXRpdmVzIGFuZCByZXBldGl0aW9ucyBpbiB0aGUgIHBhdC0KKyAgICAgICAgdGVybi4gIFRoZXNlICBhcmUgZW5jb2RlZCBpbiB0aGUgcGF0dGVybiBieSB0aGUgdXNlIG9mIG1ldGEtCisgICAgICAgIGNoYXJhY3RlcnMsIHdoaWNoIGRvIG5vdCBzdGFuZCBmb3IgIHRoZW1zZWx2ZXMgIGJ1dCAgaW5zdGVhZAorICAgICAgICBhcmUgaW50ZXJwcmV0ZWQgaW4gc29tZSBzcGVjaWFsIHdheS4KKworICAgICAgICBUaGVyZSBhcmUgdHdvIGRpZmZlcmVudCBzZXRzIG9mIG1ldGEtY2hhcmFjdGVyczogdGhvc2UgIHRoYXQKKyAgICAgICAgYXJlICByZWNvZ25pemVkIGFueXdoZXJlIGluIHRoZSBwYXR0ZXJuIGV4Y2VwdCB3aXRoaW4gc3F1YXJlCisgICAgICAgIGJyYWNrZXRzLCBhbmQgdGhvc2UgdGhhdCBhcmUgcmVjb2duaXplZCBpbiBzcXVhcmUgIGJyYWNrZXRzLgorICAgICAgICBPdXRzaWRlIHNxdWFyZSBicmFja2V0cywgdGhlIG1ldGEtY2hhcmFjdGVycyBhcmUgYXMgZm9sbG93czoKKworICAgICAgICAgIC4gICAgICAgTWF0Y2ggYW55IGNoYXJhY3Rlci4KKworICAgICAgICAgIF4gICAgICAgTWF0Y2ggYmVnaW4gb2YgbGluZS4KKworICAgICAgICAgICQgICAgICAgTWF0Y2ggZW5kIG9mIGxpbmUuCisKKyAgICAgICAgICBcPCAgICAgIE1hdGNoIGJlZ2luIG9mIHdvcmQuCisKKyAgICAgICAgICBcPiAgICAgIE1hdGNoIGVuZCBvZiB3b3JkLgorCisgICAgICAgICAgXEIgICAgICBub3QgYXQgZWRnZSBvZiBhIHdvcmQgKHN1cHBvc2VkIHRvIGJlIGxpa2UgdGhlIGVtYWNzCisgICAgICAgICAgICAgICAgICBjb21wYXRpYmlsaXR5IG9uZSBpbiBnbnUgZWdyZXApCisKKyAgICAgICAgICB4fHkgICAgIE1hdGNoIHJlZ2V4cCB4IG9yIHJlZ2V4cCB5LgorCisgICAgICAgICAgKCkgICAgICBNYXRjaCBlbmNsb3NlZCByZWdleHAgbGlrZSBhICdzaW1wbGUnIG9uZSAodW5sZXNzCisgICAgICAgICAgICAgICAgICBSRV9FWENPTVBBVElCTEUgaXMgc2V0KS4KKworICAgICAgICAgIHgqICAgICAgTWF0Y2ggYW55IG51bWJlciAoMCBvciBtb3JlKSBvZiByZWdleHAgeC4KKworICAgICAgICAgIHgrICAgICAgTWF0Y2ggYW55IG51bWJlciAoMSBvciBtb3JlKSBvZiByZWdleHAgeC4KKworICAgICAgICAgIFsuLl0gICAgTWF0Y2ggb25lIG9mIHRoZSBjaGFyYWN0ZXJzIGVuY2xvc2VkLgorCisgICAgICAgICAgW14gLi5dICBNYXRjaCBub25lIG9mIHRoZSBjaGFyYWN0ZXJzIGVuY2xvc2VkLiBUaGUgLi4gYXJlIHRvCisgICAgICAgICAgICAgICAgICByZXBsYWNlZCBieSBzaW5nbGUgY2hhcmFjdGVycyBvciBjaGFyYWN0ZXIgcmFuZ2VzOgorCisgICAgICAgICAgW2FiY10gICBtYXRjaGVzIGEsIGIgb3IgYy4KKworICAgICAgICAgIFthYjAtOV0gbWF0Y2hlcyBhLCBiIG9yIGFueSBkaWdpdC4KKworICAgICAgICAgIFteYS16XSAgZG9lcyBub3QgbWF0Y2ggYW55IGxvd2VyY2FzZSBjaGFyYWN0ZXIuCisKKyAgICAgICAgICBcYyAgICAgIG1hdGNoIGNoYXJhY3RlciBjIGV2ZW4gaWYgaXQncyBvbmUgb2YgdGhlIHNwZWNpYWwKKyAgICAgICAgICAgICAgICAgIGNoYXJhY3RlcnMuCisKKworTk9URVMKKyAgICAgICAgVGhlIFw8IGFuZCBcPiBtZXRhY2hhcmFjdGVycyBmcm9tIEhlbnJ5IFNwZW5jZXJzIHBhY2thZ2UKKyAgICAgICAgYXJlIG5vdCBhdmFpbGFibGUgaW4gUENSRSwgYnV0IGNhbiBiZSBlbXVsYXRlIHdpdGggXGIsCisgICAgICAgIGFzIHJlcXVpcmVkLCBhbHNvIGluIGNvbmp1bmN0aW9uIHdpdGggXFcgb3IgXHcuCisKKyAgICAgICAgSW4gTERNdWQsIGJhY2t0cmFja3MgYXJlIGxpbWl0ZWQgYnkgdGhlIEVWQUxfQ09TVCBydW50aW1lCisgICAgICAgIGxpbWl0LCB0byBhdm9pZCBmcmVlemluZyB0aGUgZHJpdmVyIHdpdGggYSBtYXRjaAorICAgICAgICBsaWtlIHJlZ2V4cCgoeyI9WFg9PT09PT09PT09PT09PT09PT09In0pLCAiWCguKykrWCIpLgorCisKK0FVVEhPUgorICAgICAgICBNYXJrIEguIENvbGJ1cm4sIE5BUFMgSW50ZXJuYXRpb25hbCAobWFya0BqaGVyZWcubW4ub3JnKQorICAgICAgICBIZW5yeSBTcGVuY2VyLCBVbml2ZXJzaXR5IG9mIFRvcnJvbnRvIChoZW5yeUB1dHpvby5lZHUpCisgICAgICAgIEpvZXJuIFJlbm5lY2tlCisgICAgICAgIElhbiBQaGlsbGlwcHMKKworCitTRUUgQUxTTworICAgICAgICByZWdleHAoQyksIHBjcmUoQykKZGlmZiAtLWdpdCBhL2RvYy9jb25jZXB0cy9pbXAgYi9kb2MvY29uY2VwdHMvaW1wCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjI3ZDlhYjkKLS0tIC9kZXYvbnVsbAorKysgYi9kb2MvY29uY2VwdHMvaW1wCkBAIC0wLDAgKzEsNjMgQEAKK0NPTkNFUFQKKyAgICAgICAgaW1wCisKK0xBU1QgVVBEQVRFRAorICAgICAgICBEZWVwdGhvdWdodCwgMTAtTm92LTkyCisgICAgICAgIFBlcGVsLCAgICAgICAgICAgICAxOC1Ob3YtOTMKKworREVTUklQVElPTgorICAgICAgICBUaGlzIGRvY3VtZW50IGRlc2NyaWJlcyBJTVAsIHRoZSBpbnRlcm11ZCBtZXNzYWdlIHByb3RvY29sLAorICAgICAgICBhbHNvIGtub3duIGFzIEludGVybXVkLTEuCisKKyAgICAgICAgSW1wIG1lc3NhZ2VzIGFyZSBleGNoYW5nZWQgYmV0d2VlbiBtdWRzIHVzaW5nIFVEUAorICAgICAgICAodW5yZWxpYWJsZSBkYXRhZ3JhbSBwcm90b2NvbCkgcGFja2V0cy4gRWFjaCBtdWQgcHJvdmlkZXMKKyAgICAgICAgYSBjb25uZWN0aW9uIGVuZHBvaW50IHdoaWNoIGlzIGdpdmVuIGJ5IHRoZSBpcCBob3N0IGFkZHJlc3MKKyAgICAgICAgYW5kIHRoZSBVRFAgcG9ydCBudW1iZXIuIE11ZHMgbWF5IHRoZW4gc2VuZCBtZXNzYWdlcyB0bworICAgICAgICB0aGlzIHBvcnQgYnkgdXNpbmcgdGhlIGVmdW4gc2VuZF91ZHAoKS4gVGhlIGFwcGxpZWQgZnVuY3Rpb24KKyAgICAgICAgcmVjZWl2ZV91ZHAgd2lsbCBiZSBjYWxsZWQgYnkgdGhlIGRyaXZlciBpbiB0aGUgbWFzdGVyCisgICAgICAgIG9iamVjdCBpZiBhIGltcCBtZXNzYWdlIGFycml2ZXMgYXQgdGhlIG11ZCdzIFVEUCBwb3J0LgorCisgICAgICAgIEltcCBtZXNzYWdlIHBhY2tldHMgaGF2ZSB0aGUgZm9sbG93aW5nIGZvcm1hdDoKKworICAgICAgICBwYXNzd29yZEBvYmplY3RuYW1lQGZ1bmN0aW9ubmFtZVtbQGFyZ3VtZW50XS4uLl0KKworICAgICAgICA8cGFzc3dvcmQ+IGlzIHRoZSBjb25uZWN0aW9uIHBhc3N3b3JkIHRvIHZlcmlmeSBpbmNvbWluZworICAgICAgICBpbXAgcGFja2V0cy4gSXQgaXMgZW5jb2RlZCB1c2luZyBjcnlwdChFKSBhbmQgY29tcGFyZWQgdG8KKyAgICAgICAgdGhlIHN0b3JlZCBwYXNzd29yZC4gRWFjaCBtdWQgcGFydGljaXBhdGluZyBpbiB0aGUgaW1wCisgICAgICAgIG5ldHdvcmsgaGFzIGEgc2VjcmV0IHBhc3N3b3JkIHdoaWNoIGlzIGVuY29kZWQgYnkgdGhlCisgICAgICAgIGFkbWluIGFuZCBkaXN0cmlidXRlZCB0byByZW1vdGUgbXVkcyB3aXRoIHdoaWNoIHRoZSBtdWQKKyAgICAgICAgc2hvdWxkIGhhdmUgZGlyZWN0IGNvbm5lY3Rpb24uIEVuY3J5dGVkIHBhc3N3b3JkcyBtYXkgYWxzbworICAgICAgICBwcm9wYWdhdGVkIHRvIG90aGVyIG11ZHMgb3ZlciBhbHJlYWR5IHNlY3VyZSBjaGFubmVscy4KKworICAgICAgICA8b2JqZWN0bmFtZT4gaXMgYSBsb2dpY2FsIG5hbWUgd2hpY2ggaXMgbm90IHRvIGJlIGNvbmZ1c2VkCisgICAgICAgIHdpdGggbXVkbGliIG9iamVjdCBmaWxlbmFtZXMuIEl0IGlzIHVzZWQgYnkgcmVjZWl2ZV9tc2cgaW4KKyAgICAgICAgdGhlIG1hc3RlciBvYmplY3QgdG8gcm91dGUgdGhlIG1lc3NhZ2UgdG8gYW5vdGhlciBvYmplY3QgYnkKKyAgICAgICAgYXNzb2NpYXRpbmcgdGhlIGxvZ2ljYWwgb2JqZWN0IG5hbWUgd2l0aCBhIHJlYWwgbXVkbGliIGZpbGUKKyAgICAgICAgbmFtZS4gQSBnb29kIGlkZWEgd291bGQgYmUgdG8gcmVzZXJ2ZSBhIHNwZWNpYWwgZGlyZWN0b3J5CisgICAgICAgIGZvciBpbXAgb2JqZWN0cywgZS5nLiAvc2VjdXJlL25ldC88b2JqZWN0bmFtZT4uCisKKyAgICAgICAgPGZ1bmN0aW9ubmFtZT4gaXMgdGhlIGZ1bmN0aW9uIHdoaWNoIGlzIGNhbGxlZCBieSB0aGUgbWFzdGVyCisgICAgICAgIG9iamVjdCBpbiB0aGUgb2JqZWN0IGRlc2NyaWJlZCBieSA8b2JqZWN0bmFtZT4uCisKKyAgICAgICAgPGFyZ3VtZW50PiBhcmUgYWRkaXRpb25hbCBhcmd1bWVudHMgd2hpY2ggYXJlIGhhbmRlZCB0byB0aGUKKyAgICAgICAgZnVuY3Rpb24gPGZ1bmN0aW9ubmFtZT4uIFRoZSBleGFjdCBkZWZpbml0aW9uIG9mIGZ1bmN0aW9ucworICAgICAgICBhbmQgYXJndW1lbnRzIGFyZSBsZWZ0IHRvIHRoZSBpbXAgYXBwbGljYXRpb25zLgorCitBVVRIT1IKKyAgICAgICAgb3JpZ2luYWxseSBEZWVwdGhvdWdodAorCitOT1RFCisgICAgICAgIFRoZSBhYm92ZSBpcyBvbmx5IHBhcnRpY3VsYXJseSBjb3JyZWN0IG5vd2FkYXlzLiBSZWNlbnRseSBhCisgICAgICAgIHBhY2thZ2UgbmFtZSBgYGluZXRkJycgd2FzIHB1Ymxpc2hlZCwgdGhhdCBpcyBiYXNlZCBvbiB0aGUgSU1QCisgICAgICAgIG1lY2hhbmlzbSBpbiB0aGUgZHJpdmVyIChzZW5kX3VkcCgpIGFuZCByZWNlaXZlX3VkcCgpKSwgYnV0CisgICAgICAgIGl0IHVzZXMgYSBkaWZmZXJlbnQgbWVzc2FnZSBmb3JtYXQuIFRoYXQgcGFja2FnZSBzZWVtcyB0bworICAgICAgICBlbmpveSBtdWNoIHB1YmxpY2l0eSBhbmQgaXMgaW5zdGFsbGVkIGluIGEgbnVtYmVyIG9mIG11ZHMuIEZvcgorICAgICAgICBkZXRhaWxzIGxvb2sgaW50byB0aGUgaW5ldGQgZGVzY3JpcHRpb24uCisKKyAgICAgICAgQW4gb3RoZXIgbWV0aG9kIG9mIGludGVyIG11ZCBjb25uZWN0aW9uIGlzIHRoZSBNdWRsaW5rCisgICAgICAgIHBhY2thZ2UsIHdoaWNoIHVzZXMgYSBub3JtYWwgdXNlciBjb25uZWN0aW9uIHRoYXQgaXMgY29ubmVjdGVkCisgICAgICAgIHRvIGEgc3BlY2lhbCB1c2VyIG9iamVjdCwgYW5kIGFuIGF1eGlsaWFyeSBwcm9jZXNzIHRoYXQgZG9lcworICAgICAgICB0aGUgY29ubmVjdGlvbiB0byBvdGhlciBtdWRzLgorCitTRUUgQUxTTworICAgICAgICBzZW5kX3VkcChFKSwgcmVjZWl2ZV91ZHAoTSksIGludGVybXVkKEMpCmRpZmYgLS1naXQgYS9kb2MvY29uY2VwdHMvaW5oZXJpdGFuY2UgYi9kb2MvY29uY2VwdHMvaW5oZXJpdGFuY2UKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNDZiZjMzOAotLS0gL2Rldi9udWxsCisrKyBiL2RvYy9jb25jZXB0cy9pbmhlcml0YW5jZQpAQCAtMCwwICsxLDE3NyBAQAorQ09OQ0VQVAorICAgICAgICBJbmhlcml0YW5jZQorCitERVNDUklQVElPTgorICAgICAgICBIYXZlIHlvdSBub3RpY2VkIGhvdyBtYW55IG9iamVjdHMgaW4gdGhlIHN5c3RlbSBoYXZlIHRoZSBzYW1lCisgICAgICAgIGZ1bmN0aW9uYWxpdHkgaW4gY29tbW9uPyBMZXQncyBsb29rIGF0IHJvb21zIGZvciBpbnN0YW5jZSwgdGhleQorICAgICAgICBhbGwgaGF2ZSB0aGUgYWJpbGl0eSB0byBob3N0IHBlb3BsZSBhbmQgcHJvdmlkZSBjb21tYW5kcy4gSXQncworICAgICAgICBub3QgdGhhdCBldmVyeSByb29tIGlzIHByb2dyYW1tZWQgd2l0aCB0aGUgc2FtZSBiYXNpYyBmdW5jdGlvbnMKKyAgICAgICAgYWdhaW4gYW5kIGFnYWluLCByYXRoZXIgaXQgd2lsbCB1c2UgYSBtb2RlbCByb29tIGFuZCB0aGVuIG1ha2UKKyAgICAgICAgc29tZSBzcGVjaWFsIGNoYW5nZXMgdG8gaXQuIFRoYXQgZG9lc24ndCB3b3JrIGJ5IGNvcHlpbmcgdGhlCisgICAgICAgIGZpbGUuLiBPdWNoISBEb24ndCByZXBsaWNhdGUgY29kZSEgQnV0IGJ5IHB1dHRpbmcgYSB0aW55IGluaGVyaXQKKyAgICAgICAgZGVjbGFyYXRpb24KKyAgICAgICAgCisgICAgICAgICAgICAgICAgaW5oZXJpdCAiPG1vZGVsLWNsYXNzPiI7CisgICAgICAgICAgICAgICAgCisgICAgICAgIGF0IHRoZSBiZWdpbm5pbmcgb2YgeW91ciBuZXcgZmlsZS4gVGhpcyBtdXN0IGNvbWUgYmVmb3JlIGFueSBsb2NhbAorICAgICAgICBhcmlhYmxlcyBvciBmdW5jdGlvbnMuIE9uY2UgaW5oZXJpdGVkIHlvdXIgY2xhc3Mgd2lsbCBiZWhhdmUganVzdAorICAgICAgICBsaWtlIHRoZSBtb2RlbCBjbGFzcywgYmVjYXVzZSBhbGwgdGhlIHB1YmxpYyBtZXRob2RzIGFyZSBhdmFpbGFibGUKKyAgICAgICAgdG8gdGhlIG91dHNpZGUgd29ybGQuIE5vdyBpdCBpcyBpbiB5b3VyIGhhbmRzIHRvIGNoYW5nZSBzdWNoIGFuCisgICAgICAgIGluaGVyaXRlZCBiZWhhdmlvdXIuIFlvdSBoYXZlIHRoZSBmb2xsb3dpbmcgdG9vbHMgdG8gZG8gc286CisKKyAgICAgICAgKiBBY2Nlc3MgdG8gdmFyaWFibGVzCisKKyAgICAgICAgSXQgaXMgb25lIG9mIHRoZSBiZXN0IGRlc2lnbiBkZWNpc2lvbnMgaW4gTFBDIHRoYXQgdmFyaWFibGVzCisgICAgICAgIGFyZSBub3QgYWNjZXNzaWJsZSBmcm9tIG91dHNpZGUsIGJ1dCB5b3UgY2FuIHVzZSBpbmhlcml0ZWQKKyAgICAgICAgdmFyaWFibGVzIGp1c3QgYXMgaWYgdGhleSB3ZXJlIHlvdXIgb3duLiBNb2RpZmllcnMgYXBwbHkgaG93ZXZlci4KKworICAgICAgICAqIE1ldGhvZCBvdmVybG9hZGluZworCisgICAgICAgICAgICAgICAgaW50IG1ldGhvZF90aGF0X2Fsc29fZXhpc3RzX2luX3RoZV9tb2RlbCgpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIDx5b3VyIG5ldyBjb2RlPgorICAgICAgICAgICAgICAgIH0KKworICAgICAgICBZb3UgY2FuIHNpbXBseSByZXdyaXRlIGEgbWV0aG9kIHRoYXQgaXMgYWxzbyBkZWZpbmVkIGluIHRoZSBtb2RlbAorICAgICAgICBjbGFzcywgYW5kIHRodXMgY2hhbmdlIGhvdyBpdCBiZWhhdmVzLiBDb250cmFyeSB0byBvdGhlciBsYW5ndWFnZXMKKyAgICAgICAgaW4gTFBDIG1ldGhvZCBvdmVybG9hZGluZyBvbmx5IG1hdGNoZXMgdGhlIG5hbWUgb2YgdGhlIG1ldGhvZCwgc28KKyAgICAgICAgZXZlbiBieSBjaGFuZ2luZyB0aGUgYW1vdW50IGFuZCB0eXBlIG9mIHBhcmFtZXRlcnMgeW91IHdpbGwgbWFzaworICAgICAgICBvdXQgdGhlIG9yaWdpbmFsIHZlcnNpb24gb2YgdGhlIG1ldGhvZC4gWW91IGNhbiBldmVuIGFwcGx5IG90aGVyCisgICAgICAgIG1vZGlmaWVycyB0byBpdCBhcyB0aGUgb3JpZ2luYWwuCisKKyAgICAgICAgKiBDYWxsaW5nIGluaGVyaXRlZCBtZXRob2RzCisKKyAgICAgICAgICAgICAgICBpbnQgbWV0aG9kX3RoYXRfYWxzb19leGlzdHNfaW5fdGhlX21vZGVsKCkgeworICAgICAgICAgICAgICAgICAgICAgICAgPHlvdXIgbmV3IGNvZGU+CisgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gOjptZXRob2RfdGhhdF9hbHNvX2V4aXN0c19pbl90aGVfbW9kZWwoKTsKKyAgICAgICAgICAgICAgICB9CisKKyAgICAgICAgWW91IGNhbiBhZGQgdG8gdGhlIGJlaGF2aW91ciBvZiBhIG1ldGhvZCBieSByZWRlZmluaW5nIGl0LAorICAgICAgICB0aGVuIGNhbGxpbmcgaXQgZnJvbSB3aXRoaW4geW91ciBuZXcgdmVyc2lvbi4gWW91IGNhbiBhY3R1YWxseQorICAgICAgICBjYWxsIGluaGVyaXRlZCBtZXRob2RzIGZyb20gYW55d2hlcmUgaW4geW91ciBjb2RlLiBUaGUgZG91YmxlCisgICAgICAgIGNvbG9uIHRlbGxzIHRoZSBjb21waWxlciB5b3UgYXJlIGxvb2tpbmcgZm9yIHRoZSBpbmhlcml0ZWQKKyAgICAgICAgdmFyaWFudC4KKworRVhBTVBMRQorCisgICAgICAgIExldCdzIGltYWdpbmUgdmVyeSBzaW1wbGUgZm9vZCBpbiBhIGZpbGUgY2FsbGVkICIvdGhlL2Zvb2QuYyI6CisKKyAgICAgICAgICAgICAgICAvLyB1bmxlc3MgIm1vZGlmaWVkIiB2YXJpYWJsZXMgYXJlIGFjY2Vzc2libGUgYnkgaW5oZXJpdG9ycworICAgICAgICAgICAgICAgIGludCB2aXRhbWlucyA9IDEwOworCisgICAgICAgICAgICAgICAgLy8gcGxlYXNlIG92ZXJsb2FkIHRoaXMgZnVuY3Rpb24gd2l0aCB5b3VyIG93biBkZXNjcmlwdGlvbgorICAgICAgICAgICAgICAgIHB1YmxpYyBzaG9ydCgpIHsgcmV0dXJuICJzb21ldGhpbmcgZWRpYmxlIjsgfQorCisgICAgICAgICAgICAgICAgLy8gbGV0J3MgZG8gc29tZSBzdGFuZGFyZCBhY3Rpb24gZm9yIGZvb2QKKyAgICAgICAgICAgICAgICBwdWJsaWMgY29uc3VtZSgpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIHRoaXNfcGxheWVyKCkgLT4gbm91cmlzaCh2aXRhbWlucyk7CisgICAgICAgICAgICAgICAgICAgICAgICBkZXN0cnVjdCh0aGlzX29iamVjdCgpKTsKKyAgICAgICAgICAgICAgICB9CisKKyAgICAgICAgQW5kIG5vdyBzb21lb25lIGVsc2UgZGVjaWRlcyB0byBkbyBzb21lIGl0YWxpYW4gY29va2luZyBpbiBhCisgICAgICAgIGZpbGUgY2FsbGVkICIvdGhlL2Z1c2lsbGkuYyIKKworICAgICAgICAgICAgICAgIGluaGVyaXQgIi90aGUvZm9vZCI7CisKKyAgICAgICAgICAgICAgICAvLyB3ZSBoYXZlIG91ciBvd24gdmFyaWFibGVzLgorICAgICAgICAgICAgICAgIGludCBnb25lX2NvbGQgPSAwOworCisgICAgICAgICAgICAgICAgLy8gYW5kIHdlIHNpbXBseSByZWRlZmluZSB0aGUgc2hvcnQoKSBmdW5jdGlvbiB0byByZXBsYWNlIGl0CisgICAgICAgICAgICAgICAgcHVibGljIHNob3J0KCkgeworICAgICAgICAgICAgICAgICAgICAvLyBkZXNjcmlwdGlvbiBjaGFuZ2VzIGRlcGVuZGluZyBvbiBnb25lX2NvbGQKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuICJhICIrKCBnb25lX2NvbGQgPyAic3RpbmtpbmciIDogInN0ZWFtaW5nIiApCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgKyIgcGxhdGUgb2YgZnVzaWxsaSI7CisgICAgICAgICAgICAgICAgfQorCisgICAgICAgICAgICAgICAgLy8gd2UgaGF2ZSBhIG5ldyBmdW5jdGlvbiB0byBtYWtlIGZvb2QgZ28gY29sZAorICAgICAgICAgICAgICAgIHByaXZhdGUgZGV0ZXJpb3JhdGUoKSB7CisgICAgICAgICAgICAgICAgICAgIGdvbmVfY29sZCA9IDE7CisgICAgICAgICAgICAgICAgICAgIHdyaXRlKCJUaGUgZnVzaWxsaSBoYXZlIGdvbmUgY29sZC5cbiIpOworICAgICAgICAgICAgICAgIH0KKworICAgICAgICAgICAgICAgIC8vIGFzc3VtZSB0aGlzIGdldHMgY2FsbGVkIGF0IGNyZWF0aW9uCisgICAgICAgICAgICAgICAgcHJpdmF0ZSBjcmVhdGUoKSB7CisgICAgICAgICAgICAgICAgICAgIC8vIHdlIGNhbiBhY2Nlc3MgdGhlIHZhcmlhYmxlIHdlIGluaGVyaXRlZCBmcm9tIGZvb2QuYworICAgICAgICAgICAgICAgICAgICB2aXRhbWlucyA9IDQ0OyAgICAgICAgICAgLy8gdG9tYXRvIGhhcyBwbGVudHkgb2Ygdml0YW1pbnMKKworICAgICAgICAgICAgICAgICAgICAvLyBnbyBjb2xkIGluIDUgbWludXRlcworICAgICAgICAgICAgICAgICAgICBjYWxsX291dCggIydkZXRlcmlvcmF0ZSwgNSAqIDYwICk7CisgICAgICAgICAgICAgICAgfQorCisgICAgICAgICAgICAgICAgLy8gd2UgY2FuIG92ZXJsb2FkIHRoZSBmdW5jdGlvbiBldmVuIHdpdGggbmV3IHBhcmFtZXRlcnMKKyAgICAgICAgICAgICAgICBwdWJsaWMgY29uc3VtZShob3cpIHsKKyAgICAgICAgICAgICAgICAgICAgLy8gZmV0Y2ggdGhlIG5hbWUgb2YgdGhlIHBlcnNvbiwgb3IgdXNlICJTb21lb25lIgorICAgICAgICAgICAgICAgICAgICBzdHJpbmcgbmFtZSA9IHRoaXNfcGxheWVyKCkgLT4gbmFtZSgpIHx8ICJTb21lb25lIjsKKworICAgICAgICAgICAgICAgICAgICBpZiAoIWdvbmVfY29sZCkgeworICAgICAgICAgICAgICAgICAgICAgICAgd3JpdGUoIllvdSBlbmpveSBhIGRlbGljaW91cyBwbGF0ZSBvZiBmdXNpbGxpLlxuIik7CisgICAgICAgICAgICAgICAgICAgICAgICBzYXkobmFtZSArIiBndXp6bGVzIGEgcGxhdGUgb2YgaG90IGZ1c2lsbGkuXG4iKTsKKyAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICBlbHNlIGlmIChob3cgPT0gInF1aWNrbHkiKSB7CisgICAgICAgICAgICAgICAgICAgICAgICB3cml0ZSgiWW91IGVhdCB0aGUgZnVzaWxsaSBzbyBxdWlja2x5IHlvdSAiCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiaGFyZGx5IG5vdGljZSB0aGV5IGhhdmUgZ29uZSBjb2xkLlxuIik7CisgICAgICAgICAgICAgICAgICAgICAgICBzYXkobmFtZSArIiB3b2xmcyBkb3duIGEgcGxhdGUgb2YgY29sZCBmdXNpbGxpLlxuIik7CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgZWxzZSB7CisgICAgICAgICAgICAgICAgICAgICAgICB3cml0ZSgiWW91IGV5ZSB0aGUgcGxhdGUgYW5kIHdvbmRlciBpZiB5b3UgIgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInJlYWxseSBmZWVsIGxpa2UgZWF0aW5nIGNvbGQgZnVzaWxsaS5cbiIpOworICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuOyAvLyBkb24ndCBlYXQKKyAgICAgICAgICAgICAgICAgICAgfQorCisgICAgICAgICAgICAgICAgICAgIC8vIGFuZCBoZXJlIGNvbWVzIHRoZSBtb3N0IGltcG9ydGFudCBwYXJ0OgorICAgICAgICAgICAgICAgICAgICAvLyB3ZSBleGVjdXRlIGNvbnN1bWUoKSBmcm9tIGZvb2QuYywgc28gd2UKKyAgICAgICAgICAgICAgICAgICAgLy8gYWN0dWFsbHkgaW5oZXJpdCBpdHMgYmVoYXZpb3VyLgorICAgICAgICAgICAgICAgICAgICA6OmNvbnN1bWUoKTsKKyAgICAgICAgICAgICAgICB9CisKK0FEVkFOQ0VEIFVTQUdFCisKKyAgICAgICAgKiBEb2luZyBtdWx0aXBsZSBpbmhlcml0YW5jZQorCisgICAgICAgIFdoaWxlIHRoZSBKYXZhKFRNKSBsYW5ndWFnZSBoYXMgc28tY2FsbGVkIGludGVyZmFjZXMgYXMgYSBrbHVkZ2UsCisgICAgICAgIExQQyBkb2Vzbid0IG5lZWQgdGhlbSBhcyBpdCBzdXBwb3J0cyByZWFsIG11bHRpcGxlIGluaGVyaXRhbmNlLgorICAgICAgICBBIHZlcnkgcG93ZXJmdWwgZmVhdHVyZSwgaXQgbGV0cyB5b3UgY29tYmluZSB0aGUgYmVoYXZpb3VyIG9mCisgICAgICAgIHNldmVyYWwgY2xhc3NlcyBpbnRvIGEgbmV3IG9uZS4gU2ltcGx5IHB1dCBzZXZlcmFsIGxpbmVzIG9mCisgICAgICAgIGluaGVyaXQgZGVjbGFyYXRpb25zIHVuZGVybmVhdGggZWFjaCBvdGhlci4gSWYgeW91IGhhdmUgbmFtZQorICAgICAgICBjb2xsaXNpb25zIGluIHRoZSBuYW1lc3BhY2Ugb2YgaW5oZXJpdGVkIG1ldGhvZHMsIHlvdSB3aWxsIGhhdmUKKyAgICAgICAgdG8gYWRkcmVzcyB0aGVtIGV4cGxpY2l0ZWx5IHdpdGggYSAidGhlL2ZpbGUiOjptZXRob2QoYXJncykgc3ludGF4LgorCisgICAgICAgICogV2lsZGNhcmRlZCBtdWx0aXBsZSBpbmhlcml0YW5jZQorCisgICAgICAgIExETVVEIDMuMi4xQDExNyBpbnRyb2R1Y2VzIGFuIGFkdmFuY2VkIHZvb2RvbyBzeW50YXggd2hpY2ggYWxsb3dzCisgICAgICAgIHlvdSB0byBjYWxsIHNldmVyYWwgbWV0aG9kcyBpbiBtb2RlbCBjbGFzc2VzIGF0IG9uY2UsIGJ1dCBmb3Igc29tZQorICAgICAgICB0ZWNobmljYWwgcmVhc29ucyBpdCBjYW5ub3QgcGFzcyBhbnkgYXJndW1lbnRzLiBUaGlzIHdvcmtzIGJ5CisgICAgICAgIHdyaXRpbmcgYSBnbG9iIHR5cGUgbWF0Y2ggKCcqJyBhbmQgJz8nIHdpbGRjYXJkcykgaW50byB0aGUgc3RyaW5nCisgICAgICAgIGluIGZyb250IG9mIHRoZSBkb3VibGUgY29sb24sIGFzIGluICIqIjo6Y3JlYXRlKCkuIEkgd291bGRuJ3QKKyAgICAgICAgcmVjb21tZW5kIHlvdSB0byB1c2UgdGhpcywgaXQncyBiZXR0ZXIgdG8gYmUgY2xlYXJseSBjb25zY2lvdXMgb2YKKyAgICAgICAgd2hhdCB5b3UgaW5oZXJpdCBhbmQgZG8uIEJ1dCBpZiB5b3UncmUgZGVzcGVyYXRlLCB0aGVyZSB5b3UgZ28uCisKK0FEVkFOQ0VEIEVYQU1QTEUKKworICAgICAgICAgIGluaGVyaXQgImZvbyI7CisgICAgICAgICAgaW5oZXJpdCAiYmFyIjsKKyAgICAgICAgICBpbmhlcml0ICJiYXoiOworICAgICAgICAgIGluaGVyaXQgImJhbGwiOworCisgICAgICAgICAgcmVzZXQoKSB7CisgICAgICAgICAgICAgICAgImJhPyI6OnJlc2V0KCk7CisgICAgICAgICAgICAgICAgLy8gY2FsbHMgYmFyOjpyZXNldCgpIGFuZCBiYXo6OnJlc2V0KCkKKworICAgICAgICAgICAgICAgICJiYSoiOjpyZXNldCgpOworICAgICAgICAgICAgICAgIC8vIGNhbGxzIGJhcjo6cmVzZXQoKSwgYmF6OjpyZXNldCgpIGFuZCBiYWxsOjpyZXNldCgpCisKKyAgICAgICAgICAgICAgICAiKiI6OnJlc2V0KCk7CisgICAgICAgICAgICAgICAgLy8gY2FsbHMgZXZlcnkgaW5oZXJpdGVkIHJlc2V0KCkgZnVuY3Rpb24uCisKKyAgICAgICAgICAgICAgICAiYmFsbCI6OnJlam9pY2UoIkxpc3RlbiB0byBpdGFsZWN0cm8gdG9kYXkhIik7CisgICAgICAgICAgICAgICAgLy8gb25seSBleHBsaWNpdCBmaWxlbmFtZSBvZiBtb2RlbCBjbGFzcyBhbGxvd3MKKyAgICAgICAgICAgICAgICAvLyBwYXNzaW5nIGFyZ3VtZW50cyB0byB0aGUgaW5oZXJpdGVkIG1ldGhvZAorICAgICAgICAgIH0KKworQVVUSE9SCisgICAgICAgIHN5bWx5blggb2YgUFNZQyBhbmQgTmVtZXNpcywgd2l0aCBhIGxpdHRsZSBoZWxwIGZyb20gU29tZW9uZQorCitTRUUgQUxTTworICAgICAgICBmdW5jdGlvbnMoTFBDKSwgaW5pdGlhbGlzYXRpb24oTFBDKSwgbW9kaWZpZXJzKExQQyksIHByYWdtYShMUEMpLAorICAgICAgICBvdmVybG9hZGluZyhDKQorICAgICAgICBmdW5jdGlvbl9leGlzdHMoZWZ1biksIGZ1bmN0aW9ubGlzdChlZnVuKSwgaW5oZXJpdF9saXN0KGVmdW4pLAorICAgICAgICBzeW1ib2xfdmFyaWFibGUoZWZ1biksIHZhcmlhYmxlX2V4aXN0cyhlZnVuKSwgdmFyaWFibGVfbGlzdChlZnVuKS4KZGlmZiAtLWdpdCBhL2RvYy9jb25jZXB0cy9pbnRlcm11ZCBiL2RvYy9jb25jZXB0cy9pbnRlcm11ZApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5hYmUyYjRmCi0tLSAvZGV2L251bGwKKysrIGIvZG9jL2NvbmNlcHRzL2ludGVybXVkCkBAIC0wLDAgKzEsMjI0IEBACitDT05DRVBUCisgICAgICAgIGludGVybXVkCisKK0RFU0NSSVBUSU9OCisgICAgICAgIFRoZXJlIGFyZSBzZXZlcmFsIGludGVybXVkIHByb3RvY29scyB3aGljaCBkZWZpbmUgaG93IChwbGF5ZXJzIG9uKQorICAgICAgICBkaWZmZXJlbnQgbXVkcyBjYW4gY29tbXVuaWNhdGUgd2l0aCBlYWNoIG90aGVyLiBUaGUgcHJvdG9jb2xzIGFyZQorICAgICAgICBpbiBnZW5lcmFsIG5vdCBtdWRkcml2ZXIgb3IgbXVkbGliIGRlcGVuZGFudCwgdGhvdWdoIHRoZSBudW1iZXIgb2YKKyAgICAgICAgaW1wbGVtZW50YXRpb25zIGlzIGxpbWl0ZWQuCisKKyAgICAgICAgVGhpcyB0ZXh0IGlzIGFib3V0IHRoZSByYXRoZXIgb2xkIHdpZGVseSBzcHJlYWQgJ1plYmVkZWUgSW50ZXJtdWQnLAorICAgICAgICB3aGljaCBpcyBhbHNvIGNhbGxlZCAnSW50ZXJtdWQgMicgYWx0b3VnaCBpdCBkaWZmZXJzIHF1aXRlIGEgbG90CisgICAgICAgIGZyb20gdGhlIHJlYWwgSW50ZXJtdWQgMiBwcm90b2NvbC4KKworICAgICAgICBGdWxsIGluZm9ybWF0aW9uIG9uIHRoZSBuZXdlciBJbnRlcm11ZCAzIGNvdWxkIGJlIGZvdW5kIG9uIHRoZQorICAgICAgICB3ZWIgYXQgaHR0cDovL3d3dy5pbWFnaW5hcnkuY29tL3Byb3RvY29scy9pbnRlcm11ZDMuaHRtbCBzbyB0aGVyZQorICAgICAgICBpcyBubyBkaXNjdXNzaW9uIGhlcmUgLSB0aGUgZm9sbG93aW5nIGlzIGp1c3QgYWJvdXQgWmViZWRlZSBJbnRlcm11ZAorICAgICAgICAoYWthIEludGVybXVkIDIpLgorCisgICAgICAgIFplYmVkZWUgSW50ZXJtdWQgY29tbXVuaWNhdGlvbiBpcyBoYW5kbGVkIGJ5IHRoZSAvc2VjdXJlL2luZXRkCisgICAgICAgIG9iamVjdCwgb3JpZ2luYWxseSB3cml0dGVuIGJ5IE5vc3RyYWRhbXVzIGZvciBaZWJlZGVlIHdpdGggc29tZQorICAgICAgICBleHRlbnNpb25zIHRoYXQgYXJlIGRpc2N1c3NlZCBpbiBpbmV0ZChDKS4gSG93IHRoZSBkYXRhIGlzCisgICAgICAgIGFjdHVhbGx5IHNlbnQgYWNyb3NzIHRoZSBuZXR3b3JrIGlzIGRlc2NyaWJlZCBpbiBpbnRlcm11ZC5iYXNpYyhDKS4KKworU0VSVklDRVMKKyAgICAgICAgTm90ZSB0aGF0IHRoZSBmaWVsZHMgIk5BTUUiIGFuZCAiVURQX1BPUlQiIHNob3VsZCBiZSBwcmVzZW50IGluCisgICAgICAgIGV2ZXJ5IG1lc3NhZ2UuIFZlcnkgY29tbW9uIGFyZSB0aGUgZmllbGRzICJJRCIgKHVzZWQgd2hlbmV2ZXIgYW4KKyAgICAgICAgcmVwbHkgaXMgZXhwZWN0ZWQpIGFuZCAiU05EIiAodGhlIHNlbmRlcjogaGUgc2hvdWxkIHJlY2VpdmUgdGhlCisgICAgICAgIHJlcGx5KS4gVGhlc2UgZmllbGRzIHdpbGwgbm90IGJlIG1lbnRpb25lZCBpbiB0aGUgbGlzdCBiZWxvdy4KKworICAgICAgICBSZXF1ZXN0IHR5cGVzIGFyZSBsaXN0ZWQgb24gdGhlIGxlZnRtb3N0IHJvdyAoZS5nLiAiUkVRPWNoYW5uZWwiKSwKKyAgICAgICAgYXNzb2NpYXRlZCBoZWFkZXIgYXJlIGxpc3RlZCBpbmRlbnRlZC4KKworICAgICAgICAiY2hhbm5lbCIKKyAgICAgICAgICAgIFRoZSBjaGFubmVsLXJlcXVlc3QgaXMgdXNlZCBmb3Igc2VuZGluZyBhIG1lc3NhZ2Ugb24gYW55CisgICAgICAgICAgICBjaGFubmVsLiBUaGUgIkNNRCIgZmllbGQgaXMgb3B0aW9uYWwgYW5kIG1heSBiZSBvbWl0dGVkIGZvcgorICAgICAgICAgICAgbm9ybWFsIG1lc3NhZ2VzLiBOb3RlIHRoYXQgeW91IHNob3VsZCBub3Qgc2VuZCBhbiBoaXN0b3J5IG9yCisgICAgICAgICAgICBsaXN0IHJlcXVlc3QgdG8gX2FsbF8ga25vd24gbXVkcyEKKworICAgICAgICAgICAgIkNIQU5ORUwiCisgICAgICAgICAgICAgICAgVGhlIGNoYW5uZWwgb24gd2hpY2ggYSBtZXNzYWdlIGlzIHNlbmQgKHRoZSBzdGFuZGFyZAorICAgICAgICAgICAgICAgIGNoYW5uZWxzIGFyZSAiaW50ZXJtdWQiLCAiaW50ZXJjb2RlIiwgImludGVyYWRtIiwgImQtY2hhdCIsCisgICAgICAgICAgICAgICAgImQtY29kZSIgYW5kICJkLWFkbSI7IG9uIHRoZSBkLWNoYW5uZWxzIEdlcm1hbiBpcyBzcG9rZW4pCisKKyAgICAgICAgICAgICJEQVRBIgorICAgICAgICAgICAgICAgIFRoZSBtZXNzYWdlIHRvIGJlIHNlbmQgKG5vdCB1c2VkIHdpdGggaGlzdG9yeS9saXN0IHJlcXVlc3QpCisKKyAgICAgICAgICAgICJDTUQiCisgICAgICAgICAgICAgICAgVGhlIGJvZHkgb2YgdGhpcyBoZWFkZXIgbWF5IGJlOgorICAgICAgICAgICAgICAgICIiICAgICAgICBmb3Igbm9ybWFsIGludGVybXVkIG1lc3NhZ2VzLAorICAgICAgICAgICAgICAgICJlbW90ZSIgICBpZiB0aGUgbWVzc2FnZSBpcyBhbiBlbW90ZS9nZW1vdGUsCisgICAgICAgICAgICAgICAgImhpc3RvcnkiIGZvciBhbiBoaXN0b3J5IHJlcXVlc3Q6IHRoZSBsYXN0IDIwIGxpbmVzIG9mCisgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMgY2hhbm5lbCB3aWxsIGJlIHNob3duLgorICAgICAgICAgICAgICAgICJsaXN0IiAgICB0byBsaXN0IGFsbCByZW1vdGUgdXNlcnMgbGlzdGVuaW5nIHRvIHRoaXMgY2hhbm5lbAorCisgICAgICAgICAgICAiRU1PVEUiICAgICAob3B0aW9uYWwpCisgICAgICAgICAgICAgICAgVGhlIGJvZHkgaXMgMSBpZiB0aGUgbWVzc2FnZSBpcyBhbiBlbW90ZS4KKyAgICAgICAgICAgICAgICBUaGUgYm9keSBpcyAyIGlmIHRoZSBtZXNzYWdlIGlzIGEgZ2Vtb3RlLgorCisgICAgICAgICJmaW5nZXIiCisgICAgICAgICAgICBSZXRyZWl2ZSBpbmZvcm1hdGlvbiBhYm91dCBhIHBsYXllciBvciBjcmVhdG9yIG9uIGEgcmVtb3RlIG11ZC4KKworICAgICAgICAgICAgIkRBVEEiCisgICAgICAgICAgICAgICAgVGhlIHBsYXllciBvZiB3aG9tIGluZm9ybWF0aW9uIGlzIHJlcXVlc3RlZAorCisgICAgICAgICJsb2NhdGUiCisgICAgICAgICAgICBDaGVjayB3aGV0aGVyIGEgY2VydGFpbiBwbGF5ZXIgaXMgbG9nZ2VkIG9uIGF0IGEgcmVtb3RlIG11ZC4KKyAgICAgICAgICAgIFRoaXMgcmVxdWVzdCBpcyB1c3VhbGx5IHNlbmQgdG8gYWxsIGtub3duIG11ZHMgYXQgdGhlIHNhbWUgdGltZS4KKworICAgICAgICAgICAgInVzZXIiCisgICAgICAgICAgICAgICAgTmFtZSBvZiB0aGUgcGVyc29uIHdobyByZXF1ZXN0cyB0aGUgaW5mb3JtYXRpb24uCisgICAgICAgICAgICAgICAgVGhpcyBpcyB1c2VkIGJ5IHRoZSBzZW5kaW5nIG11ZCBvbmx5IGFuZCBoYXMgdG8gYmUgaW5jbHVkZWQKKyAgICAgICAgICAgICAgICBpbiB0aGUgcmVwbHkuCisKKyAgICAgICAgICAgICJ2YnMiCisgICAgICAgICAgICAgICAgVGhlIHZlcmJvc2Ugb3B0aW9uIGhhcyBvbmx5IHR3byBwcmUtZGVmaW5lZCB2YWx1ZXM6CisgICAgICAgICAgICAgICAgMSBFdmVuIHJlcG9ydCB3aGVuIHRoZSByZXN1bHQgd2FzIG5lZ2F0aXZlCisgICAgICAgICAgICAgICAgMiBEb24ndCBkbyB0aW1lb3V0cywgYnV0IGtlZXAgd2FpdGluZworICAgICAgICAgICAgICAgIFRoaXMgaXMgdXNlZCBieSB0aGUgc2VuZGluZyBtdWQgb25seSBhbmQgaGFzIHRvIGJlIGluY2x1ZGVkCisgICAgICAgICAgICAgICAgaW4gdGhlIHJlcGx5LgorCisgICAgICAgICAgICAiZm5kIgorICAgICAgICAgICAgICAgIFRoZSBmb3VuZCBvcHRpb24gaXMgb25seSB1c2VkIGluIHRoZSByZXBseSBhbmQgaXQncyB2YWx1ZQorICAgICAgICAgICAgICAgIGlzIGVpdGhlciAxIChzdWNjZXNzKSBvciAwIChmYWlsdXJlKS4gVGhlIGFic2VuY2Ugb2YgYQorICAgICAgICAgICAgICAgIGZvdW5kIHBhcmFtZXRlciBpbmRpY2F0ZXMgZmFpbHVyZSBhcyB3ZWxsLgorCisgICAgICAgICAgICAiREFUQSIKKyAgICAgICAgICAgICAgICBUaGUgcGxheWVyIHRvIGZpbmQuCisKKyAgICAgICAgIm1hbiIKKyAgICAgICAgICAgIFJldHJlaXZlIGEgbWFudWFsIHBhZ2UgZnJvbSBhIHJlbW90ZSBtdWQuIE1hbnkgbXVkcyBkb24ndAorICAgICAgICAgICAgc3VwcG9ydCB0aGlzIGZlYXR1cmUuLi4KKworICAgICAgICAgICAgIkRBVEEiCisgICAgICAgICAgICAgICAgVGhlIG5hbWUgb2YgdGhlIHJlcXVlc3RlZCBtYW51YWwgcGFnZQorCisgICAgICAgICJtYWlsIgorICAgICAgICAgICAgQW4gZXh0ZW5zaW9uIHRvIHRoZSBzdGFuZGFyZCBwcm90b2NvbCwgYnkgQWx2aW5AU3VzaGkuIFRoaXMgaXMKKyAgICAgICAgICAgIHVzZWQgdG8gc2VuZCBtYWlscyBmcm9tIG9uZSBtdWQgdG8gYW5vdGhlci4KKworICAgICAgICAgICAgInVkcG1fc3RhdHVzIgorICAgICAgICAgICAgICAgIFRoaXMgZmllbGQgc2hvdWxkIG9ubHkgYmUgdXNlZCBpbiB0aGUgcmVwbHkgYW5kIGluZGljYXRlcworICAgICAgICAgICAgICAgIGhvdyBtYWlsIGlzIGhhbmRsZWQuIEN1cnJlbnRseSB0aGVyZSBhcmUgZm91ciBwcmUtZGVmaW5lZAorICAgICAgICAgICAgICAgIHZhbHVlcyBmb3IgdGhlIHN0YXR1cyBmaWVsZDoKKyAgICAgICAgICAgICAgICAwIHRpbWUgb3V0CisgICAgICAgICAgICAgICAgMSBkZWxpdmVyZWQgb2sKKyAgICAgICAgICAgICAgICAyIHVua25vd24gcGxheWVyCisgICAgICAgICAgICAgICAgMyBpbiBzcG9vbCAod2lsbCBiZSBkZWxpdmVyZWQgbGF0ZXIpCisKKyAgICAgICAgICAgICJ1ZHBtX3dyaXRlciIKKyAgICAgICAgICAgICAgICBOYW1lIG9mIHRoZSBwZXJzb24gd2hvIHdyb3RlIHRoaXMgbWFpbAorCisgICAgICAgICAgICAidWRwbV9zcG9vbF9uYW1lIgorICAgICAgICAgICAgICAgIFNob3VsZCBiZSByZXR1cm5lZCBhcyBzZW50LCB0aGlzIHZhbHVlIGlzIHVzZWQgdG8gcmVtb3ZlCisgICAgICAgICAgICAgICAgdGhlIG1haWwgZnJvbSB0aGUgc3Bvb2wgZGlyZWN0b3J5IGFmdGVyIGl0IGhhcyBiZWVuCisgICAgICAgICAgICAgICAgZGVsaXZlcmVkIChvciByZWZ1c2VkKQorCisgICAgICAgICAgICAidWRwbV9zdWJqZWN0IgorICAgICAgICAgICAgICAgIFN1YmplY3Qgb2YgdGhlIG1haWwgbWVzc2FnZQorCisgICAgICAgICAgICAiREFUQSIKKyAgICAgICAgICAgICAgICBUaGUgYm9keSBvZiB0aGUgbWFpbCAodGhlIGFjdHVhbCBtZXNzYWdlKQorCisgICAgICAgICJwaW5nIgorICAgICAgICAgICAgQSBwaW5nIHJlcXVlc3QgaGFzIG9ubHkgdGhlIHN0YW5kYXJkIGZpZWxkcywgdGhlIHJlcGx5IGlzCisgICAgICAgICAgICB1c3VhbGx5IGEgc2hvcnQgc3RyaW5nIGxpa2UgIiBpcyBhbGl2ZS4iCisKKyAgICAgICAgInF1ZXJ5IgorICAgICAgICAgICAgR2V0IHN0YW5kYXJkIGluZm9ybWF0aW9uIGFib3V0IGFub3RoZXIgbXVkLiBUaGlzIGlzIHRoZSBvbmx5CisgICAgICAgICAgICBjb21tYW5kIG9mIHdoaWNoIHRoZSByZXBseSBtYXkgbm90IGluY2x1ZGUgYSBsb2FkIG9mIHJ1YmJpc2gsCisgICAgICAgICAgICBidXQgc2hvdWxkIG9ubHkgaG9sZCB0aGUgcmVxdWVzdGVkIGluZm9ybWF0aW9uLCBzbyB0aGF0IGl0IGNhbgorICAgICAgICAgICAgYmUgcGFyc2VkIGJ5IHRoZSBzZXJ2ZXIuCisKKyAgICAgICAgICAgICJEQVRBIgorICAgICAgICAgICAgICAgIFRoZSBmb2xsb3dpbmcgcXVlcmllcyBhcmUgcHJldHR5IG11Y2ggc3RhbmRhcmQ6CisgICAgICAgICAgICAgICAgImNvbW1hbmRzIiBMaXN0IGFsbCBjb21tYW5kcyB0aGF0IGFyZSBzdXBwb3J0ZWQgYnkgdGhlIGluZXRkCisgICAgICAgICAgICAgICAgImVtYWlsIiAgICBUaGUgZW1haWwtYWRkcmVzcyBvZiB0aGUgbXVkIGFkbWluaXN0cmF0b3IocykKKyAgICAgICAgICAgICAgICAiaG9zdHMiICAgIEEgbGlzdGluZyBvZiBhbGwgaG9zdHMgaW4gYSBzcGVjaWFsIGZvcm1hdCBbdC5iLmQuXQorICAgICAgICAgICAgICAgICJpbmV0ZCIgICAgVGhlIHZlcnNpb24gbnVtYmVyIG9mIHRoZSBpbmV0ZCB1c2VkCisgICAgICAgICAgICAgICAgImxpc3QiICAgICBUaGUgbGlzdCBvZiBhbGwgaXRlbXMgd2hpY2ggY2FuIGJlIHF1ZXJpZWQKKyAgICAgICAgICAgICAgICAiaW5mbyIgICAgIEEgc2hvcnQgaHVtYW4tcmVhZGFibGUgc3RyaW5nIHdpdGggcHJhY3RpY2FsbHkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICJxdWVyeSIgaW5mb3JtYXRpb24KKyAgICAgICAgICAgICAgICAibXVkX3BvcnQiIFRoZSBwb3J0bnVtYmVyIHRoYXQgcGxheWVycyBjb25uZWN0IHRvIG9uIGxvZ2luCisgICAgICAgICAgICAgICAgInRpbWUiICAgICBUaGUgbG9jYWwgdGltZSBmb3IgdGhpcyBtdWQKKyAgICAgICAgICAgICAgICAidXNlcnMiICAgIEEgbGlzdCBvZiB0aGUgcGVvcGxlIHRoYXQgYXJlIGFjdGl2ZSBpbiB0aGlzIG11ZAorICAgICAgICAgICAgICAgICJ2ZXJzaW9uIiAgVGhlIHZlcnNpb24gb2YgdGhlIG11ZC1kcml2ZXIgKGFuZCBsaWJyYXJ5KQorICAgICAgICAgICAgICAgICJ3d3ciICAgICAgVGhlIFVSTCBvZiB0aGUgbXVkJ3Mgd2ViIHBhZ2UgKGUuZy4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgIGh0dHA6Ly9tdWQuc3RhY2submwvKQorCisgICAgICAgICJyZXBseSIKKyAgICAgICAgICAgIFRoaXMgcmVxdWVzdCBtZXRob2QgaXMgdXNlZCBmb3IgX2FsbF8gcmVwbGllcy4KKworICAgICAgICAgICAgIkRBVEEiCisgICAgICAgICAgICAgICAgQSBodW1hbi1yZWFkYWJsZSBzdHJpbmcsIGNvbnRhaW5pbmcgdGhlIHJlcGx5IHRvIGEgZ2l2ZW4gcXVlcnkKKworICAgICAgICAgICAgIlJDUE5UIgorICAgICAgICAgICAgICAgIFRoZSBzYW1lIG5hbWUgYXMgaW4gdGhlICJTTkQiIGZpZWxkIG9yIHRoZSBxdWVyeTsgVXN1YWxseQorICAgICAgICAgICAgICAgIHRoaXMgaXMgdGhlIG5hbWUgb2YgdGhlIHBsYXllciB3aG8gaW5pdGlhdGVkIHRoZSBxdWVyeQorCisgICAgICAgICAgICAiUVVFUlkiCisgICAgICAgICAgICAgICAgVGhpcyBmaWVsZCBpcyBvbmx5IHVzZWQgaW4gYSByZXNwb25zZSB0byBhICJxdWVyeSIgcmVxdWVzdAorICAgICAgICAgICAgICAgIGFuZCBzaG91bGQgYmUgZXF1YWwgdG8gdGhlICJEQVRBIiBmaWVsZCBvZiB0aGF0IHJlcXVlc3QKKworICAgICAgICAgICAgInZicyIKKyAgICAgICAgICAgICAgICBUaGlzIGZpZWxkIGlzIG9ubHkgdXNlZCBpbiBhIHJlc3BvbnNlIHRvIGEgImxvY2F0ZSIgcmVxdWVzdAorICAgICAgICAgICAgICAgIGFuZCBzaG91bGQgYmUgZXF1YWwgdG8gdGhlICJ2YnMiIGZpZWxkIG9mIHRoYXQgcmVxdWVzdAorCisgICAgICAgICAgICAidXNlciIKKyAgICAgICAgICAgICAgICBUaGlzIGZpZWxkIGlzIG9ubHkgdXNlZCBpbiBhIHJlc3BvbnNlIHRvIGEgImxvY2F0ZSIgcmVxdWVzdAorICAgICAgICAgICAgICAgIGFuZCBzaG91bGQgYmUgZXF1YWwgdG8gdGhlICJ1c2VyIiBmaWVsZCBvZiB0aGF0IHJlcXVlc3QKKworICAgICAgICAgICAgImZuZCIKKyAgICAgICAgICAgICAgICBUaGlzIGZpZWxkIGlzIG9ubHkgdXNlZCBpbiBhIHJlc3BvbnNlIHRvIGEgImxvY2F0ZSIgcmVxdWVzdAorICAgICAgICAgICAgICAgIGFuZCBzaG91bGQgYmUgMSBpZiB0aGUgcGxheWVyIHdhcyBsb2NhdGVkIGFuZCAwIG90aGVyd2lzZQorCisgICAgICAgICJ0ZWxsIgorICAgICAgICAgICAgU2F5IHNvbWV0aGluZyB0byBhIHBsYXllciBvbiBhbm90aGVyIG11ZC4KKworICAgICAgICAgICAgIlJDUE5UIgorICAgICAgICAgICAgICAgIE5hbWUgb2YgdGhlIHBsYXllciB0byB3aG9tIHlvdSBhcmUgdGFsa2luZworCisgICAgICAgICAgICAiREFUQSIKKyAgICAgICAgICAgICAgICBXaGF0ZXZlciB5b3Ugd2lzaCB0byBzYXkgdG8gdGhpcyBwZXJzb24KKworICAgICAgICAgICAgT3B0aW9uYWwgZW1vdGUtdG9zIGFyZSBoYW5kbGVzIGFyZSBhbHNvIGhhbmRsZWQgYXMgdGVsbHMsIHNvCisgICAgICAgICAgICBtdWRzIHdpdGhvdXQgZW1vdGUtdG8gc3VwcG9ydCBkaXNwbGF5IHRoZW0gYXMgcmVhc29uYWJsZSByZWFkYWJsZQorICAgICAgICAgICAgdGVsbCBtZXNzYWdlLgorCisgICAgICAgICAgICAiUkNQTlQiCisgICAgICAgICAgICAgICAgTmFtZSBvZiB0aGUgcGxheWVyIHRvIHdob20geW91IGFyZSB0YWxraW5nCisKKyAgICAgICAgICAgICJNRVRIT0QiCisgICAgICAgICAgICAgICAgVGhlIGJvZHkgb2YgdGhpcyBoZWFkZXIgbWF5IGJlOgorICAgICAgICAgICAgICAgICJlbW90ZSIgICBpZiB0aGUgbWVzc2FnZSBpcyBhbiBlbW90ZQorICAgICAgICAgICAgICAgICJnZW1vdGUiICBpZiB0aGUgbWVzc2FnZSBpcyBhIGdlbml0aXYgZW1vdGUKKworICAgICAgICAgICAgIkRBVEEiCisgICAgICAgICAgICAgICAgVGhlIHRleHQgdG8gYmUgZW1vdGVkIHByZXBlbmRlZCB3aXRoICIqIiBhbmQgYXBwZW5kZWQKKyAgICAgICAgICAgICAgICB3aXRoICIqICIuIElmIHlvdSBkaXNwbGF5IHRoZSBlbW90ZSB5b3UgaGF2ZSB0byBjdXQgdGhlCisgICAgICAgICAgICAgICAgc3RhcnMgb2ZmLiBNdWRzIHRoYXQgZG8gbm90IHByb2Nlc3MgZW1vdGUtdG9zIGRpc3BsYXkgdGhlCisgICAgICAgICAgICAgICAgZW1vdGUgYXMgdGVsbCBtZXNzYWdlIHdpdGggdGhlIHN0YXJzIGFzIGluZGljYXRpb24gb2YKKyAgICAgICAgICAgICAgICB0aGUgbWVzc2FnZSdzIGVtb3RlIG1lYW5pbmcuCisKKyAgICAgICAgIndobyIKKyAgICAgICAgICAgIExpc3QgdGhlIHBlb3BsZSB0aGF0IGFyZSBhY3RpdmUgb24gYSByZW1vdGUgbXVkLiBUaGUgYW53ZXIKKyAgICAgICAgICAgIHVzdWFsbHkgY29udGFpbnMgc29tZSBhY3RpdmUgaW5mb3JtYXRpb24gYWJvdXQgdGhlIHBsYXllcnMsCisgICAgICAgICAgICBsaWtlIHRpdGxlcywgbGV2ZWxzIG9yIGFnZS4KKworICAgICAgICAgICAgIkRBVEEiCisgICAgICAgICAgICAgICAgTm90IHN1cHBvcnRlZCBieSBtYW55IG11ZHMuIEludHJvZHVjZWQgQXVndXN0IDE5OTcuCisgICAgICAgICAgICAgICAgQWRkaXRpb25hbCBzd2l0Y2goZXMpIChibGFuYyBzZXBhcmF0ZWQpIHRoYXQgY2hhbmdlIHRoZQorICAgICAgICAgICAgICAgIGFwcGVhcmVuY2Ugb2YgdGhlIHJlc3VsdGluZyBsaXN0LiBUaGUgc3dpdGNoZXMgbm9ybWFsbHkKKyAgICAgICAgICAgICAgICByZXNlbWJsZSB0aGUgc3dpdGNoZXMgdXNlZCBpbnNpZGUgb2YgdGhhdCBtdWQgZm9yIHRoZSAnd2hvJworICAgICAgICAgICAgICAgIGNvbW1hbmQuICBUeXBpY2FsIHZhbHVlcyBpbmNsdWRlOgorICAgICAgICAgICAgICAgICJzaG9ydCIgInMiICItc2hvcnQiICItcyIgImt1cnoiOgorICAgICAgICAgICAgICAgICAgICBSZXR1cm4gYSBjb25jaXNlIGxpc3RpbmcuCisgICAgICAgICAgICAgICAgImFscGhhIiAiYSIgImFscGhhYmV0aXNjaCIgIi1hbHBoYSIgIi1hIgorICAgICAgICAgICAgICAgICAgICBTb3J0IHRoZSBwbGF5ZXJzIGFscGhhYmV0aWNhbGx5LgorCitBVVRIT1IKKyAgICAgICAgSW5mb3JtYXRpb24gdGFrZW4gZnJvbSBPdXRlcnNwYWNlcyBkb2N1bWVudGF0aW9uIHRvIGJlIGZvdW5kCisgICAgICAgIG9uIGh0dHA6Ly9tdWQuc3RhY2submwvaW50ZXJtdWQvCisKK1NFRSBBTFNPCisgICAgICAgIGluZXRkKEMpLCBpbnRlcm11ZC5iYXNpYyhDKSwgaW1wKEMpCmRpZmYgLS1naXQgYS9kb2MvY29uY2VwdHMvaW50ZXJtdWQuYmFzaWMgYi9kb2MvY29uY2VwdHMvaW50ZXJtdWQuYmFzaWMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOTAxOTY3ZgotLS0gL2Rldi9udWxsCisrKyBiL2RvYy9jb25jZXB0cy9pbnRlcm11ZC5iYXNpYwpAQCAtMCwwICsxLDE1MSBAQAorQ09OQ0VQVAorICAgICAgICBpbnRlcm11ZC5iYXNpYworCitERVNDUklQVElPTgorICAgICAgICBIZXJlIGlzIGhvdyBpbnRlcm11ZCBkYXRhIGlzIHNlbnQgYWNyb3NzIHRoZSBpbnRlcm5ldCAtIHNwZWNpZmljCisgICAgICAgIGZvciBaZWJlZGVlIEludGVybXVkIChha2EgSW50ZXJtdWQgMikuCisKK0FEVkFOQ0VEIFBST1RPQ09MCisgICAgICAgIFRoaXMgZmlsZSB3YXMgb3JpZ2luYWxseSB3cml0dGVuIGFzIGEgYnJpZWYgb3V0bGluZSBvZiB0aGUgaW50ZXJtdWQKKyAgICAgICAgcHJvdG9jb2wgZm9yIHVzZSBieSBkZXZlbG9wZXJzIGludGVyZXN0ZWQgaW4gaW5jb3JwZXJhdGluZyBzaW1pbGFyLAorICAgICAgICBjb21wYXRpYmxlIGludGVybXVkIHByb3RvY29scyBpbnRvIHRoZWlyIG93biBtdWQgc3lzdGVtcy4gSXQgaXMKKyAgICAgICAgaW5jbHVkZWQgaGVyZSBhcyBpdCBwcm92aWRlcyBhIG11Y2ggbW9yZSBkZXRhaWxlZCBkZXNjcmlwdGlvbiBvZiB0aGUKKyAgICAgICAgaW50ZXJtdWQgcHJvdG9jb2wgdGhhbiB0aGF0IHByb3ZpZGVkIGJ5IHRoZSBvcmlnaW5hbCBQUk9UT0NPTCBmaWxlLAorICAgICAgICBhbmQgaGVuY2UgbWF5IGJlIG9mIHVzZSB0byBMcE11ZCBkZXZlbG9wZXJzLiAKKworUEFDS0VUIFBST1RPQ09MIC8gRk9STUFUCisgICAgICAgIEFsbCBpbmZvcm1hdGlvbiBpcyB0cmFuc2ZlcnJlZCBhcyBhIHN0cmluZyB2aWEgYSBVRFAgcG9ydCAoZWFjaCBtdWQKKyAgICAgICAgaGFzIDEgc2VuZCBhbmQgMSByZWNlaXZlIHBvcnQpLiBUaGlzIGtpbmRvZiB0cmFuc2ZlciBpcyBpbmhlcmVudGx5CisgICAgICAgIHVucmVsaWFibGUsIGJ1dCBpdCdzIGZhc3QgYW5kIGRvZXNuJ3QgdXNlIHVwIGZpbGUgZGVzY3JpcHRvcnMuCisgICAgICAgIFRoZSBmb3JtYXQgb2YgdGhlIHN0cmluZ3MgKHBhY2tldHMpIGlzIGFzIGZvbGxvd3M6IAorCisgICAgICAgICAgIGhlYWRlcjE6Ym9keTF8aGVhZGVyTjpib2R5TnxEQVRBOmJvZHktZGF0YQorCisgICAgICAgIEluIG90aGVyIHdvcmRzLCBhIGhlYWRlciBuYW1lLCBmb2xsb3dlZCBieSBhIDogYW5kIHRoZW4gdGhlIGRhdGEKKyAgICAgICAgYXNzb2NpYXRlZCB3aXRoIHRoaXMgaGVhZGVyLiBFYWNoIGhlYWRlci9ib2R5IHBhaXIgaXMgc2VwYXJhdGVkIGJ5CisgICAgICAgIHRoZSB8IGNoYXJhY3Rlci4gVGhpcyBtZWFucyB0aGF0IGhlYWRlcnMgYW5kIHRoZWlyIGJvZHkgY2Fubm90CisgICAgICAgIGNvbnRhaW4gdGhlIHwgY2hhcmFjdGVyLiBZb3Ugc2hvdWxkIGNoZWNrIGZvciB0aGlzIGluIG91dGdvaW5nCisgICAgICAgIHBhY2tldHMgdG8gYXZpb2QgZGVjb2RpbmcgZXJyb3JzIGF0IHRoZSByZWNpZXZpbmcgZW5kLiBUaGUgZXhjZXB0aW9uCisgICAgICAgIHRvIHRoaXMgaXMgdGhlIERBVEEgZmllbGQuIElmIGl0IGlzIHByZXNlbnQsIGl0IGlzIEFMV0FZUyBwb3NpdGlvbmVkCisgICAgICAgIGF0IHRoZSBlbmQgb2YgdGhlIHBhY2tldC4gT25jZSBhIERBVEEgaGVhZGVyIGlzIGZvdW5kLCBldmVyeXRoaW5nCisgICAgICAgIGZvbGxvd2luZyBpdCBpcyBpbnRlcnByZXRlZCBhcyB0aGUgYm9keSBvZiB0aGUgREFUQSBmaWVsZC4gVGhpcworICAgICAgICBtZWFucyBpdCBjYW4gY29udGFpbiBzcGVjaWFsIGNoYXJhY3RlcnMgd2l0aG91dCBlcnJvciBhbmQgaXQgaXMKKyAgICAgICAgdXNlZCB0byBjYXJyeSB0aGUgbWFpbiBib2R5IG9yIGRhdGEgb2YgYWxsIHBhY2tldHMuIAorCisgICAgICAgIEJ5IGNvbnZlbnRpb24sIHByZWRlZmluZWQgc3lzdGVtIGZpZWxkcyB3aWxsIHVzZSBjYXBpdGFsIGxldHRlcnMgZm9yCisgICAgICAgIGZpZWxkIGhlYWRlcnMgYW5kIGN1c3RvbSBoZWFkZXJzIHVzZWQgYnkgc3BlY2lmaWMgYXBwbGljYXRpb25zIHdpbGwKKyAgICAgICAgdXNlIGxvd2VyY2FzZSBuYW1lcyB0byBhdm9pZCBjbGFzaGVzLiBUaGUgZGVmaW5lZCBzeXN0ZW0gZmllbGRzIGFyZQorICAgICAgICBnZW5lcmFsbHkgcmVmZXJlZCB0byBieSBhIHNldCBvZiBtYWNyb3Mgd2hpY2ggYXJlIGRlZmluZWQgaW4gYQorICAgICAgICBjb21tb24gaGVhZGVyIGZpbGUgZm9yIGNsYXJpdHkuIAorCisgICAgICAgIFRoZXJlIGlzIG9uZSBleGNlcHRpb24gdG8gdGhpcyBoZWFkZXIgZm9ybWF0OyBJZiB0aGUgZGF0YSBpcyB0b28KKyAgICAgICAgbGFyZ2UgdG8gYmUgdHJhbnNtaXR0ZWQgaW4gb25lIHNpbmdsZSBwYWNrZXQsIGl0IHdpbGwgYmUgc3BsaXQgaW50bworICAgICAgICBwYWNrZXRzIG9mIGNvbnZlbmllbnQgc2l6ZSwgZWFjaCB3aXRoIGEgc3BlY2lhbCB1bmlxdWUgcGFja2V0IGhlYWRlcgorICAgICAgICB0byBlbmFibGUgdGhlbSB0byBiZSByZWFzc2VtYmxlZCBhdCB0aGUgcmVjZWl2aW5nIGVuZC4gVGhlc2UKKyAgICAgICAgaGVhZGVycyBhcmUgb2YgdGhlIGZvcm1hdDogCisKKyAgICAgICAgICBQS1Q6bXVkbmFtZTpwYWNrZXQtaWQ6cGFja2V0LW51bWJlci90b3RhbC1wYWNrZXRzfHJlc3Qtb2YtcGFja2V0CisKKyAgICAgICAgSW4gdGhpcyBjYXNlLCB0aGUgbXVkbmFtZSBhbmQgcGFja2V0LWlkIGNvbWJpbmUgdG8gZm9ybSBhIHVuaXF1ZSBpZAorICAgICAgICBmb3IgdGhlIHBhY2tldC4gVGhlIHBhY2tldC1udW1iZXIgYW5kIHRvdGFsLXBhY2tldHMgaW5mb3JtYXRpb24gaXMKKyAgICAgICAgdXNlZCB0byBkZXRlcm1pbmUgd2hlbiBhbGwgYnVmZmVyZWQgcGFja2V0cyBoYXZlIGJlZW4gcmVjZWl2ZWQuIFRoZQorICAgICAgICByZXN0LW9mLXBhY2tldCBwYXJ0IGlzIG5vdCBwYXJzZWQsIGJ1dCBpcyBzdG9yZWQgd2hpbGUgdGhlIHJlY2VpdmVyCisgICAgICAgIGF3YWl0cyB0aGUgb3RoZXIgcGFydHMgb2YgdGhlIHBhY2tldC4gV2hlbi9pZiBhbGwgcGFydHMgaGF2ZSBiZWVuCisgICAgICAgIHJlY2VpdmVkIHRoZXkgYXJlIGNvbmNhdGVuYXRlZCBhbmQgZGVjb2RlZCBhcyBhIG5vcm1hbCBwYWNrZXQuIAorCitQQUNLRVQgRU5DT0RJTkcgLyBERUNPRElORworICAgICAgICBPbmx5IDIgZ2VuZXJpYyBkYXRhIHR5cGVzIGFyZSBmdWxseSBzdXBvcnRlZCB3aXRoaW4gdGhlIGluZXRkIGNvZGUKKyAgICAgICAgaXRzZWxmIChuYW1lbHkgc3RyaW5ncyBhbmQgaW50ZWdlcnMpLCB0aG91Z2ggb3RoZXJzIGNhbiBlYXNpbHkgYmUKKyAgICAgICAgdXNlZCBieSBjb252ZXJ0aW5nIHRoZW0gdG8gb25lIG9mIHRoZSBzdXBwb3J0ZWQgZGF0YSB0eXBlcyBiZWZvcmUKKyAgICAgICAgdHJhbnNmZXIgYW5kIGNvbnZlcnRpbmcgYmFjayBhZ2FpbiBpbiByZWNlaXB0LiBUaGUgTHBNdWQgIm9iamVjdCIKKyAgICAgICAgZGF0YSB0eXBlIGlzIGNvbnZlcnRlZCB0byBhIHN0cmluZyBhdXRvbWF0aWNhbGx5IGJ5IHRoZSBpbmV0ZCBvbgorICAgICAgICBlbmNvZGluZywgYnV0IG5vIHN1Y2ggY29udmVyc2lvbiBpcyBjYXJyaWVkIG91dCBvbiBkZWNvZGluZy4gCisKKyAgICAgICAgT24gZW5jb2RpbmcgaW50ZWdlcnMgYXJlIHNpbXBseSBjb252ZXJ0ZWQgdG8gYSBjb3JyZXNwb25kaW5nIHN0cmluZy4KKyAgICAgICAgU3RyaW5ncyBhcmUgbGVmdCB1bnRvdWNoZWQgYXMgbG9uZyBhcyB0aGVyZSBpcyBubyBhbWJpZ3VpdHkgYXMgdG8KKyAgICAgICAgd2V0aGVyIHRoZXkgc2hvdWxkIGJlIGRlY29kZWQgYXMgYSBzdHJpbmcgb3IgYW4gaW50ZWdlci4gSW4gdGhpcworICAgICAgICBjYXNlIG9mIGFtYmlndWl0eSwgdGhlIHN0cmluZyBpcyBwcmVwZW5kZWQgd2l0aCBhICQgY2hhcmFjdGVyLiBJZgorICAgICAgICB0aGUgZmlyc3QgY2hhcmFjdGVyIG9mIGEgc3RyaW5nIGlzIHRoZSAkIGNoYXJhY3RlciwgaXQgaXMgZXNjYXBlZAorICAgICAgICBieSBwcmVwZW5kaW5nIGFub3RoZXIgJCBjaGFyYWN0ZXIuIE9uIGRlY29kaW5nLCBhbnkgc3RyaW5nIHdpdGggYSAkCisgICAgICAgIGFzIGl0cyBmaXJzdCBjaGFyYWN0ZXIgd2lsbCBoYXZlIGl0IHJlbW92ZWQgYW5kIHdpbGwgdGhlbiBiZSB0cmVhdGVkCisgICAgICAgIGFzIGEgc3RyaW5nLiBBbnkgcmVtYWluaW5nIHN0cmluZ3MgdGhhdCBjYW4gYmUgY29udmVydGVkIHRvIGFuCisgICAgICAgIGludGVnZXIgYW5kIHRoZW4gYmFjayB0byBhIHN0cmluZyB3aXRoIG5vIGxvc3Mgb2YgaW5mb3JtYXRpb24gYXJlCisgICAgICAgIGNvbnNpZGVyZWQgdG8gYmUgaW50ZWdlcnMuIEFueSByZW1haW5pbmcgc3RyaW5ncyBhcmUgdHJlYXRlZCBhcworICAgICAgICBzdWNoIGFuZCBhcmUgbGVmdCB1bmFsdGVyZWQuIAorCitERUZJTkVEIFNZU1RFTSBIRUFERVJTCisgICAgICAgICJSQ1BOVCIgKFJFQ0lQSUVOVCkKKyAgICAgICAgICAgIFRoZSBib2R5IG9mIHRoaXMgZmllbGQgc2hvdWxkIGNvbnRpYWluIHRoZSByZWNpcGllbnQgdGhlIG1lc3NhZ2UKKyAgICAgICAgICAgIGlzIHRvIGJlIHNlbnQgdG8gaWYgYXBwbGljYWJsZS4gCisgICAgICAgICJSRVEiIChSRVFVRVNUKQorICAgICAgICAgICAgVGhlIG5hbWUgb2YgdGhlIGludGVybXVkIHJlcXVlc3QgdGhhdCBpcyBiZWluZyBtYWRlIG9mIHRoZQorICAgICAgICAgICAgcmVjZWl2aW5nIG11ZC4gU3RhbmRhcmQgcmVxdWVzdHMgdGhhdCBzaG91bGQgYmUgc3VwcG9ydGVkIGJ5CisgICAgICAgICAgICBhbGwgc3lzdGVtcyBhcmUgInBpbmciIChQSU5HKSwgInF1ZXJ5IiAoUVVFUlkpLCBhbmQgInJlcGx5IgorICAgICAgICAgICAgKFJFUExZKS4gVGhlIFBJTkcgcmVxdWVzdCBpcyB1c2VkIHRvIGRldGVybWluZSB3ZXRoZXIgb3Igbm90IGEKKyAgICAgICAgICAgIG11ZCBpcyBhY3RpdmUuIFRoZSBRVUVSWSByZXF1ZXN0IGlzIHVzZWQgdG8gcXVlcnkgYSByZW1vdGUgbXVkCisgICAgICAgICAgICBmb3IgaW5mb3JtYXRpb24gYWJvdXQgaXRzZWxmIChsb29rIGF0IHRoZSB1ZHAvcXVlcnkgbW9kdWxlIGZvcgorICAgICAgICAgICAgZGV0YWlscyBvZiB3aGF0IGluZm9ybWF0aW9uIGNhbiBiZSByZXF1ZXN0ZWQpLiBUaGUgUkVQTFkgcmVxdWVzdAorICAgICAgICAgICAgaXMgc3BlY2lhbCBpbiB0aGF0IGl0IGlzIHRoZSByZXF1ZXN0IG5hbWUgdXNlZCBmb3IgYWxsIHJlcGxpZXMKKyAgICAgICAgICAgIG1hZGUgdG8gYnkgbXVkIEIgdG8gYW4gaW5pdGlhbCByZXF1ZXN0IG1hZGUgYnkgYSBtdWQgQS4gSXQgaXMKKyAgICAgICAgICAgIG11ZCBBJ3MgcmVzcG9uc2liaWxpdHkgdG8ga2VlcCB0cmFjayBvZiB0aGUgb3JpZ2luYWwgcmVxdWVzdAorICAgICAgICAgICAgdHlwZSBzbyB0aGF0IHRoZSByZXBseSBjYW4gYmUgaGFuZGxlZCBhcHByb3ByaWF0ZWx5LiAKKyAgICAgICAgIlNORCIgKFNFTkRFUikKKyAgICAgICAgICAgIFRoZSBuYW1lIG9mIHRoZSBwZXJzb24gb3Igb2JqZWN0IHdoaWNoIHNlbnQgdGhlIHJlcXVlc3Qgb3IgdG8KKyAgICAgICAgICAgIHdob20gcmVwbGllcyBzaG91bGQgYmUgZGlyZWN0ZWQuIFRoaXMgaXMgZXNzZW50aWFsIGlmIGEgcmVwbHkKKyAgICAgICAgICAgIGlzIGV4cGVjdGVkLiAKKyAgICAgICAgIkRBVEEiIChEQVRBKQorICAgICAgICAgICAgVGhpcyBmaWVsZCBzaG91bGQgY29udGFpbiB0aGUgbWFpbiBib2R5IG9mIGFueSBwYWNrZXQuIEl0IGlzCisgICAgICAgICAgICB0aGUgb25seSBmaWVsZCB0aGF0IGNhbiBjb250YWluIHNwZWNpYWwgZGVsaW1pdGluZyBjaGFyYWN0ZXJzCisgICAgICAgICAgICB3aXRob3V0IGVycm9yLiAKKworICAgICAgICBUaGUgZm9sbG93aW5nIGhlYWRlcnMgYXJlIHVzZWQgaW50ZXJuYWxseSBieSB0aGUgaW5ldGQgYW5kIHNob3VsZAorICAgICAgICBub3QgYmUgdXNlZCBieSBleHRlcm5hbCBvYmplY3RzOiAKKyAgICAgICAgIkhTVCIgKEhPU1QpCisgICAgICAgICAgICBUaGUgSVAgYWRkcmVzcyBvZiB0aGUgaG9zdCBmcm9tIHdoaWNoIGEgcmVxdWVzdCB3YXMgcmVjZWl2ZWQuCisgICAgICAgICAgICBUaGlzIGlzIHNldCBieSB0aGUgcmVjZWl2aW5nIG11ZCBhbmQgaXMgbm90IGNvbnRhaW5lZCBpbgorICAgICAgICAgICAgb3V0Z29pbmcgcGFja2V0cy4gCisgICAgICAgICJJRCIgKElEKQorICAgICAgICAgICAgVGhlIHBhY2tldCBpZC4gVGhpcyBmaWVsZCBpcyBzaW1wbHkgYW4gaW50ZWdlciB3aGljaCBpcyBzZXQgYnkKKyAgICAgICAgICAgIHRoZSBzZW5kaW5nIGluZXRkLiBUaGUgbnVtYmVyIGlzIGluY3JlbWVudGVkIGVhY2ggdGltZSBhIHBhY2tldAorICAgICAgICAgICAgaXMgc2VudCAoemVybyBpcyBuZXZlciB1c2VkKS4gVGhpcyBmaWVsZCBpcyBvbmx5IG5lZWRlZCBpZiBhCisgICAgICAgICAgICByZXBseSBpcyBleHBlY3RlZC4gUkVQTFkgcGFja2V0cyBfbXVzdF8gaW5jbHVkZSB0aGUgb3JpZ2luYWwKKyAgICAgICAgICAgIHJlcXVlc3QgaWQuIFRoaXMgaXMgX25vdF8gZG9uZSBieSB0aGUgaW5ldGQuIAorICAgICAgICAiTkFNRSIgKE5BTUUpCisgICAgICAgICAgICBUaGUgbmFtZSBvZiB0aGUgbG9jYWwgbXVkLiBVc2VkIGZvciBzZWN1cml0eSBjaGVja2luZyBhbmQgdG8KKyAgICAgICAgICAgIHVwZGF0ZSBob3N0IGxpc3QgaW5mb3JtYXRpb24uIAorICAgICAgICAiUEtUIiAoUEFDS0VUKQorICAgICAgICAgICAgQSBzcGVjaWFsIGhlYWRlciByZXNlcnZlZCBmb3IgcGFja2V0cyB3aGljaCBoYXZlIGJlZW4gc3BsaXQuCisgICAgICAgICAgICBTZWUgUEFDS0VUIFBST1RPQ09MIC8gRk9STUFULiAKKyAgICAgICAgIlVEUCIgKFVEUF9QT1JUKQorICAgICAgICAgICAgVGhlIFVEUCBwb3J0IHRoZSBsb2NhbCBtdWQgaXMgcmVjZWl2aW5nIG9uLiBVc2VkIGZvciBzZWN1cml0eQorICAgICAgICAgICAgY2hlY2tpbmcgYW5kIHVwZGF0aW5nIGhvc3QgbGlzdCBpbmZvcm1hdGlvbi4gCisgICAgICAgICJTWVMiIChTWVNURU0pCisgICAgICAgICAgICBDb250YWlucyBzcGVjaWFsIHN5c3RlbSBmbGFncy4gVGhlIG9ubHkgc3lzdGVtIGZsYWcgdXNlZCBhdAorICAgICAgICAgICAgcHJlc2VudCBpcyBUSU1FX09VVC4gVGhpcyBpcyBpbmNsdWRlZCBpbiBwYWNrZXRzIHJldHVybmVkIGR1ZQorICAgICAgICAgICAgdG8gYW4gZXhwZWN0ZWQgcmVwbHkgdGltaW5nIG91dCB0byBkaWZmZXJlbnRpYXRlIGl0IGZyb20gYW4KKyAgICAgICAgICAgIGFjdHVhbCByZXBseS4gCisKK1VEUCBSRVFVRVNUUyAvIE1PRFVMRVMKKyAgICAgICAgVGhlIGZvbGxvd2luZyBhcmUgc3RhbmRhcmQgcmVxdWVzdCB0eXBlcyB0aGF0IG11c3QgYmUgc3VwcG9ydGVkCisgICAgICAgIGJ5IGFsbCBzeXN0ZW1zOiAKKyAgICAgICAgInBpbmciIChQSU5HKQorICAgICAgICAgICAgVGhpcyBtb2R1bGUgc2hvdWxkIHJldHVybiBhIFJFUExZIHBhY2tldCB0aGF0IGNvbnRhaW5zIHRoZQorICAgICAgICAgICAgb3JpZ2luYWwgcmVxdWVzdHMgSUQgaW4gaXQncyBJRCBmaWVsZCBhbmQgdGhlIFNFTkRFUiBpbiBpdCdzCisgICAgICAgICAgICBSRUNJUElFTlQgZmllbGQuIEl0IHNob3VsZCBhbHNvIGluY2x1ZGUgYW4gYXBwcm9wcmlhdGUgc3RyaW5nCisgICAgICAgICAgICBpbiB0aGUgREFUQSBmaWVsZCwgZWcuICJNdWQtTmFtZSBpcyBhbGl2ZS5cbiIgCisgICAgICAgICJxdWVyeSIgKFFVRVJZKQorICAgICAgICAgICAgVGhpcyBtb2R1bGUgZXhwZWN0cyB0aGUgdHlwZSBvZiBxdWVyeSByZXF1ZXN0ZWQgdG8gYXBwZWFyIGluIHRoZQorICAgICAgICAgICAgcmVjaWV2ZWQgREFUQSBmaWVsZC4gSXQgc2hvdWxkIHJldHVybiBhIFJFUExZIHBhY2tldCBjb250YWluaW5nCisgICAgICAgICAgICB0aGUgb3JpZ2luYWwgSUQgaW4gdGhlIElEIGZpZWxkLCB0aGUgU0VOREVSIGluIGl0J3MgUkVDSVBJRU5UCisgICAgICAgICAgICBmaWVsZCwgYW5kIHRoZSBxdWVyeSB0eXBlIGluIGEgUVVFUlkgZmllbGQuIFRoZSBEQVRBIGZpZWxkIHNob3VsZAorICAgICAgICAgICAgY29udGFpbiB0aGUgaW5mb3JtYXRpb24gcmVxdWVzdGVkLiAKKworICAgICAgICBGb3IgZGV0YWlscyBvZiBob3cgb3RoZXIgaW50ZXJtdWQgcmVxdWVzdHMgb3BlcmF0ZSwgbG9vayBhdCB0aGUKKyAgICAgICAgcmVsZXZhbnQgbW9kdWxlIGNvZGUuIAorCitBVVRIT1IKKyAgICAgICAgSW5mb3JtYXRpb24gdGFrZW4gZnJvbSBPdXRlcnNwYWNlcyBkb2N1bWVudGF0aW9uIHRvIGJlIGZvdW5kIAorICAgICAgICBvbiBodHRwOi8vbXVkLnN0YWNrLm5sL2ludGVybXVkLworCitTRUUgQUxTTworICAgICAgICBpbmV0ZChDKSwgaW50ZXJtdWQoQykKZGlmZiAtLWdpdCBhL2RvYy9jb25jZXB0cy9scGMgYi9kb2MvY29uY2VwdHMvbHBjCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjFlNTkxMWUKLS0tIC9kZXYvbnVsbAorKysgYi9kb2MvY29uY2VwdHMvbHBjCkBAIC0wLDAgKzEsNjQgQEAKKyogV2hhdCBpcyBMUEM/CisKK0xQQyBpcyB0aGUgbGFuZ3VhZ2UgaW4gd2hpY2ggTFBtdWQgb2JqZWN0cyBhcmUgd3JpdHRlbi4KK0xQQyBzdGFuZHMgZm9yIExhcnMgUGVuc2p8IEMuICBBcyBvbmUgbWlnaHQgc3VybWlzZSBmcm9tIHRoZSBuYW1lLAorTFBDIGlzIGJhc2VkIG9uIHRoZSBzeW50YXggb2YgQy4gIExQQyBwcm92aWRlcyB0aGUgQyB3aGlsZSBsb29wLCBmb3IgbG9vcCwKK2lmIHN0YXRlbWVudCwgc3dpdGNoIHN0YXRlbWVudCwgYSB2YXJpYW50IG9mIHNzY2FuZiwgYW5kIGludGVnZXIgZGF0YSB0eXBlLAorKExQQyBhbHNvIHByb3ZpZGVzIG90aGVyIGRhdGEgdHlwZXMgbm90IGluIEMgc3VjaCBhcyB0aGUgb2JqZWN0IGFuZCB0aGUKK21hcHBpbmcpLiAgTFBDIHVzZXMgQydzIHN5bnRheCBmb3IgZGVmaW5pbmcgYW5kIGNhbGxpbmcgZnVuY3Rpb25zIGFuZCBmb3IKK2RlY2xhcmluZyB2YXJpYWJsZXMuICBOb3RlIHRoYXQgTFBDJ3MgdmVyc2lvbiBvZiB0aGUgc3RyaW5nIGRhdGF0eXBlIGlzCittdWNoIGRpZmZlcmVudCBmcm9tIHRoYXQgcHJvdmlkZWQgYnkgQy4gIFNlZSB0aGUgTFBDIHR1dG9yaWFsIG9uIHN5bnRheAorYW5kIGxhbmd1YWdlIGNvbnN0cnVjdHMgZm9yIG1vcmUgaW5mb3JtYXRpb24uCisKK0hlcmUgYXJlIHNvbWUgZGlmZmVyZW5jZXMgYmV0d2VlbiBMUEMgYW5kIEM6CisKK1RoZXJlIGlzIG5vIG5lZWQgZm9yIGEgZnVuY3Rpb24gbmFtZWQgIm1haW4iIGluIExQQyBvYmplY3RzIChhbHRob3VnaCB0aGVyZQoraXMgb25lIGNhbGxlZCAiY3JlYXRlIikuCisKK1RoZSBlZnVucyAob3Igc3lzdGVtIGNhbGxzKSBwcm92aWRlZCBieSB0aGUgZ2FtZWRyaXZlciBhcmUgZGlmZmVyZW50IHRoYW4KK3Rob3NlIHR5cGljYWxseSBmb3VuZCBpbiB0aGUgQyBsaWJyYXJ5IChsaWJjLmEpLgorCitUaGVyZSBpcyBubyBtYWxsb2MoKS4gIEhvd2V2ZXIsIHRoZXJlIGlzIGFuIGFsbG9jYXRlKGludCB2YWx1ZSkgZWZ1biB0aGF0CitsZXRzIHNwYWNlIGJlIGFsbG9jYXRlZCBmb3IgYXJyYXlzLiAgTm90ZSB0aGF0IHRoZSBhcmd1bWVudCB0byAnYWxsb2NhdGUnCitpcyBub3QgaW4gdW5pdHMgb2YgYnl0ZXMsIGJ1dCByYXRoZXIgaW4gdW5pdHMgb2YgZWxlbWVudHMuCisKK01lbW9yeSBpcyBuZXZlciBleHBsaWNpdGx5IGRlYWxsb2NhdGVkLiAgVGhlIGdhbWVkcml2ZXIga2VlcHMgdHJhY2sgb2YKK2hvdyBtYW55IHRpbWVzIGEgZ2l2ZW4gcGllY2Ugb2YgZGF0YSBoYXMgYmVlbiByZWZlcmVuY2VkLiAgV2hlbiB0aGUKK3JlZmVyZW5jZSBjb3VudCBnb2VzIHRvIHplcm8gKHdoZW4gbm8gb2JqZWN0IGhhcyBhIGNvcHkgb2YgdGhhdCB2YXJpYWJsZSksCit0aGVuIHRoZSBzcGFjZSB1c2VkIGJ5IHRoZSB2YXJpYWJsZSBpcyByZWNsYWltZWQgKGdhcmJhZ2UgY29sbGVjdGVkKS4KKworVGhlIHN0cmluZyBkYXRhIHR5cGUgaW4gTFBDIGlzIGNsb3NlciB0byB0aGF0IHByb3ZpZGVkIGJ5IEJBU0lDIHRoYW4gdGhhdAorcHJvdmlkZWQgYnkgQy4gIFN0cmluZ3MgYXJlIG5vdCBkZWNsYXJlZCBhcyBhcnJheXMgb2YgY2hhcmFjdGVycyBidXQgcmF0aGVyCithcyBhIGJhc2ljIGludHJpbnNpYyB0eXBlLiAgU3RyaW5ncyBtYXkgYmUgY29uY2F0ZW5hdGVkIHVzaW5nIHRoZSAnKycgb3BlcmF0b3IuCisKK0ZvciBleGFtcGxlLCB0aGUgTFBDIHN0YXRlbWVudHM6CisKK3N0cmluZyBhY2s7CisKK2FjayA9IGZvbyArIGJhcjsKKworYXJlIGVxdWl2YWxlbnQgdG8gdGhlIEMgc3RhdGVtZW50czoKKworY2hhciAqYWNrOworCithY2sgPSAoY2hhciAqKW1hbGxvYyhzdHJsZW4oZm9vKSArIDEpOworc3RyY3B5KGFjayxmb28pOworYWNrID0gKGNoYXIgKilyZWFsbG9jKHN0cmxlbihhY2spICsgc3RybGVuKGJhcikgKyAxKTsKK3N0cmNhdChhY2ssYmFyKTsKKworTm90ZTogYWNrW2ldIG1heSBub3QgYXBwZWFyIGFzIGFuIGx2YWx1ZSAoaS5lLiBhY2tbaV0gPSAnYSc7IHdpbGwgbm90Cit3b3JrIGFzIGV4cGVjdGVkKS4KKworTFBDIGlzIGFuIGludGVycHJldGVkIGxhbmd1YWdlIChob3dldmVyIGl0IGlzIGNvbXBpbGVkIGludG8gYW4gaW50ZXJuYWwKK2NvbXBhY3QgdG9rZW5pemVkIGZvcm0gYmVmb3JlIGJlaW5nIGludGVycHJldGVkKS4KKworTFBDIGhhcyBubyBzdHJ1Y3R1cmVzIG9yIHVuaW9ucy4gIEluIGZhY3QsIHRoZSAtPiBvcGVyYXRvciBpcyB1c2VkIHRvCitpbmRpY2F0ZSBhIGNhbGwgdG8gYW5vdGhlciBvYmplY3QuICBUaGUgbWFwcGluZyBkYXRhdHlwZSBjYW4gc2VydmUKK2FzIGFuIGVmZmVjdGl2ZSBzdWJzdGl0dXRlIGZvciBzdHJ1Y3R1cmVzIGluIHNvbWUgc2l0dWF0aW9ucy4KKworc3NjYW5mIGRvZXMgbm90IHdvcmsgaW4gdGhlIHNhbWUgd2F5IGFzIGluIEMuICBhcmd1bWVudHMgdG8gc3NjYW5mIG5lZWQgbm90CitiZSBwb2ludGVycyAoc2luY2UgTFBDIGRvZXMgbm90IGhhdmUgdGhlIGV4cGxpY2l0IHBvaW50ZXIgZGF0YSB0eXBlKS4gIEFsc28sCitzc2NhbmYoYXJnLCIlcyAlcyIsc3RyMSxzdHIyKSBkb2VzIG5vdCBvcGVyYXRlIGFzIHRoZSBDIHByb2dyYW1tZXIgd291bGQKK2V4cGVjdC4gIEluIEMsIHRoZSBmaXJzdCB3b3JkIG9mIGFyZyB3b3VsZCBiZSBjb3BpZWQgaW50byBzdHIxIGFuZCB0aGUKK3NlY29uZCB3b3JkIG9mIGFyZyBpbnRvIHN0cjIuICBJbiBMUEMsIHRoZSBmaXJzdCB3b3JkIGlzIGNvcGllZCBpbnRvIHN0cjEKK2FuZCB0aGUgX3JlbWFpbmRlcl8gb2YgYXJnIGlzIGNvcGllZCBpbnRvIHN0cjIuCmRpZmYgLS1naXQgYS9kb2MvY29uY2VwdHMvbWFpbCBiL2RvYy9jb25jZXB0cy9tYWlsCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmMwODUwOGMKLS0tIC9kZXYvbnVsbAorKysgYi9kb2MvY29uY2VwdHMvbWFpbApAQCAtMCwwICsxLDczIEBACitDT05DRVBUOgorCW1haWwKKworCitERVNDUklQVElPTjoKKwlUaGlzIGRvY3VtZW50IGRlc2NyaWJlcyB0aGUgbWFpbCBzeXN0ZW0gdXNlZCBpbiBOaWdodGZhbGwuCisJVGhlIGlkZWEgaXMgdG8gbWFrZSBhIGNlbnRyYWwgbWFpbCBoYW5kbGluZyBvYmplY3Qgd2hpY2gKKwlhY2NlcHRzIGFuZCBkaXN0cmlidXRlcyBtYWlsIGJldHdlZW4gdXNlcnMuIE1haWwgaXMgc3RvcmVkIGluCisJdGhlIC9tYWlsIGRpcmVjdG9yeS4gc2F2ZV9vYmplY3QgaXMgdXNlZCB0byBzYXZlIG1haWwKKwlpbmZvcm1hdGlvbiBpbiBtYWlsIGZpbGVzIGluIHRoaXMgZGlyZWN0b3J5LiBPbmx5IHRoZSBtYWlsCisJZGVtb24gb2JqZWN0IGFuZCB0aGUgb3duZXIgb2YgdGhlIG1haWwgZmlsZSBjYW4gYWNjZXNzIGl0LgorCisJQSBudW1iZXIgb2YgbWFpbCByZWFkZXJzIHdpbGwgcHJvYmFibHkgYXZhaWxhYmxlIHdoaWNoIGFjY2VzcworCXRoZSBtYWlsIGZpbGVzLiBBIHR5cGljYWwgbWFpbCB1c2VyIGFnZW50IGhhcyBjb21tYW5kcyB0bworCXJlYWQgbWFpbCBjb250YWluZWQgaW4gdGhlIHVzZXIncyBtYWlsIGZpbGUsIHRvIHJlcGx5IHRvCisJbWVzc2FnZXMsIHRvIGZvcndhcmQsIGRlbGV0ZSwgc2F2ZSB0aGVtLiBBIGZvbGRlciBzdHJ1Y3R1cmUKKwljYW4gYmUgaW1wbGVtZW50ZWQuIE91dGdvaW5nIG1haWwgaXMgZ2l2ZW4gdG8gdGhlIG1haWwgZGVtb24KKwlvYmplY3QgYnkgdGhlIHVzZXIgYWdlbnQgZm9yIGRpc3RyaWJ1dGlvbi4gVGhlIG1haWxyZWFkZXIKKwlzaG91bGQgaW1wbGVtZW50IG11bHRpcGxlIHJlY2lwaWVudHMgLSBjYXJib24gY29weSwgY2MgYW5kCisJYmxpbmQgY2FyYm9uIGNvcHksIGJjYy4gQ2FyYm9uIGNvcHkgbWVhbnMgYWx0ZXJuYXRlIHJlY2lwaWVudHMKKwl0byB3aGljaCB0aGUgbWVzc2FnZSBzaG91bGQgYmUgc2VudC4gQmxpbmQgY2FyYm9uIGNvcHkgaXMgdGhlCisJc2FtZSwgYnV0IHRoZSByZWNpcGllbnRzIHdvbid0IGJlIGxpc3RlZCBpbiB0aGUgcmVjZWl2ZWQKKwltZXNzYWdlLgorCisJU2F2ZSBmaWxlIGZvcm1hdCAoc29ydCBvZiBmb3JtYWwgbm90YXRpb24pOgorCisJbWl4ZWQgKmZvbGRlcnMgPSAoeworCSAgICh7IHN0cmluZyBuYW1lMTsgc3RyaW5nIG5hbWUyOyAuLi4gc3RyaW5nIG5hbWVOOyB9KQorCSAgICh7IG1peGVkICptc2dzMTsgbWl4ZWQgKm1zZ3MyOyAuLi4gbWl4ZWQgKm1zZ3NOOyB9KQorCX0pCisKKwlUaGUgYXJyYXkgdmFyaWFibGUgPGZvbGRlcnM+IGNvbnRhaW5zIGEgbnVtYmVyIG9mIGZvbGRlcgorCXN0cnVjdHVyZXMgY29udGFpbmluZyB0aGUgYWN0dWFsIG1lc3NhZ2VzLiBUaGVyZSBhcmUgc3BlY2lhbAorCWZvbGRlcnMgd2hpY2ggYXJlIHJlc2VydmVkOiBtYWlsLCBuZXdtYWlsLiBOZXcgbWFpbCB3aWxsCisJYmUgZGVsaXZlcmVkIGludG8gdGhlIG5ld21haWwgZm9sZGVyLiBUaGlzIGlzIHRoZSBvbmx5IGhhcmQKKwljb2RlZCByZXF1aXJlbWVudCAodGhlIG1haWwgZGVtb24gd2lsbCBzaW1wbHkgZGVwb3NpdCBuZXcKKwltYWlsIHRoZXJlKS4gVGhlIGZvbGRlciBuYW1lICdtYWlsJyBzaG91bGQgYmUgdXNlZCBmb3IgcmVhZAorCW1haWwuIE90aGVyIGZvbGRlcnMgY2FuIGJlIGR5bmFtaWNhbGx5IGNyZWF0ZWQgYnkgdGhlIHVzZXIKKwlhZ2VudC4KKworCUVhY2ggbXNncyBmaWVsZCBpcyBhbiBhcnJheSBvZiBtZXNzYWdlczoKKworCW1peGVkICptc2dzID0gKHsgbWl4ZWQgKm1lc3NhZ2UxOyAuLi4gbWl4ZWQgKm1lc3NhZ2VNIH0pCisKKwlBIG1lc3NhZ2UgaXMgcmVwcmVzZW50ZWQgYXMgYW4gYXJyYXkgd2l0aCB0aGUgZm9sbG93aW5nIGZpZWxkczoKKworCW1peGVkICptZXNzYWdlID0gKHsKKwkgICBzdHJpbmcgZnJvbTsKKwkgICBzdHJpbmcgc2VuZGVyOworCSAgIHN0cmluZyByZWNpcGllbnQ7CisJICAgc3RyaW5nICpjYzsKKwkgICBzdHJpbmcgKmJjYzsKKwkgICBzdHJpbmcgc3ViamVjdDsKKwkgICBzdHJpbmcgZGF0ZTsKKwkgICBzdHJpbmcgaWQ7CisJICAgc3RyaW5nIGJvZHk7CisJfSkKKworCVRoZSBtYWlsZXIgZGVtb24gKC9zZWN1cmUvbWFpbGVyLCBvciAvb2JqL21haWxlcikgcHJvdmlkZXMKKwl0aGUgZm9sbG93aW5nIGZ1bmN0aW9uczoKKworCURlbGl2ZXJNYWlsKG1peGVkICptZXNzYWdlKQorCSAgSGFuZCBhIG1haWwgbWVzc2FnZSBvdmVyIHRvIHRoZSBtYWlsZXIgZGVtb24uIFRoZSBtYWlsZXIKKwkgIGRlbW9uIGV4dHJhY3RzIHJlY2lwaWVudHMgZnJvbSB0aGUgcmVjaXBpZW50LCBjYyBhbmQgYmNjCisJICBmaWVsZHMgYW5kIHJlbW92ZXMgdGhlIGJjYyBpbmZvcm1hdGlvbi4gSXQgdGhlbiBkZXBvc2l0cworCSAgdGhlIG1lc3NhZ2UgdG8gdGhlIG1haWwgZmlsZXMgb2YgYWxsIHJlY2lwaWVudHMuIEEgdmFsaWQKKwkgIG1lc3NhZ2UgaXMgc2hvd24gYWJvdmUuCisKKwlpbnQgRmluZ2VyTWFpbChzdHJpbmcgdXNlcikKKwkgIEdpdmVzIHRoZSBudW1iZXIgb2YgdW5yZWFkIG1lc3NhZ2VzIGEgdXNlciBoYXMuCisKKworU0VFIEFMU086CmRpZmYgLS1naXQgYS9kb2MvY29uY2VwdHMvbWNjcCBiL2RvYy9jb25jZXB0cy9tY2NwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmYzZTMxZmIKLS0tIC9kZXYvbnVsbAorKysgYi9kb2MvY29uY2VwdHMvbWNjcApAQCAtMCwwICsxLDEwMCBAQAorQ09OQ0VQVAorICAgICAgICBtY2NwIC0gVGhlIE11ZCBDbGllbnQgQ29tcHJlc3Npb24gUHJvdG9jb2wKKworREVTQ1JJUFRJT04KKyAgICAgICAgSW5mb3JtYXRpb25zIGFuZCBjb2RlIHRha2VuIGZyb20gdGhlIE1DQ1AgSG9tZXBhZ2UKKyAgICAgICAgaHR0cDovL3d3dy5yYW5kb21seS5vcmcvcHJvamVjdHMvTUNDUC8KKworICAgICAgICBNQ0NQIGlzIGltcGxlbWVudGVkIGFzIGEgVGVsbmV0IG9wdGlvbiBbUkZDODU0LCBSRkM4NTVdLiBUaGUgc2VydmVyCisgICAgICAgIGFuZCBjbGllbnQgbmVnb3RpYXRlIHRoZSB1c2Ugb2YgTUNDUCBhcyB0aGV5IHdvdWxkIGFueSBvdGhlciB0ZWxuZXQKKyAgICAgICAgb3B0aW9uLiBPbmNlIGFncmVlbWVudCBoYXMgYmVlbiByZWFjaGVkIG9uIHRoZSB1c2Ugb2YgdGhlIG9wdGlvbiwKKyAgICAgICAgb3B0aW9uIHN1Ym5lZ290aWF0aW9uIGlzIHVzZWQgdG8gZGV0ZXJtaW5lIGFjY2VwdGFibGUgY29tcHJlc3Npb24KKyAgICAgICAgbWV0aG9kcyB0byB1c2UsIGFuZCB0byBpbmRpY2F0ZSB0aGUgc3RhcnQgb2YgYSBjb21wcmVzc2VkIGRhdGEgc3RyZWFtLiAKKworICAgICAgICBJZiB0aGUgZHJpdmVyIGlzIGNvbXBpbGVkIHdpdGggTUNDUCBTdXBwb3J0IHRoZXJlIGlzIGEKKyAgICAgICAgZGVmaW5lIF9fTUNDUF9fLgorCisgICAgICAgIFRoZSBkcml2ZXIgY3VycmVudGx5IHN1cHBvcnRzIGJvdGggdmVyc2lvbnMgb2YgbWNjcC4gSWYgeW91ciBtdWQKKyAgICAgICAgaGFzIGEgSF9OT0VDSE8gaG9vayB5b3UgaGF2ZSB0byBmaW5kIG91dCBpZiB0aGUgY2xpZW50IHN1cHBvcnRzCisgICAgICAgIG1jY3AuIFdpdGhvdXQgdGhpcyBob29rIHlvdSBzdGlsbCBoYXZlIHRvIHN0YXJ0IG5lb2dvdGlhdGlvbi4KKworICAgICAgICBBbGwgc3ViLW5lZ290aWF0aW9uIGlzIGRvbmUgYnkgdGhlIGVmdW5zIHN0YXJ0X21jY3BfY29tcHJlc3MoKSBhbmQKKyAgICAgICAgZW5kX21jY3BfY29tcHJlc3MoKSB3aGV0aGVyIHlvdSBoYXZlIHRoaXMgaG9vayBvciBub3QuCisKKyAgICAgICAgTm90aWNlOiB3aGVuIHRoZSBjbGllbnQgdXNlcyBjb21wcmVzc2lvbnMgYWxsIGJpbmFyeV9tZXNzYWdlIGNhbGxzCisgICAgICAgICAgICAgICAgYXJlIGV4ZWN1dGVkIHdpdGggZmxhZz0zLiBUaGlzIGlzIGJlY2F1c2Ugd3JpdGluZyB0byB0aGUKKyAgICAgICAgICAgICAgICBzb2NrZXQgd291bGQgZGlzdHVyYiB6bGliIHN0cmVhbS4KKyAgICAgICAgCisgICAgICAgIG1jY3AtZWZ1bnM6CisKKyAgICAgICAgICBzdGFydF9tY2NwX2NvbXByZXNzKGludCB0ZWxvcHQpIChvbmx5IG5lZWRlZCB3aXRoIEhfTk9FQ0hPKQorICAgICAgICAgIGVuZF9tY2NwX2NvbXByZXNzKGludCB0ZWxvcHQpICAgKG9ubHkgbmVlZGVkIHdpdGggSF9OT0VDSE8pCisgICAgICAgICAgcXVlcnlfbWNjcChvYmplY3QgcGxheWVyKQorICAgICAgICAgIHF1ZXJ5X21jY3Bfc3RhdHMob2JqZWN0IHBsYXllcikKKworICAgICAgIEluaXRpYXRpbmcgTUNDUCB3aXRob3V0IEhfTk9FQ0hPIGhvb2s6CisKKyAgICAgICAgICBpZighcXVlcnlfbWNjcCgpKXsKKyAgICAgICAgICAgIGJpbmFyeV9tZXNzYWdlKCh7IElBQywgV0lMTCwgVEVMT1BUX0NPTVBSRVNTMiB9KSwxKQorICAgICAgICAgICAgYmluYXJ5X21lc3NhZ2UoKHsgSUFDLCBXSUxMLCBURUxPUFRfQ09NUFJFU1MgfSksMSkKKyAgICAgICAgICB9CisKKyAgICAgICAgICB0aGUgZHJpdmVyIHdpbGwgcGFyc2UgdGhlIGNsaWVudHMgYW5zd2VycyBhbmQgc3RhcnQgY29tcHJlc3Npb24uCisgICAgICAgICAgKFRoZSBjb25uZWN0aW9uIG1pZ2h0IGFscmVhZHkgYmUgY29tcHJlc3NlZCwgYmVjYXVzZSBhbHRob3VnaCB0aGUKKyAgICAgICAgICAgZG9jdW1lbnRhdGlvbiBzYXlzIGNsaWVudHMgc2hvdWxkIG5vdCBuZWdvdGlhdGUgZnJvbSB0aGVtc2VsZmVzLAorICAgICAgICAgICB6bXVkIGUuZy4gZG9lcy4pCisKKyAgICAgICAgICBZb3UgY2FuIHN0YXJ0IGFuZCBzdG9wIGNvbXByZXNzaW9uIG1hbnVhbGx5IGJ5IGVmdW5zCisgICAgICAgICAgd2hlbiB5b3UgYXJlIHN1cmUgY2xpZW50IHN1cHBvcnRzIGNvbXByZXNzaW9uIDopCisKKworICAgICAgIEluaXRpYXRpbmcgTUNDUCBjb21wcmVzc2lvbiB3aXRoIEhfTk9FQ0hPIGhvb2s6CisKKyAgICAgICAgICBJZiB5b3VyIG11ZGxpYiB1c2VzIHRoZSBIX05PRUNITyBkcml2ZXItaG9vayB5b3UgZGVjaWRlZCB0byBkbworICAgICAgICAgIGFsbCB0aGUgbmVnb3RpYXRpb24gYnkgeW91cnNlbGY6CisKKyAgICAgICAgICBTZXJ2ZXIgQ29tbWFuZHMKKyAgICAgICAgICBJQUMgV0lMTCBDT01QUkVTUyBpbmRpY2F0ZXMgdGhlIHNlbmRlciBzdXBwb3J0cyB2ZXJzaW9uIDEgb2YgdGhlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHJvdG9jb2wsIGFuZCBpcyB3aWxsaW5nIHRvIGNvbXByZXNzIGRhdGEgaXQgc2VuZHMuIAorCisgICAgICAgICAgSUFDIFdJTEwgQ09NUFJFU1MyIGluZGljYXRlcyB0aGUgc2VuZGVyIHN1cHBvcnRzIHZlcnNpb24gMiwgYW5kIGlzCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpbGxpbmcgdG8gY29tcHJlc3MgZGF0YSBpdCBzZW5kcy4gCisKKyAgICAgICAgICBJQUMgV09OVCBDT01QUkVTUyBpbmRpY2F0ZXMgdGhlIHNlbmRlciByZWZ1c2VzIHRvIGNvbXByZXNzIGRhdGEgdXNpbmcKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICB2ZXJzaW9uIDEuIAorCisgICAgICAgICAgSUFDIFdPTlQgQ09NUFJFU1MyIGluZGljYXRlcyB0aGUgc2VuZGVyIHJlZnVzZXMgdG8gY29tcHJlc3MgZGF0YQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1c2luZyB2ZXJzaW9uIDIuIAorCisgICAgICAgICAgQ2xpZW50IENvbW1hbmRzCisgICAgICAgICAgSUFDIERPIENPTVBSRVNTIGluZGljYXRlcyB0aGUgc2VuZGVyIHN1cHBvcnRzIHZlcnNpb24gMSBvZiB0aGUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgcHJvdG9jb2wsIGFuZCBpcyB3aWxsaW5nIHRvIGRlY29tcHJlc3MgZGF0YSByZWNlaXZlZC4gCisKKyAgICAgICAgICBJQUMgRE8gQ09NUFJFU1MyIGluZGljYXRlcyB0aGUgc2VuZGVyIHN1cHBvcnRzIHZlcnNpb24gMiBvciBhYm92ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIGFuZCBpcyB3aWxsaW5nIHRvIGRlY29tcHJlc3MgZGF0YSByZWNlaXZlZC4gCisKKyAgICAgICAgICBJQUMgRE9OVCBDT01QUkVTUyBpbmRpY2F0ZXMgdGhlIHNlbmRlciByZWZ1c2VzIHRvIHN1cHBvcnQgdmVyc2lvbiAxLgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIElmIGNvbXByZXNzaW9uIHdhcyBwcmV2aW91c2x5IG5lZ290aWF0ZWQgYW5kIGlzCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgY3VycmVudGx5IGJlaW5nIHVzZWQsIHRoZSBzZXJ2ZXIgc2hvdWxkIHRlcm1pbmF0ZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbXByZXNzaW9uLiAKKworICAgICAgICAgIElBQyBET05UIENPTVBSRVNTMiBpbmRpY2F0ZXMgdGhlIHNlbmRlciByZWZ1c2VzIHRvIHN1cHBvcnQgdmVyc2lvbiAyLgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBJZiBjb21wcmVzc2lvbiB3YXMgcHJldmlvdXNseSBuZWdvdGlhdGVkIGFuZCBpcworICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjdXJyZW50bHkgYmVpbmcgdXNlZCwgdGhlIHNlcnZlciBzaG91bGQgdGVybWluYXRlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbXByZXNzaW9uCisKKyAgICAgICAgICBBZnRlciB5b3UgZm91bmQgb3V0IHdoZXRoZXIgdGhlIGNsaWVudCBzdXBwb3J0cyBtY2NwIG9yIG5vdCB5b3UgY2FuCisgICAgICAgICAgc3RhcnQgY29tcHJlc3Npb24gd2l0aCBzdGFydF9tY2NwX2NvbXByZXNzKFRFTE9QVF9DT01QUkVTUzIpIG9yCisgICAgICAgICAgc3RhcnRfbWNjcF9jb21wcmVzcyhURUxPUFRfQ09NUFJFU1MpLiAoIHlvdSBjb3VsZCBzdGFydCBpdCB3aXRob3V0CisgICAgICAgICAgY2hlY2tpbmcgYnV0IHNvbWUgcGxheWVycyB3b3VsZCBwcm90ZXN0IDopICkKKworQVVUSE9SCisgICAgICAgIEJhc3RpYW4gSG95ZXIgKGRhZmlyZUBmZi5tdWQuZGUpIChzb21lIHRleHQgdGFrZW4gZnJvbSBwcm9qZWN0IHBhZ2UpCisKK0hJU1RPUlkKKyAgICAgICAgQWRkZWQgaW4gTERNdWQgMy4zLjQ0NywgYmFja3BvcnRlZCB0byBMRE11ZCAzLjIuMTAuCisKK1NFRSBBTFNPCisgICAgICAgIHN0YXJ0X21jY3BfY29tcHJlc3MoRSksIGVuZF9tY2NwX2NvbXByZXNzKEUpLCBxdWVyeV9tY2NwKEUpLAorICAgICAgICBxdWVyeV9tY2NwX3N0YXRzKG9iamVjdCBwbGF5ZXIpCisKZGlmZiAtLWdpdCBhL2RvYy9jb25jZXB0cy9tZW1vcnkgYi9kb2MvY29uY2VwdHMvbWVtb3J5Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjk1MjRlYjMKLS0tIC9kZXYvbnVsbAorKysgYi9kb2MvY29uY2VwdHMvbWVtb3J5CkBAIC0wLDAgKzEsNTYgQEAKK0NPTkNFUFQKKyAgICAgICAgbWVtb3J5CisgICAgICAgIHN3YXBwaW5nCisKK0RFU0NSSVBUSU9OCisKKyAgICAgICAgVE9ETzogVGhpcyBpcyBvdXQgb2YgZGF0ZS4gQWxzbyBkb2N1bWVudCB0aGUgcmVsYXRpb24gd2l0aCByZXNldAorCisgICAgICAgIChDb2xsZWN0ZWQgZnJvbSB0aGUgQ2hhbmdlbG9ncyBvZiB0aGUgZHJpdmVyIHNvdXJjZSkKKworICAgICAgICBUaGUgc3dhcHBpbmcgYWxnb3JpdGhtIGhhcyBiZWVuIGNoYW5nZWQuIEEgdGVzdCBpcyBkb25lIGZvcgorICAgICAgICBldmVyeSBvYmplY3QsIGNvbXBhcmluZyB0byBhIHRpbWUgc3RhbXAuIElmIHRoZSBvYmplY3QgaGFzbid0CisgICAgICAgIGJlZW4gdG91Y2hlZCBmb3IgYSB3aGlsZSwgaXQgY291bGQgYmUgc3ViamVjdCBmb3Igc3dhcHBpbmcuCisgICAgICAgIEhlcmUgY29tZXMgdGhlIG5ldyB0aGluZzogdGhlIGZ1bmN0aW9uICdjbGVhbl91cCgpJyB3aWxsIGJlCisgICAgICAgIGNhbGxlZCBpbiB0aGUgb2JqZWN0LiBJZiB0aGUgb2JqZWN0IHN0aWxsIHJlbWFpbnMsIHRoZSBvbGQKKyAgICAgICAgc3dhcHBpbmcgYWxnb3JpdGhtIHdpbGwgY29udGludWUuIFRoYXQgbWVhbnMgdGhhdCBvYmplY3RzIHRoYXQKKyAgICAgICAgd291bGQgbmV2ZXIgYmUgc3ViamVjdCB0byBzd2FwcGluZyAoY2xvbmVkIG9iamVjdHMpIG5vdyBoYXZlIGEKKyAgICAgICAgY2hhbmNlIHRvIHNlbGYtZGVzdHJ1Y3QuIEl0IGFsc28gbWVhbnMgdGhhdCByb29tcyB0aGF0CisgICAgICAgIGNvbnRhaW5zIG5vIGltcG9ydGFudCBkYXRhIGNhbiBzZWxmLWRlc3RydWN0LiBTZWxmLWRlc3RydWN0aW9uCisgICAgICAgIHNhdmVzIG1vcmUgbWVtb3J5IHRoYW4gc3dhcHBpbmcsIGFzIHN3YXBwaW5nIG9ubHkgZnJlZXMgdGhlCisgICAgICAgIHByb2dyYW0gY29kZSwgd2hpbGUgc2VsZi1kZXN0cnVjdGlvbiBhbHNvIGZyZWVzIHRoZSBpbnRlcm5hbAorICAgICAgICBvYmplY3QgcmVwcmVzZW50YXRpb24uCisKKyAgICAgICAgVGhlIGNhbGwgb2YgY2xlYW5fdXAoKSBoYXMgYmVlbiBtb2RpZmllZC4gVGhlcmUgaXMgYSBjb25zdGFudAorICAgICAgICBpbiBjb25maWcuaCB0aGF0IGRlZmluZXMgaG93IGxvbmcgdGltZSB1bnRpbCBjbGVhbl91cCBpcworICAgICAgICBjYWxsZWQgaW4gYW4gb2JqZWN0LiBUaGlzIGNhbGwgaXMgaW5kZXBlbmRlbnQgb2YgcmVzZXQoKSBhbmQKKyAgICAgICAgc3dhcHBpbmcuIEl0IGlzIHJlY29tbWVuZGVkIHRoYXQgdGhlIHN3YXBwaW5nIHRpbWUgaXMKKyAgICAgICAgc29tZXRoaW5nIHNob3J0LCBsaWtlIDEwIG1pbnV0ZXMgdG8gMzAgbWludXRlcywgd2hpbGUgdGhlIHRpbWUKKyAgICAgICAgdG8gY2xlYW5fdXAgaXMgbG9uZ2VyLgorCisgICAgICAgIEZpeGVkIHNldmVyYWwgYnVncyBpbiB0aGUgc3dhcC9yZXNldC9jbGVhbl91cCBsb2dpYy4KKyAgICAgICAgUmVjb21tZW5kZWQgdmFsdWVzIGFyZSB0aGF0IHRoZSBzd2FwIHRpbWUgaXMgc2hvcnQgKGxlc3MgdGhhbgorICAgICAgICAzMCBtaW51dGVzKSwgYW5kIHRoYXQgcmVzZXQgdGltZSBpcyBtZWRpdW0gKGFwcm94IDYwIG1pbnV0ZXMpLAorICAgICAgICBhbmQgdGhhdCB0aW1lIHRvIGNsZWFuX3VwIGlzIGxvbmcgKGdyZWF0ZXIgdGhhbiAxLjVoIGhvdXJzKS4KKyAgICAgICAgQW55IGZlZWRiYWNrIG9mIGhvdyB0byBiZXN0IHR1bmUgdGhlc2UgdmFsdWVzIGFyZSB3ZWxjb21lLiBUaGUKKyAgICAgICAgY2FsbCBvZiByZXNldCB3aWxsIGJlIGRvbmUgb25jZSwgYW5kIG5vdCB5ZXQgYWdhaW4gdW50aWwgdGhlCisgICAgICAgIG9iamVjdCBoYXMgYmVlbiB0b3VjaGVkLiBUaGlzIGVuYWJsZXMgcmVzZXQnZWQgb2JqZWN0cyB0byBzdGF5CisgICAgICAgIHN3YXBwZWQgb3V0LiBJZiB5b3UgaGF2ZSBhIG11ZGxpYiB0aGF0IGhhcyBubyBvamJlY3RzIHRoYXQKKyAgICAgICAgZGVmaW5lcyAnY2xlYW5fdXAnLCB0aGVuIHlvdSBtYXkgYmV0dGVyIGRlZmluZSB0aGlzIHRpbWUgYXMgMCwKKyAgICAgICAgd2hpY2ggbWVhbnMgbmV2ZXIgY2FsbCBjbGVhbl91cCAoYW5kIHRodXMgbmV2ZXIgc3dhcCB0aGUKKyAgICAgICAgb2JqZWN0IGluIG5lZWRsZXNzbHkpLiBBIHdlbGwgaW1wbGVtZW50ZWQgdXNhZ2Ugb2YgY2xlYW5fdXAgaXMKKyAgICAgICAgYmV0dGVyIHRoYW4gdGhlIHN3YXAgYWxnb3JpdGhtLCBhcyBldmVuIGNsb25lZCBvYmplY3RzIGNhbiBiZQorICAgICAgICBjbGVhbmVkIHVwIGFuZCBhIHNlbGYgZGVzdHJ1Y3Rpb24gaXMgbW9yZSBlZmZpY2llbnQgdGhhbgorICAgICAgICBzd2FwcGluZyAobWVtb3J5IHdpc2UpLgorCisgICAgICAgIENoYW5nZWQgbWVjaGFuaXNtIG9mIGNhbGxpbmcgY2xlYW5fdXAoKSBzbGlnaHRseS4gT25seSBvYmplY3RzCisgICAgICAgIHRoYXQgZGVmaW5lcyB0aGUgZnVuY3Rpb24gd2lsbCBiZSBjYWxsZWQuIEFuZCwgb25seSBjbGVhbl91cCgpCisgICAgICAgIHRoYXQgcmV0dXJucyBub24temVybyB3aWxsIGJlIGNhbGxlZCBhZ2Fpbi4gVGhpcyB3aWxsIG1pbmltaXplCisgICAgICAgIGNhbGxzIG9mIGNsZWFuX3VwKCksIHdoaWxlIHN0aWxsIGNvc3QgdmVyeSBsaXR0ZSB0byBtYWludGFpbi4KKworICAgICAgICBjbGVhbl91cCgpIG5vdyBnZXRzIGEgZmxhZyBhcyBhcmd1bWVudCwgd2hpY2ggd2lsbCBiZSBub24temVybworICAgICAgICBpZiB0aGUgdGhlIHByb2dyYW0gb2YgdGhpcyBvYmplY3QgaXMgdXNlZCBmb3IgaW5oZXJpdGFuY2UgYnkKKyAgICAgICAgb3RoZXIgb2JqZWN0cy4KKworU0VFIEFMU08KKyAgICAgICAgY2xlYW5fdXAoQSksIHNsb3dfc2h1dF9kb3duKE0pLCBxdW90YV9kZW1vbihNKSwgbWFsbG9jKEQpCmRpZmYgLS1naXQgYS9kb2MvY29uY2VwdHMvbXlzcWwgYi9kb2MvY29uY2VwdHMvbXlzcWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNGZiNmRlZQotLS0gL2Rldi9udWxsCisrKyBiL2RvYy9jb25jZXB0cy9teXNxbApAQCAtMCwwICsxLDIwNSBAQAorQ09OQ0VQVAorICAgICAgICAgICAgbXlzcWwgLSBteVNRTCBzdXBwb3J0CisKK0RFU0NSSVBUSU9OCisgICAgICAgIE9uIGhvc3RzIHdpdGggdGhlIG15U1FMIHBhY2thZ2UgaW5zdGFsbGVkLCB0aGUgZHJpdmVyIGNhbiBiZQorICAgICAgICBjb25maWd1cmVkIHRvIGludGVyZmFjZSB3aXRoIHRoZSBteVNRTCBkYXRhYmFzZS4gSWYgdGhhdCBpcyBkb25lLAorICAgICAgICB0aGUgZHJpdmVyIGRlZmluZXMgdGhlIG1hY3JvIF9fTVlTUUxfXyBmb3IgTFBDIHByb2dyYW1zIGFuZAorICAgICAgICBhY3RpdmF0ZXMgYSBudW1iZXIgb2YgZWZ1bnMuCisKKyAgICAgICAgLS0gQ29uZmlndXJhdGlvbiAtLQorCisgICAgICAgIENyZWF0ZSBhIGRlZGljYXRlZCB1c2VyIGluIHRoZSBteVNRTCBkYXRhYmFzZSBmb3IgdGhlIGRyaXZlci4KKyAgICAgICAgRW50ZXIgdGhpcyB1c2VybmFtZSBhbmQgcGFzc3dvcmQgaW4gdGhlIGZpbGUgcGtnLW15c3FsLmMsIGZ1bmN0aW9uCisgICAgICAgIG15c3FsX3JlYWxfY29ubmVjdCgpLCBhbmQgY29tcGlsZSB0aGUgZHJpdmVyICh0aGUgdXNlcm5hbWUgYW5kCisgICAgICAgIHBhc3N3b3JkIGFyZSBidWlsdCBpbnRvIHRoZSBkcml2ZXIgZm9yIHNlY3VyaXR5IHJlYXNvbnMpLgorICAgICAgICBJZiB5b3UgY2hvc2UgdG8gbm90IGNyZWF0ZSBlaXRoZXIgYSB1c2VybmFtZSBhbmQvb3IgYSBwYXNzd29yZCwKKyAgICAgICAgbGVhdmUgdGhlIGNvcnJlc3BvbmRpbmcgZW50cnkgYXQgMC4KKworICAgICAgICBVc2UgbXlzcWxhZG1pbiB0byBjcmVhdGUgYW55IGRhdGFiYXNlcyB5b3Ugd2FudCB0byBwcm92aWRlIC0gdGhlCisgICAgICAgIG5hbWVzIGFyZSBsYXRlciB1c2VkIGluIHRoZSBlZnVuIGRiX2Nvbm5lY3QoKSB0byBjb25uZWN0IHRvCisgICAgICAgIHRoZSBkYXRhYmFzZXMuCisKKworICAgICAgICAtLSBVc2FnZSAtLQorCisgICAgICAgIFRoZSBpZGVhIGJlaGluZCBTUUwtc3VwcG9ydCBpcyB0aGF0IHlvdSBjYW4gc3dhcCBsYXJnZSBhbW91bnRzIG9mCisgICAgICAgIGRhdGEgaW50byBhIGRhdGFiYXNlIHdoZXJlIGl0IGNhbiBiZSBhY2Nlc3NlZCB2ZXJ5IGVhc2lseS4KKyAgICAgICAgQXMgbXlTUUwgImxpbWl0cyIgdGhlIG51bWJlciBvZiBjb25uZWN0aW9ucyB0byAxMDAgYW5kIGFzIGV2ZXJ5CisgICAgICAgIGNvbm5lY3Rpb24gdG8gdGhlIG15U1FMLXNlcnZlciB0YWtlcyB0aW1lLCB5b3Ugc2hvdWxkIHVzZQorICAgICAgICBkYXRhYmFzZSBzZXJ2ZXJvYmplY3RzIGluIHlvdXIgTVVEIHdoaWNoIGNvbnN0YW50bHkga2VlcCB0aGUKKyAgICAgICAgY29ubmVjdGlvbiB0byB0aGUgbXlTUUwtc2VydmVyLgorCisgICAgICAgIFRvIGNvbm5lY3QgdG8geW91ciBteVNRTC1zZXJ2ZXIsIHVzZSB0aGUgZWZ1biBkYl9jb25uZWN0KCkuIEl0CisgICAgICAgIHRha2VzIG9ubHkgb25lIGFyZ3VtZW50IHdoaWNoIGlzIHRoZSBuYW1lIG9mIHRoZSBkYXRhYmFzZSAod2hpY2gKKyAgICAgICAgbXVzdCBleGlzdCkuICBUaGUgcmV0dXJuLXZhbHVlIG9mIGRiX2Nvbm5lY3QoKSBpcyBhbiBpbnRlZ2VyCisgICAgICAgIHJlcHJlc2VudGluZyB0aGUgdW5pcXVlIGhhbmRsZSB0byB0aGUgZGF0YWJhc2Ugd2l0aCB3aGljaCB5b3Ugd2lsbAorICAgICAgICBpZGVudGlmeSB5b3VyIGNvbm5lY3Rpb24gbGF0ZXIuCisKKyAgICAgICAgVG8gc2VuZCBvciByZXRyaWV2ZSBkYXRhIGZyb20gdGhpcyBjb25uZWN0aW9uLCB1c2UgZGJfZXhlYygpLiBUaGUKKyAgICAgICAgZmlyc3QgcGFyYW1ldGVyIGZvciBhbGwgZWZ1bnMgZGVhbGluZyB3aXRoIGFuIG9wZW4gY29ubmVjdGlvbiBpcworICAgICAgICBhbHdheXMgdGhlIGhhbmRsZSBhbmQgc28gaXMgdGhlIGZpcnN0IGFyZ3VtZW50IHRoZSBoYW5kbGUgYW5kIHRoZQorICAgICAgICBzZWNvbmQgb25lIHRoZSBjb21tYW5kIHlvdSB3YW50IHRvIGlzc3VlLiBUaGUgcmV0dXJuLXZhbHVlIGlzCisgICAgICAgIGVpdGhlciAwIGlmIHRoZXJlIHdhcyBhbiBlcnJvciBpbiB5b3VyIGNvbW1hbmQgKHRoaXMgY2FuIGhhdmUKKyAgICAgICAgdmFyaW91cyByZWFzb25zKSwgb3RoZXJ3aXNlIHlvdXIgaGFuZGxlIGlzIHJldHVybmVkIGFnYWluLiBBIHR5cGljYWwKKyAgICAgICAgU1FMLXN0YXRlbWVudCB0byByZXRyaWV2ZSBkYXRhIHdvdWxkIGJlIGxpa2UgdGhpczoKKworICAgICAgICAgICAgICAgIHNlbGVjdCBhbGlhc2VzLmNvbW1hbmQgZnJvbSBhbGlhc2VzIHdoZXJlIChuYW1lID0gJ21hcmlvJyBBTkQKKyAgICAgICAgICAgICAgICAgIGFsaWFzIHJlZ2V4cCAnbC4qJykKKworICAgICAgICBBcyB5b3Uga25vdywgbXlTUUwgYWNjZXB0cyBlaXRoZXIgIiBvciAnIHRvIGNsYXNzaWZ5IHN0cmluZ3MgZm9yCisgICAgICAgIHBhcmFtZXRlcnMuICBNb3N0IGxpa2VseSwgeW91IHdpbGwgcGFzcyB2YXJpYWJsZXMgYW5kIGRvbid0IGtub3cKKyAgICAgICAgd2hldGhlciB0aGV5IGNvbnRhaW4gb25lIG9yIG1vcmUgb2YgdGhlc2Uga2V5LWNoYXJzIChvciBldmVuIG90aGVyCisgICAgICAgIGNoYXJzIHRoYXQgbmVlZCB0byBiZSBjb252ZXJ0ZWQpLiBteVNRTCBwcm92aWRlcyBhIGZ1bmN0aW9uIGZvcgorICAgICAgICBjb252ZXJ0aW5nIGp1c3QgYW55IHN0cmluZyBpbnRvIGFuIGFjY2VwdGFibGUgYXJndW1lbnQgYW5kIHRoaXMgaXMKKyAgICAgICAgaW1wbGVtZW50ZWQgaW4gZGJfY29udl9zdHJpbmcoKS4KKworICAgICAgICBTbyB0aGUgYWJvdmUgZXhhbXBsZSB3aXRoIHZhcmlhYmxlcyBsb29rcyBsaWtlIHRoaXM6CisKKyAgICAgICAgICAgICAgICBzZWxlY3QgYWxpYXNlcy5jb21tYW5kIGZyb20gYWxpYXNlcyB3aGVyZSAobmFtZSA9JyIrCisgICAgICAgICAgICAgICAgICBkYl9jb252X3N0cmluZyhuYW1lKSsiJyBBTkQgYWxpYXMgcmVnZXhwICciKworICAgICAgICAgICAgICAgICAgZGJfY29udl9zdHJpbmcobWFzaykrIicpCisKKyAgICAgICAgSSBsZWZ0IG91dCB0aGUgZGJfZXhlYygpLXN0dWZmLCBtb3JlIGNvbXBsZXRlIGV4YW1wbGVzIHdpbGwgZm9sbG93LgorCisgICAgICAgIEFmdGVyIHlvdSBpbml0aWF0ZWQgYSBzdGF0ZW1lbnQgdGhhdCBzaG91bGQgcmV0dXJuIHJvd3MgZnJvbSB0aGUKKyAgICAgICAgZGF0YWJhc2UsIHVzZSBkYl9mZXRjaCgpIHRvIHJldHJpZXZlIHRoZSBkYXRhLiBkYl9mZXRjaCgpIHJldHVybnMKKyAgICAgICAgdGhlIGRhdGEgcm93IGJ5IHJvdyBhbmQgbm90IGFsbCBhdCBvbmNlLiBZb3UgbmVlZCB0byBjYWxsIGl0IHVudGlsCisgICAgICAgIGl0IHJldHVybnMgMC4gVEhJUyBJUyBJTVBPUlRBTlQhIElmIHN0b3AgY2FsbGluZyBkYl9mZXRjaCgpIGJlZm9yZQorICAgICAgICBpdCByZWFjaGVzIHRoZSBlbmQgb2YgZGF0YSwgc2VyaW91cyBpbmNvbnNpc3RlbmNpZXMgY2FuIGhhcHBlbi4KKworICAgICAgICBJZiB5b3UgdXNlZCBhIERFTEVURS0gb3IgVVBEQVRFLXN0YXRlbWVudCwgeW91IGNhbm5vdCBjYWxsIGRiX2ZldGNoKCksCisgICAgICAgIGJ1dCB5b3UgbWlnaHQgYmUgaW50ZXJlc3RlZCBpbiB0aGUgbnVtYmVyIG9mIGRlbGV0ZWQvY2hhbmdlZCByb3dzCisgICAgICAgIHdoaWNoIGNhbiBiZSBxdWVyaWVkIHdpdGggZGJfYWZmZWN0ZWRfcm93cygpLgorCisgICAgICAgIEFmdGVyIGFsbCBvcGVyYXRpb25zIGFyZSBkb25lIGluIHRoZSBkYXRhYmFzZSwgeW91IHNob3VsZCB1c2UKKyAgICAgICAgZGJfY2xvc2UoKSB0byBjbG9zZSB0aGUgY29ubmVjdGlvbiBhZ2Fpbi4gSWYgeW91IGFyZSB1c2luZyBhCisgICAgICAgIGRhdGFiYXNlLXNlcnZlci1jb25jZXB0LCBwbGFjZSBpdCBpbiB0aGUgcmVtb3ZlKCktZnVuY3Rpb24uCisKKyAgICAgICAgVGhlIFNRTC1lZnVucyBoYXZlIHNvbWUgYnVpbHQtaW4gb3B0aW1pemF0aW9uLWZlYXR1cmVzIHRvIHNwZWVkIHVwCisgICAgICAgIG9mdGVuIHVzZWQgY29ubmVjdGlvbnMuIFRvIGdldCBhIGxpc3Qgb2YgYWxsIG9wZW4gY29ubmVjdGlvbnMgdG8gdGhlCisgICAgICAgIG15U1FMLXNlcnZlciwgdXNlIGRiX2hhbmRsZXMoKSB3aGljaCByZXR1cm5zIGFuIGFycmF5IG9mIGludGVnZXJzCisgICAgICAgIHdpdGggYWxsIG9wZW4gaGFuZGxlcy4KKworCisgICAgICAgIC0tIFNlY3VyaXR5IC0tCisKKyAgICAgICAgTW9zdCBTUUwgZWZ1bnMgKHVubGVzcyBleGVjdXRlIGJ5IHRoZSBtYXN0ZXIgb3IgdGhlIHNpbXVsLWVmdW4gb2JqZWN0KQorICAgICAgICB0cmlnZ2VyIGEgcHJpdmlsZWdlX3Zpb2xhdGlvbiAoIm15c3FsIiwgIjxlZnVuX25hbWU+IikuIElmIGEgbW9yZQorICAgICAgICBmaW5lZ3JhaW5lZCBjb250cm9sIGlzIGRlc2lyZWQsIG92ZXJsb2FkIHRoZSBpbmRpdmlkdWFsIGVmdW5zIHdpdGggYQorICAgICAgICBub21hc2sgc2ltdWwtZWZ1bi4KKworICAgICAgICBUaGUgdW5wcml2aWxlZ2VkIGVmdW5zIGFyZToKKworICAgICAgICAgIGRiX2NvbnZfc3RyaW5nKCkKKworCitFWEFNUExFCisgICAgICAgIEEgc2ltcGxlIHNlcnZlciB0byBzdG9yZSBhbGlhc2VzIGNvdWxkIGJlIGltcGxlbWVudGVkIGxpa2UgdGhpczoKKworICAgICAgICAvKgorICAgICAgICAqKiAgQ1JFQVRJT046CisgICAgICAgICoqCisgICAgICAgICoqICBjcmVhdGUgdGFibGUgYWxpYXNlcyAoCisgICAgICAgICoqICAgICAgbmFtZSB2YXJjaGFyKDE1KSBub3QgTlVMTCwKKyAgICAgICAgKiogICAgICBhbGlhcyB2YXJjaGFyKDIwKSBub3QgTlVMTCwKKyAgICAgICAgKiogICAgICBjb21tYW5kIHZhcmNoYXIoMjU1KSBub3QgTlVMTCwKKyAgICAgICAgKiogICAgICBwcmltYXJ5IGtleSAobmFtZSwgYWxpYXMpKTsKKyAgICAgICAgKi8KKworICAgICAgICAjZGVmaW5lIERBVEFCQVNFICJtdWQiCisKKyAgICAgICAgcHJpdmF0ZSBpbnQgaGFuZGxlOworCisgICAgICAgIHB1YmxpYyB2b2lkIGNyZWF0ZSgpCisgICAgICAgIHsKKyAgICAgICAgICAgIGhhbmRsZSA9IGRiX2Nvbm5lY3QoREFUQUJBU0UpOworICAgICAgICB9CisKKyAgICAgICAgcHVibGljIGludCByZW1vdmUoKQorICAgICAgICB7CisgICAgICAgICAgICBpZiAoIGhhbmRsZSApCisgICAgICAgICAgICAgICAgZGJfY2xvc2UoaGFuZGxlKTsKKyAgICAgICAgICAgIGRlc3RydWN0KE1FKTsKKyAgICAgICAgICAgIHJldHVybiAhTUU7CisgICAgICAgIH0KKworICAgICAgICBwdWJsaWMgaW50IEFkZEFsaWFzKHN0cmluZyBhbGlhcywgc3RyaW5nIGNvbW1hbmQsIG9iamVjdCBvYikKKyAgICAgICAgeworICAgICAgICAgICAgaWYgKCAhaGFuZGxlICkKKyAgICAgICAgICAgICAgICBoYW5kbGUgPSBkYl9jb25uZWN0KERBVEFCQVNFKTsKKyAgICAgICAgICAgIGlmICggIWRiX2V4ZWMoaGFuZGxlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAiaW5zZXJ0IGludG8gYWxpYXNlcyAobmFtZSwgYWxpYXMsIGNvbW1hbmQpIHZhbHVlcyAiCisgICAgICAgICAgICAgICAgICAgICAgICAgICIoJyIgKyBnZXR1aWQob2IpICsgIicsJyIgKyBkYl9jb252X3N0cmluZyhhbGlhcykKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICArICInLCciKworICAgICAgICAgICAgICAgICAgICAgICAgICBkYl9jb252X3N0cmluZyhjb21tYW5kKSArICInKSIpICkKKyAgICAgICAgICAgICAgICByZXR1cm4gLTE7CisgICAgICAgICAgICByZXR1cm4gMTsKKyAgICAgICAgfQorCisgICAgICAgIHB1YmxpYyBpbnQgUmVtb3ZlQWxpYXMoc3RyaW5nIGFsaWFzLCBvYmplY3Qgb2IpCisgICAgICAgIHsKKyAgICAgICAgICAgIGludCByZXM7CisKKyAgICAgICAgICAgIGlmICggIWhhbmRsZSApCisgICAgICAgICAgICAgICAgaGFuZGxlID0gZGJfY29ubmVjdChEQVRBQkFTRSk7CisgICAgICAgICAgICByZXMgPSBkYl9leGVjKGhhbmRsZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgImRlbGV0ZSBmcm9tIGFsaWFzZXMgd2hlcmUgKG5hbWUgPSAnIisKKyAgICAgICAgICAgICAgICAgICAgICAgICAgZ2V0dWlkKG9iKSArICInIEFORCBhbGlhcyA9ICciCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKyBkYl9jb252X3N0cmluZyhhbGlhcykrCisgICAgICAgICAgICAgICAgICAgICAgICAgICInKSIpOworICAgICAgICAgICAgaWYgKCAhcmVzICkKKyAgICAgICAgICAgICAgICByZXR1cm4gMDsKKyAgICAgICAgICAgIHJlcyA9IGRiX2FmZmVjdGVkX3Jvd3MoaGFuZGxlKTsKKyAgICAgICAgICAgIHJldHVybiAocmVzID4gMCk/MTotMTsKKyAgICAgICAgfQorCisgICAgICAgIHB1YmxpYyBtaXhlZCAqUXVlcnlBbGlhc2VzKHN0cmluZyBtYXNrLCBvYmplY3Qgb2IpCisgICAgICAgIHsKKyAgICAgICAgICAgIG1peGVkICpyZXN1bHQ7CisgICAgICAgICAgICBzdHJpbmcgKnRtcDsKKworICAgICAgICAgICAgaWYgKCAhaGFuZGxlICkKKyAgICAgICAgICAgICAgICBoYW5kbGUgPSBkYl9jb25uZWN0KERBVEFCQVNFKTsKKyAgICAgICAgICAgIGlmICggIWRiX2V4ZWMoaGFuZGxlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAic2VsZWN0IGFsaWFzZXMuYWxpYXMsIGFsaWFzZXMuY29tbWFuZCBmcm9tIGFsaWFzZXMgd2hlcmUgIgorICAgICAgICAgICAgICAgICAgICAgICAgICAiKG5hbWUgPSAnIiArIGdldHVpZChvYikrCisgICAgICAgICAgICAgICAgICAgICAgICAgICInIEFORCBhbGlhcyByZWdleHAgJyIgKyBkYl9jb252X3N0cmluZyhtYXNrKSArICInKSIpICkKKyAgICAgICAgICAgICAgICByZXR1cm4gKHsgfSk7CisgICAgICAgICAgICByZXN1bHQgPSAoeyB9KTsKKyAgICAgICAgICAgIHdoaWxlICggc2l6ZW9mKHRtcCA9IGRiX2ZldGNoKGhhbmRsZSkpICkKKyAgICAgICAgICAgICAgICByZXN1bHQgKz0gKHsgdG1wIH0pOworICAgICAgICAgICAgcmV0dXJuIHJlc3VsdDsKKyAgICAgICAgfQorCisgICAgICAgIHB1YmxpYyBzdHJpbmcgUXVlcnlBbGlhcyhzdHJpbmcgYWxpYXMsIG9iamVjdCBvYikKKyAgICAgICAgeworICAgICAgICAgICAgbWl4ZWQgKnJlc3VsdDsKKyAgICAgICAgICAgIHN0cmluZyAqdG1wOworCisgICAgICAgICAgICBpZiAoICFoYW5kbGUgKQorICAgICAgICAgICAgICAgIGhhbmRsZSA9IGRiX2Nvbm5lY3QoREFUQUJBU0UpOworICAgICAgICAgICAgaWYgKCAhZGJfZXhlYyhoYW5kbGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICJzZWxlY3QgYWxpYXNlcy5jb21tYW5kIGZyb20gYWxpYXNlcyB3aGVyZSAiCisgICAgICAgICAgICAgICAgICAgICAgICAgICIobmFtZSA9ICciICsgZ2V0dWlkKG9iKSsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIicgQU5EIGFsaWFzID0gJyIgKyBkYl9jb252X3N0cmluZyhhbGlhcykgKyAiJykiKSApCisgICAgICAgICAgICAgICAgcmV0dXJuIDA7CisgICAgICAgICAgICByZXN1bHQgPSAoeyB9KTsKKyAgICAgICAgICAgIHdoaWxlICggc2l6ZW9mKHRtcCA9IGRiX2ZldGNoKGhhbmRsZSkpICkKKyAgICAgICAgICAgICAgICByZXN1bHQgKz0gdG1wOworICAgICAgICAgICAgcmV0dXJuIHNpemVvZihyZXN1bHQpP3Jlc3VsdFswXTowOworICAgICAgICB9CisKKworQVVUSE9SCisgICAgICAgIE1hcmsgRGFuaWVsIFJlaWRlbCBhbmQgb3RoZXJzLgorCitISVNUT1JZCisgICAgICAgIG15U1FMIHN1cHBvcnQgd2FzIGFkZGVkIGFzIGEgcGFja2FnZSBpbiAzLjIuOCBhbmQgYmVjYW1lIGFuZAorICAgICAgICBpbnRlZ3JhbCBkcml2ZXIgcGFydCBpbiAzLjIuOS4KKyAgICAgICAgTERNdWQgMy4yLjExIGFkZGVkIGEgcHJpdmlsZWdlX3Zpb2xhdGlvbigpIGNhbGwgZm9yIGVhY2ggZWZ1bi4KKworU0VFIEFMU08KKyAgICAgICAgcGdzcWwoQyksIGRiX2FmZmVjdGVkX3Jvd3MoRSksIGRiX2NvbnZfc3RyaW5nKEUpLCBkYl9jbG9zZShFKSwKKyAgICAgICAgZGJfY29ubmVjdChFKSwgZGJfZXhlYyhFKSwgZGJfZmV0Y2goRSksIGRiX2hhbmRsZXMoRSksCisgICAgICAgIGRiX2luc2VydF9pZChFKSwgZGJfY29sZGVmcyhFKSwgZGJfZXJyb3IoRSksIHByaXZpbGVnZV92aW9sYXRpb24oQSkKZGlmZiAtLWdpdCBhL2RvYy9jb25jZXB0cy9uYXRpdmUgYi9kb2MvY29uY2VwdHMvbmF0aXZlCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjEzY2YwMDgKLS0tIC9kZXYvbnVsbAorKysgYi9kb2MvY29uY2VwdHMvbmF0aXZlCkBAIC0wLDAgKzEsMTcwIEBACitDT05DRVBUCisgICAgICAgIGRyaXZlciBtb2RlcyAvIG5hdGl2ZSBkcml2ZXIgbW9kZQorCitERVNDUklQVElPTgorICAgICAgICBEdXJpbmcgdGhlIGV2b2x1dGlvbiBvZiBMUE11ZCB0aGVyZSBoYXMgYmVlbiBhIGhpYXR1cyBhcyB0aGUKKyAgICAgICAgb2xkIGRyaXZlciBiZWNhbWUgdG9vIHJlc3RyaWN0aW5nIGZvciB0aGUgZGVtYW5kcyBvZiBtb2Rlcm4KKyAgICAgICAgbXVkczogaXQgZGlkIGEgbG90IG9mIHRoaW5ncyB0aGUgbXVkbGliIGNvdWxkIGRvIGJldHRlciBvcgorICAgICAgICBjb21wbGV0ZWx5IGRpZmZlcmVudC4gUmVtb3ZpbmcgdGhlc2UgdGhpbmdzIGZyb20gdGhlIGRyaXZlcgorICAgICAgICB3ZXJlbid0IGEgcHJvYmxlbSwgYnV0IHRvIGtlZXAgY29tcGF0aWJsZSB3aXRoIHRoZSBleGlzdGluZworICAgICAgICBtdWRsaWJzIChuYW1lbHkgdGhlIHdlbGwta25vd24gMi40LjUgbGliKSwgaXQgd2FzIHBvc3NpYmxlIHRvCisgICAgICAgIHVuZG8gdGhlc2UgY2hhbmdlcy4gRmlyc3QgYnkgc2V0dGluZyBhIHJ1bnRpbWUgb3B0aW9uLCB0aGVuCisgICAgICAgIGJ5IGNvbXBpbGluZyB0aGUgZHJpdmVyIGVpdGhlciBpbiAnY29tcGF0JyBvciBpbiAnbmF0aXZlJyBtb2RlLgorCisgICAgICAgIFN0YXJ0aW5nIHdpdGggMy4yLjEsIHRoZSBkaXN0aW5jdGlvbiBiZXR3ZWVuIGNvbXBhdCBhbmQgbmF0aXZlCisgICAgICAgIG1vZGUgaXMgbW9yZSBhbmQgbW9yZSB0cmFuc2ZlcnJlZCBpbnRvIHRoZSBtdWRsaWIsIHdpdGggdGhlCisgICAgICAgIGZ1dHVyZSBnb2FsIG9mIGhhdmluZyBhIG1vZGVsZXNzIGRyaXZlci4KKworICAgICAgICBTdGFydGluZyB3aXRoIDMuMi43LCBuYXRpdmUgbW9kZSBubyBsb25nZXIgZXhpc3RzIGFzIHN1Y2gsCisgICAgICAgIG9ubHkgJ3BsYWluJyAocXVhc2kgYSBzdXBlcnNldCBvZiAnbmF0aXZlJyBhbmQgJ2NvbXBhdCcpCisgICAgICAgIGFuZCAnY29tcGF0JyBtb2RlLCBhbmQgc2luY2UgMy4yLjkgdGhlIG1vZGUgc2VsZWN0aW9uIGNhbiBiZQorICAgICAgICBtYWRlIHZpYSBjb21tYW5kbGluZSBvcHRpb24uCisKKyAgICAgICAgVGhlIG1haW4gbW9kZSBvZiB0aGUgZHJpdmVyIGlzIGRldGVybWluZWQgYXQgY29tcGlsZSB0aW1lCisgICAgICAgIGJ5IHByZXByb2Nlc3NvciBzeW1ib2xzIHRvIGJlIGRlZmluZWQvdW5kZWZpbmVkIGluIGNvbmZpZy5oOgorCisgICAgICAgICAgQ09NUEFUX01PREU6IHdoZW4gZGVmaW5lZCwgdGhlIGNvbXBhdCBtb2RlIHNwZWNpZmljcyBhcmUgYWN0aXZhdGVkCisgICAgICAgICAgICAgICAgICAgICAgIGJ5IGRlZmF1bHQuCisKKyAgICAgICAgQWRkaXRpb25hbCBtb2RpZmljYXRpb25zIGNhbiBiZSBhY2hpZXZlZCBieSB0aGUgc3BlY2lmaWNhdGlvbgorICAgICAgICBvZiBjb21tYW5kbGluZSBhcmd1bWVudHMgKG1vc3Qgb2YgdGhlbSBoYXZlIGEgZGVmYXVsdCBzZXR0aW5nCisgICAgICAgIGVudHJ5IGluIGNvbmZpZy5oIGFzIHdlbGwpOgorCisgICAgICAgICAgc3RyaWN0LWV1aWRzOiB3aGVuIGFjdGl2ZSwgZXVpZCB1c2FnZSBpcyBlbmZvcmNlZC4KKyAgICAgICAgICBjb21wYXQ6ICAgICAgIHdoZW4gYWN0aXZlLCB0aGUgY29tcGF0IG1vZGUgaXMgdXNlZC4KKworICAgICAgICBGb2xsb3dpbmcgaXMgdGhlIGRlc2NyaXB0aW9uIG9mIHRoZSBjaGFuZ2VzIChkZSkgYWN0aXZhdGVkIGJ5CisgICAgICAgIHRoZXNlIGRlZmluZXMuIEEgc2hvcnRoYW5kIG5vdGF0aW9uIGlzIHVzZWQ6ICdjb21wYXQnIG1lYW5zCisgICAgICAgICdpZiBjb21wYXQgbW9kZSBpcyBhY3RpdmUnIGFuZCAnIWNvbXBhdCcgbWVhbnMgJ2lmCisgICAgICAgIGNvbXBhdCBtb2RlIGlzIG5vdCBhY3RpdmUnLCBldGMuCisKKworICAgICAgICBQcmVkZWZpbmVkIFByZXByb2Nlc3NvciBTeW1ib2xzCisgICAgICAgICAgSWYgY29tcGF0LCB0aGUgc3ltYm9scyBDT01QQVRfRkxBRyBhbmQgX19DT01QQVRfTU9ERV9fIGFyZQorICAgICAgICAgIGRlZmluZWQgZm9yIGFsbCBMUEMgcHJvZ3JhbXMuCisgICAgICAgICAgSWYgc3RyaWN0LWV1aWRzLCB0aGUgc3ltYm9sIF9fU1RSSUNUX0VVSURTX18gaXMgZGVmaW5lZAorICAgICAgICAgIGZvciBhbGwgTFBDIHByb2dyYW1zLgorICAgICAgICAgIEZvciBjb21wYXRpYmlsaXR5IHJlYXNvbnMsIHRoZSBzeW1ib2wgX19FVUlEU19fIGlzIGRlZmluZWQKKyAgICAgICAgICBmb3IgYWxsIExQQyBwcm9ncmFtcyBhbGwgdGhlIHRpbWUuCisKKworICAgICAgICBQcmVsb2FkaW5nIE9mIE9iamVjdHMKKyAgICAgICAgICBUaGUgZHJpdmVyIGhhcyB0aGUgcG9zc2liaWxpdHkgdG8gcHJlbG9hZCBvYmplY3RzIGJlZm9yZSB0aGUKKyAgICAgICAgICBnYW1lIGlzIGFjdHVhbGx5IG9wZW5lZCB0byB0aGUgd29ybGQuIFRoaXMgaXMgZG9uZSBieQorICAgICAgICAgIGNhbGxpbmcgbWFzdGVyLT5lcGlsb2coKSwgd2hpY2ggaGFzIHRvIHJldHVybiAwIG9yIGFuIGFycmF5LgorICAgICAgICAgIElmIGl0cyBhbiBhcnJheSwgaXRzIGVsZW1lbnRzIChhcyBsb25nIGFzIHRoZXkgYXJlIHN0cmluZ3MpCisgICAgICAgICAgYXJlIGdpdmVuIG9uZSBieSBvbmUgYXMgYXJndW1lbnQgdG8gbWFzdGVyLT5wcmVsb2FkKCkgd2hpY2gKKyAgICAgICAgICBtYXkgbm93IHByZWxvYWQgdGhlIG9iamVjdHMgKG9yIGRvIGFueXRoaW5nIGVsc2UpLgorCisKKyAgICAgICAgSW5pdGlhbGlzYXRpb24gT2YgT2JqZWN0cworICAgICAgICAgIEl0IGlzIHRhc2sgb2YgdGhlIG11ZGxpYiAodGhyb3VnaCB0aGUgZHJpdmVyIGhvb2tzKSB0byBjYWxsCisgICAgICAgICAgdGhlIGluaXRpYWxpc2F0aW9uIGxmdW5zIGluIG5ld2x5IGNyZWF0ZWQgb2JqZWN0cy4gVGhlCisgICAgICAgICAgZm9sbG93aW5nIHRhYmxlIHNob3dzIHRoZSB0cmFkaXRpb25hbCBjYWxsczoKKworICAgICAgICAgICAgICAgICAgbW9kZSAgICAgICAgOiBpbml0IGNhbGwgOiByZXNldCBjYWxsCisgICAgICAgICAgIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgICAgICAgICAgICAhY29tcGF0ICYgIW5hdGl2ZSA6ICBjcmVhdGUoKSA6ICByZXNldCgxKQorICAgICAgICAgICAgIWNvbXBhdCAmICBuYXRpdmUgOiAgY3JlYXRlKCkgOiAgcmVzZXQoKQorICAgICAgICAgICAgIGNvbXBhdCAmICFuYXRpdmUgOiAgcmVzZXQoMCkgOiAgcmVzZXQoMSkKKyAgICAgICAgICAgICBjb21wYXQgJiAgbmF0aXZlIDogIHJlc2V0KDApIDogIHJlc2V0KDEpCisKKyAgICAgICAgICBJZiBJTklUSUFMSVpBVElPTl9CWV9fX0lOSVQgd2FzIGRlZmluZWQsIHRoZSBsZnVuIF9fSU5JVCgpCisgICAgICAgICAgaXMgY2FsbGVkIGZpcnN0IG9uIGNyZWF0aW9uIHRvIGluaXRpYWxpemUgdGhlIG9iamVjdHMKKyAgICAgICAgICB2YXJpYWJsZXMuCisKKworICAgICAgICBNb3ZlbWVudCBPZiBPYmplY3RzCisgICAgICAgICAgVGhlIGVmdW4gbW92ZV9vYmplY3QoKSBpcyBpbXBsZW1lbnRlZCBpbiB0aGUgbXVkbGliIHRocm91Z2gKKyAgICAgICAgICBkcml2ZXIgaG9va3MgYW5kIHRoZSBzZXRfZW52aXJvbm1lbnQoKSBlZnVuLgorICAgICAgICAgIG1vdmVfb2JqZWN0KCkgaXRzZWxmIGV4aXN0cyBqdXN0IGZvciBjb252ZW5pZW5jZSBhbmQKKyAgICAgICAgICBjb21wYXRpYmlsaXR5LgorCisgICAgICAgICAgSW4gb3JpZ2luYWwgbmF0aXZlIG1vZGUsIG1vdmVfb2JqZWN0KCkgY291bGQgYXBwbGllZCBvbmx5IHRvCisgICAgICAgICAgdGhpc19vYmplY3QoKSBhcyB0aGUgb2JqZWN0IHRvIG1vdmUsIGFuZCBpdCBjYWxsZWQgdGhlIGxmdW4KKyAgICAgICAgICBleGl0KCkgaW4gdGhlIG9sZCBlbnZpcm9ubWVudCBpZiBpbiBjb21wYXQgbW9kZS4gQXMgYSBzaWRlCisgICAgICAgICAgZWZmZWN0LCB0aGUgbGZ1biBleGl0KCkgbWF5IG5vdCBiZSB0YXJnZXQgb2YgYWRkX2FjdGlvbigpcworICAgICAgICAgIGluIGNvbXBhdCBtb2RlLgorCisgICAgICAgICAgSW4gY29tcGF0IG1vZGUsIG9iamVjdHMgbWF5IGJlIG1vdmVkIHVzaW5nIHRoZSB0cmFuc2ZlcigpCisgICAgICAgICAgZWZ1bi4gSXQgZG9lcyBtYWtlIGFzc3VtcHRpb25zIGFib3V0IHRoZSBkZXNpZ24gb2YgdGhlCisgICAgICAgICAgbXVkbGliLCB0aG91Z2gsIGFzIGl0IGNhbGxzIHRoZSBsZnVucyBxdWVyeV93ZWlnaHQoKSwKKyAgICAgICAgICBjYW5fcHV0X2FuZF9nZXQoKSwgZ2V0KCksIHByZXZlbnRfaW5zZXJ0KCkgYW5kIGFkZF93ZWlnaHQoKS4KKworCisgICAgICAgIEVmdW5zIEluIEdlbmVyYWwKKyAgICAgICAgICBjcmVhdG9yKCksIHRyYW5zZmVyKCkKKyAgICAgICAgICAgIFRoZXNlIGV4aXN0IG9ubHkgaW4gY29tcGF0IG1vZGUgKGNyZWF0b3IoKSBpcworICAgICAgICAgICAgaWRlbnRpY2FsIHdpdGggZ2V0dWlkKCkpLgorCisgICAgICAgICAgb2JqZWN0X25hbWUoKSxmdW5jdGlvbl9leGlzdHMoKQorICAgICAgICAgICAgSW4gIWNvbXBhdCBtb2RlLCB0aGUgcmV0dXJuZWQgZmlsZW5hbWVzIHN0YXJ0IHdpdGggYQorICAgICAgICAgICAgbGVhZGluZyAnLycsIGluIGNvbXBhdCBtb2RlIHRoZXkgZG9uJ3QuCisKKyAgICAgICAgICBwYXJzZV9jb21tYW5kKCkKKyAgICAgICAgICAgIFRoaXMgY29tbWFuZCBleGlzdHMgaW4gdHdvIHZlcnNpb25zOiB0aGUgb2xkIGlzIHVzZWQgd2l0aAorICAgICAgICAgICAgY29tcGF0LCB0aGUgbmV3IHdpdGggIWNvbXBhdC4gSG93ZXZlciwKKyAgICAgICAgICAgIFNVUFBMWV9QQVJTRV9DT01NQU5EIG11c3QgYmUgZGVmaW5lZCBpbiBjb25maWcuaCBpbiBib3RoCisgICAgICAgICAgICBjYXNlcyAodGhpcyBlZnVuIGlzIG5vdCB2ZXJ5IHVzZWZ1bCBhdCBhbGwpLgorCisgICAgICAgICAgcHJvY2Vzc19zdHJpbmcoKQorICAgICAgICAgICAgSWYgdGhpc19vYmplY3QoKSBkb2Vzbid0IGV4aXN0LCBpdCBkZWZhdWx0cyB0byB0aGlzX3BsYXllcigpCisgICAgICAgICAgICBhbmQgcmVjZWl2ZXMgdGhlIGJhY2tib25lIHVpZCAocmV0dXJuZWQgYnkgbWFzdGVyLT5nZXRfYmJfdWlkKCkpCisgICAgICAgICAgICBhcyBldWlkLiBJZiBzdHJpY3QtZXVpZHMsIHRoaXMgdWlkIG11c3Qgbm90IGJlIDAuCisKKyAgICAgICAgVXNlcmlkcyBhbmQgRWZmZWN0aXZlIFVzZXJpZHMKKyAgICAgICAgICBUaGlzIGlzIHByb2JhYmx5IHRoZSBtb3N0IGltcG9ydGFudCBkaWZmZXJlbmNlIGJldHdlZW4gdGhlCisgICAgICAgICAgbW9kZXMuCisKKyAgICAgICAgICBMUE11ZCBhbHdheXMgaGFkIHVzZXJpZHMgKHVpZHMpIGF0dHJpYnV0aW5nIHRoZSBvYmplY3RzLAorICAgICAgICAgIHRob3VnaCB0aGV5IHdlcmUgY2FsbGVkICdjcmVhdG9yIG5hbWVzJyBpbiBjb21wYXQgbW9kZS4KKyAgICAgICAgICBJbnRlcm5hbGx5LCB0aGUgY29tcGF0IG1vZGUgdXNlcyB0aGUgJ2NyZWF0b3IgbmFtZXMnIGFzCisgICAgICAgICAgKGUpdWlkLgorCisgICAgICAgICAgV2l0aCB0aGUgaW50cm9kdWN0aW9uIG9mIG5hdGl2ZS9wbGFpbiBtb2RlLCBhZGRpdGlvbmFsbHkKKyAgICAgICAgICAnZWZmZWN0aXZlIHVzZXJpZHMnIChldWlkcykgd2VyZSBpbnRyb2R1Y2VkIHRvIGltcHJvdmUKKyAgICAgICAgICBzZWN1cml0eSBoYW5kbGluZyAod2hpY2ggd2FzIG9ubHkgYSBwYXJ0aWFsIHN1Y2Nlc3MpLgorICAgICAgICAgIFRoZSBoYXJkY29kZWQgaGFuZGxpbmcgb2YgZXVpZHMgYW5kIHVpZHMgd2FzIHF1aXRlIGNvbXBsZXgKKyAgICAgICAgICBhbmQgdG9vIG11ZGxpYi1pbnNlbnNpdGl2ZSwgc28gbW9zdCBvZiBpdCBnb3QgbW92ZWQgZnJvbSB0aGUKKyAgICAgICAgICBkcml2ZXIgaW50byB0aGUgbXVkbGliIHdpdGggMy4yLjEuCisKKyAgICAgICAgICBJbiBzdHJpY3QtZXVpZHMgbW9kZSwgb25seSBvYmplY3RzIHdpdGggYSBub24temVybyBldWlkIG1heSBsb2FkCisgICAgICAgICAgb3IgY3JlYXRlIG5ldyBvYmplY3RzLgorCisgICAgICAgICAgLS0tIEluIERldGFpbCAtLS0KKworICAgICAgICAgICAgVXNlcmlkcyBvZiB0aGUgTWFzdGVyCisgICAgICAgICAgICAgIFRoZSBtYXN0ZXJzIChlKXVpZCBpcyBkZXRlcm1pbmVkIGJ5IGEgY2FsbCB0bworICAgICAgICAgICAgICBtYXN0ZXItPmdldF9tYXN0ZXJfdWlkKCkuCisgICAgICAgICAgICAgIEluIHN0cmljdC1ldWlkcyBtb2RlLCB0aGUgcmVzdWx0IGhhcyB0byBiZSBhIHN0cmluZywKKyAgICAgICAgICAgICAgICBvdGhlcndpc2UgdGhlIGRyaXZlciB3b24ndCBzdGFydCB1cCBhdCBhbGwuIElmIHRoZSByZXN1bHQgaXMKKyAgICAgICAgICAgICAgICB2YWxpZCBpdCBpcyBzZXQgYXMgdGhlIG1hc3RlcnMgdWlkIGFuZCBldWlkLgorICAgICAgICAgICAgICBJbiAhc3RyaWN0LWV1aWRzIG1vZGUsIHRoZSByZXN1bHQgbWF5IGJlIGFueSB2YWx1ZTogMCBvciBhCisgICAgICAgICAgICAgICAgc3RyaW5nIGFyZSB0cmVhdGVkIGFzIHRoZSB1aWQgdG8gc2V0LCBhIG5vbi16ZXJvIGludGVnZXIKKyAgICAgICAgICAgICAgICBsZWFkcyB0byB0aGUgdXNlIG9mIHRoZSB1aWQgc2V0IGluIHRoZSBkZWZhdWx0ICdnbG9iYWwnCisgICAgICAgICAgICAgICAgd2l6bGlzdCBlbnRyeSwgYW5kIGFueSBvdGhlciB2YWx1ZSBkZWZhdWx0cyB0byAwLgorICAgICAgICAgICAgICAgIFRoZSBldWlkIGlzIGVpdGhlciBzZXQgdG8gdGhlIHJldHVybmVkIHN0cmluZyAoaWYgYW55KSwKKyAgICAgICAgICAgICAgICBvciB0byAwLgorICAgICAgICAgICAgICBUaGUgbWFzdGVycyB1aWQgaXMgZGV0ZXJtaW5lZCBvbmx5IG9uIHN0YXJ0dXAgdGhpcyB3YXksCisgICAgICAgICAgICAgIGF0IHJ1bnRpbWUgdGhlIHVpZHMgb2YgYSByZWxvYWRlZCBtYXN0ZXIgZGV0ZXJtaW5lZCBhcworICAgICAgICAgICAgICBmb3IgZXZlcnkgb2JqZWN0IGJ5IGEgY2FsbCB0byB0aGUgYXBwcm9wcmlhdGUgZHJpdmVyCisgICAgICAgICAgICAgIGhvb2tzLgorCisgICAgICAgICAgICBVc2VyaWRzIG9mIE5ldyBPYmplY3RzCisgICAgICAgICAgICAgIFRvIGRldGVybWluZSB0aGUgKGUpdWlkcyBmb3IgYSBuZXcgb2JqZWN0IChsb2FkZWQgb3IKKyAgICAgICAgICAgICAgaW5oZXJpdGVkLCBvciBjbG9uZWQpLCB0aGUgYXBwcm9wcmlhdGUgZHJpdmVyIGhvb2sgaXMKKyAgICAgICAgICAgICAgZXZhbHVhdGVkIChIX0xPQURfVUlEUywgSF9DTE9ORV9VSURTKSBhbmQgdGhlIHJlc3VsdCBzZXQKKyAgICAgICAgICAgICAgYXMgKGUpdWlkLiBUaGUgcmVzdWx0IG1heSBiZSBhIHNpbmdsZSB2YWx1ZSwgaW4gd2hpY2ggY2FzZSB0aGUKKyAgICAgICAgICAgICAgZXVpZCBpcyBzZXQgdG8gMCwgb3IgYW4gYXJyYXkgKHsgdWlkLCBldWlkIH0pLgorICAgICAgICAgICAgICBJbiBzdHJpY3QtZXVpZHMgbW9kZSwgYm90aCB1aWQgYW5kIGV1aWQgbXVzdCBiZSAwIG9yIGEgc3RyaW5nLAorICAgICAgICAgICAgICAgIGFueSBvdGhlciB2YWx1ZSBjYXVzZXMgdGhlIGxvYWQvY2xvbmUgdG8gZmFpbC4KKyAgICAgICAgICAgICAgSW4gIXN0cmljdC1ldWlkcyBtb2RlLCB0aGUgdWlkIChob3dldmVyIHJldHVybmVkKSBtYXkgYWxzbyBiZQorICAgICAgICAgICAgICAgIGEgbm9uLXplcm8gaW50ZWdlciB0byB1c2UgdGhlIHVpZCBvZiB0aGUgZ2xvYmFsCisgICAgICAgICAgICAgICAgd2l6bGlzdCBlbnRyeSBhcyB1aWQuIFRoZSBldWlkIGlzIHRoZW4KKyAgICAgICAgICAgICAgICBzZXQgdG8gZWl0aGVyIDAgb3IgdGhlIHNlY29uZCBlbnRyeSBvZiB0aGUgcmV0dXJuZWQKKyAgICAgICAgICAgICAgICBhcnJheSBpZiBpdCdzIGEgc3RyaW5nLgorCisgICAgICAgICAgLS0tIC0tLQorCitTRUUgQUxTTworICAgICAgICBob29rcyhDKSwgdWlkcyhDKSwgbW92ZV9vYmplY3QoRSksIGluaXRpYWxpc2F0aW9uKExQQykKZGlmZiAtLWdpdCBhL2RvYy9jb25jZXB0cy9uZWdvdGlhdGlvbiBiL2RvYy9jb25jZXB0cy9uZWdvdGlhdGlvbgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5lZDIzMThmCi0tLSAvZGV2L251bGwKKysrIGIvZG9jL2NvbmNlcHRzL25lZ290aWF0aW9uCkBAIC0wLDAgKzEsMzE2IEBACitDT05DRVBUCisgICAgICAgIFRlbG5ldCBOZWdvdGlhdGlvbnMKKworREVTQ1JJUFRJT04KKyAgICAgICAgVGhlIHRlbG5ldCBwcm90b2NvbCBpcyB1c2VkIHRvIGNvbnRyb2wgdGV4dGJhc2VkIGNvbm5lY3Rpb25zCisgICAgICAgIGJldHdlZW4gYSBjbGllbnQgKHRoZSAndGVsbmV0JyBwcm9ncmFtIG9yIGEgbXVkIGNsaWVudCkgYW5kIGEKKyAgICAgICAgc2VydmVyICh0aGUgZ2FtZSBkcml2ZXIpLiBNb3N0IG9mIHRoZSBvcHRpb25zIG9mZmVyZWQgYnkgdGhlCisgICAgICAgIHByb3RvY29sIGFyZSBvcHRpb25hbCBhbmQgbmVlZCB0byBiZSBuZWdvdGlhdGVkIGJldHdlZW4gdGhlCisgICAgICAgIGNsaWVudCBhbmQgdGhlIHNlcnZlci4gIENvbnNlcXVlbnRseSwgYW5kIGR1ZSB0byB0aGVpcgorICAgICAgICBzcGVjaWFsaXplZCBuYXR1cmUsIG11ZCBjbGllbnRzIGRvbid0IGhhdmUgdG8gc3VwcG9ydCB0aGUgZnVsbAorICAgICAgICB0ZWxuZXQgb3B0aW9uIGZlYXR1cmUgc2V0LgorCisgICAgICAgIEZvciB0aGUgc2VydmVyIHRvIGZpbmQgb3V0IGlmIGEgY2xpZW50IHN1cHBvcnRzIHRoZSB0ZWxuZXQKKyAgICAgICAgcHJvdG9jb2wgYXQgYWxsLCBvbmUgZ29vZCBhcHByb2FjaCBpcyB0byBhIHNpbXBsZSwgY29tbW9ubHkKKyAgICAgICAgdXNlZCB0ZWxuZXQgY29tbWFuZCB0byB0aGUgY2xpZW50LiBJZiB0aGUgY2xpZW50IHJlYWN0cworICAgICAgICBjb25mb3JtIHRvIHRoZSBwcm90b2NvbCAob3Igc2VuZHMgdGVsbmV0IGNvbW1hbmRzIGl0c2VsZiksIHRoZQorICAgICAgICBtdWQgY2FuIGNvbnRpbnVlIHRvIG5lZ290aWF0ZSBmdXJ0aGVyIG9wdGlvbnMuIElmIHRoZSBjbGllbnQKKyAgICAgICAgZG9lcyBub3QgcmVhY3QsIHRoZSBtdWQgY2FuIHNhZmVseSByZWZyYWluIGZyb20gZnVydGhlcgorICAgICAgICBuZWdvdGlhdGlvbnMuCisKKyAgICAgICAgVGhlIGZvbGxvd2luZyBsaXN0IGlzIGEgbW9yZSBvciBsZXNzIGNvbXByZWhlbnNpdmUgb3ZlcnZpZXcgb2YKKyAgICAgICAgdGhlIHRlbG5ldCByZWxhdGVkIFJGQ3MgKGF2YWlsYWJsZSBmb3IgZXhhbXBsZSBvbgorICAgICAgICBodHRwOi8vd3d3LmZhcXMub3JnL3JmY3MpOgorCisJIFJGQyBUaXRlbCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZWwuIENvZGUKKworCSA0OTUgVEVMTkVUIFByb3RvY29sIFNwZWNpZmljYXRpb24KKwkgNTEzIENvbW1lbnRzIG9uIHRoZSBuZXcgVEVMTkVUIHNwZWNpZmljYXRpb25zCisJIDU1OSBDb21tZW50cyBvbiB0aGUgbmV3IFRFTE5FVCBQcm90b2NvbCBhbmQgaXRzIEltcGxlbQorCSA1OTUgU29tZSBUaG91Z2h0cyBpbiBEZWZlbnNlIG9mIHRoZSBURUxORVQgR28tQWhlYWQKKwkgNTk2IFNlY29uZCBUaG91Z2h0cyBvbiBUZWxuZXQgR28tQWhlYWQKKwkgNjUyIFRlbG5ldCBPdXRwdXQgQ2FycmlhZ2UtUmV0dXJuIERpc3Bvc2l0aW9uIE9wdGlvbiAgIE5BT0NSRCAgICAgMTAKKwkgNjUzIFRlbG5ldCBPdXRwdXQgSG9yaXpvbnRhbCBUYWJzdG9wcyBPcHRpb24gICAgICAgICAgIE5BT0hUUyAgICAgMTEKKwkgNjU0IFRlbG5ldCBPdXRwdXQgSG9yaXpvbnRhbCBUYWIgRGlzcG9zaXRpb24gT3B0aW9uICAgIE5BT0hURCAgICAgMTIKKwkgNjU1IFRlbG5ldCBPdXRwdXQgRm9ybWZlZWQgRGlzcG9zaXRpb24gT3B0aW9uICAgICAgICAgIE5BT0ZGRCAgICAgMTMKKwkgNjU2IFRlbG5ldCBPdXRwdXQgVmVydGljYWwgVGFic3RvcHMgT3B0aW9uICAgICAgICAgICAgIE5BT1ZUUyAgICAgMTQKKwkgNjU3IFRlbG5ldCBPdXRwdXQgVmVydGljYWwgVGFiIERpc3Bvc2l0aW9uIE9wdGlvbiAgICAgIE5BT1ZURCAgICAgMTUKKwkgNjU4IFRlbG5ldCBPdXRwdXQgTGluZWZlZWQgRGlzcG9zaXRpb24gICAgICAgICAgICAgICAgIE5BT0xGRCAgICAgMTYKKwkgNjk4IFRlbG5ldCBFeHRlbmRlZCBBc2NpaSBPcHRpb24gICAgICAgICAgICAgICAgICAgICAgIFgtQVNDSUkgICAgMTcKKwkgNzI3IFRlbG5ldCBMb2dvdXQgT3B0aW9uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIExPR09VVCAgICAgMTgKKwkgNzI4IEEgTWlub3IgUGl0ZmFsbCBpbiB0aGUgVGVsbmV0IFByb3RvY29sCisJIDczNSBSZXZpc2VkIFRFTE5FVCBCeXRlIE1hY3JvIE9wdGlvbiAgICAgICAgICAgICAgICAgICBCTSAgICAgICAgIDE5CisJIDc0OSBUZWxuZXQgU1VQRFVQLU9VVFBVVCBPcHRpb24gICAgICAgICAgICAgICAgICAgICAgICBTVVBEVVAgICAgIDIyCisJIDc2NCBUZWxuZXQgUHJvdG9jb2wgU3BlY2lmaWNhdGlvbgorCSA3NzkgVGVsbmV0IFNFTkQtTE9DQVRJT04gT3B0aW9uICAgICAgICAgICAgICAgICAgICAgICAgU0VORExPQyAgICAyMworCSA4MTggVGhlIFJlbW90ZSBVc2VyIFRlbG5ldCBTZXJ2aWNlCisJIDg1NCBUZWxuZXQgUHJvdG9jb2wgU3BlY2lmaWNhdGlvbgorCSA4NTUgVGVsbmV0IE9wdGlvbiBTcGVjaWZpY2F0aW9ucworCSA4NTYgVGVsbmV0IEJpbmFyeSBUcmFuc21pc3Npb24gICAgICAgICAgICAgICAgICAgICAgICAgQklOQVJZICAgICAgMAorCSA4NTcgVGVsbmV0IEVjaG8gT3B0aW9uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRUNITyAgICAgICAgMQorCSA4NTggVGVsbmV0IFN1cHByZXNzIEdvIEFoZWFkIE9wdGlvbiAgICAgICAgICAgICAgICAgICAgU0dBICAgICAgICAgMworCSA4NTkgVGVsbmV0IFN0YXR1cyBPcHRpb24gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU1RBVFVTICAgICAgNQorCSA4NjAgVGVsbmV0IFRpbWluZyBNYXJrIE9wdGlvbiAgICAgICAgICAgICAgICAgICAgICAgICAgVE0gICAgICAgICAgNgorCSA4NjEgVGVsbmV0IEV4dGVuZGVkIE9wdGlvbnMgLSBMaXN0IE9wdGlvbiAgICAgICAgICAgICAgRVhPUEwgICAgIDI1NQorCSA4ODQgVGVsbmV0IFRlcm1pbmFsIFR5cGUgT3B0aW9uICAgICAgICAgICAgICAgICAgICAgICAgVFRZUEUgICAgICAyNAorCSA4ODUgVGVsbmV0IEVuZCBvZiBSZWNvcmQgT3B0aW9uICAgICAgICAgICAgICAgICAgICAgICAgRU9SICAgICAgICAyNQorCSA5MzAgVGVsbmV0IFRlcm1pbmFsIFR5cGUgT3B0aW9uICAgICAgICAgICAgICAgICAgICAgICAgVFRZUEUgICAgICAyNAorCSA5MzMgT3V0cHV0IE1hcmtpbmcgVGVsbmV0IE9wdGlvbiAgICAgICAgICAgICAgICAgICAgICAgT1VUTVJLICAgICAyNworCSA5NDYgVGVsbmV0IFRlcm1pbmFsIExvY2F0aW9uIE51bWJlciBPcHRpb24gICAgICAgICAgICAgVFRZTE9DICAgICAyOAorCTEwNDMgVGVsbmV0IERhdGEgRW50cnkgVGVybWluYWwgT3B0aW9uIERPRElJUyBJbXBsZW1lbnQgREVUICAgICAgICAyMAorCTEwNTMgVGVsbmV0IFguMyBQQUQgT3B0aW9uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgWC4zLVBBRCAgICAzMAorCTEwNzMgVGVsbmV0IFdpbmRvdyBTaXplIE9wdGlvbiAgICAgICAgICAgICAgICAgICAgICAgICAgTkFXUyAgICAgICAzMQorCTEwNzkgVGVsbmV0IFRlcm1pbmFsIFNwZWVkIE9wdGlvbiAgICAgICAgICAgICAgICAgICAgICAgVFNQRUVEICAgICAzMgorCTEwODAgVGVsbmV0IFJlbW90ZSBGbG93IENvbnRyb2wgT3B0aW9uICAgICAgICAgICAgICAgICAgRkxPV0NUUkwgICAzMworCTEwOTEgVGVsbmV0IFRlcm1pbmFsLVR5cGUgT3B0aW9uICAgICAgICAgICAgICAgICAgICAgICAgVFRZUEUgICAgICAyNAorCTEwOTYgVGVsbmV0IFggRGlzcGxheSBMb2NhdGlvbiBPcHRpb24gICAgICAgICAgICAgICAgICAgWERJU1BMT0MgICAzNQorCTExMTYgVGVsbmV0IExpbmVtb2RlIE9wdGlvbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTElORU1PREUgICAzNAorCTExNDMgVGhlIFEgTWV0aG9kIG9mIEltcGxlbWVudGluZyBURUxORVQgT3B0aW9uIE5lZ290aWEKKwkxMTg0IFRlbG5ldCBMaW5lbW9kZSBPcHRpb24gICAgICAgICAgICAgICAgICAgICAgICAgICAgIExJTkVNT0RFICAgMzQKKwkxMzcyIFRlbG5ldCBSZW1vdGUgRmxvdyBDb250cm9sIE9wdGlvbiAgICAgICAgICAgICAgICAgIEZMT1dDVFJMICAgMzMKKwkxNDA4IFRlbG5ldCBFbnZpcm9ubWVudCBPcHRpb24gICAgICAgICAgICAgICAgICAgICAgICAgIEVOVklST04gICAgMzYKKwkxNTcxIFRlbG5ldCBFbnZpcm9ubWVudCBPcHRpb24gSW50ZXJvcGVyYWJpbGl0eSBJc3N1ZXMKKwkxNTcyIFRlbG5ldCBFbnZpcm9ubWVudCBPcHRpb24gICAgICAgICAgICAgICAgICAgICAgICAgIE5FV0VOViAgICAgMzkKKwkyMDY2IFRlbG5ldCBDaGFyc2V0IE9wdGlvbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIENIQVJTRVQgICAgNDIKKwkyMjE3IFRlbG5ldCBDb20gUG9ydCBDb250cm9sIE9wdGlvbiAgICAgICAgICAgICAgICAgICAgIENPTVBPUlQgICAgNDQKKwkyODc3IDUyNTAgVGVsbmV0IEVuaGFuY2VtZW50cworCisgICAgICAgIEFsbCBuZWdvdGlhdGlvbnMgc3RhcnQgd2l0aCB0aGUgc3BlY2lhbCBjaGFyYWN0ZXIgSUFDIHdoaWNoIGlzCisgICAgICAgIGRlZmluZWQgaW4gL3Vzci9pbmNsdWRlL2FycGEvdGVsbmV0LmggKG9yIGluCisgICAgICAgIHNyYy9kcml2ZXIvdGVsbmV0LmggZm9yIDMuMiguMSkpIGFuZCBoYXMgdGhlIGRlY2ltYWwgdmFsdWUgb2YKKyAgICAgICAgMjU1LiBOZWdvdGlhdGlvbnMgYXJlIGJhc2VkIG9uIGRpZmZlcmVudCB0ZWxuZXRvcHRpb25zICh0aGVpcgorICAgICAgICB2YWx1ZXMgYXJlIGRlZmluZWQgaW4gdGVsbmV0LmggdG9vKS4gQmVmb3JlIGEgbmVnb3RpYXRpb24gY2FuCisgICAgICAgIHN0YXJ0IHRoZSBjbGllbnQgYW5kIHRoZSBzZXJ2ZXIgaGF2ZSB0byBhZ3JlZSB0aGF0IHRoZXkKKyAgICAgICAgc3VwcG9ydCB0aGUgb3B0aW9uLgorICAgICAgICBUaGlzIHdvcmtzIGluIHRoZSBmb2xsb3dpbmcgd2F5OgorCisgICAgICAgIElmIGEgY2xpZW50IHdhbnRzIHRvIHNlbmQgc29tZXRoaW5nIHRvIHRoZSBzZXJ2ZXIgaXQgaGFzIHRvCisgICAgICAgIHNlbmQgJ0lBQyBXSUxMIG9wdGlvbicgKEZvciB0ZXJtaW5hbHR5cGUgbmVnb3RhdGlvbiB0aGlzIHdvdWxkCisgICAgICAgIGJlIHRoZSAzIGJ5dGVzIDI1NSwyNTEsMjQ7IGFnYWluLCBjaGVjayB0ZWxuZXQuaCkgdG8gY29uZmlybQorICAgICAgICB0aGF0IGl0IGlzIGFibGUgdG8gZG8gdGhhdC4gSWYgdGhlIHNlcnZlciBpcyBzdXBwb3J0aW5nIHRoYXQKKyAgICAgICAgb3B0aW9uIGFuZCB3YW50cyB0byByZWNlaXZlIHNvbWV0aGluZyBpdCBzZW5kcyAnSUFDIERPIG9wdGlvbicKKyAgICAgICAgKDI1NSwyNTMsb3B0aW9uKQorCisgICAgICAgIElmIG9uZSBzaWRlIGlzIHJlY2VpdmluZyBhbiAnSUFDIFdJTEwgb3B0aW9uJyBhbmQgaGFzIG5vdCB5ZXQKKyAgICAgICAgc2VudCB3aXRoIERPIG9yIERPTlQgaXQgaGFzIHRvIHJlc3BvbmQgd2l0aCBlaXRoZXIgJ0lBQyBETworICAgICAgICBvcHRpb24nIGlmIGl0IHdpbGwgc3VwcG9ydCB0aGlzIG5lZ290aWF0aW9uIG9yICdJQUMgRE9OVAorICAgICAgICBvcHRpb24nIGlmIGl0IHdvbid0LgorCisgICAgICAgIElmIG9uZSBzaWRlIGlzIHJlY2VpdmluZyBhbiAnSUFDIERPIG9wdGlvbicgYW5kIGhhcyBub3QgeWV0CisgICAgICAgIHNlbnQgYSBXSUxMIG9yIFdPTlQgaXQgaGFzIHRvIHJlcGx5IHdpdGggZWl0aGVyICdJQUMgV0lMTAorICAgICAgICBvcHRpb24nIGlmIGl0IHN1cHBvcnRzIHRoZSBvcHRpb24gb3IgJ0lBQyBXT05UIG9wdGlvbicgaWYgbm90LgorCisgICAgICAgIEEgc21hbGwgZXhhbXBsZTogTGV0cyBhc3N1bWUgd2Ugd2FudCB0byBuZWdvdGlhdGluZworICAgICAgICB0ZXJtaW5hbHR5cGUuIChURUxPUFRfVFRZUEUgd2l0aCB2YWx1ZSAyNCkuIGNsaWVudCBpcyB0aGUKKyAgICAgICAgdGVsbmV0IGV4ZWN1dGFibGUgb24gdGhlIHBsYXllcnNpZGUsIHRoZSBzZXJ2ZXIgaXMgdGhlCisgICAgICAgIGdhbWVkcml2ZXIuCisKKyAgICAgICAgICAgICAgICBjbGllbnQgICAgICAgICAgICAgICAgICAgICAgICBzZXJ2ZXIKKyAgICAgICAgICAgIElBQyBXSUxMIFRUWVBFCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBJQUMgRE8gVFRZUEUKKworICAgICAgICBPcjoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIElBQyBETyBUVFlQRQorICAgICAgICAgICAgSUFDIFdJTEwgVFRZUEUKKworICAgICAgICBBZnRlciB0aGlzIHdlIGFyZSByZWFkeSB0byB0cmFuc2ZlciB0aGUgdGVybWluYWx0eXBlIGZyb20gdGhlCisgICAgICAgIGNsaWVudCB0byB0aGUgc2VydmVyIGFzIGV4cGxhaW5lZCBiZWxvdy4KKworICAgICAgICBOb3cgd2UgYXJlIHJlYWR5IHRvIHN0YXJ0IHRoZSByZWFsIG5lZ290aWF0aW9ucy4gSSBleHBsYWluIHRoZQorICAgICAgICAzIG9wdGlvbnMgSSBoYXZlIGN1cnJlbnRseSBpbXBsZW1lbnRlZC4KKworICAgICAgICBGaXJzdCBUZXJtaW5hbFR5cGUgYWthIFRUWVBFIGFrYSAyNCBha2EgVEVMT1BUX1RUWVBFIGFzc3VtaW5nCisgICAgICAgIHRoZSBjbGllbnQgYW5kIHRoZSBzZXJ2ZXIgaGF2ZSBleGNoYW5nZWQgV0lMTC9ETy4KKworICAgICAgICBUaGUgc2VydmVyIGlzIG5vdyBmcmVlIHRvIHNlbmQgJ0lBQyBTQiBURUxPUFRfVFRZUEUKKyAgICAgICAgVEVMUVVBTF9TRU5EIElBQyBTRScgd2hpY2ggd2lsbCBiZSByZXBsaWVkIHdpdGggJ0lBQyBTQgorICAgICAgICBURUxPUFRfVFRZUEUgVEVMUVVBTF9JUyB0ZXJtaW5hbHR5cGUgSUFDIFNFJyB3aGVyZQorICAgICAgICB0ZXJtaW5hbHR5cGUgaXMgYSBub24temVybyB0ZXJtaW5hdGVkIHN0cmluZyAoaXQncyB0ZXJtaW5hdGVkCisgICAgICAgIGJ5IHRoZSBJQUMpIChGb3IgdmFsdWVzIGxvb2sgdXAgdGVsbmV0LmgpIEFORCBzd2l0Y2ggdGhlCisgICAgICAgIGNsaWVudCdzIHRlcm1pbmFsZW11bGF0aW9uIHRvICd0ZXJtaW5hbHR5cGUnLiB0ZXJtaW5hbHR5cGUgaXMKKyAgICAgICAgY2FzZS1pbnNlbnNpdGl2ZS4gdGVybWluYWwtdHlwZSBtYXkgYmUgVU5LTk9XTi4gVGhlIHNlcnZlciBtYXkKKyAgICAgICAgcmVwZWF0IHRoZSBTRU5EIHJlcXVlc3QgYW5kIHRoZSBjbGllbnQgd2lsbCByZXNwb25kIHdpdGggdGhlCisgICAgICAgIG5leHQgcHJlZmVycmVkIHRlcm1pbmFsdHlwZS4gSWYgdGhpcyBpcyB0aGUgc2FtZSBhcyB0aGUKKyAgICAgICAgcHJldmlvdXMgcmVjZWl2ZWQsIGl0IG1hcmtzIHRoZSBlbmQgb2YgdGhlIGxpc3Qgb2YKKyAgICAgICAgdGVybWluYWx0eXBlcy4gVGhlIG5leHQgU0VORCByZXF1ZXN0IHdpbGwgc3RhcnQgdGhlCisgICAgICAgIHRlcm1pbmFsdHlwZXMgZnJvbSB0aGUgYmVnaW5uaW5nLgorCisgICAgICAgIEV4YW1wbGU6ICh3ZSBoYXZlIGV4Y2hhbmdlZCBXSUxML0RPIGFscmVhZHkpCisgICAgICAgICAgICAgICAgICBjbGllbnQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlcnZlcgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIElBQyBTQiBUVFlQRSBTRU5EIElBQyBTRQorICAgICAgICBJQUMgU0IgVFRZUEUgSVMgVlQyMDAgSUFDIFNFCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSUFDIFNCIFRUWVBFIFNFTkQgSUFDIFNFCisgICAgICAgIElBQyBTQiBUVFlQRSBJUyBWVDEwMCBJQUMgU0UKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBJQUMgU0IgVFRZUEUgU0VORCBJQUMgU0UKKyAgICAgICAgSUFDIFNCIFRUWVBFIElTIFZUNTIgSUFDIFNFCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSUFDIFNCIFRUWVBFIFNFTkQgSUFDIFNFCisgICAgICAgIElBQyBTQiBUVFlQRSBJUyBWVDUyIElBQyBTRQorICAgICAgICAvKiB0aGlzIG1hcmtzIHRoYXQgd2UgaGF2ZSBhbGwgdGVybWluYWx0eXBlcy4gV2UgZGVjaWRlIHRvIHVzZSB0aGUKKyAgICAgICAgICogdnQyMDAgbW9kZSBzbyB3ZSBoYXZlIHRvIHNraXAgdG8gVlQyMDAKKyAgICAgICAgICovCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSUFDIFNCIFRUWVBFIFNFTkQgSUFDIFNFCisgICAgICAgIElBQyBTQiBUVFlQRSBJUyBWVDIwMCBJQUMgU0UKKworCisgICAgICAgIE5leHQgaW1wb3J0YW50IG9wdGlvbiBpcyBOQVdTICgzMSkgb3IgV2luZG93U2l6ZU5lZ290aWF0aW9uLgorCisgICAgICAgIFRoaXMgb25lIGlzIGEgYml0IGVhc2llciB0aGFuIHRlcm1pbmFsdHlwZS4gQWZ0ZXIgaGF2aW5nCisgICAgICAgIHJlY2VpdmVkIGEgSUFDIERPIE5BV1MgZnJvbSB0aGUgc2VydmVyLCB0aGUgY2xpZW50IHdpbGwgcmVwbHkKKyAgICAgICAgd2l0aCBJQUMgV0lMTCBOQVdTIGFuZCBpbW1lZGlhdGVseSBhZnRlciB0aGF0IHNlbmQgSUFDIFNCIE5BV1MKKyAgICAgICAgY29sdW1uc19oaWdoIGNvbHVtbnNfbG93IGxpbmVzX2hpZ2ggbGluZXNfbG93IElBQyBTRSB3aGVyZQorICAgICAgICB4eF9sb3cgcmVmZXJzIHRvIHRoZSBsb3dieXRlIG9mIHh4IGFuZCB4eF9oaWdoIHJlZmVycyB0byB0aGUKKyAgICAgICAgaGlnaGJ5dGUgb2YgeHguIFRoaXMgd2lsbCBiZSBhdXRvbWFnaWNhbGx5IHJlc2VudCBhdCBldmVyeQorICAgICAgICB3aW5kb3dyZXNpemUgKHdoZW4gdGhlIGNsaWVudCBnZXRzIGEgU0lHV0lOQ0ggZm9yIGV4YW1wbGUpIG9yCisgICAgICAgIGF0IHlvdXIgcmVxdWVzdCB3aXRoICdJQUMgU0IgTkFXUyBTRU5EIElBQyBTRScuCisKKyAgICAgICAgRXhhbXBsZTogKFdJTEwvRE8gZXhjaGFuZ2VkKQorICAgICAgICAgICAgICAgIGNsaWVudCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VydmVyCisgICAgICAgIElBQyBTQiBOQVdTIDAgODAgMCAyNCBJQUMgU0UgICAgICAgICAvKiB0aGUgc3RhbmRhcmQgdnQxMDAgd2luZG93c2l6ZSAqLworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIG5vIHJlcGx5ICovCisKKyAgICAgICAgQW5kLCBhIGJpdCBsZXNzIGltcG9ydGFudCBidXQgbW9zdCBjb21wbGV4LCB0aGUgTElORU1PREUgKDM0KQorICAgICAgICBvcHRpb24uIEl0IHdhcyBpbXBsZW1lbnRlZCBpdCBkdWUgdG8gdGhlIGZhY3QsIHRoYXQKKyAgICAgICAgc29tZSB3ZWlyZCBET1MgdGVsbmV0cyB3b3VsZCBub3Qgd29yayBvdGhlcndpc2UuIEltcGxlbWVudGVkCisgICAgICAgIGFyZSBvbmx5IHRoZSBhYnNvbHV0ZSBiYXNpYyBmZWF0dXJlLCB3aGljaCBpcyB0aGUgYWN0dWFsCisgICAgICAgIHN3aXRjaGluZyB0aGUgdGVsbmV0IHRvIGxpbmVtb2RlLiBBZnRlciBleGNoYW5naW5nIFdJTEwvRE8gdGhlCisgICAgICAgIHNlcnZlciBzZW5kcyBhIG1vZGVjaGFuZ2UgcmVxdWVzdCB0byB0aGUgY2xpZW50IHVzaW5nIElBQyBTQgorICAgICAgICBMSU5FTU9ERSBMTV9NT0RFIE1PREVfRURJVCBJQUMgU0UsIHdoaWNoIHNob3VsZCB0dXJuIG9uIGxvY2FsCisgICAgICAgIGNvbW1hbmRsaW5lLWVkaXRpbmcgZm9yIHRoZSBjbGllbnQuIElmIGEgY2xpZW50IHN1cHBvcnRzCisgICAgICAgIExJTkVNT0RFIGl0IEhBUyB0byBzdXBwb3J0IHRoaXMgbW9kZWNoYW5nZS4gVGhlIGNsaWVudCB3aWxsCisgICAgICAgIHJlcGx5IHdpdGggSUFDIFNCIExJTkVNT0RFIExNX01PREUgTU9ERV9FRElUfE1PREVfQUNLIElBQyBTRQorICAgICAgICAoeHx5IGlzIGJpdHdpc2Ugb3IpLiBUaGF0cyBpdCBmb3IgbGluZW1vZGUuIChZb3Ugd2lsbCBwZXJoYXBzCisgICAgICAgIHJlY2VpdmUgb3RoZXIgSUFDIFNCIExJTkVNT0RFcyB3aXRoIG90aGVyIExNX3h4eCAuLi4geW91IG1heQorICAgICAgICBpZ25vcmUgdGhlbS4gKEF0IGxlYXN0IElSSVggNS54IHNlbmRzIElBQyBTQiBMSU5FTU9ERSBMTV9TTEMKKyAgICAgICAgLi4uLiBJQUMgU0Ugd2hpY2ggZGVjbGFyZXMgdGhlIGxvY2FsIGNoYXJhY3RlcnNldC4pKS4KKworICAgICAgICBFeGFtcGxlOiAoV0lMTC9ETyBuZWdvdGlhdGVkKQorCisgICAgICAgICAgICAgICAgY2xpZW50ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlcnZlcgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSUFDIFNCIExJTkVNT0RFIExNX01PREUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBNT0RFX0VESVQgSUFDIFNFCisgICAgICAgIElBQyBTQiBMSU5FTU9ERSBMTV9NT0RFCisgICAgICAgICAgTU9ERV9FRElUfE1PREVfQUNLIElBQyBTRQorCisgICAgICAgIE5vdGU6IFRoZSBvcHRpb24gaXMgbXVjaCBtb3JlIGZ1bm5pZXIgYXMgaXQgbG9va3MgaGVyZSwgaXQgZm9yCisgICAgICAgICAgZXhhbXBsZSBzdXBwb3J0cyBhIG1peGVkIG1vZGUgYmV0d2VlbiBsaW5lbW9kZSBhbmQKKyAgICAgICAgICBjaGFyYWN0ZXJtb2RlLi4uIGZsdXNoaW5nIHRoZSBpbnB1dCBhdCBjZXJ0YWluIGNoYXJhY3RlcnMgKGF0CisgICAgICAgICAgRVNDIG9yIFRBQiBmb3Igc2hlbGwtbGlrZSBjb21tYW5kbGluZSBjb21wbGV0aXRpb24pLiBXZSBzdWdnZXN0CisgICAgICAgICAgcmVhZGluZyBSRkMgMTE4NC4KKworICAgICAgICBZb3UgbWlnaHQgYmUgaW50ZXJlc3RlZCBpbiBURUxPUFRfWERJU1BMQVlMT0MgYW5kIFRFTE9QVF9FTlZJUk9OIHRvby4KKworICAgICAgICBOb3csIGhvdyB0byBpbXBsZW1lbnQgdGhpcyB1c2luZyBMRE11ZD8KKworICAgICAgICAwLiBQYXRjaCBzcmMvZHJpdmVyL2NvbW0xLmMsIGZ1bmN0aW9uIGluaXRfdGVsb3B0cygpIHRvIGluY2x1ZGUKKyAgICAgICAgICAgIHRlbG9wdHNfZG9bVEVMT1BUX1hYWF0gPSByZXBseV9oX3RlbG5ldF9uZWc7CisgICAgICAgICAgICB0ZWxvcHRzX2RvbnRbVEVMT1BUX1hYWF0gPSByZXBseV9oX3RlbG5ldF9uZWc7CisgICAgICAgICAgICB0ZWxvcHRzX3dpbGxbVEVMT1BUX1hYWF0gPSByZXBseV9oX3RlbG5ldF9uZWc7CisgICAgICAgICAgICB0ZWxvcHRzX3dvbnRbVEVMT1BUX1hYWF0gPSByZXBseV9oX3RlbG5ldF9uZWc7CisgICAgICAgICAgIGZvciBldmVyeSB0ZWxuZXQgbmVnb3RpYXRpb24geW91IHdhbnQgdG8gdXNlLgorICAgICAgICAgICBEbyBub3Qgb3ZlcndyaXRlIHRoZSBURUxPUFRfRUNITyBhbmQgVEVMT1BUX1NHQSBob29rcy4KKworICAgICAgICAgICBBbHRlcm5hdGl2ZWx5LCBzZXQgdGhlIGRyaXZlciBob29rIEhfTk9FQ0hPIGluIG1hc3Rlci5jOgorICAgICAgICAgICB0aGlzIGRpdmVydHMgX2FsbF8gdGVsbmV0IGRhdGEgaW50byB0aGUgbXVkbGliLgorCisgICAgICAgIDEuIEFkZCBhIG5ldyBkcml2ZXIgaG9vayB0byBtYXN0ZXIuYyBqdXN0IGJlbG93IHRoZSBvdGhlcnMuCisgICAgICAgICAgICAgICAgc2V0X2RyaXZlcl9ob29rKEhfVEVMTkVUX05FRywidGVsbmV0X25lZyIpLAorICAgICAgICAyLiBNYWtlIGEgdGVsbmV0LmggZm9yIHlvdXIgbXVkbGliLi4uIGp1c3QgY2hhbmdlIHRoZSBhcnJheXMgaW4KKyAgICAgICAgICAgICAgICBzcmMvZHJpdmVyL3RlbG5ldC5oLgorICAgICAgICAzLiBkZWZpbmUgYSBmdW5jdGlvbgorCisgICAgICAgICAgICAgICAgdm9pZCB0ZWxuZXRfbmVnKGludCBjbWQsIGludCBvcHRpb24sIGludCAqIG9wdGFyZ3MpCisKKyAgICAgICAgICAgaW4geW91ciBpbnRlcmFjdGl2ZSBvYmplY3RzIChsb2dpbi5jICwgc2hlbGxzLCBwbGF5ZXIuYyBvcgorICAgICAgICAgICB3aGVyZWV2ZXIpLiBBbmQgbm90ZSwgaW4gQUxMIG9iamVjdHMsIHRocm91Z2ggd2hpY2ggYQorICAgICAgICAgICBwbGF5ZXIgaXMgaGFuZGVkIHRocm91Z2ggKGluIFRBUFBNdWQgdGhlc2UgYXJlIGxvZ2luLmMgYW5kCisgICAgICAgICAgIHBsYXllci5jKS4gW09rLCBtYXN0ZXIuYyBpcyBpbnRlcmFjdGl2ZSBmb3IgYSB2ZXJ5IHNob3J0CisgICAgICAgICAgIHRpbWUgdG9vLCBidXQgaXQgd29uJ3QgYWNjZXB0IGlucHV0LCB3aWxsIGl0P10KKyAgICAgICAgICAgJ2NtZCcgd2lsbCBiZSBURUxDTURfeHh4eCAoc2VlIHRlbG5ldC5oKSwgJ29wdGlvbicgb25lIG9mCisgICAgICAgICAgIFRFTE9QVF94eHh4IGFuZCAnb3B0YXJncycgd2lsbCBiZSBhbiBhcnJheSBvZiBpbnRzIChieXRlcyBpbgorICAgICAgICAgICBmYWN0KSB3aGVuICdjbWQnIGlzIFNCLgorICAgICAgICAgICBQYXJzZSAnY21kJy8nb3B0aW9uJyBhbmQgcmVwbHkgd2l0aCBhcHByb3BpYXRlIGFuc3dlcnMKKyAgICAgICAgICAgdXNpbmcgYmluYXJ5X21lc3NhZ2UoKSAoYXBwcm9waWF0ZSBtZWFuaW5nIHNlbmRpbmcgdGhlCisgICAgICAgICAgIHJpZ2h0IERPL0RPTlQvV0lMTC9XT05UIGlmIG5vdCBzZW50IGJlZm9yZSBhbmQgdXNpbmcgdGhlIFNCCisgICAgICAgICAgIHJldHVybiB2YWx1ZXMpLgorICAgICAgICAzLjEuIFNlbnQgSUFDIERPIFRUWVBFIElBQyBETyBOQVdTIElBQyBETyBMSU5FTU9ERSBhdCB0aGUKKyAgICAgICAgICAgZmlyc3QgdGltZSB5b3UgY2FuIGRvIGl0IChiZWZvcmUgY2F0KClpbmcgL1dFTENPTUUgcGVyaGFwcykuCisgICAgICAgIDMuMi4gTm90ZSBhbGwgc2VudCBhbmQgcmVjZWl2ZWQgV0lMTC9XT05UL0RPL0RPTlQgb3B0aW9ucyBmb3IKKyAgICAgICAgICAgY29uZm9ybWluZyB0byB0aGUgc3RhbmRhcmQsIGF2b2lkaW5nIGVuZGxlc3MgbG9vcHMgYW5kIGZvcgorICAgICAgICAgICBlYXN5IGRlYnVnZ2luZyA6KQorICAgICAgICAzLjMuIFBhc3MgdGhvc2UgcmVjZXZpZWQvc2VudCBkYXRhIGFuZCBvdGhlciBkYXRhIHdoZW4gdGhlCisgICAgICAgICAgIGludGVyYWN0aXZlIG9iamVjdCBpcyBjaGFuZ2VkIChmcm9tIGxvZ2luLmMgdG8gcGxheWVyLmMgb3IKKyAgICAgICAgICAgYXQgb3RoZXIgYm9keWNoYW5nZXMpLiBDbGVhciB0aGUgZGF0YSB3aGVuIHRoZSBwbGF5ZXIgZ29lcworICAgICAgICAgICBsaW5rZGVhZCBvciBxdWl0cy4gWW91IHdvbid0IG5lZWQgdG8gc2F2ZSB0aGlzIGRhdGEuCisgICAgICAgIDMuNC4gTG93ZXJfY2FzZSgpIHRlcm1pbmFsdHlwZXMuLi4gOykKKyAgICAgICAgMy41LiBVc2UgcmVhc29uYWJsZSBkZWZhdWx0dmFsdWVzIGlmIHRoZSBjbGllbnQgZG9lcyBub3QKKyAgICAgICAgICAgc3VwcG9ydCBvbmUgb2YgdGhlIG9wdGlvbnMuIChjb2x1bW5zIDgwLGxpbmVzIDI0IGlmIG5vdAorICAgICAgICAgICBOQVdTLCB1bmtub3duIG9yIHZ0MTAwIGZvciBubyB0ZXJtaW5hbHR5cGUpCisKKyAgICAgICAgVGhlIFdJTEwvV09OVC9ETy9ET05UIGRhdGEgaXMgYmVzdCBzYXZlZCBpbiBhIG1hcHBpbmcgbG9va2luZworICAgICAgICBsaWtlIHRoaXM6CisgICAgICAgICAgKFsgInJlY2VpdmVkIjogKFsgb3B0aW9uMTogRE9fRE9OVF9PUl8wO1dJTExfV09OVF9PUl8wLCAuLi4gXSkKKyAgICAgICAgICAgLCAic2VudCIgICAgOiAoWyBvcHRpb24xOiBET19ET05UX09SXzA7V0lMTF9XT05UX09SXzAsIC4uLiBdKQorICAgICAgICAgIF0pCisKKyAgICAgICAgKE9rLCBpdCBjYW4gYmUgZG9uZSBiZXR0ZXIuIEJ1dCBub3Qgd2l0aG91dCBjb25mdXNpbmcgKm1lKgorICAgICAgICBtb3JlLikKKworICAgICAgICBCZWZvcmUgc2VuZGluZyBhbnl0aGluZyBjaGVjaworICAgICAgICAgIFROWyJzZW50Il1bb3B0aW9uLDBfaWZfZG9fZG9udF9vcl8xX2lmX3dpbGxfd29udF0KKyAgICAgICAgc28geW91IGRvbid0IGVudGVyIGVuZGxlc3MgbG9vcHMsIHNhdmUgbmV0d29yayB0cmFmZmljIGFuZCB0aGUKKyAgICAgICAgbGlrZS4KKworICAgICAgICBUaGUgd2luZG93c2l6ZSBpcyBiZXN0IHNhdmVkIGluIHRoZSBwbGF5ZXJzIGVudmlyb25tZW50CisgICAgICAgIHZhcmlhYmxlcyBzbyB0aGF0IGhlIGNhbiBtb2RpZnkgdGhlbSBsYXRlciBvbi4gKE9yIGluIHR3bworICAgICAgICBpbnRlZ2VycyBpbiB0aGUgcGxheWVyIG9iamVjdC4uLikuIFVzZSBmb3IgdGhlc2UgdmFsdWVzIGlzCisgICAgICAgIGNsZWFyIEkgdGhpbmsuCisKKyAgICAgICAgVGhlIHRlcm1pbmFsdHlwZXMgcmVjZWl2ZWQgdXNpbmcgYWJvdmUgbWVudGlvbmVkIG1ldGhvZCBhcmUKKyAgICAgICAgYmVzdCBzdG9yZWQgaW4gYW4gYXJyYXkuIFRoZSBhY3R1YWwgc2V0IHRlcm1pbmFsdHlwZSBpcyBiZXN0CisgICAgICAgIHN0b3JlZCBpbiBhbiBlbnZpcm9ubWVudCB2YXJpYWJsZSB3aGVyZSB0aGUgcGxheWVyIGNhbiBtb2RpZnkKKyAgICAgICAgaXQuIFVwb24gbW9kaWZ5aW5nIGl0IHRoZSBJQUMgU0IgVFRZUEUgU0VORCBJQUMgU0UgY3ljbGUKKyAgICAgICAgc2hvdWxkIGJlIHN0YXJ0ZWQgdG8gbWF0Y2ggdGhlIGVtdWxhdGlvbiB0byB0aGUgZW50ZXJlZCBuZXcKKyAgICAgICAgdGVybWluYWx0eXBlLiBZb3UgdGhlbiBtYXkgdXNlIGRhdGEgcmV0cmlldmVkIGZyb20KKyAgICAgICAgL2V0Yy90ZXJtY2FwIChtYW4gNSB0ZXJtY2FwKSBvciAvdXNyL2xpYi90ZXJtaW5mby8qLyogKFN5c1ZJRCwKKyAgICAgICAgbWFuIDUgdGVybWluZm8pIHRvIGltcGxlbWVudCB0ZXJtaW5hbGNvbnRyb2wgY29kZXMgZGVwZW5kZW5kCisgICAgICAgIG9uIHRoZSB0ZXJtaW5hbHR5cGUuIC9ldGMvdGVybWNhcCBtYXkgcHJvdmUgdG8gYmUgdGhlIGVhc2llc3QKKyAgICAgICAgd2F5IHRvdWdoIC91c3IvbGliL3Rlcm1pbmZvLyovKiBpcyB0aGUgbmV3ZXIgKGFuZCBiZXR0ZXIpIFN5c1YKKyAgICAgICAgd2F5IG9mIGRvaW5nIGl0LgorCisgICAgICAgIFtBbnlvbmUgZ290IGEgZGVzY3JpcHRpb24gb2YgdGhlIGludGVybmFsIHRlcm1pbmZvIGZvcm1hdCBmb3IKKyAgICAgICAgbWU/IC1NYXJjdXNdCisKKyAgICAgICAgTElORU1PREUgcmVwbGllcyBtYXkgYmUgbGVmdCBhbG9uZSBpZiBvbmx5IHVzaW5nIHRoZSBtb2RlCisgICAgICAgIGNoYW5nZSB0byBNT0RFX0VESVQKKworICAgICAgICBTb21lIHN0YXRpc3RpY3MgYWJvdXQgd2hhdCBjbGllbnRzIHN1cHBvcnQgdGVsbmV0IG5lZ290aWF0aW9uczoKKworICAgICAgICBUaW55ZnVndWUgYW5kIHNvbWUgb3RoZXIgbXVkY2xpZW50cyB1c3VhbGx5IGRvIG5vdCBzdXBwb3J0CisgICAgICAgIG5lZ290aWF0aW9ucy4KKyAgICAgICAgRXhjZXB0IGZvciBURiwgd2hpY2ggc3VwcG9ydHMgdGhlIFRlbG5ldCBFbmQtT2YtUmVjb3JkIG9wdGlvbgorICAgICAgICBhcyBtYXJrZXIgZm9yIHRoZSBlbmQgb2YgdGhlIHByb21wdC4gU28gaWYgeW91IHNlbmQgSUFDIEVPUgorICAgICAgICBhZnRlciBldmVyeSBwcm9tcHQsIGl0IHdpbGwgcHJpbnQgdGhlIHByb21wdCBhbHdheXMgaW4gdGhlCisgICAgICAgIGlucHV0IHdpbmRvdy4gKERvIG5vdCBmb3JnZXQgdG8gbmVnb3RpYXRlIHRoYXQuIEZpcnN0IElBQyBXSUxMCisgICAgICAgIFRFTE9QVF9FT1Ivd2FpdCBmb3IgSUFDIERPIFRFTE9QVF9FT1IpLiBOZXdlciB2ZXJzaW9ucyBvZgorICAgICAgICBURiB3aWxsIHN1cHBvcnQgTkFXUyBhbmQgdGhlcmUgd2lsbCBiZSBhIHBhdGNoIGZvciBUVFlQRQorICAgICAgICBuZWdvdGlhdGlvbiBhdmFpbGFibGUgc29vbi4KKworICAgICAgICBBbGwgdGVsbmV0cyBhYmxlIHRvIGRvIG5lZ290aWF0aW9ucyBJJ3ZlIGVuY291bnRlcmVkIHN1cHBvcnQKKyAgICAgICAgdGhlIFRUWVBFIG9wdGlvbi4KKyAgICAgICAgSFA5LngsSXJpeDUueCxMaW51eCxFUC9JWCxDVVRFTE5FVC9OQ1NBVEVMTkVUIChOb3ZlbGwpIGFuZAorICAgICAgICBwZXJoYXBzIG1vcmUgc3VwcG9ydCBOQVdTLgorICAgICAgICBBdCBsZWFzdCBJcml4NS54LExpbnV4LENVL05DU0FURUxORVQgc3VwcG9ydCBMSU5FTU9ERS4KKyAgICAgICAgU1VOIGRvZXMgbm90IHN1cHBvcnQgTkFXUyBhbmQgTElORU1PREUgbmVpdGhlciBpbiBTdW5PUyA0LjEuMworICAgICAgICBub3IgaW4gU29sYXJpcyAyLjMuCisKKyAgICAgICAgRm9yIGdldHRpbmcgUkZDcyB5b3UgY2FuIGZvciBleGFtcGxlIHVzZQorICAgICAgICBmdHA6Ly9mdHAudW5pLWVybGFuZ2VuLmRlL3B1Yi9kb2MvcmZjLworCisKK0JVR1MKKyAgICAgICAgTm90IGFsbCBhc3BlY3RzIG9mIHRoZSBvcHRpb25zIGFyZSBtZW50aW9uZWQgdG8ga2VlcCB0aGlzIGRvYworICAgICAgICBhdCBhIHJlYXNvbmFibGUgc2l6ZS4gUmVmZXIgdG8gdGhlIFJGQ3MgdG8gZ2V0IG1vcmUgY29uZnVzZWQuCisKK0NSRURJVFMKKyAgICAgICAgUHJvdmlkZWQgYnkgTWFyY3VzQFRBUFBNdWQgKE1hcmN1cyBNZWlzc25lciwKKyAgICAgICAgPG1zbWVpc3NuQGNpcC5pbmZvcm1hdGlrLnVuaS1lcmxhbmdlbi5kZT4pLgpkaWZmIC0tZ2l0IGEvZG9jL2NvbmNlcHRzL25ld3MgYi9kb2MvY29uY2VwdHMvbmV3cwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5jYWNlZmI0Ci0tLSAvZGV2L251bGwKKysrIGIvZG9jL2NvbmNlcHRzL25ld3MKQEAgLTAsMCArMSw4OCBAQAorQ09OQ0VQVDoKKwluZXdzCisKKworREVTQ1JJUFRJT046CisJVGhpcyBkb2N1bWVudCBkZXNjcmliZXMgdGhlIG5ld3Mgc3lzdGVtIHVzZWQgaW4gTmlnaHRmYWxsLgorCU5ld3MgaXMgaW50ZW5kZWQgdG8gcHJvdmlkZSBhIGdlbmVyYWwgc3lzdGVtIGZvciBidWxsZXRpbgorCWJvYXJkcyBhbmQgc2ltaWxhciBvYmplY3RzLiBJdCBpcyBzaW1pbGFyIHRvIHRoZSBVc2VuZXQKKwluZXdzIHN5c3RlbS4gQXJ0aWNsZXMgYXJlIHN0b3JlZCBpbiBhIGNlbnRyYWwgYXJlYSwgL25ld3MuCisJQXJ0aWNsZXMgKE1lc3NhZ2VzKSBhcmUgc3RvcmVkIGFzIGZpbGVzIHdpdGhpbiB0aGlzCisJZGlyZWN0b3J5LiBPbmx5IHRoZSBuZXdzIGRlbW9uIG9iamVjdCBpcyBhbGxvd2VkIHRvIHdyaXRlCisJYW5kIHJlYWQgaW4gdGhlIC9uZXdzIGRpcmVjdG9yeS4gSW50ZXJmYWNlaW5nIHRvIHRoZQorCW5ld3MgZGVtb24gaXMgZG9uZSB2aWEgaW50ZXJmYWNlIGZ1bmN0aW9ucyBpbiB0aGUgbmV3cworCWRlbW9uLgorCQorCVR5cGljYWxseSBuZXdzIGFyZSByZWFkIGFuZCB3cml0dGVuIGJ5IGEgYnVsbGV0aW4KKwlib2FyZCBvYmplY3Qgb3IgYnkgYSBuZXdzcmVhZGVyLiBQbGF5ZXIgYnVsZXRpbiBib2FyZHMKKwlzaG91bGQgb2YgY291cnNlIGJlIGxpbWl0ZWQgdG8gc3BlY2lmaWMgbmV3cyBncm91cHMuCisJQSBuZXdzcmVhZGVyIG1pZ2h0IGJlIGludGVsbGlnZW50IGluIHRoYXQgaXQgYXV0bWF0aWNhbGx5CisJc2hvd3MgbmV3IG1lc3NhZ2VzLiBHcm91cHMgbWF5IGJlIG1vZGVyYXRlZCwgdGhlbiBvbmx5IHRoZQorCW1vZGVyYXRvciBjYW4gd3JpdGUgdGhlcmUuIFRoZXJlIGFyZSBhbHNvIGZsYWdzIHdoZXRoZXIgYQorCWJvYXJkIGlzIGEgd2l6X29ubHkgYm9hcmQgYW5kIHdobyBtYXkgcmVtb3ZlIG1lc3NhZ2VzLgorCisJU2VjdXJpdHkgaXMgaW4gc2V2ZXJhbCBsZXZlbHMuIEl0IG1heSBiZSAwLCB0aGVuIGV2ZXJ5CisJZWZmZWN0aXZlIHVzZXJpZCBtaWdodCByZWFkIGFuZCB3cml0ZSBhbmQgZGVsZXRlIGFydGljbGVzLAorCWFsdGhvdWdoIHRoZSBuZXdzIGRlbW9uIHdpbGwgc3RpbGwgbG9vayBmb3IgdGhlIG1hdGNoIG9mCisJdGhlIHNlbmRlciBmaWVsZCB3aXRoIGNlcnRhaW4gZ3JvdXAgcmVxdWlyZW1lbnRzLiBUaGlzIGxldmVsCisJb2Ygc2VjdXJpdHkgaXMgdG8gbWFrZSBpdCBwb3NzaWJsZSB0byBjcmVhdGUgZ3JvdXBzCisJYWNjZXNzaWJsZSBieSBidWxsZXRpbiBib2FyZHMgd2hpY2ggaGF2ZSBubyBldWlkLgorCisJU2VjdXJpdHkgbGV2ZWwgMSBtZWFucyB0aGF0IGV1aWQgY2hlY2sgaXMgZG9uZSwgZm9yIHJlYWRpbmcKKwlhbmQgd3JpdGluZy4gVGhpcyBzdGlsbCBhbGxvd3MgZm9yIGJ1bGx0aW4gYm9hcmRzLCBidXQgdGhvc2UKKwltdXN0IGhhdmUgcm9vdCBldWlkIGFuZCB0aHVzIHRoZSBhYmlsaXR5IHRvIHNldGV1aWQgdG8gdGhlCisJZXVpZCBvZiB0aGUgb2JqZWN0IHVzaW5nIHRoZSBidWxsZXRpbiBib2FyZCAobm9ybWFsbHkgdGhlCisJcGxheWVyKS4gVGhpcyBmZWF0dXJlIHJlcXVpcmVzIG5hdGl2ZSBnYW1lZHJpdmVyIG1vZGUuCisKKwlTYXZlZCBuZXdzIGZpbGUgZm9ybWF0IChmb3JtYWwgbm90YXRpb24pOgorCisJaW50IHNlY3VyaXR5OwkvKiB3aGV0ZXIgZXVpZCBjaGVjayBpcyBkb25lLCAwIG9yIDEgKi8KKwltaXhlZCAqYWNjZXNzbGlzdCA9ICh7CisJICAgbWl4ZWQgKnJlYWRhY2Nlc3M7ICAgIC8qIHdobyBjYW4gcmVhZCBtZXNzYWdlcyAqLworCSAgIG1peGVkICp3cml0ZWFjY2VzczsgICAvKiB3aG8gY2FuIHdyaXRlIG1lc3NhZ2VzICovCisJICAgbWl4ZWQgKmRlbGV0ZWFjY2VzczsgIC8qIHdobyBjYW4gZGVsZXRlIG1lc3NhZ2VzICovCisJICAgbWl4ZWQgKmNvbnRyb2xhY2Nlc3M7IC8qIHdobyBjYW4gY29udHJvbCB0aGUgYWNjZXNzbGlzdCAqLworCX0pCisJbWl4ZWQgKm1lc3NhZ2VzID0gKHsKKwkgICBtaXhlZCAqbXNnMTsgbWl4ZWQgKm1zZzI7IC4uLiBtaXhlZCAqbXNnTjsKKwl9KQorCisJQW4gYWNjZXNzIGVudHJ5IGNhbiBiZSBiZSBvbmUgb2YgdGhlIGZvbGxvd2luZzoKKwktIGFuIGVmZmVjdGl2ZSB1c2VyaWQgKHN0cmluZykKKwktIG9uZSBvZiB0aGUga2V5d29yZHMgIndpemFyZCIsICJhbGwiLCAiYXV0aG9yIgorCS0gYSB3aXphcmQgbGV2ZWwgKGludGVnZXIpIHdoaWNoIGlzIHJlcXVpcmVkIG1pbmltYWwKKwktIGFuIGFycmF5IG9mIG9uZSBvZiB0aGUgcGxhaW4gdHlwZXMgYWJvdmUgKEFsdGVybmF0aXZlKS4KKworCUEgbWVzc2FnZSBsb29rcyBhcyBmb2xsb3dzOgorCisJbWl4ZWQgKm1lc3NhZ2UgPSAoeworCSAgIHN0cmluZyBhdXRob3I7ICAgICAgIC8qIHdobyB3cm90ZSB0aGUgbWVzc2FnZSAqLworCSAgIHN0cmluZyBzdWJqZWN0OyAgICAgIC8qIHRoZSBzdWJqZWN0ICovCisJICAgc3RyaW5nICpncm91cHM7ICAgICAgLyogbmV3cyBncm91cHMgd2hlcmUgdGhpcyB3YXMgcG9zdGVkICovCisJICAgaW50IGRhdGU7ICAgICAgICAgICAgLyogZGF0ZSBvZiBtZXNzYWdlIHdyaXR0ZW4gKi8KKwkgICBzdHJpbmcgbWVzc2FnZWlkOyAgICAvKiBhIHVuaXF1ZSBzdHJpbmcgKi8KKwkgICBzdHJpbmcgKnJlZmVyZW5jZWlkOyAvKiBsaXN0IG9mIHJlZmVyZW5jZXMgKi8KKwkgICBpbnQgZXhwaXJlOyAgICAgICAgICAvKiB3aGVuIG1lc3NhZ2UgZXhwaXJlcyAqLworCSAgIHN0cmluZyBib2R5OyAgICAgICAgIC8qIHRoZSBjb250ZW50cyBvZiB0aGUgbWVzc2FnZSAqLworCX0pCisKKwlUaGUgbmV3cyBkZW1vbiAoL3NlY3VyZS9uZXdzLCBvciAvb2JqL25ld3MpIHByb3ZpZGVzIHRoZQorCWZvbGxvd2luZyBmdW5jdGlvbnM6CisKKwlpbnQgc3VjY2VzcyA9IFBvc3RNZXNzYWdlKG1peGVkICptZXNzYWdlKQorCSAgVGVsbHMgdGhlIGRlbW9uIHRvIGluc2VydCB0aGUgbWVzc2FnZSBpbiB0aGUgbmV3cyBkYXRhYmFzZS4KKwkgIERlcGVuZGluZyBvbiBzZWN1cml0eSBsZXZlbCwgZXVpZCBvciBtZXNzYWdlLmF1dGhvciBpcworCSAgY2hlY2tlZCBpZiB0aGlzIGlzIGFsbG93ZWQuCisKKwlpbnQgc3VjY2VzcyA9IERlbGV0ZU1lc3NhZ2Uoc3RyaW5nICpncm91cHMsIHN0cmluZyBtZXNzYWdlaWQpCisJICBSZW1vdmUgYSBtZXNzYWdlIGZyb20gdGhlIGRhdGFiYXNlLgorCisJbWl4ZWQgKm1lc3NhZ2VsaXN0ID0gUmVhZE1lc3NhZ2VIZWFkZXJzKHN0cmluZyBncm91cCkKKwkgIEdldCBhbGwgbWVzc2FnZSBoZWFkZXJzIChjb21wbGV0ZSBpbmZvLCBidXQgd2l0aG91dAorCSAgYm9keSkgb2YgbmV3c2dyb3VwIDxncm91cD4uCisKKwltaXhlZCAqbWVzc2FnZSA9IFJlYWRNZXNzYWdlKHN0cmluZyAqZ3JvdXBzLCBzdHJpbmcgbWVzc2FnZWlkKQorCSAgUmV0cmlldmUgYSBtZXNzYWdlIGZyb20gdGhlIGRhdGFiYXNlLgorCisKK1NFRSBBTFNPOgpkaWZmIC0tZ2l0IGEvZG9jL2NvbmNlcHRzL29iamVjdHMgYi9kb2MvY29uY2VwdHMvb2JqZWN0cwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5iOWM3ZWI5Ci0tLSAvZGV2L251bGwKKysrIGIvZG9jL2NvbmNlcHRzL29iamVjdHMKQEAgLTAsMCArMSwyNSBAQAorQ09OQ0VQVAorICAgICAgICBvYmplY3RzCisKK0xBU1QgVVBEQVRFRAorICAgICAgICBuZXZlcgorCitERVNDUklQVElPTgorICAgICAgICBBbiBvYmplY3QgY29uc2lzdHMgb2YgYSBjb2xsZWN0aW9uIG9mIGZ1bmN0aW9ucyAoYWxzbyBjYWxsZWQKKyAgICAgICAgJ21ldGhvZHMnKSBhbmQgZGF0YSAodmFyaWFibGVzKSBvbiB3aGljaCB0aGUgZnVuY3Rpb25zIG9wZXJhdGUuCisgICAgICAgIFRoZSBvbmx5IHdheSB0byBtYW5pcHVsYXRlIHRoZSBkYXRhIGNvbnRhaW5lZCBpbiBhbiBvYmplY3QgaXMKKyAgICAgICAgdmlhIG9uZSBvZiB0aGUgZnVuY3Rpb25zIGRlZmluZWQgYnkgdGhlIG9iamVjdC4KKworICAgICAgICBFdmVyeSBzaW5nbGUgdGhpbmcgaW4gYSBtdWQgaXMgYW4gb2JqZWN0LiAgUm9vbXMgYXJlIG9iamVjdHMuCisgICAgICAgIFdlYXBvbnMgYXJlIG9iamVjdHMuICBFdmVuIHlvdXIgY2hhcmFjdGVyIGlzIGFuIG9iamVjdCAoYSBzcGVjaWFsCisgICAgICAgIGtpbmQgb2Ygb2JqZWN0IGNhbGxlZCAiaW50ZXJhY3RpdmUiIGJ1dCBzdGlsbCBhbiBvYmplY3QgaW4gbW9zdAorICAgICAgICBldmVyeSByZXNwZWN0KS4gIEVhY2ggb2JqZWN0IChleGNlcHQgcG9zc2libHkgdmlydHVhbCBvYmplY3RzKSBpbgorICAgICAgICB0aGUgbXVkIGlzIGFzc29jaWF0ZWQgd2l0aCBzb21lIGZpbGUgd3JpdHRlbiBpbiBMUEMgKGluIHRoZSBtdWQncworICAgICAgICBkaXJlY3Rvcnkgc3RydWN0dXJlKSB0aGF0IGRlc2NyaWJlcyBob3cgdGhlIG9iamVjdCBpcyB0byBpbnRlcmFjdAorICAgICAgICB3aXRoIHRoZSBnYW1lZHJpdmVyIGFuZCB0aGUgcmVzdCBvZiB0aGUgb2JqZWN0cyBpbiB0aGUgbXVkLgorCitBVVRIT1IKKyAgICAgICAgU29tZW9uZQorCitTRUUgQUxTTworICAgICAgICBmaWxlcyhDKSwgaW5oZXJpdGFuY2UoQyksIGNyZWF0ZShBKSwgcmVzZXQoQSkKZGlmZiAtLWdpdCBhL2RvYy9jb25jZXB0cy9vb3AgYi9kb2MvY29uY2VwdHMvb29wCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjUxNDZhN2UKLS0tIC9kZXYvbnVsbAorKysgYi9kb2MvY29uY2VwdHMvb29wCkBAIC0wLDAgKzEsNzYgQEAKK09PUAorIEJFU0NIUkVJQlVORzoKKyAgICAgT09QIHN0ZWh0IGZ1ZXIgIk9iamVjdC1PcmllbnRpZXJ0ZSBQcm9ncmFtbWllcnVuZyI6CisKKyAgICAgV2VubiBkdSB3ZWlzc3QsIHdpZSBtYW4gaW4gZWluZXIgcHJvemVkdXJhbGVuIFNwcmFjaGUgcHJvZ3JhbW1pZXJ0CisgICAgIChDLCBQQVNDQUwsIEJBU0lDKSwgZGFubiBoYXN0IGR1IGJlcmVpdHMgdmllbGUgZGVyIEZhZWhpZ2tlaXRlbiwgZGllCisgICAgIG5vZXRpZyBzaW5kIHVtIGVmZmVrdGl2IGluIExQQyB6dSBQcm9ncmFtbWllcmVuLiBEaWUgSGF1cHRmYWVoaWdrZWl0LAorICAgICBkaWUgZHUgYnJhdWNoZW4gd2lyc3QsIGlzdCBkaWUgQmVnYWJ1bmcgZGVpbmUgSWRlZW4gaW4gZWluZSBSZWloZSB2b24KKyAgICAgU2Nocml0dGVuIHp1IHVudGVydGVpbGVuLCBzbyBkYXNzIGRlciBDb21wdXRlciBkaWVzZSBmdWVyIGRpY2gKKyAgICAgYXVzZnVlaHJlbiBrYW5uLgorCisgICAgIExQQyBpc3QgYWJlciBhdWNoIGVpbmUgKGltcGVyYXRpdmUsIHN0cnVrdHVyaWVydGUpIG9iamVrdG9yaWVudGllcnRlCisgICAgIFNwcmFjaGUuIE9PUCBoYWVsdCBkYXp1IGFuLCBzaWNoIHp1ZXJzdCB1bSBkaWUgRGF0ZW4genUga3VlbW1lcm4gdW5kCisgICAgIGRhbm4gdW0gZGllIE1ldGhvZGVuIG1pdCBkZW5lbiBkaWVzZSBEYXRlbiBtYW5pcHVsaWVydCB3ZXJkZW46CisgICAgIEVpbiBTcGllbGVyIGlzdCB6dWVyc3QgZWlubWFsIGVpbiBIYXVmZW4gdm9uIEF0dHJpYnV0ZW4gdW5kIFB1bmt0ZW4KKyAgICAgdW5kIHNlaW5lbSBOYW1lbiwgd2llIGF1ZiBkaWVzZSBlaW5nZXdpcmt0IHdlcmRlbiBrYW5uIHdpcmQgZGFuYWNoCisgICAgIGdla2xhZXJ0LiBFaW4gU3BpZWxlcm9iamVrdCBrb21tdW5pemllcnQgdW5kIGtvb3BlcmllcnQgbWl0IHZpZWxlbgorICAgICBhbmRlcmVuIE9iamVrdGVuIGhpZXIuCisKKyAgICAgSW0gRm9sZ2VuZGVuIHNpbmQgZWluaWdlIGRlciBLcml0ZXJpZW4gb2JqZWt0b3JpZW50aWVydGVyIFByb2dyYW1taWVydW5nCisgICAgIGF1ZmdlZnVlaHJ0OgorCisgICAgIEtsYXNzZW46CisJRWluZSBLbGFzc2UgYmVzY2hyZWlidCBkYXMgVmVyaGFsdGVuIGVpbmVyIEdydXBwZSBnbGVpY2hhcnRpZ2VyCisJT2JqZWt0ZS4gQmVpc3BpZWxzd2Vpc2Uga2FubiBtYW4gTGViZXdlc2VuIGFscyBlaW5lIEtsYXNzZSBhbnNlaGVuLAorCXdlaWwgbWFuIGFsbGUgT2JqZWt0ZSBpbiBMZWJld2VzZW4gdW5kIG5pY2h0LUxlYmV3ZXNlbiBlaW50ZWlsZW4KKwlrYW5uLiBIYXQgbWFuIGVpbmVuIGtvbmtyZXRlcyBNb25zdGVyIHVuZCBlaW5lbiBrb25rcmV0ZW4gU3BpZWxlciBpbgorCWVpbmVtIFJhdW0sIGRhbm4gc2luZCBkaWVzIE9iamVrdGUgKEluc3RhbnplbikuIE1hbiBrYW5uIHZvbiBlaW5lcgorCU1lbmdlIGdsZWljaGFydGlnZXIgT2JqZWt0ZSBzYWdlbiwgZGFzcyBzaWUgenUgZWluLSB1bmQgZGVyc2VsYmVuCisJS2xhc3NlIGdlaG9lcmVuLiAKKworICAgICBBYnN0cmFrdGlvbjoKKwlKZWRlcyBPYmpla3QgaW0gU3lzdGVtIHZlcmtvZXJwZXJ0IGFscyBhYnN0cmFrdGVzIE1vZGVsbCBlaW5lbgorCSJBcmJlaXRlciIsIGRlciBBdWZ0cmFlZ2UgZXJsZWRpZ2VuIGthbm4sIHNlaW5lbiBadXN0YW5kIGJlcmljaHRlbgorCXVuZCBhZW5kZXJuIGthbm4gdW5kIG1pdCBkZW4gYW5kZXJlbiBPYmpla3RlbiBpbSBTeXN0ZW0ga29tbXVuaXppZXJlbgorCWthbm4sIG9obmUgb2ZmZW4genUgbGVnZW4sIHdpZSBkaWVzZSBzZWluZSBGYWVoaWdrZWl0ZW4gaW1wbGVtZW50aWVydAorCXNpbmQuCisJW1NvIGthbm4gbWFuIGVpbmVtIE9iamVrdCBkZW4gQXVmdHJhZyBEZWZlbmQoMTAwMCwgRFRfRklSRSwgLi4uKQorCSBnZWJlbi4gSW4gTUcgd2VyZGVuIGxlYmVuZGUgT2JqZWt0ZSBkaWVzZW4gQXVmdHJhZyBkdXJjaCBBZW5kZXJ1bmcKKwkgaWhyZXMgWnVzdGFuZGVzIC0gTFAtQWJ6dWcgb2RlciBNYWdpZXJlYWt0aW9uIC0gZXJmdWVsbGVuLl0KKworICAgICBLYXBzZWx1bmcKKwlBdWNoIGRhcyAiVmVyYmVyZ2VuIHZvbiBJbmZvcm1hdGlvbiIgZ2VuYW5udCwgc29yZ3QgSy4gZGFmdWVyLCBkYXNzCisJT2JqZWt0ZSBkZW4gaW50ZXJuZW4gWnVzdGFuZCBhbmRlcmVyIE9iamVrdGUgbmljaHQgaW4gdW5lcndhcnRldGVyCisJV2Vpc2UgYWVuZGVybiBrb2VubmVuOyBudXIgZGVuIGVpZ2VuZW4gTWV0aG9kZW4gZWluZXMgT2JqZWt0ZXMgc29sbAorCWVzIGVybGF1YnQgc2VpbiwgYXVmIGRlbiBpbnRlcm5lbiBadXN0YW5kIGRpcmVrdCB6dXp1Z3JlaWZlbi4gQWxsZQorCVNvcnRlbiB2b24gT2JqZWt0ZW4gcHJhZXNlbnRpZXJlbiBuYWNoIGF1c3NlbiBTY2huaXR0c3RlbGxlbiAobWFuCisJcHJvcGVydGllcyksIGRpZSBkYXJ1ZWJlciBiZXN0aW1tZW4sIHdpZSBhbmRlcmUgT2JqZWt0ZSBtaXQgaWhuZW4KKwl3ZWNoc2Vsd2lya2VuIGtvZW5uZW4uCisJW1NpZWhlIHZvciBhbGxlbSBtYW4gcHJvcGVydGllc10KKwkKKyAgICAgUG9seW1vcnBoaWUKKwlaZWlnZXIgenUgT2JqZWt0ZW4ga29lbm5lbiBlcyBtaXQgc2ljaCBicmluZ2VuLCBkYXNzIGJlaSBkZXIgQXVzd2FobAorCWVpbmVzIGtvbmtyZXRlbiBPYmpla3RlcyBzZWluZSBLbGFzc2UgKHNlaW4gVHlwKSBuaWNodCBvZmZlbnNpY2h0bGljaAorCWlzdC4gVHJvdHpkZW0gd2VyZGVuIE5hY2hyaWNodGVuIGFuIHNvIHNlbGVrdGllcnRlIE9iamVrdGUga29ycmVrdAorCWRlciB0YXRzYWVjaGxpY2hlbiBLbGFzc2UgenVnZW9yZG5ldC4gV2VubiBkaWVzZSBadW9yZG51bmcgZXJzdCB6dXIKKwlMYXVmemVpdCBhdWZnZWxvZXN0IHdpcmQsIGRhbm4gd2lyZCBkaWVzZXMgVmVyaGFsdGVuIFBvbHltb3JwaGlzbXVzCisJKGF1Y2g6IHNwYWV0ZSBCaW5kdW5nIG9kZXIgZHluYW1pc2NoZSBCaW5kdW5nKSBnZW5hbm50LgorCVtJbiBMUEMgaXN0IGR5bmFtaXNjaGUgQmluZHVuZyBkZXIgU3RhbmRhcmQuIFVlYmVyc2NocmVpYnQgbWFuIGFsc28KKwkgaW4gZWluZW0gTlBDIGRpZSgpLCBkYW5uIHdpcmQgYXVmIGplZGVuIEZhbGwgZGllIG5ldWUgTWV0aG9kZQorCSBhdWZnZXJ1ZmVuLCB3ZW5uIGRlciBOUEMgYXVzIGRvX2RhbWFnZSgpIGhlcmF1cyBpbiBzaWNoIGRpZSgpIHJ1ZnQuXQorCisgICAgIFZlcmVyYnVuZworCU9yZ2FuaXNpZXJ0IHVuZCBlcmxlaWNodGVydCBQb2x5bW9ycGhpZSwgaW5kZW0gbmV1ZSBPYmpla3RlIGRlZmluaWVydAorCXVuZCBlcnpldWd0IHdlcmRlbiBrb2VubmVuLCBkaWUgU3BlemlhbGlzaWVydW5nZW4gc2Nob24gZXhpc3RpZXJlbmRlcgorCU9iamVrdGUgc2luZC4gU29sY2hlIG5ldWVuIE9iamVrdGUga29lbm5lbiBkYXMgdm9yaGFuZGVuZSBWZXJoYWx0ZW4KKwl1ZWJlcm5laG1lbiB1bmQgZXJ3ZWl0ZXJuLCBvaG5lIGRhc3MgZGllc2VzIFVydmVyaGFsdGVuIG5ldQorCWltcGxlbWVudGllcnQgd2VyZGVuIG11c3MuIFR5cGlzY2hlcndlaXNlIHdpcmQgZGFzIGRhZHVyY2ggZXJyZWljaHQsCisJZGFzcyBPYmpla3RlIHp1IEtsYXNzZW4gdW5kIHp1IEhpZXJhcmNoaWVuIHZvbiBLbGFzc2VuIGdydXBwaWVydAorCXdlcmRlbiwgaW4gZGVuZW4gc2ljaCBkaWUgR2VtZWluc2Fta2VpdGVuIGltIFZlcmhhbHRlbiBhdXNkcnVlY2tlbi4KKwlbU2llaGUgbWFuIHZlcmVyYnVuZ10KKworIFNJRUhFIEFVQ0g6CisgICAgIG9iamVrdGUsIGluaGVyaXRhbmNlLCBnb29kc3R5bGUKKworIDIyLiBNYWVyeiAyMDA0IEdsb2luc29uCmRpZmYgLS1naXQgYS9kb2MvY29uY2VwdHMvb3ZlcmxvYWRpbmcgYi9kb2MvY29uY2VwdHMvb3ZlcmxvYWRpbmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMDYyMDllOQotLS0gL2Rldi9udWxsCisrKyBiL2RvYy9jb25jZXB0cy9vdmVybG9hZGluZwpAQCAtMCwwICsxLDQ4IEBACitDT05DRVBUCisgICAgICAgIG92ZXJsb2FkaW5nCisKK0RFU0NSSVBUSU9OCisgICAgICAgIFRoaXMgY29uY2VwdCBpcyBzdHJvbmdseSBjb25uZWN0ZWQgd2l0aCB0aGUgY29uY2VwdCBvZiBpbmhlcml0YW5jZS4KKyAgICAgICAgQSBmdW5jdGlvbiBpcyBjYWxsZWQgJ292ZXJsb2FkZWQnIGlmIGl0IGlzIGRlZmluZWQgbW9yZSB0aGFuIG9uY2UKKyAgICAgICAgaW4gYW4gb2JqZWN0LiBUaGlzIGNhbiBoYXBwZW4gaWYgdGhlIG9iamVjdCBpbmhlcml0cyBvdGhlciBvYmplY3RzCisgICAgICAgIHdoaWNoIGhhdmUgZGVmaW5lZCBhIGZ1bmN0aW9uIHdpdGggdGhlIHNhbWUgbmFtZS4KKyAgICAgICAgVXN1YWxseSB0aGUgb3ZlcmxvYWRpbmcgaXMgd2FudGVkIGFuZCBpbnRlbmRlZCBieSB0aGUgaW5oZXJpdGluZworICAgICAgICBvYmplY3QgdG8gY2hhbmdlIHRoZSBiZWhhdmlvdXIgb2YgdGhlIGZ1bmN0aW9uIGl0IG92ZXJsb2Fkcy4KKyAgICAgICAgVG8gY2FsbCB0aGUgb3ZlcmxvYWRlZCBmdW5jdGlvbnMgZnJvbSB0aGUgb3ZlcmxvYWRpbmcgb2JqZWN0IHRoZQorICAgICAgICA6Oi1vcGVyYXRvciBpcyB1c2VkLgorICAgICAgICBGcm9tIG91dHNpZGUgdGhlIG9iamVjdCBvbmx5IG9uZSBvZiB0aGUgZnVuY3Rpb25zIGNhbiBiZSBjYWxsZWQKKyAgICAgICAgdmlhIGNhbGxfb3RoZXIoKSBvciB0aGUgbGlrZTsgdGhpcyB3aWxsIGJlIHRoZSB0b3Btb3N0IG9mIGFsbAorICAgICAgICBvdmVybG9hZGVkIGZ1bmN0aW9ucy4KKworICAgICAgICBOb3JtYWxseSBhbiBvdmVybG9hZGluZyBmdW5jdGlvbiBpcyBkZWNsYXJlZCB0aGUgc2FtZSB3YXkgYXMgdGhlCisgICAgICAgIG92ZXJsb2FkZWQgZnVuY3Rpb24sIHRoaXMgbWVhbnMgaXQgaGFzIHRoZSBzYW1lIG51bWJlciBhbmQgdHlwZXMKKyAgICAgICAgb2YgYXJndW1lbnRzLiBJZiBhbiBvYmplY3Qgd2FudHMgdG8gY2hhbmdlIHRoZSBiZWhhdmlvdXIgb2YgdGhlCisgICAgICAgIGZ1bmN0aW9uIGluIGEgd2F5IHRoYXQgaXQgY2FuIGdldCBtb3JlIGFyZ3VtZW50cyB0aGFuIHRoZSBvcmlnaW5hbAorICAgICAgICBmdW5jdGlvbiwgaXQgaGFzIHRvIHVzZSB0aGUgbW9kaWZpZXIgJ3ZhcmFyZ3MnIG9yIGEgY29tcGlsZXIgZXJyb3IKKyAgICAgICAgd2lsbCBiZSByYWlzZWQuCisKK0VYQU1QTEUKKyAgICAgICAgRmlsZSAvcGxheWVycy9hbGZlL2EuYzoKKworICAgICAgICAgICAgZm9vKCkgeyB3cml0ZSgiQSIpOyB9CisKKyAgICAgICAgRmlsZSAvcGxheWVycy9hbGZlL2IuYzoKKworICAgICAgICAgICAgZm9vKCkgeyB3cml0ZSgiQiIpOyB9CisKKyAgICAgICAgRmlsZSAvcGxheWVycy9hbGZlL2MuYzoKKworICAgICAgICAgICAgaW5oZXJpdCAicGxheWVycy9hbGZlL2EiOworICAgICAgICAgICAgaW5oZXJpdCAicGxheWVycy9hbGZlL2IiOworCisgICAgICAgICAgICBmb28oKSB7CisgICAgICAgICAgICAgIGE6OmZvbygpOworCSAgICAgIGI6OmZvbygpOworCSAgICAgIHdyaXRlKCJDIik7CisJICAgIH0KKworCVRvIGNhbGwgInBsYXllcnMvYWxmZS9jIi0+Zm9vKCkgd2lsbCBub3cgcmVzdWx0IGluIHRoZSBvdXRwdXQgb2YKKwlBQkMuCisKK1NFRSBBTFNPCisgICAgICAgIG1vZGlmaWVycyhMUEMpLCBpbmhlcml0YW5jZShDKSwgZnVuY3Rpb25zKExQQykKZGlmZiAtLWdpdCBhL2RvYy9jb25jZXB0cy9wY3JlIGIvZG9jL2NvbmNlcHRzL3BjcmUKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZjg2M2ZmZAotLS0gL2Rldi9udWxsCisrKyBiL2RvYy9jb25jZXB0cy9wY3JlCkBAIC0wLDAgKzEsMTQyMiBAQAorU1lOT1BTSVMKKyAgICAgICAgUENSRSAtIFBlcmwtY29tcGF0aWJsZSByZWd1bGFyIGV4cHJlc3Npb25zCisKKworREVTQ1JJUFRJT04KKyAgICAgICAgVGhpcyBkb2N1bWVudCBkZXNjcmliZXMgdGhlIHJlZ3VsYXIgZXhwcmVzc2lvbnMgc3VwcG9ydGVkIGJ5IHRoZQorICAgICAgICBQQ1JFIHBhY2thZ2UuIFdoZW4gdGhlIHBhY2thZ2UgaXMgY29tcGlsZWQgaW50byB0aGUgZHJpdmVyLCB0aGUKKyAgICAgICAgbWFjcm8gX19QQ1JFX18gaXMgZGVmaW5lZC4KKworICAgICAgICBNb3N0IG9mIHRoaXMgbWFucGFnZSBpcyBsaWZ0ZWQgZGlyZWN0bHkgZnJvbSB0aGUgb3JpZ2luYWwgUENSRQorICAgICAgICBtYW5wYWdlIChkYXRlZCBKYW51YXJ5IDIwMDMpLgorCisgICAgICAgIFRoZSBQQ1JFIGxpYnJhcnkgaXMgYSBzZXQgb2YgZnVuY3Rpb25zIHRoYXQgaW1wbGVtZW50ICByZWd1bGFyCisgICAgICAgIGV4cHJlc3Npb24gIHBhdHRlcm4gIG1hdGNoaW5nIHVzaW5nIHRoZSBzYW1lIHN5bnRheCBhbmQgc2VtYW50aWNzCisgICAgICAgIGFzIFBlcmwgIDUsICB3aXRoICBqdXN0ICBhICBmZXcgIGRpZmZlcmVuY2VzICAoc2VlIGJlbG93KS4gIFRoZQorICAgICAgICBjdXJyZW50ICBpbXBsZW1lbnRhdGlvbiAgY29ycmVzcG9uZHMgIHRvICBQZXJsIDUuMDA1LCB3aXRoIHNvbWUKKyAgICAgICAgYWRkaXRpb25hbCBmZWF0dXJlcyAgZnJvbSAgbGF0ZXIgIHZlcnNpb25zLiAgVGhpcyAgaW5jbHVkZXMgIHNvbWUKKyAgICAgICAgZXhwZXJpbWVudGFsLCAgaW5jb21wbGV0ZSAgc3VwcG9ydCBmb3IgVVRGLTggZW5jb2RlZCBzdHJpbmdzLgorICAgICAgICBEZXRhaWxzIG9mIGV4YWN0bHkgd2hhdCBpcyAgYW5kICB3aGF0IGlzIG5vdCBzdXBwb3J0ZWQgYXJlIGdpdmVuCisgICAgICAgIGJlbG93LgorCisKK1BDUkUgUkVHVUxBUiBFWFBSRVNTSU9OIERFVEFJTFMKKworICAgICAgIFRoZSAgc3ludGF4ICBhbmQgc2VtYW50aWNzIG9mIHRoZSByZWd1bGFyIGV4cHJlc3Npb25zIHN1cHBvcnRlZCBieSBQQ1JFCisgICAgICAgYXJlIGRlc2NyaWJlZCBiZWxvdy4gUmVndWxhciBleHByZXNzaW9ucyBhcmUgYWxzbyBkZXNjcmliZWQgaW4gdGhlIFBlcmwKKyAgICAgICBkb2N1bWVudGF0aW9uICBhbmQgaW4gYSBudW1iZXIgb2Ygb3RoZXIgYm9va3MsIHNvbWUgb2Ygd2hpY2ggaGF2ZSBjb3BpLQorICAgICAgIG91cyBleGFtcGxlcy4gSmVmZnJleSBGcmllZGwncyAiTWFzdGVyaW5nICBSZWd1bGFyICBFeHByZXNzaW9ucyIsICBwdWItCisgICAgICAgbGlzaGVkICBieSAgTydSZWlsbHksIGNvdmVycyB0aGVtIGluIGdyZWF0IGRldGFpbC4gVGhlIGRlc2NyaXB0aW9uIGhlcmUKKyAgICAgICBpcyBpbnRlbmRlZCBhcyByZWZlcmVuY2UgZG9jdW1lbnRhdGlvbi4KKworICAgICAgIFRoZSBiYXNpYyBvcGVyYXRpb24gb2YgUENSRSBpcyBvbiBzdHJpbmdzIG9mIGJ5dGVzLiBIb3dldmVyLCAgdGhlcmUgIGlzCisgICAgICAgYWxzbyAgc3VwcG9ydCBmb3IgVVRGLTggY2hhcmFjdGVyIHN0cmluZ3MuIFRvIHVzZSB0aGlzIHN1cHBvcnQgeW91IG11c3QKKyAgICAgICBidWlsZCBQQ1JFIHRvIGluY2x1ZGUgVVRGLTggc3VwcG9ydCwgYW5kIHRoZW4gY2FsbCBwY3JlX2NvbXBpbGUoKSAgd2l0aAorICAgICAgIHRoZSAgUENSRV9VVEY4ICBvcHRpb24uICBIb3cgIHRoaXMgYWZmZWN0cyB0aGUgcGF0dGVybiBtYXRjaGluZyBpcyBtZW4tCisgICAgICAgdGlvbmVkIGluIHNldmVyYWwgcGxhY2VzIGJlbG93LiBUaGVyZSBpcyBhbHNvIGEgc3VtbWFyeSBvZiAgVVRGLTggIGZlYS0KKyAgICAgICB0dXJlcyBpbiB0aGUgc2VjdGlvbiBvbiBVVEYtOCBzdXBwb3J0IGluIHRoZSBtYWluIHBjcmUgcGFnZS4KKworICAgICAgIEEgIHJlZ3VsYXIgIGV4cHJlc3Npb24gIGlzICBhIHBhdHRlcm4gdGhhdCBpcyBtYXRjaGVkIGFnYWluc3QgYSBzdWJqZWN0CisgICAgICAgc3RyaW5nIGZyb20gbGVmdCB0byByaWdodC4gTW9zdCBjaGFyYWN0ZXJzIHN0YW5kIGZvciAgdGhlbXNlbHZlcyAgaW4gIGEKKyAgICAgICBwYXR0ZXJuLCAgYW5kICBtYXRjaCAgdGhlIGNvcnJlc3BvbmRpbmcgY2hhcmFjdGVycyBpbiB0aGUgc3ViamVjdC4gQXMgYQorICAgICAgIHRyaXZpYWwgZXhhbXBsZSwgdGhlIHBhdHRlcm4KKworICAgICAgICAgVGhlIHF1aWNrIGJyb3duIGZveAorCisgICAgICAgbWF0Y2hlcyBhIHBvcnRpb24gb2YgYSBzdWJqZWN0IHN0cmluZyB0aGF0IGlzIGlkZW50aWNhbCB0byBpdHNlbGYuICBUaGUKKyAgICAgICBwb3dlciBvZiByZWd1bGFyIGV4cHJlc3Npb25zIGNvbWVzIGZyb20gdGhlIGFiaWxpdHkgdG8gaW5jbHVkZSBhbHRlcm5hLQorICAgICAgIHRpdmVzIGFuZCByZXBldGl0aW9ucyBpbiB0aGUgcGF0dGVybi4gVGhlc2UgYXJlIGVuY29kZWQgaW4gdGhlICBwYXR0ZXJuCisgICAgICAgYnkgIHRoZSAgdXNlICBvZiBtZXRhLWNoYXJhY3RlcnMsIHdoaWNoIGRvIG5vdCBzdGFuZCBmb3IgdGhlbXNlbHZlcyBidXQKKyAgICAgICBpbnN0ZWFkIGFyZSBpbnRlcnByZXRlZCBpbiBzb21lIHNwZWNpYWwgd2F5LgorCisgICAgICAgVGhlcmUgYXJlIHR3byBkaWZmZXJlbnQgc2V0cyBvZiBtZXRhLWNoYXJhY3RlcnM6IHRob3NlIHRoYXQgYXJlICByZWNvZy0KKyAgICAgICBuaXplZCAgYW55d2hlcmUgaW4gdGhlIHBhdHRlcm4gZXhjZXB0IHdpdGhpbiBzcXVhcmUgYnJhY2tldHMsIGFuZCB0aG9zZQorICAgICAgIHRoYXQgYXJlIHJlY29nbml6ZWQgaW4gc3F1YXJlIGJyYWNrZXRzLiBPdXRzaWRlICBzcXVhcmUgIGJyYWNrZXRzLCAgdGhlCisgICAgICAgbWV0YS1jaGFyYWN0ZXJzIGFyZSBhcyBmb2xsb3dzOgorCisgICAgICAgICBcICAgICAgZ2VuZXJhbCBlc2NhcGUgY2hhcmFjdGVyIHdpdGggc2V2ZXJhbCB1c2VzCisgICAgICAgICBeICAgICAgYXNzZXJ0IHN0YXJ0IG9mIHN0cmluZyAob3IgbGluZSwgaW4gbXVsdGlsaW5lIG1vZGUpCisgICAgICAgICAkICAgICAgYXNzZXJ0IGVuZCBvZiBzdHJpbmcgKG9yIGxpbmUsIGluIG11bHRpbGluZSBtb2RlKQorICAgICAgICAgLiAgICAgIG1hdGNoIGFueSBjaGFyYWN0ZXIgZXhjZXB0IG5ld2xpbmUgKGJ5IGRlZmF1bHQpCisgICAgICAgICBbICAgICAgc3RhcnQgY2hhcmFjdGVyIGNsYXNzIGRlZmluaXRpb24KKyAgICAgICAgIHwgICAgICBzdGFydCBvZiBhbHRlcm5hdGl2ZSBicmFuY2gKKyAgICAgICAgICggICAgICBzdGFydCBzdWJwYXR0ZXJuCisgICAgICAgICApICAgICAgZW5kIHN1YnBhdHRlcm4KKyAgICAgICAgID8gICAgICBleHRlbmRzIHRoZSBtZWFuaW5nIG9mICgKKyAgICAgICAgICAgICAgICBhbHNvIDAgb3IgMSBxdWFudGlmaWVyCisgICAgICAgICAgICAgICAgYWxzbyBxdWFudGlmaWVyIG1pbmltaXplcgorICAgICAgICAgKiAgICAgIDAgb3IgbW9yZSBxdWFudGlmaWVyCisgICAgICAgICArICAgICAgMSBvciBtb3JlIHF1YW50aWZpZXIKKyAgICAgICAgICAgICAgICBhbHNvICJwb3NzZXNzaXZlIHF1YW50aWZpZXIiCisgICAgICAgICB7ICAgICAgc3RhcnQgbWluL21heCBxdWFudGlmaWVyCisKKyAgICAgICBQYXJ0ICBvZiAgYSAgcGF0dGVybiAgdGhhdCBpcyBpbiBzcXVhcmUgYnJhY2tldHMgaXMgY2FsbGVkIGEgImNoYXJhY3RlcgorICAgICAgIGNsYXNzIi4gSW4gYSBjaGFyYWN0ZXIgY2xhc3MgdGhlIG9ubHkgbWV0YS1jaGFyYWN0ZXJzIGFyZToKKworICAgICAgICAgXCAgICAgIGdlbmVyYWwgZXNjYXBlIGNoYXJhY3RlcgorICAgICAgICAgXiAgICAgIG5lZ2F0ZSB0aGUgY2xhc3MsIGJ1dCBvbmx5IGlmIHRoZSBmaXJzdCBjaGFyYWN0ZXIKKyAgICAgICAgIC0gICAgICBpbmRpY2F0ZXMgY2hhcmFjdGVyIHJhbmdlCisgICAgICAgICBbICAgICAgUE9TSVggY2hhcmFjdGVyIGNsYXNzIChvbmx5IGlmIGZvbGxvd2VkIGJ5IFBPU0lYCisgICAgICAgICAgICAgICAgICBzeW50YXgpCisgICAgICAgICBdICAgICAgdGVybWluYXRlcyB0aGUgY2hhcmFjdGVyIGNsYXNzCisKKyAgICAgICBUaGUgZm9sbG93aW5nIHNlY3Rpb25zIGRlc2NyaWJlIHRoZSB1c2Ugb2YgZWFjaCBvZiB0aGUgbWV0YS1jaGFyYWN0ZXJzLgorCisKK0JBQ0tTTEFTSAorCisgICAgICAgVGhlIGJhY2tzbGFzaCBjaGFyYWN0ZXIgaGFzIHNldmVyYWwgdXNlcy4gRmlyc3RseSwgaWYgaXQgaXMgZm9sbG93ZWQgYnkKKyAgICAgICBhIG5vbi1hbHBoYW1lcmljIGNoYXJhY3RlciwgaXQgdGFrZXMgIGF3YXkgIGFueSAgc3BlY2lhbCAgbWVhbmluZyAgdGhhdAorICAgICAgIGNoYXJhY3RlciAgbWF5ICBoYXZlLiAgVGhpcyAgdXNlICBvZiAgYmFja3NsYXNoICBhcyBhbiBlc2NhcGUgY2hhcmFjdGVyCisgICAgICAgYXBwbGllcyBib3RoIGluc2lkZSBhbmQgb3V0c2lkZSBjaGFyYWN0ZXIgY2xhc3Nlcy4KKworICAgICAgIEZvciBleGFtcGxlLCBpZiB5b3Ugd2FudCB0byBtYXRjaCBhICogY2hhcmFjdGVyLCB5b3Ugd3JpdGUgIFwqICBpbiAgdGhlCisgICAgICAgcGF0dGVybi4gICBUaGlzICBlc2NhcGluZyAgYWN0aW9uICBhcHBsaWVzIHdoZXRoZXIgb3Igbm90IHRoZSBmb2xsb3dpbmcKKyAgICAgICBjaGFyYWN0ZXIgd291bGQgb3RoZXJ3aXNlIGJlIGludGVycHJldGVkIGFzIGEgbWV0YS1jaGFyYWN0ZXIsIHNvIGl0ICBpcworICAgICAgIGFsd2F5cyAgc2FmZSB0byBwcmVjZWRlIGEgbm9uLWFscGhhbWVyaWMgd2l0aCBiYWNrc2xhc2ggdG8gc3BlY2lmeSB0aGF0CisgICAgICAgaXQgc3RhbmRzIGZvciBpdHNlbGYuIEluIHBhcnRpY3VsYXIsIGlmIHlvdSB3YW50IHRvIG1hdGNoIGEgIGJhY2tzbGFzaCwKKyAgICAgICB5b3Ugd3JpdGUgXFwuCisKKyAgICAgICBJZiAgYSAgcGF0dGVybiBpcyBjb21waWxlZCB3aXRoIHRoZSBQQ1JFX0VYVEVOREVEIG9wdGlvbiwgd2hpdGVzcGFjZSBpbgorICAgICAgIHRoZSBwYXR0ZXJuIChvdGhlciB0aGFuIGluIGEgY2hhcmFjdGVyIGNsYXNzKSBhbmQgY2hhcmFjdGVycyBiZXR3ZWVuICBhCisgICAgICAgIyBvdXRzaWRlIGEgY2hhcmFjdGVyIGNsYXNzIGFuZCB0aGUgbmV4dCBuZXdsaW5lIGNoYXJhY3RlciBhcmUgaWdub3JlZC4KKyAgICAgICBBbiBlc2NhcGluZyBiYWNrc2xhc2ggY2FuIGJlIHVzZWQgdG8gaW5jbHVkZSBhIHdoaXRlc3BhY2Ugb3IgIyAgY2hhcmFjLQorICAgICAgIHRlciBhcyBwYXJ0IG9mIHRoZSBwYXR0ZXJuLgorCisgICAgICAgSWYgIHlvdSAgd2FudCAgdG8gcmVtb3ZlIHRoZSBzcGVjaWFsIG1lYW5pbmcgZnJvbSBhIHNlcXVlbmNlIG9mIGNoYXJhYy0KKyAgICAgICB0ZXJzLCB5b3UgY2FuIGRvIHNvIGJ5IHB1dHRpbmcgdGhlbSBiZXR3ZWVuIFxRIGFuZCBcRS4gVGhpcyBpcyAgZGlmZmVyLQorICAgICAgIGVudCAgZnJvbSAgUGVybCAgaW4gIHRoYXQgICQgIGFuZCAgQCBhcmUgaGFuZGxlZCBhcyBsaXRlcmFscyBpbiBcUS4uLlxFCisgICAgICAgc2VxdWVuY2VzIGluIFBDUkUsIHdoZXJlYXMgaW4gUGVybCwgJCBhbmQgQCBjYXVzZSAgdmFyaWFibGUgIGludGVycG9sYS0KKyAgICAgICB0aW9uLiBOb3RlIHRoZSBmb2xsb3dpbmcgZXhhbXBsZXM6CisKKyAgICAgICAgIFBhdHRlcm4gICAgICAgICAgICBQQ1JFIG1hdGNoZXMgICBQZXJsIG1hdGNoZXMKKworICAgICAgICAgXFFhYmMkeHl6XEUgICAgICAgIGFiYyR4eXogICAgICAgIGFiYyBmb2xsb3dlZCBieSB0aGUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRlbnRzIG9mICR4eXoKKyAgICAgICAgIFxRYWJjXCR4eXpcRSAgICAgICBhYmNcJHh5eiAgICAgICBhYmNcJHh5egorICAgICAgICAgXFFhYmNcRVwkXFF4eXpcRSAgIGFiYyR4eXogICAgICAgIGFiYyR4eXoKKworICAgICAgIFRoZSAgXFEuLi5cRSAgc2VxdWVuY2UgIGlzIHJlY29nbml6ZWQgYm90aCBpbnNpZGUgYW5kIG91dHNpZGUgY2hhcmFjdGVyCisgICAgICAgY2xhc3Nlcy4KKworICAgICAgIEEgc2Vjb25kIHVzZSBvZiBiYWNrc2xhc2ggcHJvdmlkZXMgYSB3YXkgb2YgZW5jb2Rpbmcgbm9uLXByaW50aW5nIGNoYXItCisgICAgICAgYWN0ZXJzICBpbiBwYXR0ZXJucyBpbiBhIHZpc2libGUgbWFubmVyLiBUaGVyZSBpcyBubyByZXN0cmljdGlvbiBvbiB0aGUKKyAgICAgICBhcHBlYXJhbmNlIG9mIG5vbi1wcmludGluZyBjaGFyYWN0ZXJzLCBhcGFydCBmcm9tIHRoZSBiaW5hcnkgemVybyAgdGhhdAorICAgICAgIHRlcm1pbmF0ZXMgIGEgIHBhdHRlcm4sICBidXQgIHdoZW4gIGEgcGF0dGVybiBpcyBiZWluZyBwcmVwYXJlZCBieSB0ZXh0CisgICAgICAgZWRpdGluZywgaXQgaXMgdXN1YWxseSBlYXNpZXIgIHRvICB1c2UgIG9uZSAgb2YgIHRoZSAgZm9sbG93aW5nICBlc2NhcGUKKyAgICAgICBzZXF1ZW5jZXMgdGhhbiB0aGUgYmluYXJ5IGNoYXJhY3RlciBpdCByZXByZXNlbnRzOgorCisgICAgICAgICBcYSAgICAgICAgYWxhcm0sIHRoYXQgaXMsIHRoZSBCRUwgY2hhcmFjdGVyIChoZXggMDcpCisgICAgICAgICBcY3ggICAgICAgImNvbnRyb2wteCIsIHdoZXJlIHggaXMgYW55IGNoYXJhY3RlcgorICAgICAgICAgXGUgICAgICAgIGVzY2FwZSAoaGV4IDFCKQorICAgICAgICAgXGYgICAgICAgIGZvcm1mZWVkIChoZXggMEMpCisgICAgICAgICBcbiAgICAgICAgbmV3bGluZSAoaGV4IDBBKQorICAgICAgICAgXHIgICAgICAgIGNhcnJpYWdlIHJldHVybiAoaGV4IDBEKQorICAgICAgICAgXHQgICAgICAgIHRhYiAoaGV4IDA5KQorICAgICAgICAgXGRkZCAgICAgIGNoYXJhY3RlciB3aXRoIG9jdGFsIGNvZGUgZGRkLCBvciBiYWNrcmVmZXJlbmNlCisgICAgICAgICBceGhoICAgICAgY2hhcmFjdGVyIHdpdGggaGV4IGNvZGUgaGgKKyAgICAgICAgIFx4e2hoaC4ufSBjaGFyYWN0ZXIgd2l0aCBoZXggY29kZSBoaGguLi4gKFVURi04IG1vZGUgb25seSkKKworICAgICAgIFRoZSAgcHJlY2lzZSAgZWZmZWN0IG9mIFxjeCBpcyBhcyBmb2xsb3dzOiBpZiB4IGlzIGEgbG93ZXIgY2FzZSBsZXR0ZXIsCisgICAgICAgaXQgaXMgY29udmVydGVkIHRvIHVwcGVyIGNhc2UuIFRoZW4gYml0IDYgb2YgdGhlIGNoYXJhY3RlciAoaGV4IDQwKSAgaXMKKyAgICAgICBpbnZlcnRlZC4gICBUaHVzICBcY3ogYmVjb21lcyBoZXggMUEsIGJ1dCBcY3sgYmVjb21lcyBoZXggM0IsIHdoaWxlIFxjOworICAgICAgIGJlY29tZXMgaGV4IDdCLgorCisgICAgICAgQWZ0ZXIgXHgsIGZyb20gemVybyB0byB0d28gaGV4YWRlY2ltYWwgZGlnaXRzIGFyZSByZWFkIChsZXR0ZXJzIGNhbiAgYmUKKyAgICAgICBpbiAgdXBwZXIgb3IgbG93ZXIgY2FzZSkuIEluIFVURi04IG1vZGUsIGFueSBudW1iZXIgb2YgaGV4YWRlY2ltYWwgZGlnLQorICAgICAgIGl0cyBtYXkgYXBwZWFyIGJldHdlZW4gXHh7IGFuZCB9LCBidXQgdGhlIHZhbHVlIG9mIHRoZSAgY2hhcmFjdGVyICBjb2RlCisgICAgICAgbXVzdCAgYmUgIGxlc3MgIHRoYW4gIDIqKjMxICAodGhhdCBpcywgdGhlIG1heGltdW0gaGV4YWRlY2ltYWwgdmFsdWUgaXMKKyAgICAgICA3RkZGRkZGRikuIElmIGNoYXJhY3RlcnMgb3RoZXIgdGhhbiBoZXhhZGVjaW1hbCBkaWdpdHMgIGFwcGVhciAgYmV0d2VlbgorICAgICAgIFx4eyAgYW5kIH0sIG9yIGlmIHRoZXJlIGlzIG5vIHRlcm1pbmF0aW5nIH0sIHRoaXMgZm9ybSBvZiBlc2NhcGUgaXMgbm90CisgICAgICAgcmVjb2duaXplZC4gSW5zdGVhZCwgdGhlIGluaXRpYWwgXHggd2lsbCBiZSBpbnRlcnByZXRlZCBhcyBhIGJhc2ljIGhleC0KKyAgICAgICBhZGVjaW1hbCBlc2NhcGUsIHdpdGggbm8gZm9sbG93aW5nIGRpZ2l0cywgZ2l2aW5nIGEgYnl0ZSB3aG9zZSB2YWx1ZSBpcworICAgICAgIHplcm8uCisKKyAgICAgICBDaGFyYWN0ZXJzIHdob3NlIHZhbHVlIGlzIGxlc3MgdGhhbiAyNTYgY2FuIGJlIGRlZmluZWQgYnkgZWl0aGVyIG9mIHRoZQorICAgICAgIHR3byAgc3ludGF4ZXMgZm9yIFx4IHdoZW4gUENSRSBpcyBpbiBVVEYtOCBtb2RlLiBUaGVyZSBpcyBubyBkaWZmZXJlbmNlCisgICAgICAgaW4gdGhlIHdheSB0aGV5IGFyZSBoYW5kbGVkLiBGb3IgZXhhbXBsZSwgXHhkYyBpcyBleGFjdGx5IHRoZSAgc2FtZSAgYXMKKyAgICAgICBceHtkY30uCisKKyAgICAgICBBZnRlciAgXDAgIHVwICB0byAgdHdvIGZ1cnRoZXIgb2N0YWwgZGlnaXRzIGFyZSByZWFkLiBJbiBib3RoIGNhc2VzLCBpZgorICAgICAgIHRoZXJlIGFyZSBmZXdlciB0aGFuIHR3byBkaWdpdHMsIGp1c3QgdGhvc2UgdGhhdCBhcmUgcHJlc2VudCBhcmUgIHVzZWQuCisgICAgICAgVGh1cyAgdGhlIHNlcXVlbmNlIFwwXHhcMDcgc3BlY2lmaWVzIHR3byBiaW5hcnkgemVyb3MgZm9sbG93ZWQgYnkgYSBCRUwKKyAgICAgICBjaGFyYWN0ZXIgKGNvZGUgdmFsdWUgNykuIE1ha2Ugc3VyZSB5b3Ugc3VwcGx5ICB0d28gIGRpZ2l0cyAgYWZ0ZXIgIHRoZQorICAgICAgIGluaXRpYWwgemVybyBpZiB0aGUgY2hhcmFjdGVyIHRoYXQgZm9sbG93cyBpcyBpdHNlbGYgYW4gb2N0YWwgZGlnaXQuCisKKyAgICAgICBUaGUgaGFuZGxpbmcgb2YgYSBiYWNrc2xhc2ggZm9sbG93ZWQgYnkgYSBkaWdpdCBvdGhlciB0aGFuIDAgaXMgY29tcGxpLQorICAgICAgIGNhdGVkLiAgT3V0c2lkZSBhIGNoYXJhY3RlciBjbGFzcywgUENSRSByZWFkcyBpdCBhbmQgYW55IGZvbGxvd2luZyBkaWctCisgICAgICAgaXRzICBhcyAgYSAgZGVjaW1hbCAgbnVtYmVyLiBJZiB0aGUgbnVtYmVyIGlzIGxlc3MgdGhhbiAxMCwgb3IgaWYgdGhlcmUKKyAgICAgICBoYXZlIGJlZW4gYXQgbGVhc3QgdGhhdCBtYW55IHByZXZpb3VzIGNhcHR1cmluZyBsZWZ0IHBhcmVudGhlc2VzIGluIHRoZQorICAgICAgIGV4cHJlc3Npb24sICB0aGUgIGVudGlyZSAgc2VxdWVuY2UgIGlzICB0YWtlbiAgYXMgIGEgIGJhY2sgcmVmZXJlbmNlLiBBCisgICAgICAgZGVzY3JpcHRpb24gb2YgaG93IHRoaXMgd29ya3MgaXMgZ2l2ZW4gbGF0ZXIsIGZvbGxvd2luZyB0aGUgIGRpc2N1c3Npb24KKyAgICAgICBvZiBwYXJlbnRoZXNpemVkIHN1YnBhdHRlcm5zLgorCisgICAgICAgSW5zaWRlICBhICBjaGFyYWN0ZXIgIGNsYXNzLCBvciBpZiB0aGUgZGVjaW1hbCBudW1iZXIgaXMgZ3JlYXRlciB0aGFuIDkKKyAgICAgICBhbmQgdGhlcmUgaGF2ZSBub3QgYmVlbiB0aGF0IG1hbnkgY2FwdHVyaW5nIHN1YnBhdHRlcm5zLCBQQ1JFICByZS1yZWFkcworICAgICAgIHVwICB0byB0aHJlZSBvY3RhbCBkaWdpdHMgZm9sbG93aW5nIHRoZSBiYWNrc2xhc2gsIGFuZCBnZW5lcmF0ZXMgYSBzaW4tCisgICAgICAgZ2xlIGJ5dGUgZnJvbSB0aGUgbGVhc3Qgc2lnbmlmaWNhbnQgOCBiaXRzIG9mIHRoZSB2YWx1ZS4gQW55IHN1YnNlcXVlbnQKKyAgICAgICBkaWdpdHMgc3RhbmQgZm9yIHRoZW1zZWx2ZXMuICBGb3IgZXhhbXBsZToKKworICAgICAgICAgXDA0MCAgIGlzIGFub3RoZXIgd2F5IG9mIHdyaXRpbmcgYSBzcGFjZQorICAgICAgICAgXDQwICAgIGlzIHRoZSBzYW1lLCBwcm92aWRlZCB0aGVyZSBhcmUgZmV3ZXIgdGhhbiA0MAorICAgICAgICAgICAgICAgICAgIHByZXZpb3VzIGNhcHR1cmluZyBzdWJwYXR0ZXJucworICAgICAgICAgXDcgICAgIGlzIGFsd2F5cyBhIGJhY2sgcmVmZXJlbmNlCisgICAgICAgICBcMTEgICAgbWlnaHQgYmUgYSBiYWNrIHJlZmVyZW5jZSwgb3IgYW5vdGhlciB3YXkgb2YKKyAgICAgICAgICAgICAgICAgICB3cml0aW5nIGEgdGFiCisgICAgICAgICBcMDExICAgaXMgYWx3YXlzIGEgdGFiCisgICAgICAgICBcMDExMyAgaXMgYSB0YWIgZm9sbG93ZWQgYnkgdGhlIGNoYXJhY3RlciAiMyIKKyAgICAgICAgIFwxMTMgICBtaWdodCBiZSBhIGJhY2sgcmVmZXJlbmNlLCBvdGhlcndpc2UgdGhlCisgICAgICAgICAgICAgICAgICAgY2hhcmFjdGVyIHdpdGggb2N0YWwgY29kZSAxMTMKKyAgICAgICAgIFwzNzcgICBtaWdodCBiZSBhIGJhY2sgcmVmZXJlbmNlLCBvdGhlcndpc2UKKyAgICAgICAgICAgICAgICAgICB0aGUgYnl0ZSBjb25zaXN0aW5nIGVudGlyZWx5IG9mIDEgYml0cworICAgICAgICAgXDgxICAgIGlzIGVpdGhlciBhIGJhY2sgcmVmZXJlbmNlLCBvciBhIGJpbmFyeSB6ZXJvCisgICAgICAgICAgICAgICAgICAgZm9sbG93ZWQgYnkgdGhlIHR3byBjaGFyYWN0ZXJzICI4IiBhbmQgIjEiCisKKyAgICAgICBOb3RlICB0aGF0ICBvY3RhbCAgdmFsdWVzIG9mIDEwMCBvciBncmVhdGVyIG11c3Qgbm90IGJlIGludHJvZHVjZWQgYnkgYQorICAgICAgIGxlYWRpbmcgemVybywgYmVjYXVzZSBubyBtb3JlIHRoYW4gdGhyZWUgb2N0YWwgZGlnaXRzIGFyZSBldmVyIHJlYWQuCisKKyAgICAgICBBbGwgdGhlIHNlcXVlbmNlcyB0aGF0IGRlZmluZSBhIHNpbmdsZSBieXRlIHZhbHVlICBvciAgYSAgc2luZ2xlICBVVEYtOAorICAgICAgIGNoYXJhY3RlciAoaW4gVVRGLTggbW9kZSkgY2FuIGJlIHVzZWQgYm90aCBpbnNpZGUgYW5kIG91dHNpZGUgY2hhcmFjdGVyCisgICAgICAgY2xhc3Nlcy4gSW4gYWRkaXRpb24sIGluc2lkZSBhIGNoYXJhY3RlciAgY2xhc3MsICB0aGUgIHNlcXVlbmNlICBcYiAgaXMKKyAgICAgICBpbnRlcnByZXRlZCAgYXMgIHRoZSAgYmFja3NwYWNlIGNoYXJhY3RlciAoaGV4IDA4KS4gT3V0c2lkZSBhIGNoYXJhY3RlcgorICAgICAgIGNsYXNzIGl0IGhhcyBhIGRpZmZlcmVudCBtZWFuaW5nIChzZWUgYmVsb3cpLgorCisgICAgICAgVGhlIHRoaXJkIHVzZSBvZiBiYWNrc2xhc2ggaXMgZm9yIHNwZWNpZnlpbmcgZ2VuZXJpYyBjaGFyYWN0ZXIgdHlwZXM6CisKKyAgICAgICAgIFxkICAgICBhbnkgZGVjaW1hbCBkaWdpdAorICAgICAgICAgXEQgICAgIGFueSBjaGFyYWN0ZXIgdGhhdCBpcyBub3QgYSBkZWNpbWFsIGRpZ2l0CisgICAgICAgICBccyAgICAgYW55IHdoaXRlc3BhY2UgY2hhcmFjdGVyCisgICAgICAgICBcUyAgICAgYW55IGNoYXJhY3RlciB0aGF0IGlzIG5vdCBhIHdoaXRlc3BhY2UgY2hhcmFjdGVyCisgICAgICAgICBcdyAgICAgYW55ICJ3b3JkIiBjaGFyYWN0ZXIKKyAgICAgICAgIFxXICAgICBhbnkgIm5vbi13b3JkIiBjaGFyYWN0ZXIKKworICAgICAgIEVhY2ggcGFpciBvZiBlc2NhcGUgc2VxdWVuY2VzIHBhcnRpdGlvbnMgdGhlIGNvbXBsZXRlIHNldCBvZiBjaGFyYWN0ZXJzCisgICAgICAgaW50byAgdHdvIGRpc2pvaW50IHNldHMuIEFueSBnaXZlbiBjaGFyYWN0ZXIgbWF0Y2hlcyBvbmUsIGFuZCBvbmx5IG9uZSwKKyAgICAgICBvZiBlYWNoIHBhaXIuCisKKyAgICAgICBJbiBVVEYtOCBtb2RlLCBjaGFyYWN0ZXJzIHdpdGggdmFsdWVzIGdyZWF0ZXIgdGhhbiAyNTUgbmV2ZXIgbWF0Y2ggIFxkLAorICAgICAgIFxzLCBvciBcdywgYW5kIGFsd2F5cyBtYXRjaCBcRCwgXFMsIGFuZCBcVy4KKworICAgICAgIEZvciAgY29tcGF0aWJpbGl0eSAgd2l0aCBQZXJsLCBccyBkb2VzIG5vdCBtYXRjaCB0aGUgVlQgY2hhcmFjdGVyIChjb2RlCisgICAgICAgMTEpLiAgVGhpcyBtYWtlcyBpdCBkaWZmZXJlbnQgZnJvbSB0aGUgdGhlIFBPU0lYICJzcGFjZSIgY2xhc3MuIFRoZSAgXHMKKyAgICAgICBjaGFyYWN0ZXJzIGFyZSBIVCAoOSksIExGICgxMCksIEZGICgxMiksIENSICgxMyksIGFuZCBzcGFjZSAoMzIpLgorCisgICAgICAgQSAgIndvcmQiIGNoYXJhY3RlciBpcyBhbnkgbGV0dGVyIG9yIGRpZ2l0IG9yIHRoZSB1bmRlcnNjb3JlIGNoYXJhY3RlciwKKyAgICAgICB0aGF0IGlzLCBhbnkgY2hhcmFjdGVyIHdoaWNoIGNhbiBiZSBwYXJ0IG9mIGEgUGVybCAid29yZCIuIFRoZSAgZGVmaW5pLQorICAgICAgIHRpb24gIG9mICBsZXR0ZXJzICBhbmQgZGlnaXRzIGlzIGNvbnRyb2xsZWQgYnkgUENSRSdzIGNoYXJhY3RlciB0YWJsZXMsCisgICAgICAgYW5kIG1heSB2YXJ5IGlmIGxvY2FsZS0gc3BlY2lmaWMgbWF0Y2hpbmcgaXMgdGFraW5nIHBsYWNlIChzZWUgICJMb2NhbGUKKyAgICAgICBzdXBwb3J0IiAgaW4gIHRoZSAgcGNyZWFwaSAgcGFnZSkuICBGb3IgIGV4YW1wbGUsICBpbiB0aGUgImZyIiAoRnJlbmNoKQorICAgICAgIGxvY2FsZSwgc29tZSBjaGFyYWN0ZXIgY29kZXMgZ3JlYXRlciB0aGFuIDEyOCAgYXJlICB1c2VkICBmb3IgIGFjY2VudGVkCisgICAgICAgbGV0dGVycywgYW5kIHRoZXNlIGFyZSBtYXRjaGVkIGJ5IFx3LgorCisgICAgICAgVGhlc2UgY2hhcmFjdGVyIHR5cGUgc2VxdWVuY2VzIGNhbiBhcHBlYXIgYm90aCBpbnNpZGUgYW5kIG91dHNpZGUgY2hhci0KKyAgICAgICBhY3RlciBjbGFzc2VzLiBUaGV5IGVhY2ggbWF0Y2ggb25lIGNoYXJhY3RlciBvZiB0aGUgIGFwcHJvcHJpYXRlICB0eXBlLgorICAgICAgIElmICB0aGUgY3VycmVudCBtYXRjaGluZyBwb2ludCBpcyBhdCB0aGUgZW5kIG9mIHRoZSBzdWJqZWN0IHN0cmluZywgYWxsCisgICAgICAgb2YgdGhlbSBmYWlsLCBzaW5jZSB0aGVyZSBpcyBubyBjaGFyYWN0ZXIgdG8gbWF0Y2guCisKKyAgICAgICBUaGUgZm91cnRoIHVzZSBvZiBiYWNrc2xhc2ggaXMgZm9yIGNlcnRhaW4gc2ltcGxlIGFzc2VydGlvbnMuIEFuIGFzc2VyLQorICAgICAgIHRpb24gIHNwZWNpZmllcyBhIGNvbmRpdGlvbiB0aGF0IGhhcyB0byBiZSBtZXQgYXQgYSBwYXJ0aWN1bGFyIHBvaW50IGluCisgICAgICAgYSBtYXRjaCwgd2l0aG91dCBjb25zdW1pbmcgYW55IGNoYXJhY3RlcnMgZnJvbSB0aGUgc3ViamVjdCBzdHJpbmcuICBUaGUKKyAgICAgICB1c2UgIG9mIHN1YnBhdHRlcm5zIGZvciBtb3JlIGNvbXBsaWNhdGVkIGFzc2VydGlvbnMgaXMgZGVzY3JpYmVkIGJlbG93LgorICAgICAgIFRoZSBiYWNrc2xhc2hlZCBhc3NlcnRpb25zIGFyZQorCisgICAgICAgICBcYiAgICAgbWF0Y2hlcyBhdCBhIHdvcmQgYm91bmRhcnkKKyAgICAgICAgIFxCICAgICBtYXRjaGVzIHdoZW4gbm90IGF0IGEgd29yZCBib3VuZGFyeQorICAgICAgICAgXEEgICAgIG1hdGNoZXMgYXQgc3RhcnQgb2Ygc3ViamVjdAorICAgICAgICAgXFogICAgIG1hdGNoZXMgYXQgZW5kIG9mIHN1YmplY3Qgb3IgYmVmb3JlIG5ld2xpbmUgYXQgZW5kCisgICAgICAgICBceiAgICAgbWF0Y2hlcyBhdCBlbmQgb2Ygc3ViamVjdAorICAgICAgICAgXEcgICAgIG1hdGNoZXMgYXQgZmlyc3QgbWF0Y2hpbmcgcG9zaXRpb24gaW4gc3ViamVjdAorCisgICAgICAgVGhlc2UgYXNzZXJ0aW9ucyBtYXkgbm90IGFwcGVhciBpbiBjaGFyYWN0ZXIgY2xhc3NlcyAoYnV0IG5vdGUgdGhhdCAgXGIKKyAgICAgICBoYXMgYSBkaWZmZXJlbnQgbWVhbmluZywgbmFtZWx5IHRoZSBiYWNrc3BhY2UgY2hhcmFjdGVyLCBpbnNpZGUgYSBjaGFyLQorICAgICAgIGFjdGVyIGNsYXNzKS4KKworICAgICAgIEEgd29yZCBib3VuZGFyeSBpcyBhIHBvc2l0aW9uIGluIHRoZSBzdWJqZWN0IHN0cmluZyB3aGVyZSAgdGhlICBjdXJyZW50CisgICAgICAgY2hhcmFjdGVyICBhbmQgIHRoZSBwcmV2aW91cyBjaGFyYWN0ZXIgZG8gbm90IGJvdGggbWF0Y2ggXHcgb3IgXFcgKGkuZS4KKyAgICAgICBvbmUgbWF0Y2hlcyBcdyBhbmQgdGhlIG90aGVyIG1hdGNoZXMgXFcpLCBvciB0aGUgc3RhcnQgb3IgIGVuZCAgb2YgIHRoZQorICAgICAgIHN0cmluZyBpZiB0aGUgZmlyc3Qgb3IgbGFzdCBjaGFyYWN0ZXIgbWF0Y2hlcyBcdywgcmVzcGVjdGl2ZWx5LgorCisgICAgICAgVGhlICBcQSwgIFxaLCAgYW5kIFx6IGFzc2VydGlvbnMgZGlmZmVyIGZyb20gdGhlIHRyYWRpdGlvbmFsIGNpcmN1bWZsZXgKKyAgICAgICBhbmQgZG9sbGFyIChkZXNjcmliZWQgYmVsb3cpIGluIHRoYXQgdGhleSBvbmx5IGV2ZXIgbWF0Y2ggYXQgIHRoZSAgdmVyeQorICAgICAgIHN0YXJ0ICBhbmQgIGVuZCAgb2YgdGhlIHN1YmplY3Qgc3RyaW5nLCB3aGF0ZXZlciBvcHRpb25zIGFyZSBzZXQuIFRodXMsCisgICAgICAgdGhleSBhcmUgaW5kZXBlbmRlbnQgb2YgbXVsdGlsaW5lIG1vZGUuCisKKyAgICAgICBUaGV5IGFyZSBub3QgYWZmZWN0ZWQgYnkgdGhlIFBDUkVfTk9UQk9MIG9yIFBDUkVfTk9URU9MIG9wdGlvbnMuIElmIHRoZQorICAgICAgIHN0YXJ0b2Zmc2V0IGFyZ3VtZW50IG9mIHBjcmVfZXhlYygpIGlzIG5vbi16ZXJvLCBpbmRpY2F0aW5nIHRoYXQgbWF0Y2gtCisgICAgICAgaW5nIGlzIHRvIHN0YXJ0IGF0IGEgcG9pbnQgb3RoZXIgdGhhbiB0aGUgYmVnaW5uaW5nIG9mIHRoZSBzdWJqZWN0LCAgXEEKKyAgICAgICBjYW4gIG5ldmVyICBtYXRjaC4gIFRoZSBkaWZmZXJlbmNlIGJldHdlZW4gXFogYW5kIFx6IGlzIHRoYXQgXFogbWF0Y2hlcworICAgICAgIGJlZm9yZSBhIG5ld2xpbmUgdGhhdCBpcyB0aGUgbGFzdCBjaGFyYWN0ZXIgb2YgdGhlIHN0cmluZyBhcyB3ZWxsIGFzIGF0CisgICAgICAgdGhlIGVuZCBvZiB0aGUgc3RyaW5nLCB3aGVyZWFzIFx6IG1hdGNoZXMgb25seSBhdCB0aGUgZW5kLgorCisgICAgICAgVGhlICBcRyBhc3NlcnRpb24gaXMgdHJ1ZSBvbmx5IHdoZW4gdGhlIGN1cnJlbnQgbWF0Y2hpbmcgcG9zaXRpb24gaXMgYXQKKyAgICAgICB0aGUgc3RhcnQgcG9pbnQgb2YgdGhlIG1hdGNoLCBhcyBzcGVjaWZpZWQgYnkgdGhlIHN0YXJ0b2Zmc2V0ICBhcmd1bWVudAorICAgICAgIG9mICBwY3JlX2V4ZWMoKS4gIEl0ICBkaWZmZXJzICBmcm9tIFxBIHdoZW4gdGhlIHZhbHVlIG9mIHN0YXJ0b2Zmc2V0IGlzCisgICAgICAgbm9uLXplcm8uIEJ5IGNhbGxpbmcgcGNyZV9leGVjKCkgbXVsdGlwbGUgdGltZXMgd2l0aCBhcHByb3ByaWF0ZSAgYXJndS0KKyAgICAgICBtZW50cywgeW91IGNhbiBtaW1pYyBQZXJsJ3MgL2cgb3B0aW9uLCBhbmQgaXQgaXMgaW4gdGhpcyBraW5kIG9mIGltcGxlLQorICAgICAgIG1lbnRhdGlvbiB3aGVyZSBcRyBjYW4gYmUgdXNlZnVsLgorCisgICAgICAgTm90ZSwgaG93ZXZlciwgdGhhdCBQQ1JFJ3MgaW50ZXJwcmV0YXRpb24gb2YgXEcsIGFzIHRoZSAgc3RhcnQgIG9mICB0aGUKKyAgICAgICBjdXJyZW50IG1hdGNoLCBpcyBzdWJ0bHkgZGlmZmVyZW50IGZyb20gUGVybCdzLCB3aGljaCBkZWZpbmVzIGl0IGFzIHRoZQorICAgICAgIGVuZCBvZiB0aGUgcHJldmlvdXMgbWF0Y2guIEluIFBlcmwsIHRoZXNlIGNhbiAgYmUgIGRpZmZlcmVudCAgd2hlbiAgdGhlCisgICAgICAgcHJldmlvdXNseSAgbWF0Y2hlZCAgc3RyaW5nIHdhcyBlbXB0eS4gQmVjYXVzZSBQQ1JFIGRvZXMganVzdCBvbmUgbWF0Y2gKKyAgICAgICBhdCBhIHRpbWUsIGl0IGNhbm5vdCByZXByb2R1Y2UgdGhpcyBiZWhhdmlvdXIuCisKKyAgICAgICBJZiBhbGwgdGhlIGFsdGVybmF0aXZlcyBvZiBhIHBhdHRlcm4gYmVnaW4gd2l0aCBcRywgdGhlICBleHByZXNzaW9uICBpcworICAgICAgIGFuY2hvcmVkIHRvIHRoZSBzdGFydGluZyBtYXRjaCBwb3NpdGlvbiwgYW5kIHRoZSAiYW5jaG9yZWQiIGZsYWcgaXMgc2V0CisgICAgICAgaW4gdGhlIGNvbXBpbGVkIHJlZ3VsYXIgZXhwcmVzc2lvbi4KKworCitDSVJDVU1GTEVYIEFORCBET0xMQVIKKworICAgICAgIE91dHNpZGUgYSBjaGFyYWN0ZXIgY2xhc3MsIGluIHRoZSBkZWZhdWx0IG1hdGNoaW5nIG1vZGUsIHRoZSBjaXJjdW1mbGV4CisgICAgICAgY2hhcmFjdGVyICBpcyAgYW4gIGFzc2VydGlvbiB3aGljaCBpcyB0cnVlIG9ubHkgaWYgdGhlIGN1cnJlbnQgbWF0Y2hpbmcKKyAgICAgICBwb2ludCBpcyBhdCB0aGUgc3RhcnQgb2YgdGhlIHN1YmplY3Qgc3RyaW5nLiBJZiB0aGUgIHN0YXJ0b2Zmc2V0ICBhcmd1LQorICAgICAgIG1lbnQgIG9mICBwY3JlX2V4ZWMoKSAgaXMgIG5vbi16ZXJvLCAgY2lyY3VtZmxleCBjYW4gbmV2ZXIgbWF0Y2ggaWYgdGhlCisgICAgICAgUENSRV9NVUxUSUxJTkUgb3B0aW9uIGlzIHVuc2V0LiBJbnNpZGUgYSAgY2hhcmFjdGVyICBjbGFzcywgIGNpcmN1bWZsZXgKKyAgICAgICBoYXMgYW4gZW50aXJlbHkgZGlmZmVyZW50IG1lYW5pbmcgKHNlZSBiZWxvdykuCisKKyAgICAgICBDaXJjdW1mbGV4ICBuZWVkICBub3QgYmUgdGhlIGZpcnN0IGNoYXJhY3RlciBvZiB0aGUgcGF0dGVybiBpZiBhIG51bWJlcgorICAgICAgIG9mIGFsdGVybmF0aXZlcyBhcmUgaW52b2x2ZWQsIGJ1dCBpdCBzaG91bGQgYmUgdGhlIGZpcnN0IHRoaW5nIGluICBlYWNoCisgICAgICAgYWx0ZXJuYXRpdmUgIGluICB3aGljaCAgaXQgYXBwZWFycyBpZiB0aGUgcGF0dGVybiBpcyBldmVyIHRvIG1hdGNoIHRoYXQKKyAgICAgICBicmFuY2guIElmIGFsbCBwb3NzaWJsZSBhbHRlcm5hdGl2ZXMgc3RhcnQgd2l0aCBhIGNpcmN1bWZsZXgsIHRoYXQgIGlzLAorICAgICAgIGlmICB0aGUgIHBhdHRlcm4gIGlzIGNvbnN0cmFpbmVkIHRvIG1hdGNoIG9ubHkgYXQgdGhlIHN0YXJ0IG9mIHRoZSBzdWItCisgICAgICAgamVjdCwgaXQgaXMgc2FpZCB0byBiZSBhbiAiYW5jaG9yZWQiIHBhdHRlcm4uICAoVGhlcmUgIGFyZSAgYWxzbyAgb3RoZXIKKyAgICAgICBjb25zdHJ1Y3RzIHRoYXQgY2FuIGNhdXNlIGEgcGF0dGVybiB0byBiZSBhbmNob3JlZC4pCisKKyAgICAgICBBICBkb2xsYXIgIGNoYXJhY3RlciAgaXMgYW4gYXNzZXJ0aW9uIHdoaWNoIGlzIHRydWUgb25seSBpZiB0aGUgY3VycmVudAorICAgICAgIG1hdGNoaW5nIHBvaW50IGlzIGF0IHRoZSBlbmQgb2YgIHRoZSAgc3ViamVjdCAgc3RyaW5nLCAgb3IgIGltbWVkaWF0ZWx5CisgICAgICAgYmVmb3JlIGEgbmV3bGluZSBjaGFyYWN0ZXIgdGhhdCBpcyB0aGUgbGFzdCBjaGFyYWN0ZXIgaW4gdGhlIHN0cmluZyAoYnkKKyAgICAgICBkZWZhdWx0KS4gRG9sbGFyIG5lZWQgbm90IGJlIHRoZSBsYXN0IGNoYXJhY3RlciBvZiAgdGhlICBwYXR0ZXJuICBpZiAgYQorICAgICAgIG51bWJlciAgb2YgYWx0ZXJuYXRpdmVzIGFyZSBpbnZvbHZlZCwgYnV0IGl0IHNob3VsZCBiZSB0aGUgbGFzdCBpdGVtIGluCisgICAgICAgYW55IGJyYW5jaCBpbiB3aGljaCBpdCBhcHBlYXJzLiAgRG9sbGFyIGhhcyBubyAgc3BlY2lhbCAgbWVhbmluZyAgaW4gIGEKKyAgICAgICBjaGFyYWN0ZXIgY2xhc3MuCisKKyAgICAgICBUaGUgIG1lYW5pbmcgIG9mICBkb2xsYXIgIGNhbiBiZSBjaGFuZ2VkIHNvIHRoYXQgaXQgbWF0Y2hlcyBvbmx5IGF0IHRoZQorICAgICAgIHZlcnkgZW5kIG9mIHRoZSBzdHJpbmcsIGJ5IHNldHRpbmcgdGhlICBQQ1JFX0RPTExBUl9FTkRPTkxZICBvcHRpb24gIGF0CisgICAgICAgY29tcGlsZSB0aW1lLiBUaGlzIGRvZXMgbm90IGFmZmVjdCB0aGUgXFogYXNzZXJ0aW9uLgorCisgICAgICAgVGhlIG1lYW5pbmdzIG9mIHRoZSBjaXJjdW1mbGV4IGFuZCBkb2xsYXIgY2hhcmFjdGVycyBhcmUgY2hhbmdlZCBpZiB0aGUKKyAgICAgICBQQ1JFX01VTFRJTElORSBvcHRpb24gaXMgc2V0LiBXaGVuIHRoaXMgaXMgdGhlIGNhc2UsIHRoZXkgbWF0Y2ggaW1tZWRpLQorICAgICAgIGF0ZWx5ICBhZnRlciAgYW5kICBpbW1lZGlhdGVseSAgYmVmb3JlICBhbiAgaW50ZXJuYWwgbmV3bGluZSBjaGFyYWN0ZXIsCisgICAgICAgcmVzcGVjdGl2ZWx5LCBpbiBhZGRpdGlvbiB0byBtYXRjaGluZyBhdCB0aGUgc3RhcnQgYW5kIGVuZCBvZiB0aGUgIHN1Yi0KKyAgICAgICBqZWN0ICBzdHJpbmcuICBGb3IgIGV4YW1wbGUsICB0aGUgIHBhdHRlcm4gIC9eYWJjJC8gbWF0Y2hlcyB0aGUgc3ViamVjdAorICAgICAgIHN0cmluZyAiZGVmXG5hYmMiIGluIG11bHRpbGluZSBtb2RlLCBidXQgbm90ICBvdGhlcndpc2UuICBDb25zZXF1ZW50bHksCisgICAgICAgcGF0dGVybnMgIHRoYXQgIGFyZSAgYW5jaG9yZWQgIGluIHNpbmdsZSBsaW5lIG1vZGUgYmVjYXVzZSBhbGwgYnJhbmNoZXMKKyAgICAgICBzdGFydCB3aXRoIF4gYXJlIG5vdCBhbmNob3JlZCBpbiBtdWx0aWxpbmUgbW9kZSwgYW5kIGEgbWF0Y2ggIGZvciAgY2lyLQorICAgICAgIGN1bWZsZXggIGlzICBwb3NzaWJsZSAgd2hlbiAgdGhlIHN0YXJ0b2Zmc2V0IGFyZ3VtZW50IG9mIHBjcmVfZXhlYygpIGlzCisgICAgICAgbm9uLXplcm8uIFRoZSBQQ1JFX0RPTExBUl9FTkRPTkxZIG9wdGlvbiBpcyBpZ25vcmVkICBpZiAgUENSRV9NVUxUSUxJTkUKKyAgICAgICBpcyBzZXQuCisKKyAgICAgICBOb3RlICB0aGF0ICB0aGUgc2VxdWVuY2VzIFxBLCBcWiwgYW5kIFx6IGNhbiBiZSB1c2VkIHRvIG1hdGNoIHRoZSBzdGFydAorICAgICAgIGFuZCBlbmQgb2YgdGhlIHN1YmplY3QgaW4gYm90aCBtb2RlcywgYW5kIGlmIGFsbCBicmFuY2hlcyBvZiBhICBwYXR0ZXJuCisgICAgICAgc3RhcnQgIHdpdGggIFxBIGl0IGlzIGFsd2F5cyBhbmNob3JlZCwgd2hldGhlciBQQ1JFX01VTFRJTElORSBpcyBzZXQgb3IKKyAgICAgICBub3QuCisKKworRlVMTCBTVE9QIChQRVJJT0QsIERPVCkKKworICAgICAgIE91dHNpZGUgYSBjaGFyYWN0ZXIgY2xhc3MsIGEgZG90IGluIHRoZSBwYXR0ZXJuIG1hdGNoZXMgYW55IG9uZSBjaGFyYWMtCisgICAgICAgdGVyICBpbiAgdGhlICBzdWJqZWN0LCAgaW5jbHVkaW5nIGEgbm9uLXByaW50aW5nIGNoYXJhY3RlciwgYnV0IG5vdCAoYnkKKyAgICAgICBkZWZhdWx0KSBuZXdsaW5lLiAgSW4gVVRGLTggbW9kZSwgYSBkb3QgbWF0Y2hlcyAgYW55ICBVVEYtOCAgY2hhcmFjdGVyLAorICAgICAgIHdoaWNoICBtaWdodCAgYmUgIG1vcmUgdGhhbiBvbmUgYnl0ZSBsb25nLCBleGNlcHQgKGJ5IGRlZmF1bHQpIGZvciBuZXctCisgICAgICAgbGluZS4gSWYgdGhlIFBDUkVfRE9UQUxMIG9wdGlvbiBpcyBzZXQsIGRvdHMgbWF0Y2ggIG5ld2xpbmVzICBhcyAgd2VsbC4KKyAgICAgICBUaGUgIGhhbmRsaW5nIG9mIGRvdCBpcyBlbnRpcmVseSBpbmRlcGVuZGVudCBvZiB0aGUgaGFuZGxpbmcgb2YgY2lyY3VtLQorICAgICAgIGZsZXggYW5kIGRvbGxhciwgdGhlIG9ubHkgcmVsYXRpb25zaGlwIGJlaW5nICB0aGF0ICB0aGV5ICBib3RoICBpbnZvbHZlCisgICAgICAgbmV3bGluZSBjaGFyYWN0ZXJzLiBEb3QgaGFzIG5vIHNwZWNpYWwgbWVhbmluZyBpbiBhIGNoYXJhY3RlciBjbGFzcy4KKworCitNQVRDSElORyBBIFNJTkdMRSBCWVRFCisKKyAgICAgICBPdXRzaWRlIGEgY2hhcmFjdGVyIGNsYXNzLCB0aGUgZXNjYXBlIHNlcXVlbmNlIFxDIG1hdGNoZXMgYW55IG9uZSBieXRlLAorICAgICAgIGJvdGggaW4gYW5kIG91dCBvZiBVVEYtOCBtb2RlLiBVbmxpa2UgYSBkb3QsIGl0IGFsd2F5cyBtYXRjaGVzICBhICBuZXctCisgICAgICAgbGluZS4gIFRoZSAgZmVhdHVyZSAgaXMgIHByb3ZpZGVkICBpbiBQZXJsIGluIG9yZGVyIHRvIG1hdGNoIGluZGl2aWR1YWwKKyAgICAgICBieXRlcyBpbiBVVEYtOCBtb2RlLiAgQmVjYXVzZSBpdCBicmVha3MgdXAgVVRGLTggY2hhcmFjdGVycyBpbnRvICBpbmRpLQorICAgICAgIHZpZHVhbCAgYnl0ZXMsICB3aGF0ICByZW1haW5zICBpbiAgdGhlICBzdHJpbmcgbWF5IGJlIGEgbWFsZm9ybWVkIFVURi04CisgICAgICAgc3RyaW5nLiBGb3IgdGhpcyByZWFzb24gaXQgaXMgYmVzdCBhdm9pZGVkLgorCisgICAgICAgUENSRSBkb2VzIG5vdCBhbGxvdyBcQyB0byBhcHBlYXIgaW4gbG9va2JlaGluZCBhc3NlcnRpb25zIChzZWUgIGJlbG93KSwKKyAgICAgICBiZWNhdXNlIGluIFVURi04IG1vZGUgaXQgbWFrZXMgaXQgaW1wb3NzaWJsZSB0byBjYWxjdWxhdGUgdGhlIGxlbmd0aCBvZgorICAgICAgIHRoZSBsb29rYmVoaW5kLgorCisKK1NRVUFSRSBCUkFDS0VUUworCisgICAgICAgQW4gb3BlbmluZyBzcXVhcmUgYnJhY2tldCBpbnRyb2R1Y2VzIGEgY2hhcmFjdGVyIGNsYXNzLCB0ZXJtaW5hdGVkIGJ5IGEKKyAgICAgICBjbG9zaW5nIHNxdWFyZSBicmFja2V0LiBBIGNsb3Npbmcgc3F1YXJlIGJyYWNrZXQgb24gaXRzIG93biBpcyBub3Qgc3BlLQorICAgICAgIGNpYWwuIElmIGEgY2xvc2luZyBzcXVhcmUgYnJhY2tldCBpcyByZXF1aXJlZCBhcyBhIG1lbWJlciBvZiB0aGUgY2xhc3MsCisgICAgICAgaXQgIHNob3VsZCAgYmUgIHRoZSBmaXJzdCBkYXRhIGNoYXJhY3RlciBpbiB0aGUgY2xhc3MgKGFmdGVyIGFuIGluaXRpYWwKKyAgICAgICBjaXJjdW1mbGV4LCBpZiBwcmVzZW50KSBvciBlc2NhcGVkIHdpdGggYSBiYWNrc2xhc2guCisKKyAgICAgICBBIGNoYXJhY3RlciBjbGFzcyBtYXRjaGVzIGEgc2luZ2xlIGNoYXJhY3RlciBpbiB0aGUgc3ViamVjdC4gIEluICBVVEYtOAorICAgICAgIG1vZGUsICB0aGUgY2hhcmFjdGVyIG1heSBvY2N1cHkgbW9yZSB0aGFuIG9uZSBieXRlLiBBIG1hdGNoZWQgY2hhcmFjdGVyCisgICAgICAgbXVzdCBiZSBpbiB0aGUgc2V0IG9mIGNoYXJhY3RlcnMgZGVmaW5lZCBieSB0aGUgY2xhc3MsIHVubGVzcyB0aGUgZmlyc3QKKyAgICAgICBjaGFyYWN0ZXIgIGluICB0aGUgIGNsYXNzIGRlZmluaXRpb24gaXMgYSBjaXJjdW1mbGV4LCBpbiB3aGljaCBjYXNlIHRoZQorICAgICAgIHN1YmplY3QgY2hhcmFjdGVyIG11c3Qgbm90IGJlIGluIHRoZSBzZXQgZGVmaW5lZCBieSAgdGhlICBjbGFzcy4gIElmICBhCisgICAgICAgY2lyY3VtZmxleCAgaXMgYWN0dWFsbHkgcmVxdWlyZWQgYXMgYSBtZW1iZXIgb2YgdGhlIGNsYXNzLCBlbnN1cmUgaXQgaXMKKyAgICAgICBub3QgdGhlIGZpcnN0IGNoYXJhY3Rlciwgb3IgZXNjYXBlIGl0IHdpdGggYSBiYWNrc2xhc2guCisKKyAgICAgICBGb3IgZXhhbXBsZSwgdGhlIGNoYXJhY3RlciBjbGFzcyBbYWVpb3VdIG1hdGNoZXMgYW55IGxvd2VyIGNhc2UgIHZvd2VsLAorICAgICAgIHdoaWxlICBbXmFlaW91XSAgbWF0Y2hlcyAgYW55IGNoYXJhY3RlciB0aGF0IGlzIG5vdCBhIGxvd2VyIGNhc2Ugdm93ZWwuCisgICAgICAgTm90ZSB0aGF0IGEgY2lyY3VtZmxleCBpcyBqdXN0IGEgY29udmVuaWVudCBub3RhdGlvbiBmb3Igc3BlY2lmeWluZyB0aGUKKyAgICAgICBjaGFyYWN0ZXJzIHdoaWNoIGFyZSBpbiB0aGUgY2xhc3MgYnkgZW51bWVyYXRpbmcgdGhvc2UgdGhhdCBhcmUgbm90LiBJdAorICAgICAgIGlzIG5vdCBhbiBhc3NlcnRpb246IGl0IHN0aWxsIGNvbnN1bWVzIGEgIGNoYXJhY3RlciAgZnJvbSAgdGhlICBzdWJqZWN0CisgICAgICAgc3RyaW5nLCBhbmQgZmFpbHMgaWYgdGhlIGN1cnJlbnQgcG9pbnRlciBpcyBhdCB0aGUgZW5kIG9mIHRoZSBzdHJpbmcuCisKKyAgICAgICBJbiAgVVRGLTggbW9kZSwgY2hhcmFjdGVycyB3aXRoIHZhbHVlcyBncmVhdGVyIHRoYW4gMjU1IGNhbiBiZSBpbmNsdWRlZAorICAgICAgIGluIGEgY2xhc3MgYXMgYSBsaXRlcmFsIHN0cmluZyBvZiBieXRlcywgb3IgYnkgdXNpbmcgdGhlICBceHsgIGVzY2FwaW5nCisgICAgICAgbWVjaGFuaXNtLgorCisgICAgICAgV2hlbiAgY2FzZWxlc3MgIG1hdGNoaW5nICBpcyBzZXQsIGFueSBsZXR0ZXJzIGluIGEgY2xhc3MgcmVwcmVzZW50IGJvdGgKKyAgICAgICB0aGVpciB1cHBlciBjYXNlIGFuZCBsb3dlciBjYXNlIHZlcnNpb25zLCBzbyBmb3IgIGV4YW1wbGUsICBhICBjYXNlbGVzcworICAgICAgIFthZWlvdV0gIG1hdGNoZXMgICJBIiAgYXMgd2VsbCBhcyAiYSIsIGFuZCBhIGNhc2VsZXNzIFteYWVpb3VdIGRvZXMgbm90CisgICAgICAgbWF0Y2ggIkEiLCB3aGVyZWFzIGEgY2FzZWZ1bCB2ZXJzaW9uIHdvdWxkLiBQQ1JFIGRvZXMgbm90ICBzdXBwb3J0ICB0aGUKKyAgICAgICBjb25jZXB0IG9mIGNhc2UgZm9yIGNoYXJhY3RlcnMgd2l0aCB2YWx1ZXMgZ3JlYXRlciB0aGFuIDI1NS4KKworICAgICAgIFRoZSAgbmV3bGluZSBjaGFyYWN0ZXIgaXMgbmV2ZXIgdHJlYXRlZCBpbiBhbnkgc3BlY2lhbCB3YXkgaW4gY2hhcmFjdGVyCisgICAgICAgY2xhc3Nlcywgd2hhdGV2ZXIgdGhlIHNldHRpbmcgIG9mICB0aGUgIFBDUkVfRE9UQUxMICBvciAgUENSRV9NVUxUSUxJTkUKKyAgICAgICBvcHRpb25zIGlzLiBBIGNsYXNzIHN1Y2ggYXMgW15hXSB3aWxsIGFsd2F5cyBtYXRjaCBhIG5ld2xpbmUuCisKKyAgICAgICBUaGUgIG1pbnVzIChoeXBoZW4pIGNoYXJhY3RlciBjYW4gYmUgdXNlZCB0byBzcGVjaWZ5IGEgcmFuZ2Ugb2YgY2hhcmFjLQorICAgICAgIHRlcnMgaW4gYSBjaGFyYWN0ZXIgIGNsYXNzLiAgRm9yICBleGFtcGxlLCAgW2QtbV0gIG1hdGNoZXMgIGFueSAgbGV0dGVyCisgICAgICAgYmV0d2VlbiAgZCAgYW5kICBtLCAgaW5jbHVzaXZlLiAgSWYgIGEgbWludXMgY2hhcmFjdGVyIGlzIHJlcXVpcmVkIGluIGEKKyAgICAgICBjbGFzcywgaXQgbXVzdCBiZSBlc2NhcGVkIHdpdGggYSBiYWNrc2xhc2ggIG9yICBhcHBlYXIgIGluICBhICBwb3NpdGlvbgorICAgICAgIHdoZXJlICBpdCBjYW5ub3QgYmUgaW50ZXJwcmV0ZWQgYXMgaW5kaWNhdGluZyBhIHJhbmdlLCB0eXBpY2FsbHkgYXMgdGhlCisgICAgICAgZmlyc3Qgb3IgbGFzdCBjaGFyYWN0ZXIgaW4gdGhlIGNsYXNzLgorCisgICAgICAgSXQgaXMgbm90IHBvc3NpYmxlIHRvIGhhdmUgdGhlIGxpdGVyYWwgY2hhcmFjdGVyICJdIiBhcyB0aGUgZW5kIGNoYXJhYy0KKyAgICAgICB0ZXIgIG9mIGEgcmFuZ2UuIEEgcGF0dGVybiBzdWNoIGFzIFtXLV00Nl0gaXMgaW50ZXJwcmV0ZWQgYXMgYSBjbGFzcyBvZgorICAgICAgIHR3byBjaGFyYWN0ZXJzICgiVyIgYW5kICItIikgZm9sbG93ZWQgYnkgYSBsaXRlcmFsIHN0cmluZyAiNDZdIiwgc28gIGl0CisgICAgICAgd291bGQgIG1hdGNoICAiVzQ2XSIgIG9yICAiLTQ2XSIuIEhvd2V2ZXIsIGlmIHRoZSAiXSIgaXMgZXNjYXBlZCB3aXRoIGEKKyAgICAgICBiYWNrc2xhc2ggaXQgaXMgaW50ZXJwcmV0ZWQgYXMgdGhlIGVuZCBvZiByYW5nZSwgc28gW1ctXF00Nl0gaXMgIGludGVyLQorICAgICAgIHByZXRlZCAgYXMgIGEgIHNpbmdsZSBjbGFzcyBjb250YWluaW5nIGEgcmFuZ2UgZm9sbG93ZWQgYnkgdHdvIHNlcGFyYXRlCisgICAgICAgY2hhcmFjdGVycy4gVGhlIG9jdGFsIG9yIGhleGFkZWNpbWFsIHJlcHJlc2VudGF0aW9uIG9mICJdIiBjYW4gYWxzbyAgYmUKKyAgICAgICB1c2VkIHRvIGVuZCBhIHJhbmdlLgorCisgICAgICAgUmFuZ2VzICBvcGVyYXRlIGluIHRoZSBjb2xsYXRpbmcgc2VxdWVuY2Ugb2YgY2hhcmFjdGVyIHZhbHVlcy4gVGhleSBjYW4KKyAgICAgICBhbHNvICBiZSAgdXNlZCAgZm9yICBjaGFyYWN0ZXJzICBzcGVjaWZpZWQgIG51bWVyaWNhbGx5LCAgZm9yICAgZXhhbXBsZQorICAgICAgIFtcMDAwLVwwMzddLiAgSW4gVVRGLTggbW9kZSwgcmFuZ2VzIGNhbiBpbmNsdWRlIGNoYXJhY3RlcnMgd2hvc2UgdmFsdWVzCisgICAgICAgYXJlIGdyZWF0ZXIgdGhhbiAyNTUsIGZvciBleGFtcGxlIFtceHsxMDB9LVx4ezJmZn1dLgorCisgICAgICAgSWYgYSByYW5nZSB0aGF0IGluY2x1ZGVzIGxldHRlcnMgaXMgdXNlZCB3aGVuIGNhc2VsZXNzIG1hdGNoaW5nIGlzIHNldCwKKyAgICAgICBpdCBtYXRjaGVzIHRoZSBsZXR0ZXJzIGluIGVpdGhlciBjYXNlLiBGb3IgZXhhbXBsZSwgW1ctY10gaXMgZXF1aXZhbGVudAorICAgICAgIHRvIFtdW1xeX2B3eHl6YWJjXSwgbWF0Y2hlZCBjYXNlbGVzc2x5LCBhbmQgaWYgY2hhcmFjdGVyIHRhYmxlcyBmb3IgdGhlCisgICAgICAgImZyIiAgbG9jYWxlICBhcmUgIGluIHVzZSwgW1x4YzgtXHhjYl0gbWF0Y2hlcyBhY2NlbnRlZCBFIGNoYXJhY3RlcnMgaW4KKyAgICAgICBib3RoIGNhc2VzLgorCisgICAgICAgVGhlIGNoYXJhY3RlciB0eXBlcyBcZCwgXEQsIFxzLCBcUywgXHcsIGFuZCBcVyBtYXkgIGFsc28gIGFwcGVhciAgaW4gIGEKKyAgICAgICBjaGFyYWN0ZXIgIGNsYXNzLCAgYW5kIGFkZCB0aGUgY2hhcmFjdGVycyB0aGF0IHRoZXkgbWF0Y2ggdG8gdGhlIGNsYXNzLgorICAgICAgIEZvciBleGFtcGxlLCBbXGRBQkNERUZdIG1hdGNoZXMgYW55IGhleGFkZWNpbWFsIGRpZ2l0LiBBIGNpcmN1bWZsZXggY2FuCisgICAgICAgY29udmVuaWVudGx5ICBiZSAgdXNlZCB3aXRoIHRoZSB1cHBlciBjYXNlIGNoYXJhY3RlciB0eXBlcyB0byBzcGVjaWZ5IGEKKyAgICAgICBtb3JlIHJlc3RyaWN0ZWQgc2V0IG9mIGNoYXJhY3RlcnMgdGhhbiB0aGUgbWF0Y2hpbmcgIGxvd2VyICBjYXNlICB0eXBlLgorICAgICAgIEZvciAgZXhhbXBsZSwgIHRoZSAgY2xhc3MgIFteXFdfXSAgbWF0Y2hlcyBhbnkgbGV0dGVyIG9yIGRpZ2l0LCBidXQgbm90CisgICAgICAgdW5kZXJzY29yZS4KKworICAgICAgIEFsbCBub24tYWxwaGFtZXJpYyBjaGFyYWN0ZXJzIG90aGVyIHRoYW4gXCwgLSwgXiAoYXQgdGhlIHN0YXJ0KSBhbmQgdGhlCisgICAgICAgdGVybWluYXRpbmcgXSBhcmUgbm9uLXNwZWNpYWwgaW4gY2hhcmFjdGVyIGNsYXNzZXMsIGJ1dCBpdCBkb2VzIG5vIGhhcm0KKyAgICAgICBpZiB0aGV5IGFyZSBlc2NhcGVkLgorCisKK1BPU0lYIENIQVJBQ1RFUiBDTEFTU0VTCisKKyAgICAgICBQZXJsIHN1cHBvcnRzIHRoZSBQT1NJWCBub3RhdGlvbiAgZm9yICBjaGFyYWN0ZXIgIGNsYXNzZXMsICB3aGljaCAgdXNlcworICAgICAgIG5hbWVzICBlbmNsb3NlZCBieSBbOiBhbmQgOl0gd2l0aGluIHRoZSBlbmNsb3Npbmcgc3F1YXJlIGJyYWNrZXRzLiBQQ1JFCisgICAgICAgYWxzbyBzdXBwb3J0cyB0aGlzIG5vdGF0aW9uLiBGb3IgZXhhbXBsZSwKKworICAgICAgICAgWzAxWzphbHBoYTpdJV0KKworICAgICAgIG1hdGNoZXMgIjAiLCAiMSIsIGFueSBhbHBoYWJldGljIGNoYXJhY3Rlciwgb3IgIiUiLiBUaGUgc3VwcG9ydGVkIGNsYXNzCisgICAgICAgbmFtZXMgYXJlCisKKyAgICAgICAgIGFsbnVtICAgIGxldHRlcnMgYW5kIGRpZ2l0cworICAgICAgICAgYWxwaGEgICAgbGV0dGVycworICAgICAgICAgYXNjaWkgICAgY2hhcmFjdGVyIGNvZGVzIDAgLSAxMjcKKyAgICAgICAgIGJsYW5rICAgIHNwYWNlIG9yIHRhYiBvbmx5CisgICAgICAgICBjbnRybCAgICBjb250cm9sIGNoYXJhY3RlcnMKKyAgICAgICAgIGRpZ2l0ICAgIGRlY2ltYWwgZGlnaXRzIChzYW1lIGFzIFxkKQorICAgICAgICAgZ3JhcGggICAgcHJpbnRpbmcgY2hhcmFjdGVycywgZXhjbHVkaW5nIHNwYWNlCisgICAgICAgICBsb3dlciAgICBsb3dlciBjYXNlIGxldHRlcnMKKyAgICAgICAgIHByaW50ICAgIHByaW50aW5nIGNoYXJhY3RlcnMsIGluY2x1ZGluZyBzcGFjZQorICAgICAgICAgcHVuY3QgICAgcHJpbnRpbmcgY2hhcmFjdGVycywgZXhjbHVkaW5nIGxldHRlcnMgYW5kIGRpZ2l0cworICAgICAgICAgc3BhY2UgICAgd2hpdGUgc3BhY2UgKG5vdCBxdWl0ZSB0aGUgc2FtZSBhcyBccykKKyAgICAgICAgIHVwcGVyICAgIHVwcGVyIGNhc2UgbGV0dGVycworICAgICAgICAgd29yZCAgICAgIndvcmQiIGNoYXJhY3RlcnMgKHNhbWUgYXMgXHcpCisgICAgICAgICB4ZGlnaXQgICBoZXhhZGVjaW1hbCBkaWdpdHMKKworICAgICAgIFRoZSAgInNwYWNlIiBjaGFyYWN0ZXJzIGFyZSBIVCAoOSksIExGICgxMCksIFZUICgxMSksIEZGICgxMiksIENSICgxMyksCisgICAgICAgYW5kIHNwYWNlICgzMikuIE5vdGljZSB0aGF0IHRoaXMgbGlzdCBpbmNsdWRlcyB0aGUgVlQgIGNoYXJhY3RlciAgKGNvZGUKKyAgICAgICAxMSkuIFRoaXMgbWFrZXMgInNwYWNlIiBkaWZmZXJlbnQgdG8gXHMsIHdoaWNoIGRvZXMgbm90IGluY2x1ZGUgVlQgKGZvcgorICAgICAgIFBlcmwgY29tcGF0aWJpbGl0eSkuCisKKyAgICAgICBUaGUgbmFtZSAid29yZCIgaXMgYSBQZXJsIGV4dGVuc2lvbiwgYW5kICJibGFuayIgIGlzICBhICBHTlUgIGV4dGVuc2lvbgorICAgICAgIGZyb20gIFBlcmwgIDUuOC4gQW5vdGhlciBQZXJsIGV4dGVuc2lvbiBpcyBuZWdhdGlvbiwgd2hpY2ggaXMgaW5kaWNhdGVkCisgICAgICAgYnkgYSBeIGNoYXJhY3RlciBhZnRlciB0aGUgY29sb24uIEZvciBleGFtcGxlLAorCisgICAgICAgICBbMTJbOl5kaWdpdDpdXQorCisgICAgICAgbWF0Y2hlcyAiMSIsICIyIiwgb3IgYW55IG5vbi1kaWdpdC4gUENSRSAoYW5kIFBlcmwpIGFsc28gcmVjb2duaXplICB0aGUKKyAgICAgICBQT1NJWCBzeW50YXggWy5jaC5dIGFuZCBbPWNoPV0gd2hlcmUgImNoIiBpcyBhICJjb2xsYXRpbmcgZWxlbWVudCIsIGJ1dAorICAgICAgIHRoZXNlIGFyZSBub3Qgc3VwcG9ydGVkLCBhbmQgYW4gZXJyb3IgaXMgZ2l2ZW4gaWYgdGhleSBhcmUgZW5jb3VudGVyZWQuCisKKyAgICAgICBJbiBVVEYtOCBtb2RlLCBjaGFyYWN0ZXJzIHdpdGggdmFsdWVzIGdyZWF0ZXIgdGhhbiAyNTUgZG8gbm90IG1hdGNoIGFueQorICAgICAgIG9mIHRoZSBQT1NJWCBjaGFyYWN0ZXIgY2xhc3Nlcy4KKworCitWRVJUSUNBTCBCQVIKKworICAgICAgIFZlcnRpY2FsIGJhciBjaGFyYWN0ZXJzIGFyZSB1c2VkIHRvIHNlcGFyYXRlIGFsdGVybmF0aXZlIHBhdHRlcm5zLiAgRm9yCisgICAgICAgZXhhbXBsZSwgdGhlIHBhdHRlcm4KKworICAgICAgICAgZ2lsYmVydHxzdWxsaXZhbgorCisgICAgICAgbWF0Y2hlcyAgZWl0aGVyICJnaWxiZXJ0IiBvciAic3VsbGl2YW4iLiBBbnkgbnVtYmVyIG9mIGFsdGVybmF0aXZlcyBtYXkKKyAgICAgICBhcHBlYXIsIGFuZCBhbiBlbXB0eSAgYWx0ZXJuYXRpdmUgIGlzICBwZXJtaXR0ZWQgIChtYXRjaGluZyAgdGhlICBlbXB0eQorICAgICAgIHN0cmluZykuICAgVGhlICBtYXRjaGluZyAgcHJvY2VzcyAgdHJpZXMgZWFjaCBhbHRlcm5hdGl2ZSBpbiB0dXJuLCBmcm9tCisgICAgICAgbGVmdCB0byByaWdodCwgYW5kIHRoZSBmaXJzdCBvbmUgdGhhdCBzdWNjZWVkcyBpcyB1c2VkLiBJZiB0aGUgYWx0ZXJuYS0KKyAgICAgICB0aXZlcyAgYXJlIHdpdGhpbiBhIHN1YnBhdHRlcm4gKGRlZmluZWQgYmVsb3cpLCAic3VjY2VlZHMiIG1lYW5zIG1hdGNoLQorICAgICAgIGluZyB0aGUgcmVzdCBvZiB0aGUgbWFpbiBwYXR0ZXJuIGFzIHdlbGwgYXMgdGhlIGFsdGVybmF0aXZlIGluIHRoZSBzdWItCisgICAgICAgcGF0dGVybi4KKworCitJTlRFUk5BTCBPUFRJT04gU0VUVElORworCisgICAgICAgVGhlICBzZXR0aW5ncyAgb2YgIHRoZSAgUENSRV9DQVNFTEVTUywgUENSRV9NVUxUSUxJTkUsIFBDUkVfRE9UQUxMLCBhbmQKKyAgICAgICBQQ1JFX0VYVEVOREVEIG9wdGlvbnMgY2FuIGJlIGNoYW5nZWQgIGZyb20gIHdpdGhpbiAgdGhlICBwYXR0ZXJuICBieSAgYQorICAgICAgIHNlcXVlbmNlICBvZiAgUGVybCAgb3B0aW9uICBsZXR0ZXJzICBlbmNsb3NlZCBiZXR3ZWVuICIoPyIgYW5kICIpIi4gVGhlCisgICAgICAgb3B0aW9uIGxldHRlcnMgYXJlCisKKyAgICAgICAgIGkgIGZvciBQQ1JFX0NBU0VMRVNTCisgICAgICAgICBtICBmb3IgUENSRV9NVUxUSUxJTkUKKyAgICAgICAgIHMgIGZvciBQQ1JFX0RPVEFMTAorICAgICAgICAgeCAgZm9yIFBDUkVfRVhURU5ERUQKKworICAgICAgIEZvciBleGFtcGxlLCAoP2ltKSBzZXRzIGNhc2VsZXNzLCBtdWx0aWxpbmUgbWF0Y2hpbmcuIEl0IGlzIGFsc28gcG9zc2ktCisgICAgICAgYmxlIHRvIHVuc2V0IHRoZXNlIG9wdGlvbnMgYnkgcHJlY2VkaW5nIHRoZSBsZXR0ZXIgd2l0aCBhIGh5cGhlbiwgYW5kIGEKKyAgICAgICBjb21iaW5lZCBzZXR0aW5nIGFuZCB1bnNldHRpbmcgc3VjaCBhcyAoP2ltLXN4KSwgd2hpY2ggc2V0cyAgUENSRV9DQVNFLQorICAgICAgIExFU1MgIGFuZCBQQ1JFX01VTFRJTElORSB3aGlsZSB1bnNldHRpbmcgUENSRV9ET1RBTEwgYW5kIFBDUkVfRVhURU5ERUQsCisgICAgICAgaXMgYWxzbyBwZXJtaXR0ZWQuIElmIGEgIGxldHRlciAgYXBwZWFycyAgYm90aCAgYmVmb3JlICBhbmQgIGFmdGVyICB0aGUKKyAgICAgICBoeXBoZW4sIHRoZSBvcHRpb24gaXMgdW5zZXQuCisKKyAgICAgICBXaGVuICBhbiBvcHRpb24gY2hhbmdlIG9jY3VycyBhdCB0b3AgbGV2ZWwgKHRoYXQgaXMsIG5vdCBpbnNpZGUgc3VicGF0LQorICAgICAgIHRlcm4gcGFyZW50aGVzZXMpLCB0aGUgY2hhbmdlIGFwcGxpZXMgdG8gdGhlIHJlbWFpbmRlciBvZiAgdGhlICBwYXR0ZXJuCisgICAgICAgdGhhdCBmb2xsb3dzLiAgSWYgdGhlIGNoYW5nZSBpcyBwbGFjZWQgcmlnaHQgYXQgdGhlIHN0YXJ0IG9mIGEgcGF0dGVybiwKKyAgICAgICBQQ1JFIGV4dHJhY3RzIGl0IGludG8gdGhlIGdsb2JhbCBvcHRpb25zIChhbmQgaXQgd2lsbCB0aGVyZWZvcmUgc2hvdyB1cAorICAgICAgIGluIGRhdGEgZXh0cmFjdGVkIGJ5IHRoZSBwY3JlX2Z1bGxpbmZvKCkgZnVuY3Rpb24pLgorCisgICAgICAgQW4gb3B0aW9uIGNoYW5nZSB3aXRoaW4gYSBzdWJwYXR0ZXJuIGFmZmVjdHMgb25seSB0aGF0IHBhcnQgb2YgdGhlIGN1ci0KKyAgICAgICByZW50IHBhdHRlcm4gdGhhdCBmb2xsb3dzIGl0LCBzbworCisgICAgICAgICAoYSg/aSliKWMKKworICAgICAgIG1hdGNoZXMgYWJjIGFuZCBhQmMgYW5kIG5vIG90aGVyIHN0cmluZ3MgKGFzc3VtaW5nIFBDUkVfQ0FTRUxFU1MgaXMgbm90CisgICAgICAgdXNlZCkuICAgQnkgIHRoaXMgbWVhbnMsIG9wdGlvbnMgY2FuIGJlIG1hZGUgdG8gaGF2ZSBkaWZmZXJlbnQgc2V0dGluZ3MKKyAgICAgICBpbiBkaWZmZXJlbnQgcGFydHMgb2YgdGhlIHBhdHRlcm4uIEFueSBjaGFuZ2VzIG1hZGUgaW4gb25lICBhbHRlcm5hdGl2ZQorICAgICAgIGRvICBjYXJyeSAgb24gIGludG8gc3Vic2VxdWVudCBicmFuY2hlcyB3aXRoaW4gdGhlIHNhbWUgc3VicGF0dGVybi4gRm9yCisgICAgICAgZXhhbXBsZSwKKworICAgICAgICAgKGEoP2kpYnxjKQorCisgICAgICAgbWF0Y2hlcyAiYWIiLCAiYUIiLCAiYyIsIGFuZCAiQyIsIGV2ZW4gdGhvdWdoICB3aGVuICBtYXRjaGluZyAgIkMiICB0aGUKKyAgICAgICBmaXJzdCAgYnJhbmNoICBpcyAgYWJhbmRvbmVkIGJlZm9yZSB0aGUgb3B0aW9uIHNldHRpbmcuIFRoaXMgaXMgYmVjYXVzZQorICAgICAgIHRoZSBlZmZlY3RzIG9mIG9wdGlvbiBzZXR0aW5ncyBoYXBwZW4gYXQgY29tcGlsZSB0aW1lLiBUaGVyZSAgd291bGQgIGJlCisgICAgICAgc29tZSB2ZXJ5IHdlaXJkIGJlaGF2aW91ciBvdGhlcndpc2UuCisKKyAgICAgICBUaGUgIFBDUkUtc3BlY2lmaWMgIG9wdGlvbnMgUENSRV9VTkdSRUVEWSBhbmQgUENSRV9FWFRSQSBjYW4gYmUgY2hhbmdlZAorICAgICAgIGluIHRoZSBzYW1lIHdheSBhcyB0aGUgUGVybC1jb21wYXRpYmxlIG9wdGlvbnMgYnkgdXNpbmcgdGhlICBjaGFyYWN0ZXJzCisgICAgICAgVSAgYW5kIFggcmVzcGVjdGl2ZWx5LiBUaGUgKD9YKSBmbGFnIHNldHRpbmcgaXMgc3BlY2lhbCBpbiB0aGF0IGl0IG11c3QKKyAgICAgICBhbHdheXMgb2NjdXIgZWFybGllciBpbiB0aGUgcGF0dGVybiB0aGFuIGFueSBvZiB0aGUgYWRkaXRpb25hbCBmZWF0dXJlcworICAgICAgIGl0IHR1cm5zIG9uLCBldmVuIHdoZW4gaXQgaXMgYXQgdG9wIGxldmVsLiBJdCBpcyBiZXN0IHB1dCBhdCB0aGUgc3RhcnQuCisKKworU1VCUEFUVEVSTlMKKworICAgICAgIFN1YnBhdHRlcm5zIGFyZSBkZWxpbWl0ZWQgYnkgcGFyZW50aGVzZXMgKHJvdW5kIGJyYWNrZXRzKSwgd2hpY2ggY2FuIGJlCisgICAgICAgbmVzdGVkLiAgTWFya2luZyBwYXJ0IG9mIGEgcGF0dGVybiBhcyBhIHN1YnBhdHRlcm4gZG9lcyB0d28gdGhpbmdzOgorCisgICAgICAgMS4gSXQgbG9jYWxpemVzIGEgc2V0IG9mIGFsdGVybmF0aXZlcy4gRm9yIGV4YW1wbGUsIHRoZSBwYXR0ZXJuCisKKyAgICAgICAgIGNhdChhcmFjdHxlcnBpbGxhcnwpCisKKyAgICAgICBtYXRjaGVzICBvbmUgIG9mIHRoZSB3b3JkcyAiY2F0IiwgImNhdGFyYWN0Iiwgb3IgImNhdGVycGlsbGFyIi4gV2l0aG91dAorICAgICAgIHRoZSBwYXJlbnRoZXNlcywgaXQgd291bGQgbWF0Y2ggImNhdGFyYWN0IiwgICJlcnBpbGxhciIgIG9yICB0aGUgIGVtcHR5CisgICAgICAgc3RyaW5nLgorCisgICAgICAgMi4gIEl0ICBzZXRzICB1cCAgdGhlICBzdWJwYXR0ZXJuIGFzIGEgY2FwdHVyaW5nIHN1YnBhdHRlcm4gKGFzIGRlZmluZWQKKyAgICAgICBhYm92ZSkuICBXaGVuIHRoZSB3aG9sZSBwYXR0ZXJuIG1hdGNoZXMsIHRoYXQgcG9ydGlvbiAgb2YgIHRoZSAgc3ViamVjdAorICAgICAgIHN0cmluZyB0aGF0IG1hdGNoZWQgdGhlIHN1YnBhdHRlcm4gaXMgcGFzc2VkIGJhY2sgdG8gdGhlIGNhbGxlciB2aWEgdGhlCisgICAgICAgb3ZlY3RvciBhcmd1bWVudCBvZiBwY3JlX2V4ZWMoKS4gT3BlbmluZyBwYXJlbnRoZXNlcyBhcmUgIGNvdW50ZWQgIGZyb20KKyAgICAgICBsZWZ0ICB0byByaWdodCAoc3RhcnRpbmcgZnJvbSAxKSB0byBvYnRhaW4gdGhlIG51bWJlcnMgb2YgdGhlIGNhcHR1cmluZworICAgICAgIHN1YnBhdHRlcm5zLgorCisgICAgICAgRm9yIGV4YW1wbGUsIGlmIHRoZSBzdHJpbmcgInRoZSByZWQga2luZyIgaXMgbWF0Y2hlZCBhZ2FpbnN0ICB0aGUgIHBhdC0KKyAgICAgICB0ZXJuCisKKyAgICAgICAgIHRoZSAoKHJlZHx3aGl0ZSkgKGtpbmd8cXVlZW4pKQorCisgICAgICAgdGhlIGNhcHR1cmVkIHN1YnN0cmluZ3MgYXJlICJyZWQga2luZyIsICJyZWQiLCBhbmQgImtpbmciLCBhbmQgYXJlIG51bS0KKyAgICAgICBiZXJlZCAxLCAyLCBhbmQgMywgcmVzcGVjdGl2ZWx5LgorCisgICAgICAgVGhlIGZhY3QgdGhhdCBwbGFpbiBwYXJlbnRoZXNlcyBmdWxmaWwgIHR3byAgZnVuY3Rpb25zICBpcyAgbm90ICBhbHdheXMKKyAgICAgICBoZWxwZnVsLiAgIFRoZXJlIGFyZSBvZnRlbiB0aW1lcyB3aGVuIGEgZ3JvdXBpbmcgc3VicGF0dGVybiBpcyByZXF1aXJlZAorICAgICAgIHdpdGhvdXQgYSBjYXB0dXJpbmcgcmVxdWlyZW1lbnQuIElmIGFuIG9wZW5pbmcgcGFyZW50aGVzaXMgaXMgIGZvbGxvd2VkCisgICAgICAgYnkgIGEgcXVlc3Rpb24gbWFyayBhbmQgYSBjb2xvbiwgdGhlIHN1YnBhdHRlcm4gZG9lcyBub3QgZG8gYW55IGNhcHR1ci0KKyAgICAgICBpbmcsIGFuZCBpcyBub3QgY291bnRlZCB3aGVuIGNvbXB1dGluZyB0aGUgIG51bWJlciAgb2YgIGFueSAgc3Vic2VxdWVudAorICAgICAgIGNhcHR1cmluZyAgc3VicGF0dGVybnMuIEZvciBleGFtcGxlLCBpZiB0aGUgc3RyaW5nICJ0aGUgd2hpdGUgcXVlZW4iIGlzCisgICAgICAgbWF0Y2hlZCBhZ2FpbnN0IHRoZSBwYXR0ZXJuCisKKyAgICAgICAgIHRoZSAoKD86cmVkfHdoaXRlKSAoa2luZ3xxdWVlbikpCisKKyAgICAgICB0aGUgY2FwdHVyZWQgc3Vic3RyaW5ncyBhcmUgIndoaXRlIHF1ZWVuIiBhbmQgInF1ZWVuIiwgYW5kIGFyZSBudW1iZXJlZAorICAgICAgIDEgIGFuZCAyLiBUaGUgbWF4aW11bSBudW1iZXIgb2YgY2FwdHVyaW5nIHN1YnBhdHRlcm5zIGlzIDY1NTM1LCBhbmQgdGhlCisgICAgICAgbWF4aW11bSBkZXB0aCBvZiBuZXN0aW5nIG9mIGFsbCBzdWJwYXR0ZXJucywgYm90aCAgY2FwdHVyaW5nICBhbmQgIG5vbi0KKyAgICAgICBjYXB0dXJpbmcsIGlzIDIwMC4KKworICAgICAgIEFzICBhICBjb252ZW5pZW50IHNob3J0aGFuZCwgaWYgYW55IG9wdGlvbiBzZXR0aW5ncyBhcmUgcmVxdWlyZWQgYXQgdGhlCisgICAgICAgc3RhcnQgb2YgYSBub24tY2FwdHVyaW5nIHN1YnBhdHRlcm4sICB0aGUgIG9wdGlvbiAgbGV0dGVycyAgbWF5ICBhcHBlYXIKKyAgICAgICBiZXR3ZWVuIHRoZSAiPyIgYW5kIHRoZSAiOiIuIFRodXMgdGhlIHR3byBwYXR0ZXJucworCisgICAgICAgICAoP2k6c2F0dXJkYXl8c3VuZGF5KQorICAgICAgICAgKD86KD9pKXNhdHVyZGF5fHN1bmRheSkKKworICAgICAgIG1hdGNoIGV4YWN0bHkgdGhlIHNhbWUgc2V0IG9mIHN0cmluZ3MuIEJlY2F1c2UgYWx0ZXJuYXRpdmUgYnJhbmNoZXMgYXJlCisgICAgICAgdHJpZWQgZnJvbSBsZWZ0IHRvIHJpZ2h0LCBhbmQgb3B0aW9ucyBhcmUgbm90IHJlc2V0IHVudGlsICB0aGUgIGVuZCAgb2YKKyAgICAgICB0aGUgIHN1YnBhdHRlcm4gaXMgcmVhY2hlZCwgYW4gb3B0aW9uIHNldHRpbmcgaW4gb25lIGJyYW5jaCBkb2VzIGFmZmVjdAorICAgICAgIHN1YnNlcXVlbnQgYnJhbmNoZXMsIHNvIHRoZSBhYm92ZSBwYXR0ZXJucyBtYXRjaCAiU1VOREFZIiAgYXMgIHdlbGwgIGFzCisgICAgICAgIlNhdHVyZGF5Ii4KKworCitOQU1FRCBTVUJQQVRURVJOUworCisgICAgICAgSWRlbnRpZnlpbmcgIGNhcHR1cmluZyAgcGFyZW50aGVzZXMgIGJ5IG51bWJlciBpcyBzaW1wbGUsIGJ1dCBpdCBjYW4gYmUKKyAgICAgICB2ZXJ5IGhhcmQgdG8ga2VlcCB0cmFjayBvZiB0aGUgbnVtYmVycyBpbiBjb21wbGljYXRlZCAgcmVndWxhciAgZXhwcmVzLQorICAgICAgIHNpb25zLiAgRnVydGhlcm1vcmUsICBpZiAgYW4gIGV4cHJlc3Npb24gIGlzICBtb2RpZmllZCwgdGhlIG51bWJlcnMgbWF5CisgICAgICAgY2hhbmdlLiBUbyBoZWxwIHdpdGggdGhlIGRpZmZpY3VsdHksIFBDUkUgc3VwcG9ydHMgdGhlIG5hbWluZyAgb2YgIHN1Yi0KKyAgICAgICBwYXR0ZXJucywgIHNvbWV0aGluZyAgdGhhdCAgUGVybCAgZG9lcyAgbm90ICBwcm92aWRlLiBUaGUgUHl0aG9uIHN5bnRheAorICAgICAgICg/UDxuYW1lPi4uLikgaXMgdXNlZC4gTmFtZXMgY29uc2lzdCAgb2YgIGFscGhhbnVtZXJpYyAgY2hhcmFjdGVycyAgYW5kCisgICAgICAgdW5kZXJzY29yZXMsIGFuZCBtdXN0IGJlIHVuaXF1ZSB3aXRoaW4gYSBwYXR0ZXJuLgorCisgICAgICAgTmFtZWQgIGNhcHR1cmluZyAgcGFyZW50aGVzZXMgIGFyZSAgc3RpbGwgIGFsbG9jYXRlZCBudW1iZXJzIGFzIHdlbGwgYXMKKyAgICAgICBuYW1lcy4gVGhlIFBDUkUgQVBJIHByb3ZpZGVzIGZ1bmN0aW9uIGNhbGxzIGZvciBleHRyYWN0aW5nIHRoZSBuYW1lLXRvLQorICAgICAgIG51bWJlciAgdHJhbnNsYXRpb24gIHRhYmxlIGZyb20gYSBjb21waWxlZCBwYXR0ZXJuLiBGb3IgZnVydGhlciBkZXRhaWxzCisgICAgICAgc2VlIHRoZSBwY3JlYXBpIGRvY3VtZW50YXRpb24uCisKKworUkVQRVRJVElPTgorCisgICAgICAgUmVwZXRpdGlvbiBpcyBzcGVjaWZpZWQgYnkgcXVhbnRpZmllcnMsIHdoaWNoIGNhbiAgZm9sbG93ICBhbnkgIG9mICB0aGUKKyAgICAgICBmb2xsb3dpbmcgaXRlbXM6CisKKyAgICAgICAgIGEgbGl0ZXJhbCBkYXRhIGNoYXJhY3RlcgorICAgICAgICAgdGhlIC4gbWV0YWNoYXJhY3RlcgorICAgICAgICAgdGhlIFxDIGVzY2FwZSBzZXF1ZW5jZQorICAgICAgICAgZXNjYXBlcyBzdWNoIGFzIFxkIHRoYXQgbWF0Y2ggc2luZ2xlIGNoYXJhY3RlcnMKKyAgICAgICAgIGEgY2hhcmFjdGVyIGNsYXNzCisgICAgICAgICBhIGJhY2sgcmVmZXJlbmNlIChzZWUgbmV4dCBzZWN0aW9uKQorICAgICAgICAgYSBwYXJlbnRoZXNpemVkIHN1YnBhdHRlcm4gKHVubGVzcyBpdCBpcyBhbiBhc3NlcnRpb24pCisKKyAgICAgICBUaGUgIGdlbmVyYWwgcmVwZXRpdGlvbiBxdWFudGlmaWVyIHNwZWNpZmllcyBhIG1pbmltdW0gYW5kIG1heGltdW0gbnVtLQorICAgICAgIGJlciBvZiBwZXJtaXR0ZWQgbWF0Y2hlcywgYnkgZ2l2aW5nIHRoZSB0d28gbnVtYmVycyBpbiAgY3VybHkgIGJyYWNrZXRzCisgICAgICAgKGJyYWNlcyksICBzZXBhcmF0ZWQgIGJ5ICBhIGNvbW1hLiBUaGUgbnVtYmVycyBtdXN0IGJlIGxlc3MgdGhhbiA2NTUzNiwKKyAgICAgICBhbmQgdGhlIGZpcnN0IG11c3QgYmUgbGVzcyB0aGFuIG9yIGVxdWFsIHRvIHRoZSBzZWNvbmQuIEZvciBleGFtcGxlOgorCisgICAgICAgICB6ezIsNH0KKworICAgICAgIG1hdGNoZXMgInp6IiwgInp6eiIsIG9yICJ6enp6Ii4gQSBjbG9zaW5nIGJyYWNlIG9uIGl0cyAgb3duICBpcyAgbm90ICBhCisgICAgICAgc3BlY2lhbCAgY2hhcmFjdGVyLiAgSWYgIHRoZSBzZWNvbmQgbnVtYmVyIGlzIG9taXR0ZWQsIGJ1dCB0aGUgY29tbWEgaXMKKyAgICAgICBwcmVzZW50LCB0aGVyZSBpcyBubyB1cHBlciBsaW1pdDsgaWYgdGhlIHNlY29uZCBudW1iZXIgIGFuZCAgdGhlICBjb21tYQorICAgICAgIGFyZSAgYm90aCBvbWl0dGVkLCB0aGUgcXVhbnRpZmllciBzcGVjaWZpZXMgYW4gZXhhY3QgbnVtYmVyIG9mIHJlcXVpcmVkCisgICAgICAgbWF0Y2hlcy4gVGh1cworCisgICAgICAgICBbYWVpb3VdezMsfQorCisgICAgICAgbWF0Y2hlcyBhdCBsZWFzdCAzIHN1Y2Nlc3NpdmUgdm93ZWxzLCBidXQgbWF5IG1hdGNoIG1hbnkgbW9yZSwgd2hpbGUKKworICAgICAgICAgXGR7OH0KKworICAgICAgIG1hdGNoZXMgZXhhY3RseSA4IGRpZ2l0cy4gQW4gb3BlbmluZyBjdXJseSBicmFja2V0IHRoYXQgIGFwcGVhcnMgIGluICBhCisgICAgICAgcG9zaXRpb24gIHdoZXJlIGEgcXVhbnRpZmllciBpcyBub3QgYWxsb3dlZCwgb3Igb25lIHRoYXQgZG9lcyBub3QgbWF0Y2gKKyAgICAgICB0aGUgc3ludGF4IG9mIGEgcXVhbnRpZmllciwgaXMgdGFrZW4gYXMgYSBsaXRlcmFsIGNoYXJhY3Rlci4gRm9yICBleGFtLQorICAgICAgIHBsZSwgeyw2fSBpcyBub3QgYSBxdWFudGlmaWVyLCBidXQgYSBsaXRlcmFsIHN0cmluZyBvZiBmb3VyIGNoYXJhY3RlcnMuCisKKyAgICAgICBJbiBVVEYtOCBtb2RlLCBxdWFudGlmaWVycyBhcHBseSB0byBVVEYtOCAgY2hhcmFjdGVycyAgcmF0aGVyICB0aGFuICB0bworICAgICAgIGluZGl2aWR1YWwgYnl0ZXMuIFRodXMsIGZvciBleGFtcGxlLCBceHsxMDB9ezJ9IG1hdGNoZXMgdHdvIFVURi04IGNoYXItCisgICAgICAgYWN0ZXJzLCBlYWNoIG9mIHdoaWNoIGlzIHJlcHJlc2VudGVkIGJ5IGEgdHdvLWJ5dGUgc2VxdWVuY2UuCisKKyAgICAgICBUaGUgcXVhbnRpZmllciB7MH0gaXMgcGVybWl0dGVkLCBjYXVzaW5nIHRoZSBleHByZXNzaW9uIHRvIGJlaGF2ZSBhcyBpZgorICAgICAgIHRoZSBwcmV2aW91cyBpdGVtIGFuZCB0aGUgcXVhbnRpZmllciB3ZXJlIG5vdCBwcmVzZW50LgorCisgICAgICAgRm9yICBjb252ZW5pZW5jZSAgKGFuZCAgaGlzdG9yaWNhbCBjb21wYXRpYmlsaXR5KSB0aGUgdGhyZWUgbW9zdCBjb21tb24KKyAgICAgICBxdWFudGlmaWVycyBoYXZlIHNpbmdsZS1jaGFyYWN0ZXIgYWJicmV2aWF0aW9uczoKKworICAgICAgICAgKiAgICBpcyBlcXVpdmFsZW50IHRvIHswLH0KKyAgICAgICAgICsgICAgaXMgZXF1aXZhbGVudCB0byB7MSx9CisgICAgICAgICA/ICAgIGlzIGVxdWl2YWxlbnQgdG8gezAsMX0KKworICAgICAgIEl0IGlzIHBvc3NpYmxlIHRvIGNvbnN0cnVjdCBpbmZpbml0ZSBsb29wcyBieSAgZm9sbG93aW5nICBhICBzdWJwYXR0ZXJuCisgICAgICAgdGhhdCBjYW4gbWF0Y2ggbm8gY2hhcmFjdGVycyB3aXRoIGEgcXVhbnRpZmllciB0aGF0IGhhcyBubyB1cHBlciBsaW1pdCwKKyAgICAgICBmb3IgZXhhbXBsZToKKworICAgICAgICAgKGE/KSoKKworICAgICAgIEVhcmxpZXIgdmVyc2lvbnMgb2YgUGVybCBhbmQgUENSRSB1c2VkIHRvIGdpdmUgYW4gZXJyb3IgYXQgY29tcGlsZSB0aW1lCisgICAgICAgZm9yICBzdWNoICBwYXR0ZXJucy4gSG93ZXZlciwgYmVjYXVzZSB0aGVyZSBhcmUgY2FzZXMgd2hlcmUgdGhpcyBjYW4gYmUKKyAgICAgICB1c2VmdWwsIHN1Y2ggcGF0dGVybnMgYXJlIG5vdyBhY2NlcHRlZCwgYnV0IGlmIGFueSAgcmVwZXRpdGlvbiAgb2YgIHRoZQorICAgICAgIHN1YnBhdHRlcm4gIGRvZXMgaW4gZmFjdCBtYXRjaCBubyBjaGFyYWN0ZXJzLCB0aGUgbG9vcCBpcyBmb3JjaWJseSBicm8tCisgICAgICAga2VuLgorCisgICAgICAgQnkgZGVmYXVsdCwgdGhlIHF1YW50aWZpZXJzIGFyZSAiZ3JlZWR5IiwgdGhhdCBpcywgdGhleSBtYXRjaCAgYXMgIG11Y2gKKyAgICAgICBhcyAgcG9zc2libGUgICh1cCAgdG8gIHRoZSAgbWF4aW11bSBudW1iZXIgb2YgcGVybWl0dGVkIHRpbWVzKSwgd2l0aG91dAorICAgICAgIGNhdXNpbmcgdGhlIHJlc3Qgb2YgdGhlIHBhdHRlcm4gdG8gZmFpbC4gVGhlIGNsYXNzaWMgZXhhbXBsZSAgb2YgIHdoZXJlCisgICAgICAgdGhpcyBnaXZlcyBwcm9ibGVtcyBpcyBpbiB0cnlpbmcgdG8gbWF0Y2ggY29tbWVudHMgaW4gQyBwcm9ncmFtcy4gVGhlc2UKKyAgICAgICBhcHBlYXIgYmV0d2VlbiB0aGUgc2VxdWVuY2VzIC8qIGFuZCAqLyBhbmQgd2l0aGluIHRoZSAgc2VxdWVuY2UsICBpbmRpLQorICAgICAgIHZpZHVhbCAqIGFuZCAvIGNoYXJhY3RlcnMgbWF5IGFwcGVhci4gQW4gYXR0ZW1wdCB0byBtYXRjaCBDIGNvbW1lbnRzIGJ5CisgICAgICAgYXBwbHlpbmcgdGhlIHBhdHRlcm4KKworICAgICAgICAgL1wqLipcKi8KKworICAgICAgIHRvIHRoZSBzdHJpbmcKKworICAgICAgICAgLyogZmlyc3QgY29tbWFuZCAqLyAgbm90IGNvbW1lbnQgIC8qIHNlY29uZCBjb21tZW50ICovCisKKyAgICAgICBmYWlscywgYmVjYXVzZSBpdCBtYXRjaGVzIHRoZSBlbnRpcmUgc3RyaW5nIG93aW5nIHRvIHRoZSBncmVlZGluZXNzICBvZgorICAgICAgIHRoZSAuKiAgaXRlbS4KKworICAgICAgIEhvd2V2ZXIsICBpZiAgYSBxdWFudGlmaWVyIGlzIGZvbGxvd2VkIGJ5IGEgcXVlc3Rpb24gbWFyaywgaXQgY2Vhc2VzIHRvCisgICAgICAgYmUgZ3JlZWR5LCBhbmQgaW5zdGVhZCBtYXRjaGVzIHRoZSBtaW5pbXVtIG51bWJlciBvZiB0aW1lcyBwb3NzaWJsZSwgc28KKyAgICAgICB0aGUgcGF0dGVybgorCisgICAgICAgICAvXCouKj9cKi8KKworICAgICAgIGRvZXMgIHRoZSAgcmlnaHQgIHRoaW5nIHdpdGggdGhlIEMgY29tbWVudHMuIFRoZSBtZWFuaW5nIG9mIHRoZSB2YXJpb3VzCisgICAgICAgcXVhbnRpZmllcnMgaXMgbm90IG90aGVyd2lzZSBjaGFuZ2VkLCAganVzdCAgdGhlICBwcmVmZXJyZWQgIG51bWJlciAgb2YKKyAgICAgICBtYXRjaGVzLiAgIERvICBub3QgIGNvbmZ1c2UgdGhpcyB1c2Ugb2YgcXVlc3Rpb24gbWFyayB3aXRoIGl0cyB1c2UgYXMgYQorICAgICAgIHF1YW50aWZpZXIgaW4gaXRzIG93biByaWdodC4gQmVjYXVzZSBpdCBoYXMgdHdvIHVzZXMsIGl0IGNhbiAgc29tZXRpbWVzCisgICAgICAgYXBwZWFyIGRvdWJsZWQsIGFzIGluCisKKyAgICAgICAgIFxkPz9cZAorCisgICAgICAgd2hpY2ggbWF0Y2hlcyBvbmUgZGlnaXQgYnkgcHJlZmVyZW5jZSwgYnV0IGNhbiBtYXRjaCB0d28gaWYgdGhhdCBpcyB0aGUKKyAgICAgICBvbmx5IHdheSB0aGUgcmVzdCBvZiB0aGUgcGF0dGVybiBtYXRjaGVzLgorCisgICAgICAgSWYgdGhlIFBDUkVfVU5HUkVFRFkgb3B0aW9uIGlzIHNldCAoYW4gb3B0aW9uIHdoaWNoIGlzIG5vdCBhdmFpbGFibGUgaW4KKyAgICAgICBQZXJsKSwgIHRoZSAgcXVhbnRpZmllcnMgYXJlIG5vdCBncmVlZHkgYnkgZGVmYXVsdCwgYnV0IGluZGl2aWR1YWwgb25lcworICAgICAgIGNhbiBiZSBtYWRlIGdyZWVkeSBieSBmb2xsb3dpbmcgdGhlbSB3aXRoIGEgIHF1ZXN0aW9uICBtYXJrLiAgSW4gIG90aGVyCisgICAgICAgd29yZHMsIGl0IGludmVydHMgdGhlIGRlZmF1bHQgYmVoYXZpb3VyLgorCisgICAgICAgV2hlbiAgYSAgcGFyZW50aGVzaXplZCAgc3VicGF0dGVybiAgaXMgcXVhbnRpZmllZCB3aXRoIGEgbWluaW11bSByZXBlYXQKKyAgICAgICBjb3VudCB0aGF0IGlzIGdyZWF0ZXIgdGhhbiAxIG9yIHdpdGggYSBsaW1pdGVkIG1heGltdW0sIG1vcmUgIHN0b3JlICBpcworICAgICAgIHJlcXVpcmVkICBmb3IgIHRoZSAgY29tcGlsZWQgIHBhdHRlcm4sIGluIHByb3BvcnRpb24gdG8gdGhlIHNpemUgb2YgdGhlCisgICAgICAgbWluaW11bSBvciBtYXhpbXVtLgorCisgICAgICAgSWYgYSBwYXR0ZXJuIHN0YXJ0cyB3aXRoIC4qIG9yIC57MCx9IGFuZCB0aGUgUENSRV9ET1RBTEwgb3B0aW9uIChlcXVpdi0KKyAgICAgICBhbGVudCAgdG8gUGVybCdzIC9zKSBpcyBzZXQsIHRodXMgYWxsb3dpbmcgdGhlIC4gdG8gbWF0Y2ggbmV3bGluZXMsIHRoZQorICAgICAgIHBhdHRlcm4gaXMgaW1wbGljaXRseSBhbmNob3JlZCwgYmVjYXVzZSB3aGF0ZXZlciBmb2xsb3dzIHdpbGwgYmUgIHRyaWVkCisgICAgICAgYWdhaW5zdCAgZXZlcnkgY2hhcmFjdGVyIHBvc2l0aW9uIGluIHRoZSBzdWJqZWN0IHN0cmluZywgc28gdGhlcmUgaXMgbm8KKyAgICAgICBwb2ludCBpbiByZXRyeWluZyB0aGUgb3ZlcmFsbCBtYXRjaCBhdCBhbnkgcG9zaXRpb24gIGFmdGVyICB0aGUgIGZpcnN0LgorICAgICAgIFBDUkUgbm9ybWFsbHkgdHJlYXRzIHN1Y2ggYSBwYXR0ZXJuIGFzIHRob3VnaCBpdCB3ZXJlIHByZWNlZGVkIGJ5IFxBLgorCisgICAgICAgSW4gIGNhc2VzICB3aGVyZSAgaXQgIGlzIGtub3duIHRoYXQgdGhlIHN1YmplY3Qgc3RyaW5nIGNvbnRhaW5zIG5vIG5ldy0KKyAgICAgICBsaW5lcywgaXQgaXMgd29ydGggc2V0dGluZyBQQ1JFX0RPVEFMTCBpbiBvcmRlciB0byAgb2J0YWluICB0aGlzICBvcHRpLQorICAgICAgIG1pemF0aW9uLCBvciBhbHRlcm5hdGl2ZWx5IHVzaW5nIF4gdG8gaW5kaWNhdGUgYW5jaG9yaW5nIGV4cGxpY2l0bHkuCisKKyAgICAgICBIb3dldmVyLCAgdGhlcmUgaXMgb25lIHNpdHVhdGlvbiB3aGVyZSB0aGUgb3B0aW1pemF0aW9uIGNhbm5vdCBiZSB1c2VkLgorICAgICAgIFdoZW4gLiogIGlzIGluc2lkZSBjYXB0dXJpbmcgcGFyZW50aGVzZXMgdGhhdCAgYXJlICB0aGUgIHN1YmplY3QgIG9mICBhCisgICAgICAgYmFja3JlZmVyZW5jZSAgZWxzZXdoZXJlIGluIHRoZSBwYXR0ZXJuLCBhIG1hdGNoIGF0IHRoZSBzdGFydCBtYXkgZmFpbCwKKyAgICAgICBhbmQgYSBsYXRlciBvbmUgc3VjY2VlZC4gQ29uc2lkZXIsIGZvciBleGFtcGxlOgorCisgICAgICAgICAoLiopYWJjXDEKKworICAgICAgIElmIHRoZSBzdWJqZWN0IGlzICJ4eXoxMjNhYmMxMjMiIHRoZSBtYXRjaCBwb2ludCBpcyB0aGUgZm91cnRoICBjaGFyYWMtCisgICAgICAgdGVyLiBGb3IgdGhpcyByZWFzb24sIHN1Y2ggYSBwYXR0ZXJuIGlzIG5vdCBpbXBsaWNpdGx5IGFuY2hvcmVkLgorCisgICAgICAgV2hlbiBhIGNhcHR1cmluZyBzdWJwYXR0ZXJuIGlzIHJlcGVhdGVkLCB0aGUgdmFsdWUgY2FwdHVyZWQgaXMgdGhlIHN1Yi0KKyAgICAgICBzdHJpbmcgdGhhdCBtYXRjaGVkIHRoZSBmaW5hbCBpdGVyYXRpb24uIEZvciBleGFtcGxlLCBhZnRlcgorCisgICAgICAgICAodHdlZWRsZVtkdW1lXXszfVxzKikrCisKKyAgICAgICBoYXMgbWF0Y2hlZCAidHdlZWRsZWR1bSB0d2VlZGxlZGVlIiB0aGUgdmFsdWUgb2YgdGhlIGNhcHR1cmVkIHN1YnN0cmluZworICAgICAgIGlzICAidHdlZWRsZWRlZSIuICBIb3dldmVyLCAgaWYgdGhlcmUgYXJlIG5lc3RlZCBjYXB0dXJpbmcgc3VicGF0dGVybnMsCisgICAgICAgdGhlIGNvcnJlc3BvbmRpbmcgY2FwdHVyZWQgdmFsdWVzIG1heSBoYXZlIGJlZW4gc2V0IGluIHByZXZpb3VzICBpdGVyYS0KKyAgICAgICB0aW9ucy4gRm9yIGV4YW1wbGUsIGFmdGVyCisKKyAgICAgICAgIC8oYXwoYikpKy8KKworICAgICAgIG1hdGNoZXMgImFiYSIgdGhlIHZhbHVlIG9mIHRoZSBzZWNvbmQgY2FwdHVyZWQgc3Vic3RyaW5nIGlzICJiIi4KKworCitBVE9NSUMgR1JPVVBJTkcgQU5EIFBPU1NFU1NJVkUgUVVBTlRJRklFUlMKKworICAgICAgIFdpdGggYm90aCBtYXhpbWl6aW5nIGFuZCBtaW5pbWl6aW5nIHJlcGV0aXRpb24sIGZhaWx1cmUgb2Ygd2hhdCBmb2xsb3dzCisgICAgICAgbm9ybWFsbHkgY2F1c2VzIHRoZSByZXBlYXRlZCBpdGVtIHRvIGJlIHJlLWV2YWx1YXRlZCB0byBzZWUgaWYgIGEgIGRpZi0KKyAgICAgICBmZXJlbnQgbnVtYmVyIG9mIHJlcGVhdHMgYWxsb3dzIHRoZSByZXN0IG9mIHRoZSBwYXR0ZXJuIHRvIG1hdGNoLiBTb21lLQorICAgICAgIHRpbWVzIGl0IGlzIHVzZWZ1bCB0byBwcmV2ZW50IHRoaXMsIGVpdGhlciB0byBjaGFuZ2UgdGhlIG5hdHVyZSBvZiAgdGhlCisgICAgICAgbWF0Y2gsICBvciAgdG8gIGNhdXNlIGl0IGZhaWwgZWFybGllciB0aGFuIGl0IG90aGVyd2lzZSBtaWdodCwgd2hlbiB0aGUKKyAgICAgICBhdXRob3Igb2YgdGhlIHBhdHRlcm4ga25vd3MgdGhlcmUgaXMgbm8gcG9pbnQgaW4gY2Fycnlpbmcgb24uCisKKyAgICAgICBDb25zaWRlciwgZm9yIGV4YW1wbGUsIHRoZSBwYXR0ZXJuIFxkK2ZvbyB3aGVuIGFwcGxpZWQgdG8gIHRoZSAgc3ViamVjdAorICAgICAgIGxpbmUKKworICAgICAgICAgMTIzNDU2YmFyCisKKyAgICAgICBBZnRlciBtYXRjaGluZyBhbGwgNiBkaWdpdHMgYW5kIHRoZW4gZmFpbGluZyB0byBtYXRjaCAiZm9vIiwgdGhlIG5vcm1hbAorICAgICAgIGFjdGlvbiBvZiB0aGUgbWF0Y2hlciBpcyB0byB0cnkgYWdhaW4gd2l0aCBvbmx5IDUgZGlnaXRzICBtYXRjaGluZyAgdGhlCisgICAgICAgXGQrICBpdGVtLCAgYW5kICB0aGVuICB3aXRoICA0LCAgYW5kICBzbyBvbiwgYmVmb3JlIHVsdGltYXRlbHkgZmFpbGluZy4KKyAgICAgICAiQXRvbWljIGdyb3VwaW5nIiAoYSB0ZXJtIHRha2VuIGZyb20gSmVmZnJleSAgRnJpZWRsJ3MgIGJvb2spICBwcm92aWRlcworICAgICAgIHRoZSAgbWVhbnMgZm9yIHNwZWNpZnlpbmcgdGhhdCBvbmNlIGEgc3VicGF0dGVybiBoYXMgbWF0Y2hlZCwgaXQgaXMgbm90CisgICAgICAgdG8gYmUgcmUtZXZhbHVhdGVkIGluIHRoaXMgd2F5LgorCisgICAgICAgSWYgd2UgdXNlIGF0b21pYyBncm91cGluZyBmb3IgdGhlIHByZXZpb3VzIGV4YW1wbGUsIHRoZSAgbWF0Y2hlciAgd291bGQKKyAgICAgICBnaXZlIHVwIGltbWVkaWF0ZWx5IG9uIGZhaWxpbmcgdG8gbWF0Y2ggImZvbyIgdGhlIGZpcnN0IHRpbWUuIFRoZSBub3RhLQorICAgICAgIHRpb24gaXMgYSBraW5kIG9mIHNwZWNpYWwgcGFyZW50aGVzaXMsIHN0YXJ0aW5nIHdpdGggICg/PiAgYXMgIGluICB0aGlzCisgICAgICAgZXhhbXBsZToKKworICAgICAgICAgKD8+XGQrKWZvbworCisgICAgICAgVGhpcyAga2luZCAgb2YgIHBhcmVudGhlc2lzICJsb2NrcyB1cCIgdGhlICBwYXJ0IG9mIHRoZSBwYXR0ZXJuIGl0IGNvbi0KKyAgICAgICB0YWlucyBvbmNlIGl0IGhhcyBtYXRjaGVkLCBhbmQgYSBmYWlsdXJlIGZ1cnRoZXIgaW50byAgdGhlICBwYXR0ZXJuICBpcworICAgICAgIHByZXZlbnRlZCAgZnJvbSAgYmFja3RyYWNraW5nIGludG8gaXQuIEJhY2t0cmFja2luZyBwYXN0IGl0IHRvIHByZXZpb3VzCisgICAgICAgaXRlbXMsIGhvd2V2ZXIsIHdvcmtzIGFzIG5vcm1hbC4KKworICAgICAgIEFuIGFsdGVybmF0aXZlIGRlc2NyaXB0aW9uIGlzIHRoYXQgYSBzdWJwYXR0ZXJuIG9mICB0aGlzICB0eXBlICBtYXRjaGVzCisgICAgICAgdGhlICBzdHJpbmcgIG9mICBjaGFyYWN0ZXJzICB0aGF0IGFuIGlkZW50aWNhbCBzdGFuZGFsb25lIHBhdHRlcm4gd291bGQKKyAgICAgICBtYXRjaCwgaWYgYW5jaG9yZWQgYXQgdGhlIGN1cnJlbnQgcG9pbnQgaW4gdGhlIHN1YmplY3Qgc3RyaW5nLgorCisgICAgICAgQXRvbWljIGdyb3VwaW5nIHN1YnBhdHRlcm5zIGFyZSBub3QgY2FwdHVyaW5nIHN1YnBhdHRlcm5zLiBTaW1wbGUgY2FzZXMKKyAgICAgICBzdWNoIGFzIHRoZSBhYm92ZSBleGFtcGxlIGNhbiBiZSB0aG91Z2h0IG9mIGFzIGEgbWF4aW1pemluZyByZXBlYXQgdGhhdAorICAgICAgIG11c3Qgc3dhbGxvdyBldmVyeXRoaW5nIGl0IGNhbi4gU28sIHdoaWxlIGJvdGggXGQrIGFuZCAgXGQrPyAgYXJlICBwcmUtCisgICAgICAgcGFyZWQgIHRvICBhZGp1c3QgIHRoZSBudW1iZXIgb2YgZGlnaXRzIHRoZXkgbWF0Y2ggaW4gb3JkZXIgdG8gbWFrZSB0aGUKKyAgICAgICByZXN0IG9mIHRoZSBwYXR0ZXJuIG1hdGNoLCAoPz5cZCspIGNhbiBvbmx5IG1hdGNoIGFuIGVudGlyZSBzZXF1ZW5jZSBvZgorICAgICAgIGRpZ2l0cy4KKworICAgICAgIEF0b21pYyAgZ3JvdXBzIGluIGdlbmVyYWwgY2FuIG9mIGNvdXJzZSBjb250YWluIGFyYml0cmFyaWx5IGNvbXBsaWNhdGVkCisgICAgICAgc3VicGF0dGVybnMsIGFuZCBjYW4gYmUgbmVzdGVkLiBIb3dldmVyLCB3aGVuICB0aGUgIHN1YnBhdHRlcm4gIGZvciAgYW4KKyAgICAgICBhdG9taWMgZ3JvdXAgaXMganVzdCBhIHNpbmdsZSByZXBlYXRlZCBpdGVtLCBhcyBpbiB0aGUgZXhhbXBsZSBhYm92ZSwgYQorICAgICAgIHNpbXBsZXIgbm90YXRpb24sIGNhbGxlZCBhICJwb3NzZXNzaXZlIHF1YW50aWZpZXIiIGNhbiAgYmUgIHVzZWQuICBUaGlzCisgICAgICAgY29uc2lzdHMgIG9mICBhbiAgYWRkaXRpb25hbCAgKyBjaGFyYWN0ZXIgZm9sbG93aW5nIGEgcXVhbnRpZmllci4gVXNpbmcKKyAgICAgICB0aGlzIG5vdGF0aW9uLCB0aGUgcHJldmlvdXMgZXhhbXBsZSBjYW4gYmUgcmV3cml0dGVuIGFzCisKKyAgICAgICAgIFxkKytiYXIKKworICAgICAgIFBvc3Nlc3NpdmUgIHF1YW50aWZpZXJzICBhcmUgIGFsd2F5cyAgZ3JlZWR5OyAgdGhlICAgc2V0dGluZyAgIG9mICAgdGhlCisgICAgICAgUENSRV9VTkdSRUVEWSBvcHRpb24gaXMgaWdub3JlZC4gVGhleSBhcmUgYSBjb252ZW5pZW50IG5vdGF0aW9uIGZvciB0aGUKKyAgICAgICBzaW1wbGVyIGZvcm1zIG9mIGF0b21pYyBncm91cC4gSG93ZXZlciwgdGhlcmUgaXMgbm8gZGlmZmVyZW5jZSAgaW4gIHRoZQorICAgICAgIG1lYW5pbmcgIG9yICBwcm9jZXNzaW5nICBvZiAgYSBwb3NzZXNzaXZlIHF1YW50aWZpZXIgYW5kIHRoZSBlcXVpdmFsZW50CisgICAgICAgYXRvbWljIGdyb3VwLgorCisgICAgICAgVGhlIHBvc3Nlc3NpdmUgcXVhbnRpZmllciBzeW50YXggaXMgYW4gZXh0ZW5zaW9uIHRvIHRoZSBQZXJsIHN5bnRheC4gSXQKKyAgICAgICBvcmlnaW5hdGVzIGluIFN1bidzIEphdmEgcGFja2FnZS4KKworICAgICAgIFdoZW4gIGEgIHBhdHRlcm4gIGNvbnRhaW5zIGFuIHVubGltaXRlZCByZXBlYXQgaW5zaWRlIGEgc3VicGF0dGVybiB0aGF0CisgICAgICAgY2FuIGl0c2VsZiBiZSByZXBlYXRlZCBhbiB1bmxpbWl0ZWQgbnVtYmVyIG9mICB0aW1lcywgIHRoZSAgdXNlICBvZiAgYW4KKyAgICAgICBhdG9taWMgIGdyb3VwICBpcyAgdGhlICBvbmx5IHdheSB0byBhdm9pZCBzb21lIGZhaWxpbmcgbWF0Y2hlcyB0YWtpbmcgYQorICAgICAgIHZlcnkgbG9uZyB0aW1lIGluZGVlZC4gVGhlIHBhdHRlcm4KKworICAgICAgICAgKFxEK3w8XGQrPikqWyE/XQorCisgICAgICAgbWF0Y2hlcyBhbiB1bmxpbWl0ZWQgbnVtYmVyIG9mIHN1YnN0cmluZ3MgdGhhdCBlaXRoZXIgY29uc2lzdCAgb2YgIG5vbi0KKyAgICAgICBkaWdpdHMsICBvciAgZGlnaXRzICBlbmNsb3NlZCBpbiA8PiwgZm9sbG93ZWQgYnkgZWl0aGVyICEgb3IgPy4gV2hlbiBpdAorICAgICAgIG1hdGNoZXMsIGl0IHJ1bnMgcXVpY2tseS4gSG93ZXZlciwgaWYgaXQgaXMgYXBwbGllZCB0bworCisgICAgICAgICBhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhCisKKyAgICAgICBpdCB0YWtlcyBhIGxvbmcgdGltZSBiZWZvcmUgcmVwb3J0aW5nICBmYWlsdXJlLiAgVGhpcyAgaXMgIGJlY2F1c2UgIHRoZQorICAgICAgIHN0cmluZyAgY2FuICBiZSAgZGl2aWRlZCAgYmV0d2VlbiAgdGhlIHR3byByZXBlYXRzIGluIGEgbGFyZ2UgbnVtYmVyIG9mCisgICAgICAgd2F5cywgYW5kIGFsbCBoYXZlIHRvIGJlIHRyaWVkLiAoVGhlIGV4YW1wbGUgdXNlZCBbIT9dICByYXRoZXIgIHRoYW4gIGEKKyAgICAgICBzaW5nbGUgIGNoYXJhY3RlciAgYXQgdGhlIGVuZCwgYmVjYXVzZSBib3RoIFBDUkUgYW5kIFBlcmwgaGF2ZSBhbiBvcHRpLQorICAgICAgIG1pemF0aW9uIHRoYXQgYWxsb3dzIGZvciBmYXN0IGZhaWx1cmUgd2hlbiBhIHNpbmdsZSBjaGFyYWN0ZXIgaXMgIHVzZWQuCisgICAgICAgVGhleSAgcmVtZW1iZXIgIHRoZSBsYXN0IHNpbmdsZSBjaGFyYWN0ZXIgdGhhdCBpcyByZXF1aXJlZCBmb3IgYSBtYXRjaCwKKyAgICAgICBhbmQgZmFpbCBlYXJseSBpZiBpdCBpcyBub3QgcHJlc2VudCBpbiB0aGUgc3RyaW5nLikgIElmIHRoZSBwYXR0ZXJuICBpcworICAgICAgIGNoYW5nZWQgdG8KKworICAgICAgICAgKCg/PlxEKyl8PFxkKz4pKlshP10KKworICAgICAgIHNlcXVlbmNlcyAgb2Ygbm9uLWRpZ2l0cyBjYW5ub3QgYmUgYnJva2VuLCBhbmQgZmFpbHVyZSBoYXBwZW5zIHF1aWNrbHkuCisKKworQkFDSyBSRUZFUkVOQ0VTCisKKyAgICAgICBPdXRzaWRlIGEgY2hhcmFjdGVyIGNsYXNzLCBhIGJhY2tzbGFzaCBmb2xsb3dlZCBieSBhIGRpZ2l0IGdyZWF0ZXIgdGhhbgorICAgICAgIDAgKGFuZCBwb3NzaWJseSBmdXJ0aGVyIGRpZ2l0cykgaXMgYSBiYWNrIHJlZmVyZW5jZSB0byBhIGNhcHR1cmluZyBzdWItCisgICAgICAgcGF0dGVybiBlYXJsaWVyICh0aGF0IGlzLCB0byBpdHMgbGVmdCkgaW4gdGhlIHBhdHRlcm4sICBwcm92aWRlZCAgdGhlcmUKKyAgICAgICBoYXZlIGJlZW4gdGhhdCBtYW55IHByZXZpb3VzIGNhcHR1cmluZyBsZWZ0IHBhcmVudGhlc2VzLgorCisgICAgICAgSG93ZXZlciwgaWYgdGhlIGRlY2ltYWwgbnVtYmVyIGZvbGxvd2luZyB0aGUgYmFja3NsYXNoIGlzIGxlc3MgdGhhbiAxMCwKKyAgICAgICBpdCBpcyBhbHdheXMgdGFrZW4gYXMgYSBiYWNrIHJlZmVyZW5jZSwgYW5kIGNhdXNlcyAgYW4gIGVycm9yICBvbmx5ICBpZgorICAgICAgIHRoZXJlICBhcmUgIG5vdCB0aGF0IG1hbnkgY2FwdHVyaW5nIGxlZnQgcGFyZW50aGVzZXMgaW4gdGhlIGVudGlyZSBwYXQtCisgICAgICAgdGVybi4gSW4gb3RoZXIgd29yZHMsIHRoZSBwYXJlbnRoZXNlcyB0aGF0IGFyZSByZWZlcmVuY2VkIG5lZWQgIG5vdCAgYmUKKyAgICAgICB0byAgdGhlIGxlZnQgb2YgdGhlIHJlZmVyZW5jZSBmb3IgbnVtYmVycyBsZXNzIHRoYW4gMTAuIFNlZSB0aGUgc2VjdGlvbgorICAgICAgIGVudGl0bGVkICJCYWNrc2xhc2giIGFib3ZlIGZvciBmdXJ0aGVyIGRldGFpbHMgb2YgdGhlIGhhbmRsaW5nIG9mICBkaWctCisgICAgICAgaXRzIGZvbGxvd2luZyBhIGJhY2tzbGFzaC4KKworICAgICAgIEEgIGJhY2sgIHJlZmVyZW5jZSBtYXRjaGVzIHdoYXRldmVyIGFjdHVhbGx5IG1hdGNoZWQgdGhlIGNhcHR1cmluZyBzdWItCisgICAgICAgcGF0dGVybiBpbiB0aGUgY3VycmVudCBzdWJqZWN0IHN0cmluZywgcmF0aGVyICB0aGFuICBhbnl0aGluZyAgbWF0Y2hpbmcKKyAgICAgICB0aGUgc3VicGF0dGVybiBpdHNlbGYgKHNlZSAiU3VicGF0dGVybnMgYXMgc3Vicm91dGluZXMiIGJlbG93IGZvciBhIHdheQorICAgICAgIG9mIGRvaW5nIHRoYXQpLiBTbyB0aGUgcGF0dGVybgorCisgICAgICAgICAoc2Vuc3xyZXNwb25zKWUgYW5kIFwxaWJpbGl0eQorCisgICAgICAgbWF0Y2hlcyAic2Vuc2UgYW5kIHNlbnNpYmlsaXR5IiBhbmQgInJlc3BvbnNlIGFuZCByZXNwb25zaWJpbGl0eSIsICBidXQKKyAgICAgICBub3QgICJzZW5zZSBhbmQgcmVzcG9uc2liaWxpdHkiLiBJZiBjYXNlZnVsIG1hdGNoaW5nIGlzIGluIGZvcmNlIGF0IHRoZQorICAgICAgIHRpbWUgb2YgdGhlIGJhY2sgcmVmZXJlbmNlLCB0aGUgY2FzZSBvZiBsZXR0ZXJzIGlzIHJlbGV2YW50LiBGb3IgIGV4YW0tCisgICAgICAgcGxlLAorCisgICAgICAgICAoKD9pKXJhaClccytcMQorCisgICAgICAgbWF0Y2hlcyAgInJhaCAgcmFoIiAgYW5kICAiUkFIIFJBSCIsIGJ1dCBub3QgIlJBSCByYWgiLCBldmVuIHRob3VnaCB0aGUKKyAgICAgICBvcmlnaW5hbCBjYXB0dXJpbmcgc3VicGF0dGVybiBpcyBtYXRjaGVkIGNhc2VsZXNzbHkuCisKKyAgICAgICBCYWNrIHJlZmVyZW5jZXMgdG8gbmFtZWQgc3VicGF0dGVybnMgdXNlIHRoZSBQeXRob24gIHN5bnRheCAgKD9QPW5hbWUpLgorICAgICAgIFdlIGNvdWxkIHJld3JpdGUgdGhlIGFib3ZlIGV4YW1wbGUgYXMgZm9sbG93czoKKworICAgICAgICAgKD88cDE+KD9pKXJhaClccysoP1A9cDEpCisKKyAgICAgICBUaGVyZSAgbWF5IGJlIG1vcmUgdGhhbiBvbmUgYmFjayByZWZlcmVuY2UgdG8gdGhlIHNhbWUgc3VicGF0dGVybi4gSWYgYQorICAgICAgIHN1YnBhdHRlcm4gaGFzIG5vdCBhY3R1YWxseSBiZWVuIHVzZWQgaW4gYSBwYXJ0aWN1bGFyIG1hdGNoLCAgYW55ICBiYWNrCisgICAgICAgcmVmZXJlbmNlcyB0byBpdCBhbHdheXMgZmFpbC4gRm9yIGV4YW1wbGUsIHRoZSBwYXR0ZXJuCisKKyAgICAgICAgIChhfChiYykpXDIKKworICAgICAgIGFsd2F5cyAgZmFpbHMgaWYgaXQgc3RhcnRzIHRvIG1hdGNoICJhIiByYXRoZXIgdGhhbiAiYmMiLiBCZWNhdXNlIHRoZXJlCisgICAgICAgbWF5IGJlIG1hbnkgY2FwdHVyaW5nIHBhcmVudGhlc2VzIGluIGEgcGF0dGVybiwgIGFsbCAgZGlnaXRzICBmb2xsb3dpbmcKKyAgICAgICB0aGUgIGJhY2tzbGFzaCAgYXJlIHRha2VuIGFzIHBhcnQgb2YgYSBwb3RlbnRpYWwgYmFjayByZWZlcmVuY2UgbnVtYmVyLgorICAgICAgIElmIHRoZSBwYXR0ZXJuIGNvbnRpbnVlcyB3aXRoIGEgZGlnaXQgY2hhcmFjdGVyLCBzb21lIGRlbGltaXRlciBtdXN0IGJlCisgICAgICAgdXNlZCAgdG8gIHRlcm1pbmF0ZSAgdGhlIGJhY2sgcmVmZXJlbmNlLiBJZiB0aGUgUENSRV9FWFRFTkRFRCBvcHRpb24gaXMKKyAgICAgICBzZXQsIHRoaXMgY2FuIGJlIHdoaXRlc3BhY2UuICBPdGhlcndpc2UgYW4gZW1wdHkgY29tbWVudCBjYW4gYmUgdXNlZC4KKworICAgICAgIEEgYmFjayByZWZlcmVuY2UgdGhhdCBvY2N1cnMgaW5zaWRlIHRoZSBwYXJlbnRoZXNlcyB0byB3aGljaCBpdCAgcmVmZXJzCisgICAgICAgZmFpbHMgIHdoZW4gIHRoZSBzdWJwYXR0ZXJuIGlzIGZpcnN0IHVzZWQsIHNvLCBmb3IgZXhhbXBsZSwgKGFcMSkgbmV2ZXIKKyAgICAgICBtYXRjaGVzLiAgSG93ZXZlciwgc3VjaCByZWZlcmVuY2VzIGNhbiBiZSB1c2VmdWwgaW5zaWRlICByZXBlYXRlZCAgc3ViLQorICAgICAgIHBhdHRlcm5zLiBGb3IgZXhhbXBsZSwgdGhlIHBhdHRlcm4KKworICAgICAgICAgKGF8YlwxKSsKKworICAgICAgIG1hdGNoZXMgYW55IG51bWJlciBvZiAiYSJzIGFuZCBhbHNvICJhYmEiLCAiYWJhYmJhYSIgZXRjLiBBdCBlYWNoIGl0ZXItCisgICAgICAgYXRpb24gb2YgdGhlIHN1YnBhdHRlcm4sICB0aGUgIGJhY2sgIHJlZmVyZW5jZSAgbWF0Y2hlcyAgdGhlICBjaGFyYWN0ZXIKKyAgICAgICBzdHJpbmcgIGNvcnJlc3BvbmRpbmcgIHRvICB0aGUgcHJldmlvdXMgaXRlcmF0aW9uLiBJbiBvcmRlciBmb3IgdGhpcyB0bworICAgICAgIHdvcmssIHRoZSBwYXR0ZXJuIG11c3QgYmUgc3VjaCB0aGF0IHRoZSBmaXJzdCBpdGVyYXRpb24gZG9lcyAgbm90ICBuZWVkCisgICAgICAgdG8gIG1hdGNoIHRoZSBiYWNrIHJlZmVyZW5jZS4gVGhpcyBjYW4gYmUgZG9uZSB1c2luZyBhbHRlcm5hdGlvbiwgYXMgaW4KKyAgICAgICB0aGUgZXhhbXBsZSBhYm92ZSwgb3IgYnkgYSBxdWFudGlmaWVyIHdpdGggYSBtaW5pbXVtIG9mIHplcm8uCisKKworQVNTRVJUSU9OUworCisgICAgICAgQW4gYXNzZXJ0aW9uIGlzIGEgdGVzdCBvbiB0aGUgY2hhcmFjdGVycyAgZm9sbG93aW5nICBvciAgcHJlY2VkaW5nICB0aGUKKyAgICAgICBjdXJyZW50ICBtYXRjaGluZyAgcG9pbnQgdGhhdCBkb2VzIG5vdCBhY3R1YWxseSBjb25zdW1lIGFueSBjaGFyYWN0ZXJzLgorICAgICAgIFRoZSBzaW1wbGUgYXNzZXJ0aW9ucyBjb2RlZCBhcyBcYiwgXEIsIFxBLCBcRywgXFosICBceiwgIF4gIGFuZCAgJCAgYXJlCisgICAgICAgZGVzY3JpYmVkIGFib3ZlLiAgTW9yZSBjb21wbGljYXRlZCBhc3NlcnRpb25zIGFyZSBjb2RlZCBhcyBzdWJwYXR0ZXJucy4KKyAgICAgICBUaGVyZSBhcmUgdHdvIGtpbmRzOiB0aG9zZSB0aGF0IGxvb2sgYWhlYWQgb2YgdGhlIGN1cnJlbnQgIHBvc2l0aW9uICBpbgorICAgICAgIHRoZSBzdWJqZWN0IHN0cmluZywgYW5kIHRob3NlIHRoYXQgbG9vayBiZWhpbmQgaXQuCisKKyAgICAgICBBbiAgYXNzZXJ0aW9uICBzdWJwYXR0ZXJuICBpcyBtYXRjaGVkIGluIHRoZSBub3JtYWwgd2F5LCBleGNlcHQgdGhhdCBpdAorICAgICAgIGRvZXMgbm90IGNhdXNlIHRoZSBjdXJyZW50IG1hdGNoaW5nIHBvc2l0aW9uIHRvIGJlICBjaGFuZ2VkLiAgTG9va2FoZWFkCisgICAgICAgYXNzZXJ0aW9ucyAgc3RhcnQgd2l0aCAoPz0gZm9yIHBvc2l0aXZlIGFzc2VydGlvbnMgYW5kICg/ISBmb3IgbmVnYXRpdmUKKyAgICAgICBhc3NlcnRpb25zLiBGb3IgZXhhbXBsZSwKKworICAgICAgICAgXHcrKD89OykKKworICAgICAgIG1hdGNoZXMgYSB3b3JkIGZvbGxvd2VkIGJ5IGEgc2VtaWNvbG9uLCBidXQgZG9lcyBub3QgaW5jbHVkZSB0aGUgIHNlbWktCisgICAgICAgY29sb24gaW4gdGhlIG1hdGNoLCBhbmQKKworICAgICAgICAgZm9vKD8hYmFyKQorCisgICAgICAgbWF0Y2hlcyAgYW55ICBvY2N1cnJlbmNlICBvZiAgImZvbyIgdGhhdCBpcyBub3QgZm9sbG93ZWQgYnkgImJhciIuIE5vdGUKKyAgICAgICB0aGF0IHRoZSBhcHBhcmVudGx5IHNpbWlsYXIgcGF0dGVybgorCisgICAgICAgICAoPyFmb28pYmFyCisKKyAgICAgICBkb2VzIG5vdCBmaW5kIGFuIG9jY3VycmVuY2Ugb2YgImJhciIgIHRoYXQgIGlzICBwcmVjZWRlZCAgYnkgIHNvbWV0aGluZworICAgICAgIG90aGVyICB0aGFuICJmb28iOyBpdCBmaW5kcyBhbnkgb2NjdXJyZW5jZSBvZiAiYmFyIiB3aGF0c29ldmVyLCBiZWNhdXNlCisgICAgICAgdGhlIGFzc2VydGlvbiAoPyFmb28pIGlzIGFsd2F5cyB0cnVlIHdoZW4gdGhlIG5leHQgdGhyZWUgY2hhcmFjdGVycyBhcmUKKyAgICAgICAiYmFyIi4gQSBsb29rYmVoaW5kIGFzc2VydGlvbiBpcyBuZWVkZWQgdG8gYWNoaWV2ZSB0aGlzIGVmZmVjdC4KKworICAgICAgIElmIHlvdSB3YW50IHRvIGZvcmNlIGEgbWF0Y2hpbmcgZmFpbHVyZSBhdCBzb21lIHBvaW50IGluIGEgcGF0dGVybiwgdGhlCisgICAgICAgbW9zdCBjb252ZW5pZW50IHdheSB0byBkbyBpdCBpcyAgd2l0aCAgKD8hKSAgYmVjYXVzZSAgYW4gIGVtcHR5ICBzdHJpbmcKKyAgICAgICBhbHdheXMgIG1hdGNoZXMsIHNvIGFuIGFzc2VydGlvbiB0aGF0IHJlcXVpcmVzIHRoZXJlIG5vdCB0byBiZSBhbiBlbXB0eQorICAgICAgIHN0cmluZyBtdXN0IGFsd2F5cyBmYWlsLgorCisgICAgICAgTG9va2JlaGluZCBhc3NlcnRpb25zIHN0YXJ0IHdpdGggKD88PSBmb3IgcG9zaXRpdmUgYXNzZXJ0aW9ucyBhbmQgICg/PCEKKyAgICAgICBmb3IgbmVnYXRpdmUgYXNzZXJ0aW9ucy4gRm9yIGV4YW1wbGUsCisKKyAgICAgICAgICg/PCFmb28pYmFyCisKKyAgICAgICBkb2VzICBmaW5kICBhbiAgb2NjdXJyZW5jZSAgb2YgImJhciIgdGhhdCBpcyBub3QgcHJlY2VkZWQgYnkgImZvbyIuIFRoZQorICAgICAgIGNvbnRlbnRzIG9mIGEgbG9va2JlaGluZCBhc3NlcnRpb24gYXJlIHJlc3RyaWN0ZWQgIHN1Y2ggIHRoYXQgIGFsbCAgdGhlCisgICAgICAgc3RyaW5ncyBpdCBtYXRjaGVzIG11c3QgaGF2ZSBhIGZpeGVkIGxlbmd0aC4gSG93ZXZlciwgaWYgdGhlcmUgYXJlIHNldi0KKyAgICAgICBlcmFsIGFsdGVybmF0aXZlcywgdGhleSBkbyBub3QgYWxsIGhhdmUgdG8gaGF2ZSB0aGUgc2FtZSBmaXhlZCAgbGVuZ3RoLgorICAgICAgIFRodXMKKworICAgICAgICAgKD88PWJ1bGxvY2t8ZG9ua2V5KQorCisgICAgICAgaXMgcGVybWl0dGVkLCBidXQKKworICAgICAgICAgKD88IWRvZ3M/fGNhdHM/KQorCisgICAgICAgY2F1c2VzICBhbiAgZXJyb3IgYXQgY29tcGlsZSB0aW1lLiBCcmFuY2hlcyB0aGF0IG1hdGNoIGRpZmZlcmVudCBsZW5ndGgKKyAgICAgICBzdHJpbmdzIGFyZSBwZXJtaXR0ZWQgb25seSBhdCB0aGUgdG9wIGxldmVsIG9mIGEgbG9va2JlaGluZCAgYXNzZXJ0aW9uLgorICAgICAgIFRoaXMgIGlzICBhbiAgZXh0ZW5zaW9uICBjb21wYXJlZCAgd2l0aCAgUGVybCAoYXQgbGVhc3QgZm9yIDUuOCksIHdoaWNoCisgICAgICAgcmVxdWlyZXMgYWxsIGJyYW5jaGVzIHRvIG1hdGNoIHRoZSBzYW1lIGxlbmd0aCBvZiBzdHJpbmcuIEFuICBhc3NlcnRpb24KKyAgICAgICBzdWNoIGFzCisKKyAgICAgICAgICg/PD1hYihjfGRlKSkKKworICAgICAgIGlzICBub3QgIHBlcm1pdHRlZCwgIGJlY2F1c2UgIGl0cyBzaW5nbGUgdG9wLWxldmVsIGJyYW5jaCBjYW4gbWF0Y2ggdHdvCisgICAgICAgZGlmZmVyZW50IGxlbmd0aHMsIGJ1dCBpdCBpcyBhY2NlcHRhYmxlIGlmIHJld3JpdHRlbiB0byAgdXNlICB0d28gIHRvcC0KKyAgICAgICBsZXZlbCBicmFuY2hlczoKKworICAgICAgICAgKD88PWFiY3xhYmRlKQorCisgICAgICAgVGhlICBpbXBsZW1lbnRhdGlvbiAgb2YgbG9va2JlaGluZCBhc3NlcnRpb25zIGlzLCBmb3IgZWFjaCBhbHRlcm5hdGl2ZSwKKyAgICAgICB0byB0ZW1wb3JhcmlseSBtb3ZlIHRoZSBjdXJyZW50IHBvc2l0aW9uIGJhY2sgYnkgdGhlICBmaXhlZCAgd2lkdGggIGFuZAorICAgICAgIHRoZW4gdHJ5IHRvIG1hdGNoLiBJZiB0aGVyZSBhcmUgaW5zdWZmaWNpZW50IGNoYXJhY3RlcnMgYmVmb3JlIHRoZSBjdXItCisgICAgICAgcmVudCBwb3NpdGlvbiwgdGhlIG1hdGNoIGlzIGRlZW1lZCB0byBmYWlsLgorCisgICAgICAgUENSRSBkb2VzIG5vdCBhbGxvdyB0aGUgXEMgZXNjYXBlICh3aGljaCBtYXRjaGVzIGEgc2luZ2xlIGJ5dGUgaW4gVVRGLTgKKyAgICAgICBtb2RlKSAgdG8gYXBwZWFyIGluIGxvb2tiZWhpbmQgYXNzZXJ0aW9ucywgYmVjYXVzZSBpdCBtYWtlcyBpdCBpbXBvc3NpLQorICAgICAgIGJsZSB0byBjYWxjdWxhdGUgdGhlIGxlbmd0aCBvZiB0aGUgbG9va2JlaGluZC4KKworICAgICAgIEF0b21pYyBncm91cHMgY2FuIGJlIHVzZWQgaW4gY29uanVuY3Rpb24gd2l0aCBsb29rYmVoaW5kIGFzc2VydGlvbnMgIHRvCisgICAgICAgc3BlY2lmeSBlZmZpY2llbnQgbWF0Y2hpbmcgYXQgdGhlIGVuZCBvZiB0aGUgc3ViamVjdCBzdHJpbmcuIENvbnNpZGVyIGEKKyAgICAgICBzaW1wbGUgcGF0dGVybiBzdWNoIGFzCisKKyAgICAgICAgIGFiY2QkCisKKyAgICAgICB3aGVuIGFwcGxpZWQgdG8gYSBsb25nIHN0cmluZyB0aGF0IGRvZXMgIG5vdCAgbWF0Y2guICBCZWNhdXNlICBtYXRjaGluZworICAgICAgIHByb2NlZWRzIGZyb20gbGVmdCB0byByaWdodCwgUENSRSB3aWxsIGxvb2sgZm9yIGVhY2ggImEiIGluIHRoZSBzdWJqZWN0CisgICAgICAgYW5kIHRoZW4gc2VlIGlmIHdoYXQgZm9sbG93cyBtYXRjaGVzIHRoZSByZXN0IG9mIHRoZSAgcGF0dGVybi4gIElmICB0aGUKKyAgICAgICBwYXR0ZXJuIGlzIHNwZWNpZmllZCBhcworCisgICAgICAgICBeLiphYmNkJAorCisgICAgICAgdGhlICBpbml0aWFsIC4qIG1hdGNoZXMgdGhlIGVudGlyZSBzdHJpbmcgYXQgZmlyc3QsIGJ1dCB3aGVuIHRoaXMgZmFpbHMKKyAgICAgICAoYmVjYXVzZSB0aGVyZSBpcyBubyBmb2xsb3dpbmcgImEiKSwgaXQgYmFja3RyYWNrcyB0byBtYXRjaCBhbGwgYnV0IHRoZQorICAgICAgIGxhc3QgIGNoYXJhY3RlciwgIHRoZW4gYWxsIGJ1dCB0aGUgbGFzdCB0d28gY2hhcmFjdGVycywgYW5kIHNvIG9uLiBPbmNlCisgICAgICAgYWdhaW4gdGhlIHNlYXJjaCBmb3IgImEiIGNvdmVycyB0aGUgZW50aXJlIHN0cmluZywgZnJvbSByaWdodCB0byAgbGVmdCwKKyAgICAgICBzbyB3ZSBhcmUgbm8gYmV0dGVyIG9mZi4gSG93ZXZlciwgaWYgdGhlIHBhdHRlcm4gaXMgd3JpdHRlbiBhcworCisgICAgICAgICBeKD8+LiopKD88PWFiY2QpCisKKyAgICAgICBvciwgZXF1aXZhbGVudGx5LAorCisgICAgICAgICBeLiorKD88PWFiY2QpCisKKyAgICAgICB0aGVyZSAgY2FuICBiZSAgbm8gIGJhY2t0cmFja2luZyBmb3IgdGhlIC4qIGl0ZW07IGl0IGNhbiBtYXRjaCBvbmx5IHRoZQorICAgICAgIGVudGlyZSBzdHJpbmcuIFRoZSBzdWJzZXF1ZW50IGxvb2tiZWhpbmQgYXNzZXJ0aW9uIGRvZXMgYSAgc2luZ2xlICB0ZXN0CisgICAgICAgb24gIHRoZSBsYXN0IGZvdXIgY2hhcmFjdGVycy4gSWYgaXQgZmFpbHMsIHRoZSBtYXRjaCBmYWlscyBpbW1lZGlhdGVseS4KKyAgICAgICBGb3IgbG9uZyBzdHJpbmdzLCB0aGlzIGFwcHJvYWNoIG1ha2VzIGEgc2lnbmlmaWNhbnQgZGlmZmVyZW5jZSAgdG8gIHRoZQorICAgICAgIHByb2Nlc3NpbmcgdGltZS4KKworICAgICAgIFNldmVyYWwgYXNzZXJ0aW9ucyAob2YgYW55IHNvcnQpIG1heSBvY2N1ciBpbiBzdWNjZXNzaW9uLiBGb3IgZXhhbXBsZSwKKworICAgICAgICAgKD88PVxkezN9KSg/PCE5OTkpZm9vCisKKyAgICAgICBtYXRjaGVzICAiZm9vIiBwcmVjZWRlZCBieSB0aHJlZSBkaWdpdHMgdGhhdCBhcmUgbm90ICI5OTkiLiBOb3RpY2UgdGhhdAorICAgICAgIGVhY2ggb2YgdGhlIGFzc2VydGlvbnMgaXMgYXBwbGllZCBpbmRlcGVuZGVudGx5IGF0IHRoZSAgc2FtZSAgcG9pbnQgIGluCisgICAgICAgdGhlICBzdWJqZWN0ICBzdHJpbmcuICBGaXJzdCAgdGhlcmUgIGlzIGEgY2hlY2sgdGhhdCB0aGUgcHJldmlvdXMgdGhyZWUKKyAgICAgICBjaGFyYWN0ZXJzIGFyZSBhbGwgZGlnaXRzLCBhbmQgdGhlbiB0aGVyZSBpcyAgYSAgY2hlY2sgIHRoYXQgIHRoZSAgc2FtZQorICAgICAgIHRocmVlIGNoYXJhY3RlcnMgYXJlIG5vdCAiOTk5Ii4gIFRoaXMgcGF0dGVybiBkb2VzIG5vdCBtYXRjaCAiZm9vIiBwcmUtCisgICAgICAgY2VkZWQgYnkgc2l4IGNoYXJhY3RlcnMsIHRoZSBmaXJzdCBvZiB3aGljaCBhcmUgIGRpZ2l0cyAgYW5kICB0aGUgIGxhc3QKKyAgICAgICB0aHJlZSAgb2YgIHdoaWNoICBhcmUgbm90ICI5OTkiLiBGb3IgZXhhbXBsZSwgaXQgZG9lc24ndCBtYXRjaCAiMTIzYWJjLQorICAgICAgIGZvbyIuIEEgcGF0dGVybiB0byBkbyB0aGF0IGlzCisKKyAgICAgICAgICg/PD1cZHszfS4uLikoPzwhOTk5KWZvbworCisgICAgICAgVGhpcyB0aW1lIHRoZSBmaXJzdCBhc3NlcnRpb24gbG9va3MgYXQgdGhlICBwcmVjZWRpbmcgIHNpeCAgY2hhcmFjdGVycywKKyAgICAgICBjaGVja2luZyB0aGF0IHRoZSBmaXJzdCB0aHJlZSBhcmUgZGlnaXRzLCBhbmQgdGhlbiB0aGUgc2Vjb25kIGFzc2VydGlvbgorICAgICAgIGNoZWNrcyB0aGF0IHRoZSBwcmVjZWRpbmcgdGhyZWUgY2hhcmFjdGVycyBhcmUgbm90ICI5OTkiLgorCisgICAgICAgQXNzZXJ0aW9ucyBjYW4gYmUgbmVzdGVkIGluIGFueSBjb21iaW5hdGlvbi4gRm9yIGV4YW1wbGUsCisKKyAgICAgICAgICg/PD0oPzwhZm9vKWJhciliYXoKKworICAgICAgIG1hdGNoZXMgYW4gb2NjdXJyZW5jZSBvZiAiYmF6IiB0aGF0IGlzIHByZWNlZGVkIGJ5ICJiYXIiIHdoaWNoIGluICB0dXJuCisgICAgICAgaXMgbm90IHByZWNlZGVkIGJ5ICJmb28iLCB3aGlsZQorCisgICAgICAgICAoPzw9XGR7M30oPyE5OTkpLi4uKWZvbworCisgICAgICAgaXMgYW5vdGhlciBwYXR0ZXJuIHdoaWNoIG1hdGNoZXMgImZvbyIgcHJlY2VkZWQgYnkgdGhyZWUgZGlnaXRzIGFuZCBhbnkKKyAgICAgICB0aHJlZSBjaGFyYWN0ZXJzIHRoYXQgYXJlIG5vdCAiOTk5Ii4KKworICAgICAgIEFzc2VydGlvbiBzdWJwYXR0ZXJucyBhcmUgbm90IGNhcHR1cmluZyBzdWJwYXR0ZXJucywgIGFuZCAgbWF5ICBub3QgIGJlCisgICAgICAgcmVwZWF0ZWQsICBiZWNhdXNlICBpdCAgbWFrZXMgbm8gc2Vuc2UgdG8gYXNzZXJ0IHRoZSBzYW1lIHRoaW5nIHNldmVyYWwKKyAgICAgICB0aW1lcy4gSWYgYW55IGtpbmQgb2YgYXNzZXJ0aW9uIGNvbnRhaW5zIGNhcHR1cmluZyAgc3VicGF0dGVybnMgIHdpdGhpbgorICAgICAgIGl0LCAgdGhlc2UgYXJlIGNvdW50ZWQgZm9yIHRoZSBwdXJwb3NlcyBvZiBudW1iZXJpbmcgdGhlIGNhcHR1cmluZyBzdWItCisgICAgICAgcGF0dGVybnMgaW4gdGhlIHdob2xlIHBhdHRlcm4uICBIb3dldmVyLCBzdWJzdHJpbmcgY2FwdHVyaW5nIGlzIGNhcnJpZWQKKyAgICAgICBvdXQgIG9ubHkgIGZvciAgcG9zaXRpdmUgYXNzZXJ0aW9ucywgYmVjYXVzZSBpdCBkb2VzIG5vdCBtYWtlIHNlbnNlIGZvcgorICAgICAgIG5lZ2F0aXZlIGFzc2VydGlvbnMuCisKKworQ09ORElUSU9OQUwgU1VCUEFUVEVSTlMKKworICAgICAgIEl0IGlzIHBvc3NpYmxlIHRvIGNhdXNlIHRoZSBtYXRjaGluZyBwcm9jZXNzIHRvIG9iZXkgYSBzdWJwYXR0ZXJuICBjb24tCisgICAgICAgZGl0aW9uYWxseSAgb3IgdG8gY2hvb3NlIGJldHdlZW4gdHdvIGFsdGVybmF0aXZlIHN1YnBhdHRlcm5zLCBkZXBlbmRpbmcKKyAgICAgICBvbiB0aGUgIHJlc3VsdCAgb2YgIGFuICBhc3NlcnRpb24sICBvciAgd2hldGhlciAgYSAgcHJldmlvdXMgIGNhcHR1cmluZworICAgICAgIHN1YnBhdHRlcm4gIG1hdGNoZWQgIG9yIG5vdC4gVGhlIHR3byBwb3NzaWJsZSBmb3JtcyBvZiBjb25kaXRpb25hbCBzdWItCisgICAgICAgcGF0dGVybiBhcmUKKworICAgICAgICAgKD8oY29uZGl0aW9uKXllcy1wYXR0ZXJuKQorICAgICAgICAgKD8oY29uZGl0aW9uKXllcy1wYXR0ZXJufG5vLXBhdHRlcm4pCisKKyAgICAgICBJZiB0aGUgY29uZGl0aW9uIGlzIHNhdGlzZmllZCwgdGhlIHllcy1wYXR0ZXJuIGlzIHVzZWQ7ICBvdGhlcndpc2UgIHRoZQorICAgICAgIG5vLXBhdHRlcm4gIChpZiAgcHJlc2VudCkgIGlzIHVzZWQuIElmIHRoZXJlIGFyZSBtb3JlIHRoYW4gdHdvIGFsdGVybmEtCisgICAgICAgdGl2ZXMgaW4gdGhlIHN1YnBhdHRlcm4sIGEgY29tcGlsZS10aW1lIGVycm9yIG9jY3Vycy4KKworICAgICAgIFRoZXJlIGFyZSB0aHJlZSBraW5kcyBvZiBjb25kaXRpb24uIElmIHRoZSB0ZXh0IGJldHdlZW4gdGhlIHBhcmVudGhlc2VzCisgICAgICAgY29uc2lzdHMgIG9mICBhICBzZXF1ZW5jZSAgb2YgZGlnaXRzLCB0aGUgY29uZGl0aW9uIGlzIHNhdGlzZmllZCBpZiB0aGUKKyAgICAgICBjYXB0dXJpbmcgc3VicGF0dGVybiBvZiB0aGF0IG51bWJlciBoYXMgcHJldmlvdXNseSBtYXRjaGVkLiBUaGUgIG51bWJlcgorICAgICAgIG11c3QgIGJlICBncmVhdGVyIHRoYW4gemVyby4gQ29uc2lkZXIgdGhlIGZvbGxvd2luZyBwYXR0ZXJuLCB3aGljaCBjb24tCisgICAgICAgdGFpbnMgbm9uLXNpZ25pZmljYW50IHdoaXRlIHNwYWNlIHRvIG1ha2UgaXQgbW9yZSByZWFkYWJsZSAoYXNzdW1lICB0aGUKKyAgICAgICBQQ1JFX0VYVEVOREVEICBvcHRpb24pICBhbmQgIHRvICBkaXZpZGUgaXQgaW50byB0aHJlZSBwYXJ0cyBmb3IgZWFzZSBvZgorICAgICAgIGRpc2N1c3Npb246CisKKyAgICAgICAgICggXCggKT8gICAgW14oKV0rICAgICg/KDEpIFwpICkKKworICAgICAgIFRoZSBmaXJzdCBwYXJ0IG1hdGNoZXMgYW4gb3B0aW9uYWwgb3BlbmluZyAgcGFyZW50aGVzaXMsICBhbmQgIGlmICB0aGF0CisgICAgICAgY2hhcmFjdGVyIGlzIHByZXNlbnQsIHNldHMgaXQgYXMgdGhlIGZpcnN0IGNhcHR1cmVkIHN1YnN0cmluZy4gVGhlIHNlYy0KKyAgICAgICBvbmQgcGFydCBtYXRjaGVzIG9uZSBvciBtb3JlIGNoYXJhY3RlcnMgdGhhdCBhcmUgbm90ICBwYXJlbnRoZXNlcy4gIFRoZQorICAgICAgIHRoaXJkIHBhcnQgaXMgYSBjb25kaXRpb25hbCBzdWJwYXR0ZXJuIHRoYXQgdGVzdHMgd2hldGhlciB0aGUgZmlyc3Qgc2V0CisgICAgICAgb2YgcGFyZW50aGVzZXMgbWF0Y2hlZCBvciBub3QuIElmIHRoZXkgZGlkLCB0aGF0IGlzLCBpZiBzdWJqZWN0IHN0YXJ0ZWQKKyAgICAgICB3aXRoIGFuIG9wZW5pbmcgcGFyZW50aGVzaXMsIHRoZSBjb25kaXRpb24gaXMgdHJ1ZSwgYW5kIHNvIHRoZSB5ZXMtcGF0LQorICAgICAgIHRlcm4gaXMgZXhlY3V0ZWQgYW5kIGEgIGNsb3NpbmcgIHBhcmVudGhlc2lzICBpcyAgcmVxdWlyZWQuICBPdGhlcndpc2UsCisgICAgICAgc2luY2UgIG5vLXBhdHRlcm4gIGlzICBub3QgIHByZXNlbnQsIHRoZSBzdWJwYXR0ZXJuIG1hdGNoZXMgbm90aGluZy4gSW4KKyAgICAgICBvdGhlciB3b3JkcywgIHRoaXMgIHBhdHRlcm4gIG1hdGNoZXMgIGEgIHNlcXVlbmNlICBvZiAgbm9uLXBhcmVudGhlc2VzLAorICAgICAgIG9wdGlvbmFsbHkgZW5jbG9zZWQgaW4gcGFyZW50aGVzZXMuCisKKyAgICAgICBJZiB0aGUgY29uZGl0aW9uIGlzIHRoZSBzdHJpbmcgKFIpLCBpdCBpcyBzYXRpc2ZpZWQgaWYgYSByZWN1cnNpdmUgY2FsbAorICAgICAgIHRvIHRoZSBwYXR0ZXJuIG9yIHN1YnBhdHRlcm4gaGFzIGJlZW4gbWFkZS4gQXQgInRvcCBsZXZlbCIsIHRoZSAgY29uZGktCisgICAgICAgdGlvbiAgaXMgIGZhbHNlLiAgIFRoaXMgIGlzICBhICBQQ1JFICBleHRlbnNpb24uIFJlY3Vyc2l2ZSBwYXR0ZXJucyBhcmUKKyAgICAgICBkZXNjcmliZWQgaW4gdGhlIG5leHQgc2VjdGlvbi4KKworICAgICAgIElmIHRoZSBjb25kaXRpb24gaXMgbm90IGEgc2VxdWVuY2Ugb2YgZGlnaXRzIG9yICAoUiksICBpdCAgbXVzdCAgYmUgIGFuCisgICAgICAgYXNzZXJ0aW9uLiAgIFRoaXMgbWF5IGJlIGEgcG9zaXRpdmUgb3IgbmVnYXRpdmUgbG9va2FoZWFkIG9yIGxvb2tiZWhpbmQKKyAgICAgICBhc3NlcnRpb24uIENvbnNpZGVyICB0aGlzICBwYXR0ZXJuLCAgYWdhaW4gIGNvbnRhaW5pbmcgIG5vbi1zaWduaWZpY2FudAorICAgICAgIHdoaXRlIHNwYWNlLCBhbmQgd2l0aCB0aGUgdHdvIGFsdGVybmF0aXZlcyBvbiB0aGUgc2Vjb25kIGxpbmU6CisKKyAgICAgICAgICg/KD89W15hLXpdKlthLXpdKQorICAgICAgICAgXGR7Mn0tW2Etel17M30tXGR7Mn0gIHwgIFxkezJ9LVxkezJ9LVxkezJ9ICkKKworICAgICAgIFRoZSAgY29uZGl0aW9uICBpcyAgYSAgcG9zaXRpdmUgIGxvb2thaGVhZCAgYXNzZXJ0aW9uICB0aGF0ICBtYXRjaGVzIGFuCisgICAgICAgb3B0aW9uYWwgc2VxdWVuY2Ugb2Ygbm9uLWxldHRlcnMgZm9sbG93ZWQgYnkgYSBsZXR0ZXIuIEluIG90aGVyICB3b3JkcywKKyAgICAgICBpdCAgdGVzdHMgIGZvciB0aGUgcHJlc2VuY2Ugb2YgYXQgbGVhc3Qgb25lIGxldHRlciBpbiB0aGUgc3ViamVjdC4gSWYgYQorICAgICAgIGxldHRlciBpcyBmb3VuZCwgdGhlIHN1YmplY3QgaXMgbWF0Y2hlZCBhZ2FpbnN0IHRoZSBmaXJzdCAgYWx0ZXJuYXRpdmU7CisgICAgICAgb3RoZXJ3aXNlICBpdCAgaXMgIG1hdGNoZWQgIGFnYWluc3QgIHRoZSAgc2Vjb25kLiAgVGhpcyBwYXR0ZXJuIG1hdGNoZXMKKyAgICAgICBzdHJpbmdzIGluIG9uZSBvZiB0aGUgdHdvIGZvcm1zIGRkLWFhYS1kZCBvciBkZC1kZC1kZCwgIHdoZXJlICBhYWEgIGFyZQorICAgICAgIGxldHRlcnMgYW5kIGRkIGFyZSBkaWdpdHMuCisKKworQ09NTUVOVFMKKworICAgICAgIFRoZSBzZXF1ZW5jZSAoPyMgbWFya3MgdGhlIHN0YXJ0IG9mIGEgY29tbWVudCB3aGljaCBjb250aW51ZXMgdXAgdG8gdGhlCisgICAgICAgbmV4dCBjbG9zaW5nIHBhcmVudGhlc2lzLiBOZXN0ZWQgcGFyZW50aGVzZXMgIGFyZSAgbm90ICBwZXJtaXR0ZWQuICBUaGUKKyAgICAgICBjaGFyYWN0ZXJzICB0aGF0IG1ha2UgdXAgYSBjb21tZW50IHBsYXkgbm8gcGFydCBpbiB0aGUgcGF0dGVybiBtYXRjaGluZworICAgICAgIGF0IGFsbC4KKworICAgICAgIElmIHRoZSBQQ1JFX0VYVEVOREVEIG9wdGlvbiBpcyBzZXQsIGFuIHVuZXNjYXBlZCAjIGNoYXJhY3RlciBvdXRzaWRlICBhCisgICAgICAgY2hhcmFjdGVyIGNsYXNzIGludHJvZHVjZXMgYSBjb21tZW50IHRoYXQgY29udGludWVzIHVwIHRvIHRoZSBuZXh0IG5ldy0KKyAgICAgICBsaW5lIGNoYXJhY3RlciBpbiB0aGUgcGF0dGVybi4KKworCitSRUNVUlNJVkUgUEFUVEVSTlMKKworICAgICAgIENvbnNpZGVyIHRoZSBwcm9ibGVtIG9mIG1hdGNoaW5nIGEgc3RyaW5nIGluIHBhcmVudGhlc2VzLCBhbGxvd2luZyAgZm9yCisgICAgICAgdW5saW1pdGVkICBuZXN0ZWQgIHBhcmVudGhlc2VzLiAgV2l0aG91dCB0aGUgdXNlIG9mIHJlY3Vyc2lvbiwgdGhlIGJlc3QKKyAgICAgICB0aGF0IGNhbiBiZSBkb25lIGlzIHRvIHVzZSBhIHBhdHRlcm4gdGhhdCAgbWF0Y2hlcyAgdXAgIHRvICBzb21lICBmaXhlZAorICAgICAgIGRlcHRoICBvZiAgbmVzdGluZy4gIEl0ICBpcyBub3QgcG9zc2libGUgdG8gaGFuZGxlIGFuIGFyYml0cmFyeSBuZXN0aW5nCisgICAgICAgZGVwdGguIFBlcmwgaGFzIHByb3ZpZGVkIGFuIGV4cGVyaW1lbnRhbCBmYWNpbGl0eSB0aGF0ICBhbGxvd3MgIHJlZ3VsYXIKKyAgICAgICBleHByZXNzaW9ucyB0byByZWN1cnNlIChhbW9uZ3N0IG90aGVyIHRoaW5ncykuIEl0IGRvZXMgdGhpcyBieSBpbnRlcnBvLQorICAgICAgIGxhdGluZyBQZXJsIGNvZGUgaW4gdGhlIGV4cHJlc3Npb24gYXQgcnVuIHRpbWUsIGFuZCB0aGUgY29kZSBjYW4gIHJlZmVyCisgICAgICAgdG8gdGhlIGV4cHJlc3Npb24gaXRzZWxmLiBBIFBlcmwgcGF0dGVybiB0byBzb2x2ZSB0aGUgcGFyZW50aGVzZXMgcHJvYi0KKyAgICAgICBsZW0gY2FuIGJlIGNyZWF0ZWQgbGlrZSB0aGlzOgorCisgICAgICAgICAkcmUgPSBxcntcKCAoPzogKD8+W14oKV0rKSB8ICg/cHskcmV9KSApKiBcKX14OworCisgICAgICAgVGhlICg/cHsuLi59KSBpdGVtIGludGVycG9sYXRlcyBQZXJsIGNvZGUgYXQgcnVuIHRpbWUsIGFuZCBpbiB0aGlzIGNhc2UKKyAgICAgICByZWZlcnMgIHJlY3Vyc2l2ZWx5IHRvIHRoZSBwYXR0ZXJuIGluIHdoaWNoIGl0IGFwcGVhcnMuIE9idmlvdXNseSwgUENSRQorICAgICAgIGNhbm5vdCBzdXBwb3J0IHRoZSBpbnRlcnBvbGF0aW9uIG9mIFBlcmwgIGNvZGUuICBJbnN0ZWFkLCAgaXQgIHN1cHBvcnRzCisgICAgICAgc29tZSAgc3BlY2lhbCAgc3ludGF4IGZvciByZWN1cnNpb24gb2YgdGhlIGVudGlyZSBwYXR0ZXJuLCBhbmQgYWxzbyBmb3IKKyAgICAgICBpbmRpdmlkdWFsIHN1YnBhdHRlcm4gcmVjdXJzaW9uLgorCisgICAgICAgVGhlIHNwZWNpYWwgaXRlbSB0aGF0IGNvbnNpc3RzIG9mICg/IGZvbGxvd2VkIGJ5IGEgbnVtYmVyIGdyZWF0ZXIgIHRoYW4KKyAgICAgICB6ZXJvIGFuZCBhIGNsb3NpbmcgcGFyZW50aGVzaXMgaXMgYSByZWN1cnNpdmUgY2FsbCBvZiB0aGUgc3VicGF0dGVybiBvZgorICAgICAgIHRoZSBnaXZlbiBudW1iZXIsIHByb3ZpZGVkIHRoYXQgaXQgb2NjdXJzIGluc2lkZSB0aGF0ICBzdWJwYXR0ZXJuLiAgKElmCisgICAgICAgbm90LCAgaXQgIGlzICBhICAic3Vicm91dGluZSIgY2FsbCwgd2hpY2ggaXMgZGVzY3JpYmVkIGluIHRoZSBuZXh0IHNlYy0KKyAgICAgICB0aW9uLikgVGhlIHNwZWNpYWwgaXRlbSAoP1IpIGlzIGEgcmVjdXJzaXZlIGNhbGwgb2YgdGhlIGVudGlyZSAgcmVndWxhcgorICAgICAgIGV4cHJlc3Npb24uCisKKyAgICAgICBGb3IgIGV4YW1wbGUsICB0aGlzICBQQ1JFIHBhdHRlcm4gc29sdmVzIHRoZSBuZXN0ZWQgcGFyZW50aGVzZXMgcHJvYmxlbQorICAgICAgIChhc3N1bWUgdGhlICBQQ1JFX0VYVEVOREVEICBvcHRpb24gIGlzICBzZXQgIHNvICB0aGF0ICB3aGl0ZSAgc3BhY2UgIGlzCisgICAgICAgaWdub3JlZCk6CisKKyAgICAgICAgIFwoICggKD8+W14oKV0rKSB8ICg/UikgKSogXCkKKworICAgICAgIEZpcnN0ICBpdCBtYXRjaGVzIGFuIG9wZW5pbmcgcGFyZW50aGVzaXMuIFRoZW4gaXQgbWF0Y2hlcyBhbnkgbnVtYmVyIG9mCisgICAgICAgc3Vic3RyaW5ncyB3aGljaCBjYW4gZWl0aGVyIGJlIGEgIHNlcXVlbmNlICBvZiAgbm9uLXBhcmVudGhlc2VzLCAgb3IgIGEKKyAgICAgICByZWN1cnNpdmUgIG1hdGNoICBvZiAgdGhlIHBhdHRlcm4gaXRzZWxmICh0aGF0IGlzIGEgY29ycmVjdGx5IHBhcmVudGhlLQorICAgICAgIHNpemVkIHN1YnN0cmluZykuICBGaW5hbGx5IHRoZXJlIGlzIGEgY2xvc2luZyBwYXJlbnRoZXNpcy4KKworICAgICAgIElmIHRoaXMgd2VyZSBwYXJ0IG9mIGEgbGFyZ2VyIHBhdHRlcm4sIHlvdSB3b3VsZCBub3QgIHdhbnQgIHRvICByZWN1cnNlCisgICAgICAgdGhlIGVudGlyZSBwYXR0ZXJuLCBzbyBpbnN0ZWFkIHlvdSBjb3VsZCB1c2UgdGhpczoKKworICAgICAgICAgKCBcKCAoICg/PlteKCldKykgfCAoPzEpICkqIFwpICkKKworICAgICAgIFdlICBoYXZlICBwdXQgdGhlIHBhdHRlcm4gaW50byBwYXJlbnRoZXNlcywgYW5kIGNhdXNlZCB0aGUgcmVjdXJzaW9uIHRvCisgICAgICAgcmVmZXIgdG8gdGhlbSBpbnN0ZWFkIG9mIHRoZSB3aG9sZSBwYXR0ZXJuLiBJbiBhIGxhcmdlciBwYXR0ZXJuLCAga2VlcC0KKyAgICAgICBpbmcgIHRyYWNrICBvZiBwYXJlbnRoZXNpcyBudW1iZXJzIGNhbiBiZSB0cmlja3kuIEl0IG1heSBiZSBtb3JlIGNvbnZlLQorICAgICAgIG5pZW50IHRvIHVzZSBuYW1lZCBwYXJlbnRoZXNlcyBpbnN0ZWFkLiBGb3IgdGhpcywgUENSRSB1c2VzICAoP1A+bmFtZSksCisgICAgICAgd2hpY2ggIGlzICBhbiAgZXh0ZW5zaW9uICB0byB0aGUgUHl0aG9uIHN5bnRheCB0aGF0IFBDUkUgdXNlcyBmb3IgbmFtZWQKKyAgICAgICBwYXJlbnRoZXNlcyAoUGVybCBkb2VzIG5vdCBwcm92aWRlIG5hbWVkIHBhcmVudGhlc2VzKS4gV2UgY291bGQgcmV3cml0ZQorICAgICAgIHRoZSBhYm92ZSBleGFtcGxlIGFzIGZvbGxvd3M6CisKKyAgICAgICAgICg/UDxwbj4gXCggKCAoPz5bXigpXSspIHwgKD9QPnBuKSApKiBcKSApCisKKyAgICAgICBUaGlzICBwYXJ0aWN1bGFyIGV4YW1wbGUgcGF0dGVybiBjb250YWlucyBuZXN0ZWQgdW5saW1pdGVkIHJlcGVhdHMsIGFuZAorICAgICAgIHNvIHRoZSB1c2Ugb2YgYXRvbWljIGdyb3VwaW5nIGZvciBtYXRjaGluZyBzdHJpbmdzICBvZiAgbm9uLXBhcmVudGhlc2VzCisgICAgICAgaXMgIGltcG9ydGFudCAgd2hlbiAgYXBwbHlpbmcgdGhlIHBhdHRlcm4gdG8gc3RyaW5ncyB0aGF0IGRvIG5vdCBtYXRjaC4KKyAgICAgICBGb3IgZXhhbXBsZSwgd2hlbiB0aGlzIHBhdHRlcm4gaXMgYXBwbGllZCB0bworCisgICAgICAgICAoYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWEoKQorCisgICAgICAgaXQgeWllbGRzICJubyBtYXRjaCIgcXVpY2tseS4gSG93ZXZlciwgaWYgYXRvbWljIGdyb3VwaW5nIGlzIG5vdCAgdXNlZCwKKyAgICAgICB0aGUgIG1hdGNoICBydW5zICBmb3IgYSB2ZXJ5IGxvbmcgdGltZSBpbmRlZWQgYmVjYXVzZSB0aGVyZSBhcmUgc28gbWFueQorICAgICAgIGRpZmZlcmVudCB3YXlzIHRoZSArIGFuZCAqIHJlcGVhdHMgY2FuIGNhcnZlIHVwIHRoZSAgc3ViamVjdCwgIGFuZCAgYWxsCisgICAgICAgaGF2ZSB0byBiZSB0ZXN0ZWQgYmVmb3JlIGZhaWx1cmUgY2FuIGJlIHJlcG9ydGVkLgorCisgICAgICAgQXQgdGhlIGVuZCBvZiBhIG1hdGNoLCB0aGUgdmFsdWVzIHNldCBmb3IgYW55IGNhcHR1cmluZyBzdWJwYXR0ZXJucyBhcmUKKyAgICAgICB0aG9zZSBmcm9tIHRoZSBvdXRlcm1vc3QgbGV2ZWwgb2YgdGhlIHJlY3Vyc2lvbiBhdCB3aGljaCB0aGUgc3VicGF0dGVybgorICAgICAgIHZhbHVlICBpcyAgc2V0LiAgIElmICB5b3Ugd2FudCB0byBvYnRhaW4gaW50ZXJtZWRpYXRlIHZhbHVlcywgYSBjYWxsb3V0CisgICAgICAgZnVuY3Rpb24gY2FuIGJlIHVzZWQgKHNlZSBiZWxvdyBhbmQgdGhlIHBjcmVjYWxsb3V0IGRvY3VtZW50YXRpb24pLiAgSWYKKyAgICAgICB0aGUgcGF0dGVybiBhYm92ZSBpcyBtYXRjaGVkIGFnYWluc3QKKworICAgICAgICAgKGFiKGNkKWVmKQorCisgICAgICAgdGhlICB2YWx1ZSAgZm9yICB0aGUgIGNhcHR1cmluZyAgcGFyZW50aGVzZXMgaXMgImVmIiwgd2hpY2ggaXMgdGhlIGxhc3QKKyAgICAgICB2YWx1ZSB0YWtlbiBvbiBhdCB0aGUgdG9wIGxldmVsLiBJZiBhZGRpdGlvbmFsIHBhcmVudGhlc2VzICBhcmUgIGFkZGVkLAorICAgICAgIGdpdmluZworCisgICAgICAgICBcKCAoICggKD8+W14oKV0rKSB8ICg/UikgKSogKSBcKQorICAgICAgICAgICAgXiAgICAgICAgICAgICAgICAgICAgICAgIF4KKyAgICAgICAgICAgIF4gICAgICAgICAgICAgICAgICAgICAgICBeCisKKyAgICAgICB0aGUgIHN0cmluZyAgdGhleSAgY2FwdHVyZSBpcyAiYWIoY2QpZWYiLCB0aGUgY29udGVudHMgb2YgdGhlIHRvcCBsZXZlbAorICAgICAgIHBhcmVudGhlc2VzLiBJZiB0aGVyZSBhcmUgbW9yZSB0aGFuIDE1IGNhcHR1cmluZyBwYXJlbnRoZXNlcyBpbiBhICBwYXQtCisgICAgICAgdGVybiwgUENSRSBoYXMgdG8gb2J0YWluIGV4dHJhIG1lbW9yeSB0byBzdG9yZSBkYXRhIGR1cmluZyBhIHJlY3Vyc2lvbiwKKyAgICAgICB3aGljaCBpdCBkb2VzIGJ5IHVzaW5nIHBjcmVfbWFsbG9jLCBmcmVlaW5nICBpdCAgdmlhICBwY3JlX2ZyZWUgIGFmdGVyLQorICAgICAgIHdhcmRzLiAgSWYgIG5vICBtZW1vcnkgIGNhbiAgYmUgIG9idGFpbmVkLCAgdGhlICBtYXRjaCAgZmFpbHMgIHdpdGggdGhlCisgICAgICAgUENSRV9FUlJPUl9OT01FTU9SWSBlcnJvci4KKworICAgICAgIERvIG5vdCBjb25mdXNlIHRoZSAoP1IpIGl0ZW0gd2l0aCB0aGUgY29uZGl0aW9uIChSKSwgIHdoaWNoICB0ZXN0cyAgZm9yCisgICAgICAgcmVjdXJzaW9uLiAgIENvbnNpZGVyICB0aGlzIHBhdHRlcm4sIHdoaWNoIG1hdGNoZXMgdGV4dCBpbiBhbmdsZSBicmFjay0KKyAgICAgICBldHMsIGFsbG93aW5nIGZvciBhcmJpdHJhcnkgbmVzdGluZy4gT25seSBkaWdpdHMgYXJlIGFsbG93ZWQgaW4gIG5lc3RlZAorICAgICAgIGJyYWNrZXRzICAodGhhdCBpcywgd2hlbiByZWN1cnNpbmcpLCB3aGVyZWFzIGFueSBjaGFyYWN0ZXJzIGFyZSBwZXJtaXQtCisgICAgICAgdGVkIGF0IHRoZSBvdXRlciBsZXZlbC4KKworICAgICAgICAgPCAoPzogKD8oUikgXGQrKyAgfCBbXjw+XSorKSB8ICg/UikpICogPgorCisgICAgICAgSW4gdGhpcyBwYXR0ZXJuLCAoPyhSKSBpcyB0aGUgc3RhcnQgb2YgYSBjb25kaXRpb25hbCAgc3VicGF0dGVybiwgIHdpdGgKKyAgICAgICB0d28gIGRpZmZlcmVudCAgYWx0ZXJuYXRpdmVzIGZvciB0aGUgcmVjdXJzaXZlIGFuZCBub24tcmVjdXJzaXZlIGNhc2VzLgorICAgICAgIFRoZSAoP1IpIGl0ZW0gaXMgdGhlIGFjdHVhbCByZWN1cnNpdmUgY2FsbC4KKworCitTVUJQQVRURVJOUyBBUyBTVUJST1VUSU5FUworCisgICAgICAgSWYgdGhlIHN5bnRheCBmb3IgYSByZWN1cnNpdmUgc3VicGF0dGVybiByZWZlcmVuY2UgKGVpdGhlciBieSBudW1iZXIgb3IKKyAgICAgICBieSAgbmFtZSkgIGlzIHVzZWQgb3V0c2lkZSB0aGUgcGFyZW50aGVzZXMgdG8gd2hpY2ggaXQgcmVmZXJzLCBpdCBvcGVyLQorICAgICAgIGF0ZXMgbGlrZSBhIHN1YnJvdXRpbmUgaW4gYSBwcm9ncmFtbWluZyBsYW5ndWFnZS4gIEFuICBlYXJsaWVyICBleGFtcGxlCisgICAgICAgcG9pbnRlZCBvdXQgdGhhdCB0aGUgcGF0dGVybgorCisgICAgICAgICAoc2Vuc3xyZXNwb25zKWUgYW5kIFwxaWJpbGl0eQorCisgICAgICAgbWF0Y2hlcyAgInNlbnNlIGFuZCBzZW5zaWJpbGl0eSIgYW5kICJyZXNwb25zZSBhbmQgcmVzcG9uc2liaWxpdHkiLCBidXQKKyAgICAgICBub3QgInNlbnNlIGFuZCByZXNwb25zaWJpbGl0eSIuIElmIGluc3RlYWQgdGhlIHBhdHRlcm4KKworICAgICAgICAgKHNlbnN8cmVzcG9ucyllIGFuZCAoPzEpaWJpbGl0eQorCisgICAgICAgaXMgdXNlZCwgaXQgZG9lcyBtYXRjaCAic2Vuc2UgYW5kIHJlc3BvbnNpYmlsaXR5IiBhcyB3ZWxsIGFzIHRoZSAgb3RoZXIKKyAgICAgICB0d28gIHN0cmluZ3MuICBTdWNoICByZWZlcmVuY2VzIG11c3QsIGhvd2V2ZXIsIGZvbGxvdyB0aGUgc3VicGF0dGVybiB0bworICAgICAgIHdoaWNoIHRoZXkgcmVmZXIuCisKKworQ0FMTE9VVFMKKworICAgICAgIFBlcmwgaGFzIGEgZmVhdHVyZSB3aGVyZWJ5IHVzaW5nIHRoZSBzZXF1ZW5jZSAoP3suLi59KSBjYXVzZXMgYXJiaXRyYXJ5CisgICAgICAgUGVybCAgY29kZSB0byBiZSBvYmV5ZWQgaW4gdGhlIG1pZGRsZSBvZiBtYXRjaGluZyBhIHJlZ3VsYXIgZXhwcmVzc2lvbi4KKyAgICAgICBUaGlzIG1ha2VzIGl0IHBvc3NpYmxlLCBhbW9uZ3N0IG90aGVyIHRoaW5ncywgdG8gZXh0cmFjdCBkaWZmZXJlbnQgc3ViLQorICAgICAgIHN0cmluZ3MgdGhhdCBtYXRjaCB0aGUgc2FtZSBwYWlyIG9mIHBhcmVudGhlc2VzIHdoZW4gdGhlcmUgaXMgYSByZXBldGktCisgICAgICAgdGlvbi4KKworICAgICAgIFBDUkUgcHJvdmlkZXMgYSBzaW1pbGFyIGZlYXR1cmUsIGJ1dCBvZiBjb3Vyc2UgaXQgY2Fubm90IG9iZXkgYXJiaXRyYXJ5CisgICAgICAgUGVybCBjb2RlLiBUaGUgZmVhdHVyZSBpcyBjYWxsZWQgImNhbGxvdXQiLiBUaGUgY2FsbGVyIG9mIFBDUkUgcHJvdmlkZXMKKyAgICAgICBhbiBleHRlcm5hbCBmdW5jdGlvbiBieSBwdXR0aW5nIGl0cyBlbnRyeSBwb2ludCBpbiB0aGUgZ2xvYmFsICB2YXJpYWJsZQorICAgICAgIHBjcmVfY2FsbG91dC4gICBCeSBkZWZhdWx0LCB0aGlzIHZhcmlhYmxlIGNvbnRhaW5zIE5VTEwsIHdoaWNoIGRpc2FibGVzCisgICAgICAgYWxsIGNhbGxpbmcgb3V0LgorCisgICAgICAgV2l0aGluIGEgcmVndWxhciBleHByZXNzaW9uLCAoP0MpIGluZGljYXRlcyB0aGUgIHBvaW50cyAgYXQgIHdoaWNoICB0aGUKKyAgICAgICBleHRlcm5hbCAgZnVuY3Rpb24gIGlzICB0byBiZSBjYWxsZWQuIElmIHlvdSB3YW50IHRvIGlkZW50aWZ5IGRpZmZlcmVudAorICAgICAgIGNhbGxvdXQgcG9pbnRzLCB5b3UgY2FuIHB1dCBhIG51bWJlciBsZXNzIHRoYW4gMjU2IGFmdGVyIHRoZSBsZXR0ZXIgIEMuCisgICAgICAgVGhlICBkZWZhdWx0ICB2YWx1ZSBpcyB6ZXJvLiAgRm9yIGV4YW1wbGUsIHRoaXMgcGF0dGVybiBoYXMgdHdvIGNhbGxvdXQKKyAgICAgICBwb2ludHM6CisKKyAgICAgICAgICg/QzEpYWJjKD9DMilkZWYKKworICAgICAgIER1cmluZyBtYXRjaGluZywgd2hlbiBQQ1JFIHJlYWNoZXMgYSBjYWxsb3V0IHBvaW50IChhbmQgcGNyZV9jYWxsb3V0IGlzCisgICAgICAgc2V0KSwgIHRoZSAgZXh0ZXJuYWwgZnVuY3Rpb24gaXMgY2FsbGVkLiBJdCBpcyBwcm92aWRlZCB3aXRoIHRoZSBudW1iZXIKKyAgICAgICBvZiB0aGUgY2FsbG91dCwgYW5kLCBvcHRpb25hbGx5LCBvbmUgaXRlbSBvZiBkYXRhICBvcmlnaW5hbGx5ICBzdXBwbGllZAorICAgICAgIGJ5ICB0aGUgIGNhbGxlciBvZiBwY3JlX2V4ZWMoKS4gVGhlIGNhbGxvdXQgZnVuY3Rpb24gbWF5IGNhdXNlIG1hdGNoaW5nCisgICAgICAgdG8gYmFja3RyYWNrLCBvciB0byBmYWlsIGFsdG9nZXRoZXIuICBBICBjb21wbGV0ZSAgZGVzY3JpcHRpb24gIG9mICB0aGUKKyAgICAgICBpbnRlcmZhY2UgIHRvIHRoZSBjYWxsb3V0IGZ1bmN0aW9uIGlzIGdpdmVuIGluIHRoZSBwY3JlY2FsbG91dCBkb2N1bWVuLQorICAgICAgIHRhdGlvbi4KKworCitESUZGRVJFTkNFUyBGUk9NIFBFUkwKKyAgICAgICBUaGlzIHNlY3Rpb24gZXNjcmliZXMgdGhlIGRpZmZlcmVuY2VzIGluIHRoZSB3YXlzIHRoYXQgUENSRSBhbmQgUGVybAorICAgICAgIGhhbmRsZSByZWd1bGFyIGV4cHJlc3Npb25zLiBUaGUgZGlmZmVyZW5jZXMgIGRlc2NyaWJlZCAgaGVyZSAgYXJlICB3aXRoCisgICAgICAgcmVzcGVjdCB0byBQZXJsIDUuOC4KKworICAgICAgIDEuICBQQ1JFIGRvZXMgbm90IGhhdmUgZnVsbCBVVEYtOCBzdXBwb3J0LiBEZXRhaWxzIG9mIHdoYXQgaXQgZG9lcyBoYXZlCisgICAgICAgYXJlIGdpdmVuIGluIHRoZSBzZWN0aW9uIG9uIFVURi04IHN1cHBvcnQgaW4gdGhlIG1haW4gcGNyZSBwYWdlLgorCisgICAgICAgMi4gUENSRSBkb2VzIG5vdCBhbGxvdyByZXBlYXQgcXVhbnRpZmllcnMgb24gbG9va2FoZWFkIGFzc2VydGlvbnMuIFBlcmwKKyAgICAgICBwZXJtaXRzICB0aGVtLCAgYnV0IHRoZXkgZG8gbm90IG1lYW4gd2hhdCB5b3UgbWlnaHQgdGhpbmsuIEZvciBleGFtcGxlLAorICAgICAgICg/IWEpezN9IGRvZXMgbm90IGFzc2VydCB0aGF0IHRoZSBuZXh0IHRocmVlIGNoYXJhY3RlcnMgYXJlIG5vdCAiYSIuIEl0CisgICAgICAganVzdCBhc3NlcnRzIHRoYXQgdGhlIG5leHQgY2hhcmFjdGVyIGlzIG5vdCAiYSIgdGhyZWUgdGltZXMuCisKKyAgICAgICAzLiAgQ2FwdHVyaW5nICBzdWJwYXR0ZXJucyAgdGhhdCBvY2N1ciBpbnNpZGUgbmVnYXRpdmUgbG9va2FoZWFkIGFzc2VyLQorICAgICAgIHRpb25zIGFyZSBjb3VudGVkLCBidXQgdGhlaXIgZW50cmllcyBpbiB0aGUgb2Zmc2V0cyAgdmVjdG9yICBhcmUgIG5ldmVyCisgICAgICAgc2V0LiAgUGVybCBzZXRzIGl0cyBudW1lcmljYWwgdmFyaWFibGVzIGZyb20gYW55IHN1Y2ggcGF0dGVybnMgdGhhdCBhcmUKKyAgICAgICBtYXRjaGVkIGJlZm9yZSB0aGUgYXNzZXJ0aW9uIGZhaWxzIHRvIG1hdGNoIHNvbWV0aGluZyAodGhlcmVieSBzdWNjZWVkLQorICAgICAgIGluZyksICBidXQgIG9ubHkgIGlmIHRoZSBuZWdhdGl2ZSBsb29rYWhlYWQgYXNzZXJ0aW9uIGNvbnRhaW5zIGp1c3Qgb25lCisgICAgICAgYnJhbmNoLgorCisgICAgICAgNC4gVGhvdWdoIGJpbmFyeSB6ZXJvIGNoYXJhY3RlcnMgYXJlIHN1cHBvcnRlZCBpbiB0aGUgIHN1YmplY3QgIHN0cmluZywKKyAgICAgICB0aGV5IGFyZSBub3QgYWxsb3dlZCBpbiBhIHBhdHRlcm4gc3RyaW5nIGJlY2F1c2UgaXQgaXMgcGFzc2VkIGFzIGEgbm9yLQorICAgICAgIG1hbCBDIHN0cmluZywgdGVybWluYXRlZCBieSB6ZXJvLiBUaGUgZXNjYXBlIHNlcXVlbmNlICJcMCIgY2FuIGJlICB1c2VkCisgICAgICAgaW4gdGhlIHBhdHRlcm4gdG8gcmVwcmVzZW50IGEgYmluYXJ5IHplcm8uCisKKyAgICAgICA1LiAgVGhlICBmb2xsb3dpbmcgUGVybCBlc2NhcGUgc2VxdWVuY2VzIGFyZSBub3Qgc3VwcG9ydGVkOiBcbCwgXHUsIFxMLAorICAgICAgIFxVLCBcUCwgXHAsIFxOLCBhbmQgXFguIEluIGZhY3QgdGhlc2UgYXJlIGltcGxlbWVudGVkIGJ5IFBlcmwncyBnZW5lcmFsCisgICAgICAgc3RyaW5nLWhhbmRsaW5nIGFuZCBhcmUgbm90IHBhcnQgb2YgaXRzIHBhdHRlcm4gbWF0Y2hpbmcgZW5naW5lLiBJZiBhbnkKKyAgICAgICBvZiB0aGVzZSBhcmUgZW5jb3VudGVyZWQgYnkgUENSRSwgYW4gZXJyb3IgaXMgZ2VuZXJhdGVkLgorCisgICAgICAgNi4gUENSRSBkb2VzIHN1cHBvcnQgdGhlIFxRLi4uXEUgZXNjYXBlIGZvciBxdW90aW5nIHN1YnN0cmluZ3MuIENoYXJhYy0KKyAgICAgICB0ZXJzICBpbiAgYmV0d2VlbiAgYXJlICB0cmVhdGVkIGFzIGxpdGVyYWxzLiBUaGlzIGlzIHNsaWdodGx5IGRpZmZlcmVudAorICAgICAgIGZyb20gUGVybCBpbiB0aGF0ICQgYW5kIEAgYXJlICBhbHNvICBoYW5kbGVkICBhcyAgbGl0ZXJhbHMgIGluc2lkZSAgdGhlCisgICAgICAgcXVvdGVzLiAgSW4gUGVybCwgdGhleSBjYXVzZSB2YXJpYWJsZSBpbnRlcnBvbGF0aW9uIChidXQgb2YgY291cnNlIFBDUkUKKyAgICAgICBkb2VzIG5vdCBoYXZlIHZhcmlhYmxlcykuIE5vdGUgdGhlIGZvbGxvd2luZyBleGFtcGxlczoKKworICAgICAgICAgICBQYXR0ZXJuICAgICAgICAgICAgUENSRSBtYXRjaGVzICAgICAgUGVybCBtYXRjaGVzCisKKyAgICAgICAgICAgXFFhYmMkeHl6XEUgICAgICAgIGFiYyR4eXogICAgICAgICAgIGFiYyBmb2xsb3dlZCBieSB0aGUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29udGVudHMgb2YgJHh5egorICAgICAgICAgICBcUWFiY1wkeHl6XEUgICAgICAgYWJjXCR4eXogICAgICAgICAgYWJjXCR4eXoKKyAgICAgICAgICAgXFFhYmNcRVwkXFF4eXpcRSAgIGFiYyR4eXogICAgICAgICAgIGFiYyR4eXoKKworICAgICAgIFRoZSBcUS4uLlxFIHNlcXVlbmNlIGlzIHJlY29nbml6ZWQgYm90aCBpbnNpZGUgIGFuZCAgb3V0c2lkZSAgY2hhcmFjdGVyCisgICAgICAgY2xhc3Nlcy4KKworICAgICAgIDcuIEZhaXJseSBvYnZpb3VzbHksIFBDUkUgZG9lcyBub3Qgc3VwcG9ydCB0aGUgKD97Y29kZX0pIGFuZCAoP3B7Y29kZX0pCisgICAgICAgY29uc3RydWN0aW9ucy4gSG93ZXZlciwgdGhlcmUgaXMgc29tZSBleHBlcmltZW50YWwgc3VwcG9ydCAgZm9yICByZWN1ci0KKyAgICAgICBzaXZlICBwYXR0ZXJucyAgdXNpbmcgdGhlIG5vbi1QZXJsIGl0ZW1zICg/UiksICg/bnVtYmVyKSBhbmQgKD9QPm5hbWUpLgorICAgICAgIEFsc28sIHRoZSBQQ1JFICJjYWxsb3V0IiBmZWF0dXJlIGFsbG93cyAgYW4gIGV4dGVybmFsICBmdW5jdGlvbiAgdG8gIGJlCisgICAgICAgY2FsbGVkIGR1cmluZyBwYXR0ZXJuIG1hdGNoaW5nLgorCisgICAgICAgOC4gIFRoZXJlICBhcmUgc29tZSBkaWZmZXJlbmNlcyB0aGF0IGFyZSBjb25jZXJuZWQgd2l0aCB0aGUgc2V0dGluZ3Mgb2YKKyAgICAgICBjYXB0dXJlZCBzdHJpbmdzIHdoZW4gcGFydCBvZiAgYSAgcGF0dGVybiAgaXMgIHJlcGVhdGVkLiAgRm9yICBleGFtcGxlLAorICAgICAgIG1hdGNoaW5nICAiYWJhIiAgYWdhaW5zdCAgdGhlICBwYXR0ZXJuICAvXihhKGIpPykrJC8gIGluIFBlcmwgbGVhdmVzICQyCisgICAgICAgdW5zZXQsIGJ1dCBpbiBQQ1JFIGl0IGlzIHNldCB0byAiYiIuCisKKyAgICAgICA5LiBQQ1JFICBwcm92aWRlcyAgc29tZSAgZXh0ZW5zaW9ucyAgdG8gIHRoZSAgUGVybCAgcmVndWxhciAgZXhwcmVzc2lvbgorICAgICAgIGZhY2lsaXRpZXM6CisKKyAgICAgICAoYSkgIEFsdGhvdWdoICBsb29rYmVoaW5kICBhc3NlcnRpb25zICBtdXN0IG1hdGNoIGZpeGVkIGxlbmd0aCBzdHJpbmdzLAorICAgICAgIGVhY2ggYWx0ZXJuYXRpdmUgYnJhbmNoIG9mIGEgbG9va2JlaGluZCBhc3NlcnRpb24gY2FuIG1hdGNoIGEgZGlmZmVyZW50CisgICAgICAgbGVuZ3RoIG9mIHN0cmluZy4gUGVybCByZXF1aXJlcyB0aGVtIGFsbCB0byBoYXZlIHRoZSBzYW1lIGxlbmd0aC4KKworICAgICAgIChiKSAgSWYgUENSRV9ET0xMQVJfRU5ET05MWSBpcyBzZXQgYW5kIFBDUkVfTVVMVElMSU5FIGlzIG5vdCBzZXQsIHRoZSAkCisgICAgICAgbWV0YS1jaGFyYWN0ZXIgbWF0Y2hlcyBvbmx5IGF0IHRoZSB2ZXJ5IGVuZCBvZiB0aGUgc3RyaW5nLgorCisgICAgICAgKGMpIElmIFBDUkVfRVhUUkEgaXMgc2V0LCBhIGJhY2tzbGFzaCBmb2xsb3dlZCBieSBhIGxldHRlciB3aXRoIG5vIHNwZS0KKyAgICAgICBjaWFsIG1lYW5pbmcgaXMgZmF1bHRlZC4KKworICAgICAgIChkKSAgSWYgIFBDUkVfVU5HUkVFRFkgaXMgc2V0LCB0aGUgZ3JlZWRpbmVzcyBvZiB0aGUgcmVwZXRpdGlvbiBxdWFudGktCisgICAgICAgZmllcnMgaXMgaW52ZXJ0ZWQsIHRoYXQgaXMsIGJ5IGRlZmF1bHQgdGhleSBhcmUgbm90IGdyZWVkeSwgYnV0IGlmIGZvbC0KKyAgICAgICBsb3dlZCBieSBhIHF1ZXN0aW9uIG1hcmsgdGhleSBhcmUuCisKKyAgICAgICAoZSkgIFBDUkVfQU5DSE9SRUQgIGNhbiAgYmUgdXNlZCB0byBmb3JjZSBhIHBhdHRlcm4gdG8gYmUgdHJpZWQgb25seSBhdAorICAgICAgIHRoZSBmaXJzdCBtYXRjaGluZyBwb3NpdGlvbiBpbiB0aGUgc3ViamVjdCBzdHJpbmcuCisKKyAgICAgICAoZikgVGhlIFBDUkVfTk9UQk9MLCBQQ1JFX05PVEVPTCwgUENSRV9OT1RFTVBUWSwgYW5kICBQQ1JFX05PX0FVVE9fQ0FQLQorICAgICAgIFRVUkUgb3B0aW9ucyBmb3IgcGNyZV9leGVjKCkgaGF2ZSBubyBQZXJsIGVxdWl2YWxlbnRzLgorCisgICAgICAgKGcpICBUaGUgKD9SKSwgKD9udW1iZXIpLCBhbmQgKD9QPm5hbWUpIGNvbnN0cnVjdHMgYWxsb3dzIGZvciByZWN1cnNpdmUKKyAgICAgICBwYXR0ZXJuIG1hdGNoaW5nIChQZXJsIGNhbiBkbyAgdGhpcyAgdXNpbmcgIHRoZSAgKD9we2NvZGV9KSAgY29uc3RydWN0LAorICAgICAgIHdoaWNoIFBDUkUgY2Fubm90IHN1cHBvcnQuKQorCisgICAgICAgKGgpICBQQ1JFIHN1cHBvcnRzIG5hbWVkIGNhcHR1cmluZyBzdWJzdHJpbmdzLCB1c2luZyB0aGUgUHl0aG9uIHN5bnRheC4KKworICAgICAgIChpKSBQQ1JFIHN1cHBvcnRzIHRoZSBwb3NzZXNzaXZlIHF1YW50aWZpZXIgICIrKyIgIHN5bnRheCwgIHRha2VuICBmcm9tCisgICAgICAgU3VuJ3MgSmF2YSBwYWNrYWdlLgorCisgICAgICAgKGopIFRoZSAoUikgY29uZGl0aW9uLCBmb3IgdGVzdGluZyByZWN1cnNpb24sIGlzIGEgUENSRSBleHRlbnNpb24uCisKKyAgICAgICAoaykgVGhlIGNhbGxvdXQgZmFjaWxpdHkgaXMgUENSRS1zcGVjaWZpYy4KKworCisKK05PVEVTCisgICAgICAgIFRoZSBcPCBhbmQgXD4gbWV0YWNoYXJhY3RlcnMgZnJvbSBIZW5yeSBTcGVuY2VycyBwYWNrYWdlCisgICAgICAgIGFyZSBub3QgYXZhaWxhYmxlIGluIFBDUkUsIGJ1dCBjYW4gYmUgZW11bGF0ZSB3aXRoIFxiLAorICAgICAgICBhcyByZXF1aXJlZCwgYWxzbyBpbiBjb25qdW5jdGlvbiB3aXRoIFxXIG9yIFx3LgorCisgICAgICAgIEluIExETXVkLCBiYWNrdHJhY2tzIGFyZSBsaW1pdGVkIGJ5IHRoZSBFVkFMX0NPU1QgcnVudGltZQorICAgICAgICBsaW1pdCwgdG8gYXZvaWQgZnJlZXppbmcgdGhlIGRyaXZlciB3aXRoIGEgbWF0Y2gKKyAgICAgICAgbGlrZSByZWdleHAoKHsiPVhYPT09PT09PT09PT09PT09PT09PSJ9KSwgIlgoLispK1giKS4KKworICAgICAgICBMRE11ZCBkb2Vzbid0IHN1cHBvcnQgUENSRSBjYWxsb3V0cy4KKworCitMSU1JVEFUSU9OUworICAgICAgICBUaGVyZSBhcmUgc29tZSBzaXplIGxpbWl0YXRpb25zIGluIFBDUkUgYnV0IGl0IGlzIGhvcGVkIHRoYXQKKyAgICAgICAgdGhleSB3aWxsIG5ldmVyIGluIHByYWN0aWNlIGJlIHJlbGV2YW50LiAgVGhlIG1heGltdW0gbGVuZ3RoCisgICAgICAgIG9mIGEgY29tcGlsZWQgcGF0dGVybiBpcyA2NTUzOSAoc2ljKSBieXRlcy4gIEFsbCAgdmFsdWVzICBpbgorICAgICAgICByZXBlYXRpbmcgIHF1YW50aWZpZXJzICBtdXN0IGJlIGxlc3MgdGhhbiA2NTUzNi4gIFRoZXJlIG1heC0KKyAgICAgICAgaW11bSBudW1iZXIgb2YgY2FwdHVyaW5nIHN1YnBhdHRlcm5zIGlzIDY1NTM1LiAgVGhlcmUgaXMgIG5vCisgICAgICAgIGxpbWl0ICB0byAgdGhlICBudW1iZXIgb2Ygbm9uLWNhcHR1cmluZyBzdWJwYXR0ZXJucywgYnV0IHRoZQorICAgICAgICBtYXhpbXVtIGRlcHRoIG9mIG5lc3Rpbmcgb2YgYWxsIGtpbmRzIG9mIHBhcmVudGhlc2l6ZWQgIHN1Yi0KKyAgICAgICAgcGF0dGVybiwgIGluY2x1ZGluZyAgY2FwdHVyaW5nICBzdWJwYXR0ZXJucywgYXNzZXJ0aW9ucywgYW5kCisgICAgICAgIG90aGVyIHR5cGVzIG9mIHN1YnBhdHRlcm4sIGlzIDIwMC4KKworICAgICAgICBUaGUgbWF4aW11bSBsZW5ndGggb2YgYSBzdWJqZWN0IHN0cmluZyBpcyB0aGUgbGFyZ2VzdCAgcG9zaS0KKyAgICAgICAgdGl2ZSBudW1iZXIgdGhhdCBhbiBpbnRlZ2VyIHZhcmlhYmxlIGNhbiBob2xkLiBIb3dldmVyLCBQQ1JFCisgICAgICAgIHVzZXMgcmVjdXJzaW9uIHRvIGhhbmRsZSBzdWJwYXR0ZXJucyBhbmQgaW5kZWZpbml0ZSAgcmVwZXRpLQorICAgICAgICB0aW9uLiAgVGhpcyAgbWVhbnMgIHRoYXQgdGhlIGF2YWlsYWJsZSBzdGFjayBzcGFjZSBtYXkgbGltaXQKKyAgICAgICAgdGhlIHNpemUgb2YgYSBzdWJqZWN0IHN0cmluZyB0aGF0IGNhbiBiZSBwcm9jZXNzZWQgIGJ5ICBjZXItCisgICAgICAgIHRhaW4gcGF0dGVybnMuCisKKworQVVUSE9SCisgICAgICAgIFBoaWxpcCBIYXplbCA8cGgxMEBjYW0uYWMudWs+CisgICAgICAgIFVuaXZlcnNpdHkgQ29tcHV0aW5nIFNlcnZpY2UsCisgICAgICAgIE5ldyBNdXNldW1zIFNpdGUsCisgICAgICAgIENhbWJyaWRnZSBDQjIgM1FHLCBFbmdsYW5kLgorICAgICAgICBQaG9uZTogKzQ0IDEyMjMgMzM0NzE0CisKK1NFRSBBTFNPCisgICAgICAgIHJlZ2V4cChDKSwgaHNyZWdleHAoQykKZGlmZiAtLWdpdCBhL2RvYy9jb25jZXB0cy9wZ3NxbCBiL2RvYy9jb25jZXB0cy9wZ3NxbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4xMmYyY2M0Ci0tLSAvZGV2L251bGwKKysrIGIvZG9jL2NvbmNlcHRzL3Bnc3FsCkBAIC0wLDAgKzEsODggQEAKK0NPTkNFUFQKKyAgICAgICAgcGdzcWwgLSBQb3N0Z3JlU1FMIHN1cHBvcnQKKworREVTQ1JJUFRJT04KKyAgICAgICAgT24gaG9zdHMgd2l0aCB0aGUgUG9zdGdyZVNRTCBwYWNrYWdlIGluc3RhbGxlZCwgdGhlIGRyaXZlciBjYW4gYmUKKyAgICAgICAgY29uZmlndXJlZCB0byBpbnRlcmZhY2Ugd2l0aCB0aGUgUG9zdGdyZVNRTCBkYXRhYmFzZS4gSWYgdGhhdCBpcyBkb25lLAorICAgICAgICB0aGUgZHJpdmVyIGRlZmluZXMgdGhlIG1hY3JvIF9fUEdTUUxfXyBmb3IgTFBDIHByb2dyYW1zIGFuZAorICAgICAgICBhY3RpdmF0ZXMgYSBudW1iZXIgb2YgcmVsYXRlZCBlZnVucy4KKworICAgICAgICAtLSBVc2FnZSAtLQorCisgICAgICAgIFRoZSBpbnRlcmZhY2UgdG8gdGhlIFBvc3RncmVTUUwgZGF0YWJhc2UgaXMgaW1wbGVtZW50ZWQKKyAgICAgICAgdGhyb3VnaCB0aGUgY29uY2VwdCBvZiBhIGNvbnRyb2xsaW5nIG9iamVjdDogd2hlbiBvcGVuaW5nIGEKKyAgICAgICAgZGF0YWJhc2UgY29ubmVjdGlvbiwgdGhlIExQQyBjb2RlIGhhcyB0byBwcm92aWRlIGEgY2FsbGJhY2sKKyAgICAgICAgZnVuY3Rpb24uIFRoZSBvYmplY3QgdGhpcyBmdW5jdGlvbiBpcyBib3VuZCB0byBpcyB0aGUKKyAgICAgICAgY29udHJvbGxpbmcgb2JqZWN0OiBhbGwgcXVlcmllcyB0byB0aGUgZGF0YWJhc2Ugd2lsbCBiZSBpc3N1ZWQKKyAgICAgICAgYnkgdGhpcyBvYmplY3QsIGFuZCB0aGUgcmVzcG9uc2VzIHdpbGwgYmUgc2VudCB0byB0aGUgY2FsbGJhY2sKKyAgICAgICAgZnVuY3Rpb24uCisKKyAgICAgICAgVGhlIGludGVyZmFjZSBpcyBhbHNvIGFzeW5jaHJvbm91czogdGhlIHBnX3F1ZXJ5KCkgZWZ1biBqdXN0CisgICAgICAgIHF1ZXVlcyB0aGUgcXVlcnkgd2l0aCB0aGUgZGF0YWJhc2UgY29ubmVjdGlvbiwgYW5kIHJldHVybnMKKyAgICAgICAgaW1tZWRpYXRlbHkuIFdoZW4gdGhlIGRhdGFiYXNlIGhhcyBmaW5pc2hlZCB3b3JraW5nIHRoZSBxdWVyeSwKKyAgICAgICAgdGhlIGNhbGxiYWNrIGZ1bmN0aW9uIGlzIGNhbGxlZCB3aXRoIHRoZSByZXN1bHRzLgorCisgICAgICAgIFRoZSBjYWxsYmFjayBmdW5jdGlvbiBjYW4gYmUgZGVmaW5lZCBieSBuYW1lIG9yIGJ5IGNsb3N1cmUsCisgICAgICAgIGFuZCBjYW4gYmUgZGVmaW5lZCB3aXRoIGV4dHJhIHBhcmFtZXRlcnM6CisKKworICAgICAgICAgICNpbmNsdWRlIDxwZ3NxbC5oPgorCisgICAgICAgICAgdm9pZCA8Y2FsbGJhY2s+KGludCB0eXBlLCBtaXhlZCByZXQsIGludCBpZCBbLCBtaXhlZCBleHRyYS4uLl0pCisKKyAgICAgICAgICAgIDx0eXBlPiBpcyB0aGUgdHlwZSBvZiB0aGUgY2FsbCwgPGlkPiBpZGVudGlmaWVzIHRoZSBxdWVyeQorICAgICAgICAgICAgZm9yIHdoaWNoIHRoaXMgY2FsbCBpcyBleGVjdXRlZDoKKworICAgICAgICAgICAgICBQR1JFU19UVVBMRVNfT0s6IDxyZXQ+IGlzIHRoZSByZXN1bHQgZnJvbSBhIHF1ZXJ5LgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEl0IGlzIGVpdGhlciBhIG1hcHBpbmcgKGZpZWxkIG5hbWUgYXMKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBrZXksIGluZGV4aW5nIDxuPiB2YWx1ZXMgZm9yIG4gcmV0dXJuZWQKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0dXBsZXMpLCBvciBhbiBhcnJheSBvZiBhcnJheXMgKG9uZSBwZXIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByb3cpLgorCisgICAgICAgICAgICAgIFBHUkVTX0NPTU1BTkRfT0s6IDxyZXQ+IGlzIGEgc3RyaW5nIHdoaWNoIGNvbnRhaW5zIHRoZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXJ2ZXIgcmVzcG9uc2UgKGUuZy4gb24gSU5TRVJUIG9yIERFTEVURSkgCisKKyAgICAgICAgICAgICAgUEdSRVNfQkFEX1JFU1BPTlNFLAorICAgICAgICAgICAgICBQR1JFU19OT05GQVRBTF9FUlJPUiwKKyAgICAgICAgICAgICAgUEdSRVNfRkFUQUxfRVJST1I6IHJldCBpcyB0aGUgZXJyb3Itc3RyaW5nCisKKworICAgICAgICAgIHZvaWQgPGNhbGxiYWNrPihpbnQgdHlwZSwgbWl4ZWQgcmV0IFssIG1peGVkIGV4dHJhLi4uXSkKKworICAgICAgICAgICAgPHR5cGU+IGlzIHRoZSB0eXBlIG9mIHRoZSBjYWxsLCB3aGljaCBpcyBub3QgcmVsYXRlZCBhCisgICAgICAgICAgICBzcGVjaWZpYyBxdWVyeToKKworICAgICAgICAgICAgICBQR0NPTk5fU1VDQ0VTUzogVGhlIGRhdGFiYXNlLWNvbm5lY3Rpb24gd2FzIGVzdGFibGlzaGVkLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHJldD4gaXMgYSBkdW1teSBzdHJpbmcuCisgICAgICAgICAgICAgIFBHQ09OTl9GQUlMRUQ6ICBUaGUgZGF0YWJhc2UtY29ubmVjdGlvbiBmYWlsZWQsIDxyZXQ+IGlzCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGUgZXJyb3IgbWVzc2FnZS4KKyAgICAgICAgICAgICAgICBUaGUgZmlyc3QgbWVzc2FnZSB0byB0aGUgY2FsbGJhY2sgYWZ0ZXIgYSBjYWxsIHRvCisgICAgICAgICAgICAgICAgcGdfY29ubmVjdCgpIGlzIGFsd2F5cyBvbmUgb2YgdGhlc2UgdHdvLgorCisgICAgICAgICAgICAgIFBHUkVTX05PVElDRTogPHJldD4gaXMgYSBpbmZvcm1hdGlvbmFsIHRleHQuCisKKyAgICAgICAgICAgICAgUEdDT05OX0FCT1JURUQ6IElmIHRoZSBjb25uZWN0aW9uIHRvIHRoZSBiYWNrZW5kIGZhaWxzCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3ZSB0cnkgdG8gcmUtZXN0YWJsaXNoIChyZXNldCkgaXQuIElmIHRoZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzZXQgZmFpbHMsIHRoZSBjb25uZWN0aW9uIGlzIGNsb3NlZCBhbmQKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMgdmFsdWUgaXMgcmV0dXJuZWQuIENvbnNpZGVyIHRoZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29ubmVjdGlvbiBnb25lIGFuZCBkb24ndCB0cnkgdG8gY2xvc2Ugb3IgCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvdGhlcndpc2Ugb3BlcmF0ZSBmdXJ0aGVyIG9uIGl0LgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHJldD4gaXMgYSBkdW1teSBzdHJpbmcuCisKKyAgICAgICAgLS0gU2VjdXJpdHkgLS0KKworICAgICAgICBBbGwgU1FMIGVmdW5zICh1bmxlc3MgZXhlY3V0ZSBieSB0aGUgbWFzdGVyIG9yIHRoZSBzaW11bC1lZnVuIG9iamVjdCkKKyAgICAgICAgdHJpZ2dlciBhIHByaXZpbGVnZV92aW9sYXRpb24gKCJwZ3NxbCIsICI8ZWZ1bl9uYW1lPiIpLiBJZiBhIG1vcmUKKyAgICAgICAgZmluZWdyYWluZWQgY29udHJvbCBpcyBkZXNpcmVkLCBvdmVybG9hZCB0aGUgaW5kaXZpZHVhbCBlZnVucyB3aXRoIGEKKyAgICAgICAgbm9tYXNrIHNpbXVsLWVmdW4uCisKK0FVVEhPUgorICAgICAgICBGbG9yaWFuIEhlaW56IGFuZCBvdGhlcnMuCisKK0hJU1RPUlkKKyAgICAgICAgQWRkZWQgYXMgcGFja2FnZSBpbiBMRE11ZCAzLjMuNDQ1LgorICAgICAgICBMRE11ZCAzLjMuNjQwIGFkZGVkIGEgcHJpdmlsZWdlX3Zpb2xhdGlvbigpIGNhbGwgZm9yIGVhY2ggZWZ1bi4KKworU0VFIEFMU08KKyAgICAgICAgbXlzcWwoQyksIHBnX2Nvbm5lY3QoRSksIHBnX2NvbnZfc3RyaW5nKEUpLCBwZ19xdWVyeShFKSwgcGdfcGVuZGluZyhFKSwKKyAgICAgICAgcGdfY2xvc2UoRSksIHByaXZpbGVnZV92aW9sYXRpb24oTSkKZGlmZiAtLWdpdCBhL2RvYy9jb25jZXB0cy9wcm9wZXJ0aWVzIGIvZG9jL2NvbmNlcHRzL3Byb3BlcnRpZXMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMWFiNDE4YQotLS0gL2Rldi9udWxsCisrKyBiL2RvYy9jb25jZXB0cy9wcm9wZXJ0aWVzCkBAIC0wLDAgKzEsMTA5IEBACitQcm9wZXJ0aWVzCisgQkVTQ0hSRUlCVU5HOgorICAgICBJbSBHZWdlbnNhdHogenUgVmFyaWFibGVuIGlubmVyaGFsYiBlaW5lcyBPYmpla3Rlcywga2FubiBtYW4gUHJvcGVydGllcworICAgICB2b24gYXVzc2VuIHZlcmFlbmRlcm4sIG9obmUgZWluZSBiZXNvbmRlcmUgRnVua3Rpb24gZ2VzY2hyaWViZW4genUgaGFiZW4uCisKKyAgICAgMS4gRGFzIHp1Z3J1bmRlbGllZ2VuZGUgUHJpbnppcAorICAgICA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CisgICAgICBEYXMgZ3J1bmRsZWdlbmRlIEtvbnplcHQgZGVyIE1VRGxpYiBpc3QsIGRhc3Mgd2ljaHRpZ2UsIG9iamVrdGJlem9nZW5lCisgICAgICBJbmZvcm1hdGlvbmVuIGluIGRlbiBzb2dlbmFubm50ZW4gUHJvcGVydGllcyBnZXNwZWljaGVydCB3ZXJkZW4gKGVuZ2wuCisgICAgICBwcm9wZXJ0eSAtLSBFaWdlbnNjaGFmdCwgRWlnZW50dW0pLgorCisgICAgICBEaWVzZSBJbmZvcm1hdGlvbmVuIGtvZW5uZW4gZWluZmFjaGUgV2VydGUsIHdpZSB6LkIuIFphaGxlbiwgWmVpY2hlbiBvZGVyCisgICAgICBPYmpla3RlLCBhYmVyIGF1Y2gga29tcGxpemllcnRlcmUgU3RydWt0dXJlbiBzZWluLgorICAgICAgSmVkZXMgT2JqZWt0IGthbm4gYmVsaWViaWcgdmllbGUgc29sY2hlciBQcm9wZXJ0aWVzIGJlc2l0emVuIHVuZCBkZXJlbgorICAgICAgTmFtZW5zZ2VidW5nIGlzdCBuaWNodCBudXIgYXVmIGRpZSB2b24gZGVyIE1VRGxpYiBiZXJlaXRnZXN0ZWxsdGVuCisgICAgICBTdGFuZGFyZHByb3BlcnRpZXMgYmVncmVuenQuIERhcyBoZWlzc3QsIGRhcyBmdWVyIGVpZ2VuZSBBbndlbmR1bmdlbiBkaWUKKyAgICAgIE1lbmdlIGRlciBQcm9wZXJ0aWVzIGZ1ZXIgZWluIE9iamVrdCBiZWxpZWJpZyBlcndlaXRlcnQgd2VyZGVuIGthbm4uCisgICAgICBEYW1pdCBzaW5kIGF1Y2ggc2Nob24gZGllIGJlaWRlbiBIYXVwdG1lcmttYWxlIGVpbmVyIFByb3BlcnR5IGFuZ2UtCisgICAgICBzcHJvY2hlbjoKKworCWEpIGVpbiBOYW1lIG9kZXIgS2VubnVuZyB1bmQKKwliKSBlaW4gV2VydCwgZGVyIGR1cmNoIGRlbiBOYW1lbiByZXByYWVzZW50aWVydCB3aXJkLgorCisgICAgICBEYXMgcmVpbmUgVmVyd2FsdGVuIGVpbmVyIFByb3BlcnR5IG1pdCBOYW1lbiB1bmQgV2VydCBpc3QgYWJlciBuaWNodCBzZWhyCisgICAgICBzaW5udm9sbCB1bmQgc28gZ2Vob2VyZW4genUgamVkZXIgUHJvcGVydHkgbm9jaCB6d2VpIHdlaXRlcmUgd2ljaHRpZ2UKKyAgICAgIERpbmdlLiBadSBqZWRlciBQcm9wZXJ0eSB3dXJkZW4gamV3ZWlscyB6d2VpIE9wZXJhdGlvbmVuIGVpbmdlZnVlaHJ0LAorICAgICAgd2VsY2hlIGRlbiB1ZWJlcmdlYmVuZW4gV2VydCB2b3IgZGVyIFNwZWljaGVydW5nIG9kZXIgQWJmcmFnZSBiZWFyYmVpdGVuLgorCisgICAgICBadXNhbW1lbmZhc3NlbmQgbGFlc3N0IHNpY2ggZGFzIEtvbnplcHQgZGVyIFByb3BlcnR5IGluIGZvbGdlbmRlbSBTY2hlbWEKKyAgICAgIGRhcnN0ZWxsZW46CisKKyAgICAgICAgICAgICAgICstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKworICAgICAgICAgICAgICAgfCBQcm9wZXJ0eSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8CisgICAgICAgICAgICAgICArLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSsKKyAgICAgICAgICAgICAgIHwgcHJpdmF0ZXIgRGF0ZW5iZXJlaWNoIChQcm9wZXJ0eSBXZXJ0ZSkgICAgfAorICAgICAgICAgICAgICAgKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rCisgICAgICAgICAgICAgICB8IERpcmVrdHp1Z3JpZmYgYXVmIGRlbiBEYXRlbmJlcmVpY2ggICAgICAgIHwKKyAgICAgICAgICAgICAgICstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKyAgICAgfAorICAgICAgICAgICAgICAgfCAgICAgXiAgICAgICBNZXRob2RlbiAgICAgICB2ICAgICAgICB8IF4gdiB8CisgICAgICAgICAgICAgICB8ICAgU2V0emVuICAgICAgIHwgICAgICAgIEFiZnJhZ2VuICAgIHwgICAgIHwKKyAgICAgICAgICAgICAgICstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tKworICAgICAgICAgICAgICAgICAgICAgXiAgICAgICAgICAgICAgICAgICAgICB8CisJICAgICAgICAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgVgorICAgICAgICAgICAgICAgICAgU2V0UHJvcCgpICAgICAgICAgICAgIFF1ZXJ5UHJvcCgpCisKKyAgICAgIEF1cyBkZW0gU2NoZW1hIGxhZXNzdCBzaWNoIEZvbGdlbmRlcyBlcmtlbm5lbjoKKyAgICAgIC0gYmVpbSBTZXR6ZW4gdW5kIEFiZnJhZ2VuIHdpcmQgZGVyIFdlcnQgZWluZXIgTWV0aG9kZSB1ZWJlcmdlYmVuLCBkaWUKKwlkZW4gV2VydCB6dXJ1ZWNrZ2lidCBvZGVyIGdnZi4gZGllIEFlbmRlcnVuZ2VuIHZvcm5pbW10CisgICAgICAtIGVpbiBkaXJla3RlciBadWdyaWZmIGF1ZiBkZW4gV2VydCBkZXIgaXN0IGViZW5mYWxscyBtb2VnbGljaCwgc29sbHRlCisJYWJlciBuaWNodCBkZXIgTm9ybWFsZmFsbCBzZWluLCBkYSBkaWUgTWV0aG9kZW4gTmViZW5lZmZla3RlIGVyemV1Z2VuCisgICAgICAgIC0gaW4gYmVzdGltbXRlbiBGYWVsbGVuIGthbm4gbWFuIGRlbiBhZXVzc2VybGljaCBhZW5kZXJuZGVuIFp1Z3JpZmYKKwkgIHZvbGxrb21tZW4gdW50ZXJiaW5kZW4gKE5PU0VUTUVUSE9ELCBQUk9URUNUKQorCSAgKFZPUlNJQ0hUIGJlaSBtYXBwaW5ncy9hcnJheXMsIGRpZXNlIHdlcmRlbiBiZWkgUXVlcnlQcm9wKCkKKwkgICBhbHMgUmVmZXJlbnogenVydWVja2dlZ2ViZW4sIHNpbmQgYWxzbyBzbyBhZW5kZXJiYXIpCisKKyAgICAgMi4gSW1wbGVtZW50YXRpb24KKyAgICAgPT09PT09PT09PT09PT09PT0KKworICAgICAgRGllIEtsYXNzZSAvc3RkL3RoaW5nL3Byb3BlcnRpZXMuYyBzdGVsbHQgZm9sZ2VuZGUgRnVua3Rpb25lbiBmdWVyIGRpZQorICAgICAgQmVoYW5kbHVuZyB2b24gUHJvcGVydGllcyBiZXJlaXQ6CisKKyAgICAgIE5vcm1hbGVyIFp1Z3JpZmY6CW1peGVkIFNldFByb3AoPG5hbWU+LCA8d2VydD4pCisJCQktIHNldHp0IGRlbiBXZXJ0IHZvbiA8bmFtZT4gYXVmIDx3ZXJ0PgorCQkJbWl4ZWQgUXVlcnlQcm9wKDxuYW1lPikKKwkJCS0gZ2lidCBkZW4gV2VydCB2b24gPG5hbWU+IHp1cnVlY2sKKyAKKyAgICAgIERpcmVrdGVyIFp1Z3JpZmY6CW1peGVkIFNldCg8bmFtZT4sIDx3ZXJ0PiwgPGludGVycHJldGF0aW9uPikKKwkJCS0gc2V0enQgZnVlciA8bmFtZT4gZWluZW4gPHdlcnQ+OgorCQkJICAtIGRlbiBub3JtYWxlbiBXZXJ0CisJCQkgICAgPGludGVycHJldGF0aW9uPjogRl9WQUxVRSAoPT0wKQorCQkJICAtIGVpbmUgTWV0aG9kZQorCQkJICAgIDx3ZXJ0PjogY2xvc3VyZQorCQkJICAgIDxpbnRlcnByZXRhdGlvbj46IEZfU0VUX01FVEhPRCwgRl9RVUVSWV9NRVRIT0QKKwkJCSAgLSBlaW4gRmxhZworCQkJICAgIDx3ZXJ0PjogU0FWRSwgU0VDVVJFRCwgUFJPVEVDVEVELCBOT1NFVE1FVEhPRAorCQkJICAgIDxpbnRlcnByZXRhdGlvbj46IEZfTU9ERSwgRl9NT0RFX0FTLCBGX01PREVfQUQKKwkJCW1peGVkIFF1ZXJ5KDxuYW1lPiwgPGludGVycHJldGF0aW9uPikKKwkJCS0gZnJhZ3QgZnVlciA8bmFtZT4gZWluZW4gPHdlcnQ+IGFiCisJCQkgIC0gRl9TRVRfTUVUSE9ELCBGX1FVRVJZX01FVEhPRDogZGllIENsb3N1cmUvMAorCQkJICAtIEZfTU9ERTogZGFzICh2ZXJvZGVydGUhKSBGbGFnCisgICAgICBHbG9iYWw6CQl2b2lkIFNldFByb3BlcnRpZXMoPG1hcHBpbmc+KQorCQkJLSBzZXR6dCBkYXMgTWFwcGluZyBrb21wbGV0dCwgYmVhY2h0ZXQgPj0gUFJPVEVDVEVECisJCQltYXBwaW5nIFF1ZXJ5UHJvcGVydGllcygpCisJCQktIGZyYWd0ZSBkYXMga29tcGxldHRlIE1hcHBpbmcgYWxzIEtvcGllIGFiCisKKyAgICAgMy4gQmVzb25kZXJoZWl0ZW4vRWluZ2ViYXV0ZSBQcm9wZXJ0aWVzOgorCisgICAgICBFeGlzdGllcnQgenUgZWluZXIgUHJvcGVydHkgZWluZSBGdW5rdGlvbiBtaXQgZGVtIHNlbGJlbiBOYW1lbiB1bmQgZWluZW0KKyAgICAgICJfc2V0XyIgYnp3ICJfcXVlcnlfIiBkYXZvciwgc28gd2lyZCBuaWNodCBhdWYgZGllIGRhcyBQcm9wZXJ0eS1NYXBwaW5nCisgICAgICB6dWdlZ3JpZmZlbiwgc29uZGVybiBlcyB3ZXJkZW4gZGllIEFyZ3VtZW50ZSBhbiBkaWVzZSBGdW5rdGlvbiB1ZWJlcmdlYmVuCisgICAgICB1bmQgZGVyIFJ1ZWNrZ2FiZXdlcnQgZGllc2VyIEZ1bmt0aW9uIHp1cnVlY2tnZWdlYmVuLgorICAgICAgVm9ydGVpbDoKKyAgICAgIC0gc28ga2FubiBtYW4gRGF0ZW4sIGRpZSBzY2huZWxsIHZlcmZ1ZWdiYXIgc2VpbiBtdWVzc2VuLAkoYmVpIGRlbmVuCisgICAgICAgIGFsc28gRWZmaXppZW56IGdlZ2VuIFNldFByb3AvUXVlcnlQcm9wIHNwcmljaHQpIHRyb3R6ZGVtIG5hY2ggYXVzc2VuCisJZWluaGVpdGxpY2ggenVncmVpZmJhciBtYWNoZW4KKyAgICAgIE5hY2h0ZWlsOgorICAgICAgLSBuaWNodCB3aXJrbGljaCBzYXViZXIKKyAgICAgIC0gU3BlaWNoZXJuIG11c3MgbWFuIHNlbGJzdCB2b3JuZWhtZW4KKyAgICAgIC0gU2V0L1F1ZXJ5IGdlaGVuIHdpZSBhdWNoIGJlaSBNZXRob2RlbiBhbiBfc2V0XyovX3F1ZXJ5Xyogdm9yYmVpCisgICAgICAtIGRpZXNlcyBWZXJoYWx0ZW4gc29sbHRlIGRlciBNdWRsaWIgdm9yYmVoYWx0ZW4gYmxlaWJlbiwgZnVlciBlaWdlbmUKKyAgICAgICAgUHJ1ZWZmdW5rdGlvbmVuICh3aXJkIGV0d2FzIGdlc2V0enQvYWJnZWZyYWd0KSBiencuIEFlbmRlcnVuZ2VuCisJc29sbHRlIG1hbiBNZXRob2RlbiAoRl9TRVRfTUVUSE9EL0ZfUVVFUllfTUVUSE9EKSBiZW51dHplbgorCisgU0lFSEUgQVVDSDoKKyAgICAgU2V0UHJvcChMKSwgUXVlcnlQcm9wKEwpLCBTZXQoTCksIFF1ZXJ5KEwpLCBTZXRQcm9wZXJ0aWVzKEwpLAorICAgICBRdWVyeVByb3BlcnRpZXMoTCkKKyAgICAgb2JqZWt0ZSwgZWZmaXppZW56LCBjbG9zdXJlcworCisgMjEuIE1hZXJ6IDIwMDQgR2xvaW5zb24KZGlmZiAtLWdpdCBhL2RvYy9jb25jZXB0cy9yZWdleHAgYi9kb2MvY29uY2VwdHMvcmVnZXhwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjlhOWQ3MGUKLS0tIC9kZXYvbnVsbAorKysgYi9kb2MvY29uY2VwdHMvcmVnZXhwCkBAIC0wLDAgKzEsMTIxIEBACitTWU5PUFNJUworICAgICAgICBSZWd1bGFyIEV4cHJlc3Npb25zCisKKworREVTQ1JJUFRJT04KKyAgICAgICAgTERNdWQgc3VwcG9ydHMgYm90aCB0aGUgdHJhZGl0aW9uYWwgcmVndWxhciBleHByZXNzaW9ucyBhcworICAgICAgICBpbXBsZW1lbnRlZCBieSBIZW5yeSBTcGVuY2VyICgiSFMiIG9yICJ0cmFkaXRpb25hbCIpLCBhbmQgdGhlCisgICAgICAgIFBlcmwtY29tcGF0aWJsZSByZWd1bGFyIGV4cHJlc3Npb25zIGJ5IFBoaWxpcCBIYXplbCAoIlBDUkUiKS4KKyAgICAgICAgQm90aCBwYWNrYWdlcyBjYW4gYmUgdXNlZCBjb25jdXJyZW50bHksIHdpdGggdGhlIHNlbGVjdGlvbgorICAgICAgICBiZWluZyBtYWRlIHRocm91Z2ggZXh0cmEgb3B0aW9uIGZsYWdzIGFyZ3VtZW50IHRvIHRoZSBlZnVucy4KKyAgICAgICAgT25lIG9mIHRoZSB0d28gcGFja2FnZXMgY2FuIGJlIHNlbGVjdGVkIGF0IGNvbXBpbGUgdGltZSwgYnkKKyAgICAgICAgY29tbWFuZGxpbmUgYXJndW1lbnQsIGFuZCBieSBkcml2ZXIgaG9vayB0byBiZSB0aGUgZGVmYXVsdAorICAgICAgICBwYWNrYWdlLgorCisgICAgICAgIFRoZSBwYWNrYWdlcyBkaWZmZXIgaW4gdGhlIGV4cHJlc3Npdml0eSBvZiB0aGVpciBleHByZXNzaW9ucworICAgICAgICAoUENSRSBvZmZlcmluZyBtb3JlIG9wdGlvbnMgdGhhdCBIZW5yeSBTcGVuY2VyJ3MgcGFja2FnZSksCisgICAgICAgIHRob3VnaCB0aGV5IGJvdGggaW1wbGVtZW50IHRoZSBjb21tb24gc3Vic2V0IG91dGxpbmVkIGJlbG93LgorCisgICAgICAgIEFsbCByZWd1bGFyIGV4cHJlc3Npb24gZWZ1bnMgdGFrZSBhbiBhZGRpdGlvbmFsIG9wdGlvbnMKKyAgICAgICAgcGFyYW1ldGVyLCB3aGljaCBpcyBhIGFuIG51bWJlciBjb21wb3NlZCBvZiBiaXRmbGFncywgYW5kIGlzCisgICAgICAgIHVzZWQgdG8gbW9kaWZ5IHRoZSBleGFjdCBiZWhhdmlvdXIgb2YgdGhlIGV4cHJlc3Npb24KKyAgICAgICAgZXZhbHVhdGlvbi4gSW4gYWRkaXRpb24sIGNlcnRhaW4gZWZ1bnMgbWF5IGFjY2VwdCBhZGRpdGlvbmFsCisgICAgICAgIHNwZWNpZmljIG9wdGlvbnMuCisKKyAgICAgICAgRm9yIGRldGFpbHMsIHJlZmVyIHRvIHRoZSBkZXRhaWxlZCBtYW5wYWdlczogaHNyZWdleHAoQykgZm9yCisgICAgICAgIHRoZSBIZW5yeSBTcGVuY2VyIHBhY2thZ2UsIHBjcmUoQykgZm9yIHRoZSBQQ1JFIHBhY2thZ2UuCisKKworUkVHVUxBUiBFWFBSRVNTSU9OIERFVEFJTFMKKyAgICAgICAgQSByZWd1bGFyIGV4cHJlc3Npb24gaXMgYSBwYXR0ZXJuIHRoYXQgaXMgbWF0Y2hlZCBhZ2FpbnN0ICBhCisgICAgICAgIHN1YmplY3Qgc3RyaW5nIGZyb20gbGVmdCB0byByaWdodC4gTW9zdCBjaGFyYWN0ZXJzIHN0YW5kIGZvcgorICAgICAgICB0aGVtc2VsdmVzIGluIGEgcGF0dGVybiwgYW5kIG1hdGNoIHRoZSBjb3JyZXNwb25kaW5nIGNoYXJhYy0KKyAgICAgICAgdGVycyBpbiB0aGUgc3ViamVjdC4gQXMgYSB0cml2aWFsIGV4YW1wbGUsIHRoZSBwYXR0ZXJuCisKKyAgICAgICAgICBUaGUgcXVpY2sgYnJvd24gZm94CisKKyAgICAgICAgbWF0Y2hlcyBhIHBvcnRpb24gb2YgYSBzdWJqZWN0IHN0cmluZyB0aGF0IGlzICBpZGVudGljYWwgIHRvCisgICAgICAgIGl0c2VsZi4gIFRoZSAgcG93ZXIgIG9mICByZWd1bGFyICBleHByZXNzaW9ucyBjb21lcyBmcm9tIHRoZQorICAgICAgICBhYmlsaXR5IHRvIGluY2x1ZGUgYWx0ZXJuYXRpdmVzIGFuZCByZXBldGl0aW9ucyBpbiB0aGUgIHBhdC0KKyAgICAgICAgdGVybi4gIFRoZXNlICBhcmUgZW5jb2RlZCBpbiB0aGUgcGF0dGVybiBieSB0aGUgdXNlIG9mIG1ldGEtCisgICAgICAgIGNoYXJhY3RlcnMsIHdoaWNoIGRvIG5vdCBzdGFuZCBmb3IgIHRoZW1zZWx2ZXMgIGJ1dCAgaW5zdGVhZAorICAgICAgICBhcmUgaW50ZXJwcmV0ZWQgaW4gc29tZSBzcGVjaWFsIHdheS4KKworICAgICAgICBUaGUgZm9sbG93aW5nIG1ldGFjaGFyYWN0ZXJzIGFyZSAndW5pdmVyc2FsJyBpbiB0aGF0IGJvdGggcmVnZXhwCisgICAgICAgIHBhY2thZ2VzIHVuZGVyc3RhbmQgdGhlbSBpbiB0aGUgc2FtZSB3YXk6CisKKyAgICAgICAgICAuICAgICAgIE1hdGNoIGFueSBjaGFyYWN0ZXIuCisKKyAgICAgICAgICBeICAgICAgIE1hdGNoIGJlZ2luIG9mIGxpbmUuCisKKyAgICAgICAgICAkICAgICAgIE1hdGNoIGVuZCBvZiBsaW5lLgorCisgICAgICAgICAgeHx5ICAgICBNYXRjaCByZWdleHAgeCBvciByZWdleHAgeS4KKworICAgICAgICAgICgpICAgICAgTWF0Y2ggZW5jbG9zZWQgcmVnZXhwIGxpa2UgYSAnc2ltcGxlJyBvbmUuCisKKyAgICAgICAgICB4KiAgICAgIE1hdGNoIGFueSBudW1iZXIgKDAgb3IgbW9yZSkgb2YgcmVnZXhwIHguCisKKyAgICAgICAgICB4KyAgICAgIE1hdGNoIGFueSBudW1iZXIgKDEgb3IgbW9yZSkgb2YgcmVnZXhwIHguCisKKyAgICAgICAgICBbLi5dICAgIE1hdGNoIG9uZSBvZiB0aGUgY2hhcmFjdGVycyBlbmNsb3NlZC4KKworICAgICAgICAgIFteIC4uXSAgTWF0Y2ggbm9uZSBvZiB0aGUgY2hhcmFjdGVycyBlbmNsb3NlZC4gVGhlIC4uIGFyZSB0bworICAgICAgICAgICAgICAgICAgcmVwbGFjZWQgYnkgc2luZ2xlIGNoYXJhY3RlcnMgb3IgY2hhcmFjdGVyIHJhbmdlczoKKworICAgICAgICAgIFthYmNdICAgbWF0Y2hlcyBhLCBiIG9yIGMuCisKKyAgICAgICAgICBbYWIwLTldIG1hdGNoZXMgYSwgYiBvciBhbnkgZGlnaXQuCisKKyAgICAgICAgICBbXmEtel0gIGRvZXMgbm90IG1hdGNoIGFueSBsb3dlcmNhc2UgY2hhcmFjdGVyLgorCisgICAgICAgICAgXEIgICAgICBub3QgYSB3b3JkIGJvdW5kYXJ5CisKKyAgICAgICAgICBcYyAgICAgIG1hdGNoIGNoYXJhY3RlciBjIGV2ZW4gaWYgaXQncyBvbmUgb2YgdGhlIHNwZWNpYWwKKyAgICAgICAgICAgICAgICAgIGNoYXJhY3RlcnMuCisKKyAgICAgICAgVGhlIGZvbGxvd2luZyBtZXRhY2hhcmFjdGVycyBvciBtZXRhY2hhcmFjdGVyIGNvbWJpbmF0aW9ucyBpbXBsZW1lbnQKKyAgICAgICAgc2ltaWxhciBmdW5jdGlvbnMgaW4gdGhlIHR3byByZWdleHAgcGFja2FnZXM7CisKKyAgICAgICAgICBcYiAgICAgIFBDUkU6IHdvcmQgYm91bmRhcnksIGFsc28gdXNlZCBpbmNvbmp1bmN0aW9uIHdpdGgKKyAgICAgICAgICAgICAgICAgICAgICAgIFx3IChhbnkgIndvcmQiIGNoYXJhY3RlcikgYW5kIFxXIChhbnkgIm5vbi13b3JkIgorICAgICAgICAgICAgICAgICAgICAgICAgY2hhcmFjdGVyKS4KKworICAgICAgICAgIFw8ICAgICAgSFM6IE1hdGNoIGJlZ2luIG9mIHdvcmQuCisgICAgICAgICAgXD4gICAgICBIUzogTWF0Y2ggZW5kIG9mIHdvcmQuCisKKworT1BUSU9OUworICAgICAgICBUaGUgcGFja2FnZSBpcyBzZWxlY3RlZCB3aXRoIHRoZXNlIG9wdGlvbiBmbGFnczoKKworICAgICAgICAgIFJFX1BDUkUKKyAgICAgICAgICBSRV9UUkFESVRJT05BTAorCisgICAgICAgIFRoZXNlIGZsYWdzIGFyZSBhbHNvIHVzZWQgZm9yIHRoZSBIX1JFR0VYUF9QQUNLQUdFIGRyaXZlcgorICAgICAgICBob29rLgorCisKKyAgICAgICAgVHJhZGl0aW9uYWwgcmVndWxhciBleHByZXNzaW9ucyB1bmRlcnN0YW5kIG9uZSBvcHRpb246CisKKyAgICAgICAgICBSRV9FWENPTVBBVElCTEUKKworCisgICAgICAgIFBDUkUgdW5kZXJzdGFuZHMgdGhlc2Ugb3B0aW9uczoKKworICAgICAgICAgIFJFX0FOQ0hPUkVECisgICAgICAgICAgUkVfQ0FTRUxFU1MKKyAgICAgICAgICBSRV9ET0xMQVJfRU5ET05MWQorICAgICAgICAgIFJFX0RPVEFMTAorICAgICAgICAgIFJFX0VYVEVOREVECisgICAgICAgICAgUkVfTVVMVElMSU5FCisgICAgICAgICAgUkVfVU5HUkVFRFkKKyAgICAgICAgICBSRV9OT1RCT0wKKyAgICAgICAgICBSRV9OT1RFT0wKKyAgICAgICAgICBSRV9OT1RFTVBUWQorCitISVNUT1JZCisgICAgICAgIExETXVkIDMuMy41OTYgaW1wbGVtZW50ZWQgdGhlIGNvbmN1cnJlbnQgdXNlIG9mIGJvdGggcGFja2FnZXMuCisKK1NFRSBBTFNPCisgICAgICAgIGhzcmVnZXhwKEMpLCBwY3JlKEMpLCByZWdleHBfcGFja2FnZShIKSwgcmVnZXhwKEUpLCByZWdleHBsb2RlKEUpLAorICAgICAgICByZWdtYXRjaChFKSwgcmVncmVwbGFjZShFKSwgcmVnZXhwX3BhY2thZ2UoRSksIGludm9jYXRpb24oRCkKZGlmZiAtLWdpdCBhL2RvYy9jb25jZXB0cy9ydGZtIGIvZG9jL2NvbmNlcHRzL3J0Zm0KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMGM1NjZmZQotLS0gL2Rldi9udWxsCisrKyBiL2RvYy9jb25jZXB0cy9ydGZtCkBAIC0wLDAgKzEsMzMgQEAKK0NPTkNFUFQKKyAgICAgICAgcnRmbSAtIHJlYWQgdGhlIGZ1Y2tpbmcgbWFudWFsCisKK1VQREFURQorICAgICAgICBNYXRlZXNlLCAxNS1KdW4tOTMsIDAzOjE1IE1FVAorCitTWU5PUFNJUworICAgICAgICBydGZtCisKKyAgICAgICAgT1BUSU9OUyBOb25lLCB5b3UgaGF2ZSB0byByZWFkIHRoZSBtYW51YWwgZm9yIGFuIGFuc3dlci4KKworREVTQ1JJUFRJT04KKyAgICAgICAgVXNlZCB3aGVuIGxhenkgcGVvcGxlIGFzayBzdHVwaWQgIHF1ZXN0aW9ucy4gIE5vcm1hbHkgIGNyaWVkCisgICAgICAgIG91dCBpbiB2YWluLgorCitGSUxFUworICAgICAgICAvZGV2L251bGwKKworRU5WSVJPTk1FTlQKKyAgICAgICAgQW55LgorCitDUkVESVRTCisgICAgICAgIEJlcnQgTmFzZSwgd2hvIGVsc2U/CisKK1NFRSBBTFNPCisgICAgICAgIG1hbihIKQorCitESUFHTk9TVElDUworICAgICAgICBJcyBhbiBkaWFnbm9zdGljLiBTaW5jZSB5b3UgYXJlIHJlYWRpbmcgdGhpcyB5b3UgYXJlIGdldHRpbmcKKyAgICAgICAgdGhlIGlkZWEuCisKK0JVR1MKKyAgICAgICAgSGEhCmRpZmYgLS1naXQgYS9kb2MvY29uY2VwdHMvc2VjdXJlIGIvZG9jL2NvbmNlcHRzL3NlY3VyZQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5hMjk0YTVlCi0tLSAvZGV2L251bGwKKysrIGIvZG9jL2NvbmNlcHRzL3NlY3VyZQpAQCAtMCwwICsxLDUyIEBACitUSEVNQToKKwlzZWN1cmUtVmVyemVpY2huaXNzZQorCitGVU5LVElPTjoKKwlNYWdpZXIgaGFiZW4gZGllIE1vZWdsaWNoa2VpdCBpbiBpaHJlbiBHaWxkZW4gb2RlciBSZWdpb25zLQorCXZlcnplaWNobmlzc2VuIC9zZWN1cmUgVmVyemVpY2huaXNzZSBhbnp1bGVnZW4sIGluIGRlbmVuIERhdGVuIGRhbm4KKwl2b3IgTGVzZXp1Z3JpZmZlbiBhbmRlcmVyIE1hZ2llciBnZXNjaHVldHp0IHNpbmQuIExlc2VyZWNodGUgaW4gZGllc2VuCisJVmVyemVpY2huaXNzZW4gaGFiZW4gZ3J1bmRzYWV0emxpY2ggbnVyIGRpZWplbmlnZW4sIGRpZSBkb3J0IGF1Y2gKKwlTY2hyZWlicmVjaHRlIGhhYmVuLiBEaWVzZSBWZXJ6ZWljaG5pc3NlIHNpbmQgZnVlciAoUXVlc3QtKVJhZXRzZWwgb2RlcgorCXNjaHdpZXJpZ2UgTlBDcyBtaXQgdmllbGVuIFN0dWZlbnB1bmt0ZW4gZ2VkYWNodC4gRGllc2UgVmVyemVpY2huaXNzZQorCXNpbmQgYXVzZHJ1ZWNrbGljaCBfbmljaHRfIGRhenUgZ2VkYWNodCwgZG9ydCBnYW56ZSBHZWJpZXRlIG9kZXIgUXVlc3RzCisJYWJ6dWxlZ2VuLCBkYSBiZWkgUHJvYmxlbWVuIGFuZGVyZSBNYWdpZXIgbnVyIG5vY2ggc2VociBzY2h3ZXIgaGVsZmVuCisJa29lbm5lbi4gQXVzIGRpZXNlbSBHcnVuZCBzaW5kIGRpZSBSZWdpb25zbWFnaWVyIGdlaGFsdGVuIGRhcmF1ZiB6dQorCWFjaHRlbiwgZGFzcyBkaWVzZSBWZXJ6ZWljaG5pc3NlIG51ciBtaXQgQmVkYWNodCB2ZXJ3ZW5kZXQgd2VyZGVuLgorCVNvbGx0ZSBkYXMgZ2FuemUgYXVzYXJ0ZW4gdW5kIHVlYmVydHJpZWJlbiB3ZXJkZW4sIHNvIHdpcmQgZGVyIFNjaHV0egorCWRlciBzZWN1cmUgVmVyemVpY2huaXNzZSBpbiBkZW4gYmV0cm9mZmVuZW4gR2ViaWV0ZW4vUmVnaW9uZW4gd2llZGVyCisJYXVmZ2Vob2JlbiEKKworSElOV0VJUzoKKwlFcyBpc3QgX25pY2h0XyBtb2VnbGljaCBnYW56ZSBWZXJ6ZWljaG5pc2JhZXVtZSBpbiBlaW4gc2VjdXJlLworCVZlcnplaWNobmlzIGFienVsZWdlbi4gQW5kZXJzIGZvcm11bGllcnQ6CisgIFVudGVydmVyemVpY2huaXNzZSB2b24gc2VjdXJlLyBnZW5pZXNzZW4gX2tlaW5lbl8gYmVzb25kZXJlbiBTY2h1dHouCisKK0JFSVNQSUVMOgorCisJbyByaWNodGlnZXIgRWluc2F0eiBpbiBlaW5lbSBmaWt0aXZlbiBzdGFuZGFyZCBpbmNsdWRlIGZpbGUuLi4KKworCSAgI2RlZmluZSBIT01FKHgpICAgICIvZC9yZWdpb24vbWFnaWVybmFtZS9tZWluZ2ViaWV0LyIreAorCSAgI2RlZmluZSBOUEMoeCkgICAgIEhPTUUoIm5wYy8iK3gpCisgICAgIC0+IC9kL3JlZ2lvbi9tYWdpZXJuYW1lL21laW5nZWJpZXQvbnBjLworCSAgI2RlZmluZSBPQkooeCkgICAgIEhPTUUoIm9iai8iK3gpCisgICAgIC0+IC9kL3JlZ2lvbi9tYWdpZXJuYW1lL21laW5nZWJpZXQvb2JqLworCSAgI2RlZmluZSBST09NKHgpICAgIEhPTUUoInJvb20vIit4KQorICAgICAtPiAvZC9yZWdpb24vbWFnaWVybmFtZS9tZWluZ2ViaWV0L3Jvb20vCisJICAjZGVmaW5lIFNFQ1VSRSh4KSAgSE9NRSgic2VjdXJlLyIreCkKKyAgICAgLT4gL2QvcmVnaW9uL21hZ2llcm5hbWUvbWVpbmdlYmlldC9zZWN1cmUvCisKKworCW8gZmFsc2NoZXIgKHdpcmt1bmdzbG9zZXIpIEVpbnNhdHogbWl0IGVpbmVtIFZlcnplaWNobmlzYmF1bToKKworCSAgI2RlZmluZSBIT01FKHgpICAgICIvZC9yZWdpb24vbWFnaWVybmFtZS9tZWluZ2ViaWV0L3NlY3VyZS8iK3gKKwkgICNkZWZpbmUgTlBDKHgpICAgICBIT01FKCJucGMvIit4KQorICAgICAtPiAvZC9yZWdpb24vbWFnaWVybmFtZS9tZWluZ2ViaWV0L3NlY3VyZS9ucGMvCisJICAjZGVmaW5lIE9CSih4KSAgICAgSE9NRSgib2JqLyIreCkKKyAgICAgLT4gL2QvcmVnaW9uL21hZ2llcm5hbWUvbWVpbmdlYmlldC9zZWN1cmUvb2JqLworCSAgI2RlZmluZSBST09NKHgpICAgIEhPTUUoInJvb20vIit4KQorICAgICAtPiAvZC9yZWdpb24vbWFnaWVybmFtZS9tZWluZ2ViaWV0L3NlY3VyZS9yb29tLworCisKK0xFVFpURSBBZU5ERVJVTkc6CisgIDA0LjA5LjIwMTEgWmVzc3RyYQorCmRpZmYgLS1naXQgYS9kb2MvY29uY2VwdHMvc2ltdWxfZWZ1biBiL2RvYy9jb25jZXB0cy9zaW11bF9lZnVuCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjhjNGEyYTAKLS0tIC9kZXYvbnVsbAorKysgYi9kb2MvY29uY2VwdHMvc2ltdWxfZWZ1bgpAQCAtMCwwICsxLDE0IEBACitDT05DRVBUCisgICAgICAgIHNpbXVsX2VmdW4KKworREVTQ1JJUFRJT04KKyAgICAgICAgVGhlIHNpbXVsX2VmdW4gb2JqZWN0IGlzIGF1dG9tYWdpY2FsbHkgc29ydC1vZiBpbmhlcml0ZWQgYnkKKyAgICAgICAgZXZlcnkgb2JqZWN0LiBUaGF0IGZ1bmN0aW9ucyB0aGF0IGFyZSBkZWZpbmVkIGluIGl0IGNhbiBiZQorICAgICAgICBhY2Nlc3NlZCBqdXN0IGxpa2UgZWZ1bnMgb3IgaW5oZXJpdGVkIGZ1bmN0aW9ucyBieSBldmVyeQorICAgICAgICBvYmplY3QgKGV4Y2VwdCB0aGUgbWFzdGVyIG9iamVjdCkuIFRvIGdldCBhY2Nlc3MgdG8gZWZ1bnMgdGhhdAorICAgICAgICBhcmUgb3ZlcmxvYWRlZCBieSB0aGUgc2ltdWxfZWZ1biBvYmplY3QsIHlvdSBjYW4gdXNlIHRoZQorICAgICAgICBlZnVuOjpmdW5jdGlvbigpIHRvIGJ5cGFzcyB0aGUgc2ltdWxfZWZ1biAodW5sZXNzIHRoZQorICAgICAgICBzaW11bF9lZnVuIG9iamVjdCBoYXMgZGVmaW5lZCB0aGUgZnVuY3Rpb24gYXMgYGBub21hc2snJykuCisKK1NFRSBBTFNPCisgICAgICAgIGdldF9zaW11bF9lZnVuKE0pLCBpbmhlcml0YW5jZShMUEMpLCBvcGVyYXRvcnMoTFBDKQpkaWZmIC0tZ2l0IGEvZG9jL2NvbmNlcHRzL3Rlcm1pbmFscyBiL2RvYy9jb25jZXB0cy90ZXJtaW5hbHMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uM2RkMzE3MQotLS0gL2Rldi9udWxsCisrKyBiL2RvYy9jb25jZXB0cy90ZXJtaW5hbHMKQEAgLTAsMCArMSwxOCBAQAordGVybWluYWxzCisgQkVTQ0hSRUlCVU5HOgorICAgICBFaW4gU3BpZWxlciBrYW5uIHNlaW4gVGVybWluYWwgbWl0ICJzdHR5IiBpbiB2ZXJzY2hpZWRlbmUgTW9kaQorICAgICBzY2hhbHRlbi4gTWl0IEFOU0ktRXNjYXBlLVNlcXVlbnplbiBrYW5uIG1hbiBkZW1lbnRzcHJlY2hlbmQgZGFubgorICAgICBkaWVzZW0gU3BpZWxlciBmYXJiaWdlLCB1bnRlcnN0cmljaGVuZSwgYmxpbmtlbmRlIFRleHRlIGF1ZiBkZW4KKyAgICAgQmlsZHNjaGlybSB6YXViZXJuLCB3ZW5uIGRpZXNlciBlcyB1bnRlcnN0dWV0enQuCisKKyAgICAgRGllIGRlcnplaXQgdW50ZXJzdHVldHp0ZW4gVGVybWluYWxzIHNpbmQ6CisJZHVtYjogICBiaXR0ZSBrZWluZSBFc2NhcGVzZXF1ZW56ZW4gbnV0emVuIC4uLgorCXZ0MTAwOiAgdmVyc3RlaHQgcmV2ZXJzZSwgYm9sZCwgYmxpbmtpbmcKKwlhbnNpOiAgIHZlcnN0ZWh0IHZ0MTAwIHVuZCBGYXJiZW4KKworICAgICBEaWUgbnV0emJhcmVuIEZhcmJjb2RlcyBzaW5kIHVudGVyIC9zeXMvYW5zaS5oIGRlZmluaWVydC4KKworIFNJRUhFIEFVQ0g6CisgICAgIFBfVFRZLCBzdHR5CisKKyAyMS4gTWFlcnogMjAwNCBHbG9pbnNvbgpkaWZmIC0tZ2l0IGEvZG9jL2NvbmNlcHRzL3RpY2tzIGIvZG9jL2NvbmNlcHRzL3RpY2tzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmEzMGYxOGYKLS0tIC9kZXYvbnVsbAorKysgYi9kb2MvY29uY2VwdHMvdGlja3MKQEAgLTAsMCArMSw2NiBAQAorKiBXYXMgc2luZCBUaWNrcz8KK0VpbiBUaWNrIGlzdCBlaW5lIE1hc3NlaW5oZWl0LCBkaWUgbWFuIGZydWVoZXIgZWluZ2VmdWVocnQgaGF0LCB1bSB6dQordmVyaGluZGVybiwgZGFzcyBlaW4gT2JqZWt0L01hZ2llciBkZW4gRHJpdmVyIGJlbGllYmlnIGxhbmcgYmVzY2hhZWZ0aWdlbgora2FubiB1bmQgbmllbWFuZCBhbmRlcnMgbWVociB6dW0gWnVnZSBrb21tdC4KKworKiBTaW5kIGVzIGFsc28gWmVpdGVpbmhlaXRlbj8gT2RlciBSZWNoZW5vcGVyYXRpb25lbj8KK0FtIGVoZXN0ZW4gZW50c3ByaWNodCBlaW4gVGljayBkZXIgUmVjaGVub3BlcmF0aW9uLiBCZXNzZXIgZ2VzYWd0OiBqZWRlcgorTFBDLU9wZXJhdG9yLCBqZWRlcyBMUEMtU2NobHVlc3NlbHdvcnQgdW5kIGplZGUgZWZ1biwgZGllIG1hbiBydWZ0LCB2ZXJyaW5nZXJ0CitkaWUgenVyIFZlcmZ1ZWd1bmcgc3RlaGVuZGVuIFRpY2tzIHVtIG1pbmRlc3RlbnMgMTogU293YXMgd2llICssIC0sIGlmKCksCitlbHNlLCBzd2l0Y2goKSwgZXRjLgorSGllcmJlaSBzdGVoZW4gZGllIFRpY2tzLCBkaWUgZWluIFN0dWVjayBDb2RlIGJyYXVjaHQgdW5kIGRpZSBaZWl0LCBkaWUgZGVzc2VuCitBdXNmdWVocnVuZyBicmF1Y2h0LCBpbiBrZWluZW0ga29uc3RhbnRlbiBWZXJoYWVsdG5pcy4gRWluIFN0dWVjayBDb2RlCiticmF1Y2h0IGltbWVyIGRpZSBnbGVpY2hlIGRlZmluaWVydGUgTWVuZ2UgYW4gVGlja3MsIGFiZXIga2FubiBkYWZ1ZXIKK3VudGVyc2NoaWVkbGljaGUgWmVpdGVuIGJlbm9ldGlnZW4gKHouYi4gd2VubiBtYW4gZXJzdCB3YXMgZWluc3dhcHBlbiBtdXNzKS4KK0ViZW5zbyBicmF1Y2hlbiAyIFN0dWVjayBDb2RlLCBkaWUgZGllIGdsZWljaGUgTWVuZ2UgVGlja3MgYnJhdWNoZW4sIG9mdAordW50ZXJzY2hpZWRsaWNoIGxhbmcuCisKKyogV2llIG1lc3NlIGljaCBUaWNrcz8KK0RpZSBGdW5rdGlvbiBnZXRfZXZhbF9jb3N0KCkgbGllZmVydCBlaW5lbSB6dXJ1ZWNrLCB3aWV2aWVsZSBUaWNrcyBtYW4gaW4KK2RpZXNlbSBBdXNmdWVocnVuZ3N0aHJlYWQgbWFuIG5vY2ggdmVyYnJhdGVuIGRhcmYsIGJpcyBkaWUgQXVzZnVlaHJ1bmcKK2FiZ2Vicm9jaGVuIHdpcmQuIFdpbGwgbWFuIHdpc3Nlbiwgd2lldmllbCBldHdhcyBrb3N0ZXQsIHJ1ZnQgbWFuIHZvcmhlcgorZ2V0X2V2YWxfY29zdCgpLCBtZXJrdCBzaWNoIGRhcyB1bmQgdmVyZ2xlaWNodCBtaXQgZGVtIEVyZ2VibmlzIHZvbgorZ2V0X2V2YWxfY29zdCgpIGRhbmFjaC4KKworKiBXaWV2aWVsIHRpY2tzIHZlcmJyYXVjaHQgZGllc2UgdW5kIGRpZXNlIE9wZXJhdGlvbi9GdW5rdGlvbj8KK0plZGUgZWxlbWVudGFyZSBPcGVyYXRpb24gdmVyYnJhdWNodCBlcnN0bWFsIGVpbmVuIFRpY2suIEFiZXI6IGVzIGdpYnQgRWZ1bnMKK3VuZCBPcGVyYXRvcmVuLCBkaWUgc2VociBncm9zc2UgRGF0ZW5tZW5nZW4gbWFuaXB1bGllcmVuIChrb2VubmVuKS4gRGFtaXQgbWFuCittaXQgZGllc2VuIG5pY2h0IG1lZ2FieXRld2Vpc2UgRGF0ZW4gZnVlciBlaW5lbiBUaWNrIG1hbmlwdWxpZXJlbiBrYW5uLCBnaWJ0CitlcyBpbiBMRE11ZCBkaWUgc29nLiBkeW5hbWlzY2hlbiBFdmFsY29zdHMsIGJlaSBkZW5lbiBqZSBuYWNoIFVtZmFuZyBkZXIKK21hbmlwdWxpZXJ0ZW4gRGF0ZW4gVGlja3MgYWJnZXpvZ2VuIHdlcmRlbi4gQnNwOiBzdHIxICsgc3RyMiBrb3N0ZXQgdW1zbyBtZWhyLAoramUgZ3JvZXNzZXIgc3RyMSB1bmQgc3RyMiBzaW5kLgorV2VubiBtYW4gZXMgZ2VuYXUgd2lzc2VuIHdpbGwsIHNvbGx0ZSBtYW4gcGVyIGdldF9ldmFsX2Nvc3QoKSBtZXNzZW4sIGRpZXMgaXN0CituYXR1ZXJsaWNoIGZ1ZXIgZGllIGR5bmFtaXNjaGVuIEV2YWxjb3N0cyBzY2h3aWVyaWdlci4gR2dmLiBmcmFndCBkZW4gRU0gZnVlcgorRHJpdmVyL011ZGxpYiwgb2IgZXIgZGFzIHdlaXNzLgorCisqIFdpZXZpZWwgc3RlaGVuIGRlbSBEcml2ZXIgcHJvIEhlYXJ0YmVhdCB6dXIgVmVyZnVlZ3VuZz8gCitEYXMgaXN0IHNvIGdsb2JhbCBuaWNodCB6dSBiZWFudHdvcnRlbi4gQWJlcjogcHJvIEF1c2Z1ZWhydW5nc3RocmVhZCBzdGVoZW4KK3VucyBtb21lbnRhbiAxNTAwMDAwIFRpY2tzIHp1ciBWZXJmdWVndW5nLiBTbyBlaW4gQXVzZnVlaHJ1bmdzdGhyZWFkIHN0YXJ0ZXQKK3ouQi4sIHdlbm4gZGVyIERyaXZlciBpbiBlaW5lbSBPYmpla3QgaGVhcnRfYmVhdCgpIHJ1ZnQsIGF1Y2ggcmVzZXQoKSwKK2NsZWFuX3VwKCkgb2RlciB3ZW5uIGRlciBEcml2ZXIgZWluIFNwaWVsZXJrb21tYW5kbyBhdXN3ZXJ0ZXQuIENhbGxvdXRzIHNpbmQKK2VpbiBTcGV6aWFsZmFsbCwgaGllcmJlaSB0ZWlsZW4gc2ljaCBkaWUgImdsZWljaHplaXRpZyIgKGltIGdsZWljaGVuCitCYWNrZW5kLVp5a2x1cyBkZXMgRHJpdmVycykgdW5kIHVudGVyIGRlciBnbGVpY2hlbiBVSUQgYXVzZ2VmdWVocnRlbiBDYWxsb3V0cworbGV0enRlbmRsaWNoIGRpZSBUaWNrcy4KKworKiBXYXMgcGFzc2llcnQsIHdlbm4gZXMgZG9jaCBtYWwgbmljaHQgcmVpY2h0PworSW4gZGVtIEZhbGwgZ2lidCBlcyBkZW4gYmVydWVobXQtYmVydWVjaGlndGVuICd0b28gbG9uZyBldmFsdWF0aW9uJy1GZWhsZXIKKyhUTEUpIHVuZCBkaWUgQXVzZnVlaHJ1bmcgd2lyZCBhbiBkZXIgU3RlbGxlIGFiZ2Vicm9jaGVuLCB3byBkaWUgQW56YWhsIGFuCit2ZXJmdWVnYmFyZW4gVGlja3MgYXVmIDAgZmFlbGx0LgorCisqIFdpZSBmaW5kZSBpY2ggaGVyYXVzLCB3aWV2aWVsIExhdWZ6ZWl0IGVpbmUgYmVzdGltbXRlIE9wZXJhdGlvbiBiZW5vZXRpZ3Q/CitIaWVyYmVpIGhlbGZlbiBlaW5lbSBkaWUgdmVyYnJhdWNodGVuIFRpY2tzIG5pY2h0IHdlaXRlci4gVW0gZGllIExhdWZ6ZWl0CitlaW5lcyBTdHVlY2tzIENvZGUgenUgYmVzdGltbWVuLCBtaXNzdCBtYW4gdm9yaGVyIGRpZSBha3R1ZWxsZSBaZWl0IG1pdAorZ2VudWVnZW5kIGdyb3NzZXIgR2VuYXVpZ2tlaXQsIGZ1ZWhydCBzZWluZW4gQ29kZSwgbWlzc3QgZXJuZXV0IGRpZSBaZWl0IHVuZAorYmlsZGV0IGRpZSBEaWZmZXJlbnouIERpZSBnZW5hdWVzdGUgTW9lZ2xpY2hrZWl0IGRlciBaZWl0bWVzc3VuZyBpbSBNdWQgc3RlbGx0CitkaWUgZWZ1biB1dGltZSgpIGRhciwgd2VsY2hlIGRpZSBaZWl0IGluIE1pa3Jvc2VrdW5kZW4gZXJtaXR0ZWxuIGthbm4uCitCZWlzcGllbDoKKyAgaW50ICp6ZWl0MSA9IHV0aW1lKCk7CisgIC8vIGNvZGUgYXVzZnVlaHJlbgorICBpbnQgKnplaXQyID0gdXRpbWUoKTsKKyAgaW50IHVzZWMgPSAoemVpdDJbMF0gLSB6ZWl0MVswXSkgKiAxMDAwMDAwIC0gemVpdDFbMV0gKyB6ZWl0MlsxXTsKKworU0lFSEUgQVVDSDoKKyAgZWZmaXppZW56LCBtZW1vcnksIGdvb2RzdHlsZQorCiswNC4wOS4yMDA4LCBaZXNzdHJhCisKZGlmZiAtLWdpdCBhL2RvYy9jb25jZXB0cy90bHMgYi9kb2MvY29uY2VwdHMvdGxzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjI1OTQ2YTIKLS0tIC9kZXYvbnVsbAorKysgYi9kb2MvY29uY2VwdHMvdGxzCkBAIC0wLDAgKzEsNzMgQEAKK1BSRUxJTUlOQVJZCitDT05DRVBUCisgICAgICAgIHRscyAodHJhbnNwb3J0IGxheWVyIHNlY3VyaXR5KQorCitERVNDUklQVElPTgorCVRMUyBzdGFuZHMgZm9yIFRyYW5zcG9ydCBMYXllciBTZWN1cml0eSB3aGljaCBpcyB0aGUgc3VjY2Vzc29yCisJb2YgdGhlIHdlbGwga25vd24gU1NMIChTZWN1cmUgU29ja2V0IExheWVyKS4gQm90aCB0ZWNobmlxdWVzIAorCXByb3ZpZGUgYSB3YXkgdG8gYXV0aGVudGljYXRlIGFuZCBlbmNyeXB0IHRoZSBkYXRhIHNlbmQgdGhyb3VnaAorCWEgbmV0d29yayBjb25uZWN0aW9uLgorCUJ5IGVuYWJsaW5nIFRMUyBkdXJpbmcgY29tcGlsYXRpb24gb2YgdGhlIGRyaXZlciB5b3UgY2FuIHByb3ZpZGUKKwlhIHNlY3VyZSBjaGFubmVsIGludG8gdGhlIG11ZCB0byB5b3VyIHBsYXllcnMuCisJSW4gZGlmZmVyZW5jZSB0byBvdGhlciBzb2x1dGlvbnMgYXMgInNzbHdyYXAiIG9yICJzdHVubmVsIiB0aGUKKwlkcml2ZXIgaW50ZWdyYXRlZCBhcHByb2FjaCBoYXMgdGhlIGFkdmFudGFnZSB0aGF0IHRoZSBtdWQgc2VlcyAKKwl0aGUgcmVhbCBJUCBvZiB0aGUgcGxheWVyLCBub3QgdGhlIElQIG9mIHRoZSBsb2NhbCBtdWQgaG9zdC4KKworVVNBR0UKKwlUbyB1c2UgVExTIGNvbmZpZ3VyZSB5b3VyIGRyaXZlciB3aXRoIC0tZW5hYmxlLXRscyBvcHRpb24uCisJQWZ0ZXIgc3RhcnRpbmcgeW91ciBkcml2ZXIgeW91IGhhdmUgZml2ZSBuZXcgZWZ1bnMKKwkodGxzX2luaXRfY29ubmVjdGlvbigpLCB0bHNfZGVpbml0X2Nvbm5lY3Rpb24oKSwgdGxzX2Vycm9yKCksCisJIHRsc19xdWVyeV9jb25uZWN0aW9uX2luZm8oKSwgdGxzX3F1ZXJ5X2Nvbm5lY3Rpb25fc3RhdGUoKSkuCisKKwlZb3UgY2FuIHN3aXRjaCBvbiBUTFMgYnkgY2FsbGluZyB0bHNfaW5pdF9jb25uZWN0aW9uKCkuCisJVGhpcyBjYW4gaGFwcGVuIGluIHRocmVlIHdheXM6CisKKwkxKSBpbiB0ZWxuZXRfbmVnKCkKKworICAgICAgICAgICAgQWR2YW50YWdlIG9mIHRoaXMgbWV0aG9kIGlzIHRoYXQgeW91IGNhbiBvZmZlciBUTFMgb24gYSBub3JtYWwgCisgICAgICAgICAgICBtdWQgcG9ydC4gSWYgeW91IGhhdmUgYSBsaW1pdGVkIG51bWJlciBvZiBwb3J0cyB0aGlzIGNhbiAKKyAgICAgICAgICAgIGJlY29tZSBpbXBvcnRhbnQuIFRoZSBUTFMgY29ubmVjdGlvbiB3aWxsIGJlIHN0YXJ0ZWQgYnkgCisgICAgICAgICAgICB0aGUgY2xpZW50IHdpdGggaGVscCBvZiB0ZWxuZXQgb3B0aW9uIFNUQVJUVExTLiBDdXJyZW50bHkKKyAgICAgICAgICAgIHRoZXJlIGFyZSBubyBtdWRjbGllbnRzIHRoYXQgc3VwcG9ydCB0aGlzIG1ldGhvZC4KKyAgICAgICAgICAgIAorICAgICAgICAgICAgWW91IHdpbGwgaGF2ZSB0byBpbXBsZW1lbnQgdGhlIHRlbG5ldCBvcHRpb24gU1RBUlRUTFMgKDQ2KSBmb3IKKyAgICAgICAgICAgIHRoaXMgbWV0aG9kLiBUaGUgZHJhZnQgZm9yIHRoaXMgY2FuIGJlIGZvdW5kIGhlcmU6CisgICAgICAgICAgICBodHRwOi8vd3d3LmlldGYub3JnL3Byb2NlZWRpbmdzLzk5bWFyL0ktRC9kcmFmdC1pZXRmLXRuMzI3MGUtdGVsbmV0LXRscy0wMS50eHQKKyAgICAgICAgICAgIENhbGwgdGxzX2luaXRfY29ubmVjdGlvbigpIHRvIGluaXRpYXRlIHRoZSBUTFMgaGFuZHNoYWtlLgorCisKKwkyKSBpbiBtYXN0ZXJfb2ItPmNvbm5lY3QoKQorCisgICAgICAgICAgICBBZHZhbnRhZ2Ugb2YgdGhpcyBtZXRob2QgaXMgdGhhdCB5b3VyIHVzZXJzIGNhbiBjb25uZWN0IHdpdGgKKyAgICAgICAgICAgIGFueSBwcm9ncmFtIHRoYXQgc3VwcG9ydHMgVExTL1NTTC4gRXhhbXBsZXMgYXJlIHRlbG5ldC1zc2wsCisgICAgICAgICAgICBzc2x3cmFwIG9yIHN0dW5uZWwuIERpc2FkdmFudGFnZSBpcyB0aGF0IHlvdSBoYXZlIHRvIHNwZW5kCisgICAgICAgICAgICBhIGRlZGljYXRlZCBwb3J0IGZvciB0aGlzLgorICAgICAgICAgICAgCisgICAgICAgICAgICBZb3UgaGF2ZSB0byBjYWxsIHRsc19pbml0X2Nvbm5lY3Rpb24oKSBhcyBmaXJzdCBjb21tYW5kCisgICAgICAgICAgICBhZnRlciB0aGUgcGxheWVyIGNvbm5lY3RlZCAobm9ybWFsbHkgaW4gbWFzdGVyX29iLT5jb25uZWN0KCkpCisKKyAgICAgICAgMykgaW4gYW4gaW50ZXJhY3RpdmUgb2JqZWN0IHVzaW5nIGEgY2FsbGJhY2suCisKKyAgICAgICAgICAgIFRoaXMgbWV0aG9kIGlzIHNpbWlsYXIgdG8gbWV0aG9kICgxKSwgYnV0IG5vdCBsaW1pdGVkIHRvCisgICAgICAgICAgICB0ZWxuZXQ6IGl0IGlzIHVzZWZ1bCBmb3IgaW1wbGVtZW50aW5nIHByb3RvY29scyB0aHRhIHVzZQorICAgICAgICAgICAgU1RBUlRUTFMgbGlrZSBTTVRQIG9yIElNQVAuIHRsc19pbml0X2Nvbm5lY3Rpb24oKSBjYW4gYmUKKyAgICAgICAgICAgIGNhbGxlZCBhdCBhbnkgdGltZSBieSB0aGUgaW50ZXJhY3RpdmUgb2JqZWN0LgorCisgICAgICAgICAgICBZb3UgbXVzdCBub3Qgd3JpdGUgdG8gdGhlIGNvbm5lY3Rpb24gYWZ0ZXIgY2FsbGluZyB0aGlzCisgICAgICAgICAgICBlZnVuIHVudGlsIHRoZSBjYWxsYmFjayBpcyBleGVjdXRlZCAodGhlIHByb21wdCB3aWxsCisgICAgICAgICAgICBiZSBzdXByZXNzZWQgYXV0b21hdGljYWxseSBkdXJpbmcgdGhpcyB0aW1lKS4KKworICAgICAgICBUbyB0ZXN0IHlvdXIgY29kZSwgeW91IGNhbiB1c2UgdGhlIG9wZW5zc2wgYmluYXJ5LgorICAgICAgICBgb3BlbnNzbCBzX2NsaWVudCAtY29ubmVjdCBob3N0OnBvcnQnIHNob3VsZCBkaXNwbGF5IHlvdXIgY2VydGlmaWNhdGUKKyAgICAgICAgYW5kIGFueXRoaW5nIHlvdSB3cml0ZSBhZnRlciB0aGUgY2FsbGJhY2sgaXMgZXhlY3V0ZWQuIElmIHlvdQorICAgICAgICBlbmNvdW50ZXIgdGhlIGVycm9yIG1lc3NhZ2UgYFNTTDNfR0VUX1JFQ09SRDogd3JvbmcgdmVyc2lvbiBudW1iZXInCisgICAgICAgIHlvdSdyZSBwcm9iYWJseSB3cml0aW5nIHRvIHRoZSBjb25uZWN0aW9uIHdoaWxlIHlvdSBzaG91bGQgbm90LgorCitCVUcKKyAgICAgICAgVGhpcyBtYW5wYWdlIG1pZ2h0IGJlIG5vdCBxdWl0ZSB1cCB0byBkYXRlIHdpdGggdGhlIGltcGxlbWVudGF0aW9uLgorCitISVNUT1JZCisgICAgICAgIEludHJvZHVjZWQgaW4gTERNdWQgMy4zLjQ3NCBhbmQgZm9sbG93aW5nLCBiYWNrcG9ydGVkIHRvIDMuMi4xMS4KKworU0VFIEFMU08KKyAgICAgICAgdGxzXyogZWZ1bnMKZGlmZiAtLWdpdCBhL2RvYy9jb25jZXB0cy91aWRzIGIvZG9jL2NvbmNlcHRzL3VpZHMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNzI0YTdhZgotLS0gL2Rldi9udWxsCisrKyBiL2RvYy9jb25jZXB0cy91aWRzCkBAIC0wLDAgKzEsOTYgQEAKK0NPTkNFUFQKKyAgICAgICAgdWlkcyAodXNlcmlkcykKKworREVTQ1JJUFRJT04KKyAgICAgICAgRXZlcnkgb2JqZWN0IGluIHRoZSBtdWQgaXMgYXR0cmlidXRlZCB3aXRoIGEgdXNlci1pZCAndWlkJzogYSBzdHJpbmcKKyAgICAgICAgd2hpY2ggYXNzb2NpYXRlcyB0aGUgb2JqZWN0IHdpdGggYSBjZXJ0YWluICd1c2VyJyAoYWthICd3aXphcmQnIG9yCisgICAgICAgICdjcmVhdG9yJywgdGhvdWdoIGl0IGlzIG5vdCBsaW1pdGVkIHRvIHRoYXQpLiBUaGUgdWlkIGNhbiBiZSAwLCB3aGljaAorICAgICAgICBpbnRlcm5hbGx5IGlzIHRoZSBkZWZhdWx0LXVpZC4KKworICAgICAgICBUaGUgdWlkIHNlcnZlcyBhIGR1YWwgcHVycG9zZTogb24gdGhlIG9uIGhhbmQgaXQgaXMgdXNlZCB0byBnYXRoZXIKKyAgICAgICAgc3RhdGlzdGljcyBhYm91dCB0aGUgdmFyaW91cyBncm91cHMgb2Ygb2JqZWN0cyAoaW4gdGhlIGZhbW91cworICAgICAgICAnd2l6bGlzdCcpLCBvbiB0aGUgb3RoZXIgaGFuZCB0aGUgdWlkIGNhbiBjb21lIGluIGhhbmR5IGluIHRoZQorICAgICAgICBpbXBsZW1lbnRhdGlvbiBvZiBzZWN1cml0eSBzeXN0ZW1zLgorCisgICAgICAgIFRoZSB1aWQgb2YgYW4gb2JqZWN0IGlzIGFzc2lnbmVkIGF0IGl0cyBjcmVhdGlvbiB0aHJvdWdoIHRoZQorICAgICAgICBkcml2ZXIgaG9va3MgSF9MT0FEX1VJRFMgZm9yIGxvYWRlZCBvYmplY3RzLCBhbmQgSF9DTE9ORV9VSURTCisgICAgICAgIGZvciBjbG9uZWQgb2JqZWN0cywgYW5kIGNhbid0IGJlIGNoYW5nZWQgYWZ0ZXJ3YXJkcy4KKworICAgICAgICBUaGUgdWlkIG9mIGFuIG9iamVjdCBjYW4gYmUgcXVlcmllZCB3aXRoIHRoZSBlZnVuIGdldHVpZCgpIChyZXNwLgorICAgICAgICBjcmVhdG9yKCkgaW4gY29tcGF0LW1vZGUpLgorCisKKyAgICAgICAgRXZlcnkgb2JqZWN0IGFsc28gaGFzIGEgc2Vjb25kIHN0cmluZyBhdHRyaWJ1dGUsIHRoZSAnZWZmZWN0aXZlCisgICAgICAgIHVzZXJpZCcgb3IgJ2V1aWQnLCB3aGljaCBhbHNvIG1heSBiZSAwLiBUaGlzIHZhbHVlIHdhcyBpbnRlbmRlZCB0bworICAgICAgICBpbXBsZW1lbnQgYSBzZWN1cml0eSBzeXN0ZW0gYmFzZWQgb24gZGlmZmVyZW5jZSBiZXR3ZWVuIHRoZW9yZXRpY2FsCisgICAgICAgIGFuZCBlZmZlY3RpdmUgcGVybWlzc2lvbnMuIFNpbmNlIHRoZSBlZmZlY3RpdmVuZXNzIG9mIHRoaXMgc3lzdGVtIGlzCisgICAgICAgIGRvdWJ0ZnVsLCB0aGUgZHJpdmVyIGVuZm9yY2VzIHN1Y2ggYSB1c2Ugb25seSBhcyBhbiBvcHRpb24uCisKKyAgICAgICAgQXMgdWlkcywgZXVpZHMgYXJlIGFzc2lnbmVkIGF0IGFuIG9iamVjdHMgY3JlYXRpb24gdGhyb3VnaAorICAgICAgICB0aGUgdHdvIGFmb3JtZW50aW9uZWQgZHJpdmVyaG9va3MuIFRoZXkgY2FuIGJlIHF1ZXJpZWQgd2l0aAorICAgICAgICB0aGUgZWZ1biBnZXRldWlkKCkgYW5kIGNoYW5nZWQgd2l0aCB0aGUgZWZ1biBzZXRldWlkKCkuIENhbGxzCisgICAgICAgIHRvIHRoZSBsYXR0ZXIgYXJlIHZlcmlmaWVkIGJ5IHRoZSBtYXN0ZXIgbGZ1biB2YWxpZF9zZXRldWlkKCkuCisKKyAgICAgICAgQWRkaXRpb25hbGx5IG9iamVjdHMgY2FuIGltcG9zZSB0aGVpciB1aWQgb250byBhbiBvdGhlciBvYmplY3RzCisgICAgICAgIGV1aWQgd2l0aCB0aGUgZWZ1biBleHBvcnRfdWlkKCkuCisKKworICAgICAgICBJZiB0aGUgZHJpdmVyIGlzIHJ1biBpbiAnc3RyaWN0IGV1aWRzJyBtb2RlLCBldWlkcyBhcmUgdGFrZW4KKyAgICAgICAgbW9yZSBzZXJpb3VzbHkgdGhhbiBiZWluZyBqdXN0IGFub3RoZXIgYXR0cmlidXRlOgorICAgICAgICAgIC0gYWxsIG9iamVjdHMgbXVzdCBoYXZlIGEgbm9uLTAgdWlkLgorICAgICAgICAgIC0gb2JqZWN0cyB3aXRoIGEgMCBldWlkIGNhbid0IGxvYWQgb3IgY2xvbmUgb3RoZXIgb2JqZWN0cy4KKyAgICAgICAgICAtIHRoZSBiYWNrYm9uZSB1aWQgYXMgcmV0dXJuZWQgYnkgbWFzdGVyOjpnZXRfYmJfdWlkKCkgbXVzdAorICAgICAgICAgICAgbm90IGJlIDAuCisKKworICAgICAgICBVc2VyaWRzIGFyZSBhc3NpZ25lZCBhdCB0aGUgdGltZSBvZiB0aGUgY3JlYXRpb24gb2YgYW4gb2JqZWN0CisgICAgICAgIGJ5IGNhbGxpbmcgdGhlIGRyaXZlcmhvb2tzIEhfTE9BRF9VSURTIGFuZCBIX0NMT05FX1VJRFM6CisKKyAgICAgICAgICAgIG1peGVkIDxsb2FkX3VpZHMgY2xvc3VyZT4gKHN0cmluZyBvYmplY3RuYW1lKQorICAgICAgICAgICAgbWl4ZWQgPGNsb25lX3VpZHMgY2xvc3VyZT4ob2JqZWN0IGJsdWVwcmludCwgc3RyaW5nIG9iamVjdG5hbWUpCisKKyAgICAgICAgV2hlbiBhbiBvYmplY3QgaXMgbmV3bHkgbG9hZGVkLCB0aGUgSF9MT0FEX1VJRFMgaG9vayBpcworICAgICAgICBjYWxsZWQgd2l0aCB0aGUgb2JqZWN0IG5hbWUgYXMgYXJndW1lbnQuCisgICAgICAgIFdoZW4gYW4gb2JqZWN0IGlzIGNsb25lZCwgdGhlIEhfQ0xPTkVfVUlEUyBob29rIGlzIGNhbGxlZAorICAgICAgICB3aXRoIHRoZSBibHVlcHJpbnQgb2JqZWN0IGFzIGZpcnN0IGFuZCB0aGUgY2xvbmUncyBkZXNpZ25hdGVkCisgICAgICAgIG5hbWUgYXMgc2Vjb25kIGFyZ3VtZW50LgorICAgICAgICBJbiBib3RoIGNhc2VzIHRoZSBuZXcgb2JqZWN0IGFscmVhZHkgZXhpc3RzLCBidXQgaGFzIDAgdWlkcy4KKworICAgICAgICBGb3IgdGhlIHJlc3VsdCwgdGhlIGZvbGxvd2luZyBwb3NzaWJpbGl0aWVzIGV4aXN0ICg8bnVtPiBpcworICAgICAgICBhIG5vbi16ZXJvIG51bWJlciwgPG5vLXN0cmluZz4gaXMgYW55dGhpbmcgYnV0IGEgc3RyaW5nKToKKworICAgICAgICAgICAgICI8dWlkPiIgICAgICAgICAgICAgICAgICAgIC0+IHVpZCA9ICI8dWlkPiIsIGV1aWQgPSAiPHVpZD4iCisgICAgICAgICAgICAgKHsgIjx1aWQ+IiwgIjxldWlkPiIgfSkgICAgLT4gdWlkID0gIjx1aWQ+IiwgZXVpZCA9ICI8ZXVpZD4iCisgICAgICAgICAgICAgKHsgIjx1aWQ+IiwgPG5vLXN0cmluZz4gfSkgLT4gdWlkID0gIjx1aWQ+IiwgZXVpZCA9IDAKKworICAgICAgICBJZiBzdHJpY3QtZXVpZHMgaXMgbm90IGFjdGl2ZSwgdGhlIGZvbGxvd2luZyByZXN1bHRzIGFyZQorICAgICAgICBwb3NzaWJsZSwgdG9vOgorCisgICAgICAgICAgICAgPG51bT4gICAgICAgICAgICAgICAgICAgICAgLT4gdWlkID0gJ2RlZmF1bHQnLCBldWlkID0gMAorICAgICAgICAgICAgICh7IDxudW0+LCAiPGV1aWQ+IiB9KSAgICAgIC0+IHVpZCA9ICdkZWZhdWx0JywgZXVpZCA9ICI8ZXVpZD4iCisgICAgICAgICAgICAgKHsgPG51bT4sIDxuby1zdHJpbmc+IH0pICAgLT4gdWlkID0gJ2RlZmF1bHQnLCBldWlkID0gMAorCisKKworICAgICAgICBTbGlnaHRseSBkaWZmZXJlbnQgcnVsZXMgYXBwbHkgdG8gdGhlIChlKXVpZCBvZiB0aGUgbWFzdGVyLgorICAgICAgICBUaGUgbWFzdGVycyAoZSl1aWQgaXMgZGV0ZXJtaW5lZCBieSBhIGNhbGwgdG8KKyAgICAgICAgbWFzdGVyLT5nZXRfbWFzdGVyX3VpZCgpOgorCisgICAgICAgICAgICAgIjx1aWQiPiAtPiB1aWQgPSAiPHVpZD4iLCBldWlkID0gIjx1aWQ+IgorCisgICAgICAgIEluIG5vbi1zdHJpY3QtZXVpZHMgbW9kZSwgbW9yZSByZXN1bHRzIGFyZSBwb3NzaWJsZToKKworICAgICAgICAgICAgIDAgICAgICAgLT4gdWlkID0gMCwgZXVpZCA9IDAKKyAgICAgICAgICAgICA8bnVtPiAgIC0+IHVpZCA9ICdkZWZhdWx0JywgZXVpZCA9IDAKKworICAgICAgICBJZiB5b3VyIHVpZHMgYXJlIGluIGdlbmVyYWwgYmFzZWQgb24gZmlsZW5hbWVzLCBpdCBpcyB3aXNlIHRvIHJldHVybiBhCisgICAgICAgIHZhbHVlIGhlcmUgd2hpY2ggY2FuIG5vdCBiZSBsZWdhbGx5IGdlbmVyYXRlZCBmcm9tIGFueSBmaWxlbmFtZS4gIE9TQgorICAgICAgICBmb3IgZXhhbXBsZSB1c2VzICd6ZS91cycuCisKKyAgICAgICAgVGhlIG1hc3RlcnMgdWlkIGlzIGRldGVybWluZWQgb25seSBvbiBzdGFydHVwIHRoaXMgd2F5LCBhdCBydW50aW1lIHRoZQorICAgICAgICB1aWRzIG9mIGEgcmVsb2FkZWQgbWFzdGVyIGRldGVybWluZWQgYXMgZm9yIGV2ZXJ5IG9iamVjdCBieSBhIGNhbGwgdG8KKyAgICAgICAgdGhlIGFwcHJvcHJpYXRlIGRyaXZlciBob29rcy4KKworU0VFIEFMU08KKyAgICAgICAgbmF0aXZlKEMpLCBnZXRfcm9vdF91aWQoTSksIHZhbGlkX3NldGV1aWQoTSksCisgICAgICAgIG9iamVjdHMoQyksIGNsb25lX29iamVjdChFKSwgZ2V0ZXVpZChFKSwgZ2V0dWlkKEUpLCBzZXRldWlkKEUpCmRpZmYgLS1naXQgYS9kb2MvZHJpdmVyL2NvZGVzdHlsZSBiL2RvYy9kcml2ZXIvY29kZXN0eWxlCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjc4YTA1YjYKLS0tIC9kZXYvbnVsbAorKysgYi9kb2MvZHJpdmVyL2NvZGVzdHlsZQpAQCAtMCwwICsxLDI0NyBAQAorICAgIFRoZSBMUE11ZCBnYW1lZHJpdmVyIGlzIGJ5IG5hdHVyZSB0aGUgcmVzdWx0IG9mIHRoZSBjb29wZXJhdGl2ZSB3b3JrCisgICAgb2YgbXVsdGlwbGUgcHJvZ3JhbW1lcnMsIG9mdGVuIHNlcGFyYXRlZCBieSBsYXJnZSBvY2VhbnMgYW5kIHllYXJzCisgICAgb2YgdGltZS4gSW4gb3JkZXIgdG8ga2VlcCB0aGUgYXBwZWFyYW5jZSBvZiB0aGUgZHJpdmVyIHNvdXJjZSBjb25zaXN0ZW50CisgICAgKGFuZCB3aXRoIHRoYXQgbWFpbnRhaW5hYmxlKSwgdGhlIGZvbGxvd2luZyBndWlkZWxpbmVzIHNob3VsZCBiZSBmb2xsb3dlZAorICAgIGZvciBhbGwgY29kZSBjb250cmlidXRpb25zLgorCisgICAgRm9yIGEgcXVpY2sgc3RhcnQgaW4gaG93IGdvb2QgZHJpdmVyIHNvdXJjZSBzaG91bGQgbG9vayBsaWtlLCB0YWtlCisgICAgYSBsb29rIGF0IGNvbW0ue2MsaH0sIG9iamVjdC57YyxofSBhbmQgbWFwcGluZy57Yy5ofS4KKworICAgIFRoZSBndWlkZWxpbmVzIGhhdmUgYSBzdHJvbmcgZW1waGFzaXMgb24gY29kZSBsYXlvdXQgYW5kIGNvbW1lbnRpbmcsCisgICAgc3RlbW1pbmcgZnJvbSB0aGUgZmFjdCB0aGF0IHByb3BlciBsYXlvdXQgYW5kIGNvbW1lbnRzIGdhdmUgdGhlCisgICAgaW5jZW50aXZlIGZvciBMRE11ZCBpbiB0aGUgZmlyc3QgcGxhY2UuIFJpZ2h0IG5vdywgNTAlIG9mIGFsbCBsaW5lcworICAgIGFyZSBjb21tZW50cywgYW5kIHRoYXQgaGFzIGJlZW4gcHJvdmVuIHRvIGJlIGEgR29vZCBUaGluZy4KKworICAgIEFueSByZWFkZXIgb2YgdGhlICJyZWFsIHByb2dyYW1tZXJzIGRvbid0IHdyaXRlIGNvbW1lbnRzIi1zY2hvb2wKKyAgICBvZiB0aG91Z2h0IGlzIGFza2VkIHRvIHRha2UgaGlzIG9yIGhlciBpbmNvbXBldGVuY2UgZWxzZXdoZXJlLgorCisKK0xhbmd1YWdlCistLS0tLS0tLQorICAgIFRoZSBsYW5ndWFnZSBpcyBJU08gU3RhbmRhcmQgQyAoYWxzbyBrbm93biBhcyAnQzg5JyBvciAnQU5TSSBDJykuCisgICAgQ29tbW9uIGNvbXBpbGVyIGV4dGVuc2lvbnMgb3IgZmVhdHVyZXMgZnJvbSB0aGUgbmV3IEM5OSBzdGFuZGFyZCBhcmUKKyAgICBwZXJtaXR0ZWQgaWYgdGhlaXIgYWRkaXRpb24gaXMgdHJhbnNwYXJlbnQgZm9yIG90aGVyIEM4OSBjb21waWxlcnMuCisgICAgRm9yIGV4YW1wbGU6IHRoZSAnaW5saW5lJyBrZXl3b3JkIHBlcm1pdHRlZCB0aHJvdWdoIHRoZSB1c2Ugb2YgdGhlCisgICAgSU5MSU5FIG1hY3JvOyBzbyBhcmUgdGhlIE1ldHJvd2Vya3MtcHJhZ21hcyBhbmQgR05VLWF0dHJpYnV0ZXMuIE5vdAorICAgIHBlcm1pdHRlZCBhcmUgR05VJ3MgbG9jYWwgZnVuY3Rpb25zLgorCisgICAgU3lzdGVtL1BsYXRmb3JtIHNwZWNpZmljcyBhcmUgdG8gYmUgZGV0ZWN0ZWQgYnkgdGhlIGNvbmZpZ3VyZSBzY3JpcHQKKyAgICBhbmQgcHJvdmlkZWQgd2l0aCB0cmFuc3BhcmVudCBpbXBsZW1lbnRhdGlvbnMgaW4gcG9ydC57YyxofSAob3IgZm9yCisgICAgbW9kdWxlLXNwZWNpZmljIGRlcGVuZGVuY2llcyBpbiB0aGUgcmVzcGVjdGl2ZSBtb2R1bGVzKS4KKworICAgIEFkaGVyZW5jZSB0byB0aGUgU3RhbmRhcmQgaGFzIHRoZSBmb2xsb3dpbmcgaW1wbGljYXRpb25zOgorCisgICAgIC0gQWxsIGZ1bmN0aW9ucyBtdXN0IGJlIGZ1bGx5IHByb3RvdHlwZWQuCisgICAgIC0gU3RhbmRhcmQgdHlwZXMgbGlrZSBzaXplX3QsIHNzaXplX3Qgb3IgcHRyZGlmZl90IGFyZSB0byBiZSB1c2VkCisgICAgICAgd2hlcmVldmVyIHBvc3NpYmxlLgorICAgICAtIFVuaXhpc21zIGxpa2UKKyAgICAgICAgIHsKKyAgICAgICAgICAgYSA9IG1hbGxvYygyMCk7CisgICAgICAgICAgIGIgPSBtYWxsb2MoMjApOworICAgICAgICAgICBjID0gYi1hOworICAgICAgICAgfQorICAgICAgIGFyZSBub3QgbGVnYWwgYW5kIHNob3VsZG4ndCBiZSB1c2VkLgorICAgICAtIERvbid0IG1ha2UgYXNzdW1wdGlvbnMgYWJvdXQgdGhlIHNpemUgb2YgdGhlIGJhc2UgdHlwZXMgKGUuZy4KKyAgICAgICBhIGNoYXIgbWlnaHQgaGF2ZSBtb3JlIHRoYW4gOCBiaXRzKS4gSWYgc3VjaCBhbiBhc3N1bXB0aW9uCisgICAgICAgaXMgdW5hdm9pZGFibGUsIGNvbW1lbnQgaXQgY2xlYXJseSBhbmQgaWYgcG9zc2libGUgYWRkIGEgdGVzdAorICAgICAgIHRvIHJhaXNlIGEgY29tcGlsZSBvciBydW50aW1lIGVycm9yIGlmIHRoZSBhc3N1bXB0aW9uIGlzIG5vdCBtZXQuCisKKworU3R5bGUKKy0tLS0tCisgICAgQWxsIG1vZHVsZXMgKC5jLWZpbGVzKSBoYXZlIHRvIGhhdmUgdGhlaXIgaW50ZXJmYWNlIGluIGFuIGFjY29tcGFuaW5nCisgICAgLmgtZmlsZS4gVGhlIGhlYWRlciBmaWxlIG11c3QgYmUgZ3VhcmRlZCBhZ2FpbnN0IHJlcGVhdGVkIGluY2x1c2lvbgorICAgIHdpdGggdGhlIG5vcm1hbAorICAgICAgICAjaWZuZGVmIEhFQURFUk5BTUVfSAorICAgICAgICAjZGVmaW5lIEhFQURFUk5BTUVfSCAxCisgICAgICAgICAgLi4uCisgICAgICAgICNlbmRpZiAvKiBIRUFERVJOQU1FX0ggKi8KKyAgICBjb25zdHJ1Y3QuIFRvIHVzZSBhIG1vZHVsZSwgaXRzIGhlYWRlcmZpbGUgbXVzdCBiZSBpbmNsdWRlZCAtIG5vIHJhbmRvbQorICAgICdleHRlcm4nIGRlY2xhcmF0aW9ucy4KKworICAgIEV2ZXJ5IG1vZHVsZSBtdXN0IGluY2x1ZGUgImRyaXZlci5oIiB3aGljaCBpbiB0dXJuIGluY2x1ZGVzIHRoZQorICAgIHBvcnRhYmlsaXR5IGhlYWRlcnMgYW5kIHByb3ZpZGVzIGNvbW1vbiBkZWZpbmVzLgorCisgICAgVXNlIHRoZSBkcml2ZXItcHJvdmlkZWQgdHlwZXMgYW5kIG1hY3JvcyBsaWtlIEJvb2wgb3IgcF9pbnQuCisKKyAgICBDb2RlIHNob3VsZCBiZSB3cml0dGVuIGRlZmVuc2l2ZWx5IGFuZCByZWFkYWJsZS4gVGhpcyBpcyBub3QgdGhlIElPQ0NDLgorCisgICAgTm8gbWFnaWMgbnVtYmVycyAtIHVzZSAjZGVmaW5lcyB0byBnaXZlIHRoZW0gbmFtZXMuCisKKyAgICBBZGQgc2FuaXR5IGNoZWNrcyB3aGVyZSB1c2VmdWwuIElmIHRoZSBjaGVja3MgYXJlIGNvc3RseSwgZW5jbG9zZQorICAgIHRoZW0gaW4gYSAjaWZkZWYgREVCVUcuLi4jZW5kaWYgYnJhY2tldC4KKworICAgIENvbW1lbnQgcXVlc3Rpb25hYmxlIGNvZGUgb3Igb3Bwb3J0dW5pdGllcyBmb3IgcG9zc2libGUgZXh0ZW5zaW9ucyB3aXRoIGEKKyAgICAnVE9ETzogLi4uJyBjb21tZW50LiBGb3IgbXVsdGlsaW5lIGNvbW1lbnRzLCB1c2UgJ1RPRE86Oicgb24gdGhlIHNlY29uZAorICAgIGFuZCBmb2xsb3dpbmcgbGluZXMgKHRoaXMgbWFrZXMgcmVhZGluZyBhIGdyZXAgZWFzaWVyKS4KKworICAgIENvbW1lbnQgdGVtcG9yYXJ5IGRlYnVnIGNvZGUgd2l0aCBhICdERUJVRzonIGNvbW1lbnQuIFNpbWlsYXIsIGRlYnVnCisgICAgb3V0cHV0IHNob3VsZCBhbHdheXMgYmVnaW4gd2l0aCAnREVCVUc6Jy4KKworICAgIFZhcmlhYmxlIGlkZW50aWZpZXJzIHNob3VsZCBzdGFydCB3aXRoIGEgbG93ZXJjYXNlIGxldHRlciwgZnVuY3Rpb24KKyAgICBpZGVudGlmaWVycyBtYXkgc3RhcnQgd2l0aCB1cHBlciBvciBsb3dlcmNhc2UsIGNvbnN0YW50IGlkZW50aWZpZXJzCisgICAgc2hvdWxkIHN0YXJ0IHdpdGggYW4gdXBwZXJjYXNlIGxldHRlci4gTWFjcm8gaWRlbnRpZmllcnMgc2hvdWxkIGJlCisgICAgYWxsIFVQUEVSQ0FTRSwgb3RoZXIgaWRlbnRpZmllcnMgbWF5IGJlIHVuZGVyX3Njb3JlZCBvciBTa3VkbHlDYXBzLgorICAgIEh1bmdhcmlhbiBub3RhdGlvbiBpcyBhY2NlcHRlZCBvbmx5IGluIGEgdmVyeSBsaWdodCBmb3JtOiBwRm9vIGZvcgorICAgIHBvaW50ZXJzLCBwcEZvbyBmb3IgcG9pbnRlciB0byBwb2ludGVycywgaUZvbyBmb3IgaW50ZWdlciB0eXBlcywKKyAgICBzRm9vIGZvciBzdHJpbmcgcG9pbnRlcnMsIGFGb28gZm9yIGNvbXBsZXggdHlwZXMgLSB5b3UgZ2V0IHRoZQorICAgIGlkZWEuIEJ1dCBubyBhbHB6c0ZvbyBhbmQgZnJpZW5kcy4KKworICAgIGZfeHh4KCkgZnVuY3Rpb24gbmFtZXMgYXJlIHJlc2VydmVkIGZvciBlZnVuIGltcGxlbWVudGF0aW9ucy4KKyAgICB0eXBlZGVmJ2QgdHlwZW5hbWVzIHNob3VsZCBlbmQgaW4gX3QgKGUuZy4gJ21hcHBpbmdfdCcpLCBzdHJ1Y3QKKyAgICBuYW1lcyBzaG91bGQgZW5kIGluIF9zIChlLmcuICdzdHJ1Y3QgaW5zdHJzX3MnKS4KKworICAgIEluZGVudGF0aW9uIGlzIDQgc3BhY2VzIHBlciBsZXZlbC4gTm8gdGFiIGNoYXJhY3RlcnMgYW55d2hlcmUhCisKKyAgICBUaGUgaW5kZW50YXRpb24gc3R5bGUgaXMgYSB2YXJpYW50IG9mIHRoZSAnQWxsbWFuIHN0eWxlJzoKKworICAgICAgICBpZiAoZm9vKQorICAgICAgICB7CisgICAgICAgICAgICAuLi5ib2R5Li4uCisgICAgICAgIH0gLyogaWYgKGZvbykgKi8KKworICAgIE5vdGUgdGhlIGNvbW1lbnQgYXQgdGhlIGNsb3NpbmcgYnJhY2UhCisKKyAgICBPbmUgbGluZSBib2RpZXMgbWF5IGJlIHdyaXR0ZW4gYXMKKworICAgICAgICBpZiAoZm9vKSBib2R5OworCisgICAgb3IKKworICAgICAgICBpZiAoZm9vKQorICAgICAgICAgICAgYm9keTsKKworICAgIF9pZl8gaXQgaW1wcm92ZXMgdGhlIHJlYWRhYmlsaXR5LgorCisgICAgU2ltaWxhciwgdGhlIHR5cGljYWwgbGF5b3V0IG9mIGEgZnVuY3Rpb24gaXM6CisKKyAgICAgICAgc3RhdGljIGludAorICAgICAgICBmdW5jdGlvbl9uYW1lICggYXJnMSAsIGFyZzIpCisKKyAgICAgICAgLyogVHdpZGRsZSA8YXJnMT4gd2l0aCA8YXJnMj4gYW5kIHJldHVybiB0aGUgcmVzdWx0LgorICAgICAgICAgKi8KKworICAgICAgICB7CisgICAgICAgICAgICAuLi4uCisgICAgICAgIH0gLyogZnVuY3Rpb25fbmFtZSgpICovCisKKyAgICBJZiBhbiBleHByZXNzaW9uIChhcmd1bWVudCBsaXN0LCAuLi4pIGV4dGVuZHMgb3ZlciBzZXZlcmFsLCB0aGUgZmlyc3QKKyAgICBsaXRlcmFsIGVsZW1lbnQgb24gYSBsaW5lIHNob3VsZCBiZSBhbiBvcGVyYXRvciBvciBzeW50YWN0aWNhbCBtYXJrZXI6CisKKyAgICAgICAgaWYgKGNvbmRpdGlvbjEKKyAgICAgICAgICYmICggICBjb25kaXRpb24yCisgICAgICAgICAgICAgfHwgY29uZGl0aW9uMykKKyAgICAgICAgICAgKQorCisgICAgICAgIHByaW50ZiggIi4uLiIKKyAgICAgICAgICAgICAgLCBhcmcxLCBhcmcyLCBhcmczCisgICAgICAgICAgICAgICk7CisKKyAgICBCZSBnZW5lcm91cyB3aXRoIHdoaXRlc3BhY2UgLSBib3RoIGhvcml6b250YWwgYW5kIHZlcnRpY2FsLgorCisgICAgWyBUaGUgcmVhc29uaW5nIGJlaGluZCB0aGlzIHN0eWxlIGlzIHRvIHVzZSB0aGUgbGFuZ3VhZ2UgZWxlbWVudHMKKyAgICAgIHRvIGNyZWF0ZSBzdHJvbmcgdmlzdWFsIHN0cnVjdHVyZXMgZm9yIHRoZSBleWVzIHRvIGZvbGxvdy4gQnkgZG9pbmcgc28sCisgICAgICB0aGUgc3RydWN0dXJlIG9mIHRoZSBwcm9ncmFtIGJlY29tZXMgb2J2aW91cyB3aXRob3V0IG11Y2gKKyAgICAgIGNvbnNjaW91cyB0aG91Z2h0LgorICAgIF0KKworCitDb21tZW50aW5nCistLS0tLS0tLS0tCisgICAgVGhlIGNvbW1lbnRzIGFsc28gZm9sbG93IHRoZSBpZGVhIG9mIGdpdmluZyBzdHJvbmcgdmlzdWFsIGNsdWVzIG9mCisgICAgaG93IHRoZSBwcm9ncmFtIGlzIHN0cnVjdHVyZWQuCisKKyAgICBIb3Jpem9udGFsIGxpbmVzIHNob3VsZCBiZSBjcmVhdGVkIGFzCisKKyAgICAgICAgLyotLS0tLS0uLi4tLS0tLS0tKi8KKyAgICAgICAgLyo9PT09PT0uLi49PT09PT09Ki8KKyAgICAgICAgLyogLSAtIC0uLi4gLSAtIC0gKi8KKworICAgIFRoZSAnLS0tJyBsaW5lIGlzIHRoZSBub3JtYWwgc2VwYXJhdG9yIGJldHdlZW4gdGhlIGNvbXBvbmVudHMgb2YgYQorICAgIHNvdXJjZSBmaWxlIChpbmNsdWRlcywgdmFyaWFibGUgZGVjbGFyYXRpb25zLCBtYWNybyBkZWNsYXJhdGlvbnMsCisgICAgdGhlIHNlcGFyYXRlIGZ1bmN0aW9ucykuIFRoZSAnPT09JyBsaW5lIGNhbiBiZSB1c2VkIHRvIHNlcGFyYXRlCisgICAgbGFyZ2VyIHNlY3Rpb25zIG9mIGEgc291cmNlIGZpbGUgKGUuZy4gdGhlIGxvd2xldmVsIHJvdXRpbmVzIGZyb20KKyAgICB0aGUgZWZ1biBpbXBsZW1lbnRhdGlvbnMpLiAnLSAtJyBsaW5lcywgd2hpY2ggdXNhbGx5IHNwYW4gbGVzcyB0aGFuCisgICAgdGhlIHdob2xlIGxpbmUsIGNhbiBiZSB1c2VkIHRvIHN1YmRpdmlkZSBsYXJnZSBmdW5jdGlvbnMgKHRob3VnaCB0aGVuCisgICAgaXQncyBvZnRlbiBiZXR0ZXIgdG8gc3BsaXQgdGhlIGZ1bmN0aW9uIGludG8gc2V2ZXJhbCBzbWFsbCBvbmVzKS4KKworICAgIEEgJyoqKicgbGluZSBpcyByZXNlcnZlZCBmb3IgdGhlIGVuZCBvZiBldmVyeSBzb3VyY2UgZmlsZS4KKworICAgIEEgJy8qIC0tLSBTdWJzZWN0aW9uIC0tLSAqLycgaXMgYWxzbyBnb29kIHRvIHNlcGFyYXRlIHN1YnNlY3Rpb25zLgorCisgICAgVmVydGljYWwgbGluZXMgYXJlIHRvIGJlIGNvbnN0cnVjdGVkIGFzCisKKyAgICAgIC8qCisgICAgICAgKgorICAgICAgICovCisKKyAgICBObyBib3ggY29tbWVudHMuCisKKyAgICBFdmVyeSBmdW5jdGlvbiBtdXN0IGhhdmUgYSBoZWFkIGNvbW1lbnQgZXhwbGFpbmluZyB0aGUgbWVhbmluZworICAgIG9mIHRoZSBhcmd1bWVudHMsIHdoYXQgdGhlIGZ1bmN0aW9uIGRvZXMsIGFuZCB0aGUgcG9zc2libGUgcmVzdWx0cy4KKyAgICBGb3IgZWZ1biBpbXBsZW1lbnRhdGlvbnMsIHRoaXMgY29tbWVudCBzaG91bGQgYmUgaWRlbnRpY2FsIHRvIHRoZQorICAgIG1hbiBwYWdlLgorCisgICAgV2l0aGluIGEgZnVuY3Rpb24sIGV2ZXJ5IHZhcmlhYmxlIHNob3VsZCBiZSBjb21tZW50ZWQgYXMKKworICAgICAgIGludCBmb287ICAvKiBzaG9ydCBjb21tZW50ICovCisgICAgICAgaW50IGJhcjsKKyAgICAgICAgIC8qIGxvbmcgY29tbWVudCB3aGljaCBkb2Vzbid0IGZpdCBvbiBvbmUgbGluZS4KKyAgICAgICAgICAqLworCisgICAgVGhlIG1ham9yIHN0ZXBzIGluIGEgZnVuY3Rpb24gc2hvdWxkIGJlIHByZWNlZWRlZCBieSBhIGNvbW1lbnQKKyAgICBleHBsYWluaW5nIHRoZW0uIEFsc28sIHdoZXJldmVyIGEgY3JpdGljYWwgZGVzaWduIGRlY2lzaW9uIGhhcworICAgIGJlZW4gbWFkZSwgYSBjb21tZW50IHNob3VsZCBsaW5lIG91dCB0aGUgd2hhdHMgYW5kIHdoeXM6CisKKyAgICAgICAgLyogRHVwbGljYXRlIHRoZSBzdG9yZWQgYXJndW1lbnRzIGZvciB0aGUgZnVuY3Rpb24gY2FsbC4KKyAgICAgICAgICogKEl0J3MgdGVtcHRpbmcgdG8gdXNlIHRoZSBzdG9yZWQgYXJndW1lbnRzIGRpcmVjdGx5CisgICAgICAgICAqICBpbiB0aGUgbGFzdCBwYXNzOyBob3dldmVyIGl0J3Mgbm90IGd1YXJhbnRlZWQgdGhhdAorICAgICAgICAgKiAgdGhlIGxhc3QgcGFzcyBhY3R1YWxseSBjb21lcyB0aGlzIGZhci4pCisgICAgICAgICAqLworCisKKyAgICBBIHR5cGljYWwgZmlsZSBsYXlvdXQsIGNvbW1lbnR3aXNlLCBsb29rcyBsaWtlIHRoaXM6CisKKyAgICAgICAgLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAgICAgICAgICogR2FtZWRyaXZlciBCb3VuY2luZyBtb2R1bGUuCisgICAgICAgICAqCisgICAgICAgICAqIDxyZXNlcnZlZCBmb3IgZnV0dXJlIGNvcHlyaWdodCBub3RpY2U+CisgICAgICAgICAqLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgICAgICAgICAqICdCaWcgcGljdHVyZScgZGVzY3JpcHRpb24gb2YgdGhlIG1vZHVsZSBhbmQgaXRzCisgICAgICAgICAqIHJlbGF0aW9uIHRvIHRoZSBvdGhlciBnYW1lZHJpdmVyIHBhcnRzLgorICAgICAgICAgKgorICAgICAgICAgKiBUcmlja3kgZGVzaWduIGRpc2N1c3Npb25zIGFsc28gYmVsb25nIGluIGhlcmUuCisgICAgICAgICAqLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgICAgICAgICAqLworCisgICAgICAgICNpbmNsdWRlICJkcml2ZXIuaCIKKyAgICAgICAgI2luY2x1ZGUgInR5cGVkZWZzLmgiCisKKyAgICAgICAgI2luY2x1ZGUgPHN0ZGxpYi5oPgorCisgICAgICAgICNpbmNsdWRlICJib3VuY2UuaCIKKyAgICAgICAgI2luY2x1ZGUgImJhY2tlbmQuaCIKKworICAgICAgICAvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8KKworICAgICAgICAvKiAtLS0gVXNlciBpbmZvcm1hdGlvbiAtLS0gKi8KKyAgICAgICAgaW50ZXJhY3RpdmVfdCAqYWxsX2JvdW5jZXJzW01BWF9QTEFZRVJTXTsKKworICAgICAgICAvKiAtLS0gIFN0YXRpc3RpY3MgLS0tICovCisKKyAgICAgICAgcF9pbnQgbnVtYmVyX29mX2NhbGxzOworCisgICAgICAgIC8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLworICAgICAgICB2b2lkCisgICAgICAgIGFkZF9ib3VuY2VyIChpbnRlcmFjdGl2ZV90ICpib3VuY2VyKQorCisgICAgICAgIC8qIFRoaXMgZnVuY3Rpb24gYWRkcyA8Ym91bmNlcj4gdG8gdGhlIGFsbF9ib3VuY2Vyc1tdLgorICAgICAgICAgKi8KKyAgICAgICAgeworICAgICAgICAgICAgaW50IGk7ICAvKiBzZWFyY2ggaW5kZXggKi8KKworICAgICAgICAgICAgLi4uLgorICAgICAgICB9IC8qIGFkZF9ib3VuY2VyKCkgKi8KKworICAgICAgICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKwpkaWZmIC0tZ2l0IGEvZG9jL2RyaXZlci9jb21tYW5kbGluZSBiL2RvYy9kcml2ZXIvY29tbWFuZGxpbmUKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNmUxOTdlOQotLS0gL2Rldi9udWxsCisrKyBiL2RvYy9kcml2ZXIvY29tbWFuZGxpbmUKQEAgLTAsMCArMSw2MCBAQAorTkFNRQorCWNvbW1hbmRsaW5lCisKK0RFU0NSSVBUSU9OCisJVGhlIGRyaXZlciB1bmRlcnN0YW5kcyBzZXZlcmFsIGNvbW1hbmQgbGluZSBvcHRpb25zIGFuZAorCWFyZ3VtZW50cy4KKworCS1mPHN0cmluZz46IFdoZW4gdGhlIG1hc3RlciBvYmplY3QgaXMgbG9hZGVkIGFuZCBmdWxseQorCQkgICAgb3BlcmF0aW9uYWwgYWZ0ZXIgc3RhcnR1cCwgdGhlIGZ1bmN0aW9uIGZsYWcoKQorCQkgICAgd2l0aCBhcmd1bWVudCBzdHJpbmcgaXMgYXBwbGllZCB0byB0aGUgbWFzdGVyCisJCSAgICBvYmplY3QgZm9yIGVhY2ggb2NjdXJlbmNlIG9mIC1mIGluIHRoZSBjb21tYW5kIGxpbmUuCisKKwktbwkgIDogcnVuIGluIGNvbXBhdCBtb2RlICh0aHVzIHNvbWV0aW1lcyBhbHNvIGNhbGxlZAorCQkgICAgLW8gbW9kZSksIGluc3RlYWQgb2YgbmF0aXZlIG1vZGUuIE5vdGU6IHRoZSBmbGFnCisJCSAgICBpcyBvYnNvbGV0ZSBieSBub3csIHRoZSBkcml2ZXIgbXVzdCBiZSBjb21waWxlZAorCQkgICAgd2l0aCB0aGUgYXBwcm9wcmlhdGUgZGVmaW5pdGlvbnMgaW4gdGhlIGNvbmZpZy5oCisJCSAgICBpbnN0ZWFkLgorCisJLWMJICA6IHRyYWNlIGNvbXBpbGF0aW9ucy4KKworCS1Ec3ltYm9sICA6IEdsb2JhbGx5IHByZS0jZGVmaW5lIHN5bWJvbCBmb3IgcHJlcHJvY2Vzc29yLgorCisJLUQJICA6IHdpdGhvdXQgc3ltYm9sLCB0aGlzIGxvZ3Mgc3BlY2lmaWMgdHJhY2UgbWVzc2FnZXMKKwkJICAgIHRvIC9sb2cvRF9UUkFDRSAoaWYgdGhlIGRyaXZlciB3YXMgY29tcGlsZWQgZm9yIGl0KQorCisJLWUJICA6IFRoZSBudW1iZXIgb2Ygb2NjdXJlbmNlcyBvZiB0aGUgLWUgZmxhZyBpcworCQkgICAgcGFzc2VkIGFzIGFyZ3VtZW50IHRvIHRoZSBlcGlsb2coKSBmdW5jdGlvbgorCQkgICAgaW4gdGhlIG1hc3RlciBhdCBzdGFydHVwIHRpbWUuCisKKwktTgkgIDogRG9uJ3Qgc3RhcnQgdGhlIGVycSBkZW1vbi4KKworCS1NPG1hc3Rlcj46IHByb3ZpZGUgYSBkaWZmZXJlbnQgbmFtZSBmb3IgdGhlIG1hc3RlciBvYmplY3QuCisKKwktbTxkaXI+CSAgOiBwcm92aWRlIGEgZGlmZmVyZW50IG11ZGxpYiBkaXJlY3RvcnkuCisKKwktcnU8c2l6ZT4gOiBzZXQgdGhlIHNpemUgb2YgdGhlIHJlc2VydmVkIHVzZXIgbWVtb3J5LgorCS1ybTxzaXplPiA6IHNldCB0aGUgc2l6ZSBvZiB0aGUgcmVzZXJ2ZWQgbWFzdGVyIG1lbW9yeS4KKwktcnM8c2l6ZT4gOiBzZXQgdGhlIHNpemUgb2YgdGhlIHJlc2VydmVkIHN5c3RlbSBtZW1vcnkuCisKKwktRTxjb3N0PiAgOiBzZXQgdGhlIG1heGltdW0gYWxsb3dlZCBldmFsdWF0aW9uIGNvc3QuCisKKwktLW1heF9tYWxsb2NlZCA6IHNldCBtYXhpbXVtIHNpemUgb2YgbWFsbG9jYWJsZSBtZW1vcnkgY2h1bmtzLgorCS0tbWF4X3NtYWxsX21hbGxvY2VkIDogc2V0IG1heC4gc2l6ZSBvZiBtYWxsb2NhYmxlIG1lbW9yeSBjaHVua3MuCisKKwktdTxwb3J0PiA6IHNldCB0aGUgVURQIHBvcnQgbnVtYmVyIGZvciBJTVAgY29tbXVuaWNhdGlvbi4KKworCS10CSA6IGRpc2FibGUgaGVhcnRfYmVhdCBhbmQgcmVzZXQuCisKKwktZAkgOiBydW4gd2l0aCBkZWJ1Zy4KKworCS1zPHRpbWU+IDogU2V0IHRoZSB0aW1lIGJldHdlZW4gc3dhcG91dCBhdHRlbXB0cy4gLTEgbWVhbnMKKwkJICAgZG9uJ3Qgc3dhcC4KKworCS15CSA6IElmIHRoZSBkcml2ZXIgaGFzIGJlZW4gY29tcGlsZWQgd2l0aCBZWURFQlVHLAorCQkgICB0aGlzIHdpbGwgZW5hYmxlIGRlYnVnIG91dHB1dCBmb3IgdGhlIExQQyBjb21waWxlci4KKworCTxudW1iZXI+IDogdGhlIFRDUCBwb3J0IG51bWJlciB0byB1c2UgZm9yIHVzZXIgY29ubmVjdGlvbnMuCisKK1NFRSBBTFNPCisJZmxhZyhNKSwgZXBpbG9nKE0pLCBuYXRpdmUoQyksIGltcChDKQpkaWZmIC0tZ2l0IGEvZG9jL2RyaXZlci9jb3B5cmlnaHQtaXNzdWUgYi9kb2MvZHJpdmVyL2NvcHlyaWdodC1pc3N1ZQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi45ZjA4NmE1Ci0tLSAvZGV2L251bGwKKysrIGIvZG9jL2RyaXZlci9jb3B5cmlnaHQtaXNzdWUKQEAgLTAsMCArMSwyNTIgQEAKK1RoZSBxdWVzdGlvbiBvZiB0aGUgQ29weXJpZ2h0IGFuZCBUZXJtcyBvZiBVc2UgZm9yIHRoZSBkcml2ZXIgaXMgYW4gb2xkCitvbmUuIEhlcmUgaXMgd2hhdCBJIGNvdWxkIHNhbHZhZ2UgZnJvbSB0aGUgYW15bGFhci11c2VycyBtYWlsaW5nIGxpc3QuCitJbXBvcnRhbnQgaXMgSmFjb2IncyBtYWlsIEkgcmVjZWl2ZWQgaW4gMTk5OSB3aGljaCBlc3NlbnRpYWxseSBjYXN0cwordGhlIGN1cnJlbnQgY29weXJpZ2h0IHRlcm1zIGluIHN0b25lLgorCisgIC0tIExhcnMgKG5vdCAvTGFycykKKworLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorRGF0ZTogU2F0LCAxMyBOb3YgMTk5MyAwMzoxMToyOSArMDEwMCAoTUVUKQorRnJvbTogYW15bGFhckBtZW9seW9uLmhhbnNlLmRlIChKb2VybiBSZW5uZWNrZSkKK1N1YmplY3Q6IExQbXVkIENvcHlyaWdodAorVG86IGJ1c2V5QHV4MS5jc28udWl1Yy5lZHUgKGJ1c2V5IGFuZHJldyksIGxhcnNAY2QuY2hhbG1lcnMuc2UsCisgICAgICAgIGNyb2VzQHN3aS5wc3kudXZhLm5sLCBndXNhckB1bml3YS51d2EuT1ouQVUsIGR1ZW5pbmdAaWJyLmNzLnR1LWJzLmRlLAorICAgICAgICBqYWNvYkBjZC5jaGFsbWVycy5zZSwgcl9iZWhyZW5AaW5mb3JtYXRpay51bmkta2wuZGUsCisgICAgICAgIG11ZEBhbGlqa3UwNS5lZHZ6LnVuaS1saW56LmFjLmF0LCBhbGNhbWFuQGNzLnR1LWJlcmxpbi5kZQorCitNb3RpdmF0aW9uIG9mIHRoaXMgbGV0dGVyOgorVGhlcmUgc2VlbXMgdG8gYmUgYSBwb3RlbnRpYWwgZm9yIG11ZHMgdGhhdCBydW4gb24gZGVkaWNhdGVkIG1hY2hpbmVzCit0aGF0IGNoYXJnZSBmZWVzIGZyb20gcGxheWVyIHRvIG1ha2UgdGhlIG11ZCBlY29ub21pY2FsbHkgZmVhc2libGUuCitUaGUgQ29weXJpZ2h0IGZpbGUgc2F5cyB0aGF0IExQbXVkIGNhbiBmcmVlbHkgdXNlZCBpZmYgaXQgaXMgbm90IGZvcgorbW9uZXRhcnkgZ2Fpbi4gTm93IHRoZSBkZWJhdGUgd2hhdCBjb25zdGl0dXRlcyBtb25ldGFyeSBnYWluIGFuZCBpZgorYW4gaW5kaXZpZHVhbCBsaWNlbnNlIGlzIGFuIGxpY2Vuc2UgdG8gYnJlYWsgdGhlIGNvcHlyaWdodCwKK2lzIGFuIGludGVycHJldGF0aW9uIG9mIHRoZSBsaWNlbnNlIGluIENvcHlyaWdodCBvciBnaXZlcyByaWdodHMKK2luZGVwZW5kZW50IHRoZSByZXN0cmljdGlvbnMgaW4gQ29weXJpZ2h0IGhhcyBiZWNvbWUgYSBub3JtYWwgZmxhbWUKK3dhciBpbiB0aGUgcmVjLmdhbWVzLm11ZC4qIGdyb3Vwcy4gVGhhdCBpcyB0byBzYXksIG9uZSBvZiB0aGUgd29yc3QKK3RoaW5rYWJsZS4KKworVG8gYWxsb3cgbXVkcyB0byBjaGFyZ2UgZmVlcyB0byBjb3ZlciBjb3N0cywgd2l0aG91dCBnb2luZyB0aHJvdWdoCitzdWNoIGRlYmF0ZXMgZXZlcnkgdGltZSwgSSBzdWdnZXN0IHRvIGFtZW5kIHRoZSBDb3B5cmlnaHQgZmlsZQord2l0aCB0ZXJtcyB1bmRlciB3aXRjaCBzdWNoIGEgbXVkIGlzIGNvbnNpZGVyZWQgdG8gY29tcGx5IHRvIHRoZQorJ25vIG1vbmV0YXJ5IGdhaW4gY2xhdXNlJyAuCisKK0V4cGxhbmF0aW9uIG9mIHRoZSByZWNpcGllbnQgbGlzdCBhbmQgc29tZSBpbmRpdmlkdWFsIG1lc3NhZ2VzOgorCitCdXNleSBBbmRyZXc6IHdhbnRzIHRvIHNldCB1cCBhIG11ZCB0aGF0IGNoYXJnZXMgZmVlcyB0byBjb3ZlciBjb3N0cy4KKyAgSWYgdGhlIGJlbG93IHJ1bGVzIHdvbid0IG1ha2UgaXQgaW50byB0aGUgQ29weXJpZ2h0LCB5b3UgY2FuIHJlZ2FyZCB0aGlzCisgIGFzIGEgbGljZW5zZSAtIG9mIGNvdXJzZSBvbmx5IGZvciB0aGUgY29kZSB3cml0dGVuIGJ5IG1lLgorTGFycyBQZW5zanw6IG9yaWdpbmFsIGF1dGhvci4KKyAgUGxlYXNlIGZvcndhcmQgdGhpcyBsZXR0ZXIgdG8gb3RoZXIgYXV0aG9ycyB0aGF0IGhhdmUgY29udHJpYnV0ZWQgdG8gMy4xLjIKKyAgd2hvIGhhdmUgYSBzYXkgaW4gdGhlIGNvcHlyaWdodC4KK0ZlbGl4IEEuIENyb2VzOiB3cm90ZSB0aGUgbm9uLWNvcnJ1cHRpbmcgaW5kZW50YXRpb24gY29kZSBmb3IgZWQuCitTZWFuIEEgUmVpdGg6IHdyb3RlIE11ZC1zcHJpbnRmKCkgLgorTGFycyBEdWVuaW5nOiB3cm90ZSB0aGUgQW1pZ2EgcG9ydC4KK1JlaW1lciBCZWhyZW5kczogd3JvdGUgbWVyZ2Vzb3J0IGJhc2VkIHNvcnRfYXJyYXkoKSAuCitIZXJwOiB3cm90ZSBnZXRfb2JqZWN0X2FjdGlvbnMoKSAuCitKYWNvYiBIYWxsZW46IGlzIG9uZSBvZiB0aGUgcGVvcGxlIGludm9sdmVkIHdpdGggdGhlIENEIGRyaXZlcjsgdGhlIGVtYWlsCisgYWRkcmVzcyB3YXMgaW4gdGhlIG5ld3MgcmVjZW50bHkuLi4KKyAgUGxlYXNlIGZvcndhcmQgdGhpcyBsZXR0ZXIgdG8gdGhlIHBlcnNvbiBob2xkaW5nIHRoZSBjb3B5cmlnaHQgZm9yIHRoZQorICBVRFAgY29ubmVjdGl2aXR5KHVubGVzcyBpdCdzIHlvdXJzZWxmIDotKSAuCitBbGV4YW5kZXIgV2VpZHQ6CisgIFBsZWFzZSB0cnkgdG8gZm9yd2FyZCB0aGlzIGxldHRlciB0byBteSBicm90aGVyLi4uCisKK0kgaG9wZSB0byBmaW5hbGx5IGdldCB0ZXJtcyB3aGljaCBhbGwgYXV0b3JzIGNhbiBhZ3JlZSBvbiB0aGF0IGNhbiBiZSBpbmNsdWRlZAoraW50byB0aGUgQ29weXJpZ2h0IGZpbGUuIEkgc3VnZ2VzdCBncm91cCByZXBsaWVzLCBzbyB0aGF0IHdlIGNhbiBnZXQgc29tZQora2luZCBvZiBkaXNjdXNzaW9uIGdvaW5nICh1bmxlc3MgdGhlcmUgaXMgaW1tZWRpYXRlIGFwcHJvdmFsIGZyb20gYWxsCithdXRob3JzIDotKSAuIFdoZW4geW91IGhhdmUgb2JqZWN0aW9ucywgcGxlYXNlIHRyeSB0byBwb2ludCBvdXQgd2hhdCBpcword3Jvbmcgd2l0aCB0aGVzZSB0ZXJtcy4gRXZlbiBiZXR0ZXIgd291bGQgaXQgYmUgaWYgeW91IGhhZCBhIHNvbHV0aW9uCit0byB0aGUgcHJvYmxlbS4KKworICAgICAgICBKb2VybiBSZW5uZWNrZSAoQW15bGFhcikKKworUHJvcG9zZWQgVGVybXM6CisxLiBBIExQbXVkIG1heSBjaGFyZ2UgZmVlcyBmcm9tIHBsYXllcnMgdG8gY292ZXIgcnVubmluZyBhbmQgbWFjaGluZSBjb3N0cy4KKzIuIFJ1bm5pbmcgY29zdHMgaW4gdGhlc2UgdGVybXMgYXJlIHRoZSBjb3N0IGZvciB0aGUgbmV0d29yayBjb25uZWN0aW9uLAorICAgZWxlY3RyaWMgcG93ZXIgdG8gb3BlcmF0ZSB0aGUgaG9zdCBtYWNoaW5lLCB3ZWFyIG9mIGJhY2t1cCBtZWRpYSwKKyAgIHJlcGFpciBjb3N0cyBmb3IgdGhlIGhvc3QgbWFjaGluZSwgYW5kIGNvc3QgZm9yIGEgYmFuayBhY2NvdW50LgorICAgRm9yIHRoZSBjb3N0cyBvZiBhIGJhbmsgYWNjb3VudCB0byBiZSBjb25zaWRlcmVkIHJ1bm51bmcgY29zdHMsCisgICB0aGV5IG11c3Qgbm90IGhhYmUgYmVlbiBjb25zaWRlcmVkIGFjY29yZGluZyB0byA4LiAsIGFuZCB0aGUKKyAgIGluc3RpdHV0ZSBoYXMgdG8gYmUgY2hvb3NlbiB3aXRoIGF0IGxlYXN0IHVzdWFsIGNvbnNpZGVyYXRpb24gb24KKyAgIHRlcm1zIGFuZCBjb3N0cyBvZiB0aGUgYWNjb3VudCBhbmQgdGhhdCB0aGVyZSBtdXN0IGJlIG5vIGFmZmlsaWF0b24KKyAgIHdpdGggdGhlIGluc3RpdHV0ZS4KKzMuIE1vbmV5IHRvIGNvdmVyIHJ1bm5pbmcgY29zdHMgZm9yIGEgbWF4aW11bSBvZiAxOCBtb250aCBtYXkgYmUgYWNjdW11bGF0ZWQKKyAgIGluIGFkdmFuY2UgZnJvbSBmZWVzIHRvIHNtb290aGUgZmx1Y3RhdGlvbiBhbmQgdG8gZW5zdXJlIHN0YWJpbGl0eSBvZgorICAgdGhlIG11ZC4gVGhlIHNwYXJlIG1vbmV5IGhhcyB0byBiZSBrZXB0IHNlcGFyYXRlIGZyb20gcGVyc29uYWwgbW9uZXkKKyAgIGFuZCBzaG91bGQgYmUgaW52ZXN0ZWQgaW4gdHJ1c3RlZSBpbnZlc3RtZW50IGlmIGxpcXVpZGl0eSBhbGxvd3MuCisgICBJZiB0aGUgbXVkIGlzIHBlcm1hbmVudGx5IHB1dCBkb3duLCB0aGlzIG1vbmV5IGhhcyB0byBiZSByZWZvdW5kZWQgdG8gdGhlCisgICBwbGF5ZXJlcy4KKzQuIE1hY2hpbmUgY29zdHMgYXJlIGNvc3RzIGZvciBidXlpbmcsIGluc3RhbGxhdGlvbiBhbmQgdXBncmFkZSBvZiB0aGUgaG9zdAorICAgbWFjaGluZS4gVGhlIGNvc3RzIGhhdmUgdG8gYXBwZWFyIG9uIGEgYm9uYSBmaWRlIHB1cmNoYXNlIC8gc2VydmljZQorICAgY29udHJhY3Qgd2l0aCBhIHBlcnNvbi9pbnN0aXR1dGlvbiB0aGF0IGlzIG5vdCBhZmZpbGlhdGVkIHdpdGggdGhlCisgICBwZXJzb24gd2hvIHNldHMgdXAgdGhlIG11ZC4KKyAgIFdoZW4gdGhlIGhvc3QgbWFjaGluZSBpcyBwdXQgb3V0IG9mIHVzZSwgb3IgcGFydHMgb2YgaXQgYXJlIHJlbW92ZWQgZm9yCisgICBvdGhlciB0aGFuIHRlY2huaWNhbCByZWFzb25zLCBhcmUgcGFydHMgYXJlIG5vciByZS1pbnNlcnRlZCBhZnRlciB0aGUKKyAgIHRlY2huaWNhbCByZXNvbnMgZm9yIHJlbW92YWwgYW5kIG5vdCByZS1pbnNlcnRpbmcgaGF2ZSBiZWNvbWUgdm9pZCwKKyAgIHRoZSBjdXJyZW50IHZhbHVlIG9mIHRoZSBtYWNoaW5lIHRoYXQgaGFzIHB1dCBvdXQgb2YgdXNlL3RoZSByZW1vdmVkCisgICBwYXJ0cyBpcyB0byBiZSBzdWJ0cmFjdGVkIGZyb20gdGhlIG1hY2hpbmUgY29zdHMuCisgICBJZiB0aHVzIG1vcmUgbW9uZXkgaGFzIGJlZW4gcGFpZCBmb3IgbWFjaGluZSBjb3N0cyB0aGFuIHRoZXJlIGFyZQorICAgY3VycmVudGx5LCB0aGUgc3VycGx1cyBhbW91bnQgaGFzIHRvIGJlIHJlZm91bmRlZCB0byB0aGUgbXVkIHBsYXllcnMuCis1LiBUaGUgbWFjaGluZSBjb3N0IHNoYXJlIGluIHRoZSBmZWUgbWF5IG5vdCBiZSBtb3JlIHRoYW4gMS8yNDAwdGgKKyAgIG9mIHRoZSBtYWNoaW5lIGNvc3RzIHBlciBtb250aC4gSWYgdGhlIG11ZCBoYXMgbGVzcyB0aGFuIDEwMCBwbGF5ZXJzLAorICAgaXQgbWF5IGJlIHVwIHRvIG1hY2hpbmUgY29zdHMgLyAyNCAvIG51bWJlciBvZiBwbGF5ZXJzLCBidXQgbm90IG1vcmUgdGhhbgorICAgMS8xMjB0aCBvZiB0aGUgbWFjaGluZSBjb3N0cyBwZXIgbW9udGguCis2LiBXaGVuIG1vbmV5IGhhcyB0byBiZSBwYXllZCBiYWNrIHRvIHRoZSBtdWQgcGxheWVycywgb25seSB0aG9zZSB0aGF0CisgICBoYXZlIHBheWVkIGF0IGxlYXN0IG9uY2UgYSBmZWUgd2l0aGluIHRoZSBsYXN0IDI0IG1vbnRoIGFyZSB0byBiZQorICAgY29uc2lkZXJlZC4gRm9yIHRoZXNlIHBsYXllcnMsIHRoZSBtb25leSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgcmF0aW8KKyAgIG9mIHRoZSBhbGwgZmVlIHNoYXJlcyBldmVyIHBheWVkIHRvIGNvdmVyIG1hY2hpbmUgY29zdHMuCis3LiBBbGwgcGxheWVycyBwYXkgZXF1YWwgZmVlcy4KKzguIEJhbmtpbmcgY29zdHMgdGhhdCBoYXZlIHRvIGJlIHBhaWQgYnkgdGhlIG11ZCBhZG1pbmlzdHJhdGlvbiBhbmQgYXJlCisgICBpbW1lZGlhdGVseSBjb25uZWN0ZWQgdG8gaW5jb21pbmcgbW9uZXkgdHJhbnNhY3Rpb25zIGNhbiBiZSBzdWJ0cmFjdGVkCisgICBmcm9tIHRoZSB0cmFuc2ZlcnJlZCBhbW91bnQgYmVmb3JlIGNvdW50aW5nIGl0IGFzIHBheW1lbnQgb2YgZmVlcywKKyAgIHByb3ZpZGVkIHRoYXQgdGhlIGluc3RpdHV0ZSB3YXMgY2hvb3NlbiB3aXRoIGF0IGxlYXN0IHVzdWFsCisgICBjb25zaWRlcmF0aW9uIG9uIHRlcm1zIGFuZCBjb3N0cyBvZiB0aGUgYWNjb3VudCwgYW5kIHRoYXQgdGhlcmUgaXMKKyAgIG5vIGFmZmlsaWF0b24gd2l0aCB0aGUgaW5zdGl0dXRlLgorOS4gVGhlIGFtb3VudCBvZiB2b2x1bnRhcnkgZG9uYXRpb25zIGlzIHVubGltaXRlZC4gQSBkb25hdGlvbiBpcyBub3QKKyAgIGNvbnNpZGVyZWQgdm9sdW50YXJ5IGlmIGl0IGlzIGNvbm5lY3RlZCB3aXRoIHNwZWNpYWwgZmVhdHVyZXMgb3IKKyAgIGZhdm91cnMgaW4gdGhlIG11ZCBvdGhlciB0aGFuIGFuIGhvdW5hcmFyeSBtZW50aW9uaW5nIG9mIHRoZSBkb25vciwKKyAgIG9yIGlmIHRoZSBkb25vciBpcyBtYWRlIHRvIGJlbGlldmUgdGhhdCBzdWNoIGEgY29ubmVjdGlvbiBleGlzdHMuCisgICBSZWFzb25hYmxlIG1lYXN1cmVzIGhhdmUgdG8gYmUgdGFrZW4gdGhhdCB0aGVyZSBpcyBubworICAgbWlzdW5kZXJzdGFuZGluZyBvbiB0aGlzIHBvaW50LgorCitDb21tZW50czoKKzMuIFlvdSBtYXkgbm90IHVzZSB0aGUgbW9uZXkgb2YgdGhlIG11ZCB0byBicmlkZ2UgcGVyc29uYWwgaW5saXF1aWRpdHkuCisgICBEb24ndCBnYW1ibGUgd2l0aCBvdGhlciBwZXJzb25zIG1vbmV5LCBlLmcuIGludmVzdGluZyBpdCBpbiBqdW5rIGJvbmRzLgorNS4gRmVlcyBzaG91bGQgbm90IGJlIGFyYml0cmFyaWx5IHJhaXNlZCBzbyB0aGF0IHBsYXllcnMgY2FuIGJlIGRyaXZlbgorICAgb3V0LiBJIGNvbnNpZGVyZWQgYSBmaXhlZCBtaW5pbWFsIGRpc3RyaWJ1dGVuIG9mIHRoZSBjb3N0cyB0byBiZQorICAgdGhlIGJlc3QgbWVhbnMgdG8gY29kaWZ5IHRoaXMuCisgICBBYnNvbHV0ZSBmaWd1cmVzIGFyZSBib3VuZCB0byBiZWNvbWUgdm9pZCBieSBpbmZsYXRpb24uCis2LiBUaGUgMjQgbW9udGggcGVyaW9kIGlzIGludHJvZHVjZWQgdG8gYWxsb3cgdG8gZXJlYXNlIHJlY29yZHMgb2YKKyAgIGNsaWVudHMgYWZ0ZXIgdHdvIHllYXJzLCBhbmQgdG8ga2VlcCBvdmVyaGVhZCBhZmZvcmRhYmxlLgorNy4gV2UgZG9uJ3Qgd2FudCBmYXZvdXJpdGVzIHRvIGdldCBhIGZyZWUgbGlmdCwgYW5kIG90aGVycyBncnVkZ2luZ2x5CisgICBwYXlpbmcgZXh0cmEuIElmIHlvdSB0aGluayBzb21lYm9keSBuZWVkcyBmcmVlIGFjY2VzcywgZmluZCBzb21lb25lCisgICB3aG8gcGF5cyBmb3IgaXQsIG9yIG1ha2UgYSBmb3VuZCBwYXllZCBmcm9tIHZvbHVudGFyeSBkb25hdGlvbnMuCisKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KK0RhdGU6IEZyaSwgMTkgTm92IDE5OTMgMTc6MTA6NDQgKzAxMDAgKE1FVCkKK0Zyb206IExhcnMgUGVuc2p8IDxsYXJzQGNkLmNoYWxtZXJzLnNlPgorU3ViamVjdDogUmU6IExQbXVkIENvcHlyaWdodAorVG86IGFteWxhYXJAbWVvbHlvbi5oYW5zZS5kZSAoSm9lcm4gUmVubmVja2UpCitDYzogYnVzZXlAdXgxLmNzby51aXVjLmVkdSwgbGFyc0BjZC5jaGFsbWVycy5zZSwgY3JvZXNAc3dpLnBzeS51dmEubmwsCisgICAgICAgIGd1c2FyQHVuaXdhLnV3YS5PWi5BVSwgZHVlbmluZ0BpYnIuY3MudHUtYnMuZGUsIGphY29iQGNkLmNoYWxtZXJzLnNlLAorICAgICAgICByX2JlaHJlbkBpbmZvcm1hdGlrLnVuaS1rbC5kZSwgbXVkQGFsaWprdTA1LmVkdnoudW5pLWxpbnouYWMuYXQsCisgICAgICAgIGFsY2FtYW5AY3MudHUtYmVybGluLmRlCisKK0kgYWdyZWUgdGhhdCBmaXggb2YgdGhlIGNvcHlyaWdodCBpcyBuZWVkZWQuIEkgd291bGQgcHJlZmVyIHRvIHVzZSB0aGUKK0dudSBDb3B5bGVmdCwgYXMgSSBkb24ndCBjYXJlIGFueSBsb25nZXIgaWYgYW55b25lIG1ha2VzIG1vbmV5IGZyb20gaXQuIFRoZQoraW1wb3J0YW50IHRoaW5nIGlzIHRoYXQgaXQgaXMgZnJlZSwgd2hpY2ggbWVhbnMgbm9vbmUgd2lsbCBiZSBhYmxlIHRvIG1ha2UKK211Y2ggbW9uZXkgYW55d2F5LgorCitBbnkgdGhvdWdodHMgYWJvdXQgaXQgPworCisvTGFycworCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCitEYXRlOiBGcmksIDE5IE5vdiAxOTkzIDIwOjE0OjEwICswMTAwIChNRVQpCitGcm9tOiBKYWNvYiBIYWxsZW4gPGphY29iQGNkLmNoYWxtZXJzLnNlPgorU3ViamVjdDogUmU6IExQbXVkIENvcHlyaWdodAorVG86IGFteWxhYXJAbWVvbHlvbi5oYW5zZS5kZSAoSm9lcm4gUmVubmVja2UpCitDYzogYnVzZXlAdXgxLmNzby51aXVjLmVkdSwgbGFyc0BjZC5jaGFsbWVycy5zZSwgY3JvZXNAc3dpLnBzeS51dmEubmwsCisgICAgICAgIGd1c2FyQHVuaXdhLnV3YS5PWi5BVSwgZHVlbmluZ0BpYnIuY3MudHUtYnMuZGUsIGphY29iQGNkLmNoYWxtZXJzLnNlLAorICAgICAgICByX2JlaHJlbkBpbmZvcm1hdGlrLnVuaS1rbC5kZSwgbXVkQGFsaWprdTA1LmVkdnoudW5pLWxpbnouYWMuYXQsCisgICAgICAgIGFsY2FtYW5AY3MudHUtYmVybGluLmRlCisKKz4gSmFjb2IgSGFsbGVuOiBpcyBvbmUgb2YgdGhlIHBlb3BsZSBpbnZvbHZlZCB3aXRoIHRoZSBDRCBkcml2ZXI7IHRoZSBlbWFpbAorPiAgYWRkcmVzcyB3YXMgaW4gdGhlIG5ld3MgcmVjZW50bHkuLi4KKz4gICBQbGVhc2UgZm9yd2FyZCB0aGlzIGxldHRlciB0byB0aGUgcGVyc29uIGhvbGRpbmcgdGhlIGNvcHlyaWdodCBmb3IgdGhlCis+ICAgVURQIGNvbm5lY3Rpdml0eSh1bmxlc3MgaXQncyB5b3Vyc2VsZiA6LSkgLgorCitJIHJlcHJlc2VudCBldmVyeW9uZSBpbnZvbHZlZCBpbiB0aGUgQ0QgZHJpdmVyLiBUaGUgVURQIHN0dWZmIGlzIHRvIGJlCitjb25zaWRlcmVkIHB1YmxpYyBkb21haW4uIEFsbCBvdGhlciBwYXJ0cyBhcmUgY292ZXJlZCBieSB0aGUgbm9uLXByb2ZpdCBjbGF1c2UuCitDb2RlIG9yaWdpbmF0aW9uIGZyb20gbWUsIEpvaGFuIEFuZGVyc3NvbiAoQ29tbWFuZGVyKSwgUm9ubnkgV2lraCAoTXJwciksCitMZW5uYXJ0IEF1Z3VzdHNzb24gKE1hcnZpbikgaXMgY292ZXJlZCBieSBpdC4gV2UgaGF2ZSBubyBpbnRlbnRpb24gb2YKK2FsbG93aW5nIHBlb3BsZSB0byBjaGFyZ2UgbW9uZXkgZm9yIHRoZSB1c2FnZSBvZiBvdXIgZHJpdmVyLCBvciBib3Jyb3dlZAorcGllY2VzIHRoZXJlb2YuCitXZSBjb25zaWRlciB0aGUgYWNjZXB0YW5jZSBvZiB2b2xvbnRhcnkgZG9uYXRpb25zIGFzIGZhaXIgcHJhY3RpY2UsIGFuZCB3ZQorY2FuIGFjY2VwdCB0aGUgY2hhcmdpbmcgZm9yIHRoZSB1c2Ugb2YgZXh0cmEgZXF1aXBtZW50IG5lZWRlZCB0byBhbGxvdworcGVvcGxlIHRvIGFjY2VzcyB0aGUgbXVkLCBhcyBsb25nIGFzIHRoZXJlIGlzIGEgcmVhc29uYWJsZSB3YXkgdG8gYWNjZXNzIHRoZQorbXVkIHdpdGhvdXQgYmVpbmcgY2hhcmdlZC4gKFByb3ZpZGluZyBtb2RlbSBhY2Nlc3MgYXQgYSBjb3N0IHdoaWxlIGFsbG93aW5nCitmcmVlIGFjY2VzcyBvdmVyIHRoZSBpbnRlcm5ldCBpcyBhbiBleGFtcGxlIG9mIHN1Y2ggYSBzZXR1cC4pCisKK015IHBlcnNvbmFsIHZpZXcgaXMgdGhhdCBhbiBlbGFib3JhdGUgc2V0dXAgb2YgdGVybXMgbGlrZSB0aGUgb25lIGluIHRoZQorb3JpZ2luYWwgbGV0dGVyIGlzIHVucmVhc29uYWJsZS4gSXQgaXMgZGVzaWduZWQgZm9yIGEgdmVyeSBzcGVjaWZpYyBzZXQgb2YKK2NpcmN1bXN0YW5jZXMuIEl0IGlzIGltcG9zc2libGUgdG8gY2hlY2sgYW5kIGl0IGlzIHZlcnkgYnVyZWF1Y3JhdGljLgorSXQgZG9lcyBub3QgaGF2ZSBteSBzdXBwb3J0LgorCitKYWNvYiBIYWxsZW4KKworLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorRGF0ZTogU2F0LCAyMCBOb3YgMTk5MyAyMzozNToxMiArMDEwMCAoTUVUKQorRnJvbTogTXVsdGkgVXNlciBEdW5nZW9uIDxtdWRAYWxpamt1MDUuZWR2ei51bmktbGluei5hYy5hdD4KK1N1YmplY3Q6IFJlOiBMUG11ZCBDb3B5cmlnaHQKK1RvOiBsYXJzQGNkLmNoYWxtZXJzLnNlIChMYXJzIFBlbnNqfCkKK0NjOiBidXNleUB1eDEuY3NvLnVpdWMuZWR1LCBjcm9lc0Bzd2kucHN5LnV2YS5ubCwgZ3VzYXJAdW5pd2EudXdhLk9aLkFVLAorICAgICAgICBkdWVuaW5nQGlici5jcy50dS1icy5kZSwgamFjb2JAY2QuY2hhbG1lcnMuc2UsCisgICAgICAgIHJfYmVocmVuQGluZm9ybWF0aWsudW5pLWtsLmRlLCBhbGNhbWFuQGNzLnR1LWJlcmxpbi5kZQorCitMYXJzPiBpbXBvcnRhbnQgdGhpbmcgaXMgdGhhdCBpdCBpcyBmcmVlLCB3aGljaCBtZWFucyBub29uZSB3aWxsIGJlIGFibGUgdG8gbWFrZQorTGFycz4gbXVjaCBtb25leSBhbnl3YXkuCisKK1lvdSBhcmUgc3BlYWtpbmcgYWJvdXQgdGhlIEdELGNvcnJlY3QgPyBOb3JtYWxseSwgbWFueSBhIHNpdGUgdXNlcyBhbiB1bm1vZGlmaWVkCitHRCBiYXNlZCB1cG9uIHdoaWNoIGlzIGEgbW9yZSBvciBsZXNzIGhlYXZpbHkgb3Igbm90IGhlYXZpbHkgTXVkbGliLiBCYXNlZCB1cG9uCit0aGlzIE11ZGxpYiBpcyB0aGUgd29yayBvZiB0aGUgYHdpemFyZHMnIC4uLiBTb3JyeSBmb3IgcmVwZWF0aW5nIGtub3duIHN0dWZmLgorCitUaGlzIG1ha2VzIG1vc3QgTXVkcyBkaWZmZXIgZnJvbSBlYWNoIG90aGVyLiBTbywgdGhlIGZhY3QgdGhhdCB0aGUgR0QgaXRzZWxmCitpcyBmcmVlLCBkb2Vzbid0IGltcGx5IHRoYXQgeW91IHdvbid0IG1ha2UgbW9uZXkuCisKK0Fub3RoZXIgcG9pbnQgdG8gYXJndWU6IG1haW50YWluaWcgYSBNdWQgdGFrZXMgdGltZSAuLiBhIExPVCBvZiB0aW1lLiBVc3VhbGx5LAorZG9pbmcgc28gaXMgbm90IGZ1biBhdCBhbGwuIEkgZXhwZXJpZW5jZWQgdGhhdCB0aGUgbW9yZSBwbGF5ZXJzIHlvdSBoYXZlLCB0aGUKK2xlc3MgZnVuIGl0IGlzIGZvcmUgdGhlIGFkbWluc3RyYXRvcnMuIFlvdSBzcGVuZCBhIGxvdCBvZiB0aW1lIGNvZGluZywKK3NlYXJjaGluZyBhbmQgZml4aW5nIGJ1Z3MgLi4uIGFuZCBJIHRoaW5rLCB0aGlzIGNhbiBiZSByZWdhcmRlZCBhcyBhCitzZXJ2aWNlIGZvciBwbGF5ZXJzICguLi4gYW5kIHBsYXllcnMgcmVhbGx5IGNhbiBiZSBhIHBhaW4gc29tZXRpbWVzIC4uLikKK1dvdWxkIGl0IGJlIGxlZ2FsIHRvIGNoYXJnZSBtb25leSBmb3IgdGhhdCA/CisKK0Fub3RoZXIgdGhvdWdodDogSW50ZXJuZXQgTXVkcy4gVGhleSBydW4gb24gaW50ZXJuZXQsIHVzdWFsbHkgb24gY29tcHV0ZXJzCitvd25lZCBieSBhIHNjaG9vbCBvciB1bml2ZXJzaXR5LCBzb21lIHdpdGgsIHNvbWUgd2l0aG91dCB0aGUga25vd2xlZGdlIG9mCit0aGUgc2l0ZSBhZG1pbnN0cmF0b3JzLiBXb3VsZCBpdCBiZSBsZWdhbCB0byBjaGFyZ2UgbW9uZXkgd2hlbiB5b3UgcnVuCithIE11ZCBvbiBlcXVpcG1lbnQgbm90IG93bmVkIGJ5IHlvdXJzZWxmID8gQW5kLCBldmVuIGlmIHlvdSBvd24gdGhlIGNvbXB1dGVyLAorZG8geW91IHBheSBmb3IgdGhlIGludGVybmV0IGxpbmsgPyBJZiBub3QsIEkgZmVhciB5b3UgbXVzdCBub3QgY2hhcmdlIG1vbmV5Citmb3IgYSBNdWQgd2l0aG91dCBzcGVha2luZyB3aXRoIHRoZSBuZXR3b3JrIGFkbWluc3RyYXRvciBzaW5jZSB5b3UgYXJlIHVzaW5nCit0aGUgbmV0d29yayBjb21wb25lbnRzIChyb3V0ZXIvYnJpZGdlcywgZXZlbiBjYWJsZXMgOi0+IC4uLikgZm9yIGZyZWUuCisKK0hvdyBkaWZmaWN1bHQgaXMgY2hhcmdpbmcgbW9uZXkgaW4gRXVyb3BlYW4gTXVkcyA/IE5vdCB0aGF0IEkgcGxhbgordG8gZG8gc28gZm9yIEhNIChpdCdzIGNsb3NlZCBmb3IgcGxheWVycyBjdXJyZW50bHkgYW55d2F5KSwgYnV0IGlzbid0IHRoZXJlIGEKK2JpZyBkaWZmZXJlbmNlIGFjY29yZGluZyB0byB0aGUgImFjY291bnRpbmcgbWVjaGFuaXNtIiAodWdoLCBiYWQgZW5nbGlzaCA6LSkKK3RoYXQgaXMgdXNlZCBpbiB0aGUgU3RhdGVzID8gSSBoZWFyZCB0aGF0IGl0IGlzIG11Y2ggbW9yZSBlYXN5IHRvIG1ha2UKK2ZpbmFuY2lhbCB0cmFuc2FjdGlvbnMgd2l0aGluIHRoZSBTdGF0ZXMuIFNvLCBJIHN1c3BlY3QgdGhlICJNdWQgbW9uZXkgY2hhcmdpbmciCitkaXNjdXNzaW9uIGFycml2ZXMgZnJvbSB0aGUgVVMgOi0pCisKK0dyZWV0aW5ncywgSGVycCAobXVkQG11ZC51bmktbGluei5hYy5hdCkKKworLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCitGcm9tIGphY29iQGNkLmNoYWxtZXJzLnNlIFN1biBPY3QgMjQgMTc6MDI6NTMgMTk5OQorTmV3c2dyb3VwczogcmVjLmdhbWVzLm11ZC5hZG1pbgorU3ViamVjdDogUmU6IE5ld3Nncm91cHMKK0Zyb206IGphY29iQGNkLmNoYWxtZXJzLnNlIChKYWNvYiBIYWxsZW4pCitEYXRlOiAyNCBPY3QgMTk5OSAxNjowMjo1MyBHTVQKKworSW4gYXJ0aWNsZSA8MzgwZjgxN2QuMzU5MTY1MjhAbmV3cy5lYXJ0aGxpbmsubmV0PiwKK0xhcnMgRHVlbmluZyA8bGFyc0BiZWFybmlwLmNvbT4gd3JvdGU6Cis+T24gVGh1LCAyMSBPY3QgMTk5OSAxMjoxMTozNiAtMDcwMCwgSWx5YQorPjxpbHlhQHNwYW0uZnJlZS5nYW1lY29tbWFuZG9zLmNvbT4gd3JvdGU6Cis+Cis+PkhleSBMYXJzLCB3aGF0IGhvcGUgaXMgdGhlcmUsIGlmIGFueSwgb2YgZ2V0dGluZworPj5zb21ldGhpbmcgZ29pbmcgaW4gdGhlIExQIHdvcmxkLCB1c2luZyBMRG11ZCBvcgorPj53aGF0ZXZlciwgIHRoYXQgY2FuIGJlIHVzZWQgY29tbWVyY2lhbGx5PworPgorPlVuZm9ydHVuYXRlbHkgb25seSBzbGltIGhvcGU6IHRoZSBwYXJ0cyB3cml0dGVuIGJ5IHRoZSBHZW5lc2lzIGZvbGtzCis+YXJlIGRlZmluaXRlbHkgbm9uLWNvbW1lcmNpYWw7IGJ1dCByZXdyaXRpbmcgaXMgZGlmZmljdWx0IGJlY2F1c2UKKz5ub2JvZHkgcmVtZW1iZXJzIF93aGljaF8gcGFydHMgYXJlIGNvbmNlcm5lZCAoYW5kIG1haWxlZCByZXF1ZXN0cworPmhhdmVuJ3QgYmVlbiBhbnN3ZXJlZCkuIEFuZCBJIGhhdmVuJ3QgYXNrZWQgdGhlIG90aGVyIGNvbnRyaWJ1dG9ycworPnlldCwgZWl0aGVyLgorCitJIGhhdmUgYSBwcmV0dHkgZ29vZCBpZGVhIG9mIHdobyB3cm90ZSB3aGF0IHBhcnRzIG9mIHRoZSBlYXJseSB2ZXJzaW9uIDMKK2dhbWVkcml2ZXJzLiBBbGwgaW4gYWxsIHRoZXJlIGhhdmUgYmVlbiBhYm91dCAzMCBwZW9wbGUgaW52b2x2ZWQuIFVubGVzcworeW91IHJlY29kZSB0aGUgZW50aXJlIGdhbWVkcml2ZXIgZnJvbSBzY3JhdGNoLCBvciBidWlsZCBmcm9tIGFzc2VtYmxlZCBwaWVjZXMKK3dpdGgga25vd24gY29weXJpZ2h0IHJlc3RyaWN0aW9ucywgdGhlcmUgaXMgbm8gd2F5IHlvdSBjYW4gY29tZSB1cCB3aXRoCitzb21ldGhpbmcgdGhhdCBkb2VzIG5vdCBpbmZyaW5nZSBvbiB0aGUgcmlnaHRzIG9mIHNvbWVvbmUgd2hvIHdpbGwgbm90CithbGxvdyBjb21tZWNpYWwgdXNlLgorCitKYWNvYiBIYWxs6W4KKworLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKZGlmZiAtLWdpdCBhL2RvYy9kcml2ZXIvZGVidWdtYWxsb2MgYi9kb2MvZHJpdmVyL2RlYnVnbWFsbG9jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjhmNzhiYWUKLS0tIC9kZXYvbnVsbAorKysgYi9kb2MvZHJpdmVyL2RlYnVnbWFsbG9jCkBAIC0wLDAgKzEsMTcgQEAKK05BTUUKKyAgICAgICAgZGVidWdtYWxsb2MKKworREVTQ1JJUFRJT04KKyAgICAgICAgVGhpcyBjb21tYW5kIGlzIGhhcmRjb2RlZCBpbnRvIHRoZSBkcml2ZXIuCisKKyAgICAgICAgVG9nZ2xlcyB0aGUgZGVidWcgbW9kZSBmb3IgdGhlIG1lbW9yeSBtYW5hZ21lbnQuCisgICAgICAgIElmIHRoZSBPX0lTX1dJWkFSRCBmbGFnIGlzIHVzZWQgaW4gdGhlIG11ZGxpYiAoaS5lLiBpZgorICAgICAgICBzZXRfaXNfd2l6YXJkKCkgd2FzIGNhbGxlZCksIHRoaXMgY29tbWFuZCBpcyBhbGxvd2VkIG9ubHkgZm9yCisgICAgICAgIHVzZXJzIHRoYXQgaGF2ZSB0aGlzIGZsYWcgc2V0LgorCitISVNUT1JZCisgICAgICAgIERlYWN0aXZhdGVkIGluIDMuMi43IGJ5IGRlZmF1bHQsIGl0IHdhcyBlZmZlY3RsZXNzIGJlZm9yZSBhbnl3YXkuCisKK1NFRSBBTFNPCisgICAgICAgIG1hbGxvYyhEKSwgc3RhdHVzKEQpLCBtZW1vcnkoQyksIG9iamVjdHMoQyksIGRlYnVnX2luZm8oRSksCisgICAgICAgIHNldF9pc193aXphcmQoRSkKZGlmZiAtLWdpdCBhL2RvYy9kcml2ZXIvZHJpdmVyIGIvZG9jL2RyaXZlci9kcml2ZXIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNDA0MzBlOAotLS0gL2Rldi9udWxsCisrKyBiL2RvYy9kcml2ZXIvZHJpdmVyCkBAIC0wLDAgKzEsMTUgQEAKK05BTUUKKyAgICAgICAgZHJpdmVyCisKK0RFU0NSSVBUSU9OCisgICAgICAgIFRoaXMgZGlyZWN0b3J5IGNvbnRhaW5zIGRlc2NyaXB0aW9ucyBvZiBtaXNjZWxsYW5lb3VzCisgICAgICAgIGludGVybmFscyBvZiBBbXlsYWFyJ3MgdmVyc2lvbiBvZiB0aGUgTFBDIHBhcnNlci9pbnRlcnByZXRlciwKKyAgICAgICAgdGhhdCBtaWdodCBiZSB1c2VmdWwgdG8ga25vdy4KKworICAgICAgICBPbmUgdGhpbmcgZGVzY3JpYmVkIGhlcmUgYXJlIHRoZSBzcGVjaWFsIGhhcmRjb2RlZCBjb21tYW5kcworICAgICAgICBvZiB0aGUgaW50ZXJwcmV0ZXIgZm9yIHF1ZXJ5aW5nIHRoZSBzdGF0dXMgb2YgdGhlIG1lbW9yeQorICAgICAgICBtYW5hZ2VtZW50LgorCitTRUUgQUxTTworICAgICAgICBlZnVuKEUpLCBhcHBsaWVkKEEpLCBjb25jZXB0cyhDKSwgbWFzdGVyKE0pLCBscGMoTFBDKSwKKyAgICAgICAgbWFsbG9jKEQpLCBzdGF0dXMoRCkKZGlmZiAtLWdpdCBhL2RvYy9kcml2ZXIvZHVtcGFsbG9iaiBiL2RvYy9kcml2ZXIvZHVtcGFsbG9iagpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4yNGI4ODRhCi0tLSAvZGV2L251bGwKKysrIGIvZG9jL2RyaXZlci9kdW1wYWxsb2JqCkBAIC0wLDAgKzEsNDkgQEAKK05BTUUKKyAgICAgICAgZHVtcGFsbG9iagorCitERVNDUklQVElPTgorICAgICAgICBXcml0ZSBhIGxpc3Qgb2YgYWxsIGxvYWRlZCBvciBjbG9uZWQgb2JqZWN0cyBpbnRvIHRoZSBmaWxlCisgICAgICAgIE9CSl9EVU1QLCBhbmQgYSBsaXN0IG9mIGFsbCBkZXN0cnVjdGVkIG9iamVjdHMgaW50byB0aGUKKyAgICAgICAgZmlsZSBERVNUX09CSl9EVU1QLiBCb3RoIGZpbGVzIGFyZSBsb2NhdGVkIGluIHRoZSByb290IGRpcmVjdG9yeSBvZgorICAgICAgICB0aGUgbXVkbGliLgorCisgICAgICAgIFdhcm5pbmc6IHRoZXNlIGZpbGVzIGNhbiBiZSB2ZXJ5IGxhcmdlLCBhbmQgaWYgdGhlIGRyaXZlciBpcyBsb3cKKyAgICAgICAgb24gbWVtb3J5IHRoZXJlIGlzIGEgY2VydGFpbiBjcmFzaCBwcm9iYWJpbGl0eS4KKworICAgICAgICBJZiB0aGUgT19JU19XSVpBUkQgZmxhZyBpcyB1c2VkIGluIHRoZSBtdWRsaWIgKGkuZS4gaWYKKyAgICAgICAgc2V0X2lzX3dpemFyZCgpIHdhcyBjYWxsZWQpLCB0aGlzIGNvbW1hbmQgaXMgYWxsb3dlZCBvbmx5IGZvcgorICAgICAgICB1c2VycyB0aGF0IGhhdmUgdGhpcyBmbGFnIHNldC4KKworICAgICAgICBGb3IgZXZlcnkgbGl2ZSBvYmplY3QsIGEgbGluZSBpcyB3cml0dGVuIGludG8gdGhlIGZpbGUgd2l0aCB0aGUKKyAgICAgICAgZm9sbG93aW5nIGluZm9ybWF0aW9uIGluIHRoZSBnaXZlbiBvcmRlcjoKKyAgICAgICAgICAtIG9iamVjdCBuYW1lCisgICAgICAgICAgLSBzaXplIGluIG1lbW9yeSwgc2hhcmVkIGRhdGEgY291bnRlZCBvbmx5IG9uY2UKKyAgICAgICAgICAtIHNpemUgaW4gbWVtb3J5IGlmIGRhdGEgd291bGRuJ3QgYmUgc2hhcmVkCisgICAgICAgICAgLSBudW1iZXIgb2YgcmVmZXJlbmNlcworICAgICAgICAgIC0gJ0hCJyBpZiB0aGUgb2JqZWN0IGhhcyBhIGhlYXJ0YmVhdCwgbm90aGluZyBpZiBub3QuCisgICAgICAgICAgLSB0aGUgbmFtZSBvZiB0aGUgZW52aXJvbm1lbnQsIG9yICctLScgaWYgdGhlIG9iamVjdCBoYXMgbm8KKyAgICAgICAgICAgIGVudmlyb25tZW50CisgICAgICAgICAgLSBpbiBwYXJlbnRoZXNlcyB0aGUgbnVtYmVyIG9mIGV4ZWN1dGlvbiB0aWNrcyBzcGVudCBpbiB0aGlzCisgICAgICAgICAgICBvYmplY3QKKyAgICAgICAgICAtIHRoZSBzd2FwIHN0YXR1czoKKyAgICAgICAgICAgICBub3RoaW5nIGlmIG5vdCBzd2FwcGVkLAorICAgICAgICAgICAgICdQUk9HIFNXQVBQRUQnIGlmIG9ubHkgdGhlIHByb2dyYW0gaXMgc3dhcHBlZAorICAgICAgICAgICAgICdWQVIgU1dBUFBFRCcgaWYgb25seSB0aGUgdmFyaWFiZXMgYXJlIHN3YXBwZWQKKyAgICAgICAgICAgICAnU1dBUFBFRCcgaWYgYm90aCBwcm9ncmFtIGFuZCB2YXJpYWJsZXMgYXJlIHN3YXBwZWQKKyAgICAgICAgICAtIHRoZSB0aW1lIHRoZSBvYmplY3Qgd2FzIGNyZWF0ZWQKKworICAgICAgICBGb3IgZXZlcnkgZGVzdHJ1Y3RlZCBvYmplY3QsIGEgbGluZSBpcyB3cml0dGVuIGludG8gdGhlIGZpbGUgd2l0aCB0aGUKKyAgICAgICAgZm9sbG93aW5nIGluZm9ybWF0aW9uIGluIHRoZSBnaXZlbiBvcmRlcjoKKyAgICAgICAgICAtIG9iamVjdCBuYW1lCisgICAgICAgICAgLSBudW1iZXIgb2YgcmVmZXJlbmNlcworICAgICAgICAgIC0gJ05FVycgaWYgdGhlIG9iamVjdCB3YXMgZGVzdHJ1Y3RlZCBpbiB0aGlzIGV4ZWN1dGlvbmcKKyAgICAgICAgICAgIHRocmVhZCwgbm90aGluZyBpZiBpdCBpcyBvbGRlciBhbHJlYWR5LgorCisKK0hJU1RPUlkKKyAgICAgICAgTERNdWQgMy4yLjkgYWRkZWQgdGhlIERFU1RfT0JKX0RVTVAuCisgICAgICAgIExETXVkIDMuMi4xMCBhZGRlZCB0aGUgb2JqZWN0IGNyZWF0aW9uIHRpbWUgdG8gT0JKX0RVTVAuCisKK1NFRSBBTFNPCisgICAgICAgIG1hbGxvYyhEKSwgc3RhdHVzKEQpLCBtZW1vcnkoQyksIG9iamVjdHMoQyksIGRlYnVnX2luZm8oRSksCisgICAgICAgIHNldF9pc193aXphcmQoRSkKZGlmZiAtLWdpdCBhL2RvYy9kcml2ZXIvaW52b2NhdGlvbiBiL2RvYy9kcml2ZXIvaW52b2NhdGlvbgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41NzYwYjQ2Ci0tLSAvZGV2L251bGwKKysrIGIvZG9jL2RyaXZlci9pbnZvY2F0aW9uCkBAIC0wLDAgKzEsMzM1IEBACitOQU1FCisgICAgZHJpdmVyL2ludm9jYXRpb24KKworUFVSUE9TRQorICAgIERlc2NyaXB0aW9uIG9mIHRoZSBpbnZvY2F0aW9uIG9mIHRoZSBnYW1lZHJpdmVyLCBlc3BlY2lhbGx5IG9mIHRoZSBjb21tYW5kCisgICAgYXJndW1lbnRzLiBUaGlzIGRvY3VtZW50IGRlc2NyaWJlcyB0aGUgY29tbWFuZGxpbmUgdmVyc2lvbiBvZiB0aGUgZHJpdmVyCisgICAgb25seTsgbm9uLWNvbW1hbmRsaW5lIHZlcnNpb25zIGFyZSBwbGF0Zm9ybSBzcGVjaWZpYyBhbmQgZGVzY3JpYmVkIGluCisgICAgdGhlIHJlbGF0ZWQgZG9jdW1lbnRhdGlvbi4KKworREVTQ1JJUFRJT04KKyAgICBUaGUgZHJpdmVyIGlzIGludm9rZWQgZnJvbSB0aGUgY29tbWFuZGxpbmUgYXMgb3RoZXIgbm9ybWFsIHByb2dyYW1zLgorICAgIE5laXRoZXIgdGhlIGN1cnJlbnQgZGlyZWN0b3J5IG5vciB0aGUgZGlyZWN0b3J5IHRoZSBleGVjdXRhYmxlIGlzIGluIG5lZWQKKyAgICB0byBiZSBpbiBhbnkgc3BlY2lhbCByZWxhdGlvbiB0aGUgZGlyZWN0b3J5IG9mIHRoZSBtdWRsaWIuIE9uY2UgdGhlIGRyaXZlcgorICAgIGlzIHJ1bm5pbmcsIGl0IGVtaXRzIHR3byBzdHJlYW1zIG9mIG91dHB1dHM6CisKKyAgICAgIC0gZHJpdmVyLXJlbGF0ZWQgbWVzc2FnZXMgb24gc3RkZXJyOyB0aGlzIHVuZm9ydHVuYXRlbHkgaW5jbHVkZXMKKyAgICAgICAgTFBDIGNvbXBpbGVyIGRpYWdub3N0aWNzCisgICAgICAtIExQQyBydW50aW1lLXJlbGF0ZWQgbWVzc2FnZXMgaW4gdGhlIGxvZ2ZpbGUgPG11ZGxpYj4vPGhvc3Q+LnBhcnNlLmxvZworICAgICAgICAodGhlIG5hbWUgY2FuIGJlIGNoYW5nZWQpLgorCisgICAgSXQgaXMgcG9zc2libGUgdG8gc3RhcnQgdGhlIGRyaXZlciB3aXRob3V0IGFueSBjb21tYW5kbGluZSBhcmd1bWVudHMgYXMKKyAgICBzdWl0YWJsZSBkZWZhdWx0cyBhcmUgc3BlY2lmaWVkIGF0IGNvbXBpbGUgdGltZS4gVGhlIGludm9jYXRpb24gc3ludGF4CisgICAgaXM6CisKKyAgICAgICAgZHJpdmVyIFtvcHRpb25zXSBbPHBvcnRudW1iZXI+XS4uLgorCisgICAgPHBvcnRudW1iZXI+IHRoZSBudW1iZXIgb2YgdGhlIHBvcnQgdGhlIGRyaXZlciBzaGFsbCB1c2UgdG8gYWNjZXB0CisgICAgY29ubmVjdGlvbnMuIFRoZSBtYXhpbXVtIG51bWJlciBvZiBwb3J0cyBpcyBkZXRlcm1pbmVkIGJ5IE1BWE5VTVBPUlRTCisgICAgaW4gdGhlIHNvdXJjZSBmaWxlIGNvbmZpZy5oLgorCisgICAgVGhlIG9wdGlvbnMgbW9kaWZ5IHRoZSBiZWhhdmlvdXIgb2YgdGhlIGdhbWVkcml2ZXIuIFNvbWUgb2YgdGhlbSBhcmUgb25seQorICAgIGF2YWlsYWJsZSBpZiBhIGNlcnRhaW4gY29tcGlsZS10aW1lIG9wdGlvbiB3YXMgZW5hYmxlZCAodHlwaWNhbGx5IGluCisgICAgdGhlIHNvdXJjZSBmaWxlIGNvbmZpZy5oKS4gVGhlIGZvbGxvd2luZyBvcHRpb25zIGFyZSByZWNvZ25pemVkOgorCisgICAgICAtUHwtLWluaGVyaXQgPGZkLW51bWJlcj4KKyAgICAgICAgSW5oZXJpdCBmaWxlZGVzY3JpcHRvciA8ZmQtbnVtYmVyPiBmcm9tIHRoZSBwYXJlbnQgcHJvY2VzcworICAgICAgICBhcyBzb2NrZXQgdG8gbGlzdGVuIGZvciBjb25uZWN0aW9ucy4KKyAgICAgICAgT25seSBhdmFpbGFibGUgaWYgY29tcGlsZWQgd2l0aCBNQVhOVU1QT1JUUy4KKworICAgICAgLXV8LS11ZHAgPHBvcnRudW1iZXI+CisgICAgICAgIFNwZWNpZnkgdGhlIDxwb3J0bnVtYmVyPiBmb3IgdGhlIFVEUCBwb3J0LCBvdmVycmlkaW5nIHRoZSBjb21waWxlZC1pbgorICAgICAgICBkZWZhdWx0LgorICAgICAgICBPbmx5IGF2YWlsYWJsZSBpZiBjb21waWxlZCB3aXRoIENBVENIX1VEUF9QT1JULgorCisgICAgICAtRHwtLWRlZmluZSA8bWFjcm8+Wz08dGV4dD5dCisgICAgICAgIEFkZCA8bWFjcm8+IChvcHRpb25hbGx5IHRvIGJlIGV4cGFuZGVkIHRvIDx0ZXh0PikgdG8gdGhlIGxpc3Qgb2YKKyAgICAgICAgcHJlZGVmaW5lZCBtYWNyb3Mga25vd24gYnkgdGhlIExQQyBjb21waWxlci4KKworICAgICAgLUV8LS1ldmFsLWNvc3QgPHRpY2tzPgorICAgICAgICBTZXQgdGhlIG51bWJlciBvZiA8dGlja3M+IGF2YWlsYWJsZSBmb3Igb25lIGV2YWx1YXRpb24gdGhyZWFkLgorICAgICAgICBJZiAwLCBleGVjdXRpb24gaXMgdW5saW1pdGVkLgorCisgICAgICAtTXwtLW1hc3RlciA8ZmlsZW5hbWU+CisgICAgICAgIFVzZSA8ZmlsZW5hbWU+IGZvciB0aGUgbWFzdGVyIG9iamVjdC4KKworICAgICAgLW18LS1tdWRsaWIgPHBhdGhuYW1lPgorICAgICAgICBVc2UgPHBhdGhuYW1lPiBhcyB0aGUgdG9wIGRpcmVjdG9yeSBvZiB0aGUgbXVkbGliLgorCisgICAgICAtLWRlYnVnLWZpbGUgPGZpbGVuYW1lPgorICAgICAgICBMb2cgYWxsIGRlYnVnIG91dHB1dCBpbiA8ZmlsZW5hbWU+IGluc3RlYWQgb2YKKyAgICAgICAgPG11ZGxpYj4vPGhvc3Q+LmRlYnVnLmxvZyAuCisKKyAgICAgIC0taG9zdG5hbWUgPG5hbWU+CisgICAgICAgIFVzZSA8bmFtZT4gYXMgaG9zdG5hbWUgaW5zdGVhZCBvZiB3aGF0IHRoZSBzeXN0ZW0gc2F5cy4KKworICAgICAgLS1ob3N0YWRkciA8YWRkcj4KKyAgICAgICAgVXNlIDxhZGRyPiBhcyBhZGRyZXNzIG9mIHRoaXMgbWFjaGluZSwgaW5zdGVhZCBvZiB3aGF0IHRoZQorICAgICAgICBzeXN0ZW0gc2F5cy4gIEluIHBhcnRpY3VsYXIgdGhpcyBhZGRyZXNzIHdpbGwgYmUgdXNlZCB0byBvcGVuCisgICAgICAgIHRoZSBkcml2ZXIgcG9ydHMuCisKKyAgICAgIC0tbm8tY29tcGF0CisgICAgICAtLWNvbXBhdAorICAgICAgICBTZWxlY3QgdGhlIG1vZGUgKHBsYWluIG9yIGNvbXBhdCkgb2YgdGhlIGRyaXZlci4KKyAgICAgICAgVGhpcyBjaG9pY2UgZG9lcyBub3QgYWZmZWN0IHRoZSBkZWZhdWx0IG5hbWUgb2YgdGhlIG1hc3RlciBvYmplY3QuCisKKyAgICAgIC1kfC0tZGVidWcKKyAgICAgICAgR2VuZXJhdGUgZGVidWcgb3V0cHV0OyByZXBlYXQgdGhlIGFyZ3VtZW50IGZvciBldmVuIG1vcmUgb3V0cHV0OgorICAgICAgICAgID49IDE6IGxvZyByZXNldHMsIGNsZWFuIHVwcywgc3dhcHMsIHJlY2VwdGlvbiBvZiB1cmdlbmQgZGF0YSwKKyAgICAgICAgICAgICAgICAgICB0ZWxuZXQgbmVnb3RpYXRpb24gc3RhdGVzLgorICAgICAgICAgICAgICAgIGNoZWNrX2FfbG90X29mX3JlZmNvdW50cygpIG9uIHN0YXJ0dXAgd2hlbiBzd2FwcGluZyBvZgorICAgICAgICAgICAgICAgICAgIHZhcmlhYmxlcyBpcyBkaXNhYmxlZC4KKyAgICAgICAgICA+PSAyOiBsb2cgYWxsIGFkZF9tZXNzYWdlKClzLCBuYW1lIGxvb2t1cCBmYWlsdXJlcywgbmV3IHBsYXllcnMuCisgICAgICAgICAgPj0gMzogcHJvZ3Jlc3Mgb2YgZ2FyYmFnZSBjb2xsZWN0aW9uCisgICAgICAgICAgPj0gNDogZXZlbiBtb3JlIGp1bmsgZnJvbSBnYXJiYWdlIGNvbGxlY3Rpb24KKworICAgICAgLWN8LS1saXN0LWNvbXBpbGVzCisgICAgICAgIExpc3QgdGhlIG5hbWUgb2YgZXZlcnkgY29tcGlsZWQgZmlsZSBvbiBzdGRlcnIuCisKKyAgICAgIC1lfC0tbm8tcHJlbG9hZAorICAgICAgICBQYXNzIGEgbm9uLXplcm8gYXJndW1lbnQgKHRoZSBudW1iZXIgb2Ygb2NjdXJlbmNlcyBvZiB0aGlzIG9wdGlvbikKKyAgICAgICAgdG8gbWFzdGVyLT5wcmVsb2FkKCksIHdoaWNoIHVzdWFsbHkgaW5oaWJpdHMgYWxsIHByZWxvYWRzIG9mIGNhc3RsZXMKKyAgICAgICAgYW5kIG90aGVyIG9iamVjdHMuCisKKyAgICAgIC0tZXJxIDxmaWxlbmFtZT4KKyAgICAgIC0tZXJxICI8ZmlsZW5hbWU+IDxlcnEgYXJncz4iCisgICAgICAgIFVzZSA8ZmlsZW5hbWU+IGluc3RlYWQgb2YgJ2VycScgYXMgdGhlIGJhc2VuYW1lIG9mIHRoZSBFUlEgZXhlY3V0YWJsZS4KKyAgICAgICAgSWYgdGhlIG5hbWUgc3RhcnRzIHdpdGggYSAnLycsIGl0IGlzIHRha2UgdG8gYmUgYW4gYWJzb2x1dGUgcGF0aG5hbWUsCisgICAgICAgIG90aGVyd2lzZSBpdCBpcyBpbnRlcnByZXRlZCByZWxhdGl2ZSB0byA8YmluZGlyPi4gSWYgbm90IHNwZWNpZmllZCwKKyAgICAgICAgJ2VycScgaXMgdXNlZCBhcyB0aGUgZXhlY3V0YWJsZSBuYW1lLgorCisgICAgICAgIEJ5IGVuY2xvc2luZyB0aGUgYXJndW1lbnQgdmFsdWUgaW4gcXVvdGVzLCBpdCBpcyBwb3NzaWJsZSB0byBwYXNzCisgICAgICAgIGFyZ3VtZW50cyAoZS5nLiAtLWV4ZWNkaXIpIHRvIHRoZSBlcnEuIFRoZXNlIGFyZ3VtZW50cyBob3dldmVyIG11c3QKKyAgICAgICAgbm90IGNvbnRhaW4gZW1iZWRkZWQgc3BhY2VzLgorCisgICAgICAtTnwtLW5vLWVycQorICAgICAgICBEb24ndCBzdGFydCB0aGUgZXJxIGRlbW9uIChpZiBpdCB3b3VsZCBiZSBzdGFydGVkIGF0IGFsbCkuCisKKyAgICAgIC0tYWxhcm0tdGltZSA8c2Vjb25kcz4KKyAgICAgICAgU2V0IHRoZSBncmFudWxhcml0eSBvZiBjYWxsX291dCgpIGFuZCBoZWFydGJlYXQgdGltaW5nLiBNaW5pbXVtCisgICAgICAgIHZhbHVlIGlzIDEuCisKKyAgICAgIC0taGVhcnQtaW50ZXJ2YWwgPHNlY29uZHM+CisgICAgICAgIFNldCB0aGUgaW50ZXJ2YWwgYmV0d2VlbiB0d28gaGVhcnRiZWF0cy4gTWluaW11bSB2YWx1ZSBpcyAxLgorCisgICAgICAtLXN5bmMtaGVhcnQKKyAgICAgICAgQWxsIGhlYXJ0YmVhdHMgb2NjdXIgYXQgdGhlIHNhbWUgdGltZSAobW9kdWxvIGdyYW51bGFyaXR5KS4KKyAgICAgIAorICAgICAgLS1hc3luYy1oZWFydAorICAgICAgICBIZWFydGJlYXRzIG9jY3VyIHdoZW4gdGhleSBhcmUgZHVlIChtb2R1bG8gZ3JhbnVsYXJpdHkpLgorCisgICAgICAtdHwtLW5vLWhlYXJ0CisgICAgICAgIERpc2FibGUgaGVhcnRiZWF0cyBhbmQgY2FsbF9vdXRzLgorCisgICAgICAtZnwtLWZ1bmNhbGwgPHdvcmQ+CisgICAgICAgIFRoZSBsZnVuIG1hc3Rlci0+ZmxhZygpIGlzIGNhbGxlZCB3aXRoIDx3b3JkPiBhcyBhcmd1bWVudCBiZWZvcmUgdGhlCisgICAgICAgIGdhbWVkcml2ZXIgYWNjZXB0cyBuZXR3b3JkIGNvbm5lY3Rpb25zLgorCisgICAgICAtLXJlZ2V4cCBwY3JlIHwgdHJhZGl0aW9uYWwKKyAgICAgICAgU2VsZWN0IHRoZSBkZWZhdWx0IHJlZ2V4cCBwYWNrYWdlLgorCisgICAgICAtLW1heC1hcnJheSA8c2l6ZT4KKyAgICAgICAgVGhlIG1heGltdW0gbnVtYmVyIG9mIGVsZW1lbnRzIGFuIGFycmF5IGNhbiBob2xkLgorICAgICAgICBTZXQgdG8gMCwgYXJyYXlzIG9mIGFueSBzaXplIGFyZSBhbGxvd2VkLgorCisgICAgICAtLW1heC1tYXBwaW5nIDxzaXplPgorICAgICAgICBUaGUgbWF4aW11bSBudW1iZXIgb2YgZWxlbWVudHMgYSBtYXBwaW5nIGNhbiBob2xkLgorICAgICAgICBTZXQgdG8gMCwgbWFwcGluZ3Mgb2YgYW55IHNpemUgYXJlIGFsbG93ZWQuCisKKyAgICAgIC0tbWF4LW1hcHBpbmcta2V5cyA8c2l6ZT4KKyAgICAgICAgVGhlIG1heGltdW0gbnVtYmVyIG9mIGVudHJpZXMgYSBtYXBwaW5nIGNhbiBob2xkLgorICAgICAgICBTZXQgdG8gMCwgbWFwcGluZ3Mgb2YgYW55IHNpemUgYXJlIGFsbG93ZWQuCisKKyAgICAgIC0tbWF4LWNhbGxvdXRzIDxzaXplPgorICAgICAgICBUaGUgbWF4aW11bSBudW1iZXIgb2YgY2FsbG91dHMgYXQgb25lIHRpbWUuCisgICAgICAgIFNldCB0byAwLCBhbnkgbnVtYmVyIGlzIGFsbG93ZWQuCisKKyAgICAgIC0tbWF4LWJ5dGVzIDxzaXplPgorICAgICAgICBUaGUgbWF4aW11bSBudW1iZXIgb2YgYnl0ZXMgb25lIHJlYWRfYnl0ZXMoKS93cml0ZV9ieXRlcygpIGNhbGwKKyAgICAgICAgY2FuIGhhbmRsZS4KKyAgICAgICAgU2V0IHRvIDAsIHJlYWRzIGFuZCB3cml0ZXMgb2YgYW55IHNpemUgYXJlIGFsbG93ZWQuCisKKyAgICAgIC0tbWF4LWZpbGUgPHNpemU+CisgICAgICAgIFRoZSBtYXhpbXVtIG51bWJlciBvZiBieXRlcyBvbmUgcmVhZF9maWxlKCkvd3JpdGVfZmlsZSgpIGNhbGwKKyAgICAgICAgY2FuIGhhbmRsZS4KKyAgICAgICAgU2V0IHRvIDAsIHJlYWRzIGFuZCB3cml0ZXMgb2YgYW55IHNpemUgYXJlIGFsbG93ZWQuCisKKyAgICAgIC0tbWF4LXRocmVhZC1wZW5kaW5nIDxzaXplPlxuIgorICAgICAgICBUaGUgbWF4aW11bSBudW1iZXIgb2YgYnl0ZXMgdG8gYmUga2VwdCBwZW5kaW5nIGJ5IHRoZSBzb2NrZXQgd3JpdGUKKyAgICAgICAgdGhyZWFkLgorICAgICAgICBTZXQgdG8gMCwgYW4gdW5saW1pdGVkIGFtb3VudCBvZiBkYXRhIGNhbiBiZSBrZXB0IHBlbmRpbmcuCisKKyAgICAgICAgVGhpcyBvcHRpb24gaXMgaWdub3JlZCBpZiBwdGhyZWFkcyBhcmUgbm90IHVzZWQuCisKKyAgICAgIC0tY2xlYW51cC10aW1lIDx0aW1lPgorICAgICAgICBUaGUgaWRsZSB0aW1lIGluIHNlY29uZHMgZm9yIGFuIG9iamVjdCBiZWZvcmUgdGhlIGRyaXZlciB0cmllcyB0bworICAgICAgICBjbGVhbiBpdCB1cC4gSXQgc2hvdWxkIGJlIHN1YnN0YW50aWFsbHkgbG9uZ2VyIHRoYW4gdGhlIHJlc2V0IHRpbWUuCisgICAgICAgIEEgdGltZSA8PSAwIGRpc2FibGVzIHRoZSBjbGVhbnVwIG1lY2hhbmlzbS4KKworICAgICAgLS1yZXNldC10aW1lIDx0aW1lPgorICAgICAgICBUaGUgdGltZSBpbiBzZWNvbmRzIGJlZm9yZSBhbiBvYmplY3QgaXMgcmVzZXQuIEEgdGltZSA8PSAwIGRpc2FibGVzCisgICAgICAgIHRoZSByZXNldCBtZWNoYW5pc20uCisKKyAgICAgIC1zIDx0aW1lPiAgfCAtLXN3YXAtdGltZSA8dGltZT4KKyAgICAgIC1zIHY8dGltZT4gfCAtLXN3YXAtdmFyaWFibGVzIDx0aW1lPgorICAgICAgICBUaW1lIGluIHNlY29uZHMgYmVmb3JlIGFuIG9iamVjdCAob3IgaXRzIHZhcmlhYmxlcykgYXJlIHN3YXBwZWQgb3V0LgorICAgICAgICBBIHRpbWUgbGVzcyBvciBlcXVhbCAwIGRpc2FibGVzIHN3YXBwaW5nLgorCisgICAgICAtcyBmPG5hbWU+IHwgLS1zd2FwLWZpbGUgPG5hbWU+CisgICAgICAgIFN3YXAgaW50byBmaWxlIDxuYW1lPiBpbnN0ZWFkIG9mIDxtdWRsaWI+L0xQX1NXQVAuPGhvc3Q+IC4KKworICAgICAgLXMgYyAgICAgICB8IC0tc3dhcC1jb21wYWN0CisgICAgICAgIFJldXNlIGZyZWUgc3BhY2UgaW4gdGhlIHN3YXAgZmlsZSBpbW1lZGlhdGVseS4KKyAgICAgICAgR2l2aW5nIHRoaXMgb3B0aW9uIHJlc3VsdHMgaW4gc21hbGxlciwgYnV0IGFsc28gbW9yZSBmcmFnbWVudGVkCisgICAgICAgIHN3YXBmaWxlcywgYW5kIHRoZSBzd2FwIHBlcmZvcm1hbmNlIG1heSBkZWdyYWRlLgorCisgICAgICAtLW1heC1tYWxsb2MgPHNpemU+CisgICAgICAgIFJlc3RyaWN0IHRvdGFsIG1lbW9yeSBhbGxvY2F0aW9ucyB0byA8c2l6ZT4gYnl0ZXMuCisgICAgICAgIEEgPHNpemU+IG9mIDAgb3IgJ3VubGltaXRlZCcgcmVtb3ZlcyBhbnkgcmVzdHJpY3Rpb24uXG4iCisKKyAgICAgIC0tbWluLW1hbGxvYyA8c2l6ZT4KKyAgICAgIC0tbWluLXNtYWxsLW1hbGxvYyA8c2l6ZT4KKyAgICAgICAgRGV0ZXJtaW5lIHRoZSBzaXplcyBmb3IgdGhlIGV4cGxpY2l0ZSBpbml0aWFsIGxhcmdlIHJlc3AuIHNtYWxsIGNodW5rCisgICAgICAgIGFsbG9jYXRpb24uIEEgc2l6ZSBvZiAwIGRpc2FibGVzIHRoZSBleHBsaWNpdGUgaW5pdGlhbCBhbGxvY2F0aW9ucy4KKworICAgICAgLXIgdTxzaXplPiB8IC0tcmVzZXJ2ZS11c2VyIDxzaXplPgorICAgICAgLXIgbTxzaXplPiB8IC0tcmVzZXJ2ZS1tYXN0ZXIgPHNpemU+CisgICAgICAtciBzPHNpemU+IHwgLS1yZXNlcnZlLXN5c3RlbSA8c2l6ZT4KKyAgICAgICAgUmVzZXJ2ZSA8c2l6ZT4gYW1vdW50IG9mIG1lbW9yeSBmb3IgdXNlci9tYXN0ZXIvc3lzdGVtIGFsbG9jYXRpb25zIHRvCisgICAgICAgIGJlIGhlbGQgdW50aWwgbWFpbiBtZW1vcnkgcnVucyBvdXQuCisKKyAgICAgIC0tZmlsZW5hbWUtc3BhY2VzCisgICAgICAtLW5vLWZpbGVuYW1lLXNwYWNlcworICAgICAgICBBbGxvdy9kaXNhbGxvdyB0aGUgdXNlIG9mIHNwYWNlcyBpbiBmaWxlbmFtZXMuCisKKyAgICAgIC0tc3RyaWN0LWV1aWRzCisgICAgICAtLW5vLXN0cmljdC1ldWlkcworICAgICAgICBFbmFibGUvZGlzYWJsZSB0aGUgZW5mb3JjZWQgdXNlIG9mIGV1aWRzLgorCisgICAgICAtLXNoYXJlLXZhcmlhYmxlcworICAgICAgLS1pbml0LXZhcmlhYmxlcworICAgICAgICBTZWxlY3QgaG93IGNsb25lcyBpbml0aWFsaXplIHRoZWlyIHZhcmlhYmxlczoKKyAgICAgICAgICAtIGJ5IHNoYXJpbmcgdGhlIGN1cnJlbnQgdmFsdWVzIG9mIHRoZWlyIGJsdWVwcmludAorICAgICAgICAgIC0gYnkgaW5pdGlhbGl6aW5nIHRoZW0gYWZyZXNoICh1c2luZyBfX0lOSVQoKSkuCisKKyAgICAgIC0tcGlkZmlsZSA8ZmlsZW5hbWU+XG4iCisgICAgICAgIFdyaXRlIHRoZSBwaWQgb2YgdGhlIGRyaXZlciBwcm9jZXNzIGludG8gPGZpbGVuYW1lPi5cbiIKKworICAgICAgLS10bHMta2V5IDxwYXRobmFtZT4KKyAgICAgICAgICBVc2UgPHBhdGhuYW1lPiBhcyB0aGUgeDUwOSBrZXlmaWxlLCBkZWZhdWx0IGlzICdrZXkucGVtJy4KKyAgICAgICAgICBJZiByZWxhdGl2ZSwgPHBhdGhuYW1lPiBpcyBpbnRlcnByZXRlZCByZWxhdGl2ZSB0byA8bXVkbGliPi4KKworICAgICAgLS10bHMtY2VydCA8cGF0aG5hbWU+CisgICAgICAgICBVc2UgPHBhdGhuYW1lPiBhcyB0aGUgeDUwOSBjZXJ0ZmlsZSwgZGVmYXVsdCBpcyAnY2VydC5wZW0nLgorICAgICAgICAgSWYgcmVsYXRpdmUsIDxwYXRobmFtZT4gaXMgaW50ZXJwcmV0ZWQgcmVsYXRpdmUgdG8gPG11ZGxpYj4uCisKKyAgICAgIC0tdGxzLXRydXN0ZmlsZSA8cGF0aG5hbWU+CisgICAgICAgIFVzZSA8cGF0aG5hbWU+IGFzIHRoZSBmaWxlbmFtZSBob2xkaW5nIHlvdXIgdHJ1c3RlZCBQRU0gY2VydGlmaWNhdGVzLgorICAgICAgICBJZiByZWxhdGl2ZSwgPHBhdGhuYW1lPiBpcyBpbnRlcnByZXRlZCByZWxhdGl2ZSB0byA8bXVkbGliPi4KKworICAgICAgLS10bHMtdHJ1c3RkaXJlY3RvcnkgPHBhdGhuYW1lPgorICAgICAgICBVc2UgPHBhdGhuYW1lPiBhcyB0aGUgZGlyZWN0b3J5IHdoZXJlIHlvdXIgdHJ1c3RlZAorICAgICAgICBQRU0gY2VydGlmaWNhdGVzIHJlc2lkZSwgZGVmYXVsdCBpcyAnL2V0Yy9zc2wvY2VydHMnLgorICAgICAgICBJZiByZWxhdGl2ZSwgPHBhdGhuYW1lPiBpcyBpbnRlcnByZXRlZCByZWxhdGl2ZSB0byA8bXVkbGliPi4KKworICAgICAgLS13aXpsaXN0LWZpbGUgPGZpbGVuYW1lPgorICAgICAgLS1uby13aXpsaXN0LWZpbGUKKyAgICAgICAgUmVhZCBhbmQgc2F2ZSB0aGUgd2l6bGlzdCBpbiB0aGUgbmFtZWQgZmlsZSAoYWx3YXlzIGludGVycHJldGVkCisgICAgICAgIHJlbGF0aXZlIHRoZSBtdWRsaWIpOyByZXNwLiBkb24ndCByZWFkIG9yIHNhdmUgdGhlIHdpemxpc3QuCisKKyAgICAgIC0tZ2NvbGxlY3Qtb3V0ZmQgPGZpbGVuYW1lPnw8bnVtPgorICAgICAgICBHYXJiYWdlIGNvbGxlY3RvciBvdXRwdXQgKGxpa2UgYSBsb2cgb2YgYWxsIHJlY2xhaW1lZCBtZW1vcnkgYmxvY2tzKQorICAgICAgICBpcyBzZW50IHRvIDxmaWxlbmFtZT4gKG9yIGluaGVyaXRlZCBmZCA8bnVtPikgaW5zdGVhZCBvZiBzdGRlcnIuCisgICAgICAgIE9ubHkgYXZhaWxhYmxlIGlmIGNvbXBpbGVkIHdpdGggTUFMTE9DX3NtYWxsb2MuCisKKyAgICAgIC0teXwtLXl5ZGVidWcKKyAgICAgICAgRW5hYmxlIGRlYnVnZ2luZyBvZiB0aGUgTFBDIGNvbXBpbGVyLgorICAgICAgICBPbmx5IGF2YWlsYWJsZSBpZiBjb21waWxlZCB3aXRoIFlZREVCVUcuCisKKyAgICAgIC0tcmFuZG9tLXNlZWQgPG51bT4KKyAgICAgICAgU2VlZCB2YWx1ZSBmb3IgdGhlIHJhbmRvbSBudW1iZXIgZ2VuZXJhdG9yLiBJZiBub3QgZ2l2ZW4sIHRoZQorICAgICAgICBkcml2ZXIgY2hvb3NlcyBhIHNlZWQgdmFsdWUgb24gaXRzIG93bi4KKyAgICAgICAgVGhpcyBvcHRpb24gaXMgZm9yIGRlYnVnZ2luZy4KKworICAgICAgLS1jaGVjay1zdGF0ZSA8bHZsPgorICAgICAgICBQZXJmb3JtIGEgcmVndWxhciBzaW1wbGlzdGljIGNoZWNrIG9mIHRoZSB2aXJ0dWFsIG1hY2hpbmUgYWNjb3JkaW5nCisgICAgICAgIHRvIDxsdmw+OgorICAgICAgICAgID0gMDogbm8gY2hlY2sKKyAgICAgICAgICA9IDE6IG9uY2UgcGVyIGJhY2tlbmQgbG9vcAorICAgICAgICAgID0gMjogYXQgdmFyaW91cyBwb2ludHMgaW4gdGhlIGJhY2tlbmQgbG9vcAorICAgICAgICBPbmx5IGF2YWlsYWJsZSBpZiBjb21waWxlZCB3aXRoIERFQlVHLgorCisgICAgICAtLWNoZWNrLXJlZmNvdW50cworICAgICAgICBFdmVyeSBiYWNrZW5kIGN5Y2xlLCBhbGwgcmVmY291bnRzIGluIHRoZSBzeXN0ZW0gYXJlIGNoZWNrZWQuCisgICAgICAgIFNMT1chIE9ubHkgYXZhaWxhYmxlIGlmIGNvbXBpbGVkIHdpdGggREVCVUcuCisKKyAgICAgIC0tZ29iYmxlLWRlc2NyaXB0b3JzIDxudW0+CisgICAgICAgIDxudW0+IChtb3JlKSBmaWxlZGVzY3JpcHRvcnMgYXJlIHVzZWQgdXAuIFlvdSdsbCBrbm93IHdoZW4geW91IG5lZWQgaXQuCisgICAgICAgIE9ubHkgYXZhaWxhYmxlIGlmIGNvbXBpbGVkIHdpdGggREVCVUcuCisKKyAgICAgIC0tY2hlY2stc3RyaW5ncworICAgICAgICBFdmVyeSBiYWNrZW5kIGN5Y2xlLCBhbGwgc2hhcmVkIHN0cmluZ3MgaW4gdGhlIHN5c3RlbSBhcmUgY2hlY2tlZC4KKyAgICAgICAgU0xPVyEgT25seSBhdmFpbGFibGUgaWYgY29tcGlsZWQgd2l0aCBERUJVRyBhbmQgQ0hFQ0tfU1RSSU5HUy4KKworICAgICAgLVZ8LS12ZXJzaW9uCisgICAgICAgIFByaW50IHRoZSB2ZXJzaW9uIG9mIHRoZSBkcml2ZXIgYW5kIGV4aXQuCisKKyAgICAgIC0tb3B0aW9ucworICAgICAgICBQcmludCB0aGUgdmVyc2lvbiBhbmQgY29tcGlsYXRpb24gb3B0aW9ucyBvZiB0aGUgZHJpdmVyIGFuZCBleGl0LgorCisgICAgICAtaHwtP3wtLWhlbHAKKyAgICAgICAgRGlzcGxheSBhIGNvbW1hbmQgaGVscCBhbmQgZXhpdC4KKworICAgICAgLS1sb25naGVscAorICAgICAgICBEaXNwbGF5IGEgbG9uZyBjb21tYW5kIGhlbHAgYW5kIGV4aXQuCisKKyAgICAgIC0tYXJncyA8ZmlsZW5hbWU+CisgICAgICAgIFRoZSBkcml2ZXIgcmVhZHMgYW5kIHBhcnNlcyB0aGUgZ2l2ZW4gZmlsZSBhbmQgdHJlYXRzIGl0cyBjb250ZW50cworICAgICAgICBhcyBpZiBnaXZlbiBvbiB0aGUgY29tbWFuZGxpbmUgcmlnaHQgd2hlcmUgdGhlIC0tYXJncyBvcHRpb24KKyAgICAgICAgb2NjdXJlZC4gVGhlIGZpbGUgaXRzZWxmIGNhbiBhZ2FpbiBjb250YWluIC0tYXJncyBvcHRpb25zLgorCisKK0RFU0NSSVBUSU9OIC0tIEFyZ3VtZW50IFBhcnNlcgorICAgIFRoZSBwYXJzZXIgYW5hbHlzZXMgdGhlIGNvbW1hbmRsaW5lIGFyZ3VtZW50cyBnaXZlbiB3aXRoIHRoZSBkcml2ZXIKKyAgICBpbnZvY2F0aW9uIGFuZCBkaXN0aW5ndWlzaGVzICdvcHRpb25zJywgd2hpY2ggc3RhcnQgd2l0aCBhICctJywgZnJvbQorICAgIHByb3BlciBhcmd1bWVudHMuIE9wdGlvbnMgYXJlIGZ1cnRoZXIgZGlzdGluZ3Vpc2hlZCBieSB0aGVpciBuYW1lIGFuZAorICAgIG1heSB0YWtlIGFuIGFkZGl0aW9uYWwgdmFsdWUuIEluIGdlbmVyYWwsIG9wdGlvbnMgYW5kIGFyZ3VtZW50cyBjYW4gYmUKKyAgICBnaXZlaW4gaW4gYW55IG9yZGVyLgorCisgICAgT3B0aW9ucyBhcmUgcmVjb2duaXplZCBpbiB0d28gZm9ybXMuIEluIHRoZSBzaG9ydCBmb3JtIHRoZSBvcHRpb24gbXVzdAorICAgIGJlIGdpdmVuIGFzIGEgc2luZ2xlICctJyBmb2xsb3dlZCBieSBhIHNpbmdsZSBsZXR0ZXIuIEluIHRoZSBsb25nIGZvcm0sCisgICAgb3B0aW9ucyBzdGFydCB3aXRoICctLScgZm9sbG93ZWQgYnkgYSBzdHJpbmcgb2YgYXJiaXRyYXJ5IGxlbmd0aC4gVGhlCisgICAgc2hvcnQgb3B0aW9ucyBhcmUgY2FzZSBzZW5zaXRpdmUsIHRoZSBsb25nIG9wdGlvbnMgYXJlbid0LgorICAgIE1vc3Qgb3B0aW9ucyBjYW4gYmUgc3BlY2lmaWVkIGluIGJvdGggdGhlIHNob3J0IGFuZCBsb25nIGZvcm0sIGJ1dCB0aGF0CisgICAgaXMgbm90IG1hbmRhdG9yeS4gRXhhbXBsZXM6ICctcicgYW5kICctLXJlY3Vyc2l2ZScuCisKKyAgICBJZiBhbiBvcHRpb24gdGFrZXMgYSB2YWx1ZSwgaXQgbXVzdCBmb2xsb3cgdGhlIG9wdGlvbiBpbW1lZGlhdGVseSBhZnRlcgorICAgIGEgc2VwYXJhdGluZyBzcGFjZSBvciAnPScuIEFkZGl0aW9uYWxseSwgdGhlIHZhbHVlIGZvciBhIHNob3J0IG9wdGlvbgorICAgIG1heSBmb2xsb3cgdGhlIG9wdGlvbiB3aXRob3V0IHNlcGFyYXRvci4gRXhhbXBsZXMgYXJlOiAnLWZNYWtlZmlsZScsCisgICAgJy1mIE1ha2VmaWxlJywgJy0tZmlsZT1NYWtlZmlsZScgYW5kICctLWZpbGUgTWFrZWZpbGUnLgorCisgICAgU2hvcnQgb3B0aW9ucyBtYXkgYmUgY29sbGF0ZWQgaW50byBvbmUgYXJndW1lbnQsIGUuZy4gJy1ydGwnLCBidXQKKyAgICBvZiB0aGVzZSBvbmx5IHRoZSBsYXN0IG1heSB0YWtlIGEgdmFsdWUuCisKKyAgICBUaGUgb3B0aW9uICctLScgbWFya3MgdGhlIGVuZCBvZiBvcHRpb25zLiBBbGwgZm9sbG93aW5nIGNvbW1hbmQgYXJndW1lbnRzCisgICAgYXJlIGNvbnNpZGVyZWQgcHJvcGVyIGFyZ3VtZW50cyBldmVuIGlmIHRoZXkgc3RhcnQgd2l0aCBhICctJyBvciAnLS0nLgorCisgICAgVGhlIGFyZ3VtZW50cyBhcmUgdXN1YWxseSB0YWtlbiBmcm9tIHRoZSBjb21tYW5kbGluZTsgYnV0IHRoZSBwYXJzZXIKKyAgICBpcyBhbHNvIGFibGUgdG8gcmVhZCB0aGVtIGZyb20gYSB0ZXh0ZmlsZXMsIHdoaWNoIGNhbiBiZSBuZXN0ZWQuIFRoZQorICAgIGNvbnRlbnQgb2YgdGhlIHRleHRmaWxlcyBpcyBicm9rZW4gZG93biBpbnRvIHdvcmRzIGRlbGltaXRlZCBieSB3aGl0ZXNwYWNlLAorICAgIHdoaWNoIGFyZSB0aGVuIHRyZWF0ZWQgYXMgZ2l2ZW4gb24gdGhlIGNvbW1hbmRsaW5lIGF0IHRoZSBwbGFjZSB3aGVyZQorICAgIHRoZSBpbnN0cnVjdGlvbiB0byByZWFkIHRoZSB0ZXh0ZmlsZSBzdG9vZC4KKworICAgIFRoZSBmaWxlIHBhcnNlciByZWNvZ25pemVzIHNpbXBsZSBkb3VibGUtcXVvdGVkIHN0cmluZ3MsIHdoaWNoIG11c3QgYmUKKyAgICBjb250YWluZWQgb24gYSBzaW5nbGUgbGluZS4gQWRkaXRpb25hbGx5LCB0aGUgJyMnIGNoYXJhY3RlciBnaXZlbiBieQorICAgIGl0c2VsZiBpcyBhIGNvbW1lbnQgbWFya2VyIC0gZXZlcnRoaW5nIGFmdGVyIHRoZSAnIycgdW50aWwgdGhlIGVuZAorICAgIG9mIHRoZSBjdXJyZW50IGxpbmUgaXMgaWdub3JlZC4KKworSElTVE9SWQorICAgIExETXVkIDMuMi45IGFkZGVkIHRoZSAtLW1heC10aHJlYWQtcGVuZGluZywgLS1ob3N0bmFtZSwKKyAgICAgIC0taG9zdGFkZHIsIC0tYXJncyBhbmQgLS1yYW5kb20tc2VlZCBvcHRpb25zLgorICAgIExETXVkIDMuMi4xMCBhZGRlZCB0aGUgLS1maWxlbmFtZS1zcGFjZXMgb3B0aW9ucy4KKyAgICBMRE11ZCAzLjMuMzc4IGFkZGVkIC0tc2hhcmUtdmFyaWFibGVzLCAtLWluaXQtdmFyaWFibGVzLgorICAgIExETXVkIDMuMy40NzUvMy4yLjExIGFkZGVkIC0tdGxzLWtleSwgLS10bHMtY2VydC4KKyAgICBMRE11ZCAzLjMuNjcyLzMuMi4xMSBhZGRlZCAtLXRscy10cnVzdGZpbGUsIC0tdGxzLXRydXN0ZGlyZWN0b3J5LgorICAgIExETXVkIDMuMy42NzcgYWRkZWQgLS1tYXgtbWFwcGluZy1rZXlzLgpkaWZmIC0tZ2l0IGEvZG9jL2RyaXZlci9tYWxsb2MgYi9kb2MvZHJpdmVyL21hbGxvYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi43ZmIyNzIyCi0tLSAvZGV2L251bGwKKysrIGIvZG9jL2RyaXZlci9tYWxsb2MKQEAgLTAsMCArMSwxMiBAQAorTkFNRQorICAgICAgICBtYWxsb2MKKworREVTQ1JJUFRJT04KKyAgICAgICAgVGhpcyBjb21tYW5kIGlzIGhhcmRjb2RlZCBpbnRvIHRoZSBkcml2ZXIncyBpbnB1dCBwYXJzZXIuCisgICAgICAgIEl0IHNob3dzIHRoZSBzdGF0aXN0aWNzIG9mIHRoZSBtZW1vcnkgbWFuYWdlbWVudCBtb2R1bGUuCisKK0hJU1RPUlkKKyAgICAgICAgU2luY2UgMy4yLjcsICdzdGF0dXMgbWFsbG9jJyBoYXMgdGhlIHNhbWUgZWZmZWN0LgorCitTRUUgQUxTTworICAgICAgICBzdGF0dXMoRCksIG1lbW9yeShDKSwgZGVidWdfaW5mbyhFKQpkaWZmIC0tZ2l0IGEvZG9jL2RyaXZlci9vcGNkdW1wIGIvZG9jL2RyaXZlci9vcGNkdW1wCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmI3NWVhNjgKLS0tIC9kZXYvbnVsbAorKysgYi9kb2MvZHJpdmVyL29wY2R1bXAKQEAgLTAsMCArMSwxMyBAQAorTkFNRQorICAgICAgICBvcGNkdW1wCisKK0RFU0NSSVBUSU9OCisgICAgICAgIElmIHRoZSBkcml2ZXIgd2FzIGNvbXBpbGVkIHRvIGRvIG9wY29kZSBwcm9maWxpbmcsIHRoaXMgY29tbWFuZAorICAgICAgICB3aWxsIHNhdmUgdGhlIGNvbGxlY3RlZCBwcm9maWxpbmcgaW5mb3JtYXRpb24gaW50byB0aGUgZmlsZSAvT1BDX0RVTVAuCisgICAgICAgIElmIHRoZSBPX0lTX1dJWkFSRCBmbGFnIGlzIHVzZWQgaW4gdGhlIG11ZGxpYiAoaS5lLiBpZgorICAgICAgICBzZXRfaXNfd2l6YXJkKCkgd2FzIGNhbGxlZCksIHRoaXMgY29tbWFuZCBpcyBhbGxvd2VkIG9ubHkgZm9yCisgICAgICAgIHVzZXJzIHRoYXQgaGF2ZSB0aGlzIGZsYWcgc2V0LgorCitTRUUgQUxTTworICAgICAgICBtYWxsb2MoRCksIHN0YXR1cyhEKSwgbWVtb3J5KEMpLCBvYmplY3RzKEMpLCBkZWJ1Z19pbmZvKEUpLAorICAgICAgICBzZXRfaXNfd2l6YXJkKEUpCmRpZmYgLS1naXQgYS9kb2MvZHJpdmVyL3ByZWRlZmluZWQgYi9kb2MvZHJpdmVyL3ByZWRlZmluZWQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMTdhN2ViMAotLS0gL2Rldi9udWxsCisrKyBiL2RvYy9kcml2ZXIvcHJlZGVmaW5lZApAQCAtMCwwICsxLDEzMCBAQAorTkFNRQorICAgIHByZWRlZmluZWQgLSBwcmVkZWZpbmVkICNkZWZpbmVzIGJ5IHRoZSBwYXJzZXIKKworREVTQ1JJUFRJT04KKyAgICBTZXZlcmFsIHByZXByb2Nlc3NvciBtYWNyb3MgYXJlIHByZSNkZWZpbmVkIGJ5IHRoZSBwYXJzZXIsCisgICAgdG8gcHJvdmlkZSBpbmZvcm1hdGlvbiBhYm91dCBwYXJzZXIgdmVyc2lvbiwgY29tcGlsZSB0aW1lCisgICAgb3B0aW9ucyBhbmQgcGFyc2VyIGludm9jYXRpb24gb3B0aW9uczoKKworICAgICAgTFBDMyAgICAgICAgICAgIDogYWx3YXlzIGRlZmluZWQuCisgICAgICBfX0xETVVEX18gICAgICAgOiBhbHdheXMgZGVmaW5lZC4KKyAgICAgIF9fRVVJRFNfXyAgICAgICA6IGFsd2F5cyAoZm9yIGNvbXBhdGliaWxpdHkpLgorICAgICAgQ09NUEFUX0ZMQUcgICAgIDogZGVmaW5lZCBpZiB0aGUgZHJpdmVyIHJ1bnMgaW4gY29tcGF0IG1vZGUuCisgICAgICBfX0NPTVBBVF9NT0RFX18gOiBkaXR0bworICAgICAgX19TVFJJQ1RfRVVJRFNfXzogZGVmaW5lZCBpZiBzdHJpY3QgZXVpZCB1c2FnZSBpcyBlbmZvcmNlZC4KKyAgICAgIF9fRklMRU5BTUVfU1BBQ0VTX186IGRlZmluZWQgaWYgZmlsZW5hbWVzIG1heSBjb250YWluIHNwYWNlcy4KKworICAgICAgX19NQVNURVJfT0JKRUNUX18gOiB0aGUgbmFtZSBvZiB0aGUgbWFzdGVyIG9iamVjdCAoaW4gY29tcGF0IG1vZGUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aG91dCBsZWFkaW5nICcvJykuCisgICAgICBfX0ZJTEVfXyAgICAgICAgICA6IHRoZSBuYW1lIG9mIHRoZSBjb21waWxlZCBmaWxlIChpbiBjb21wYXQgbW9kZQorICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRob3V0IGxlYWRpbmcgJy8nKS4KKyAgICAgIF9fTElORV9fICAgICAgICAgIDogdGhlIGN1cnJlbnQgbGluZSBudW1iZXIuCisgICAgICBfX0ZVTkNUSU9OX18gICAgICA6IHRoZSBjdXJyZW50IGZ1bmN0aW9uIG5hbWUuCisgICAgICBfX0RJUl9fICAgICAgICAgICA6IHRoZSBkaXJlY3RvcnkgcGF0aCBvZiB0aGUgY29tcGlsZWQgZmlsZSAoaW4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgY29tcGF0IG1vZGUgd2l0aG91dCBsZWFkaW5nICcvJykuCisgICAgICBfX1BBVEhfXyhuKSAgICAgICA6IHRoZSBkaXJlY3RvcnkgcGF0aCBvZiB0aGUgY29tcGlsZWQgZmlsZSB3aXRob3V0CisgICAgICAgICAgICAgICAgICAgICAgICAgIHRoZSA8bj4gdHJhaWxpbmcgZWxlbWVudHMgKGluIGNvbXBhdCBtb2RlIHdpdGhvdXQKKyAgICAgICAgICAgICAgICAgICAgICAgICAgbGVhZGluZyAnLycpLgorICAgICAgX19WRVJTSU9OX18gICAgICAgOiB0aGUgdmVyc2lvbiBzdHJpbmcgb2YgdGhlIGRyaXZlci4KKyAgICAgIF9fVkVSU0lPTl9NQUpPUl9fIDogdGhlIG1ham9yIHZlcnNpb24gbnVtYmVyIG9mIHRoZSBkcml2ZXIuCisgICAgICBfX1ZFUlNJT05fTUlOT1JfXyA6IHRoZSBtaW5vciB2ZXJzaW9uIG51bWJlciBvZiB0aGUgZHJpdmVyLgorICAgICAgX19WRVJTSU9OX01JQ1JPX18gOiB0aGUgbWljcm8gdmVyc2lvbiBudW1iZXIgb2YgdGhlIGRyaXZlci4KKyAgICAgIF9fVkVSU0lPTl9QQVRDSF9fIDogdGhlIHBhdGNobGV2ZWwgb2YgdGhlIGRyaXZlcjsgYSAwIGhlcmUgbWVhbnMKKyAgICAgICAgICAgICAgICAgICAgICAgICAgJ25vIHBhdGNobGV2ZWwnLgorICAgICAgX19WRVJTSU9OX0NPTU1JVElEX18gOiB0aGUgY29tbWl0IElEIG9mIHRoZSBzb3VyY2Ugb2YgdGhlIGRyaXZlciAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGF0dGVudGlvbjogaXQgbWlnaHQgYmUgPHVua25vd24+LCBpZiB0aGUgZHJpdmVyCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3YXMgbm90IGNvbXBpbGVkIGZyb20gYSBnaXQgcmVwb3NpdG9yeSkKKyAgICAgIF9fVkVSU0lPTl9MT0NBTF9fIDogdGhlIChvcHRpb25hbCkgTE9DQUxfTEVWRUwsIHRoZSB1c2VyIGhhcyBkZWZpbmVkLgorCisKKyAgICAgIF9fRE9NQUlOX05BTUVfXyAgICA6IHRoZSBkb21haW4gdGhlIGhvc3QgaXMgcGFydCBvZi4KKyAgICAgIF9fSE9TVF9JUF9OVU1CRVJfXyA6IHRoZSBob3N0cyBJUCBudW1iZXIgKGFzIGEgc3RyaW5nKS4KKyAgICAgIF9fSE9TVF9OQU1FX18gICAgICA6IHRoZSBmdWxsIGhvc3RuYW1lLgorICAgICAgX19NQVhfUkVDVVJTSU9OX18gIDogdGhlIG1heCBjb3VudCBvZiBuZXN0ZWQgZnVuY3Rpb24gY2FsbHMKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICh0aGlzIGlzIGNvbmZpZy5oOk1BWF9VU0VSX1RSQUNFKS4KKyAgICAgIF9fTUFYX0VWQUxfQ09TVF9fICA6IHRoZSBtYXggZXZhbHVhdGlvbiBjb3N0LgorICAgICAgX19SRVNFVF9USU1FX18gICAgIDogZGVmYXVsdCBpbnRlcnZhbCB0aW1lIGJldHdlZW4gb2JqZWN0IHJlc2V0cy4KKyAgICAgIF9fQ0xFQU5VUF9USU1FX18gICA6IGRlZmF1bHQgaW50ZXJ2YWwgdGltZSBiZXR3ZWVuIG9iamVjdCBjbGVhbnVwcy4KKyAgICAgIF9fQUxBUk1fVElNRV9fICAgICA6IHRoZSBjb25maWd1cmVkIHRpbWluZyBncmFudWxhcml0eS4KKyAgICAgIF9fSEVBUlRfQkVBVF9JTlRFUlZBTF9fOiB0aGUgY29uZmlndXJlZCBoZWFydGJlYXQgdGltZS4KKyAgICAgIF9fU1lOQ0hST05PVVNfSEVBUlRfQkVBVF9fOiBkZWZpbmVkIGlmIHN5bmNocm9ub3VzIGhlYXJ0YmVhdHMgYXJlCisgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmFibGVkLgorICAgICAgX19NQVhfQ09NTUFORF9MRU5HVEhfXzogdGhlIG1heGltdW0gbGVuZ3RoIGEgY29tbWFuZCBjYW4gaGF2ZS4KKyAgICAgIF9fRUZVTl9ERUZJTkVEX18obmFtZSkgOiBpZiB0aGUgZWZ1biAnbmFtZScgZXhpc3RzLCB0aGlzCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWFjcm8gZXZhbHVhdGVzIHRvICIgMSAiLCBlbHNlIHRvICIgMCAiLgorICAgICAgX19EUklWRVJfTE9HX18gICAgIDogdGhlIG5hbWUgb2YgdGhlIGRlZmF1bHQgZGVidWcubG9nIGZpbGUgKHdpdGhpbgorICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhlIG11ZGxpYik7IHVuZGVmaW5lZCBpZiBhIGRpZmZlcmVudCBuYW1lCisgICAgICAgICAgICAgICAgICAgICAgICAgICBoYXMgYmVlbiBzcGVjaWZpZWQgb24gdGhlIGNvbW1hbmRsaW5lLgorICAgICAgX19XSVpMSVNUX18gICAgICAgIDogdGhlIG5hbWUgb2YgdGhlIChtdWRsaWIpIGZpbGUgZnJvbSB3aGVyZSB0aGUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIGRyaXZlciByZWFkIHRoZSBpbml0aWFsIFdJWkxJU1QgaW5mb3JtYXRpb24uCisgICAgICAgICAgICAgICAgICAgICAgICAgICBJdCBpcyB1bmRlZmluZWQgaWYgdGhlIGRyaXZlciB3YXMgY29uZmlndXJlZAorICAgICAgICAgICAgICAgICAgICAgICAgICAgdG8gbm90IHJlYWQgdGhlIGluZm9ybWF0aW9uLgorICAgICAgX19NQVhfTUFMTE9DX18gICAgIDogdGhlIGludGVybmFsIHVwcGVyIGxpbWl0IGZvciB0b3RhbCBtZW1vcnkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIHVzYWdlLgorICAgICAgX19JTlRfTUFYX18gICAgICAgIDogdGhlIGxhcmdlc3QgaW50ZWdlciBudW1iZXIKKyAgICAgIF9fSU5UX01JTl9fICAgICAgICA6IHRoZSBzbWFsbGVzdCBpbnRlZ2VyIG51bWJlcgorICAgICAgX19GTE9BVF9NQVhfXyAgICAgIDogdGhlIGxhcmdlc3QgKHBvc2l0aXZlKSBmbG9hdCBudW1iZXIKKyAgICAgIF9fRkxPQVRfTUlOX18gICAgICA6IHRoZSBzbWFsbGVzdCAocG9zaXRpdmUpIGZsb2F0IG51bWJlcgorCisgICAgICBfX0xQQ19OT1NBVkVfXyAgICAgOiBhbHdheXMgZGVmaW5lZAorICAgICAgX19MUENfU1RSVUNUU19fICAgIDogZGVmaW5lZCB3aGVuIHN0cnVjdCBzdXBwb3J0IGlzIGVuYWJsZWQuCisgICAgICAgICAgICAgICAgICAgICAgICAgICBPbmNlIHN0cnVjdHMgYXJlIGZ1bGx5IHN1cHBvcnRlZCwgdGhpcyBtYWNybworICAgICAgICAgICAgICAgICAgICAgICAgICAgd2lsbCBhbHdheXMgYmUgZGVmaW5lZC4KKyAgICAgIF9fTFBDX0lOTElORV9DTE9TVVJFU19fOiBkZWZpbmVkIHdoZW4gdGhlICdyZWFsJyBpbmxpbmUgY2xvc3VyZXMKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIGFyZSBlbmFibGVkLgorICAgICAgX19MUENfQVJSQVlfQ0FMTFNfXzogY2FsbF9vdGhlcigpcyBvbiBhcnJheXMgb2Ygb2JqZWN0cyBlbmFibGVkLgorICAgICAgX19CT09UX1RJTUVfXyAgICAgIDogdGhlIHRpbWUoKSB0aGUgZHJpdmVyIHdhcyBzdGFydGVkLgorCisgICAgSWYgdGhlIEVSUSBpcyBzdXBwb3J0ZWQsIHRoZSBmb2xsb3dpbmcgbWFjcm9zIGFyZSBkZWZpbmVkOgorCisgICAgICBfX0VSUV9NQVhfU0VORF9fICA6IHRoZSBtYXggc2l6ZSBvZiB0aGUgc2VuZCBidWZmZXIKKyAgICAgIF9fRVJRX01BWF9SRVBMWV9fIDogdGhlIG1heCBzaXplIG9mIHRoZSByZXBseSBidWZmZXIKKworICAgIFRoZSBmb2xsb3dpbmcgbWFjcm9zIGFyZSBkZWZpbmVkIGlmIHRoZWlyIGFzc29jaWF0ZWQgcGFja2FnZQorICAgIGhhcyBiZWVuIGNvbXBpbGVkIGludG8gdGhlIGRyaXZlcjoKKworICAgICAgX19JRE5BX18gOiAgICAgIHN1cHBvcnQgZm9yIElETkEKKyAgICAgIF9fSVBWNl9fIDogICAgICBzdXBwb3J0IGZvciBJUCB2LjYKKyAgICAgIF9fTVlTUUxfXyA6ICAgICBzdXBwb3J0IGZvciBteVNRTAorICAgICAgX19QR1NRTF9fIDogICAgIHN1cHBvcnQgZm9yIFBvc3RncmVTUUwKKyAgICAgIF9fU1FMSVRFX18gOiAgICBzdXBwb3J0IGZvciBTUUxpdGUgMy4KKyAgICAgIF9fWE1MX0RPTV9fIDogICBzdXBwb3J0IGZvciBYTUwgcGFyc2luZy4KKyAgICAgIF9fSlNPTl9fIDogICAgICBzdXBwb3J0IGZvciBKU09OIHBhcnNpbmcvc2VyaWFsaXppbmcuCisgICAgICBfX01DQ1BfXzogICAgICAgc3VwcG9ydCBmb3IgTUNDUCBodHRwOi8vd3d3LnJhbmRvbWx5Lm9yZy9wcm9qZWN0cy9NQ0NQCisgICAgICBfX0FMSVNUU19fOiAgICAgc3VwcG9ydCBmb3IgYWxpc3RzCisgICAgICBfX1BDUkVfXzogICAgICAgc3VwcG9ydCBmb3IgUENSRQorICAgICAgX19UTFNfXzogICAgICAgIHN1cHBvcnQgZm9yIFRMUyAoaW50ZXJuYWwpCisgICAgICBfX0dOVVRMU19fOiAgICAgaWYgX19UTFNfXzogVExTIHN1cHBvcnQgcHJvdmlkZWQgYnkgR251VExTLgorICAgICAgX19PUEVOU1NMX186ICAgIGlmIF9fVExTX186IFRMUyBzdXBwb3J0IHByb3ZpZGVkIGJ5IE9wZW5TU0wuCisgICAgICBfX0dDUllQVF9fOiAgICAgY3J5cHRvZ3JhcGhpYyByb3V0aW5lcyBwcm92aWRlZCBieSBsaWJnY3J5cHQuCisgICAgICBfX0RFUFJFQ0FURURfXzogc3VwcG9ydCBmb3Igb2Jzb2xldGUgYW5kIGRlcHJlY2F0ZWQgZWZ1bnMuCisKKworSElTVE9SWQorICAgIDMuMi4xIGFkZGVkIF9fRE9NQUlOX05BTUVfXywgX19IT1NUX0lQX05VTUJFUl9fLCBfX0hPU1RfTkFNRV9fLAorICAgICAgICBfX01BWF9SRUNVUlNJT05fXywgX19FRlVOX0RFRklORURfXygpLgorICAgIDMuMi41IGFkZGVkIF9fQ09NUEFUX01PREVfXywgX19OQVRJVkVfTU9ERV9fLCBfX0VVSURTX18sCisgICAgICAgIF9fRVJRX01BWF9TRU5EX18gYW5kIF9fRVJRX01BWF9SRVBMWV9fLgorICAgIDMuMi42IGFkZGVkIF9fTUFYX0VWQUxfQ09TVF9fLgorICAgIDMuMi43IGFkZGVkIF9fU1RSSUNUX0VVSURTX18gYW5kIG1hZGUgX19FVUlEU19fIHN0YW5kYXJkLgorICAgIDMuMi44IGFkZGVkIF9fSVBWNl9fLCBfX0xQQ19OT1NBVkVfXywgX19ESVJfXywgX19QQVRIX18oKS4KKyAgICAzLjIuOSBhZGRlZCBfX0xETVVEX18sIF9fTVlTUUxfXywgX19ERVBSRUNBVEVEX18sIF9fVkVSU0lPTl9NQUpPUl9fLAorICAgICAgICAgX19WRVJTSU9OX01JTk9SX18sIF9fVkVSU0lPTl9NSUNST19fLCBfX1ZFUlNJT05fUEFUQ0hfXywKKyAgICAgICAgIF9fSU5UX01BWF9fLCBfX0lOVF9NSU5fXywgX19GTE9BVF9NSU5fXywgX19GTE9BVF9NQVhfXywKKyAgICAgICAgX19DQVRDSF9FVkFMX0NPU1RfXywgX19NQVNURVJfRVZBTF9DT1NUX18sIF9fUkVTRVRfVElNRV9fLAorICAgICAgICBfX0NMRUFOVVBfVElNRV9fLCBfX0RSSVZFUl9MT0dfXywgYW5kIF9fV0laTElTVF9fLgorICAgIDMuMi4xMCBhZGRlZCBfX01BWF9NQUxMT0NfXywgX19NU0RPU19GU19fLCBfX0xQQ19BUlJBWV9DQUxMU19fCisgICAgICAgIGFuZCBfX0ZJTEVOQU1FX1NQQUNFU19fLgorICAgIDMuMyBtYWRlIF9fTFBDX05PU0FWRV9fIGFsd2F5cyBkZWZpbmVkIGFuZCBhZGRlZCBfX0FMSVNUU19fLAorICAgICAgICBfX01DQ1BfXywgX19MUENfU1RSVUNUU19fLCBfX0xQQ19JTkxJTkVfQ0xPU1VSRVNfXywgX19QR1NRTF9fLAorICAgICAgICBfX1BUSFJFQURTX18sIF9fVExTX18sIF9fQk9PVF9USU1FX18sIF9fQUxBUk1fVElNRV9fLAorICAgICAgICBfX0hFQVJUX0JFQVRfSU5URVJWQUxfXywgX19TWU5DSFJPTk9VU19IRUFSVF9CRUFUX18sIGFuZCBfX1BDUkVfXy4KKyAgICAzLjMuNzEzIGFkZGVkIF9fSUROQV9fLCBfX1NRTElURV9fLgorICAgIDMuMy43MTQgYWRkZWQgX19PUEVOU1NMX18sIF9fR05VVExTX18uCisgICAgMy4zLjcxOCBhZGRlZCBfX1hNTF9ET01fXy4KKyAgICAzLjMuNzE5IHJlbW92ZWQgX19QVEhSRUFEU19fLCBBTUlHQSwgTVNET1NfRlMsIF9fQkVPU19fICAKKwkJICAgIGFuZCBhZGRlZCBfX0dDUllQVF9fLgorICAgIDMuMy43MjEgYWRkZWQgX19GVU5DVElPTl9fLgorCitTRUUgQUxTTworICAgIHByYWdtYShMUEMpLCBwcmVwcm9jZXNzb3IoTFBDKQpkaWZmIC0tZ2l0IGEvZG9jL2RyaXZlci9zaG93c21hbGxuZXdtYWxsb2NlZCBiL2RvYy9kcml2ZXIvc2hvd3NtYWxsbmV3bWFsbG9jZWQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMTdlMjI1MgotLS0gL2Rldi9udWxsCisrKyBiL2RvYy9kcml2ZXIvc2hvd3NtYWxsbmV3bWFsbG9jZWQKQEAgLTAsMCArMSwxNyBAQAorTkFNRQorICAgICAgICBzaG93c21hbGxuZXdtYWxsb2NlZAorCitERVNDUklQVElPTgorICAgICAgICBUaGlzIGNvbW1hbmQgaXMgaGFyZGNvZGVkIGludG8gdGhlIGRyaXZlci4KKworICAgICAgICBTaG93cyBhIGxpc3Qgb2YgcmVjZW50bHkgYWxsb2NhdGVkIHNtYWxsIG1lbW9yeSBibG9ja3MuCisgICAgICAgIElmIHRoZSBPX0lTX1dJWkFSRCBmbGFnIGlzIHVzZWQgaW4gdGhlIG11ZGxpYiAoaS5lLiBpZgorICAgICAgICBzZXRfaXNfd2l6YXJkKCkgd2FzIGNhbGxlZCksIHRoaXMgY29tbWFuZCBpcyBhbGxvd2VkIG9ubHkgZm9yCisgICAgICAgIHVzZXJzIHRoYXQgaGF2ZSB0aGlzIGZsYWcgc2V0LgorCitISVNUT1JZCisgICAgICAgIERlYWN0aXZhdGVkIGluIDMuMi43IGJ5IGRlZmF1bHQuCisKK1NFRSBBTFNPCisgICAgICAgIG1hbGxvYyhEKSwgc3RhdHVzKEQpLCBtZW1vcnkoQyksIG9iamVjdHMoQyksIGRlYnVnX2luZm8oRSksCisgICAgICAgIHNldF9pc193aXphcmQoRSkKZGlmZiAtLWdpdCBhL2RvYy9kcml2ZXIvc3RhdHVzIGIvZG9jL2RyaXZlci9zdGF0dXMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNzk3NTlkZAotLS0gL2Rldi9udWxsCisrKyBiL2RvYy9kcml2ZXIvc3RhdHVzCkBAIC0wLDAgKzEsMTggQEAKK05BTUUKKyAgICAgICAgc3RhdHVzCisgICAgICAgIHN0YXR1cyB0YWJsZXMKKyAgICAgICAgc3RhdHVzIHN3YXAKKyAgICAgICAgc3RhdHVzIG1hbGxvYworCitERVNDUklQVElPTgorICAgICAgICBUaGlzIGNvbW1hbmQgaXMgaGFyZGNvZGVkIGludG8gdGhlIGRyaXZlcnMgaW5wdXQgcm91dGluZS4KKyAgICAgICAgSXQgZGlzcGxheXMgaW5mb3JtYXRpb24gYWJvdXQgdGhlIHJ1biBzdGF0dXMgb2YgdGhlIHN5c3RlbS4KKyAgICAgICAgSWYgdGhlIE9fSVNfV0laQVJEIGZsYWcgaXMgdXNlZCBpbiB0aGUgbXVkbGliIChpLmUuIGlmCisgICAgICAgIHNldF9pc193aXphcmQoKSB3YXMgY2FsbGVkKSwgdGhpcyBjb21tYW5kIGlzIGFsbG93ZWQgb25seSBmb3IKKyAgICAgICAgdXNlcnMgdGhhdCBoYXZlIHRoaXMgZmxhZyBzZXQuCisKK0hJU1RPUlkKKyAgICAgICAgMy4yLjcgYWRkZWQgdGhlICdzdGF0dXMgbWFsbG9jJyB2YXJpYW50LgorCitTRUUgQUxTTworICAgICAgICBtYWxsb2MoRCksIG1lbW9yeShDKSwgb2JqZWN0cyhDKSwgZGVidWdfaW5mbyhFKSwgc2V0X2lzX3dpemFyZChFKQpkaWZmIC0tZ2l0IGEvZG9jL2VmdW4vLmRlZmF1bHQgYi9kb2MvZWZ1bi8uZGVmYXVsdApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4yNTYwZTE5Ci0tLSAvZGV2L251bGwKKysrIGIvZG9jL2VmdW4vLmRlZmF1bHQKQEAgLTAsMCArMSwxNCBAQAorRlVOS1RJT046CisKK0FSR1VNRU5URToKKworQkVTQ0hSRUlCVU5HOgorCitSVUVDS0dBQkVXRVJUOgorCitCRU1FUktVTkdFTjoKKworQkVJU1BJRUxFOgorCitTSUVIRSBBVUNIOgorCmRpZmYgLS1naXQgYS9kb2MvZWZ1bi8uc3lub255bSBiL2RvYy9lZnVuLy5zeW5vbnltCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmYwMjRhMWIKLS0tIC9kZXYvbnVsbAorKysgYi9kb2MvZWZ1bi8uc3lub255bQpAQCAtMCwwICsxLDMgQEAKK3JvdW5kIGNlaWwKK3RydW5jIGNlaWwKK2VmdW46Om1fZGVsZXRlIGVmdW5fX21fZGVsZXRlCmRpZmYgLS1naXQgImEvZG9jL2VmdW4vXDEzM1wxMzUiICJiL2RvYy9lZnVuL1wxMzNcMTM1IgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5hNTk2OTZhCi0tLSAvZGV2L251bGwKKysrICJiL2RvYy9lZnVuL1wxMzNcMTM1IgpAQCAtMCwwICsxLDY2IEBACitTWU5PUFNJUworICAgICAgICBtaXhlZCAgYXJyW2luZGV4XTsKKyAgICAgICAgaW50ICAgIHN0cltpbmRleF07CisKKyAgICAgICAgKm1peGVkIGFycltmcm9tIC4uIHRvXTsKKyAgICAgICAgc3RyaW5nIHN0cltmcm9tIC4uIHRvXTsKKworQkVTQ0hSRUlCVU5HCisgICAgICAgIExpZWZlcnQgZWluIEVsZW1lbnQgYXVzIGVpbmVtIEFycmF5IG9kZXIgU3RyaW5nIChlcnN0ZSBGb3JtKSwgb2RlcgorICAgICAgICBlaW5lIFRlaWxtZW5nZSAoendlaXRlIEZvcm0pLgorCisgICAgICAgIERpZSBJbmRpemVzIDxpbmRleD4sIDxmcm9tPiB1bmQgPHRvPiBzaW5kIGR1cmNobnVtbWVyaWVydCB2b24gMCBiaXMKKyAgICAgICAgc3RybGVuKDxzdHI+KS0xIGJ6dy4gc2l6ZW9mKDxhcnI+KS0xLiBXZW5uIGVpbiA8aW5kZXg+IGFscyAnPHdlcnQnCisgICAgICAgIGdlc2NocmllYmVuIHdpcmQsIHdpcmQgZGVyIFdlcnQgdm9tIEVuZGUgZGVzIFN0aW5ncyAvIEFycmF5cyBoZXIKKyAgICAgICAgZ2V6YWVobHQuIERhYmVpIHdpcmQgbnVtbWVyaWVydCB2b24gMSBiaXMgc3RybGVuKDxzdHI+KSBiencuCisgICAgICAgIHNpemVvZig8YXJyPikuIFdpcmQgPGZyb20+IHdlZ2dlbGFzc2VuLCBiZWdpbm50IGRpZSBUZWlsbWVuZ2UgbWl0CisgICAgICAgIGRlbSBlcnN0ZW4gRWxlbWVudC4gV2lyZCA8dG8+IHdlZ2dlbGFzc2VuLCBlbmRldCBkaWUgVGVpbG1lbmdlIG1pdAorICAgICAgICBkZW0gbGV0enRlbiBFbGVtZW50LgorCisgICAgICAgIEluIGRlciBlcnN0ZW4gRm9ybSBtdXNzIDxpbmRleD4gaW5uZXJoYWxiIGRlciBHcmVuemVuIGRlcyBTdHJpbmdzIC8KKyAgICAgICAgQXJyYXlzIHNlaW4sIHNvbnN0IHdpcmQgZWluIExhdWZ6ZWl0ZmVobGVyIChSVEUpIHZlcnVyc2FjaHQuIEluIGRlcgorICAgICAgICB6d2VpdGVuIEZvcm0gd2VyZGVuIGRpZSBJbmRpemVzIGFuIGRpZSBHcm9lc3NlIGRlcyBTdHJpbmdzIC8gQXJyYXlzCisgICAgICAgIGFuZ2VwYXNzdC4gV2VubiA8ZnJvbT4gZ3JvZXNzZXIgaXN0IGFscyA8dG8+IG9kZXIgYmVpZGUgYXVzc2VyaGFsYgorICAgICAgICBkZXIgR3JvZXNzZSBkZXMgU3RyaW5ncyAvIEFycmF5cyBsaWVnZW4sIHdpcmQgZWluIGxlZXJlciBTdHJpbmcgIiIKKyAgICAgICAgYnp3LiBlaW4gbGVlcmVzIEFycmF5ICh7fSkgenVydWVjayBnZWxpZWZlcnQuCisKKyAgICAgICAgRGllIE5vdGF0aW9uIGFscyBDbG9zdXJlIGlzdCBlbnRzcHJlY2hlbmQ6CisKKyAgICAgICAgICAgIFtpbmRleF0gICAgICAtPiAoeycjWywgICAgICBhcnIsIGluZGV4IH0pCisgICAgICAgICAgICBbPGluZGV4XSAgICAgLT4gKHsnI1s8LCAgICAgYXJyLCBpbmRleCB9KQorICAgICAgICAgICAgW2Zyb20uLnRvXSAgIC0+ICh7JyNbLi5dLCAgIGFyciwgZnJvbSwgdG8gfSkKKyAgICAgICAgICAgIFs8ZnJvbS4udG9dICAtPiAoeycjWzwuLl0sICBhcnIsIGZyb20sIHRvIH0pCisgICAgICAgICAgICBbZnJvbS4uPHRvXSAgLT4gKHsnI1suLjxdLCAgYXJyLCBmcm9tLCB0byB9KQorICAgICAgICAgICAgWzxmcm9tLi48dG9dIC0+ICh7JyNbPC4uPF0sIGFyciwgZnJvbSwgdG8gfSkKKworQkVJU1BJRUxFCisgICAgICAgIGZvbyA9ICh7IDEsIDIsIDMsIDQgfSk7ICAgICAgICAgc3RyID0gInRlc3QiOworCisgICAgICAgIGZvb1sxXSAgICAgLT4gMSAgICAgICAgICAgICAgICAgc3RyWzFdIC0+ICdlJyA9PSAxMDEKKyAgICAgICAgZm9vWzEuLjJdICAtPiAoeyAyLCAzIH0pICAgICAgICBzdHJbMS4uMl0gIC0+ICJlcyIKKyAgICAgICAgZm9vWzIuLjFdICAtPiAoeyB9KSAgICAgICAgICAgICBzdHJbMi4uMV0gIC0+ICIiCisgICAgICAgIGZvb1swLi48Ml0gLT4gKHsgMSwgMiB9KSAgICAgICAgc3RyWzAuLjwyXSAgLT4gInRlcyIKKworICAgICAgICBmb29bLi48Ml0gIC0+ICh7IDEsIDIgfSkgICAgICAgIHN0clsuLjwyXSAgLT4gInRlcyIKKyAgICAgICAgZm9vWzwzLi5dICAtPiAoeyAyLCAzLCA0IH0pICAgICBzdHJbPDMuLl0gIC0+ICJlc3QiCisKKyAgICAgICAgZm9vWzFdID0gNSAgICAgICAgICAgICAgICAgICAgICAtPiBmb28gPT0gKHsgMSwgNSwgMywgNCB9KQorICAgICAgICBmb29bMS4uMl0gPSAoeyA1LCA2LCA3IH0pICAgICAgIC0+IGZvbyA9PSAoeyAxLCA1LCA2LCA3LCA0IH0pCisgICAgICAgIGZvb1sxLi4yXSA9ICh7IH0pICAgICAgICAgICAgICAgLT4gZm9vID09ICh7IDEsIDQgfSkKKworICAgICAgICBzdHJbMV0gPSAnYScgICAgICAgICAgICAgICAgICAgIC0+IHN0ciA9PSAidGFzdCIKKyAgICAgICAgc3RyWzEuLjJdID0gImJhciIgICAgICAgICAgICAgICAtPiBzdHIgPT0gInRiYXJ0IgorICAgICAgICBzdHJbMS4uMl0gPSAiIiAgICAgICAgICAgICAgICAgIC0+IHN0ciA9PSAidHQiCisKK0FFTkRFUlVOR0VOCisgICAgICAgIHNsaWNlX2FycmF5KCkgaXN0IGRpZSBhbHRlIEZvcm0gZGVyIFtdLU9wZXJhdG9yZW4gZnVlciBBcnJheXMsCisgICAgICAgIGV4dHJhY3QoKSBpc3QgZGllIGFsdGUgRm9ybSBkZXIgW10tT3BlcmF0b3JlbiBmdWVyIFN0cmluZ3MuCisgICAgICAgIEJFSURFIFZBUklBTlRFTiBTSU5EIFZFUkFMVEVULCBXRVJERU4gTklDSFQgTUVIUiBVTlRFUlNUVUVUWlQgVU5ECisgICAgICAgIFNPTExURU4gREVTSEFMQiBOSUNIVCBNRUhSIFZFUldFTkRFVCBXRVJERU4uCisKKyAgICAgICAgRGllIFN5bnRheCBmdWVyICdydWVja3dhZXJ0cyB6YWVobGVuIHZvbSBsZXR6dGVuIEVsZW1lbnQnIGhhdCBzaWNoIHZvbgorICAgICAgICBWZXJzaW9uIDMuMS5KIHp1IDMuMS5LIGdlYWVuZGVydCB2b24gJy0xJyB6dSAnPDEnLiBBdWNoIGlzdCBzZWl0IGRhbm4KKyAgICAgICAgZm9vWzAuLi0xXSBlaW4gbGVlcmVzIEFycmF5IGJ6dy4gZWluIGxlZXJlciBTdHJpbmcuCisKK1NJRUhFIEFVQ0gKKyAgICAgICAgbWVtYmVyKEUpLCBzaXplb2YoRSksIHNsaWNlX2FycmF5KEUpCmRpZmYgLS1naXQgYS9kb2MvZWZ1bi9hYnMgYi9kb2MvZWZ1bi9hYnMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNTg2YmVlYQotLS0gL2Rldi9udWxsCisrKyBiL2RvYy9lZnVuL2FicwpAQCAtMCwwICsxLDIwIEBACitTWU5PUFNJUworICAgICAgICBpbnQgICBhYnMgKGludCBhcmcpCisgICAgICAgIGZsb2F0IGFicyAoZmxvYXQgYXJnKQorCitCRVNDSFJFSUJVTkcKKyAgICAgICAgTGllZmVydCBkZW4gQmV0cmFnIGRlcyBBcmd1bWVudGVzIDxhcmc+LgorCitCRUlTUElFTEUKKyAgICAgICAgRnVua3Rpb24gICAgICBSdWVja2dhYmV3ZXJ0CisgICAgICAgIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAgICAgICAgYWJzKC0xOCAgICApICAxOAorICAgICAgICBhYnMoIDExICAgICkgIDExCisgICAgICAgIGFicyggLTEuOTc0KSAgIDEuOTc0CisKK0FFTkRFUlVOR0VOCisgICAgICAgIEVpbmdlZnVlaHJ0IGluIExETXVkIDMuMi42LgorCitTSUVIRSBBVUNICisgICAgICAgIHNpbihFKSwgYXNpbihFKSwgY29zKEUpLCBhY29zKEUpLCB0YW4oRSksIGF0YW4oRSksIGxvZyhFKSwgZXhwKEUpLAorICAgICAgICBzcXJ0KEUpLCBmbG9vcihFKSwgY2VpbChFKSwgcG93KEUpLCBzZ24oRSkKZGlmZiAtLWdpdCBhL2RvYy9lZnVuL2Fjb3MgYi9kb2MvZWZ1bi9hY29zCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjI0ODc5NTgKLS0tIC9kZXYvbnVsbAorKysgYi9kb2MvZWZ1bi9hY29zCkBAIC0wLDAgKzEsOCBAQAorU1lOT1BTSVMKKyAgICAgICAgZmxvYXQgYWNvcyhmbG9hdCkKKworQkVTQ0hSRUlCVU5HCisgICAgICAgIExpZWZlcnQgZGVyIEFya3Vza29zaW51cyBkZXMgQXJndW1lbnRlcy4KKworU0lFSEUgQVVDSAorICAgICAgICBzaW4oRSksIGFzaW4oRSksIGNvcyhFKSwgdGFuKEUpLCBhdGFuKEUpLCBhdGFuMihFKQpkaWZmIC0tZ2l0IGEvZG9jL2VmdW4vYWRkX2FjdGlvbiBiL2RvYy9lZnVuL2FkZF9hY3Rpb24KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOGIwZjc3OAotLS0gL2Rldi9udWxsCisrKyBiL2RvYy9lZnVuL2FkZF9hY3Rpb24KQEAgLTAsMCArMSwxNDkgQEAKK2FkZF9hY3Rpb24oRSkKK0ZVTktUSU9OOgorICAgICB2b2lkIGFkZF9hY3Rpb24oc3RyaW5nIGZ1biwgc3RyaW5nIGNtZCkKKyAgICAgdm9pZCBhZGRfYWN0aW9uKHN0cmluZyBmdW4sIHN0cmluZyBjbWQsIGludCBmbGFnKQorCitBUkdVTUVOVEU6CisgICAgIGZ1bgorCWdlcnVmZW5lIE1ldGhvZGUKKyAgICAgY21kCisJYXVzbG9lc2VuZGVzIFZlcmIKKyAgICAgZmxhZworCUZsYWcgZnVlciB1bnNjaGFyZmUgSW50ZXJwcmV0YXRpb24KKworQkVTQ0hSRUlCVU5HOgorICAgICBHZW5lcmVsbDogRGFzIFZlcmhhbHRlbiBkaWVzZXIgZWZ1biB3aXJkIGR1cmNoIEFkZENtZCBhdXMKKyAgICAgICAgICAgICAgIC9zdGQvdGhpbmcvY29tbWFuZHMuYyBrb21mb3J0YWJsZXIgd2lkZXJnZXNwaWVnZWx0LgorICAgICAgICAgICAgICAgRGFyYXVmIHNvbGx0ZSBtYW4genVydWVja2dyZWlmZW4uCisKKyAgICAgTGVndCBmdWVyICJjbWQiIChlaW4gS29tbWFuZG92ZXJiKSBlaW5lIGltIGVudHNwcmVjaGVuZGVuIE9iamVrdAorICAgICB6dSBydWZlbmRlIE1ldGhvZGUgZmVzdC4KKworICAgICBEaWVzZSBNZXRob2RlIGJla29tbXQgZGllIEFyZ3VtZW50ZSBhbHMgU3RyaW5nIHVlYmVyZ2ViZW4gdW5kCisgICAgIG11c3MgMCAoZnVlciBlaW5lbiBGZWhsZXIpIG9kZXIgMSAoZnVlciBFcmZvbGcpIHp1cnVlY2tnZWJlbi4KKworICAgICBEZXIgUGFyc2VyIGR1cmNoc3VjaHQgYmVpIGVpbmVyIFNwaWVsZXJlaW5nYWJlIGRpZSBMaXN0ZSBkZXIKKyAgICAgZWluZ2V0cmFnZW5lbiBLb21tYW5kb3MgbmFjaCBwYXNzZW5kZW4gS29tbWFuZG9zIHVuZCBydWZ0IGRpZQorICAgICB6dWdlaG9lcmlnZW4gTWV0aG9kZW4gaW4gZGVuIE9iamVrdGVuIGJpcyBlaW5lIGRlciBNZXRob2RlbgorICAgICAxIHp1cnVlY2tnaWJ0IG9kZXIgZGllIExpc3RlIGR1cmNobGF1ZmVuIHd1cmRlLiBJbiBkZW0gRmFsbAorICAgICBrb21tdCBkaWUgRmVobGVybWVsZHVuZyAobm90aWZ5X2ZhaWwoKSkgenVtIEVpbnNhdHouCisKKyAgICAgTWl0IFdlcnRlbiAhPSAwIGZ1ZXIgImZsYWciIGxlZ3QgbWFuIGVpbmUgdW5zY2hhcmZlIEF1c3dlcnR1bmcKKyAgICAgZmVzdCwgaW0gQmVpc3BpZWw6IERpZSBNZXRob2RlICJhY3Rpb25fZnVuIiBiZWkgZWluZW0KKyAgICAgIGFkZF9hY3Rpb24oImFjdGlvbl9mdW4iLCAiaG9wcyIsIDEpOworICAgICB3aXJkIHNvd29obCBiZWltIEtvbW1hbmRvICJob3BzIiBhbHMgYXVjaCBiZWkgS29tbWFuZG9zIHdpZQorICAgICAiaG9wc2UiLCAiaG9wc2VibHViIiwgLi4uIGdlcnVmZW4gd2VyZGVuLgorICAgICBEaWVzZXMgRmxhZyBzb2xsdGUgdm9yc2ljaHRpZyB2ZXJ3ZW5kZXQgd2VyZGVuLgorCisgICAgIEVzIGdpYnQgZHJlaSBtb2VnbGljaGUgVmVyaGFsdGVuc3dlaXNlLCBkaWUgcGVyICJmbGFnIiBlaW5nZXNjaGFsdGV0CisgICAgIHdlcmRlbiBrb2VubmVuOgorICAgICBXZW5uIGRhcyBBcmd1bWVudCA8ZmxhZz4gQUFfU0hPUlQgKGQuaC4gMSkgaXN0LCBrb2VubmVuIEFyZ3VtZW50ZSB2b24KKyAgICAgY21kIG9obmUgZWluZW4gTGVlcnNjaGxhZyBhbiBjbWQgYW5nZWhhZW5ndCBzZWluLiBBbiBkaWUgRnVua3Rpb24gZnVuCisgICAgIHdlcmRlbiBhbGxlIFplaWNoZW4gbmFjaCBkZW0gZXJzdGVuIExlZXJzY2hsYWcgYWxzIEFyZ3VtZW50CisgICAgIHVlYmVyZ2ViZW4uCisKKyAgICAgV2VubiA8ZmxhZz4gQUFfTk9TUEFDRSAoZC5oLiAyKSBpc3QsIGtvZW5uZW4gZGllIEFyZ3VtZW50ZSB3aWVkZXJ1bQorICAgICBvaG5lIExlZXJzY2hsYWcgYW5zIFZlcmIgYW5nZWhhZW5ndCBzZWluLiBJbSBVbnRlcnNjaGllZCB6dSBBQV9TSE9SVAorICAgICB3ZXJkZW4gYWxsZSBaZWljaGVuIG5hY2ggZGVtIFZlcmIgYWxzIEFyZ3VtZW50IGFuIGRpZSBGdW5rdGlvbgorICAgICB1ZWJlcmdlYmVuLiBEaWUgWmVpY2hlbiwgd2VsY2hlIG5pY2h0IGR1cmNoIGVpbmVuIExlZXJzY2hsYWcgdm9tCisgICAgIFZlcmIgZ2V0cmVubnQgc2luZCwgd2VyZGVuIFpVU0FFVFpMSUNIIHZvbiBxdWVyeV92ZXJiKCkgenVydWVjaworICAgICBnZWdlYmVuLgorCisgICAgIFdlbm4gPGZsYWc+IEFBX0lNTV9BUkdTICgzKSBpc3QsIHdlcmRlbiBhbGxlIFplaWNoZW4gbmFjaCBkZW0gVmVyYgorICAgICBhbHMgQXJndW1lbnQgdWViZXJnZWJlbiwgbmljaHQgYWJlciB2b24gcXVlcnlfdmVyYigpIGJlcnVlY2tzaWNodGlndC4KKworCitCRU1FUktVTkdFTjoKKyAgICAgKDEpIGFkZF9hY3Rpb24oKSBzb2xsdGUgaW1tZXIgaW5uZXJoYWxiIHZvbiBpbml0KCkgYmVudXR6dCB3ZXJkZW4KKyAgICAgKDIpIGRhcyBkZWZpbmllcmVuZGUgT2JqZWt0IG11c3MgaW0gaW52ZW50b3J5IGRlcyBTcGllbGVycyBvZGVyCisgICAgICAgICBlbnZpcm9ubWVudCgpIGRlcyBrb21tYW5kb2dlYmVuZGVuIExlYmV3ZXNlbnMgc2VpbgorICAgICAoMykgaW0gaW5pdCgpIHNwYWV0ZXIgZWluZ2V0cmFnZW5lIEtvbW1hbmRvcyBvZGVyIHNwYWV0ZXIgaGluenUtCisgICAgICAgICBrb21tZW5kZSBPYmpla3RlIHdlcmRlbiBiZWkgZGVyIEtvbW1hbmRvYXVzd2VydHVuZyBWT1IgZGVuCisgICAgICAgICBhbHRlbiBiZXJ1ZWNrc2ljaHRpZ3QKKyAgICAgICAgIChEYWhlciBiZXdlZ3Qgc2ljaCBkYXMgWHRvb2wgZGVyIE1hZ2llciByZWdlbG1hZXNzaW5nIG5ldSBpbgorICAgICAgICAgIGRhcyBJbnZlbnRvcnksIHVtIGltbWVyICJlcnN0ZXMiIE9iamVrdCB6dSBzZWluLikKKworQkVJU1BJRUxFOgorICAgICAvLyBlaW4gS29tbWFuZG8gaW4gZWluZW0gU2NoaXJtCisgICAgIHZvaWQgaW5pdCgpIHsKKyAgICAgIDo6aW5pdCgpOworICAgICAgYWRkX2FjdGlvbigiYWN0aW9uX29lZmZuZSIsICJvZWZmbmUiKTsKKyAgICAgfQorCisgICAgIGludCBhY3Rpb25fb2VmZm5lKHN0cmluZyBzdHIpIHsKKyAgICAgIGlmKHN0cmluZ3Aoc3RyKSAmJiBpZChzdHIpKQkvLyBBcmd1bWVudCBkYSB1bmQgYmluIGljaCBnZW1laW50PworICAgICAgIHdyaXRlKCJEdSBvZWZmbmVzdCBkZW4gU2NoaXJtLlxuIik7CisgICAgICAgc2F5KGJyZWFrX3N0cmluZyh0aGlzX3BsYXllcigpLT5OYW1lKFdFUikrIiBvZWZmbmV0IGVpbmVuIFNjaGlybS4iLDc4KSk7CisgICAgICAgcmV0dXJuIDE7CisgICAgICB9CisgICAgICBub3RpZnlfZmFpbCgiV2FzIHdpbGxzdCBEdSBvZWZmbmVuP1xuIik7CisgICAgICByZXR1cm4gMDsKKyAgICAgfQorCisgICAgIC8vIGZydWVoZXIgYmVsaWVidCB1bSBTcGllbGVyIGxhaG16dWxlZ2VuLCBkYSBlcyBfYWxsZV8gS29tbWFuZG9zIAorICAgICAvLyB0cmlnZ2VydCAtPiBzaWVoZSBoZXV0ZSBqZWRvY2ggZGFmdWVyIGVoZXIgUF9ESVNBQkxFX0NPTU1BTkRTCisgICAgIC8vIEFjaHR1bmc6IHNpZWhlIEltcGxpa2F0aW9uIHZvbiAoMykKKyAgICAgYWRkX2FjdGlvbigiYWN0aW9uX25vdGhpbmciLCAiIiwxICk7CisgICAgIC4uLgorICAgICBpbnQgYWN0aW9uX25vdGhpbmcoc3RyaW5nIHN0cikgeworICAgICAgd3JpdGUoIkRpciBzaW5kIGRpZSBIYWVuZGUgZ2VidW5kZW4uXG4iKTsKKyAgICAgIHJldHVybiAxOworICAgICB9CisKKyAgICAgQmVpc3BpZWxlIGZ1ZXIgZGllIFZlcndlbmR1bmcgZGVzIEFyZ3VtZW50ZXMgImZsYWciOgorICAgICAgYWRkX2FjdGlvbigiZGlzZnVuYyIsICJkaXNjb25uZWN0IiwgQUFfTk9TUEFDRSk7CisKKyAgICAgICAgRGllIEZ1bmt0aW9uIGRpc2Z1bmMoKSB3aXJkIGF1ZmdlcnVmZW4sIHdlbm4gZGVyIFNwaWVsZXIgImRpc2Nvbm5lY3QiCisgICAgICAgIG9kZXIgZWluZSBBYmt1ZXJ6dW5nIGRhdm9uICh6dW0gQmVpc3BpZWwgImRpIiBvZGVyICJkaXNjb24iKSBlaW5naWJ0LgorICAgICAgICBMYWVuZ2VyZSBXb3J0ZSAoenVtIEJlaXNwaWVsICJkaXNjb25uZWN0aW5nIikgd2VyZGVuIE5JQ0hUIGVya2FubnQuCisgICAgICAgIFVtIHJhdXN6dWZpbmRlbiwgd2FzIGRlciBTcGllbGVyIHRhdHNhZWNobGljaCBlaW5nZWdlYmVuIGhhdCwgbXVzcworICAgICAgICBxdWVyeV92ZXJiKCkgYXVmZ2VydWZlbiB3ZXJkZW4uCisKKyAgICAgIGFkZF9hY3Rpb24oImZ1biIsICJjbWQiKTsKKyAgICAgIGFkZF9hY3Rpb24oImZ1biIsICJzY21kIiwgQUFfU0hPUlQpOworICAgICAgYWRkX2FjdGlvbigiZnVuIiwgIm5jbWQiLCBBQV9OT1NQQUNFKTsKKyAgICAgIGFkZF9hY3Rpb24oImZ1biIsICJpY21kIiwgQUFfSU1NX0FSR1MpOworCisgICAgICAgIERpZSBmb2xnZW5kZSBUYWJlbGxlIHplaWd0LCB3YXMgZGllIG9iZW4gYXVmZ2VmdWVocnRlbiBLb21tYW5kb3MgYnp3LgorICAgICAgICA8ZmxhZz4gZnVlciBXZXJ0ZSBhbiBxdWVyeV92ZXJiKCkgdW5kIGFscyBBcmd1bWVudGUgYW4gZGllIEZ1bmt0aW9uCisgICAgICAgIGZ1biB1ZWJlcmdlYmVuOgorICAgICAgICB8LS0tLS0tLS0tLS0tLS0tLS0tLXwtLS0tLS0tLS0tLS0tLXwtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tfAorICAgICAgICB8IEVpbmdhYmUgICAgICAgICAgIHwgcXVlcnlfdmVyYigpIHwgQXJndW1lbnQgZGVyIEZ1bmt0aW9uIGZ1biAgfAorICAgICAgICB8LS0tLS0tLS0tLS0tLS0tLS0tLXwtLS0tLS0tLS0tLS0tLXwtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tfAorICAgICAgICB8ICJjbWQiICAgICAgICAgICAgIHwgImNtZCIgICAgICAgIHwgMCAgICAgICAgICAgICAgICAgICAgICAgICAgfAorICAgICAgICB8ICJjbWQgYmxhIGZhc2VsIiAgIHwgImNtZCIgICAgICAgIHwgImJsYSBmYXNlbCIgICAgICAgICAgICAgICAgfAorICAgICAgICB8LS0tLS0tLS0tLS0tLS0tLS0tLXwtLS0tLS0tLS0tLS0tLXwtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tfAorICAgICAgICB8ICJzY21kIiAgICAgICAgICAgIHwgInNjbWQiICAgICAgIHwgMCAgICAgICAgICAgICAgICAgICAgICAgICAgfAorICAgICAgICB8ICJzY21kIGJsYSIgICAgICAgIHwgInNjbWQiICAgICAgIHwgImJsYSIgICAgICAgICAgICAgICAgICAgICAgfAorICAgICAgICB8ICJzY21kYmxhIiAgICAgICAgIHwgInNjbWRibGEiICAgIHwgMCAgICAgICAgICAgICAgICAgICAgICAgICAgfAorICAgICAgICB8ICJzY21kIGJsYSBmYXNlbCIgIHwgInNjbWQiICAgICAgIHwgImJsYSBmYXNlbCIgICAgICAgICAgICAgICAgfAorICAgICAgICB8ICJzY21kYmxhIGZhc2VsIiAgIHwgInNjbWRibGEiICAgIHwgImZhc2VsIiAgICAgICAgICAgICAgICAgICAgfAorICAgICAgICB8LS0tLS0tLS0tLS0tLS0tLS0tLXwtLS0tLS0tLS0tLS0tLXwtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tfAorICAgICAgICB8ICJuY21kIiAgICAgICAgICAgIHwgIm5jbWQiICAgICAgIHwgMCAgICAgICAgICAgICAgICAgICAgICAgICAgfAorICAgICAgICB8ICJuY21kIGJsYSIgICAgICAgIHwgIm5jbWQiICAgICAgIHwgIiBibGEiICAgICAgICAgICAgICAgICAgICAgfAorICAgICAgICB8ICJuY21kYmxhIiAgICAgICAgIHwgIm5jbWRibGEiICAgIHwgImJsYSIgICAgICAgICAgICAgICAgICAgICAgfAorICAgICAgICB8ICJuY21kIGJsYSBmYXNlbCIgIHwgIm5jbWQiICAgICAgIHwgIiBibGEgZmFzZWwiICAgICAgICAgICAgICAgfAorICAgICAgICB8ICJuY21kYmxhIGZhc2VsIiAgIHwgIm5jbWRibGEiICAgIHwgImJsYSBmYXNlbCIgICAgICAgICAgICAgICAgfAorICAgICAgICB8LS0tLS0tLS0tLS0tLS0tLS0tLXwtLS0tLS0tLS0tLS0tLXwtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tfAorICAgICAgICB8ICJpY21kIiAgICAgICAgICAgIHwgImljbWQiICAgICAgIHwgMCAgICAgICAgICAgICAgICAgICAgICAgICAgfAorICAgICAgICB8ICJpY21kIGJsYSIgICAgICAgIHwgImljbWQiICAgICAgIHwgIiBibGEiICAgICAgICAgICAgICAgICAgICAgfAorICAgICAgICB8ICJpY21kYmxhIiAgICAgICAgIHwgImljbWQiICAgICAgIHwgImJsYSIgICAgICAgICAgICAgICAgICAgICAgfAorICAgICAgICB8ICJpY21kIGJsYSBmYXNlbCIgIHwgImljbWQiICAgICAgIHwgIiBibGEgZmFzZWwiICAgICAgICAgICAgICAgfAorICAgICAgICB8ICJpY21kYmxhIGZhc2VsIiAgIHwgImljbWQiICAgICAgIHwgImJsYSBmYXNlbCIgICAgICAgICAgICAgICAgfAorICAgICAgICB8LS0tLS0tLS0tLS0tLS0tLS0tLXwtLS0tLS0tLS0tLS0tLXwtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tfAorCisKK0dFU0NISUNIVEUKKyAgICAgICAgRGFzIEFyZ3VtZW50IDxmbGFnPiA8IDAgd2lyZCBzZWl0IDMuMkAxMjcgdW50ZXJzdHVldHp0LCBhYmVyIGVyc3QgYWIKKyAgICAgICAgTERNdWQgMy4yLjggcmljaHRpZyBpbXBsZW1lbnRpZXJ0LiBMRE11ZCAzLjIuOSBmdWVocnRlIGRhcyBBQV9JTU1fQVJHUworICAgICAgICBGbGFnIGVpbi4gQWIgTERNdWQgMy41IGthbm4gbWFuIENsb3N1cmVzIGFscyBGdW5rdGlvbmVuIHVlYmVyZ2ViZW4uCisKK1NJRUhFIEFVQ0g6CisJCQlyZW1vdmVfYWN0aW9uKEUpLCBpbml0KEUpLCBlbmFibGVfY29tbWFuZHMoRSkKKyAgICAgRmVobGVybWVsZHVuZzoJbm90aWZ5X2ZhaWwoRSksIF9ub3RpZnlfZmFpbChFKQorICAgICBBcmd1bWVudHN0cmluZzoJcXVlcnlfdmVyYihFKSwgX3VucGFyc2VkX2FyZ3MoTCkKKyAgICAgb2Jzb2xldDoJCWFkZF92ZXJiKEUpLCBhZGRfeHZlcmIoRSkKKyAgICAgYWx0ZXJuYXRpdjoJQWRkQWN0aW9uKEwpLCBBZGRDbWQoTCkKKyAgICAgICAgICAgICAgICAgICAgICAgIFBfRElTQUJMRV9DT01NQU5EUworCisyNC4gTWFlcnogMjAwNCBHbG9pbnNvbkBNRwpkaWZmIC0tZ2l0IGEvZG9jL2VmdW4vYWxsX2Vudmlyb25tZW50IGIvZG9jL2VmdW4vYWxsX2Vudmlyb25tZW50Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjk5M2Y0OTMKLS0tIC9kZXYvbnVsbAorKysgYi9kb2MvZWZ1bi9hbGxfZW52aXJvbm1lbnQKQEAgLTAsMCArMSwzMyBAQAorU1lOT1BTSVMKKyAgICAgICAgb2JqZWN0ICphbGxfZW52aXJvbm1lbnQoKTsKKyAgICAgICAgb2JqZWN0ICphbGxfZW52aXJvbm1lbnQob2JqZWN0IG9iKTsKKworQVJHVU1FTlRFOgorICAgICAgICBvYiAtIGRhcyBPYmpla3QsIGRlc3NlbiBlbnZpcm9ubWVudCgpcyBnZXd1ZW5zY2h0IHdlcmRlbgorCitCRVNDSFJFSUJVTkcKKyAgICAgICAgR2lidCBlaW4gQXJyYXkgbWl0IGFsbGVuIFVtZ2VidW5nZW4gZGVzIE9iamVrdHMgPG9iPiB6dXJ1ZWNrLgorICAgICAgICBXZW5uIDxvYj4gbmljaHQgYW5nZWdlYmVuIHdpcmQsIHdpcmQgc3RhbmRhcmRtYWVzc2lnIHRoaXNfb2JqZWN0KCkKKyAgICAgICAgdmVyd2VuZGV0LgorCisgICAgICAgIFdlbm4gPG8+IGtlaW5lIFVtZ2VidW5nIGhhdCBvZGVyIHplcnN0b2VydCB3dXJkZSwgd2lyZCAwIHp1cnVlY2sKKyAgICAgICAgZ2VnZWJlbi4KKworQkVNRVJLVU5HRU46CisgICAgICAgIERhcyB6dXJ1ZWNrZ2VnZWJlbmUgQXJyYXkgaXN0IHNvIGFuZ2VsZWd0LCBkYXNzIGRpZSBpbm5lcnN0ZSBVbWdlYnVuZworICAgICAgICBhbSBBbmZhbmcgZGVzIEFycmF5cyBzdGVodCwgdW5kIGRpZSBhZXVzc2Vyc3RlIFVtZ2VidW5nIGFtIEVuZGUuCisKK0JFSVNQSUVMCisgICAgICAgIChEaWUgZ2VzdWNodGUgRmFja2VsIGJlZmluZGV0IHNpY2ggaW4gZWluZW0gQmVoYWVsdGVyLCBkZW4gV2FyZ29uIGJlaQorICAgICAgICBzaWNoIHRyYWVndC4gV2FyZ29uIHN0ZWh0IGluIHNlaW5lbSBXb3Jrcm9vbS4pCisKKyAgICAgICAgb2IgPSBhbGxfZW52aXJvbm1lbnQoZmluZF9vYmplY3QoIi9vYmovZmFja2VsIzMyIikpOworICAgICAgICA9PiBvYiA9ICh7Wyt3dWVzdGUvZHVyaWFuL2JlaGFlbHRlciMzMV0sWy9tYWdpZXI6d2FyZ29uXSxbfi93b3Jrcm9vbV19KQorCitBRU5ERVJVTkdFTgorICAgICAgICBFaW5nZWZ1ZWhydCBpbiBMRE11ZCAzLjIuNi4gRWluIFZvcnNjaGxhZyB2b24gVHViTXVkLgorCitTSUVIRSBBVUNICisgICAgICAgIGVudmlyb25tZW50KEUpLCBhbGxfaW52ZW50b3J5KEUpCisKKzcuRmViIDIwMDcgR2xvaW5zb24KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9kb2MvZWZ1bi9hbGxfaW52ZW50b3J5IGIvZG9jL2VmdW4vYWxsX2ludmVudG9yeQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5hZDZlZWExCi0tLSAvZGV2L251bGwKKysrIGIvZG9jL2VmdW4vYWxsX2ludmVudG9yeQpAQCAtMCwwICsxLDE3IEBACithbGxfaW52ZW50b3J5CitGVU5LVElPTjoKKyAgICAgb2JqZWN0ICphbGxfaW52ZW50b3J5KCkKKyAgICAgb2JqZWN0ICphbGxfaW52ZW50b3J5KG9iamVjdCBvYikKKworQkVTQ0hSRUlCVU5HOgorICAgICBMaWVmZXJ0IGVpbiBGZWxkIChBcnJheSkgbWl0IGFsbGVuIE9iamVrdGVuLCBkaWUgc2ljaCBpbSBPYmpla3Qgb2IKKyAgICAgYmVmaW5kZW4gKGJ6dy4gaW4gdGhpc19vYmplY3QoKSwgc29mZXJuIGtlaW4gQXJndW1lbnQgYW5nZWdlYmVuCisgICAgIHd1cmRlKS4KKyAgICAgR2VyYWRlIGJlaSBzZWhyIHZvbGxlbiBPYmpla3RlbiBiaWV0ZXQgc2ljaCBlaGVyIGZpcnN0X2ludmVudG9yeSgpLAorICAgICBuZXh0X2ludmVudG9yeSgpIGFuLgorCitTSUVIRSBBVUNIOgorICAgICBmaXJzdF9pbnZlbnRvcnkoRSksIG5leHRfaW52ZW50b3J5KEUpLCBkZWVwX2ludmVudG9yeShFKSwKKyAgICAgYWxsX2Vudmlyb25tZW50KEUpLCBlbnZpcm9ubWVudChFKQorCisyMi4gTWFlcnogMjAwNCBHbG9pbnNvbgpkaWZmIC0tZ2l0IGEvZG9jL2VmdW4vYWxsb2NhdGUgYi9kb2MvZWZ1bi9hbGxvY2F0ZQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5jNTkxYzVlCi0tLSAvZGV2L251bGwKKysrIGIvZG9jL2VmdW4vYWxsb2NhdGUKQEAgLTAsMCArMSwzOCBAQAorU1lOT1BTSVMKKyAgICAgICAgKm1peGVkIGFsbG9jYXRlKGludCBzaXplKTsKKyAgICAgICAgKm1peGVkIGFsbG9jYXRlKGludCBzaXplLCBtaXhlZCBpbml0X3ZhbHVlKTsKKworICAgICAgICAqbWl4ZWQgYWxsb2NhdGUoKmludCBzaXplcyk7CisgICAgICAgICptaXhlZCBhbGxvY2F0ZSgqaW50IHNpemVzLCBtaXhlZCBpbml0X3ZhbHVlKTsKKworQkVTQ0hSRUlCVU5HCisgICAgICAgIEFsbG96aWVydCBlaW4gQXJyYXkgdm9uIDxzaXplPiBFbGVtZW50ZW4uIERpZSBBbnphaGwgRWxlbWVudGUgbXVzcworICAgICAgICBncm9lc3NlciBzZWluIGFscyAwLCBkYXJmIGFiZXIgZGFzIFN5c3RlbW1heGltdW0gKG5vcm1hbGVyd2Vpc2UgMTAwMCkKKyAgICAgICAgbmljaHQgdWViZXJzdGVpZ2VuLiBXaXJkIDxpbml0X3ZhbHVlPiBhbmdlZ2ViZW4sIHdpcmQgYWxsZW4gRWxlbWVudGVuCisgICAgICAgIGRpZXNlciBhbHMgQW5mYW5nc3dlcnQgenVnZXdpZXNlbi4gV2VubiA8aW5pdF92YWx1ZT4gZWluIE1hcHBpbmcgb2RlcgorICAgICAgICBlaW4gQXJyYXkgaXN0LCB3aXJkIGZ1ZXIgamVkZXMgRWxlbWVudCBlaW5lIGVpbmZhY2hlIEtvcGllIGVyc3RlbGx0LgorICAgICAgICBXaXJkIDxpbml0X3ZhbHVlPiBuaWNodCBhbmdlZ2ViZW4sIHNpbmQgYWxsZSBFbGVtZW50ZSAwLgorCisgICAgICAgIEluIGRlciB6d2VpdGVuIEZvcm0gKG1pdCBlaW5lbSBGZWxkIHZvbiA8c2l6ZXM+IGFuc3RlbGxlIG51ciBlaW5lcgorICAgICAgICA8c2l6ZT4pIGVyemV1Z3QgYWxsb2NhdGUoKSBlaW4gbWVocmRpbWVuc2lvbmFsZXMgQXJyYXksIGVpbiBBcnJheSBhdXMKKyAgICAgICAgQXJyYXlzLgorCisgICAgICAgIEhldXRlIHdpcmQgYWxsb2NhdGUoKSBrYXVtIG1laHIgYmVub2V0aWd0LCB3ZWlsIEFycmF5cyBtaXQgZGVtCisgICAgICAgICstT3BlcmF0b3IgYWRkaWVydCB3ZXJkZW4ga29lbm5lbiB1bmQgbWl0IGRlbSAoe30pLU9wZXJhdG9yCisgICAgICAgIGluaXRpYWxpc2llcnQuIERlciBlaW56aWdlIE51dHplbiBkZXIgRnVua3Rpb24gaXN0LCBncm9zc2UgbGVlcmUKKyAgICAgICAgb2RlciBpbml0aWFsaXNpZXJ0ZSBBcnJheXMgenUgZXJ6ZXVnZW4uCisKK0JFSVNQSUVMCisgICAgICAgIHN0cmluZyAqYnVmZmVyOworICAgICAgICBidWZmZXIgPSBhbGxvY2F0ZSg1MCk7CisgICAgICAgIGJ1ZmZlciA9IGFsbG9jYXRlKDUwLCAiIik7CisKKyAgICAgICAgYnVmZmVyID0gYWxsb2NhdGUoICh7IDIsIDMgfSkgKQorICAgICAgICAgIC0tPiAoeyAoeyAwLCAwLCAwIH0pLCAoeyAwLCAwLCAwIH0pIH0pCisKK0FFTkRFUlVOR0VOCisgICAgICAgIExETXVkIDMuMi45IGZ1ZWhydGUgZGVuIEFuZmFuZ3N3ZXJ0IDxpbml0X3ZhbHVlPiB1bmQgZGllCisgICAgICAgICAgICBJbml0aWFsaXNpZXJ1bmcgdm9uIG1laHJkaW1lbnNpb25hbGVuIEFycmF5cyBlaW4uCisKK1NJRUhFIEFVQ0gKKyAgICAgICAgc2l6ZW9mKEUpCmRpZmYgLS1naXQgYS9kb2MvZWZ1bi9hbmRfYml0cyBiL2RvYy9lZnVuL2FuZF9iaXRzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmYwNjZkNjEKLS0tIC9kZXYvbnVsbAorKysgYi9kb2MvZWZ1bi9hbmRfYml0cwpAQCAtMCwwICsxLDIzIEBACitTWU5PUFNJUworICAgICAgICBzdHJpbmcgYW5kX2JpdHMoc3RyaW5nIHN0cjEsIHN0cmluZyBzdHIyKTsKKworQkVTQ0hSRUlCVU5HCisgICAgICAgIDxzdHIxPiB1bmQgPHN0cjI+IHNlaWVuIGJlaWRlcyBCaXRzdHJpbmdzLiBEYXMgUmVzdWx0YXQgdm9uIGFuZF9iaXRzKCkKKyAgICAgICAgaXN0IGVpbiBCaXRzdHJpbmcgbWl0IGRlbSBiaW5hZXJlbiBVbmQgdm9uIDxzdHIxPiB1bmQgPHN0cjI+LCBkYXMKKyAgICAgICAgaGVpc3N0IGVpbiBTdHJpbmcsIGluIGRlbSBlaW4gQml0IG51ciBnZXNldHp0IGlzdCwgd2VubiBkYXMKKyAgICAgICAgZW50c3ByZWNoZW5kZSBCaXQgaW4gYmVpZGVuIFN0cmluZ3MgPHN0cjE+IHVuZCA8c3RyMj4gZ2VzZXR6dCBpc3QuCisKK0JFSVNQSUVMCisgICAgICAgIHN0cmluZyBzMSwgczIsIHMzOworCisgICAgICAgIHMxID0gc2V0X2JpdCgiIiwgMyk7IHMxID0gc2V0X2JpdChzMSwgMTUpOyAgLT4gczEgaXMgIiggKCIKKyAgICAgICAgczIgPSBzZXRfYml0KCIiLCAzKTsgczIgPSBzZXRfYml0KHMyLCA0KTsgICAtPiBzMiBpcyAiOCIKKworICAgICAgICBzMyA9IGFuZF9iaXRzKHMxLCBzMik7CisKKyAgICAgICAgLS0+IHMzIGlzdCBqZXR6dCAiOCIsIGQuaC4gZWluIEJpdHN0cmluZywgaW4gZGVtIG51ciBkYXMgMy4gQml0CisgICAgICAgICAgICBnZXNldHp0IGlzdC4KKworU0lFSEUgQVVDSAorICAgICAgICBjbGVhcl9iaXQoRSksIHNldF9iaXQoRSksIHRlc3RfYml0KEUpLCBuZXh0X2JpdChFKSwgbGFzdF9iaXQoRSksCisgICAgICAgIGNvdW50X2JpdHMoRSksIG9yX2JpdHMoRSksIHhvcl9iaXRzKEUpLCBpbnZlcnRfYml0cyhFKSwgY29weV9iaXRzKEUpCmRpZmYgLS1naXQgYS9kb2MvZWZ1bi9hcHBseSBiL2RvYy9lZnVuL2FwcGx5Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmFhYTMwYTUKLS0tIC9kZXYvbnVsbAorKysgYi9kb2MvZWZ1bi9hcHBseQpAQCAtMCwwICsxLDM1IEBACitTWU5PUFNJUworICAgICAgICBtaXhlZCBhcHBseShjbG9zdXJlIGNsLCBtaXhlZCBhcmcsIC4uLik7CisKK0JFU0NIUkVJQlVORworICAgICAgICBXZXJ0ZXQgZGllIENsb3N1cmUgPGNsPiBhdXMuIFdlbm4gPGNsPiBrZWluZSBDbG9zdXJlIGlzdCwgd2lyZCA8Y2w+CisgICAgICAgIHVudmVyYWVuZGVydCB6dXJ1ZWNrIGdlbGllZmVydCB1bmQgYWxsZSBBcmd1bWVudGUgPGFyZz4gd2VyZGVuCisgICAgICAgIGlnbm9yaWVydC4KKworICAgICAgICBFcyBnaWJ0IGVpbmVuIGtsZWluZW4gVW50ZXJzY2hpZWQgenUgZnVuY2FsbCgpLCBkYXMgamEgaW0gV2VzZW50bGljaGVuCisgICAgICAgIGRhcyBnbGVpY2hlIHR1dCAobmFlbWxpY2gsIGVpbmUgQ2xvc3VyZSBhdXN3ZXJ0ZW4pOiB3ZW5uIGRhcyBsZXR6dGUKKyAgICAgICAgQXJndW1lbnQgdm9uIGFwcGx5KCkgZWluIEFycmF5IGlzdCwgd2lyZCBqZWRlcyBFbGVtZW50IGRpZXNlcyBBcnJheXMKKyAgICAgICAgenUgZWluZW0gc2VwYXJhdGVuIHp1c2FldHpsaWNoZW4gUGFyYW1ldGVyIGRlciBDbG9zdXJlIHVtZ2V3YW5kZWx0LgorCisgICAgICAgIEVpbmUgbW9lZ2xpY2hlIEFud2VuZHVuZyB3YWVyZToKKyAgICAgICAgICAgIG1peGVkIGV2YWwob2JqZWN0IG9iLHN0cmluZyBmdW5jLG1peGVkICphcmdzKQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIHJldHVybiBhcHBseSgjJ2NhbGxfb3RoZXIsb2IsZnVuYyxhcmdzKTsKKyAgICAgICAgICAgIH0KKworICAgICAgICBEYXMgZnVlaHJ0IHp1IGZvbGdlbmRlbiBBdWZydWZlbjoKKyAgICAgICAgICAgIG9iLT5mdW5jKGFyZ3NbMF0sYXJnc1sxXSwuLi4sYXJnc1tzaXplb2YoYXJncyktMV0pCisKKyAgICAgICAgV2FlcmUgc3RhdHRkZXNzZW4gZnVuY2FsbCgpIGF1ZmdlcnVmZW4gd29yZGVuLCBzbyBoYWV0dGUgZGFzIGVyZ2ViZW46CisgICAgICAgICAgICBvYi0+ZnVuYyhhcmdzKQorCisgICAgICAgIEVpbmUgd2ljaHRpZ2UgQW53ZW5kdW5nIHZvbiBhcHBseSgpIGlzdCBkYXMgQXVzd2VydGVuIGRlcworICAgICAgICBBcnJheS1Bcmd1bWVudHMgaW4gInZhcmFyZ3MiIEZ1bmt0aW9uZW4uCisKK0FFTkRFUlVOR0VOCisgICAgICAgIEVpbmdlZnVlaHJ0IGluIDMuMkA3MC4KKyAgICAgICAgTERNdWQgMy4yLjggZnVlaHJ0ZSBlaW4sIGRhc3MgZGFzIGVyc3RlIEFyZ3VtZW50IHp1cnVlY2sgZ2VnZWJlbiB3aXJkLAorICAgICAgICAgICAgd2VubiBlcyBzaWNoIG5pY2h0IHVtIGVpbmUgQ2xvc3VyZSBoYW5kZWx0LgorCitTSUVIRSBBVUNICisgICAgICAgIGZ1bmNhbGwoRSksIGNsb3N1cmVzKExQQyksIHZhcmFyZ3MoTFBDKQpkaWZmIC0tZ2l0IGEvZG9jL2VmdW4vYXNpbiBiL2RvYy9lZnVuL2FzaW4KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNDRjNmQ0ZAotLS0gL2Rldi9udWxsCisrKyBiL2RvYy9lZnVuL2FzaW4KQEAgLTAsMCArMSw4IEBACitTWU5PUFNJUworICAgICAgICBmbG9hdCBhc2luKGZsb2F0KQorCitCRVNDSFJFSUJVTkcKKyAgICAgICAgTGllZmVydCBkZXIgQXJrdXNzaW51cyBkZXMgQXJndW1lbnRlcy4KKworU0lFSEUgQVVDSAorICAgICAgICBzaW4oRSksIGNvcyhFKSwgYWNvcyhFKSwgdGFuKEUpLCBhdGFuKEUpLCBhdGFuMihFKQpkaWZmIC0tZ2l0IGEvZG9jL2VmdW4vYXRhbiBiL2RvYy9lZnVuL2F0YW4KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMTA1Yjc0OAotLS0gL2Rldi9udWxsCisrKyBiL2RvYy9lZnVuL2F0YW4KQEAgLTAsMCArMSwxMSBAQAorU1lOT1BTSVMKKyAgICAgICAgZmxvYXQgYXRhbihpbnR8ZmxvYXQpCisKK0JFU0NIUkVJQlVORworICAgICAgICBMaWVmZXJ0IGRlbiBBcmt1c3RhbmdlbnMgZGVzIEFyZ3VtZW50ZXMuCisKK0FFTkRFUlVOR0VOCisgICAgICAgIExETXVkIDMuMi45OiBHYW56emFobGVuIChJbnRlZ2VycykgYWxzIEFyZ3VtZW50IGhpbnp1Z2VmdWVndC4KKworU0lFSEUgQVVDSAorICAgICAgICBhdGFuMihFKSwgc2luKEUpLCBjb3MoRSksIHRhbihFKSwgYXNpbihFKSwgYWNvcyhFKQpkaWZmIC0tZ2l0IGEvZG9jL2VmdW4vYXRhbjIgYi9kb2MvZWZ1bi9hdGFuMgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5lNGNkNzhhCi0tLSAvZGV2L251bGwKKysrIGIvZG9jL2VmdW4vYXRhbjIKQEAgLTAsMCArMSwxNiBAQAorU1lOT1BTSVMKKyAgICAgICAgZmxvYXQgYXRhbjIgKGludHxmbG9hdCB5LCBpbnR8ZmxvYXQgeCkKKworQkVTQ0hSRUlCVU5HCisgICAgICAgIExpZWZlcnQgZGVuIFdpbmtlbCBkZXIgUG9sYXJrb29yZGluYXRlbiBkZXMgUHVua3RlcyAoeCwgeSkgaW0KKyAgICAgICAgQmVyZWljaCAoLVBpLCBQaV0uCisKKyAgICAgICAgTWFuIGJlYWNodGUgZGllIFZlcnRhdXNjaHVuZyBkZXIgS29vcmRpbmF0ZW4geCB1bmQgeSBpbiBkZXIKKyAgICAgICAgUGFyYW1ldGVyLUxpc3RlLCBkaWUgZGllIEFiZm9sZ2UgaW4gZGVyIFN0ZWlndW5ncy1XaW5rZWwtVW1yZWNobnVuZworICAgICAgICBhdGFuKHkgLyB4KSB3aWRlcnNwaWVnZWx0LgorCitBRU5ERVJVTkdFTgorICAgICAgICBMRE11ZCAzLjIuOTogR2FuenphaGxlbiAoSW50ZWdlcnMpIGFscyBBcmd1bWVudGUgaGluenVnZWZ1ZWd0LgorCitTSUVIRSBBVUNICisgICAgICAgIHNpbihFKSwgY29zKEUpLCB0YW4oRSksIGFzaW4oRSksIGFjb3MoRSksIGF0YW4oRSkKZGlmZiAtLWdpdCBhL2RvYy9lZnVuL2F0dGFjaF9lcnFfZGVtb24gYi9kb2MvZWZ1bi9hdHRhY2hfZXJxX2RlbW9uCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjAzMmIxM2IKLS0tIC9kZXYvbnVsbAorKysgYi9kb2MvZWZ1bi9hdHRhY2hfZXJxX2RlbW9uCkBAIC0wLDAgKzEsMzcgQEAKK1NZTk9QU0lTCisgICAgICAgIGludCBhdHRhY2hfZXJxX2RlbW9uKG9iamVjdCBvYiwgaW50IGRvX2Nsb3NlKQorICAgICAgICBpbnQgYXR0YWNoX2VycV9kZW1vbihzdHJpbmcgb2JuYW1lLCBpbnQgZG9fY2xvc2UpCisKK0RFU0NSSVBUSU9OCisgICAgICAgIFRoaXMgcHJpdmlsZWdlZCBlZnVuIGlzIHRvIHNldC9jaGFuZ2UgdGhlIGNvbm5lY3Rpb24gb2YgdGhlCisgICAgICAgIGRyaXZlciB0byB0aGUgZXh0ZXJuYWwgZXJxIGRlbW9uLCB0aHVzIGluIGVmZmVjdCBjaGFuZ2luZyB0aGUKKyAgICAgICAgZGVtb25zLgorCisgICAgICAgIFRoZSBjb25uZWN0aW9uIG9mIHRoZSBnaXZlbiBpbnRlcmFjdGl2ZSAnb2InamVjdCBpcyB0YWtlbiBhd2F5KCEpCisgICAgICAgIGZyb20gaXQgYW5kIHN0b3JlZCBhcyB0aGUgZXJxLWNvbm5lY3Rpb24uIFRoZSBvYmplY3QgaXRzZWxmIGlzCisgICAgICAgIHRoZW4gbm8gbG9uZ2VyIG5lZWRlZCwgYnV0IG1heSBzdGF5IGFsaXZlIC0gaXQgaXMganVzdCBhbm90aGVyCisgICAgICAgIG5vbi1pbnRlcmFjdGl2ZSBvYmplY3QgdGhlbi4KKworICAgICAgICBJbiB0aGUgc2Vjb25kIGZvcm0sIHRoZSBzdHJpbmcgd2lsbCBiZSBjb21iaW5lZCBhcyBzdWZmaXggdG8KKyAgICAgICAgdGhlIGZpbGVuYW1lIEVSUUZJTEU8b2JuYW1lPiwgd2hpY2ggaXMgdGhlbiB0aGUgYmluYXJ5IHRvIGJlCisgICAgICAgIGZvcmtlZCBvZmYgYXMgbmV3IGVycSBkZW1vbi4gVGhlIGNvbW11bmljYXRpb24gd2l0aCB0aGlzIGVycQorICAgICAgICB3aWxsIHRha2UgcGxhY2Ugb3ZlciB1bml4IGRvbWFpbiBzb2NrZXRzLiBFUlFGSUxFIGRlZmF1bHRzIHRvCisgICAgQklORElSL2VycSwgd2hlcmUgQklORElSIGlzIHRoZSBjb25maWd1cmF0aW9uIHZhbHVlIGZvciB0aGUKKyAgICBleGVjdXRhYmxlIGRpcmVjdG9yeS4KKworICAgICAgICBJZiB0aGVyZSBpcyBhbHJlYXkgYW4gZXJxIGRlbW9uIGNvbm5lY3RlZCB0byB0aGUgZHJpdmVyLCB0aGUKKyAgICAgICAgZnVuY3Rpb24gd2lsbCBmYWlsIHVubGVzcyAnZG9fY2xvc2UnIChkZWZhdWx0IDApIGlzIHNwZWNpZmllZAorICAgICAgICBhcyAxIChvciBhbnkgb3RoZXIgb2RkIGludGVnZXIpOiB0aGVuIHRoZSBvbGQgY29ubmVjdGlvbiB3aWxsCisgICAgICAgIGJlIGNsb3NlZCBiZWZvcmUgYXR0YWNoaW5nIHRoZSBuZXcuCisgICAgICAgIFRoZSBlZnVuIHJldHVybnMgMSBvbiBzdWNjZXNzLCBlbHNlIDAuCisKK0VYQU1QTEUKKyAgICAgICAgVG8gcmVzdGFydCB0aGUgKGRlZmF1bHQpIGVycSwgd3JpdGUgaW4KKyAgICAgICAgbWFzdGVyLmM6OnN0YWxlX2VycShjbG9zdXJlIGMpOgorICAgICAgICAgIGF0dGFjaF9lcnFfZGVtb24oIiIsIDApOworCitISVNUT1JZCisgICAgICAgIEludHJvZHVjZWQgaW4gMy4yLjFANjEuCisKK1NFRSBBTFNPCisgICAgICAgIHNlbmRfZXJxKEUpLCBlcnEoQykKZGlmZiAtLWdpdCBhL2RvYy9lZnVuL2Jhc2VvZiBiL2RvYy9lZnVuL2Jhc2VvZgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5kNjRjYzIwCi0tLSAvZGV2L251bGwKKysrIGIvZG9jL2VmdW4vYmFzZW9mCkBAIC0wLDAgKzEsMTYgQEAKK1NZTk9QU0lTCisgICAgICAgIGludCBiYXNlb2YgKHN0cnVjdCBiLCBzdHJ1Y3QgcykKKworREVTQ1JJUFRJT04KKyAgICAgICAgVGVzdCBpZiB0aGUgdHlwZSBvZiBzdHJ1Y3QgPGI+IGlzIGEgYmFzZSBvZiBzdHJ1Y3QgPHM+ICh0aGUKKyAgICAgICAgdmFsdWVzIG9mIDxiPiBhbmQgPHM+IGFyZSBpcnJlbGV2YW50KS4gUmVzdWx0cyBhcmU6CisgICAgICAgICAgMDogPGI+IGlzIG5vdCBhIGJhc2Ugb2YgPHM+LCBub3IgaXMgPGI+IG9mIGVxdWFsIHR5cGUgYXMgPHM+CisgICAgICAgICAgICAgICAodGhvdWdoIDxzPiBtaWdodCBiZSBhIGJhc2Ugb2YgPGI+KS4KKyAgICAgICAgICAxOiA8Yj4gaXMgYSB0cnVlIGJhc2Ugb2YgPHM+CisgICAgICAgICAgMjogPGI+IGFuZCA8cz4gYXJlIHRoZSBzYW1lIHN0cnVjdCB0eXBlCisKK0hJU1RPUlkKKyAgICAgICAgSW50cm9kdWN0ZWQgaW4gTERNdWQgMy4zLjM0NC4KKworU0VFIEFMU08KKyAgICAgICAgc3RydWN0cChFKSwgc3RydWN0cyhMUEMpCmRpZmYgLS1naXQgYS9kb2MvZWZ1bi9iaW5hcnlfbWVzc2FnZSBiL2RvYy9lZnVuL2JpbmFyeV9tZXNzYWdlCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjA4YmMzMjEKLS0tIC9kZXYvbnVsbAorKysgYi9kb2MvZWZ1bi9iaW5hcnlfbWVzc2FnZQpAQCAtMCwwICsxLDM2IEBACitHRVNDSFVFVFpUCitTWU5PUFNJUworICAgICAgICBpbnQgYmluYXJ5X21lc3NhZ2UoaW50ICp8c3RyaW5nIG1lc3NhZ2VzLCBpbnQgZmxhZ3MpOworCitCRVNDSFJFSUJVTkcKKyAgICAgICAgTGllc3QgZGVuIE91dHB1dCBhdXMgdW5kIHNlbmRldCBkaWVzZW4gZGlyZWt0IG1pdCB3cml0ZSgpIE9ITkUgSUFDCisgICAgICAgIFFVT1RJTkcuIERpZSBOYWNocmljaHQga2FubiBOdWxsZW4gZW50aGFsdGVuLCB3ZW5uIHNpZSBhbHMKKyAgICAgICAgaW50ICogYW5nZWdlYmVuIHNpbmQuIERpZSBOYWNocmljaHQgd2lyZCBhbiB0aGlzX29iamVjdCgpIGF1c2dlZ2ViZW4sCisgICAgICAgIGFiZXIgbnVyLCB3ZW5uIGRpZXNlcyBpbnRlcmFrdGl2IGlzdC4KKworICAgICAgICBEZXIgUnVlY2tnYWJld2VydCBpc3QgZGllIEFuemFobCB0YXRzYWVjaGxpY2ggZ2VkcnVja3RlciBaZWljaGVuLiBFaW5lCisgICAgICAgIGFsbGZhZWxsaWdlICJhbGxvd2VkIGNoYXJzZXQiIEVpbnN0ZWxsdW5nIHdpcmQgdWViZXJnYW5nZW4uCisKKyAgICAgICAgPGZsYWdzPiB3ZXJkZW4gYml0d2Vpc2UgaW50ZXJwcmV0aWVydCB1bmQga29lbm5lbiB1ZWJlciBkYXMgYmluYWVyZQorICAgICAgICBPZGVyIHZlcmJ1bmRlbiB3ZXJkZW4uCisKKyAgICAgICAgQml0IDAgKFdlcnQgMSk6IHdlbm4gZ2VzZXR6dCwgd2lyZCBhZGRfbWVzc2FnZSgpIGFuc3RlbGxlIHZvbgorICAgICAgICAgICAgd3JpdGUoKSB2ZXJ3ZW5kZXQuIFNvIG11c3MgZGVyIE91dHB1dCBuaWNodCB6dWVyc3QgYXVzZ2VsZXNlbgorICAgICAgICAgICAgd2VyZGVuLCBhbGxlcmRpbmdzIGVyZm9sZ3QgZGllIEF1c2dhYmUgbmljaHQgc29mb3J0LiBBdWNoIGthbm4KKyAgICAgICAgICAgIGRhbm4gZGllIEFuemFobCBlZmZla3RpdiB1ZWJlcnRyYWdlbmVyIFplaWNoZW4gbmljaHQgYmVzdGltbXQKKyAgICAgICAgICAgIHdlcmRlbiAtIGRlciBSdWVja2dhYmV3ZXJ0IGlzdCBuaWNodCBkZWZpbmllcnQuCisKKyAgICAgICAgQml0IDEgKFdlcnQgMik6IERlciBQdWZmZXIgd2lyZCBhdXNnZWxlc2VuLCBfbmFjaGRlbV8gZGllIE5hY2hyaWNodAorICAgICAgICAgICAgYW5nZWZ1ZWd0IHd1cmRlLiBJc3QgbnVyIGluIFZlcmJpbmR1bmcgbWl0IEJpdCAwIHNpbm52b2xsLgorCisgICAgICAgIERpZSBJZGVlIGhpbnRlciBkZW4gRmxhZ3MgaXN0LCBkYXNzIGRhcyBTZW5kZW4gdm9uIEtvbW1hbmRvY29kZXMKKyAgICAgICAgenVtIEJlaXNwaWVsIGZ1ZXIgRmFyYmVuIGFuIGRlbiB2b3JoYW5kZW5lbiBGaWx0ZXJuIGZ1ZXIgZXJsYXVidGUKKyAgICAgICAgWmVpY2hlbiB2b3JiZWlnZXNjaGxldXN0IHdlcmRlbiBtdXNzLCBqZWRvY2ggbmljaHQgd2ljaHRpZyBnZW51ZworICAgICAgICBpc3QsIHVtIGRpZSBWZXJzY2h3ZW5kdW5nIHZvbiBCYW5kYnJlaXRlIG1pdHRlbHMgZWluZXIKKyAgICAgICAgc3luY2hyb25lbiBVZWJlcnRyYWd1bmcgenUgcmVjaHRmZXJ0aWdlbi4KKworQUVOREVSVU5HRU4KKyAgICAgICAgRWluZ2VmdWVocnQgaW4gMy4yLjFANDAuCisKK1NJRUhFIEFVQ0gKKyAgICAgICAgc2V0X2Nvbm5lY3Rpb25fY2hhcnNldChFKQpkaWZmIC0tZ2l0IGEvZG9jL2VmdW4vYmluZF9sYW1iZGEgYi9kb2MvZWZ1bi9iaW5kX2xhbWJkYQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi42MDc1YTMzCi0tLSAvZGV2L251bGwKKysrIGIvZG9jL2VmdW4vYmluZF9sYW1iZGEKQEAgLTAsMCArMSwxNiBAQAorU1lOT1BTSVMKKyAgICAgICAgY2xvc3VyZSBiaW5kX2xhbWJkYShjbG9zdXJlLCBvYmplY3Qgb2IpCisKK0RFU0NSSVBUSU9OCisgICAgICAgIEJpbmRzIGFuIHVuYm91bmQgbGFtYmRhIGNsb3N1cmUgdG8gYW4gb2JqZWN0IGFuZCByZXR1cm4gaXQuCisgICAgICAgIFRoZSBlZnVuIGNhbiBhbHNvIGJlIHVzZWQgdG8gcmViaW5kIGFuIGVmdW4tLCBzaW11bC1lZnVuCisgICAgICAgIG9yIG9wZXJhdG9yIGNsb3N1cmUgdG8gYSBkaWZmZXJlbnQgb2JqZWN0LgorCisgICAgICAgIElmIHRoZSBvcHRpb25hbCBhcmd1bWVudCBvYiBpcyBub3QgdGhpc19vYmplY3QoKSwgdGhlIHByaXZpbGVnZQorICAgICAgICB2aW9sYXRpb24gKCJiaW5kX2xhbWJkYSIsIHRoaXNfb2JqZWN0KCksIG9iKSBvY2N1cnMuCisKK0hJU1RPUlkKKyAgICAgICAgSW50cm9kdWNlZCBpbiAzLjJAODIuCisKK1NFRSBBTFNPCisgICAgICAgIGxhbWJkYShFKSwgdW5ib3VuZF9sYW1iZGEoRSksIGFwcGx5KEUpLCBmdW5jYWxsKEUpLCBjbG9zdXJlcyhMUEMpCmRpZmYgLS1naXQgYS9kb2MvZWZ1bi9ibHVlcHJpbnQgYi9kb2MvZWZ1bi9ibHVlcHJpbnQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMWM3NzQ5NwotLS0gL2Rldi9udWxsCisrKyBiL2RvYy9lZnVuL2JsdWVwcmludApAQCAtMCwwICsxLDIzIEBACitWT1JMQUVVRklHCitTWU5PUFNJUworICAgICAgICBvYmplY3QgYmx1ZXByaW50KCkKKyAgICAgICAgb2JqZWN0IGJsdWVwcmludChzdHJpbmd8b2JqZWN0IG9iKTsKKworQkVTQ0hSRUlCVU5HCisgICAgICAgIERpZSBFZnVuIGxpZWZlcnQgZGVuIEJsdWVwcmludCBmdWVyIGRhcyBhbmdlZ2ViZW4gT2JqZWt0IDxvYj4gb2RlcgorICAgICAgICBmdWVyIHRoaXNfb2JqZWN0KCksIHdlbm4gbmljaHQgYW5nZWdlYmVuLgorCisgICAgICAgIFdlbm4gZGVyIEJsdWVwcmludCB6ZXJzdG9lcnQgd3VyZGUsIGxpZWZlcnQgZGllIEZ1bmt0aW9uIDAuIEZ1ZXIKKyAgICAgICAgT2JqZWt0ZSBtaXQgcmVwbGFjZV9wcm9ncmFtKCkgbGllZmVydCBkaWUgRnVua3Rpb24gZGVuIEJsdWVwcmludCBkZXMKKyAgICAgICAgZXJzZXR6ZW5kZW4gUHJvZ3JhbXMuCisKK0JFSVNQSUVMCisgICAgICAgIGJsdWVwcmludCgiL29iai9kaW5nIik7ICAgICAgICAgICAgICAgICAtPiBsaWVmZXJ0IC9vYmovZGluZworICAgICAgICBibHVlcHJpbnQoZmluZF9vYmplY3QoIi9vYmovZGluZyIpKTsgICAgLT4gbGllZmVydCAvb2JqL2RpbmcKKyAgICAgICAgYmx1ZXByaW50KGNsb25lX29iamVjdCgiL29iai9kaW5nIikpOyAgIC0+IGxpZWZlcnQgL29iai9kaW5nCisKK0FFTkRFUlVOR0VOCisgICAgICAgIEVpbmdlZnVlaHJ0IGluIExETXVkIDMuMi45LgorCitTSUVIRSBBVUNICisgICAgICAgIGNsb25lcyhFKSwgY2xvbmVfb2JqZWN0KEUpCmRpZmYgLS1naXQgYS9kb2MvZWZ1bi9icmVha19wb2ludCBiL2RvYy9lZnVuL2JyZWFrX3BvaW50Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjU4NDQ1M2UKLS0tIC9kZXYvbnVsbAorKysgYi9kb2MvZWZ1bi9icmVha19wb2ludApAQCAtMCwwICsxLDExIEBACitPUFRJT05BTAorU1lOT1BTSVMKKyAgICAgICAgdm9pZCBicmVha19wb2ludCgpCisKK0RFU0NSSVBUSU9OCisgICAgICAgIFRoaXMgZnVuY3Rpb24gaXMgZm9yIHN5c3RlbSBpbnRlcm5hbCB1c2UgYW5kIHNob3VsZCBuZXZlciBiZSBjYWxsZWQgYnkKKyAgICAgICAgdXNlciBvYmplY3RzLiBJdCBpcyBzdXBwb3NlZCB0byBjaGVjayB0aGUgc3RhY2sgaW50ZWdyaXR5IGFuZCBhYm9ydHMKKyAgICAgICAgdGhlIGRyaXZlciB3aGVuIGl0IGRldGVjdHMgY29ycnVwdGlvbi4KKworU0VFIEFMU08KKyAgICAgICAgc2h1dGRvd24oRSksIHN3YXAoRSkKZGlmZiAtLWdpdCBhL2RvYy9lZnVuL2NhbGxfZGlyZWN0IGIvZG9jL2VmdW4vY2FsbF9kaXJlY3QKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOTRhYjAyOAotLS0gL2Rldi9udWxsCisrKyBiL2RvYy9lZnVuL2NhbGxfZGlyZWN0CkBAIC0wLDAgKzEsNzUgQEAKK1NZTk9QU0lTCisgICAgICAgIHVua25vd24gY2FsbF9kaXJlY3QgKG9iamVjdCBvYiwgc3RyaW5nIGZ1biwgbWl4ZWQgYXJnLCAuLi4pCisgICAgICAgIHVua25vd24gY2FsbF9kaXJlY3QgKG9iamVjdCAqb2IsIHN0cmluZyBmdW4sIG1peGVkIGFyZywgLi4uKQorCitERVNDUklQVElPTgorICAgICAgICBDYWxsIGEgbWVtYmVyIGZ1bmN0aW9uIDxmdW4+IGluIGFub3RoZXIgb2JqZWN0IDxvYj4gd2l0aCBhbgorICAgICAgICB0aGUgYXJndW1lbnQocykgPGFyZy4uLj4uIFJlc3VsdCBpcyB0aGUgdmFsdWUgcmV0dXJuZWQgZnJvbQorICAgICAgICB0aGUgY2FsbGVkIGZ1bmN0aW9uIChvciAwIGZvciBub24tZXhpc3Rpbmcgb3Igdm9pZCBmdW5jdGlvbnMpLgorCisgICAgICAgIFRoaXMgZWZ1biBpcyBhIHR3aW4gdG8gY2FsbF9vdGhlcigpLCB3aXRoIHRoZSBkaWZmZXJlbmNlCisgICAgICAgIGJlaW5nIHRoYXQgY2FsbF9kaXJlY3QoKSBuZXZlciBjYWxscyBhIGRlZmF1bHQgbWV0aG9kLgorCisgICAgICAgIE9wdGlvbmFsbHkgdGhlIGRyaXZlciBjYW4gYmUgY29uZmlndXJlZCB0byBhY2NlcHQgYW4gYXJyYXkgb2YKKyAgICAgICAgb2JqZWN0cyBhcyA8b2I+OiB0aGUgZnVuY3Rpb24gaXMgY2FsbGVkIHdpdGggdGhlIHNhbWUKKyAgICAgICAgYXJndW1lbnRzIGluIGFsbCB0aGUgZ2l2ZW4gb2JqZWN0cy4gIFRoZSBzaW5nbGUgcmVzdWx0cyBhcmUKKyAgICAgICAgY29sbGVjdGVkIGluIGFuIGFycmF5IGFuZCB5aWVsZCB0aGUgZmluYWwgcmVzdWx0LiAgQXJyYXkKKyAgICAgICAgZWxlbWVudHMgY2FuIGJlIG9iamVjdHMgb3IgdGhlIG5hbWVzIG9mIGV4aXN0aW5nIG9iamVjdHM7CisgICAgICAgIGRlc3RydWN0ZWQgb2JqZWN0cyBhbmQgMHMgd2lsbCB5aWVsZCBhICcwJyBhcyByZXN1bHQsIGJ1dAorICAgICAgICBkb24ndCBjYXVzZSBhbiBlcnJvci4KKworICAgICAgICBJZiB0aGUgYXJyYXktY2FsbGluZyBtb2RlIGlzIGF2YWlsYWJsZSwgdGhlIG1hY3JvCisgICAgICAgIF9fTFBDX0FSUkFZX0NBTExTX18gaXMgZGVmaW5lZC4KKworICAgICAgICBUaGUgb2JqZWN0KHMpIGNhbiBiZSBnaXZlbiBkaXJlY3RseSBvciB2aWEgYSBzdHJpbmcgKGkuZS4gaXRzCisgICAgICAgIG9iamVjdF9uYW1lKS4gSWYgaXQgaXMgZ2l2ZW4gYnkgYSBzdHJpbmcgYW5kIHRoZSBvYmplY3QgZG9lcyBub3QKKyAgICAgICAgZXhpc3QgeWV0LCBpdCB3aWxsIGJlIGxvYWRlZC4KKworICAgICAgICBvYi0+ZnVuKGFyZ3MpIGFuZCAib2JfbmFtZSItPmZ1bihhcmdzKSBpcyBlcXVpdmFsZW50IHRvCisgICAgICAgIGNhbGxfb3RoZXIob2IsICJmdW4iLCBhcmdzKS4gTm93YWRheXMgdGhlIG9iX25hbWUgc3RyaW5nIGNhbgorICAgICAgICBhbHNvIGJlIGEgdmFyaWFibGUuCisKKyAgICAgICAgb2ItPmZ1bihhcmdzKSBhbmQgb2ItPiJmdW4iKGFyZ3MpIGFyZSBlcXVpdmFsZW50IHRvCisgICAgICAgIGNhbGxfb3RoZXIob2IsICJmdW4iLCBhcmdzKS4gb2ItPihmdW4pKGFyZ3MpIGFyZSBlcXVpdmFsZW50CisgICAgICAgIHRvIGNhbGxfb3RoZXIob2IsIGZ1biwgYXJncykgd2hlcmUgZnVuIGlzIGEgcnVudGltZSBleHByZXNzaW9uCisgICAgICAgIHJldHVybmluZyB0aGUgZnVuY3Rpb24gbmFtZS4KKworICAgICAgICBJZiBvYjo6ZnVuIGRvZXMgbm90IGRlZmluZSBhIHB1YmxpY2x5IGFjY2Vzc2libGUgZnVuY3Rpb24sIHRoZQorICAgICAgICBjYWxsX290aGVyKCkgd2lsbCByZXR1cm4gMCwgd2hpY2ggaXMgaW5kaXN0aW5ndWlzaGFibGUgZnJvbQorICAgICAgICBhIGZ1bmN0aW9uIHJldHVybmluZyAwLgorCisgICAgICAgICJwdWJsaWNseSBhY2Nlc3NpYmxlIiBtZWFucyAicHVibGljIiB3aGVuIGNhbGxpbmcgb3RoZXIgb2JqZWN0cywKKyAgICAgICAgYW5kICJwdWJsaWMiIG9yICJzdGF0aWMiIHdoZW4gY2FsbGluZyB0aGlzX29iamVjdCgpLiAicHJpdmF0ZSIKKyAgICAgICAgYW5kICJwcm90ZWN0ZWQiIGZ1bmN0aW9uIGNhbiBuZXZlciBiZSBjYWxsZWQgd2l0aCBjYWxsX290aGVyKCkuCisKKyAgICAgICAgVGhlIHJldHVybiB0eXBlIG9mIGNhbGxfb3RoZXIoKSBpcyAnYW55JyBiZSBkZWZhdWx0LiBIb3dldmVyLAorICAgICAgICBpZiB5b3VyIExQQyBjb2RlIHVzZXMgI3ByYWdtYSBzdHJpY3RfdHlwZXMsIHRoZSByZXR1cm4gdHlwZSBpcworICAgICAgICAndW5rbm93bicsIGFuZCB0aGUgcmVzdWx0IG9mIGNhbGxfb3RoZXIoKSBtdXN0IGJlIGNhc3RlZCB0bworICAgICAgICB0aGUgYXBwcm9wcmlhdGUgdHlwZSBiZWZvcmUgeW91IGNhbiB1c2UgaXQgZm9yIGFueXRoaW5nLgorCitFWEFNUExFUworICAgICAgICAvLyBBbGwgdGhlIGZvbGxvd2luZyBzdGF0ZW1lbnRzIGNhbGwgdGhlIGxmdW4gUXVlcnlQcm9wKCkKKyAgICAgICAgLy8gaW4gdGhlIGN1cnJlbnQgcGxheWVyIHdpdGggdGhlIGFyZ3VtZW50IFBfU0hPUlQuCisgICAgICAgIHN0cmluZyBzdHIsIGZ1bjsKKworICAgICAgICBzdHIgPSAoc3RyaW5nKWNhbGxfZGlyZWN0KHRoaXNfcGxheWVyKCksICJRdWVyeVByb3AiLCBQX1NIT1JUKTsKKyAgICAgICAgZnVuID0gIlF1ZXJ5UHJvcCI7CisgICAgICAgIHN0ciA9IChzdHJpbmcpY2FsbF9kaXJlY3QodGhpc19wbGF5ZXIoKSwgZnVuLCBQX1NIT1JUKTsKKworICAgICAgICBZb3UgaGF2ZSB0byBkbyBleHBsaWNpdCB0eXBlIGNhc3RpbmcgYmVjYXVzZSBvZiB0aGUgdW5rbm93bgorICAgICAgICByZXR1cm4gdHlwZSwgaWYgeW91IGhhdmUgc2V0ICNwcmFnbWEgc3RyaWN0X3R5cGVzLgorCisgICAgICAgIC8vIFRoaXMgc3RhdGVtZW50IGNhbGxzIHRoZSBsZnVuIHNob3J0KCkgaW4gYWxsIGludGVyYWN0aXZlIHVzZXJzCisgICAgICAgIC8vIGFuZCBzdG9yZXMgdGhlIGNvbGxlY3RlZCByZXN1bHRzIGluIGEgdmFyaWFibGUuCisgICAgICAgIHN0cmluZyAqIHM7CisKKyAgICAgICAgcyA9IChzdHJpbmcgKiljYWxsX2RpcmVjdCh1c2VycygpLCAic2hvcnQiKTsKKworCitISVNUT1JZCisgICAgICAgIEludHJvZHVjZWQgaW4gTERNdWQgMy4zLjExMyB3aXRoIHRoZSBIX0RFRkFVTFRfTUVUSE9EIGhvb2suCisgICAgICAgIExETXVkIDMuMi4xMCBtYWRlIHRoZSBjYWxsIG9uIGFycmF5cyBvZiBvYmplY3RzIGNvbmZpZ3VyYWJsZS4KKworU0VFIEFMU08KKyAgICAgICAgY2FsbF9vdGhlcihFKSwgY2FsbF9kaXJlY3RfcmVzb2x2ZWQoRSksIGNyZWF0ZShBKSwgcHJhZ21hKExQQyksCisgICAgICAgIGV4dGVybl9jYWxsKEUpLCBmdW5jdGlvbl9leGlzdHMoRSksIGZ1bmN0aW9ucyhMUEMpCmRpZmYgLS1naXQgYS9kb2MvZWZ1bi9jYWxsX2RpcmVjdF9yZXNvbHZlZCBiL2RvYy9lZnVuL2NhbGxfZGlyZWN0X3Jlc29sdmVkCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmUyMjc5MzQKLS0tIC9kZXYvbnVsbAorKysgYi9kb2MvZWZ1bi9jYWxsX2RpcmVjdF9yZXNvbHZlZApAQCAtMCwwICsxLDI1IEBACitTWU5PUFNJUworICAgICAgICBpbnQgY2FsbF9kaXJlY3RfcmVzb2x2ZWQobWl4ZWQgcmVzdWx0LCBvYmplY3Qgb2IsIHN0cmluZyBmdW5jLCAuLi4pCisKK0RFU0NSSVBUSU9OCisgICAgICAgIFNpbWlsYXIgdG8gY2FsbF9kaXJlY3QoKS4gSWYgb2ItPmZ1bmMoKSBpcyBkZWZpbmVkIGFuZCBwdWJsaWNseQorICAgICAgICBhY2Nlc3NpYmxlLCBhbnkgb2YgdGhlIG9wdGlvbmFsIGV4dHJhIGFyZ3VtZW50cyBhcmUgcGFzc2VkIHRvCisgICAgICAgIG9iLT5mdW5jKC4uLikuIFRoZSByZXN1bHQgb2YgdGhhdCBmdW5jdGlvbiBjYWxsIGlzIHN0b3JlZCBpbgorICAgICAgICByZXN1bHQsIHdoaWNoIG11c3QgYmUgcGFzc2VkIGJ5IHJlZmVyZW5jZS4KKworICAgICAgICBUaGlzIGVmdW4gaXMgYSB0d2luIHRvIGNhbGxfcmVzb2x2ZWQoKSwgd2l0aCB0aGUgZGlmZmVyZW5jZQorICAgICAgICBiZWluZyB0aGF0IGNhbGxfZGlyZWN0X3Jlc29sdmVkKCkgbmV2ZXIgY2FsbHMgYSBkZWZhdWx0IG1ldGhvZC4KKworICAgICAgICBUaGUgZWZ1biByZXR1cm5zIDEgaWYgdGhlIGZ1bmN0aW9uIGNvdWxkIGJlIGNhbGxlZC4KKyAgICAgICAgSWYgb2I6OmZ1biBkb2VzIG5vdCBkZWZpbmUgYSBwdWJsaWNseSBhY2Nlc3NpYmxlIGZ1bmN0aW9uLCB0aGUKKyAgICAgICAgZWZ1biB3aWxsIHJldHVybiAwLgorCisgICAgICAgIG9iIGNhbiBhbHNvIGJlIGFuIG9iamVjdF9uYW1lLiBJZiBhIHN0cmluZyBpcyBwYXNzZWQgZm9yIG9iLCBhbmQKKyAgICAgICAgbm8gb2JqZWN0IHdpdGggdGhhdCBuYW1lIGRvZXMgZXhpc3QsIGFuIGVycm9yIG9jY3Vycy4KKworSElTVE9SWQorICAgICAgICBJbnRyb2R1Y2VkIGluIExETXVkIDMuMy4xMTMgd2l0aCB0aGUgSF9ERUZBVUxUX01FVEhPRCBob29rLgorCitTRUUgQUxTTworICAgICAgICBjYWxsX2RpcmVjdChFKSwgY2FsbF9yZXNvbHZlZChFKSwgZnVuY3Rpb25fZXhpc3RzKEUpLAorICAgICAgICBmaW5kX29iamVjdChFKQpkaWZmIC0tZ2l0IGEvZG9jL2VmdW4vY2FsbF9vdGhlciBiL2RvYy9lZnVuL2NhbGxfb3RoZXIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYjQ4N2Y0ZAotLS0gL2Rldi9udWxsCisrKyBiL2RvYy9lZnVuL2NhbGxfb3RoZXIKQEAgLTAsMCArMSw5NCBAQAorU1lOT1BTSVMKKyAgICAgICAgdW5rbm93biBjYWxsX290aGVyKG9iamVjdCBvYiwgc3RyaW5nIGZ1biwgbWl4ZWQgYXJnLCAuLi4pOworICAgICAgICB1bmtub3duIGNhbGxfb3RoZXIob2JqZWN0ICpvYiwgc3RyaW5nIGZ1biwgbWl4ZWQgYXJnLCAuLi4pOworCisgICAgICAgIG9iLT5mdW4obWl4ZWQgYXJnLCAuLi4pOworICAgICAgICBvYi0+ImZ1biIobWl4ZWQgYXJnLCAuLi4pOworICAgICAgICBvYi0+KGZ1bikobWl4ZWQgYXJnLCAuLi4pOworCitCRVNDSFJFSUJVTkcKKyAgICAgICAgUnVmdCBkaWUgaW4gZWluZW0gYW5kZXJlbiBPYmpla3QgPG9iPiBkaWUgRnVua3Rpb24gPGZ1bj4gbWl0IGRlbgorICAgICAgICBBcmd1bWVudGVuIDxhcmcuLi4+IGF1ZiB1bmQgZ2lidCBkZW4gV2VydCB6dXJ1ZWNrLCBkZXIgdm9uIGRlcgorICAgICAgICBGdW5rdGlvbiA8ZnVuPiBnZWxpZWZlcnQgd2lyZCAob2RlciAwIGZ1ZXIgbmljaHQgZXhpc3RpZXJlbmRlIG9kZXIKKyAgICAgICAgYWxzIHZvaWQgZGVrbGFyaWVydGUgIEZ1bmt0aW9uZW4pLgorCisgICAgICAgIE9wdGlvbmFsIGthbm4gZGVyIERyaXZlciBzbyBrb25maWd1ZXJpZXJ0IHdlcmRlbiwgZGFzcyBhdWNoIGVpbiBBcnJheQorICAgICAgICB2b24gT2JqZWt0ZW4gKjxvYj4gYWt6ZXB0aWVydCB3aXJkLiBEaWUgRnVua3Rpb24gPGZ1bj4gd2lyZCBkYW5uIGZ1ZXIKKyAgICAgICAgamVkZXMgT2JqZWt0IDxvYj4gaW0gQXJyYXkgbWl0IGRlbiBBcmd1bWVudGVuIDxhcmcuLi4+IGF1ZmdlcnVmZW4uCisgICAgICAgIERpZSBlaW56ZWxuZW4gUmVzdWx0YXRlIHdlcmRlbiBpbiBlaW5lbSBBcnJheSB6dXNhbW1lbiBnZWZhc3N0IHVuZAorICAgICAgICBkaWVzZXMgQXJyYXkgZGFubiBhbHMgRW5kcmVzdWx0YXQgdm9uIGNhbGxfb3RoZXIoKSB6dXJ1ZWNrIGdlZ2ViZW4uCisgICAgICAgIERpZSBFbGVtZW50ZSB2b24gKjxvYj4ga29lbm5lbiBPYmpla3RlIG9kZXIgTmFtZW4gdm9uIE9iamVrdGVuIHNlaW4uCisgICAgICAgIFplcnN0b2VydGUgT2JqZWt0ZSB1bmQgMCBhbHMgRWxlbWVudCBnZWJlbiBlaW5lIDAgenVydWVjaywgZnVlaHJlbgorICAgICAgICBhYmVyIG5pY2h0IHp1IGVpbmVtIEZlaGxlci4KKyAgICAgICAgY2FsbF9vdGhlcigpIGF1ZiBBcnJheXMgdm9uIE9iamVrdGVuIGlzdCBpbSBNRyBha3RpdmllcnQsIHdlbGNoZXMKKyAgICAgICAgZHVyY2ggZGFzIERlZmluZSBfX0xQQ19BUlJBWV9DQUxMU19fIGFuZ2V6ZWlndCB3aXJkLgorCisgICAgICAgIERhcyBPYmpla3QgKGJ6dy4gZGllIE9iamVrdGUpIGthbm4gZGlyZWt0IG9kZXIgdWViZXIgZWluZW4gU3RyaW5nCisgICAgICAgIChkLmguIGRlbiBPYmpla3RuYW1lbikgYW5nZWdlYmVuIHdlcmRlbi4gV2VubiBlaW4gU3RyaW5nIGFuZ2VnZWJlbgorICAgICAgICB3aXJkIHVuZCBkYXMgT2JqZWt0IG5vY2ggbmljaHQgZXhpc3RpZXJ0LCB3aXJkIGVzIGdlbGFkZW4uCisKKyAgICAgICAgb2ItPmZ1bihhcmdzKSB1bmQgIm9iX25hbWUiLT5mdW4oYXJncykgc2luZCBhZXF1aXZhbGVudCB6dQorICAgICAgICBjYWxsX290aGVyKG9iLCAiZnVuIiwgYXJncykuIEhldXR6dXRhZ2Uga2FubiAib2JfbmFtZSIgYXVjaCBlaW5lCisgICAgICAgIFZhcmlhYmxlIHNlaW4uIG9iLT4oZnVuKShhcmdzKSBpc3QgYWVxdWl2YWxlbnQgenUKKyAgICAgICAgY2FsbF9vdGhlcihvYiwgZnVuLCBhcmdzKSwgd29iZWkgPGZ1bj4gZWluIFJ1bnRpbWUgQXVzZHJ1Y2sgaXN0LAorICAgICAgICBkZXIgZGVuIEZ1bmt0aW9uc25hbWVuIGxpZWZlcnQuCisKKyAgICAgICAgV2VubiBkYXMgT2JqZWt0IDxvYj4ga2VpbmUgb2VmZmVudGxpY2hlIEZ1bmt0aW9uIG1pdCBkZW0gTmFtZW4gPGZ1bj4KKyAgICAgICAgZW50aGFlbHQsIGdpYnQgY2FsbF9vdGhlcigpIGRlbiBXZXJ0IDAgenVydWVjay4gRGllcyBpc3QgbmljaHQKKyAgICAgICAgdW50ZXJzY2hlaWRiYXIgdm9uIGVpbmVyIEZ1bmt0aW9uIDxmdW4+LCBkaWUgMCB6dXJ1ZWNrIGxpZWZlcnQuCisgICAgICAgIE9lZmZlbnRsaWNoIGJlZGV1dGV0ICJwdWJsaWMiLCB3ZW5uIGFuZGVyZSBPYmpla3RlIGF1ZmdlcnVmZW4KKyAgICAgICAgd2VyZGVuIHVuZCAicHVibGljIiBvZGVyICJzdGF0aWMiLCB3ZW5uIGRlciBBdWZydWYgYW4gdGhpc19vYmplY3QoKQorICAgICAgICBlcmdlaHQuIEZ1bmt0aW9uZW4sIGRpZSAicHJpdmF0ZSIgb2RlciAicHJvdGVjdGVkIiBkZWZpbmllcnQgc2luZCwKKyAgICAgICAga29lbm5lbiBuaWVtYWxzIHZvbiBjYWxsX290aGVyKCkgYXVmZ2VydWZlbiB3ZXJkZW4uCisKKyAgICAgICAgRGVyIFJ1ZWNrZ2FiZXdlcnQgdm9uIGNhbGxfb3RoZXIoKSBpc3Qgc3RhbmRhcmRtYWVzc2lnICdhbnknLiBGYWxscworICAgICAgICBhYmVyICNwcmFnbWEgc3RyaWN0X3R5cGVzIGdlc2V0enQgaXN0LCBpc3QgZGVyIFJ1ZWNrZ2FiZXdlcnQKKyAgICAgICAgJ3Vua25vd24nLCB1bmQgZGFzIFJlc3VsdGF0IGRlcyBjYWxsX290aGVyKCkgbXVzcyB6dWVyc3QgYXVmIGVpbmVuCisgICAgICAgIHp1dHJlZmZlbmRlbiBWYXJpYWJsZW50eXAgZ2VjYXN0ZXQgd2VyZGVuLCBiZXZvciBtYW4gZXMgZnVlciBldHdhcworICAgICAgICB2ZXJ3ZW5kZW4ga2Fubi4KKworQkVJU1BJRUxFCisgICAgICAgIERpZSBuYWNoZm9sZ2VuZGVuIEJlaXNwaWVsZSBydWZlbiBhbGxlIGRpZSBGdW5rdGlvbiAiUXVlcnlQcm9wIiBhdWYKKyAgICAgICAgbWl0IGRlbSBBcmd1bWVudCBQX1NIT1JULgorCisgICAgICAgICAgICBzdHJpbmcgc3RyLCBmdW47CisgICAgICAgICAgICBzdHIgPSAoc3RyaW5nKWNhbGxfb3RoZXIodGhpc19wbGF5ZXIoKSwgIlF1ZXJ5UHJvcCIsIFBfU0hPUlQpOworICAgICAgICAgICAgZnVuID0gIlF1ZXJ5UHJvcCI7CisgICAgICAgICAgICBzdHIgPSAoc3RyaW5nKWNhbGxfb3RoZXIodGhpc19wbGF5ZXIoKSwgZnVuLCBQX1NIT1JUKTsKKworICAgICAgICAgICAgc3RyID0gKHN0cmluZyl0aGlzX3BsYXllcigpLT5RdWVyeVByb3AoUF9TSE9SVCk7CisgICAgICAgICAgICBzdHIgPSAoc3RyaW5nKXRoaXNfcGxheWVyKCktPiJRdWVyeVByb3AiKFBfU0hPUlQpOworICAgICAgICAgICAgZnVuID0gIlF1ZXJ5UHJvcCI7CisgICAgICAgICAgICBzdHIgPSAoc3RyaW5nKXRoaXNfcGxheWVyKCktPihmdW4pKFBfU0hPUlQpOworCisgICAgICAgIFNvbGFuZ2UgI3ByYWdtYSBzdHJpY3RfdHlwZXMgZ2VzZXR6dCBpc3QsIG11c3MgbWFuIGRhcyBSZXN1bHRhdCB2b24KKyAgICAgICAgY2FsbF9vdGhlcigpIGV4cGxpeml0IGF1ZiBlaW5lbiBwYXNzZW5kZW4gVHlwIGNhc3Rlbiwgd2VpbAorICAgICAgICBjYWxsX290aGVyKCkgdW5rbm93biBsaWVmZXJ0LgorCisgICAgICAgIERhcyBmb2xnZW5kZSBTdGF0ZW1lbnQgcnVmdCBkaWUgbGZ1biBzaG9ydCgpIGluIGFsbGVuIGFrdGl2ZW4KKyAgICAgICAgQmVudXR6ZXJuIGF1ZiB1bmQgc3BlaWNoZXJ0IGRhcyBnZXNhbW1lbHRlIFJlc3VsdGF0IGluIGVpbmVyCisgICAgICAgIFZhcmlhYmxlbjoKKworICAgICAgICAgICAgc3RyaW5nICogczsKKyAgICAgICAgICAgIHMgPSAoc3RyaW5nICopdXNlcnMoKS0+c2hvcnQoKTsKKworICAgICAgICBPYmpla3RlIGxhZGVuIChvYnNvbGV0KToKKyAgICAgICAgICAgIENvbXBhdDogY2FsbF9vdGhlcigiL3VzZXJzL2x1c2VyL3RoaW5nIiwgIj8/PyIsIDApOworCisgICAgICAgIERhcyBzaWVodCBldHdhcyBtZXJrd3VlcmRpZyBhdXMsIHd1cmRlIGFiZXIgb2Z0IHZlcndlbmRldCwgdW0gZWluZmFjaAorICAgICAgICBlaW4gT2JqZWt0IHp1IGxhZGVuLiBEYXp1IHd1cmRlIGRpZSAobmljaHQgZXhpc3RpZXJlbmRlKSBGdW5rdGlvbgorICAgICAgICAiPz8/IiBpbSBPYmpla3QgYXVmZ2VydWZlbi4gR2x1ZWNrbGljaGVyd2Vpc2UgZ2lidCBlcyBoZXV0ZSB6dQorICAgICAgICBkaWVzZW0gWndlY2sgZGllIEVmdW4gbG9hZF9vYmplY3QoKSwgYWxzbyBiaXR0ZSBuaWNodCBtZWhyIHZlcndlbmRlbi4KKworQUVOREVSVU5HRU4KKyAgICAgICAgSW4gTERNdWQgMy4yLjggd3VyZGVuIGRpZSBmb2xnZW5kZW4gVmVyYmVzc2VydW5nZW4gZWluZ2VmdWVocnQ6CisgICAgICAgICAgLSBkaWUgRm9ybWVuIHgtPiJ5IigpIHVuZCB4LT4oeSkoKSB3ZXJkZW4gZXJrYW5udDsKKyAgICAgICAgICAtIGRpZSBGb3JtIHgtPnkoKSBrb2xsaWRpZXJ0IG5pY2h0IG1laHIgbWl0IGVpbmVyIGxva2FsZW4gVmFyaWFibGVuLAorICAgICAgICAgICAgZGllIGF1Y2ggInkiIGhlaXNzdC4KKyAgICAgICAgICAtIGVpbmUgc2ltdWxfZWZ1biBjYWxsX290aGVyKCkgZXJ3aXNjaHQgYXVjaCBBdWZydWZlIGRlciBGb3JtIC0+KCkuCisgICAgICAgICAgLSBjYWxsX290aGVyIGthbm4gYXVjaCBhdWYgQXJyYXlzIHZvbiBPYmpla3RlbiBhbmdld2FuZHQgd2VyZGVuLgorICAgICAgICBMRE11ZCAzLjIuMTAgbWFjaHRlIGRlbiBBdWZydWYgdm9uIE9iamVrdGFycmF5cyBrb25maWd1cmllcmJhci4KKworU0lFSEUgQVVDSAorICAgICAgICBmdW5jdGlvbl9leGlzdHMoRSksIGNhbGxfcmVzb2x2ZWQoRSksIGNyZWF0ZShBKSwgcHJhZ21hKExQQyksCisgICAgICAgIGV4dGVybl9jYWxsKEUpLCBmdW5jdGlvbnMoTFBDKQpkaWZmIC0tZ2l0IGEvZG9jL2VmdW4vY2FsbF9vdXQgYi9kb2MvZWZ1bi9jYWxsX291dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5kYmEyOGIzCi0tLSAvZGV2L251bGwKKysrIGIvZG9jL2VmdW4vY2FsbF9vdXQKQEAgLTAsMCArMSw1NCBAQAorU1lOT1BTSVMKKyAgICAgICAgdm9pZCBjYWxsX291dChzdHJpbmcgZnVuLCBpbnQgZGVsYXksIG1peGVkIGFyZywgLi4uKQorICAgICAgICB2b2lkIGNhbGxfb3V0KGNsb3N1cmUgY2wsIGludCBkZWxheSwgbWl4ZWQgYXJnLCAuLi4pCisKK0RFU0NSSVBUSU9OCisgICAgICAgIFNldCB1cCBhIGNhbGwgdG8gZnVuY3Rpb24gZnVuIGluIHRoZSBjdXJyZW50IG9iamVjdCwgb3IgdG8KKyAgICAgICAgY2xvc3VyZSBjbC4gVGhlIGNhbGwgd2lsbCB0YWtlIHBsYWNlIGluIGRlbGF5IHNlY29uZHMsIHdpdGggdGhlCisgICAgICAgIHJlbWFpbmluZyBhcmd1bWVudCBsaXN0IHByb3ZpZGVkLiBkZWxheSBjYW4gYmUgMCwgYnV0IGJlIGNhcmVmdWwhCisKKyAgICAgICAgY2FsbF9vdXQoKSBzYXZlcyBhbmQgcmVzdG9yZXMgdGhlIGN1cnJlbnQgdXNlci4gSXQgaXMgbm93CisgICAgICAgIHBvc3NpYmxlIHRvIHVzZSBzYXkoKSBvciB3cml0ZSgpIHdoaWNoIHJlbHkgb24gYSBjdXJyZW50CisgICAgICAgIHVzZXIgdG8gYmUgc29tZXRoaW5nIHVzZWZ1bC4KKworICAgICAgICBjYWxsX291dCgpIGNhbiBvbmx5IGNhbGwgZnVuY3Rpb25zIHdoaWNoIGFyZSBwdWJsaWNseSBhY2Nlc3NpYmxlLAorICAgICAgICBpLmUuICJwdWJsaWMiIGFuZCAic3RhdGljIiBmdW5jdGlvbnMuICJwcml2YXRlIiBhbmQgInByb3RlY3RlZCIKKyAgICAgICAgZnVuY3Rpb25zIGNhbid0IGJlIGNhbGxlZC4KKworICAgICAgICBUaGUgZXhlY3V0aW9uIG9mIHRoZSBjYWxsX291dCgpcyBpbXBsaWVzIGEgc2ltcGxlIChub3QKKyAgICAgICAgZXhoYXVzdGl2ZSkgbWVhc3VyZSBhZ2FpbnN0IHJhYmJpdHM6IHRoZSBldmFsdWF0aW9uIGNvc3RzIG9mCisgICAgICAgIHRob3NlIGNhbGxfb3V0cygpIGV4ZWN1dGluZyBhdCB0aGUgc2FtZSB0aW1lIGFyZSBzdW1tZWQgdXAgb24KKyAgICAgICAgYSBwZXItVUlEIGJhc2UuIElmIHRoZSBzdW1tZWQtdXAgY29zdHMgZXhjZWVkIHRoZSBnaXZlbiBtYXhpbXVtLAorICAgICAgICBhICd0b28gbG9uZyBldmFsdWF0aW9uJyBlcnJvciB3aWxsIG9jY3VyIGFuZCBhbnkgcmVtYWluaW5nCisgICAgICAgIGNhbGxfb3V0cygpIG9mIHRoaXMgdXNlciBzY2hlZHVsZWQgZm9yIHRoZSBzYW1lIHRpbWUgYXJlCisgICAgICAgIGRpc2NhcmRlZC4KKworICAgICAgICBDYWxsb3V0cyBhcmUgZXhlY3V0ZWQgZXZlcnkgMnMsIHRoZXJlZm9yZSB5b3VyIGRlbGF5IG1heSBiZSBiaWdnZXIKKyAgICAgICAgdGhhbiB0aGUgeW91IHNwZWNpZmllZC4gSW4gZmFjdCwgYSBDYWxsb3V0IHdpdGggZGVsYXk9PTAgaXMKKyAgICAgICAgZXhlY3V0ZWQgd2l0aGluIDJzIGZyb20gdGhlIGZ1bmN0aW9uIGNhbGwgdG8gY2FsbF9vdXQoKS4gCisKK1dBUk5JTkcKKyAgICAgICAgUGxlYXNlIG5ldmVyIHVzZSBjYWxsX291dCguLi4sMCkgaW4gcmVjdXJzaXZlIENhbGxvdXRzIGFuZCBiZSBhdCBsZWFzdAorICAgICAgICB2ZXJ5IGNhcmVmdWwgaW4gb3RoZXIgY2FzZXMuIFRoYXQgQ2FsbG91dCB3b3VsZCBiZSBleGVjdXRlZCBkaXJlY3RseQorICAgICAgICBhZnRlciB5b3VyIGN1cnJlbnQgZnVuY3Rpb24gYW5kIHlvdSByZWFsbHkgZ2V0IDAgZGVsYXkuCisKK0VYQU1QTEUKKyAgICAgICAgY2FsbF9vdXQoIlJlZnJlc2hNZSIsIDEwKTsKKworICAgICAgICBUaGlzIHdpbGwgY2FsbCB0aGUgZnVuY3Rpb24gUmVmcmVzaE1lKCkgaW4gMTAgc2Vjb25kcyB3aXRob3V0CisgICAgICAgIGFueSBhcmd1bWVudHMuIFRoZSBmdW5jdGlvbiBSZWZyZXNoTWUoKSBjYW4gdGhlbiBjYWxsIG91dAorICAgICAgICBpdHNlbGYgYWdhaW4gd2hpY2ggd2lsbCByZXN1bHQgaW4gYSBsb29wIChub3QgaW4gYSByZWN1cnNpb24pCisgICAgICAgIHdoaWNoIGNhbiBiZSB1c2VkIHRvIGNoZWNrIG9yIHNldCB1cCB0aGluZ3MgaW4gdGhlIG9iamVjdCBpbgorICAgICAgICBpbnRlcnZhbHMuIEJlIGF3YXJlIHRoYXQgY2FsbG91dHMgYXJlIHN0b3JlZCBpbiBhIGxpbmVhcgorICAgICAgICBsaXN0LCBhbmQgc28gYXJlIHNvbWV3aGF0IGV4cGVuc2l2ZSBmb3IgdGhlIGRyaXZlci4KKworICAgICAgICBBbmQgWUVTOiBzZWxmLXJlcGxpY2F0aW5nIGNhbGxfb3V0KClzLCB3aGVyZSBlYWNoIGNhbGxfb3V0KCkKKyAgICAgICAgY3JlYXRlcyB0d28gb3IgbW9yZSBvdGhlciBjYWxsX291dCgpcyBpbiBhIGxvb3AgKHNvIGNhbGxlZAorICAgICAgICAncmFiYml0cycpIHNsb3cgdGhlIG11ZCBkb3duIHZlcnkgZmFzdCwgYW5kIGFyZSBldmVuIGFibGUKKyAgICAgICAgdG8gY3Jhc2ggaXQuIE5vIG5lZWQgdG8gdHJ5IGl0IHlvdXJzZWxmLgorCitTRUUgQUxTTworICAgICAgICByZW1vdmVfY2FsbF9vdXQoRSksIGNhbGxfb3V0X2luZm8oRSksIGZpbmRfY2FsbF9vdXQoRSksCisgICAgICAgIHRoaXNfcGxheWVyKEUpLCByZXNldChBKSwgaGVhcnRfYmVhdChBKQorCiswNS4xMS4wNiBaZXNzdHJhCmRpZmYgLS1naXQgYS9kb2MvZWZ1bi9jYWxsX291dF9pbmZvIGIvZG9jL2VmdW4vY2FsbF9vdXRfaW5mbwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi42MWQ1ZmY1Ci0tLSAvZGV2L251bGwKKysrIGIvZG9jL2VmdW4vY2FsbF9vdXRfaW5mbwpAQCAtMCwwICsxLDE5IEBACitTWU5PUFNJUworICAgICAgICBtaXhlZCAqY2FsbF9vdXRfaW5mbygpOworCitCRVNDSFJFSUJVTkcKKyAgICAgICAgTGllZmVydCBJbmZvcm1hdGlvbmVuIHVlYmVyIGFsbGUgYW5oYWVuZ2lnZW4gY2FsbF9vdXQoKXMuIERhcyBSZXN1bHRhdAorICAgICAgICBpc3QgZWluIEFycmF5LCBiZWkgZGVtIGplZGVzIEVsZW1lbnQgd2llZGVydW0gYXVzIGVpbmVtIEFycmF5IGJlc3RlaHQsCisgICAgICAgIGRhcyBlaW5lbiBjYWxsX291dCgpIGJlc2NocmVpYnQuIEplZGVzIGRpZXNlciBVbnRlci1BcnJheXMgZW50aGFlbHQgMworICAgICAgICBvZGVyIG1laHIgRWxlbWVudGU6CisKKyAgICAgICAgMS4gRGFzIE9iamVrdCwgaW4gZGVtIGRpZSBGdW5rdGlvbiBvZGVyIGRpZSBDbG9zdXJlIGF1ZmdlcnVmZW4gd2lyZC4KKyAgICAgICAgMi4gRGllIEZ1bmt0aW9uIG9kZXIgQ2xvc3VyZS4KKyAgICAgICAgMy4gRGVyIHZlcmJsZWliZW5kZSBEZWxheSBiaXMgenVtIEF1ZnJ1Zi4KKyAgICAgICAgNGZmLiBEaWUgKG9wdGlvbmFsZW4pIEFyZ3VtZW50ZS4KKworICAgICAgICBjYWxsX291dCgpcyBmdWVyIHplcnN0b2VydGUgT2JqZWt0ZSB3ZXJkZW4gbmljaHQgaW4gZGVyIExpc3RlCisgICAgICAgIGF1ZmdlZnVlaHJ0LgorCitTSUVIRSBBVUNICisgICAgICAgIGNhbGxfb3V0KEUpLCByZW1vdmVfY2FsbF9vdXQoRSksIGZpbmRfY2FsbF9vdXQoRSkKZGlmZiAtLWdpdCBhL2RvYy9lZnVuL2NhbGxfcmVzb2x2ZWQgYi9kb2MvZWZ1bi9jYWxsX3Jlc29sdmVkCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjAxMDM3NjYKLS0tIC9kZXYvbnVsbAorKysgYi9kb2MvZWZ1bi9jYWxsX3Jlc29sdmVkCkBAIC0wLDAgKzEsMTggQEAKK1NZTk9QU0lTCisgICAgICAgIGludCBjYWxsX3Jlc29sdmVkKG1peGVkIHJlc3VsdCwgb2JqZWN0IG9iLCBzdHJpbmcgZnVuYywgbWl4ZWQgYXJnLC4uLik7CisKK0JFU0NIUkVJQlVORworICAgICAgICBEaWUgRnVua3Rpb24gaXN0IGFlaG5saWNoIHp1IGNhbGxfb3RoZXIoKS4gV2VubiBvYmotPmZ1bmMoKSBkZWZpbmllcnQKKyAgICAgICAgdW5kIG9lZmZlbnRsaWNoIGlzdCwgd2VyZGVuIGFsbGUgQXJndW1lbnRlIDxhcmc+IGFuIG9iai0+ZnVuYygpCisgICAgICAgIHVlYmVyZ2ViZW4uIERhcyBSZXN1bHRhdCBkaWVzZXMgRnVua3Rpb25zYXVmcnVmZXMgd2lyZCBpbiA8cmVzdWx0PgorICAgICAgICBnZXNwZWljaGVydCB1bmQgbXVzcyBkZXNoYWxiIGFscyBSZWZlcmVueiB1ZWJlcmdlYmVuIHdlcmRlbi4KKworICAgICAgICBXZW5uIDxvYj4gemVyc3RvZXJ0IHd1cmRlIG9kZXIga2VpbmUgb2VmZmVudGxpY2ggenVnYWVuZ2xpY2hlIEZ1bmt0aW9uCisgICAgICAgIDxmdW5jPiBkZWZpbmllcnQsIGxpZWZlcnQgY2FsbF9yZXNvbHZlZCgpIDAgZnVlciBGZWhsZXIsIDEgYmVpIEVyZm9sZy4KKworICAgICAgICA8b2I+IGthbm4gYXVjaCBlaW4gb2JqZWN0X25hbWUoKSBzZWluLiBXZW5uIDxvYj4gZWluIFN0cmluZyBpc3QgdW5kCisgICAgICAgIGRhcyBPYmpla3QgbWl0IGRpZXNlbSBOYW1lbiBuaWNodCBnZWZ1bmRlbiBvZGVyIGdlbGFkZW4gd2VyZGVuIGthbm4sCisgICAgICAgIHRyaXR0IGVpbiBGZWhsZXIgYXVmLgorCitTSUVIRSBBVUNICisgICAgICAgIGNhbGxfb3RoZXIoRSksIGZ1bmN0aW9uX2V4aXN0cyhFKSwgZmluZF9vYmplY3QoRSkKZGlmZiAtLWdpdCBhL2RvYy9lZnVuL2NhbGxlcl9zdGFjayBiL2RvYy9lZnVuL2NhbGxlcl9zdGFjawpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5kMWI1Nzc3Ci0tLSAvZGV2L251bGwKKysrIGIvZG9jL2VmdW4vY2FsbGVyX3N0YWNrCkBAIC0wLDAgKzEsMzMgQEAKK1NZTk9QU0lTCisgICAgICAgICpvYmplY3QgY2FsbGVyX3N0YWNrKCk7CisgICAgICAgICpvYmplY3QgY2FsbGVyX3N0YWNrKGludCBhZGRfaW50ZXJhY3RpdmUpOworCitCRVNDSFJFSUJVTkcKKyAgICAgICAgTGllZmVydCBlaW4gQXJyYXkgZGVyIHByZXZpb3VzX29iamVjdCgpLCBkaWUgZWluZW4gY2FsbF9vdGhlcigpIGF1ZgorICAgICAgICB0aGlzX29iamVjdCgpIHZlcnVyc2FjaHQgaGFiZW4uIERhYmVpIGVudHNwcmljaHQgcHJldmlvdXNfb2JqZWN0KGkpCisgICAgICAgIGNhbGxlcl9zdGFjaygpW2ldLgorCisgICAgICAgIFdlbm4gZGllIEZ1bmt0aW9uIG1pdCA8YWRkX2ludGVyYWN0aXZlPiAoYWxzIHdhaHIpIGF1ZmdlcnVmZW4gd2lyZCwKKyAgICAgICAgd2lyZCB0aGlzX2ludGVyYWN0aXZlKCkgZGVtIEFycmF5IGhpbnp1Z2VmdWVndCwgb2RlciAwLCB3ZW5uIGtlaW4KKyAgICAgICAgdGhpc19pbnRlcmFjdGl2ZSgpIGV4aXN0aWVydC4KKworQkVJU1BJRUwKKyAgICAgICAgRGFzIGludGVyYWt0aXZlIE9iamVrdCBBIGdpYnQgZWluIEtvbW1hbmRvIGVpbiwgZGFzIGltIE9iamVrdCBCIGVpbmUKKyAgICAgICAgRnVua3Rpb24gYXVmcnVmdCwgZGllIGF1ZiBkYXMgT2JqZWt0IEMgdmVyd2Vpc3QsIHdlbGNoZXMgd2llZGVydW0KKyAgICAgICAgZWluZSBGdW5rdGlvbiBpbSBPYmpla3QgRCBhdWZydWZ0LgorCisgICAgICAgIFdlbm4gRCBudW4gY2FsbGVyX3N0YWNrKCkgYXVmcnVmdCwgZXJnaWJ0IGRpZXM6ICh7QyxCfSkuCisgICAgICAgIEZ1ZXIgY2FsbGVyX3N0YWNrKDEpIGVyZ2lidCBkaWUgRnVua3Rpb246ICh7QyxCLEF9KS4KKworQUVOREVSVU5HRU4KKyAgICAgICAgRWluZ2VmdWVocnQgaW4gTERNdWQgMy4yLjYsIHZvcmdlc2NobGFnZW4gdm9uIFR1Yk11ZC4KKworQU5NRVJLVU5HCisgICAgICAgIEF1ZnJ1ZmUgdm9uICJhbGllbiBsZnVuIGNsb3N1cmVzIiAodmVyZ2xlaWNoZSBzeW1ib2xfZnVuY3Rpb24oKSkKKyAgICAgICAgZXJ6ZXVnZW4gendlaSBFaW50cmFlZ2UgaW0gU3RhY2ssIHdlbm4gZGFzIGdlYnVuZGVuZSBPYmpla3Qgc2ljaCB2b20KKyAgICAgICAgT2JqZWt0IGRlciBDbG9zdXJlIHVudGVyc2NoZWlkZXQ6IGRlciBlcnN0ZSBFaW50cmFnIHN0ZWh0IGZ1ZXIgZGFzCisgICAgICAgIGdlYnVuZGVuZSBPYmpla3QsIGRlciB6d2VpdGUgZnVlciBkYXMgQ2xvc3VyZS1PYmpla3QuCisKK1NJRUhFIEFVQ0gKKyAgICAgICAgY2FsbGVyX3N0YWNrX2RlcHRoKEUpLCBwcmV2aW91c19vYmplY3QoRSksIHRoaXNfaW50ZXJhY3RpdmUoRSksCisgICAgICAgIGNhbGxfb3RoZXIoRSkKZGlmZiAtLWdpdCBhL2RvYy9lZnVuL2NhbGxlcl9zdGFja19kZXB0aCBiL2RvYy9lZnVuL2NhbGxlcl9zdGFja19kZXB0aApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4yMzA4MjdlCi0tLSAvZGV2L251bGwKKysrIGIvZG9jL2VmdW4vY2FsbGVyX3N0YWNrX2RlcHRoCkBAIC0wLDAgKzEsOSBAQAorU1lOT1BTSVMKKyAgICAgICAgaW50IGNhbGxlcl9zdGFja19kZXB0aCh2b2lkKQorCitERVNDUklQVElPTgorICAgICAgICBSZXR1cm5zIHRoZSBudW1iZXIgb2YgcHJldmlvdXMgb2JqZWN0cyBvbiB0aGUgc3RhY2suIFRoaXMKKyAgICAgICAgY2FuIGJlIHVzZWQgZm9yIHNlY3VyaXR5IGNoZWNrcy4KKworU0VFIEFMU08KKyAgICAgICAgY2FsbGVyX3N0YWNrKEUpLCBwcmV2aW91c19vYmplY3QoRSksIGNhbGxfb3RoZXIoRSksIGNhbGxfcmVzb2x2ZWQoRSkKZGlmZiAtLWdpdCBhL2RvYy9lZnVuL2NhcGl0YWxpemUgYi9kb2MvZWZ1bi9jYXBpdGFsaXplCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmJiYjgyYjcKLS0tIC9kZXYvbnVsbAorKysgYi9kb2MvZWZ1bi9jYXBpdGFsaXplCkBAIC0wLDAgKzEsMTIgQEAKK1NZTk9QU0lTCisgICAgICAgIHN0cmluZyBjYXBpdGFsaXplKHN0cmluZyBzdHIpCisKK0RFU0NSSVBUSU9OCisgICAgICAgIENvbnZlcnQgdGhlIGZpcnN0IGNoYXJhY3RlciBpbiBzdHIgdG8gdXBwZXIgY2FzZSwgYW5kIHJldHVybgorICAgICAgICB0aGUgbmV3IHN0cmluZy4KKworRVhBTVBMRVMKKyAgICAgICAgY2FwaXRhbGl6ZSgiaGV5YSEiKSAtPiAiSGV5YSEiCisKK1NFRSBBTFNPCisgICAgICAgIGxvd2VyX2Nhc2UoRSksIHVwcGVyX2Nhc2UoRSkKZGlmZiAtLWdpdCBhL2RvYy9lZnVuL2NhdCBiL2RvYy9lZnVuL2NhdApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi42NjVmZTRkCi0tLSAvZGV2L251bGwKKysrIGIvZG9jL2VmdW4vY2F0CkBAIC0wLDAgKzEsMjkgQEAKK1NZTk9QU0lTCisgICAgICAgIGludCBjYXQoc3RyaW5nIHBhdGgsIGludCBzdGFydCwgaW50IG51bSkKKworREVTQ1JJUFRJT04KKyAgICAgICAgTGlzdCB0aGUgZmlsZSBmb3VuZCBhdCBwYXRoLgorCisgICAgICAgIEluIG1vc3QgaW5zdGFsbGF0aW9ucyBpdCBpcyBub3QgbGVnYWwgdG8gaGF2ZSAnLi4nIG9yIHNwYWNlcworICAgICAgICBpbiB0aGUgcGF0aC4gVGhpcyBjb21tYW5kcyBpcyBub3JtYWxseSBjb25uZWN0ZWQgdG8gdGhlICJjYXQiCisgICAgICAgIGNvbW1hbmQgdGhhdCB3aXphcmRzIGhhdmUuIEl0IGlzIGFsc28gdXNlZCBieSB0aGUgImhlbHAiCisgICAgICAgIGNvbW1hbmQuIFRoZSBvcHRpb25hbCBhcmd1bWVudHMgc3RhcnQgYW5kIG51bSBhcmUgc3RhcnQgbGluZQorICAgICAgICBudW1iZXIgYW5kIG51bWJlciBvZiBsaW5lcy4gSWYgdGhleSBhcmUgbm90IGdpdmVuIHRoZSB3aG9sZQorICAgICAgICBmaWxlIGlzIHByaW50ZWQgZnJvbSB0aGUgYmVnaW5uaW5nLgorCisgICAgICAgIFRoZSB0b3RhbCBudW1iZXIgb2YgbGluZXMgd2lsbCBub3QgZXhjZWVkIGEgc3lzdGVtIGxpbWl0LCB3aGljaAorICAgICAgICBub3JtYWxseSBpcyA1MCBsaW5lcy4KKworICAgICAgICBjYXQoKSByZXR1cm5zIHRoZSBudW1iZXIgb2YgbGluZXMgcmVhZCBhbmQgcHJpbnRlZCBpZiBzdWNjZXNzLAorICAgICAgICAwIGlmIG5vIHN1Y2ggZmlsZSBvciBubyBsaW5lcyB0byByZWFkIChpZiBzdGFydCBvciBsZW4gaXMgPCAwLAorICAgICAgICBvciBpZiB0aGUgZmlsZSBoYXMgbGVzcyB0aGFuIHN0YXJ0IGxpbmVzKS4KKworRVhBTVBMRQorICAgICAgICBjYXQoIi9kb2MvZWZ1bi9jYXQiLCA1LCA5KTsKKworICAgICAgICBUaGlzIHdpbGwgcHJpbnQgb3V0IHRoZSBmaWxlICIvZG9jL2VmdW4vY2F0IiBiZWdpbmluZyBhdCBsaW5lCisgICAgICAgIDUgYW5kIGVuZGluZyB3aXRoIGxpbmUgMTMuCisKK1NFRSBBTFNPCisgICAgICAgIGdldF9kaXIoRSksIGZpbGVfc2l6ZShFKSwgcmVhZF9maWxlKEUpLCByZWFkX2J5dGVzKEUpLAorICAgICAgICB2YWxpZF9yZWFkKE0pCmRpZmYgLS1naXQgYS9kb2MvZWZ1bi9jYXRjaCBiL2RvYy9lZnVuL2NhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmM0MzZiN2QKLS0tIC9kZXYvbnVsbAorKysgYi9kb2MvZWZ1bi9jYXRjaApAQCAtMCwwICsxLDY0IEBACitTWU5PUFNJUworICAgICAgICBtaXhlZCBjYXRjaChleHByLCBleHByLCAuLi4pOworICAgICAgICBtaXhlZCBjYXRjaChleHByLCBleHByLCAuLi47IG1vZGlmaWVycyk7CisKK0JFU0NIUkVJQlVORworICAgICAgICBXZXJ0ZXQgZGllIEF1c2RydWVja2UgPGV4cHI+IGF1cy4gV2VubiBrZWluIEZlaGxlciBhdWZ0cml0dCwgd2lyZCAwCisgICAgICAgIHp1cnVlY2sgZ2VsaWVmZXJ0LiBXZW5uIGVpbiBGZWhsZXIgYXVmdHJpdHQsIHdpcmQgZGllIEF1c2Z1ZWhydW5nIGFuCisgICAgICAgIGRpZXNlbSBQdW5rdCBhYmdlYnJvY2hlbiB1bmQgZWluIFN0cmluZyBtaXQgZGVyIEZlaGxlcm1lbGR1bmcgd2lyZAorICAgICAgICB6dXJ1ZWNrIGdlZ2ViZW4uCisKKyAgICAgICAgU3lzdGVtZWlnZW5lIEZlaGxlcm1lbGR1bmdlbiBiZWdpbm5lbiBtaXQgZWluZW0gIioiLCBiZW51dHplcmRlZmluaWVydGUKKyAgICAgICAgRmVobGVybWVsZHVuZ2VuIGF1cyB0aHJvdygpIHVuZCByYWlzZV9lcnJvcigpIChzb2Zlcm4gdm9uIDAKKyAgICAgICAgdmVyc2NoaWVkZW4pLCB3ZXJkZW4gdW52ZXJhZW5kZXJ0IHp1cnVlY2sgZ2VsaWVmZXJ0LgorCisgICAgICAgIFdlbm4genVtIFplaXRwdW5rdCwgenUgZGVtIGNhdGNoKCkgYXVmZ2VydWZlbiB3aXJkLCB3ZW5pZ2VyIGFscworICAgICAgICBfX0NBVENIX0VWQUxfQ09TVF9fIFJlY2hlbnRpY2tzIHVlYnJpZyBzaW5kLCB3aXJkIGVpbiBMYXVmemVpdGZlaGxlcgorICAgICAgICBSVEUgaW5uZXJoYWxiIHZvbiBjYXRjaCgpIGVyemV1Z3QgKHVuZCBzb21pdCB3aWUgamVkZXIgYW5kZXJlCisgICAgICAgIEZlaGxlciBhYmdlZmFuZ2VuKSB1bmQgZXMgd2VyZGVuIGtlaW5lIEF1c2RydWVja2UgPGV4cHI+IGF1cyBjYXRjaCgpCisgICAgICAgIGF1c2dld2VydGV0LiBEZXIgTW9kaWZpa2F0b3IgJ3Jlc2VydmUnIGthbm4gdmVyd2VuZGV0IHdlcmRlbiwKKyAgICAgICAgZWluZW4gYW5kZXJlbiBXZXJ0IGZ1ZXIgZGllIFJlc2VydmUgYW56dWdlYmVuLgorCisgICAgICAgIERhcyBWZXJoYWx0ZW4gdm9uIGNhdGNoKCkga2FubiBkdXJjaCA8bW9kaWZpZXJzPiB2ZXJhZW5kZXJ0IHdlcmRlbjoKKworICAgICAgICAgICAgJ25vbG9nJzogICAgTm9ybWFsZXJ3ZWlzZSB3aXJkIGRlciBGZWhsZXIgaW0gRmVobGVybG9nCisgICAgICAgICAgICAgICAgICAgICAgICBnZXNwZWljaGVydCwgdW0gZGllIEZlaGxlcnN1Y2hlIHp1IGVybGVpY2h0ZXJuLiBXaXJkCisgICAgICAgICAgICAgICAgICAgICAgICAnbm9sb2cnIGdlc2V0enQsIHdpcmQgZGllc2VyIExvZy1FaW50cmFnIHVudGVyZHJ1ZWNrdC4KKyAgICAgICAgICAgICdwdWJsaXNoJzogIE5vcm1hbGVyd2Vpc2Ugd2lyZCBtYXN0ZXI6OnJ1bnRpbWVfZXJyb3IoKSBmdWVyIGVpbmVuCisgICAgICAgICAgICAgICAgICAgICAgICBGZWhsZXIgaW5uZXJoYWxiIGVpbmVzIGNhdGNoKCkgbmljaHQgYXVmZ2VydWZlbi4gTWl0CisgICAgICAgICAgICAgICAgICAgICAgICBkaWVzZW0gPG1vZGlmaWVyPiB3aXJkIHJ1bnRpbWVfZXJyb3IoKSB0cm90emRlbQorICAgICAgICAgICAgICAgICAgICAgICAgYXVmZ2VydWZlbi4KKyAgICAgICAgICAgICdyZXNlcnZlIDxleHByPic6IDxleHByPiBtdXNzIGVpbmUgZ2FuemVuIFphaGwgZ3JvZXNzZXIgMAorICAgICAgICAgICAgICAgICAgICAgICAgZXJnZWJlbiwgd2VsY2hlIGRhbm4gYWxzIFJlY2hlbnJlc2VydmUgYW5zdGVsbGUKKyAgICAgICAgICAgICAgICAgICAgICAgIHZvbiBfX0NBVENIX0VWQUxfQ09TVF9fIHZlcndlbmRldCB3aXJkLiBEYXMgTWluaW11bQorICAgICAgICAgICAgICAgICAgICAgICAgaXN0IDIgKiBfX01BU1RFUl9FVkFMX0NPU1RfXyAuCisKKyAgICAgICAgY2F0Y2goKSBhbiBzaWNoIGlzdCBuaWNodCBiZXNvbmRlcnMgbGF1ZnplaXQtaW50ZW5zaXY6IGVzIGJyYXVjaHQKKyAgICAgICAgbnVyIGV0d2FzIG1laHIgWmVpdCBhbHMgZWluIEludHJhLU9iamVrdCBGdW5rdGlvbnNhdWZydWYuCisgICAgICAgIAorICAgICAgICB0aHJvdygpIGlzdCBlYmVuZmFsbHMgbmljaHQgc2VociB0ZXVlciwgZGEgbGVkaWdsaWNoIGVpbmlnZQorICAgICAgICBpbnRlcm5lIFN0cnVrdHVyZW4gYXVmZ2VyYWV1bXQgd2VyZGVuIG11ZXNzZW4uCisKKyAgICAgICAgRWNodGUgTGF1ZnplaXRmZWhsZXJzIChvYiBudW4gbWl0IG9kZXIgb2huZSBjYXRjaCgpKSBhdWYKKyAgICAgICAgZGVyIGFuZGVyZW4gU2VpdGUgaXN0IHNlaHIgemVpdGludGVuc2l2LgorCisgICAgICAgIGNhdGNoIGlzdCBuaWNodCBpbSBlaWdlbnRsaWNoZW4gU2lubmUgZWluZSBFZnVuLCBzb25kZXJuIGVpbmUgQ29tcGlsZXIKKyAgICAgICAgQW53ZWlzdW5nLgorCitCRUlTUElFTAorICAgICAgICBvYmplY3Qgb2JqOworICAgICAgICBzdHJpbmcgZXJyOworICAgICAgICBpZihlcnIgPSBjYXRjaChvYmogPSBjbG9uZV9vYmplY3QoIi9mb28vYmFyL2JheiIpKSkKKyAgICAgICAgICAgIHdyaXRlKCJLYW5uIGRhcyBPYmpla3QgbmljaHQgY2xvbmVuLiBHcnVuZDogIitlcnIrIlxuIik7CisKK0FFTkRFUlVOR0VOCisgICAgICAgIExETXVkIDMuMi45IGZ1ZWhydGUgZGVuICdub2xvZycgY2F0Y2goKSBhbHMgZXhwZXJpbWVudGVsbGVzIEZlYXR1cmUKKyAgICAgICAgICAgIGVpbi4KKyAgICAgICAgTERNdWQgMy4yLjEwIGltcGxlbWVudGllcnRlICdub2xvZycgYWxzIG9mZml6aWVsbGUgRm9ybSB1bmQgZnVlaHJ0ZQorICAgICAgICAgICAgenVkZW0gJ3B1Ymxpc2gnIGVpbi4KKyAgICAgICAgTERNdWQgMy4zLjU1OSB2ZXJsZWd0ZSBkZW4gVGVzdCBhdWYgdmVyYmxlaWJlbmRlIFJlY2hlbnRpY2tzIGluIGRpZQorICAgICAgICAgICAgdm9tIGNhdGNoKCkgdW1zY2hsb3NzZW5lbiBBdXNmdWVocnVuZy4KKyAgICAgICAgTERNdWQgMy4zLjU2MCBmdWVndGUgZGVuIE1vZGlmaWthdG9yICdyZXNlcnZlJyBlaW4uCisKK1NJRUhFIEFVQ0gKKyAgICAgICAgdGhyb3coRSksIHJhaXNlX2Vycm9yKEUpLCBwcmVkZWZpbmVkKEQpLCBydW50aW1lX2Vycm9yKE0pCmRpZmYgLS1naXQgYS9kb2MvZWZ1bi9jZWlsIGIvZG9jL2VmdW4vY2VpbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5kYzQ0MjQ0Ci0tLSAvZGV2L251bGwKKysrIGIvZG9jL2VmdW4vY2VpbApAQCAtMCwwICsxLDE5IEBACitTWU5PUFNJUworICAgICAgICBmbG9hdCBjZWlsKGludHxmbG9hdCBhcmcpOworCitCRVNDSFJFSUJVTkcKKyAgICAgICAgUnVuZGV0IDxhcmc+IHp1ciBuYWVjaHN0ZW4gZ2FuemVuIFphaGwgYXVmIHVuZCBsaWVmZXJ0IGRhcyBSZXN1bHRhdAorICAgICAgICB6dXJ1ZWNrLiBXZW5uIDxhcmc+IGVpbiBJbnRlZ2VyIGlzdCwgd2lyZCBkYXMgUmVzdWx0YXQgaW4gZmxvYXQKKyAgICAgICAga29udmVydGllcnQuCisKK0JFSVNQSUVMCisgICAgICAgIGNlaWwoNC41KTsgICAgICBlcmdpYnQ6ICA1LjAKKyAgICAgICAgY2VpbCgtNC41KTsgICAgIGVyZ2lidDogLTQuMAorICAgICAgICBjZWlsKDUpOyAgICAgICAgZXJnaWJ0OiAgNS4wCisKK0FFTkRFUlVOR0VOCisgICAgICAgIEVpbmdlZnVlaHJ0IGluIExETXVkIDMuMi43LgorICAgICAgICBMRE11ZCAzLjIuOSBmdWVocnRlIG5ldSBJbnRlZ2VyIGFscyBtb2VnbGljaGUgQXJndW1lbnRlIGVpbi4KKworU0lFSEUgQVVDSAorICAgICAgICBhYnMoRSksIGZsb29yKEUpCmRpZmYgLS1naXQgYS9kb2MvZWZ1bi9jbGVhcl9iaXQgYi9kb2MvZWZ1bi9jbGVhcl9iaXQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOTNmMTVlYwotLS0gL2Rldi9udWxsCisrKyBiL2RvYy9lZnVuL2NsZWFyX2JpdApAQCAtMCwwICsxLDM1IEBACitTWU5PUFNJUworICAgICAgICBzdHJpbmcgY2xlYXJfYml0KHN0cmluZyBzdHIsIGludCBuKTsKKworQkVTQ0hSRUlCVU5HCisgICAgICAgIEdpYnQgZWluZW4gbmV1ZW4gU3RyaW5nIHp1cnVlY2ssIGluIGRlbSBkYXMgbi10ZSBCaXQgaW0gU3RyaW5nIDxzdHI+CisgICAgICAgIG5pY2h0IGdlc2V0enQgaXN0LiBEYWJlaSB3aXJkIDxzdHI+IHNlbGJzdCBuaWNodCB2ZXJhZW5kZXJ0LgorCisgICAgICAgIEplZGVzIFplaWNoZW4gZW50aGFlbHQgc2VjaHMgQml0cy4gU28ga2FubiBpbiBqZWRlbSBaZWljaGVuIGVpbmUgWmFobAorICAgICAgICB6d2lzY2hlbiAwIHVuZCA2MyAoMl42PTY0KSBnZXNwZWljaGVydCB3ZXJkZW4uIERhcyBlcnN0ZSBaZWljaGVuIGlzdAorICAgICAgICBkZXIgTGVlcnNjaGxhZyAiICIgbWl0IFdlcnQgMC4gRGFzIGVyc3RlIFplaWNoZW4gaW0gU3RyaW5nIGlzdCBqZW5lcworICAgICAgICBtaXQgZGVuIG5pZWRyaWdzdGVuIEJpdHMgKDAgYmlzIDUpLgorCitCRUlTUElFTEUKKyAgICAgICAgc3RyaW5nIHM7CisgICAgICAgIHMgPSBjbGVhcl9iaXQoIl8iLCA1KTsKKworICAgICAgICBXZWlsICJfIiBkZW4gaG9lY2hzdGVuIG1vZWdsaWNoZW4gV2VydCBlbnRoYWVsdCAoNjMpLCBlbnRoYWVsdCBkaWUKKyAgICAgICAgVmFyaWFibGUgcyBudW4gZGFzIFplaWNoZW4gIj8iLCBkYXMgZGVtIFdlcnQgMzEgZW50c3ByaWNodCAoNjMtMl41PTMxKS4KKworICAgICAgICBzdHJpbmcgczsKKyAgICAgICAgcyA9IGNsZWFyX2JpdCgiPzwiLDMpOworICAgICAgICBzID0gY2xlYXJfYml0KHMsIDgpOworCisgICAgICAgIHMgZW50aGFlbHQgbnVuIGRlbiBTdHJpbmcgIjc4Ii4gIj8iIGVudHNwcmljaHQgZGVtIFdlcnQgMzEgdW5kICI8IiBkZW0KKyAgICAgICAgV2VydCAyOC4gIj88IiBlbnRzcHJpY2h0IGFsc28gZGVtIFdlcnQgMzErMjg8PDY9MzErMTc5Mj0xODIzLCB3YXMgaW4KKyAgICAgICAgQmluYWVyc2NocmVpYndlaXNlIChob2VjaHN0ZXMgQml0IHJlY2h0cykgMTExMTEwMDAxMTEgZXJnaWJ0LiBXZXJkZW4KKyAgICAgICAgYXVzIGRpZXNlciBaYWhsIGRpZSBCaXRzIDMgdW5kIDggKGRpZSBOdW1tZXJpZXJ1bmcgYmVnaW5udCBtaXQgZGVtCisgICAgICAgIDAuIEJpdCkgZXJnaWJ0IGRhbm46IDExMTAxMDAwMDExLiBEaWUgZXJzdGVuIDYgQml0cyAwMTAxMTEgc2luZCBpbgorICAgICAgICBEZXppbWFsc2NocmVpYndlaXNlIDIzLiBEaWUgendlaXRlbiA2IEJpdHMgKDApMTEwMDAgZXJnZWJlbiAyNCBpbgorICAgICAgICBEZXppbWFsc2NocmVpYndlaXNlLiBOdW4gZW50c3ByaWNodCBkZXIgV2VydCAyMyBkZW0gWmVpY2hlbiAiNyIgdW5kCisgICAgICAgIGRlciBXZXJ0IDI0IGRlbSBaZWljaGVuICI4Ii4gRGVyIFN0cmluZyBzIGVudGhhZWx0IGFsc28gIjc4Ii4KKworU0lFSEUgQVVDSAorICAgICAgICBzZXRfYml0KEUpLCBuZXh0X2JpdChFKSwgbGFzdF9iaXQoRSksIHRlc3RfYml0KEUpLCBjb3VudF9iaXRzKEUpLAorICAgICAgICBhbmRfYml0cyhFKSwgb3JfYml0cyhFKSwgeG9yX2JpdHMoRSksIGludmVydF9iaXRzKEUpLCBjb3B5X2JpdHMoRSkKZGlmZiAtLWdpdCBhL2RvYy9lZnVuL2Nsb25lX29iamVjdCBiL2RvYy9lZnVuL2Nsb25lX29iamVjdApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5mNjIyYmVmCi0tLSAvZGV2L251bGwKKysrIGIvZG9jL2VmdW4vY2xvbmVfb2JqZWN0CkBAIC0wLDAgKzEsMjMgQEAKK1NZTk9QU0lTOgorICAgICAgICBvYmplY3QgY2xvbmVfb2JqZWN0KHN0cmluZyBuYW1lKQorCitERVNDUklQVElPTjoKKyAgICAgICAgQ2xvbmUgYSBuZXcgb2JqZWN0IGZyb20gZGVmaW5pdGlvbiBuYW1lLCBhbmQgZ2l2ZSBpdCBhIG5ldyB1bmlxdWUKKwluYW1lLiBSZXR1cm4gdGhlIG5ldyBvYmplY3QuCisgICAgICAgIAorICAgICAgICBUaGUgb3JpZ2luYWwsIGNhbGxlZCBibHVlIHByaW50LCB1c2VkIGZvciBjbG9uaW5nLCBzaG91bGQgbm90IGJlCisJdXNlZCBpbiB0aGUgZ2FtZSwgb25seSBiZSB1c2VkIGZvciBjbG9uaW5nLiBUaGUgY2xvbmVkIG9iamVjdHMKKwljb250YWluIG9ubHkgdGhlIGRhdGEgYnV0IHRoZSBibHVlIHByaW50IGFsc28gdGhlIGZ1bmN0aW9uIGNvZGUuCisJVGhlIGJsdWUgcHJpbnQgaXMgdGhlIG9uZSB3aXRob3V0IGEgdW5pcXVlIG51bWJlciBhdCB0aGUgZW5kIG9mCisJdGhlIG9iamVjdCdzIG9iamVjdF9uYW1lKCkuIFRoZSBjbG9uZV9vYmplY3QoKSBmdW5jdGlvbiBuZXZlcgorCXJldHVybnMgYSBibHVlIHByaW50LgorICAgICAgICAKKyAgICAgICAgTm90ZSB0aGF0IHRoZSBwYXRobmFtZSBtdXN0IGJlIGNvbXBsZXRlLCB3aGljaCBtZWFucyB0aGVyZSBhcmUgbm8KKyAgICAgICAgcmVsYXRpdmUgcGF0aHMgYWxsb3dlZC4KKworRVhBTVBMRToKKyAgICAgICAgb2JqZWN0IHRvcmNoOworICAgICAgICB0b3JjaCA9IGNsb25lX29iamVjdCgiL29iai90b3JjaCIpOworCitTRUUgQUxTTzoKKyAgICAgICAgZGVzdHJ1Y3QoRSksIG1vdmVfb2JqZWN0KEUpLCB1aWRzKEMpCmRpZmYgLS1naXQgYS9kb2MvZWZ1bi9jbG9uZXAgYi9kb2MvZWZ1bi9jbG9uZXAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYWZmZjcxYQotLS0gL2Rldi9udWxsCisrKyBiL2RvYy9lZnVuL2Nsb25lcApAQCAtMCwwICsxLDI4IEBACitTWU5PUFNJUworICAgICAgICBpbnQgY2xvbmVwICgpCisgICAgICAgIGludCBjbG9uZXAgKG9iamVjdCBvYmopCisgICAgICAgIGludCBjbG9uZXAgKHN0cmluZyBvYmopCisgICAgICAgIGludCBjbG9uZXAgKG1peGVkICBhcmcpCisKK0JFU0NIUkVJQlVORworICAgICAgICBMaWVmZXJ0IDEsIHdlbm4gZGFzIGFuZ2VnZWJlbmUgT2JqZWt0IGVpbiBLbG9uIGlzdCwgYW5zb25zdGVuIDAuCisgICAgICAgIERhcyBPYmpla3Qga2FubiBkYWJlaSBhdWNoIGR1cmNoIHNlaW5lbiBPYmpla3QtTmFtZW4gYW5nZWdlYmVuIHdlcmRlbi4KKyAgICAgICAgV2lyZCBrZWluIEFyZ3VtZW50IHVlYmVyZ2ViZW4sIHNvIHdpcmQgdGhpc19vYmplY3QoKSBnZXRlc3RldC4KKyAgICAgICAgTGllZmVydCAwLCB3ZW5uIGRhcyBBcmd1bWVudCB2b24gZWluZW0gYW5kZXJlbiBUeXAuCisgICAgICAgIEVpbiBPYmpla3QsIGRlc3NlbiBQcm9ncmFtbSBtaXR0ZWxzIHJlcGxhY2VfcHJvZ3JhbSgpIGVyc2V0enQgd3VyZGUsCisgICAgICAgIHphZWhsdCBuaWNodCBhbHMgS2xvbi4KKworQkVJU1BJRUwKKyAgICAgICAgb2JqZWN0IG87CisgICAgICAgIG8gPSBjbG9uZV9vYmplY3QoIi9vYmovZGluZyIpOworICAgICAgICB3cml0ZShjbG9uZXAobykpOyAgICAgICAgICAgICAgICAgICAgICAgICAgLS0+IHNjaHJlaWJ0ICIxIgorICAgICAgICB3cml0ZShjbG9uZXAoIi9vYmovZGluZyIpKSAgICAgICAgICAgICAgICAgLS0+IHNjaHJlaWJ0ICIwIgorCisgICAgICAgIChJbSBDT01QQVRfTU9ERSAib2JqL2RpbmciIGFscyBEYXRlaW5haG1lbiBiZW51dHplbikKKworQUVOREVSVU5HRU4KKyAgICAgICAgRWluZ2VmdWVocnQgaW4gTERNdWQgMy4yLjYsIGdlYWVuZGVydCBpbiAzLjIuNywgc28gZGFzcyBPYmpla3RlIG1pdAorICAgICAgICBlcnNldHp0ZW4gUHJvZ3JhbW1lbiBuaWNodCBtZWhyIGFscyBLbG9uZSB6YWVobGVuLgorCitTSUVIRSBBVUNICisgICAgICAgIGxvYWRfbmFtZShFKSwgY2xvbmVfb2JqZWN0KEUpLCBjbG9uZXMoRSkKZGlmZiAtLWdpdCBhL2RvYy9lZnVuL2Nsb25lcyBiL2RvYy9lZnVuL2Nsb25lcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4yM2UyMGQyCi0tLSAvZGV2L251bGwKKysrIGIvZG9jL2VmdW4vY2xvbmVzCkBAIC0wLDAgKzEsMzggQEAKK1NZTk9QU0lTCisgICAgICAgICpvYmplY3QgY2xvbmVzKCk7CisgICAgICAgICpvYmplY3QgY2xvbmVzKGludCB3aGF0KTsKKyAgICAgICAgKm9iamVjdCBjbG9uZXMoc3RyaW5nfG9iamVjdCBvYmogWywgaW50IHdoYXRdKTsKKworQkVTQ0hSRUlCVU5HCisgICAgICAgIERpZXNlIEVmdW4gbGllZmVydCBlaW4gQXJyYXkgbWl0IGFsbGVuIENsb25lcyBlaW5lcyBiZXN0aW1tdGVuCisgICAgICAgIEJsdWVwcmludHMuIERhYmVpIHVudGVybGllZ3QgZGFzIEFycmF5IGRlbiBub3JtYWxlbiBTeXN0ZW1saW1pdGVuLgorCisgICAgICAgIFdlbm4gPG9iaj4gYW5nZWdlYmVuIGlzdCwgd2VyZGVuIGFsbGUgQ2xvbmVzIGRlcyBCbHVlcHJpbnRzIHZvbiA8b2JqPgorICAgICAgICAob2RlciB2b24gPG9iaj4gc2VsYnN0LCBmYWxscyA8b2JqPiBlaW4gQmx1ZXByaW50IGlzdCkgYXVzZ2VnZWJlbiwKKyAgICAgICAgc29uc3QgZGllIENsb25lIGRlcyBha3R1ZWxsZW4gT2JqZWt0cyBiencuIGRpZSBDbG9uZSBkZXMgQmx1ZXByaW50cworICAgICAgICBkZXMgYWt0dWVsbGVuIE9iamVrdHMuIFdlbm4gPG9iaj4gYWxzIFN0cmluZyBhbmdlZ2ViZW4gaXN0LCBtdXNzIGVzCisgICAgICAgIGRlciBOYW1lIGVpbmVzIGV4aXN0aWVyZW5kZW4gT2JqZWt0cyBzZWluLgorCisgICAgICAgIDx3aGF0PiB3YWVobHQgYXVzLCB3aWUgQ2xvbmUgdm9uIGFlbHRlcmVuIFZlcnNpb25lbiBkZXMgQmx1ZXByaW50cworICAgICAgICB6dSBiZWhhbmRlbG4gc2luZDoKKyAgICAgICAgICAgID09IDA6IGxpZWZlcnQgbnVyIGRpZSBDbG9uZSBkZXMgYWt0dWVsbGVuIEJsdWVwcmludHMgKFN0YW5kYXJkKQorICAgICAgICAgICAgPT0gMTogbGllZmVydCBudXIgZGllIENsb25lIGRlciBhbHRlbiBCbHVlcHJpbnQtVmVyc2lvbgorICAgICAgICAgICAgPT0gMjogbGllZmVydCBhbGxlIENsb25lcyBhbGxlciBCbHVlcHJpbnQtVmVyc2lvbmVuCisKKyAgICAgICAgV2VubiBkZXIgVHJlaWJlciBtaXQgRFlOQU1JQ19DT1NUUyBrb21waWxpZXJ0IHd1cmRlLCBzaW5kIGRpZSBLb3N0ZW4KKyAgICAgICAgZnVlciBkaWVzZSBGdW5rdGlvbiBwcm9wb3J0aW9uYWwgenVyIEFuemFobCBPYmpla3RlIGltIFNwaWVsLgorCitCRUlTUElFTAorICAgICAgICBvYmplY3QgbywgcDsKKyAgICAgICAgbyA9IGNsb25lX29iamVjdCgiL3N0ZC90aGluZyIpOyAvKiBvZGVyICJzdGQvdGhpbmciIGltIENPTVBBVF9NT0RFICovCisgICAgICAgIGRlc3RydWN0KGZpbmRfb2JqZWN0KCIvc3RkL3RoaW5nIikpOworICAgICAgICBwID0gY2xvbmVfb2JqZWN0KCIvc3RkL3RoaW5nIik7CisKKyAgICAgICAgY2xvbmVzKCIvc3RkL3RoaW5nIikgICAgLS0+IGVyZ2lidCAoeyBwIH0pCisgICAgICAgIGNsb25lcygiL3N0ZC90aGluZyIsIDApIC0tPiBlcmdpYnQgKHsgcCB9KQorICAgICAgICBjbG9uZXMoIi9zdGQvdGhpbmciLCAxKSAtLT4gZXJnaWJ0ICh7IG8gfSkKKyAgICAgICAgY2xvbmVzKCIvc3RkL3RoaW5nIiwgMikgLS0+IGVyZ2lidCAoeyBvLCBwIH0pCisKK0FFTkRFUlVOR0VOCisgICAgICAgIEVpbmdlZnVlaHJ0IGluIExETXVkIDMuMi44LgorICAgICAgICBMRE11ZCAzLjIuOSBmdWVocnRlIGRpZSBkeW5hbWlzY2hlbiBLb3N0ZW4gZWluLgpkaWZmIC0tZ2l0IGEvZG9jL2VmdW4vY2xvc3VyZXAgYi9kb2MvZWZ1bi9jbG9zdXJlcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4yNWEyODI5Ci0tLSAvZGV2L251bGwKKysrIGIvZG9jL2VmdW4vY2xvc3VyZXAKQEAgLTAsMCArMSwxMSBAQAorU1lOT1BTSVMKKyAgICAgICAgaW50IGNsb3N1cmVwKG1peGVkIGFyZykKKworQkVTQ0hSRUlCVU5HCisgICAgICAgIExpZWZlcnQgMSwgd2VubiBkYXMgQXJndW1lbnQgZWluZSBDbG9zdXJlIGlzdCwgYW5zb25zdGVuIDAuCisKK0FFTkRFUlVOR0VOCisgICAgICAgIEVpbmdlZnVlaHJ0IGluIDMuMkA3MC4KKworU0lFSEUgQVVDSAorICAgICAgICBpbnRwKEUpLCByZWZlcmVuY2VwKEUpLCBzeW1ib2xwKEUpCmRpZmYgLS1naXQgYS9kb2MvZWZ1bi9jb21tYW5kIGIvZG9jL2VmdW4vY29tbWFuZApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4wOWQ2YzBiCi0tLSAvZGV2L251bGwKKysrIGIvZG9jL2VmdW4vY29tbWFuZApAQCAtMCwwICsxLDUwIEBACitjb21tYW5kKCkKK0ZVTktUSU9OOgorICAgICBpbnQgY29tbWFuZChzdHJpbmcgc3RyKQorICAgICBpbnQgY29tbWFuZChzdHJpbmcgc3RyLCBvYmplY3Qgb2IpCisKK0JFU0NIUkVJQlVORzoKKyAgICAgRnVlaHJ0IHN0ciB3aWUgZWluIEtvbW1hbmRvIHdlbGNoZXMgZGlyZWt0IHZvbSBOdXR6ZXIgYWJnZWdlYmVuIHd1cmRlCisgICAgIGF1cy4gQWxsZSBFZmZla3RlIGRlcyBLb21tYW5kb3Mgd2lya2VuIHNpY2ggYXVmIHRoaXNfb2JqZWN0KCkgb2RlciwKKyAgICAgZmFsbHMgYW5nZWdlYmVuLCBhdWYgZGFzIE9iamVrdCA8b2JqPiBhdXMuCisKKyAgICAgRGVyIFJ1ZWNrZ2FiZXdlcnQgaXN0ID49MSBmdWVyIEVyZm9sZyB1bmQgMCBmdWVyIE1pc3NlcmZvbGcuCisgICAgIFJ1ZWNrZ2FiZXdlcnQgaXN0IGltIEVyZm9sZ3NmYWxsIGRpZSBIb2VoZSBkZXIgRXZhbENvc3QgaW4gVGlja3MuCisKKyAgICAgV2VubiBjb21tYW5kKCkgYXVmIGVpbiBhbmRlcmVzIE9iamVrdCBhbmdld2VuZGV0IHdpcmQsIGtvZW5uZW4gYXVmCisgICAgIGRpZXNlbSBXZWdlIGtlaW5lICJzdGF0aWMiIGRla2xhcmllcnRlbiBGdW5rdGlvbmVuIGF1ZmdlcnVmZW4gd2VyZGVuLAorICAgICB1bSBldHdhcyBTY2h1dHogdm9yIHVuZXJsYXVidGVuIEF1ZnJ1ZmVuIHp1IGdlYmVuLgorCisgICAgIEtvbW1hbmRpIHdlcmRlbiBnZXN0YXBlbHQsIGRhcyBoZWlzc3QsIG5hY2ggZGVyIEF1c2Z1ZWhydW5nIHZvbiA8c3RyPgorICAgICB3ZXJkZW4gZGllIGFsdGVuIFdlcnRlIGZ1ZXIgdGhpc19wbGF5ZXIoKSwgcXVlcnlfdmVyYigpIGV0Yy4gd2llZGVyCisgICAgIGhlcmdlc3RlbGx0IChlaW4gS29tbWFuZG8ga2FubiBkYXp1IGZ1ZWhyZW4sIGRhc3MgZWluIEtvbW1hbmRvCisgICAgIGF1c2dlZnVlaHJ0IHdpcmQpLgorCitCRU1FUktVTkdFTjoKKyAgICAgRGllIG1laXN0ZW4gaW4gTGViZXdlc2VuIGRlZmluaWVydGVuIEtvbW1hbmRvZnVua3Rpb25lbiBzaW5kIHZvcgorICAgICBhZXVzc2VyZW0gQXVmcnVmZW4gZHVyY2ggInN0YXRpYyIgb0FlIGdlc2NodWV0enQuIFp1bSBBdXNmdWVocmVuIGRpZXNlcgorICAgICBLb21tYW5kb3MgbXVzcyBjb21tYW5kX21lKEwpIGVpbmdlc2V0enQgd2VyZGVuLCB1bSBkaWVzZW4gU2NodXR6IHp1CisgICAgIHVtZ2VoZW4uCisKK0JFSVNQSUVMRToKKyAgICAgU2llaGUgY29tbWFuZF9tZShMKSBmdWVyIGVpbmVuIFZlcmdsZWljaC4KKwkgCisgICAgIC8vICMxIEVpbiBOUEMgbmltbXQgdW5kIHp1ZW5kZXQgZWluZSBoZXJ1bWxpZWdlbmRlIC9zdGQvbGlnaHRzb3VyY2UgYW4KKyAgICAgb2JqZWN0IGYgPSBwcmVzZW50KCJcbmxpY2h0cXVlbGxlIiwgZW52aXJvbm1lbnQoKSk7CisgICAgIGlmKGYgJiYgY29tbWFuZCgibmltbSBsaWNodHF1ZWxsZSIpKQorICAgICAgIGlmKGNvbW1hbmQoInp1ZW5kZSBsaWNodHF1ZWxsZSBhbiIpKQorICAgICAgICAgdGVsbF9yb29tKGVudmlyb25tZW50KCksIE5hbWUoV0VSKSsiIGZyZXV0IHNpY2guXG4iKTsKKyAgICAgICBlbHNlCisgICAgICAgICB0ZWxsX3Jvb20oZW52aXJvbm1lbnQoKSwgTmFtZShXRVIpKyIgc2NoYXV0IGJlZHJvZXBwZWx0LlxuIik7CisgICAgIAorICAgICAvLyAjMiBFaW4gTlBDIHRyYWVndCBzZWluZSBTYWNoZW4KKyAgICAgY2xvbmVfb2JqZWN0KCIvcnVlc3R1bmcvc29tbWVya2xlaWQiKS0+bW92ZSh0aGlzX29iamVjdCgpLCAyKTsKKyAgICAgY29tbWFuZCgidHJhZ2Uga2xlaWQiKQorICAgICAvLyBhZXF1aXZhbGVudCB1bmQgYmVzc2VyIGlzdCBoaWVyOgorICAgICBBZGRJdGVtKCIvcnVlc3R1bmcvc29tbWVya2xlaWQiLCBSRUZSRVNIX1JFTU9WRXxDTE9ORV9XRUFSKTsKKworU0lFSEUgQVVDSAorICAgICBjb21tYW5kX3N0YWNrKEUpLCBub3RpZnlfZmFpbChFKSwgZW5hYmxlX2NvbW1hbmRzKEUpLCBnZXRfZXZhbF9jb3N0KEUpCisgICAgIGNvbW1hbmRfbWUoTCkKKworNiBTZXAgMjAxMiBHbG9pbnNvbgpkaWZmIC0tZ2l0IGEvZG9jL2VmdW4vY29tbWFuZF9zdGFjayBiL2RvYy9lZnVuL2NvbW1hbmRfc3RhY2sKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZDNhNGU0NgotLS0gL2Rldi9udWxsCisrKyBiL2RvYy9lZnVuL2NvbW1hbmRfc3RhY2sKQEAgLTAsMCArMSwzNCBAQAorR0VTQ0hVRVRaVAorU1lOT1BTSVMKKyAgICAgICAgI2luY2x1ZGUgPHN5cy9jb21tYW5kcy5oPgorCisgICAgICAgICptaXhlZCBjb21tYW5kX3N0YWNrKCk7CisKK0JFU0NIUkVJQlVORworICAgICAgICBMaWVmZXJ0IGVpbiBBcnJheSwgZGFzIGRlbiBLb21tYW5kbyBTdGFjayBiZXNjaHJlaWJ0LiBEYXMgQXJyYXkKKyAgICAgICAgdW1mYXNzdCBjb21tYW5kX3N0YWNrX2RlcHRoKCkgRWludHJhZWdlLCBkZXIgZXJzdGUgZGF2b24gYmVzY2hyZWlidAorICAgICAgICBkYXMgVG9wLUxldmVsIEtvbW1hbmRvLCBkZXIgbGV0emUgRWludHJhZyBkYXMgYWt0dWVsbGUgS29tbWFuZG8uCisKKyAgICAgICAgSmVkZXIgRWludHJhZyBpc3Qgd2llZGVydW0gZWluIEFycmF5IG1pdCBmb2xnZW5kZW4gRWludHJhZWdlbjoKKworICAgICAgICAgICAgc3RyaW5nIFtDTURfVkVSQl06ICAgICAgZGFzIFZlcmIgZGllc2VzIEtvbW1hbmRvcworICAgICAgICAgICAgc3RyaW5nIFtDTURfVEVYVF06ICAgICAgZGVyIHZvbGxlIFRleHQgZGVzIEtvbW1hbmRvcworICAgICAgICAgICAgb2JqZWN0IFtDTURfT1JJR0lOXTogICAgZGVyIHVyc3BydWVuZ2xpY2hlIEtvbW1hbmRvZ2ViZXIKKyAgICAgICAgICAgIG9iamVjdCBbQ01EX1BMQVlFUl06ICAgIGRlciBtb21lbnRhbmUgS29tbWFuZG9nZWJlcgorICAgICAgICAgICAgbWl4ZWQgIFtDTURfRkFJTF06ICAgICAgZGVyIEluaGFsdCB2b24gbm90aWZ5X2ZhaWwoKSAob2RlciAwKQorICAgICAgICAgICAgbWl4ZWQgIFtDTURfRkFJTE9CSl06ICAgZGFzIE9iamVrdCwgd2VsY2hlcyBub3RpZnlfZmFpbCgpIGdlc2V0enQKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhhdAorCisgICAgICAgIENNRF9PUklHSU4gdW5kIENNRF9QTEFZRVIgc2luZCBmdWVyIGdld29oZW5saWNoIGRhcyBnbGVpY2hlIE9iamVrdC4KKyAgICAgICAgRXMgZ2lidCBudXIgZWluZW4gVW50ZXJzY2hpZWQsIHdlbm4gZGVyIG1vZGlmeV9jb21tYW5kIEhvb2sgZGVuCisgICAgICAgIEtvbW1hbmRvZ2ViZXIgbWl0IHNldF90aGlzX3BsYXllcigpIGFlbmRlcnQuCisKK0FFTkRFUlVOR0VOCisgICAgICAgIEVpbmdlZnVlaHJ0IGluIExETXVkIDMuMi43LgorICAgICAgICBMRE11ZCAzLjIuOCBmdWVndGUgZGVuIENNRF9GQUlMT0JKIEVpbnRyYWcgaGluenUuCisKK0FOTUVSS1VORworICAgICAgICBKZWRlciBkZXIgRWludHJhZWdlIGltIEFycmF5IGthbm4gMCBzZWluLgorCitTSUVIRSBBVUNICisgICAgICAgIGNvbW1hbmQoRSksIGNvbW1hbmRfc3RhY2tfZGVwdGgoRSksIG5vdGlmeV9mYWlsKEUpCmRpZmYgLS1naXQgYS9kb2MvZWZ1bi9jb21tYW5kX3N0YWNrX2RlcHRoIGIvZG9jL2VmdW4vY29tbWFuZF9zdGFja19kZXB0aApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4zNzIwNWI1Ci0tLSAvZGV2L251bGwKKysrIGIvZG9jL2VmdW4vY29tbWFuZF9zdGFja19kZXB0aApAQCAtMCwwICsxLDEzIEBACitHRVNDSFVFVFpUCitTWU5PUFNJUworICAgICAgICBpbnQgY29tbWFuZF9zdGFja19kZXB0aCgpOworCitCRVNDSFJFSUJVTkcKKyAgICAgICAgTGllZmVydCBkaWUgQW56YWhsIGRlciB2ZXJzY2hhY2h0ZWx0ZW4gS29tbWFuZGksIGFsc28gZGllIFRpZWZlIGRlcworICAgICAgICBDb21tYW5kIFN0YWNrcy4KKworQUVOREVSVU5HRU4KKyAgICAgICAgRWluZ2VmdWVocnQgaW4gTERNdWQgMy4yLjcuCisKK1NJRUhFIEFVQ0gKKyAgICAgICAgY29tbWFuZChFKSwgY29tbWFuZF9zdGFjayhFKQpkaWZmIC0tZ2l0IGEvZG9jL2VmdW4vY29uZmlndXJlX2RyaXZlciBiL2RvYy9lZnVuL2NvbmZpZ3VyZV9kcml2ZXIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZmEyNDA3YgotLS0gL2Rldi9udWxsCisrKyBiL2RvYy9lZnVuL2NvbmZpZ3VyZV9kcml2ZXIKQEAgLTAsMCArMSwxMzMgQEAKK1NZTk9QU0lTCisgICAgICAgICNpbmNsdWRlIDxjb25maWd1cmF0aW9uLmg+CisKKyAgICAgICAgdm9pZCBjb25maWd1cmVfZHJpdmVyKGludCB3aGF0LCBtaXhlZCBkYXRhKQorCitERVNDUklQVElPTgorICAgICAgICBUaGlzIGVmdW4gY29uZmlndXJlcyBydW50aW1lIGFkanVzdGFibGUgYmFodmlvdXIgb2YgdGhlIGRyaXZlci4KKworICAgICAgICBTZXRzIHRoZSBvcHRpb24gPHdoYXQ+IHRvIHRoZSB2YWx1ZSA8ZGF0YT4uCisKKyAgICAgICAgVGhpcyBmdW5jdGlvbiBhbHdheXMgY2F1c2VzIHRoZSBwcml2aWxlZ2VfdmlvbGF0aW9uCisgICAgICAgICgiY29uZmlndXJlX2RyaXZlciIsIHRoaXNfb2JqZWN0KCksIHdoYXQsIGRhdGEpLgorCisgICAgICAgIDx3aGF0PiA9PSBEQ19NRU1PUllfTElNSVQKKyAgICAgICAgICAgU2V0IG5ldyBzb2Z0IGFuZCBoYXJkIG1lbW9yeSBsaW1pdHMgZm9yIHRoZSBkcml2ZXIuCisgICAgICAgICAgIDxkYXRhPiBpcyBleHBlY3RlZCB0byBiZSBhbiBhcnJheSB3aXRoIHR3byBlbGVtZW50cywgd2hpY2ggaGF2ZSB0bworICAgICAgICAgICBiZSBpbnRlZ2VycyBnaXZpbmcgdGhlIGFtb3VudCBvZiBtZW1vcnkgaW4gYnl0ZXMuCisgICAgICAgICAgICh7PHNvZnQgbWVtb3J5IGxpbWl0PiwgPGhhcmQgbWVtb3J5IGxpbWl0Pn0pCisKKyAgICAgICAgPHdoYXQ+ID09IERDX0VOQUJMRV9IRUFSVF9CRUFUUworICAgICAgICAgICBHbG9iYWxseSBlbmFibGUgdGhlIGNhbGxpbmcgb2YgSGVhcnRiZWF0cywgaWYgPGRhdGE+IGlzIDEsCisgICAgICAgICAgIGdsb2JhbGx5IGRpc2FibGUgdGhlbSBpZiA8ZGF0YT4gaXMgMC4KKyAgICAgICAgICAgSWYgY2FsbGVkIGR1cmluZyBoZWFydGJlYXQgcHJvY2Vzc2luZywgdGhlIGNoYW5nZSBjb21lcyBpbnRvIGVmZmVjdAorICAgICAgICAgICBhdCB0aGUgbmV4dCBiYWNrZW5kIGN5Y2xlLgorCisgICAgICAgIDx3aGF0PiA9PSBEQ19MT05HX0VYRUNfVElNRQorICAgICAgICAgICBTZXQgdGhlIHRpbWUgY29uc2lkZXJlZCBhcyAodG9vKSBsb25nIGZvciB0b3AtbGV2ZWwgZXhlY3V0aW9ucy4gSWYKKyAgICAgICAgICAgYW4gZXhlY3V0aW9uIGV4Y2VlZHMgdGhpcyB0aW1lLCBhIHN0YWNrIHRyYWNlIHdpbGwgYmUgd3JpdHRlbiB0bworICAgICAgICAgICB0aGUgZGVidWcgbG9nLiBUaGUgZXhlY3V0aW9uIHdpbGwgY29udGludWUgYXQgdGhhdCBwb2ludC4KKyAgICAgICAgICAgPGRhdGE+IGlzIGFuIGludGVnZXIgYW5kIG1lYXN1cmVkIGluIG1pY3Jvc2Vjb25kcy4KKyAgICAgICAgICAgQSB0aW1lIG9mIDAgZGlzYWJsZXMgdGhlIGRldGVjdGlvbiBvZiBsb25nIGV4ZWN1dGlvbnMuCisKKyAgICAgICAgPHdoYXQ+ID09IERDX0RBVEFfQ0xFQU5fVElNRQorICAgICAgICAgICBTZXRzIHRoZSBhdmVyYWdlIHRpbWUgYmV0d2VlbiBjbGVhbi11cHMgb2YgYW4gb2JqZWN0cyBkYXRhCisgICAgICAgICAgIHN0cnVjdHVyZXMuIFRoaXMgaXMgbm90IHRvIGJlIGNvbmZ1c2VkIHdpdGggdGhlIHN0YW5kYXJkIGNsZWFudXAKKyAgICAgICAgICAgdGltZSB3aGljaCBkZXRlcm1pbmVzIHdoZW4gSF9DTEVBTl9VUCBpcyBjYWxsZWQuIEEgbG9uZyB0aW1lIGZvcgorICAgICAgICAgICBkYXRhIGNsZWFudXAgbWF5IGxlYWQgdG8gbGFyZ2VyIG1lbW9yeSBjb25zdW1wdGlvbiBhbmQgcHJldmVudHMKKyAgICAgICAgICAgZGVzdHJ1Y3RlZCBvYmplY3RzIGJlaW5nIGNsZWFuZWQgdXAuIEEgdG9vIHNob3J0IHRpbWUgbWF5IGxlYWQgdG8KKyAgICAgICAgICAgaGlnaCBsb2FkcyBhbmQgbGFnIG9uIHRoZSBtYWNoaW5lLiBUaGUgYWN0dWFsIHRpbWUgZGVsYXkgd2lsbCBiZSBhCisgICAgICAgICAgIHRpbWUgYmV0d2VlbiAwLjkqRENfREFUQV9DTEVBTl9USU1FIGFuZCAxLjEqRENfREFUQV9DTEVBTl9USU1FLgorICAgICAgICAgICBEZWZhdWx0IGF0IGRyaXZlciBzdGFydHVwIGFyZSAzNjAwcy4KKyAgICAgICAgICAgPGRhdGE+IGlzIGFuIGludGVnZXIgYW5kIG1lYXN1cmVkIGluIHNlY29uZHMuCisKKyAgICAgICAgPHdoYXQ+ID09IERDX1RMU19DRVJUSUZJQ0FURQorICAgICAgICAgICBTZXRzIHRoZSBjdXJyZW50IGNlcnRpZmljYXRlIHVzZWQgZm9yIG5ldyBUTFMgc2Vzc2lvbnMuCisgICAgICAgICAgIEl0IGNhbiBiZSBvbmUgb2YgdGhlIGNlcnRpZmljYXRlcyBpbiB0aGUga2V5IGRpcmVjdG9yeQorICAgICAgICAgICAoY29tbWFuZCBsaW5lIG9wdGlvbiAtLXRscy1rZXlkaXJlY3RvcnkpIG9yIHRoZSBtYWluCisgICAgICAgICAgIGNlcnRpZmljYXRlIChnaXZlbiB3aXRoIC0tdGxzLWNlcnRmaWxlKS4KKyAgICAgICAgICAgRGVmYXVsdCBpcyB0aGUgbWFpbiBjZXJ0aWZpY2F0ZSBvciBlbHNlIHRoZSBmaXJzdAorICAgICAgICAgICBjZXJ0aWZpY2F0ZSBmb3VuZCBpbiB0aGUgZGlyZWN0b3J5LiBUaGUgY2hvc2VuIGNlcnRpZmljYXRlIGF0IHRoZQorICAgICAgICAgICB0aW1lIG9mIHRoZSB0bHNfaW5pdF9jb25uZWN0aW9uKCkgY2FsbCBpcyB1c2VkIGZvciB0aGF0IGNvbm5lY3Rpb24uCisgICAgICAgICAgIDxkYXRhPiBpcyBhIHN0cmluZyBjb250YWluaW5nIHRoZSBTSEExIGZpbmdlcnByaW50CisgICAgICAgICAgIG9mIHRoZSBjZXJ0aWZpY2F0ZSB3aXRoIGhleGFkZWNpbWFsIG51bWJlcnMsCisgICAgICAgICAgIGl0IG1heSBjb250YWluIGNvbG9ucyBvciB3aGl0ZXNwYWNlcyAoZm9yIGV4YW1wbGUKKyAgICAgICAgICAgIjVBOkZFOkNBOjU3OjFFOjUwOjVFOjFFOkM3OkVEOkJBOjExOkFEOjUwOjEwOjc1OjBGOjdBOjFFOjUwIikuCisgICAgICAgICAgIFdoZW4gbG9hZGluZyBjZXJ0aWZpY2F0ZXMgdGhlaXIgZmluZ2VycHJpbnRzIGFyZSBwcmludGVkCisgICAgICAgICAgIG9uIHN0ZG91dCBhbmQgaW50byB0aGUgbG9nZmlsZS4KKworICAgICAgICA8d2hhdD4gPT0gRENfVExTX0RIRV9QQVJBTUVURVIKKyAgICAgICAgICAgU2V0cyBuZXcgcGFyYW1ldGVycyBmb3IgdGhlIERpZmZpZS1IZWxsbWFuIGtleWV4Y2hhbmdlIGZvciBuZXcgVExTCisgICAgICAgICAgIHNlc3Npb25zLiBUaGUgcGFyYW10ZXJzIG11c3QgYmUgZ2l2ZW4gYXMgYSBQRU0gZW5jb2RlZCBzdHJpbmcKKyAgICAgICAgICAgKGUuZy4gdGhlIG91dHB1dCBvZiAnb3BlbnNzbCBkaHBhcmFtIC01IDIwNDgnKS4KKyAgICAgICAgICAgSWYgPGRhdGE+IGlzIDAsIHRoZSBidWlsdC1pbiBkZWZhdWx0cyB3aWxsIGJlIHJlc3RvcmVkLgorICAgICAgICAgICBJZiBpbXBvcnRpbmcgdGhlIG5ldyBwYXJhbWV0ZXJzIGZhaWxzIChlLmcuIGR1ZSB0byBhbiBpbmNvcnJlY3QKKyAgICAgICAgICAgZm9ybWF0KSwgdGhlIGRyaXZlciB0cmllcyB0byBrZWVwIHRoZSBvbGQgcGFyYW1ldGVycyAKKworICAgICAgICA8d2hhdD4gPT0gRENfVExTX0NJUEhFUkxJU1QKKyAgICAgICAgICAgU2V0cyBhIG5ldyBsaXN0IG9mIGNpcGhlcnMgKE9wZW5TU0wpIG9yIHByaW9yaXRpZXMgKEdudVRMUykgdG8gdXNlLgorICAgICAgICAgICBGb3IgdGhlIGNvcnJlY3QgZm9ybWF0LCBwbGVhc2UgcmVmZXIgdG8gdGhlIGhlbHAgb2YgJ29wZW5zc2wKKyAgICAgICAgICAgY2lwaGVycycgb3IgZG9jdW1lbnRhdGlvbiBvZiBwcmlvcml0eSBzdHJpbmdzIGluIEdudVRMUy4KKyAgICAgICAgICAgV2l0aCBHbnVUTFMgYSBzeW50YXggZXJyb3IgaW4gdGhlIGxpc3QgY2F1c2VzIGFuIGVycm9yLgorICAgICAgICAgICBXaXRoIE9wZW5TU0wgYW4gZXJyb3IgaXMgb25seSByYWlzZWQgb2Ygbm9uZSBvZiB0aGUgZ2l2ZW4gY2lwaGVycworICAgICAgICAgICBjb3VsZCBiZSBzZWxlY3RlZC4KKyAgICAgICAgICAgQnkgZGVmYXVsdCwgdGhlIHByZWZlcnJlZCBjaXBoZXJzIG9mIHRoZSBkcml2ZXIgdGFrZSBwcmVjZWRlbmNlCisgICAgICAgICAgIFRoaXMgY2FuIGJlIGNoYW5nZWQgaW4gdGhlIHByaW9yaXR5IHN0cmluZ3MgZm9yIEdudVRMUywgYnV0CisgICAgICAgICAgIGN1cnJlbnRseSBub3QgZm9yIE9wZW5TU0wuCisKKyAgICAgICAgPHdoYXQ+ID09IERDX0VYVFJBX1dJWklORk9fU0laRQorICAgICAgICAgICBJbmRpY2F0ZSB0aGF0IHRoZSB3aXpsaXN0IHNob3VsZCBjb250YWluIGFuIGFycmF5IG9mIHRoZSBnaXZlbiBzaXplCisgICAgICAgICAgIHdpdGggZXh0cmEgaW5mbyBmb3IgZWFjaCB3aXphcmQuIEEgbmVnYXRpdmUgdmFsdWUgaW5kaWNhdGVzCisgICAgICAgICAgIGEgbm9uLWFycmF5IHZhbHVlLgorCisgICAgICAgICAgIFRoZSB2YWx1ZSBpcyBvbmx5IHVzZWQgdG8gYWxsb2NhdGUgYSBwcm9wZXIgZW1wdHkgJ2V4dHJhJyB2YWx1ZQorICAgICAgICAgICBmb3IgbmV3bHkgY3JlYXRlZCB3aXpsaXN0IGVudHJpZXMuCisKKyAgICAgICAgPHdoYXQ+ID09IERDX0RFRkFVTFRfUlVOVElNRV9MSU1JVFMKKyAgICAgICAgICAgU2V0cyB0aGUgZGVmYXVsdCBydW50aW1lIGxpbWl0cywgdGhhdCB3aWxsIGJlIHVzZWQgZm9yIGVhY2ggdGhyZWFkLgorICAgICAgICAgICBUaGV5IHdpbGwgYmUgaW4gZWZmZWN0IGFzIHRoZSBpbml0aWFsIGxpbWl0cyB3aXRoIHRoZSBuZXh0IHRocmVhZC4KKyAgICAgICAgICAgVGhlIGxpbWl0cyBtdXN0IGJlIGdpdmVuIGFzIGFuIGFycmF5IHdpdGggdGhlIGZvbGxvd2luZyBlbnRyaWVzOgorCisgICAgICAgICAgICAgaW50W0xJTUlUX0VWQUxdOiAgICAgICAgIHRoZSBtYXggbnVtYmVyIG9mIGV2YWwgY29zdHMKKyAgICAgICAgICAgICBpbnRbTElNSVRfQVJSQVldOiAgICAgICAgdGhlIG1heCBudW1iZXIgb2YgYXJyYXkgZW50cmllcworICAgICAgICAgICAgIGludFtMSU1JVF9NQVBQSU5HX1NJWkVdOiB0aGUgbWF4IG51bWJlciBvZiBtYXBwaW5nIHZhbHVlcworICAgICAgICAgICAgIGludFtMSU1JVF9NQVBQSU5HX0tFWVNdOiB0aGUgbWF4IG51bWJlciBvZiBtYXBwaW5nIGVudHJpZXMKKyAgICAgICAgICAgICBpbnRbTElNSVRfQllURV06ICAgICAgICAgdGhlIG1heCBudW1iZXIgb2YgYnl0ZXMgaGFuZGxlZCB3aXRoCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9uZSByZWFkX2J5dGVzKCkvd3JpdGVfYnl0ZXMoKSBjYWxsLgorICAgICAgICAgICAgIGludFtMSU1JVF9GSUxFXTogICAgICAgICB0aGUgbWF4IG51bWJlciBvZiBieXRlcyBoYW5kbGVkIHdpdGgKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb25lIHJlYWRfZmlsZSgpL3dyaXRlX2ZpbGUoKSBjYWxsLgorICAgICAgICAgICAgIGludFtMSU1JVF9DQUxMT1VUU106ICAgICB0aGUgbnVtYmVyIG9mIGNhbGxvdXRzIGF0IG9uZSB0aW1lLgorICAgICAgICAgICAgIGludFtMSU1JVF9DT1NUXTogICAgICAgICBob3cgdG8gYWNjb3VudCB0aGUgY3VycmVudCBjb3N0LgorICAgICAgICAgICAgIGludFtMSU1JVF9NRU1ST1ldOiAgICAgICB0aGUgbWF4LiBudW1iZXIgb2YgYnl0ZXMgd2hpY2ggY2FuIGJlIAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9hZGRpdGlvbmFsbHlfIGFsbG9jYXRlZC91c2VkCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX3BlciB0b3AtbGV2ZWwgZXhlY3V0aW9uIHRocmVhZF8uCisKKyAgICAgICAgICBUaGUgbGltaXQgc2V0dGluZ3MgcmVjb2duaXplIHRocmVlIHNwZWNpYWwgdmFsdWVzOgorCisgICAgICAgICAgICBMSU1JVF9VTkxJTUlURUQ6ICB0aGUgbGltaXQgaXMgZGVhY3RpdmF0ZWQKKyAgICAgICAgICAgIExJTUlUX0tFRVA6ICAgICAgIHRoZSBmb3JtZXIgc2V0dGluZyBpcyBrZXB0CisgICAgICAgICAgICBMSU1JVF9ERUZBVUxUOiAgICB0aGUgJ2dsb2JhbCcgZGVmYXVsdCBzZXR0aW5nIGlzIHVzZWQuCisKKyAgICAgICAgICBGb3IgTElNSVRfQ09TVCwgdGhlIHNwZWNpYWwgdmFsdWVzIGhhdmUgdGhlc2UgbWVhbmluZzoKKyAgICAgICAgICAgIExJTUlUX1VOTElNSVRFRDogIGF0IG1heGltdW0gMSB0aWNrIGlzIGFjY291bnRlZAorICAgICAgICAgICAgTElNSVRfS0VFUDogICAgICAgIExJTUlUX0NPU1QgaXMgc2V0IHRvIDAKKyAgICAgICAgICAgIExJTUlUX0RFRkFVTFQ6ICAgICBMSU1JVF9DT1NUIGlzIHNldCB0byAtMTAwCisKKyAgICAgICAgPHdoYXQ+ID09IERDX1NXQVBfQ09NUEFDVF9NT0RFCisgICAgICAgICAgIFNldHMgZnJlZSBzd2FwIHNwYWNlIHNoYWxsIGJlIHJldXNlZCBpbW1lZGlhdGVseSB0byBrZWVwCisgICAgICAgICAgIHRoZSBzd2FwIGZpbGUgYXMgc21hbGwgYXMgcG9zc2libGUuCisgICAgICAgICAgIChTYW1lIGFzIHRoZSAtLXN3YXAtY29tcGFjdCBjb21tYW5kIGxpbmUgc3dpdGNoLikKKworSElTVE9SWQorICAgICAgICBJbnRyb2R1Y2VkIGluIExETXVkIDMuMy43MTkuCisgICAgICAgIERDX0VOQUJMRV9IRUFSVF9CRUFUUyB3YXMgYWRkZWQgaW4gMy41LjAuCisgICAgICAgIERDX0xPTkdfRVhFQ19USU1FIHdhcyBhZGRlZCBpbiAzLjUuMC4KKyAgICAgICAgRENfREFUQV9DTEVBTl9USU1FIHdhcyBhZGRlZCBpbiAzLjUuMC4KKyAgICAgICAgRENfRVhUUkFfV0laSU5GT19TSVpFIHdhcyBhZGRlZCBpbiAzLjUuMC4KKyAgICAgICAgRENfVExTX0NFUlRJRklDQVRFIHdhcyBhZGRlZCBpbiAzLjUuMC4KKyAgICAgICAgRENfVExTX0RIRV9QQVJBTUVURVIgd2FzIGFkZGVkIGluIDMuNS4wLgorICAgICAgICBEQ19UTFNfQ0lQSEVSTElTVCB3YXMgYWRkZWQgaW4gMy41LjAuCisgICAgICAgIERDX1NXQVBfQ09NUEFDVF9NT0RFIHdhcyBhZGRlZCBpbiAzLjUuMC4KKworU0VFIEFMU08KKyAgICAgICAgY29uZmlndXJlX2ludGVyYWN0aXZlKEUpCmRpZmYgLS1naXQgYS9kb2MvZWZ1bi9jb25maWd1cmVfaW50ZXJhY3RpdmUgYi9kb2MvZWZ1bi9jb25maWd1cmVfaW50ZXJhY3RpdmUKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYjdkMTQ1ZAotLS0gL2Rldi9udWxsCisrKyBiL2RvYy9lZnVuL2NvbmZpZ3VyZV9pbnRlcmFjdGl2ZQpAQCAtMCwwICsxLDEzOSBAQAorU1lOT1BTSVMKKyAgICAgICAgI2luY2x1ZGUgPGNvbmZpZ3VyYXRpb24uaD4KKworICAgICAgICB2b2lkIGNvbmZpZ3VyZV9pbnRlcmFjdGl2ZShvYmplY3Qgb2IsIGludCB3aGF0LCBtaXhlZCBkYXRhKQorCitERVNDUklQVElPTgorICAgICAgICBTZXRzIHRoZSBvcHRpb24gPHdoYXQ+IHRvIHRoZSB2YWx1ZSA8ZGF0YT4gb24gdGhlIGludGVyYWN0aXZlIDxvYj4KKyAgICAgICAgb3IgdGhlIGRlZmF1bHQgZm9yIGFsbCBpbnRlcmFjdGl2ZXMgaWYgPG9iPiBpcyAwLgorCisgICAgICAgIElmIHRoZSBmaXJzdCBhcmd1bWVudCA8b2I+IGlzIG5vdCB0aGlzX29iamVjdCgpLCB0aGUgcHJpdmlsZWdlCisgICAgICAgIHZpb2xhdGlvbiAoImNvbmZpZ3VyZV9pbnRlcmFjdGl2ZSIsIHRoaXNfb2JqZWN0KCksIG9iLCB3aGF0LCBkYXRhKQorICAgICAgICBvY2N1cnMuCisKKyAgICAgICAgQXMgPHdoYXQ+LCB0aGUgZm9sbG93aW5nIGFyZ3VtZW50cyBhcmUgYWNjZXB0ZWQ6CisKKyAgICAgICAgPHdoYXQ+ID09IElDX01BWF9XUklURV9CVUZGRVJfU0laRQorICAgICAgICAgIFNldHMgdGhlIG1heGltdW0gYW1vdW50IG9mIGRhdGEgdG8gYmUgaGVsZCBwZW5kaW5nIGZvciB3cml0aW5nCisgICAgICAgICAgcGVyIHBsYXllciB0byA8ZGF0YT4gYnl0ZXMuIEEgdmFsdWUgb2YgLTEgbWVhbnMgdW5saW1pdGVkLAorICAgICAgICAgIDAgZGVhY3RpdmF0ZXMgdGhlIHdyaXRlIGJ1ZmZlci4KKworICAgICAgICA8d2hhdD4gPT0gSUNfU09DS0VUX0JVRkZFUl9TSVpFCisgICAgICAgICAgQ2hhbmdlcyB0aGUgc29ja2V0IGJ1ZmZlciBzaXplIHRvIHRoZSBnaXZlbiBzaXplIGluIGJ5dGVzLgorICAgICAgICAgIE5vdCBldmVyeSBvcGVyYXRpbmcgc3lzdGVtIG1pZ2h0IHByb3ZpZGUgdGhpcyBvcHRpb24gdG8KKyAgICAgICAgICBjaGFuZ2UgdGhlIGJ1ZmZlciBzaXplLgorCisgICAgICAgICAgVGhlIGJ1ZmZlciBzaXplIGlzIHVzZWQgZm9yIHNlbmRpbmcsIHdoZW4gdGhlIHJlbW90ZSBzaWRlIGlzbid0CisgICAgICAgICAgZ2V0dGluZyB0aGUgZGF0YSBmYXN0IGVub3VnaC4gV2hlbiB0aGUgc29ja2V0IGJ1ZmZlciBpcyBmdWxsLAorICAgICAgICAgIHRoZSBkcml2ZXIgd2lsbCBidWZmZXIgaW4gaXRzIGludGVybmFsIHdyaXRlIGJ1ZmZlciAoc2VlCisgICAgICAgICAgSUNfTUFYX1dSSVRFX0JVRkZFUl9TSVpFKS4gV2hlbiB0aGF0IGdldHMgZnVsbCwgdG9vLCB0aGVuCisgICAgICAgICAgbWVzc2FnZXMgYXJlIGRpc2NhcmRlZC4KKworICAgICAgICA8d2hhdD4gPT0gSUNfQ09NQklORV9DSEFSU0VUX0FTX1NUUklORworICAgICAgICAgIFNldCB0aGUgc2V0IG9mIGNoYXJhY3RlcnMgd2hpY2ggY2FuIGJlIGNvbWJpbmVkIGludG8gYSBzaW5nbGUKKyAgICAgICAgICBzdHJpbmcgd2hlbiBhbHJlYWR5IHJlY2VpdmVkIGVuLWJsb2MgaW4gY2hhcm1vZGUgZnJvbSB0aGUKKyAgICAgICAgICBpbnRlcmFjdGl2ZSB1c2VyIDxvYj4uIE5vbi1jb21iaW5hYmxlIGNoYXJhY3RlcnMgYW5kIHNpbmdsZQorICAgICAgICAgIHJlY2VpdmVkIGNoYXJhY3RlcnMgYXJlIHJldHVybmVkIGFzIHNlcGFyYXRlIHN0cmluZ3MgYXMgdXN1YWwuCisKKyAgICAgICAgICBUaGUgbmV3bGluZSAnXG4nIGFuZCB0aGUgTlVMIGNoYXJhY3RlciAnXDAnIGFyZSBhbHdheXMKKyAgICAgICAgICBub24tY29tYmluYWJsZS4KKworICAgICAgICAgIFRoZSBnaXZlbiBzdHJpbmcgc2hvdWxkIGNvbnRhaW4gYWxsIGNvbWJpbmFibGUgY2hhcmFjdGVycy4KKyAgICAgICAgICBJZiBnaXZlbiBhcyB0aGUgbnVtYmVyIDAsIHRoZSBkZWZhdWx0IGNvbWJpbmUgY2hhcnNldCBpcworICAgICAgICAgIHJlLWVzdGFibGlzaGVkLgorCisgICAgICAgIDx3aGF0PiA9PSBJQ19DT01CSU5FX0NIQVJTRVRfQVNfQVJSQVkKKyAgICAgICAgICBTZXQgdGhlIHNldCBvZiBjaGFyYWN0ZXJzIHdoaWNoIGNhbiBiZSBjb21iaW5lZCBpbnRvIGEgc2luZ2xlCisgICAgICAgICAgc3RyaW5nLCBqdXN0IGxpa2UgSUNfQ09NQklORV9DSEFSU0VUX0FTX1NUUklORy4KKworICAgICAgICAgIFRoZSBnaXZlbiBhcnJheSBzaGFsbCBjb250YWluIGFuIGFycmF5IG9mIHVwIHRvIDMyIGludGVnZXJzCisgICAgICAgICAgdGhhdCBhcmUgaW50ZXJwcmV0ZWQgYXMgOC1iaXQtdmFsdWVzLiBFYWNoIGNoYXJhY3RlciBpcyBlbmNvZGVkCisgICAgICAgICAgYXMgb25lIGJpdCAoQVNDSUkgY2hhcmFjdGVycyAwLTcgaW4gdGhlIGZpcnN0IGludGVnZXIsIGFuZCBzbyBvbikuCisgICAgICAgICAgU28gYSBjaGFyYWN0ZXIgPG4+IGlzIHRyZWF0ZWQgYXMgY29tYmluYWJsZSBpZgorCisgICAgICAgICAgICAgIGFycmF5W24vOF0gJiAoMSA8PCBuJTgpCisKKyAgICAgICAgICBJZiB0aGUgYXJyYXkgY29udGFpbnMgbGVzcyBlbGVtZW50cywgdGhlIG1pc3NpbmcgZWxlbWVudHMgd2lsbAorICAgICAgICAgIGJlIHJlZ2FyZGVkIGFzIDAgKG5vbi1jb21iaW5hYmxlIGNoYXJhY3RlcnMpLgorCisgICAgICAgIDx3aGF0PiA9PSBJQ19DT05ORUNUSU9OX0NIQVJTRVRfQVNfU1RSSU5HCisgICAgICAgICAgU2V0IHRoZSBzZXQgb2YgY2hhcmFjdGVycyB3aGljaCBjYW4gYmUgb3V0cHV0IHRvIHRoZSBpbnRlcmFjdGl2ZQorICAgICAgICAgIHVzZXIgPG9iPi4gQWxsIG90aGVyIGNoYXJhY3RlcnMgYXJlIGRpc2NhcmRlZC4gKFRoaXMgZG9lcyBub3QKKyAgICAgICAgICBhcHBseSB0byBiaW5hcnlfbWVzc2FnZSgpKS4KKworICAgICAgICAgIFRoZSBnaXZlbiBzdHJpbmcgc2hvdWxkIGNvbnRhaW4gYWxsIGFsbG93ZWQgY2hhcmFjdGVycy4KKyAgICAgICAgICBJZiBnaXZlbiBhcyB0aGUgbnVtYmVyIDAsIHRoZSBkZWZhdWx0IGNoYXJzZXQgaXMgcmUtZXN0YWJsaXNoZWQuCisKKyAgICAgICAgPHdoYXQ+ID09IElDX0NPTk5FQ1RJT05fQ0hBUlNFVF9BU19BUlJBWQorICAgICAgICAgIFNldCB0aGUgc2V0IG9mIGNoYXJhY3RlcnMgd2hpY2ggY2FuIGJlIG91dHB1dCB0byB0aGUgaW50ZXJhY3RpdmUKKyAgICAgICAgICB1c2VyIDxvYj4sIGp1c3QgbGlrZSBJQ19DT05ORUNUSU9OX0NIQVJTRVRfQVNfU1RSSU5HLgorCisgICAgICAgICAgVGhlIGdpdmVuIGFycmF5IHNoYWxsIGNvbnRhaW4gYW4gYXJyYXkgb2YgdXAgdG8gMzIgaW50ZWdlcnMKKyAgICAgICAgICB0aGF0IGFyZSBpbnRlcnByZXRlZCBhcyA4LWJpdC12YWx1ZXMuIEVhY2ggY2hhcmFjdGVyIGlzIGVuY29kZWQKKyAgICAgICAgICBhcyBvbmUgYml0IChBU0NJSSBjaGFyYWN0ZXJzIDAtNyBpbiB0aGUgZmlyc3QgaW50ZWdlciwgYW5kIHNvIG9uKS4KKyAgICAgICAgICBTbyBhIGNoYXJhY3RlciA8bj4gaXMgYWxsb3dlZCB0byBiZSBvdXRwdXQgaWYKKworICAgICAgICAgICAgICBhcnJheVtuLzhdICYgKDEgPDwgbiU4KQorCisgICAgICAgICAgSWYgdGhlIGFycmF5IGNvbnRhaW5zIGxlc3MgZWxlbWVudHMsIHRoZSBtaXNzaW5nIGVsZW1lbnRzIHdpbGwKKyAgICAgICAgICBiZSByZWdhcmRlZCBhcyAwIChub3QgYWxsb3dlZCwgaWUuIHRvIGJlIGRpc2NhcmRlZCkuCisKKyAgICAgICAgPHdoYXQ+ID09IElDX1FVT1RFX0lBQworICAgICAgICAgIFNldHMgd2hldGhlciB0aGUgY2hhcmFjdGVyIDI1NSAodGVsbmV0IElBQykgc2hhbGwgYmUgcXVvdGVkCisgICAgICAgICAgYnkgcHJlcGVuZGluZyBhbm90aGVyIElBQyBjaGFyYWN0ZXIsIHNvIGl0IHdpbGwgbm90IGJlIGludGVycHJldGVkCisgICAgICAgICAgYnkgdGhlIHRlbG5ldCBwcm90b2NvbC4gRW5hYmxlIHdpdGggMSwgZGlzYWJsZSB3aXRoIDAuIEJ5IGRlZmF1bHQKKyAgICAgICAgICBpdCBpcyBlbmFibGVkIGFuZCBkb2VzIG9ubHkgYXBwbHkgaWYgY2hhcmFjdGVyIDI1NSBpcyBhbGxvd2VkIHRvCisgICAgICAgICAgYmUgb3V0cHV0IChpZS4gaXQgaXMgcGFydCBvZiB0aGUgY29ubmVjdGlvbiBjaGFyc2V0KS4KKworICAgICAgICA8d2hhdD4gPT0gSUNfVEVMTkVUX0VOQUJMRUQKKyAgICAgICAgICBFbmFibGVzICgxKSBvciBkaXNhYmxlcyAoMCkgdGhlIHRlbG5ldCBtYWNoaW5lIGZvciB0aGUgaW50ZXJhY3RpdmUKKyAgICAgICAgICB1c2VyIDxvYj4uIFdoZW4gZGVhY3RpdmF0ZWQgdGhlIGRyaXZlciB3b24ndCBoYW5kbGUgdGVsbmV0CisgICAgICAgICAgbmVnb3RpYXRpb25zIChlZy4gSF9URUxORVRfTkVHIHdvbid0IGJlIGNhbGxlZCksIHRoZXkgd2lsbCBiZQorICAgICAgICAgIHBhcnQgb2YgdGhlIHVzZXIgaW5wdXQuIEFsc28gSU5QVVRfTk9FQ0hPIHdvbid0IGJlIGVmZmVjdGl2ZQorICAgICAgICAgIGFzIHRoZSBkcml2ZXIgd29uJ3Qgc2VuZCBhbnkgdGVsbmV0IG5lZ290aWF0aW9ucyBpdHNlbGYuCisKKyAgICAgICAgPHdoYXQ+ID09IElDX01DQ1AKKyAgICAgICAgICBTdGFydHMgb2RlciBlbmRzIE1DQ1AgY29tcHJlc3Npb24gb2YgdGhlIGRyaXZlciAtPiBjbGllbnQgdHJhZmZpYy4KKyAgICAgICAgICA8ZGF0YT4gbXVzdCBiZSB0aGUgTUNDUCB2ZXJzaW9uIChlaXRoZXIgVEVMT1BUX0NPTVBSRVNTIG9yCisgICAgICAgICAgVEVMT1BUX0NPTVBSRVNTMiBmcm9tIDx0ZWxuZXQuaD4pLiBXaGVuIHRoZSB0ZWxuZXQgbWFjaGluZQorICAgICAgICAgIGlzIGRpc2FibGVkLCBhbnkgdmFsdWUgb3RoZXIgdGhlbiB6ZXJvIHdpbGwgZG8sIGFuZCB0aGUgY29tcHJlc3Npb24KKyAgICAgICAgICBzdGFydHMgd2l0aG91dCBhIHRlbG5ldCBwcmVhbWJsZS4KKworICAgICAgICAgIEF2YWlsYWJsZSBvbmx5IGlmIHRoZSBkcml2ZXIgaXMgY29tcGlsZWQgd2l0aCBNQ0NQIGVuYWJsZWQ7CisgICAgICAgICAgX19NQ0NQX18gaXMgZGVmaW5lZCBpbiB0aGF0IGNhc2UuCisKKyAgICAgICAgPHdoYXQ+ID09IElDX1BST01QVAorICAgICAgICAgIFNldHMgdGhlIHByb21wdCBmb3IgdGhlIGludGVyYWN0aXZlIHVzZXIgPG9iPiB0byA8ZGF0YT4uIFRoZQorICAgICAgICAgIHByb21wdCBjYW4gZWl0aGVyIGJlIGEgc3RyaW5nIG9yIGEgY2xvc3VyZSB0aGF0IHdpbGwgYmUgY2FsbGVkCisgICAgICAgICAgZWFjaCB0aW1lIHRoZSBwcm9tcHQgaXMgc2hvd24uCisKKyAgICAgICAgPHdoYXQ+ID09IElDX01BWF9DT01NQU5EUworICAgICAgICAgIFNldHMgdGhlIG1heCBudW1iZXIgb2YgY29tbWFuZHMgdGhlIGludGVyYWN0aXZlIHVzZXIgPG9iPiBpcworICAgICAgICAgIGFsbG93ZWQgdG8gZXhlY3V0ZSBwZXIgc2Vjb25kIHRvIDxkYXRhPi4gQSBuZWdhdGl2ZSB2YWx1ZSBtZWFucworICAgICAgICAgICd1bmxpbWl0ZWQnIGFuZCBpcyB0aGUgc2V0dGluZyBmb3IgbmV3bHkgY3JlYXRlZCBjb25uZWN0aW9ucy4KKworICAgICAgICAgIEEgJ2NvbW1hbmQnIGluIHRoaXMgY29udGV4dCBtZWFucyBldmVyeSByZWNlaXZlZCBkYXRhIHBhY2tldAorICAgICAgICAgIHdoaWNoIGNhdXNlcyBhIExQQyBjYWxsIC0gYWN0aW9ucyBhbmQgY2FsbHMgdG8gaW5wdXRfdG8oKQorICAgICAgICAgIGFsaWtlLgorCisgICAgICAgIDx3aGF0PiA9PSBJQ19NT0RJRllfQ09NTUFORAorICAgICAgICAgIFNldHMgYW4gb2JqZWN0IHRoYXQgd2lsbCBhY3QgYXMgYSBtb2RpZmllciBmb3IgZWFjaCBjb21tYW5kLgorICAgICAgICAgIEFsbCBjb21tYW5kcyBmb3IgdGhlIGludGVyYWN0aXZlIHVzZXIgPG9iPiB3aWxsIGJlIHBhc3NlZCB0bworICAgICAgICAgIGRhdGEtPm1vZGlmeV9jb21tYW5kKCkgYmVmb3JlIGFjdHVhbGx5IGJlaW5nIGV4ZWN1dGVkLgorICAgICAgICAgIDxkYXRhPiBtdXN0IGJlIGdpdmVuIGFzIGFuIG9iamVjdC4KKworICAgICAgICAgIFdoZW4gYW4gb2JqZWN0IGlzIHNldCwgdGhlIEhfTU9ESUZZX0NPTU1BTkQgaG9vayB3b250IGJlCisgICAgICAgICAgY2FsbGVkIGFueW1vcmUuIDAgYXMgYXJndW1lbnQgd2lsbCBzdG9wIHRoZSBjb21tYW5kIG1vZGlmaWNhdGlvbgorICAgICAgICAgIGFuZCByZWluc3RhbGwgdGhlIHVzZSBvZiB0aGF0IGRyaXZlciBob29rLgorCisgICAgICAgICAgVGhpcyBtZWNoYW5pc20gaXMgaW50ZW5kZWQgdG8gZXhwYW5kIGFsaWFzZXMgb24gcXVpY2t0eXBlcnMKKyAgICAgICAgICBvciB0aGUgbGlrZS4gVGhlIG5hbWUgb2YgdGhlIGxmdW4gY2FsbGVkIGNhbiBiZSBjaGFuZ2VkCisgICAgICAgICAgZnJvbSBtb2RpZnlfY29tbWFuZCgpIHRvIHNvbWV0aGluZyBlbHNlIHVzaW5nIHRoZQorICAgICAgICAgIEhfTU9ESUZZX0NPTU1BTkRfRk5BTUUgaG9vay4KKworCitISVNUT1JZCisgICAgICAgIEludHJvZHVjZWQgaW4gTERNdWQgMy4zLjcxOS4KKworU0VFIEFMU08KKyAgICAgICAgY29uZmlndXJlX2RyaXZlcihFKQpkaWZmIC0tZ2l0IGEvZG9jL2VmdW4vY29uZmlndXJlX29iamVjdCBiL2RvYy9lZnVuL2NvbmZpZ3VyZV9vYmplY3QKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOWE1NDc4OQotLS0gL2Rldi9udWxsCisrKyBiL2RvYy9lZnVuL2NvbmZpZ3VyZV9vYmplY3QKQEAgLTAsMCArMSw0MSBAQAorU1lOT1BTSVMKKyAgICAgICAgI2luY2x1ZGUgPGNvbmZpZ3VyYXRpb24uaD4KKworICAgICAgICB2b2lkIGNvbmZpZ3VyZV9vYmplY3Qob2JqZWN0IG9iLCBpbnQgd2hhdCwgbWl4ZWQgZGF0YSkKKworREVTQ1JJUFRJT04KKyAgICAgICAgU2V0cyB0aGUgb3B0aW9uIDx3aGF0PiB0byB0aGUgdmFsdWUgPGRhdGE+IG9uIHRoZSBvYmplY3QgPG9iPgorICAgICAgICBvciB0aGUgZGVmYXVsdCBmb3IgYWxsIGludGVyYWN0aXZlcyBpZiA8b2I+IGlzIDAuCisKKyAgICAgICAgSWYgdGhlIGZpcnN0IGFyZ3VtZW50IDxvYj4gaXMgbm90IHRoaXNfb2JqZWN0KCksIHRoZSBwcml2aWxlZ2UKKyAgICAgICAgdmlvbGF0aW9uICgiY29uZmlndXJlX29iamVjdCIsIHRoaXNfb2JqZWN0KCksIG9iLCB3aGF0LCBkYXRhKQorICAgICAgICBvY2N1cnMuCisKKyAgICAgICAgQXMgPHdoYXQ+LCB0aGUgZm9sbG93aW5nIGFyZ3VtZW50cyBhcmUgYWNjZXB0ZWQ6CisKKyAgICAgICAgPHdoYXQ+ID09IE9DX0NPTU1BTkRTX0VOQUJMRUQKKyAgICAgICAgICBTZXRzIHdoZXRoZXIgPG9iPiBjYW4gdXNlIGNvbW1hbmRzIG5vcm1hbGx5IGFjY2Vzc2libGUgdG8KKyAgICAgICAgICB1c2VycyAoMSkgb3Igbm90ICgwKS4gVGhpcyBhbHNvIG1hcmtzIHRoZSBvYmplY3QgYXMgImxpdmluZyIuCisKKyAgICAgICAgPHdoYXQ+ID09IE9DX0hFQVJUX0JFQVQKKyAgICAgICAgICBFbmFibGVzICgxKSBvciBkaXNhYmxlcyAoMCkgdGhlIGhlYXJ0IGJlYXQgZm9yIDxvYj4uIFRoZQorICAgICAgICAgIGRyaXZlciB3aWxsIGFwcGx5IHRoZSBsZnVuIGhlYXJ0X2JlYXQoKSB0byB0aGUgPG9iPiBldmVyeQorICAgICAgICAgIF9fSEVBUlRCRUFUX0lOVEVSVkFMX18gc2Vjb25kcywgaWYgaXQgaXMgZW5hYmxlZC4KKyAgICAgICAgICBBIHNoYWRvdyBvdmVyIHRoZSBoZWFydF9iZWF0KCkgbGZ1biB3aWxsIGJlIGlnbm9yZWQuCisKKyAgICAgICAgICBJZiB0aGUgaGVhcnQgYmVhdCBpcyBub3QgbmVlZGVkIGZvciB0aGUgbW9tZW50LCB0aGVuIGRvIGRpc2FibGUKKyAgICAgICAgICBpdC4gVGhpcyB3aWxsIHJlZHVjZSBzeXN0ZW0gb3ZlcmhlYWQuCisKKyAgICAgICAgICBOb3RlIHRoYXQgaGVhcnRfYmVhdCgpcyBhcmUgY2FsbGVkIG9ubHkgaWYgdGhlcmUgYXJlIGVuYWJsZWQKKyAgICAgICAgICB2aWEgY29uZmlndWVyX2RyaXZlcihEQ19FTkFCTEVfSEVBUlRfQkVBVFMpLCB3aGljaCBpcyB0aGUKKyAgICAgICAgICBkZWZhdWx0LgorCisKKyAgICAgICAgVGhlIGN1cnJlbnQgdmFsdWVzIGZvciB0aGVzZSBvcHRpb25zIGNhbiBiZSBxdWVyaWVkIHVzaW5nCisgICAgICAgIG9iamVjdF9pbmZvKCkuCisKK0hJU1RPUlkKKyAgICAgICAgSW50cm9kdWNlZCBpbiBMRE11ZCAzLjUuMC4KKworU0VFIEFMU08KKyAgICAgICAgb2JqZWN0X2luZm8oRSksIGNvbmZpZ3VyZV9pbnRlcmFjdGl2ZShFKSwgY29uZmlndXJlX2RyaXZlcihFKQpkaWZmIC0tZ2l0IGEvZG9jL2VmdW4vY29udmVydF9jaGFyc2V0IGIvZG9jL2VmdW4vY29udmVydF9jaGFyc2V0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjU2N2NlNjUKLS0tIC9kZXYvbnVsbAorKysgYi9kb2MvZWZ1bi9jb252ZXJ0X2NoYXJzZXQKQEAgLTAsMCArMSw5NCBAQAorU1lOT1BTSVMKKyAgICAgICAgc3RyaW5nIGNvbnZlcnRfY2hhcnNldChzdHJpbmcgc3RyLCBzdHJpbmcgZnJvbV9jcywgc3RyaW5nIHRvX2NzKQorCitCRVNDSFJFSUJVTkcKKyAgICAgICAgRGVyIFN0cmluZyA8c3RyPiB3aXJkIHZvbiBaZWljaGVuc2F0eiA8ZnJvbV9jcz4gaW4gWmVpY2hlbnNhdHoKKyAgICAgICAgPHRvX2NzPiB1bWdld2FuZGVsdCB1bmQgZGFzIEVyZ2VibmlzIHp1cnVlY2tnZWdlYmVuLgorCisgICAgICAgIERpZSBaZWljaGVuc2FldHplIHdlcmRlbiBiZWkgTmFtZW4gYW5nZWdlYmVuIChzb3dvaGwgS2xlaW4tCisgICAgICAgIGFscyBhdWNoIEdyb3Nzc2NocmlmdCBpc3QgenVsYWVzc2lnKS4KKworICAgICAgICBEaWUgRnVua3Rpb24gaXN0IG51ciB2ZXJmdWVnYmFyIGF1ZiBTeXN0ZW1lbiBtaXQgaW5zdGFsbGllcnRlcgorICAgICAgICBsaWJpY29udi4KKworICAgICAgICBFcmxhdWJ0ZSBaZWljaGVuc2FldHplIHNpbmQ6CisKKyAgICAgICAgICAgRGVyIGRlcnplaXRpZ2UgU3lzdGVtemVpY2hlbnNhdHo6CisgICAgICAgICAgICAgICAiIiAoZGVyIExlZXJzdHJpbmcpCisKKyAgICAgICAgICAgRXVyb3BlYW4gCisgICAgICAgICAgICAgICBBU0NJSSwgSVNPLTg4NTktezEsMiwzLDQsNSw3LDksMTAsMTMsMTQsMTUsMTZ9LCBLT0k4LVIsIEtPSTgtVSwKKyAgICAgICAgICAgICAgIEtPSTgtUlUsIENQezEyNTAsMTI1MSwxMjUyLDEyNTMsMTI1NCwxMjU3fSwgQ1B7ODUwLDg2Nn0sCisgICAgICAgICAgICAgICBNYWN7Um9tYW4sQ2VudHJhbEV1cm9wZSxJY2VsYW5kLENyb2F0aWFuLFJvbWFuaWF9LAorICAgICAgICAgICAgICAgTWFje0N5cmlsbGljLFVrcmFpbmUsR3JlZWssVHVya2lzaH0sIE1hY2ludG9zaAorCisgICAgICAgICAgIFNlbWl0aWMgCisgICAgICAgICAgICAgICBJU08tODg1OS17Niw4fSwgQ1B7MTI1NSwxMjU2fSwgQ1A4NjIsIE1hY3tIZWJyZXcsQXJhYmljfQorCisgICAgICAgICAgIEphcGFuZXNlCisgICAgICAgICAgICAgICBFVUMtSlAsICAgU0hJRlRfSklTLCAgICBDUDkzMiwgICAgSVNPLTIwMjItSlAsICAgIElTTy0yMDIyLUpQLTIsCisgICAgICAgICAgICAgICBJU08tMjAyMi1KUC0xCisKKyAgICAgICAgICAgQ2hpbmVzZQorICAgICAgICAgICAgICAgRVVDLUNOLCAgSFosICBHQkssICBHQjE4MDMwLCAgRVVDLVRXLCAgQklHNSwgIENQOTUwLCBCSUc1LUhLU0NTLAorICAgICAgICAgICAgICAgSVNPLTIwMjItQ04sIElTTy0yMDIyLUNOLUVYVAorCisgICAgICAgICAgIEtvcmVhbgorICAgICAgICAgICAgICAgRVVDLUtSLCBDUDk0OSwgSVNPLTIwMjItS1IsIEpPSEFCCisKKyAgICAgICAgICAgQXJtZW5pYW4KKyAgICAgICAgICAgICAgIEFSTVNDSUktOAorCisgICAgICAgICAgIEdlb3JnaWFuCisgICAgICAgICAgICAgICBHZW9yZ2lhbi1BY2FkZW15LCBHZW9yZ2lhbi1QUworCisgICAgICAgICAgIFRhamlrCisgICAgICAgICAgICAgICBLT0k4LVQKKworICAgICAgICAgICBUaGFpCisgICAgICAgICAgICAgICBUSVMtNjIwLCBDUDg3NCwgTWFjVGhhaQorCisgICAgICAgICAgIExhb3RpYW4KKyAgICAgICAgICAgICAgIE11bGVMYW8tMSwgQ1AxMTMzCisKKyAgICAgICAgICAgVmlldG5hbWVzZQorICAgICAgICAgICAgICBWSVNDSUksIFRDVk4sIENQMTI1OAorCisgICAgICAgICAgIFBsYXRmb3JtIHNwZWNpZmljcworICAgICAgICAgICAgICBIUC1ST01BTjgsIE5FWFRTVEVQCisKKyAgICAgICAgICAgRnVsbCBVbmljb2RlCisgICAgICAgICAgICAgIFVURi04CisgICAgICAgICAgICAgIFVDUy0yLCBVQ1MtMkJFLCBVQ1MtMkxFCisgICAgICAgICAgICAgIFVDUy00LCBVQ1MtNEJFLCBVQ1MtNExFCisgICAgICAgICAgICAgIFVURi0xNiwgVVRGLTE2QkUsIFVURi0xNkxFCisgICAgICAgICAgICAgIFVURi0zMiwgVVRGLTMyQkUsIFVURi0zMkxFCisgICAgICAgICAgICAgIFVURi03CisgICAgICAgICAgICAgIEM5OSwgSkFWQQorCisgICAgICAgIEF1ZiBlaW5pZ2VuIFN5c3RlbSBzaW5kIGF1Y2ggZGllIGZvbGdlbmRlbiBaZWljaGVuc2FldHplIHZlcmZ1ZWdiYXI6CisKKyAgICAgICAgICAgIEV1cm9wZWFuIAorICAgICAgICAgICAgICAgIENQezQzNyw3MzcsNzc1LDg1Miw4NTMsODU1LDg1Nyw4NTgsODYwLDg2MSw4NjMsODY1LDg2OSwxMTI1fQorCisgICAgICAgICAgICBTZW1pdGljIAorICAgICAgICAgICAgICAgIENQODY0CisKKyAgICAgICAgICAgIEphcGFuZXNlCisgICAgICAgICAgICAgICAgRVVDLUpJU1gwMjEzLCBTaGlmdF9KSVNYMDIxMywgSVNPLTIwMjItSlAtMworCisgICAgICAgICAgICBUdXJrbWVuCisgICAgICAgICAgICAgICAgVERTNTY1CisKKyAgICAgICAgICAgIFBsYXRmb3JtIHNwZWNpZmljcworICAgICAgICAgICAgICAgIFJJU0NPUy1MQVRJTjEKKworCitCRUlTUElFTAorICAgICAgICBjb252ZXJ0X2NoYXJzZXQoIkhpISIsICJhc2NpaSIsICJ1dGYtOCIpCisKK0dFU0NISUNIVEUKKyAgICAgICAgSW50cm9kdWNlZCBpbiBMRE11ZCAzLjMuNTMxIC4KKworU0VFIEFMU08KKwpkaWZmIC0tZ2l0IGEvZG9jL2VmdW4vY29weSBiL2RvYy9lZnVuL2NvcHkKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMzlmMzc1MgotLS0gL2Rldi9udWxsCisrKyBiL2RvYy9lZnVuL2NvcHkKQEAgLTAsMCArMSwyMyBAQAorU1lOT1BTSVMKKyAgICAgbWl4ZWQgY29weShtaXhlZCBhcmcpOworCitCRVNDSFJFSUJVTkcKKyAgICAgRXJ6ZXVndCBlaW5lIGZsYWNoZSBLb3BpZSB2b24gPGFyZz4gdW5kIGxpZWZlcnQgZGllc2UgenVydWVjay4gRnVlcgorICAgICBBcnJheXMgdW5kIE1hcHBpbmdzIGhlaXNzdCBkYXMsIGRhc3MgbmV1ZSBBcnJheXMgYnp3LiBNYXBwaW5ncyBlcnpldWd0CisgICAgIHdlcmRlbiwgZGllIEtvcGllbiBkZXIgRWxlbWVudGUgZGVzIE9yaWdpbmFscyBlbnRoYWx0ZW4uIEVpbmdlYmV0dGV0ZQorICAgICBBcnJheXMgdW5kIE1hcHBpbmdzIHdlcmRlbiBqZWRvY2ggYWxzIFJlZmVyZW56IHVlYmVyZ2ViZW4hCisKKyAgICAgRnVlciBhbmRlcmUgV2VydGUgdm9uIDxhcmc+IGJld2lya3QgZGllc2UgRnVua3Rpb24gbmljaHRzLgorCitCRUlTUElFTAorICAgICBtaXhlZCAqYSwgKmI7CisgICAgIGEgPSAoeyAxLCAoeyAyMSwgMjIgfSkgfSk7CisgICAgIGIgPSBjb3B5KGEpOworICAgICBhWzBdID0gLTE7IGFbMV1bMF0gPSAtMjE7CisgICAgICAgICAtLT4gYSBpc3QgbnVuICh7IC0xLCAoeyAtMjEsIDIyIH0pIH0pCisgICAgICAgICAgICAgYiBpc3QgbnVuICh7ICAxLCAoeyAtMjEsIDIyIH0pIH0pCisKK1NJRUhFIEFVQ0gKKyAgICAgZGVlcF9jb3B5KEUpCisKKzEwLkFwci4yMDA3IEdsb2luc29uClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZG9jL2VmdW4vY29weV9iaXRzIGIvZG9jL2VmdW4vY29weV9iaXRzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmVjNjhkNTEKLS0tIC9kZXYvbnVsbAorKysgYi9kb2MvZWZ1bi9jb3B5X2JpdHMKQEAgLTAsMCArMSw0MSBAQAorU1lOT1BTSVMKKyAgICAgICAgc3RyaW5nIGNvcHlfYml0cyhzdHJpbmcgc3JjLCBzdHJpbmcgZGVzdCBbLCBpbnQgc3Jjc3RhcnQKKyAgICAgICAgICAgIFssIGludCBkZXN0c3RhcnQgWywgaW50IGNvcHlsZW5dXV0pOworCitCRVNDSFJFSUJVTkcKKyAgICAgICAgS29waWVydCBkZW4gQml0YmVyZWljaCBbPHNyY3N0YXJ0PiAuLiA8c3Jjc3RhcnQ+ICsgPGNvcHlsZW4+XSBhdXMgZGVtCisgICAgICAgIEJpdHN0cmluZyA8c3JjPiBpbiBkZW4gQml0c3RyaW5nIDxkZXN0PiBiZWdpbm5lbmQgYW4gZGVyIFBvc2l0aW9uCisgICAgICAgIDxkZXN0c3RhcnQ+LiBEaWUgYWx0ZW4gV2VydGUgdm9uIDxkZXN0PiB3ZXJkZW4gZGFiZWkgdWViZXJzY2hyaWViZW4uCisKKyAgICAgICAgRGVyIHJlc3VsdGllcmVuZGUgU3RyaW5nIHdpcmQgenVydWVjayBnZWxpZWZlcnQsIGRpZSBiZWlkZW4KKyAgICAgICAgT3JpZ2luYWxzdHJpbmdzIGJsZWliZW4gdW5iZWVpbmZsdXNzdC4KKworICAgICAgICBXaXJkIDxzcmNzdGFydD4gbmljaHQgYW5nZWdlYmVuLCB3aXJkIDxzcmM+IHZvbiBBbmZhbmcgYW4ga29waWVydC4KKyAgICAgICAgSXN0IDxzcmNzdGFydD4gbmVnYXRpdiwgd2lyZCB2b20gbGV0enRlbiBCaXQgaGVyIGdlemFlaGx0IChkLmguIC0xCisgICAgICAgIGJlemVpY2huZXQgZGFzIGxldHp0ZSBCaXQpLgorCisgICAgICAgIFdpcmQgPGRlc3RzdGFydD4gbmljaHQgYW5nZWdlYmVuLCB3aXJkIDxkZXN0PiB2b24gQW5mYW5nIGFuIGtvcGllcnQuCisgICAgICAgIElzdCA8ZGVzdHN0YXJ0PiBuZWdhdGl2LCB3aXJkIHZvbSBsZXR6dGVuIEJpdCBoZXIgZ2V6YWVobHQgKGQuaC4gLTEKKyAgICAgICAgYmV6ZWljaG5ldCBkYXMgbGV0enRlIEJpdCkuCisKKyAgICAgICAgV2lyZCA8Y29weWxlbj4gbmljaHQgYW5nZWdlYmVuIHdpcmQsIHNvIHdpcmQgZGVyIGdlc2FtdGUgQml0c3RyaW5nCisgICAgICAgIDxzcmM+IGtvcGllcnQuIERhcyBSZXN1bHRhdCBiZXN0ZWh0IGRhbm4gYXVzIGRlbSBCaXRzdHJpbmcgPGRlc3Q+CisgICAgICAgIGJpcyB6dXIgUG9zaXRpb24gPGRlc3RzdGFydD4sIGdlZm9sZ3Qgdm9uIDxzcmM+IGFiIGRlciBQb3NpdGlvbgorICAgICAgICA8c3Jjc3RhcnQ+LgorCisgICAgICAgIFdlbm4gPGNvcHlsZW4+IG5lZ2F0aXYgaXN0LCB3ZXJkZW4gYWJzKDxjb3B5bGVuPikgX3Zvcl8gPHNyY3N0YXJ0PiBpbgorICAgICAgICBkYXMgUmVzdWx0YXQga29waWVydC4KKworQkVJU1BJRUxFCisgICAgICAgIGNvcHlfYml0cyhzcmMsIGRlc3QsIDEwKSAgICAgICA9PT0gc3JjWzEwLi5dCisgICAgICAgIGNvcHlfYml0cyhzcmMsIGRlc3QsIDEwLCA1KSAgICA9PT0gZGVzdFswLi40XSArIHNyY1sxMC4uXQorICAgICAgICBjb3B5X2JpdHMoc3JjLCBkZXN0LCAxMCwgNSwgMykgPT09IGRlc3RbMC4uNF0gKyBzcmNbMTAuLjEyXSArIGRlc3RbOC4uXQorCisgICAgICAgIChEaWUgTm90YXRpb24gc3JjW10gLyBkZXN0W10gZGllbnQgbnVyIGRlciBJbGx1c3RyYXRpb24hKQorCitBRU5ERVJVTkdFTgorICAgICAgICBFaW5nZWZ1ZWhydCBpbiBMRE11ZCAzLjIuOQorCitTSUVIRSBBVUNICisgICAgICAgIGNsZWFyX2JpdChFKSwgc2V0X2JpdChFKSwgdGVzdF9iaXQoRSksIG5leHRfYml0KEUpLCBsYXN0X2JpdChFKSwKKyAgICAgICAgY291bnRfYml0cyhFKSwgb3JfYml0cyhFKSwgeG9yX2JpdHMoRSksIGludmVydF9iaXRzKEUpLCBhbmRfYml0cyhFKQpkaWZmIC0tZ2l0IGEvZG9jL2VmdW4vY29weV9maWxlIGIvZG9jL2VmdW4vY29weV9maWxlCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjZlMDkxZWQKLS0tIC9kZXYvbnVsbAorKysgYi9kb2MvZWZ1bi9jb3B5X2ZpbGUKQEAgLTAsMCArMSwxOSBAQAorU1lOT1BTSVMKKyAgICAgICAgaW50IGNvcHlfZmlsZShzdHJpbmcgZnJvbSwgc3RyaW5nIHRvKQorCitERVNDUklQVElPTgorICAgICAgICBUaGUgZWZ1biBjb3B5X2ZpbGUoKSB3aWxsIGNvcHkgdGhlIGZpbGUgPGZyb20+IHRvIHRoZSBuZXcgbmFtZSA8dG8+LgorICAgICAgICBJZiA8dG8+IGV4aXN0cyBhbmQgaXMgYSBkaXJlY3RvcnksIHRoZW4gPGZyb20+IHdpbGwgYmUgcGxhY2VkIGluIHRoYXQKKyAgICAgICAgZGlyZWN0b3J5IGFuZCBrZWVwIGl0cyBvcmlnaW5hbCBuYW1lLgorICAgICAgICAKKyAgICAgICAgWW91IG11c3QgaGF2ZSByZWFkIHBlcm1pc3Npb24gZm9yIDxmcm9tPiBhbmQgd3JpdGUgcGVybWlzc2lvbiBmb3IKKyAgICAgICAgdGhlIHRhcmdldCBmaWxlIHRvIGNvcHkgdGhlIGZpbGUuCisgICAgICAgIAorICAgICAgICBPbiBzdWNjZXNzZnVsIGNvbXBsZXRpb24gY29weV9maWxlKCkgd2lsbCByZXR1cm4gMC4gSWYgYW55CisgICAgICAgIG9jY3VycywgMSBpcyByZXR1cm5lZCwgb3IgYSBydW50aW1lIGlzIGdlbmVyYXRlZC4KKworRVhBTVBMRQorICAgICAgICBjb3B5X2ZpbGUoIi9wbGF5ZXJzL3dpemFyZC9vYmouYyIsICIvcGxheWVycy93aXphcmQvbmV3b2JqLmMiKTsKKworU0VFIEFMU08KKyAgICAgICAgbWtkaXIoRSksIHJtZGlyKEUpLCBybShFKSwgcmVuYW1lKEUpCmRpZmYgLS1naXQgYS9kb2MvZWZ1bi9jb3MgYi9kb2MvZWZ1bi9jb3MKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uODVmM2U5MgotLS0gL2Rldi9udWxsCisrKyBiL2RvYy9lZnVuL2NvcwpAQCAtMCwwICsxLDExIEBACitTWU5PUFNJUworICAgICAgICBmbG9hdCBjb3MoaW50fGZsb2F0KQorCitCRVNDSFJFSUJVTkcKKyAgICAgICAgTGllZmVydCBkZW4gS29zaW51cyBkZXMgQXJndW1lbnRlcy4KKworQUVOREVSVU5HRU4KKyAgICAgICAgTERNdWQgMy4yLjk6IEdhbnp6YWhsZW4gKEludGVnZXJzKSBhbHMgQXJndW1lbnQgaGluenVnZWZ1ZWd0LgorCitTSUVIRSBBVUNICisgICAgICAgIHNpbihFKSwgYXNpbihFKSwgYWNvcyhFKSwgdGFuKEUpLCBhdGFuKEUpLCBhdGFuMihFKQpkaWZmIC0tZ2l0IGEvZG9jL2VmdW4vY291bnRfYml0cyBiL2RvYy9lZnVuL2NvdW50X2JpdHMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMWI3MjVkMAotLS0gL2Rldi9udWxsCisrKyBiL2RvYy9lZnVuL2NvdW50X2JpdHMKQEAgLTAsMCArMSwyMCBAQAorU1lOT1BTSVMKKyAgICAgaW50IGNvdW50X2JpdHMoc3RyaW5nIHN0cik7CisKK0JFU0NIUkVJQlVORworICAgICBEaWVzZSBGdW5rdGlvbiB6YWVobHQgZGllIEFuemFobCBnZXNldHplciBCaXRzIGltIEJpdHN0cmluZyA8c3RyPiB1bmQKKyAgICAgbGllZmVydCBkaWUgQW56YWhsIGFscyBSZXN1bHRhdCB6dXJ1ZWNrLgorCitCRU1FUktVTkdFTgorICAgICBBcmJlaXRldCBlaWdlbnRsaWNoIG51ciBzaW5udm9sbCBhdWYgQml0c3RyaW5ncyA6KQorCitCRUlTUElFTAorICAgICBzdHJpbmcgczsKKyAgICAgcyA9IHNldF9iaXQoIiIsIDMpOyBzID0gc2V0X2JpdChzLCAxNSk7CisgICAgIGNvdW50X2JpdHMocykgLS0+IGxpZWZlcnQgMgorCitTSUVIRSBBVUNICisgICAgIGNsZWFyX2JpdChFKSwgc2V0X2JpdChFKSwgdGVzdF9iaXQoRSksIG5leHRfYml0KEUpLCBsYXN0X2JpdChFKSwKKyAgICAgb3JfYml0cyhFKSwgeG9yX2JpdHMoRSksIGludmVydF9iaXRzKEUpLCBjb3B5X2JpdHMoRSksIGJpdHN0cmluZ3MgKEMpCisKKzEwLkFwci4yMDA3IEdsb2luc29uCmRpZmYgLS1naXQgYS9kb2MvZWZ1bi9jcnlwdCBiL2RvYy9lZnVuL2NyeXB0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjkzMjA4OWQKLS0tIC9kZXYvbnVsbAorKysgYi9kb2MvZWZ1bi9jcnlwdApAQCAtMCwwICsxLDE2IEBACitTWU5PUFNJUworICAgICBzdHJpbmcgY3J5cHQoc3RyaW5nIHN0ciwgaW50IHNlZWQpOworICAgICBzdHJpbmcgY3J5cHQoc3RyaW5nIHN0ciwgc3RyaW5nIHNlZWQpOworCitCRVNDSFJFSUJVTkcKKyAgICAgVmVyc2NobHVlc3NlbHQgZGVuIFN0cmluZyA8c3RyPiBtaXQgZGVtIFNjaGx1ZXNzZWwgPHNlZWQ+LiA8c2VlZD4ga2FubgorICAgICBlbnR3ZWRlciBlaW4gSW50ZWdlciBzZWluIG9kZXIgendlaSBaZWljaGVuIGF1cyBkZW0gU3RyaW5nIDxzZWVkPi4KKyAgICAgV2VubiA8c2VlZD4gMCBpc3QsIHdpcmQgZWluIHp1ZmFlbGxpZ2VyIFNjaGx1ZXNzZWwgZXJ6ZXVndC4KKworICAgICBEYXMgUmVzdWx0YXQgZW50aGFlbHQgZGVuIFNjaGx1ZXNzZWwgYWxzIGRpZSBlcnN0ZW4gYmVpZGVuIFplaWNoZW4uCisKKyAgICAgRnVlciBQYXNzd29ydGFiZnJhZ2VuLCBkaWUgb2huZSBFY2hvIGVpbmdlZ2ViZW4gd2VyZGVuIGtvZW5uZW4gc29sbGVuLAorICAgICBiaWV0ZXQgaW5wdXRfdG8oKSBlaW4gc3BlemllbGxlcyBGbGFnLgorCitTSUVIRSBBVUNICisgICAgIG1kNV9jcnlwdChFKSwgbWQ1KEUpLCBzaGExKEUpLCBoYXNoKEUpLCBobWFjKEUpClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZG9jL2VmdW4vY3RpbWUgYi9kb2MvZWZ1bi9jdGltZQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44ZGI2MWY4Ci0tLSAvZGV2L251bGwKKysrIGIvZG9jL2VmdW4vY3RpbWUKQEAgLTAsMCArMSwyMiBAQAorU1lOT1BTSVMKKyAgICAgc3RyaW5nIGN0aW1lKGludCBjbG9jayk7CisgICAgIHN0cmluZyBjdGltZShpbnQqIHVjbG9jayk7CisKK0JFU0NIUkVJQlVORworICAgICBJbnRlcnByZXRpZXJ0IGRhcyBBcmd1bWVudCA8Y2xvY2s+IGFscyBBbnphaGwgU2VrdW5kZW4gc2VpdCBkZW0KKyAgICAgMDEuSkFOLjE5NzAsIDAwOjAwIFVociB1bmQga29udmVydGllcnQgZGllc2VzIGluIGVpbmVuIGFuc2VobmxpY2hlbgorICAgICBTdHJpbmcsIGRlciBEYXR1bSB1bmQgWmVpdCBlbnRoYWVsdC4gV2VubiA8Y2xvY2s+IG5pY2h0IGFuZ2VnZWJlbgorICAgICB3aXJkLCB3aXJkIHRpbWUoKSB2ZXJ3ZW5kZXQuCisKKyAgICAgRGllIHp3ZWl0ZSBGb3JtIGVudHNwcmljaHQgZGVyIGVyc3RlbiwgYXVzc2VyIGRhc3MgZGFzIEFyZ3VtZW50IGVpbgorICAgICBBcnJheSBtaXQgendlaSBJbnRlZ2VyIEVsZW1lbnRlbiBpc3QuIERhcyBlcnN0ZSBFbGVtZW50IGludFswXSBnaWJ0CisgICAgIGRpZSBBbnphaGwgU2VrdW5kZW4gc2VpdCBkZW0gMDEuSkFOLjE5NzAgYW4sIGRhcyB6d2VpdGUgRWxlbWVudAorICAgICBpbnRbMV0gZGllIEFuemFobCBNaWxsaXNla3VuZGVuIGlubmVyaGFsYiBkaWVzZXIgU2VrdW5kZS4KKworQkVJU1BJRUwKKyAgICAgd3JpdGUoY3RpbWUoKSsiXG4iKTsKKworICAgICBEaWVzIGdpYnQgZXR3YXMgYXVzIHdpZSAiU3VuIE9jdCAyNiAxOToyODozMCAyMDAzIi4KKworU0lFSEUgQVVDSAorICAgICBkdGltZShFKSwgZ210aW1lKEUpLCBsb2NhbHRpbWUoRSksIHN0cmZ0aW1lKEUpLCB0aW1lKEUpLCB1dGltZShFKQpkaWZmIC0tZ2l0IGEvZG9jL2VmdW4vZGJfYWZmZWN0ZWRfcm93cyBiL2RvYy9lZnVuL2RiX2FmZmVjdGVkX3Jvd3MKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMWVhMjc4MwotLS0gL2Rldi9udWxsCisrKyBiL2RvYy9lZnVuL2RiX2FmZmVjdGVkX3Jvd3MKQEAgLTAsMCArMSwyNCBAQAorT1BUSU9OQUwKK1NZTk9QU0lTCisgICAgICAgIGludCBkYl9hZmZlY3RlZF9yb3dzKGludCBoYW5kbGUpCisKK0JFU0NIUkVJQlVORworICAgICAgICBSZXN1bHRhdCBpc3QgZGllIEFuemFlaGwgZGVyIFplaWxlbiBkaWUgdm9tIGxldHp0ZW4gU1FMLUJlZmVobAorICAgICAgICBiZWVpbmZsdXNzdCB3dXJkZW4sIHdlbGNoZXMgenVtIFNRTC1zZXJ2ZXIgdmlhIDxoYW5kbGU+IGdlc2VuZGV0CisgICAgICAgIHd1cmRlLiBEaWVzZSBGdW5rdGlvbiBpc3QgbnVldHpsaWNoIGxlZGlnbGljaCBmdWVyIERFTEVURS0KKyAgICAgICAgdW5kIFVQREFURS1CZWZlaGxlLgorCisgICAgICAgIERpZSBGdW5rdGlvbiBpc3QgbnVyIHZlcmZ1ZWdiYXIgd2VubiBkZXIgRHJpdmVyIG1pdAorICAgICAgICBteVNRTC1VbnRlcnN0dWV0enVuZyBjb21waWxpZXJ0IHd1cmRlLiBJbiBkaWVzZW0gRmFsbCBpc3QgZGFzIE1ha3JvCisgICAgICAgIF9fTVlTUUxfXyBkZWZpbmllcnQuCisKKyAgICAgICAgRGllIEVmdW4gaXN0IHByaXZpbGVnaWVydCBhbHMgKCJteXNxbCIsICJkYl9hZmZlY3RlZF9yb3dzIikuCisKK0dFU0NISUNIVEUKKyAgICAgICAgRWluZ2VmdWVocnQgaW4gTERNdWQgMy4yLjkuCisgICAgICAgIExETXVkIDMuMi4xMSBtYWNodGUgZGllIEVmdW4gcHJpdmlsZWdpZXJ0LgorCitTSUVIRSBBVUNICisgICAgICAgIGRiX2NvbnZfc3RyaW5nKEUpLCBkYl9jbG9zZShFKSwgZGJfY29sZGVmcyhFKSwgZGJfY29ubmVjdChFKSwKKyAgICAgICAgZGJfZXhlYyhFKSwgZGJfZXJyb3IoRSksIGRiX2ZldGNoKEUpLCBkYl9pbnNlcnRfaWQoRSksIGRiX2hhbmRsZXMoRSksCisgICAgICAgIG15c3FsKEMpLCBwcml2aWxlZ2VfdmlvbGF0aW9uKE0pCmRpZmYgLS1naXQgYS9kb2MvZWZ1bi9kYl9jbG9zZSBiL2RvYy9lZnVuL2RiX2Nsb3NlCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjIwODE3NmMKLS0tIC9kZXYvbnVsbAorKysgYi9kb2MvZWZ1bi9kYl9jbG9zZQpAQCAtMCwwICsxLDIyIEBACitPUFRJT05BTAorU1lOT1BTSVMKKyAgICAgICAgaW50IGRiX2Nsb3NlKGludCBoYW5kbGUpCisKK0JFU0NIUkVJQlVORworICAgICAgICBTY2hsaWVzc2UgZGllIFZlcmJpbmR1bmcgPGhhbmRsZT4genVtIFNRTC1TZXJ2ZXIuIFJlc3VsdGF0IGlzdAorICAgICAgICA8aGFuZGxlPiBiZWkgRXJmb2xnLgorCisgICAgICAgIERpZSBGdW5rdGlvbiBpc3QgbnVyIHZlcmZ1ZWdiYXIgd2VubiBkZXIgRHJpdmVyIG1pdAorICAgICAgICBteVNRTC1VbnRlcnN0dWV0enVuZyBjb21waWxpZXJ0IHd1cmRlLiBJbiBkaWVzZW0gRmFsbCBpc3QgZGFzIE1ha3JvCisgICAgICAgIF9fTVlTUUxfXyBkZWZpbmllcnQuCisKKyAgICAgICAgRGllIEVmdW4gaXN0IHByaXZpbGVnaWVydCBhbHMgKCJteXNxbCIsICJkYl9jbG9zZSIpLgorCitHRVNDSElDSFRFCisgICAgICAgIEVpbmdlZnVlaHJ0IGluIExETXVkIDMuMi45LgorICAgICAgICBMRE11ZCAzLjIuMTEgbWFjaHRlIGRpZSBFZnVuIHByaXZpbGVnaWVydC4KKworU0lFSEUgQVVDSAorICAgICAgICBkYl9hZmZlY3RlZF9yb3dzKEUpLCBkYl9jb252X3N0cmluZyhFKSwgZGJfY29sZGVmcyhFKSwgZGJfY29ubmVjdChFKSwKKyAgICAgICAgZGJfZXhlYyhFKSwgZGJfZXJyb3IoRSksIGRiX2ZldGNoKEUpLCBkYl9oYW5kbGVzKEUpLCBkYl9pbnNlcnRfaWQoRSksCisgICAgICAgIG15c3FsKEMsIHByaXZpbGVnZV92aW9sYXRpb24oTSkpCmRpZmYgLS1naXQgYS9kb2MvZWZ1bi9kYl9jb2xkZWZzIGIvZG9jL2VmdW4vZGJfY29sZGVmcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5jMTM1YTExCi0tLSAvZGV2L251bGwKKysrIGIvZG9jL2VmdW4vZGJfY29sZGVmcwpAQCAtMCwwICsxLDIzIEBACitPUFRJT05BTAorU1lOT1BTSVMKKyAgICAgICAgc3RyaW5nICogZGJfY29sZGVmcyAoaW50IGhhbmRsZSkKKworQkVTQ0hSRUlCVU5HCisgICAgICAgIFJlc3VsdGF0IGlzdCBlaW4gQXJyYXkgbWl0IGRlbiBTcGFsdGVubmFtZW4gZGVyIFRhYmVsbGUgZGVzCisgICAgICAgIGxldHp0ZW4gUVVFUlktQmVmZWhscy4gR2FiIGRpZSBEYXRlbmJhbmsga2VpbmUgVGFiZWxsZSB6dXJ1ZWNrLCBkYW5uCisgICAgICAgIGdpYnQgZGllIEVmdW4gMCBhbHMgRXJnZWJuaXMuCisKKyAgICAgICAgRGllIEZ1bmt0aW9uIGlzdCBudXIgdmVyZnVlZ2JhciB3ZW5uIGRlciBEcml2ZXIgbWl0CisgICAgICAgIG15U1FMLVVudGVyc3R1ZXR6dW5nIGNvbXBpbGllcnQgd3VyZGUuIEluIGRpZXNlbSBGYWxsIGlzdCBkYXMgTWFrcm8KKyAgICAgICAgX19NWVNRTF9fIGRlZmluaWVydC4KKworICAgICAgICBEaWUgRWZ1biBpc3QgcHJpdmlsZWdpZXJ0IGFscyAoIm15c3FsIiwgImRiX2NvbGRlZnMiKS4KKworR0VTQ0hJQ0hURQorICAgICAgICBFaW5nZWZ1ZWhydCBpbiBMRE11ZCAzLjIuOS4KKyAgICAgICAgTERNdWQgMy4yLjExIG1hY2h0ZSBkaWUgRWZ1biBwcml2aWxlZ2llcnQuCisKK1NJRUhFIEFVQ0gKKyAgICAgICAgZGJfYWZmZWN0ZWRfcm93cyhFKSwgZGJfY29udl9zdHJpbmcoRSksIGRiX2Nsb3NlKEUpLCBkYl9jb25uZWN0KEUpLAorICAgICAgICBkYl9leGVjKEUpLCBkYl9lcnJvcihFKSwgZGJfZmV0Y2goRSksIGRiX2hhbmRsZXMoRSksIGRiX2luc2VydF9pZChFKSwKKyAgICAgICAgbXlzcWwoQyksIHByaXZpbGVnZV92aW9sYXRpb24oTSkKZGlmZiAtLWdpdCBhL2RvYy9lZnVuL2RiX2Nvbm5lY3QgYi9kb2MvZWZ1bi9kYl9jb25uZWN0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmFiZTIwYzkKLS0tIC9kZXYvbnVsbAorKysgYi9kb2MvZWZ1bi9kYl9jb25uZWN0CkBAIC0wLDAgKzEsMzIgQEAKK09QVElPTkFMCitTWU5PUFNJUworICAgICAgICBpbnQgZGJfY29ubmVjdChzdHJpbmcgZGF0YWJhc2UpCisgICAgICAgIGludCBkYl9jb25uZWN0KHN0cmluZyBkYXRhYmFzZSwgc3RyaW5nIHVzZXIpCisgICAgICAgIGludCBkYl9jb25uZWN0KHN0cmluZyBkYXRhYmFzZSwgc3RyaW5nIHVzZXIsIHN0cmluZyBwYXNzd29yZCkKKworQkVTQ0hSRUlCVU5HCisgICAgICAgIFN0ZWxsZSBlaW5lIFZlcmJpbmR1bmcgenVyIFNRTC1EYXRlbmJhbmsgPGRhdGFiYXNlPiBkZXMKKyAgICAgICAgbG9rYWxlbiBTUUwtU2VydmVycyBoZXIuIERhcyBFcmdlYm5pcyBpc3QgZGllIEhhbmRsZS1OdW1tZXIgZnVlciBkaWVzZQorICAgICAgICBWZXJiaW5kdW5nIHVuZCBtdXNzIGZ1ZXIgYWxsZSBBbmZyYWdlbiB6dSBkaWVzZXIgRGF0ZW5iYW5rIHZlcndlbmRldAorICAgICAgICB3ZXJkZW4uCisKKyAgICAgICAgRXhpc3RpZXJ0IGRpZSBEYXRlbmJhbmsgbmljaHQsIG9kZXIga2FubiBkZXIgbG9rYWxlIFNRTC1TZXJ2ZXIgbmljaHQKKyAgICAgICAgZ2VmdW5kZW4gd2VyZGVuLCB3aXJkIGVpbiBMYXVmemVpdGZlaGxlciBlcnpldWd0LgorCisgICAgICAgIFdlbm4gYW5nZWdlYmVuLCB3aXJkIGRpZSBWZXJiaW5kdW5nIGZ1ZXIgPHVzZXI+IG1pdCA8cGFzc3dvcmQ+CisgICAgICAgIGVyemV1Z3QuCisKKyAgICAgICAgRGllIEZ1bmt0aW9uIGlzdCBudXIgdmVyZnVlZ2JhciB3ZW5uIGRlciBEcml2ZXIgbWl0CisgICAgICAgIG15U1FMLVVudGVyc3R1ZXR6dW5nIGNvbXBpbGllcnQgd3VyZGUuIEluIGRpZXNlbSBGYWxsIGlzdCBkYXMgTWFrcm8KKyAgICAgICAgX19NWVNRTF9fIGRlZmluaWVydC4KKworICAgICAgICBEaWUgRWZ1biBpc3QgcHJpdmlsZWdpZXJ0IGFscyAoIm15c3FsIiwgImRiX2Nvbm5lY3QiKS4KKworR0VTQ0hJQ0hURQorICAgICAgICBFaW5nZWZ1ZWhydCBpbiBMRE11ZCAzLjIuOS4KKyAgICAgICAgTERNdWQgMy4yLjExIG1hY2h0ZSBkaWUgRWZ1biBwcml2aWxlZ2llcnQuCisKK1NJRUhFIEFVQ0gKKyAgICAgICAgZGJfYWZmZWN0ZWRfcm93cyhFKSwgZGJfY29udl9zdHJpbmcoRSksIGRiX2Nsb3NlKEUpLCBkYl9jb2xkZWZzKEUpLAorICAgICAgICBkYl9leGVjKEUpLCBkYl9lcnJvcihFKSwgZGJfZmV0Y2goRSksIGRiX2hhbmRsZXMoRSksCisgICAgICAgIGRiX2luc2VydF9pZChFKSwgbXlzcWwoQyksIHByaXZpbGVnZV92aW9sYXRpb24oTSkKZGlmZiAtLWdpdCBhL2RvYy9lZnVuL2RiX2NvbnZfc3RyaW5nIGIvZG9jL2VmdW4vZGJfY29udl9zdHJpbmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYjYzMGQ2ZgotLS0gL2Rldi9udWxsCisrKyBiL2RvYy9lZnVuL2RiX2NvbnZfc3RyaW5nCkBAIC0wLDAgKzEsMjAgQEAKK09QVElPTkFMCitTWU5PUFNJUworICAgICAgICBzdHJpbmcgZGJfY29udl9zdHJpbmcoc3RyaW5nIHN0cikKKworQkVTQ0hSRUlCVU5HCisgICAgICAgIFdhbmRlbGUgZGVuIFN0cmluZyA8c3RyPiBpbiBlaW5lbiBTdHJpbmcgdW0sIGRlciB2b24gZGVyIERhdGVuYmFuaworICAgICAgICBrb3JyZWt0IGludGVycHJldGllcnQgd2VyZGVuIGthbm47IHouQi4gd2VyZGVuIGFsbCBBcG9zdHJvcGhlCisgICAgICAgIGR1cmNoIFwnIGVyc2V0enQuCisKKyAgICAgICAgRGllIEZ1bmt0aW9uIGlzdCBudXIgdmVyZnVlZ2JhciB3ZW5uIGRlciBEcml2ZXIgbWl0CisgICAgICAgIG15U1FMLVVudGVyc3R1ZXR6dW5nIGNvbXBpbGllcnQgd3VyZGUuIEluIGRpZXNlbSBGYWxsIGlzdCBkYXMgTWFrcm8KKyAgICAgICAgX19NWVNRTF9fIGRlZmluaWVydC4KKworR0VTQ0hJQ0hURQorICAgICAgICBFaW5nZWZ1ZWhydCBpbiBMRE11ZCAzLjIuOS4KKworU0lFSEUgQVVDSAorICAgICAgICBkYl9hZmZlY3RlZF9yb3dzKEUpLCBkYl9jbG9zZShFKSwgZGJfY29sZGVmcyhFKSwgZGJfY29ubmVjdChFKSwKKyAgICAgICAgZGJfZXhlYyhFKSwgZGJfZXJyb3IoRSksIGRiX2ZldGNoKEUpLCBkYl9oYW5kbGVzKEUpLCBkYl9pbnNlcnRfaWQoRSksCisgICAgICAgIG15c3FsKEMpCmRpZmYgLS1naXQgYS9kb2MvZWZ1bi9kYl9lcnJvciBiL2RvYy9lZnVuL2RiX2Vycm9yCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmNiNmQyOTEKLS0tIC9kZXYvbnVsbAorKysgYi9kb2MvZWZ1bi9kYl9lcnJvcgpAQCAtMCwwICsxLDIzIEBACitPUFRJT05BTAorU1lOT1BTSVMKKyAgICAgICAgc3RyaW5nIGRiX2Vycm9yKGludCBoYW5kbGUpCisKK0JFU0NIUkVJQlVORworICAgICAgICBSZXN1bHQgaXN0IGVpbiBTdHJpbmcsIGRlciBkZW4gRmVobGVyIGRlciBsZXR6dGVuCisgICAgICAgIERhdGVuYmFua3RyYW5zYWt0aW9uIGJlc2NocmVpYnQuICBXYXIgZGllIGxldHp0ZSBUcmFuc2FrdGlvbgorICAgICAgICBlcmZvbGdyZWljaCwgaXN0IGRhcyBFcmdlYm5pcyAwLgorCisgICAgICAgIERpZSBGdW5rdGlvbiBpc3QgbnVyIHZlcmZ1ZWdiYXIgd2VubiBkZXIgRHJpdmVyIG1pdAorICAgICAgICBteVNRTC1VbnRlcnN0dWV0enVuZyBjb21waWxpZXJ0IHd1cmRlLiBJbiBkaWVzZW0gRmFsbCBpc3QgZGFzIE1ha3JvCisgICAgICAgIF9fTVlTUUxfXyBkZWZpbmllcnQuCisKKyAgICAgICAgRGllIEVmdW4gaXN0IHByaXZpbGVnaWVydCBhbHMgKCJteXNxbCIsICJkYl9lcnJvciIpLgorCitHRVNDSElDSFRFCisgICAgICAgIEVpbmdlZnVlaHJ0IGluIExETXVkIDMuMi45LgorICAgICAgICBMRE11ZCAzLjIuMTEgbWFjaHRlIGRpZSBFZnVuIHByaXZpbGVnaWVydC4KKworU0lFSEUgQVVDSAorICAgICAgICBkYl9hZmZlY3RlZF9yb3dzKEUpLCBkYl9jb252X3N0cmluZyhFKSwgZGJfY2xvc2UoRSksIGRiX2NvbGRlZnMoRSksCisgICAgICAgIGRiX2Nvbm5lY3QoRSksIGRiX2V4ZWMoRSksIGRiX2ZldGNoKEUpLCBkYl9oYW5kbGVzKEUpLCBkYl9pbnNlcnRfaWQoRSksCisgICAgICAgIG15c3FsKEMpLCBwcml2aWxlZ2VfdmlvbGF0aW9uKE0pCmRpZmYgLS1naXQgYS9kb2MvZWZ1bi9kYl9leGVjIGIvZG9jL2VmdW4vZGJfZXhlYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4yNzRjOTgzCi0tLSAvZGV2L251bGwKKysrIGIvZG9jL2VmdW4vZGJfZXhlYwpAQCAtMCwwICsxLDIyIEBACitPUFRJT05BTAorU1lOT1BTSVMKKyAgICAgICAgaW50IGRiX2V4ZWMoaW50IGhhbmRsZSwgc3RyaW5nIHN0YXRlbWVudCkKKworQkVTQ0hSRUlCVU5HCisgICAgICAgIEZ1ZWhyZSBkZW4gU1FMLUJlZmVobCA8c3RhdGVtZW50PiBmdWVyIGRpZSBWZXJiaW5kdW5nIDxoYW5kbGU+IGF1cy4KKyAgICAgICAgUmVzdWx0YXQgaXN0IGRhcyBIYW5kbGUgYmVpIEVyZm9sZywgb2RlciAwIGJlaSBlaW5lbSBGZWhsZXIuCisKKyAgICAgICAgRGllIEZ1bmt0aW9uIGlzdCBudXIgdmVyZnVlZ2JhciB3ZW5uIGRlciBEcml2ZXIgbWl0CisgICAgICAgIG15U1FMLVVudGVyc3R1ZXR6dW5nIGNvbXBpbGllcnQgd3VyZGUuIEluIGRpZXNlbSBGYWxsIGlzdCBkYXMgTWFrcm8KKyAgICAgICAgX19NWVNRTF9fIGRlZmluaWVydC4KKworICAgICAgICBEaWUgRWZ1biBpc3QgcHJpdmlsZWdpZXJ0IGFscyAoIm15c3FsIiwgImRiX2V4ZWMiKS4KKworR0VTQ0hJQ0hURQorICAgICAgICBFaW5nZWZ1ZWhydCBpbiBMRE11ZCAzLjIuOS4KKyAgICAgICAgTERNdWQgMy4yLjExIG1hY2h0ZSBkaWUgRWZ1biBwcml2aWxlZ2llcnQuCisKK1NJRUhFIEFVQ0gKKyAgICAgICAgZGJfYWZmZWN0ZWRfcm93cyhFKSwgZGJfY29udl9zdHJpbmcoRSksIGRiX2Nsb3NlKEUpLCBkYl9jb2xkZWZzKEUpLAorICAgICAgICBkYl9jb25uZWN0KEUpLCBkYl9lcnJvcihFKSwgZGJfZmV0Y2goRSksIGRiX2hhbmRsZXMoRSksCisgICAgICAgIGRiX2luc2VydF9pZChFKSwgbXlzcWwoQyksIHByaXZpbGVnZV92aW9sYXRpb24oTSkKZGlmZiAtLWdpdCBhL2RvYy9lZnVuL2RiX2ZldGNoIGIvZG9jL2VmdW4vZGJfZmV0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYjE0M2U4YQotLS0gL2Rldi9udWxsCisrKyBiL2RvYy9lZnVuL2RiX2ZldGNoCkBAIC0wLDAgKzEsMjMgQEAKK09QVElPTkFMCitTWU5PUFNJUworICAgICAgICBtaXhlZCBkYl9mZXRjaChpbnQgaGFuZGxlKQorCitCRVNDSFJFSUJVTkcKKyAgICAgICAgSG9sZSBfZWluZV8gUmVzdWx0YXR6ZWlsZSBkZXIgbGV0enRlbiBTUUwtQWt0aW9uIGZ1ZXIgVmVyYmluZHVuZworICAgICAgICA8aGFuZGxlPi4gU2luZCBrZWluZSB3ZWl0ZXJlbiBaZWlsZW4gdmVyZnVlZ2Jhciwgd2lyZCAwCisgICAgICAgIHp1cnVlY2tnZWdlYmVuLgorCisgICAgICAgIERpZSBGdW5rdGlvbiBpc3QgbnVyIHZlcmZ1ZWdiYXIgd2VubiBkZXIgRHJpdmVyIG1pdAorICAgICAgICBteVNRTC1VbnRlcnN0dWV0enVuZyBjb21waWxpZXJ0IHd1cmRlLiBJbiBkaWVzZW0gRmFsbCBpc3QgZGFzIE1ha3JvCisgICAgICAgIF9fTVlTUUxfXyBkZWZpbmllcnQuCisKKyAgICAgICAgRGllIEVmdW4gaXN0IHByaXZpbGVnaWVydCBhbHMgKCJteXNxbCIsICJkYl9mZXRjaCIpLgorCitHRVNDSElDSFRFCisgICAgICAgIEVpbmdlZnVlaHJ0IGluIExETXVkIDMuMi45LgorICAgICAgICBMRE11ZCAzLjIuMTEgbWFjaHRlIGRpZSBFZnVuIHByaXZpbGVnaWVydC4KKworU0lFSEUgQVVDSAorICAgICAgICBkYl9hZmZlY3RlZF9yb3dzKEUpLCBkYl9jb252X3N0cmluZyhFKSwgZGJfY2xvc2UoRSksIGRiX2NvbGRlZnMoRSksCisgICAgICAgIGRiX2Nvbm5lY3QoRSksIGRiX2Vycm9yKEUpLCBkYl9leGVjKEUpLCBkYl9oYW5kbGVzKEUpLCBkYl9pbnNlcnRfaWQoRSksCisgICAgICAgIG15c3FsKEMpLCBwcml2aWxlZ2VfdmlvbGF0aW9uKE0pCmRpZmYgLS1naXQgYS9kb2MvZWZ1bi9kYl9oYW5kbGVzIGIvZG9jL2VmdW4vZGJfaGFuZGxlcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4xYTMwNGI1Ci0tLSAvZGV2L251bGwKKysrIGIvZG9jL2VmdW4vZGJfaGFuZGxlcwpAQCAtMCwwICsxLDI0IEBACitPUFRJT05BTAorU1lOT1BTSVMKKyAgICAgICAgaW50ICpkYl9oYW5kbGVzKCkKKworQkVTQ0hSRUlCVU5HCisgICAgICAgIFJlc3VsdCBpc3QgZWluIEFycmF5IG1pdCBhbGxlbiBha3RpdmVuIFZlcmJpbmR1bmdzaGFuZGxlcyB6dW0KKyAgICAgICAgU1FMLVNlcnZlci4gRGFzIEFycmF5IGlzdCBuYWNoIGRlciBaZWl0IGRlciBsZXR6dGVuIEFrdGlvbiBzb3J0aWVydDoKKyAgICAgICAgZGFzIHp1bGV0enQgZ2VudXR6dGUgSGFuZGxlIGtvbW10IGFuIGVyc3RlciBTdGVsbGUuIFNpbmQga2VpbmUKKyAgICAgICAgVmVyYmluZHVuZ2VuIGFrdGl2LCBpc3QgZGFzIEFycmF5IGxlZXIuCisKKyAgICAgICAgRGllIEZ1bmt0aW9uIGlzdCBudXIgdmVyZnVlZ2JhciB3ZW5uIGRlciBEcml2ZXIgbWl0CisgICAgICAgIG15U1FMLVVudGVyc3R1ZXR6dW5nIGNvbXBpbGllcnQgd3VyZGUuIEluIGRpZXNlbSBGYWxsIGlzdCBkYXMgTWFrcm8KKyAgICAgICAgX19NWVNRTF9fIGRlZmluaWVydC4KKworICAgICAgICBEaWUgRWZ1biBpc3QgcHJpdmlsZWdpZXJ0IGFscyAoIm15c3FsIiwgImRiX2hhbmRsZXMiKS4KKworR0VTQ0hJQ0hURQorICAgICAgICBFaW5nZWZ1ZWhydCBpbiBMRE11ZCAzLjIuOS4KKyAgICAgICAgTERNdWQgMy4yLjExIG1hY2h0ZSBkaWUgRWZ1biBwcml2aWxlZ2llcnQuCisKK1NJRUhFIEFVQ0gKKyAgICAgICAgZGJfYWZmZWN0ZWRfcm93cyhFKSwgZGJfY29udl9zdHJpbmcoRSksIGRiX2Nsb3NlKEUpLCBkYl9jb2xkZWZzKEUpLAorICAgICAgICBkYl9jb25uZWN0KEUpLCBkYl9lcnJvcihFKSwgZGJfZXhlYyhFKSwgZGJfZmV0Y2goRSksIGRiX2luc2VydF9pZChFKSwKKyAgICAgICAgbXlzcWwoQyksIHByaXZpbGVnZV92aW9sYXRpb24oTSkKZGlmZiAtLWdpdCBhL2RvYy9lZnVuL2RiX2luc2VydF9pZCBiL2RvYy9lZnVuL2RiX2luc2VydF9pZApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4yNWUyYTE3Ci0tLSAvZGV2L251bGwKKysrIGIvZG9jL2VmdW4vZGJfaW5zZXJ0X2lkCkBAIC0wLDAgKzEsMjMgQEAKK09QVElPTkFMCitTWU5PUFNJUworICAgICAgICBpbnQgZGJfaW5zZXJ0X2lkIChpbnQgaGFuZGxlKQorCitCRVNDSFJFSUJVTkcKKyAgICAgICAgTmFjaCBkZW0gRWluZnVlZ2VuIGVpbmVyIFplaWxlIGluIGVpbmUgVGFiZWxsZSBtaXQgZWluZW0KKyAgICAgICAgQVVUT19JTkNSRU1FTlQtRmVsZCwgZGllc2UgRWZ1biBrYW5uIGRhenUgYmVudXR6dCB3ZXJkZW4gZGVuIG5ldWVuCisgICAgICAgIFdlcnQgZGllc2VzIEZlbGRlcyB6dXJ1ZWNrenVnZWJlbi4KKworICAgICAgICBEaWUgRnVua3Rpb24gaXN0IG51ciB2ZXJmdWVnYmFyIHdlbm4gZGVyIERyaXZlciBtaXQKKyAgICAgICAgbXlTUUwtVW50ZXJzdHVldHp1bmcgY29tcGlsaWVydCB3dXJkZS4gSW4gZGllc2VtIEZhbGwgaXN0IGRhcyBNYWtybworICAgICAgICBfX01ZU1FMX18gZGVmaW5pZXJ0LgorCisgICAgICAgIERpZSBFZnVuIGlzdCBwcml2aWxlZ2llcnQgYWxzICgibXlzcWwiLCAiZGJfaW5zZXJ0X2lkIikuCisKK0dFU0NISUNIVEUKKyAgICAgICAgRWluZ2VmdWVocnQgaW4gTERNdWQgMy4yLjkuCisgICAgICAgIExETXVkIDMuMi4xMSBtYWNodGUgZGllIEVmdW4gcHJpdmlsZWdpZXJ0LgorCitTSUVIRSBBVUNICisgICAgICAgIGRiX2FmZmVjdGVkX3Jvd3MoRSksIGRiX2NvbnZfc3RyaW5nKEUpLCBkYl9jbG9zZShFKSwgZGJfY29sZGVmcyhFKSwKKyAgICAgICAgZGJfY29ubmVjdChFKSwgZGJfZXJyb3IoRSksIGRiX2V4ZWMoRSksIGRiX2ZldGNoKEUpLCBkYl9oYW5kbGVzKEUpLAorICAgICAgICBteXNxbChDKSwgcHJpdmlsZWdlX3Zpb2xhdGlvbihNKQpkaWZmIC0tZ2l0IGEvZG9jL2VmdW4vZGVidWdfbWVzc2FnZSBiL2RvYy9lZnVuL2RlYnVnX21lc3NhZ2UKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMDdlNzVlNgotLS0gL2Rldi9udWxsCisrKyBiL2RvYy9lZnVuL2RlYnVnX21lc3NhZ2UKQEAgLTAsMCArMSwzNiBAQAorU1lOT1BTSVMKKyAgICAgICAgI2luY2x1ZGUgPHN5cy9kZWJ1Z19tZXNzYWdlLmg+CisKKyAgICAgICAgdm9pZCBkZWJ1Z19tZXNzYWdlKHN0cmluZyB0ZXh0KTsKKyAgICAgICAgdm9pZCBkZWJ1Z19tZXNzYWdlKHN0cmluZyB0ZXh0LCBpbnQgZmxhZ3MpOworCitCRVNDSFJFSUJVTkcKKyAgICAgICAgR2lidCA8dGV4dD4gYW4gZGllIEF1c2dhZW5nZSBzdGRvdXQgdW5kIHN0ZGVyciBzb3dpZSBhbiBkaWUgRGF0ZWkKKyAgICAgICAgPGhvc3Q+LmRlYnVnLmxvZywgb2RlciBhbiBlaW5lIGJlbGllYmlnZSBLb21iaW5hdGlvbiBkaWVzZXIgZHJlaS4KKworICAgICAgICBEYXMgQXJndW1lbnQgPGZsYWc+IGJlemVpY2huZXQgZHVyY2ggZWluZSBLb21iaW5hdGlvbiB2b24gQml0ZmxhZ3MgZGFzCisgICAgICAgIFppZWwgdW5kIGRpZSBBcnQsIGluIGRlciBkYXMgUmVzdWx0YXQgZ2VzY2hyaWViZW4gd2lyZC4KKworICAgICAgICBEaWUgWmllbC1GbGFncyBzaW5kOiBETVNHX1NURE9VVCwgRE1TR19TVERFUlIgdW5kIERNU19MT0dGSUxFLiBXaXJkCisgICAgICAgIHp1c2FldHpsaWNoIGRhcyBGbGFnIERNU0dfU1RBTVAgZ2VzZXR6dCwgZXJoYWVsdCBqZWRlciBFaW50cmFnIGVpbmVuCisgICAgICAgIFplaXRzdGVtcGVsIChUaW1lc3RhbXApIGltIEZvcm1hdCAnWVlZWS5NTS5ERCBISDpNTTpTUyAnLgorCisgICAgICAgIFdlbm4gPGZsYWdzPiAwIGlzdCwgd2VnZ2VsYXNzZW4gd2lyZCBvZGVyIGtlaW4gWmllbC1GbGFnIGVudGhhZWx0LAorICAgICAgICB3aXJkIDx0ZXh0PiBzdGFuZGFyZG1hZXNzaWcgYW4gc3Rkb3V0IHVuZCBpbnMgTG9nZmlsZSBhdXNnZWdlYmVuLgorCitCRUlTUElFTAorICAgICAgICBkZWJ1Z19tZXNzYWdlKCJEaWVzZXIgVGV4dCBnZWh0IGFuIHN0ZG91dCB1bmQgaW5zIExvZ2ZpbGUuXG4iKTsKKyAgICAgICAgZGVidWdfbWVzc2FnZSgiRGllcyBnZWh0IGFuIHN0ZGVyci5cbiIsIERNU0dfU1RERVJSKTsKKyAgICAgICAgZGVidWdfbWVzc2FnZSgiRGllcyBnZWh0IGFuIHN0ZG91dCB1bmQgc3RkZXJyLlxuIiwgRE1TR19TVERPVVQKKyAgICAgICAgICAgIHwgRE1TR19TVERFUlIpOworICAgICAgICBkZWJ1Z19tZXNzYWdlKCJEaWVzIGdlaHQgYW4gc3Rkb3V0IHVuZCBpbnMgTG9nZmlsZSwgbWl0IFRpbWVzdGFtcC5cbiIsCisgICAgICAgICAgICBETVNHX1NUQU1QKTsKKyAgICAgICAgZGVidWdfbWVzc2FnZSgiRGllIGdlaHQgYW4gc3Rkb3V0LCBtaXQgdm9yYW5nZXN0ZWxsdGVtIFRpbWVzdGFtcC5cbiIsCisgICAgICAgICAgICBETVNHX1NURE9VVCB8IERNU0dfU1RBTVApOworCitBRU5ERVJVTkdFTgorICAgICAgICBFaW5nZWZ1ZWhydCBpbiAzLjIuMUAzNC4KKyAgICAgICAgTERNdWQgMy4yLjkgZnVlaHJ0ZSBkYXMgQXJndW1lbnQgPGZsYWdzPiBlaW4uCisKK1NJRUhFIEFVQ0gKKyAgICAgICAgbGFzdF9pbnN0cnVjdGlvbnMoRSkKZGlmZiAtLWdpdCBhL2RvYy9lZnVuL2RlZXBfY29weSBiL2RvYy9lZnVuL2RlZXBfY29weQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4xY2VmOWE4Ci0tLSAvZGV2L251bGwKKysrIGIvZG9jL2VmdW4vZGVlcF9jb3B5CkBAIC0wLDAgKzEsMjcgQEAKK1NZTk9QU0lTCisgICAgICAgIG1peGVkIGRlZXBfY29weShtaXhlZCBhcmcpOworCitCRVNDSFJFSUJVTkcKKyAgICAgICAgRXJ6ZXVndCBlaW5lIGVjaHRlIEtvcGllIHZvbiA8YXJnPiB1bmQgbGllZmVydCBkaWVzZSB6dXJ1ZWNrLiBGdWVyCisgICAgICAgIEFycmF5cyB1bmQgTWFwcGluZ3MgYmVkZXV0ZXQgZGllcywgZGFzcyBlaW4gbmV1ZXMgQXJyYXkgb2RlciBNYXBwaW5nCisgICAgICAgIGVyemV1Z3Qgd2lyZCwgZGFzIGV4YWt0ZSBLb3BpZW4gZGVyIEVpbnRyYWVnZSBkZXMgT3JpZ2luYWxzIGVudGhhZWx0LgorICAgICAgICBFaW5nZWJldHRldGUgQXJyYXlzIHVuZCBNYXBwaW5ncyB3ZXJkZW4gZWJlbnNvIGVjaHQga29waWVydC4KKworICAgICAgICBGdWVyIGFuZGVyZSBUeXBlbiBhbHMgTWFwcGluZ3MgdW5kIEFycmF5cyBiZXdpcmt0IGRpZXNlIEZ1bmt0aW9uCisgICAgICAgIG5pY2h0cy4KKworICAgICAgICBXZW5uIGltIERyaXZlciBEWU5BTUlDX0NPU1QgZGVmaW5pZXJ0IGlzdCwgemFlaGx0IGplZGVzIGVpbmdlYmV0dGV0ZQorICAgICAgICBNYXBwaW5nIG9kZXIgQXJyYXkgenUgZGVuIEV2YWx1YXRpb25za29zdGVuIHNvd29obCBpbiBkZXIgR3JvZXNzZSBhbHMKKyAgICAgICAgYXVjaCBpbiBkZXIgRWluYmV0dHVuZ3N0aWVmZS4KKworQkVJU1BJRUwKKyAgICAgICAgbWl4ZWQgKmEsICpiOworICAgICAgICBhID0gKHsgMSwgKHsgMjEsIDIyIH0pIH0pOworICAgICAgICBiID0gZGVlcF9jb3B5KGEpOworICAgICAgICBhWzBdID0gLTE7IGFbMV1bMF0gPSAtMjE7CisgICAgICAgICAtLT4gYSBpc3QgamV0enQgICAoeyAtMSwgKHsgLTIxLCAyMiB9KSB9KQorICAgICAgICAgICAgIGIgYmxlaWJ0ICAgICAgKHsgIDEsICh7ICAyMSwgMjIgfSkgfSkKKworQUVOREVSVU5HRU4KKyAgICAgICAgRWluZ2VmdWVocnQgaW4gTERNdWQgMy4yLjYuCisgICAgICAgIExETXVkIDMuMi45IGZ1ZWd0ZSBkaWUgZHluYW1pc2NoZW4gS29zdGVuIHp1ciBFZnVuIGhpbnp1LgpkaWZmIC0tZ2l0IGEvZG9jL2VmdW4vZGVlcF9pbnZlbnRvcnkgYi9kb2MvZWZ1bi9kZWVwX2ludmVudG9yeQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41MWY0YzY2Ci0tLSAvZGV2L251bGwKKysrIGIvZG9jL2VmdW4vZGVlcF9pbnZlbnRvcnkKQEAgLTAsMCArMSwzNiBAQAorU1lOT1BTSVMKKyAgICAgICAgKm9iamVjdCBkZWVwX2ludmVudG9yeSgpOworICAgICAgICAqb2JqZWN0IGRlZXBfaW52ZW50b3J5KG9iamVjdCBvYik7CisgICAgICAgIG9iamVjdCAqZGVlcF9pbnZlbnRvcnkob2JqZWN0IG9iLCBpbnQgZGVwdGgpCisKK0JFU0NIUkVJQlVORworICAgICAgICBHaWJ0IGVpbiBBcnJheSBkZXIgT2JqZWt0ZSB6dXJ1ZWNrLCBkaWUgaW4gPG9iaj4gZW50aGFsdGVuIHNpbmQuCisgICAgICAgIFdlbm4gPG9iaj4gbmljaHQgYW5nZWdlYmVuIHdpcmQsIHdpcmQgc3RhbmRhcmRtYWVzc2lnIHRoaXNfb2JqZWN0KCkKKyAgICAgICAgdmVyd2VuZGV0LiBFYmVuc28gd2VyZGVuIGFsbGUgT2JqZWt0ZSBhbmdlZ2ViZW4sIGRpZSBzaWNoIGltIEludmVudG9yeQorICAgICAgICBkZXIgaW4gPG9iaj4gZW50aGFsdGVuZW4gT2JqZWt0ZSBiZWZpbmRlbi4gRGllIFN1Y2hlIHZlcmxhZXVmdAorICAgICAgICByZWt1cnNpdiBhYnN0ZWlnZW5kLgorCisgICAgICAgIElzdCA8ZGVwdGg+IGFuZ2VnZWJlbiB1bmQgdW5nbGVpY2ggMCwgaXN0IGRhcyBSZXN1bHRhdCB3aWUgZm9sZ3QKKyAgICAgICAgZ2VmaWx0ZXJ0OgorICAgICAgICAgIDxkZXB0aD4gPiAwOiBOdXIgZGllIE9iamVrdGUgaW4gZGVuIGVyc3RlbiA8ZGVwdGg+IEViZW5lbgorICAgICAgICAgICAgICAgICAgICAgICB3ZXJkZW4genVydWVja2dlZ2ViZW4uCisgICAgICAgICAgPGRlcHRoPiA8IDA6IE51ciBkaWUgT2JqZWt0ZSBpbiBkZXIgLTxkZXB0aD50ZW4gRWJlbmUgd2VyZGVuCisgICAgICAgICAgICAgICAgICAgICAgIHp1cnVlY2tnZWdlYmVuLgorCitCRUlTUElFTAorICAgICAgICBvYgorICAgICAgICArLSBvYjEKKyAgICAgICAgKy0gb2IyCisgICAgICAgIHwgICArLSBvYjIxCisgICAgICAgIHwgIG9iMworICAgICAgICB8ICAgKy0gb2IzMQorICAgICAgICArLSBvYjQKKworCisgICAgICAgIGRlZXBfaW52ZW50b3J5KG9iKSA9PiAoe29iMSwgb2IyLCBvYjMsIG9iNCwgb2IyMSwgb2IzMX0pCisgICAgICAgIGRlZXBfaW52ZW50b3J5KG9iLCAxKSA9PiAoe29iMSwgb2IyLCBvYjMsIG9iNH0pCisgICAgICAgIGRlZXBfaW52ZW50b3J5KG9iLCAyKSA9PiAoe29iMSwgb2IyLCBvYjMsIG9iNCwgb2IyMSwgb2IzMX0pCisgICAgICAgIGRlZXBfaW52ZW50b3J5KG9iLCAtMikgPT4gKHtvYjIxLCBvYjMxfSkKKworU0lFSEUgQVVDSAorICAgICAgICBmaXJzdF9pbnZlbnRvcnkoRSksIG5leHRfaW52ZW50b3J5KEUpLCBhbGxfaW52ZW50b3J5KEUpCmRpZmYgLS1naXQgYS9kb2MvZWZ1bi9kZXN0cnVjdCBiL2RvYy9lZnVuL2Rlc3RydWN0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmY2NGRlNTYKLS0tIC9kZXYvbnVsbAorKysgYi9kb2MvZWZ1bi9kZXN0cnVjdApAQCAtMCwwICsxLDQzIEBACitTWU5PUFNJUworICAgICAgICB2b2lkIGRlc3RydWN0KG9iamVjdCBvYikKKworQkVTQ0hSRUlCVU5HCisgICAgICAgIFplcnN0b2VydCB1bmQgZW50ZmVybnQgZGFzIE9iamVrdCBvYi4gSXN0IG9iID09IDAgKG9iIHd1cmRlIHNjaG9uCisgICAgICAgIHplcnN0b2VydCksIHNvIHBhc3NpZXJ0IG5pY2h0cy4gTmFjaCBkZW0gQXVmcnVmIHZvbiBkZXN0cnVjdCgpCisgICAgICAgIGV4aXN0aWVyZW4ga2VpbmUgZ2xvYmFsZW4gVmFyaWFibGVuIG1laHIsIHNvbmRlcm4gbnVyIG5vY2ggbG9rYWxlCisgICAgICAgIFZhcmlhYmxlbiB1bmQgQXJndW1lbnRlLgorCisgICAgICAgIFdlbm4gc2ljaCBlaW4gT2JqZWt0IHNlbGJzdCB6ZXJzdG9lcnQsIHdpcmQgZGllIEF1c2Z1ZWhydW5nIG5pY2h0CisgICAgICAgIHNvZm9ydCBhYmdlYnJvY2hlbi4gV2lyZCBkaWUgRWZ1biB0aGlzX29iamVjdCgpIGF1ZmdlcnVmZW4sIHNvCisgICAgICAgIGxpZWZlcnQgZGllc2UgMCB6dXJ1ZWNrLgorCisgICAgICAgIERpZSBtZWlzdGVuIE11ZGxpYnMgbW9lZ2VuIGVzIG5pY2h0LCB3ZW5uIGFuZGVyZSBPYmpla3RlIG1pdHRlbHMKKyAgICAgICAgZGVzdHJ1Y3QoKSBpbnMgRGF0ZW4tTmlyd2FuYSBnZXNjaGlja3Qgd2VyZGVuLiBTdGF0dGRlc3NlbiBlcndhcnRlbgorICAgICAgICBzaWUgZGVuIEF1ZnJ1ZiBlaW5lciBzcGV6aWVsbGVuIExmdW4gaW0genUgemVyc3RvZXJlbmRlbiBPYmpla3QsCisgICAgICAgIHdlbGNoZSBub3JtYWxlcndlaXNlIHJlbW92ZSgpIGhlaXNzdC4gRGFtaXQga2FubiBkYXMgenUKKyAgICAgICAgemVyc3RvZXJlbmRlIE9iamVrdCBub2NoIGFic2NobGllc3NlbmRlIEFyYmVpdGVuIGltIFp1c2FtbWVuaGFuZworICAgICAgICBtaXQgc2VpbmVtIEFibGViZW4gZXJsZWRpZ2VuLCB3aWUgei4gQi4gZGllIEFucGFzc3VuZyBkZXMgR2V3aWNodGVzCisgICAgICAgIHNlaW5lciBVbWdlYnVuZyBldGMuIHBwLgorCisgICAgICAgIERlciBJbnRlcnByZXRlciB6ZXJzdG9lcnQgZGFzIE9iamVrdCBuaWNodCBzb2ZvcnQsIHNvbmRlcm4gZXIKKyAgICAgICAgbWFya2llcnQgZXMgYWxzIHplcnN0b2VydCwgZW50ZmVybnQgZXMgdm9uIGRlciBMaXN0ZSwgZGllIGFsbGUKKyAgICAgICAgT2JqZWt0ZSBlbnRoYWVsdCwgdW5kIGZ1ZWd0IGVzIHp1IGRlciBMaXN0ZSB6dSB6ZXJzdG9lcmVuZGVuCisgICAgICAgIE9iamVrdGUgaGluenUuIERpZSB0YXRzYWVjaGxpY2hlIFplcnN0b2VydW5nIGdlc2NoaWVodCBlcnN0IGRhbm4sCisgICAgICAgIHdlbm4ga2VpbmUgUmVmZXJlbnplbiBtZWhyIGF1ZiBkYXMgT2JqZWt0IGV4aXN0aWVyZW4uIERlc2hhbGIgaXN0CisgICAgICAgIGVzIG1vZWdsaWNoLCBkYXNzIGVpbiBPYmpla3Qgbm9jaCBsYW5nZSBuYWNoIHNlaW5lciBaZXJzdG9lcnVuZworICAgICAgICBTcGVpY2hlciBiZWxlZ3QsIG9id29obCBlcyB2b24gYXVzc2VyaGFsYiBuaWNodCBtZWhyIGdlZnVuZGVuIHdpcmQuCisKK0JFSVNQSUVMCisgICAgICAgIG9iLT5yZW1vdmUoKTsKKyAgICAgICAgaWYob2IpICAgICAgICAvLyBlcyBleGlzdGllcnQgbm9jaCwgdmllbGxlaWNodCBpc3QgZGllIExmdW4KKyAgICAgICAgICAgICAgICAgICAgICAvLyByZW1vdmUoKSBuaWNodCBkZWZpbmllcnQ/CisgICAgICAgICAgICBkZXN0cnVjdChvYik7CisKKyAgICAgICAgRGllcyBpc3QgZGllIFN0YW5kYXJkLU1ldGhvZGUsIGVpbiBPYmpla3QgenUgemVyc3RvZXJlbiwgaWhtIGFiZXIKKyAgICAgICAgdm9yaGVyIG5vY2ggZGllIENoYW5jZSB6dSBnZWJlbiwgZXMgc2VsYmVyIHp1IHR1bi4KKworQUVOREVSVU5HRU4KKyAgICAgICAgTERNdWQgMy4yLjc6IDAgKHplcnN0b2VydGUgT2JqZWt0KSBhbHMgQXJndW1lbnQgYW5uZWhtZW4uCisKK1NJRUhFIEFVQ0gKKyAgICAgICAgY2xvbmVfb2JqZWN0KEUpLCByZW1vdmUoQSkKZGlmZiAtLWdpdCBhL2RvYy9lZnVuL2Rpc2FibGVfY29tbWFuZHMgYi9kb2MvZWZ1bi9kaXNhYmxlX2NvbW1hbmRzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjBiNjc1N2UKLS0tIC9kZXYvbnVsbAorKysgYi9kb2MvZWZ1bi9kaXNhYmxlX2NvbW1hbmRzCkBAIC0wLDAgKzEsMTAgQEAKK1NZTk9QU0lTCisgICAgICAgIHZvaWQgZGlzYWJsZV9jb21tYW5kcygpOworCitCRVNDSFJFSUJVTkcKKyAgICAgICAgVmVyYmlldGV0IGRlbSBPYmpla3QsIEtvbW1hbmRpIHp1IHZlcndlbmRlbiwgZGllIG5vcm1hbGVyd2Vpc2UgVXNlcm4KKyAgICAgICAgenVnYWVuZ2xpY2ggc2luZC4gRGllc2UgRnVua3Rpb24gaXN0IGRhcyBHZWdlbnRlaWwgdm9uCisgICAgICAgIGVuYWJsZV9jb21tYW5kcygpLgorCitTSUVIRSBBVUNICisgICAgICAgIGVuYWJsZV9jb21tYW5kcyhFKQpkaWZmIC0tZ2l0IGEvZG9jL2VmdW4vZHJpdmVyX2luZm8gYi9kb2MvZWZ1bi9kcml2ZXJfaW5mbwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5mMWVhYTY2Ci0tLSAvZGV2L251bGwKKysrIGIvZG9jL2VmdW4vZHJpdmVyX2luZm8KQEAgLTAsMCArMSw2ODUgQEAKK1NZTk9QU0lTCisgICAgICAgICNpbmNsdWRlIDxkcml2ZXJfaW5mby5oPgorCisgICAgICAgIG1peGVkIGRyaXZlcl9pbmZvKGludCB3aGF0KQorCitERVNDUklQVElPTgorICAgICAgICBSZXR1cm5zIHNvbWUgaW50ZXJuYWwgaW5mb3JtYXRpb24gYWJvdXQgdGhlIGRyaXZlci4KKyAgICAgICAgVGhlIGFyZ3VtZW50IDx3aGF0PiBkZXRlcm1pbmVzIHdoaWNoIGluZm9ybWF0aW9uIGlzIHJldHVybmVkLgorCisgICAgICAgIEl0IGNhbiBiZSBlaXRoZXIgYSBjb25maWd1cmF0aW9uIG9wdGlvbiBhcyBnaXZlbiB0bworICAgICAgICBjb25maWd1cmVfZHJpdmVyKCkgb3Igb25lIG9mIHRoZSBmb2xsb3dpbmcgb3B0aW9uczoKKworCisKKyAgICAgICAgRHJpdmVyIEVudmlyb25tZW50OgorCisgICAgICAgIDx3aGF0PiA9PSBESV9CT09UX1RJTUU6CisgICAgICAgICAgVGhlIHRpbWUoKSB3aGVuIHRoZSBkcml2ZXIgd2FzIHN0YXJ0ZWQuCisKKworCisgICAgICAgIExQQyBSdW50aW1lIHN0YXR1czoKKworICAgICAgICA8d2hhdD4gPT0gRElfQ1VSUkVOVF9SVU5USU1FX0xJTUlUUzoKKyAgICAgICAgICBSZXR1cm4gYW4gYXJyYXkgd2l0aCB0aGUgY3VycmVudCBydW50aW1lIGxpbWl0cy4KKyAgICAgICAgICBUaGUgZW50cmllcyBpbiB0aGUgcmV0dXJuZWQgYXJyYXkgYXJlOgorCisgICAgICAgICAgICBpbnRbTElNSVRfRVZBTF06ICAgICAgICAgdGhlIG1heCBudW1iZXIgb2YgZXZhbCBjb3N0cworICAgICAgICAgICAgaW50W0xJTUlUX0FSUkFZXTogICAgICAgIHRoZSBtYXggbnVtYmVyIG9mIGFycmF5IGVudHJpZXMKKyAgICAgICAgICAgIGludFtMSU1JVF9NQVBQSU5HX1NJWkVdOiB0aGUgbWF4IG51bWJlciBvZiBtYXBwaW5nIHZhbHVlcworICAgICAgICAgICAgaW50W0xJTUlUX01BUFBJTkdfS0VZU106IHRoZSBtYXggbnVtYmVyIG9mIG1hcHBpbmcgZW50cmllcworICAgICAgICAgICAgICAgKExJTUlUX01BUFBJTkcgaXMgYW4gYWxpYXMgZm9yIExJTUlUX01BUFBJTkdfS0VZUykKKyAgICAgICAgICAgIGludFtMSU1JVF9CWVRFXTogICAgICAgICB0aGUgbWF4IG51bWJlciBvZiBieXRlcyBoYW5kbGVkIHdpdGgKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvbmUgcmVhZF9ieXRlcygpL3dyaXRlX2J5dGVzKCkgY2FsbC4KKyAgICAgICAgICAgIGludFtMSU1JVF9GSUxFXTogICAgICAgICB0aGUgbWF4IG51bWJlciBvZiBieXRlcyBoYW5kbGVkIHdpdGgKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvbmUgcmVhZF9maWxlKCkvd3JpdGVfZmlsZSgpIGNhbGwuCisgICAgICAgICAgICBpbnRbTElNSVRfQ0FMTE9VVFNdOiAgICAgdGhlIG51bWJlciBvZiBjYWxsb3V0cyBhdCBvbmUgdGltZS4KKyAgICAgICAgICAgIGludFtMSU1JVF9DT1NUXTogICAgICAgICBob3cgdG8gYWNjb3VudCB0aGUgY3VycmVudCBjb3N0LgorICAgICAgICAgICAgaW50W0xJTUlUX01FTVJPWV06ICAgICAgIHRoZSBtYXguIG51bWJlciBvZiBieXRlcyB3aGljaCBjYW4gYmUgCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX2FkZGl0aW9uYWxseV8gYWxsb2NhdGVkL3VzZWQgCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX3BlciB0b3AtbGV2ZWwgZXhlY3V0aW9uIHRocmVhZF8KKworICAgICAgICAgIEZvciBhbGwgbGltaXRzIGV4Y2VwdCBMSU1JVF9DT1NUIGEgbGltaXQgb2YgJzAnIGFrYSBMSU1JVF9VTkxJTUlURUQKKyAgICAgICAgICBtZWFucyAnbm8gbGltaXQnLgorCisgICAgICAgICAgVGhlIHZhbHVlIGZvciBMSU1JVF9DT1NUIGhhcyB0aGVzZSBtZWFuaW5nczoKKworICAgICAgICAgICAgdmFsdWUgPiAwOiB0aGUgZXhlY3V0aW9uIHdpbGwgY29zdCBtaW5pbXVtKDx2YWx1ZT4sIGFjdHVhbCBjb3N0KSAuCisgICAgICAgICAgICB2YWx1ZSA9IDA6IGlmIHRoZSBjdXJyZW50IExJTUlUX0VWQUwgaXMgbGFyZ2VyIHRoYW4gdGhlIGNhbGxpbmcKKyAgICAgICAgICAgICAgICAgICAgICAgTElNSVRfRVZBTCwgdGhlIGV2YWx1YXRpb24gd2lsbCBjb3N0IG9ubHkgMTA7IG90aGVyd2lzZQorICAgICAgICAgICAgICAgICAgICAgICB0aGUgZnVsbCBjb3N0IHdpbGwgYmUgYWNjb3VudGVkLgorICAgICAgICAgICAgdmFsdWUgPCAwOiAoLXZhbHVlKSUgb2YgdGhlIGN1cnJlbnQgZXZhbHVhdGlvbiBjb3N0IHdpbGwgYmUKKyAgICAgICAgICAgICAgICAgICAgICAgYWNjb3VudGVkOyAtMTAwIG9idmlvdXNseSBtZWFucyAnZnVsbCBjb3N0Jy4KKworICAgICAgICA8d2hhdD4gPT0gRElfRVZBTF9OVU1CRVI6CisgICAgICAgICAgUmV0dXJuIHRoZSBjdXJyZW50IGV2YWx1YXRpb24gbnVtYmVyLgorICAgICAgICAgIFRoZSBudW1iZXIgaXMgaW5jcmVtZW50ZWQgZm9yIGVhY2ggdG9wLWxldmVsIGNhbGwuIFRvcC1sZXZlbAorICAgICAgICAgIGNhbGxzIGFyZSBpbml0aWF0ZWQgYnkgdGhlIGRyaXZlciwgdXN1YWxseSBpbiByZWFjdGlvbiB0byBhbgorICAgICAgICAgIGV4dGVybmFsIGV2ZW50OgorICAgICAgICAgICAgICAtIGNvbW1hbmRzIChhZGRlZCBieSBhZGRfYWN0aW9uKQorICAgICAgICAgICAgICAtIGhlYXJ0X2JlYXQsIHJlc2V0LCBjbGVhbl91cAorICAgICAgICAgICAgICAtIGNhbGxzIGZyb20gY2FsbF9vdXQgb3IgaW5wdXRfdG8KKyAgICAgICAgICAgICAgLSBtYXN0ZXIgYXBwbGllcyB0cmlnZ2VyZWQgYnkgZXh0ZXJuYWwgZXZlbnRzCisgICAgICAgICAgICAgIC0gY2FsbHMgb2YgZHJpdmVyIGhvb2tzIGluIHJlYWN0aW9uIHRvIGV4dGVybmFsIGV2ZW50cworICAgICAgICAgICAgICAtIHNlbmRfZXJxIGNhbGxiYWNrcworICAgICAgICAgICAgICAtIGxvZ29uIGluIGludGVyYWN0aXZlcworCisgICAgICAgICAgVGhlIG51bWJlciBjYW4gYmUgdXNlZCB0byBkZXRlY3QgY2FzZXMgd2hlcmUgdGhlIHNhbWUgY29kZSBpcworICAgICAgICAgIGV4ZWN1dGVkIHR3aWNlIGluIHRoZSBzYW1lIHRvcCBsZXZlbCBldmFsdWF0aW9uIChzYXksIGhlYXJ0X2JlYXQpLAorICAgICAgICAgIGFuZCBhbHNvIGZvciB0aW1lIHN0YW1wcyBmb3Igb3JkZXJpbmcgc29tZSBldmVudHMuCisKKyAgICAgICAgICBQbGVhc2Ugbm90ZSB0aGF0IHRoZSBjb3VudGVyIG1heSBvdmVyZmxvdywgZXNwZWNpYWxseSBvbiAzMiBiaXQKKyAgICAgICAgICBzeXN0ZW1zLiBBcyBhIHJlc3VsdCwgaXQgY2FuIGFsc28gYmUgbmVnYXRpdmUuCisKKworCisgICAgICAgIE5ldHdvcmsgY29uZmlndXJhdGlvbjoKKworICAgICAgICA8d2hhdD4gPT0gRElfTVVEX1BPUlRTOgorICAgICAgICAgIFJldHVybnMgYW4gYXJyYXkgd2l0aCBhbGwgb3BlbiBwb3J0cywgd2hpY2ggdGhlIGRyaXZlcgorICAgICAgICAgIGxpc3RlbnMgZm9yIHBsYXllciBjb25uZWN0aW9ucyBvbi4KKworICAgICAgICA8d2hhdD4gPT0gRElfVURQX1BPUlQ6CisgICAgICAgICAgUmV0dXJucyB0aGUgcG9ydCBudW1iZXIgb2YgdGhlIFVEUCBzb2NrZXQuCisKKworCisgICAgICAgIE1lbW9yeSBtYW5hZ2VtZW50OgorCisgICAgICAgIDx3aGF0PiA9PSBESV9NRU1PUllfUkVTRVJWRV9VU0VSOgorICAgICAgICAgIEN1cnJlbnQgc2l6ZSBvZiB0aGUgdXNlciBtZW1vcnkgcmVzZXJ2ZS4KKyAgICAgICAgICBUaGUgdXNlciBtZW1vcnkgcmVzZXJ2ZSBpcyBhbGxvY2F0ZWQgYXQgc3RhcnR1cCBhbmQgaXMgdXNlZAorICAgICAgICAgIHdoZW4gdGhlIGRyaXZlciBydW5zIG91dCBvZiBtZW1vcnkuCisKKyAgICAgICAgPHdoYXQ+ID09IERJX01FTU9SWV9SRVNFUlZFX01BU1RFUjoKKyAgICAgICAgICBDdXJyZW50IHNpemUgb2YgdGhlIG1hc3RlciBtZW1vcnkgcmVzZXJ2ZS4KKyAgICAgICAgICBUaGUgbWFzdGVyIG1lbW9yeSByZXNlcnZlIGlzIGFsbG9jYXRlZCBhdCBzdGFydHVwIGFuZCBpcyB1c2VkCisgICAgICAgICAgd2hlbiB0aGUgZHJpdmVyIHJ1bnMgb3V0IG9mIG1lbW9yeSB3aGlsZSBleGVjdXRpbmcgbWFzdGVyCisgICAgICAgICAgY29kZS4KKworICAgICAgICA8d2hhdD4gPT0gRElfTUVNT1JZX1JFU0VSVkVfU1lTVEVNOgorICAgICAgICAgIEN1cnJlbnQgc2l6ZSBvZiB0aGUgc3lzdGVtIG1lbW9yeSByZXNlcnZlLgorICAgICAgICAgIFRoZSBzeXN0ZW0gbWVtb3J5IHJlc2VydmUgaXMgYWxsb2NhdGVkIGF0IHN0YXJ0dXAgYW5kIGlzIHVzZWQKKyAgICAgICAgICB3aGVuIHRoZSBkcml2ZXIgcnVucyBvdXQgb2YgbWVtb3J5IHdoaWxlIGV4ZWN1dGluZyBpbnRlcm5hbAorICAgICAgICAgIG9wZXJhdGlvbnMuCisKKworCisgICAgICAgIFRyYWNlczoKKworICAgICAgICA8d2hhdD4gPT0gRElfVFJBQ0VfQ1VSUkVOVDoKKyAgICAgICAgICBSZXR1cm5zIHRoZSBjdXJyZW50IHN0YWNrIHRyYWNlIGluIGFycmF5IGZvcm0uCisKKyAgICAgICAgICBJZiB0aGUgYXJyYXkgaGFzIG1vcmUgdGhhbiBvbmUgZW50cmllcywgdGhlIGZpcnN0IGVudHJ5IGlzIDAgb3IKKyAgICAgICAgICB0aGUgbmFtZSBvZiB0aGUgb2JqZWN0IHdpdGggdGhlIGhlYXJ0YmVhdCB3aGljaCBzdGFydGVkIHRoZQorICAgICAgICAgIGN1cnJlbnQgdGhyZWFkOyBhbGwgZm9sbG93aW5nIGVudHJpZXMgZGVzY3JpYmUgdGhlIGNhbGwgc3RhY2sKKyAgICAgICAgICBzdGFydGluZyB3aXRoIHRoZSB0b3Btb3N0IGZ1bmN0aW9uIGNhbGxlZC4KKworICAgICAgICAgIEFsbCBjYWxsIGVudHJpZXMgYXJlIGFycmF5cyB0aGVtc2VsdmVzIHdpdGggdGhlIGZvbGxvd2luZyBlbGVtZW50czoKKworICAgICAgICAgICAgICAgaW50W1RSQUNFX1RZUEVdOiBUaGUgdHlwZSBvZiB0aGUgY2FsbCBmcmFtZToKKyAgICAgICAgICAgICAgICAgICBUUkFDRV9UWVBFX1NZTUJPTCAoMCk6IGEgZnVuY3Rpb24gc3ltYm9sIChzaG91bGRuJ3QgaGFwcGVuKS4KKyAgICAgICAgICAgICAgICAgICBUUkFDRV9UWVBFX1NFRlVOICAoMSk6IGEgc2ltdWwtZWZ1bi4KKyAgICAgICAgICAgICAgICAgICBUUkFDRV9UWVBFX0VGVU4gICAoMik6IGFuIGVmdW4gY2xvc3VyZS4KKyAgICAgICAgICAgICAgICAgICBUUkFDRV9UWVBFX0xBTUJEQSAoMyk6IGEgbGFtYmRhIGNsb3N1cmUuCisgICAgICAgICAgICAgICAgICAgVFJBQ0VfVFlQRV9MRlVOICAgKDQpOiBhIG5vcm1hbCBsZnVuLgorCisgICAgICAgICAgICAgICBtaXhlZFtUUkFDRV9OQU1FXTogVGhlICduYW1lJyBvZiB0aGUgY2FsbGVkIGZyYW1lOgorICAgICAgICAgICAgICAgICAgIF9UWVBFX0VGVU46ICAgZWl0aGVyIHRoZSBuYW1lIG9mIHRoZSBlZnVuLCBvciB0aGUgY29kZSBvZgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhlIGluc3RydWN0aW9uIGZvciBvcGVyYXRvciBjbG9zdXJlcworICAgICAgICAgICAgICAgICAgIF9UWVBFX0xBTUJEQTogdGhlIG51bWVyaWMgbGFtYmRhIGlkZW50aWZpZXIuCisgICAgICAgICAgICAgICAgICAgX1RZUEVfTEZVTjogICB0aGUgbmFtZSBvZiB0aGUgbGZ1bi4KKworICAgICAgICAgICAgICAgc3RyaW5nW1RSQUNFX1BST0dSQU1dOiBUaGUgKGZpbGUpbmFtZSBvZiB0aGUgcHJvZ3JhbSBob2xkaW5nCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoZSBjb2RlLgorCisgICAgICAgICAgICAgICBzdHJpbmdbVFJBQ0VfT0JKRUNUXTogIFRoZSBuYW1lIG9mIHRoZSBvYmplY3QgZm9yIHdoaWNoIHRoZSBjb2RlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdhcyBleGVjdXRlZC4KKyAgICAgICAgICAgICAgIGludFtUUkFDRV9MT0NdOgorICAgICAgICAgICAgICAgICAgIF9UWVBFX0xBTUJEQTogY3VycmVudCBwcm9ncmFtIG9mZnNldCBmcm9tIHRoZSBzdGFydCBvZiB0aGUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsb3N1cmUgY29kZS4KKyAgICAgICAgICAgICAgICAgICBfVFlQRV9MRlVOOiAgIHRoZSBsaW5lIG51bWJlci4KKworICAgICAgICA8d2hhdD4gPT0gRElfVFJBQ0VfQ1VSUkVOVF9ERVBUSDoKKyAgICAgICAgICBSZXR1cm4gdGhlIGN1cnJlbnQgbnVtYmVyIG9mIGZyYW1lcyBvbiB0aGUgY29udHJvbCBzdGFjaworICAgICAgICAgIChyZWN1cnNpb24gZGVwdGgpLgorCisgICAgICAgIDx3aGF0PiA9PSBESV9UUkFDRV9DVVJSRU5UX0FTX1NUUklORzoKKyAgICAgICAgICBSZXR1cm5zIHRoZSBjdXJyZW50IHN0YWNrIHRyYWNlIGFzIGEgc3RyaW5nLgorCisgICAgICAgIDx3aGF0PiA9PSBESV9UUkFDRV9MQVNUX0VSUk9SOgorICAgICAgICAgIFJldHVybnMgdGhlIHN0YWNrIHRyYWNlIG9mIHRoZSBsYXN0IGVycm9yIGluIGFycmF5IGZvcm0KKyAgICAgICAgICAoc2FtZSBmb3JtYXQgYXMgRElfVFJBQ0VfQ1VSUkVOVCkuIFN0YWNrIHRyYWNlcyBvZiBlcnJvcnMKKyAgICAgICAgICBiZWZvcmUgdGhlIGxhc3QgR0MgbWlnaHQgbm90IGJlIGF2YWlsYWJsZSBhbnltb3JlLgorCisgICAgICAgIDx3aGF0PiA9PSBESV9UUkFDRV9MQVNUX0VSUk9SX0FTX1NUUklORzoKKyAgICAgICAgICBSZXR1cm5zIHRoZSBzdGFjayB0cmFjZSBvZiB0aGUgbGFzdCBlcnJvciBhcyBhIHN0cmluZy4KKworICAgICAgICA8d2hhdD4gPT0gRElfVFJBQ0VfTEFTVF9VTkNBVUdIVF9FUlJPUjoKKyAgICAgICAgICBSZXR1cm5zIHRoZSBzdGFjayB0cmFjZSBvZiB0aGUgbGFzdCB1bmNhdWdodCBlcnJvciBpbiBhcnJheSBmb3JtCisgICAgICAgICAgKHNhbWUgZm9ybWF0IGFzIERJX1RSQUNFX0NVUlJFTlQpLiBTdGFjayB0cmFjZXMgb2YgZXJyb3JzCisgICAgICAgICAgYmVmb3JlIHRoZSBsYXN0IEdDIG1pZ2h0IG5vdCBiZSBhdmFpbGFibGUgYW55bW9yZS4KKworICAgICAgICA8d2hhdD4gPT0gRElfVFJBQ0VfTEFTVF9VTkNBVUdIVF9FUlJPUl9BU19TVFJJTkc6CisgICAgICAgICAgUmV0dXJucyB0aGUgc3RhY2sgdHJhY2Ugb2YgdGhlIGxhc3QgdW5jYXVnaHQgZXJyb3IgYXMgYSBzdHJpbmcuCisKKworCisgICAgICAgIExQQyBSdW50aW1lIHN0YXRpc3RpY3M6CisKKyAgICAgICAgPHdoYXQ+ID09IERJX05VTV9GVU5DVElPTl9OQU1FX0NBTExTOgorICAgICAgICAgIE51bWJlciBvZiBmdW5jdGlvbiBjYWxscyBieSBuYW1lIChsaWtlIGNhbGxfb3RoZXIpLgorCisgICAgICAgIDx3aGF0PiA9PSBESV9OVU1fRlVOQ1RJT05fTkFNRV9DQUxMX0hJVFM6CisgICAgICAgICAgRnVuY3Rpb24gY2FsbHMgYnkgbmFtZSBhcmUgY2FjaGVkICh0byBhY2NlbGVyYXRlCisgICAgICAgICAgbG9va3VwIG9mIHRoZSBjb3JyZXNwb25kaW5nIHByb2dyYW0gY29kZSkuCisgICAgICAgICAgVGhpcyByZXR1cm5zIHRoZSBudW1iZXIgb2YgY2FjaGUgaGl0cy4KKworICAgICAgICA8d2hhdD4gPT0gRElfTlVNX0ZVTkNUSU9OX05BTUVfQ0FMTF9NSVNTRVM6CisgICAgICAgICAgVGhlIG51bWJlciBvZiBmdW5jdGlvbiBjYWxsIGNhY2hlIG1pc3Nlcy4KKworICAgICAgICA8d2hhdD4gPT0gRElfTlVNX09CSkVDVFNfTEFTVF9QUk9DRVNTRUQ6CisgICAgICAgICAgTnVtYmVyIG9mIGxpc3RlZCBvYmplY3RzIHByb2Nlc3NlZCBpbiB0aGUgbGFzdCBiYWNrZW5kIGN5Y2xlLgorCisgICAgICAgIDx3aGF0PiA9PSBESV9OVU1fSEVBUlRCRUFUX1RPVEFMX0NZQ0xFUzoKKyAgICAgICAgICBUb3RhbCBudW1iZXIgb2YgaGVhcnRfYmVhdHMgY3ljbGVzIHNvIGZhci4KKworICAgICAgICA8d2hhdD4gPT0gRElfTlVNX0hFQVJUQkVBVF9BQ1RJVkVfQ1lDTEVTOgorICAgICAgICAgIE51bWJlciBvZiBhY3RpdmUgaGVhcnRfYmVhdCBjeWNsZXMgZXhlY3V0ZWQgc28gZmFyCisgICAgICAgICAgKGllLiBjeWNsZXMgaW4gd2hpY2ggYXQgbGVhc3Qgb25lIGhlYXJ0X2JlYXQoKSBmdW5jdGlvbgorICAgICAgICAgIHdhcyBjYWxsZWQpLgorCisgICAgICAgIDx3aGF0PiA9PSBESV9OVU1fSEVBUlRCRUFUU19MQVNUX1BST0NFU1NFRDoKKyAgICAgICAgICBOdW1iZXIgb2YgaGVhcnRfYmVhdHMgY2FsbHMgaW4gdGhlIGxhc3QgYmFja2VuZCBjeWNsZQorCisgICAgICAgIDx3aGF0PiA9PSBESV9OVU1fU1RSSU5HX1RBQkxFX1NUUklOR1NfQURERUQ6CisgICAgICAgICAgTnVtYmVyIG9mIGRpc3RpbmN0IHN0cmluZ3MgYWRkZWQgdG8gdGhlIHN0cmluZyB0YWJsZSBzbyBmYXIuCisKKyAgICAgICAgPHdoYXQ+ID09IERJX05VTV9TVFJJTkdfVEFCTEVfU1RSSU5HU19SRU1PVkVEOgorICAgICAgICAgIE51bWJlciBvZiBkaXN0aW5jdCBzdHJpbmdzIHJlbW92ZWQgZnJvbSB0aGUgc3RyaW5nIHRhYmxlIHNvIGZhci4KKworICAgICAgICA8d2hhdD4gPT0gRElfTlVNX1NUUklOR19UQUJMRV9MT09LVVBTX0JZX1ZBTFVFOgorICAgICAgICAgIE51bWJlciBvZiBzdHJpbmcgc2VhcmNoZXMgYnkgdmFsdWUuCisKKyAgICAgICAgPHdoYXQ+ID09IERJX05VTV9TVFJJTkdfVEFCTEVfTE9PS1VQU19CWV9JTkRFWDoKKyAgICAgICAgICBOdW1iZXIgb2Ygc3RyaW5nIHNlYXJjaGVzIGJ5IGFkZHJlc3MuCisKKyAgICAgICAgPHdoYXQ+ID09IERJX05VTV9TVFJJTkdfVEFCTEVfTE9PS1VQX1NURVBTX0JZX1ZBTFVFOgorICAgICAgICAgIE51bWJlciBvZiBsb29rdXAgc3RlcHMgbmVlZGVkIGZvciBzdHJpbmcgc2VhcmNoZXMgYnkgdmFsdWUuCisKKyAgICAgICAgPHdoYXQ+ID09IERJX05VTV9TVFJJTkdfVEFCTEVfTE9PS1VQX1NURVBTX0JZX0lOREVYOgorICAgICAgICAgIE51bWJlciBvZiBsb29rdXAgc3RlcHMgbmVlZGVkIGZvciBzdHJpbmcgc2VhcmNoZXMgYnkgYWRkcmVzcy4KKworICAgICAgICA8d2hhdD4gPT0gRElfTlVNX1NUUklOR19UQUJMRV9ISVRTX0JZX1ZBTFVFOgorICAgICAgICAgIE51bWJlciBvZiBzdWNjZXNzZnVsIGxvb2t1cHMgb2Ygc3RyaW5ncyBieSB2YWx1ZS4KKworICAgICAgICA8d2hhdD4gPT0gRElfTlVNX1NUUklOR19UQUJMRV9ISVRTX0JZX0lOREVYOgorICAgICAgICAgIE51bWJlciBvZiBzdWNjZXNzZnVsIGxvb2t1cHMgb2Ygc3RyaW5ncyBieSBhZGRyZXNzLgorCisgICAgICAgIDx3aGF0PiA9PSBESV9OVU1fU1RSSU5HX1RBQkxFX0NPTExJU0lPTlM6CisgICAgICAgICAgTnVtYmVyIG9mIGRpc3RpbmN0IHN0cmluZ3MgYWRkZWQgdG8gYW4gZXhpc3RpbmcgaGFzaCBjaGFpbiBzbyBmYXIuCisKKyAgICAgICAgPHdoYXQ+ID09IERJX05VTV9SRUdFWF9MT09LVVBTOgorICAgICAgICAgIE51bWJlciBvZiByZXF1ZXN0cyBmb3IgbmV3IHJlZ2V4cHMuCisKKyAgICAgICAgPHdoYXQ+ID09IERJX05VTV9SRUdFWF9MT09LVVBfSElUUzoKKyAgICAgICAgICBOdW1iZXIgb2YgcmVxdWVzdGVkIHJlZ2V4cHMgZm91bmQgaW4gdGhlIHRhYmxlLgorCisgICAgICAgIDx3aGF0PiA9PSBESV9OVU1fUkVHRVhfTE9PS1VQX01JU1NFUzoKKyAgICAgICAgICBOdW1iZXIgb2YgcmVxdWVzdGVkIHJlZ2V4cHMgbm90IGZvdW5kIGluIHRoZSB0YWJsZS4KKworICAgICAgICA8d2hhdD4gPT0gRElfTlVNX1JFR0VYX0xPT0tVUF9DT0xMSVNJT05TOgorICAgICAgICAgIE51bWJlciBvZiByZXF1ZXN0ZWQgbmV3IHJlZ2V4cHMgd2hpY2ggY29sbGlkZWQgd2l0aCBhIGNhY2hlZCBvbmUuCisKKworCisgICAgICAgIE5ldHdvcmsgc3RhdGlzdGljczoKKworICAgICAgICA8d2hhdD4gPT0gRElfTlVNX01FU1NBR0VTX09VVDoKKyAgICAgICAgICBOdW1iZXIgb2YgbWVzc2FnZXMgc2VudCB0byBhIHBsYXllci4KKworICAgICAgICA8d2hhdD4gPT0gRElfTlVNX1BBQ0tFVFNfT1VUOgorICAgICAgICAgIE51bWJlciBvZiBwYWNrZXRzIHNlbnQgdG8gYSBwbGF5ZXIuCisKKyAgICAgICAgPHdoYXQ+ID09IERJX05VTV9QQUNLRVRTX0lOOgorICAgICAgICAgIE51bWJlciBvZiBwYWNrZXRzIHJlY2VpdmVkIGZyb20gYSBwbGF5ZXIuCisKKyAgICAgICAgPHdoYXQ+ID09IERJX1NJWkVfUEFDS0VUU19PVVQ6CisgICAgICAgICAgTnVtYmVyIG9mIGJ5dGVzIHNlbnQgdG8gYSBwbGF5ZXIuCisKKyAgICAgICAgPHdoYXQ+ID09IERJX1NJWkVfUEFDS0VUU19JTjoKKyAgICAgICAgICBOdW1iZXIgb2YgYnl0ZXMgcmVjZWl2ZWQgZnJvbSBhIHBsYXllci4KKworCisKKyAgICAgICAgTG9hZDoKKworICAgICAgICA8d2hhdD4gPT0gRElfTE9BRF9BVkVSQUdFX0NPTU1BTkRTOgorICAgICAgICAgIEEgZmxvYXQgdmFsdWUgdGhhdCBzaG93cyB0aGUgbnVtYmVyIG9mIGV4ZWN1dGVkIHBsYXllciBjb21tYW5kcworICAgICAgICAgIHBlciBzZWNvbmQuCisKKyAgICAgICAgPHdoYXQ+ID09IERJX0xPQURfQVZFUkFHRV9MSU5FUzoKKyAgICAgICAgICBBIGZsb2F0IHZhbHVlIHRoYXQgc2hvd3MgdGhlIG51bWJlciBvZiBjb21waWxlZCBjb2RlIGxpbmVzCisgICAgICAgICAgcGVyIHNlY29uZC4KKworICAgICAgICA8d2hhdD4gPT0gRElfTE9BRF9BVkVSQUdFX1BST0NFU1NFRF9PQkpFQ1RTOgorICAgICAgICAgIEEgZmxvYXQgdmFsdWUgdGhhdCBzaG93cyB0aGUgYXZlcmFnZSBudW1iZXIgb2Ygb2JqZWN0cyBwcm9jZXNzZWQKKyAgICAgICAgICBlYWNoIGJhY2tlbmQgY3ljbGUuCisKKyAgICAgICAgPHdoYXQ+ID09IERJX0xPQURfQVZFUkFHRV9QUk9DRVNTRURfT0JKRUNUU19SRUxBVElWRToKKyAgICAgICAgICBBdmVyYWdlIG51bWJlciBvZiBvYmplY3RzIHByb2Nlc3NlZCBlYWNoIGN5Y2xlLCBleHByZXNzZWQKKyAgICAgICAgICBhcyBwZXJjZW50YWdlICgwLi4xLjApIG9mIHRoZSBudW1iZXIgb2YgcHJlc2VudCBvYmplY3RzLgorCisgICAgICAgIDx3aGF0PiA9PSBESV9MT0FEX0FWRVJBR0VfUFJPQ0VTU0VEX0hFQVJUQkVBVFNfUkVMQVRJVkU6CisgICAgICAgICAgQXZlcmFnZSBudW1iZXIgb2YgaGVhcnRfYmVhdHMgY2FsbGVkIGVhY2ggY3ljbGUsIGV4cHJlc3NlZAorICAgICAgICAgIGFzIGZyYWN0aW9uICgwLi4xLjApIG9mIHRoZSBudW1iZXIgb2YgYWN0aXZlIGhlYXJ0YmVhdHMuCisKKworCisgICAgICAgIE1lbW9yeSB1c2Ugc3RhdGlzdGljczoKKworICAgICAgICA8d2hhdD4gPT0gRElfTlVNX0FDVElPTlM6CisgICAgICAgICAgTnVtYmVyIG9mIGFsbG9jYXRlZCBhY3Rpb25zLgorCisgICAgICAgIDx3aGF0PiA9PSBESV9OVU1fQ0FMTE9VVFM6CisgICAgICAgICAgTnVtYmVyIG9mIHBlbmRpbmcgY2FsbF9vdXRzLgorCisgICAgICAgIDx3aGF0PiA9PSBESV9OVU1fSEVBUlRCRUFUUzoKKyAgICAgICAgICBOdW1iZXIgb2Ygb2JqZWN0cyB3aXRoIGEgaGVhcnRiZWF0LgorCisgICAgICAgIDx3aGF0PiA9PSBESV9OVU1fU0hBRE9XUzoKKyAgICAgICAgICBOdW1iZXIgb2YgYWxsb2NhdGVkIHNoYWRvd3MuCisKKyAgICAgICAgPHdoYXQ+ID09IERJX05VTV9PQkpFQ1RTOgorICAgICAgICAgIE51bWJlciBvZiBvYmplY3RzLgorCisgICAgICAgIDx3aGF0PiA9PSBESV9OVU1fT0JKRUNUU19TV0FQUEVEOgorICAgICAgICAgIE51bWJlciBvZiBvYmplY3RzIHRoYXQgYXJlIHN3YXBwZWQtb3V0LgorCisgICAgICAgIDx3aGF0PiA9PSBESV9OVU1fT0JKRUNUU19JTl9MSVNUOgorICAgICAgICAgIE51bWJlciBvZiBvYmplY3RzIGluIHRoZSBvYmplY3QgbGlzdAorICAgICAgICAgIChpLmUuIG5vdCBkZXN0cnVjdGVkIG9iamVjdHMpLgorCisgICAgICAgIDx3aGF0PiA9PSBESV9OVU1fT0JKRUNUU19JTl9UQUJMRToKKyAgICAgICAgICBOdW1iZXIgb2Ygb2JqZWN0cyBpbiB0aGUgb2JqZWN0IHRhYmxlLgorCisgICAgICAgIDx3aGF0PiA9PSBESV9OVU1fT0JKRUNUU19ERVNUUlVDVEVEOgorICAgICAgICAgIE51bWJlciBvZiBkZXN0cnVjdGVkLCBidXQgc3RpbGwgcmVmZXJlbmNlZCBvYmplY3RzLgorICAgICAgICAgIChOb3QgY291bnRpbmcgRElfTlVNX09CSkVDVFNfTkVXTFlfREVTVFJVQ1RFRCkuCisKKyAgICAgICAgPHdoYXQ+ID09IERJX05VTV9PQkpFQ1RTX05FV0xZX0RFU1RSVUNURUQ6CisgICAgICAgICAgTnVtYmVyIG9mIG5ld2x5IGRlc3RydWN0ZWQgb2JqZWN0cyAoaWUuIG9iamVjdHMgZGVzdHJ1Y3RlZAorICAgICAgICAgIGluIHRoaXMgZXhlY3V0aW9uIHRocmVhZCwgdGhhdCB3aWxsIHJlYWxseSBiZSBkZXN0cm95ZWQgaW4KKyAgICAgICAgICB0aGUgbmV4dCBiYWNrZW5kIGN5Y2xlKS4KKworICAgICAgICA8d2hhdD4gPT0gRElfTlVNX09CSkVDVF9UQUJMRV9TTE9UUzoKKyAgICAgICAgICBOdW1iZXIgb2YgaGFzaCBzbG90cyBwcm92aWRlZCBieSB0aGUgb2JqZWN0IHRhYmxlLgorCisgICAgICAgIDx3aGF0PiA9PSBESV9OVU1fUFJPR1M6CisgICAgICAgICAgU2l6ZSBvY2N1cGllZCBieSB0aGUgb2JqZWN0IHRhYmxlLgorCisgICAgICAgIDx3aGF0PiA9PSBESV9OVU1fUFJPR1NfU1dBUFBFRDoKKyAgICAgICAgICBOdW1iZXIgb2Ygc3dhcHBlZC1vdXQgcHJvZ3JhbSBibG9ja3MKKworICAgICAgICA8d2hhdD4gPT0gRElfTlVNX1BST0dTX1VOU1dBUFBFRDoKKyAgICAgICAgICBOdW1iZXIgb2YgcHJvZ3JhbXMgdGhhdCB3ZXJlIHN3YXBwZWQtb3V0LCBhcmUgbm93IHN3YXBwZWQtaW4sCisgICAgICAgICAgYnV0IHN0aWxsIGhhdmUgYWxsb2NhdGVkIHNwYWNlIGluIHRoZSBzd2FwIGZpbGUuCisKKyAgICAgICAgPHdoYXQ+ID09IERJX05VTV9BUlJBWVM6CisgICAgICAgICAgTnVtYmVyIG9mIGN1cnJlbnRseSBleGlzdGluZyBhcnJheXMuCisKKyAgICAgICAgPHdoYXQ+ID09IERJX05VTV9NQVBQSU5HUzoKKyAgICAgICAgICBOdW1iZXIgb2YgY3VycmVudGx5IGV4aXN0aW5nIG1hcHBpbmdzLgorCisgICAgICAgIDx3aGF0PiA9PSBESV9OVU1fTUFQUElOR1NfQ0xFQU46CisgICAgICAgICAgTnVtYmVyIG9mIGNsZWFuIG1hcHBpbmdzIChtYXBwaW5ncyB3aXRob3V0IGEgaGFzaCBwYXJ0KS4KKworICAgICAgICA8d2hhdD4gPT0gRElfTlVNX01BUFBJTkdTX0hBU0g6CisgICAgICAgICAgTnVtYmVyIG9mIGhhc2ggbWFwcGluZ3MuCisKKyAgICAgICAgPHdoYXQ+ID09IERJX05VTV9NQVBQSU5HU19IWUJSSUQ6CisgICAgICAgICAgTnVtYmVyIG9mIGh5YnJpZCBtYXBwaW5ncyAobWFwcGluZ3MgdGhhdCBoYXZlIGEKKyAgICAgICAgICBjb25kZW5zZWQgYW5kIGhhc2ggcGFydCkuCisKKyAgICAgICAgPHdoYXQ+ID09IERJX05VTV9TVFJVQ1RTOgorICAgICAgICAgIE51bWJlciBvZiBjdXJyZW50bHkgZXhpc3Rpbmcgc3RydWN0cy4KKworICAgICAgICA8d2hhdD4gPT0gRElfTlVNX1NUUlVDVF9UWVBFUzoKKyAgICAgICAgICBOdW1iZXIgb2YgY3VycmVudGx5IGV4aXN0aW5nIHN0cnVjdCB0eXBlcy4KKworICAgICAgICA8d2hhdD4gPT0gRElfTlVNX1ZJUlRVQUxfU1RSSU5HUzoKKyAgICAgICAgICBOdW1iZXIgb2YgY3VycmVudGx5IGV4aXN0aW5nIHZpcnR1YWwgc3RyaW5ncworICAgICAgICAgIChpZGVudGljYWwgc3RyaW5ncyBhcmUgY291bnRlZCBzZXBhcmF0ZWx5KS4KKworICAgICAgICA8d2hhdD4gPT0gRElfTlVNX1NUUklOR1M6CisgICAgICAgICAgTnVtYmVyIG9mIHJlYWwgc3RyaW5ncyAoaWRlbnRpY2FsIHN0cmluZ3MKKyAgICAgICAgICBhcmUgY291bnRlZCBvbmNlKS4KKworICAgICAgICA8d2hhdD4gPT0gRElfTlVNX1NUUklOR1NfVEFCTEVEOgorICAgICAgICAgIE51bWJlciBvZiBkaXJlY3RseSB0YWJsZWQgc3RyaW5ncy4KKworICAgICAgICA8d2hhdD4gPT0gRElfTlVNX1NUUklOR1NfVU5UQUJMRUQ6CisgICAgICAgICAgTnVtYmVyIG9mIHVudGFibGVkIHN0cmluZ3MuCisKKyAgICAgICAgPHdoYXQ+ID09IERJX05VTV9TVFJJTkdfVEFCTEVfU0xPVFM6CisgICAgICAgICAgTnVtYmVyIG9mIGhhc2ggc2xvdHMgaW4gdGhlIHN0cmluZyB0YWJsZS4KKworICAgICAgICA8d2hhdD4gPT0gRElfTlVNX1NUUklOR19UQUJMRV9TTE9UU19VU0VEOgorICAgICAgICAgIE51bWJlciBvZiBoYXNoIGNoYWlucyBpbiB0aGUgc3RyaW5nIHRhYmxlLgorCisgICAgICAgIDx3aGF0PiA9PSBESV9OVU1fUkVHRVg6CisgICAgICAgICAgTnVtYmVyIG9mIGNhY2hlZCByZWd1bGFyIGV4cHJlc3Npb25zLgorCisgICAgICAgIDx3aGF0PiA9PSBESV9OVU1fUkVHRVhfVEFCTEVfU0xPVFM6CisgICAgICAgICAgTnVtYmVyIG9mIHNsb3RzIGluIHRoZSByZWdleHAgY2FjaGUgdGFibGUuCisKKyAgICAgICAgPHdoYXQ+ID09IERJX1NJWkVfQUNUSU9OUzoKKyAgICAgICAgICBUb3RhbCBzaXplIG9mIGFsbG9jYXRlZCBhY3Rpb25zLgorCisgICAgICAgIDx3aGF0PiA9PSBESV9TSVpFX0NBTExPVVRTOgorICAgICAgICAgIFRvdGFsIHNpemUgb2YgcGVuZGluZyBjYWxsX291dHMuCisKKyAgICAgICAgPHdoYXQ+ID09IERJX1NJWkVfSEVBUlRCRUFUUzoKKyAgICAgICAgICBUb3RhbCBzaXplIG9mIHRoZSBoZWFydF9iZWF0IGxpc3QuCisKKyAgICAgICAgPHdoYXQ+ID09IERJX1NJWkVfU0hBRE9XUzoKKyAgICAgICAgICBUb3RhbCBzaXplIG9mIGFsbG9jYXRlZCBzaGFkb3dzLgorCisgICAgICAgIDx3aGF0PiA9PSBESV9TSVpFX09CSkVDVFM6CisgICAgICAgICAgVG90YWwgc2l6ZSBvZiBvYmplY3RzIChub3QgY291bnRpbmcgdGhlIHNpemUgb2YgdGhlIHZhbHVlcworICAgICAgICAgIG9mIHRoZWlyIHZhcmlhYmxlcykuCisKKyAgICAgICAgPHdoYXQ+ID09IERJX1NJWkVfT0JKRUNUU19TV0FQUEVEOgorICAgICAgICAgIFRvdGFsIHNpemUgb2Ygc3dhcHBlZC1vdXQgdmFyaWFibGUgYmxvY2tzLgorCisgICAgICAgIDx3aGF0PiA9PSBESV9TSVpFX09CSkVDVF9UQUJMRToKKyAgICAgICAgICBTaXplIG9jY3VwaWVkIGJ5IHRoZSBvYmplY3QgdGFibGUuCisKKyAgICAgICAgPHdoYXQ+ID09IERJX1NJWkVfUFJPR1M6CisgICAgICAgICAgVG90YWwgc2l6ZSBvZiBhbGwgcHJvZ3JhbXMuCisKKyAgICAgICAgPHdoYXQ+ID09IERJX1NJWkVfUFJPR1NfU1dBUFBFRDoKKyAgICAgICAgICBUb3RhbCBzaXplIG9mIHN3YXBwZWQtb3V0IHByb2dyYW0gYmxvY2tzCisKKyAgICAgICAgPHdoYXQ+ID09IERJX1NJWkVfUFJPR1NfVU5TV0FQUEVEOgorICAgICAgICAgIFRvdGFsIHNpemUgb2YgdW5zd2FwcGVkIHByb2dyYW0gYmxvY2tzCisKKyAgICAgICAgPHdoYXQ+ID09IERJX1NJWkVfQVJSQVlTOgorICAgICAgICAgIFRvdGFsIHNpemUgb2YgYWxsIGFycmF5cyAobm90IGNvdW50aW5nIGFkZGl0aW9uYWwgc2l6ZXMKKyAgICAgICAgICBvZiBhcnJheSBlbGVtZW50IHZhbHVlcykuCisKKyAgICAgICAgPHdoYXQ+ID09IERJX1NJWkVfTUFQUElOR1M6CisgICAgICAgICAgVG90YWwgc2l6ZSBvZiBhbGwgbWFwcGluZyAobm90IGNvdW50aW5nIGFkZGl0aW9uYWwgc2l6ZXMKKyAgICAgICAgICBvZiBjb250YWluZWQgdmFsdWVzKS4KKworICAgICAgICA8d2hhdD4gPT0gRElfU0laRV9TVFJVQ1RTOgorICAgICAgICAgIFRvdGFsIHNpemUgb2YgYWxsIHN0cnVjdHMgKG5vdCBjb3VudGluZyBhZGRpdGlvbmFsIHNpemVzCisgICAgICAgICAgb2YgY29udGFpbmVkIHZhbHVlcykuCisKKyAgICAgICAgPHdoYXQ+ID09IERJX1NJWkVfU1RSVUNUX1RZUEVTOgorICAgICAgICAgIFRvdGFsIHNpemUgb2YgYWxsIHN0cnVjdCB0eXBlIGRlZmluaXRpb25zLgorCisgICAgICAgIDx3aGF0PiA9PSBESV9TSVpFX1NUUklOR1M6CisgICAgICAgICAgVG90YWwgc2l6ZSBvZiBhbGwgc3RyaW5ncy4KKworICAgICAgICA8d2hhdD4gPT0gRElfU0laRV9TVFJJTkdTX1RBQkxFRDoKKyAgICAgICAgICBUb3RhbCBzaXplIG9mIGFsbCB0YWJsZWQgc3RyaW5ncy4KKworICAgICAgICA8d2hhdD4gPT0gRElfU0laRV9TVFJJTkdTX1VOVEFCTEVEOgorICAgICAgICAgIFRvdGFsIHNpemUgb2YgYWxsIHVudGFibGVkIHN0cmluZ3MuCisKKyAgICAgICAgPHdoYXQ+ID09IERJX1NJWkVfU1RSSU5HX1RBQkxFOgorICAgICAgICAgIFNpemUgb2YgdGhlIHN0cmluZyB0YWJsZSBzdHJ1Y3R1cmUgaXRzZWxmLgorCisgICAgICAgIDx3aGF0PiA9PSBESV9TSVpFX1NUUklOR19PVkVSSEVBRDoKKyAgICAgICAgICBTaXplIG9mIHRoZSBvdmVyaGVhZCBwZXIgc3RyaW5nIChjb21wYXJlZCB0byBhIHJhdyBzdHJpbmcpLgorCisgICAgICAgIDx3aGF0PiA9PSBESV9TSVpFX1JFR0VYOgorICAgICAgICAgIFRvdGFsIHNpemUgb2YgYWxsIGNhY2hlZCByZWd1bGFyIGV4cHJlc3Npb25zLgorCisgICAgICAgIDx3aGF0PiA9PSBESV9TSVpFX0JVRkZFUl9GSUxFOgorICAgICAgICAgIFRoZSBzaXplIG9mIHRoZSBtZW1vcnkgYnVmZmVyIGZvciBmaWxlIG9wZXJhdGlvbnMuCisKKyAgICAgICAgPHdoYXQ+ID09IERJX1NJWkVfQlVGRkVSX1NXQVA6CisgICAgICAgICAgVGhlIHNpemUgb2YgdGhlIG1lbW9yeSBidWZmZXIgZm9yIHRoZSBzd2FwIGZpbGUuCisKKworCisgICAgICAgIE1lbW9yeSBzd2FwcGVyIHN0YXRpc3RpY3M6CisKKyAgICAgICAgPHdoYXQ+ID09IERJX05VTV9TV0FQX0JMT0NLUzoKKyAgICAgICAgICBOdW1iZXIgb2YgYmxvY2tzIGluIHRoZSBzd2FwIGZpbGUuCisKKyAgICAgICAgPHdoYXQ+ID09IERJX05VTV9TV0FQX0JMT0NLU19GUkVFOgorICAgICAgICAgIE51bWJlciBvZiBmcmVlIGJsb2NrcyBpbiB0aGUgc3dhcCBmaWxlLgorCisgICAgICAgIDx3aGF0PiA9PSBESV9OVU1fU1dBUF9CTE9DS1NfUkVVU0VfTE9PS1VQUzoKKyAgICAgICAgICBOdW1iZXIgb2Ygc2VhcmNoZXMgZm9yIGJsb2NrcyB0byByZXVzZSBpbiB0aGUgc3dhcCBmaWxlLgorCisgICAgICAgIDx3aGF0PiA9PSBESV9OVU1fU1dBUF9CTE9DS1NfUkVVU0VfTE9PS1VQX1NURVBTOgorICAgICAgICAgIFRvdGFsIG51bWJlciBvZiBsb29rdXAgc3RlcHMgaW4gc2VhcmNoZXMgZm9yIGJsb2NrcworICAgICAgICAgIHRvIHJldXNlIGluIHRoZSBzd2FwIGZpbGUuCisKKyAgICAgICAgPHdoYXQ+ID09IERJX05VTV9TV0FQX0JMT0NLU19GUkVFX0xPT0tVUFM6CisgICAgICAgICAgTnVtYmVyIG9mIHNlYXJjaGVzIGZvciBibG9ja3MgdG8gZnJlZSBpbiB0aGUgc3dhcCBmaWxlLgorCisgICAgICAgIDx3aGF0PiA9PSBESV9OVU1fU1dBUF9CTE9DS1NfRlJFRV9MT09LVVBfU1RFUFM6CisgICAgICAgICAgVG90YWwgbnVtYmVyIG9mIGxvb2t1cCBzdGVwcyBpbiBzZWFyY2hlcyBmb3IgYmxvY2tzCisgICAgICAgICAgdG8gZnJlZSBpbiB0aGUgc3dhcCBmaWxlLgorCisgICAgICAgIDx3aGF0PiA9PSBESV9TSVpFX1NXQVBfQkxPQ0tTOgorICAgICAgICAgIFNpemUgb2YgdGhlIHN3YXAgZmlsZS4KKworICAgICAgICA8d2hhdD4gPT0gRElfU0laRV9TV0FQX0JMT0NLU19GUkVFOgorICAgICAgICAgIFNpemUgb2YgZnJlZSBibG9ja3MgaW4gdGhlIHN3YXAgZmlsZS4KKworICAgICAgICA8d2hhdD4gPT0gRElfU0laRV9TV0FQX0JMT0NLU19SRVVTRUQ6CisgICAgICAgICAgVG90YWwgcmV1c2VkIHNwYWNlIGluIHRoZSBzd2FwIGZpbGUuCisKKyAgICAgICAgPHdoYXQ+ID09IERJX1NXQVBfUkVDWUNMRV9QSEFTRToKKyAgICAgICAgICBUcnVlIGlmIHRoZSBzd2FwcGVyIGlzIGN1cnJlbnRseSByZWN5Y2xpbmcgZnJlZSBibG9jay4KKworCisKKyAgICAgICAgTWVtb3J5IGFsbG9jYXRvciBzdGF0aXN0aWNzOgorCisgICAgICAgIDx3aGF0PiA9PSBESV9NRU1PUllfQUxMT0NBVE9SX05BTUU6CisgICAgICAgICAgVGhlIG5hbWUgb2YgdGhlIGFsbG9jYXRvcjogInN5c21hbGxvYyIsICJzbWFsbG9jIiwgInNsYWJhbGxvYworCisgICAgICAgIDx3aGF0PiA9PSBESV9OVU1fU1lTX0FMTE9DQVRFRF9CTE9DS1M6CisgICAgICAgICAgTnVtYmVyIG9mIG1lbW9yeSBibG9ja3MgcmVxdWVzdGVkIGZyb20gdGhlIG9wZXJhdGluZyBzeXN0ZW0uCisKKyAgICAgICAgPHdoYXQ+ID09IERJX05VTV9MQVJHRV9CTE9DS1NfQUxMT0NBVEVEOgorICAgICAgICAgIE51bWJlciBvZiBsYXJnZSBhbGxvY2F0ZWQgYmxvY2tzLgorICAgICAgICAgIChXaXRoIHNtYWxsb2M6IFRoZSBsYXJnZSBhbGxvY2F0ZWQgYmxvY2tzIGluY2x1ZGUKKyAgICAgICAgICB0aGUgc21hbGwgY2h1bmsgYmxvY2tzLikKKworICAgICAgICA8d2hhdD4gPT0gRElfTlVNX0xBUkdFX0JMT0NLU19GUkVFOgorICAgICAgICAgIE51bWJlciBvZiBsYXJnZSBmcmVlIGJsb2Nrcy4KKworICAgICAgICA8d2hhdD4gPT0gRElfTlVNX0xBUkdFX0JMT0NLU19XQVNURToKKyAgICAgICAgICBOdW1iZXIgb2YgdW51c2FibGUgbGFyZ2UgbWVtb3J5IGZyYWdtZW50cy4KKworICAgICAgICA8d2hhdD4gPT0gRElfTlVNX1NNQUxMX0JMT0NLU19BTExPQ0FURUQ6CisgICAgICAgICAgTnVtYmVyIG9mIHNtYWxsIGFsbG9jYXRlZCBibG9ja3MuCisKKyAgICAgICAgPHdoYXQ+ID09IERJX05VTV9TTUFMTF9CTE9DS1NfRlJFRToKKyAgICAgICAgICBOdW1iZXIgb2Ygc21hbGwgZnJlZSBibG9ja3MuCisKKyAgICAgICAgPHdoYXQ+ID09IERJX05VTV9TTUFMTF9CTE9DS1NfV0FTVEU6CisgICAgICAgICAgTnVtYmVyIG9mIHVudXNhYmx5IHNtYWxsIG1lbW9yeSBmcmFnbWVudHMuCisKKyAgICAgICAgPHdoYXQ+ID09IERJX05VTV9TTUFMTF9CTE9DS19DSFVOS1M6CisgICAgICAgICAgTnVtYmVyIG9mIHNtYWxsIGNodW5rL3NsYWIgYmxvY2tzLgorICAgICAgICAgIChUaGF0IGFyZSBsYXJnZSBibG9ja3MgdGhhdCBhcmUgdXNlZCBhcyBhCisgICAgICAgICAgYmFzZSBmb3Igc21hbGwgYmxvY2tzLikKKworICAgICAgICA8d2hhdD4gPT0gRElfTlVNX1VOTUFOQUdFRF9CTE9DS1M6CisgICAgICAgICAgTnVtYmVyIG9mIHVubWFuYWdlZCAobm9uLUdDLWFibGUpIGFsbG9jYXRpb25zLgorCisgICAgICAgIDx3aGF0PiA9PSBESV9OVU1fRlJFRV9CTE9DS1NfQVZMX05PREVTOgorICAgICAgICAgIE51bWJlciBvZiBBVkwgbm9kZXMgdXNlZCB0byBtYW5hZ2UgdGhlIGxhcmdlIGZyZWUKKyAgICAgICAgICBibG9ja3MuIFRoaXMgdmFsdWUgbWlnaHQgZ28gYXdheSBhZ2Fpbi4KKworICAgICAgICA8d2hhdD4gPT0gRElfU0laRV9TWVNfQUxMT0NBVEVEX0JMT0NLUzoKKyAgICAgICAgICBUb3RhbCBzaXplIG9mIG1lbW9yeSByZXF1ZXN0ZWQgZnJvbSB0aGUgb3BlcmF0aW5nIHN5c3RlbS4KKworICAgICAgICA8d2hhdD4gPT0gRElfU0laRV9MQVJHRV9CTE9DS1NfQUxMT0NBVEVEOgorICAgICAgICAgIFRvdGFsIHNpemUgb2YgbGFyZ2UgYWxsb2NhdGVkIGJsb2Nrcy4KKworICAgICAgICA8d2hhdD4gPT0gRElfU0laRV9MQVJHRV9CTE9DS1NfRlJFRToKKyAgICAgICAgICBUb3RhbCBzaXplIG9mIGxhcmdlIGZyZWUgYmxvY2tzLgorCisgICAgICAgIDx3aGF0PiA9PSBESV9TSVpFX0xBUkdFX0JMT0NLU19XQVNURToKKyAgICAgICAgICBUb3RhbCBzaXplIG9mIHVudXNhYmxlIGxhcmdlIG1lbW9yeSBmcmFnbWVudHMuCisKKyAgICAgICAgPHdoYXQ+ID09IERJX1NJWkVfTEFSR0VfQkxPQ0tfT1ZFUkhFQUQ6CisgICAgICAgICAgVGhlIG92ZXJoZWFkIG9mIGV2ZXJ5IGxhcmdlIGJsb2NrIGFsbG9jYXRpb24uCisKKyAgICAgICAgPHdoYXQ+ID09IERJX1NJWkVfU01BTExfQkxPQ0tTX0FMTE9DQVRFRDoKKyAgICAgICAgICBUb3RhbCBzaXplIG9mIHNtYWxsIGFsbG9jYXRlZCBibG9ja3MuCisKKyAgICAgICAgPHdoYXQ+ID09IERJX1NJWkVfU01BTExfQkxPQ0tTX0ZSRUU6CisgICAgICAgICAgVG90YWwgc2l6ZSBvZiBzbWFsbCBmcmVlIGJsb2Nrcy4KKworICAgICAgICA8d2hhdD4gPT0gRElfU0laRV9TTUFMTF9CTE9DS1NfV0FTVEU6CisgICAgICAgICAgVG90YWwgc2l6ZSBvZiB1bnVzYWJseSBzbWFsbCBtZW1vcnkgZnJhZ21lbnRzLgorCisgICAgICAgIDx3aGF0PiA9PSBESV9TSVpFX1NNQUxMX0JMT0NLX09WRVJIRUFEOgorICAgICAgICAgIFRoZSBvdmVyaGVhZCBvZiBldmVyeSBzbWFsbCBibG9jayBhbGxvY2F0aW9uLgorCisgICAgICAgIDx3aGF0PiA9PSBESV9TSVpFX1NNQUxMX0JMT0NLX0NIVU5LUzoKKyAgICAgICAgICBUb3RhbCBzaXplIG9mIHNtYWxsIGNodW5rL3NsYWIgYmxvY2tzLgorCisgICAgICAgIDx3aGF0PiA9PSBESV9TSVpFX1VOTUFOQUdFRF9CTE9DS1M6CisgICAgICAgICAgVG90YWwgc2l6ZSBvZiB1bm1hbmFnZWQgKG5vbi1HQy1hYmxlKSBhbGxvY2F0aW9ucy4KKworICAgICAgICA8d2hhdD4gPT0gRElfU0laRV9NRU1PUllfVVNFRDoKKyAgICAgICAgICBUaGUgYW1vdW50IG9mIG1lbW9yeSBjdXJyZW50bHkgYWxsb2NhdGVkIGZyb20gdGhlIGFsbG9jYXRvci4KKworICAgICAgICA8d2hhdD4gPT0gRElfU0laRV9NRU1PUllfVU5VU0VEOgorICAgICAgICAgIFRoZSBhbW91bnQgb2YgbWVtb3J5IGFsbG9jYXRlZCBmcm9tIHRoZSBzeXN0ZW0sIGJ1dAorICAgICAgICAgIG5vdCB1c2VkIGJ5IHRoZSBkcml2ZXIuCisKKyAgICAgICAgPHdoYXQ+ID09IERJX1NJWkVfTUVNT1JZX09WRVJIRUFEOgorICAgICAgICAgIEFtb3VudCBvZiBtZW1vcnkgdXNlZCBmb3IgdGhlIG1hbmFnZW1lbnQgb2YgdGhlIG1lbW9yeS4KKworICAgICAgICA8d2hhdD4gPT0gRElfTlVNX0lOQ1JFTUVOVF9TSVpFX0NBTExTOgorICAgICAgICAgIE51bWJlciBvZiByZXF1ZXN0cyB0byBpbmNyZWFzZSB0aGUgc2l6ZSBvZiBhIG1lbW9yeSBibG9jay4KKworICAgICAgICA8d2hhdD4gPT0gRElfTlVNX0lOQ1JFTUVOVF9TSVpFX0NBTExfU1VDQ0VTU0VTOgorICAgICAgICAgIE51bWJlciBvZiBzdWNjZXNzZnVsIHJlcXVlc3RzIHRvIGluY3JlYXNlIHRoZQorICAgICAgICAgIHNpemUgb2YgYSBtZW1vcnkgYmxvY2suCisKKyAgICAgICAgPHdoYXQ+ID09IERJX1NJWkVfSU5DUkVNRU5UX1NJWkVfQ0FMTF9ESUZGUzoKKyAgICAgICAgICBUb3RhbCBzaXplIG9mIGFkZGl0aW9uYWxseSBhbGxvY2F0ZWQgbWVtb3J5IGJ5CisgICAgICAgICAgaW5jcmVhc2luZyBhbHJlYWR5IGFsbG9jYXRlZCBtZW1vcnkgYmxvY2tzLgorCisgICAgICAgIDx3aGF0PiA9PSBESV9OVU1fUkVQTEFDRU1FTlRfTUFMTE9DX0NBTExTOgorICAgICAgICAgIE51bWJlciBvZiBhbGxvY2F0aW9ucyBkb25lIHRocm91Z2ggdGhlCisgICAgICAgICAgY2xpYiBmdW5jdGlvbnMgKGlmIHN1cHBvcnRlZCBieSB0aGUgYWxsb2NhdG9yKS4KKworICAgICAgICA8d2hhdD4gPT0gRElfU0laRV9SRVBMQUNFTUVOVF9NQUxMT0NfQ0FMTFM6CisgICAgICAgICAgVG90YWwgc2l6ZSBvZiBhbGxvY2F0aW9ucyBkb25lIHRocm91Z2ggdGhlCisgICAgICAgICAgY2xpYiBmdW5jdGlvbnMgKGlmIHN1cHBvcnRlZCBieSB0aGUgYWxsb2NhdG9yKS4KKworICAgICAgICA8d2hhdD4gPT0gRElfTlVNX01FTU9SWV9ERUZSQUdNRU5UQVRJT05fQ0FMTFNfRlVMTDoKKyAgICAgICAgICBUb3RhbCBudW1iZXIgb2YgcmVxdWVzdHMgdG8gZGVmcmFnbWVudCBhbGwgc21hbGwgbWVtb3J5IGNodW5rcy4KKworICAgICAgICA8d2hhdD4gPT0gRElfTlVNX01FTU9SWV9ERUZSQUdNRU5UQVRJT05fQ0FMTFNfVEFSR0VURUQ6CisgICAgICAgICAgVG90YWwgbnVtYmVyIG9mIHJlcXVlc3RzIHRvIGRlZnJhZ21lbnQgc21hbGwgbWVtb3J5IGNodW5rcworICAgICAgICAgIGZvciBhIGRlc2lyZWQgc2l6ZS4KKworICAgICAgICA8d2hhdD4gPT0gRElfTlVNX01FTU9SWV9ERUZSQUdNRU5UQVRJT05fQ0FMTF9UQVJHRVRfSElUUzoKKyAgICAgICAgICBUb3RhbCBudW1iZXIgb2Ygc3VjY2Vzc2Z1bCByZXF1ZXN0cyB0byBkZWZyYWdtZW50IHNtYWxsCisgICAgICAgICAgbWVtb3J5IGNodW5rcyBmb3IgYSBkZXNpcmVkIHNpemUuCisKKyAgICAgICAgPHdoYXQ+ID09IERJX05VTV9NRU1PUllfREVGUkFHTUVOVEFUSU9OX0JMT0NLU19JTlNQRUNURUQ6CisgICAgICAgICAgTnVtYmVyIG9mIGJsb2NrcyBpbnNwZWN0ZWQgZHVyaW5nIGRlZnJhZ21lbnRhdGlvbnMuCisKKyAgICAgICAgPHdoYXQ+ID09IERJX05VTV9NRU1PUllfREVGUkFHTUVOVEFUSU9OX0JMT0NLU19NRVJHRUQ6CisgICAgICAgICAgTnVtYmVyIG9mIGJsb2NrcyBtZXJnZWQgZHVyaW5nIGRlZnJhZ21lbnRhdGlvbnMuCisKKyAgICAgICAgPHdoYXQ+ID09IERJX05VTV9NRU1PUllfREVGUkFHTUVOVEFUSU9OX0JMT0NLU19SRVNVTFRJTkc6CisgICAgICAgICAgTnVtYmVyIG9mIGRlZnJhZ21lbnRlZCBibG9ja3MgKGllLiBtZXJnZSByZXN1bHRzKS4KKworICAgICAgICA8d2hhdD4gPT0gRElfTUVNT1JZX0VYVEVOREVEX1NUQVRJU1RJQ1M6CisgICAgICAgICAgSWYgdGhlIGRyaXZlciB3YXMgY29tcGlsZWQgd2l0aCBleHRlbmRlZCBtZW1vcnkgc3RhdGlzdGljcywKKyAgICAgICAgICB0aGV5IGFyZSByZXR1cm5lZCBpbiB0aGlzIGVudHJ5OyBpZiB0aGUgZHJpdmVyIHdhcyBjb21waWxlZAorICAgICAgICAgIHdpdGhvdXQgdGhlIHN0YXRpc3RpY3MsIDAgaXMgcmV0dXJuZWQuCisKKyAgICAgICAgICBUaGUgYXJyYXkgY29udGFpbnMgTlVNKzIgZW50cmllcywgd2hlcmUgTlVNIGlzIHRoZSBudW1iZXIKKyAgICAgICAgICBvZiBkaXN0aW5jdCBzbWFsbCBibG9jayBzaXplcy4gRW50cnkgW05VTV0gZGVzY3JpYmVzIHRoZQorICAgICAgICAgIHN0YXRpc3RpY3Mgb2Ygb3ZlcnNpemVkIHNtYWxsIGJsb2NrcyAoc21hbGxvYykgcmVzcC4gZm9yCisgICAgICAgICAgYWxsIHNsYWJzIChzbGFiYWxsb2MpLCBlbnRyeSBbTlVNKzFdIHN1bW1hcml6ZXMgYWxsIGxhcmdlCisgICAgICAgICAgYmxvY2tzLiBFYWNoIGVudHJ5IGlzIGFuIGFycmF5IG9mIHRoZXNlIGZpZWxkczoKKworICAgICAgICAgICAgICAgaW50IERJTV9FU19NQVhfQUxMT0M6CisgICAgICAgICAgICAgICAgICAgICAgIE1heCBudW1iZXIgb2YgYWxsb2NhdGVkIGJsb2NrcyBvZiB0aGlzIHNpemUuCisKKyAgICAgICAgICAgICAgIGludCBESU1fRVNfQ1VSX0FMTE9DOgorICAgICAgICAgICAgICAgICAgICAgICBDdXJyZW50IG51bWJlciBvZiBhbGxvY2F0ZWQgYmxvY2tzIG9mIHRoaXMgc2l6ZS4KKworICAgICAgICAgICAgICAgaW50IERJTV9FU19NQVhfRlJFRToKKyAgICAgICAgICAgICAgICAgICAgICAgTWF4IG51bWJlciBvZiBhbGxvY2F0ZWQgYmxvY2tzIG9mIHRoaXMgc2l6ZS4KKworICAgICAgICAgICAgICAgaW50IERJTV9FU19DVVJfRlJFRToKKyAgICAgICAgICAgICAgICAgICAgICAgQ3VycmVudCBudW1iZXIgb2YgYWxsb2NhdGVkIGJsb2NrcyBvZiB0aGlzIHNpemUuCisKKyAgICAgICAgICAgICAgIGZsb2F0IERJTV9FU19BVkdfWEFMTE9DOgorICAgICAgICAgICAgICAgICAgICAgICBOdW1iZXIgb2YgZXhwbGljaXQgYWxsb2NhdGlvbiByZXF1ZXN0cyBwZXIKKyAgICAgICAgICAgICAgICAgICAgICAgc2Vjb25kLgorCisgICAgICAgICAgICAgICBmbG9hdCBESU1fRVNfQVZHX1hGUkVFOgorICAgICAgICAgICAgICAgICAgICAgICBOdW1iZXIgb2YgZXhwbGljaXQgZGVhbGxvY2F0aW9uIHJlcXVlc3RzIHBlcgorICAgICAgICAgICAgICAgICAgICAgICBzZWNvbmQuCisKKyAgICAgICAgICAgICAgIGludCBESU1fRVNfRlVMTF9TTEFCUzoKKyAgICAgICAgICAgICAgICAgICAgICAgTnVtYmVyIG9mIGZ1bGx5IHVzZWQgc2xhYnMgKHNsYWJhbGxvYyBvbmx5KS4KKworICAgICAgICAgICAgICAgaW50IERJTV9FU19GUkVFX1NMQUJTOgorICAgICAgICAgICAgICAgICAgICAgICBOdW1iZXIgb2YgZnVsbHkgZnJlZSBzbGFicyAoc2xhYmFsbG9jIG9ubHkpLgorCisgICAgICAgICAgICAgICBpbnQgRElNX0VTX1RPVEFMX1NMQUJTOgorICAgICAgICAgICAgICAgICAgICAgICBUb3RhbCBudW1iZXIgb2Ygc2xhYnM6IHBhcnRpYWxseSB1c2VkLCBmdWxseSB1c2VkCisgICAgICAgICAgICAgICAgICAgICAgIGFuZCBmdWxseSBmcmVlIChzbGFiYWxsb2Mgb25seSkuCisKKyAgICAgICAgICAgVGhlIGFsbG9jYXRpb24vZGVhbGxvY2F0aW9uLXBlci1zZWNvbmQgc3RhdGlzdGljcyBkbworICAgICAgICAgICBub3QgY292ZXIgaW50ZXJuYWwgc2h1ZmZsaW5nIG9mIHRoZSBmcmVlbGlzdHMuCisKKyAgICAgICAgICAgVGhlIHNsYWIgc3RhdGlzdGljcyAoZW50cnkgW05VTV0sIHNsYWJhbGxvYyBvbmx5KSBzaG93cworICAgICAgICAgICBpbiB0aGUgQVZHIHN0YXRpc3RpY3MgdGhlIGZyZXF1ZW5jZSB3aXRoIHdoaWNoIHNsYWJzIHdlcmUKKyAgICAgICAgICAgYWxsb2NhdGVkIGZyb20gcmVzcC4gcmV0dXJuZWQgdG8gdGhlIGxhcmdlIG1lbW9yeSBwb29sLgorCisKKworICAgICAgICBTdGF0dXMgdGV4dHM6CisKKyAgICAgICAgPHdoYXQ+ID09IERJX1NUQVRVU19URVhUX01FTU9SWToKKyAgICAgICAgICBBIHByaW50YWJsZSBzdHJpbmcgY29udGFpbmluZyBpbmZvcm1hdGlvbiBhYm91dAorICAgICAgICAgIHRoZSBtZW1vcnkgdXNhZ2UuCisKKyAgICAgICAgPHdoYXQ+ID09IERJX1NUQVRVU19URVhUX1RBQkxFUzoKKyAgICAgICAgICBBIHByaW50YWJsZSBzdHJpbmcgY29udGFpbmluZyBpbmZvcm1hdGlvbiBhYm91dAorICAgICAgICAgIHRoZSBMUEMgcnVudGltZS4KKworICAgICAgICA8d2hhdD4gPT0gRElfU1RBVFVTX1RFWFRfU1dBUDoKKyAgICAgICAgICBBIHByaW50YWJsZSBzdHJpbmcgY29udGFpbmluZyBpbmZvcm1hdGlvbiBhYm91dAorICAgICAgICAgIHRoZSBzd2FwIHN5c3RlbS4KKworICAgICAgICA8d2hhdD4gPT0gRElfU1RBVFVTX1RFWFRfTUFMTE9DOgorICAgICAgICAgIEEgcHJpbnRhYmxlIHN0cmluZyBjb250YWluaW5nIGluZm9ybWF0aW9uIGFib3V0CisgICAgICAgICAgbWVtb3J5IGFsbG9jYXRpb25zLgorCisgICAgICAgIDx3aGF0PiA9PSBESV9TVEFUVVNfVEVYVF9NQUxMT0NfRVhURU5ERUQ6CisgICAgICAgICAgQSBwcmludGFibGUgc3RyaW5ncyB3aXRoIGV4dGVuZGVkIG1lbW9yeSBzdGF0aXN0aWNzCisgICAgICAgICAgKGlmIHRoZSBkcml2ZXIgd2FzIGNvbXBpbGVkIHdpdGggdGhlbSkuCisKKworSElTVE9SWQorICAgICAgICBJbnRyb2R1Y2VkIGluIExETXVkIDMuNS4wLgorCitTRUUgQUxTTworICAgICAgICBjb25maWd1cmVfZHJpdmVyKEUpLCBvYmplY3RfaW5mbyhFKSwgaW50ZXJhY3RpdmVfaW5mbyhFKSwKKyAgICAgICAgZHVtcF9kcml2ZXJfaW5mbyhFKQpkaWZmIC0tZ2l0IGEvZG9jL2VmdW4vZHVtcF9kcml2ZXJfaW5mbyBiL2RvYy9lZnVuL2R1bXBfZHJpdmVyX2luZm8KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMTExZjhhZAotLS0gL2Rldi9udWxsCisrKyBiL2RvYy9lZnVuL2R1bXBfZHJpdmVyX2luZm8KQEAgLTAsMCArMSw3NSBAQAorU1lOT1BTSVMKKyAgICAgICAgI2luY2x1ZGUgPGRyaXZlcl9pbmZvLmg+CisKKyAgICAgICAgaW50IGR1bXBfZHJpdmVyX2luZm8oaW50IHdoYXQpCisgICAgICAgIGludCBkdW1wX2RyaXZlcl9pbmZvKGludCB3aGF0LCBzdHJpbmcgZmlsZW5hbWUpCisKK0RFU0NSSVBUSU9OCisgICAgICAgIER1bXBzIGluZm9ybWF0aW9uIHNwZWNpZmljaWVkIGJ5IDx3aGF0PiBpbnRvIGEgZmlsZQorICAgICAgICBzcGVjaWZpZWQgYnkgPGZpbGVuYW1lPi4gSWYgPGZpbGVuYW1lPiBpcyBvbWl0dGVkLAorICAgICAgICBhIGRlZmF1bHQgZmlsZSBuYW1lIGlzIHVzZWQuIFRoZSBmdW5jdGlvbiBjYWxscworICAgICAgICBtYXN0ZXItPnZhbGlkX3dyaXRlKCkgdG8gY2hlY2sgdGhhdCBpdCBjYW4gd3JpdGUKKyAgICAgICAgdGhlIGZpbGVzLiBUaGUgZmlsZSBpbiBxdWVzdGlvbiBpcyBhbHdheXMgd3JpdHRlbiBhbmV3CisKKyAgICAgICAgT24gc3VjY2VzcyB0aGUgZWZ1biByZXR1cm5zIDEsIG9yIDAgaWYgYW4gZXJyb3Igb2NjdXJlZC4KKworICAgICAgICA8d2hhdD4gPT0gRERJX09CSkVDVFM6CisgICAgICAgICAgRHVtcHMgaW5mb3JtYXRpb24gYWJvdXQgYWxsIGxpdmUgb2JqZWN0cy4KKyAgICAgICAgICBEZWZhdWx0IGZpbGVuYW1lIGlzICcvT0JKX0RVTVAnLAorICAgICAgICAgIHZhbGlkX3dyaXRlKCkgd2lsbCByZWFkICdvYmpkdW1wJyBmb3IgdGhlIGZ1bmN0aW9uLgorCisgICAgICAgICAgRm9yIGV2ZXJ5IG9iamVjdCwgYSBsaW5lIGlzIHdyaXR0ZW4gaW50byB0aGUgZmlsZSB3aXRoIHRoZQorICAgICAgICAgIGZvbGxvd2luZyBpbmZvcm1hdGlvbiBpbiB0aGUgZ2l2ZW4gb3JkZXI6CisgICAgICAgICAgICAtIG9iamVjdCBuYW1lCisgICAgICAgICAgICAtIHNpemUgaW4gbWVtb3J5LCBzaGFyZWQgZGF0YSBjb3VudGVkIG9ubHkgb25jZQorICAgICAgICAgICAgLSBzaXplIGluIG1lbW9yeSBpZiBkYXRhIHdvdWxkbid0IGJlIHNoYXJlZAorICAgICAgICAgICAgLSBudW1iZXIgb2YgcmVmZXJlbmNlcworICAgICAgICAgICAgLSAnSEInIGlmIHRoZSBvYmplY3QgaGFzIGEgaGVhcnRiZWF0LCBub3RoaW5nIGlmIG5vdC4KKyAgICAgICAgICAgIC0gdGhlIG5hbWUgb2YgdGhlIGVudmlyb25tZW50LCBvciAnLS0nIGlmIHRoZSBvYmplY3QKKyAgICAgICAgICAgICAgaGFzIG5vIGVudmlyb25tZW50CisgICAgICAgICAgICAtIGluIHBhcmVudGhlc2VzIHRoZSBudW1iZXIgb2YgZXhlY3V0aW9uIHRpY2tzIHNwZW50CisgICAgICAgICAgICAgIGluIHRoaXMgb2JqZWN0CisgICAgICAgICAgICAtIHRoZSBzd2FwIHN0YXR1czoKKyAgICAgICAgICAgICAgIG5vdGhpbmcgaWYgbm90IHN3YXBwZWQsCisgICAgICAgICAgICAgICAnUFJPRyBTV0FQUEVEJyBpZiBvbmx5IHRoZSBwcm9ncmFtIGlzIHN3YXBwZWQKKyAgICAgICAgICAgICAgICdWQVIgU1dBUFBFRCcgaWYgb25seSB0aGUgdmFyaWFiZXMgYXJlIHN3YXBwZWQKKyAgICAgICAgICAgICAgICdTV0FQUEVEJyBpZiBib3RoIHByb2dyYW0gYW5kIHZhcmlhYmxlcyBhcmUgc3dhcHBlZAorICAgICAgICAgICAgLSB0aGUgdGltZSB0aGUgb2JqZWN0IHdhcyBjcmVhdGVkCisKKyAgICAgICAgPHdoYXQ+ID09IERESV9PQkpFQ1RTX0RFU1RSVUNURUQ6CisgICAgICAgICAgRHVtcHMgaW5mb3JtYXRpb24gYWJvdXQgYWxsIGRlc3RydWN0ZWQgb2JqZWN0cy4gCisgICAgICAgICAgRGVmYXVsdCBmaWxlbmFtZSBpcyAnL0RFU1RfT0JKX0RVTVAnLAorICAgICAgICAgIHZhbGlkX3dyaXRlKCkgd2lsbCByZWFkICdvYmpkdW1wJyBmb3IgdGhlIGZ1bmN0aW9uLgorCisgICAgICAgICAgRm9yIGV2ZXJ5IG9iamVjdCwgYSBsaW5lIGlzIHdyaXR0ZW4gaW50byB0aGUgZmlsZSB3aXRoIHRoZQorICAgICAgICAgIGZvbGxvd2luZyBpbmZvcm1hdGlvbiBpbiB0aGUgZ2l2ZW4gb3JkZXI6CisgICAgICAgICAgICAtIG9iamVjdCBuYW1lCisgICAgICAgICAgICAtIG51bWJlciBvZiByZWZlcmVuY2VzCisgICAgICAgICAgICAtICdORVcnIGlmIHRoZSBvYmplY3Qgd2FzIGRlc3RydWN0ZWQgaW4gdGhpcyBleGVjdXRpb24KKyAgICAgICAgICAgICAgdGhyZWFkLCBub3RoaW5nIGlmIGl0IGlzIG9sZGVyIGFscmVhZHkuCisKKyAgICAgICAgPHdoYXQ+ID09IERESV9PUENPREVTOgorICAgICAgICAgIER1bXBzIHVzYWdlIGluZm9ybWF0aW9uIGFib3V0IHRoZSBvcGNvZGVzLgorICAgICAgICAgIERlZmF1bHQgZmlsZW5hbWUgaXMgJy9PUENfRFVNUCcsCisgICAgICAgICAgdmFsaWRfd3JpdGUoKSB3aWxsIHJlYWQgJ29wY2R1bXAnIGZvciB0aGUgZnVuY3Rpb24uCisKKyAgICAgICAgPHdoYXQ+ID09IERESV9NRU1PUlk6CisgICAgICAgICAgRHVtcHMgYSBsaXN0IG9mIGFsbCBhbGxvY2F0ZWQgbWVtb3J5IGJsb2NrcyAoaWYgdGhlIGFsbG9jYXRvcgorICAgICAgICAgIHN1cHBvcnRzIHRoaXMpLgorICAgICAgICAgIERlZmF1bHQgZmlsZW5hbWUgaXMgJy9NRU1PUllfRFVNUCcsCisgICAgICAgICAgdmFsaWRfd3JpdGUoKSB3aWxsIHJlYWQgJ21lbWR1bXAnIGZvciB0aGUgZnVuY3Rpb24sCisgICAgICAgICAgYW5kIHRoZSBuZXcgZGF0YSB3aWxsIGJlIGFwcGVuZGVkIHRvIHRoZSBlbmQgb2YgdGhlIGZpbGUuCisKKyAgICAgICAgICBJZiB0aGUgYWxsb2NhdG9yIGRvZXNuJ3Qgc3VwcG9ydCBtZW1vcnkgZHVtcHMsIHRoaXMgY2FsbCB3aWxsCisgICAgICAgICAgYWx3YXlzIHJldHVybiAwLCBhbmQgbm90aGluZyB3aWxsIGJlIHdyaXR0ZW4uCisKKyAgICAgICAgICBUaGlzIHdvcmtzIGJlc3QgaWYgdGhlIGFsbG9jYXRvciBpcyBjb21waWxlZCB3aXRoCisgICAgICAgICAgTUFMTE9DX1RSQUNFIGFuZC9vciBNQUxMT0NfTFBDX1RSQUNFLgorCisgICAgICAgICAgTk9URTogTWFrZSBzdXJlIHRoYXQgdGhpcyBvcHRpb24gY2FuJ3QgYmUgYWJ1c2VkIQorCitISVNUT1JZCisgICAgICAgIEludHJvZHVjZWQgaW4gTERNdWQgMy41LjAuCisKK1NFRSBBTFNPCisgICAgICAgIGRyaXZlcl9pbmZvKEUpLCBvYmplY3RfaW5mbyhFKSwgaW50ZXJhY3RpdmVfaW5mbyhFKQpkaWZmIC0tZ2l0IGEvZG9jL2VmdW4vZWQgYi9kb2MvZWZ1bi9lZApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44YThkYzMzCi0tLSAvZGV2L251bGwKKysrIGIvZG9jL2VmdW4vZWQKQEAgLTAsMCArMSwxOSBAQAorU1lOT1BTSVMKKyAgICAgICAgdm9pZCBlZCgpCisgICAgICAgIHZvaWQgZWQoc3RyaW5nIGZpbGUpCisgICAgICAgIHZvaWQgZWQoc3RyaW5nIGZpbGUsIHN0cmluZyBmdW5jKQorCitERVNDUklQVElPTgorICAgICAgICBDYWxsaW5nIHdpdGhvdXQgYXJndW1lbnRzIHdpbGwgc3RhcnQgdGhlIGVkaXRvciBlZCB3aXRoIHRoZQorICAgICAgICBuYW1lIG9mIHRoZSBlcnJvciBmaWxlLCB0aGF0IHdhcyByZXR1cm5lZCBieQorICAgICAgICBtYXN0ZXItPnZhbGlkX3JlYWQoMCwgZ2V0ZXVpZCh0aGlzX3BsYXllcigpKSwgImVkX3N0YXJ0IiwKKyAgICAgICAgdGhpc19wbGF5ZXIoKSksIHVzdWFsbHkgc29tZXRoaW5nIGxpa2Ugfi8uZXJyLiBJZiB0aGF0IGZpbGUgaXMKKyAgICAgICAgZW1wdHksIGVkIHdpbGwgaW1tZWRpYXRseSBleGl0IGFnYWluLgorICAgICAgICBDYWxsaW5nIGVkKCkgd2l0aCBhcmd1bWVudCBmaWxlIHdpbGwgc3RhcnQgdGhlIGVkaXRvciBvbiB0aGUKKyAgICAgICAgZmlsZS4gSWYgdGhlIG9wdGlvbmFsIGFyZ3VtZW50IGZ1bmMgaXMgZ2l2ZW4sIHRoaXMgZnVuY3Rpb24KKyAgICAgICAgd2lsbCBiZSBjYWxsZWQgYWZ0ZXIgZXhpdGluZyB0aGUgZWRpdG9yLgorCisgICAgICAgIFRoZSBlZGl0b3IgZWQgaXMgYWxtb3N0IGVkKDEpIGNvbXBhdGlibGUuCisKK1NFRSBBTFNPCisgICAgICAgIGVuYWJsZV9jb21tYW5kcyhFKSwgcXVlcnlfZWRpdGluZyhFKSwgZWQwKExQQykKZGlmZiAtLWdpdCBhL2RvYy9lZnVuL2VmdW4gYi9kb2MvZWZ1bi9lZnVuCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjg4Y2QzZjUKLS0tIC9kZXYvbnVsbAorKysgYi9kb2MvZWZ1bi9lZnVuCkBAIC0wLDAgKzEsNDUgQEAKK05BTUUKKyAgICAgICAgZWZ1bgorCitCRVNDSFJFSUJVTkcKKyAgICAgICAgRGllc2VzIERpcmVjdG9yeSBlbnRoYWVsdCBkaWUgQmVzY2hyZWlidW5nZW4gZnVlciBkaWUgRWZ1bnMgaW4KKyAgICAgICAgTERNdWQgMy4zIC4KKworICAgICAgICBEaWVzZSBGdW5rdGlvbmVuIHdlcmRlbiB2b20gRHJpdmVyIHp1ciBWZXJmdWVndW5nIGdlc3RlbGx0IHVuZCBrb2VubmVuCisgICAgICAgIHZvbiBqZWRlbSBMUEMtT2JqZWt0IHZlcndlbmRldCB3ZXJkZW4uCisKKyAgICAgICAgU3BlemllbGxlIEFydGVuIGRpZXNlciBFZnVucyBzaW5kOgorCisgICAgICAgICAtICdPcHRpb25hbCcKKworICAgICAgICAgICBFcyBzdGVodCBkZW0gTXVkLUJldHJlaWJlciBmcmVpLCBkaWVzZSBFZnVucyB6dSBkZWFrdGl2aWVyZW4uCisKKyAgICAgICAgICAgICBhc3NvYygpCisgICAgICAgICAgICAgYnJlYWtfcG9pbnQoKQorICAgICAgICAgICAgIGRiXyooKQorICAgICAgICAgICAgIGluc2VydF9hbGlzdCgpCisgICAgICAgICAgICAgaW50ZXJzZWN0X2FsaXN0KCkKKyAgICAgICAgICAgICBwYXJzZV9jb21tYW5kKCkKKyAgICAgICAgICAgICBwcm9jZXNzX3N0cmluZygpCisgICAgICAgICAgICAgcnVzYWdlKCkKKyAgICAgICAgICAgICBzZXRfaXNfd2l6YXJkKCkKKyAgICAgICAgICAgICBzZXRfbGlnaHQoKQorICAgICAgICAgICAgIHRyYW5zZmVyKCkKKworICAgICAgICAgLSAnVm9ybGFldWZpZycKKworICAgICAgICAgICBEYXMgVmVyaGFsdGVuIGRpZXNlciBFZnVucyBrYW5uIHNpY2ggaW4gc3BhZXRlcmVuIERyaXZlcnZlcnNpb25lbmUKKyAgICAgICAgICAgYWVuZGVybi4KKworCisgICAgICAgICAtICdPYnNvbGV0JyBvciAnVmVyYWx0ZXQnCisKKyAgICAgICAgICAgICBtYWtlX3NoYXJlZF9zdHJpbmcoKQorCisgICAgICAgICAgIERpZXNlIEVmdW5zIHNvbGx0ZW4gbmljaHQgd2VpdGVyIHZlcndlbmRldCB3ZXJkZW4uIFNpZSBzdGVoZW4KKyAgICAgICAgICAgbGVkaWdsaWNoIGF1cyBLb21wYXRpYmlsaXRhZXRzZ3J1ZW5kZW4genVyIFZlcmZ1ZWd1bmcsIHVuZAorICAgICAgICAgICB3ZXJkZW4gaW4gZWluZXIgc3BhZXRlcmVuIERyaXZlcnZhcmlhbnRlIGVudGZlcm50IHdlcmRlbi4KKworCitTSUVIRSBBVUNICisgICAgICAgIGVmdW5zKExQQyksIGFwcGxpZWQoQSksIG1hc3RlcihNKSwgbHBjKExQQyksIGNvbmNlcHRzKEMpLCBkcml2ZXIoRCkKZGlmZiAtLWdpdCBhL2RvYy9lZnVuL2VmdW5fX21fZGVsZXRlIGIvZG9jL2VmdW4vZWZ1bl9fbV9kZWxldGUKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMzJiOWUwMgotLS0gL2Rldi9udWxsCisrKyBiL2RvYy9lZnVuL2VmdW5fX21fZGVsZXRlCkBAIC0wLDAgKzEsMjQgQEAKK1NZTk9QU0lTOgorCW1hcHBpbmcgbV9kZWxldGUobWFwcGluZyBtYXAsIG1peGVkIGtleSkKKworREVTQ1JJUFRJT046CisJUmVtb3ZlIHRoZSBlbnRyeSB3aXRoIGluZGV4ICdrZXknIGZyb20gbWFwcGluZyAnbWFwJywgYW5kCisJcmV0dXJuIHRoZSBjaGFuZ2VkIG1hcHBpbmcuIElmIHRoZSBtYXBwaW5nIGRvZXMgbm90IGhhdmUgYW4KKwllbnRyeSB3aXRoIGluZGV4ICdrZXknLCB0aGUgZmlyc3QgYXJndW1lbnQgaXMgcmV0dXJuZWQuCisKKyAgICAgICAgSWYgeW91IGRvbid0IHdhbnQgdG8gbW9kaWZ5IHRoZSBtYXBwaW5nIG1hcCwgY2hlY2tvdXQgdGhlCisgICAgICAgIHNpbXVsX2VmdW4gbV9kZWxldGUoKS4KKworRVhBTVBMRTogCisKKyAgICAgICAgbWFwcGluZyBtMSwgbTI7CisKKyAgICAgICAgbTEgPSAoWyAiYSI6MSwgImIiOjIsICJjIjozIF0pOworCisgICAgICAgIG0yID0gZWZ1bjo6bV9kZWxldGUobTEsICJiIik7CisgICAgICAgICAgID0+IG0xID0gKFsgImEiOjEsICJjIjozIF0pCisJICAgICAgbTIgPSAoWyAiYSI6MSwgImMiOjMgXSkKKworU0VFIEFMU086CisJbWFwcGluZ3AoRSksIG1rbWFwcGluZyhFKSwgbV9pbmRpY2VzKEUpLCBtX3ZhbHVlcyhFKSwKKwlzaXplb2YoRSkKZGlmZiAtLWdpdCBhL2RvYy9lZnVuL2Vudmlyb25tZW50IGIvZG9jL2VmdW4vZW52aXJvbm1lbnQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZWExMGIzZAotLS0gL2Rldi9udWxsCisrKyBiL2RvYy9lZnVuL2Vudmlyb25tZW50CkBAIC0wLDAgKzEsNjkgQEAKK1NZTk9QU0lTCisgICAgICAgIG9iamVjdCBlbnZpcm9ubWVudCgpOworICAgICAgICBvYmplY3QgZW52aXJvbm1lbnQob2JqZWN0IG9iaik7CisgICAgICAgIG9iamVjdCBlbnZpcm9ubWVudChzdHJpbmcgb2JqKTsKKworQVJHVU1FTlRFOgorICAgICBvYmoKKyAgICAgICAgICBPYmpla3Qgb2RlciBQZmFkLVN0cmluZyBlaW5lcyBPYmpla3RlcyBkZXNzZW4gVW1nZWJ1bmdzb2JqZWt0CisgICAgICAgICAgZ2VzdWNodCBpc3QKKworQkVTQ0hSRUlCVU5HOgorICAgICBFcyB3aXJkIGRhcyBPYmpla3QgYmVzdGltbXQsIGluIGRlbSBzaWNoIG9iaiBhdWZoYWVsdC4KKyAgICAgV2lyZCBvYmogbmljaHQgYW5nZWdlYmVuLCBzbyB3aXJkIHRoaXNfb2JqZWN0KCkgYWxzIE9iamVrdCBhbmdlbm9tbWVuLgorCisgICAgIFplcnN0b2VydGUgT2JqZWt0ZSBoYWJlbiBrZWluIEVudmlyb25tZW50LgorCitCRU1FUktVTkdFTjoKKyAgICAgLSBCbHVlcHJpbnRzLCB3aWUgenVtIEJlaXNwaWVsIFJhZXVtZSBoYWJlbiBvZnQga2VpbiBlbnZpcm9ubWVudCgpLiBNYW4KKyAgICAgICBzb2xsdGUgZGFoZXIgdWViZXJwcnVlZmVuLCBvYiBlaW4gZW52aXJvbm1lbnQoKSBleGlzdGllcnQsIHdlbm4gbWFuCisgICAgICAgZGFyaW4gb2RlciBkYXJhdWYgZWluZSBGdW5rdGlvbiBhdWZydWZlbiB3aWxsLgorCitCRUlTUElFTEU6CisgICAgIC8vIEluIGRlciBWYXJpYWJsZSAicmF1bSIgc3RlaHQgZGVyIFJhdW0sIGluIGRlbSBzaWNoIGRlciBTcGllbGVyIGRlcnplaXQKKyAgICAgLy8gYXVmaGFlbHQgLSBkYXMga2FubiBhdWNoIDAgc2VpbiEKKyAgICAgcmF1bSA9IGVudmlyb25tZW50KHRoaXNfcGxheWVyKCkpOworCisgICAgIC8vIERpZXNlcyBPYmpla3QgaGF0IG5vY2gga2VpbiBlbnZpcm9ubWVudCwgZGEgZXMgZWJlbiBlcnN0IGdlY2xvbnQKKyAgICAgLy8gd3VyZGUuIEVyZ28gc3RlaHQgaW4gZW52IGVpbmUgMC4KKyAgICAgb2JqID0gY2xvbmVfb2JqZWN0KCIvc3RkL3RoaW5nIik7CisgICAgIGVudiA9IGVudmlyb25tZW50KG9iaik7CisKKyAgICAgLy8gYWxsZSBNZXRob2RlbiBkaWUgYXVmIEVudmlyb25tZW50IGFyYmVpdGVuLCBzb2xsdGVuIGRhcyB2b3JoZXIKKyAgICAgLy8gcHJ1ZWZlbiAtIGluc2Jlc29uZGVyZSB0ZWxsX3Jvb20oKQorICAgICBpZih0aGlzX3BsYXllcigpICYmIGVudmlyb25tZW50KHRoaXNfcGxheWVyKCkpICYmCisgICAgICAgIG9iamVjdHAobz1wcmVzZW50KCJzY2hpbGQiLGVudmlyb25tZW50KHRoaXNfcGxheWVyKCkpKSkgeworCisgICAgICB3cml0ZSgiRHUga2xlYnN0IERlaW5lIFBsYWtldHRlIGF1ZiAiK28tPm5hbWUoV0VOKSsiLlxuIik7CisgICAgICB0ZWxsX3Jvb20oZW52aXJvbm1lbnQodGhpc19wbGF5ZXIoKSksIGJyZWFrX3N0cmluZygKKwkJdGhpc19wbGF5ZXIoKS0+TmFtZShXRVIpKyIgcGFwcHQgZWluZW4gQXVma2xlYmVyIGF1ZiAiKworCQlvLT5uYW1lKFdFTikrIi4iLDc4KSwKKwkJKHt0aGlzX3BsYXllcigpfSkpOworICAgICB9CisKKyAgICAgLy8gd2VubiBEaW5nZSBzZWhyIG9mZmVuc2ljaHRsaWNoIGluIExldXRlbiBrYXB1dHRnZWhlbiB3aXJkIGVzCisgICAgIC8vIGtvbXBsZXhlciAobWFuIGthbm4gZGFzIG5hdHVlcmxpY2ggbm9jaCB3ZWl0ZXIgc2NoYWNodGVsbiBvZGVyCisgICAgIC8vIHVlYmVyIGFsbF9lbnZpcm9ubWVudCgpIHZlcnN1Y2hlbiB6dSBsb2VzZW4KKyAgICAgaWYoZW52aXJvbm1lbnQoKSkgeworICAgICAgb2JqZWN0IGVlOworICAgICAgZWU9ZW52aXJvbm1lbnQoZW52aXJvbm1lbnQoKSk7CisgICAgICBpZihsaXZpbmcoZW52aXJvbm1lbnQoKSkpIHsKKyAgICAgICB0ZWxsX29iamVjdChlbnZpcm9ubWVudCgpLE5hbWUoV0VSKSsiIHplcmZhZWxsdC5cbiIpOworICAgICAgIGlmKGVlKQorICAgICAgICB0ZWxsX3Jvb20oZWUsCisJIGVudmlyb25tZW50KCktPk5hbWUoV0VTU0VOKSsiICIrbmFtZShSQVcpKyIgemVyZmFlbGx0LlxuIiwKKwkgKHtlbnZpcm9ubWVudCgpfSkpOworICAgICAgfSBlbHNlIGlmKGVlICYmIGxpdmluZyhlZSkpCisgICAgICAgaWYoZW52aXJvbm1lbnQoKS0+UXVlcnlQcm9wKFBfVFJBTlNQQVJFTlQpKQorICAgICAgICB0ZWxsX29iamVjdChlZSwgTmFtZShXRVIpKyIgemVyZmFlbGx0IGluIERlaW5lIisKKwkgKGVudmlyb25tZW50KCktPlF1ZXJ5UHJvcChQX1BMVVJBTCk/Im4iOgorCSAgKGVudmlyb25tZW50KCktPlF1ZXJ5UHJvcChQX0dFTkRFUik9PUZFTUFMRT8iciI6Im0iKSkrCisJIGVudmlyb25tZW50KCktPm5hbWUoUkFXKSsiLlxuIik7CisgICAgICB9IGVsc2UgdGVsbF9yb29tKGVudmlyb25tZW50KCksTmFtZShXRVIpKyIgemVyZmFlbGx0LlxuIik7CisgICAgIH0KKworU0lFSEUgQVVDSDoKKyAgICAgICAgZmlyc3RfaW52ZW50b3J5KEUpLCBuZXh0X2ludmVudG9yeShFKSwgYWxsX2ludmVudG9yeShFKQorICAgICAgICBhbGxfZW52aXJvbm1lbnQoRSkKKworMjAuIFNlcC4gMjAwMiBHbG9pbnNvbkBNRwpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2RvYy9lZnVuL2V4ZWMgYi9kb2MvZWZ1bi9leGVjCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmM4NmQzZTAKLS0tIC9kZXYvbnVsbAorKysgYi9kb2MvZWZ1bi9leGVjCkBAIC0wLDAgKzEsMzkgQEAKK1NZTk9QU0lTCisgICAgICAgIGludCBleGVjKG9iamVjdCBuZXcsIG9iamVjdCBvbGQpCisKK0RFU0NSSVBUSU9OCisgICAgICAgIGV4ZWMoKSBzd2l0Y2hlcyB0aGUgY29ubmVjdGlvbiBmcm9tIHRoZSBpbnRlcmFjdGl2ZSBvYmplY3Qgb2xkCisgICAgICAgIHRvIHRoZSBvYmplY3QgbmV3LiBJZiB0aGUgbmV3IG9iamVjdCBpcyBhbHNvIGludGVyYWN0aXZlLCBpdCdzCisgICAgICAgIGNvbm5lY3Rpb24gd2lsbCBiZSB0cmFuc2ZlcnJlZCB0byB0aGUgb2xkIG9iamVjdCwgdGh1cworICAgICAgICBleGNoYW5pbmcgdGhlIHR3byBjb25uZWN0aW9ucyBiZXR3ZWVuIHRoZSBvYmplY3QuIElmIHRoZSBuZXcKKyAgICAgICAgb2JqZWN0IGlzIG5vdCBpbnRlcmFjdGl2ZSwgdGhlIG9sZCB3aWxsIG5vdCBiZSBpbnRlcmFjdGl2ZQorICAgICAgICBhbnltb3JlIGFmdGVyIHRoZSBleGVjIGNhbGwgc3VjY2VlZGVkLgorCisgICAgICAgIFRoZSByZXN1bHQgaXMgMSBvbiBzdWNjZXNzLCBhbmQgMCBvbiBmYWlsdXJlLgorCisgICAgICAgIGV4ZWMoKSBpcyB1c2VkIHRvIGxvYWQgZGlmZmVyZW50ICJ1c2VyIG9iamVjdHMiIG9yIHRvIHJlY29ubmVjdAorICAgICAgICBsaW5rIGRlYWQgdXNlcnMuCisKKyAgICAgICAgVG8gcHJvdmlkZSBzZWN1cml0eSBtZWNoYW5pc21zLCB0aGUgaW50ZXJwcmV0ZXIgY2FsbHMKKyAgICAgICAgbWFzdGVyLT52YWxpZF9leGVjKGN1cnJlbnRfcHJvZ3JhbSwgbmV3LCBvbGQpLCB3aGljaCBtdXN0CisgICAgICAgIHJldHVybiBhbnl0aGluZyBvdGhlciB0aGFuIDAgdG8gYWxsb3cgdGhpcyBleGVjKCkgaW52b2NhdGlvbi4KKworICAgICAgICBBZnRlciB0aGUgZXhlYygpLCBpZiBhcmcgMiB3YXMgdGhpc19wbGF5ZXIoKSwgdGhpc19wbGF5ZXIoKQorICAgICAgICBiZWNvbWVzIGFyZyAxLCBlbHNlIHZpY2UgdmVyc2EuIERpdHRvIGZvciB0aGlzX2ludGVyYWN0aXZlKCkuCisKKyAgICAgICAgVGFrZSBjYXJlIHdoZW4gd3JpdGluZyBhIHNpbXVsLWVmdW4gYXJvdW5kIGV4ZWMoKTogdGhlCisgICAgICAgICdjdXJyZW50X3Byb2dyYW0nIHBhc3NlZCB0byB0aGUgdmFsaWRfZXhlYygpIGZ1bmN0aW9uIHdpbGwgYmUKKyAgICAgICAgdGhhdCBvZiB0aGUgc2ltdWwtZWZ1biBvYmplY3QuIFRvIGdldCBhcm91bmQgdGhpcywgdXNlCisgICAgICAgIGJpbmRfbGFtYmRhKCkgdG8gYmluZCAjJ2V4ZWMgdG8gdGhlIHJlYWwgb2JqZWN0IGFuZCBmdW5jYWxsKCkKKyAgICAgICAgdGhlIHJlc3VsdGluZyBjbG9zdXJlLgorCitFWEFNUExFCisgICAgICAgIG9iID0gY2xvbmVfb2JqZWN0KCJzdGQvcGxheWVyIik7CisgICAgICAgIGV4ZWMob2IsIHRoaXNfb2JqZWN0KCkpOworICAgICAgICBkZXN0cnVjdCh0aGlzX29iamVjdCgpKTsKKworSElTVE9SWQorICAgICAgICBMRE11ZCAzLjIuOSBhZGRlZCB0aGUgc3dpdGNob3ZlciBvZiB0aGlzX2ludGVyYWN0aXZlKCkuCisKK1NFRSBBTFNPCisgICAgICAgIGNvbm5lY3QoTSksIGRpc2Nvbm5lY3QoTSksIGxvZ29uKEEpLCBpbnRlcmFjdGl2ZShFKQpkaWZmIC0tZ2l0IGEvZG9jL2VmdW4vZXhlY3V0ZV9jb21tYW5kIGIvZG9jL2VmdW4vZXhlY3V0ZV9jb21tYW5kCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjA3ODRjN2UKLS0tIC9kZXYvbnVsbAorKysgYi9kb2MvZWZ1bi9leGVjdXRlX2NvbW1hbmQKQEAgLTAsMCArMSwyMSBAQAorVk9STEFFVUZJRywgR0VTQ0hVRVRaVAorU1lOT1BTSVMKKyAgICAgICAgaW50IGV4ZWN1dGVfY29tbWFuZChzdHJpbmcgY29tbWFuZCwgb2JqZWN0IG9yaWdpbiwgb2JqZWN0IHBsYXllcik7CisKK0JFU0NIUkVJQlVORworICAgICAgICBEaWVzZSBGdW5rdGlvbiBiaWV0ZXQgTG93LUxldmVsIFp1Z3JpZmYgYXVmIGRlbiBLb21tYW5kb3BhcnNlcjoKKyAgICAgICAgPGNvbW1hbmQ+IHdpcmQgaW4gVmVyYiB1bmQgUmVzdCBhdWZnZXNwYWx0ZXQgdW5kIGVzIHdlcmRlbiBkaWUKKyAgICAgICAgZW50c3ByZWNoZW5kZW4gYWRkX2FjdGlvbnMgaW4gPG9yaWdpbj4gYXVmZ2VydWZlbi4gRnVlciBkaWUKKyAgICAgICAgQXVzZnVlaHJ1bmcgZGVyIEZ1bmt0aW9uKGVuKSB3aXJkIHRoaXNfcGxheWVyKCkgYXVmIDxwbGF5ZXI+IGdlc2V0enQuCisgICAgICAgIGV4ZWN1dGVfY29tbWFuZCgpIHNldHp0IGF1Y2ggcGFzc2VuZGUgV2VydGUgZnVlciBxdWVyeV9jb21tYW5kKCkKKyAgICAgICAgdW5kIHF1ZXJ5X3ZlcmIoKSwgZGllIGRlbSBhbmdlZ2ViZW5lbiA8Y29tbWFuZD4gZW50c3ByZWNoZW4uCisKKyAgICAgICAgZXhlY3V0ZV9jb21tYW5kKCkgYmVydWVja3NpY2h0aWd0IHdlZGVyIGRlbiBIX01PRElGWV9DT01NQU5EIG5vY2ggZGVuCisgICAgICAgIEhfTk9USUZZX0ZBSUwgSG9vay4gWndhciBrYW5uIG5vdGlmeV9mYWlsKCkgdmVyd2VuZGV0IHdlcmRlbiwgZGllCisgICAgICAgIFZlcmFyYmVpdHVuZyBtdXNzIGplZG9jaCBkdXJjaCBkYXMgYXVmcnVmZW5kZSBPYmpla3QgZXJmb2xnZW4uCisKK0FFTkRFUlVOR0VOCisgICAgICAgIEVpbmdlZnVlaHJ0IGluIExETXVkIDMuMi43CisKK1NJRUhFIEFVQ0gKKyAgICAgICAgaG9va3MoQyksIGNvbW1hbmQoRSksIG5vdGlmeV9mYWlsKEUpLCBjb21tYW5kX3N0YWNrKEUpCmRpZmYgLS1naXQgYS9kb2MvZWZ1bi9leHAgYi9kb2MvZWZ1bi9leHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYzU3NDZkYwotLS0gL2Rldi9udWxsCisrKyBiL2RvYy9lZnVuL2V4cApAQCAtMCwwICsxLDggQEAKK1NZTk9QU0lTCisgICAgICAgIGZsb2F0IGV4cChpbnR8ZmxvYXQgemFobCk7CisKK0JFU0NIUkVJQlVORworICAgICAgICBEaWUgRXhwb25lbnRpYWxmdW5rdGlvbi4gTGllZmVydCBlXnphaGwuCisKK1NJRUhFIEFVQ0gKKyAgICAgICAgbG9nKEUpLCBwb3coRSkKZGlmZiAtLWdpdCBhL2RvYy9lZnVuL2V4cGFuZF9kZWZpbmUgYi9kb2MvZWZ1bi9leHBhbmRfZGVmaW5lCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmM2ZmYxODkKLS0tIC9kZXYvbnVsbAorKysgYi9kb2MvZWZ1bi9leHBhbmRfZGVmaW5lCkBAIC0wLDAgKzEsMjQgQEAKK1NZTk9QU0lTCisgICAgICAgIHN0cmluZyBleHBhbmRfZGVmaW5lIChzdHJpbmcgbmFtZSkKKyAgICAgICAgc3RyaW5nIGV4cGFuZF9kZWZpbmUgKHN0cmluZyBuYW1lLCBzdHJpbmcgYXJnLCAuLi4pCisKK0RFU0NSSVBUSU9OCisgICAgICAgIEV4cGFuZHMgdGhlIG1hY3JvIDxuYW1lPiB3aXRoIHRoZSBhcmd1bWVudChzKSA8YXJnPi4uLiAoZGVmYXVsdCBpcworICAgICAgICBvbmUgZW1wdHkgc3RyaW5nICIiKS4KKyAgICAgICAgUmVzdWx0IGlzIHRoZSBleHBhbmRlZCBtYWNybywgb3IgMCBpZiB0aGVyZSBpcyBubyBtYWNybyB3aXRoCisgICAgICAgIHRoYXQgbmFtZS4KKworICAgICAgICBUaGlzIGVmdW4gaXMgYXBwbGljYWJsZSBvbmx5IHdoaWxlIGFuIG9iamVjdCBpcyBjb21waWxlZCwKKyAgICAgICAgdGhlcmVmb3JlIGl0cyB1c2FnZSBpcyByZXN0cmljdGVkIHRvIGEgZmV3IGZ1bmN0aW9ucyBsaWtlIHRoZQorICAgICAgICBIX0lOQ0xVREVfRElSUyBkcml2ZXIgaG9vaywgb3IgdGhlIG1hc3RlcnMgcnVudGltZV9lcnJvcigpCisgICAgICAgIGZ1bmN0aW9uLgorCitFWEFNUExFCisgICAgICAgIFdoaWxlIGNvbXBpbGluZyAnZm9vLmMnOgorICAgICAgICAgIGV4cGFuZF9kZWZpbmUoIl9fRklMRV9fIikgLS0+ICJmb28uYyIKKworSElTVE9SWQorICAgICAgICBJbnRyb2R1Y2VkIGluIDMuMi4xQDkzLgorCitTRUUgQUxTTworICAgICAgICBob29rcyhDKSwgcnVudGltZV9lcnJvcihNKQpkaWZmIC0tZ2l0IGEvZG9jL2VmdW4vZXhwbG9kZSBiL2RvYy9lZnVuL2V4cGxvZGUKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMDk2ZWFhMQotLS0gL2Rldi9udWxsCisrKyBiL2RvYy9lZnVuL2V4cGxvZGUKQEAgLTAsMCArMSwyOCBAQAorU1lOT1BTSVMKKyAgICAgICAgc3RyaW5nICpleHBsb2RlKHN0cmluZyBzdHIsIHN0cmluZyBkZWwpCisKK0JFU0NIUkVJQlVORworICAgICAgICBMaWVmZXJ0IGVpbiBGZWxkIChBcnJheSkgbWl0IFplaWNoZW5rZXR0ZW4gKFN0cmluZ3MpLCBpbmRlbSBhbGxlCisgICAgICAgIFZvcmtvbW1lbiB2b24gZGVsIChkZWxpbWl0ZXIgPSBUcmVubmVyKSBhdXMgc3RyIGhlcmF1c2dlc2Nobml0dGVuCisgICAgICAgIHdlcmRlbiB1bmQgc28gc3RyIGluIG1laHJlcmUgWmVpY2hlbmtldHRlbiB6ZXJsZWd0IHdpcmQuCisKKyAgICAgICAgaW1wbG9kZShleHBsb2RlKHN0ciwgZGVsKSwgZGVsKSA9PSBzdHIgaXN0IGltbWVyIHdhaHIuCisKK0JFSVNQSUVMRQorICAgICAgICBGdW5rdGlvbiAgICAgICAgICAgICAgICAgICAgUnVlY2tnYWJld2VydAorICAgICAgICAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgICAgICAgIGV4cGxvZGUoIiBhYiBjZCBlZiAiLCAiICIpICAoeyAiIiwgImFiIiwgImNkIiwgImVmIiwgIiIgfSkKKyAgICAgICAgZXhwbG9kZSgiYWJjIiwgImFiYyIpICAgICAgICh7ICIiLCAiIiB9KQorICAgICAgICBleHBsb2RlKCIiLCAiIikgICAgICAgICAgICAgKHt9KQorICAgICAgICBleHBsb2RlKCJhYmMiLCAieHl6IikgICAgICAgKHsgImFiYyIgfSkKKyAgICAgICAgZXhwbG9kZSgiYWJjIiwgIiIpICAgICAgICAgICh7ICJhIiwgImIiLCAiYyIgfSkKKworQUVOREVSVU5HRU4KKyAgICAgICAgWmVpdHB1bmt0IGRlciBBZW5kZXJ1bmcgdW5iZWthbm50LgorICAgICAgICBleHBsb2RlKCIgYWIgY2QgZWYgIiwgIiAiKSBsaWVmZXJ0ZSBmcnVlaGVyICh7ICJhYiIsICJjZCIsICJlZiIgfSkKKyAgICAgICAgYW5zdGF0dCAoeyAiIiwgImFiIiwgImNkIiwgImVmIiwgIiIgfSksIGQuIGguLCBsZWVyZSBaZWljaGVua2V0dGVuCisgICAgICAgIHd1cmRlbiBpZ25vcmllcnQuIERhcyBuZXVlIFZlcmhhbHRlbiBpc3Qgc2Nob2VuZXIsIGRhIG51bgorICAgICAgICBpbXBsb2RlKGV4cGxvZGUoc3RyLCBkZWwpLCBkZWwpID09IHN0ciBpbW1lciB3YWhyIGlzdC4KKworU0lFSEUgQVVDSAorICAgICAgICBzc2NhbmYoRSksIGltcGxvZGUoRSksIHJlZ2V4cGxvZGUoRSkKZGlmZiAtLWdpdCBhL2RvYy9lZnVuL2V4cG9ydF91aWQgYi9kb2MvZWZ1bi9leHBvcnRfdWlkCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjViMWY2YTMKLS0tIC9kZXYvbnVsbAorKysgYi9kb2MvZWZ1bi9leHBvcnRfdWlkCkBAIC0wLDAgKzEsMTUgQEAKK1NZTk9QU0lTCisgICAgICAgIHZvaWQgZXhwb3J0X3VpZChvYmplY3Qgb2IpCisKK0RFU0NSSVBUSU9OCisgICAgICAgIFNldCB0aGUgdWlkIG9mIG9iamVjdCBvYiB0byB0aGUgY3VycmVudCBvYmplY3QncyBlZmZlY3RpdmUgdWlkLgorICAgICAgICBJdCBpcyBvbmx5IHBvc3NpYmxlIHdoZW4gb2JqZWN0IG9iIGhhcyBhbiBlZmZlY3RpdmUgdWlkIG9mIDAuCisKKyAgICAgICAgVGhpcyBlZnVuIGlzIG5vdCBhdmFpbGFibGUgaW4gTW9yZ2VuZ3JhdWVuLgorCitISVNUT1JZCisgICAgICAgIFNpbmNlIDMuMi4xQDQ3LCB0aGlzIGVmdW4gaXMgYXZhaWxhYmUgb25seSB3aGVuIHVzaW5nIGV1aWRzLgorICAgICAgICBTaW5jZSAzLjIuNywgdGhpcyBlZnVuIGlzIGFsd2F5cyBhdmFpbGFibGUuCisKK1NFRSBBTFNPCisgICAgICAgIHNldGV1aWQoRSksIGdldHVpZChFKSwgZ2V0ZXVpZChFKSwgdWlkcyhDKSwgbmF0aXZlKEMpCmRpZmYgLS1naXQgYS9kb2MvZWZ1bi9leHRlcm5fY2FsbCBiL2RvYy9lZnVuL2V4dGVybl9jYWxsCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjAzZGNhNWYKLS0tIC9kZXYvbnVsbAorKysgYi9kb2MvZWZ1bi9leHRlcm5fY2FsbApAQCAtMCwwICsxLDEyIEBACitTWU5PUFNJUworICAgICAgICBpbnQgZXh0ZXJuX2NhbGwoKTsKKworQkVTQ0hSRUlCVU5HCisgICAgICAgIExpZWZlcnQgMCwgd2VubiBkaWUgbW9tZW50YW5lIGF1c2dlZnVlaHJ0ZSBGdW5rdGlvbiBkdXJjaCBlaW5lIGxva2FsZQorICAgICAgICBGdW5rdGlvbiBhdWZnZXJ1ZmVuIHd1cmRlLCBlaW5lbiBXZXJ0IHVuZ2xlaWNoIDAgZnVlciBBdWZydWZlIGR1cmNoCisgICAgICAgIGNhbGxfb3RoZXIoKSwgZGVuIFRyZWliZXIsIENsb3N1cmVzIGV0Yy4gSW0gTW9tZW50IGxpZWZlcnQgZGllCisgICAgICAgIEZ1bmt0aW9uIGluIGFsbCBkaWVzZW4gRmFlbGxlbiAxIHp1cnVlY2ssIGluIFp1a3VuZnQga29lbm50ZQorICAgICAgICBhbGxlcmRpbmdzIGVpbmUgVW50ZXJzY2hlaWR1bmcgZGVyIEF1ZnJ1ZmUgbW9lZ2xpY2ggd2VyZGVuLgorCitTSUVIRSBBVUNICisgICAgICAgIGNhbGxfb3RoZXIoRSksIHByZXZpb3VzX29iamVjdChFKQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2RvYy9lZnVuL2ZpbGVfc2l6ZSBiL2RvYy9lZnVuL2ZpbGVfc2l6ZQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5kNDlkZDUzCi0tLSAvZGV2L251bGwKKysrIGIvZG9jL2VmdW4vZmlsZV9zaXplCkBAIC0wLDAgKzEsMzUgQEAKK0ZVTktUSU9OOgorICAgICAgICBpbnQgZmlsZV9zaXplKHN0cmluZyBmaWxlKQorCitCRVNDSFJFSUJVTkc6CisgICAgICAgIExpZWZlcnQgZGllIEdyb2Vzc2UgZGVzIEZpbGVzIGluIEJ5dGVzLgorCitSVUVDS0dBQkVXRVJUOgorICAgICAgICBMaWVmZXJ0IGRpZSBEYXRlaWdyb2Vzc2UgaW4gQnl0ZXMuCisKKyAgICAgICAgRGF2b24gYWJ3ZWljaGVuZCBrYW5uIGF1Y2ggZm9sZ2VuZGVzIGFscyBSdWVja2dhYmV3ZXJ0IHZvci0KKyAgICAgICAga29tbWVuOgorCisgICAgICAgIEZTSVpFX05PRklMRSAgICBEYXMgRmlsZSBpc3QgZW50d2VkZXIgbmljaHQgdm9yaGFuZGVuIG9kZXIgZGFzCisgICAgICAgICAoLTEpICAgICAgICAgICBhYmZyYWdlbmRlIE9iamVrdCBiZXNpdHp0IGtlaW5lIExlc2VyZWNodGUgZGFmdWVyLgorICAgICAgICBGU0laRV9ESVIgICAgICAgRXMgaGFuZGVsdCBzaWNoIG5pY2h0IHVtIGVpbiBGaWxlIHNvbmRlcm4gdW0KKyAgICAgICAgICgtMikgICAgICAgICAgIGVpbiBWZXJ6ZWljaG5pcy4KKworQkVJU1BJRUxFOgorICAgICAgICBFaW4gU3BpZWxlciBzb2xsIHNlaW5lbiBQbGFuIGFiZnJhZ2VuIGtvZW5uZW46CisKKyAgICAgICAgI2luY2x1ZGUgPHN5cy9maWxlcy5oPgorICAgICAgICBpZihmaWxlX3NpemUoIi9wL3NlcnZpY2UvbG9jby9wbGFucy8iKworICAgICAgICAgICAgICAgICAgICAgZ2V0dWlkKHRoaXNfcGxheWVyKCkpKyIucGxhbiIpIDw9IEZTSVpFX05PRklMRSkKKyAgICAgICAgeworICAgICAgICAgIHdyaXRlKCJEdSBoYXN0IGtlaW5lbiBlaWdlbmVuIFBsYW4gZmVzdGdlbGVndC5cbiIpOworICAgICAgICAgIHJldHVybiAxOworICAgICAgICB9CisgCisgICAgICAgIHRoaXNfcGxheWVyKCktPk1vcmUocmVhZF9maWxlKCIvcC9zZXJ2aWNlL2xvY28vcGxhbnMvIisKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBnZXR1aWQodGhpc19wbGF5ZXIoKSkrIi5wbGFuIik7CisgICAgICAgICAKK1NJRUhFIEFVQ0g6CisgICAgICAgIGZpbGVfdGltZShTKSwgd3JpdGVfZmlsZShFKSwgY2F0KEUpLCBnZXRfZGlyKEUpLCBscygpCisKKzAzLjA4LjIwMDcsIFplc3N0cmEKZGlmZiAtLWdpdCBhL2RvYy9lZnVuL2ZpbHRlciBiL2RvYy9lZnVuL2ZpbHRlcgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi42MWJjMWU4Ci0tLSAvZGV2L251bGwKKysrIGIvZG9jL2VmdW4vZmlsdGVyCkBAIC0wLDAgKzEsMTg5IEBACitmaWx0ZXIoRSkKKworRlVOS1RJT046CisgICAgIG1peGVkICogZmlsdGVyIChtaXhlZCAqYXJnLCBzdHJpbmcgZnVuLCBzdHJpbmd8b2JqZWN0IG9iCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLCBtaXhlZCBleHRyYS4uLikKKyAgICAgbWl4ZWQgKiBmaWx0ZXIgKG1peGVkICphcmcsIGNsb3N1cmUgY2wsIG1peGVkIGV4dHJhLi4uKQorICAgICBtaXhlZCAqIGZpbHRlciAobWl4ZWQgKmFyZywgbWFwcGluZyBtYXAsIG1peGVkIGV4dHJhLi4uKQorCisgICAgIHN0cmluZyAgZmlsdGVyIChzdHJpbmcgYXJnLCBzdHJpbmcgZnVuLCBzdHJpbmd8b2JqZWN0IG9iCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLCBtaXhlZCBleHRyYS4uLikKKyAgICAgc3RyaW5nICBmaWx0ZXIgKHN0cmluZyBhcmcsIGNsb3N1cmUgY2wsIG1peGVkIGV4dHJhLi4uKQorICAgICBzdHJpbmcgIGZpbHRlciAoc3RyaW5nIGFyZywgbWFwcGluZyBtYXAsIG1peGVkIGV4dHJhLi4uKQorCisgICAgIG1hcHBpbmcgZmlsdGVyIChtYXBwaW5nIGFyZywgc3RyaW5nIGZ1bmMsIHN0cmluZ3xvYmplY3Qgb2IKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICwgbWl4ZWQgZXh0cmEuLi4pCisgICAgIG1hcHBpbmcgZmlsdGVyIChtYXBwaW5nIGFyZywgY2xvc3VyZSBjbCwgbWl4ZWQgZXh0cmEuLi4pCisKK1BBUkFNRVRFUjoKKyAgICAgYXJyICAgICAtIHp1IGZpbHRlcm5kZXMgQXJyYXkvTWFwcGluZy9TdHJpbmcKKyAgICAgZnVuL2NsICAtIHp1IHJ1ZmVuZGUgTWV0aG9kZS9DbG9zdXJlCisgICAgIG1hcCAgICAgLSBmaWx0ZXJuZGVzIE1hcHBpbmcKKyAgICAgb2IgICAgICAtIE9iamVrdC9EYXRlaW5hbWUsIGFuIGRlbSBNZXRob2RlIGdlcnVmZW4gd2VyZGVuIHNvbGwKKyAgICAgZXh0cmEgICAtIHdlaXRlcmUgUGFyYW1ldGVyIGZ1ZXIgTWV0aG9kZS9DbG9zdXJlCisKK0JFU0NIUkVJQlVORzogICAgICAgIAorICAgICBSdWZ0IGZ1ZXIgamVkZXMgRWxlbWVudCBkZXMgQXJyYXlzIG9kZXIgTWFwcGluZ3MgPGFyZz4gZGllIEZ1bmt0aW9uCisgICAgIDxvYj4tPjxmdW5jPigpIGJ6dy4gZGllIENsb3N1cmUgPGNsPiBhdWYgdW5kIGxpZWZlcnQgamVuZSBFbGVtZW50ZSwKKyAgICAgZnVlciBkaWUgZGllIEZ1bmt0aW9uIC8gQ2xvc3VyZSBUUlVFIGVyZ2ViZW4gaGF0LiBEaWUgPGV4dHJhPgorICAgICBBcmd1bWVudGUgd2VyZGVuIGFscyB6dXNhZXR6bGljaGUgUGFyYW1ldGVyIGFuIGRpZSBGdW5rdGlvbgorICAgICB1ZWJlcmdlYmVuIHVuZCBkdWVyZmVuIGtlaW5lIFJlZmVyZW56ZW4gdm9uIEFycmF5LSBvZGVyIE1hcHBpbmctCisgICAgIEVsZW1lbnRlbiBzZWluICh3aWUgJihpWzFdKSApLgorCisgICAgIFdpcmQgPG9iPiBuaWNodCBhbmdlZ2ViZW4gb2RlciBpc3QgZXMgd2VkZXIgZWluIFN0cmluZyBub2NoIGVpbgorICAgICBPYmpla3QsIHdpcmQgc3RhbmRhcmRtYWVzc2lnIHRoaXNfb2JqZWN0KCkgdmVyd2VuZGV0LgorCisgICAgIElzdCA8YXJnPiBlaW4gQXJyYXksIHdpcmQgPGZ1bj4gbWl0IGplZGVtIEVsZW1lbnQgZGVzIEFycmF5cyBhbHMKKyAgICAgZXJzdGVuIFBhcmFtZXRlciBhdWZnZXJ1ZmVuLCBnZWZvbGd0IHZvbiBkZW4gPGV4dHJhPiBBcmd1bWVudGVuLgorICAgICBXZW5uIGRhcyBSZXN1bHRhdCBkZXIgRnVua3Rpb24gVFJVRSBlcmdpYnQsIHdpcmQgZGFzIEVsZW1lbnQgaW4gZGFzCisgICAgIEVyZ2VibmlzIGRlciBmaWx0ZXIoKSBPcGVyYXRpb24gbWl0IGVpbmJlem9nZW4uCisKKyAgICAgV2lyZCBmaWx0ZXIoKSBtaXQgZWluZW0gTWFwcGluZyA8bWFwPiBhbnN0ZWxsZSBkZXIgRnVua3Rpb24gPGZ1bmM+CisgICAgIGF1ZmdlcnVmZW4sIHdpcmQgamVkZXMgRWxlbWVudCBpbSBBcnJheSA8YXJnPiwgZGFzIGVpbiBLZXkgdm9uIDxtYXA+CisgICAgIGlzdCwgaW5zIEVyZ2VibmlzIG1pdCBlaW5iZXpvZ2VuLgorCisgICAgIFdlbm4gPGFyZz4gZWluIE1hcHBpbmcgaXN0LCB3aXJkIGRpZSBGdW5rdGlvbiA8ZnVuYz4gbWl0IGplZGVtIEtleQorICAgICBhbHMgZXJzdGVtIHVuZCAoZmFsbHMgdm9yaGFuZGVuKSBkZW4gV2VydGVuIGRpZXNlcyBLZXlzIGFscyByZXN0bGljaGUKKyAgICAgUGFyYW1ldGVyLCBnZWZvbGd0IHZvbiBkZW4gPGV4dHJhPiBBcmd1bWVudGVuLCBhdWZnZXJ1ZmVuLiBXZW5uIGRpZQorICAgICBGdW5rdGlvbiBUUlVFIGVyZ2lidCwgd2lyZCBkYXMgYmV0cmVmZmVuZGUgRWxlbWVudCBkZXMgTWFwcGluZ3MgaW5zCisgICAgIEVyZ2VibmlzIGF1Zmdlbm9tbWVuLgorCisgICAgIEFiaGFlbmdpZyB2b24gZGVyIEdyb2Vzc2UgZGVzIE1hcHBpbmdzIDxhcmc+IGVyZm9sZ3QgZGVyIEF1ZnJ1ZiBkZXIKKyAgICAgRnVua3Rpb24gYXVmIGRyZWkgdW50ZXJzY2hpZWRsaWNoZSBBcnRlbjoKKworICAgICB3aWR0aG9mKGFyZykgPT0gMDogIG9iLT5mdW5jKGtleSwgMCwgZXh0cmEsLi4uKTsKKyAgICAgd2lkdGhvZihhcmcpID09IDE6ICBvYi0+ZnVuYyhrZXksIGFyZ1trZXldLCBleHRyYSwgLi4uKTsKKyAgICAgd2lkdGhvZihhcmcpID4xOiAgICBvYi0+ZnVuZChrZXksICh7YXJnW2tleSwwXS4uLmFyZ1trZXksIG4tMV19KSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBleHRyYSwgLi4uKTsKKworICAgICBEZXIgVm9ydGVpbCBkaWVzZXIgVm9yZ2VoZW5zd2Vpc2UgaXN0LCBkYXNzIGJlaWRlIFR5cGVuIHZvbgorICAgICBtdWx0aWRpbWVuc2lvbmFsZW4gTWFwcGluZ3MgKE1hcHBpbmdzIG1pdCBtZWhyZXJlbiBXZXJ0ZSBwcm8gS2V5IHVuZAorICAgICBNYXBwaW5ncyBhdXMgQXJyYXlzKSBnbGVpY2ggdmVyYXJiZWl0ZXQgd2VyZGVuIGtvZW5uZW4uCisKKyAgICAgSXN0IDxhcmc+IGVpbiBTdHJpbmcsIHdlcmRlbiBkZXIgRmlsdGVyZnVua3Rpb24gZGllIGVpbnplbG5lbiBaZWljaGVuIGRlcworICAgICBTdHJpbmdzIHVlYmVyZ2ViZW4gdW5kIG51ciBqZW5lIFplaWNoZW4gaW0genVydWVja2dlZ2ViZW5lbiBTdHJpbmcKKyAgICAgYXVmZ2Vub21tZW4sIGZ1ZXIgZGllIGRpZSBGaWx0ZXJmdW5rdG9uICE9IDAgenVydWVja2dpYnQuCisKK0FFTkRFUlVOR0VOCisgICAgIEVpbmdlZnVlaHJ0IGluIExETXVkIDMuMi42LiBEaWUgRnVua3Rpb24gbG9lc3QgZmlsdGVyX2FycmF5KCkgYWIuCisKK1JVZUNLR0FCRVdFUlQ6CisgICAgIEdlZmlsdGVydGVzIEFycmF5IG1pdCBhbGxlbiBkaWUgRmlsdGVyYmVkaW5ndW5nIGVyZnVlbGxlbmRlbiBFbGVtZW50ZW4uCisKK0JFTUVSS1VOR0VOOgorICAgICAoMSkgQWNodHVuZywgZGllIEVsZW1lbnRlIGluICdhcnInIHdlcmRlbiBuaWNodCB0aWVmIGtvcGllcnQsIHNpbmQgc2llCisgICAgIGFsc28gc2VsYnN0IEFycmF5cyBvZGVyIE1hcHBpbmdzLCBzbyBmdWVocnQgZWluZSBzcGFldGVyZSBBZW5kZXJ1bmcgaW0KKyAgICAgUnVlY2tnYWJlLUFycmF5cyB6dXIgQWVuZGVydW5nIGltIFVyc3BydW5nc2FycmF5OgorCisgICAgIGludCAqaSwgKmo7CisgICAgIGk9KHsoezEsMiwzfSksKHs0LDUsNn0pfSk7CisgICAgIGo9ZmlsdGVyKGksICMnc2l6ZW9mKTsgICAgIC8vIGZpbHRlcnQgbGVlcmUgQXJyYXlzIGhlcmF1cworICAgICBqWzBdWzBdPTg7CisKKyAgICAgZnVlaHJ0IHp1OiBpPT1qPT0oeyh7OCwyLDN9KSwoezQsNSw2fSl9KTsKKworICAgICAoMikgRGFzIEtvcGllcmVuIGluIGRhcyBSdWVja2dhYmVtYXBwaW5nIGVyZm9sZ3QgZnVlciBqZWRlcyBFbGVtZW50IG5hY2gKKyAgICAgQXVzZnVlaHJ1bmcgZGVyIEZpbHRlcm1ldGhvZGUuIEFlbmRlcnVuZ2VuIGRlciBXZXJ0ZSBpbSBBcnJheSBpbiBkaWVzZXIKKyAgICAgTWV0aG9kZSAoZ2xvYmFsZSBWYXJpYWJsZS9VZWJlcmdhYmUgYWxzIFJlZmVyZW56IGFuIGZpbHRlcikKKyAgICAgc2NobGFnZW4gc2ljaCBhbHNvIGltIFJ1ZWNrZ2FiZWFycmF5IG5pZWRlci4KKworICAgICAoMykgRnVlciBBcnJheXMgd2lya3QgZmlsdGVyKCkgd2llIGZpbHRlcl9hcnJheSgpLCBmdWVyIE1hcHBpbmdzIHN0ZWxsdAorICAgICBmaWx0ZXIoKSBlaW5lIFZlcmFsbGdlbWVpbmVydW5nIHZvbiBmaWx0ZXJfaW5kaWNlcygpIGRhci4KKworQkVJU1BJRUw6CisgICAgICMjIyBGaWx0ZXJlIGFsbGUgTGViZXdlc2VuIGluIGVpbmVtIFJhdW0gaW4gZWluIEFycmF5ICMjIworICAgICBmaWx0ZXIoYWxsX2ludmVudG9yeSh0aGlzX29iamVjdCgpKSwjJ2xpdmluZyk7CisKKworICAgICAjIyMgRmlsdGVyZSBhbGxlIHRhdWJlbiBTcGllbGVyIGltIFJhdW0gaW4gZWluIEFycmF5ICMjIworICAgICBzdGF0aWMgaW50IGZpbHRlcl9pc2RlYWYob2JqZWN0IHdobykgeworICAgICAgIHJldHVybiAoaW50ZXJhY3RpdmUod2hvKSAmJiB3aG8tPlF1ZXJ5UHJvcChQX0RFQUYpKTsKKyAgICAgfQorICAgICAKKyAgICAgZmlsdGVyKGFsbF9pbnZlbnRvcnkodGhpc19vYmplY3QoKSksICMnZmlsdGVyX2lzZGVhZik7CisKKworICAgICAjIyMgRmlsdGVybiB2b24gSWRsZXJuICg+PTEgU2VrdW5kZSBpZGxlKSAjIyMKKyAgICAgLy8gRm9sZ2VuZCBpZGVudGlzY2hlIFJlc3VsdGF0ZSwgYWJlciBhbmRlcmUgQW5zYWV0emU6CisKKyAgICAgIzE6IG51dHp0IGRpZSBFZnVuIHF1ZXJ5X2lkbGUoKSBhbHMgTGZ1bi1DbG9zdXJlIChpZGVhbCBoaWVyKQorICAgICAgICAgaWRsZV91c3IgPSBmaWx0ZXIodXNlcnMoKSwgIydxdWVyeV9pZGxlICk7CisKKyAgICAgIzI6IG1pdCBGaWx0ZXJtZXRob2RlCisgICAgICAgICBpbnQgY2hlY2tfaWZfaWRsZShvYmplY3QgdXNlcikgeworICAgICAgICAgICByZXR1cm4gcXVlcnlfaWRsZSh1c2VyKTsKKyAgICAgICAgIH0KKyAgICAgICAgIAorICAgICAgICAgIzJhOiBmaWx0ZXJ0IG1pdHRlbHMgZGVyIExmdW4gaW0gc2VsYmVuIE9iamVrdCBkaWUgSWRsZXIgaW4gZGFzCisgICAgICAgICAgICAgIFJ1ZWNrZ2FiZWFycmF5CisgICAgICAgICAgICAgIGlkbGVfdXNyID0gZmlsdGVyKHVzZXJzKCksICJjaGVja19pZl9pZGxlIik7CisgICAgICAgICAgICAgIGlkbGVfdXNyID0gZmlsdGVyKHVzZXJzKCksICJjaGVja19pZl9pZGxlIiwgdGhpc19vYmplY3QoKSk7CisKKyAgICAgICAgICMyYjogcnVmdCBkaWUgTGZ1biBjaGVja19pZl9pZGxlKCkgYWxzIExmdW4tQ2xvc3VyZSAoRnVua3Rpb25zLQorICAgICAgICAgICAgICBwb2ludGVyKQorICAgICAgICAgICAgICBpZGxlX3VzciA9IGZpbHRlcih1c2VycygpLCAjJ2NoZWNrX2lmX2lkbGUgKTsKKworICAgICAjMzogbnV0enQgZWluZSBMYW1iZGEtQ2xvc3VyZSAobGFuZ3NhbWVyLCBuaWNodCBmdWVyIGFsbGUgbGVzZXJsaWNoKQorICAgICAgICAgaWRsZV91c3IgPSBmaWx0ZXIodXNlcnMoKSwgbGFtYmRhKCh7J3V9KSwgKHsjJ3F1ZXJ5X2lkbGUsICd1fSkpKTsKKworICAgICAjNDogZXJyZWljaHQgZGFzc2VsYmUgd2llICMzIG1pdCBiZXNzZXIgbGVzYmFyZXIgSW5saW5lLUNsb3N1cmUKKyAgICAgICAgIGlkbGVfdXNyID0gZmlsdGVyKHVzZXJzKCksIGZ1bmN0aW9uIGludCAob2JqZWN0IHVzZXIpIHsKKyAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gcXVlcnlfaWRsZSh1c2VyKTsKKyAgICAgICAgICAgICAgICAgICAgfSApOworCisgICAgICMjIyBGaWx0ZXJuIHZvbiBJZGxlcm4gKD49MjAgU2VrdW5kZW4gaWRsZSkgbWl0IEV4dHJhcGFyYW1ldGVyICMjIworICAgICAvLyBGb2xnZW5kIGlkZW50aXNjaGUgUmVzdWx0YXRlLCBhYmVyIGFuZGVyZSBBbnNhZXR6ZToKKworICAgICAjMTogZGllIEVmdW4ga29lbm5lbiB3aXIgbmljaHQgbWVociBkaXJla3QgbnV0emVuLCB3ZWlsIHNpZQorICAgICAgICAgZGllc2VuIFBhcmFtZXRlciBuaWNodCB1bnRlcnN0dWV0enQKKyAgICAgICAgLy8gaWRsZV91c3IgPSBmaWx0ZXIodXNlcnMoKSwgIydxdWVyeV9pZGxlICk7CisKKyAgICAgIzI6IG1pdCBzZXBhcmF0ZXIgRmlsdGVybWV0aG9kZSAuLi4gbWl0IG5ldWVtIFBhcmFtZXRlcgorICAgICAgICAgaW50IGNoZWNrX2lmX2lkbGUob2JqZWN0IHVzZXIsIGludCBsZW5ndGgpIHsKKyAgICAgICAgICAgcmV0dXJuIHF1ZXJ5X2lkbGUodXNlcik+bGVuZ3RoOworICAgICAgICAgfQorICAgICAgCisgICAgICAgICAjMmE6IGZpbHRlcnQgbWl0dGVscyBkZXIgTGZ1biBpbSBzZWxiZW4gT2JqZWt0IGRpZSBJZGxlciBpbiBkYXMKKyAgICAgICAgICAgICAgUnVlY2tnYWJlYXJyYXkgLi4uIG1pdCBkcml0dGVtIFBhcmFtZXRlciEKKyAgICAgICAgICAgICAgaWRsZV91c3IgPSBmaWx0ZXIodXNlcnMoKSwgImNoZWNrX2lmX2lkbGUiLCB0aGlzX29iamVjdCgpLCAyMCk7CisKKyAgICAgICAgICMyYjogcnVmdCBkaWUgTGZ1biBjaGVja19pZl9pZGxlKCkgYWxzIExmdW4tQ2xvc3VyZSAoRnVua3Rpb25zLQorICAgICAgICAgICAgICBwb2ludGVyKQorICAgICAgICAgICAgICBpZGxlX3VzciA9IGZpbHRlcih1c2VycygpLCAjJ2NoZWNrX2lmX2lkbGUsIDIwKTsKKworICAgICAjMzogbnV0enQgZWluZSBMYW1iZGEtQ2xvc3VyZSAobGFuZ3NhbWVyLCBuaWNodCBmdWVyIGFsbGUgbGVzZXJsaWNoKQorICAgICAgICAgaWRsZV91c3IgPSBmaWx0ZXIodXNlcnMoKSwgCisgICAgICAgICAgICAgICAgICAgICAgbGFtYmRhKCh7J3UsICdsfSksICh7Iyc+LCh7IydxdWVyeV9pZGxlLCAndX0pLCdsfSkpLCAKKyAgICAgICAgICAgICAgICAgICAgICAyMCk7CisKKyAgICAgIzQ6IGVycmVpY2h0IGRhc3NlbGJlIHdpZSAjMyBtaXQgZWluZXIgZGV1dGxpY2ggYmVzc2VyIGxlc2JhcmVuCisgICAgICAgICBJbmxpbmUtQ2xvc3VyZSAoZ2VnZW51ZWJlciBMYW1iZGFzIHp1IGVtcGZlaGxlbmRlIFZhcmlhbnRlKToKKyAgICAgICAgIGlkbGVfdXNyID0gZmlsdGVyKHVzZXJzKCksIGZ1bmN0aW9uIGludCAob2JqZWN0IHVzZXIsIGludCBsZW5ndGgpIHsKKyAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gKHF1ZXJ5X2lkbGUodXNlcikgPiBsZW5ndGgpOyAKKyAgICAgICAgICAgICAgICAgICAgICB9LCAyMCk7CisKKworQWVRVUlWQUxFTlpDT0RFIChuaWNodCBlbXBmb2hsZW4sIG51ciB6dW0gVmVyc3RhZW5kbmlzISk6CisgICAgIGludCBpOworICAgICBtaXhlZCAqcmV0OyBtaXhlZCAqaW5wdXQ7CisKKyAgICAgcmV0PWFsbG9jYXRlKDApOworICAgICBpPXNpemVvZihpbnB1dCk7CisgICAgIHdoaWxlKGktLSkKKyAgICAgICBpZihvYi0+ZnVuKGlucHV0W2ldIFssIGV4dHJhMSwgZXh0cmEyLCAuLi5dKSkKKyAgICAgICAvLyBpZihmdW5jYWxsKGNsLCBpbnB1dFtpXSBbLCBleHRyYTEsIGV4dHJhMiwgLi4uXSkpCisgICAgICAgLy8gaWYobWVtYmVyKG1hcCwgaW5wdXRbaV0pKQorICAgICAgICAgcmV0Kz0oe2lucHV0W2ldfSk7CisKK1NJRUhFIEFVQ0g6CisgICAgIEFycmF5czogICAgICAgIG1hcChFKQorICAgICBPYmpla3RhcnJheXM6ICBmaWx0ZXJfb2JqZWN0cyhFKSwgbWFwX29iamVjdHMoRSkKKyAgICAgTWFwcGluZ3M6ICAgICAgZmlsdGVyX2luZGljZXMoRSksIG1hcF9pbmRpY2VzKEUpCisgICAgICAgICAgICAgICAgICAgIHdhbGtfbWFwcGluZyhFKSwgbWVtYmVyKEUpCisKKyAgICAgU29uc3RpZ2VzOiAgICAgc29ydF9hcnJheShFKSwgdW5pcXVlX2FycmF5KCkKKyAgICAgICAgICAgICAgICAgICAgdHJhbnNwb3NlX2FycmF5KEUpCisKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKzA5LjA0LjIwMDgsIFplc3N0cmEKKwpkaWZmIC0tZ2l0IGEvZG9jL2VmdW4vZmlsdGVyLmVuZyBiL2RvYy9lZnVuL2ZpbHRlci5lbmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNWQwYmUyOQotLS0gL2Rldi9udWxsCisrKyBiL2RvYy9lZnVuL2ZpbHRlci5lbmcKQEAgLTAsMCArMSw0OSBAQAorZmlsdGVyKEUpCitTWU5PUFNJUworICAgICBtaXhlZCAqZmlsdGVyKG1peGVkICphcnIsIHN0cmluZyBmdW4sIHN0cmluZ3xvYmplY3Qgb2IKKyAgICAgICAgICAgICAgICAgICAgICAgICBbLCBtaXhlZCBleHRyYSwgLi4uXSkKKyAgICAgbWl4ZWQgKmZpbHRlcihtaXhlZCAqYXJyLCBjbG9zdXJlIGNsIFssIG1peGVkIGV4dHJhLCAuLi5dKQorICAgICBtaXhlZCAqZmlsdGVyKG1peGVkICphcnIsIG1hcHBpbmcgbWFwIFssIG1peGVkIGV4dHJhLCAuLi5dKQorCitERVNDUklQVElPTgorICAgICAgICBSZXR1cm5zIGFuIGFycmF5IGhvbGRpbmcgdGhlIGl0ZW1zIG9mIGFyciBmaWx0ZXJlZCB0aHJvdWdoCisgICAgICAgIG9iLT5mdW4oZWxlbWVudCwgZXh0cmEsIC4uLiksIHRoZSBjbG9zdXJlIGNsLCBvciB0aGUgbWFwcGluZyBtYXAuCisgICAgICAgIFRoZSBmdW5jdGlvbiAnZnVuJyBpbiAnb2InIHJlc3AuIHRoZSBjbG9zdXJlICdjbCcgaXMgY2FsbGVkCisgICAgICAgIGZvciBlYWNoIGVsZW1lbnQgaW4gYXJyIHdpdGggdGhhdCBlbGVtZW50IGFzIHBhcmFtZXRlci4gVGhlCisgICAgICAgIGV4dHJhIGFuZCBmb2xsb3dpbmcgcGFyYW1ldGVycyBhcmUgaW4gZWFjaCBjYWxsIGlmIGdpdmVuLgorICAgICAgICBUaGUgbWFwcGluZyAnbWFwJyBpcyBsaWtld2lzZSBpbmRleGVkIGJ5IGVhY2ggZWxlbWVudC4KKyAgICAgICAgSWYgb2ItPmZ1bihhcnJbaW5kZXhdLCBleHRyYSkgcmV0dXJucyAhPSAwIHJlc3AuCisgICAgICAgIG1hcFthcnJbaW5kZXhdXSBleGlzdHMsIHRoZSBlbGVtZW50IGlzIGluY2x1ZGVkIGluIHRoZQorICAgICAgICByZXR1cm5lZCBhcnJheS4KKworICAgICAgICBJZiBhcnIgaXMgbm90IGFuIGFycmF5LCBhbiBlcnJvciBvY2N1cnMuCisKKyAgICAgICAgVGhlIGV4dHJhIGFyZ3VtZW50KHMpIGFyZSBvcHRpb25hbCBhbmQgbXVzdCBub3QgYmUgcHJvdGVjdGVkCisgICAgICAgIHJlZmVyZW5jZXMgbGlrZSAmKGlbMF0pLgorICAgICAgICBJZiA8b2I+IGlzIG9taXR0ZWQsIG9yIG5laXRoZXIgYSBzdHJpbmcgbm9yIGFuIG9iamVjdCwgaXQKKyAgICAgICAgZGVmYXVsdHMgdG8gdGhpc19vYmplY3QoKS4KKworICAgICAgICBTaW5jZSAzLjIuMUAzNiwgdGhlIHNlY29uZCBhcmcgY2FuIGFsc28gYmUgYSBtYXBwaW5nLiBUaGVuCisgICAgICAgIG9ubHkgdGhlIGVsZW1lbnRzIG9mIHRoZSBhcnJheSB3aGljaCBiZWxvbmcgdG8gdGhlIG1hcCAoYXMKKyAgICAgICAga2V5cykgd2lsbCBiZSByZXR1cm5lZCAoaS5lLiBtYXBbYXJyW2luZGV4XV0gIT0gMCkuCisKK0VYQU1QTEUKKyAgICAgICAgaW50IGNoZWNrX2lmX2lkbGUob2JqZWN0IHVzZXIpIHsgcmV0dXJuIHF1ZXJ5X2lkbGUodXNlcik7IH0KKworICAgICAgICAuLi4KKworICAgICAgICBvYmplY3QgKmlkbGVfdXNlcnM7CisKKyAgICAgICAgaWRsZV91c2VycyA9IGZpbHRlcih1c2VycygpLCAiY2hlY2tfaWZfaWRsZSIpOworICAgICAgICAvKiBlcXVpdmFsZW50IGJ1dCBzbWFsbGVyIGFuZCBmYXN0ZXIgKi8KKyAgICAgICAgaWRsZV91c2VycyA9IGZpbHRlcih1c2VycygpLCAjJ3F1ZXJ5X2lkbGUgKTsKKworICAgICAgICBOb3cgaWRsZV91c2VycyBjb250YWlucyBhbGwgdXNlcnMgdGhhdCBoYXZlIGJlZW4gaWRsZSBmb3IgbW9yZQorICAgICAgICB0aGFuIDEgc2Vjb25kLgorCitTRUUgQUxTTzoKKyAgICAgICAgU2ltaWxhciBmaWx0ZXI6CWZpbHRlcihFKSwgZmlsdGVyX29iamVjdChFKSwgZmlsdGVyX2luZGljZXMoRSkKKyAgICAgICAgTWFwcGluZzoJbWFwKEUpLCBtYXBfb2JqZWN0cyhFKSwgbWFwX2luZGljZXMoRSkKKyAgICAgICAgUmVsYXRlZDoJc29ydF9hcmF5KEUpLCB1bmlxdWVfYXJyYXkoRSkKKworMjkuMTAuMjAwNiBaZXNzdHJhCmRpZmYgLS1naXQgYS9kb2MvZWZ1bi9maWx0ZXJfaW5kaWNlcyBiL2RvYy9lZnVuL2ZpbHRlcl9pbmRpY2VzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjU0ZmRhZGYKLS0tIC9kZXYvbnVsbAorKysgYi9kb2MvZWZ1bi9maWx0ZXJfaW5kaWNlcwpAQCAtMCwwICsxLDExNSBAQAorZmlsdGVyX2luZGljZXMoRSkKKworRlVOS1RJT046CisgICAgIG1hcHBpbmcgZmlsdGVyX2luZGljZXMobWFwcGluZyBtYXAsIHN0cmluZyBmdW4sIHN0cmluZ3xvYmplY3Qgb2IKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBbLCBtaXhlZCBleHRyYSwgLi4uXSkKKyAgICAgbWFwcGluZyBmaWx0ZXJfaW5kaWNlcyhtYXBwaW5nIG1hcCwgY2xvc3VyZSBjbCBbLCBtaXhlZCBleHRyYSwgLi4uXSkKKworUEFSQU1FVEVSOgorICAgICBtYXAJLSB6dSBmaWx0ZXJuZGVzIE1hcHBpbmcKKyAgICAgZnVuL2NsCS0genUgcnVmZW5kZSBNZXRob2RlL0Nsb3N1cmUKKyAgICAgb2IJCS0gT2JqZWt0L0RhdGVpbmFtZSwgYW4gZGVtIE1ldGhvZGUgZ2VydWZlbiB3ZXJkZW4gc29sbAorICAgICBleHRyYQktIHdlaXRlcmUgUGFyYW1ldGVyIGZ1ZXIgTWV0aG9kZS9DbG9zdXJlCisKK0JFU0NIUkVJQlVORzoKKyAgICAgRmlsdGVydCBkaWUgRWxlbWVudGUgKGpld2VpbHMgU2NobHVlc3NlbCkgYXVzICdtYXAnIGR1cmNoIGRpZQorICAgICBNZXRob2RlICdmdW4nIG9kZXIgZGllIENsb3N1cmUgJ2NsJyBpbiBlaW4gbmV1ZXMgTWFwcGluZy4KKyAgICAgRnVlciBqZWRlcyBFbGVtZW50IGF1cyAnbWFwJyB3aXJkICdmdW4nIG9kZXIgJ2NsJyBtaXQgZGVtIFNjaGx1ZXNzZWwgYWxzCisgICAgIGVyc3RlbSBQYXJhbWV0ZXIgW3VuZCBmb2xnZW5kIGRlbiBvcHRpb25hbGVuIEV4dHJhLVBhcmFtZXRlcm5dIGdlcnVmZW4uCisKKyAgICAgV2VubiBkZXIgQXVmcnVmCisgICAgICAJb2ItPmZ1bihlbGVtZW50IFssIGV4dHJhMSwgZXh0cmEyLCAuLi5dKSBiencuCisgICAgICAgCWZ1bmNhbGwoY2wsIGVsZW1lbnQgWywgZXh0cmExLCBleHRyYTIsIC4uLl0pCisgICAgIGFscyBSdWVja2dhYmV3ZXJ0ICE9MCB6dXJ1ZWNrZ2lidCBkYW5uIHdpcmQgZGVyIFNjaGx1ZXNzZWwrV2VydGUgaW4gZGFzCisgICAgIG5ldWUgQXJyYXkgYXVmZ2Vub21tZW4sIHNvbnN0IG5pY2h0LgorCisgICAgIFdlbm4gYXVmIGRpZSBXZXJ0ZSB6dWdlZ3JpZmZlbiB3ZXJkZW4gbXVzcywga2FubiBkYXMgTWFwcGluZyAnbWFwJworICAgICB6dXNhZXR6bGljaCBhbHMgJ2V4dHJhJy1QYXJhbWV0ZXIgdWViZXJnZWJlbiB3ZXJkZW4uIEFsdGVybmF0aXYga2FubiBtYW4KKyAgICAgd2Fsa19tYXBwaW5nKCkgYmVudXR6ZW4gdW5kIGRhcyBSdWVja2dhYmVtYXBwaW5nIHNlbGJzdCBlcnN0ZWxsZW4uCisKKworICAgICBWZXJ3ZW5kdW5nIHZvbiBNZXRob2RlbjoKKwlXZW5uIGJlaSBkZXIgQW5nYWJlIHZvbiAnZnVuJyBrZWluIE9iamVrdCAnb2InIGluIEZvcm0gZWluZXMgU3RyaW5ncworCW9kZXIgT2JqZWt0cyBhbmdlZ2ViZW4gd2lyZCwgd2lyZCB0aGlzX29iamVjdCgpIGFuZ2Vub21tZW4uCisKKyAgICAgVmVyd2VuZHVuZyB2b24gQ2xvc3VyZXM6CisJRXMga29lbm5lbiBzb3dvaGwgTGZ1bi1DbG9zdXJlcyBhbHMgYXVjaCBMYW1iZGEtQ2xvc3VyZXMgdmVyd2VuZGV0CisJd2VyZGVuLiBMZnVuLUNsb3N1cmVzIGtvZW5uZW4sIHdlbm4gaW0gc2VsYmVuIE9iamVrdCB2b3JoYW5kZW4gYXVjaAorCSdwcml2YXRlJyBvZGVyL3VuZCAnc3RhdGljJyBkZWtsYXJpZXJ0IHNlaW4sIG11ZXNzZW4gYWJlciB6dSBkZW0KKwlaZWl0cHVua3QgZGVyIFZlcndlbmR1bmcgYmVrYW5udCBzZWluIChGdW5rdGlvbnNwcm90b3R5cGVuIGJlbnV0emVuKS4KKworUlVlQ0tHQUJFV0VSVDoKKyAgICAgR2VmaWx0ZXJ0ZXMgTWFwcGluZyBtaXQgRmlsdGVyYmVkaW5ndW5nIGVyZnVlbGxlbmRlbiBFbGVtZW50ZW4uCisKK0JFTUVSS1VOR0VOOgorICAgICAoMSkgQWNodHVuZywgZGllIEVsZW1lbnRlIGluICdtYXAnIHdlcmRlbiBuaWNodCB0aWVmIGtvcGllcnQsIHNpbmQgc2llCisgICAgIGFsc28gc2VsYnN0IEFycmF5cyBvZGVyIE1hcHBpbmdzLCBzbyBmdWVocnQgZWluZSBzcGFldGVyZSBBZW5kZXJ1bmcgaW0KKyAgICAgUnVlY2tnYWJlLU1hcHBpbmcgenVyIEFlbmRlcnVuZyBpbSBVcnNwcnVuZ3NtYXBwaW5nOgorCisgICAgIG1hcHBpbmcgbSxuOworICAgICBtPShbMTooezEsMn0pLDA6KHsyLDMsNH0pXSk7CisgICAgIG49ZmlsdGVyX2luZGljZGVzKG0sICMnISk7CQkvLyBmaWx0ZXJ0IGFsbGUgS2V5cyAhPTAgaGVyYXVzCisgICAgIG5bMF1bMF09ODsKKworICAgICBmdWVocnQgenU6IG49KFswOih7OCwzLDR9KV0pCisgIAkJbT0oWzA6KHs4LDMsNH0pLDE6KHsxLDJ9KV0pCisKKyAgICAgKDIpIERhcyBLb3BpZXJlbiBpbiBkYXMgUnVlY2tnYWJlbWFwcGluZyBlcmZvbGd0IGZ1ZXIgamVkZXMgRWxlbWVudCBuYWNoCisgICAgIEF1c2Z1ZWhydW5nIGRlciBGaWx0ZXJtZXRob2RlLiBBZW5kZXJ1bmdlbiBkZXIgV2VydGUgaW0gTWFwcGluZyBpbiBkaWVzZXIKKyAgICAgTWV0aG9kZSAoZ2xvYmFsZSBWYXJpYWJsZS9VZWJlcmdhYmUgYWxzIFJlZmVyZW56IGFuIGZpbHRlcl9pbmRpY2VzKQorICAgICBzY2hsYWdlbiBzaWNoIGFsc28gaW0gUnVlY2tnYWJlbWFwcGluZyBuaWVkZXIuCisKK0JFSVNQSUVMRToKKyAgICAgIyMjIGVyZnVuZGVuZSBMaXN0ZSBtaXQgU3BpZWxlcm4gc2FldWJlcm4gLi4uICMjIworICAgICBtYXBwaW5nIHg9KFsgWy9odW1hbjpsaWFmYXJdOiAgMjAsCisJCSAgWy9kd2FyZjptZXNpcmlpXTogNTAsCisJCSAgWy9lbGY6emFybml5YV06ICAgNDAsCisJCSAgWy9mZWxpbmU6dHVyYm9dOiAgMzBdKTsKKworICAgICBpbnQgaXNfYmFkZ3V5KG9iamVjdCB3aG8pIHsKKyAgICAgIGlmKHdoby0+SW5GaWdodCgpKSByZXR1cm4gMTsKKyAgICAgIHJldHVybiAwOworICAgICB9CisKKyAgICAgbWFwcGluZyByZXN1bHQ9ZmlsdGVyX2luZGljZXMoeCwgIydpc19iYWRndXkpOworICAgICAvLyAncmVzdWx0JyBlbnRoYWVsdCBudXIgbm9jaCBrYWVtcGZlbmRlIFNwaWVsZXIKKworICAgICAjIyMgZXJmdW5kZW5lIExpc3RlIHVlYmVyIGlocmUgV2VydGUgc2FldWJlcm4gIyMjCisgICAgIGludCBpc19iYWRndXkob2JqZWN0IHdobywgbWFwcGluZyBtKSB7CisgICAgICBpZihtW3hdPDMwKSByZXR1cm4gMTsKKyAgICAgIHJldHVybiAwOworICAgICB9CisKKyAgICAgbWFwcGluZyByZXN1bHQ9ZmlsdGVyX2luZGljZXMoeCwgIydpc19iYWRndXksICZ4KTsgLy8gUmVmZXJlbnoKKyAgICAgLy8gJ3Jlc3VsdCcgZW50aGFlbHQgbnVyIFNwaWVsZXIgbWl0IFdlcnRlbiA+PSAzMAorCitBZVFVSVZBTEVOWkNPREUgKG5pY2h0IGVtcGZvaGxlbiwgbnVyIHp1bSBWZXJzdGFlbmRuaXMhKToKKyAgICAgaW50IGksIHdpZHRoOworICAgICBtYXBwaW5nIHJldDsgbWFwcGluZyBpbnB1dDsKKyAgICAgbWl4ZWQgKmluZGV4OworCisgICAgIHdpZHRoPWdldF90eXBlX2luZm8oaW5wdXQpWzFdOworICAgICByZXQ9bV9hbGxvY2F0ZSgwLCB3aWR0aCk7CisgICAgIGluZGV4PW1faW5kaWNlcyhpbnB1dCk7CisgICAgIGk9c2l6ZW9mKGluZGV4KTsKKyAgICAgd2hpbGUoaS0tKQorICAgICAgIGlmKG9iLT5mdW4oaW5kZXhbaV0gWywgZXh0cmExLCBleHRyYTIsIC4uLl0pKQorICAgICAgIC8vIGlmKGZ1bmNhbGwoY2wsIGluZGV4W2ldIFssIGV4dHJhMSwgZXh0cmEyLCAuLi5dKSkKKyAgICAgICB7CisgICAgICAgICBpbnQgajsKKyAgICAgICAgIGo9d2lkdGg7CisKKyAgICAgICAgIHdoaWxlKGotLSkKKyAgICAgICAgICAgcmV0W2luZGV4W2ldLGpdPWlucHV0W2luZGV4W2ldLGpdOworICAgICAgIH0KKworU0lFSEUgQVVDSDoKKyAgICAgQXJyYXlzOgkJZmlsdGVyKEUpLCBtYXAoRSkKKyAgICAgT2JqZWt0YXJyYXlzOglmaWx0ZXJfb2JqZWN0cyhFKSwgbWFwX29iamVjdHMoRSkKKyAgICAgTWFwcGluZ3M6CQltYXBfaW5kaWNlcyhFKQorCisgICAgIFNvbnN0aWdlczoJCXdhbGtfbWFwcGluZyhFKSwgbV9jb250YWlucyhFKQorCQkJbWVtYmVyKCkKKwkJCW1faW5kaWNlcyhFKSwgbV92YWx1ZXMoRSkKKworMjkuMTAuMjAwNiBaZXNzdHJhCmRpZmYgLS1naXQgYS9kb2MvZWZ1bi9maWx0ZXJfb2JqZWN0cyBiL2RvYy9lZnVuL2ZpbHRlcl9vYmplY3RzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjlmYjY5MjIKLS0tIC9kZXYvbnVsbAorKysgYi9kb2MvZWZ1bi9maWx0ZXJfb2JqZWN0cwpAQCAtMCwwICsxLDU5IEBACitmaWx0ZXJfb2JqZWN0cyhFKQorCitGVU5LVElPTjoKKyAgICAgb2JqZWN0ICpmaWx0ZXJfb2JqZWN0cyhtaXhlZCAqYXJyLCBzdHJpbmcgZnVuLCBbLCBtaXhlZCBleHRyYSwgLi4uXSkKKworUEFSQU1FVEVSOgorICAgICBhcnIJLSB6dSBmaWx0ZXJuZGVzIEFycmF5IHZvbiBPYmpla3Rlbi9PYmpla3RwZmFkZW4KKyAgICAgZnVuCS0gYW4gT2JqZWt0ZW4genUgcnVmZW5kZSBNZXRob2RlCisgICAgIGV4dHJhCS0gd2VpdGVyZSBQYXJhbWV0ZXIgZnVlciBNZXRob2RlCisKK0JFU0NIUkVJQlVORzoKKyAgICAgRmlsdGVydCBkaWUgRWxlbWVudGUgYXVzICdhcnInIGR1cmNoIGRlbiBBdWZydWYgZGVyIE1ldGhvZGUgJ2Z1bicgYW4KKyAgICAgamVkZW0gZGVyIEVsZW1lbnRlIHZvbiAnYXJyJy4gMC1FaW50cmFlZ2Ugd2VyZGVuIGlnbm9yaWVydC4KKworICAgICBXZW5uIGRlciBBdWZydWYKKwlhcnJbbl0tPmZ1bihbZXh0cmExLCBleHRyYTIsIC4uLl0pCisgICAgIGFscyBSdWVja2dhYmV3ZXJ0ICE9MCB6dXJ1ZWNrZ2lidCBkYW5uIHdpcmQgZGFzIEVsZW1lbnQgaW4gZGFzIG5ldWUKKyAgICAgQXJyYXkgYXVmZ2Vub21tZW4sIHNvbnN0IG5pY2h0LgorCitSVWVDS0dBQkVXRVJUOgorICAgICBHZWZpbHRlcnRlcyBBcnJheSBtaXQgRmlsdGVyYmVkaW5ndW5nIGVyZnVlbGxlbmRlbiBPYmpla3Rlbi4KKworQkVNRVJLVU5HRU46CisgICAgIFdlcmRlbiBQZmFkZSBhbmdlZ2ViZW4sIHNvIHdpcmQgdmVyc3VjaHQgZWluIE9iamVrdCB6dSBsYWRlbiwgZmFsbHMKKyAgICAgZGllc2VzIG5pY2h0IGV4aXN0aWVydC4KKworQkVJU1BJRUw6CisgICAgIC8vIGdpYnQgYWxsZSB0YXViZW4gUGVyc29uZW4gd2llZGVyCisgICAgIGRlYWY9ZmlsdGVyX29iamVjdHModXNlcnMoKSwgIlF1ZXJ5UHJvcCIsIFBfREVBRik7CisKKyAgICAgLy8gZ2lidCBhbGxlIGJsaW5kZW4gUGVyc29uZW4gd2llZGVyCisgICAgIGJsaW5kPWZpbHRlcl9vYmplY3RzKHVzZXJzKCksICJRdWVyeVByb3AiLCBQX0JMSU5EKTsKKworICAgICAvLyBmaWx0ZXJ0IGFsbGUgT2JqZWt0ZSBhdWYgZWluZSBiZXN0aW1tdGUgSUQgKC0+IHByZXNlbnQpCisgICAgIGlkbWF0Y2g9ZmlsdGVyX29iamVjdHMoYXJyLCAiaWQiLCAiaXJnZW5kd2FzSUQiKTsKKworICAgICAvLyBnaWJ0IGFsbGUgQXV0b2xvYWRlciB3aWVkZXIKKyAgICAgYWw9ZmlsdGVyX29iamVjdHMoYWxsX2ludmVudG9yeSh0aGlzX3BsYXllcigpKSwKKyAgICAgICAgICAgICAgICAgICAgICAiUXVlcnlQcm9wIiwgUF9BVVRPTE9BRE9CSik7CisKK0FlUVVJVkFMRU5aQ09ERSAobmljaHQgZW1wZm9obGVuLCBudXIgenVtIFZlcnN0YWVuZG5pcyEpOgorICAgICBpbnQgaTsKKyAgICAgb2JqZWN0ICpyZXQ7IG1peGVkICppbnB1dDsKKworICAgICByZXQ9YWxsb2NhdGUoMCk7CisgICAgIGk9c2l6ZW9mKGlucHV0KTsKKyAgICAgd2hpbGUoaS0tKQorICAgICAgIGlmKGlucHV0W2ldLT5mdW4oW2V4dHJhMSwgZXh0cmEyLCAuLi5dKSkKKyAgICAgICAgIHJldCs9KHtpbnB1dFtpXX0pOworCitTSUVIRSBBVUNIOgorICAgICBBcnJheXM6CQlmaWx0ZXIoRSksIG1hcChFKQorICAgICBPYmpla3RhcnJheXM6CW1hcF9vYmplY3RzKEUpCisgICAgIE1hcHBpbmdzOgkJZmlsdGVyX2luZGljZXMoRSksIG1hcF9pbmRpY2VzKEUpCisKKyAgICAgU29uc3RpZ2VzOgkJc29ydF9hcnJheShFKSwgdW5pcXVlX2FycmF5KCkKKwkJCWFsaXN0LCB0cmFuc3Bvc2VfYXJyYXkoRSkKKworMjAuSmFuIDIwMDUgR2xvaW5zb24KZGlmZiAtLWdpdCBhL2RvYy9lZnVuL2ZpbmRfY2FsbF9vdXQgYi9kb2MvZWZ1bi9maW5kX2NhbGxfb3V0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjBlOTQzMzcKLS0tIC9kZXYvbnVsbAorKysgYi9kb2MvZWZ1bi9maW5kX2NhbGxfb3V0CkBAIC0wLDAgKzEsNDEgQEAKK0ZVTktUSU9OOgorICAgICAgICBpbnQgZmluZF9jYWxsX291dChzdHJpbmcgZnVuYykKKyAgICAgICAgaW50IGZpbmRfY2FsbF9vdXQoY2xvc3VyZSBjbCkKKworQkVTQ0hSRUlCVU5HOgorICAgICAgICBGaW5kZXQgZGVuIGVyc3RlbiBjYWxsX291dCgpIGF1ZiBkaWUgRnVua3Rpb24gJ2Z1bmMnIGltIGFrdHVlbGxlbiBPYmpla3QKKyAgICAgICAgKGJ6dy4gYXVmIGRpZSBDbG9zdXJlICdjbCcpIGRlciBhdXNnZWZ1ZWhydCB3ZXJkZW4gc29sbC4KKyAgICAgICAgWnVydWVjayBnZWdlYmVuIHdpcmQgZGllIHZlcmJsZWliZW5kZSBaZWl0IGJpcyB6dW0gQXVmcnVmIGluIFNla3VuZGVuLgorICAgICAgICBXZW5uIGtlaW4gY2FsbF9vdXQoKSBnZWZ1bmRlbiB3aXJkLCB3aXJkIC0xIHp1cnVlY2sgZ2VnZWJlbi4KKworQkVJU1BJRUxFOgorICAgICAgICAvLyBGaW5kZXQgc2ljaCBrZWluIGNhbGxfb3V0IGF1ZiBkaWUgRnVua3Rpb24gJ2Z1bmMnLCBzbyBrYW5uIGVyCisgICAgICAgIC8vIGdlc3RhcnRldCB3ZXJkZW4uIChXaWNodGlnIGZhbGxzIGRlciBjYWxsX291dCBuaWNodCBtZWhyZmFjaAorICAgICAgICAvLyBhdWZnZXJ1ZmVuIHdlcmRlbiBzb2xsKS4KKyAKKyAgICAgICAgaWYoZmluZF9jYWxsX291dCgiZnVuYyIpPT0tMSkKKyAgICAgICAgICBjYWxsX291dCgiZnVuYyIsNSk7CisKKyAgICAgICAgLy8gQWxsZSBjYWxsX291dCBhdWYgRnVua3Rpb24gJ2Z1bmMnIHdlcmRlbiBnZWZ1bmRlbiB1bmQgZ2VzdG9wcHQuCisgICAgICAgIC8vIChCZWlzcGllbHN3ZWlzZSB3ZWlsIGVpbiBTcGllbGVyIGRlbiBSYXVtIHZlcmxhZXNzdCBvZGVyIHNpY2gKKyAgICAgICAgLy8gZGlzY29ubmVjdGV0KS4KKworICAgICAgICB3aGlsZShmaW5kX2NhbGxfb3V0KCJmdW5jIikgPiAtMSkKKyAgICAgICAgICByZW1vdmVfY2FsbF9vdXQoImZ1bmMiKTsKKworICAgICAgICAvLyBEaWUgU3VjaGUgbmFjaCBjYWxsX291dCgpcyBhdWYgQ2xvc3VyZXMgZnVua3Rpb25pZXJ0IG51ciwgd2VubiBkZXIKKyAgICAgICAgLy8gZ2VuYXVlIFdlcnQgZGVyIENsb3N1cmUgZ2VzdWNodCB3aXJkLgorCisgICAgICAgIC8vIERhcyBmdW5rdGlvbmllcnQ6CisgICAgICAgICAgICBjbG9zdXJlIGNsID0gc3ltYm9sX2Z1bmN0aW9uKCJtYWluIiwgb2JqKTsKKyAgICAgICAgICAgIGNhbGxfb3V0KGNsLCAyKTsKKyAgICAgICAgICAgIGZpbmRfY2FsbF9vdXQoY2wpOworCisgICAgICAgIC8vIERhcyBmdW5rdGlvbmllcnQgbmljaHQ6CisgICAgICAgICAgICBjYWxsX291dChzeW1ib2xfZnVuY3Rpb24oIm1haW4iLCBvYmopLCAyKTsKKyAgICAgICAgICAgIGZpbmRfY2FsbF9vdXQoc3ltYm9sX2Z1bmN0aW9uKCJtYWluIiwgb2JqKSk7CisKK1NJRUhFIEFVQ0g6CisgICAgICAgIGNhbGxfb3V0KEUpLCByZW1vdmVfY2FsbF9vdXQoRSksIGNhbGxfb3V0X2luZm8oRSkKKworNC5BdWcgMjAwNyBHbG9pbnNvbgpkaWZmIC0tZ2l0IGEvZG9jL2VmdW4vZmluZF9pbnB1dF90byBiL2RvYy9lZnVuL2ZpbmRfaW5wdXRfdG8KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uY2IyOTljMAotLS0gL2Rldi9udWxsCisrKyBiL2RvYy9lZnVuL2ZpbmRfaW5wdXRfdG8KQEAgLTAsMCArMSwyNiBAQAorU1lOT1BTSVMKKyAgICAgICAgaW50IGZpbmRfaW5wdXRfdG8gKG9iamVjdCBwbGF5ZXIsIHN0cmluZyBmdW4pOworICAgICAgICBpbnQgZmluZF9pbnB1dF90byAob2JqZWN0IHBsYXllciwgY2xvc3VyZSBmdW4pOworICAgICAgICBpbnQgZmluZF9pbnB1dF90byAob2JqZWN0IHBsYXllciwgb2JqZWN0IGZ1bik7CisgICAgICAgIGludCBmaW5kX2lucHV0X3RvIChvYmplY3QgcGxheWVyLCBvYmplY3Qgb2IsIHN0cmluZyBmdW4pOworCitCRVNDSFJFSUJVTkcKKyAgICAgICAgRmluZGV0IGRlbiB6dWxldHp0IGZ1ZXIgPHBsYXllcj4gZ2VzdGFydGV0ZW4gaW5wdXRfdG8oKSwgYWJoYWVuZ2lnIHZvbQorICAgICAgICBBcmd1bWVudCA8ZnVuPjoKKyAgICAgICAgICAtIDxmdW4+IGlzdCBlaW4gU3RyaW5nOiBkZXIgRnVua3Rpb25zbmFtZSBkZXMgaW5wdXRfdG8oKSBtdXNzIHBhc3NlbgorICAgICAgICAgIC0gPGZ1bj4gaXN0IGVpbiBPYmpla3Q6IGRhcyBPYmpla3QsIGFuIHdlbGNoZXMgZGllIEZ1bmt0aW9uIGRlcworICAgICAgICAgICAgaW5wdXRfdG8oKSBnZWJ1bmRlbiBpc3QsIG11c3MgcGFzc2VuCisgICAgICAgICAgLSA8ZnVuPiBpc3QgZWluZSBDbG9zdXJlOiBkaWUgaW5wdXRfdG8oKSBDbG9zdXJlIG11c3MgcGFzc2VuCisgICAgICAgICAgLSA8b2I+IHVuZCA8ZnVuPiBzaW5kIGFuZ2VnZWJlbjogc293b2hsIE9iamVrdCBhbHMgYXVjaAorICAgICAgICAgICAgRnVua3Rpb25zbmFtZSBtdWVzc2VuIHBhc3Nlbi4KKworICAgICAgICBEaWUgRnVua3Rpb24gbGllZmVydCAtMSwgd2VubiBrZWluIGlucHV0X3RvKCkgZ2VmdW5kZW4gd3VyZGUsIHNvbnN0CisgICAgICAgIGRpZSBQb3NpdGlvbiBpbSBpbnB1dF90bygpIFN0YWNrICh3b2JlaSAwIGRlbiBhbHMgbGV0enRlcworICAgICAgICBoaW56dWdlZnVlZ3RlbiBpbnB1dF90bygpIGJlemVpY2huZXQpLgorCitBRU5ERVJVTkdFTgorICAgICAgICBFaW5nZWZ1ZWhydCBpbiBMRE11ZCAzLjIuOQorCitTSUVIRSBBVUNICisgICAgICAgIGlucHV0X3RvKEUpLCBpbnB1dF90b19pbmZvKEUpLCByZW1vdmVfaW5wdXRfdG8oRSksCisgICAgICAgIHF1ZXJ5X2lucHV0X3BlbmRpbmcoRSkKZGlmZiAtLWdpdCBhL2RvYy9lZnVuL2ZpbmRfb2JqZWN0IGIvZG9jL2VmdW4vZmluZF9vYmplY3QKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMmE0ZjBkMAotLS0gL2Rldi9udWxsCisrKyBiL2RvYy9lZnVuL2ZpbmRfb2JqZWN0CkBAIC0wLDAgKzEsMjMgQEAKK1NZTk9QU0lTOgorICAgICAgICBvYmplY3QgZmluZF9vYmplY3Qoc3RyaW5nIHN0cikKKworREVTQ1JJUFRJT046CisgICAgICAgIEZpbmQgYW4gb2JqZWN0IHdpdGggdGhlIG9iamVjdF9uYW1lIHN0ci4gSWYgdGhlIG9iamVjdCBpc24ndCBsb2FkZWQsCisJaXQgd2lsbCBub3QgYmUgZm91bmQuCisKK0VYQU1QTEU6CisgICAgICAgIG9iamVjdCBvYmo7CisgICAgICAgIG9iaiA9IGZpbmRfb2JqZWN0KCJzdGQvdGhpbmciKTsKKyAgICAgICAgb2JqID0gZmluZF9vYmplY3QoInN0ZC90aGluZy5jIik7CisgICAgICAgIG9iaiA9IGZpbmRfb2JqZWN0KCIvc3RkL3RoaW5nIik7CisgICAgICAgIG9iaiA9IGZpbmRfb2JqZWN0KCIvc3RkL3RoaW5nLmMiKTsKKyAgICAgICAgCisgICAgICAgIEFsbCBmb3VyIHN0YXRlbWVudHMgYXJlIGVxdWFsLgorCisJb2JqID0gZmluZF9vYmplY3QoIi9zdGQvdGhpbmcjNDIiKTsKKworCXJldHVybnMgdGhlIGNsb25lIHdob3NlIG9iamVjdF9uYW1lIGlzICJzdGQvdGhpbmcjNDIiLCBpZgorCWl0IGV4aXN0cy4KKworU0VFIEFMU086CisgICAgICAgIGZpbmRfbGl2aW5nKEUpLCBmaW5kX3BsYXllcihFKSwgb2JqZWN0X25hbWUoRSkKZGlmZiAtLWdpdCBhL2RvYy9lZnVuL2ZpcnN0X2ludmVudG9yeSBiL2RvYy9lZnVuL2ZpcnN0X2ludmVudG9yeQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi45OWJlN2ZkCi0tLSAvZGV2L251bGwKKysrIGIvZG9jL2VmdW4vZmlyc3RfaW52ZW50b3J5CkBAIC0wLDAgKzEsMzQgQEAKK1NZTk9QU0lTCisgICAgICAgIG9iamVjdCBmaXJzdF9pbnZlbnRvcnkoKTsKKyAgICAgICAgb2JqZWN0IGZpcnN0X2ludmVudG9yeShzdHJpbmcgb2IpOworICAgICAgICBvYmplY3QgZmlyc3RfaW52ZW50b3J5KG9iamVjdCBvYik7CisKK0JFU0NIUkVJQlVORworICAgICAgICBMaWVmZXJ0IGRhcyBlcnN0ZSBPYmpla3QgaW0gSW52ZW50b3J5IHZvbiA8b2JqPiwgd29iZWkgPG9iaj4gZW50d2VkZXIKKyAgICAgICAgZWluIE9iamVrdCBvZGVyIGRlciBOYW1lIGVpbmVzIE9iamVrdHMgaXN0LiBXZW5uIDxvYmo+IG5pY2h0IGFuZ2VnZWJlbgorICAgICAgICB3aXJkLCB3aXJkIHN0YW5kYXJkbWFlc3NpZyB0aGlzX29iamVjdCgpIHZlcndlbmRldC4KKworQkVJU1BJRUxFCisgICAgICAgIERpZXNlIEVmdW4gdmVyd2VuZGV0IG1hbiBhbSBoYWV1Zmlnc3RlbiBpbSBmb2xnZW5kZW4gS29udGV4dDoKKworICAgICAgICAgICAgZm9yKG9iaj1maXJzdF9pbnZlbnRvcnkoY29udGFpbmVyKTtvYmo7b2JqPW5leHRfaW52ZW50b3J5KG9iaikpCisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgPGlyZ2VuZHdlbGNoZXIgQ29kZT4KKyAgICAgICAgICAgIH0KKworICAgICAgICBBQ0hUVU5HOiBXZW5uIGRhcyBPYmpla3QgPG9iaj4gaW5uZXJoYWxiIHZvbiA8aXJnZW5kd2VsY2hlciBDb2RlPgorICAgICAgICBiZXdlZ3Qgd2lyZCwgbGllZmVydCBuZXh0X2ludmVudG9yeSgpIGVpbiBPYmpla3QgYXVzIGRlbSBuZXVlbgorICAgICAgICBJbnZlbnRvcnkgdm9uIDxvYmo+LiBBdWNoIHNvbGx0ZSBuZXh0X2ludmVudG9yeSgpIG5pY2h0IGZ1ZXIKKyAgICAgICAgemVyc3RvZXJ0ZSBPYmpla3RlIDxvYmo+IGF1ZmdlcnVmZW4gd2VyZGVuLiBGdWVyIGRlbiBGYWxsLCBkYXNzCisgICAgICAgIDxvYmo+IGJld2VndCB1bmQvb2RlciB6ZXJzdG9lcnQgd2lyZCwgaXN0IGZvbGdlbmRlIExvZXN1bmcKKyAgICAgICAgdm9yenV6aWVoZW46CisKKyAgICAgICAgICAgIGZvcihvYmo9Zmlyc3RfaW52ZW50b3J5KGNvbnRhaW5lcik7b2JqOykKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICBuZXh0PW5leHRfaW52ZW50b3J5KG9iaik7CisgICAgICAgICAgICAgICAgPGlyZ2VuZHdlbGNoZXIgQ29kZSBtaXQgTW92ZXMgb2RlciBSZW1vdmVzPgorICAgICAgICAgICAgICAgIG9iaj1uZXh0OworICAgICAgICAgICAgfQorCitTSUVIRSBBVUNICisgICAgICAgIG5leHRfaW52ZW50b3J5KEUpLCBhbGxfaW52ZW50b3J5KEUpLCBlbnZpcm9ubWVudChFKSwgZGVlcF9pbnZlbnRvcnkoRSkKZGlmZiAtLWdpdCBhL2RvYy9lZnVuL2Zsb2F0cCBiL2RvYy9lZnVuL2Zsb2F0cApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4xMDljYWNlCi0tLSAvZGV2L251bGwKKysrIGIvZG9jL2VmdW4vZmxvYXRwCkBAIC0wLDAgKzEsMTAgQEAKK1NZTk9QU0lTCisgICAgICAgIGludCBmbG9hdHAobWl4ZWQgYXJnKQorCitCRVNDSFJFSUJVTkcKKyAgICAgICAgTGllZmVydCAxLCB3ZW5uIGRhcyBBcmd1bWVudCBlaW5lIEZsaWVzc2tvbW1hemFobCAoZmxvYXQpIGlzdCwKKyAgICAgICAgYW5zb25zdGVuIDAuCisKK1NJRUhFIEFVQ0gKKyAgICAgICAgaW50cChFKSwgbWFwcGluZ3AoRSksIHN0cmluZ3AoRSksIGNsb3N1cmVwKEUpLCBvYmplY3RwKEUpLAorICAgICAgICByZWZlcmVuY2VwKEUpLCBwb2ludGVycChFKSwgc3ltYm9scChFKSwgY2xvbmVwKEUpCmRpZmYgLS1naXQgYS9kb2MvZWZ1bi9mbG9vciBiL2RvYy9lZnVuL2Zsb29yCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmU3Yjg1ZTYKLS0tIC9kZXYvbnVsbAorKysgYi9kb2MvZWZ1bi9mbG9vcgpAQCAtMCwwICsxLDE5IEBACitTWU5PUFNJUworICAgICAgICBmbG9hdCBmbG9vcihmbG9hdCBhcmcpOworCitCRVNDSFJFSUJVTkcKKyAgICAgICAgUnVuZGV0IGRhcyBBcmd1bWVudCA8YXJnPiBhYiBhdWYgZGllIG5hZWNoc3RlIGdhbnplIFphaGwgdW5kIGdpYnQKKyAgICAgICAgZGllc2VuIFdlcnQgenVydWVjay4gV2VubiA8YXJnPiBlaW4gSW50ZWdlciBpc3QsIHdpcmQgZGFzIFJlc3VsdGF0CisgICAgICAgIHRyb3R6ZGVtIGFscyBGbG9hdCB6dXJ1ZWNrZ2VnZWJlbi4KKworQkVJU1BJRUxFCisgICAgICAgIGZsb29yKDQuNSkgIC0tPiBsaWVmZXJ0IDQuMAorICAgICAgICBmbG9vcigtNC41KSAtLT4gbGllZmVydCAtNS4wCisgICAgICAgIGZsb29yKDUpICAgIC0tPiBsaWVmZXJ0IDUuMAorCitBRU5ERVJVTkdFTgorICAgICAgICBFaW5nZWZ1ZWhydCBpbiBMRE11ZCAzLjIuNy4KKyAgICAgICAgTERNdWQgMy4yLjkgZXJsYXVidCBhdWNoIEludGVnZXIgYWxzIEFyZ3VtZW50ZS4KKworU0lFSEUgQVVDSAorICAgICAgICBhYnMoRSksIGNlaWwoRSkKZGlmZiAtLWdpdCBhL2RvYy9lZnVuL2Z1bmNhbGwgYi9kb2MvZWZ1bi9mdW5jYWxsCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjZiYjk4MzMKLS0tIC9kZXYvbnVsbAorKysgYi9kb2MvZWZ1bi9mdW5jYWxsCkBAIC0wLDAgKzEsMTAgQEAKK1NZTk9QU0lTCisgICAgICAgIG1peGVkIGZ1bmNhbGwoY2xvc3VyZSBjbCwgbWl4ZWQgYXJnLCAuLi4pOworCitCRVNDSFJFSUJVTkcKKyAgICAgICAgV2VydGV0IGRpZSBDbG9zdXJlICdjbCcgYXVzLiBEaWUgQXJndW1lbnRlICdhcmdzJyB3ZXJkZW4gYWxzIEFyZ3VtZW50ZQorICAgICAgICBhbiBkaWUgQ2xvc3VyZSB1ZWJlcmdlYmVuLiBXZW5uICdjbCcga2VpbmUgQ2xvc3VyZSBpc3QsIHdpcmQgJ2NsJworICAgICAgICB6dXJ1ZWNrIGdlZ2ViZW4uCisKK1NJRUhFIEFVQ0gKKyAgICAgICAgYXBwbHkoRSksIHF1b3RlKEUpCmRpZmYgLS1naXQgYS9kb2MvZWZ1bi9mdW5jdGlvbl9leGlzdHMgYi9kb2MvZWZ1bi9mdW5jdGlvbl9leGlzdHMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNDNmMmRhMgotLS0gL2Rldi9udWxsCisrKyBiL2RvYy9lZnVuL2Z1bmN0aW9uX2V4aXN0cwpAQCAtMCwwICsxLDE0IEBACitTWU5PUFNJUworICAgICAgICBzdHJpbmcgZnVuY3Rpb25fZXhpc3RzKHN0cmluZyBzdHIsIG9iamVjdCBvYikKKworREVTQ1JJUFRJT04KKyAgICAgICAgUmV0dXJuIHRoZSBmaWxlIG5hbWUgb2YgdGhlIG9iamVjdCB0aGF0IGRlZmluZXMgdGhlIGZ1bmN0aW9uCisgICAgICAgIHN0ciBpbiBvYmplY3Qgb2IuIFRoZSByZXR1cm5lZCB2YWx1ZSBjYW4gYmUgb3RoZXIgdGhhbgorICAgICAgICBvYmplY3RfbmFtZShvYikgaWYgdGhlIGZ1bmN0aW9uIGlzIGRlZmluZWQgaW4gYW4gaW5oZXJpdGVkCisgICAgICAgIG9iamVjdC4gSW4gIWNvbXBhdCBtb2RlLCB0aGUgcmV0dXJuZWQgbmFtZSBhbHdheXMgYmVnaW5zIHdpdGggYQorICAgICAgICAnLycgKGFic29sdXRlIHBhdGgpLiAwIGlzIHJldHVybmVkIGlmIHRoZSBmdW5jdGlvbiB3YXMgbm90CisgICAgICAgIGRlZmluZWQsIG9yIHdhcyBkZWZpbmVkIGFzIHN0YXRpYyAocHJvdGVjdGVkIGZ1bmN0aW9uIG9uIHRoZQorICAgICAgICBvdGhlciBoYW5kIGFyZSBmb3VuZCkuCisKK1NFRSBBTFNPCisgICAgICAgIGNhbGxfb3RoZXIoRSksIGNhbGxfcmVzb2x2ZWQoRSksIGZ1bmN0aW9ubGlzdChFKQpkaWZmIC0tZ2l0IGEvZG9jL2VmdW4vZnVuY3Rpb25saXN0IGIvZG9jL2VmdW4vZnVuY3Rpb25saXN0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjQ2ZjJjYmEKLS0tIC9kZXYvbnVsbAorKysgYi9kb2MvZWZ1bi9mdW5jdGlvbmxpc3QKQEAgLTAsMCArMSw1NSBAQAorR0VTQ0hVRVRaVAorU1lOT1BTSVMKKyAgICAgICAgI2luY2x1ZGUgPHN5cy9mdW5jdGlvbmxpc3QuaD4KKyAgICAgICAgI2luY2x1ZGUgPHN5cy9scGN0eXBlcy5oPgorCisgICAgICAgIG1peGVkICpmdW5jdGlvbmxpc3Qob2JqZWN0IG9iLCBpbnQgZmxhZ3MgPSBSRVRVUk5fRlVOQ1RJT05fTkFNRSkKKworQkVTQ0hSRUlCVU5HCisgICAgICAgIExpZWZlcnQgZWluIEFycmF5IG1pdCBJbmZvcm1hdGlvbmVuIHp1IGRlbiBMZnVucyB2b24gPG9iPi4gRnVlciBqZWRlCisgICAgICAgIEZ1bmt0aW9uIHdlcmRlbiAxIGJpcyA0IFdlcnRlIChhYmhhZW5naWcgdm9uIDxmbGFncz4pIGluIGRhcyBFcmdlYm5pcworICAgICAgICBlaW5nZXRyYWdlbiwgdW5kIHp3YXIgaW4gZm9sZ2VuZGVyIFJlaWhlbmZvbGdlOgorICAgICAgICAgIC0gZGVyIE5hbWUgZGVyIEZ1bmt0aW9uCisgICAgICAgICAgLSBkaWUgRmxhZ3MgZGVyIEZ1bmt0aW9uICh2ZXJnbGVpY2hlIHdlaXRlciB1bnRlbikKKyAgICAgICAgICAtIGRlbiBSdWVja2dhYmV0eXAgKGF1ZmdlbGlzdGV0IGluIG11ZGxpYi9zeXMvbHBjdHlwZXMuaCkKKyAgICAgICAgICAtIGRpZSBBbnphaGwgQXJndW1lbnRlLCBkaWUgZGllIEZ1bmt0aW9uIGFremVwdGllcnQuCisKKyAgICAgICAgPG9iPiBrYW5uIGFscyBlY2h0ZXMgT2JqZWt0IG9kZXIgYWxzIE9iamVrdG5hbWUgdWViZXJnZWJlbiB3ZXJkZW4uIEltCisgICAgICAgIHp3ZWl0ZW4gRmFsbCB2ZXJzdWNodCBkaWUgRWZ1biBuaWNodCwgZGFzIE9iamVrdCB2b3JoZXIgenUgbGFkZW4uCisKKyAgICAgICAgPGZsYWdzPiBiZXN0aW1tdCBzb3dvaGwsIHdlbGNoZSBJbmZvcm1hdGlvbmVuIGltIEVyZ2VibmlzIGdlc2FtbWVsdAorICAgICAgICB3ZXJkZW4sIGFscyBhdWNoLCBmdWVyIHdlbGNoZSBGdW5rdGlvbmVuIGRpZSBQcnVlZnVuZyBkdXJjaGdlZnVlaHJ0CisgICAgICAgIHdpcmQuIERlciBXZXJ0IHZvbiA8ZmxhZ3M+IHdpcmQgZHVyY2ggYmluYWVyZSBWZXJvZGVydW5nIGZvbGdlbmRlcgorICAgICAgICBLb25zdGFudGVuIGF1cyBtdWRsaWIvc3lzL2Z1bmN0aW9ubGlzdC5oIGZlc3RnZWxlZ3Q6CisKKyAgICAgICAgRmVzdGxlZ2VuIGRlciBnZXNhbW1lbHRlbiBJbmZvcm1hdGlvbjoKKyAgICAgICAgICAgIFJFVFVSTl9GVU5DVElPTl9OQU1FICAgICAgICBsaWVmZXJ0IGRlbiBGdW5rdGlvbnNuYW1lbgorICAgICAgICAgICAgUkVUVVJOX0ZVTkNUSU9OX0ZMQUdTICAgICAgIGxpZWZlcnQgZGllIEZsYXMgZGVyIEZ1bmt0aW9uCisgICAgICAgICAgICBSRVRVUk5fRlVOQ1RJT05fVFlQRSAgICAgICAgbGllZmVydCBkZW4gUnVlY2tnYWJldHlwIGRlciBGdW5rdGlvbgorICAgICAgICAgICAgUkVUVVJOX0ZVTkNUSU9OX05VTUFSRyAgICAgIGxpZWZlcnQgZGllIEFuemFobCBtb2VnbGljaGVyCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQXJndW1lbnRlLgorCisgICAgICAgICAgICBSRVRVUk5fRlVOQ1RJT05fQVJHVFlQRSAgICAgaXN0IGRlZmluaWVydCwgYWJlciBuaWNodAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGltcGxlbWVudGllcnQuCisKKyAgICAgICAgRmVzdGxlZ2VuIGRlciBnZXBydWVmdGVuIEZ1bmt0aW9uZW46CisgICAgICAgICAgICBOQU1FX0lOSEVSSVRFRCAgICAgIGdlZXJidGUgRnVua3Rpb25lbiBuaWNodCBiZWFjaHRlbgorICAgICAgICAgICAgVFlQRV9NT0RfU1RBVElDICAgICBzdGF0aWMgZGVrbGFyaWVydGUgRnVua3Rpb24gbmljaHQgYmVhY2h0ZW4KKyAgICAgICAgICAgIFRZUEVfTU9EX1BSSVZBVEUgICAgcHJpdmF0ZSBkZWtsYXJpZXJ0ZSBGdW5rdGlvbmVuIG5pY2h0IGJlYWNodGVuCisgICAgICAgICAgICBUWVBFX01PRF9QUk9URUNURUQgIHByb3RlY3RlZCBkZWtsYXJpZXJ0ZSBGdW5rdGlvbmVuIG5pY2h0CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJlYWNodGVuCisgICAgICAgICAgICBOQU1FX0hJRERFTiAgICAgICAgIG51ciBiZWFjaHRlbiwgd2VubiBzaWNodGJhciBkdXJjaCBWZXJlcmJ1bmcKKworICAgICAgICA8ZmxhZ3M+IGJlc3RlaHQgYXVzIGRlciBiaW5hZXJlbiBWZXJvZGVydW5nIGRlciBvYmVuIGdlbmFubnRlbiBGbGFncywKKyAgICAgICAgenVzYW1tZW4gbWl0IGRlbiBmb2xnZW5kZW46CisgICAgICAgICAgICBUWVBFX01PRF9WQVJBUkdTICAgIGRpZSBGdW5rdGlvbiBpc3QgdmFyYXJncyBkZWtsYXJpZXJ0CisgICAgICAgICAgICBOQU1FX1VOREVGSU5FRCAgICAgIGRpZSBGdW5rdGlvbiBpc3Qgbm9jaCBuaWNodCBkZWZpbmllcnQsIGFiZXIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVmZXJlbnppZXJ0CisgICAgICAgICAgICBOQU1FX0NST1NTX0RFRklORUQgIGRpZSBGdW5rdGlvbiBpc3QgZGVmaW5pZXJ0LCB1bSBpbiBlaW5lbQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhbmRlcmVuIFByb2dyYW1tIHZlcndlbmRldCB6dSB3ZXJkZW4KKyAgICAgICAgICAgIFRZUEVfTU9EX05PTUFTSyAgICAgZGllIEZ1bmt0aW9uIGlzdCBub21hc2sgZGVrbGFyaWVydAorICAgICAgICAgICAgVFlQRV9NT0RfUFVCTElDICAgICBkaWUgRnVua3Rpb24gaXN0IHB1YmxpYyBkZWtsYXJpZXJ0CisKK1NJRUhFIEFVQ0gKKyAgICAgICAgaW5oZXJpdF9saXN0KEUpLCBmdW5jdGlvbl9leGlzdHMoRSksIHZhcmlhYmxlX2xpc3QoRSksCisgICAgICAgIGNhbGxfcmVzb2x2ZWQoRSkKZGlmZiAtLWdpdCBhL2RvYy9lZnVuL2dhcmJhZ2VfY29sbGVjdGlvbiBiL2RvYy9lZnVuL2dhcmJhZ2VfY29sbGVjdGlvbgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41YzZhNzM4Ci0tLSAvZGV2L251bGwKKysrIGIvZG9jL2VmdW4vZ2FyYmFnZV9jb2xsZWN0aW9uCkBAIC0wLDAgKzEsMjIgQEAKK0dFU0NIVUVUWlQKK1NZTk9QU0lTCisgICAgICAgIHZvaWQgZ2FyYmFnZV9jb2xsZWN0aW9uKCk7CisgICAgICAgIHZvaWQgZ2FyYmFnZV9jb2xsZWN0aW9uKHN0cmluZyBmaWxlbmFtZSk7CisKK0JFU0NIUkVJQlVORworICAgICAgICBCZWZpZWhsdCBkZW0gVHJlaWJlciwgbmFjaCBFbmRlIGRlciBha3R1ZWxsZW4gQXVzZnVlaHJ1bmcgZWluZQorICAgICAgICBHYXJiYWdlIENvbGxlY3Rpb24genUgYmVnaW5uZW4uIEplIG5hY2hkZW0sIHdlbGNoZXIgTWVtb3J5IEFsbG9jYXRvcgorICAgICAgICB2ZXJ3ZW5kZXQgd2lyZCwgaXN0IGRpZSBHYXJiYWdlIENvbGxlY3Rpb24gbWVociBvZGVyIHdlbmlnZXIKKyAgICAgICAgZ3J1ZW5kbGljaC4KKworICAgICAgICBXaXJkIGRlciBzbWFsbG9jIE1lbW9yeSBBbGxvY2F0b3IgdmVyd2VuZGV0LCBlcnpldWd0IEdDIGVpbmVuIE91dHB1dAorICAgICAgICBpbiBlaW5lbSBMb2dmaWxlLiBEZXIgU3RhbmRhcmRuYW1lIGZ1ZXIgZGFzIExvZ2ZpbGUgd2lyZCBiZWltCisgICAgICAgIFByb2dyYW1tc3RhcnQgZmVzdGdlbGVndCwga2FubiBhYmVyIHp1ciBMYXVmemVpdCB2ZXJhZW5kZXJ0IHdlcmRlbiwKKyAgICAgICAgd2VubiBkYXMgQXJndW1lbnQgPGZpbGVuYW1lPiBhbmdlZ2ViZW4gaXN0LiBEZXIgTG9nLU91dHB1dCB3aXJkIGluCisgICAgICAgIGRpZXNlbSBGYWxsIGFuIGRhcyBiZXplaWNobmV0ZSBMb2dmaWxlIGFuZ2VmdWVndC4KKworICAgICAgICBGdWVyIGFuZGVyZSBNZW1vcnkgQWxsb2NhdG9ycyBlcnpldWd0IGdhcmJhZ2VfY29sbGVjdGlvbigpIGtlaW5lbgorICAgICAgICBPdXRwdXQuIEVpbiBhbGxmYWVsbGlnZXMgQXJndW1lbnQgPGZpbGVuYW1lPiB3aXJkIGlnbm9yaWVydC4KKworU0lFSEUgQVVDSAorICAgICAgICBydXNhZ2UoRSksIHZhbGlkX3dyaXRlKE0pCmRpZmYgLS1naXQgYS9kb2MvZWZ1bi9nZXRfZGlyIGIvZG9jL2VmdW4vZ2V0X2RpcgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5iMTQyODhhCi0tLSAvZGV2L251bGwKKysrIGIvZG9jL2VmdW4vZ2V0X2RpcgpAQCAtMCwwICsxLDExMyBAQAorU1lOT1BTSVMKKyAgICAgICAgI2luY2x1ZGUgPGZpbGVzLmg+CisKKyAgICAgICAgbWl4ZWQgKmdldF9kaXIoc3RyaW5nIHN0cikKKyAgICAgICAgbWl4ZWQgKmdldF9kaXIoc3RyaW5nIHN0ciwgaW50IG1hc2spCisKK0JFU0NIUkVJQlVORworICAgICAgICBCZW5vZXRpZ3QgZWluZW4gUGZhZCBhbHMgZXJzdGVzIEFyZ3VtZW50IHVuZCBsaWVmZXJ0IGVpbiBGZWxkCisgICAgICAgIChBcnJheSkgbWl0IERhdGVpbmFtZW4gYnp3LiBFaWdlbnNjaGFmdGVuIGRlciBnZWZ1bmRlbmVuIERhdGVpZW4gaW0KKyAgICAgICAgYW5nZWdlYmVuZW4gVmVyemVpY2huaXMuCisKKyAgICAgICAgTGllZmVydCAwIHp1cnVlY2ssIHdlbm4gZXMgZGFzIFZlcnplaWNobmlzLCBpbiBkZW0gZ2VzdWNodCB3ZXJkZW4KKyAgICAgICAgc29sbCwgbmljaHQgZ2lidC4KKworICAgICAgICBEZXIgRGF0ZWluYW1lbi1UZWlsIGRlcyBQZmFkZXMgZGFyZiAiKiIgdW5kICI/IiBhbHMgUGxhdHpoYWx0ZXIKKyAgICAgICAgZW50aGFsdGVuOiBqZWRlciAiKiIgc3RlaHQgZnVlciBlaW5lIGJlbGllYmlnZSBBbnphaGwgWmVpY2hlbiAob2RlcgorICAgICAgICBzaWNoIHNlbGJlciksICI/IiBmdWVyIGVpbiBiZWxpZWJpZ2VzIFplaWNoZW4uIEVudHNwcmVjaGVuZCBsaWVmZXJ0CisgICAgICAgIGdldF9kaXIoIi9wZmFkLyoiKSBlaW4gYWxwaGFiZXRpc2NoIHNvcnRpZXJ0ZXMgRmVsZCBhbGxlciBEYXRlaWVuCisgICAgICAgIGltIFZlcnplaWNobmlzICIvcGZhZCIgb2RlciAoeyAiL3BmYWQvKiIgfSksIHdlbm4gZXMgZGllc2UgRGF0ZWkKKyAgICAgICAgZ2ViZW4gc29sbHRlLgorCisgICAgICAgIEdpYnQgbWFuIGRlbiBQZmFkIGVpbmVzIFZlcnplaWNobmlzc2VzIG1pdCBhYnNjaGxpZXNzZW5kZW0gIi8iIG9kZXIKKyAgICAgICAgIi8uIiBhbiAoei4gQi4gZ2V0X2RpcigiL3BmYWQvLiIpKSwgc28gZXJoYWVsdCBtYW4gZGVuIEluaGFsdCBkZXMKKyAgICAgICAgVmVyemVpY2huaXNzZXMuIFVtIEluZm9ybWF0aW9uZW4gdWViZXIgZGFzIFZlcnplaWNobmlzIHNlbGJlciB6dQorICAgICAgICBlcmhhbHRlbiwgbXVzcyBtYW4gZGVuIFBmYWQgZGVzIFZlcnplaWNobmlzc2VzIGFuZ2ViZW4uCisKKyAgICAgICAgRGFzIG9wdGlvbmFsZSB6d2VpdGUgQXJndW1lbnQgaXN0IGVpbmUgQml0bWFza2UsIG1pdCBkZXIgbWFuCisgICAgICAgIGFuZ2ViZW4ga2Fubiwgd2VsY2hlIEluZm9ybWF0aW9uZW4gbWFuIHVlYmVyIGRpZSBhbmdlZ2ViZW5lbgorICAgICAgICBEYXRlaWVuIGVyaGFsdGVuIG1vZWNodGUuCisKKyAgICAgICAgR0VURElSX0VNUFRZICAgICgweDAwKSAgZ2V0X2RpcigpIGxpZWZlcnQgZWluIGxlZXJlcyBGZWxkIChuaWNodAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aXJrbGljaCBzaW5udm9sbCkKKyAgICAgICAgR0VURElSX05BTUVTICAgICgweDAxKSAgbGllZmVydCBkaWUgYWxwaGFiZXRpc2NoIHNvcnRpZXJ0ZW4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRGF0ZWluYW1lbi4KKyAgICAgICAgR0VURElSX1NJWkVTICAgICgweDAyKSAgbGllZmVydCBkaWUgdW5zb3J0aWVydGVuIERhdGVpZ3JvZXNzZW4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGZpbGVfc2l6ZSgpKSwgVmVyemVpY2huaXNzZSBoYWJlbiBkaWUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRGF0ZWlncm9lc3NlIEZTSVpFX0RJUiAoLTIpLgorICAgICAgICBHRVRESVJfREFURVMgICAgKDB4MDQpICBsaWVmZXJ0IGRpZSB1bnNvcnRpZXJ0ZW4gWmVpdGVuIGRlciBqZXdlaWxzCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxldHp0ZW4gQWVuZGVydW5nIGluIFNla3VuZGVuIHNlaXQgZGVtCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDAxLjAxLjE5NzAuCisgICAgICAgIEdFVERJUl9BQ0NFU1MgICAoMHg0MCkgIGxpZWZlcnQgZGllIHVuc29ydGllcnRlbiBaZWl0ZW4gZGVzIGpld2VpbHMKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV0enRlbiBadWdyaWZmZXMgaW4gU2VrdW5kZW4gc2VpdCBkZW0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMDEuMDEuMTk3MC4KKyAgICAgICAgR0VURElSX01PREVTICAgICgweDgwKSAgbGllZmVydCBkaWUgRmlsZW1vZGUtTWFza2UKKworICAgICAgICBHRVRESVJfQUxMICAgICAgKDB4REYpICBMaWVmZXJ0IGFsbCBXZXJ0ZSB6dXJ1ZWNrLgorCisgICAgICAgIEdFVERJUl9QQVRIICAgICAoMHgxMCkgIERhdGVpbmFtZW4gd2VyZGVuIGFscyB2b2xsZSBQZmFkZSBnZWxpZWZlcnQuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChlaW4gZXYuIGZlaGxlbmRlcyBHRVRESVJfTkFNRVMgd2lyZCBhbHMKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdm9yaGFuZGVuIGFuZ2Vub21tZW4pLgorICAgICAgICBHRVRESVJfVU5TT1JURUQgKDB4MjApICBEYXMgRXJnZWJuaXMgd2lyZCBuaWNodCBzb3J0aWVydC4KKworICAgICAgICBXaWNodGlnOiBNYW4gbXVzcyBHRVRESVJfTkFNRVN8R0VURElSX1VOU09SVEVEIHZlcndlbmRlbiwgd2VubiBtYW4KKyAgICAgICAgZGllIEVpbnRyYWVnZSBpbiBkZXIgc2VsYmVuIFJlaWhlbmZvbGdlIHdpZSBiZWkgR0VURElSX1NJWkVTIHVuZAorICAgICAgICBHRVRESVJfREFURVMgaGFiZW4gbW9lY2h0ZS4KKworICAgICAgICBEaWUgRWludHJhZWdlIGluIGRlciBCaXRtYXNrZSBrb2VubmVuIG1pdGVpbmFuZGVyIGtvbWJpbmllcnQKKyAgICAgICAgd2VyZGVuLgorCitCRUlTUElFTEUKKyAgICAgICAgRnVua3Rpb24gICAgICAgICAgICAgICAgICAgICAgICAgUnVlY2tnYWJld2VydAorICAgICAgICAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgICAgICAgIGdldF9kaXIoIi9vYmovLiIpICAgICAgICAgICAgICAgIEFsbGUgRGF0ZWllbiwgZGllIGltIFZlcnplaWNobmlzCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC9vYmogZW50aGFsdGVuIHNpbmQuCisgICAgICAgIGdldF9kaXIoIi9vYmovIikgICAgICAgICAgICAgICAgIFdpZSBnZXRfZGlyKCIvb2JqLyIpLgorCisgICAgICAgIGdldF9kaXIoIi9vYmovZmFja2VsLmMiKSAgICAgICAgKHsgImZhY2tlbC5jIiB9KSwgc29mZXJuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC9vYmovZmFja2VsLmMgZXhpc3RpZXJ0IChhbHMKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRGF0ZWkgb2RlciBWZXJ6ZWljaG5pcyksIGFuc29uc3RlbgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoe30pLCBzb2Zlcm4gL29iaiBlaW4gVmVyemVpY2huaXMKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXN0LCBhbnNvbnN0ZW4gMC4KKworICAgICAgICBnZXRfZGlyKCIvb2JqLyoiKSAgICAgICAgICAgICAgICAoeyAiKiIgfSksIHNvZmVybiAqIGV4aXN0aWVydC4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQW5zb25zdGVuIHVuZCBub3JtYWxlcndlaXNlIGVpbgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhbHBoYWJldGlzY2ggc29ydGllcnRlcyBGZWxkIG1pdAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZW4gTmFtZW4gYWxsZXIgRGF0ZWllbiB1bmQKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVmVyemVpY2huaXNzZSBpbiAvb2JqLCBzb2Zlcm4gL29iagorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlaW4gVmVyemVpY2huaXMgaXN0LCBhbnNvbnN0ZW4gMC4KKworICAgICAgICBnZXRfZGlyKCIvb2JqL2ZhY2tlbC5jIiwgR0VURElSX1NJWkVTKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoeyA8R3JvZXNzZSB2b24gL29iai9mYWNrZWwuYz4gfSksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNvZmVybiAvb2JqL2ZhY2tlbC5jIGV4aXN0aWVydC4KKyAgICAgICAgZ2V0X2RpcigiL29iai8uIiwgR0VURElSX05BTUVTKSAgV2llIGdldF9kaXIoIi9vYmovLiIpLgorICAgICAgICBnZXRfZGlyKCIvb2JqLy4iLCBHRVRESVJfU0laRVMpICBFaW4gdW5zb3J0aWVydGVzIEZlbGQgbWl0IGRlbgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHcm9lc3NlbiBkZXIgRGF0ZWllbiBpbiAvb2JqLgorICAgICAgICBnZXRfZGlyKCIvb2JqLy4iLCBHRVRESVJfTkFNRVN8R0VURElSX1NJWkVTfEdFVERJUl9EQVRFUykKKyAgICAgICAgICAgIG9kZXIga3VlcnplcgorICAgICAgICBnZXRfZGlyKCIvb2JqLy4iLCBHRVRESVJfQUxMKSAgICBFaW4gZWluZGltZW5zaW9uYWxlcyB1bmQgbmFjaAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBOYW1lbiBzb3J0aWVydGVzIEZlbGQsIGRhcyBmdWVyCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGplZGUgRGF0ZWkgaW4gL29iaiBkZW4gTmFtZW4sIGRpZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHcm9lc3NlIHVuZCBkZW4gWmVpdHB1bmt0IGRlcgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXR6dGVuIEFlbmRlcnVuZyBlbnRoYWVsdCwgei5CLgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoeworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImF4dC5jIiAgICAsICA5MjcsIDk5NDUzOTU4MywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJmYWNrZWwuYyIsIDEyODMsIDk5ODE1MzkwMywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pLgorCisgICAgICAgIGdldF9kaXIoIi9vYmovZmFja2VsLmMiLCBHRVRESVJfTkFNRVN8R0VURElSX1BBVEgpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICh7ICIvb2JqL2ZhY2tlbC5jIiB9KSwgc29mZXJuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZvcmhhbmRlbi4KKyAgICAgICAgZ2V0X2RpcigiL29iai9mYWNrZWwuYyIsIEdFVERJUl9QQVRIKSAgS3VyemZvcm0gZGFmdWVyLgorCisgICAgICAgIHRyYW5zcG9zZV9hcnJheSgoeyBnZXRfZGlyKHN0ciwgR0VURElSX05BTUVTfEdFVERJUl9VTlNPUlRFRCkKKyAgICAgICAgICAgICAgICAgICAgICAgICAsIGdldF9kaXIoc3RyLCBHRVRESVJfU0laRVMpCisgICAgICAgICAgICAgICAgICAgICAgICAgLCBnZXRfZGlyKHN0ciwgR0VURElSX0RBVEVTKSB9KSk7CisgICAgICAgIExpZWZlcnQgZWluIHVuc29ydGllcnRlcyBGZWxkIG1pdCBGZWxkZXJuLCB2b24gZGVuZW4gZWluIGplZGVzCisgICAgICAgIE5hbWUsIEdyb2Vzc2UgdW5kIFplaXQgZWluZXIgRGF0ZWkgZW50aGFlbHQsIHouIEIuCisgICAgICAgICh7CisgICAgICAgICAgICAoeyAiZmFja2VsLmMiLCAxMjgzLCA5OTgxNTM5MDMgfSksCisgICAgICAgICAgICAoeyAiYXh0LmMiICAgICwgIDkyNywgOTk0NTM5NTgzIH0pLAorICAgICAgICAgICAgfSkuCitTSUVIRSBBVUNICisgICAgICAgIGNhdChFKSwgbWtkaXIoRSksIHJtZGlyKEUpLCBmaWxlX3NpemUoRSkKZGlmZiAtLWdpdCBhL2RvYy9lZnVuL2dldF9lcnJvcl9maWxlIGIvZG9jL2VmdW4vZ2V0X2Vycm9yX2ZpbGUKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNzk3ZTUyMwotLS0gL2Rldi9udWxsCisrKyBiL2RvYy9lZnVuL2dldF9lcnJvcl9maWxlCkBAIC0wLDAgKzEsMjEgQEAKK1NZTk9QU0lTCisgICAgICAgIG1peGVkICogZ2V0X2Vycm9yX2ZpbGUoc3RyaW5nIG5hbWUsIGludCBzZXRfZm9yZ2V0X2ZsYWcpCisKK0RFU0NSSVBUSU9OCisgICAgICAgIFJldHVybiBpbmZvcm1hdGlvbiBhYm91dCB0aGUgbGFzdCBlcnJvciB3aGljaCBvY2N1cmVkIGZvcgorICAgICAgICA8bmFtZT4gKHdoZXJlIDxuYW1lPiBpcyBhIHZhbGlkIG5hbWUgZnJvbSB0aGUgd2l6IGxpc3QpLgorCisgICAgICAgIFJlc3VsdCBpcyBhbiBhcnJheSBvZiBmb3VyIGVsZW1lbnRzOiB0aGUgZmlsZW5hbWUgb2YgdGhlCisgICAgICAgIHByb2dyYW0gd2hlcmUgdGhlIGVycm9yIG9jY3VyZWQsIHRoZSBsaW5lbnVtYmVyIGluIHRoZQorICAgICAgICBwcm9ncmFtLCB0aGUgZXJyb3IgbWVzc2FnZSAocnVudGltZSBlcnJvciBtZXNzYWdlcyB1c3VhbGx5CisgICAgICAgIHN0YXJ0IHdpdGggYSAnKicpLCBhbmQgYSBudW1lcmljYWwgZmxhZyAodGhlICdmb3JnZXQgZmxhZycpIGlmCisgICAgICAgIHRoZSBlcnJvciBpbmZvcm1hdGlvbiBoYXMgYmVlbiBxdWVyaWVkIGFscmVhZHkuCisKKyAgICAgICAgSWYgdGhlcmUgaXMgbm8gZXJyb3Igc3RvcmVkIGZvciB0aGUgZ2l2ZW4gPG5hbWU+LCAwIGlzCisgICAgICAgIHJldHVybmVkLgorCisgICAgICAgIElmIDxzZXRfZm9yZ2V0X2ZsYWc+IGlzIG5vbi16ZXJvLCB0aGUgJ2ZvcmdldCcgZmxhZyBpcyBzZXQKKyAgICAgICAgZm9yIHRoZSBlcnJvciBtZXNzYWdlIGFmdGVyIGl0IGhhcyBiZWVuIHJldHVybmVkLgorCitTRUUgQUxTTworICAgICAgICBlZChFKSwgdmFsaWRfcmVhZChNKQpkaWZmIC0tZ2l0IGEvZG9jL2VmdW4vZ2V0X2V2YWxfY29zdCBiL2RvYy9lZnVuL2dldF9ldmFsX2Nvc3QKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNTBiYzAxMgotLS0gL2Rldi9udWxsCisrKyBiL2RvYy9lZnVuL2dldF9ldmFsX2Nvc3QKQEAgLTAsMCArMSwzMyBAQAorRlVOS1RJT046CisgICAgICAgIGludCBnZXRfZXZhbF9jb3N0KHZvaWQpCisKK0JFU0NIUkVJQlVORzoKKyAgICAgICAgTGllZmVydCBkaWUgbm9jaCB2ZXJibGVpYmVuZGVuIEV2YWwgS29zdGVuLCBkaWUgZGFzIG1vbWVudGFuZQorICAgICAgICBLb21tYW5kbyBub2NoIHZlcmJyYXVjaGVuIGRhcmYuCisgICAgICAgIERlciBNYXhpbWFsd2VydCBiZXRyYWVndCB6dXIgWmVpdCAxLjUwMC4wMDAgVGlja3MgKFN0YW5kOiAyMDA3KS4gCisKKyAgICAgICAgU29sbHRlbiBkaWUgS29zdGVuIGJlaSBkZXIgQXVzZnVlaHJ1bmcgaXJnZW5kd28gZ3JvZXNzZXIgd2VyZGVuLAorICAgICAgICB3aXJkIGVpbiBGZWhsZXIgZGVyIEFydCAidG9vIGxvbmcgZXZhbCIgZXJ6ZXVndC4gRGllc2UgRnVua3Rpb24KKyAgICAgICAgZGllbnQgZGF6dSwgc29sY2hlIEZlaGxlciBnZW5hdSB6dSBsb2thbGlzaWVyZW4gYnp3LiAKKyAgICAgICAgaGVyYXVzenVmaW5kZW4sIGFuIHdlbGNoZW4gU3RlbGxlbiBpbSBDb2RlIHdpZXZpZWwgUmVjaGVuemVpdCAKKyAgICAgICAgdmVyYnJhdWNodCB3aXJkLgorICAgICAgICAKK0JFSVNQSUVMRQorICAgICAgICB2b2lkIGZvbygpCisgICAgICAgIHsKKyAgICAgICAgICBpbnQgcHJldiwgdXNlZCwgaTsKKyAgICAgICAgICAKKyAgICAgICAgICBwcmV2PWdldF9ldmFsX2Nvc3QoKTsgLy8gTWVya2VuLCB3YXMgYmlzIGhpZXJoaW4gdmVyYnJhdWNodCB3dXJkZSAKKyAgICAgICAgICBmb3IgKGk9MDtpPD0xMDAwO2krKykgLy8gRGFubiBrb21tdCBkZXIgenUgdGVzdGVuZGUgQ29kZSwgekIgZWluZQorICAgICAgICAgIHsgICAgICAgICAgICAgICAgICAgICAvLyBTY2hsZWlmZQorICAgICAgICAgICAgLi4uCisgICAgICAgICAgfQorICAgICAgICAgIHVzZWQ9cHJldi1nZXRfZXZhbF9jb3N0KCk7IC8vIEJlcmVjaG51bmcgZGVyIERpZmZlcmVuegorICAgICAgICAgIHByaW50ZigiRGllIFNjaGxlaWZlIHZlcmJyYXVjaHRlICVkIFRpY2tzLlxuIiwgdXNlZCk7CisgICAgICAgIH0KKworU0lFSEUgQVVDSDoKKyAgICAgICAgY2FsbGVyX3N0YWNrX2RlcHRoKEUpLCBydXNhZ2UoRSksIGNvbW1hbmQoRSksIHF1ZXJ5X2xpbWl0cyhFKQorICAgICAgICBLb25zdGFudGU6IF9fTUFYX0VWQUxfQ09TVF9fCisKKzQuQXVnIDIwMDcgR2xvaW5zb24KZGlmZiAtLWdpdCBhL2RvYy9lZnVuL2dldF9leHRyYV93aXppbmZvIGIvZG9jL2VmdW4vZ2V0X2V4dHJhX3dpemluZm8KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYzM1NmZiYQotLS0gL2Rldi9udWxsCisrKyBiL2RvYy9lZnVuL2dldF9leHRyYV93aXppbmZvCkBAIC0wLDAgKzEsMTkgQEAKK1NZTk9QU0lTCisgICAgICAgIG1peGVkIGdldF9leHRyYV93aXppbmZvIChvYmplY3Qgd2l6KQorICAgICAgICBtaXhlZCBnZXRfZXh0cmFfd2l6aW5mbyAoc3RyaW5nIHdpeikKKyAgICAgICAgbWl4ZWQgZ2V0X2V4dHJhX3dpemluZm8gKGludCAgICB3aXopCisKK0RFU0NSSVBUSU9OCisgICAgICAgIFJldHVybnMgdGhlICdleHRyYScgaW5mb3JtYXRpb24gdGhhdCB3YXMgc2V0IGZvciB0aGUgZ2l2ZW4KKyAgICAgICAgd2l6YXJkIDx3aXo+IGluIHRoZSB3aXpsaXN0LgorCisgICAgICAgIElmIDx3aXo+IGlzIGFuIG9iamVjdCwgdGhlIGVudHJ5IG9mIGl0cyBjcmVhdG9yICh1aWQpIGlzIHVzZWQuCisgICAgICAgIElmIDx3aXo+IGlzIGEgc3RyaW5nIChhIGNyZWF0b3IgYWthIHVpZCksIGl0IG5hbWVzIHRoZSBlbnRyeQorICAgICAgICB0byB1c2UuCisgICAgICAgIElmIDx3aXo+IGlzIHRoZSBudW1iZXIgMCwgdGhlIGRhdGEgaXMgZ2V0IGZyb20gdGhlIGRlZmF1bHQgd2l6bGlzdAorICAgICAgICBlbnRyeS4KKworICAgICAgICBUaGUgZnVuY3Rpb24gY2F1c2VzIGEgcHJpdmlsZWdlIHZpb2xhdGlvbi4KKworU0VFIEFMU08KKyAgICAgICAgd2l6bGlzdF9pbmZvKEUpLCBzZXRfZXh0cmFfd2l6aW5mbyhFKQpkaWZmIC0tZ2l0IGEvZG9jL2VmdW4vZ2V0X3R5cGVfaW5mbyBiL2RvYy9lZnVuL2dldF90eXBlX2luZm8KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uODFiMWY4YgotLS0gL2Rldi9udWxsCisrKyBiL2RvYy9lZnVuL2dldF90eXBlX2luZm8KQEAgLTAsMCArMSw1NyBAQAorU1lOT1BTSVMKKyAgICAgICAgbWl4ZWQgZ2V0X3R5cGVfaW5mbyhtaXhlZCBhcmcsIGludCBmbGFnKTsKKworQkVTQ0hSRUlCVU5HCisgICAgICAgIExpZWZlcnQgSW5mb3JtYXRpb25lbiB1YmVyIGRlbiBUeXAgdm9uIDxhcmc+LCB3aWUgdm9uIDxmbGFnPgorICAgICAgICBhbmdlZ2ViZW4uCisKKyAgICAgICAgV2VubiA8ZmxhZz4ga2VpbmUgWmFobCBpc3QsIGxpZWZlcnQgZ2V0X3R5cGVfaW5mbygpIGVpbiBBcnJheSwgZGVzc2VuCisgICAgICAgIGVyc3RlcyBFbGVtZW50IGVpbiBJbnRlZ2VyIGlzdCwgZGVyIGRlbiBEYXRlbnR5cCBiZXplaWNobmV0LCB3aWUgaW4KKyAgICAgICAgPGxwY3R5cGVzLmg+IGRlZmluaWVydC4gRGVyIHp3ZWl0ZSBFaW50cmFnIGthbm4genVzYWV0emxpY2hlCisgICAgICAgIEluZm9ybWF0aW9uZW4genUgPGFyZz4gZW50aGFsdGVuLgorCisgICAgICAgIElzdCA8ZmxhZz4gMCwgd2lyZCBudXIgZGFzIGVyc3RlIEVsZW1lbnQgKGQuaC4gZGVyIERhdGVudHlwKSBnZWxpZWZlcnQuCisgICAgICAgIElzdCA8ZmxhZz4gMSwgd2lyZCBudXIgZGFzIHp3ZWl0ZSBFbGVtZW50IGdlbGllZmVydC4KKworICAgICAgICBXZW5uIDxhcmc+IGVpbmUgQ2xvc3VyZSBlbnRoYWVsdCwgc28ga2FubiBnZXRfdHlwZV9pbmZvKCkgZGFzIE9iamVrdAorICAgICAgICBkZXIgQ2xvc3VyZSBsaWVmZXJuLCB3ZW5uIGZ1ZXIgPGZsYWc+IDIgZ2VzZXR6dCBpc3QuIChGdWVyICdhbGllbgorICAgICAgICBsZnVuIGNsb3N1cmVzJyBpc3QgZGFzIGRhcyBPYmpla3QsIGluIGRlbSBkaWUgQ2xvc3VyZSBkZWZpbmllcnQgaXN0LAorICAgICAgICBuaWNodCBkYXMgT2JqZWt0LCBhbiBkYXMgZGllIENsb3N1cmUgZ2VidW5kZW4gaXN0LikKKworICAgICAgICBXZW5uIDxhcmc+IGVpbmUgTEZ1bi9Db250ZXh0LUNsb3N1cmUgZW50aGFlbHQsIHNvIGthbm4gZ2V0X3R5cGVfaW5mbygpCisgICAgICAgIGRlbiBOYW1lbiBkZXMgZGVmaW5pZXJlbmRlbiBQcm9ncmFtbWVzIGxpZWZlcm4sIHdlbm4gZnVlciA8ZmxhZz4gMworICAgICAgICBnZXNldHp0IGlzdC4gRnVyIGFuZGVyZSBDbG9zdXJlcyB3aXJkIDAgenVydWVja2dlZ2ViZW4uCisKKyAgICAgICAgV2VubiA8YXJnPiBlaW5lIExGdW4vQ29udGV4dC1DbG9zdXJlIGVudGhhZWx0LCBzbyBrYW5uIGdldF90eXBlX2luZm8oKQorICAgICAgICBkZW4gTmFtZW4gZGVyIEZ1bmt0aW9uIGxpZWZlcm4sIHdlbm4gZnVlciA8ZmxhZz4gNAorICAgICAgICBnZXNldHp0IGlzdC4gRnVyIGFuZGVyZSBDbG9zdXJlcyB3aXJkIDAgenVydWVja2dlZ2ViZW4uCisKKyAgICAgICAgRnVlciBqZWRlbiBhbmRlcmVuIFdlcnQgZnVlciA8ZmxhZz4gbGllZmVydCBkaWUgRnVua3Rpb24gLTEuCisKKyAgICAgICAgRGllIHp1c2FldHpsaWNoZW4gSW5mb3JtYXRpb25lbiAoYWxzbyBkZXIgendlaXRlIEVpbnRyYWcgZGVzIEFycmF5cykKKyAgICAgICAgYmVpbmhhbHRlbjoKKyAgICAgICAgICAtIGZ1ZXIgTWFwcGluZ3MgZGVyZW4gQnJlaXRlLCBhbHNvIGRpZSBBbnphaGwgRGF0ZW53ZXJ0ZSBwcm8gS2V5LgorICAgICAgICAgIC0gZnVlciBTeW1ib2xlIHVuZCBnZXF1b3RldGUgQXJyYXlzIGRpZSBBbnphaGwgUXVvdGVzLgorICAgICAgICAgIC0gZnVlciBDbG9zdXJlcyBkZW4gKGludGVybmVuKSBUeXAgZGVyIENsb3N1cmUuCisgICAgICAgICAgLSBmdWVyIGdlbWVpbnNhbSB2ZXJ3ZW5kZXRlIFN0cmluZ3MgMCwgdW5nbGVpY2ggMCBmdWVyIGFuZGVyZSBTdHJpbmdzCisgICAgICAgICAgLSBmdWVyIHN0cnVjdHMgZGVyIGVpbmRldXRpZ2UgSWRlbnRpZml6aWVydW5nc3N0cmluZworICAgICAgICAgIC0gLTEgZnVlciBhbGxlIGFuZGVyZW4gRGF0ZW50eXBlbgorCitCVUdTCisgICAgICAgIERpZXNlIEZ1bmt0aW9uIHVudGVybGllZ3QgaGFldWZpZ2VuIFZlcmFlbmRlcnVuZ2VuIGltIFp1ZyBkZXIKKyAgICAgICAgVHJlaWJlcmVudHdpY2tsdW5nLgorCitBRU5ERVJVTkdFTgorICAgICAgICBFaW5nZWZ1ZWhydCBpbiAzLjJAMTI3CisgICAgICAgIEZsYWd3ZXJ0IDIgZWluZ2VmdWVocnQgaW4gMy4yLjFAODQKKyAgICAgICAgWnVzYXR6aW5mb3JtYXRpb25lbiB6dSBTdHJpbmdzIGVpbmdlZnVlaHJ0IGluIDMuMi43CisgICAgICAgIEJpcyB1bmQgbWl0IDMuMi43IGxpZWZlcnRlIGdldF90eXBlX2luZm8oY2xvc3VyZSwgMikga2VpbmUgT2JqZWt0ZQorICAgICAgICAgICAgdm9uIExhbWRhIENsb3N1cmVzIHVuZCBnZWJ1bmRlbmVuIExhbWJkYSBDbG9zdXJlcy4KKyAgICAgICAgQmlzIHVuZCBtaXQgMy4yLjcgbGllZmVydGUgZ2V0X3R5cGVfaW5mbyhjbG9zdXJlLCAyKSBrZWluZSBPYmpla3RlIHZvbgorICAgICAgICAgICAgRWZ1bi0sIFNpbXVsLUVmdW4tIG9kZXIgT3BlcmF0b3ItQ2xvc3VyZXMuCisgICAgICAgIExETXVkIDMuMy4yNzYgZnVlZ3RlIGRpZSB6dXNhZXR6bGljaGUgSW5mb3JtYXRpb24gZnVlciBzdHJ1Y3RzIGhpbnp1LgorICAgICAgICBMRE11ZCAzLjMuNTQ4IGZ1ZWd0ZSBGbGFnd2VydCAnMycgaGluenUuCisgICAgICAgIExETXVkIDMuMy43MDggZnVlZ3RlIEZsYWd3ZXJ0ICc0JyBoaW56dS4KKworU0lFSEUgQVVDSAorICAgICAgICBkZWJ1Z19pbmZvKEUpLCB0eXBlb2YoRSksIHRvX29iamVjdChFKQpkaWZmIC0tZ2l0IGEvZG9jL2VmdW4vZ2V0ZXVpZCBiL2RvYy9lZnVuL2dldGV1aWQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNzVjYzNkMQotLS0gL2Rldi9udWxsCisrKyBiL2RvYy9lZnVuL2dldGV1aWQKQEAgLTAsMCArMSwxMiBAQAorU1lOT1BTSVMKKyAgICAgICAgc3RyaW5nIGdldGV1aWQob2JqZWN0IG9iKTsKKworQkVTQ0hSRUlCVU5HCisgICAgICAgIExpZWZlcnQgZGllIGVmZmVrdGl2ZSBVc2VyLUlEIGRlcyBPYmpla3RzIDxvYmo+IChub3JtYWxlcndlaXNlIGVpbgorICAgICAgICBNYWdpZXIgb2RlciBlaW5lIERvbWFpbikuIE9iamVrdGUsIGRpZSBkdXJjaCA8b2JqPiBnZWNsb25ldCB3ZXJkZW4sCisgICAgICAgIGVyaGFsdGVuIGRpZXNlIFVzZXItSUQuIERpZSBlZmZla3RpdmUgVXNlci1JRCB3aXJkIGF1Y2ggZnVlcgorICAgICAgICBadWdyaWZmc2NoZWNrcyB2ZXJ3ZW5kZXQuIFdlbm4gPG9iaj4gbmljaHQgYW5nZWdlYmVuIHdpcmQsIHdpcmQKKyAgICAgICAgc3RhbmRhcmRtYWVzc2lnIHRoaXNfb2JqZWN0KCkgdmVyd2VuZGV0LgorCitTSUVIRSBBVUNICisgICAgICAgIHNldGV1aWQoRSksIGdldHVpZChFKSwgZ2V0dXVpZChFKSwgZXhwb3J0X3VpZChFKQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2RvYy9lZnVuL2dldHVpZCBiL2RvYy9lZnVuL2dldHVpZApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5iZjM4ZmU4Ci0tLSAvZGV2L251bGwKKysrIGIvZG9jL2VmdW4vZ2V0dWlkCkBAIC0wLDAgKzEsMTcgQEAKK1NZTk9QU0lTCisgICAgICAgIHN0cmluZyBnZXR1aWQob2JqZWN0IG9iKTsKKworQkVTQ0hSRUlCVU5HCisgICAgICAgIFVzZXItSURzIHdlcmRlbiBpbSBDb21wYXQgTW9kdXMgbmljaHQgdmVyd2VuZGV0LgorCisgICAgICAgIERpZSBGdW5rdGlvbiBsaWVmZXJ0IGRpZSBVSUQgZGVzIE9iamVrdHMsIGFsc28gZGVuIE5hbWVuIGRlcyBNYWdpZXJzCisgICAgICAgIG9kZXIgZGVyIERvbWFpbiBvZGVyIEdydXBwZSwgZGllIGZ1ZXIgZGFzIE9iamVrdCB2ZXJhbnR3b3J0bGljaCBpc3QuCisgICAgICAgIERlciBOYW1lIGVudHNwcmljaHQgZGVtIE5hbWVuLCBkZXIgaW4gZGVyIFdpemxpc3QgdmVyd2VuZGV0IHdpcmQuCisgICAgICAgIFdpcmQgPG9iPiBuaWNodCBhbmdlZ2ViZW4sIHdpcmQgc3RhbmRhcmRtYWVzc2lnIHRoaXNfb2JqZWN0KCkKKyAgICAgICAgZ2Vub21tZW4uCisKK0FFTkRFUlVOR0VOCisgICAgICAgIFNlaXQgMy4yLjFANDcgaXN0IGRpZXNlIEVmdW4gZWluIEFsaWFzIGZ1ZXIgY3JlYXRvcigpCisKK1NJRUhFIEFVQ0gKKyAgICAgICAgc2V0ZXVpZChFKSwgZ2V0ZXVpZChFKSwgZXhwb3J0X3VpZChFKSwgY3JlYXRvcihFKSwgZ2V0dXVpZChFKQpkaWZmIC0tZ2l0IGEvZG9jL2VmdW4vZ210aW1lIGIvZG9jL2VmdW4vZ210aW1lCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmFiMTJlZmYKLS0tIC9kZXYvbnVsbAorKysgYi9kb2MvZWZ1bi9nbXRpbWUKQEAgLTAsMCArMSwzOCBAQAorU1lOT1BTSVMKKyAgICAgICAgI2luY2x1ZGUgPHN5cy90aW1lLmg+CisKKyAgICAgICAgaW50ICpnbXRpbWUoaW50IGNsb2NrKTsKKyAgICAgICAgaW50ICpnbXRpbWUoaW50ICp1Y2xvY2spOworCitCRVNDSFJFSUJVTkcKKyAgICAgICAgSW50ZXJwcmV0aWVydCA8Y2xvY2s+IGFscyBBbnphaGwgU2VrdW5kZW4gc2VpdCBkZW0gMDEuIEphbnVhciAxOTcwLAorICAgICAgICAwMDowMDowMCBVaHIgdW5kIGdpYnQgZGllIFplaXQgaW4gVVRDIGluIGVpbmVyIHNjaG9lbmVuIFN0cnVrdHVyCisgICAgICAgIGF1cy4gV2lyZCA8Y2xvY2s+IG5pY2h0IGFuZ2VnZWJlbiwgd2lyZCBzdGF0dGRlc3NlbiB0aW1lKCkgdmVyd2VuZGV0LgorCisgICAgICAgIEFsdGVybmF0aXYga2FubiBhdWNoIGVpbiBBcnJheSBtaXQgendlaSBFbGVtZW50ZW4gYW5nZWdlYmVuIHdlcmRlbiwKKyAgICAgICAgd2llIGVzIHZvbiB1Y2xvY2soKSBnZWxpZWZlcnQgd2lyZDogZGFzIGVyc3RlIEVsZW1lbnQgd2lyZAorICAgICAgICBpbnRlcnByZXRpZXJ0IHdpZSA8Y2xvY2s+LCBkYXMgendlaXRlIEVsZW1lbnQgYmV6ZWljaG5ldCBkaWUKKyAgICAgICAgTWlrcm9zZWt1bmRlbiBpbiBkZXIgYWt0dWVsbGVuIFNla3VuZGUuIERpZXNlcyB6d2VpdGUgRWxlbWVudCB3aXJkCisgICAgICAgIGlnbm9yaWVydC4KKworICAgICAgICBEYXMgUmVzdWx0YXQgdm9uIGdtdGltZSgpIGlzdCBlaW4gQXJyYXksIGRhcyBmb2xnZW5kZSBXZXJ0ZSBiZWluaGFsdGV0OgorICAgICAgICAgICAgaW50IFRNX1NFQyAgICgwKSA6IFNla3VuZGVuICgwLi41OSkKKyAgICAgICAgICAgIGludCBUTV9NSU4gICAoMSkgOiBNaW51dGVuICgwLi41OSkKKyAgICAgICAgICAgIGludCBUTV9IT1VSICAoMikgOiBTdHVuZGVuICgwLi4yMykKKyAgICAgICAgICAgIGludCBUTV9NREFZICAoMykgOiBUYWcgaW0gTW9uYXQgKDEuLjMxKQorICAgICAgICAgICAgaW50IFRNX01PTiAgICg0KSA6IE1vbmF0IGltIEphaHIgKDAuLjExKQorICAgICAgICAgICAgaW50IFRNX1lFQVIgICg1KSA6IEphaHIgKHouQi4gIDIwMDEpCisgICAgICAgICAgICBpbnQgVE1fV0RBWSAgKDYpIDogV29jaGVudGFnIChTdW5kYXkgPSAwKQorICAgICAgICAgICAgaW50IFRNX1lEQVkgICg3KSA6IFRhZyBpbSBKYWhyICgwLi4zNjUpCisgICAgICAgICAgICBpbnQgVE1fSVNEU1QgKDgpIDogVFJVRTogRGF5bGlnaHQgc2F2aW5nIHRpbWUKKworQkVJU1BJRUwKKyAgICAgICAgcHJpbnRmKCJIZXV0ZSBpc3QgJXNcbiIsICh7ICJTb25udGFnIiwgIk1vbnRhZyIsICJEaWVuc3RhZyIsCisgICAgICAgICAgICAiTWl0dHdvY2giLCAgICAgICAgIkRvbm5lcnN0YWciLCAiRnJlaXRhZyIsICJTYW1zdGFnIn0pCisgICAgICAgICAgICBbZ210aW1lKClbVE1fV0RBWV1dKTsKKworQUVOREVSVU5HRU4KKyAgICAgICAgRWluZ2VmdWVocnQgaW4gTERNdWQgMy4yLjkuCisKK1NJRUhFIEFVQ0gKKyAgICBjdGltZShFKSwgbG9jYWx0aW1lKEUpLCB0aW1lKEUpLCB1dGltZShFKQpkaWZmIC0tZ2l0IGEvZG9jL2VmdW4vaGFzaCBiL2RvYy9lZnVuL2hhc2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZTM0NTdjMQotLS0gL2Rldi9udWxsCisrKyBiL2RvYy9lZnVuL2hhc2gKQEAgLTAsMCArMSwzNiBAQAorU1lOT1BTSVMKKyAgICAgICAgI2luY2x1ZGUgPHN5cy90bHMuaD4KKworICAgICAgICBzdHJpbmcgaGFzaChpbnQgbWV0aG9kLCBzdHJpbmcgYXJnIFssIGludCBpdGVyYXRpb25zIF0gKQorICAgICAgICBzdHJpbmcgaGFzaChpbnQgbWV0aG9kLCBpbnQgKiAgYXJnIFssIGludCBpdGVyYXRpb25zIF0gKQorCitCRVNDSFJFSUJVTkcKKyAgICAgICAgQmVyZWNobmUgZGVuIEhhc2ggPG1ldGhvZD4gdm9tIEFyZ3VtZW50IDxhcmc+LiBEZXIgSGFzaCB3aXJkCisgICAgICAgIG1pdCA8aXRlcmF0aW9ucz4gV2llZGVyaG9sdW5nZW4gYmVyZWNobmV0LCB3aXJkIGRlciBXZXJ0IHdlZ2dlbGFzc2VuLAorICAgICAgICB3aXJkIGVpbmUgV2llZGVyaG9sdW5nIHZlcndlbmRldC4KKworICAgICAgICA8bWV0aG9kPiBpc3QgZWluZSBkZXIgVExTX0hBU0hfLUtvbnN0YW50ZW4gaW4gdGxzLmg7IG5pY2h0IGplZGUKKyAgICAgICAgYmVzY2hyaWViZW5lIE1ldGhvZGUgaXN0IGluIGVpbmVtIGdlZ2ViZW5lbiBEcml2ZXIgdm9yaGFuZGVuOgorCisgICAgICAgICAgVExTX0hBU0hfU0hBMSAgICAgICgxKQorICAgICAgICAgIFRMU19IQVNIX1NIQTIyNCAgICAoMikKKyAgICAgICAgICBUTFNfSEFTSF9TSEEyNTYgICAgKDMpCisgICAgICAgICAgVExTX0hBU0hfU0hBMzg0ICAgICg0KQorICAgICAgICAgIFRMU19IQVNIX1NIQTUxMiAgICAoNSkKKyAgICAgICAgICBUTFNfSEFTSF9NRDUgICAgICAgKDYpCisgICAgICAgICAgVExTX0hBU0hfUklQRU1EMTYwICg3KQorCisgICAgICAgIERpZXNlIEZ1bmt0aW9uIGlzdCBudXIgdmVyZnVlZ2JhciB3ZW5uIGRlciBEcml2ZXIgbWl0IE9wZW5TU0wKKyAgICAgICAgY29tcGlsaWVydCB3dXJkZS4KKworQkVJU1BJRUxFCisgICAgICAgIHN0cmluZyBzOworCisgICAgICAgIHMgPSBoYXNoKFRMU19IQVNIX1NIQTEsICJIZWxsbyIsIDIpOworICAgICAgICBzID0gaGFzaChUTFNfSEFTSF9TSEExLCAoeyAnSCcsICdlJywgJ2wnLCAnbCcsICdvJyB9KSApCisKK0dFU0NISUNIVEUKKyAgICAgICAgRWluZ2VmdWVocnQgaW4gTERNdWQgMy4zLjcxNAorCitTSUVIRSBBVUNICisgICAgICAgIGNyeXB0KEUpLCBtZDUoRSksIG1kNV9jcnlwdChFKSwgc2hhMShFKSwgaG1hYyhFKQpkaWZmIC0tZ2l0IGEvZG9jL2VmdW4vaGVhcnRfYmVhdF9pbmZvIGIvZG9jL2VmdW4vaGVhcnRfYmVhdF9pbmZvCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmRlZThkNTIKLS0tIC9kZXYvbnVsbAorKysgYi9kb2MvZWZ1bi9oZWFydF9iZWF0X2luZm8KQEAgLTAsMCArMSw5IEBACitTWU5PUFNJUworICAgICAgICBvYmplY3QgKmhlYXJ0X2JlYXRfaW5mbygpCisKK0JFU0NIUkVJQlVORworICAgICAgICBSZXN1bHRhdCBpc3QgZWluIEFycmF5IG1pdCBhbGxlbiBPYmpla3RlbiwgZGllIGVpbmVuIGFrdGl2ZW4KKyAgICAgICAgaGVhcnRfYmVhdCgpIGhhYmVuLgorCitTSUVIRSBBVUNICisgICAgICAgIHNldF9oZWFydF9iZWF0KEUpLCBoZWFydF9iZWF0KEEpLCBjYWxsX291dF9pbmZvKEUpCmRpZmYgLS1naXQgYS9kb2MvZWZ1bi9obWFjIGIvZG9jL2VmdW4vaG1hYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5kNDFkNmQ1Ci0tLSAvZGV2L251bGwKKysrIGIvZG9jL2VmdW4vaG1hYwpAQCAtMCwwICsxLDM1IEBACitTWU5PUFNJUworICAgICAgICAjaW5jbHVkZSA8c3lzL3Rscy5oPgorCisgICAgICAgIHN0cmluZyBobWFjKGludCBtZXRob2QsIHN0cmluZyBrZXksIHN0cmluZyBhcmcgKQorICAgICAgICBzdHJpbmcgaG1hYyhpbnQgbWV0aG9kLCBzdHJpbmcga2V5LCBpbnQgKiAgYXJnICkKKworQkVTQ0hSRUlCVU5HCisgICAgICAgIEJlcmVjaG5ldCBkZW4gSGFzaGVkIE1lc3NhZ2UgQXV0aGVuaWNhdGlvbiBDb2RlIGZ1ZXIgPGFyZz4KKyAgICAgICAgbmFjaCBNZXRob2RlIDxtZXRob2Q+IHVuZCBmdWVyIGRhcyBQYXNzd29yZCA8a2V5Pi4KKworICAgICAgICA8bWV0aG9kPiBpc3QgZWluZSBkZXIgVExTX0hBU0hfLUtvbnN0YW50ZW4gaW4gdGxzLmg7IG5pY2h0IGplZGUKKyAgICAgICAgYmVzY2hyaWViZW5lIE1ldGhvZGUgaXN0IGluIGVpbmVtIGdlZ2ViZW5lbiBEcml2ZXIgdm9yaGFuZGVuOgorCisgICAgICAgICAgVExTX0hBU0hfU0hBMSAgICAgICgxKQorICAgICAgICAgIFRMU19IQVNIX1NIQTIyNCAgICAoMikKKyAgICAgICAgICBUTFNfSEFTSF9TSEEyNTYgICAgKDMpCisgICAgICAgICAgVExTX0hBU0hfU0hBMzg0ICAgICg0KQorICAgICAgICAgIFRMU19IQVNIX1NIQTUxMiAgICAoNSkKKyAgICAgICAgICBUTFNfSEFTSF9NRDUgICAgICAgKDYpCisgICAgICAgICAgVExTX0hBU0hfUklQRU1EMTYwICg3KQorCisgICAgICAgIERpZXNlIEZ1bmt0aW9uIGlzdCBudXIgdmVyZnVlZ2JhciB3ZW5uIGRlciBEcml2ZXIgbWl0IE9wZW5TU0wKKyAgICAgICAgY29tcGlsaWVydCB3dXJkZS4KKworQkVJU1BJRUxFCisgICAgICAgIHN0cmluZyBzOworCisgICAgICAgIHMgPSBobWFjKFRMU19IQVNIX1NIQTEsICJzZWNyZXQiLCAiSGVsbG8iKTsKKyAgICAgICAgcyA9IGhtYWMoVExTX0hBU0hfU0hBMSwgInNlY3JldCIsICh7ICdIJywgJ2UnLCAnbCcsICdsJywgJ28nIH0pICkKKworR0VTQ0hJQ0hURQorICAgICAgICBFaW5nZWZ1ZWhydCBpbiBMRE11ZCAzLjMuNzE0CisKK1NJRUhFIEFVQ0gKKyAgICAgICAgY3J5cHQoRSksIG1kNShFKSwgbWQ1X2NyeXB0KEUpLCBzaGExKEUpLCBobWFjKEUpCmRpZmYgLS1naXQgYS9kb2MvZWZ1bi9pZG5hX3N0cmluZ3ByZXAgYi9kb2MvZWZ1bi9pZG5hX3N0cmluZ3ByZXAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNzAwMTE0MAotLS0gL2Rldi9udWxsCisrKyBiL2RvYy9lZnVuL2lkbmFfc3RyaW5ncHJlcApAQCAtMCwwICsxLDIyIEBACitPUFRJT05BTAorU1lOT1BTSVMKKyAgICAgICAgI2luY2x1ZGUgPHN5cy9pZG4uaD4KKworICAgICAgICBzdHJpbmcgaWRuYV9zdHJpbmdwcmVwIChzdHJpbmcgc3RyLCBpbnQgcHJvZmlsZSwgaW50IGZsYWdzID0gMCkKKworQkVTQ0hSRUlCVU5HCisgICAgICAgIFByZXBhcmllcmUgZGVuIFVURi04IFN0cmluZyA8c3RyPiBwYXNzZW5kIHp1bSBQcm9maWwgPHByb2ZpbGU+CisgICAgICAgIChzaWVoZSBhdWNoIGxpYmlkbiBzdHJpbmdwcmVwKDMpKS4KKworICAgICAgICA8cHJvZmlsZT4gdW5kIDxmbGFncz4gc2luZCBkZWZpbmllcnQgaW4gaWRuLmggLgorCisgICAgICAgIFNvbGx0ZSBlaW4gRmVobGVyIGF1ZnRyZXRlbiwgd2lyZCBlaW5lIEV4Y2VwdGlvbiBnZXdvcmZlbi4KKworICAgICAgICBEaWVzZSBFZnVuIGlzIG51ciB2ZXJmdWVnYmFyIGF1ZiBTeXN0ZW1lbiBtaXQgbGliaWRuCisgICAgICAgIGluc3RhbGxpZXJ0IC0gaW4gZGllc2VtIEZhbGwgaXN0IGRhcyBNYWtybyBfX0lETkFfXyBkZWZpbmllcnQuCisKK0dFU0NISUNIVEUKKyAgICAgICAgSW50cm9kdWNlZCBpbiBMRE11ZCAzLjMuNzEzLgorCitTSUVIRSBBVUNICisgICAgICAgIGNvbnZlcnRfY2hhcnNldChFKSwgaWRuYV90b19hc2NpaShFKSwgaWRuYV90b191bmljb2RlKEUpCmRpZmYgLS1naXQgYS9kb2MvZWZ1bi9pZG5hX3RvX2FzY2lpIGIvZG9jL2VmdW4vaWRuYV90b19hc2NpaQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi42M2M2NmI5Ci0tLSAvZGV2L251bGwKKysrIGIvZG9jL2VmdW4vaWRuYV90b19hc2NpaQpAQCAtMCwwICsxLDIwIEBACitPUFRJT05BTAorU1lOT1BTSVMKKyAgICAgICAgI2luY2x1ZGUgPHN5cy9pZG4uaD4KKworICAgICAgICBzdHJpbmcgaWRuYV90b19hc2NpaSAoc3RyaW5nIG5hbWUpCisKK0JFU0NIUkVJQlVORworICAgICAgICBXYW5kbGUgZGVuIFN0cmluZyA8bmFtZT4gdm9uIFVURi04IHRvIElETkEgRGFyc3RlbGx1bmcgKDh6CisgICAgICAgIHB1bnljb2RlKS4KKworICAgICAgICBTb2xsdGUgZWluIEZlaGxlciBhdWZ0cmV0ZW4sIHdpcmQgZWluZSBFeGNlcHRpb24gZ2V3b3JmZW4uCisKKyAgICAgICAgRGllc2UgRWZ1biBpcyBudXIgdmVyZnVlZ2JhciBhdWYgU3lzdGVtZW4gbWl0IGxpYmlkbgorICAgICAgICBpbnN0YWxsaWVydCAtIGluIGRpZXNlbSBGYWxsIGlzdCBkYXMgTWFrcm8gX19JRE5BX18gZGVmaW5pZXJ0LgorCitHRVNDSElDSFRFCisgICAgICAgIEludHJvZHVjZWQgaW4gTERNdWQgMy4zLjcxMy4KKworU0lFSEUgQVVDSAorICAgICAgICBjb252ZXJ0X2NoYXJzZXQoRSksIGlkbmFfdG9fdW5pY29kZShFKSwgaWRuYV9zdHJpbmdwcmVwKEUpCmRpZmYgLS1naXQgYS9kb2MvZWZ1bi9pZG5hX3RvX3VuaWNvZGUgYi9kb2MvZWZ1bi9pZG5hX3RvX3VuaWNvZGUKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMTgzZGNlOAotLS0gL2Rldi9udWxsCisrKyBiL2RvYy9lZnVuL2lkbmFfdG9fdW5pY29kZQpAQCAtMCwwICsxLDIwIEBACitPUFRJT05BTAorU1lOT1BTSVMKKyAgICAgICAgI2luY2x1ZGUgPHN5cy9pZG4uaD4KKworICAgICAgICBzdHJpbmcgaWRuYV90b191bmljb2RlIChzdHJpbmcgbmFtZSkKKworQkVTQ0hSRUlCVU5HCisgICAgICAgIFdhbmRsZSBkZW4gU3RyaW5nIDxuYW1lPiB2b24gSUROQSBEYXJzdGVsbHVuZyAoOHogcHVueWNvZGUpCisgICAgICAgIG5hY2ggVVRGLTguCisKKyAgICAgICAgU29sbHRlIGVpbiBGZWhsZXIgYXVmdHJldGVuLCB3aXJkIGVpbmUgRXhjZXB0aW9uIGdld29yZmVuLgorCisgICAgICAgIERpZXNlIEVmdW4gaXMgbnVyIHZlcmZ1ZWdiYXIgYXVmIFN5c3RlbWVuIG1pdCBsaWJpZG4KKyAgICAgICAgaW5zdGFsbGllcnQgLSBpbiBkaWVzZW0gRmFsbCBpc3QgZGFzIE1ha3JvIF9fSUROQV9fIGRlZmluaWVydC4KKworR0VTQ0hJQ0hURQorICAgICAgICBJbnRyb2R1Y2VkIGluIExETXVkIDMuMy43MTMuCisKK1NJRUhFIEFVQ0gKKyAgICAgICAgY29udmVydF9jaGFyc2V0KEUpLCBpZG5hX3RvX2FzY2lpKEUpLCBpZG5hX3N0cmluZ3ByZXAoRSkKZGlmZiAtLWdpdCBhL2RvYy9lZnVuL2ltcGxvZGUgYi9kb2MvZWZ1bi9pbXBsb2RlCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjg1YTcyM2IKLS0tIC9kZXYvbnVsbAorKysgYi9kb2MvZWZ1bi9pbXBsb2RlCkBAIC0wLDAgKzEsMjUgQEAKK1NZTk9QU0lTCisgICAgICAgIHN0cmluZyBpbXBsb2RlKG1peGVkICphcnIsIHN0cmluZyBkZWwpCisKK0JFU0NIUkVJQlVORworCVNldHp0IGFsbGUgWmVpY2hlbmtldHRlbiAoU3RyaW5ncykgYXVzIGRlbSBGZWxkIChBcnJheSkgYXJyIHp1CisgICAgICAgIGVpbmVyIFplaWNoZW5rZXR0ZSB6dXNhbW1lbiB1bmQgZnVlZ3QgZGFiZWkgZGllIFplaWNoZW5rZXR0ZSBkZWwKKyAgICAgICAgendpc2NoZW4gamUgendlaSBFbGVtZW50ZW4gZWluLiBFbGVtZW50ZSBhdXMgZGVtIEZlbGQgYXJyLCB3ZWxjaGUKKyAgICAgICAga2VpbmUgWmVpY2hlbmtldHRlbiBzaW5kLCB3ZXJkZW4gaWdub3JpZXJ0LgorCitCRUlTUElFTEUKKwlGdW5rdGlvbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBSdWVja2dhYmV3ZXJ0CisgICAgICAgIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKwlpbXBsb2RlKCh7ICJmb28iLCAiYmFyIiwgIiIgfSksICIqIikgICAgICAgICAgICAiZm9vKmJhcioiCisJaW1wbG9kZSgoeyAiYSIsIDIsIHRoaXNfb2JqZWN0KCksICJjIiB9KSwgImIiKSAgImFiYyIKKworCUthbm4genVzYW1tZW4gbWl0IGV4cGxvZGUoKSBhbHMgRnVua3Rpb24genVtIEVyc2V0emVuIHZvbgorICAgICAgICBaZWljaGVua2V0dGVuIHZlcndlbmRldCB3ZXJkZW46CisgICAgICAgIGltcGxvZGUoZXhwbG9kZSgiYSBzaG9ydCB0ZXh0IiwgIiAiKSwgIl8iKSAgICAgICJhX3Nob3J0X3RleHQiCisKKwlIZXV0enV0YWdlIGthbm4gbWFuIHN0YXR0ZGVzc2VuIGF1Y2gKKwlyZWdyZXBsYWNlKCJhIHNob3J0IHRleHQiLCAiICIsICJfIiwgMSkKKwl2ZXJ3ZW5kZW4uCisKK1NJRUhFIEFVQ0gKKyAgICAgICAgZXhwbG9kZShFKQpkaWZmIC0tZ2l0IGEvZG9jL2VmdW4vaW5jbHVkZV9saXN0IGIvZG9jL2VmdW4vaW5jbHVkZV9saXN0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmNjNDRmYTkKLS0tIC9kZXYvbnVsbAorKysgYi9kb2MvZWZ1bi9pbmNsdWRlX2xpc3QKQEAgLTAsMCArMSw4MCBAQAorU1lOT1BTSVMKKyAgICAgICAgI2luY2x1ZGUgPHN5cy9pbmNsdWRlX2xpc3QuaD4KKworICAgICAgICBzdHJpbmcgKmluY2x1ZGVfbGlzdCgpOworICAgICAgICBzdHJpbmcgKmluY2x1ZGVfbGlzdChvYmplY3Qgb2IpOworICAgICAgICBzdHJpbmcgKmluY2x1ZGVfbGlzdChvYmplY3Qgb2IsIGludCBmbGFncyk7CisKK0JFU0NIUkVJQlVORworICAgICAgICBEaWVzZSBGdW5rdGlvbiBsaWVmZXJ0IEluZm9ybWF0aW9uZW4gdWViZXIgYWxsZSBEYXRlaWVuLCBkaWUgYmVpIGRlcgorICAgICAgICBLb21waWxpZXJ1bmcgdm9uIDxvYj4gaW4gZGllc2VzIE9iamVrdCBlaW5nZWJ1bmRlbiB3dXJkZW4sIGlua2x1c2l2ZQorICAgICAgICBkZW4gUHJvZ3JhbW1uYW1lbiB2b24gPG9iPi4gV2lyZCA8b2I+IG5pY2h0IGFuZ2VnZWJlbiwgd2lyZAorICAgICAgICBzdGFuZGFyZG1hZXNzaWcgZGFzIGFrdHVlbGxlIE9iamVrdCB2ZXJ3ZW5kZXQuCisKKyAgICAgICAgSW0gcmVzdWx0aWVyZW5kZW4gQXJyYXkgYmVzdGVodCBkaWUgSW5mb3JtYXRpb24genUgZWluZW0gSW5jbHVkZWZpbGUKKyAgICAgICAgYXVzIGRyZWkgRWxlbWVudGVuOgorICAgICAgICAgIC0gc3RyaW5nIFtpKzBdOiBkZXIgTmFtZSBkZXMgSW5jbHVkZWZpbGVzLCB3aWUgZXIgaW0gUHJvZ3JhbW0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgYXVmdGF1Y2h0LCBpbmtsdXNpdmUgZGVuIFRyZW5uemVpY2hlbiB3aWUgIiAiIG9kZXIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgPCA+LgorICAgICAgICAgIC0gc3RyaW5nIFtpKzFdOiBkZXIgYWJzb2x1dGUgRGF0ZWlwZmFkIGRlcyBJbmNsdWRlZmlsZXMuCisgICAgICAgICAgLSBpbnQgICAgW2krMl06IGRpZSBUaWVmZSBkZXIgSW5rbHVzaW9uIChnZXdvZWhubGljaCAxLCBmdWVyCisgICAgICAgICAgICAgICAgICAgICAgICAgIHZlcnNjaGFjaHRlbHRlIEluY2x1ZGVzIGF1Y2ggZ3JvZXNzZXIgYWxzIDEpCisKKyAgICAgICAgRGVyIGVyc3RlIEVpbnRyYWcgaW0gUmVzdWx0YXQgaXN0IGRlciBOYW1lIGRlcyBQcm9ncmFtbWVzIHNlbGJzdCBpbgorICAgICAgICBbaSswXSwgZGllIGFuZGVyZW4gYmVpZGVuIEVsZW1lbnRlIFtpKzFdIHVuZCBbaSsyXSBzaW5kIDAuCisKKyAgICAgICAgPGZsYWc+IGJlemVpY2huZXQgZGllIFN0cnVrdHVyIGRlcyBFcmdlYm5pc3NlczoKKyAgICAgICAgICAtIDxmbGFnPiA9IElOQ0xJU1RfRkxBVCAoMCwgU3RhbmRhcmQpOgorICAgICAgICAgICAgRGFzIFJlc3VsdGF0IGlzdCBlaW4gZmxhY2hlcyBBcnJheS4gRGVyIGVyc3RlIEVpbnRyYWcgYmV6ZWljaG5ldAorICAgICAgICAgICAgPG9iPiBzZWxic3QsIGRpZSByZXN0bGljaGVuIEVpbnRyYWVnZSBiZXplaWNobmVuIGFsbGUgSW5jbHVkZWZpbGVzCisgICAgICAgICAgICBpbiBkZXIgUmVpaGVuZm9sZ2UsIGluIGRlciBzaWUgYXVmdHJldGVuLgorICAgICAgICAgIC0gPGZsYWc+ID0gSU5DTElTVF9UUkVFICgxKToKKyAgICAgICAgICAgIERhcyBSZXN1bHRhdCBpc3QgZWluIEFycmF5LCBkZXNzZW4gZXJzdGVyIEVpbnRyYWcgZGFzIE9iamVrdCA8b2I+CisgICAgICAgICAgICBzZWxic3QgYmV6ZWljaG5ldC4gQWxsZSBmb2xnZW5kZW4gRWludHJhZWdlIGJlemVpY2huZW4gZGllCisgICAgICAgICAgICBJbmNsdWRlZmlsZXMgdm9uIDxvYj4uIFdlbm4gZWluIEluY2x1ZGVmaWxlIHZvbiA8b2I+IHNlbGJzdCBrZWluZQorICAgICAgICAgICAgSW5jbHVkZWZpbGVzIGhhdCwgd2lyZCBzZWluZSBJbmZvcm1hdGlvbiBkaXJla3QgaW0gQXJyYXkKKyAgICAgICAgICAgIGdlc3BlaWNoZXJ0LiBGdWVyIHZlcnNjaGFjaHRlbHRlIEluY2x1ZGVmaWxlcyB3aXJkIGVpbiBVbnRlcnZla3RvcgorICAgICAgICAgICAgZXJ6ZXVndCB1bmQgZGFubiBpbiBkaWVzZW0gVW50ZXJ2ZWt0b3IgYWJnZXNwZWljaGVydCAod2llZGVydW0KKyAgICAgICAgICAgIGluIFtpKzBdLCBbaSsxXSB1bmQgW2krMl0gc2luZCAwKS4gRGllc2UgVW50ZXJ2ZWt0b3JlbiBoYWJlbgorICAgICAgICAgICAgZGllIGdsZWljaGUgU3RydWt0dXIgd2llIGRhcyBSZXN1bHRhdGFycmF5LgorCisgICAgICAgIFdlbm4gZWluIE9iamVrdCwgaW5rbHVzaXZlIDxvYj4sIGVpbmVtIHJlcGxhY2VfcHJvZ3JhbW0oKSB1bnRlcndvcmZlbgorICAgICAgICB3YXIsIHNwaWVnZWxuIGRpZSBnZWxpZWZlcnRlbiBEYXRlaW5hbWVuIGRhcyBlZmZla3RpdiBha3RpdmUgUHJvZ3JhbW0KKyAgICAgICAgd2lkZXIuCisKKyAgICAgICAgRGllIEluY2x1ZGVwZmFkZSwgZGllIGdlbGllZmVydCB3ZXJkZW4sIGJlZ2lubmVuIGltbWVyIG1pdCAnLycKKyAgICAgICAgKGFic29sdXRlIFBmYWRlKSwgYXVjaCB3ZW5uIGRlciBUcmVpYmVyIGltIENPTVBBVCBNb2R1cyBsYWV1ZnQuCisgICAgICAgIFRyb3R6ZGVtIGJlZ2lubnQgZGVyIHRhdHNhZWNobGljaGUgRGF0ZWluYW1lIG5pY2h0IG1pdCBlaW5lbSAnLycsCisgICAgICAgIHdlbm4gZGVyIFRyZWliZXIgaW0gQ09NUEFUIE1vZHVzIGxhZXVmdC4KKworQkVJU1BJRUwKKyAgICAgICAgRGllc2VyIENvZGUgZXJ6ZXVndCAobWl0IC9zeXMgYWxzIEluY2x1ZGV2ZXJ6ZWljaG5pcyBkZXMgU3lzdGVtcyk6CisKKyAgICAgICAgICAgIGEuYzogICNpbmNsdWRlICJiLmgiCisgICAgICAgICAgICAgICAgICAjaW5jbHVkZSA8Yy5oPgorICAgICAgICAgICAgYi5oOiAgI2luY2x1ZGUgImQuaCIKKyAgICAgICAgICAgIGMuaDogICNkZWZpbmUgQkFSCisgICAgICAgICAgICBkLmg6ICAjZGVmaW5lIEZPTworCisgICAgICAgIERpZSBFZnVuIGxpZWZlcnQgZHJlaSBSZXN1bHRhdGU6CisKKyAgICAgICAgICAgIGluY2x1ZGVfbGlzdChhLCBJTkNMSVNUX0ZMQVQpCisgICAgICAgICAgICAtPiAoeyAiYS5jIiwgMCwgMAorICAgICAgICAgICAgICAgICwgIlwiYi5oXCIiLCAiLy4uLi9iLmgiLCAxCisgICAgICAgICAgICAgICAgLCAiXCJkLmhcIiIsICIvLi4uL2QuaCIsIDIKKyAgICAgICAgICAgICAgICAsICI8Yy5oPiIsICAgIi9zeXMvYy5oIiwgMQorICAgICAgICAgICAgICAgfSkKKworICAgICAgICAgICAgIGluY2x1ZGVfbGlzdChhLCBJTkNMSVNUX1RSRUUpCisgICAgICAgICAgICAgLT4gKHsgImEuYyIsIDAsIDAKKyAgICAgICAgICAgICAgICAgLCAoeyAiXCJiLmhcIiIsICIvLi4uL2IuaCIsIDEKKyAgICAgICAgICAgICAgICAgICAgLCAiXCJkLmhcIiIsICIvLi4uL2QuaCIsIDIKKyAgICAgICAgICAgICAgICAgICB9KSwgMCwgMAorICAgICAgICAgICAgICAgICAsICI8Yy5oPiIsICAgIi9zeXMvYy5oIiwgMQorICAgICAgICAgICAgICAgICB9KQorCitBRU5ERVJVTkdFTgorICAgICAgICBFaW5nZWZ1ZWhydCBpbiBMRE11ZCAzLjIuOSwgMy4zLjEyOAorCitTSUVIRSBBVUNICisgICAgICAgIGRlYnVnX2luZm8oRSksIGluaGVyaXRfbGlzdChFKQpkaWZmIC0tZ2l0IGEvZG9jL2VmdW4vaW5oZXJpdF9saXN0IGIvZG9jL2VmdW4vaW5oZXJpdF9saXN0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjk3YzczOGUKLS0tIC9kZXYvbnVsbAorKysgYi9kb2MvZWZ1bi9pbmhlcml0X2xpc3QKQEAgLTAsMCArMSw2MCBAQAorU1lOT1BTSVMKKyAgICAgICAgI2luY2x1ZGUgPHN5cy9pbmhlcml0X2xpc3QuaD4KKworICAgICAgICBzdHJpbmcgKmluaGVyaXRfbGlzdCgpOworICAgICAgICBzdHJpbmcgKmluaGVyaXRfbGlzdChvYmplY3Qgb2IpOworICAgICAgICBzdHJpbmcgKmluaGVyaXRfbGlzdChvYmplY3Qgb2IsIGludCBmbGFncyk7CisKK0JFU0NIUkVJQlVORworICAgICAgICBMaWVmZXJ0IGRpZSBOYW1lbiB2b24gYWxsZW4gRGF0ZWllbiwgZGllIHZvbiA8b2I+IGdlZXJidCB3ZXJkZW4sCisgICAgICAgIGlua2x1c2l2ZSA8b2I+cyBlaWdlbmVyIERhdGVpbmFtZS4gV2lyZCA8b2I+IG5pY2h0IGFuZ2VnZWJlbiwgd2lyZAorICAgICAgICBzdGFuZGFybmRtYWVzc2lnIGRhcyBha3R1ZWxsZSBPYmpla3QgdmVyd2VuZGV0LgorCisgICAgICAgIERlciBXZXJ0IHZvbiA8ZmxhZ3M+IGJlc3RpbW10IGRpZSBTdHJ1a3R1ciBkZXMgUnVlY2tnYWJld2VydGVzOgorICAgICAgICAgIC0gPGZsYWc+ID0gSU5ITElTVF9GTEFUICgwLCBkZWZhdWx0KToKKyAgICAgICAgICAgIGluaGVyaXRfbGlzdCgpIGxpZWZlcnQgZWluIEFycmF5IHZvbiBEYXRlaW5hbWVuLCBiZWdpbm5lbmQgbWl0IGRlbQorICAgICAgICAgICAgTmFtZW4gdm9uIDxvYj4gc2VsYnN0LCBnZWZvbGd0IHZvbiBkZW4gTmFtZW4gYWxsZXIgZ2VlcmJ0ZW4KKyAgICAgICAgICAgIE9iamVrdGVuLgorICAgICAgICAgIC0gPGZsYWc+ID0gSU5ITElTVF9UUkVFICgxKToKKyAgICAgICAgICAgIGluaGVyaXRfbGlzdCgpIGxpZWZlcnQgZWluIEFycmF5IHZvbiBEYXRlaW5hbWVuLCBiZWdpbm5lbmQgbWl0IGRlbQorICAgICAgICAgICAgTmFtZW4gdm9uIDxvYj4gc2VsYnN0LiBXZW5uIGVpbiBnZWVyYnRlIEZpbGUgc2VsYnN0IGtlaW5lIEZpbGVzCisgICAgICAgICAgICBlcmJ0LCB3aXJkIHNlaW4gTmFtZSBkaXJla3QgaW4gZGFzIEVyZ2VibmlzIGVpbmdldHJhZ2VuLiBXZW5uIGVpbgorICAgICAgICAgICAgZ2VlcmJ0ZXMgRmlsZSBzZWxic3QgRmlsZXMgZXJidCwgd2lyZCBlaW4gVW50ZXJ2ZWt0b3IgZXJ6ZXVndCwgaW4KKyAgICAgICAgICAgIGRlbSBkaWUgSW5oZXJpdHMgZWluZ2V0cmFnZW4gd2VyZGVuLiBEZXIgVW50ZXJ2ZWt0b3IgaGF0IGRpZQorICAgICAgICAgICAgZ2xlaWNoZSBTdHJ1a3R1ciB3aWUgZGVyIEhhdXB2ZWt0b3IuCisgICAgICAgICAgLSA8ZmxhZz4gPSBJTkhMSVNUX1RBR19WSVJUVUFMICgyKToKKyAgICAgICAgICAgIEFsbGUgTmFtZW4gaW0gRXJnZWJuaXN2ZWt0b3IgaGFiZW4gZWluIGxlZXJlcyBUYWcgIiAgIiAoendlaQorICAgICAgICAgICAgTGVlcnNjaGxhZWdlKSBmdWVyIG5vcm1hbGUgSW5oZXJpdHMgdW5kICJ2ICIgZnVlciB2aXJ0dWVsbGUKKyAgICAgICAgICAgIEluaGVyaXRzIGFscyBQcmFlZml4IHZvcmFuZ2VzdGVsbHQuCisKKyAgICAgICAgQWxsZSBGbGFncyBrb2VubmVuIG1pdCBlaW5lbSBiaW5hZXJlbiBPZGVyIHwgdmVyYnVuZGVuIHdlcmRlbiwgd29iZWkKKyAgICAgICAgSU5ITElTVF9GTEFUIHVuZCBJTkhMSVNUX1RSRUUgc2ljaCBnZWdlbnNlaXRpZyBhdXNzY2hsaWVzc2VuLgorCisgICAgICAgIFdlbm4gZWluIE9iamVrdCwgaW5rbHVzaXZlIDxvYj4sIGVpbmVtIHJlcGxhY2VfcHJvZ3JhbW0oKSB1bnRlcndvcmZlbgorICAgICAgICB3YXIsIHNwaWVnZWxuIGRpZSBnZWxpZWZlcnRlbiBEYXRlaW5hbWVuIGRhcyBlZmZla3RpdiBha3RpdmUgUHJvZ3JhbW0KKyAgICAgICAgd2lkZXIuCisKKyAgICAgICAgRGllIEluaGVyaXRwZmFkZSwgZGllIGdlbGllZmVydCB3ZXJkZW4sIGJlZ2lubmVuIGltbWVyIG1pdCAnLycKKyAgICAgICAgKGFic29sdXRlIFBmYWRlKSwgYXVjaCB3ZW5uIGRlciBUcmVpYmVyIGltIENPTVBBVCBNb2R1cyBsYWV1ZnQuCisKK0JFSVNQSUVMCisgICAgICAgIEdlZ2ViZW4gZm9sZ2VuZGUgVmVyZXJidW5nc3N0cnVrdHVyOgorCisgICAgICAgICAgICAvIGMgLSBkCisgICAgICAgICAgYQorICAgICAgICAgICAgXCBiCisKKyAgICAgICAgV29iZWkgZCB2aXJ0dWVsbCBnZWVyYnQgd2lyZCwgZXJnZWJlbiBzaWNoIGZvbGdlbmRlIFJlc3VsdGF0ZToKKworICAgICAgICAgICAgaW5oZXJpdF9saXN0KGEpIC0+ICh7ICJhIiwgImMiLCAiYiIsICJkIiB9KQorICAgICAgICAgICAgaW5oZXJpdF9saXN0KGMpIC0+ICh7ICJjIiwgImQiIH0pCisgICAgICAgICAgICBpbmhlcml0X2xpc3QoYSwgMSkgLT4gKHsgImEiLCAoeyAiYyIsICJkIiB9KSwgImIiIH0pCisgICAgICAgICAgICBpbmhlcml0X2xpc3QoYSwgMykgLT4gKHsgIiAgYSIsICh7ICIgYyIsICJ2IGQiIH0pLCAiICBiIiB9KQorCitBRU5ERVJVTkdFTgorICAgICAgICBWb3IgMy4yLjgsIGJlZ2FubmVuIGRpZSBnZWxpZWZlcnRlbiBOYW1lbiBuaWVtYWxzIG1pdCBlaW5lbSAnLycuCisgICAgICAgIExETXVkIDMuMi45IGZ1ZWhydGUgZGllIEJhdW1zdHJ1a3R1ciAoX1RSRUUpIHVuZCBUYWdzIGZ1ZXIgdmlydHVlbGxlCisgICAgICAgICAgICBJbmhlcml0cyAoInYgIikgZWluLgorCitTSUVIRSBBVUNICisgICAgICAgIGRlYnVnX2luZm8oRSksIGluY2x1ZGVfbGlzdChFKQpkaWZmIC0tZ2l0IGEvZG9jL2VmdW4vaW5wdXRfdG8gYi9kb2MvZWZ1bi9pbnB1dF90bwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4xMWNiZDk3Ci0tLSAvZGV2L251bGwKKysrIGIvZG9jL2VmdW4vaW5wdXRfdG8KQEAgLTAsMCArMSwxNDYgQEAKK1NZTk9QU0lTCisgICAgICAgICNpbmNsdWRlIDxzeXMvaW5wdXRfdG8uaD4KKworICAgICAgICB2b2lkIGlucHV0X3RvKHN0cmluZ3xjbG9zdXJlIGZ1bik7CisgICAgICAgIHZvaWQgaW5wdXRfdG8oc3RyaW5nfGNsb3N1cmUgZnVuLCBpbnQgZmxhZywgLi4uKTsKKyAgICAgICAgdm9pZCBpbnB1dF90byhzdHJpbmd8Y2xvc3VyZSBmdW4sIGludCBmbGFnLCBzdHJpbmd8Y2xvc3VyZSBwcm9tcHQsIC4uLik7CisKK0JFU0NIUkVJQlVORworICAgICAgICBEaWUgbmFlY2hzdGUgWmVpbGUsIGRpZSBkZXIgU3BpZWxlciBlaW50aXBwdCwgd2lyZCBhbHMgQXJndW1lbnQgYW4gZGllCisgICAgICAgIEZ1bmt0aW9uIDxmdW4+IHVlYmVyZ2ViZW4uIEF1c25haG1lOiB3ZW5uIGRpZSBuYWVjaHN0ZSBaZWlsZSBtaXQgZWluZW0KKyAgICAgICAgJyEnIGJlZ2lubnQsIHdpcmQgc2llIGFscyBLb21tYW5kbyBhdXNnZXdlcnRldCBiencuIGFuIGRhcyBsZXR6dGUKKyAgICAgICAgaW5wdXRfdG8oKSB1ZWJlcmdlYmVuLCBkYXMgZGFzIElOUFVUX0lHTk9SRV9CQU5HIEZsYWcgZ2VzZXR6dCBoYXQuCisgICAgICAgIERpZSBGdW5rdGlvbiA8ZnVuPiBrYW5uICJzdGF0aWMiIGRla2xhcmllcnQgc2VpbiwgbmljaHQgYWJlciAicHJpdmF0ZSIKKyAgICAgICAgKHNvbnN0IHdpcmQgc2llIG5pY2h0IGdlZnVuZGVuKS4KKworICAgICAgICBEZXIgQXVmcnVmIHZvbiA8ZnVuPiBlcmZvbGd0IG5pY2h0IHNvZm9ydCwgc29uZGVybiBlcnN0LCB3ZW5uIGRlcgorICAgICAgICBTcGllbGVyIGRpZSBFbnRlcnRhc3RlIGRydWVja3QuCisKKyAgICAgICAgV2VubiBpbnB1dF90bygpIG1laHIgYWxzIGVpbm1hbCBwcm8gRnVua3Rpb24gYXVmZ2VydWZlbiB3aXJkLAorICAgICAgICB3aXJkIG5vcm1hbGVyd2Vpc2UgbnVyIGRhcyBlcnN0ZSBpbnB1dF90bygpIGJlcnVlY2tzaWNodGlndC4KKyAgICAgICAgRGllc2UgVmVyaGFsdGVuIGthbm4gZHVyY2ggZGllIEFuZ2FiZSB2b24gSU5QVVRfQVBQRU5ECisgICAgICAgIG1vZGlmaXppZXJ0IHdlcmRlbjogaW4gZGllc2VtIEZhbGwgd2lyZCBkYXMgaW5wdXRfdG8oKSBhbiBkaWUKKyAgICAgICAgTGlzdGUgZGVyIGJlcmVpdHMgYW5oYWVuZ2lnZW4gaW5wdXRfdG9zIGFuZ2VoYWVuZ3QgKHNpZWhlCisgICAgICAgIEJFSVNQSUVMRSkuCisKKyAgICAgICAgV2lyZCBhbmRlcmVyc2VpdHMgd2FlaHJlbmQgZWluZW0gbGF1ZmVuZGVuIGlucHV0X3RvKCkgKG1pdHRlbHMgIiEiIGFtCisgICAgICAgIFplaWxlbmFuZmFuZykgZWluZSBuZXVlIEZ1bmt0aW9uIGF1ZmdlcnVmZW4sIGRpZSB3aWVkZXJ1bSBlaW4KKyAgICAgICAgaW5wdXRfdG8oKSBlbnRoYWVsdCwgd2lyZCBkYXMgdXJzcHJ1ZW5nbGljaGUgaW5wdXRfdG8oKSBzbyBsYW5nZQorICAgICAgICB1bnRlcmJyb2NoZW4sIGJpcyBkYXMgbmV1ZSBpbnB1dF90bygpIGFiZ2VhcmJlaXRldCB3dXJkZSwKKyAgICAgICAgYW5zY2hsaWVzc2VuZCB3aXJkIGVzIHdpZWRlciBha3Rpdi4KKworICAgICAgICBEYXMgb3B0aW9uYWxlIDxmbGFnPiBrYW5uIGVpbiBiaW5hZXJlcyBPZGVyICh8KSBkZXIgZm9sZ2VuZGVuCisgICAgICAgIFdlcnRlIHNlaW46CisKKyAgICAgICAgSU5QVVRfTk9FQ0hPICgxKToKKyAgICAgICAgICAgIERpZSB2b20gU3BpZWxlciBlaW5nZWdlYmVuZSBaZWlsZSBlcnpldWd0IGtlaW4gRWNobyB1bmQgd2lyZCBhdWNoCisgICAgICAgICAgICBuaWNodCBlcmthbm50LCB3ZW5uIGRlciBTcGllbGVyIGJlb2JhY2h0ZXQgd2lyZC4KKworICAgICAgICAgICAgRGllc2VyIE1vZHVzIGthbm4gbnVyIGdlYWVuZGVydCB3ZXJkZW4sIHdlbm4gdGVsbmV0IGVuYWJsZWQgaXN0LgorCisgICAgICAgIElOUFVUX0NIQVJNT0RFICgyKToKKyAgICAgICAgICAgIERpZSBWZXJiaW5kdW5nIHp1bSBVc2VyIHdlY2hzZWx0IHZvbiBaZWlsZW4tIGF1ZiBaZWljaGVubW9kdXMuIFNvCisgICAgICAgICAgICB3aXJkIG51ciBlaW4gZWluemVsbmVzIFplaWNoZW4gKCEpIHZvbSBTcGllbGVyIGVtcGZhbmdlbi4KKworICAgICAgICAgICAgSXN0IHRlbG5ldCBkaXNhYmxlZCwgd2lyZCBsZWRpZ2xpY2ggZGllIEludGVycHJldGF0aW9uIGRlcgorICAgICAgICAgICAgZWlua29tbWVuZGVuIERhdGVuIGR1cmNoIGRlbiBEcml2ZXIgdW1nZXNjaGFsdGV0IC0gZGFzCisgICAgICAgICAgICBDbGllbnRwcm9ncmFtbSBkZXMgU3BpZWxlciB2ZXJibGVpYnQgaW0gZ2VyYWRlIGFrdGl2ZW4gTW9kdXMuCisKKyAgICAgICAgICAgIE5hY2hkZW0gZGllIEZ1bmt0aW9uIDxmdW4+IGF1c2dlZnVlaHJ0IHd1cmRlLCB3ZWNoc2VsdCBkaWUKKyAgICAgICAgICAgIFZlcmJpbmR1bmcgenVydWVjayBpbiBaZWlsZW5tb2R1cywgYXVzc2VyIGVpbiBuYWNoZm9sZ2VuZGVzCisgICAgICAgICAgICBpbnB1dF90byggLCAyKSB3dXJkZSBnZXN0YXJ0ZXQuCisKKyAgICAgICAgICAgIFplaWxlbnVtYnJ1ZWNoZSB3ZXJkZW4gamUgbmFjaCBDbGllbnQgdW50ZXJzY2hpZWRsaWNoIGVtcGZhbmdlbiwKKyAgICAgICAgICAgIGVudHdlZGVyIGFscyAiIiwgYWxzICJcciIgZ2Vmb2xndCB2b24gIiIgb2RlciBhbHMgIlxyIiAobGV0enRlcmVzCisgICAgICAgICAgICBrb21tdCB2b3IgYWxsZW0gYmVpIFdpbmRvd3MgQ2xpZW50cyB2b3IpLgorCisgICAgICAgICAgICBEYXMgRnJvbnRlbmQgZGVzIFNwaWVsZXJzIGthbm4gZGF1ZXJuZCBpbSBaZWlsZW5tb2R1cyBibGVpYmVuLgorICAgICAgICAgICAgQXVjaCB3ZW5uIGlucHV0X3RvKCkgbnVyIGVpbiBlaW56ZWxuZXMgWmVpY2hlbiBmb3JkZXJ0LCBtdXNzIGRlcgorICAgICAgICAgICAgU3BpZWxlciB1bnRlciBVbXN0YWVuZGVuIGRhcyBaZWljaGVuIHVuZCBlaW5lbiBaZWlsZW51bWJydWNoCisgICAgICAgICAgICBkcnVlY2tlbiAodW5kIHNlbmRlbikuIE5vcm1hbGVyd2Vpc2UgZXJoYWVsdCA8ZnVuPiBkYW5uIGRlbgorICAgICAgICAgICAgZ2VzYW10ZW4gSW5wdXQgYXVmIGVpbm1hbC4KKworICAgICAgICAgICAgV2lsbCBtYW4gbGFlbmdlciBpbSBaZWljaGVubW9kdXMgYmxlaWJlbiwga2FubiBkZXIgT3ZlcmhlYWQKKyAgICAgICAgICAgIHJlZHV6aWVydCB3ZXJkZW4sIGluZGVtIHNldF9jb21iaW5lX2NoYXJzZXQoKSB2ZXJ3ZW5kZXQgd2lyZC4gU28KKyAgICAgICAgICAgIGtvZW5uZW4gWmVpY2hlbnNlcXVlbnplbiBhbHMgZWluIFN0cmluZyBhbnN0ZWxsZSB2b24KKyAgICAgICAgICAgIFplaWNoZW4tZnVlci1aZWljaGVuIGVtcGZhbmdlbiB3ZXJkZW4uIEluIGVpbmVtIHNjcmVlbm9yaWVudGllcnRlbgorICAgICAgICAgICAgRWRpdG9yIGdpbHQgZGllcyBmdWVyIGRpZSBtZWlzdGVuIGRydWNrYmFyZW4gWmVpY2hlbi4KKworICAgICAgICBJTlBVVF9QUk9NUFQgKDQpOgorICAgICAgICAgICAgRGFzIEFyZ3VtZW50IG5hY2ggZGVtIDxmbGFnPiB3aXJkIGFscyBQcm9tcHQgZnVlciBkaWUgRWluZ2FiZQorICAgICAgICAgICAgdmVyd2VuZGV0LiBXZW5uIGRpZXNlcyBBcmd1bWVudCBuaWNodCBhbmdlZ2ViZW4gKHVuZCBkYW1pdCBrZWluCisgICAgICAgICAgICBQcm9wbXQgZGVmaW5pZXJ0KSBpc3QsIHdpcmQga2VpbiBQcm9tcHQgYXVzZ2VnZWJlbi4KKworICAgICAgICBJTlBVVF9OT19URUxORVQgKDgpOgorICAgICAgICAgICAgTW9kaWZpemllcnQgZGFzIElOUFVUX0NIQVJNT0RFIEFyZ3VtZW50OiBkZXIgRHJpdmVyIGFlbmRlcnQKKyAgICAgICAgICAgIHNlaW5lIEJlaGFuZGx1bmcgdm9uIGVpbmdlaGVuZGVuIERhdGVuIGVudHNwcmVjaGVuZCBkZW0gX0NIQVJNT0RFCisgICAgICAgICAgICBBcmd1bWVudCwgc2VuZGV0IGFiZXIga2VpbmUgVGVsbmV0a29tbWFuZG9zIHp1ciBBbnBhc3N1bmcKKyAgICAgICAgICAgIGRlcyBWZXJoYWx0ZW5zIGRlcyBDbGllbnRwcm9ncmFtbWVzLgorCisgICAgICAgIElOUFVUX0FQUEVORCAoMTYpOgorICAgICAgICAgICAgRGFzIGlucHV0X3RvKCkgd2lyZCBhbiBkaWUgTGlzdGUgZGVyIGJlcmVpdHMgYW5oYWVuZ2lnZW4KKyAgICAgICAgICAgIGlucHV0X3RvcyBhbmdlaGFlbmd0LgorCisgICAgICAgIElOUFVUX0lHTk9SRV9CQU5HICgxMjgpOgorICAgICAgICAgICAgRWluZ2FiZW4sIGRpZSBtaXQgISBiZWdpbm5lbiwgd2VyZGVuIE5JQ0hUIGFscyBLb21tYW5kaSBnZXBhcnNldCwKKyAgICAgICAgICAgIHNvbmRlcm4gYXVjaCBhbHMgQXJndW1lbnQgYW4gZGllIEZ1bmtpb24gPGZ1bj4gdWViZXJnZWJlbi4gRGllCisgICAgICAgICAgICBWZXJ3ZW5kdW5nIGRpZXNlcyBGbGFncyBpc3QgZWluZ2VzY2hyYWVua3QuCisKKyAgICAgICAgQWxsZSBuYWNoZm9sZ2VuZGVuIEFyZ3VtZW50ZSB3ZXJkZW4gYWxzIHp3ZWl0ZXMgYnp3LiBkcml0dGVzIHVzdy4KKyAgICAgICAgQXJndW1lbnQgYW4gPGZ1bj4gdWViZXJnZWJlbi4KKworQkVJU1BJRUwKKyAgICAgICAgdm9pZCBmdW5jKCkKKyAgICAgICAgeworICAgICAgICAgICAgLi4uCisgICAgICAgICAgICBpbnB1dF90bygiZW50ZXJfbmFtZSIsIElOUFVUX1BST01QVCwgIldpZSBsYXV0ZXQgZGVpbiBOYW1lPzoiKTsKKyAgICAgICAgICAgIC8qIEZydWVoZXIgZXJsZWRpZ3RlIG1hbiBkaWVzIG1pdDoKKyAgICAgICAgICAgICAqICAgd3JpdGUoIldpZSBsYXV0ZXQgZGVpbiBOYW1lPzoiKTsKKyAgICAgICAgICAgICAqICAgaW5wdXRfdG8oImVudGVyX25hbWUiKTsKKyAgICAgICAgICAgICAqLworICAgICAgICAgICAgIC4uLgorICAgICAgICAgfQorCisgICAgICAgICBlbnRlcl9uYW1lKHN0cmluZyBzdHIpCisgICAgICAgICB7CisgICAgICAgICAgICB3cml0ZSgiSGVpc3N0IGR1IHdpcmtsaWNoICciK3N0cisiJz8/ICpraWNoZXIqXG4iKTsKKyAgICAgICAgICAgIC4uLgorICAgICAgICB9CisKKyAgICAgICAgQmVpIGRlciBpbnB1dF90bygpIEFud2Vpc3VuZyBmdWVocnQgZGVyIERyaXZlciBkaWUgRnVua3Rpb24KKyAgICAgICAgZnVuYygpIGF1cywgZXJ3YXJ0ZXQgYWJlciBnbGVpY2h6ZWl0aWcgSW5wdXQgdm9tIFNwaWVsZXIuIFdlbm4KKyAgICAgICAgZGllc2VyIGV0d2FzIGVpbmdlZ2ViZW4gVU5EIERJRSBFTlRFUlRBU1RFIEdFRFJVRUNLVCBIQVQsIGFyYmVpdGV0CisgICAgICAgIGRlciBEcml2ZXIgZGllIEZ1bmt0aW9uIGVudGVyX25hbWUoKSBtaXQgZGVtIGVpbmdlZ2ViZW5lbiBTdHJpbmcKKyAgICAgICAgYWxzIEFyZ3VtZW50IGFiLgorCisKKyAgICAgICAgdm9pZCBmdW5jKCkgeworICAgICAgICAgIC4uCisgICAgICAgICAgaW5wdXRfdG8oImVudGVyX2ZpcnN0bmFtZSIpOworICAgICAgICAgIGlucHV0X3RvKCJlbnRlcl9sYXN0bmFtZSwgSU5QVVRfQVBQRU5EKTsKKyAgICAgICAgICAuLi4KKyAgICAgICAgfQorCisgICAgICAgIERpZXNlIFNlcXVlbnplIGVyemV1Z3QgendlaSBpbnB1dF90b3M6IEVpbmdhYmVuIGdlaGVuIHp1ZXJzdAorICAgICAgICBhbiBlbnRlcl9maXJzdG5hbWUoKTsgdW5kIHdlbm4gZGllc2UgRnVua3Rpb24gZmVydGlnIGlzdAorICAgICAgICAoZWluc2NobGllc3NsaWNoIGV0d2FpZ2VyIGVpZ2VuZXIgbm9uLUlOUFVUX0FQUEVORCBpbnB1dF90b3MpLCBnZWh0CisgICAgICAgIGRpZSBuYWVjaHN0ZSBFaW5nYWJlIGFuIGVudGVyX2xhc3RuYW1lKCkuCisKK0FFTkRFUlVOR0VOCisgICAgICAgIERpZSBCZWRldXR1bmcgdm9uIDxmbGFnPiB3dXJkZSBpbiAzLjIuMUA5MyBlcndlaXRlcnQuCisgICAgICAgIERpZSBMaW1pdGllcnVuZyBmdWVyIGRhcyAic3RhcGVsbiIgdm9uIGlucHV0X3RvKClzIGF1cyAhLUtvbW1hbmRpCisgICAgICAgICAgICB3dXJkZSBpbiBMRE11ZCAzLjIuOCBpbXBsZW1lbnRpZXJ0LgorICAgICAgICBTZWl0IExETXVkIDMuMi44IGthbm4gPGZ1bj4gaW4gRm9ybSBlaW5lciBDbG9zdXJlIGFuZ2VnZWJlbiB3ZXJkZW4uCisgICAgICAgIExETXVkIDMuMi45IGZ1ZWhydGUgZGFzIEZsYWcgSU5QVVRfUFJPTVBUIHNhbXQgenVnZWhvZXJpZ2VtIEFyZ3VtZW50CisgICAgICAgICAgICBlaW4uCisgICAgICAgIExETXVkIDMuMi4xMS8zLjMuNTkzIGZ1ZWhydGUgZGFzIElOUFVUX05PX1RFTE5FVCBGbGFnIGVpbi4KKyAgICAgICAgTERNdWQgMy4yLjExLzMuMy42MzcgZnVlaHJ0ZSBkYXMgSU5QVVRfQVBQRU5EIEZsYWcgZWluLgorCitCVUdTCisgICAgICAgIEltIFplaWNoZW5tb2R1cyBzb2xsdGVuIFplaWxlbnVtYnJ1ZWNoZSBlaWdlbnRsaWNoIGFscyAiXG4iIHp1cnVlY2sKKyAgICAgICAgZ2VnZWJlbiB3ZXJkZW4uIERpZXMgYWxsZXJkaW5ncyBrYW5uIGV4aXN0aWVyZW5kZW4gQ29kZSB6ZXJzdG9lcmVuLgorCitTSUVIRSBBVUNICisgICAgICAgIGNhbGxfb3RoZXIoRSksIHNzY2FuZihFKSwgcHJpdmlsZWdlX3Zpb2xhdGlvbihNKSwKKyAgICAgICAgc2V0X2NvbWJpbmVfY2hhcnNldChFKSwgcXVlcnlfaW5wdXRfcGVuZGluZyhFKSwgZmluZF9pbnB1dF90byhFKSwKKyAgICAgICAgaW5wdXRfdG9faW5mbyhFKSwgcmVtb3ZlX2lucHV0X3RvKEUpLCBlbmFibGVfdGVsbmV0KEUpCmRpZmYgLS1naXQgYS9kb2MvZWZ1bi9pbnB1dF90b19pbmZvIGIvZG9jL2VmdW4vaW5wdXRfdG9faW5mbwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44ZGFjM2QzCi0tLSAvZGV2L251bGwKKysrIGIvZG9jL2VmdW4vaW5wdXRfdG9faW5mbwpAQCAtMCwwICsxLDIxIEBACitTWU5PUFNJUworICAgICAgICAqbWl4ZWQgaW5wdXRfdG9faW5mbyhvYmplY3QgcGxheWVyKTsKKworQkVTQ0hSRUlCVU5HCisgICAgICAgIExpZWZlcnQgZWluIEFycmF5IGFsbGVyIGZ1ZXIgPHBsYXllcj4gaGFlbmdpZ2VuIGlucHV0X3RvKClzLiBEZXIKKyAgICAgICAgZXJzdGUgRWludHJhZyBpbSBBcnJheSBpc3QgZGVyIGFlbHRlc3RlIGhhZW5naWdlIGlucHV0X3RvKCkKKyAgICAgICAgKGRlcmplbmlnZSwgd2VsY2hlciBhbHMgZXJzdGVzIGdlc3RhcnRldCB3dXJkZSksIGRlciBsZXR6dGUKKyAgICAgICAgRWludHJhZyBpc3QgZGVyIG5ldXN0ZSBpbnB1dF90bygpLgorCisgICAgICAgIEplZGVyIEVpbnRyYWcgaW0gQXJyYXkgaXN0IHdpZWRlcnVtIGVpbiBBcnJheSB2b24gMiBvZGVyIG1laHIKKyAgICAgICAgRWludHJhZWdlbiwgZGFzIGZvbGdlbmRlIEVsZW1lbnRlIGVudGhhZWx0OgorICAgICAgICAgICAgMDogICBEYXMgT2JqZWt0IChudXIsIHdlbm4gZGllIEZ1bmt0aW9uIGVpbiBzdHJpbmcgaXN0KQorICAgICAgICAgICAgMTogICBEaWUgRnVua3Rpb24gKFN0cmluZyBvZGVyIENsb3N1cmUpCisgICAgICAgICAgICAyZmY6IERpZSBBcmd1bWVudGUKKworQUVOREVSVU5HRU4KKyAgICAgICAgRWluZ2VmdWVocnQgaW4gTERNdWQgMy4yLjkuCisKK1NJRUhFIEFVQ0gKKyAgICAgICAgaW5wdXRfdG8oRSksIGZpbmRfaW5wdXRfdG8oRSksIHJlbW92ZV9pbnB1dF90byhFKSwKKyAgICAgICAgcXVlcnlfaW5wdXRfcGVuZGluZyhFKQpkaWZmIC0tZ2l0IGEvZG9jL2VmdW4vaW5zZXJ0X2FsaXN0IGIvZG9jL2VmdW4vaW5zZXJ0X2FsaXN0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjAxYWNhNGUKLS0tIC9kZXYvbnVsbAorKysgYi9kb2MvZWZ1bi9pbnNlcnRfYWxpc3QKQEAgLTAsMCArMSwyOCBAQAorT1BUSU9OQUwsIFZFUkFMVEVUCitTWU5PUFNJUworICAgICAgICBtaXhlZCAqaW5zZXJ0X2FsaXN0KG1peGVkIGtleSwgbWl4ZWQgZGF0YSwgLi4uICwgbWl4ZWQgKmFsaXN0KTsKKyAgICAgICAgaW50ICAgIGluc2VydF9hbGlzdChtaXhlZCBrZXksIG1peGVkICprZXlzKTsKKworQkVTQ0hSRUlCVU5HCisgICAgIDEuIEZvcm06IEVpbmZ1ZWdlbiBpbiBlaW5lIEFsaXN0LgorICAgICAgICBEZXIgPGtleT4gdW5kIGFsbGUgZm9nbGVuZGVuIDxkYXRhPiBBcmd1bWVudGUgd2VyZGVuIGluIGRpZSBBbGlzdAorICAgICAgICBlaW5nZWZ1ZWd0LiBXZW5uIGJlcmVpdHMgZWluIEVpbnRyYWcgZnVlciA8a2V5PiBleGlzdGllcnQsIHdlcmRlbgorICAgICAgICBudXIgZGllIDxkYXRhPiBFaW50cmFlZ2UgZXJzZXR6dC4gTmF0dWVybGljaCBtdXNzIGRpZSBBbnphaGwgPGRhdGE+CisgICAgICAgIEFyZ3VtZW50ZSBkZXIgQW56YWhsIGRlciBEYXRlbmFycmF5cyBpbiBkZXIgQWxpc3QgZW50c3ByZWNoZW4uCisgICAgICAgIERhcyBSZXN1bHRhdCBkaWVzZXIgT3BlcmF0aW9uIGlzdCBkaWUgbmV1ZSBBbGlzdC4KKworICAgICAyLiBGb3JtOiBFaW5mdWVnZW4gZWluZXMgS2V5cworICAgICAgICBEZXIgPGtleT4gd2lyZCBpbiBlaW4gKGdlb3JkbmV0ZXMpIEFycmF5IHZvbiA8a2V5cz4gZWluZ2VvcmRuZXQsCisgICAgICAgIHNvZGFzcyBuYWNoZm9sZ2VuZGVzIGFzc29jKClzIHNjaG5lbGwgc3VjaGVuIGtvZW5uZW4uIERhcyBSZXN1bHRhdAorICAgICAgICBpc3QgZGVyIEluZGV4LCB1bnRlciBkZW0gPGtleT4gZWluZ2VmdWVndCBvZGVyIGJlcmVpdHMgZ2VmdW5kZW4KKyAgICAgICAgd3VyZGUuCisKK0FOTUVSS1VORworICAgICAgICBXaXJkIG1pdCBTdHJpbmctS2V5cyBnZWFyYmVpdGV0LCBrYW5uIGRlciBJbmRleCBuYWNoIGRlbSBuYWVjaHN0ZW4KKyAgICAgICAgQXVmcnVmIHZvbiBpbnNlcnRfYWxpc3QoKSBuaWNodCBtZWhyIGd1ZWx0aWcgc2Vpbi4KKworICAgICAgICBLb21wbGV4aXRhZXQ6IE8obGcobikgKyBhKm4pIGZ1ZXIgbiBnbGVpY2ggZGVyIEFuemFobCBkZXIgS2V5cyB1bmQKKyAgICAgICAgZWluZSBzZWhyIGtsZWluZSBLb25zdGFudGUgcyAoZnVlciBCbG9ja3ZlcnNjaGllYnVuZ2VuKS4KKworU0lFSEUgQVVDSAorICAgICAgICBhbGlzdHMoTFBDKSwgYXNzb2MoRSksIG9yZGVyX2FsaXN0KEUpCmRpZmYgLS1naXQgYS9kb2MvZWZ1bi9pbnRlcmFjdGl2ZSBiL2RvYy9lZnVuL2ludGVyYWN0aXZlCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmMzMjZmOGEKLS0tIC9kZXYvbnVsbAorKysgYi9kb2MvZWZ1bi9pbnRlcmFjdGl2ZQpAQCAtMCwwICsxLDEwIEBACitTWU5PUFNJUworICAgICAgICBpbnQgaW50ZXJhY3RpdmUob2JqZWN0IG9iaik7CisKK0JFU0NIUkVJQlVORworICAgICAgICBMaWVmZXJ0IDEgenVydWVjaywgd2VubiA8b2JqPiBlaW4gaW50ZXJha3RpdmVyIFVzZXIgKGVpbiBTcGllbGVyKQorICAgICAgICBpc3QuIFdpcmQgPG9iaj4gd2VnZ2VsYXNzZW4sIGRhbm4gd2lyZCB0aGlzX29iamVjdCgpIHZlcndlbmRldC4KKworU0lFSEUgQVVDSAorICAgICAgICBxdWVyeV9vbmNlX2ludGVyYWN0aXZlKEUpLCBxdWVyeV9pcF9udW1iZXIoRSksIHF1ZXJ5X2lwX25hbWUoRSksCisgICAgICAgIHF1ZXJ5X2lkbGUoRSkKZGlmZiAtLWdpdCBhL2RvYy9lZnVuL2ludGVyYWN0aXZlX2luZm8gYi9kb2MvZWZ1bi9pbnRlcmFjdGl2ZV9pbmZvCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmY3YzI4NzcKLS0tIC9kZXYvbnVsbAorKysgYi9kb2MvZWZ1bi9pbnRlcmFjdGl2ZV9pbmZvCkBAIC0wLDAgKzEsMTA2IEBACitTWU5PUFNJUworICAgICAgICAjaW5jbHVkZSA8aW50ZXJhY3RpdmVfaW5mby5oPgorCisgICAgICAgIG1peGVkIGludGVyYWN0aXZlX2luZm8ob2JqZWN0IG9iLCBpbnQgd2hhdCkKKworREVTQ1JJUFRJT04KKyAgICAgICAgUmV0dXJucyBzb21lIGludGVybmFsIGluZm9ybWF0aW9uIGFib3V0IHRoZSBpbnRlcmFjdGl2ZSB1c2VyIDxvYj4uCisgICAgICAgIFRoZSBhcmd1bWVudCA8d2hhdD4gZGV0ZXJtaW5lcyB3aGljaCBpbmZvcm1hdGlvbiBpcyByZXR1cm5lZC4KKworICAgICAgICBJdCBjYW4gYmUgZWl0aGVyIGEgY29uZmlndXJhdGlvbiBvcHRpb24gYXMgZ2l2ZW4gdG8KKyAgICAgICAgY29uZmlndXJlX2ludGVyYWN0aXZlKCkgb3Igb25lIG9mIHRoZSBmb2xsb3dpbmcgb3B0aW9uczoKKworCisKKyAgICAgICAgQ29ubmVjdGlvbiBJbmZvcm1hdGlvbjoKKworICAgICAgICA8d2hhdD4gPT0gSUlfSVBfTkFNRToKKyAgICAgICAgICBUaGUgaG9zdG5hbWUgb2YgPG9iPi4gVGhlIGhvc3RuYW1lIHdpbGwgYXN5bmNocm9ub3VzbHkKKyAgICAgICAgICBsb29rZWQgdXAgYnkgdGhlIEVSUSBkYWVtb24gYW5kIG1pZ2h0IHRoZXJlZm9yZSBub3QgYmUKKyAgICAgICAgICBhdmFpbGFibGUgYXQgdGhlIHRpbWUgb2YgdGhlIGZpcnN0IGNvbm5lY3Rpb24uCisgICAgICAgICAgSWYgbm8gbmFtZSBpcyBhdmFpbGFibGUgdGhlIGFkZHJlc3Mgd2lsbCBiZSByZXR1cm5lZC4KKworICAgICAgICA8d2hhdD4gPT0gSUlfSVBfTlVNQkVSOgorICAgICAgICAgIFRoZSBJUCBhZGRyZXNzIG9mIDxvYj4gZ2l2ZW4gYXMgYSBzdHJpbmcuCisKKyAgICAgICAgPHdoYXQ+ID09IElJX0lQX1BPUlQ6CisgICAgICAgICAgVGhlIGNsaWVudCBwb3J0IG51bWJlciBvZiA8b2I+LgorCisgICAgICAgIDx3aGF0PiA9PSBJSV9JUF9BRERSRVNTOgorICAgICAgICAgIFRoZSBmdWxsIHNvY2tldCBhZGRyZXNzIHN0cnVjdHVyZSBnaXZlbiBhcyBhbiBhcnJheSBvZiBieXRlcy4KKworICAgICAgICAgIEZvciBJUHY0IChzb2NrYWRkcl9pbik6CisgICAgICAgICAgICAgIGFycmF5WzAuLiAxXTogc2luX2ZhbWlseQorICAgICAgICAgICAgICBhcnJheVsyLi4gM106IHNpbl9wb3J0CisgICAgICAgICAgICAgIGFycmF5WzQuLiA3XTogc2luX2FkZHIKKyAgICAgICAgICAgICAgYXJyYXlbOC4uMTVdOiB1bmRlZmluZWQuCisKKyAgICAgICAgICBGb3IgSVB2NiAoc29ja2FkZHJfaW42KToKKyAgICAgICAgICAgICAgYXJyYXlbIDAuLiAxXTogc2luNl9mYW1pbHkKKyAgICAgICAgICAgICAgYXJyYXlbIDIuLiAzXTogc2luNl9wb3J0CisgICAgICAgICAgICAgIGFycmF5WyA0Li4gN106IHNpbjZfZmxvd2luZm8KKyAgICAgICAgICAgICAgYXJyYXlbIDguLjIzXTogc2luNl9hZGRyCisgICAgICAgICAgICAgIGFycmF5WzI0Li4yN106IHNpbjZfc2NvcGVfaWQKKworICAgICAgICA8d2hhdD4gPT0gSUlfTVVEX1BPUlQ6CisgICAgICAgICAgVGhlIHNlcnZlciBwb3J0IG51bWJlciB0aGF0IDxvYj4gY29ubmVjdGVkIHRvLgorCisKKworICAgICAgICBUZWxuZXQgUmVsYXRlZCBJbmZvcm1hdGlvbjoKKworICAgICAgICA8d2hhdD4gPT0gSUlfTUNDUF9TVEFUUzoKKyAgICAgICAgICBTdGF0aXN0aWNzIGFib3V0IHRoZSBjdXJyZW50IGNvbXByZXNzaW9uIG9mIDxvYj4gZ2l2ZW4KKyAgICAgICAgICBhcyBhbiBhcnJheSAoeyB1bmNvbXByZXNzZWQgYnl0ZXMsIGNvbXByZXNzZWQgYnl0ZXMgfSkuCisKKyAgICAgICAgICBJZiB0aGUgY29ubmVjdGlvbiBpcyBub3QgY29tcHJlc3NlZCwgMCBpcyByZXR1cm5lZC4KKworICAgICAgICAgIEF2YWlsYWJsZSBvbmx5IGlmIHRoZSBkcml2ZXIgaXMgY29tcGlsZWQgd2l0aCBNQ0NQIGVuYWJsZWQ7CisgICAgICAgICAgX19NQ0NQX18gaXMgZGVmaW5lZCBpbiB0aGF0IGNhc2UuCisKKworCisgICAgICAgIElucHV0IEhhbmRsaW5nOgorCisgICAgICAgIDx3aGF0PiA9PSBJSV9JTlBVVF9QRU5ESU5HOgorICAgICAgICAgIElmIDxvYj4gaGFzIGFuIGlucHV0X3RvKCkgcGVuZGluZywgdGhlIG9iamVjdCB0aGF0IGhhcyBjYWxsZWQKKyAgICAgICAgICB0aGUgaW5wdXRfdG8oKSBpcyByZXR1cm5lZCwgZWxzZSAwLgorCisgICAgICAgIDx3aGF0PiA9PSBJSV9FRElUSU5HOgorICAgICAgICAgIElmIDxvYj4gaXMgY3VycmVudGx5IGVkaXRpbmcgd2l0aCBlZCgpIGFuZCBlZCgpIHdhcyBjYWxsZWQgd2l0aAorICAgICAgICAgIGFuIGV4aXQgZnVuY3Rpb24sIHRoZW4gdGhlIG9iamVjdCB0aGF0IGhhcyBjYWxsZWQgZWQoKQorICAgICAgICAgIHdpbGwgYmUgcmV0dXJuZWQsIDAgb3RoZXJ3aXNlLgorCisgICAgICAgIDx3aGF0PiA9PSBJSV9JRExFOgorICAgICAgICAgIFRoZSBudW1iZXIgb2Ygc2Vjb25kcyB0aGF0IHRoZSBpbnRlcmFjdGl2ZSBvYmplY3QgPG9iPiBoYXMgYmVlbgorICAgICAgICAgIGlkbGUuCisKKworCisgICAgICAgIE91dHB1dCBIYW5kbGluZzoKKworICAgICAgICA8d2hhdD4gPT0gSUlfU05PT1BfTkVYVDoKKyAgICAgICAgICBSZXR1cm5zIHRoZSB1c2VyIHdobyBpcyBjdXJyZW50bHkgc25vb3BpbmcgPG9iPi4KKyAgICAgICAgICBUaGUgY2FsbGluZyBvYmplY3QgbXVzdCBiZSBwcml2aWxlZ2VkIGJ5IHRoZSBtYXN0ZXIgb2JqZWN0CisgICAgICAgICAgdmlhIHZhbGlkX3F1ZXJ5X3Nub29wKCkuCisKKyAgICAgICAgPHdoYXQ+ID09IElJX1NOT09QX1BSRVY6CisgICAgICAgICAgUmV0dXJucyB0aGUgdmljdGltIHdobyBpcyBjdXJyZW50bHkgc25vb3BlZCBieSA8b2I+LgorICAgICAgICAgIFRoZSBjYWxsaW5nIG9iamVjdCBtdXN0IGJlIHByaXZpbGVnZWQgYnkgdGhlIG1hc3RlciBvYmplY3QKKyAgICAgICAgICB2aWEgdmFsaWRfcXVlcnlfc25vb3AoKS4KKworICAgICAgICA8d2hhdD4gPT0gSUlfU05PT1BfQUxMOgorICAgICAgICAgIFJldHVybnMgYWxsIG9iamVjdHMgd2hvIGFyZSBjdXJyZW50bHkgc25vb3BpbmcgPG9iPi4KKyAgICAgICAgICBPbmx5IG9uZSBvYmplY3QgY2FuIHNub29wIDxvYj4gZGlyZWN0bHksIGJ1dCB0aGF0IHVzZXIgbWlnaHQKKyAgICAgICAgICBiZSBzbm9vcGVkLCB0b28sIGFuZCBzbyBidWlsZGluZyBhIGNoYWluIHRoYXQgaXMgcmV0dXJuZWQKKyAgICAgICAgICBhcyBhbiBhcnJheS4KKworICAgICAgICAgIFRoZSBjYWxsaW5nIG9iamVjdCBtdXN0IGJlIHByaXZpbGVnZWQgYnkgdGhlIG1hc3RlciBvYmplY3QKKyAgICAgICAgICB2aWEgdmFsaWRfcXVlcnlfc25vb3AoKS4KKworCitISVNUT1JZCisgICAgICAgIEludHJvZHVjZWQgaW4gTERNdWQgMy41LjAuCisKK1NFRSBBTFNPCisgICAgICAgIGNvbmZpZ3VyZV9pbnRlcmFjdGl2ZShFKSwgb2JqZWN0X2luZm8oRSksIGRyaXZlcl9pbmZvKEUpCmRpZmYgLS1naXQgYS9kb2MvZWZ1bi9pbnRwIGIvZG9jL2VmdW4vaW50cApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi42YTZhMGYyCi0tLSAvZGV2L251bGwKKysrIGIvZG9jL2VmdW4vaW50cApAQCAtMCwwICsxLDEwIEBACitTWU5PUFNJUworICAgICAgICBpbnQgaW50cChtaXhlZCBhcmcpCisKK0JFU0NIUkVJQlVORworICAgICAgICBMaWVmZXJ0IDEsIHdlbm4gZGFzIEFyZ3VtZW50IGVpbmUgR2FuenphaGwgKEludGVnZXIpIGlzdCwgYW5zb25zdGVuCisgICAgICAgIDAuCisKK1NJRUhFIEFVQ0gKKyAgICAgICAgY2xvc3VyZXAoRSksIGZsb2F0cChFKSwgbWFwcGluZ3AoRSksIG9iamVjdHAoRSksIHBvaW50ZXJwKEUpLAorICAgICAgICByZWZlcmVuY2VwKEUpLCBzdHJpbmdwKEUpLCBzeW1ib2xwKEUpLCBjbG9uZXAoRSkKZGlmZiAtLWdpdCBhL2RvYy9lZnVuL2ludmVydF9iaXRzIGIvZG9jL2VmdW4vaW52ZXJ0X2JpdHMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMjdiYmU2ZAotLS0gL2Rldi9udWxsCisrKyBiL2RvYy9lZnVuL2ludmVydF9iaXRzCkBAIC0wLDAgKzEsMTcgQEAKK1NZTk9QU0lTCisgICAgICAgIHN0cmluZyBpbnZlcnRfYml0cyhzdHJpbmcgc3RyKTsKKworQkVTQ0hSRUlCVU5HCisgICAgICAgIEludmVydGllcnQgZGVuIFN0YXR1cyBhbGxlciBCaXRzIGltIEJpdHN0cmluZyA8c3RyPiB1bmQgbGllZmVydCBkZW4KKyAgICAgICAgbmV1ZW4gU3RyaW5nIHp1cnVlY2suIERhYmVpIGJsZWlidCBkaWUgTGFlbmdlIHZvbiA8c3RyPiwgYWxzbyBkaWUKKyAgICAgICAgZ2VzYW10ZSBBbnphaGwgQml0cywgZGllIGdsZWljaGUuCisKK0JFSVNQSUVMCisgICAgICAgIHN0cmluZyBzOworICAgICAgICBzID0gc2V0X2JpdCgiIiwgMyk7IHMgPSBzZXRfYml0KHMsIDQpOyBzID0gc2V0X2JpdChzLCAxNSk7CisgICAgICAgIC0tPiBzIGlzdCBudW4gICI4ICgiCisgICAgICAgIGludmVydF9iaXRzKHMpIC0tPiBsaWVmZXJ0ICJHX1ciCisKK1NJRUhFIEFVQ0gKKyAgICAgICAgc2V0X2JpdChFKSwgY2xlYXJfYml0KEUpLCB0ZXN0X2JpdChFKSwgbGFzdF9iaXQoRSksIGFuZF9iaXRzKEUpLAorICAgICAgICBvcl9iaXRzKEUpLCB4b3JfYml0cyhFKSwgY291bnRfYml0cyhFKSwgY29weV9iaXRzKEUpCmRpZmYgLS1naXQgYS9kb2MvZWZ1bi9qc29uX3BhcnNlIGIvZG9jL2VmdW4vanNvbl9wYXJzZQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5hOWY0YzMxCi0tLSAvZGV2L251bGwKKysrIGIvZG9jL2VmdW4vanNvbl9wYXJzZQpAQCAtMCwwICsxLDQ1IEBACitPUFRJT05BTAorRVhQRVJJTUVOVEFMCitTWU5PUFNJUworCisgICAgICAgIG1peGVkIGpzb25fcGFyc2Uoc3RyaW5nIGpzb25zdHJpbmcpCisKK0RFU0NSSVBUSU9OCisgICAgICAgIFRoaXMgZWZ1biBwYXJzZXMgdGhlIEpTT04gb2JqZWN0IGVuY29kZWQgYXMgc3RyaW5nIGluIDxqc29uc3RyPiBpbnRvIGEKKyAgICAgICAgc3VpdGFibGUgTFBDIHR5cGUuCisgICAgICAgIAorICAgICAgICBIYW5kbGVzIHRoZSBmb2xsb3dpbmcgSlNPTiB0eXBlczoKKyAgICAgICAgPG51bGw+ICAgICAgICAtPiBpbnQgKDApCisgICAgICAgIDxib29sZWFuPiAgICAgLT4gaW50ICgwIG9yIDEpCisgICAgICAgIDxpbnQgfCBpbnQ2ND4gLT4gaW50CisgICAgICAgIDxkb3VibGU+ICAgICAgLT4gZmxvYXQKKyAgICAgICAgPHN0cmluZz4gICAgICAtPiBzdHJpbmcKKyAgICAgICAgPG9iamVjdD4gICAgICAtPiBtYXBwaW5nCisgICAgICAgIDxhcnJheT4gICAgICAgLT4gYXJyYXlzCisgICAgICAgIEFsbCBvdGhlciBKU09OIHR5cGVzIGNhdXNlIGEgcnVudGltZSBlcnJvci4KKworICAgICAgICBUaGUgSlNPTiBvYmplY3QgY2FuIG5lc3Qgb3RoZXIgSlNPTiBvYmplY3RzLgorICAgICAgICAKKyAgICAgICAgVGhlIGZ1bmN0aW9uIGlzIGF2YWlsYWJsZSBvbmx5IGlmIHRoZSBkcml2ZXIgaXMgY29tcGlsZWQgd2l0aCBJa3NlbWVsCisgICAgICAgIHN1cHBvcnQuIEluIHRoYXQgY2FzZSwgX19KU09OX18gaXMgZGVmaW5lZC4gCisgCitMSU1JVEFUSU9OUworICAgICAgICA2NCBiaXQgd2lkZSBpbnRlZ2VycyBjYW4gb25seSBiZSBwYXJzZWQgbG9zc2xlc3NseSBvbiBob3N0cyB3aXRoCisgICAgICAgIGEgNjQgYml0IHdpZGUgTFBDIGludCBhbmQganNvbi1jIGxpYnJhcnkgbmV3ZXIgdGhhbiAwLjkwLgorCitCVUdTCisgICAgICAgIF9fRkxPQVRfTUlOX18gaXMgbm90IHNlcmlhbGl6ZWQvcGFyc2VkIGxvc3NsZXNzbHkuCisKK0VYQU1QTEVTCisgICAgICAgIGpzb25fcGFyc2UoIjQyIikgICAgICAgICAgICAgIC0+IDQyCisgICAgICAgIGpzb25fcGFyc2UoIjQyLjAiKSAgICAgICAgICAgIC0+IDQyLjAKKyAgICAgICAganNvbl9wYXJzZSgiXCJoZWxsbyB3b3JsZFxcblwiIikgICAtPiAiaGVsbG8gd29ybGRcbiIKKyAgICAgICAganNvbl9wYXJzZSgiWyAxLCAyLCAzLCA0LCA1LCA2IF0iKSAtPiAoezEsMiwzLDQsNSw2fSkKKyAgICAgICAganNvbl9wYXJzZSgieyBcInRlc3QgMlwiOiA0Mi4wMDAwMDAsIFwidGVzdCAxXCI6IDQyIH0iKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtPiAoWyAidGVzdCAxIjogNDIsICJ0ZXN0IDIiOiA0Mi4wIF0pCisgICAgICAgIAorSElTVE9SWQorICAgICAgICBBZGRlZCBpbiBMRE11ZCAzLjUuMAorCitTRUUgQUxTTworICAgICAgICBqc29uX3NlcmlhbGl6ZShFKQpkaWZmIC0tZ2l0IGEvZG9jL2VmdW4vanNvbl9zZXJpYWxpemUgYi9kb2MvZWZ1bi9qc29uX3NlcmlhbGl6ZQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5mZDY4ZGViCi0tLSAvZGV2L251bGwKKysrIGIvZG9jL2VmdW4vanNvbl9zZXJpYWxpemUKQEAgLTAsMCArMSw0NSBAQAorT1BUSU9OQUwKK0VYUEVSSU1FTlRBTAorU1lOT1BTSVMKKworICAgICAgICBzdHJpbmcganNvbl9zZXJpYWxpemUobWl4ZWQgPGRhdGE+KQorCitERVNDUklQVElPTgorICAgICAgICBUaGlzIGVmdW4gY3JlYXRlcyBhIEpTT04gb2JqZWN0IGZyb20gdGhlIGdpdmVuIExQQyB2YXJpYWJsZSBhbmQKKyAgICAgICAgcmV0dXJucyB0aGUgb2JqZWN0IGVuY29kZWQgYXMgYSBMUEMgc3RyaW5nLiBGb3IgY29udGFpbmVyIHR5cGVzIGxpa2UgCisgICAgICAgIGFycmF5cywgbWFwcGluZ3MgYW5kIHN0cnVjdHMsIHRoaXMgd2lsbCBiZSBkb25lIHJlY3Vyc2l2ZWx5LgorICAgICAgICAKKyAgICAgICAgT25seSB0aGUgZm9sbG93aW5nIExQQyB0eXBlcyBhcmUgc2VyaWFsaXplZC4gQWxsIG90aGVyIExQQyB0eXBlcyBjYXVzZQorICAgICAgICBhICBydW50aW1lIGVycm9yLgorICAgICAgICA8aW50PiAgICAgICAgLT4gSlNPTiBpbnQKKyAgICAgICAgPGZsb2F0PiAgICAgIC0+IEpTT04gZG91YmxlCisgICAgICAgIDxzdHJpbmc+ICAgICAtPiBKU09OIHN0cmluZworICAgICAgICA8bWFwcGluZz4gICAgLT4gSlNPTiBvYmplY3RzCisgICAgICAgIDxhcnJheT4gICAgICAtPiBKU09OIGFycmF5cworICAgICAgICA8c3RydWN0PiAgICAgLT4gSlNPTiBvYmplY3RzCisgICAgICAgIAorICAgICAgICBUaGUgZnVuY3Rpb24gaXMgYXZhaWxhYmxlIG9ubHkgaWYgdGhlIGRyaXZlciBpcyBjb21waWxlZCB3aXRoIElrc2VtZWwKKyAgICAgICAgc3VwcG9ydC4gSW4gdGhhdCBjYXNlLCBfX0pTT05fXyBpcyBkZWZpbmVkLiAKKworTElNSVRBVElPTlMgCisgICAgICAgIE9ubHkgbWFwcGluZ3Mgd2l0aCBhIHdpZHRoIG9mIDEgdmFsdWUgcGVyIGtleSBhbmQgb25seSBzdHJpbmcga2V5cworICAgICAgICBjYW4gYmUgc2VyaWFsaXplZC4KKyAgICAgICAgNjQgYml0IHdpZGUgaW50ZWdlcnMgY2FuIG9ubHkgYmUgc2VyaWFsaXplZCBsb3NzbGVzc2x5IG9uIGhvc3RzIHdpdGgKKyAgICAgICAgYSA2NCBiaXQgd2lkZSBMUEMgaW50IGFuZCBqc29uLWMgbGlicmFyeSBuZXdlciB0aGFuIDAuOTAuCisKK0JVR1MKKyAgICAgICAgX19GTE9BVF9NSU5fXyBpcyBub3Qgc2VyaWFsaXplZC9wYXJzZWQgbG9zc2xlc3NseS4KKworRVhBTVBMRVMKKyAgICAgICAganNvbl9zZXJpYWxpemUoNDIpICAgICAgICAgICAgICAtPiAiNDIiCisgICAgICAgIGpzb25fc2VyaWFsaXplKDQyLjApICAgICAgICAgICAgLT4gIjQyLjAiCisgICAgICAgIGpzb25fc2VyaWFsaXplKCJoZWxsbyB3b3JsZFxuIikgLT4gIlwiaGVsbG8gd29ybGRcXG5cIiIKKyAgICAgICAganNvbl9zZXJpYWxpemUoKHsxLDIsMyw0LDUsNn0pKSAtPiAiWyAxLCAyLCAzLCA0LCA1LCA2IF0iCisgICAgICAgIGpzb25fc2VyaWFsaXplKChbICJ0ZXN0IDEiOiA0MiwgInRlc3QgMiI6IDQyLjAgXSkpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0+ICJ7IFwidGVzdCAyXCI6IDQyLjAwMDAwMCwgXCJ0ZXN0IDFcIjogNDIgfSIKKyAgICAgICAgCitISVNUT1JZCisgICAgICAgIEFkZGVkIGluIExETXVkIDMuNS4wCisKK1NFRSBBTFNPCisgICAgICAgIGpzb25fcGFyc2UoRSkKZGlmZiAtLWdpdCBhL2RvYy9lZnVuL2xhbWJkYSBiL2RvYy9lZnVuL2xhbWJkYQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5iMTU2Nzk4Ci0tLSAvZGV2L251bGwKKysrIGIvZG9jL2VmdW4vbGFtYmRhCkBAIC0wLDAgKzEsMjggQEAKK1NZTk9QU0lTCisgICAgICAgIGNsb3N1cmUgbGFtYmRhKG1peGVkICphcnIsIG1peGVkKTsKKworQkVTQ0hSRUlCVU5HCisgICAgICAgIEVyemV1Z3QgZWluZSBMYW1iZGEgQ2xvc3VyZSwgZW50c3ByZWNoZW5kIGRlbiBMYW1kYSBDbG9zdXJlcyBpbiBMSVNQLgorICAgICAgICBEaWUgQ2xvc3VyZSBpc3QgYW4gZGFzIE9iamVrdCBnZWJ1bmRlbiwgZGFzIHNpZSBlcnpldWd0IGhhdCwgdW5kIGthbm4KKyAgICAgICAgZGVzaGFsYiBWZXJ3ZWlzZSBhdWYgZ2xvYmFsZSBWYXJpYWJsZW4gZW50aGFsdGVuLgorCisgICAgICAgIERhcyBlcnN0ZSBBcmd1bWVudCBpc3QgZWluIEFycmF5LCBkYXMgZGllIEFyZ3VtZW50ZSAoU3ltYm9sZSkKKyAgICAgICAgYmVzY2hyZWlidCwgZGllIGRlciBDbG9zdXJlIGJlaSBpaHJlciBBdXN3ZXJ0dW5nIGR1cmNoIGZ1bmNhbGwoKQorICAgICAgICBvZGVyIGFwcGx5KCkgdWViZXJnZWJlbiB3ZXJkZW4uCisKKyAgICAgICAgVm9uIGRlciBWZXJ3ZW5kdW5nIHdpcmQgYXVzIExlc2JhcmtlaXRzLSB1bmQgV2FydHVuZ3NncnVlbmRlbiBkcmluZ2VuZAorICAgICAgICBhYmdlcmF0ZW4uCisKK0JFSVNQSUVMCisgICAgICAgIC8vIExhbWJkYXMgd2VyZGVuIGdlcm4gZWluZ2VzZXR6dCwgdW0ga29tcGxleGVyZSBGaWx0ZXIgenUgc2NocmVpYmVuCisgICAgICAgIC8vIEFsbGVyZGluZ3Mga2FubiBqZWRlIExhbWJkYSBkYWJlaSBhdWNoIGR1cmNoIGVpbmUgSW5saW5lLUNsb3N1cmUKKyAgICAgICAgLy8gb2RlciBlaW5lIExGdW4tQ2xvc3VyZSBlcnNldHp0IHdlcmRlbi4KKyAgICAgICAgZmlsdGVyKHVzZXJzKCksIAorICAgICAgICAgIGxhbWJkYSgoeyd4fSksCisgICAgICAgICAgICAgICAgICh7Iyc9PSwKKyAgICAgICAgICAgICAgICAgICAoeyMnY2FsbF9vdGhlciwneCwiUXVlcnlQcm9wIixQX1NFQ09ORH0pLCJnbG9pbnNvbiIKKyAgICAgICAgICAgICAgICB9KSkpOworCitTSUVIRSBBVUNICisgICAgICAgIFZlcndhbmR0OiB1bmJvdW5kX2xhbWJkYShFKSwgYXBwbHkoRSksIGZ1bmNhbGwoRSksIGJpbmRfbGFtYmRhKEUpCisgICAgICAgIEdlbmVyZWxsOiBjbG9zdXJlcy1hYnN0cmFjdChMUEMpLCBjbG9zdXJlcyhMUEMpCmRpZmYgLS1naXQgYS9kb2MvZWZ1bi9sYXN0X2JpdCBiL2RvYy9lZnVuL2xhc3RfYml0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmQwZDI0NzEKLS0tIC9kZXYvbnVsbAorKysgYi9kb2MvZWZ1bi9sYXN0X2JpdApAQCAtMCwwICsxLDE5IEBACitTWU5PUFNJUworICAgICAgICBpbnQgbGFzdF9iaXQoc3RyaW5nIHN0cik7CisKK0JFU0NIUkVJQlVORworICAgICAgICBMaWVmZXJ0IGRpZSBOdW1tZXIgZGVzIGxldHp0ZW4gZ2VzZXR6dGVuIEJpdHMgaW0gQml0c3RyaW5nIDxzdHI+LgorCisgICAgICAgIEplZGVzIFplaWNoZW4gZW50aGFlbHQgNiBCaXRzLiBBbHNvIGthbm4gaW4gamVkZW0gWmVpY2hlbiBlaW4gV2VydCB2b24KKyAgICAgICAgMCBiaXMgNjMgZ2VzcGVpY2hlcnQgd2VyZGVuICgyXjY9NjQpLiBEYXMgZXJzdGUgWmVpY2hlbiBpc3QgZGVyCisgICAgICAgIExlZXJzY2hsYWcgIiAiIG1pdCBkZW0gV2VydCAwLiBEYXMgZXJzdGUgWmVpY2hlbiBpbSBTdHJpbmcgaXN0IGplbmVzCisgICAgICAgIG1pdCBkZW4gbmllZHJpZ3N0ZW4gQml0cyAoMC01KS4KKworQkVJU1BJRUwKKyAgICAgICAgc3RyaW5nIHM7CisgICAgICAgIHMgPSBzZXRfYml0KCIiLCA0KTsgcyA9IHNldF9iaXQocywgMik7CisgICAgICAgIGxhc3RfYml0KHMpIC0tPiBsaWVmZXJ0IDQKKworU0lFSEUgQVVDSAorICAgICAgICBzZXRfYml0KEUpLCBjbGVhcl9iaXQoRSksIG5leHRfYml0KEUpLCB0ZXN0X2JpdChFKSwgY291bnRfYml0cyhFKSwKKyAgICAgICAgYW5kX2JpdHMoRSksIG9yX2JpdHMoRSksIHhvcl9iaXRzKEUpLCBpbnZlcnRfYml0cyhFKSwgY29weV9iaXRzKEUpCmRpZmYgLS1naXQgYS9kb2MvZWZ1bi9sYXN0X2luc3RydWN0aW9ucyBiL2RvYy9lZnVuL2xhc3RfaW5zdHJ1Y3Rpb25zCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmNhNDQ3ZDkKLS0tIC9kZXYvbnVsbAorKysgYi9kb2MvZWZ1bi9sYXN0X2luc3RydWN0aW9ucwpAQCAtMCwwICsxLDI4IEBACitHRVNDSFVFVFpUCitTWU5PUFNJUworICAgICAgICBzdHJpbmcgKmxhc3RfaW5zdHJ1Y3Rpb25zKGludCBsZW5naHQsIGludCB2ZXJib3NlKTsKKworQkVTQ0hSRUlCVU5HCisgICAgICAgIExpZWZlcnQgZWluIEFycmF5IG1pdCBkZXIgIkxhZW5nZSIgZGVyIHp1bGV0enQgYXVzZ2VmdWVocnRlbgorICAgICAgICBBbndlaXN1bmdlbi4gV2VubiA8dmVyYm9zZT4gdW5nbGVpY2ggMCBpc3QgKHN0YW5kYXJkbWFlc3NpZyBzbyksCisgICAgICAgIHdlcmRlbiBhdWNoIEluZm9zIHp1ciBaZWlsZW5udW1tZXIgYW5nZXplaWd0LiBKZWRlciBTdHJpbmcgaGF0CisgICAgICAgIGZvbGdlbmRlIEZvcm06CisKKyAgICAgICAgICAgIE9wY29kZS1BZHJlc3NlOiBPcGNvZGUgT3BlcmFuZCBNbmVtb25pYyAoU3RhcGVsdGllZmUpIFplaWxlbm51bW1lcgorCisgICAgICAgIERpZSBJbmZvcm1hdGlvbiB6dXIgU3RhcGVsdGllZmUgYmVzdGVodCBhdXMgendlaSBaYWhsZW4gPHJlbD46PGFicz4sCisgICAgICAgIHdvYmVpIDxyZWw+IGRlciByZWxhdGl2ZSBTdGFwZWx2ZXJicmF1Y2ggZGVyIEZ1bmt0aW9uIGlzdCwgPGFicz4gZGVyCisgICAgICAgIGFic29sdXRlIFN0YXBlbHZlcmJyYXVjaC4KKworICAgICAgICBEaWUgSW5mb3JtYXRpb24genVyIFplaWxlbm51bW1lciB3aXJkIGFuZ2VmdWVndCwgd2VubiBkYXMgRmxhZyBnZXNldHp0CisgICAgICAgIGlzdCB1bmQgZWluZSBuZXVlIFplaWxlIGltIFF1ZWxsY29kZSBlcnJlaWNodCB3aXJkLiBFYmVuc28gZXJ6ZXVnZW4KKyAgICAgICAgQXVmcnVmZSB6d2lzY2hlbiBPYmpla3RlbiBlaW5lbiBFaW50cmFnIGltIFJlc3VsdGF0YXJyYXkgKGFsbGVyZGluZ3MKKyAgICAgICAgbnVyLCB3ZW5uIGRhcyB2ZXJib3NlLUZsYWcgZ2VzZXR6dCBpc3QpLiBEaWVzZXIgRWludHJhZyBoYXQgZGllIEZvcm06CisKKyAgICAgICAgICAgIE9iamVrdG5hbWUgUHJvZ3JhbW1uYW1lIFplaWxlbm51bW1lci4KKworICAgICAgICBFcyBnaWJ0IGVpbiB2b3Jrb25maWd1cmllcnRlcyBvYmVyZXMgTGltaXQsIHdpZSB2aWVsZSBJbnN0cnVrdGlvbmVuCisgICAgICAgIHp1cnVlY2t2ZXJmb2xndCB3ZXJkZW4ga29lbm5lbi4KKworU0lFSEUgQVVDSAorICAgICAgICBkZWJ1Z19tZXNzYWdlKEUpCmRpZmYgLS1naXQgYS9kb2MvZWZ1bi9saW1pdGVkIGIvZG9jL2VmdW4vbGltaXRlZApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5jOTY3ODEyCi0tLSAvZGV2L251bGwKKysrIGIvZG9jL2VmdW4vbGltaXRlZApAQCAtMCwwICsxLDY0IEBACitWT1JMQUVVRklHLCBHRVNDSFVFVFpUCitTWU5PUFNJUworICAgICAgICAjaW5jbHVkZSA8c3lzL3J0bGltaXRzLmg+CisKKyAgICAgICAgbWl4ZWQgbGltaXRlZChjbG9zdXJlIGZ1bik7CisgICAgICAgIG1peGVkIGxpbWl0ZWQoY2xvc3VyZSBmdW4sIGludCB0YWcsIGludCB2YWx1ZSwgLi4uKTsKKyAgICAgICAgbWl4ZWQgbGltaXRlZChjbG9zdXJlIGZ1biwgaW50ICpsaW1pdHMgWywgbWl4ZWQgKmFyZ3NdKTsKKworQkVTQ0hSRUlCVU5HCisgICAgICAgIGxpbWl0ZWQoKSBydWZ0IGRpZSBGdW5rdGlvbiA8ZnVuPiBtaXQgZGVuIGJlemVpY2huZXRlbiBBcmd1bWVudGVuCisgICAgICAgIDxhcmdzPiBhdWYgdW5kIGZ1ZWhydCBzaWUgbWl0IGRlbiBnZWdlYmVuZW4gTGF1ZnplaXRsaW1pdGVuIGF1cy4KKworICAgICAgICBCZWltIEVuZGUgZGVyIEZ1bmt0aW9uIDxmdW4+IHdlcmRlbiBkaWUgbW9tZW50YW4gYWt0aXZlbgorICAgICAgICBMYXVmemVpdGxpbWl0ZW4gd2llZGVyaGVyZ2VzdGVsbHQuIGxpbWl0ZWQoKSBsaWVmZXJ0IGRlbgorICAgICAgICBSdWVja2dhYmV3ZXJ0IGRlciBDbG9zdXJlIDxmdW4+IHp1cnVlY2suCisKKyAgICAgICAgRGllIExhdWZ6ZWl0bGltaXRlbiBrb2VubmVuIGluIHp3ZWkgRm9ybWVuIGFuZ2VnZWJlbiB3ZXJkZW46IGFscworICAgICAgICBBcnJheSAod2llIGVzIHZvbiBxdWVyeV9saW1pdHMoKSBnZWxpZWZlcnQgd2lyZCkgb2RlciBhbHMgTGlzdGUgdm9uCisgICAgICAgIFdlcnRlbiBtaXQgVGFncy4gV2lyZCBsaW1pdGVkKCkgb2huZSBBbmdhYmUgdm9uIExpbWl0cyBhdWZnZXJ1ZmVuLAorICAgICAgICBnZWx0ZW4gZGllIExhdWZ6ZWl0bGltaXRlbiBhbHMgJ3VubGltaXRpZXJ0Jy4KKworICAgICAgICBEaWUgTGltaXRlbmVpbnN0ZWxsdW5nIGtlbm50IGRyZWkgc3BlemllbGxlIFdlcnRlIGF1cyA8cnRsaW1pdHMuaD46CisgICAgICAgICAgICBMSU1JVF9VTkxJTUlURUQ6ICAgIGVzIGdpYnQga2VpbiBMaW1pdAorICAgICAgICAgICAgTElNSVRfS0VFUDogICAgICAgICBkYXMgenVsZXR6dCBnZXNldHp0ZSBMaW1pdCB3aXJkIGJlaWJlaGFsdGVuCisgICAgICAgICAgICBMSU1JVF9ERUZBVUxUOiAgICAgIGRpZSAnZ2xvYmFsZW4nIExpbWl0ZW4gd2VyZGVuIHZlcndlbmRldAorCisgICAgICAgIEZ1ZXIgTElNSVRfQ09TVCwgZGllIFNwZXppYWx3ZXJ0ZSBoYWJlbiBkaWVzZSBCZWRldXR1bmc6CisgICAgICAgICAgICBMSU1JVF9VTkxJTUlURUQ6IGRpZSBBdXNmdWVocnVuZyBrb3N0ZW4gbGVkaWdsaWNoIGVpbmVuIFRpY2sKKyAgICAgICAgICAgIExJTUlUX0tFRVA6ICAgICAgTElNSVRfQ09TVCB3aXJkIGF1ZiAwIGdlc2V0enQKKyAgICAgICAgICAgIExJTUlUX0RFRkFVTFQ6ICAgTElNSVRfQ09TVCB3aXJkIGF1ZiAtMTAwIGdlc2V0enQKKworICAgICAgICBsaW1pdGVkKCkgZXJ6ZXVndCBlaW5lIFNjaHV0enZlcmxldHp1bmcgKCJsaW1pdGVkIiwgY3VycmVudF9vYmplY3QsCisgICAgICAgIGZ1biwgbGltaXRzLWFycmF5KS4KKworQkVNRVJLVU5HRU46CisgICAgICAgIERpZXNlIEZ1bmt0aW9uIGthbm4gYmVpIHVucyBtdWRsaWJ3ZWl0IGdlbnV0enQgd2VyZGVuLiBBbGxlcmRpbmdzIHdpcmQKKyAgICAgICAgbnVyIGRpZSBfUmVkdWt0aW9uXyB2b24gTElNSVRfRVZBTCB6dWdlbGFzc2VuLCBhbGxlIGFuZGVyZW4gTGltaXRzCisgICAgICAgIGR1ZXJmZW4gX25pY2h0XyB2ZXJhZW5kZXJ0IHdlcmRlbi4gSGllcmJlaSBpc3QgenUgYmVhY2h0ZW4sIGRhc3MgZGFzCisgICAgICAgIExpbWl0IGZ1ZXIgTElNSVRfRVZBTCB1bSBtaW4uIDEwMDAgVGlja3MgdW50ZXIgZGVuIG5vY2ggdmVyZnVlZ2JhcmVuCisgICAgICAgIFRpY2tzIGxpZWdlbiBtdXNzIChnZXRfZXZhbF9jb3N0KCkpLgorICAgICAgICBGdWVyIExJTUlUX0NPU1Qgc2luZCBudXIgMCB1bmQgLTEwMCB6dWdlbGFzc2VuLgorCitCRUlTUElFTEUKKyAgICAgICAgbGltaXRlZCgjJ2Z1bmN0aW9uKQorICAgICAgICAtLT4gZnVlaHJ0IGRpZSBGdW5rdGlvbiBvaG5lIExpbWl0ZW4gYXVzLgorCisgICAgICAgIGxpbWl0ZWQoIydmdW5jdGlvbiwgKHsgMjAwMDAwIH0pLCAiZm9vIikKKyAgICAgICAgLS0+IGZ1ZWhydCBkaWUgRnVua3Rpb24gbWl0IGVpbmVtIEV2YWwtS29zdGVuIExpbWl0IHZvbiAyMDAwMDAgVGlja3MKKyAgICAgICAgICAgIGF1cy4gRGllIEZ1bmt0aW9uIHdpcmQgYWxzICdmdW5jdGlvbigiZm9vIiknIGF1ZmdlcnVmZW4uCisKKyAgICAgICAgbGltaXRlZChsYW1iZGEoMCwgKHsjJ2Z1bmN0aW9uLCAiZm9vIn0pKSwgTElNSVRfRVZBTCwgMjAwMDAwKQorICAgICAgICAtLT4gZnVlaHJ0IGRpZSBGdW5rdGlvbiBtaXQgZWluZW0gRXZhbC1Lb3N0ZW4gTGltaXQgdm9uIDIwMDAwMCBUaWNrcworICAgICAgICAgICAgYXVzLiBEaWUgRnVua3Rpb24gd2lyZCBhbHMgJ2Z1bmN0aW9uKCJmb28iKScgYXVmZ2VydWZlbi4KKworQUVOREVSVU5HRU4KKyAgICAgICAgRWluZ2VmdWVocnQgaW4gTERNdWQgMy4yLjcuCisgICAgICAgIExETXVkIDMuMy41NjMgZnVlaHJ0ZSBMSU1JVF9DT1NUIGVpbi4KKworU0lFSEUgQVVDSAorICAgICAgICBxdWVyeV9saW1pdHMoRSksIHNldF9saW1pdHMoRSkKKyAgICAgICAgZ2V0X2V2YWxfY29zdChFKQorCisxNi4wNS4yMDA3LCBaZXNzdHJhCisKZGlmZiAtLWdpdCBhL2RvYy9lZnVuL2xpdmluZyBiL2RvYy9lZnVuL2xpdmluZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi42ZjBhODg2Ci0tLSAvZGV2L251bGwKKysrIGIvZG9jL2VmdW4vbGl2aW5nCkBAIC0wLDAgKzEsMTMgQEAKK1NZTk9QU0lTCisgICAgICAgIGludCBsaXZpbmcob2JqZWN0IG9iKTsKKworQkVTQ0hSRUlCVU5HCisgICAgICAgIExpZWZlcnQgMSB6dXJ1ZWNrLCB3ZW5uIDxvYj4gZWluIGxlYmVuZGlnZXMgT2JqZWt0IChsaXZpbmcpIGlzdC4KKyAgICAgICAgPG9iPiBpc3QgbGl2aW5nLCB3ZW5uIGVuYWJsZV9jb21tYW5kcygpIGF1cyA8b2JqPiBhdWZnZXJ1ZmVuIHd1cmRlLgorICAgICAgICA8b2I+IGthbm4gYXVjaCAwIHNlaW4uCisKK0JFSVNQSUVMCisgICAgICAgIGxpdmluZyh0aGlzX3BsYXllcigpKTsgIC0+IERpZXMgbGllZmVydCAoaG9mZmVudGxpY2gpIDEgenVlcnVlY2suCisKK1NJRUhFIEFVQ0gKKyAgICAgICAgZW5hYmxlX2NvbW1hbmRzKEUpCmRpZmYgLS1naXQgYS9kb2MvZWZ1bi9sb2FkX25hbWUgYi9kb2MvZWZ1bi9sb2FkX25hbWUKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZjI2YzFlYQotLS0gL2Rldi9udWxsCisrKyBiL2RvYy9lZnVuL2xvYWRfbmFtZQpAQCAtMCwwICsxLDQ3IEBACitTWU5PUFNJUworICAgICAgICBzdHJpbmcgbG9hZF9uYW1lKCkKKyAgICAgICAgc3RyaW5nIGxvYWRfbmFtZShvYmplY3R8c3RyaW5nIG9iaikKKworQkVTQ0hSRUlCVU5HCisgICAgICAgIERpZSBGdW5rdGlvbiBsaWVmZXJ0IGRlbiBOYW1lbiwgbWl0IGRlbSA8b2JqPiBnZWxhZGVuIHd1cmRlLiA8b2JqPgorICAgICAgICBrYW5uIGRpcmVrdCBhbHMgT2JqZWt0IG9kZXIgYWxzIFN0cmluZyBtaXQgc2VpbmVtIE5hbWVuIGFuZ2VnZWJlbgorICAgICAgICB3ZXJkZW4uCisKKyAgICAgICAgV2VubiA8b2JqPiBlaW4gQ2xvbiBpc3QsIGxpZWZlcnQgZGllIEZ1bmt0aW9uIGRlbiBOYW1lbiBkZXMgQmx1ZXByaW50cy4KKyAgICAgICAgV2VubiA8b2JqPiBlaW4gQmx1ZXByaW50IGlzdCwgbGllZmVydCBkaWUgRnVua3Rpb24gZGVuIE5hbWVuIGRlcyBGaWxlcywKKyAgICAgICAgYXVzIGRlbSBkZXIgQmx1ZXByaW50IGtvbXBpbGllcnQgd3VyZGUuCisKKyAgICAgICAgV2VubiA8b2JqPiB1ZWJlciBzZWluZW4gTmFtZW4gYW5nZWdlYmVuIHd1cmRlLCBhYmVyIG5pY2h0IC8gbmljaHQgbWVocgorICAgICAgICBleGlzdGllcnQsIGdlbmVyaWVydCBkaWUgRnVua3Rpb24gZGVuIE5hbWVuLCB3aWUgZXIgc2VpbiBtdWVzc3RlIHVuZAorICAgICAgICBnaWJ0IGRpZXNlbiB6dXJ1ZWNrLiBXZW5uIGRlciBhbmdlZ2ViZW5lIE5hbWUgdW5ndWVsdGlnIGlzdCwgbGllZmVydAorICAgICAgICBkaWUgRnVua3Rpb24gMC4KKworICAgICAgICBBbHMgU3BlemlhbGZhbGwgbGllZmVydCBkaWUgRnVua3Rpb24gMCwgd2VubiA8b2I+IDAgaXN0LgorCisgICAgICAgIEZ1ZXIgdmlydHVlbGxlIE9iamVrdGUgbGllZmVydCBsb2FkX25hbWUoKSBkZW4gb3JpZ2luYWxlbiBMYWRlbmFtZW4KKyAgICAgICAgZGVzIE9iamVrdHMsIHdlbGNoZXMgZGVyIHZpcnR1ZWxsZSBDb21waWxlciBlcnpldWd0ZS4KKworICAgICAgICBXaXJkIDxvYmo+IG5pY2h0IGFuZ2VnZWJlbiwgd2lyZCBkZXIgTmFtZSBmdWVyIGRhcyBtb21lbnRhbiBndWVsdGlnZQorICAgICAgICBPYmpla3QgYW5nZWdlYmVuLgorCisgICAgICAgIEltIEdlZ2Vuc2F0eiB6dW0gb2JqZWN0X25hbWUoKSBrYW5uIGRlciBsb2FkX25hbWUoKSBuaWNodCBkdXJjaAorICAgICAgICByZW5hbWVfb2JqZWN0KCkgb2RlciBlaW5lbiBWQyB2ZXJhZW5kZXJ0IHdlcmRlbi4gSXN0IGVpbiA8b2JqPiBqZWRvY2gKKyAgICAgICAgZWluZW0gcmVwbGFjZV9wcm9ncmFtKCkgdW50ZXJ3b3JmZW4sIHNwaWVnZWx0IGRlciBsb2FkX25hbWUoKSBuaWNodAorICAgICAgICBtZWhyIGRhcyBlZmZla3RpdmUgVmVyaGFsdGVuIGRlcyBPYmpla3RzIHdpZGVyLgorCitCRUlTUElFTEUKKyAgICAgICAgb2JqZWN0IG87CisgICAgICAgIG8gPSBjbG9uZV9vYmplY3QoIi9zdGQvdGhpbmciKTsKKyAgICAgICAgd3JpdGUobG9hZF9uYW1lKG8pKTsgIC0tPiBsaWVmZXJ0ICIvc3RkL3RoaW5nIiBpbiAhQ29tcGF0IE1vZHVzCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5kICJzdGQvdGhpbmciICBpbSBDb21wYXQgTW9kdXMKKyAgICAgICAgd3JpdGUobG9hZF9uYW1lKCIvc3RkL3RoaW5nIikpOyAgLS0+IGdsZWljaCB3aWUgb2JlbgorICAgICAgICB3cml0ZShsb2FkX25hbWUoIi9zdGQvdGhpbmcjNG41IikpOyAtLT4gbGllZmVydCAwCisKK0dFU0NISUNIVEUKKyAgICAgICAgRWluZ2VmdWVocnQgaW4gTERNdWQgMy4yLjYuCisgICAgICAgIFN0cmluZ3MgYWxzIEFyZ3VtZW50ZSBzaW5kIG1vZWdsaWNoIHNlaXQgMy4yLjguCisgICAgICAgIDAgaXN0IHp1bGFlc3NpZyBzZWl0IDMuMi45LgorCitTSUVIRSBBVUNICisgICAgICAgIGNsb25lX29iamVjdChFKSwgY2xvbmVwKEUpLCBvYmplY3RfbmFtZShFKSwgbG9hZF9vYmplY3QoRSksCisgICAgICAgIHJlcGxhY2VfcHJvZ3JhbShFKSwgcHJvZ3JhbV9uYW1lKEUpLCBwcmVzZW50X2Nsb25lKEUpCmRpZmYgLS1naXQgYS9kb2MvZWZ1bi9sb2FkX29iamVjdCBiL2RvYy9lZnVuL2xvYWRfb2JqZWN0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjg0N2QwYjgKLS0tIC9kZXYvbnVsbAorKysgYi9kb2MvZWZ1bi9sb2FkX29iamVjdApAQCAtMCwwICsxLDIzIEBACitTWU5PUFNJUworICAgICAgICBvYmplY3QgbG9hZF9vYmplY3Qoc3RyaW5nIG5hbWUpCisKK0RFU0NSSVBUSU9OCisgICAgICAgIExvYWQgdGhlIG9iamVjdCBmcm9tIHRoZSBmaWxlIDxuYW1lPiBhbmQgcmV0dXJuIGl0LiBJZiB0aGUKKyAgICAgICAgb2JqZWN0IGFscmVhZHkgZXhpc3RzLCBqdXN0IHJldHVybiBpdC4KKworICAgICAgICBUaGlzIGVmdW4gY2FuIGJlIHVzZWQgb25seSB0byBsb2FkIGJsdWVwcmludHMgLSBmb3IgY2xvbmVzLCB1c2UKKyAgICAgICAgdGhlIGVmdW4gY2xvbmVfb2JqZWN0KCkuCisKKyAgICAgICAgSWYgc3RyaWN0IGV1aWRzIGFyZSBlbmZvcmNlZCwgdGhlIGNsb25pbmcgb2JqZWN0IG11c3QgaGF2ZQorICAgICAgICBhIG5vbi16ZXJvIGV1aWQuCisKK0VYQU1QTEUKKyAgICAgICAgLy8gVXBkYXRlIGFuZCByZWxvYWQgdGhlIHN0YW5kYXJkIHBsYXllciBvYmplY3QKKyAgICAgICAgZGVzdHJ1Y3QoZmluZF9vYmplY3QoIi9zdGQvcGxheWVyIikpOworICAgICAgICBsb2FkX29iamVjdCgiL3N0ZC9wbGF5ZXIiKTsKKworSElTVE9SWQorICAgICAgICBJbnRyb2R1Y2VkIGluIExETXVkIDMuMi42LgorCitTRUUgQUxTTworICAgICAgICBjbG9uZV9vYmplY3QoRSkKZGlmZiAtLWdpdCBhL2RvYy9lZnVuL2xvY2FsdGltZSBiL2RvYy9lZnVuL2xvY2FsdGltZQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5hNTIyZGM0Ci0tLSAvZGV2L251bGwKKysrIGIvZG9jL2VmdW4vbG9jYWx0aW1lCkBAIC0wLDAgKzEsMzkgQEAKK1NZTk9QU0lTCisgICAgICAgICNpbmNsdWRlIDxzeXMvdGltZS5oPgorCisgICAgICAgIGludCAqbG9jYWx0aW1lKGludCBjbG9jayk7CisgICAgICAgIGludCAqbG9jYWx0aW1lKGludCAqdWNsb2NrKTsKKworQkVTQ0hSRUlCVU5HCisgICAgICAgIEludGVycHJldGllcnQgZGFzIEFyZ3VtZW50IDxjbG9jaz4gYWxzIEFuemFobCBTZWt1bmRlbiBzZWl0IGRlbQorICAgICAgICAwMS4gSmFudWFyIDE5NzAsIDAwOjAwOjAwLCB1bmQgZ2lidCBkaWUgWmVpdCBpbiBMb2thbHplaXQgaW4gZWluZXIKKyAgICAgICAgc2F1YmVyZW4gU3RydWt0dXIgenVydWVjay4gV2lyZCA8Y2xvY2s+IG5pY2h0IGFuZ2VnZWJlbiwgd2lyZAorICAgICAgICBzdGFuZGFyZG1hZXNzaWcgdGltZSgpIHZlcndlbmRldC4KKworICAgICAgICBBbHRlcm5hdGl2IGthbm4gYXVjaCBlaW4gQXJyYXkgdm9uIHp3ZWkgWmFobGVuIGFscyBBcmd1bWVudCBhbmdlZ2ViZW4KKyAgICAgICAgd2VyZGVuLiBEYXMgZXJzdGUgRWxlbWVudCB3aXJkIGludGVycHJldGllcnQgd2llIDxjbG9jaz4sIGRhcyB6d2VpdGUKKyAgICAgICAgQXJndW1lbnQgZW50aGFlbHQgZGllIHZlcmdhbmdlbmVuIE1pa3Jvc2VrdW5kZW4gaW4gZGllc2VyIFNla3VuZGUgdW5kCisgICAgICAgIHdpcmQgaWdub3JpZXJ0LgorCisgICAgICAgIERhcyBSZXN1bHRhdCBpc3QgZWluIEFycmF5IG1pdCBmb2xnZW5kZW4gRWxlbWVudGVuOgorCisgICAgICAgICAgICBpbnQgVE1fU0VDICAgICgwKTogIFNla3VuZGUgaW4gZGVyIE1pbnV0ZSAoMC4uNTkpCisgICAgICAgICAgICBpbnQgVE1fTUlOICAgICgxKTogIE1pbnV0ZSBpbiBkZXIgU3R1bmRlICgwLi41OSkKKyAgICAgICAgICAgIGludCBUTV9IT1VSICAgKDIpOiAgU3R1bmRlIGRlcyBUYWdlcyAoMC4uMjMpCisgICAgICAgICAgICBpbnQgVE1fTURBWSAgICgzKTogIFRhZyBpbSBNb25hdCAoMS4uMzEpCisgICAgICAgICAgICBpbnQgVE1fTU9OICAgICg0KTogIE1vbmF0IGRlcyBKYWhyZXMgKDAuLjExKQorICAgICAgICAgICAgaW50IFRNX1lFQVIgICAoNSk6ICBKYWhyICh6LkIuIDIwMDEpCisgICAgICAgICAgICBpbnQgVE1fV0RBWSAgICg2KTogIFdvY2hlbnRhZyAoMC4uNiwgU29ubnRhZyA9IDApCisgICAgICAgICAgICBpbnQgVE1fWURBWSAgICg3KTogIFRhZyBpbSBKYWhyICgwLi4zNjUpCisgICAgICAgICAgICBpbnogVE1fSVNEU1QgICg4KTogIFRSVUU6IERheWxpZ2h0IFNhdmluZyBUaW1lCisKK0JFSVNQSUVMCisgICAgICAgIHByaW50ZigiVG9kYXkgaXMgJXNcbiIsICh7ICJTb25udGFnIiwgIk1vbnRhZyIsICJEaWVuc3RhZyIsCisgICAgICAgICAgICAiTWl0dHdvY2giLCAiRG9ubmVyc3RhZyIsICJGcmVpdGFnIiwgIlNhbXN0YWcifSkKKyAgICAgICAgICAgIFtsb2NhbHRpbWUoKVtUTV9XREFZXV0pOworCitBRU5ERVJVTkdFTgorICAgICAgICBFaW5nZWZ1ZWhydCBpbiBMRE11ZCAzLjIuOQorCitTSUVIRSBBVUNICisgICAgY3RpbWUoRSksIGdtdGltZShFKSwgdGltZShFKSwgdXRpbWUoRSkKZGlmZiAtLWdpdCBhL2RvYy9lZnVuL2xvZyBiL2RvYy9lZnVuL2xvZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4xYjJhYmZmCi0tLSAvZGV2L251bGwKKysrIGIvZG9jL2VmdW4vbG9nCkBAIC0wLDAgKzEsOCBAQAorU1lOT1BTSVMKKyAgICAgICAgZmxvYXQgbG9nKGludHxmbG9hdCBhcmcpOworCitCRVNDSFJFSUJVTkcKKyAgICAgICAgTGllZmVydCBkZW4gbmF0dWVybGljaGVuIExvZ2FyaXRobXVzIHZvbiA8YXJnPi4KKworU0lFSEUgQVVDSAorICAgICAgICBleHAoRSksIHBvdyhFKQpkaWZmIC0tZ2l0IGEvZG9jL2VmdW4vbG93ZXJfY2FzZSBiL2RvYy9lZnVuL2xvd2VyX2Nhc2UKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOTcwMWUyMAotLS0gL2Rldi9udWxsCisrKyBiL2RvYy9lZnVuL2xvd2VyX2Nhc2UKQEAgLTAsMCArMSwxMiBAQAorU1lOT1BTSVMKKyAgICAgICAgc3RyaW5nIGxvd2VyX2Nhc2Uoc3RyaW5nIHN0cik7CisKK0JFU0NIUkVJQlVORworICAgICAgICBLb252ZXJ0aWVydCBhbGxlIFplaWNoZW4gaW4gPHN0cj4gaW4gS2xlaW5idWNoc3RhYmVuIHVuZCBsaWVmZXJ0IGRlbgorICAgICAgICBuZXVlbiBTdHJpbmcuCisKK0JFSVNQSUVMCisgICAgICAgIGxvd2VyX2Nhc2UoIkhhbGxvIFdlTFQhIikgLT4gImhhbGxvIHdlbHQhIgorCitTSUVIRSBBVUNICisgICAgICAgIGNhcGl0YWxpemUoRSksIHVwcGVyX2Nhc2UoRSkKZGlmZiAtLWdpdCBhL2RvYy9lZnVuL21fYWRkIGIvZG9jL2VmdW4vbV9hZGQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNjI0ZjRiOQotLS0gL2Rldi9udWxsCisrKyBiL2RvYy9lZnVuL21fYWRkCkBAIC0wLDAgKzEsMjkgQEAKK1NZTk9QU0lTCisgICAgICAgIG1hcHBpbmcgbV9hZGQobWFwcGluZyBtYXAsIG1peGVkIGtleSwgW21peGVkIGRhdGEsIC4uLl0pOworCitCRVNDSFJFSUJVTkcKKyAgICAgICAgRnVlZ3QgZWluZW4gbmV1ZW4gRWludHJhZyBtaXQgSW5kZXggPGtleT4genVtIE1hcHBpbmcgPG1hcD4gaGluenUKKyAgICAgICAgb2RlciBlcnNldHp0IGRpZXNlbi4gRGFzIHZlcmFlbmRlcnRlIE1hcHBpbmcgd2lyZCBhbHMgRXJnZWJuaXMKKyAgICAgICAgenVydWVjayBnZWxpZWZlcnQuIFdlcnRlLCBkaWUgbmljaHQgenVnZW9yZG5ldCB3ZXJkZW4ga29lbm5lbiwgd2VyZGVuCisgICAgICAgIGFscyAwIGludGVycHJldGllcnQsIGlycmVsZXZhbnRlIEFyZ3VtZW50ZSB3ZXJkZW4gaWdub3JpZXJ0LgorCitCRUlTUElFTEUKKyAgICAgICAgbWFwcGluZyBtOworICAgICAgICBtID0gKFsgImZvbyIgXSk7CisgICAgICAgIG1fYWRkKG0sICJiYXIiLCAxKSAtLT4gKFsgImZvbyIsICJiYXIiIF0pCisKKyAgICAgICAgbSA9IChbICJmb28iOjEgXSk7CisgICAgICAgIG1fYWRkKG0sICJiYXIiLCAxKSAtLT4gKFsgImZvbyI6MSwgImJhciI6MSBdKQorCisgICAgICAgIG0gPSAoWyAiZm9vIjoxOzIgXSk7CisgICAgICAgIG1fYWRkKG0sICJiYXIiLCAxKSAtLT4gKFsgImZvbyI6MTsyLCAiYmFyIjoxOzAgXSkKKworICAgICAgICBhcHBseSgjJ21fYWRkLCBtLCAiYmF6IiwgKHsgNCwgNSB9KSkKKyAgICAgICAgLS0+IChbICJmb28iOjE7MiwgImJhciI6MTswLCAiYmF6Ijo0OzUgXSkKKworQUVOREVSVU5HRU4KKyAgICAgICAgRWluZ2VmdWVocnQgaW4gTERNdWQgMy4yLjkuCisKK1NJRUhFIEFVQ0gKKyAgICAgICAgbWFwcGluZ3AoRSksIG1rbWFwcGluZyhFKSwgbV9kZWxldGUoRSksIG1fZW50cnkoRSksIG1faW5kaWNlcyhFKSwKKyAgICAgICAgbV92YWx1ZXMoRSksIHNpemVvZihFKSwgd2lkdGhvZihFKQpkaWZmIC0tZ2l0IGEvZG9jL2VmdW4vbV9hbGxvY2F0ZSBiL2RvYy9lZnVuL21fYWxsb2NhdGUKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMjU1ZjNiOQotLS0gL2Rldi9udWxsCisrKyBiL2RvYy9lZnVuL21fYWxsb2NhdGUKQEAgLTAsMCArMSw0NiBAQAorU1lOT1BTSVMKKyAgICAgICAgbWFwcGluZyBtX2FsbG9jYXRlKGludCBzaXplKQorICAgICAgICBtYXBwaW5nIG1fYWxsb2NhdGUoaW50IHNpemUsIGludCB3aWR0aCkKKworQkVTQ0hSRUlCVU5HCisgICAgICAgIERpZSBGdW5rdGlvbiByZXNlcnZpZXJ0IFNwZWljaGVyIGZ1ZXIgZWluIE1hcHBpbmcuIDxzaXplPiBpc3QgZGllCisgICAgICAgIEFuemFobCBFaW50cmFlZ2UgKGQuaC4gZGllIEFuemFobCBLZXlzKSwgPHdpZHRoPiBpc3QgZGllIEFuemFobAorICAgICAgICBEYXRlbmVpbnRyYWVnZSBwcm8gS2V5LiBXaXJkIDx3aWR0aD4gbmljaHQgYW5nZWdlYmVuLCB3ZXJkZW4gS2V5cworICAgICAgICBtaXQgZWluZW0gRGF0ZW5lbGVtZW50IGVyemV1Z3QuCisKKyAgICAgICAgRGllIEZ1bmt0aW9uIGlzdCBudXIgc2lubnZvbGwsIHdlbm4gbWFuIGVpbiBNYXBwaW5nIGVyemV1Z3QsIGRlc3NlbgorICAgICAgICB1bmdlZmFlaHJlIEdyb2Vzc2Ugdm9uIHZvcm5oZXJlaW4gYmVrYW5udCBpc3QsIHVtIHNvIGRlbiBPdmVyaGVhZAorICAgICAgICB2b24gd2llZGVyaG9sdGVuIFNwZWljaGVyYWxsb2thdGlvbiB6dSBtaW5pbWllcmVuLiBXZW5uIG5pY2h0IGFsbGUKKyAgICAgICAgYWxsb3ppZXJ0ZW4gRGF0ZW5lbGVtZW50ZSBtaXQgRGF0ZW4gYmVzdHVlY2t0IHdlcmRlbiwgd2VyZGVuIGRpZQorICAgICAgICBVZWJlcmJsZWlic2VsIGVpbmlnZSBaZWl0IHNwYWV0ZXIgYmVpIEdlbGVnZW5oZWl0IHdpZWRlciBmcmVpZ2VnZWJlbgorICAgICAgICAocy4gQmVtZXJrdW5nZW4pLgorICAgICAgICBtX2FsbG9jYXRlKCkgaXN0IGF1Y2ggbnVldHpsaWNoLCB3ZW5uIGVpbiBNYXBwaW5nIGJlc3RpbW10ZXIgQnJlaXRlCisgICAgICAgIGVyemV1Z3Qgd2VyZGVuIHNvbGwsIG9obmUgYmVyZWl0cyBkaWUgRGF0ZW4genUgZGVuIEtleXMgYmVyZWl0IHp1CisgICAgICAgIHN0ZWxsZW4uCisKKyAgICAgICAgV2VubiBibG9zcyBlaW4gbGVlcmVzIE1hcHBpbmcgYmVzdGltbXRlciBCcmVpdGUgZXJ6ZXVndCB3ZXJkZW4gc29sbCwKKyAgICAgICAgc28ga2FubiBmb2xnZW5kZSBOb3RhdGlvbiB2ZXJ3ZW5kZXQgd2VyZGVuOgorCisgICAgICAgIChbIF0pIDogZXJ6ZXVndCBlaW4gbGVlcmVzIE1hcHBpbmcgbWl0IEJyZWl0ZSAxLgorICAgICAgICAoWzo8d2lkdGg+XSkgOiBlcnpldWd0IGVpbiBsZWVyZXMgTWFwcGluZyBkZXIgQnJlaXRlIDx3aWR0aD4sCisgICAgICAgICAgICB3b2JlaSA8d2lkdGg+IGVpbmUgYmVsaWViaWdlIEFud2Vpc3VuZyBzZWluIGthbm4sIGRpZSBlaW5lCisgICAgICAgICAgICBJbnRlZ2VyemFobCB6dXJ1ZWNrIGxpZWZlcnQuIFRhdHNhZWNobGljaCB3aXJkIGRpZXNlIE5vdGF0aW9uCisgICAgICAgICAgICBhbHMgJ21fYWxsb2NhdGUoMCwgPHdpZHRoPiknIGtvbXBpbGllcnQuCisKK0JFSVNQSUVMRQorICAgICAgICBtX2FsbG9jYXRlKDMsNykgLT4gZXJ6ZXVndCBlaW4gTWFwcGluZyBtaXQgNyBXZXJ0ZW4gcHJvIEtleSB1bmQgUGxhdHoKKyAgICAgICAgICAgZnVlciAzIEVpbnRyYWVnZS4KKyAgICAgICAoWzoyKjNdKSAtPiBlbnRzcHJpY2h0IG1fYWxsb2NhdGUoMCw2KS4KKworQkVNRVJLVU5HRU4KKyAgICAgICAgVW5nZW51dHplciBTcGVpY2hlciBkZXMgYWxsb3ppZXJ0ZW4gTWFwcGlucyB3aXJkIHdhZWhyZW5kIGRlcyBzb2cuCisgICAgICAgIEtvbXBha3RpZXJlbnMgZGVzIE1hcHBpbmdzIGZyZWlnZWdlYmVuLiBEaWVzIHBhc3NpZXJ0IHdhZWhyZW5kIGVpbmVzCisgICAgICAgICJkYXRhIGNsZWFudXBzIiBvZGVyIGVpbmVyICJnYXJiYWdlIGNvbGxlY3Rpb24iLiBEaWUgWmVpdCB6d2lzY2hlbgorICAgICAgICAiZGF0YSBjbGVhbnVwcyIgaXN0IG1pdCBjb25maWd1cmVfZHJpdmVyKCkga29uZmlndXJpZXJiYXIuCisKK0dFU0NISUNIVEUKKyAgICAgICAgVW1iZW5hbm50IHZvbiBhbGxvY2F0ZV9tYXBwaW5nKCkgaW4gTERNdWQgMy4yLjYuCisgICAgICAgIERpZSAoWzo8d2lkdGg+XSkgTm90YXRpb24gd3VyZGUgaW4gMy4yLjkgZWluZ2VmdWVocnQuCisKK1NJRUhFIEFVQ0gKKyAgICAgICAgbWFwcGluZ3MoTFBDKSwgd2Fsa19tYXBwaW5nKEUpLCBnZXRfdHlwZV9pbmZvKEUpLCBtX3JlYWxsb2NhdGUoRSkKZGlmZiAtLWdpdCBhL2RvYy9lZnVuL21fY29udGFpbnMgYi9kb2MvZWZ1bi9tX2NvbnRhaW5zCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmU5NDFmZjMKLS0tIC9kZXYvbnVsbAorKysgYi9kb2MvZWZ1bi9tX2NvbnRhaW5zCkBAIC0wLDAgKzEsMTggQEAKK1NZTk9QU0lTCisgICAgICAgIGludCBtX2NvbnRhaW5zKG1peGVkICZkYXRhMSwgLi4uICwgJmRhdGFOLCBtYXBwaW5nIG1hcCwgbWl4ZWQga2V5KTsKKworQkVTQ0hSRUlCVU5HCisgICAgICAgIFdlbm4gPG1hcD4gZGVuIEtleSA8a2V5PiBlbnRoYWVsdCwgd2VyZGVuIGRpZSBlbnRzcHJlY2hlbmRlbiBXZXJ0ZQorICAgICAgICBkZW4gRGF0ZW5hcmd1bWVudGVuIHZvbiA8a2V5PiB6dWdlb3JkbmV0LCB3ZWxjaGUgcGVyIFJlZmVyZW56CisgICAgICAgIHVlYmVyZ2ViZW4gd2VyZGVuIG11ZXNzZW4uIG1fY29udGFpbnMgbGllZmVydCBpbiBkaWVzZW0gRmFsbCAxIHp1cnVlY2suCisgICAgICAgIFdlbm4gPGtleT4gbmljaHQgaW4gPG1hcD4gZW50aGFsdGVuIGlzdCwgbGllZmVydCBkaWUgRnVua3Rpb24gMAorICAgICAgICB6dXJ1ZWNrIHVuZCBkaWUgRGF0ZW5hcmd1bWVudGUgYmxlaWJlbiB1bnZlcmFlbmRlcnQuCisKKyAgICAgICAgTWFuIGthbm4gZGllc2UgRnVua3Rpb24gYXVjaCBmdWVyIDAtV2VydCBNYXBwaW5ncyB2ZXJ3ZW5kZW4sIHdvYmVpCisgICAgICAgIHNpZSBkZW4gZ2xlaWNoZW4gRWZmZWt0IHdpZSBtZW1iZXIoRSkgaGF0LgorCitBRU5ERVJVTkdFTgorICAgICAgICBVbWJlbmFubnQgdm9uICdtYXBwaW5nX2NvbnRhaW5zJyBpbiBMRE11ZCAzLjIuNi4KKworU0lFSEUgQVVDSAorICAgICAgICBtX2VudHJ5KEUpLCBtYXBwaW5ncyhMUEMpLCBtZW1iZXIoRSkKZGlmZiAtLWdpdCBhL2RvYy9lZnVuL21fZGVsZXRlIGIvZG9jL2VmdW4vbV9kZWxldGUKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYmI5ZDQ1MwotLS0gL2Rldi9udWxsCisrKyBiL2RvYy9lZnVuL21fZGVsZXRlCkBAIC0wLDAgKzEsMTEgQEAKK1NZTk9QU0lTCisgICAgICAgIG1hcHBpbmcgbV9kZWxldGUobWFwcGluZyBtYXAsIG1peGVkIGtleSkKKworQkVTQ0hSRUlCVU5HCisgICAgICAgIExvZXNjaHQgZGVuIEVpbnRyYWcgbWl0IGRlbSBJbmRleCA8a2V5PiBhdXMgZGVtIE1hcHBpbmcgPG1hcD4gdW5kCisgICAgICAgIGxpZWZlcnQgZGFzIHZlcmFlbmRlcnRlIE1hcHBpbmcgenVydWVjay4gV2VubiA8bWFwPiBrZWluZW4gRWludGFnCisgICAgICAgIG1pdCBkZW0gSW5kZXggPGtleT4gZW50aGFlbHQsIHdpcmQgbmljaHRzIHZlcmFlbmRlcnQuCisKK1NJRUhFIEFVQ0gKKyAgICAgICAgbWFwcGluZ3AoRSksIG1rbWFwcGluZyhFKSwgbV9hZGQoRSksIG1faW5kaWNlcyhFKSwgbV92YWx1ZXMoRSksCisgICAgICAgIHNpemVvZihFKSwgd2lkdGhvZihFKQpkaWZmIC0tZ2l0IGEvZG9jL2VmdW4vbV9lbnRyeSBiL2RvYy9lZnVuL21fZW50cnkKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMjBlYTJhZgotLS0gL2Rldi9udWxsCisrKyBiL2RvYy9lZnVuL21fZW50cnkKQEAgLTAsMCArMSwyNCBAQAorU1lOT1BTSVMKKyAgICAgICAgKm1peGVkIG1fZW50cnkobWFwcGluZyBtYXAsIG1peGVkIGtleSk7CisKK0JFU0NIUkVJQlVORworICAgICAgICBEdXJjaHN1Y2h0IGRhcyBNYXBwaW5nIDxtYXA+IG5hY2ggZGVtIEVpbnRyYWcgbWl0IEluZGV4IDxrZXk+IHVuZAorICAgICAgICBsaWVmZXJ0IGFsbGUgV2VydGUgdm9uIDxrZXk+IGluIGVpbmVtIEFycmF5IHp1cnVlY2suCisKKyAgICAgICAgV2VubiA8bWFwPiBrZWluZW4gRWludHJhZyBtaXQgSW5kZXggPGtleT4gZW50aGFlbHQsIGxpZWZlcnQKKyAgICAgICAgbV9lbnRyeSgpIDAuCisKK0JFSVNQSUVMCisgICAgICAgIG1hcHBpbmcgbSA9IChbMToiYmxhIjotMSwgMjoiZmFzZWwiOi0yIF0pCisgICAgICAgIG1fZW50cnkobSwgMCkgLT4gMAorICAgICAgICBtX2VudHJ5KG0sIDEpIC0+ICh7ImJsYSIsIC0xfSkKKworQUVOREVSVU5HRU4KKyAgICAgICAgRWluZ2VmdWVocnQgaW4gTERNdWQgMy4yLjEwLgorCitBTk1FS1JVTkcKKyAgICAgICAgTWl0IGRlciBFZnVuIG1fYWRkKCkga29lbm5lbiBhbGxlIFdlcnRlIGVpbmVzIEVpbnRyYWdlcyBhdWYgZWlubWFsCisgICAgICAgIGFkZGllcnQgd2VyZGVuLgorCitTSUVIRSBBVUNICisgICAgICAgIG1fYWRkKEUpLCBtX2NvbnRhaW5zKEUpLCBtYXBwaW5ncyhMUEMpLCBtZW1iZXIoRSkKZGlmZiAtLWdpdCBhL2RvYy9lZnVuL21faW5kaWNlcyBiL2RvYy9lZnVuL21faW5kaWNlcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi40ZDg0YzRlCi0tLSAvZGV2L251bGwKKysrIGIvZG9jL2VmdW4vbV9pbmRpY2VzCkBAIC0wLDAgKzEsOSBAQAorU1lOT1BTSVM6CisJbWl4ZWQgKm1faW5kaWNlcyhtYXBwaW5nIG1hcCkKKworREVTQ1JJUFRJT046CisJUmV0dXJuIGFuIGFycmF5IGNvbnRhaW5pbmcgdGhlIGluZGljZXMgb2YgbWFwcGluZyAnbWFwJy4KKworU0VFIEFMU086CisJbWFwcGluZ3AoRSksIG1rbWFwcGluZyhFKSwgbV92YWx1ZXMoRSksIG1fZGVsZXRlKEUpLAorCXNpemVvZihFKSwgd2lkdGhvZihFKQpkaWZmIC0tZ2l0IGEvZG9jL2VmdW4vbV9yZWFsbG9jYXRlIGIvZG9jL2VmdW4vbV9yZWFsbG9jYXRlCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjYyN2JjOTcKLS0tIC9kZXYvbnVsbAorKysgYi9kb2MvZWZ1bi9tX3JlYWxsb2NhdGUKQEAgLTAsMCArMSwyMyBAQAorU1lOT1BTSVMKKyAgICAgICAgbWFwcGluZyBtX3JlYWxsb2NhdGUobWFwcGluZyBtLCBpbnQgd2lkdGgpOworCitCRVNDSFJFSUJVTkcKKyAgICAgICAgRXJ6ZXVndCBlaW4gbmV1ZXMgTWFwcGluZyBtaXQgPHdpZHRoPiBXZXJ0ZW4gcHJvIEtleSB1bmQgZnVlbGx0IGRhcworICAgICAgICBNYXBwaW5nIG1pdCBkZW4gV2VydGVuIGF1cyA8bT4uIFdlbm4gPG0+IHdlbmlnZXIgYWxzIDx3aWR0aD4gV2VydGUKKyAgICAgICAgcHJvIEtleSBoYXQsIHdlcmRlbiBpbSBuZXVlbiBNYXBwaW5nIGRpZSByZXN0bGljaGVuIFdlcnRlIGF1ZiAwCisgICAgICAgIGdlc2V0enQuIFdlbm4gPG0+IG1laHIgYWxzIDx3aWR0aD4gV2VydGUgcHJvIEtleSBoYXQsIHdlcmRlbiBkaWUKKyAgICAgICAgdWViZXJ6YWVobGlnZW4gV2VydGUgaWdub3JpZXJ0LgorCisgICAgICAgIERhcyB1cnNwcnVlbmdsaWNoZSBNYXBwaW5nIDxtPiB3aXJkIG5pY2h0IHZlcmFlbmRlcnQuCisKK0JFSVNQSUVMCisgICAgICAgIG1hcHBpbmcgbSA9IChbICJmb28iOjE7MjszLCAiYmFyIjo0OzU7NiBdKQorCisgICAgICAgIG1fcmVhbGxvY2F0ZShtLCAxKSAtLT4gbGllZmVydCAoWyAiZm9vIjoxLCAgICAgICAiYmFyOjQgXSkKKyAgICAgICAgbV9yZWFsbG9jYXRlKG0sIDQpIC0tPiBsaWVmZXJ0IChbICJmb28iOjE7MjszOzAsICJiYXI6NDs1OzY7MCBdKQorCitBRU5ERVJVTkdFTgorICAgIEVpbmdlZnVlaHJ0IGluIExETXVkIDMuMi42LCBhdWYgVm9yc2NobGFnIHZvbiBUdWJNdWQuCisKK1NJRUhFIEFVQ0gKKyAgICAgICAgbV9hbGxvY2F0ZShFKSwgbV92YWx1ZXMoRSksIHdpZHRob2YoRSkKZGlmZiAtLWdpdCBhL2RvYy9lZnVuL21fdmFsdWVzIGIvZG9jL2VmdW4vbV92YWx1ZXMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNGI5NDE1NAotLS0gL2Rldi9udWxsCisrKyBiL2RvYy9lZnVuL21fdmFsdWVzCkBAIC0wLDAgKzEsMTQgQEAKK1NZTk9QU0lTOgorICAgICAgICBtaXhlZCAqbV92YWx1ZXMobWFwcGluZyBtYXApCisgICAgICAgIG1peGVkICptX3ZhbHVlcyhtYXBwaW5nIG1hcCwgaW50IGluZGV4KQorCitERVNDUklQVElPTjoKKyAgICAgICBJZiBpbmRleCBpcyAwIG9yIG5vdCBnaXZlbiwgcmV0dXJuIGFuIGFycmF5IHdpdGggdGhlIGZpcnN0IHZhbHVlcyBvZiAKKyAgICAgICBtYXBwaW5nICdtYXAnLgorICAgICAgIEZvciB2YWx1ZXMgb2YgaW5kZXggPjAsIHJldHVybiBhbiBhcnJheSB3aXRoIHRoZSBjb3JyZXNwb25kaW5nIGhpZ2hlcgorICAgICAgIHZhbHVlcyBvZiBtYXBwaW5nICdtYXAnLCBpLmUuIG1fdmFsdWVzKG1hcCwyKSByZXR1cm5zIHRoZSB0aGlyZCAKKyAgICAgICB2YWx1ZXMuCisKK1NFRSBBTFNPOgorICAgICAgIG1hcHBpbmdwKEUpLCBta21hcHBpbmcoRSksIG1faW5kaWNlcyhFKSwgbV9kZWxldGUoRSksCisgICAgICAgc2l6ZW9mKEUpLCB3aWR0aG9mKEUpLCBtYXBwaW5ncyhMUEMpCmRpZmYgLS1naXQgYS9kb2MvZWZ1bi9tYWtlX3NoYXJlZF9zdHJpbmcgYi9kb2MvZWZ1bi9tYWtlX3NoYXJlZF9zdHJpbmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uM2JiNjczMgotLS0gL2Rldi9udWxsCisrKyBiL2RvYy9lZnVuL21ha2Vfc2hhcmVkX3N0cmluZwpAQCAtMCwwICsxLDI0IEBACitWRVJBTFRFVAorU1lOT1BTSVMKKyAgICAgICAgc3RyaW5nIG1ha2Vfc2hhcmVkX3N0cmluZyAoc3RyaW5nIHN0cik7CisKK0JFU0NIUkVJQlVORworICAgICAgICBGdWVndCA8c3RyPiBpbiBkaWUgVGFiZWxsZSBkZXIgZ2VtZWluc2FtIHZlcndlbmRldGVuIFN0cmluZyBkZXMgU3BpZWxzCisgICAgICAgIGVpbi4KKworICAgICAgICBXZW5uIGVpbiBTdHJpbmcgdm9uIG1laHJlcmVuIFZhcmlhYmxlbiAvIE9iamVrdGVuIHZlcndlbmRldCB3aXJkLAorICAgICAgICBzcGFydCBkaWVzIFNwZWljaGVyLiBLZXlzIHZvbiBBbGlzdHMgdW5kIE1hcHBpbmdzIHNpbmQgaW1tZXIgZ2VtZWluc2FtCisgICAgICAgIHZlcndlbmRldGUgU3RyaW5ncy4KKworICAgICAgICBJbiBMRE11ZCAzLjMgaXN0IGRpZXNlIEZ1bmt0aW9uIG5pY2h0IGxhZW5nZXIgbnVldHpsaWNoOiBTdHJpbmdzCisgICAgICAgIHdlcmRlbiBzb3dpZXNvIHNvIHdlaXQgd2llIG1vZWdsaWNoIGdlbWVpbnNhbSB2ZXJ3ZW5kZXQsIHVuZCBkZXIKKyAgICAgICAgRHJpdmVyIHdhbmRlbHQgdW50YWJsaWVydGUgU3RyaW5ncyBuYWNoIGVpbmlnZXIgWmVpdCBhdXRvbWF0aXNjaCBpbgorICAgICAgICB0YWJsaWVydGUgU3RyaW5ncyB1bSB1bQorCitCVUdTCisgICAgICAgIEVpbiBiZXNzZXJlcyBTdHJpbmdoYW5kbGluZyBpbSBEcml2ZXIgc29sbHRlIGRpZXNlIEVmdW4gdWViZXJmbHVlc3NpZworICAgICAgICBtYWNoZW4uCisKK0FFTkRFUlVOR0VOCisgICAgICAgIEVpbmdlZnVlaHJ0IGluIExETXVkIDMuMi42LCBhdWYgVm9yc2NobGFnIHZvbiBUdWJNdWQuCisgICAgICAgIFZlcmFsdGV0IHNlaXQgTERNdWQgMy4zIC4KZGlmZiAtLWdpdCBhL2RvYy9lZnVuL21hcCBiL2RvYy9lZnVuL21hcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44MDhmMDY1Ci0tLSAvZGV2L251bGwKKysrIGIvZG9jL2VmdW4vbWFwCkBAIC0wLDAgKzEsOTMgQEAKK1NZTk9QU0lTCisgICAgICAgIG1peGVkICogbWFwKG1peGVkICphcmcsIHN0cmluZyBmdW5jLCBzdHJpbmd8b2JqZWN0IG9iLCBtaXhlZCBleHRyYS4uLikKKyAgICAgICAgbWl4ZWQgKiBtYXAobWl4ZWQgKmFyZywgY2xvc3VyZSBjbCwgbWl4ZWQgZXh0cmEuLi4pCisgICAgICAgIG1peGVkICogbWFwKG1peGVkICphcmcsIG1hcHBpbmcgbSBbLCBpbnQgaWR4XSkKKworICAgICAgICBtaXhlZCAqIG1hcChzdHJ1Y3QgYXJnLCBzdHJpbmcgZnVuYywgc3RyaW5nfG9iamVjdCBvYiwgbWl4ZWQgZXh0cmEuLi4pCisgICAgICAgIG1peGVkICogbWFwKHN0cnVjdCBhcmcsIGNsb3N1cmUgY2wsIG1peGVkIGV4dHJhLi4uKQorICAgICAgICBtaXhlZCAqIG1hcChzdHJ1Y3QgYXJnLCBtYXBwaW5nIG0gWywgaW50IGlkeF0pCisKKyAgICAgICAgbWFwcGluZyBtYXAobWFwcGluZyBhcmcsIHN0cmluZyBmdW5jLCBzdHJpbmd8b2JqZWN0IG9iLCBtaXhlZCBleHRyYS4uLikKKyAgICAgICAgbWFwcGluZyBtYXAobWFwcGluZyBhcmcsIGNsb3N1cmUgY2wsIG1peGVkIGV4dHJhLi4uKQorCisgICAgICAgIHN0cmluZyBtYXAoc3RyaW5nIGFyZywgc3RyaW5nIGZ1bmMsIHN0cmluZ3xvYmplY3Qgb2IsIG1peGVkIGV4dHJhLi4uKQorICAgICAgICBzdHJpbmcgbWFwKHN0cmluZyBhcmcsIGNsb3N1cmUgY2wsIG1peGVkIGV4dHJhLi4uKQorICAgICAgICBzdHJpbmcgbWFwKHN0cmluZyBhcmcsIG1hcHBpbmcgbSBbLCBpbnQgaWR4XSkKKworQkVTQ0hSRUlCVU5HCisgICAgICAgIFJ1ZnQgZGllIEZ1bmt0aW9uIDxvYj4tPjxmdW5jPigpIGJ6dy4gZGllIENsb3N1cmUgPGNsPiBmdWVyIGplZGVzCisgICAgICAgIEVsZW1lbnQgZGVzIFN0cmluZ3MsIEFycmF5cywgTWFwcGluZ3Mgb2RlciBkZXIgU3RydWt0dXIgPGFyZz4gYXVmCisgICAgICAgIHVuZCBsaWVmZXJ0IGVpbiBSZXN1bHRhdCwgZGFzIGF1cyBkZW4gdmVyc2NoaWVkZW5lbiBSdWVja2dhYmV3ZXJ0ZW4KKyAgICAgICAgZXJzdGVsbHQgd3VyZGUuCisKKyAgICAgICAgV3VyZGUgPG9iPiBuaWNodCBhbmdlZ2ViZW4sIG9kZXIgaXN0IGVzIHdlZGVyIGVpbiBTdHJpbmcgbm9jaCBlaW4KKyAgICAgICAgT2JqZWt0LCB3aXJkIHN0YXR0ZGVzc2VuIHRoaXNfb2JqZWN0KCkgdmVyd2VuZGV0LgorCisgICAgICAgIElzdCA8YXJnPiBlaW4gQXJyYXksIGVpbiBTdHJpbmcgb2RlciBlaW5lIFN0cnVrdHVyLCB3aXJkIGRpZSBGdW5rdGlvbgorICAgICAgICBtaXQgamVkZW0gRWxlbWVudCBkZXMgQXJyYXlzIGFscyBlcnN0ZW0gUGFyYW1ldGVyIGF1ZmdlcnVmZW4sIGdlZm9sZ3QKKyAgICAgICAgdm9uIGRlbiA8ZXh0cmE+IEFyZ3VtZW50ZW4uIERhcyBSZXN1bHRhdCBkZXIgRWZ1biBpc3QgZWluIEFycmF5LCBkYXMKKyAgICAgICAgZGllIFJ1ZWNrZ2FiZXdlcnRlIGRlciBGdW5rdGlvbnNhdWZydWZlIGVudGhhZWx0LiBNYW4ga29lbm50ZSBkaWUKKyAgICAgICAgT3BlcmF0aW9uIG1hcCgpIGRlc2hhbGIgdW1zY2hyZWliZW4gYWxzOgorCisgICAgICAgICAgICBmb3JlYWNoKGluZGV4KSByZXN1bHRbaW5kZXhdID0gb2ItPmZ1bmMoYXJnW2luZGV4XSwgZXh0cmEuLi4pCisKKyAgICAgICAgSXN0IDxhcmc+IGVpbiBBcnJheSwgZWluIFN0cmluZyBvZGVyIGVpbmUgU3RydWt0dXIsIHVuZCB3dXJkZSBzdGF0dAorICAgICAgICBlaW5lciBGdW5rdGlvbiBlaW4gTWFwcGluZyBhbmdlZ2ViZW4sIHNvIGxpZWZlcnQgbWFwKCkgZWluIEFycmF5IG1pdAorICAgICAgICBkZW4gV2VydGVuLCBkaWUgaW0gTWFwcGluZyBhbiBTdGVsbGUgZGVyIHVyc3BydWVuZ2xpY2hlbiBXZXJ0ZSBzdGVoZW4sCisgICAgICAgIGJ6dy4gbWl0IGRlbiBPcmlnaW5hbHdlcnRlbiwgd2VubiBmdWVyIHNpZSBrZWluIE1hcHBpbmdlaW50cmFnCisgICAgICAgIGV4aXN0aWVydC4gSXN0IDxpZHg+IGFuZ2VnZWJlbiwgc28gd2lyZCBkaWUgZW50c3ByZWNoZW5kZSBTcGFsdGUgZGVzCisgICAgICAgIE1hcHBpbmdzIHZlcndlbmRldC4gTWl0IGFuZGVyZW4gV29ydGVuOgorCisgICAgICAgICAgICBmb3JlYWNoKGluZGV4KQorICAgICAgICAgICAgICAgIGlmIChhcmdbaW5kZXhdIGlzdCBlaW4gS2V5IGluIDxhcmc+KQorICAgICAgICAgICAgICAgICAgICByZXN1bHRbaW5kZXhdID0gbWFwW2FyZ1tpbmRleF1dIG9kZXIgbWFwW2FyZ1tpbmRleF1dCisgICAgICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgICAgICByZXN1bHRbaW5kZXhdID0gYXJnW2luZGV4XQorCisgICAgICAgIElzdCA8YXJnPiBlaW4gTWFwcGluZywgd2lyZCBkaWUgRnVua3Rpb24gZnVlciBqZWRlbiBLZXkgZGVzIE1hcHBpbmdzCisgICAgICAgIGFscyBlcnN0ZW0gUGFyYW1ldGVyIHVuZCBkZW4gRGF0ZW53ZXJ0ZW4gKHNvZmVybiB2b3JoYW5kZW4pIGFscworICAgICAgICB6dXNhZXR6bGljaGUgQXJndW1lbnRlIGF1ZmdlcnVmZW4sIGdlZm9sZ3Qgdm9uIGRlbiA8ZXh0cmE+IEFyZ3VtZW50ZW4uCisgICAgICAgIERpZSA8ZXh0cmE+IEFyZ3VtZW50ZSBkdWVyZmVuIGtlaW5lIGdlc2NodWV0enRlbiBSZWZlcmVuemVuIGVudGhhbHRlbgorICAgICAgICAod2llIHouQi4gJihpWzBdKSkuIERhcyBFcmdlYm5pcyBkZXIgRWZ1biBpc3QgZWluIE1hcHBpbmcsIGRhcyBkaWUKKyAgICAgICAgUmVzdWx0YXRlIGRlciBGdW5rdGlvbnNhdWZydWZlIGFscyBadW9yZG51bmcgenVtIGpld2VpbGlnZW4gS2V5CisgICAgICAgIGVudGhhZWx0LgorCisgICAgICAgIEFiaGFlbmdpZyB2b24gZGVyIEJyZWl0ZSBkZXMgTWFwcGluZ3MgPGFyZz4sIGthbm4gZGllIE9wZXJhdGlvbgorICAgICAgICB1bXNjaHJpZWJlbiB3ZXJkZW4gYWxzOgorCisgICAgICAgICAgICBmb3JlYWNoIChrZXkgaW4gYXJnKQorICAgICAgICAgICAgICAgIHN3aXRjaCAod2lkdGhvZihhcmcpKQorICAgICAgICAgICAgICAgIGNhc2UgMDoKKyAgICAgICAgICAgICAgICAgICAgcmVzdWx0W2tleV0gPSBvYi0+ZnVuYyhrZXksIDAsIGV4dHJhLi4uKQorICAgICAgICAgICAgICAgIGNhc2UgMToKKyAgICAgICAgICAgICAgICAgICAgcmVzdWx0W2tleV0gPSBvYi0+ZnVuYyhrZXksIGFyZ1trZXldLCBleHRyYS4uLikKKyAgICAgICAgICAgICAgICBlbHNlICA6CisgICAgICAgICAgICAgICAgICAgIHJlc3VsdFtrZXldID0gb2ItPmZ1bmMoIGtleQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICwgKHsgYXJnW2tleSwwXSAuLi5hcmdba2V5LHdpZHRoLTFdIH0pCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLCBleHRyYS4uLikKKworICAgICAgICBEZXIgVm9ydGVpbCBkaWVzZXMgQW5zYXR6ZXMgaXN0LCBkYXNzIGJlaWRlIEFydGVuIHZvbiBtZWhyZGltZW5zaW9uYWxlbgorICAgICAgICBNYXBwaW5ncyAoTWFwcGluZ3MgbWl0IG1laHJlcmVuIFdlcnRlbiBwcm8gS2V5IHVuZCBNYXBwaW5ncyB2b24gQXJyYXlzKQorICAgICAgICBnbGVpY2ggYmVoYW5kZWx0IHdlcmRlbiBrb2VubmVuLgorCitCRUlTUElFTEUKKyAgICAgICAgYXJyID0gKHsgMSwgMiwgMywgNCB9KTsKKyAgICAgICAgbSA9IChbIDE6LTEsIDM6LTMgXSk7CisKKyAgICAgICAgbWFwKGFyciwgIyclLCAyKSAgLS0+IGxpZWZlcnQgKHsgMSwgMCwgMSwgMCB9KQorICAgICAgICBtYXAoYXJyLCBtKSAgICAgICAtLT4gbGllZmVydCAoWyAtMSwgMiwgLTMsIDQgfSkKKworQU5NRVJLVU5HRU4KKyAgICAgICAgbWFwKCkgYXVmIEFycmF5cyBhbmdld2FuZHQgdmVyaGFlbHQgc2ljaCB3aWUgbWFwX2FycmF5KCksIGF1ZiBNYXBwaW5ncworICAgICAgICBhbmdld2FuZHQgaGluZ2VnZW4gdmVyaGFlbHQgZXMgc2ljaCB3aWUgZWluZSBWZXJhbGxnZW1laW5lcnVuZyB2b24KKyAgICAgICAgbWFwX2luZGljZXMoKS4KKworR0VTQ0hJQ0hURQorICAgICAgICBFaW5nZWZ1ZWhydCBpbiBMRE11ZCAzLjIuNiwgbG9lc3QgbWFwX2FycmF5KCkgYWIuCisgICAgICAgIExETXVkIDMuMi44IGZ1ZWhydCBuZXUgZGllIE1vZWdsaWNoa2VpdCBlaW4sIGVpbiBBcnJheSBkdXJjaCBlaW4KKyAgICAgICAgTWFwcGluZyB6dSBtYXBwZW4uCisgICAgICAgIExETXVkIDMuMy40MzkgZnVlaHJ0IG1hcCgpIGZ1ZXIgU3RyaW5ncyBlaW4uCisgICAgICAgIExETXVkIDMuMy43MTkgZnVlaHJ0IGRlbiA8aWR4Pi1QYXJhbWV0ZXIgZnVlciBtYXBwZW4gbWl0IE1hcHBpbmdzIGVpbi4KKworU0lFSEUgQVVDSAorICAgICAgICBmaWx0ZXIoRSksIGZpbHRlcl9pbmRpY2VzKEUpLCBtYXBfaW5kaWNlcyhFKSwgbWFwX29iamVjdHMoRSkKZGlmZiAtLWdpdCBhL2RvYy9lZnVuL21hcF9pbmRpY2VzIGIvZG9jL2VmdW4vbWFwX2luZGljZXMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZGUzYjE1ZgotLS0gL2Rldi9udWxsCisrKyBiL2RvYy9lZnVuL21hcF9pbmRpY2VzCkBAIC0wLDAgKzEsNzUgQEAKK21hcF9pbmRpY2VzKEUpCisKK0ZVTktUSU9OOgorICAgICBtYXBwaW5nIG1hcF9pbmRpY2VzKG1hcHBpbmcgbSwgc3RyaW5nIGZ1biwgb2JqZWN0IG9iIFssIG1peGVkIGV4dHJhXSkKKyAgICAgbWFwcGluZyBtYXBfaW5kaWNlcyhtYXBwaW5nIG0sIGNsb3N1cmUgY2wgWywgbWl4ZWQgZXh0cmFdKQorCitQQVJBTUVURVI6CisgICAgIGFycgktIHp1IG1hcHBlbmRlcyBBcnJheQorICAgICBmdW4vY2wJLSB6dSBydWZlbmRlIE1ldGhvZGUvQ2xvc3VyZQorICAgICBvYgkJLSBPYmpla3QvRGF0ZWluYW1lLCBhbiBkZW0gTWV0aG9kZSBnZXJ1ZmVuIHdlcmRlbiBzb2xsCisgICAgIGV4dHJhCS0gd2VpdGVyZSBQYXJhbWV0ZXIgZnVlciBNZXRob2RlL0Nsb3N1cmUKKworQkVTQ0hSRUlCVU5HOgorICAgICBNYXBwZWQgZGllIEVsZW1lbnRlIChqZXdlaWxzIFNjaGx1ZXNzZWwpIGF1cyAnbWFwJyBkdXJjaCBkaWUgTWV0aG9kZQorICAgICAnZnVuJyBvZGVyIGRpZSBDbG9zdXJlICdjbCcgaW4gZWluIG5ldWVzIE1hcHBpbmcuCisgICAgIEZ1ZXIgamVkZXMgRWxlbWVudCBhdXMgJ20nIHdpcmQgJ2Z1bicgb2RlciAnY2wnIG1pdCBkZW0gU2NobHVlc3NlbCBhbHMKKyAgICAgZXJzdGVtIFBhcmFtZXRlciBbdW5kIGZvbGdlbmQgZGVuIG9wdGlvbmFsZW4gRXh0cmEtUGFyYW1ldGVybl0gZ2VydWZlbi4KKworICAgICBEZXIgUnVlY2tnYWJld2VydCBkZXIgTWV0aG9kZS9DbG9zdXJlIHdpcmQgaW4gZnVlciBkZW4gU2NobHVlc3NlbCBhbHMKKyAgICAgRGF0ZW53ZXJ0IGluIGRhcyBuZXVlIE1hcHBpbmcgZWluZ2V0cmFnZW4uCisKKyAgICAgQUNIVFVORzogQWxsZSBhbmRlcmVuIERhdGVuIGJlaSBNYXBwaW5nIG1pdCBCcmVpdGU+MSB2ZXJmYWxsZW4hCisKKyAgICAgVmVyd2VuZHVuZyB2b24gTWV0aG9kZW46CisJV2VubiBiZWkgZGVyIEFuZ2FiZSB2b24gJ2Z1bicga2VpbiBPYmpla3QgJ29iJyBpbiBGb3JtIGVpbmVzIFN0cmluZ3MKKwlvZGVyIE9iamVrdHMgYW5nZWdlYmVuIHdpcmQsIHdpcmQgdGhpc19vYmplY3QoKSBhbmdlbm9tbWVuLgorCisgICAgIFZlcndlbmR1bmcgdm9uIENsb3N1cmVzOgorCUVzIGtvZW5uZW4gc293b2hsIExmdW4tQ2xvc3VyZXMgYWxzIGF1Y2ggTGFtYmRhLUNsb3N1cmVzIHZlcndlbmRldAorCXdlcmRlbi4gTGZ1bi1DbG9zdXJlcyBrb2VubmVuLCB3ZW5uIGltIHNlbGJlbiBPYmpla3Qgdm9yaGFuZGVuIGF1Y2gKKwkncHJpdmF0ZScgb2Rlci91bmQgJ3N0YXRpYycgZGVrbGFyaWVydCBzZWluLCBtdWVzc2VuIGFiZXIgenUgZGVtCisJWmVpdHB1bmt0IGRlciBWZXJ3ZW5kdW5nIGJla2FubnQgc2VpbiAoRnVua3Rpb25zcHJvdG90eXBlbiBiZW51dHplbikuCisKK1JVZUNLR0FCRVdFUlQ6CisgICAgIE1hcHBpbmcgbWl0IFNjaGx1ZXNzZWw6UnVlY2tnYWJld2VydGVuIGRlciBNZXRob2RlL0Nsb3N1cmUuCisKK0JFSVNQSUVMRToKKyAgICAgLy8gZXJzZXR6ZSBpbiBlaW5lbSBNYXBwaW5nIGRpZSBEYXRlbndlcnRlIGR1cmNoIGRhcyBEb3BwZWx0ZSwKKyAgICAgLy8gbnV0emUgZGFiZWkgZGllIERhdGVud2VydGUgZGVzIEFsdG1hcHBpbmdzIGR1cmNoIFVlYmVyZ2FiZSBhbHMKKyAgICAgLy8gZXh0cmEtUGFyYW1ldGVyCisKKyAgICAgLy8gQW5tZXJrdW5nOiBEYXMgZ2VodCBtaXQgd2Fsa19tYXBwaW5nKCkgZWxlZ2FudGVyIQorCisgICAgIGludCBkb19kb3VibGUoc3RyaW5nIGtleSwgbWFwcGluZyBtLCBpbnQgbXVsdCkgeworICAgICAgcmV0dXJuIG1ba2V5XSptdWx0OworICAgICB9CisKKyAgICAgbWFwcGluZyB4LCB5OworICAgICB4PShbImEiOjIsICJiIjozXSk7CisgICAgIHk9bWFwX2luZGljZXMoKFsiYSI6MiwgImIiOjNdKSwgIydkb19kb3VibGUsICZ4LCAzKTsKKworICAgICB5ID09IChbImEiOjYsImIiOjldKQorCitBZVFVSVZBTEVOWkNPREUgKG5pY2h0IGVtcGZvaGxlbiwgbnVyIHp1bSBWZXJzdGFlbmRuaXMhKToKKyAgICAgaW50IGk7CisgICAgIG1hcHBpbmcgcmV0OyBtYXBwaW5nIGlucHV0OworICAgICBtaXhlZCAqaW5kZXg7CisKKyAgICAgcmV0PW1fYWxsb2NhdGUoMCwgMSk7CisgICAgIGluZGV4PW1faW5kaWNlcyhpbnB1dCk7CisgICAgIGk9c2l6ZW9mKGluZGV4KTsKKyAgICAgd2hpbGUoaS0tKQorICAgICAgIHJldFtpbmRleFtpXV09b2ItPmZ1bihpbmRleFtpXSBbLCBleHRyYTEsIGV4dHJhMiwgLi4uXSkpCisgICAgICAgLy8gcmV0W2luZGV4W2ldXT1mdW5jYWxsKGNsLCBpbmRleFtpXSBbLCBleHRyYTEsIGV4dHJhMiwgLi4uXSk7CisKK1NJRUhFIEFVQ0g6CisgICAgIEFycmF5czoJCWZpbHRlcihFKSwgbWFwKEUpCisgICAgIE9iamVrdGFycmF5czoJZmlsdGVyX29iamVjdHMoRSksIG1hcF9vYmplY3RzKEUpCisgICAgIE1hcHBpbmdzOgkJZmlsdGVyX2luZGljZXMoRSkKKworICAgICBTb25zdGlnZXM6CQl3YWxrX21hcHBpbmcoRSksIG1fY29udGFpbnMoRSkKKwkJCW1lbWJlcigpCisJCQltX2luZGljZXMoRSksIG1fdmFsdWVzKEUpCisKKzI5LjEwLjIwMDYgWmVzc3RyYQpkaWZmIC0tZ2l0IGEvZG9jL2VmdW4vbWFwX29iamVjdHMgYi9kb2MvZWZ1bi9tYXBfb2JqZWN0cwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi40NTQzYTJlCi0tLSAvZGV2L251bGwKKysrIGIvZG9jL2VmdW4vbWFwX29iamVjdHMKQEAgLTAsMCArMSw1MSBAQAorbWFwX29iamVjdHMoRSkKKworRlVOS1RJT046CisgICAgIG9iamVjdCAqbWFwX29iamVjdHMob2JqZWN0ICphcnIsIHN0cmluZyBmdW4gWywgbWl4ZWQgZXh0cmFdKQorCitQQVJBTUVURVI6CisgICAgIGFycgktIHp1IG1hcHBlbmRlcyBBcnJheSB2b24gT2JqZWt0ZW4vT2JqZWt0cGZhZGVuCisgICAgIGZ1bgktIGFuIE9iamVrdGVuIHp1IHJ1ZmVuZGUgTWV0aG9kZQorICAgICBleHRyYQktIHdlaXRlcmUgUGFyYW1ldGVyIGZ1ZXIgTWV0aG9kZQorCitCRVNDSFJFSUJVTkc6CisgICAgIE1hcHBlZCBkaWUgRWxlbWVudGUgYXVzICdhcnInIGR1cmNoIGRlbiBBdWZydWYgZGVyIE1ldGhvZGUgJ2Z1bicgYW4KKyAgICAgamVkZW0gZGVyIEVsZW1lbnRlIHZvbiAnYXJyJyBpbiBlaW4gbmV1ZXMgQXJyYXkuCisgICAgIDAtRWludHJhZWdlIHdlcmRlbiBpZ25vcmllcnQuCisKKyAgICAgRGVyIFJ1ZWNrZ2FiZXdlcnQgdm9uCisJYXJyW25dLT5mdW4oW2V4dHJhMSwgZXh0cmEyLCAuLi5dKQorICAgICB3aXJkIGFuIGRlciBJbmRleHBvc2l0aW9uIGRlcyBFbGVtZW50ZXMgaW4gZGFzIG5ldWUgQXJyYXkgZWluZ2V0cmFnZW4uCisKK1JVZUNLR0FCRVdFUlQ6CisgICAgIEFycmF5IG1pdCBSZXN1bHRhdGVuIGRlciBGdW5rdGlvbnNhdWZydWZlIGFtIGpld2VpbGlnZW4gT2JqZWt0LgorCitCRU1FUktVTkdFTjoKKyAgICAgV2VyZGVuIFBmYWRlIGFuZ2VnZWJlbiwgc28gd2lyZCB2ZXJzdWNodCBlaW4gT2JqZWt0IHp1IGxhZGVuLCBmYWxscworICAgICBkaWVzZXMgbmljaHQgZXhpc3RpZXJ0LgorCitCRUlTUElFTDoKKyAgICAgLy8gZXJzZXR6ZSBhbGxlIE9iamVrdGUgZHVyY2ggaWhyZSBOYW1lbgorICAgICBhcnI9bWFwX29iamVjdHMoaW5wdXRhcnIsICJuYW1lIik7CisKKyAgICAgLy8gZXJzZXR6ZSBhbGxlIE9iamVrdGUgZHVyY2ggaWhyZSBOYW1lbiBpbSBHZW5pdGl2CisgICAgIGFycj1tYXBfb2JqZWN0cyhpbnB1dGFyciwgIm5hbWUiLCBXRVNTRU4pOworCitBZVFVSVZBTEVOWkNPREUgKG5pY2h0IGVtcGZvaGxlbiwgbnVyIHp1bSBWZXJzdGFlbmRuaXMhKToKKyAgICAgaW50IGk7CisgICAgIG9iamVjdCAqcmV0OyBtaXhlZCAqaW5wdXQ7CisKKyAgICAgaT1zaXplb2YoaW5wdXQpOworICAgICByZXQ9YWxsb2NhdGUoaSk7CisgICAgIHdoaWxlKGktLSkKKyAgICAgICByZXRbaV09aW5wdXRbaV0tPmZ1bihbZXh0cmExLCBleHRyYTIsIC4uLl0pOworCitTSUVIRSBBVUNIOgorICAgICBBcnJheXM6CQlmaWx0ZXIoRSksIG1hcChFKQorICAgICBPYmpla3RhcnJheXM6CWZpbHRlcl9vYmplY3RzKEUpCisgICAgIE1hcHBpbmdzOgkJZmlsdGVyX2luZGljZXMoRSksIG1hcF9pbmRpY2VzKEUpCisKKyAgICAgU29uc3RpZ2VzOgkJc29ydF9hcnJheShFKSwgdW5pcXVlX2FycmF5KCkKKwkJCWFsaXN0LCB0cmFuc3Bvc2VfYXJyYXkoRSkKKworMjAuSmFuIDIwMDUgR2xvaW5zb24KZGlmZiAtLWdpdCBhL2RvYy9lZnVuL21hcHBpbmdwIGIvZG9jL2VmdW4vbWFwcGluZ3AKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZmVmMmFjNwotLS0gL2Rldi9udWxsCisrKyBiL2RvYy9lZnVuL21hcHBpbmdwCkBAIC0wLDAgKzEsOSBAQAorU1lOT1BTSVM6CisJaW50IG1hcHBpbmdwKG1peGVkIGFyZykKKworREVTQ1JJUFRJT046CisJUmV0dXJuIDEgaWYgdGhlIGFyZ3VtZW50IGlzIGEgbWFwcGluZywgb3IgMCBpZiBpdCBpcyBub3QuIAorCitTRUUgQUxTTzoKKwlpbnRwKEUpLCBzdHJpbmdwKEUpLCBvYmplY3RwKEUpLCBwb2ludGVycChFKSwgbWttYXBwaW5nKEUpLAorCW1faW5kaWNlcyhFKSwgbV92YWx1ZXMoRSksIG1fZGVsZXRlKEUpLCBzaXplb2YoRSkKZGlmZiAtLWdpdCBhL2RvYy9lZnVuL21hc3RlciBiL2RvYy9lZnVuL21hc3RlcgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5jZGY1NWI2Ci0tLSAvZGV2L251bGwKKysrIGIvZG9jL2VmdW4vbWFzdGVyCkBAIC0wLDAgKzEsMTcgQEAKK1NZTk9QU0lTCisgICAgICAgIG9iamVjdCBtYXN0ZXIoKTsKKyAgICAgICAgb2JqZWN0IG1hc3RlcihpbnQgZG9udF9sb2FkKTsKKworQkVTQ0hSRUlCVU5HCisgICAgICAgIERpZSBGdW5rdGlvbiBsaWVmZXJ0IGRhcyBNYXN0ZXJvYmpla3QuCisKKyAgICAgICAgV2VubiA8ZG9udF9sb2FkPiBuaWNodCB3YWhyIGlzdCwgc3RlbGx0IG1hc3RlcigpIHp1ZXJzdCBzaWNoZXIsIGRhc3MKKyAgICAgICAgZGFzIE1hc3Rlcm9iamVrdCBhdWYgZXhpc3RpZXJ0LiBXZW5uIDxkb250X2xvYWQ+IHdhaHIgaXN0LCBsaWVmZXJ0CisgICAgICAgIG1hc3RlcigpIG51ciBkYXMgTWFzdGVyb2JqZWt0IG9kZXIgMCwgZmFsbHMgZGFzIGFrdHVlbGxlIE1hc3Rlcm9iamVrdAorICAgICAgICB6ZXJzdG9lcnQgd3VyZGUuCisKK0FFTkRFUlVOR0VOCisgICAgICAgIEVpbmdlZnVlaHJ0IGluIExETXVkIDMuMi4xMAorCitTSUVIRSBBVUNICisgICAgICAgIG1hc3RlcihNKQpkaWZmIC0tZ2l0IGEvZG9jL2VmdW4vbWF0Y2hfY29tbWFuZCBiL2RvYy9lZnVuL21hdGNoX2NvbW1hbmQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uY2Q0OTVkNwotLS0gL2Rldi9udWxsCisrKyBiL2RvYy9lZnVuL21hdGNoX2NvbW1hbmQKQEAgLTAsMCArMSwyNyBAQAorU1lOT1BTSVMKKyAgICAgICAgI2luY2x1ZGUgPHN5cy9jb21tYW5kcy5oPgorCisgICAgICAgIG1peGVkICogbWF0Y2hfY29tbWFuZCAoc3RyaW5nIGNvbW1hbmQsIG9iamVjdCBvcmlnaW4pCisKK0RFU0NSSVBUSU9OCisgICAgICAgIFRha2UgdGhlIGNvbW1hbmQgPGNvbW1hbmQ+LCBwYXJzZSBpdCwgYW5kIHJldHVybiBhbiBhcnJheSBvZiBhbGwKKyAgICAgICAgbWF0Y2hpbmcgYWN0aW9ucyBhZGRlZCB0byA8b3JpZ2luPiAocmVhZDogPG9yaWdpbj4gaXMgdGhlIG9iamVjdAorICAgICAgICAnaXNzdWluZycgdGhlIGNvbW1hbmQpLgorCisgICAgICAgIEVhY2ggZW50cnkgaW4gdGhlIHJlc3VsdCBhcnJheSBpcyBpdHNlbGYgYW4gYXJyYXkgb2Y6CisKKyAgICAgICAgICBzdHJpbmcgW0NNRE1fVkVSQl06ICAgVGhlIG1hdGNoZWQgdmVyYi4KKyAgICAgICAgICBzdHJpbmcgW0NNRE1fQVJHXTogICAgVGhlIGFyZ3VtZW50IHN0cmluZyByZW1haW5pbmcsIG9yIDAgaWYgbm9uZS4KKyAgICAgICAgICBvYmplY3QgW0NNRE1fT0JKRUNUXTogVGhlIG9iamVjdCBkZWZpbmluZyB0aGUgYWN0aW9uLgorICAgICAgICAgIHN0cmluZyBbQ01ETV9GVU5dOiAgICBUaGUgbmFtZSBvZiB0aGUgZnVuY3Rpb24gdG8gY2FsbCBpbgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBDTURNX09CSkVDVCwgd2hpY2ggbWF5IGJlIHN0YXRpYy4KKworICAgICAgICBUaGUgZWZ1biBpcyB1c2VmdWwgZm9yIGJvdGggZGVidWdnaW5nLCBhbmQgZm9yIGltcGxlbWVudGluZyB5b3VyCisgICAgICAgIG93biBIX0NPTU1BTkQgaGFuZGxpbmcuCisKK0hJU1RPUlkKKyAgICAgICAgSW50cm9kdWNlZCBpbiBMRE11ZCAzLjMuMjU5LgorCitTRUUgQUxTTworICAgICAgICBob29rcyhDKSwgZXhlY3V0ZV9jb21tYW5kKEUpLCBjb21tYW5kKEUpLCBub3RpZnlfZmFpbChFKSwKKyAgICAgICAgY29tbWFuZF9zdGFjayhFKQpkaWZmIC0tZ2l0IGEvZG9jL2VmdW4vbWF4IGIvZG9jL2VmdW4vbWF4Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjE4OWY0YTUKLS0tIC9kZXYvbnVsbAorKysgYi9kb2MvZWZ1bi9tYXgKQEAgLTAsMCArMSwyMyBAQAorU1lOT1BTSVMKKyAgICAgICAgc3RyaW5nIG1heChzdHJpbmcgYXJnLCAuLi4pOworICAgICAgICBzdHJpbmcgbWF4KHN0cmluZyAqYXJnKTsKKworICAgICAgICBpbnR8ZmxvYXQgbWF4KGludHxmbG9hdCBhcmcsIC4uLik7CisgICAgICAgIGludHxmbG9hdCBtYXgoaW50fGZsb2F0ICphcmcpOworCitCRVNDSFJFSUJVTkcKKyAgICAgICAgRGllIEZ1bmt0aW9uIGxpZWZlcnQgZGVuIGdyb2Vzc3RlbiBXZXJ0IGFsbGVyIDxhcmc+IHVuZCBsaWVmZXJ0IGlobgorICAgICAgICB6dXJ1ZWNrLiBXaXJkIG1heCgpIG51ciBtaXQgZWluZW0gQXJyYXkgYXVmZ2VydWZlbiB3aXJkIChkYXMgbmljaHQKKyAgICAgICAgbGVlciBzZWluIGRhcmYpLCBsaWVmZXJ0IGRpZSBGdW5rdGlvbiBkYXMgZ3JvZXNzdGUgRWxlbWVudCBhdXMgPGFyZz4uCisKK0JFSVNQSUVMCisgICAgICAgIG1heCgxKSAgICAgICAgICAgICAgICAgICAgIC0gbGllZmVydCAxCisgICAgICAgIG1heCgxLCAxLjEpICAgICAgICAgICAgICAgIC0gbGllZmVydCAxLjEKKyAgICAgICAgbWF4KCJmb28iLCAiYmFyIikgICAgICAgICAgLSBsaWVmZXJ0ICJmb28iCisgICAgICAgIG1heCggKHsgImZvbyIsICJiYXIiIH0pICkgIC0gbGllZmVydCAiZm9vIgorCitBRU5ERVJVTkdFTgorICAgICAgICBFaW5nZWZ1ZWhydCBpbiBMRE11ZWQgMy4yLjkuCisKK1NJRUhFIEFVQ0gKKyAgICAgICAgbWluKEUpCmRpZmYgLS1naXQgYS9kb2MvZWZ1bi9tZDVfY3J5cHQgYi9kb2MvZWZ1bi9tZDVfY3J5cHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZDkxYmExOAotLS0gL2Rldi9udWxsCisrKyBiL2RvYy9lZnVuL21kNV9jcnlwdApAQCAtMCwwICsxLDIwIEBACitTWU5PUFNJUworICAgICAgICBzdHJpbmcgbWQ1X2NyeXB0KHN0cmluZyBzdHIsIGludCBzZWVkKQorICAgICAgICBzdHJpbmcgbWQ1X2NyeXB0KHN0cmluZyBzdHIsIHN0cmluZyBzZWVkKQorCitCRVNDSFJFSUJVTkcKKyAgICAgICAgVmVyc2NobHVlc3NlbHQgZGVuIFN0cmluZyA8c3RyPiBtaXQgZGVtIFNjaGx1ZXNzZWwgPHNlZWQ+LgorICAgICAgICA8c2VlZD4ga2FubiBlbnR3ZWRlciBlaW4gSW50ZWdlciBzZWluIG9kZXIgendlaSBaZWljaGVuIGF1cworICAgICAgICBkZW0gU3RyaW5nIDxzZWVkPi4gIFdlbm4gPHNlZWQ+IDAgaXN0LCB3aXJkIGVpbiB6dWZhZWxsaWdlcgorICAgICAgICBTY2hsdWVzc2VsIGVyemV1Z3QuCisKKyAgICAgICAgRGFzIFJlc3VsdGF0IGVudGhhZWx0IGRlbiBTY2hsdWVzc2VsIGFscyBkaWUgZXJzdGVuIGJlaWRlbiBaZWljaGVuLgorCisgICAgICAgIERpZSBFZnVuIHZlcndlbmRldCBkZW4gTUQ1LUFsZ29yaXRobXVzLCB1bmQgZGFzIFJlc3VsdGF0IGlzdAorICAgICAgICBrb21wYXRpYmxlIG1pdCBkZXIgUGFzc3dvcmR2ZXJzY2hsdWVzc2VsdW5nIGRlcyBBcGFjaGUgV2Vic2VydmVycy4KKworICAgICAgICBGdWVyIFBhc3N3b3J0YWJmcmFnZW4sIGRpZSBvaG5lIEVjaG8gZWluZ2VnZWJlbiB3ZXJkZW4ga29lbm5lbiBzb2xsZW4sCisgICAgICAgIGJpZXRldCBpbnB1dF90bygpIGVpbiBzcGV6aWVsbGVzIEZsYWcuCisKK1NJRUhFIEFVQ0gKKyAgICAgICAgY3J5cHQoRSksIG1kNShFKSwgc2hhMShFKSwgaW5wdXRfdG8oRSkKZGlmZiAtLWdpdCBhL2RvYy9lZnVuL21lbWJlciBiL2RvYy9lZnVuL21lbWJlcgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi45ZjBlNjZhCi0tLSAvZGV2L251bGwKKysrIGIvZG9jL2VmdW4vbWVtYmVyCkBAIC0wLDAgKzEsMjQgQEAKK1NZTk9QU0lTCisgICAgICAgIGludCBtZW1iZXIobWl4ZWQgKmFycmF5LCBtaXhlZCBlbGVtIFssIGludCBzdGFydF0pOworICAgICAgICBpbnQgbWVtYmVyKHN0cmluZyBzLCBpbnQgZWxlbSBbLCBpbnQgc3RhcnRdKTsKKyAgICAgICAgaW50IG1lbWJlcihtYXBwaW5nIG1hcCwgbWl4ZWQga2V5KTsKKworQkVTQ0hSRUlCVU5HCisgICAgICAgIEZ1ZXIgQXJyYXlzIHVuZCBTdHJpbmcgbGllZmVydCBtZW1iZXIoKSBkZW4gSW5kZXggZGVzIGVyc3RlbgorICAgICAgICBBdWZ0cmV0ZW5zIHZvbiA8ZWxlbT4gaW4gPGFyZz4uIElzdCA8ZWxlbT4gbmljaHQgaW4gPGFyZz4gZW50aGFsdGVuLAorICAgICAgICB3aXJkIC0xIHp1cnVlY2sgZ2VnZWJlbi4KKworICAgICAgICBJc3QgPHN0YXJ0PiBhbHMgWmFobCA+PSAwIGdlZ2ViZW4sIGJlZ2lubnQgZGllIFN1Y2hlIGFiIGRlcgorICAgICAgICBhbmdlZ2ViZW5lbiBQb3NpdGlvbi4gRWluZSBTdGFydHBvc2l0aW9uIGdyb2Vzc2VyIGFscyBkaWUKKyAgICAgICAgTGFlbmdlIGRlcyBTdHJpbmdzL0FycmF5cyBsaWVmZXJ0IHN0ZXRzIGRhcyBSZXN1bHRhdCAtMS4KKworICAgICAgICBGdWVyIE1hcHBpbmcgcHJ1ZWZ0IG1lbWJlcigpLCBvYiA8a2V5PiBpbiA8bWFwPiBlbnRoYWx0ZW4gaXN0IHVuZAorICAgICAgICBsaWVmZXJ0IDEgenVydWVjayBmYWxscyBqYSwgMCBzb25zdC4KKworQkVJU1BJRUxFCisgICAgICAgIG1lbWJlciggKHsgImFiYyIsICJkZWZnIiB9KSwgImRlZmciICkgPSAxCisgICAgICAgIG1lbWJlciggKHsgImFiYyIsICJkZWZnIiB9KSwgIngiICkgPSAtMQorICAgICAgICBtZW1iZXIoICJhYmNkZWZnIiwgMTAwICkgPSBtZW1iZXIoICJhYmNkZWZnIiwgJ2QnICkgPSAzCisKK1NJRUhFIEFVQ0gKKyAgICAgICAgcm1lbWJlcihFKSwgbWFwcGluZ3MoTFBDKQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2RvYy9lZnVuL21pbiBiL2RvYy9lZnVuL21pbgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5jMTFmOWI1Ci0tLSAvZGV2L251bGwKKysrIGIvZG9jL2VmdW4vbWluCkBAIC0wLDAgKzEsMjIgQEAKK1NZTk9QU0lTCisgICAgICAgIHN0cmluZyBtaW4oc3RyaW5nIGFyZywgLi4uICk7CisgICAgICAgIHN0cmluZyBtaW4oc3RyaW5nICphcmdfYXJyYXkpOworICAgICAgICBpbnR8ZmxvYXQgbWluKGludHxmbG9hdCBhcmcsIC4uLik7CisgICAgICAgIGludHxmbGFvdCBtaW4oaW50fGZsb2F0ICphcmdfYXJyYXkpOworCitCRVNDSFJFSUJVTkcKKyAgICAgICAgTGllZmVydCBkYXMga2xlaW5zdGUgZGVyIEFyZ3VtZW50ZSA8YXJnPi4gV2VubiBtaW4oKSBmdWVyIGVpbgorICAgICAgICBlaW56ZWxuZXMgKG5pY2h0IGxlZXJlcykgQXJyYXkgYXVmZ2VydWZlbiB3aXJkLCBsaWVmZXJ0IG1pbigpIGRhcworICAgICAgICBrbGVpbnN0ZSBFbGVtZW50IGltIEFycmF5LgorCitCRUlTUElFTAorICAgICAgICBtaW4oMSkgICAgICAgICAgICAgICAgICAgICAgLT4gbGllZmVydCAxCisgICAgICAgIG1pbigxLCAtMS4xKSAgICAgICAgICAgICAgICAtPiBsaWVmZXJ0IC0xLjEKKyAgICAgICAgbWluKCJibGEiLCAiZmFzZWwiKSAgICAgICAgIC0+IGxpZWZlcnQgImJsYSIKKyAgICAgICAgbWluKCAoeyAiYmxhIiwgImZhc2VsIiB9KSApIC0+IGxpZWZlcnQgImJsYSIKKworQUVOREVSVU5HRU4KKyAgICAgICAgRWluZ2VmdWVocnQgaW4gTERNdWQgMy4yLjkuCisKK1NJRUhFIEFVQ0gKKyAgICAgICAgbWF4KEUpCmRpZmYgLS1naXQgYS9kb2MvZWZ1bi9ta2RpciBiL2RvYy9lZnVuL21rZGlyCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjhjN2E2ODMKLS0tIC9kZXYvbnVsbAorKysgYi9kb2MvZWZ1bi9ta2RpcgpAQCAtMCwwICsxLDkgQEAKK1NZTk9QU0lTCisgICAgICAgIGludCBta2RpcihzdHJpbmcgcGF0aCk7CisKK0JFU0NIUkVJQlVORworICAgICAgICBFcnN0ZWxsdCBlaW4gVmVyemVpY2huaXMgPHBhdGg+IHVuZCBsaWVmZXJ0IDEsIHdlbm4gZGFzIFZlcnplaWNobmlzCisgICAgICAgIGVyc3RlbGx0IHdlcmRlbiBrb25udGUsIHNvbnN0IDAuCisKK1NJRUhFIEFVQ0gKKyAgICAgICAgcm1kaXIoRSksIHJtKEUpLCBnZXRfZGlyKEUpLCBmaWxlX3NpemUoRSkKZGlmZiAtLWdpdCBhL2RvYy9lZnVuL21rbWFwcGluZyBiL2RvYy9lZnVuL21rbWFwcGluZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi43NWNmODI3Ci0tLSAvZGV2L251bGwKKysrIGIvZG9jL2VmdW4vbWttYXBwaW5nCkBAIC0wLDAgKzEsMzcgQEAKK1NZTk9QU0lTCisgICAgICAgIG1hcHBpbmcgbWttYXBwaW5nKG1peGVkICphcnIxLCBtaXhlZCAqYXJyMiwgbWl4ZWQgKmFycjMsIC4uLik7CisgICAgICAgIG1hcHBpbmcgbWttYXBwaW5nKHN0cnVjdCBzdCk7CisKK0JFU0NIUkVJQlVORworICAgICAgICBMaWVmZXJ0IGVpbiBNYXBwaW5nIG1pdCBLZXlzIGF1cyA8YXJyMT4gdW5kIERhdGVuZWxlbWVudGVuIGF1cworICAgICAgICA8YXJyMj4sIDxhcnIzPi4uLi4gRGVtIEtleSA8YXJyMVswXT4gd2VyZGVuIGRpZSBEYXRlbmVsZW1lbnRlCisgICAgICAgIDxhcnIyWzBdPiwgPGFycjNbMF0+Li4uIHp1Z2VvcmRuZXQuIFdlbm4gZGllIERhdGVuYXJyYXlzCisgICAgICAgIHVuZ2xlaWNoIGdyb3NzIHNpbmQsIGVudGhhZWx0IGRhcyBNYXBwaW5nIG51ciBzbyB2aWVsZSBFaW50cmFlZ2UsCisgICAgICAgIHdpZSBpbSBrbGVpbnN0ZW4gRGF0ZW5hcnJheSBlbnRoYWx0ZW4gc2luZC4KKworICAgICAgICBEaWUgendlaXRlIEZvcm0ga29udmVydGllcnQgZGllIGFuZ2VnZWJlbmUgc3RydWN0IDxzdD4gaW4gZWluIE1hcHBpbmcuCisgICAgICAgIEhpZXJiZWkgd2VyZGVuIGRpZSBOYW1lbiBkZXMgamV3ZWlsaWdlbiBFbGVtZW50ZXMgaW4gZGVyIHN0cnVjdCBhbHMKKyAgICAgICAgYWxzIFNjaGx1ZXNzZWwuCisKKyAgICAgICAgR2V3b2VobmxpY2ggd2VyZGVuIE1hcHBpbmdzIGVyd2VpdGVydCwgaW5kZW0gZWluZmFjaCBuZXVlIEVsZW1lbnRlCisgICAgICAgIGVpbmdlZnVlZ3Qgd2VyZGVuLiBEaWVzZSBGdW5rdGlvbiBpc3QgbnVldHpsaWNoLCB3ZW5uIGRlcgorICAgICAgICB1bmdlZmFlaHIgYmVub2V0aWd0ZSBTcGVpY2hlcnBsYXR6IGJlcmVpdHMgdm9yaGVyIGJla2FubnQgaXN0LAorICAgICAgICB1bSBzbyBkZW4gT3ZlcmhlYWQgYmVpIGRlciBTcGVpY2hlcmFsbG9rYXRpb24genUgbWluaW1pZXJlbi4KKyAgICAgICAgQWxsZW5mYWxscyB6dSB2aWVsIGFsbG96aWVydGVyIFNwZWljaGVyIHdpcmQgZnJlaWdlZ2ViZW4sIHNvYmFsZAorICAgICAgICBkaWUgRnVua3Rpb24sIGRpZSBkaWUgbWttYXBwaW5nKCkgQW53ZWlzdW5nIGVudGhhZWx0LCBiZWVuZGV0IGlzdC4KKworQkVTSVBJRUwKKyAgICAgICAgbWttYXBwaW5nKCAoeyAxLCAyIH0pLCAoeyAxMCwgMTEgfSksICh7IDIwLCAyMSwgMjJ9KSk7CisgICAgICAgICAgbGllZmVydCAoWyAxOjEwOzIwLCAyOjExOzIxIF0pCisKKyAgICAgICAgc3RydWN0IHMgeyBpbnQgYSwgYiwgYzsgfTsKKyAgICAgICAgbWttYXBwaW5nKCAoPHM+IDEsICh7IDIsIDMgfSksIDMgKQorICAgICAgICAgIGxpZWZlcnQgKFsgImEiOjEsICJiIjooezIsM30pLCAiYyI6MyBdKQorCitBZU5ERVJVTkdFTgorICAgICAgICBMRE11ZCAzLjMuNDMzIGVybW9lZ2xpY2h0ZSBkaWUgS29udmVyc2lvbiB2b24gc3RydWN0cy4KKworVkVSR0xFSUNIRQorICAgICAgICBtYXBwaW5ncyhMUEMpLCBtYXBwaW5ncChFKSwgbV9pbmRpY2VzKEUpLCBtX3ZhbHVlcyhFKSwKKyAgICAgICAgbV9hZGQoRSksIG1fZGVsZXRlKEUpLCBzaXplb2YoRSksIHdpZHRob2YoRSksIHVubWttYXBwaW5nKEUpLAorICAgICAgICB0b19zdHJ1Y3QoRSkKZGlmZiAtLWdpdCBhL2RvYy9lZnVuL21rdGltZSBiL2RvYy9lZnVuL21rdGltZQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5iNzEyMjdiCi0tLSAvZGV2L251bGwKKysrIGIvZG9jL2VmdW4vbWt0aW1lCkBAIC0wLDAgKzEsMzggQEAKK1NZTk9QU0lTCisgICAgICAgICNpbmNsdWRlIDxzeXMvdGltZS5oPgorCisgICAgICAgIGludCBta3RpbWUoaW50ICp0cyk7CisKK0JFU0NIUkVJQlVORworICAgICAgICBJc3QgZGFzIEFyZ3VtZW50IDx0cz4gZWluIEFycmF5IG1pdCA5IEVsZW1lbnRlbiAoaW50KSwgZW50c3ByZWNoZW5kCisgICAgICAgIGRlcyBSdWVja2dhYmV3ZXJ0ZXMgdm9uIGxvY2FsX3RpbWUoKS9nbV90aW1lKCksIGxpZWZlcnQgZGllIEZ1bmt0aW9uCisgICAgICAgIGRpZSBBbnphaGwgU2VrdW5kZW4gc2VpdCBkZW0gMDEuIEphbnVhciAxOTcwLCAwMDowMDowMCB6dXJ1ZWNrLgorICAgICAgICBEaWVzIGlzdCB2b24gTnV0emVuLCB3ZW5uIG1hbiBlaW4gRGF0dW0vVWhyemVpdCBoYXQsIGRpZXNlIGFiZXIgYWxzCisgICAgICAgIEdhbnp6YWhsLVdlcnQgc3BlaWNoZXJuIHdpbGwgb2RlciBlaW5lIFplaXRkaWZmZXJlbnogendpc2NoZW4gendlaQorICAgICAgICBEYXRlbiBhdXNyZWNobmVuIHdpbGwuCisKKyAgICAgICAgRGFzIEFycmF5IG11c3MgZGFiZWkgc28gYXVmZ2ViYXV0IHNlaW46CisgICAgICAgICAgICBpbnQgVE1fU0VDICAgICgwKTogIFNla3VuZGUgaW4gZGVyIE1pbnV0ZSAoMC4uNTkpCisgICAgICAgICAgICBpbnQgVE1fTUlOICAgICgxKTogIE1pbnV0ZSBpbiBkZXIgU3R1bmRlICgwLi41OSkKKyAgICAgICAgICAgIGludCBUTV9IT1VSICAgKDIpOiAgU3R1bmRlIGRlcyBUYWdlcyAoMC4uMjMpCisgICAgICAgICAgICBpbnQgVE1fTURBWSAgICgzKTogIFRhZyBpbSBNb25hdCAoMS4uMzEpCisgICAgICAgICAgICBpbnQgVE1fTU9OICAgICg0KTogIE1vbmF0IGRlcyBKYWhyZXMgKDAuLjExKQorICAgICAgICAgICAgaW50IFRNX1lFQVIgICAoNSk6ICBKYWhyICh6LkIuIDIwMDEpCisgICAgICAgICAgICBpbnQgVE1fV0RBWSAgICg2KTogIFdvY2hlbnRhZyAoMC4uNiwgU29ubnRhZyA9IDApCisgICAgICAgICAgICBpbnQgVE1fWURBWSAgICg3KTogIFRhZyBpbSBKYWhyICgwLi4zNjUpCisgICAgICAgICAgICBpbnogVE1fSVNEU1QgICg4KTogIFRSVUU6IERheWxpZ2h0IFNhdmluZyBUaW1lCisKKyAgICAgIFRNX1lEQVkgdW5kIFRNX1dEQVkgd2VyZGVuIGlnbm9yaWVydCB1bmQga29lbm5lbiBiZWxpZWJpZ2UgWmFobGVuCisgICAgICBlbnRoYWx0ZW4uCisKK0JFSVNQSUVMCisgICAgICBNYW4gaGF0IGVpbiBEYXR1bS9VaHJ6ZWl0ICh6LkIuIEJlbnV0emVyZWluZ2FiZSksIHdlbGNoZXMgYWxzCisgICAgICBVbml4LVplaXRzdG1lcGVsIGdlc3BlaWNoZXJ0IHdlcmRlbiBzb2xsOgorICAgICAgLy8gIk1pdCwgMjQuIE9rdCAyMDA3LCAxMDo0ODowMCIgZW50c3ByaWNodCBmb2xnZW5kZW0gWmVpdHN0ZW1wZWw6CisgICAgICBpbnQgdW5peHplaXQgPSBta3RpbWUoICh7MCwgNDgsIDA5LCAyNCwgMDksIDIwMDcsIDAsIDAxLCAwfSkgKTsKKyAgICAgIAorQUVOREVSVU5HRU4KKyAgICAgICAgRWluZ2VmdWVocnQgaW4gTERNdWQgMy4zLjcxeAorCitTSUVIRSBBVUNICisgICAgY3RpbWUoRSksIGdtdGltZShFKSwgbG9jYWxfdGltZShFKSwgdGltZShFKSwgdXRpbWUoRSkKZGlmZiAtLWdpdCBhL2RvYy9lZnVuL21vZGlmeV9jb21tYW5kIGIvZG9jL2VmdW4vbW9kaWZ5X2NvbW1hbmQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZWVhNjA3MAotLS0gL2Rldi9udWxsCisrKyBiL2RvYy9lZnVuL21vZGlmeV9jb21tYW5kCkBAIC0wLDAgKzEsMjEgQEAKK1NZTk9QU0lTCisJaW50fHN0cmluZyBtb2RpZnlfY29tbWFuZChzdHJpbmcgY21kKQorCitERVNDUklQVElPTgorCUFmdGVyIHNldF9tb2RpZnlfY29tbWFuZChtb2IpIHdhcyBjYWxsZWQgZm9yIGFuIGludGVyYWN0aXZlCisJb2JqZWN0IGlvYiwgYWxsIGNvbW1hbmRzIGZvciB0aGF0IHVzZXIgd2lsbCBiZSBwYXNzZWQgdG8KKwltb2ItPm1vZGlmeV9jb21tYW5kKCksIGFuZCB0aGUgcmV0dXJuIHdpbGwgdGhlbiBiZSBjaGVja2VkIGZvcgorCWFjdGlvbnMuCisKKwlJZiB0aGUgcmVzdWx0IGlzIGEgc3RyaW5nLCBpdCBpcyB0aGUgbmV3IGNvbW1hbmQgdG8gZXhlY3V0ZQorCWluc3RlYWQgb2YgdGhlIGdpdmVuIG9uZS4gTm90ZSB0aGF0IGl0IGlzIG5vdCBwb3NzaWJsZSB0bworCW1ha2Ugc2V2ZXJhbCBjb21tYW5kcyBmcm9tIG9uZSB0aGlzIHdheSEKKwlJZiB0aGUgcmVzdWx0IGlzIGEgbm9uLXplcm8gbnVtYmVyLCB0aGUgZ2l2ZW4gY29tbWFuZCBpcyB0bworCWJlIGlnbm9yZWQuIEluIGNhc2Ugb2YgdGhlIGNsb3N1cmUvbGZ1biBzZXR0aW5nIHRoaXMgbWF5CisJbWVhbiB0aGF0IHRoZSBjbG9zdXJlL2xmdW4gYWxyZWFkeSBleGVjdXRlZCBpdC4KKwlJZiB0aGUgcmVzdWx0IGlzIDAsIHRoZSBvcmlnaW5hbGx5IGdpdmVuIGNvbW1hbmQgaXMgdG8gYmUKKwl1c2VkLgorCisKK1NFRSBBTFNPCisJc2V0X21vZGlmeV9jb21tYW5kKEUpLCBob29rcyhDKQpkaWZmIC0tZ2l0IGEvZG9jL2VmdW4vbW92ZV9vYmplY3QgYi9kb2MvZWZ1bi9tb3ZlX29iamVjdApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi40OGIyM2U5Ci0tLSAvZGV2L251bGwKKysrIGIvZG9jL2VmdW4vbW92ZV9vYmplY3QKQEAgLTAsMCArMSwxOCBAQAorU1lOT1BTSVM6CisgICAgICAgIHZvaWQgbW92ZV9vYmplY3QobWl4ZWQgaXRlbSwgbWl4ZWQgZGVzdCkKKworICAgICAgICBpdGVtLT5tb3ZlKG9iamVjdCBkZXN0LCBzdHJpbmcgbWV0aG9kcykKKworREVTQ1JJUFRJT046CisJVGhlIGl0ZW0sIHdoaWNoIGNhbiBiZSBhIG9iamVjdF9uYW1lIG9yIGFuIG9iamVjdCwgaXMgbW92ZWQgaW50bworCWl0J3MgbmV3IGVudmlyb25tZW50IGRlc3QsIHdoaWNoIGNhbiBhbHNvIGJlIG9iamVjdF9uYW1lIG9yIGFuCisJb2JqZWN0LiAgSW4gbmF0aXZlIG1vZGUsIHRoZSBvbmx5IG9iamVjdCB0aGF0IGNhbiBiZSBtb3ZlZAorCXdpdGggbW92ZV9vYmplY3QoKSBpcyB0aGUgY2FsbGluZyBvYmplY3QgaXRzZWxmLiBUaGlzIGZ1bmN0aW9uCisJaXMgb25seSB1c2VkIHRvIGltcGxlbWVudCB0aGUgbGZ1biBtb3ZlKCkuCisgICAgICAgIAorICAgICAgICBVc2UgdGhlIGxmdW4gbW92ZSgpIGluc3RlYWQgYnkgaW5oZXJpdGluZyBzdGFuZGFyZCBvYmplY3RzLgorCW1vdmUoKSBtdXN0IGJlIGNhbGxlZCBpbiB0aGUgb2JqZWN0IHRvIGJlIG1vdmVkLiBUaGlzIGdpdmVzCisJdGhlIG1vdmVkIG9iamVjdCBmdWxsIGNvbnRyb2wgb3ZlciBpdHMgbW92ZW1lbnQuCisKK1NFRSBBTFNPOgorICAgICAgICBtb3ZlKEwpLCByZW1vdmUoTCksIGluaXQoTCksIHRyYW5zZmVyKEUpLCBuYXRpdmUoQykKZGlmZiAtLWdpdCBhL2RvYy9lZnVuL25lZ2F0ZSBiL2RvYy9lZnVuL25lZ2F0ZQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5iMWYwYmRmCi0tLSAvZGV2L251bGwKKysrIGIvZG9jL2VmdW4vbmVnYXRlCkBAIC0wLDAgKzEsNiBAQAorU1lOT1BTSVMKKyAgICAgICAgaW50IG5lZ2F0ZShpbnQgYXJnKTsKKyAgICAgICAgZmxvYXQgbmVnYXRlKGZsb2F0IGFyZyk7CisKK0JFU0NIUkVJQlVORworICAgICAgICBMaWVmZXJ0IGRlbiBuZWdhdGl2ZW4gV2VydCB2b24gPGFyZz4uCmRpZmYgLS1naXQgYS9kb2MvZWZ1bi9uZXRfY29ubmVjdCBiL2RvYy9lZnVuL25ldF9jb25uZWN0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmYzYWFlMmYKLS0tIC9kZXYvbnVsbAorKysgYi9kb2MvZWZ1bi9uZXRfY29ubmVjdApAQCAtMCwwICsxLDMwIEBACitTWU5PUFNJUworICAgICAgICBpbnQgbmV0X2Nvbm5lY3Qoc3RyaW5nIGhvc3QsIGludCBwb3J0KQorCitCRVNDSFJFSUJVTkcKKyAgICAgICAgT2VmZm5lIGVpbmUgbmljaHQtYmxvY2tpZXJlbmRlIFRDUCBOZXR6dmVyYmluZHVuZyB6dQorICAgICAgICA8aG9zdD46PHBvcnQ+IC4gIEJlaSBFcmZvbGcgd2lyZCBkaWUgVmVyYmluZHVuZyB6dW0KKyAgICAgICAgYXVmcnVmZW5kZW4gT2JqZWt0IGdlYnVuZGVuIHVuZCBkaWUgbGZ1biBsb2dvbigpIHdpcmQgaW4gZGVtCisgICAgICAgIE9iamVrdCBhdWZnZXJ1ZmVuLgorCisgICAgICAgIFJlc3VsdGF0IGlzdCAwIGJlaSBFcmZvbGcsIHVuZCBlaW5lIFVuaXggRVJSTk8gYmVpIE1pc3NlcmZvbGcuCisKKyAgICAgICAgSXN0IGRlciBEcml2ZXIgZnVlciBJUHY2IGtvbmZpZ3VyaWVydCwgd2lyZCA8aG9zdD4gZXJzdCBhbHMKKyAgICAgICAgSVB2Ni1OYW1lIGludGVycHJldGllcnQsIHVuZCB3ZW5uIGRhcyBmZWhsc2NobGFlZ3QsIGFscworICAgICAgICBJUHY0LU5hbWUuCisKKyAgICAgICAgV2VubiBkaWUgVmVyYmluZHVuZyBuaWNodCBzb2ZvcnQgZXJ6ZXVndCB3ZXJkZW4ga2FubiwgZ2lidCBkaWUKKyAgICAgICAgRnVua3Rpb24gJ0VyZm9sZycgenVydWVjaywgdW5kIGRlciBEcml2ZXIgdm9sbGVuZGV0IGRpZQorICAgICAgICBGdW5rdGlvbiBpbSBIaW50ZXJncnVuZC4gU29sbHRlIGRpZSBWZXJiaW5kdW5nc2F1ZmJhdSBpbQorICAgICAgICBIaW50ZXJncnVuZCBmZWhsc2NobGFnZW4sIHdpcmQgbG9nb24oLTEpIGltIGFrdHVlbGxlbiBPYmpla3QKKyAgICAgICAgYXVmZ2VydWZlbi4KKworICAgICAgICBEaWUgRnVua3Rpb24gZXJ6ZXVndCBlaW5lIHByaXZpbGVnZSB2aW9sYXRpb24gKCJuZXRfY29ubmVjdCIsCisgICAgICAgIGhvc3QsIHBvcnQpLgorCisgICAgICAgIFdBUk5VTkc6IElzdCA8aG9zdD4gZWluIE5hbWUgdW5kIGtlaW5lIElQLCBmdWVocnQgZGllIEZ1bmt0aW9uCisgICAgICAgIGVpbmVuIEROUy1BdWZydWYgZHVyY2gsIGRlciBkZW4gRHJpdmVyIGZ1ZXIgZWluaWdlIFplaXQKKyAgICAgICAgYmxvY2tpZXJlbiBrYW5uLgorCitTSUVIRSBBVUNICisgICAgICAgIGxvZ29uKEEpCmRpZmYgLS1naXQgYS9kb2MvZWZ1bi9uZXh0X2JpdCBiL2RvYy9lZnVuL25leHRfYml0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjMxZmI5MGEKLS0tIC9kZXYvbnVsbAorKysgYi9kb2MvZWZ1bi9uZXh0X2JpdApAQCAtMCwwICsxLDMyIEBACitTWU5PUFNJUworICAgICAgICBpbnQgbmV4dF9iaXQoc3RyaW5nIHN0ciwgaW50IHN0YXJ0KTsKKyAgICAgICAgaW50IG5leHRfYml0KHN0cmluZyBzdHIsIGludCBzdGFydCwgaW50IGZpbmRfY2xlYXJlZCk7CisKK0JFU0NIUkVJQlVORworICAgICAgICBMaWVmZXJ0IGRlbiBaYWhsZW53ZXJ0IGRlcyBuYWVjaHN0ZW4gQml0cyBpbSBCaXRzdHJpbmcgPGJpdD4gbmFjaAorICAgICAgICBkZXIgUG9zaXRpb24gPHN0YXJ0Pi4gR2V3b2VobmxpY2ggaXN0IGRpZXMgZGFzIG5hZWNoc3RlIGdlc2V0enRlCisgICAgICAgIEJpdCwgYWJlciB3ZW5uIDxmaW5kX2NsZWFyZWQ+IGFuZ2VnZWJlbiB1bmQgbmljaHQgMCBpc3QsIHdpcmQKKyAgICAgICAgZGllIFBvc3Rpb24gZGVzIG5hZWNoc3RlbiBnZWxvZXNjaHRlbiBCaXRzIHp1cnVlY2sgZ2VnZWJlbi4KKworICAgICAgICBEYWJlaSBpc3QgZGFzIEZpbmRlbiB2b24gZ2Vsb2VzY2h0ZW4gQml0cyBuYWNoIGRlbSBsZXR6dGVuIGdlc2V0enRlbgorICAgICAgICBCaXQgYXVmIGRpZSB0YXRzYWVjaGxpY2hlIExhZW5nZSB2b24gPHN0cj4gYmVzY2hyYWVua3QuCisKKyAgICAgICAgSmVkZXMgWmVpY2hlbiBlbnRoYWVsdCA2IEJpdHMuIEluIGplZGVtIFplaWNoZW4ga2FubiBkZXNoYWxiIGVpbmUKKyAgICAgICAgWmFobCB2b24gMCBiaXMgNjMgZ2VzcGVpY2hlcnQgd2VyZGUgKDJeNj02NCkuIERhcyBlcnN0ZSBaZWljaGVuCisgICAgICAgIGlzdCBkZXIgTGVlcnNjaGxhZyAiICIgbWl0IGRlbSBXZXJ0IDAuIERhcyBlcnN0ZSBaZWljaGVuIGltIFN0cmluZworICAgICAgICBpc3QgamVuZXMgbWl0IGRlbiBuaWVkcmlnc3RlbiBCaXRzICgwLTUpLgorCitCRUlTUElFTAorICAgICAgICBzdHJpbmcgczsKKyAgICAgICAgaW50IHA7CisKKyAgICAgICAgcyA9IHNldF9iaXQoIiIsIDQpOyBzID0gc2V0X2JpdChzLCAyKTsKKworICAgICAgICBmb3IgKHAgPSAtMTsgLTEgIT0gKHAgPSBuZXh0X2JpdChzLCBwKTsgKQorICAgICAgICAgICAgd3JpdGUocCsiXG4iKTsKKworICAgICAgICAtLT4gZGFzIGdpYnQgMiB1bmQgNCBhdXMuCisKK1NJRUhFIEFVQ0gKKyAgICAgICAgc2V0X2JpdChFKSwgY2xlYXJfYml0KEUpLCB0ZXN0X2JpdChFKSwgbGFzdF9iaXQoRSksIGNvdW50X2JpdHMoRSksCisgICAgICAgIGFuZF9iaXRzKEUpLCBvcl9iaXRzKEUpLCB4b3JfYml0cyhFKSwgaW52ZXJ0X2JpdHMoRSksIGNvcHlfYml0cyhFKQpkaWZmIC0tZ2l0IGEvZG9jL2VmdW4vbmV4dF9pbnZlbnRvcnkgYi9kb2MvZWZ1bi9uZXh0X2ludmVudG9yeQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi42MTM3MGEwCi0tLSAvZGV2L251bGwKKysrIGIvZG9jL2VmdW4vbmV4dF9pbnZlbnRvcnkKQEAgLTAsMCArMSwxNyBAQAorU1lOT1BTSVMKKyAgICAgICAgb2JqZWN0IG5leHRfaW52ZW50b3J5KCk7CisgICAgICAgIG9iamVjdCBuZXh0X2ludmVudG9yeShvYmplY3Qgb2IpOworCitCRVNDSFJFSUJVTkcKKyAgICAgICAgTGllZmVydCBkYXMgbmFlY2hzdGUgT2JqZWt0IGF1cyBkZW0gSW52ZW50YXIgdm9uIDxvYj4uIFdpcmQgPG9iPgorICAgICAgICBuaWNodCBhbmdlZ2ViZW4sIHdpcmQgdGhpc19vYmplY3QoKSB2ZXJ3ZW5kZXQuCisKKyAgICAgICAgRGllc2UgRWZ1biB3aXJkIG1laXN0ZW5zIHp1c2FtbWVuIG1pdCBmaXJzdF9pbnZlbnRvcnkoKSB2ZXJ3ZW5kZXQKKyAgICAgICAgdW0gdWViZXIgUmF1bS0gdW5kIENvbnRhaW5lcmluaGFsdGUgenUgaXRlcmllcmVuLgorICAgICAgICBGdWVyIGVpbiBCZWlzcGllbCBzaWVoZSBkb3J0LgorCitTSUVIRSBBVUNICisgICAgICAgIGZpcnN0X2ludmVudG9yeShFKSwgYWxsX2ludmVudG9yeShFKSwgZW52aXJvbm1lbnQoRSksCisgICAgICAgIGRlZXBfaW52ZW50b3J5KEUpCisKKzcuQXVnIDIwMDcgR2xvaW5zb24KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9kb2MvZWZ1bi9vYmplY3RfaW5mbyBiL2RvYy9lZnVuL29iamVjdF9pbmZvCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjRhNzczZmMKLS0tIC9kZXYvbnVsbAorKysgYi9kb2MvZWZ1bi9vYmplY3RfaW5mbwpAQCAtMCwwICsxLDIwMiBAQAorU1lOT1BTSVMKKyAgICAgICAgI2luY2x1ZGUgPG9iamVjdF9pbmZvLmg+CisKKyAgICAgICAgbWl4ZWQgb2JqZWN0X2luZm8ob2JqZWN0IG9iLCBpbnQgd2hhdCkKKworREVTQ1JJUFRJT04KKyAgICAgICAgUmV0dXJucyBzb21lIGludGVybmFsIGluZm9ybWF0aW9uIGFib3V0IG9iamVjdCA8b2I+LiBUaGUKKyAgICAgICAgQXJndW1lbnQgPHdoYXQ+IGRldGVybWluZXMgd2hpY2ggaW5mb3JtYXRpb24gaXMgcmV0dXJuZWQuCisKKyAgICAgICAgSXQgY2FuIGJlIGVpdGhlciBhIGNvbmZpZ3VyYXRpb24gb3B0aW9uIGFzIGdpdmVuIHRvCisgICAgICAgIGNvbmZpZ3VyZV9vYmplY3QoKSBvciBvbmUgb2YgdGhlIGZvbGxvd2luZyBvcHRpb25zOgorCisKKworICAgICAgICBPYmplY3QgRmxhZ3M6CisKKyAgICAgICAgPHdoYXQ+ID09IE9JX09OQ0VfSU5URVJBQ1RJVkU6CisgICAgICAgICAgIDEgaWYgPG9iPiB3YXMgb25jZSAob3Igc3RpbGwgaXMpIGludGVyYWN0aXZlLCAwIGVsc2UuCisKKyAgICAgICAgPHdoYXQ+ID09IE9JX1JFU0VUX1NUQVRFOgorICAgICAgICAgICAxIGlmIDxvYj4gaXMgKHN0aWxsKSByZXNldCwgMCBlbHNlLgorCisgICAgICAgIDx3aGF0PiA9PSBPSV9XSUxMX0NMRUFOX1VQOgorICAgICAgICAgICAxIGlmIDxvYj4ncyBjbGVhbl91cCgpIHdpbGwgYmUgY2FsbGVkLCAwIGVsc2UuCisKKyAgICAgICAgPHdoYXQ+ID09IE9JX0xBTUJEQV9SRUZFUkVOQ0VEOgorICAgICAgICAgICAxIGlmIDxvYj4gaGFzIGxhbWJkYXMgKGFuZCB0aGVyZSByZXBsYWNlX3Byb2dyYW0oKQorICAgICAgICAgICBpcyBub3QgYWxsb3dlZCBhbnltb3JlKSwgMCBlbHNlLgorCisgICAgICAgIDx3aGF0PiA9PSBPSV9SRVBMQUNFRDoKKyAgICAgICAgICAgMSBpZiB0aGUgcHJvZ3JhbSBmb3IgPG9iPiB3YXMgcmVwbGFjZWQsIDAgZWxzZS4KKworCisKKyAgICAgICAgUHJvZ3JhbSBGbGFnczoKKworICAgICAgICA8d2hhdD4gPT0gT0lfTk9fSU5IRVJJVDoKKyAgICAgICAgICAgMSBpZiB0aGUgcHJvZ3JhbSBjYW4ndCBiZSBpbmhlcml0ZWQuCisKKyAgICAgICAgPHdoYXQ+ID09IE9JX05PX0NMT05FOgorICAgICAgICAgICAxIGlmIHRoZSBwcm9ncmFtL2JsdWVwcmludCBjYW4ndCBiZSBjbG9uZWQuCisKKyAgICAgICAgPHdoYXQ+ID09IE9JX05PX1NIQURPVzoKKyAgICAgICAgICAgMSBpZiB0aGUgcHJvZ3JhbSdzIGZ1bmN0aW9ucyBjYW4ndCBiZSBzaGFkb3dlZC4KKworICAgICAgICA8d2hhdD4gPT0gT0lfU0hBUkVfVkFSSUFCTEVTOgorICAgICAgICAgICAxIGlmIGNsb25lcyBvZiB0aGlzIHByb2dyYW0gc2hhcmUgdGhlaXIgaW5pdGlhbAorICAgICAgICAgICB2YXJpYWJsZSB2YWx1ZXMgd2l0aCB0aGUgYmx1ZXByaW50LgorCisKKworICAgICAgICBTd2FwcGluZyBJbmZvcm1hdGlvbjoKKworICAgICAgICA8d2hhdD4gPT0gT0lfU1dBUFBFRDoKKyAgICAgICAgICAgMSBpZiA8b2I+IGlzIHN3YXBwZWQsIDAgZWxzZS4KKworICAgICAgICA8d2hhdD4gPT0gT0lfUFJPR19TV0FQUEVEOgorICAgICAgICAgICAxIGlmIDxvYj4ncyBwcm9ncmFtIGlzIHN3YXBwZWQsIDAgZWxzZS4KKworICAgICAgICA8d2hhdD4gPT0gT0lfVkFSX1NXQVBQRUQ6CisgICAgICAgICAgIDEgaWYgPG9iPidzIHZhcmlhYmxlcyBhcmUgc3dhcHBlZCwgMCBlbHNlLgorCisgICAgICAgIDx3aGF0PiA9PSBPSV9TV0FQX05VTToKKyAgICAgICAgICAgVGhlIHN3YXAgbnVtYmVyIGZvciA8b2I+cyBwcm9ncmFtLCBvciAtMSBpZiBub3Qgc3dhcHBlZC4KKworCisKKyAgICAgICAgVGltZSBJbmZvcm1hdGlvbjoKKworICAgICAgICA8d2hhdD4gPT0gT0lfTkVYVF9SRVNFVF9USU1FOgorICAgICAgICAgICAgVGltZSBvZiB0aGUgbmV4dCByZXNldC4KKworICAgICAgICA8d2hhdD4gPT0gT0lfTkVYVF9DTEVBTlVQX1RJTUU6CisgICAgICAgICAgICBUaW1lIG9mIHRoZSBuZXh0IGRhdGEgY2xlYW51cC4KKworICAgICAgICA8d2hhdD4gPT0gT0lfTEFTVF9SRUZfVElNRToKKyAgICAgICAgICAgIFRpbWUgb2YgdGhlIGxhc3QgY2FsbCB0byA8b2I+LgorCisKKworICAgICAgICBPYmplY3QgTGlzdDoKKworICAgICAgICA8d2hhdD4gPT0gT0lfT0JKRUNUX05FWFQ6CisgICAgICAgICAgIFRoZSBuZXh0IG9iamVjdCBpbiB0aGUgZ2xvYmFsIG9iamVjdCBsaXN0LgorCisgICAgICAgIDx3aGF0PiA9PSBPSV9PQkpFQ1RfUFJFVjoKKyAgICAgICAgICAgVGhlIHByZXZpb3VzIG9iamVjdCBpbiB0aGUgZ2xvYmFsIG9iamVjdCBsaXN0LgorCisgICAgICAgIDx3aGF0PiA9PSBPSV9PQkpFQ1RfUE9TOgorICAgICAgICAgICBUaGUgcG9zaXRpb24gb2YgPG9iPiBpbiB0aGUgZ2xvYmFsIG9iamVjdCBsaXN0LAorICAgICAgICAgICBjb3VudGluZyBmcm9tIDAgdXAuIFRoaXMgY2FuIGJlIGV4cGVuc2l2ZSB0byBjb21wdXRlLgorCisKKworICAgICAgICBTaGFkb3dzOgorCisgICAgICAgIDx3aGF0PiA9PSBPSV9TSEFET1dfTkVYVDoKKyAgICAgICAgICAgVGhlIG5leHQgb2JqZWN0IGluIHRoZSBzaGFkb3cgbGlzdCwgaS5lLiB0aGUgb2JqZWN0CisgICAgICAgICAgIHRoYXQgaXMgc2hhZG93aW5nIDxvYj4sIG9yIDAgaWYgPG9iPiBpcyBub3Qgc2hhZG93ZWQuCisKKyAgICAgICAgPHdoYXQ+ID09IE9JX1NIQURPV19QUkVWOgorICAgICAgICAgICBUaGUgcHJldmlvdXMgb2JqZWN0IGluIHRoZSBzaGFkb3cgbGlzdCwgaS5lLiB0aGUgb2JqZWN0CisgICAgICAgICAgIHRoYXQgPG9iPiBpcyBjdXJyZW50bHkgc2hhZG93aW5nLCBvciAwIGlmIDxvYj4gaXMgbm90IGEgc2hhZG93LgorCisgICAgICAgIDx3aGF0PiA9PSBPSV9TSEFET1dfQUxMOgorICAgICAgICAgICBSZXR1cm5zIGFuIGFycmF5IG9mIGFsbCBvYmplY3RzIHRoYXQgYXJlIGN1cnJlbnRseQorICAgICAgICAgICBzaGFkb3dpbmcgPG9iPiwgb3IgYW4gZW1wdHkgYXJyYXkgaWYgPG9iPiBpcyBub3Qgc2hhZG93ZWQuCisKKworCisgICAgICAgIE9iamVjdCBTdGF0aXN0aWNzOgorCisgICAgICAgIDx3aGF0PiA9PSBPSV9PQkpFQ1RfUkVGUzoKKyAgICAgICAgICAgVGhlIG51bWJlciBvZiByZWZlcmVuY2VzIHRvIDxvYj4uCisKKyAgICAgICAgPHdoYXQ+ID09IE9JX1RJQ0tTOgorICAgICAgICAgICBUaGUgYWNjdW11bGF0ZWQgZXZhbHVhdGlvbiBjb3N0IHNwZW5kIGluIDxvYj4gbW9kdWxvIDEwMDAwMDAwMDAuCisKKyAgICAgICAgPHdoYXQ+ID09IE9JX0dJR0FUSUNLUzoKKyAgICAgICAgICAgVGhlIGFjY3VtdWxhdGVkIGV2YWx1YXRpb24gY29zdCBzcGVuZCBpbiA8b2I+IGRpdmlkZWQgYnkgMTAwMDAwMDAwMC4KKworICAgICAgICA8d2hhdD4gPT0gT0lfREFUQV9TSVpFOgorICAgICAgICAgICBUaGUgdG90YWwgc2l6ZSBvZiB0aGUgdmFsdWVzIGhlbGQgaW4gdGhlIG9iamVjdCdzIHZhcmlhYmxlcywKKyAgICAgICAgICAgc2NhbGVkIGRvd24gYWNjb3JkaW5nIHRvIHRoZSBleHRlbmQgb2YgZGF0YSBzaGFyaW5nLgorCisgICAgICAgIDx3aGF0PiA9PSBPSV9EQVRBX1NJWkVfVE9UQUw6CisgICAgICAgICAgIFRoZSB1bm1vZGlmaWVkIHRvdGFsIHNpemUgb2YgdGhlIHZhbHVlcyBoZWxkIGluIHRoZQorICAgICAgICAgICBvYmplY3QncyB2YXJpYWJsZXMKKworCisKKyAgICAgICAgUHJvZ3JhbSBTdGF0aXN0aWNzOgorCisgICAgICAgIDx3aGF0PiA9PSBPSV9QUk9HX1JFRlM6CisgICAgICAgICAgIFRoZSBudW1iZXIgb2YgcmVmZXJlbmNlcyB0byA8b2I+J3MgcHJvZ3JhbS4KKworICAgICAgICA8d2hhdD4gPT0gT0lfTlVNX0ZVTkNUSU9OUzoKKyAgICAgICAgICAgVGhlIG51bWJlciBvZiBmdW5jdGlvbnMgaW4gdGhlIHByb2dyYW0uCisKKyAgICAgICAgPHdoYXQ+ID09IE9JX05VTV9WQVJJQUJMRVM6CisgICAgICAgICAgIFRoZSBudW1iZXIgb2YgdmFyaWFibGVzIGluIHRoZSBwcm9ncmFtLgorCisgICAgICAgIDx3aGF0PiA9PSBPSV9OVU1fU1RSSU5HUzoKKyAgICAgICAgICAgVGhlIG51bWJlciBvZiBzdHJpbmdzIGluIHRoZSBwcm9ncmFtLgorCisgICAgICAgIDx3aGF0PiA9PSBPSV9OVU1fSU5IRVJJVEVEOgorICAgICAgICAgICBUaGUgbnVtYmVyIG9mIGV4cGxpY2l0ZWx5IGluaGVyaXRlZCBwcm9ncmFtcy4KKworICAgICAgICA8d2hhdD4gPT0gT0lfTlVNX0lOQ0xVREVEOgorICAgICAgICAgICBUaGUgbnVtYmVyIG9mIGluY2x1ZGVkIGZpbGVzIGluIHRoZSBwcm9ncmFtLgorCisgICAgICAgIDx3aGF0PiA9PSBPSV9TSVpFX0ZVTkNUSU9OUzoKKyAgICAgICAgICAgVGhlIHNpemUgbmVlZGVkIGZvciB0aGUgZnVuY3Rpb24gc3RydWN0dXJlcy4KKyAgICAgICAgICAgTm90ZSB0aGF0IHRoaXMgZG9lcyBub3QgaW5jbHVkZSBzaXplIG9mIHRoZSBmdW5jdGlvbiBjb2RlLgorCisgICAgICAgIDx3aGF0PiA9PSBPSV9TSVpFX1ZBUklBQkxFUzoKKyAgICAgICAgICAgVGhlIHNpemUgbmVlZGVkIGZvciB0aGUgdmFyaWFibGUgc3RydWN0dXJlcy4KKyAgICAgICAgICAgTm90ZSB0aGF0IHRoaXMgZG9lcyBub3QgaW5jbHVkZSBzaXplIG9mIHRoZSB2YXJpYWJsZSBkYXRhLAorICAgICAgICAgICBTZWUgT0lfREFUQV9TSVpFL09JX0RBVEFfU0laRV9UT1RBTCBmb3IgdGhhdC4KKworICAgICAgICA8d2hhdD4gPT0gT0lfU0laRV9TVFJJTkdTOgorICAgICAgICAgICBUaGUgc2l6ZSBuZWVkZWQgZm9yIHRoZSBzdHJpbmcgcG9pbnRlcnMuCisKKyAgICAgICAgPHdoYXQ+ID09IE9JX1NJWkVfU1RSSU5HU19EQVRBOgorICAgICAgICAgICBUaGUgc2l6ZSBuZWVkZWQgZm9yIHRoZSBzdHJpbmcgdmFsdWVzLAorICAgICAgICAgICBzY2FsZWQgZG93biBhY2NvcmRpbmcgdG8gdGhlIGV4dGVuZCBvZiBkYXRhIHNoYXJpbmcuCisKKyAgICAgICAgPHdoYXQ+ID09IE9JX1NJWkVfU1RSSU5HU19EQVRBX1RPVEFMOgorICAgICAgICAgICBUaGUgdW5tb2RpZmllZCBzaXplIG5lZWRlZCBmb3IgdGhlIHN0cmluZyB2YWx1ZXMuCisKKyAgICAgICAgPHdoYXQ+ID09IE9JX1NJWkVfSU5IRVJJVEVEOgorICAgICAgICAgICBUaGUgc2l6ZSBuZWVkZWQgZm9yIHRoZSBpbmhlcml0IHN0cnVjdHVyZXMuCisKKyAgICAgICAgPHdoYXQ+ID09IE9JX1NJWkVfSU5DTFVERUQ6CisgICAgICAgICAgIFRoZSBzaXplIG5lZWRlZCBmb3IgdGhlIGluY2x1ZGUgc3RydWN0dXJlcy4KKworICAgICAgICA8d2hhdD4gPT0gT0lfUFJPR19TSVpFOgorICAgICAgICAgICBUaGUgc2l6ZSBvZiB0aGUgcHJvZ3JhbSBzdHJ1Y3R1cmUuCisKKyAgICAgICAgPHdoYXQ+ID09IE9JX1BST0dfU0laRV9UT1RBTDoKKyAgICAgICAgICAgVGhlIHRvdGFsIHNpemUgb2YgdGhlIHByb2dyYW0uCisKKworSElTVE9SWQorICAgICAgICBJbnRyb2R1Y2VkIGluIExETXVkIDMuMi42LgorICAgICAgICBDaGFuZ2VzIGluIExETXVkIDMuMi43OgorICAgICAgICAgIC0gbmV3IGJhc2ljIHJlc3VsdCBPSUJfUkVQTEFDRUQuCisgICAgICAgICAgLSBiYXNpYyByZXN1bHQgT0lCX0lTX1dJWkFSRCBpcyBhbHdheXMgMCBpZiBzZXRfaXNfd2l6YXJkKCkKKyAgICAgICAgICAgICAgaXMgbm90IGF2YWlsYWJsZS4KKyAgICAgICAgICAtIGJhc2ljIHJlc3VsdCBPSUJfQVBQUk9WRUQgaXMgZ29uZS4KKyAgICAgICAgTERNdWQgMy4yLjggYWRkZWQgT0lNX0RBVEFfU0laRSB0byB0aGUgcmVzdWx0IG9mIE9JTkZPX01FTU9SWS4KKyAgICAgICAgTERNdWQgMy4yLjkgYWRkZWQgdGhlIGluZGV4IG1lY2hhbmlzbSwgT0lNX05VTV9JTkNMVURFUywKKyAgICAgICAgICBPSU1fTk9fSU5IRVJJVCwgT0lNX05PX1NIQURPVywgT0lNX05PX0NMT05FLCBPSU1fU0laRV9TVFJJTkdTX0RBVEEsCisgICAgICAgICAgT0lNX1NJWkVfU1RSSU5HU19UT1RBTCwgYW5kIE9JTV9EQVRBX1NJWkVfVE9UQUwgdG8gdGhlIHJlc3VsdAorICAgICAgICAgIG9mIE9JTkZPX01FTU9SWS4KKyAgICAgICAgTERNdWQgMy4zLjM3OCBhZGRlZCB0aGUgT0lNX1NIQVJFX1ZBUklBQkxFUyB0byB0aGUgcmVzdWx0CisgICAgICAgICAgb2YgT0lORk9fTUVNT1JZLgorICAgICAgICBMRE11ZCAzLjMuNjU0IGFkZGVkIHRoZSBPSUJfTkVYVF9DTEVBTlVQIHRvIHRoZSByZXN1bHQgb2YgT0lORk9fQkFTSUMuCisgICAgICAgIExETXVkIDMuNS4wIHJlZGVzaWduZWQgdGhlIHdob2xlIGVmdW4uCisKK1NFRSBBTFNPCisgICAgICAgIGNvbmZpZ3VyZV9vYmplY3QoRSksIGludGVyYWN0aXZlX2luZm8oRSksIGRyaXZlcl9pbmZvKEUpCmRpZmYgLS1naXQgYS9kb2MvZWZ1bi9vYmplY3RfbmFtZSBiL2RvYy9lZnVuL29iamVjdF9uYW1lCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjZiYTgyZWQKLS0tIC9kZXYvbnVsbAorKysgYi9kb2MvZWZ1bi9vYmplY3RfbmFtZQpAQCAtMCwwICsxLDI2IEBACitTWU5PUFNJUzoKKyAgICBzdHJpbmcgb2JqZWN0X25hbWUoKQorICAgIHN0cmluZyBvYmplY3RfbmFtZShvYmplY3Qgb2IpCisKK0RFU0NSSVBUSU9OOgorICAgIEdldCB0aGUgZmlsZSBuYW1lIG9mIGFuIG9iamVjdCBvciBpZiBubyBhcmd1bWVudCBpcyBnaXZlbiBvZiB0aGUgY3VycmVudAorICAgIG9iamVjdC4gSWYgdGhlIG9iamVjdCBpcyBhIGNsb25lZCBvYmplY3QsIHRoZW4gaXQgd2lsbCBub3QgaGF2ZSBhCisgICAgY29ycmVzcG9uZGluZyBmaWxlIG5hbWUsIGJ1dCByYXRoZXIgYSBuZXcgbmFtZSBiYXNlZCBvbiB0aGUgb3JpZ2luYWwKKyAgICBmaWxlIG5hbWUuCisgICAgICAgIAorICAgIFRoZSByZXR1cm5lZCBuYW1lIGFsd2F5cyBiZWdpbnMgd2l0aCAnLycgKGFic29sdXRlIHBhdGgpLAorICAJZXhjZXB0IHdoZW4gdGhlIHBhcnNlciBydW5zIGluIENPTVBBVCAoLW8pIG1vZGUuCisKK0VYQU1QTEVTOgorICAgIGZpbmRfb2JqZWN0KG9iamVjdF9uYW1lKG9iKSkgPT0gb2IgICAgCisgICAgVGhpcyBpcyBndWFyYW50ZWVkIHRvIGJlIHRydWUgZm9yIGFsbCBvYmplY3RzIG9iIHRoYXQgYXJlIG5vdAorICAgCWRlc3RydWN0ZWQuCisgICAgICAgIAorICAgIHNpemVvZihleHBsb2RlKG9iamVjdF9uYW1lKG9iKSwgIiMiKSkgPT0gMSAgCisgICAgVGhpcyBpcyBhbHdheXMgdHJ1ZSBpZiBvYiBpcyBhIGJsdWUgcHJpbnQuCisgICAgICAgIAorU0VFIEFMU086CisgICAgICAgIGZpbmRfb2JqZWN0KEUpCisKKzI5LjEwLjIwMDYgWmVzc3RyYQorCmRpZmYgLS1naXQgYS9kb2MvZWZ1bi9vYmplY3RfdGltZSBiL2RvYy9lZnVuL29iamVjdF90aW1lCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmRiNGQ5MWMKLS0tIC9kZXYvbnVsbAorKysgYi9kb2MvZWZ1bi9vYmplY3RfdGltZQpAQCAtMCwwICsxLDEwIEBACitTWU5PUFNJUworICAgICAgICBpbnQgb2JqZWN0X3RpbWUoKTsKKyAgICAgICAgaW50IG9iamVjdF90aW1lKG9iamVjdCBvYik7CisKK0JFU0NIUkVJQlVORworICAgICAgICBMaWVmZXJ0IGRpZSBaZWl0LCB6dSBkZXIgZGFzIE9iamVrdCA8b2I+IGVyc3RlbGx0IHd1cmRlLiBXaXJkIDxvYmo+CisgICAgICAgIG5pY2h0IGFuZ2VnZWJlbiwgd2lyZCBzdGFuZGFyZG1hZXNzaWcgdGhpc19vYmplY3QoKSB2ZXJ3ZW5kZXQuCisKK1NJRUhFIEFVQ0gKKyAgICAgICAgcHJvZ3JhbV90aW1lKEUpLCBwcm9ncmFtX25hbWUoRSkKZGlmZiAtLWdpdCBhL2RvYy9lZnVuL29iamVjdHAgYi9kb2MvZWZ1bi9vYmplY3RwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjJiMDc1OGMKLS0tIC9kZXYvbnVsbAorKysgYi9kb2MvZWZ1bi9vYmplY3RwCkBAIC0wLDAgKzEsOSBAQAorU1lOT1BTSVMKKyAgICAgICAgaW50IG9iamVjdHAobWl4ZWQgYXJnKTsKKworQkVTQ0hSRUlCVU5HCisgICAgICAgIExpZWZlcnQgMSwgd2VubiA8YXJnPiBlaW4gT2JqZWt0IGlzdC4KKworU0lFSEUgQVVDSAorICAgICAgICBjbG9uZXAoRSksIGludHAoRSksIHN0cmluZ3AoRSksIHBvaW50ZXJwKEUpLCBzeW1ib2xwKEUpLAorICAgICAgICByZWZlcmVuY2VwKEUpLCBzeW1ib2xwKEUpCmRpZmYgLS1naXQgYS9kb2MvZWZ1bi9vcl9iaXRzIGIvZG9jL2VmdW4vb3JfYml0cwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4yNTQwNmU0Ci0tLSAvZGV2L251bGwKKysrIGIvZG9jL2VmdW4vb3JfYml0cwpAQCAtMCwwICsxLDI3IEBACitTWU5PUFNJUworICAgICAgICBzdHJpbmcgb3JfYml0cyhzdHJpbmcgc3RyMSwgc3RyaW5nIHN0cjIpOworCitCRVNDSFJFSUJVTkcKKyAgICAgICAgPHN0cjE+IHVuZCA8c3RyMj4gc2luZCBiZWlkZXMgQml0c3RyaW5ncy4gRGFzIFJlc3VsdGF0IHZvbiBvcl9iaXRzKCkKKyAgICAgICAgaXN0IGVpbiBCaXRzdHJpbmcsIGRlciBkYXMgYmluYWVyZSBPZGVyIHZvbiA8c3RyMT4gdW5kIDxzdHIyPgorICAgICAgICBlbnRoYWVsdCwgZC5oLiBlaW4gU3RyaW5nLCBpbiBkZW0gZWluIEJpdCBnZXNldHp0IGlzdCwgd2VubiBlcworICAgICAgICBpbiA8c3RyMT4gb2RlciA8c3RyMj4gb2RlciBpbiBiZWlkZW4gZ2VzZXR6dCBpc3QuCisKKyAgICAgICAgSmVkZXMgWmVpY2hlbiBlbnRoYWVsdCA2IEJpdHMuIEluIGplZGVtIFplaWNoZW4ga2FubiBkZXNoYWxiIGVpbmUKKyAgICAgICAgWmFobCB2b24gMCBiaXMgNjMgZ2VzcGVpY2hlcnQgd2VyZGUgKDJeNj02NCkuIERhcyBlcnN0ZSBaZWljaGVuCisgICAgICAgIGlzdCBkZXIgTGVlcnNjaGxhZyAiICIgbWl0IGRlbSBXZXJ0IDAuIERhcyBlcnN0ZSBaZWljaGVuIGltIFN0cmluZworICAgICAgICBpc3QgamVuZXMgbWl0IGRlbiBuaWVkcmlnc3RlbiBCaXRzICgwLTUpLgorCitCRUlTUElFTAorICAgICAgICBzdHJpbmcgczEsIHMyLCBzMzsKKworICAgICAgICBzMSA9IHNldF9iaXQoIiIsIDMpOyBzMSA9IHNldF9iaXQoczEsIDE1KTsgIC0+IHMxIGlzICIoICgiCisgICAgICAgIHMyID0gc2V0X2JpdCgiIiwgMyk7IHMyID0gc2V0X2JpdChzMiwgNCk7ICAgLT4gczIgaXMgIjgiCisKKyAgICAgICAgczMgPSBvcl9iaXRzKHMxLCBzMik7CisKKyAgICAgICAgLT4gczMgaXMgbm93ICI4ICgiLCBpZS4gYSBiaXRzdHJpbmcgd2l0aCBiaXRzIDMsIDQgYW5kIDE1IHNldC4KKworU0lFSEUgQVVDSAorICAgICAgICBjbGVhcl9iaXQoRSksIHNldF9iaXQoRSksIHRlc3RfYml0KEUpLCBuZXh0X2JpdChFKSwgbGFzdF9iaXQoRSksCisgICAgICAgIGNvdW50X2JpdHMoRSksIGFuZF9iaXRzKEUpLCB4b3JfYml0cyhFKSwgaW52ZXJ0X2JpdHMoRSksIGNvcHlfYml0cyhFKQpkaWZmIC0tZ2l0IGEvZG9jL2VmdW4vcGFyc2VfY29tbWFuZCBiL2RvYy9lZnVuL3BhcnNlX2NvbW1hbmQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uODNiNzczMQotLS0gL2Rldi9udWxsCisrKyBiL2RvYy9lZnVuL3BhcnNlX2NvbW1hbmQKQEAgLTAsMCArMSwxMzIgQEAKK09QVElPTkFMCitTWU5PUFNJUworICAgICAgICBpbnQgcGFyc2VfY29tbWFuZCAoc3RyaW5nIGNtZCwgb2JqZWN0ICBlbnYsIHN0cmluZyBmbXQsIG1peGVkICZ2YXIsIC4uLikKKyAgICAgICAgaW50IHBhcnNlX2NvbW1hbmQgKHN0cmluZyBjbWQsIG9iamVjdCogYXJyLCBzdHJpbmcgZm10LCBtaXhlZCAmdmFyLCAuLi4pCisKK0RFU0NSSVBUSU9OCisgICAgICAgIHBhcnNlX2NvbW1hbmQoKSBpcyBiYXNpY2FsbHkgYSBzcGlmZmVkIHVwIHNzY2FuZiBvcGVyYXRpbmcKKyAgICAgICAgb24gd29yZCBiYXNpcyBhbmQgdGFyZ2V0ZWQgYXQgcmVjb2duaXppbmcgb2JqZWN0IGRlc2NyaXB0aW9ucyBmcm9tCisgICAgICAgIGNvbW1hbmQgc3RyaW5ncy4KKworICAgICAgICBUaGUgZWZ1biB0YWtlcyB0aGUgY29tbWFuZCBzdHJpbmcgPGNtZD4gYW5kIHRoZSBvYmplY3QocykgPGVudj4vPGFycj4KKyAgICAgICAgYW5kIHRyaWVzIHRvIG1hdGNoIGl0IGFnYWluc3QgdGhlIGZvcm1hdCBzdHJpbmcgPGZtdD4uIFN1Y2Nlc3NmdWxseQorICAgICAgICBtYXRjaGVkIGVsZW1lbnRzIGFyZSBhc3NpZ25lZCB0byB0aGUgdmFyaWFibGVzIDx2YXI+Li4uLiBUaGUgcmVzdWx0CisgICAgICAgIGZyb20gdGhlIGVmdW4gaXMgMSBpZiB0aGUgY29tbWFuZCBjb3VsZCBiZSBmdWxseSBtYXRjaGVkLCBhbmQgMAorICAgICAgICBvdGhlcndpc2UuCisKKyAgICAgICAgSWYgdGhlIG9iamVjdHMgYXJlIGdpdmVuIGFzIGEgc2luZ2xlIG9iamVjdCA8ZW52PiwgdGhlIGVmdW4gbWF0Y2hlcworICAgICAgICBhZ2FpbnN0IHRoZSBnaXZlbiBvYmplY3QgYW5kIGFsbCBvYmplY3RzIGNvbnRhaW5lZCB0aGVyZWluLiBPdGhlcndpc2UsCisgICAgICAgIGlmIHRoZSBvYmplY3RzIGFyZSBnaXZlbiBhcyBhbiBhcnJheSA8YXJyPiBvZiBvYmplY3RzLCB0aGUgZWZ1bgorICAgICAgICBtYXRjaGVzIG9ubHkgYWdhaW5zdCB0aGUgZ2l2ZW4gb2JqZWN0cy4KKworICAgICAgICBUaGUgZm9ybWF0IHN0cmluZyA8Zm10PiBjb25zaXN0cyBvZiB3b3Jkcywgc3ludGFjdGljIG1hcmtlcnMsIGFuZAorICAgICAgICAlLWRpcmVjdGl2ZXMgZm9yIHRoZSB2YWx1ZXMgdG8gcGFyc2UgYW5kIHJldHVybiBpbiB0aGUgdmFyaWFibGVzLgorICAgICAgICBBIHR5cGljYWwgZXhhbXBsZSBpcyAiICdnZXQnIC8gJ3Rha2UnICVpICIgb3IKKyAgICAgICAgIiAnc3ByYXknIC8gJ3BhaW50JyBbcGFpbnRdICVpICIuIFRoZSBlbGVtZW50cyBpbiBkZXRhaWwgYXJlOgorCisgICAgICAgICAgICd3b3JkJzogb2JsaWdhdG9yeSB0ZXh0CisgICAgICAgICAgIFt3b3JkXTogb3B0aW9uYWwgdGV4dAorICAgICAgICAgICAvICAgICA6IEFsdGVybmF0aXZlIG1hcmtlcgorICAgICAgICAgICAlbyAgICA6IFNpbmdsZSBpdGVtLCBvYmplY3QKKyAgICAgICAgICAgJXMgICAgOiBBbnkgdGV4dAorICAgICAgICAgICAldyAgICA6IEFueSB3b3JkCisgICAgICAgICAgICVwICAgIDogT25lIG9mIGEgbGlzdCBvZiBwcmVwb3NpdGlvbnMuCisgICAgICAgICAgICAgICAgICAgSWYgdGhlIHZhcmlhYmxlIGFzc29jaWF0ZWQgd2l0aCAlcCBpcyB1c2VkIHRvIHBhc3MKKyAgICAgICAgICAgICAgICAgICBhIGxpc3Qgb2Ygd29yZHMgdG8gdGhlIGVmdW4sIHRoZSBtYXRjaGluZyB3aWxsIHRha2UKKyAgICAgICAgICAgICAgICAgICBvbmx5IGFnYWluc3QgdGhpcyBsaXN0LgorICAgICAgICAgICAlbCAgICA6IG5vbi1jb21wYXQ6IExpdmluZyBvYmplY3RzCisgICAgICAgICAgICAgICAgICAgY29tcGF0OiBhIHNpbmdsZSBsaXZpbmcgb2JqZWN0CisgICAgICAgICAgICVpICAgIDogQW55IG9iamVjdHMKKyAgICAgICAgICAgJWQgICAgOiBOdW1iZXIgPj0gMCwgb3Igd2hlbiBnaXZlbiB0ZXh0dWFsOiAwLTk5LgorCisgICAgICAgIEEgPHdvcmQ+IGluIHRoaXMgY29udGV4dCBpcyBhbnkgc2VxdWVuY2Ugb2YgY2hhcmFjdGVycyBub3QgY29udGFpbmluZworICAgICAgICBhIHNwYWNlLiAnbGl2aW5nIG9iamVjdHMnIGFyZSBzZWFyY2hlZCBieSBjYWxscyB0byB0aGUgKHNpbXVsKWVmdW5zCisgICAgICAgIGZpbmRfcGxheWVyKCkgYW5kIGZpbmRfbGl2aW5nKCk6IGJvdGggZnVuY3Rpb25zIGhhdmUgdG8gYWNjZXB0IGEgbmFtZQorICAgICAgICBhcyBhcmd1bWVudCBhbmQgcmV0dXJuIHRoZSBvYmplY3QgZm9yIHRoaXMgbmFtZSwgb3IgMCBpZiB0aGVyZQorICAgICAgICBpcyBub25lLgorCisgICAgICAgIFRoZSByZXN1bHRzIGFzc2lnbmVkIHRvIHRoZSB2YXJpYWJsZXMgYnkgdGhlICUtZGlyZWN0aXZlcyBhcmU6CisKKyAgICAgICAgICAgJW8gOiByZXR1cm5zIGFuIG9iamVjdAorICAgICAgICAgICAlcyA6IHJldHVybnMgYSBzdHJpbmcgb2Ygd29yZHMKKyAgICAgICAgICAgJXcgOiByZXR1cm5zIGEgc3RyaW5nIG9mIG9uZSB3b3JkCisgICAgICAgICAgICVwIDogaWYgcGFzc2VkIGVtcHR5OiBhIHN0cmluZworICAgICAgICAgICAgICAgIGlmIHBhc3NlZCBhcyBhcnJheSBvZiB3b3JkczogdmFyWzBdIGlzIHRoZSBtYXRjaGVkIHdvcmQKKyAgICAgICAgICAgJWkgOiByZXR1cm5zIGFuIGFycmF5IHdpdGggdGhlIGZvbGxvd2luZyBjb250ZW50OgorICAgICAgICAgICAgICAgICAgWzBdOiBpbnQ6IHRoZSBjb3VudC9udW1iZXIgcmVjb2duaXplZCBpbiB0aGUgb2JqZWN0IHNwZWMKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA+IDA6IGEgY291bnQgKGUuZy4gJ3RocmVlJywgJzQnKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwgMDogYW4gb3JkaW5hbCAoZS5nLiAnc2Vjb25kJywgJ3RoaXJkJykKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA9IDA6ICdhbGwnIG9yIGEgZ2VuZXJpYyBwbHVyYWwgc3VjaCBhcyAnYXBwbGVzJworICAgICAgICAgICAgICAgICAgWzEuLl06IG9iamVjdDogYWxsKCEpIG9iamVjdHMgbWF0Y2hpbmcgdGhlIGl0ZW0gZGVzY3JpcHRpb24uCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBJbiB0aGUgPGVudj4gZm9ybSB0aGlzIG1heSBiZSB0aGUgd2hvbGUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlY3Vyc2l2ZSBpbnZlbnRvcnkgb2YgdGhlIDxlbnY+IG9iamVjdC4KKyAgICAgICAgICAgICAgICBJdCBpcyB1cCB0byB0aGUgY2FsbGVyIHRvIGludGVycHJldCB0aGUgcmVjb2duaXplZCBudW1lcmFsCisgICAgICAgICAgICAgICAgYW5kIHRvIGFwcGx5IGl0IG9uIHRoZSBsaXN0IG9mIG1hdGNoZWQgb2JqZWN0cy4KKyAgICAgICAgICAgJWwgOiBub24tY29tcGF0OiBhcyAlaSwgZXhjZXB0IHRoYXQgb25seSBsaXZpbmcgb2JqZWN0cyBhcmUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm5lZC4KKyAgICAgICAgICAgICAgICBjb21wYXQ6IGFzICVvLCBleGNlcHQgdGhhdCBvbmx5IGEgbGl2aW5nIG9iamVjdCBpcyByZXR1cm5lZC4KKworICAgICAgICAlaSAoYW5kIG5vbi1jb21wYXQtJWwpIG1hdGNoIGRlc2NyaXB0aW9ucyBsaWtlICd0aHJlZSByZWQgcm9zZXMnLAorICAgICAgICAnYWxsIG5hc3R5IGJ1Z3MnIG9yICdzZWNvbmQgYmx1ZSBzd29yZCcuCisKKyAgICAgICAgTm90ZTogUGF0dGVybnMgb2YgdHlwZTogIiVzICV3ICVpIiBtaWdodCBub3Qgd29yayBhcyBvbmUgd291bGQgZXhwZWN0LgorICAgICAgICAldyB3aWxsIGFsd2F5cyBzdWNjZWVkIHNvIHRoZSBhcmcgY29ycmVzcG9uZGluZyB0byAlcyB3aWxsIGFsd2F5cyBiZQorICAgICAgICBlbXB0eS4KKworICAgICAgICBUbyBtYWtlIHRoZSBlZnVuIHVzZWZ1bCBpdCBtdXN0IGhhdmUgYSBjZXJ0YWluIHN1cHBvcnQgZnJvbSB0aGUKKyAgICAgICAgbXVkbGliOiBpdCBjYWxscyBhIHNldCBvZiBmdW5jdGlvbnMgaW4gb2JqZWN0cyB0byBnZXQgdGhlCisgICAgICAgIGluZm9ybWF0aW9uIGl0IG5lZWRzIHRvIHBhcnNlIGEgc3RyaW5nLgorCisgICAgICAgICAgMS4gc3RyaW5nICpwYXJzZV9jb21tYW5kX2lkX2xpc3QoKQorICAgICAgICAgICAgICBOb3JtYWwgc2luZ3VsYXIgbmFtZXMgb2YgdGhlIG9iamVjdC4KKworICAgICAgICAgIDIuIHN0cmluZyAqcGFyc2VfY29tbWFuZF9wbHVyYWxfaWRfbGlzdCgpIC0gb3B0aW9uYWwKKyAgICAgICAgICAgICAgUGx1cmFsIGZvcm1zIG9mIHRoZSBuYW1lcyByZXR1cm5lZCBieSAxLgorICAgICAgICAgICAgICBJZiB0aGlzIGZ1bmN0aW9uIGRvZXNuJ3QgZXhpc3QsIHRoZSBwYXJzZXIgdHJpZXMgdG8gcGx1cmFsaXplCisgICAgICAgICAgICAgIHRoZSBuYW1lcyByZXR1cm5lZCBieSAxLgorCisgICAgICAgICAgMy4gc3RyaW5nICpwYXJzZV9jb21tYW5kX2FkamVjdGl2X2lkX2xpc3QoKSAtICBvcHRpb25hbAorICAgICAgICAgICAgICBBbGwgYWRqZWN0aXZlcyBhc3NvY2lhdGVkIHdpdGggdGhpcyBvYmplY3QuCisKKyAgICAgICAgQWxsIG5hbWVzIGFuZCBhZGplY3RpdmVzIG1heSBjb25zaXN0IG9mIHNldmVyYWwgd29yZHMgc2VwYXJhdGVkCisgICAgICAgIGJ5IHNwYWNlcy4KKworICAgICAgICBUaGVzZSBmdW5jdGlvbnMgc2hvdWxkIGV4aXN0IGluIGFsbCBvYmplY3RzIGFuZCBhcmUgdGhlcmVmb3JlIGJlc3QKKyAgICAgICAgcHV0IGludG8gYSBtYW5kYXRvcnkgaW5oZXJpdCBmaWxlIChlLmcuIC9zdGQvb2JqZWN0LmMpLgorCisgICAgICAgIEluIGFkZGl0aW9uIHRoZSBtYXN0ZXIgb2JqZWN0IG1heSBvZmZlciB0aGUgc2FtZSBmdW5jdGlvbnMgdG8gcHJvdmlkZQorICAgICAgICByZWFzb25hYmxlIGRlZmF1bHRzIChsaWtlICd0aGluZycgYXMgZ2VuZXJpYyBzaW5ndWxhciBuYW1lKToKKworICAgICAgICAgICAgIHN0cmluZyAqcGFyc2VfY29tbWFuZF9pZF9saXN0KCkKKyAgICAgICAgICAgICAgIC0gV291bGQgbm9ybWFsbHkgcmV0dXJuOiAoeyAib25lIiwgInRoaW5nIiB9KQorCisgICAgICAgICAgICAgc3RyaW5nICpwYXJzZV9jb21tYW5kX3BsdXJhbF9pZF9saXN0KCkKKyAgICAgICAgICAgICAgIC0gV291bGQgbm9ybWFsbHkgcmV0dXJuOiAoeyAib25lcyIsICJ0aGluZ3MiLCAidGhlbSIgfSkKKworICAgICAgICAgICAgIHN0cmluZyAqcGFyc2VfY29tbWFuZF9hZGplY3Rpdl9pZF9saXN0KCkKKyAgICAgICAgICAgICAgIC0gV291bGQgbm9ybWFsbHkgcmV0dXJuICh7ICJpZmZpc2giIH0pCisKKyAgICAgICAgVHdvIGFkZGl0aW9uYWwgZnVuY3Rpb25zIGluIHRoZSBtYXN0ZXIgb2JqZWN0IHByb3ZpZGUgdGhlIGRlZmF1bHQKKyAgICAgICAgbGlzdCBvZiBwcmVwb3NpdGlvbnMgKG5lZWRlZCBmb3IgJXApIGFuZCB0aGUgc2luZ2xlICdhbGwnIHdvcmQ6CisKKyAgICAgICAgICAgICBzdHJpbmcgKnBhcnNlX2NvbW1hbmRfcHJlcG9zX2xpc3QoKQorICAgICAgICAgICAgICAgLSBXb3VsZCBub3JtYWxseSByZXR1cm46ICh7ICJpbiIsICJvbiIsICJ1bmRlciIsICJiZWhpbmQiLAorICAgICAgICAgICAgICAgICAiYmVzaWRlIiB9KQorCisgICAgICAgICAgICAgc3RyaW5nIHBhcnNlX2NvbW1hbmRfYWxsX3dvcmQoKQorICAgICAgICAgICAgICAgLSBXb3VsZCBub3JtYWxseSByZXR1cm46ICJhbGwiCisKKworICAgICAgICBpbnQgcGFyc2VfY29tbWFuZChzdHJpbmcsIG9iamVjdHxvYmplY3QqLCBzdHJpbmcsIGRlc3RhcmdzLi4uKQorCisKK0VYQU1QTEUKKyAgICAgICAgb2JqZWN0ICppdGVtczsKKyAgICAgICAgcGFyc2VfY29tbWFuZCggInRha2UgYXBwbGUiLGVudmlyb25tZW50KHRoaXNfcGxheWVyKCkpCisgICAgICAgICAgICAgICAgICAgICAsICIgJ2dldCcgLyAndGFrZScgJWkgIixpdGVtcyk7CisKK0hJU1RPUlkKKyAgICAgICAgTERNdWQgMy4zLjI1OCByZW1vdmVkIHRoZSBjb21wYXQtbW9kZSBwYXJzZV9jb21tYW5kKCkuCisKK1NFRSBBTFNPCisgICAgICAgIHNzY2FuZihFKQpkaWZmIC0tZ2l0IGEvZG9jL2VmdW4vcGVvcGxlIGIvZG9jL2VmdW4vcGVvcGxlCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmUwNGMzYmYKLS0tIC9kZXYvbnVsbAorKysgYi9kb2MvZWZ1bi9wZW9wbGUKQEAgLTAsMCArMSw4IEBACit2b2lkIHBlb3BsZSgpCisKK0EgZnVuY3Rpb24gdGhhdCB3aWxsIGxpc3QgYWxsIGludGVyYWN0aXZlIHBsYXllcnMsIGFuZCBzb21lIGluZm8gYWJvdXQgdGhlbS4gCitUaGlzIGZ1bmN0aW9uIGlzIG5vcm1hbGx5CisKK2Nvbm5lY3RlZCB0byB0aGUgcGVvcGxlIGNvbW1hbmQsIHRoYXQgd2l6YXJkcyBoYXZlLgorCitUSElTIEZVTkNUSU9OIElTIE9CU09MRVRFLiBMT09LIEFUIHVzZXJzKCkgSU5TVEVBRC4KZGlmZiAtLWdpdCBhL2RvYy9lZnVuL3BnX2Nsb3NlIGIvZG9jL2VmdW4vcGdfY2xvc2UKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYWY0ZjhmMAotLS0gL2Rldi9udWxsCisrKyBiL2RvYy9lZnVuL3BnX2Nsb3NlCkBAIC0wLDAgKzEsMTkgQEAKK09QVElPTkFMCitTWU5PUFNJUworICAgICAgICB2b2lkIHBnX2Nsb3NlKCkKKworREVTQ1JJUFRJT04KKyAgICAgICAgQ2xvc2UgdGhlIGRhdGFiYXNlIGNvbm5lY3Rpb24gZm9yIHRoZSBjdXJyZW50IG9iamVjdCwgaWYgdGhlcmUgaXMgb25lLgorCisgICAgICAgIFRoZSBmdW5jdGlvbiBpcyBhdmFpbGFibGUgb25seSBpZiB0aGUgZHJpdmVyIGlzIGNvbXBpbGVkIHdpdGgKKyAgICAgICAgUG9zdGdyZVNRTCBzdXBwb3J0LiBJbiB0aGF0IGNhc2UsIF9fUEdTUUxfXyBpcyBkZWZpbmVkLgorCisgICAgICAgIFRoZSBlZnVuIHRyaWdnZXJzIGEgcHJpdmlsZWdlIHZpb2xhdGlvbiAoInBnc3FsIiwgInBnX2Nsb3NlIikuCisKK0hJU1RPUlkKKyAgICAgICAgQWRkZWQgaW4gMy4zLjQ0NS4KKyAgICAgICAgTERNdWQgMy4zLjY0MCBhZGRlZCB0aGUgcHJpdmlsZWdlIHZpb2xhdGlvbi4KKworU0VFIEFMU08KKyAgICAgICAgcGdzcWwoQyksIHBnX2Nvbm5lY3QoRSksIHBnX2NvbnZfc3RyaW5nKEUpLCBwZ19xdWVyeShFKSwgcGdfcGVuZGluZyhFKSwKKyAgICAgICAgcHJpdmlsZWdlX3Zpb2xhdGlvbihNKQpkaWZmIC0tZ2l0IGEvZG9jL2VmdW4vcGdfY29ubmVjdCBiL2RvYy9lZnVuL3BnX2Nvbm5lY3QKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYTlkNGQ1OAotLS0gL2Rldi9udWxsCisrKyBiL2RvYy9lZnVuL3BnX2Nvbm5lY3QKQEAgLTAsMCArMSwzOSBAQAorT1BUSU9OQUwKK1NZTk9QU0lTCisgICAgICAgIGludCBwZ19jb25uZWN0IChzdHJpbmcgY29ubiwgc3RyaW5nIGZ1bikKKyAgICAgICAgaW50IHBnX2Nvbm5lY3QgKHN0cmluZyBjb25uLCBzdHJpbmcgZnVuLCBzdHJpbmd8b2JqZWN0IG9iaiwgbWl4ZWQgZXh0cmEsIC4uLikKKyAgICAgICAgaW50IHBnX2Nvbm5lY3QgKHN0cmluZyBjb25uLCBjbG9zdXJlIGNsLCBtaXhlZCBleHRyYSwgLi4uKQorCitERVNDUklQVElPTgorICAgICAgICBPcGVuIGEgZGF0YWJhc2UgY29ubmVjdGlvbiBhcyBkaXJlY3RlZCBieSA8Y29ubj4sIGFuZCBhc3NpZ24gdGhlCisgICAgICAgIGNhbGxiYWNrIGZ1bmN0aW9uIDxmdW4+LzxjbD4gd2l0aCB0aGUgb3B0aW9uYWwgPGV4dHJhPiBwYXJhbWV0ZXJzCisgICAgICAgIHRvIGl0LgorCisgICAgICAgIFRoZSBvYmplY3QgaG9sZGluZyB0aGUgY2FsbGJhY2sgZnVuY3Rpb24gYmVjb21lcyB0aGUgY29udHJvbGxpbmcKKyAgICAgICAgb2JqZWN0OyBvYmlvdXNseSBpdCBpcyBhbiBlcnJvciB0byBhc3NpZ24gbW9yZSB0aGFuIG9uZSBjb25uZWN0aW9uCisgICAgICAgIHRvIHRoZSBzYW1lIGNvbnRyb2xsaW5nIG9iamVjdC4KKworICAgICAgICBUaGUgPGNvbm4+IHN0cmluZyBpcyBpbiB0aGUgZm9ybWF0IGFjY2VwdGVkIGJ5IFBvc3RncmVzJworICAgICAgICBQUWNvbm5lY3RTdGFydCgpIEFQSSBmdW5jdGlvbnMuIFBhc3MgYW4gZW1wdHkgc3RyaW5nIHRvIHVzZSB0aGUKKyAgICAgICAgZGVmYXVsdCBvcHRpb25zLCBvciBhIHN0cmluZyBob2xkaW5nIHRoZSAnPGtleT49PHZhbHVlPicgb3B0aW9ucworICAgICAgICBzZXBhcmF0ZWQgYnkgd2hpdGVzcGFjZS4KKyAgICAgICAgCisgICAgICAgIFRoZSBtb3N0IHVzZWZ1bCBvcHRpb25zIGFyZToKKyAgICAgICAgICBkYm5hbWU6ICAgVGhlIGRhdGFiYXNlIG5hbWUKKyAgICAgICAgICB1c2VyOiAgICAgVGhlIHVzZXIgbmFtZSB0byBjb25uZWN0IGFzLgorICAgICAgICAgIHBhc3N3b3JkOiBQYXNzd29yZCB0byBiZSB1c2VkLgorCisgICAgICAgIFJldHVybiAwIG9uIHN1Y2Nlc3MsIGFuZCAtMSBvbiBmYWlsdXJlLgorCisgICAgICAgIFRoZSBmdW5jdGlvbiBpcyBhdmFpbGFibGUgb25seSBpZiB0aGUgZHJpdmVyIGlzIGNvbXBpbGVkIHdpdGgKKyAgICAgICAgUG9zdGdyZVNRTCBzdXBwb3J0LiBJbiB0aGF0IGNhc2UsIF9fUEdTUUxfXyBpcyBkZWZpbmVkLgorCisgICAgICAgIFRoZSBlZnVuIHRyaWdnZXJzIGEgcHJpdmlsZWdlIHZpb2xhdGlvbiAoInBnc3FsIiwgInBnX2Nvbm5lY3QiKS4KKworSElTVE9SWQorICAgICAgICBBZGRlZCBpbiAzLjMuNDQ1LgorICAgICAgICBMRE11ZCAzLjMuNjQwIGFkZGVkIHRoZSBwcml2aWxlZ2UgdmlvbGF0aW9uLgorCitTRUUgQUxTTworICAgICAgICBwZ3NxbChDKSwgcGdfcXVlcnkoRSksIHBnX3BlbmRpbmcoRSksIHBnX2NvbnZfc3RyaW5nKEUpLCBwZ19jbG9zZShFKSwKKyAgICAgICAgcHJpdmlsZWdlX3Zpb2xhdGlvbihNKQpkaWZmIC0tZ2l0IGEvZG9jL2VmdW4vcGdfY29udl9zdHJpbmcgYi9kb2MvZWZ1bi9wZ19jb252X3N0cmluZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5kODQ5ZDA2Ci0tLSAvZGV2L251bGwKKysrIGIvZG9jL2VmdW4vcGdfY29udl9zdHJpbmcKQEAgLTAsMCArMSwyMCBAQAorT1BUSU9OQUwKK1NZTk9QU0lTCisgICAgICAgIHN0cmluZyBwZ19jb252X3N0cmluZyhzdHJpbmcgc3RyKQorCitERVNDUklQVElPTgorICAgICAgICBDb252ZXJ0IHRoZSBzdHJpbmcgPHN0cj4gaW50byBhIHN0cmluZyB0aGF0IGlzIGNvcnJlY3RseSBpbnRlcnByZXRhdGVkCisgICAgICAgIGZvciB1c2FnZSBhcyBhIHN0cmluZyBpbiBwZ19xdWVyeSgpLCBlLmcuICcgaXMgcmVwbGFjZWQgd2l0aCBcJyBhbmQgc28KKyAgICAgICAgb24uCisKKyAgICAgICAgVGhlIGZ1bmN0aW9uIGlzIGF2YWlsYWJsZSBvbmx5IGlmIHRoZSBkcml2ZXIgaXMgY29tcGlsZWQgd2l0aAorICAgICAgICBQb3N0Z3JlU1FMIHN1cHBvcnQuIEluIHRoYXQgY2FzZSwgX19QR1NRTF9fIGlzIGRlZmluZWQuCisKKyAgICAgICAgVGhlIGVmdW4gdHJpZ2dlcnMgYSBwcml2aWxlZ2UgdmlvbGF0aW9uICgicGdzcWwiLCAicGdfY29ubmVjdCIpLgorCitISVNUT1JZCisgICAgICAgIEFkZGVkIGluIDMuMy43MDguCisKK1NFRSBBTFNPCisgICAgICAgIHBnc3FsKEMpLCBwZ19xdWVyeShFKSwgcGdfcGVuZGluZyhFKSwgcGdfY29udl9zdHJpbmcoRSksIHBnX2Nsb3NlKEUpLAorICAgICAgICBwcml2aWxlZ2VfdmlvbGF0aW9uKE0pCmRpZmYgLS1naXQgYS9kb2MvZWZ1bi9wZ19wZW5kaW5nIGIvZG9jL2VmdW4vcGdfcGVuZGluZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi40NmE2ZGNjCi0tLSAvZGV2L251bGwKKysrIGIvZG9jL2VmdW4vcGdfcGVuZGluZwpAQCAtMCwwICsxLDIyIEBACitPUFRJT05BTAorU1lOT1BTSVMKKyAgICAgICAgaW50IHBnX3BlbmRpbmcgKCkKKyAgICAgICAgaW50IHBnX3BlbmRpbmcgKG9iamVjdCBvYmopCisKK0RFU0NSSVBUSU9OCisgICAgICAgIFJldHVybiB0aGUgbnVtYmVyIG9mIHBlbmRpbmcgcXVlcmllcyBmb3IgdGhlIGNvbm5lY3Rpb24gb24gdGhlIGdpdmVuCisgICAgICAgIG9iamVjdCA8b2JqPiAoZGVmYXVsdCBpcyB0aGUgY3VycmVudCBvYmplY3QpLiBUaGUgb2JqZWN0IGhhcyBubworICAgICAgICBkYXRhYmFzZSBjb25uZWN0aW9uLCByZXR1cm4gLTEuCisKKyAgICAgICAgVGhlIGZ1bmN0aW9uIGlzIGF2YWlsYWJsZSBvbmx5IGlmIHRoZSBkcml2ZXIgaXMgY29tcGlsZWQgd2l0aAorICAgICAgICBQb3N0Z3JlU1FMIHN1cHBvcnQuIEluIHRoYXQgY2FzZSwgX19QR1NRTF9fIGlzIGRlZmluZWQuCisKKyAgICAgICAgVGhlIGVmdW4gdHJpZ2dlcnMgYSBwcml2aWxlZ2UgdmlvbGF0aW9uICgicGdzcWwiLCAicGdfcGVuZGluZyIpLgorCitISVNUT1JZCisgICAgICAgIEFkZGVkIGluIDMuMy40NDUuCisgICAgICAgIExETXVkIDMuMy42NDAgYWRkZWQgdGhlIHByaXZpbGVnZSB2aW9sYXRpb24uCisKK1NFRSBBTFNPCisgICAgICAgIHBnc3FsKEMpLCBwZ19jb25uZWN0KEUpLCBwZ19jb252X3N0cmluZyhFKSwgcGdfcXVlcnkoRSksIHBnX2Nsb3NlKEUpLAorICAgICAgICBwcml2aWxlZ2VfdmlvbGF0aW9uKE0pCmRpZmYgLS1naXQgYS9kb2MvZWZ1bi9wZ19xdWVyeSBiL2RvYy9lZnVuL3BnX3F1ZXJ5Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmQ5NWYyY2MKLS0tIC9kZXYvbnVsbAorKysgYi9kb2MvZWZ1bi9wZ19xdWVyeQpAQCAtMCwwICsxLDI4IEBACitPUFRJT05BTAorU1lOT1BTSVMKKyAgICAgICAgI2luY2x1ZGUgPHBnc3FsLmg+CisKKyAgICAgICAgaW50IHBnX3F1ZXJ5IChzdHJpbmcgcXVlcnkpCisgICAgICAgIGludCBwZ19xdWVyeSAoc3RyaW5nIHF1ZXJ5LCBpbnQgZmxhZ3MpCisKK0RFU0NSSVBUSU9OCisgICAgICAgIFF1ZXVlIGEgbmV3IHF1ZXJ5IDxxdWVyeT4gdG8gdGhlIGRhdGFiYXNlIGNvbm5lY3Rpb24gb24gdGhlIGN1cnJlbnQKKyAgICAgICAgb2JqZWN0LiBSZXR1cm4gdGhlIHVuaXF1ZSBpZCBvZiB0aGUgcXVlcnkuIFRoZSBxdWVyeSByZXN1bHQgaXRzZWxmCisgICAgICAgIHdpbGwgYmUgcGFzc2VkIGFzIGFyZ3VtZW50IHRvIHRoZSBjYWxsYmFjayBmdW5jdGlvbi4KKworICAgICAgICA8ZmxhZ3M+IGNhbiBiZSBvbmUgb2YgdGhlc2UgdmFsdWVzOgorICAgICAgICAgIFBHX1JFU1VMVF9BUlJBWTogUGFzcyB0aGUgcXVlcnkgcmVzdWx0IGFzIGFycmF5LgorICAgICAgICAgIFBHX1JFU1VMVF9NQVA6ICAgUGFzcyB0aGUgcXVlcnkgcmVzdWx0IGFzIG1hcHBpbmcuCisKKyAgICAgICAgVGhlIGZ1bmN0aW9uIGlzIGF2YWlsYWJsZSBvbmx5IGlmIHRoZSBkcml2ZXIgaXMgY29tcGlsZWQgd2l0aAorICAgICAgICBQb3N0Z3JlU1FMIHN1cHBvcnQuIEluIHRoYXQgY2FzZSwgX19QR1NRTF9fIGlzIGRlZmluZWQuCisKKyAgICAgICAgVGhlIGVmdW4gdHJpZ2dlcnMgYSBwcml2aWxlZ2UgdmlvbGF0aW9uICgicGdzcWwiLCAicGdfcXVlcnkiKS4KKworSElTVE9SWQorICAgICAgICBBZGRlZCBpbiAzLjMuNDQ1LgorICAgICAgICBMRE11ZCAzLjMuNjQwIGFkZGVkIHRoZSBwcml2aWxlZ2UgdmlvbGF0aW9uLgorCitTRUUgQUxTTworICAgICAgICBwZ3NxbChDKSwgcGdfY29ubmVjdChFKSwgcGdfY29udl9zdHJpbmcoRSksIHBnX3BlbmRpbmcoRSksIHBnX2Nsb3NlKEUpLAorICAgICAgICBwcml2aWxlZ2VfdmlvbGF0aW9uKE0pCmRpZmYgLS1naXQgYS9kb2MvZWZ1bi9wb2ludGVycCBiL2RvYy9lZnVuL3BvaW50ZXJwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmE2ZjJjMmMKLS0tIC9kZXYvbnVsbAorKysgYi9kb2MvZWZ1bi9wb2ludGVycApAQCAtMCwwICsxLDkgQEAKK1NZTk9QU0lTCisgICAgICAgIGludCBwb2ludGVycChtaXhlZCBhcmcpCisKK0JFU0NIUkVJQlVORworICAgICAgICBMaWVmZXJ0IDEsIHdlbm4gZGFzIEFyZ3VtZW50IGVpbiBGZWxkIChBcnJheSkgaXN0LCBhbnNvbnN0ZW4gMC4KKworU0lFSEUgQVVDSAorICAgICAgICBjbG9zdXJlcChFKSwgZmxvYXRwKEUpLCBtYXBwaW5ncChFKSwgb2JqZWN0cChFKSwgaW50cChFKSwKKyAgICAgICAgcmVmZXJlbmNlcChFKSwgc3RyaW5ncChFKSwgc3ltYm9scChFKSwgY2xvbmVwKEUpCmRpZmYgLS1naXQgYS9kb2MvZWZ1bi9wb3cgYi9kb2MvZWZ1bi9wb3cKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZjBmZjU4NgotLS0gL2Rldi9udWxsCisrKyBiL2RvYy9lZnVuL3BvdwpAQCAtMCwwICsxLDE2IEBACitTWU5PUFNJUworICAgICAgICBmbG9hdCBwb3coaW50fGZsYW90IGJhc2UsIGludHxmbGFvdCBleHApOworCitCRVNDSFJFSUJVTkcKKyAgICAgICAgRGllIFBvdGVuemZ1bmt0aW9uLiBTaWUgbGllZmVydCBkYXMgUmVzdWx0YXQgdm9uICI8YmFzZT4gaG9jaCA8ZXhwPiIuCisKK0JFSVNQSUVMCisgICAgICAgIHBvdygtMiwgMykgLT4gbGllZmVydCAtOC4wCisgICAgICAgIHBvdyg4LCAxLjAvMy4wKSAtPiBsaWVmZXJ0IDIuMAorCitBRU5ERVJVTkdFTgorICAgICAgICBFaW5nZWZ1ZWhydCBpbiBMRE11ZCAzLjIuNy4KKyAgICAgICAgTERNdWQgMy4yLjkuIGVybGF1YnRlIG5ldSBJbnRlZ2VyIGFscyBBcmd1bWVudGUuCisKK1NJRUhFIEFVQ0gKKyAgICAgICAgZXhwKEUpLCBsb2coRSkKZGlmZiAtLWdpdCBhL2RvYy9lZnVuL3ByZXNlbnQgYi9kb2MvZWZ1bi9wcmVzZW50Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjdiN2Q4ZDMKLS0tIC9kZXYvbnVsbAorKysgYi9kb2MvZWZ1bi9wcmVzZW50CkBAIC0wLDAgKzEsODQgQEAKK1NZTk9QU0lTCisgICAgICAgIG9iamVjdCBwcmVzZW50KHN0cmluZyBzdHIpCisgICAgICAgIG9iamVjdCBwcmVzZW50KHN0cmluZyBzdHIsIGludCBuKQorICAgICAgICBvYmplY3QgcHJlc2VudChzdHJpbmcgc3RyLCBvYmplY3QgZW52KQorICAgICAgICBvYmplY3QgcHJlc2VudChzdHJpbmcgc3RyLCBpbnQgbiwgb2JqZWN0IGVudikKKworICAgICAgICBvYmplY3QgcHJlc2VudChvYmplY3Qgb2IpCisgICAgICAgIG9iamVjdCBwcmVzZW50KG9iamVjdCBvYiwgb2JqZWN0IGVudikKKworQkVTQ0hSRUlCVU5HCisgICAgICAgIFdlbm4gZWluIE9iamVrdCBtaXQgZGVyIElkIDxzdHI+IHNpY2ggaW0gSW52ZW50YXIgb2RlciBpbiBkZXIgVW1nZWJ1bmcKKyAgICAgICAgdm9uIHRoaXNfb2JqZWN0KCkgYmVmaW5kZXQsIHdpcmQgZXMgenVydWVjayBnZWxpZWZlcnQuCisgICAgICAgIAorICAgICAgICBJc3QgZGFzIEFyZ3VtZW50IDxuPiBnZWdlYmVuLCB3aXJkIGRhcyBuLXRlIE9iamVrdCBtaXQgTmFtZW4gPGlkPgorICAgICAgICB6dXJ1ZWNrIGdlbGllZmVydC4gRGFzIGhlaXNzdCwgZGVyIERyaXZlciBmdWVocnQgZnVlciBhbGxlIE9iamVrdGUKKyAgICAgICAgaW0gSW52ZW50YXIgdW5kIGluIGRlciBVbWdlYnVuZyB2b24gdGhpc19vYmplY3QoKSBkaWUgRnVua3Rpb24KKyAgICAgICAgaWQoc3RyKSBhdXMsIGJpcyBlaW4gVHJlZmZlciBlcnppZWx0IHdpcmQgKHdlbm4gdWViZXJoYXVwdCkuCisKKyAgICAgICAgSXN0IDxuPiBuaWNodCBnZWdlYmVuLCBhYmVyIDxzdHI+IGhhdCBkaWUgRm9ybSAiPGlkPiA8bj4iICwgd2lyZAorICAgICAgICBlYmVuZmFsbHMgZGFzIG4tdGUgT2JqZWt0IG1pdCBOYW1lbiA8aWQ+IHp1cnVlY2tnZWxpZWZlcnQuCisKKyAgICAgICAgRXMgaXN0OiBpZChzdHIpIHsgcmV0dXJuIHN0ciA9PSA8bmFtZT47IH0KKworICAgICAgICA8c3RyPiBrYW5uIGF1Y2ggZWluIE9iamVrdCAoYW5zdGF0dCBlaW5lbSBvYmplY3RfbmFtZSgpKSBzZWluLCB3YXMgZGVuCisgICAgICAgIFRlc3Qgc2NobmVsbGVyIHVuZCBlaW5mYWNoZXIgbWFjaHQuCisKKyAgICAgICAgRGFzIEFyZ3VtZW50IDxlbnY+IGlzdCBvcHRpb25hbC4gPGVudj4gZ2lidCBhbiwgd28gbmFjaCA8c3RyPiBnZXN1Y2h0CisgICAgICAgIHdpcmQuIE51ciBkYXMgSW52ZW50b3J5IHZvbiA8ZW52PiB3aXJkIGR1cmNoc3VjaHQsIG5pY2h0IGplZG9jaCBkZXNzZW4KKyAgICAgICAgVW1nZWJ1bmcuIE9mdG1hbHMgd2lyZCBmdWVyIDxlbnY+IHRoaXNfcGxheWVyKCkgZ2VzZXR6dC4KKworCitBTk1FUktVTkcKKyAgICAgICAgRGllc2UgZWZ1biBrYW5uIHUuVS4gX3NlaHJfIHRldWVyIHNlaW4hIEJpdHRlIHNjaGF1dCBldWNoIGF1ZiBqZWRlbgorICAgICAgICBGYWxsIGF1Y2ggZGllIGVmdW4gcHJlc2VudF9jbG9uZSgpIGFuIHVuZCBzY2hhdXQsIG9iIGRpZSBldnRsLiBkYXMKKyAgICAgICAga2Fubiwgd2FzIGlociBtYWNoZW4gd29sbHQuIHByZXNlbnRfY2xvbmUoKSBpc3QgZXJoZWJsaWNoIGJpbGxpZ2VyLgorCisgICAgICAgIFdlbm4gZGllIGVmdW4gc293b2hsIGluIHRoaXNfb2JqZWN0KCkgYWxzIGF1Y2ggZGVzc2VuIFVtZ2VidW5nCisgICAgICAgIHN1Y2h0LCB3ZXJkZW4sIHNvd2VpdCBlcyBkaWUgTnVtZXJpZXJ1bmcgYmV0cmlmZnQsIGRpZSBiZWlkZW4KKyAgICAgICAgVW1nZWJ1bmdlbiB6dXNhbW1lbmhhZW5nZW5kIGJldHJhY2h0ZXQuCisKK0JFSVNQSUVMRQorICAgICAgICBwcmVzZW50KCJjaGVzdCIpOworICAgICAgICAgIC0tPiBmaW5kZXQgZGFzIGVyc3RlICdjaGVzdCcgT2JqZWt0CisKKyAgICAgICAgcHJlc2VudCgiY2hlc3QgMiIpOworICAgICAgICAgIC0tPiBmaW5kZXQgZGFzIHp3ZWl0ZSAnY2hlc3QnIE9iamVrdAorCisgICAgICAgIHByZXNlbnQoImNoZXN0IDIiLCAxKTsKKyAgICAgICAgICAtLT4gZmluZGV0IGRhcyBlcnN0ZSAnY2hlc3QgMicgT2JqZWt0CisKKyAgICAgICAgV2VubiBzaWNoIGVpbmUgImNoZXN0IiBpbSB0aGlzX29iamVjdCgpIGJlZmluZGV0LCB1bmQgendlaQorICAgICAgICBhdXNzZXJoYWxiOgorICAgICAgICAgIHByZXNlbnQoImNoZXN0IiwgMSkgLT4gZmluZGV0IGRpZSBjaGVzdCBpbSBPYmpla3QKKyAgICAgICAgICBwcmVzZW50KCJjaGVzdCIsIDIpIC0+IGZpbmRldCBkaWUgZXJzdGUgY2hlc3QgYXVzc2VyaGFsYgorICAgICAgICAgIHByZXNlbnQoImNoZXN0IiwgMykgLT4gZmluZGV0IGRpZSB6d2VpdGUgY2hlc3QgYXVzc2VyaGFsYgorICAgICAgICAKKyAgICAgICAgV2VubiBlaW4gT2JqZWt0IGRpZSBGb3J1bSAiPGlkPiA8bj4iIGluIFZlcmJpbmR1bmcgbWl0IGVpbmVtIHNlbGJzdAorICAgICAgICB1ZWJlciBhZGRfYWN0aW9uKCkgZ2VzZXR6dGVuIFZlcmIgdW50ZXJzdHVldHplbiBzb2xsIChkYW1pdCB6LiBCLgorICAgICAgICAib2VmZm5lIEtpc3RlIDMiIGZ1bmt0aW9uaWVydCksIGthbm4gZGFzIGZvbGdlbmRlcm1hc3NlbiBnZWxvZXN0CisgICAgICAgIHdlcmRlbjoKKworICAgICAgICAgICAgdm9pZCBpbml0KCkgeyBhZGRfYWN0aW9uKCJvZWZmbmVfa2lzdGUiLCAib2VmZm5lIik7IH0KKworICAgICAgICAgICAgaW50IG9lZmZuZV9raXN0ZShzdHJpbmcgc3RyKQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIGlmKHByZXNlbnQoc3RyKSAhPSB0aGlzX29iamVjdCgpICkKKyAgICAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgICAgIHJldHVybiAwOyAvKiBuaWNodCBkaWVzZSBLaXN0ZSAqLworICAgICAgICAgICAgICAgICAgICAuLi4KKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisKK0hJU1RPUlkKKyAgICAgICAgTERNdWQgMy4yLjExLzMuMy42MTAgZnVlaHJ0ZSBkaWUgKHN0ciwgbiktRm9ybSBlaW4uCisgICAgICAgIExETXVkIDMuMy43MTMgYWVuZGVydGUgZGllIE51bWVyaWVydW5nIHdlbm4gc293b2hsIEludmVudG9yeQorICAgICAgICAgIGFscyBhdWNoIFVtZ2VidW5nIGR1cmNoc3VjaHQgd2VyZGVuLiBJbiBkZXIgdm9yaGVyaWdlbgorICAgICAgICAgIEltcGxlbWVudGllcnVuZyB3dXJkZSBlaW5lIE51bWVyaWVydW5nIGF1ZiBiZWlkZW4gVW1nZWJ1bmdlbgorICAgICAgICAgIGVpbnplbG4gYW5nZXdhbmR0LCB3YXMgenVyIEZvbGdlIGhhdHRlLCBkYXNzIG5pZWRlcmUgT2JqZWt0ZQorICAgICAgICAgIGluIGRlciBhZXVzc2VyZW4gVW1nZWJ1bmcgbmljaHQgZ2VmdW5kZW4gd2VyZGVuIGtvZW5udGVuLCBkYQorICAgICAgICAgIHNpZSB2b24gZGVuIE9iamVrdGVuIGluIElubmVyZW4gdmVyZGVja3Qgd3VyZGVuLgorCitTSUVIRSBBVUNICisgICAgICAgIG1vdmVfb2JqZWN0KEUpLCBlbnZpcm9ubWVudChFKSwgdGhpc19vYmplY3QoRSksIHByZXNlbnRfY2xvbmUoRSksCisgICAgICAgIGlkKEEpLCBpbml0KEEpCmRpZmYgLS1naXQgYS9kb2MvZWZ1bi9wcmVzZW50X2Nsb25lIGIvZG9jL2VmdW4vcHJlc2VudF9jbG9uZQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5jZDY0NDg4Ci0tLSAvZGV2L251bGwKKysrIGIvZG9jL2VmdW4vcHJlc2VudF9jbG9uZQpAQCAtMCwwICsxLDQxIEBACitWT1JMQUVVRklHCitTWU5PUFNJUworICAgICAgICBvYmplY3QgcHJlc2VudF9jbG9uZShzdHJpbmcgc3RyIFssIG9iamVjdCBlbnZdICk7CisgICAgICAgIG9iamVjdCBwcmVzZW50X2Nsb25lKG9iamVjdCBvYmogWywgb2JqZWN0IGVudl0gKTsKKworQkVTQ0hSRUlCVU5HCisgICAgICAgIERpZXNlIEVmdW4gZHVyY2hzdWNodCBkYXMgSW52ZW50YXIgdm9uIDxlbnY+IG5hY2ggZWluZW0gT2JqZWt0IG1pdAorICAgICAgICBlaW5lbSBiZXN0aW1tdGVuIEJsdWVwcmludCAuIFdpcmQgPGVudj4gbmljaHQgYW5nZWdlYmVuLCB3aXJkIGluCisgICAgICAgIHRoaXNfb2JqZWN0KCkgZ2VzdWNodC4gRGVyIEJsdWVwcmludCBrYW5uIGVudHdlZGVyIG1pdCBzZWluZW0gTmFtZW4KKyAgICAgICAgPHN0cj4gYW5nZWdlYmVuIHdlcmRlbiwgb2RlciBhbHMgQmx1ZXByaW50IGRlcyBPYmpla3RzIDxvYmo+LiBHZXN1Y2h0CisgICAgICAgIHdpcmQgaW4gYmVpZGVuIEZhZWxsZW4gYXVmZ3J1bmQgdm9uIGxvYWRfbmFtZSgpLgorICAgICAgICBXaXJkIGtlaW4gcGFzc2VuZGVzIE9iamVrdCBnZWZ1bmRlbiwgbGllZmVydCBkaWUgRWZ1biAwIHp1cnVlY2suCisKKyAgICAgICAgRnVlciBEcml2ZXIgaW0gUGxhaW4gTW9kdXMgYmVnaW5udCBkZXIgTmFtZSBpbiBqZWRlbSBGYWxsIG1pdCAnLycsIGltCisgICAgICAgIENvbXBhdCBNb2R1cyBuaWNodC4KKworQkVJU1BJRUxFCisgICAgICAgIEFuZ2Vub21tZW4sIGRhcyBPYmpla3QgPGVudj4gZW50aGFsdGUgZGllIE9iamVrdGUgL2l0ZW1zL21vbmV5IzgsCisgICAgICAgIC9zdGQvd2VhcG9uIzksIC9zdGQvd2VhcG9uIzEyIHVuZCAvb2JqL2tleSBpbiBkZXIgYW5nZWdlYmVuCisgICAgICAgIFJlaWhlbmZvbGdlLgorCisgICAgICAgICstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0rCisgICAgICAgIHwgRnVua3Rpb24gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgTGllZmVydCAgICAgICB8CisgICAgICAgICstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0rCisgICAgICAgIHwgcHJlc2VudF9jbG9uZSgiL2l0ZW1zL21vbmV5IiwgZW52KSAgICAgICAgICAgICAgIHwgL2l0ZW1zL21vbmV5Izh8CisgICAgICAgIHwgcHJlc2VudF9jbG9uZSgiL3N0ZC93ZWFwb24jMTIiLCBlbnYpICAgICAgICAgICAgIHwgL3N0ZC93ZWFwb24jOSB8CisgICAgICAgIHwgcHJlc2VudF9jbG9uZShmaW5kX29iamVjdCgiL2l0ZW1zL21vbmV5IzEiKSwgZW52KXwgL2l0ZW1zL21vbmV5Izh8CisgICAgICAgIHwgcHJlc2VudF9jbG9uZSgiL29iai9rZXkjMTgiLCBlbnYpICAgICAgICAgICAgICAgIHwgL29iai9rZXkgICAgICB8CisgICAgICAgICstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0rCisKKyAgICAgICAgRnVlciBEcml2ZXIgaW0gQ29tcGF0IE1vZHVzIGxpZWZlcnQgZGllIEZ1bmt0aW9uIGtlaW5lICcvJyBhbSBBbmZhbmcuCisKK0FFTkRFUlVOR0VOCisgICAgICAgIEVpbmdlZnVlaHJ0IGluIDMuMi43LgorCitBTk1FUktVTkcKKyAgICAgICAgSW0gVW50ZXJzY2hpZWQgenUgcHJlc2VudCgpIHN1Y2h0IHByZXNlbnRfY2xvbmUoKSBuaWVtYWxzIGluIGRlcgorICAgICAgICBVbWdlYnVuZyB2b24gPGVudj4uCisKK1NJRUhFIEFVQ0gKKyAgICAgICAgbG9hZF9uYW1lKEUpLCBwcmVzZW50KEUpCmRpZmYgLS1naXQgYS9kb2MvZWZ1bi9wcmV2aW91c19vYmplY3QgYi9kb2MvZWZ1bi9wcmV2aW91c19vYmplY3QKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNmE3MTJhZAotLS0gL2Rldi9udWxsCisrKyBiL2RvYy9lZnVuL3ByZXZpb3VzX29iamVjdApAQCAtMCwwICsxLDUwIEBACitTWU5PUFNJUworICAgICAgICBvYmplY3QgcHJldmlvdXNfb2JqZWN0KCk7CisgICAgICAgIG9iamVjdCBwcmV2aW91c19vYmplY3QoaW50IGkpOworCitCRVNDSFJFSUJVTkcKKyAgICAgICAgTGllZmVydCBlaW5lbiBQb2ludGVyIGF1ZiBkYXMgbGV0enRlIE9iamVrdCwgZGFzIGVpbmVuIEF1ZnJ1ZiAobWl0dGVscworICAgICAgICBjYWxsX290aGVyKCksIGZ1bmNhbGwoKSBldGMuKSBhdWYgZGFzIGFrdHVlbGxlIE9iamVrdCB0aGlzX29iamVjdCgpCisgICAgICAgIGdlbWFjaHQgaGF0LiBXZW5uIGRpZXNlcyBhdWZydWZlbmRlIE9iamVrdCBpbnp3aXNjaGVuIHplcnN0b2VydCB3dXJkZSwKKyAgICAgICAgbGllZmVydCBwcmV2aW91c19vYmplY3QoKSAwLgorICAgICAgICBCZWkgZWluZW0gQXVmcnVmIGVpbmVyIGVpZ2VuZW4gRnVua3Rpb24gZHVyY2ggZWluIE9iamVrdCBibGVpYnQgZGFzCisgICAgICAgIGJpc2hlcmlnZSBwcmV2aW91c19vYmplY3QoKSB1bnZlcmFlbmRlcnQuCisKKyAgICAgICAgV2lyZCBkYXMgQXJndW1lbnQgPGk+IGFuZ2VnZWJlbiwgc28gdmVyZm9sZ3QgcHJldmlvdXNfb2JqZWN0KCkgZGVuCisgICAgICAgIEF1ZnJ1ZiA8aT4gU3R1ZmVuIHp1cnVlY2suIFp1bSBCZWlzcGllbCBsaWVmZXJ0IHByZXZpb3VzX29iamVjdCgxKSBkYXMKKyAgICAgICAgYXVmcnVmZW5kZSBPYmpla3QgZGVzIGF1ZnJ1ZmVuZGVuIE9iamVrdHMuIEZ1ZXIgPGk+IG11c3MgZ2VsdGVuOgorICAgICAgICAwIDw9IGkgPCBjYWxsX3N0YWNrX2RlcHRoKCkuIEVpbiBXZXJ0IDxpPiA8IDAgbGllZmVydCBkYXMgZXJzdGUKKyAgICAgICAgYXVmcnVmZW5kZSBPYmplY3QgenVydWVjay4KKworICAgICAgICBFcyBnaWJ0IGVpbmVuIHdpY2h0aWdlbiBTcGV6aWFsZmFsbDogaW4gRnVua3Rpb25lbiwgZGllIHZvbSBHYW1lZHJpdmVyCisgICAgICAgIGF1ZiBHcnVuZCBlaW5lcyBleHRlcm5lbiBFcmVpZ25pc2VzIGF1ZmdlcnVmZW4gd3VyZGVuICh6dW0gQmVpc3BpZWwKKyAgICAgICAgS29tbWFuZGksIGRpZSBtaXQgYWRkX2FjdGlvbigpIGRlZmluaWVydCB3dXJkZW4pLCBsaWVmZXJ0CisgICAgICAgIHByZXZpb3VzX29iamVjdCgpIHRoaXNfb2JqZWN0KCksIHByZXZpb3VzX29iamVjdCgwKSBoaW5nZWdlbiAwLgorCitCRUlTUElFTAorICAgICAgICBpbnQgc2ljaGVyaGVpdHNjaGVjaygpCisgICAgICAgIHsKKyAgICAgICAgICAgIG9iamVjdCBwcmV2OworICAgICAgICAgICAgaWYoIShwcmV2PXByZXZpb3VzX29iamVjdCgpKSk7CisgICAgICAgICAgICBlbHNlIGlmKGdldHVpZChwcmV2KSE9Z2V0dWlkKHRoaXNfb2JqZWN0KCkpKTsKKyAgICAgICAgICAgIGVsc2UgaWYoZ2V0ZXVpZChwcmV2KSE9Z2V0ZXVpZCh0aGlzX29iamVjdCgpKSk7CisgICAgICAgICAgICBlbHNlIHJldHVybiAxOworICAgICAgICAgICAgcmV0dXJuIDA7CisgICAgICAgIH0KKyAgICAgICAgdm9pZCBzZW5zaWJsZV9mdW5rdGlvbigpCisgICAgICAgIHsKKyAgICAgICAgICAgIGlmKCFzaWNoZXJoZWl0c2NoZWNrKCkpCisgICAgICAgICAgICByZXR1cm47CisgICAgICAgICAgICAuLi4KKyAgICAgICAgfQorCisgICAgICAgIERpZXNlIEZ1bmt0aW9uIHplaWd0LCB3aWUgbWFuIHVlYmVycHJ1ZWZlbiBrYW5uLCBvYiBkZXIgbGV0enRlIEF1ZnJ1ZgorICAgICAgICBlaW5lciBGdW5rdGlvbiBpbSBha3R1ZWxsZW4gT2JqZWt0IHNpY2hlciB3YXIsIG9kZXIgb2IgZGllCisgICAgICAgIFZlcmFyYmVpdHVuZyBhYmdlYnJvY2hlbiB3ZXJkZW4gc29sbHRlLgorCitGRUhMRVIKKyAgICAgICAgV2VydGUgdm9uIDxpPiA8IDAgd2VyZGVuIHdpZSA8aT4gPT0gMCBiZWhhbmRlbHQgLSBkaWVzIGlzdCBoaXN0b3Jpc2NoLgorCitTSUVIRSBBVUNICisgICAgICAgIGNhbGxfb3RoZXIoRSksIHRoaXNfb2JqZWN0KEUpLCB0aGlzX3BsYXllcihFKQorICAgICAgICBjYWxsZXJfc3RhY2soRSksIGNhbGxlcl9zdGFja19kZXB0aChFKSwgZXh0ZXJuX2NhbGwoRSkKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9kb2MvZWZ1bi9wcmludGYgYi9kb2MvZWZ1bi9wcmludGYKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZDU4MjMzYgotLS0gL2Rldi9udWxsCisrKyBiL2RvYy9lZnVuL3ByaW50ZgpAQCAtMCwwICsxLDkgQEAKK1NZTk9QU0lTCisgICAgICAgIHZvaWQgcHJpbnRmKHN0cmluZyBmb3JtYXQsIC4uLik7CisKK0JFU0NIUkVJQlVORworICAgICAgICBFaW5lIE1pc2NodW5nIGF1cyBzcHJpbnRmKCkgdW5kIHdyaXRlKCkuIEdpYnQgdm9pZCB6dXJ1ZWNrIHVuZCBkZW4KKyAgICAgICAgU3RyaW5nIGFuIGRlbiBCZW51dHplciBhdXMuCisKK1NJRUhFIEFVQ0gKKyAgICAgICAgc3ByaW50ZihFKSwgd3JpdGUoRSksIHRlcm1pbmFsX2NvbG91cihFKQpkaWZmIC0tZ2l0IGEvZG9jL2VmdW4vcHJvZ3JhbV9uYW1lIGIvZG9jL2VmdW4vcHJvZ3JhbV9uYW1lCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjQ0MTYyZDUKLS0tIC9kZXYvbnVsbAorKysgYi9kb2MvZWZ1bi9wcm9ncmFtX25hbWUKQEAgLTAsMCArMSwzOCBAQAorU1lOT1BTSVMKKyAgICAgICAgc3RyaW5nIHByb2dyYW1fbmFtZSgpCisgICAgICAgIHN0cmluZyBwcm9ncmFtX25hbWUob2JqZWN0IG9iaikKKworQkVTQ0hSRUlCVU5HCisgICAgICAgIExpZWZlcnQgZGVuIE5hbWUgZGVzIFByb2dyYW1tcywgYXVzIGRlbSA8b2JqPiBrb21waWxpZXJ0IHd1cmRlLgorICAgICAgICBXZW5uIDxvYmo+IG5pY2h0IGFuZ2VnZWJlbiB3aXJkLCB3aXJkIHN0YW5kYXJkbWFlc3NpZyB0aGlzX29iamVjdCgpCisgICAgICAgIHZlcndlbmRldC4KKworICAgICAgICBEZXIgTmFtZSBpc3QgZnVlciBDbG9uZXMgZGVyIE5hbWUgZGVzIEZpbGVzLCBhdXMgZGVtIGRlciBCbHVlcHJpbnQKKyAgICAgICAga29tcGxpZXJ0IHd1cmRlLiBEZXIgTmFtZSB3ZWNoc2VsdCwgd2VubiBlaW4gT2JqZWt0IHNlaW4gUHJvZ3JhbW0KKyAgICAgICAgZHVyY2ggcmVwbGFjZV9wcm9ncmFtKCkgYWVuZGVydC4KKworICAgICAgICBGdWVyIGRlbiBTcGV6aWFsZmFsbCwgZGFzcyA8b2JqPiBhbHMgMCB1ZWJlcmdlYmVuIHdpcmQsIGxpZWZlcnQKKyAgICAgICAgcHJvZ3JhbV9uYW1lKCkgMCB6dXJ1ZWNrLgorCisgICAgICAgIERlciBOYW1lIGVuZGV0IGltbWVyIG1pdCAnLmMnLiBFciBiZWdpbm50IG1pdCBlaW5lbSAnLycsIHdlbm4gZGVyCisgICAgICAgIERyaXZlciBzaWNoIG5pY2h0IGltIENvbXBhdCBNb2R1cyBiZWZpbmRldC4KKworQkVJU1BJRUwKKyAgICAgICAgb2JqZWN0IG87CisgICAgICAgIG8gPSBjbG9uZV9vYmplY3QoIi9zdGQvZGluZ3MiKTsKKyAgICAgICAgd3JpdGUocHJvZ3JhbV9uYW1lKG8pKTsKKworICAgICAgICBsaWVmZXJ0OgorICAgICAgICAtLT4gIi9zdGQvZGluZ3MuYyIsIHdlbm4gZGVyIERyaXZlciBuaWNodCBpbSBDb21wYXQgTW9kdXMgbGFldWZ0LgorICAgICAgICAtLT4gInN0ZC9kaW5ncy5jIiwgd2VubiBkZXIgRHJpdmVyIGltIENvbXBhdCBNb2R1cyBsYWV1ZnQuCisKK0FFTkRFUlVOR0VOCisgICAgICAgIEVpbmdlZnVlaHJ0IGluIExETXVkIDMuMi42LgorICAgICAgICBTZWl0IDMuMi45IGlzdCBkYXMgQXJndW1lbnQgMCBlcmxhdWJ0LgorCitBTk1FUktVTkcKKyAgICAgICAgRGllIEVmdW4gc3dhcHQgenVtIFByb2dyYW1tLCB3ZW5uIGRpZXNlcyBnZXN3YXB0IGlzdC4KKworU0lFSEUgQVVDSAorICAgICAgICBjbG9uZV9vYmplY3QoRSksIGNsb25lcChFKSwgbG9hZF9uYW1lKEUpLCBsb2FkX29iamVjdChFKSwKKyAgICAgICAgb2JqZWN0X25hbWUoRSksIHJlcGxhY2VfcHJvZ3JhbShFKQpkaWZmIC0tZ2l0IGEvZG9jL2VmdW4vcHJvZ3JhbV90aW1lIGIvZG9jL2VmdW4vcHJvZ3JhbV90aW1lCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjYyYTYyOTcKLS0tIC9kZXYvbnVsbAorKysgYi9kb2MvZWZ1bi9wcm9ncmFtX3RpbWUKQEAgLTAsMCArMSwxNyBAQAorU1lOT1BTSVMKKyAgICAgICAgaW50IHByb2dyYW1fdGltZSgpCisgICAgICAgIGludCBwcm9ncmFtX3RpbWUob2JqZWN0IG9iKQorCitERVNDUklQVElPTgorICAgICAgICBSZXR1cm5zIHRoZSBjcmVhdGlvbiAoY29tcGlsYXRpb24pIHRpbWUgb2YgdGhlIG9iamVjdCdzCisgICAgICAgIHByb2dyYW0uIEluIG90aGVyIHdvcmRzLCB0aGlzIGlzIHRoZSBvYmplY3RfdGltZSgpIG9mCisgICAgICAgIHRoZSBibHVlcHJpbnQuCisKKyAgICAgICAgRGVmYXVsdCBpcyB0aGlzX29iamVjdCgpLCBpZiBubyBhcmcgaXMgZ2l2ZW4uCisKKwkKKyAgICAgICAgQ0FWRUFUOiBJZiB0aGUgb2JqZWN0cyBwcm9ncmFtIGlzIHN3YXBwZWQgb3V0LCB0aGlzIGVmdW4KKyAgICAgICAgICBzd2FwcyBpdCBiYWNrIGluLgorCitTRUUgQUxTTworICAgICAgICBvYmplY3RfdGltZShFKSwgcHJvZ3JhbV9uYW1lKEUpCmRpZmYgLS1naXQgYS9kb2MvZWZ1bi9xdWVyeV9hY3Rpb25zIGIvZG9jL2VmdW4vcXVlcnlfYWN0aW9ucwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi45MGFjYWJhCi0tLSAvZGV2L251bGwKKysrIGIvZG9jL2VmdW4vcXVlcnlfYWN0aW9ucwpAQCAtMCwwICsxLDM3IEBACitTWU5PUFNJUworICAgICAgICAjaW5jbHVkZSA8c3lzL2NvbW1hbmRzLmg+CisKKyAgICAgICAgbWl4ZWQgKnF1ZXJ5X2FjdGlvbnMob2JqZWN0fHN0cmluZyBvYiwgbWl4ZWQgbWFza19vcl92ZXJiKTsKKworQkVTQ0hSRUlCVU5HCisgICAgICAgIERhcyBlcnN0ZSBBcmd1bWVudCB2b24gcXVlcnlfYWN0aW9ucygpIGlzdCBlbnR3ZWRlciBlaW4gT2JqZWt0CisgICAgICAgIG9kZXIgZGVyIERhdGVpbmFtZSBlaW5lcyBPYmpla3RzLiBEYXMgendlaXRlIEFyZ3VtZW50IG11c3MKKyAgICAgICAgZW50d2VkZXIgZWluZSBCaXRtYXNrZSAoZWluIEludGVnZXIpIG9kZXIgZWluIFN0cmluZyBzZWluLgorCisgICAgICAgIElzdCBkYXMgendlaXRlIEFyZ3VtZW50IGVpbiBTdHJpbmcsIGxpZWZlcnQgcXVlcnlfYWN0aW9ucygpIGVpbgorICAgICAgICBBcnJheSBtaXQgSW5mb3JtYXRpb25lbiB1ZWJlciBkYXMgVmVyYiBvZGVyIDAgenVydWVjaywgd2VubgorICAgICAgICBkYXMgbGViZW5kaWdlIE9iamVrdCA8b2I+IGRhcyBWZXJiIG5pY2h0IHZlcndlbmRlbiBrYW5uLgorCisgICAgICAgIFdlbm4gZGFzIHp3ZWl0ZSBBcmd1bWVudCBlaW4gSW50ZWdlciBpc3QsIGxpZWZlcnQgcXVlcnlfYWN0aW9ucygpCisgICAgICAgIGVpbiBmbGFjaGVzIEFycmF5IG1pciBkZW4gSW5mb3JtYXRpb25lbiBlbnRzcHJlY2hlbmQgZGVyIEJpdG1hc2tlCisgICAgICAgIHp1IGFsbGVuIFZlcmJlbiB2b24gPG9iPi4KKworICAgICAgICAgICAgUUFfVkVSQiAgICAgICAgICggMSk6ICAgZGFzIFZlcmIsCisgICAgICAgICAgICBRQV9UWVBFICAgICAgICAgKCAyKTogICBkZXIgVHlwLAorICAgICAgICAgICAgUUFfU0hPUlRfVkVSQiAgICggNCk6ICAgZGFzIHNob3J0X3ZlcmIsCisgICAgICAgICAgICBRQV9PQkpFQ1QgICAgICAgKCA4KTogICBkYXMgT2JqZWt0LAorICAgICAgICAgICAgUUFfRlVOQ1RJT04gICAgICgxNik6ICAgZGllIEZ1bmt0aW9uLgorCisgICAgICAgIERlciBUeXAgaXN0IGVpbiBXZXJ0IHdpZSBpbiA8c2VudC5oPiAoYnp3LiAvc3lzL3NlbnQuaCkgZGVmaW5pZXJ0LAorICAgICAgICBkZXIgdm9tIFBhcnNlciBRdWVsbGNvZGUgZ2VsaWVmZXJ0IHdpcmQuCisKKyAgICAgICAgICAgIFNFTlRfUExBSU4gICAgICAgZHVyY2ggYWRkX2FjdGlvbihmdW4sIGNtZCkgaGluenVnZWZ1ZWd0CisgICAgICAgICAgICBTRU5UX1NIT1JUX1ZFUkIgIGR1cmNoIGFkZF9hY3Rpb24oZnVuLCBjbWQsIDEpIGhpbnp1Z2VmdWVndAorICAgICAgICAgICAgU0VOVF9OT19TUEFDRSAgICBkdXJjaCBhZGRfYWN0aW9uKGZ1bik7IGFkZF94dmVyYihjbWQpOworICAgICAgICAgICAgU0VOVF9OT19WRVJCICAgICBudXIgZWluZSBGdW5rdGlvbiBtaXQgYWRkX2FjdGlvbihmdW4pLCBvaG5lIFZlcmIKKyAgICAgICAgICAgIFNFTlRfTUFSS0VSICAgICAgaW50ZXJuLCBpc3QgbmljaHQgaW0gQXJyYXkgZW50aGFsdGVuCisgICAgICAgICAgICBuZWdhdGl2ZXIgV2VydCAgIGRhcyBWZXJiIG11c3MgbnVyIGluIGRlbiBlcnN0ZW4gLTx3ZXJ0PiBaZWljaGVuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVlYmVyZWluc3RpbW1lbi4KKworU0lFSEUgQVVDSAorICAgICAgICBhZGRfYWN0aW9uKEUpLCBpbml0KEEpCmRpZmYgLS1naXQgYS9kb2MvZWZ1bi9xdWVyeV9jb21tYW5kIGIvZG9jL2VmdW4vcXVlcnlfY29tbWFuZApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5iYmFiZGJkCi0tLSAvZGV2L251bGwKKysrIGIvZG9jL2VmdW4vcXVlcnlfY29tbWFuZApAQCAtMCwwICsxLDM0IEBACitTWU5PUFNJUworICAgICAgICBzdHJpbmcgcXVlcnlfY29tbWFuZCgpOworCitCRVNDSFJFSUJVTkcKKyAgICAgICAgTGllZmVydCBkZW4gVGV4dCBkZXMgYWt0dWVsbGVuIEtvbW1hbmRvcyBvZGVyIDAsIHdlbm4ga2VpbmVzCisgICAgICAgIGF1c2dlZnVlaHJ0IHdpcmQuCisKKyAgICAgICAgRGVyIFRleHQgZW50c3ByaWNodCBkZW0sIHdhcyBkZXIgUGFyc2VyICJzaWVodCIsIGFsc28gbmFjaGRlbQorICAgICAgICBtb2RpZnlfY29tbWFuZCgpIGF1c2dlZnVlaHJ0IHVuZCBuYWNoZm9sZ2VuZGUgTGVlcnplaWNoZW4KKyAgICAgICAgYWJnZXNjaG5pdHRlbiB3dXJkZW4uCisKKyAgICAgICAgcXVlcnlfY29tbWFuZCgpIGxpZWZlcnQgMCwgd2VubiBlcyB2b24gZWluZXIgRnVua3Rpb24gZ2VzdGFydGV0IHd1cmRlLAorICAgICAgICBkaWUgd2llZGVydW0gdm9uIGVpbmVtIGNhbGxfb3V0KCkgb2RlciBkZW0gaGVhcnRfYmVhdCgpIGF1ZmdlcnVmZW4KKyAgICAgICAgd3VyZGUuIEF1Y2ggS29tbWFuZGksIGRpZSBiZWltIFVzZXJsb2dpbiBhdWZnZXJ1ZmVuIHdlcmRlbiwgbGllZmVybiAwLgorCitCRUlTUElFTAorICAgICAgICB2b2lkIGluaXQoKQorICAgICAgICB7CisgICAgICAgICAgICAuLi4KKyAgICAgICAgICAgIGFkZF9hY3Rpb24oInNpbmciLCJzaW5nIik7CisgICAgICAgICAgICAuLi4KKyAgICAgICAgfQorCisgICAgICAgIGludCBzaW5nKHN0cmluZyBzdHIpCisgICAgICAgIHsKKyAgICAgICAgICAgIHdyaXRlKCJEZWluIEtvbW1hbmRvIHdhcjoiK3F1ZXJ5X2NvbW1hbmQoKSsiXG4iKTsKKyAgICAgICAgICAgIHJldHVybiAxOworICAgICAgICB9CisKKyAgICAgICAgSmVkZXNtYWwsIHdlbm4gamVtYW5kICJzaW5nIGJsYWZhc2VsIiBlaW5naWJ0LCBsaWVmZXJ0IGRhcyBQcm9ncmFtbQorICAgICAgICAiRGVpbiBLb21tYW5kbyB3YXI6IHNpbmcgYmxhZmFzZWwiLgorCitTSUVIRSBBVUNICisgICAgICAgIGFkZF9hY3Rpb24oRSksIHF1ZXJ5X3ZlcmIoRSkKZGlmZiAtLWdpdCBhL2RvYy9lZnVuL3F1ZXJ5X25vdGlmeV9mYWlsIGIvZG9jL2VmdW4vcXVlcnlfbm90aWZ5X2ZhaWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uM2Q5ODQyMwotLS0gL2Rldi9udWxsCisrKyBiL2RvYy9lZnVuL3F1ZXJ5X25vdGlmeV9mYWlsCkBAIC0wLDAgKzEsMjEgQEAKK1NZTk9QU0lTCisgICAgICAgIG1peGVkIHF1ZXJ5X25vdGlmeV9mYWlsKCk7CisgICAgICAgIG1peGVkIHF1ZXJ5X25vdGlmeV9mYWlsKGludCBmbGFnKTsKKworQkVTQ0hSRUlCVU5HCisgICAgICAgIFdlbm4gPGZsYWc+IG5pY2h0IGFuZ2VnZWJlbiBvZGVyIDAgaXN0LCBsaWVmZXJ0IGRpZSBGdW5rdGlvbiBkZW4gU3RyaW5nCisgICAgICAgIG9kZXIgZGllIENsb3N1cmUsIGRpZSB6dWxldHp0IGFscyBGZWhsZXJtZWxkdW5nIGZ1ZXIgZWluIEtvbW1hbmRvCisgICAgICAgIGdlc2V0enQgd3VyZGUgKG1pdCBub3RpZnlfZmFpbCgpKS4KKworICAgICAgICBXdXJkZSBrZWluZSBNZWxkdW5nIGdlc2V0enQsIHdpcmQgMCBnZWxpZWZlcnQuCisKKyAgICAgICAgSXN0IDxmbGFnPiAhPSAwIHdpcmQgZGFzIE9iamVrdCB6dXJ1ZWNrZ2VsaWVmZXJ0LCB3YXMgZGFzIGxldHp0ZQorICAgICAgICBOb3RpZnktRmFpbCBnZXNldHp0IGhhdC4KKworQUVOREVSVU5HRU4KKyAgICAgICAgRWluZ2VmdWVocnQgaW4gTERNdWQgMy4yLjcuCisgICAgICAgIExETXVkIDMuMi44IGZ1ZWd0ZSBkZW4gUGFyYW10ZXIgPGZsYWc+IGhpbnp1LgorCitTSUVIRSBBVUNICisgICAgICAgIGFkZF9hY3Rpb24oRSksIHF1ZXJ5X3ZlcmIoRSksIHF1ZXJ5X2NvbW1hbmQoRSksIG5vdGlmeV9mYWlsKEUpLAorICAgICAgICBob29rcyhDKQpkaWZmIC0tZ2l0IGEvZG9jL2VmdW4vcXVlcnlfdmVyYiBiL2RvYy9lZnVuL3F1ZXJ5X3ZlcmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZjIxNjU5MQotLS0gL2Rldi9udWxsCisrKyBiL2RvYy9lZnVuL3F1ZXJ5X3ZlcmIKQEAgLTAsMCArMSw1MyBAQAorU1lOT1BTSVMKKyAgICAgICAgc3RyaW5nIHF1ZXJ5X3ZlcmIoKTsKKyAgICAgICAgc3RyaW5nIHF1ZXJ5X3ZlcmIoaW50IGZsYWcpOworCitCRVNDSFJFSUJVTkcKKyAgICAgICAgTGllZmVydCBkYXMgVmVyYiBkZXMgYWt0dWVsbGVuIEtvbW1hbmRvcyBvZGVyIDAsIHdlbm4ga2VpbiBLb21tYW5kbworICAgICAgICBiZWFyYmVpdGV0IHdpcmQuCisKKyAgICAgICAgV2VubiA8ZmxhZz4gbmljaHQgYW5nZWdlYmVuIG9kZXIgMCBpc3QsIHdpcmQgZGFzIFZlcmIgd2llIHZvbSBVc2VyCisgICAgICAgIGVpbmdlZ2ViZW4gZ2VsaWVmZXJ0IChkYXMgaXN0IGRhcyBlcnN0ZSBXb3J0IGRlciBJbnB1dHplaWxlIGRlcworICAgICAgICBTcGllbGVycywgYmlzIHp1bSAoYWJlciBvaG5lKSBkZW4gZXJzdGVuIExlZXJzY2hsYWcgLyBaZWlsZW51bWJydWNoKS4KKyAgICAgICAgV2VubiA8ZmxhZz4gbmljaHQgMCBpc3QsIHdpcmQgZGFzIFZlcmIgZW50c3ByZWNoZW5kIGRlciBhZGRfYWN0aW9uKCkKKyAgICAgICAgenVydWVjayBnZWdlYmVuLgorCisgICAgICAgIElubmVyaGFsYiBlaW5lciBhZGRfYWN0aW9uKCktRnVua3Rpb24sIGRpZSB2b24gbWVocmVyZW4gS29tbWFuZG9zCisgICAgICAgIGF1ZmdlcnVmZW4gd2lyZCBrYW5uIG1hbiBzbyB6d2lzY2hlbiBkaWVzZW4gS29tbWFuZG9zIHVudGVyc2NoZWlkZW4uCisKK0JFTUVSS1VOR0VOCisgICAgICAgIERpZSBmcnVlaGVyZSBFaW5zY2hyYWVua3VuZywgZGFzcyBiZWkgZ2VzY2hhY2h0ZWx0ZW4gS29tbWFuZG9zCisgICAgICAgIHF1ZXJ5LXZlcmIoKSBuYWNoIGRlbSBpbm5lcmVuIEtvbW1hbmRvIDAgenVydWVjayBnaWJ0IGlzdCBqZXR6dAorICAgICAgICBlbnRmYWxsZW4uCisKK0JFSVNQSUVMCisgICAgICAgIHZvaWQgaW5pdCgpCisgICAgICAgIHsKKyAgICAgICAgICAgIC4uLgorICAgICAgICAgICAgYWRkX2FjdGlvbigic2luZyIsInNpbmdlIik7CisgICAgICAgICAgICBhZGRfYWN0aW9uKCJzaW5nIiwiam9kZWwiLCAxKTsKKyAgICAgICAgICAgIC4uLgorICAgICAgICB9CisKKyAgICAgICAgaW50IHNpbmcoc3RyaW5nIHN0cikKKyAgICAgICAgeworICAgICAgICAgICAgd3JpdGUoIkRhcyBLb21tYW5kbyB3YXI6IitxdWVyeV92ZXJiKCkrKHN0ciA/IHN0ciA6ICIiKSsiXG4iKTsKKyAgICAgICAgICAgIHdyaXRlKCJEYXMgVmVyYiB3YXI6IitxdWVyeV92ZXJiKDEpKyhzdHIgPyBzdHIgOiAiIikrIlxuIik7CisgICAgICAgIH0KKworICAgICAgICBEYXMgS29tbWFuZG8gInNpbmcgYmxhZmFzZWwiIGxpZWZlcnQ6CisgICAgICAgICAgICBEYXMgS29tbWFuZG8gd2FyOiBzaW5nCisgICAgICAgICAgICBEYXMgVmVyYiB3YXI6IHNpbmcKKworICAgICAgICBEYXMgS29tbWFuZG8gImpvZGVsIGJsYWZhc2VsIiBsaWVmZXJ0OgorICAgICAgICAgICAgRGFzIEtvbW1hbmRvIHdhcjogam9kZWwKKyAgICAgICAgICAgIERhcyBWZXJiIHdhcjogam9kZWwKKworICAgICAgICBEYXMgS29tbWFuZG8gImpvZGVsZSBibGFmYXNlbCIgbGllZmVydDoKKyAgICAgICAgICAgIERhcyBLb21tYW5kbyB3YXI6IGpvZGVsZQorICAgICAgICAgICAgRGFzIFZlcmIgd2FyOiBqb2RlbAorCitTSUVIRSBBVUNICisgICAgICAgIHF1ZXJ5X2NvbW1hbmQoRSksIGFkZF9hY3Rpb24oRSksIEFkZENtZChMKSwgQWRkQWN0aW9uKEwpCisKKzcuQXVnIDIwMDcgR2xvaW5zb24KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9kb2MvZWZ1bi9xdW90ZSBiL2RvYy9lZnVuL3F1b3RlCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmNlMDFmZDcKLS0tIC9kZXYvbnVsbAorKysgYi9kb2MvZWZ1bi9xdW90ZQpAQCAtMCwwICsxLDEzIEBACitTWU5PUFNJUworICAgICAgICBtaXhlZCBxdW90ZShtaXhlZCBhcmcpOworCitCRVNDSFJFSUJVTkcKKyAgICAgICAgS29udmVydGllcnQgZWluIEFycmF5IHp1IGVpbmVtIHF1b3RlZCBBcnJheSB1bmQgU3RyaW5ncyB6dSBTeW1ib2xlbi4KKyAgICAgICAgU3ltYm9sZSB1bmQgcXVvdGVkIEFycmF5cyB3ZXJkZW4gZXJuZXV0IGdlcXVvdGVkLgorCitCRUlTUElFTAorICAgICAgICBxdW90ZSgiZm9vIikgLT4gJ2ZvbworICAgICAgICBxdW90ZSgoezEsMiwzfSkpIC0+ICcoezEsMiwzfSkKKworU0lFSEUgQVVDSAorICAgICAgICBzeW1wb2xwKEUpLCB1bnF1b3RlKEUpCmRpZmYgLS1naXQgYS9kb2MvZWZ1bi9yYWlzZV9lcnJvciBiL2RvYy9lZnVuL3JhaXNlX2Vycm9yCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjQwYWMyMzQKLS0tIC9kZXYvbnVsbAorKysgYi9kb2MvZWZ1bi9yYWlzZV9lcnJvcgpAQCAtMCwwICsxLDIzIEBACitTWU5PUFNJUworICAgICAgICB2b2lkIHJhaXNlX2Vycm9yKHN0cmluZyBhcmcpOworCitCRVNDSFJFSUJVTkcKKyAgICAgICAgQnJpY2h0IGRpZSBBdXNmdWVocnVuZyBkZXMgbGF1ZmVuZGVuIFByb2dyYW1tcyBhYi4gV2VubiBkYXMgUHJvZ3JhbW0KKyAgICAgICAgZHVyY2ggY2F0Y2goKSBhdWZnZXJ1ZmVuIHd1cmRlLCBsaWVmZXJ0IGRpZXNlcyBjYXRjaCgpIDxhcmc+IGFscworICAgICAgICBGZWhsZXJjb2RlLCBzb25zdCB3aXJkIDxhcmc+IGFscyBGZWhsZXJtZWxkdW5nIGF1c2dlZ2ViZW4uCisKKyAgICAgICAgcmFpc2VfZXJyb3IoKSBnbGVpY2h0IGluIGRlciBGdW5rdGlvbiB0aHJvdygpLCBhYmVyIHdhZWhyZW5kIHRocm93KCkKKyAgICAgICAgYXVzIGNhdGNoKCkgaGVyYXVzIGF1ZmdlcnVmZW4gd2VyZGVuIHNvbGwsIGthbm4gcmFpc2VfZXJyb3IoKSB2b24KKyAgICAgICAgdWViZXJhbGwgaGVyIGF1ZmdlcnVmZW4gd2VyZGVuLgorCisgICAgICAgIERhIHJhaXNlX2Vycm9yKCkgc2ljaCB3aWUgYW5kZXJlICdlY2h0ZScgTGF1ZnplaXRmZWhsZXIgdmVyaGFlbHQsCisgICAgICAgIGVpbnNjaGxpZXNzbGljaCBkZXIgRXJ6ZXVndW5nIGVpbmVzIFN0YWNrIEJhY2t0cmFjZXMsIGlzdCBkaWVzZQorICAgICAgICBGdW5rdGlvbiBzZWhyIHplaXRpbnRlbnNpdi4KKworQkVNRVJLVU5HRU4KKyAgICAgICAgRGVyIFN0cmluZyBzb2xsdGUgdW1nZWJyb2NoZW4gb2RlciB3ZW5pZ3N0ZW5zIG1pdCBlaW5lbSBcbiB0ZXJtaW5pZXJ0CisJd2VyZGVuLCBkYSBkaWUgQXVzZ2FiZSBkaXJla3QgYW4gZGVuIGludGVyYWt0aXZlbiBNYWdpZXIgZXJmb2xnZW4KKwlrYW5uIGJ6dy4gYXVmIGRlbSBEZWJ1Zy1LYW5hbCBkYXMgbGV0enRlIFplaWNoZW4gZW50ZmVybnQgd2lyZC4KKworU0lFSEUgQVVDSAorICAgICAgICBjYXRjaChFKSwgdGhyb3coRSkKZGlmZiAtLWdpdCBhL2RvYy9lZnVuL3JhbmRvbSBiL2RvYy9lZnVuL3JhbmRvbQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5hOTg1NDJiCi0tLSAvZGV2L251bGwKKysrIGIvZG9jL2VmdW4vcmFuZG9tCkBAIC0wLDAgKzEsNDIgQEAKK0ZVTktUSU9OOgorICAgICAgICBpbnQgcmFuZG9tKGludCBuKQorCitBUkdVTUVOVEU6CisgICAgICAgIG46IFphaGxlbi1CZXJlaWNoIGF1cyBkZW0gZ2V3YWVobHQgd2VyZGVuIHNvbGwuCisKK0JFU0NIUkVJQlVORzoKKyAgICAgICAgR2lidCBlaW5lIHp1ZmFlbGxpZ2UgWmFobCBpbSBCZXJlaWNoIHZvbiAwLi4obi0xKSB6dXJ1ZWNrLgorCitCRU1FUktVTkdFTjoKKyAgICAgICAgRGVyIE5hY2h0ZWlsIGRlciBadWZhZWxsaWdrZWl0ICh1ZWJlciBncm9zc2UgWmFobGVuKSBpc3QsIGRhc3Mgd2VubgorICAgICAgICB2aWVsZSBaYWhsZW4gaW4gZWluZW0ga2xlaW5lbiBCZXJlaWNoIGluIGt1cnplciBaZWl0IGdlbmVyaWVydAorICAgICAgICB3ZXJkZW4sIGVpbmlnZSBaYWhsZW4gc2VociB2aWVsIGhhZXVmaWdlciBhdWZ0cmV0ZW4gYWxzIGFuZGVyZS4KKworICAgICAgICBFcyBzZWkgbm9jaG1hbCBkYXJhdWYgaGluZ2V3aWVzZW4sIGRhc3MgZGVyIEJlcmVpY2ggaW1tZXIgYmVpIDAgCisgICAgICAgIHVuZCBOSUNIVCBiZWkgMSBhbmZhZW5ndC4gRWluIHJhbmRvbSgxMCkgZ2VodCBhbHNvIG5pY2h0IHZvbiAKKyAgICAgICAgMS4uMTAgc29uZGVybiB2b24gMC4uOSEKKworQkVJU1BJRUxFOgorICAgICAgICAvLyBFaW5mYWNoZSBBYmZyYWdlIHouQi4gYXVzIGRlciBIaXRGdW5jIGVpbmVyIFdhZmZlOgorCisgICAgICAgIGlmKHJhbmRvbSgxMDEpID49IDcwKSByZXR1cm4gcmFuZG9tKDExKTsKKyAgICAgICAgZWxzZSAgICAgICAgICAgICAgICAgIHJldHVybiAwOworCisgICAgICAgIC8vIFNwaWVsZXIgc29sbCBpbiBlaW5lbiB6dWZhZWxsaWcgYXVzZ2V3YWVobHRlbiBSYXVtIGdlbW92dAorICAgICAgICAvLyB3ZXJkZW46IAorCisgICAgICAgIHN0cmluZyAqZGVzdCA9ICh7ICJyYXVtMSIsInJhdW0yIiwicmF1bTMiLCJyYXVtNCIsInJhdW01IiB9KTsKKyAgICAgICAgdGhpc19wbGF5ZXIoKS0+bW92ZShkZXN0W3JhbmRvbShzaXplb2YoZGVzdCkpXSxNX0dPfE1fTk9DSEVDSyk7CisKKyAgICAgICAgLy8gRXMgc29sbCBlaW5lIHp1ZmFlbGxpZ2UgTWVsZHVuZyBhdXNnZWdlYmVuIHdlcmRlbjoKKworICAgICAgICB0ZWxsX29iamVjdCh0aGlzX3BsYXllcigpLAorICAgICAgICAgKHsgIkVzIGtuYWNrdC5cbiIsICJEaXIgaXN0IGthbHQuXG4iLCAiRHUgc2Nod2l0enQuXG4iLAorICAgICAgICAgICAgIkR1IGJla29tbXN0IEFuZ3N0LlxuIiwgIkhpbnRlciBEaXIga25hY2t0IGVzIGltIEdlYnVlc2NoLlxuIiwKKyAgICAgICAgICAgICJFaW4ga3VlaGxlciBXaW5kIGtvbW10IGF1Zi5cbiIgfSlbcmFuZG9tKDYpXSk7CisKKyAgICAgICAgV2llIG1hbiBzaWVodCwgZ2lidCBlcyBmdWVyIHJhbmRvbSgpIHZpZWxlIHNjaG9lbmUgRWluc2F0ei0KKyAgICAgICAgbW9lZ2xpY2hrZWl0ZW4uIFdvYmVpIGxldHp0ZXJlcyBCZWlzcGllbCB1ZWJlciBBZGRSb29tTWVzc2FnZQorICAgICAgICAoZnVlciBSYWV1bWUpIHZpZWwgZWluZmFjaGVyIHVtenVzZXR6ZW4gaXN0LgorCis3LkF1ZyAyMDA3IEdsb2luc29uCmRpZmYgLS1naXQgYS9kb2MvZWZ1bi9yZWFkX2J5dGVzIGIvZG9jL2VmdW4vcmVhZF9ieXRlcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi45NWNhYmJkCi0tLSAvZGV2L251bGwKKysrIGIvZG9jL2VmdW4vcmVhZF9ieXRlcwpAQCAtMCwwICsxLDE5IEBACitTWU5PUFNJUworICAgICAgICBzdHJpbmcgcmVhZF9ieXRlcyhzdHJpbmcgZmlsZSwgaW50IHN0YXJ0LCBpbnQgYW56YWhsKQorCitCRVNDSFJFSUJVTkcKKyAgICAgICAgTGllc3QgZWluZSBiZXN0aW1tdGUgQW56YWhsIEJ5dGVzIGF1cyBkZW0gRmlsZSA8ZmlsZT4uIFdlbm4gPHN0YXJ0PgorICAgICAgICBuaWNodCBhbmdlZ2ViZW4gb2RlciAwIGlzdCwgd2lyZCBkYXMgRmlsZSB2b24gQmVnaW5uIHdlZyBnZWxlc2VuLAorICAgICAgICBzb25zdCB2b20gQnl0ZSBtaXQgZGVyIE51bW1lciA8c3RhcnQ+LiBXZW5uIDxzdGFydD4gbmVnYXRpdiBpc3QsCisgICAgICAgIHdlcmRlbiBkaWUgQnl0ZXMgdm9tIEVuZGUgZGVzIEZpbGVzIGhlciBnZXphZWhsdC4gPGFuemFobD4gaXN0IGRpZQorICAgICAgICBBbnphaGwgQnl0ZXMsIGRpZSBnZWxlc2VuIHdlcmRlbiBzb2xsZW4uIFdlcnRlIHZvbiAwIG9kZXIgbmVnYXRpdmUKKyAgICAgICAgV2VydGUgc2luZCB6d2FyIG1vZWdsaWNoLCBhYmVyIHdlbmlnIHNpbm52b2xsLgorCisgICAgICAgIFdlbm4gPHN0YXJ0PiBhdXNzZXJoYWxiIGRlciBHcm9lc3NlIGRlcyBGaWxlcyBsaWVndCwgbGllZmVydAorICAgICAgICByZWFkX2J5dGUoKSBhbnN0ZWxsZSBlaW5lcyBTdHJpbmdzIDAgenVydWVjay4KKworICAgICAgICBEaWUgbWF4LiBBbnphaGwgZWluenVsZXNlbmRlciBCeXRlcyBwcm8gQXVmcnVmIGRpZXNlciBGdW5rdGlvbgorICAgICAgICBiZXRyYWVndCBMSU1JVF9CWVRFIChzLiBxdWVyeV9saW1pdHMoKSkuCisKK1NJRUhFIEFVQ0gKKyAgICAgICAgcmVhZF9maWxlKEUpLCB3cml0ZV9ieXRlcyhFKSwgd3JpdGVfZmlsZShFKQpkaWZmIC0tZ2l0IGEvZG9jL2VmdW4vcmVhZF9maWxlIGIvZG9jL2VmdW4vcmVhZF9maWxlCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjdmMWNjZmMKLS0tIC9kZXYvbnVsbAorKysgYi9kb2MvZWZ1bi9yZWFkX2ZpbGUKQEAgLTAsMCArMSwxOSBAQAorU1lOT1BTSVMKKyAgICAgICAgc3RyaW5nIHJlYWRfZmlsZShzdHJpbmcgZmlsZSwgaW50IHN0YXJ0LCBpbnQgYW56YWhsKQorCitCRVNDSFJFSUJVTkcKKyAgICAgICAgTGllc3QgWmVpbGVuIGF1cyBlaW5lbSBGaWxlIDxmaWxlPi4gV2VubiA8c3RhcnQ+IGFuZ2VnZWJlbiBpc3QgdW5kCisgICAgICAgIG5pY2h0IDAsIHdpcmQgdm9uIEJlZ2lubiBkZXIgWmVpbGUgPHN0YXJ0PiBhbiBnZWxlc2VuOyBpc3QgPHN0YXJ0PiAwCisgICAgICAgIG9kZXIgbmljaHQgYW5nZWdlYmVuLCB3aXJkIHZvbSBCZWdpbm4gZGVzIEZpbGVzIGdlbGVzZW4uCisKKyAgICAgICAgV2VubiA8YW56YWhsPiBuaWNodCBhbmdlZ2ViZW4gb2RlciAwIGlzdCwgd2lyZCBkYXMgZ2VzYW10ZSBGaWxlCisgICAgICAgIGdlbGVzZW4sIHNvbnN0IG51ciA8YW56YWhsPiBaZWlsZW4uCisKKyAgICAgICAgV2VubiA8c3RhcnQ+IGF1c3NlcmhhbGIgZGVyIEdyb2Vzc2UgZGVzIEZpbGVzIGxpZWd0LCBsaWVmZXJ0CisgICAgICAgIHJlYWRfZmlsZSgpIGFuc3RlbGxlIGVpbmVzIFN0cmluZ3MgMCB6dXJ1ZWNrLgorCisgICAgICAgIERpZSBtYXguIEFuemFobCBlaW56dWxlc2VuZGVyIEJ5dGVzIChuaWNodCBaZWlsZW4hKSBwcm8gQXVmcnVmIGRpZXNlcgorICAgICAgICBGdW5rdGlvbiBiZXRyYWVndCBMSU1JVF9GSUxFIChzLiBxdWVyeV9saW1pdHMoKSkuCisKK1NJRUhFIEFVQ0gKKyAgICAgICAgcmVhZF9ieXRlcyhFKSwgd3JpdGVfZmlsZShFKQpkaWZmIC0tZ2l0IGEvZG9jL2VmdW4vcmVmZXJlbmNlcCBiL2RvYy9lZnVuL3JlZmVyZW5jZXAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNWMyYzBkZgotLS0gL2Rldi9udWxsCisrKyBiL2RvYy9lZnVuL3JlZmVyZW5jZXAKQEAgLTAsMCArMSwxMyBAQAorU1lOT1BTSVMKKyAgICAgICAgaW50IHJlZmVyZW5jZXAobWl4ZWQgYXJnKQorCitCRVNDSFJFSUJVTkcKKyAgICAgICAgTGllZmVydCAxLCB3ZW5uIGRhcyBBcmd1bWVudCBhbiBkaWUgYWt0dWVsbGUgRnVua3Rpb24gcGVyIFJlZmVyZW56CisgICAgICAgIHVlYmVyZ2ViZW4gd3VyZGUsIGFuc29uc3RlbiAwLgorCisgICAgICAgIE1hbiBiZWFjaHRlLCBkYXNzIGRhcyBBcmd1bWVudCBhbHMgUmVmZXJlbnogYW4gcmVmZXJlbmNlcCgpCisgICAgICAgIHVlYmVyZ2ViZW4gd2VyZGVuIG11c3MsIHouIEIuIHJlZmVyZW5jZXAoJngpLgorCitTSUVIRSBBVUNICisgICAgICAgIGNsb3N1cmVwKEUpLCBmbG9hdHAoRSksIG1hcHBpbmdwKEUpLCBvYmplY3RwKEUpLCBpbnRwKEUpLAorICAgICAgICBwb2ludGVycChFKSwgc3RyaW5ncChFKSwgc3ltYm9scChFKSwgY2xvbmVwKEUpLCByZWZlcmVuY2VzKExQQykKZGlmZiAtLWdpdCBhL2RvYy9lZnVuL3JlZ2V4cCBiL2RvYy9lZnVuL3JlZ2V4cApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4zNTRlNmE2Ci0tLSAvZGV2L251bGwKKysrIGIvZG9jL2VmdW4vcmVnZXhwCkBAIC0wLDAgKzEsNDEgQEAKK1NZTk9QU0lTCisgICAgICAgICNpbmNsdWRlIDxyZWdleHAuaD4KKworICAgICAgICBzdHJpbmcgKnJlZ2V4cChzdHJpbmcgKmxpc3QsIHN0cmluZyBwYXR0ZXJuKQorICAgICAgICBzdHJpbmcgKnJlZ2V4cChzdHJpbmcgKmxpc3QsIHN0cmluZyBwYXR0ZXJuLCBpbnQgb3B0KQorCitERVNDUklQVElPTgorICAgICAgICBNYXRjaCB0aGUgcGF0dGVybiA8cGF0dGVybj4gKGludGVycHJldGVkIGFjY29yZGluZyB0byA8b3B0PiBpZgorICAgICAgICBnaXZlbikgYWdhaW5zdCBhbGwgc3RyaW5ncyBpbiBsaXN0LCBhbmQgcmV0dXJuIGEgbmV3IGFycmF5IHdpdGggYWxsCisgICAgICAgIHN0cmluZ3MgdGhhdCBtYXRjaGVkLgorCisgICAgICAgIElmIHRoZXJlIGlzIGFuIGVycm9yIGluIHRoZSByZWd1bGFyIGV4cHJlc3Npb24sIGEgcnVudGltZQorICAgICAgICBlcnJvciB3aWxsIGJlIHJhaXNlZC4KKworRVhBTVBMRQorICAgICAgICBzdHJpbmcgc3RyczsKKyAgICAgICAgc3RyaW5nIHBhdHRlcm47CisgICAgICAgIAorICAgICAgICBpZiAocmVnZXhwX3BhY2thZ2UoKSA9PSBSRV9QQ1JFKQorICAgICAgICAgICAgcGF0dGVybiA9ICJcXDxoZWxwXFw+LipcXDxtZVxcPiI7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIHBhdHRlcm4gPSAiXFxiaGVscFxcYi4qXFxibWVcXGIiOworCisgICAgICAgIGlmIChzdHJzID0gcmVnZXhwKCAoeyJwbGVhc2UsIGhlbHAgbWUgU2lyIEpvaG4uIn0pLAorICAgICAgICAgICAgICAgICAgICAgICAgICwgcGF0dGVybgorICAgICAgICAgICAgICAgICAgICAgICAgICkpCisgICAgICAgIHsKKyAgICAgICAgICAgaWYgKHNpemVvZihzdHJzKQorICAgICAgICAgICAgICB3cml0ZSgiSXQgbWF0Y2hlcy5cbiIpOworICAgICAgICB9CisKKyAgICAgICAgVGhlIHJlZ3VsYXIgZXhwcmVzc2lvbiB3aWxsIHRlc3QgdGhlIGdpdmVuIHN0cmluZyAod2hpY2ggaXMKKyAgICAgICAgcGFja2VkIGludG8gYW4gYXJyYXkpIGlmIHRoZXJlIGlzIHNvbWV0aGluZyBsaWtlICJoZWxwIC4uLiBtZSIKKyAgICAgICAgaW5zaWRlIG9mIGl0LgorCitISVNUT1JZCisgICAgICAgIExETXVkIDMuMyBhZGRlZCB0aGUgb3B0aW9uYWwgPG9wdD4gYXJndW1lbnQuCisKK1NFRSBBTFNPCisgICAgICAgIHJlZ2V4cGxvZGUoRSksIHJlZ21hdGNoKEUpLCByZWdyZXBsYWNlKEUpLCByZWdleHBfcGFja2FnZShFKSwgc3NjYW5mKEUpLAorICAgICAgICByZWdleHAoQykKZGlmZiAtLWdpdCBhL2RvYy9lZnVuL3JlZ2V4cF9wYWNrYWdlIGIvZG9jL2VmdW4vcmVnZXhwX3BhY2thZ2UKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOGI4ZDI5ZgotLS0gL2Rldi9udWxsCisrKyBiL2RvYy9lZnVuL3JlZ2V4cF9wYWNrYWdlCkBAIC0wLDAgKzEsNDggQEAKK1NZTk9QU0lTCisgICAgICAgICNpbmNsdWRlIDxyZWdleHAuaD4KKworICAgICAgICBpbnQgcmVnZXhwX3BhY2thZ2UoKQorCitERVNDUklQVElPTgorICAgICAgICBSZXR1cm4gd2hpY2ggcmVnZXhwIHBhY2thZ2UgaXMgdXNlZCBieSBkZWZhdWx0OgorCisgICAgICAgICAgUkVfVFJBRElUSU9OQUw6IHRyYWRpdGlvbmFsIHJlZ2V4cHMKKyAgICAgICAgICBSRV9QQ1JFOiAgICAgICAgUENSRQorCisgICAgICAgIEFzIHRoZSBwYWNrYWdlIGNhbiBiZSBzZWxlY3RlZCBhdCBydW50aW1lIHRocm91Z2ggdGhlCisgICAgICAgIFJFR0VYUF9QQUNLQUdFIGRyaXZlciBob29rLCB0aGVyZSBpcyBubyBnb29kIHdheSB0byBkZXRlcm1pbmUKKyAgICAgICAgdGhlIHBhY2thZ2UgYXQgTFBDIGNvbXBpbGUgdGltZS4KKyAgICAgICAgTWF0Y2ggdGhlIHBhdHRlcm4gPHBhdHRlcm4+IChpbnRlcnByZXRlZCBhY2NvcmRpbmcgdG8gPG9wdD4gaWYKKyAgICAgICAgZ2l2ZW4pIGFnYWluc3QgYWxsIHN0cmluZ3MgaW4gbGlzdCwgYW5kIHJldHVybiBhIG5ldyBhcnJheSB3aXRoIGFsbAorICAgICAgICBzdHJpbmdzIHRoYXQgbWF0Y2hlZC4KKworICAgICAgICBJZiB0aGVyZSBpcyBhbiBlcnJvciBpbiB0aGUgcmVndWxhciBleHByZXNzaW9uLCBhIHJ1bnRpbWUKKyAgICAgICAgZXJyb3Igd2lsbCBiZSByYWlzZWQuCisKK0VYQU1QTEUKKyAgICAgICAgc3RyaW5nIHN0cnM7CisgICAgICAgIHN0cmluZyBwYXR0ZXJuOworICAgICAgICAKKyAgICAgICAgaWYgKHJlZ2V4cF9wYWNrYWdlKCkgPT0gUkVfUENSRSkKKyAgICAgICAgICAgIHBhdHRlcm4gPSAiXFw8aGVscFxcPi4qXFw8bWVcXD4iOworICAgICAgICBlbHNlCisgICAgICAgICAgICBwYXR0ZXJuID0gIlxcYmhlbHBcXGIuKlxcYm1lXFxiIjsKKworICAgICAgICBpZiAoc3RycyA9IHJlZ2V4cCggKHsicGxlYXNlLCBoZWxwIG1lIFNpciBKb2huLiJ9KSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAsIHBhdHRlcm4KKyAgICAgICAgICAgICAgICAgICAgICAgICApKQorICAgICAgICB7CisgICAgICAgICAgIGlmIChzaXplb2Yoc3RycykKKyAgICAgICAgICAgICAgd3JpdGUoIkl0IG1hdGNoZXMuXG4iKTsKKyAgICAgICAgfQorCisgICAgICAgIFRoZSByZWd1bGFyIGV4cHJlc3Npb24gd2lsbCB0ZXN0IHRoZSBnaXZlbiBzdHJpbmcgKHdoaWNoIGlzCisgICAgICAgIHBhY2tlZCBpbnRvIGFuIGFycmF5KSBpZiB0aGVyZSBpcyBzb21ldGhpbmcgbGlrZSAiaGVscCAuLi4gbWUiCisgICAgICAgIGluc2lkZSBvZiBpdC4KKworSElTVE9SWQorICAgICAgICBJbnRyb2R1Y2VkIGluIExETXVkIDMuMy42MzQuCisKK1NFRSBBTFNPCisgICAgICAgIHJlZ2V4cChFKSwgcmVnZXhwbG9kZShFKSwgcmVnbWF0Y2goRSksIHJlZ3JlcGxhY2UoRSksIHNzY2FuZihFKSwKKyAgICAgICAgcmVnZXhwKEMpLCByZWdleHBfcGFja2FnZShIKQpkaWZmIC0tZ2l0IGEvZG9jL2VmdW4vcmVnZXhwbG9kZSBiL2RvYy9lZnVuL3JlZ2V4cGxvZGUKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNTk1ZTlkZgotLS0gL2Rldi9udWxsCisrKyBiL2RvYy9lZnVuL3JlZ2V4cGxvZGUKQEAgLTAsMCArMSwyOCBAQAorU1lOT1BTSVMKKyAgICAgICAgI2luY2x1ZGUgPHJlZ2V4cC5oPgorCisgICAgICAgIHN0cmluZyAqcmVnZXhwbG9kZSAoc3RyaW5nIHRleHQsIHN0cmluZyBwYXR0ZXJuKQorICAgICAgICBzdHJpbmcgKnJlZ2V4cGxvZGUgKHN0cmluZyB0ZXh0LCBzdHJpbmcgcGF0dGVybiwgaW50IG9wdCkKKworREVTQ1JJUFRJT04KKyAgICAgICAgVGhpcyBmdW5jdGlvbiBpcyBzaW1pbGFyIHRvIGV4cGxvZGUgYnV0IGFjY2VwdHMgYSByZWd1bGFyCisgICAgICAgIGV4cHJlc3Npb24gPHBhdHRlcm4+IGFzIGRlbGltaXRlciAoaW50ZXJwcmV0ZWQgYWNjb3JkaW5nIHRvIDxvcHQ+CisgICAgICAgIGlmIGdpdmVuKS4KKworICAgICAgICBJZiBmbGFnIFJFX09NSVRfREVMSU0gaXMgbm90IHNldCBpbiA8b3B0PiwgdGhlbiBldmVyeSBzZWNvbmQgZWxlbWVudAorICAgICAgICBpbiB0aGUgcmVzdWx0IHZlY3RvciB3aWxsIGJlIHRoZSB0ZXh0IHRoYXQgbWF0Y2hlZCB0aGUgZGVsaW1pdGVyLgorICAgICAgICBJZiB0aGUgZmxhZyBpcyBzZXQsIHRoZW4gdGhlIHJlc3VsdCB2ZWN0b3Igd2lsbCBjb250YWluIG9ubHkKKyAgICAgICAgdGhlIHRleHQgYmV0d2VlbiB0aGUgZGVsaW1pdGVycy4KKworRVhBTVBMRVMKKyAgICAgICAgcmVnZXhwbG9kZSgiYWJjZGVmIiwgImNkZSIpICAgICAgICAgICAgICAgIC0+ICh7ICJhYiIsICJjZGUiLCAiZiIgfSkKKyAgICAgICAgcmVnZXhwbG9kZSgiYWJjZGVmIiwgImNkZSIsIFJFX09NSVRfREVMSU0pIC0+ICh7ICJhYiIsICJmIiB9KQorCitISVNUT1JZCisgICAgICAgIEludHJvZHVjZWQgaW4gMy4yQDYxCisgICAgICAgIExETXVkIDMuMyBhZGRlZCB0aGUgb3B0aW9uYWwgPG9wdD4gYXJndW1lbnQgYW5kIHRoZSBSRV9PTUlUX0RFTElNCisgICAgICAgICAgZmxhZy4KKworU0VFIEFMU08KKyAgICAgICAgZXhwbG9kZShFKSwgcmVnZXhwKEUpLCByZWdtYXRjaChFKSwgcmVncmVwbGFjZShFKSwKKyAgICAgICAgcmVnZXhwX3BhY2thZ2UoRSksIHJlZ2V4cChDKQpkaWZmIC0tZ2l0IGEvZG9jL2VmdW4vcmVnbWF0Y2ggYi9kb2MvZWZ1bi9yZWdtYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5kYmI3M2Y1Ci0tLSAvZGV2L251bGwKKysrIGIvZG9jL2VmdW4vcmVnbWF0Y2gKQEAgLTAsMCArMSw0NiBAQAorU1lOT1BTSVMKKyAgICAgICAgI2luY2x1ZGUgPHJlZ2V4cC5oPgorCisgICAgICAgIHN0cmluZyAgcmVnbWF0Y2ggKHN0cmluZyB0ZXh0LCBzdHJpbmcgcGF0dGVybikKKyAgICAgICAgc3RyaW5nICByZWdtYXRjaCAoc3RyaW5nIHRleHQsIHN0cmluZyBwYXR0ZXJuLCBpbnQgb3B0KQorICAgICAgICBzdHJpbmcgIHJlZ21hdGNoIChzdHJpbmcgdGV4dCwgc3RyaW5nIHBhdHRlcm4sIGludCBvcHQsIGludCBzdGFydCkKKyAgICAgICAgc3RyaW5nICpyZWdtYXRjaCAoc3RyaW5nIHRleHQsIHN0cmluZyBwYXR0ZXJuLCBpbnQgb3B0KQorICAgICAgICBzdHJpbmcgKnJlZ21hdGNoIChzdHJpbmcgdGV4dCwgc3RyaW5nIHBhdHRlcm4sIGludCBvcHQsIGludCBzdGFydCkKKworREVTQ1JJUFRJT04KKyAgICAgICAgTWF0Y2ggdGhlIHN0cmluZyA8dHh0PiBhZ2FpbnN0IDxwYXR0ZXJuPiAoaW50ZXJwcmV0ZWQgYWNjb3JkaW5nCisgICAgICAgIHRvIDxvcHQ+IGlmIGdpdmVuKS4gSWYgPHN0YXJ0PiBpcyBnaXZlbiwgaXQgaXMgdGhlIHN0YXJ0CisgICAgICAgIHBvc2l0aW9uIGZvciB0aGUgbWF0Y2ggYW5kIG11c3QgYmUgaW4gdGhlIHJhbmdlIFswLi5zdHJsZW4odGV4dCldLgorCisgICAgICAgIElmIHRoZXJlIGlzIG5vIG1hdGNoLCB0aGUgcmVzdWx0IGlzIDAuIElmIHRoZXJlIGlzIGEgbWF0Y2gsIHRoZSBleGFjdAorICAgICAgICByZXN1bHQgaXMgZGV0ZXJtaW5lZCBieSB0aGUgZmxhZyBSRV9NQVRDSF9TVUJTOgorCisgICAgICAgIElmIHRoZSBmbGFnIFJFX01BVENIX1NVQlMgaXMgbm90IHNldCwgdGhlIHJlc3VsdCBpcyB0aGUgbWF0Y2hlZAorICAgICAgICBleHByZXNzaW9uLgorCisgICAgICAgIElmIHRoZSBmbGFnIFJFX01BVENIX1NVQlMgaXMgc2V0LCB0aGUgcmVzdWx0IGlzIGFuIGFycmF5IG9mIHRoZQorICAgICAgICBtYXRjaGVkIHN0cmluZyhzKSBvZiB0aGUgZmlyc3QgbWF0Y2guIEVudHJ5IFswXSBpcyB0aGUgZnVsbCBzdHJpbmcKKyAgICAgICAgbWF0Y2hpbmcgdGhlIDxwYXR0ZXJuPiwgZm9sbG93aW5nIGVudHJpZXMgYXJlIHRoZSBzdHJpbmcgc2VnbWVudHMKKyAgICAgICAgbWF0Y2hpbmcgcGFyZW50aGVzaXplZCBzdWJleHByZXNzaW9ucyBpbiA8cGF0dGVybj4uIElmIGEgcGFydGljdWxhcgorICAgICAgICBzdWJleHByZXNzaW9uIGRpZG4ndCBoYXZlIGEgbWF0Y2gsIHRoZSBjb3JyZXNwb25kaW5nIGFycmF5IGVudHJ5IHdpbGwKKyAgICAgICAgYmUgMC4KKworICAgICAgICBUaGUgbGFzdCBlbnRyeSBpbiB0aGUgYXJyYXkgd2lsbCBiZSB0aGUgbmV3IHN0YXJ0IGluZGV4IGluIGNhc2UgeW91CisgICAgICAgIHdhbnQgdG8gcmVwZWF0IHRoZSBtYXRjaCBvbiB0aGUgcmVtYWluaW5nIHBhcnRzIG9mIHRoZSBzdHJpbmcuIFRoaXMKKyAgICAgICAgbmV3IGluZGV4IGlzIHVzdWFsbHkgZXF1YWwgdGhlIGxlbmd0aCBvZiB0aGUgbWF0Y2gsIGJ1dCBhdCBsZWFzdCBvbmUKKyAgICAgICAgaGlnaGVyIHRoYW4gdGhlIG9yaWdpbmFsIHN0YXJ0IGluZGV4LgorCitFWEFNUExFCisgICAgICAgIHJlZ21hdGNoKCJhYmNkZWZjZGYiLCAiY2QiKSAgICAtPiAiY2QiCisgICAgICAgIHJlZ21hdGNoKCJhYmNkZWZjZGYiLCAiY2QoZSkiKSAtPiAiY2RlIgorCisgICAgICAgIHJlZ21hdGNoKCJhYmNkZWZjZGYiLCAiY2QiLCBSRV9NQVRDSF9TVUJTKSAgICAtPiAoeyAiY2QiIH0pCisgICAgICAgIHJlZ21hdGNoKCJhYmNkZWZjZGYiLCAiY2QoZSkiLCBSRV9NQVRDSF9TVUJTKSAtPiAoeyAiY2RlIiwgImUiIH0pCisKK0hJU1RPUlkKKyAgICAgICAgSW50cm9kdWNlZCBpbiBMRE11ZCAzLjMuMTk4LgorICAgICAgICBNb2RpZmllZCBpbiAzLjMuMjE0IHRvIHJldHVybiAwIGZvciBub24tbWF0Y2hlcywgYW5kIHRvIHRha2UgYW5kCisgICAgICAgIHJldHVybiBhIHN0YXJ0IHBvc2l0aW9uLgorCitTRUUgQUxTTworICAgICAgICByZWdleHBsb2RlKEUpLCByZWdyZXBsYWNlKEUpLCByZWdleHAoRSksIHJlZ2V4cF9wYWNrYWdlKEUpLCByZWdleHAoQykKZGlmZiAtLWdpdCBhL2RvYy9lZnVuL3JlZ3JlcGxhY2UgYi9kb2MvZWZ1bi9yZWdyZXBsYWNlCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmQ0NTliYjIKLS0tIC9kZXYvbnVsbAorKysgYi9kb2MvZWZ1bi9yZWdyZXBsYWNlCkBAIC0wLDAgKzEsNTcgQEAKK1NZTk9QU0lTCisgICAgIHN0cmluZyByZWdyZXBsYWNlKHN0cmluZyB0eHQsIHN0cmluZyBwYXR0ZXJuLAorICAgICAgICAgICAgICAgICAgICAgICBzdHJpbmd8Y2xvc3VyZSByZXBsYWNlcGF0dGVybiwgaW50IGZsYWdzKQorCitCRVNDSFJFSUJVTkcKKyAgICAgRGllIEZ1bmt0aW9uIGR1cmNoc3VjaHQgZGVuIFN0cmluZyB0eHQgbmFjaCBlaW5lbSBWb3Jrb21tZW4KKyAgICAgZGVzIHJlZ3VsYWVyZW4gQXVzZHJ1Y2tzIHBhdHRlcm4sIHVuZCBlcnNldHp0IGlobiBkdXJjaAorICAgICBkZW4gU3RyaW5nIHJlcGxhY2VwYXR0ZXJuLiAocmVwbGFjZXBhdHRlcm4ga2FubiBhdWNoIGVpbmUgQ2xvc3VyZQorICAgICBzZWluLiBTaWUgYmVrb21tdCBhbHMgYXJndW1lbnQgZGVuIHBhc3NlbmRlbiBTdWJzdHJpbmcgdW5kIG11c3MKKyAgICAgZGVuIEVyc2F0enN0cmluZyB6dXJ1ZWNrbGllZmVybi4pCisKKyAgICAgSW0gcmVwbGFjZXN0cmluZyBrYW5uIG1hbiB2aWEgJyYnIGF1ZiBkZW4genVtIFN1Y2hhdXNkcnVjaworICAgICBwYXNzZW5kZW4gVGVpbHN0cmluZyBpbSBPcmlnaW5hbCB6dWdyZWlmZW4uIE1pdCBcbiAod29iZWkgbgorICAgICBlaW5lIEdhbnp6YWhsIGlzdCkga2FubiBtYW4gYXVmIGRlbiBuLXRlbiBVbnRlcmF1c2RydWNrCisgICAgIGRlcyByZWd1bGFlcmVuIEF1c2RydWNrcyB6dWdyZWlmZW4uIFVtICImIiBvZGVyICJcXDEiIGFscworICAgICBFcnNldHp1bmcgenUgZXJyZWljaGVuLCBtdXNzICJcXCYiIGJ6dyAiXFxcXDEiIHZlcndlbmRldCB3ZXJkZW4uCisKKyAgICAgQmVpbSBGbGFnIGJlc3RpbW10IGVpbiBnZXNldHp0ZXMgQml0IDAsIGRhc3MgZGVyIEF1c2RydWNrIHNvIG9mdAorICAgICB3aWUgdm9yaGFuZGVuIGVyc2V0enQgd2lyZCwgc29uc3QgbnVyIGRhcyBlcnN0ZSBBdWZ0cmV0ZW4uCisgICAgIEJpdCAxIGJlc3RpbW10LCBvYiBkZXIgcmVndWxhZXJlIEF1c2RydWNrICdlZCcgb2RlciAnc2VkJyBrb21wYXRpYmVsCisgICAgIGlzdCAoQml0IGdlbG9lc2NodCkgb2RlciAnZXgnIGtvbXBhdGliZWwgKGdlc2V0enQpLgorCisgICAgIERpZSBGdW5rdGlvbiB3aXJrdCB3aWUgcy9wYXR0ZXJuL3JlcGxhY2VwYXR0ZXJuL2ZsYWdzIGluCisgICAgIEVkaXRvcmVuIHdpZSB2aSBvZGVyIHNlZC4gU2llIGlzdCBiZXNvbmRlcnMgZ3V0IGdlZWlnbmV0IHVtCisgICAgIHZhcmlhYmxlIFN0cmluZ3MgenUgZXJzZXR6ZW4sIGltIEdlZ2Vuc2F0eiB6dSByZWdleHBsb2RlLCB3bworICAgICBtYW4gZGVuIFN0cmluZyBudXIgbmFjaCBlaW5lbSByZWd1bGFlcmVuIEF1c2RydWNrIHplcmxlZ2VuIGthbm4uCisKK0JFSVNQSUVMRQorICAgICAvLyBlcnNldHp0IEBAd2VyQEAgZHVyY2ggZGVuIE5hbWVuIGRlcyBPYmpla3RlcworICAgICByZWdyZXBsYWNlKHN0ciwiQEB3ZXJAQCIsKHN0cmluZylvYmotPm5hbWUoV0VSLDIpLDEpCisKKyAgICAgLy8gZXJzZXR6ZSBhbGxlIGRvcHBlbHRlbiBMZWVyemVpY2hlbiBkdXJjaCBlaW4gZWluemVsbmVzCisgICAgIHJlZ3JlcGxhY2Uoc3RyLCAiICAqIiwgIiAiLCAxKTsKKworICAgICAvLyBTdWNodCBuYWNoICd0ZWlsdCBEaXIgbWl0OiAnIHVuZCBzY2hsaWVzc3QgZGVuIG5hY2hmb2xnZW5kZW4KKyAgICAgLy8gVGV4dCBtaXQgPHVuZGVybGluZT4gdW5kIDwvdW5kZXJsaW5lPiBlaW47IGJlaSBqZWRlbSBBdWZ0cmV0ZW4uCisKKyAgICAgbXNnaW4gPSByZWdyZXBsYWNlKG1zZ2luLCAidGVpbHQgRGlyIG1pdDogKC4qKSIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInRlaWx0IERpciBtaXQ6IDx1bmRlcmxpbmU+XFwxPC91bmRlcmxpbmU+IiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAxKTsKKworICAgICAvLyBFcnNldHp0IGRpZSA8dW5kZXJsaW5lPiBodG1sLVRhZ3MgZHVyY2ggZGllIHZ0MTAwCisgICAgIC8vIEVzY2FwZS1TZXF1ZW56ZW4gZnVlciBVbnRlcnN0cmVpY2h1bmcKKyAgICAgdHh0ID0gcmVncmVwbGFjZSh0eHQsICI8dW5kZXJsaW5lPiIsICI8RVNDPls1bSIsIDEpOworCisgICAgIC8vIEVyc2V0enQgZGFzIFdvcnQgSE9VU0UgaW4gS2xlaW5idWNoc3RhYmVuLgorICAgICB0eHQgPSByZWdyZXBsYWNlKHR4dCwgIkhPVVNFIiwgIydsb3dlcl9jYXNlLCAxKTsKKworQlVHUzoKKyAgICAgSSBoYXZlIHdyaXR0ZW4gdGhhdCBlZnVuLiBJdCBkb2Vzbid0IGhhdmUgQlVHUy4gQnkgZGVmaW5pdGlvbi4KKyAgICAgV2VsbCwgaW4gZmFjdCBpdCBjcmFzaGVkIGFzIEkgZmlyc3QgdHJpZWQgaXQgb24gcnVubmluZyBUQVBQTXVkLgorICAgICAqc2lnaCoKKyAgICAgTWFyY3VzQFRBUFBNdWQKKworU0lFSEUgQVVDSAorICAgICBWZXJ3YW5kdDogcmVnZXhwKEUpLCByZWdleHBsb2RlKEUpLCBzc2NhbmYoRSkKKyAgICAgQWVobmxpY2g6IHJlcGxhY2VfcGVyc29uYWwoTCkKZGlmZiAtLWdpdCBhL2RvYy9lZnVuL3JlbW92ZV9hY3Rpb24gYi9kb2MvZWZ1bi9yZW1vdmVfYWN0aW9uCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmI5MzlhNTEKLS0tIC9kZXYvbnVsbAorKysgYi9kb2MvZWZ1bi9yZW1vdmVfYWN0aW9uCkBAIC0wLDAgKzEsMjEgQEAKK1NZTk9QU0lTCisgICAgICAgIGludCByZW1vdmVfYWN0aW9uKGludHxzdHJpbmcgdmVyYik7CisgICAgICAgIGludCByZW1vdmVfYWN0aW9uKGludHxzdHJpbmcgdmVyYiwgb2JqZWN0IG9iaik7CisKK0JFU0NIUkVJQlVORworICAgICAgICBXZW5uIDx2ZXJiPiBlaW4gU3RyaW5nIGlzdDogZW50ZmVybmUgZGFzIGVyc3RlIGltIE9iamVrdCA8b2JqPiBkdXJjaAorICAgICAgICBhZGRfYWN0aW9uKCkgZGVmaW5pZXJ0ZSBLb21tYW5kbyA8dmVyYj4uIFdlbm4gPG9iaj4gbmljaHQKKyAgICAgICAgYW5nZWdlYmVuIHdpcmQsIHdpcmQgc3RhbmRhcmRtYWVzc2lnIHRoaXNfcGxheWVyKCkgdmVyd2VuZGV0LgorICAgICAgICBHaWIgMSB6dXJ1ZWNrLCB3ZW5uIGVpbiBLb21tYW5kbyBnZWZ1bmRlbiB1bmQgZW50ZmVybnQgd3VyZGUsCisgICAgICAgIHNvbnN0IDAuCisKKyAgICAgICAgV2VubiA8dmVyYj4gZWluIEludGVnZXIgaXN0OiB3ZW5uIHZlcmIgbmljaHQgMCBpc3QsIGVudGZlcm5lIGFsbGUKKyAgICAgICAgZHVyY2ggZGFzIE9iamVrdCA8b2JqPiBkZWZpbmllcnRlbiBLb21tYW5kaS4gV2VubiA8b2JqPiBuaWNodAorICAgICAgICBhbmdlZ2ViZW4gd2lyZCwgd2lyZCBzdGFuZGFyZG1hZXNzaWcgdGhpc19wbGF5ZXIoKSB2ZXJ3ZW5kZXQuIEdpYnQKKyAgICAgICAgZGllIEFuemFobCBkZXIgZW50ZmVybnRlbiBLb21tYW5kaSB6dXJ1ZWNrLgorCitTSUVIRSBBVUNICisgICAgIFZlcndhbmR0OiAgICAgIGFkZF9hY3Rpb24oRSksIGluaXQoRSkKKyAgICAgQWx0ZXJuYXRpdjoJQWRkQWN0aW9uKEwpLCBBZGRDbWQoTCkKKworNy5BdWcgMjAwNyBHbG9pbnNvbgpkaWZmIC0tZ2l0IGEvZG9jL2VmdW4vcmVtb3ZlX2NhbGxfb3V0IGIvZG9jL2VmdW4vcmVtb3ZlX2NhbGxfb3V0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmQ1YTIyZGIKLS0tIC9kZXYvbnVsbAorKysgYi9kb2MvZWZ1bi9yZW1vdmVfY2FsbF9vdXQKQEAgLTAsMCArMSwzMiBAQAorU1lOT1BTSVMKKyAgICAgICAgaW50IHJlbW92ZV9jYWxsX291dChzdHJpbmcgZnVuKTsKKyAgICAgICAgaW50IHJlbW92ZV9jYWxsX291dChjbG9zdXJlIGZ1bik7CisKK0JFU0NIUkVJQlVORzoKKyAgICAgICAgRW50ZmVybnQgZGVuIG5hZWNoc3RlbiBsYXVmZW5kZW4gY2FsbF9vdXQoKSBhdWYgZGllIEZ1bmt0aW9uIDxmdW4+CisgICAgICAgIGltIGFrdHVlbGxlbiBPYmpla3QgYnp3LiBkZW4gbmFlY2hzdGVuIGxhdWZlbmRlbiBjYWxsX291dCgpIGF1ZiBkaWUKKyAgICAgICAgQ2xvc3VyZSA8ZnVuPi4gRGllIHZlcmJsZWliZW5kZSBaZWl0IHdpcmQgenVydWVja2dlbGllZmVydC4KKworICAgICAgICBXZW5uIGVzIGtlaW5lIGxhdWZlbmRlbiBjYWxsX291dCgpcyBhdWYgZ2lidCwgd2lyZCAtMSB6dXJ1ZWNrCisgICAgICAgIGdlbGllZmVydC4KKworQkVJU1BJRUwKKyAgICAgICAgVW0gYWxsZSBjYWxsX291dCgpcyBhdWYgTWVpbmVGdW5rdGlvbigpIHp1IGVudGZlcm5lbjoKKworICAgICAgICB3aGlsZShyZW1vdmVfY2FsbF9vdXQoIk1laW5lRnVua3Rpb24iKSAhPSAtMSk7ICAgICAgLyogd2llZGVyaG9sZSAqLworCitCVUdTCisgICAgICAgIERhcyBFbnRmZXJuZW4gdm9uIGNhbGxfb3V0KClzIGF1ZiBDbG9zdXJlcyBmdW5rdGlvbmllcnQgbnVyLCB3ZW5uIGRlcgorICAgICAgICBleGFrdCBnbGVpY2hlIFdlcnQgZnVlciBkaWUgQ2xvc3VyZSB2ZXJ3ZW5kZXQgd2lyZC4KKworICAgICAgICBEYXMgZnVua3Rpb25pZXJ0OgorICAgICAgICAgICAgY2xvc3VyZSBjbCA9IHN5bWJvbF9mdW5jdGlvbigibWFpbiIsIG9iaik7CisgICAgICAgICAgICBjYWxsX291dChjbCwgMik7CisgICAgICAgICAgICByZW1vdmVfY2FsbF9vdXQoY2wpOworCisgICAgICAgIERhcyBmdW5rdGlvbmllcnQgbmljaHQ6CisgICAgICAgICAgICBjYWxsX291dChzeW1ib2xfZnVuY3Rpb24oIm1haW4iLCBvYmopLCAyKTsKKyAgICAgICAgICAgIHJlbW92ZV9jYWxsX291dChzeW1ib2xfZnVuY3Rpb24oIm1haW4iLCBvYmopKTsKKworU0lFSEUgQVVDSAorICAgICAgICBjYWxsX291dChFKSwgY2FsbF9vdXRfaW5mbyhFKSwgZmluZF9jYWxsX291dChFKQpkaWZmIC0tZ2l0IGEvZG9jL2VmdW4vcmVtb3ZlX2lucHV0X3RvIGIvZG9jL2VmdW4vcmVtb3ZlX2lucHV0X3RvCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjdjZDkzOTMKLS0tIC9kZXYvbnVsbAorKysgYi9kb2MvZWZ1bi9yZW1vdmVfaW5wdXRfdG8KQEAgLTAsMCArMSwzOCBAQAorU1lOT1BTSVMKKyAgICAgICAgaW50IHJlbW92ZV9pbnB1dF90byAob2JqZWN0IHBsYXllcik7CisgICAgICAgIGludCByZW1vdmVfaW5wdXRfdG8gKG9iamVjdCBwbGF5ZXIsIHN0cmluZyBmdW4pOworICAgICAgICBpbnQgcmVtb3ZlX2lucHV0X3RvIChvYmplY3QgcGxheWVyLCBjbG9zdXJlIGZ1bik7CisgICAgICAgIGludCByZW1vdmVfaW5wdXRfdG8gKG9iamVjdCBwbGF5ZXIsIG9iamVjdCBmdW4pOworICAgICAgICBpbnQgcmVtb3ZlX2lucHV0X3RvIChvYmplY3QgcGxheWVyLCBvYmplY3Qgb2JqLCBzdHJpbmcgZnVuKTsKKworQkVTQ0hSRUlCVU5HCisgICAgICAgIEVudGZlcm50IGVpbiBoYWVuZ2lnZXMgaW5wdXRfdG8oKSBhdXMgZGVtIGludGVyYWt0aXZlbiBQbGF5ZXJvYmpla3QuCisgICAgICAgIFdlbm4gPGZ1bj4gbmljaHQgYW5nZWdlYmVuIGlzdCwgd2lyZCBkZXIgenVsZXR6dCBhdWZnZXJ1ZmVuIGlucHV0X3RvKCkKKyAgICAgICAgZW50ZmVybnQuCisKKyAgICAgICAgV3VyZGUgPGZ1bj4gYW5nZWdlYmVuLCBlbnRmZXJudCByZW1vdmVfaW5wdXRfdG8gZGFzIG5ldWVzdGUgYXVmIDxmdW4+CisgICAgICAgIGF1ZmdlcnVmZW5lIGlucHV0X3RvLiBKZSBuYWNoIGRlciBEZWZpbml0aW9uIHZvbiA8ZnVuPiB3aXJkIG5hY2gKKyAgICAgICAgdW50ZXJzY2hpZWRsaWNoZW4gS3JpdGVyaWVuIGdlc3VjaHQ6CisgICAgICAgICAgLSA8ZnVuPiBpc3QgZWluIFN0cmluZzogZ2VzdWNodCB3aXJkIG5hY2ggZGVtIEZ1bmt0aW9uc25hbWVuCisgICAgICAgICAgLSA8ZnVuPiBpc3QgZWluIE9iamVrdDogZ2VzdWNodCB3aXJkIG5hY2ggZGVtIE9iamVrdCwgaW4gZGVtCisgICAgICAgICAgICBpbnB1dF90bygpIGF1ZmdlcnVmZW4gd3VyZGUKKyAgICAgICAgICAtIDxmdW4+IGlzdCBlaW5lIENsb3N1cmU6IGdlc3VjaHQgd2lyZCBuYWNoIGRlciBDbG9zdXJlLCBkaWUKKyAgICAgICAgICAgIGlucHV0X3RvKCkgZW50aGFlbHQKKyAgICAgICAgICAtIDxvYmo+IHVuZCA8ZnVuPiB3dXJkZW4gYW5nZWdlYmVuOiBlcyB3aXJkIG5hY2ggT2JqZWt0IHVuZAorICAgICAgICAgICAgRnVua3Rpb25zbmFtZSBnZXN1Y2h0LiBCZWlkZSBtdWVzc2VuIHVlYmVyZWluc3RpbW1lbi4KKworICAgICAgICByZW1vdmVfaW5wdXRfdG8oKSBsaWVmZXJ0IDEgYmVpIEVyZm9sZywgc29uc3QgMCAoZXMgd3VyZGUga2VpbgorICAgICAgICBpbnB1dF90bygpIGdlZnVuZGVuLCBkYXMgT2JqZWt0IGlzdCBuaWNodCBpbnRlcmFrdGl2IG9kZXIgZXMgZ2lidAorICAgICAgICBrZWluIGhhZW5naWdlcyBpbnB1dF90bygpIGF1ZiBkZW0gT2JqZWt0KS4KKworQkVJU1BJRUxFCisgICAgICAgIEVudGZlcm50IGFsbGUgaGFlbmdpZ2VuIGlucHV0X3RvKClzIGRlcyBha3R1ZWxsZW4gU3BpZWxlcnMsIGZhbGxzCisgICAgICAgIHZvcmhhbmRlbjoKKyAgICAgICAgICAgIHdoaWxlKHJlbW92ZV9pbnB1dF90byh0aGlzX2ludGVyYWN0aXZlKCkpKTsKKworQUVOREVSVU5HRU4KKyAgICAgICAgRWluZ2VmdWVocnQgaW4gTERNdWQgMy4yLjkuCisKK1NJRUhFIEFVQ0gKKyAgICAgICAgaW5wdXRfdG8oRSksIGZpbmRfaW5wdXRfdG8oRSksIGlucHV0X3RvX2luZm8oRSksCisgICAgICAgIHF1ZXJ5X2lucHV0X3BlbmRpbmcoRSkKZGlmZiAtLWdpdCBhL2RvYy9lZnVuL3JlbW92ZV9pbnRlcmFjdGl2ZSBiL2RvYy9lZnVuL3JlbW92ZV9pbnRlcmFjdGl2ZQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4wZDZkMjAwCi0tLSAvZGV2L251bGwKKysrIGIvZG9jL2VmdW4vcmVtb3ZlX2ludGVyYWN0aXZlCkBAIC0wLDAgKzEsMTMgQEAKK1NZTk9QU0lTCisgICAgICAgIHZvaWQgcmVtb3ZlX2ludGVyYWN0aXZlKG9iamVjdCBvYikKKworREVTQ1JJUFRJT04KKyAgICAgICAgQ2xvc2UgdGhlIGNvbm5lY3Rpb24gdG8gdGhlIGludGVyYWN0aXZlIG9iamVjdCBvYi4KKworICAgICAgICBGb3IgdGhlIHRpbWUgb2YgdGhlIExQQyBleGVjdXRpb24sIHRoZSBvYmplY3QgaXMgb25seSBtYXJrZWQKKyAgICAgICAgaW50ZXJuYWxseSBhcyAnYWJvdXQgdG8gYmUgY2xvc2VkJywgbWVhbmluZyB0aGF0IHdoaWxlIGFsbAorICAgICAgICBvdXRwdXQgd2lsbCBiZSByZWRpcmVjdGVkIHRvIHN0ZG91dCwgdGhlIGFjdHVhbCBuZXR3b3JrIGNvbm5lY3Rpb24KKyAgICAgICAgd2lsbCBjb250aW51ZSB0byBleGlzdCB1bnRpbCB0aGUgTFBDIGV4ZWN1dGlvbiBlbmRzLgorCitTRUUgQUxTTworICAgICAgICBjb25uZWN0KE0pLCBsb2dvbihBKSwgZGlzY29ubmVjdChNKQpkaWZmIC0tZ2l0IGEvZG9jL2VmdW4vcmVuYW1lIGIvZG9jL2VmdW4vcmVuYW1lCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjJmNzQ0OTIKLS0tIC9kZXYvbnVsbAorKysgYi9kb2MvZWZ1bi9yZW5hbWUKQEAgLTAsMCArMSwyNSBAQAorU1lOT1BTSVMKKyAgICAgICAgaW50IHJlbmFtZShzdHJpbmcgZnJvbSwgc3RyaW5nIHRvKTsKKworQkVTQ0hSRUlCVU5HCisgICAgICAgIERpZSBFZnVuIHJlbmFtZSgpIHZlcnNjaGllYnQgPGZyb20+IG5hY2ggPHRvPi4gV2VubiA8ZnJvbT4gZWluIEZpbGUKKyAgICAgICAgaXN0LCBrYW5uIDx0bz4gZW50d2VkZXIgZWluIGFuZGVyZSBGaWxlIG9kZXIgZWluIFZlcnplaWNobmlzIHNlaW4uCisgICAgICAgIFdlbm4gPGZyb20+IGVpbiBWZXJ6ZWljaG5pcyBpc3QsIG11c3MgPHRvPiBhdWNoIGVpbiBWZXJ6ZWljaG5pcyBzZWluLgorICAgICAgICBXZW5uIGluIGRpZXNlbSBGYWxsIDx0bz4gZXhpc3RpZXJ0IHVuZCBlaW4gVmVyemVpY2huaXMgaXN0LCB3aXJkCisgICAgICAgIDxmcm9tPiBpbiA8dG8+IHZlcnNjaG9iZW4gdW5kIGJlaGFlbHQgc2VpbmVuIE5hbWVuLgorCisgICAgICAgIDxmcm9tPiB1bXp1YmVuZW5uZW4gZXJmb3JkZXJ0IFNjaHJlaWJyZWNodGUgYXVmIDxmcm9tPi4KKworICAgICAgICBVbnRlcnZlcnplaWNobmlzc2UgKFZlcnplaWNobmlzc2UgaW4gVmVyemVpY2huaXNzZW4pIGtvZW5uZW4gbnVyIGF1ZgorICAgICAgICBNYXNjaGluZW4gdW1iZW5hbm50IHdlcmRlbiwgZGllIHVudGVyIFN5c3RlbSBWIGxhdWZlbiwgZC5oLiBlcyBpc3QKKyAgICAgICAgbmljaHQgbW9lZ2xpY2gsIGRpZXNlIGluIGVpbiBhbmRlcmVzIFZlcnplaWNobmlzIHp1IHZlcnNjaGllYmVuLiBEYXMKKyAgICAgICAgVmVyc2NoaWViZW4gdm9uIFZlcnplaWNobmlzc2VuIHZvbiBlaW5lbSBGaWxlc3lzdGVtIHp1bSBhbmRyZXJlbiBpc3QKKyAgICAgICAgdW50ZXIga2VpbmVtIFN5c3RlbSBtb2VnbGljaC4KKworICAgICAgICBCZWkgRXJmb2xnIGxpZWZlcnQgcmVuYW1lKCkgMCwgYmVpIEZlaGxzY2hsYWcgZWluZW4gV2VydCB1bmdsZWljaCAwLgorCitCRUlTUElFTAorICAgICAgICByZW5hbWUoIi9wbGF5ZXJzL3dpemFyZC9vYmouYyIsICIvcGxheWVycy93aXphcmQvbmV3b2JqLmMiKTsKKworU0lFSEUgQVVDSAorICAgICAgICBjb3B5X2ZpbGUoRSksIG1rZGlyKEUpLCBybWRpcihFKSwgcm0oRSkKZGlmZiAtLWdpdCBhL2RvYy9lZnVuL3JlbmFtZV9vYmplY3QgYi9kb2MvZWZ1bi9yZW5hbWVfb2JqZWN0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjJkMzE2NzQKLS0tIC9kZXYvbnVsbAorKysgYi9kb2MvZWZ1bi9yZW5hbWVfb2JqZWN0CkBAIC0wLDAgKzEsMTAgQEAKK1NZTk9QU0lTOgorCXZvaWQgcmVuYW1lX29iamVjdCAob2JqZWN0IG9iLCBzdHJpbmcgbmV3X25hbWUpOworCitERVNDUklQVElPTjoKKwlHaXZlIHRoZSBjdXJyZW50IG9iamVjdCBhIG5ldyBvYmplY3RfbmFtZS4gQ2F1c2VzIGEgcHJpdmlsZWdlCisJdmlvbGF0aW9uLiBUaGUgbmV3IG5hbWUgbXVzdCBub3QgY29udGFpbiBhICMgY2hhcmFjdGVyLCBleGNlcHQKKwlhdCB0aGUgZW5kLCB0byBhdm9pZCBjb25mdXNpb24gd2l0aCBjbG9uZSBudW1iZXJzLgorCitTRUUgQUxTTzoKKwljcmVhdG9yKEUpLCBvYmplY3RfbmFtZShFKQpkaWZmIC0tZ2l0IGEvZG9jL2VmdW4vcmVwbGFjZV9wcm9ncmFtIGIvZG9jL2VmdW4vcmVwbGFjZV9wcm9ncmFtCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjQ4MTJkNGUKLS0tIC9kZXYvbnVsbAorKysgYi9kb2MvZWZ1bi9yZXBsYWNlX3Byb2dyYW0KQEAgLTAsMCArMSw1MiBAQAorU1lOT1BTSVMKKyAgICAgICAgdm9pZCByZXBsYWNlX3Byb2dyYW0oKTsKKyAgICAgICAgdm9pZCByZXBsYWNlX3Byb2dyYW0oc3RyaW5nIHByb2dyYW0pOworCitCRVNDSFJFSUJVTkcKKyAgICAgICAgRXJzZXR6dCBlaW4gUHJvZ3JhbW0gbWl0IGRlbSBnZWVyYnRlbiBQcm9ncmFtbSAoaW5oZXJpdCkgPHByb2dyYW0+LgorICAgICAgICBEYXMgQXJndW1lbnQgPHByb2dyYW0+IGthbm4gd2VnZ2VsYXNzZW4gd2VyZGVuLCB3ZW5uIG51ciBlaW4gUHJvZ3JhbW0KKyAgICAgICAgZ2VlcmJ0IHdpcmQuIEluIGRpZXNlbSBGYWxsIHdhZWhsdCBkZXIgVHJlaWJlciBhdXRvbWF0aXNjaCBkaWVzZXMgZWluZQorICAgICAgICBnZWVyYnRlIFByb2dyYW1tLgorCisgICAgICAgIERpZXNlIEVmdW4gaXN0IG51ZXR6bGljaCwgd2VubiBlcyB1bSBMZWlzdHVuZyB1bmQgU3BlaWNoZXJ2ZXJicmF1Y2gKKyAgICAgICAgZGVzIFRyZWliZXJzIGdlaHQuIEVpbiBQcm9ncmFtbSwgd2VsY2hlcyBrZWluZSB6dXNhZXR6bGljaGVuIFZhcmlhYmxlbgorICAgICAgICBvZGVyIEZ1bmt0aW9uZW4gYnJhdWNodCAoYXVzc2VyIHdhZWhyZW5kIGRlciBFcnN0ZWxsdW5nKSwga2FubgorICAgICAgICByZXBsYWNlX3Byb2dyYW0oKSBhdWZydWZlbiwgdW0gZGllIFRyZWZmZXJxdW90ZSBkZXMgVHJlaWJlcnMgYXVmIGRlbgorICAgICAgICBGdW5rdGlvbmVuLUNhY2hlcyB6dSBlcmhvZWhlbi4gRGllcyB2ZXJyaW5nZXJ0IGRpZSBBbnphaGwgUHJvZ3JhbW1lCisgICAgICAgIGltIFN5c3RlbS4KKworICAgICAgICBSYWV1bWUgc2luZCBlaW4gZ3V0ZXMgQmVpc3BpZWwgZnVlciBkaWUgQW53ZW5kdW5nIGRpZXNlciBGdW5rdGlvbiwgZGEKKyAgICAgICAgdmllbGUgUmFldW1lIG51ciBhdXMgZWluZW0gSW5oZXJpdCB1bmQgZWluZXIgS29uZmlndXJhdGlvbnNmdW5rdGlvbgorICAgICAgICBiZXN0ZWhlbi4gSmVkZXMgT2JqZWt0IGthbm4gcmVwbGFjZV9wcm9ncmFtKCkgYXVmcnVmZW4sIHZlcmxpZXJ0IGRhYmVpCisgICAgICAgIGplZG9jaCBhbGxlIFZhcmlhYmxlbiB1bmQgRnVua3Rpb25lbiwgZGllIG5pY2h0IGltIGdlZXJidGVuIFByb2dyYW1tCisgICAgICAgIGRlZmluaWVydCBzaW5kLgorCisgICAgICAgIFdlbm4gcmVwbGFjZV9wcm9ncmFtKCkgYW5nZXdlbmRldCB3aXJkLCB3ZXJkZW4gU2hhZG93cyB2b20gT2JqZWt0CisgICAgICAgIGVudGZlcm50LCBpbiBkZW0gcmVwbGFjZV9wcm9ncmFtKCkgc3RhdHRmaW5kZXQuIERpZXMgaXN0IHNvIHNlaXQKKyAgICAgICAgMy4yQDE2Ni4KKworICAgICAgICBFcyBpc3QgbmljaHQgbW9lZ2xpY2gsIHJlcGxhY2VfcHJvZ3JhbSgpIGF1Znp1cnVmZW4sIHdlbm4gZXMgYW4gZGFzCisgICAgICAgIE9iamVrdCBnZWJ1bmRlbmUgKExhbWJkYS0pIENsb3N1cmVzIGdpYnQuIEhpbmdlZ2VuIGlzdCBlcyBtb2VnbGljaCwKKyAgICAgICAgenVlcnN0IGRhcyBQcm9ncmFtbSBkZXMgT2JqZWt0cyB6dSBlcnNldHplbiB1bmQgZGFubiBMYW1iZGFjbG9zdXJlcworICAgICAgICBkYXJhbiB6dSBiaW5kZW4uCisKKyAgICAgICAgRGFzIEVyc2V0emVuIGRlcyBQcm9ncmFtbXMgZmluZGV0IGVyc3Qgc3RhdHQsIHdlbm4gZGFzIE9iamVrdAorICAgICAgICB2b2xsc3RhZW5kaWcgYWJnZWFyYmVpdGV0IHd1cmRlLCBuaWNodCBzY2hvbiBiZWltIEF1ZnJ1ZiBkZXIgRnVua3Rpb24KKyAgICAgICAgcmVwbGFjZV9wcm9ncmFtKCkuIERhcyBrYW5uIGRhenUgZnVlaHJlbiwgZGFzcyBDbG9zdXJlcyBhdWYgaW56d2lzY2hlbgorICAgICAgICB2ZXJzY2h3dW5kZW5lIExmdW5zIGRlcyBPYmpla3RzIHJlZmVyZW56aWVyZW4uIERhcyBzdGVsbHQgYWxsZXJkaW5ncworICAgICAgICBrZWluIFByb2JsZW0gZGFyLCBzb2xhbmdlIGRpZXNlIFJlZmVyZW56ZW4gbmljaHQgYXVzZ2VmdWVocnQgd2VyZGVuLgorCitCRU1FUktVTkdFTgorICAgICAgICBSYWV1bWUgYmVudXR6ZW4gcmVwbGFjZV9wcm9ncmFtIGF1dG9tYXRpc2NoLiBFcyBpc3QgbmljaHQgc2lubnZvbGwKKyAgICAgICAgb2RlciBub3R3ZW5kaWcsIHJlcGxhY2VfcHJvZ3JhbSBzZWxic3Qgb2huZSBLb25zdWx0YXRvbiBtaXQgZWluZW0KKyAgICAgICAgRXJ6bWFnaWVyIGVpbnp1c2V0emVuIQorCitCVUdTCisgICAgICAgIFdlbm4gZWluIGVyc2V0emVuZGVzIFByb2dyYW1tIHZpcnR1ZWxsIGdlZXJidGUgVmFyaWFibGVuIGVudGhhZWx0LAorICAgICAgICBtdXNzIGRpZXNlcyBQcm9ncmFtbSBhbHMgZXJzdGVzIGdlZXJidCB3ZXJkZW4uIE9obmUgZGllc2UKKyAgICAgICAgRWluc2NocmFlbmt1bmcgdWViZXJsZWJlbiBkaWUgZmFsc2NoZW4gVmFyaWFibGVuIGRlbgorICAgICAgICBFcnNldHp1bmdzcHJvemVzcy4KKworQUVOREVSVU5HRU4KKyAgICAgICAgTERNdWQgMy4yLjkgbGllc3MgenUsIGRhc3MgZGFzIEFyZ3VtZW50IDxwcm9ncmFtPiB3ZWdnZWxhc3NlbiB3aXJkLAorICAgICAgICB3ZW5uIG51ciBlaW4gSW5oZXJpdCBleGlzdGllcnQuCmRpZmYgLS1naXQgYS9kb2MvZWZ1bi9yZXN0b3JlX29iamVjdCBiL2RvYy9lZnVuL3Jlc3RvcmVfb2JqZWN0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmZhOTkxZDYKLS0tIC9kZXYvbnVsbAorKysgYi9kb2MvZWZ1bi9yZXN0b3JlX29iamVjdApAQCAtMCwwICsxLDQ1IEBACitTWU5PUFNJUworICAgICAgICBpbnQgcmVzdG9yZV9vYmplY3Qoc3RyaW5nIG5hbWUpOworICAgICAgICBpbnQgcmVzdG9yZV9vYmplY3Qoc3RyaW5nIHN0cik7ICAgICAoVk9STEFFVUZJRykKKworQkVTQ0hSRUlCVU5HCisgICAgICAgIExhZWR0IFdlcnRlIHZvbiBWYXJpYWJsZW4gZnVlciBkYXMgYWt0dWVsbGUgT2JqZWt0IGF1cyBkZXIgRGF0ZWkKKyAgICAgICAgPG5hbWU+IG9kZXIgZGlyZWt0IGF1cyBkZW0gU3RyaW5nIDxzdHI+LgorCisgICAgICAgIFVtIGRpcmVrdCBhdXMgZWluZW0gU3RyaW5nIFZhcmlhYmxlbiBsYWRlbiB6dSBrb2VubmVuLCBtdXNzIGRpZXNlcgorICAgICAgICBtaXQgZGVyIHR5cGlzY2hlbiBaZWlsZSAiI3g6eSIgYmVnaW5uZW4uIFN0cmluZ3MsIGRpZSB2b24gZGVyIEVmdW4KKyAgICAgICAgc2F2ZV9vYmplY3QoKSBlcnpldWd0IHd1cmRlbiwgYmVnaW5uZW4gc28uCisKKyAgICAgICAgV2VubiBWYXJpYWJsZW4gYXVzIGVpbmVyIERhdGVpIGdlbGFkZW4gd2VyZGVuLCBrYW5uIDxuYW1lPiBtaXQgLmMKKyAgICAgICAgZW5kZW4uIERpZXNlIERhdGVpZW5kdW5nIHdpcmQgdm9tIFRyZWliZXIgZW50ZmVybnQuIERhcyBNYXN0ZXJvYmpla3QKKyAgICAgICAgZnVlZ3QgZGVtIERhdGVpbmFtZW4gZWluIC5vIGhpbnp1LiBEaWUgR3VlbHRpZ2tlaXQgZGVzIERhdGVpbmFtZW5zCisgICAgICAgIHdpcmQgbWl0IGRlciBGdW5rdGlvbiBjaGVja192YWxpZF9wYXRoKCkgYXV0b21hdGlzY2ggdWViZXJwcnVlZnQuCisKKyAgICAgICAgRGllIEZ1bmt0aW9uIGdpYnQgMSB6dXJ1ZWNrLCB3ZW5uIGRpZSBWYXJpYWJsZW4gZXJmb2xncmVpY2ggZ2VsYWRlbgorICAgICAgICB3dXJkZW4gdW5kIDAsIHdlbm4gZXMgbmljaHRzIHp1IGxhZGVuIGdhYi4KKworICAgICAgICBWYXJpYWJsZW4gbWl0IGRlbSBUeXBlbnZlcm1lcmsgbm9zYXZlIHdlcmRlbiBuaWNodCBnZWxhZGVuLCB6dW0KKyAgICAgICAgQmVpc3BpZWwgbm9zYXZlIGludCB4eHg7CisKKyAgICAgICAgQ2xvc3VyZXMgYXVzIExmdW5zLCBWYXJpYWJsbmUgdW5kIHNpbXVsX2VmdW5zIHdlcmRlbiBudXIgZ2VsYWRlbiwKKyAgICAgICAgd2VubiBzaWUgZ2VmdW5kZW4gd2VyZGVuLiBGYWxscyBuaWNodCwgd2VyZGVuIHNpZSBtaXQgZGVtIFdlcnQgJzAnCisgICAgICAgIGdlbGFkZW4uCisKKyAgICAgICAgV2VubiBWZXJlcmJ1bmcgdmVyd2VuZGV0IHdpcmQsIGthbm4gZXMgdm9ya29tbWVuLCBkYXNzIG1laHJlcmUKKyAgICAgICAgVmFyaWFibGVuIG1pdCBkZW0gZ2xlaWNoZW4gTmFtZW4gYW4gdW50ZXJzY2hpZWRsaWNoZW4gT3J0ZW4gdm9ya29tbWVuCisgICAgICAgIHVuZCBkZXNoYWxiIGluIGRlciBTcGVpY2hlcmRhdGVpIG1laHJtYWxzIGF1ZnRyZXRlbi4gQmVpbSBMYWRlbiBkZXIKKyAgICAgICAgVmFyaWFibGVuIHdlcmRlbiBzaWUgaW4gUmVpaGVuZm9sZ2UgaWhyZXMgQXVmdHJldGVucyBpbSBWZXJlcmJ1bmdzYmF1bQorICAgICAgICBnZWxhZGVuLiBFaW4gZ2VlaWduZXRlcyBWb3JnZWhlbiBpc3QgZGllIFZlcndlbmR1bmcgdm9uIFZlcmJvc2UgdW5kCisgICAgICAgIGVpbnppZ2FydGlnZW4gTmFtZW4gYmVpIG5pY2h0LXN0YXRpc2NoZW4gVmFyaWFibGVuLiBTbyB3aXJkIGF1Y2ggZGFzCisgICAgICAgIG1hbnVlbGxlIExlc2VuIG9kZXIgRWRpdGllcmVuIGRlcyBTYXZlZmlsZXMgZWluZmFjaGVyLgorCitBRU5ERVJVTkdFTgorICAgICAgICBEYXMgZGlyZWt0ZSBMYWRlbiBhdXMgZWluZW0gU3RyaW5nIHd1cmRlIGluIExETXVkIDMuMi44IGVpbmdlZnVlaHJ0LAorICAgICAgICAgICAgd2lyZCBhYmVyIG1vZWdsaWNoZXJ3ZWlzZSBpbiBadWt1bmZ0IGluIGVpbmUgc2VwYXJhdGUgRWZ1bgorICAgICAgICAgICAgYXVzZ2VsYWdlcnQuCisgICAgICAgIExETXVkIDMuMi45IGVyZ2Flbnp0ZSBkaWUgRnVua3Rpb24gdW0gZGllIE1vZWdsaWNoa2VpdCwKKyAgICAgICAgICAgIE5vbkxhbWJkYS1DbG9zdXJlcywgU3ltYm9sZSB1bmQgZ2VxdW90ZXRlIEFycmF5cyB6dSBsYWRlbiwKKyAgICAgICAgICAgIGluZGVtIGVpbiBuZXVlcyBGb3JtYXQgZnVlciBkYXMgU2F2ZWZpbGUgdmVyd2VuZGV0IHdpcmQuCisKK1NJRUhFIEFVQ0gKKyAgICAgICAgc2F2ZV9vYmplY3QoRSksIHJlc3RvcmVfdmFsdWUoRSksIHZhbGlkX3JlYWQoTSkKZGlmZiAtLWdpdCBhL2RvYy9lZnVuL3Jlc3RvcmVfdmFsdWUgYi9kb2MvZWZ1bi9yZXN0b3JlX3ZhbHVlCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmZhNDRiMTgKLS0tIC9kZXYvbnVsbAorKysgYi9kb2MvZWZ1bi9yZXN0b3JlX3ZhbHVlCkBAIC0wLDAgKzEsMTcgQEAKK1NZTk9QU0lTCisgICAgICAgIG1peGVkIHJlc3RvcmVfdmFsdWUoc3RyaW5nIHN0cik7CisKK0JFU0NIUkVJQlVORworICAgICAgICBXYW5kZWx0IGRpZSBTdHJpbmctRW50c3ByZWNodW5nIDxzdHI+IGVpbmVzIFdlcnRlcyB6dXJ1ZWNrIGluIGRlbiBXZXJ0CisgICAgICAgIHNlbGJzdCB1bmQgZ2lidCBkaWVzZW4gV2VydCB6dXJ1ZWNrLiA8c3RyPiBpc3QgZWluIFN0cmluZywgd2llIGVyIHZvbgorICAgICAgICBzYXZlX3ZhbHVlKCkgZXJ6ZXVndCB3aXJkLiBEaWUgU3BlemlmaWthdGlvbiBkZXMgU3BlaWNoZXJmb3JtYXRlcworICAgICAgICAnI3g6eScgaXN0IG9wdGlvbmFsLgorCitBRU5ERVJVTkdFTgorICAgICAgICBFaW5nZWZ1ZWhydCBpbiBMRE11ZCAzLjIuOC4KKyAgICAgICAgTWl0IExETXVkIDMuMi45IGthbSBkYXMgTGFkZW4gdm9uIE5vbi1MYW1iZGEgQ2xvc3VyZXMsIFN5bWJvbGVuIHVuZAorICAgICAgICBnZXF1b3RldGVuIEFycmF5cyBoaW56dSwgd296dSBlaW4gbmV1ZXMgRm9ybWF0IGZ1ZXIgZGllIFNwZWljaGVyZGF0ZWkKKyAgICAgICAgdmVyd2VuZGV0IHdpcmQuCisKK1NJRUhFIEFVQ0gKKyAgICAgICAgc2F2ZV92YWx1ZShFKSwgcmVzdG9yZV9vYmplY3QoRSksIHNhdmVfb2JqZWN0KEUpCmRpZmYgLS1naXQgYS9kb2MvZWZ1bi9yZXZlcnNlIGIvZG9jL2VmdW4vcmV2ZXJzZQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi45MGM3ODkwCi0tLSAvZGV2L251bGwKKysrIGIvZG9jL2VmdW4vcmV2ZXJzZQpAQCAtMCwwICsxLDMxIEBACitTWU5PUFNJUworICAgICAgICBpbnRpICAgIHJldmVyc2UgKGludCBhcmcpCisgICAgICAgIHN0cmluZyAgcmV2ZXJzZSAoc3RyaW5nIGFyZykKKyAgICAgICAgbWl4ZWQgKiByZXZlcnNlIChtaXhlZCAqIGFyZykKKyAgICAgICAgbWl4ZWQgKiByZXZlcnNlIChtaXhlZCAqICYgYXJnKQorCitERVNDUklQVElPTgorICAgICAgICBLZWhydCBkaWUgUmVpaGVuZm9sZ2UgZGVzIEluaGFsdGVzIHZvbiBBcnJheSBvZGVyIFN0cmluZyA8YXJnPgorICAgICAgICB1bSB1bmQgbGllZmVydCBkZW4gbmV1ZW4gV2VydCBhbHMgUmVzdWx0YXQuCisgICAgICAgIElzdCA8YXJnPiBlaW5lIFphaGwsIHdpcmQgZGllIFJlaWhlbmZvbGdlIGRlciBCaXRzIGluIDxhcmc+IHVtZ2VrZWhydC4KKworICAgICAgICBXZW5uIGluIGRlciBSZWZlcmVuei1WYXJpYW50ZSB2ZXJ3ZW5kZXQsIHdpcmQgZGFzIEFyZ3VtZW50YXJyYXkgc2VsYmVyCisgICAgICAgIGludmVydGllcnQgdW5kIGF1Y2ggenVydWVja2dlZ2ViZW4uCisKK0VYQU1QTEVTCisgICAgICAgIHJldmVyc2UgKDB4MzA2YSkgLSByZXR1cm4gMHg1NjBjMDAwMAorCisgICAgICAgIHJldmVyc2UgKCJ0ZXN0IikgLSByZXR1cm4gInRzZXQiCisKKyAgICAgICAgbWl4ZWQgKiBhID0gKHsgMSwgMiB9KTsKKyAgICAgICAgcmV2ZXJzZShhKSAgLSByZXR1cm5zICh7IDIsIDEgfSksIGEgaXN0IHVudmVyYWVuZGVydC4KKyAgICAgICAgcmV2ZXJzZSgmYSkgLSByZXR1cm5zICh7IDIsIDEgfSksIGEgaXN0IG51biAoeyAyLCAxIH0pCisKK0JVR1MKKyAgICAgICAgUmVmZXJlbnotVGVpbGFycmF5cyB3aWUgcmV2ZXJzZSgmKGFbMS4uMl0pKSBzaW5kIG5pY2h0IHVudGVyc3R1ZXR6dC4KKworR0VTQ0hJQ0hURQorICAgICAgICBFaW5nZWZ1ZWhydCBpbiBMRE11ZCAzLjMuNTI5LgorICAgICAgICBMRE11ZCAzLjMuNTMyIGZ1ZWd0ZSBkaWUgQml0dW1rZWhyIHZvbiBaYWhsZW4gZWluLgorCitTRUUgQUxTTwpkaWZmIC0tZ2l0IGEvZG9jL2VmdW4vcm0gYi9kb2MvZWZ1bi9ybQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5kMWI1OWUzCi0tLSAvZGV2L251bGwKKysrIGIvZG9jL2VmdW4vcm0KQEAgLTAsMCArMSw5IEBACitTWU5PUFNJUworICAgICAgICBpbnQgcm0oc3RyaW5nIGZpbGUpOworCitCRVNDSFJFSUJVTkcKKyAgICAgICAgTG9lc2NodCBkaWUgRGF0ZWkgPGZpbGU+LiBHaWJ0IDAgenVydWVjaywgd2VubiBldHdhcyBuaWNodCBnZWtsYXBwdAorICAgICAgICBoYXQsIDEgYmVpIEVyZm9sZy4KKworU0lFSEUgQVVDSAorICAgICAgICBta2RpcihFKSwgcm1kaXIoRSksIHJlbmFtZShFKQpkaWZmIC0tZ2l0IGEvZG9jL2VmdW4vcm1kaXIgYi9kb2MvZWZ1bi9ybWRpcgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4xOWFmMzI5Ci0tLSAvZGV2L251bGwKKysrIGIvZG9jL2VmdW4vcm1kaXIKQEAgLTAsMCArMSw4IEBACitTWU5PUFNJUworICAgICAgICBpbnQgcm1kaXIoc3RyaW5nIGRpcik7CisKK0JFU0NIUkVJQlVORworICAgICAgICBMb2VzY2h0IGRhcyBWZXJ6ZWljaG5pcyA8ZGlyPi4gTGllZmVydCAxIGJlaSBFcmZvbGcsIDAgYmVpIE1pc3NlcmZvbGcuCisKK1NJRUhFIEFVQ0gKKyAgICAgICAgbWtkaXIoRSksIHJtKEUpLCByZW5hbWUoRSkKZGlmZiAtLWdpdCBhL2RvYy9lZnVuL3JtZW1iZXIgYi9kb2MvZWZ1bi9ybWVtYmVyCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmRjMTk2MmMKLS0tIC9kZXYvbnVsbAorKysgYi9kb2MvZWZ1bi9ybWVtYmVyCkBAIC0wLDAgKzEsMjAgQEAKK1NZTk9QU0lTCisgICAgICAgIGludCBybWVtYmVyKG1peGVkICphcnJheSwgbWl4ZWQgZWxlbSBbLCBpbnQgc3RhcnRdKTsKKyAgICAgICAgaW50IHJtZW1iZXIoc3RyaW5nIHN0ciwgaW50IGVsZW0gWywgaW50IHN0YXJ0XSk7CisKK0JFU0NIUkVJQlVORworICAgICAgICBMaWVmZXJ0IGZ1ZXIgQXJyYXlzIHVuZCBTdHJpbmdzIGRlbiBJbmRleCBkZXMgbGV0enRlbiBBdWZ0cmV0ZW5zIGRlcworICAgICAgICBBcmd1bWVudHMgPGVsZW0+IGltIEFycmF5IDwqYXJyYXk+ICBiencuIGltIFN0cmluZyA8c3RyPi4gV2VubiA8ZWxlbT4KKyAgICAgICAgbmljaHQgZ2VmdW5kZW4gd2lyZCwgbGllZmVydCBkaWUgRnVua3Rpb24gLTEgenVydWVjay4KKworICAgICAgICBJc3QgPHN0YXJ0PiBhbHMgWmFobCA+PSAwIGdlZ2ViZW4sIGJlZ2lubnQgZGllIFN1Y2hlIGFiIGRlcgorICAgICAgICBhbmdlZ2ViZW5lbiBQb3NpdGlvbi4gRWluZSBTdGFydHBvc2l0aW9uIGdyb2Vzc2VyIGFscyBkaWUKKyAgICAgICAgTGFlbmdlIGRlcyBTdHJpbmdzL0FycmF5cyBsaWVmZXJ0IHN0ZXRzIGRhcyBSZXN1bHRhdCAtMS4KKworCitBRU5ERVJVTkdFTgorICAgICAgICBFaW5nZWZ1ZWhydCBpbiBMRE11ZCAzLjIuMTAuCisgICAgICAgIExETXVkIDMuMy41NTYgZnVlZ3RlIGRlbiA8c3RhcnQ+LVBhcmFtZXRlciBoaW56dS4KKworU0lFSEUgQVVDSAorICAgICAgICBtZW1iZXIoRSkKZGlmZiAtLWdpdCBhL2RvYy9lZnVuL3J1c2FnZSBiL2RvYy9lZnVuL3J1c2FnZQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44ZGMyNTIzCi0tLSAvZGV2L251bGwKKysrIGIvZG9jL2VmdW4vcnVzYWdlCkBAIC0wLDAgKzEsMTggQEAKK09QVElPTkFMCitTWU5PUFNJUworICAgICAgICBpbnQgKnJ1c2FnZSgpOworCitCRVNDSFJFSUJVTkcKKyAgICAgICAgTGllZmVydCBlaW4gQXJyYXkgbWl0IEluZm9ybWF0aW9uZW4gdWViZXIgZGVuIG1vbWVudGFuZW4KKyAgICAgICAgU3lzdGVtenVzdGFuZDsgQmVudXR6dW5nc3N0YXRpc3Rpa2VuLCB3aWUgc2llIHZvbSBVbml4LUtvbW1hbmRvCisgICAgICAgIGdldHJ1c2FnZSgyKSBnZW5lcmllcnQgd2VyZGVuLCBuYW1lbnRsaWNoOgorICAgICAgICAgICAgdXRpbWUsIHN0aW1lLCBtYXhyc3MsIHJ1cy5ydV9peHJzcywgcnVzLnJ1X2lkcnNzLCBydXMucnVfaXNyc3MsCisgICAgICAgICAgICBydXMucnVfbWluZmx0LCBydXMucnVfbWFqZmx0LCBydXMucnVfbnN3YXAsIHJ1cy5ydV9pbmJsb2NrLAorICAgICAgICAgICAgcnVzLnJ1X291YmxvY2ssIHJ1cy5ydV9tc2dzbmQsIHJ1cy5ydV9tc2dyY3YsIHJ1cy5ydV9uc2lnbmFscywKKyAgICAgICAgICAgIHJ1cy5ydV9udmNzdywgcnVzLnJ1X25pdmNzdworCitBTk1FUktVTkcKKyAgICBEaWVzZSBGdW5rdGlvbiBpc3Qgb3B0aW9uYWwuCisKK1NJRUhFIEFVQ0gKKyAgICAgICAgc3lzL3Jlc291cmNlLmgoVW5peCkKZGlmZiAtLWdpdCBhL2RvYy9lZnVuL3NhdmVfb2JqZWN0IGIvZG9jL2VmdW4vc2F2ZV9vYmplY3QKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNjgxOTQ2YgotLS0gL2Rldi9udWxsCisrKyBiL2RvYy9lZnVuL3NhdmVfb2JqZWN0CkBAIC0wLDAgKzEsNTQgQEAKK1NZTk9QU0lTCisgICAgICAgIGludCBzYXZlX29iamVjdChzdHJpbmcgbmFtZSBbLCBpbnQgZm9ybWF0XSk7CisgICAgICAgIHN0cmluZyBzYXZlX29iamVjdChbaW50IGZvcm1hdF0pOworCitCRVNDSFJFSUJVTkcKKyAgICAgICAgQ29kaWVydCBkaWUgc3BlaWNoZXJiYXJlbiAocy51LikgVmFyaWFibGVuIGRlcyBha3R1ZWxsZW4gT2JqZWt0cyBpbgorICAgICAgICBlaW5lbiBTdHJpbmcuCisKKyAgICAgICAgSW4gZGVyIGVyc3RlbiBGb3JtIHdpciBkZXIgU3RyaW5nIGluIGRpZSBEYXRlaSA8bmFtZT4gZ2VzY2hyaWViZW4uIEVpbmUKKyAgICAgICAgRW5kdW5nICIuYyIgaW4gPG5hbWU+IHdpcmQgZW50ZmVybnQsIGRhZnVlciBrYW5uIGVpbmUgRW5kdW5nICIubyIKKyAgICAgICAgZHVyY2ggZGFzIE1hc3Rlcm9iamVrdCBhbmdlZnVlZ3Qgd2VyZGVuLCB3YWVocmVuZCBkZXIgVWViZXJwcnVlZnVuZworICAgICAgICBkdXJjaCB2YWxpZF9yZWFkKCkuIERpZSBFZnVuIHNhdmVfb2JqZWN0KCkgbGllZmVydCAwLCB3ZW5uIGRpZQorICAgICAgICBTcGVpY2hlcmRhdGVpIGVyZm9sZ3JlaWNoIGVyc3RlbGx0IHd1cmRlLCBzb25zdCBlaW5lIFphaGwgdW5nbGVpY2ggMCwKKyAgICAgICAgd2VubiBlaW4gbmljaHQgc2Nod2Vyd2llZ2VuZGVlIEZlaGxlciBhdWZnZXRyZXRlbiBpc3QgKGRpZSBEYXRlaQorICAgICAgICBrb25udGUgbmljaHQgZ2VzY2hyaWViZW4gd2VyZGVuIG9kZXIgZGFzIGFrdHVlbGxlIE9iamVrdCB3dXJkZQorICAgICAgICBpbnp3aXNjaGVuIHplcnN0b2VydCkuCisKKyAgICAgICAgSW4gZGVyIHp3ZWl0ZW4gRm9ybSB3aXJkIGRlciBTdHJpbmcgZGlyZWt0IHp1cnVlY2sgZ2VnZWJlbi4gV2VubiBkYXMKKyAgICAgICAgT2JqZWt0IHplcnN0b2VydCB3dXJkZSwgd2lyZCAwIHp1cnVlY2sgZ2VnZWJlbi4gSW4gYmVpZGVuIEZhZWxsZW4ga2FubgorICAgICAgICBkdXJjaCBkYXMgb3B0aW9uYWxlIEFyZ3VtZW50IDxmb3JtYXQ+IGRhcyBGb3JtYXQgZGVyIFNwZWljaGVyZGF0ZWkKKyAgICAgICAgYW5nZWdlYmVuIHdlcmRlbjoKKworICAgICAgICAgICAgLTE6IGRhcyBub3JtYWxlIEZvcm1hdCBkZXMgVHJlaWJlcnMgKFN0YW5kYXJkKQorICAgICAgICAgICAgIDA6IGRhcyBPcmlnaW5hbGZvcm1hdCBuYWNoIEFteWxhYXIncyBMUE11ZCB1bmQgTERNdWQgPD0zLjIuOAorICAgICAgICAgICAgIDE6IExETXVkID49IDMuMi45OiBOb24tTGFtYmRhIENsb3N1cmVzLCBTeW1ib2xlIHVuZCBnZXF1b3RldGUKKyAgICAgICAgICAgICAgICBBcnJheXMga29lbm5lbiBnZXNwZWljaGVydCB3ZXJkZW4KKworICAgICAgICBFaW5lIFZhcmlhYmxlIHdpcmQgYWxzICdzcGVpY2hlcmJhcicgYmV0cmFjaHRldCwgd2VubiBzaWUgbmljaHQgYWxzCisgICAgICAgICdub3NhdmUnIG9kZXIgJ3N0YXRpYycgZGVrbGFyaWVydCBpc3QuCisKKyAgICAgICAgQml0dGUgYmVhY2h0ZW4sIGRhc3MgZGllc2UgZWZ1biBpbSBNRyBkdXJjaCBlaW5lIFNlZnVuIHVlYmVyc2NocmllYmVuCisgICAgICAgIHdpcmQgdW5kIGRlcmVuIE1hbnBhZ2UgYXVjaCBsZXNlbiEKKworQkVNRVJLVU5HRU46CisgICAgICAgIERhbWl0IGVpbiBPYmpla3QgaW4gVmVyemVpY2huaXNzZSBkZXIgUmVnaW9uL2RlcyBNYWdpZXJzIHNjaHJlaWJlbgorICAgICAgICBrYW5uLCBtdXNzIGVzIGVudHNwcmVjaGVuZGUgUmVjaHRlLCBhbHNvIGVpbmUgZ3VlbHRpZ2UgRVVJRAorICAgICAgICBiZXNpdHplbi4gSW0gY3JlYXRlKCkgc29sbHRlIGRhaGVyIGVpbjoKKworICAgICAgICBzZXRldWlkKGdldHVpZCh0aGlzX29iamVjdCgpKSk7CisKKyAgICAgICAgc3RlaGVuLgorCitBRU5ERVJVTkdFTgorICAgICAgICBTZWl0IExETXVkIDMuMi44IGxpZWZlcnQgc2F2ZV9vYmplY3QoKSBlaW5lbiBmaXhlbiBXZXJ0IGJlaSBFcmZvbGcuCisgICAgICAgIERhcyBkaXJla3RlIEFic3BlaWNoZXJuIGluIGVpbmVuIFN0cmluZyB3dXJkZSBpbiBMRE11ZCAzLjIuOAorICAgICAgICAgICAgZWluZ2VmdWVocnQsIHdpcmQgYWJlciBpbiBadWt1bmZ0IGV2ZW50dWVsbCBpbiBlaW5lIHNlcGFyYXRlIEVmdW4KKyAgICAgICAgICAgIHVtZ2V6b2dlbi4KKyAgICAgICAgTERNdWQgMy4yLjkgZXJnYWVuenRlIGRpZSBGdW5rdGlvbiB1bSBkYXMgU3BlaWNoZXJuIHZvbiBOb24tTGFtYmRhCisgICAgICAgICAgICBDbG9zdXJlcywgU3ltYm9sZW4gdW5kIGdlcXVvdGV0ZW4gQXJyYXlzLiBEYXp1IHd1cmRlIGVpbiBuZXVlcworICAgICAgICAgICAgRm9ybWF0IGZ1ZXIgZGllIFNwZWljaGVyZGF0ZWkgZWluZ2VmdWVocnQuCisgICAgICAgIExETXVkIDMuMi4xMCBmdWVocnRlIGRhcyBBcmd1bWVudCA8Zm9ybWF0PiBlaW4uCisKK1NJRUhFIEFVQ0gKKyAgICAgICAgcmVzdG9yZV9vYmplY3QoRSksIHNhdmVfdmFsdWUoRSksIHNhdmVfb2JqZWN0IChTZWZ1bikKZGlmZiAtLWdpdCBhL2RvYy9lZnVuL3NhdmVfdmFsdWUgYi9kb2MvZWZ1bi9zYXZlX3ZhbHVlCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmQ5ZTE0ODYKLS0tIC9kZXYvbnVsbAorKysgYi9kb2MvZWZ1bi9zYXZlX3ZhbHVlCkBAIC0wLDAgKzEsMzEgQEAKK1NZTk9QU0lTCisgICAgICAgIHN0cmluZyBzYXZlX3ZhbHVlKG1peGVkIHdlcnQgWywgaW50IGZvcm1hdF0pOworCitCRVNDSFJFSUJVTkcKKyAgICAgICAgU2NocmVpYnQgPHdlcnQ+IGluIGVpbmVuIFN0cmluZywgZGVyIHNpY2ggbWl0IHJlc3RvcmVfdmFsdWUoKQorICAgICAgICBhdXN3ZXJ0ZW4gbGFlc3N0LiBEZXIgU3RyaW5nIHdpcmQgenVydWVjayBnZWdlYmVuLgorCisgICAgICAgIERhcyBvcHRpb25hbGUgQXJndW1lbnQgPGZvcm1hdD4gYmVzdGltbXQgZGFzIEZvcm1hdCBkZXMgU3RyaW5nczoKKworICAgICAgICAgICAgLTE6IGRhcyBub3JtYWxlIEZvcm1hdCBkZXMgVHJlaWJlcnMgKFN0YW5kYXJkKQorICAgICAgICAgICAgIDA6IGRhcyBPcmlnaW5hbGZvcm1hdCBuYWNoIEFteWxhYXIncyBMUE11ZCB1bmQgTERNdWQgPD0zLjIuOAorICAgICAgICAgICAgIDE6IExETXVkID49IDMuMi45OiBOb24tTGFtYmRhIENsb3N1cmVzLCBTeW1ib2xlIHVuZCBnZXF1b3RldGUKKyAgICAgICAgICAgICAgICBBcnJheXMga29lbm5lbiBnZXNwZWljaGVydCB3ZXJkZW4KKworICAgICAgICBEZXIgZXJ6ZXVndGUgU3RyaW5nIGJlc3RlaHQgYXVzIHp3ZWkgWmVpbGVuLCBkaWUgamV3ZWlscyBtaXQgZWluZW0KKyAgICAgICAgWmVpbGVudW1icnVjaCBlbmRlbi4gRGllIGVyc3RlIFplaWxlIGJlc2NocmVpYnQgZGFzIEZvcm1hdCwgaW4gZGVtIGRlcgorICAgICAgICBXZXJ0IGdlc3BlaWNoZXJ0IHdpcmQsIGluIGRlciAnI3g6eSctU2NocmVpYndlaXNlLiBEaWUgendlaXRlIFplaWxlCisgICAgICAgIHN0ZWxsdCBkZW4gZWlnZW50bGljaGVuIFdlcnQgZGEuCisKKyAgICAgICAgRGFzIEZvcm1hdCB6dW0gU2NocmVpYmVuIGRlcyBXZXJ0ZXMgaW4gZGVuIFN0cmluZyBlbnRzcHJpY2h0IGRlbSB2b24KKyAgICAgICAgc2F2ZV9vYmplY3QoKSB1bmQgcmVzdG9yZV9vYmplY3QoKSB2ZXJ3ZW5kZXRlbiBGb3JtYXQuCisKK0FFTkRFUlVOR0VOCisgICAgICAgIEVpbmdlZnVlaHJ0IGluIExETXVkIDMuMi44LgorICAgICAgICBMRE11ZCAzLjIuOS4gZXJnYWVuenRlIGRpZSBGdW5rdGlvbiB1bSBkaWUgTW9lZ2xpY2hrZWl0LCBOb24tTGFtYmRhCisgICAgICAgICAgICBDbG9zdXJlcywgU3ltYm9sZSB1bmQgZ2VxdW90ZXRlIEFycmF5cyB6dSBzcGVpY2hlcm4uIERhenUgd3VyZGUKKyAgICAgICAgICAgIGVpbiBuZXVlcyBGb3JtYXQgZnVlciBkZW4gU3RyaW5nIGVpbmdlZnVlaHJ0LgorICAgICAgICBMRE11ZCAzLjIuMTAgZnVlaHJ0ZSBkYXMgQXJndW1lbnQgPGZvcm1hdD4gZWluLgorCitTSUVIRSBBVUNICisgICAgICAgIHJlc3RvcmVfdmFsdWUoRSksIHJlc3RvcmVfb2JqZWN0KEUpLCBzYXZlX29iamVjdChFKQpkaWZmIC0tZ2l0IGEvZG9jL2VmdW4vc2F5IGIvZG9jL2VmdW4vc2F5Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjZmMDk1OGYKLS0tIC9kZXYvbnVsbAorKysgYi9kb2MvZWZ1bi9zYXkKQEAgLTAsMCArMSw5OCBAQAorU1lOT1BTSVMKKyAgICAgICAgdm9pZCBzYXkoc3RyaW5nIHN0cik7CisgICAgICAgIHZvaWQgc2F5KHN0cmluZyBzdHIsIG9iamVjdCBleGNsdWRlKTsKKyAgICAgICAgdm9pZCBzYXkoc3RyaW5nIHN0ciwgb2JqZWN0ICpleGNsdWRlcyk7CisKKyAgICAgICAgdm9pZCBzYXkobWl4ZWQgKnxtYXBwaW5nfHN0cnVjdHxvYmplY3QgbXNnKTsKKyAgICAgICAgdm9pZCBzYXkobWl4ZWQgKnxtYXBwaW5nfHN0cnVjdHxvYmplY3QgbXNnLCBvYmplY3QgZXhjbHVkZSk7CisgICAgICAgIHZvaWQgc2F5KG1peGVkICp8bWFwcGluZ3xzdHJ1Y3R8b2JqZWN0IG1zZywgb2JqZWN0ICpleGNsdWRlcyk7CisKK0JFU0NIUkVJQlVORworICAgICAgICBFcyBiZXN0ZWhlbiB6d2VpIEhhdXB0YW53ZW5kdW5nZW4gZnVlciBzYXkoKToKKworICAgICAgICBXZW5uIGRhcyBlcnN0ZSBBcmd1bWVudCBlaW4gU3RyaW5nIDxzdHI+IGlzdCwgd2lyZCBlciBhbiBhbGxlCisgICAgICAgIGxlYmVuZGlnZW4gT2JqZWt0ZSBpbSBha3R1ZWxsZW4gUmF1bSBnZXNlbmRldCwgYXVzc2VyIHp1bSBPYmpla3QsCisgICAgICAgIGRhcyBkaWUgRnVua3Rpb24gYXVmZ2VydWZlbiBoYXQuCisKKyAgICAgICAgSXN0IGRpZSBOYWNocmljaHQgZWluIFN0cmluZywgd2lyZCBkZXIgVGV4dCBhbiBpbnRlcmFrdGl2ZSBPYmpla3RlCisgICAgICAgIGRpcmVrdCBhdXNnZWdlYmVuLCBmdWVyIGFuZGVyZSBPYmpla3RlIHdpcmQgZGllIGxmdW4gY2F0Y2hfdGVsbCgpCisgICAgICAgIGluIGRpZXNlbiBhdWZnZXJ1ZmVuLgorICAgICAgICBGYWxscyBlaW4gTGV3ZWJlc2VuIGRpZSBGdW5rdGlvbiBjYXRjaF90ZWxsKCkgZGVmaW5pZXJ0ICgtPiBzaGFkb3cpLAorICAgICAgICBzbyB3aXJkIGRlciBUZXh0IGhpZXIgYXVzZ2V3ZXJ0ZXQgdW5kIG5pY2h0IGFuIGRlbiBVc2VyIGF1c2dlZ2ViZW4uCisKKyAgICAgICAgV2VubiBkYXMgendlaXRlIEFyZ3VtZW50LCBkaWUgTmFjaHJpY2h0LCBrZWluIFN0cmluZyBpc3QsIHdpcmQgaW4KKyAgICAgICAgYWxsZW4gTGViZXdlc2VuLCBkaWUgZGVuIFRleHQgZXJoYWx0ZW4sIGNhdGNoX21zZygpIGFuc3RhdHQKKyAgICAgICAgY2F0Y2hfdGVsbCgpIGF1ZmdlcnVmZW4uCisKKyAgICAgICAgTWl0IGRlbSBBcnJheSA8KmV4Y2x1ZGU+IGthbm4gbWFuIHZlcmhpbmRlcm4sIGRhc3MgZGllIE5hY2hyaWNodCBhbgorICAgICAgICBkaWUgZGFyaW4gZW50aGFsdGVuZW4gT2JqZWt0ZSBnZXNlbmRldCB3aXJkLiBEZXIgU2VuZGVyIG11c3MgbmljaHQKKyAgICAgICAgbm9jaCBlaW5tYWwgYXVmZ2VmdWVocnQgd2VyZGVuLgorICAgICAgICBEYXMgaXN0IHNpbm52b2xsLCB3ZW5uIHpCIGVpbmUgU3BpZWxlcmdydXBwZSBBdXNsb2VzZXIgZWluZXIgTWVsZHVuZworICAgICAgICBpc3QgdW5kIGRpZXNlIHNlbGJzdCBuaWNodCBlcmhhbHRlbiBzb2xsLgorCisgICAgICAgIERhcyBhdWZydWZlbmRlIE9iamVrdCB3aXJkIG5hY2ggZm9sZ2VuZGVuIFJlZ2VsbiBiZXN0aW1tdDoKKyAgICAgICAgICAtIFdlbm4gc2F5KCkgYXVzIGVpbmVtIGxlYmVuZGlnZW4gT2JqZWt0IGF1ZmdlcnVmZW4gd2lyZCwgZ2lsdAorICAgICAgICAgICAgZGllc2VzIGFscyBkYXMgYXVmcnVmZW5kZSBPYmpla3QuCisgICAgICAgICAgLSBXZW5uIHNheSgpIGF1cyBlaW5lbSBuaWNodC1sZWJlbmRpZ2VuIE9iamVrdCBhbHMgUmVzdWx0YXQgZWluZXIKKyAgICAgICAgICAgIEhhbmRsdW5nIGVpbmVzIEJlbnV0emVycyBhdWZnZXJ1ZmVuIHdpcmQgKGRhcyBoZWlzc3QsCisgICAgICAgICAgICB0aGlzX3BsYXllcigpIGlzdCBndWVsdGlnKSwgZ2lsdCB0aGlzX3BsYXllcigpIGFscyBhdWZydWZlbmRlcworICAgICAgICAgICAgT2JqZWt0LgorICAgICAgICAgIC0gSW4gYWxsZW4gYW5kZXJlbiBGYWVsbGVuIChBdWZydWYgYXVzIHJlc2V0IHpCKSBnaWx0IGRhcyBPYmpla3QsCisgICAgICAgICAgICBkYXMgc2F5KCkgYXVmZ2VydWZlbiBoYXQsIGFscyBhdWZydWZlbmRlcyBPYmpla3QuCisKK0JFTUVSS1VOR0VOCisgICAgICAgIC0gZnVlciBsYWVuZ2VyZSBNZWxkdW5nZW4gc29sbHRlIGJyZWFrX3N0cmluZygpIHZlcndlbmRldCB3ZXJkZW4KKyAgICAgICAgLSB3aXJkIGluIGVpbmVtIGNhdGNoX21zZygpIGRlciBXZXJ0IHZvbiA8bXNnPiB2ZXJhZW5kZXJ0LCBlcmhhbHRlbgorICAgICAgICAgIGFsbGUgbmFjaGZvbGdlbmRlbiBPYmpla3RlIGRhcyB2ZXJhZW5kZXJ0ZSA8bXNnPiAoUmVmZXJlbnohKQorCisgICAgICAgIC0gc2F5KDxzdHI+KSBpc3QgdmVyaGFsdGVuc2dsZWljaCB6dQorICAgICAgICAgIHRlbGxfcm9vbShlbnZpcm9ubWVudCgpLCA8c3RyPiwgKHt0aGlzX3BsYXllcigpfHx0aGlzX29iamVjdCgpfSkpCisKK0JFSVNQSUVMRQorICAgICAgICAvLyBGb2xnZW5kZSBBdWZydWZlIHNpbmQgZ2xlaWNoLCB3ZW5uIHNpZSBkdXJjaCBlaW4gU3BpZWxlcmtvbW1hbmRvCisgICAgICAgIC8vIGluIGVpbmVtIG5pY2h0IGxlYmVuZGlnZW4gT2JqZWt0IGF1ZmdlbG9lc3Qgd2VyZGVuOgorCisgICAgICAgICAgICBzYXkoIkhpIVxuIik7CisgICAgICAgICAgICBzYXkoIkhpIVxuIiwgdGhpc19wbGF5ZXIoKSk7CisKKyAgICAgICAgLy8gRGFzIGZvbGdlbmRlIEJlaXNwaWVsIHplaWd0LCB3aWUgc2F5KCkgenVzYW1tZW4gbWl0IGNhdGNoX3RlbGwoKQorICAgICAgICAvLyBmdW5rdGlvbmllcnQuIERhcyB6d2VpdGUgT2JqZWt0IGRhcmYgbmljaHQgbGViZW5kaWcgc2VpbiwgZGFtaXQKKyAgICAgICAgLy8gd3JpdGUoKSBhbiBkZW4gYWt0dWVsbGVuIEJlbnV0emVyIGdlaHQuCisKKyAgICAgICAgT2JqZWt0IDEgKGxpdmluZyk6CisgICAgICAgICAgICB2b2lkIGNhdGNoX3RlbGwoc3RyaW5nIHN0cikgeworICAgICAgICAgICAgICAgIHdyaXRlKCJFbXBmYW5nZW46ICIrc3RyKyJcbiIpOworICAgICAgICAgICAgfQorCisgICAgICAgIE9iamVrdCAyIChuaWNodCBsaXZpbmcpOgorICAgICAgICAgICAgdm9pZCBmdW5jKCkgeworICAgICAgICAgICAgICAgIC4uLgorICAgICAgICAgICAgICAgIHNheSgiSGlIbyFcbiIpOworICAgICAgICAgICAgICAgIC4uLgorICAgICAgICAgICAgfQorCisgICAgICAgIC8vIEVpbiBldHdhcyBrb21wbGV4ZXJlcyBCZWlzcGllbCB6ZWlndCBkYXMgWnVzYW1tZW5zcGllbCB2b24gc2F5KCkKKyAgICAgICAgLy8gdW5kIGNhdGNoX21zZygpLiBBdWNoIGhpZXIgd2lyZCBlaW4gbmljaHQtbGViZW5kaWdlcyBPYmpla3QKKyAgICAgICAgLy8gdmVyd2VuZGV0LCBkYXMgZGllIE5hY2hyaWNodCBhdXNnaWJ0LCBzb2Rhc3MgZGFzICd3ZXInIGluCisgICAgICAgIC8vIGNhdGNoX21zZygpIGF1ZiBkZW4gYWt0dWVsbGVuIEJlbnV0emVyIHplaWd0LgorCisgICAgICAgIE9iamVjdCAxIChsaXZpbmcpOgorICAgICAgICAgICAgdm9pZCBjYXRjaF9tc2cobWl4ZWQgKmFyciwgb2JqZWN0IHdobykgeworICAgICAgICAgICAgICAgIGZvcmVhY2gobWl4ZWQgZWxlbWVudDogYXJyKQorICAgICAgICAgICAgICAgICAgICB0ZWxsX29iamVjdCh3aG8sIHNwcmludGYoIiVPXG4iLCBlbGVtZW50KSk7CisgICAgICAgICAgICB9CisKKyAgICAgICAgT2JqZWN0IDIgKG5pY2h0IGxpdmluZyk6CisgICAgICAgICAgICB2b2lkIGZ1bmMoKSB7CisgICAgICAgICAgICAgICAgLi4uCisgICAgICAgICAgICAgICAgc2F5KCAoeyAiSGVsbG8iLCAidGhlcmUhIiB9KSApOworICAgICAgICAgICAgICAgIC4uLgorICAgICAgICAgICAgfQorCitTSUVIRSBBVUNICisgICAgICAgIEFlaG5saWNoOiAgIHRlbGxfcm9vbShFKSwgd3JpdGUoRSksIHNob3V0KEUpLCB0ZWxsX29iamVjdChFKSwKKyAgICAgICAgICAgICAgICAgICAgcHJpbnRmKEUpCisgICAgICAgIFZlcndhbmR0OiAgIGNhdGNoX3RlbGwoRSksIGNhdGNoX21zZyhBKQorICAgICAgICBTb25zdGlnZXM6ICBvYmplY3RfbmFtZShFKQorCis3LkF1ZyAyMDA3IEdsb2luc29uClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZG9jL2VmdW4vc2VuZF9lcnEgYi9kb2MvZWZ1bi9zZW5kX2VycQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5kMzUyMWUxCi0tLSAvZGV2L251bGwKKysrIGIvZG9jL2VmdW4vc2VuZF9lcnEKQEAgLTAsMCArMSwyNCBAQAorR0VTQ0hVRVRaVAorU1lOT1BTSVMKKyAgICAgICAgaW50IHNlbmRfZXJxKGludCByZXF1ZXN0LCBzdHJpbmd8aW50ICpkYXRhLCBjbG9zdXJlIGNhbGxiYWNrKTsKKworQkVTQ0hSRUlCVU5HCisgICAgICAgIEVpbmUgQW5mcmFnZSB2b20gVHlwIDxyZXF1ZXN0PiAoc3RhbmRhcmRtYWVzc2lnIDApIHdpcmQgbWl0IEluaGFsdAorICAgICAgICA8ZGF0YT4gd29yZCBhbiBkZW4gRVJRIGdlc2FuZHQuIFdlbm4gPGNhbGxiYWNrPiBhbmdlZ2ViZW4gaXN0LAorICAgICAgICB3aXJkIGRpZXNlIENsb3N1cmUgYXVmZ2VydWZlbiwgd2VubiBlaW5lIEFudHdvcnQgdm9tIEVSUSBlaW50cmlmZnQKKyAgICAgICAgKGVpbiBTdGF0dXMgQ29kZSksIHZvcmF1c2dlc2V0enQgZGllIEFudHdvcnQgZW50aGFlbHQgYXVzcmVpY2hlbmQKKyAgICAgICAgRGF0ZW4sIHVtIGRhbWl0IHp1IGFyYmVpdGVuOgorCisgICAgICAgICAgICB2b2lkIDxjbG9zdXJlPihpbnQgKnJlc3BvbnNlX2RhdGEsIGludCBsZW4pOworCisgICAgICAgIDxkYXRhPiBrYW5uIGVudHdlZGVyIGVpbiBTdHJpbmcgb2RlciBlaW4gQXJyYXkgdm9uIEludGVnZXJzIHNlaW4sCisgICAgICAgIHdvYmVpIGltIHp3ZWl0ZW4gRmFsbCBkaWUgWmFobGVuIGFscyBaZWljaGVuIGludGVycHJldGllcnQgd2VyZGVuLgorICAgICAgICBEaWUgdW50ZXJzY2hpZWRsaWNoZW4gQW5mcmFnZW4gc2luZCBpbiAvc3lzL2VycS5oIGRlZmluaWVydC4KKworICAgICAgICBEaWUgRnVua3Rpb24gbGllZmVydCAwIHp1cnVlY2ssIHdlbm4gZGFzIFNlbmRlbiBmZWhsZ2VzY2hsYWdlbiBpc3QsCisgICAgICAgIGV0d2FzIGFuZGVyZXMgc29zdC4KKworICAgICAgICBEaWUgRnVua3Rpb24gdmVydXJzYWNodCBlaW5lIFNjaHV0enZlcmxldHp1bmcgImVycSIuCisKK1NJRUhFIEFVQ0gKKyAgICAgICAgYXR0YWNoX2VycV9kZW1vbihFKSwgZXJxKEMpCmRpZmYgLS1naXQgYS9kb2MvZWZ1bi9zZW5kX3VkcCBiL2RvYy9lZnVuL3NlbmRfdWRwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjhhZDBjMzMKLS0tIC9kZXYvbnVsbAorKysgYi9kb2MvZWZ1bi9zZW5kX3VkcApAQCAtMCwwICsxLDEyIEBACitTWU5PUFNJUzoKKwlpbnQgc2VuZF91ZHAoc3RyaW5nIGhvc3QsIGludCBwb3J0LCBzdHJpbmcgbWVzc2FnZSkKKworREVTQ1JJUFRJT046CisJU2VuZHMgVGhlIG1lc3NhZ2UgaW4gYW4gVURQIHBhY2tldCB0byB0aGUgZ2l2ZW4gaG9zdCBhbmQgcG9ydAorCW51bWJlci4gQ2F1c2VzIGEgcHJpdmlsZWdlIHZpb2xhdGlvbi4KKwlSZXR1cm5zIDEgb24gc3VjY2VzcywgMCBvbiBmYWlsdXJlLgorCitTRUUgQUxTTzoKKwlyZWNlaXZlX3VkcChNKQorCisyOS4xMC4yMDA2IFplc3N0cmEKZGlmZiAtLWdpdCBhL2RvYy9lZnVuL3NldF9hdXRvX2luY2x1ZGVfc3RyaW5nIGIvZG9jL2VmdW4vc2V0X2F1dG9faW5jbHVkZV9zdHJpbmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMjQ3ZTUwZAotLS0gL2Rldi9udWxsCisrKyBiL2RvYy9lZnVuL3NldF9hdXRvX2luY2x1ZGVfc3RyaW5nCkBAIC0wLDAgKzEsMTkgQEAKK0RFUFJFQ0FURUQKK1NZTk9QU0lTOgorCXZvaWQgc2V0X2F1dG9faW5jbHVkZV9zdHJpbmcoc3RyaW5nIGFyZykKKworREVTQ1JJUFRJT046CisKKwlUaGUgYXJnIHdpbGwgYmUgYXV0b21hdGljYWxseSBpbmNsdWRlZCBpbnRvIGV2ZXJ5IGNvbXBpbGVkIExQQworCW9iamVjdC4gVGhpcyBpcyB1c2VmdWwgdG8gZW5mb3JjZSBnbG9iYWwgZGVmaW5pdGlvbnMsIGUuZy4KKwlgYCNwcmFnbWEgY29tYmluZV9zdHJpbmdzJycgb3IgYGAjcHJhZ21hIHN0cmljdF90eXBlcycnLiAgVGhlCisJY2FsbGluZyBvYmplY3RuZWVkcyB0byBiZSBwcml2aWxlZ2VkIGJ5IHRoZSBtYXN0ZXIgb2JqZWN0LgorCitOT1RFOgorICBOb3QgYXZhaWxhYmxlIGluIExETXVkIDMuMy54CisgIFBsZWFzZSB1c2UgdGhlIGRyaXZlciBob29rIEhfQVVUT19JTkNMVURFIGluIExETXVkID4gMy4yLjkKKworU0VFIEFMU086CisJcHJpdmlsZWdlX3Zpb2xhdGlvbihNKSwgcHJhZ21hKExQQykKKyAgCisyOS4xMC4yMDA2IFplc3N0cmEKZGlmZiAtLWdpdCBhL2RvYy9lZnVuL3NldF9iaXQgYi9kb2MvZWZ1bi9zZXRfYml0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjg0N2M2YjUKLS0tIC9kZXYvbnVsbAorKysgYi9kb2MvZWZ1bi9zZXRfYml0CkBAIC0wLDAgKzEsMzAgQEAKK1NZTk9QU0lTCisgICAgICAgIHN0cmluZyBzZXRfYml0KHN0cmluZyBzdHIsIGludCBuKTsKKworQkVTQ0hSRUlCVU5HCisgICAgICAgIExpZWZlcnQgZWluZW4gbmV1ZW4gU3RyaW5nLCBiZWkgZGVtIGRhcyBCaXQgPG4+IGluIDxzdHI+IGdlc2V0enQKKyAgICAgICAgaXN0LiBEYWJlaSB3aXJkIGRlciB1cnNwcnVlbmdsaWNoZSBTdHJpbmcgPHN0cj4gbmljaHQgdmVyYWVuZGVydC4KKworICAgICAgICBKZWRlcyBaZWljaGVuIGVudGhhZWx0IDYgQml0cy4gSW4gamVkZW0gWmVpY2hlbiBrYW5uIGRlc2hhbGIgZWluZQorICAgICAgICBaYWhsIHZvbiAwIGJpcyA2MyBnZXNwZWljaGVydCB3ZXJkZSAoMl42PTY0KS4gRGFzIGVyc3RlIFplaWNoZW4KKyAgICAgICAgaXN0IGRlciBMZWVyc2NobGFnICIgIiBtaXQgZGVtIFdlcnQgMC4gRGFzIGVyc3RlIFplaWNoZW4gaW0gU3RyaW5nCisgICAgICAgIGlzdCBqZW5lcyBtaXQgZGVuIG5pZWRyaWdzdGVuIEJpdHMgKDAtNSkuCisKKyAgICAgICAgRGVyIG5ldWUgU3RyaW5nIHdpcmQgYXV0b21hdGlzY2ggdmVybGFlbmdlcnQsIGZhbGxzIG5vZXRpZy4KKworQkVJU1BJRUwKKyAgICAgICAgc3RyaW5nIHM7CisgICAgICAgIHM9c2V0X2JpdCgiPyIsNSk7CisKKyAgICAgICAgV2VpbCAiPyIgZWluZW4gV2VydCB2b24gMzEgaGF0LCBpc3QgZGFzIDYuIEJpdCBuaWNodCBnZXNldHp0LiBXaXJkCisgICAgICAgIGVzIGdlc2V0enQsIHNvIGVyZ2lidCBzaWNoICJfIi4gRGVyIFN0cmluZyBzIGVudGhhZWx0IG51biBhbHNvICJfIi4KKworICAgICAgICBzdHJpbmcgczsKKyAgICAgICAgcz1zZXRfYml0KCI3OCIsMyk7CisgICAgICAgIHM9c2V0X2JpdChzLDgpOworCisgICAgICAgIHMgZW50aGFlbHQgbnVuICI/PCIuCisKK1NJRUhFIEFVQ0gKKyAgICAgICAgY2xlYXJfYml0KEUpLCBsYXN0X2JpdChFKSwgbmV4dF9iaXQoRSksIHRlc3RfYml0KEUpLCBjb3VudF9iaXRzKEUpLAorICAgICAgICBhbmRfYml0cyhFKSwgb3JfYml0cyhFKSwgeG9yX2JpdHMoRSksIGludmVydF9iaXRzKEUpLCBjb3B5X2JpdHMoRSkKZGlmZiAtLWdpdCBhL2RvYy9lZnVuL3NldF9kcml2ZXJfaG9vayBiL2RvYy9lZnVuL3NldF9kcml2ZXJfaG9vawpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41NDg5MTIwCi0tLSAvZGV2L251bGwKKysrIGIvZG9jL2VmdW4vc2V0X2RyaXZlcl9ob29rCkBAIC0wLDAgKzEsOTggQEAKK1NZTk9QU0lTCisgICAgICAgIHZvaWQgc2V0X2RyaXZlcl9ob29rKGludCB3aGF0LCBjbG9zdXJlIGFyZykKKyAgICAgICAgdm9pZCBzZXRfZHJpdmVyX2hvb2soaW50IHdoYXQsIHN0cmluZyBhcmcpCisgICAgICAgIHZvaWQgc2V0X2RyaXZlcl9ob29rKGludCB3aGF0LCBzdHJpbmcgKiBhcmcpCisKK0RFU0NSSVBUSU9OCisgICAgICAgIFRoaXMgcHJpdmlsZWdlZCBlZnVuIHNldHMgdGhlIGRyaXZlciBob29rICd3aGF0JyAodmFsdWVzIGFyZQorICAgICAgICBkZWZpbmVkIGluIC9zeXMvZHJpdmVyX2hvb2suaCkgdG8gJ2FyZycuCisgICAgICAgIFRoZSBleGFjdCBtZWFuaW5ncyBhbmQgdHlwZXMgb2YgJ2FyZycgZGVwZW5kIG9mIHRoZSBob29rIHNldC4KKyAgICAgICAgVG8gcmVtb3ZlIGEgaG9vaywgc2V0ICdhcmcnIHRvIDAuCisKKyAgICAgICAgVGhlc2UgaG9va3MgZXhpc3Q6CisKKyAgICAgICAgSF9NT1ZFX09CSkVDVDAKKyAgICAgICAgSF9NT1ZFX09CSkVDVDEKKyAgICAgICAgICBhcmc6IHVuYm91bmQgbGFtYmRhCisgICAgICAgICAgTWFuZGF0b3J5IGhvb2tzIGltcGxlbWVudGluZyB0aGUgbW92ZV9vYmplY3QoKSBlZnVuLgorCisgICAgICAgIEhfTE9BRF9VSURTCisgICAgICAgIEhfQ0xPTkVfVUlEUworICAgICAgICAgIGFyZzogdW5ib3VuZCBsYW1iZGEgb3IgbGZ1biBjbG9zdXJlCisgICAgICAgICAgTWFuZGF0b3J5IGhvb2tzIHRvIGRldGVybWluZSB0aGUgKGUpdWlkIG9mIG5ldyBvYmplY3RzLgorCisgICAgICAgIEhfQ1JFQVRFX1NVUEVSCisgICAgICAgIEhfQ1JFQVRFX09CCisgICAgICAgIEhfQ1JFQVRFX0NMT05FCisgICAgICAgIEhfUkVTRVQKKyAgICAgICAgSF9DTEVBTl9VUAorICAgICAgICAgIGFyZzogbGFtYmRhIGNsb3N1cmUgKEhfQ0xFQU5fVVAgYWxzbyBhY2NlcHRzIGEgbGZ1bgorICAgICAgICAgICAgY2xvc3VyZSksIGZ1bmN0aW9uIG5hbWUuCisgICAgICAgICAgT3B0aW9uYWwgaG9va3MgZm9yIGNyZWF0aW9uL3Jlc2V0L2NsZWFuIHVwLWFjdGlvbnMuCisKKyAgICAgICAgSF9ERUZBVUxUX01FVEhPRAorICAgICAgICAgIGFyZzogbGFtYmRhIGNsb3N1cmUsIGxmdW4gY2xvc3VyZSwgZnVuY3Rpb24gbmFtZS4KKyAgICAgICAgICBPcHRpb25hbCBob29rIGZvciBkZWZhdWx0IG1ldGhvZCBpbXBsZW1lbnRhdGlvbi4KKworICAgICAgICBIX0RFRkFVTFRfUFJPTVBUCisgICAgICAgICAgYXJnOiBsYW1iZGEgY2xvc3VyZSwgbGZ1biBjbG9zdXJlLCBwcm9tcHQgc3RyaW5nLgorICAgICAgICAgIE9wdGlvbmFsIGhvb2sgZm9yIHRoZSBkZWZhdWx0IGNvbW1hbmQgcHJvbXB0LgorCisgICAgICAgIEhfUFJJTlRfUFJPTVBUCisgICAgICAgICAgYXJnOiBsYW1iZGEgY2xvc3VyZSwgbGZ1biBjbG9zdXJlLCBmdW5jdGlvbiBuYW1lLgorICAgICAgICAgIE9wdGlvbmFsIGhvb2sgdG8gcHJpbnQgdGhlIGNvbW1hbmQgcHJvbXB0LgorCisgICAgICAgIEhfTU9ESUZZX0NPTU1BTkQKKyAgICAgICAgICBhcmc6IGxhbWJkYSBjbG9zdXJlLCBsZnVuIGNsb3N1cmUsIGZ1bmN0aW9uIG5hbWUsIG1hcHBpbmcKKyAgICAgICAgICBPcHRpb25hbCBob29rIGZvciBtb2RpZnlpbmcgcGxheWVyIGNvbW1hbmRzIGJlZm9yZSB0aGUKKyAgICAgICAgICBwYXJzZXIgc2VlcyB0aGVtLgorCisgICAgICAgIEhfTk9USUZZX0ZBSUwKKyAgICAgICAgICBhcmc6IGxhbWJkYSBjbG9zdXJlLCBsZnVuIGNsb3N1cmUsIHN0cmluZy4KKyAgICAgICAgICBNYW5kYXRvcnkgaG9vayB0byBnZW5lcmF0ZSB0aGUgZGVmYXVsdCBtZXNzYWdlIGlmIGFuIGVudGVyZWQKKyAgICAgICAgICBjb21tYW5kIGNvdWxkbid0IGJlIHBhcnNlZCBhbmQgbm8gbm90aWZ5X2ZhaWwoKSBjb21tYW5kIGlzCisgICAgICAgICAgaW4gZWZmZWN0LgorCisgICAgICAgIEhfU0VORF9OT1RJRllfRkFJTAorICAgICAgICAgIGFyZzogbGFtYmRhIGNsb3N1cmUsIGxmdW4gY2xvc3VyZSwgc3RyaW5nLgorICAgICAgICAgIE9wdGlvbmFsIGhvb2sgdG8gZGVsaXZlciB0aGUgbm90aWZ5IGZhaWwgbWVzc2FnZSBmcm9tIGEgZmFpbGVkCisgICAgICAgICAgY29tbWFuZC4KKworICAgICAgICBIX05PX0lQQ19TTE9UCisgICAgICAgICAgYXJnOiBzdHJpbmcuCisgICAgICAgICAgT3B0aW9uYWwgaG9vayBzcGVjaWZ5aW5nIHRoZSAnc29ycnknIG1lc3NhZ2VzIGlmIGxvZ2lucyBhcmUKKyAgICAgICAgICByZWplY3RlZCBkdWUgdG8gZnVsbG5lc3Mgb2YgdGhlIG11ZC4KKworICAgICAgICBIX0lOQ0xVREVfRElSUworICAgICAgICAgIGFyZzogbGFtYmRhIGNsb3N1cmUsIGxmdW4gY2xvc3VyZSwgc3RyaW5nIGFycmF5LgorICAgICAgICAgIFNlbWktbWFuZGF0b3J5IGhvb2sgc3BlY2lmeWluZyB0aGUgZGlyZWN0b3JpZXMgd2hlcmUgPD4tdHlwZQorICAgICAgICAgIGluY2x1ZGUgZmlsZXMgYXJlIHNlYXJjaGVkLgorCisgICAgICAgIEhfQVVUT19JTkNMVURFCisgICAgICAgICAgYXJnOiBsYW1iZGEgY2xvc3VyZSwgbGZ1biBjbG9zdXJlLCBzdHJpbmcKKyAgICAgICAgICBPcHRpb25hbCBob29rIHRvIHNwZWNpZnkgYSBzdHJpbmcgdG8gYmUgaW5jbHVkZWQgYmVmb3JlIHRoZQorICAgICAgICAgIHNvdXJjZSBvZiBldmVyeSBjb21waWxlZCBMUEMgb2JqZWN0LgorCisgICAgICAgIEhfVEVMTkVUX05FRworICAgICAgICAgIGFyZzogbGFtYmRhIGNsb3N1cmUsIGxmdW4gY2xvc3VyZSwgc3RyaW5nLgorICAgICAgICAgIE9wdGlvbmFsIGhvb2sgdG8gc3BlY2lmaXkgaG93IHRvIHBlcmZvcm0gYSBzaW5nbGUgdGVsbmV0CisgICAgICAgICAgbmVnb3RpYXRpb24uCisKKyAgICAgICAgSF9OT0VDSE8KKyAgICAgICAgICBhcmc6IGxhbWJkYSBjbG9zdXJlLCBsZnVuIGNsb3N1cmUsIHN0cmluZy4KKyAgICAgICAgICBPcHRpb25hbCBob29rIHRvIHNwZWNpZml5IGhvdyB0byBwZXJmb3JtIHRoZSB0ZWxuZXQgYWN0aW9ucworICAgICAgICAgIHRvIHN3aXRjaCB0aGUgZWNobyBtb2RlICh1c2VkIGZvciBlLmcuIHBhc3N3b3JkIGlucHV0X3RvKClzKS4KKworICAgICAgICBIX0VSUV9TVE9QCisgICAgICAgICAgYXJnOiBsYW1iZGEgY2xvc3VyZSwgbGZ1biBjbG9zdXJlLgorICAgICAgICAgIE9wdGlvbmFsIGhvb2sgdG8gbm90aWZ5IHRoZSBtdWRsaWIgYWJvdXQgdGhlIHRlcm1pbmF0aW9uIG9mCisgICAgICAgICAgdGhlIGVycSBkZW1vbi4KKworICAgICAgICBTZWUgaG9va3MoQykgZm9yIGEgZGV0YWlsZWQgZGlzY3Vzc2lvbi4KKworSElTVE9SWQorICAgICAgICBJbnRyb2R1Y2VkIGluIDMuMi4xQDEgYXMgZWZ1bjMwOSgpLCByZW5hbWVkIHRvCisgICAgICAgIHNldF9kcml2ZXJfaG9vaygpIGluIDMuMi4xQDEzCisKK1NFRSBBTFNPCisgICAgICAgIGhvb2tzKEMpCmRpZmYgLS1naXQgYS9kb2MvZWZ1bi9zZXRfZW52aXJvbm1lbnQgYi9kb2MvZWZ1bi9zZXRfZW52aXJvbm1lbnQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZmUzYTk2OQotLS0gL2Rldi9udWxsCisrKyBiL2RvYy9lZnVuL3NldF9lbnZpcm9ubWVudApAQCAtMCwwICsxLDIwIEBACitTWU5PUFNJUworCXZvaWQgc2V0X2Vudmlyb25tZW50KG9iamVjdCBpdGVtLCBvYmplY3QgZW52KQorCitERVNDUklQVElPTgorCVRoZSBpdGVtIGlzIG1vdmVkIGludG8gaXRzIG5ldyBlbnZpcm9ubWVudCBlbnYsIHdoaWNoIG1heSBiZSAwLgorCVRoaXMgZWZ1biBpcyB0byBiZSB1c2VkIGluIHRoZSBtb3ZlX29iamVjdCgpIGhvb2ssIGFzIGl0IGRvZXMKKwlub3RoaW5nIGVsc2UgdGhhbiBtb3ZpbmcgdGhlIGl0ZW0gLSBubyBjYWxscyB0byBpbml0KCkgb3Igc3VjaC4KKworCURvbid0IHVzZSBpdCBpbiB5b3VyIG93biBvYmplY3RzIQorCitISVNUT1JZCisgIEludHJvZHVjZWQgaW4gMy4yLjFAMSBhcyAnZWZ1bjMwOCgpJywgcmVuYW1lZCB0byAnc2V0X2Vudmlyb25tZW50KCknCisgICAgICAgICAgICAgICAgaW4gMy4yLjYgYW5kIExQICIwMy4wMi4xQDE1MCIuCisKK1NFRSBBTFNPCisJcmVtb3ZlKEEpLCBpbml0KEEpLCBtb3ZlX29iamVjdChFKSwgdHJhbnNmZXIoRSksIGhvb2tzKEMpLAorCW5hdGl2ZShDKQorCisyOS4xMC4yMDA2IFplc3N0cmEKKwpkaWZmIC0tZ2l0IGEvZG9jL2VmdW4vc2V0X2V4dHJhX3dpemluZm8gYi9kb2MvZWZ1bi9zZXRfZXh0cmFfd2l6aW5mbwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5mMDA5NWM5Ci0tLSAvZGV2L251bGwKKysrIGIvZG9jL2VmdW4vc2V0X2V4dHJhX3dpemluZm8KQEAgLTAsMCArMSwyMiBAQAorU1lOT1BTSVMKKyAgICAgICAgdm9pZCBzZXRfZXh0cmFfd2l6aW5mbyAob2JqZWN0IHdpeiwgbWl4ZWQgZXh0cmEpCisgICAgICAgIHZvaWQgc2V0X2V4dHJhX3dpemluZm8gKHN0cmluZyB3aXosIG1peGVkIGV4dHJhKQorICAgICAgICB2b2lkIHNldF9leHRyYV93aXppbmZvIChpbnQgICAgd2l6LCBtaXhlZCBleHRyYSkKKworREVTQ1JJUFRJT04KKyAgICAgICAgU2V0IHRoZSB2YWx1ZSA8ZXh0cmE+IGFzIHRoZSAnZXh0cmEnIGluZm9ybWF0aW9uIGZvciB0aGUgd2l6bGlzdAorICAgICAgICBlbnRyeSBvZiA8d2l6Pi4KKworICAgICAgICBJZiA8d2l6PiBpcyBhbiBvYmplY3QsIHRoZSBlbnRyeSBvZiBpdHMgY3JlYXRvciAodWlkKSBpcyB1c2VkLgorICAgICAgICBJZiA8d2l6PiBpcyBhIHN0cmluZyAoYSBjcmVhdG9yIGFrYSB1aWQpLCBpdCBuYW1lcyB0aGUgZW50cnkKKyAgICAgICAgdG8gdXNlLgorICAgICAgICBJZiA8d2l6PiBpcyB0aGUgbnVtYmVyIDAsIHRoZSBkYXRhIGlzIHNldCBpbiB0aGUgZGVmYXVsdCB3aXpsaXN0CisgICAgICAgIGVudHJ5LiBJdCBjYW4gYmUgdXNlZCB0byBzdG9yZSBkYXRhIGZvciB0aGUgbGlmZXRpbWUgb2YgdGhpcworICAgICAgICBkcml2ZXIgcnVuLCBsaWtlIHRoZSB0aW1lIG9mIHRoZSBsYXN0IHJlYm9vdC4KKworICAgICAgICBUaGUgPGV4dHJhPiBhcmd1bWVudCBtYXkgYmUgYW55IHZhbHVlLgorCisgICAgICAgIFRoZSBmdW5jdGlvbiBjYXVzZXMgYSBwcml2aWxlZ2UgdmlvbGF0aW9uLgorCitTRUUgQUxTTworICAgICAgICBnZXRfZXh0cmFfd2l6aW5mbyhFKSwgc2V0X2V4dHJhX3dpemluZm9fc2l6ZShFKSwgd2l6bGlzdF9pbmZvKEUpCmRpZmYgLS1naXQgYS9kb2MvZWZ1bi9zZXRfbmV4dF9yZXNldCBiL2RvYy9lZnVuL3NldF9uZXh0X3Jlc2V0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmM0Y2QzYjcKLS0tIC9kZXYvbnVsbAorKysgYi9kb2MvZWZ1bi9zZXRfbmV4dF9yZXNldApAQCAtMCwwICsxLDU1IEBACitGVU5LVElPTgorICAgICBpbnQgc2V0X25leHRfcmVzZXQoaW50IGRlbGF5KQorCitBUkdVTUVOVEUKKyAgICAgZGVsYXkgLSBtaW5pbWFsZSBaZWl0IGJpcyB6dW0gbmFlY2hzdGVuIFJlc2V0IGRlcyBPYmpla3RlcworCitCRVNDSFJFSUJVTkcKKyAgICAgTWl0IGRpZXNlciBlZnVuIGlzdCBlcyBtb2VnbGljaCBFaW5mbHVzcyBhdWYgZGFzIFJlc2V0dmVyaGFsdGVuIGRlcworICAgICBPYmpla3RlcyB6dSBuZWhtZW46CisKKyAgICAgRGFzIE9iamVrdCBiZWtvbW10IGVpbmVuIHJlc2V0KCktQXVmcnVmIGZydWVoZXN0ZW5zIGluIDxkZWxheT4gU2VrdW5kZW4uCisgICAgIEJlaSBBbmdhYmUgZWluZXMgV2VydGVzIDwwIHdpcmQgZGVyIHJlc2V0KCkgZvxyIGRhcyBPYmpla3QgYWJnZXNjaGFsdGV0LAorICAgICB3YXMgZnVlciBCbHVlcHJpbnRzIGdlbGVnZW50bGljaCBzaW5udm9sbCBpc3QuCisKKyAgICAgSW50ZXJuIHdpcmQgaW4gZ2xlaWNoYmxlaWJlbmRlbiBBYnN0YWVuZGVuIChkZXJ6ZWl0OiBpbiBkZXIgUmVnZWwgMnMsCisgICAgIGthbm4gc2ljaCBhYmVyIGF1Y2ggdmVyem9lZ2Vybiwgd2VubiBkZXIgRHJpdmVyIHZpZWwgenUgaGF0LCB6LkIuIGF1ZiAKKyAgICAgNHMpIGdlcHJ1ZWZ0IG9iIGRpZSBaZWl0IHp1bSB6dW0gbmFlY2hzdGVuIHJlc2V0KCkgYWJnZWxhdWZlbiBpc3QuIAorICAgICBTb2xsdGUgZGllcyBkZXIgRmFsbCBzZWluLCB3aXJkIGRpZSBGdW5rdGlvbiByZXNldCgpIGltIE9iamVrdCAKKyAgICAgYXVmZ2VydWZlbi4KKworICAgICBEaWUgRnVua3Rpb24gZ2lidCBkaWUgdmVyYmxlaWJlbmRlIFplaXQgYmlzIHp1bSBuYWVjaHN0ZW4gUmVzZXQKKyAgICAgenVydWVjaywgYmV2b3IgPGRlbGF5PiBnZXNldHp0IHd1cmRlLiBEZXIgV2VydCBrYW5uIGF1Y2ggbmVnYXRpdgorICAgICBzZWluLCB3ZW5uIGRlciBSZXNldCB1ZWJlcmZhZWxsaWcgd2FyLgorCisgICAgIEFjaHR1bmc6IGRpZSB0YXRzYWVjaGxpY2hlIFplaXQsIHdhbm4gZGVyIFJlc2V0IGltIE9iamVrdCBkdXJjaGdlZnVlaHJ0CisgICAgIHdpcmQsIGhhZW5ndCBhdWNoIGRhdm9uIGFiLCBvYiBkYXMgT2JqZWt0IG5hY2ggQWJsYXVmIHZvbiA8ZGVsYXk+CisgICAgIHZlcndlbmRldCB3aXJkLgorCitCRUlTUElFTEUKKyAgICAgLy8gZWluIE9iamVrdCBtaXQgdmVya3Vlcnp0ZXIgcmVzZXQoKS1aZWl0CisgICAgIHZvaWQgY3JlYXRlKCkgeworICAgICAgIC4uLgorICAgICAgIHNldF9uZXh0X3Jlc2V0KDE1KjYwKTsJLy8gfiAxNSBNaW51dGVuCisgICAgICAgLi4uCisgICAgIH0KKworICAgICB2b2lkIHJlc2V0KCkgeworICAgICAgIHNldF9uZXh0X3Jlc2V0KDkwMCk7CS8vIGRpZSBtdXNzIGltIHJlc2V0KCkgaW1tZXIgd2llZGVyCisgICAgICAgOjpyZXNldCgpOyAgICAgICAgICAgLy8gbmV1IGdlc2V0enQgd2VyZGVuCisgICAgIH0KKworICAgICAvLyBlaW4gT2JqZWt0LCBkZXNzZW4gQmx1ZXByaW50IGtlaW5lbiByZXNldCgpIGJla29tbWVuIHNvbGwKKyAgICAgdm9pZCBjcmVhdGUoKSB7CisgICAgICAgaWYoIWNsb25lcCh0aGlzX29iamVjdCgpKSkgeworICAgICAgICAgc2V0X25leHRfcmVzZXQoLTEpOworICAgICAgICAgcmV0dXJuOworICAgICAgIH0KKyAgICAgICA6OmNyZWF0ZSgpOworICAgICAgIC4uLgorICAgICB9CisKK1NJRUhFIEFVQ0gKKyAgICAgY2FsbF9vdXQoRSksIG9iamVjdF9pbmZvKEUpLCByZXNldChMKSwgcXVlcnlfbmV4dF9yZXNldChFKQorCis3LkF1ZyAyMDA3IEdsb2luc29uCmRpZmYgLS1naXQgYS9kb2MvZWZ1bi9zZXRfdGhpc19vYmplY3QgYi9kb2MvZWZ1bi9zZXRfdGhpc19vYmplY3QKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMmFmZGE1NgotLS0gL2Rldi9udWxsCisrKyBiL2RvYy9lZnVuL3NldF90aGlzX29iamVjdApAQCAtMCwwICsxLDYwIEBACitHRVNDSFVFVFpUCitTWU5PUFNJUworICAgICAgICB2b2lkIHNldF90aGlzX29iamVjdChvYmplY3Qgb2JqZWt0LWFuLXN0ZWxsZS12b24tb3JpZ2luYWxvYmpla3QpOworCitCRVNDSFJFSUJVTkcKKyAgICAgICAgRGllcyBpc3QgZWluZSBnZXNjaHVldHp0ZSBGdW5rdGlvbiwgZGllIG51ciB2b20gTWFzdGVyLU9iamVrdCB1bmQgaW0KKyAgICAgICAgU2ltdWwtRWZ1bi1PYmpla3QgZ2VudXR6dCB3ZXJkZW4gZGFyZi4gQmVpIHNvbnN0aWdlciBCZW51dHp1bmcKKyAgICAgICAgZXJ6ZXVndCBkaWVzZSBGdW5rdGlvbiBlaW5lbiBGZWhsZXIuCisKKyAgICAgICAgRGllIEZ1bmt0aW9uIGFlbmRlcnQgZGFzIFJlc3VsdGF0IHZvbiB0aGlzX29iamVjdCgpIGluIGRlciBsYXVmZW5kZW4KKyAgICAgICAgRnVua3Rpb24sIGViZW5zbyBkYXMgUmVzdWx0YXQgdm9uIHByZXZpb3VzX29iamVjdCgpIGluIEZ1bmt0aW9uZW4gaW4KKyAgICAgICAgYW5kZXJlbiBPYmpla3RlbiwgZGllIGVpbmVuIGNhbGxfb3RoZXIoKSBBdWZydWYgbWFjaGVuLgorCisgICAgICAgIERlciBFZmZla3Qgdm9uIHNldF90aGlzX29iamVjdCgpIGJsZWlidCBiZXN0ZWhlbiwgYmlzIGVpbiBleHRlcm5lcgorICAgICAgICBGdW5rdGlvbnNhdWZydWYgYWJnZXNjaGxvc3NlbiBpc3Qgb2RlciBiaXMgenUgZWluZW0gZXJuZXV0ZW4KKyAgICAgICAgc2V0X3RoaXNfb2JqZWN0KCkuIFdhZWhyZW5kIGRlciBBdXNmdWVocnVuZyB2b24gQ29kZSBpbSBNYXN0ZXItT2JqZWt0CisgICAgICAgIG9kZXIgaW0gU2ltdWwtRWZ1bi1PYmpla3QgaXN0IHNldF90aGlzX29iamVjdCgpIGdhcmFudGllcnQsIGF1Y2ggd2VubgorICAgICAgICB0aGlzX29iamVjdCgpIGR1cmNoIHNldF90aGlzX29iamVjdCgpIHZlcmFlbmRlcnQgd2lyZC4gRGllIGdpbHQKKyAgICAgICAgbmljaHQgZnVlciBGdW5rdGlvbmVuLCBkaWUgYXVzIGFuZGVyZW4gUHJvZ3JhbW1lbiBpbmhlcml0ZXQgd2VyZGVuLgorCisgICAgICAgIERpZXNlIEZ1bmt0aW9uIGRhcmYgbnVyIG1pdCBob2VjaHN0ZXIgU29yZ2ZhbHQgdmVyd2VuZGV0IHdlcmRlbiwgdW0KKyAgICAgICAgSW5rb25zaXN0ZW56ZW4genUgdmVybWVpZGVuLiBOYWNoIGVpbmVtIEF1ZnJ1ZiB2b24gc2V0X3RoaXNfb2JqZWN0KCkKKyAgICAgICAga29lbm5lbiBzaWNoIGdld2lzc2UgTFBDLUtvbnN0cnVrdGUgbWVya3d1ZXJkaWcgdmVyaGFsdGVuIG9kZXIgZ2FyCisgICAgICAgIGRhcyBTeXN0ZW0genVtIEFic3R1cnogYnJpbmdlbi4gSW5zYmVzb25kZXJlIGRpZSBWZXJ3ZW5kdW5nIHZvbgorICAgICAgICBnbG9iYWxlbiBWYXJpYWJsZW4gb2RlciBkZXIgQXVmcnVmIHZvbiBsb2thbGVuIEZ1bmt0aW9uZW4gKGF1c3NlcgorICAgICAgICBkdXJjaCBjYWxsX290aGVyKCkpIGlzdCB1bnp1bGFlc3NpZyB1bmQgd2lyZCBha3RpdiB2ZXJoaW5kZXJ0LgorCisgICAgICAgIEVybGF1YnQgc2luZCBjYWxsX290aGVyKCksIG1hcCgpLCBkZXIgWnVncmlmZiBhdWYgbG9rYWxlIFZhcmlhYmxlbgorICAgICAgICAoZGllIGF1Y2ggUG9pbnRlciBhdWYgZ2xvYmFsZSBBcnJheXMgZW50aGFsdGVuIGR1ZXJmZW4pLCBlaW5mYWNoZQorICAgICAgICBBcml0aG1ldGlrIHVuZCBkZXIgWnV3ZWlzdW5ncy1PcGVyYXRvci4KKworQlVHUworICAgICAgICBFcyBpc3QgbW9tZW50YW4gbmljaHQgbW9lZ2xpY2gsIGRhcyBvcmlnaW5hbGUgZ3VlbHRpZ2UgT2JqZWt0IHdpZWRlcgorICAgICAgICBoZXJ6dXN0ZWxsZW4uIEFuc3RlbGxlIHZvbjoKKworICAgICAgICAgICAgb2JqZWN0IGljaCA9IHRoaXNfb2JqZWN0KCk7CisgICAgICAgICAgICBzZXRfdGhpc19vYmplY3QoZGluZ3MpOworICAgICAgICAgICAgPGlyZ2VuZHdlbGNoZXIgQ29kZT4KKyAgICAgICAgICAgIHNldF90aGlzX29iamVjdChpY2gpOworICAgICAgICAgICAgPG1laHIgQ29kZT4KKworICAgICAgICBtdXNzIGRhcyB1ZWJlciBlaW5lbiBVbXdlZyBnZWxvZXN0IHdlcmRlbjoKKworICAgICAgICAgICAgcHJpdmF0ZSB2b2lkIHR1d2FzKG9iamVjdCBkaW5ncykKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICBzZXRfdGhpc19vYmplY3QoZGluZ3MpOworICAgICAgICAgICAgICAgIDxpcmdlbmR3ZWxjaGVyIGNvZGU+CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIGZ1bmNhbGwoIyd0dXdhcywgZGluZ3MpOworICAgICAgICAgICAgPG1laHIgQ29kZT4KKworICAgICAgICBNYW5jaGUgTGV1dGUgYmV6ZWljaG5lbiBkYXMgYWxzIEZlYXR1cmUuCisKK0FFTkRFUlVOR0VOCisgICAgICAgIExETXVkIDMuMi4xMCB2ZXJoaW5kZXJ0IGFrdGl2IGRpZSBSZWZlcmVueiBhdWYgZ2xvYmFsZSBWYXJpYWJsZW4gdW5kCisgICAgICAgICAgICBGdW5rdGlvbnNhdWZydWZlIG5hY2ggQWRyZXNzZSwgd2FlaHJlbiBzZXRfdGhpc19vYmplY3QoKSBnaWx0LgorCitTSUVIRSBBVUNICisgICAgICAgIHRoaXNfb2JqZWN0KEUpLCBzZXRfdGhpc19wbGF5ZXIoRSkKZGlmZiAtLWdpdCBhL2RvYy9lZnVuL3NldF90aGlzX3BsYXllciBiL2RvYy9lZnVuL3NldF90aGlzX3BsYXllcgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4wODVjNTI5Ci0tLSAvZGV2L251bGwKKysrIGIvZG9jL2VmdW4vc2V0X3RoaXNfcGxheWVyCkBAIC0wLDAgKzEsMzEgQEAKK0dFU0NIVUVUWlQKK1NZTk9QU0lTCisgICAgICAgIHZvaWQgc2V0X3RoaXNfcGxheWVyKG9iamVjdCBvYik7CisKK0JFU0NIUkVJQlVORworICAgICAgICBBZW5kZXJ0IGRlbiBtb21lbnRhbmVuIEtvbW1hbmRvZ2ViZXIgenUgPG9iPi4gRGFiZWkga2FubiA8b2I+IGF1Y2gKKyAgICAgICAgMCBzZWluLCB3ZW5uIGRlciBha3R1ZWxsZSBLb21tYW5kb2dlYmVyICdkZWFrdGl2aWVydCcgd2VyZGVuIHNvbGwuCisKKyAgICAgICAgRGllc2UgRnVua3Rpb24gaXN0IG5pY2h0IGdlc2NodWV0enQgdW5kIHNvbGx0ZSBkZXNoYWxiIHZvbiBlaW5lcgorICAgICAgICBzaW11bF9lZnVuIHVlYmVybGFnZXJ0IHdlcmRlbiwgZGllIGRpZSBFZnVuIGVudHdlZGVyIGtvbXBsZXR0CisgICAgICAgIGFic2NoYWx0ZXQsIG9kZXIgbWluZGVzdGVucyBnZXdpc3NlIFNpY2hlcmhlaXRzY2hlY2tzIGR1cmNoZnVlaHJ0LgorICAgICAgICBFcyBpc3Qgc29uc3QgZWluZmFjaCwgZGllIFNpY2hlcmhlaXQgZWluZXMgTXVkcyBtaXQgSGlsZmUgZGllc2VyCisgICAgICAgIEVmdW4genUgdW50ZXJncmFiZW4uCisKKyAgICAgICAgRGllIEVmdW4gaXN0IG51ciBpbiAzLjIuMSB2ZXJmdWVnYmFyLiBFaW5lIG1vZWdsaWNoZSBTaW11bGF0aW9uIGZ1ZXIKKyAgICAgICAgMy4yIGtvZW5udGUgZXR3YSBzbyBhdXNzZWhlbjoKKworICAgICAgICAgICAgdm9pZCBzZXRfdGhpc19wbGF5ZXIob2JqZWN0IG9iKQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIC8qIEluc2VydCB5b3VyIHByaXZpbGVnZSBjaGVja3MgaGVyZSAqLworICAgICAgICAgICAgICAgIGlmIChsaXZpbmcob2IpKQorICAgICAgICAgICAgICAgICAgICBmdW5jYWxsKGJpbmRfbGFtYmRhKCMnZW5hYmxlX2NvbW1hbmRzLCBvYikpOworICAgICAgICAgICAgfQorICAgICAgICAgICAgKHN1Z2dlc3RlZCBieSBNYXJrIExld2lzIChOb3N0cmFkYW11c0BaZWJlZGVlKSkKKworQUVOREVSVU5HRU4KKyAgICAgICAgRWluZ2VmdWVocnQgaW4gTERNdWQgMy4yLjEuCisgICAgICAgIExETXVkIDMuMi42IGZ1ZWhydGUgZGllIDAgYWxzIG1vZWdsaWNoZW4gUGFyYW1ldGVyIGVpbi4KKworU0lFSEUgQVVDSAorICAgICAgICBzZXRfdGhpc19vYmplY3QoRSksIHRoaXNfcGxheWVyKEUpCmRpZmYgLS1naXQgYS9kb2MvZWZ1bi9zZXRldWlkIGIvZG9jL2VmdW4vc2V0ZXVpZApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41YzI3OTNhCi0tLSAvZGV2L251bGwKKysrIGIvZG9jL2VmdW4vc2V0ZXVpZApAQCAtMCwwICsxLDE3IEBACitTWU5PUFNJUworICAgICAgICBpbnQgc2V0ZXVpZChzdHJpbmcgc3RyKTsKKworQkVTQ0hSRUlCVU5HCisgICAgICAgIFNldHp0IGRpZSBlZmZla3RpdmUgVUlEIGF1ZiA8c3RyPi4gRGFzIGF1ZnJ1ZmVuZGUgT2JqZWt0IG11c3MgZGF6dQorICAgICAgICB2b20gTWFzdGVyb2JqZWt0IGJlcmVjaHRpZ3Qgc2Vpbi4gSW4gZGVuIG1laXN0ZW4gSW5zdGFsbGF0aW9uZW4KKyAgICAgICAga2FubiBkaWUgZWZmZWt0aXZlIFVJRCBqZWRlcnplaXQgYXVmIGRpZSBtb21lbnRhbmUgVUlEIGRlcyBPYmpla3RzLAorICAgICAgICBhdWYgZGllIFVJRCBkZXMgRXJzY2hhZmZlcnMgZGVzIE9iamVrdHMgb2RlciBhdWYgMCBnZXNldHp0IHdlcmRlbi4KKworICAgICAgICBOdXIgd2VubiBkaWVzZXIgV2VydCAwIGlzdCwga2FubiBkaWUgVUlEIGRlcyBPYmpla3RzIGR1cmNoCisgICAgICAgIGV4cG9ydF91aWQoKSB2ZXJhZW5kZXJ0IHdlcmRlbi4KKworICAgICAgICBVbnRlciBzdHJpa3RlbiBlVUlEIFJlZ2VsbiBrb2VubmVuIE9iamVrdGUgbWl0IFVJRCAwIGtlaW5lIGFuZGVyZW4KKyAgICAgICAgT2JqZWt0ZSBsYWRlbiBvZGVyIGNsb25lbi4KKworU0lFSEUgQVVDSAorICAgICAgICBleHBvcnRfdWlkKEUpLCBnZXR1aWQoRSksIGdldHV1aWQoRSksIGdldGV1aWQoRSksIG5hdGl2ZShDKQpkaWZmIC0tZ2l0IGEvZG9jL2VmdW4vc2duIGIvZG9jL2VmdW4vc2duCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjIzMzFjMGQKLS0tIC9kZXYvbnVsbAorKysgYi9kb2MvZWZ1bi9zZ24KQEAgLTAsMCArMSwxNyBAQAorU1lOT1BTSVMKKyAgICAgICAgaW50IHNnbiAoaW50fGZsb2F0IGFyZykKKworQkVTQ0hSRUlCVU5HCisgICAgICAgIExpZWZlcnQgZGFzIFZvcnplaWNoZW4gZGVzIEFyZ3VtZW50ZXMuCisKKyAgICAgICAgYXJnICBzZ24oYXJnKQorICAgICAgICAtLS0tLS0tLS0tLS0tLQorICAgICAgICA+IDAgICAxCisgICAgICAgICAgMCAgIDAKKyAgICAgICAgPCAwICAtMQorCitBRU5ERVJVTkdFTgorICAgICAgICBFaW5nZWZ1ZWhydCBpbiBMRE11ZCAzLjIuOS4KKworU0lFSEUgQVVDSAorICAgICAgICBhYnMoRSkKZGlmZiAtLWdpdCBhL2RvYy9lZnVuL3NodXRkb3duIGIvZG9jL2VmdW4vc2h1dGRvd24KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNDZlZjBhZgotLS0gL2Rldi9udWxsCisrKyBiL2RvYy9lZnVuL3NodXRkb3duCkBAIC0wLDAgKzEsMTggQEAKK1NZTk9QU0lTCisgICAgICAgIHZvaWQgc2h1dGRvd24oKTsKKyAgICAgICAgdm9pZCBzaHV0ZG93bihpbnQgZXhpdF9jb2RlKTsKKworQkVTQ0hSRUlCVU5HCisgICAgICAgIEZhZWhydCBkYXMgTXVkIGhlcnVudGVyLiBEaWVzZSBGdW5rdGlvbiBkYXJmIG5pZSB2ZXJ3ZW5kZXQgd2VyZGVuIQorICAgICAgICBXZW5uIGRhcyBNdWQgaGVydW50ZXJnZWZhaHJlbiB3ZXJkZW4gbXVzcywgc28gaGF0IGRpZXMgdWViZXIgZGVuCisgICAgICAgIFNodXRkb3duYmVmZWhsIHp1IGVyZm9sZ2VuLgorCisgICAgICAgIElzdCBlaW4gPGV4aXRfY29kZT4gQXJndW1lbnQgZ2VnZWJlbiwgd2lyZCBzZWluIFdlcnQgYWxzIGRlcgorICAgICAgICBVbml4LVJlc3VsdGF0d2VydCB2ZXJ3ZW5kZXQ7IGFuZGVybmZhbGxzIHdpcmQgMCB2ZXJ3ZW5kZXQuCisKKyAgICAgICAgTWFuIGZyYWd0IHNpY2ggbnVuIHZpZWxsZWljaHQsIHdvenUgZXMgZGFubiBkaWVzZSBGdW5rdGlvbiBnaWJ0LAorICAgICAgICB3ZW5uIG1hbiBzaWUgbmljaHQgdmVyd2VuZGVuIGRhcmYuIFNvcnJ5LCBkYXMgZGFyZiBoaWVyIG5pY2h0CisgICAgICAgIGJla2FubnQgZ2VnZWJlbiB3ZXJkZW4uIFN0cmVuZyBnZWhlaW0uCisKK1NJRUhFIEFVQ0gKKyAgICAgICAgYnJlYWtfcG9pbnQoRSksIHN3YXAoRSkKZGlmZiAtLWdpdCBhL2RvYy9lZnVuL3NpbiBiL2RvYy9lZnVuL3NpbgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi42ZWFiN2VjCi0tLSAvZGV2L251bGwKKysrIGIvZG9jL2VmdW4vc2luCkBAIC0wLDAgKzEsOCBAQAorU1lOT1BTSVMKKyAgICAgICAgZmxvYXQgc2luKGludHxmbG9hdCkKKworQkVTQ0hSRUlCVU5HCisgICAgICAgIExpZWZlcnQgZGVuIFNpbnVzIGRlcyBBcmd1bWVudGVzLgorCitTSUVIRSBBVUNICisgICAgICAgIGFzaW4oRSksIGNvcyhFKSwgYWNvcyhFKSwgdGFuKEUpLCBhdGFuKEUpLCBhdGFuMihFKQpkaWZmIC0tZ2l0IGEvZG9jL2VmdW4vc2l6ZW9mIGIvZG9jL2VmdW4vc2l6ZW9mCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmI1MDIzYjQKLS0tIC9kZXYvbnVsbAorKysgYi9kb2MvZWZ1bi9zaXplb2YKQEAgLTAsMCArMSwxNiBAQAorU1lOT1BTSVMKKyAgICAgICAgaW50IHNpemVvZihtaXhlZCAqIHZhbCk7CisgICAgICAgIGludCBzaXplb2Yoc3RyaW5nICB2YWwpOworICAgICAgICBpbnQgc2l6ZW9mKG1hcHBpbmcgdmFsKTsKKworQkVTQ0hSRUlCVU5HCisgICAgICAgIExpZWZlcnQgZGllIEFuemFobCBFbGVtZW50ZSBpbiBlaW5lbSBBcnJheSA8dmFsPiwgZGllIEFuemFobAorICAgICAgICBaZWljaGVuIGluIGVpbmVtIFN0cmluZyA8dmFsPiBvZGVyIGRpZSBBbnphaGwgS2V5cyBpbiBlaW5lbSBNYXBwaW5nCisgICAgICAgIDx2YWw+LgorCisgICAgICAgIEFscyBTcGV6aWFsZmFsbCBrYW5uIDx2YWw+IGF1Y2ggMCBzZWluLiBJbiBkaWVzZW0gRmFsbCBsaWVmZXJ0IGRpZQorICAgICAgICBGdW5rdGlvbiAwIHp1cnVlY2suCisKK1NJRUhFIEFVQ0gKKyAgICAgICAgYWxsb2NhdGUoRSksIHBvaW50ZXJwKEUpLCBtYXBwaW5ncChFKSwgbV9hbGxvY2F0ZShFKSwKKyAgICAgICAgd2lkdGhvZihFKQpkaWZmIC0tZ2l0IGEvZG9jL2VmdW4vc2xfY2xvc2UgYi9kb2MvZWZ1bi9zbF9jbG9zZQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi43NTM5NDhkCi0tLSAvZGV2L251bGwKKysrIGIvZG9jL2VmdW4vc2xfY2xvc2UKQEAgLTAsMCArMSwxNyBAQAorT1BUSU9OQUwKK1NZTk9QU0lTCisgICAgICAgIHZvaWQgc2xfY2xvc2UoKQorCitCRVNDSFJFSUJVTkcKKyAgICAgICAgU2NobGllc3N0IGRpZSBTUUxpdGUtRGF0ZW5iYW5rLCB3ZWxjaGUgdm9tIGFrdHVlbGxlbiBPYmpla3QKKyAgICAgICAgZ2VvZWZmbmV0IHd1cmRlLgorCisgICAgICAgIERpZXNlIEZ1bmt0aW9uIGlzdCBudXIgdmVyZnVlZ2Jhciwgd2VubiBkZXIgRHJpdmVyIG1pdCBTUUxpdGUtCisgICAgICAgIFVudGVyc3R1ZXR6dW5nIGNvbXBpbGllcnQgd3VyZGUuIEluIGRpZXNlbSBGYWxsIGlzdCBkYXMgTWFrcm8KKyAgICAgICAgX19TUUxJVEVfXyBkZWZpbmllcnQuCisKK0dFU0NISUNIVEUKKyAgICAgICAgRWluZ2VmdWVocnQgaW4gTERNdWQgMy4zLjcxMy4KKworU0lFSEUgQVVDSAorICAgICAgICBzbF9vcGVuKEUpLCBzbF9leGVjKEUpLCBzbF9pbnNlcnRfaWQoRSkKZGlmZiAtLWdpdCBhL2RvYy9lZnVuL3NsX2V4ZWMgYi9kb2MvZWZ1bi9zbF9leGVjCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmU4YzRhOGYKLS0tIC9kZXYvbnVsbAorKysgYi9kb2MvZWZ1bi9zbF9leGVjCkBAIC0wLDAgKzEsMjUgQEAKK09QVElPTkFMCitTWU5PUFNJUworICAgICAgICBtaXhlZCogc2xfZXhlYyhzdHJpbmcgc3RhdGVtZW50LCAuLi4pCisKK0JFU0NIUkVJQlVORworICAgICAgICBGdWVocnQgZGVuIFNRTC1CZWZlaGwgPHN0YXRlbWVudD4gaW4gZGVyIGFrdHVlbGwgZ2VvZWZmbmV0ZW4KKyAgICAgICAgU1FMaXRlLURhdGVuYmFuayBhdXMuIERpZXNlciBTUUwtQmVmZWhsIGthbm4gV2lsZGNhcmRzIHdpZSAnPycKKyAgICAgICAgbmQgJz9ubm4nLCB3b2JlaSAnbm5uJyBlaW5lIFphaGwgaXN0LCBlbnRoYWx0ZW4uIERpZXNlIFdpbGRjYXJkcworICAgICAgICBrb2VubmVuIGFscyB3ZWl0ZXJlIFBhcmFtZXRlciBhbiBzbF9leGVjIHVlYmVyZ2ViZW4gd2VyZGVuLgorICAgICAgICBNaXQgJz9ubm4nIGthbm4gZGlyZWt0IGRpZSBOdW1tZXIgZWluZXMgYmVzdGltbXRlbiBQYXJhbWV0ZXJzCisgICAgICAgIGFuZ2VnZWJlbiB3ZXJkZW4sIGRlciBlcnN0ZSBQYXJhbWV0ZXIgaGF0IGRpZSBOdW1tZXIgMS4KKworICAgICAgICBGYWxscyBkZXIgU1FMLUJlZmVobCBEYXRlbiB6dXJ1ZWNrbGllZmVydCwgbGllZmVydCBzbF9leGVjIGVpbgorICAgICAgICBBcnJheSBhdXMgZGVuIGVpbnplbG5lbiBaZWlsZW4gKHdlbGNoZSB3aWVkZXIgQXJyYXlzIGRlciBlaW56ZWxuZW4KKyAgICAgICAgRmVsZGVyIHNpbmQpIHp1cnVlY2suCisKKyAgICAgICAgRGllc2UgRnVua3Rpb24gaXN0IG51ciB2ZXJmdWVnYmFyLCB3ZW5uIGRlciBEcml2ZXIgbWl0IFNRTGl0ZS0KKyAgICAgICAgVW50ZXJzdHVldHp1bmcgY29tcGlsaWVydCB3dXJkZS4gSW4gZGllc2VtIEZhbGwgaXN0IGRhcyBNYWtybworICAgICAgICBfX1NRTElURV9fIGRlZmluaWVydC4KKworR0VTQ0hJQ0hURQorICAgICAgICBFaW5nZWZ1ZWhydCBpbiBMRE11ZCAzLjMuNzEzLgorCitTSUVIRSBBVUNICisgICAgICAgIHNsX29wZW4oRSksIHNsX2luc2VydF9pZChFKSwgc2xfY2xvc2UoRSkKZGlmZiAtLWdpdCBhL2RvYy9lZnVuL3NsX2luc2VydF9pZCBiL2RvYy9lZnVuL3NsX2luc2VydF9pZApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5hNDI1Y2VmCi0tLSAvZGV2L251bGwKKysrIGIvZG9jL2VmdW4vc2xfaW5zZXJ0X2lkCkBAIC0wLDAgKzEsMTggQEAKK09QVElPTkFMCitTWU5PUFNJUworICAgICAgICBpbnQgc2xfaW5zZXJ0X2lkKCkKKworQkVTQ0hSRUlCVU5HCisgICAgICAgIE5hY2hkZW0gZWluZSBaZWlsZSBpbiBlaW5lIFRhYmVsbGUgbWl0IGVpbmVyIEFVVE9fSU5DUkVNRU5ULVNwYWx0ZQorICAgICAgICBlaW5nZWZ1ZWd0IHd1cmRlLCBrYW5uIG1hbiBtaXQgZGllc2VyIEZ1bmt0aW9uIGRlbiAobmV1ZW4pIFdlcnQKKyAgICAgICAgZGllc2VzIEFVVE9fSU5DUkVNRU5ULUZlbGRlcyBkZXIgZWluZ2VmdWVndGVuIFplaWxlIGFiZnJhZ2VuLgorCisgICAgICAgIERpZXNlIEZ1bmt0aW9uIGlzdCBudXIgdmVyZnVlZ2Jhciwgd2VubiBkZXIgRHJpdmVyIG1pdCBTUUxpdGUtCisgICAgICAgIFVudGVyc3R1ZXR6dW5nIGNvbXBpbGllcnQgd3VyZGUuIEluIGRpZXNlbSBGYWxsIGlzdCBkYXMgTWFrcm8KKyAgICAgICAgX19TUUxJVEVfXyBkZWZpbmllcnQuCisKK0dFU0NISUNIVEUKKyAgICAgICAgRWluZ2VmdWVocnQgaW4gTERNdWQgMy4zLjcxMy4KKworU0lFSEUgQVVDSAorICAgICAgICBzbF9vcGVuKEUpLCBzbF9leGVjKEUpLCBzbF9jbG9zZShFKQpkaWZmIC0tZ2l0IGEvZG9jL2VmdW4vc2xfb3BlbiBiL2RvYy9lZnVuL3NsX29wZW4KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYjU0Njg1ZAotLS0gL2Rldi9udWxsCisrKyBiL2RvYy9lZnVuL3NsX29wZW4KQEAgLTAsMCArMSwyMCBAQAorT1BUSU9OQUwKK1NZTk9QU0lTCisgICAgICAgIGludCBzbF9vcGVuKHN0cmluZyBmaWxlbmFtZSkKKworQkVTQ0hSRUlCVU5HCisgICAgICAgIE9lZmZuZXQgZGllIERhdGVpIDxmaWxlbmFtZT4gYWxzIFNRTGl0ZS1EYXRlbmJhbmsuIEZhbGxzCisgICAgICAgIHNpZSBub2NoIG5pY2h0IGV4aXN0aWVydCwgd2lyZCBzaWUgZXJzdGVsbHQuIEVzIGlzdCBudXIKKyAgICAgICAgZWluZSBnZW9lZmZuZXRlIERhdGVuYmFuayBwcm8gT2JqZWt0IGVybGF1YnQuIEltIEVyZm9sZ3NmYWxsZQorICAgICAgICBsaWVmZXJ0IGRpZXNlIEZ1bmt0aW9uIDEgenVydWVjaywgYW5kZXJlbmZhbGxzIHdpcmQKKyAgICAgICAgbm9ybWFsZXJ3ZWlzZSBlaW4gRmVobGVyIGF1c2dlbG9lc3QuCisKKyAgICAgICAgRGllc2UgRnVua3Rpb24gaXN0IG51ciB2ZXJmdWVnYmFyLCB3ZW5uIGRlciBEcml2ZXIgbWl0IFNRTGl0ZS0KKyAgICAgICAgVW50ZXJzdHVldHp1bmcgY29tcGlsaWVydCB3dXJkZS4gSW4gZGllc2VtIEZhbGwgaXN0IGRhcyBNYWtybworICAgICAgICBfX1NRTElURV9fIGRlZmluaWVydC4KKworR0VTQ0hJQ0hURQorICAgICAgICBFaW5nZWZ1ZWhydCBpbiBMRE11ZCAzLjMuNzEzLgorCitTSUVIRSBBVUNICisgICAgICAgIHNsX2V4ZWMoRSksIHNsX2luc2VydF9pZChFKSwgc2xfY2xvc2UoRSkKZGlmZiAtLWdpdCBhL2RvYy9lZnVuL3Nub29wIGIvZG9jL2VmdW4vc25vb3AKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNDg0YjIwMgotLS0gL2Rldi9udWxsCisrKyBiL2RvYy9lZnVuL3Nub29wCkBAIC0wLDAgKzEsMjIgQEAKK0dFU0NIVUVUWlQKK1NZTk9QU0lTCisgICAgICAgIGludCBzbm9vcChvYmplY3Qgc25vb3Blcik7CisgICAgICAgIGludCBzbm9vcChvYmplY3Qgc25vb3Blciwgb2JqZWN0IHNub29wZWUpOworCitCRVNDSFJFSUJVTkcKKyAgICAgICAgQmVnaW5udCBkaWUgQmVvYmFjaHR1bmcgZGVzIE9iamVrdHMgPHNub29wZWU+IGR1cmNoIDxzbm9vcGVyPi4gV2VubgorICAgICAgICA8c25vb3BlZT4gbmljaHQgYW5nZWdlYmVuIHdpcmQsIHdlcmRlbiBhbGxlIEJlb2JhY2h0dW5nZW4gdm9uCisgICAgICAgIDxzbm9vcGVyPiBiZWVuZGV0LgorCisgICAgICAgIERpZSBGdW5rdGlvbiBsaWVmZXJ0IDEgYmVpIEVyZm9sZywgLTEgd2VubiBlaW5lIFNjaGxlaWZlIGVudHN0ZWhlbgorICAgICAgICB3dWVyZGUgdW5kIDAgZnVlciBhbGxlIGFuZGVyZW4gRmVobGVyLgorCisgICAgICAgIERpZSBCZW9iYWNodHVuZyB3aXJkIG1pdCBkZW0gTWFzdGVyLU9iamVrdCBhdWYgR3VlbHRpZ2tlaXQgZ2VwcnVlZnQuCisgICAgICAgIEVzIHdpcmQgYXVjaCBlaW4gRmVobGVyIHZlcnVyc2FjaHQsIHdlbm4gZWluZSBCZW9iYWNodHVuZyB6dSBlaW5lcgorICAgICAgICBSZWt1cnNpb24gZnVlaHJlbiB3dWVyZGUuCisKK0FOTUVSS1VORworICAgICAgICBEaWVzZSBGdW5rdGlvbiBpc3QgZ2VzY2h1ZXR6dC4KKworU0lFSEUgQVVDSAorICAgICAgICBxdWVyeV9zbm9vcChFKQpkaWZmIC0tZ2l0IGEvZG9jL2VmdW4vc29ydF9hcnJheSBiL2RvYy9lZnVuL3NvcnRfYXJyYXkKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYjRhNjVjYQotLS0gL2Rldi9udWxsCisrKyBiL2RvYy9lZnVuL3NvcnRfYXJyYXkKQEAgLTAsMCArMSwxMTEgQEAKK3NvcnRfYXJyYXkoRSkKKworRlVOS1RJT046CisgICAgIG1peGVkICpzb3J0X2FycmF5KG1peGVkICphcnIsIG1peGVkIGZ1bmMgWywgbWl4ZWQgb2JdKQorCitQQVJBTUVURVI6CisgICAgIGFyciAgLSB6dSBzb3J0aWVyZW5kZXMgQXJyYXkKKyAgICAgZnVuYyAtIHp1IHJ1ZmVuZGUgTWV0aG9kZTsga2FubiBhbHMgU3RyaW5nIChGdW5rdGlvbnNuYW1lKSBvZGVyIAorICAgICAgICAgICAgQ2xvc3VyZSB1ZWJlcmdlYmVuIHdlcmRlbgorICAgICBvYiAgIC0gT2JqZWt0LCBhbiBkZW0gTWV0aG9kZSBnZXJ1ZmVuIHdlcmRlbiBzb2xsOyBrYW5uIGFscyBTdHJpbmcKKyAgICAgICAgICAgIChGaWxlbmFtZSkgb2RlciBPYmpla3Rwb2ludGVyIHVlYmVyZ2ViZW4gd2VyZGVuCisKK0JFU0NIUkVJQlVORworICAgICBFcnpldWd0IGVpbmUgKGZsYWNoZSkgS29waWUgZGVzIEFycmF5cyAnYXJyJyB1bmQgc29ydGllcnQgZGllc2UgbWl0IGRlcgorICAgICBTb3J0aWVyZnVua3Rpb24gJ2Z1bmMnLiBEaWUgc29ydGllcnRlIEtvcGllIHdpcmQgZGFubiB6dXJ1ZWNrZ2VnZWJlbi4KKworICAgICBEaWUgRWxlbWVudGUgZGVzIHp1IHNvcnRpZXJlbmRlbiBBcnJheXMgd2VyZGVuIHBhYXJ3ZWlzZSBhbiBkaWUKKyAgICAgU29ydGllcmZ1bmt0aW9uIGFscyBBcmd1bWVudGUgdWViZXJnZWJlbi4KKyAgICAgRGllIFNvcnRpZXJmdW5rdGlvbiBzb2xsdGUgZWluZSBaYWhsCisgICAgIC0gPjAgenVydWVja2dlYmVuLCB3ZW5uIGRpZSBFbGVtZW50ZSBpbiBkZXIgZmFsc2NoZW4KKyAgICAgICBSZWloZW5mb2xnZSBzaW5kCisgICAgIC0gPD0wIHp1cnVlY2tnZWJlbiwgd2VubiBkaWUgRWxlbWVudGUgaW4gZGVyIHJpY2h0aWdlbgorICAgICAgIFJlaWhlbmZvbGdlIHNpbmQuCisKKyAgICAgVmVyd2VuZHVuZyB2b24gTWV0aG9kZW46CisgICAgICAgV2VubiBiZWkgZGVyIEFuZ2FiZSB2b24gJ2Z1bmMnIGtlaW4gT2JqZWt0ICdvYicgaW4gRm9ybSBlaW5lcyBTdHJpbmdzCisgICAgICAgb2RlciBPYmpla3RzIGFuZ2VnZWJlbiB3aXJkLCB3aXJkIHRoaXNfb2JqZWN0KCkgYW5nZW5vbW1lbi4KKworICAgICBWZXJ3ZW5kdW5nIHZvbiBDbG9zdXJlczoKKyAgICAgICBFcyBrb2VubmVuIExmdW4tLCBMYW1iZGEtIHVuZCBJbmxpbmUtQ2xvc3VyZXMgdmVyd2VuZGV0IHdlcmRlbi4gCisgICAgICAgTGZ1bi1DbG9zdXJlcyBrb2VubmVuLCB3ZW5uIGltIHNlbGJlbiBPYmpla3Qgdm9yaGFuZGVuLCBhdWNoCisgICAgICAgJ3ByaXZhdGUnIG9kZXIvdW5kICdzdGF0aWMnIGRla2xhcmllcnQgc2VpbiwgbXVlc3NlbiBhYmVyIHp1IGRlbQorICAgICAgIFplaXRwdW5rdCBkZXIgVmVyd2VuZHVuZyBiZWthbm50IHNlaW4gKEZ1bmt0aW9uc3Byb3RvdHlwZW4gYmVudXR6ZW4pLgorICAgICAgIFZvbiBkZXIgVmVyd2VuZHVuZyB2b24gTGFtYmRhLUNsb3N1cmVzIHdpcmQgYXVzZHJ1ZWNrbGljaCBhYmdlcmF0ZW4uCisKK0JFTUVSS1VOR0VOOgorICAgICAoMSkgc29ydF9hcnJheSgpIHVudGVyc3R1ZXR6dCBrZWluZW4gZXh0cmEtUGFyYW1ldGVyCisKKyAgICAgKDIpIEFjaHR1bmcsIGRpZSBFbGVtZW50ZSBpbiAnYXJyJyB3ZXJkZW4gbmljaHQgdGllZiBrb3BpZXJ0LCBzaW5kIHNpZQorICAgICBhbHNvIHNlbGJzdCBBcnJheXMgb2RlciBNYXBwaW5ncywgc28gZnVlaHJ0IGVpbmUgQWVuZGVydW5nIGltIFJ1ZWNrZ2FiZS0KKyAgICAgQXJyYXkgenVyIEFlbmRlcnVuZyBpbSBVcnNwcnVuZ3NhcnJheToKKworICAgICBpbnQgKmksICpqOworICAgICBpPSh7KHsxfSksKHsyLDN9KSwoezQsNSw2fSl9KTsKKyAgICAgaj1zb3J0X2FycmF5KGksICAgICAgICAvLyBzb3J0aWVydCBkZXIgR3JvZXNzZSBuYWNoIGFic3RlaWdlbmQKKyAgICAgICAgIGZ1bmN0aW9uIGludCAoIG1peGVkIHgsIG1peGVkIHkgKSB7CisgICAgICAgICAgIHJldHVybiBzaXplb2YoeCkgPCBzaXplb2YoeSk7IH0KKyAgICAgICAgICk7CisgICAgIAorICAgICBadSBkaWVzZW0gWmVpdHB1bmt0IGlzdCAgaSA9PSAoeyAoezF9KSwoezIsM30pLCh7NCw1LDZ9KSB9KQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaiA9PSAoeyAoezQsNSw2fSksKHsyLDN9KSwoezF9KSB9KQorICAgICAKKyAgICAgRnVlaHJ0IG1hbiBqZXR6dCBkaWUgWnV3ZWlzdW5nIGpbMF1bMF09ODsgYXVzCisKKyAgICAgcmVzdWx0aWVyZW4gZm9sZ2VuZGUgQXJyYXlzOiBpID09ICh7ICh7MX0pLCh7MiwzfSksKHs4LDUsNn0pIH0pCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaiA9PSAoeyAoezgsNSw2fSksKHsyLDN9KSwoezF9KSB9KQorCitCRUlTUElFTEU6CisgICAgICMjIyBTb3J0aWVyZW4gdm9uIFphaGxlbiBpbiBhdWZzdGVpZ2VuZGVyIFJlaWhlbmZvbGdlICMjIworICAgICAKKyAgICAgaW50ICphcnIgPSAoeyAzLCA4LCAxLCAzIH0pCisKKyAgICAgLy8gRm9sZ2VuZCBpZGVudGlzY2hlIFJlc3VsdGF0ZSwgYWJlciBhbmRlcmUgQW5zYWV0emU6CisKKyAgICAgIzE6IG51dHp0IGRpZSAnRWZ1bicgPiBhbHMgTGZ1bi1DbG9zdXJlIChpZGVhbCBoaWVyKToKKyAgICAgICAgIHNvcnRfYXJyYXkoYXJyLCAjJz4pOworCisgICAgICMyOiBtaXQgU29ydGllcmZ1bmt0aW9uIGltIHNlbGJlbiBPYmpla3Q6CisgICAgICAgICBpbnQgaXNfZ3JlYXRlciAoaW50IGEsIGludCBiKSB7CisgICAgICAgICAgIHJldHVybiBhID4gYjsKKyAgICAgICAgIH0KKyAgICAgICAgIAorICAgICAgICAgIzJhOiBzb3J0aWVydCBtaXR0ZWxzIGRlciBMZnVuIGltIHNlbGJlbiBPYmpla3QgZGllIEVsZW1lbnRlIGluIGRhcworICAgICAgICAgICAgICBSdWVja2dhYmVhcnJheQorICAgICAgICAgICAgICBzb3J0X2FycmF5KGFyciwgImlzX2dyZWF0ZXIiLCB0aGlzX29iamVjdCgpKQorICAgICAgICAgICAgICBzb3J0X2FycmF5KGFyciwgImlzX2dyZWF0ZXIiKQorCisgICAgICAgICAjMmI6IG51dHp0IGRpZSBMZnVuIGlzX2dyZWF0ZXIoKSBhbHMgTGZ1bi1DbG9zdXJlIChGdW5rdGlvbnNwb2ludGVyKQorICAgICAgICAgICAgICBzb3J0X2FycmF5KGFyciwgIydpc19ncmVhdGVyKQorCisgICAgICMzOiBudXR6dCBlaW5lIExhbWJkYS1DbG9zdXJlIChsYW5nc2FtZXIsIG5pY2h0IGZ1ZXIgYWxsZSBsZXNlcmxpY2gpCisgICAgICAgICBzb3J0X2FycmF5KGFyciwgbGFtYmRhKCh7J2EsICdifSksICh7Iyc+LCAnYSwgJ2J9KSkpCisKKyAgICAgIzQ6IGFuYWxvZyB6dSAzLCBtaXQgSW5saW5lLUNsb3N1cmUKKyAgICAgICAgIHNvcnRfYXJyYXkoYXJyLCBmdW5jdGlvbiBpbnQgKGludCBhLCBpbnQgYikgeworICAgICAgICAgICByZXR1cm4gYSA+IGI7IH0gKTsKKworICAgICBSZXN1bHRhdCBpbiBhbGxlbiBGYWVsbGVuOiAoezEsMywzLDh9KQorCisgICAgICMjIyBTb3J0aWVyZW4gdm9uIGdlc2NoYWNodGVsdGVuIEFycmF5cyAjIyMKKworICAgICBhcnIgPSAoeyAoeyAiZm9vIiwgMyB9KSwgKHsgInF1dXgiLCAxIH0pLCAuLi4gfSkKKworICAgICAvLyBWb3JnZWhlbiBpZGVudGlzY2gsIGFsbGVyZGluZ3MgbXVzcyBkaWUgU29ydGllcmZ1bmt0aW9uCisgICAgIC8vIGFuZ2VwYXNzdCB3ZXJkZW4gKHNpZWhlIGF1Y2ggZGFzIEJlaXNwaWVsIHVudGVyIFZlcndlbmR1bmcgdm9uCisgICAgIC8vIElubGluZS1DbG9zdXJlcyBvYmVuIHVudGVyICJCZW1lcmt1bmdlbiIpOgorICAgICAKKyAgICAgaW50IGlzX2dyZWF0ZXIgKG1peGVkICphLCBtaXhlZCAqYikgeworICAgICAgIHJldHVybiBhWzFdID4gYlsxXTsKKyAgICAgfQorCitTSUVIRSBBVUNIOgorICAgICBBcnJheXM6ICAgICAgICBmaWx0ZXIoRSksIG1hcChFKQorICAgICBPYmpla3RhcnJheXM6ICBmaWx0ZXJfb2JqZWN0cyhFKSwgbWFwX29iamVjdHMoRSkKKyAgICAgTWFwcGluZ3M6ICAgICAgZmlsdGVyX2luZGljZXMoRSksIG1hcF9pbmRpY2VzKEUpCisKKyAgICAgU29uc3RpZ2VzOiAgICAgdW5pcXVlX2FycmF5KCkKKyAgICAgICAgICAgICAgICAgICAgYWxpc3QsIHRyYW5zcG9zZV9hcnJheShFKQorCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCitMYXN0IG1vZGlmaWVkOiBNb24gRmViIDE4IDIzOjA5IDIwMDggYnkgQXJhdGhvcm4KZGlmZiAtLWdpdCBhL2RvYy9lZnVuL3NwcmludGYgYi9kb2MvZWZ1bi9zcHJpbnRmCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjNjYjY5NzAKLS0tIC9kZXYvbnVsbAorKysgYi9kb2MvZWZ1bi9zcHJpbnRmCkBAIC0wLDAgKzEsMTQ3IEBACitTWU5PUFNJUw0KKyAgICAgICAgc3RyaW5nIHNwcmludGYoc3RyaW5nIGZtdCwgLi4uKQ0KKw0KK0JFU0NIUkVJQlVORw0KKyAgICAgICAgTWl0IGRpZXNlciBGdW5rdGlvbiBrYW5uIG1hbiBhdWYgZWluZmFjaGUgV2Vpc2UgYXVzIGRlbSBJbmhhbHQNCisgICAgICAgIHZvbiBWYXJpYWJsZW4gZWluZW4gU3RyaW5nIGJhdWVuOyB1bmQgZGllcyBlZmZla3RpdmVyIGFscw0KKyAgICAgICAgbWl0IGRlciB1ZWJsaWNoZW4gIkR1IGhhc3QgIithbnphaGwrIiBQdW5rdChlKSItTWV0aG9kZS4NCisNCisgICAgICAgIERpZSBGdW5rdGlvbiBiZWtvbW10IGFscyBlcnN0ZXMgQXJndW1lbnQgZWluZW4gRm9ybWF0c3RyaW5nIGZtdCwNCisgICAgICAgIGRlciBJbmZvcm1hdGlvbmVuIGRhcnVlYmVyIGVudGhhZWx0LCB3aWUgZGllIHdlaXRlcmVuIGJlbGllYmlnZW4NCisgICAgICAgIEFyZ3VtZW50ZSBpbiBkZW4gRXJnZWJuaXNzdHJpbmcgZWluZ2ViYXV0IHdlcmRlbiBzb2xsZW4uDQorICAgICAgICBEaWUgbWVpc3RlbiBaZWljaGVuIGdlbGFuZ2VuIHZvbSBGb3JtYXRzdHJpbmcgdW52ZXJhZW5kZXJ0IGluDQorICAgICAgICBkZW4gQXVzZ2FiZXN0cmluZy4gRGllIFJlZ2VsbiB6dW0gRWluYmF1IGVpbmVzIEFyZ3VtZW50cyB3ZXJkZW4NCisgICAgICAgIGltbWVyIG1pdCAnJScgZWluZ2VsZWl0ZXQuIE1vZWNodGUgbWFuIGVpbiAnJScgaW4gZGllIEF1c2dhYmUNCisgICAgICAgIGJyaW5nZW4sIHNvIG11c3MgbWFuIGltIEZvcm1hdHN0cmluZyAiJSUiIHZlcndlbmRlbi4NCisNCisgICAgICAgIEVpbiBlaW5mYWNoZXMgQmVpc3BpZWwgaXN0IGVyZz1zcHJpbnRmKCIlcyAlZCIsIHN0ciwgaSk7DQorICAgICAgICAnJScgbGVpdGV0IGVpbmVuIEFyZ3VtZW50Zm9ybWF0c3RyaW5nIChBRlMpIGVpbi4gRGFzICdzJyBzY2hsaWVzc3QNCisgICAgICAgIGlobiBhYiB1bmQgYmVzYWd0LCBkYXNzIGVpbiBTdHJpbmcgZWluZ2ViYXV0IHdlcmRlbiBzb2xsLiBEYXMNCisgICAgICAgIGZvbGdlbmRlIExlZXJ6ZWljaGVuIHdpcmQgdW52ZXJhZW5kZXJ0IHVlYmVybm9tbWVuLiAnJScgbGVpdGV0DQorICAgICAgICB3aWVkZXIgZWluZW4gbmV1ZW4gRm9ybWF0c3RyaW5nIGVpbiwgd29iZWkgJ2QnIGVpbmUgR2FuenphaGwNCisgICAgICAgIGJlemVpY2huZXQgKGVpbmUgVmFyaWFibGUgdm9uIFR5cCBpbnQpLg0KKyAgICAgICAgRGllcyBpc3QgZWluIGFsbGVyZGluZ3MgbnVyIGVpbiBzZWhyIGVpbmZhY2hlcyBCZWlzcGllbC4NCisNCisgICAgICAgIEplZGVyIEFyZ3VtZW50Zm9ybWF0c3RyaW5nIGtlbm56ZWljaG5ldCBhbHNvLCBhdWYgd2VsY2hlIEFydA0KKyAgICAgICAgZWluIEFyZ3VtZW50IGluIGRhcyBFcmdlYm5pcyBlaW5nZWJhdXQgd2VyZGVuIHNvbGwuIERlciBlcnN0ZQ0KKyAgICAgICAgQUZTIGlzdCBmdWVyIGRhcyB6d2VpdGUgQXJndW1lbnQgZGVyIEZ1bmt0aW9uLCBkZXIgendlaXRlIEFGUw0KKyAgICAgICAgZnVlciBkYXMgZHJpdHRlIEFyZ3VtZW50IHUucy53LiAoZGFzIGVyc3RlIEFyZ3VtZW50IGRlciBGdW5rdGlvbg0KKyAgICAgICAgaXN0IGphIGRlciBGb3JtYXRzdHJpbmcgc2VsYnN0KS4NCisNCisgICAgICAgIEplZGVyIEFGUyBiZWdpbm50IG1pdCBlaW5lbSAnJScgdW5kIGVuZGV0IG1pdCBlaW5lbSBkZXINCisgICAgICAgIGZvbGdlbmRlbiBaZWljaGVuIChBcmd1bWVudHR5cC1LZW5uemVpY2huZXIpOg0KKyAgICAgICAgWmVpY2hlbiAgICBBcmd1bWVudHR5cCAgICBCZW1lcmt1bmcNCisgICAgICAgICdzJyAgICAgICAgc3RyaW5nDQorICAgICAgICAnYycgICAgICAgIGludGVnZXIgICAgICAgIGFscyBBU0NJSS1aZWljaGVuDQorICAgICAgICAnZCcgJ2knICAgIGludGVnZXIgICAgICAgIERlemltYWxzY2hyZWlid2Vpc2UNCisgICAgICAgICdvJyAgICAgICAgaW50ZWdlciAgICAgICAgT2t0YWxzY2hyZWlid2Vpc2UNCisgICAgICAgICdiJyAnQicgICAgaW50ZWdlciAgICAgICAgQmluYWVyc2NocmVpYndlaXNlDQorICAgICAgICAneCcgJ1gnICAgIGludGVnZXIgICAgICAgIEhleGFkZXppbWFsc2NocmVpYndlaXNlDQorICAgICAgICAnZScgJ0UnICAgIGZsb2F0ICAgICAgICAgIEV4cG9uZW50aWFsc2NocmVpYndlaXNlDQorICAgICAgICAnZicgJ0YnICAgIGZsb2F0ICAgICAgICAgIEdsZWl0a29tbWFkYXJzdGVsbHVuZw0KKyAgICAgICAgJ2cnICdHJyAgICBmbG9hdCAgICAgICAgICBHbGVpdGtvbW1hZGFyc3RlbGx1bmcNCisgICAgICAgICdPJyAgICAgICAgbWl4ZWQgICAgICAgICAgR2lidCBmdWVyIERlYnVnZ2luZyBhbGxlcyBpcmdlbmR3aWUNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGVzYmFyIGF1cywgYXVjaCBBcnJheXMgdW5kIE1hcHBpbmdzDQorICAgICAgICAnUScgICAgICAgIG1peGVkICAgICAgICAgIFdpZSAnTycsIGdpYnQgamVkb2NoIFNvbmRlcnplaWNoZW4gaW4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU3RyaW5ncyBpbiBkZXIgTFBDLU5vdGF0aW9uIGF1cw0KKyAgICAgICAgDQorICAgICAgICBad2lzY2hlbiBkZW0gJyUnIHVuZCBkZW0gQXJndW1lbnR0eXAtS2VubnplaWNobmVyIGthbm4gbWFuDQorICAgICAgICBub2NoIG1laHJlcmUgTW9kaWZpa2F0b3JlbiBzZXR6ZW4sIGRpZSBkYXMgVmVyaGFsdGVuDQorICAgICAgICBiZWVpbmZsdXNzZW4uDQorICAgICAgICBIaWVyIGVpbmUgVWViZXJzaWNodC4gbiBzdGVodCBoaWVyIGZ1ZXIgZWluZSBHYW56emFobCwgYWxzbw0KKyAgICAgICAgenVtIEJlaXNwaWVsICIxMiIuDQorICAgICAgICBNb2RpZmlrYXRvciAgQmVkZXV0dW5nDQorICAgICAgICBuICAgICAgICAgICAgTWluaW1hbGUgU3RyaW5nbGFlbmdlLCBkaWUgZnVlciBkaWVzZXMgQXJndW1lbnQNCisgICAgICAgICAgICAgICAgICAgICB2ZXJ3ZW5kZXQgd2VyZGVuIHNvbGwuIEZlaGxlbmRlIFplaWNoZW4gd2VyZGVuIG1pdA0KKyAgICAgICAgICAgICAgICAgICAgIGVpbmVtIEZ1ZWxsemVpY2hlbiBhdWZnZWZ1ZWxsdC4gQmVnaW5udCBuIG1pdCBlaW5lcg0KKyAgICAgICAgICAgICAgICAgICAgICcwJyAoZXR3YSAiMDgiKSBzbyBpc3QgZGFzIEZ1ZWxsemVpY2hlbiAnMCcgc29uc3QNCisgICAgICAgICAgICAgICAgICAgICBpc3QgZXMgcGVyIERlZmF1bHQgJyAnLiAoc29nZW5hbm50ZSAnRmVsZGJyZWl0ZScpDQorICAgICAgICAubiAgICAgICAgICAgQmVpIEdhbnp6YWhsZW4gZGllIE1heGFuemFobCBkZXIgU3RlbGxlbiwgYmVpIEdsZWl0LQ0KKyAgICAgICAgICAgICAgICAgICAgIGtvbW1hemFobGVuIGRpZSBNYXhpbWFsemFobCBkZXIgTmFjaGtvbW1hc3RlbGxlbi4NCisgICAgICAgICAgICAgICAgICAgICBCZWkgKGVpbmZhY2hlbikgU3RyaW5ncyBkaWUgTWF4aW1hbGxhZW5nZS4NCisgICAgICAgIDpuICAgICAgICAgICBJc3QgZGFzc2VsYmUgd2llIG4ubiAtIHNldHp0IGFsc28gYmVpZGUgV2VydGUgYXVmDQorICAgICAgICAgICAgICAgICAgICAgZGllc2VsYmUgWmFobC4NCisgICAgICAgICdYJyAgICAgICAgICBBbHMgRnVlbGx6ZWljaGVuIHdpcmQgWCBnZW51dHp0LiBYIGtvZW5uZW4gZGFiZWkNCisgICAgICAgICAgICAgICAgICAgICBhdWNoIG1laHJlcmUgWmVpY2hlbiBzZWluLCBldHdhIGZ1ZWhydCAnLT0nIHp1DQorICAgICAgICAgICAgICAgICAgICAgRnVlbGx1bmdlbiBkZXIgQXJ0ICItPS09LT0tPSIuIFVtIG1pdCBIb2Noa29tbWFzDQorICAgICAgICAgICAgICAgICAgICAgenUgZnVlbGxlbiBpc3QgJ1xcJycgYW56dWdlYmVuLiBSdWVja3dhZXJ0cy0NCisgICAgICAgICAgICAgICAgICAgICBzY2hyYWVnc3RyaWNoIGVudHNwcmVjaGVuZCBtaXQgJ1xcXFwnLg0KKyAgICAgICAgPFNwYWNlPiAgICAgIFZvciBwb3NpdGl2ZSBaYWhsZW4gd2lyZCBlaW4gTGVlcnplaWNoZW4gZ2VmdWVndC4NCisgICAgICAgICsgICAgICAgICAgICBWb3IgcG9zaXRpdmUgWmFobGVuIHdpcmQgZWluICcrJyBnZWZ1ZWd0Lg0KKyAgICAgICAgLSAgICAgICAgICAgIERlciBXZXJ0IHdpcmQgbGlua3NidWVuZGlnIGluIGRhcyBmdWVyIGRpZXNlcyBBcmd1bWVudA0KKyAgICAgICAgICAgICAgICAgICAgIHZvcmdlc2VoZW5lIEZlbGQgZWluZ2VmdWVndCAoU3RhbmRhcmQgaXN0IHJlY2h0cy0NCisgICAgICAgICAgICAgICAgICAgICBidWVuZGlnKS4gQmVpIFN0cmluZ3Mgd2lyZCBtZWlzdGVucyBkaWVzZSBBdXNyaWNodHVuZw0KKyAgICAgICAgICAgICAgICAgICAgIGRpZSBzaW5udm9sbHN0ZSBzZWluLg0KKyAgICAgICAgfCAgICAgICAgICAgIERlciBXZXJ0IHdpcmQgemVudHJpZXJ0IGluIGRhcyBGZWxkIGVpbmdlZnVlZ3QuDQorICAgICAgICAgICAgICAgICAgICAgKFNpZWhlIE1vZGlmaWthdG9yIG4sIEZlbGRicmVpdGUpDQorICAgICAgICAkICAgICAgICAgICAgQmxvY2tzYXR6LiBCZW5vZXRpZ3QgZWluZSBGZWxkYnJlaXRlLCBmdW5rdGlvbmllcnQgbnVyDQorICAgICAgICAgICAgICAgICAgICAgYmVpIFN0cmluZ3MgKGF1Y2ggaW0gU3BhbHRlbm1vZHVzKS4NCisgICAgICAgID0gICAgICAgICAgICBTcGFsdGVubW9kdXMgKHNpZWhlIHVudGVuKS4NCisgICAgICAgICMgICAgICAgICAgICBGdWVyIFN0cmluZ3M6IFRhYmVsbGVubW9kdXMgKHNpZWhlIHVudGVuKS4NCisgICAgICAgICAgICAgICAgICAgICBGdWVyICclTycvJyVRJzoga29tcGFrdGUgQXVzZ2FiZS4NCisgICAgICAgIEAgICAgICAgICAgICBBcnJheW1vZHVzIChzaWVoZSB1bnRlbikuDQorICAgICAgICAqICAgICAgICAgICAgRWluIFN0ZXJuIGthbm4gaW1tZXIgZG9ydCBlaW5nZXNldHp0IHdlcmRlbiwgd28NCisgICAgICAgICAgICAgICAgICAgICBoaWVyIHdlaXRlciBvYmVuIGVpbiBuIGZ1ZXIgZWluZSBHYW56emFobCBzdGVodC4NCisgICAgICAgICAgICAgICAgICAgICBEZXIgV2VydCBkZXIgWmFobCBtdXNzIGRhbm4gYWxzIHdlaXRlcmVyIFBhcmFtZXRlcg0KKyAgICAgICAgICAgICAgICAgICAgIGFuIGRpZSBGdW5rdGlvbiB1ZWJlcmdlYmVuIHdlcmRlbi4NCisNCitCRUlTUElFTEUNCisgICAgICAgIE1pdCBkZW4gYmlzIGpldHp0IGVyd2FlaG50ZW4gTW9lZ2xpY2hrZWl0ZW4ga2FubiBtYW4gekIgbWFjaGVuOg0KKw0KKyAgICAgICAgc3ByaW50ZigiJWQgKGRlYykgPT0gJW8gKG9jdGFsKSA9PSAleCAoaGV4KSIsIDIwLCAyMCwgMjApOw0KKyAgICAgICAgPT4gIjIwIChkZWMpID09IDI0IChvY3RhbCkgPT0gMTQgKGhleCkiDQorDQorICAgICAgICBzcHJpbnRmKCJEdSBkcmVoc3QgZGVuIEtub3BmIHVtICUuM2YgVW1kcmVodW5nZW4iLCAxMi4zNDU2KTsNCisgICAgICAgID0+ICJEdSBkcmVoc3QgZGVuIEtub3BmIHVtIDEyLjM0NSBVbWRyZWh1bmdlbiINCisNCisgICAgICAgIHNwcmludGYoIkR1IGxpZXN0ICV8JyonOjlzIiwgIkZpb25hIik7DQorICAgICAgICA9PiAiRHUgbGllc3QgKipGaW9uYSoqIg0KKw0KKyAgICAgICAgc3ByaW50ZigiQXVmIGRlbSBaZXR0ZWxzdHVlY2sgc3RlaHQ6ICUtLipzLi4uIiwgNywgIkhhbGxvIER1IGRhIik7DQorICAgICAgICA9PiAiQXVmIGRlbSBaZXR0ZWxzdHVlY2sgc3RlaHQ6IEhhbGxvIEQuLi4NCisNCitFUldFSVRFUlRFIE1PREkNCisgICAgICAgIE1pdCBkZW0gTW9kaWZpa2F0b3JlbiA9ICMgdW5kIEAgc3RlaGVuIG1hZWNodGlnZSBXZXJremV1Z2UgenVyDQorICAgICAgICBWZXJmdWVndW5nLiBNaXQgZWluIHdlbmlnIFVlYmVybGVndW5nIGthbm4gbWFuIHNpY2ggb2Z0IHZpZWxlDQorICAgICAgICBaZWlsZW4gQ29kZSBlcnNwYXJlbi4NCisgICAgICAgIEFycmF5bW9kdXMgKEApOg0KKyAgICAgICAgICBzcHJpbnRmKCIlQHMiLCBhcnJfb2Zfc3RyaW5nKTsNCisgICAgICAgICAgRGVyIEFyZ3VtZW50Zm9ybWF0c3RyaW5nIChhbGxlcmRpbmdzIG9obmUgZGFzIEApIHdpcmQgc29vZnQNCisgICAgICAgICAgaGludGVyZWluYW5kZXJnZXJlaWh0LCB3aWV2aWVsZSBFbGVtZW50ZSBkYXMgQXJyYXkgaGF0Lg0KKyAgICAgICAgICBKZWRlciBBRlMgd2lyZCBkYW5uIGZ1ZXIgZWluIEVsZW1lbnQgZGVzIEFycmF5cyBiZW51dHp0Lg0KKyAgICAgICAgICBzcHJpbnRmKCIlQHMiLCAoeyJhYWEiLCJiYmIifSkpIGlzdCBzb21pdCBkYXNzZWxiZSB3aWUNCisgICAgICAgICAgc3ByaW50ZigiJXMlcyIsICJhYWEiLCAiYmJiIikuIEFsbGVyZGluZ3MgcGFzc3QgZXMgc2ljaA0KKyAgICAgICAgICBpbW1lciBhbiBkaWUgRWxlbWVudHphaGwgZGVyIHVlYmVyZ2ViZW5kZW4gQXJyYXlzIGFuLg0KKyAgICAgICAgICBEaWVzIGlzdCBudWV0emxpY2ggdW0gRXJnZWJuaXNzZSB2b24gbWFwKCkgb2RlciBhZWhubGljaA0KKyAgICAgICAgICBhdXN6dWdlYmVuLg0KKyAgICAgICAgICBzcHJpbnRmKCIlQHMiLCBtYXBfb2JqZWN0cyhhbGxfaW52ZW50b3J5KCksICJzaG9ydCIpKTsNCisgICAgICAgICAgRGVyIEFyZ3VtZW50dHlwLUtlbm56ZWljaG5lciBtdXNzIGhpZXJiZWkgaW1tZXIgZGVtIFR5cGVuDQorICAgICAgICAgIGVpbmVzIEVsZW1lbnRlcyBkZXMgQXJyYXlzIGVudHNwcmVjaGVuLg0KKyAgICAgICAgU3BhbHRlbm1vZHVzICg9KToNCisgICAgICAgICAgRGllc2UgRnVua3Rpb24gYnJpY2h0IFRleHQgdW0uIERpZSBGZWxkYnJlaXRlIG11c3MgYW5nZWdlYmVuDQorICAgICAgICAgIHdlcmRlbi4gV2lyZCBuZWJlbiBkZXIgRmVsZGJyZWl0ZSBhdWNoIGVpbmUgbWF4aW1hbGUgU3RyaW5nLQ0KKyAgICAgICAgICBsYWVuZ2UgYW5nZWdlYmVuLCBzbyB3aXJkIGRpZSBsZXR6dGVyZSBmdWVyIGRpZSBCcmVpdGUgZGVzDQorICAgICAgICAgIFVtYnJlY2hlbnMgdmVyd2VuZGV0LCBkaWUgRmVsZGJyZWl0ZSB3aXJkIG1pdCBGdWVsbHplaWNoZW4NCisgICAgICAgICAgYXVmZ2VmdWVsbHQuDQorICAgICAgICAgIHNwcmludGYoIiU9LTIwcyIsIHN0cik7IGJyaWNodCBkZW4gU3RyaW5nIHN0ciAnd29yZHdyYXAnZW5kDQorICAgICAgICAgIGF1ZiAyMCBaZWljaGVuIExhZW5nZSB1bS4gc3ByaW50ZigiJT0tKnMiLCBsZW4sIHN0cik7DQorICAgICAgICAgIGlzdCBzY2hvbiBlaW5lIGVpbmZhY2hlIGJyZWFrX3N0cmluZygpIFZhcmlhbnRlLg0KKyAgICAgICAgVGFiZWxsZW5tb2R1cyAoIyk6DQorICAgICAgICAgIERpZXNlIEZ1bmt0aW9uIGdpYnQgU3RyaW5ncyB0YWJlbGxlbmFydGlnIGF1cy4gRGllIFRlaWxzdHJpbmdzDQorICAgICAgICAgIG11ZXNzZW4gbWl0IFxuIGdldHJlbm50IGFscyBlaW4gU3RyaW5nIGFscyBBcmd1bWVudCB1ZWJlcmdlYmVuDQorICAgICAgICAgIHdlcmRlbi4gRGllIEZlbGRicmVpdGUgbXVzcyBhbmdlZ2ViZW4gd2VyZGVuIHVuZCBiZXplaWNobmV0DQorICAgICAgICAgIGRpZSAobWF4aW1hbGUpIEdlc2FtdGJyZWl0ZSBkZXIgVGFiZWxsZS4NCisgICAgICAgICAgRGllIEFuemFobCBkZXIgU3BhbHRlbiBkZXIgVGFiZWxsZSB3aXJkIG1vZWdsaWNoc3Qgb3B0aW1hbA0KKyAgICAgICAgICBiZXN0aW1tdCwgdW5kIGlzdCBmdWVyIGFsbGUgU3BhbHRlbiBnbGVpY2guIFdpcmQgZWluDQorICAgICAgICAgIFdlcnQgYWxzICdQcmFlemlzaW9uJyBhbmdlZ2ViZW4sIHNvIGlzdCBkaWVzIGRpZSBBbnphaGwgdm9uDQorICAgICAgICAgIFNwYWx0ZW4sIGRpZSB2ZXJ3ZW5kZXQgd2VyZGVuIHNvbGwuDQorICAgICAgICAgIHNwcmludGYoIiUjMzAuNHMiLCBzdHIpIGVyemV1Z3QgZWluZSBUYWJlbGxlLCBkaWUgbWF4aW1hbA0KKyAgICAgICAgICAzMCBaZWljaGVuIGJyZWl0IGlzdCB1bmQgNCBTcGFsdGVuIGVudGhhZWx0Lg0KKyAgICAgICAgICBzcHJpbnRmKCIlIzMwcyIsIHN0cikgbGVndCBkaWUgU3BhbHRlbnphaGwgZHluYW1pc2NoIGFuaGFuZA0KKyAgICAgICAgICBkZXIgRWluemVsc3RyaW5nbGFlbmdlbiBmZXN0LCBzbyBkYXNzIGRlciBsYWVuZ3N0ZSBTdHJpbmcNCisgICAgICAgICAgbm9jaCBnZW5hdSBpbiBkaWUgVGFiZWxsZSBwYXNzdC4NCisgICAgICAgICAgV2VubiBzdHJpbmcqIHdvcnRlIGRpZSBpbiBkaWUgVGFiZWxsZSBlaW56dWJldHRlbmRlbiBXb3J0ZQ0KKyAgICAgICAgICBlbnRoYWVsdCwgc28gbXVzcyBzdHI9aW1wbG9kZSh3b3J0ZSwiXG4iKSBzZWluLg0KKw0KK1NJRUhFIEFVQ0g6DQorICAgICAgICBwcmludGYoRSkNCmRpZmYgLS1naXQgYS9kb2MvZWZ1bi9zcXJ0IGIvZG9jL2VmdW4vc3FydApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi40NGM0ODA1Ci0tLSAvZGV2L251bGwKKysrIGIvZG9jL2VmdW4vc3FydApAQCAtMCwwICsxLDkgQEAKK1NZTk9QU0lTCisgICAgICAgIGZsb2F0IHNxcnQoaW50IHZhbHVlKTsKKyAgICAgICAgZmxvYXQgc3FydChmbG9hZyB2YWx1ZSk7CisKK0JFU0NIUkVJQlVORworICAgICAgICBMaWVmZXJ0IGRpZSBRdWFkcmF0d3VyemVsIHZvbiA8dmFsdWU+LgorCitTSUVIRSBBVUNICisgICAgICAgIGxvZyhFKSwgcG93KEUpClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZG9jL2VmdW4vc3NjYW5mIGIvZG9jL2VmdW4vc3NjYW5mCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmE2MTZiZjIKLS0tIC9kZXYvbnVsbAorKysgYi9kb2MvZWZ1bi9zc2NhbmYKQEAgLTAsMCArMSwxMTUgQEAKK0ZVTktUSU9OOgorIGludCBzc2NhbmYoc3RyaW5nIHN0cixzdHJpbmcgZm10LG1peGVkIHZhcjEsbWl4ZWQgdmFyMiwuLi4pCisKK0FSR1VNRU5URToKKyAgICAgIHN0cgorICAgICAgICAtIFN0cmluZywgZGVyIG5hY2ggZWluZW0gTXVzdGVyIHp1IGR1cmNoc3VjaGVuIGlzdAorICAgICAgICAtIGRhcmYgbmljaHQgTlVMTCBzZWluCisgICAgICBmbXQKKyAgICAgICAgLSBGb3JtYXQtU3RyaW5nLCBuYWNoIGRlc3NlbiBNdXN0ZXIgdW50ZXJzdWNodCB3aXJkCisgICAgICB2YXIxLHZhcjIsLi4uCisgICAgICAgIC0gQXJndW1lbnRlIGRpZSBtaXQgJWQgb2RlciAlcyBrb3JyZXNwb25kaWVyZW4KKworUlVlQ0tHQUJFV0VSVDoKKyAgICAgQW56YWhsIGRlciBnZWZ1bmRlbmVuIEFyZ3VtZW50ZS4KKworQkVTQ0hSRUlCVU5HOgorICAgICBXZXJ0ZXQgZWluZW4gU3RyaW5nIDxzdHI+IHVudGVyIEJlcnVlY2tzaWNodGlndW5nIGRlcyBGb3JtYXRzIDxmbXQ+CisgICAgIGF1cy4gPGZtdD4ga2FubiBTdHJpbmdzIGJlaW5oYWx0ZW4sIGRpZSBkdXJjaCAlZCB1bmQgJXMgZ2V0cmVubnQKKyAgICAgd2VyZGVuLiBKZWRlcyAlZCB1bmQgJXMgZW50c3ByaWNodCBlaW5lciBkZXIgVmFyaWFibGVuIDx2YXIxPiwgPHZhcjI+LAorICAgICBldGMuIGluIGRpZSBnZXNwZWljaGVydCB3ZXJkZW4gc29sbC4KKworICAgICBEaWUgT3BlcmF0b3JlbiBpbSBGb3JtYXQtU3RyaW5nIDxmbXQ+IGhhYmVuIGVpbmVzIGRlciBmb2xnZW5kZW4KKyAgICAgRm9ybWF0ZToKKworICAgICAgICAgJVsrXVshfH5dWzxzaXplPlsuPG1pbm1hdGNoPl1dPHR5cGU+CisKKyAgICAgICAgPHR5cGU+IGthbm4gZm9sZ2VuZGVzIHNlaW46CisgICAgICAgICAgICBkOiBzdGVodCBmdWVyIGVpbmUgWmFobAorICAgICAgICAgICAgRDogc3RlaHQgZnVlciBlaW5lIFphaGwKKyAgICAgICAgICAgIFU6CisgICAgICAgICAgICBzOiBzdGVodCBmdWVyIGVpbmUgWmVpY2hlbmtldHRlCisgICAgICAgICAgICAlOiBzdGVodCBmdWVyIGRhcyAlLVplaWNoZW4KKyAgICAgICAgICAgIHQ6IHN0ZWh0IGZ1ZXIgV2hpdGVzcGFjZXMgKGFsc28gTGVlcnNjaGxhZWdlIHVuZCBUYWJ1bGF0b3JlbiksCisgICAgICAgICAgICAgICBzcGVpY2hlcnQgZGllc2UgYWJlciBuaWNodC4KKworICAgICA8c2l6ZT4gaXN0IGRpZSBlcndhcnRldGUgRmVsZGdyb2Vzc2UsIDxtaW5tYXRjaD4gZGllIHZlcmxhbmd0ZQorICAgICBtaW5pbWFsZSBMYWVuZ2UgZnVlciBlaW5lbiBUcmVmZmVyIChTdGFuZGFyZHdlcnRlIHNpbmQgMCBmdWVyCisgICAgIFN0cmluZ3MgdW5kIDEgZnVlciBOdW1tZXJuKS4gU293b2hsIDxzaXplPiBhbHMgYXVjaCA8bWlubWF0Y2g+IGthbm4KKyAgICAgZW50d2VkZXIgbnVtZXJpc2NoIG9kZXIgbWl0ICcqJyBhbmdlZ2ViZW4gd2VyZGVuIC0gaW0gendlaXRlbiBGYWxsCisgICAgIHdpcmQgZGllIGd1ZWx0aWdlIFZhcmlhYmxlIGluIGRlciBMaXN0ZSBkZXIgQXJndW1lbnRlIGJlbnV0enQuCisKKyAgICAgV2lyZCArIGFuZ2VnZWJlbiwgbXVlc3NlbiBkaWUgWmVpY2hlbiBuYWNoIGRlbSBGZWxkIGViZW5mYWxscworICAgICBtYXRjaGVuLiBJc3QgZGllcyBuaWNodCBkZXIgRmFsbCwgd2lyZCBhdWNoIGRpZXNlcyBGZWxkIGFscworICAgICBNaXNzZXJmb2xnIGluIGRlciBSdWVja2dhYmUgYmV0cmFjaHRldCAoYXVjaCB3ZW5uIGRlciBXZXJ0CisgICAgIGJlcmVpdHMgYW4gZGllIHp1Z2Vob2VyaWdlIFZhcmlhYmxlIHp1Z2V3aWVzZW4gd3VyZGUpLgorCisgICAgIFdpcmQgISBhbmdlZ2ViZW4sIHdpcmQgendhciBkaWUgU3VjaGUgZHVyY2hnZWZ1ZWhydCwgYWJlciBUcmVmZmVyCisgICAgIHdlcmRlbiB3ZWRlciBnZXNwZWljaGVydCBub2NoIGdlemFlaGx0LiBNaXQgfiBhbHMgQXJndW1lbnQgd2lyZAorICAgICB6d2FyIGRpZSBTdWNoZSBkdXJjaGdlZnVlaHJ0IHVuZCBkaWUgVHJlZmZlciBnZXphZWhsdCwgZGFzIFJlc3VsdGF0CisgICAgIHdpcmQgYWJlciBuaWNodCBnZXNwZWljaGVydC4KKworICAgICBXZW5uIGVpbiAlcyBuaWNodCBhbSBFbmRlIHZvbiA8Zm10PiBzdGVodCwgd2lyZCBudXIgZWluIFRyZWZmZXIKKyAgICAgcmVnaXN0cmllcnQsIHdlbm4gYXVjaCBkZXIgbmFjaGZvbGdlbmRlIFN0cmluZyBiencuIGRhcworICAgICBuYWNoZm9sZ2VuZGUgRm9ybWF0IGdlZnVuZGVuIHdpcmQuIFdlaXRlciB1bnRlbiBnaWJ0IGVzIGRhenUKKyAgICAgZWluIEJlaXNwaWVsLgorICAgICBCZWkgZWluZW0gJWQgYWxsZXJkaW5ncyBtdXNzIGRpZXNlcyBWZXJoYWx0ZW4gbWl0IGVpbmVtICcrJworICAgICBlcnp3dW5nZW4gd2VyZGVuLgorCisgICAgIERlciBVbnRlcnNjaGllZCB6d2lzY2hlbiAlZCB1bmQgJUQgJVUgaXN0LCBkYXNzIGxldHp0ZXJlcyBlaW4KKyAgICAgdW5taXR0ZWxiYXIgdm9yYXVzZ2VoZW5kZXMgJXMgc28gYmFsZCBhbHMgbW9lZ2xpY2ggYWJicmljaHQsCisgICAgIHdhZWhyZW5kIGVyc3RlcmVzIHp1ZXJzdCB2ZXJzdWNodCwgZWluZW4gbW9lZ2xpY2hzdCBncm9zc2VuIFRyZWZmZXIKKyAgICAgZnVlciAlcyB6dSBlcnppZWxlbi4gVHJvdHpkZW0gdWViZXJzcHJpbmd0ICVELyVVIGtlaW5lIFdoaXRlc3BhY2VzLAorICAgICBkYXp1IG11c3MgJS4wdCVEIGdlc2V0enQgd2VyZGVuLgorCisgICAgIERpZSBGdW5rdGlvbiBzc2NhbmYoKSBpc3QgaW5zb2Zlcm4gZWluIFNwZXppYWxmYWxsLCBhbHMgZGFzcworICAgICBBcmd1bWVudGUgYXV0b21hdGlzY2ggbmFjaCBSZWZlcmVueiB1ZWJlcmdlYmVuIHdlcmRlbi4KKworQkVJU1BJRUxFOgorICAgICBzdHJpbmcgd2hvLCB3aGF0OworICAgICAgICAgaWYgKHNzY2FuZigid2lyZiBmcmlzYmVlIHp1IHJleCIsCisgICAgICAgICAgICAgICAgICAgICJ3aXJmICVzIHp1ICVzIiwgd2hhdCwgd2hvKSAhPSAyKQorICAgICAgICAgICAgIHdyaXRlKCJVc2FnZTogV2lyZiA8d2hhdD4genUgPHdobz5cbiIpOworICAgICAgICAgZWxzZQorICAgICAgICAgICAgIHdyaXRlKCJEdSB3aXJmc3QgZWluZW4gIit3aGF0KyIgenUgIit3aG8rIi5cbiIpOworCisgICAgIHNzY2FuZigiYWIiLCAiJXMlcyIsIHdobywgd2hhdCkKKyAgICAgPT0+IGxpZWZlcnQgMiwgd2hvID0gIiIsIHdoYXQgPSAiYWIiCisKKyAgICAgc3NjYW5mKCJhYiIsICIlcyAlcyIsIHdobywgd2hhdCkKKyAgICAgPT0+IGxpZWZlcnQgMCwgd2hvID0gMCwgd2hhdCA9IDAKKworICAgICBzc2NhbmYoImFiICIsICIlcyAlcyIsIHdobywgd2hhdCkKKyAgICAgPT0+IGxpZWZlcnQgMiwgd2hvID0gImFiIiwgd2hhdCA9ICIiCisKKworICAgICAvLyBBY2h0dW5nIGJlaSAlZAorICAgICBzc2NhbmYoIjEyICIsIiVkIHh5eiIsIG51bTEpOworICAgICA9PT4gbGllZmVydCAxLCBudW0xID0gMTIKKworICAgICBzc2NhbmYoIjEyICIsIiVzIHh5eiIsIG51bTEpOworICAgICA9PT4gbGllZmVydCAwLCBudW0xID0gMAorCisgICAgIC8vIG1pdCAnKycgd2lyZCBkYXMgUGFyc2VuIGRlcyBSZXN0Zm9ybWF0cyBlcnp3dW5nZW46CisgICAgIHNzY2FuZigiMTIgIiwiJStkIHh5eiIsIG51bTEpOworICAgICA9PT4gbGllZmVydCAwLCBudW0xID0gMTIKKworCisgICAgIC8vIFdlaXRlcmVzIEJlaXNwaWVsIHp1ICVkOgorICAgICBzc2NhbmYoImdldCAxMiBjb2lucyIsImdldCAlZCBydWJ5cyIsbnVtKQorICAgICA9PT4gZXJnaWJ0IDEsIHdlaWwgJ3J1YnlzJyBpZ25vcmllcnQgd2lyZAorCisgICAgIC8vIEJlaXNwaWVsIEZvcm1hdC1JZ25vcmUgMgorICAgICBzc2NhbmYoImdldCAxMiBjb2lucyIsImdldCAlK2QgcnVieXMiLG51bSk7CisgICAgID09PiBlcmdpYnQgMCwgZGEgbWl0IGRlbSAnKycgZGFzIFBhcnNlbiBkZXMgUmVzdGZvcm1hdHMgZXJ6d3VuZ2VuIHdpcmQKKyAgICAgPT0+IGVyZ2lidCAxIGJlaSAnZ2V0IDEyIHJ1YnlzJworCisgICAgIC8vIEJlaXNwaWVsIEZvcm1hdC1JZ25vcmUgMyBbYWx0ZSBWYXJpYW50ZV0KKyAgICAgc3NjYW5mKCJnZXQgMTIgY29pbnMiLCJnZXQgJWQgcnVieXMlcyIsIG51bSwgZHVtbXkpCisgICAgID09PiBlcmdpYnQgMQorICAgICA9PT4gZXJnaWJ0IDIgYmVpICJnZXQgMTIgcnVieXMiCisKK1NJRUhFIEFVQ0g6CisgICAgICAgIGV4cGxvZGUoRSksIHJlZ2V4cChFKQorCis4LkF1ZyAyMDA3IEdsb2luc29uCmRpZmYgLS1naXQgYS9kb2MvZWZ1bi9zdHJmdGltZSBiL2RvYy9lZnVuL3N0cmZ0aW1lCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmMxNjdhZmIKLS0tIC9kZXYvbnVsbAorKysgYi9kb2MvZWZ1bi9zdHJmdGltZQpAQCAtMCwwICsxLDExMiBAQAorU1lOT1BTSVMKKyAgICAgc3RyaW5nIHN0cmZ0aW1lKCkKKyAgICAgc3RyaW5nIHN0cmZ0aW1lKHN0cmluZyBmbXQpCisgICAgIHN0cmluZyBzdHJmdGltZShpbnQgY2xvY2spCisgICAgIHN0cmluZyBzdHJmdGltZShzdHJpbmcgZm10LCBpbnQgY2xvY2spCisgICAgIHN0cmluZyBzdHJmdGltZShzdHJpbmcgZm10LCBpbnQgY2xvY2ssIGludCBsb2NhbGl6ZWQpCisKK0JFU0NIUkVJQlVORworICAgICBHaWJ0LCBhZWhubGljaGUgd2llIGN0aW1lKCksIGVpbmUgWmVpdCBhbHMgZm9ybWF0aWVydGVuIFN0cmluZyB6dXJ1ZWNrLgorICAgICBIaWVyYmVpIGthbm4gZWluIFN0cmluZyBtaXQgZGl2LiBQbGF0emhhbHRlcm4gdm9tIEJlbnV0emVyIGFuZ2VnZWJlbgorICAgICB3ZXJkZW4gKHMudS4pLiBXaXJkIGtlaW4gU3RyaW5nIGFuZ2VnZWJlbiwgd2lyZCAiJWMiIGFscyBGb3JtYXRzdHJpbmcKKyAgICAgYmVudXR6dC4KKworICAgICBEYXMgQXJndW1lbnQgPGNsb2NrPiB3aXJkIGFscyBBbnphaGwgU2VrdW5kZW4gc2VpdCBkZW0gMDEuMDEuMTk3MCwgMDA6MDAKKyAgICAgVWhyIGludGVycHJldGllcnQuIFdlbm4gPGNsb2NrPiBuaWNodCBhbmdlZ2ViZW4gd2lyZCwgd2lyZCB0aW1lKCkKKyAgICAgdmVyd2VuZGV0LgorCisgICAgIERhcyBBcmd1bWVudCA8bG9jYWxpemVkPiBnaWJ0IGFuLCBvYiBkaWUgQXVzZ2FiZSBlbmdsaXNjaCAoZGFzIHNvZy4KKyAgICAga2xhc3Npc2NoZSAiQyIgbG9jYWxlKSBvZGVyIGluIGRlciBqZXdlaWxpZ2VuIExhbmRlc3NwcmFjaGUgKHouQi4KKyAgICAgZGV1dHNjaCkgZXJmb2xnZW4gc29sbC4gSGllcmJlaSBoYWVuZ3QgZGllIFNwcmFjaGUgYWxsZXJkaW5ncyB2b24gZGVuIGF1ZgorICAgICBkZW0gTXVkcmVjaG5lciBnZXNldHp0ZW4gVW1nZWJ1bmdzdmFyaWFibGVuIExDX1RJTUUgb2RlciBMQ19BTEwgYWIsIHNpZQorICAgICBrYW5uIG5pY2h0IHNlbGJlciBnZXdhZWhsdCB3ZXJkZW4uIFdpcmQga2VpbiA8bG9jYWxpemVkPiBhbmdlZ2ViZW4sIHdpcmQKKyAgICAgMSB2ZXJ3ZW5kZXQsIHdhcyBlaW5lciBBdXNnYWJlIGluIExhbmRlc3NwcmFjaGUgZW50c3ByaWNodC4KKyAgICAgMDogQXVzZ2FiZSBpbSBrbGFzc2lzY2hlbiAiQyIgbG9jYWxlIChlbmdsaXNoKQorICAgICAxOiBBdXNnYWJlIGluIExhbmRlc3NwcmFjaGUgZGVzIE11ZHJlY2huZXJzLgorCitCRU1FUktVTkdFTjoKKyAgICAgRGVyIHp1cnVlY2tnZWJlbmUgRXJnZWJuaXNzdHJpbmcgaXN0IG1heC4gNTExIFplaWNoZW4gbGFuZy4KKworUExBVFpIQUxURVI6CisgICAgIERpZXNlIEZ1bmt0aW9uIHZlcnN0ZWh0IGFsbGUgUGxhdHpoYWx0ZXIsIGRpZSBkaWUgRnVua3Rpb24gc3RyZnRpbWUoKSBhdXMKKyAgICAgZGVyIEMtU3RhbmRhcmRiaWJsaW90aGVrIHZlcnN0ZWh0LiBNb21lbnRhbiBzaW5kIGRpZXM6CisgICAgICAgJWEgICAgIERlciBhYmdla3Vlcnp0ZSBXb2NoZW50YWcgYWJoYWVuZ2lnIHZvbiBkZXIgbW9tZW50YW5lbiBMb2NhbGUuCisgICAgICAgJUEgICAgIERlciBnZXNhbXRlIFdvY2hlbnRhZyBhYmhhZW5naWcgdm9uIGRlciBtb21lbnRhbmVuIExvY2FsZS4KKyAgICAgICAlYiAgICAgRGVyIGFiZ2VrdWVyenRlIE1vbmF0c25hbWUgYWJoYWVuZ2lnIHZvbiBkZXIgbW9tZW50YW5lbiBMb2NhbGUuCisgICAgICAgJUIgICAgIERlciB2b2xsZSBNb25hdHNuYW1lIGFiaGFlbmdpZyB2b24gZGVyIG1vbWVudGFuZW4gTG9jYWxlLgorICAgICAgICVjICAgICBEYXMgYmV2b3J6dWd0ZSBEYXR1bXMtIHVuZCBVaHJ6ZWl0LVJlcHJhZXNlbnRhdGlvbiBsYXV0IEVpbnN0ZWwtCisgICAgICAgICAgICAgIGx1bmdlbiBkZXIgbW9tZW50YW5lbiBMb2NhbGUuCisgICAgICAgJUMgICAgIERhcyBKYWhyaHVuZGVydCBhbHMgendlaXN0ZWxsaWdlIFphaGwuCisgICAgICAgJWQgICAgIERlciBUYWcgaW0gTW9uYXQgYWxzIERlemltYWx6YWhsICgwMSAtIDMxKS4KKyAgICAgICAlRCAgICAgQWVxdWl2YWxlbnQgIHp1ICVtLyVkLyV5LiAgKFVTLWFtZXJpa2FuaXNjaGVzIEZvcm1hdC4gIEluIGFuZGVyZW4KKyAgICAgICAgICAgICAgTGFlbmRlcm4gaXN0ICVkLyVtLyV5IGR1cmNoYXVzIHVlYmxpY2ggLiBJbiBpbnRlcm5hdGlvbmFsZW0gS29uLSAKKyAgICAgICAgICAgICAgdGV4dCBpc3QgZGllc2VzIEZvcm1hdCBkYWhlciBtZWhyZGV1dGlnIHVuZCBzb2xsdGUgbmljaHQgdmVyd2VuLQorICAgICAgICAgICAgICBkZXQgd2VyZGVuLikKKyAgICAgICAlZSAgICAgV2llICVkLCBkZXIgVGFnIGltIE1vbmF0IGFscyBEZXppbWFsemFobCwgYWJlciBlaW5lIGZ1ZWhyZW5kZQorICAgICAgICAgICAgICBOdWxsIGlzdCBkdXJjaCBlaW4gTGVlcnplaWNoZW4gZXJzZXR6dC4KKyAgICAgICAlRSAgICAgTW9kaWZpa2F0b3I6IEFsdGVybmF0aXZlcyBGb3JtYXQgYmVudXR6ZW4sIHMudS4KKyAgICAgICAlZyAgICAgV2llICAlRywgIGFiZXIgb2huZSBkYXMgSmFocmh1bmRlcnQsIGFsc28gbWl0IHp3ZWlzdGVsbGlnZW0gSmFocgorICAgICAgICAgICAgICAoMDAtOTkpLgorICAgICAgICVHICAgICBEYXMgSmFociBsYXV0IElTTyA4NjAxIG1pdCBkZW0gSmFocmh1bmRlcnQgYWxzIERlemltYWx6YWhsLiAgRGFzCisgICAgICAgICAgICAgIHZpZXJzdGVsbGlnZSBKYWhyLCBkYXMgenUgSVNPLVdvY2hlbm51bW1lciAoc2llaGUgJVYpIHBhc3N0LiAgRXMKKyAgICAgICAgICAgICAgaGF0IGRhc3NlbGJlIEZvcm1hdCB1bmQgZGVuc2VsYmVuIFdlcnQgd2llICV5LCAgbnVyICBkYXNzLCAgd2VubgorICAgICAgICAgICAgICBkaWUgIElTTy1Xb2NoZW5udW1tZXIgIHp1bSAgdm9yaGVyZ2VoZW5kZW4gIG9kZXIgIG5hZWNoc3RlbiAgSmFocgorICAgICAgICAgICAgICBnZWhvZXJ0LCBkaWVzZXMgSmFociBzdGF0dGRlc3NlbiBiZW51dHp0IHdpcmQuCisgICAgICAgJWggICAgIEFlcXVpdmFsZW50IHp1ICViLgorICAgICAgICVIICAgICBEaWUgU3R1bmRlIGltIDI0aC1Gb3JtYXQgYWxzIEdhbnp6YWhsICgwMCAtIDIzKS4KKyAgICAgICAlSSAgICAgRGllIFN0dW5kZSBpbSAxMmgtRm9ybWF0IGFscyBHYW56emFobCAoMDEgLSAxMikuCisgICAgICAgJWogICAgIERlciBUYWcgaW0gSmFociBhbHMgR2FuenphaGwgKDAwMSAtIDM2NikuCisgICAgICAgJWsgICAgIERpZSBTdHVuZGUgaW0gMjRoLUZvcm1hdCBhbHMgR2FuenphaGwgKDAgLSAyMyk7IGVpbnplbG5lIFppZmZlcm4KKyAgICAgICAgICAgICAgaGFiZW4gZWluIHZvcmFuZ2VzdGVsbHRlcyBMZWVyemVpY2hlbi4gKFNpZWhlICVILikKKyAgICAgICAlbCAgICAgRGllIFN0dW5kZSBpbSAxMmgtRm9ybWF0IGFscyBHYW56emFobCAoMCAtIDEyKTsgZWluemVsbmUgWmlmZmVybgorICAgICAgICAgICAgICBoYWJlbiBlaW4gdm9yYW5nZXN0ZWxsdGVzIExlZXJ6ZWljaGVuLiAoU2llaGUgJUkuKQorICAgICAgICVtICAgICBEZXIgTW9uYXQgYWxzIEdhbnp6YWhsICgwMSAtIDEyKS4KKyAgICAgICAlTSAgICAgRGllIE1pbnV0ZSBhbHMgR2FuenphaGwgKDAwIC0gNTkpLgorICAgICAgICVuICAgICBFaW4gWmVpbGVudm9yc2NodWIuCisgICAgICAgJXAgICAgIEVudHdlZGVyICdBTScgb2RlciAnUE0nLCBqZSBuYWNoIGRlciB1ZWJlcmdlYmVuZW4gIFVocnplaXQsICBvZGVyCisgICAgICAgICAgICAgIGRpZSAgenVnZWhvZXJpZ2VuIFplaWNoZW5rZXR0ZW4gaW4gZGVyIG1vbWVudGFuZW4gTG9jYWxlLiAgTWl0dGFnCisgICAgICAgICAgICAgIGVyaGFlbHQgJ1BNJywgTWl0dGVybmFjaHQgJ0FNJy4KKyAgICAgICAlUCAgICAgV2llICVwLCBhYmVyIGluIEtsZWluYnVjaHN0YWJlbi4KKyAgICAgICAlciAgICAgWmVpdCBpbiBBTS9QTS1Ob3RhdGlvbjsgaW4gZGVyIFBPU0lYLUxvY2FsZSBpc3QgZGFzIEFlcXVpdmFsZW50CisgICAgICAgICAgICAgIHp1ICclSTolTTolUyAlcCcuCisgICAgICAgJVIgICAgIFplaXQgaW4gMjRoLU5vdGF0aW9uICglSDolTSkuIChTVSkgRnVlciBlaW5lIFZlcnNpb24gbWl0IFNla3VuZGVuCisgICAgICAgICAgICAgIHNpZWhlICVULgorICAgICAgICVzICAgICBEaWUgWmFobCBkZXIgU2VrdW5kZW4gc2VpdCAgZGVyICBFcG9jaGUsICBhbHNvICBzZWl0ICAxOTcwLTAxLTAxCisgICAgICAgICAgICAgIDAwOjAwOjAwIFVUQy4KKyAgICAgICAlUyAgICAgRGllIFNla3VuZGUgYWxzIEdhbnp6YWhsICgwMCAtIDYxKS4KKyAgICAgICAldCAgICAgRWluIFRhYnVsYXRvcnplaWNoZW4uCisgICAgICAgJVQgICAgIFplaXQgaW4gMjRoLU5vdGF0aW9uICglSDolTTolUykuCisgICAgICAgJXUgICAgIERlciBUYWcgZGVyIFdvY2hlIGFscyBaYWhsIHZvbiAxIGJpcyA3LCBtaXQgTW9udGFnIGFscyAxLiAgU2llaGUKKyAgICAgICAgICAgICAgYXVjaCAldy4KKyAgICAgICAlVSAgICAgRGllIFdvY2hlbm51bW1lciBkZXMgYWt0dWVsbGVuIEphaHJlcyBhbHMgR2FuenphaGwgIHZvbiAgMDAgIGJpcworICAgICAgICAgICAgICA1MywgIGJlZ2lubmVuZCAgbWl0IGRlbSBlcnN0ZW4gU29ubnRhZyBhbHMgZXJzdGVyIFRhZyBkZXIgZXJzdGVuCisgICAgICAgICAgICAgIFdvY2hlLiAgU2llaGUgYXVjaCAlViB1bmQgJVcuCisgICAgICAgJVYgICAgIERpZSBXb2NoZW5udW1tZXIgbmFjaCBJU08gODYwMToxOTg4IGFscyBEZXppbWFsemFobCB2b24gIDAxICBiaXMKKyAgICAgICAgICAgICAgNTMsICB3b2JlaSBXb2NoZSAxIGRpZSBlcnN0ZSBXb2NoZSBpc3QsIGRpZSB3ZW5pZ3N0ZW5zIDQgVGFnZSBpbQorICAgICAgICAgICAgICBsYXVmZW5kZW4gSmFociBoYXQsIG1pdCBNb250YWcgYWxzIGRlbSAgZXJzdGVuICBUYWcgIGRlciAgV29jaGUuCisgICAgICAgICAgICAgIFNpZWhlIGF1Y2ggJVUgdW5kICVXLgorICAgICAgICV3ICAgICBEZXIgIFRhZyAgZGVyICBXb2NoZSAgYWxzICBaYWhsICB2b24gMCBiaXMgNiwgbWl0IFNvbm50YWcgYWxzIDAuCisgICAgICAgICAgICAgIFNpZWhlIGF1Y2ggJXUuCisgICAgICAgJVcgICAgIERpZSBXb2NoZW5udW1tZXIgZGVzIGFrdHVlbGxlbiBKYWhyZXMgYWxzIEdhbnp6YWhsICB2b24gIDAwICBiaXMKKyAgICAgICAgICAgICAgNTMsICBiZWdpbm5lbmQgIG1pdCAgZGVtIGVyc3RlbiBNb250YWcgYWxzIGVyc3RlciBUYWcgZGVyIGVyc3RlbgorICAgICAgICAgICAgICBXb2NoZS4KKyAgICAgICAleCAgICAgRGllIGJldm9yenVndGUgRGF0dW1zLVJlcHJhZXNlbnRhdGlvbiBvaG5lIGRpZSBaZWl0IGluIGRlciBtb21lbi0KKyAgICAgICAgICAgICAgdGFuZW4gTG9jYWxlLgorICAgICAgICVYICAgICBEaWUgIGJldm9yenVndGUgIFVocnplaXQtUmVwcmFlc2VudGF0aW9uICBvaG5lICBkYXMgIERhdHVtIGluIGRlcgorICAgICAgICAgICAgICBtb21lbnRhbmVuIExvY2FsZS4KKyAgICAgICAleSAgICAgRGFzIEphaHIgYWxzIEdhbnp6YWhsIG9obmUgZGFzIEphaHJodW5kZXJ0ICgwMCAtIDk5KS4KKyAgICAgICAlWSAgICAgRGFzIEphaHIgYWxzIEdhbnp6YWhsIG1pdCBkZW0gSmFocmh1bmRlcnQuCisgICAgICAgJXogICAgIERpZSAgWmVpdHpvbmUgIGFscyAgU3R1bmRlbmRpZmZlcmVueiAgenUgIEdNVC4gQmVub2V0aWd0LCB1bQorICAgICAgICAgICAgICBSRkM4MjIta29uZm9ybWUgIERhdHVtc2FuZ2FiZW4gIHp1ICBlcmhhbHRlbiAgKG1pdCAnJWEsICVkICViICVZCisgICAgICAgICAgICAgICVIOiVNOiVTICV6JykuCisgICAgICAgJVogICAgIERpZSBaZWl0em9uZSBvZGVyIGRlciBOYW1lIG9kZXIgZGllIEFia3Vlcnp1bmcuCisgICAgICAgJSsgICAgIERhdHVtIHVuZCBaZWl0IGltIEZvcm1hdCB2b24gZGF0ZSgxKS4KKyAgICAgICAlJSAgICAgRGFzIFplaWNoZW4gJyUnLgorICAgICAKK0JFSVNQSUVMCisgICAgIHdyaXRlKHN0cmZ0aW1lKCJIZXV0ZSBpc3QgJUEsIGRlciAlZC4gJUIgJVkuXG4iKSkKKyAgICAgZXJnaWJ0IHouQi4KKyAgICAgIkhldXRlIGlzdCBNb250YWcsIGRlciAyNC4gU2VwdGVtYmVyIDIwMDcuXG4iCisKK1NJRUhFIEFVQ0gKKyAgICAgY3RpbWUoRSksIGdtdGltZShFKSwgbG9jYWx0aW1lKEUpLCBta3RpbWUoRSksIHRpbWUoRSksIHV0aW1lKEUpCmRpZmYgLS1naXQgYS9kb2MvZWZ1bi9zdHJmdGltZS5lbiBiL2RvYy9lZnVuL3N0cmZ0aW1lLmVuCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmNhMGFhNjUKLS0tIC9kZXYvbnVsbAorKysgYi9kb2MvZWZ1bi9zdHJmdGltZS5lbgpAQCAtMCwwICsxLDEyMiBAQAorU1lOT1BTSVMKKyAgICAgc3RyaW5nIHN0cmZ0aW1lKCkKKyAgICAgc3RyaW5nIHN0cmZ0aW1lKHN0cmluZyBmbXQpCisgICAgIHN0cmluZyBzdHJmdGltZShpbnQgY2xvY2spCisgICAgIHN0cmluZyBzdHJmdGltZShzdHJpbmcgZm10LCBpbnQgY2xvY2spCisgICAgIHN0cmluZyBzdHJmdGltZShzdHJpbmcgZm10LCBpbnQgY2xvY2ssIGludCBsb2NhbGl6ZWQpCisKK0JFU0NIUkVJQlVORworICAgICBHaWJ0LCBhZWhubGljaGUgd2llIGN0aW1lKCksIGVpbmUgWmVpdCBhbHMgZm9ybWF0aWVydGVuIFN0cmluZyB6dXJ1ZWNrLgorICAgICBIaWVyYmVpIGthbm4gZWluIFN0cmluZyBtaXQgZGl2LiBQbGF0emhhbHRlcm4gdm9tIEJlbnV0emVyIGFuZ2VnZWJlbgorICAgICB3ZXJkZW4gKHMudS4pLiBXaXJkIGtlaW4gU3RyaW5nIGFuZ2VnZWJlbiwgd2lyZCAiJWMiIGFscyBGb3JtYXRzdHJpbmcKKyAgICAgYmVudXR6dC4KKworICAgICBEYXMgQXJndW1lbnQgPGNsb2NrPiB3aXJkIGFscyBBbnphaGwgU2VrdW5kZW4gc2VpdCBkZW0gMDEuMDEuMTk3MCwgMDA6MDAKKyAgICAgVWhyIGludGVycHJldGllcnQuIFdlbm4gPGNsb2NrPiBuaWNodCBhbmdlZ2ViZW4gd2lyZCwgd2lyZCB0aW1lKCkKKyAgICAgdmVyd2VuZGV0LgorCisgICAgIERhcyBBcmd1bWVudCA8bG9jYWxpemVkPiBnaWJ0IGFuLCBvYiBkaWUgQXVzZ2FiZSBlbmdsaXNjaCAoZGFzIHNvZy4KKyAgICAga2xhc3Npc2NoZSAiQyIgbG9jYWxlKSBvZGVyIGluIGRlciBqZXdlaWxpZ2VuIExhbmRlc3NwcmFjaGUgKHouQi4KKyAgICAgZGV1dHNjaCkgZXJmb2xnZW4gc29sbC4gSGllcmJlaSBoYWVuZ3QgZGllIFNwcmFjaGUgYWxsZXJkaW5ncyB2b24gZGVuIGF1ZgorICAgICBkZW0gTXVkcmVjaG5lciBnZXNldHp0ZW4gVW1nZWJ1bmdzdmFyaWFibGVuIExDX1RJTUUgb2RlciBMQ19BTEwgYWIsIHNpZQorICAgICBrYW5uIG5pY2h0IHNlbGJlciBnZXdhZWhsdCB3ZXJkZW4uIFdpcmQga2VpbiA8bG9jYWxpemVkPiBhbmdlZ2ViZW4sIHdpcmQKKyAgICAgMSB2ZXJ3ZW5kZXQsIHdhcyBlaW5lciBBdXNnYWJlIGluIExhbmRlc3NwcmFjaGUgZW50c3ByaWNodC4KKworQkVNRVJLVU5HRU46CisgICAgIERlciB6dXJ1ZWNrZ2ViZW5lIEVyZ2Vibmlzc3RyaW5nIGlzdCBtYXguIDUxMSBaZWljaGVuIGxhbmcuCisgICAgIEltIE1HIGVyZm9sZ3QgbW9tZW50YW4gaW1tZXIgZWluZSBlbmdsaXNjaGUgQXVzZ2FiZS4KKworUExBVFpIQUxURVI6CisgICAgIERpZXNlIEZ1bmt0aW9uIHZlcnN0ZWh0IGFsbGUgUGxhdHpoYWx0ZXIsIGRpZSBkaWUgRnVua3Rpb24gc3RyZnRpbWUoKSBhdXMKKyAgICAgZGVyIEMtU3RhbmRhcmRiaWJsaW90aGVrIHZlcnN0ZWh0LiBNb21lbnRhbiBzaW5kIGRpZXM6CisgICAgIAorICAgICAlYQorICAgICAgICBpcyByZXBsYWNlZCBieSB0aGUgbG9jYWxlJ3MgYWJicmV2aWF0ZWQgd2Vla2RheSBuYW1lLiAKKyAgICAgJUEKKyAgICAgICAgaXMgcmVwbGFjZWQgYnkgdGhlIGxvY2FsZSdzIGZ1bGwgd2Vla2RheSBuYW1lLiAKKyAgICAgJWIKKyAgICAgICAgaXMgcmVwbGFjZWQgYnkgdGhlIGxvY2FsZSdzIGFiYnJldmlhdGVkIG1vbnRoIG5hbWUuIAorICAgICAlQgorICAgICAgICBpcyByZXBsYWNlZCBieSB0aGUgbG9jYWxlJ3MgZnVsbCBtb250aCBuYW1lLiAKKyAgICAgJWMKKyAgICAgICAgaXMgcmVwbGFjZWQgYnkgdGhlIGxvY2FsZSdzIGFwcHJvcHJpYXRlIGRhdGUgYW5kIHRpbWUgcmVwcmVzZW50YXRpb24uIAorICAgICAlQworICAgICAgICBpcyByZXBsYWNlZCBieSB0aGUgY2VudHVyeSBudW1iZXIgKHRoZSB5ZWFyIGRpdmlkZWQgYnkgMTAwIGFuZCAKKyAgICAgICAgdHJ1bmNhdGVkIHRvIGFuIGludGVnZXIpIGFzIGEgZGVjaW1hbCBudW1iZXIgWzAwLTk5XS4gCisgICAgICVkCisgICAgICAgIGlzIHJlcGxhY2VkIGJ5IHRoZSBkYXkgb2YgdGhlIG1vbnRoIGFzIGEgZGVjaW1hbCBudW1iZXIgWzAxLDMxXS4KKyAgICAgJUQKKyAgICAgICAgc2FtZSBhcyAlbS8lZC8leS4gCisgICAgICVlCisgICAgICAgIGlzIHJlcGxhY2VkIGJ5IHRoZSBkYXkgb2YgdGhlIG1vbnRoIGFzIGEgZGVjaW1hbCBudW1iZXIgWzEsMzFdOyBhIAorICAgICAgICBzaW5nbGUgZGlnaXQgaXMgcHJlY2VkZWQgYnkgYSBzcGFjZS4gCisgICAgICVoCisgICAgICAgIHNhbWUgYXMgJWIuIAorICAgICAlSAorICAgICAgICBpcyByZXBsYWNlZCBieSB0aGUgaG91ciAoMjQtaG91ciBjbG9jaykgYXMgYSBkZWNpbWFsIG51bWJlciAKKyAgICAgICAgWzAwLDIzXS4gCisgICAgICVJCisgICAgICAgIGlzIHJlcGxhY2VkIGJ5IHRoZSBob3VyICgxMi1ob3VyIGNsb2NrKSBhcyBhIGRlY2ltYWwgbnVtYmVyIAorICAgICAgICBbMDEsMTJdLiAKKyAgICAgJWoKKyAgICAgICAgaXMgcmVwbGFjZWQgYnkgdGhlIGRheSBvZiB0aGUgeWVhciBhcyBhIGRlY2ltYWwgbnVtYmVyIAorICAgICAgICBbMDAxLDM2Nl0uIAorICAgICAlbQorICAgICAgICBpcyByZXBsYWNlZCBieSB0aGUgbW9udGggYXMgYSBkZWNpbWFsIG51bWJlciBbMDEsMTJdLiAKKyAgICAgJU0KKyAgICAgICAgaXMgcmVwbGFjZWQgYnkgdGhlIG1pbnV0ZSBhcyBhIGRlY2ltYWwgbnVtYmVyIFswMCw1OV0uIAorICAgICAlbgorICAgICAgICBpcyByZXBsYWNlZCBieSBhIG5ld2xpbmUgY2hhcmFjdGVyLiAKKyAgICAgJXAKKyAgICAgICAgaXMgcmVwbGFjZWQgYnkgdGhlIGxvY2FsZSdzIGVxdWl2YWxlbnQgb2YgZWl0aGVyIGEubS4gb3IgcC5tLiAKKyAgICAgJXIKKyAgICAgICAgaXMgcmVwbGFjZWQgYnkgdGhlIHRpbWUgaW4gYS5tLiBhbmQgcC5tLiBub3RhdGlvbjsgaW4gdGhlIFBPU0lYIAorICAgICAgICBsb2NhbGUgdGhpcyBpcyBlcXVpdmFsZW50IHRvICVJOiVNOiVTICVwLiAKKyAgICAgJVIKKyAgICAgICAgaXMgcmVwbGFjZWQgYnkgdGhlIHRpbWUgaW4gMjQgaG91ciBub3RhdGlvbiAoJUg6JU0pLiAKKyAgICAgJVMKKyAgICAgICAgaXMgcmVwbGFjZWQgYnkgdGhlIHNlY29uZCBhcyBhIGRlY2ltYWwgbnVtYmVyIFswMCw2MV0uIAorICAgICAldAorICAgICAgICBpcyByZXBsYWNlZCBieSBhIHRhYiBjaGFyYWN0ZXIuIAorICAgICAlVAorICAgICAgICBpcyByZXBsYWNlZCBieSB0aGUgdGltZSAoJUg6JU06JVMpLiAKKyAgICAgJXUKKyAgICAgICAgaXMgcmVwbGFjZWQgYnkgdGhlIHdlZWtkYXkgYXMgYSBkZWNpbWFsIG51bWJlciBbMSw3XSwgd2l0aCAxIAorICAgICAgICByZXByZXNlbnRpbmcgTW9uZGF5LiAKKyAgICAgJVUKKyAgICAgICAgaXMgcmVwbGFjZWQgYnkgdGhlIHdlZWsgbnVtYmVyIG9mIHRoZSB5ZWFyIChTdW5kYXkgYXMgdGhlIGZpcnN0IGRheSAKKyAgICAgICAgb2YgdGhlIHdlZWspIGFzIGEgZGVjaW1hbCBudW1iZXIgWzAwLDUzXS4gCisgICAgICVWCisgICAgICAgIGlzIHJlcGxhY2VkIGJ5IHRoZSB3ZWVrIG51bWJlciBvZiB0aGUgeWVhciAoTW9uZGF5IGFzIHRoZSBmaXJzdCBkYXkgCisgICAgICAgIG9mIHRoZSB3ZWVrKSBhcyBhIGRlY2ltYWwgbnVtYmVyIFswMSw1M10uIElmIHRoZSB3ZWVrIGNvbnRhaW5pbmcgMSAKKyAgICAgICAgSmFudWFyeSBoYXMgZm91ciBvciBtb3JlIGRheXMgaW4gdGhlIG5ldyB5ZWFyLCB0aGVuIGl0IGlzIGNvbnNpZGVyZWQgCisgICAgICAgIHdlZWsgMS4gT3RoZXJ3aXNlLCBpdCBpcyB0aGUgbGFzdCB3ZWVrIG9mIHRoZSBwcmV2aW91cyB5ZWFyLCBhbmQgdGhlIAorICAgICAgICBuZXh0IHdlZWsgaXMgd2VlayAxLiAKKyAgICAgJXcKKyAgICAgICAgaXMgcmVwbGFjZWQgYnkgdGhlIHdlZWtkYXkgYXMgYSBkZWNpbWFsIG51bWJlciBbMCw2XSwgd2l0aCAwIAorICAgICAgICByZXByZXNlbnRpbmcgU3VuZGF5LiAKKyAgICAgJVcKKyAgICAgICAgaXMgcmVwbGFjZWQgYnkgdGhlIHdlZWsgbnVtYmVyIG9mIHRoZSB5ZWFyIChNb25kYXkgYXMgdGhlIGZpcnN0IGRheSAKKyAgICAgICAgb2YgdGhlIHdlZWspIGFzIGEgZGVjaW1hbCBudW1iZXIgWzAwLDUzXS4gQWxsIGRheXMgaW4gYSBuZXcgeWVhciAKKyAgICAgICAgcHJlY2VkaW5nIHRoZSBmaXJzdCBNb25kYXkgYXJlIGNvbnNpZGVyZWQgdG8gYmUgaW4gd2VlayAwLiAKKyAgICAgJXgKKyAgICAgICAgaXMgcmVwbGFjZWQgYnkgdGhlIGxvY2FsZSdzIGFwcHJvcHJpYXRlIGRhdGUgcmVwcmVzZW50YXRpb24uIAorICAgICAlWAorICAgICAgICBpcyByZXBsYWNlZCBieSB0aGUgbG9jYWxlJ3MgYXBwcm9wcmlhdGUgdGltZSByZXByZXNlbnRhdGlvbi4gCisgICAgICV5CisgICAgICAgIGlzIHJlcGxhY2VkIGJ5IHRoZSB5ZWFyIHdpdGhvdXQgY2VudHVyeSBhcyBhIGRlY2ltYWwgbnVtYmVyIFswMCw5OV0uIAorICAgICAlWQorICAgICAgICBpcyByZXBsYWNlZCBieSB0aGUgeWVhciB3aXRoIGNlbnR1cnkgYXMgYSBkZWNpbWFsIG51bWJlci4gCisgICAgICVaCisgICAgICAgIGlzIHJlcGxhY2VkIGJ5IHRoZSB0aW1lem9uZSBuYW1lIG9yIGFiYnJldmlhdGlvbiwgb3IgYnkgbm8gYnl0ZXMgaWYgCisgICAgICAgIG5vIHRpbWV6b25lIGluZm9ybWF0aW9uIGV4aXN0cy4gCisgICAgICUlCisgICAgICAgIGlzIHJlcGxhY2VkIGJ5ICUuCisKK0JFSVNQSUVMCisgICAgIHdyaXRlKHN0cmZ0aW1lKCJIZXV0ZSBpc3QgJUEsIGRlciAlZC4gJUIgJVkuXG4iKSkKKyAgICAgZXJnaWJ0IHouQi4KKyAgICAgIkhldXRlIGlzdCBNb250YWcsIGRlciAyNC4gU2VwdGVtYmVyIDIwMDcuXG4iCisKK1NJRUhFIEFVQ0gKKyAgICAgZ210aW1lKEUpLCBsb2NhbHRpbWUoRSksIG1rdGltZSgpLCB0aW1lKEUpLCB1dGltZShFKQpkaWZmIC0tZ2l0IGEvZG9jL2VmdW4vc3RyaW5ncCBiL2RvYy9lZnVuL3N0cmluZ3AKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOTdkODJiMAotLS0gL2Rldi9udWxsCisrKyBiL2RvYy9lZnVuL3N0cmluZ3AKQEAgLTAsMCArMSwxMCBAQAorU1lOT1BTSVMKKyAgICAgICAgaW50IHN0cmluZ3AobWl4ZWQgYXJnKQorCitCRVNDSFJFSUJVTkcKKyAgICAgICAgTGllZmVydCAxLCB3ZW5uIGRhcyBBcmd1bWVudCBlaW5lIFplaWNoZW5rZXR0ZSAoU3RyaW5nKSBpc3QsCisgICAgICAgIGFuc29uc3RlbiAwLgorCitTSUVIRSBBVUNICisgICAgICAgIGNsb3N1cmVwKEUpLCBmbG9hdHAoRSksIG1hcHBpbmdwKEUpLCBvYmplY3RwKEUpLCBpbnRwKEUpLAorICAgICAgICByZWZlcmVuY2VwKEUpLCBwb2ludGVycChFKSwgc3ltYm9scChFKSwgY2xvbmVwKEUpCmRpZmYgLS1naXQgYS9kb2MvZWZ1bi9zdHJsZW4gYi9kb2MvZWZ1bi9zdHJsZW4KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZTA4MWE3YQotLS0gL2Rldi9udWxsCisrKyBiL2RvYy9lZnVuL3N0cmxlbgpAQCAtMCwwICsxLDExIEBACitTWU5PUFNJUworICAgICAgICBpbnQgc3RybGVuKHN0cmluZyBzdHIpCisKK0JFU0NIUkVJQlVORworICAgICAgICBMaWVmZXJ0IGRpZSBMYWVuZ2UgZWluZXMgU3RyaW5ncy4KKyAgICAgICAgRGllc2UgZWZ1biBpc3QgVkVSQUxURVQgdW5kIGVyc2V0enQgZHVyY2ggc2l6ZW9mKCkuCisgICAgICAgIEJpdHRlIGluIG5ldWVtIENvZGUgbmljaHQgbWVociBiZW51dHplbiB1bmQgaW4gYWx0ZW0KKyAgICAgICAgQ29kZSBzdWt6ZXNzaXZlIGVyc2V0emVuLgorCitTSUVIRSBBVUNICisgICAgICAgIHNpemVvZihFKSwgZXh0cmFjdChFKQpkaWZmIC0tZ2l0IGEvZG9jL2VmdW4vc3RycnN0ciBiL2RvYy9lZnVuL3N0cnJzdHIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYmMwMzliNgotLS0gL2Rldi9udWxsCisrKyBiL2RvYy9lZnVuL3N0cnJzdHIKQEAgLTAsMCArMSwyNSBAQAorU1lOT1BTSVMKKyAgICAgICAgaW50IHN0cnJzdHIoc3RyaW5nIHN0ciwgc3RyaW5nIG11c3Rlcik7CisgICAgICAgIGludCBzdHJyc3RyKHN0cmluZyBzdHIsIHN0cmluZyBtdXN0ZXIsIGludCBwb3MpOworCitCRVNDSFJFSUJVTkc6CisgICAgICAgIExpZWZlcnQgZGVuIEluZGV4IGRlcyBlcnN0ZW4gQXVmdHJldGVucyB2b24gPG11c3Rlcj4gaW0gU3RyaW5nIDxzdHI+LAorICAgICAgICBhdXNnZWhlbmQgdm9uIGRlciBQb3NpdGlvbiA8cG9zPiBoZXIgcnVlY2t3YWVydHMgZ2VzdWNodC4gV2lyZCA8cG9zPgorICAgICAgICBuaWNodCBhbmdlZ2ViZW4sIHdpcmQgYWxzIFN0YW5kYXJkIC0xIGdlc2V0enQsIHdhcyBkZW0gRW5kZSB2b24gPHN0cj4KKyAgICAgICAgZW50c3ByaWNodC4gTWl0IGFuZGVyZW4gV29ydGVuOiBkaWUgRnVua3Rpb24gbGllZmVydCBkZW4gSW5kZXggZGVzCisgICAgICAgIGxldHp0ZW4gQXVmdHJldGVucyB2b24gPG11c3Rlcj4gdm9yIDxwb3M+LgorCisgICAgICAgIERlciBJbmRleCwgZGVyIHp1cnVlY2sgZ2VnZWJlbiB3aXJkLCBpc3QgcmVsYXRpdiB6dW0gQmVnaW5uIGRlcworICAgICAgICBTdHJpbmdzIDxzdHI+LgorCisgICAgICAgIFdlbm4gPG11c3Rlcj4gbmljaHQgaW4gPHN0cj4gZ2VmdW5kZW4gd2lyZCwgd2lyZCAtMSB6dXJ1ZWNrIGdlZ2ViZW4uCisKKyAgICAgICAgV2VubiA8cG9zPiBuZWdhdGl2IGlzdCwgYmV6ZWljaG5ldCA8cG9zPiBkZW4gSW5kZXggdm9tIEVuZGUgZGVzCisgICAgICAgIFN0cmluZ3MgYXVzIGdlemFlaGx0LiBEYWJlaSB3aXJkIGRpZSBTdWNoZSBhYmVyIGRlbm5vY2ggcnVlY2t3YWVydHMKKyAgICAgICAgaW0gU3RyaW5nIDxzdHI+IGR1cmNoZ2VmdWVocnQuCisKK0FFTkRFUlVOR0VOCisgICAgICAgIEVpbmdlZnVlaHJ0IGluIExETXVkIDMuMi4xMAorCitTSUVIRSBBVUNICisgICAgICAgIHN0cnN0cihFKSwgc3RybGVuKEUpLCBzc2NhbmYoRSksIHNwcmludGYoRSksIGV4cGxvZGUoRSkKZGlmZiAtLWdpdCBhL2RvYy9lZnVuL3N0cnN0ciBiL2RvYy9lZnVuL3N0cnN0cgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5lYTVjYjgzCi0tLSAvZGV2L251bGwKKysrIGIvZG9jL2VmdW4vc3Ryc3RyCkBAIC0wLDAgKzEsMTcgQEAKK1NZTk9QU0lTCisgICAgICAgIGludCBzdHJzdHIoc3RyaW5nIHN0ciwgc3RyaW5nIG11c3Rlcik7CisgICAgICAgIGludCBzdHJzdHIoc3RyaW5nIHN0ciwgc3RyaW5nIG11c3RlciwgaW50IHBvcyk7CisKK0JFU0NIUkVJQlVORworICAgICAgICBMaWVmZXJ0IGRlbiBJbmRleCBkZXMgZXJzdGVuIEF1ZnRyZXRlbnMgdm9uIDxtdXN0ZXI+IGluIDxzdHI+LAorICAgICAgICBhdXNnZWhlbmQgdm9uIGRlciBQb3NpdGlvbiA8cG9zPiwgd29iZWkgaW4gPHN0cj4gdm9yd2FlcnRzIGdlc3VjaHQKKyAgICAgICAgd2lyZC4gV2lyZCA8cG9zPiBuaWNodCBhbmdlZ2ViZW4sIHdpcmQgYWxzIFN0YW5kYXJkd2VydCAwIGdlc2V0enQsCisgICAgICAgIGFsc28gdm9tIEJlZ2lubiB2b24gPHN0cj4gaGVyIGdlc3VjaHQuCisKKyAgICAgICAgV2VubiA8bXVzdGVyPiBuaWNodCBnZWZ1bmRlbiB3aXJkLCB3aXJkIC0xIHp1cnVlY2sgZ2VsaWVmZXJ0LgorCisgICAgICAgIFdlbm4gPHBvcz4gbmVnYXRpdiBpc3QsIGJlemVpY2huZXQgPHBvcz4gZGllIFN0YXJ0cG9zaXRpb24gZGVyIFN1Y2hlCisgICAgICAgIHJlbGF0aXYgenVtIEVuZGUgdm9uIDxzdHI+LCBlcyB3aXJkIGFiZXIgd2VpdGVyaGluIHZvcndhZXJ0cyBnZXN1Y2h0LgorCitTSUVIRSBBVUNICisgICAgICAgIHN0cnJzdHIoRSksIHN0cmxlbihFKSwgc3NjYW5mKEUpLCBzcHJpbnRmKEUpLCBleHBsb2RlKEUpCmRpZmYgLS1naXQgYS9kb2MvZWZ1bi9zdHJ1Y3RfaW5mbyBiL2RvYy9lZnVuL3N0cnVjdF9pbmZvCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjRkNGNkMGIKLS0tIC9kZXYvbnVsbAorKysgYi9kb2MvZWZ1bi9zdHJ1Y3RfaW5mbwpAQCAtMCwwICsxLDQ2IEBACitTWU5PUFNJUworICAgICAgICAjaW5jbHVkZSA8c3RydWN0X2luZm8uaD4KKyAgICAgICAgI2luY2x1ZGUgPGxwY3R5cGVzLmg+CisKKyAgICAgICAgbWl4ZWQgKiBzdHJ1Y3RfaW5mbyAoc3RydWN0IHN0LCBpbnQgd2hhdCkKKworREVTQ1JJUFRJT04KKyAgICAgICAgUmV0dXJuIGluZm9ybWF0aW9uIGFib3V0IHRoZSBzdHJ1Y3R1cmUgb2Ygc3RydWN0IDxzdD4gaW4gYW4gYXJyYXkuCisgICAgICAgIElmIDxzdD4gaGFzIGEgYmFzZSBzdHJ1Y3QsIDx3aGF0PiBkZXRlcm1pbmVzIGhvdyB0aGUgaW5mb3JtYXRpb24KKyAgICAgICAgaXMgcmV0dXJuZWQ6CisKKyAgICAgICAgPHdoYXQ+ID09IFNJTkZPX0ZMQVQ6CisgICAgICAgICAgICBBbGwgbWVtYmVycyBvZiA8c3Q+LCBpbmNsdWRpbmcgdGhvc2UgaW5oZXJpdGVkIGZyb20gdGhlIGJhc2UKKyAgICAgICAgICAgIHN0cnVjdCwgYXJlIHJldHVybmVkIG9uIHRoZSB0b3AgbGV2ZWwgb2YgdGhlIHJlc3VsdC4KKyAgICAgICAgICAgIFRoZSBiYXNlIHN0cnVjdCBpcyBzaWduaWZpZWQgYnkganVzdCBpdHMgbmFtZS4KKworICAgICAgICA8d2hhdD4gPT0gU0lORk9fTkVTVEVEOgorICAgICAgICAgICAgT25seSB0aGUgbWVtYmVycyBkZWZpbmVkIGluIDxzdD4gaXRzZWxmIGFyZSByZXR1cm5lZCBvbgorICAgICAgICAgICAgdGhlIHRvcCBsZXZlbCBvZiB0aGUgcmVzdWx0LiBUaGUgaW5mb3JtYXRpb24gZm9yIHRoZSBiYXNlCisgICAgICAgICAgICBzdHJ1Y3QgaXMgYSBhcnJheSBieSBpdHNlbGYsIGFzIGl0IHdvdWxkIGJlIHJldHVybmVkCisgICAgICAgICAgICBieSBhIGNhbGwgdG8gc3RydWN0X2luZm8oKSBmb3IgYSBiYXNlIHN0cnVjdCBpbnN0YW5jZS4KKworICAgICAgICBUaGUgZWxlbWVudHMgaW4gdGhlIHJlc3VsdGluZyBhcnJheSBhcmU6CisKKyAgICAgICAgICBzdHJpbmcgW1NJX05BTUVdOiAgICAgICAgdGhlIG5hbWUgb2YgdGhlIHN0cnVjdAorICAgICAgICAgIHN0cmluZyBbU0lfUFJPR19OQU1FXTogICB0aGUgbmFtZSBvZiBwcm9ncmFtIGRlZmluaW5nIHRoZSBzdHJ1Y3QKKyAgICAgICAgICBzdHJpbmcgW1NJX1BST0dfSURdOiAgICAgdGhlIGlkIG9mIHRoZSBwcm9ncmFtIGRlZmluaW5nIHRoZSBzdHJ1Y3QKKyAgICAgICAgICBtaXhlZCAgW1NJX0JBU0VdOiAgICAgICAgMCwgb3IgdGhlIGJhc2Ugc3RydWN0IGluZm9ybWF0aW9uCisgICAgICAgICAgbWl4ZWQqIFtTSV9NRU1CRVIrMF06ICAgIHRoZSBmaXJzdCBtZW1iZXIgaW5mb3JtYXRpb24KKyAgICAgICAgICBtaXhlZCogW1NJX01FTUJFUituXTogICAgdGhlIGxhc3QgbWVtYmVyIGluZm9ybWF0aW9uCisKKyAgICAgICAgVGhlIG1lbWJlciBpbmZvcm1hdGlvbiBlbnRyaWVzIGFyZSBhcnJheXMgdGhlbXNlbHZlcyB3aXRoCisgICAgICAgIHRoZXNlIGVsZW1lbnRzOgorCisgICAgICAgICAgc3RyaW5nIFtTSU1fTkFNRV06ICBuYW1lIG9mIHRoZSBtZW1iZXIKKyAgICAgICAgICBpbnQgICAgW1NJTV9UWVBFXTogIHRoZSB0eXBlIG9mIHRoZSBtZW1iZXIgKGNvbXBpbGUtdGltZSB2YWx1ZSkKKyAgICAgICAgICBzdHJpbmcgW1NJTV9FWFRSQV06IDAsIG9yIGlmIHRoZSBtZW1iZXIgaXMgYSBzdHJ1Y3QsIHRoZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RydWN0IG5hbWUKKworSElTVE9SWQorICAgICAgICBJbnRyb2R1Y2VkIGluIExETXVkIDMuMy4zNDQuCisgICAgICAgIExETXVkIDMuMy40MTcgaW50cm9kdWNlZCBTSV9QUk9HX05BTUUgYW5kIFNJX1BST0dfSUQgaW4gZXhjaGFuZ2UKKyAgICAgICAgICBmb3IgU0lfVU5JUVVFX05BTUUuCisKK1NFRSBBTFNPCisgICAgICAgIHN0cnVjdHMoTFBDKQpkaWZmIC0tZ2l0IGEvZG9jL2VmdW4vc3RydWN0cCBiL2RvYy9lZnVuL3N0cnVjdHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMGIxNjY4ZAotLS0gL2Rldi9udWxsCisrKyBiL2RvYy9lZnVuL3N0cnVjdHAKQEAgLTAsMCArMSwxMyBAQAorU1lOT1BTSVMKKyAgICAgICAgaW50IHN0cnVjdHAobWl4ZWQgYXJnKQorCitERVNDUklQVElPTgorICAgICAgICBSZXR1cm4gMSBpZiBhcmcgaXMgYSBzdHJ1Y3QuCisKK0hJU1RPUlkKKyAgICAgICAgSW50cm9kdWN0ZWQgaW4gTERNdWQgMy4zLjI3My4KKworU0VFIEFMU08KKyAgICAgICAgYmFzZW9mKEUpLCBjbG9zdXJlcChFKSwgZmxvYXRwKEUpLCBtYXBwaW5ncChFKSwgb2JqZWN0cChFKSwKKyAgICAgICAgaW50cChFKSwgcmVmZXJlbmNlcChFKSwgcG9pbnRlcnAoRSksIHN0cmluZ3AoRSksIHN5bWJvbHAoRSksCisgICAgICAgIGNsb25lcChFKQpkaWZmIC0tZ2l0IGEvZG9jL2VmdW4vc3dhcCBiL2RvYy9lZnVuL3N3YXAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZmQyNDJlNAotLS0gL2Rldi9udWxsCisrKyBiL2RvYy9lZnVuL3N3YXAKQEAgLTAsMCArMSw3IEBACitHRVNDSFVFVFpUCitTWU5PUFNJUworICAgICAgICB2b2lkIHN3YXAob2JqZWN0IG9iaik7CisKK0JFU0NIUkVJQlVORworICAgICAgICBMYWdlcnQgZWluIE9iamVrdCBhdXMuIERpZXNlIEVmdW4gaXN0IG51ciBmdWVyIHN5c3RlbWludGVybmVzCisgICAgICAgIERlYnVnZ2luZyB1bmQga2FubiBlaW5lbiBBYnN0dXJ6IHZlcnVyc2FjaGVuLgpkaWZmIC0tZ2l0IGEvZG9jL2VmdW4vc3ltYm9sX2Z1bmN0aW9uIGIvZG9jL2VmdW4vc3ltYm9sX2Z1bmN0aW9uCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmRiYjUzZDAKLS0tIC9kZXYvbnVsbAorKysgYi9kb2MvZWZ1bi9zeW1ib2xfZnVuY3Rpb24KQEAgLTAsMCArMSwzNiBAQAorU1lOT1BTSVMKKyAgICAgICAgY2xvc3VyZSBzeW1ib2xfZnVuY3Rpb24oc3ltYm9sIGFyZyk7CisgICAgICAgIGNsb3NydWUgc3ltYm9sX2Z1bmN0aW9uKHN0cmluZyBhcmcpOworICAgICAgICBjbG9zdXJlIHN5bWJvbF9mdW5jdGlvbihzdHJpbmcgYXJnLCBvYmplY3R8c3RyaW5nIG9iaik7CisKK0JFU0NIUkVJQlVORworICAgICAgICBFcnpldWd0IGVpbmUgTGZ1bi0sIEVmdW4tIG9kZXIgT3BlcmF0b3ItQ2xvc3VyZSBhdXMgPGFyZz4sIHdvYmVpCisgICAgICAgIDxhcmc+IGVudHdlZGVyIGVpbiBzdHJpbmcgb2RlciBlaW4gc3ltYm9sIHNlaW4gbXVzcy4gRnVlcgorICAgICAgICBMZnVuLUNsb3N1cmVzIGdpYnQgPG9iaj4gYW4sIHp1IHdlbGNoZW0gT2JqZWt0IGRpZSBMZnVuIGdlaG9lcnQsCisgICAgICAgIGVudHdlZGVyIGFuZ2VnZWJlbiBkdXJjaCBkYXMgT2JqZWt0IHNlbGJzdCAoYnp3LiBlaW5lbiBwb2ludGVyCisgICAgICAgIGRhcmF1Zikgb2RlciBkdXJjaCBkZW4gT2JqZWt0bmFtZW4gYWxzIFN0cmluZy4gV2VubiBlaW4gU3RyaW5nCisgICAgICAgIGFuZ2VnZWJlbiB3aXJkLCB3aXJkIGRhcyBPYmpla3QgYmVpbSBBdWZydWYgZ2VsYWRlbi4KKworICAgICAgICBXZW5uIGRpZSBDbG9zdXJlIGZ1ZXIgZWluZSBMZnVuIGluIGVpbmVtIGFuZGVyZW4gYWxzIGRlbSBtb21lbnRhbmVuCisgICAgICAgIE9iamVrdCBlcnpldWd0IHdpcmQsIGVyZ2lidCBkaWVzIGVpbmUgImFsaWVuIGxmdW4gY2xvc3VyZSIuIFNvbGNoZQorICAgICAgICBDbG9zdXJlcyBzaW5kIGFuIGRhcyBPYmpla3QgZ2VidW5kZW4sIGRhcyBzeW1ib2xfZnVuY3Rpb24oKQorICAgICAgICBhdWZnZXJ1ZmVuIGhhdCAoZGllc2VzIE9iamVrdCB3aXJkIHZvbiB0b19vYmplY3QoKSBnZWxpZWZlcnQpLAorICAgICAgICBvYndvaGwgZGVyIGVpZ2VudGxpY2hlIENvZGUgaW4gZWluZW0gYW5kZXJlbiBPYmpla3Qgc3RlaHQgKGRhcyBtaXQKKyAgICAgICAgZ2V0X3R5cGVfaW5mbygpIGdlZnVuZGVuIHdlcmRlbiBrYW5uKS4KKworICAgICAgICBBbHMgInByaXZhdGUiIGRla2xhcmllcnRlIEZ1bmt0aW9uZW4ga29lbm5lbiBhdWYgZGllc2UgV2Vpc2UgbmllCisgICAgICAgIHp1IGVpbmVyIENsb3N1cmUgZ2V3YW5kZWx0IHdlcmRlbiwgInN0YXRpYyIgdW5kICJwcm90ZWN0ZWQiCisgICAgICAgIGRla2xhcmllcnRlIExmdW5zIG51ciBkYW5uLCB3ZW5uIDxvYmo+IGRhcyBndWVsdGlnZSBPYmpla3QKKyAgICAgICAgKGQuaC4gdGhpc19vYmplY3QoKSkgaXN0LgorICAgICAgICBFeHBvcmQuaC4gdGllcnQgbWFuIGRpZSBDbG9zdXJlcywga29lbm5lbiBzaWUgdW5hYmhhZW5naWcgdm9tIE1vZGlmaWVyIGRlcgorICAgICAgICBVcnNwcnVuZ3NmdW5rdGlvbmVuIHZvbiBqZWRlbSBnZXJ1ZmVuIHdlcmRlbi4KKyAgICAgICAgdW1nZWhlbikuCisKK0JFSVNQSUVMRQorICAgICAgICBzeW1ib2xfZnVuY3Rpb24oImVmdW46OnVzZXJzIik7CisgICAgICAgICAgICAtLT4gZXJnaWJ0OiAjJ3VzZXJzCisgICAgICAgIHN5bWJvbF9mdW5jdGlvbigiUXVlcnlQcm9wIiwgb3RoZXJfb2JqKTsKKyAgICAgICAgICAgIC0tPiBlcmdpYnQ6IG90aGVyX29iai0+UXVlcnlQcm9wKCkKKworU0lFSEUgQVVDSAorICAgICAgICBsYW1iZGEoRSksIHF1b3RlKEUpCmRpZmYgLS1naXQgYS9kb2MvZWZ1bi9zeW1ib2xfdmFyaWFibGUgYi9kb2MvZWZ1bi9zeW1ib2xfdmFyaWFibGUKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYjNhNjZkNAotLS0gL2Rldi9udWxsCisrKyBiL2RvYy9lZnVuL3N5bWJvbF92YXJpYWJsZQpAQCAtMCwwICsxLDI5IEBACitTWU5PUFNJUworICAgICAgICBjbG9zdXJlIHN5bWJvbF92YXJpYWJsZShzdHJpbmcgYXJnKTsKKyAgICAgICAgY2xvc3VyZSBzeW1ib2xfdmFyaWFibGUoc3ltYm9sIGFyZyk7CisgICAgICAgIGNsb3N1cmUgc3ltYm9sX3ZhcmlhYmxlKGludCBhcmcpOworCitCRVNDSFJFSUJVTkcKKyAgICAgICAgRXJ6ZXVndCBlaW5lIElkZW50aWZpZXIgKExmdW4pIENsb3N1cmUgYXVzIGRlciBnbG9iYWxlbiBWYXJpYWJsZW4KKyAgICAgICAgPGFyZz4gZGVzIGd1ZWx0aWdlbiBPYmpla3RzLiBEaWUgVmFyaWFibGUga2FubiBhbmdlZ2ViZW4gd2VyZGVuCisgICAgICAgIGFscyBTeW1ib2wsIG1pdCBpaHJlbSBOYW1lbiBvZGVyIGR1cmNoIGRpZSBvcmRpbmFsZSBOdW1tZXIgaW4gZGVyCisgICAgICAgIFZhcmlhYmxlbnRhYmVsbGUgZGVzIE9iamVrdHMuCisKKyAgICAgICAgV2VubiBrZWluZSBzb2xjaGUgVmFyaWFibGUgZXhpc3RpZXJ0IG9kZXIgc2llIHZvbiBhdXNzZW4gbmljaHQKKyAgICAgICAgc2ljaHRiYXIgaXN0LCB3aXJkIDAgenVydWVjayBnZWxpZWZlcnQuCisKKyAgICAgICAgV2VubiA8YXJnPiBlaW4gSW50ZWdlciBpc3QgdW5kIHNpY2ggYXVmIGVpbmUgZ2VlcmJ0ZSBWYXJpYWJsZQorICAgICAgICBiZXppZWh0LCBkaWUgaW0gZ2VlcmJ0ZW4gT2JqZWt0ICJwcml2YXRlIiBkZWtsYXJpZXJ0IGlzdCAoZC5oLgorICAgICAgICB2ZXJzdGVja3QpLCBmdWVocnQgZGllcyB6dSBlaW5lciBTY2h1dHp2ZXJsZXR6dW5nLgorCitBRU5ERVJVTkdFTgorICAgICAgICBFaW5nZWZ1ZWhydCBpbiAzLjIuMUA4CisKK0JFSVNQSUVMRQorICAgICAgICBpbnQgYmFzZTsKKyAgICAgICAgaW50IHZhcjsKKyAgICAgICAgc3ltYm9sX3ZhcmlhYmxlKCJ2YXIiKTsgICAgICAgICBlcmdpYnQ6ICMnPHRoaXNfb2JqZWN0Pi0+dmFyCisgICAgICAgIHN5bWJvbF92YXJpYWJsZSgwKTsgICAgICAgICAgICAgZXJnaWJ0OiAjJzx0aGlzX29iamVjdD4tPmJhc2UKKworU0lFSEUgQVVDSAorICAgICAgICBsYW1iZGEoRSksIHF1b3RlKEUpLCBzeW1ib2xfZnVuY3Rpb24oRSkKZGlmZiAtLWdpdCBhL2RvYy9lZnVuL3N5bWJvbHAgYi9kb2MvZWZ1bi9zeW1ib2xwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjkyYzY0YjcKLS0tIC9kZXYvbnVsbAorKysgYi9kb2MvZWZ1bi9zeW1ib2xwCkBAIC0wLDAgKzEsMTQgQEAKK1NZTk9QU0lTCisgICAgICAgIGludCBzeW1ib2xwKG1peGVkIGFyZykKKworQkVTQ0hSRUlCVU5HCisgICAgICAgIExpZWZlcnQgMSwgd2VubiBkYXMgQXJndW1lbnQgZWluIFN5bWJvbCBpc3QsIGFuc29uc3RlbiAwLgorCitCRUlTUElFTAorICAgICAgICBzeW1ib2xwKCdmb28pIGxpZWZlcnQgMS4KKworQUVOREVSVU5HRU4KKyAgICAgICAgRWluZ2VmdWVocnQgaW4gMy4yQDcwLgorCitTSUVIRSBBVUNICisgICAgICAgIGludHAoRSksIHF1b3RlKEUpCmRpZmYgLS1naXQgYS9kb2MvZWZ1bi90YWlsIGIvZG9jL2VmdW4vdGFpbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44YzUwYjM1Ci0tLSAvZGV2L251bGwKKysrIGIvZG9jL2VmdW4vdGFpbApAQCAtMCwwICsxLDkgQEAKK1NZTk9QU0lTCisgICAgICAgIHZvaWQgdGFpbChzdHJpbmcgZmlsZSk7CisKK0JFU0NIUkVJQlVORworICAgICAgICBMaXN0ZXQgZGFzIEVuZGUgZWluZXMgRmlsZXMuIEVzIGdpYnQga2VpbiBaZWlsZW5saW1pdCwgZXMgd2VyZGVuIGFiZXIKKyAgICAgICAgbWF4aW1hbCAxMDAwIEJ5dGVzIGF1c2dlZ2ViZW4uCisKK1NJRUhFIEFVQ0gKKyAgICAgICAgY2F0KEUpLCBlZChFKQpkaWZmIC0tZ2l0IGEvZG9jL2VmdW4vdGFuIGIvZG9jL2VmdW4vdGFuCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmY5OWEwODUKLS0tIC9kZXYvbnVsbAorKysgYi9kb2MvZWZ1bi90YW4KQEAgLTAsMCArMSwxMSBAQAorU1lOT1BTSVMKKyAgICAgICAgZmxvYXQgdGFuKGludHxmbG9hdCkKKworQkVTQ0hSRUlCVU5HCisgICAgICAgIExpZWZlcnQgZGVuIFRhbmdlbnMgZGVzIEFyZ3VtZW50ZXMuCisKK0FFTkRFUlVOR0VOCisgICAgICAgIExETXVkIDMuMi45OiBHYW56emFobGVuIChJbnRlZ2VycykgYWxzIEFyZ3VtZW50IGhpbnp1Z2VmdWVndC4KKworU0lFSEUgQVVDSAorICAgICAgICBzaW4oRSksIGFzaW4oRSksIGNvcyhFKSwgYWNvcyhFKSwgYXRhbihFKSwgYXRhbjIoRSkKZGlmZiAtLWdpdCBhL2RvYy9lZnVuL3RlbGxfb2JqZWN0IGIvZG9jL2VmdW4vdGVsbF9vYmplY3QKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZTJjZmQ5YwotLS0gL2Rldi9udWxsCisrKyBiL2RvYy9lZnVuL3RlbGxfb2JqZWN0CkBAIC0wLDAgKzEsNDcgQEAKK1NZTk9QU0lTCisgICAgICAgIHZvaWQgdGVsbF9vYmplY3Qob2JqZWN0fHN0cmluZyBvYmosIHN0cmluZyBzdHIpOworICAgICAgICB2b2lkIHRlbGxfb2JqZWN0KG9iamVjdHxzdHJpbmcgb2JqLCBtaXhlZCAqfG1hcHBpbmd8c3RydWN0fG9iamVjdCBtc2cpOworCitCRVNDSFJFSUJVTkcKKyAgICAgICAgU2VuZGV0IGVpbmVuIE5hY2hyaWNodCBhbiBkYXMgT2JqZWt0IDxvYmo+IChkYXMgYXVjaCBkdXJjaCBzZWluZW4KKyAgICAgICAgT2JqZWt0bmFtZW4gYW5nZWdlYmVuIHdlcmRlbiBrYW5uKS4KKworICAgICAgICBJc3QgZGllIE5hY2hyaWNodCBlaW4gU3RyaW5nLCB3aXJkIGRlciBUZXh0IGFuIGludGVyYWt0aXZlIE9iamVrdGUKKyAgICAgICAgZGlyZWt0IGF1c2dlZ2ViZW4sIGZ1ZXIgYW5kZXJlIE9iamVrdGUgd2lyZCBkaWUgbGZ1biBjYXRjaF90ZWxsKCkKKyAgICAgICAgaW4gZGllc2VuIGF1ZmdlcnVmZW4uCisKKyAgICAgICAgSXN0IGRpZSBOYWNocmljaHQgZWluIGFuZGVyZXIgVHlwLCB3aXJkIGRpZSBsZnVuIGNhdGNoX21zZygpIGltCisgICAgICAgIEVtcGZhZW5nZXIgYXVmZ2VydWZlbi4KKworQkVNRVJLVU5HRU4KKyAgICAgICAgLSB3aXJkIGluIGVpbmVtIGNhdGNoX21zZygpIGRlciBXZXJ0IHZvbiA8bXNnPiB2ZXJhZW5kZXJ0LCBlcmhhbHRlbgorICAgICAgICAgIGFsbGUgbmFjaGZvbGdlbmRlbiBPYmpla3RlIGRhcyB2ZXJhZW5kZXJ0ZSA8bXNnPiAoUmVmZXJlbnohKQorCitCRUlTUElFTEUKKyAgICAgICAgLy8gRGllcyBnaWJ0IGVpbiBlaW5mYWNoZXMgIkhpISIgYW4gZGVuIFNwaWVsZXIgVGhvbWFzIGF1czoKKworICAgICAgICAgICAgb2JqZWN0IHdlcjsKKyAgICAgICAgICAgIHdlciA9IGZpbmRfcGxheWVyKCJ0aG9tYXMiKTsKKyAgICAgICAgICAgIHRlbGxfb2JqZWN0KHdlciwgIkhpIVxuIik7CisKKyAgICAgICAgLy8gRWluIEJlaXNwaWVsIG1pdCB6d2VpIE9iamVrdGVuLCBkYXMgemVpZ3QsIHdpZSBkYXMgWnVzYW1tZW5zcGllbAorICAgICAgICAvLyB2b24gY2F0Y2hfdGVsbCgpIHVuZCB0ZWxsX29iamVjdCgpIGFibGF1ZWZ0LiBPYmpla3QxIGlzdCBlaW4KKyAgICAgICAgLy8gTGViZXdlc2VuIG1pdCBOYW1lbiAiRHVtbXltb25zdGVyIiwgT2JqZWt0MiB2ZXJ0ZWlsdCBkaWUgTWVsZHVuZzoKKworICAgICAgICBPYmpla3QxOgorICAgICAgICAgICAgdm9pZCBjYXRjaF90ZWxsKHN0cmluZyBzdHIpIHsKKyAgICAgICAgICAgICAgICB3cml0ZSgiRXJoYWx0ZW5lciBUZXh0OiAiK3N0cisiXG4iKTsKKyAgICAgICAgICAgIH0KKworICAgICAgICBPYmpla3QyOgorICAgICAgICAgICAgdm9pZCBmdW4oKSB7CisgICAgICAgICAgICAgICAgb2JqZWN0IHdlcjsKKyAgICAgICAgICAgICAgICB3ZXIgPSBmaW5kX2xpdmluZygiZHVtbXltb25zdGVyIik7CisgICAgICAgICAgICAgICAgdGVsbF9vYmplY3Qod2VyLCAiRm9sZ2UgbWlyLCBTdGVyYmxpY2hlciFcbiIpOworICAgICAgICAgICAgICAgIC4uLgorICAgICAgICAgICAgfQorCitTSUVIRSBBVUNICisgICAgICAgIEFlaG5saWNoOiAgIHdyaXRlKEUpLCBzaG91dChFKSwgc2F5KEUpLCB0ZWxsX3Jvb20oRSksIHByaW50ZihFKQorICAgICAgICBWZXJ3YW5kdDogICBjYXRjaF90ZWxsKEUpLCBjYXRjaF9tc2coQSkKKyAgICAgICAgU29uc3RpZ2VzOiAgb2JqZWN0X25hbWUoRSkKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9kb2MvZWZ1bi90ZWxsX3Jvb20gYi9kb2MvZWZ1bi90ZWxsX3Jvb20KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNzdmMzAyYwotLS0gL2Rldi9udWxsCisrKyBiL2RvYy9lZnVuL3RlbGxfcm9vbQpAQCAtMCwwICsxLDc5IEBACitGVU5LVElPTjoKKyAgICAgICAgdm9pZCB0ZWxsX3Jvb20oc3RyaW5nfG9iamVjdCBvYmosIHN0cmluZyBzdHIpOworICAgICAgICB2b2lkIHRlbGxfcm9vbShzdHJpbmd8b2JqZWN0IG9iaiwgc3RyaW5nIHN0ciwgb2JqZWN0ICpleGNsdWRlKTsKKworICAgICAgICB2b2lkIHRlbGxfcm9vbShzdHJpbmd8b2JqZWN0IG9iaiwgbWl4ZWQgKnxtYXBwaW5nfHN0cnVjdHxvYmplY3QgbXNnKQorICAgICAgICB2b2lkIHRlbGxfcm9vbShzdHJpbmd8b2JqZWN0IG9iaiwgbWl4ZWQgKnxtYXBwaW5nfHN0cnVjdHxvYmplY3QgIG1zZworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICwgb2JqZWN0ICpleGNsdWRlKTsKKworQkVTQ0hSRUlCVU5HOgorICAgICAgICBHaWJ0IGVpbmVuIFRleHQgPHN0cj4gYW4gZGVuIFJhdW0gPG9iaj4gYXVzLiA8b2JqPiBrYW5uIGF1Y2ggZGVyCisgICAgICAgIE9iamVrdG5hbWUgZGVzIFJhdW1lcyBhbHMgU3RyaW5nIHNlaW4uCisgICAgICAgIFdlbm4gZGFzIFJhdW1vYmpla3QgbWl0IHNlaW5lbSBOYW1lbiBhbmdlZ2ViZW4gaXN0LCBzdWNodCBkZXIgRHJpdmVyCisgICAgICAgIGRhcyBPYmpla3QgdW50ZXIgZGllc2VtIE5hbWVuIHVuZCBsYWVkdCBlcywgZmFsbHMgbm90d2VuZGlnLgorCisgICAgICAgIElzdCBkaWUgTmFjaHJpY2h0IGVpbiBTdHJpbmcsIHdpcmQgZGVyIFRleHQgYW4gaW50ZXJha3RpdmUgT2JqZWt0ZQorICAgICAgICBkaXJla3QgYXVzZ2VnZWJlbiwgZnVlciBhbmRlcmUgT2JqZWt0ZSB3aXJkIGRpZSBsZnVuIGNhdGNoX3RlbGwoKQorICAgICAgICBpbiBkaWVzZW4gYXVmZ2VydWZlbi4KKyAgICAgICAgRmFsbHMgZWluIExld2ViZXNlbiBkaWUgRnVua3Rpb24gY2F0Y2hfdGVsbCgpIGRlZmluaWVydCAoLT4gc2hhZG93KSwKKyAgICAgICAgc28gd2lyZCBkZXIgVGV4dCBoaWVyIGF1c2dld2VydGV0IHVuZCBuaWNodCBhbiBkZW4gVXNlciBhdXNnZWdlYmVuLgorCisgICAgICAgIFdlbm4gZGFzIHp3ZWl0ZSBBcmd1bWVudCwgZGllIE5hY2hyaWNodCwga2VpbiBTdHJpbmcgaXN0LCB3aXJkIGluCisgICAgICAgIGFsbGVuIExlYmV3ZXNlbiwgZGllIGRlbiBUZXh0IGVyaGFsdGVuLCBjYXRjaF9tc2coKSBhbnN0YXR0CisgICAgICAgIGNhdGNoX3RlbGwoKSBhdWZnZXJ1ZmVuLgorCisgICAgICAgIE1pdCBkZW0gQXJyYXkgPCpleGNsdWRlPiBrYW5uIG1hbiB2ZXJoaW5kZXJuLCBkYXNzIGRpZSBOYWNocmljaHQgYW4KKyAgICAgICAgZGllIGRhcmluIGVudGhhbHRlbmVuIE9iamVrdGUgZ2VzZW5kZXQgd2lyZC4KKyAgICAgICAgRGFzIGlzdCBzaW5udm9sbCwgd2VubiB6QiBlaW4gU3BpZWxlciBBdXNsb2VzZXIgZWluZXIgTWVsZHVuZyBpc3QKKyAgICAgICAgdW5kIGRpZXNlIHNlbGJzdCBuaWNodCBlcmhhbHRlbiBzb2xsLgorCitCRU1FUktVTkdFTjoKKyAgICAgICAgLSBkZXIgRWludHJhZyB2b24gbWVocmVyZW4gQW53ZXNlbmRlbiBpbiAqZXhjbHVkZSBpc3QgbW9lZ2xpY2gKKyAgICAgICAgLSB3aXJkIGluIGVpbmVtIGNhdGNoX21zZygpIGRlciBXZXJ0IHZvbiA8bXNnPiB2ZXJhZW5kZXJ0LCBlcmhhbHRlbgorICAgICAgICAgIGFsbGUgbmFjaGZvbGdlbmRlbiBPYmpla3RlIGRhcyB2ZXJhZW5kZXJ0ZSA8bXNnPiAoUmVmZXJlbnohKQorCisgICAgICAgIC0gc2F5KCJzdHIiKSBpc3QgdmVyaGFsdGVuc2dsZWljaCB6dQorICAgICAgICAgIHRlbGxfcm9vbShlbnZpcm9ubWVudCgpLCAic3RyIiwgKHt0aGlzX3BsYXllcigpfHx0aGlzX29iamVjdCgpfSkpCisKK0JFSVNQSUVMRToKKyAgICAgICAgLy8gRGllcyBpc3QgZWluIGVpbmZhY2hlcyBCZWlzcGllbCBmdWVyIGVpbmUgTWVsZHVuZyBhbiBhbGxlIEFuLQorICAgICAgICAvLyB3ZXNlbmRlbiBpbSBSYXVtLgorCisgICAgICAgIHRlbGxfcm9vbSh0aGlzX29iamVjdCgpLCJFaW4gbGVpY2h0ZXIgV2luZCBrb21tdCBhdWYuXG4iKTsKKworICAgICAgICAvLyBEaWVzZSBNZWxkdW5nIHdpcmQgaW0gUmF1bSAvZC9lYmVuZS9hcmsvcmF1bS5jIGF1c2dlZ2ViZW4sIGRpZXNlcgorICAgICAgICAvLyBSYXVtIG11c3MgbmljaHQgZGVyamVuaWdlIHNlaW4sIGluIGRlbSBkYXMgdGVsbF9yb29tKCkgYXVzZ2VmdWVocnQKKyAgICAgICAgLy8gd2lyZC4KKworICAgICAgICB0ZWxsX3Jvb20oIi9kL2ViZW5lL2Fyay9yYXVtIiwiRWluIGxlaWNodGVyIFdpbmQga29tbXQgYXVmLlxuIik7CisKKworICAgICAgICAvLyBEaWVzZSBNZWxkdW5nIHdpcmQgYW4gYWxsZSBBbndlc2VuZGVuIGltIFJhdW0gQVVTU0VSIHRoaXNfcGxheWVyKCkKKyAgICAgICAgLy8gKGRlciBkaWVzZSBNZWxkdW5nIGF1c2dlbG9lc3QgaGF0KSBhdXNnZWdlYmVuLiBEZXIgbXVzcyBlaW5lIGdlLQorICAgICAgICAvLyBzb25kZXJ0ZSBNZWxkdW5nIHVlYmVyIHNlaW4gU3RvbHBlcm4gcGVyIHdyaXRlKCkgb2RlcgorICAgICAgICAvLyB0ZWxsX29iamVjdCgpIGJla29tbWVuLgorICAgICAgICB0ZWxsX3Jvb20odGhpc19vYmplY3QoKSwKKyAgICAgICAgICAgICAgICAgIGJyZWFrX3N0cmluZyh0aGlzX3BsYXllcigpLT5OYW1lKCkrIiBzdG9scGVydC4iLCA3OCksCisgICAgICAgICAgICAgICAgICAoeyB0aGlzX3BsYXllcigpIH0pKTsKKyAgICAgICAgdGVsbF9vYmplY3QodGhpc19wbGF5ZXIoKSwgIkR1IHN0b2xwZXJzdC5cbiIpOworCisgICAgICAgIC8vIEVpbiBCZWlzcGllbCBtaXQgendlaSBPYmpla3RlbiwgZGFzIHplaWd0LCB3aWUgZGFzIFp1c2FtbWVuc3BpZWwKKyAgICAgICAgLy8gdm9uIGNhdGNoX3RlbGwoKSB1bmQgdGVsbF9yb29tKCkgYWJsYXVlZnQuIE9iamVrdDEgaXN0IGVpbgorICAgICAgICAvLyBMZWJld2VzZW4gbWl0IE5hbWVuICJEdW1teW1vbnN0ZXIiLCBPYmpla3QyIHZlcnRlaWx0IGRpZSBNZWxkdW5nOgorCisgICAgICAgIE9iamVrdDEgKGVpbiBMZWJld2VzZW4sIHN0ZWh0IGltIEVudiB2b24gdGhpc19wbGF5ZXIoKSk6CisgICAgICAgICAgICB2b2lkIGNhdGNoX3RlbGwoc3RyaW5nIHN0cikgeworICAgICAgICAgICAgICAgIHdyaXRlKCJFbXBmYW5nZW46ICIrc3RyKyJcbiIpOworICAgICAgICAgICAgfQorCisgICAgICAgIE9iamVrdDI6CisgICAgICAgICAgICB2b2lkIGZ1bigpIHsKKyAgICAgICAgICAgICAgICB0ZWxsX3Jvb20oZW52aXJvbm1lbnQodGhpc19wbGF5ZXIoKSksICJIYWxsbyBXZWx0IVxuIik7CisgICAgICAgICAgICB9CisKK1NJRUhFIEFVQ0gKKyAgICAgICAgQWVobmxpY2g6ICAgdGVsbF9vYmplY3QoRSksIHdyaXRlKEUpLCBzaG91dChFKSwgc2F5KEUpLCBwcmludGYoRSkKKyAgICAgICAgVmVyd2FuZHQ6ICAgY2F0Y2hfdGVsbChFKSwgY2F0Y2hfbXNnKEEpCisgICAgICAgIFNvbnN0aWdlczogIG9iamVjdF9uYW1lKEUpCisKKzcuQXVnIDIwMDcgR2xvaW5zb24KZGlmZiAtLWdpdCBhL2RvYy9lZnVuL3Rlcm1pbmFsX2NvbG91ciBiL2RvYy9lZnVuL3Rlcm1pbmFsX2NvbG91cgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi42Y2QxYmNlCi0tLSAvZGV2L251bGwKKysrIGIvZG9jL2VmdW4vdGVybWluYWxfY29sb3VyCkBAIC0wLDAgKzEsMTI3IEBACitTWU5PUFNJUworICAgICAgICB2YXJhcmdzIHN0cmluZyB0ZXJtaW5hbF9jb2xvdXIoc3RyaW5nIHN0ciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG51bGwgfCBtYXBwaW5nIHwgY2xvc3VyZSBtYXAsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgd3JhcCwgaW50IGluZGVudCk7CitCRVNDSFJFSUJVTkcKKyAgICAgICAgSXN0IDxtYXA+IGVpbiBXZXJ0IHVuZ2xlaWNoIDAsIGVyc2V0enQgZGllc2UgRWZ1biBhbGxlIEZhcmItCisgICAgICAgIERlZmluaXRpb25lbiBkZXIgRm9ybSAiJV5LRVklXiIgKHNpZWhlIHVudGVuIGZ1ZXIgRGV0YWlscykgaW0KKyAgICAgICAgU3RyaW5nIDxzdHI+IHVuZCBlcnNldHp0IHNpZSBkdXJjaCBkaWUgZW50c3ByZWNoZW5kZW4gV2VydGUgYXVzIGRlbQorICAgICAgICB1bnRlciA8bWFwPiBhbmdlZ2ViZW5lbiBGYXJic2NobHVlc3NlbC4KKworICAgICAgICBJc3QgPG1hcD4gZWluIE1hcHBpbmcsIG11ZXNzZW4gZGllIEVpbnRyYWVnZSBkYXMgRm9ybWF0CisgICAgICAgICJLRVkiIDogIndlcnQiIGhhYmVuOyBFaW50cmFlZ2UsIGRpZSBrZWluZSBTdHJpbmdzIGVudGhhbHRlbiwKKyAgICAgICAgd2VyZGVuIGlnbm9yaWVydC4gRWluemlnZSBBdXNuYWhtZSBkYXp1OiBlbnRoYWVsdCA8bWFwPiBlaW5lbgorICAgICAgICBFaW50cmFnIGRlciBGb3JtIDA6d2VydCwgd2lyZCBkaWVzZXIgZnVlciBhbGxlIEZhcmJkZWZpbml0aW9uZW4KKyAgICAgICAgdmVyd2VuZGV0LCBkaWUga2VpbmVtIGFuZGVyZW4gU2NobHVlc3NlbCB6dWdlb3JkbmV0IHdlcmRlbiBrb2VubmVuLgorICAgICAgICA8d2VydD4ga2FubiBpbiBkaWVzZW0gRmFsbCBlaW4gU3RyaW5nIG9kZXIgZWluZSBDbG9zdXJlIHNlaW4uIEhhbmRlbHQKKyAgICAgICAgZXMgc2ljaCB1bSBlaW5lIENsb3N1cmUsIGVyaGFlbHQgZGllc2UgZGVuIDxLRVk+IGFscyBBcmd1bWVudCB1bmQKKyAgICAgICAgbXVzcyBlaW5lbiBTdHJpbmcgenVydWVjayBsaWVmZXJuLCBkZXIgPEtFWT4gZXJzZXR6dC4KKworICAgICAgICBJc3QgPG1hcD4gZWluZSBDbG9zdXJlLCB3aXJkIGRpZXNlIG1pdCBkZW4gRmFyYmRlZmluaXRpb25lbiA8S0VZPgorICAgICAgICBhbHMgQXJndW1lbnQgYXVmZ2VydWZlbiB1bmQgbXVzcyBlaW5lbiBTdHJpbmcgenVydWVjayBsaWVmZXJuLCBkZXIKKyAgICAgICAgZGllIDxLRVk+cyBlcnNldHp0LgorCisgICAgICAgIERpZSBzcGV6aWVsbGVuIFNjaGx1ZXNzZWwgIiVeJV4iIHVuZCAiJSVeXiIgd2VyZGVuIGltbWVyIGR1cmNoIGRhcworICAgICAgICBMaXRlcmFsICIlXiIgZXJzZXR6dC4KKworICAgICAgICBEaWUgUGFyYW1ldGVyIDx3cmFwPiB1bmQgPGluZGVudD4gc2luZCBvcHRpb25hbC4gSXN0IG51ciA8d3JhcD4KKyAgICAgICAgYW5nZWdlYmVuLCB3aXJkIDxzdHI+IGluIGRlciBTcGFsdGUgPHdyYXA+IHVtZ2Vicm9jaGVuLiBJc3QKKyAgICAgICAgenVzYWV0emxpY2ggPGluZGVudD4gYW5nZWdlYmVuLCB3ZXJkZW4gYWxsZSB1bWdlYnJvY2hlbmVuIFplaWxlbgorICAgICAgICB1bSA8aW5kZW50PiBTcGFsdGVuIGVpbmdlcnVlY2t0LgorCisgICAgICAgIERlciBaZWlsZW51bWJydWNoIGlnbm9yaWVydCBkaWUgTGFlbmdlIGRlciBGYXJibWFrcm9zIHVuZCBpaHJlcgorICAgICAgICBJbmhhbHRlLiBFciBicmljaHQgPHN0cj4gYW5oYW5kIGRlciBMYWVuZ2UgZGVyIHVlYnJpZ2VuIFplaWNoZW4KKyAgICAgICAgdW0sIGlzdCBhbHNvIGZhcmItbmV1dHJhbC4KKworICAgICAgICBJc3QgPG1hcD4gYWxzIDAgYW5nZWdlYmVuLCBmdWVocnQgZGllIEVmdW4ga2VpbiBTdWNoZW4gdW5kIEVyc2V0emVuCisgICAgICAgIHZvbiBGYXJiZGVmaW5pdGlvbmVuIGR1cmNoLiBEaWUgRnVua3Rpb25hbGl0YWV0IHZvbiBaZWlsZW51bWJydWNoCisgICAgICAgIHVuZCBFaW5ydWVja3VuZyBibGVpYmVuIGVyaGFsdGVuLCB3ZW5uIGdld3VlbnNjaHQuIEF1ZiBkaWVzZSBXZWlzZQorICAgICAgICBkdXBsaXppZXJ0IHRlcm1pbmFsX2NvbG91cigpIGRpZSBGdW5rdGlvbiB2b24gc3ByaW50ZigiJS09cyIpIHVuZAorICAgICAgICB3aXJrdCBhbHMgZWluZmFjaGUgWmVpbGVudW1icnVjaCBGdW5rdGlvbi4KKworCisgICAgICAgIEVSS0VOTkVOIFZPTiBGQVJCREVGSU5JVElPTkVOCisKKyAgICAgICAgV2llIGJlcmVpdHMgZXJ3YWVobnQsIHdlcmRlbiBkaWUgc3BlemllbGxlbiBTY2hsdWVzc2VsICIlXiVeIiB1bmQKKyAgICAgICAgIiUlXl4iIGR1cmNoIGRhcyBMaXRlcmFsICIlXiIgZXJzZXR6dCB1bmQgc3BpZWxlbiBpbSBXZWl0ZXJlbgorICAgICAgICBrZWluZSBSb2xsZS4KKworICAgICAgICBGdWVyIGRlbiBFaW5nYWJlc3RyaW5nIHdpcmQgZGFzIGZvbGdlbmRlIEZvcm1hdCB2b3JhdXNnZXNldHp0OgorCisgICAgICAgICAgICB0ZXh0IHsgJyVeJyBjb2xvcmtleSAnJV4nIHRleHQgfSBbICclXicgY29sb3JrZXkgXQorCisgICAgICAgIE9kZXIgaW4gV29ydGVuOiBkaWUgRWZ1biB0cmVubnQgZGVuIFN0cmluZyBiZWkgamVkZW0gJyVeJywgZGFzCisgICAgICAgIHNpZSBhbnRyaWZmdCB1bmQgYmVoYW5kZWx0IGFuc2NobGllc3NlbmQgamVkZW4gendlaXRlbiBUZWlsc3RyaW5nCisgICAgICAgIGFscyBGYXJic2NobHVlc3NlbC4KKworICAgICAgICBNZXJrZTogZGllc2VzIFZlcmhhbHRlbiB1bnRlcnNjaGVpZGV0IHNpY2ggdm9uIGRlciBCZWhhbmRsdW5nIGRlcworICAgICAgICBFaW5nYWJlc3RyaW5ncyB1bnRlciBNdWRPUy4gRG9ydCBsYXV0ZXQgZGllIFN5bnRheDoKKworICAgICAgICAgICAga2V5X29kZXJfdGV4dCB7ICclXicga2V5X29kZXJfdGV4dCB9CisKKyAgICAgICAgT2RlciBpbiBXb3J0ZW46IGRpZSBNdWRPUyBFZnVuIHRyZW5udCBkZW4gU3RyaW5nIGJlaSBqZWRlbSAnJV4nCisgICAgICAgIHVuZCB2ZXJzdWNodCBkYW5uIGplZGVuIFRlaWxzdHJpbmcgYWxzIEZhcmJzY2hsdWVzc2VsIHp1IGJlaGFuZGVsbi4KKyAgICAgICAgRGllc2VzIFZlcmhhbHRlbiBsYWVzc3Qgc2ljaCBhdWNoIHVudGVyIExQQyBlcnJlaWNoZW46CisKKyAgICAgICAgICBzdHJpbmcgbXVkb3NfdGVybWluYWxfY29sb3VyKHN0cmluZyBzdHIsIG1hcHBpbmcgZXh0LCBpbnQgdywgaW50IGkpCisgICAgICAgICAgeworICAgICAgICAgICAgcmV0dXJuIHRlcm1pbmFsX2NvbG91cigiJV4iK2ltcGxvZGUoZXhwbG9kZShzdHIsICIlXiIpLSh7IiJ9KQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAsIiVeJV4iKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICwgZXh0LCB3LCBpKTsKKyAgICAgICAgICB9CisKKworQkVJU1BJRUxFCisgICAgICAgIG1hcHBpbmcgdHJhbnM7CisgICAgICAgIHN0cmluZyBzdHI7CisKKyAgICAgICAgdHJhbnMgPSAoWyAiR1JFRU4iIDogImFuc2ktZ3JlZW4iLCAiUkVEIiA6ICIiLCAiQkxVRSIgOiAxIF0pOworCisgICAgICAgIHN0ciA9IHRlcm1pbmFsX2NvbG91ciggIiVeR1JFRU4lXiBhbmQgJV5SRUQlXiBhbmQgJV5CTFVFJV4iLCB0cmFucyApOworCisgICAgICAgIERpZXMgZnVlaHJ0IHp1IHN0ciA9PSAiYW5zaS1ncmVlbiBhbmQgIGFuZCBCTFVFIi4KKworICAgICAgICAiJV5HUkVFTl4lIiB3aXJkIGVyc2V0enQgZHVyY2ggImFuc2ktZ3JlZW4iLCB3ZWlsIDx0cmFucz4gZGFzIHNvCisgICAgICAgIGRlZmluaWVydCwKKyAgICAgICAgIiVeUkVEJV4iIHdpcmQgYXVzIDxzdHI+IGVudGZlcm50LCB3ZWlsIGVzIG1pdCAiIiBlcnNldHp0IHdpcmQsIHVuZAorICAgICAgICAiJV5CTFVFJV4iIHdpcmQgdW0gZGllICIlXiIgdmVya3VlcnQsIHdlaWwgZGVyIEVpbnRyYWcgenUgQkxVRSBpbgorICAgICAgICA8dHJhbnM+IGtlaW5lbiBndWVsdGlnZW4gV2VydCBlbnRoYWVsdCAoZC5oLiBrZWluIFN0cmluZyBpc3QpLiBEYXMKKyAgICAgICAgc2VsYmUgd3VlcmRlIHBhc3NpZXJlbiwgd2VubiA8c3RyPiAiJV5ERUZJTkUlXiIgZW50aGFsdGVuIHd1ZXJkZSwKKyAgICAgICAgenUgZGVtIGVzIGtlaW5lbiBFaW50cmFnIGluIDx0cmFucz4gZ2lidC4KKworICAgICAgICBNZXJrZTogdW0gZGlyZWt0IGJlbmFjaGJhcnRlIFNjaGx1ZXNzZWwgenUgZXJzZXR6ZW4sIHNvbGwgZGllCisgICAgICAgIEVmdW4gd2llIGZvbGd0IHZlcndlbmRldCB3ZXJkZW46CisKKyAgICAgICAgICAgIHN0ciA9IHRlcm1pbmFsX2NvbG91ciggIiVeR1JFRU4lXiVeUkVEJV4iLCB0cmFucyApOworCisgICAgICAgIEVpbmUgRWluZ2FiZSBkZXIgRm9ybQorCisgICAgICAgICAgICBzdHIgPSB0ZXJtaW5hbF9jb2xvdXIoICIlXkdSRUVOJV5SRUQlXiIsIHRyYW5zICk7CisKKyAgICAgICAgZnVlaHJ0IHp1bSBsb2dpc2NoZW4sIGFiZXIgdmllbGxlaWNodCB1bmVyd2FydGV0ZW4gRXJnZWJuaXMKKyAgICAgICAgImFuc2ktZ3JlZW5SRUQiLgorCisKKyAgICAgICAgRWluaWdlIFdvcnRlIHp1bSBaZWlsZW51bWJydWNoOgorCisgICAgICAgIEVpbiBTdHJpbmcsIGRlciBvaG5lIEVpbnJ1ZWNrdW5nIHVtZ2Vicm9jaGVuIHdpcmQgKDxpbmRlbnQ+IGlzdCAwKSwKKyAgICAgICAgc2llaHQgc28gYXVzOgorCisgICAgICAgICAgICAiZGllcyBpc3QgZGllIGVyc3RlIFplaWxlXG51bmQgZGllcyBpc3QgZGllIHp3ZWl0ZSBaZWlsZSIKKworICAgICAgICBFaW4gU3RyaW5nLCBkZXIgbWl0IDxpbmRlbnQ+IDMgdW1nZWJyb2NoZW4gd2lyZCwgc2llaHQgc28gYXVzOgorCisgICAgICAgICAgICAiZGllcyBpc3QgZGllIGVyc3RlIFplaWxlXG4gICB1bmQgZGllcyBpc3QgZGllIHp3ZWl0ZSBaZWlsZSIKKworQUVOREVSVU5HRU4KKyAgICAgICAgRGllIElkZWUgZnVlciBkaWVzZSBFZnVuIHVuZCBkaWUgZXJzdGUgSW1wbGVtZW50aWVydW5nIHN0YW1tZW4KKyAgICAgICAgYXVzIE11ZE9TOyBkaWUgU3RyYXRlZ2llIGZ1ZXIgZGFzIEVya2VubmVuIHZvbiBTY2hsdWVzc2VsbgorICAgICAgICAoZWluZ2VzY2hsb3NzZW4gZGllIHB1cmUgWmVpbGVudW1icnVjaCBGdW5rdGlvbikgd3VyZGUgaW4KKyAgICAgICAgTERNdWQgMy4yLjggZ2VnbGFldHRldC4KKyAgICAgICAgTERNdWQgMy4yLjkgZnVlZ3RlIGRpZSBWZXJ3ZW5kdW5nIHZvbiBDbG9zdXJlcyB6dXIgRGVmaW5pdGlvbgorICAgICAgICB2b24gRmFyYnNjaGx1ZXNzZWxuIGhpbnp1LiBFcyBlcmtsYWVydGUgenVkZW0gb2ZmaXppZWxsIGRhcworICAgICAgICBWZXJoYWx0ZW4gYmV0cmVmZmVuICIlJV5eIiBhdXMgR3J1ZW5kZW4gYmVzc2VyZXIgS29tcGF0aWJpbGl0YWV0CisgICAgICAgIG1pdCBNdWRPUy4KKworU0lFSEUgQVVDSAorICAgICAgICBzcHJpbnRmKEUpCmRpZmYgLS1naXQgYS9kb2MvZWZ1bi90ZXN0X2JpdCBiL2RvYy9lZnVuL3Rlc3RfYml0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmFmODJjOTUKLS0tIC9kZXYvbnVsbAorKysgYi9kb2MvZWZ1bi90ZXN0X2JpdApAQCAtMCwwICsxLDIxIEBACitTWU5PUFNJUworICAgICAgICBpbnQgdGVzdF9iaXQoc3RyaW5nIHN0ciwgaW50IG4pOworCitCRVNDSFJFSUJVTkcKKyAgICAgICAgR2lidCAwIG9kZXIgMSBkZXMgPG4+LXRlbiBCaXRzIGltIFN0cmluZyA8c3RyPiB6dXJ1ZWNrLgorCisgICAgICAgIEplZGVzIFplaWNoZW4gYmVzdGVodCBhdXMgNiBCaXRzLiBKZWRlbSBaZWljaGVuIGlzdCBhbHNvIGVpbiBXZXJ0CisgICAgICAgIHp3aXNjaGVuIDAgdW5kIDYzIHp1Z2VvcmRuZXQgKHdlaWwgMl42PTY0KS4gRGFzIGVyc3RlIFplaWNoZW4gaXN0IGRlcgorICAgICAgICBMZWVyc2NobGFnICIgIiBtaXQgZGVtIFdlcnQgMCAoa2VpbmVzIGRlciBCaXRzIGlzdCBnZXNldHp0KS4gRGFzCisgICAgICAgIGVyc3RlIFplaWNoZW4gaW0gU3RyaW5nIGlzdCBkYXNqZW5pZ2UgbWl0IGRlbiBuaWVkcmlnc3RlbiBCaXRzICgwLTUpLgorCitCRUlTUElFTEUKKyAgICAgICAgdGVzdF9iaXQoIl8iLCA1KTsgICBMaWVmZXJ0IDEsIHdlaWwgIl8iIGRhcyA2My4gWmVpY2hlbiBpc3QgdW5kCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVzaGFsYiBkYXMgNS4gQml0IGdlc2V0enQgaGF0LgorCisgICAgICAgIHRlc3RfYml0KCIgIiwgMyk7ICAgTGllZmVydCAwLCB3ZWlsICIgIiBkYXMgMC4gWmVpY2hlbiBpc3QgdW5kIGRlc2hhbGIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBrZWluIEJpdCBnZXNldHp0IGhhdC4KKworU0lFSEUgQVVDSAorICAgICAgICBzZXRfYml0KEUpLCBjbGVhcl9iaXQoRSksIGxhc3RfYml0KEUpLCBuZXh0X2JpdChFKSwgY291bnRfYml0cyhFKSwKKyAgICAgICAgYW5kX2JpdHMoRSksIG9yX2JpdHMoRSksIHhvcl9iaXRzKEUpLCBpbnZlcnRfYml0cyhFKSwgY29weV9iaXRzKEUpCmRpZmYgLS1naXQgYS9kb2MvZWZ1bi90aGlzX2ludGVyYWN0aXZlIGIvZG9jL2VmdW4vdGhpc19pbnRlcmFjdGl2ZQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi45MjkzOGJiCi0tLSAvZGV2L251bGwKKysrIGIvZG9jL2VmdW4vdGhpc19pbnRlcmFjdGl2ZQpAQCAtMCwwICsxLDkgQEAKK1NZTk9QU0lTCisgICAgICAgIG9iamVjdCB0aGlzX2ludGVyYWN0aXZlKCk7CisKK0JFU0NIUkVJQlVORworICAgICAgICBEaWUgRnVua3Rpb24gZ2lidCBkYXMgbW9tZW50YW5lIGludGVyYWt0aXZlIE9iamVrdCB6dXJ1ZWNrLCBmYWxscworICAgICAgICB2b3JoYW5kZW4sIGFsc28gZGFzamVuaWdlIHdlbGNoZXMgImRpZSBFbnRlcnRhc3RlIGdlZHJ1ZWNrdCBoYXQiLgorCitTSUVIRSBBVUNICisgICAgICAgIHRoaXNfcGxheWVyKEUpLCBwcmV2aW91c19vYmplY3QoRSksIGludGVyYWN0aXZlKEUpLCBsaXZpbmcoRSkKZGlmZiAtLWdpdCBhL2RvYy9lZnVuL3RoaXNfb2JqZWN0IGIvZG9jL2VmdW4vdGhpc19vYmplY3QKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNWI2MDI3NgotLS0gL2Rldi9udWxsCisrKyBiL2RvYy9lZnVuL3RoaXNfb2JqZWN0CkBAIC0wLDAgKzEsMTAgQEAKK1NZTk9QU0lTOgorICAgICAgICBvYmplY3QgdGhpc19vYmplY3Qodm9pZCkKKworREVTQ1JJUFRJT046CisgICAgICAgIFJldHVybiB0aGUgb2JqZWN0IHBvaW50ZXIgZm9yIHRoaXMgb2JqZWN0LiBUaGlzIGlzIG5vdCB0byBiZQorICAgICAgICBjb25mdXNlZCB3aXRoIHRoZSBpbnRlcm5hbCBuYW1lIG9mIGFuIG9iamVjdCwgd2hpY2ggaXMgdXNlZCBieQorICAgICAgICB0aGUgaWQoKSBmdW5jdGlvbi4KKworU0VFIEFMU086CisgICAgICAgIHRoaXNfcGxheWVyKEUpLCBwcmV2aW91c19vYmplY3QoRSksIG9iamVjdF9uYW1lKEUpLCBmaW5kX29iamVjdChFKQpkaWZmIC0tZ2l0IGEvZG9jL2VmdW4vdGhpc19wbGF5ZXIgYi9kb2MvZWZ1bi90aGlzX3BsYXllcgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41YWI2NDIwCi0tLSAvZGV2L251bGwKKysrIGIvZG9jL2VmdW4vdGhpc19wbGF5ZXIKQEAgLTAsMCArMSwxOCBAQAorU1lOT1BTSVMKKyAgICAgICAgb2JqZWN0IHRoaXNfcGxheWVyKCk7CisKK0JFU0NIUkVJQlVORworICAgICAgICBMaWVmZXJ0IGRlbiBtb21lbnRhbmVuIEtvbW1hbmRvZ2ViZXIuIERhcyBrYW5uIGVpbiBpbnRlcmFrdGl2ZXIKKyAgICAgICAgQmVudXR6ZXIgb2RlciBlaW4gbGViZW5kaWdlcyBPYmpla3Qgc2VpbiwgenVtIEJlaXNwaWVsIGVpbiBOUEMuCisKKyAgICAgICAgV2VubiBkaWUgRnVua3Rpb24gdm9uIGlubmVyaGFsYiBkZXMgaGVhcnRfYmVhdCgpIGVpbmVzIG5pY2h0CisgICAgICAgIGxlYmVuZGlnZW4gT2JqZWt0cyBhdWZnZXJ1ZmVuIHdpcmQsIHdpcmQgMCB6dXJ1ZWNrIGdlZ2ViZW4uCisKK0JFSVNQSUVMCisgICAgICAgIGlmKHRoaXNfcGxheWVyKCkgIT0gdGhpc19pbnRlcmFjdGl2ZSgpKQorICAgICAgICB7CisgICAgICAgICAgICB3cml0ZSgiSGV5LCBqZW1hbmQgendpbmd0IHVucywgS29tbWFuZG9zIGF1c3p1ZnVlaHJlbiFcbiIpOworICAgICAgICB9CisKK1NJRUhFIEFVQ0gKKyAgICAgICAgdGhpc19vYmplY3QoRSksIHByZXZpb3VzX29iamVjdChFKSwgaW50ZXJhY3RpdmUoRSksIGxpdmluZyhFKQpkaWZmIC0tZ2l0IGEvZG9jL2VmdW4vdGhyb3cgYi9kb2MvZWZ1bi90aHJvdwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4yYTIxY2RlCi0tLSAvZGV2L251bGwKKysrIGIvZG9jL2VmdW4vdGhyb3cKQEAgLTAsMCArMSwxNiBAQAorU1lOT1BTSVMKKyAgICAgICAgdm9pZCB0aHJvdyhtaXhlZCBhcmcpOworCitCRVNDSFJFSUJVTkcKKyAgICAgICAgQnJpY2h0IGRpZSBQcm9ncmFtbXZlcmFyYmVpdHVuZyBhYi4gV2VubiBkaWUgVmVyYXJiZWl0dW5nIG1pdCBjYXRjaCgpCisgICAgICAgIGdlc3RhcnRldCB3dXJkZSwgZ2lidCBkaWVzZXMgY2F0Y2goKSA8YXJnPiBhbHMgRmVobGVybWVsZHVuZyBhdXMuCisKKyAgICAgICAgRGVyIEF1ZnJ1ZiB2b24gdGhyb3coKSBvaG5lIHZvcmhlcmlnZXMgY2F0Y2goKSBpc3Qgc2lubmxvcyB1bmQKKyAgICAgICAgZXJ6ZXVndCBlaW5lbiAidGhyb3cgd2l0aG91dCBjYXRjaCIgRmVobGVyLgorCitCRUlTUElFTAorICAgICAgICBjYXRjaCh0aHJvdygiVmVyYXJiZWl0dW5nIGFiZ2Vicm9jaGVuISIpKTsKKyAgICAgICAgRGFzIG1hY2h0IG5pY2h0cyBhbHMgIlZlcmFyYmVpdHVuZyBhYmdlYnJvY2hlbiEiIGF1c3p1Z2ViZW4uCisKK1NJRUhFIEFVQ0gKKyAgICAgICAgY2F0Y2goRSksIHJhaXNlX2Vycm9yKEUpCmRpZmYgLS1naXQgYS9kb2MvZWZ1bi90aW1lIGIvZG9jL2VmdW4vdGltZQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5mNzAxNmE0Ci0tLSAvZGV2L251bGwKKysrIGIvZG9jL2VmdW4vdGltZQpAQCAtMCwwICsxLDIxIEBACitTWU5PUFNJUworICAgICAgICBpbnQgdGltZSgpOworCitCRVNDSFJFSUJVTkcKKyAgICAgICAgTGllZmVydCBkaWUgQW56YWhsIFNla3VuZGVuLCBkaWUgc2VpdCBkZW0gMDEuIEphbnVhciAxOTcwLAorICAgICAgICAwMDowMDowMCBHTVQgdmVyc3RyaWNoZW4gc2luZC4KKworICAgICAgICBEaWUgWmVpdGFuZ2FiZSBiYXNpZXJ0IGF1ZiBkZXIgU3lzdGVtemVpdCBkZXMgSG9zdHMsIGRlciBEcml2ZXIKKyAgICAgICAgc3RlbGx0IGplZG9jaCBzaWNoZXIsIGRhc3MgZGFzIFJlc3VsdGF0IHZvbiB0aW1lKCkgbW9ub3RvbiBhbnN0ZWlndAorICAgICAgICAoYWxzbyBpbW1lciBudXIgenUgaG9laGVyZW4gV2VydGVuIHdlY2hzZWx0KS4KKworICAgICAgICBEYXMgUmVzdWx0YXQgdm9uIHRpbWUoKSB2ZXJhZW5kZXJ0IHNpY2ggbmljaHQgd2FlaHJlbmQgZGVtIEFiYXJiZWl0ZW4KKyAgICAgICAgZWluZXMgS29tbWFuZG9zLgorCitCRUlTUElFTAorICAgICAgICBVbSBkYXMgYWt0dWVsbGUgRGF0dW0gdW5kIGRpZSBha3R1ZWxsZSBaZWl0IGFuenV6ZWlnZW46CisKKyAgICAgICAgICAgIHdyaXRlKGN0aW1lKHRpbWUoKSkrIlxuIik7CisKK1NJRUhFIEFVQ0gKKyAgICAgICAgY3RpbWUoRSksIGdtdGltZShFKSwgbG9jYWx0aW1lKEUpLCB1dGltZShFKQpkaWZmIC0tZ2l0IGEvZG9jL2VmdW4vdGxzX2F2YWlsYWJsZSBiL2RvYy9lZnVuL3Rsc19hdmFpbGFibGUKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uODA0YTAzZAotLS0gL2Rldi9udWxsCisrKyBiL2RvYy9lZnVuL3Rsc19hdmFpbGFibGUKQEAgLTAsMCArMSwxOSBAQAorUFJFTElNSU5BUlkKK1NZTk9QU0lTCisgICAgICAgIGludCB0bHNfYXZhaWxhYmxlKCkKKworREVTQ1JJUFRJT04KKyAgICAgICAgSWYgdGhlIGdsb2JhbCBUTFMgaW5pdGlhbGlzYXRpb24gY291bGQgbm90IGJlZW4gc2V0IHVwLCAKKyAgICAgICAgdGxzX2lzX2F2YWlsYWJsZSgpIHJldHVybnMgMCwgb3RoZXJ3aXNlIDEuCisgICAgICAgIEl0IGlzIG5vdCB2ZXJ5IHVzZWZ1bCBjYWxsaW5nIGFueSBvdGhlciB0bHNfKi1lZnVuIGlmIHRoaXMgb25lIAorICAgICAgICByZXR1cm5zIDAsIHNpbmNlIHRoZXJlIGlzIG5vIFRMUy1lbmNyeXB0aW9uIGF2YWlsYWJsZS4KKyAgICAgICAgTW9zdCBsaWtlbHkgdGhlIGdsb2JhbCBpbml0aWFsaXNhdGlvbiBmYWlscyBkdWUgdG8gbWlzc2luZyBvciAKKyAgICAgICAgdW5yZWFkYWJsZSBrZXkgcmVzcC4gY2VydGlmaWNhdGUtZmlsZS4KKworSElTVE9SWQorICAgICAgICBJbnRyb2R1Y2VkIGluIExETXVkIDMuMy40NzQgYW5kIGZvbGxvd2luZywgYmFja3BvcnRlZCB0byAzLjIuMTEuCisKK1NFRSBBTFNPCisgICAgICAgIHRsc19pbml0X2Nvbm5lY3Rpb24oRSksIHRsc19kZWluaXRfY29ubmVjdGlvbihFKSwgCisgICAgICAgIHRsc19xdWVyeV9jb25uZWN0aW9uX3N0YXRlKEUpLCB0bHNfcXVlcnlfY29ubmVjdGlvbl9pbmZvKEUpLAorICAgICAgICB0bHNfY2hlY2tfY2VydGlmaWNhdGUoRSksIHRsc19yZWZyZXNoX2NlcnRzKEUpCmRpZmYgLS1naXQgYS9kb2MvZWZ1bi90bHNfY2hlY2tfY2VydGlmaWNhdGUgYi9kb2MvZWZ1bi90bHNfY2hlY2tfY2VydGlmaWNhdGUKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZjhhZmM4ZQotLS0gL2Rldi9udWxsCisrKyBiL2RvYy9lZnVuL3Rsc19jaGVja19jZXJ0aWZpY2F0ZQpAQCAtMCwwICsxLDQ5IEBACitQUkVMSU1JTkFSWQorU1lOT1BTSVMKKyAgICAgICAgbWl4ZWQgKnRsc19jaGVja19jZXJ0aWZpY2F0ZShvYmplY3Qgb2JqKTsKKyAgICAgICAgbWl4ZWQgKnRsc19jaGVja19jZXJ0aWZpY2F0ZShvYmplY3Qgb2JqLCBpbnQgZXh0cmEpOworCitERVNDUklQVElPTgorICAgICAgICB0bHNfY2hlY2tfY2VydGlmaWNhdGUoKSBjaGVja3MgdGhlIGNlcnRpZmljYXRlIG9mIHRoZSBzZWN1cmVkCisgICAgICAgIGNvbm5lY3Rpb24gYm91bmQgdG8gPG9iaj4gKGRlZmF1bHQgaXMgdGhlIGN1cnJlbnQgb2JqZWN0KS4gIElmCisgICAgICAgIDxvYmo+IGlzIG5vdCBpbnRlcmFjdGl2ZSwgb3IgaWYgVExTIGlzIG5vdCBhdmFpbGFibGUsIGFuIGVycm9yCisgICAgICAgIGlzIHRocm93bi4KKworICAgICAgICBJZiA8b2JqPiBkb2Vzbid0IGhhdmUgYSBzZWN1cmUgY29ubmVjdGlvbiB1cCBhbmQgcnVubmluZywgYW4KKyAgICAgICAgZXJyb3IgaXMgdGhyb3duLgorICAgICAgICBPdGhlcndpc2UsIHRoZSByZXN1bHQgaXMgYW4gYXJyYXkgd2l0aCB0aGVzZSB2YWx1ZXM6CisKKyAgICAgICAgICBpbnQgWzBdICAgICAgOiBSZXN1bHQgY29kZSBvZiBTU0xfZ2V0X3ZlcmlmeV9yZXN1bHQgKHNlZSBtYW4gMSB2ZXJpZnkKKyAgICAgICAgICAgICAgICAgICAgICAgICBzdWJzZWN0aW9uIERJQUdOT1NUSUNTIGZvciBwb3NzaWJsZSB2YWx1ZXMpCisgICAgICAgICAgYXJyYXkgWzFdICAgIDogYXJyYXkgd2l0aCAzKm4gZW50cmllcyBvZiBleHRyYSB4NTA5IGRhdGEuCisgICAgICAgICAgICAgICAgICAgICAgICAgc3RydWN0dXJlIGlzOgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDMqaSAgICA6IG51bWVyaWNhbCBmb3JtIG9mIG9iamVjdCBuYW1lLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGUuZy4gIjIuNS40LjMiCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgMyppICsgMTogbG9uZyBvciBzaG9ydCBuYW1lIGlmIGF2YWlsYWJsZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlLmcuICJjb21tb25OYW1lIgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDMqaSArIDI6IHZhbHVlCisgICAgICAgICAgYXJyYXkgWzJdICAgIDogaWYgZXh0cmEgaXMgc2V0OgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFycmF5IHdpdGggMypuIGVudHJpZXMgb2YgeDUwOSBleHRlbnNpb24gZGF0YQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRhdGEgc3RydWN0dXJlIGlzOgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDMqaSAgICA6IG51bWVyaWNhbCBmb3JtIG9mIGV4dGVuc2lvbiBuYW1lCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgMyppICsgMTogbG9uZyBvciBzaG9ydCBuYW1lIG9mIGV4dGVuc2lvbgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5hbWUgaWYgYXZhaWxhYmxlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgMyppICsgMjogYXJyYXkgb2Ygc3RyaW5ncyB3aXRoIHRoZSBkYXRhCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RydWN0dXJlIG9mIFsxXQorCisgICAgICAgIE5vdGU6IGEgeDUwOSBjZXJ0aWZpY2F0ZSBjYW4gaGF2ZSBtb3JlIHRoYW4gb25lIG9iamVjdCB3aXRoCisgICAgICAgIHRoZSBzYW1lIG5hbWUKKworQlVHUworICAgICAgICBOb3Qgc3VwcG9ydGVkIHdoZW4gdXNpbmcgR251VExTLgorCitISVNUT1JZCisgICAgICAgIEludHJvZHVjZWQgaW4gTERNdWQgMy4zLjY3Mi8zLjIuMTEuCisgICAgICAgIExETXVkIDMuMy43MTEvMy4yLjEyIG1vZGlmaWVkIHRoZSBiZWhhdmlvdXIgdG8gcmV0dXJuIHRoZQorICAgICAgICBsb3ctbGV2ZWwgQVBJIHJlc3VsdCB2YWx1ZSwgYW5kIHRvIHRocm93IGFuIGVycm9yIGlmIHRoZSBjb25uZWN0aW9uCisgICAgICAgIGlzIG5vdCBzZWN1cmUuCisKK1NFRSBBTFNPCisgICAgICAgIHRsc19pbml0X2Nvbm5lY3Rpb24oRSksIHRsc19kZWluaXRfY29ubmVjdGlvbihFKSwgdGxzX2Vycm9yKEUpLAorICAgICAgICB0bHNfcXVlcnlfY29ubmVjdGlvbl9zdGF0ZShFKSwgdGxzX3F1ZXJ5X2Nvbm5lY3Rpb25faW5mbyhFKSwKKyAgICAgICAgdGxzX2F2YWlsYWJsZShFKSwgdGxzX3JlZnJlc2hfY2VydHMoRSksIG11ZGxpYi9wc3ljLXRscy5jCmRpZmYgLS1naXQgYS9kb2MvZWZ1bi90bHNfZGVpbml0X2Nvbm5lY3Rpb24gYi9kb2MvZWZ1bi90bHNfZGVpbml0X2Nvbm5lY3Rpb24KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNzg4MzgwMQotLS0gL2Rldi9udWxsCisrKyBiL2RvYy9lZnVuL3Rsc19kZWluaXRfY29ubmVjdGlvbgpAQCAtMCwwICsxLDIwIEBACitQUkVMSU1JTkFSWQorU1lOT1BTSVMKKyAgICAgICAgdm9pZCB0bHNfZGVpbml0X2Nvbm5lY3Rpb24ob2JqZWN0IG9iKQorCitERVNDUklQVElPTgorICAgICAgICB0bHNfZGVpbml0X2Nvbm5lY3Rpb24oKSBzaHV0cyBkb3duIGEgVExTIGNvbm5lY3Rpb24gdG8KKyAgICAgICAgdGhlIGludGVyYWN0aXZlIG9iamVjdCA8b2I+IChvciB0aGlzX29iamVjdCgpIGlmIDxvYj4gaXMgbm90CisgICAgICAgIGdpdmVuKSBidXQgdGhlIGNvbm5lY3Rpb24gaXMgbm90IGNsb3NlZC4KKworICAgICAgICBVbmRlciBub3JtYWwgY2lyY3Vtc3RhbmNlcyB0aGVyZSBpcyBubyBuZWVkIHRvIHVzZSB0aGlzIGVmdW46IG1vc3QKKyAgICAgICAgY2xpZW50cyBvcGVyYXRlIGluIGVpdGhlciBzZWN1cmUgb3IgdW5zZWN1cmUgbW9kZSwgYnV0IGRvbid0IGFsbG93CisgICAgICAgIHN3aXRjaGluZyBjb25uZWN0aW9uIHNlY3VyaXR5IG9uIHRoZSBmbHkuCisKK0hJU1RPUlkKKyAgICAgICAgSW50cm9kdWNlZCBpbiBMRE11ZCAzLjMuNDc0IGFuZCBmb2xsb3dpbmcsIGJhY2twb3J0ZWQgdG8gMy4yLjExLgorCitTRUUgQUxTTworICAgICAgICB0bHNfaW5pdF9jb25uZWN0aW9uKEUpLCB0bHNfZXJyb3IoRSksIHRsc19xdWVyeV9jb25uZWN0aW9uX3N0YXRlKEUpLAorICAgICAgICB0bHNfcXVlcnlfY29ubmVjdGlvbl9pbmZvKEUpLCB0bHNfYXZhaWxhYmxlKEUpLAorICAgICAgICB0bHNfY2hlY2tfY2VydGlmaWNhdGUoRSksIHRsc19yZWZyZXNoX2NlcnRzKEUpCmRpZmYgLS1naXQgYS9kb2MvZWZ1bi90bHNfZXJyb3IgYi9kb2MvZWZ1bi90bHNfZXJyb3IKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMmI1Yzc4OAotLS0gL2Rldi9udWxsCisrKyBiL2RvYy9lZnVuL3Rsc19lcnJvcgpAQCAtMCwwICsxLDE1IEBACitQUkVMSU1JTkFSWQorU1lOT1BTSVMKKyAgICAgICAgc3RyaW5nIHRsc19lcnJvcihpbnQgZXJyb3JubykKKworREVTQ1JJUFRJT04KKyAgICAgICAgdGxzX2Vycm9yKCkgcmV0dXJucyBhIHN0cmluZyBkZXNjcmliaW5nIHRoZSBlcnJvciBiZWhpbmQgdGhlCisgICAgICAgIGVycm9yIG51bWJlciBlcnJvcm5vLgorCitISVNUT1JZCisgICAgICAgIEludHJvZHVjZWQgaW4gTERNdWQgMy4zLjQ3NCBhbmQgZm9sbG93aW5nLCBiYWNrcG9ydGVkIHRvIDMuMi4xMS4KKworU0VFIEFMU08KKyAgICAgICAgdGxzX2luaXRfY29ubmVjdGlvbihFKSwgdGxzX2RlaW5pdF9jb25uZWN0aW9uKEUpLCAKKyAgICAgICAgdGxzX3F1ZXJ5X2Nvbm5lY3Rpb25fc3RhdGUoRSksIHRsc19xdWVyeV9jb25uZWN0aW9uX2luZm8oRSksCisgICAgICAgIHRsc19hdmFpbGFibGUoRSksIHRsc19jaGVja19jZXJ0aWZpY2F0ZShFKSwgdGxzX3JlZnJlc2hfY2VydHMoRSkKZGlmZiAtLWdpdCBhL2RvYy9lZnVuL3Rsc19pbml0X2Nvbm5lY3Rpb24gYi9kb2MvZWZ1bi90bHNfaW5pdF9jb25uZWN0aW9uCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmUzM2FmYWUKLS0tIC9kZXYvbnVsbAorKysgYi9kb2MvZWZ1bi90bHNfaW5pdF9jb25uZWN0aW9uCkBAIC0wLDAgKzEsNTAgQEAKK1BSRUxJTUlOQVJZCitTWU5PUFNJUworICAgICAgICBpbnQgdGxzX2luaXRfY29ubmVjdGlvbihvYmplY3Qgb2IpCisgICAgICAgIGludCB0bHNfaW5pdF9jb25uZWN0aW9uKG9iamVjdCBvYiwgc3RyaW5nIGZ1biwgc3RyaW5nfG9iamVjdCBmb2IsIG1peGVkIGV4dHJhLi4uKQorICAgICAgICBpbnQgdGxzX2luaXRfY29ubmVjdGlvbihvYmplY3Qgb2IsIGNsb3N1cmUgZnVuLCBtaXhlZCBleHRyYS4uLikKKworREVTQ1JJUFRJT04KKyAgICAgICAgdGxzX2luaXRfY29ubmVjdGlvbigpIHRyaWVzIHRvIHN0YXJ0IGEgVExTIHNlY3VyZWQgY29ubmVjdGlvbiB0byAKKyAgICAgICAgdGhlIGludGVyYWN0aXZlIG9iamVjdCA8b2I+IChvciB0aGlzX29iamVjdCgpIGlmIDxvYj4gaXMgbm90IGdpdmVuKS4KKworICAgICAgICBSZXN1bHQ6CisgICAgICAgICAgZXJyb3Jjb2RlIDwgMDogdW5zdWNjZXNzZnVsLCB1c2UgdGxzX2Vycm9yKCkgdG8gZ2V0IGFuIHVzZWZ1bAorICAgICAgICAgICAgICAgICAgICAgICAgIGRlc2NyaXB0aW9uIG9mIHRoZSBlcnJvcgorICAgICAgICAgICAgIG51bWJlciA+IDA6IHRoZSBzZWN1cmUgY29ubmVjdGlvbiBpcyBzdGlsbCBiZWluZyBzZXQgdXAgaW4gdGhlCisgICAgICAgICAgICAgICAgICAgICAgICAgIGJhY2tncm91bmQKKyAgICAgICAgICAgIG51bWJlciA9PSAwOiB0aGUgc2VjdXJlIGNvbm5lY3Rpb24gaXMgYWN0aXZlLgorICAgICAgICAKKyAgICAgICAgT3BlblNTTCBvbmx5OgorCisgICAgICAgICAgICBJZiB0aGUgY2FsbGJhY2sgPGZ1bj4vPGZ1bj46PGZvYj4gaXMgc3BlY2lmaWVkLCBpdCB3aWxsIGJlIGNhbGxlZAorICAgICAgICAgICAgb25jZSB0aGUgZmF0ZSBvZiB0aGUgc2VjdXJlIGNvbm5lY3Rpb24gaGFzIGJlZW4gZGV0ZXJtaW5lZC4gVGhlCisgICAgICAgICAgICBmaXJzdCBhcmd1bWVudCB3aWxsIGJlIHRoZSByZXR1cm4gY29kZSBmcm9tIHRoZSBoYW5kc2hha2UKKyAgICAgICAgICAgIChlcnJvcmNvZGUgPCAwIG9uIGZhaWx1cmUsIG9yIDAgb24gc3VjY2VzcyksIGZvbGxvd2VkIGJ5IHRoZQorICAgICAgICAgICAgaW50ZXJhY3RpdmUgb2JqZWN0IDxvYj4gYW5kIGFueSA8ZXh0cmE+IGFyZ3VtZW50cy4KKworICAgICAgICBJZiB0aGUgVExTIHNldHVwIGZhaWxzLCBpdCBpcyBub3QgbmVjZXNzYXJ5IHRvIGNhbGwKKyAgICAgICAgdGxzX2RlaW5pdF9jb25uZWN0aW9uKCkuCisKKyAgICAgICAgSU1QT1JUQU5UOiBEdXJpbmcgdGhlIFRMUyBoYW5kc2hha2Ugbm90aGluZyBlbHNlIG11c3QgYmUgc2VudAorICAgICAgICB0byB0aGUgY2xpZW50ISBGb3IgdGhlIG1vc3QgY2FzZXMgKFRMUy1jYXBhYmxlIGNsaWVudHMgbG9nZ2luZyBpbikKKyAgICAgICAgdGhpcyBtZWFucyB0aGF0IHRoZSBUTFMgaGFuZHNoYWtlIGlzIHRoZSBmaXJzdCBhbmQgb25seSB0aGluZyB0aGUKKyAgICAgICAgY2xpZW50IGdldHMgdG8gc2VlIHdoaWxlIHRoZSBoYW5kc2hha2UgaXMgaW4gcHJvZ3Jlc3MuCisKKyAgICAgICAgVGhlIGRyaXZlciBhdXRvbWF0aWNhbGx5IHN1cHByZXNzZXMgdGhlIHByaW50aW5nIG9mIHRoZSBwcm9tcHQKKyAgICAgICAgd2hpbGUgdGhlIFRMUyBoYW5kc2hha2UgaXMgaW4gcHJvZ3Jlc3MuCisKKyAgICAgICAgSWYgdGxzX2luaXRfY29ubmVjdGlvbigpIGlzIGNhbGxlZCBpbiB0aGUgbWFzdGVyOjpjb25uZWN0KCkgZnVuY3Rpb24sCisgICAgICAgIHRoZSBkcml2ZXIgd2lsbCBlaXRoZXIgY2FsbCB0aGUgc2V0IGNhbGxiYWNrIGluIHBsYWNlIG9mIGxvZ29uKCksIG9yCisgICAgICAgIGlmIG5vdCBjYWxsYmFjayBoYXMgYmVlbiBzZXQsIGRlbGF5IHRoZSBjYWxsIG9mIGxvZ29uKCkgdW50aWwgdGhlCisgICAgICAgIHN0YXRlIG9mIHRoZSBjb25uZWN0aW9uIGlzIGNsZWFyLgorCitISVNUT1JZCisgICAgICAgIEludHJvZHVjZWQgaW4gTERNdWQgMy4zLjQ3NCBhbmQgZm9sbG93aW5nLCBiYWNrcG9ydGVkIHRvIDMuMi4xMS4KKyAgICAgICAgTERNdWQgMy4yLjEzLzMuMy43MTMgc3RyZWFtbGluZWQgdGhlIGhhbmRsaW5nIG9mIHNlY3VyZSBjb25uZWN0aW9ucworICAgICAgICBkdXJpbmcgbG9nb24uCisKK1NFRSBBTFNPCisgICAgICAgIHRsc19kZWluaXRfY29ubmVjdGlvbihFKSwgdGxzX2Vycm9yKEUpLCB0bHNfcXVlcnlfY29ubmVjdGlvbl9zdGF0ZShFKSwKKyAgICAgICAgdGxzX3F1ZXJ5X2Nvbm5lY3Rpb25faW5mbyhFKSwgdGxzX2F2YWlsYWJsZShFKSwKKyAgICAgICAgdGxzX2NoZWNrX2NlcnRpZmljYXRlKEUpLCB0bHNfcmVmcmVzaF9jZXJ0cyhFKSwgY29ubmVjdChNKSwgbG9nb24oQSkKZGlmZiAtLWdpdCBhL2RvYy9lZnVuL3Rsc19xdWVyeV9jb25uZWN0aW9uX2luZm8gYi9kb2MvZWZ1bi90bHNfcXVlcnlfY29ubmVjdGlvbl9pbmZvCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjMyYWVlZjcKLS0tIC9kZXYvbnVsbAorKysgYi9kb2MvZWZ1bi90bHNfcXVlcnlfY29ubmVjdGlvbl9pbmZvCkBAIC0wLDAgKzEsMzcgQEAKK1BSRUxJTUlOQVJZCitTWU5PUFNJUworICAgICAgICAjaW5jbHVkZSA8c3lzLyB0bHMuaD4KKyAgICAgICAgaW50ICp0bHNfcXVlcnlfY29ubmVjdGlvbl9pbmZvIChvYmplY3Qgb2IpCisKK0RFU0NSSVBUSU9OCisgICAgICAgIElmIDxvYj4gZG9lcyBub3QgaGF2ZSBhIFRMUyBjb25uZWN0aW9uIG9yIGlmIHRoZSBjb25uZWN0aW9uCisgICAgICAgIGlzIHN0aWxsIGJlaW5nIHNldC11cCwgb3IgaWYgPG9iPiBpcyBub3QgaW50ZXJhY3RpdmUsIHRoZSBlZnVuCisgICAgICAgIHJldHVybnMgMC4KKworICAgICAgICBJZiA8b2I+IGhhcyBhIFRMUyBjb25uZWN0aW9uLCB0bHNfcXVlcnlfY29ubmVjdGlvbl9pbmZvKCkKKyAgICAgICAgcmV0dXJucyBhbiBhcnJheSB0aGF0IGNvbnRhaW5zIHNvbWUgcGFyYW1ldGVycyBvZiA8b2I+J3MKKyAgICAgICAgY29ubmVjdGlvbjoKKworICAgICAgICAgIGludHxzdHJpbmcgW1RMU19DSVBIRVJdOiB0aGUgY2lwaGVyIHVzZWQKKyAgICAgICAgICBpbnQgICAgICAgIFtUTFNfQ09NUF06ICAgdGhlIGNvbXByZXNzaW9uIHVzZWQKKyAgICAgICAgICBpbnQgICAgICAgIFtUTFNfS1hdOiAgICAgdGhlIGtleS1leGNoYW5nZSB1c2VkCisgICAgICAgICAgaW50ICAgICAgICBbVExTX01BQ106ICAgIHRoZSBkaWdlc3QgYWxnb3JpdGhtIHVzZWQKKyAgICAgICAgICBpbnR8c3RyaW5nIFtUTFNfUFJPVF06ICAgdGhlIHByb3RvY29sIHVzZWQKKworICAgICAgICBUbyB0cmFuc2xhdGUgdGhlc2UgbnVtYmVycyBpbnRvIHN0cmluZ3MsIDx0bHMuaD4gb2ZmZXJzIGEKKyAgICAgICAgbnVtYmVyIG9mIG1hY3JvczoKKworICAgICAgICAgIFRMU194eHhfVEFCTEU6IGEgbGl0ZXJhbCBhcnJheSBvZiBzdHJpbmdzIGRlc2NyaWJpbmcgdGhlCisgICAgICAgICAgICB2YWx1ZSBpbiBxdWVzdGlvbi4KKyAgICAgICAgICBUTFNfeHh4X05BTUUoeCk6IGEgbWFjcm8gdHJhbnNsYXRpbmcgdGhlIG51bWVyaWMgcmVzdWx0CisgICAgICAgICAgICB2YWx1ZSBpbnRvIGEgc3RyaW5nLgorCisgICAgICAgICAgeHh4OiBDSVBIRVIsIENPTVAsIEtYLCBNQUMsIFBST1QKKworSElTVE9SWQorICAgICAgICBJbnRyb2R1Y2VkIGluIExETXVkIDMuMy40NzQgYW5kIGZvbGxvd2luZywgYmFja3BvcnRlZCB0byAzLjIuMTEuCisKK1NFRSBBTFNPCisJdGxzX2luaXRfY29ubmVjdGlvbihFKSwgdGxzX2RlaW5pdF9jb25uZWN0aW9uKEUpLCB0bHNfZXJyb3IoRSksCisJdGxzX3F1ZXJ5X2Nvbm5lY3Rpb25fc3RhdGUoRSksIHRsc19hdmFpbGFibGUoRSksCisgICAgICAgIHRsc19jaGVja19jZXJ0aWZpY2F0ZShFKSwgdGxzX3JlZnJlc2hfY2VydHMoRSkKZGlmZiAtLWdpdCBhL2RvYy9lZnVuL3Rsc19xdWVyeV9jb25uZWN0aW9uX3N0YXRlIGIvZG9jL2VmdW4vdGxzX3F1ZXJ5X2Nvbm5lY3Rpb25fc3RhdGUKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMjYyNGYyMAotLS0gL2Rldi9udWxsCisrKyBiL2RvYy9lZnVuL3Rsc19xdWVyeV9jb25uZWN0aW9uX3N0YXRlCkBAIC0wLDAgKzEsMTYgQEAKK1BSRUxJTUlOQVJZCitTWU5PUFNJUworICAgICAgICBpbnQgdGxzX3F1ZXJ5X2Nvbm5lY3Rpb25fc3RhdGUob2JqZWN0IG9iKQorCitERVNDUklQVElPTgorICAgICAgICB0bHNfcXVlcnlfY29ubmVjdGlvbl9zdGF0ZSgpIHJldHVybnMgYSBwb3NpdGl2ZSBudW1iZXIgaWYgPG9iPidzCisgICAgICAgIGNvbm5lY3Rpb24gaXMgVExTIHNlY3VyZWQsIDAgaWYgaXQncyB1bnNlY3VyZWQsIGFuZCBhIG5lZ2F0aXZlIG51bWJlcgorICAgICAgICBpZiB0aGUgVExTIGNvbm5lY3Rpb24gc2V0dXAgaXMgc3RpbGwgYmVpbmcgc2V0LXVwLgorCitISVNUT1JZCisgICAgICAgIEludHJvZHVjZWQgaW4gTERNdWQgMy4zLjQ3NCBhbmQgZm9sbG93aW5nLCBiYWNrcG9ydGVkIHRvIDMuMi4xMS4KKworU0VFIEFMU08KKwl0bHNfaW5pdF9jb25uZWN0aW9uKEUpLCB0bHNfZGVpbml0X2Nvbm5lY3Rpb24oRSksIHRsc19lcnJvcihFKSwgCisJdGxzX3F1ZXJ5X2Nvbm5lY3Rpb25faW5mbyhFKSwgdGxzX2F2YWlsYWJsZShFKSwKKyAgICAgICAgdGxzX2NoZWNrX2NlcnRpZmljYXRlKEUpLCB0bHNfcmVmcmVzaF9jZXJ0cyhFKQpkaWZmIC0tZ2l0IGEvZG9jL2VmdW4vdGxzX3JlZnJlc2hfY2VydHMgYi9kb2MvZWZ1bi90bHNfcmVmcmVzaF9jZXJ0cwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5jODM2NGM1Ci0tLSAvZGV2L251bGwKKysrIGIvZG9jL2VmdW4vdGxzX3JlZnJlc2hfY2VydHMKQEAgLTAsMCArMSwxNyBAQAorUFJFTElNSU5BUlkKK1NZTk9QU0lTCisgICAgICAgIHZvaWQgdGxzX3JlZnJlc2hfY2VydHMoKQorCitERVNDUklQVElPTgorICAgICAgICBSZWxvYWQgdGhlIGNlcnRpZmljYXRlcyBhbmQgY2VydGlmaWNhdGUgcmV2b2NhdGlvbiBpbmZvcm1hdGlvbi4KKworQlVHUworICAgICAgICBOb3Qgc3VwcG9ydGVkIHdoZW4gdXNpbmcgR251VExTLgorCitISVNUT1JZCisgICAgICAgIEludHJvZHVjZWQgaW4gTERNdWQgMy4zLjcxNC8zLjIuMTUuCisKK1NFRSBBTFNPCisgICAgICAgIHRsc19pbml0X2Nvbm5lY3Rpb24oRSksIHRsc19kZWluaXRfY29ubmVjdGlvbihFKSwgdGxzX2Vycm9yKEUpLAorICAgICAgICB0bHNfcXVlcnlfY29ubmVjdGlvbl9zdGF0ZShFKSwgdGxzX3F1ZXJ5X2Nvbm5lY3Rpb25faW5mbyhFKSwKKyAgICAgICAgdGxzX2F2YWlsYWJsZShFKSwgdGxzX2NoZWNrX2NlcnRpZmljYXRlKEUpLCBtdWRsaWIvcHN5Yy10bHMuYwpkaWZmIC0tZ2l0IGEvZG9jL2VmdW4vdG9fYXJyYXkgYi9kb2MvZWZ1bi90b19hcnJheQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4yMWIxYTkzCi0tLSAvZGV2L251bGwKKysrIGIvZG9jL2VmdW4vdG9fYXJyYXkKQEAgLTAsMCArMSwzMCBAQAorU1lOT1BTSVMKKyAgICAgICAgbWl4ZWQgKnRvX2FycmF5KHN0cmluZyBhcmcpOworICAgICAgICBtaXhlZCAqdG9fYXJyYXkoc3ltYm9sIGFyZyk7CisgICAgICAgIG1peGVkICp0b19hcnJheShxdW90ZWRhcnJheSBhcnIpOworICAgICAgICBtaXhlZCAqdG9fYXJyYXkobWl4ZWQgKmFyZyk7CisgICAgICAgIG1peGVkICp0b19hcnJheShzdHJ1Y3QpOworCisgICAgICAgIChpbnQqKTx2YWx1ZT4KKworQkVTQ0hSRUlCVU5HCisgICAgICAgIFN0cmluZ3MgdW5kIFN5bWJvbGUgd2VyZGVuIHVtZ2V3YW5kZWx0IGluIGVpbiBJbnRlZ2VyLUFycmF5LCBkYXMgYXVzCisgICAgICAgIGRlbiBaZWljaGVuIHZvbiA8YXJnPiBiZXN0ZWh0LgorCisgICAgICAgIEdlcXVvdGV0ZSBBcnJheXMgd2VyZGVuICJlbnRxdW90ZXQiLCB1bmQgQXJyYXlzIGJsZWliZW4sIHdpZSBzaWUgc2luZC4KKworICAgICAgICBTdHJ1Y3RzIHdlcmRlbiBpbiBub3JtYWxlIEFycmF5cyB1bWdld2FuZGVsdC4KKworQkVJU1BJRUxFOgorICAgICAgICB0b19hcnJheSgiMTIiKSBsaWVmZXJ0ICh7MzMsMzR9KS4KKworQlVHUworICAgICAgICBEaWUgQ2FzdC1TY2hyZWlid2Vpc2UgZnVua3Rpb25pZXJ0IG51ciwgd2VubiBkZXIgZ2VuYXVlIFdlcnQgdm9uCisgICAgICAgIDx2YWx1ZT4genVtIFplaXRwdW5rdCBkZXIgS29tcGlsaWVydW5nIGJla2FubnQgaXN0LiBEaWVzIHdpcmQKKyAgICAgICAgbmljaHQgZ2VhZW5kZXJ0IHdlcmRlbiwgZGEgZGllIEZ1bmt0aW9uc2Zvcm0gdmVyd2VuZGV0IHdlcmRlbiBrYW5uLgorCitISVNUT1JZCisgICAgICAgIExETXVkIDMuMy4yNTAgYWRkZWQgc3RydWN0cyB0byB0aGUgYWNjZXB0ZWQgZGF0YSB0eXBlcy4KKworU0lFSEUgQVVDSAorICAgICAgICB0b19pbnQoRSksIHRvX3N0cmluZyhFKSwgdG9fc3RydWN0KEUpCmRpZmYgLS1naXQgYS9kb2MvZWZ1bi90b19mbG9hdCBiL2RvYy9lZnVuL3RvX2Zsb2F0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjdiOTg5Y2UKLS0tIC9kZXYvbnVsbAorKysgYi9kb2MvZWZ1bi90b19mbG9hdApAQCAtMCwwICsxLDE5IEBACitTWU5PUFNJUworICAgICAgICBmbG9hdCB0b19mbG9hdChpbnQgYXJnKTsKKyAgICAgICAgZmxvYXQgdG9fZmxvYXQoc3RyaW5nIGFyZyk7CisgICAgICAgIGZsb2F0IHRvX2ZsYW90KGZsb2F0IGFyZyk7CisKKyAgICAgICAgKGZsb2F0KTx2YWx1ZT4KKworQkVTQ0hSRUlCVU5HCisgICAgICAgIEludGVnZXJzIHdlcmRlbiB6dSBGbG9hdHMgZXJ3ZWl0ZXJ0LCBTdHJpbmdzIHdlcmRlbiBpbiBGbG9hdHMKKyAgICAgICAga29udmVydGllcnQgYmlzIHp1bSBlcnN0ZW4gWmVpY2hlbiwgZGFzIG5pY2h0IG1laHIgenVtIEZsb2F0CisgICAgICAgIGdlaG9lcnQuIEZsb2F0cyB3ZXJkZW4gZGlyZWt0IHp1cnVlY2sgZ2VnZWJlbi4KKworQlVHUworICAgICAgICBEaWUgQ2FzdC1TY2hyZWlid2Vpc2UgZnVua3Rpb25pZXJ0IG51ciwgd2VubiBkZXIgZ2VuYXVlIFdlcnQgdm9uCisgICAgICAgIDx2YWx1ZT4genVtIFplaXRwdW5rdCBkZXIgS29tcGlsaWVydW5nIGJla2FubnQgaXN0LiBEaWVzIHdpcmQgbmljaHQKKyAgICAgICAgZ2VhZW5kZXJ0IHdlcmRlbiwgZGEgZGllIEZ1bmt0aW9uc2Zvcm0gdmVyd2VuZGV0IHdlcmRlbiBrYW5uLgorCitTSUVIRSBBVUNICisgICAgICAgIHRvX3N0cmluZyhFKSwgdG9faW50KEUpLCBzc2NhbmYoRSkKZGlmZiAtLWdpdCBhL2RvYy9lZnVuL3RvX2ludCBiL2RvYy9lZnVuL3RvX2ludApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi42YzY0OGU0Ci0tLSAvZGV2L251bGwKKysrIGIvZG9jL2VmdW4vdG9faW50CkBAIC0wLDAgKzEsMzIgQEAKK1NZTk9QU0lTCisgICAgICAgIGludCB0b19pbnQoc3RyaW5nIGFyZyk7CisgICAgICAgIGludCB0b19pbnQoZmxvYXQgYXJnKTsKKyAgICAgICAgaW50IHRvX2ludChpbnQgYXJnKTsKKyAgICAgICAgaW50IHRvX2ludChjbG9zdXJlIGFyZyk7CisKKyAgICAgICAgKGludCk8dmFsdWU+CisKK0JFU0NIUkVJQlVORworICAgICAgICBCZWkgRmxvYXRzIHdlcmRlbiBkaWUgTmFjaGtvbW1hc3RlbGxlbiBhYmdlc2Nobml0dGVuLCBTdHJpbmdzIG1pdAorICAgICAgICBaaWZmZXJuIGFtIEFuZmFuZyB3ZXJkZW4gYmlzIHp1bSBlcnN0ZW4gTmljaHQtWmlmZmVybi1aZWljaGVuIGluCisgICAgICAgIEludGVnZXJzIHVtZ2V3YW5kZWx0LiBMZnVuLUNsb3N1cmVzIHdlcmRlbiBpbiBpaHJlbiBGdW5rdGlvbnNpbmRleAorICAgICAgICBrb252ZXJ0aWVydCwgVmFyaWFibGVuLUNsb3N1cmVzIGluIGlocmVuIFZhcmlhYmxlbmluZGV4LiBJbnRlZ2VycworICAgICAgICB3ZXJkZW4gdW52ZXJhZW5kZXJ0IHp1cnVlY2sgZ2VnZWJlbi4KKworICAgICAgICBCZXp1ZWdsaWNoIEZsb2F0cyBpc3QgZXMgd2ljaHRpZywgUnVuZHVuZ3NlZmZla3RlIHp1IGJlYWNodGVuOgorICAgICAgICB0b19pbnQoMy4xKjEwLjApIGVyZ2lidCBuaWNodCAzMSwgc29uZGVybiAzMCwgd2VpbCBpbnRlcm4gZGFzCisgICAgICAgIFJlc3VsdGF0IGRlciBNdWx0aXBsaWthdGlvbiAzMC45OTk5OTkgZXJnaWJ0LgorICAgICAKKyAgICAgICAgRGllc2UgRnVua3Rpb24gdW50ZXJzdHVldHp0IGRpZSBCYXNpc3ByZWZpeGUgJzB4JywgJzBvJyB1bmQgJzBiJy4KKworQlVHUworICAgICAgICBEaWUgQ2FzdC1TY2hyZWlid2Vpc2UgZnVua3Rpb25pZXJ0IG51ciwgd2VubiBkZXIgZ2VuYXVlIFdlcnQgdm9uCisgICAgICAgIDx2YWx1ZT4genVtIFplaXRwdW5rdCBkZXIgS29tcGlsaWVydW5nIGJla2FubnQgaXN0LiBEaWVzIHdpcmQKKyAgICAgICAgbmljaHQgZ2VhZW5kZXJ0IHdlcmRlbiwgZGEgZGllIEZ1bmt0aW9uc2Zvcm0gdmVyd2VuZGV0IHdlcmRlbiBrYW5uLgorCitBRU5ERVJVTkdFTgorICAgICAgICBFaW5nZWZ1ZWhydCBpbiAzLjIuMUAyCisgICAgICAgIExETXVkIDMuMi4xMSBmdWVocnRlIGRpZSBCYXNpc3ByZWZpeGUgZWluLgorCitTSUVIRSBBVUNICisgICAgICAgIHRvX3N0cmluZyhFKSwgc3NjYW5mKEUpCmRpZmYgLS1naXQgYS9kb2MvZWZ1bi90b19vYmplY3QgYi9kb2MvZWZ1bi90b19vYmplY3QKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYmI1NzdmMAotLS0gL2Rldi9udWxsCisrKyBiL2RvYy9lZnVuL3RvX29iamVjdApAQCAtMCwwICsxLDE1IEBACitTWU5PUFNJUworCW9iamVjdCB0b19vYmplY3Qoc3RyaW5nIGFyZykKKwlvYmplY3QgdG9fb2JqZWN0KGNsb3N1cmUgYXJnKQorCW9iamVjdCB0b19vYmplY3Qob2JqZWN0IGFyZykKKworREVTQ1JJUFRJT04KKwlUaGUgYXJndW1lbnQgaXMgY29udmVydGVkIGludG8gYW4gb2JqZWN0LCBpZiBwb3NzaWJsZS4KKwlGb3Igc3RyaW5ncywgdGhlIG9iamVjdCB3aXRoIGEgbWF0Y2hpbmcgb2JqZWN0X25hbWUoKSBpcworCXJldHVybmVkLCBvciAwIGlmIHRoZXJlIGlzIG5vbmUsIGFzIGZpbmRfb2JqZWN0KCkgZG9lcy4KKwlGb3IgKGJvdW5kISkgY2xvc3VyZXMsIHRoZSBvYmplY3QgaG9sZGluZyB0aGUgY2xvc3VyZSBpcworCXJldHVybmVkLgorCU9iamVjdHMgYW5kIHRoZSBudW1iZXIgMCByZXR1cm4gdGhlbXNlbHZlcy4KKworU0VFIEFMU08KKwlmaW5kX29iamVjdChFKSwgdG9fYXJyYXkoRSksIHRvX2ludChFKSwgdG9fc3RyaW5nKEUpCmRpZmYgLS1naXQgYS9kb2MvZWZ1bi90b19zdHJpbmcgYi9kb2MvZWZ1bi90b19zdHJpbmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMWQyM2VmNgotLS0gL2Rldi9udWxsCisrKyBiL2RvYy9lZnVuL3RvX3N0cmluZwpAQCAtMCwwICsxLDI5IEBACitTWU5PUFNJUworICAgICAgICBzdHJpbmcgdG9fc3RyaW5nKG1peGVkIGFyZykKKworQkVTQ0hSRUlCVU5HCisgICAgICAgIDxhcmc+IHdpcmQgaW4gZWluZW4gU3RyaW5nIHVtZ2V3YW5kZWx0LiBEYXMga2xhcHB0IG1pdCBXZXJ0ZW4gdm9tIFR5cAorICAgICAgICBpbnQsIGZsb2F0LCBvYmplY3QsIGFycmF5LCBzdHJ1Y3QsIHN5bWJvbCwgc3RyaW5nIG9kZXIgY2xvc3VyZS4KKworICAgICAgICBDbG9zdXJlcyB3ZXJkZW4gaW4gZWluZW4gcGFzc2VuZGVuIE5hbWVuIHVtZ2V3YW5kZWx0ICh2b3J3aWVnZW5kIGZ1ZXIKKyAgICAgICAgRGVidWdnaW5nLVp3ZWNrZSBnZWVpZ25ldCkuCisKK0FOTUVSS1VOR0VOCisgICAgICAgIEFycmF5cyB3ZXJkZW4gYWxzICJleHBsb2RldGUiIFN0cmluZ3MgYmV0cmFjaHRldCwgYWxzbyBBcnJheXMgdm9uCisgICAgICAgIFplaWNoZW5jb2Rlcy4gU2llIHdlcmRlbiBiaXMgenVyIGVyc3RlbiAwIG9kZXIgYmlzIHp1bSBlcnN0ZW4KKyAgICAgICAgbmljaHQtbnVtZXJpc2NoZW4gRWludHJhZyAiaW1wbG9kZXQiLCBqZSBuYWNoZGVtLCB3YXMgenVlcnN0IGVpbnRyaXR0LgorCisgICAgICAgIERhcyBiZWRldXRldCwgZGFzcyB0b19zdHJpbmcoICh7IDQ5LCA1MCB9KSApOyAiMTIiIGxpZWZlcnQsIHVuZCBuaWNodAorICAgICAgICAiKHsgNDksIDUwIH0pIgorCitGRUhMRVIKKyAgICAgICAgRGllIENhc3QtU2NocmVpYndlaXNlIGZ1bmt0aW9uaWVydCBudXIsIHdlbm4gZGVyIGdlbmF1ZSBXZXJ0IHZvbgorICAgICAgICA8dmFsdWU+IHp1bSBaZWl0cHVua3QgZGVyIEtvbXBpbGllcnVuZyBiZWthbm50IGlzdC4gRGllcyB3aXJkIG5pY2h0CisgICAgICAgIGdlYWVuZGVydCB3ZXJkZW4sIGRhIGRpZSBGdW5rdGlvbnNmb3JtIHZlcndlbmRldCB3ZXJkZW4ga2Fubi4KKworR0VTQ0hJQ0hURQorICAgICAgICBMRE11ZCAzLjIuOCBsYWVzc3QgTGFtYmRhY2xvc3VyZXMgYWxzIGd1ZWx0aWdlIERhdGVudHlwZW4genUuCisgICAgICAgIExETXVkIDMuMy4yNTAgbGFlc3N0IHN0cnVjdHMgYWxzIGd1ZWx0aWdlIERhdGVudHlwZW4genUuCisKK1NJRUhFIEFVQ0gKKyAgICAgICAgdG9fYXJyYXkoRSksIHRvX2ludChFKSwgdG9fb2JqZWN0KEUpLCB0b19zdHJ1Y3QoRSksIHNwcmludGYoRSkKZGlmZiAtLWdpdCBhL2RvYy9lZnVuL3RvX3N0cnVjdCBiL2RvYy9lZnVuL3RvX3N0cnVjdApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5lNWIwYmZhCi0tLSAvZGV2L251bGwKKysrIGIvZG9jL2VmdW4vdG9fc3RydWN0CkBAIC0wLDAgKzEsNDcgQEAKK1NZTk9QU0lTCisgICAgICAgIG1peGVkIHRvX3N0cnVjdChtaXhlZCAqfG1hcHBpbmcgZGF0YSkKKyAgICAgICAgbWl4ZWQgdG9fc3RydWN0KG1peGVkICp8bWFwcGluZyBkYXRhLCBzdHJ1Y3QgdGVtcGxhdGUpCisgICAgICAgIG1peGVkIHRvX3N0cnVjdChzdHJ1Y3QgZGF0YSkKKyAgICAgICAgbWl4ZWQgdG9fc3RydWN0KHN0cnVjdCBkYXRhLCBzdHJ1Y3QgdGVtcGxhdGUpCisKK0RFU0NSSVBUSU9OCisgICAgICAgIFRoZSBnaXZlbiBhcnJheSwgbWFwcGluZyBvciBzdHJ1Y3QgPGRhdGE+IGlzIHJldHVybmVkIGFzIGEgc3RydWN0LgorICAgICAgICBJZiBhIDx0ZW1wbGF0ZT4gc3RydWN0IGlzIGdpdmVuLCB0aGUgcmV0dXJuZWQgc3RydWN0IGlzIG9mIHRoZSBzYW1lCisgICAgICAgIHR5cGUuIFdpdGhvdXQgYSB0ZW1wbGF0ZSwgYW4gYW5vbnltb3VzIHN0cnVjdCBpcyByZXR1cm5lZCBpbiBjYXNlIG9mCisgICAgICAgIGFycmF5cyBhbmQgbWFwcGluZ3MgYW5kIGluIGNhc2Ugb2Ygc3RydWN0cyA8ZGF0YT4gaXMgcmV0dXJuZWQKKyAgICAgICAgdW5jaGFuZ2VkLgorCisgICAgICAgIElmIDxkYXRhPiBpcyBhbiBhcnJheSwgaXRzIGVsZW1lbnRzIGFyZSBhc3NpZ25lZCBpbiBvcmRlciB0byB0aGUKKyAgICAgICAgcmVzdWx0aW5nIHN0cnVjdC4gRm9yIGFuIGFub255bW91cyBzdHJ1Y3QsIGFsbCBlbGVtZW50cyBvZiA8ZGF0YT4KKyAgICAgICAgYXJlIGFzc2lnbmVkLCBmb3IgYSB0ZW1wbGF0ZWQgc3RydWN0IG9ubHkgYXMgbWFueSBhcyBmaXQgaW50bworICAgICAgICB0aGUgc3RydWN0LgorCisgICAgICAgIElmIDxkYXRhPiBpcyBhIG1hcHBpbmcgYW5kIG5vIHRlbXBsYXRlIGlzIGdpdmVuLCB0aGUgcmVzdWx0aW5nCisgICAgICAgIGFub255bW91cyBzdHJ1Y3QgY29udGFpbnMgYWxsIGVsZW1lbnRzIGZyb20gPGRhdGE+IHdpdGggYSBzdHJpbmcKKyAgICAgICAga2V5OyB0aGUga2V5IG5hbWUgaXMgdXNlZCBhcyBzdHJ1Y3QgbWVtYmVyIG5hbWUuCisKKyAgICAgICAgSWYgPGRhdGE+IGlzIGEgbWFwcGluZyBhbmQgYSB0ZW1wbGF0ZSBpcyBnaXZlbiwgdGhlIHN0cnVjdAorICAgICAgICBtZW1iZXIgbmFtZXMgYXJlIHVzZWQgYXMga2V5cyBmb3IgbG9va3VwcyBpbiA8ZGF0YT47IHRoZSBmb3VuZAorICAgICAgICBkYXRhIGlzIGFzc2lnbmVkIHRvIHRoZSBzdHJ1Y3QgbWVtYmVycy4KKworICAgICAgICBJZiA8ZGF0YT4gaXMgYSBzdHJ1Y3QgYW5kIGEgdGVtcGxhdGUgaXMgZ2l2ZW4sIGEgc3RydWN0IG9mIHRoZSB0eXBlCisgICAgICAgIG9mIHRlbXBsYXRlIGlzIGNyZWF0ZWQgYW5kIGFsbCBtZW1iZXJzIGZyb20gPGRhdGE+IGFyZSBjb3BpZWQgdG8gdGhlCisgICAgICAgIG5ldyBzdHJ1Y3QsIHdoaWNoIGV4aXN0IGluIGJvdGggc3RydWN0cy4gVGhpcyBjb252ZXJzaW9uIGlzIG9ubHkKKyAgICAgICAgYWxsb3dlZCBiZXR3ZWVuIGEgc3RydWN0IGFuZCBvbmUgb2YgaXRzIGJhc2Ugc3RydWN0cyBvciBhIGJhc2Ugc3RydWN0CisgICAgICAgIGFuZCBvbmUgb2YgaXRzIGNoaWxkcmVuLiBPdGhlcndpc2UgYW4gZXJyb3IgaXMgcmFpc2VkLgorCisgICAgICAgIE5laXRoZXIgPGRhdGE+IG5vciA8dGVtcGxhdGU+IHdpbGwgYmUgY2hhbmdlZCBpbiB0aGlzIHByb2Nlc3MgLSB0aGUKKyAgICAgICAgcmVzdWx0IGlzIGEgbmV3IHN0cnVjdCB2YWx1ZS4gVGhlIGFjdHVhbCB2YWx1ZSBvZiA8dGVtcGxhdGU+IGRvZXMgbm90CisgICAgICAgIG1hdHRlciwgb25seSBpdHMgdHlwZS4KKworICAgICAgICBTaW5jZSB0aGUgcmV0dXJuZWQgc3RydWN0IGNhbid0IGJlIGtub3duIGF0IGNvbXBpbGUgdGltZSwgdGhlCisgICAgICAgIGVmdW4gaXMgZGVjbGFyZWQgdG8gcmV0dXJuICdtaXhlZCcuCisKK0hJU1RPUlkKKyAgICAgICAgSW50cm9kdWNlZCBpbiBMRE11ZCAzLjMuMjUwIC4KKyAgICAgICAgTERNdWQgMy4zLjM0NCBhZGRlZCB0aGUgdGVtcGxhdGUgYXJndW1lbnQuCisgICAgICAgIExETXVkIDMuMy40MzMgYWRkZWQgdGhlIGNvbnZlcnNpb24gZnJvbSBtYXBwaW5ncy4KKyAgICAgICAgTERNdWQgMy4zLjcyMCBhZGRlZCB0aGUgY29udmVyc2lvbiBvZiBzdHJ1Y3RzIGludG8gYW5vdGhlciBzdHJ1Y3QuCisKK1NFRSBBTFNPCisgICAgICAgIHRvX2FycmF5KEUpLCB0b19zdHJpbmcoRSksIG1rbWFwcGluZyhFKSwgc3RydWN0cyhMUEMpCmRpZmYgLS1naXQgYS9kb2MvZWZ1bi90cmFjZSBiL2RvYy9lZnVuL3RyYWNlCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjM2ZWRjNzkKLS0tIC9kZXYvbnVsbAorKysgYi9kb2MvZWZ1bi90cmFjZQpAQCAtMCwwICsxLDU0IEBACitHRVNDSFVFVFpUCitTWU5PUFNJUworICAgICAgICAjaW5jbHVkZSA8c3lzL3RyYWNlLmg+CisKKyAgICAgICAgaW50IHRyYWNlKGludCB0cmFjZWZsYWdzKTsKKworQkVTQ0hSRUlCVU5HCisgICAgICAgIFNldHp0IGRpZSBUcmFjZSBGbGFncyB1bmQgbGllZmVydCBkaWUgYWx0ZW4gVHJhY2UgRmxhZ3MgenVydWVjay4KKyAgICAgICAgV2VubiBUcmFjaW5nIGVpbmdlc2NoYWx0ZXQgaXN0LCB3aXJkIHdhZWhyZW5kIGRlciBBdXNmdWVocnVuZyBlaW5lCisgICAgICAgIE1lbmdlIEluZm9ybWF0aW9uZW4gYXVzZ2VnZWJlbi4gWnUgdmllbCBPdXRwdXQga2FubiBkaWUgVmVyYmluZHVuZworICAgICAgICBsYWhtIGxlZ2VuIG9kZXIgc29nYXIgZGVuIGdhbnplbiBUcmVpYmVyIHp1bSBBYnN0dXJ6IGJyaW5nZW4uCisKKyAgICAgICAgVHJhY2luZyBlcmZvbGd0IGF1ZiBlaW5lciBQcm8tVmVyYmluZHVuZy1CYXNpczogamVkZXIgaW50ZXJha3RpdmUgKCEpCisgICAgICAgIFVzZXIga2FubiBzZWluIGVpZ2VuZXMgVHJhY2VsZXZlbCB1bmQgLXByYWVmaXggZmVzdGxlZ2VuLiBKZWRlcgorICAgICAgICBlcmhhZWx0IG51ciBkZW4gVHJhY2VvdXRwdXQgZnVlciBkZW4gQ29kZSwgZGVyIHdhZWhyZW5kIGRlcgorICAgICAgICBBdXN3ZXJ0dW5nIGVpbmVzIHZvbSBVc2VyIGVpbmdlZ2ViZW4gS29tbWFuZG9zIGF1c2dlZnVlaHJ0IHdpcmQuCisKKyAgICAgICAgRGllIFRyYWNlLUJpdHMgKGF1cyA8dHJhY2UuaD4pIHNpbmQ6CisKKyAgICAgICAgICAgIFRSQUNFX05PVEhJTkcgICAgICAgKCAgMCk6IEJlZW5kZXQgZGFzIFRyYWNpbmcKKyAgICAgICAgICAgIFRSQUNFX0NBTEwgICAgICAgICAgKCAgMSk6IFRyYWNldCBhbGxlIEF1ZnJ1ZmUgdm9uIExmdW5zCisgICAgICAgICAgICBUUkFDRV9DQUxMX09USEVSICAgICggIDIpOiBUcmFjZXQgYWxsZSBjYWxsX290aGVyKCkgQXVmcnVmZQorICAgICAgICAgICAgVFJBQ0VfUkVUVVJOICAgICAgICAoICA0KTogVHJhY2V0IFJlc3VsdGF0ZSB2b24gRnVua3Rpb25lbgorICAgICAgICAgICAgVFJBQ0VfQVJHUyAgICAgICAgICAoICA4KTogR2lidCBBcmd1bWVudGUgdW5kIFJlc3VsdGF0ZSB2b24KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEZ1bmt0aW9uZW4gYXVzCisgICAgICAgICAgICBUUkFDRV9FWEVDICAgICAgICAgICggMTYpOiBUcmFjZXQgYWxsZSBhdXNnZWZ1ZWhydGVuIEFud2Vpc3VuZ2VuCisgICAgICAgICAgICBUUkFDRV9IRUFSVF9CRUFUICAgICggMzIpOiBUcmFjZXQgZGVuIEhlYXJ0YmVhdCBDb2RlCisgICAgICAgICAgICBUUkFDRV9BUFBMWSAgICAgICAgICggNjQpOiBUcmFjZXQgVHJlaWJlci1BcHBsaWVzCisgICAgICAgICAgICBUUkFDRV9PQkpOQU1FICAgICAgICgxMjgpOiBHaWJ0IGRlbiBOYW1lbiBkZXMgT2JqZWt0ZXMgYXVzCisKKyAgICAgICAgVFJBQ0VfRVhFQyB1bmQgVFJBQ0VfSEVBUlRfQkVBVCBzb2xsdGVuIG5pY2h0IHZlcndlbmRldCB3ZXJkZW4sIHdlaWwKKyAgICAgICAgc2llIG1hc3NpdmVuIE91dHB1dCB2ZXJ1cnNhY2hlbi4gVFJBQ0VfT0JKTkFNRSBzb2xsdGUgbmljaHQgdmVyd2VuZGV0CisgICAgICAgIHdlcmRlbiwgd2VubiBiZWthbm50IGlzdCwgd2VsY2hlcyBPYmpla3QgZ2V0cmFjZXQgd2lyZC4KKworICAgICAgICBEaWUgTWFzdGVyLUxmdW4gdmFsaWRfdHJhY2UoKSB3aXJkIG1pdCAoInRyYWNlIiwgdHJhY2VmbGFncykKKyAgICAgICAgYXVmZ2VydWZlbiwgdW0gZGllIEVybGF1Ym5pcyBmdWVyIGRpZSBOdXR6dW5nIHZvbiB0cmFjZSgpIHp1IGVyaGFsdGVuLgorCitCRUlTUElFTAorICAgICAgICBvYmplY3Qgb2JqOworICAgICAgICBzdHJpbmcgcHJlZml4OworICAgICAgICBvYmo9ZmluZF9wbGF5ZXIoInRob21hcyIpOworICAgICAgICBwcmVmaXg9b2JqZWNfbmFtZShvYmopOworICAgICAgICBwcmVmaXg9cHJlZml4WzEuLnN0cmxlbihwcmVmaXgpLTFdOyAgLyogZW50ZmVybnQgZGVuIFByYWVmaXggIi8iICovCisgICAgICAgIHRyYWNlcHJlZml4KHByZWZpeCk7CisgICAgICAgIC8qIFZvbiBoaWVyIGFuIHdpcmQgbnVyIENvZGUgaW0gT2JqZWt0IHN0ZC9wbGF5ZXIjNjkgZ2V0cmFjZXQgKi8KKyAgICAgICAgdHJhY2UoVFJBQ0VfQ0FMTHxUUkFDRV9DQUxMX09USEVSfFRSQUNFX1JFVFVSTnxUUkFDRV9BUkdTKTsKKyAgICAgICAgLi4uCisgICAgICAgIHRyYWNlKFRSQUNFX05PVEhJTkcpOworCitBRU5ERVJVTkdFTgorICAgICAgICBMRE11ZCAzLjIuOSB1ZWJlcmdpYnQgYXVjaCA8dHJhY2VmbGFncz4gYW4gdmFsaWRfdHJhY2UoKQorCitTSUVIRSBBVUNICisgICAgICAgIHRyYWNlcHJlZml4KEUpCmRpZmYgLS1naXQgYS9kb2MvZWZ1bi90cmFjZXByZWZpeCBiL2RvYy9lZnVuL3RyYWNlcHJlZml4Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjBmNDZmNDUKLS0tIC9kZXYvbnVsbAorKysgYi9kb2MvZWZ1bi90cmFjZXByZWZpeApAQCAtMCwwICsxLDI1IEBACitTWU5PUFNJUzoKKyAgICAgICAgc3RyaW5nIHRyYWNlcHJlZml4KHN0cmluZyBwcmVmaXgpCisgICAgICAgIHN0cmluZyB0cmFjZXByZWZpeChpbnQgZHVtbXkpCisKK0RFU0NSSVBUSU9OOgorICAgICAgICBJZiBjYWxsZWQgd2l0aCBhIHN0cmluZywgb25seSBvYmplY3RzIG1hdGNoaW5nIHRoaXMgcHJlZml4IHdpbGwKKyAgICAgICAgYmUgdHJhY2VkLiBUaGUgc3RyaW5nIG11c3Qgbm90IGNvbnRhaW4gYSBsZWFkaW5nICIvIiBiZWNhdXNlCisgICAgICAgIHRoZSBvYmplY3QgbmFtZXMgYXJlIHN0b3JlZCBpbnRlcm5hbGx5IHdpdGhvdXQgaXQuIElmIGNhbGxlZAorICAgICAgICB3aXRoIGEgbnVtYmVyLCB0aGUgdHJhY2VwcmVmaXggd2lsbCBiZSBpZ25vcmVkIGFuZCBhbGwgb2JqZWN0cworICAgICAgICB3aWxsIGJlIHRyYWNlZC4gUmV0dXJucyB0aGUgbGFzdCB0cmFjZXByZWZpeCBvciAwIGlmIHRoZXJlCisgICAgICAgIHdhc24ndCBhbnkuCisKK0VYQU1QTEU6CisgICAgICAgIG9iamVjdCBvYmo7CisgICAgICAgIHN0cmluZyBwcmVmaXg7CisgICAgICAgIG9iaiA9IGZpbmRfcGxheWVyKCJkZWVwdGhvdWdodCIpOworICAgICAgICBwcmVmaXggPSBvYmplY3RfbmFtZShvYmopOworICAgICAgICBwcmVmaXggPSBwcmVmaXhbMS4uc3RybGVuKHByZWZpeCktMV07IC8qIGN1dCBvZmYgdGhlIGxlYWRpbmcgIi8iICovCisgICAgICAgIHRyYWNlcHJlZml4KHByZWZpeCk7CisgICAgICAgIHRyYWNlKDF8Mnw0fDgpOworICAgICAgICAuLi4KKyAgICAgICAgdHJhY2UoMCk7CisgICAgICAgIAorU0VFIEFMU086CisgICAgICAgIHRyYWNlKEUpCmRpZmYgLS1naXQgYS9kb2MvZWZ1bi90cmFuc2ZlciBiL2RvYy9lZnVuL3RyYW5zZmVyCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmI0MTNmMDIKLS0tIC9kZXYvbnVsbAorKysgYi9kb2MvZWZ1bi90cmFuc2ZlcgpAQCAtMCwwICsxLDI1IEBACitWRVJBTFRFVAorU1lOT1BTSVMKKyAgICAgICAgaW50IHRyYW5zZmVyKG9iamVjdCBpdGVtLCBvYmplY3QgZGVzdCkKKworQkVTQ0hSRUlCVU5HCisgICAgICAgIERpZXNlIEZ1bmt0aW9uIGV4aXN0aWVydCBsZWRpZ2xpY2ggYXVzIEtvbXBhdGliaWxpdGFldHNncnVuZGVuLCB1bmQKKyAgICAgICAgZGFubiBhdWNoIG51ciwgd2Vubm4gZGVyIERyaXZlciBtaXQgVVNFX0RFUFJFQ0FURUQga29tcGlsaWVydCB3aXJkLgorCisgICAgICAgIERhcyBPYmplY3QgPGl0ZW0+IHdpcmQgaW4gT2JqZWt0IDxkZXN0PiBiZXdlZ3QuIFZlcnNjaGllZGVuZSBUZXN0cworICAgICAgICB3ZXJkZW4gZHVyY2hnZWZ1ZWhydCwgdW5kIGRhcyBSZXN1bHRhdCBiZXNjaHJlaWJ0IGRlbiAoTWlzcylFcmZvbGc6CisKKyAgICAgICAgMDogRXJmb2xnLgorICAgICAgICAxOiBadSBzY2h3ZXIgZnVlciA8ZGVzdD4KKyAgICAgICAgMjogS2FubiBuaWNodCBmYWxsZW4gZ2VsYXNzZW4gd2VyZGVuLgorICAgICAgICAzOiBLYW5uIG5pY2h0IGF1cyBzZWluZW0gIEJlaGFlbHRlciBnZW5vbW1lbiB3ZXJkZW4uCisgICAgICAgIDQ6IDxpdGVtPiBrYW5uIGluIGtlaW5lbiBCZWhhZWx0ZXIgZ2VzdGVja3Qgd2VyZGVuLgorICAgICAgICA1OiA8ZGVzdD4gYWt6ZXB0aWVydCA8aXRlbT4gbmljaHQuCisgICAgICAgIDY6IDxpdGVtPiBrYW5uIG5pY2h0IGF1Zmdlbm9tbWVuIHdlcmRlbi4KKworICAgICAgICBEaWUgRnVua3Rpb24gcnVmdCBkaWUgbGZ1bnMgYWRkX3dlaWdodCgpLCBkcm9wKCksIGdldCgpLAorICAgICAgICBwcmV2ZW50X2luc2VydCgpLCBhZGRfd2VpZ2h0KCksIHVuZCBjYW5fcHV0X2FuZF9nZXQoKSBuYWNoIEJlZGFyZi4uCisKK1NJRUhFIEFVQ0gKKyAgICAgICAgIG1vdmVfb2JqZWN0KEUpLCBkcm9wKEEpLCBnZXQoQSksIHByZXZlbnRfaW5zZXJ0KEEpLAorICAgICAgICAgY2FuX3B1dF9hbmRfZ2V0KEEpLCBhZGRfd2VpZ2h0KEEpCmRpZmYgLS1naXQgYS9kb2MvZWZ1bi90cmFuc3Bvc2VfYXJyYXkgYi9kb2MvZWZ1bi90cmFuc3Bvc2VfYXJyYXkKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNjhlMmE3OAotLS0gL2Rldi9udWxsCisrKyBiL2RvYy9lZnVuL3RyYW5zcG9zZV9hcnJheQpAQCAtMCwwICsxLDIyIEBACitTWU5PUFNJUzoKKwltaXhlZCAqdHJhbnNwb3NlX2FycmF5IChtaXhlZCAqYXJyKTsKKworREVTQ1JJUFRJT046CisJdHJhbnNwb3NlX2FycmF5ICggKHsgKHsxLDIsM30pLCAoe2EsYixjfSkgfSkgKQorCQkJPT0gKHsgKHsxLGF9KSwgKHsyLGIpfSwgKHszLGN9KSB9KSAKKworCXRyYW5zcG9zZV9hcnJheSgpIGFwcGxpZWQgdG8gYW4gYWxpc3QgcmVzdWx0cyBpbiBhbiBhcnJheSBvZgorCSh7IGtleSwgZGF0YSB9KSBwYWlycywgdXNlZnVsIGlmIHlvdSB3YW50IHRvIHVzZSBzb3J0X2FycmF5KCkKKwlvciBmaWx0ZXIoKSBvbiB0aGUgYWxpc3QuCisKK0VYQU1QTEU6CisJc29ydF9hcnJheSh0cmFuc3Bvc2VfYXJyYXkoICh7IG1faW5kaWNlcyhtYXApLCBtX3ZhbHVlcyhtYXApIH0pICksCisJCSAgIGxhbWJkYSggKHsgJ2EsICdiIH0pLAorCQkJICAgKHsgIyc8LCAoeyAjJ1ssICdhLCAwIH0pLAorCQkJCSAgICh7ICMnWywgJ2IsIDB9KSB9KSApICkKKworCVRoZSBnaXZlbiBtYXBwaW5nICdtYXAnIGlzIHJldHVybmVkIGFzIGFuIGFycmF5IG9mIAorCSh7IGtleSwJZGF0YSB9KSAgcGFpcnMsIHNvcnRlZCBieSB0aGUga2V5cy4KKworU0VFIEFMU086CisJYWxpc3RzKExQQyksIHNvcnRfYXJyYXkoRSkKZGlmZiAtLWdpdCBhL2RvYy9lZnVuL3RyaW0gYi9kb2MvZWZ1bi90cmltCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjQ1MjVhODIKLS0tIC9kZXYvbnVsbAorKysgYi9kb2MvZWZ1bi90cmltCkBAIC0wLDAgKzEsMzMgQEAKK1NZTk9QU0lTCisgICAgICAgICNpbmNsdWRlIDxzeXMvc3RyaW5ncy5oPgorCisgICAgICAgIHN0cmluZyB0cmltKHN0cmluZyBzdHIpOworICAgICAgICBzdHJpbmcgdHJpbShzdHJpbmcgc3RyLCBpbnQgd2hlcmUpOworICAgICAgICBzdHJpbmcgdHJpbShzdHJpbmcgc3RyLCBpbnQgd2hlcmUsIHN0cmluZyBjaGFyKTsKKworQkVTQ0hSRUlCVU5HCisgICAgICAgIEVudGZlcm50IGFsbGUgdm9yYXVzZ2VoZW5kZW4gdW5kIGFic2NobGllc3NlbmRlbiBaZWljaGVuIDxjaGFyPiBpbgorICAgICAgICBlaW5lbSBTdHJpbmcgPHN0cj4gdW5kIGdpYnQgZGVuIG5ldWVuIFN0cmluZyB6dXJ1ZWNrLgorCisgICAgICAgIDxjaGFyPiBrYW5uIGVudHdlZGVyIGVpbiBvZGVyIG1laHJlcmUgWmVpY2hlbiBzZWluLiBXaXJkIDxjaGFyPiBuaWNodAorICAgICAgICBhbmdlZ2ViZW4sIHdpcmQgc3RhbmRhcmRtYWVzc2lnIGRlciBMZWVyc2NobGFnICIgXHQiIGdlbnV0enQuCisKKyAgICAgICAgTWl0IDx3aGVyZT4ga2FubiBhbmdlZ2ViZW4gd2VyZGVuLCB3byBaZWljaGVuIGVudGZlcm50IHdlcmRlbjoKKworICAgICAgICAgICAgVFJJTV9MRUZUICAgKDEpOiAgICAgICAgZW50ZmVybnQgYWxsZSB2b3JhdXNnZWhlbmRlbgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgWmVpY2hlbiA8Y2hhcj4KKyAgICAgICAgICAgIFRSSU1fUklHSFQgICgyKTogICAgICAgIGVudGZlcm50IGFsbGUgYWJzY2hsaWVzc2VuZGVuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBaZWljaGVuIDxjaGFyPgorICAgICAgICAgICAgVFJJTV9CT1RIICAgKDMgb2RlciAwKTogZW50ZmVybnQgc293b2hsIHZvcmF1c2dlaGVuZGUgYWxzIGF1Y2gKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFic2NobGllc3NlbmRlIFplaWNoZW4gPGNoYXI+CisKK0JFSVNQSUVMCisgICAgICAgIHRyaW0oIiAgICAxMjM0ICAgICIpOyAgICAgICAgICAgICAgICAgICAgICAgZXJnaWJ0OiAiMTIzNCIKKyAgICAgICAgdHJpbSgiICAgIDEyMzQgICAgIiwgVFJJTV9SSUdIVCk7ICAgICAgICAgICBlcmdpYnQ6ICIgICAgMTIzNCIKKyAgICAgICAgdHJpbSgiICAgIDEyMzQgICAgIiwgVFJJTV9CT1RILCAiIDEiKTsgICAgICBlcmdpYnQ6ICIyMzQiCisKK0FFTkRFUlVOR0VOCisgICAgICAgIEVpbmdlZnVlaHJ0IGluIExETXVkIDMuMi43CisKK1NJRUhFIEFVQ0gKKyAgICAgICAgcmVncmVwbGFjZShFKQpkaWZmIC0tZ2l0IGEvZG9jL2VmdW4vdHlwZW9mIGIvZG9jL2VmdW4vdHlwZW9mCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjE1MWJiOTYKLS0tIC9kZXYvbnVsbAorKysgYi9kb2MvZWZ1bi90eXBlb2YKQEAgLTAsMCArMSwxMyBAQAorU1lOT1BTSVMKKyAgICAgICAgaW50IHR5cGVvZihtaXhlZCBhcmcpOworCitCRVNDSFJFSUJVTkcKKyAgICAgICAgR2lidCBlaW5lbiBDb2RlIGZ1ZXIgZGVuIFR5cCBkZXMgQXJndW1lbnRzIDxhcmc+LiBEaWUgVHlwZW4gc2luZAorICAgICAgICBkZWZpbmllcnQgaW4gPHN5cy9scGN0eXBlcy5oPgorCitBRU5ERVJVTkdFTgorICAgICAgICBFaW5nZWZ1ZWhydCBpbiAzLjJANjMKKworU0lFSEUgQVVDSAorICAgICAgICBnZXRfdHlwZV9pbmZvKEUpLCBpbnRwKEUpLCBvYmplY3RwKEUpLCBmbG9hdHAoRSksIHBvaW50ZXJwKEUpLAorICAgICAgICBjbG9zdXJlcChFKSwgc3ltYm9scChFKSwgc3RyaW5ncChFKSwgbWFwcGluZ3AoRSkKZGlmZiAtLWdpdCBhL2RvYy9lZnVuL3VuYm91bmRfbGFtYmRhIGIvZG9jL2VmdW4vdW5ib3VuZF9sYW1iZGEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uODA0YjFiNQotLS0gL2Rldi9udWxsCisrKyBiL2RvYy9lZnVuL3VuYm91bmRfbGFtYmRhCkBAIC0wLDAgKzEsMjcgQEAKK1NZTk9QU0lTCisgICAgICAgIGNsb3N1cmUgdW5ib3VuZF9sYW1iZGEobWl4ZWQgKmFyZywgbWl4ZWQgY29kZSk7CisKK0JFU0NIUkVJQlVORworICAgICAgICBFcnpldWd0IGVpbmUgTGFtYmRhLUNsb3N1cmUsIGRpZSBuaWNodCBhbiBlaW4gT2JqZWt0IGdlYnVuZGVuIGlzdCwKKyAgICAgICAgZW50c3ByZWNoZW5kIGVpbmVyIExhbWJkYS1GdW5rdGlvbiBpbiBMSVNQLgorCisgICAgICAgIERpZSBDbG9zdXJlIGthbm4ga2VpbmUgUmVmZXJlbnogenUgZ2xvYmFsZW4gVmFyaWFibGVuIGVudGhhbHRlbi4KKyAgICAgICAgTGZ1bi1DbG9zdXJlcyB3ZXJkZW4gdW52ZXJhZW5kZXJ0IGluIGRpZSBDbG9zdXJlIGVpbmdlYnVuZGVuLCBkYSBlcworICAgICAgICBrZWluIFVyc3BydW5nc29iamVrdCBmdWVyIGRpZXNlIENsb3N1cmUgZ2lidC4KKworICAgICAgICBCZXZvciBkaWUgQ2xvc3VyZSBhdWZnZXJ1ZmVuIHdlcmRlbiBrYW5uLCBtdXNzIHNpZSBhbiBlaW4gT2JqZWt0CisgICAgICAgIGdlYnVuZGVuIHdlcmRlbi4gTm9ybWFsZSBPYmpla3RlIGtvZW5uZW4gQ2xvc3VyZXMgbnVyIGFuIHNpY2ggc2VsYnN0CisgICAgICAgIGJpbmRlbiwgZGFzIEJpbmRlbiBhbiBhbmRlcmUgT2JqZWt0ZSBlcnpldWd0IGVpbmUgU2NodXR6dmVybGV0enVuZy4KKworICAgICAgICBEZXIgUHVua3QgaXN0LCBkYXNzIHByZXZpb3VzX29iamVjdCgpIGZ1ZXIgQXVmcnVmZSBpbm5lcmhhbGIgZGVyCisgICAgICAgIENsb3N1cmUgYXVmIGRhcyBPYmpla3QgemVpZ3QsIGRhcyBiaW5kX2xhbWJkYSgpIGF1ZmdlcnVmZW4gaGF0LCB1bmQKKyAgICAgICAgYWxsZSBvYmpla3QtIG9kZXIgdWlkLWJhc2llcnRlbiBTaWNoZXJoZWl0c2NoZWNrcyBiZXppZWhlbiBzaWNoCisgICAgICAgIGF1ZiBqZW5lcyBPYmpla3QuCisKKyAgICAgICAgRGFzIGVyc3RlIEFyZ3VtZW50IDwqYXJnPiBpc3QgZWluIEFycmF5LCBkYXMgZGllIEFyZ3VtZW50ZSAoU3ltYm9sZSkKKyAgICAgICAgZW50aGFlbHQsIGRpZSBhbiBkaWUgQ2xvc3VyZSB1ZWJlcmdlYmVuIHdlcmRlbiwgd2VubiBkaWVzZSBtaXQKKyAgICAgICAgZnVuY2FsbCgpIG9kZXIgYXBwbHkoKSBhdXNnZXdlcnRldCB3aXJkLiBEYXMgendlaXRlIEFyZ3VtZW50IDxjb2RlPgorICAgICAgICBlbnRoYWVsdCBkZW4gQ29kZSBkZXIgQ2xvc3VyZS4KKworU0lFSEUgQVVDSAorICAgICAgICBjbG9zdXJlcyhMUEMpLCBsYW1iZGEoRSksIGFwcGx5KEUpLCBmdW5jYWxsKEUpLCBiaW5kX2xhbWJkYShFKQpkaWZmIC0tZ2l0IGEvZG9jL2VmdW4vdW5pcXVlX2FycmF5IGIvZG9jL2VmdW4vdW5pcXVlX2FycmF5Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjM5MGM1NmUKLS0tIC9kZXYvbnVsbAorKysgYi9kb2MvZWZ1bi91bmlxdWVfYXJyYXkKQEAgLTAsMCArMSw0NyBAQAorU1lOT1BTSVMKKyAgICAgICAgbWl4ZWQgdW5pcXVlX2FycmF5KG9iamVjdCAqb2JqLCBzdHJpbmd8Y2xvc3VyZSBmdW4pCisgICAgICAgIG1peGVkIHVuaXF1ZV9hcnJheShvYmplY3QgKm9iaiwgc3RyaW5nfGNsb3N1cmUgZnVuLCBtaXhlZCBza2lwKQorICAgICAgICBtaXhlZCB1bmlxdWVfYXJyYXkob2JqZWN0ICpvYmosIHN0cmluZ3xjbG9zdXJlIGZ1biwgbWl4ZWQgZXh0cmEuLi4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLCBtaXhlZCBza2lwKQorCitCRVNDSFJFSUJVTkcKKyAgICAgICAgR3J1cHBpZXJ0IGFsbGUgT2JqZWt0ZSBhdXMgPCpvYmo+LCBmdWVyIGRpZSBkaWUgRnVua3Rpb24gPGZ1bj4KKyAgICAgICAgZGVuIGdsZWljaGVuIFdlcnQgbGllZmVydC4gV2VubiA8Km9iaj4gZXR3YXMgYW5kZXJlcyBhbHMgT2JqZWt0ZQorICAgICAgICBlbnRoYWVsdCwgd2VyZGVuIGRpZXNlIGlnbm9yaWVydC4KKyAgICAgICAgCisgICAgICAgIElzdCBkaWUgRnVua3Rpb24gbWl0IE5hbWVuIGFuZ2VnZWJlbiwgd2lyZCBzaWUgaW4gamVkZW0gT2JqZWt0CisgICAgICAgIGluIDwqb2JqPiBlaW5tYWwgYXVmZ2VydWZlbi4gV3VyZGVuIDxleHRyYT4gQXJndW1lbnRlCisgICAgICAgIGdlZ2ViZW4sIHdlcmRlbiBkaWVzZSBhbiBkaWUgRnVua3Rpb24gYmVpIGplZGVtIEF1ZnJ1ZiBhbHMKKyAgICAgICAgUGFyYW1ldGVyIHVlYmVyZ2ViZW4uCisKKyAgICAgICAgSXN0IGRpZSBGdW5rdGlvbiBhbHMgQ2xvc3VyZSBhbmdlZ2ViZW4sIHdpcmQgc2llIGZ1ZXIgamVkZXMgT2JqZWt0CisgICAgICAgIGluIDwqb2JqPiBlaW5tYWwgYXVmZ2VydWZlbiwgd29iZWkgZGFzIE9iamVrdCBhbHMgZXJzdGVzIEFyZ3VtZW50CisgICAgICAgIHVlYmVyZ2ViZW4gd2lyZCwgZ2Vmb2xndCB2b24gZXR3YWlpZ2VuIDxleHRyYT4gQXJndW1lbnRlbi4KKworICAgICAgICBXaXJkIGVpbiBBcmd1bWVudCA8c2tpcD4gYW5nZWdlYmVuIChiZWkgVmVyd2VuZHVuZyB2b24gPGV4dHJhPgorICAgICAgICBBcmd1bWVudGVuIG11c3MgZGllcyBnZXNjaGVoZW4pLCB1bmQgZW50c3ByaWNodCA8c2tpcD4gZGVtCisgICAgICAgIFJlc3VsdGF0IHZvbiA8c2VwYXJhdG9yPiBmdWVyIGVpbiBFbGVtZW50IGF1cyA8Km9iaj4sIHNvIHdpcmQKKyAgICAgICAgZGllc2VzIEVsZW1lbnQgbmljaHQgaW4gZGFzIFJlc3VsdGF0IHZvbiB1bmlxdWVfYXJyYXkoKQorICAgICAgICB1ZWJlcm5vbW1lbi4KKyAgICAgICAgCisgICAgICAgIERhcyBSZXN1bHRhdCB2b24gdW5pcXVlX2FycmF5KCkgaGF0IGRpZSBGb3JtOgorCisgICAgICAgICAgICAoeyAoe3NhbWUxOjEsIHNhbWUxOjIsIC4uLiBzYW1lMTpufSksCisgICAgICAgICAgICAgICAoe3NhbWUyOjEsIHNhbWUyOjIsIC4uLiBzYW1lMjpufSksCisgICAgICAgICAgICAgICAoe3NhbWVtOjEsIHNhbWVtOjIsIC4uLiBzYW1lbTpufSkgfSkKKworQkVJU1BJRUwKKyAgICAgICAgVW0gZWluIEFycmF5IHZvbiBBcnJheXMgenUgZXJoYWx0ZW4sIGRhcyBhbGxlIEJlbnV0emVyLCBuYWNoIExldmVsCisgICAgICAgIGdydXBwaWVydCwgZW50aGFlbHQ6CisKKyAgICAgICAgICAgIG1peGVkICphcnI7CisgICAgICAgICAgICBhcnI9dW5pcXVlX2FycmF5KHVzZXJzKCksICJfcXVlcnlfbGV2ZWwiLCAtMSk7CisKKyAgICAgICAgR29ldHRlciBoYWJlbiBlaW5lbiBMZXZlbCB2b24gLTEuIFNpZSB3ZXJkZW4gbmljaHQgaW4gYXJyIGF1Zmdlbm9tbWVuLAorICAgICAgICB3ZWlsIDxza2lwPiA9PSAtMS4KKworU0lFSEUgQVVDSAorICAgICAgQXJyYXlzOiAgICAgICBmaWx0ZXIoRSksIG1hcChFKQorICAgICAgT2JqZWt0YXJyYXlzOiBmaWx0ZXJfb2JqZWN0cyhFKSwgbWFwX29iamVjdHMoRSkKKyAgICAgIE1hcHBpbmdzOiAgICAgZmlsdGVyKEUpLCBtYXAoRSksIGZpbHRlcl9pbmRpY2VzKEUpLCBtYXBfaW5kaWNlcyhFKQorCmRpZmYgLS1naXQgYS9kb2MvZWZ1bi91bm1rbWFwcGluZyBiL2RvYy9lZnVuL3VubWttYXBwaW5nCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjNiZWVjY2IKLS0tIC9kZXYvbnVsbAorKysgYi9kb2MvZWZ1bi91bm1rbWFwcGluZwpAQCAtMCwwICsxLDI3IEBACitTWU5PUFNJUworICAgICAgICAqbWl4ZWQgdW5ta21hcHBpbmcobWFwcGluZyBtYXApOworCitCRVNDSFJFSUJVTkcKKyAgICAgICAgV2FuZGVsdCBkYXMgTWFwcGluZyA8bWFwPiBpbiBlaW4gQXJyYXkgdm9uIEFycmF5cyBhdXMsIGRhcyBhbGxlIEtleXMKKyAgICAgICAgdW5kIFdlcnRlIHZvbiA8bWFwPiBlbnRoYWVsdCB1bmQgZ2lidCBkaWVzZXMgQXJyYXkgenVydWVjay4KKworICAgICAgICBEYXMgUmVzdWx0YXQgdm9uIHVubWttYXBwaW5nKCkgaGF0IGRpZSBGb3JtICh7IGtleXNbXSwgZGF0YTBbXSwKKyAgICAgICAgZGF0YTFbXSAuLi4gfSksIHdvYmVpIGtleXNbXSBlaW4gQXJyYXkgYWxsZXIgS2V5cyBpc3QsIGRhdGEwW10gZWluCisgICAgICAgIEFycmF5IG1pdCBhbGxlbiBXZXJ0ZW4gYXVzIGRlciBlcnN0ZW4gU3BhbHRlLCBkYXRhMVtdIGVpbiBBcnJheSBtaXQKKyAgICAgICAgYWxsZW4gV2VydGVuIGF1cyBkZXIgendlaXRlbiBTcGFsdGUgZXRjLiBEYXMgaGVpc3N0LCBkYXNzIGRpZQorICAgICAgICBXZXJ0ZSB2b24ga2V5W3hdIGluIGRhdGEwW3hdLCBkYXRhMVt4XSB1c3cuIGdlc3BlaWNoZXJ0IHNpbmQuCisKKyAgICAgICAgdW5ta21hcHBpbmcoKSBpc3QgZGllIFVta2VocmZ1bmt0aW9uIHZvbiBta21hcHBpbmcoKSwgc29kYXNzIGdpbHQ6CisKKyAgICAgICAgICAgIGFwcGx5KCMnbWttYXBwaW5nLCB1bm1rbWFwcGluZyhtKSkgPT0gbQorCitCRUlTUElFTAorICAgICAgICBtYXBwaW5nIG0gPSAoWyAxOjEwOzIwLCAyOjExOzIxIF0pOworICAgICAgICB1bm1rbWFwcGluZyhtKSBlcmdpYnQ6ICh7ICh7MSwgMn0pICwgKHsxMCwgMTF9KSAsICh7MjAsIDIxfSkgfSkKKworQUVOREVSVU5HRU4KKyAgICAgICAgRWluZ2VmdWVocnQgaW4gTERNdWQgMy4yLjYuCisKK1NJRUhFIEFVQ0gKKyAgICAgICAgbWFwcGluZ3MoTFBDKSwgbWFwcGluZ3AoRSksIG1faW5kaWNlcyhFKSwgbV92YWx1ZXMoRSksIG1fZGVsZXRlKEUpLAorICAgICAgICBzaXplb2YoRSksIHdpZHRob2YoRSkuCmRpZmYgLS1naXQgYS9kb2MvZWZ1bi91bnF1b3RlIGIvZG9jL2VmdW4vdW5xdW90ZQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44MDAwMDYwCi0tLSAvZGV2L251bGwKKysrIGIvZG9jL2VmdW4vdW5xdW90ZQpAQCAtMCwwICsxLDE3IEBACitTWU5PUFNJUworICAgICAgICBxdW90ZWRfYXJyYXkgdW5xdW90ZShxdW90ZWRfYXJyYXkgYXJyKTsKKyAgICAgICAgc3RyaW5nfHN5bWJvbCB1bnF1b3RlKHN5bWJvbCBzeW0pOworCitCRVNDSFJFSUJVTkcKKyAgICAgICAgRW50ZmVybnQgZWluIFF1b3RlIHZvbiBlaW5lbSBnZXF1b3RldGVuIEFycmF5IG9kZXIgU3ltYm9sLiBXZW5uIGRhcworICAgICAgICBsZXR6dGUgUXVvdGUgdm9uIGVpbmVtIFN5bWJvbCBlbnRmZXJudCB3aXJkLCBlbnRzdGVodCBlaW4gU3RyaW5nLgorCitCRUlTUElFTEU6CisgICAgICAgIHVucXVvdGUoJ2Zvbyk7ICAgICAgICAgICAgICBlcmdpYnQ6ICJmb28iCisgICAgICAgIHVucXVvdGUoICcoezEsMiwzfSkgKTsgICAgICBlcmdpYnQ6ICh7MSwyLDN9KQorCitBRU5ERVJVTkdFTgorICAgICAgICBFaW5nZWZ1ZWhydCBpbiBMRE11ZCAzLjIuOS4KKworU0lFSEUgQVVDSAorICAgICAgICBxdW90ZShFKSwgc3ltYm9scChFKQpkaWZmIC0tZ2l0IGEvZG9jL2VmdW4vdW5zaGFkb3cgYi9kb2MvZWZ1bi91bnNoYWRvdwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi42ODhkNWZmCi0tLSAvZGV2L251bGwKKysrIGIvZG9jL2VmdW4vdW5zaGFkb3cKQEAgLTAsMCArMSwyMSBAQAorRlVOS1RJT04KKyAgICAgdm9pZCB1bnNoYWRvdygpCisKK0JFU0NIUkVJQlVORworICAgICBEYXMgYXVmcnVmZW5kZSBPYmpla3Qgd2lyZCBhbHMgU2hhZG93IHZvbiBhbGxlbiBhbmRlcmVuIE9iamVrdGVuCisgICAgIGVudGZlcm50LCBkZW5lbiBlcyB1ZWJlcmdld29yZmVuIHdhci4gV2VubiBkZW0gYXVmcnVmZW5kZW4gT2JqZWt0CisgICAgIHNlbGJzdCBlaW4gU2hhZG93IHVlYmVyZ2V3b3JmZW4gd2FyLCB3aXJkIGRpZXNlciBlbnRmZXJudC4KKyAgICAgTWFuIHNvbGx0ZSBkaWVzZSAocyllZnVuIHJ1ZmVuLCBiZXZvciBtYW4gZGVuIFNjaGF0dGVuIHplcnN0b2VydC4KKworQkVJU1BJRUxFCisgICAgIC8vIEIgYmVzY2hhdHRldCBBCisgICAgIHZvaWQgYjo6c3RvcF9zaGFkb3dpbmcoKSB7CisgICAgICAgdW5zaGFkb3coKTsKKyAgICAgfQorCitTSUVIRSBBVUNICisgICAgIEdlbmVyZWxsOgkgICAgIHNoYWRvdyhFKQorICAgICBSZWNodGU6CSAgICAgcXVlcnlfYWxsb3dfc2hhZG93KE0pLCBxdWVyeV9wcmV2ZW50X3NoYWRvdyhMKQorICAgICBJbmZvcm1hdGlvbmVuOiAgcXVlcnlfc2hhZG93aW5nKEUpCisKKzIwLjA4LjIwMDksIFplc3N0cmEKZGlmZiAtLWdpdCBhL2RvYy9lZnVuL3VwcGVyX2Nhc2UgYi9kb2MvZWZ1bi91cHBlcl9jYXNlCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmFjMWZmYTUKLS0tIC9kZXYvbnVsbAorKysgYi9kb2MvZWZ1bi91cHBlcl9jYXNlCkBAIC0wLDAgKzEsMTIgQEAKK1NZTk9QU0lTCisgICAgICAgIHN0cmluZyB1cHBlcl9jYXNlKHN0cmluZyBzdHIpOworCitCRVNDSFJFSUJVTkcKKyAgICAgICAgV2FuZGVsdCBhbGxlIFplaWNoZW4gaW4gPHN0cj4gaW4gR3Jvc3NidWNoc3RhYmVuIHVtIHVuZCBnaWJ0IGRhcworICAgICAgICBSZXN1bHRhdCB6dXJ1ZWNrLgorCitCRUlTUElFTAorICAgICAgICB1cHBlcl9jYXNlKCJIZXlhISIpICAgICBlcmdpYnQ6ICJIRVlBISIKKworU0lFSEUgQVVDSAorICAgICAgICBjYXBpdGFsaXplKEUpLCBsb3dlcl9jYXNlKEUpCmRpZmYgLS1naXQgYS9kb2MvZWZ1bi91c2VycyBiL2RvYy9lZnVuL3VzZXJzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjQ4YjRhZTMKLS0tIC9kZXYvbnVsbAorKysgYi9kb2MvZWZ1bi91c2VycwpAQCAtMCwwICsxLDUgQEAKK1NZTk9QU0lTCisgICAgICAgICpvYmplY3QgdXNlcnMoKTsKKworQkVTQ0hSRUlCVU5HCisgICAgICAgIExpZWZlcnQgZWluIEFycmF5LCBkYXMgYWxsZSBpbnRlcmFrdGl2ZW4gQmVudXR6ZXIgZW50aGFlbHQuCmRpZmYgLS1naXQgYS9kb2MvZWZ1bi91dGltZSBiL2RvYy9lZnVuL3V0aW1lCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjk2MjE4YWYKLS0tIC9kZXYvbnVsbAorKysgYi9kb2MvZWZ1bi91dGltZQpAQCAtMCwwICsxLDIyIEBACitTWU5PUFNJUworICAgICAgICAqaW50IHV0aW1lKCkKKworQkVTQ0hSRUlCVU5HCisgICAgICAgIExpZWZlcnQgZWluIEFycmF5IGRlciBaZWl0LCBkaWUgc2VpdCBkZW0gMDEuIEphbnVhciAxOTcwLAorICAgICAgICAwMDowMDowMCBHTVQgdmVyZ2FuZ2VuIGlzdCwgbWl0IEdlbmF1aWdrZWl0IGluIE1pa3Jvc2VrdW5kZW4KKyAgICAgICAgKDAuMDAwMDAxIFNla3VuZGVuKS4KKworICAgICAgICBadXJ1ZWNrIGdlZ2ViZW4gd2lyZCBlaW4gQXJyYXkgZGVyIEZvcm06CisgICAgICAgICAgICBpbnRbMF06IEFuemFobCBTZWt1bmRlbiBzZWl0IEJlZ2lubiBkZXIgWmVpdHJlY2hudW5nCisgICAgICAgICAgICBpbnRbMV06IEFuemFobCBNaWtyb3Nla3VuZGVuIGlubmVyaGFsYiBkZXIgYWt0dWVsbGVuIFNla3VuZGUKKworQkVJU1BJRUwKKyAgICAgICAgd3JpdGUoY3RpbWUodXRpbWUoKSkrIlxuIik7CisKKyAgICAgICAgR2lidCBkYXMgYWt0dWVsbGUgRGF0dW0gdW5kIFplaXQgenVydWVjay4KKworQUVOREVSVU5HRU4KKyAgICAgICAgRWluZ2VmdWVocnQgaW4gTERNdWQgMy4yLjkuCisKK1NJRUhFIEFVQ0gKKyAgICAgICAgY3RpbWUoRSksIGdtdGltZShFKSwgbG9jYWx0aW1lKEUpLCB0aW1lKEUpCmRpZmYgLS1naXQgYS9kb2MvZWZ1bi92YXJpYWJsZV9leGlzdHMgYi9kb2MvZWZ1bi92YXJpYWJsZV9leGlzdHMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMWJiZDg0MwotLS0gL2Rldi9udWxsCisrKyBiL2RvYy9lZnVuL3ZhcmlhYmxlX2V4aXN0cwpAQCAtMCwwICsxLDI5IEBACitTWU5PUFNJUworICAgICAgICAjaW5jbHVkZSA8ZnVuY3Rpb25saXN0Lmg+CisKKyAgICAgICAgc3RyaW5nIHZhcmlhYmxlX2V4aXN0cyhzdHJpbmcgc3RyIFssIGludCBmbGFnc10pOworICAgICAgICBzdHJpbmcgdmFyaWFibGVfZXhpc3RzKHN0cmluZyBzdHIsIG9iamVjdCBvYmogWywgaW50IGZsYWdzXSk7CisKK0JFU0NIUkVJQlVORworICAgICAgICBTdWNodCBlaW5lIFZhcmlhbGJlIDxzdHI+IGluIHRoaXNfb2JqZWN0KCkgb2RlciAoZmFsbHMgYW5nZWdlYmVuKQorICAgICAgICBpbSBPYmpla3QgPG9iaj4uCisKKyAgICAgICAgRGFzIFJlc3VsdGF0IGlzdCBkZXIgTmFtZSBkZXMgUHJvZ3JhbW1zLCBpbiBkZW0gZGllIFZhcmlhYmxlIGRlZmluaWVydAorICAgICAgICBpc3QuIERhcyBrYW5uIGVudHdlZGVyIG9iamVjdF9uYW1lKG9iaikgc2VpbiBvZGVyIGRlciBOYW1lIGVpbmVzCisgICAgICAgIGdlZXJidGVuIFByb2dyYW1tcy4gV2VubiBzaWNoIGRlciBUcmVpYmVyIG5pY2h0IGltIENvbXBhdC1Nb2R1cworICAgICAgICBiZWZpbmRldCwgYmVnaW5udCBkZXIgenVydWVjayBnZWxpZWZlcnRlIE5hbWUgaW1tZXIgbWl0ICcvJy4KKworICAgICAgICBXaXJkIDxmbGFncz4gTkFNRV9ISURERU4gZ2VzZXR6dCwgc28gbGllZmVydCB2YXJpYWJsZV9leGlzdHMoKSBhdWNoCisgICAgICAgIEluZm9ybWF0aW9uZW4gdWViZXIgVmFyaWFibGVuIHZvbSBUeXAgInN0YXRpYyIgdW5kICJwcm90ZWN0ZWQiIGluCisgICAgICAgIGFuZGVyZW4gT2JqZWt0ZW4uIEVzIGlzdCBuaWNodCBtb2VnbGljaCwgSW5mb3JtYXRpb25lbiB1ZWJlciAicHJpdmF0ZSIKKyAgICAgICAgZGVrbGFyaWVydGUgVmFyaWFibGVuIHp1IGVyaGFsdGVuLgorCisgICAgICAgIFdpcmQgZGllIFZhcmlhYmxlIG5pY2h0IGdlZnVuZGVuICh3ZWlsIHNpZSBuaWNodCBleGlzdGllcnQgb2RlciB3ZWlsCisgICAgICAgIHNpZSBmdWVyIGRhcyBhdWZydWZlbmRlIE9iamVrdCBuaWNodCBzaWNodGJhciBzaW5kKSwgd2lyZCAwIHp1cnVlY2sKKyAgICAgICAgZ2VsaWVmZXJ0LgorCitBRU5ERVJVTkdFTgorICAgICAgICBFaW5nZWZ1ZWhydCBpbiBMRE11ZCAzLjIuMTAuCisKK1NJRUhFIEFVQ0gKKyAgICAgICAgZnVuY3Rpb25fZXhpc3RzKEUpLCB2YXJpYWJsZV9saXN0KEUpCmRpZmYgLS1naXQgYS9kb2MvZWZ1bi92YXJpYWJsZV9saXN0IGIvZG9jL2VmdW4vdmFyaWFibGVfbGlzdApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi42NzNiMzc3Ci0tLSAvZGV2L251bGwKKysrIGIvZG9jL2VmdW4vdmFyaWFibGVfbGlzdApAQCAtMCwwICsxLDYwIEBACitHRVNDSFVFVFpUCitTWU5PUFNJUworICAgICAgICAjaW5jbHVkZSA8c3lzL2Z1bmN0aW9ubGlzdC5oPgorICAgICAgICAjaW5jbHVkZSA8c3lzL2xwY3R5cGVzLmg+CisKKyAgICAgICAgKm1peGVkIHZhcmlhYmxlX2xpc3Qob2JqZWN0IG9iaiwgaW50IGZsYWdzID0gUkVUVVJOX0ZVTkNUSU9OX05BTUUpOworCitCRVNDSFJFSUJVTkcKKyAgICAgICAgTGllZmVydCBlaW4gQXJyYXkgbWl0IEluZm9ybWF0aW9uZW4gdWViZXIgZGllIFZhcmlhYmxlbiB2b24gPG9iaj4uCisgICAgICAgIEZ1ZXIgamVkZSBWYXJpYWJsZSB3ZXJkZW4gMSBiaXMgNCBXZXJ0ZSBpbiBkaWVzZW0gQXJyYXkgZ2VzcGVpY2hlcnQsCisgICAgICAgIGFiaGFlbmdpZyB2b24gPGZsYWdzPi4gRGllIFJlc3VsdGF0ZSB3ZXJkZW4gaW4gZGllc2VyIFJlaWhlbmZvbGdlCisgICAgICAgIGltIEFycmF5IGFiZ2VzcGVpY2hlcnQ6CisgICAgICAgICAgLSBkZXIgTmFtZSBkZXIgVmFyaWFibGVuCisgICAgICAgICAgLSBkaWUgRmxhZ3MgZGVyIFZhcmlhYmxlbiAoc2llaGUgd2VpdGVyIHVudGVuKQorICAgICAgICAgIC0gZGVyIFJ1ZWNrZ2FiZXR5cCAoZ2VtYWVzcyBtdWRsaWIvc3lzL2xwY3R5cGVzLmgpCisgICAgICAgICAgLSBkZXIgV2VydCBkZXIgVmFyaWFibGVuCisKKyAgICAgICAgPG9iaj4ga2FubiBhbHMgT2JqZWt0IG9kZXIgYWxzIERhdGVpbmFtZW4gdWViZXJnZWJlbiB3ZXJkZW4uIEltCisgICAgICAgIHp3ZWl0ZW4gRmFsbCB2ZXJzdWNodCB2YXJpYWJsZV9saXN0KCkgbmljaHQsIGRhcyBPYmpla3Qgdm9yIGRlcgorICAgICAgICBWZXJhcmJlaXR1bmcgenUgbGFkZW4uCisKKyAgICAgICAgV2VubiA8b2JqPiBuaWNodCBkYXMgYXVmcnVmZW5kZSBPYmpla3QgaXN0IHVuZCBkZXIgV2VydCBkZXIgVmFyaWFibGVuCisgICAgICAgIGFiZ2VmcmFndCB3aXJkLCBlcnpldWd0IGRpZXMgZWluZSBTY2h1dHp2ZXJsZXR6dW5nICgidmFyaWFibGVfbGlzdCIsCisgICAgICAgIDxvYmo+KS4KKworICAgICAgICBNaXQgPGZsYWdzPiB3aXJkIGZlc3RnZWxlZ3QsIHdlbGNoZSBJbmZvcm1hdGlvbmVuIHVlYmVyIHdlbGNoZQorICAgICAgICBWYXJpYWJsZW4gYWJnZWZyYWd0IHdlcmRlbi4gRm9sZ2VuZGUgRmxhZ3MgYXVzIDxzeXMvZnVuY3Rpb25saXN0Lmg+CisgICAgICAgIGtvZW5uZW4gbWl0IGJpbmFlcmVtIE9kZXIga29tYmluaWVydCB3ZXJkZW46CisKKyAgICAgICAgQXVzd2FobCBkZXIgZ2VzYW1tZWx0ZW4gSW5mb3JtYXRpb246CisgICAgICAgICAgICBSRVRVUk5fRlVOQ1RJT05fTkFNRSAgICBsaWVmZXJ0IGRlbiBOYW1lbiBkZXIgVmFyaWFibGVuCisgICAgICAgICAgICBSRVRVUk5fRlVOQ1RJT05fRkxBR1MgICBsaWVmZXJ0IGRpZSBGbGFncyBkZXIgVmFyaWFibGVuIChzLiB1bnRlbikKKyAgICAgICAgICAgIFJFVFVSTl9GVU5DVElPTl9UWVBFICAgIGxpZWZlcnQgZGVuIFJ1ZWNrZ2FiZXR5cAorICAgICAgICAgICAgUkVUVVJOX1ZBUklBQkxFX1ZBTFVFICAgbGllZmVydCBkZW4gV2VydCBkZXIgVmFyaWFibGVuCisKKyAgICAgICAgQXVzd2FobCBkZXIgVmFyaWFibGVuLCBkaWUgYXVzZ2V3ZXJ0ZXQgd2VyZGVuOgorICAgICAgICAgICAgTkFNRV9JTkhFUklURUQgICAgICAgIHNjaGxpZXNzdCBnZWVyYnRlIFZhcmlhYmxlbiBhdXMKKyAgICAgICAgICAgIFRZUEVfTU9EX1NUQVRJQyAgICAgICBzY2hsaWVzc3QgInN0YXRpYyIgZGVrbGFyaWVydGUgVmFyaWFibGVuIGF1cworICAgICAgICAgICAgVFlQRV9NT0RfTk9TQVZFICAgICAgIHNjaGxpZXNzdCAibm9zYXZlIiBkZWtsYXJpZXJ0ZSBWYXJpYWJsZW4gYXVzCisgICAgICAgICAgICBUWVBFX01PRF9QUklWQVRFICAgICAgc2NobGllc3N0ICJwcml2YXRlIiBkZWtsYXJpZXJ0ZSBWYXJpYWJsZW4gYXVzCisgICAgICAgICAgICBUWVBFX01PRF9QUk9URUNURUQgICAgc2NobGllc3N0ICJwcm90ZWN0ZWQiIGRla2xhcmllcnRlIFZhcmlhYmxlbgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGF1cworICAgICAgICAgICAgTkFNRV9ISURERU4gICAgICAgICAgIGVudGhhZWx0IFZhcmlhYmxlbiwgZGllIGdlZXJidCB3dXJkZW4uCisKKyAgICAgICAgRGllIEZsYWdzIGRlciBWYXJpYWJsZW4ga29lbm5lbiBkaWUgQXVzd2FobC1GbGFncyBlbnRoYWx0ZW4gdW5kCisgICAgICAgIHp1c2FlenRsaWNoIGZvbGdlbmRlIFdlcnRlOgorICAgICAgICAgICAgVFlQRV9NT0RfVklSVFVBTCAgICAgIGRpZSBWYXJpYWJsZSB3dXJkZSB2aXJ0dWVsbCBnZWVyYnQKKyAgICAgICAgICAgIFRZUEVfTU9EX05PX01BU0dLICAgICBkaWUgVmFyaWFibGUgaXN0ICJub21hc2siIGRla2xhcmllcnQKKyAgICAgICAgICAgIFRZUEVfTU9EX1BVQkxJQyAgICAgICBkaWUgVmFyaWFibGUgaXN0ICJwdWJsaWMiIGRla2xhcmllcnQKKworICAgICAgICBBbGwgZGllc2UgRmxhZ3Mgc2luZCBpbiBtdWRsaWIvc3lzL2Z1bmN0aW9ubGlzdC5oIGRlZmluaWVydCB1bmQKKyAgICAgICAgc29sbHRlbiBhbiBlaW5lbiBhbGxnZW1laW4genVnYWVuZ2xpY2hlbiBQbGF0eiBrb3BpZXJ0IHdlcmRlbi4KKyAgICAgICAgRGllIFJ1ZWNrZ2FiZXdlcnRlIHNpbmQgaW4gbXVkbGliL3N5cy9scGN0eXBlcy5oIGRlZmluaWVydCwgZGllCisgICAgICAgIGF1Y2ggaW4gZGllIE11ZGxpYiBrb3BpZXJ0IHdlcmRlbiBzb2xsdGVuLgorCitBRU5ERVJVTkdFTgorICAgICAgICBFaW5nZWZ1ZWhydCBpbiBMRE11ZCAzLjIuMTAKKworU0lFSEUgQVVDSAorICAgICAgICBpbmhlcml0X2xpc3QoRSksIGZ1bmN0aW9ubGlzdChFKSwgdmFyaWFibGVfZXhpc3RzKEUpCmRpZmYgLS1naXQgYS9kb2MvZWZ1bi93YWxrX21hcHBpbmcgYi9kb2MvZWZ1bi93YWxrX21hcHBpbmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNzM5NmZjZgotLS0gL2Rldi9udWxsCisrKyBiL2RvYy9lZnVuL3dhbGtfbWFwcGluZwpAQCAtMCwwICsxLDg4IEBACit3YWxrX21hcHBpbmcoRSkKKworRlVOS1RJT046CisgICAgICAgIHZvaWQgd2Fsa19tYXBwaW5nKG1hcHBpbmcgbSwgc3RyaW5nIGZ1biBbLCBtaXhlZCBleHRyYSwgLi4uXSkKKyAgICAgICAgdm9pZCB3YWxrX21hcHBpbmcobWFwcGluZyBtLCBzdHJpbmcgZnVuLCBzdHJpbmd8b2JqZWN0IG9iCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAsIG1peGVkIGV4dHJhLC4uLikKKyAgICAgICAgdm9pZCB3YWxrX21hcHBpbmcobWFwcGluZyBtLCBjbG9zdXJlIGNsLCBtaXhlZCBleHRyYSwuLi4pCisKK1BBUkFNRVRFUjoKKyAgICAgbQkJLSBkdXJjaHp1Z2VoZW5kZXMgTWFwcGluZworICAgICBmdW4vY2wJLSB6dSBydWZlbmRlIE1ldGhvZGUvQ2xvc3VyZQorICAgICBvYgkJLSBPYmpla3QvRGF0ZWluYW1lLCBhbiBkZW0gTWV0aG9kZSBnZXJ1ZmVuIHdlcmRlbiBzb2xsCisgICAgIGV4dHJhCS0gd2VpdGVyZSBQYXJhbWV0ZXIgZnVlciBNZXRob2RlL0Nsb3N1cmUKKworQkVTQ0hSRUlCVU5HOgorICAgICBSdWZ0IGRpZSBNZXRob2RlIGZ1ZXIgamVkZW4gRWludHJhZyBpbSBNYXBwaW5nOgorICAgICAgb2ItPmZ1bmMoa2V5LCB2YWx1ZTEsIC4uLiwgdmFsdWVOLCBleHRyYSwuLi4pCisgICAgIGJlemllaHVuZ3N3ZWlzZSBmdWVocnQgZGllIENsb3N1cmUgZnVlciBqZWRlbiBkaWVzZXIgRWludHJhZWdlIGF1czoKKyAgICAgIGZ1bmNhbGwoY2wsIGtleSwgdmFsdWUxLCAuLi4sIHZhbHVlTiwgZXh0cmEsLi4uKQorCisgICAgIERpZSBTY2hsdWVzc2VsIHdlcmRlbiBhbHMgV2VydCB1ZWJlcmdlYmVuIHVuZCBkaWUgZGF6dWdlaG9lcmlnZW4gV2VydGUKKyAgICAgcGVyIFJlZmVyZW56LCBkaWVzZSBrb2VubmVuIHNvbWl0IGFsc28gaW4gZGVyIEZ1bmt0aW9uL0Nsb3N1cmUgZ2VhZW5kZXJ0CisgICAgIHdlcmRlbi4KKworCisgICAgIFZlcndlbmR1bmcgdm9uIE1ldGhvZGVuOgorCVdlbm4gYmVpIGRlciBBbmdhYmUgdm9uICdmdW4nIGtlaW4gT2JqZWt0ICdvYicgaW4gRm9ybSBlaW5lcyBTdHJpbmdzCisJb2RlciBPYmpla3RzIGFuZ2VnZWJlbiB3aXJkLCB3aXJkIHRoaXNfb2JqZWN0KCkgYW5nZW5vbW1lbi4KKworICAgICBWZXJ3ZW5kdW5nIHZvbiBDbG9zdXJlczoKKwlFcyBrb2VubmVuIHNvd29obCBMZnVuLUNsb3N1cmVzIGFscyBhdWNoIExhbWJkYS1DbG9zdXJlcyB2ZXJ3ZW5kZXQKKwl3ZXJkZW4uIExmdW4tQ2xvc3VyZXMga29lbm5lbiwgd2VubiBpbSBzZWxiZW4gT2JqZWt0IHZvcmhhbmRlbiBhdWNoCisJJ3ByaXZhdGUnIG9kZXIvdW5kICdzdGF0aWMnIGRla2xhcmllcnQgc2VpbiwgbXVlc3NlbiBhYmVyIHp1IGRlbQorCVplaXRwdW5rdCBkZXIgVmVyd2VuZHVuZyBiZWthbm50IHNlaW4gKEZ1bmt0aW9uc3Byb3RvdHlwZW4gYmVudXR6ZW4pLgorCitCRUlTUElFTEU6CisgICAgIC8vIExpc3RlIG1pdCBTcGllbGVybiBkdXJjaGdlaGVuIC4uLgorICAgICBtYXBwaW5nIHg9KFsgWy9odW1hbjpsaWFmYXJdOiAgMjAsCisJCSAgWy9kd2FyZjptZXNpcmlpXTogNTAsCisJCSAgWy9lbGY6emFybml5YV06ICAgNDAsCisJCSAgWy9mZWxpbmU6dHVyYm9dOiAgMzBdKTsKKworICAgICAvLyAuLi4gdW5kIFdlcnRlIGFlbmRlcm46CisgICAgIHZvaWQgYWRkX3ZhbChvYmplY3Qga2V5LCBpbnQgdmFsLCBpbnQgYWRkKSB7CisgICAgICAgaWYoa2V5LT5JbkZpZ2h0KCkpCisgICAgICAgICB2YWwrPWFkZDsKKyAgICAgICBlbHNlCisgICAgICAgICB2YWwtPWFkZDsKKyAgICAgfQorCisgICAgIC8vIHZlcnNjaGllZGVuZSBBdWZydWZhcnRlbiwgaWRlbnRpc2NoZXMgUmVzdWx0YXQ6CisgICAgIHdhbGtfbWFwcGluZyh4LCAiYWRkX3ZhbCIsIDAsIDEwKTsKKyAgICAgd2Fsa19tYXBwaW5nKHgsICJhZGRfdmFsIiwgdGhpc19vYmplY3QoKSwgMTAKKyAgICAgd2Fsa19tYXBwaW5nKHgsICJhZGRfdmFsIiwgIi9wbGF5ZXJzL2pvZi9hZGRpZXJvYmpla3RtaXRtZXRob2RlIiwgMTApOworCisgICAgIHdhbGtfbWFwcGluZyh4LCAjJ2FkZF92YWwsIDEwKTsKKworCitBZVFVSVZBTEVOWkNPREUgKG5pY2h0IGVtcGZvaGxlbiwgbnVyIHp1bSBWZXJzdGFlbmRuaXMhKToKKyAgICAgLy8gc28gcmljaHRpZyBhZXF1aXZhbGVudCB3aXJkIGVzIG51ciBtaXQgZWluZXIgQ2xvc3VyZSBoaWVyCisgICAgIGludCBpLCB3aWR0aDsKKyAgICAgbWFwcGluZyBpbnB1dDsKKyAgICAgbWl4ZWQgKmluZGV4LCAqcGFyYW07CisKKyAgICAgd2lkdGg9Z2V0X3R5cGVfaW5mbyhpbnB1dClbMV07CisgICAgIHBhcmFtPWFsbG9jYXRlKHdpZHRoKTsKKyAgICAgaW5kZXg9bV9pbmRpY2VzKGlucHV0KTsKKyAgICAgaT1zaXplb2YoaW5kZXgpOworICAgICB3aGlsZShpLS0pIHsKKyAgICAgICBqPXdpZHRoOworICAgICAgIHdoaWxlKGotLSA+IDEpCisgICAgICAgICBwYXJhbVtqXT1pbnB1dFtpbmRleFtpXSxqXTsKKyAgICAgICBqWzBdPWluZGV4W2ldOworCisgICAgICAgYXBwbHkoY2wsIHBhcmFtKTsKKyAgICAgICAvLyBmdW4oaW5kZXhbaV0sIGlucHV0W2luZGV4W2ldLDBdLCBpbnB1dFtpbmRleFtpXSwxXSwgLi4uKTsKKyAgICAgIH0KKworU0lFSEUgQVVDSDoKKyAgICAgQXJyYXlzOgkJZmlsdGVyKEUpLCBtYXAoRSkKKyAgICAgT2JqZWt0YXJyYXlzOglmaWx0ZXJfb2JqZWN0cyhFKSwgbWFwX29iamVjdHMoRSkKKyAgICAgTWFwcGluZ3M6CQlmaWx0ZXJfaW5kaWNlcyhFKSwgbWFwX2luZGljZXMoRSkKKworICAgICBTb25zdGlnZXM6CQltX2NvbnRhaW5zKEUpCisJCQltZW1iZXIoKQorCQkJbV9pbmRpY2VzKEUpLCBtX3ZhbHVlcyhFKQorCisyMC5KYW4gMjAwNSBHbG9pbnNvbgpkaWZmIC0tZ2l0IGEvZG9jL2VmdW4vd2lkdGhvZiBiL2RvYy9lZnVuL3dpZHRob2YKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZTNhYzU5OQotLS0gL2Rldi9udWxsCisrKyBiL2RvYy9lZnVuL3dpZHRob2YKQEAgLTAsMCArMSwxNiBAQAorU1lOT1BTSVMKKyAgICAgICAgaW50IHdpZHRob2YobWFwcGluZyBtYXApOworCitCRVNDSFJFSUJVTkcKKyAgICAgICAgTGllZmVydCBkaWUgQW56YWhsIFZhbHVlcyBwcm8gS2V5IGltIE1hcHBpbmcgPG1hcD4uIFdlbm4gPG1hcD4gMCBpc3QsCisgICAgICAgIGlzdCBkYXMgUmVzdWx0YXQgMC4KKworQkVJU1BJRUwKKyAgICAgICAgbWFwcGluZyBtYXAgPSAoWyJmb28iIDogMTsyXSk7CisgICAgICAgIHdpZHRob2YobWFwKSAgICBlcmdpYnQgMi4KKworQUVOREVSVU5HRU4KKyAgICAgICAgRWluZ2VmdWVocnQgaW4gTERNdWQgMy4yLjYKKworU0lFSEUgQVVDSAorICAgICAgICBzaXplb2YoRSksIG1rbWFwcGluZyhFKSwgbV9yZWFsbG9jYXRlKEUpLCBtX3ZhbHVlcyhFKSwgdW5ta21hcHBpbmcoRSkKZGlmZiAtLWdpdCBhL2RvYy9lZnVuL3dpemxpc3RfaW5mbyBiL2RvYy9lZnVuL3dpemxpc3RfaW5mbwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi42NzRlYzlhCi0tLSAvZGV2L251bGwKKysrIGIvZG9jL2VmdW4vd2l6bGlzdF9pbmZvCkBAIC0wLDAgKzEsMzggQEAKK1NZTk9QU0lTCisgICAgICAgICNpbmNsdWRlIDx3aXpsaXN0Lmg+CisKKyAgICAgICAgbWl4ZWQgKiB3aXpsaXN0X2luZm8oKQorCitERVNDUklQVElPTgorICAgICAgICBSZXR1cm5zIGFuIGFycmF5IHdpdGggdGhlIGludGVyZXN0aW5nIGVudHJpZXMgb2YgdGhlIHdpemxpc3QuCisgICAgICAgIE5lZWRzIHRvIGJlIHByaXZpbGVnZWQgYnkgdGhlIG1hc3RlciBvYmplY3QuCisKKyAgICAgICAgVGhlIHJlc3VsdCBpcyBhbiBhcnJheSB3aXRoIG9uZSBlbnRyeSBmb3IgZXZlcnkgd2l6YXJkICh1aWQpLgorICAgICAgICBFdmVyeSBlbnRyeSBpcyBhbiBhcnJheSBpdHNlbGY6CisKKyAgICAgICAgICBzdHJpbmcgd1tXTF9OQU1FXSAgICAgICAgPSBOYW1lIG9mIHRoZSB3aXphcmQuCisgICAgICAgICAgaW50ICAgIHdbV0xfQ09NTUFORFNdICAgID0gV2VpZ2h0ZWQgbnVtYmVyIG9mIGNvbW1hbmRzIGV4ZWN1dGUgYnkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvYmplY3RzIG9mIHRoaXMgd2l6YXJkLgorICAgICAgICAgIGludCAgICB3W1dMX0NPU1RdLAorICAgICAgICAgIGludCAgICB3W1dMX0dJR0FDT1NUXSAgICAgICA9IFdlaWdodGVkIHN1bSBvZiBldmFsX2Nvc3RzLgorICAgICAgICAgIGludCAgICB3W1dMX1RPVEFMX0NPU1RdLAorICAgICAgICAgIGludCAgICB3W1dMX1RPVEFMX0dJR0FDT1NUXSA9IFRvdGFsIHN1bSBvZiBldmFsX2Nvc3RzLgorICAgICAgICAgIGludCAgICB3W1dMX0hFQVJUX0JFQVRTXSAgID0gV2VpZ2h0ZWQgY291bnQgb2YgaGVhcnRfYmVhdHMuCisgICAgICAgICAgaW50ICAgIHdbV0xfQ0FMTF9PVVRdICAgICAgPSBSZXNlcnZlZCBmb3IgY2FsbF9vdXQoKSAodW51c2VkIHlldCkuCisgICAgICAgICAgaW50ICAgIHdbV0xfQVJSQVlfVE9UQUxdICAgPSBUb3RhbCBzaXplIG9mIGFycmF5cyBpbiBlbGVtZW50cy4KKyAgICAgICAgICBpbnQgICAgd1tXTF9NQVBQSU5HX1RPVEFMXSA9IFRvdGFsIHNpemUgb2YgbWFwcGluZ3MgaW4gZWxlbWVudHMuCisgICAgICAgICAgaW50ICAgIHdbV0xfU1RSVUNUX1RPVEFMXSAgPSBUb3RhbCBzaXplIG9mIHN0cnVjdHMgaW4gZWxlbWVudHMuCisgICAgICAgICAgbWl4ZWQgIHdbV0xfRVhUUkFdICAgICAgICAgPSBFeHRyYSB3aXpsaXN0LWluZm8gaWYgc2V0LgorCisgICAgICAgIFRoZSAnd2VpZ2h0ZWQnIGVudHJpZXMgZGVjYXkgZXZlcnkgaG91ciBieSAxMCUuCisKK0hJU1RPUlkKKyAgICAgICAgTERNdWQgMy4yLjEwIHNwbGl0IHRoZSBvbGQgV0xfRVZBTF9DT1NUIGludG8gV0xfQ09TVCBhbmQgV0xfR0lHQUNPU1QKKyAgICAgICAgICB0byBhY2NvbW9kYXRlIGZvciBsb25nZXIgdXB0aW1lcywgYW5kIGludHJvZHVjZWQKKyAgICAgICAgICBXTF9UT1RBTF9DT1NUL1dMX1RPVEFMX0dJR0FDT1NULgorICAgICAgICBMRE11ZCAzLjMuMTc0IGFkZGVkIFdMX01BUFBJTkdfVE9UQUwuCisgICAgICAgIExETXVkIDMuMy4/IGFkZGVkIFdMX1NUUlVDVF9UT1RBTC4KKworU0VFIEFMU08KKyAgICAgICAgcHJpdmlsZWdlX3Zpb2xhdGlvbihNKSwgc2V0X2V4dHJhX3dpemluZm9fc2l6ZShFKQorICAgICAgICBnZXRfZXh0cmFfd2l6aW5mbyhFKSwgc2V0X2V4dHJhX3dpemluZm8oRSkKZGlmZiAtLWdpdCBhL2RvYy9lZnVuL3dyaXRlIGIvZG9jL2VmdW4vd3JpdGUKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYTMwNDFiMAotLS0gL2Rldi9udWxsCisrKyBiL2RvYy9lZnVuL3dyaXRlCkBAIC0wLDAgKzEsMzcgQEAKK1NZTk9QU0lTOgorICAgICAgICB2b2lkIHdyaXRlKG1peGVkIG1zZykKKworREVTQ1JJUFRJT046CisgICAgICAgIFdyaXRlIG91dCBzb21ldGhpbmcgdG8gdGhlIGN1cnJlbnQgcGxheWVyLiBXaGF0IGV4YWN0bHkgd2lsbAorICAgICAgICBiZSBwcmludGVkIGluIHRoZSBlbmQgZGVwZW5kcyBvZiB0aGUgdHlwZSBvZiBtc2cuCisgICAgICAgIFBsZWFzZSBtaW5kOiBpZiB0aGVyZSBpcyBubyBjdXJyZW50IHBsYXllciAodGhpc19wbGF5ZXIoKSksIHRoZQorICAgICAgICBmdW5jdGlvbiB3aWxsIG91dHB1dCBkaXJlY3RseSB0byB0aGUgZHJpdmVyIGRlYnVnIGxvZy4gUGxlYXNlIGNoZWNrCisgICAgICAgIGJlZm9yZSEKKyAgICAgICAgCisgICAgICAgIElmIGl0IGlzIGEgc3RyaW5nIG9yIGEgbnVtYmVyIHRoZW4ganVzdCBwcmludHMgaXQgb3V0LgorICAgICAgICAKKyAgICAgICAgSWYgaXQgaXMgYW4gb2JqZWN0IHRoZW4gdGhlIG9iamVjdCB3aWxsIGJlIHByaW50ZWQgaW4gdGhlCisgICAgICAgIGZvcm06ICJPQkooIitvYmplY3RfbmFtZSgob2JqZWN0KW1peCkrIikiCisgICAgICAgIAorICAgICAgICBJZiBpdCBpcyBhbiBhcnJheSBqdXN0ICI8QVJSQVk+IiB3aWxsIGJlIHByaW50ZWQuCisgICAgICAgIAorICAgICAgICBJZiB0aGUgd3JpdGUoKSBmdW5jdGlvbiBpcyBpbnZva2VkIGJ5IGEgY29tbWFuZCBvZiBhbiBsaXZpbmcKKyAgICAgICAgYnV0IG5vdCBpbnRlcmFjdGl2ZSBvYmplY3QgYW5kIHRoZSBnaXZlbiBhcmd1bWVudCBpcyBhIHN0cmluZworICAgICAgICB0aGVuIHRoZSBsZnVuIGNhdGNoX3RlbGwoKSBvZiB0aGUgbGl2aW5nIHdpbGwgYmUgaW52b2tlZCB3aXRoCisgICAgICAgIHRoZSBtZXNzYWdlIGFzIGFyZ3VtZW50LgorCitFWEFNUExFUzoKKyAgICAgICAgd3JpdGUoIkhlbGxvIHdvcmxkIVxuIik7CisgICAgICAgIAorICAgICAgICBKdXN0IHByaW50IG91dCBhIHN0cmluZy4KKyAgICAgICAgCisgICAgICAgIHdyaXRlKHRoaXNfcGxheWVyKCkpOworICAgICAgICAKKyAgICAgICAgVGhpcyB3aWxsIHByaW50IG91dCBzb21ldGhpbmcgbGlrZSAiT0JKKHN0ZC9wbGF5ZXIjMTIzNCkiLgorICAgICAgICAKKyAgICAgICAgd3JpdGUoICh7ICJibHViIiB9KSApOworICAgICAgICAKKyAgICAgICAgV2lsbCBwcmludCBvdXQgIjxBUlJBWT4iLgorICAgICAgICAKK1NFRSBBTFNPOgorICAgICAgICBzYXkoRSksIHRlbGxfb2JqZWN0KEUpLCB0ZWxsX3Jvb20oRSksIHNob3V0KEUpLCBjYXRjaF90ZWxsKEwpCmRpZmYgLS1naXQgYS9kb2MvZWZ1bi93cml0ZV9ieXRlcyBiL2RvYy9lZnVuL3dyaXRlX2J5dGVzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmJiNzU0ODQKLS0tIC9kZXYvbnVsbAorKysgYi9kb2MvZWZ1bi93cml0ZV9ieXRlcwpAQCAtMCwwICsxLDExIEBACitTWU5PUFNJUworICAgICAgICBpbnQgd3JpdGVfYnl0ZXMoc3RyaW5nIGZpbGUsIGludCBzdGFydCwgc3RyaW5nIHN0cik7CisKK0JFU0NIUkVJQlVORworICAgICAgICBTY2hyZWlidCBkZW4gU3RyaW5nIDxzdHI+IGlucyBGaWxlIDxmaWxlPiB1bmQgdWViZXJzY2hyZWlidCBkYWJlaSBkaWUKKyAgICAgICAgYWx0ZW4gQnl0ZXMgYWIgUG9zaXRpb24gPHN0YXJ0Pi4gV2VubiA8c3RhcnQ+IGVpbmUgbmVnYXRpdmUgWmFobCBpc3QsCisgICAgICAgIHdlcmRlbiBkaWUgWmVpY2hlbiB2b20gRW5kZSB2b24gPGZpbGU+IGFuIGdlemFlaGx0LiB3cml0ZV9ieXRlcygpCisgICAgICAgIGxpZWZlcnQgMSBiZWkgRXJmb2xnLCAwIGJlaSBNaXNzZXJmb2xnLgorCitTSUVIRSBBVUNICisgICAgICAgIHNhdmVfb2JqZWN0KEUpLCB3cml0ZV9maWxlKEUpCmRpZmYgLS1naXQgYS9kb2MvZWZ1bi93cml0ZV9maWxlIGIvZG9jL2VmdW4vd3JpdGVfZmlsZQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5lNzlmYjZiCi0tLSAvZGV2L251bGwKKysrIGIvZG9jL2VmdW4vd3JpdGVfZmlsZQpAQCAtMCwwICsxLDE0IEBACitTWU5PUFNJUworICAgICAgICBpbnQgd3JpdGVfZmlsZShzdHJpbmcgZmlsZSwgc3RyaW5nIHN0cik7CisgICAgICAgIGludCB3cml0ZV9maWxlKHN0cmluZyBmaWxlLCBzdHJpbmcgc3RyLCBpbnQgZmxhZ3MpOworCitCRVNDSFJFSUJVTkcKKyAgICAgICAgSGFlbmd0IGRlbiBTdHJpbmcgPHN0cj4gYW4gZGllIERhdGVpIDxmaWxlPiBhbi4gTGllZmVydCAxIGJlaSBFcmZvbGcsCisgICAgICAgIDAgYmVpIE1pc3NlcmZvbGcuCisKKyAgICAgICAgSWYgPGZsYWdzPiA9IDEsIGRhbm4gd2lyZCBkaWUgRGF0ZWkgdm9yIGRlbSBlaWdlbnRsaWNoZW4KKyAgICAgICAgU2NocmVpYmVuIGdlbG9lc2NodDsgZGFzICdhbmhhZW5nZW4nIHdpcmQgc28gZWZmZWt0aXYgZWluCisgICAgICAgICd1ZWJlcnNjaHJlaWJlbicuIERlZmF1bHR3ZXJ0IGZ1ZXIgPGZsYWdzPiBpc3QgMC4KKworU0lFSEUgQVVDSAorICAgICAgICBmaWxlX3NpemUoRSksIGNhdChFKSwgd3JpdGVfYnl0ZXMoRSksIHJlYWRfZmlsZShFKSwgcm0oRSkKZGlmZiAtLWdpdCBhL2RvYy9lZnVuL3htbF9nZW5lcmF0ZSBiL2RvYy9lZnVuL3htbF9nZW5lcmF0ZQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44NjUwNmUwCi0tLSAvZGV2L251bGwKKysrIGIvZG9jL2VmdW4veG1sX2dlbmVyYXRlCkBAIC0wLDAgKzEsNzcgQEAKK09QVElPTkFMCitFWFBFUklNRU5UQUwKK1NZTk9QU0lTCisgICAgICAgICNpbmNsdWRlIDx4bWwuaD4KKworICAgICAgICBzdHJpbmcgeG1sX2dlbmVyYXRlKG1peGVkICp4bWwpCisKK0JFU0NIUkVJQlVORworICAgICAgICBXYW5kZWx0IGRhcyB1ZWJlcmdlYmVuZSA8eG1sPi1BcnJheSBpbiBlaW5lbiBYTUwta29uZm9ybWVuIFN0cmluZyB1bSwKKyAgICAgICAgc29mZXJuIG1vZWdsaWNoLiBEZXIgPHhtbD4tUGFyYW1ldGVyIG11c3MgZm9sZ2VuZGUgU3RydWt0dXIgaGFiZW46CisKKyAgICAgICAgRXIgbXVzcyBUYWctQXJyYXlzIG1pdCBmb2xnZW5kZW4gZHJlaSBFbGVtZW50ZW4gZW50aGFsdGVuOgorCisgICAgICAgICAgICBzdHJpbmcgWE1MX1RBR19OQU1FCisgICAgICAgICAgICAgICAgRGVyIE5hbWUgZGVzIFhNTC1UYWdzLgorCisgICAgICAgICAgICBtYXBwaW5nIFhNTF9UQUdfQVRUUklCVVRFUworICAgICAgICAgICAgICAgIEFsbGUgQXR0cmlidXRlIGRpZXNlcyBYTUwtVGFncyBhbHMgZWluIE1hcHBpbmcgbWl0IGRlbQorICAgICAgICAgICAgICAgIGpld2VpbGlnZW4gQXR0cmlidXRuYW1lbiBhbHMgU2NobHVlc3NlbCB1bmQgZGVuIEF0dHJpYnV0d2VydAorICAgICAgICAgICAgICAgIGFscyBkZXIgZGF6dWdlaG9lcmlnZSBTdHJpbmcuCisgICAgICAgICAgICAgICAgCisgICAgICAgICAgICAgICAgRmFsbHMgZWluIFhNTC1UYWcga2VpbmUgQXR0cmlidXRlIGVudGhhZWx0LCBzbyBpc3QgZGllc2VzCisgICAgICAgICAgICAgICAgRWxlbWVudCAwLgorCisgICAgICAgICAgICBtaXhlZCAqIFhNTF9UQUdfQ09OVEVOVFMKKyAgICAgICAgICAgICAgICBEZXIgSW5oYWx0IGRlcyBYTUwtVGFncyBhbHMgZWluIEFycmF5LiBEaWVzZXMgQXJyYXkga2FubgorICAgICAgICAgICAgICAgIGVudHdlZGVyIFN0cmluZ3MgKHJlaW5lIFplaWNoZW5kYXRlbikgb2RlciBBcnJheXMKKyAgICAgICAgICAgICAgICBhbHMgd2VpdGVyZSBUYWdzIGVudGhhbHRlbiwgd2VsY2hlIHdpZWRlcnVtIGRpZXNlCisgICAgICAgICAgICAgICAgZHJlaSBFbGVtZW50ZSBiZXNpdHplbi4KKyAgICAgICAgICAgICAgICAKKyAgICAgICAgICAgICAgICBGYWxscyBkYXMgWE1MLVRhZyBuaWNodHMgZW50aGFlbHQsIHNvIGlzdCBkaWVzZXMgRWxlbWVudCAwLgorCisgICAgICAgIEZhbGxzIGRlciB1ZWJlcmdlYmUgUGFyYW1ldGVyIG5pY2h0IGRpZXNlIFN0cnVrdHVyIGJlc2l0enQsIHNvIHdpcmQKKyAgICAgICAgZWluZSBGZWhsZXJtZWxkdW5nIGF1c2dlZ2ViZW4uIEFuc29uc3RlbiBpc3QgZWluIGd1ZWx0aWdlciBYTUwtU3RyaW5nCisgICAgICAgIGRhcyBSZXN1bHRhdC4KKworICAgICAgICBEaWVzZSBGdW5rdGlvbiBpc3QgbnVyIHZlcmZ1ZWdiYXIsIHdlbm4gZGVyIERyaXZlciBtaXQgSWtzZW1lbC0KKyAgICAgICAgVW50ZXJzdHVldHp1bmcgY29tcGlsaWVydCB3dXJkZS4gSW4gZGllc2VtIEZhbGwgaXN0IGRhcyBNYWtybworICAgICAgICBfX1hNTF9ET01fXyBkZWZpbmllcnQuCisKK0JFSVNQSUVMCisgICAgICAgIHhtbF9nZW5lcmF0ZSgoeyAiYWJjIiwgMCwgMCB9KSkgLT4gIjxhYmMvPiIKKyAgICAgICAgeG1sX2dlbmVyYXRlKCh7ICJhYmMiLCAoWyAieHl6IiA6ICJjZGUiIF0pLCAwIH0pKSAtPiAiPGFiYyB4eXo9ImNkZSIvPiIKKworICAgICAgICBtaXhlZCogeG1sID0gKHsgImJ1Y2giCisgICAgICAgICAgICAgICAgICAgICAgLCAoWyAic3ByYWNoZSIgOiAiZGV1dHNjaCIgXSkKKyAgICAgICAgICAgICAgICAgICAgICAsICh7ICh7ICJ0aXRlbCIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAsIDAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAsICh7ICJEaWVzIGlzdCBkZXIgVGl0ZWwiIH0pCisgICAgICAgICAgICAgICAgICAgICAgICAgICB9KQorICAgICAgICAgICAgICAgICAgICAgICAgICwgKHsgImthcGl0ZWwiCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgLCAwCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgLCAoeyAiRGllcyBpc3QgZWluIEthcGl0ZWwiIH0pCisgICAgICAgICAgICAgICAgICAgICAgICAgICB9KQorICAgICAgICAgICAgICAgICAgICAgICAgICwgKHsgImthcGl0ZWwiCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgLCAwCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgLCAoeyAiRGFzIHNvbGwgIgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICwgKHsgImIiCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLCAwIAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICwgKHsgImZldHRnZWRydWNrdCIgfSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLCAiIHNlaW4uIgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pCisgICAgICAgICAgICAgICAgICAgICAgICB9KQorICAgICAgICAgICAgICAgICAgICAgfSkKKworICAgICAgICB4bWxfZ2VuZXJhdGUoeG1sKQorICAgICAgICAgICAgLT4gIjxidWNoIHNwcmFjaGU9ImRldXRzY2giPjx0aXRlbD5EaWVzIGlzdCBkZXIgVGl0ZWw8L3RpdGVsPiIKKyAgICAgICAgICAgICAgICI8a2FwaXRlbD5EaWVzIGlzdCBlaW4gS2FwaXRlbDwva2FwaXRlbD48a2FwaXRlbD5EYXMgc29sbCAiCisgICAgICAgICAgICAgICAiPGI+ZmV0dGdlZHJ1Y2t0PC9iPiBzZWluLjwva2FwaXRlbD48L2J1Y2g+IgorCitHRVNDSElDSFRFCisgICAgICAgIEVpbmdlZnVlaHJ0IGluIExETXVkIDMuMy43MTguCisKK1NJRUhFIEFVQ0gKKyAgICAgICAgeG1sX3BhcnNlKEUpCmRpZmYgLS1naXQgYS9kb2MvZWZ1bi94bWxfcGFyc2UgYi9kb2MvZWZ1bi94bWxfcGFyc2UKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNDY0OWM5YQotLS0gL2Rldi9udWxsCisrKyBiL2RvYy9lZnVuL3htbF9wYXJzZQpAQCAtMCwwICsxLDc4IEBACitPUFRJT05BTAorRVhQRVJJTUVOVEFMCitTWU5PUFNJUworICAgICAgICAjaW5jbHVkZSA8eG1sLmg+CisKKyAgICAgICAgbWl4ZWQqIHhtbF9wYXJzZShzdHJpbmcgeG1sKQorCitCRVNDSFJFSUJVTkcKKyAgICAgICAgUGFyc3QgZGVuIGFuZ2VnZWJlbmVuIFN0cmluZyA8eG1sPiBhbHMgWE1MLiBEZXIgU3RyaW5nIGRhcmYgbnVyIGVpbgorICAgICAgICBlaW56aWdlcyBSb290LVRhZyBlbnRoYWx0ZW4sIHdlaXRlcmUgUm9vdC1UYWdzIHdlcmRlbiBpZ25vcmllcnQuCisKKyAgICAgICAgRmFsbHMgZGVyIFN0cmluZyBYTUwta29uZm9ybSB3YXIsIHNvIHdpcmQgZWluIEFycmF5IG1pdCBkcmVpIEVsZW1lbnRlbgorICAgICAgICB6dXJ1ZWNrZ2VnZWJlbiwgZGVzc2VuIEVsZW1lbnRlIGZvbGdlbmRlcm1hc3NlbiBkZWZpbmllcnQgc2luZDoKKworICAgICAgICAgICAgc3RyaW5nIFhNTF9UQUdfTkFNRQorICAgICAgICAgICAgICAgIERlciBOYW1lIGRlcyBYTUwtVGFncy4KKworICAgICAgICAgICAgbWFwcGluZyBYTUxfVEFHX0FUVFJJQlVURVMKKyAgICAgICAgICAgICAgICBBbGxlIEF0dHJpYnV0ZSBkaWVzZXMgWE1MLVRhZ3MgYWxzIGVpbiBNYXBwaW5nIG1pdCBkZW0KKyAgICAgICAgICAgICAgICBqZXdlaWxpZ2VuIEF0dHJpYnV0bmFtZW4gYWxzIFNjaGx1ZXNzZWwgdW5kIGRlbiBBdHRyaWJ1dHdlcnQKKyAgICAgICAgICAgICAgICBhbHMgZGVyIGRhenVnZWhvZXJpZ2UgU3RyaW5nLgorICAgICAgICAgICAgICAgIAorICAgICAgICAgICAgICAgIEZhbGxzIGVpbiBYTUwtVGFnIGtlaW5lIEF0dHJpYnV0ZSBlbnRoYWVsdCwgc28gaXN0IGRpZXNlcworICAgICAgICAgICAgICAgIEVsZW1lbnQgMC4KKworICAgICAgICAgICAgbWl4ZWQgKiBYTUxfVEFHX0NPTlRFTlRTCisgICAgICAgICAgICAgICAgRGVyIEluaGFsdCBkZXMgWE1MLVRhZ3MgYWxzIGVpbiBBcnJheS4gRGllc2VzIEFycmF5IGthbm4KKyAgICAgICAgICAgICAgICBlbnR3ZWRlciBTdHJpbmdzIChyZWluZSBaZWljaGVuZGF0ZW4pIG9kZXIgQXJyYXlzCisgICAgICAgICAgICAgICAgYWxzIHdlaXRlcmUgVGFncyBlbnRoYWx0ZW4sIHdlbGNoZSB3aWVkZXJ1bSBkaWVzZQorICAgICAgICAgICAgICAgIGRyZWkgRWxlbWVudGUgYmVzaXR6ZW4uCisgICAgICAgICAgICAgICAgCisgICAgICAgICAgICAgICAgRmFsbHMgZGFzIFhNTC1UYWcgbmljaHRzIGVudGhhZWx0LCBzbyBpc3QgZGllc2VzIEVsZW1lbnQgMC4KKworICAgICAgICBGYWxscyBkZXIgWE1MLVN0cmluZyBuaWNodCB3b2hsZ2Vmb3JtdCBpc3Qgb2RlciBmYWxscyBuaWNodCBnZW51ZyBTcGVpY2hlcgorICAgICAgICB6dXIgVmVyZnVlZ3VuZyBzdGVodCwgd2lyZCBlaW5lIEZlaGxlcm1lbGR1bmcgYXVzZ2VnZWJlbi4KKworICAgICAgICBEaWVzZSBGdW5rdGlvbiBpc3QgbnVyIHZlcmZ1ZWdiYXIsIHdlbm4gZGVyIERyaXZlciBtaXQgSWtzZW1lbC0KKyAgICAgICAgVW50ZXJzdHVldHp1bmcgY29tcGlsaWVydCB3dXJkZS4gSW4gZGllc2VtIEZhbGwgaXN0IGRhcyBNYWtybworICAgICAgICBfX1hNTF9ET01fXyBkZWZpbmllcnQuCisKK0JFSVNQSUVMCisgICAgICAgIHhtbF9wYXJzZSgiPGFiYy8+IikgICAgICAgICAgIC0+ICh7ICJhYmMiLCAwLCAwIH0pCisgICAgICAgIHhtbF9wYXJzZSgiPGFiYyB4eXo9ImNkZSIvPiIpIC0+ICh7ICJhYmMiLCAoWyAieHl6IiA6ICJjZGUiIF0pLCAwIH0pCisKKyAgICAgICAgeG1sX3BhcnNlKCI8YnVjaCBzcHJhY2hlPSJkZXV0c2NoIj4iICsgCisgICAgICAgICAgICAgICAgICAiICAgIDx0aXRlbD5EaWVzIGlzdCBkZXIgVGl0ZWw8L3RpdGVsPiIgKyAKKyAgICAgICAgICAgICAgICAgICIgICAgPGthcGl0ZWw+RGllcyBpc3QgZWluIEthcGl0ZWw8L2thcGl0ZWw+IiArIAorICAgICAgICAgICAgICAgICAgIiAgICA8a2FwaXRlbD5EYXMgc29sbCA8Yj5mZXR0Z2VkcnVja3Q8L2I+IHNlaW4uPC9rYXBpdGVsPiIgKworICAgICAgICAgICAgICAgICAgIjwvYnVjaD4iKQorCisgICAgICAgICAgICAtPiAoeyAiYnVjaCIKKyAgICAgICAgICAgICAgICAsIChbICJzcHJhY2hlIiA6ICJkZXV0c2NoIiBdKQorICAgICAgICAgICAgICAgICwgKHsgKHsgInRpdGVsIgorICAgICAgICAgICAgICAgICAgICAgICwgMAorICAgICAgICAgICAgICAgICAgICAgICwgKHsgIkRpZXMgaXN0IGRlciBUaXRlbCIgfSkKKyAgICAgICAgICAgICAgICAgICAgIH0pCisgICAgICAgICAgICAgICAgICAgLCAoeyAia2FwaXRlbCIKKyAgICAgICAgICAgICAgICAgICAgICAsIDAKKyAgICAgICAgICAgICAgICAgICAgICAsICh7ICJEaWVzIGlzdCBlaW4gS2FwaXRlbCIgfSkKKyAgICAgICAgICAgICAgICAgICAgIH0pCisgICAgICAgICAgICAgICAgICAgLCAoeyAia2FwaXRlbCIKKyAgICAgICAgICAgICAgICAgICAgICAsIDAKKyAgICAgICAgICAgICAgICAgICAgICAsICh7ICJEaWVzIHNvbGwgIgorICAgICAgICAgICAgICAgICAgICAgICAgICwgKHsgImIiCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgLCAwIAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICwgKHsgImZldHRnZWRydWNrdCIgfSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pCisgICAgICAgICAgICAgICAgICAgICAgICAgLCAic2Vpbi4iCisgICAgICAgICAgICAgICAgICAgICAgICB9KQorICAgICAgICAgICAgICAgICAgICAgfSkKKyAgICAgICAgICAgICAgICAgIH0pCisgICAgICAgICAgICAgICB9KQorCitHRVNDSElDSFRFCisgICAgICAgIEVpbmdlZnVlaHJ0IGluIExETXVkIDMuMy43MTguCisKK1NJRUhFIEFVQ0gKKyAgICAgICAgeG1sX2dlbmVyYXRlKEUpCmRpZmYgLS1naXQgYS9kb2MvZWZ1bi94b3JfYml0cyBiL2RvYy9lZnVuL3hvcl9iaXRzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjZmOWVhYjkKLS0tIC9kZXYvbnVsbAorKysgYi9kb2MvZWZ1bi94b3JfYml0cwpAQCAtMCwwICsxLDE5IEBACitTWU5PUFNJUworICAgICAgICBzdHJpbmcgeG9yX2JpdHMoc3RyaW5nIHN0cjEsIHN0cmluZyBzdHIyKTsKKworQkVTQ0hSRUlCVU5HCisgICAgICAgIDxzdHIxPiB1bmQgPHN0cjI+IHNpbmQgYmVpZGVuIEJpdHN0cmluZ3MuIERhcyBSZXN1bHRhdCB2b24geG9yX2JpdHMoKQorICAgICAgICBpc3QgZWluIEJpdHN0cmluZyBtaXQgZGVtIGJpbmFlcmVuIFhPUiB2b24gPHN0cjE+IHVuZCA8c3RyMj4sIGFsc28KKyAgICAgICAgZWluIFN0cmluZywgaW4gZGVtIGVpbiBCaXQgbnVyIGdlc2V0enQgaXN0LCB3ZW5uIGVzIGVudHdlZGVyIGluIDxzdHIxPgorICAgICAgICBvZGVyIGluIDxzdHIyPiB2b3Jrb21tdCwgbmljaHQgYWJlciBpbiBiZWlkZW4uCisKK0JFSVNQSUVMRQorICAgICAgICBzdHJpbmcgczEsIHMyLCBzMzsKKyAgICAgICAgczEgPSBzZXRfYml0KCIiLCAzKTsgczEgPSBzZXRfYml0KHMxLCAxNSk7ICAtPiBzMSBpc3QgIiggKCIKKyAgICAgICAgczIgPSBzZXRfYml0KCIiLCAzKTsgczIgPSBzZXRfYml0KHMyLCA0KTsgICAtPiBzMiBpc3QgIjgiCisgICAgICAgIHMzID0geG9yX2JpdHMoczEsIHMyKTsKKyAgICAgICAgLT4gczMgaXN0ICIwICgiLCBlcyBzaW5kIGFsc28gZGFzIDQuIHVuZCBkYXMgMTUuIEJpdCBnZXNldHp0LgorCitTSUVIRSBBVUNICisgICAgICAgIGNsZWFyX2JpdChFKSwgc2V0X2JpdChFKSwgdGVzdF9iaXQoRSksIG5leHRfYml0KEUpLCBsYXN0X2JpdChFKQorICAgICAgICBjb3VudF9iaXRzKEUpLCBhbmRfYml0cyhFKSwgb3JfYml0cyhFKSwgaW52ZXJ0X2JpdHMoRSksIGNvcHlfYml0cyhFKQpkaWZmIC0tZ2l0IGEvZG9jL2V2ZW50cy9FVlRfR1VJTERfQURWQU5DRSBiL2RvYy9ldmVudHMvRVZUX0dVSUxEX0FEVkFOQ0UKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZjQyMWY0MwotLS0gL2Rldi9udWxsCisrKyBiL2RvYy9ldmVudHMvRVZUX0dVSUxEX0FEVkFOQ0UKQEAgLTAsMCArMSwzNiBAQAorRVZFTlQ6IAorICAgRVZUX0dVSUxEX0FEVkFOQ0UKKworREVGSU5JRVJUIElOOgorICAgL3N5cy9ldmVudHMuaAorCitHRVRSSUdHRVJUIFZPTjoKKyAgIC9zdGQvZ2lsZGVuX29iLmMKKworQkVTQ0hSRUlCVU5HOgorICAgRGllc2VyIEV2ZW50IHdpcmQgaW1tZXIgYXVzZ2Vsb2VzdCwgd2VubiBzaWNoIGRlciBHaWxkZW5sZXZlbCBlaW5lcworICAgU3BpZWxlcnMgZXJob2VodCBvZGVyIGF1Y2gsIHdlbm4gbnVyIGRlciBHaWxkZW5sZXZlbCBlaW5lcyBTcGllbGVycyB2b24KKyAgIGVpbmVyIEdpbGRlIGdlYWVuZGVydCB3aXJkICh3ZWlsIHNpZSBrZWluZSBHaWxkZW5sZXZlbCBrZW5udCkuCisKK0VWRU5ULURBVEVOOgorICAgRGllIERhdGVuIHdlcmRlbiBhbHMgTWFwcGluZyB1ZWJlcmdlYmVuOgorICAgKFsgRV9PQkpFQ1Q6ICAgICAgICAgKG9iamVjdCkgU3BpZWxlcm9iamVrdAorICAgICAgRV9QTE5BTUU6ICAgICAgICAgKHN0cmluZykgVUlEL1NwaWVsZXJuYW1lCisgICAgICBFX0VOVklST05NRU5UOiAgICAob2JqZWN0KSBFbnZpcm9ubWVudCBkZXMgU3BpZWxlcnMKKyAgICAgIEVfR1VJTEROQU1FOiAgICAgIChzdHJpbmcpIEdpbGRlbm5hbWUKKyAgICAgIFBfR1VJTERfTEVWRUwgICAgIChzdHJpbmcpIHMuIFByb3BlcnR5LCBuZXVlciBHaWxkZW5sZXZlbAorICAgICAgUF9HVUlMRF9USVRMRTogICAgKHN0cmluZykgcy4gUHJvcGVydHksIG5ldWVyIEdpbGRlbnRpdGVsCisgICAgICBQX1NVQkdVSUxEX1RJVExFOiAoc3RyaW5nKSBzLiBQcm9wZXJ0eSwgbmV1ZXIgU3ViZ3VpbGQtVGl0bGUKKyAgICBdKQorCitCRU1FUktVTkdFTjoKKyAgIFdlbm4gR2lsZGVuIGtlaW5lIEdpbGRlbmxldmVsIGtlbm5lLCBzb25kZXJuIGFuZGVyZSBGb3JtZW4gZGVzIEdpbGRlbnN0YXR1cworICAgdmVyZ2ViZW4gdW5kIGRlciBHaWxkZW50aXRlbCBhbGxlaW4gbmljaHQgYXVzcmVpY2h0LCAgbXVzcyBoaWVyIHVlYmVyIGVpbmUKKyAgIEVyZ2Flbnp1bmcgZGVyIERhdGVuIG5hY2hnZWRhY2h0IHdlcmRlbi4KKworU0lFSEUgQVVDSDoKKyAgIGV2ZW50cywgUmVnaXN0ZXJFdmVudCgpLCBVbnJlZ2lzdGVyRXZlbnQoKSwgVHJpZ2dlckV2ZW50KCksIGV2ZW50ZAorCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorMTYuMDguMjAwNywgWmVzc3RyYQorCmRpZmYgLS1naXQgYS9kb2MvZXZlbnRzL0VWVF9HVUlMRF9DSEFOR0UgYi9kb2MvZXZlbnRzL0VWVF9HVUlMRF9DSEFOR0UKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNGFjYjkwNgotLS0gL2Rldi9udWxsCisrKyBiL2RvYy9ldmVudHMvRVZUX0dVSUxEX0NIQU5HRQpAQCAtMCwwICsxLDMxIEBACitFVkVOVDogCisgICBFVlRfR1VJTERfQ0hBTkdFCisKK0RFRklOSUVSVCBJTjoKKyAgIC9zeXMvZXZlbnRzLmgKKworR0VUUklHR0VSVCBWT046CisgICAvc2VjdXJlL2dpbGRlbm1hc3Rlci5jCisKK0JFU0NIUkVJQlVORzoKKyAgIERpZXNlciBFdmVudCB3aXJkIGltbWVyIGF1c2dlbG9lc3QsIHdlbm4gZWluIFNwaWVsZXIgZWluZSBHaWxkZSB3ZWNoc2VsdC4KKyAgIERhIFNwaWVsZXIgYmVpIGVpbmVtIEdpbGRlbmF1c3RyaXR0IGluIGlocmVyIFN0YW5kYXJkZ2lsZGUgbGFuZGVuLCBpc3QKKyAgIGplZGVyIEF1cy0gdW5kIEVpbnRyaXR0IGxldHp0ZW5kbGljaCBlaW4gV2VjaHNlbC4KKworRVZFTlQtREFURU46CisgICBEaWUgRGF0ZW4gd2VyZGVuIGFscyBNYXBwaW5nIHVlYmVyZ2ViZW46CisgICAoWyBFX09CSkVDVDogICAgICAgICAob2JqZWN0KSBTcGllbGVyb2JqZWt0LCB3YXMgZGllIEdpbGRlIHdlY2hzZWx0ZSwKKyAgICAgIEVfUExOQU1FOiAgICAgICAgIChzdHJpbmcpIFVJRC9QbGF5ZXJuYW1lIGRlcyBTcGllbGVycywKKyAgICAgIEVfRU5WSVJPTk1FTlQ6ICAgIChvYmplY3QpIEVudmlyb25tZW50IGRlcyBTcGllbGVycywKKyAgICAgIEVfR1VJTEROQU1FOiAgICAgIChzdHJpbmcpIG5ldWUgR2lsZGUsCisgICAgICBFX0xBU1RfR1VJTEROQU1FOiAoc3RyaW5nKSBhbHRlIEdpbGRlLAorICAgIF0pCisKK0JFTUVSS1VOR0VOOgorCitTSUVIRSBBVUNIOgorICAgZXZlbnRzLCBSZWdpc3RlckV2ZW50KCksIFVucmVnaXN0ZXJFdmVudCgpLCBUcmlnZ2VyRXZlbnQoKSwgZXZlbnRkCisKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisxNi4wOC4yMDA3LCBaZXNzdHJhCisKZGlmZiAtLWdpdCBhL2RvYy9ldmVudHMvRVZUX0xJQl9BRFZBTkNFIGIvZG9jL2V2ZW50cy9FVlRfTElCX0FEVkFOQ0UKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOWRkOGZkMQotLS0gL2Rldi9udWxsCisrKyBiL2RvYy9ldmVudHMvRVZUX0xJQl9BRFZBTkNFCkBAIC0wLDAgKzEsMzAgQEAKK0VWRU5UOiAKKyAgIEVWVF9MSUJfQURWQU5DRQorCitERUZJTklFUlQgSU46CisgICAvc3lzL2V2ZW50cy5oCisKK0dFVFJJR0dFUlQgVk9OOgorICAgL3N0ZC9naWxkZS5jCisKK0JFU0NIUkVJQlVORzoKKyAgIERpZXNlcyBFdmVudCB3aXJkIGF1c2dlbG9lc3QsIHdlbm4gc2ljaCBkZXIgU3BpZWxlcmxldmVsIGVpbmVzIFNwaWVsZXJzCisgICBhZW5kZXJ0LiAoTW9tZW50YW4gZXJob2VodCBlciBzaWNoIG51ci4pCisKK0VWRU5ULURBVEVOOgorICAgRGllIERhdGVuIHdlcmRlbiBhbHMgTWFwcGluZyB1ZWJlcmdlYmVuOgorICAgKFsgRV9PQkpFQ1Q6ICAgICAgICAgKG9iamVjdCkgU3BpZWxlcm9iamVrdAorICAgICAgRV9QTE5BTUU6ICAgICAgICAgKHN0cmluZykgVUlEL1NwaWVsZXJuYW1lCisgICAgICBFX0VOVklST05NRU5UOiAgICAob2JqZWN0KSBFbnZpcm9ubWVudCBkZXMgU3BpZWxlcnMKKyAgICAgIEVfR1VJTEROQU1FOiAgICAgIChzdHJpbmcpIE5hbWUgZGVyIEdpbGRlIGRlcyBTcGllbGVycworICAgICAgUF9MRVZFTDogICAgICAgICAgKGludCkgcy4gUHJvcCwgbmV1ZXIgU3BpZWxlcmxldmVsCisgICAgXSkKKworQkVNRVJLVU5HRU46CisKK1NJRUhFIEFVQ0g6CisgICBldmVudHMsIFJlZ2lzdGVyRXZlbnQoKSwgVW5yZWdpc3RlckV2ZW50KCksIFRyaWdnZXJFdmVudCgpLCBldmVudGQKKworLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKzE2LjA4LjIwMDcsIFplc3N0cmEKKwpkaWZmIC0tZ2l0IGEvZG9jL2V2ZW50cy9FVlRfTElCX0NMT0NLIGIvZG9jL2V2ZW50cy9FVlRfTElCX0NMT0NLCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjIyZmY0NTEKLS0tIC9kZXYvbnVsbAorKysgYi9kb2MvZXZlbnRzL0VWVF9MSUJfQ0xPQ0sKQEAgLTAsMCArMSwzMiBAQAorRVZFTlQ6IAorICAgRVZUX0xJQl9DTE9DSworCitERUZJTklFUlQgSU46CisgICAvc3lzL2V2ZW50cy5oCisKK0dFVFJJR0dFUlQgVk9OOgorICAgL29iai91aHIuYworCitCRVNDSFJFSUJVTkc6CisgICBBbGxlIFZpZXJ0ZWxzdHVuZGUgd2lyZCBkaWVzZXIgRXZlbnQgZ2VydWZlbi4gV2VubiBtYW4gRXJlaWduaXNzZSBqZXdlaWxzCisgICB6dXIgdm9sbGVuIFN0dW5kZSwgeHg6MTUsIHh4OjMwIHVuZCB4eDo0NSBkdXJjaGZ1ZWhyZW4gd2lsbCwgYmlldGV0IGVzIHNpY2gKKyAgIGFuLCBkaWVzZW0gRXZlbnQgenUgbGF1c2NoZW4uCisKK0VWRU5ULURBVEVOOgorICAgRGllIERhdGVuIHNpbmQgZWluIE1hcHBpbmcgbWl0IGRlbiBBcnJheWluZGl6ZXMgdm9uIGxvY2FsdGltZSgpIGFscyBLZXlzCisgICB1bmQgZGVuIGRhenUgZ2Vob2VyaWdlbiBEYXRlbiBhbHMgVmFsdWVzLgorCitCRU1FUktVTkdFTjoKKyAgIFdpbGwgbWFuIGVybWl0dGVsbiwgaW4gd2VsY2hlciBWaWVydGVsc3R1bmRlIG1hbiBzaWNoIGdlcmFkZSBiZWZpbmRldCwKKyAgIGJpZXRldCBzaWNoICgobWludXRlbi8xNSkgJSA0KSBhbi4gRGFzIGVyZ2lidCBpbW1lciBlaW5lIFphaGwgendpc2NoZW4gMAorICAgdW5kIDMuIDAtPiB2b2xsZSBTdHVuZGUsIDEtPiB2aWVydGVsIG5hY2gsIDItPiBoYWxiLCAzLT4gdmllcnRlbCB2b3Igdm9sbC4KKyAgIEhpZXJiZWkgd2lyZCBuYWNoIEJlbmFjaHJpY2h0aWdlbiBkZXIgT2JqZWt0IHVtIHVlYmxpY2hlcndlaXNlIDAtMnMKKyAgIHZlcnpvZWdlcnQsIHdlbm4gZXMgYWxzIHdpcmtsaWNoIGV4YWt0IHNlaW4gbXVzcywgbGFlc3N0IHNpY2ggZGllc2VyIEV2ZW50CisgICBkYW5uIGRvY2ggbmljaHQgdmVyd2VuZGVuLgorCitTSUVIRSBBVUNIOgorICAgZXZlbnRzLCBSZWdpc3RlckV2ZW50KCksIFVucmVnaXN0ZXJFdmVudCgpLCBUcmlnZ2VyRXZlbnQoKSwgZXZlbnRkCisKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisyOC4xMS4yMDEyLCBaZXNzdHJhCisKZGlmZiAtLWdpdCBhL2RvYy9ldmVudHMvRVZUX0xJQl9EQVRFQ0hBTkdFIGIvZG9jL2V2ZW50cy9FVlRfTElCX0RBVEVDSEFOR0UKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMzYzOGI0OQotLS0gL2Rldi9udWxsCisrKyBiL2RvYy9ldmVudHMvRVZUX0xJQl9EQVRFQ0hBTkdFCkBAIC0wLDAgKzEsMjQgQEAKK0VWRU5UOiAKKyAgIEVWVF9MSUJfREFURUNIQU5HRQorCitERUZJTklFUlQgSU46CisgICAvc3lzL2V2ZW50cy5oCisKK0dFVFJJR0dFUlQgVk9OOgorICAgL29iai91aHIuYworCitCRVNDSFJFSUJVTkc6CisgICBEaWVzZXIgRXZlbnQgdHJpdHQgYXVmLCB3ZW5uIHNpY2ggZGFzIERhdHVtIGFlbmRlcnQuIEFsc28gaW1tZXIgdW0gMDA6MDAuCisKK0VWRU5ULURBVEVOOgorICAgRGllIERhdGVuIHNpbmQgZWluIE1hcHBpbmcgbWl0IGRlbiBBcnJheWluZGl6ZXMgdm9uIGxvY2FsdGltZSgpIGFscyBLZXlzCisgICB1bmQgZGVuIGRhenUgZ2Vob2VyaWdlbiBEYXRlbiBhbHMgVmFsdWVzLgorCitCRU1FUktVTkdFTjoKKworU0lFSEUgQVVDSDoKKyAgIGV2ZW50cywgUmVnaXN0ZXJFdmVudCgpLCBVbnJlZ2lzdGVyRXZlbnQoKSwgVHJpZ2dlckV2ZW50KCksIGV2ZW50ZAorICAgRVZUX0xJQl9DTE9DSworLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKzI4LjExLjIwMTIsIFplc3N0cmEKKwpkaWZmIC0tZ2l0IGEvZG9jL2V2ZW50cy9FVlRfTElCX0xPR0lOIGIvZG9jL2V2ZW50cy9FVlRfTElCX0xPR0lOCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjIyY2JhMzIKLS0tIC9kZXYvbnVsbAorKysgYi9kb2MvZXZlbnRzL0VWVF9MSUJfTE9HSU4KQEAgLTAsMCArMSwzMiBAQAorRVZFTlQ6IAorICAgRVZUX0xJQl9MT0dJTgorCitERUZJTklFUlQgSU46CisgICAvc3lzL2V2ZW50cy5oCisKK0dFVFJJR0dFUlQgVk9OOgorICAgL3N0ZC9wbGF5ZXIvYmFzZS5jCisKK0JFU0NIUkVJQlVORzoKKyAgIEVpbiBTcGllbGVyIGhhdCBzaWNoIGdlcmFkZSBlaW5nZWxvZ2d0LgorICAgQml0dGUgYmVhY2h0ZW46IE9iamVrdCBpbSBJbnZlbnRhciB1bmQgaW0gRW52aXJvbm1lbnQgZWluZXMgU3BpZWxlciBzb2xsdGVuCisgICB3ZWl0ZXJoaW4gQmVjb21lc05ldEFsaXZlKCkgYmVudXR6ZW4hIERpZXNlciBFdmVudCBpc3QgbnVyIGZ1ZXIgT2JqZWt0ZQorICAgZ2VkYWNodCwgZGllIGRhcyBFaW5sb2dnZW4gbWl0a3JpZWdlbiB3b2xsZW4sIGFiZXIgbmljaHQgaW4gZGVyIE5hZWhlIGRlcworICAgU3BpZWxlciBzaW5kLgorCitFVkVOVC1EQVRFTjoKKyAgIERpZSBEYXRlbiB3ZXJkZW4gYWxzIE1hcHBpbmcgdWViZXJnZWJlbjoKKyAgIChbIEVfT0JKRUNUOiAgICAgIChvYmplY3QpIE9iamVrdCBkZXMgZWluZ2Vsb2dndGVuIFNwaWVsZXJzLAorICAgICAgRV9QTE5BTUU6ICAgICAgKHN0cmluZykgVUlEL05hbWUgZGVzIGVpbmdlbG9nZ3RlbiBTcGllbGVycywKKyAgICAgIEVfRU5WSVJPTk1FTlQ6IChvYmplY3QpIEVudmlyb25tZW50IG5hY2ggZGVtIEVpbmxvZ2dlbiwKKyAgICBdKQorCitCRU1FUktVTkdFTjoKKworU0lFSEUgQVVDSDoKKyAgIGV2ZW50cywgUmVnaXN0ZXJFdmVudCgpLCBVbnJlZ2lzdGVyRXZlbnQoKSwgVHJpZ2dlckV2ZW50KCksIGV2ZW50ZAorICAgRVZUX0xJQl9MT0dPVVQKKworLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKzE2LjA4LjIwMDcsIFplc3N0cmEKKwpkaWZmIC0tZ2l0IGEvZG9jL2V2ZW50cy9FVlRfTElCX0xPR09VVCBiL2RvYy9ldmVudHMvRVZUX0xJQl9MT0dPVVQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYjNiM2FmYQotLS0gL2Rldi9udWxsCisrKyBiL2RvYy9ldmVudHMvRVZUX0xJQl9MT0dPVVQKQEAgLTAsMCArMSwzMiBAQAorRVZFTlQ6IAorICAgRVZUX0xJQl9MT0dPVVQKKworREVGSU5JRVJUIElOOgorICAgL3N5cy9ldmVudHMuaAorCitHRVRSSUdHRVJUIFZPTjoKKyAgIC9zdGQvcGxheWVyL2Jhc2UuYworCitCRVNDSFJFSUJVTkc6CisgICBFaW4gU3BpZWxlciBoYXQgc2ljaCBnZXJhZGUgYXVzZ2Vsb2dndC4KKyAgIEJpdHRlIGJlYWNodGVuOiBPYmpla3QgaW0gSW52ZW50YXIgdW5kIGltIEVudmlyb25tZW50IGVpbmVzIFNwaWVsZXIgc29sbHRlbgorICAgd2VpdGVyaGluIEJlY29tZXNOZXREZWFkKCkgYmVudXR6ZW4hIERpZXNlciBFdmVudCBpc3QgbnVyIGZ1ZXIgT2JqZWt0ZQorICAgZ2VkYWNodCwgZGllIGRhcyBBdXNsb2dnZW4gbWl0a3JpZWdlbiB3b2xsZW4sIGFiZXIgbmljaHQgaW4gZGVyIE5hZWhlIGRlcworICAgU3BpZWxlciBzaW5kLgorCitFVkVOVC1EQVRFTjoKKyAgIERpZSBEYXRlbiB3ZXJkZW4gYWxzIE1hcHBpbmcgdWViZXJnZWJlbjoKKyAgIChbIEVfT0JKRUNUOiAgICAgIChvYmplY3QpIE9iamVrdCBkZXMgYXVzZ2Vsb2dndGVuIFNwaWVsZXJzLAorICAgICAgRV9QTE5BTUU6ICAgICAgKHN0cmluZykgVUlEL05hbWUgZGVzIGF1c2dlbG9nZ3RlbiBTcGllbGVycywKKyAgICAgIEVfRU5WSVJPTk1FTlQ6IChvYmplY3QpIGxldHp0ZXMgRW52aXJvbm1lbnQgdm9yIGRlbSBBdXNsb2dnZW4sCisgICAgXSkKKworQkVNRVJLVU5HRU46CisKK1NJRUhFIEFVQ0g6CisgICBldmVudHMsIFJlZ2lzdGVyRXZlbnQoKSwgVW5yZWdpc3RlckV2ZW50KCksIFRyaWdnZXJFdmVudCgpLCBldmVudGQKKyAgIEVWVF9MSUJfTE9HSU4KKworLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKzE2LjA4LjIwMDcsIFplc3N0cmEKKwpkaWZmIC0tZ2l0IGEvZG9jL2V2ZW50cy9FVlRfTElCX01JTklRVUVTVF9TT0xWRUQgYi9kb2MvZXZlbnRzL0VWVF9MSUJfTUlOSVFVRVNUX1NPTFZFRApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi45MzJmMDJkCi0tLSAvZGV2L251bGwKKysrIGIvZG9jL2V2ZW50cy9FVlRfTElCX01JTklRVUVTVF9TT0xWRUQKQEAgLTAsMCArMSwyOSBAQAorRVZFTlQ6IAorICAgRVZUX0xJQl9NSU5JUVVFU1RfU09MVkVECisKK0RFRklOSUVSVCBJTjoKKyAgIC9zeXMvZXZlbnRzLmgKKworR0VUUklHR0VSVCBWT046CisgICAvc2VjdXJlL3F1ZXN0bWFzdGVyLmMKKworQkVTQ0hSRUlCVU5HOgorICAgRGllc2VyIEV2ZW50IHdpcmQgdm9tIFF1ZXN0bWFzdGVyIGF1c2dlbG9lc3QsIHdlbm4gZWluIFNwaWVsZXIgZWluZQorICAgTWluaXF1ZXN0IGdlbG9lc3QgaGF0LgorCitFVkVOVC1EQVRFTjoKKyAgIERpZSBEYXRlbiB3ZXJkZW4gYWxzIE1hcHBpbmcgdWViZXJnZWJlbjoKKyAgIChbIEVfT0JKRUNUOiAgICAgICAgKG9iamVjdCkgUXVlc3RnZWJlci1PYmpla3QsCisgICAgICBFX09CTkFNRTogICAgICAgIChzdHJpbmcpIE9iamVrdG5hbWUgZGVzIFF1ZXN0Z2ViZXJzCisgICAgICBFX1BMTkFNRTogICAgICAgIChzdHJpbmcpIFNwaWVsZXJuYW1lLAorICAgICAgRV9NSU5JUVVFU1ROQU1FOiAoc3RyaW5nKSBUaXRlbCBkZXIgTWluaXF1ZXN0CisgICAgXSkKKworQkVNRVJLVU5HRU46CisKK1NJRUhFIEFVQ0g6CisgICBldmVudHMsIFJlZ2lzdGVyRXZlbnQoKSwgVW5yZWdpc3RlckV2ZW50KCksIFRyaWdnZXJFdmVudCgpLCBldmVudGQKKworLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKzIwMTQtRmViLTAzLCBBcmF0aG9ybgorCmRpZmYgLS1naXQgYS9kb2MvZXZlbnRzL0VWVF9MSUJfTkVXX0VSUk9SIGIvZG9jL2V2ZW50cy9FVlRfTElCX05FV19FUlJPUgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi45YzA0NjQ4Ci0tLSAvZGV2L251bGwKKysrIGIvZG9jL2V2ZW50cy9FVlRfTElCX05FV19FUlJPUgpAQCAtMCwwICsxLDMxIEBACitFVkVOVDogCisgICBFVlRfTElCX05FV19FUlJPUgorCitERUZJTklFUlQgSU46CisgICAvc3lzL2V2ZW50cy5oCisgICAvc2VjdXJlL2Vycm9yZC5oIChLb25zdGFudGVuIGZ1ZXIgRXZlbnRkYXRlbiBzaW5kIGRvcnQgZGVmaW5pZXJ0KQorCitHRVRSSUdHRVJUIFZPTjoKKyAgIC9zZWN1cmUvZXJyb3JkLmMKKworQkVTQ0hSRUlCVU5HOgorICAgRWluIG5ldWVyIEZlaGxlcmVpbnRyYWcgd3VyZGUgaW0gRXJyb3JEIGVpbmdldHJhZ2VuLiBIaWVyYmVpIG11c3MgZXMga2VpbgorICAgZWNodGVyIEZlaGxlciBzZWluLCBzb25kZXJuIGthbm4gYXVjaCBlaW5lIFdhcm51bmcgb2RlciBlaW5lIElkZWUgZWluZXMKKyAgIFNwaWVsZXJzIHNlaW4gKGFsbGUgRmVobGVydHlwZW4gVF8qIGF1cyAvc2VjdXJlL2Vycm9yZC5oIHNpbmQgbW9lZ2xpY2gpLgorCitFVkVOVC1EQVRFTjoKKyAgIERpZSBEYXRlbiB3ZXJkZW4gYWxzIE1hcHBpbmcgdWViZXJnZWJlbjoKKyAgIChbIEZfVFlQRTogICAgIChpbnQpIFR5cCBkZXMgRmVobGVyZWludHJhZ3MKKyAgICAgIEZfSEFTSEtFWTogIChzdHJpbmcpIElEIGRlcyBGZWhsZXJlaW50cmFnZXMKKyAgICAgIEZfVUlEOiAgICAgIChzdHJpbmcpIFVJRCBkZXMgT2JqZWt0ZXMsIGluIHdlbGNoZW4gZGVyIEZlaGxlciBhdWZ0cmF0CisgICAgXSkKKworQkVNRVJLVU5HRU46CisKK1NJRUhFIEFVQ0g6CisgICBldmVudHMsIFJlZ2lzdGVyRXZlbnQoKSwgVW5yZWdpc3RlckV2ZW50KCksIFRyaWdnZXJFdmVudCgpLCBldmVudGQsCisgICBmZWhsZXJ0ZXVmZWwKKworLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKzA3LjA5LjIwMTEsIFplc3N0cmEKKwpkaWZmIC0tZ2l0IGEvZG9jL2V2ZW50cy9FVlRfTElCX05QQ19ERUFUSCBiL2RvYy9ldmVudHMvRVZUX0xJQl9OUENfREVBVEgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNmIxZmIwMAotLS0gL2Rldi9udWxsCisrKyBiL2RvYy9ldmVudHMvRVZUX0xJQl9OUENfREVBVEgKQEAgLTAsMCArMSw2OSBAQAorRVZFTlQ6IAorICAgRVZUX0xJQl9OUENfREVBVEgoeCkKKworREVGSU5JRVJUIElOOgorICAgL3N5cy9ldmVudHMuaAorCitHRVRSSUdHRVJUIFZPTjoKKyAgIC9zdGQvbGl2aW5nL2xpZmUuYworCitCRVNDSFJFSUJVTkc6CisgICBEaWVzZXIgRXZlbnQgd2lyZCBpbW1lciBkYW5uIHZvbiBlaW5lbSBOUEMgYXVzZ2Vsb2VzdCwgd2VubiBkaWVzZXIgZ2VyYWRlCisgICBnZXRvZXRldCB3dXJkZSAodW0gZ2VuYXUgenUgc2VpbjogaW0gZGllKCkpLgorICAgRGllc2VyIEV2ZW50IG1hY2h0IHZlcm11dGxpY2ggZGllIG1laXN0ZW4gRGllLUhvb2tzIGVpbmZhY2ggdW5ub2V0aWcsIGRhIGVzCisgICBiZWkgdmllbGVuIG51ciBkYXJ1bSBnZWh0LCB6dSBlcmZhaHJlbiwgb2IgZGVyIE5QQyB0b3QgaXN0LCB3ZXIgaWhuCisgICBnZXRvZXRldCBoYXQgdW5kIG9iIGRlcmplbmlnZSBnZW51ZyBTY2hhZGVuIGdlbWFjaHQgaGF0LiBEaWVzIGxhZXNzdCBzaWNoCisgICBhdXMgZGVuIERhdGVuIGRpZXNlcyBFdmVudCBlYmVuZmFsbHMgZXJtaXR0ZWxuLCBvaG5lIGRlbiBBdWZ3YW5kIGVpbmVzCisgICBIb29rcyB6dSBiZXRyZWliZW4uCisKKyAgIEJpdHRlIGJlYWNodGV0LCBkYXNzIGluIGRpZXNlbSBGYWxsIGRhcyBlYmVuZmFsbHMgZ2VsaWVmZXJ0ZSB0cmlnZ2VybmRlCisgICBPYmpla3QgKGRlciBOUEMpIGJlcmVpdHMgemVyc3RvZXJ0IGlzdCwgd2VubiBpaHIgZGVuIEV2ZW50IGVtcGZhbmd0LAorICAgJ3RyaWdvYicgYWxzbyAwIGlzdCEgSWhyIG11ZXNzdCBhbHNvIGRlbiBFaW50cmFnIEVfT0JOQU1FIGltIERhdGVubWFwcGluZyAKKyAgIGRlcyBFdmVudHMgbnV0emVuLCB1bSBoZXJhdXN6dWZpbmRlbiwgd2VsY2hlciBOUEMgZ2V0b2V0ZXQgd3VyZGUuCisKK1BBUkFNRVRFUjoKKyAgIERlciBhbiBkYXMgRXZlbnQtRGVmaW5lIHp1IHVlYmVyZ2ViZW5kZSBQYXJhbWV0ZXIgIngiIG11c3MgZWluIFN0cmluZyAKKyAgIHNlaW4uCisgICBVZWJlcmdpYnQgbWFuIGRlbiBMZWVyc3RyaW5nICIiLCByZWdpc3RyaWVydCBtYW4gc2ljaCBmdWVyIGRhcyBnbG9iYWxlCisgICBFdmVudCBFVlRfTElCX05QQ19ERUFUSCgiIiksIHVlYmVyIGRhcyBkZXIgVG9kIHNhZW10bGljaGVyIE5QQ3MgCisgICB3ZWl0ZXJnZW1lbGRldCB3aXJkLgorICAgVWViZXJnaWJ0IG1hbiBkZW4gbG9hZF9uYW1lKCkgZGVzIFppZWxvYmpla3RzIGFscyBQYXJhbWV0ZXIsIHNvIHdlcmRlbgorICAgbnVyIGRpZSBUb2RlIHZvbiBOUENzIGdlbWVsZGV0LCBkaWUgc2ljaCB2b24gZGVyIEJsdWVwcmludCBkZXMKKyAgIFppZWxvYmpla3RzIGFibGVpdGVuLCBhbHNvIGF1Y2ggYWxsZXIgQ2xvbmVzLgorCitFVkVOVC1EQVRFTjoKKyAgIERpZSBEYXRlbiB3ZXJkZW4gYWxzIE1hcHBpbmcgdWViZXJnZWJlbjoKKyAgIChbIEVfT0JOQU1FOiAgICAgICAgKHN0cmluZykgICBPYmpla3RuYW1lIGRlcyBnZXRvZXRldGVuIE5QQ3MsCisgICAgICBFX0VOVklST05NRU5UOiAgIChvYmplY3QpICAgRW52aXJvbm1lbnQgZGVzIE9wZmVyIGJlaW0gVG9kLAorICAgICAgRV9USU1FOiAgICAgICAgICAoaW50KSAgICAgIFplaXRzdGVtcGVsIGRlcyBUb2RlcywKKyAgICAgIFBfTkFNRTogICAgICAgICAgKHN0cmluZyxzdHJpbmcqKSAgUF9OQU1FLAorICAgICAgUF9LSUxMRVI6ICAgICAgICAob2JqZWN0KSAgIGRlciBLaWxsZXIsIHMuIFByb3BlcnR5LAorICAgICAgUF9FTkVNWV9EQU1BR0U6ICAobWFwcGluZykgIHMuIE1hbnBhZ2UgUF9FTkVNWV9EQU1BR0UsCisgICAgICBQX0xBU1RfREFNQUdFOiAgIChpbnQpICAgICAgcy4gUHJvcGVydHksCisgICAgICBQX0xBU1RfREFNVFlQRVM6IChzdHJpbmcgKikgcy4gUHJvcGVydHksCisgICAgICBFX0VYVEVSTkFMX0RFQVRIOihpbnQpICAgICAgRmxhZywgb2IgZGllKCkgdm9uIGF1c3NlbiBnZXJ1ZmVuLAorICAgICAgRV9QT0lTT05fREVBVEg6ICAoaW50KSAgICAgIEZsYWcsIG9iIGRlciBUb2QgZHVyY2ggR2lmdCBhdXNnZWxvZXN0LAorICAgICAgRV9DT1JQU0U6ICAgICAgICAob2JqZWN0KSAgIExlaWNoZSwgc29mZXJuIGVzIGVpbmUgZ2lidAorICAgICAgUF9YUDogICAgICAgICAgICAoaW50KSAgICAgIFBfWFAsCisgICAgICBQX0FUVFJJQlVURVM6ICAgIChpbnQqKSAgICAgUF9BVFRSSUJVVEVTLAorICAgICAgUF9NQVhfSFA6ICAgICAgICAoaW50KSAgICAgIFBfTUFYX0hQLAorICAgICAgUF9IQU5EUzogICAgICAgICAobWl4ZWQpICAgIFBfSEFORFMsCisgICAgICBQX0FMSUdOOiAgICAgICAgIChpbnQpICAgICAgUF9BTElHTikKKyAgICAgIFBfUkFDRTogICAgICAgICAgKHN0cmluZykgICBQX1JBQ0UsCisgICAgICBQX0NMQVNTOiAgICAgICAgIChzdHJpbmcqKSAgUF9DTEFTUywKKyAgICBdKQorCitCRU1FUktVTkdFTjoKKyAgIEJlaSBkZXIgUmVnaXN0cmllcnVuZyBmdWVyIGRpZSBUb2Rlcy1FdmVudHMgdm9uIGVpbnplbG5lbiBOUENzIGthbm4gZXMgCisgICBpbSBGYWxsIHZvbiBWQy1nZW5lcmllcnRlbiBOUENzIHp1IHVuZXJ3YXJ0ZXRlbiBFZmZla3RlbiBrb21tZW4sIGRhIGhpZXIKKyAgIGxvYWRfbmFtZSgpIGZ1ZXIgamVkZXMgT2JqZWt0IGRlbiBOYW1lbiBkZXMgVkMtU3RhbmRhcmRvYmpla3RzIAorICAgenVydWVja2xpZWZlcnQuCisgICBEaWUgUmVnaXN0cmllcnVuZyBmdWVyIGRhcyBUb2Rlcy1FdmVudCBlaW5lcyBlaW56ZWxuZW4gQ2xvbmVzIGlzdCBuaWNodAorICAgbW9lZ2xpY2guCisKK1NJRUhFIEFVQ0g6CisgICBldmVudHMsIFJlZ2lzdGVyRXZlbnQoKSwgVW5yZWdpc3RlckV2ZW50KCksIFRyaWdnZXJFdmVudCgpLCBldmVudGQKKworLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKzIxLjA4LjIwMDcsIFplc3N0cmEKKwpkaWZmIC0tZ2l0IGEvZG9jL2V2ZW50cy9FVlRfTElCX1BMQVlFUl9BVFRSX0NIQU5HRSBiL2RvYy9ldmVudHMvRVZUX0xJQl9QTEFZRVJfQVRUUl9DSEFOR0UKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOGFkMmZkNAotLS0gL2Rldi9udWxsCisrKyBiL2RvYy9ldmVudHMvRVZUX0xJQl9QTEFZRVJfQVRUUl9DSEFOR0UKQEAgLTAsMCArMSwyNCBAQAorRVZFTlQ6IAorICAgRVZUX0xJQl9QTEFZRVJfQVRUUl9DSEFOR0UKKworREVGSU5JRVJUIElOOgorICAgL3N5cy9ldmVudHMuaAorCitHRVRSSUdHRVJUIFZPTjoKKyAgIC9zdGQvbGl2aW5nL2xpZmUuYworCitCRVNDSFJFSUJVTkc6CisKK0VWRU5ULURBVEVOOgorICAgRGllIERhdGVuIHdlcmRlbiBhbHMgTWFwcGluZyB1ZWJlcmdlYmVuOgorICAgKFsgCisgICAgXSkKKworQkVNRVJLVU5HRU46CisKK1NJRUhFIEFVQ0g6CisgICBldmVudHMsIFJlZ2lzdGVyRXZlbnQoKSwgVW5yZWdpc3RlckV2ZW50KCksIFRyaWdnZXJFdmVudCgpLCBldmVudGQKKworLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKzE2LjA4LjIwMDcsIFplc3N0cmEKKwpkaWZmIC0tZ2l0IGEvZG9jL2V2ZW50cy9FVlRfTElCX1BMQVlFUl9DUkVBVElPTiBiL2RvYy9ldmVudHMvRVZUX0xJQl9QTEFZRVJfQ1JFQVRJT04KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYWJmZjgyNQotLS0gL2Rldi9udWxsCisrKyBiL2RvYy9ldmVudHMvRVZUX0xJQl9QTEFZRVJfQ1JFQVRJT04KQEAgLTAsMCArMSwzMSBAQAorRVZFTlQ6IAorICAgRVZUX0xJQl9QTEFZRVJfQ1JFQVRJT04KKworREVGSU5JRVJUIElOOgorICAgL3N5cy9ldmVudHMuaAorCitHRVRSSUdHRVJUIFZPTjoKKyAgIC9zdGQvcGxheWVyL2Jhc2UuYworCitCRVNDSFJFSUJVTkc6CisgICBEaWVzZXIgRXZlbnQgd2lyZCB2b20gU3BpZWxlcm9iamVrdCBhdXNnZWxvZXN0LCB3ZW5uIHNpY2ggZWluIFNwaWVsZXIKKyAgIGVyc3RtYWxpZyBpbnMgTW9yZ2VuR3JhdWVuIGVpbmdlbG9nZ3QgaGF0LgorCitFVkVOVC1EQVRFTjoKKyAgIERpZSBEYXRlbiB3ZXJkZW4gYWxzIE1hcHBpbmcgdWViZXJnZWJlbjoKKyAgIChbIEVfUExOQU1FOiAgICAgICAoc3RyaW5nKSBVSUQvTmFtZSBkZXMgZXJzdGVsbHRlbiBTcGllbGVycywKKyAgICAgIEVfT0JKRUNUOiAgICAgICAob2JqZWN0KSBPYmpla3QgZGVzIFNwaWVsZXJzLAorICAgIF0pCisKK0JFTUVSS1VOR0VOOgorICAgRGEgenUgZGllc2VtIFplaXRwdW5rdCBkYXMgU3BpZWxlcm9iamVrdCBub2NoIG5pY2h0IHZvbGxzdGFlbmRpZworICAga29uZmlndXJpZXJ0IGlzdCwgd2VyZGVuIG51ciBPYmpla3QgdW5kIFNwaWVsZXJuYW1lIGluIGRlbiBEYXRlbiAKKyAgIHVlYmVybWl0dGVsdC4KKworU0lFSEUgQVVDSDoKKyAgIGV2ZW50cywgUmVnaXN0ZXJFdmVudCgpLCBVbnJlZ2lzdGVyRXZlbnQoKSwgVHJpZ2dlckV2ZW50KCksIGV2ZW50ZAorICAgRVZUX0xJQl9QTEFZRVJfREVMRVRJT04KKworLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKzE2LjA4LjIwMDcsIFplc3N0cmEKKwpkaWZmIC0tZ2l0IGEvZG9jL2V2ZW50cy9FVlRfTElCX1BMQVlFUl9ERUFUSCBiL2RvYy9ldmVudHMvRVZUX0xJQl9QTEFZRVJfREVBVEgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNDVlNTU5OAotLS0gL2Rldi9udWxsCisrKyBiL2RvYy9ldmVudHMvRVZUX0xJQl9QTEFZRVJfREVBVEgKQEAgLTAsMCArMSwzNiBAQAorRVZFTlQ6IAorICAgRVZUX0xJQl9QTEFZRVJfREVBVEgKKworREVGSU5JRVJUIElOOgorICAgL3N5cy9ldmVudHMuaAorCitHRVRSSUdHRVJUIFZPTjoKKyAgIC9zdGQvbGl2aW5nL2xpZmUuYworCitCRVNDSFJFSUJVTkc6CisgICBEaWVzZXIgRXZlbnQgd2lyZCBpbW1lciBkYW5uIHZvbiBlaW5lbSBTcGllbGVyb2JqZWt0IGF1c2dlbG9lc3QsIHdlbm4gCisgICBkZXIgU3BpZWxlciAgZ2VyYWRlIGdldG9ldGV0IHd1cmRlICh1bSBnZW5hdSB6dSBzZWluOiBpbSBkaWUoKSkuCisKK0VWRU5ULURBVEVOOgorICAgRGllIERhdGVuIHdlcmRlbiBhbHMgTWFwcGluZyB1ZWJlcmdlYmVuOgorICAgKFsgRV9PQkpFQ1Q6ICAgICAgICAob2JqZWN0KSBPYmpla3QgZGVzIGdldG9ldGV0ZW4gU3BpZWxlcnMsCisgICAgICBFX1BMTkFNRTogICAgICAgIChzdHJpbmcpIFVJRC9QbGF5ZXJuYW1lIGRlcyBnZXRvZXRldGVuIFNwaWVsZXJzLCAKKyAgICAgIEVfRU5WSVJPTk1FTlQ6ICAgKG9iamVjdCkgRW52aXJvbm1lbnQgZGVzIE9wZmVyIGJlaW0gVG9kLAorICAgICAgRV9USU1FOiAgICAgICAgICAoaW50KSBaZWl0c3RlbXBlbCBkZXMgVG9kZXMsCisgICAgICBQX0xBU1RfS0lMTEVSOiAgIChvYmplY3QpIERlciBLaWxsZXIsIHMuIFByb3BlcnR5CisgICAgICBQX0xBU1RfREFNQUdFOiAgIChpbnQpIHMuIFByb3BlcnR5LAorICAgICAgUF9MQVNUX0RBTVRZUEVTOiAoc3RyaW5nICopIHMuIFByb3BlcnR5LAorICAgICAgUF9MQVNUX0RFQVRIX1BST1BTOiAobWl4ZWQpIHMuIFByb3BlcnR5CisgICAgICBFX0VYVEVSTkFMX0RFQVRIOihpbnQpIEZsYWcsIG9iIGRpZSgpIHZvbiBhdXNzZW4gZ2VydWZlbiwKKyAgICAgIEVfUE9JU09OX0RFQVRIOiAgKGludCkgRmxhZywgb2IgZGVyIFRvZCBkdXJjaCBHaWZ0IGF1c2dlbG9lc3QsCisgICAgICBFX0NPUlBTRTogICAgICAgIChvYmplY3QpIExlaWNoZSwgc29mZXJuIGVzIGVpbmUgZ2lidAorICAgIF0pCisKK0JFTUVSS1VOR0VOOgorCitTSUVIRSBBVUNIOgorICAgZXZlbnRzLCBSZWdpc3RlckV2ZW50KCksIFVucmVnaXN0ZXJFdmVudCgpLCBUcmlnZ2VyRXZlbnQoKSwgZXZlbnRkCisKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisyMS4wOC4yMDA3LCBaZXNzdHJhCisKZGlmZiAtLWdpdCBhL2RvYy9ldmVudHMvRVZUX0xJQl9QTEFZRVJfREVMRVRJT04gYi9kb2MvZXZlbnRzL0VWVF9MSUJfUExBWUVSX0RFTEVUSU9OCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjdkNjM4NTYKLS0tIC9kZXYvbnVsbAorKysgYi9kb2MvZXZlbnRzL0VWVF9MSUJfUExBWUVSX0RFTEVUSU9OCkBAIC0wLDAgKzEsMzIgQEAKK0VWRU5UOiAKKyAgIEVWVF9MSUJfUExBWUVSX0RFTEVUSU9OCisKK0RFRklOSUVSVCBJTjoKKyAgIC9zeXMvZXZlbnRzLmgKKworR0VUUklHR0VSVCBWT046CisgICAvc3RkL3BsYXllci9iYXNlLmMKKworQkVTQ0hSRUlCVU5HOgorICAgRGllc2VyIEV2ZW50IHdpcmQgdm9tIFNwaWVsZXJvYmpla3QgYXVzZ2Vsb2VzdCwgd2VubiBzaWNoIGVpbiBTcGllbGVyCisgICBtaXR0ZWxzICJzZWxic3Rsb2VzY2h1bmciIGxvZXNjaHQuIERlciBFdmVudCB3aXJkIHVtaXR0ZWxiYXIgdm9yIGRlcgorICAgWmVyc3RvZXJ1bmcgZGVzIFNwaWVsZXJvYmpla3RzIGF1c2dlbG9lc3QuCisKK0VWRU5ULURBVEVOOgorICAgRGllIERhdGVuIHdlcmRlbiBhbHMgTWFwcGluZyB1ZWJlcmdlYmVuOgorICAgKFsgRV9QTE5BTUU6ICAgICAgIChzdHJpbmcpIFVJRC9OYW1lIGRlcyBnZWxvZXNjaHRlbiBTcGllbGVycywKKyAgICAgIEVfRU5WSVJPTk1FTlQ6ICAob2JqZWN0KSBsZXR6dGVzIEVudmlyb25tZW50IGRlcyBTcGllbGVycywKKyAgICAgIEVfR1VJTEROQU1FOiAgICAoc3RyaW5nKSBOYW1lIGRlciBsZXR6dGVuIEdpbGRlIGRlcyBTcGllbGVycywsCisgICAgXSkKKworQkVNRVJLVU5HRU46CisgICBXZW5uIFNwaWVsZXIgdm9tIExvZXNjaHNjcmlwdCBlcmZhc3N0IG9kZXIgdm9tIFNoZXJpZmYgb2RlciBlaW5lbSBFTQorICAgZ2Vsb2VzY2h0IHdlcmRlbiwgd2lyZCBkaWVzZXIgRXZlbnQgbmF0dWVybGljaCBuaWNodCBhdXNnZWxvZXN0LgorCitTSUVIRSBBVUNIOgorICAgZXZlbnRzLCBSZWdpc3RlckV2ZW50KCksIFVucmVnaXN0ZXJFdmVudCgpLCBUcmlnZ2VyRXZlbnQoKSwgZXZlbnRkCisgICBFVlRfTElCX1BMQVlFUl9DUkVBVElPTgorCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorMTYuMDguMjAwNywgWmVzc3RyYQorCmRpZmYgLS1naXQgYS9kb2MvZXZlbnRzL0VWVF9MSUJfUVVFU1RfU09MVkVEIGIvZG9jL2V2ZW50cy9FVlRfTElCX1FVRVNUX1NPTFZFRApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi42YWJiZmM5Ci0tLSAvZGV2L251bGwKKysrIGIvZG9jL2V2ZW50cy9FVlRfTElCX1FVRVNUX1NPTFZFRApAQCAtMCwwICsxLDMwIEBACitFVkVOVDogCisgICBFVlRfTElCX1FVRVNUX1NPTFZFRAorCitERUZJTklFUlQgSU46CisgICAvc3lzL2V2ZW50cy5oCisKK0dFVFJJR0dFUlQgVk9OOgorICAgL3N0ZC9wbGF5ZXIvcXVlc3RzLmMKKworQkVTQ0hSRUlCVU5HOgorICAgRGllc2VyIEV2ZW50IHdpcmQgdm9tIFNwaWVsZXJvYmpla3QgYXVzZ2Vsb2VzdCwgd2VubiBkZXIgU3BpZWxlciBlaW5lIFF1ZXN0CisgICBnZWxvZXN0IGhhdC4KKworRVZFTlQtREFURU46CisgICBEaWUgRGF0ZW4gd2VyZGVuIGFscyBNYXBwaW5nIHVlYmVyZ2ViZW46CisgICAoWyBFX09CSkVDVDogICAgICAgICAob2JqZWN0KSBTcGllbGVyb2JqZWt0LAorICAgICAgRV9QTE5BTUU6ICAgICAgICAgKHN0cmluZykgU3BpZWxlcm5hbWUsCisgICAgICBFX0VOVklST05NRU5UOiAgICAob2JqZWN0KSBFbnZpcm9ubWVudCBkZXMgU3BpZWxlcnMsCisgICAgICBFX1FVRVNUTkFNRTogICAgICAoc3RyaW5nKSBOYW1lIGRlciBRdWVzdCwKKyAgICAgIEVfUVBfR1JBTlRFRDogICAgIChpbnQpICAgIHZlcmdlYmVuZSBBYmVudGV1ZXJwdW5rdGUsCisgICAgXSkKKworQkVNRVJLVU5HRU46CisKK1NJRUhFIEFVQ0g6CisgICBldmVudHMsIFJlZ2lzdGVyRXZlbnQoKSwgVW5yZWdpc3RlckV2ZW50KCksIFRyaWdnZXJFdmVudCgpLCBldmVudGQKKworLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKzIwMTQtRmViLTAzLCBBcmF0aG9ybgorCmRpZmYgLS1naXQgYS9kb2MvZXZlbnRzL2V2ZW50ZCBiL2RvYy9ldmVudHMvZXZlbnRkCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjc5MGUzNWYKLS0tIC9kZXYvbnVsbAorKysgYi9kb2MvZXZlbnRzL2V2ZW50ZApAQCAtMCwwICsxLDI5IEBACitFdmVudC1EaXNwYXRjaGVyOiAvcC9kYWVtb24vZXZlbnRkLmMKKworQkVOVVRaVU5HOgorICAgI2luY2x1ZGUgPGV2ZW50cy5oPgorICAgRVZFTlRELT5mdW4oYmxhKTsKKworQkVTQ0hSRUlCVU5HOgorICAgRGVyIEV2ZW50LURpc3BhdGNoZXIgbWVya3Qgc2ljaCBFdmVudCB1bmQgRGF0ZW4sIGRpZSBpaHIgdWViZXIKKyAgIFRyaWdnZXJFdmVudCgpIGFuIGlobiBtZWxkZXQgdW5kIGluZm9ybWllcnQgbWl0IGt1cnplciBaZWl0dmVyem9lZ2VydW5nCisgICBhbGxlIGZ1ZXIgZGVuIGpld2VpbGlnZW4gRXZlbnQtVHlwIGFuZ2VtZWxkZXRlbiBPYmpla3RlLgorCitGVU5LVElPTkVOOgorICAgLSBSZWdpc3RlckV2ZW50KCk6IGFubWVsZGVuIGZ1ZXIgZWluZW4gRXZlbnQKKyAgIC0gVW5yZWdpc3RlckV2ZW50KCk6IHZvbiBlaW5lbSBFdmVudCBhYm1lbGRlbgorICAgLSBUcmlnZ2VyRXZlbnQoKTogZWluZW4gRXZlbnQgbWVsZGVuCisgICAtIENoZWNrRXZlbnRJRCgpOiB3aWV2aWVsZSBMYXVzY2hlciBnaWJ0IGVzIGZ1ZXIgZGVuIEV2ZW50PworCitCRU1FUktVTkdFTjoKKyAgIFdlbm4gQmVkYXJmIGZ1ZXIgZWluZW4gc3BlemlhbGlzaWVydGVuIEV2ZW50LURpc3BhdGNoZXIgYmVzdGVodCwgZGVyCisgICBTb25kZXJmdW5rdGlvbmVuIGhhdCBvZGVyIGF1Y2ggbmljaHQtb2VmZmVudGxpY2hlIEV2ZW50cyBhbmJpZXRldCwgYmVzdGVodAorICAgZGllIE1vZWdsaWNoa2VpdCwgZGVuIG5vcm1hbGVuIGV2ZW50ZCB6dSBlcmJlbi4gQml0dGUgc3ByZWNodCBpbiBkZW0gRmFsbAorICAgYWJlciBiaXR0ZSB2b3JoZXIgWmVzc3RyYSBhbi4KKworU0lFSEUgQVVDSDoKKyAgIGV2ZW50cywgCisgICBSZWdpc3RlckV2ZW50KCksIFVucmVnaXN0ZXJFdmVudCgpLCBUcmlnZ2VyRXZlbnQoKSwgQ2hlY2tFdmVudElEKCkKKworMTguMDguMjAwNywgWmVzc3RyYQorCmRpZmYgLS1naXQgYS9kb2MvZXZlbnRzL2V2ZW50cyBiL2RvYy9ldmVudHMvZXZlbnRzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmZhMGRmYTgKLS0tIC9kZXYvbnVsbAorKysgYi9kb2MvZXZlbnRzL2V2ZW50cwpAQCAtMCwwICsxLDEyMCBAQAorV2FzIHNpbmQgRXZlbnRzPworPT09PT09PT09PT09PT09PQorRXZlbnRzIGltIE1vcmdlbkdyYXVlbiBzaW5kIEVyZWlnbmlzc2UsIGRpZSB2b24gYmVsaWViaWdlbiBPYmpla3RlbiBhdXNnZWxvZXN0Cit3ZXJkZW4ga29lbm5lbi4gRXMgZ2lidCBlaW5lIFJlaWhlIHZvbiB2b3JkZWZpbmllcnRlbiBFcmVpZ25pc3NlbiwgZGllIGRpZQorQmFzaXMtTGliIGJlcmVpdHN0ZWxsdCAocy51LikuIFp1c2FldHpsaWNoIHp1IGRpZXNlbiBrb2VubmVuIE1hZ2llciBiZWxpZWJpZ2UKK3dlaXRlcmUgRXZlbnRzIGVyc3RlbGxlbiBiencuIGJlbnV0emVuLgorCitXZW5uIGVpbiBPYmpla3QgZGVtIHplbnRyYWxlbiBFdmVudC1EaXNwYXRjaGVyIGVpbmVuIGJlc3RpbW10ZW4gRXZlbnQgbWVsZGV0LAorbWVya3QgZGllc2VyIHNpY2ggZGllcyB1bmQgZGllIERhdGVuLCBkaWUgaWhtIHZvbSBhdXNsb2VzZW5kZW4gT2JqZWt0Cit1ZWJlcmdlYmVuIHd1cmRlLiBNaXQga3VyemVyIFZlcnpvZWdlcnVuZyAoMC0ycykgaW5mb3JtaWVydCBkZXIKK0V2ZW50LURpc3BhdGNoZXIgZGFubiBhbGxlIE9iamVrdGUsIGRpZSBzaWNoIGZ1ZXIgZGllc2VuIEV2ZW50IGludGVyZXNzaWVyZW4sCitkLmguIGRhZnVlciBhbmdlbWVsZGV0IHNpbmQuIEhpZXJ6dSBydWZ0IGVyIGVpbmUgYmVzdGltbXRlIEZ1bmt0aW9uIGluIGRlbgorYW5nZW1lbGRldGVuIE9iamVrdGVuIGF1Zi4KK0hpZXJiZWkgaXN0IHp1IGJlYWNodGVuLCBkYXNzIGRpZSBpbmZvcm1pZXJ0ZW4gT2JqZWt0ZSBkYXMgRXJlaWduaXMgaW4ga2VpbmVtCitGYWxsIG1laHIgYmVlaW5mbHVzc2VuIGtvZW5uZW4sIGRhIGVzIGJlcmVpdHMgYWJnZXNjaGxvc3NlbiB3dXJkZS4gRXMgaXN0CitsZWRpZ2xpY2ggZWluZSBJbmZvcm1hdGlvbiB1ZWJlciBkYXMgRXJlaWduaXMuIFdlbm4gZWluIE9iamVrdCBFaW5mbHVzcyBuZWhtZW4KK3dpbGwgKHouQi4gYXVmIGVpbmVuIFRvZCksIGlzdCBkYWZ1ZXIgZWluIEhvb2sgenUgdmVyd2VuZGVuLgorCisKK1dlbGNoZSBFdmVudHMgZGVmaW5pZXJ0IGRpZSBNdWRsaWI/Cis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CitEaWVzZSBFdmVudHMgaGFiZW4gaW4gL3N5cy9ldmVudHMuaCB2b3JkZWZpbmllcnRlIEV2ZW50LUlEcyB1bmQgd2VyZGVuIHZvbiBkZXIKK0Jhc2lzLU11ZGxpYiBtaXQgZGVuIGVudHNwcmVjaGVuZGVuIERhdGVuIGF1c2dlbG9lc3QgKHMuIGpldy4gRXZlbnQpOgorLSBFVlRfTElCX0xPR0lOOiBMb2dpbiBlaW5lcyBTcGllbGVycworLSBFVlRfTElCX0xPR09VVDogTG9nb3V0IGVpbmVzIFNwaWVsZXJzCistIEVWVF9MSUJfUExBWUVSX0RFQVRIOiBFaW4gU3BpZWxlciBpc3QgZ2VzdG9yYmVuCistIEVWVF9MSUJfUExBWUVSX0RFTEVUSU9OOiBFaW4gU3BpZWxlciBoYXQgc2ljaCBnZWxvZXNjaHQKKy0gRVZUX0xJQl9QTEFZRVJfQ1JFQVRJT046IEVpbiBTcGllbGVyIHd1cmRlIG5ldSBhbmdlbGVndC4KKy0gRVZUX0xJQl9OUENfREVBVEgoKTogRWluIE5QQyBpc3QgZ2VzdG9yYmVuIChQYXJhbWV0ZXIgcy4gRXZlbnQtTWFucGFnZSkKKy0gRVZUX0xJQl9BRFZBTkNFOiBFaW4gU3BpZWxlciBoYXQgc2VpbmUgU3BpZWxlcnN0dWZlIGVyaG9laHQKKy0gRVZUX0xJQl9QTEFZRVJfQVRUUl9DSEFOR0U6IERpZSBBdHRyaWJ1dGUgZWluZXMgU3BpZWxlcnMgd3VyZGVuIGdlYWVuZGVydAorLSBFVlRfTElCX0NMT0NLOiBEaWUgdm9sbGUgU3R1bmRlIGlzdCBlcnJlaWNodAorLSBFVlRfTElCX0RBVEVDSEFOR0U6IEVpbiBuZXVlciBUYWcgaXN0IGFuZ2Vicm9jaGVuLiA7LSkKKy0gRVZUX0xJQl9RVUVTVF9TT0xWRUQ6IEVpbiBTcGllbGVyIGhhdCBlaW5lIFF1ZXN0IGdlbG9lc3QKKy0gRVZUX0xJQl9NSU5JUVVFU1RfU09MVkVEOiBFaW4gU3BpZWxlciBoYXQgZWluZSBNaW5pcXVlc3QgZ2Vsb2VzdAorCitHaWxkZW4gbXVlc3NlbiBkZWZpbmllcmVuIChnZ2YuIHZpYSAvc3RkL2dpbGRlbl9vYi5jKToKKy0gRVZUX0dVSUxEX0NIQU5HRTogU3BpZWxlciBoYXQgc2VpbmUgR2lsZGUgZ2V3ZWNoc2VsdC4KKy0gRVZUX0dVSUxEX0FEVkFOQ0U6IEVpbiBTcGllbGVyIGhhdCBzZWluZSBHaWxkZW5zdHVmZSBlcmhvZWh0CisKKworTmFtZW5za29udmVudGlvbiBmdWVyIEV2ZW50LUlEczoKKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKy0gRGllIElEcyBhbGxlciBTdGFuZGFyZGV2ZW50cyBiZWdpbm5lbiBtaXQgImV2dF9saWJfIi4gCisgIERlbWVudHNwcmVjaGVuZCBzaW5kIGFsbGUgU3RyaW5ncywgZGllIGRhbWl0IGFuZmFuZ2VuLCBmdWVyIEFMTEUgYXVzc2VyIAorICBkZXIgTXVkbGliIFRBQlUhIEQuaC4KKyAgLSBkaWVzZSBFdmVudHMgd2VyZGVuIE5JRU1BTFMgdm9uIE9iamVrdGVuIGF1c3NlcmhhbGIgZGVyIEJhc2lzbGliCisgICAgYXVzZ2Vsb2VzdCEKKyAgLSBlcyBkdWVyZmVuIGtlaW5lIEV2ZW50cyByZWdpc3RyaWVydCB3ZXJkZW4sIGRpZSBtaXQgZGllc2VyIFplaWNoZW5mb2xnZQorICAgIGFuZmFuZ2VuLCBhdXNzZXIgbWl0IGRlbiBzeW1ib2xpc2NoZW4gTmFtZW4gaW4gL3N5cy9ldmVudHMuaAorLSBHaWxkZW4tRXZlbnRzIGJlZ2lubmVuIG1pdCAiZXZ0X2d1aWxkXyIsIHNvZmVybiBlcyBlaW4gRXZlbnQgaXN0LCBkZW4gamVkZQorICBHaWxkZSBkZWZpbmllcnQgKHMuIC9zeXMvZXZlbnRzLmgpLgorICBEaWUgRXZlbnRzIGVpbnplbG5lciBHaWxkZW4gc29sbHRlbiBtaXQgImV2dF9naWxkZW5uYW1lXyIgYmVnaW5uZW4uCistIERpZSBJRHMgZWluemVsbmVyIE1hZ2llciBzb2xsdGVuIGFtIGJlc3RlbiB6d2Vja3MgRWluZGV1dGlna2VpdCBtaXQKKyAgIm1hZ2llcm5hbWVfIiBiZWdpbm5lbi4KKworCitXYXMgaXN0IGFscyBsYXVzY2hlbmRlcyBPYmpla3QgenUgYmVhY2h0ZW4/Cis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KK0RhcyBsYXVzY2hlbmRlIE9iamVrdCBtdXNzIHp1bmFlY2hzdCAvc3lzL2V2ZW50cy5oIGlua2x1ZGllcmVuIHVuZCBzaWNoCittaXR0ZWxzIEF1ZnJ1ZnMgdm9uIFJlZ2lzdGVyRXZlbnQoKSBhbHMgTGF1c2NoZXIgcmVnaXN0cmllcmVuLgorV2VpdGVyaGluIG11c3MgZXMgZWluZSBGdW5rdGlvbiBvZWZmZW50bGljaCBkZWZpbmllcmVuIChOYW1lIGJlbGllYmlnKSwgZGllCitkZXIgRVZFTlREIGF1ZnJ1ZmVuIGthbm4uIERpZXNlIEZ1bmt0aW9uIGJla29tbXQgMyBBcmd1bWVudGUgdWViZXJnZWJlbjoKK0V2ZW50LUlELCBldmVudC1hdXNsb2VzZW5kZXMgT2JqZWt0IHVuZCBkaWUgRXZlbnQtRGF0ZW46CisgICBwdWJsaWMgdm9pZCBsaXN0ZW5fZXZlbnQoc3RyaW5nIGVpZCwgb2JqZWN0IHRyaWdvYiwgbWl4ZWQgZGF0YSk7CisnZGF0YScgaXN0IGVpbiBEYXRlbnR5cCwgZGVyIHZvbSBFdmVudHR5cCBhYmhhZW5ndC4gT2Z0IGhhbmRlbHQgZXMgc2ljaAordW0gZWluIE1hcHBpbmcuIEZ1ZXIgZWluZSBnZW5hdWUgQmVzY2hyZWlidW5nIHNjaGF1dCBiaXR0ZSBkaWUgaW4gZGllIE1hbnBhZ2UKK2RlcyBrb25rcmV0ZW4gRXZlbnRzLgorCitCaXR0ZSBiZWFjaHRlbjogRGllIERhdGVuIGluICdkYXRhJyBpbSBGYWxsZSBlaW5lcyBBcnJheXMvTWFwcGluZ3MgbmllbWFscworYWVuZGVybi4gQXVzIEVmZml6aWVuemdydWVuZGVuIHdpcmQgJ2RhdGEnIG5pY2h0IGtvcGllcnQsIGJldm9yIGVzIGFuIGRpZQorZWluemVsbmVuIE9iamVrdGUgdWViZXJnZWJlbiB3aXJkLiBXZW5uIGlociBhbHNvIE11ZWxsIHJlaW5zY2hyZWlidCwgd2VyZGVuCituYWNoIGV1Y2ggaW5mb3JtaWVydGUgTGF1c2NoZXIgZXVyZW4gU2Nocm90dCBlbXBmYW5nZW4uIFNvbGx0ZSBoaWVyCisnTWlzc2JyYXVjaCcgYXVmZmFsbGVuLCB3aXJkIGRhcyBlbnRzcHJlY2hlbmQgZ2VhaG5kZXQhCisKK1VuZCB6dW0gU2NobHVzczogQml0dGUgbWlzc2JyYXVjaHQgZGllIEV2ZW50cyBuaWNodCB1bmQgbWVsZGV0IGV1Y2ggKHNwZXppZWxsIAorZnVlciBoYWV1ZmlnZSBFdmVudHMpIG51ciBhbiwgd2VubiBpaHIgbWl0IGRlbiBJbmZvcm1hdGlvbmVuIHdhcyBzaW5udm9sbGVzIAorbWFjaHQgKGFsc28gei5CLiBuaWNodCBudXIsIHVtIGVpbiBMb2cgZGVyIGdldG9ldGV0ZW4gTlBDcyBpbSBTcGllbCB6dSAKK2Vyc3RlbGxlbi4gOy0pKS4KKworCitXYXMgaXN0IGFscyBhdXNsb2VzZW5kZXMgT2JqZWt0IHp1IGJlYWNodGVuPworPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorRWlnZW50bGljaCBnYXIgbmljaHQgdmllbC4gSWhyIG11ZXNzdCBsZWRpZ2xpY2ggL3N5cy9ldmVudHMuaCBpbmtsdWRpZXJlbiB1bmQKK2JlaSBBdWZ0cmV0ZW4gZGVzIEV2ZW50cyBkaWUgRnVua3Rpb24gVHJpZ2dlckV2ZW50KCkgaW0gRVZFTlREIGF1ZnJ1ZmVuIHVuZAoraWhyIGRpZSBFdmVudC1JRCB1bmQgZGllIEV2ZW50LURhdGVuIHVlYmVyZ2ViZW4uCitCaXR0ZSB1ZWJlcmdlYnQgYWxzIEV2ZW50LURhdGVuIGdnZi4gS29waWVuIHZvbiBNYXBwaW5ncy9BcnJheXMsIGRhIGxhdXNjaGVuZGUKK09iamVrdGUgZGllc2UgRGF0ZW4gdmVyYWVuZGVybiBrb2VubmVuLgorCisKK0JlaXNwaWVsZToKKz09PT09PT09CisxLiBFaW4gT2JqZWt0IG1vZWNodGUgdWViZXIgU3BpZWxlcnRvZGUgaW5mb3JtaWVydCB3ZXJkZW46CisgICAgIEVWRU5URC0+UmVnaXN0ZXJFdmVudChFVlRfTElCX1BMQVlFUl9ERUFUSCwgInNwaWVsZXJfaXN0X3RvdCIsIAorICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpc19vYmplY3QoKSk7CisgICBBYiBqZXR6dCB3aXJkIGltIE9iamVrdCBqZWRlcyBNYWwsIHdlbm4gZWluIFNwaWVsZXIgc3RpcmJ0LCBkaWUgRnVua3Rpb24KKyAgICJzcGllbGVyX2lzdF90b3QiIGF1ZmdlcnVmZW4uCisKKzIuIEVpbiBPYmpla3QgbW9lY2h0ZSBuaWNodCBtZWhyIHVlYmVyIFNwaWVsZXJ0b2RlIGluZm9ybWllcnQgd2VyZGVuOgorICAgICBFVkVOVEQtPlVucmVnaXN0ZXJFdmVudChFVlRfTElCX1BMQVlFUl9ERUFUSCwgdGhpc19vYmplY3QoKSk7CisKKzMuIEVpbiBPYmpla3Qgd2lsbCBpbmZvcm1pZXJ0IHdlcmRlbiwgd2VubiBkZXIgRXZlbnQKKyAgICJib2luZ196d2VyZ2Vua29lbmlnX2FuZ3JpZmYiIGF1c2dlbG9lc3Qgd2lyZDoKKyAgICAgRVZFTlRELT5SZWdpc3RlckV2ZW50KCJib2luZ196d2VyZ2Vua29lbmlnX2FuZ3JpZmYiLCJhbGFybSIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzX29iamVjdCgpKTsKKworNC4gRGVyIFp3ZXJnZW5rb2VuaWcgKG9kZXIgZWluZXIgc2VpbmVyIFdhZWNodGVyKSB3aXJkIGFuZ2VncmlmZmVuOgorICAgRVZFTlRELT5UcmlnZ2VyRXZlbnQoImJvaW5nX3p3ZXJnZW5rb2VuaWdfYW5ncmlmZiIsIGRhdGVuKTsKKyAgIEFuc2NobGllc3NlbmQgd2lyZCBqZWRlcyBPYmpla3QsIGRhcyBlcyB3aXNzZW4gd2lsbCAocy4gMy4pIHZvbSBFVkVOVEQKKyAgIGluZm9ybWllcnQgdW5kIGtyaWVndCBkYWJlaSAnZGF0ZW4nIHVlYmVyZ2ViZW4uIERpZXMga2FubiBlaW4gYmVsaWViaWdlcgorICAgRGF0ZW50eXAgc2VpbiAoei5iLiBlaW4gTWFwcGluZykuIEluIGRpZXNlbSBGYWxsIGVudGhhZWx0ICdkYXRlbicKKyAgIHp3ZWNrbWFlc3NpZ2Vyd2Vpc2UgZGVuIEFuZ3JlaWZlci4KKworCitTaWVoZSBhdWNoOgorPT09PT09PT09PQorICBldmVudGQsIFRyaWdnZXJFdmVudCgpLCBSZWdpc3RlckV2ZW50KCksIFVucmVnaXN0ZXJFdmVudCgpCisKKzE4LjA4LjIwMDcsIFplc3N0cmEKKwpkaWZmIC0tZ2l0IGEvZG9jL2hlbHAvLnJlYWRtZSBiL2RvYy9oZWxwLy5yZWFkbWUKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMGIyYTU3ZgotLS0gL2Rldi9udWxsCisrKyBiL2RvYy9oZWxwLy5yZWFkbWUKQEAgLTAsMCArMSwzIEBACitIaWVyIGJlZmluZGVuIHNpY2ggSGlsZmVuIHp1IGFsbGdlbWVpbmVuIFRoZW1lbiwgZGllIHNvd29obCBmdWVyIFNwaWVsZXIKK2FscyBhdWNoIGZ1ZXIgTWFnaWVyIHZvbiBJbnRlcmVzc2Ugc2luZC4KKwpkaWZmIC0tZ2l0IGEvZG9jL2hlbHAvLnN5bm9ueW0gYi9kb2MvaGVscC8uc3lub255bQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44OTNjNTY4Ci0tLSAvZGV2L251bGwKKysrIGIvZG9jL2hlbHAvLnN5bm9ueW0KQEAgLTAsMCArMSwxMzggQEAKKzRnZXdpbm50IHNwaWVsZQorYWJhbG9uZSBzcGllbGUKK2FiZW50ZXVlcnB1bmt0ZSBhYmVudGV1ZXIKK2Fia3Vlcnp1bmcgYWJrCithYmt1ZXJ6dW5nZW4gYWJrCitha3VlZmkgYWJrCithbGtvaG9sIGVzc2VuX3RyaW5rZW4KK2FuYmV0dW5nIGdvdHQKK2FuZmFlbmdlciBlaW5mdWVocnVuZworYXJtYWdlZGRvbiByZWJvb3QKK2F0dHJpYnV0IGF0dHJpYnV0ZQorYXVzZGF1ZXIgYXR0cmlidXRlCitiZXp1Z3NvYmpla3QgYmV6dWdzcHVua3QKK2JvaW5nIGdvdHQKK2J1Y2ggYnVlY2hlcgorY2ljZXJvbmVuIGNpY2Vyb25lcworY2xpZW50cyBjbGllbnQKK2NwdSBtdWRyZWNobmVyCitkYXJ0IHNwaWVsZQorZG9wcGVsa29wZiBzcGllbGUKK2VrcyBlcnN0a2lsbHN0dWZlbnB1bmt0ZQorZXJzdGtpbGxzIGVyc3RraWxsc3R1ZmVucHVua3RlCitlcnN0aWUgendlaXRzcGllbGVyCitlcnN0c3BpZWxlciB6d2VpdHNwaWVsZXIKK2Vzc2VuIGVzc2VuX3RyaW5rZW4KK2ZhY2Vib29rIHNvemlhbG1lZGllbgorZmVpZXIgcGFydGllcworZmV0ZSBwYXJ0aWVzCitmbHVjaCBnaWZ0CitmbHVlY2hlIGdpZnQKK2Z0cCBtdWRyZWNobmVyCitmdXNzYmFsbCBzcGllbGUKK2dlc2NoaWNrIGF0dHJpYnV0ZQorZ2VzY2hpY2tsaWNoa2VpdCBhdHRyaWJ1dGUKK2dlc3VuZGhlaXQgbGViZW5zcHVua3RlCitnZXRyYWVua2UgZXNzZW5fdHJpbmtlbgorZ2V0cmFlbmsgZXNzZW5fdHJpbmtlbgorZ2lmdGUgZ2lmdAorZ2lsZGUgZ2lsZGVuCitnbGFkaW9wb2xpcyBzcGllbGUKK2dtY3AgR01DUAorZ29ldHRlciBnb3R0Citnb29nbGUgc296aWFsbWVkaWVuCitnbyBzcGllbGUKK2hlaWxlbiBoZWlsdW5nCitoZXJ6c2NobGFnIGxlYmVuCitocCBsZWJlbgoraW50ZWxsaWdlbnogYXR0cmlidXRlCitqb2YgZ290dAora2FlbXBmZW4ga2FtcGYKK2tuZWlwZSBoZWlsdW5nCitrbmVpcGVuIGhlaWx1bmcKK2tvbnplbnRyYXRpb25zcHVua3RlIHphdWJlcmVpCitrb256ZW50cmF0aW9uIHphdWJlcmVpCitrcmFmdCBhdHRyaWJ1dGUKK2tyYW5raGVpdGVuIGdpZnQKK2tyYW5raGVpdCBnaWZ0CitsYXJzIHRvZAorbGViZW5zcHVua3RlIGxlYmVuCitsb2VzY2hlbiBsb2VzY2hza3JpcHQKK2xvZXNjaHVuZyBsb2VzY2hza3JpcHQKK2xwIGxlYmVuCittYWV4Y2hlbiBzcGllbGUKK21hZ2llcHVua3RlIHphdWJlcmVpCittYWdpZSB6YXViZXJlaQorbWV0emVsbiBrYW1wZgorbWluZXN3ZWVwZXIgc3BpZWxlCittaW5pcXVlc3RzIHN0dWZlbnB1bmt0ZQorbWluaXF1ZXN0IHN0dWZlbnB1bmt0ZQorbXBhIHplaXR1bmcKK25haHJ1bmcgZXNzZW5fdHJpbmtlbgorbmV0bGFnIGxhZworbmV0emxhZyBsYWcKK25ldHogbXVkcmVjaG5lcgorb3Jha2VsIHphdWJlcnRyYWVua2UKK3BhcnR5IHBhcnRpZXMKK3BvcnRhbGUgc2VoZXJ0b3JlCitwb3J0YWwgc2VoZXJ0b3JlCitxcCBhYmVudGV1ZXIKK3F1ZXN0IGFiZW50ZXVlcgorcXVlc3RlbiBhYmVudGV1ZXIKK3F1ZXN0bGlzdGUgYWJlbnRldWVybGlzdGUKK3F1ZXN0cHVua3RlIGFiZW50ZXVlcgorcXVlc3RzIGFiZW50ZXVlcgorcmFnZSBzcGllbGUKK3JlY2huZXIgbXVkcmVjaG5lcgorcmVnZWwgcmVnZWxuCityZWdpb24gcmVnaW9uZW4KK3JlZ2lvbnNtYWdpZXIgcmVnaW9uZW4KK3JvZGVsbiBzcGllbGUKK3J1bWF0YSBnb3R0CitzYXVmZW4gZXNzZW5fdHJpbmtlbgorc2NoYWNoIHNwaWVsZQorc2NyaXB0ZSByZWdlbG4KK3NjcmlwdCByZWdlbG4KK3NjcmlwdHMgcmVnZWxuCitzZWhlcnBvcnRhbGUgc2VoZXJ0b3JlCitzZWhlcnBvcnRhbCBzZWhlcnRvcmUKK3NlaGVydG9yIHNlaGVydG9yZQorc2thdCBzcGllbGUKK3NrcmlwdGUgcmVnZWxuCitza3JpcHQgcmVnZWxuCitza3JpcHRzIHJlZ2Vsbgorc3BlaWNoZXIgbXVkcmVjaG5lcgorc3BlaXNlIGVzc2VuX3RyaW5rZW4KK3NwZWlzZW4gZXNzZW5fdHJpbmtlbgorc3BpZWxlcmxvZXNjaGVuIGxvZXNjaHNrcmlwdAorc3BpZWxlcmxvZXNjaHVuZyBsb2VzY2hza3JpcHQKK3NwaWVsZXJ0ZXN0aWUgc3BpZWxlcnRlc3RpZXMKK3N0YWVya2UgYXR0cmlidXRlCit0YWJsdXQgc3BpZWxlCit0YW5rZSBoZWlsdW5nCit0YW5rZW4gaGVpbHVuZwordGVhbSB0ZWFta2FtcGYKK3Rlc3RpZSBzcGllbGVydGVzdGllcwordGVzdGllcyBzcGllbGVydGVzdGllcwordGVzdHNwaWVsZXIgc3BpZWxlcnRlc3RpZXMKK3RmIGNsaWVudAordG9kZXNmb2xnZW4gdG9kCit0b2Rlc21hbHVzIHRvZAordG90IHRvZAordHJpbmtlbiBlc3Nlbl90cmlua2VuCit0czMgdGVhbXNwZWFrCit0cyB0ZWFtc3BlYWsKK3R3aXR0ZXIgc296aWFsbWVkaWVuCit1bWxhdXRlIHN5bnRheAordmVyYmluZHVuZyBjbGllbnQKK3ZlcmdpZnR1bmcgZ2lmdAord2FmZmVuc2tpbGxzIHdhZmZlbmZlcnRpZ2tlaXRlbgord2FmZmVuc2tpbGwgd2FmZmVuZmVydGlna2VpdGVuCit3YWZmZW4gd2FmZmVuZmVydGlna2VpdGVuCit3YWZmZSB3YWZmZW5mZXJ0aWdrZWl0ZW4KK3phdWJlcnRyYW5rIHphdWJlcnRyYWVua2UKK3phdWJlciB6YXViZXJlaQorem9vayBnb3R0Cit6dCB6YXViZXJ0cmFlbmtlCit6d2VpdGllcyB6d2VpdHNwaWVsZXIKK3p3ZWl0aWUgendlaXRzcGllbGVyCmRpZmYgLS1naXQgYS9kb2MvaGVscC9HTUNQIGIvZG9jL2hlbHAvR01DUApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi42MDBhZDg4Ci0tLSAvZGV2L251bGwKKysrIGIvZG9jL2hlbHAvR01DUApAQCAtMCwwICsxLDM1NiBAQAorR2VuZXJhbCBNdWQgQ29tbXVuaWNhdGlvbiBQcm90b2NvbCBpbSBNb3JnZW5HcmF1ZW4KKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CisKKzAuIEVpbmxlaXR1bmcKKyAgIEdNQ1Agd2lyZCBiZW51dHp0LCB1bSBEYXRlbiB6d2lzY2hlbiBNVUQgdW5kIENsaWVudCAib3V0IG9mIGJhbmQiIHp1CisgICB1ZWJlcnRyYWdlbi4gIk91dCBvZiBiYW5kIiBiZWRldXRldCBoaWVyLCBkYXNzIGRlciBEYXRlbmF1c3RhdXNjaCBoaW50ZXIKKyAgIGRlbiBLdWxpc3NlbiBwYXNzaWVydCBzdGF0dCBpbiBkZXIgbm9ybWFsZW4gdGV4dHVlbGxlbiBTcGllbGF1c2dhYmUsCisgICB3ZWxjaGVyIHZvbSBDbGllbnQgbWl0dGVscyBtZWhyIG9kZXIgd2VuaWdlciBrb21wbGl6aWVydGVyIFRyaWdnZXIKKyAgIGF1c2dld2VydGV0IHdlcmRlbiBtdXNzLgorCisgICBWb3J0ZWlsZToKKyAgICoga2VpbmUga29tcGxleGVuIFRyaWdnZXIgKFJlZ2V4cHMpIG1laHIuCisgICAqIERhdGVuIHdlcmRlbiBpbiBlaW5lbSBkZWZpbmllcnRlbiBGb3JtYXQgdWViZXJ0cmFnZW4sIHdlbGNoZXMgZGVyIENsaWVudAorICAgICBmdWVyIGV1Y2ggaW50ZXJwcmV0aWVydC4KKyAgICoga2VpbmUgR2FndHJpZ2dlciBtZWhyIG5vZXRpZywgdW0gZW1wZmFuZ2VuZW4gVGV4dCBhdXN6dWJsZW5kZW4KKyAgICoga2VpbmUgc3RvZXJlbmRlbiBBdXNnYWJlbiwgZmFsbHMgbWFuIGRpZXNlIEdhZ3RyaWdnZXIgbmljaHQgaGF0LgorICAgKiBEYXRlbiBrb2VubmVuIGF1Y2ggdWViZXJ0cmFnZW4gd2VyZGVuIGluIFNpdHVhdGlvbmVuLCBpbiBkZW5lbiBlaW5lCisgICAgIG5vcm1hbGUgVGV4dGF1c2dhYmUgbmljaHQgc28gZ3V0IGdlaHQsIHouQi4gaW4gRWRpdG9yZW4uCisgICAqIERhdGVuLCBkaWUgZGllIENsaWVudHNjcmlwdGUgbmljaHQgdmVyYXJiZWl0ZW4sIHN0b2VyZW4gbmljaHQgZGVuCisgICAgIFRleHRmbHVzcy4KKyAgICogRGVyIENsaWVudCBrYW5uIGtvbmZpZ3VyaWVyZW4sIHdlbGNoZSBJbmZvcm1hdGlvbmVuIGVyIGJla29tbWVuIHdpbGwuCisgICAqIEltIE1HIGlzdCBuZWJlbiBEaW5nZW4gd2llIExQIHVuZCBLUCBkaWUgVWViZXJ0cmFndW5nIGRpdi4gYW5kZXJlciBEaW5nZQorICAgICBnZXBsYW50LCB2b3IgYWxsZW0gYW5kZXJlIEluZm9ybWF0aW9uZW4gIHVlYmVyIGRlbiBDaGFyIG9kZXIgZGVuIFJhdW0KKyAgICAgKHouQi4gZWluZGV1dGlnZSBSYXVtLUlEcyAoaW4gZGVuIG1laXN0ZW4gRmFlbGxlbikpLgorCisKKzEuIFVudGVyc3R1ZXR6dGUgTW9kdWxlCisKKzEuMS4gQ29yZSAoYXVzIElSRSAoSXJvbiBSZWFsbXMgRW50ZXJ0YWlubWVudCkgTVVEcykKKyAgRGFzIENvcmUgTW9kdWwgaXN0IGltbWVyIGFrdGl2LiBFcyB2ZXJ3YWx0ZXQgZGllIGdydW5kc2FldHpsaWNoZW4KKyAgRWluc3RlbGx1bmdlbiB2b24gR01DUC4gRGllIE1HLVZhcmlhbnRlIGlzdCBmYXN0IGlkZW50aXNjaCB6dXIgSVJFLVZhcmlhbnRlLAorICBoYXQgYWxsZXJkaW5ncyB6dXNhZXR6bGljaGUgZGFzICJEZWJ1ZyItS29tbWFuZG8uCisKKyAgVm9tIENsaWVudCBnZXNlbmRldDoKKyAgICAtIENvcmUuSGVsbG8KKyAgICAgICAgTXVzcyBkaWUgZXJzdGUgTmFjaHJpY2h0IHNlaW4sIHdlbGNoZSBkZXIgQ2xpZW50IG5hY2ggQWt0aXZpZXJ1bmcgdm9uCisgICAgICAgIEdNQ1Agc2VuZGV0LgorICAgICAgICBEaWUgRGF0ZW4gc2luZCBlaW4gT2JqZWt0IG1pdCBkZW4gU2NobHVlc3NlbG4gImNsaWVudCIgdW5kICJ2ZXJzaW9uIiwKKyAgICAgICAgd2VsY2hlIGVudHNwcmVjaGVuZCBkZW4gQ2xpZW50bmFtZW4gdW5kIHNlaW5lIFZlcnNpb25za2VubnVuZworICAgICAgICBlbnRoYWx0ZW4uCisgICAgICBDb3JlLkhlbGxvIHsgImNsaWVudCI6ICJOZXh1cyIsICJ2ZXJzaW9uIjogIjMuMS45MCIgfQorICAgIC0gQ29yZS5TdXBwb3J0cy5TZXQKKyAgICAgICAgSW5mb3JtaWVydCBkYXMgTVVEIHVlYmVyIGRpZSBQYWtldGUvTW9kdWxlLCBkaWUgZGVyIENsaWVudAorICAgICAgICB1bnRlcnN0dWV0enQsIGQuaC4gZGllIGRlciBDbGllbnQgZW1wZmFuZ2VuIGthbm4uIEVzIGlzdCBpbW1lciBub2NoCisgICAgICAgIEVudHNjaGVpZHVuZyBkZXMgTXVkcywgd2VsY2hlIGRpZXNlciBNb2R1bGUgaWhyZSBEYXRlbiBzZW5kZW4gKHouQi4KKyAgICAgICAgd2lyZCBNRyBlaW5lbSAiTUcuY2hhciIgZGVuIFZvcnp1ZyBnZWJlbiB2b3IgZWluZW0gZ2VuZXJpc2NoZW4gIkNoYXIiLAorICAgICAgICBmYWxscyB2b20gQ2xpZW50IGJlaWRlIHVudGVyc3R1ZXR6dCB3ZXJkZW4uCisgICAgICAgIFdlbm4gYmVyZWl0cyB2b3JoZXIgZWluIENvcmUuU3VwcG9ydHMuKiBLb21tYW5kbyBlbXBmYW5nZW4gd3VyZGUsIHdpcmQKKyAgICAgICAgZGllIExpc3RlIGRlciB1bnRlcnN0dWV0enRlbiBNb2R1bGUgZHVyY2ggZGllIG5ldWUgZXJzZXR6dC4KKyAgICAgICAgRGF0ZW4gc2luZCBlaW4gQXJyYXkgdm9uIFN0cmluZ3MsIHdlbGNoZSBqZXdlaWxzIGRlbiBNb2R1bG5hbWVuIHVuZAorICAgICAgICBkaWUgVmVyc2lvbnNudW1tZXIgYW5nZWJlbiAobWl0IGVpbmVtIExlZXJ6ZWljaGVuIGdldHJlbm50KS4KKyAgICAgICAgRGllIFZlcnNpb25zbnVtbWVyIG11c3MgZWluZSBwb3NpdGl2ZSBHYW56emFobCBzZWluLgorICAgICAgICBEaWUgbWVpc3RlbiBDbGllbnRzIHdlcmRlbiBTZXQgbnVyIGVpbm1hbCBhbSBBbmZhbmcgc2VuZGVuIHVuZAorICAgICAgICBicmF1Y2hlbiBrZWluIEFkZC9SZW1vdmUuCisgICAgICBDb3JlLlN1cHBvcnRzLlNldCBbICJNRy5jaGFyIDEiLCAiTUcucm9vbSAxIiBdCisgICAgLSBDb3JlLlN1cHBvcnRzLkFkZAorICAgICAgICBhZWhubGljaCB6dSBTZXQsIGFiZXIgZXMgZnVlZ3QgZGllIGFuZ2VnZWJlbiBNb2R1bGUgYW4gZGllIGluIGRlcgorICAgICAgICBWZXJnYW5nZW5oZWl0IHVlYmVybWl0dGVsdGVuIGFuLgorICAgICAgICBXZW5uIG5vY2gga2VpbmUgTGlzdGUgZ2VzZW5kZXQgd3VyZGUsIGlzdCBkYXMgRXJnZWJuaXMgd2llIGJlaSBTZXQuCisgICAgICAgIFdlbm4gZGllIExpc3RlIE1vZHVsZSBlbnRoYWVsdCwgZGllIGJlcmVpdHMgYWt0aXYgc2luZCwgd2lyZCBkaWUgbmV1ZQorICAgICAgICBWZXJzaW9uc251bW1lciBQcmlvcml0YWV0IHZvciBkZXIgYWx0ZW4gaGFiZW4sIHNlbGJzdCB3ZW5uIGRpZSBrbGVpbmVyCisgICAgICAgIGlzdC4KKyAgICAgICAgRGllIERhdGVuIHNpbmQgaWRlbnRpc2NoIHp1IFNldC4KKyAgICAtIENvcmUuU3VwcG9ydHMuUmVtb3ZlCisgICAgICAgIEVudGZlcm50IGRpZSBhbmdlYmVuZW4gTW9kdWxlIGF1cyBkZXIgTGlzdGUgZGVyIHVudGVyc3R1ZXR6ZW4gTW9kdWxlLgorICAgICAgICBEaWUgRGF0ZW4gc2luZCBpZGVudGlzY2ggenUgU2V0LiBEaWUgTW9kdWx2ZXJzaW9uZW4gc2luZCBOSUNIVAorICAgICAgICBvcHRpb25hbCAoYW5kZXJzIGFscyBiZWkgSVJFKS4gQWxsZXJkaW5ncyB3ZXJkZW4gYXVjaCBNb2R1bGUgYW5kZXJlcgorICAgICAgICBWZXJzaW9uIGFiZ2VzY2hhbHRldC4gKEluc29mZXJuIGtvZW5udGUgbWFuIC0genVyIFplaXQgLSBlaW5mYWNoIGltbWVyIDEKKyAgICAgICAgYWxzIFZlcnNpb25zbnVtbWVyIHNlbmRlbi4pCisgICAgLSBDb3JlLktlZXBBbGl2ZQorICAgICAgICBWb20gTUcgaWdub3JpZXJ0LCB3ZWlsIFZlcmJpbmR1bmdlbiBuaWNodCBhdXRvbWF0aXNjaCBnZXRyZW5udCB3ZXJkZW4uCisgICAgLSBDb3JlLlBpbmcKKyAgICAgICAgVmVyYW5sYXNzdCBkYXMgTUcgbWl0IGVpbmVtIENvcmUuUGluZyB6dSBhbnR3b3J0ZW4uCisgICAgICAgIERpZSBEYXRlbiBpc3QgZWluZSBHYW56emFobCwgd2VsY2hlIGRpZSBkdXJjaHNjaG5pdHRsaWNoZSBQaW5nemVpdAorICAgICAgICBhdXMgdmVyaGVyaWdlbiBQaW5ncyBlbnRoYWVsdCwgZmFsbHMgdmVyZnVlZ2Jhci4KKyAgICAgICAgKEFubWVya3VuZzogSVJFIG1hY2h0IGtlaW5lIEFuZ2FiZSB1ZWJlciBkaWUgRWluaGVpdCBkaWVzZXIgWmFobC4gTUcKKyAgICAgICAgIGdlaHQgdm9uIE1pbGxpc2VrdW5kZW4gYXVzLikKKyAgICAgIENvcmUuUGluZyAxMjAKKyAgICAtIENvcmUuRGVidWcKKyAgICAgICAgS2FubiBnZXNlbmRldCB3ZXJkZW4sIHVtIGRpZSBBdXNnYWJlIHZvbiBtZW5zY2hlbmxlc2JhcmVuCisgICAgICAgIERlYnVnbWVsZHVuZ2VuIHZvbSBHTUNQIHp1IGFrdGl2aWVyZW4uCisgICAgICAgIERpZSBEYXRlbiBzaW5kIGVpbmUgR2FuenphaGwuIEplIGdyb2Vzc2VyLCBkZXN0byBtZWhyIERlYnVnbWVsZHVuZ2VuCisgICAgICAgIHdlcmRlbiBhdXNnZWdlYmVuLgorICAgICAgICAwIHNjaGFsdGV0IGRpZSBEZWJ1Z21lbGR1bmdlbiBhdXMuCisgICAgICAgIDEgc2NoYWx0ZXQgbnVyIGRpZSBBdXNnYWJlIHZvbiBHTUNQLUZlaGxlcm4gYW4uCisgICAgICAgIDEwMCBzY2hhbHRldCBhbGxlcyBhbi4KKyAgICAgIENvcmUuRGVidWcgMQorICBWb20gU2VydmVyIGdlc2VuZGV0OgorICAgIC0gQ29yZS5QaW5nCisgICAgICAgIEFscyBBbnR3b3J0IGVpbmVzIHZvbSBDbGllbnQgZW1wZmFuZ2VuZW4gQ29yZS5QaW5nIGdlc2VuZGV0LgorICAgICAgICBLZWluZSBEYXRlbi4KKyAgICAtIENvcmUuR29vZGJ5ZSBbTk9UIElNUExFTUVOVEVEIFlFVCFdCisgICAgICAgIEdlc2VuZGV0IHZvbSBNVUQgdW5taXR0ZWxiYXIgdm9yIFZlcmJpbmR1bmdzdHJlbm51bmcuCisgICAgICAgIERpZSBEYXRlbiBzaW5kIGVpbmUgTmFjaHJpY2h0IChzdHJpbmcpLCB3ZWxjaGUgZGVtIFVzZXIgYW5nZXplaWd0CisgICAgICAgIHdlcmRlbiBrYW5uIHVuZCBrb2VubmVuIGRlbiBHcnVuZCBmdWVyIGRlbiBEaXNjb25uZWN0IGVya2xhZXJlbi4KKyAgICAgIENvcmUuR29vZGJ5ZSAiR29vZGJ5ZSwgYWR2ZW50dXJlciIKKworMS4yLiBNRy5jaGFyIDEgKGFuZ2VsZWhudCBhbiBBYXJkd29sZiwgYWJlciBtb2RpZml6aWVydCkKKyAgRGllIFVlYmVydHJhZ3VuZyBkZXIgS29tbWFuZG9zIGluIGRpZXNlbSBNb2R1bCB3aXJkIGFrdGl2aWVydCwgd2VubgorICAiTUcuY2hhciIgYWt0aXYgaXN0LiBFcyBnaWJ0IGtlaW5lIFN1Ym1vZHVsZSwgZGllIGdldHJlbm50IGFrdGl2aWVydCB3ZXJkZW4KKyAgbXVlc3N0ZW4uIERpZSBqZXdlaWxpZ2VuIEtvbW1hbmRvcyB3ZXJkZW4gZ2VzZW5kZXQsIHdlbm4gc2ljaCBlaW5zIGRlcgorICBnZXNlbmRldGVuIERhdGVuIGFlbmRlcnQuCisgIEFsbGUgS29tbWFuZG9zIHdlcmRlbiBlaW5tYWwgYmVpIE1vZHVsYWt0aXZpZXJ1bmcgZ2VzZW5kZXQgKGF1Y2ggd2VubiBlaW4KKyAgTW9kdWwgZHVyY2ggZWluIENvcmUuU3VwcG9ydHMuU2V0IChlcm5ldXQpIGFrdGl2aWVydCB3aXJkKS4KKyAgSXN0IGRpZXNlcyBNb2R1bCB2b20gQ2xpZW50IHVudGVyc3R1ZXR6dCwgd2VyZGVuIGtlaW5lIERhdGVuIGF1cyBkZW4KKyAgTW9kdWxlbiAiQ2hhciIgdW5kICJjaGFyIiBnZXNlbmRldC4KKyAgKFNwaWVsZXIgYWVsdGVyIGFscyAxMi4wNS4yMDEzIG11ZXNzZW4gZWlubWFsaWcgZGVuIHRleHR1ZWxsZW4gUmVwb3J0IG1pdAorICAgInJlcG9ydCBlaW4iIHVuZCAicmVwb3J0IHZvcnNpY2h0IiBlaW5zY2hhbHRlbiwgZGFtaXQgZGllIFVlYmVydHJhZ3VuZworICAgdmlhIEdNQ1AgZnJlaWdlc2NoYWx0ZXQgd2lyZC4gRGVyIFJlcG9ydCBrYW5uIGRhbmFjaCB3aWVkZXIKKyAgIGF1c2dlc2NoYWx0ZXQgd2VyZGVuLikKKworMS4yLjIuIE1HLmNoYXIuYmFzZQorICBWb20gU2VydmVyIGdlc2VuZGV0OgorICAgIC0gTUcuY2hhci5iYXNlCisgICAgICBFaW5pZ2UgZ3J1bmRsZWdlbmRlIEVpZ2Vuc2NoYWZ0ZW4gZGVzIENoYXJzLCBkaWUgc2ljaCBzZWx0ZW4gYWVuZGVybi4KKyAgICAgIEVpbiAid2l6bGV2ZWwiIHZvbiAxIHplaWd0IGFuLCBkYXNzIGRlciBDaGFyIGVpbiBTZWhlciBpc3QuCisgICAgICBEZXIgInRpdGxlIiBrYW5uIGFtIEFuZmFuZyBlaW4gQmFja3NwYWNlICJcYiIgZ2Vmb2xndCB2b24gIiwiIG9kZXIgIiciCisgICAgICBlbnRoYWx0ZW4uCisgICAgICBNRy5jaGFyLmJhc2UgeyAibmFtZSI6ICJKb2YiLCAiZ3VpbGQiOiAiQWJlbnRldXJlciIsCisgICAgICAgICAgICAgICAgICAgICAicmFjZSI6ICJFbGYiLCAicHJlc2F5IjogIk11ZGdvdHQiLAorICAgICAgICAgICAgICAgICAgICAgInRpdGxlIjogImlkbGV0LiIsICJ3aXpsZXZlbCI6IDEwMSB9CisKKzEuMi4zLiBNRy5jaGFyLnZpdGFscworICBWb20gU2VydmVyIGdlc2VuZGV0OgorICAgIC0gTUcuY2hhci52aXRhbHMKKyAgICAgIEFrdHVlbGxlIExlYmVuc3B1bmt0ZSwgS29uemVudHJhdGlvbnNwdW5rdGUgdW5kIFZlcmdpZnR1bmd6dXN0YW5kLgorICAgICAgSW0gRmFsbGUgdm9uIEdpZnQ6IGplIGdyb2Vzc2VyLCBkZXN0byBzdGFlcmtlciBkaWUgVmVyZ2lmdHVuZy4KKyAgICAgIE1HLmNoYXIudml0YWxzIHsgImhwIjogMjEwLCAic3AiOiA5MCwgInBvaXNvbiI6IDMgfQorICAgIC0gTUcuY2hhci5tYXh2aXRhbHMKKyAgICAgIEFrdHVlbGxlIE1heGltYWx3ZXJ0ZSBmdWVyIExQLCBLUCB1bmQgVmVyZ2lmdHVuZ3N6dXN0YW5kLiBXZXJkZW4gaW4KKyAgICAgIGVpbmVyIHNlcGFyYXRlbiBHcnVwcGUgdWViZXJ0cmFnZW4sIHdlaWwgc2llIHNpY2ggdmllbCBzZWx0ZW5lciBhZW5kZXJuLgorICAgICAgTUcuY2hhci5tYXh2aXRhbHMgeyAibWF4X2hwIjogMjEwLCAibWF4X3NwIjogMjI2LCAibWF4X3BvaXNvbiI6IDEwIH0KKworMS4yLjQuIE1HLmNoYXIuYXR0cmlidXRlcworICBWb20gU2VydmVyIGdlc2VuZGV0OgorICAgIC0gTUcuY2hhci5hdHRyaWJ1dGVzCisgICAgICBBa3R1ZWxsZSBBdHRyaWJ1dGUgZGVzIENoYXJzLgorICAgICAgRGllIERhdGVuIHNpbmQgZWluIE9iamVrdCBOYW1lLVdlcnQtUGFhcmVuIHZvbiBBdHRyaWJ1dGVuLgorICAgICAgTUcuY2hhci5hdHRyaWJ1dGVzIHvCoCJpbnQiOiAxMiwgImNvbiI6IDEwLCAic3RyIjogOCwgImRleCI6IDEyIH0KKworMS4yLjUuIE1HLmNoYXIuaW5mb1ZhcnMKKyAgVm9tIFNlcnZlciBnZXNlbmRldDoKKyAgICAtIE1HLmNoYXIuaW5mb1ZhcnMKKyAgICAgIERpZXNlIE5hY2hyaWNodCBnaWJ0IGRlbiAidGVjaG5pc2NoZW4iIE5hbWVuIGF1cyBNRy5jaGFyLmluZm8gZWluZW4KKyAgICAgIE5hbWVuLCBkZXIgZGVtIFNwaWVsZXIgc3RhdHRkZXNzZW4gYW5nZXplaWd0IHdlcmRlbiBzb2xsdGUuCisgICAgICBEaWVzZSBOYWNocmljaHQgd2lyZCBudXIgYmVpIE1vZHVsYWt0aXZpZXJ1bmcgZ2VzZW5kZXQuCisgICAgICBEaWUgRGF0ZW4gc2luZCBlaW4gT2JqZWt0IHZvbiBOYW1lLUJlc2NocmVpYnVuZy1QYWFyZW4uCisgICAgICBNRy5jaGFyLmluZm9WYXJzIHsgImxldmVsIjogIlN0dWZlIiwgImd1aWxkbGV2ZWwiOiAiR2lsZGVuc3R1ZmUiIH0KKworMS4yLjYuIE1HLmNoYXIuaW5mbworICBWb20gU2VydmVyIGdlc2VuZGV0OgorICAgIC0gTUcuY2hhci5pbmZvCisgICAgICBVZWJlcnRyYWVndCAoYXVzZ2V3YWVobHRlKSBEYXRlbiBhdXMgZGVtIEtvbW1hbmRvIDxpbmZvPi4KKyAgICAgIERpZSBEYXRlbiBzaW5kIGVpbiBPYmpla3Qgdm9uIE5hbWUtV2VydC1QYWFyZW4uCisgICAgICAoTW9lZ2xpY2hlIHdlaXRlcmUgQW5nYWJlbiBpbiBkZXIgWnVrdW5mdDogUXVlc3RwdW5rdGUsIFN0dWZlbnB1bmt0ZQorICAgICAgIChHZW5hdWlna2VpdCAyMCUgZWluZXIgU3R1ZmUpLCAuLi4pCisgICAgICBNRy5jaGFyLmluZm8geyAibGV2ZWwiOiAyMTAsICJndWlsZGxldmVsIjogOSB9CisKKzEuMi43LiBNRy5jaGFyLndpbXB5CisgIFZvbSBTZXJ2ZXIgZ2VzZW5kZXQ6CisgICAgLSBNRy5jaGFyLndpbXB5CisgICAgICBBa3R1ZWxsZSBWb3JzaWNodCB1bmQgZ2dmLiBGbHVjaHRyaWNodHVuZyBkZXMgQ2hhci4KKyAgICAgIERpZSBEYXRlbiBzaW5kIGVpbiBPYmpla3QgTmFtZS1XZXJ0LVBhYXJlIHZvbiBWb3JzaWNodCtGbHVjaHRyaWNodHVuZy4KKyAgICAgIElzdCBrZWluZSBGbHVjaHRyaWNodHVuZyBnZXNldHp0LCB3aXJkIDAgdWViZXJ0cmFnZW4uCisgICAgICBGdWVyIGRpZSBVZWJlcm1pdHRsdW5nIGRlciBWb3JzaWNodCBtdXNzIGRlciBDaGFyIGRpZSBRdWVzdCAiRGVyIFNjaHJhdAorICAgICAga2FubiBuaWNodCBlaW5zY2hsYWZlbiIgZ2Vsb2VzdCBoYWJlbiB1bmQgZnVlciBkaWUgRmx1Y2h0cmljaHR1bmcKKyAgICAgIFNlaGVyIHNlaW4uCisgICAgICBNRy5jaGFyLndpbXB5IHvCoCJ3aW1weSI6IDUwLCAid2ltcHlfZGlyIjogIm5vcmRlbiIgfQorCisKKzEuMy4gY2hhciAxIChBYXJkd29sZikKKyAgRGllc2VzIE1vZHVsIGlzdCBzbyBhZWhubGljaCB6dW0gImNoYXIiIE1vZHVsIHZvbiBBYXJkd29sZiB3aWUgZXMgZ2VodCwgZC5oLgorICBlcyBiZW51dHp0IGRpZSBnbGVpY2hlbiBTY2hsdWVzc2VsbmFtZW4uIEVzIGlzdCBhYmVyIHJlZHV6aWVydCBpbSBVbWZhbmcgZGVyCisgIERhdGVuLCBkLmguIGVzIHVlYmVydHJhZWd0IHdlbmlnZXIgRGF0ZW4gYWxzIEFhcmR3b2xmIGVzIHR1dC4KKyAgV2FubiBpbW1lciBtb2VnbGljaCwgd2lyZCBlbXBmb2hsZW4sIGRhcyBNb2R1bCBNRy5jaGFyIHN0YXR0ZGVzc2VuIHp1CisgIHZlcndlbmRlbi4KKyAgV2VubiBNRy5jaGFyIGFrdGl2IGlzdCwgd2VyZGVuIHZvbiBkaWVzZW0gTW9kdWwga2VpbmUgRGF0ZW4gdWViZXJ0cmFnZW4uCisgIEVTIFdJUkQgREFWT04gQUJHRVJBVEVOLCBESUVTRVMgTU9EVUwgWlUgVkVSV0VOREVOLgorICBXYW5uIGltbWVyIG1vZWdsaWNoLCBzb2xsdGV0IGlociBlcyBpbiBldXJlbiBDbGllbnRzIGFic2NoYWx0ZW4hCisKKzEuMy4xLiBjaGFyLmJhc2UKKyAgVm9tIFNlcnZlciBnZXNlbmRldDoKKyAgICAtIGNoYXIuYmFzZQorICAgICAgRWluaWdlIGdydW5kbGVnZW5kZSBFaWdlbnNjaGFmdGVuIGRlcyBDaGFycywgZGllIHNpY2ggc2VsdGVuIGFlbmRlcm4uCisgICAgICBjaGFyLmJhc2UgeyAibmFtZSI6ICJKb2YiLCAicmFjZSI6ICJFbGYiLH0KKworMS4zLjIuIGNoYXIudml0YWxzCisgIFZvbSBTZXJ2ZXIgZ2VzZW5kZXQ6CisgICAgLSBjaGFyLnZpdGFscworICAgICAgQWt0dWVsbGUgTGViZW5zLSB1bmQgS29uemVudHJhdGlvbnNwdW5rdGUuCisgICAgICBjaGFyLnZpdGFscyB7ICJocCI6IDIxMCwgIm1hbmEiOiA5MH0KKworMS4zLjMuIGNoYXIuc3RhdHMKKyAgVm9tIFNlcnZlciBnZXNlbmRldDoKKyAgICAtIGNoYXIuc3RhdHMKKyAgICAgIEFrdHVlbGxlIEF0dHJpYnV0ZSBkZXMgU3BpZWxlcnMuCisgICAgICBEaWUgRGF0ZW4gc2luZCBlaW4gT2JqZWt0IE5hbWUtV2VydC1QYWFyZW4gdm9uIEF0dHJpYnV0ZW4uCisgICAgICBjaGFyLnN0YXRzIHvCoCJpbnQiOiAxMiwgImNvbiI6IDEwLCAic3RyIjogOCwgImRleCI6IDEyIH0KKworMS4zLjQuIGNoYXIuc3RhdHVzCisgIFZvbSBTZXJ2ZXIgZ2VzZW5kZXQ6CisgICAgLSBjaGFyLnN0YXR1cworICAgICAgQWt0dWVsbGVyIExldmVsIGRlcyBDaGFycy4gKERpZXMgaXN0IGRpZSBlaW56aWdlIEFuZ2FiZSBhdXMgZGVtIEFhcmR3b2xmCisgICAgICBjaGFyLnN0YXR1cywgd2VsY2hlIGRhcyBNRyBtYWNoZW4ga2Fubi4pCisgICAgICBEaWUgRGF0ZW4gc2luZCBlaW4gT2JqZWt0IE5hbWUtV2VydC1QYWFyZW4gdm9uIEF0dHJpYnV0ZW4uCisgICAgICBjaGFyLnN0YXR1cyB7ICJsZXZlbCI6IDIxMCB9CisKKworMS40LiBDaGFyIDEgKElSRSkKKyAgRGllc2VzIE1vZHVsIGlzdCBzbyBhZWhubGljaCB6dW0gIkNoYXIiIE1vZHVsIHZvbiBJUkUgd2llIGVzIGdlaHQsIGQuaC4KKyAgZXMgYmVudXR6dCBkaWUgZ2xlaWNoZW4gU2NobHVlc3NlbG5hbWVuLiBFcyBpc3QgYWJlciByZWR1emllcnQgaW0gVW1mYW5nIGRlcgorICBEYXRlbiwgZC5oLiBlcyB1ZWJlcnRyYWVndCB3ZW5pZ2VyIERhdGVuIGFscyBJUkUgZXMgdHV0LgorICBXYW5uIGltbWVyIG1vZWdsaWNoLCB3aXJkIGVtcGZvaGxlbiwgZGFzIE1vZHVsIE1HLmNoYXIgc3RhdHRkZXNzZW4genUKKyAgdmVyd2VuZGVuLgorICBXZW5uIE1HLmNoYXIgYWt0aXYgaXN0LCB3ZXJkZW4gdm9uIGRpZXNlbSBNb2R1bCBrZWluZSBEYXRlbiB1ZWJlcnRyYWdlbi4KKyAgRVMgV0lSRCBEQVZPTiBBQkdFUkFURU4sIERJRVNFUyBNT0RVTCBaVSBWRVJXRU5ERU4uCisgIFdhbm4gaW1tZXIgbW9lZ2xpY2gsIHNvbGx0ZXQgaWhyIGVzIGluIGV1cmVuIENsaWVudHMgYWJzY2hhbHRlbiEKKworMS40LjEuIENoYXIuVml0YWxzCisgIFZvbSBTZXJ2ZXIgZ2VzZW5kZXQ6CisgICAgLSBDaGFyLlZpdGFscworICAgICAgQWt0dWVsbGUgdW5kIG1heGltYWxlIExlYmVucy0gdW5kIEtvbnplbnRyYXRpb25zcHVua3RlLgorICAgICAgQ2hhci5WaXRhbHMgeyAiaHAiOiAyMTAsICJtcCI6IDkwLCAibWF4aHAiOiAyMTAsICJtYXhtcCI6IDIyNiB9CisKKzEuNC4yLiBDaGFyLlN0YXR1cworICBWb20gU2VydmVyIGdlc2VuZGV0OgorICAgIC0gQ2hhci5TdGF0dXMKKyAgICAgIEFrdHVlbGxlciBMZXZlbCB1bmQgR2lsZGUgZGVzIENoYXJzLiAKKyAgICAgIERpZSBEYXRlbiBzaW5kIGVpbiBPYmpla3QgTmFtZS1XZXJ0LVBhYXJlbiB2b24gQXR0cmlidXRlbi4KKyAgICAgIENoYXIuU3RhdHVzIHsgImxldmVsIjogMjEwLCAiZ3VpbGQiOiAiWmF1YmVyZXIiIH0KKworMS40LjMuIENoYXIuU3RhdHVzVmFycworICBWb20gU2VydmVyIGdlc2VuZGV0OgorICAgIC0gQ2hhci5TdGF0dXNWYXJzCisgICAgICBEaWVzZSBOYWNocmljaHQgZ2lidCBkZW4gInRlY2huaXNjaGVuIiBOYW1lbiBhdXMgQ2hhci5TdGF0dXMgZWluZW4KKyAgICAgIE5hbWVuLCBkZXIgZGVtIFNwaWVsZXIgc3RhdHRkZXNzZW4gYW5nZXplaWd0IHdlcmRlbiBzb2xsdGUuCisgICAgICBEaWVzZXMgS29tbWFuZG8gd2lyZCBudXIgYmVpIE1vZHVsYWt0aXZpZXJ1bmcgZ2VzZW5kZXQuCisgICAgICBEaWUgRGF0ZW4gc2luZCBlaW4gT2JqZWt0IHZvbiBOYW1lLUJlc2NocmVpYnVuZy1QYWFyZW4uCisgICAgICBDaGFyLlN0YXR1c1ZhcnMgeyAibGV2ZWwiOiAiU3BpZWxlcnN0dWZlIiwgImd1aWxkIjogIkdpbGRlIiB9CisKKworMS41LiBjb21tLmNoYW5uZWwgMSAoQWFyZHdvbGYpCisgIERpZXNlcyBNb2R1bCBpc3QgZ2VuYXVzbyB3aWUgZXMgQWFyZHdvbGYgZGVmaW5pZXJ0LiBBbGxlcmRpbmdzIHdlcmRlbgorICBuYXR1ZXJsaWNoIGF1cyBkZW0gTUcgYW5kZXJlIEViZW5lbiB1ZWJlcnRyYWdlbi4gOy0pCisgIFZvbSBTZXJ2ZXIgZ2VzZW5kZXQ6CisgICAgLSBjb21tLmNoYW5uZWwKKyAgICAgIERpZXNlIE5hY2hyaWNodCB3aXJkIGltbWVyIGRhbm4gZ2VzZW5kZXQsIHdlbm4gamVtYW5kIHdhcyBhdWYgZWluZXIKKyAgICAgIGVpbmdlc2NoYWx0ZXRlbiBFYmVuZSBzYWd0LiAoTmljaHQgYmVpIEFicnVmIGRlciBIaXN0b3J5ISkKKyAgICAgIFp1ciBaZWl0IGlzdCBlcyBuaWNodCBtb2VnbGljaCwgRWJlbmVuIHBlciBHTUNQIGVpbi0gb2RlciBhdXN6dXNjaGFsdGVuLgorICAgICAgV2VubiBkaWVzZXMgR01DUC1Nb2R1bCBlaW5nZXNjaGFsdGV0IGlzdCwgd2lyZCBkaWUgQXVzZ2FiZSBkZXIKKyAgICAgIEViZW5lbm1lbGR1bmcgaW4gZGVyIG5vcm1hbGVuIFNwaWVsYXVzZ2FiZSBkZXMgTUcgdW50ZXJkcnVlY2t0LgorICAgICAgQWNodHVuZzogWnVyIFplaXQgZXJmb2xndCAobm9jaCkga2VpbmUgQmVydWVja3NpY2h0dW5nIGV1cmVyCisgICAgICAiaWdub3JpZXJlIi1FaW5zdGVsbHVuZ2VuIGJlaSBkZW4gdmlhIEdNQ1AgdWViZXJ0cmFnZW5lbgorICAgICAgRWJlbmVubWVsZHVuZ2VuLgorICAgICAgY29tbS5jaGFubmVsIHsgImNoYW4iOiAiYWxsZ2VtZWluIiwKKyAgICAgICAgICAibXNnIjogIltBbGxnZW1laW46TWFoYXJldF0gR3V0ZW4gTW9yZ2VuLCBHcmF1ZW4hIiwgCisgICAgICAgICAgInBsYXllciI6ICJNYWhhcmV0IiB9CisKKworMS41LiBNRy50ZWFtIDEgKGVpZ2VuZSBWYXJpYW50ZSwgaW5zcGlyaWVydCB2b24gQWFyZHdvbGYpCisgICAgIEtvbW10IHNwYWV0ZXIuIDstKQorCisKKzEuNi4gTUcucm9vbSAxIChlaWdlbmUgVmFyaWFudGUsIGluc3BpcmllcnQgdm9uIEFhcmR3b2xmKQorICBNRy5yb29tIGJlaW5oYWx0ZXQgSW5mb3JtYXRpb25lbiB1ZWJlciBkZW4gYWt0dWVsbGVuIFJhdW0gZGVzIFNwaWVsZXJzCisKKyAgVm9tIFNlcnZlciBnZXNlbmRldDoKKyAgLSBNRy5yb29tLmluZm8KKyAgICBEaWVzZSBOYWNocmljaHRpZyB3aXJkIGltbWVyIG5hY2ggQmV0cmV0ZW4gZWluZXMgbmV1ZW4gUmF1bWVzIGdlc2VuZGV0CisgICAgdW5kIGVudGhhZWx0IGZvbGdlbmRlIEluZm9ybWF0aW9uZW46CisgICAgKiBpZDogRWluZSBlaW5kZXV0aWdlIElEIGRlcyBSYXVtZXMgKHRlY2huaXNjaDogZWluIE1ENS1IYXNoKQorICAgICAgICBEaWVzZSBBbmdhYmUgZmVobHQgaW4gTGFieXJpbnRocmFldW1lbiAobmljaHQgZ2V3b2xsdCkgdW5kIGluIGVpbmlnZW4KKyAgICAgICAgc3BlemllbGxlbiBSYWV1bWVuICh0ZWNobmlzY2hlIEdydWVuZGUsIHouQi4gbWFuY2hlICd2aXJ0dWFsCisgICAgICAgIGNvbXBpbGVyJykuIEluIGRpZXNlbSBGYWxsIGlzdCBkaWUgSUQgIiIgKGxlZXJlciBTdHJpbmcpLgorICAgICogc2hvcnQ6IERpZSBLdXJ6YmVzY2hyZWlidW5nIGRlcyBSYXVtZXMKKyAgICAqIGRvbWFpbjogRGllIFJlZ2lvbiwgaW4gZGVyIGRlciBSYXVtIGxpZWd0CisgICAgICAgIE1hbmNoZSBSYWV1bWUgbGllZ2VuIG5pY2h0IGluIGRlbiBSZWdpb25lbi4gSW4gZGVtIEZhbGwgZmVobHQgZGllc2UKKyAgICAgICAgQW5nYWJlLgorICAgICogZXhpdHM6IGVpbmUgTGlzdGUgdm9uIHNpY2h0YmFyZW4gQXVzZ2FlbmdlbiAoZC5oLiB1bnNpY2h0YmFyZSBBdXNnYWVuZ2UKKyAgICAgICAgd2VyZGVuIG5pY2h0IGFuZ2V6ZWlndCkuCisgICAgSGlud2VpczogZXMgaXN0IG1vZWdsaWNoLCBkYXNzIGRlciBTcGllbGVyIGluIGVpbmVuIFJhdW0gYmV3ZWd0IHdpcmQsCisgICAgZGVyIHp3YXIgdGVjaG5pc2NoIGVpbiBhbmRlcmVyIFJhdW0gaXN0LCBhYmVyIGtlaW4gYW5kZXJlciBPcnQuIEluCisgICAgZGllc2VtIEZhbGwgdW50ZXJibGVpYnQgZGllc2UgTmFjaHJpY2h0LgorICAgIHJvb20uaW5mbyB7ICJpZCI6ICJkNDFkOGNkOThmMDBiMjA0ZTk4MDA5OThlY2Y4NDI3ZSIsCisgICAgICAgICAgICAgICAgInNob3J0IjogIkRpZSBiZXJ1ZWhtdGUgQWJlbnRldXJlcmdpbGRlIiwKKyAgICAgICAgICAgICAgICAiZG9tYWluIjogIkViZW5lIiwKKyAgICAgICAgICAgICAgICBleGl0czogWyAibm9yZGVuIiwgIm9iZW4iIF0gfQorCisKKzIuIFZlcmdsZWljaCBtaXQgR01DUCBpbiBBYXJkd29sZiB1bmQgSVJFIE11ZHMKKyAgIEltIE1vcmdlbmdyYXVlbiB3aXJkIEdNQ1AgbGV0enRlbmRsaWNoIG51ciBhbHMgU3BlemlmaWthdGlvbiBkZXMgVHJhbnNwb3J0CisgICBMYXllcnMgYmV0cmFjaHRldCwgZGEgYmVpIGRlbiBNb2R1bGVuIGplZGVzIE11ZCBzZWluZSBlaWdlbmUgRGVmaW5pdGlvbiBkZXIKKyAgIHVlYmVydHJhZ2VuZW4gRGF0ZW4gdW5kIGlocmVyIEJlZGV1dHVuZyB2b3JuaW1tdC4KKworICAgRGFzIE1vZHVsICJDaGFyIiBpc3QgYXVzIGRlbiBJUkUtTXVkcywgd2VsY2hlcyBudXIgZXhpc3RpZXJ0LCB3ZWlsIGVpbmlnZQorICAgQ2xpZW50cyBlcyBzdGFuZGFyZG1hZXNzaWcgc2Nob25tYWwgZWluc2NoYWx0ZW4uIEVzIHNlbmRldCBhYmVyIG51ciBlaW5lbgorICAgTWluaW1hbHNhdHogYW4gRGF0ZW4uCisgICBEYXMgTW9kdWwgImNoYXIiIGlzdCBhdXMgQWFyZHdvbGYsIHdlbGNoZXMgbnVyIGV4aXN0aWVydCwgd2VpbCBlaW5pZ2UKKyAgIENsaWVudHMgZXMgc3RhbmRhcmRtYWVzc2lnIHNjaG9ubWFsIGVpbnNjaGFsdGVuLiBFcyBzZW5kZXQgYWJlciBudXIgZWluZW4KKyAgIE1pbmltYWxzYXR6IGFuIERhdGVuLgorCisgICBEZW0gTW9kdWwgTUcuY2hhciBzb2xsdGUgaW1tZXIgZGVyIFZvcnp1ZyB2b3IgIkNoYXIiIG9kZXIgImNoYXIiIGdlZ2ViZW4KKyAgIHdlcmRlbiwgZGEgZG9ydCBkZXV0bGljaCBtZWhyIERhdGVuIHVlYmVydHJhZ2VuIHdlcmRlbi4KKworICAgRGFzIE1vZHVsICJSb29tIiBhdXMgSVJFIHdpcmQgbmljaHQgdW50ZXJzdHVldHp0LCB3ZWlsIHNlaW5lIERhdGVuIHZvbSBNRworICAgZ3JvZXNzdGVudGVpbHMgbmljaHQgaW4gZGVyIGdlZm9yZGVydGVuIEZvcm0gYmVyZWl0Z2VzdGVsbHQgd2VyZGVuIGtvZW5uZW4KKyAgICh6dW1pbmRlc3QgbmljaHQgb2huZSB1bmdlcmVjaHRmZXJ0aWd0ZW4gQXVmd2FuZCkuCisKKzMuIFRyYW5zcG9ydCBTcGVjaWZpY2F0aW9uCisgICBFaW5zdHdlaWxlbiBhbSBiZXN0ZW4gYXVmIGh0dHA6Ly93d3cuZ2FtbW9uLmNvbS5hdS9nbWNwIG5hY2hsZXNlbi4KKworICAgS29tbXQgaGllciB2aWVsbGVpY2h0IHNwYWV0ZXIgbm9jaCwgZWluc3R3ZWlsZW4gYW0gYmVzdGVuIGltIE5ldHoKKyAgIG5hY2hndWNrZW4uCisKKzQuIEltcGxlbWVudGF0aW9uc2RldGFpbHMKKyAgSW0gTUcgaXN0IEdyb3NzLS9LbGVpbnNjaHJlaWJ1bmcgZGVzIE1vZHVsbmFtZW5zIHdpY2h0aWcsIGltIEdlZ2Vuc2F0eiB6dW0KKyAgSVJFLiBNZWluZXMgV2lzc2VucyAoYml0dGUga29ycmlnaWVydCBtaWNoIGdnZi4pLCBtYWNodGUgZGllCisgIFRyYW5zcG9ydHNwZXppZmlrYXRpb24ga2VpbmUgQXVzc2FnZSBpbiBkaWVzZW0gUHVua3QsIHNvbmRlcm4gSVJFIGhhdCBkaWVzCisgIGVudHNjaGllZGVuLgorICBKZXR6dCBpc3QgZXMgc28sIGRhc3MgQWFyZHdvbGYgdGVpbHMgTW9kdWxlIG1pdCBkZW0gZ2xlaWNoZW4gTmFtZW4sIGFiZXIKKyAgYW5kZXJlciBGdW5rdGlvbiB3aWUgSVJFIGdlYmF1dCBoYXQuIEFsbGUgRG9rdSB2b24gQWFyZHdvbGYgc2NocmVpYnQgYWJlcgorICBpbW1lciB2b24ga2xlaW5nZXNjaHJpZWJlbmVuIE1vZHVsbmFtZW4uIEluc29mZXJuIGlzdCBkYXMgamV0enQgZWluIFZlcnN1Y2gsCisgIGRpZSBNb2R1bGUgdm9uIElSRS9BYXJkd29sZiBkb2NoIGlyZ25kZW5kd2llIGF1c2VpbmFuZGVyIHp1IGhhbHRlbi4KKworCis1LiBDbGllbnQtS3JhbQorNS4xLiBUaXBzIHVuZCBIaW53ZWlzcworICBNYW5jaGUgQ2xpZW50cyB6ZWlnZW4gZGllIGVtcGZhbmdlbmVuIEdNQ1AtRGF0ZW4gc3RhbmRhcmRtYWVzc2lnIGF1ZiBkZW0KKyAgQmlsZHNjaGlybSBhbi4KKyAgTm9ybWFsZXJ3ZWlzZSBzb3J0aWVyZW4gc2llIGRpZSBEYXRlbiAgYWJlciBpbiB2b24gU2NyaXB0ZW4gbnV0emJhcmUKKyAgVGFiZWxsZW4gZWluLCBzbyBkYXNzIGVzIGVudGZhZWxsdCwgaXJnZW5kZWluZW4gVGV4dCB6dSBwYXJzZW4uCisgIEluIGRlciBSZWdlbCBpc3QgZXMgZGFubiBhdWNoIHNvLCBkYXNzIGRlciBDbGllbnQgTW9lZ2xpY2hrZWl0ZW4gYW5iaWV0ZXQsCisgIGF1ZiBkZW4gRW1wZmFuZyB2b24gR01DUC1EYXRlbiByZWFnaWVyZW4genUga29lbm5lbiAoei5CLiBuZW4gU2NyaXB0CisgIGF1ZnJ1ZmVuIHp1IGxhc3NlbikuCisKKzUuMi4gQ2xpZW50cyBtaXQgR01DUC1NRy1TdXBwb3J0CisKKzUuMy4gQ2xpZW50cyBtaXQgR01DUC1TdXBwb3J0IChUcmFuc3BvcnQgU3BlYykKKyAgKiBNdWRsZXQgKGh0dHA6Ly9mb3J1bXMubXVkbGV0Lm9yZy92aWV3dG9waWMucGhwP2Y9NyZ0PTE1NDcpCisgICAgSW0gTmV0eiBzaW5kIGRpdi4gd2VpdGVyZSBRdWVsbGVuIHVuZCBUdXRvcmlhbCB6dSBmaW5kZW4uCisgICogVGludGluKysgKGh0dHA6Ly90aW50aW4uc291cmNlZm9yZ2UubmV0L2JvYXJkL3ZpZXd0b3BpYy5waHA/cD00NjUxKQorICAqIFRGIDUgKGh0dHA6Ly9taWtlcmlkZS5jaGFvc25ldC5vcmcvYWJlbGluYy9zY3JpcHRzL3RlbG9wdC5odG1sKQorICAqIENNVUQgKGh0dHA6Ly9mb3J1bXMuenVnZ3NvZnQuY29tL2ZvcnVtcy92aWV3dG9waWMucGhwP3A9MTU4NDU1IzE1ODQ1NSkKKyAgKiBNdXNoY2xpZW50IChodHRwOi8vd3d3LmFhcmR3b2xmLmNvbS93aWtpL2luZGV4LnBocC9DbGllbnRzL011c2hjbGllbnRHTUNQKQorCisKKzYuIEFuZ2VkYWNodGUgTW9kdWxlIGZ1ZXIgZGllIFp1a3VuZnQKK09iIHVuZCB3YW5uIGV0d2FzIGF1cyBkaWVzZW0gQmVyZWljaCBrb21tdCwgaXN0IHZvZWxsaWcgb2ZmZW4uIEhhZW5ndCBhdWNoIHZvbQorSW50ZXJlc3NlIGRlciBTcGllbGVyc2NoYWZ0IGFiLgorCis2LjMuIENoYXIuSXRlbXMgKElSRSkKKyAgRWlnZW50bGljaCBlaGVyIHdlbmlnZXIgZ2VwbGFudC4uLgorCitMRVRaVEUgQWVOREVSVU5HOgorMDkuMDEuMjAxNiwgWmVzc3RyYQorCmRpZmYgLS1naXQgYS9kb2MvaGVscC9hYmVudGV1ZXIgYi9kb2MvaGVscC9hYmVudGV1ZXIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMzAyOWRiNAotLS0gL2Rldi9udWxsCisrKyBiL2RvYy9oZWxwL2FiZW50ZXVlcgpAQCAtMCwwICsxLDQxIEBACisKK0FiZW50ZXVlcgorPT09PT09PT09CisKKyAgICBVbSBpbSBNb3JnZW5HcmF1ZW4genUgZXR3YXMgenUga29tbWVuLCBtdXNzIG1hbiBBYmVudGV1ZXIgKGluCisgICAgZW5nbGlzY2hzcHJhY2hpZ2VuIE1VRHMgYWxzICdRdWVzdHMnIGJla2FubnQpIGxvZXNlbi4gRnVlciBiZXN0YW5kZW5lCisgICAgQWJlbnRldWVyIGJla29tbXQgbWFuIEFiZW50ZXVlcnB1bmt0ZS4gTnVyIHdlciBnZW51ZyBBYmVudGV1ZXJwdW5rdGUKKyAgICBiZWtvbW1lbiBoYXQsIGthbm4gTWFnaWVyIG9kZXIgU2VoZXIgd2VyZGVuLiBKZSBrb21wbGl6aWVydGVyIGVpbgorICAgIEFiZW50ZXVlciB6dSBsb2VzZW4gaXN0LCBkZXN0byBtZWhyIEFiZW50ZXVlcnB1bmt0ZSBiZWtvbW10IG1hbiBiZWltCisgICAgQmVzdGVoZW4uCisKKyAgICBFaW5pZ2UgQWJlbnRldWVyIHNpbmQgbmljaHQgbnVyIHNjaHdlciwgc29uZGVybiBhdWNoIGdlZmFlaHJsaWNoLiBEaWVzZQorICAgIHNvbGx0ZW4gbnVyIHZvbiBTcGllbGVybiBhdWYgZWluZXIgaG9oZW4gU3R1ZmUgaW4gQW5ncmlmZiBnZW5vbW1lbiB3ZXJkZW4uCisKKyAgICBFaW5lIExpc3RlIGFsbGVyIHZvcmhhbmRlbmVuIEFiZW50ZXVlciBrYW5uIG1hbiBpbiBkZW4gR2lsZGVuIG1pdCBkZW0KKyAgICBCZWZlaGwgJ2xpc3RlJyBiZWtvbW1lbi4gRG9ydCB3ZXJkZW4gYXVjaCBkaWUgUHVua3RlIGZ1ZXIgZGFzIEFiZW50ZXVlcgorICAgIGFuZ2V6ZWlndC4gRGllIEFiZW50ZXVlciBzaW5kIGluIGRlciBMaXN0ZSBpbiBldHdhIG5hY2ggZGVyCisgICAgR2VmYWVocmxpY2hrZWl0IHNvcnRpZXJ0LiBEaWUgU3R1ZmUsIGRpZSBkb3J0IGFuZ2VnZWJlbiBpc3QsIGJlemllaHQgc2ljaAorICAgIG5pY2h0IGFsbGVpbiBhdWYgZGllIFNwaWVsZXJzdHVmZSwgc29uZGVybiBrYW5uIGF1Y2ggYWxzIEhpbndlaXMgYXVmIGRpZQorICAgIGR1cmNoc2Nobml0dGxpY2hlbiBBdHRyaWJ1dGUgdmVyc3RhbmRlbiB3ZXJkZW4sIGRpZSBtYW4genVtIExvZXNlbiBkZXMKKyAgICBBYmVudGV1ZXJzIGF1ZndlaXNlbiBzb2xsdGUuCisKKyAgICBJbiBkZXIgSG9jaGViZW5lIGlzdCBlaW4gYWx0ZXIgV2FuZGVyZXIgenUgZmluZGVuLCBkZXIgZWluZW0gc2FnZW4ga2FubiwKKyAgICB3b3JpbiBkaWUgQXVmZ2FiZSBiZWkgZGVuIEFiZW50ZXVlcm4gYmVzdGVodC4gRXIgc2FndCAod2lyZCBlaW5tYWwgc2FnZW4pLAorICAgIG9iIGRhcyBBYmVudGV1ZXIgbmljaHQgenUgZ2VmYWVocmxpY2ggZnVlciBkZW4gU3BpZWxlciBpc3QuCisKKyBURUNITklTQ0hFUiBISU5XRUlTOgorICAgIFdlbm4gbWFuIGVpbiBBYmVudGV1ZXIgZHVyY2hzcGllbHQsIHNvbGx0ZSBtYW4gbmljaHQgZWluc2NobGFmZW4gKHNlaW5lCisgICAgVmVyYmluZHVuZyB6dW0gTW9yZ2VuR3JhdWVuIGthcHBlbiksIGRhIG5pY2h0IGdhcmFudGllcnQgd2VyZGVuIGthbm4sIGRhc3MKKyAgICBkYXMgQWJlbnRldWVyIGF1Y2ggbmFjaCBkZW0gV2llZGVyZXJ3YWNoZW4gbm9jaCB3ZWl0ZXJnZXNwaWVsdCB3ZXJkZW4KKyAgICBrYW5uLgorCisgICAgTWFuY2htYWwgaXN0IGVpbiBHZWdlbnN0YW5kL1F1ZXN0LU5QQyBnZXJhZGUgbmljaHQgZGEsIHpCIHdlaWwgZWluCisgICAgTWl0c3BpZWxlciBkaWUgUXVlc3QgZ2Vsb2VzdCBvZGVyIGRlbiBOUEMgZ2V0b2V0ZXQgaGF0LiBEYW5uIG11c3N0IGR1CisgICAgYmlzIHp1bSBuYWVjaHN0ZW4gUmVzZXQgd2FydGVuLgorCisgU0lFSEUgQVVDSDoKKyAgICBhYmVudGV1ZXJsaXN0ZSwgc3R1ZmVuLCBzdHVmZW5wdW5rdGUsIHNjaGxhZmUsIGthbXBmLCByZXNldAorCisxLjExLjIwMTIsIFplc3N0cmEKKwpkaWZmIC0tZ2l0IGEvZG9jL2hlbHAvYWJlbnRldWVybGlzdGUgYi9kb2MvaGVscC9hYmVudGV1ZXJsaXN0ZQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi43YWMyZmZlCi0tLSAvZGV2L251bGwKKysrIGIvZG9jL2hlbHAvYWJlbnRldWVybGlzdGUKQEAgLTAsMCArMSwzNCBAQAorQWJlbnRldWVybGlzdGUKKz09PT09PT09PT09PT09CisKKyBEaWUgTGlzdGUgZGVyIHNwaWVsYmFyZW4gQWJlbnRldWVyIGhhZW5ndCBpbiBqZWRlciBHaWxkZSBpbSBNb3JnZW5HcmF1ZW4gYXVzLgorIFNpZSBpc3QgbWl0IGRlbSBLb21tYW5kbyAibGlzdGUiIGFicnVmYmFyLgorCisgRGllIGluIGRlciBMaXN0ZSB2ZXJ3ZW5kZXRlbiBBYmt1ZXJ6dW5nZW4gd2VyZGVuIGltIEZvbGdlbmRlbiBlcmxhZXV0ZXJ0OgorIAorIEFQICAgICAgID0gRnVlciBkaWUgUXVlc3QgdmVyZ2ViZW5lIEFiZW50ZXVlcnB1bmt0ZQorIEtsYXNzZSAgID0gU3ViamVrdGl2ZSBFaW5zdHVmdW5nIGlubmVyaGFsYiBkZXIgR3J1cHBlIGJ6Z2wuIEFyYmVpdHNhdWZ3YW5kLAorICAgICAgICAgICAgRGF1ZXIgb2RlciBHZWZhaHJlbgorIEF0dHJpYnV0ID0gS2VpbmVzICAgIC0+IEtlaW5lIGJlc29uZGVyZW4gQ2hhcmFrdGVyaXN0aWthCisgICAgICAgICAgICBGbGVpc3NpZyAgLT4gVm9ybmVobWxpY2ggU2FtbWVsbiwgQXVmZmluZGVuIHZvbiBJdGVtcyBvZGVyIHZvbgorICAgICAgICAgICAgICAgICAgICAgICAgIEluZm9ybWF0aW9uZW4KKyAgICAgICAgICAgIEhlcm9pc2NoICAtPiBIZWxkZW50YXQsIGRpZSBNdXQsIEthbXBmYmVyZWl0c2NoYWZ0IHVuZCBlaW5lCisgICAgICAgICAgICAgICAgICAgICAgICAgZ2V3aXNzZSBCZXJlaXRzY2hhZnQgenVtIEZvcnNjaGVuIGJyYXVjaHQKKyAgICAgICAgICAgIEVwaXNjaCAgICAtPiBHcm9zc2UgQW5mb3JkZXJ1bmdlbiBhbiBBdXNkYXVlciB1bmQgTXV0LCBncm9zc2VyCisgICAgICAgICAgICAgICAgICAgICAgICAgQXVmd2FuZCBmdWVyIGRhcyBFcmZvcnNjaGVuIGRlciBMb2VzdW5nLCBLYWVtcGZlCisgICAgICAgICAgICAgICAgICAgICAgICAgbWl0dGxlcmVyIEhhZXJ0ZQorICAgICAgICAgICAgTGVnZW5kYWVyIC0+IEJhcmRlbiBwcmVpc2VuIGRpZSBFaW5zYXR6YmVyZWl0c2NoYWZ0IGRlciBIZWxkZW4sCisgICAgICAgICAgICAgICAgICAgICAgICAgcmVjaHQgZ3Jvc3NlIEdlZmFociBmdWVyIExlaWIgdW5kIExlYmVuLCBtaXR1bnRlcgorICAgICAgICAgICAgICAgICAgICAgICAgIGxhbmdlIFF1ZXN0emVpdAorIFN0dWZlICAgID0gVm9yIGRlbSAvIHN0ZWh0IGRpZSBlbXBmb2hsZW5lIFN0dWZlIGZ1ZXIgZGllIFF1ZXN0LiBEaWVzZSBpc3QgCisgICAgICAgICAgICBrZWluZSBWb3JhdXNzZXR6dW5nLCBhdXNzZXIgYmVpIFNlaGVycXVlc3RzLCBkaWUgdGVpbHdlaXNlIGRlbgorICAgICAgICAgICAgU3RhdHVzIHZvcmF1c3NldHplbi4KKyAgICAgICAgICAgIE5hY2ggZGVtIC8gc3RlaGVuIGRpZSBEdXJjaHNjaG5pdHRzc3R1ZmVuIGRlciBsb2VzZW5kZW4gU3BpZWxlci4KKyBBdXRvciAgICA9IE1hZ2llciwgZGVyIGRpZSBRdWVzdCBnZXNjaHJpZWJlbiBoYXQKKworCisgU0lFSEUgQVVDSDoKKyAgICBhYmVudGV1ZXIsIHN0dWZlbiwgc3R1ZmVucHVua3RlLCBzY2hsYWZlLCBrYW1wZiwgcmVzZXQKKworMjYuMDUuMjAxNiwgWmVzc3RyYQorCmRpZmYgLS1naXQgYS9kb2MvaGVscC9hYmVudGV1cmVyIGIvZG9jL2hlbHAvYWJlbnRldXJlcgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5lMjIzODYxCi0tLSAvZGV2L251bGwKKysrIGIvZG9jL2hlbHAvYWJlbnRldXJlcgpAQCAtMCwwICsxLDM1IEBACisKK0RpZSBBYmVudGV1cmVyZ2lsZGUKKy0tLS0tLS0tLS0tLS0tLS0tLS0KKworICAgIERpZSBtZWlzdGVuIG5ldWVuIFNwaWVsZXIgc2luZCBhdXRvbWF0aXNjaCBNaXRnbGllZCBkZXIgQWJlbnRldXJlcmdpbGRlLgorICAgIERpZSBHaWxkZSBiZWhlcmJlcmd0IGFsbGUgU3BpZWxlciwgZGllIGtlaW5lciBhbmRlcmVuIEdpbGRlIGFuZ2Vob2VyZW4sCisgICAgc2VpIGVzIGR1cmNoIEdlYnVydCBvZGVyIGZyZWl3aWxsaWdlbiBXZWNoc2VsLgorCisgICAgRGFzIEdpbGRlbmhhdXMgYmVmaW5kZXQgc2ljaCBpbiBkZXIgU3RhZHQgUG9ydCBWYWluLiBEb3J0IGlzdCBlaWdlbnRsaWNoCisgICAgaW1tZXIgZXR3YXMgbG9zLgorCisgICAgRGllIEFiZW50ZXVyZXJnaWxkZSBzdGVsbHQgZWluIHBhYXIgWmF1YmVyc3BydWVjaGUgenVyIFZlcmZ1ZWd1bmcsIGlzdAorICAgIGFiZXIgbmljaHQgdW5iZWRpbmd0IGRpZSBzdGFlcmtzdGUgR2lsZGUuIFNpZSBpc3QgZWhlciBkYWZ1ZXIgZ2VkYWNodCwKKyAgICBkYXNzIG1hbiBzaWNoIGFscyBBYmVudGV1cmVyIGluIGRpZSBXZWx0IGRlcyBNb3JnZW5HcmF1ZW4gZWluc3BpZWxlbiBrYW5uCisgICAgdW5kIHNpY2ggZWluZW4gVWViZXJibGljayB2ZXJzY2hhZmZ0LCBiZXZvciBtYW4gc2ljaCBmdWVyIGVpbmUgS2FycmllcmUgaW4KKyAgICBlaW5lciBkZXIgYW5kZXJlbiBHaWxkZW4gZW50c2NobGllc3N0LgorCisgICAgRXMgZ2lidCBqZWRvY2ggYXVjaCB2ZXJ3ZWdlbmUgU3BpZWxlciwgZGllIGVzIGFscyBBYmVudGV1cmVyIHp1IGdyb3NzZW0KKyAgICBSdWhtIGdlYnJhY2h0IGhhYmVuLgorCisgU0lFSEUgQVVDSDoKKyAgICBnaWxkZW4sCisgICAgc3RlaW5zY2hsYWcgKDVQL1MxKSwgaWRlbnRpZml6aWVyZSAoMTBQL1MzKSwgbGljaHQgKDVQL1M2KSwKKyAgICBzY2hhZXR6ICgzUC9TOCksIHBmZWlsICgxMFAvUzEwKSwgYXVzd2VpY2hlbiAoMTBQL1MxMyksIAorICAgIGthbXBmc2NocmVpICgzMFAvUzE2KSwgZmV1ZXJiYWxsICgyMFAvUzE4KSwgc2NobmVsbCAoMTAwUC9TMjEpLCAKKyAgICBzYWV1cmVzdHJhaGwgKDI1UC9TMjgpLgorCisgICAgRnVlciBkaWUgV2VydGUgaW4gS2xhbW1lcm4gZ2lsdDogUD1NYWdpZWtvc3RlbjsgUz1TdHVmZSB6dW0gRXJsZXJuZW4uCisKKyAgICAqSXN0IG1hbiBNaXRnbGllZCBlaW5lciBhbmRlcmVuIEdpbGRlLCBzbyBtdXNzIG1hbiBmdWVyIGRpZSBIaWxmZW4genUgZGVuCisgICAgU3BydWVjaGVuIGBoaWxmZSBnaWxkZSBhYmVudGV1cmVyIDxuYW1lPicgYmVudXR6ZW4hKgorCisgTEVUWlRFIEFlTkRFUlVORzoKKyAgICAwMy4xMS4yMDEyLCBaZXNzdHJhCisKZGlmZiAtLWdpdCBhL2RvYy9oZWxwL2FiZW50b2lyYSBiL2RvYy9oZWxwL2FiZW50b2lyYQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5kYmJhYzg2Ci0tLSAvZGV2L251bGwKKysrIGIvZG9jL2hlbHAvYWJlbnRvaXJhCkBAIC0wLDAgKzEsMzUgQEAKK0RpZSBBYmVudG9pcmFnaWxkZQorLS0tLS0tLS0tLS0tLS0tLS0tLQorCisgICAgQWxzIGtsZWluZXIsIGZyaXNjaCBlcnNjaGFmZmVuZXIgR29ibGluIGlzdCBtYW4gYXV0b21hdGlzY2ggTWl0Z2xpZWQgZGVyCisgICAgQWJlbnRvaXJhZ2lsZGUuIERpZXNlIGlzdCBkaWUgR29ibGluLVp3ZWlnc3RlbGxlIGRlciBiZWthbm50ZW4KKyAgICBBYmVudGV1cmVyZ2lsZGUuCisKKyAgICBEYXMgSGF1cHQtR2lsZGVuaGF1cyBiZWZpbmRldCBzaWNoIGluIGRlciBTdGFkdCBQb3J0IFZhaW4uIE51ciBkb3J0IHNpbmQKKyAgICBHaWxkZW5laW4tIHVuZCAtYXVzdHJpdHQgbW9lZ2xpY2gsIGF1Y2gga2FubiBtYW4gbnVyIGRvcnQgbmV1ZQorICAgIFphdWJlcnNwcnVlY2hlIGxlcm5lbi4gU2VpbmUgU3R1ZmUga2FubiBtYW4gaW4gamVkZW0gR2lsZGVuaGF1cyBlcmhvZWhlbiwKKyAgICBqZWRvY2ggd2VyZGVuIGVpbmVtIEdvYmxpbiBudXIgaW4gZGVyIFp3ZWlnc3RlbGxlIGltIEdvYmxpbmRvcmYgYmVpbQorICAgIEF1ZnN0aWVnIHNlaW5lIGJlc29uZGVyZW4gQWJlbnRvaXJhLVRpdGVsIHZlcmxpZWhlbiEKKworICAgIERpZSBBYmVudGV1cmVyZ2lsZGUgc3RlbGx0IGVpbiBwYWFyIFphdWJlcnNwcnVlY2hlIHp1ciBWZXJmdWVndW5nLCBpc3QKKyAgICBhYmVyIG5pY2h0IHVuYmVkaW5ndCBkaWUgc3RhZXJrc3RlIEdpbGRlLiBTaWUgaXN0IGVoZXIgZGFmdWVyIGdlZGFjaHQsCisgICAgZGFzcyBtYW4gc2ljaCBhbHMgQWJlbnRldXJlciBpbiBkaWUgV2VsdCBkZXMgTW9yZ2VuR3JhdWVuIGVpbnNwaWVsZW4ga2FubgorICAgIHVuZCBzaWNoIGVpbmVuIFVlYmVyYmxpY2sgdmVyc2NoYWZmdCwgYmV2b3IgbWFuIHNpY2ggZnVlciBlaW5lIEthcnJpZXJlCisgICAgaW4gZWluZXIgZGVyIGFuZGVyZW4gR2lsZGVuIGVudHNjaGxpZXNzdC4KKworICAgIEVzIGdpYnQgamVkb2NoIGF1Y2ggdmVyd2VnZW5lIFNwaWVsZXIsIGRpZSBlcyBhbHMgQWJlbnRldXJlciB6dSBncm9zc2VtCisgICAgUnVobSBnZWJyYWNodCBoYWJlbi4KKworIFNJRUhFIEFVQ0g6CisgICAgZ2lsZGVuLAorICAgIGxpY2h0ICg1UC9TNCksIGlkZW50aWZpemllcmUgKDEwUC9TOCksIHNjaGFldHogKDNQL1MxMCksIHBmZWlsICgxMFAvUzExKSwKKyAgICBhdXN3ZWljaGVuICgxMFAvUzEyKSwga2FtcGZzY2hyZWkgKDMwUC9TMTMpLCBmZXVlcmJhbGwgKDIwUC9TMTUpLAorICAgIHNjaG5lbGwgKDEwMFAvUzE3KSwgc2FldXJlc3RyYWhsICgyNVAvUzMwKS4KKworICAgIEZ1ZXIgZGllIFdlcnRlIGluIEtsYW1tZXJuIGdpbHQ6IFA9TWFnaWVrb3N0ZW47IFM9U3R1ZmUgenVtIEVybGVybmVuLgorCisgICAgKklzdCBtYW4gTWl0Z2xpZWQgZWluZXIgYW5kZXJlbiBHaWxkZSwgc28gbXVzcyBtYW4gZnVlciBkaWUgSGlsZmVuIHp1IGRlbgorICAgIFNwcnVlY2hlbiBgaGlsZmUgZ2lsZGUgYWJlbnRldXJlciA8bmFtZT4nIGJlbnV0emVuISoKKworIExFVFpURSBBZU5ERVJVTkc6CisgICAgMS5KYW4gMjAwOCBLZXNzYQpkaWZmIC0tZ2l0IGEvZG9jL2hlbHAvYWJrIGIvZG9jL2hlbHAvYWJrCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmVhOWM5MzgKLS0tIC9kZXYvbnVsbAorKysgYi9kb2MvaGVscC9hYmsKQEAgLTAsMCArMSw3MiBAQAorSGFldWZpZyBiZW51dHp0ZSBBYmt1ZXJ6dW5nZW4KKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKKyAgICAgMTEgICAgICAgRWxmCisgICAgIDExMiAgICAgIEZldWVyd2VocgorICAgICBBZFQgICAgICBBdWdlIGRlcyBUZXVmZWxzIChRdWVzdCkKKyAgICAgQUZSICAgICAgQW50aS1GZXVlci1SaW5nCisgICAgIEFQICAgICAgIEFiZW50ZXVlcnB1bmt0ZQorICAgICBBRkFJSyAgICBBcyBmYXIgYXMgaSBrbm93IChzb3dlaXQgaWNoIHdlaXNzKQorICAgICBBS1VFRkkgICBBYmt1ZXJ6dW5nc2ZpbW1lbAorICAgICBBdXIgICAgICBBdXJvcmEKKyAgICAgQVUgICAgICAgQXVzZGF1ZXIKKyAgICAgQlNTICAgICAgQmx1dHNhdWdlci1TY2h3ZXJ0CisgICAgIEM0ICAgICAgIFplcGh5cgorICAgICBDSyAgICAgICBDaGFvc2tuZWlwZQorICAgICBEMTEgICAgICBEdW5rZWxlbGYKKyAgICAgREQgICAgICAgRGFlbW9uZW5kaW1lbnNpb24KKyAgICAgREUoTEYpICAgRHVua2VsZWxmCisgICAgIERHICAgICAgIERyYWNoZW5nb3R0CisgICAgIEVFICAgICAgIEVsZW1lbnRhcmViZW5lbgorICAgICBFSyAgICAgICBFcnN0a2lsbAorICAgICBFS1NQICAgICBFcnN0a2lsbC1TdHVmZW5wdW5rdGUKKyAgICAgRVAgICAgICAgRXJmYWhydW5nc3B1bmt0KGUpCisgICAgIEZhbXUgICAgIEZldWVyLUFtdWxldHQKKyAgICAgRkUgICAgICAgRmV1ZXJlYmVuZQorICAgICBGbGFwYSAgICBGbGFtbWVucGFuemVyCisgICAgIEYmRSAgICAgIEZvcnNjaHVuZ3MtIHVuZCBFbnR3aWNrbHVuZ3NhYnRlaWx1bmcKKyAgICAgRkkgICAgICAgRmV1ZXJpbnNlbAorICAgICBGaWRLRyAgICBGcmF1ZW4gaW4gZGllIEtsZXJpa2VyZ2lsZGUgKGMpIEx1ZworICAgICBGaVJaRyAgICBGZWhsZXIgaW0gUmF1bS1aZWl0LUdlZnVlZ2UKKyAgICAgRksgICAgICAgRnJpZWRob2Zza25laXBlCisgICAgIEZMICAgICAgIEZsdWNodHJpY2h0dW5nCisgICAgIEZMVyAgICAgIEZhbW91cyBsYXN0IHdvcmRzCisgICAgIEZQICAgICAgIEZvcnNjaGVycHVua3RlCisgICAgIEZSICAgICAgIEZsdWNodHJpY2h0dW5nCisgICAgIEdFICAgICAgIEdlc2NoaWNrbGljaGtlaXQKKyAgICAgR0wgICAgICAgR2lsZGVubGV2ZWwKKyAgICAgR1EgICAgICAgR2lsZGVucXVlc3QKKyAgICAgSEUgICAgICAgSG9jaGViZW5lCisgICAgIElOICAgICAgIEludGVsbGlnZW56CisgICAgIElNSE8gICAgIEluIG15IGh1bWJsZSBvcGluaW9uIChtZWluZXIgYmVzY2hlaWRlbmVuIE1laW51bmcgbmFjaCkKKyAgICAgSUlSQyAgICAgSWYgSSByZW1lbWJlciBjb3JyZWN0bHkgKHdlbm4gaWNoIG1pY2ggcmVjaHQgZXJpbm5lcmUpCisgICAgIEtMICAgICAgIEtvbXBsZXR0bG9lc3VuZworICAgICBLUCAgICAgICBLb256ZW50cmF0aW9uc3B1bmt0ZQorICAgICBLUiAgICAgICBLcmFmdAorICAgICBMUCAgICAgICBMZWJlbnNwdW5rdGUKKyAgICAgTE9MICAgICAgTGF1Z2hpbmcgb3V0IExvdWQgKGxhdXQgbGFjaGVuKQorICAgICBNRyAgICAgICBNb3JnZW5HcmF1ZW4gOi0pCisgICAgIE1RICAgICAgIE1pbmlRdWVzdAorICAgICBOTkFEVyAgICBOaWNodHMgTmV1ZXMgYXVmIGRlciBXZWx0CisgICAgIG5GRSAgICAgIE5ldWUgRmV1ZXJlYmVuZQorICAgICBQQSogICAgICBCb2VzZSBNYWdpZXI6IFBhcmFjZWxzdXMsIFBhZHJlaWMsIFtQYXRyeW5dCisgICAgIFBLICAgICAgIFBsYXllcmtpbGwKKyAgICAgUFYgICAgICAgUG9ydCBWYWluCisgICAgIFBBUkEgICAgIFBhcmFsbGVsd2VsdAorICAgICBQVyAgICAgICBQYXJhbGxlbHdlbHQKKyAgICAgUkwgICAgICAgUmVhbCBMaWZlCisgICAgIFJPVEZMICAgIFJvbGxpbmcgb24gdGhlIEZsb29yLCBsYXVnaGluZyAoc2ljaCBrcmluZ2VsbiB2b3IgTGFjaGVuKQorICAgICBTTCAgICAgICBTcGllbGVybGV2ZWwKKyAgICAgU01TICAgICAgU2Nod2VydG1laXN0ZXJzY2h3ZXJ0IChtYW5jaG1hbCBhdWNoIFNwZWVyTWVpc3RlclNwZWVyKQorICAgICBTUCAgICAgICBTdHVmZW5wdW5rdGUKKyAgICAgU1BNU1AgICAgU3BlZXJtZWlzdGVyc3BlZXIKKyAgICAgU1NQICAgICAgU2NocmVja2Vuc3NwaXR6ZQorICAgICBTdHVwc2UgICBTdHVmZW5wdW5rdGUKKyAgICAgdGFiICAgICAgdGVhbSBhbmdyaWZmc2JlZmVobAorICAgICBUSSAgICAgICBUb2V0ZXIncyBJbnNlbCAoQWtoYXIgTnRoJ3RhcikKKyAgICAgVXZTZEVSICAgVW5nZWhldWVyIHZvbSBTZWUgZGVzIGV3aWdlbiBSZWdlbnMKKyAgICAgVkwgICAgICAgVmlydHVhbCBMaWZlIG9kZXIgVmVybG9yZW5lcyBMYW5kCisgICAgIFZTICAgICAgIFZvbGxzdHJlY2tlciBvZGVyIFZvcnNpY2h0CisgICAgIFdVVyAgICAgIFdhc3NlcnVud2VzZW4KKyAgICAgV1dJICAgICAgV2Vyd29sZmluc2VsCisgICAgIFdXVyAgICAgIFdhbGQgZGVyIFdvbm5ld2ljaHRlClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZG9jL2hlbHAvYWx0Z2lsZGVuIGIvZG9jL2hlbHAvYWx0Z2lsZGVuCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjY3N2FjOTIKLS0tIC9kZXYvbnVsbAorKysgYi9kb2MvaGVscC9hbHRnaWxkZW4KQEAgLTAsMCArMSwyOSBAQAorCitFaGVtYWxzIGdlcGxhbnRlIEdpbGRlbgorPT09PT09PT09PT09PT09PT09PT09PT0KKworICAgRm9sZ2VuZGUgR2lsZGVuIHdhcmVuIGVpbm1hbCBhbmdlZGFjaHQsIG1pdCBlaW5lciBGZXJ0aWdzdGVsbHVuZyBkdXJjaCBkaWUKKyAgIGRhbWFsaWdlbiBNYWdpZXIgaXN0IGFiZXIgbmljaHQgbWVociB6dSByZWNobmVuLgorCisgICBEaWVzZSBMaXN0ZSBtYWcgYWxzIEluc3BpcmF0aW9uIGRpZW5lbiwgd2VubiBqZW1hbmQgZWluZSBHaWxkZSBiYXVlbiAKKyAgIG1vZWNodGUsIGFiZXIgbmljaHQgd2Vpc3MsIHdlbGNoZS4gT2IgZXMgbm9jaCBUZWlsZSBkYXZvbiBnaWJ0LCBpc3QgCisgICB2b24gR2lsZGUgenUgR2lsZGUgdm9lbGxpZyB2ZXJzY2hpZWRlbi4KKworICAgICAqIEhleGVuIChUd2luZ2kpCisgICAgICogRWlza3JpZWdlciAoVGlsbHkpCisgICAgICogUGlyYXRlbiAoQXN0YXIpCisgICAgICogRHJ1aWRlbiAoQmVybmFyZCkKKyAgICAgKiBBc3Nhc3NpbmVuIChDYXR3ZWF6bGUpCisgICAgICogU2Nod2VydHRhZW56ZXIgKERhbmNlcikKKyAgICAgKiBOaW5qYSAoTW9yZ290aCkKKyAgICAgKiBFbGVtZW50YXJlIChNb3Jnb3RoKQorICAgICAqIEhhcmxla2luZSAoUHVtYSkKKyAgICAgKiBUb2Rlc2FuYmV0ZXIgKFZyYWkpCisgICAgICogVGhhdW1hdHVyZ2VuIChZb3J1LCBQYXJhY2Vsc3VzKQorICAgICAqIElkaW90ZW4gKE11YWRpYiwgQm9pbmcpCisgICAgICogUGFsYWRpbmUgKE5vbm5lKQorCisgU0lFSEUgQVVDSDoKKworIExFVFpURSBBZU5ERVJVTkc6IAorICAgIEZyZSwgMS4xMS4yMDEzLCB2b24gSHVtbmkgCmRpZmYgLS1naXQgYS9kb2MvaGVscC9hdHRyaWJ1dGUgYi9kb2MvaGVscC9hdHRyaWJ1dGUKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uN2M4M2VjMQotLS0gL2Rldi9udWxsCisrKyBiL2RvYy9oZWxwL2F0dHJpYnV0ZQpAQCAtMCwwICsxLDM1IEBACisKK0RpZSBBdHRyaWJ1dGUKKz09PT09PT09PT09PT0KKworICAgIEluIE1vcmdlbkdyYXVlbiBnaWJ0IGVzIGZ1ZXIgU3BpZWxlciA0IEF0dHJpYnV0ZTogKkludGVsbGlnZW56KiwgKktyYWZ0KiwKKyAgICAqR2VzY2hpY2tsaWNoa2VpdCogdW5kICpBdXNkYXVlciouIEplIGhvZWhlciBkZXIgV2VydCBkaWVzZXIgQXR0cmlidXRlCisgICAgaXN0LCBkZXN0byBiZXNzZXIgaXN0IGVzIG5hdHVlcmxpY2ggZnVlciBkZW4gU3BpZWxlci4gRGllIEF0dHJpYnV0ZSB3aXJrZW4KKyAgICBzaWNoIHouQi4gYXVmIGZvbGdlbmRlIEJlcmVpY2hlIGF1czoKKworICAgICBJbnRlbGxpZ2VuegorICAgICAgICBLb256ZW50cmF0aW9uLCBMZXJuZmFlaGlna2VpdGVuCisgICAgIEtyYWZ0CisgICAgICAgIEthbXBma3JhZnQsIFRyYWdlbiB2b24gR2VnZW5zdGFlbmRlbgorICAgICBHZXNjaGlja2xpY2hrZWl0CisgICAgICAgIEJlbnV0emVuIHZvbiBXYWZmZW4sIFNjaHV0eiB2b3IgU2NoYWRlbiBpbSBLYW1wZgorICAgICBBdXNkYXVlcgorICAgICAgICBHZXN1bmRoZWl0IChMZWJlbnNwdW5rdGUpCisKKyAgICBFcmhvZWh0IHdlcmRlbiBkaWUgQXR0cmlidXRlIGR1cmNoIFphdWJlcnRyYWVua2UsIGRpZSB1ZWJlcmFsbCBpbSBTcGllbAorICAgIHZlcnN0ZWNrdCBzaW5kLiBEaWUgWmF1YmVydHJhZW5rZSBzaW5kIHRlaWx3ZWlzZSByZWNodCBsZWljaHQgenUgZmluZGVuLAorICAgIHRlaWx3ZWlzZSBhYmVyIGF1Y2ggc2VociBzY2h3ZXIuIERhcyBPcmFrZWwgdm9uIFRpbmdhbiBnaWJ0IGFsbGVyZGluZ3MgenUKKyAgICBqZWRlbSBaYXViZXJ0cmFuayBlaW5lbiBIaW53ZWlzLgorCisgICAgRGllIGVpbnplbG5lbiBSYXNzZW4gaGFiZW4gZWluZW4gcmFzc2Vuc3BlemlmaXNjaGVuIEJvbnVzIGJlaSBkZW4KKyAgICBBdHRyaWJ1dGVuLCBkZXIgaW1tZXIgYmVzdGVoZW5ibGVpYnQuCisKKyAgICBXZW5uIG1hbiBuYWNoIGVpbmVtIFRvZCB3aWVkZXIgaW5zIExlYmVuIHp1cnVlY2trZWhydCwgc2luZCBkaWUgQXR0cmlidXRlCisgICAgdW0gZWluIGdld2lzc2VzIE1hc3MgaGVyYWJnZXNldHp0LiBTaWUgcmVnZW5lcmllcmVuIHNpY2ggYWJlciBpbSBMYXVmZSBkZXIKKyAgICBaZWl0IHZvbiBzZWxic3Qgd2llZGVyLgorCisgU0lFSEUgQVVDSDoKKyAgICBpbmZvLCB6YXViZXJ0cmFlbmtlLCBsZWJlbnNwdW5rdGUKKworIExFVFpURSBBZU5ERVJVTkc6IDE3LjAxLjIwMDksIFplc3N0cmEKKwpkaWZmIC0tZ2l0IGEvZG9jL2hlbHAvYmFsYW5jZSBiL2RvYy9oZWxwL2JhbGFuY2UKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOTgzMmRjOAotLS0gL2Rldi9udWxsCisrKyBiL2RvYy9oZWxwL2JhbGFuY2UKQEAgLTAsMCArMSw1OCBAQAorQmFsYW5jZSBpbSBNb3JnZW5HcmF1ZW4KKz09PT09PT09PT09PT09PT09PT09PT09CisKK0VpbiBUaGVtYSB1ZWJlciBkYXMgaW1tZXIgd2llZGVyIGdlcm5lIGdlc3RyaXR0ZW4gd2lyZCwgaXN0IGRpZSBCYWxhbmNlCitpbSBNb3JnZW5HcmF1ZW4uIEF1ZiBkZXIgZWluZW4gU2VpdGUgc3RlaHQgZGVyIChhdWYgZGVuIGVyc3RlbiBCbGljayAKK3ZlcnN0YWVuZGxpY2hlKSBXdW5zY2ggZGVyIFNwaWVsZXIsIG1vZWdsaWNoc3QgbWFlY2h0aWcgenUgc2VpbiwgYXVmCitkZXIgYW5kZXJlbiBTZWl0ZSBzdGVodCBkZXIgV3Vuc2NoIGRlciBNYWdpZXJzZWl0ZSwgZGVuIFNwaWVsZXJuIG5vY2gKK0hlcmF1c2ZvcmRlcnVuZ2VuIHN0ZWxsZW4genUga29lbm5lbi4gV2VubiBTcGllbGVyIG51ciBub2NoIHphcHBlbmQKK2R1cmNoIGRpZSBHZWdlbmQgcmVubmVuLCBkYW5uIHdpcmQgZGFzIGF1Y2ggc2NobmVsbCBsYW5nd2VpbGlnIC4uLgorCisKK0VzIGdpYnQgdmllciAnSW5zdGl0dXRpb25lbicgZGVyIEJhbGFuY2U6CisKKzEpIEdpbGRlbi1CYWxhbmNlCisKK0hpZXJmdWVyIHp1c3RhZW5kaWcgaXN0IGVpbiBFcnptYWdpZXIgKG1vbWVudGFuIEh1bW5pKSwgCitkZXIgdmVyc3VjaHQsIGRpZSBHaWxkZW4gaW4gZWluZW0gZWluaWdlcm1hc3NlbiB2ZXJudWVuZnRpZ2VuIFJhaG1lbgorenUgaGFsdGVuLiBIaWVyYmVpIGJlcnVlY2tzaWNodGlndCB3ZXJkZW4gbmViZW4gZGVuIEZhZWhpZ2tlaXRlbiBhdWNoCitkZXIgQXVmd2FuZCB1bmQgZGFzIGFsbGdlbWVpbmUgR2lsZGVuLUZlZWxpbmcuCisKKzIpIE9iamVrdC1CYWxhbmNlCisKK0Z1ZXIgZGllIE9iamVrdC1CYWxhbmNlIGlzdCBlaW5lIEdydXBwZSB2b24gU3BpZWxlcm4gdW5kIE1hZ2llcm4genVzdGFlbmRpZworKGRhcyBzb2dlbmFubnRlIEJhbGFuY2UtVGVhbSkuIEJlaGFuZGVsdCB3ZXJkZW4gcHJha3Rpc2NoIGFsbGUgRGluZ2UsIGRpZQorZGVuIEthbXBmIGlyZ2VuZHdpZSBiZWVpbmZsdXNzZW4gKFdhZmZlbiwgUnVlc3R1bmdlbiwgbWFnaXNjaGUgT2JqZWt0ZSwgZXRjLikKK01vbWVudGFuIHNldHp0IHNpY2ggZGFzIEJhbGFuY2UtVGVhbSBhdXMgZm9sZ2VuZGVuIFBlcnNvbmVuIHp1c2FtbWVuOgorCisgIE1jRGVlLCBUYXNzcmFtLCBUYWxhbmlzLCBDcm9mdCwgWHV0ZWxpdXMsIFNveW5hZGEsIFpvb2sgCisgIHVuZCBIdW1uaSAoYWxzIHZlcmFudHdvcnRsaWNoZXIgRXJ6bWFnaWVyKS4KKworKiogb3V0IG9mIG9yZGVyOiAzKSBOUEMtQmFsYW5jZQorKioKKyoqIERpZSBOUEMtQmFsYW5jZSBzb2xsIGVpbiBBbnNwcmVjaHBhcnRuZXIgZnVlciBTcGllbGVyIHNlaW4sIGRpZSBkZXIgQW5zaWNodAorKiogc2luZCwgZGFzcyBpcmdlbmRlaW4gTW9uc3RlciAoTlBDIC0gbm9uIHBsYXllciBjaGFyYWN0ZXIpIHp1IHN0YXJrLCB1bmZhaXIKKyoqIG9kZXIgc29uc3QgaXJnZW5kd2llIGRhbmViZW4gaXN0LiAKKyoqCisqKiBFaW5lIEluc3RpdHV0aW9uICJOUEMtQmFsYW5jZSIgZ2lidCBlcyBiaXMgYXVmIHdlaXRlcmVzIG5pY2h0IG1laHIuCisqKiBadXN0YWVuZGlnIGZ1ZXIgZGllIEVpbnRyYWd1bmcgdm9uIEVyc3RraWxsLVN0dXBzZW4gaXN0IEFyYXRob3JuLiBGdWVyCisqKiBCZXNjaHdlcmRlbiB1ZWJlciBNb25zdGVyLCBkaWUgenUgc3Rhcmsgb2RlciB6dSB1bmZhaXIgc2luZCwgc3RlaGVuCisqKiBkaWUgUmVnaW9uc21hZ2llciBvZGVyIFpvb2sgenVyIFZlcmZ1ZWd1bmcuCisKKzQpIEhlaWx1bmdzLUJhbGFuY2UKKworRGllIEhlaWx1bmdzLUJhbGFuY2UgZGVja3QgYWxsZXMgYWIsIHdhcyBpcmdlbmR3aWUgbWl0IEhlaWx1bmcgenUgdHVuCitoYXQuIEtvbmtyZXQgc2luZCBkYXMgS25laXBlbiwgSGVpbGVyIChhdWNoIEdpZnQsIEtyYW5raGVpdCwgZXRjLiksIGZlc3RlCitIZWlsc3RlbGxlbiwgdHJhZ2JhcmUgSGVpbHVuZyB1bmQgU2FjaGVuIGRpZSBTYWV0dGlndW5nIG9kZXIgQWxrb2hvbAorcnVudGVyc2V0emVuLiBNb21lbnRhbiB6dXN0YWVuZGlnIGZ1ZXIgZGllc2VzIEdlYmlldCBpc3QgSHVtbmkuCisKKworQWxsZSBJbnN0aXR1dGlvbmVuIGFyYmVpdGVuIGJlc3Nlciwgd2VubiBzaWUgc293b2hsIHZvbiBTcGllbGVybiBhbHMKK2F1Y2ggTWFnaWVybiB1bnRlcnN0dWV0enQgd2VyZGVuLiBTcGV6aWVsbCBkaWUgTlBDLUJhbGFuY2Uga29tbXQgaW4gZGVyCitSZWdlbCBOVVIgenVtIEVpbnNhdHosIHdlbm4gZWluIFNwaWVsZXIgZWluZW4gTWlzc3RhbmQgYW5zcHJpY2h0LiBBbHNvCitzcHJlY2h0IGRpZSBlbnRzcHJlY2hlbmRlbiBMZXV0ZSBhbiwgd2VubiBpaHIgaXJnZW5kd28gZWluIFByb2JsZW0gc2VodCEKKworLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgTEVUWlRFIEFFTkRFUlVORzoKKyAgICAxMy0wMS0yMDExLCBaZXNzdHJhCisgICAgCmRpZmYgLS1naXQgYS9kb2MvaGVscC9iZXdlZ3VuZyBiL2RvYy9oZWxwL2Jld2VndW5nCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjQzZTY4YTYKLS0tIC9kZXYvbnVsbAorKysgYi9kb2MvaGVscC9iZXdlZ3VuZwpAQCAtMCwwICsxLDI0IEBACisKK0Jld2VnZW4gaW0gTW9yZ2VuR3JhdWVuCis9PT09PT09PT09PT09PT09PT09PT09PQorCisgS09NTUFORE9TOgorICAgIHModWVkZW4pLCB3KGVzdGVuKSwgbihvcmRlbiksIG8oc3RlbiksIG9iKGVuKSwgdShudGVuKSwgbihvcmQpdyhlc3RlbiksCisgICAgLi4uCisKKyBBUkdVTUVOVEU6CisgICAga2VpbmUKKworIEJFU0NIUkVJQlVORzoKKyAgICBNaXQgZGllc2VuIEtvbW1hbmRvcyBrYW5uIG1hbiBkZW4gUmF1bSBpbiBlaW5lIGJlc3RpbW10ZSBSaWNodHVuZworICAgIHZlcmxhc3Nlbi4gSmVkZSBkZXIgSGltbWVsc3JpY2h0dW5nZW4ga2FubiBkdXJjaCBlaW5lbiAob2RlciB6d2VpKQorICAgIEJ1Y2hzdGFiZW4gYWJnZWt1ZXJ6dCB3ZXJkZW4uCisKKyAgICBBQkVSOiBNYW5jaG1hbCBtdXNzIG1hbiBlaW5lbiBXZWcgZmluZGVuLCBkZXIgbmljaHQgaW4gZWluZSBiZXN0aW1tdGUKKyAgICBIaW1tZWxzcmljaHR1bmcgZnVlaHJ0LgorCisgU0lFSEUgQVVDSDoKK3VudGVyc3VjaGUsIGt1cnosIGF1c2dhZW5nZSwga2xldHRlcmUsIHJlaXNlCisKKyBMRVRaVEUgQWVOREVSVU5HOgorICAgIFRodSwgMjQuMDcuMTk5NywgMDk6MDA6MDAgdm9uIFdhcmdvbgpkaWZmIC0tZ2l0IGEvZG9jL2hlbHAvYmV6dWdzcHVua3QgYi9kb2MvaGVscC9iZXp1Z3NwdW5rdApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4wMWVkNDIxCi0tLSAvZGV2L251bGwKKysrIGIvZG9jL2hlbHAvYmV6dWdzcHVua3QKQEAgLTAsMCArMSw1NCBAQAorCitEZXIgQmV6dWdzcHVua3QKKy0tLS0tLS0tLS0tLS0tLS0tLS0KKworICAgIERlciBCZXp1Z3NwdW5rdCBvZGVyIGRhcyBCZXp1Z3NvYmpla3QgaXN0IGJlaSBkZW4gQmVmZWhsZW4gInNjaGF1IiwKKyAgICAidW50ZXJzdWNoZSIsICJsaWVzIiwgInRhc3RlIiwgImxhdXNjaGUiIHVuZCAicmllY2hlIiB3aWNodGlnLgorCisgICAgRGllc2UgS29tbWFuZG9zIG1lcmtlbiBzaWNoIGRlbiBqZXdlaWxzIHp1bGV0enQgZXJmb2xncmVpY2ggdW50ZXJzdWNodGVuCisgICAgR2VnZW5zdGFuZCAoYnp3LiBkZW4gR2VnZW5zdGFuZCwgYW4gZGVtIGRhcyB6dWxldHp0IGVyZm9sZ3JlaWNoCisgICAgdW50ZXJzdWNodGUgRGV0YWlsIGtsZWJ0KSBhbHMgQmV6dWdzcHVua3QgZnVlciBkYXMgbmFlY2hzdGUgS29tbWFuZG8uCisgICAgSGllcmJlaSBiZW51dHplbiBhbGxlIGdlbmFubnRlbiBCZWZlaGxlIGRlbiBnbGVpY2hlbiBCZXp1Z3NwdW5rdC4KKworIEJFSVNQSUVMRToKKyAgICBCZWlzcGllbCAxOgorICAgID4gInVudCBzY2hyYW5rIgorICAgIC0+IGdpYnQgZXMgZWluZW4gU2NocmFuaywgd2lyZCBkZXIgYmVzY2hyaWViZW4gX3VuZF8gZXIgd2lyZCBkZXIgbmV1ZQorICAgICAgIEJlenVnc3B1bmt0LgorICAgID4gInVudCB0dWVyIgorICAgIC0+IEpldHp0IHdpcmQgInR1ZXIiIGFtIEJlenVnc29iamVrdCAic2NocmFuayIgZ2VzdWNodC4gRXhpc3RpZXJ0IGRhcworICAgICAgIERldGFpbCwgYmxlaWJ0IGRlciBTY2hyYW5rIGF1Y2ggd2VpdGVyaGluIGRlciBCZXp1Z3NwdW5rdC4gRXhpc3RpZXJ0CisgICAgICAgZXMgbmljaHQsIHdpcmQgZWluIERldGFpbCAidHVlciIgb2RlciBlaW4gT2JqZWt0ICJ0dWVyIiBpbSBSYXVtIHVuZAorICAgICAgIGRhbm4gaW4gZXVjaCBnZXN1Y2h0LiBHaWJ0IGVzIGRhIHNvd2FzLCB3aXJkIGVzIGJlc2NocmllYmVuIHVuZCBkYXMKKyAgICAgICBuZXVlIEJlenVnc29iamVrdC4gV2VubiBhbGxlcyBmZWhsc2NobGFlZ3QsIGdpYnQgZXMgZWluZQorICAgICAgIEZlaGxlcm1lbGR1bmcgdW5kIGRlciBCZXp1Z3NwdW5rdCBnZWxvZXNjaHQuIEJlaW0gbmFlY2hzdGVuICJ1bnQiIHdpcmQKKyAgICAgICAgenVlcnN0IGltIFJhdW0gdW5kIGRhbm4gaW4gZXVjaCBnZXN1Y2h0LgorICAgIChFcyB3dWVyZGUgYXVjaCBnZWhlbjogInVudCB0dWVyIGFuIHNjaHJhbmsiLikKKworICAgIEJlaXNwaWVsIDI6CisgICAgPiAidW50IHBha2V0IgorICAgIC0+IERhcyBQYWtldCB3aXJkIGJlc2NocmllYmVuIHVuZCBkZXIgbmV1ZSBCZXp1Z3NwdW5rdC4KKyAgICA+ICJ1bnQgc2VpbCIKKyAgICAtPiBEYXMgU2VpbCBpbSBwYWtldCB3aXJkIGJlc2NocmllYmVuIChzb2Zlcm4gc2llIGV4aXN0aWVydCkgdW5kIGRlcgorICAgICAgIG5ldWUgQmV6dWdzcHVua3QuCisgICAgPiAidW50IHdvbGxlIgorICAgIC0+IERhcyBEZXRhaWwgIndvbGxlIiBhbSBTZWlsIHdpcmQgYmVzY2hyaWViZW4uIERhcyBTZWlsIGJsZWlidCBkZXIKKyAgICAgICBCZXp1Z3NwdW5rdC4KKyAgICAoSW4gZGllc2VtIEJlaXNwaWVsIGtvZW5udGUgbWFuIGRpZSBXb2xsZSBhdWNoIGRpcmVrdGVyIHVudGVyc3VjaGVuLAorICAgICBpbmRlbSBtYW4gInVudCB3b2xsZSBhbiBzZWlsIGluIHBha2V0IGluIG1pciIgYmVudXR6dC4pCisKKyAgICBCZWlzcGllbCAzOgorICAgID4gInVudCBydWNrc2FjayIKKyAgICAtPiBEZXIgUnVja3NhY2sgd2lyZCB1bnRlcnN1Y2h0IHVuZCBkZXIgbmV1ZSBCZXp1Z3NwdW5rdC4KKyAgICA+ICJsaWVzIHNjaGlsZCIKKyAgICAtPiBIYXQgZGVyIFJ1Y2tzYWNrIGVpbiBsZXNiYXJlcyBEZXRhaWwgInNjaGlsZCIsIHdpcmQgZXMgYXVzZ2VnZWJlbi4gRGVyCisgICAgICAgUnVja3NhY2sgYmxlaWJ0IGRlciBCZXp1Z3NwdW5rdC4gV2VubiBuaWNodCwgd2lyZCBlaW4gbGVzYmFyZXMgRGV0YWlsCisgICAgICAgb2RlciBlaW4gbGVzYmFyZXIgR2VnZW5zdGFuZCAic2NoaWxkIiBpbSBSYXVtIHVuZCBpbiBldWNoIGdlc3VjaHQuCisgICAgKEVzIHd1ZXJkZSBhdWNoIGdlaGVuOiAibGllcyBzY2hpbGQgYW4gcnVja3NhY2siKQorIAorU0lFSEUgQVVDSDoKKyAgICBzY2hhdSwgdW50ZXJzdWNoZSwgbGllcywgdGFzdGUsIGxhdXNjaGUsIHJpZWNoZQorCisgTEVUWlRFIEFlTkRFUlVORzoKKyAgICAxOC4wMS4yMDEzLCBaZXNzdHJhCisKZGlmZiAtLWdpdCBhL2RvYy9oZWxwL2JpZXJzY2h1ZXR0bGVyIGIvZG9jL2hlbHAvYmllcnNjaHVldHRsZXIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNGU2YmE1OAotLS0gL2Rldi9udWxsCisrKyBiL2RvYy9oZWxwL2JpZXJzY2h1ZXR0bGVyCkBAIC0wLDAgKzEsNDggQEAKKworRGllIEJpZXJzY2h1ZXR0bGVyZ2lsZGUKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKKyAgICBWb3IgZWluaWdlciBaZWl0IGdydWVuZGV0ZW4gZGllIFNoYWtpZXMgYXVmIFNoYWt5IElzbGFuZCBkaWUgR2lsZGUgZGVyCisgICAgQmllcnNjaHVldHRsZXIsIGRhbWl0IGRpZXNlIEt1bnN0IGRlcyBCaWVyc2NodWV0dGVsbnMgbmljaHQgYXVzc3RpcmJ0LgorICAgIEJydW5vIHd1cmRlIHZvbiBhbGxlbiBTaGFraWVzIHp1bSBHaWxkZW5zaGFreSBnZXdhZWhsdCwgd2VpbCBlciBzaWNoIG1pdAorICAgIGRpZXNlbSBUaGVtYSBiZXN0ZW5zIGF1c2tlbm50LiBOdW4ga29lbm5lbiBhbGxlIFNwaWVsZXIgYmVpIGlobQorICAgIGVpbnVuZHp3YW56aWcgWmF1YmVyc3BydWVjaGUgbGVybmVuLiBEYSBnaWJ0IGVzIHp1bSBCZWlzcGllbCBkYXMgRXJkYmViZW4KKyAgICBvZGVyIGRlbiBIaXR6ZXNjaGxhZywgZGllIGltIEthbXBmIGVpbmdlc2V0enQgd2VyZGVuIGtvZW5uZW4uIE5hdHVlcmxpY2gKKyAgICBrYW5uIGVpbiBlY2h0ZXIgQmllcnNjaHVldHRsZXIgc2VpbmVuIEZlaW5kIGF1Y2ggYWxrb2hvbGlzaWVyZW4gdW5kIHNpY2gKKyAgICBzZWxic3QgYXVjaCBudWVjaHRlcm5lciBtYWNoZW4uCisKKyAgICBEYSBTaGFraWVzIHNlaHIgYmVoYWFydCBzaW5kLCBpc3QgQnJ1bm8gaW4gZGVyIExhZ2UgZGVtIEdpbGRlbm1pdGdsaWVkIGRlbgorICAgIFRyaWNrIG1pdCBkZXIgSGFhcnJ1ZXN0dW5nIHp1IHplaWdlbiwgZGllIG5pY2h0IG51ciBzY2h1ZXR6dCwgc29uZGVybiBub2NoCisgICAgZWluIGtsZWluZXMgU3BlY2lhbCBoYXQuIERpZSBTaGFraWVzIHNpbmQgZWluZSBmcm9oZSBSYXNzZSwgZGllIG5hdHVlcmxpY2gKKyAgICBhdWNoIHVlYmVyIGRpZSBaYXViZXJzcHJ1ZWNoZSBQYXJ0eSB1bmQgRnJlaWJpZXIgdmVyZnVlZ2VuLiBGdWVyIGplZGVuCisgICAgR2lsZGVubGV2ZWxhdWZzdGllZyBpc3QgQnJ1bm8gYmVyZWl0LCBkZW0gTWl0Z2xpZWQgZWluZW4gbmV1ZW4gU3BydWNoCisgICAgYmVpenVicmluZ2VuLiBEaWUgR2lsZGVubGV2ZWwgc2luZCB3aWUgaW4gZGVyIEFiZW50ZXVyZXJnaWxkZSBhbiBkaWUKKyAgICBTcGllbGVybGV2ZWwgZ2Vrb3BwZWx0LCBzbyBkYXNzIGF1Y2ggQW5mYWVuZ2VyIHNjaG5lbGwgYXVmc3RlaWdlbiBrb2VubmVuLgorCisgICAgVHJvdHpkZW0gaXN0IGRpZSBHaWxkZSBkZXIgQmllcnNjaHVldHRsZXIgZnVlciBTZWhlciBuaWNodCB1bmludGVyZXNzYW50LgorICAgIERpZSBHaWxkZW5sZXZlbCByZWljaGVuIHZvbSAnbnVlY2h0ZXJuZW4gQW5mYWVuZ2VyJyBiaXMgaGluIHp1bQorICAgICdCaWVyc2NodWV0dGVsbWVpc3RlcicuIFVlYnJpZ2VucyBnaWJ0IGVzIGtlaW5lcmxlaSBBdWZsYWdlbiB3ZW5uIG1hbiBkZW4KKyAgICBCaWVyc2NodWV0dGxlcm4gYmVpdHJldGVuIG1vZWNodGUuCisKKyAgICBCcnVubyBnaWJ0IEJpZXJzY2h1ZXR0bGVybiBhYiBMZXZlbCB6d2VpIG5vY2ggZWluIGtsZWluZXMgR2VzY2hlbmsgbWl0IGF1ZgorICAgIGRlbiBXZWcuIEVzIGhhbmRlbHQgc2ljaCBkYWJlaSB1bSBlaW5lIEJpZXJzY2h1ZXJ6ZSwgZGllIGRlbSBNaXRnbGllZAorICAgIGVpbmlnZSBWb3J0ZWlsZSBiaWV0ZXQuIE1hbiBiZWtvbW10IGRhbm4genVtIEJlaXNwaWVsIGluIGVpbmlnZW4gS25laXBlbgorICAgIGVpbmVuIFJhYmF0dCB2b24gYmlzIHp1IDI1JSBlaW5nZXJhZXVtdC4KKworICAgIFdlaXRlcmUgSW5mb3JtYXRpb25lbiwgenVtIEJlaXNwaWVsIHVlYmVyIGRpZSBlaW56ZWxuZW4gU3BydWVjaGUsIGthbm4gbWFuCisgICAgZGlyZWt0IGJlaSBCcnVubyBlaW5ob2xlbi4gQXVzc2VyZGVtIHN0ZWh0IGVzIGplZGVtIFNwaWVsZXIgZnJlaSwgYXVmIGRlbQorICAgIEthbmFsIFtCaWVyc2NodWV0dGxlcjpdIHp1IGxhdXNjaGVuLCBkZW4gbWFuIG1pdCBkZW0gQmVmZWhsCisgICAgLUJpZXJzY2h1ZXR0bGVyKyBlaW5zY2hhbHRlbiBrYW5uLiBIaWVyIGdpYnQgQnJ1bm8gYXVjaCBiZWthbm50LCB3ZW5uIGRpZQorICAgIEJpZXJzY2h1ZXR0bGVyIG5ldWUgTWl0Z2xpZWRlciBiZWdydWVzc2VuIGR1ZXJmZW4uCisKKyBTSUVIRSBBVUNIOgorICAgIGdpbGRlbiwgYXR0cmlidXRlLCBlYmVuZW4KKworIEZVZVIgR0lMREVOTUlUR0xJRURFUjoKKyAgICB6YXViZXJzcHJ1ZWNoZSwgYmllcnNjaHVlcnplLCBhYnN0dWZ1bmdlbgorCisgICAgKklzdCBtYW4gTWl0Z2xpZWQgZWluZXIgYW5kZXJlbiBHaWxkZSwgc28gbXVzcyBtYW4gZnVlciBkaWUgSGlsZmVuIHp1IGRlbgorICAgIFNwcnVlY2hlbiBgaGlsZmUgZ2lsZGUgYmllcnNjaHVldHRsZXIgPG5hbWU+JyBiZW51dHplbiEqCisKKyBMRVRaVEUgQWVOREVSVU5HOgorICAgIFRodSwgMjQuMDcuMTk5NywgMDk6MDA6MDAgdm9uIFdhcmdvbgpkaWZmIC0tZ2l0IGEvZG9jL2hlbHAvYnVlY2hlciBiL2RvYy9oZWxwL2J1ZWNoZXIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZDRkNDIxOAotLS0gL2Rldi9udWxsCisrKyBiL2RvYy9oZWxwL2J1ZWNoZXIKQEAgLTAsMCArMSwyNiBAQAorCitCdWVjaGVyCis9PT09PT09CisKKyAgICBJbSBNb3JnZW5HcmF1ZW4gZ2lidCBlcyB2aWVsZSBCdWVjaGVyLCBkaWUgbWFuIG1pdCAnbGllcyBidWNoJyBsZXNlbiBrYW5uLgorICAgIEJlaSBzdGFuZGFyZGlzaWVydGVuIEJ1ZWNoZXJuIGthbm4gbWFuIGRpZSBmb2xnZW5kZW4gS29tbWFuZG9zIGJlbnV0emVuOgorCisgICAgIG9lZmZuZSBidWNoCisgICAgICAgIFp1bSBPZWZmbmVuIGRlcyBCdWNoZXM7IGRpZSBtZWlzdGVuIEJ1ZWNoZXIgc2luZCBhbmZhZW5nbGljaAorICAgICAgICBnZXNjaGxvc3Nlbi4KKworICAgICBzY2hsaWVzc2UgYnVjaAorICAgICAgICBadW0gU2NobGllc3NlbiBkZXMgQnVjaGVzOyB3ZW5uIG1hbiBkYXMgQnVjaCBhdXNnZWxlc2VuIGhhdCwgc2NobGllc3N0CisgICAgICAgIG1hbiBlcyBhdXRvbWF0aXNjaC4KKworICAgICBsaWVzIGJ1Y2gKKyAgICAgICAgV2VubiBkYXMgQnVjaCBnZXNjaGxvc3NlbiBpc3QsIHplaWd0IGRpZXNlcyBLb21tYW5kbyBkaWUgVGl0ZWxzZWl0ZTsKKyAgICAgICAgaXN0IGVzIG9mZmVuLCB6ZWlndCBlcyBkaWUgU2VpdGUsIGF1ZiBkZXIgZXMgYXVmZ2VzY2hsYWdlbiBpc3QsIHVuZAorICAgICAgICBibGFldHRlcnQgdW0uIFdpcmQgZGFzIEVuZGUgZGVzIEJ1Y2hlcyBlcnJlaWNodCwgd2lyZCBlcyBnZXNjaGxvc3Nlbi4KKworICAgICBibGFldHRlcmUgenUgc2VpdGUgPG4+CisgICAgICAgIE1pdCBkaWVzZW0gS29tbWFuZG8ga2FubiBtYW4gaW0gQnVjaCB2b3J3YWVydHMtIHVuZCBydWVja3dhZXJ0cworICAgICAgICBibGFldHRlcm4sIG5hdHVlcmxpY2ggbnVyLCB3ZW5uIGRhcyBCdWNoIGdlb2VmZm5ldCBpc3QuCisKKyBMRVRaVEUgQWVOREVSVU5HOgorICAgIFRodSwgMjQuMDcuMTk5NywgMDk6MDA6MDAgdm9uIFdhcmdvbgpkaWZmIC0tZ2l0IGEvZG9jL2hlbHAvY2hhb3MgYi9kb2MvaGVscC9jaGFvcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4zNWFhZThkCi0tLSAvZGV2L251bGwKKysrIGIvZG9jL2hlbHAvY2hhb3MKQEAgLTAsMCArMSw0NiBAQAorCitEaWUgR2lsZGUgZGVyIEtyaWVnZXIgZGVzIENoYW9zCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKKyAgICBNYW4ga2FubiBpbiBkaWUgR2lsZGUgZGVyIEtyaWVnZXIgZGVzIENoYW9zIGJlaSBLcnV1b2xxLCBkZW0gb2JlcnN0ZW4KKyAgICBNZWlzdGVyIGRlcyBDaGFvcywgZWludHJldGVuLiBVbSBhdWZnZW5vbW1lbiB6dSB3ZXJkZW4gbXVzcyBtYW4gbWluZGVzdGVucworICAgIFNwaWVsZXJsZXZlbCA5IChLdW5kc2NoYWZ0ZXIvS3VuZHNjaGFmdGVyaW4pIHNlaW4uCisKKyAgICBJbnNnZXNhbXQgZ2lidCBlcyAxMSBHaWxkZW5zdHVmZW4sIHZvbSBrbGVpbmVuIENoYW90ZW4gYmlzIHp1bSBNZWlzdGVyIGRlcworICAgIENoYW9zLiBGdWVyIGplZGUgU3R1ZmVuZXJob2VodW5nIG11c3MgbWFuIGVpbmVuIEthbXBmIGF1ZiBMZWJlbiB1bmQgVG9kIGluCisgICAgZGVyIGdpbGRlbmVpZ2VuZW4gQXJlbmEgYXVzdHJhZ2VuLCBtYW4gbXVzcyBTcHJ1ZWNoZSB1bmQgRGFlbW9uZW4sIGRlcgorICAgIGpld2VpbGlnZW4gU3R1ZmUgZW50c3ByZWNoZW5kIGd1dCwgYmVoZXJyc2NoZW4gdW5kIGFiIEdpbGRlbmxldmVsIDkga29tbWVuCisgICAgbm9jaCBiZXNvbmRlcmUgQW5mb3JkZXJ1bmdlbiBoaW56dS4KKworICAgIEplIG5hY2ggU3R1ZmUga2FubiBtYW4gdW50ZXJzY2hpZWRsaWNoZSBGYWVoaWdrZWl0ZW4gZXJsZXJuZW4uIERpZXNlCisgICAgdGVpbGVuIHNpY2ggZ3JvYiBpbiB6d2VpIEthdGVnb3JpZW46CisgICAgMSkgWmF1YmVyc3BydWVjaGUKKyAgICAyKSBCZXNjaHdvZXJlbiB2b24gRGFlbW9uZW4uCisgICAgTWl0IEhpbGZlIGRlciBaYXViZXJzcHJ1ZWNoZSBrYW5uIG1hbiB6LkIuIFJhZXVtZSB2ZXJkdW5rZWxuIG9kZXIgZWluZW4KKyAgICBDaGFvc2JhbGwgd2VyZmVuLCBtaXQgSGlsZmUgZGVyIERhZW1vbmVuIGthbm4gbWFuIFNhY2hlbiBpZGVudGlmaXppZXJlbgorICAgIG9kZXIsIG1pdCBzdGVpZ2VuZGVyIFN0dWZlLCBEYWVtb25lbiBiZXNjaHdvZXJlbiBkaWUgZGVuIFNwaWVsZXIgaW0gS2FtcGYKKyAgICB1bnRlcnN0dWV0emVuLiBEYSBlcyBuaWNodCBnYW56IHNvIGVpbmZhY2ggaXN0IERhZW1vbmVuIHp1IGJlc2Nod29lcmVuCisgICAga2FubiBlcyBkYWJlaSBwYXNzaWVyZW4sIGRhc3MgZGVyIGZhbHNjaGUgRGFlbW9uIGVyc2NoZWludC4gVW0gZGllcyB6dQorICAgIHZlcmhpbmRlcm4gc29sbHRlIG1hbiBzaWNoIGltIEdpbGRlbmxhZGVuICdOdWV0emxpY2hlIFp1dGF0ZW4gZnVlciBib2VzZQorICAgIFphdWJlcnNwcnVlY2hlJyBtaXQgYWxsZXJsZWkgVXRlbnNpbGllbiBhdXNzdGF0dGVuLCBkaWUgZWluZW4gYmVpIGRlbgorICAgIEJlc2Nod29lcnVuZ2VuIHVudGVyc3R1ZXR6ZW4uIEdlbmF1ZXJlcyB1ZWJlciBkaWUgWmF1YmVyc3BydWVjaGUgdW5kCisgICAgRGFlbW9uZW4gZXJmYWVocnN0IER1IGJlaSBLcnV1b2xxLgorCisgICAgVWViZW4ga2FubiBtYW4gU3BydWVjaGUgdW5kIEJlc2Nod29lcnVuZ2VuIGluIGRlbSBudXIgZnVlcgorICAgIEdpbGRlbm1pdGdsaWVkZXIgenVnYWVuZ2xpY2hlbiBSaXR1YWxyYXVtIGJlaSBXdXFvdXIuIEVyIGhpbGZ0IEFuZmFlbmdlcm4KKyAgICBzaWNoIGJlc3NlciBpbiBkZXIgV2VsdCBkZXMgQ2hhb3MgenVyZWNodCB6dSBmaW5kZW4uCisKKyAgICBFcyBnaWJ0IHp3ZWkgVm9yYXVzc2V0enVuZ2VuIHVtIHNlaW5lIGNoYW90aXNjaGVuIEZhZWhpZ2tlaXRlbiB2b2xsIHp1CisgICAgZW50ZmFsdGVuLiBNYW4gbXVzcyBhdXNyZWljaGVuZCAnYm9lc2UnIHNlaW4gdW0gZGllIFNwcnVlY2hlIGFuenV3ZW5kZW4KKyAgICB1bmQgbWFuIG11c3MgZWluZW4gRGFlbW9uZW4gYmVzY2h3b2VyZW4sIGRlciBpbiBkaWUgZWlnZW5lIEhhdXQgZWluZHJpbmd0LAorICAgIHNpZSB2ZXJzdGFlcmt0IHVuZCBkaWUgQXR0cmlidXRlIGRlcyBDaGFvdGVuIGdlZ2ViZW5lbmZhbGxzIG1pdCBzZWluZW4KKyAgICBlaWdlbmVuIGF1Zi0gb2RlciBhYndlcnRldC4gRGllc2VyIERhZW1vbiBlcm1vZWdsaWNodCBlcnN0IGRpZSBBbndlbmR1bmcKKyAgICBhbGxlciBTcHJ1ZWNoZS4KKworICAgIE5hdHVlcmxpY2ggaGFiZW4gZGllIENoYW90ZW4gYXVjaCBlaW5lIGVpZ2VuZSBFYmVuZSBbQ2hhb3M6XS4KKworIFNJRUhFIEFVQ0g6CisgICAgYXR0cmlidXRlLCBlYmVuZW4sIGdpbGRlbgorCisgTEVUWlRFIEFlTkRFUlVORzoKKyAgICBUaHUsIDI0LjA3LjE5OTcsIDA5OjAwOjAwIHZvbiBXYXJnb24KZGlmZiAtLWdpdCBhL2RvYy9oZWxwL2NpY2Vyb25lcyBiL2RvYy9oZWxwL2NpY2Vyb25lcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5iYTQ4OGNiCi0tLSAvZGV2L251bGwKKysrIGIvZG9jL2hlbHAvY2ljZXJvbmVzCkBAIC0wLDAgKzEsOTUgQEAKK0NJQ0VST05FUyAKKy0tLS0tLS0tLQorCis8YmlsZHVuZz4KKworRGVyIEJlZ3JpZmYgc3RhbW10IGF1cyBkZW0gaXRhbGllbmlzY2hlbiB1bmQgaXN0IGVpbmUgQmV6ZWljaG51bmcgZnVlciBlaW5lbgorRnJlbWRlbmZ1ZWhyZXIgb2RlciBBZWhubGljaGVzLgorCis8L2JpbGR1bmc+CisKK0NpY2Vyb25lcyBzaW5kIFNwaWVsZXIsIGRpZSBzaWNoIGJlcmVpdGVya2xhZXJ0IGhhYmVuLCBmdWVyIHVuc2VyZSBrbGVpbmVuCitTcGllbGVyIGRhIHp1IHNlaW4uIFNpZSBzaW5kIGRpZSBBbnNwcmVjaHBhcnRuZXIgZnVlciBkaWUgTmV1bGluZ2UgaW0gTVVELgorCitKZWRlciBTcGllbGVyIHNvbGx0ZSBiZXJlaXQgc2VpbiwgTmV1bGluZ2VuIHVudGVyIGRpZSBBcm1lIHp1IGdyZWlmZW4uIERpZQorQ2ljZXJvbmVzIGhhYmVuIGFiZXIgYWJnZXNlaGVuIGRhdm9uLCBkYXNzIHNpZSBkZW4gVGl0ZWwgLCxDaWNlcm9uZScnIGZ1ZWhyZW4KK2R1ZXJmZW4sIGtlaW5lIGJlc29uZGVyZW4gVm9ycmVjaHRlLgorCitVbSBDaWNlcm9uZSB6dSB3ZXJkZW4ga2FubiBtYW4gZGVuIEJlZmVobCAsLGNpY2Vyb25lJycgdmVyd2VuZGVuLiBOYWVocmVzIAorZGF6dSBzaWVoZSBhdWYgZGVyIGRhenVnZWhvZXJpZ2VuIEhpbGZlc2VpdGUuCisKK0FVRkdBQkVOIERFUiBDSUNFUk9ORVMKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworRGllIENpY2Vyb25lcyBzb2xsZW4ga2xlaW5lbiBTcGllbGVybiBhdWYgQW5mcmFnZSBiZWlzdGVoZW4uIFNpZSBzb2xsZW4gaWhuZW4KK0ZyYWdlbiBiZWFudHdvcnRlbiAobmF0dWVybGljaCBrZWluZSBRdWVzdC1LTHMgdm9ya2F1ZW4pIHVuZCBpaG5lbiBkaWUgZXJzdGVuCitTY2hyaXR0ZSB1bmQgQmVmZWhsZSBpbSBNRyBlcmtsYWVyZW4uIEF1Y2ggS29uemVwdGUgKCJHaWxkZW4iIG9kZXIgCisiWmF1YmVydHJhZW5rZSIpIHNvbGxlbiBlcmxhZXV0ZXJ0IHdlcmRlbi4KKworQ2ljZXJvbmVzIHNvbGxlbiBhYmVyIGRlZmluaXRpdiBuaWNodCBkZW0ga2xlaW5lbiBTcGllbGVyIGRhcyBTcGllbGVuIAorYWJuZWhtZW4uIEtsYXIgZGFyZiBtYW4gYmVpIGRlciBBbmZhZW5nZXJxdWVzdCBkYW5lYmVuc3RlaGVuIHVuZCBiZWkgCitvZmZlbnNpY2h0bGljaGVuIFByb2JsZW1lbiBUaXBzIGdlYmVuLiBBYmVyIGltbWVyIG1pdCBkZW0gSGludGVyZ3J1bmQsIGRhc3MKK2RlciBTcGllbGVyIGV0d2FzIGRhYmVpIGxlcm50LgorCitCZWlzcGllbDogKGRpZXNlIFF1ZXN0IGlzdCBmaWt0aXYpCisKK0h1bW5pIHNhZ3Q6IFdpZSBnZWh0IGRhcyBoaWVyIGpldHp0PworTXVhZGliIHNhZ3Q6IElzdCBkb2NoIGdhbnoga2xhci4gRHUgbXVzc3QgZGVuIFN0ZWluIG5laG1lbiwgZGFubiBnaWJzdCBEdSBlaW4KK011YWRpYiBzYWd0OiAsd2lyZiBzdGVpbiBhdWYgYmVyZycuIERhbm4ga29tbXQgZWluIFNjaGF0dGVuIHJ1bnRlciwgZGVtIGdpYnN0CitNdWFkaWIgc2FndDogRHUgZGFzIEFtdWxldHQgdW5kIHNhZ3N0IGRhbm4gZGFzIFphdWJlcndvcnQgLCxCbG9lcmRlcmtyYW1wZi4nJworSHVtbmkgc2FndDogT2ggdG9sbCEgRGFua2UhCisKK19GQUxTQ0hfLgorCitIdW1uaSBzYWd0OiBXaWUgZ2VodCBkYXMgaGllciBqZXR6dD8KK011YWRpYiBzYWd0OiBOYSwgc2NoYXUgRGljaCBtYWwgZ2VuYXUgdW0uIER1IGthbm5zdCBhdWNoIGdld2lzc2UgRGluZ2UgCitNdWFkaWIgc2FndDogdW50ZXJzdWNoZW4sIGRpZSBlcyBxdWFzaSB1ZWJlcmFsbCBnaWJ0LiBFcyBnaWJ0IHF1YXNpIHVlYmVyYWxsCitNdWFkaWIgc2FndDogZWluZW4gQm9kZW4uCitIdW1uaSBzYWd0OiBBaGEuCitIdW1uaSBzYWd0OiBCb2FoLCBkYSBsaWVndCBqYSBlaW4gU3RlaW4/CitNdWFkaWIgc2FndDogSmEsIHJpY2h0aWcuIFdhcyBrYW5uc3QgRHUgZGFtaXQgbWFjaGVuPworSHVtbmkgZ3J1ZWJlbHQuCitIdW1uaSBzYWd0OiBBdWZlc3Nlbj8KK011YWRpYiBzYWd0OiBOZWluLiBEYXMgaXN0IGVpbiBTdGVpbi4KK0h1bW5pIHNhZ3Q6IEFjaCBzby4KK0h1bW5pIHNhZ3Q6IEljaCBrYW5uIGlobiBqYSBtYWwgYXVmaGViZW4uCitNdWFkaWIgc2FndDogR2VuYXUuCitIdW1uaSBuaW1tdCBkZW4gU3RlaW4uCitNdWFkaWIgc2FndDogU28sIGRhbm4gc2NoYXUgRGljaCBtYWwgd2VpdGVyIHVtLiBXYXMgaXN0IGhpZXIgbm9jaD8KK0h1bW5pIHNhZ3Q6IEVpbiBCZXJnLgorTXVhZGliIHNhZ3Q6IEhhc3QgRHUgRGlyIGRlbiBtYWwgZ2VuYXVlciBhbmdlZ3Vja3Q/CitIdW1uaSBzYWd0OiBEYSBzdGVodCwgaWNoIGthbm4gZGVuIG1pdCBTdGVpbmVuIGJld2VyZmVuLCBkZXIgbWFnIGRhcy4KKy4KKy4KKworX1JJQ0hUSUdfCisKK0phLCBkZXIgendlaXRlIEZhbGwgaXN0IG5lcnZpZ2VyLCBlciBrb3N0ZXQgbWVociBaZWl0IHVuZCBkZXIgU3BpZWxlciBoYXQgCit3ZW5pZ2VyIEVyZm9sZ3NlcmxlYm5pc3NlIGFscyBpbSBlcnN0ZW4gRmFsbC4KKworSGFsdC4KKworU3RpbW10IG5pY2h0LgorCitLbGFyLCBpbSBlcnN0ZW4gRmFsbCBoYXQgZGVyIFNwaWVsZXIgbmFjaCAyIE1pbnV0ZW4gc2VpbmUgZXJzdGUgUXVlc3QgCitnZWxvZXN0IC0gdG9sbCwgb2Rlcj8gTnVyIHdhcyBpc3QgbWl0IGRlciBuYWVjaHN0ZW4/IFdlbm4gYmVpIGRlciBuYWVjaHN0ZW4KK1F1ZXN0IGtlaW4gQ2ljZXJvbmUgZGFuZWJlbnN0ZWh0IGhhdCBkZXIgU3BpZWxlciB2ZXJsb3Jlbi4gRXIgaGF0IG5hZW1saWNoCituaWNodHMgc2VsYnN0IHJhdXNnZWtyaWVndCB1bmQgbmljaHRzIGdlbGVybnQuCisKK0ltIHp3ZWl0ZW4gRmFsbCBoYXQgZGVyIFNwaWVsZXIgZ2FueiB2aWVsIGdlbGVybnQ6IEVyIGhhdCBnZWxlcm50LCBkYXNzIG1hbgorZWlnZW50bGljaCB1ZWJlcmFsbCBkZW4gQm9kZW4gYW5ndWNrZW4ga2FubiwgZGFzcyBtYW4gc2ljaCBkaWUgRGluZ2UgYW5ndWNrZW4KK211c3MgdW5kIGRhc3MgbWFuIG1pdCBkZW4gR2VnZW5zdGFlbmRlbiBsb2dpc2NoZSBTYWNoZW4gbWFjaGVuIGthbm4gdW5kIGRhc3MKK3NlaHIsIHNlaHIgb2Z0IGluIGRlbiBEZXRhaWxzIGRpZSBBbndlbmR1bmdzbW9lZ2xpY2hrZWl0ZW4gdmVyc3RlY2t0IHNpbmQuCisKK0RBUyBpc3QgZGllIEF1ZmdhYmUgZWluZXMgQ2ljZXJvbmVuLCB1bmQgZGllIGtvc3RldCBaZWl0LgorCitEYXJ1bSBzb2xsdGUgbWFuIHNpY2ggZ3V0IHVlYmVybGVnZW4sIG9iIG1hbiBkaWVzZSBaZWl0IGdlcmFkZSBqZXR6dCBpbSAKK01vbWVudCBhdWZicmluZ2VuIGthbm4gdW5kIHdpbGwuIFdlbm4gbmljaHQsIHNvbGx0ZSBtYW4gZXMgYmVzc2VyIHNlaW4gCitsYXNzZW4uCisKK1NJRUhFIEFVQ0gKKy0tLS0tLS0tLS0KKworZWluZnVlaHJ1bmcsIGNpY2Vyb25lCisKK0xldHp0ZSBBZW5kZXJ1bmc6IDIwMDUtMDEtMDQsIHZvbiBIdW1uaQpkaWZmIC0tZ2l0IGEvZG9jL2hlbHAvY2xpZW50IGIvZG9jL2hlbHAvY2xpZW50Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjJjMTM2YTQKLS0tIC9kZXYvbnVsbAorKysgYi9kb2MvaGVscC9jbGllbnQKQEAgLTAsMCArMSwxOSBAQAorQ2xpZW50cworPT09PT09PQorCisgICAgTWFuIGthbm4gaW4gTW9yZ2VuZ3JhdWVuIHVlYmVyIGVpbiBlaW5mYWNoZXMgJ3RlbG5ldCctUHJvZ3JhbW0gc3BpZWxlbiwKKyAgICBhYmVyIGRpZXNlIHRyZW5uZW4gbWVpc3QgRWluLSB1bmQgQXVzZ2FiZSBuaWNodCB1bmQgbWFjaGVuIGRhbWl0IGRlbgorICAgIExlc2VmbHVzcyBtZWlzdCB1bmFuZ2VuZWhtLgorICAgIAorICAgIEVzIGdpYnQgdmVyc2NoaWVkZW5lIFByb2dyYW1tZSwgdWViZXIgZGllIGRhcyBVbnRlcnNjaGVpZGVuIGRlciBFaW4tIHVuZAorICAgIEF1c2dhYmUsIGVpbiBFaW5mYWVyYmVuL0F1c2xhc3NlbiB2b24gVGV4dGVuICh3aWUgekIgZGVuIEthbmFlbGVuIG9kZXIKKyAgICBLYW1wZm1lbGR1bmdlbikgdW5kIG5vY2ggdmllbGVzIG1laHIgbW9lZ2xpY2ggaXN0LgorICAgIAorICAgIFZlcmxpbmt0IGZpbmRldCBpaHIgYXVmIHVuc2VyZXIgV2Vic2VpdGU6IGh0dHA6Ly9tZy5tdWQuZGUgZWluaWdlIGRlcgorICAgIGZ1ZXIgYW0gYmVzdGVuIGJlZnVuZGVuZW46IGh0dHA6Ly9tZy5tdWQuZGUvbmV3d2ViL2Rvd25sb2FkL2luZGV4LnNodG1sCisKKyBTSUVIRSBBVUNIOgorICAgIHd3dworCisgTEVUWlRFIEFlTkRFUlVORzoKKyAgICAyMC4gSnVsaSAyMDA3IEdsb2luc29uCmRpZmYgLS1naXQgYS9kb2MvaGVscC9jcmFzaCBiL2RvYy9oZWxwL2NyYXNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmNiYzI1NjMKLS0tIC9kZXYvbnVsbAorKysgYi9kb2MvaGVscC9jcmFzaApAQCAtMCwwICsxLDIwIEBACitDcmFzaHMgdW5kIGlocmUgRm9sZ2VuCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCisgICAgVm9yc2ljaHRpZyBhdXNnZWRydWVja3QgaXN0IGVpbiAnQ3Jhc2gnIGVpbiB1bmJlYWJzaWNodGlndGVyIE5ldXN0YXJ0IAorICAgIGRlcyBTcGllbGVzIChzaWVoZTogaGlsZmUgcmVib290KSwgamVkb2NoIGthbm4gZXMgaGllcmJlaSB6dSAKKyAgICB1bnZvcmhlcnNlaGJhcmVuIE5lYmVud2lya3VuZ2VuIGtvbW1lbi4gU29sbHRlc3QgRHUgYWxzbyBkZXIgTWVpbnVuZworICAgIHNlaW4sIGRhc3MgbmFjaCBlaW5lbSAnQ3Jhc2gnIGlyZ2VuZGV0d2FzIG1pdCBEaXIgbmljaHQgc3RpbW1lbgorICAgIGthbm4sIHdlbmRlIERpY2ggYW4gZWluZW4gTWFnaWVyIERlaW5lcyBWZXJ0cmF1ZW5zLgorICAgIERpZSBOZWJlbndpcmt1bmdlbiBlaW5lcyAnQ3Jhc2hzJyBzaW5kIGplZG9jaCByZWxhdGl2IHNlbHRlbi4KKworICAgIERpZSBHcnVlbmRlIGZ1ZXIgZWluZW4gJ0NyYXNoJyBzaW5kIHZpZWxmYWVsdGlnLiBEb2NoIHdlbm4gbWFuIGVzCisgICAgYXVmIGRlbiBQdW5rdCBicmluZ2VuIG1vZWNodGUsIHdpcmQgZWluICdDcmFzaCcgc2NobGljaHQgdW5kIAorICAgIGVpbmZhY2ggZHVyY2ggc2Nod2VyZSBQcm9ncmFtbWllcmZlaGxlciBhdXNnZWxvZXN0LCBhbiBkZW5lbiBzaWNoIGRhcyAKKyAgICBNb3JnZW5HcmF1ZW4gdmVyc2NobHVja3QuIAorICAgIAorIFNJRUhFIEFVQ0g6CisgICAgcmVib290LCBtYWdpZXIKKworIExFVFpURSBBZU5ERVJVTkc6CisgICAgU2F0LCAxNC4xMC4yMDAwLCAxMDoxNjoyNSB2b24gQmllcmNoZW4uCmRpZmYgLS1naXQgYS9kb2MvaGVscC9kdW5rZWxlbGZlbiBiL2RvYy9oZWxwL2R1bmtlbGVsZmVuCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmFkNzgxODQKLS0tIC9kZXYvbnVsbAorKysgYi9kb2MvaGVscC9kdW5rZWxlbGZlbgpAQCAtMCwwICsxLDUxIEBACisKK0RpZSBEdW5rZWxlbGZlbmdpbGRlCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCisgICAgICBEYXMgVm9sayBkZXIgRHVua2VsZWxmZW4gbGVidCBpbiBlaW5lciBncm9zc2VuIEhvZWhsZW5zdGFkdCBndXQKKyAgICAgIHZlcnN0ZWNrdCBoaW50ZXIgZWluZW0gV2Fzc2VyZmFsbC4gVWViZXIga2F1bSBlaW4gYW5kZXJlcyBWb2xrIGdpYnQgZXMKKyAgICAgIHNvdmllbGUgVm9ydXJ0ZWlsZSB3aWUgdWViZXIgZGllIER1bmtlbGVsZmVuIHVuZCBzbyB3ZXJkZW4gc2llIHZvbgorICAgICAgYWxsZW4gbWlzc3RyYXVpc2NoIGJlYWV1Z3Qgb2RlciBzb2dhciBiZWthZW1wZnQuIEluIGRpZXNlbSBLYW1wZiwKKyAgICAgIGluc2Jlc29uZGVyZSBnZWdlbiBkaWUgRWxmZW4sIHNpbmQgc2llIHZvZWxsaWcgYXVmIHNpY2ggYWxsZWluIGdlc3RlbGx0CisgICAgICB1bmQgc28gaGF0IHNpY2ggZWluZSBtZWhyIG9kZXIgbWluZGVyIGF1dGFya2UgR2VzZWxsc2NoYWZ0IGVudHdpY2tlbHQuCisgICAgICBEaWUgRHVua2VsZWxmZW4gaGFiZW4gZWluZSBlaWdlbmUgS3VsdHVyIHVuZCBlaW5lIGVpZ2VuZSBHb2V0dGluIGRlcgorICAgICAgc2llIGh1bGRpZ2VuLiBXaWUgYXVjaCBkaWUgRWxmZW4gdmVyZnVlZ2VuIHNpZSB1ZWJlciBhdXNzZXJvcmRlbmxpY2gKKyAgICAgIGdyb3NzZSBtYWdpc2NoZSBGYWVoaWdrZWl0ZW4sIGF1Y2ggd2VubiBzaWUgc2ljaCBtZWhyIGF1ZiBkaWUgc2Nod2FyemUKKyAgICAgIFNlaXRlIGRlciBNYWdpZSBzcGV6aWFsaXNpZXJ0IGhhYmVuLgorCisgICAgICBEaWUgR2lsZGUgYmVzdGVodCBhdXMgdmllciBUZWlsZW4sIGVpbmVtIGFsbGdlbWVpbmVuIFRlaWwgbWl0IFNraWxscworICAgICAgd2llIGlkZW50aWZpemllcmUsIHNjaGFldHosIGZldWVybGFuemUgdXN3LiBkaWUgamVkZXIgaW4gZGVyIEdpbGRlCisgICAgICBlcmxlcm5lbiBtdXNzLiBEYXJ1ZWJlciBoaW5hdXMgZ2lidCBlcyBkcmVpIHZlcnNjaGllZGVuZSBad2VpZ2UgZGVyCisgICAgICBHaWxkZSwgdm9uIGRlbmVuIGplZGVyIER1bmtlbGVsZiBpbiB6d2VpIFp3ZWlnZSBlaW50cmV0ZW4gdW5kIHNpY2ggYW0KKyAgICAgIEVuZGUgZGFubiBpbiBlaW5lbSBkaWVzZXIgendlaSBad2VpZ2Ugc3BlemlhbGlzaWVyZW4ga2Fubi4gRGllc2UgZHJlaQorICAgICAgWndlaWdlIHNpbmQgS2FtcGYsIE1hZ2llIHVuZCBLbGVydXMuIEluc2dlc2FtdCBnaWJ0IGVzIGFsc28gNiBtb2VnbGljaGUKKyAgICAgIFp3ZWlna29tYmluYXRpb25lbiwgendpc2NoZW4gZGVuZW4gZGllIER1bmtlbGVsZmVuIGZyZWkgd2FlaGxlbiBrb2VubmVuLgorCisgICAgICBEZXIgS2FtcGZ6d2VpZyB3aWRtZXQgc2ljaCBpbiBlcnN0ZXIgTGluaWUgZGVtIFVtZ2FuZyBtaXQgZGVtCisgICAgICBSdW5lbnNjaHdlcnQuIEVzIGdpYnQgZWluZW4gU2Nod2VydHNraWxsLCBlaW5lbiBTa2lsbCB6dW0gU2NobWllZGVuIHZvbgorICAgICAgUnVuZW5zY2h3ZXJ0ZXJuLCBWZXJ6YXViZXJ1bmdlbiBkZXMgU2Nod2VydHMsIHNvd2llIGVpbmlnZSBhbGxnZW1laW5lCisgICAgICBLYW1wZmZhZWhpZ2tlaXRlbiB3aWUgRmludGUsIFBhcmFkZSwgQXVzd2VpY2hlbiwgQXVzZmFsbC4KKworICAgICAgRGVyIEtsZXJpa2FsZSBad2VpZyB3aWRtZXQgc2ljaCBkZXIgSHVsZGlndW5nIHZvbiBTZXl0LUhhbWFraGEgdW5kIGRlcgorICAgICAgZHVua2xlbiBTZWl0ZSBkZXIgTWFjaHQuIERpZSBGYWVoaWdrZWl0ZW4gZGVyIEtsZXJpa2VyIHNpbmQgei5CLgorICAgICAgdmVyZmx1Y2hlbiwgdmVyZ2lmdGVuLCBkYXMgQmVzY2h3b2VyZW4gdm9uIFpvbWJpZXMsIGplZG9jaCBrZWluZQorICAgICAgSGVpbHphdWJlciBvZGVyIHNvZXR3YXMuCisKKyAgICAgIEltIE1hZ2llendlaWcgZ2VodCBlcyBkYW5uIHVtIFphdWJlcnNwcnVlY2hlIGltIGVuZ2VyZW4gU2lubmUuCisgICAgICBGZXVlcmxhbnplbiwgU2NobWVyemVuLCBTY2h1dHp6YXViZXIgdW5kIGFlaG5saWNoZXMuCisKKyAgICAgIEplZGVyIGRlciBkcmVpIFp3ZWlnZSBoYXQgZWluZW4gZWlnZW5lbiBWb3JzaXR6ZW5kZW4uIE55ZWxhIGRpZQorICAgICAgV2FmZmVuc2NobWllZGluIHN0ZWh0IGRlbSBLYW1wZnp3ZWlnIHZvci4gVGVvJ25hJ2thdGwgZGVyIEhvaGVwcmllc3RlciwKKyAgICAgIGRlbSBLbGVyaWthbGVuIFp3ZWlnIHVuZCBOZW5haXMndSBkaWUgWmF1YmVyaW4gZGVtIE1hZ2llendlaWcuCisgICAgICBBdXNzZXJkZW0gaXN0IE5lbmFpcyd1IGFscyBWb3JzaXR6ZW5kZSBkZXMgTWFnaWV6d2VpZ3MgdHJhZGl0aW9uZWxsCisgICAgICBhdWNoIGRhcyBHaWxkZW5vYmVyaGF1cHQuIFp1c2FldHpsaWNoIHp1IGRlbiBkcmVpIFZvcnNpdHplbmRlbiBnaWJ0IGVzCisgICAgICBkcmVpIHdlaXRlcmUgd2ljaHRpZ2UgTlBDcy4gRGVyIFJ1ZXN0dW5nc3NjaG1pZWQgQmFpeSdTYWdhciwgZGVyIFdpcnQKKyAgICAgIHVuZCBlaW5lIEtyYWV1dGVya3VuZGlnZSBpbSBMYWJvciBkZXIgRGVsZmVuZ2lsZGUuCisKKworIFNJRUhFIEFVQ0g6CisgICAgZ2lsZGVuLCBhdHRyaWJ1dGUsIGViZW5lbiwgZ2lsZGVuc3R1ZmVuLCBhYnN0dWZ1bmdlbgorCisKKyBMRVRaVEUgQWVOREVSVU5HOgorICAgIE1vbiwgMjguIEp1bCAyMDAzLCAyMzoyNzowNCB2b24gUGFkcmVpYwpkaWZmIC0tZ2l0IGEvZG9jL2hlbHAvZWRpdG9yIGIvZG9jL2hlbHAvZWRpdG9yCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjFlYmNmYjQKLS0tIC9kZXYvbnVsbAorKysgYi9kb2MvaGVscC9lZGl0b3IKQEAgLTAsMCArMSwxMjkgQEAKKworRGVyIEVkaXRvcgorPT09PT09PT09PQorCisgICAgRGVyIEVkaXRvciB3aXJkIHZvbiBkZXIgWmVpdHVuZywgZGVyIFBvc3QgdW5kIGluIGRlbiBTZWhlcmhhZXVzZXJuCisgICAgdmVyd2VuZGV0LiBFcyBiZXN0ZWh0IGtlaW5lIFRyZW5udW5nIHp3aXNjaGVuIEVpbmdhYmUtIHVuZCBLb21tYW5kb21vZHVzOworICAgIEJlZmVobGUgd2VyZGVuIG1pdCBlaW5lciBUaWxkZSAofikgYWxzIGVyc3RlbSBaZWljaGVuIGluIGRlciBaZWlsZQorICAgIGVpbmdlbGVpdGV0IChBdXNuYWhtZW46IC4sICoqIHVuZCAhPGNtZD4pLgorCisgICAgRGVyIEVkaXRvciB2ZXJzdGVodCBmb2xnZW5kZSBCZWZlaGxlOgorCisgICAgIEFsbGdlbWVpbmUgS29tbWFuZG9zCisKKyAgICAgICAgIC4gb2RlciAqKgorICAgICAgICAgICAgRGVyIGVpbmdlZ2ViZW5lIFRleHQgd2lyZCB1ZWJlcm5vbW1lbiwgZGVyIEVkaXRvciBiZWVuZGV0LgorCisgICAgICAgICAhPGNtZD4KKyAgICAgICAgICAgIERhcyBLb21tYW5kbyA8Y21kPiB3aXJkIGF1c2dlZnVlaHJ0LCBhbHMgd2VubiBEdSBnZXJhZGUgbmljaHQKKyAgICAgICAgICAgIHNjaHJlaWJlbiB3dWVyZGVzdC4KKworICAgICAgICAgfnEKKyAgICAgICAgICAgIEFiYnJ1Y2guIFNjaG9uIGVpbmdlZ2ViZW5lciBUZXh0IGlzdCB2ZXJsb3JlbjsgaW4gZGVyIFBvc3QvTVBBCisgICAgICAgICAgICB3aXJkIGtlaW4gQXJ0aWtlbCBlcnpldWd0LgorCisgICAgICAgICB+aAorICAgICAgICAgICAgRWluZSBIaWxmZXNlaXRlIHdpcmQgYW5nZXplaWd0IChxdWFzaSBlaW5lIEt1cnpmb3JtIGRpZXNlciBTZWl0ZSkKKworICAgICAgICAgfiEKKyAgICAgICAgICAgIERlciBFZGl0b3Igd2lyZCB2b3J1ZWJlcmdlaGVuZCB2ZXJsYXNzZW4uCisgICAgICAgICAgICBNYW4ga2FubiBtaXQgZGVtIEJlZmVobCB+ciB3ZWl0ZXJzY2hyZWliZW4gKGRhcyB+ciBpc3QgYWxzCisgICAgICAgICAgICBub3JtYWxlcyBLb21tYW5kbyBhdXNzZXJoYWxiIGRlcyBFZGl0b3JzIGVpbnp1Z2ViZW4hKQorCisgICAgICAgICB+cgorICAgICAgICAgICAgRGVyIGdlc2FtdGUgYmlzaGVyIGdlc2NocmllYmVuZSBUZXh0IHdpcmQgYW5nZXplaWd0LgorICAgICAgICAgflIKKyAgICAgICAgICAgIFdpZSB+ciwgZXMgd2VyZGVuIGplZG9jaCBub2NoIFplaWxlbm51bW1lcm4gbWl0IGF1c2dlZ2ViZW4uCisKKyAgICAgICAgIH56CisgICAgICAgICAgICBEZXIgVGV4dGF1c3NjaG5pdHQgdW0gZGVuIEN1cnNvciBoZXJ1bSB3aXJkIGFuZ2V6ZWlndC4KKyAgICAgICAgIH5aCisgICAgICAgICAgICB3aWUgfnosIGVzIHdlcmRlbiBqZWRvY2ggbm9jaCBaZWlsZW5udW1tZXJuIG1pdCBhdXNnZWdlYmVuLgorCisgICAgICAgICB+cworICAgICAgICAgICAgRXMgd2VyZGVuIFN0YXR1c2luZm9ybWF0aW9uZW4gYW5nZXplaWd0LgorCisgICAgICAgICB+YgorICAgICAgICAgICAgRXMgd2lyZCB6d2lzY2hlbiBGbGF0dGVyc2F0eiAoZGVmYXVsdCkgdW5kIEJsb2Nrc2F0eiB1bWdlc2NoYWx0ZXQKKworICAgICAgICBOdXIgZnVlciBNYWdpZXI6CisKKyAgICAgICAgIH5pIDxmaWxlbmFtZT4KKyAgICAgICAgICAgIERpZSBEYXRlaSA8ZmlsZW5hbWU+IHdpcmQgYW4gZGVyIG1vbWVudGFuZW4gQ3Vyc29ycG9zaXRpb24gaW4gZGVuCisgICAgICAgICAgICBUZXh0IGVpbmdlZnVlZ3QuCisgICAgICAgICAgICBBdXMgS29tcGF0aWJpbGl0YWV0c2dydWVuZGVuIGthbm4gbWFuIGF1Y2ggfnIgPGZpbGVuYW1lPiBuZWhtZW4uCisKKyAgICAgWmVpbGVub3JpZW50aWVydGUgS29tbWFuZG9zCisKKyAgICAgICAgIH5kCisgICAgICAgICAgICBEaWUgbGV0enRlIFplaWxlIHdpcmQgZ2Vsb2VzY2h0IChUZXh0LSwgbmljaHQgRWluZ2FiZXplaWxlKS4KKworICAgICAgICAgfnYKKyAgICAgICAgICAgIEVzIHdpcmQgendpc2NoZW4gZGVtIEVpbmZ1ZWdlbW9kdXMgKGRlZmF1bHQpIHVuZCBkZW0KKyAgICAgICAgICAgIFVlYmVyc2NocmVpYm1vZHVzIHVtZ2VzY2hhbHRldC4KKworICAgICAgICAgfnMgIXMxIXMyIQorICAgICAgICAgICAgRXJzZXR6dCBkYXMgZXJzdGUgVm9ya29tbW5pcyBkZXMgU3RyaW5ncyBzMSBkdXJjaCBkZW4gU3RyaW5nIHMyIGluCisgICAgICAgICAgICBkZXIgYWt0dWVsbGVuIFplaWxlLgorICAgICAgICAgICAgU3RhdHQgZHVyY2ggISBrb2VubmVuIGRpZSBTdHJpbmdzIGF1Y2ggZHVyY2ggYmVsaWViaWdlIGFuZGVyZQorICAgICAgICAgICAgWmVpY2hlbiBnZXRyZW5udCB3ZXJkZW4sIGRpZSB3ZWRlciBpbiBzMSBub2NoIGluIHMyIHZvcmtvbW1lbi4KKyAgICAgICAgICAgIE1pdCBkZXIgRm9ybSB+cyAhczEhczIhcCB3aXJkIGRpZSBnZWFlbmRlcnRlIFplaWxlIGRpcmVrdAorICAgICAgICAgICAgYW5nZXplaWd0LgorCisgICAgICAgICB+ZgorICAgICAgICAgICAgRm9ybWF0aWVydCBkaWUgYWt0dWVsbGUgWmVpbGUgbmV1LgorCisgICAgIEN1cnNvcmtvbW1hbmRvcworCisgICAgICAgICB+Y3UKKyAgICAgICAgICAgIERlciBDdXJzb3Igd2lyZCB1bSBlaW5lIFplaWxlIG5hY2ggb2JlbiBiZXdlZ3QuCisgICAgICAgICB+Y2QKKyAgICAgICAgICAgIERlciBDdXJzb3Igd2lyZCB1bSBlaW5lIFplaWxlIG5hY2ggdW50ZW4gYmV3ZWd0LgorCisgICAgICAgICB+Y3QKKyAgICAgICAgICAgIERlciBDdXJzb3Igd2lyZCBhbiBkZW4gQW5mYW5nIGRlcyBUZXh0ZXMgYmV3ZWd0LgorICAgICAgICAgfmNiCisgICAgICAgICAgICBEZXIgQ3Vyc29yIHdpcmQgYW4gZGFzIEVuZGUgZGVzIFRleHRlcyBiZXdlZ3QuCisKKyAgICAgICAgIH5jcworICAgICAgICAgICAgRGVyIEN1cnNvciB3aXJkIGFuIGRlbiBBbmZhbmcgZGVzIG1hcmtpZXJ0ZW4gQmxvY2tzIGJld2VndC4KKyAgICAgICAgIH5jZQorICAgICAgICAgICAgRGVyIEN1cnNvciB3aXJkIGFuIGRhcyBFbmRlIGRlcyBtYXJraWVydGVuIEJsb2NrcyBiZXdlZ3QuCisKKyAgICAgICAgIH5jPG5yPgorICAgICAgICAgICAgRGVyIEN1cnNvciB3aXJkIGluIGRpZSBaZWlsZSA8bnI+IGJld2VndC4KKyAgICAgICAgIH5jKzxucj4KKyAgICAgICAgICAgIERlciBDdXJzb3Igd2lyZCB1bSA8bnI+IFplaWxlbiBuYWNoIG9iZW4gYmV3ZWd0LgorICAgICAgICAgfmMtPG5yPgorICAgICAgICAgICAgRGVyIEN1cnNvciB3aXJkIHVtIDxucj4gWmVpbGVuIG5hY2ggdW50ZW4gYmV3ZWd0LgorCisgICAgIEJsb2Nrb3JpZW50aWVydGUgS29tbWFuZG9zCisKKyAgICAgICAgIH5icworICAgICAgICAgICAgRGVyIEJsb2NrYW5mYW5nIHdpcmQgYXVmIGRpZSBha3R1ZWxsZSBaZWlsZSBnZXNldHp0LgorICAgICAgICAgfmJzPG5yPgorICAgICAgICAgICAgRGVyIEJsb2NrYW5mYW5nIHdpcmQgYXVmIGRpZSBaZWlsZSA8bnI+IGdlc2V0enQuCisKKyAgICAgICAgIH5iZQorICAgICAgICAgICAgRGFzIEJsb2NrZW5kZSB3aXJkIGF1ZiBkaWUgYWt0dWVsbGUgWmVpbGUgZ2VzZXR6dC4KKyAgICAgICAgIH5iZTxucj4KKyAgICAgICAgICAgIERhcyBCbG9ja2VuZGUgd2lyZCBhdWYgZGllIFplaWxlIDxucj4gZ2VzZXR6dC4KKworICAgICAgICAgfkYKKyAgICAgICAgICAgIERlciBtYXJraWVydGUgQmxvY2sgd2lyZCBuZXUgZm9ybWF0aWVydC4KKworICAgICAgICAgfkQKKyAgICAgICAgICAgIERlciBtYXJraWVydGUgQmxvY2sgd2lyZCBnZWxvZXNjaHQuCisKKyAgICAgICAgIH5tCisgICAgICAgICAgICBEZXIgbWFya2llcnRlIEJsb2NrIHdpcmQgYW4gZGllIGFrdHVlbGxlIEN1cnNvcnBvc2l0aW9uCisgICAgICAgICAgICB2ZXJzY2hvYmVuLgorCisgICAgQWxsZXMgYW5kZXJlIGdpbHQgYWxzIFRleHQuIFVlYmVybGFuZ2UgWmVpbGVuIHdlcmRlbiBhdWYgZWluZSBtYXhpbWFsZQorICAgIExhZW5nZSB2b24gNzggWmVpY2hlbiB1bWdlYnJvY2hlbi4KKworICAgIE5hY2ggfiEsIG9kZXIgd2VubiBtYW4gYmVpbSBTY2hyZWliZW4gbmV0enRvdCB3aXJkLCBrYW5uIG1hbiBtaXQgfnIgd2llZGVyCisgICAgaW4gZGVuIEVkaXRvciBlaW5zdGVpZ2VuLgorCisgTEVUWlRFIEFlTkRFUlVORzoKKyAgICBUaHUsIDI0LjA3LjE5OTcsIDA5OjAwOjAwIHZvbiBXYXJnb24KZGlmZiAtLWdpdCBhL2RvYy9oZWxwL2VpbmZ1ZWhydW5nIGIvZG9jL2hlbHAvZWluZnVlaHJ1bmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYmM4ZThkYwotLS0gL2Rldi9udWxsCisrKyBiL2RvYy9oZWxwL2VpbmZ1ZWhydW5nCkBAIC0wLDAgKzEsNTggQEAKK0VpbmUga3VyemUgRWluZnVlaHJ1bmcKKz09PT09PT09PT09PT09PT09PT09PT0KKworSGFsbG8gdW5kIHdpbGxrb21tZW4gaW0gTW9yZ2VuR3JhdWVuIQorCitEdSBiZWZpbmRlc3QgRGljaCBqZXR6dCBpbiBlaW5lciB2aXJ0dWVsbGVuIFdlbHQsIGluIGRlciBEdSBEZWluZW4gQ2hhcmFrdGVyCisoc28gYmV6ZWljaG5ldCBtYW4gRGVpbmUgU3BpZWxmaWd1cikgbWl0dGVscyB2ZXJiYWxlciBCZWZlaGxlIGRhenUgYnJpbmdlbgora2FubnN0LCBkaWUgdmVyc2NoaWVkZW5zdGVuIEJld2VndW5nZW4gdW5kIEFrdGlvbmVuIGF1c3p1ZnVlaHJlbi4gRHUga2FubnN0Cit1bWhlcmdlaGVuLCBEaWNoIHVtc2VoZW4sIGthZW1wZmVuLCBEaW5nZSBhdWZoZWJlbiB1bmQgYmVudXR6ZW4gdW5kIHZpZWxlcworbWVociEgRGF6dSBzb2xsdGVzdCBEdSBEaWNoIG1pdCBkZW4gZ3J1bmRsZWdlbmRlbiBCZWZlaGxlbiB2ZXJ0cmF1dCBtYWNoZW4sCitkaWUgZGF6dSBub3R3ZW5kaWcgc2luZC4gRm9sZ2VuZGUgSGlsZmVzZWl0ZW4gc2VpZW4gRGlyIGFuJ3MgSGVyeiBnZWxlZ3Q6CisKKy0gImhpbGZlIGJld2VndW5nIgorLSAiaGlsZmUgc3ludGF4IgorCitEdSBrYW5uc3QgRGljaCBtaXQgZGVuIGFuZGVyZW4gU3BpZWxlcm4gYXVmIHZlcnNjaGllZGVuZSBXZWlzZQordmVyc3RhZW5kaWdlbi4gV2ljaHRpZyBpc3QgenVtIGVpbmVuIGRhcyBkaXJla3RlIE1pdHRlaWxlbiwgZGFzIGZ1bmt0aW9uaWVydAorc286IAorCisidGVpbGUgPHNwaWVsZXJuYW1lPiBtaXQgPG5hY2hyaWNodD4iCisKK2Fsc28genVtIEJlaXNwaWVsCisKKyJ0ZWlsZSB6b29rIG1pdCBoYWxsbyBtdWRnb3R0ISIKKworRGFzIGFuZGVyZSBzaW5kIGRpZSBzb2dlbmFubnRlbiAiRWJlbmVuIiwgYXVmIGRlbmVuIER1IGFsbGVuIFNwaWVsZXJuIChkaWUKK2RvcnQgZ3JhZGUgbWl0aG9lcmVuKSBldHdhcyBtaXR0ZWlsZW4ga2FubnN0LiBBbSBBbmZhbmcgYmVmaW5kZXN0IER1IERpY2gKK2F1ZiBkZW4gRWJlbmUgImFuZmFlbmdlciIgdW5kICJhYmVudGV1ZXIiLiBXZW5uIER1IHp1bSBCZWlzcGllbCBkaWUgYW5kZXJlbgorU3BpZWxlciBldHdhcyBmcmFnZW4gbW9lY2h0ZXN0LCB0aXBwIHp1bSBCZWlzcGllbAorCistYW5mYWVuZ2VyIEhhbGxvIGlociBkYSBkcmF1c3NlbiEgV2llIGtvbW1lIGljaCB6dXIgQWJlbnRldXJlcmdpbGRlPworCit1bmQgYWxsZSwgZGllIGF1ZiBkZXIgQW5mYWVuZ2VyZWJlbmUgbWl0aG9lcmVuLCB3ZXJkZW4gZGllc2UgTmFjaHJpY2h0CitiZWtvbW1lbi4gRnVlciB3ZWl0ZXJlIEluZm9ybWF0aW9uZW4genUgZGVuIEViZW5lbiBsaWVzIGVpbmZhY2ggbWFsCitkaWUgSGlsZmVzZWl0ZSBkYXp1ICgiaGlsZmUgZWJlbmVuIikuCisKK0VpbmVzIGRlciBIYXVwdHppZWxlIGRpZXNlcyBTcGllbGVzIGlzdCwgc2VpbmUgU3BpZWxmaWd1ciB3ZWl0ZXJ6dWVudHdpY2tlbG4sCithbHNvIGRpZSBXZXJ0ZSB6dSB2ZXJiZXNzZXJuLiBJbmZvcm1hdGlvbmVuIGRhenUgZmluZGVzdCBEdSBhdWYgZGVuCitIaWxmZXNlaXRlbiAic3R1ZmVucHVua3RlIiwgImFiZW50ZXVlciIgdW5kICJhdHRyaWJ1dGUiLgorCitFcyBzZWkgbm9jaCBkYXJhdWYgaGluZ2V3aWVzZW4sIGRhc3MgZXMgbmF0dWVybGljaCBhdWNoIGdld2lzc2UgUmVnZWxuCitnaWJ0LCBhbiBkaWUgc2ljaCBkaWUgU3BpZWxlciBoYWx0ZW4gbXVlc3NlbiAoImhpbGZlIHJlZ2VsbiIpLgorTGllcyBEaXIgZGllc2UgYXVmIGplZGVuIEZhbGwgaW4gUnVoZSB2b2xsc3RhZW5kaWcgZHVyY2ghCisKK0VzIGdpYnQgYXVjaCBnZXdpc3NlIFNwaWVsZXIsIGRpZSBzaWNoIGV4dHJhIGJlcmVpdGVya2xhZXJ0IGhhYmVuLCBEaXIgYWxzCitBbmZhZW5nZXIgenVyIFNlaXRlIHp1IHN0ZWhlbiwgZGllIENpY2Vyb25lbi4gV2VubiBEdSB3aXNzZW4gd2lsbHN0LCB3ZXIgCitkYXZvbiBvbmxpbmUgaXN0LCBrYW5uc3QgRHUgZGVuIEJlZmVobAorCisia3dlciBjaWNlcm9uZSIKKwordmVyd2VuZGVuLiBEaWUgc29sbHRlbiBkYW5uIGFud2VzZW5kIHNlaW4gdW5kIGF1Y2ggWmVpdCBmdWVyIERpY2ggdW5kIERlaW5lCitGcmFnZW4gaGFiZW4uCisKKyBTSUVIRSBBVUNIOgorICAgICBhYmVudGV1ZXIsIGJld2VndW5nLCBmb3JzY2hlcnB1bmt0ZSwgcmVnZWxuLCBzdHVmZW4sIHN5bnRheCwgY2ljZXJvbmVuCisgCisgTEVUWlRFIEFlTkRFUlVORzoKKyAgICBTdW4sIDI0LjA2LjIwMDEsIDIyOjMwOjAwIHZvbiBOYWNodHdpbmQKZGlmZiAtLWdpdCBhL2RvYy9oZWxwL2Vyc3RraWxsc3R1ZmVucHVua3RlIGIvZG9jL2hlbHAvZXJzdGtpbGxzdHVmZW5wdW5rdGUKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMDE3Njg4MQotLS0gL2Rldi9udWxsCisrKyBiL2RvYy9oZWxwL2Vyc3RraWxsc3R1ZmVucHVua3RlCkBAIC0wLDAgKzEsNDMgQEAKK0Vyc3RraWxsLVN0dWZlbnB1bmt0ZSAoRUstU3R1cHNlKQorPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CisKKyAgICBadXNhZXR6bGljaCB6dSBkZXIgYWxsZ2VtZWluZW4gRXJsYWV1dGVydW5nLCB3YXMgRUstU3R1ZmVucHVua3RlIHNpbmQKKyAgICB1bmQgd29mdWVyIGRpZXNlIGd1dGdlc2NocmllYmVuIHdlcmRlbiwgZGllIGluIGRlciBIaWxmZXNlaXRlIHp1IGRlbgorICAgIFN0dWZlbnB1bmt0ZW4gbmFjaHp1bGVzZW4gaXN0LCBzZWkgaGllciBlaW4gdGVjaG5pc2NoZXMgRGV0YWlsIHp1IAorICAgIEVyc3RraWxsLVN0dWZlbnB1bmt0ZW4gaW4gWnVzYW1tZW5oYW5nIG1pdCBLZXJiaG9seiB1bmQgRHVlc3RlcndhbGQtCisgICAgUGxha2V0dGUgKGJlaWRlcyBRdWVzdGJlbG9obnVuZ2VuKSBuYWVoZXIgZXJsYWV1dGVydDoKKyAgICAgIAorICAgIFdlbm4gZWluIE1vbnN0ZXIsIGZ1ZXIgZGFzIEVLLVN0dXBzZSBndXRnZXNjaHJpZWJlbiB3ZXJkZW4sIHp1bQorICAgIGFsbGVyZXJzdGVuIE1hbCB1ZWJlcmhhdXB0IGdldG9ldGV0IHdpcmQsIGQuaC4gaW4gZGVyIFJlZ2VsIG5hY2gKKyAgICBkZW0gTmV1YW5zY2hsdXNzIGVpbmVzIEdlYmlldGVzLCBpc3QgZGllc2VyIEtpbGwgbm9jaCBuaWNodCBzb2ZvcnQKKyAgICBhdWYgZGVyIFBsYWtldHRlIGVya2VubmJhciwgdW5kIGF1Y2ggbm9jaCBuaWNodCBpbiBkaWUgR2VzYW10LQorICAgIFN0dWZlbnB1bmt0ZSBkZXMgU3BpZWxlcnMgZWluZ2VyZWNobmV0LiBEYXMgS2VyYmhvbHogd2lyZCBqZWRvY2gKKyAgICBhbnplaWdlbiwgZGFzcyBkZXIgU3BpZWxlciBkZW4gS2lsbCBzY2hvbiBoYXQuCisgICAgCisgICAgQXVzIHRlY2huaXNjaGVuIEdydWVuZGVuIGlzdCBlcyB1bnVtZ2FlbmdsaWNoLCBzb2xjaGUgImZyaXNjaGVuIiBFS3MKKyAgICB6dW5hZWNoc3QgbnVyIHRlbXBvcmFlciB6dSByZWdpc3RyaWVyZW4gdW5kIHZvbiBlaW5lbSBFcnptYWdpZXIgYXVmCisgICAgR3VlbHRpZ2tlaXQgcHJ1ZWZlbiB6dSBsYXNzZW4uIFNvIGxhbmdlIGRlciB6dXN0YWVuZGlnZSBFTSAod2VyIGRhcyAKKyAgICBqZXdlaWxzICBpc3QsIGxhZXNzdCBzaWNoIGF1ZiBkZXIgSGlsZmVzZWl0ZSAiZXJ6bWFnaWVyIiBuYWNobGVzZW4pCisgICAgZGVuIEVLIG5pY2h0IGJlc3RhZXRpZ3QgaGF0LCBnaWJ0IGVzIHZvcnVlYmVyZ2VoZW5kIGFsc28gZWluZQorICAgIERpc2tyZXBhbnogendpc2NoZW4gS2VyYmhvbHosIFN0dWZlIHVuZCBQbGFrZXR0ZS4gU29iYWxkIGRlcgorICAgIEVLIGplZG9jaCBiZXN0YWV0aWd0IHd1cmRlLCB2ZXJzY2h3aW5kZXQgZGllc2UuCisKKyAgICBXZWl0ZXJoaW4gaXN0IHp1IGJlYWNodGVuLCBkYXNzIGV2ZW50dWVsbCB2ZXJnZWJlbmUgU29uZGVyLQorICAgIFN0dWZlbnB1bmt0ZSBmdWVyIGJlc29uZGVycyBoYXJ0ZSBNb25zdGVyICh6LkIuIERyYWNoZW5nb3R0KQorICAgIGVyc3QgKm5hY2gqIGVpbmVyIEJlc3RhZXRpZ3VuZyBkZXMgRUtzIGR1cmNoIGRlbiB6dXN0YWVuZGlnZW4KKyAgICBFTSBlaW5nZXRyYWdlbiB3ZXJkZW4ga29lbm5lbiwgc28gZGFzcyBlcyBuYWNodHJhZWdsaWNoIG5vY2ggenUKKyAgICBlaW5lciBFcmhvZWh1bmcgZGVyIFN0dWZlbnB1bmt0ZSBkZXMgYmV0cmVmZmVuZGVuIFNwaWVsZXJzIGtvbW1lbiBrYW5uLgorCisgICAgV0lDSFRJRzoKKyAgICBEaWVzZSBIaW53ZWlzZSBnZWx0ZW4gbnVyIGZ1ZXIgc29sY2hlIFNwaWVsZXIsIGRpZSBNb25zdGVyIGdldG9ldGV0IAorICAgIGhhYmVuLCB3ZWxjaGUgbm9jaCBuaWUgenV2b3IgdW1nZWhhdWVuIHd1cmRlbi4gRnVlciBhbGxlLCBkaWUgZGVuIEtpbGwgCisgICAgZXJzdCBzcGFldGVyIGVycmVpY2hlbiwgYWVuZGVydCBzaWNoIG5pY2h0czogRGllIFB1bmt0ZSB3ZXJkZW4gc29mb3J0IGluIAorICAgIHZvbGxlciBIb2VoZSBndXRnZXNjaHJpZWJlbiwgdW5kIGRpZSBQbGFrZXR0ZSB6YWVobHQgZGVuIEVLIGF1Y2ggc29mb3J0IAorICAgIG1pdC4KKworICBTSUVIRSBBVUNIOgorICAgIHN0dWZlbiwgc3R1ZmVucHVua3RlLCBlcnptYWdpZXIKKworICBMRVRaVEUgQWVOREVSVU5HOgorICAgIDE2LiBBdWd1c3QgMjAxMywgdm9uIEFyYXRob3JuCisKZGlmZiAtLWdpdCBhL2RvYy9oZWxwL2Vyem1hZ2llciBiL2RvYy9oZWxwL2Vyem1hZ2llcgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44OTYzMDAwCi0tLSAvZGV2L251bGwKKysrIGIvZG9jL2hlbHAvZXJ6bWFnaWVyCkBAIC0wLDAgKzEsNjYgQEAKK0Vyem1hZ2llcgorPT09PT09PT09CisKK0VSWk1BR0lFUjoKKyAgRGVyIEVpbmZsdXNzYmVyZWljaCBkZXIgRXJ6bWFnaWVyIGJlc2NocmFlbmt0IHNpY2ggbmljaHQgbnVyIGF1ZiBCZXJlaWNoZQorICBpbm5lcmhhbGIgZGVzIFNwaWVscywgc29uZGVybiBhdWNoIGF1ZiBCZXJlaWNoZSBhdXNzZXJoYWxiLiBTaWUga29lbm5lbgorICBBZW5kZXJ1bmdlbiBhbiBkZXIgQmFzaXMtTXVkTGliIHZvcm5laG1lbiB1bmQgZGFtaXQgZGllIFJhaG1lbmJlZGluZ3VuZ2VuCisgIGRlcyBTcGllbHMgYWVuZGVybiBvZGVyIGVyZ2Flbnplbi4gQXVzc2VyZGVtIHNpbmQgc2llIGRpZSByaWNodGlnZW4KKyAgQW5zcHJlY2hwYXJ0bmVyLCB3ZW5uIG1hbiBzZWluIFBhc3N3b3J0IHZlcmdlc3NlbiBoYXQsIG9kZXIgd2VubiBkdXJjaAorICBlaW5lbiBBYnN0dXJ6IGRlcyBSZWNobmVycyBkYXMgU2F2ZWZpbGUgZWluZXMgU3BpZWxlcnMga2FwdXR0IGdlZ2FuZ2VuCisgIGlzdC4KKworICBEaWUgTXVkR29ldHRlciBKb2YsIFJ1bWF0YSB1bmQgWm9vayBzaW5kIGRhYmVpIGRpZSBob2VjaHN0ZW4gSW5zdGFuemVuOworICBKb2YgbWFjaHQgc2ljaCBhbGxlcmRpbmdzIGluIGxldHp0ZXIgWmVpdCBldHdhcyByYXIuCisKK0RpZSBBdWZnYWJlbmJlcmVpY2hlIGRlciBlaW56ZWxuZW4gRXJ6bWFnaWVyIHNpbmQgd2llIGZvbGd0IGZlc3RnZWxlZ3Q6CisKKyAgICAgIEFtYXJ5bGxpcworICAgICAgICBBbWFyeWxsaXMgaXN0IGZ1ZXIgZGllIEFkbWluaXN0cmF0aW9uIHVuZCBkYXMgSG9zdGluZyB1bnNlcmVzCisgICAgICAgIFNlcnZlcnMgenVzdGFlbmRpZyB1bmQgaGF0IGF1c3NlcmRlbSBkYXMgQW10IGRlcyBTaGVyaWZmcyBpbm5lLgorICAgICAgQXJhdGhvcm4KKyAgICAgICAgQXJhdGhvcm4ga3VlbW1lcnQgc2ljaCB1bSBkaWUgVmVyZ2FiZSBkZXIgRXJzdGtpbGwtU3R1cHNlIChkYXp1CisgICAgICAgIGJlZ3V0YWNodGV0IGVyIGRpZSBOUENzKS4gRGFydWViZXJoaW5hdXMga3VlbW1lcnQgZXIgc2ljaCAKKyAgICAgICAgdW0gZGllIFdlaXRlcmVudHdpY2tsdW5nIGRlciBNdWRsaWIuCisgICAgICBBcmsKKyAgICAgICAgQXJrIHRlc3RldCBuZXVlIEFiZW50ZXVlciBzb3dpZSBzb2dlbmFubnRlIE1pbmlRdWVzdHMgYmV2b3Igc2llCisgICAgICAgIGF1ZiBTcGllbGVyIGxvc2dlbGFzc2VuIHdlcmRlbiB1bmQgdHJhZWd0IGRpZXNlIG1pdCAKKyAgICAgICAgYW5nZW1lc3NlbmVyIFB1bmt0emFobCBlaW4uCisgICAgICAgIEVyIGt1ZW1tZXJ0IHNpY2ggdW0gZGllIFBmbGVnZSBkZXIgYmVzdGVoZW5kZW4gUmFzc2VuIHNvd2llIGRpZQorICAgICAgICBBdXNhcmJlaXR1bmcgd2VpdGVyZXIgUmFzc2VuLiBEYXp1IGdlaG9lcmVuIHNvd29obCBkaWUgUmFzc2Vuc2hlbGxzCisgICAgICAgIGFscyBhdWNoIGRpZSBTZWVsZS4KKyAgICAgIEh1bW5pCisgICAgICAgIEh1bW5pIGlzdCBmdWVyIGRpZSBHaWxkZW4tQmFsYW5jZSB6dXN0YWVuZGlnIHVuZCBsZWl0ZXQgZGFzCisgICAgICAgIEJhbGFuY2UtVGVhbS4gRGVzIFdlaXRlcmVuIGlzdCBlciBmdWVyIGRpZSBIZWlsdW5ncy1CYWxhbmNlCisgICAgICAgIHp1c3RhZW5kaWcuCisgICAgICBKb2YKKyAgICAgICAgSm9mIGlzdCBhbHMgTXVkR290dCBmdWVyIG1laHIgb2RlciB3ZW5pZ2VyIGFsbGVzIHp1c3RhZW5kaWcuCisgICAgICBSdW1hdGEKKyAgICAgICAgUnVtYXRhIGlzdCBNdWRHb2V0dGluIHVuZCBkYW1pdCBhdWNoIE1hZWRjaGVuIGZ1ZXIgYWxsZXMuCisgICAgICAgIFVuZCBkZWxlZ2llcnQgZGFubiA7LSkKKyAgICAgIE1pcmlsCisgICAgICAgIE1pcmlsIHZlcndhbHRldCBkaWUgRm9yc2NoZXJwdW5rdGUgdW5kIFphdWJlcnRyYWVua2UuCisgICAgICBOLk4uIAorICAgICAgICBFci9TaWUgaXN0IHdlaXRlcmhpbiBmdWVyIGRpZSBQZmxlZ2UgZGVzIFN0dWZlbnN5c3RlbXMgdmVyYW50d29ydGxpY2ggCisgICAgICAgIHVuZCBrdWVtbWVydCBzaWNoIHVtIGRpZSBQZmxlZ2UgZGVyIE11ZGxpYi4KKyAgICAgIFplc3N0cmEKKyAgICAgICAgWmVzc3RyYSBrdWVtbWVydCBzaWNoIHVtIHVuc2VyZW4gRHJpdmVyIHVuZCBkaWUgTXVkbGliLgorICAgICAgWm9vaworICAgICAgICBab29rIGlzdCBlaW5lciBkZXIgTXVkR29ldHRlciB1bmQgZGFtaXQgTWFlZGNoZW4gZnVlciAKKyAgICAgICAgYWxsZXMuIEVyIGVybmVubnQgUmVnaW9uc21hZ2llciB1bmQgYmVydWZ0IGRpZXNlIGdlZ2ViZW5lbmZhbGxzCisgICAgICAgIGFiLiBKdW5nbWFnaWVyIGtvZW5uZW4gc2ljaCBtaXQgaWhyZW4gR2VzZWxsZW5zdHVlY2tlbiBnZXJuZSBiZWkKKyAgICAgICAgaWhtIG1lbGRlbi4KKworTm9jaCBpbSBLcmVpcyBkZXIgRXJ6bWFnaWVyLCBhYmVyIHNjaG9uIGlocmVyIEF1ZmdhYmVuIGVudGJ1bmRlbiAKK3NpbmQ6IAorCisgICAgICBIYXRlCisgICAgICAgIEhhdGUgd2FyIGZ1ZXIgZGllIEFkbWluaXN0cmF0aW9uIHVuc2VyZXMgTXVkLVJlY2huZXJzIHp1c3RhZW5kaWcuCisKK1NJRUhFIEFVQ0g6CisgICAgICAgIGViZW5lbiwgcmVnaW9uZW4sIGdvZXR0ZXIKKyAgICAgICAgKG51ciBNYWdpZXIpOiBiYWxhbmNlCisKK0xFVFpURSBBZU5ERVJVTkc6CisgICAgICAgIDIwMTEtMDktMjUgdm9uIFpvb2suCisKZGlmZiAtLWdpdCBhL2RvYy9oZWxwL2Vzc2VuX3RyaW5rZW4gYi9kb2MvaGVscC9lc3Nlbl90cmlua2VuCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjg4N2M0ZWQKLS0tIC9kZXYvbnVsbAorKysgYi9kb2MvaGVscC9lc3Nlbl90cmlua2VuCkBAIC0wLDAgKzEsMzAgQEAKKworRXNzZW4gdW5kIFRyaW5rZW4KKz09PT09PT09PT09PT09PT09CisKKyAgICAgRWluZXMgdm9yYXVzOiBFc3NlbiB1bmQgVHJpbmtlbiBzaW5kIGluIE1vcmdlbmdyYXVlbiBuaWNodCBsZWJlbnMtCisgICAgIG5vdHdlbmRpZy4gTmllbWFuZCB3aXJkIGFuIEh1bmdlciBvZGVyIER1cnN0IHN0ZXJiZW4gdW5kIGF1Y2ggZGVyCisgICAgIEdhbmcgYXVmIGRpZSBUb2lsZXR0ZSBpc3QgaG9lY2hzdCBvcHRpb25hbC4KKworICAgICBIYXVwdHNhZWNobGljaCBpbiBLbmVpcGVuIGthbm4gbWFuIGhpZXIgZXNzZW4sIHRyaW5rZW4gb2RlciBzaWNoCisgICAgIGJlc2F1ZmVuLiBFcyBnaWJ0IGF1Y2ggdHJhZ2JhcmUgR2V0cmFlbmtlIHVuZCBTcGVpc2VuLgorICAgICBEYWJlaSBoYWVuZ2VuIGRpZSBHcmVuemVuIGRlcyBGYXNzdW5nc3Zlcm1vZWdlbnMgZnVlciBOYWhydW5nLAorICAgICBGbHVlc3NpZ2tlaXQgdW5kIEFsa29ob2wgdm9yIGFsbGVtIHZvbiBkZXIgUmFzc2UgYWIsIGFiZXIgYXVjaCBtYW5jaGUKKyAgICAgR2lsZGVuIGtvZW5uZW4gZHVyY2ggTWFnaWUgb2RlciBVZWJ1bmcgZnVlciBtZWhyIEthcGF6aXRhZXQgc29yZ2VuLgorICAgICAKKyAgICAgTWl0IGRlciBaZWl0IGVudGxlZXJ0IG1hbiBzaWNoIGRhbm4gd2llZGVyIHZvbiBhbGxlaW5lLiBNYW4ga2FubiBkaWVzZW0KKyAgICAgVm9yZ2FuZyBhdWNoIGV0d2FzIGF1ZiBkaWUgU3BydWVuZ2UgaGVsZmVuLCBqZWRvY2ggbmljaHQgdW5iZWdyZW56dAorICAgICBvZnQgaW4ga3VyemVyIFplaXQuIEhpZXJiZWkgc29sbHRlIGJlZGFjaHQgd2VyZGVuLCBkYXNzIG51ciBhdWYgS2xvCisgICAgIGdlaGVuIGthbm4sIHdlciBhdWNoIHZvcmhlciBlaW5lIGJlc3RpbW10ZSBNZW5nZSBhbiBOYWhydW5nIHp1IHNpY2gKKyAgICAgZ2Vub21tZW4gaGF0LgorCisgICAgIFNwZWlzZW4gdW5kIEdldHJhZW5rZSBoZWlsZW4gaW4gYmVzdGltbXRlbSBNYXNzLiBEYWJlaSBrb2VubmVuIHNpZQorICAgICBMZWJlbnMtIG9kZXIgS29uemVudHJhdGlvbnNwdW5rdGUgYXVjaCB1bmFiaGFlbmdpZyB2b25laW5hbmRlcgorICAgICBzdGFlcmtlbi4gRWluIGplZGVyIHN1Y2hlIHNpY2ggZGllIEtuZWlwZSBzZWluZXIgV2FobC4KKworIFNJRUhFIEFVQ0g6CisgICAgIGhlaWx1bmcsIGxlYmVuCisKKyBMRVRaVEUgQWVOREVSVU5HOgorICAgICAxNC5NYWVyeiAyMDA0IEdsb2luc29uCisKZGlmZiAtLWdpdCBhL2RvYy9oZWxwL2ZhcSBiL2RvYy9oZWxwL2ZhcQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5lOWM4OWY2Ci0tLSAvZGV2L251bGwKKysrIGIvZG9jL2hlbHAvZmFxCkBAIC0wLDAgKzEsMjggQEAKKworRGllIEZBUQorPT09PT09PQorCisgICAgRHUgaGFzdCBJbnRlcmVzc2UgYW4gZGVuIEZBUT8gR3V0IHNvLCBlaW5lIGtsdWdlIEVudHNjaGVpZHVuZy4KKworICAgIFp1ciBaZWl0IGZpbmRlc3QgRHUgZGllIG5ldWVzdGUgQXVzZ2FiZSBkZXIgRkFRIGF1ZiBkZW0gRlRQIFNlcnZlciBkZXMKKyAgICBNdWRzIGltIFZlcnplaWNobmlzIGAvb3Blbi9UZXh0ZS9GQVEvJy4gRGllc2VzIFZlcnplaWNobmlzIGlzdCBhdWNoIGZ1ZXIKKyAgICBTcGllbGVyIHp1Z2FlbmdsaWNoLiBJbSBlaW56ZWxuZW4gc29sbHRlc3QgRHUgZm9sZ2VuZGVybWFzc2VuIHZvcmdlaGVuOgorCisgICAgPiBmdHAgbWcubXVkLmRlCisgICAgW0FscyBMb2dpbi1OYW1lbiAnYW5vbnltb3VzJyB1bmQgYWxzIFBhc3N3b3J0IERlaW5lIEVNYWlsLUFkcmVzc2UgYW5nZWJlbl0KKyAgICBbTWFnaWVyIGtvZW5uZW4gYXVjaCBOYW1lbiB1bmQgUGFzc3dvcnQgaWhyZXMgQ2hhcmFrdGVycyBuZWhtZW5dCisgICAgPiBjZCAvb3Blbi9UZXh0ZS9GQVEKKyAgICA+IGdldCBtZy1mYXEudjIwMgorCisgICAgRWluZSBhbmRlcmUgTW9lZ2xpY2hrZWl0IGlzdCwgZWluZSBFLU1haWwgYW4gbXVkQG1nLm11ZC5kZSB6dQorICAgIHNjaGlja2VuIHVuZCBhbHMgU3ViamVjdCBgRkFRJyBhbnp1Z2ViZW4uCisKKyAgICBIYXN0IER1IGRhcyBnZXNjaGFmZnQsIGJpc3QgRHUgaW0gQmVzaXR6IGVpbmVzIHVtZmFuZ3JlaWNoZW4gV2Vya2VzIHVlYmVyCisgICAgc2VociB2aWVsZSBGcmFnZW4sIGRpZSBpbSBadXNhbW1lbmhhbmcgbWl0IGRlbSBTcGllbCBhdWZ0YXVjaGVuIGtvZW5uZW4uCisgICAgU29sbHRlIERlaW5lciBNZWludW5nIG5hY2ggZXR3YXMgaW4gZGVuIEZBUSBmZWhsZW4sIHNvIHNjaHJlaWIgZWluZmFjaAorICAgIGVpbmUgTWFpbCBhbiBQaWxncmltIG9kZXIgVmlwZXIuIFBpbGdyaW0gaXN0IGFscyBBdXRvciBkZXMgV2Vya2VzIGZ1ZXIKKyAgICBBbnJlZ3VuZ2VuIHNlaHIgZGFua2Jhci4KKworTEVUWlRFIEFlTkRFUlVORzoKKyAgICBTYW0sIDI5LiBTZXAgMjAwMSwgMTE6MzU6MDEgdm9uIFpvb2suCisKZGlmZiAtLWdpdCBhL2RvYy9oZWxwL2ZvcnNjaGVycHVua3RlIGIvZG9jL2hlbHAvZm9yc2NoZXJwdW5rdGUKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZDEyZGRkOQotLS0gL2Rldi9udWxsCisrKyBiL2RvYy9oZWxwL2ZvcnNjaGVycHVua3RlCkBAIC0wLDAgKzEsNTQgQEAKKworRm9yc2NoZXJwdW5rdGUKKz09PT09PT09PT09PT09CisKKyAgICBEaWUgRm9yc2NoZXJwdW5rdGUgZ2ViZW4gRGVpbmVuIGFrdHVlbGxlbiBHcmFkIGRlciBLZW5udG5pcyBkZXMKKyAgICBNb3JnZW5HcmF1ZW5zIHdpZWRlci4gU2llIHdlcmRlbiBhbGxlcmRpbmdzIG5pY2h0IGFscyBuYWNrdGUgWmFobAorICAgIHByYWVzZW50aWVydCwgc29uZGVybiBpbiBGb3JtIGVpbmVyIEVpbnNjaGFldHp1bmcgZ2VtZXNzZW4gYW4gZGVyIEtlbm50bmlzCisgICAgRGVpbmVyIE1pdHNwaWVsZXIgc293aWUgYW0gZ2VzYW10ZW4gTW9yZ2VuR3JhdWVuLgorCisgICAgRGllIEtlbm50bmlzIHdhZWNoc3QgaW0gTGF1ZmUgZGVyIFplaXQsIHdlbm4gRHUgRGljaCBlaW5pZ2VybWFzc2VuCisgICAgc29yZ2ZhZWx0aWcgdW1zaWVoc3QgdW5kIG1pdCBOUENzIHVudGVyaGFlbHRzdC4gV2VyIGVpbmZhY2ggbnVyIHN0dW1wZiBkYXMKKyAgICBhYnNvbHV0IE5vZXRpZ3N0ZSBlaW5naWJ0LCB1bSBlaW4gQWJlbnRldWVyIHp1IGxvZXNlbiwgZGFyZiBzaWNoIGFsc28KKyAgICBuaWNodCB3dW5kZXJuLCB3ZW5uIGVyIHNpY2ggaW0gTW9yZ2VuR3JhdWVuIHRyb3R6ZGVtIHNvIGd1dCB3aWUgZ2FyIG5pY2h0CisgICAgYXVza2VubnQuCisKKyAgICBEaWUgRm9yc2NoZXJwdW5rdGUgbWFjaGVuIGVpbmVuIGdyb3NzZW4gVGVpbCBkZXIgU3R1ZmVucHVua3RlIGF1cy4KKworICAgIFdlbm4gbWFuIGRpZSBlcnN0ZSBIdWVyZGUgKGBEdSBrZW5uc3QgRGljaCBpbSBNb3JnZW5HcmF1ZW4gc28gZ3V0IHdpZSBnYXIKKyAgICBuaWNodCBhdXMuJykgdWViZXJ3dW5kZW4gaGF0LCBzaW5kIGZvbGdlbmRlIHJlbGF0aXZlbiB1bmQgYWJzb2x1dGVuCisgICAgRWluc3R1ZnVuZ2VuIG1vZWdsaWNoOgorCisgICAgVmVyZ2xpY2hlbiBtaXQgRGVpbmVuIE1pdHNwaWVsZXJuLCBrZW5uc3QgRHUgRGljaCBpbSBNb3JnZW5HcmF1ZW4KKworICAgICAqIGthdW0gYXVzLgorICAgICAqIGFldXNzZXJzdCBzY2hsZWNodCBhdXMuCisgICAgICogc2VociBzY2hsZWNodCBhdXMuCisgICAgICogc2NobGVjaHQgYXVzLgorICAgICAqIHVudGVyZHVyY2hzY2huaXR0bGljaCBhdXMuCisgICAgICogZHVyY2hzY2huaXR0bGljaCBndXQgYXVzLgorICAgICAqIGJlc3NlciBhbHMgZGVyIER1cmNoc2Nobml0dCBhdXMuCisgICAgICogcmVjaHQgZ3V0IGF1cy4KKyAgICAgKiB6aWVtbGljaCBndXQgYXVzLgorICAgICAqIGd1dCBhdXMuCisgICAgICogc2VociBndXQgYXVzLgorICAgICAqIGF1c3Nlcm9yZGVudGxpY2ggZ3V0IGF1cy4KKyAgICAgKiB1bmhlaW1saWNoIGd1dCBhdXMuCisgICAgICogZWluZmFjaCBoZXJ2b3JyYWdlbmQgYXVzLgorCisgICAgQWJzb2x1dCBnZXNlaGVuCisKKyAgICAgKiBrZW5uc3QgRHUgbnVyIHdlbmlnIHZvbSBNb3JnZW5HcmF1ZW4uCisgICAgICogc29sbHRlc3QgRHUgRGljaCB2aWVsbGVpY2h0IG5vY2ggZ2VuYXVlciB1bXNlaGVuLgorICAgICAqIGJpc3QgRHUgZHVyY2hhdXMgc2Nob24gaGVydW1nZWtvbW1lbi4KKyAgICAgKiBoYXN0IER1IHNjaG9uIGVpbmlnZXMgZ2VzZWhlbi4KKyAgICAgKiBiaXN0IER1IHNjaG9uIHdlaXQgaGVydW1nZWtvbW1lbi4KKyAgICAgKiBrb2VubnRlc3QgRHUgZWlnZW50bGljaCBlaW5lbiBSZWlzZWZ1ZWhyZXIgaGVyYXVzYnJpbmdlbi4KKyAgICAgKiBoYXN0IER1IHNjaG9uIHNlaHIgdmllbCBnZXNlaGVuLgorICAgICAqIGJlc2l0enQgRHUgZWluZSBoZXJ2b3JyYWdlbmRlIE9ydHNrZW5udG5pcy4KKworIFNJRUhFIEFVQ0g6CisgICAgc3R1ZmVucHVua3RlLCBpbmZvCisKKyBMRVRaVEUgQWVOREVSVU5HOgorICAgIFRodSwgMjQuMDcuMTk5NywgMDk6MDA6MDAgdm9uIFdhcmdvbgpkaWZmIC0tZ2l0IGEvZG9jL2hlbHAvZ2VzZWxsZW5zdHVlY2sgYi9kb2MvaGVscC9nZXNlbGxlbnN0dWVjawpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5hZTk4MGJiCi0tLSAvZGV2L251bGwKKysrIGIvZG9jL2hlbHAvZ2VzZWxsZW5zdHVlY2sKQEAgLTAsMCArMSw3NiBAQAorCitHRVNFTExFTlNUVUVDSworPT09PT09PT09PT09PT0KKworICAgICAgSW0gTW9yZ2VuR3JhdWVuIG11c3N0IER1IGFscyBKdW5nbWFnaWVyIGVyc3QgZWluIEdlc2VsbGVuc3R1ZWNrCisgICAgICBhYmxpZWZlcm4sIGJldm9yIER1IHZvbiBkZW4genVzdGFlbmRpZ2VuIEVyem1hZ2llcm4genVtIFZvbGxtYWdpZXIKKyAgICAgIGJlZm9lcmRlcnQgd2lyc3QuIEJpcyBkYWhpbiBiaXN0IER1IG5vY2ggTGVocmxpbmcgdW5kIGhhc3QgbnVyIGVpbi0KKyAgICAgIGdlc2NocmFlbmt0ZSBMZXNlcmVjaHRlLgorCisgICAgICBEaWVzZSBFaW5zY2hyYWVua3VuZyBkZXIgTGVzZXJlY2h0ZSBzb2xsIERpY2gga2VpbmVzZmFsbHMgYmVpIERlaW5lcgorICAgICAgQXJiZWl0IGJlaGluZGVybiAtIHdlbm4gRHUgRnJhZ2VuIHp1ciBQcm9ncmFtbWllcnVuZyBoYXN0LCBkaWUgZHVyY2gKKyAgICAgIGRpZSBCZWlzcGllbGUgaW0gVmVyemVpY2huaXMgJy9kb2MnIG5pY2h0IGJlYW50d29ydGV0IHdlcmRlbiwgc28KKyAgICAgIGthbm5zdCBEdSBEaWNoIGplZGVyemVpdCBhbiBEZWluZW4gU3BvbnNvciB3ZW5kZW4sIHVtIHdlaXRlcmUKKyAgICAgIEJlaXNwaWVsLURhdGVpZW4genUgYmVrb21tZW4uCisKKyAgICAgIEJlaSBkZXIgR2VzdGFsdHVuZyBEZWluZXMgR2VzZWxsZW5zdHVlY2tlcyBrYW5uc3QgRHUgRGVpbmVyIFBoYW50YXNpZQorICAgICAgdm9sbGtvbW1lbiBmcmVpZW4gTGF1ZiBsYXNzZW4sIEVzIGdpYnQgZnVlciBkYXMgR2VzZWxsZW5zdHVlY2sgaW0gTUcgCisgICAgICBrZWluZSBmZXN0ZW4gUmVnZWxuIHdpZSAibWluZGVzdGVucyAyMCBSYWV1bWUgdW5kIGZ1ZW5mIE5QQ3MiLiBEZWluIAorICAgICAgR2VzZWxsZW5zdHVlY2sgc29sbHRlIGplZG9jaCBldHdhcyBuZXVlcyBzZWluIHVuZCBrZWluZSBVZWJlcmFyYmVpdHVuZworICAgICAgdm9uIGJlc3RlaGVuZGVtIENvZGUsIHdlaWwgZXMgTFBDLUFuZmFlbmdlcm4gZXJmYWhydW5nc2dlbWFlc3MKKyAgICAgIHNjaHdlcmVyIGZhZWxsdCwgc2ljaCBpbiBmcmVtZGVuIENvZGUgZWluenVsZXNlbi4gQXVzc2VyZGVtIHNvbGwKKyAgICAgIGphIGtsYXIgZXJrZW5uYmFyIHNlaW4sIGRhc3MgZGFzIE5ldWUgdGF0c2FlY2hsaWNoIGtvbXBsZXR0IHZvbiBEaXIKKyAgICAgIHNlbGJzdCBzdGFtbXQuCisKKyAgICAgIEVpbiBrbGVpbmVyIFB1bmt0IHNlaSBhbHMgRGVua2Fuc3Rvc3MgZXJ3YWVobnQ6IFdpZSB3YWVyZSBlcywgd2VubiAKKyAgICAgIER1IGV0d2FzIGZ1ZXIgQW5mYWVuZ2VyIHNjaHJlaWJzdCB1bmQgbmljaHQgZGFzIHgtdGUgU3VwZXItRHVwZXIgCisgICAgICBTZWhlci1UZWFtIE1ldHplbGdlYmlldD8gVmVyc3VjaGUgZWluIEdlYmlldCB6dSBzY2hyZWliZW4sIGFuIGRlbSAKKyAgICAgIHZpZWxlIFNwaWVsZXIgaWhyZSBGcmV1ZGUgaGFiZW4ga29lbm5lbiB1bmQgbmljaHQgbnVyIGRpZSBzZWhyIGhvaGVuIAorICAgICAgU2VoZXIuIAorCisgICAgICBHZW5hdXNvIGd1dCBrYW5uc3QgRHUgZWluZSBuZXVlIFF1ZXN0IHByb2dyYW1taWVyZW4gb2RlciAoZ2VyYWRlIGF1Y2gKKyAgICAgIGluIFRlYW1hcmJlaXQpIGVpbmUgbmV1ZSBHaWxkZS4gTGV0enRlcmVzIGlzdCBhbGxlcmRpbmdzIG5pY2h0IGZ1ZXIKKyAgICAgIExQQy1BbmZhZW5nZXIgenUgZW1wZmVobGVuLiBFcyBtdXNzIG5pY2h0bWFsIHVuYmVkaW5ndCBlaW4gIlN0YW5kYXJkLQorICAgICAgR2VzZWxsZW5zdHVlY2siIHNlaW4uIAorCisgICAgICBEaWUgRXJ6bWFnaWVyIHNpbmQgYXVjaCBhbmRlcmVuIGhpZXIgbmljaHQgYXVmZ2VmdWVocnRlbiBJZGVlbiBpbW1lciAKKyAgICAgIGF1Zmdlc2NobG9zc2VuIGdlZ2VudWViZXIgLSBzcHJpY2ggc2llIGVpbmZhY2ggZWlubWFsIGFuIHVuZCBlcnphZWhsZSwKKyAgICAgIHdhcyBEdSBzbyBhbiBWb3JzdGVsbHVuZ2VuIGRhdm9uIGhhc3QsIHdhcyBEdSBpbSBNb3JnZW5HcmF1ZW4gCisgICAgICBwcm9ncmFtbWllcmVuIG1vZWNodGVzdC4gICAgICAgIAorIAorICAgICAgQmV2b3IgRHUgRGljaCBhbiBkYXMgUHJvZ3JhbW1pZXJlbiBiZWdpYnN0LCBzb2xsdGVzdCBEdSBkYXMgS29uemVwdAorICAgICAgZnVlciBEZWluIEdlc2VsbGVuc3R1ZWNrIG1pdCBlaW5lbSBkZXIgenVzdGFlbmRpZ2VuIEVyem1hZ2llcgorICAgICAgYWJrbGFlcmVuLCB1bSBzaWNoZXJ6dWdlaGVuLCBkYXNzIGVzIGFscyBHZXNlbGxlbnN0dWVjayBhdXNyZWljaHQuCisgICAgICAKKyAgICAgIFVtIERlaW4gR2VzZWxsZW5zdHVlY2sgYmV3ZXJ0ZW4genUgbGFzc2VuLCB3ZW5kZXN0IER1IERpY2ggYml0dGUgYW4KKyAgICAgIGVpbmVuIGRlciBpbiBkZXIgSGlsZmUgYWxzIHp1c3RhZW5kaWcgYW5nZWdlYmVuZW4gRXJ6bWFnaWVyLgorICAgICAgRHUga2FubnN0IGF1Y2ggZ2VybmUgZGFuYWNoIGZyYWdlbiwgd2FzIHZvbiBkZW4gYW5kZXJlbiBKdW5nbWFnaWVybiAKKyAgICAgIGJpc2hlciBzbyBhbiBHZXNlbGxlbnN0dWVja2VuIGFiZ2VnZWJlbiB3dXJkZSwgdW0gRGlyIGVpbmVuIGtsZWluZW4gCisgICAgICBVZWJlcmJsaWNrIHp1IHZlcnNjaGFmZmVuLCB3YXMgdW5nZWZhZWhyIHZvbiBEaXIgZXJ3YXJ0ZXQgd2lyZC4KKworICAgICAgRmVzdGUgR3Jlbnp3ZXJ0ZSB2b3J6dWdlYmVuLCBhYiB3YW5uIGVpbiBHZXNlbGxlbnN0dWVjayBhdXNyZWljaGVuZCAKKyAgICAgIGlzdCwga2FubiBuaWNodCBpbSBTaW5uZSBkaWVzZXIgUmVnZWx1bmcgc2Vpbi4gRGFoZXIgZ2lidCBlcyBhbiBkaWVzZXIKKyAgICAgIFN0ZWxsZSBhdWNoIG51ciBlaW5pZ2Ugd2VuaWdlIGdyb2JlIFJpY2h0bGluaWVuOgorCisgICAgICAtIGVpbiBHZXNlbGxlbnN0dWVjayBzb2xsdGUgZWluZSBCZXJlaWNoZXJ1bmcgZnVlciBkYXMgTW9yZ2VuR3JhdWVuCisgICAgICAgIHNlaW4gLSBhbHNvIGtlaW4gbGllYmxvcyBoaW5nZWtsYXRzY2h0ZXMgR2ViaWV0LCBiZWkgZGVtIG1hbiBzb2ZvcnQKKyAgICAgICAgbWVya3QsIGRhc3MgZXMgbnVyIHp1ciBCZWZvZXJkZXJ1bmcgenVtIFZvbGxtYWdpZXIgdGF1Z2VuIHNvbGx0ZS4KKworICAgICAgLSBtYW4gc29sbHRlIGRlbSBHZXNlbGxlbnN0dWVjayBhbnNlaGVuIGtvZW5uZW4sIGRhc3MgZWluaWdlcyBhbgorICAgICAgICBBcmJlaXQgZGFoaW50ZXIgc3RlY2t0LCB1bmQgZGFzcyBlcyBuaWNodCAibWFsIGViZW4iIGFuIGVpbmVtCisgICAgICAgIFdvY2hlbmVuZGUgenVzYW1tZW5nZXN0cmlja3Qgd3VyZGUuCisKKyAgICAgIC0gbWl0dGxlcndlaWxlIGdpYnQgZXMgaW0gTW9yZ2VuR3JhdWVuIGdld2lzc2UgUXVhbGl0YWV0cy1TdGFuZGFyZHMsCisgICAgICAgIHdhcyBuZXVlIEdlYmlldGUgYW5nZWh0LiBEYXp1IGdlaG9lcnQgdS5hLiwgZGFzcyBkaWUgUmFldW1lIG5pY2h0CisgICAgICAgIGFsbGUgZ2xlaWNoIGF1c3NlaGVuIChDb3B5JlBhc3RlIGxhZXNzdCBncnVlc3NlbiksIGdld2lzc2UKKyAgICAgICAgU3RhbmRhcmQtRGV0YWlscyB1ZWJlcmFsbCBiZXNjaHJpZWJlbiBzaW5kIGV0Yy4gRGllc2VyIFN0YW5kYXJkIGdpbHQKKyAgICAgICAgc2VsYnN0dmVyc3RhZW5kbGljaCBhdWNoIGZ1ZXIgR2VzZWxsZW5zdHVlY2tlLgorCisgICAgICBCZWkgd2VpdGVyZ2VoZW5kZW4gRnJhZ2VuIHdlbmRlIERpY2ggZWluZmFjaCBhbiBlaW5lbiBkZXIgaW4gZGVyIEhpbGZlIAorICAgICAgYWxzIEFuc3ByZWNocGFydG5lciBhbmdlZ2ViZW5lbiBFcnptYWdpZXIuCisKKyBTSUVIRSBBVUNIOgorICAgIGVyem1hZ2llciwgcmVnaW9uc21hZ2llciwgbWFnaWVyCisKKyBMRVRaVEUgQWVOREVSVU5HOgorICAgIE1vbiwgMjguIEFVRyAyMDAwLCAyMjozMDowMCB2b24gV2ltLgpkaWZmIC0tZ2l0IGEvZG9jL2hlbHAvZ2lmdCBiL2RvYy9oZWxwL2dpZnQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMzY5OWVhZQotLS0gL2Rldi9udWxsCisrKyBiL2RvYy9oZWxwL2dpZnQKQEAgLTAsMCArMSwyOCBAQAorR2lmdC9LcmFua2hlaXQvRmx1ZWNoZQorPT09PT09PT09PT09PT09PT09PT09PQorCisgICAgRXMgZ2lidCBpbSBNb3JnZW5ncmF1ZW4gdmVyc2NoaWVkZW5lIEdpZnRlLCBLcmFua2hlaXRlbiB1bmQgRmx1ZWNoZSwKKyAgICBkaWUgZWluZW0gZGFzIExlYmVuIHNjaHdlcmVyIG1hY2hlbi4KKworICAgIEtyYW5raGVpdGVuIHVuZCBHaWZ0ZSBiZWVpbmZsdXNzZW4gZmFzdCBpbW1lciAibnVyIiBMZWJlbnMtIHVuZAorICAgIEtvbnplbnRyYXRpb25zcHVua3RlLiBGbHVlY2hlIGhhYmVuIGdhbnogYW5kZXJlIG9kZXIgd2VpdGVyZ2VoZW5kZQorICAgIFdpcmt1bmdlbi4KKworICAgIERhYmVpIG5pbW10IG1hbiBHaWZ0ZSBtZWlzdCBzZWxic3QgKHVuZCBvZnQgZnJlaXdpbGxpZykgYXVmLAorICAgIEtyYW5raGVpdGVuIHVuZCBGbHVlY2hlIGplZG9jaCB2ZXJwYXNzdCBlaW5lbSBpcmdlbmR3ZXIgb2RlcgorICAgIGlyZ2VuZHdhcyBvaG5lIGVpbmVuIHp1IGZyYWdlbi4KKworICAgIERpZSBnZW5lcmVsbGUgVmVyZ2lmdHVuZyB3aXJkIGVpbmVtIGR1cmNoIE1lbGR1bmdlbiB1bmQgZGllIEFuemVpZ2UKKyAgICB2b24gImluZm8iIGJla2FubnQgZ2VtYWNodC4gRGllIFdpcmt1bmcgaXN0LCBkYXMgbWFuIG5pY2h0IG1laHIKKyAgICBvaG5lIFRhbmtlbiBoZWlsdCBiaXMgaGluIHp1bSBMZWJlbnNwdW5rdHZlcmx1c3QuIEVpbmlnZSBIZWlsZXIgdW5kCisgICAgR2lsZGVuIGtvZW5uZW4gZGllIFZlcmdpZnR1bmcgbGluZGVybiB1bmQgYXVmaGViZW4uCisKKyAgICBEZXIgZWluZmFjaGUgRmx1Y2ggd2lya3QgYXVmIFdhZmZlbiB1bmQgUnVlc3R1bmdlbi4gRGllc2Ugc2luZCBkYW5uCisgICAgbmljaHQgbWVociB3ZWdzdGVja2JhciBiencuIGF1c3ppZWhiYXIuIEF1Y2ggaGllciBrb2VubmVuIEhlaWxlciB1bmQKKyAgICBHaWxkZW4gaGVsZmVuLgorCisgU0lFSEUgQVVDSDoKKyAgICBzdGVyYmVuCisKKyBMRVRaVEUgQWVOREVSVU5HOgorICAgIDE4LiBNYWVyeiAyMDA0IEdsb2luc29uCmRpZmYgLS1naXQgYS9kb2MvaGVscC9naWxkZW4gYi9kb2MvaGVscC9naWxkZW4KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOTQ3ZjdhMwotLS0gL2Rldi9udWxsCisrKyBiL2RvYy9oZWxwL2dpbGRlbgpAQCAtMCwwICsxLDU1IEBACitEaWUgR2lsZGVuCis9PT09PT09PT09CisKKyAgICBFcyBnaWJ0IGltIE1vcmdlbmdyYXVlbiBtZWhyZXJlIEdpbGRlbiwgaW4gZGVuZW4gbWFuIGVpbmlnZSBiZXNvbmRlcmUKKyAgICBGYWVoaWdrZWl0ZW4gZXJ3ZXJiZW4ga2Fubi4gTWFuIGthbm4gamVkb2NoIG51ciBpbiBlaW5lciBHaWxkZQorICAgIGdsZWljaHplaXRpZyBzZWluIHVuZCBoYXQgYXVjaCBpbW1lciBudXIgZGllIEZhZWhpZ2tlaXRlbiBkZXIgR2lsZGUsIGluCisgICAgZGVyIG1hbiBtb21lbnRhbiBpc3QuIFdlciBtaXQgc2VpbmVyIEdpbGRlIG5pY2h0IHp1ZnJpZWRlbiBpc3QsIGthbm4KKyAgICBuYXR1ZXJsaWNoIGF1Y2ggamVkZXJ6ZWl0IHdpZWRlciBhdXN0cmV0ZW4sIGhhdCBkYW5uLCBmYWxscyBlciBlcm5ldXQKKyAgICBlaW50cml0dCwgamVkb2NoIG51ciBub2NoIGVpbmVuIFRlaWwgZGVyIGZydWVoZXIgZXJ3b3JiZW5lbiBGYWVoaWdrZWl0ZW4uCisKKyAgICBKZWRlciBpc3QgYmVpbSBTdGFydCBzY2hvbiBpbiBlaW5lciBHaWxkZTogTWVuc2NoZW4sIEhvYmJpdHMgdW5kCisgICAgWndlcmdlIGluIGRlciBBYmVudGV1cmVyZ2lsZGUsIEZlbGluZW4gYmVpIGRlbiBLYXR6ZW5rcmllZ2VybiwgRWxmZW4gaW4gCisgICAgZGVyIEdpbGRlIGRlciBXaXBmZWxsYWV1ZmVyLCBPcmtzIGluIGRlciBHaWxkZSBkZXIgVXJ1a2hhaSB1bmQgCisgICAgRHVua2VsZWxmZW4gaW4gZGVyIER1bmtlbGVsZmVuZ2lsZGUuIAorCisgICAgRGllIEZhZWhpZ2tlaXRlbiBzZWluZXIgQW5mYW5nc2dpbGRlIHZlcmxpZXJ0IG1hbiBuaWNodCwgd2VubiBtYW4gaW4gCisgICAgZWluZXIgYW5kZXJlbiBHaWxkZSB3YXIgdW5kIGRvcnQgYXVzZ2V0cmV0ZW4gaXN0LgorCisgICAgRHVua2VsZWxmZW4gc2luZCBiZWkgZGVyIEF1c3dhaGwgc3RhcmsgZWluZ2VzY2hyYWVua3QsIGRhIHNpZSBpbiBkZW4KKyAgICBtZWlzdGVuIEdpbGRlbiBuaWNodCBha3plcHRpZXJ0IHdlcmRlbiB1bmQgYXVjaCBudXIgaWhyZSBHaWxkZSBpaG5lbgorICAgIGRlbiBsZWJlbnNub3R3ZW5kaWdlbiBTY2h1dHogYmlldGV0LCBqZWRvY2gga29lbm5lbiBzaWUgc2ljaCBhdWYKKyAgICBtZWhyZXJlIFp3ZWlnZSBzcGV6aWFsaXNpZXJlbi4KKworICAgIE1vbWVudGFuIGdpYnQgZXMgZm9sZ2VuZGUgR2lsZGVuOgorCisgICAgICogQWJlbnRldXJlcmdpbGRlLCBpbiBQb3J0IFZhaW4sIHZvbiBCb2luZworICAgICAqIFdpcGZlbGxhZXVmZXIsIGltIEVsZmVuZG9yZiwgdm9uIEh1bW5pCisgICAgICogR2lsZGUgZGVyIEthcmF0ZWthZW1wZmVyLCBpbiBkZXIgU3RhZHQgWGlhbiBpbSBGZXJuZW4gV2VzdGVuLCB2b24KKyAgICAgICBSb2NodXMKKyAgICAgKiBLcmllZ2VyIGRlcyBDaGFvcywgaW4gZGVyIEVpc3d1ZXN0ZSwgdm9uIFphcmRvegorICAgICAqIEFrYWRlbWllIGRlciBnZWlzdGlnZW4gS3JhZnQgenUgVGFyYW1pcywgdm9uIFNpbHZhbmEKKyAgICAgKiBEZXIgSGVpbGlnZSBPcmRlbiwgaW4gRGplbGliZWJ5LCB2b24gV2FyZ29uCisgICAgICogQmllcnNjaHVldHRsZXJnaWxkZSwgYXVmIFNoYWt5IElzbGFuZCwgdm9uIFNoYWtlZGJlZXIKKyAgICAgKiBLYWVtcGZlcmdpbGRlLCBhdWYgQWtoYXIgTnRoJ3Rhciwgdm9uIFphcmRveiwgVG9ldGVyIHVuZCBCZW5kZWlnaWQKKyAgICAgKiBEaWUgS2F0emVua3JpZWdlciwgaW4gZGVyIERzY2h1bmdlbHN0YWR0IEthdHptYW5kdSwgdm9uIFBhcmFjZWxzdXMKKyAgICAgKiBEaWUgVGFuamlhbiwgaW0gRWlzdGFubmVud2FsZCwgdm9uIFBhcmFjZWxzdXMKKyAgICAgKiBEdW5rZWxlbGZlbiwgaW4gZGVyIEhvZWhsZW5zdGFkdCBaemVyZW56emVuLCB2b24gUGFkcmVpYworICAgICAqIFVydWtoYWksIHZvbiBNb3Jnb3RoIHVuZCBCdWdmaXgKKyAgICAgKiBXZXJ3b2VsZmUsIHZvbiBIdW1uaQorCisgICAgRm9sZ2VuZGUgR2lsZGVuIHNpbmQgZGVyemVpdCBub2NoIGluIEVudHdpY2tsdW5nLCBkZXIgWmVpdHB1bmt0IGlocmVyCisgICAgRmVydGlnc3RlbGx1bmcgaXN0IGFiZXIgbm9jaCB1bmdld2lzczoKKworICAgICAqIE1hZ3VzZ2lsZGUsIHZvbiBBcmsKKyAKKyBTSUVIRSBBVUNIOgorICAgIGFiZW50ZXVyZXIsIGJpZXJzY2h1ZXR0bGVyLCBjaGFvcywga2FlbXBmZXIsIGthcmF0ZSwga2F0emVua3JpZWdlciwKKyAgICBrbGVydXMsIHphdWJlcmVyLCB0YW5qaWFuLCBkdW5rZWxlbGZlbiwgd2FmZmVuZmVydGlna2VpdGVuLAorICAgIGdpbGRlbm1hZ2llciwgd2lwZmVsbGFldWZlciwgYWx0Z2lsZGVuCisgCisgTEVUWlRFIEFFTkRFUlVORzogCisgICAgMjAxMS0xMS0xMyB2b24gSHVtbmkKKworCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCmRpZmYgLS1naXQgYS9kb2MvaGVscC9naWxkZW5tYWdpZXIgYi9kb2MvaGVscC9naWxkZW5tYWdpZXIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uY2FkM2Y3YQotLS0gL2Rldi9udWxsCisrKyBiL2RvYy9oZWxwL2dpbGRlbm1hZ2llcgpAQCAtMCwwICsxLDM3IEBACisKK0RpZSBHaWxkZW5tYWdpZXIgZGVzIE1vcmdlbkdyYXVlbnMKKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKworSmVkZSBHaWxkZSB3aXJkIHZvbiBlaW4gb2RlciBtZWhyZXJlbiBNYWdpZXJuIGJldHJldXQsIGRpZSBkaWUgR2lsZGUgd2FydGVuCit1bmQgZXJ3ZWl0ZXJuLiBTaWUgc2luZCBkaWUgQW5zcHJlY2hwYXJ0bmVyLCB3ZW5uIGVzIFByb2JsZW1lIGlubmVyaGFsYgorZWluZXIgZGllc2VyIEdpbGRlbiBnaWJ0LgorCitIaWVyIGFsc28gYWxsZSBHaWxkZW4gZGVzIE1vcmdlbmdyYXVlbnMgbWl0IGlocmVuIEdpbGRlbm1hZ2llcm46CisoTUEgLSBNaXRhcmJlaXRlcikKKworKEVpbmlnZSBkZXIgR2lsZGVubWFnaWVyIHNpbmQgZGVyemVpdCBlaW4gd2VuaWcgaW5ha3RpdmVyIGFscyBzb25zdC4KK0RpZXNlIHNpbmQgbWl0IGVpbmVtICwsaScnIGdla2VubnplaWNobmV0LiBJbiBkaWVzZW0gRmFsbCBnaWJ0IGVzIGRlcnplaXQKK25pZW1hbmRlbiwgZGVyIGRpZSBHaWxkZSB3ZWl0ZXJlbnR3aWNrZWx0LiBGdWVyIGRyaW5nZW5kZSBGcmFnZW4ga2FubnN0IER1CitEaWNoIGRhbm4gYW4gZGVuIEVyem1hZ2llciBmdWVyIEdpbGRlbiwgZGVyemVpdCBIdW1uaSwgd2VuZGVuLikKKworICBBYmVudGV1cmVyZ2lsZGUgICAgICAgICAgICAgICAtIEJvaW5nCisgIEdpbGRlIGRlciBLYXJhdGVrYWVtcGZlciAgICAgIC0gSHVtbmkKKyAgS3JpZWdlciBkZXMgQ2hhb3MgICAgICAgICAgICAgLSBFbm5veCAoaSksIE11cGZlbCAoaSksIEJ1Z2ZpeAorICBBa2FkZW1pZSBkZXIgZ2Vpc3RpZ2VuIEtyYWZ0ICAtIENoYWdhbGwKKyAgRGVyIEhlaWxpZ2UgT3JkZW4gICAgICAgICAgICAgLSBXYXJnb24gKGkpLCBHbG9pbnNvbgorICBCaWVyc2NodWV0dGxlcmdpbGRlICAgICAgICAgICAtIEJpZWxlZmVsZCAoaSksIFNoYWtlZGJlZXIoaSksIFJhc2NoYXVhIChpKQorICBLYWVtcGZlcmdpbGRlICAgICAgICAgICAgICAgICAtIEdhYnlsb24KKyAgRGllIEthdHplbmtyaWVnZXIgICAgICAgICAgICAgLSBCYW1iaQorICBEaWUgVGFuamlhbiAgICAgICAgICAgICAgICAgICAtIENoYWdhbGwsIE5pYmVsIChpKQorICBEdW5rZWxlbGZlbiAgICAgICAgICAgICAgICAgICAtIEFtYXJ5bGxpcygqKSwgUGFkcmVpYyAoaSkKKyAgVXJ1ay1IYWkgICAgICAgICAgICAgICAgICAgICAgLSBCdWdmaXgsIFJob3ZhbiwgTW9yZ290aCAoaSkKKyAgV2lwZmVsbGFldWZlciAgICAgICAgICAgICAgICAgLSBIdW1uaQorICBXZXJ3b2VsZmUgICAgICAgICAgICAgICAgICAgICAtIEh1bW5pCisKKygqKSBBbWFyeWxsaXMgaGF0IGZ1ZXIgZGllIEdpbGRlIGRlcnplaXQgd2VuaWcgWmVpdC4KKyhpKSBEaWVzZXIgTWFnaWVyIGlzdCB6dXIgWmVpdCBpbmFrdGl2LgorCitTSUVIRSBBVUNIOgorICAgICBHaWxkZW4sIE1hZ2llciwgUmVnaW9uZW4sIFJlZ2lvbnNtYWdpZXIsIEVyem1hZ2llcgorCitGcmUsIDA1LiBKdW5pIDIwMTUsIDIyOjUyOjAwIHZvbiBCb2luZwpkaWZmIC0tZ2l0IGEvZG9jL2hlbHAvZ290dCBiL2RvYy9oZWxwL2dvdHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMjVjODhkNQotLS0gL2Rldi9udWxsCisrKyBiL2RvYy9oZWxwL2dvdHQKQEAgLTAsMCArMSwyNiBAQAorCitHb2V0dGVyIGltIE1vcmdlbmdyYXVlbgorPT09PT09PT09PT09PT09PT09PT09PT0KKworIEJFU0NIUkVJQlVORzoKKyAgICAgRXMgZ2lidCBlaW5pZ2UsIHdlbmlnZSBHb2V0dGVyIGltIE1vcmdlbmdyYXVlbi4gV2llIGJlaSBhbGxlbiBHb2V0dGVybgorICAgICBnaWx0IGVzIGluIGRlciBBbmJldHVuZyBkZXMgSm9mLCBSdW1hdGEgdW5kIFpvb2sgZXJzdGVucyBqZXdlaWxzIGRlbgorICAgICByaWNodGlnZW4gQW5zcHJlY2hwYXJ0bmVyIHVuZCB6d2VpdGVucyBkaWUgcmljaHRpZ2UgQmFsYW5jZSB6d2lzY2hlbgorICAgICBTY2hsZWltZXJlaSB1bmQgR290dGVzYmVsYWVzdGlndW5nIHp1IGZpbmRlbi4gS2xlaW5lIE9wZmVyZ2FiZW4gd2llCisgICAgIEJpZXJyZWljaHVuZ2VuIGF1ZiBQYXJ0aWVzIHNpbmQgbmF0dWVybGljaCBnZXJuIGdlc2VoZW4uCisKKyAgICAgVW5zZXJlIEdvZXR0ZXIgem9nZW4gZWluIHNjaHdlcmVzIExvcyAtIHdvIGRpZSBFcnptYWdpZXIgQXJiZWl0CisgICAgIGVybGVkaWdlbiwgdHJhZ2VuIGRpZSBHb2V0dGVyIGRpZSBzY2h3ZXJlIExhc3QgZGVyIFZlcmFudHdvcnR1bmcuIFNpZQorICAgICBtdWVzc2VuIGRhZnVlciBzb3JnZW4sIGRhc3MgZGFzIHJlY2h0ZSBNYXNzIGFuIE5laWQsIE1pc3NndW5zdCwgR2llciB1bmQKKyAgICAgVmVyc3RpbW11bmcgendpc2NoZW4gU3BpZWxlcm4sIFNlaGVybiwgTWFnaWVybiwgRXJ6bWFnaWVybiB1bmQgc29uc3RpZ2VuCisgICAgIFNwaWVsdGVpbG5laG1lcm4gaW1tZXIgZ2V3YWhydCBibGVpYnQuCisKKyBCRU1FUktVTkdFTjoKKyAgICAgRXMgZ2lidCBlaW5lbiB6dXJ1ZWNrZ2V0cmV0ZW5lbiBHb3R0LCBCb2luZy4gRGllc2VyIHdpcmQgaW1tZXIgbm9jaAorICAgICB2b24gZWluaWdlbiBVbmdsYWV1YmlnZW4gaW4gYmx1dGlnZW4gUml0dWFsZW4gaW4gZGVyIFNTUCB2ZXJlaHJ0LgorCisgU0lFSEUgQVVDSDoKKyAgICAgICAgZXJ6bWFnaWVyLCB3aWxsa3VlciwgcGFydGllcworCisgTEVUWlRFIEFlTkRFUlVORzoKKyAgICAyMi4gTm92ZW1iZXIgMjAwNCBNdWFkaWIKZGlmZiAtLWdpdCBhL2RvYy9oZWxwL2hhcmRjb3JlIGIvZG9jL2hlbHAvaGFyZGNvcmUKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMGFjMmI5OAotLS0gL2Rldi9udWxsCisrKyBiL2RvYy9oZWxwL2hhcmRjb3JlCkBAIC0wLDAgKzEsMjkgQEAKK0RlciBIYXJkY29yZW1vZHVzCis9PT09PT09PT09PT09PT09PT09PT09CisKKyAgICBFbnRzY2hlaWRldCBzaWNoIGRlciBTcGllbGVyIGZ1ZXIgbnVyIGVpbiBlaW56aWdlcyBMZWJlbiwgc28gCisgICAgc3BpZWx0IGVyIGltIEhhcmRjb3JlbW9kdXMuCisKKyAgICBEaWVzIGJlZGV1dGV0LCBkYXNzIGRlciBTcGllbGVyIG5hY2ggc2VpbmVtIGVyc3RlbiBUb2QgbmljaHQgbWVocgorICAgIGFrdGl2IGFtIFNwaWVsIHRlaWxuZWhtZW4ga2Fubi4gTGVkaWdsaWNoIGtvbW11bmlrYXRpdmUgTWl0dGVsIHdpZQorICAgIGRhcyBSdWZlbiBvZGVyIGRpZSBFYmVuZW4gc3RlaGVuIGlobSBub2NoIHp1ciBWZXJmdWVndW5nLgorCisgICAgRGllc2VyIE1vZHVzIHNvbGx0ZSBudXIgdm9uIGVyZmFocmVuZW4gU3BpZWxlcm4gZ2V3YWVobHQgd2VyZGVuLgorCisgICAgRGllIEhhcmRjb3Jlc3BpZWxlciB1bnRlcmxpZWdlbiBkZW4gUmVnZWxuIHdpZSBnYW56IG5vcm1hbGUgCisgICAgU3BpZWxlci4KKworICAgIFdlbm4gZWluIFNwaWVsZXIgd3VlbnNjaHQsIGltIEhhcmRjb3JlbW9kdXMgenUgc3BpZWxlbiwga2FubiBlci9zaWUgdm9yCisgICAgRXJyZWljaGVuIGRlciB6d2VpdGVuIFN0dWZlIChkLmguIGJldm9yIG1hbiBkYXMgZXJzdGUgTWFsIGVyaG9laGVuIGthbm4pCisgICAgdW5kIHZvciBkZW0gZXJzdGVuIFRvZCBlaW5lbiBFcnptYWdpZXIgYW5zcHJlY2hlbiwgd2VsY2hlciBkZW4gSEMtTW9kdXMKKyAgICBha3RpdmllcnQuIERpZXMgaXN0IGVuZGd1ZWx0aWcgdW5kIHdpcmQgbmljaHQgcnVlY2tnYWVuZ2lnIGdlbWFjaHQuCisKKyAgICBFaW5lIFdhcm51bmc6IEVpbiBnZXN0b3JiZW5lciBTcGllbGVyIHdpcmQgdW50ZXIgZ2FyIGtlaW5lbiBVbXN0YWVuZGVuCisgICAgd2llZGVyIGluIGRhcyBMZWJlbiB6dXJ1ZWNrZ2Vob2x0LgorCisgU0lFSEUgQVVDSDoKKyAgICBydWZlLCBlYmVuZW4sIHRvZCwgcmVnZWxuIAorCisgTEVUWlRFIEFlTkRFUlVORzoKKyAgICAyMi44LjIwMTEsIFplc3N0cmEKKwpkaWZmIC0tZ2l0IGEvZG9jL2hlbHAvaGVpbHVuZyBiL2RvYy9oZWxwL2hlaWx1bmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZjI5ZjhlYgotLS0gL2Rldi9udWxsCisrKyBiL2RvYy9oZWxwL2hlaWx1bmcKQEAgLTAsMCArMSw0MCBAQAorCitEaWUgSGVpbHVuZworPT09PT09PT09PT0KKworICAgICBJbSBLYW1wZiBvZGVyIGR1cmNoIEdpZnQgdmVybGllcnQgbWFuIG1laHIgTGViZW5zcHVua3RlIGFscyBlaW5lbQorICAgICBsaWViIHNlaW4ga2Fubi4gWmF1YmVyZWkgdmVyYnJhdWNodCB6dXNhZXR6bGljaCBLb256ZW50cmF0aW9uLgorCisgICAgIEVzIGdpYnQgbWVocmVyZSBXZWdlIHVtIHNpY2ggenUgaGVpbGVuOgorCisgICAgICBNaXQgR2VkdWxkOiBJbSBIZXJ6c2NobGFnIGhlaWx0IGVpbiBTcGllbGVyIC0gc28gZXIgbmljaHQgdmVyZ2lmdGV0CisgICAgICAgICAgICAgICAgICBpc3QgLSBsYW5nc2FtIHNpY2ggc2VsYnN0LiBEYXMgaXN0IGltbWVyIGF1Y2ggdm9uIGRlcgorICAgICAgICAgICAgICAgICAgVW1nZWJ1bmcgdW5kIGRlciBSYXNzZSBkZXMgU3BpZWxlcnMgYWJoYWVuZ2lnLgorCisgICAgICBJbiBLbmVpcGVuOiBNYW4ga2FubiBzaWNoIGR1cmNoIFZlcnplaHIgdm9uIFNwZWlzZW4gb2RlciBHZXRyYWVua2VuCisgICAgICAgICAgICAgICAgICByYXNjaGVyIHNlbGJzdCBoZWlsZW4uIERhYmVpIHdpcmQgZWluZW0gZGllc2UgSGVpbHVuZworICAgICAgICAgICAgICAgICAgaW5uZXJoYWxiIGRlcyBIZXJ6c2NobGFnZXMgbGFuZ3NhbSB6dXRlaWwuCisgICAgICAgICAgICAgICAgICBXaWNodGlnIGlzdCBoaWVyYmVpIHZvciBhbGxlbSwgZGFzcyBtYW4gbnVyIHNvdmllbAorICAgICAgICAgICAgICAgICAgSGVpbHVuZ3Nwb3RlbnRpYWwgbWl0IGVpbmVtIE1hbCBlc3NlbiBvZGVyIHRyaW5rZW4ga2FubiwKKyAgICAgICAgICAgICAgICAgIHdpZSBtYW4gbWF4aW1hbGUgTGViZW5zcHVua3RlL0tvbnplbnRyYXRpb25zcHVua3RlIGhhdC4KKyAgICAgICAgICAgICAgICAgIEJlc2l0enQgbWFuIGFsc28gbWF4aW1hbCA5MCBMZWJlbnNwdW5rdGUsIHNvIGthbm4gbWFuIGluCisgICAgICAgICAgICAgICAgICBlaW5lbSBNb21lbnQgbnVyIGZ1ZXIgOTAgTGViZW5zcHVua3RlIGVzc2VuIG9kZXIgdHJpbmtlbiwKKyAgICAgICAgICAgICAgICAgIGFsbGUgZGFydWViZXJoaW5hdXNnZWhlbmRlIEhlaWx1bmcgZGVyIFNwZWlzZSBnZWh0CisgICAgICAgICAgICAgICAgICB2ZXJsb3Jlbi4KKyAgICAgICAgICAgICAgICAgIEJlaSBha3R1ZWxsZW4gMjAgTFAgd2FlcmUgZXMgYWxzbyBzaW5udm9sbCwgendlaSBHZXRyYWVua2UKKyAgICAgICAgICAgICAgICAgIGEgMzUgTGViZW5zcHVua3RlIHp1IHNpY2ggenUgbmVobWVuLiBWb3IgZWluZW0gS2FtcGYga2FubgorICAgICAgICAgICAgICAgICAgbWFuIHNpY2ggZGFkdXJjaCB1ZWJyaWdlbnMgZWluZW4genVzYWV0emxpY2hlbiBQdWZmZXIKKyAgICAgICAgICAgICAgICAgIHZlcnNjaGFmZmVuLCBpbmRlbSBtYW4gMiBHZXRyYWVua2UgYSAzNSB1bmQgMSBHZXRyYWVuayBhCisgICAgICAgICAgICAgICAgICAyMCBMZWJlbnNwdW5rdGUgenUgc2ljaCBuaW1tdC4gRGllIDIwIExQIHdlcmRlbiBlaW5lbSBkYW5uCisgICAgICAgICAgICAgICAgICBiZWkgZXZlbnR1ZWxsZW0gTFAtVmVybHVzdCBpbSBLYW1wZiB3aWVkZXIgenVnZWZ1ZWhydC4KKworICAgICAgTWl0IE1hZ2llOiAgVmllbGUgT3J0ZSBvZGVyIGF1Y2ggR2lsZGVuYW5nZWhvZXJpZ2UgYmVzdGltbXRlciBHaWxkZW4KKyAgICAgICAgICAgICAgICAgIGJlc2l0emVuIHNwZXppZWxsZSBNYWdpZSwgZGllIGVpbmVtIGViZW5mYWxscyB6dSBIZWlsdW5nCisgICAgICAgICAgICAgICAgICB2ZXJoZWxmZW4ga2Fubi4gRGllc2UgSGVpbHVuZyBpc3QgZW50d2VkZXIgc29mb3J0aWcgb2RlcgorICAgICAgICAgICAgICAgICAgdW50ZXJsaWVndCBkZW4gZ2xlaWNoZW4gUmVnZWxuIHdpZSBkaWUgSGVpbHVuZyBpbiBLbmVpcGVuLgorCisgU0lFSEUgQVVDSDoKKyAgICAgdG9kLCBsZWJlbiwgZXNzZW4sIGthbXBmLCByZXBvcnQKKworIExFVFpURSBBZU5ERVJVTkc6CisgICAgIDE0LiBNYWVyeiAyMDA0IEdsb2luc29uCmRpZmYgLS1naXQgYS9kb2MvaGVscC9pcmMgYi9kb2MvaGVscC9pcmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNjFlOGE3MQotLS0gL2Rldi9udWxsCisrKyBiL2RvYy9oZWxwL2lyYwpAQCAtMCwwICsxLDIzIEBACitJUkMNCis9PT0NCisNCisgICAgIERlciBJUkMtS2FuYWwgZGVzIE1vcmdlbmdyYXVlbnMgKC0jbWcpIGlzdCB2b24gYXVzc2VuIHdpZSBmb2xndA0KKyAgICAgenUgZXJyZWljaGVuOg0KKyAgICAgDQorICAgICBTZXJ2ZXI6CWlyYy5mcmVlbmV0LmRlDQorCQlpcmMuZnUtYmVybGluLmRlDQorCQktIHNpZWhlIGF1Y2ggaHR0cDovL2lyYy5mdS1iZXJsaW4uZGUvaXJjbWFwLmh0bWwNCisgICAgIEthbmFsOgltZy5kZQ0KKw0KKyAgICAgQmVmZWhsZTogICBVbSBhdXMgZGVtIElSQyB6dSBzZWhlbiwgd2VsY2hlIFNwaWVsZXIgZGVuIElSQy0NCisgICAgICAgICAgICAgICAgS2FuYWwgZGVzIE1HIG51dHplbjoNCisgICAgICAgICAgICAgICAgL21zZyBbTUddIHdobyAjbWcuZGUNCisNCisgICAgICAgICAgICAgICAgVW0gdm9tIE1HIGhlcmF1cyBkaWUgTGlzdGUgZGVyIElDUi1Vc2VyIHp1IHNlaGVuOg0KKyAgICAgICAgICAgICAgICAtI01HIEB3aG8NCisJCQkJCQkJDQorIFNJRUhFIEFVQ0g6DQorICAgICBrYW5hZWxlLCB3d3cNCisNCisgTEVUWlRFIEFlTkRFUlVORzoNCisgICAgMzAuIE1hZXJ6IDIwMDYgR2xvaW5zb24NCmRpZmYgLS1naXQgYS9kb2MvaGVscC9rYWVtcGZlciBiL2RvYy9oZWxwL2thZW1wZmVyCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjFlM2EyZjAKLS0tIC9kZXYvbnVsbAorKysgYi9kb2MvaGVscC9rYWVtcGZlcgpAQCAtMCwwICsxLDc5IEBACisKK0RpZSBLYWVtcGZlcmdpbGRlCistLS0tLS0tLS0tLS0tLS0tLQorCisgICAgRGllIEthZW1wZmVyZ2lsZGUgaW0gTW9yZ2VuR3JhdWVuIGlzdCBkZW0gQnVuZCBkZXIgVHJ2ZXMgYW5nZXNjaGxvc3Nlbi4KKyAgICBTaWUgaGF0IGlocmVuIEhhdXB0c2l0eiBpbSBLb3J1LVRzY2hha2FyLVN0cnV2LCB3ZWxjaGVzIGltIE5vcmRvc3RlbgorICAgIGRlciBJbnNlbCAiQWtoYXIgTnRoJ1RhciIgZ2VsZWdlbiBpc3QuCisKKyAgICBNYW4gZXJsZXJudCBkb3J0IGRlbiBVbWdhbmcgbWl0IGRlbiB2ZXJzY2hpZWRlbmVuIFdhZmZlbnR5cGVuLCB3b2JlaSBkaWUKKyAgICBtYXhpbWFsZSBGYWVoaWdrZWl0IGFiaGFlbmdpZyB2b24gZGVyIFJhc3NlIGlzdC4gRXMgZ2lidDoKKworICAgICAqIE1lc3NlciB1bmQgRG9sY2hlLAorICAgICAqIFNjaHdlcnRlciwKKyAgICAgKiBLYW1wZnN0YWViZSwKKyAgICAgKiBBZXh0ZSB1bmQgQmVpbGUsCisgICAgICogc3R1bXBmZSBIaWVid2FmZmVuIHVuZAorICAgICAqIFNwZWVyZSBiencuIFN0YW5nZW53YWZmZW4uCisKKyAgICBXZWl0ZXJoaW4gZ2lidCBlcyBub2NoIGRlbiBhbGxnZW1laW5lbiBVbWdhbmcgbWl0IFp3ZWloYW5kd2FmZmVuLgorCisgICAgRXMgZ2lidCB2ZXJzY2hpZWRlbmUgS2FtcGZ0YWt0aWtlbiBiencuIFRlY2huaWtlbiwgZGllIG1hbiBpbSBLYW1wZiBqZQorICAgIG5hY2ggR2VnbmVyIHdhZWhsZW4ga2FubjoKKworICAgICAqIEFsbGdlbWVpbmUgVGFrdGlrIChWZXJoYWVsdG5pcyB2b24gT2ZmZW5zaXZlIHp1IERlZmVuc2l2ZSksCisgICAgICogZGllIFJhc2VyZWkgdW5kCisgICAgICogZGllIFRlY2huaWsgZGVyIFNjaGlsZGtyb2V0ZSwgRHJhY2hlIG9kZXIgU2NobGFuZ2UKKworICAgIEJlc29uZGVyZSBBa3Rpb25lbiBpbSBLYW1wZiBzaW5kIHouQi46CisKKyAgICAgKiBkYXMgU2NobmVsbGUgS2FlbXBmZW4sCisgICAgICogZGFzIFVudGVybGF1ZmVuIGRlciBXYWZmZSBkZXMgR2VnbmVycywKKyAgICAgKiBkaWUgRmludGUgdW5kCisgICAgICogZGVyIEthbXBmd2lsbGUuCisKKyAgICBFcyBnaWJ0IGVpbmUgUmVpaGUgdm9uIHp1c2FldHpsaWNoZW4gQW5ncmlmZmVuLCBkaWUgbWFuIG1hY2hlbiBrYW5uLAorICAgIHdpZSB6LkIuOgorCisgICAgICogS2FtcGZ0cml0dCwKKyAgICAgKiBLbmllc3Rvc3MgdW5kCisgICAgICogVG9kZXNzdG9zcy4KKworICAgIEF1c3NlcmRlbSBrYW5uIG1hbiBlaW5lbiBXYWZmZW5icnVjaCB1bmQgZWluZW4gS08tU2NobGFnIGFuYnJpbmdlbi4KKworICAgIEVzIGdpYnQgbmF0dWVybGljaCBhdWNoIGRlZmVuc2l2ZSBLYW1wZm1pdHRlbDoKKyAgICBEaWUgUGFyYWRlIHVuZCBkaWUgU2NoaWxkcGFyYWRlLiBSZWNodCBhbnNwcnVjaHN2b2xsIGlzdCBkYXMgQXVzd2VpY2hlbgorICAgIHZvbiBaYXViZXJzcHJ1ZWNoZW4uCisKKyAgICBUZWNobmlrZW4sIGRpZSBpbSBHcnVwcGVua2FtcGYgbnVldHpsaWNoIHNpbmQ6CisKKyAgICAgKiBSdWVja2VuZGVja3VuZywKKyAgICAgKiBkYXMgQmxvY2tpZXJlbiBkZXIgV2FmZmUgZGVzIEdlZ25lcnMgdW5kCisgICAgICogZGFzIEJlc2NoaW1wZmVuIGRlcyBHZWduZXJzLgorCisgICAgWnVzYWV0emxpY2ggZ2lidCBlcyBub2NoOgorCisgICAgICogZGFzIFdhZmZlbnNjaGFlcmZlbiwKKyAgICAgKiBkYXMgRWluc2NoYWV0emVuIHZvbiBNb25zdGVybiwgV2FmZmVuIHVuZCBSdWVzdHVuZ2VuLAorICAgICAqIGRhcyBJZGVudGlmaXppZXJlbiB2b24gRGluZ2VuLAorICAgICAqIGRlbiBLYW1wZnNwcnVuZywKKyAgICAgKiBkYXMgU2F1ZmVuIHVuZAorICAgICAqIGRhcyBUcmFnZW4gdm9uIHNjaHdlcmVuIExhc3Rlbi4KKworIEluc2dlc2FtdCBnaWJ0IGVzIDQxIHZlcnNjaGllZGVuZSBGYWVoaWdrZWl0ZW4genUgZXJsZXJuZW4uCisgRGFydWViZXJoaW5hdXMgZ2lsdCBlcywgYXVmIHNlaW5lbSBXZWcgZHVyY2ggZGllIHZlcnNjaGllZGVuZW4gR2lsZGVubGV2ZWwKKyAoenVyIFplaXQgYmlzIEdMIDI0KSwgaW1tZXIgZWluaWdlIGRlciAzOCBBdWZnYWJlbiwgZGllIGRhcyBTdHJ1diBmdWVyCisgZWluZW4gYmVyZWl0aGFlbHQsIHp1IGVybGVkaWdlbi4KKworIFdlciBzaWNoIG5vY2ggbWVociBJbmZvcm1hdGlvbmVuIHZlcnNjaGFmZmVuIG1vZWNodGUsIHNjaGF1dCBlaW5mYWNoIG1hbAorIGF1ZiBodHRwOi8vd3d3LnRydmVzLmRlIHZvcmJlaS4KKworCisgU0lFSEUgQVVDSDoKKyAgICBhdHRyaWJ1dGUsIGViZW5lbiwgZ2lsZGVuCisKKyAgICAqSXN0IG1hbiBNaXRnbGllZCBlaW5lciBhbmRlcmVuIEdpbGRlLCBzbyBtdXNzIG1hbiBmdWVyIGRpZSBIaWxmZW4genUgZGVuCisgICAgU3BydWVjaGVuIGBoaWxmZSBnaWxkZSBrYWVtcGZlciA8bmFtZT4nIGJlbnV0emVuISoKKworIExFVFpURSBBZU5ERVJVTkc6CisgICAgVGh1LCAxNy4wMS4yMDA4LCAxNDowMDowMCB2b24gR2FieWxvbgpkaWZmIC0tZ2l0IGEvZG9jL2hlbHAva2FtcGYgYi9kb2MvaGVscC9rYW1wZgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi45OTFlNTQ1Ci0tLSAvZGV2L251bGwKKysrIGIvZG9jL2hlbHAva2FtcGYKQEAgLTAsMCArMSwzMiBAQAorCitLYWVtcGZlbgorPT09PT09PT0KKworICAgICBLYWVtcGZlbiwgYXVjaCBhbGxnZW1laW4gYWxzIE1ldHplbG4gYmVrYW5udCBpc3QgZWluZSBkZXIgTGllYmxpbmdzLQorICAgICBzcG9ydGFydGVuIGRpdmVyc2VyIEdpbGRlbiB1bmQgYWt0aXZlciBTcGllbGVyLiBEYWJlaSBzdWNodCBtYW4gc2ljaAorICAgICBlaW5lbiBtb2VnbGljaHN0IGludGVyZXNzYW50IGF1c2dlc3RhdHRldGVuIE5QQywgYnJpbmd0IGlobiB1bSB1bmQKKyAgICAgYmVudXR6dCBkZXNzZW4gZWhlbWFsaWdlcyBIYWIgdW5kIEd1dCB1bSBlaW5lbiB3ZWl0ZXJlbiBOUEMgenUgdG9ldGVuLgorICAgICBEYXMgaXN0IGJlbGllYmlnIGl0ZXJpZXJiYXIuCisKKyAgICAgRWluIEthbXBmIGlzdCBpbiBLYW1wZnJ1bmRlbiBhdWZnZXRlaWx0LCBkaWUgZHVyY2ggZGVuIEhlcnpzY2hsYWcKKyAgICAgYmVzdGltbXQgc2luZC4gQmVudXR6dCBtYW4gZWluZSBXYWZmZSBvZGVyIGhhdCBIYWVuZGUgZnJlaSwgc28gZ3JlaWZ0CisgICAgIG1hbiBtaXQgZGllc2VuIGVpbmVuIEdlZ25lciBhbiwgZGVzc2VuIEhhdXQgdW5kIFJ1ZXN0dW5nIHNjaHVldHp0CisgICAgIGRhdm9yLiBEYW5uIGdyZWlmZW4gZGVyIG9kZXIgZGllIEdlZ25lciBhbi4KKworICAgICBJbiBqZWRlciBLYW1wZnJ1bmRlIGthbm4gbWFuIHp1c2FldHpsaWNoIG1pdCBaYXViZXJlaSBvZGVyIE9iamVrdGVuCisgICAgIFNjaGFkZW4gdmVydXJzYWNoZW4gb2RlciBkZW4gS2FtcGYgYmVlaW5mbHVzc2VuLiBXaWUgb2Z0IGRhcyBtb2VnbGljaAorICAgICBpc3QsIGhhZW5ndCB2b24gU2VoZXJzdGF0dXMsIChTZWhlcilsZXZlbCB1bmQgZWlnZW5lciBHZXNjaHdpbmRpZ2tlaXQKKyAgICAgYWIuCisKKyAgICAgR2VyYWRlIHNjaHdpZXJpZ2VyZSBNb25zdGVyIGtvZW5uZW4gbnVyIGltIFRlYW0gYmVzaWVndCB3ZXJkZW4uIEluCisgICAgIGRlciBQYXJhbGxlbHdlbHQsIGRpZSBudXIgZnVlciBTZWhlciBlcnJlaWNoYmFyIGlzdCwgc2luZCBkaWUgTW9uc3RlcgorICAgICBtYW5jaG1hbCBhdWNoIG5vY2ggZXR3YXMgc3RhZXJrZXIgb2RlciBoaW50ZXJoYWVsdGlnZXIuCisKKyBTSUVIRSBBVUNIOgorICAgICBWZXJ3YW5kdDogdG9ldGUsIHN0b3AsIHJlcG9ydCwgdGVhbQorICAgICBBbmRlcmVzOiAgaGVpbHVuZywgbGViZW4sIHRvZCAKKyAgICAgICAgICAgICAgIHphdWJlcmVpLCB3YWZmZW5mZXJ0aWdrZWl0ZW4KKyAgICAgICAgICAgICAgIGJhbGFuY2UsIGFiZW50ZXVlcgorCisgTEVUWlRFIEFlTkRFUlVORzoKKyAgICAxNC4gTWFlcnogMjAwNCBHbG9pbnNvbgpkaWZmIC0tZ2l0IGEvZG9jL2hlbHAva2FyYXRlIGIvZG9jL2hlbHAva2FyYXRlCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjViMTIxNmIKLS0tIC9kZXYvbnVsbAorKysgYi9kb2MvaGVscC9rYXJhdGUKQEAgLTAsMCArMSw3MiBAQAorCitEaWUgR2lsZGUgZGVyIEthcmF0ZWthZW1wZmVyCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKKyAgICBNYW4ga2FubiBpbiBkZXIgR2lsZGUgZGVyIEthcmF0ZWthZW1wZmVyIGJlaSBTZW5zZWkgRnVuYWtvc2hpIEthcmF0ZQorICAgIGxlcm5lbi4gV2VubiBtYW4gaW4gZGVyIEdpbGRlIGVpbmdldHJldGVuIGlzdCwgc29sbHRlIG1hbiBpaG4gbmFjaCBkZW4KKyAgICBBbmZvcmRlcnVuZ2VuIGZyYWdlbiAtIGVyIHNhZ3QgZWluZW0gZGFubiwgd2VsY2hlIEthcmF0ZXRlY2huaWtlbiBtYW4KKyAgICBsZXJuZW4gdW5kIHVlYmVuIG11c3MsIHVtIGpld2VpbHMgZGVuIG5hZWNoc3RlbiBHcmFkIHp1IGVycmVpY2hlbi4KKworICAgIEVzIHdpcmQgamVkb2NoIGVpbmlnZSBaZWl0IGRhdWVybiwgYmlzIG1hbiBkaWUgdmVyc2NoaWVkZW5lbiBUZWNobmlrZW4gZ3V0CisgICAgZ2VudWcga2Fubi4gTWFuIGthbm4gaW4gZGVyIEdpbGRlIGplZGUgVGVjaG5payBlaW56ZWxuIHVlYmVuLCBiZWkgZGVuCisgICAgQWJ3ZWhydGVjaG5pa2VuIGlzdCBlcyBqZWRvY2ggcmF0c2FtLCBkaWVzZSBtaXQgYHVlYmUgYWJ3ZWhyJyBnZWdlbiBkZW4KKyAgICBTZW5zZWkgenUgdWViZW4gLSBkYWJlaSBtdXNzIG1hbiBhdWYgamVkZW4gQW5ncmlmZiBtaXQgZWluZXIgQWJ3ZWhydGVjaG5paworICAgIHJlYWdpZXJlbi4gTmF0dWVybGljaCBtdXNzIGVzIGRpZSByaWNodGlnZSBBYndlaHIgc2VpbiAtIGVpbmVuIEFnZS1adWtpCisgICAgKEZhdXN0c3Rvc3MgbmFjaCBvYmVuLCBpbSBLb3BmYmVyZWljaCkga2FubiBtYW4gbnVuIGVpbm1hbCBuaWNodCBtaXQgZWluZW0KKyAgICBHZWRhbi1CYXJhaSAoQWJ3ZWhyIG5hY2ggdW50ZW4sIGdlZ2VuIFNjaGxhZWdlIHVudGVyaGFsYiBkZXIgR3VlcnRlbGxpbmllKQorICAgIGFid2VocmVuLiBBbmZhbmdzIHdpcmQgbWFuIGF1Y2ggbm9jaCBuaWNodCBqZWRlbiBBbmdyaWZmIGFid2VocmVuIGtvZW5uZW4uCisgICAgQmVpbSBUcmFpbmluZyBzb2xsdGUgbWFuIHVlYnJpZ2VucyBuaWNodCB6dXZpZWwgS3JlbXBlbCBtaXQgc2ljaAorICAgIGhlcnVtc2NobGVwcGVuIC0gaW1tZXJoaW4gbXVzcyBtYW4gc2ljaCBiZWkgS2FyYXRlIHZpZWwgYmV3ZWdlbi4KKworICAgIEltIEthbXBmIHdlbmRldCBtYW4gZGllIGVybGVybnRlbiBUZWNobmlrZW4gdWVicmlnZW5zIGF1dG9tYXRpc2NoIGFuLiBBdWNoCisgICAgZGFkdXJjaCBsZXJudCBtYW4gZWluaWdlcyBoaW56dS4gU2Nod2VyZSBSdWVzdHVuZ2VuIHNjaHJhZW5rZW4gYWxsZXJkaW5ncworICAgIGRpZSBCZXdlZ2xpY2hrZWl0IHN0YXJrIGVpbiAtIG1hbiBzb2xsdGUgc2ljaCBhbHNvIGF1ZiBHaSB1bmQgR3VlcnRlbAorICAgIGJlc2NocmFlbmtlbi4KKworICAgIEVzIHdlcmRlbiBiZWltIEthbXBmIHVlYnJpZ2VucyBudXIgZGllIFJ1ZXN0dW5nZW4gaW0gZ2V0cm9mZmVuZW4KKyAgICBLb2VycGVyYmVyZWljaCBiZWltIEdlZ25lciBiZXJ1ZWNrc2ljaHRpZ3QgLSB3ZW5uIGplbWFuZCBpbiBlaW5lbSBCZXJlaWNoCisgICAgc2NobGVjaHQgZ2VzY2h1ZXR6dCBpc3QsIHNvbGx0ZSBtYW4gc2ljaCBtaXQgYGFuZ3JpZmYgbWl0IHh4eCwgeXl5IHVuZAorICAgIHp6eicgYXVmIGRpZSBBbmdyaWZmc3RlY2huaWtlbiBpbSByaWNodGlnZW4gWmllbGJlcmVpY2ggYmVzY2hyYWVua2VuLiBXZXIKKyAgICBlaW5lbiBob2hlbiBHcmFkIGhhdCwgd2FlaGx0IHVlYnJpZ2VucyBkaWUgcmljaHRpZ2UgVGVjaG5payBhdXRvbWF0aXNjaAorICAgIGV0d2FzIGdlc2NoaWNrdGVyLi4uCisKKyAgICBFcyBpc3QgYXVjaCB3aWNodGlnLCB3aWUgZ3Jvc3MgZGVyIEdlZ25lciBpc3QgLSBlaW4gRWxmIHNvbGx0ZSBuaWNodAorICAgIHZlcnN1Y2hlbiwgZWluZW4gWndlcmcgbWl0IGVpbmVtIEFnZS1adWtpIGFuenVncmVpZmVuLCB3ZWlsIGVyIGRhbm4KKyAgICBMb2VjaGVyIGluIGRpZSBMdWZ0IHVlYmVyIGlobSBzY2hsYWVndC4KKworICAgIFZvbiBkZW4gQW5ncmlmZnN0ZWNobmlrZW4gc2luZCBUcml0dGUgYW0gZWZmZWt0aXZzdGVuLCBkYW5hY2gga29tbWVuCisgICAgSGFuZGthbnRlbnNjaGxhZWdlLCBkYW5uIEVsbGJvZ2Vuc2NobGFlZ2UgdW5kIEtuaWV0cml0dGUsIGRhbm4KKyAgICBGYXVzdHNjaGxhZWdlIHVuZCB6dWxldHp0IEZhdXN0c3RvZXNzZS4KKworICAgIE1hbiBrYW5uIG1pdCB6d2VpIEhhZW5kZW4gaW0gUHJpbnppcCBiZXNzZXIgdmVydGVpZGlnZW4gYWxzIG1pdCBlaW5lciAtCisgICAgamVkb2NoIGlzdCBlaW5lIGRhcmF1ZiBmb2xnZW5kZSBIYW5kdGVjaG5payBpbW1lciBldHdhcyBzY2hsZWNodGVyLiBBdWNoCisgICAgendlaSBGdXNzdGVjaG5pa2VuIGt1cnogaGludGVyZWluYW5kZXIgc2luZCBuaWNodCBlbXBmZWhsZW5zd2VydC4KKworICAgIERpZSBFcmZvbGdzd2FocnNjaGVpbmxpY2hrZWl0IGVpbmVyIFRlY2huaWsgaGFlbmd0IG5pY2h0IG51ciB2b20gS29lbm5lbgorICAgIGFiLCBzb25kZXJuIGF1Y2ggdm9uIGRlciBnZWlzdGlnZW4gS29uemVudHJhdGlvbiwgYWxzbyBkZW4gTWFnaWVwdW5rdGVuLgorICAgIFdlbm4gZGllc2UgbmFjaGxhc3Nlbiwgc2lua3QgZGllIFdhaHJzY2hlaW5saWNoa2VpdCwgYmVpIHNjaHdpZXJpZ2VuCisgICAgVGVjaG5pa2VuIGZydWVoZXIgdW5kIGJlaSBsZWljaHRlbiBzcGFldGVyLiBKZSBob2VoZXIgamVkb2NoIGRlciBHcmFkIGlzdCwKKyAgICBkZXN0byBsYW5nc2FtZXIgc2lua3QgZGllIFdhaHJzY2hlaW5saWNoa2VpdCBkYW5uLgorCisgICAgRGllIG1heGltYWxlIFdpcmt1bmcgZWluZXMgbWlzc2x1bmdlbmVuIFNjaGxhZ2VzIGlzdCBzY2hsZWNodGVyIGFscyBkaWUKKyAgICBtYXhpbWFsZSBXaXJrdW5nIGVpbmVzIGdlbHVuZ2VuZW4gU2NobGFnZXMgLSBiZWkgZWluZmFjaGVuIFNjaGxhZWdlbiBoYWxiCisgICAgc28gZ3V0LCBiZWkgc2Nod2llcmlnZW4gbm9jaCB3ZW5pZ2VyLiBKZSBob2VoZXIgZGVyIEdyYWQgaXN0LCBkZXN0byBob2VoZXIKKyAgICBpc3QgZGllIGdhcmFudGllcnRlIE1pbmRlc3R3aXJrdW5nIGVpbmVzIGdlbHVuZ2VuZW4gU2NobGFnZXMuIEJlaSBob2hlbgorICAgIEdyYWRlbiBrYW5uIGVzIGF1Y2ggZ2VzY2hlaGVuLCBkYXNzIGVpbiBTY2hsYWcgYmVzb25kZXJzIGd1dCBnZWxpbmd0IC0gYmVpCisgICAgdm9sbGVyIEtvbnplbnRyYXRpb24gd2lyZCBkaWUgV2lya3VuZyBkYWR1cmNoIGZhc3QgdmVyZG9wcGVsdC4gSGFuZHNjaHVoZQorICAgIGJ6dy4gU2NodWhlIGRhZW1wZmVuIG5hdHVlcmxpY2ggZWluZW4gU2NobGFnIGJ6dy4gVHJpdHQuCisKKyAgICBEaWUgVmVydGVpZGlndW5nIGlzdCBhdWNoIG5vY2ggdm9uIGRlciBBcnQgZGVzIEFuZ3JpZmZzIGFiaGFlbmdpZyAtIGVpbgorICAgIEthcmF0ZWthIGthbm4gQW5ncmlmZmUgbWl0IHN0dW1wZmVuIHVuZCBzcGl0emVuIFdhZmZlbiBndXQgYWJ3ZWhyZW4sCisgICAgU2Nod2VydGVyIHVuZCBhZWhubGljaGUgV2FmZmVuIGF1Y2ggbm9jaCByZWNodCBndXQsIGFiZXIgZXR3YXMgc2NobGVjaHRlci4KKyAgICBHZWdlbiBNYWdpZSwgRmV1ZXIgdW5kIEFlaG5saWNoZXMgc2llaHQgZWluIEthcmF0ZWthIGFuZmFuZ3MgcmVjaHQgYWx0CisgICAgYXVzLCB3ZWlsIGVyIGRpZXMgbmljaHQgYWJ3ZWhyZW4ga2FubiAtIHdlbm4gZXIgZWluZW4gaG9oZW4gR3JhZCBoYXQKKyAgICBnZWxpbmd0LCBlcyBpaG0gYWJlciBvZWZ0ZXIsIGVpbmVtIHNvbGNoZW4gQW5ncmlmZiBhdXN6dXdlaWNoZW4sIGplZG9jaAorICAgIG51ciwgd2VubiBlciBuaWNodCB6dXZpZWwgR2V3aWNodCBkYWZ1ZXIgYmV3ZWdlbiBtdXNzLgorCisgU0lFSEUgQVVDSDoKKyAgICBhYndlaHIsIGFuZ3JpZmYsIGtvbnplbnRyYXRpb24sIG5lbW9rdS1vd2FydSwKKyAgICBhdHRyaWJ1dGUsIGViZW5lbiwgZ2lsZGVuLCBkYWVtcGZ1bmcKKworICAgICpJc3QgbWFuIE1pdGdsaWVkIGVpbmVyIGFuZGVyZW4gR2lsZGUsIHNvIG11c3MgbWFuIGZ1ZXIgZGllIEhpbGZlbiB6dSBkZW4KKyAgICBLb21tYW5kb3MgYGhpbGZlIGdpbGRlIGthcmF0ZSA8bmFtZT4nIGJlbnV0emVuISoKZGlmZiAtLWdpdCBhL2RvYy9oZWxwL2thdHplbmtyaWVnZXIgYi9kb2MvaGVscC9rYXR6ZW5rcmllZ2VyCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmE3MGQ0MmIKLS0tIC9kZXYvbnVsbAorKysgYi9kb2MvaGVscC9rYXR6ZW5rcmllZ2VyCkBAIC0wLDAgKzEsMTMgQEAKK0tBVFpFTktSSUVHRVI6CisKKyAgICAgICAgQWxzIGRpZSBEc2NodW5nZWxzdGFkdCAgS2F0em1hbmR1IGlocmUgVG9yZSBmdWVyICBkaWUgV2VsdCBvZWZmbmV0ZSwKKyAgICAgICAgbGVybnRlIGRpZSBXZWx0IG5pY2h0IG51ciBkaWUgRmVsaW5lbiBrZW5uZW4sIHNvbmRlcm4gYXVjaCBkaWUgR2lsZGUKKyAgICAgICAgZGVyICBLYXR6ZW5rcmllZ2VyLiAgRGllIE1pdGdsaWVkZXIgIGRpZXNlciAgR2lsZGUgIHZlcmZ1ZWdlbiAgdWViZXIKKyAgICAgICAgdmVyc2NoaWVkZW5lIFphdWJlciB1bmQgIEZhZWhpZ2tlaXRlbiwgIGRlcmVuIFVyc3BydW5nIGltIHRhZWdsaWNoZW4KKyAgICAgICAgS2FtcGYgdW0gZGFzIFVlYmVybGViZW4gaW0gRHNjaHVuZ2VsIHp1IHN1Y2hlbiBpc3QuCisKKyAgICAgICAgTmFlaGVyZSAgSW5mb3JtYXRpb25lbiAgenUgIGRpZXNlciAgR2lsZGUgZmluZGVzdCAgRHUgaW4gZGVyIGdyb3NzZW4KKyAgICAgICAgQmlibGlvdGhlayB2b24gS2F0em1hbmR1LgorCitTSUVIRSBBVUNIOgorCWF0dHJpYnV0ZSwgZ2lsZGVuLCBrYW5hZWxlCmRpZmYgLS1naXQgYS9kb2MvaGVscC9rbGVydXMgYi9kb2MvaGVscC9rbGVydXMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMGZiODY5MwotLS0gL2Rldi9udWxsCisrKyBiL2RvYy9oZWxwL2tsZXJ1cwpAQCAtMCwwICsxLDcyIEBACisKK0RpZSBLbGVyaWtlcmdpbGRlCistLS0tLS0tLS0tLS0tLS0tLQorCisgICAgT2J3b2hsIGRlciBTdGFtbXRlbXBlbCBkZXMgSGVpbGlnZW4gT3JkZW5zIHNpY2ggYXVmIGRlciBJbnNlbCBhbSBFbmRlIGRlcgorICAgIFdlbHQgYmVmaW5kZXQsIHNwaWVsdCBzaWNoIGRlciBmdWVyIGRpZSBTcGllbGVyIHJlbGV2YW50ZSBUZWlsIGltIFRlbXBlbAorICAgIGluIGRlciBTdGFkdCBEamVsaWJlYnkgYWIuIERpZSBCZWdydWVuZHVuZyBrYW5uIG1hbiBpbSAnQnVjaCBkZXIKKyAgICBHcnVuZHNhZXR6ZScgbmFjaGxlc2VuLgorCisgICAgUHJha3Rpc2NoIGJlZGV1dGV0IGRpZXMsIGRhc3Mgc28gZ3V0IHdpZSBhbGxlIEFrdGlvbmVuLCB3aWUgZGVyIEVpbi0gb2RlcgorICAgIEF1c3RyaXR0LCBkYXMgRXJsZXJuZW4gdm9uIFNwcnVlY2hlbiAoYmVpIGRlbiBLbGVyaWtlcm4gQW5ydWZ1bmdlbgorICAgIGdlbmFubnQpIHVuZCBkYXMgRXJob2VoZW4gZGVyIFN0dWZlIG51ciBpbSBUZW1wZWwgaW4gRGplbGliZWJ5IHZlcmZ1ZWdiYXIKKyAgICBzaW5kLiBOdXIgZnVlciBkaWUgUHJpZXN0ZXJ3ZWloZSB1bmQgZGVuIEF1ZnN0aWVnIHp1bS96dXIgRXJsZXVjaHRldGVuCisgICAgbXVzcyBtYW4gZGVuIFN0YW1tdGVtcGVsIGF1ZnN1Y2hlbi4gRGVyIEJlc3VjaCBkZXMgU3RhbW10ZW1wZWxzIGxvaG50IHNpY2gKKyAgICBqZWRvY2ggYXVjaCwgd2VubiBtYW4gc2ljaCBnZW5hdWVyIHVlYmVyIGRpZSBPcmRlbnNnZXNjaGljaHRlIGluZm9ybWllcmVuCisgICAgd2lsbCwgZGEgZG9ydCBkaWUgd2ljaHRpZ3N0ZW4gU2NocmlmdHN0dWVja2UgenUgZmluZGVuIHNpbmQuCisKKyBJTkZPUk1BVElPTkVOOgorICAgIFVtIHNpY2ggdWViZXIgZGVuIE9yZGVuIHp1IGluZm9ybWllcmVuLCBzb2xsdGUgbWFuIGltIFRlbXBlbCBmb2xnZW5kZQorICAgIEJ1ZWNoZXIgbGVzZW46CisKKyAgICAgRGFzIEJ1Y2ggZGVyIEFucnVmdW5nZW4KKyAgICAgICAgaGllciBzdGVoZW4gSW5mb3JtYXRpb25lbiB6dSBkZW4gZWluemVsbmVuIEFucnVmdW5nZW4KKworICAgICBEYXMgQnVjaCBkZXIgR3J1bmRzYWV0emUKKyAgICAgRGFzIEJ1Y2ggZGVzIHp3ZWl0ZW4gRXhvZHVzCisgICAgICAgIGVpbiBwYWFyIGhpc3RvcmlzY2hlIEluZm9ybWF0aW9uZW4KKworICAgICBEYXMgQnVjaCBkZXIgSGllcmFyY2hpZQorICAgICAgICBkaWUgZWluemVsbmVuIE9yZGVuc3N0dWZlbiBtaXQgQW5mb3JkZXJ1bmdlbiB1bmQgRmFlaGlna2VpdGVuCisKKyBaVU0gRUlOVFJJVFQ6CisgICAgRnVlciBkZW4gYWxsZXJlcnN0ZW4gRWludHJpdHQgaW4gZGVuIE9yZGVuIGJlbm9ldGlndCBtYW4gZWluZW4KKyAgICBGdWVyc3ByZWNoZXIuIERpZXNlciBtdXNzIHNlbGJzdCBNaXRnbGllZCBkZXMgSGVpbGlnZW4gT3JkZW5zIHVuZCBpbiBkZXIKKyAgICBPcmRlbnNoaWVyYXJjaGllIHNjaG9uIHp1bSBXYW5kZXJwcmVkaWdlciBhdWZnZXN0aWVnZW4gc2Vpbi4gV2VubiBtYW4gKGF1cworICAgIHdlbGNoZW4gR3J1ZW5kZW4gYXVjaCBpbW1lcikgYXVzIGRlbSBIZWlsaWdlbiBPcmRlbiBhdXN0cml0dCB1bmQgZGFubiBkb2NoCisgICAgd2llZGVyIGVpbnRyZXRlbiB3aWxsLCBpc3QgZWluIEZ1ZXJzcHJlY2hlciBuaWNodCBtZWhyIG5vZXRpZy4KKworICAgIFdlaXRlcmUgRWludHJpdHRzYmVkaW5ndW5nIGlzdCwgZGFzcyBtYW4gZWluZW4gaGVpbGlnZW4gQ2hhcmFrdGVyCisgICAgYXVmd2Vpc3QuCisKKyBaVSBERU4gQU5SVUZVTkdTS09TVEVOOgorICAgIEJlaSBkZW4gS29zdGVuLCBkaWUgYXVmIGRlbiBIaWxmZXNlaXRlbiBhbmdlZ2ViZW4gc2luZCwgaGFuZGVsdCBlcyBzaWNoCisgICAgbnVyIHVtIEdydW5kd2VydGUuIERpZXNlIFdlcnRlIHZhcmlpZXJlbiBhYmhhZW5naWcgdm9tIENoYXJha3RlciB1bmQgZGVyCisgICAgR2xhdWJlbnNzdGFlcmtlLiBFaW4gZnJlY2hlciwgYm9lc2VyIG9kZXIgZ2FyIHNhdGFuaXNjaGVyIENoYXJha3RlciB6aWVodAorICAgIGhvZWhlcmUgS29zdGVuIG5hY2ggc2ljaCwgd2FlaHJlbmQgZXMgYmVpIG5ldHRlbSwgZ3V0ZW0gb2RlciBoZWlsaWdlbQorICAgIENoYXJha3RlciB6dSBlaW5lciBLb3N0ZW5zZW5rdW5nIGtvbW10LgorCisgICAgQXVzc2VyZGVtIHdlcmRlbiBiZWkgZGVyIFdlaWhlIHp1bSBQcmllc3RlciBkaWUgS29zdGVuIGRlciBBbnJ1ZnVuZ2VuIGRlcgorICAgIEdvdHRoZWl0LCBkZXIgbWFuIHNpY2ggZ2V3ZWlodCBoYXQsIGdlbmVyZWxsIHVtIDIwJSByZWR1emllcnQsIHdhZWhyZW5kCisgICAgZGllIEtvc3RlbiBmdWVyIGRpZSBBbnJ1ZnVuZ2VuIGRlciBhbmRlcmVuIEdvZXR0ZXIgdW0gMjAlIHN0ZWlnZW4uCisKKyAgICBEaWUgZ2VuYXVlbiBLb3N0ZW4genUgZ2VnZWJlbmVtIENoYXJha3RlciB1bmQgR2xhdWJlbnNzdGFlcmtlIGthbm4gbWFuCisgICAgaW1tZXIgaW0gQnVjaCBkZXIgQW5ydWZ1bmdlbiBuYWNoc2NobGFnZW4uCisKKyBTT05TVElHRVM6CisgICAgSW4gZGVuIFRlbXBlbG4gc3RlaHQgZGVuIE9yZGVuc21pdGdsaWVkZXJuIGRlciBCZWZlaGwgYHRlbXBlbHRyYW5zcG9ydCcKKyAgICB6dXIgVmVyZnVlZ3VuZywgZGVyIGRlbiBzY2huZWxsZW4gV2VjaHNlbCB6d2lzY2hlbiBiZWlkZW4gVGVtcGVsbiBlcmxhdWJ0LgorCisgU0lFSEUgQVVDSDoKKyAgICBnaWxkZW4sCisgICAgYmV0ZSwgZW50ZnJvc2NoZSwgaWRlbnRpZml6aWVyZSwgbGViZW5za3JhZnQsIHNvbm5lbnNjaHV0eiwgZG9ubmVyLAorICAgIGVudGZsdWNoZSwga3VyaWVyZSwgbGFldXRlcmUsIGJsaXR6LCBoZWlsZSwgc2NoYWV0eiwgc2VnbmUsCisgICAgZWxlbWVudGFyc3BoYWVyZSwgZW50Z2lmdGUsIGxldWNodGVuLCB0cmF1ZSwgd2VpaGUsIGVsZW1lbnRhcnNjaGlsZCwKKyAgICBoZWlsaWdlbnNjaGVpbiwgbWVzc2Vya3JlaXMsIHJlZ2VuZXJpZXJlLCBzcGFsdHVuZywgYmVpc3RhbmQsIGhlaWx0cmFuaywKKyAgICBzY2h1dHpoYW5kLCB3dW5kZXIKKworICAgICpOaWNodC1LbGVyaWtlciBtdWVzc2VuIGZ1ZXIgZGllIEhpbGZlbiB6dSBkZW4gQW5ydWZ1bmdlbiBgaGlsZmUgZ2lsZGUKKyAgICBrbGVydXMgPG5hbWU+JyBiZW51dHplbiEqCisKKyBMRVRaVEUgQWVOREVSVU5HOgorICAgIEZyaSwgMDUuMDkuMTk5NywgMDg6NDc6MDggdm9uIFdhcmdvbgpkaWZmIC0tZ2l0IGEvZG9jL2hlbHAva29uemVwdCBiL2RvYy9oZWxwL2tvbnplcHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNWI4NDEzMAotLS0gL2Rldi9udWxsCisrKyBiL2RvYy9oZWxwL2tvbnplcHQKQEAgLTAsMCArMSw1OCBAQAorCitEaWUgSWRlZSBoaW50ZXIgZGllc2VtIFNwaWVsCis9PT09PT09PT09PT09PT09PT09PT09PT09PT09CisKKyAgICBEaWVzIHNpbmQgZGllIChldHdhcyB0ZWNobmlzY2ggZ2VoYWx0ZW5lbikgR3J1bmRrb256ZXB0ZSBkZXMKKyAgICBNb3JnZW5HcmF1ZW5zLCBiencuIHZvbiBMUE11ZHMgYW4gc2ljaDoKKworICAgICAxLiBFaW4gTWFnaWVyIGthbm4gZGFzIFNwaWVsIGVyd2VpdGVybi4KKworICAgICAyLiBTcGllbGVyd2VpdGVydW5nZW4ga29lbm5lbiBhbSBsYXVmZW5kZW4gU3BpZWwgdm9yZ2Vub21tZW4gd2VyZGVuLgorCisgICAgIDMuIEFsbGVzIGltIFNwaWVsIGJlc3RlaHQgYXVzIE9iamVrdGVuLiBSYWV1bWUsIFNwaWVsZXIsIE1vbnN0ZXIgdW5kCisgICAgICAgIFNjaGFldHplIHNpbmQgYWxsZXMgT2JqZWt0ZS4KKworICAgICA0LiBBbGxlIE9iamVrdGUgd2VyZGVuIGluIGVpbmVtIEMtRGlhbGVrdCAoTFBDKSBnZXNjaHJpZWJlbi4gRGllCisgICAgICAgIE9iamVrdGUgd2VyZGVuIGJlaSBCZWRhcmYgZ2VsYWRlbiB1bmQgaGFsYmludGVycHJldGllcnQuCisKKyAgICAgNS4gRXMgZ2lidCBrZWluZW4gUGFyc2VyLiBBbGxlIEtvbW1hbmRvcyB3ZXJkZW4gdm9uIGRlbiBPYmpla3RlbgorICAgICAgICBkZWZpbmllcnQuIEVpbiBNZXNzZXIgZGVmaW5pZXJ0IHp1bSBCZWlzcGllbCBkYXMgS29tbWFuZG8gYHNjaG5laWRlJworICAgICAgICB1bmQgZWluZSBMZWRlcmphY2tlIGRhcyBLb21tYW5kbyBgdHJhZ2UnLgorCisgICAgICAgIEVpbiBPYmpla3QgZGVmaW5pZXJ0IGVpbiBLb21tYW5kbywgaW5kZW0gZXMgc2llIG1pdCBlaW5lciBpbSBPYmpla3QKKyAgICAgICAgaW1wbGVtZW50aWVydGVuIEZ1bmt0aW9uIHZlcmtudWVwZnQuIFdlbm4gZGVyIFNwaWVsZXIgZGFzIEtvbW1hbmRvCisgICAgICAgIGVpbmdpYnQsIHNvIHdpcmQgZGllIHp1Z2Vob2VyaWdlIEZ1bmt0aW9uIGltIE9iamVrdCBhdWZnZXJ1ZmVuLiBXZW5uCisgICAgICAgIGRlciBTcGllbGVyIGB0cmFnZSBqYWNrZScgZWluZ2lidCwgc28gd2lyZCBgamFja2UnIGFscyBBcmd1bWVudCBhbgorICAgICAgICBkaWVzZSBGdW5rdGlvbiB1ZWJlcmdlYmVuLiBXZW5uIGRlciBTcGllbGVyIGB0cmFnZSBzY2hpbGQnIGVpbmdpYnQsIHNvCisgICAgICAgIGVya2VubnQgZGllIEZ1bmt0aW9uLCBkYXNzIGBqYWNrZScgIT0gYHNjaGlsZCcgaXN0LCB1bmQgZ2lidCBkZW4gV2VydAorICAgICAgICBmdWVyIE1pc3NlcmZvbGcgKDApIHp1cnVlY2suIERhbm4gd2lyZCBlaW4gYW5kZXJlcyBgdHJhZ2UnLUtvbW1hbmRvCisgICAgICAgIGF1c3Byb2JpZXJ0LCBiaXMgZWluIFBhc3NlbmRlcyBnZWZ1bmRlbiB3aXJkLgorCisgICAgICAgIEJld2VndCBkZXIgU3BpZWxlciBkaWUgSmFja2UgYXVzIHNlaW5lbSBJbnZlbnRvcnkgb2RlciBzZWluZW0KKyAgICAgICAgRW52aXJvbm1lbnQgLSBzcHJpY2ggc2VpbmVtIEVpbmZsdXNzYmVyZWljaCBzbyB3ZXJkZW4gYWxsZSBLb21tYW5kb3MsCisgICAgICAgIGRpZSB6dXIgSmFja2UgZ2Vob2VyZW4gZ2Vsb2VzY2h0LgorCisgICAgIDYuIFJhZXVtZSBzaW5kIE9iamVrdGUsIGRpZSBLb21tYW5kb3Mgd2llIGBvc3Rlbicgb2RlciBga2xldHRlcicgdW5kCisgICAgICAgIGFlaG5saWNoZXMgZGVmaW5pZXJlbi4gV2VubiBkZXIgU3BpZWxlciBgb3N0ZW4nIGVpbmdpYnQsIHNvIHdpcmQgZGllCisgICAgICAgIHp1Z2Vob2VyaWdlIEZ1bmt0aW9uIGV0d2FzIG1pdCBkZW0gU3BpZWxlciB0dW4uCisKKyAgICAgNy4gRWluIE9iamVrdCBrYW5uIGVpbmUgRnVua3Rpb24gbmFtZW5zIGhlYXJ0X2JlYXQoKSBkZWZpbmllcmVuLiBEaWVzZQorICAgICAgICBGdW5rdGlvbiB3aXJkIGFsbGUgendlaSBTZWt1bmRlbiBhdWZnZXJ1ZmVuLiBEaWVzZSBGdW5rdGlvbiBrYW5uIGZ1ZXIKKyAgICAgICAgc2VsYnN0c3RhZW5kaWcgYWdpZXJlbmRlIE1vbnN0ZXIsIHZlcmxvZXNjaGVuZGUgRmFja2VsbiBvZGVyCisgICAgICAgIHZlcnpvZWdlcnRlIEZhbGxlbiBlaW5nZXNldHp0IHdlcmRlbi4KKworICAgICAgICBEZXIgUGhhbnRhc2llIGRlciBNYWdpZXIgc2luZCBrZWluZSBHcmVuemVuIGdlc2V0enQuCisgICAgICAgIChEZXIgRWZmaXppZW56IGRpZXNlciBGdW5rdGlvbiBzY2hvbiEpCisKKyAgICAgOC4gRGFzIGtvbXBsaXppZXJ0ZXN0ZSBPYmpla3QgaXN0IGRhcyBTcGllbGVyb2JqZWt0LiBFcyBkZWZpbmllcnQKKyAgICAgICAgS29tbWFuZG9zIHdpZSBgbmltbScsIGBsYWVjaGVsJywgYHNjaGF1JyBvZGVyIGB0b2V0ZScuCisKKyAgICAgOS4gV2VubiBlaW4gU3BpZWxlciBNYWdpZXIgd2lyZCwgc28gd2lyZCBlciBlaW5lciBSZWdpb24genVnZXRlaWx0LgorICAgICAgICBJbm5lcmhhbGIgZGllc2VyIFJlZ2lvbiBkYXJmIGVyIGRhbm4gZGFzIFNwaWVsIGVyd2VpdGVybi4gRXIga2FubgorICAgICAgICBTY2hsb2Vzc2VyIGJhdWVuLCBvZGVyIGVpbmUgSG9laGxlIC4uLgorCisgICAgMTAuIEZ1ZXIgTWFnaWVyLCBkaWUgT2JqZWt0ZSBzY2hyZWliZW4sIHN0ZWhlbiBlaW4gZWQta29tcGF0aWJsZXIgRWRpdG9yCisgICAgICAgIHVuZCBlaW4gVU5JWC1hZWhubGljaGVzIEZpbGVzeXN0ZW0genVyIFZlcmZ1ZWd1bmcuCisKKyBMRVRaVEUgQWVOREVSVU5HOgorICAgIDE0LiBNYWVyeiAyMDA0IEdsb2luc29uCmRpZmYgLS1naXQgYS9kb2MvaGVscC9sYWcgYi9kb2MvaGVscC9sYWcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMjI3YTVhMQotLS0gL2Rldi9udWxsCisrKyBiL2RvYy9oZWxwL2xhZwpAQCAtMCwwICsxLDQxIEBACitEYXMgTEFHCis9PT09PT09CisKKyAgICBEYXMgTEFHIGlzdCBkYXMgZ3JvZXNzdGUgdW5kIGZpZXNlc3RlIE1vbnN0ZXIgZGVzIE1vcmdlbmdyYXVlbi4gU2VsYnN0CisgICAgTWFnaWVyIHVuZCBHb2V0dGVyIHNpbmQgbWFjaHRsb3MuIEVzIHRyaXR0IGF1ZiBkZW4gUGxhbiwgd2VubiBlaW4gTWFnaWVyCisgICAgbWFsIHdpZWRlciBVbnNpbm4gZmFicml6aWVydCwgZWluIFNlaGVyIGRhcyBlaWdlbmUgSGF1cyBiaXMgenVtCisgICAgRGFjaHNwYW50ZW4gdm9sbGdlbXVlbGx0IG9kZXIgZWluIHNlaHIgYmVsaWVidGVyIE1pdHNwaWVsZXIgZWluCisgICAgIm1haWwgZnJldW5kZSIgYWJnZXNldHp0IGhhdC4KKworICAgIEdhbnogdGVjaG5pc2NoIGJldHJhY2h0ZXQgaXN0IGRlciBSZWNobmVyIHVlYmVybGFzdGV0IHVuZCBrYW5uIGRlbgorICAgIE11ZC1Qcm96ZXNzIG5pY2h0IG1pdCBnZXdvaG50ZXIgR2VzY2h3aW5kaWdrZWl0IGF1c2Z1ZWhyZW4uIERhZHVyY2gKKyAgICBoYWVuZ3QgZGFubiBuYXR1ZXJsaWNoIGFsbGVzIC0gZGVyIFZvcnRlaWwgamVkb2NoIGlzdCwgZGFzcyBtYW4gaW0KKyAgICBOb3JtYWxmYWxsIGFuIExhZyBuaWNodCBzdGlyYnQsIGRhIGF1Y2ggYWxsZSBNb25zdGVyIHVudGVyIFplaXRtYW5nZWwKKyAgICBsZWlkZW4uCisgICAgRGFoaW5nZWdlbiBpc3QgZGFzIGtsZWluZSBNb25zdGVyIE5ldHpsYWcgaGludGVyaGFlbHRpZ2VyLiBNZWlzdCByZWljaHQKKyAgICBlcyBhYmVyLCBkZW4gTmFjaGJhcm4gdm9tIE5ldHprYWJlbCBoZXJ1bnRlcnp1c2NodWJzZW4gdW0gZXMgenUKKyAgICB2ZXJ0cmVpYmVuLgorCisKKyAgICBFcyBnaWJ0IGVpbmlnZSBTcGllbHpldWdlLCBtaXQgZGVuZW4gbWFuIHNpY2ggZGFzIExhZyBpbiBaYWhsZW4KKyAgICBhbnplaWdlbiBsYXNzZW4ga2Fubi4gQW0gYmVsaWVidGVzdGVuIGlzdCBqZWRvY2ggZGVyIEthbmFsIDxNYXN0ZVI+OgorCisgICAgWzxNYXN0ZVI+Okdsb2luc29uXSBsCisgICAgWzxNYXN0ZVI+OjxNYXN0ZVI+XSA3LjgwIGNtZHMvcywgMTI3Ljk3IGNvbXAgbGluZXMvcworICAgIFs8TWFzdGVSPjo8TWFzdGVSPl0gTGFnOiAwLjUlLzYwLCAwLjglLzE1LCAxLjIvNSwgMC4wJS8xCisKKyAgICBEYWJlaSBiZWRldXRlbiBkaWUgWmFobGVuLCB1bSB3aWV2aWVsIFByb3plbnQgaW0gVmVyZ2xlaWNoIHp1ciBub3JtYWxlbgorICAgIFplaXQgZGFzIE1VRCBpbiBkZW4gbGV0enRlbiA2MC8xNS81LzEgTWludXRlbiBpbSBEdXJjaHNjaG5pdHQgbGFuZ3NhbWVyCisgICAgd2FyLgorICAgIAorICAgIEhpZXJiZWkgaXN0IHp1IGJlYWNodGVuLCBkYXNzIHNlbGJzdCBkZXIgMS1NaW51dGVud2VydCBudXIgYWxsZSAxMHMKKyAgICBiZXJlY2huZXQgd2lyZC4gVHJpdHQgYWxzbyBnZXJhZGUgamV0enQgZWluIExhZyBhdWYgdW5kIGlociBmcmFndCBzb2ZvcnQKKyAgICBkYXMgTGFnIGFiLCBpc3QgZXMgd2FocnNjaGVpbmxpY2gsIGRhc3MgZXMgbm9jaCBuaWNodCBpbSAxLU1pbnV0ZW53ZXJ0CisgICAgZW50aGFsdGVuIGlzdC4gRGllIGFuZGVyZW4gV2VydGUgd2VyZGVuIGVudHNwcmVjaGVuZCBzZWx0ZW5lciBuZXUKKyAgICBiZXN0aW1tdC4KKworIFNJRUhFIEFVQ0g6CisgICAgbXVkcmVjaG5lciwgc3RlcmJlbiwgZWJlbmVuCisKKyBMRVRaVEUgQWVOREVSVU5HOgorICAgIDA0LjA5LjIwMTAsIEdsb2luc29uCmRpZmYgLS1naXQgYS9kb2MvaGVscC9sZWJlbiBiL2RvYy9oZWxwL2xlYmVuCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjg4M2IzOTkKLS0tIC9kZXYvbnVsbAorKysgYi9kb2MvaGVscC9sZWJlbgpAQCAtMCwwICsxLDIzIEBACisKK0xlYmVuIHVuZCBMZWJlbnNwdW5rdGUKKz09PT09PT09PT09PT09PT09PT09PT0KKworICAgICBFaW4gamVkZXIgZ2VuaWVzc3Qgc2VpbiAodmlydHVlbGxlcykgTGViZW4gc28gZ3V0IGVyIGthbm4sIG9mdCB3aXJkCisgICAgIGdlbWV0emVsdCwgbWFuY2htYWwgZ2VxdWVzdGV0IHVuZCBub2NoIGhhZXVmaWdlciBnZWlkZWx0LgorCisgICAgIERhcyBMZWJlbiB3aXJkIGJlc3RpbW10IGR1cmNoIExlYmVuc3B1bmt0ZSB1bmQgS29uemVudHJhdGlvbnNwdW5rdGUsCisgICAgIHdvYmVpIGVyc3RlcmUgdWViZXIgZGVuIFRvZCBlbnRzY2hlaWRlbiB1bmQgendlaXRlcmUgZWluZW4gRWluZmx1c3MKKyAgICAgYXVmIGRpZSBaYXViZXJlaSBoYWJlbi4gU2lua2VuIGRpZSBMZWJlbnNwdW5rdGUgZHVyY2ggS2FtcGYgb2RlciBHaWZ0CisgICAgIGF1ZiB1bnRlciAwLCBzdGlyYnQgbWFuIChmYXN0IGltbWVyKS4gRGllIEFuemFobCBkZXIgTGViZW5zcHVua3RlCisgICAgIGhhZW5ndCB2b20gQXR0cmlidXQgQXVzZGF1ZXIgYWIsIGthbm4gYWJlciBhdWNoIGR1cmNoIGJlc29uZGVyZQorICAgICBaYXViZXJlaWVuIG9kZXIgQXVzcnVlc3R1bmcgZXJob2VodCB3ZXJkZW4uCisKKyAgICAgSmVkZXIgU3BpZWxlciBoYXQgZWluZW4gSGVyenNjaGxhZy4gRGllc2VuIHNwdWVydCBlciBpbSBLYW1wZiBvZGVyCisgICAgIG5hY2ggZGVtIEthbXBmLCBkZW5uIGRpZXNlciBiZXN0aW1tdCBLYW1wZnJ1bmRlbiAodW5kIGRpZSBkYXJpbgorICAgICBtb2VnbGljaGVuIEFrdGlvbmVuKSB1bmQgZGllIEhlaWx1bmcuCisKKyBTSUVIRSBBVUNIOgorICAgICB0b2QsIGhlaWx1bmcsIGthbXBmLCByZXBvcnQKKworIExFVFpURSBBZU5ERVJVTkc6CisgICAgIDQuIE5vdiAyMDExIEdsb2luc29uCmRpZmYgLS1naXQgYS9kb2MvaGVscC9sZWl0ZmFkZW4gYi9kb2MvaGVscC9sZWl0ZmFkZW4KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZTBlYjVkMgotLS0gL2Rldi9udWxsCisrKyBiL2RvYy9oZWxwL2xlaXRmYWRlbgpAQCAtMCwwICsxLDIyOCBAQAorRWluIGtsZWluZXIgTGVpdGZhZGVuIHp1bSBTcGllbCBpbSBNb3JnZW5HcmF1ZW4KKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorCisgIERhcyBNb3JnZW5HcmF1ZW4gaXN0IGVpbiBTcGllbC4gV2llIGJlaSBqZWRlbSBTcGllbCBtdWVzc2VuLCB1bSBkZW4KKyAgU3BpZWxzcGFzcyBtb2VnbGljaHN0IGZ1ZXIgYWxsZSB6dSBlcmhhbHRlbiwgZWluIHBhYXIgd2VuaWdlIFJlZ2VsbgorICBiZWFjaHRldCB3ZXJkZW4uIERpZXNlIFJlZ2VsbiBnZWx0ZW4gc293b2hsIGZ1ZXIgU3BpZWxlciBhbHMgYXVjaAorICBmdWVyIE1hZ2llci4KKworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqCisKKyAgICBEaWUgd2ljaHRpZ3N0ZSBSZWdlbCBiZXRyaWZmdCBkYXMgQW5ncmVpZmVuIHVuZCBUb2V0ZW4gYW5kZXJlcgorICAgIFNwaWVsZXIuCisKKyAgICBFUyBJU1QgU1RSSUtUIFVOVEVSU0FHVCBBTkRFUkUgU1BJRUxFUiBBTlpVR1JFSUZFTiBPREVSIFpVIFRPRVRFTi4KKworICAgIEF1Y2ggZGFzIGFic2ljaHRsaWNoZSBpbmRpcmVrdGUgVG9ldGVuIHZvbiBTcGllbGVybiBkdXJjaAorICAgIEdpbGRlbmZhZWhpZ2tlaXRlbiwgc3BlemllbGxlIE9iamVrdGUgb2RlciBhZWhubGljaGVzIGZhZWxsdCB1bnRlcgorICAgIGRpZXNlIFJlZ2VsLgorCisgICAgU29sbHRlIG1hbiBlaW5lbiBTcGllbGVyIHVtZ2VicmFjaHQgaGFiZW4sIHRyZXRlbiBzb2ZvcnQKKyAgICBCZXNjaHJhZW5rdW5nZW4gaW4gS3JhZnQsIGRpZSBudXIgZHVyY2ggZWluZW4gRXJ6bWFnaWVyIHdpZWRlcgorICAgIGF1ZmdlaG9iZW4gd2VyZGVuIGtvZW5uZW4uCisKKyAgICBXaWxsIG1hbiBzaWNoIGRlbm5vY2ggbWl0IGFuZGVyZW4gU3BpZWxlcm4gbWVzc2VuLCBzbyBleGlzdGllcmVuCisgICAgZXh0cmEgZGFmdWVyIGVpbmdlcmljaHRldGUgR2ViaWV0ZSwgd2llIHp1bSBCZWlzcGllbCBkaWUgQXJlbmEgaW4KKyAgICBkZXIgV3Vlc3RlLCBpbiBkZW5lbiBtYW4gc2ljaCBnZWdlbnNlaXRpZyBiZWthZW1wZmVuIGthbm4uCisKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKgorCisgICAgSGF0IG1hbiBtaXQgc2VpbmVtIENoYXJha3RlciBlaW5lIFplaXQgbGFuZyBnZXNwaWVsdCwgc28gZW50c3RlaHQKKyAgICBvZnQgZGVyIFd1bnNjaCwgZWlubWFsIGVpbmUgYW5kZXJlIFJhc3NlLCBHaWxkZSBvZGVyIGVpbmZhY2ggZWluZW4KKyAgICBhbmRlcmVuIFJvbGxlbnNwaWVsY2hhcmFrdGVyIHp1IHNwaWVsZW4uCisgICAgU2VpbmVuIGJpc2hlcmlnZW4gQ2hhcmFrdGVyIGthbm4gb2RlciBtb2VjaHRlIG1hbiBkYXp1IGFsbGVyZGluZ3MKKyAgICBuaWNodCBiZW51dHplbi4KKyAgICBEYWhlciBrYW5uIGplZGVyIFNwaWVsZXIgd2VpdGVyZSBDaGFyYWt0ZXJlIGFubGVnZW4uCisKKyAgICBEaWVzZSBtdWVzc2VuIGRhbm4gamVkb2NoIGFscyBzb2dlbmFubnRlciBad2VpdHNwaWVsZXIgZGVzIGVyc3RlbgorICAgIENoYXJha3RlcnMgbWFya2llcnQgd2VyZGVuLgorICAgIERpZXNlIE1hcmtpZXJ1bmcga2FubiBtYW4genVtIEJlaXNwaWVsIGJlaW0gU2NobWllZCBpbiBkZXIKKyAgICBad2VyZ2Vuc3RhZHQgb2RlciBiZWltIERvcmZzY2hyZWliZXIgaW0gRWxmZW5kb3JmIGVyaGFsdGVuLgorICAgIERpZXNlIE1hcmtpZXJ1bmcga2FubiBtYW4gYXVjaCB2b3IgYW5kZXJlbiBTcGllbGVybiB2ZXJiZXJnZW4uCisKKyAgICBNYW4ga2FubiBiZWxpZWJpZyB2aWVsZSBzZWluZXIgQ2hhcmFrdGVyZSBnbGVpY2h6ZWl0aWcgZWlubG9nZ2VuLAorICAgIGRvY2ggaXN0IGhpZXJiZWkgZGFyYXVmIHp1IGFjaHRlbiwgZGFzcyBudXIgendlaSBkaWVzZXIgQ2hhcmFrdGVyZQorICAgIGFrdGl2IGFtIFNwaWVsZ2VzY2hlaGVuLCBkYXMgaXN0IGFsbGVzIHdhcyB1ZWJlciByZWluZQorICAgIEtvbW11bmlrYXRpb24gaGluYXVzZ2VodCwgdGVpbG5laG1lbi4KKyAgICBEaWUgYW5kZXJlbiBDaGFyYWt0ZXJlIG11ZXNzZW4gc2ljaCBhdWYgZGllIEtvbW11bmlrYXRpb24KKyAgICBiZXNjaHJhZW5rZW4uCisKKyAgICBXZWl0ZXJlIEVpbnNjaHJhZW5rdW5nZW4gZXhpc3RpZXJlbiBmdWVyIE1hZ2llci4KKworICAgIEVpbiBNYWdpZXIgZGFyZiBuaWNodCBnbGVpY2h6ZWl0aWcgbWl0IHNlaW5lbiBTcGllbGVyY2hhcmFrdGVyZW4KKyAgICBlaW5nZWxvZ2d0IHNlaW4sIGRpZXNlIG1hbmlwdWxpZXJlbiBvZGVyIGZ1ZXIgc2VpbmUgWndlaXRzcGllbGVyCisgICAgZnJlbWRlbiBDb2RlIGFuYWx5c2llcmVuLgorCisgICAgRGVyIE1hZ2llci1ad2VpdHNwaWVsZXIgc29sbHRlIGRhcmF1ZiBhY2h0ZW4sIGFuZGVyZW4gU3BpZWxlcm4KKyAgICBuaWNodCBkdXJjaCBzZWluZW4gZXZlbnR1ZWxsZW4gV2lzc2Vuc3ZvcnRlaWwgYmVpIFF1ZXN0ZW4genUKKyAgICBoZWxmZW4uCisKKyAgICBFaW4gTWFnaWVyLVp3ZWl0c3BpZWxlciBzb2xsdGUgd2VpdGVyaGluIGRhcmF1ZiBhY2h0ZW4sIGFuZGVyZQorICAgIFNwaWVsZXIgbmljaHQgaW4gaWhyZW0gU3BpZWwgenUgYmVoaW5kZXJuLiBEaWVzIGtvZW5udGUgenVtCisgICAgQmVpc3BpZWwgZHVyY2ggQmxvY2tpZXJlbiB2b24gUXVlc3RzIG9kZXIgYmVzdGltbXRlciBsaW1pdGllcnRlcgorICAgIEdpbGRlbnJhZW5nZSBnZXNjaGVoZW4uCisgICAgRGVuIFByb2dyYW1taWVyZXJuIHZvbiBRdWVzdHMgb2RlciBHaWxkZW4gc3RlaHQgZXMgbmF0dWVybGljaCBmcmVpLAorICAgIGhpZXIgZWluZSBlaWdlbmUgVm9yc29yZ2UgenUgdHJlZmZlbi4KKworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqCisKKyAgICBXZXIgaW0gTW9yZ2VuR3JhdWVuIHNwaWVsdCwgZGVyIGlzdCBkZXMgb2VmdGVyZW4gYXVmIGRpZSBIaWxmZQorICAgIEFuZGVyZXIgYW5nZXdpZXNlbi4gRWluZSBGb3JtIGRlciBIaWxmZSBpc3QgZXMsIGVpbmVuIENoYXJha3RlcgorICAgIGF1c3p1bGVpaGVuIG9kZXIgYXVzZ2VsaWVoZW4genUgYmVrb21tZW4uCisgICAgVW0gc3ByYWNobGljaCBiZWdydWVuZGV0ZSBNaXNzdmVyc3RhZW5kbmlzc2UgaW0gd2VpdGVyZW4genUKKyAgICB2ZXJtZWlkZW4sIGhpZXIga3VyeiBmb2xnZW5kZSBOb21lbmtsYXR1cjoKKworICAgICAgRWluIFNwaWVsZXIsIGRlciBlaW5lbSBhbmRlcmVuIFNwaWVsZXIgZWluZW4gQ2hhcmFrdGVyIHp1cgorICAgICAgVmVyZnVlZ3VuZyBzdGVsbHQsIHdpcmQgYWxzIFZlcmxlaWhlciBiZXplaWNobmV0LgorCisgICAgICBFaW4gU3BpZWxlciwgZGVyIGVpbmVuIENoYXJha3RlciBlaW5lcyBhbmRlcmVuIFNwaWVsZXJzIG51dHp0LAorICAgICAgd2lyZCBhbHMgTnV0emVyIGJlemVpY2huZXQuCisKKyAgICBEYXMgQXVzbGVpaGVuIHZvbiBDaGFyYWt0ZXJlbiBpc3QgbWl0IGdld2lzc2VuIFJhbmRiZWRpbmd1bmdlbgorICAgIGVybGF1YnQuCisKKyAgICBFaW4gYXVzZ2VsaWVoZW5lciBDaGFyYWt0ZXIgd2lyZCBhbHMgYWt0aXZlciBad2VpdHNwaWVsZXIgZGVzCisgICAgTnV0emVycyBiZXRyYWNodGV0IHVuZCBpc3Qgc29taXQgZGVuIFJlZ2VsdW5nZW4gZnVlciBad2VpdHNwaWVsZXIKKyAgICB1bnRlcndvcmZlbi4KKworICAgIEJlc29uZGVycyB6dSBiZWFjaHRlbiBpc3QsIGRhc3MgZGVyIGF1c2dlbGllaGVuZSBDaGFyYWt0ZXIgbmljaHQKKyAgICBtaXQgZGVtIE51dHplciwgb2RlciBlaW5lbSBad2VpdHNwaWVsZXIgZGVzIE51dHplcnMsIGluIGVpbiBUZWFtCisgICAgZGFyZi4KKworICAgIFNvd29obCBkZXIgTnV0emVyIGRlcyBhdXNnZWxpZWhlbmVuIFNwaWVsZXJzIGFscyBhdWNoIFZlcmxlaWhlciwKKyAgICBrb2VubmVuIGZ1ZXIgZGllIEhhbmRsdW5nZW4gZGVzIGF1c2dlbGllaGVuIENoYXJha3RlcnMKKyAgICB2ZXJhbnR3b3J0bGljaCBnZW1hY2h0IHdlcmRlbi4KKworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqCisKKyAgICBXZXIgbWl0IGVpbmVtIENoYXJha3RlciBBdWZnYWJlbiBnZWxvZXN0IGhhdCBvZGVyIHp1IGJlc3RpbW10ZW4KKyAgICBWZXJtdXR1bmdlbiB1ZWJlciBGb3JzY2hlcnB1bmt0ZSBnZWxhbmd0IGlzdCwgZGVyIG5vdGllcnQgZGllcyBvZnQsCisgICAgdW0gYmVpIHNwYWV0ZXJlbiBDaGFyYWt0ZXJlbiBhdWYgZGllc2UgSW5mb3JtYXRpb25lbiB6dWdyZWlmZW4genUKKyAgICBrb2VubmVuLgorCisgICAgU29sY2hlIEZvcnNjaGVycHVua3RsaXN0ZW4gb2RlciBLb21wbGV0dGxvZXN1bmdlbiBzaW5kIHp1bQorICAgIEVpZ2VuZ2VicmF1Y2gsIGRhcyBoZWlzc3QgZnVlciBkaWUgZWlnZW5lbiBad2VpdHNwaWVsZXIgZXJsYXVidC4KKworICAgIERpZSBXZWl0ZXJnYWJlIGRpZXNlciBJbmZvcm1hdGlvbmVuIG9kZXIgZGFzIE51dHplbiB2b24gbmljaHQKKyAgICBzZWxic3QgZXJzdGVsbHRlbiBLb21wbGV0dGxvZXN1bmdlbiBvZGVyIEZvcnNjaGVycHVua3RsaXN0ZW4gc2luZAorICAgIGFuZGVyZW4gU3BpZWxlcm4gZ2VnZW51ZWJlciBpbSBob2VjaHN0ZW4gTWFzc2UgdW5mYWlyIHVuZCBkYWhlcgorICAgIHVudGVyc2FndC4KKworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqCisKKyAgICBVbSBkYXMgU3BpZWxlbiB2b24gTXVkcyB6dSB2ZXJlaW5mYWNoZW4gdW5kIGtvbWZvcnRhYmxlciB6dQorICAgIGdlc3RhbHRlbiwgZ2lidCBlcyBlaW5lIFJlaWhlIHNvZ2VuYW5udGVyIE11ZC1DbGllbnRzLgorCisgICAgRGllc2UgQ2xpZW50ZW4gYmlldGVuIG9mdG1hbHMgZGllIE1vZWdsaWNoa2VpdCwgbWVocmVyZSBLb21tYW5kb3MKKyAgICBpbSBNdWQgYXVmIGVpbmUgZWluemlnZSBBa3Rpb24gaGluIGF1c3p1ZnVlaHJlbiBvZGVyIGF1ZiBBdXNnYWJlbgorICAgIG1pdCBzb2xjaGVuIEtvbW1hbmRva2V0dGVuIHp1IHJlYWdpZXJlbi4KKworICAgIE1hbiBzcHJpY2h0IGhpZXIgdm9uIFNjcmlwdGVuIG9kZXIgVHJpZ2dlcm4uCisKKyAgICBadXNhbW1lbiBtaXQgZWluZXIgaW50ZXJuZW4gUHJvZ3JhbW1pZXJzcHJhY2hlIGRlciBDbGllbnRlbiBsYXNzZW4KKyAgICBzaWNoIHZpZWxmYWNoIGJlc3RpbW10ZSBBa3Rpb25lbiBpbSBNdWQgYXV0b21hdGlzaWVyZW4uCisKKyAgICBEaWUgVmVyd2VuZHVuZyBzb2xjaGVyIFNjcmlwdGUgaXN0IG1pdCBlaW5pZ2VuIEF1ZmxhZ2VuIGplZGVtCisgICAgU3BpZWxlciBmcmVpZ2VzdGVsbHQuCisKKyAgICBTb2dlbmFubnRlIFVudGVyc3VjaGVzY3JpcHRlLCBkaWUgc2VsYnN0YWVuZGlnIGVpbmUgb2RlciBtZWhyZXJlCisgICAgRGV0YWlsdGllZmVuIHZvbiBSYWV1bWVuLCBNb25zdGVybiBvZGVyIGFuZGVyZW4gR2VnZW5zdGFlbmRlbgorICAgIGFiZnJhZ2VuLCBzaW5kIG5pY2h0IGVybGF1YnQuCisKKyAgICBKZWRlciBDaGFyYWt0ZXIgc29sbHRlIGluZGl2aWR1ZWxsIGdlc3RldWVydCB3ZXJkZW4sIGRhaGVyIHNpbmQKKyAgICBTY3JpcHRlLCBkaWUgbWVocmVyZSBDaGFyYWt0ZXJlIGF1ZiBlaW5tYWwgc3RldWVybiB1bnRlcnNhZ3QuCisKKyAgICBTY3JpcHRlLCB3ZWxjaGUgZWluZW4gQ2hhcmFrdGVyIGltIFNpbm5lIGVpbmVyIEtvbXBsZXR0bG9lc3VuZworICAgIGR1cmNoIGVpbmUgUXVlc3QgZnVlaHJlbiBvZGVyIGVpbmUgRm9yc2NoZXJwdW5rdGxpc3RlIGFiYXJiZWl0ZW4KKyAgICBzaW5kIG5pY2h0IGVybGF1YnQuCisKKyAgICBHcnVuZHNhZXR6bGljaCBkdWVyZmVuIGFuZGVyZSBTcGllbGVyIGR1cmNoIFNjcmlwdGUgbmljaHQgaW4gaWhyZW0KKyAgICBTcGllbCBiZWhpbmRlcnQgb2RlciBiZWxhZXN0aWd0IHdlcmRlbi4KKworICAgIEFsbGUgYW5kZXJlbiBTY3JpcHRlIHNpbmQgZXJsYXVidCwgc293ZWl0IGRlciBTcGllbGVyIGlubmVyaGFsYgorICAgIGVpbmVyIE1pbnV0ZSBpbSBSYWhtZW4gc2VpbmVyIE1vZWdsaWNoa2VpdGVuIGFuc3ByZWNoYmFyIGJsZWlidC4KKworICAgIEFscyB1bmVybGF1YnRlcyBTa3JpcHQgemFlaGx0IGF1Y2ggZGVyIEthbXBmIG1pdCBlaW5lbSBNb25zdGVyLAorICAgIHdlbm4gZGVyIFNwaWVsZXIgZGFiZWkgbGFlbmdlcmUgWmVpdCBrZWluZSBUYXN0YXR1cmVpbmdhYmVuCisgICAgdm9ybmltbXQgdW5kIGRhYmVpIG5pY2h0IGFuc3ByZWNoYmFyIGlzdCh0b3RpZGxlbikuIERpZXMgZ2lsdCB2b3IKKyAgICBhbGxlbSB3ZW5uIGRlciBUb2QgZGVzIE1vbnN0ZXJzIG5pY2h0IGFic2VoYmFyIGlzdC4KKworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqCisKKyAgICBEYXMgTW9yZ2VuR3JhdWVuIGJhdXQgYXVmIGRpZSBBcmJlaXQgdmllbGVyIGZyZWl3aWxsaWdlcgorICAgIFByb2dyYW1taWVyZXIgYXVmLiBXaWUgYmVpIGplZGVtIFByb2dyYW1tIGthbm4gZXMgZGFiZWkgenUgRmVobGVybiwKKyAgICBhdWNoIEJ1Z3MgZ2VuYW5udCwga29tbWVuLgorCisgICAgSmVkZXIgU3BpZWxlciBzb2xsdGUgZWluIEludGVyZXNzZSBkYXJhbiBoYWJlbiwgZGFzcyBkaWVzZSBGZWhsZXIKKyAgICBiZXNlaXRpZ3Qgd2VyZGVuLgorCisgICAgRGllcyBrYW5uIG1hbiBkdXJjaCBlaW5lIE1lbGR1bmcgZGVzIEZlaGxlcnMgYW4gZGVuIGpld2VpbGlnZW4KKyAgICBNYWdpZXIgb2RlciBmYWxscyBkaWVzZXIgbmljaHQgZXJyZWljaGJhciBpc3QsIGR1cmNoIGVpbmUgTWVsZHVuZworICAgIGFuIGRlbiBlbnRzcHJlY2hlbmRlbiBSZWdpb25zbWFnaWVyIGVycmVpY2hlbi4gQXVjaCBkZXIgQmVmZWhsCisgICAgImZlaGxlciIga2FubiBoaWVyIG51ZXR6bGljaGUgRGllbnN0ZSBsZWlzdGVuLgorCisgICAgV2VyIGRpZXNlIE1hZ2llciBzaW5kLCBrYW5uIGplZGVtIFNwaWVsZXIgYmVpIEJlZGFyZiBkdXJjaCBlaW5lbgorICAgIGFud2VzZW5kZW4gTWFnaWVyIG9kZXIgb2Z0IGF1Y2ggYW5kZXJlbiBTcGllbGVyIG1pdGdldGVpbHQgd2VyZGVuLgorCisgICAgRGllc2VzIFZvcmdlaGVuIHNvbGx0ZSBhdWNoIGZ1ZXIgRmVobGVyIGdlbHRlbiwgZGllIGRlbSBTcGllbGVyLAorICAgIGRlciBkaWVzZSBGZWhsZXIgZW50ZGVja3QsIHp1bSBWb3J0ZWlsIGdlcmVpY2hlbi4KKworICAgIFNvbGx0ZSBzaWNoIGVpbiBTcGllbGVyIG5pY2h0IHNpY2hlciBzZWluLCBvYiBlcyBzaWNoIGJlaSBlaW5lbQorICAgIGJlc3RpbW10ZW4gVmVyaGFsdGVuIHZvbiBHZWdlbnN0YWVuZGVuLCBNb25zdGVybiBvZGVyIFJhZXVtZW4gdW0KKyAgICBlaW5lbiBGZWhsZXIgaGFuZGVsdCBvZGVyIHVtIEFic2ljaHQgZGVzIFByb2dyYW1taWVyZXMsIHNvIGthbm4gZXIKKyAgICBkZW4genVzdGFlbmRpZ2VuIE1hZ2llciBwcm9ibGVtbG9zIGRhbmFjaCBmcmFnZW4gdW5kIHNvbWl0IGJlaSBkZXIKKyAgICBCZXNlaXRpZ3VuZyB2b24gRmVobGVybiBha3RpdiBoZWxmZW4uCisKKyAgICBEYXMgVmVyc2Nod2VpZ2VuIHVuZCBBdXNudXR6ZW4gdm9uIEZlaGxlcm4gaXN0IGFuZGVyZW4gU3BpZWxlcm4KKyAgICBnZWdlbnVlYmVyIHVuZmFpciB1bmQgaXN0IGRhaGVyIHp1IHVudGVybGFzc2VuLgorCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoKKworICAgIEdydW5kc2FldHpsaWNoIHNvbGx0ZSBkZXIgU3BpZWxzcGFzcyBmdWVyIG1vZWdsaWNoc3QgYWxsZSBTcGllbGVyCisgICAgZXJoYWx0ZW4gYmxlaWJlbi4gRGF6dSBnZWhvZXJ0IGF1Y2ggZWluIGdld2lzc2VzIE1hc3MgYW4gRmFpcm5lc3MKKyAgICBkZXIgU3BpZWxlciB1bnRlcmVpbmFuZGVyLgorCisgICAgRXMgaXN0IG5pY2h0IGRlciBTaW5uIGRlciBSZWdlbG4sIGRhcyBTcGllbGVuIGltIE1vcmdlbkdyYXVlbiBkdXJjaAorICAgIFVlYmVycmVnbGVtZW50IHp1IGJlaGluZGVybiBvZGVyIHJlaXpsb3MgenUgZ2VzdGFsdGVuLgorCisgICAgRGFoZXIgaXN0IGVzIGplZG9jaCBhdWNoIG1vZWdsaWNoLCBkYXNzIGltIFNwaWVsIFNpdHVhdGlvbmVuCisgICAgYXVmdHJldGVuLCBkaWUgZGVuIFNwaWVsc3Bhc3MgYW5kZXJlciBTcGllbGVyIHVuZCBkaWUgYWxsZ2VtZWluZQorICAgIEZhaXJuZXNzIGJlZWludHJhZWNodGlnZW4sIG9obmUgZGFzcyBkaWVzZSBTaXR1YXRpb24gZHVyY2ggZGllc2VuCisgICAgTGVpdGZhZGVuIGFiZ2VkZWNrdCBpc3QuCisKKyAgICBIaWVyIGlzdCBqZWRlciBTcGllbGVyIHVuZCBhdWNoIE1hZ2llciBnZWZyYWd0LCBzZWluZW4gZ2VzdW5kZW4KKyAgICBNZW5zY2hlbnZlcnN0YW5kIHp1IGJlZnJhZ2VuIHVuZCB6dSB1ZWJlcmxlZ2VuLCB3aWUgZXIgZWluZSBzb2xjaGUKKyAgICBTaXR1YXRpb24gdmVybWVpZGVuIG9kZXIgZW50c3Bhbm5lbiBrYW5uLCBhdWNoIHdlbm4gbWFuIGRhbWl0IGF1Y2gKKyAgICBlaW5tYWwgYXVmIGVpbmVuIFZvcnRlaWwgdmVyemljaHRlbiBtdXNzLgorCisgICAgRXMgaXN0IGFsc28gZHVyY2hhdXMgbmljaHQgYWxsZXMgZXJsYXVidCwgd2FzIG5pY2h0IGV4cGxpeml0CisgICAgdmVyYm90ZW4gaXN0LgorCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoKKworICAgIEZ1ZXIgTWFnaWVyIGdlbHRlbiBuYXR1ZXJsaWNoIHp1c2FldHpsaWNoIGRpZSBSZWdlbG4gZGVzCisgICAgTWFnaWVydmVydHJhZ2VzLgorCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoKKworICAgIFNvbGx0ZSBlaW4gU3BpZWxlciBvZGVyIE1hZ2llciBnZWdlbiBSZWdlbG4gdmVyc3Rvc3NlbiBoYWJlbiwgc28KKyAgICBrYW5uIGRpZXMgdm9tIFNoZXJpZmYsIHNlaW5lbiBEZXB1dGllcyBvZGVyIGRlbiBFcnptYWdpZXJuIGdlYWhuZGV0CisgICAgd2VyZGVuLgorICAgIFN0cmFmZW4ga29lbm5lbiBzaWNoIHZvbiBlaW5lciBlaW5mYWNoZW4gVmVyd2FybnVuZyBiaXMgaGluIHp1cgorICAgIExvZXNjaHVuZyB2b24gQ2hhcmFrdGVyZW4gZXJzdHJlY2tlbi4KKworICAgIERpZSBTdHJhZmVuIHdlcmRlbiBpbiBlaW5lbSBnZXN1bmRlbiBWZXJoYWVsdG5pcyB6dW0gRmVobHZlcmhhbHRlbgorICAgIGRlcyBTcGllbGVycyBzdGVoZW4uCisKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKgorCisgICAgV2VyIGRpZSBGdW5rdGlvbiBkZXMgU2hlcmlmZnMgb2RlciBlaW5lcyBEZXB1dGllcyB3YWhybmltbXQsIGthbm4KKyAgICBtYW4gbWl0IGRlbSBLb21tYW5kbyAnaGlsZmUgc2hlcmlmZicgZXJmcmFnZW4uCisKKworIFNJRUhFIEFVQ0g6CisgICAgendlaXRpZW1hcmtpZXJ1bmcsIGZlaGxlciwgc2hlcmlmZgorCisgTEVUWlRFIEFlTkRFUlVORzoKKyAgICBXZWQsIDMwLjA4LjIwMDAsIDExOjM1OjAwIHZvbiBNdWFkaWIKKyAgICAKZGlmZiAtLWdpdCBhL2RvYy9oZWxwL2xvZXNjaHNrcmlwdCBiL2RvYy9oZWxwL2xvZXNjaHNrcmlwdApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5jNTRiNGJlCi0tLSAvZGV2L251bGwKKysrIGIvZG9jL2hlbHAvbG9lc2Noc2tyaXB0CkBAIC0wLDAgKzEsMTggQEAKK0tyaXRlcmllcmVuIGZ1ZXIgZGFzIExvZXNjaHNrcmlwdA0KKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQ0KKw0KKyAgICBEYXMgU2NyaXB0IHp1bSBMb2VzY2hlbiBhbHRlciBDaGFyYWt0ZXJlIGxhZXVmdCBqZXdlaWxzIGFtIDIwLiBlaW5lcw0KKyAgICBNb25hdHMuDQorICAgIENoYXJha3RlcmUgd2VyZGVuIGdlbG9lc2NodCwgd2VubiBzaWUgQUxMRSBmb2xnZW5kZW4gQmVkaW5ndW5nZW4NCisgICAgZXJmdWVsbGVuOg0KKw0KKyAgICAqIDkwIFRhZ2UgbmljaHQgZWluZ2Vsb2dndA0KKyAgICAqIHdlbmlnZXIgYWxzIDMwIEFiZW50ZXVlcnB1bmt0ZQ0KKyAgICAqIHdlbmlnZXIgYWxzIDMwMDAwIEVyZmFocnVuZ3NwdW5rdGUNCisgICAgKiBTdHVmZSBrbGVpbmVyIDEwDQorDQorIFNJRUhFIEFVQ0g6DQorICAgIHNlbGJzdGxvZXNjaHVuZywgc3BpZWxwYXVzZQ0KKw0KKyBMRVRaVEUgQWVOREVSVU5HOg0KKyAgICAwOS4wMy4yMDEzIFplc3N0cmENCmRpZmYgLS1naXQgYS9kb2MvaGVscC9tYWdpZXIgYi9kb2MvaGVscC9tYWdpZXIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZTQzOWRjOAotLS0gL2Rldi9udWxsCisrKyBiL2RvYy9oZWxwL21hZ2llcgpAQCAtMCwwICsxLDEzMCBAQAorCitNQUdJRVIKKz09PT09PQorCisgICAgSW4gTW9yZ2VuR3JhdWVuIGVyd2VpdGVybiBNYWdpZXIgZGFzIE1VRC4gQXVzc2VyZGVtIGhhYmVuIHNpZSB2aWVsZQorICAgIE1vZWdsaWNoa2VpdGVuLCBkaWUgU3BpZWxlciBuaWNodCBoYWJlbi4KKworICAgICBXZXIga2FubiBNYWdpZXIgd2VyZGVuPworICAgICAgICBNYWdpZXIga2FubiBqZWRlciB3ZXJkZW4sIGRlciBkaWUgQW5mb3JkZXJ1bmdlbiB6dXIgU2VoZXItV2VyZHVuZworICAgICAgICBlcmZ1ZWxsdDsgc2llaGUgZGF6dSBkaWUgSGlsZmVzZWl0ZSAnc2VoZXInLgorICAgICAgICBTb2xsIGVpbiBDaGFyYWt0ZXIgTWFnaWVyIHdlcmRlbiwgZGVyIHNlbGJlciBrZWluIFNlaGVyIGlzdCwgYWJlciBkZXIKKyAgICAgICAgRXJzdHNwaWVsZXIgZGllc2VzIFNwaWVsZXJzIGlzdCBTZWhlciwgaXN0IGRpZXMgbWl0IEdlbmVobWlndW5nIGRlcgorICAgICAgICBFTXMgbW9lZ2xpY2guIEhpZXJ6dSBtdXNzIGRlbiBFTXMgKGluIEFic3ByYWNoZSBtaXQgZGVtIHp1a3VlbmZ0aWdlbgorICAgICAgICBTcG9uc29yKSBlaW4gR1MtS29uemVwdCB2b3JnZXN0ZWxsdCB3ZXJkZW4gKGluIGRpZXNlbSBGYWxsIGJpdHRlIAorICAgICAgICBhdWNoIEFic2Nobml0dCAnTWFnaWVyd2VyZHVuZyBtaXQgZWluZW0gbmljaHQtU2VoZXInIHVudGVuIGJlYWNodGVuKS4KKworICAgICBNdXNzIGljaCBNYWdpZXIgd2VyZGVuPworICAgICAgICBXZXIga2VpbmUgTHVzdCBoYXQsIE1hZ2llciB6dSB3ZXJkZW4gdW5kIGxpZWJlciBub2NoIHNwaWVsZW4gbW9lY2h0ZSwKKyAgICAgICAga2FubiBtaXQgZGllc2VuIFZvcmF1c3NldHp1bmdlbiBTZWhlciB3ZXJkZW4uIEFscyBTZWhlciBoYXQgbWFuIGF1Y2gKKyAgICAgICAgZWluIHBhYXIgenVzYWV0emxpY2hlIEZhZWhpZ2tlaXRlbi4KKworICAgICBXaWUgd2VyZGUgaWNoIE1hZ2llcj8KKyAgICAgICAgV2VubiBEdSBkaWUgVm9yYXVzc2V0enVuZ2VuIGVyZnVlbGxzdCwgdW0gTWFnaWVyIHp1IHdlcmRlbiwgbXVzc3QgRHUKKyAgICAgICAgZWluZW4gTWFnaWVyIGZpbmRlbiwgZGVyIERpY2ggdW50ZXJzdHVldHp0LiBEaWVzZXIgTWFnaWVyIHNvbGwgZGVuCisgICAgICAgIG5ldWVuIE1hZ2llciBpbiBzZWluZSBNb2VnbGljaGtlaXRlbiBlaW53ZWlzZW4gdW5kIGZ1ZXIgRnJhZ2VuIG9mZmVuCisgICAgICAgIHNlaW4uIEQuaC4gZXMgc29sbHRlIGFtIGJlc3RlbiBlaW4gTWFnaWVyIHNlaW4sIGRlbiBEdSBzY2hvbiBrZW5uc3QKKyAgICAgICAgdW5kIHZvbiBkZW0gRHUgSGlsZmUgZXJ3YXJ0ZW4ga2FubnN0LgorCisgICAgICAgIFdlbm4gRHUgc28gZWluZW4gTWFnaWVyIGdlZnVuZGVuIGhhc3QsIGZyYWdzdCBEdSBpaG4sIG9iIGVyIERpY2ggenUKKyAgICAgICAgZWluZW0gbmV1ZW4gTWFnaWVyIGF1c2JpbGRldC4gVm9uIGRlbSBNYWdpZXIgYmVrb21tc3QgRHUgZGFubiBlaW5lbgorICAgICAgICBWZXJ0cmFnLCBkZW4gRHUgc29yZ2ZhZWx0aWcgbGVzZW4gc29sbHRlc3QuIFdlbm4gRHUgZGFubiBpbW1lciBub2NoCisgICAgICAgIE1hZ2llciB3ZXJkZW4gd2lsbHN0LCB1bnRlcnNjaHJlaWJzdCBEdSBkZW4gVmVydHJhZy4gRGFuYWNoIGdlaHN0IER1CisgICAgICAgIG1pdCBkZW0gVmVydHJhZyB6dSBNZXJsaW4gKGVyc3RtYWwgc3VjaGVuKSB1bmQgZGVyIE1hZ2llciwgdm9uIGRlbQorICAgICAgICBEdSBkZW4gVmVydHJhZyBoYXN0LCBiaXR0ZXQgTWVybGluLCBEaWNoIHp1bSBNYWdpZXIgenUgbWFjaGVuLgorCisgICAgICAgIERhbmFjaCBzb2xsdGVzdCBEdSB2b24gZGVtIE1hZ2llciBlaW5lIEVpbmZ1ZWhydW5nIGVyaGFsdGVuLAorICAgICAgICBkZXN3ZWl0ZXJlbiB3aXJkIERpciBNZXJsaW4gZWluIE1haWwgbWl0IG51ZXR6bGljaGVuIEluZm9ybWF0aW9uZW4KKyAgICAgICAgc2NoaWNrZW4uCisKKyAgICAgVW5kIHdhcyBkYW5uPworICAgICAgICBEdSBiZWdpbm5zdCBEZWluIE1hZ2llcmRhc2VpbiBhbHMgTGVocmxpbmcgKEx2IDE1KS4gRHUgaGFzdCBub2NoIGtlaW4KKyAgICAgICAgZWlnZW5lcyBWZXJ6ZWljaG5pcywgaW4gZGVtIER1IHByb2dyYW1taWVyZW4ga2FubnN0LCB1bmQgRHUga2FubnN0CisgICAgICAgIGF1Y2ggbmljaHQgaW4gYWxsZW4gVmVyemVpY2huaXNzZW4gbGVzZW4uIER1IGthbm5zdCBEaWNoIGFsbGVyZGluZ3MKKyAgICAgICAgc2Nob24gZWlubWFsIG1pdCBkZW4gRWluc2NocmFlbmt1bmdlbiBkZXMgTWFnaWVybGViZW5zIChzaWVoZSBWZXJ0cmFnKQorICAgICAgICBzb3dpZSBtaXQgZGVyIE11ZExpYiB2ZXJ0cmF1dCBtYWNoZW4uIERhenUgaGFzdCBEdSBMZXNlcmVjaHRlIGluIGRlbgorICAgICAgICBWZXJ6ZWljaG5pc3NlbiBgL2RvYycsIGAvc3RkJywgYC9zZWN1cmUnIHVuZCBgL3N5cycuCisKKyAgICAgICAgV2VubiBEdSB6dSBkaWVzZW0gWmVpdHB1bmt0IGVya2VubnN0LCBkYXNzIGRlciBNYWdpZXJzdGF0dXMgd29obCBkb2NoCisgICAgICAgIG5pY2h0cyBmdWVyIERpY2ggaXN0LCBrYW5uc3QgRHUgRGljaCBpbW1lciBub2NoIGFuIGVpbmVuIEVyem1hZ2llcgorICAgICAgICB3ZW5kZW4sIGRhbWl0IGVyIERpY2ggd2llZGVyIHp1bSBTcGllbGVyIG1hY2h0LiBIaWVybWl0IHNvbGx0ZXN0IER1CisgICAgICAgIGplZG9jaCBuaWNodCB6dWxhbmdlbiB3YXJ0ZW4sIGRhIGhpZXJ6dSBlaW5lIGFlbHRlcmUgS29waWUgRGVpbmVzCisgICAgICAgIGVoZW1hbGlnZW4gU3BpZWxlcnMgbm9ldGlnIGlzdC4KKworICAgICAgICBXZW5uIER1IGFsbGVyZGluZ3MgbWVya3N0LCBkYXNzIER1IGdlcm5lIGV0d2FzIHByb2dyYW1taWVyZW4gbW9lY2gtCisgICAgICAgIHRlc3QsIGRhbm4gbWVsZGUgRGljaCAobWl0IG1haWwgZXJ6bWFnaWVyKSB1bnRlciBBbmdhYmUgZWluZXMga3VyemVuCisgICAgICAgIEFicmlzc2VzLCB3aWUgRHUgRGVpbmVuIHdlaXRlcmVuIFdlcmRlZ2FuZyBhbHMgTWFnaWVyIHZvcnN0ZWxsc3QgYmVpCisgICAgICAgIGRlbiBFcnptYWdpZXJuLCBkYW1pdCBzaWUgRGljaCBhdWYgZGllIG5hZWNoc3RlIE1hZ2llcnN0dWZlIChMdiAyMCkKKyAgICAgICAgYmVmb2VyZGVybi4gRGllIEJlYXJiZWl0dWduc3plaXQgZGllc2VyIE1haWwgbGllZ3QgYmVpIGVpbiBiaXMgendlaQorICAgICAgICBXb2NoZW4uIEF1ZiBkaWVzZXIgU3R1ZmUgYmVrb21tc3QgRHUgZWluIGVpZ2VuZXMgVmVyemVpY2huaXMgc2FtdAorICAgICAgICBXb3Jrcm9vbSwgdW5kIER1IGthbm5zdCBEZWluZSBlcnN0ZW4gZWlnZW5lbiBQcm9ncmFtbWllcnZlcnN1Y2hlCisgICAgICAgIHN0YXJ0ZW4uCisKKyAgICAgICAgV2VubiBEdSBhdWNoIG5hY2ggRGVpbmVuIGVyc3RlbiBtZWhyIG9kZXIgd2VuaWdlciBlcmZvbGdyZWljaGVuCisgICAgICAgIFByb2dyYW1taWVydmVyc3VjaGVuIG5vY2ggaW1tZXIgbmljaHQgZGllIEZsaW50ZSBpbnMgS29ybiBnZXdvcmZlbgorICAgICAgICBoYXN0LCBkYW5uIHNvbGx0ZXN0IER1IERpciBlaW5tYWwgR2VkYW5rZW4gZGFydWViZXIgbWFjaGVuLCB3YXMgRHUKKyAgICAgICAgaW0gTW9yZ2VuR3JhdWVuIGdlbmF1IHByb2dyYW1taWVyZW4gbW9lY2h0ZXN0LiBEZXIgenVzdGFlbmRpZ2UKKyAgICAgICAgUmVnaW9uc21hZ2llciB3aXJkIERpY2ggYmVpIGRlciBBdXNhcmJlaXR1bmcgRGVpbmVzIEtvbnplcHRlcyBnZXJuZQorICAgICAgICBiZXJhdGVuLiBCZXZvciBEdSBhbmZhZW5nc3QgenUgcHJvZ3JhbW1pZXJlbiwgc29sbHRlc3QgRHUgbWl0CisgICAgICAgIERlaW5lbSBnZW5hdWVuIEtvbnplcHQgbm9jaCBlaW5tYWwgYmVpIGVpbmVtIHp1c3RhZW5kaWdlbgorICAgICAgICBFcnptYWdpZXIgbmFjaGZyYWdlbiwgb2IgZXMgYWxzIEdlc2VsbGVuc3R1ZWNrIGF1c3JlaWNodC4KKworICAgICAgICBTb2JhbGQgRGVpbiBSZWdpb25zbWFnaWVyIHVuZCBEdSBkZXIgTWVpbnVuZyBzZWlkLCBkYXNzIERlaW5lCisgICAgICAgIFNhY2hlbiBmZXJ0aWcgc2luZCwga29lbm50IElociBFdWNoIGRhbWl0IGFuIGVpbmVuIGRlciBmdWVyCisgICAgICAgIGRpZSBBYm5haG1lIHZvbiBHZXNlbGxlbnN0dWVja2VuIHp1c3RhZW5kaWdlbiBFcnptYWdpZXIgKHNpZWhlCisgICAgICAgIEhpbGZlIEVyem1hZ2llcikgd2VuZGVuLiBEaWVzZXIgd2lyZCBzaWNoIERlaW5lIEFyYmVpdCBhbnNlaGVuIHVuZAorICAgICAgICBkYW5uIGVudHNjaGVpZGVuLCBvYiBzaWUgZnVlciBlaW4gR2VzZWxsZW5zdHVlY2sgaW0gTW9yZ2VuR3JhdWVuCisgICAgICAgIGF1c3JlaWNoZW5kIGlzdC4gQmVhY2h0ZSBiaXR0ZSwgZGFzcyB2b3IgZWluZXIgc29sY2hlbiBHZW5laG1pZ3VuZworICAgICAgICBkdXJjaCBkaWUgenVzdGFlbmRpZ2VuIEVyem1hZ2llciB2b24gRGlyIG5vY2gga2VpbmUgT2JqZWt0ZQorICAgICAgICB1bnRlciBlaWdlbmVtIE5hbWVuIGFuZ2VzY2hsb3NzZW4gd2VyZGVuIGtvZW5uZW4vZHVlcmZlbi4KKworICAgICAgICBTb2Zlcm4gRHUgZGllIFJlZ2VsbiBmdWVyIEdlc2VsbGVuc3R1ZWNrZSBlcmZ1ZWxsdCBoYXN0LCB3aXJkIERpY2gKKyAgICAgICAgZGVyIHp1c3RhZW5kaWdlIEVyem1hZ2llciB6dSBlaW5lbSBWb2xsbWFnaWVyIG1hY2hlbi4gRXJzdCBkYW5uCisgICAgICAgIGthbm5zdCBEdSBhdWNoIGluIGFuZGVyZW4gVGVpbGVuIGRlciBNdWRMaWIgZWluZW4gQmxpY2sgaW4gZGVuCisgICAgICAgIFF1ZWxsY29kZSBhbmRlcmVyIE1hZ2llciB3ZXJmZW4uIEF1c3NlcmRlbSBiZWtvbW1zdCBEdSBlaW4gZWlnZW5lcworICAgICAgICBWZXJ6ZWljaG5pcyBpbiBkZXIgUmVnaW9uLCBpbiBkZXIgRHUgbWl0YXJiZWl0ZW4gbW9lY2h0ZXN0LiBEb3J0CisgICAgICAgIGthbm5zdCBEdSBEZWluZSBTYWNoZW4gYXVzZ2llYmlnIHRlc3RlbiB1bmQgc3BhZXRlciBkYW5uIGF1Y2ggdm9uCisgICAgICAgIERlaW5lbSBSZWdpb25zbWFnaWVyIGFuc2NobGllc3NlbiBsYXNzZW4uCisKKworTWFnaWVyd2VyZHVuZyBtaXQgZWluZW0gbmljaHQtU2VoZXIKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKKyAgICAgICogRGllIEJlcnVmdW5nIGVpbmVzIG5pY2h0LVNlaGVyLUNoYXJha3RlcnMgenVtIE1hZ2llciBpc3QgbW9lZ2xpY2gsCisgICAgICAgIHNvZmVybiBkZXIgYmV0cmVmZmVuZGUgUkwtU3BpZWxlciBiZXJlaXRzIGVpbmVuIFNlaGVyIGhhdC4KKyAgICAgICogRGllIEJlcnVmdW5nIGVpbmVzIHNvbGNoZW4gQ2hhcmFrdGVycyB6dW0gTWFnaWVyIGlzdCBudXIgaW4gQWJzcHJhY2hlCisgICAgICAgIG1pdCBkZW4gRU1zIG1vZWdsaWNoLiBCZWkga29ua3JldGVuIEFuZnJhZ2VuIGFuIEVNcyBtdXNzIGVpbmUgZXJzdGUgCisgICAgICAgIElkZWUgYW5nZWdlYmVuIHdlcmRlbiwgd2FzIG1hbiBzaWNoIGFscyBHUyB2b3JzdGVsbHQuCisgICAgICAqIEVpbiB2ZXJudWVuZnRpZ2VzLCBkLmguIHp1c3RpbW11bmdzZmFlaGlnZXMgS29uemVwdCBtdXNzIF92b3JfCisgICAgICAgIE1hZ2llcndlcmR1bmcgZGVuIEVNcyB2b3Jnc3RlbGx0IHdlcmRlbi4uIEFuIGRpZXNlcyB3ZXJkZW4gZGllIHNvbnN0CisgICAgICAgIHVlYmxpY2hlbiBBbmZvcmRlcnVuZ2VuIGJ6Z2wuIFVtZmFuZyB1bmQgS29tcGxleGl0YWV0IGdlc3RlbGx0LiBEYXMKKyAgICAgICAgS29uemVwdCB3aXJkIHZvbiBFTXMgZ2VuZWhtaWd0LCBiZXZvciBkaWUgQmVydWZ1bmcgenVtIE1hZ2llcgorICAgICAgICBlcmZvbGd0LgorICAgICAgKiBOYWNoIFNwb25zb3JuIGRlcyBDaGFyYWt0ZXJzIGVudGZhZWxsdCBkaWUgc29uc3QgdWVibGljaGUgV2FydGV6ZWl0CisgICAgICAgIHZvbiAxLTIgV29jaGVuICh3ZWlsIGRpZSBFTXMgamEgdm9yaGVyIHp1Z2VzdGltbXQgaGFiZW4pIHVuZCBkZXIKKyAgICAgICAgQ2hhciBrYW5uIGRpcmVrdCBhdWYgTGV2ZWwgMjAgYmVmb2VyZGVydCB3ZXJkZW4uCisgICAgICAqIERhcyBHUyBtdXNzIGlubmVyaGFsYiB2b24gNiBNb25hdGVuIG5hY2ggTWFnaWVyd2VyZHVuZyBmZXJ0aWdnZXN0ZWxsdCAKKyAgICAgICAgd2VyZGVuLgorICAgICAgICBEaWUgRmVydGlnc3RlbGx1bmcgaXN0IGRlZmluaWVydCBhbHMgRWlucmVpY2h1bmcgYW4gZGVuIFJNIHp1ciAKKyAgICAgICAgQWJuYWhtZS4KKyAgICAgICAgRGllcyBkYXJmIG5hdHVlcmxpY2gga2VpbmUgcHJvLWZvcm1hIEVpbnJlaWNodW5nIHZvbiBoYWxiZmVydGlnZW0gCisgICAgICAgIFpldWdzIHNlaW4uCisgICAgICAqIEVpbmUgVmVybGFlbmdlcnVuZyBkaWVzZXIgRnJpc3Qga2FubiBkdXJjaCBlaW5lbiB2b24gZGVuIEVNcyBiZS0KKyAgICAgICAgbmFubnRlbiBFTSAoaWRSIEVNIEdlc2VsbGVuc3R1ZWNrZSkgZ2VuZWhtaWd0IHdlcmRlbiwgc29mZXJuIGlobQorICAgICAgICBkaWVzIHNpbm52b2xsIGVyc2NoZWludCAoImJlZ3J1ZW5kZXRlIEZhZWxsZSIsIGZhc3QgZmVydGlnLCBldGMuKS4KKyAgICAgICAgSW4gWndlaWZlbHNmYWVsbGVuIHdpcmQgZGllIFZlcmxhZW5nZXJ1bmcgdm9uIGRlbiBFTXMgZGlza3V0aWVydC4KKyAgICAgICogTXVzcyBkYXMgR1MgbmFjaCBBYm5haG1lIGR1cmNoIGRlbiBSTSB1bmQvb2RlciBkZW4gRU0gR2VzZWxsZW5zdHVlY2tlCisgICAgICAgIG5hY2hnZWJlc3NlcnQgd2VyZGVuLCBzb2xsdGUgZGllc2VzIGlubmVyaGFsYiB2b24gMiBNb25hdGVuIGdlc2NoZWhlbi4KKyAgICAgICAgVmVybGFlbmdlcnVuZ2VuOiBzLm8uCisgICAgICAqIEJlaSBOaWNodC1FaW5oYWx0dW5nIGRlciBGcmlzdCBlcmZvbGd0IGRpZSBMb2VzY2h1bmcgZGVzIENoYXJha3RlcnMgCisgICAgICAgIG9kZXIgRGF1ZXJzcGllbHBhdXNlbiBhdWYgTWFnaWVybGV2ZWwgMTUuCisgICAgICAqIERlciBTcGllbGVyIHVudGVybGllZ3QgYXVjaCBuYWNoIExvZXNjaHVuZyBkZW0gTWFnaWVydmVydHJhZyBpbnNvZmVybiwKKyAgICAgICAgYWxzIGRhc3MgZXIgdWViZXIgZXR3YWlnZSBhbHMgTWFnaWVyIGdld29ubmVuZSBJbnRlcm5hIHZvbiBuaWNodC0KKyAgICAgICAgb2VmZmVudGxpY2hlbSBDb2RlIFN0aWxsc2Nod2VpZ2VuIHp1IHdhaHJlbiBoYXQuCisKKyBTSUVIRSBBVUNIOgorICAgIHN0dWZlbiwgbWFnaWVyc3R1ZmVuLCBhYmVudGV1ZXIsIGtvbnplcHQsIGdlc2VsbGVuc3R1ZWNrCisgICAgc2VoZXIsIHJlZ2lvbmVuLCBnaWxkZW5tYWdpZXIsIGVyem1hZ2llciwgZ29ldHRlcgorCisgTEVUWlRFIEFlTkRFUlVORzogMjAxNS0wNS0zMCB2b24gWm9vaworCmRpZmYgLS1naXQgYS9kb2MvaGVscC9tYWdpZXJzdHVmZW4gYi9kb2MvaGVscC9tYWdpZXJzdHVmZW4KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZTM2YzhiMwotLS0gL2Rldi9udWxsCisrKyBiL2RvYy9oZWxwL21hZ2llcnN0dWZlbgpAQCAtMCwwICsxLDY4IEBACittYWdpZXJzdHVmZW4KKz09PT09PT09PT09PQorCisgICAgRXMgZ2lidCB2ZXJzY2hpZWRlbmUgTWFnaWVyc3R1ZmVuLCBkaWUgYmVzdGltbXRlIFJlY2h0ZSB1bmQgUGZsaWNodGVuIG1pdAorICAgIHNpY2ggYnJpbmdlbi4gVWVibGljaGVyd2Vpc2Ugc2luZCBkaWUgZW50c3ByZWNoZW5kZW4gTWFnaWVyIG9mdCBhdWNoIGVpbgorICAgIHBhYXIgTGV2ZWwgaG9laGVyIChzbyBpc3QgZWluIEdvdHQgdWVibGljaGVyd2Vpc2UgTGV2ZWwgMTExKSwgZGllcyBzaW5kCisgICAgZGllIEdyZW56ZW4sIGFiIHdvIGRpZSBCZXplaWNobnVuZyBiencuIGRpZSBSZWNodGUgaW0gYmVzY2hyaWViZW5lbiAKKyAgICBVbWZhbmcgZ3VlbHRpZyBzaW5kOgorCisgICAgTGV2ZWwgMTAwCS0tLQlHb3R0CisJCUVybmVubnQgRXJ6bWFnaWVyLCBrbGFlcnQgc2Nod2Vyd2llZ2VuZGUgUHJvYmxlbWUsIHRyYWVndCBkaWUKKwkJTGFzdCBkZXIgVmVyYW50d29ydHVuZy4KKwkJVm9sbGUgU2NocmVpYnJlY2h0ZS4KKworICAgIExldmVsIDYwCS0tLQlFcnptYWdpZXIKKwkJU2luZCBmdWVyIHZlcnNjaGllZGVuZSBwcmFrdGlzY2hlIEF1ZmdhYmVuZ2ViaWV0ZSB3aWUKKwkJKEdpbGRlbmJhbGFuY2UpLCBNdWRsaWIgb2RlciBHZXNlbGxlbnN0dWVja2UgdmVyYW50d29ydGxpY2guCisJCVZvbGxlIFNjaHJlaWJyZWNodGUuCisKKyAgICBMZXZlbCA1MAktLS0JV2Vpc2UKKwkJQmVhcmJlaXRlbiBlaW4gc3BlemllbGxlcyBUaGVtYS4KKwkJVm9sbGUgU2NocmVpYnJlY2h0ZSBiaXMgYXVmIGRpZSBNdWRsaWIuCisKKyAgICBMZXZlbCA0MAktLS0JUmVnaW9uc21hZ2llcgorCQlTaW5kIGZ1ZXIgZWluZSBvZGVyIG1laHJlcmUgUmVnaW9uZW4genVzdGFlbmRpZyB1bmQgaGFiZW4KKwkJZG9ydCB2b2xsZSBTY2hyZWlicmVjaHRlLiBFcm5lbm50IFJlZ2lvbnNtaXRhcmJlaXRlci4KKworICAgIExldmVsIDMwCS0tLQlIaWxmc21hZ2llcgorCQlLdWVtbWVybiBzaWNoIHVtIERva3VtZW50YXRpb24gb2RlciBhbmRlcmUgU3BlemlhbGF1ZmdhYmVuLAorCQloYWJlbiBkYWZ1ZXIgaW0gRG9rdW1lbnRhdGlvbnNiZXJlaWNoIHZvbGxlIFNjaHJlaWJyZWNodGUuCisKKyAgICBMZXZlbCAyNiAgICAtLS0gICAgIFJlZ2lvbnNtaXRhcmJlaXRlcgorICAgICAgICAgICAgICAgIFdpZSBMZXZlbCAyNSwgZGFyZiB6dXNhZXR6bGljaCBzZWxic3QgTmV1bWFnaWVyIGJlcnVmZW4uCisJCVdpcmQgdm9tIFJlZ2lvbnNtYWdpZXIgdmVybGllaGVuLCBmdWVyIE1hZ2llciwgZGVuZW4gZGllc2UKKwkJVmVyYW50d29ydHVuZyB6dWdldHJhdXQgd2VyZGVuIGthbm4uCisKKyAgICBMZXZlbCAyNQktLS0JUmVnaW9uc21pdGFyYmVpdGVyCisJCUFyYmVpdGV0IGluIGVpbmVyIChvZGVyIG1laHJlcmVuKSBSZWdpb25lbiBtaXQgdW5kIGhhdCBkb3J0CisJCWF1ZiBzZWluIFZlcnplaWNobmlzIHZvbGxlIFNjaHJlaWJyZWNodGUuCisKKyAgICBMZXZlbCAyMQktLS0JVm9sbG1hZ2llcgorCQlNZWlzdCBlaW4gVWViZXJnYW5nc3p1c3RhbmQsIHdlbm4gZGFzIEdlc2VsbGVuc3R1ZWNrCisJCWFremVwdGllcnQgYWJlciBpbiBrZWluZXIgUmVnaW9uIGFuZ2VzY2hsb3NzZW4gaXN0LgorCQlTY2hyZWlicmVjaHRlIGltIGVpZ2VuZW4gVmVyemVpY2huaXMuCisJCUxlc2VyZWNodGUgaW4gYWxsZW4gR2ViaWV0ZW4gdW5kIGRlciBNdWRsaWIsIG1pdCBnZXdpc3NlbgorCQlBdXNuYWhtZW4uCisKKyAgICBMZXZlbCAyMAktLS0JTGVocmxpbmcKKwkJU2NocmVpYnQgc2VpbiBHZXNlbGxlbnN0dWVjayAob2RlciBzb2xsdGUgZXMgdHVuKS4KKwkJU2NocmVpYnJlY2h0ZSBpbSBlaWdlbmVuIFZlcnplaWNobmlzLgorCQlLZWluZSBMZXNlcmVjaHRlIGluIFJlZ2lvbmVuLCBNYWdpZXItIG9kZXIgR2lsZGVuLQorCQl2ZXJ6ZWljaG5pc3Nlbi4KKworICAgIExldmVsIDE1CS0tLQlMZWhybGluZy9OZXVtYWdpZXIKKwkJQXVmIGRpZXNlbSBMZXZlbCBrYW5uIG1hbiBpbiBkZXIgRG9rdW1lbnRhdGlvbiB1bmQgaW4gZGVyCisJCU11ZGxpYiBzdG9lYmVybiB1bmQgc2ljaCBtaXQgZGVtIE1hZ2llcmRhc2VpbiB2ZXJ0cmF1dAorCQltYWNoZW4uIERpZXNlbiBMZXZlbCBlcmhhZWx0IG1hbiBkaXJla3QgbmFjaCBkZXIKKwkJTWFnaWVyd2VyZHVuZy4KKwkJQmVpIEFubmFobWUgZGVzIEtvbnplcHRlcyBmdWVyIGRhcyBHZXNlbGxlbnN0dWVjayBlcmZvbGd0CisJCUJlZm9lcmRlcnVuZyBhdWYgTGV2ZWwgMjAuCisJCUtlaW5lIFNjaHJlaWJyZWNodGUuCisKKyBTSUVIRSBBVUNIOgorICAgIG1hZ2llciwgc3R1ZmVuLCB2ZXJ0cmFnCisgICAgc2VoZXIsIHJlZ2lvbmVuLCBnaWxkZW5tYWdpZXIsIGVyem1hZ2llciwgZ29ldHRlcgorCisgTEVUWlRFIEFlTkRFUlVORzoKKwkyNS4wMS4yMDA2IHZvbiBIdW1uaQpkaWZmIC0tZ2l0IGEvZG9jL2hlbHAvbWVybGluIGIvZG9jL2hlbHAvbWVybGluCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjQ4ZWJlNzgKLS0tIC9kZXYvbnVsbAorKysgYi9kb2MvaGVscC9tZXJsaW4KQEAgLTAsMCArMSwxMyBAQAorCitNZXJsaW4KKz09PT09PQorCitNZXJsaW4gaXN0IGRlciBVZWJlcnZhdGVyIGFsbGVyIE1hZ2llci4gRXIgaXN0IGF1Y2ggenVzdGFlbmRpZywKK2ZhbGxzIGVpbiBTcGllbGVyIE1hZ2llciBvZGVyIFNlaGVyIHdlcmRlbiBtb2VjaHRlLiBTcHJpY2ggaWhuCitlaW5mYWNoIGVpbm1hbCBkYXJhdWYgYW4uCisKK0RhbmViZW4gaXN0IGVyIGF1Y2ggcmVpY2hsaWNoIHR1ZXR0ZWxpZyB1bmQgdmVyZ2lzc3QgbWFuY2htYWwsCit3byBlciBzaWNoIGJlZmluZGV0Li4uLgorCisKK0xFVFpURSBBZU5ERVJVTkc6IDIwMDYtMDItMjEgdm9uIFpvb2suClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZG9jL2hlbHAvbXVkcmVjaG5lciBiL2RvYy9oZWxwL211ZHJlY2huZXIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uN2EzMTAwZQotLS0gL2Rldi9udWxsCisrKyBiL2RvYy9oZWxwL211ZHJlY2huZXIKQEAgLTAsMCArMSwzMSBAQAorRGVyIE11ZHJlY2huZXIKKz09PT09PT09PT09PT09CisKKyAgICAgRGFzIE11ZCBsYWV1ZnQgc2VpdCAyMS4gRmViIDIwMTAgYXVmOgorICAgICAtIERlbGwgMjk1MCBtaXQgMiBOZXR6dGVpbGVuCisgICAgIC0gMiAqIFhFT04gNTQyMCAyLjVHSHosIDhHQiBSQU0sIDcwR0IgKFJBSUQxKSBPUywgNTAwIEdCIChSQUlEMSkgRGF0ZW4KKyAgICAgdW5kIGlzdCB1ZWJlcgorICAgICAgLSAxR0IgRXRoZXJuZXQgKGV4dGVybiAxR0IpCisgICAgIGFuIGRhcyBJbnRlcm5ldCBhbmdlc2NobG9zc2VuLgorCisgICAgIFVudGVyIGRlciBBZHJlc3NlIG1nLm11ZC5kZSBzaW5kIGViZW5mYWxsczoKKyAgICAgIHN0dW5uZWw6ICAtIHp1ciBWZXJzY2hsdWVzc2VsdW5nIGRlciBWZXJiaW5kdW5nIG1pdCBkZW0gTVVECisgICAgICBGVFA6ICAgICAgLSBhbm9ueW0KKyAgICAgICAgICAgICAgICAgIC0genVtIEhvY2hsYWRlbiB2b24gUGFydHliaWxkZXJuCisgICAgICAgICAgICAgICAgICAtIHp1bSBadWdyaWZmIGF1ZiBTb2Z0d2FyZSAoaW5rbHVzaXZlIGFrdHVlbGxlciBNdWRsaWIpCisgICAgICAgICAgICAgICAgLSBtaXQgTWFnaWVybmFtZS9QYXNzd29ydAorICAgICAgICAgICAgICAgICAgLSB6dW0gWnVncmlmZiBhdWYgZGFzIGVpZ2VuZSBWZXJ6ZWljaG5pcyBpbSBNVUQKKyAgICAgIGdpdDogICAgICAtIG1pdCBoaW50ZXJsZWd0ZW0gU2NobHVlc3NlbCAoZnVlciBNYWdpZXIpCisgICAgICAgICAgICAgICAgICAtIHp1bSBadWdyaWZmIGF1ZiBzYWVtdGxpY2hlIGZyZWllbi9laWdlbmVuIGdpdC1SZXBvc2l0b3JpZXMKKyAgICAgIFdXVzogICAgICAtIGRpZSBXZWJzZWl0ZW4gZGVzIE1HCisgICAgIHp1IGVycmVpY2hlbi4KKworIFNJRUhFIEFVQ0g6CisgICBsYWcsIGlyYywgc3R1bm5lbCwgdGVhbXNwZWFrLCBjbGllbnQsIHd3dworCisgSElTVE9SWToKKyAgICAgIFJlY2huZXIgYmlzIDIxLiBGZWIgMjAxMCwgKFN0YW5kIDA4LiBBcHJpbCAyMDA0KToKKyAgICAgIC0gWGVvbiBDUFUgMi40MEdIeiAxMDI0TUIgUkFNLCAzNiArIDcwIEdCIFBsYXR0ZW5wbGF0eiAoU0NTSSkKKworIExFVFpURSBBZU5ERVJVTkc6CisgICAgIDguIE5vdiAyMDEyIEdsb2luc29uCmRpZmYgLS1naXQgYS9kb2MvaGVscC9wYXJ0aWVzIGIvZG9jL2hlbHAvcGFydGllcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi40YmQ4NzE5Ci0tLSAvZGV2L251bGwKKysrIGIvZG9jL2hlbHAvcGFydGllcwpAQCAtMCwwICsxLDI4IEBACisKK1BhcnRpZXMgZGVzIE1vcmdlbmdyYXVlbgorPT09PT09PT09PT09PT09PT09PT09PT09CisKKyBLT01NQU5ET1M6CisgICAgIGFubWVsZGVuCisKKyBCRVNDSFJFSUJVTkc6CisgICAgIE1pdCBkaWVzZW4gS29tbWFuZG8gbWVsZGV0IG1hbiBzaWNoIGFuIGVpbmVtIFBhcnR5YnJldHQgenUgZWluZXIgZGVyCisgICAgIHJlZ2VsbWFlc3NpZyBzdGF0dGZpbmRlbmRlbiBQYXJ0aWVzIGRlciBNb3JnZW5ncmF1ZW4gTXVkZGVyIGFuLiBEb3J0CisgICAgIGRhcmYgbWFuIGRhbm4gZGVtIFByb3R6ZW4gd2VsdGVyZmFocmVuZXIgU3BpZWxlciwgZGVuIEF1ZnNjaG5laWRlbgorICAgICBzY2hvbiBsYW5nZSBuaWNodCBtZWhyIHNwaWVsZW5kZXIgU2VoZXIsIGRlbiB2YWdlbiBBbmRldXR1bmdlbiBkZXIKKyAgICAgTWFnaWVyIHVuZCBzb25zdGlnZW4gUHJhaGxlcmVpZW4gYmVpIGdlcGZsZWd0ZW0gQWxrb2hvbGtvbnN1bSB1bmQgaW1tZXIKKyAgICAgdW50ZXIgZGVyIEF1ZnNpY2h0IGVpbmVzIEVyem1hZ2llcnMgZnVlciBTaXR0bGljaGtlaXQgbGF1c2NoZW4uCisgICAgIFdpcmtsaWNoIHdpY2h0aWdlIERldGFpbHMga29lbm5lbiB2b24gZGlyIHRoZW1hdGlzaWVydCB3ZXJkZW4uCisKKyAgICAgT3J0LCBaZWl0IHVuZCBLb3N0ZW4gZGVyIGRlbW5hZWNoc3Qgc3RhdHRmaW5kZW5kZW4gUGFydHkga2FubiBtYW4gaW4KKyAgICAgZGVyIE1QQSwgcnVicmlrICJwYXJ0eSIgb2RlciBpbSBXZWIgdW50ZXIKKyAgICAgICBodHRwczovL21nLm11ZC5kZS9yZWFsd29ybGQvcGFydHkuc2h0bWwKKyAgICAgZXJmYWhyZW4uCisKKyAgICAgZXJmYWhyZW4uCisKKyBTSUVIRSBBVUNIOgorICAgICB2ZXJlaW4sIG1hZ2llcgorCisgTEVUWlRFIEFlTkRFUlVORzoKKyAgICAgMjIuIE1hZXJ6IDIwMDQgR2xvaW5zb24KZGlmZiAtLWdpdCBhL2RvYy9oZWxwL3Bvc3QgYi9kb2MvaGVscC9wb3N0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmRmMTBiNTYKLS0tIC9kZXYvbnVsbAorKysgYi9kb2MvaGVscC9wb3N0CkBAIC0wLDAgKzEsMTgyIEBACitEYXMgUG9zdHN5c3RlbQorPT09PT09PT09PT09PT0KKworICAgIEltIE11ZCBnaWJ0IGVzIGF1Y2ggZGllIE1vZWdsaWNoa2VpdCwgYW5kZXJlbiBTcGllbGVybiBQb3N0IHp1IHNlbmRlbi4KKyAgICBBbmRlcnMgYWxzIGJlaSBkZXIgQnVuZGVzcG9zdCBzaW5kIGFiZXIgd2VkZXIgQnJpZWZlIG5vY2ggUG9zdGthcnRlbiBpbQorICAgIE11ZCBmcmVpbWFjaHVuZ3NwZmxpY2h0aWcuCisKKyAgICBNYW4gZ2VodCBlaW5mYWNoIGluIGVpbmUgZGVyIFBvc3RmaWxpYWxlbiB1bmQgdGlwcHQgYHBvc3QnIG9kZXIgYG1haWwnLCB1bQorICAgIGluIGRhcyBQb3N0bWVudWUgenUgZ2VsYW5nZW4uIERhcyBQb3N0bWVudWUgZ2lidCBhdWYgYGgnIChvZGVyIGBoaWxmZScpCisgICAgZWluZSBrdXJ6ZSBIaWxmc3NlaXRlIG1pdCBlaW5lciBCZWZlaGxzdWViZXJzaWNodC4KKworICAgIFdpbGwgbWFuIG5hY2ggJ3Bvc3QnIG9kZXIgJ21haWwnIG5pY2h0IGRpZSBpbSBGb2xkZXIgZW50aGFsdGVuZW4gTWFpbHMKKyAgICBhdWZnZWxpc3RldCBiZWtvbW1lbiwgc28gbnV0emUgbWFuIHN0YXR0ZGVzc2VuICdwb3N0IC1zaWxlbnQnIG9kZXIKKyAgICAnbWFpbCAtc2lsZW50Jy4KKworIEluaGFsdHN2ZXJ6ZWljaG5pcyBkaWVzZXIgSGlsZnNzZWl0ZToKKworICAgIDEuIE1haWwgc2NocmVpYmVuCisgICAgMi4gTWFpbCBuYWNoIHVuZCB2b24gYXVzc2VyaGFsYiBkZXMgTXVkcworICAgIDMuIE1haWxhbGlhc2UKKyAgICA0LiBNYWlsIGxlc2VuLCBiZWFudHdvcnRlbiwgbG9lc2NoZW4gdW5kIHdlaXRlcnNlbmRlbiAtIGRpZSBhbmRlcmVuCisgICAgICAgTWVudWVwdW5rdGUgaW0gUG9zdG1lbnVlCisgICAgNS4gT3JkbmVyIChmb2xkZXJzKQorICAgIDYuIE5hY2hzZW5kZWF1ZnRyYWVnZSAoLmZvcndhcmQpCisgICAgNy4gUGFrZXRwb3N0CisgICAgOC4gQWJzZW5kZXIgaWdub3JpZXJlbgorCisgMS4gTWFpbCBzY2hyZWliZW46CisgICAgR3J1bmRzYWV0emxpY2ggZ2lidCBlcyB6d2VpIE1vZWdsaWNoa2VpdGVuOiBFbnR3ZWRlciBpbm5lcmhhbGIgZGVzCisgICAgUG9zdG1lbnVlcyBgbSA8bmFtZT4nLCBvZGVyIGFiZXIgbWFuIHJ1ZnQgZGlyZWt0IG1pdCBgbWFpbCA8bmFtZT4nIGRhcworICAgIFNjaHJlaWJlbiBhdWYgdW5kIGxhbmRldCBkYW5uIG5hY2ggQmVlbmRpZ3VuZyBpbSBNZW51ZS4KKworICAgIE1hbiB3aXJkIHp1bmFlY2hzdCBuYWNoIGRlciBVZWJlcnNjaHJpZnQgZ2VmcmFndCB1bmQgZ2lidCBkYW5uIGRlbiBUZXh0CisgICAgZWluLiBEaWUgRWluZ2FiZSB2ZXJ3ZW5kZXQgZWluZW4gZWluZmFjaGVuIEVkaXRvciBtaXQgZWluaWdlbgorICAgIHJ1ZGltZW50YWVyZW4gRWRpdG9yZnVua3Rpb25lbiwgZWluZSBlaWdlbmUgSGlsZnNzZWl0ZSBpc3QgbWl0IGB+aCcKKyAgICBhYnp1ZnJhZ2VuLgorICAgIFVlYmVybGFuZ2UgWmVpbGVuIHdlcmRlbiBhdWYgNzggWmVpY2hlbiBwcm8gWmVpbGUgdW1nZWJyb2NoZW4sIG1hbiBrYW5uCisgICAgYWxzbyBnZXRyb3N0IGF1Y2ggbGFuZ2UgVGV4dGUgYW0gU3R1ZWNrIHNjaHJlaWJlbi4KKworICAgIEJlZW5kZXQgd2lyZCBkaWUgRWluZ2FiZSBtaXQgYC4nIG9kZXIgYCoqJyAoYWxzIGVpZ2VuZSBaZWlsZSBlaW5nZWJlbikgdW5kCisgICAgd2lyZCBkYW5uIG5hY2ggQ0MncyBnZWZyYWd0LiBDQyBiZWRldXRldCBgY2FyYm9uIGNvcHknLCBhbHNvIER1cmNoc2NobGFnLgorICAgIE1hbiBrYW5uIGpldHp0IGVpbmVuIG9kZXIgbWVocmVyZSBkdXJjaCBLb21tYSBvZGVyIExlZXJ6ZWljaGVuIGdldHJlbm50ZQorICAgIE5hbWVuIGFuZ2ViZW4sIGFuIGRpZSBkZXIgQnJpZWYgenVzYWV0emxpY2ggenVtIGVpZ2VudGxpY2hlbiBFbXBmYWVuZ2VyCisgICAgZ2VzZW5kZXQgd2lyZC4KKworICAgIE1haWwgYW4gbWVocmVyZSBQZXJzb25lbjoKKyAgICBNYW4ga2FubiBnbGVpY2ggYmVpbSBBdWZydWYgbWVocmVyZSBOYW1lbiBkdXJjaCBLb21tYSBvZGVyIExlZXJ6ZWljaGVuCisgICAgZ2V0cmVubnQgYW5nZWJlbiwgb2RlciBkaWUgYW5kZXJlbiBhbHMgY2MuIEF1Y2ggZWluZSBLb21iaW5hdGlvbiBpc3QKKyAgICBlcmxhdWJ0LiBHaWJ0IG1hbiBtZWhyIGFscyBlaW5lbiBOYW1lbiBhbHMgRW1wZmFlbmdlciBhbiwgc28gZ2lsdCBkZXIKKyAgICBlcnN0ZSBhbHMgRW1wZmFlbmdlciwgZGllIHJlc3RsaWNoZW4gYmVrb21tZW4gY2Mncy4KKworICAgIEJsaW5kIENhcmJvbiBDb3BpZXMgKEJDQyk6CisgICAgU2V0enQgbWFuIHZvciBlaW5lbiBOYW1lbiBlaW4gYC0nLCBzbyB3aXJkIGRlciBCcmllZiBhdWNoIGFuIGRpZXNlIEFkcmVzc2UKKyAgICBnZXNlbmRldCwgYWJlciBkaWUgQWRyZXNzZSBzdGVodCBuaWNodCBpbSBWZXJ0ZWlsZXIuCisgICAgKkFjaHR1bmc6KiBEZXIgZWlnZW50bGljaGUgRW1wZmFlbmdlciwgYWxzbyBkaWUgZXJzdGUgYW5nZWdlYmVuZSBBZHJlc3NlLAorICAgIGRhcmYga2VpbmUgQkNDIHNlaW4uCisKKyAyLiBNYWlsIG5hY2ggdW5kIHZvbiBhdXNzZXJoYWxiCisgICAgCisgICAgYSkgTWFpbCBpbiBhbmRlcmUgTXVkcyAoKEludGVyLSlNdWRtYWlsKQorICAgICAgRXMgaXN0IG1vZWdsaWNoLCBNYWlscyBpbiBlaW5lIFJlaWhlIHZvbiBhbmRlcmVuIE11ZHMgenUgc2NoaWNrZW4gdW5kCisgICAgICB3ZWxjaGUgdm9uIGRvcnQgenUgZW1wZmFuZ2VuLgorICAgICAgWnVtIEVtcGZhbmdlbiBtdXNzIG1hbiBuaXggdHVuLgorICAgICAgWnVtIFZlcnNlbmRlbiBnaWJ0IG1hbiBkZW4gQ2hhcm5hbWVuIGRlcyBFbXBmYWVuZ2VyIGdlZm9sZ3Qgdm9uIGVpbmVtIEAKKyAgICAgIHVuZCBkZW0gTXVkbmFtZW4gZGVzIEVtcGZhZW5nZXJzIGFuLCB6LkIuICdibGFAdW5pdG9waWEnLgorCisgICAgYikgTWFpbCBpbiBkZW4gUmVzdCBkZXMgSW50ZXJuZXRzCisgICAgICAKKyAgICAgIEFjaHR1bmc6IFBvbGl0aXNjaGUgVm9yZ2FiZW4gdW5kIGRhcyBBbndhY2hzZW4gdm9uIFNwYW0gaGFiZW4genVyCisgICAgICAgICAgICAgICBBYnNjaGFsdHVuZyBkaWVzZXIgRnVua3Rpb25lbiBnZWZ1ZWhydC4KKworIDMuIE1haWxhbGlhc2U6CisgICAgTWFpbGFsaWFzZSBrb2VubmVuIHdpZSBOYW1lbiB2ZXJ3ZW5kZXQgd2VyZGVuLiBFcyBnaWJ0IGVpbmUgQW56YWhsCisgICAgdm9yZGVmaW5pZXJ0ZXIgQWxpYXNlLCBlaW5lIExpc3RlIGRlciBBbGlhc2UgYmVrb21tdCBtYW4gaW0gUG9zdG1lbnVlIG1pdAorICAgIGBhJy4KKyAgICBNYWdpZXIgaGFiZW4gZGllIE1vZWdsaWNoa2VpdCwgc2ljaCBlaW5lIERhdGVpIGAubWFpbHJjJyBpbiBpaHIKKyAgICBWZXJ6ZWljaG5pcyB6dSBsZWdlbiwgZGllIGVpZ2VuZSBNYWlsYWxpYXNlIGVudGhhZWx0LgorCisgICAgRXMgZ2lidCBlaW5pZ2Ugdm9yZGVmaW5pZXJ0ZSBNYWlsYWxpYXNlLCBkaWUgZnVlciBhbGxlIGdlbHRlbjoKKworICAgICAqIGBtZScgc2VuZGV0IGFuIGRpZWplbmlnZSBBZHJlc3NlLCBkaWUgbWFuIHNlbGJlciBhbHMgRW1haWxhZHJlc3NlCisgICAgICAgYW5nZWdlYmVuIGhhdC4gRGFzIGlzdCBudWV0emxpY2gsIHdlbm4gbWFuIFBvc3QgYW4gc2VpbmVuIGVpZ2VuZW4KKyAgICAgICBhY2NvdW50IHdlaXRlcnNjaGlja2VuIHdpbGwuCisgICAgICogYGZyZXVuZGUnIC0gZGFzIHNpbmQgYWxsZSBEZWluZSBGcmV1bmRlLCB3aWUgc2llIGF1ZiBEZWluZW0KKyAgICAgICBGcmV1bmRzY2hhZnRzYmFuZCBzdGVoZW4gKGZhbGxzIER1IGVpbnMgaGFzdCkuCisgICAgICogUnVuZHNjaHJlaWJlbiBhbiBhbGxlIE1pdGFyYmVpdGVyIGVpbmVyIFJlZ2lvbjogRWluZmFjaCBgZC54eXonIGFscworICAgICAgIEVtcGZhZW5nZXIgYW5nZWJlbiwgd29iZWkgYHh5eicgbmF0dWVybGljaCBkZXIgTmFtZSBkZXIgUmVnaW9uIGlzdC4KKyAgICAgKiBlaW5pZ2Ugd2VpdGVyZSBBbGlhc2Ugd2llIGBlcnptYWdpZXInLCBgcG9saXplaScsIGBnb2V0dGVyJywgLi4uIChzaWVoZQorICAgICAgIExpc3RlIG1pdCBgYScpIGVybGVpY2h0ZXJuIGVzLCBkZW4gcmljaHRpZ2VuIEFuc3ByZWNocGFydG5lciB6dSBmaW5kZW4uCisgICAgICogRWluaWdlIEFsaWFzZSBzaW5kIGVpZ2VudGxpY2ggTmFjaHNlbmRlYXVmdHJhZWdlIHVuZCB3ZXJkZW4gYmFsZAorICAgICAgIHZlcnNjaHdpbmRlbi4KKworIDQuIE1haWwgbGVzZW4gdW5kIGRpZSBhbmRlcmVuIE1lbnVlcHVua3RlIGltIFBvc3RtZW51ZQorCisgICAgIE1haWwgbGVzZW46CisgICAgICAgIEVpbmZhY2ggZGllIE51bW1lciBkZXMgQnJpZWZlcyB0aXBwZW4sIGRpZSBtYW4gbGVzZW4gd2lsbC4gVW0gZGVuCisgICAgICAgIGFrdHVlbGxlbiBCcmllZiAoZGFzIGlzdCBkZXIsIGF1ZiBkZW4gZGVyIFBmZWlsIHplaWd0KSB6dSBsZXNlbiwgYC4nCisgICAgICAgIHRpcHBlbiwgZnVlciBkZW4gbmFlY2hzdGVuIGArJyAocHJha3Rpc2NoIHp1bSBEdXJjaGJsYWV0dGVybiksIGAtJworICAgICAgICBmdWVyIGRlbiB2b3JoZXJnZWhlbmRlbi4KKworICAgICBNYWlsIGxvZXNjaGVuOgorICAgICAgICBBbGxlIEJyaWVmZSB3ZXJkZW4gZ2VzcGVpY2hlcnQsIGJpcyBtYW4gc2llIGxvZXNjaHQuIEFscyBBcmd1bWVudAorICAgICAgICBOdW1tZXIgYW5nZWJlbiwgYW5zb25zdGVuIHdpcmQgZGVyIEJyaWVmIGdlbG9lc2NodCwgYXVmIGRlbiBkZXIgUGZlaWwKKyAgICAgICAgaW4gZGVyIExpc3RlIHplaWd0LgorCisgICAgICAgIExpc3RlbmFyZ3VtZW50ZSBkZXIgRm9ybSBbbnJdIFtuci1ucl0gLi4uIHNpbmQgenVsYWVzc2lnLgorCisgICAgICAgIEJlaXNwaWVsOiBgZCAxOCAxMi0xNCAyJyBsb2VzY2h0IGRpZSBCcmllZmUgTnVtbWVyIDIsMTIsMTMsMTQsMTguCisKKyAgICAgTWFpbCBiZWFudHdvcnRlbiwgR3J1cHBlbmFudHdvcnQ6CisgICAgICAgIERhc3NlbGJlIHdpZSBgc2NocmVpYmVuJywgbnVyIGRhc3MgZGVyIEVtcGZhZW5nZXIgYXV0b21hdGlzY2ggZGVyCisgICAgICAgIEFic2VuZGVyIGRlcyBiZWFudHdvcnRldGVuIEJyaWVmZXMgaXN0LCB1bmQsIGF1c3NlciBtYW4gZ2lidCBlaW5lCisgICAgICAgIGFuZGVyZSBhbiwgZGllIFVlYmVyc2NocmlmdCBgUmU6IDxPcmlnaW5hbHVlYmVyc2NocmlmdD4nIGxhdXRldC4KKworICAgICAgICBCZWkgIkdydXBwZW5hbnR3b3J0IiB3aXJkIGRpZSBBbnR3b3J0IGF1c3NlcmRlbSBhbiBhbGxlIEVtcGZhZW5nZXIgdm9uCisgICAgICAgIENDJ3MgZGVzIE9yaWdpbmFsYnJpZWZlcyB2ZXJzY2hpY2t0LgorCisgICAgICAgIElzdCBlaW5lIGBSZXBseS10bzonLVplaWxlIGltIFRleHQgZW50aGFsdGVuLCB3aXJkIGRlciBCcmllZiBhbiBkaWUKKyAgICAgICAgaGllciBhbmdlZ2ViZW5lIEFkcmVzc2UgZ2VzY2hpY2t0LgorCisgICAgICAgICpBY2h0dW5nOiogQXVjaCBpbiBkaWVzZW0gRmFsbCB3ZXJkZW4gTWFpbGFsaWFzZSB1bmQgZ2dmLgorICAgICAgICBOYWNoc2VuZGVhdWZ0cmFlZ2UgYXVzZ2V3ZXJ0ZXQhCisKKyAgICAgTWFpbCB3ZWl0ZXJzZW5kZW4gKGZvcndhcmQpOgorICAgICAgICBEZXIgZXJoYWx0ZW5lIEJyaWVmIHdpcmQga29waWVydCB1bmQgYW4gZGVuIG5ldWVuIEVtcGZhZW5nZXIKKyAgICAgICAgd2VpdGVyZ2VzY2hpY2t0LiBCZWkgYEYnIGJ6dy4gYFdlaXRlcicga2FubiBtYW4gYXVzc2VyZGVtIG5vY2gKKyAgICAgICAgenVzYWV0emxpY2ggZWlnZW5lbiBUZXh0IGFuaGFlbmdlbi4KKworICAgICAgICBOdXIgZnVlciBgZicgKGFsc28gb2huZSB6dXNhZXR6bGljaGVuIFRleHQpIGdpbHQ6IFdpcmQgZWluZSBMaXN0ZSBhbHMKKyAgICAgICAgQXJndW1lbnQgYW5nZWdlYmVuLCBzbyB3ZXJkZW4gYWxsZSBCcmllZmUgenUgZWluZW0gbGFuZ2VuIEJyaWVmCisgICAgICAgIHp1c2FtbWVuZ2VoYWVuZ3QgdW5kIGRpZXNlciB3ZWl0ZXJnZXNlbmRldC4KKworIDUuIFp1bSBUaGVtYSBPcmRuZXI6CisgICAgTWFuIGthbm4gQnJpZWZlLCBkaWUgbWFuIG5vY2ggbmljaHQgbG9lc2NoZW4gd2lsbCwgaW4gdmVyc2NoaWVkZW5lIE9yZG5lcgorICAgIChmb2xkZXJzKSBzb3J0aWVyZW4uIFNvbGNoZSBPcmRuZXIgbXVzcyBtYW4genVuYWVjaHN0IGFubGVnZW4sIGRhbm4ga2FubgorICAgIG1hbiBkaWUgQnJpZWZlIHZvbiBlaW5lbSB6dW0gYW5kZXJlbiB2ZXJzY2hpZWJlbi4gQW5nZXplaWd0IHdlcmRlbgorICAgIG5hdHVlcmxpY2ggaW1tZXIgbnVyIGRpZSBCcmllZmUgZGVzIGFrdHVlbGxlbiBPcmRuZXJzLiBVbSBhbmRlcmUgenUgbGVzZW4sCisgICAgbXVzcyBtYW4genVuYWVjaHN0IGRlbiBPcmRuZXIgd2VjaHNlbG4uCisKKyAgICBCZWltIEVpbnN0aWVnIGlucyBQb3N0bWVudWUgc2NobGFlZ3QgbWFuIHp1bmFlY2hzdCBkZW4gT3JkbmVyIGBuZXdtYWlsJworICAgIGF1ZiwgaW4gZGVuIGFsbGUgYW5rb21tZW5kZW4gQnJpZWZlIGF1Y2ggYWJnZXNwZWljaGVydCB3ZXJkZW4uCisKKyAgICBBbGxlIEJlZmVobGUsIGRpZSBPcmRuZXJuYW1lbiBhbHMgQXJndW1lbnRlIHZlcmxhbmdlbiwgYWt6ZXB0aWVyZW4gYXVjaAorICAgIGAtJyBmdWVyIGRlbiBpbiBkZXIgTGlzdGUgdm9yaGVyZ2VoZW5kZW4gT3JkbmVyLCBgKycgZnVlciBkZW4KKyAgICBuYWNoZm9sZ2VuZGVuIHVuZCBqZWRlIGVpbmRldXRpZ2UgQWJrdWVyenVuZy4KKworIDYuIE5hY2hzZW5kZWF1ZnRyYWVnZQorICAgIFdpbGwgbWFuIHNlaW5lIFBvc3QgbGllYmVyIGFuIGVpbmVuIGFuZGVyZW4gQ2hhcmFrdGVyIGF1c2dlbGllZmVydAorICAgIGJla29tbWVuLCBzbyBnZWh0IGRhcyBhdWNoLiBIaWVyenUgbXVzcyBtYW4gYWJlciBhbHMgRW1haWxhZHJlc3NlIGRlbgorICAgIGFuZGVyZW4gQ2hhciBpbiBkaWVzZXIgRm9ybSBhbmdlYmVuOiAnbmV1ZXJfZW1wZmFlbmdlckBtb3JnZW5ncmF1ZW4nIAorICAgIChzaWVoZSBhdWNoIEJlZmVobCAnZW1haWwnKS4KKworICAgIFVtIGVpbmVuIHNvbGNoZW4gTmFjaHNlbmRlYXVmdHJhZyB6dSBzdGVsbGVuLCBnZWh0IG1hbiB6dSBpcmdlbmRlaW5lbQorICAgIFBvc3RhbXQgbWl0IFBha2V0c2NoYWx0ZXIuIEdlbmF1ZXJlcyBlcnphZWhsdCBkZXIgUG9zdGJlYW10ZSBhdWYKKyAgICBOYWNoZnJhZ2UuCisKKyAgICBNYW4gc29sbHRlIHNpY2ggZGllc2VzIGFiZXIgZ3V0IHVlYmVybGVnZW46IGhhdCBlaW4gQ2hhcmFrdGVyIGtlaW5lCisgICAgZ3VlbHRpZ2UgZU1haWwtQWRyZXNzZSBlaW5nZXRyYWdlbiwgaXN0IGRhcyBadXJ1ZWNrc2V0emVuIGRlcyBQYXNzd29ydGVzCisgICAgZXJoZWJsaWNoIGtvbXBsaXppZXJ0ZXIgb2RlciBzb2dhciB1bm1vZWdsaWNoLgorCisgICAgRXMgaXN0IE5JQ0hUIG1vZWdsaWNoLCBlaW5lIGVNYWlsLUFkcmVzc2UgYXVzc2VyaGFsYiBkZXMgTW9yZ2VuZ3JhdWVucworICAgIGFuenVnZWJlbi4KKworIDcuIFBha2V0cG9zdAorICAgIEltIE1vcmdlbkdyYXVlbiBnaWJ0IGVzIGVpbmUgUGFrZXRwb3N0LiBJbmZvcm1hdGlvbmVuIGVydGVpbHQgZGVyCisgICAgUG9zdGJlYW10ZSBhbiBqZWRlbSBQYWtldHNjaGFsdGVyLgorCisgOC4gQWJzZW5kZXIgaWdub3JpZXJlbgorICAgIFNvbGx0ZSBtYW4gdm9uIGVpbmVtIGJlc3RpbW10ZW4gQWJzZW5kZXIgdWViZXJoYXVwdCBrZWluZSBQb3N0IGVtcGZhbmdlbgorICAgIHdvbGxlbiwgc28ga2FubiBkaWVzIGR1cmNoICJpZ25vcmllcmUgbmFtZS5tYWlsIiBlcnJlaWNodCB3ZXJkZW4sIHdvYmVpCisgICAgIm5hbWUiIG5hdHVlcmxpY2ggZHVyY2ggZGVuIGtvbmtyZXRlbiBTcGllbGVybmFtZW4genUgZXJzZXR6ZW4gaXN0LgorCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworKGMpIDE5OTMtMTk5NiBNb3JnZW5ncmF1ZW4gUG9zdHZlcndhbHR1bmcKK0FidGVpbHVuZyBUZWNobmlrLCBMb2NvIChBYnRlaWx1bmdzbGVpdGVyKQorQW5yZWd1bmdlbiwgRmVobGVybWVsZHVuZ2VuIHVuZCBGcmFnZW4gYml0dGUgZGlyZWt0IGFuIExvY28sCitGbGFtZXMgZGlyZWt0IG5hY2ggL2Rldi9udWxsLgorCitMRVRaVEUgQWVOREVSVU5HOgorICAgMjguMTAuMjAxMywgWmVzc3RyYQorCmRpZmYgLS1naXQgYS9kb2MvaGVscC9yYXNzZW4gYi9kb2MvaGVscC9yYXNzZW4KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNDVlNGVmNQotLS0gL2Rldi9udWxsCisrKyBiL2RvYy9oZWxwL3Jhc3NlbgpAQCAtMCwwICsxLDEwMiBAQAorRElFIFJBU1NFTiBERVMgTU9SR0VOR1JBVUVOCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworV2VubiBEdSBqZXR6dCBuaWNodCBnZXJhZGUgZWluIEdhc3QgYmlzdCwga2FubnN0IER1IERlaW5lIFJhc3NlIG9obmVoaW4gbmljaHQKK21laHIgdmVyYWVuZGVybi4gRGVyIGZvbGdlbmRlIFVlYmVyYmxpY2sgaXN0IHZpZWxsZWljaHQgdHJvdHpkZW0gdm9uIE51dHplbi4KKworRXIgYmVpbmhhbHRldCBnZW5hdSBkaWUgSGlud2Vpc2UsIGRpZSBhdWNoIGJlaSBkZXIgQ2hhcmFrdGVyZ2VuZXJpZXJ1bmcKK2FuZ2V6ZWlndCB3ZXJkZW4uCisKK01FTlNDSEVOCistLS0tLS0tLQorCitEaWUgU3RhZXJrZSBkZXMgTWVuc2NoZW4gaXN0IHNlaW5lIFZpZWxzZWl0aWdrZWl0LgorRGVyIE1lbnNjaCBrYW5uIHp3YXIgbmljaHRzIGJlc29uZGVycyBndXQgLSBkYWZ1ZXIgYWJlciBlaWdlbnRsaWNoIGFsbGVzLgorCitEVU5LRUxFTEZFTgorLS0tLS0tLS0tLS0KKworRGFzIFZvbGsgZGVyIER1bmtlbGVsZmVuIGxlYnQgaW4gZWluZXIgZ3Jvc3NlbiBIb2VobGVuc3RhZHQgZ3V0IHZlcnN0ZWNrdAoraGludGVyIGVpbmVtIFdhc3NlcmZhbGwuIFVlYmVyIGthdW0gZWluIGFuZGVyZXMgVm9sayBnaWJ0IGVzIHNvdmllbGUKK1ZvcnVydGVpbGUgd2llIHVlYmVyIGRpZSBEdW5rZWxlbGZlbiwgdW5kIHNvIHdlcmRlbiBzaWUgdm9uIGFsbGVuIG1pc3N0cmF1aXNjaAorYmVhZXVndCBvZGVyIHNvZ2FyIGJla2FlbXBmdC4gSW4gZGllc2VtIEthbXBmLCBpbnNiZXNvbmRlcmUgZ2VnZW4gZGllIEVsZmVuLAorc2luZCBzaWUgdm9lbGxpZyBhdWYgc2ljaCBhbGxlaW4gZ2VzdGVsbHQsIHVuZCBzbyBoYXQgc2ljaCBlaW5lIG1laHIgb2RlcgorbWluZGVyIGF1dGFya2UgR2VzZWxsc2NoYWZ0IGVudHdpY2tlbHQuIERpZSBEdW5rZWxlbGZlbiBoYWJlbiBlaW5lIGVpZ2VuZQorS3VsdHVyIHVuZCBlaW5lIGVpZ2VuZSBHb2V0dGluLCBkZXIgc2llIGh1bGRpZ2VuLiBXaWUgYXVjaCBkaWUgRWxmZW4KK3ZlcmZ1ZWdlbiBzaWUgdWViZXIgYXVzc2Vyb3JkZW5saWNoIGdyb3NzZSBtYWdpc2NoZSBGYWVoaWdrZWl0ZW4sIGF1Y2ggd2Vubgorc2llIHNpY2ggbWVociBhdWYgZGllIHNjaHdhcnplIFNlaXRlIGRlciBNYWdpZSBzcGV6aWFsaXNpZXJ0IGhhYmVuLgorCitaV0VSR0UKKy0tLS0tLQorCitad2VyZ2Ugc2luZCBrbGVpbmUgYWJlciBrcmFlZnRpZ2UgR2ViaXJnc2Jld29obmVyLCBuaWNodCBzZWhyIGdlc3ByYWVjaGlnLAorbGVpY2h0IGVyenVlcm50LCBhYmVyIGVpbmUgc2NobGFna3JhZWZ0aWdlIFVudGVyc3R1ZXR6dW5nIGZ1ZXIgaWhyZSBGcmV1bmRlLgorSWhyIE11dCB1bmQgaWhyZSBTdGFuZGZlc3RpZ2tlaXQgaXN0IHdlaXQgdW5kIGJyZWl0IGJlcnVlaG10LCBhdWNoIGlocgorR2VzY2hpY2sgaW0gVW1nYW5nIG1pdCBad2VyZ2Vud2FmZmVuIHZlcmxlaWh0IGlobmVuIHp1c2FldHpsaWNoZSBLcmFmdC4KK0xlaWRlciBzaW5kIFp3ZXJnZSBuaWNodCBhbGx6dSBzY2hsYXUsIHNpZSB2ZXJsYXNzZW4gc2ljaCBsaWViZXIgYXVmCitpaHJlIEtyYWZ0IGFscyBhdWYgaWhyIEdlaGlybi4KKworR09CTElOUworLS0tLS0tLQorR29ibGlucyBzaW5kIHdpbnppZ2UsIGdydWVuaGFldXRpZ2UgV2VzZW4sIHNvZ2FyIG5vY2gga2xlaW5lciBhbHMgSG9iYml0cy4KK0FuIGlocmVuIHp1IGRpY2sgZ2VyYXRlbmVuIEtvZXBmY2hlbiBiZWZpbmRlbiBzaWNoIGxhbmdlLCBzZWx0ZW4gcmVnbG9zZSwKK09ocmVuIHVuZCBlaW5lIGdyb3NzZSwga3J1bW1lIE5hc2UuIElocmUga2xlaW5lIFN0YXR1ciBzb2xsdGUgamVkb2NoIG5pY2h0Cit0YWV1c2NoZW4sIGRlbm4gaWhyZSBmZWhsZW5kZSBLcmFmdCBtYWNoZW4gc2llIG1pdCBHZXNjaHdpbmRpZ2tlaXQsCitQcmFlemlzaW9uIHVuZCBuaWNodCB6dWxldHp0IGlocmVyIHVuYmVzdHJpdHRlbmVuIFJ1Y2hsb3NpZ2tlaXQgYWxsZXdlaWwKK3dldHQuCitPYndvaGwgZnVlciBzaWUgUGx1ZW5kZXJuLCBsYXV0ZXMgSGVydW1icnVlbGxlbiB1bmQgZGllIGdlbWVpbnN0ZW4gU3RyZWljaGUKK3NwaWVsZW4genVtIEFsbHRhZyBnZWhvZXJlbiwgd3VlcmRlIHNpZSBuaWVtYW5kIGFscyBib2VzYXJ0aWcgYmV6ZWljaG5lbi4KK0Rlbm4gR29ibGlucyBzaW5kIHZpZWxlcywgYWJlciBzaWNoZXJsaWNoIG5pY2h0IGRpZSBpbnRlbGxpZ2VudGVzdGVuCitLcmVhdHVyZW4uIER1cmNoIGlocmVuIHphZWhlbiBXaWxsZW4gdW5kIGRpZSBkaWNrZSwgbGVkZXJuZSBIYXV0IHNpbmQgc2llCithdXNzZXJnZXdvZWhubGljaCB3aWRlcnN0YW5kc2ZhZWhpZywgdW5kLCBzb2Zlcm4gZnVua2VsbmRlIEJldXRlIHdpbmt0LCBmdWVyCitqZWRlcyBBYmVudGV1ZXIgenUgaGFiZW4uCisKK0VMRkVOCistLS0tLQorCitBbHMgRWxmZW4gYmV6ZWljaG5ldCBtYW4gaW4gZGVyIFJlZ2VsIGplbmUgaGFnZXJlbiBIaW50ZXJ3YWVsZGxlciwgZGVyZW4KK2RlbW9uc3RyYXRpdmVzIE5hdHVyZ2VoYWJlIGluIGRlciBSZWdlbCBudXIgZHVyY2ggaWhyZSBMaWViZSB6dSBraXRzY2hpZ2VuCitHZWRpY2h0ZW4gdW5kIGF1c3NjaHdlaWZlbmRlbSBHZXNjaGxlY2h0c2xlYmVuIGluIGRlbiBTY2hhdHRlbiBnZXN0ZWxsdCB3aXJkLgorRWluZW4gRWxmIGthbm4gbWFuIGltIGFsbGdlbWVpbmVuIG5pY2h0IG51ciBhbiBhZXVzc2VyZW4gTWlzc2JpbGR1bmdlbgorKHNwaXR6ZSBPaHJlbiwgc3BpbmRlbGR1ZXJyZSBHZXN0YWx0LCBibG9uZGUgSGFhcmUpIGVya2VubmVuLCBzb25kZXJuIGF1Y2gKK2FuIHNlaW5lciBhdWZkcmluZ2xpY2hlbiBBcnQsIHVlYmVyIGplZGVuIHVuZCBhbGxlcyBoZW1tdW5nc2xvcyBpbnMgR3J1ZW5lCitsb3N6dXBoaWxvc29waGllcmVuLgorCitGRUxJTkVOCistLS0tLS0tCisKK0ZlbGluZW4gc2luZCBhdWZyZWNodCBnZWhlbmRlIEthdHplbndlc2VuLgorSWhyZSBIZWltYXQgaXN0IGRlciBEc2NodW5nZWwuIEthdW0gamVtYW5kIGR1ZXJmdGUgc2ljaCBkb3J0IGJlc3NlcgorenVyZWNodGZpbmRlbiBhbHMgc2llLiBCZWRpbmd0IGR1cmNoIGRpZXNlIFVtZ2VidW5nIGhhYmVuIHNpZSBpbSBMYXVmZSBkZXIKK1plaXQgZWluZSBWb3JsaWViZSBmdWVyIGVsZWdhbnRlIEhvZWx6ZXIgdW5kIGZ1bmtlbG5kZSBFZGVsc3RlaW5lIGVudHdpY2tlbHQuCitTaWUgc2luZCB6d2FyIG5pY2h0IHNvICdyYWZmZ2llcmlnJyB3aWUgWndlcmdlLCBhYmVyIGRlbm5vY2ggc29sbHRlIG1hbiBiZXNzZXIKK25pY2h0IHZlcnN1Y2hlbiwgZWluZW0gRmVsaW5lbiBlaW5lbiBFZGVsc3RlaW4gd2VnenVuZWhtZW4uIFNpZSBiZW51dHplbiBkaWUKK0VkZWxzdGVpbmUgc2VociBnZXJuZSwgdW0gc2ljaCBkYW1pdCB6dSBzY2htdWVja2VuLiBGZWxpbmVuIGJldHJlaWJlbiBzb2dhcgorZWluZW4gcmVnZWxyZWNodGVuIEtvZXJwZXJrdWx0LCBpbnNiZXNvbmRlcmUgd2VubiBlcyBkYXJ1bSBnZWh0LCBkYXMgRmVsbCBvZGVyCitkaWUgS3JhbGxlbiB6dSBmYWVyYmVuLiBFZGVsc3RlaW5lIGtvbW1lbiBkYSBhbHMgQWNjZXNzb2lyZXMgZ2VyYWRlIHJlY2h0LgorQXVjaCBpbSBLYW1wZiBnZWdlbiBlaW5lbiBGZWxpbmVuIHNvbGx0ZSBtYW4gc2VociB2b3JzaWNodGlnIHNlaW4sIGRhIEZlbGluZW4KK2locmUgZ2VyaW5nZSBBdXNkYXVlciBkdXJjaCBlaW5lIGhvaGUgR2VzY2h3aW5kaWdrZWl0IHNvd2llIEdlc2NoaWNrIHVuZAorSW50ZWxsaWdlbnogd2V0dG1hY2hlbi4gQXVjaCBkaWUgU3BpdHplbiBLcmFsbGVuIHNpbmQgZGEgbmljaHQgenUgdmVyYWNodGVuCit1bmQgc28gbWFuY2hlciBHZWduZXIgbXVzc3RlIHNjaG9uIGFscyBFcnNhdHogZnVlciBlaW5lbiBLcmF0emJhdW0gaGVyaGFsdGVuLgorCitIT0JCSVRTCistLS0tLS0tCisKK0hvYmJpdHMgc2luZCBrbGVpbmUgV2VzZW4sIGRpZSBhbSBlaGVzdGVuIGRlbiBNZW5zY2hlbiBhZWhuZWxuLgorU2llIHplaWNobmVuIHNpY2ggdHJvdHogSWhyZXIgR3JvZXNzZSBkdXJjaCBpaHJlbiBNdXQgdW5kIFN0YW5kZmVzdGlna2VpdCBhdXMuCitPYndvaGwgc2llIHZpZWwgbGllYmVyIHp1aGF1c2Ugdm9ybSB3YXJtZW4gS2FtaW4gc2l0emVuLCBzaW5kIHNpZSBpbW1lcgorZnVlciBlaW4gQWJlbnRldWVyIHp1IGhhYmVuLgorCitPUktTCistLS0tCisKK09ya3Mgc2luZCBodW1hbm9pZGUgV2VzZW4sIGFsbGVyZGluZ3MgZXR3YXMga2xlaW5lciBhbHMgTWVuc2NoZW4uIFZvbiBOYXR1cgorYXVzIHNpbmQgc2llIGF1c2dlc3Byb2NoZW4gaGFlc3NsaWNoIGFuenVzZWhlbiBtaXQgaWhyZXJlIGR1bmtsZW4gSGF1dCwgZGllCitmYXN0IGlucyB6d2VyZ2VuYXJ0aWctZHJlY2tpZ2UgZ2VodC4gQXVmZ3J1bmQgaWhyZXIgY2hhcmFrdGVybGljaGVuIE5laWd1bmcKK3p1IEdld2FsdGJlcmVpdHNjaGFmdCB3ZXJkZW4gc2llIGdlcm5lIGFscyB1bnppdmlsaXNpZXJ0IGFuZ2VzZWhlbiwgaGFiZW4KK3NpY2ggamVkb2NoIGFscyB1bmVyc2Nocm9ja2VuZSwgcmlzaWtvYmVyZWl0ZSBLYWVtcGZlciBlaW5lbiBOYW1lbiBnZW1hY2h0LgorCitMZXR6dGUgQWVuZGVydW5nOiAyMC4wNS4yMDE1LCBBbWFyeWxsaXMKKworCisKZGlmZiAtLWdpdCBhL2RvYy9oZWxwL3JlYm9vdCBiL2RvYy9oZWxwL3JlYm9vdApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5lNmYxODNiCi0tLSAvZGV2L251bGwKKysrIGIvZG9jL2hlbHAvcmVib290CkBAIC0wLDAgKzEsNTcgQEAKK1JlYm9vdHMgdW5kIGlocmUgRm9sZ2VuCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICAgIAorICAgIEJlaSBlaW5lbSAnUmVib290JyB3aXJkIGRhcyBNb3JnZW5HcmF1ZW4gaGVydW50ZXJnZWZhaHJlbiwgZC5oLgorICAgIGRhcyBha3R1ZWxsZSBTcGllbCB3aXJkIGJlZW5kZXQgdW5kLCB3ZW5uIGFsbGVzIGd1dCBnZWh0LCBlaW4gbmV1ZXMgCisgICAgU3BpZWwgZ2VzdGFydGV0LiBEaWVzIGlzdCBtYW5jaG1hbCBub2V0aWcsIHdlbm4gZ3JvZXNzZXJlIEFlbmRlcnVuZ2VuIAorICAgIGFtIE1vcmdlbkdyYXVlbiB2b3JnZW5vbW1lbiB3dXJkZW4uCisgICAgCisgICAgRGFiZWkgZ2VoZW4gaW4gZGVyIFJlZ2VsIGFsbGUgT2JqZWt0ZSAoV2FmZmVuLCBSdWVzdHVuZ2VuIGV0Yy4pLCBkaWUgCisgICAgaW0gVW1sYXVmIHdhcmVuLCB2ZXJsb3Jlbi4gTmFjaCBlaW5lbSAnUmVib290JyBzdGVoc3QgRHUgYWxzbyBlcnN0bWFsIAorICAgIHppZW1saWNoIG5hY2t0IGluIGRlciBHZWdlbmQgaGVydW0gOikKKyAgICAKKyAgICBFaW5lIEF1c25haG1lIGJpbGRlbiBqZWRvY2ggc29nZW5hbm50ZSAnQXV0b2xvYWQtT2JqZWt0ZScuIE9mdCBzaW5kCisgICAgZGllcyBPYmpla3RlLCBkaWUgbWFuIGFscyBCZWxvaG51bmcgZnVlciBiZXN0YW5kZW5lIEFiZW50ZXVlciBlcmhhbHRlbgorICAgIGhhdCwgR2lsZGVub2JqZWt0ZSwgTXVlbnplbiB1bmQgZWluaWdlcyBtZWhyLiBTaWUgdWViZXJsZWJlbiBzZWxic3QKKyAgICBlaW5lbiAnUmVib290JyB1bmQgYmxlaWJlbiBEaXIgZXJoYWx0ZW4uIFdhcyBEdSBhbiAnQXV0b2xvYWQtT2JqZWt0ZW4nCisgICAgYmVpIERpciB0cmFlZ3N0LCBrYW5uc3QgRHUgbWl0IGRlbSBCZWZlaGwgJ2kgK2EnIGVyZmFocmVuIChTaWVoZSBoaWVyenU6CisgICAgaGlsZmUgaW52KS4KKyAgICAKKyAgICBGdWVyIE9iamVrdGUsIGRpZSBEdSBkdXJjaCBlaW5lbiAnUmVib290JyB2ZXJsb3JlbiBoYXN0LCBiZWtvbW1zdAorICAgIER1IGVpbmUgZmluYW56aWVsbGUgRW50c2NoYWVkaWd1bmcuCisgCisgICAgRWluICdSZWJvb3QnIGhhdCBqZWRvY2gga2VpbmUgQXVzd2lya3VuZ2VuIGF1ZiBEZWluZSBHaWxkZW5mYWVoaWdrZWl0ZW4sCisgICAgZGllIEhvZWhlIERlaW5lciBFcmZhaHJ1bmdzLSBvZGVyIEFiZW50ZXVlcnB1bmt0ZSB1LmFlLiwgZXIgZnVlZ3QgRGlyCisgICAgbGVkaWdsaWNoIGVpbmVuIHVud2VzZW50bGljaGVuIG1hdGVyaWVsbGVuIFNjaGFkZW4genUuCisKK0FybWFnZWRkb24KKy0tLS0tLS0tLS0KKyAgICBXaXJkIGVpbiBSZWJvb3Qgbm9ldGlnLCBpc3QgZGFzIG1laXN0IGtlaW5lIHBsb2V0emxpY2hlIEFuZ2VsZWdlbmhlaXQsCisgICAgc29uZGVybiB2b24gbGFuZ2VyIEhhbmQgdm9yYmVyZWl0ZXQuIERhaGVyIGthbm4gZGVyIFJlYm9vdCBhdWNoIGVpbmlnZQorICAgIFRhZ2UgenV2b3IgYW5nZWt1ZW5kaWd0IHdlcmRlbiwgc28gZGFzcyBTcGllbGVyIHNpY2ggYXVmIGlobiBlaW5zdGVsbGVuCisgICAga29lbm5lbi4gRGllc2UgQXVmZ2FiZSB1ZWJlcm5pbW10IEFybWFnZWRkb24gYWxzIEhlcm9sZCBkZXMgV2VsdHVudGVyLQorICAgIGdhbmdzLiBEaWVzZXIgcnVmdCByZWdlbG1hZXNzaWcgYXVzLCB3aWUgbGFuZ2UgZXMgbm9jaCBiaXMgenVtIFJlYm9vdCAKKyAgICBpc3QgdW5kIHNvcmd0IGF1Y2ggc29uc3QgZnVlciBlaW5lIHBhc3NlbmRlLCB1bmhlaW1saWNoZSwgYWxzbyBkZW0gV2VsdC0KKyAgICB1bnRlcmdhbmcgYW5nZW1lc3NlbmUgU3RpbW11bmcuCisKKyAgICBXZW5uIER1IG5pY2h0IGR1cmNoIEFybWFnZWRkb25zIE1lbGR1bmdlbiBiZWxhZXN0aWd0IHdlcmRlbiBtb2VjaHRlc3QsIAorICAgIGthbm5zdCBEdSBkaWVzIGF1ZiB6d2VpZXJsZWkgQXJ0ZW4gdHVuOgorICAgIAorICAgIEVudHdlZGVyIGR1cmNoICdpZ25vcmllcmUgYXJtYWdlZGRvbicuIER1IHdpcnN0IGFiIHNvZm9ydCBudXIgbm9jaCBkYXMgCisgICAgYWJzb2x1dGUgTWluaW11bSBhbiBNZWxkdW5nZW4gdm9uIEFybWFnZWRkb24gYmVrb21tZW4uIFdlbHR1bnRlcmdhbmdzLQorICAgIHN0aW1tdW5nIGdpYnQgZXMgZGFubiBhYmVyIGF1Y2ggbmljaHQgbWVoci4KKworICAgIE9kZXIgZHVyY2ggJ3RlaWxlIGFybWFnZWRkb24gbWl0IHJ1aGUnLiBEYW1pdCBicmluZ3N0IER1IGRpZXNlbiBlaW5lbgorICAgIEFybWFnZWRkb24genVtIHNjaHdlaWdlbi4gV2lyZCBkaWVzZXIgYWJlciBhYmdlYnJvY2hlbiwgb2RlciBrb21tdCBlcworICAgIGRvY2ggbWFsIHp1bSBSZWJvb3QsIGlzdCBlaW4gbmV1ZXIgQXJtYWdlZGRvbiByZWRzZWVsaWcgd2llIGdlaGFidC4gCisKKyAgICBBdWYgZGllc2UgV2Vpc2UgdmVycGFzc3QgRHUga2VpbmVuIEFybWFnZWRkb24sIHdpcnN0IGFiZXIgYXVjaCBuaWNodCAKKyAgICBkdXJjaCBzdGFlbmRpZ2VzIGdlc2Nyb2xsZSBnZW5lcnZ0LiBGYWxscyBEdSBkb2NoIHdpZWRlciBnZW5lcnZ0IHdlcmRlbgorICAgIG1vZWNodGVzdCwgcmVpY2h0IGRpZSBXaWVkZXJob2x1bmcgZGVzIG9iZW4gZ2VuYW5udGVuIHRtLgorCisgICAgCisgU0lFSEUgQVVDSDoKKyAgICBpbnYsIGlnbm9yaWVyZSwgY3Jhc2gsIGVyem1hZ2llcgorCisgTEVUWlRFIEFlTkRFUlVORzoKKyAgICBNb24gQXByIDA1IDIxOjMwOjAwIDIwMDQgdm9uIFZhbmlvbi4KZGlmZiAtLWdpdCBhL2RvYy9oZWxwL3JlZ2VsbiBiL2RvYy9oZWxwL3JlZ2VsbgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41YTUxMzZkCi0tLSAvZGV2L251bGwKKysrIGIvZG9jL2hlbHAvcmVnZWxuCkBAIC0wLDAgKzEsMjMyIEBACitFaW4ga2xlaW5lciBMZWl0ZmFkZW4genVtIFNwaWVsIGltIE1vcmdlbkdyYXVlbgorPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CisKKyAgRGFzIE1vcmdlbkdyYXVlbiBpc3QgZWluIFNwaWVsLiBXaWUgYmVpIGplZGVtIFNwaWVsIG11ZXNzZW4sIHVtIGRlbgorICBTcGllbHNwYXNzIG1vZWdsaWNoc3QgZnVlciBhbGxlIHp1IGVyaGFsdGVuLCBlaW4gcGFhciB3ZW5pZ2UgUmVnZWxuCisgIGJlYWNodGV0IHdlcmRlbi4gRGllc2UgUmVnZWxuIGdlbHRlbiBzb3dvaGwgZnVlciBTcGllbGVyIGFscyBhdWNoCisgIGZ1ZXIgTWFnaWVyLgorCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoKKworICAgIERpZSB3aWNodGlnc3RlIFJlZ2VsIGJldHJpZmZ0IGRhcyBBbmdyZWlmZW4gdW5kIFRvZXRlbiBhbmRlcmVyCisgICAgU3BpZWxlci4KKworICAgIEVTIElTVCBTVFJJS1QgVU5URVJTQUdUIEFOREVSRSBTUElFTEVSIEFOWlVHUkVJRkVOIE9ERVIgWlUgVE9FVEVOLgorCisgICAgQXVjaCBkYXMgYWJzaWNodGxpY2hlIGluZGlyZWt0ZSBUb2V0ZW4gdm9uIFNwaWVsZXJuIGR1cmNoCisgICAgR2lsZGVuZmFlaGlna2VpdGVuLCBzcGV6aWVsbGUgT2JqZWt0ZSBvZGVyIGFlaG5saWNoZXMgZmFlbGx0IHVudGVyCisgICAgZGllc2UgUmVnZWwuCisKKyAgICBTb2xsdGUgbWFuIGVpbmVuIFNwaWVsZXIgdW1nZWJyYWNodCBoYWJlbiwgdHJldGVuIHNvZm9ydAorICAgIEJlc2NocmFlbmt1bmdlbiBpbiBLcmFmdCwgZGllIG51ciBkdXJjaCBlaW5lbiBFcnptYWdpZXIgd2llZGVyCisgICAgYXVmZ2Vob2JlbiB3ZXJkZW4ga29lbm5lbi4KKworICAgIFdpbGwgbWFuIHNpY2ggZGVubm9jaCBtaXQgYW5kZXJlbiBTcGllbGVybiBtZXNzZW4sIHNvIGV4aXN0aWVyZW4KKyAgICBleHRyYSBkYWZ1ZXIgZWluZ2VyaWNodGV0ZSBHZWJpZXRlLCB3aWUgenVtIEJlaXNwaWVsIGRpZSBBcmVuYSBpbgorICAgIGRlciBXdWVzdGUsIGluIGRlbmVuIG1hbiBzaWNoIGdlZ2Vuc2VpdGlnIGJla2FlbXBmZW4ga2Fubi4KKworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqCisKKyAgICBIYXQgbWFuIG1pdCBzZWluZW0gQ2hhcmFrdGVyIGVpbmUgWmVpdCBsYW5nIGdlc3BpZWx0LCBzbyBlbnRzdGVodAorICAgIG9mdCBkZXIgV3Vuc2NoLCBlaW5tYWwgZWluZSBhbmRlcmUgUmFzc2UsIEdpbGRlIG9kZXIgZWluZmFjaCBlaW5lbgorICAgIGFuZGVyZW4gUm9sbGVuc3BpZWxjaGFyYWt0ZXIgenUgc3BpZWxlbi4KKyAgICBTZWluZW4gYmlzaGVyaWdlbiBDaGFyYWt0ZXIga2FubiBvZGVyIG1vZWNodGUgbWFuIGRhenUgYWxsZXJkaW5ncworICAgIG5pY2h0IGJlbnV0emVuLgorICAgIERhaGVyIGthbm4gamVkZXIgU3BpZWxlciB3ZWl0ZXJlIENoYXJha3RlcmUgYW5sZWdlbi4KKworICAgIERpZXNlIG11ZXNzZW4gZGFubiBqZWRvY2ggYWxzIHNvZ2VuYW5udGVyIFp3ZWl0c3BpZWxlciBkZXMgZXJzdGVuCisgICAgQ2hhcmFrdGVycyBtYXJraWVydCB3ZXJkZW4uCisgICAgRGllc2UgTWFya2llcnVuZyBrYW5uIG1hbiB6dW0gQmVpc3BpZWwgYmVpbSBTY2htaWVkIGluIGRlcgorICAgIFp3ZXJnZW5zdGFkdCBvZGVyIGJlaW0gRG9yZnNjaHJlaWJlciBpbSBFbGZlbmRvcmYgZXJoYWx0ZW4uCisgICAgRGllc2UgTWFya2llcnVuZyBrYW5uIG1hbiBhdWNoIHZvciBhbmRlcmVuIFNwaWVsZXJuIHZlcmJlcmdlbi4KKworICAgIE1hbiBrYW5uIGJlbGllYmlnIHZpZWxlIHNlaW5lciBDaGFyYWt0ZXJlIGdsZWljaHplaXRpZyBlaW5sb2dnZW4sCisgICAgZG9jaCBpc3QgaGllcmJlaSBkYXJhdWYgenUgYWNodGVuLCBkYXNzIG51ciB6d2VpIGRpZXNlciBDaGFyYWt0ZXJlCisgICAgYWt0aXYgYW0gU3BpZWxnZXNjaGVoZW4sIGRhcyBpc3QgYWxsZXMgd2FzIHVlYmVyIHJlaW5lCisgICAgS29tbXVuaWthdGlvbiBoaW5hdXNnZWh0LCB0ZWlsbmVobWVuLgorICAgIERpZSBhbmRlcmVuIENoYXJha3RlcmUgbXVlc3NlbiBzaWNoIGF1ZiBkaWUgS29tbXVuaWthdGlvbgorICAgIGJlc2NocmFlbmtlbi4KKworICAgIFdlaXRlcmUgRWluc2NocmFlbmt1bmdlbiBleGlzdGllcmVuIGZ1ZXIgTWFnaWVyLgorCisgICAgRWluIE1hZ2llciBkYXJmIG5pY2h0IGdsZWljaHplaXRpZyBtaXQgc2VpbmVuIFNwaWVsZXJjaGFyYWt0ZXJlbgorICAgIGVpbmdlbG9nZ3Qgc2VpbiwgZGllc2UgbWFuaXB1bGllcmVuIG9kZXIgZnVlciBzZWluZSBad2VpdHNwaWVsZXIKKyAgICBmcmVtZGVuIENvZGUgYW5hbHlzaWVyZW4uCisKKyAgICBEYXp1IGdpYnQgZXMgbnVyIGVpbiBBdXNuYWhtZTogWnVtIFp3ZWNrZSBkZXIgWndlaXRpZW1hcmtpZXJ1bmcKKyAgICBkYXJmIGRlciBNYWdpZXIgc2ljaCBnbGVpY2h6ZWl0aWcgbWl0IGRlbSBTcGllbGVyY2hhcmFrdGVyCisgICAgZWlubG9nZ2VuLgorCisgICAgRGVyIE1hZ2llci1ad2VpdHNwaWVsZXIgc29sbHRlIGRhcmF1ZiBhY2h0ZW4sIGFuZGVyZW4gU3BpZWxlcm4KKyAgICBuaWNodCBkdXJjaCBzZWluZW4gZXZlbnR1ZWxsZW4gV2lzc2Vuc3ZvcnRlaWwgYmVpIFF1ZXN0ZW4genUKKyAgICBoZWxmZW4uCisKKyAgICBFaW4gTWFnaWVyLVp3ZWl0c3BpZWxlciBzb2xsdGUgd2VpdGVyaGluIGRhcmF1ZiBhY2h0ZW4sIGFuZGVyZQorICAgIFNwaWVsZXIgbmljaHQgaW4gaWhyZW0gU3BpZWwgenUgYmVoaW5kZXJuLiBEaWVzIGtvZW5udGUgenVtCisgICAgQmVpc3BpZWwgZHVyY2ggQmxvY2tpZXJlbiB2b24gUXVlc3RzIG9kZXIgYmVzdGltbXRlciBsaW1pdGllcnRlcgorICAgIEdpbGRlbnJhZW5nZSBnZXNjaGVoZW4uCisgICAgRGVuIFByb2dyYW1taWVyZXJuIHZvbiBRdWVzdHMgb2RlciBHaWxkZW4gc3RlaHQgZXMgbmF0dWVybGljaCBmcmVpLAorICAgIGhpZXIgZWluZSBlaWdlbmUgVm9yc29yZ2UgenUgdHJlZmZlbi4KKworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqCisKKyAgICBXZXIgaW0gTW9yZ2VuR3JhdWVuIHNwaWVsdCwgZGVyIGlzdCBkZXMgb2VmdGVyZW4gYXVmIGRpZSBIaWxmZQorICAgIEFuZGVyZXIgYW5nZXdpZXNlbi4gRWluZSBGb3JtIGRlciBIaWxmZSBpc3QgZXMsIGVpbmVuIENoYXJha3RlcgorICAgIGF1c3p1bGVpaGVuIG9kZXIgYXVzZ2VsaWVoZW4genUgYmVrb21tZW4uCisgICAgVW0gc3ByYWNobGljaCBiZWdydWVuZGV0ZSBNaXNzdmVyc3RhZW5kbmlzc2UgaW0gd2VpdGVyZW4genUKKyAgICB2ZXJtZWlkZW4sIGhpZXIga3VyeiBmb2xnZW5kZSBOb21lbmtsYXR1cjoKKworICAgICAgRWluIFNwaWVsZXIsIGRlciBlaW5lbSBhbmRlcmVuIFNwaWVsZXIgZWluZW4gQ2hhcmFrdGVyIHp1cgorICAgICAgVmVyZnVlZ3VuZyBzdGVsbHQsIHdpcmQgYWxzIFZlcmxlaWhlciBiZXplaWNobmV0LgorCisgICAgICBFaW4gU3BpZWxlciwgZGVyIGVpbmVuIENoYXJha3RlciBlaW5lcyBhbmRlcmVuIFNwaWVsZXJzIG51dHp0LAorICAgICAgd2lyZCBhbHMgTnV0emVyIGJlemVpY2huZXQuCisKKyAgICBEYXMgQXVzbGVpaGVuIHZvbiBDaGFyYWt0ZXJlbiBpc3QgbWl0IGdld2lzc2VuIFJhbmRiZWRpbmd1bmdlbgorICAgIGVybGF1YnQuCisKKyAgICBFaW4gYXVzZ2VsaWVoZW5lciBDaGFyYWt0ZXIgd2lyZCBhbHMgYWt0aXZlciBad2VpdHNwaWVsZXIgZGVzCisgICAgTnV0emVycyBiZXRyYWNodGV0IHVuZCBpc3Qgc29taXQgZGVuIFJlZ2VsdW5nZW4gZnVlciBad2VpdHNwaWVsZXIKKyAgICB1bnRlcndvcmZlbi4KKworICAgIEJlc29uZGVycyB6dSBiZWFjaHRlbiBpc3QsIGRhc3MgZGVyIGF1c2dlbGllaGVuZSBDaGFyYWt0ZXIgbmljaHQKKyAgICBtaXQgZGVtIE51dHplciwgb2RlciBlaW5lbSBad2VpdHNwaWVsZXIgZGVzIE51dHplcnMsIGluIGVpbiBUZWFtCisgICAgZGFyZi4KKworICAgIFNvd29obCBkZXIgTnV0emVyIGRlcyBhdXNnZWxpZWhlbmVuIFNwaWVsZXJzIGFscyBhdWNoIFZlcmxlaWhlciwKKyAgICBrb2VubmVuIGZ1ZXIgZGllIEhhbmRsdW5nZW4gZGVzIGF1c2dlbGllaGVuIENoYXJha3RlcnMKKyAgICB2ZXJhbnR3b3J0bGljaCBnZW1hY2h0IHdlcmRlbi4KKworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqCisKKyAgICBXZXIgbWl0IGVpbmVtIENoYXJha3RlciBBdWZnYWJlbiBnZWxvZXN0IGhhdCBvZGVyIHp1IGJlc3RpbW10ZW4KKyAgICBWZXJtdXR1bmdlbiB1ZWJlciBGb3JzY2hlcnB1bmt0ZSBnZWxhbmd0IGlzdCwgZGVyIG5vdGllcnQgZGllcyBvZnQsCisgICAgdW0gYmVpIHNwYWV0ZXJlbiBDaGFyYWt0ZXJlbiBhdWYgZGllc2UgSW5mb3JtYXRpb25lbiB6dWdyZWlmZW4genUKKyAgICBrb2VubmVuLgorCisgICAgU29sY2hlIEZvcnNjaGVycHVua3RsaXN0ZW4gb2RlciBLb21wbGV0dGxvZXN1bmdlbiBzaW5kIHp1bQorICAgIEVpZ2VuZ2VicmF1Y2gsIGRhcyBoZWlzc3QgZnVlciBkaWUgZWlnZW5lbiBad2VpdHNwaWVsZXIgZXJsYXVidC4KKworICAgIERpZSBXZWl0ZXJnYWJlIGRpZXNlciBJbmZvcm1hdGlvbmVuIG9kZXIgZGFzIE51dHplbiB2b24gbmljaHQKKyAgICBzZWxic3QgZXJzdGVsbHRlbiBLb21wbGV0dGxvZXN1bmdlbiBvZGVyIEZvcnNjaGVycHVua3RsaXN0ZW4gc2luZAorICAgIGFuZGVyZW4gU3BpZWxlcm4gZ2VnZW51ZWJlciBpbSBob2VjaHN0ZW4gTWFzc2UgdW5mYWlyIHVuZCBkYWhlcgorICAgIHVudGVyc2FndC4KKworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqCisKKyAgICBVbSBkYXMgU3BpZWxlbiB2b24gTXVkcyB6dSB2ZXJlaW5mYWNoZW4gdW5kIGtvbWZvcnRhYmxlciB6dQorICAgIGdlc3RhbHRlbiwgZ2lidCBlcyBlaW5lIFJlaWhlIHNvZ2VuYW5udGVyIE11ZC1DbGllbnRzLgorCisgICAgRGllc2UgQ2xpZW50ZW4gYmlldGVuIG9mdG1hbHMgZGllIE1vZWdsaWNoa2VpdCwgbWVocmVyZSBLb21tYW5kb3MKKyAgICBpbSBNdWQgYXVmIGVpbmUgZWluemlnZSBBa3Rpb24gaGluIGF1c3p1ZnVlaHJlbiBvZGVyIGF1ZiBBdXNnYWJlbgorICAgIG1pdCBzb2xjaGVuIEtvbW1hbmRva2V0dGVuIHp1IHJlYWdpZXJlbi4KKworICAgIE1hbiBzcHJpY2h0IGhpZXIgdm9uIFNjcmlwdGVuIG9kZXIgVHJpZ2dlcm4uCisKKyAgICBadXNhbW1lbiBtaXQgZWluZXIgaW50ZXJuZW4gUHJvZ3JhbW1pZXJzcHJhY2hlIGRlciBDbGllbnRlbiBsYXNzZW4KKyAgICBzaWNoIHZpZWxmYWNoIGJlc3RpbW10ZSBBa3Rpb25lbiBpbSBNdWQgYXV0b21hdGlzaWVyZW4uCisKKyAgICBEaWUgVmVyd2VuZHVuZyBzb2xjaGVyIFNjcmlwdGUgaXN0IG1pdCBlaW5pZ2VuIEF1ZmxhZ2VuIGplZGVtCisgICAgU3BpZWxlciBmcmVpZ2VzdGVsbHQuCisKKyAgICBTb2dlbmFubnRlIFVudGVyc3VjaGVzY3JpcHRlLCBkaWUgc2VsYnN0YWVuZGlnIGVpbmUgb2RlciBtZWhyZXJlCisgICAgRGV0YWlsdGllZmVuIHZvbiBSYWV1bWVuLCBNb25zdGVybiBvZGVyIGFuZGVyZW4gR2VnZW5zdGFlbmRlbgorICAgIGFiZnJhZ2VuLCBzaW5kIG5pY2h0IGVybGF1YnQuCisKKyAgICBKZWRlciBDaGFyYWt0ZXIgc29sbHRlIGluZGl2aWR1ZWxsIGdlc3RldWVydCB3ZXJkZW4sIGRhaGVyIHNpbmQKKyAgICBTY3JpcHRlLCBkaWUgbWVocmVyZSBDaGFyYWt0ZXJlIGF1ZiBlaW5tYWwgc3RldWVybiB1bnRlcnNhZ3QuCisKKyAgICBTY3JpcHRlLCB3ZWxjaGUgZWluZW4gQ2hhcmFrdGVyIGltIFNpbm5lIGVpbmVyIEtvbXBsZXR0bG9lc3VuZworICAgIGR1cmNoIGVpbmUgUXVlc3QgZnVlaHJlbiBvZGVyIGVpbmUgRm9yc2NoZXJwdW5rdGxpc3RlIGFiYXJiZWl0ZW4KKyAgICBzaW5kIG5pY2h0IGVybGF1YnQuCisKKyAgICBHcnVuZHNhZXR6bGljaCBkdWVyZmVuIGFuZGVyZSBTcGllbGVyIGR1cmNoIFNjcmlwdGUgbmljaHQgaW4gaWhyZW0KKyAgICBTcGllbCBiZWhpbmRlcnQgb2RlciBiZWxhZXN0aWd0IHdlcmRlbi4KKworICAgIEFsbGUgYW5kZXJlbiBTY3JpcHRlIHNpbmQgZXJsYXVidCwgc293ZWl0IGRlciBTcGllbGVyIGlubmVyaGFsYgorICAgIGVpbmVyIE1pbnV0ZSBpbSBSYWhtZW4gc2VpbmVyIE1vZWdsaWNoa2VpdGVuIGFuc3ByZWNoYmFyIGJsZWlidC4KKworICAgIEFscyB1bmVybGF1YnRlcyBTa3JpcHQgemFlaGx0IGF1Y2ggZGVyIEthbXBmIG1pdCBlaW5lbSBNb25zdGVyLAorICAgIHdlbm4gZGVyIFNwaWVsZXIgZGFiZWkgbGFlbmdlcmUgWmVpdCBrZWluZSBUYXN0YXR1cmVpbmdhYmVuCisgICAgdm9ybmltbXQgdW5kIGRhYmVpIG5pY2h0IGFuc3ByZWNoYmFyIGlzdCh0b3RpZGxlbikuIERpZXMgZ2lsdCB2b3IKKyAgICBhbGxlbSB3ZW5uIGRlciBUb2QgZGVzIE1vbnN0ZXJzIG5pY2h0IGFic2VoYmFyIGlzdC4KKworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqCisKKyAgICBEYXMgTW9yZ2VuR3JhdWVuIGJhdXQgYXVmIGRpZSBBcmJlaXQgdmllbGVyIGZyZWl3aWxsaWdlcgorICAgIFByb2dyYW1taWVyZXIgYXVmLiBXaWUgYmVpIGplZGVtIFByb2dyYW1tIGthbm4gZXMgZGFiZWkgenUgRmVobGVybiwKKyAgICBhdWNoIEJ1Z3MgZ2VuYW5udCwga29tbWVuLgorCisgICAgSmVkZXIgU3BpZWxlciBzb2xsdGUgZWluIEludGVyZXNzZSBkYXJhbiBoYWJlbiwgZGFzcyBkaWVzZSBGZWhsZXIKKyAgICBiZXNlaXRpZ3Qgd2VyZGVuLgorCisgICAgRGllcyBrYW5uIG1hbiBkdXJjaCBlaW5lIE1lbGR1bmcgZGVzIEZlaGxlcnMgYW4gZGVuIGpld2VpbGlnZW4KKyAgICBNYWdpZXIgb2RlciBmYWxscyBkaWVzZXIgbmljaHQgZXJyZWljaGJhciBpc3QsIGR1cmNoIGVpbmUgTWVsZHVuZworICAgIGFuIGRlbiBlbnRzcHJlY2hlbmRlbiBSZWdpb25zbWFnaWVyIGVycmVpY2hlbi4gQXVjaCBkZXIgQmVmZWhsCisgICAgImZlaGxlciIga2FubiBoaWVyIG51ZXR6bGljaGUgRGllbnN0ZSBsZWlzdGVuLgorCisgICAgV2VyIGRpZXNlIE1hZ2llciBzaW5kLCBrYW5uIGplZGVtIFNwaWVsZXIgYmVpIEJlZGFyZiBkdXJjaCBlaW5lbgorICAgIGFud2VzZW5kZW4gTWFnaWVyIG9kZXIgb2Z0IGF1Y2ggYW5kZXJlbiBTcGllbGVyIG1pdGdldGVpbHQgd2VyZGVuLgorCisgICAgRGllc2VzIFZvcmdlaGVuIHNvbGx0ZSBhdWNoIGZ1ZXIgRmVobGVyIGdlbHRlbiwgZGllIGRlbSBTcGllbGVyLAorICAgIGRlciBkaWVzZSBGZWhsZXIgZW50ZGVja3QsIHp1bSBWb3J0ZWlsIGdlcmVpY2hlbi4KKworICAgIFNvbGx0ZSBzaWNoIGVpbiBTcGllbGVyIG5pY2h0IHNpY2hlciBzZWluLCBvYiBlcyBzaWNoIGJlaSBlaW5lbQorICAgIGJlc3RpbW10ZW4gVmVyaGFsdGVuIHZvbiBHZWdlbnN0YWVuZGVuLCBNb25zdGVybiBvZGVyIFJhZXVtZW4gdW0KKyAgICBlaW5lbiBGZWhsZXIgaGFuZGVsdCBvZGVyIHVtIEFic2ljaHQgZGVzIFByb2dyYW1taWVyZXMsIHNvIGthbm4gZXIKKyAgICBkZW4genVzdGFlbmRpZ2VuIE1hZ2llciBwcm9ibGVtbG9zIGRhbmFjaCBmcmFnZW4gdW5kIHNvbWl0IGJlaSBkZXIKKyAgICBCZXNlaXRpZ3VuZyB2b24gRmVobGVybiBha3RpdiBoZWxmZW4uCisKKyAgICBEYXMgVmVyc2Nod2VpZ2VuIHVuZCBBdXNudXR6ZW4gdm9uIEZlaGxlcm4gaXN0IGFuZGVyZW4gU3BpZWxlcm4KKyAgICBnZWdlbnVlYmVyIHVuZmFpciB1bmQgaXN0IGRhaGVyIHp1IHVudGVybGFzc2VuLgorCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoKKworICAgIEdydW5kc2FldHpsaWNoIHNvbGx0ZSBkZXIgU3BpZWxzcGFzcyBmdWVyIG1vZWdsaWNoc3QgYWxsZSBTcGllbGVyCisgICAgZXJoYWx0ZW4gYmxlaWJlbi4gRGF6dSBnZWhvZXJ0IGF1Y2ggZWluIGdld2lzc2VzIE1hc3MgYW4gRmFpcm5lc3MKKyAgICBkZXIgU3BpZWxlciB1bnRlcmVpbmFuZGVyLgorCisgICAgRXMgaXN0IG5pY2h0IGRlciBTaW5uIGRlciBSZWdlbG4sIGRhcyBTcGllbGVuIGltIE1vcmdlbkdyYXVlbiBkdXJjaAorICAgIFVlYmVycmVnbGVtZW50IHp1IGJlaGluZGVybiBvZGVyIHJlaXpsb3MgenUgZ2VzdGFsdGVuLgorCisgICAgRGFoZXIgaXN0IGVzIGplZG9jaCBhdWNoIG1vZWdsaWNoLCBkYXNzIGltIFNwaWVsIFNpdHVhdGlvbmVuCisgICAgYXVmdHJldGVuLCBkaWUgZGVuIFNwaWVsc3Bhc3MgYW5kZXJlciBTcGllbGVyIHVuZCBkaWUgYWxsZ2VtZWluZQorICAgIEZhaXJuZXNzIGJlZWludHJhZWNodGlnZW4sIG9obmUgZGFzcyBkaWVzZSBTaXR1YXRpb24gZHVyY2ggZGllc2VuCisgICAgTGVpdGZhZGVuIGFiZ2VkZWNrdCBpc3QuCisKKyAgICBIaWVyIGlzdCBqZWRlciBTcGllbGVyIHVuZCBhdWNoIE1hZ2llciBnZWZyYWd0LCBzZWluZW4gZ2VzdW5kZW4KKyAgICBNZW5zY2hlbnZlcnN0YW5kIHp1IGJlZnJhZ2VuIHVuZCB6dSB1ZWJlcmxlZ2VuLCB3aWUgZXIgZWluZSBzb2xjaGUKKyAgICBTaXR1YXRpb24gdmVybWVpZGVuIG9kZXIgZW50c3Bhbm5lbiBrYW5uLCBhdWNoIHdlbm4gbWFuIGRhbWl0IGF1Y2gKKyAgICBlaW5tYWwgYXVmIGVpbmVuIFZvcnRlaWwgdmVyemljaHRlbiBtdXNzLgorCisgICAgRXMgaXN0IGFsc28gZHVyY2hhdXMgbmljaHQgYWxsZXMgZXJsYXVidCwgd2FzIG5pY2h0IGV4cGxpeml0CisgICAgdmVyYm90ZW4gaXN0LgorCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoKKworICAgIEZ1ZXIgTWFnaWVyIGdlbHRlbiBuYXR1ZXJsaWNoIHp1c2FldHpsaWNoIGRpZSBSZWdlbG4gZGVzCisgICAgTWFnaWVydmVydHJhZ2VzLgorCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoKKworICAgIFNvbGx0ZSBlaW4gU3BpZWxlciBvZGVyIE1hZ2llciBnZWdlbiBSZWdlbG4gdmVyc3Rvc3NlbiBoYWJlbiwgc28KKyAgICBrYW5uIGRpZXMgdm9tIFNoZXJpZmYsIHNlaW5lbiBEZXB1dGllcyBvZGVyIGRlbiBFcnptYWdpZXJuIGdlYWhuZGV0CisgICAgd2VyZGVuLgorICAgIFN0cmFmZW4ga29lbm5lbiBzaWNoIHZvbiBlaW5lciBlaW5mYWNoZW4gVmVyd2FybnVuZyBiaXMgaGluIHp1cgorICAgIExvZXNjaHVuZyB2b24gQ2hhcmFrdGVyZW4gZXJzdHJlY2tlbi4KKworICAgIERpZSBTdHJhZmVuIHdlcmRlbiBpbiBlaW5lbSBnZXN1bmRlbiBWZXJoYWVsdG5pcyB6dW0gRmVobHZlcmhhbHRlbgorICAgIGRlcyBTcGllbGVycyBzdGVoZW4uCisKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKgorCisgICAgV2VyIGRpZSBGdW5rdGlvbiBkZXMgU2hlcmlmZnMgb2RlciBlaW5lcyBEZXB1dGllcyB3YWhybmltbXQsIGthbm4KKyAgICBtYW4gbWl0IGRlbSBLb21tYW5kbyAnaGlsZmUgc2hlcmlmZicgZXJmcmFnZW4uCisKKworIFNJRUhFIEFVQ0g6CisgICAgendlaXRpZW1hcmtpZXJ1bmcsIGZlaGxlciwgc2hlcmlmZgorCisgTEVUWlRFIEFlTkRFUlVORzoKKyAgICBGcmksIDA4LjA2LjIwMDEsIDExOjM1OjAwIHZvbiBOb25uZQorICAgIApkaWZmIC0tZ2l0IGEvZG9jL2hlbHAvcmVnaW9uZW4gYi9kb2MvaGVscC9yZWdpb25lbgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5hMjc4MzUwCi0tLSAvZGV2L251bGwKKysrIGIvZG9jL2hlbHAvcmVnaW9uZW4KQEAgLTAsMCArMSwzNyBAQAorRGllIFJlZ2lvbmVuIGltIE1vcmdlbkdyYXVlbgorPT09PT09PT09PT09PT09PT09PT09PT09PT09PQorCitGdWVyIHNvIG1hbmNoZW4gU3BpZWxlciBpc3QgZXMgdmllbGxlaWNodCB2b24gSW50ZXJlc3NlIHp1IGVyZmFocmVuLCB3ZWxjaGVyCitNYWdpZXIgZnVlciB3ZWxjaGUgUmVnaW9uIHp1c3RhZW5kaWcgaXN0LiBEYXMgaXN0IHp1bSBlaW5lbiBoaWxmcmVpY2gsIHdlbm4KK21hbiBlaW4gU2VoZXJoYXVzIGJhdWVuIHdpbGwsIHp1bSBhbmRlcmVuIGFiZXIgYXVjaCBkYW5uLCB3ZW5uIG1hbiBzaWNoIG1pdAorZGVyIEFic2ljaHQgdHJhZWd0IHNlbGJzdCBtYWwgTWFnaWVyIHp1IHdlcmRlbiB1bmQgZWluZW4gQW5zcHJlY2hwYXJ0bmVyCitzdWNodC4KKworSGllciBhbHNvIGFsbGUgUmVnaW9uZW4gZGVzIE1vcmdlbmdyYXVlbnMgbWl0IGlocmVuIFJlZ2lvbnNtYWdpZXJuOgorCisgICBBbmZhZW5nZXIgICAgIEFyaworICAgRHNjaHVuZ2VsICAgICBBcmsKKyAgIEViZW5lICAgICAgICAgQXJhdGhvcm4KKyAgIEZlcm53ZXN0ICAgICAgVmFuaW9uCisgICBHZWJpcmdlICAgICAgIEJhbWJpCisgICBJbnNlbG4gICAgICAgIE1pcmlsCisgICBQb2xhciAgICAgICAgIEh1bW5pLCBDYWxkcmEKKyAgIFNjaGF0dGVud2VsdCAgWm9vaworICAgU2VoZXIgICAgICAgICBab29rCisgICBVbnRlcndlbHQgICAgIFplc3N0cmEgKHZlcnRyZXR1bmdzd2Vpc2UgaW4gQWJ3ZXNlbmhlaXQgZWluZXMgUk0pCisgICBWTGFuZCAgICAgICAgIEJ1Z2ZpeCwgRXNtZSwgbnVyIG5vY2ggc3Bpcml0dXMgcmVjdG9yOiBNb3Jnb3RoCisgICBXYWxkICAgICAgICAgIE5vdHN0cm9tIAorICAgV3Vlc3RlICAgICAgICBOb3RzdHJvbSwgRW5ub3gKKworV2VubiBEdSBkZW4gUmVnaW9uc21hZ2llcm4gZWluZXIgUmVnaW9uIGVpbmUgTWFpbCBzY2hyZWliZW4gbW9lY2h0ZXN0LAorc28gdmVyd2VuZGUgYW0gYmVzdGVuIGRpZSBNYWlsLUFsaWFzZSAicm1fPHJlZ2lvbm5hbWU+Ii4KKworRmFsbHMgZGVyL2RpZSBSTXMgZWluZXIgUmVnaW9uIHVlYmVyIGxhZW5nZXJlIFplaXQgbmljaHQgZXJyZWljaGJhciBzaW5kOgorKiBiaXR0ZSBlcnNhdHp3ZWlzZSBlaW5lbiBFcnptYWdpZXIgYW5zcHJlY2hlbgorKiBiZWkgYWt1dGVuIFByb2JsZW1lbiBtaXQgIm1ydWZlIiB1bmQgIm1haWwgZXJ6bWFnaWVyIiBhbGxlIGFuc3ByZWNoZW4KKworU0lFSEUgQVVDSDoKKwlHaWxkZW5tYWdpZXIKKworLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorTGFzdCBtb2RpZmllZDogMjAxNS0xMi0xOCB2b24gWm9vay4KZGlmZiAtLWdpdCBhL2RvYy9oZWxwL3Jlc2V0IGIvZG9jL2hlbHAvcmVzZXQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZDM0NTFhOQotLS0gL2Rldi9udWxsCisrKyBiL2RvYy9oZWxwL3Jlc2V0CkBAIC0wLDAgKzEsMzkgQEAKKworUmVzZXQKKz09PT09CisKKyAgICBSZXNldHMgc2luZCBlaW4gRXJlaWduaXMgZnVlciBhbGxlIE9iamVrdGUgKGFsc28gV2VzZW4sIFJhZXVtZSwgV2FmZmVuCisgICAgdW5kIFJ1ZXN0dW5nZW4pLgorICAgIERhYmVpIHdlcmRlbiBkaWVzZSAob2Z0KSBhdWYgZWluZW4gYmVzdGltbXRlbiBadXN0YW5kIHp1cnVlY2tnZXNldHp0CisgICAgb2RlciBlcyB3ZXJkZW4gQWt0aW9uZW4sIHdpZSB6QiBIZWlsdW5nIGR1cmNoIEFtdWxldHRlIGR1cmNoZ2VmdWVocnQuCisKKyAgICBTcGV6aWVsbCBiZWkgUmFldW1lbiB3ZXJkZW4gaW0gUmVzZXQ6CisgICAgICAxLiBPYmpla3RlIGRlcyBSYXVtZXMgbmV1ZXJ6ZXVndDoKKyAgICAgICAgICogc293b2hsIGhlcnVtbGllZ2VuZGUgT2JqZWt0ZSwgd2VsY2hlIGVudGZlcm50IHd1cmRlbgorICAgICAgICAgKiBhbHMgYXVjaCBnZXRvZXRldGUgTlBDcywgZGllIGpldHp0IHdpZWRlcmJlbGVidCB3ZXJkZW4KKyAgICAgIDIuIFR1ZXJlbiBnZXNjaGxvc3Nlbi9nZW9lZmZuZXQgKGplIG5hY2ggVXJzcHJ1bmdzenVzdGFuZCkuCisgICAgICAzLiBnbGVpY2hlLCBoZXJ1bWxpZWdlbmRlIE9iamVrdGUgaW0gUmF1bSBhdWZnZXJhZXVtdC4KKyAgICAgICAgIChkYW5hY2ggZ2lidCBlcyBtYXhpbWFsIDMgZ2xlaWNoZSBPYmpla3RlLCBkYXMgZmluZGV0IG51ciBiZWkKKyAgICAgICAgICBTcGllbGVyYWJ3ZXNlbmhlaXQgc3RhdHQpCisKKyAgICBTcGV6aWVsbCAxLiBpc3QgaW50ZXJlc3NhbnQsIHdlaWwgaW4gZWluZW0gUmVzZXQgbWl0IGVpbmVtIE1hbCB3aWVkZXIKKyAgICBkaWVzZXMgZmllc2UgQmxvY2thZGVtb25zdGVyIGF1ZnRhdWNodCBvZGVyIGVuZGxpY2ggZGVyIGhlaXNzZXJzZWhudGUKKyAgICBRdWVzdGdlZ2Vuc3RhbmQgZXJsYW5nYmFyIGlzdC4KKworICAgIE5vcm1hbGVyd2Vpc2UgaXN0IGRpZSBaZWl0IHp3aXNjaGVuIHp3ZWkgUmVzZXRzIDMwK3JhbmRvbSgzMCkgTWludXRlbi4KKyAgICBBbGxlcmRpbmdzIHZlcmFlbmRlcm4gTWFnaWVyIGRpZXNlIFdlcnRlIGdlcm4gbWFsLgorCisgQkVNRVJLVU5HRU46CisgICAgQmVydWVobXQtYmVydWVjaHRpZ3QgaXN0IGRlciBzb2dlbmFubnRlIEJvaW5nLVJlc2V0OgorICAgIEF1cyB0ZWNobmlzY2hlbiBHcnVlbmRlbiBmYW5kIGZydWVoZXIgZWluIFJlc2V0IGluIGVpbmVtIGRhcyBlcnN0ZSBNYWwKKyAgICBzZWl0IGxhbmdlciBaZWl0IGJldHJldGVuZW4gKHVuZCBkYW1pdCBnZWxhZGVuZW4pIFJhdW0gc2VociBmcnVlaCBuYWNoCisgICAgZGllc2VtIEJldHJldGVuIHN0YXR0LgorICAgIEluc2Jlc29uZGVyZSBpbiBkZXIgU1NQIChhbHNvIEJvaW5ncyBHZWJpZXQpIGZhbmQgbWFuIHNpY2ggZGFkdXJjaAorICAgIHBsb2V0emxpY2ggZXJuZXV0IGluIGRlciBHZXNlbGxzY2hhZnQgZWluZXMgZG9jaCBnZXJhZGUgZWJlbiBob2VmbGljaAorICAgIGhpbmZvcnRrb21wbGltZW50aWVydGVuIEJsb2NrYWRlbW9uc3RlcnMgd2llZGVyLgorCisgU0lFSEUgQVVDSDoKKyAgICBhYmssIHJlYm9vdCwgYWJlbnRldWVyCisKKzIxLjEwLjIwMTQsIFplc3N0cmEKKwpkaWZmIC0tZ2l0IGEvZG9jL2hlbHAvc2VoZXIgYi9kb2MvaGVscC9zZWhlcgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi42OWYxNDdjCi0tLSAvZGV2L251bGwKKysrIGIvZG9jL2hlbHAvc2VoZXIKQEAgLTAsMCArMSw2MiBAQAorCitTZWhlcgorPT09PT0KKworICAgIFNlaGVyIGltIE1vcmdlbkdyYXVlbiBzaW5kIFNwaWVsZXIsIGRpZSBkdXJjaCBkYXMgRXJmdWVsbGVuIAorICAgIGJlc3RpbW10ZXIgQW5mb3JkZXJ1bmdlbiB6ZWlnZW4sIGRhc3Mgc2llIHNpY2ggaW0gTW9yZ2VuR3JhdWVuCisgICAgZ3V0IGF1c2tlbm5lbiB1bmQgc2Nob24gZWluZSBSZWloZSB2b24gSGVyYXVzZm9yZGVydW5nZW4gCisgICAgZ2VtZWlzdGVydCBoYWJlbi4gRGllIFNlaGVyLUFuZm9yZGVydW5nZW4gbXVzcyBtYW4gYXVjaCBlcmZ1ZWxsZW4sCisgICAgdW0gTWFnaWVyIHdlcmRlbiB6dSBrb2VubmVuLgorCisgICAgTWl0IGRlbSBTdGF0dXMgZGVzIFNlaGVycyBzaW5kIGVpbmlnZSBWb3JyZWNodGUgdmVyYnVuZGVuLCBkaWUgZGVtCisgICAgJ2tsZWluZW4nIFNwaWVsZXIgbmljaHQgenVyIFZlcmZ1ZWd1bmcgc3RlaGVuOgorCisgICAgICogU2VoZXIga29lbm5lbiBlaW5pZ2UgQXNwZWt0ZSBpaHJlciBDaGFyYWt0ZXJiZXNjaHJlaWJ1bmcgd2llIHouQi4gZGVuCisgICAgICAgVGl0ZWwsIGRhcyBQcmVzYXkgb2RlciBkaWUgQmV3ZWd1bmdzbWVsZHVuZ2VuIGFlbmRlcm4uCisgICAgICogU2VoZXIga29lbm5lbiBzaWNoIGVpbiBIYXVzIGJhdWVuIHVuZCB3ZWl0Z2VoZW5kIGZyZWkgZWlucmljaHRlbi4gRGFzCisgICAgICAgSGF1cyBkaWVudCBkYW5hY2ggYXVjaCBhbHMgU3RhcnRwdW5rdCBuYWNoIGVuZGUgb2RlciBlaW5lbSBSZWJvb3QuCisgICAgICogSW4gZWluaWdlbiBHaWxkZW4gc3RlaGVuIGRpZSBob2VjaHN0ZW4gUmFlbmdlLCBaYXViZXJzcHJ1ZWNoZSBvZGVyCisgICAgICAgS2FtcGZ0ZWNobmlrZW4gbnVyIFNlaGVybiBvZmZlbi4KKyAgICAgKiBXZWl0ZXJlIEJvbmJvbnMgc3RlbGx0IGRpZSBGcmF0ZXJuaXRhcyBkb25vIEFyY2htYWdvcnVtIAorICAgICAgIHp1ciBWZXJmdWVndW5nLiAKKworICAgIERpZSBCZWRpbmd1bmdlbiBmdWVyIGRlbiBTZWhlcnN0YXR1cyBzaW5kIHdpZSBmb2xndCBmZXN0Z2VsZWd0OgorCisgICAgSW5zZ2VzYW10IGJlbm9ldGlndCBtYW4gMzgwMCBTdHVmZW5wdW5rdGUgdW5kIG11c3MgZGllIAorICAgIFNwaWVsZXJzdHVmZSA0MiBlcnJlaWNodCBoYWJlbiwgdW0gU2VoZXIgenUgd2VyZGVuLiBGdWVyIGRpZSAKKyAgICBTdHVmZW5wdW5rdGUgbXVzcyBtYW4gaW4gZWluaWdlbiBCZXJlaWNoZW4gZ2V3aXNzZSBNaW5kZXN0cHVua3QtCisgICAgemFobGVuIGVycmVpY2hlbjoKKworICAgICAqIE1hbiBtdXNzIG1pbmRlc3RlbnMgMTYxMCBBYmVudGV1ZXJwdW5rdGUgZXJ6aWVsdCBoYWJlbi4KKyAgICAgKiBNYW4gbXVzcyBtaW5kZXN0ZW5zIDEwMCBGb3JzY2hlcnB1bmt0ZSBnZXNhbW1lbHQgaGFiZW4sIGRlbQorICAgICAgIGVudHNwcmVjaGVuIDYwMCBTdHVmZW5wdW5rdGVuLiAKKyAgICAgKiBNYW4gbXVzcyBtaW5kZXN0ZW5zIDQwIFphdWJlcnRyYWVua2UgZ2VmdW5kZW4gaGFiZW4sIGRlbQorICAgICAgIGVudHNwcmVjaGVuIDIwMCBTdHVmZW5wdW5rdGUuCisgICAgICogTWFuIG11c3MgZWluZSBSZWloZSB2b24gd3VlcmRpZ2VuIEdlZ25lcm4gZXJsZWd0IGhhYmVuLCBzbyAKKyAgICAgICBkYXNzIG1hbiBhdXMgZGllc2VuICJFcnN0a2lsbHMiIDE1MCBTdHVmZW5wdW5rdGUgZXJ6aWVsdC4KKworICAgIERpZSB2ZXJibGVpYmVuZGVuIFN0dWZlbnB1bmt0ZSBrb2VubmVuIGF1ZiBqZWRlIGJlbGllYmllZ2UKKyAgICBBcnQgZ2VzYW1tZWx0IHdlcmRlbiAoc28gYXVjaCBkaWUgU3R1ZmVucHVua3RlLCBkaWUgZnVlciBkaWUgCisgICAgR2lsZGVuZmFlaGlna2VpdGVuLCBmdWVyIE1pbmlRdWVzdHMgZXRjLiB2ZXJnZWJlbiB3ZXJkZW4pLiAKKworICAgICoqIFdJQ0hUSUdFUiBISU5XRUlTOiAKKyAgICAqKiBEaWUgU2VoZXJhbmZvcmRlcnVuZ2VuIHdlcmRlbiBqYWVocmxpY2ggdm9uIGRlbiBFcnptYWdpZXJuCisgICAgKiogZXZhbHVpZXJ0IHVuZCBnZ2YuIG5hY2ggb2JlbiBvZGVyIHVudGVuIGFuZ2VwYXNzdC4gRGVyIFRlcm1pbgorICAgICoqIGZ1ZXIgc29sY2hlIGV0d2FpZyB3aWxsa3VlcmxpY2hlIEFucGFzc3VuZ2VuIGlzdCBqZWRlcyBKYWhyCisgICAgKiogZGVyIDE1LiBTZXB0ZW1iZXIuIAorCisgICAgV2VubiBtYW4gYWxsZSBBbmZvcmRlcnVuZ2VuIGVyZnVlbGx0IGhhdCwga2FubiBtYW4gc2ljaCB2b24KKyAgICBNZXJsaW4gYmVmb2VyZGVybiBsYXNzZW4uIAorCisgICAgSXN0IG1hbiBlaW5tYWwgU2VoZXIsIHVuZCBiZWtvbW10IHBsb2V0emxpY2ggZG9jaCBMdXN0LCBzaWNoIGFscyBNYWdpZXIgenUKKyAgICBiZXRhZXRpZ2VuLCBzbyBrYW5uIG1hbiBvaG5lIHdlaXRlcmVzIE1hZ2llciB3ZXJkZW4gKHdlbm4gbWFuIGVpbmVuCisgICAgU3BvbnNvciBmaW5kZXQpLgorCitTSUVIRSBBVUNIOgorICAgIGFsbGcuIEhpbGZlOiBtZXJsaW4sIHN0dWZlbiwgc3R1ZmVucHVua3RlLCBhYmVudGV1ZXIsIGZvcnNjaGVycHVua3RlLCAKKyAgICAgICAgICAgICAgICAgbWFnaWVyCisgICAgU2VoZXJoaWxmZTogaGF1c2JhdSwgZXh0cmFsb29rLCBmZWhsZXJtZWxkdW5nLCBmbHVjaHRyaWNodHVuZywgcHJlc2F5LCAKKyAgICAgICAgICAgICAgICByZXZpZXcsIHNldGhhbmRzLCBzZXRtaW4sIHNldG1vdXQsIHNldG1taW4sIHNldG1tb3V0LCB0aXRlbAorICAgICAgICAgICAgICAgIChudXIgYWIgU2VoZXJzdGF0dXMgbGVzYmFyKQorCitMRVRaVEUgQWVOREVSVU5HOiAyMDE2LTA2LTA1IHZvbiBBcmF0aG9ybgpkaWZmIC0tZ2l0IGEvZG9jL2hlbHAvc2VoZXJ0b3JlIGIvZG9jL2hlbHAvc2VoZXJ0b3JlCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjU4NmU1MDUKLS0tIC9kZXYvbnVsbAorKysgYi9kb2MvaGVscC9zZWhlcnRvcmUKQEAgLTAsMCArMSwzMCBAQAorU2VoZXJ0b3JlCis9PT09PT09PT0KKworICAgIFNlaGVydG9yZSBzaW5kIHVlYmVyIGRhcyBnZXNhbXRlIE1vcmdlbkdyYXVlbiB2ZXJ0ZWlsdCB1bmQgbnVyIGZ1ZXIKKyAgICBTZWhlciB6dSBlcmtlbm5lbiB1bmQgenUgbnV0emVuLgorCisgICAgTWl0aGlsZmUgZGllc2VyIFBvcnRhbGUgaXN0IGVzIG1vZWdsaWNoLCBncm9zc2UgRGlzdGFuemVuIGltIE1HCisgICAgZHVyY2ggZWluZW4gVGVsZXBvcnQgdm9uIGVpbmVtIFRvciB6dSBlaW5lbSBhbmRlcmVuIHp1cnVlY2t6dWxlZ2VuLgorICAgIExpZWd0IGRhcyBaaWVsIGF1ZiBlaW5lciBhbmRlcmVuIEluc2VsIGFscyBkYXMgU3RhcnR0b3IsIHNpbmQgenVtCisgICAgVGVsZXBvcnRpZXJlbiBNYWdpZXB1bmt0ZSBub3R3ZW5kaWcuCisKKyAgICBEaWUgZnJ1ZWhlciBtb2VnbGljaGUgIkZlaGx0ZWxlcG9ydGF0aW9uIiBpc3QgaW56d2lzY2hlbiB6dW0gCisgICAgR2x1ZWNrIGRlciBTZWhlciBhYmdlc2NoYWZmdCB3b3JkZW4uIFdvYmVpIGluIGRlciBQYXJhbGxlbHdlbHQgYXVjaAorICAgIGRpZXNiZXp1ZWdsaWNoIG1hbmNobWFsIGFuZGVyZSBSZWdlbG4gZ2VsdGVuLgorCisgICAgQmV2b3IgamVkb2NoIFNlaGVydG9yZSBiZW51dHp0IHdlcmRlbiBrb2VubmVuLCBtdWVzc2VuIHNpZSBlbnRkZWNrdAorICAgIHdlcmRlbi4gRGllcyBnZXNjaGllaHQgb2Z0bWFscyBkdXJjaCBibG9zc2VzIEJldHJldGVuIGVpbmVzIFJhdW1lcywKKyAgICBpbiBkZW0gZWluIFNlaGVydG9yIGF1Zmdlc3RlbGx0IGlzdDsgZXMgaXN0IGplZG9jaCBhdWNoIGRlbmtiYXIsIAorICAgIGRhc3MgbmFlaGVyZSBVbnRlcnN1Y2h1bmdlbiBvZGVyIGdhciBBa3Rpb25lbiBub3R3ZW5kaWcgd2VyZGVuLCBiZS0KKyAgICB2b3Igc2ljaCBlaW4gU2VoZXJ0b3IgenUgZXJrZW5uZW4gZ2lidC4KKworICAgIEVpbm1hbCBnZWZ1bmRlbmUgU2VoZXJ0b3JlIGJsZWliZW4gYmVrYW5udC4KKworICAgIFNlaXQgZWluaWdlciBaZWl0IGVybGF1YnQgZGllIEZyYXRlcm5pdGFzIERvbW8gQXJjaG1hZ29ydW0gYXVjaAorICAgIFNwaWVsZXJuIGRhcyBFcmxlcm5lbiB2b24gUG9ydGFsZW4uIERpZXMgaXN0IGplZG9jaCBlaW5nZXNjaHJhZW5rdC4KKyAgICBEYXp1IHNvbGx0ZSBtYW4gc2ljaCBpbiBkZXIgRnJhdGVybml0YXMgZWluZmFjaCBlaW5tYWwgZWluIHdlbmlnIAorICAgIHVtc2NoYXVlbi4KKworIExFVFpURSBBZU5ERVJVTkc6CisJMjAxMy0wMS0yNyB2b24gSHVtbmkKZGlmZiAtLWdpdCBhL2RvYy9oZWxwL3NoZXJpZmYgYi9kb2MvaGVscC9zaGVyaWZmCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmRkNmMxNmUKLS0tIC9kZXYvbnVsbAorKysgYi9kb2MvaGVscC9zaGVyaWZmCkBAIC0wLDAgKzEsMTggQEAKK0RlciBTaGVyaWZmIHVlYmVybmltbXQgZGllIEF1c2xlZ3VuZyBkZXIgUmVnZWxuIHVuZCBBaG5kdW5nIHZvbiBSZWdlbC0KK3ZlcnN0b2Vzc2VuLiBFciBzdGVsbHQgaW5zb2Zlcm4gYWxzbyBlaW5lIEFydCBTY2hpZWRzcmljaHRlciBkYS4gCisKK0RlcnplaXQgaXN0IEFtYXJ5bGxpcyBkYWZ1ZXIgenVzdGFlbmRpZy4KKworRXMgc3RlaHQgZGVuIFNoZXJpZmZzIGZyZWksIHdlaXRlcmUgRGVwdXR5cyB6dSBlcm5lbm5lbiBkaWUgc2llIGJlaQorZGVyIEFyYmVpdCB1bnRlcnN0dWV0emVuLCBpbiBqZWRlbSBGYWxsIGlzdCBpaHJlbiBBbndlaXN1bmdlbiB1bmQKK2RlbmVuIGlocmVyIERlcHV0eXMgRm9sZ2UgenUgbGVpc3Rlbi4KKworTWVsZGV0IEV1Y2ggYmVpIEZyYWdlbiBvZGVyIFByb2JsZW1lbiBiaXR0ZSBkaXJla3QgYmVpIGlobmVuIG9kZXIKK3NjaGlja3QgaWhuZW4gZWluZSBNYWlsLCBoaWxmcmVpY2ggaXN0IGhpZXIgYXVjaCBkYXMgTWFpbGFsaWFzCisicG9saXplaSIuCisKK1NJRUhFIEFVQ0g6CisgICBsZWl0ZmFkZW4KKworTEVUWlRFIEFlTkRFUlVORzoKKyAgIDA0LjAyLjIwMDggdm9uIFplc3N0cmEuCmRpZmYgLS1naXQgYS9kb2MvaGVscC9zb3ppYWxtZWRpZW4gYi9kb2MvaGVscC9zb3ppYWxtZWRpZW4KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNTk4Njk0NwotLS0gL2Rldi9udWxsCisrKyBiL2RvYy9oZWxwL3NvemlhbG1lZGllbgpAQCAtMCwwICsxLDE0IEBACitEaXZlcnNlIE1HLUdydXBwZW4gYXVzc2VyaGFsYiBkZXMgTVVEcworPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKworTW9yZ2VuZ3JhdWVuIGJlc2l0enQgbW9tZW50YW46CisKKyAqIGVpbmVuIFR3aXR0ZXItQWNjb3VudDogaHR0cHM6Ly90d2l0dGVyLmNvbS9tb3JnZW5ncmF1ZW4KKyAqIGVpbmUgRmFjZWJvb2stR3J1cHBlOiBodHRwczovL3d3dy5mYWNlYm9vay5jb20vZ3JvdXBzLzEyMDM3MDg0NTU3OQorICogZWluZSBHKy1Db21tdW5pdHk6CisgICBodHRwczovL3BsdXMuZ29vZ2xlLmNvbS9jb21tdW5pdGllcy8xMDEwOTI0NTQ5NzU3ODIyNTI3MDIKKworU0lFSEUgQVVDSDoKKyAgICB0ZWFtc3BlYWsKKworMS4gSnVuIDIwMTYsIEdsb2luc29uCmRpZmYgLS1naXQgYS9kb2MvaGVscC9zcGllbGUgYi9kb2MvaGVscC9zcGllbGUKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMWNkNmQzZQotLS0gL2Rldi9udWxsCisrKyBiL2RvYy9oZWxwL3NwaWVsZQpAQCAtMCwwICsxLDM0IEBACisKK1NwaWVsZQorPT09PT09CisKKyAgICAgQWxzIHdhZXJlIGRhcyBNb3JnZW5ncmF1ZW4gbmljaHQgU3BpZWwgZ2VudWcsIGhhYmVuIHNpY2ggZG9jaCBlaW5pZ2UKKyAgICAgbWFnaXNjaCB3YW5rZW5kZSBHZXN0YWx0ZW4gZGFyYW4gZ2VtYWNodCBub2NoIGdhbnogYW5kZXJlIFNwaWVsZSB6dQorICAgICBiYXN0ZWxuLCBiZWkgZGVuZW4gbWFuIHNpY2ggdm9tIE1ldHplbC0gdW5kIFF1ZXN0YWxsdGFnIGVyaG9sZW4ga2Fubi4KKworICAgICBXZW4gZXMgYWxzbyByZWl6dCwgZGVyIGthbm4gZm9sZ2VuZGUgU3BpZWxlIHp1c2FtbWVuIG1pdCBhbmRlcmVuCisgICAgIFNwaWVsZXJuIHN1Y2hlbiB1bmQgdmVyc3VjaGVuOgorCisgICAgIDE3JjQJCVdhbGQsIEVsZmVuZG9yZiwgQ2FzaW5vCisgICAgIDQgR2V3aW5udAkJRWJlbmUsIFBvcnQgVmFpbgorICAgICBBYmFsb25lCQlFYmVuZSwgUG9ydCBWYWluLCBPd2VuIEJyYWRkb24KKyAgICAgRGFydAkJVmxhbmQsIE9ya2hhdXNlbiwgS25laXBlCisgICAgIERvcHBlbGtvcGYJCUluc2VsbiwgU2hha3kgSXNsYW5kCisgICAgIEZ1c3NiYWxsCQlFYmVuZSwgRmV1ZXJiZXJnc3RhZGlvbgorICAgICBHbwkJCUZlcm53ZXN0LCBYaWFuCisgICAgIE1hZXhjaGVuCQlFYmVuZSwgUG9ydCBWYWluLCBBYmVudGV1cmVya25laXBlL093ZW4gQnJhZGRvbgorICAgICBNaW5lc3dlZXBlcglEc2NodW5nZWwsIE9ob3J0LCBIaW50ZXJ6aW1tZXIKKyAgICAgUmFnZQkJV2FsZCwgRHJha29uaWVuLCBIdWV0dGUKKyAgICAgUm9kZWxuCQlQb2xhciwgVHVuZHJhCisgICAgIFNjaGFjaAkJR2ViaXJnZSwgSG9jaGViZW5lCisgICAgIFNrYXQJCUdlYmlyZ2UsIEx1cGluZW50YWwsIEtuZWlwZQorICAgICBUYWJsdXQJCUdlYmlyZ2UsIEJlcmdkb3JmLCBLbmVpcGUKKyAgICAgVGFrZSBJdCBFYXN5CURzY2h1bmdlbCwgU3RlcHBlLCBIdWV0dGUKKyAgICAgTW9ub3BvbHkgICAgICAgICAgIEZldWVyaW5zZWwsIFZ1bGthbiBkLiBQYXJhd2VsdCAoR2xhZGlvUG9saXMpCisKKyBTSUVIRSBBVUNIOgorICAgICBwYXJ0aWVzLCBzdGVyYmVuCisKKyBMRVRaVEUgQWVOREVSVU5HOgorICAgICAyMi4gTWFlcnogR2xvaW5zb24KKwpkaWZmIC0tZ2l0IGEvZG9jL2hlbHAvc3BpZWxlcnRlc3RpZXMgYi9kb2MvaGVscC9zcGllbGVydGVzdGllcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5kMDIwNGJmCi0tLSAvZGV2L251bGwKKysrIGIvZG9jL2hlbHAvc3BpZWxlcnRlc3RpZXMKQEAgLTAsMCArMSw4NSBAQAorU3BpZWxlcnRlc3RpZXMKKz09PT09PT09PT09PT09CisKK05hY2ggQWJzcHJhY2hlIG1pdCBlaW5lbSBFcnptYWdpZXIgaXN0IGVzIGVybGF1YnQsIGRhc3MgZWluIFNwaWVsZXIKK3VuYW5nZXNjaGxvc3NlbmUgR2ViaWV0ZSwgUXVlc3RzIG9kZXIgYXVjaCBHaWxkZW4gdGVzdGV0LiAKKworRnVlciBkYXMgVGVzdGVuIHZvbiBHZWJpZXRlbiB1bmQgUXVlc3RlbiBnaWJ0IGVzIHp3ZWkgTW9lZ2xpY2hrZWl0ZW46CisgIAorRGVyIE1hZ2llciBsZWl0ZXQgZGVuIFRlc3QgaGF1cHR2ZXJhbnR3b3J0bGljaDoKK0RpZXNlIFJlZ2VsdW5nIGlzdCB2b3IgYWxsZW0gZnVlciBkYXMgVGVzdGVuIGtsZWluZXJlciBRdWVzdHMgdW5kIEdlYmlldGUgZ2VkYWNodC4KK0hpZXIgZ2VsdGVuIGZvbGdlbmRlIFJlZ2VsbjoKKyBEZXIgU3BpZWxlciwgZGVyIGRlbiBUZXN0IGR1cmNoZnVlaHJ0LCBiZWtvbW10IGVpbmVuIFRlc3RzcGllbGVyIGRlcyBNYWdpZXJzIAorIHNvd2llIGVpbmUgYW5nZW1lc3NlbmUgQXVzcnVlc3R1bmcuIEJlaSBkZXIgQXVzd2FobCBlaW5lcyBUZXN0c3BpZWxlcnMKKyBpc3QgZXMgYXVjaCBtb2VnbGljaCBUZXN0c3BpZWxlciBhbmRlcmVyIE1hZ2llciBtaXQgZGVyZW4gRWludmVyc3RhZW5kbmlzCisgenUgdmVyd2VuZGVuLgorIERlciBsZWl0ZW5kZSBNYWdpZXIgaW5mb3JtaWVydCBlaW5lbiBFcnptYWdpZXIgdWViZXIgZGVuIFRlc3RzcGllbGVyLgorIERlciBUZXN0c3BpZWxlciBkYXJmIHdhZWhyZW5kIGRlciBUZXN0emVpdCBkYXMgVGVzdGdlYmlldCBuaWNodCB2ZXJsYXNzZW4gdW5kIAorIGF1Y2gga2VpbmUgT2JqZWt0ZSBkZXMgenUgdGVzdGVuZGVuIEdlYmlldGVzIGFuIGFuZGVyZSB3ZWl0ZXJyZWljaGVuLiAKKyBEZXIgVGVzdHNwaWVsZXIgd2lyZCB3YWVocmVuZCBkZXIgZ2FuemVuIFRlc3R6ZWl0IHZvbSBNYWdpZXIgdWViZXJ3YWNodC4gCisgRGllcyBnZXNjaGllaHQgc293b2hsIHp1ciBVZWJlcndhY2h1bmcgZGllc2VyIFJlZ2VsbiwgYWxzIGF1Y2gsICB1bSBkZW0gCisgcHJvZ3JhbW1pZXJlbmRlbiBNYWdpZXIgd2VpdGVyZSBJZGVlbiB6dXIgVmVyZnVlZ3VuZyB6dSBzdGVsbGVuLgorIERpZXNlciBUZXN0IGthbm4gbmFjaCBkZXIgRmVydGlnc3RlbGxuZyB1bmQgVGVzdHMgZGVzIEdlYmlldGVzIGR1cmNoIGRlbiAKKyB2ZXJhbnR3b3J0bGljaGVuIE1hZ2llciBzdGF0dGZpbmRlbi4KKyAKK0VpbiBFcnptYWdpZXIgbGVpdGV0IGRlbiBUZXN0IGhhdXB0dmVyYW50d29ydGxpY2g6CitEaWVzZSBSZWdlbHVuZyBpc3Qgdm9yIGFsbGVtIGZ1ZXIgZGFzIFRlc3RlbiBncm9lc3NlcmVyIFF1ZXN0cyB1bmQgR2ViaWV0ZSAKK2dlZGFjaHQuCitIaWVyIGdlbHRlbiBmb2xnZW5kZSBSZWdlbG46CisgRGVyIFNwaWVsZXIsIGRlciBkZW4gVGVzdCBkdXJjaGZ1ZWhydCwgYmVrb21tdCBkdXJjaCBkZW4gRXJ6bWFnaWVyIGVpbmVuIAorIFRlc3RzcGllbGVyIHNvd2llIGVpbmUgYW5nZW1lc3NlbmUgQXVzcnVlc3R1bmcgZ2VzdGVsbHQuIEJlaSBkZXIgQXVzd2FobCAKKyBlaW5lcyBUZXN0c3BpZWxlcnMgaXN0IGVzIGF1Y2ggbW9lZ2xpY2ggVGVzdHNwaWVsZXIgYW5kZXJlciBNYWdpZXIgbWl0IAorIGRlcmVuIEVpbnZlcnN0YWVuZG5pcyB6dSB2ZXJ3ZW5kZW4uIERpZXNlciBUZXN0c3BpZWxlciBkYXJmIHdhZWhyZW5kIGRlciAKKyBUZXN0emVpdCBkYXMgVGVzdGdlYmlldCBuaWNodCB2ZXJsYXNzZW4gdW5kIGF1Y2gga2VpbmUgT2JqZWt0ZSBkZXMgenUgCisgdGVzdGVuZGVuIEdlYmlldGVzIGFuIGFuZGVyZSB3ZWl0ZXJyZWljaGVuLiAKKyBEZXIgVGVzdHNwaWVsZXIgd2lyZCB3YWVocmVuZCBkZXIgZ2FuemVuIFRlc3R6ZWl0IHZvbSBNYWdpZXIgdW5kIEVyem1hZ2llciAKKyB1ZWJlcndhY2h0LiBEaWVzIGdlc2NoaWVodCBzb3dvaGwgenVyIFVlYmVyd2FjaHVuZyBkaWVzZXIgUmVnZWxuLCBhbHMgYXVjaCwgIAorIHVtIGRlbSBwcm9ncmFtbWllcmVuZGVuIE1hZ2llciB3ZWl0ZXJlIElkZWVuIHp1ciBWZXJmdWVndW5nIHp1IHN0ZWxsZW4uCisgRGVyIEVyc3RjaGFyYWt0ZXIgZGVzIFNwaWVsZXJzIChhdWYgV3Vuc2NoIGF1Y2ggZWluIFp3ZWl0aWUpIGVyaGFlbHQgbmFjaAorIEFic2NobHVzcyBkZXMgVGVzdHMgZGllIGdlZnVuZGVuZW4gRm9yc2NoZXJwdW5rdGUgdW5kIEVyc3RraWxsc3R1cHNlIAorIGd1dGdlc2NocmllYmVuLCBhYmVyIGF1Y2ggZGllIGVybGl0dGVuZW4gU2NoYWVkZW4gKGluc2Jlc29uZGVyZSBUb2RlKSAtIAorIHNlbGJzdHZlcnN0YWVuZGxpY2gsIHNvd2VpdCBzaWUgbmljaHQgZHVyY2ggUHJvZ3JhbW1pZXItZmVobGVyIGJlZGluZ3Qgd2FyZW4uCitEaWVzZXIgVGVzdCBmaW5kZXQgTkFDSCBkZW0gVGVzdCBkZXMgR2ViaWV0ZXMgZHVyY2ggZGVuIHp1c3RhZW5kaWdlbiAKK1JlZ2lvbnNtYWdpZXIgdW5kIChiZWkgUXVlc3RlbikgZHVyY2ggZGVuIFF1ZXN0LUVyem1hZ2llciwgc293aWUgTkFDSCAKK0VpbnRyYWcgZGVyIEZvcnNjaGVycHVua3RlIHN0YXR0LgorCitCZWlkZSBUZXN0dmFyaWFudGVuIGVyc2V0emVuIGF1ZiBrZWluZW4gRmFsbCBkaWUgVGVzdHMgZHVyY2ggTWFnaWVyLiAgCisKK0Z1ZXIgZGFzIFRlc3RlbiB2b24gR2lsZGVuIGdlbHRlbiBhbmRlcmUgUmVnZWxuLCBkYSBzaWNoIGRpZXNlIHp1c2FtbWVuIG1pdAorYW5kZXJlbiBTcGllbGVybiBpbiBnbGVpY2hlbiBHZWJpZXRlbiBhdWZoYWx0ZW4ga29lbm5lbjoKKworMSkgR2lsZGVudGVzdGllcyBzaW5kIGltbWVyIGVjaHRlLCB6dSBkaWVzZW0gWndlY2sgZXJzY2hhZmZlbmUgVGVzdHNwaWVsZXIuCisgICBQX1RFU1RQTEFZRVIgd2lyZCBkYWJlaSBhdWYgZGVuIE5hbWVuIGRlciBHaWxkZSBnZXNldHp0LgorCisyKSBKZWRlciBlaW5lbSBTcGllbGVyIHp1ciBWZXJmdWVndW5nIGdlc3RlbGx0ZSBHaWxkZW50ZXN0aWUgbXVzcyAKKyAgIG1pdHRlbHMgUF9TRUNPTkQgbWl0IGRlbSBOYW1lbiBkZXMgRXJzdHNwaWVsZXJzIG1hcmtpZXJ0IHNlaW4sIGRlcgorICAgaWhuIGZ1ZWhydC4gSmVkZXIgVGVzdHNwaWVsZXIgc29sbHRlIGVpbmRldXRpZyB6dXp1b3JkbmVuIHNlaW4uCisgIAorMykgRGllIFRlc3RpZXMgdW50ZXJsaWVnZW4gQUxMRU4gUmVnZWxuIGRlcyBUZXN0aWUtRGFzZWlucy4gRGFzIGhlaXNzdAorICAgdW50ZXIgYW5kZXJlbSwgZGFzcyBzaWUgTklDSFQgZnVlciBhbmRlcmUgU3BpZWxlciBBdXNydWVzdHVuZyBiZXNjaGFmZmVuCisgICBvZGVyIFdlZ2UgZnJlaW1ldHplbG4gZHVlcmZlbiEgVmVyc3RvZXNzZSBoaWVyZ2VnZW4ga29lbm5lbiB1bnRlcgorICAgVW1zdGFlbmRlbiB6dXIgTG9lc2NodW5nIGRlciBiZWd1ZW5zdGlndGVuIFNwaWVsZXJjaGFyYWt0ZXJlIHVuZAorICAgZGVzIFRlc3RjaGFyYWt0ZXJzIGZ1ZWhyZW4uCisKKzQpIERpZSBUZXN0aWVzIHdlcmRlbiBzdGFlbmRpZyB1ZWJlcndhY2h0LiBMb2dmaWxlcyBrb2VubmVuIHVudGVyIFVtc3RhZW5kZW4KKyAgIHZvbiBkZW4gR2lsZGVubWFnaWVybiBlaW5nZXNlaGVuIHdlcmRlbi4KKworNSkgSmVkZXIgVGVzdGllIG11c3Mgdm9tIEVNIEdpbGRlbiAoei5aLiBIdW1uaSkgZ2VuZWhtaWd0IHdlcmRlbiEKKworNikgNSBUZXN0aWVzIHBybyBHaWxkZSBzb2xsdGVuIGdlbnVlZ2VuLiBXZW5uIGVpbiBUZWlsIGRlciBUZXN0aWVzIG5pY2h0cworICAgdHV0LCBrYW5uIG1hbiBkZW4gVGVzdGllIGF1Y2ggd2VpdGVyZ2ViZW4gbGFzc2VuLgorCitTSUVIRSBBVUNIOgorICAgICAgICBFcnptYWdpZXIsIEdpbGRlbm1hZ2llciwgUmVnaW9uc21hZ2llciwgVG9kCisKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KK0xhc3QgbW9kaWZpZWQ6IEZyaSBPY3QgMTggMTY6MjQ6MDAgMjAwMiBieSBNdWFkaWIKKworCitGdWVyIE1hZ2llci4KK01hZ2llciBrb2VubmVuIG5hdHVlcmxpY2ggb2huZSBBYnNwcmFjaGUgVGVzdHNwaWVsZXIgZWluZXIgYmVzdGltbXRlbiBHaWxkZQoraGFiZW4sIHNvZmVybiBkaWVzZSBub3JtYWxlbiBTcGllbGVybiB6dWdhZW5nbGljaCBpc3QuIFNvZmVybiBlaW5lIEdpbGRlIGRhcworQW5sZWdlbiB2b24gVGVzdHNwaWVsZXJuIHVudGVyc3R1ZXR6dCwgZ2lidCBlcyBlbnRzcHJlY2hlbmRlIEhpbGZlc2VpdGVuIHVudGVyCis8Z2lsZGVubmFtZT4udGVzdHNwaWVsZXIgLSB6dW0gQmVpc3BpZWwga2F0emVua3JpZWdlci50ZXN0c3BpZWxlcgorCitadXNhdHo6IFR1ZSBKYW4gIDcgMjM6MjI6NDQgMjAwMywgZHVyY2ggQmFtYmkuClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZG9jL2hlbHAvc3RlcmJlbiBiL2RvYy9oZWxwL3N0ZXJiZW4KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMDhhYjI3MAotLS0gL2Rldi9udWxsCisrKyBiL2RvYy9oZWxwL3N0ZXJiZW4KQEAgLTAsMCArMSwzNyBAQAorIFN0ZXJiZW4gaXN0IGluIGRpZXNlbSBNdWQgcmVjaHQgbGVpY2h0LgorIEVpbmlnZSByZWNodCBzaWNoZXJlIE1vZWdsaWNoa2VpdGVuIHNpbmQ6CisgLSBJbiBkaWUgU3RlaW5iZWlzc2VyaG9laGxlLCBzLHMsbyxuLG4sCisgLSBJbiBkZW4gU2NoYWNodCBkZXIgRiZFIChBcmNoaWUpLCAxNSBtYWwgInVudGVuIiB0aXBwZW4KKyAtIEJlaSBkZW4gUmFldWJlcm4gInZvcnNpY2h0IDAiLCAidG9ldGUgYWxsZSIKKyAtIEluIFlhbnRyb3MgSGF1cyBkZXIgRmFyYmVuIGltIHNjaHdhcnplbiBSYXVtOiBiZXNjaHdvZXJlIFRvZAorIC0gSW4gZGVyIERhZW1vbmVua25laXBlIChaYXJkb3onIEJ1cmcpOiBrYXVmZSBsaXFvdXIgbWFub3IKKyAtIFBhbmRvcmE6IEJlaW0gU2tpc3ByaW5nZW4gZGllIFNraWVyIGF1c3ppZWhlbgorIC0gQmVpIGRlciBIeWRyYSBzb2xhbmdlIEtvZXBmZSBhYnNjaGxhZ2VuIHVuZCBOSUNIVCBhdXNicmVubmVuLAorICAgYmlzIGNhLiA1MCBTdHVlY2sgZGEgc2luZCwgREFOTiBkZW4gS29lcnBlciBhbmdyZWlmZW4uCisgLSBBdWYgVGFtaWJhcjogdG9ldGUgaGFpYXZhaGEgKE5vY2ggc2ljaGVyZXI6IE1hbiBzYWdlIEJvd2FuJ3MKKyAgIFNwcnVjaCBhdXMgIlRyYXVtcGFyayIgYXVmLi4uKQorIC0gSW4gT3JraGF1c2VucyBLYXRha29tYmVuOiBudXIgZWluIHdlbmlnIGthZW1wZmVuIHVuZCBpZGxlbgorIC0gSW0gVGFsIGRlciBMdXBpbmVuIGFtIHplcnN0b2VydGVuIFNjaHJlaW46IGJldGUKKyAtIEFscyBTZWhlcjogImZsdWNodHJpY2h0dW5nIGVnYWx3b2hpbiIsICJ0b2V0ZSB3ZWdoaWVyIgorIC0gSW4gRmVrZXNoJ3MgTGFkZW4gImthdWZlIHRhbWFob3JueSIsIDN4ICJzY2hsYWdlIHRhbWFob3JueSIKKyAtIEluIGRlciBTYXVuYSAibmltbSBoYW5kdHVjaCIsICJ0b2V0ZSBtYXNzZXVyIgorIC0gQWxzIEVsZjogRHVua2VsZWxmZW4gdG9ldGVuLCAibmltbSBydW5lbnNjaHdlcnQiLCAienVlY2tlIHJ1bmVuc2Nod2VydCIKKyAtIEFscyBaYXViZXJlcjogSW4gZGVyIEFyY2hpZS1LbmVpcGUgZWluZW4gR3JvZyB1bmQgZWluZSBDb2xhIDQwIHRyaW5rZW4sCisgICBhbnNjaGxpZXNzZW5kICJ2ZXJsZXR6ZSBhcmNoaXRla3QiCisgLSBBbHMgS2FyYXRla2E6IFN0ZWludHJvbGwgYW5ncmVpZmVuCisKKyBHZW5lcmVsbGUgVGlwcHM6CisgLSAidm9yc2ljaHQgMCIgaXN0IGJlaSB2ZXJlaW56ZWx0ZW4gR2VnbmVybiBhbmdlYnJhY2h0OyB3ZW5uIGFnZ3Jlc3NpdmUKKyAgIE1vbnN0ZXIgaW4gZGVuIE5lYmVucmFldW1lbiBzdGVoZW4sIGlzdCBob2hlIHZvcnNpY2h0IHNpbm52b2xsZXIuCisgLSAidG9ldGUgYWxsZSIgYmVpIHZpZWxlbiBzdGFya2VuIEdlZ25lcm4gZnVlaHJ0IHJlY2h0IHNpY2hlciB6dW0gVG9kCisgLSBvaG5lIFJ1ZXN0dW5nIHN0aXJidCBtYW4gbGVpY2h0ZXIKKyAtIEFscyBTZWhlcjogImZsdWNodHJpY2h0dW5nIC1CIEljaCB3aWxsIHN0ZXJiZW4hIgorIC0gS2V5IGZyYWdlbiwgZGVyIGthbm4gYnJhdWNoYmFyZSBUaXBzIGdlYmVuCisgLSBNb25zdGVyIHZvbiBSb2NodXMgb2RlciBQYXRyeW4gYW5ncmVpZmVuIAorCisgU0lFSEUgQVVDSDoKKyAgICB0b2V0ZSwgdm9yc2ljaHQsIGZsdWNodHJpY2h0dW5nLCBrYW1wZgorCisgTEVUWlRFIEFlTkRFUlVORzoKKyAgICAxMi4xMi4yMDExLCBaZXNzdHJhCisKZGlmZiAtLWdpdCBhL2RvYy9oZWxwL3N0dWZlbiBiL2RvYy9oZWxwL3N0dWZlbgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4xYzQ3MzJkCi0tLSAvZGV2L251bGwKKysrIGIvZG9jL2hlbHAvc3R1ZmVuCkBAIC0wLDAgKzEsNTMgQEAKKworc3R1ZmVuCis9PT09PT0KKworICAgIFNlaW5lIChTcGllbGVyLSlTdHVmZSBrYW5uIG1hbiBpbiBqZWRlciBHaWxkZSBlcmhvZWhlbi4gRGllIGVpbnppZ2UKKyAgICBWb3JhdXNzZXR6dW5nIGRhYmVpIGlzdCBlcywgZ2VudWVnZW5kIFN0dWZlbnB1bmt0ZSB6dSBoYWJlbi4KKworICAgIEFiIFN0dWZlIDkgZ2lsdDoKKyAgICBVbSBhdWYgU3R1ZmUgPHg+IGF1ZnN0ZWlnZW4genUga29lbm5lbiwgYmVub2V0aWd0IG1hbiA8eC00PioxMDAgZGllc2VyCisgICAgU3R1ZmVucHVua3RlLgorICAgIEJpcyBTdHVmZSA5IGtvc3RlbiBkaWUgU3R1ZmVuIHdlbmlnZXIgYWxzIDEwMCBTdHVmZW5wdW5rdGUgKHMuIFRhYmVsbGUpLgorCisgICAgRGllIGVpbnppZ2UgQXVzbmFobWUgaXN0IGRlciBBdWZzdGllZyB2b20gU3BpZWxlciB6dW0gU2VoZXIgb2RlciBNYWdpZXI6CisgICAgIFVtIFNlaGVyIHp1IHdlcmRlbiBnaWJ0IGVzIHp1c2FldHpsaWNoZSBCZWRpbmd1bmdlbiwgd2llIGJlc3RpbW10ZQorICAgICBBbnphaGxlbiB2b24gQWJlbnRldWVycHVua3RlbiwgRm9yc2NoZXJwdW5rdGVuIHVuZCBFcnN0a2lsbHMuIERpZQorICAgICBha3R1ZWxsZSBMaXN0ZSBpc3QgdW50ZXIgZGVyIEhpbGZlc2VpdGUgInNlaGVyIiB6dSBmaW5kZW4uCisgICAgIE1hZ2llciBrYW5uIG1hbiBuYWNoIEVycmVpY2hlbiBkZXMgU2VoZXJzdGFuZHMgYXVmIEFuZnJhZ2UgYmVpIGVpbmVtCisgICAgIGhvZWhlcmVuIE1hZ2llciB3ZXJkZW4uCisKKyAgICBCaXMgenVyIFN0dWZlIDE5IHNlaGVuIGRpZSBTdHVmZW5iZXplaWNobnVuZ2VuIGZ1ZXIgQWJlbnRldXJlciB3aWUgZm9sZ3QKKyAgICBhdXM6CisKKyAgICAgIFN0dWZlICBTdC5wa3RlICAgICAgICBNYWVubmxpY2ggICAgICAgICAgICAgICBXZWlibGljaCAgICAgICAgICAKKyAgICAgICAxOSAgICAgMTUwMCAgICAgIGRlciBhbmdlaGVuZGUgU2VoZXIgICAgIGRpZSBhbmdlaGVuZGUgU2VoZXJpbiAgICAgCisgICAgICAgMTggICAgIDE0MDAgICAgICBkZXIgSGVsZCAgICAgICAgICAgICAgICBkaWUgSGVsZGluICAgICAgICAgICAgICAgIAorICAgICAgIDE3ICAgICAxMzAwICAgICAgZGVyIEVyb2JlcmVyICAgICAgICAgICAgZGllIEVyb2JlcmVyaW4gICAgICAgICAgICAKKyAgICAgICAxNiAgICAgMTIwMCAgICAgIGRlciBFbnRkZWNrZXIgICAgICAgICAgIGRpZSBFbnRkZWNrZXJpbiAgICAgICAgICAgCisgICAgICAgMTUgICAgIDExMDAgICAgICBkZXIgRmV1ZXJiYWVuZGlnZXIgICAgICBkaWUgRmV1ZXJiYWVuZGlnZXJpbiAgICAgIAorICAgICAgIDE0ICAgICAxMDAwICAgICAgZGVyIFNjaGF0enN1Y2hlciAgICAgICAgZGllIFNjaGF0enN1Y2hlcmluICAgICAgICAKKyAgICAgICAxMyAgICAgIDkwMCAgICAgIGRlciBEcmF1ZmdhZW5nZXIgICAgICAgIGRpZSBEcmF1ZmdhZW5nZXJpbiAgICAgICAgCisgICAgICAgMTIgICAgICA4MDAgICAgICBkZXIgV2VsdGVuYnVtbWxlciAgICAgICBkaWUgV2VsdGVuYnVtbWxlcmluICAgICAgIAorICAgICAgIDExICAgICAgNzAwICAgICAgZGVyIEFiZW50ZXVyZXIgICAgICAgICAgZGllIEFiZW50ZXVyZXJpbiAgICAgICAgICAKKyAgICAgICAxMCAgICAgIDYwMCAgICAgIGRlciBSZWlzZW5kZSAgICAgICAgICAgIGRpZSBSZWlzZW5kZSAgICAgICAgICAgICAgCisgICAgICAgIDkgICAgICA1MDAgICAgICBkZXIgS3VuZHNjaGFmdGVyICAgICAgICBkaWUgS3VuZHNjaGFmdGVyaW4gICAgICAgIAorICAgICAgICA4ICAgICAgNDIwICAgICAgZGVyIEphZWdlciAgICAgICAgICAgICAgZGllIEphZWdlcmluICAgICAgICAgICAgICAKKyAgICAgICAgNyAgICAgIDM0MCAgICAgIGRlciBXZWdla3VuZGlnZSAgICAgICAgIGRpZSBXZWdla3VuZGlnZSAgICAgICAgICAgCisgICAgICAgIDYgICAgICAyODAgICAgICBkZXIgRmFlaHJ0ZW5zdWNoZXIgICAgICBkaWUgRmFlaHJ0ZW5zdWNoZXJpbiAgICAgIAorICAgICAgICA1ICAgICAgMjIwICAgICAgZGVyIFdhbGRsYWV1ZmVyICAgICAgICAgZGllIFdhbGRsYWV1ZmVyaW4gICAgICAgICAKKyAgICAgICAgNCAgICAgIDE4MCAgICAgIGRlciBXYW5kZXJnZXNlbGxlICAgICAgIGRpZSBXYW5kZXJnZXNlbGxpbiAgICAgICAgCisgICAgICAgIDMgICAgICAxNDAgICAgICBkZXIgU3RyZXVuZXIgICAgICAgICAgICBkaWUgU3RyZXVuZXJpbiAgICAgICAgICAgIAorICAgICAgICAyICAgICAgMTIwICAgICAgZGVyIExhbmRzdHJlaWNoZXIgICAgICAgZGllIExhbmRzdHJlaWNoZXJpbiAgICAgICAKKyAgICAgICAgMSAgICAgIDEwMCAgICAgIGRlciBob2ZmbnVuZ3N2b2xsZSAgICAgIGRpZSBob2ZmbnVuZ3N2b2xsZSAgICAgICAgCisKKyAgICBTZWhlcnN0dWZlbiB0cmFnZW4ga2VpbmVuIFRpdGVsLCBkYSBqZWRlciBTZWhlciBzZWluZW4gVGl0ZWwgc2VsYnN0IGZyZWkKKyAgICB3YWVobGVuIGRhcmYuCisKKyBTSUVIRSBBVUNIOgorICAgIHNlaGVyLCBtYWdpZXIsIG1hZ2llcnN0dWZlbgorICAgIGZvcnNjaGVycHVua3RlLCBzdHVmZW5wdW5rdGUKKyAgICBhYmVudGV1ZXIKKworIExFVFpURSBBZU5ERVJVTkc6CisgICAgMDQuMDUuMjAxMywgWmVzc3RyYQpkaWZmIC0tZ2l0IGEvZG9jL2hlbHAvc3R1ZmVucHVua3RlIGIvZG9jL2hlbHAvc3R1ZmVucHVua3RlCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmIxNmY0NzAKLS0tIC9kZXYvbnVsbAorKysgYi9kb2MvaGVscC9zdHVmZW5wdW5rdGUKQEAgLTAsMCArMSw1NiBAQAorCitTdHVmZW5wdW5rdGUKKz09PT09PT09PT09PQorCisgICAgRGllIFN0dWZlbnB1bmt0ZSBiaWxkZW4gZGllIEdydW5kbGFnZSBkZXMgbmV1ZW4gU3R1ZmVua29uemVwdGVzIGltCisgICAgTW9yZ2VuR3JhdWVuLiBBbnN0YXR0IHdpZSBmcnVlaGVyIG51ciBkdXJjaCBFcmZhaHJ1bmdzcHVua3RlIHVuZCBpbgorICAgIGdld2lzc2VtIE1hc3NlIEFiZW50ZXVlcnB1bmt0ZSB3aXJkIGRpZSBNb2VnbGljaGtlaXQgenVtIEF1ZnN0aWVnIG51biBhdWNoCisgICAgbm9jaCB2b24gZWluaWdlbiBhbmRlcmVuIEZha3RvcmVuIGJlc3RpbW10LCBkaWUgaW5zZ2VzYW10IGVpbmUKKyAgICBhdXNnZXdvZ2VuZXJlIEVpbnNjaGFldHp1bmcgZGVzIENoYXJha3RlcnMgZXJtb2VnbGljaGVuIHNvbGxlbjoKKworICAgIERlbiB3aWNodGlnc3RlbiBBbnRlaWwgYmlsZGVuIG51biBkaWUgQWJlbnRldWVycHVua3RlLiBTaWUgZ2VoZW4gaW0KKyAgICBWZXJoYWVsdG5pcyAxOjEgaW4gZGllIFN0dWZlbnB1bmt0ZSBlaW4uCisKKyAgICBEZXIgendlaXRncm9lc3N0ZSBBbnRlaWwgd2lyZCB2b24gZGVuIEZvcnNjaGVycHVua3RlbiBnZXN0ZWxsdC4gRGllc2UKKyAgICBQdW5rdGUgd2VyZGVuIGVpbmVtIHp3YXIgbmljaHQgZGlyZWt0IGFscyBaYWhsIGJla2FubnQgZ2VnZWJlbjsgbWl0IGRlbQorICAgIEJlZmVobCBgaW5mbycgKGF1Y2ggYWxzIGBzY29yZScgb2RlciBgcHVua3RlJyBiZWthbm50KSBrYW5uIG1hbiBqZWRvY2gKKyAgICBlaW5lIEVpbnNjaGFldHp1bmcgZGVyIE11ZC1LZW5udG5pcyBhYmZyYWdlbi4KKworICAgIERlbiBuYWVjaHN0ZW4gQW50ZWlsIGxpZWZlcm4gZ2VmdW5kZW5lIFphdWJlcnRyYWVua2UgdW5kIGVpbiB3ZWl0ZXJlcworICAgIExldmVsIGRpZSBIZWlsdHJhZW5rZSAoZGllIGxldHp0ZW4gdmllciBaVHMpLgorCisgICAgRGllIEdpbGRlLCBpbiBkZXIgbWFuIHNpY2ggYmVmaW5kZXQsIGxpZWZlcnQgZWluZW4gdmllcnRlbiBBbnRlaWwuIEhpZXIKKyAgICBnZWhlbiBpbiBkZXIgUmVnZWwgZGllIEtlbm50bmlzc2UgZGVyIGVpbnplbG5lbiBTcHJ1ZWNoZSB1bmQgZGVyCisgICAgRmFlaGlna2VpdGVuIGVpbiwgZGllIG1hbiBpbiBkZXIgR2lsZGUgZXJsZXJuZW4ga2FubiAoZGFzIGlzdCBhYmVyIGplZGVyCisgICAgR2lsZGUgc2VsYnN0IHVlYmVybGFzc2VuKS4gR2lsZGVuLCBhdXMgZGVuZW4gbWFuIGF1c2dldHJldGVuIGlzdCwgd2VyZGVuCisgICAgZGFiZWkgbmljaHQgYmVydWVja3NpY2h0aWd0ISBNYW5jaGUgR2lsZGVuIHZlcmdlYmVuIHNlaHIgdmllbGUgU3R1ZmVuLQorICAgIHB1bmt0ZSBzY2hvbiBiaXMgTGV2ZWwgMjAuIERhbm4gdmVybGllcnQgbWFuIGJlaW0gV2VjaHNlbCBlaW5pZ2UgU3R1ZmVuLAorICAgIGRpZSBtYW4gaW4gZGVyIG5ldWVuIEdpbGRlIGFiZXIgbWl0IGRlciBaZWl0IHdpZWRlciBlcmxhbmd0LgorCisgICAgU2NobGllc3NsaWNoIGdpYnQgZXMgbm9jaCBTdHVmZW5wdW5rdGUgZnVlciBkYXMgVG9ldGVuIHZvbiBNb25zdGVybjsKKyAgICBhbGxlcmRpbmdzIG11c3MgZGFzIE1vbnN0ZXIgZGFmdWVyIGVpbmUgYmVzdGltbXRlIG1pbmltYWxlIE1lbmdlIHZvbgorICAgIEVyZmFocnVuZ3NwdW5rdGVuIGdlYmVuLiBEaWVzZSBQdW5rdGUgd2VyZGVuIG51ciBmdWVyIGRhcyBlcnN0bWFsaWdlCisgICAgVG9ldGVuIGRlcyBNb25zdGVycyB2ZXJnZWJlbi4gRXMgbnVldHp0IGFsc28gbmljaHRzLCBkZW4gc2VsYmVuIE9yayAyNyBtYWwKKyAgICB6dSB0b2V0ZW47IHdlbm4gZXIgdWViZXJoYXVwdCBTdHVmZW5wdW5rdGUgYWJ3aXJmdCwgZGFubiBudXIgYmVpbSBlcnN0ZW4KKyAgICBNYWwuCisKKyAgICAoRWluIGVyd2VpdGVydGVyIEhpbndlaXMgenVtIFRoZW1hIEVyc3RraWxsLVN0dWZlbnB1bmt0ZSwgaW5zYmVzb25kZXJlCisgICAgIGluIFp1c2FtbWVuaGFuZyBtaXQgS2VyYmhvbHogdW5kICBEdWVzdGVyd2FsZC1QbGFrZXR0ZSwgaXN0IGluIGRlcgorICAgICBIaWxmZXNlaXRlICJlcnN0a2lsbHN0dWZlbnB1bmt0ZSIgKG9kZXIgImVrcyIpIHp1IGZpbmRlbi4pCisKKyAgICBBdWNoICJNaW5pUXVlc3RzIiBrb2VubmVuIFN0dWZlbnB1bmt0ZSB2ZXJnZWJlbi4gKE1pbmlxdWVzdHMgc2luZCBrbGVpbmUKKyAgICBBdWZnYWJlbiwgZGllIGtlaW5lIEFiZW50ZXVlcnB1bmt0ZSBnZWJlbikuCisKKyAgICBVbmQgenVtIGd1dGVuIFNjaGx1c3Mga29tbWVuIGF1Y2ggZGllIEVyZmFocnVuZ3NwdW5rdGUgbm9jaCB6dSBFaHJlbiwgd2VubgorICAgIGF1Y2ggbmljaHQgenUgYmVzb25kZXJzIGdyb3NzZW4uLi4gOy0pCisgICAgRnVlciB4IEVyZmFocnVuZ3NwdW5rdGUgZXJoYWVsdCBtYW4geF4wLjMyIFN0dWZlbnB1bmt0ZSwgc28gZGFzcyBpbQorICAgIHVudGVyZW4gRXJmYWhydW5nc3B1bmt0ZWJlcmVpY2ggcmVjaHQgc2NobmVsbCBTdHVmZW5wdW5rdGUgZXJ6aWVsdAorICAgIHdlcmRlbiwgbmFjaCBvYmVuIGhpbiBqZWRvY2ggaW1tZXIgd2VuaWdlciBTdHVmZW5wdW5rdGUgcHJvIGVyemllbHRlbQorICAgIEVyZmFocnVuZ3NwdW5rdCB2ZXJnZWJlbiB3ZXJkZW4uCisKKyBTSUVIRSBBVUNIOgorICAgIGZvcnNjaGVycHVua3RlLCBpbmZvLCBzdHVmZW4sIGVyc3RraWxsc3R1ZmVucHVua3RlLCBlcnptYWdpZXIKKworIExFVFpURSBBZU5ERVJVTkc6CisgICAgV2VkLCAwOS4wNS4wMSwgMTU6MDA6MDAgdm9uIFJpa3VzCisgCmRpZmYgLS1naXQgYS9kb2MvaGVscC9zdHVubmVsIGIvZG9jL2hlbHAvc3R1bm5lbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44OGI0NmRlCi0tLSAvZGV2L251bGwKKysrIGIvZG9jL2hlbHAvc3R1bm5lbApAQCAtMCwwICsxLDczIEBACitWZXJzY2hsdWVzc2VsdW5nIGRlciBNVUQtS29tbXVuaWthdGlvbiBtaXQgc3R1bm5lbAorPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKworICAgIE1pdCAnc3R1bm5lbCcga2FubiBtYW4gc2VpbmUgc2FlbXRsaWNoZSBLb21tdW5pa2F0aW9uIG1pdCBkZW0gTVVECisgICAgdmVyc2NobHVlc3NlbG4uIERhenUgc3RhcnRldCBtYW4gbG9rYWwgYmVpIHNpY2ggc3R1bm5lbCB1bmQgdmVyYmluZGV0CisgICAgc2ljaCBkYW5uIHBlciB0ZWxuZXQvdGYvLi4uIG1pdCBkaWVzZW0gQ2xpZW50LgorICAgIEluIGRlbiBmb2xnZW5kZW4gQmVpc3BpZWxlbiB3aXJkIGRhZnVlciBqZXdlaWxzIGxvY2FsaG9zdDo0NzExIGJlbnV0enQuCisKKyAgICBTdHVubmVsIGdpYnQgZXMgZnVlciBkaXZlcnNlIE9TIHVudGVyOiBodHRwOi8vd3d3LnN0dW5uZWwub3JnLworICAgIAorICAgIFN0YXJ0IHZvbiBzdHVubmVsIHVudGVyIExpbnV4IHVBZToKKyAgICAqIGJpcyB6dXIgVmVyc2lvbiAzLiogbWl0IGRlbSBLb21tYW5kbworICAgICAgc3R1bm5lbCAtYyAtZCA0NzExIC1yIG1nLm11ZC5kZTo0NzEyCisgICAgKiBhYiBWZXJzaW9uIDQuKiBtaXQgS29uZmlndXJhdGlvbnNkYXRlaSBmb2xnZW5kZW4gSW5oYWx0cywgZ2Vmb2xndAorICAgICAgdm9uIFN0YXJ0IHZpYSAic3R1bm5lbCA8a29uZmlndXJhdGlvbnNkYXRlaT4iCisgICAgLS0KKyAgICAgIGZvcmVncm91bmQgPSB5ZXMKKyAgICAgIGNsaWVudCA9IHllcworCisgICAgICBbbWddCisgICAgICBjb25uZWN0ID0gbWcubXVkLmRlOjQ3MTIKKyAgICAgIGFjY2VwdCA9IGxvY2FsaG9zdDo0NzExCisgICAgLS0KKworICAgIFN0YXJ0IHZvbiBzdHVubmVsIHVudGVyIFdpbmRvd3M6CisgICAgKiBJbnN0YWxsaWVyZW4vU3RhcnRlbiwgZGFubiB1bnRlciBDb25maWd1cmF0aW9uIGRpZSBEYXRlaSBzdHVubmVsLmNvbmYKKyAgICAgIGVkaXRpZXJlbiB1bmQgYmVpICdTZXJ2aWNlIGRlZmluaXRpb25zJyBmb2xnZW5kZSBaZWlsZW4gaGluenVmdWVnZW46CisgICAgLS0KKyAgICAgIGNsaWVudCA9IHllcworICAgICAgW21nXQorICAgICAgY29ubmVjdCA9IG1nLm11ZC5kZTo0NzEyCisgICAgICBhY2NlcHQgPSAxMjcuMC4wLjE6NDcxMQorICAgIC0tCisKKyBCRU1FUktVTkdFTjoKKyAgICBEZXIgU2VydmVyIHVudGVyc3R1ZXR6dCBLb21wcmVzc2lvbiwgekIgZHVyY2ggZGllIEtvbmZpZ3VyYXRpb25zemVpbGU6CisgICAgICBjb21wcmVzc2lvbiA9IHpsaWIKKyAgICBhdXNzZXJoYWxiIGRlcyBQcm9maWxzLgorICAgIAorICAgIEF1c3p1Z3N3ZWlzZSBtb21lbnRhbiBtb2VnbGljaGUgQ2hpZmZyZW4gc2luZCwgbmFjaCBTdGFlcmtlIGF1ZnN0ZWlnZW5kOgorICAgICAgREVTLUNCQy1TSEEgICAgICAgICAgIFNTTHYzIEt4PVJTQSAgICBBdT1SU0EgIEVuYz1ERVMoNTYpICAgTWFjPVNIQTEKKyAgICAgIFJDNC1TSEEgICAgICAgICAgICAgICBTU0x2MyBLeD1SU0EgICAgQXU9UlNBICBFbmM9UkM0KDEyOCkgIE1hYz1TSEExCisgICAgICBSQzQtTUQ1ICAgICAgICAgICAgICAgU1NMdjMgS3g9UlNBICAgIEF1PVJTQSAgRW5jPVJDNCgxMjgpICBNYWM9TUQ1IAorICAgICAgQ0FNRUxMSUExMjgtU0hBICAgICAgIFNTTHYzIEt4PVJTQSAgICBBdT1SU0EgIEVuYz1DYW1lbGxpYSgxMjgpIE1hYz1TSEExCisgICAgICBESEUtUlNBLUFFUzEyOC1TSEEgICAgU1NMdjMgS3g9REggICAgIEF1PVJTQSAgRW5jPUFFUygxMjgpICBNYWM9U0hBMQorICAgICAgREVTLUNCQzMtU0hBICAgICAgICAgIFNTTHYzIEt4PVJTQSAgICBBdT1SU0EgIEVuYz0zREVTKDE2OCkgTWFjPVNIQTEKKyAgICAgIEVESC1SU0EtREVTLUNCQzMtU0hBICBTU0x2MyBLeD1ESCAgICAgQXU9UlNBICBFbmM9M0RFUygxNjgpIE1hYz1TSEExCisKKyAgICAgIEFFUzEyOC1TSEEgICAgICAgICAgICBTU0x2MyBLeD1SU0EgICAgQXU9UlNBICBFbmM9QUVTKDEyOCkgIE1hYz1TSEExCisgICAgICBBRVMxMjgtU0hBMjU2ICAgICAgICAgVExTdjEuMiBLeD1SU0EgIEF1PVJTQSAgRW5jPUFFUygxMjgpICBNYWM9U0hBMjU2CisgICAgICBBRVMxMjgtR0NNLVNIQTI1NiAgICAgVExTdjEuMiBLeD1SU0EgIEF1PVJTQSAgRW5jPUFFU0dDTSgxMjgpIE1hYz1BRUFECisgICAgICBBRVMyNTYtU0hBICAgICAgICAgICAgU1NMdjMgS3g9UlNBICAgIEF1PVJTQSAgRW5jPUFFUygyNTYpICBNYWM9U0hBMQorICAgICAgQUVTMjU2LVNIQTI1NiAgICAgICAgIFRMU3YxLjIgS3g9UlNBICBBdT1SU0EgIEVuYz1BRVMoMjU2KSAgTWFjPVNIQTI1NgorICAgICAgQUVTMjU2LUdDTS1TSEEzODQgICAgIFRMU3YxLjIgS3g9UlNBICBBdT1SU0EgIEVuYz1BRVNHQ00oMjU2KSBNYWM9QUVBRAorCisgICAgICBESEUtUlNBLUNBTUVMTElBMjU2LVNIQSBTU0x2MyBLeD1ESCAgIEF1PVJTQSAgRW5jPUNhbWVsbGlhKDI1NikgTWFjPVNIQTEKKyAgICAgIERIRS1SU0EtQUVTMjU2LVNIQSAgICBTU0x2MyBLeD1ESCAgICAgQXU9UlNBICBFbmM9QUVTKDI1NikgIE1hYz1TSEExCisgICAgICBESEUtUlNBLUFFUzI1Ni1TSEEyNTYgVExTdjEuMiBLeD1ESCAgIEF1PVJTQSAgRW5jPUFFUygyNTYpICBNYWM9U0hBMjU2CisgICAgICBESEUtUlNBLUFFUzI1Ni1HQ00tU0hBMzg0IFRMU3YxLjIgS3g9REggQXU9UlNBICBFbmM9QUVTR0NNKDI1NikgTWFjPUFFQUQKKyAgICAKKyAgICBFaW5zdGVsbGJhciBpc3QgZGFzIGJlaSBzcGV6aWVsbGVuIFd1ZW5zY2hlbiAoVm9yc2NocmlmdGVuCisgICAgenVyIFZlcnNjaGx1ZXNzZWx1bmdzc3RhZXJrZSBpbSBBdXNsYW5kIHpCKSBtaXQ6CisgICAgICBjaXBoZXJzID0gUkM0LVNIQQorICAgIGlubmVyaGFsYiBkZXMgUHJvZmlscy4gRnVlciBlaW5pZ2UgbXVzcyBhbGxlcmRpbmdzCisgICAgICBmaXBzID0gbm8KKyAgICBnZXNldHp0IHdlcmRlbiwgZGEgc2llIGFscyBuaWNodCBtZWhyIHNpY2hlciBnZW51ZyBnZWx0ZW4uCisgCisgU0lFSEUgQVVDSDoKKyAgICB0ZWFtc3BlYWssIG11ZHJlY2huZXIKKyAgICBEZXRhaWxzIHp1IFplcnRpZmlrYXRlbjogaHR0cDovL21nLm11ZC5kZS9kb3dubG9hZC9zdHVubmVsLnNodG1sCisKKyBMRVRaVEUgQWVOREVSVU5HOgorMy4gQXVnIDIwMTUgR2xvaW5zb24KZGlmZiAtLWdpdCBhL2RvYy9oZWxwL3N5bnRheCBiL2RvYy9oZWxwL3N5bnRheApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4yMzE1YzM3Ci0tLSAvZGV2L251bGwKKysrIGIvZG9jL2hlbHAvc3ludGF4CkBAIC0wLDAgKzEsNjAgQEAKKworRGllIFN5bnRheCBkZXIgRWluZ2FiZW4gaW0gTW9yZ2VuR3JhdWVuCis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKworICAgIEVpbmUgRWluZ2FiZSBzb2xsdGUgaW0gYWxsZ2VtZWluZW4gZm9sZ2VuZGVybWFzc2VuIGF1c3NlaGVuOgorCisgICAgPiA8dmVyYj4gWzxvYmpla3QoZSk+XSBbPGFkdmVyYj4gW3VuZCA8YWR2ZXJiPl1dCisKKyAgICBHcm9zcy0gdW5kIEtsZWluc2NocmVpYnVuZyBzb3dpZSBBcnRpa2VsIGtvZW5uZW4gaW4gZGVuIG1laXN0ZW4gRmFlbGxlbgorICAgIGJlbnV0enQgd2VyZGVuLiBEYXMgVmVyYiBNVVNTIGFsbGVyZGluZ3MgSU1NRVIga2xlaW4gZ2VzY2hyaWViZW4gd2VyZGVuIQorICAgIEZvbGdlbmRlIEF1c2RydWVja2Ugc29sbHRlbiBhbHNvIGFlcXVpdmFsZW50IHNlaW46CisKKyAgICA+IHN0ZWNrIGRhcyBTY2h3ZXJ0IGluIGRlbiBCZXV0ZWwKKyAgICA+IHN0ZWNrIHNjaHdlcnQgaW4gYmV1dGVsCisKKyAgICBVbWxhdXRlIHVuZCBhbmRlcmUgU29uZGVyemVpY2hlbiAoWmVpY2hlbiBtaXQgQVNDSUktQ29kZXMgPj0gMTI3KSBzaW5kCisgICAgdmVyYm90ZW4gdW5kIHdlcmRlbiBkdXJjaCBgPycgZXJzZXR6dC4KKworICAgIFdlbm4gbmljaHQgZ2VuYXUga2xhciBpc3QsIHdlbGNoZXMgT2JqZWt0IGdlbWVpbnQgaXN0LCBrYW5uIG1hbiBkYXMKKyAgICBnZXd1ZW5zY2h0ZSBPYmpla3QgbWl0IGVpbmVyIGFuZ2VoYWVuZ3RlbiBOdW1tZXIgaWRlbnRpZml6aWVyZW46CisKKyAgICA+IHN0ZWNrIHNjaHdlcnQgMiBpbiBiZXV0ZWwKKyAgICA+IHN0ZWNrIGRhcyAyLiBTY2h3ZXJ0IGluIGRlbiBCZXV0ZWwKKworICAgIEZvbGdlbmRlcyBnZWh0IGFsbGVyZGluZ3MgbmljaHQ6CisKKyAgICA+IHN0ZWNrIGRhcyB6d2VpdGUgU2Nod2VydCBpbiBkZW4gQmV1dGVsCisKKyAgICBTb2xsdGVzdCBEdSBpcmdlbmR3byBpbSBTcGllbCBhdWYgZWluZSBTdGVsbGUgc3Rvc3Nlbiwgd28ga2VpbmUKKyAgICBncmFtbWF0aWthbGlzY2ggcmljaHRpZ2UgRWluZ2FiZSBlcndhcnRldCB3aXJkLCBnaWIgYml0dGUgZWluZW0gTWFnaWVyCisgICAgQmVzY2hlaWQuCisKKyAgICBXZW5uIER1IGJlaSBkZXIgVmVyd2VuZHVuZyBlaW5lcyBBZHZlcmJzIGluIFp1c2FtbWVuaGFuZyBtaXQgZWluZW0gVmVyYgorICAgIFByb2JsZW1lIGhhc3QsIHNvIHZlcmdld2lzc2VyZSBEaWNoLCBvYiBkYXMgVmVyYiB1ZWJlcmhhdXB0IGRpZSBWZXJ3ZW5kdW5nCisgICAgdm9uIEFkdmVyYmllbiB1bnRlcnN0dWV0enQuCisKKyAgICBCZWkgVmVyYmVuLCBkaWUgZGllIFZlcndlbmR1bmcgdm9uIEFkdmVyYmllbiB1bnRlcnN0dWV0emVuLCBrYW5uc3QgRHUgYXVjaAorICAgIGVpbmVuIFRleHQgbmFjaCBXYWhsIGJlbnV0emVuIHVuZCB6d2FyIGZvbGdlbmRlcm1hc3NlbjoKKworICAgID4gPHZlcmI+IC88dGV4dF9uYWNoX3dhaGw+CisKKyAgICBWaWVsIFNwYXNzIGJlaW0gQXVzcHJvYmllcmVuLgorCisgQkVJU1BJRUxFOgorCisgICAgPiBuaW1tIGJ1Y2gKKyAgICA+IHN0ZWNrZSBidWNoIGluIHRhc2NoZQorICAgID4gemllaGUgc2NoaWxkIGFuCisgICAgPiBuaW1tIHNjaHdlcnQgYXVzIGxlaWNobmFtIDIKKworICAgID4gZ3JpbnNlCisgICAgPiBncmluc2UgamFtbSB1bmQgam9maSAoamFtbSB1bmQgam9maSBtdWVzc2VuIG5hdHVlcmxpY2gKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbiBkZXIgImFkdmVyYiItTGlzdGUgc3RlaGVuLikKKyAgICA+IGdyaW5zZSAvd2FzLW5ldWVzLXdhcy1hdWNoLW5pY2h0LWluLWRlci0iYWR2ZXJiIi1MaXN0ZS1zdGVodAorCisgU0lFSEUgQVVDSDoKKyAgICB2ZXJiZW4sIGFkdmVyYiwgaWRlZQorCisgTEVUWlRFIEFlTkRFUlVORzoKKyAgICBUaHUsIDI0LjA3LjE5OTcsIDA5OjAwOjAwIHZvbiBXYXJnb24KZGlmZiAtLWdpdCBhL2RvYy9oZWxwL3RhbmppYW4gYi9kb2MvaGVscC90YW5qaWFuCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjM2NDJiZDAKLS0tIC9kZXYvbnVsbAorKysgYi9kb2MvaGVscC90YW5qaWFuCkBAIC0wLDAgKzEsMzMgQEAKKworRGllIEdpbGRlIGRlciBUYW5qaWFuCistLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworICAgICAgICAgICMgICAgICAgICAgRGllIEdpbGRlIGRlciBUYW5qaWFuIGJlZmluZGV0IHNpY2ggaW0gV2FsZCBkZXIgCisgICAgICAgICAgIyMjICAgICAgICBFaXN0YW5uZW4sIHN1ZWRvZXN0bGljaCBlaW5lcyBkdW5rbGVuIFdhbGRlcywgZGVyCisgICAgICAgICAgIyMgICAgICAgICBhbmdlYmxpY2ggYm9lc2UgRHJha29uaWVyIGJlaGVyYmVyZ3QuIAorICAgICAgICAgICMgICAgIyMgICAgIAorICAgIyMjIyMjIyMjIyMjIyMjIyAgRGllIFRhbmppYW4gYmV0cmFjaHRlbiBzaWNoIGFscyBXYWhyZXIgZGVyIE5ldXRyYWxpdGFldCwKKyAgICAjIyAgICMjICAgICAjIyAgIGRhaGVyIHdlbmRlbiBzaWUgc2ljaCBzb3dvaGwgZ2VnZW4gaGVpbGlnZSBhbHMgYXVjaAorICAgICAgICAgIyAgICAgICMjICAgZ2VnZW4gc2F0YW5pc2NoZSBMZWJld2VzZW4uCisgICAgICAgICMjICAgICAjIyAgICAgCisgICAgICAgIyMgICAgICAjIyAgICBEZXIgVGFuamlhbiBsZXJudCBkZW4gVW1nYW5nIG1pdCB2ZXJzY2hpZWRlbnN0ZW4gRmVybi0KKyAgICAgICMjICAgICAgICMjICAgIHVuZCBOYWhrYW1wZndhZmZlbiwgZ2xlaWNoemVpdGlnIHN0cmVidCBlciBkYW5hY2gsIGRpZQorICAgICMjICAgICAjICAjIyAgICAgS3JhZWZ0ZSBkZXMgVW5pdmVyc3VtcyBpbiBGb3JtIHZvbiBtYWVjaHRpZ2VuIFNwcnVlY2hlbgorICAjIyMgICAgICAgIyMjIyAgICAgZnVlciBzaWNoIHp1IG51dHplbi4KKyAjICAgICAgICAgICAjICAgICAgICAgCisgICAgICAgICAgICAgICAgICAgICBOYWVoZXJlcyB6dSBkZXIgR2lsZGUgZXJ6YWVobHQgZWluZW0gZ2VybmUgZGVyCisgTGVocm1laXN0ZXIgZGVyIEdpbGRlLCBTaWFtaWwsIG9kZXIgZGVyIFNjaHVsbGVpdGVyIE9ydGhvc2l1cy4gCisgCisgVW0gc2ljaCBkZXIgVGFuamlhbmdpbGRlIGFuenVzY2hsaWVzc2VuIHNvbGx0ZSBEZWluZSBTdHVmZSBtaW5kZXN0ZW5zIGRlcgorIDUuIGVudHNwcmVjaGVuLCBhbGwgRGVpbmUgQXR0cmlidXRlIDUgb2RlciBtZWhyIGJldHJhZ2VuLCBEZWluIENoYXJha3RlcgorIHdlZGVyIHNhdGFuaXNjaCBub2NoIGhlaWxpZyBzZWluIHVuZCBEdSBzb2xsc3QgZWluIEFsdGVyIHZvbiB3ZW5pZ3N0ZW5zIAorIGVpbmVtIFRhZyBhdWZ3ZWlzZW4uIFp1c2FldHpsaWNoIGJlbm9ldGlnc3QgRHUgNTAgQWJlbnRldWVycHVua3RlLgorCisgV2VyIGVpbm1hbCBNaXRnbGllZCBkZXIgQ2hhb3MtIG9kZXIgS2xlcmlrZXJnaWxkZSB3YXIsIGthbm4gZGVyIFRhbmppYW5naWxkZQorIG5pY2h0IG1laHIgYmVpdHJldGVuIQorICAgICAgICAgICAgICAgICAgICAgICAgIAorIFNJRUhFIEFVQ0g6CisgICAgZ2lsZGVuCisKKyBMRVRaVEUgQWVOREVSVU5HOgorICAgIE1vbiwgMTcuIE1haSAyMDA0LCAxNzoxMDowMCB2b24gTmliZWwKZGlmZiAtLWdpdCBhL2RvYy9oZWxwL3RlYW1rYW1wZiBiL2RvYy9oZWxwL3RlYW1rYW1wZgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4xYWY2NWMzCi0tLSAvZGV2L251bGwKKysrIGIvZG9jL2hlbHAvdGVhbWthbXBmCkBAIC0wLDAgKzEsMTU1IEBACitUZWFta2FtcGYKKz09PT09PT09PQorCitHcnVlbmRlbiBlaW5lcyBUZWFtcyB1bmQgQXVmbmFobWUgbmV1ZXIgTWl0Z2xpZWRlcgorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KK3RlYW0gZm9sZ2UgICAgICAgICAgICBFaW4gU3BpZWxlciBrYW5uIG1pdCA8dGVhbSBmb2xnZSBuYW1lPiBiZWFudHJhZ2VuLAorICAgICAgICAgICAgICAgICAgICAgIGRhc3MgPG5hbWU+IGlobiBpbiBzZWluIFRlYW0gYXVmbmltbXQuCisKK3RlYW0gYXVmbmFobWUgICAgICAgICBXZW5uIGVpbiBTcGllbGVyIGRpZSBBdWZuYWhtZSBpbnMgVGVhbSBiZWFudHJhZ3QgaGF0LAorICAgICAgICAgICAgICAgICAgICAgIGthbm4gZGVyIFRlYW1sZWl0ZXIgaWhuIG1pdCA8dGVhbSBhdWZuYWhtZSBuYW1lPgorICAgICAgICAgICAgICAgICAgICAgIGF1Zm5laG1lbi4gV2VubiBtYW4gbm9jaCBuaWNodCBpbiBlaW5lbSBUZWFtIGlzdCwKKyAgICAgICAgICAgICAgICAgICAgICBzbyB3aXJkIGhpZXJtaXQgZWlucyBnZWdydWVuZGV0LgorICAgICAgICAgICAgICAgICAgICAgIFZvbiBkZXIgQXVmbmFobWUgYXVzZ2VzY2hsb3NzZW4gc2luZCBHYWVzdGUgdW5kCisgICAgICAgICAgICAgICAgICAgICAgR2Vpc3RlciBzb3dpZSBad2VpdHNwaWVsZXIgdm9uIFRlYW1taXRnbGllZGVybi4KKwordGVhbSB2ZXJsYXNzZSAgICAgICAgIE1pdCBkaWVzZW0gQmVmZWhsIHZlcmxhZXNzdCBtYW4gZGFzIFRlYW0uCisKK09yZ2FuaXNhdGlvbiBpbm5lcmhhbGIgZGVzIFRlYW1zCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQordGVhbSBsZWl0ZXIgICAgICAgICAgIERlciBUZWFtbGVpdGVyIHNlaW5lIEF1ZmdhYmUgYW4gZWluIGFuZGVyZXMgTWl0Z2xpZWQKKyAgICAgICAgICAgICAgICAgICAgICBhYmdlYmVuLiBTY2hsYWVmdCBkZXIgVGVhbWxlaXRlciBlaW4gb2RlciBpc3QgbGFlbmdlcgorICAgICAgICAgICAgICAgICAgICAgIGFscyAxMCBNaW51dGVuIGluYWt0aXYsIGtvZW5uZW4gYXVjaCBkaWUgYW5kZXJlbgorICAgICAgICAgICAgICAgICAgICAgIE1pdGdsaWVkZXIgZWluZW4gbmV1ZW4gVGVhbWxlaXRlciBlcm5lbm5lbi4KKwordGVhbSBlbnRsYXNzZSAgICAgICAgIERlciBUZWFtbGVpdGVyIGthbm4gYXVjaCBNaXRnbGllZGVyIGVudGxhc3Nlbi4KKworQW5ncmlmZnNrb29yZGluYXRpb24KKy0tLS0tLS0tLS0tLS0tLS0tLS0tCit0ZWFtIGFuZ3JpZmZzYmVmZWhsICAgRWluIFRlYW1taXRnbGllZCBrYW5uIGVpbmVuIEJlZmVobCBhbmdlYmVuLCBkZXIKKyAgICAgICAgICAgICAgICAgICAgICBhdXNnZWxvZXN0IHdpcmQsIHNvYmFsZCBkZXIgVGVhbWxlaXRlciBkYXMgU2lnbmFsCisgICAgICAgICAgICAgICAgICAgICAgenVtIEFuZ3JpZmYgZ2lidC4KKyAgICAgICAgICAgICAgICAgICAgICBCZWlzcGllbDogPHRlYW0gYW5ncmlmZnNiZWZlaGwgbm9yZGVuPiAtIHdlbm4gZGVyCisgICAgICAgICAgICAgICAgICAgICAgVGVhbWxlaXRlciBkYXMgU2lnbmFsIGdpYnQgZ2VodCBtYW4gbmFjaCBOb3JkZW4KKyAgICAgICAgICAgICAgICAgICAgICB6dW0gTW9uc3Rlci4KKwordGVhbSBhbmdyaWZmICAgICAgICAgIERlciBUZWFtbGVpdGVyIGxvZXN0IGRlbiBBbmdyaWZmc2JlZmVobCBiZWkgYWxsZW4KKyAgICAgICAgICAgICAgICAgICAgICBUZWFtbWl0Z2xpZWRlcm4gYXVzLCBkaWUgaW0gZ2xlaWNoZW4gUmF1bSBzdGVoZW4KKyAgICAgICAgICAgICAgICAgICAgICB1bmQgZWluZW4gQW5ncmlmZnNiZWZlaGwgZWluZ2VzdGVsbHQgaGFiZW4uCisKK09yZ2FuaXNhdGlvbiBkZXMgVGVhbWthbXBmZXMKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAgICAgICAgICAgICAgICAgICAgICBUZWFtbWl0Z2xpZWRlciBoYWJlbiBkaWUgTW9lZ2xpY2hrZWl0LCBpaHJlIFBvc2l0aW9uCisgICAgICAgICAgICAgICAgICAgICAgaW5uZXJoYWxiIGRlciBLYW1wZmF1ZnN0ZWxsdW5nIHp1IGJlc3RpbW1lbi4gU28ga29lbm5lbgorICAgICAgICAgICAgICAgICAgICAgIGRpZSBLYWVtcGZlciB2b3JuZSBrYWVtcGZlbiB1bmQgZGVuIEtsZXJpa2VyIGRlY2tlbgorICAgICAgICAgICAgICAgICAgICAgIGRlciBzaWUgc3RhZW5kaWcgaGVpbHQgOi0pCisKK3RlYW0ga2FtcGZyZWloZSAgICAgICBKZWRlcyBUZWFtbWl0Z2xpZWQga2FubiBzZWluZW4gUG9zaXRpb25zd3Vuc2NoIG1pdAorICAgICAgICAgICAgICAgICAgICAgIDx0ZWFtIGthbXBmcmVpaGUgbnI+IGFuZ2ViZW4sIHdvYmVpIDxucj4gaW0gQmVyZWljaAorICAgICAgICAgICAgICAgICAgICAgIHZvbiAxIGJpcyA1IHNlaW4gbXVzcy4gRGFiZWkgd2lyZCBqZWRvY2ggaW1tZXIgZGllIHZvbQorICAgICAgICAgICAgICAgICAgICAgIFRlYW1sZWl0ZXIgZ2V3dWVuc2NodGUgRm9ybWF0aW9uIGVpbmdlaGFsdGVuLgorICAgICAgICAgICAgICAgICAgICAgIER1cmNoIGRpZSBUZWFtbWl0Z2xpZWRlciBpbiBkZW4gdm9yZGVyZW4gUmVpaGVuCisgICAgICAgICAgICAgICAgICAgICAgd2VyZGVuIGRpZSBpbiBkZW4gaGludGVyZW4gUmVpaGVuIGdlc2NodWV0enQuCisgICAgICAgICAgICAgICAgICAgICAgQmVpc3BpZWxzd2Vpc2UgcmVpY2hlbiBkcmVpIE1pdGdsaWVkZXIgaW4gUmVpaGUgMSBhdXMsCisgICAgICAgICAgICAgICAgICAgICAgendlaSBpbiBSZWloZSAyIHVuZCBlaW5lcyBpbiBSZWloZSAzIHp1IHNjaHVldHplbi4KKyAgICAgICAgICAgICAgICAgICAgICBEZXIgQW50ZWlsIGRlciBTY2hsYWVnZSBkaWUgZWluIE1pdGdsaWVkIGFiYmVrb21tdAorICAgICAgICAgICAgICAgICAgICAgIGVudHNwcmljaHQgZGVyIEFuemFobCBkZXIgdW5nZXNjaHVldHplbiBNaXRnbGllZGVyCisgICAgICAgICAgICAgICAgICAgICAgc2VpbmVyIFJlaWhlIChpbiBkZXIgZXJzdGVuIFJlaWhlIHBsdXMgMSkuCisgICAgICAgICAgICAgICAgICAgICAgTnVyIGRpZSBlcnN0ZSBSZWloZSBrYW5uIHNlbGJlciBpbSBOYWhrYW1wZiB6dXNjaGxhZ2VuLgorCit0ZWFtIGZsdWNodHJlaWhlICAgICAgRWluIFRlYW1taXRnbGllZCBrYW5uIGVpbmUgUmVpaGUgYW5nZWJlbiwgaW4gZGllIGVyCisgICAgICAgICAgICAgICAgICAgICAgYmVpIGRlciBGbHVjaHQgd2VjaHNlbG4gbW9lY2h0ZSBzdGF0dCBhYnp1aGF1ZW4uCisgICAgICAgICAgICAgICAgICAgICAgU28ga2FubiBtYW4gc2ljaCAtIGF1c3JlaWNoZW5kZSBEZWNrdW5nIHZvcmF1c2dlc2V0enQgLQorICAgICAgICAgICAgICAgICAgICAgIGluIFJ1aGUgdm9uIGRlbSBtaXRnZWJyYWNodGVuIEtsZXJpa2VyIGhlaWxlbiBsYXNzZW4uCisgICAgICAgICAgICAgICAgICAgICAgV2lyZCBkaWUgRmx1Y2h0IGF1c2dlbG9lc3QsIHNvIHdpcmQgZGllIEZsdWNodHJlaWhlIHp1cgorICAgICAgICAgICAgICAgICAgICAgIGdld3VlbnNjaHRlbiBLYW1wZnJlaWhlLiBNaXQKKyAgICAgICAgICAgICAgICAgICAgICA8dGVhbSBmbHVjaHRyZWloZSAwPiB3aXJkIGRpZSBGbHVjaHJlaWhlIGRlYWt0aXZpZXJ0LgorICAgICAgICAgICAgICAgICAgICAgIEZhbGxzIGRpZSBGbHVjaHQgaW4gZWluZSBoaW50ZXJlIFJlaWhlIG5pY2h0IGdlbGluZ3QsCisgICAgICAgICAgICAgICAgICAgICAgd2lyZCBkaWUgbm9ybWFsZSBGbHVjaHQgYXVzZ2Vsb2VzdC4KKwordGVhbSBmb3JtYXRpb24gICAgICAgIERlciBUZWFtbGVpdGVyIGthbm4gYmVzdGltbWVuLCBpbm5lcmhhbGIgd2VsY2hlcgorICAgICAgICAgICAgICAgICAgICAgIEdyZW56ZW4gZGllIEZvcm1hdGlvbiBlaW5nZWhhbHRlbiB3ZXJkZW4gc29sbC4KKyAgICAgICAgICAgICAgICAgICAgICBEaWVzIGdlc2NoaWVodCBtaXQgPHRlYW0gZm9ybWF0aW9uIG1pbjEtbWF4MQorICAgICAgICAgICAgICAgICAgICAgIG1pbjItbWF4MiBtaW4zLW1heDMgbWluNC1tYXg0IG1pbjUtbWF4NT4uIERpZQorICAgICAgICAgICAgICAgICAgICAgIEJlc2NocmFlbmt1bmdlbiBmdWVyIG5pY2h0IGFuZ2VnZWJlbmUgUmVpaGVuCisgICAgICAgICAgICAgICAgICAgICAgd2VyZGVuIG5pY2h0IGdlYWVuZGVydC4gV2VubiBzdGF0dCBNaW5pbXVtIHVuZAorICAgICAgICAgICAgICAgICAgICAgIE1heGltdW0gbnVyIGVpbmUgWmFobCBhbmdlZ2ViZW4gd2lyZCwgZ2lsdCBkaWVzZQorICAgICAgICAgICAgICAgICAgICAgIGZ1ZXIgYmVpZGUgV2VydGUuIERpZSBHcmVuemVuIHdlcmRlbiBhdXRvbWF0aXNjaCBzbworICAgICAgICAgICAgICAgICAgICAgIGFuZ2VwYXNzdCwgZGFzcyBzaWUgZXJmdWVsbGJhciBzaW5kLCBtYXhtaWFsIDYKKyAgICAgICAgICAgICAgICAgICAgICBNaXRnbGllZGVyIGluIGplZGVyIFJlaWhlIHN0ZWhlbiB1bmQgbWluZGVzdGVucyBlaW5lcworICAgICAgICAgICAgICAgICAgICAgIGluIFJlaWhlIDEuCisgICAgICAgICAgICAgICAgICAgICAgQmVpc3BpZWw6ICJ0ZWFtIGZvcm1hdGlvbiAzLTQgMiAxIgorCit0ZWFtIHVlYmVyc2ljaHQgICAgICAgWmVpZ3QgZGllIGVpZ2VuZW4gdW5kIGdlZ25lcmlzY2hlbiBSZWloZW4gYW4uCisKK1dlaXRlcmUgbnVldHpsaWNoZSBUZWFtYmVmZWhsZQorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCit0ZWFtIGF1dG9mb2xnZSAgICAgICAgVGVhbW1pdGdsaWVkZXIsIGRpZSBtaXQgPHRlYW0gYXV0b2ZvbGdlIGVpbj4gZGVuCisgICAgICAgICAgICAgICAgICAgICAgRm9sZ2Vtb2R1cyBha3RpdmllcnQgaGFiZW4sIGZ1ZWhyZW4gYXV0b21hdGlzY2gKKyAgICAgICAgICAgICAgICAgICAgICBqZWRlbiBCZWZlaGwgZGVzIFRlYW1sZWl0ZXJzIChuYWNoIGt1cnplciBWZXJ6b2VnZXJ1bmcpCisgICAgICAgICAgICAgICAgICAgICAgYXVzLCBkZXIgZWluZW4gT3J0c3dlY2hzZWwgYmV3aXJrdCwgdm9yYXVzZ2VzZXR6dCBzaWUKKyAgICAgICAgICAgICAgICAgICAgICBzdGVoZW4gZG9ydCB3byBkZXIgTGVpdGVyIGRpcmVrdCB2b3Igc2VpbmVtIE9ydHN3ZWNoc2VsCisgICAgICAgICAgICAgICAgICAgICAgd2FyLgorICAgICAgICAgICAgICAgICAgICAgIERlciBUZWFtbGVpdGVyIG11c3MgZGVuIEZvbGdlbW9kdXMgYXVjaCBha3RpdmllcnQgaGFiZW4sCisgICAgICAgICAgICAgICAgICAgICAgZGFtaXQgZGllIGFuZGVyZW4gaWhtIGZvbGdlbi4KKyAgICAgICAgICAgICAgICAgICAgICBXZW5uIGRlciBUZWFtbGVpdGVyIHZlcnN1Y2h0IHp1IGZsaWVoZW4sIHdpcmQgZGVyCisgICAgICAgICAgICAgICAgICAgICAgRm9sZ2Vtb2R1cyBmdWVyIGlobiBkZWFrdGl2aWVydC4KKwordGVhbSBpbmZvICAgICAgICAgICAgIEdpYnQgSW5mb3JtYXRpb25lbiB1ZWJlciBkaWUgVGVhbW1pdGdsaWVkZXIuCisgICAgICAgICAgICAgICAgICAgICAgRGFiZWkgc3RlaHQgaW4gZGVuIFNwYWx0ZW46CisgICAgICAgICAgICAgICAgICAgICAgKiAgICAgIC0gS2VubnplaWNobnVuZyBkZXMgVGVhbWxlaXRlcnMKKyAgICAgICAgICAgICAgICAgICAgICBOYW1lICAgLSBkZXIgTmFtZQorICAgICAgICAgICAgICAgICAgICAgIEdpbGRlICAtIGRpZSBHaWxkZQorICAgICAgICAgICAgICAgICAgICAgIExWICAgICAtIFN0dWZlCisgICAgICAgICAgICAgICAgICAgICAgR0xWICAgIC0gR2lsZGVuc3R1ZmUKKyAgICAgICAgICAgICAgICAgICAgICBMUC9NTFAgLSBMZWJlbnNwdW5rdGUKKyAgICAgICAgICAgICAgICAgICAgICBLUC9NS1AgLSBLb256ZW50cmF0aW9ucy9NYWdpZXB1bmt0ZQorICAgICAgICAgICAgICAgICAgICAgIFZvcnMuICAtIFZvcnNpY2h0CisgICAgICAgICAgICAgICAgICAgICAgR1IgICAgIC0gR2V3dWVuc2NodGUgUmVpaGUKKyAgICAgICAgICAgICAgICAgICAgICBBUiAgICAgLSBBa3R1ZWxsZSBSZWloZSAoYmV6b2dlbiBhdWZzIGdhbnplIFRlYW0pCisgICAgICAgICAgICAgICAgICAgICAgVFIgICAgIC0gVGF0c2FlY2hsaWNoZSBSZWloZSAoYmV6b2dlbiBhdWYgQW53ZXNlbmRlKQorICAgICAgICAgICAgICAgICAgICAgIEZSICAgICAtIEZsdWNodHJlaWhlCisgICAgICAgICAgICAgICAgICAgICAgQSAgICAgIC0gQW5ncmlmZnNiZWZlaGwgZWluZ2VzdGVsbHQKKyAgICAgICAgICAgICAgICAgICAgICBWICAgICAgLSBWZXJmb2xnZW1vZHVzIGFrdGl2aWVydAorICAgICAgICAgICAgICAgICAgICAgIERlciBUZWFtbGVpdGVyIGthbm4gZHVyY2ggZGllIEFuZ2FiZSAibGFuZyIgZWluZQorICAgICAgICAgICAgICAgICAgICAgIHp3ZWl6ZWlsaWdlIEF1c2dhYmUgYmVrb21tZW4sIGJlaSBkZXIgYXVjaAorICAgICAgICAgICAgICAgICAgICAgIEFuZ3JpZmZzYmVmZWhsIHVuZCBGbHVjaHRyaWNodHVuZyBnZXplaWd0IHdlcmRlbi4KKyAgICAgICAgICAgICAgICAgICAgICBXZW5uIG1hbiAic29ydGllcnQiIGFuZ2lidCwgd2lyZCBkaWUgQXVzZ2FiZSBuYWNoCisgICAgICAgICAgICAgICAgICAgICAgKFRSLEFSLEdSLE5hbWUpIHNvcnRpZXJ0LCBiZWkgImFscGhhYmV0aXNjaCIgZXJmb2xndAorICAgICAgICAgICAgICAgICAgICAgIGRpZSBTb3J0aWVydW5nIG5hY2ggZGVtIE5hbWVuLCB3b2JlaSBTcGllbGVyIGplZG9jaAorICAgICAgICAgICAgICAgICAgICAgIHZvciBhbmRlcmVuIFRlYW1taXRnbGllZGVybiBlaW5nZW9yZG5ldCB3ZXJkZW4uCisgICAgICAgICAgICAgICAgICAgICAgQW5zb25zdGVuIHdpcmQgbmFjaCBBUiBnZW9yZG5ldC4KKwordGVhbSBmYXJiZW4gICAgICAgICAgIERhbWl0IGxhZXNzdCBzaWNoIGFlbmRlcm4sIGFiIHdhbm4gZGllIGVpZ2VuZW4KKyAgICAgICAgICAgICAgICAgICAgICBMZWJlbnNwdW5rdGUgYnp3LiBLb256ZW50cmF0aW9uc3B1bmt0ZSBnZWxiIG9kZXIKKyAgICAgICAgICAgICAgICAgICAgICBnYXIgcm90IChiencuIGZldHQpIGFuZ2V6ZWlndCB3ZXJkZW4uCisKK3RlYW0gb3J0ZSAgICAgICAgICAgICBaZWlndCBhbiwgd28gc2ljaCBkaWUgVGVhbW1pdGdsaWVkZXIgYmVmaW5kZW4uCisgICAgICAgICAgICAgICAgICAgICAgTm9ybWFsZXJ3ZWlzZSB3ZXJkZW4gbnVyIFNwaWVsZXIgYW5nZXplaWd0LCBtaXQKKyAgICAgICAgICAgICAgICAgICAgICAiYWxsZSIgamVkb2NoIGF1Y2ggYW5kZXJlIFRlYW1taXRnbGllZGVyLgorCit0ZWFtIHJ1ZmUgICAgICAgICAgICAgTWl0dGVpbHVuZyBhbiBhbGxlIFRlYW1taXRnbGllZGVyLgorCit0ZWFtIGhpc3QgICAgICAgICAgICAgSGlzdG9yeSBkZXIgVGVhbW1pdHRlaWx1bmdlbi4gRGllIEFuemFobCBkZXIKKyAgICAgICAgICAgICAgICAgICAgICBhbnp1emVpZ2VuZGVuIFplaWxlbiAoYmlzIDEwMCkga2FubiBhbmdlZ2ViZW4gd2VyZGVuLgorCit0ZWFtIG5hbWUgICAgICAgICAgICAgTWFuIGthbm4gc2VpbmVtIFRlYW0gYXVjaCBlaW5lbiBOYW1lbiBnZWJlbi4KKwordGVhbSBoaWxmZSAgICAgICAgICAgIEdpYnQgZWluZSBrdXJ6ZSBCZWZlaGxzdWViZXJzaWNodC4KKwordGVhbSBsaXN0ZSAgICAgICAgICAgIFplaWd0IGFuLCB3ZWxjaGUgVGVhbXMgZXMgc2Nob24gZ2lidC4KKworUHVua3RldmVydGVpbHVuZworLS0tLS0tLS0tLS0tLS0tLQorRGllIEVyZmFocnVuZ3NwdW5rdGUgZnVlcnMgVG9ldGVuIGVpbmVzIE1vbnN0ZXJzIHdlcmRlbiB6dXIgSGFlbGZ0ZQordW50ZXIgZGVuIGFud2VzZW5kZW4gVGVhbW1pdGdsaWVkZXJuIHVuZCB6dXIgSGFlbGZ0ZSBhbnRlaWxtYWVzc2lnCit2ZXJ0ZWlsdC4gRGllcyBnaWx0IG51ciBmdWVyIGRhcyBUZWFtIGRlcyBLaWxsZXJzLCBmdWVyIGFsbGUgYW5kZXJlbgoraXN0IGRpZSBWZXJ0ZWlsdW5nIHdpZSBiaXNoZXIgYW50ZWlsbWFlc3NpZy4KKworRGllIEVyc3RraWxscHVua3RlIHdlcmRlbiBhbiBlaW4gVGVhbW1pdGdsaWVkIHZlcmdlYmVuLCBkYXMgZGllc2Ugbm9jaAorbmljaHQgaGF0LiBEYWJlaSB3ZXJkZW4gVGVhbW1pdGdsaWVkZXIgaW4gZGVyIGVyc3RlbiBSZWloZSBiZXZvcnp1Z3QuCisKK0Fiay4KKy0tLS0KK1N0YXR0ICJ0ZWFtIiBzaW5kIGF1Y2ggImdydXBwZSIgdW5kIGRpZSBBYmt1ZXJ6dW5nICJnIiBtb2VnbGljaC4KKwpkaWZmIC0tZ2l0IGEvZG9jL2hlbHAvdGVhbXNwZWFrIGIvZG9jL2hlbHAvdGVhbXNwZWFrCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmRmZDE0MzMKLS0tIC9kZXYvbnVsbAorKysgYi9kb2MvaGVscC90ZWFtc3BlYWsKQEAgLTAsMCArMSw2NCBAQAorCitEYXMgTW9yZ2VuZ3JhdWVuLVRlYW1zcGVhaworPT09PT09PT09PT09PT09PT09PT09PT09PT0KKworVGVhbXNwZWFrIC0gd2FzIGlzdCBkYXMgdWViZXJoYXVwdD8KKworICAgIFRlYW1zcGVhayBpc3QgZWluIFZvaWNlLUNoYXQtU3lzdGVtLCB6dSBkZW0gbWFuIHNpY2ggbWl0IGVpbmVtIGdlZWlnbmV0ZW4KKyAgICBDbGllbnQgdmVyYmluZGVuIGthbm4sIHVtIHNpY2ggbWl0IGFuZGVyZW4gTGV1dGVuIHp1IHVudGVyaGFsdGVuLiBEYXMKKyAgICBHYW56ZSBmdW5rdGlvbmllcnQgaW0gR3J1bmRlIGFlaG5saWNoIHdpZSBTa3lwZSwgaGF0IGFiZXIgZ2VnZW51ZWJlcgorICAgIGRpZXNlbSBkZW4gVm9ydGVpbCwgZGFzcyBkaWUgS29tbXVuaWthdGlvbiB1ZWJlciBTZXJ2ZXIgbGFldWZ0LCBkaWUKKyAgICBuaWNodCB1bnRlciBkZXIgS29udHJvbGxlIHZvbiBGcmVtZGZpcm1lbiBzdGVoZW4sIHNvIGRhc3MgYXVjaCBuaWNodHMKKyAgICBtaXRnZWxvZ2d0IHdpcmQsIHdhcyBkb3J0IGdlc3Byb2NoZW4gd2lyZC4KKworCitXb2Z1ZXIgYnJhdWNodCBtYW4gZGFzPworICAgIAorICAgIEltIFRlYW1zcGVhayBrYW5uIG1hbiBzaWNoIHRyZWZmZW4sIHVtIGdlbWVpbnNhbSBNZWhyc3BpZWxlcnF1ZXN0cyB6dQorICAgIGxvZXNlbiwgZ3JvZXNzZXJlIE1ldHplbGFrdGlvbmVuIHp1IGtvb3JkaW5pZXJlbiBvZGVyIGVpbmZhY2ggbnVyCisgICAgenUgcXVhdHNjaGVuLgorCisgICAgRnVlciBNYWdpZXIgZ2lidCBlcyBzZXBhcmF0ZSBDaGFubmVsLCBpbiBkZW5lbiBtYW4gc2ljaCB6dXIgRGlza3Vzc2lvbgorICAgIHZvbiBQcm9ncmFtbWllcnRoZW1lbiB1bmQgLXByb2JsZW1lbiB0cmVmZmVuIGthbm4uCisKKworQmluIGljaCBzY2hvbiBkcmluPworCisgICAgV2VubiBEdSBMdXN0IGJla29tbWVuIGhhc3QsIHVuc2VyIFRTIG1hbCBhdXN6dXByb2JpZXJlbiwgYmVub2V0aWdzdCBEdQorICAgIGZvbGdlbmRlczoKKworICAgIC0gZWluZSBTb3VuZGthcnRlIGltIFBDCisgICAgLSBMYXV0c3ByZWNoZXIgdW5kIGVpbiBNaWtyb2ZvbiwgYmVzc2VyIGplZG9jaCBlaW4gSGVhZHNldAorICAgIC0gZGVuIFRlYW1zcGVhazMtQ2xpZW50IHZvbiBodHRwOi8vd3d3LnRlYW1zcGVhay5jb20KKyAgICAtIGRpZSBadWdhbmdzZGF0ZW46CisKKyAgICAgIFNlcnZlcm5hbWU6ICAgICBtZ3RzLm11ZC5kZSAoc29sbHRlIG9obmUgUG9ydGFuZ2FiZSBmdW5rdGlvbmllcmVuKQorICAgICAgU2VydmVycGFzc3dvcnQ6IGRlciBOYW1lIHVuc2VyZXMgYmVrYW5udGVuIFVydmF0ZXJzIGFsbGVyIE1hZ2llcgorICAgICAgU2VydmVyLUlQIChmYWxscyBiZW5vZXRpZ3QpOiA4NS4yMTQuMjUwLjE4ODo0NzExCisKKworICAgIEltIFRlYW1zcGVhay1DbGllbnQga2FubnN0IER1IGRpZXNlIERhdGVuIGltIE1lbnVlIHVudGVyICJGYXZvcml0ZW4gLQorICAgIEZhdm9yaXRlbiB2ZXJ3YWx0ZW4iIGVpbnRyYWdlbiwgaW5kZW0gRHUgZWluZW4gbmV1ZW4gRmF2b3JpdGVuIGFubGVnc3QKKyAgICB1bmQgdW50ZXIgIkFkcmVzc2UiIGRlbiBTZXJ2ZXJuYW1lbiBlaW50cmFlZ3N0LiBEZWluZW4gU3BpZWxlcm5hbWVuCisgICAgdHJhZWdzdCBEdSBub2NoIHVudGVyICJOaWNrbmFtZSIgZWluLCB1bmQgdW50ZXIgIlNlcnZlciBQYXNzd29ydCIgCisgICAgamVuZXMsIGRhcyBEdSAoaG9mZmVudGxpY2gpIGF1cyBkZW0gSGlud2VpcyBvYmVuIGFibGVpdGVuIGtvbm50ZXN0LgorCisgICAgV2VubiBEdSBtb2VjaHRlc3QsIGthbm5zdCBEdSBkYXMgTUctVFMgbm9jaCBhbHMgU3RhbmRhcmQtU2VydmVyCisgICAgZWluc3RlbGxlbiwgaW5kZW0gRHUgaW4gZGVyIEZhdm9yaXRlbnZlcndhbHR1bmcgdW50ZW4gbGlua3MgYXVmICJNZWhyIgorICAgIGtsaWNrc3QgdW5kIGRhbm4gZWluIEhhZWtjaGVuIGJlaSAiQmVpbSBTdGFydCB2ZXJiaW5kZW4iIHNldHp0LiBEYW5uCisgICAgd2lyc3QgRHUgYmVpIGplZGVtIFN0YXJ0ZW4gZGVzIFRTMy1DbGllbnRzIGRpcmVrdCBtaXQgZGVtIE1HLVRTIAorICAgIHZlcmJ1bmRlbi4KKworICAKK05vY2ggZWluaWdlIEhpbndlaXNlOgorCisgICAgRGVyIFNlcnZlciB3aXJkIGRlcnplaXQgdm9uIE9sbGkgenVyIFZlcmZ1ZWd1bmcgZ2VzdGVsbHQsIHVtIGRpZQorICAgIE1vZWdsaWNoa2VpdCB6dW0gQXVzcHJvYmllcmVuIGFuenViaWV0ZW4sIGJlbmVobXQgRXVjaCBhbHNvLCB3ZW5uIElocgorICAgIGRhIGRyYXVmIHNlaWQuIDotKQorCisgICAgRGllIFJlY2h0ZXZlcndhbHR1bmcgdm9uIFRTMyBpc3QgYXVzZ2VzcHJvY2hlbiBrb21wbGV4IGdlcmF0ZW4sIHNvIGRhc3MKKyAgICB3aXIgdW0gR2VkdWxkIGJpdHRlbiBtb2VjaHRlbiwgd2VubiBpcmdlbmRldHdhcyBuaWNodCBhdWYgQW5oaWViCisgICAgZnVua3Rpb25pZXJ0LgorCiszMS4xMC4yMDEyICBBcmF0aG9ybgorCmRpZmYgLS1naXQgYS9kb2MvaGVscC90b2QgYi9kb2MvaGVscC90b2QKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYjVlMjA1OQotLS0gL2Rldi9udWxsCisrKyBiL2RvYy9oZWxwL3RvZApAQCAtMCwwICsxLDM3IEBACisKK0RlciBUb2QgdW5kIHNlaW5lIEZvbGdlbgorPT09PT09PT09PT09PT09PT09PT09PT09CisKKyAgICBJbSBNb3JnZW5HcmF1ZW4gZ2lidCBlcyB2aWVsZSB2ZXJzY2hpZWRlbmUgTW9lZ2xpY2hrZWl0ZW4sIHp1IHN0ZXItCisgICAgYmVuLiBEZXIgaGFldWZpZ3N0ZSBHcnVuZCBpc3QgamVkb2NoIGRhcyBTaW5rZW4gZGVyIExlYmVuc3B1bmt0ZQorICAgIGF1ZiB1bnRlciBOdWxsLgorCisgICAgRGVuIFRvZCBiZW1lcmt0IG1hbiBhbiBlaW5lciBtZWhyIG9kZXIgd2VuaWdlciBvcmlnaW5lbGxlbiBUb2Rlcy0KKyAgICBzZXF1ZW56LCBkaWUgYXV0b21hdGlzY2ggdm9yIGVpbmVtIGFibGFldWZ0OyBpbiBkaWVzZSBrYW5uIG5pY2h0CisgICAgZWluZ2VncmlmZmVuIHdlcmRlbi4gQXVzc2VyZGVtIHZlcmxpZXJ0IG1hbiBhbHMgU3BpZWxlciAzMyUgc2VpbmVyCisgICAgRXJmYWhydW5nc3B1bmt0ZS4gSmUgbWVociBFcmZhaHJ1bmcgbWFuIGdlc2FtbWVsdCBoYXQsIGRlc3RvIG1laHIKKyAgICBQdW5rdGUgdmVybGllcnQgbWFuIGVyZ28uIERhbWl0IGRlciBWZXJsdXN0IG5pY2h0IGlucyBCb2Rlbmxvc2UgCisgICAgc3RlaWdlbiBrYW5uLCBnZW5pZXNzZW4gU2VoZXIgZGVuIFZvcnRlaWwsIG1pdCBqZWRlciBuZXVlbiBTdHVmZQorICAgIHdlbmlnZXIgRXJmYWhydW5nc3B1bmt0ZSBpbSBUb2Rlc2ZhbGwgenUgdmVybGllcmVuLgorCisgICAgRWluIHdlaXRlcmVyIEVmZmVrdCBkZXMgU3RlcmJlbnMgaXN0IG5hdHVlcmxpY2ggZGVyIFZlcmx1c3QgZGVzIAorICAgIEtvZXJwZXJzLiBBdXMgZGVyIFRvZGVzc2VxdWVueiBrb21tdCBtYW4gYWxzIEdlaXN0IHdpZWRlciB6dXJ1ZWNrCisgICAgYXVmIGRpZSBXZWx0LiAoVGlwOiAicmFzc2xlIC9mcmV1bmRsaWNoIiA7LSkgVW0gd2llZGVyIGluIGRlbiBHZS0KKyAgICBudXNzIHZvbiBrb2VycGVybGljaGVuIEZyZXUobilkZW4genUga29tbWVuLCBtdXNzIG1hbiBlaW5lbiBoZWlsaWdlbgorICAgIE9ydCBhdWZzdWNoZW4gdW5kIGRhcyB3ZWx0bGljaGUgS29tbWFuZG8gImJldGUiIGVpbmdlYmVuLgorICAgIFtDaGFvdGVuIGJlc2Nod29lcmVuIGFsdGVybmF0aXYgZWluZW4gdW5oZWlsaWdlbiBEYWVtb25lbi5dCisKKyAgICBOYWNoIGRlbSBUb2QgdmVybGllcnQgbWFuIHplaXRsaWNoIGJlZ3Jlbnp0IEF0dHJpYnV0ZSB1bmQgYnVlc3N0CisgICAgR2lsZGVuZmFlaGlna2VpdGVuIGVpbi4gTmljaHRzZGVzdG90cm90eiBrYW5uIG1hbiBtaXQgZGllc2VtIE1hbHVzCisgICAgYW4gYW5kZXJlciBTdGVsbGUgaW0gTUcgd2VpdGVyc3BpZWxlbi4gV2VyIGRhcyB1ZWJlcnBydWVmZW4gbW9lY2h0ZSwKKyAgICBzb2xsdGUgbWl0ICJoaWxmZSBzdGVyYmVuIiBlaW5lIHNjaG5lbGxlIGxlZ2FsZSBNb2VnbGljaGtlaXQgZmluZGVuLAorICAgIExhcnMgZWluZW4gQmVzdWNoIGFienVzdGF0dGVuIG9kZXIgUm9jaHVzIGVpbmUgTWFpbCBzY2hpY2tlbi4KKworICAgIExhcnMgaXN0IHVlYnJpZ2VucyBkZXIgR2VoaWxmZSBkZXMgVG9kZXMsIHVuZCBSb2NodXMgZGllIGxpbmtlIHVuZAorICAgIGRpZSByZWNodGUgSGFuZCBkZXMgVG9kZXMuIDotKQorICAgCisgU0lFSEUgQVVDSDoKKyAgICBzdGVyYmVuLCBsZWJlbiwga2FtcGYKKworIExFVFpURSBBZU5ERVJVTkc6CisgICAgMTQuIE1hZXJ6IDIwMDQgR2xvaW5zb24KZGlmZiAtLWdpdCBhL2RvYy9oZWxwL3RvcGxpc3RlIGIvZG9jL2hlbHAvdG9wbGlzdGUKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMWQ5ODZjMQotLS0gL2Rldi9udWxsCisrKyBiL2RvYy9oZWxwL3RvcGxpc3RlCkBAIC0wLDAgKzEsMjEgQEAKKworIFRPUExJU1RFTjoKKyA9PT09PT09PT09CisKKyAgICBJbiAoZmFzdCkgamVkZXIgS25laXBlIGltIE1vcmdlbmdyYXVlbiBmaW5kZXQgbWFuIGVpbmUgVG9wbGlzdGUuCisgICAgQXVmIGRpZXNlciBUb3BsaXN0ZSBzdGVoZW4gZGllIDEwMCBTcGllbGVyLCBkaWUgZGllIG1laXN0ZW4KKyAgICBTdHVmZW5wdW5rdGUgaGFiZW4uCisgICAgV2VyIC0gYXVzIHdlbGNoZW4gR3J1ZW5kZW4gYXVjaCBpbW1lciAtIGRhcmF1ZiB2ZXJ6aWNodGVuIG1vZWNodGUsCisgICAgaW4gZGllc2VyIFRvcGxpc3RlIGF1Znp1dGF1Y2hlbiAod2VubiBlci9zaWUgZGVubiBndXQgZ2VudWcgZGFmdWVyCisgICAgaXN0KSwga2FubiBzaWNoIHNlbGJzdCBtaXQgZGVtIEtvbW1hbmRvCisKKyAgICAgICAgdG9wbGlzdGUgbmVpbgorCisgICAgZnVlciBkaWUgVG9wbGlzdGUgc3BlcnJlbi4gTWl0IGRlbSBLb21tYW5kbworCisgICAgICAgIHRvcGxpc3RlIGphCisKKyAgICB3aXJkIGRpZXMgd2llZGVyIHJ1ZWNrZ2FlbmdpZyBnZW1hY2h0LgorCisgTEVUWlRFIEFlTkRFUlVORzoKKyAgICBTb24sIDMwLjguMTk5OCwgMjI6MTA6MDAgdm9uIFBhcmFjZWxzdXMKZGlmZiAtLWdpdCBhL2RvYy9oZWxwL3VydWtoYWkgYi9kb2MvaGVscC91cnVraGFpCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjE5NjU1MzgKLS0tIC9kZXYvbnVsbAorKysgYi9kb2MvaGVscC91cnVraGFpCkBAIC0wLDAgKzEsMjggQEAKKworRGllIEdpbGRlIGRlciBVcnVraGFpCistLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworSW4gT3JraGF1c2VuIGltIFZlcmxvcmVuZW4gTGFuZCBnaWJ0IGVzIGRpZSBHaWxkZSBkZXIgVXJ1a2hhaS4gRGllcyBpc3QgZGllCitTdGFuZGFyZGdpbGRlIGRlciBPcmtzLgorCitBbGxlcmRpbmdzIGtvZW5uZW4gYXVjaCBhbmRlcmUgU3BpZWxlciBVcnVraGFpIHdlcmRlbi4gTnVyIEZlbGluZW4gd2VyZGVuCituaWNodCB6dWdlbGFzc2VuLCBkYSBkaWUgS2F0emVud2VzZW4gZWluZmFjaCBmZWhsIGFtIFBsYXR6ZSB3YWVyZW4uIFdlaXRlcmUKK1ZvcmF1c3NldHp1bmdlbiwgdW0gZWluIFVydWtoYWkgenUgd2VyZGVuLCBnaWJ0IGVzIG5pY2h0LCBhbGxlcmRpbmdzIHNvbGx0ZQorbWFuIGRpZSByaWNodGlnZSBFaW5zdGVsbHVuZyBtaXRicmluZ2VuIHVuZCBlcyBnZXJuZSBibHV0aWcgbW9lZ2VuLgorCitIcmFnem5vciBpc3QgZGVyIEdpbGRlbm1laXN0ZXIgZGVyIFVydWtoYWkuIEJlaSBpaG0ga2FubiBtYW4gZGVyIEdpbGRlIAorYmVpdHJldGVuIHVuZCBkaWUgdmVyc2NoaWVkZW5lbiBTcHJ1ZWNoZSBsZXJuZW4sIGVyIHdlaXNzIGF1Y2ggdmllbGVzIAordWViZXIgZGllIEdpbGRlLgorCitPcmtzIGtvZW5uZW4gdm9uIE5hdHVyIGF1cyBndXQgbWl0IGJlc3RpbW10ZW4gV2FmZmVuIGthZW1wZmVuLiBBdWNoIGRhenUKK3dlaXNzIEhyYWd6bm9yIG1laHIuCisKK1NJRUhFIEFVQ0g6CitiZWlzc2UsIG5hY2h0c2ljaHQsIGlkZW50aWZpemllcmUsIHNjaGFldHosIHJ1ZWxwc2UsIHdpcmJlbHdpbmQsCitzcHVja2UsIGhhbW1lcmZhdXN0LCBzdGVpbmhhdXQsIHJpZXNlbnByYW5rZSwgbGVpY2hlbmZsZWRkZXIsCitmdXJjaHQsIHRyb2xsc3RhZXJrZQorCitBTFMgTklDSFQtVVJVS0hBSSBNVVNTIE1BTiBEQUZVRVIgRk9MR0VOREUgU1lOVEFYIE5VVFpFTjoKK2hpbGZlIGdpbGRlIHVydWtoYWkgPHphdWJlcm5hbWU+Cit6LkIuIGhpbGZlIGdpbGRlIHVydWtoYWkgbmFjaHRzaWNodAorCmRpZmYgLS1naXQgYS9kb2MvaGVscC92ZXJlaW4gYi9kb2MvaGVscC92ZXJlaW4KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYTc0NWQ2NgotLS0gL2Rldi9udWxsCisrKyBiL2RvYy9oZWxwL3ZlcmVpbgpAQCAtMCwwICsxLDczIEBACisjPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSMNCisjICAgRFUgQklTVCBOT0NIIE5JQ0hUIE1JVEdMSUVEPyBEQU5OIExJRVMgQkVTT05ERVJTIFNPUkdGQUVMVElHISAgICMNCisjPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSMNCisNCitJbmZvcm1hdGlvbmVuIHp1bSBGb2VyZGVydmVyZWluIFByb2pla3QgTW9yZ2VuR3JhdWVuIGUuIFYuOg0KKy0gV1dXLVNlaXRlOiBodHRwOi8vbWcubXVkLmRlL1ZlcmVpbiANCistIE1QQSB1bnRlciBkZXIgUnVicmlrICJtb3JnZW5ncmF1ZW4udmVyZWluIg0KKw0KK1p3ZWNrIGRlcyBWZXJlaW5zOg0KK0ZvZXJkZXJ1bmcgZGVzIE1VRHMgTW9yZ2VuR3JhdWVuDQorLSBmaW5hbnppZWxsZSBNaXR0ZWwgZHVyY2ggU3BlbmRlbg0KKy0gQmV0cmV1dW5nIGRlcyB2ZXJlaW5zZWlnZW5lbiBSZWNobmVycywgYXVmIGRlbSBkYXMgTVVEIGxhZXVmdA0KKy0gS3Vyc2UgdW5kIFZvcnRyYWVnZSBmdWVyIFByb2dyYW1taWVyZXIgdW5kIFNwaWVsZXINCisgIChOYXR1ZXJsaWNoIGtlaW5lIFF1ZXN0bG9lc3VuZ2VuKQ0KK0RpZXNlIFppZWxlIHNpbmQgc2F0enVuZ3NiZWRpbmd0LiANCisNCitTYXR6dW5nOg0KKy0gaW0gVmVyZWluc2J1ZXJvIGltIE9yZG5lcg0KKy0gYXVmIGRlbiBXV1ctU2VpdGVuIGRlcyBWZXJlaW5zIChhdWNoIHp1bSBhdXNkcnVja2VuKQ0KKw0KK1dpZSB3ZXJkZSBpY2ggTWl0Z2xpZWQ/DQorLSBBbnRyYWcNCistIG1vZWdsaWNoc3QgYXVjaCBFaW56dWdzZXJtYWVjaHRpZ3VuZw0KKyhTaWVoZSBXV1ctU2VpdGUpDQorDQorV2FzIG1hY2ggaWNoIGFscyBNaXRnbGllZD8NCistIHp1IGRlbiBWZXJzYW1tbHVuZ2VuIGtvbW1lbg0KKy0gbWl0aGVsZmVuLCBkaWUgWndlY2tlIGRlcyBWZXJlaW5zIHp1IGVyZnVlbGxlbg0KKy0gU3BvbnNvcmVuIGZ1ZXIgZGVuIE1HIGUuIFYuIHN1Y2hlbiB1bmQgZGVtIFZvcnN0YW5kIG1pdHRlaWxlbg0KKyAgKGJpdHRlIGtlaW5lIEFsbGVpbmdhZW5nZSkNCistIEt1cnN0aGVtZW4gdm9yc2NobGFnZW4NCistIHNlbGJzdCBlaW5lbiBWb3J0cmFnIGhhbHRlbg0KKw0KK1dlciBpc3QgZWlnZW50bGljaCBkZXIgVm9yc3RhbmQ/DQorRGVyIFZvcnN0YW5kIGJlc3RlaHQgYXVzIGZvbGdlbmRlbiB2aWVyIFBlcnNvbmVuOg0KKw0KKzEuIFZvcnNpdHplbmRlcjogICBYdXRlbGl1cworICAgICAgICAgICAgICAgICAgIEhlbm5pbmcgVWxscmljaAorICAgICAgICAgICAgICAgICAgIEhpbW1lbHBmb3J0ZW5lciBXZWcgNTIKKyAgICAgICAgICAgICAgICAgICA1OTgyMyBBcm5zYmVyZworCisyLiBWb3JzaXR6ZW5kZXI6ICAgR2xvaW5zb24KKyAgICAgICAgICAgICAgICAgICBDaHJpc3RpYW4gQmVja2VyCisgICAgICAgICAgICAgICAgICAgQWJ0LVRob21hcy1TdHJhc3NlIDQwCisgICAgICAgICAgICAgICAgICAgODg2ODIgU2FsZW0KKworS2Fzc2Vud2FydDogICAgICAgIFZhbmlvbgorICAgICAgICAgICAgICAgICAgIENocmlzdGlhbiBGaWVkbGVyCisgICAgICAgICAgICAgICAgICAgQXRoZW5zdHIuIDI2CisgICAgICAgICAgICAgICAgICAgMjYzODQgV2lsaGVsbXNoYXZlbgorCitTY2hyaWZ0ZnVlaHJlcjogICAgR3VhcmQKKyAgICAgICAgICAgICAgICAgICBSZW5lIFdhZWNodGVyCisgICAgICAgICAgICAgICAgICAgS2FybC1LdW5nZXItU3RyLiA2NiAgICAgICAgICAgICAgICAgb2ZmaXppZWxsZQorICAgICAgICAgICAgICAgICAgIDEyNDM1IEJlcmxpbiAgICAgICAgICAgICAgICAgICAgICAgIFZlcmVpbnNhZHJlc3NlISEKKworVW5zZXJlIEtvbnRvdmVyYmluZHVuZzoKKworSUJBTiBERTA5IDI4MDIgMDA1MCA5MjA0IDE0MTcgMDAKK1NXSUZULUJJQyBPTEJPREVIMlhYWAorS29udG9udW1tZXI6IDkyMDQxNDE3MDAKK09sZGVuYnVyZ2lzY2hlIExhbmRlc2JhbmsgQUcKK0JMWjogMjgwIDIwMCA1MAorCitCZWkgRnJhZ2VuIHVlYmVyIGRlbiBWZXJlaW4ga29lbm50IElociBFdWNoIGRpcmVrdCBhbiBlaW5lIGRpZXNlciB2aWVyDQorUGVyc29uZW4gd2VuZGVuLiBJaHIgZXJyZWljaHQgYWxsZSBWb3JzdGFuZHNtaXRnbGllZGVyIGF1Y2ggcGVyIEUtTWFpbA0KK3VudGVyIGRlciBBZHJlc3NlIA0KKyAgICAgICAgICAgICAgICAgICAgICAgIHZvcnN0YW5kQG1nLm11ZC5kZS4NCisNCisjPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSMNCisjICAgICAgICAgICAgICBXQVMgWk9FR0VSU1QgRFUgTk9DSCwgV0VSREUgTUlUR0xJRUQhICAgICAgICAgICAgICAgICMNCisjPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSMNCisNCmRpZmYgLS1naXQgYS9kb2MvaGVscC93YWZmZW5mZXJ0aWdrZWl0ZW4gYi9kb2MvaGVscC93YWZmZW5mZXJ0aWdrZWl0ZW4KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZTZhNTI4NQotLS0gL2Rldi9udWxsCisrKyBiL2RvYy9oZWxwL3dhZmZlbmZlcnRpZ2tlaXRlbgpAQCAtMCwwICsxLDMzIEBACitBbGxnZW1laW5lIFdhZmZlbmZlcnRpZ2tlaXRlbjoKKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorCitCZXN0aW1tdGUgR2lsZGVuIGVybGVybmVuIFdhZmZlbmZlcnRpZ2tlaXRlbi4gRGllcyBzaW5kIGJpc2hlciBkaWUKK01pdGdsaWVkZXIgZm9sZ2VuZGVyIEdpbGRlbjoKKworIC0gQWJlbnRldXJlcgorIC0gQmllcnNjaHVldHRsZXIKKyAtIENoYW9zCisgLSBLYXR6ZW5rcmllZ2VyCisgLSBXaXBmZWxsYWV1ZmVyCisKK0RpZSBTcGllbGVyIGRpZXNlciBHaWxkZSBrb2VubmVuIGRhcyBLYWVtcGZlbiBtaXQgZGVuIFdhZmZlbmdhdHR1bmdlbiAKK0tldWxlbiwgU3RhZWJlLCBBZXh0ZSwgU3BlZXJlLCBNZXNzZXIsIFNjaHdlcnRlciB1bmQgUGVpdHNjaGVuIGR1cmNoIAorQmVudXR6dW5nIGRpZXNlciBXYWZmZW4gZXJsZXJuZW4uIEplIGJlc3NlciBtYW4gbWl0IGRlbiBXYWZmZW4gdW1nZWhlbgora2FubiwgZGVzdG8gbWVociBTY2hhZGVuIGthbm4gbWFuIGJlaSBzZWluZW0gR2VnbmVyIHZlcnVyc2FjaGVuLgorCitOZWJlbiBkZXIgRmFlaGlna2VpdCBpbSBVbWdhbmcgbWl0IGRlbiBXYWZmZW4gc3BpZWx0IGF1Y2ggZGllIFdhZmZlCitlaW5lIFJvbGxlLCBzb3dpZSBkaWUgZWlnZW5lIEtyYWZ0IHVuZCBHZXNjaGlja2xpY2hrZWl0LiBEYWJlaSBzb2xsdGUKK21hbiBiZXJ1ZWNrc2ljaHRpZ2VuLCBkYXNzIGRpZSBXYWZmZW4gdW50ZXJzY2hpZWRsaWNoZSBBbmZvcmRlcnVuZ2VuIAorYW4gZGFzIEdlc2NoaWNrIHN0ZWxsZW4uIFNvIGlzdCBkaWUgQmVudXR6dW5nIGVpbmVyIFBlaXRzY2hlIHNlaHIKK2tvbXBsZXgsIHp1bSBLYW1wZiBtaXQgZWluZW0gTWVzc2VyIG11c3MgbWFuIHNpY2ggZWJlbnNvIHJlY2h0CitnZXNjaGlja3QgYW5zdGVsbGVuLCBkaWNodCBnZWZvbGd0IHZvbSBLYW1wZiBtaXQgU3BlZXJlbi4gUmVjaHQgCithdXNnZWdsaWNoZW4gendpc2NoZW4gR2VzY2hpY2tsaWNoa2VpdCB1bmQgS3JhZnQgaXN0IGRlciBLYW1wZiBtaXQgZWluZW0KK1NjaHdlcnQuIERpZSBCZW51dHp1bmcgdm9uIEFleHRlbiBlcmZvcmRlcnQgbm9jaCBlaW5pZ2VzIEdlc2NoaWNrLCB3YWVocmVuZAorbWFuIGJlaSBLZXVsZW4gYW0gZWhlc3RlbiBtaXQgcHVyZXIgS3JhZnQgYmVkaWVudCBpc3QuCisKK1dlciB3aXNzZW4gbW9lY2h0ZSwgd2llIGd1dCBlciBkZW4gVW1nYW5nIG1pdCBkZW4gV2FmZmVuIGJlcmVpdHMKK2JlaGVycnNjaHQsIGthbm4gZGF6dSBlaW5lbiBLYWVtcGZlciAobWluZGVzdGVucyBpbSBSYW5nZSBlaW5lcworVW50ZXJvZmZpemllcnMpIGJlZnJhZ2VuLiBEZXIgc29sbHRlIGRpZXMgYmV1cnRlaWxlbiBrb2VubmVuLiAKKworCitMZXR6dGUgQWVuZGVydW5nOiAyMDEyLTA4LTI2IHZvbiBBcmF0aG9ybi4KZGlmZiAtLWdpdCBhL2RvYy9oZWxwL3dlcndvZWxmZSBiL2RvYy9oZWxwL3dlcndvZWxmZQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi45YTA0ZjNhCi0tLSAvZGV2L251bGwKKysrIGIvZG9jL2hlbHAvd2Vyd29lbGZlCkBAIC0wLDAgKzEsMTMgQEAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCitEaWUgR2lsZGUgZGVyIFdlcndvZWxmZQorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworTWFuIGthbm4gYXVmIGRlciBXZXJ3b2xmaW5zZWwgTWl0Z2xpZWQgZGVyIEdpbGRlIGRlciBXZXJ3b2VsZmUgd2VyZGVuLgorRGF6dSBtdXNzIG1hbiBNb25kaGV1bGVyIGZpbmRlbiB1bmQgYmVpIGlobSBpbiBkaWUgR2lsZGUgZWludHJldGVuLgorCitXYXMgZGllIFdlcndvZWxmZSBrb2VubmVuIHVuZCB3ZWxjaGUgRmFlaGlna2VpdGVuIHNpZSBoYWJlbiBrYW5uIG1hbiAKK2Rhbm4gdm9uIGRpdmVyc2VuIEdpbGRlbm1pdGdsaWVkZXJuIGVyZnJhZ2VuLgorCitFaW5lIEVpbmZ1ZWhydW5nIGthbm4gbWFuIGJla29tbWVuLCB3ZW5uIG1hbiBNb25kaGV1bGVyIG5hY2ggSGlsZmUgZnJhZ3QuCisKK0xldHp0ZSBBZW5kZXJ1bmc6IDEuMTEuMjAxMywgSHVtbmkKZGlmZiAtLWdpdCBhL2RvYy9oZWxwL3dpbGxrdWVyIGIvZG9jL2hlbHAvd2lsbGt1ZXIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZTc4ZTAzOAotLS0gL2Rldi9udWxsCisrKyBiL2RvYy9oZWxwL3dpbGxrdWVyCkBAIC0wLDAgKzEsOSBAQAorV2lsbGt1ZXIKKz09PT09PT09CisgICAgICAgIFdpbGxrdWVyIGlzdCBzdWJqZWt0aXYuCisKKyBTSUVIRSBBVUNIOgorICAgICAgICBnb2V0dGVyLCBlcnptYWdpZXIKKworIExFVFpURSBBZU5ERVJVTkc6CisgICAgIG1vcmdlbiwgR2xvaW5zb24gaS5BLiBWYW5pb24KZGlmZiAtLWdpdCBhL2RvYy9oZWxwL3dpcGZlbGxhZXVmZXIgYi9kb2MvaGVscC93aXBmZWxsYWV1ZmVyCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjNkNjYyZjUKLS0tIC9kZXYvbnVsbAorKysgYi9kb2MvaGVscC93aXBmZWxsYWV1ZmVyCkBAIC0wLDAgKzEsNzEgQEAKK0dJTERFIERFUiBXSVBGRUxMQUVVRkVSCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCitVZWJlciBkZW0gaGVpbGlnZW4gSGFpbiBkZXIgRWxmZW4gYmVmaW5kZXQgc2ljaCBkaWUgR2lsZGUgZGVyIFdpcGZlbGxhZXVmZXIuCitJbGxkZXJldGgsIGRlciBHaWxkZW52b3JzdGVoZXIsIGJyaW5ndCBqdW5nZW4gRWxmZW4gdW5kIGFsbGVuLCBkaWUgc29uc3QgZGVyCitHaWxkZSBiZWl0cmV0ZW4gbW9lY2h0ZW4sIGFsbGVzIGJlaSwgd2FzIGRpZSBXaXBmZWxsYWV1ZmVyIHdpc3NlbiBtdWVzc2VuLgorCitFSU5TVFVGVU5HIERFUiBHSUxERQorLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworRGllIFdpcGZlbGxhZXVmZXIgc2luZCBlaW5lIGV4cGxpeml0ZSBBbmZhZW5nZXJnaWxkZSB1bmQgYWxzIEFuZmFlbmdlcmdpbGRlCitkZXIgRWxmZW4gYXVzZ2VsZWd0LiBBbGxlcmRpbmdzIHdlcmRlbiBzaWUgaW0gTGF1ZmUgZGVyIFN0dWZlbiBhdWNoIGR1cmNoYXVzCitpbiB2aWVsZW4gQmVyZWljaGVuIG5vY2ggYmVzc2VyLCBzbyBkYXNzIGVpbiBwYWFyIGlocmVyIEZhZWhpZ2tlaXRlbiBhdWNoIAorZnVlciBncm9lc3NlcmUgU3BpZWxlciBpbnRlcmVzc2FudCBzZWluIGtvZW5uZW4uCisKK1BSSU5aSVBJRU4KKy0tLS0tLS0tLS0KKworV2lwZmVsbGFldWZlciBzaW5kIEtyZWF0dXJlbiBkZXMgV2FsZGVzLCBpbiBkZXIgUmVnZWwgRWxmZW4sIGZ1ZXIgZGllIGRpZXNlCitHaWxkZSBhdWNoIGRpZSBBbmZhbmdzZ2lsZGUgaXN0LiBTaWUgdmVyc3RlaGVuIHNpY2ggYXVmIGRhcyBCb2dlbnNjaGllc3NlbiwgCit3YXMgdm9yIGFsbGVtIGRhbm4gc2VociBndXQgbnV0emJhciBpc3QsIHdlbm4gc2ljaCBqZW1hbmQgc2NodWV0emVuZCBpbSBLYW1wZgordm9yIHNpZSBzdGVsbHQuCisKK0Zlcm5lciBiZWhlcnJzY2hlbiBzaWUgZWluIHBhYXIgQW5ncmlmZnN6YXViZXIgdW5kIGtlbm5lbiBuYXR1ZXJsaWNoIGRpZQorZWxlbWVudGFyZW4gRGluZ2UsIGRpZSBmdWVyIGRhcyBVZWJlcmxlYmVuIGltIFdhbGQgbm9ldGlnIHNpbmQuCisKK1NPTlNUSUdFUworLS0tLS0tLS0tCisKK0RpZSB3aWNodGlnc3RlbiBJbmZvcm1hdGlvbmVuIHVlYmVyIGRpZSBXaXBmZWxsYWV1ZmVyIGtlbm50IElsbGRlcmV0aCwgCithbnNvbnN0ZW4ga2FubiBtYW4gYW5kZXJlIE1pdHNwaWVsZXIgYXVmIGRlciBXaXBmZWxsYWV1ZmVyLUViZW5lIGJlZnJhZ2VuLgorCitEaWUgV2lwZmVsbGFldWZlci1FYmVuZSBrYW5uIG1hbiBtaXQgLXdpcGZlbCsgYmV0cmV0ZW4uIChNZWhyIGRhenUgdW50ZXIgCisiaGlsZmUgZWJlbmVuIikuCisKK0JFU0NIUkFFTktVTkdFTgorLS0tLS0tLS0tLS0tLS0tCisKK1p3ZXJnZSBrb2VubmVuIGtlaW5lIFdpcGZlbGxhZXVmZXIgd2VyZGVuLiBEaWUgendlcmdpc2NoZW4gUHJpbnppcGllbiBkZXMKK1N0b2xsZW5iYXVzIHd1ZXJkZW4gYXVjaCBuaWNodCBkYXp1IHBhc3NlbiwgdW5kIGRpZSBtZWlzdGVuIFp3ZXJnZSBoYWJlbiBhdWNoCitnYXIga2VpbiBJbnRlcmVzc2UgZGFyYW4uCisKK0Zlcm5lciBrb2VubmVuIER1bmtlbGVsZmVuIGF1ZmdydW5kIGRlcyBhbHRlbiBIYXNzZXMgendpc2NoZW4gZGVuIFZvZWxrZXJuCithdWNoIGtlaW5lIFdpcGZlbGxhZXVmZXIgd2VyZGVuLgorCitaQVVCRVJTUFJVRUNIRQorLS0tLS0tLS0tLS0tLS0KKworZ2x1ZWh3dWVybWNoZW4KK2lkZW50aWZpemllcmUKK3NjaGFldHoKK3JlZ2VuZ3VzcworYmF1bXJpbmRlCitoYWdlbHNjaGxhZworcGZlaWxzY2huZWxsCitibGl0egorCitHaWxkZW5tYWdpZXIKKy0tLS0tLS0tLS0tLQorCitEaWUgR2lsZGUgd3VyZGUgdm9uIEh1bW5pIGdlc2NocmllYmVuLCBkZXIgZGVyemVpdCBhdWNoIGRhZnVlciB6dXN0YWVuZGlnIGlzdC4KKworU2llaGUgYXVjaDogCistLS0tLS0tLS0tLQorZ2lsZGVuLCAoZGllIGVpbnplbG5lbiBaYXViZXJzcHJ1ZWNoZSksIGJvZ2Vuc2NoaWVzc2VuCisKKyogV0VOTiBNQU4gRUlORVIgQU5ERVJFTiBHSUxERSBBTkdFSE9FUlQsIE1VU1MgTUFOIEZVRVIgRElFIEhJTEZFCissLGhpbGZlIGdpbGRlIHdpcGZlbGxhZXVmZXIgPHRoZW1hPicnIEVJTkdFQkVOISAqCisKK0xldHp0ZSBBZW5kZXJ1bmc6IEh1bW5pLCAyMDExLTEwLTI3CisKZGlmZiAtLWdpdCBhL2RvYy9oZWxwL3d3dyBiL2RvYy9oZWxwL3d3dwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi43ZDk2MzhhCi0tLSAvZGV2L251bGwKKysrIGIvZG9jL2hlbHAvd3d3CkBAIC0wLDAgKzEsMTkgQEAKK0RpZSBXZWJzZWl0ZShuKQorPT09PT09PT09PT09PT09CisKKyAgICAgQXVmIGZvbGdlbmRlbiBXZWJzZWl0ZW4gZmluZGVuIHNpY2ggSW5mb3JtYXRpb25lbiB1ZWJlciB1bnNlcgorICAgICBNVUQgdW5kIGRhenVnZWhvZXJpZ2UgUHJvamVrdGU6CisKKyAgICAgT2ZmaXppZWxsZSBTZWl0ZTogaHR0cDovL21nLm11ZC5kZQorICAgICAqIGVybW9lZ2xpY2h0IFp1Z3JpZmYgYXVmIE1QQS9BcmNoaXZlCisgICAgICogZW50aGFlbHQgZWluZW4gV2ViLUNsaWVudCB1bmQgTGlua3MgYXVmIENsaWVudHMKKyAgICAgKiBlbnRoYWVsdCBJbmZvcm1hdGlvbmVuIHp1bSBBdXNyaWNodGVuIHVuZCBCaWxkZXIgdm9uIFBhcnRpZXMKKyAgICAgKiBlbnRoYWVsdCBkaWUgVmVyZWlucy1TZWl0ZTogaHR0cDovL21nLm11ZC5kZS92ZXJlaW4KKworICAgICBEaWUgV2lraS1TZWl0ZTogaHR0cDovL2h0dHA6Ly93aWtpLm1vcmdlbmdyYXVlbi5pbmZvLworICAgICAqIGF1Y2ggdm9uIE5pY2h0bWFnaWVybiBlZGl0aWVyYmFyZSBQcm9qZWt0c2VpdGVuCisKK1NJRUhFIEFVQ0g6CisgICAgIG11ZHJlY2huZXIsIGNsaWVudCwgdGVhbXNwZWFrLCBpcmMKKworMjYuIEF1ZyAyMDEzIEdsb2luc29uCmRpZmYgLS1naXQgYS9kb2MvaGVscC96YXViZXJlaSBiL2RvYy9oZWxwL3phdWJlcmVpCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjExY2Q1MDIKLS0tIC9kZXYvbnVsbAorKysgYi9kb2MvaGVscC96YXViZXJlaQpAQCAtMCwwICsxLDM3IEBACisKK1phdWJlcmVpIGltIE1vcmdlbkdyYXVlbgorPT09PT09PT09PT09PT09PT09PT09PT09CisKKyAgICBEaWUgbWVpc3RlbiBHaWxkZW4gc3RlbGxlbiBpaHJlbiBNaXRnbGllZGVybiBtZWhyIG9kZXIgd2VuaWdlciBudWV0emxpY2hlCisgICAgWmF1YmVyc3BydWVjaGUgenVyIFZlcmZ1ZWd1bmcuIEdlbmF1ZXJlcyB6dSBkZW4gZWluemVsbmVuIFNwcnVlY2hlbgorICAgIGZpbmRlc3QgRHUgYXVmIGRlbiBqZXdlaWxpZ2VuIEhpbGZlc2VpdGVuLgorCisgICAgQWxsZ2VtZWluIGxhZXNzdCBzaWNoIHNhZ2VuLCBkYXNzIGRpZSBBbndlbmR1bmcgdm9uIE1hZ2llIGltIHdlc2VudGxpY2hlbgorICAgIGFuIGRpZSBJbnRlbGxpZ2VueiBkZXMgQ2hhcmFrdGVycyBnZWtvcHBlbHQgaXN0LgorCisgICAgU28gdmVyYnJhdWNoZW4gZGllIFNwcnVlY2hlIGluIGRlciBSZWdlbCBtZWhyIG9kZXIgd2VuaWdlciB2aWVsZQorICAgIE1hZ2llcHVua3RlLiBEZXJlbiBBbnphaGwgd2llZGVydW0gaGFlbmd0IGRpcmVrdCB2b24gZGVyIEludGVsbGlnZW56IGFiLAorICAgIGthbm4gYWJlciBhdWNoIGR1cmNoIGFuZGVyZSBNYWdpZSBlcmhvZWh0IHdlcmRlbi4KKworICAgIExlcm50IG1hbiBlaW5lbiBTcHJ1Y2ggbmV1IGRhenUsIHNvIHdpcmQgaWhtIGVpbiBBbmZhbmdzd2VydCBmdWVyIGRpZQorICAgIEVyZm9sZ3N3YWhyc2NoZWlubGljaGtlaXQgenVnZW9yZG5ldC4gQXVjaCBkaWVzZXIgQW5mYW5nc3dlcnQgaGFlbmd0IGJlaQorICAgIGRlbiBtZWlzdGVuIEdpbGRlbiB2b24gZGVyIEludGVsbGlnZW56IGFiIChoaWVyIGtvZW5uZW4gYWJlciBhdWNoIG5vY2gKKyAgICB3ZWl0ZXJlIEZha3RvcmVuIHdpcmtzYW0gd2VyZGVuKS4KKworICAgIERpZSBFcmZvbGdzd2FocnNjaGVpbmxpY2hrZWl0IGVpbmVzIFNwcnVjaGVzIHZlcmJlc3NlcnQgc2ljaCwgd2VubiBkZXIKKyAgICBTcHJ1Y2ggZmVobHNjaGxhZWd0IChgRHUgbGVybnN0IGF1cyBEZWluZW0gRmVobGVyLicpLiBIaWVyIG11c3MgbWFuCisgICAgYWxsZXJkaW5ncyBhdWZwYXNzZW46IEVpbmlnZSBTcHJ1ZWNoZSBoYWJlbiBlaW5lIEJlc2NocmFlbmt1bmcgZGVyIG1heGltYWwKKyAgICBlcnJlaWNoYmFyZW4gV2FocnNjaGVpbmxpY2hrZWl0LiBEaWUgU2NocmFua2Ugd2FuZGVydCBtaXQgenVuZWhtZW5kZXIKKyAgICBTcGllbGVyc3R1ZmUgd2VpdGVyIG5hY2ggb2Jlbi4gSGF0IG1hbiBkZW4gZnVlciBzZWluZSBTdHVmZSBtYXhpbWFsZW4gV2VydAorICAgIGVycmVpY2h0LCBzbyBrYW5uIGVzIGJlaSBlaW5pZ2VuIEdpbGRlbiBpbW1lciBub2NoIHp1IGRlciBMZXJubWVsZHVuZworICAgIGtvbW1lbiwgb2J3b2hsIG1hbiBlaWdlbnRsaWNoIG5pY2h0cyBkYXp1bGVybnQhCisKKyAgICBEaWUgVmVyYmVzc2VydW5nIGRlciBXYWhyc2NoZWlubGljaGtlaXQgaW0gRmFsbGUgZWluZXMgRmVobHNjaGxhZ3MgaGFlbmd0CisgICAgdWVicmlnZW5zIHdpZWRlcnVtIGluIGRlbiBtZWlzdGVuIEZhZWxsZW4gdm9uIGRlciBJbnRlbGxpZ2VueiBhYi4KKworIFNJRUhFIEFVQ0g6CisgICAgYXR0cmlidXRlLCBnaWxkZW4sIGhlaWx1bmcKKworIExFVFpURSBBZU5ERVJVTkc6CisgICAgMTguIE1hZXJ6IDIwMDQgR2xvaW5zb24KKwpkaWZmIC0tZ2l0IGEvZG9jL2hlbHAvemF1YmVyZXIgYi9kb2MvaGVscC96YXViZXJlcgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44NDZhMzc1Ci0tLSAvZGV2L251bGwKKysrIGIvZG9jL2hlbHAvemF1YmVyZXIKQEAgLTAsMCArMSwzNiBAQAorCitEaWUgR2lsZGUgZGVyIFphdWJlcmVyCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKKyAgICBEaWUgR2lsZGUgZGVyIFphdWJlcmVyIGJlZmluZGV0IHNpY2ggaW4gVGFyYW1pcyB1bmQgaXN0IGltIE1vbWVudCBudXIKKyAgICB1ZWJlciBlaW4gbWFnaXNjaGVzIFRvciB6dSBlcnJlaWNoZW4uIFVtIGRlciBHaWxkZSBiZWl0cmV0ZW4genUga29lbm5lbiwKKyAgICBtdXNzIG1hbiBkZW4gendlaXRlbiBMZXZlbCBlcnJlaWNodCBoYWJlbiB1bmQgNTAgQWJlbnRldWVycHVua3RlCisgICAgYXVmd2Vpc2VuLiBJbnNnZXNhbXQgZ2lidCBlcyB6ZWhuIFN0dWZlbi4gRGF2b24gc2luZCBkaWUgZXJzdGVuIHZpZXIKKyAgICBBbmZhZW5nZXJuIHZvcmJlaGFsdGVuLiBWb3IgZGVtIEVycmVpY2hlbiBkZXIgZnVlbmZ0ZW4gU3R1ZmUgbXVzcyBtYW4gZGllCisgICAgTGVocmxpbmdzcHJ1ZWZ1bmcgYWJsZWdlbi4gTmFjaCBCZXN0ZWhlbiBkZXIgUHJ1ZWZ1bmcgYmVrb21tdCBtYW4gc2VpbmVuCisgICAgWmF1YmVyc3RhYiwgZGVyIGVpbmUgZ3Jvc3NlIEhpbGZlIGZ1ZXIgZGVuIFphdWJlcmVyIGlzdC4KKworICAgIERhbmFjaCBrYW5uIG1hbiBiaXMgenVyIFN0dWZlIEFjaHQgYXVmc3RlaWdlbi4gVm9yIGRlbSBFcnJlaWNoZW4gZGVyIFN0dWZlCisgICAgTmV1biBtdXNzIGRpZSBNYWdpc3RlcnBydWVmdW5nIGFiZ2VsZWd0IHdlcmRlbi4gSW0gR2VnZW5zYXR6IHp1cgorICAgIExlaHJsaW5nc3BydWVmdW5nIGlzdCBkaWUgTWFnaXN0ZXJwcnVlZnVuZyBhZXVzc2Vyc3Qgc2Nod2VyLiBEYW5hY2ggc3RlaWd0CisgICAgbWFuIHp1bSBNYWdpc3RlciBhdWYgdW5kIGthbm4gZWluZW4gTWFnaXN0ZXJwb3N0ZW4gaW4gZWluZW0gZGVyIFp3ZWlnZQorICAgIGJlYW50cmFnZW4uIEF1cyBzcGllbHRlY2huaXNjaGVuIHVuZCBiYWxhbmNldGVjaG5pc2NoZW4gR3J1ZW5kZW4gaXN0IGRlcgorICAgIFJhbmcgZWluZXMgRXJ6bWFnaXN0ZXJzIG1vbWVudGFuIG5pY2h0IHZvbiBTcGllbGVybiB6dSBlcnJlaWNoZW4uCisKKyAgICBEaWUgWmF1YmVyc3BydWVjaGUsIGRpZSBkZXIgWmF1YmVyZXIgbGVybmVuIGthbm4sIHVudGVydGVpbGVuIHNpY2ggaW4KKyAgICBzZWNocyBad2VpZ2U6IEFuZ3JpZmYsIEJlaGVycnNjaHVuZywgSGVsbHNpY2h0LCBJbGx1c2lvbiwgU2NodXR6IHVuZAorICAgIFZlcndhbmRsdW5nLgorICAgIFp1IEJlZ2lubiBsZXJudCBtYW4gYXVzIGplZGVtIFp3ZWlnIGVpbmVuIFNwcnVjaC4gTmFjaCBkZXIKKyAgICBMZWhybGluZ3NwcnVlZnVuZyBrYW5uIG1hbiBhdWYgamVkZXIgU3R1ZmUgKDUtOCkgamUgZWluZW4gU3BydWNoIGF1cyBlaW5lbQorICAgIFp3ZWlnIGxlcm5lbi4gQWxzIE1hZ2lzdGVyIGthbm4gbWFuIHNpY2ggZnVlciBlaW5lbiBad2VpZyBlbnRzY2hlaWRlbiB1bmQKKyAgICBkb3J0IHp3ZWkgTWFnaXN0ZXJzcHJ1ZWNoZSBsZXJuZW4uIAorCisKKyBTSUVIRSBBVUNIOgorICAgIGF0dHJpYnV0ZSwgZWJlbmVuLCBnaWxkZW4KKworICAgIEFuZ2Vob2VyaWdlIGZyZW1kZXIgR2lsZGVuIGtvZW5uZW4gc2ljaCBpbiBkZXIgQmlibGlvdGhlayBkZXIgWmF1YmVyZXIKKyAgICB1ZWJlciBkaWUgZWluemVsbmVuIFNwcnVlY2hlIHVuZCBad2VpZ2UgaW5mb3JtaWVyZW4uCisKKyBMRVRaVEUgQWVOREVSVU5HOgorICAgIERpZSwgMDMuMTAuMjAwNiwgMjA6MzI6MDAgdm9uIENoYWdhbGwKZGlmZiAtLWdpdCBhL2RvYy9oZWxwL3phdWJlcnRyYWVua2UgYi9kb2MvaGVscC96YXViZXJ0cmFlbmtlCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjJjNjU4NjAKLS0tIC9kZXYvbnVsbAorKysgYi9kb2MvaGVscC96YXViZXJ0cmFlbmtlCkBAIC0wLDAgKzEsNjQgQEAKKworWmF1YmVydHJhZW5rZQorPT09PT09PT09PT09PQorCisgWkFVQkVSVFJBZU5LRToKKyAgICBJbSBnYW56ZW4gTW9yZ2VuR3JhdWVuIHNpbmQgWmF1YmVydHJhZW5rZSAoWlQpIHZlcnN0ZWNrdCwgd2VsY2hlIGRpZQorICAgIEF0dHJpYnV0ZSBlcmhvZWhlbi4gRGEgZGFzIFNwaWVsIGFiZXIgaW56d2lzY2hlbiBzbyBncm9zcyBnZXdvcmRlbiBpc3QsCisgICAgZGFzcyBtYW4gc2llIG9obmUgSGlsZmUgcHJha3Rpc2NoIG5pY2h0IG1laHIgZmluZGVuIGthbm4sIGdpYnQgZXMgZGFzCisgICAgT3Jha2VsIHZvbiBUaW5nYW4uIERvcnQgYmVrb21tdCBtYW4gaW4gQWJoYWVuZ2lna2VpdCB2b24gZGVuCisgICAgU3R1ZmVucHVua3RlbiBrb25rcmV0ZSBIaW53ZWlzZSwgd28gbWFuIGVpbmVuIFphdWJlcnRyYW5rIGZpbmRlbiBrYW5uLgorICAgIE5hdHVlcmxpY2ggYmVrb21tZW4gQW5mYWVuZ2VyIHp1ZXJzdCBkaWUgbGVpY2h0ZXN0ZW4gVmVyc3RlY2tlIHZlcnJhdGVuLAorICAgIGRlciBTY2h3aWVyaWdrZWl0c2dyYWQgc3RlaWdlcnQgc2ljaCBkYW5uIGltIFNwaWVsdmVybGF1Zi4gU28gc29sbHRlIGVzCisgICAgaW1tZXIgbW9lZ2xpY2ggc2VpbiwgbWl0IGRlbiBUaXBwcyBhdWNoIGV0d2FzIGFuenVmYW5nZW4gKHNpZWhlIERFVEFJTFMpLgorCisgICAgS29ua3JldCBzaWVodCBkYXMgc28gYXVzOgorCisgICAgICogOCBUaXBwcyBrYW5uIG1hbiBzaWNoIGRpcmVrdCBiZWkgU3BpZWxiZWdpbm4gdW1zb25zdCBob2xlbgorICAgICAqIDI2IFRpcHBzIGdpYnQgZXMgZnVlciBqZXdlaWxzIDI1IFN0dWZlbnB1bmt0ZQorICAgICAqIDI2IFRpcHBzIGdpYnQgZXMgZnVlciBqZXdlaWxzIDQwIFN0dWZlbnB1bmt0ZQorICAgICAqIDEwIFRpcHBzIGdpYnQgZXMgZnVlciBqZXdlaWxzIDcwIFN0dWZlbnB1bmt0ZQorICAgICAqIDEwIFRpcHBzIGdpYnQgZXMgZnVlciBqZXdlaWxzIDEwMCBTdHVmZW5wdW5rdGUKKworICAgIE5hdHVlcmxpY2ggbXVzcyBtYW4ga2VpbmUgU3R1ZmVucHVua3RlIGJlemFobGVuLCBtYW4gbXVzcyBzaWUgbnVyIGhhYmVuLgorCisgICAgQUNIVFVORzogTWFuIGthbm4gZGllIFphdWJlcnRyYWVua2UgZXJzdCBmaW5kZW4sIHdlbm4gbWFuIGRlbgorICAgIGVudHNwcmVjaGVuZGVuIEhpbndlaXMgdm9tIE9yYWtlbCBiZWtvbW1lbiBoYXQuCisKKyAgICBXbyBpc3QgZGFzIE9yYWtlbD8KKyAgICBEYXMgT3Jha2VsIGthbm4gbWFuIGZpbmRlbiwgd2VubiBtYW4gc2ljaCBkZW4gd2VzdGxpY2hlbiBUZWlsIGRlcgorICAgIEhvY2hlYmVuZSBldHdhcyBnZW5hdWVyIGFuc2NoYXV0LiBXaWUgbWFuIGRpZSBIb2NoZWJlbmUgZmluZGV0PyBEYXMga2FubgorICAgIGplZGVyIFNwaWVsZXIgbWl0IGVpbiBiaXNzY2hlbiBTcGllbGVyZmFocnVuZyBlcmtsYWVyZW4sIGFsc28gZnJhZ3QgcnVoaWcKKyAgICBlaW4gYmlzc2NoZW4gaGVydW0uCisKKyAgICBXaWUgc2VoZW4gZGllIEhpbndlaXNlIGF1cz8KKyAgICBOYXR1ZXJsaWNoIG9yYWtlbG1hZXNzaWcgdmVyc2NobHVlc3NlbHQsIGFiZXIgbmljaHQgKnp1KiB1bmR1cmNoc2ljaHRpZy4KKyAgICBNYW4gc29sbHRlIGluIGRlciBSZWdlbCBzY2hvbiBldHdhcyBkYW1pdCBhbmZhbmdlbiBrb2VubmVuLCBkYXMgaGVpc3N0CisgICAgYWJlciBuaWNodCwgZGFzcyBtYW4gdWViZXJoYXVwdCBuaWNodCBtZWhyIHN1Y2hlbiBvZGVyIG5hY2hkZW5rZW4gbXVzcy4KKyAgICBEYW1pdCBtYW4gc2ljaCBuaWNodCBhbGxlcyBhdWZzY2hyZWliZW4gbXVzcywgbWVya3Qgc2ljaCBkZXIgU3BpZWxlciBkaWUKKyAgICBtb21lbnRhbiBha3R1ZWxsZW4gU3BydWVjaGUgYXV0b21hdGlzY2gsIG1hbiBrYW5uIHNpZSBtaXQgZGVtIEJlZmVobAorICAgIGB6YXViZXJ0cmFlbmtlJyBhYnJ1ZmVuLiBXZW5uIGRlciBaYXViZXJ0cmFuayBnZWZ1bmRlbiB3dXJkZSwgdmVyc2Nod2luZGV0CisgICAgYXVjaCBkZXIgZW50c3ByZWNoZW5kZSBIaW53ZWlzIGF1cyBkZXIgTGlzdGUuCisgICAgRnVlciBlaW5pZ2UgWmF1YmVydHJhZW5rZSBnaWJ0IGVzIG1laHJlcmUgU3BydWVjaGUsIGRpZSBpbiBkZXIgTGlzdGUKKyAgICB6dWZhZWxsaWcgYXVzZ2V3YWVobHQgdW5kIGFuZ2V6ZWlndCB3ZXJkZW4uCisKKyBERVRBSUxTOgorICAgIFRlY2huaXNjaCBnZW5hdWVyOiBFaW4gU3BpZWxlciBiZWtvbW10IGJlaSBzZWluZW0gZXJzdGVuIExvZ2luIGVpbmUgTGlzdGUKKyAgICB2b24gWlRzIHp1Z2VvcmRuZXQuIERpZXNlIExpc3RlIGlzdCBlaW5lIEF1c3dhaGwgYXVzIGFsbGVuIGV4aXN0aWVyZW5kZW4KKyAgICBaVHMuCisgICAgRGFzIE9yYWtlbCBwcmFlc2VudGllcnQgZWluZW0gZGFubiBqZXdlaWxzIGRpZSBsZWljaHRlc3RlbiBaVHMgYXVzIGRpZXNlcgorICAgIGVpZ2VuZW4gTGlzdGUgKHVuZCBuaWNodCBhdXMgYWxsZW4gWlRzISkKKyAgICBEYXMgaGVpc3N0IGFsc28sIGRhc3MgZXVjaCBkdXJjaCBhbmRlcmUgU3BpZWxlciBiZWthbm50ZSwgbGVpY2h0ZSBaVHMKKyAgICBuaWNodCB1bmJlZGluZ3QgYXVjaCBldXJlIFpUcyBzZWluIG11ZXNzZW4uIFVuZCBlcyBrYW5uIGJlZGV1dGVuLCBkYXNzCisgICAgZXVyZSBsZWljaHRlbiBaVHMgZXR3YXMgc2Nod2VyZXIgc2luZC4gTmljaHQgYXVmZ2ViZW4hCisKKyAgICBXZW5uIGV1Y2ggWlRzIGFuIG51ciBpbiBlaW5lciBRdWVzdCBlcnJlaWNoYmFyZW4gU3RlbGxlbiBhdWZmYWxsZW4sIHNvCisgICAgd2VuZGV0IGV1Y2ggYml0dGUgYW4gZGVuIEVyem1hZ2llciwgZGVyIGZ1ZXIgZGllIFpUcyB6dXN0YWVuZGlnIGlzdAorICAgIChzaWVoZSBoaWxmZSBlcnptYWdpZXIpLgorCisgU0lFSEUgQVVDSDoKKyAgICBhdHRyaWJ1dGUsIHN0dWZlbnB1bmt0ZQorCisgTEVUWlRFIEFlTkRFUlVORzoKKyAgICAyNS4gTm92IDIwMDcgR2xvaW5zb24KKwpkaWZmIC0tZ2l0IGEvZG9jL2hlbHAvemVpdHVuZyBiL2RvYy9oZWxwL3plaXR1bmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uY2QxYzI4ZQotLS0gL2Rldi9udWxsCisrKyBiL2RvYy9oZWxwL3plaXR1bmcKQEAgLTAsMCArMSwyMSBAQAorCitaZWl0dW5nIGltIE1vcmdlbmdyYXVlbgorPT09PT09PT09PT09PT09PT09PT09PT0KKworIEJFU0NIUkVJQlVORzoKKyAgICAgSW4gTW9yZ2VuZ3JhdWVuIGdpYnQgZXMgZWluZSBmdWVyIGFsbGUgdmVyZnVlZ2JhcmUgWmVpdHVuZywgZGllCisgICAgIE1vcmdlbmdyYXVlbiBQcmVzc2UtQWdlbnR1ciAoTVBBKS4gQmVzdWNoZSBlaW5lbiBTdGFydHJhdW0gZGVpbmVyCisgICAgIFdhaGwgdW5kIG5pbW0gZGlyIGVpbmUgbWl0LgorCisgICAgIERpZSBaZWl0dW5nIHNlbGJzdCBoYXQgZGFubiBlaW5lIGVpZ2VuZSBIaWxmZWZ1bmt0aW9uLgorCisgQkVNRVJLVU5HRU46CisgICAgIEVpbmUgZGVyIHdpY2h0aWdzdGVuIFJ1YnJpa2VuIGlzdCBkaWUgUnVicmlrICJtZWdhc2NobWFycm4iLiBEb3J0CisgICAgIHdlcmRlbiBhbGxlICghKSByZWxldmFudGVuIFRoZW1lbiBiZXNwcm9jaGVuLiBSZWdlbG4gc2llaGUKKyAgICAgUnVicmlrLgorCisgU0lFSEUgQVVDSDoKKyAgICAgdGVpbGUgbWl0LCBlYmVuZW4KKworIExFVFpURSBBZU5ERVJVTkc6CisgICAgNS4gT2t0b2JlciAyMDA0IEdsb2luc29uCmRpZmYgLS1naXQgYS9kb2MvaGVscC96b29rZWxuIGIvZG9jL2hlbHAvem9va2VsbgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5lZTYzMjlmCi0tLSAvZGV2L251bGwKKysrIGIvZG9jL2hlbHAvem9va2VsbgpAQCAtMCwwICsxLDE2IEBACisKK0V4dHJhIGZ1ZXIgTWVzaXJpaSBnaWJ0IGVzIG51biBhdWNoIHp1bSBUaGVtYSB6b29rZWxuIGVpbmUgSGlsZmVzZWl0ZToKKworWk9PS0VMTiAoVE0pOiAgVmVyc2VoZW50bGljaGVzIEdlbGFiZXIgYXVmIGRlciBmYWxzY2hlbiBFYmVuZS4gQmVzb25kZXJzCisgICAgICAgICAgICAgICBzcGFubmVuZCwgd2VubiBtYW4gZ2VyYWRlIHVlYmVyYXVzIHdpY2h0aWdlIHVuZCBnZWhlaW1lCisgICAgICAgICAgICAgICBEaW5nZSBhdWYgLWFsbCBzdGF0dCBhdWYgLWdvZXR0ZXIgZXJ6YWVobHQuIE9mdG1hbHMgdm9lbGxpZworICAgICAgICAgICAgICAgenVzYW1tZW5oYW5nc2xvc2VzIEdlbGFiZXIsIG1pdCBkZW0gbnVyIGRpZSB3YXMgYW5mYW5nZW4gCisgICAgICAgICAgICAgICBrb2VubmVuLCBkaWUgZGllIEViZW5lIGVpbmdlc2NoYWx0ZXQgaGFiZW4sIGF1ZiBkZXIgZGllc2VyCisgICAgICAgICAgICAgICBUZXh0IGdlc2VuZGV0IHdlcmRlbiBzb2xsdGUuCisKK0JFTUVSS1VOR0VOOiAgIFVlYmVyZmx1ZXNzaWcKKworU0lFSEUgQVVDSDogICAgem9vaworLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCitMZXR6dGUgQWVuZGVydW5nOiAxOS4xMC4yMDA1ICBNaXJpbAorCmRpZmYgLS1naXQgYS9kb2MvaGVscC96d2VpdHNwaWVsZXIgYi9kb2MvaGVscC96d2VpdHNwaWVsZXIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYmM1N2Y3NAotLS0gL2Rldi9udWxsCisrKyBiL2RvYy9oZWxwL3p3ZWl0c3BpZWxlcgpAQCAtMCwwICsxLDIzIEBACisKK1p3ZWl0c3BpZWxlcgorPT09PT09PT09PT09CisKKyBCRVNDSFJFSUJVTkc6CisgICAgIFp3ZWl0c3BpZWxlciBzaW5kIFNwaWVsZXIsIHdlbGNoZSBtYW4genVzYWV0emxpY2ggenUgc2VpbmVtIEhhdXB0LQorICAgICBjaGFyYWt0ZXIgZXJzY2hhZmZlbiBoYXQuIEhhdXB0c2FlY2hsaWNoIG51dHp0IG1hbiBzaWUsIHVtIGZ1ZXIgZGVuCisgICAgIEVyc3RpZSBTYWNoZW4genUgc2NobGVwcGVuLCB6dSBzdGVyYmVuLCB1bSBhbmRlcmUgR2lsZGVuIHp1IHRlc3RlbiBvZGVyCisgICAgIGdhciBNYWdpZXIgenUgd2VyZGVuLgorCisgQkVNRVJLVU5HRU46CisgICAgIEplZGVyIFNwaWVsZXIgaW0gTVVEIGlzdCB2ZXJwZmxpY2h0ZXQsIHNlaW5lIFp3ZWl0aWVzIHp1IG1hcmtpZXJlbiwgdW0KKyAgICAgZGFtaXQgVmVyYW50d29ydGxpY2hrZWl0ZW4gYmVzc2VyIHp1b3JkbmVuIHp1IGtvZW5uZW4uCisKKyAgICAgRGllc2UgTWFya2llcnVuZyBrYW5uIG1hbiB6dW0gQmVpc3BpZWwgYmVpbSBTY2htaWVkIGluIGRlciBad2VyZ2Vuc3RhZHQKKyAgICAgb2RlciBiZWltIERvcmZzY2hyZWliZXIgaW0gRWxmZW5kb3JmIGVyaGFsdGVuLiAgRGllc2UgTWFya2llcnVuZyBrYW5uCisgICAgIG1hbiBhdWNoIHZvciBhbmRlcmVuIFNwaWVsZXJuIHZlcmJlcmdlbi4KKworIFNJRUhFIEFVQ0g6CisgICAgIHp3ZWl0aWVtYXJraWVydW5nLCByZWdlbG4KKworIExFVFpURSBBZU5ERVJVTkc6CisgICAgIDUuIE1haSAyMDA0IEdsb2luc29uCmRpZmYgLS1naXQgYS9kb2MvaGlsZmUubWFnaWVyIGIvZG9jL2hpbGZlLm1hZ2llcgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi45MmU4OGQ3Ci0tLSAvZGV2L251bGwKKysrIGIvZG9jL2hpbGZlLm1hZ2llcgpAQCAtMCwwICsxLDM2IEBACisKKyAgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tTUFHSUVSSElMRlNTRUlURS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCitBbHMgTWFnaWVyIGhhdCBtYW4gbmViZW4gZGVuIFNwaWVsZXItIHVuZCBTZWhlcmJlZmVobGVuIGVpbmlnZSB3ZWl0ZXJlCitCZWZlaGxlIHp1ciBWZXJmdWVndW5nLiBCZWkgZGVyIEFuemVpZ2UgZGVyIEhpbGZlc2VpdGVuIHdpcmQgbmljaHQgendpc2NoZW4KK2RlbiBTdHVmZW4gZGVyIE1hZ2llciB1bnRlcnNjaGllZGVuIHdpcmQuIERpZXNlIHdpcmQgYWJlciBiZWkgRXJsYWV1dGVydW5nCitiZXJ1ZWNrc2ljaHRpZ3Q6CisKK0FsbGdlbWVpbmUgVGhlbWVuIHVuZCBSRUdFTE46CSAgICB8ICBLb21tdW5pa2F0aW9uOgorICAgIGJhbGFuY2UsIGZvcnNjaGVycHVua3RlLAkgICAgfCAgICAgIGVjaG9hbGwsIGVjaG90bywgZWNobywgbWVjaG8sCisgICAgdGVzdHNwaWVsZXIsIHp3ZWl0c3BpZWxlciwJICAgIHwgICAgICBtcnVmZSwgb3JvcGF4LCByZW1vdGUKKyAgICBlZmZpemllbnosIG9iamVrdGUJCSAgICB8CisJCQkJICAgIHwKK0Jld2VndW5nOgkJCSAgICB8ICBLYW1wZjoKKyAgICBnb3RvLCB0cmFucywgaG9tZSwgdmVyZm9sZ2UsICAgIHwgICAgICB6YXAsIGZyaWVkZW4sIHNldGhhbmRzCisgICAgYXQsIGluLCArCQkJICAgIHwKKwkJCQkgICAgfAorRGF0ZWlzeXN0ZW06CQkJICAgIHwgIE9iamVrdGU6CisgICAgY2QsIHB3ZCwgbHMsIGNhdCwgaGVhZCwgdGFpbCwgICB8ICAgICAgY2xvbmUsIGRlc3RydWN0LCB1cGQoYXRlKSwgbG9hZCwKKyAgICBtb3JlLCBncmVwLCBjcCwgbXYsIHJtLCBta2RpciwgIHwJICAgc2V0Y21zZywgc2V0ZG1zZworICAgIHJtZGlyLCBzZXQsIHByb21wdCwgZWQJICAgIHwKKwkJCQkgICAgfCAgQW5kZXJlczoKK0luZm9ybWF0aW9uOiAgICAgICAgICAgICAgICAgICAgICAgIHwgICAgIGhlaWxlLCB6d2luZ2UsIHRpdGVsLCBleHRyYWxvb2ssCisgICAgbXNjaGF1LCBwZW9wbGUsIHB3aG8sIG1hbiwgICAgICB8ICAgICB0cmFlbmtlLCBpbnZpcywgdmlzLCBwcm90ZWN0LCBkbworICAgIHNub29wLCBzYWxsb3csIHNwaWVsZXIsIHJtYW4sICAgfCAgICAgc2hvd3ByZXNheSwgcGluZywgdG9kbworICAgIGxvY2FsY21kCQkJICAgIHwKKwkJCQkgICAgfCAgRXJ6bWFnaWVyYmVmZWhsZToKK1JlZ2lvbnNtYWdpZXJiZWZlaGxlOgkJICAgIHwgICAgIGFkZG1hc3RlciwgcmVtb3ZlbWFzdGVyLCBtYmFuaXNoLAorICAgIHJlZ2lvbnNtYWdpZXIsIGJhbmlzaCwgZXhlYyAgICAgfCAgICAgc2h1dGRvd24KKwkJCQkgICAgfAorCitJbiBkZW4gVmVyemVpY2huaXNzZW4gdW50ZXIgL2RvYy8gZmluZGVzdCBkdSB3ZWl0ZXJlIERva3VtZW50YXRpb246CistIGZ1bmt0aW9uaWVyZW5kZSBCZWlzcGllbGUgdW50ZXIgL2RvYy9iZWlzcGllbGUvCistIE1HLXNwZXppZmlzY2hlIEluZm9ybWF0aW9uZW4gdW50ZXIgL2RvYy9NRy8KKy0gZWluZW4gUHJvZ3JhbW1pZXJrdXJzIHVudGVyIC9kb2MvS1VSUy8KKwpkaWZmIC0tZ2l0IGEvZG9jL2hpbGZlLnNlaGVyIGIvZG9jL2hpbGZlLnNlaGVyCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjUyODE5NzgKLS0tIC9kZXYvbnVsbAorKysgYi9kb2MvaGlsZmUuc2VoZXIKQEAgLTAsMCArMSwyMiBAQAorCisgIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1TRUhFUkhJTEZTU0VJVEUtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworQWxzIFNlaGVyIGhhdCBtYW4gZWluaWdlIHp1c2FldHpsaWNoZSBCZWZlaGxlLiBadSBkZW4gZm9sZ2VuZGVuIEJlZmVobGVuCitrYW5uIG1hbiBtaXQgImhpbGZlIDx0aGVtYT4iIGVpbmUgRXJsYWV1dGVydW5nIGVyaGFsdGVuLgorCitLb21tdW5pa2F0aW9uOgkJCSAgICB8ICBLYW1wZgorICAgIHJlbW90ZSwJCQkgICAgfCAgICAgIGZsdWNodHJpY2h0dW5nLCBzZXRoYW5kcywgcmV2aWV3CisgICAgZWNobyAobmFjaCBBcmNoaXRla3RlbnF1ZXN0KSAgICB8CisJCQkJICAgIHwKK0Jld2VndW5nc21lbGR1bmdlbjoJCSAgICB8ICBBdXNzZWhlbjoKKyAgICBzZXRtaW4sIHNldG1vdXQsIHNldG1taW4sCSAgICB8ICAgICAgdGl0ZWwsIGV4dHJhbG9vaywgcHJlc2F5CisgICAgc2V0bW1vdXQsIHJldmlldwkJICAgIHwKKworSGF1c2JhdToKKyAgICBoYXVzYmF1LCBpbnN0YW50aGF1cywgc2VoZXJoYXVzLAorICAgIGFlbmRlcmUsIGF1c2dhbmcsIGJlc2NocmVpYmUsIGVybGF1YmUsIGtvcGllcmUsIGxpY2h0LCBsb2VzY2hlLAorICAgIG1lbGR1bmdlbiwgbm90aXosIHNjaGllYmUsIHNwZXJyZSwgc3Bpb24sIHVlYmVyc2ljaHQsIHZlcmJpZXRlLCB3ZXJmZQorCitBbmRlcmVzOgorICAgIGZlaGxlcm1lbGR1bmcsIHJldmlldworCmRpZmYgLS1naXQgYS9kb2MvaGlsZmUuc3BpZWxlciBiL2RvYy9oaWxmZS5zcGllbGVyCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmEyMDcyZjgKLS0tIC9kZXYvbnVsbAorKysgYi9kb2MvaGlsZmUuc3BpZWxlcgpAQCAtMCwwICsxLDYyIEBACisKKyAgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tU1BJRUxFUkhJTEZTU0VJVEUtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCitGdWVyIGZvbGdlbmRlIGFsbGdlbWVpbmUgQmVmZWhsZSB1bmQgVGhlbWVuIGthbm4gbWl0ICJoaWxmZSA8dGhlbWE+IiBlaW5lCitFcmxhZXV0ZXJ1bmcgYW5nZXplaWd0IHdlcmRlbjoKKworRWluZnVlaHJ1bmcgdW5kIGVyc3RlIFNjaHJpdHRlOgorICAgIEdydW5kbGVnZW5kOiAKKyAgICAgIHN5bnRheCwgYmV3ZWd1bmcsIHJlZ2VsbiwgZWluZnVlaHJ1bmcKKyAgICBDaGFyYWt0ZXI6CisgICAgICBhdHRyaWJ1dGUsIHphdWJlcnRyYWVua2UsIHN0dWZlbiwgc3R1ZmVucHVua3RlCisgICAgU3BpZWw6ICAgCisgICAgICBhYmVudGV1ZXIsIGdpbGRlbiwgemF1YmVyZWkKKyAgICBOZXVzcGllbGVyOiAgCisgICAgICBjaWNlcm9uZXMsIHR1dG9yaWFsCisKK0tvbW11bmlrYXRpb246CisgICAgSW0gUmF1bToJCisgICAgICBzYWdlLCBnZXNwcmFlY2gsIGZyYWdlLCBhbnR3b3J0ZQorICAgIFByaXZhdDoJCisgICAgICB0ZWlsZSAobWl0KSwgZXJ6YWVobGUsIGVyd2lkZXJlLCBmbHVlc3RlcmUsCisgICAgTVVELXdlaXQ6CQorICAgICAgcnVmZSwgZWJlbmVuLCBwb3N0LCBtcnVmZQorICAgIEFuZGVyZXM6CQorICAgICAgaWdub3JpZXJlLCBrb2JvbGQsIHdlZywgcGFydGllcywgc2VuZGVyd2llZGVyaG9sdW5nLCBrbGluZ2VsdG9uCisgICAgICB0ZWFtc3BlYWsKKworQWxsZ2VtZWluZSBBa3Rpb25lbjoKKyAgICBnaWIgKGFuKSwgaG9sZSAoYXVzKSwgbmltbSBbYXVzXSwgc3RlY2tlIChpbiksIHdpcmYgKHdlZyksCisgICAgYmVoYWx0ZSwga2xldHRlcmUsIHJlaXNlCisKK0ludGVyYWt0aW9uIHVuZCBJbmZvcm1hdGlvbjoKKyAgICBzY2hhdSAoYW4pLCB1bnRlcnN1Y2hlLCBsYXVzY2hlLCByaWVjaGUsIHN1Y2hlLCBpICg9aW52ZW50dXIpLAorICAgIGF1c3J1ZXN0dW5nLCBpbmZvLCBrdXJ6aW5mbywgdGFzdGUKKyAgICBpbmZvcm0sIGVyd2FydGUsIHdlciwga3dlciwga2t3ZXIsIG11ZHMsIHplaXQsIGZpbmdlciwgaWRsZXplaXQKKyAgICBlbWFpbCwgdXJsLCBvcnQsIGljcSwgd2VnbWVsZHVuZworCitTb25zdGlnZSBWZXJiZW46CisgICAgdmVyYmVuIChtaXQgZWlnZW5lciBIaWxmZWZ1bmt0aW9uKSwgYWR2ZXJiLCBlbW90ZSwgcmtudWRkbGUsIHJ3aW5rZQorCitFaW5nYWJlbiB1bmQgRXJzZXR6dW5nZW46CisgICAgYWxpYXMsIHVuYWxpYXMsIGVyc2V0enVuZ3NhbnplaWdlLCBoaXN0b3J5CisKK0thbXBmOgorICAgIHRvZXRlLCBzdG9wLCB2b3JzaWNodCwgenVlY2tlLCB6aWVoZSAoaGVydm9yL2F1cyksIHRyYWdlLAorICAgIHN0ZWNrZSAod2VnL3p1cnVlY2spLCBoZWlsdW5nLCBzdGVyYmVuLCBzcHJ1Y2hlcm11ZWR1bmcKKyAgICB0ZWFtLCB3YWZmZW5mZXJ0aWdrZWl0ZW4sIGdpZnQva3JhbmtoZWl0ZW4vZmx1ZWNoZQorCitHaWxkZW51ZWJlcnNpY2h0OgorICAgIGFiZW50ZXVyZXIsIGJpZXJzY2h1ZXR0bGVyLCBjaGFvcywgZHVua2VsZWxmZW4sIGthZW1wZmVyLCBrYXJhdGUsCisgICAga2xlcnVzLCB0YW5qaWFuLCB1cnVrLWhhaSwgd2Vyd29lbGZlLCB6YXViZXJlcgorCitBbmRlcmUgQmVmZWhsZToKKyAgICBlbmRlLCBzY2hsYWZlIChlaW4pLCBzcGVpY2hlcm4sIGxhbmcsIGt1cnosIHVsdHJha3VyeiwgYXVzZ2FlbmdlLAorICAgIHBhc3N3b3J0LCBmZWhsZXIsIGlkZWUsIHR5cG8sIHplaWxlbiwgc2VsYnN0bG9lc2NodW5nLCBzcGllbGRhdWVyLAorICAgIHNwaWVscGF1c2UsIHVocm1lbGR1bmcsIHp3ZWl0aWVtYXJraWVydW5nLCB0ZWxuZWdzLCBzdHR5LCBncmFmaWssIAorICAgIHRlbG5ldAorCitTb25zdGlnZSBUaGVtZW46CisgICAgdmVyZWluLCBrb256ZXB0LCBzZWhlciwgbWFnaWVyLCByZWdpb25lbiwgZWRpdG9yLCBidWVjaGVyLCBmYXEsCisgICAgYmFsYW5jZSwgbXVkcmVjaG5lciwgZWluZnVlaHJ1bmcsIHNwaWVsZQorCmRpZmYgLS1naXQgYS9kb2MvaG9vay9hdXRvX2luY2x1ZGUgYi9kb2MvaG9vay9hdXRvX2luY2x1ZGUKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYTgyYWRkYQotLS0gL2Rldi9udWxsCisrKyBiL2RvYy9ob29rL2F1dG9faW5jbHVkZQpAQCAtMCwwICsxLDM3IEBACitTWU5PUFNJUworICAgICAgICAjaW5jbHVkZSA8c3lzL2RyaXZlcl9ob29rcy5oPgorCisgICAgICAgIHNldF9kcml2ZXJfaG9vayhIX0FVVE9fSU5DTFVERSwgdmFsdWUpCisKKyAgICAgICAgPHZhbHVlPiBiZWluZzoKKworICAgICAgICAgIHN0cmluZyA8dGV4dD4KKyAgICAgICAgICBzdHJpbmcgPGNsb3N1cmU+KHN0cmluZyBiYXNlX2ZpbGUsIHN0cmluZyBjdXJyZW50X2ZpbGUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgLCBpbnQgc3lzX2luY2x1ZGUpCisKK0RFU0NSSVBUSU9OCisgICAgICAgIE9wdGlvbmFsIGhvb2sgc3BlY2lmeWluZyBhIHN0cmluZyB0byBiZSBpbmNsdWRlZCBiZWZvcmUKKyAgICAgICAgdGhlIHNvdXJjZSBvZiBldmVyeSBjb21waWxlZCBMUEMgb2JqZWN0LgorICAgICAgICBIb29rIHNldHRpbmcgY2FuIGJlIGEgc3RyaW5nIG9yIGEgY2xvc3VyZS4KKworICAgICAgICBJZiB0aGUgc2V0dGluZyBpcyBhIHN0cmluZywgaXQgd2lsbCBiZSBhdXRvbWF0aWNhbGx5IGluY2x1ZGVkIGJlZm9yZQorICAgICAgICB0aGUgc291cmNlIG9mIGV2ZXJ5IGNvbXBpbGVkIExQQyBvYmplY3QuCisKKyAgICAgICAgSWYgdGhlIHNldHRpbmcgaXMgYSBjbG9zdXJlLCBpdCBpcyBjYWxsZWQgZm9yIGV2ZXJ5IGZpbGUKKyAgICAgICAgb3BlbmVkIGJ5IHRoZSBjb21waWxlci4gPGJhc2VfZmlsZT4gd2lsbCBiZSB0aGUgZmlsZW5hbWUgb2YKKyAgICAgICAgdGhlIGNvbXBpbGVkIG9iamVjdCwgPGN1cnJlbnRfZmlsZT4gdGhlIG5hbWUgb2YgYSBmaWxlCisgICAgICAgIGluY2x1ZGVkIGRpcmVjdGx5IG9yIGluZGlyZWN0bHkgYnkgdGhlIDxiYXNlX2ZpbGU+LiBXaGVuIHRoZQorICAgICAgICA8YmFzZV9maWxlPiBpdHNlbGYgaXMgb3BlbmVkLCA8Y3VycmVudF9maWxlPiB3aWxsIGJlIDAuIEZvciBhbgorICAgICAgICBpbmNsdWRlZCBmaWxlLCA8c3lzX2luY2x1ZGU+IHdpbGwgYmUgVFJVRSBpZiBpdCBpcyBhIDw+LXR5cGUKKyAgICAgICAgaW5jbHVkZS4KKworICAgICAgICBJZiB0aGUgcmVzdWx0IGZyb20gdGhlIGNhbGwgaXMgYSBzdHJpbmcsIGl0IHdpbGwgYmUgaW5jbHVkZWQKKyAgICAgICAgYmVmb3JlIHRoZSBhY3R1YWwgdGV4dCBvZiB0aGUgZmlsZS4KKworICAgICAgICBJbiBib3RoIGNhc2VzLCB0aGUgc3RyaW5nIHdpbGwgYmUgaW5jbHVkZWQgYXMtaXM7IGluCisgICAgICAgIHBhcnRpY3VsYXIgbm8gdGVybWluYXRpbmcgJ1xuJyB3aWxsIGJlIGFkZGVkLgorCitISVNUT1JZCisKK1NFRSBBTFNPCisgICAgICAgIGhvb2tzKEMpLCBpbmNsdWRlX2RpcnMoSCkKZGlmZiAtLWdpdCBhL2RvYy9ob29rL2NsZWFuX3VwIGIvZG9jL2hvb2svY2xlYW5fdXAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZTAwNTIxYQotLS0gL2Rldi9udWxsCisrKyBiL2RvYy9ob29rL2NsZWFuX3VwCkBAIC0wLDAgKzEsNDUgQEAKK1NZTk9QU0lTCisgICAgICAgICNpbmNsdWRlIDxzeXMvZHJpdmVyX2hvb2tzLmg+CisKKyAgICAgICAgc2V0X2RyaXZlcl9ob29rKEhfQ0xFQU5fVVAsIHZhbHVlKQorCisgICAgICAgIDx2YWx1ZT4gYmVpbmc6CisKKyAgICAgICAgICBpbnQgPGNsb3N1cmU+KGludCByZWYsIG9iamVjdCBvYikKKyAgICAgICAgICB2b2lkfGludCA8bmFtZT4oaW50IHJlZikKKworREVTQ1JJUFRJT04KKyAgICAgICAgT3B0aW9uYWwgaG9vayB0byBjbGVhbiB1cCBhbiBvYmplY3QuCisgICAgICAgIEhvb2sgc2V0dGluZyBjYW4gYmUgYW55IGNsb3N1cmUsIG9yIHRoZSBuYW1lIG9mIHRoZSBmdW5jdGlvbgorICAgICAgICB0byBjYWxsIGluIHRoZSBvYmplY3QuCisKKyAgICAgICAgVGhpcyBob29rIGlzIGNhbGxlZCBmb3IgYW4gb2JqZWN0IGlmIGl0IGhhc24ndCBiZWVuIHVzZWQKKyAgICAgICAgZm9yIGF0IGxlYXN0IFRJTUVfVE9fQ0xFQU5fVVAgc2Vjb25kcywgdG8gZ2l2ZSBpdCB0aGUKKyAgICAgICAgb3Bwb3J0dW5pdHkgdG8gc2VsZiBkZXN0cnVjdC4KKworICAgICAgICBJZiB0aGUgaG9vayBpcyBhIGNsb3N1cmUsIGl0IGlzIGNhbGxlZCB3aXRoIHRoZSByZWZjb3VudCBvZgorICAgICAgICB0aGUgb2JqZWN0IHRvIGNsZWFuIHVwIGFzIGZpcnN0IGFyZ3VtZW50LCBhbmQgd2l0aCB0aGUgb2JqZWN0CisgICAgICAgIGl0c2VsZiBhcyBzZWNvbmQuIExhbWJkYSBjbG9zdXJlcyBhcmUgYWxzbyBib3VuZCB0byB0aGUgb2JqZWN0CisgICAgICAgIHByaW9yIHRvIHRoZSBjYWxsLgorCisgICAgICAgIElmIHRoZSBob29rIGlzIHRoZSBuYW1lIG9mIGFuIGxmdW4sIGl0IGlzIGNhbGxlZCBpbiB0aGUKKyAgICAgICAgb2JqZWN0IHdpdGggaXRzIHJlZmNvdW50IGFzIGFyZ3VtZW50LgorCisgICAgICAgIEluIGJvdGggY2FsbHMsIHRoZSByZWZjb3VudCBpcyBjb25zdHJ1Y3RlZCBhczoKKworICAgICAgICAgIHJlZiA9IDA6IHRoZSBvYmplY3QgaXMgYSBjbG9uZSwgb3IgYSBibHVlcHJpbnQgd2l0aAorICAgICAgICAgICAgICAgICAgIHJlcGxhY2VkIHByb2dyYW0uCisgICAgICAgICAgcmVmID0gMTogdGhlIG9iamVjdCBpcyBhIHN3YXBwZWQgb3IgdW51c2VkIGJsdWVwcmludC4KKyAgICAgICAgICByZWYgPiAxOiB0aGUgb2JqZWN0IGlzIGEgdXNlZCBibHVlcHJpbnQgd2l0aCA8cmVmPiByZWZlcmVuY2VzLgorCisgICAgICAgIFRoZSBjbGVhbnVwIG1ldGhvZCBoYXMgdGhlIHBvc3NpYmlsaXR5IHRvIGRlc3RydWN0IHRoZQorICAgICAgICBvYmplY3QuIFRvIHN1cnZpdmUgdGhpcyB0aW1lLCBidXQgdHJ5IGFnYWluIHNvbWUgdGltZSBsYXRlciwKKyAgICAgICAgdGhlIGNhbGwgaGFzIHRvIHJlc3VsdCBpbiBhIG5vbi16ZXJvIHZhbHVlLgorCisgICAgICAgIElmIHRoZSBob29rIHNwZWNpZmllcyBhIG5vbi1leGlzdGluZyBsZnVuLCBvciBpZiB0aGUgY2FsbAorICAgICAgICByZXR1cm5zIDAsIG5vIGZ1cnRoZXIgYXR0ZW1wdCB0byBjbGVhbiB1cCB0aGlzIG9iamVjdCB3aWxsIGJlIGRvbmUuCisKK0hJU1RPUlkKKworU0VFIEFMU08KKyAgICAgICAgaG9va3MoQykKZGlmZiAtLWdpdCBhL2RvYy9ob29rL2Nsb25lX3VpZHMgYi9kb2MvaG9vay9jbG9uZV91aWRzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjRiZjkwMmEKLS0tIC9kZXYvbnVsbAorKysgYi9kb2MvaG9vay9jbG9uZV91aWRzCkBAIC0wLDAgKzEsMzYgQEAKK1NZTk9QU0lTCisgICAgICAgICNpbmNsdWRlIDxzeXMvZHJpdmVyX2hvb2tzLmg+CisKKyAgICAgICAgc2V0X2RyaXZlcl9ob29rKEhfQ0xPTkVfVUlEUywgdmFsdWUpCisKKyAgICAgICAgPHZhbHVlPiBiZWluZzoKKworICAgICAgICAgIG1peGVkIDxjbG9zdXJlPihvYmplY3QgYmx1ZXByaW50LCBzdHJpbmcgb2JqZWN0bmFtZSkKKworREVTQ1JJUFRJT04KKyAgICAgICAgTWFuZGF0b3J5IGhvb2tzIHRvIGRldGVybWluZSB0aGUgdWlkIGFuZCBldWlkIG9mIGNsb25lZAorICAgICAgICBvYmplY3RzLiAgSG9vayBzZXR0aW5ncyBjYW4gYmUgYW55IGNsb3N1cmUuCisKKyAgICAgICAgV2hlbiBhbiBvYmplY3QgaXMgY2xvbmVkLCB0aGUgSF9DTE9ORV9VSURTIGhvb2sgaXMgY2FsbGVkIHdpdGgKKyAgICAgICAgdGhlIGJsdWVwcmludCBvYmplY3QgYXMgZmlyc3QgYW5kIHRoZSBjbG9uZSdzIGRlc2lnbmF0ZWQgbmFtZQorICAgICAgICBhcyBzZWNvbmQgYXJndW1lbnQuIFRoZSBuZXcgb2JqZWN0IGFscmVhZHkgZXhpc3RzLCBidXQgaGFzIDAKKyAgICAgICAgdWlkcy4KKworICAgICAgICBGb3IgdGhlIHJlc3VsdCwgdGhlIGZvbGxvd2luZyBwb3NzaWJpbGl0aWVzIGV4aXN0ICg8bnVtPiBpcworICAgICAgICBhIG5vbi16ZXJvIG51bWJlciwgPG5vLXN0cmluZz4gaXMgYW55dGhpbmcgYnV0IGEgc3RyaW5nKToKKworICAgICAgICAgICAiPHVpZD4iICAgICAgICAgICAgICAgICAgICAtPiB1aWQgPSAiPHVpZD4iLCBldWlkID0gIjx1aWQ+IgorICAgICAgICAgICAoeyAiPHVpZD4iLCAiPGV1aWQ+IiB9KSAgICAtPiB1aWQgPSAiPHVpZD4iLCBldWlkID0gIjxldWlkPiIKKyAgICAgICAgICAgKHsgIjx1aWQ+IiwgPG5vLXN0cmluZz4gfSkgLT4gdWlkID0gIjx1aWQ+IiwgZXVpZCA9IDAKKworICAgICAgICBJZiBzdHJpY3QtZXVpZHMgaXMgbm90IGFjdGl2ZSwgdGhlIGZvbGxvd2luZyByZXN1bHRzIGFyZQorICAgICAgICBwb3NzaWJsZSwgdG9vOgorCisgICAgICAgICAgIDxudW0+ICAgICAgICAgICAgICAgICAgICAgIC0+IHVpZCA9IDAsIGV1aWQgPSAwCisgICAgICAgICAgICh7IDxudW0+LCAiPGV1aWQ+IiB9KSAgICAgIC0+IHVpZCA9IDAsIGV1aWQgPSAiPGV1aWQ+IgorICAgICAgICAgICAoeyA8bnVtPiwgPG5vLXN0cmluZz4gfSkgICAtPiB1aWQgPSAwLCBldWlkID0gMAorCitISVNUT1JZCisKK1NFRSBBTFNPCisgICAgICAgIGhvb2tzKEMpLCB1aWRzKEMpLCBsb2FkX3VpZHMoSCkKZGlmZiAtLWdpdCBhL2RvYy9ob29rL2NvbW1hbmQgYi9kb2MvaG9vay9jb21tYW5kCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmRlMWI2MDkKLS0tIC9kZXYvbnVsbAorKysgYi9kb2MvaG9vay9jb21tYW5kCkBAIC0wLDAgKzEsMzMgQEAKK1NZTk9QU0lTCisgICAgICAgICNpbmNsdWRlIDxzeXMvZHJpdmVyX2hvb2tzLmg+CisKKyAgICAgICAgc2V0X2RyaXZlcl9ob29rKEhfQ09NTUFORCwgdmFsdWUpCisKKyAgICAgICAgPHZhbHVlPiBiZWluZzoKKworICAgICAgICAgIGludCA8Y2xvc3VyZT4oc3RyaW5nIGNvbW1hbmQsIG9iamVjdCBjb21tYW5kX2dpdmVyKQorICAgICAgICAgIGludCA8bmFtZT4oc3RyaW5nIGNvbW1hbmQsIG9iamVjdCBjb21tYW5kX2dpdmVyKQorCitERVNDUklQVElPTgorICAgICAgICBPcHRpb25hbCBob29rIHRvIHBhcnNlIGFuZCBleGVjdXRlIGNvbW1hbmRzLiBJZiB0aGlzIGhvb2sgaXMKKyAgICAgICAgdXNlZCwgaXQgYnlwYXNzZXMgdGhlIG5vcm1hbCBjb21tYW5kIHBhcnNpbmcgZG9uZSBieSB0aGUKKyAgICAgICAgZHJpdmVyIChpbmNsdWRpbmcgdGhlIE1PRElGWV9DT01NQU5EIGFuZCBOT1RJRllfRkFJTCBob29rcykuCisKKyAgICAgICAgVGhlIGhvb2sgaXMgY2FsbGVkIHdpdGggdHdvIHBhcmFtZXRlcnM6IHRoZSBjb21tYW5kIHJlY2VpdmVkCisgICAgICAgIGZyb20gdGhlIGxpdmluZyAoaW50ZXJhY3RpdmUgdXNlciBvciBOUEMpLCBhbmQgdGhlIGxpdmluZworICAgICAgICBvYmplY3QgKHRoZSAnY29tbWFuZCBnaXZlcicpIGl0c2VsZi4gVGhlIGhvb2sgaGFzIHRvIHJldHVybgorICAgICAgICBub24tMCBpZiB0aGUgY29tbWFuZCB3YXMgZm91bmQgYW5kIGV4ZWN1dGVkLCBhbmQgMCBvdGhlcndpc2UuCisKKyAgICAgICAgQXQgdGhlIHRpbWUgdGhlIGhvb2sgaXMgY2FsbGVkLCBxdWVyeV9jb21tYW5kKCkgcmV0dXJucyB0aGUKKyAgICAgICAgY29tbWFuZCBzdHJpbmcgYW5kIHRoaXNfcGxheWVyKCkgcmV0dXJucyB0aGUgbGl2aW5nIG9iamVjdC4KKyAgICAgICAgcXVlcnlfdmVyYigpIGFuZCBxdWVyeV9ub3RpZnlfZmFpbCgpIHJldHVybiAwLgorCisgICAgICAgIElmIHRoZSBob29rIGlzIGEgc3RyaW5nLCBpdCBpcyB0aGUgbmFtZSBvZiBhbiBsZnVuIGluIHRoZQorICAgICAgICBjb21tYW5kIGdpdmVyOyBpZiB0aGUgaG9vayBpcyBhIGxhbWJkYSBjbG9zdXJlLCBpdCBpcyBib3VuZCB0bworICAgICAgICB0aGUgY29tbWFuZCBnaXZlciBiZWZvcmUgdGhlIGNhbGwuCisKK0hJU1RPUlkKKworU0VFIEFMU08KKyAgICAgICAgaG9va3MoQyksIG1vZGlmeV9jb21tYW5kKEgpLCBtb2RpZnlfY29tbWFuZF9mbmFtZShIKSwgbm90aWZ5X2ZhaWwoSCksCisgICAgICAgIHNlbmRfbm90aWZ5X2ZhaWwoSCkKZGlmZiAtLWdpdCBhL2RvYy9ob29rL2NyZWF0ZV9jbG9uZSBiL2RvYy9ob29rL2NyZWF0ZV9jbG9uZQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5iZjMxMDBlCi0tLSAvZGV2L251bGwKKysrIGIvZG9jL2hvb2svY3JlYXRlX2Nsb25lCkBAIC0wLDAgKzEsMzQgQEAKK1NZTk9QU0lTCisgICAgICAgICNpbmNsdWRlIDxzeXMvZHJpdmVyX2hvb2tzLmg+CisKKyAgICAgICAgc2V0X2RyaXZlcl9ob29rKEhfQ1JFQVRFX0NMT05FLCB2YWx1ZSkKKworICAgICAgICA8dmFsdWU+IGJlaW5nOgorCisgICAgICAgICAgdm9pZCA8bmFtZT4gKDApCisgICAgICAgICAgaW50IDxjbG9zdXJlPiAoIHZvaWQgKQorICAgICAgICAgIGludCA8Y2xvc3VyZT4gKG9iamVjdCBvYmpfdG9faW5pdCkKKworREVTQ1JJUFRJT04KKyAgICAgICAgT3B0aW9uYWwgaG9va3MgdG8gaW5pdGlhbGl6ZSBhIGNsb25lZCBvYmplY3QgYWZ0ZXIgY3JlYXRpb24uCisgICAgICAgIEhvb2sgc2V0dGluZyBjYW4gYmUgdW5ib3VuZCBsYW1iZGEgY2xvc3VyZXMsIG9yIHRoZSBuYW1lIG9mCisgICAgICAgIHRoZSBmdW5jdGlvbiAoc3RhdGljIG9yIHB1YmxpYykgdG8gY2FsbCBpbiB0aGUgb2JqZWN0LgorCisgICAgICAgIElmIHRoZSBob29rIGlzIGEgY2xvc3VyZSBleHBlY3RpbmcgYW4gYXJndW1lbnQsIGl0IGlzIGJvdW5kCisgICAgICAgIHRvIHRoZSBjdXJyZW50IG9iamVjdCBhbmQgY2FsbGVkIHdpdGggdGhlIGNyZWF0ZWQgb2JqZWN0IGFzCisgICAgICAgIGFyZ3VtZW50LiBJZiB0aGUgaG9vayBhcyBhIGNsb3N1cmUgd2l0aG91dCBhcmd1bWVudHMsIGl0IGlzIGJvdW5kIHRvCisgICAgICAgIHRoZSBvYmplY3QgdG8gYmUgaW5pdGFsaXplZCBhbmQgY2FsbGVkLgorCisgICAgICAgIElmIHRoZSByZXN1bHQgb2YgdGhlIGNsb3N1cmUgY2FsbCBpcyBhIG5vbi16ZXJvIG51bWJlciwgaXQgaXMgdXNlZAorICAgICAgICBhcyB0aGUgaW50ZXJ2YWwgdG8gd2FpdCBiZWZvcmUgdGhlIGZpcnN0IHJlc2V0KCksIGVsc2UgdGhlIGRlZmF1bHQKKyAgICAgICAgaW50ZXJ2YWwgY29tcHV0ZWQgZnJvbSBUSU1FX1RPX1JFU0VUIGlzIHVzZWQuCisKKyAgICAgICAgSWYgdGhlIGhvb2sgaXMgZGVmaW5lZCBhcyB0aGUgbmFtZSBvZiBhbiBsZnVuIGluIHRoZSBvYmplY3QsCisgICAgICAgIGl0IGlzIGNhbGxlZCBpbiB0aGUgb2JqZWN0IHdpdGggMCBhcyBhcmd1bWVudCwgYW5kIGFueSByZXN1bHQKKyAgICAgICAgaXMgaWdub3JlZC4KKworSElTVE9SWQorICAgICAgICBMRE11ZCAzLjIuMTAgYWxsb3dlZCBzdGF0aWMgZnVuY3Rpb25zIHRvIGJlIGdpdmVuIGJ5IG5hbWUuCisKK1NFRSBBTFNPCisgICAgICAgIGhvb2tzKEMpLCBjcmVhdGVfb2IoSCksIGNyZWF0ZV9zdXBlcihIKQpkaWZmIC0tZ2l0IGEvZG9jL2hvb2svY3JlYXRlX29iIGIvZG9jL2hvb2svY3JlYXRlX29iCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjdkZTdiYTMKLS0tIC9kZXYvbnVsbAorKysgYi9kb2MvaG9vay9jcmVhdGVfb2IKQEAgLTAsMCArMSwzNSBAQAorU1lOT1BTSVMKKyAgICAgICAgI2luY2x1ZGUgPHN5cy9kcml2ZXJfaG9va3MuaD4KKworICAgICAgICBzZXRfZHJpdmVyX2hvb2soSF9DUkVBVEVfT0IsIHZhbHVlKQorCisgICAgICAgIDx2YWx1ZT4gYmVpbmc6CisKKyAgICAgICAgICB2b2lkIDxuYW1lPiAoMCkKKyAgICAgICAgICBpbnQgPGNsb3N1cmU+ICggdm9pZCApCisgICAgICAgICAgaW50IDxjbG9zdXJlPiAob2JqZWN0IG9ial90b19pbml0KQorCitERVNDUklQVElPTgorICAgICAgICBPcHRpb25hbCBob29rcyB0byBpbml0aWFsaXplIGFuIGV4cGxpY3RlbHkgbG9hZGVkCisgICAgICAgIG9iamVjdC9ibHVlcHJpbnQgYWZ0ZXIgY3JlYXRpb24uICBIb29rIHNldHRpbmcgY2FuIGJlIHVuYm91bmQKKyAgICAgICAgbGFtYmRhIGNsb3N1cmVzLCBvciB0aGUgbmFtZSBvZiB0aGUgZnVuY3Rpb24gKHN0YXRpYyBvciBwdWJsaWMpIHRvCisgICAgICAgIGNhbGwgaW4gdGhlIG9iamVjdC4KKworICAgICAgICBJZiB0aGUgaG9vayBpcyBhIGNsb3N1cmUgZXhwZWN0aW5nIGFuIGFyZ3VtZW50LCBpdCBpcyBib3VuZAorICAgICAgICB0byB0aGUgY3VycmVudCBvYmplY3QgYW5kIGNhbGxlZCB3aXRoIHRoZSBjcmVhdGVkIG9iamVjdCBhcworICAgICAgICBhcmd1bWVudC4gSWYgdGhlIGhvb2sgYXMgYSBjbG9zdXJlIHdpdGhvdXQgYXJndW1lbnRzLCBpdCBpcyBib3VuZCB0bworICAgICAgICB0aGUgb2JqZWN0IHRvIGJlIGluaXRhbGl6ZWQgYW5kIGNhbGxlZC4KKworICAgICAgICBJZiB0aGUgcmVzdWx0IG9mIHRoZSBjbG9zdXJlIGNhbGwgaXMgYSBub24temVybyBudW1iZXIsIGl0IGlzIHVzZWQKKyAgICAgICAgYXMgdGhlIGludGVydmFsIHRvIHdhaXQgYmVmb3JlIHRoZSBmaXJzdCByZXNldCgpLCBlbHNlIHRoZSBkZWZhdWx0CisgICAgICAgIGludGVydmFsIGNvbXB1dGVkIGZyb20gVElNRV9UT19SRVNFVCBpcyB1c2VkLgorCisgICAgICAgIElmIHRoZSBob29rIGlzIGRlZmluZWQgYXMgdGhlIG5hbWUgb2YgYW4gbGZ1biBpbiB0aGUgb2JqZWN0LAorICAgICAgICBpdCBpcyBjYWxsZWQgaW4gdGhlIG9iamVjdCB3aXRoIDAgYXMgYXJndW1lbnQsIGFuZCBhbnkgcmVzdWx0CisgICAgICAgIGlzIGlnbm9yZWQuCisKK0hJU1RPUlkKKyAgICAgICAgTERNdWQgMy4yLjEwIGFsbG93ZWQgc3RhdGljIGZ1bmN0aW9ucyB0byBiZSBnaXZlbiBieSBuYW1lLgorCitTRUUgQUxTTworICAgICAgICBob29rcyhDKSwgY3JlYXRlX3N1cGVyKEgpLCBjcmVhdGVfY2xvbmUoSCkKZGlmZiAtLWdpdCBhL2RvYy9ob29rL2NyZWF0ZV9zdXBlciBiL2RvYy9ob29rL2NyZWF0ZV9zdXBlcgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5hNTAyNzMwCi0tLSAvZGV2L251bGwKKysrIGIvZG9jL2hvb2svY3JlYXRlX3N1cGVyCkBAIC0wLDAgKzEsMzUgQEAKK1NZTk9QU0lTCisgICAgICAgICNpbmNsdWRlIDxzeXMvZHJpdmVyX2hvb2tzLmg+CisKKyAgICAgICAgc2V0X2RyaXZlcl9ob29rKEhfQ1JFQVRFX1NVUEVSLCB2YWx1ZSkKKworICAgICAgICA8dmFsdWU+IGJlaW5nOgorCisgICAgICAgICAgdm9pZCA8bmFtZT4gKDApCisgICAgICAgICAgaW50IDxjbG9zdXJlPiAoIHZvaWQgKQorICAgICAgICAgIGludCA8Y2xvc3VyZT4gKG9iamVjdCBvYmpfdG9faW5pdCkKKworREVTQ1JJUFRJT04KKyAgICAgICAgT3B0aW9uYWwgaG9va3MgdG8gaW5pdGlhbGl6ZSBhIGJsdWVwcmludCB3aGljaCBpcyBsb2FkZWQgYnkKKyAgICAgICAgaW5oZXJpdGFuY2UgYWZ0ZXIgY3JlYXRpb24uCisgICAgICAgIEhvb2sgc2V0dGluZyBjYW4gYmUgdW5ib3VuZCBsYW1iZGEgY2xvc3VyZXMsIG9yIHRoZSBuYW1lIG9mCisgICAgICAgIHRoZSBmdW5jdGlvbiAoc3RhdGljIG9yIHB1YmxpYykgdG8gY2FsbCBpbiB0aGUgb2JqZWN0LgorCisgICAgICAgIElmIHRoZSBob29rIGlzIGEgY2xvc3VyZSBleHBlY3RpbmcgYW4gYXJndW1lbnQsIGl0IGlzIGJvdW5kCisgICAgICAgIHRvIHRoZSBjdXJyZW50IG9iamVjdCBhbmQgY2FsbGVkIHdpdGggdGhlIGNyZWF0ZWQgb2JqZWN0IGFzCisgICAgICAgIGFyZ3VtZW50LiBJZiB0aGUgaG9vayBhcyBhIGNsb3N1cmUgd2l0aG91dCBhcmd1bWVudHMsIGl0IGlzIGJvdW5kIHRvCisgICAgICAgIHRoZSBvYmplY3QgdG8gYmUgaW5pdGFsaXplZCBhbmQgY2FsbGVkLgorCisgICAgICAgIElmIHRoZSByZXN1bHQgb2YgdGhlIGNsb3N1cmUgY2FsbCBpcyBhIG5vbi16ZXJvIG51bWJlciwgaXQgaXMgdXNlZAorICAgICAgICBhcyB0aGUgaW50ZXJ2YWwgdG8gd2FpdCBiZWZvcmUgdGhlIGZpcnN0IHJlc2V0KCksIGVsc2UgdGhlIGRlZmF1bHQKKyAgICAgICAgaW50ZXJ2YWwgY29tcHV0ZWQgZnJvbSBUSU1FX1RPX1JFU0VUIGlzIHVzZWQuCisKKyAgICAgICAgSWYgdGhlIGhvb2sgaXMgZGVmaW5lZCBhcyB0aGUgbmFtZSBvZiBhbiBsZnVuIGluIHRoZSBvYmplY3QsCisgICAgICAgIGl0IGlzIGNhbGxlZCBpbiB0aGUgb2JqZWN0IHdpdGggMCBhcyBhcmd1bWVudCwgYW5kIGFueSByZXN1bHQKKyAgICAgICAgaXMgaWdub3JlZC4KKworSElTVE9SWQorICAgICAgICBMRE11ZCAzLjIuMTAgYWxsb3dlZCBzdGF0aWMgZnVuY3Rpb25zIHRvIGJlIGdpdmVuIGJ5IG5hbWUuCisKK1NFRSBBTFNPCisgICAgICAgIGhvb2tzKEMpLCBjcmVhdGVfb2IoSCksIGNyZWF0ZV9jbG9uZShIKQpkaWZmIC0tZ2l0IGEvZG9jL2hvb2svZGVmYXVsdF9tZXRob2QgYi9kb2MvaG9vay9kZWZhdWx0X21ldGhvZApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi40MjdhMTMxCi0tLSAvZGV2L251bGwKKysrIGIvZG9jL2hvb2svZGVmYXVsdF9tZXRob2QKQEAgLTAsMCArMSw0NCBAQAorU1lOT1BTSVMKKyAgICAgICAgI2luY2x1ZGUgPHN5cy9kcml2ZXJfaG9va3MuaD4KKworICAgICAgICBzZXRfZHJpdmVyX2hvb2soSF9ERUZBVUxUX01FVEhPRCwgdmFsdWUpCisKKyAgICAgICAgPHZhbHVlPiBiZWluZzoKKworICAgICAgICAgIGludCA8bmFtZT4obWl4ZWQgJiByZXN1bHQsIHN0cmluZyBmdW4sIHZhcmFyZ3MgYXJncykKKyAgICAgICAgICBpbnQgPGNsb3N1cmU+KG1peGVkICYgcmVzdWx0LCBvYmplY3Qgb2IsIHN0cmluZyBmdW4sIHZhcmFyZ3MgYXJncykKKworREVTQ1JJUFRJT04KKyAgICAgICAgT3B0aW9uYWwgaG9vayB0byBwcm92aWRlIGRlZmF1bHQgaW1wbGVtZW50YXRpb24gZm9yIHVucmVzb2x2ZWQKKyAgICAgICAgY2FsbHMuIEhvb2sgc2V0dGluZyBjYW4gYmUgYW55IGNsb3N1cmUsIG9yIHRoZSBuYW1lIG9mIHRoZQorICAgICAgICBmdW5jdGlvbiB0byBjYWxsIGluIHRoZSBvYmplY3QuCisKKyAgICAgICAgVGhpcyBob29rIGlzIGNhbGxlZCB3aGVuZXZlciBhIGNhbGxfb3RoZXIoKSwgY2FsbF9yZXNvbHZlZCgpCisgICAgICAgIG9yIGNhbGxfb3V0KCkgb24gbmFtZWQgZnVuY3Rpb24gKGFzIG9wcG9zZWQgdG8gYSBjbG9zdXJlKQorICAgICAgICBjb3VsZG4ndCBiZSByZXNvbHZlZC4gVGhlIGhvb2sgaGFzIHRoZW4gdGhlIG9wcG9ydHVuaXR5IHRvCisgICAgICAgIHByb3ZpZGUgYSBkZWZhdWx0IGltcGxlbWVudGF0aW9uLgorCisgICAgICAgIEV4ZW1wdCBmcm9tIHRoaXMgYmVoYXZpb3VyIGFyZSBjYWxscyB0byB0aGUgbWFzdGVyIG9iamVjdCwgdG8KKyAgICAgICAgc2ltdWwtZWZ1bnMsIGFuZCBjYWxscyBkb25lIHdpdGggY2FsbF9kaXJlY3QoKSBhbmQKKyAgICAgICAgY2FsbF9kaXJlY3RfcmVzb2x2ZWQoKS4KKworICAgICAgICBJZiB0aGUgaG9vayBpcyB0aGUgbmFtZSBvZiBhbiBsZnVuLCBpdCBpcyBjYWxsZWQgaW4gdGhlIHRhcmdldAorICAgICAgICBvYmplY3Q7IG90aGVyd2lzZSBpZiBpdCBpcyBhIGNsb3N1cmUsIHRoZSB0YXJnZXQgb2JqZWN0IGlzCisgICAgICAgIHBhc3NlZCBhcyBwYXJhbWV0ZXIgPG9iPi4KKworICAgICAgICBUaGUgb3RoZXIgcGFyYW1ldGVycyBwYXNzZWQgYXJlIHRoZSBuYW1lIDxmdW4+IG9mIHRoZSBjYWxsZWQKKyAgICAgICAgZnVuY3Rpb24sIHRoZSBhcmd1bWVudHMgPGFyZ3M+IHBhc3NlZCB0byB0aGUgY2FsbCAoaWYgYW55KSwKKyAgICAgICAgYW5kIGEgcmVmZXJlbmNlIDxyZXN1bHQ+IHRvIGEgdmFyaWFibGUgZm9yIHRoZSBjYWxsIHJlc3VsdC4KKworICAgICAgICBJZiB0aGUgaG9vayBjYW4gcmVzb2x2ZSB0aGUgY2FsbCwgaXQgaGFzIHRvIHJldHVybiB0aGUgY2FsbAorICAgICAgICByZXN1bHQgaW4gPHJlc3VsdD4gYW5kIDEgYXMgZnVuY3Rpb24gcmVzdWx0LgorCisgICAgICAgIElmIHRoZSBob29rIGNhbiBub3QgKG9yIGRvZXNuJ3Qgd2FudCB0bykgcmVzb2x2ZSB0aGUgY2FsbCwgaXQKKyAgICAgICAgaGFzIHRvIHJldHVybiAwLgorCisKK0hJU1RPUlkKKyAgICAgICAgSW50cm9kdWNlZCBpbiBMRE11ZCAzLjMuMTEzCisKK1NFRSBBTFNPCisgICAgICAgIGhvb2tzKEMpCmRpZmYgLS1naXQgYS9kb2MvaG9vay9kZWZhdWx0X3Byb21wdCBiL2RvYy9ob29rL2RlZmF1bHRfcHJvbXB0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjYyMzFiYjQKLS0tIC9kZXYvbnVsbAorKysgYi9kb2MvaG9vay9kZWZhdWx0X3Byb21wdApAQCAtMCwwICsxLDI0IEBACitTWU5PUFNJUworICAgICAgICAjaW5jbHVkZSA8c3lzL2RyaXZlcl9ob29rcy5oPgorCisgICAgICAgIHNldF9kcml2ZXJfaG9vayhIX0RFRkFVTFRfUFJPTVBULCB2YWx1ZSkKKworICAgICAgICA8dmFsdWU+IGJlaW5nOgorCisgICAgICAgICAgc3RyaW5nIDxwcm9tcHQ+CisgICAgICAgICAgc3RyaW5nIDxjbG9zdXJlPigpCisKK0RFU0NSSVBUSU9OCisgICAgICAgIE9wdGlvbmFsIGhvb2sgZm9yIHRoZSBjb21tYW5kIHByb21wdC4gSWYgdGhpcyBob29rIGlzIG5vdCB1c2VkLAorICAgICAgICB0aGUgZHJpdmVyIHdpbGwgdXNlICI+ICIgYXMgdGhlIGNvbW1hbmQgcHJvbXB0LgorCisgICAgICAgIFRoZSBob29rIGNhbiBiZSBnaXZlbiBhcyBzdHJpbmcgb3IgYXMgY2xvc3VyZS4gSWYgaXQgaXMgYQorICAgICAgICBjbG9zdXJlLCBpdCBpcyBjYWxsZWQgd2l0aCB0aGUgY29tbWFuZGdpdmVyIGJlaW5nIHRoZSBjYWxsaW5nCisgICAgICAgIG9iamVjdC4gSWYgdGhlIHJlc3VsdCBpcyBhIHN0cmluZywgaXQgd2lsbCBiZSBwcmludGVkLAorICAgICAgICBvdGhlcndpc2UgaWdub3JlZC4KKworSElTVE9SWQorICAgICAgICBJbnRyb2R1Y2VkIGluIExETXVkIDMuMy4xNjMuCisKK1NFRSBBTFNPCisgICAgICAgIGhvb2tzKEMpLCBwcmludF9wcm9tcHQoSCkKZGlmZiAtLWdpdCBhL2RvYy9ob29rL2VycV9zdG9wIGIvZG9jL2hvb2svZXJxX3N0b3AKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYTEzNWExYwotLS0gL2Rldi9udWxsCisrKyBiL2RvYy9ob29rL2VycV9zdG9wCkBAIC0wLDAgKzEsMjAgQEAKK1NZTk9QU0lTCisgICAgICAgICNpbmNsdWRlIDxzeXMvZHJpdmVyX2hvb2tzLmg+CisKKyAgICAgICAgc2V0X2RyaXZlcl9ob29rKEhfRVJRX1NUT1AsIHZhbHVlKQorCisgICAgICAgIDx2YWx1ZT4gYmVpbmc6CisKKyAgICAgICAgICB2b2lkIDxjbG9zdXJlPigpCisKK0RFU0NSSVBUSU9OCisgICAgICAgIE9wdGlvbmFsIGhvb2sgdG8gbm90aWZ5IHRoZSBtdWRsaWIgYWJvdXQgdGhlIHRlcm1pbmF0aW9uIG9mCisgICAgICAgIHRoZSBlcnEgZGVtb24uICBIb29rIHNldHRpbmcgbWF5IGJlIGFueSBjbG9zdXJlLgorCisgICAgICAgIFRoZSBjbG9zdXJlIGlzIGNhbGxlZCB3aXRob3V0IGFyZ3VtZW50cyBhbmQgbWF5IGRvIHdoYXRldmVyIGl0CisgICAgICAgIGxpa2VzIHRvIGNsZWFuLXVwIGFmdGVyIHRoZSBlcnEuCisKK0hJU1RPUlkKKworU0VFIEFMU08KKyAgICAgICAgaG9va3MoQykKZGlmZiAtLWdpdCBhL2RvYy9ob29rL2hvb2sgYi9kb2MvaG9vay9ob29rCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjMyMTg0NDUKLS0tIC9kZXYvbnVsbAorKysgYi9kb2MvaG9vay9ob29rCkBAIC0wLDAgKzEsMTggQEAKK0NPTkNFUFQKKyAgICAgICAgZHJpdmVyIGhvb2tzCisKK0RFU0NSSVBUSU9OCisgICAgICAgIFRvIGFsbG93IGEgZ3JlYXRlciBmbGV4aWJpbGl0eSBvZiB0aGUgbXVkcywgdGhlIGdhbWVkcml2ZXJzCisgICAgICAgIHNpbmNlIDMuMi4xIG1vdmVkIHNldmVyYWwgb25jZSBoYXJkY29kZWQgJ3VuZGVyZ3JvdW5kJworICAgICAgICBhY3Rpdml0aWVzIGZyb20gdGhlIGRyaXZlciBpbnRvIHRoZSBtdWRsaWIuIFRoaXMgaW5jbHVkZXMgZm9yCisgICAgICAgIGV4YW1wbGUgdGhlIGRpZmZlcmVuY2VzIGJldHdlZW4gY29tcGF0IGFuZCBuYXRpdmUgbW9kZS4KKworICAgICAgICBUaGUgaG9va3MgYXJlIHNldCB3aXRoIHRoZSBwcml2aWxlZ2VkIGVmdW4gc2V0X2RyaXZlcl9ob29rKCkuCisgICAgICAgIFNvbWUgb2YgdGhlIGhvb2tzIGFyZSBtYW5kYXRvcnksIHNvbWUgbm90LiBNb3N0IGhvb2tzIGFjY2VwdAorICAgICAgICB1bmJvdW5kIGxhbWJkYSBjbG9zdXJlcyBhcyB2YWx1ZXMsIHNvbWUgYWxzbyBsZnVuIGNsb3N1cmVzIG9yCisgICAgICAgIGV2ZW4gc3RyaW5ncy4KKyAgICAgICAgVGhlIGhvb2tzIGFyZSBpZGVudGlmaWVkIGJ5IGFuIG9yZGluYWwgbnVtYmVyLCBmb3Igd2hpY2gKKyAgICAgICAgc3ltYm9saWMgbmFtZXMgYXJlIGRlZmluZWQgaW4gL3N5cy9kcml2ZXJob29rcy5oLgorCitTRUUgQUxTTworICAgICAgICBuYXRpdmUoQyksIHNldF9kcml2ZXJfaG9vayhFKQpkaWZmIC0tZ2l0IGEvZG9jL2hvb2svaW5jbHVkZV9kaXJzIGIvZG9jL2hvb2svaW5jbHVkZV9kaXJzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjY1NTczNTkKLS0tIC9kZXYvbnVsbAorKysgYi9kb2MvaG9vay9pbmNsdWRlX2RpcnMKQEAgLTAsMCArMSwzOCBAQAorU1lOT1BTSVMKKyAgICAgICAgI2luY2x1ZGUgPHN5cy9kcml2ZXJfaG9va3MuaD4KKworICAgICAgICBzZXRfZHJpdmVyX2hvb2soSF9JTkNMVURFX0RJUlMsIHZhbHVlKQorCisgICAgICAgIDx2YWx1ZT4gYmVpbmc6CisKKyAgICAgICAgICBzdHJpbmcgKjxkaXJzPgorICAgICAgICAgIHN0cmluZyA8Y2xvc3VyZT4oc3RyaW5nIGluY2x1ZGVfbmFtZSwgc3RyaW5nIGN1cnJlbnRfZmlsZSkKKworREVTQ1JJUFRJT04KKyAgICAgICAgU2VtaS1tYW5kYXRvcnkgaG9vayBzcGVjaWZ5aW5nIHRoZSBkaXJlY3RvcmllcyB3aGVyZSA8Pi10eXBlCisgICAgICAgIGluY2x1ZGUgZmlsZXMgYXJlIHNlYXJjaGVkICh0aGlzIGluY2x1ZGVzICIiLWluY2x1ZGVzIG5vdAorICAgICAgICBmb3VuZCBhcyBzcGVjaWZpZWQpLiAgSG9vayBzZXR0aW5nIG1heSBiZSBhbnkgY2xvc3VyZSBvciBhCisgICAgICAgIHN0cmluZyBhcnJheS4gSWYgbm90IHNldCwgb25seSAiIi10eXBlIGluY2x1ZGVzIG1heSBiZSB1c2VkIGluIExQQworICAgICAgICBwcm9ncmFtcy4KKworICAgICAgICBUaGUgaG9vayBpcyBjYWxsZWQgb25seSBpZiBhIGNhbGwgdG8gbWFzdGVyOjppbmNsdWRlX2ZpbGUoKQorICAgICAgICBkb2VzIG5vdCByZXR1cm4gYSB1c2FibGUgZmlsZW5hbWUuCisKKyAgICAgICAgSWYgdGhlIGhvb2sgc2V0dGluZyBpcyBhIHN0cmluZyBhcnJheSwgaXQgaGFzIHRvIGNvbnRhaW4gdGhlCisgICAgICAgIHBhdGggbmFtZXMgb2YgdGhvc2UgZGlyZWN0b3JpZXMgd2hlcmUgPD4tdHlwZSBpbmNsdWRlcyBhcmUgdG8KKyAgICAgICAgYmUgc2VhcmNoZWQuIFRoZSBkaXJlY3RvcmllcyBhcmUgc2VhcmNoZWQgaW4gdGhlIG9yZGVyIHRoZXkKKyAgICAgICAgYXBwZWFyIGluIHRoZSBhcnJheS4gVGhlIGRpcmVjdG9yeSBuYW1lIGFuZCB0aGUgbmFtZSBvZiB0aGUKKyAgICAgICAgYWN0dWFsIGluY2x1ZGUgZmlsZSBhcmUgY29uY2F0ZW5hdGVkLCB0aGVyZWZvcmUgdGhlIGRpcmVjdG9yeQorICAgICAgICBuYW1lcyBoYXZlIHRvIGVuZCBpbiAnLycuIExlYWRpbmcgc2xhc2hlcyBtYXkgYmUgb21pdHRlZC4KKworICAgICAgICBJZiB0aGUgc2V0dGluZyBpcyBhIGNsb3N1cmUsIGl0IGlzIGNhbGxlZCB3aXRoIHRoZSBuYW1lIG9mIHRoZQorICAgICAgICBkZXNpcmVkIGluY2x1ZGUgZmlsZSBhcyBmaXJzdCwgYW5kIHRoZSBuYW1lIG9mIHRoZSBjb21waWxlZAorICAgICAgICBMUEMgZmlsZSBhcyBzZWNvbmQgYXJndW1lbnQuICBSZXN1bHQgaGFzIHRvIGJlIHRoZSBjb21wbGV0ZQorICAgICAgICBwYXRoIG5hbWUgb2YgdGhlIGluY2x1ZGUgZmlsZSB0byB1c2UuIExlYWRpbmcgc2xhc2hlcyBtYXkgYmUKKyAgICAgICAgb21pdHRlZC4gIElmIHRoZSBjbG9zdXJlIGlzIGEgbGFtYmRhIGNsb3N1cmUsIGl0IGlzIGJvdW5kIHRvCisgICAgICAgIHRoaXNfb2JqZWN0KCkgcHJpb3IgdG8gZXhlY3V0aW9uLgorCitISVNUT1JZCisKK1NFRSBBTFNPCisgICAgICAgIGhvb2tzKEMpLCBhdXRvX2luY2x1ZGUoSCksIGluY2x1ZGVfZmlsZShNKQpkaWZmIC0tZ2l0IGEvZG9jL2hvb2svbG9hZF91aWRzIGIvZG9jL2hvb2svbG9hZF91aWRzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjlkMWUxNjAKLS0tIC9kZXYvbnVsbAorKysgYi9kb2MvaG9vay9sb2FkX3VpZHMKQEAgLTAsMCArMSwzNSBAQAorU1lOT1BTSVMKKyAgICAgICAgI2luY2x1ZGUgPHN5cy9kcml2ZXJfaG9va3MuaD4KKworICAgICAgICBzZXRfZHJpdmVyX2hvb2soSF9MT0FEX1VJRFMsIHZhbHVlKQorCisgICAgICAgIDx2YWx1ZT4gYmVpbmc6CisKKyAgICAgICAgICBtaXhlZCA8Y2xvc3VyZT4gKHN0cmluZyBvYmplY3RuYW1lKQorCitERVNDUklQVElPTgorICAgICAgICBNYW5kYXRvcnkgaG9va3MgdG8gZGV0ZXJtaW5lIHRoZSB1aWQgYW5kIGV1aWQgb2YgbG9hZGVkIG9yCisgICAgICAgIGNsb25lZCBvYmplY3RzLiAgSG9vayBzZXR0aW5ncyBjYW4gYmUgYW55IGNsb3N1cmUuCisKKyAgICAgICAgV2hlbiBhbiBvYmplY3QgaXMgbmV3bHkgbG9hZGVkLCB0aGUgSF9MT0FEX1VJRFMgaG9vayBpcyBjYWxsZWQKKyAgICAgICAgd2l0aCB0aGUgb2JqZWN0IG5hbWUgYXMgYXJndW1lbnQuICBUaGUgbmV3IG9iamVjdCBhbHJlYWR5CisgICAgICAgIGV4aXN0cywgYnV0IGhhcyAwIHVpZHMuCisKKyAgICAgICAgRm9yIHRoZSByZXN1bHQsIHRoZSBmb2xsb3dpbmcgcG9zc2liaWxpdGllcyBleGlzdCAoPG51bT4gaXMKKyAgICAgICAgYSBub24temVybyBudW1iZXIsIDxuby1zdHJpbmc+IGlzIGFueXRoaW5nIGJ1dCBhIHN0cmluZyk6CisKKyAgICAgICAgICAgIjx1aWQ+IiAgICAgICAgICAgICAgICAgICAgLT4gdWlkID0gIjx1aWQ+IiwgZXVpZCA9ICI8dWlkPiIKKyAgICAgICAgICAgKHsgIjx1aWQ+IiwgIjxldWlkPiIgfSkgICAgLT4gdWlkID0gIjx1aWQ+IiwgZXVpZCA9ICI8ZXVpZD4iCisgICAgICAgICAgICh7ICI8dWlkPiIsIDxuby1zdHJpbmc+IH0pIC0+IHVpZCA9ICI8dWlkPiIsIGV1aWQgPSAwCisKKyAgICAgICAgSWYgc3RyaWN0LWV1aWRzIGlzIG5vdCBhY3RpdmUsIHRoZSBmb2xsb3dpbmcgcmVzdWx0cyBhcmUKKyAgICAgICAgcG9zc2libGUsIHRvbzoKKworICAgICAgICAgICA8bnVtPiAgICAgICAgICAgICAgICAgICAgICAtPiB1aWQgPSAwLCBldWlkID0gMAorICAgICAgICAgICAoeyA8bnVtPiwgIjxldWlkPiIgfSkgICAgICAtPiB1aWQgPSAwLCBldWlkID0gIjxldWlkPiIKKyAgICAgICAgICAgKHsgPG51bT4sIDxuby1zdHJpbmc+IH0pICAgLT4gdWlkID0gMCwgZXVpZCA9IDAKKworSElTVE9SWQorCitTRUUgQUxTTworICAgICAgICBob29rcyhDKSwgdWlkcyhDKSwgY2xvbmVfdWlkcyhIKQpkaWZmIC0tZ2l0IGEvZG9jL2hvb2svbW9kaWZ5X2NvbW1hbmQgYi9kb2MvaG9vay9tb2RpZnlfY29tbWFuZApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5mNDc4MzEyCi0tLSAvZGV2L251bGwKKysrIGIvZG9jL2hvb2svbW9kaWZ5X2NvbW1hbmQKQEAgLTAsMCArMSw2MSBAQAorU1lOT1BTSVMKKyAgICAgICAgI2luY2x1ZGUgPHN5cy9kcml2ZXJfaG9va3MuaD4KKworICAgICAgICBzZXRfZHJpdmVyX2hvb2soSF9NT0RJRllfQ09NTUFORCwgdmFsdWUpCisKKyAgICAgICAgPHZhbHVlPiBiZWluZzoKKworICAgICAgICAgIGludHxzdHJpbmcgPGNsb3N1cmU+KHN0cmluZyBjbWQsIG9iamVjdCBwbGF5ZXIpCisgICAgICAgICAgaW50fHN0cmluZyA8bmFtZT4oc3RyaW5nIGNtZCkKKyAgICAgICAgICA8bWFwcGluZz4KKworREVTQ1JJUFRJT04KKyAgICAgICAgT3B0aW9uYWwgaG9vayB0byBtb2RpZnkgY29tbWFuZHMgKGJvdGggZW50ZXJlZCBvciBnaXZlbiBieSBhCisgICAgICAgIGNhbGwgdG8gY29tbWFuZCgpKSBiZWZvcmUgdGhlIHBhcnNlciBzZWVzIHRoZW0gKHRoaXMgaW5jbHVkZXMKKyAgICAgICAgc3BlY2lhbCBjb21tYW5kcyBsaWtlICdzdGF0dXMnKS4KKworICAgICAgICBIb29rIHNldHRpbmcgY2FuIGJlIGFueSBjbG9zdXJlLCB0aGUgbmFtZSBvZiB0aGUgZnVuY3Rpb24gdG8KKyAgICAgICAgY2FsbCBpbiB0aGUgb2JqZWN0LCBvciBhIG1hcHBpbmcuCisKKyAgICAgICAgRm9yIGludGVyYWN0aXZlcyB0aGlzIGhvb2sgaXMgdXNlZCBvbmx5IGlmIHRoZSBpbnRlcmFjdGl2ZQorICAgICAgICBvYmplY3QgaGFzIG5vIGNvbW1hbmQgbW9kaWZpZXIgYWxyZWFkeSBzZXQgYnkgdGhlIGVmdW4KKyAgICAgICAgc2V0X21vZGlmeV9jb21tYW5kKCkuCisKKyAgICAgICAgSWYgdGhlIGhvb2sgaXMgYSBjbG9zdXJlLCBpdCBpcyBjYWxsZWQgd2l0aCB0aGUgZW50ZXJlZAorICAgICAgICBjb21tYW5kIGFzIGZpcnN0LCBhbmQgdGhlIGNvbW1hbmQgZ2l2aW5nIHBsYXllciBhcyBzZWNvbmQKKyAgICAgICAgYXJndW1lbnQuIExhbWJkYSBjbG9zdXJlcyBhcmUgYm91bmQgdG8gdGhlIGNvbW1hbmQgZ2l2aW5nIHBsYXllciwKKyAgICAgICAgdW5ib3VuZC1sYW1iZGEgY2xvc3VyZXMgcmVtYWluIHVuYm91bmQuCisKKyAgICAgICAgSWYgdGhlIGhvb2sgaXMgYSBzdHJpbmcsIGl0IGlzIHVzZWQgYXMgdGhlIG5hbWUgb2YgYW4gbGZ1bgorICAgICAgICBpbiB0aGUgY29tbWFuZCBnaXZpbmcgcGxheWVyLCB3aGljaCBpcyBjYWxsZWQgd2l0aCB0aGUgY29tbWFuZAorICAgICAgICBhcyBhcmd1bWVudC4KKworICAgICAgICBJZiB0aGUgaG9vayBpcyBhIG1hcHBpbmcsIGl0IGlzIHF1ZXJpZWQgd2l0aCB0aGUgZ2l2ZW4gY29tbWFuZAorICAgICAgICBhcyBpbmRleCwgYW5kIHRoZSBkYXRhIHJldHJpZXZlZCBpcyB1c2VkIGFzIG5ldyBjb21tYW5kCisgICAgICAgIChkZWZhdWx0cyB0byAwIGlmIG5vIGRhdGEgaXMgc3RvcmVkIGZvciBhIGdpdmVuIGNvbW1hbmQpLiBJZgorICAgICAgICBhbiBlbnRyeSBpcyBhIGNsb3N1cmUgaW5zdGVhZCBvZiBhIHN0cmluZywgaXQgaXMgY2FsbGVkIGFzCisKKyAgICAgICAgICBpbnR8c3RyaW5nIDxjbG9zdXJlPihzdHJpbmcgY21kLCBvYmplY3QgcGxheWVyKQorCisgICAgICAgIGFuZCB0aGUgcmVzdWx0IGZyb20gdGhlIGNhbGwgaXMgdXNlZCBhcyAndGhlJyBjb21tYW5kLgorCisgICAgICAgIFRoZSByZXN1bHQgaXMgdHJlYXRlZCBlcXVhbCBpbiBhbGwgdGhyZWUgY2FzZXM6CisgICAgICAgICAtIElmIHRoZSByZXN1bHQgaXMgYSBzdHJpbmcsIGl0IGlzIHRoZSBuZXcgY29tbWFuZCB0byBleGVjdXRlCisgICAgICAgICAgIGluc3RlYWQgb2YgdGhlIGdpdmVuIG9uZS4gTm90ZSB0aGF0IGl0IGlzIG5vdCBwb3NzaWJsZSB0bworICAgICAgICAgICBtYWtlIHNldmVyYWwgY29tbWFuZHMgZnJvbSBvbmUgdGhpcyB3YXkhCisgICAgICAgICAtIElmIHRoZSByZXN1bHQgaXMgYSBub24temVybyBudW1iZXIsIHRoZSBnaXZlbiBjb21tYW5kIGlzIHRvCisgICAgICAgICAgIGJlIGlnbm9yZWQuIEluIGNhc2Ugb2YgdGhlIGNsb3N1cmUvbGZ1biBzZXR0aW5nIHRoaXMgbWF5CisgICAgICAgICAgIG1lYW4gdGhhdCB0aGUgY2xvc3VyZS9sZnVuIGFscmVhZHkgZXhlY3V0ZWQgaXQuCisgICAgICAgICAtIElmIHRoZSByZXN1bHQgaXMgMCwgdGhlIG9yaWdpbmFsbHkgZ2l2ZW4gY29tbWFuZCBpcyB0byBiZQorICAgICAgICAgICB1c2VkLgorCisgICAgICAgIEl0IGlzIHBvc3NpYmxlIGZvciB0aGUgaG9vayB0byBjaGFuZ2UgdGhlIGNvbW1hbmQgZ2l2ZXIKKyAgICAgICAgKHRoaXNfcGxheWVyKCkpIGZvciB0aGUgZXhlY3V0aW9uIG9mIHRoZSBjb21tYW5kLiBUaGlzIG1lYW5zIHRoYXQKKyAgICAgICAgZXZlbiB0aG91Z2ggdGhlIGNvbW1hbmRzIGFyZSBleGVjdXRlIGZvciB0aGUgb3JpZ2luYWwgY29tbWFuZGdpdmVyLAorICAgICAgICB0aGlzX3BsYXllcigpIHdpbGwgcmV0dXJuIHRoZSBjaGFuZ2VkIGNvbW1hbmRnaXZlci4KKworSElTVE9SWQorCitTRUUgQUxTTworICAgICAgICBob29rcyhDKSwgY29tbWFuZChIKSwgbW9kaWZ5X2NvbW1hbmRfZm5hbWUoSCksIG5vdGlmeV9mYWlsKEgpLAorICAgICAgICBzZW5kX25vdGlmeV9mYWlsKEgpCmRpZmYgLS1naXQgYS9kb2MvaG9vay9tb2RpZnlfY29tbWFuZF9mbmFtZSBiL2RvYy9ob29rL21vZGlmeV9jb21tYW5kX2ZuYW1lCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjA5NWVmODAKLS0tIC9kZXYvbnVsbAorKysgYi9kb2MvaG9vay9tb2RpZnlfY29tbWFuZF9mbmFtZQpAQCAtMCwwICsxLDQ0IEBACitTWU5PUFNJUworICAgICAgICAjaW5jbHVkZSA8c3lzL2RyaXZlcl9ob29rcy5oPgorCisgICAgICAgIHNldF9kcml2ZXJfaG9vayhIX01PRElGWV9DT01NQU5EX0ZOQU1FLCB2YWx1ZSkKKworICAgICAgICA8dmFsdWU+IGJlaW5nOgorCisgICAgICAgICAgaW50fHN0cmluZyA8bmFtZT4oc3RyaW5nIGNtZCkKKworREVTQ1JJUFRJT04KKyAgICAgICAgTWFuZGF0b3J5IGhvb2sgc3BlY2lmeWluZyB0aGUgbmFtZSBvZiB0aGUgJ21vZGlmeV9jb21tYW5kJworICAgICAgICBsZnVuIHRvIGNhbGwgZm9yIG5ld2x5IGVudGVyZWQgY29tbWFuZHMgYXMgcmVzdWx0IG9mIGEKKyAgICAgICAgc2V0X21vZGlmeV9jb21tYW5kKCkuCisKKyAgICAgICAgSG9vayBzZXR0aW5nIG11c3QgYmUgYSBzdHJpbmcuCisKKyAgICAgICAgSWYgc2V0X21vZGlmeV9jb21tYW5kKCkgaXMgdXNlZCBmb3IgYW4gaW50ZXJhY3RpdmUgdXNlciwgYWxsCisgICAgICAgIG5ld2x5IGVudGVyZWQgY29tbWFuZHMgYXJlIGZpcnN0IHBhc3NlZCB0byB0aGUgZnVuY3Rpb24gbmFtZWQKKyAgICAgICAgYnkgdGhpcyBob29rLgorCisgICAgICAgIFRoZSBmdW5jdGlvbiBpcyBjYWxsZWQgd2l0aCB0aGUgY29tbWFuZCBhcyBhcmd1bWVudC4KKworICAgICAgICBJZiB0aGUgcmVzdWx0IGlzIGEgc3RyaW5nLCBpdCBpcyB0aGUgbmV3IGNvbW1hbmQgdG8gZXhlY3V0ZQorICAgICAgICBpbnN0ZWFkIG9mIHRoZSBnaXZlbiBvbmUuIE5vdGUgdGhhdCBpdCBpcyBub3QgcG9zc2libGUgdG8gbWFrZQorICAgICAgICBzZXZlcmFsIGNvbW1hbmRzIGZyb20gb25lIHRoaXMgd2F5IQorCisgICAgICAgIElmIHRoZSByZXN1bHQgaXMgYSBub24temVybyBudW1iZXIsIHRoZSBnaXZlbiBjb21tYW5kIGlzIHRvIGJlCisgICAgICAgIGlnbm9yZWQuIEluIGNhc2Ugb2YgdGhlIGNsb3N1cmUvbGZ1biBzZXR0aW5nIHRoaXMgbWF5IG1lYW4KKyAgICAgICAgdGhhdCB0aGUgY2xvc3VyZS9sZnVuIGFscmVhZHkgZXhlY3V0ZWQgaXQuCisKKyAgICAgICAgSWYgdGhlIHJlc3VsdCBpcyAwLCB0aGUgb3JpZ2luYWxseSBnaXZlbiBjb21tYW5kIGlzIHRvIGJlCisgICAgICAgIHVzZWQuCisKKyAgICAgICAgSXQgaXMgcG9zc2libGUgZm9yIHRoZSBob29rIHRvIGNoYW5nZSB0aGUgY29tbWFuZCBnaXZlcgorICAgICAgICAodGhpc19wbGF5ZXIoKSkgZm9yIHRoZSBleGVjdXRpb24gb2YgdGhlIGNvbW1hbmQuIFRoaXMgbWVhbnMKKyAgICAgICAgdGhhdCBldmVuIHRob3VnaCB0aGUgY29tbWFuZHMgYXJlIGV4ZWN1dGUgZm9yIHRoZSBvcmlnaW5hbAorICAgICAgICBjb21tYW5kZ2l2ZXIsIHRoaXNfcGxheWVyKCkgd2lsbCByZXR1cm4gdGhlIGNoYW5nZWQKKyAgICAgICAgY29tbWFuZGdpdmVyLgorCitISVNUT1JZCisKK1NFRSBBTFNPCisgICAgICAgIGhvb2tzKEMpLCBjb21tYW5kKEgpLCBtb2RpZnlfY29tbWFuZChIKSwgbm90aWZ5X2ZhaWwoSCksCisgICAgICAgIHNlbmRfbm90aWZ5X2ZhaWwoSCkKZGlmZiAtLWdpdCBhL2RvYy9ob29rL21vdmVfb2JqZWN0IGIvZG9jL2hvb2svbW92ZV9vYmplY3QKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNWIyNDQ1ZAotLS0gL2Rldi9udWxsCisrKyBiL2RvYy9ob29rL21vdmVfb2JqZWN0CkBAIC0wLDAgKzEsMjcgQEAKK1NZTk9QU0lTCisgICAgICAgICNpbmNsdWRlIDxzeXMvZHJpdmVyX2hvb2tzLmg+CisKKyAgICAgICAgc2V0X2RyaXZlcl9ob29rKEhfTU9WRV9PQkpFQ1QwLCB2YWx1ZSkKKyAgICAgICAgc2V0X2RyaXZlcl9ob29rKEhfTU9WRV9PQkpFQ1QxLCB2YWx1ZSkKKworICAgICAgICA8dmFsdWU+IGJlaW5nOgorCisgICAgICAgICAgdm9pZCA8Y2xvc3VyZT4ob2JqZWN0IGl0ZW0sIG9iamVjdCBkZXN0KQorCitERVNDUklQVElPTgorICAgICAgICBNYW5kYXRvcnkgaG9va3MgdG8gaW1wbGVtZW50IHRoZSBlZnVuIHZvaWQgbW92ZV9vYmplY3QoKS4KKyAgICAgICAgSG9vayBzZXR0aW5nIG11c3QgYmUgYW4gdW5ib3VuZCBsYW1iZGEgY2xvc3VyZS4KKworICAgICAgICBVcG9uIGNhbGwsIHRoZSBob29rIGhhcyB0byBwZXJmb3JtIHRoZSBtb3ZlIGl0c2VsZiAoYnkgdXNpbmcKKyAgICAgICAgc2V0X2Vudmlyb25tZW50KCkpIGFuZCBhbGwgZGVwZW5kaW5nIGFjdGlvbnMgKGxpa2UgdGhlIGNhbGxzIHRvCisgICAgICAgIGluaXQoKSB0byBhZGQgYWN0aW9ucykuCisKKyAgICAgICAgVGhlIGRpZmZlcmVuY2UgbGllcyBpbiB0aGUgYmluZGluZyBvZiB0aGUgc2V0IGhvb2sgcHJpb3IgdG8KKyAgICAgICAgdGhlIGNhbGw6IHRoZSBIX01PVkVfT0JKRUNUMCBjbG9zdXJlIGlzIGJvdW5kIHRvIHRoZSBjdXJyZW50CisgICAgICAgIG9iamVjdCwgdGhlIEhfTU9WRV9PQkpFQ1QxIHRvICdpdGVtJy4KKyAgICAgICAgSWYgYm90aCBob29rcyBhcmUgc2V0LCBIX01PVkVfT0JKRUNUMCBpcyBpZ25vcmVkLgorCitISVNUT1JZCisKK1NFRSBBTFNPCisgICAgICAgIG1vdmVfb2JqZWN0KEUpLCBzZXRfZW52aXJvbm1lbnQoRSksIGhvb2tzKEMpCmRpZmYgLS1naXQgYS9kb2MvaG9vay9tc2dfZGlzY2FyZGVkIGIvZG9jL2hvb2svbXNnX2Rpc2NhcmRlZApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41MzYwZGZlCi0tLSAvZGV2L251bGwKKysrIGIvZG9jL2hvb2svbXNnX2Rpc2NhcmRlZApAQCAtMCwwICsxLDI4IEBACitTWU5PUFNJUworICAgICAgICAjaW5jbHVkZSA8c3lzL2RyaXZlcl9ob29rcy5oPgorCisgICAgICAgIHNldF9kcml2ZXJfaG9vayhIX01TR19ESVNDQVJERUQsIHZhbHVlKQorCisgICAgICAgIDx2YWx1ZT4gYmVpbmc6CisKKyAgICAgICAgICBzdHJpbmcgPG1zZz4KKyAgICAgICAgICBzdHJpbmcgPGNsb3N1cmU+KG9iamVjdCB1c2VyKQorCitERVNDUklQVElPTgorICAgICAgICBPcHRpb25hbCBob29rIHRvIHNwZWNpZnkgYSBtZXNzYWdlIG9yIHRha2Ugb3RoZXIgbWVhc3VyZXMKKyAgICAgICAgd2hlbiBhIG1lc3NhZ2UgaGFkIHRvIGJlIGRpc2NhcmRlZCwgYmVjYXVzZSB0aGV5IGNvdWxkIG5vdAorICAgICAgICBiZSBkZWxpdmVyZWQgdG8gdGhlIHBsYXllciA8dXNlcj4uIElmIHRoZSBob29rIGlzIG5vdCBzZXQsCisgICAgICAgIGEgc3RhbmRhcmQgbWVzc2FnZSBpcyB1c2VkLgorCisgICAgICAgIElmIHRoZSBob29rIGlzIGEgc3RyaW5nLCB0aGlzIHRleHQgd2lsbCBiZSBzZW50IGFzIHNvb24gYXMKKyAgICAgICAgcG9zc2libGUgdG8gdGhlIHBsYXllciBpbmZvcm1pbmcgYWJvdXQgdGhlIGxvc3QgdHJhbnNtaXNzaW9uLgorCisgICAgICAgIElmIHRoZSBob29rIGlzIGEgY2xvc3VyZSwgaXQgaXMgdGhlIGZ1bmN0aW9uIHRvIGJlIGNhbGxlZAorICAgICAgICBhbmQgdGhlIHJlc3VsdCBpcyB1c2VkIGFzIHRoZSBtZXNzYWdlIHRvIGJlIHNlbnQuIExhbWJkYQorICAgICAgICBjbG9zdXJlcyBhcmUgYm91bmQgdG8gdGhlIGludGVyYWN0aXZlIDx1c2VyPiBmaXJzdC4KKworSElTVE9SWQorICAgICAgICBJbnRyb2R1Y2VkIGluIExETXVkIDMuMy43MTkKKworU0VFIEFMU08KKyAgICAgICAgaG9va3MoQyksIGNvbmZpZ3VyZV9pbnRlcmFjdGl2ZShFKQpkaWZmIC0tZ2l0IGEvZG9jL2hvb2svbm9fZWNobyBiL2RvYy9ob29rL25vX2VjaG8KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYjU5MjUyOQotLS0gL2Rldi9udWxsCisrKyBiL2RvYy9ob29rL25vX2VjaG8KQEAgLTAsMCArMSw0MSBAQAorU1lOT1BTSVMKKyAgICAgICAgI2luY2x1ZGUgPHN5cy9kcml2ZXJfaG9va3MuaD4KKworICAgICAgICBzZXRfZHJpdmVyX2hvb2soSF9URUxORVRfTkVHLCB2YWx1ZSkKKworICAgICAgICA8dmFsdWU+IGJlaW5nOgorCisgICAgICAgICAgdm9pZCA8bmFtZT4oaW50IGZsYWcsIG9iamVjdCB1c2VyLCBpbnQgbm9fdGVsbmV0KQorICAgICAgICAgIHZvaWQgPGNsb3N1cmU+KGludCBmbGFnLCBvYmplY3QgdXNlciwgaW50IG5vX3RlbG5ldCkKKworREVTQ1JJUFRJT04KKyAgICAgICAgT3B0aW9uYWwgaG9vayB0byBzcGVjaWZpeSBob3cgdG8gcGVyZm9ybSB0aGUgdGVsbmV0IGFjdGlvbnMgdG8KKyAgICAgICAgc3dpdGNoIHRoZSBlY2hvIG1vZGUgKHVzZWQgZm9yIGUuZy4gcGFzc3dvcmQgaW5wdXRfdG8oKXMpLgorICAgICAgICBIb29rIHNldHRpbmcgbWF5IGJlIGFueSBjbG9zdXJlIG9yIGEgc3RyaW5nLiAgSWYgbm90IHNldCwgYQorICAgICAgICBkZWZhdWx0IGhhbmRsaW5nIGlzIHBlcmZvcm1lZC4KKworICAgICAgICBJZiB0aGUgc2V0dGluZyBpcyBhIHN0cmluZywgaXQgdXNlZCBhcyBuYW1lIG9mIGFuIGxmdW4gdG8gY2FsbAorICAgICAgICBpbiB0aGUgaW50ZXJhY3RpdmUgPHVzZXI+LCB3aGVyZSA8ZmxhZz4gaXMgdGhlIGVjaG8tZmxhZworICAgICAgICBwYXNzZWQgdG8gdGhlIGlucHV0X3RvKCkgc3RhdGVtZW50LgorCisgICAgICAgIElmIHRoZSBzZXR0aW5nIGlzIGEgY2xvc3VyZSwgaXQgaXMgY2FsbGVkIHdpdGggdGhlIHNhbWUKKyAgICAgICAgYXJndW1lbnRzLCBhbmQgdW5ib3VuZCBsYW1iZGEtY2xvc3VyZXMgYmVpbmcgYm91bmQgdG8KKyAgICAgICAgdGhpc19wbGF5ZXIoKSBwcmlvciB0byBleGVjdXRpb24uCisKKyAgICAgICAgPGxvY2FsPiBpcyBhIGJvb2xlYW4gZmxhZzogaXQgaXMgVFJVRSB3aGVuIGlucHV0X3RvKCkgd2FzCisgICAgICAgIGNhbGxlZCB3aXRoIHRoZSBJTlBVVF9OT19URUxORVQgZmxhZy4KKworICAgICAgICBXaGVuIHNldCwgdGhlIGhvb2sgaXMgY2FsbGVkIHdoZW5ldmVyIHRoZSBkcml2ZXIgbmVlZHMgdG8KKyAgICAgICAgY2hhbmdlIHRoZSBlY2hvIG1vZGUsIHRodXMgeW91IGNhbiBuZWdvdGlhdGUgYWJvdXQgdGhpbmdzIHRoYXQKKyAgICAgICAgYXJlIGNvdXBsZWQgd2l0aCBpdCwgbGlrZSBMSU5FTU9ERSBvciBjaGFyYWN0ZXItYXQtYS10aW1lLgorCisgICAgICAgIElNUE9SVEFOVDogSWYgdGhpcyBob29rIGlzIHVzZWQsIHRoZSBjb250cm9sIG9mIGFsbCB0ZWxuZXQKKyAgICAgICAgbmVnb3RpYXRpb24gaXMgdHJhbnNmZXJyZWQgdG8gdGhlIG11ZGxpYjogYWxsIGluY29taW5nIG5lZ290aWF0aW9ucworICAgICAgICBhcmUgcGFzc2VkIHRvIEhfVEVMTkVUX05FRywgYW5kIHRoZSBzZW5kaW5nIG9mIG5vLWVjaG8gbmVnb3RpYXRpb25zCisgICAgICAgIGlzIGhhbmRsZWQgYnkgdGhpcyBob29rLgorCitISVNUT1JZCisgICAgICAgIExETXVkIDMuMi4xMS9MRE11ZCAzLjMuNTkzIGFkZGVkIHRoZSA8bm9fdGVsbmV0PiBhcmd1bWVudC4KKworU0VFIEFMU08KKyAgICAgICAgaG9va3MoQyksIHRlbG5ldChDKSwgdGVsbmV0X25lZyhIKQpkaWZmIC0tZ2l0IGEvZG9jL2hvb2svbm9faXBjX3Nsb3QgYi9kb2MvaG9vay9ub19pcGNfc2xvdApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi40ZDFiMGZiCi0tLSAvZGV2L251bGwKKysrIGIvZG9jL2hvb2svbm9faXBjX3Nsb3QKQEAgLTAsMCArMSwyMiBAQAorU1lOT1BTSVMKKyAgICAgICAgI2luY2x1ZGUgPHN5cy9kcml2ZXJfaG9va3MuaD4KKworICAgICAgICBzZXRfZHJpdmVyX2hvb2soSF9OT19JUENfU0xPVCwgdmFsdWUpCisKKyAgICAgICAgPHZhbHVlPiBiZWluZzoKKworICAgICAgICAgIDAKKyAgICAgICAgICBzdHJpbmcgPG1zZz4KKworREVTQ1JJUFRJT04KKyAgICAgICAgT3B0aW9uYWwgaG9vayBzcGVjaWZ5aW5nIHRoZSBtZXNzYWdlIGdpdmVuIHRvIGxvZ2lucworICAgICAgICByZWplY3RlZCBkdWUgdG8gc3BhY2UgbGltaXRhdGlvbnMgKE1BWF9QTEFZRVIpLgorICAgICAgICBIb29rIHNldHRpbmcgaGFzIHRvIGJlIHN0cmluZy4KKworICAgICAgICBJZiBzZXQgdG8gMCwgdGhlIGRlZmF1bHQgbWVzc2FnZSAiTHBtdWQgaXMgZnVsbC4gQ29tZSBiYWNrCisgICAgICAgIGxhdGVyLiIgaXMgaXNzdWVkLgorCitISVNUT1JZCisKK1NFRSBBTFNPCisgICAgICAgIGhvb2tzKEMpCmRpZmYgLS1naXQgYS9kb2MvaG9vay9ub3RpZnlfZmFpbCBiL2RvYy9ob29rL25vdGlmeV9mYWlsCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjhhNGJhY2YKLS0tIC9kZXYvbnVsbAorKysgYi9kb2MvaG9vay9ub3RpZnlfZmFpbApAQCAtMCwwICsxLDMzIEBACitTWU5PUFNJUworICAgICAgICAjaW5jbHVkZSA8c3lzL2RyaXZlcl9ob29rcy5oPgorCisgICAgICAgIHNldF9kcml2ZXJfaG9vayhIX05PVElGWV9GQUlMLCB2YWx1ZSkKKworICAgICAgICA8dmFsdWU+IGJlaW5nOgorCisgICAgICAgICAgc3RyaW5nIDxtc2c+CisgICAgICAgICAgc3RyaW5nIDxjbG9zdXJlPihzdHJpbmcgZW50ZXJlZF9jb21tYW5kLCBvYmplY3QgY21kX2dpdmVyKQorCitERVNDUklQVElPTgorICAgICAgICBNYW5kYXRvcnkgaG9vayB0byBpc3N1ZSB0aGUgZGVmYXVsdCBtZXNzYWdlIGlmIGFuIGVudGVyZWQKKyAgICAgICAgY29tbWFuZCBjb3VsZG4ndCBiZSBwYXJzZWQgYW5kIG5vIG5vdGlmeV9mYWlsKCkgY29tbWFuZCBpcyBpbgorICAgICAgICBlZmZlY3QuICBIb29rIHNldHRpbmcgY2FuIGJlIGEgYW55IGNsb3N1cmUsIG9yIGEgc3RyaW5nLgorCisgICAgICAgIElmIHNldCB0byBhIHN0cmluZywgaXQgaXMgdGhlIG1lc3NhZ2UgcmV0dXJuZWQgdG8gdGhlCisgICAgICAgIHBsYXllci4KKworICAgICAgICBJZiBzZXQgdG8gYSBjbG9zdXJlLCBpdCBpcyBjYWxsZWQgd2l0aCB0aGUgY29tbWFuZCBhbmQgdGhlCisgICAgICAgIGNvbW1hbmQgZ2l2ZXIgYXMgYXJndW1lbnRzLCBhbmQgdGhlIHJlc3VsdCBpcyB1c2VkIGFzIGZhaWx1cmUKKyAgICAgICAgbWVzc2FnZS4gTGFtYmRhIGNsb3N1cmVzIGFyZSBib3VuZCB0byB0aGlzX3BsYXllcigpIHByaW9yIHRvCisgICAgICAgIGV4ZWN1dGlvbi4KKworICAgICAgICA8Y21kX2dpdmVyPiBpcyB0aGUgb2JqZWN0IHdoaWNoIHJlY2VpdmVkIHRoZSBjb21tYW5kIGluIHRoZQorICAgICAgICBmaXJzdCBwbGFjZS4gSXQgaXMgdXN1YWxseSBpZGVudGljYWwgd2l0aCB0aGlzX3BsYXllcigpLAorICAgICAgICB1bmxlc3MgdGhlIEhfTU9ESUZZX0NPTU1BTkQgaG9vayBjaGFuZ2VkIGl0LgorCitISVNUT1JZCisgICAgICAgIExETXVkIDMuMi43IGFkZGVkIHRoZSBuZXcgJ2NvbW1hbmRfZ2l2ZXInIGFyZ3VtZW50LgorCitTRUUgQUxTTworICAgICAgICBob29rcyhDKSwgY29tbWFuZChIKSwgbW9kaWZ5X2NvbW1hbmQoSCksIG1vZGlmeV9jb21tYW5kX2ZuYW1lKEgpLAorICAgICAgICBzZW5kX25vdGlmeV9mYWlsKEgpCmRpZmYgLS1naXQgYS9kb2MvaG9vay9wcmludF9wcm9tcHQgYi9kb2MvaG9vay9wcmludF9wcm9tcHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZjg2NGRiNwotLS0gL2Rldi9udWxsCisrKyBiL2RvYy9ob29rL3ByaW50X3Byb21wdApAQCAtMCwwICsxLDI4IEBACitTWU5PUFNJUworICAgICAgICAjaW5jbHVkZSA8c3lzL2RyaXZlcl9ob29rcy5oPgorCisgICAgICAgIHNldF9kcml2ZXJfaG9vayhIX1BSSU5UX1BST01QVCwgdmFsdWUpCisKKyAgICAgICAgPHZhbHVlPiBiZWluZzoKKworICAgICAgICAgIHZvaWQgPG5hbWU+KHN0cmluZyBwcm9tcHQpLgorICAgICAgICAgIHZvaWQgPGNsb3N1cmU+KHN0cmluZyBwcm9tcHQpCisKK0RFU0NSSVBUSU9OCisgICAgICAgIE9wdGlvbmFsIGhvb2sgdG8gcHJpbnQgdGhlIGN1cnJlbnQgY29tbWFuZCBwcm9tcHQuIElmIHRoaXMKKyAgICAgICAgaG9vayBpcyBub3Qgc2V0LCB0aGUgZHJpdmVyIHdpbGwganVzdCBwcmludCB0aGUgcHJvbXB0IHRvIHRoZQorICAgICAgICB1c2VyLgorCisgICAgICAgIFRoZSBob29rIGlzIGNhbGxlZCB3aXRoIHRoZSBwcm9tcHQgc3RyaW5nIGFzIHNpbmdsZSBhcmd1bWVudAorICAgICAgICBhbmQgaGFzIHRvIHByaW50IHRoZSBwcm9tcHQsIGUuZy4gdXNpbmcgd3JpdGUoKSBvcgorICAgICAgICBiaW5hcnlfbWVzc2FnZSgpLgorCisgICAgICAgIElmIHRoZSBob29rIGlzIGEgc3RyaW5nLCBpdCBpcyB0aGUgbmFtZSBvZiBhbiBsZnVuIGluIHRoZQorICAgICAgICBjb21tYW5kIGdpdmVyLiBJZiB0aGUgaG9vayBpcyBhIGNsb3N1cmUsIGl0IGlzIGNhbGxlZAorICAgICAgICB3aXRoIHRoZSBjb21tYW5kIGdpdmVyIGFzIHByZXZpb3VzIG9iamVjdC4KKworSElTVE9SWQorICAgICAgICBJbnRyb2R1Y2VkIGluIExETXVkIDMuMy4xNjMuCisKK1NFRSBBTFNPCisgICAgICAgIGhvb2tzKEMpLCBkZWZhdWx0X3Byb21wdChIKQpkaWZmIC0tZ2l0IGEvZG9jL2hvb2svcmVnZXhwX3BhY2thZ2UgYi9kb2MvaG9vay9yZWdleHBfcGFja2FnZQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5hZTUyZTNmCi0tLSAvZGV2L251bGwKKysrIGIvZG9jL2hvb2svcmVnZXhwX3BhY2thZ2UKQEAgLTAsMCArMSwyMyBAQAorU1lOT1BTSVMKKyAgICAgICAgI2luY2x1ZGUgPHN5cy9kcml2ZXJfaG9va3MuaD4KKyAgICAgICAgI2luY2x1ZGUgPHN5cy9yZWdleHAuaD4KKworICAgICAgICBzZXRfZHJpdmVyX2hvb2soSF9SRUdFWFBfUEFDS0FHRSwgdmFsdWUpCisKKyAgICAgICAgPHZhbHVlPiBiZWluZyBhbiBpbnRlZ2VyOgorICAgICAgICAgIDAKKyAgICAgICAgICBSRV9QQ1JFCisgICAgICAgICAgUkVfVFJBRElUSU9OQUwKKworREVTQ1JJUFRJT04KKyAgICAgICAgT3B0aW9uYWwgaG9vayB0byBzZWxlY3QgdGhlIGRlZmF1bHQgcmVnZXhwIHBhY2thZ2UgdG8gdXNlCisgICAgICAgIGZvciByZWd1bGFyIGV4cHJlc3Npb24gZnVuY3Rpb25zLgorCisgICAgICAgIElmIHNldCB0byAwLCB0aGUgZGVmYXVsdCBwYWNrYWdlIGRldGVybWluZWQgYnkgdGhlIGRyaXZlcidzCisgICAgICAgIGNvbmZpZ3VyYXRpb24vY29tbWFuZGxpbmUgb3B0aW9ucyBpcyB1c2VkLgorCitISVNUT1JZCisgICAgICAgIEludHJvZHVjZWQgaW4gTERNdWQgMy4zLjU5NS4KKworU0VFIEFMU08KKyAgICAgICAgaG9va3MoQyksIGRlZmF1bHRfcHJvbXB0KEgpLCBpbnZvY2F0aW9uKEQpLCByZWdleHAoQykKZGlmZiAtLWdpdCBhL2RvYy9ob29rL3Jlc2V0IGIvZG9jL2hvb2svcmVzZXQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMjNmMWRlYQotLS0gL2Rldi9udWxsCisrKyBiL2RvYy9ob29rL3Jlc2V0CkBAIC0wLDAgKzEsMzggQEAKK1NZTk9QU0lTCisgICAgICAgICNpbmNsdWRlIDxzeXMvZHJpdmVyX2hvb2tzLmg+CisKKyAgICAgICAgc2V0X2RyaXZlcl9ob29rKEhfUkVTRVQsIHZhbHVlKQorCisgICAgICAgIDx2YWx1ZT4gYmVpbmc6CisKKyAgICAgICAgICB2b2lkfGludCA8Y2xvc3VyZT4gKCB2b2lkICkKKyAgICAgICAgICB2b2lkIDxuYW1lPigxKQorCitERVNDUklQVElPTgorICAgICAgICBPcHRpb25hbCBob29rIHRvIHJlc2V0IGFuIG9iamVjdC4KKyAgICAgICAgSG9vayBzZXR0aW5nIGNhbiBiZSB1bmJvdW5kIGxhbWJkYSBjbG9zdXJlcywgb3IgdGhlIG5hbWUgb2YKKyAgICAgICAgdGhlIGZ1bmN0aW9uIChzdGF0aWMgb3IgcHVibGljKSB0byBjYWxsIGluIHRoZSBvYmplY3QuCisKKyAgICAgICAgSWYgdGhlIGhvb2sgaXMgYSBjbG9zdXJlLCBpdCBpcyBib3VuZCB0byB0aGUgb2JqZWN0IHRvIGJlCisgICAgICAgIHJlc2V0IGFuZCBjYWxsZWQgd2l0aCBubyBhcmd1bWVudC4KKworICAgICAgICBJZiB0aGUgcmVzdWx0IG9mIHRoaXMgY2FsbCBpcyBhIHBvc2l0aXZlIG51bWJlciwgaXQgaXMgdXNlZCBhcworICAgICAgICB0aGUgaW50ZXJ2YWwgdG8gd2FpdCBiZWZvcmUgdGhlIG5leHQgcmVzZXQoKS4gIElmIHRoZSByZXN1bHQKKyAgICAgICAgaXMgMCwgdGhlIGRlZmF1bHQgaW50ZXJ2YWwgY29tcHV0ZWQgZnJvbSBUSU1FX1RPX1JFU0VUIGlzCisgICAgICAgIHVzZWQuICBJZiB0aGUgcmVzdWx0IGlzIGEgbmVnYXRpdmUgbnVtYmVyLCB0aGUgb2JqZWN0IHdpbGwgbm90CisgICAgICAgIGJlIHJlc2V0IGFnYWluLCB1bmxlc3MgZGlyZWN0ZWQgb3RoZXJ3aXNlIGJ5IHNldF9uZXh0X3Jlc2V0KCkuCisKKyAgICAgICAgSWYgdGhlIGhvb2sgaXMgZGVmaW5lZCBhcyB0aGUgbmFtZSBvZiBhbiBsZnVuIGluIHRoZSBvYmplY3QsCisgICAgICAgIGl0IGlzIGNhbGxlZCBpbiB0aGUgb2JqZWN0IHdpdGggMSBhcyBhcmd1bWVudCwgYW5kIGFueSByZXN1bHQKKyAgICAgICAgaXMgaWdub3JlZC4gIEluIHRoaXMgY2FsbCB0aGUgcHJldmlvdXNfb2JqZWN0KCkgaXMgdGhlIG9iamVjdAorICAgICAgICBpbml0aWF0aW5nIHRoZSByZXNldC4gIElmIHRoZSBmdW5jdGlvbiBkb2VzIG5vdCBleGlzdCwgdGhlCisgICAgICAgIG9iamVjdCB3b24ndCBiZSByZXNldCBhZ2Fpbi4KKworICAgICAgICBOb3RlIHRoYXQgYW4gb2JqZWN0IGlzIG9ubHkgcmVzZXQgYnkgY2FsbCB0byB0aGlzIGhvb2sgaWYgaXQKKyAgICAgICAgaGFzIGJlZW4gdXNlZCBzaW5jZSB0aGUgbGFzdCByZXNldC4KKworSElTVE9SWQorICAgICAgICBMRE11ZCAzLjIuMTAgYWxsb3dlZCBzdGF0aWMgZnVuY3Rpb25zIHRvIGJlIGdpdmVuIGJ5IG5hbWUuCisKK1NFRSBBTFNPCisgICAgICAgIGhvb2tzKEMpCmRpZmYgLS1naXQgYS9kb2MvaG9vay9zZW5kX25vdGlmeV9mYWlsIGIvZG9jL2hvb2svc2VuZF9ub3RpZnlfZmFpbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi43ZjYxYmI0Ci0tLSAvZGV2L251bGwKKysrIGIvZG9jL2hvb2svc2VuZF9ub3RpZnlfZmFpbApAQCAtMCwwICsxLDM0IEBACitTWU5PUFNJUworICAgICAgICAjaW5jbHVkZSA8c3lzL2RyaXZlcl9ob29rcy5oPgorCisgICAgICAgIHNldF9kcml2ZXJfaG9vayhIX1NFTkRfTk9USUZZX0ZBSUwsIHZhbHVlKQorCisgICAgICAgIDx2YWx1ZT4gYmVpbmc6CisKKyAgICAgICAgICB2b2lkIDxuYW1lPihzdHJpbmcgbXNnLCBvYmplY3QgbXNnb2JqLCBvYmplY3Qgb3JpZ19jbWRfZ2l2ZXIpCisgICAgICAgICAgdm9pZCA8Y2xvc3VyZT4oc3RyaW5nIG1zZywgb2JqZWN0IG1zZ29iaiwgb2JqZWN0IG9yaWdfY21kX2dpdmVyKQorCitERVNDUklQVElPTgorICAgICAgICBPcHRpb25hbCBob29rIHRvIHNlbmQgdGhlIG5vdGlmeSBmYWlsIG1lc3NhZ2UsIHJlZ2FyZGxlc3MKKyAgICAgICAgb2YgaG93IGl0IHdhcyBkZXRlcm1pbmVkLCB0byB0aGUgcGxheWVyLiBJZiB0aGUgaG9vayBpcyBub3QKKyAgICAgICAgc2V0LCB0aGUgbWVzc2FnZSBpcyBkZWxpdmVyZWQgdXNpbmcgdGVsbF9vYmplY3QoKSBpbnRlcm5hbGx5LgorICAgICAgICBIb29rIHNldHRpbmcgY2FuIGJlIGEgc3RyaW5nIG9yIGEgY2xvc3VyZS4KKworICAgICAgICBJZiB0aGUgaG9vayBpcyBhIHN0cmluZywgaXQgaXMgdGhlIG5hbWUgb2YgYSAocG9zc2libHkgc3RhdGljKQorICAgICAgICBmdW5jdGlvbiB0byBjYWxsIGluIHRoZSBjdXJyZW50IGNvbW1hbmQgZ2l2ZXIuIElmIHRoZSBob29rCisgICAgICAgIGlzIGEgY2xvc3VyZSwgaXQgaXMgdGhlIGZ1bmN0aW9uIHRvIGJlIGNhbGxlZC4gTGFtYmRhIGNsb3N1cmVzCisgICAgICAgIGFyZSBib3VuZCB0byB0aGUgY3VycmVudCBjb21tYW5kIGdpdmVyIGZpcnN0LgorCisgICAgICAgIFRoZSBhcmd1bWVudHMgdG8gdGhlIGNhbGwgYXJlOgorICAgICAgICAgLSA8bXNnPiBpcyB0aGUgbm90aWZ5IGZhaWwgbWVzc2FnZSB0byBiZSBkZWxpdmVyZWQuCisgICAgICAgICAtIDxtc2dvYmo+IGlzIHRoZSBvYmplY3Qgd2hpY2ggc2V0IHRoZSBtZXNzYWdlLiBJdCBpcyAwIGZvcgorICAgICAgICAgICB0aGUgZGVmYXVsdCBtZXNzYWdlLgorICAgICAgICAgLSA8b3JpZ19jbWRfZ2l2ZXI+IGlzIHRoZSBvYmplY3QgZm9yIHdoaWNoIHRoZSBvcmlnaW5hbAorICAgICAgICAgICBjb21tYW5kIHdhcyBmaXJzdCByZWNlaXZlZC4gSXQgaXMgdXN1YWxseSBpZGVudGljYWwgd2l0aAorICAgICAgICAgICB0aGUgY3VycmVudCBjb21tYW5kIGdpdmVyIHRoaXNfcGxheWVyKCkuCisKK0hJU1RPUlkKKworU0VFIEFMU08KKyAgICAgICAgaG9va3MoQyksIGNvbW1hbmQoSCksIG1vZGlmeV9jb21tYW5kKEgpLCBtb2RpZnlfY29tbWFuZF9mbmFtZShIKSwKKyAgICAgICAgbm90aWZ5X2ZhaWwoSCkKZGlmZiAtLWdpdCBhL2RvYy9ob29rL3RlbG5ldF9uZWcgYi9kb2MvaG9vay90ZWxuZXRfbmVnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjBmOGI4YzEKLS0tIC9kZXYvbnVsbAorKysgYi9kb2MvaG9vay90ZWxuZXRfbmVnCkBAIC0wLDAgKzEsNzIgQEAKK1NZTk9QU0lTCisgICAgICAgICNpbmNsdWRlIDxzeXMvZHJpdmVyX2hvb2tzLmg+CisKKyAgICAgICAgc2V0X2RyaXZlcl9ob29rKEhfVEVMTkVUX05FRywgdmFsdWUpCisKKyAgICAgICAgPHZhbHVlPiBiZWluZzoKKworICAgICAgICAgIHZvaWR8bWl4ZWQgPG5hbWU+KGludCBhY3Rpb24sIGludCBvcHRpb24gWywgaW50ICogb3B0cyBdICkKKyAgICAgICAgICB2b2lkfG1peGVkIDxjbG9zdXJlPihpbnQgYWN0aW9uLCBpbnQgb3B0aW9uIFssIGludCAqIG9wdHMgXSApCisKK0RFU0NSSVBUSU9OCisgICAgICAgIE9wdGlvbmFsIGhvb2sgdG8gc3BlY2lmaXkgaG93IHRvIHBlcmZvcm0gYSBzaW5nbGUgdGVsbmV0CisgICAgICAgIG5lZ290aWF0aW9uLiAgSG9vayBzZXR0aW5nIG1heSBiZSBhbnkgY2xvc3VyZSBvciBhIHN0cmluZy4gIElmCisgICAgICAgIG5vdCBzZXQsIG1vc3QgdGVsbmV0IG9wdGlvbnMgYXJlIHJlamVjdGVkIChyZWFkOiBvbmx5IGEgdmVyeQorICAgICAgICBtaW5pbWFsIG5lZ290aWF0aW9uIHRha2VzIHBsYWNlKS4KKworICAgICAgICBUaGUgaG9vayBpcyBjYWxsZWQgd2hlbmV2ZXIgdGhlIGRyaXZlciByZWNlaXZlcyBhIGRlbWFuZCBmb3IKKyAgICAgICAgb3B0aW9uIG5lZ290aWF0aW9uIGZvciBhbnkgb3B0aW9uIHRoZSBkcml2ZXIgZG9lcyBub3QgaGFuZGxlIGl0c2VsZi4KKyAgICAgICAgQnkgZGVmYXVsdCwgdGhlIGRyaXZlciBkZWFscyB3aXRoIHRoZSBmb2xsb3dpbmcgb3B0aW9uczoKKyAgICAgICAgICAgIFRFTE9QVF9FQ0hPOiAgICAgIEVjaG8gb3B0aW9uCisgICAgICAgICAgICBURUxPUFRfU0dBOiAgICAgICBTdXBwcmVzcyBHbyBBaGVhZCAobmVhcmx5IGFsd2F5cyBvbikKKyAgICAgICAgICAgIFRFTE9QVF9DT01QUkVTUzogIE11ZCBjbGllbnQgY29tcHJlc3Npb24gcHJvdG9jb2wgKG9ic29sZXRlKQorICAgICAgICAgICAgVEVMT1BUX0NPTVBSRVNTMjogTXVkIGNsaWVudCBjb21wcmVzc2lvbiBwcm90b2NvbCBWMgorCisgICAgICAgIEZvciBhbGwgb3RoZXIgdGVsbmV0IG9wdGlvbnMgbmVnb3RpYXRpb25zLCB0aGlzIGhvb2sgaXMgY2FsbGVkLgorCisgICAgICAgIFRoZSBob29rIGhhcyB0aGVuIHRvIHBlcmZvcm0gdGhlIG5lZ290aWF0aW9uIHVzaW5nIHRoZSBlZnVuCisgICAgICAgIGJpbmFyeV9tZXNzYWdlKCkuCisKKyAgICAgICAgQWx0ZXJuYXRpdmVseSwgaWYgSF9OT0VDSE8gaXMgc2V0LCB0aGlzIGhvb2sgaXMgY2FsbGVkIGZvcgorICAgICAgICBfYWxsXyB0ZWxuZXQgZGF0YSByZWNlaXZlZC4KKworICAgICAgICBJZiB0aGUgc2V0dGluZyBpcyBhIHN0cmluZywgaXQgdXNlZCBhcyBuYW1lIG9mIGFuIGxmdW4gdG8gY2FsbAorICAgICAgICBpbiB0aGlzX3BsYXllcigpLiBDbG9zdXJlcyBhcmUganVzdCBjYWxsZWQsIHdpdGggdW5ib3VuZAorICAgICAgICBsYW1iZGEtY2xvc3VyZXMgYmVpbmcgYm91bmQgdG8gdGhpc19wbGF5ZXIoKSBwcmlvciB0bworICAgICAgICBleGVjdXRpb24uCisKKyAgICAgICAgVGhlIGhvb2sgaXMgY2FsbGVkIGZvciBhICdETy9ET05UL1dJTEwvV09OVCA8b3B0Picgd2l0aCB0aGUgYWN0aW9uCisgICAgICAgIChETy9ET05ULy4uLikgYXMgdGhlIGZpcnN0LCBhbmQgPG9wdD4gYXMgdGhlIHNlY29uZCBhcmd1bWVudC4KKworICAgICAgICBGb3IgZXhhbXBsZTosIGlmIHRoZSBkcml2ZXIgcmVjZWl2ZXMgdGhlIHNlcXVlbmNlCisKKyAgICAgICAgICBJQUMgU0IgPG9wdD4gPG9wdHM+Li4uCisKKyAgICAgICAgZm9sbG93ZWQgYnkgSUFDIFNCL1NFLCAgdGhlIGhvb2sgaXMgY2FsbGVkIHdpdGggJ1NCJyBhcyBmaXJzdAorICAgICAgICBhcmd1bWVudCwgPG9wdD4gYXMgc2Vjb25kLCBhbmQgPG9wdHM+IGFzIGFuIGFycmF5IG9mIGludGVnZXJzIGFzCisgICAgICAgIHRoaXJkIGFyZ3VtZW50LgorCitSRU1BUktTCisgICAgICAgIEFuIGluY29tcGxldGUgbGlzdCBvZiB0ZWxuZXQgbmVnb3RpYXRpb25zIHRoaXMgaG9vayBpcyBjYWxsZWQKKyAgICAgICAgZm9yIGluY2x1ZGVzIHRoZSBmb2xsb3dpbmc6CisgICAgICAgICAgICBTQjogICAgICAgICAgICAgICBTdWJvcHRpb24gbmVnb3RpYXRpb24KKyAgICAgICAgICAgIFRFTE9QVF9MSU5FTU9ERTogIGxpbmVtb2RlCisgICAgICAgICAgICBURUxPUFRfTkFXUzogICAgICB3aW5kb3cgc2l6ZQorICAgICAgICAgICAgVEVMT1BUX1RUWVBFOiAgICAgdGVybWluYWwgdHlwZQorICAgICAgICAgICAgVEVMT1BUX1RNOiAgICAgICAgdGltaW5nIG1hcmsKKyAgICAgICAgICAgIFRFTE9QVF9ORVdFTlY6ICAgIHJlbW90ZSBlbnZpcm9ubWVudCB2YXJpYWJsZXMKKyAgICAgICAgICAgIFRFTE9QVF9FTlZJUk9OOiAgIHJlbW90ZSBlbnZpcm9ubWVudCB2YXJpYWJsZXMKKyAgICAgICAgICAgIFRFTE9QVF9YRElTUExPQzogIHJlbW90ZSBYIGRpc3BsYXkgYWRkcmVzcworICAgICAgICAgICAgVEVMT1BUX1RTUEVFRDogICAgdGVybWluYWwgc3BlZWQKKyAgICAgICAgICAgIFRFTE9QVF9CSU5BUlk6ICAgIGJpbmFyeSBkYXRhLCBuZWVkZWQgZm9yIG5vbi1BU0NJSSBjaGFyc2V0cworICAgICAgICAgICAgVEVMT1BUX0VPUjogICAgICAgVGlueUZ1Z3VlIHByb21wdCBtYXJrZXIgKHRvZ2V0aGVyIHdpdGggRU9SKQorCisgICAgICAgICAgICBURUxPUFRfTVNQOiAgICAgICBNdWQgU291bmQgUHJvdG9jb2wKKyAgICAgICAgICAgIFRFTE9QVF9NWFA6ICAgICAgIE11ZCBFeHRlbnNpb24gUHJvdG9jb2wKKyAgICAgICAgICAgIFRFTE9QVF9NU1NQOiAgICAgIE11ZCBTZXJ2ZXIgU3RhdHVzIFByb3RvY29sCisgICAgICAgICAgICBURUxPUFRfR01DUDogICAgICBHZW5lcmljIE11ZCBDb21tdW5pY2F0aW9uIFByb3RvY29sCisKK0hJU1RPUlkKKworU0VFIEFMU08KKyAgICAgICAgaG9va3MoQyksIHRlbG5ldChDKSwgbm9fZWNobyhIKQpkaWZmIC0tZ2l0IGEvZG9jL2luZm9tYWlscy9pbmZvX21sMTUgYi9kb2MvaW5mb21haWxzL2luZm9fbWwxNQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4wYzkzNmJmCi0tLSAvZGV2L251bGwKKysrIGIvZG9jL2luZm9tYWlscy9pbmZvX21sMTUKQEAgLTAsMCArMSw3NCBAQAorSGVyemxpY2ggd2lsbGtvbW1lbiBpbSBLcmVpc2UgZGVyIE1hZ2llciEKK0hhbGxvIEBXRVIxLAorCitpY2ggbmVobWUgYW4sIGRhc3MgRGlyIERlaW4gU3BvbnNvciBiZXJlaXRzIGVpbmlnZSBIaW53ZWlzZSB1bmQgVGlwcwordW5kIHZvciBhbGxlbiBEaW5nZW4gZGVuIHdlaXRlcmVuIEFibGF1ZiBEZWluZXMgTWFnaWVyZGFzZWlucyBoaWVyIGltIE1HCitlcmxhZXV0ZXJ0IGhhdC4gVHJvdHpkZW0gbW9lY2h0ZSBpY2ggRGlyIGF1Y2ggbm9jaCBlaW4gcGFhciBIaW53ZWlzZQorZ2ViZW4sIGRhbWl0IG5pY2h0cyBzY2hpZWYgZ2VodC4KKworWnVtIGVpbmVuIGZpbmRlc3QgRHUgenVzYWV0emxpY2hlIEluZm9ybWF0aW9uZW4gaW4gZGVuIEhpbGZlc2VpdGVuIHp1CisibWFnaWVyIiB1bmQgImdlc2VsbGVuc3R1ZWNrIi4gTGllcyBEaXIgZGllIGVpbm1hbCBpbiBSdWhlIGR1cmNoIHVuZCB3ZW5uCitEdSBkYXp1IG5vY2ggd2VpdGVyZSBGcmFnZW4gaGFzdCwga2FubnN0IER1IERpY2ggZ2VybmUgYW4gRGVpbmVuIFNwb25zb3IgCit3ZW5kZW4uCisKK0RlcyB3ZWl0ZXJlbiBoYXN0IER1IG1vbWVudGFuIG51ciBMZXNlcmVjaHRlIGluIC9kb2MsIGRhcyBpc3QgZGFzIAorVmVyemVpY2huaXMsIGluIGRlbSBkaWUgZ2VzYW10ZSBEb2t1bWVudGF0aW9uIGRlcyBNb3JnZW5ncmF1ZW5zCithYmdlbGVndCBpc3QuIER1IGthbm5zdCBEaXIgZGllIERhdGVpZW4gbWl0IEhpbGZlIGRlcyBCZWZlaGxzICJtYW4iCithbnplaWdlbiBsYXNzZW4uIEVpbmUgVWViZXJzaWNodCB1ZWJlciBkaWUgU3RydWt0dXIgZGVyIERva3VtZW50YXRpb24gdW5kCitkaWUgVGhlbWVuIGRlciBlaW56ZWxuZW4gVW50ZXJ2ZXJ6ZWljaG5pc3NlIHZlcnNjaGFmZnQgRGlyIGRlciBCZWZlaGwKKyJtb3JlIC9kb2MvUkVBRE1FIi4KK1VudGVyIC9kb2MvYmVpc3BpZWxlLyBiZWZpbmRlbiBzaWNoIGVpbiBwYWFyIEJlaXNwaWVsZSBkZXIgUHJvZ3JhbW1pZXJ1bmcgCittaXQgTFBDIC0gYXVjaCB3ZW5uIGxlaWRlciBuaWNodCBhbGxlIGF1ZiBkZW0gYWt0dWVsbHN0ZW4gU3RhbmQgc2luZC4KKworRGVyIEJlZmVobCAibWFuIDxiZWdyaWZmPiIgZHVyY2hzdWNodCBhbGxlIGRpZXNlIFZlcnplaWNobmlzc2UgYXV0b21hdGlzY2gKK25hY2ggZGVtIGFuZ2VnZWJlbmVuIEJlZ3JpZmYsIGRlciB6LkIuIGVpbmUgTXVkbGliLUZ1bmt0aW9uIHNlaW4ga2Fubi4KK1dlbm4gZXIgZWluZSBwYXNzZW5kZSBNYW5wYWdlIGdlZnVuZGVuIGhhdCwgd2lyZCBEaXIgZGllc2UgYW5nZXplaWd0LgorUHJvYmllciBkb2NoIHouQi4gZWluZmFjaCBtYWwgIm1hbiBBZGRFeGl0IiBhdXMsIHVtIHp1IGVyZmFocmVuLCB3aWUgRHUKK2luIGVpbmVtIFJhdW0gZWluZW4gQXVzZ2FuZyBhbmxlZ3N0LCBvZGVyIHNjaGF1IG1pdCAibWFuIFBfS0lMTF9NU0ciIG5hY2gsCit3aWUgRHUgRGVpbmVtIE5QQyBiZWlicmluZ3N0LCBzZWluZW4gR2VnbmVyIGF1ZiBkZXIgRWJlbmUgIlRvZCIgYW5nZW1lc3NlbgorenUgdmVyc3BvdHRlbi4gQXVmIGRpZXNlIFdlaXNlIGthbm5zdCBEdSBEaXIgZWluZW4gZXJzdGVuIFVlYmVyYmxpY2sgdWViZXIKK2RpZSBGdW5rdGlvbmFsaXRhZXQgdW5kIEFyYmVpdHN3ZWlzZSBkZXIgTXVkbGliIHVuZCBkZXMgRHJpdmVycyB2ZXJzY2hhZmZlbi4KK1dpZSBpbW1lciBnaWx0IGFiZXIsIGRhc3MgRGVpbiBTcG9uc29yLCBvZGVyIGF1Y2ggZGllIGFuZGVyZW4gTWFnaWVyIERpcgorZ2VybmUgd2VpdGVyaGVsZmVuLCB3ZW5uIGV0d2FzIHVua2xhciBibGVpYmVuIHNvbGx0ZS4gU2NoZXVlIERpY2ggYml0dGUKK25pY2h0LCBlaW5mYWNoIGplbWFuZGVuIHp1IGZyYWdlbi4KKworWnVtIEFibGF1ZiBEZWluZXMgR2VzZWxsZW5zdHVlY2tzIG1vZWNodGUgaWNoIHp1bmFlY2hzdCBudXIgc292aWVsIHNhZ2VuLAorZGFzcyBEdSBlcnN0IGF1ZiBNYWdpZXJsZXZlbCAyMCBlaW4gZWlnZW5lcyBIb21lLVZlcnplaWNobmlzIGJla29tbWVuIHdpcnN0LAoraW4gZGVtIER1IGRhbm4gYXJiZWl0ZW4ga2FubnN0LiBWb3JoZXIgbXVzc3QgRHUgZGVuIEVyem1hZ2llcm4sIGluc2Jlc29uZGVyZQorZGVtIGZ1ZXIgZGllIEdlc2VsbGVuc3R1ZWNrZSB6dXN0YWVuZGlnZW4gKHdlciBkYXMgaXN0LCBiZWtvbW1zdCBEdSBtaXR0ZWxzCisiaGlsZmUgZXJ6bWFnaWVyIiBoZXJhdXMpLCBEZWluIEtvbnplcHQgZnVlciBkaWVzZXMgR2VzZWxsZW5zdHVlY2sgCitlcmxhZXV0ZXJuLiBTZWkgZGFiZWkgcnVoaWcgZWluIHdlbmlnIGF1c2Z1ZWhybGljaGVyIHVuZCBzY2hyZWliIGVpbiB3ZW5pZworZXR3YXMgenUgc2FtbWVuLiBGYWxscyBEdSBlaW4gbmV1ZXMgR2ViaWV0IHNjaHJlaWJlbiBtb2VjaHRlc3QsIGlzdCBlaW5lIAora2xlaW5lIEFTQ0lJLUthcnRlIGFscyBHZWJpZXRzdWViZXJibGljayBpbW1lciBnZXJuIGdlc2VoZW4uCisKK0VpbiB3aWNodGlnZXIgSGlud2VpcyB6dW0gS29uemVwdDogU3ByaWNoIGJpdHRlIHJlY2h0emVpdGlnIG1pdCBkZW0KK3p1c3RhZW5kaWdlbiBSZWdpb25zbWFnaWVyIGRlciBSZWdpb24sIGRpZSBEZWluIEdTIGF1Zm5laG1lbiBzb2xsLCBEZWluZW0KK1Nwb25zb3IgdW5kIGF1Y2ggbWl0IGRlbSBHUy1FTSBEZWluIEdlc2VsbGVuc3R1ZWNrIGFiLiBCaXR0ZSB0ZWlsZSB1bnMgYXVjaCAKK21pdCwgd2VubiBEdSB3YWVocmVuZCBkZXIgUHJvZ3JhbW1pZXJ1bmcgQWVuZGVydW5nZW4gdm9ybmltbXN0LiBKZSBiZXNzZXIKK3dpciB1bnMgaW0gVm9yZmVsZCBhYnNwcmVjaGVuLCBkZXN0byB3ZW5pZ2VyIFByb2JsZW1lIHRyZXRlbiBiZWkgZGVyIAorQWJuYWhtZSBkdXJjaCBkaWUgYmV0ZWlsaWd0ZW4gSW5zdGFuemVuIGF1Zi4gRXMgaGF0IHNpY2ggYXVzc2VyZGVtIGdlemVpZ3QsCitkYXNzIG1hbiBzYWVtdGxpY2hlICh1bmQgZGFtaXQgbWVpbmUgaWNoIHdpcmtsaWNoIF9hbGxlXykgQWJzcHJhY2hlbiAKK2JlenVlZ2xpY2ggZGVzIEtvbnplcHRzIHNhdWJlciBkb2t1bWVudGllcmVuIHNvbGx0ZSwgei5CLiBwZXIgTWFpbC4KKworQmVpIGRlciBBdXNhcmJlaXR1bmcgZWluZXMgS29uemVwdGVzIGlzdCBEaXIgZ2VybmUgRGVpbiBTcG9uc29yIG9kZXIgCithdWNoIGRlciBSZWdpb25zbWFnaWVyIGJlaGlsZmxpY2ggLSBqZWRlciB2b24gZGVuZW4gaGF0IHNlbGJlciBzY2hvbgorZWluIEdTLUtvbnplcHQgZWluZ2VyZWljaHQgdW5kIHNvbGx0ZSBldHdhcyBkYXp1IHNhZ2VuIGtvZW5uZW4uIEZhbGxzCitEaXIgbm9jaCBlaW4gd2VuaWcgZGllIElkZWVuIGFiZ2VoZW4sIHNjaGF1IGRvY2ggZWluZmFjaCBtYWwgYXVmIGRhcworUHJvamVrdGJyZXR0IGluIGRlciBBYmVudGV1cmVyLUdpbGRlOiBkb3J0IHNpbmQgaGFldWZpZyBHZXNlbGxlbnN0dWVjay0KK1Byb2pla3RlIGF1c2dlc2NocmllYmVuLgorCitXZW5uIERlaW4gS29uemVwdCB2b3JsaWVndCB1bmQgdm9tIFVtZmFuZyB1bmQgU2Nod2llcmlna2VpdCBoZXIgZnVlciAKK2F1c3JlaWNoZW5kIGJlZnVuZGVuIHd1cmRlLCBzbyB3aXJzdCBEdSBuYWNoIGNhLiA4IFRhZ2VuIGF1ZiBNYWdpZXJsZXZlbAorMjAgYmVmb2VyZGVydC4KK1dlbm4gRHUgbm9jaCBGcmFnZW4gaGFzdCwgU29yZ2VuLCBOb2V0ZSBvLmFlLiBzbyBzdGVoZW4gRGlyIERlaW4gU3BvbnNvciwKK2plZGVyIGFuZGVyZSBNYWdpZXIgdW5kIGRlciBHUy1FTSBuYXR1ZXJsaWNoIGF1Y2ggZ2VybmUgenVyIFZlcmZ1ZWd1bmcuCisKK0ljaCB3dWVuc2NoZSBEaXIgaW0gTmFtZW4gZGVyIE1hZ2llcnNjaGFmdCB2aWVsIFNwYXNzIGJlaW0gUHJvZ3JhbW1pZXJlbiAKK3VuZCBob2ZmZSwgZGFzcyBEdSBzY2hvbiBiYWxkIGVpbmUgTWFpbCBtaXQgRGVpbmVtIEtvbnplcHQgYW4gZGllIEVyem1hZ2llcgorYWJzZW5kZW4gd2lyc3QhCisKK1ZpZWxlIEdydWVzc2UsIERlaW4gTWVybGluLgorCitQLlMuOiBXZW5uIER1IG1hZ3N0LCBrYW5uc3QgRHUgYXVjaCBnZXJuZSBkaWUgRWJlbmVuIC1tYWdpZXIgdW5kIC1scGMgCisgICAgICBiZXRyZXRlbiwgdW0gZG9ydCBlaW4gd2VuaWcgbWl0enVsZXNlbiBvZGVyIERlaW5lIGVpZ2VuZW4gRnJhZ2VuCisgICAgICBsb3N6dXdlcmRlbi4KZGlmZiAtLWdpdCBhL2RvYy9pbmZvbWFpbHMvaW5mb19tbDIwIGIvZG9jL2luZm9tYWlscy9pbmZvX21sMjAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMGYwMTFhNgotLS0gL2Rldi9udWxsCisrKyBiL2RvYy9pbmZvbWFpbHMvaW5mb19tbDIwCkBAIC0wLDAgKzEsODMgQEAKK1dpbGxrb21tZW4gYXVmIE1hZ2llcmxldmVsIDIwLiA6LSkKK0hhbGxvIEBXRVIxLAorCitEdSBiaXN0IGdlcmFkZSB2b24gbWlyIGF1ZiBNYWdpZXJsZXZlbCAyMCBiZWZvZXJkZXJ0IHdvcmRlbi4gRGFzIAorYmVkZXV0ZXQgZnVlciBEaWNoIHZvciBhbGxlbSwgZGFzcyBEZWluIEtvbnplcHQgZnVlciBlaW4gR2VzZWxsZW5zdHVlY2sKK2RhcyBXb2hsd29sbGVuIGRlciBFcnptYWdpZXIgZ2VmdW5kZW4gaGF0IHVuZCBhbmdlbm9tbWVuIHd1cmRlLiBIZXJ6bGljaGVuCitHbHVlY2t3dW5zY2ggZXJzdCBlaW5tYWwgZGF6dSEgOi0pCisKK1dlaXRlcmhpbiB3dXJkZSBqZXR6dCBhdWNoIGVpbiBIb21lLVZlcnplaWNobmlzIHVudGVyIC9wbGF5ZXJzL0BXRVIxCithbmdlbGVndCwgaW4gZGVtIER1IGRpZSBEYXRlaWVuIERlaW5lcyBHZXNlbGxlbnN0dWVja3MgdW5kIGFuZGVyZXMgYWJsZWdlbgora2FubnN0LiBVbnRlciAvcGxheWVycy9AV0VSMS93b3Jrcm9vbS5jIGV4aXN0aWVydCBqZXR6dCBhdWNoIERlaW4gZWlnZW5lcgorV29ya3Jvb20sIGluIGRlbSBEdSBEaWNoIHN0YW5kYXJkbWFlc3NpZyBuYWNoIGRlbSBFaW5sb2dnZW4gbWF0ZXJpYWxpc2llcnN0LgorCitBbHMga2xlaW5lIEhpbGZlc3RlbGx1bmcgZnVlciBEZWluZSBBcmJlaXQgYW0gR2VzZWxsZW5zdHVlY2sgbW9lY2h0ZW4gRGlyCitkaWUgRXJ6bWFnaWVyIGVpbmlnZSBUaXBzIG1pdCBhdWYgZGVuIFdlZyBnZWJlbiwgZGllIERpciBkYXMgTGViZW4gCitob2ZmZW50bGljaCBlcmxlaWNodGVybi4KKworMSkgWnVyIFByb2dyYW1taWVydW5nOgorCisgICBJbSBNdWQgc2VsYnN0IGthbm5zdCBEdSBudXIgdWViZXIgZGVuIFplaWxlbi1UZXh0ZWRpdG9yICJlZCIgZXR3YXMKKyAgIHByb2dyYW1taWVyZW4uIEhpbGZlIHp1IGRpZXNlbSBXZXJremV1ZyBiZWtvbW1zdCBEdSB1ZWJlciAibWFuIGVkIgorICAgdW5kICJtYW4gZWQwLi5lZDUiLiBBbHMgc2lubnZvbGxlIEFsdGVybmF0aXZlIHN0ZWh0IERpciBlaW4gRlRQLQorICAgWnVnYW5nIHp1ciBWZXJmdWVndW5nLCB1ZWJlciBkZW4gRHUgZGllIGF1ZiBEZWluZW0gZWlnZW5lbiBSZWNobmVyCisgICBnZXNjaHJpZWJlbmVuIEZpbGVzIGlucyBNdWQga29waWVyZW4ga2FubnN0LiBIaWVyYmVpIGthbm5zdCBEdSBkYW5uCisgICBEZWluZW4gZWlnZW5lbiBFZGl0b3IgdmVyd2VuZGVuLiBCaXR0ZSBhY2h0ZSBhYmVyIGRhcmF1ZiwgZGFzcyBEdQorICAgYWxzIERhdGVpZm9ybWF0IGRhcyBVbml4LUZvcm1hdCB2ZXJ3ZW5kZXN0LiBBdWNoIHVudGVyIFdpbmRvd3MgCisgICBiZWhlcnJzY2hlbiBpbnp3aXNjaGVuIGRpZSBtZWlzdGVuIEVkaXRvcmVuIGRpZXNlcyBEYXRlaWZvcm1hdC4KKworICAgVW0gdmVybnVlbmZ0aWcgYXJiZWl0ZW4genUga29lbm5lbiwgc29sbHRlc3QgRHUgRGlyIGRhcyBNR1Rvb2wgKHp1CisgICBmaW5kZW4gdW50ZXIgL29iai90b29scy9NR3Rvb2wpIGJlc2NoYWZmZW4gKGRpZSBIaWxmZSBoaWVyenUgZmluZGVzdAorICAgRHUgZGFubiBtaXR0ZWxzICJ4bWFuIikuIFdlaXRlcmhpbiBzZWkgRGlyIGRyaW5nZW5kIGRpZSBWZXJ3ZW5kdW5nIGRlcworICAgRmVobGVydGV1ZmVscyAoc2llaGUgImhpbGZlIGZlaGxlcnRldWZlbCIpIGVtcGZvaGxlbiwgZGVyIERpciBkaWUKKyAgIEZlaGxlcnN1Y2hlIHN0YXJrIGVybGVpY2h0ZXJ0LiBXaWUgRHUgZGllc2UgT2JqZWt0ZSBjbG9uc3QsIGthbm4gRGlyCisgICBEZWluIFNwb25zb3Igb2RlciBlaW4gYW5kZXJlciBNYWdpZXIgc2ljaGVyIHplaWdlbi4KKworICAgV2VpdGVyaGluIHNvbGx0ZXN0IER1IG51biB6dXNhZXR6bGljaCBub2NoIGRpZSBFYmVuZW4gLWRlYnVnLCAKKyAgIC1lbnR3aWNrbHVuZyB1bmQgLXdhcm51bmdlbiBlaW5zY2hhbHRlbiwgYXVmIGRlbmVuIER1IHVlYmVyIGF1ZnRyZXRlbmRlCisgICBCdWdzIGluZm9ybWllcnQgd2lyc3QgKG5pY2h0IG51ciBEZWluZSBlaWdlbmVuLCBhYmVyIER1IHdpcnN0IERpY2gKKyAgIGRhbWl0IHNpY2hlciBzY2huZWxsIHp1cmVjaHRmaW5kZW4pLgorCisgICBXYXMgZm9ybWFsZSB1bmQgYXVjaCBpbmhhbHRsaWNoZSBBbmZvcmRlcnVuZ2VuIGFuIERlaW5lbiBDb2RlIGFuZ2VodCwKKyAgIGxpZXMgRGlyIGJpdHRlICJoaWxmZSByZWdpb25zbGVpdGZhZGVuIiBkdXJjaCwgaGllciBmaW5kZXN0IER1IGFsbGVzCisgICB3ZXNlbnRsaWNoZSBrb21wYWt0IHp1c2FtbWVuZ2VmYXNzdC4gV2VubiBkYXJ1ZWJlciBoaW5hdXMgc3BlemllbGxlCisgICBGcmFnZW4genUgZGVyIFJlZ2lvbiBiZXN0ZWhlbiwgZGllIERlaW4gR2VzZWxsZW5zdHVlY2sgc3BhZXRlciBhdWZuZWhtZW4KKyAgIHNvbGwsIGthbm5zdCBEdSBnZXJuZSBhdWNoIGRlbiBSZWdpb25zbWFnaWVyIGFuc3ByZWNoZW4uIER1IHNvbGx0ZXN0IAorICAgYWJlciBhdWYgamVkZW4gRmFsbCBkYXZvbiBhdXNnZWhlbiwgZGFzcyBkaWVzZXIgRGlyIG51ciBzZWhyIGdlcmluZ2UKKyAgIEFid2VpY2h1bmdlbiB2b24gZGVuIGltIFJlZ2lvbnNsZWl0ZmFkZW4gYmVzY2hyaWViZW5lbiBTdGFuZGFyZHMgenVnZS0KKyAgIHN0ZWhlbiB3aXJkLCB3ZW5uIHVlYmVyaGF1cHQgKGluc2Jlc29uZGVyZSB3aXJkIHZpZWwgV2VydCBhdWYgZWluZSAKKyAgIHNpbm52b2xsZSBLb21tZW50aWVydW5nIERlaW5lcyBDb2RlcyBnZWxlZ3QpLgorCisyKSBadXIgRmVydGlnc3RlbGx1bmcgdW5kIEFibmFobWUgZGVzIEdlc2VsbGVuc3R1ZWNrczoKKworICAgRGVyIHVlYmxpY2hlIEFibGF1ZiBpc3QgZGVyLCBkYXNzIGRlciB6dXN0YWVuZGlnZSBSZWdpb25zbWFnaWVyCisgICAoZGVuIER1IHNjaG9uIHZvbiBkZXIgS29uemVwdHBoYXNlIGhlciBrZW5uZW4gZHVlcmZ0ZXN0KSBEZWluIAorICAgR2VzZWxsZW5zdHVlY2sgYWxzIGVyc3RlciBhYm5pbW10IHVuZCBzZWluZSBBbm1lcmt1bmdlbiBkYXp1IGdpYnQuCisgICBXZW5uIGRpZXNlIGdla2xhZXJ0IHVuZCB1bWdlc2V0enQgc2luZCwgaXN0IGRlciBHUy1FcnptYWdpZXIgYW4gZGVyCisgICBSZWloZSwgZGVyIERlaW4gV2VyayBub2NobWFscyBkdXJjaHNpZWh0IHVuZCBldnRsLiB3ZWl0ZXJlIEtvbW1lbnRhcmUKKyAgIGRhenUgYWV1c3NlcnQuIFdlbm4gZGllc2UgYmVpZGVuIFNjaHJpdHRlIGVybGVkaWd0IHNpbmQsIGlzdCBEZWluCisgICBHZXNlbGxlbnN0dWVjayBmYXN0IGZlcnRpZyBmdWVyIGRlbiBBbnNjaGx1c3MuCisKKyAgIEluIGRlciBSZWdlbCBpc3QgamV0enQgYXVjaCBkZXIgWmVpdHB1bmt0IGdla29tbWVuLCBkYXNzIER1IHp1bQorICAgVm9sbG1hZ2llciAoTGV2ZWwgMjEpIGJlZm9lcmRlcnQgd2VyZGVuIGthbm5zdCB1bmQgRGVpbiBDb2RlIGluCisgICBkaWUgUmVnaW9uIGtvcGllcnQgd2lyZCwgaW4gZGVyIGVyIGFuZ2VzY2hsb3NzZW4gd2VyZGVuIHdpcmQuCisKKyAgIEFsbGVyZGluZ3Mgc2VpIERpciBlaW4gUHVua3QgamV0enQgc2Nob24gYW5zIEhlcnogZ2VsZWd0OiBTb2xsdGVzdAorICAgRHUgT2JqZWt0ZSBpbiBEZWluZW0gR2VzZWxsZW5zdHVlY2sgYmF1ZW4gd29sbGVuLCBkaWUgdm9uIGRlciBCYWxhbmNlCisgICBnZW5laG1pZ3Qgd2VyZGVuIG11ZXNzZW4gKHNpZWhlIGhpZXJ6dSB6dW5hZWNoc3QgIm1hbiBiYWxhbmNlIiB1bmQgCisgICAibWFuIGdyZW56d2VydGUiKSwgc29sbHRlc3QgRHUgZGVuIG5vZXRpZ2VuIEFudHJhZyByZWNodHplaXRpZyBzdGVsbGVuLAorICAgZGEgZGllIEVyZmFocnVuZyB6ZWlndCwgZGFzcyBzb2xjaGUgRW50c2NoZWlkdW5nZW4gaW4gZGVyIFJlZ2VsIG5pY2h0CisgICB2b24gaGV1dGUgYXVmIG1vcmdlbiBnZXRyb2ZmZW4gd2VyZGVuIGtvZW5uZW4uIAorICAgSGlsZmVzdGVsbHVuZyBiZWkgZGVyIEZyYWdlLCB3YXMgZ2VuZWhtaWd0IHdlcmRlbiBtdXNzLCBnaWJ0IGRpZQorICAgQmFsYW5jZSBnZXJuZSBhdWYgQW5mcmFnZSwgYW5zb25zdGVuIHdpcmQgYWJlciBhdWNoIGplZGVyIGVyZmFocmVuZQorICAgTWFnaWVyIGF1c2hlbGZlbiBvZGVyIHp1bWluZGVzdCBlaW5lbiBBbnNwcmVjaHBhcnRuZXIgdmVybWl0dGxuIGtvZW5uZW4uCisKK0RhbWl0IHVlYmVybGFzc2UgaWNoIERpY2ggbnVuIERlaW5lciBBcmJlaXQgYW0gR1MuIFdlbm4gRHUgbm9jaCBGcmFnZW4KK2hhc3QgKHdhcyBzaWNoZXIgZGVyIEZhbGwgc2VpbiB3aXJkKSwgc2NoZXVlIERpY2ggbmljaHQsIHNpZSB6dSBzdGVsbGVuLCAKK29iIGF1ZiBlaW5lciBkZXIgTWFnaWVyZWJlbmVuIG9kZXIgZGlyZWt0IERlaW5lbSBTcG9uc29yIG9kZXIgYW5kZXJlbiAKK01hZ2llcm4hIEVzIHdpcmQgc2ljaCBzaWNoZXIgamVtYW5kIGZpbmRlbiwgZGVyIERpciBoZWxmZW4ga2FubiBvZGVyIGRlcgorRGljaCB6dW1pbmRlc3QgYXVmIGRpZSByaWNodGlnZSBGYWVocnRlIGJyaW5ndC4KKworVmllbGUgR3J1ZXNzZSB1bmQgdmllbCBFcmZvbGcsCitEZWluIE1lcmxpbi4KKwpkaWZmIC0tZ2l0IGEvZG9jL2luZm9tYWlscy9pbmZvX21sMjEgYi9kb2MvaW5mb21haWxzL2luZm9fbWwyMQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4wMDEzMzA2Ci0tLSAvZGV2L251bGwKKysrIGIvZG9jL2luZm9tYWlscy9pbmZvX21sMjEKQEAgLTAsMCArMSwzMiBAQAorR3JhdHVsYXRpb24genVyIEJlZm9lcmRlcnVuZyB6dW0gVm9sbG1hZ2llcgorSGFsbG8gQFdFUjEsCisKK2ljaCBiaW4ncyBtYWwgd2llZGVyLCBkZXIgTWVybGluLiA6LSkKKworRHUgYmlzdCBqYSBqZXR6dCBhdWYgTWFnaWVybGV2ZWwgMjEgYW5nZWtvbW1lbiwgZGFzIGhlaXNzdCwgaWNoIGthbm4gRGlyCithdWYgZGllc2VtIFdlZ2UgenVyIGVyZm9sZ3JlaWNoZW4gQWJuYWhtZSBEZWluZXMgR2VzZWxsZW5zdHVlY2tzIAorZ3JhdHVsaWVyZW4hIFdhciBqYSBhdWNoIGVpbmUgTWVuZ2UgQXJiZWl0LCBvZGVyPyA7LSkKKworQmV2b3IgRHUgamV0enQgYWJlciBmcmV1ZGVzdHJhaGxlbmQgYW5zY2hsaWVzc2VuIGthbm5zdCwgbW9lY2h0ZSBpY2ggRGljaAorYXVmIGVpbmlnZSBEaW5nZSBoaW53ZWlzZW4sIGRpZSB2b3IgZGVtIEFuc2NobHVzcyBlcmxlZGlndCB3ZXJkZW4gbXVlc3Nlbi4KK0tlaW5lIFNvcmdlLCBkYXMgaXN0IG5pY2h0IGFsbHp1dmllbCwgdW5kIG1laXN0IHJlY2h0IHNjaG5lbGwgZXJsZWRpZ3QuCisKK0FscyBlcnN0ZXMgd2lyZCBzaWNoZXJsaWNoIGRlciBSZWdpb25zbWFnaWVyIERlaW5lbiBDb2RlIGluIHNlaW5lIFJlZ2lvbgora29waWVyZW4gKGxhc3N0IGJpdHRlIG5pY2h0cyBkYXZvbiBpbiBEZWluZW0gSG9tZS1WZXJ6ZWljaG5pcyB6dXJ1ZWNrLAorZGFzIGthbm4gc3BhZXRlciBlaW5lIE1lbmdlIEFlcmdlciB2ZXJ1cnNhY2hlbikuIERlciBDb2RlIGthbm4gYWJlciBlcnN0IAorYW5nZXNjaGxvc3NlbiB3ZXJkZW4sIHdlbm4gZGllIEZvcnNjaGVycHVua3RlIChGUCksIFphdWJlcnRyYW5rLUZ1bmRvcnRlCisoWlRzKSB1bmQgRXJzdGtpbGxzdHVmZW5wdW5rdGUgKEVLcykgYmVhbnRyYWd0IHVuZCBnZW5laG1pZ3Qgc2luZAorKGRpZSBoaWVyZnVlciB6dXN0YWVuZGlnZW4gRU1zIHNpbmQgaW4gImhpbGZlIGVyem1hZ2llciIgYXVmZ2VmdWVocnQpLgorRHUgd2lyc3QgaGllcmZ1ZXIgLSBqZSBuYWNoIFplaXRhdWZ3YW5kIGZ1ZXIgZGllIGJldGVpbGlndGVuIEVNcyAtIGVpbmUKK2dld2lzc2UgV2FydGV6ZWl0IHZvciBkZW0gQW5zY2hsdXNzIGVpbmthbGt1bGllcmVuIG11ZXNzZW4uIEluIGRpZXNlciAKK1plaXQga2FubnN0IER1IGphIHNjaG9uIGVpbm1hbCBlaW5lbiBzY2hvZW5lbiBBcnRpa2VsIHp1ciBzdGlsZWNodGVuCitBbmt1ZW5kaWd1bmcgaW4gZGVyIE1QQSBlbnR3ZXJmZW4uCitXZWl0ZXJoaW4gbXVlc3NlbiBuYXR1ZXJsaWNoIGFsbGUgQmFsYW5jZS1yZWxldmFudGVuIE9iamVrdGUgZ2VuZWhtaWd0IHNlaW4uCisKK1dlbm4gZGFzIGFsbGVzIGVybGVkaWd0IGlzdCwgdW5kIGRhbWl0IERlaW4gV2VyayBhbnNjaGx1c3NmZXJ0aWcsIHdpcmQKK0RpY2ggZGVyIFJlZ2lvbnNtYWdpZXIgYXVmIE1hZ2llcmxldmVsIDI1IGJlZm9lcmRlcm4uIFNvYmFsZCBkYXMgZ2VzY2hhZmZ0Citpc3QsIHZlcmdpc3MgbmljaHQsIG1pY2ggenVyIFBhcnR5IGVpbnp1bGFkZW4hIDotKQorCitMaWViZSBHcnVlc3NlLAorRGVpbiBNZXJsaW4KKwpkaWZmIC0tZ2l0IGEvZG9jL2luZm9tYWlscy9pbmZvX21sMjUgYi9kb2MvaW5mb21haWxzL2luZm9fbWwyNQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4xYjAxYThiCi0tLSAvZGV2L251bGwKKysrIGIvZG9jL2luZm9tYWlscy9pbmZvX21sMjUKQEAgLTAsMCArMSwzOCBAQAorRHUgYXJiZWl0ZXN0IGpldHp0IGFuIGVpbmVyIFJlZ2lvbiBtaXQhCitIYWxsbyBAV0VSMSwKKworbWl0IGRlciBCZWZvZXJkZXJ1bmcgYXVmIE1hZ2llcmxldmVsIDI1IGlzdCBqZXR6dCBEZWluIEdlc2VsbGVuc3R1ZWNrCitlbmRndWVsdGlnIGFuZ2VzY2hsb3NzZW4gdW5kIHdpcmQgc2ljaGVyIGluIEt1ZXJ6ZSB2aWVsZmFjaGVuIFp1c3BydWNoCit2b24gU3BpZWxlcm4gZmluZGVuIQorCitJY2ggd3VlcmRlIG1pY2ggZnJldWVuLCB3ZW5uIER1IGF1Y2ggbmFjaCBkZW0gQW5zY2hsdXNzIGltbWVyIG1hbCBlaW4KK0F1Z2UgYXVmIERlaW5lbiBDb2RlIHdlcmZlbiB3dWVyZGVzdCwgdW0gKGRpZSBnZXJhZGUgaW4gZGVyIEFuZmFuZ3N6ZWl0CityZWNodCBoYWV1ZmlnZW4pIEJ1Z3MgenUgYmVoZWJlbi4gSWNoIGhhZXR0ZSBhYmVyIG5hdHVlcmxpY2ggYXVjaAordWViZXJoYXVwdCBuaWNodHMgZGFnZWdlbiwgd2VubiBEdSBub2NoIG1laHIgZnVlcnMgTW9yZ2VuZ3JhdWVuIGVudHdpY2tlbG4KK3dvbGx0ZXN0LiBXZW5uIER1IElkZWVuIGRhZnVlciBoYXN0LCBkYW5uIHNwcmljaCBkb2NoIGVpbmZhY2ggbWl0IGVpbmVtCitSZWdpb25zbWFnaWVyLCBpbiBkZXNzZW4gUmVnaW9uIER1IGVpbiBQbGFldHpjaGVuIGRhZnVlciBiZW5vZXRpZ3N0ISA6LSkKKworQW4gZGllc2VyIFN0ZWxsZSBzZWkgRGlyIGVybmV1dCBkZXIgSGlud2VpcyBhdWYgc29yZ2ZhZWx0aWdlCitEb2t1bWVudGF0aW9uIERlaW5lcyBLb256ZXB0cyB1bmQgZGVyIEFic3ByYWNoZW4gbWl0IGRlbSBSTSBkcmluZ2VuZCBhbnMKK0hlcnogZ2VsZWd0LiBTb3dhcyBoYXQgdWViZXJoYXVwdCBuaWNodHMgbWl0IE1pc3N0cmF1ZW4gRGlyIG9kZXIgZGVtIFJNCitnZWdlbnVlYmVyIHp1IHR1biwgc29uZGVybiBlaW5mYWNoIGRhbWl0LCBkYXNzIG1hbiBhdWYgZGllc2UgV2Vpc2UgCitNaXNzdmVyc3RhZW5kbmlzc2VuIHZvcmJldWdlbiBrYW5uIC0gYWxsZWluIGRpZSBWb3JzdGVsbHVuZywgd2FzIGVpbgorImtsZWluZXMiIG9kZXIgImdyb2Vzc2VyZXMiIEdlYmlldCBzZWluIHNvbGwsIHVudGVyc2NoZWlkZXQgc2ljaCB0ZWlscworZXJoZWJsaWNoIHp3aXNjaGVuIHp3ZWkgUGVyc29uZW4uIChVZWJyaWdlbnMgc29sbHRlc3QgRHUgZnVlciBkZW4gRmFsbCwgCitkYXNzIGRlciBmdWVyIERlaW5lIFJlZ2lvbiB6dXN0YWVuZGlnZSBSZWdpb25zbWFnaWVyIGVpbm1hbCB3ZWNoc2VsbiBzb2xsdGUsCitkZW0gbmV1ZW4gUk0gRGVpbiBLb256ZXB0IHZvcmxlZ2VuLCB1bSBzaWNoZXJ6dWdlaGVuLCBkYXNzIGRpZXNlciBkYXZvbgorS2VubnRuaXMgaGF0IHVuZCBnZ2YuIHNlaW5lIEFuc2ljaHQgYmVydWVja3NpY2h0aWdlbiB6dSBrb2VubmVuLikKKworU29sbHRlc3QgRHUgRGljaCBoaW5nZWdlbiB6dSBob2VoZXJlbSBiZXJ1ZmVuIGZ1ZWhsZW4sIHVuZCBnZXJuZSBzZWxic3QKK2VpbmUgUmVnaW9uIGFscyBSTSB1ZWJlcm5laG1lbiB3b2xsZW4sIG9kZXIgYW5kZXJlIEF1ZmdhYmVuIGFscyBNYWdpZXIKK3dhaHJuZWhtZW4sIHNvIGthbm5zdCBEdSBnZXJuZSBlaW5lbiBFcnptYWdpZXIgYW5zcHJlY2hlbiBvZGVyIERpY2ggZGlyZWt0CitiZXdlcmJlbi4gQXVjaCB3ZW5uIG1hbiBnZXJuZSBhbmRlcmVzIGVyemFlaGx0OiBkaWUgYmVpc3NlbiBhbGxlIG5pY2h0LiA7LSkKKworQWNoc28sIGVpbnMgbm9jaDogV2VubiBEdSBzZWxic3QgZWluZW4gU2VoZXIgc3BvbnNvcm4gbW9lY2h0ZXN0LCBhbHNvCitkaWVzZW4genVtIE1hZ2llciBtYWNoZW4sIGJlbm9ldGlnc3QgRHUgTWFnaWVybGV2ZWwgMjYgZGFmdWVyLiBEaWVzZW4KK2thbm5zdCBEdSBkdXJjaCBCZWZvZXJkZXJ1bmcgc2VpdGVucyBEZWluZXMgUmVnaW9uc21hZ2llcnMgZXJyZWljaGVuLiAKK1NwcmljaCBpaG4gZG9jaCBlaW5mYWNoIG1hbCBkYXJhdWYgYW4uCisKK1ZpZWxlIEdydWVzc2UsCitEZWluIE1lcmxpbi4KKwpkaWZmIC0tZ2l0IGEvZG9jL2luZm9tYWlscy9pbmZvX21sNDUgYi9kb2MvaW5mb21haWxzL2luZm9fbWw0NQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi42ZmZkNGI4Ci0tLSAvZGV2L251bGwKKysrIGIvZG9jL2luZm9tYWlscy9pbmZvX21sNDUKQEAgLTAsMCArMSwyMSBAQAorV2lsbGtvbW1lbiBpbSBLcmVpcyBkZXIgUmVnaW9uc21hZ2llciEKK0hlcnpsaWNoZW4gR2x1ZWNrd3Vuc2NoIEBXRVIxIQorCitJY2ggZnJldWUgbWljaCwgZGFzcyBEdSBpbiBkZW4gS3JlaXMgZGVyIFJlZ2lvbnNtYWdpZXIgYXVmZ2Vub21tZW4gd3VyZGVzdAordW5kIGRhcyBNb3JnZW5HcmF1ZW4gamV0enQgZWluZW4gd2VpdGVyZW4gYWt0aXZlbiBNYWdpZXIgenVyIFBmbGVnZSBkZXIKK1JlZ2lvbmVuIGhhdC4gOi0pCitVbSBEaXIgZGllIEFyYmVpdCB6dSBlcmxlaWNodGVybiwgaGFiZW4gRGVpbmUgS29sbGVnZW4gaGFldWZpZyBnZWZyYWd0ZQorRnJhZ2VuIGJ6dy4gaGFldWZpZ2UgVGFldGlna2VpdGVuIGVpbmVzIFJNcyB6dXNhbW1lbmdlc3RlbGx0LiBJY2gKK2VtcGZlaGxlIERpciBkYWhlciwgZGllc2VzIEhvd3RvIHp1IGxlc2VuLCBEdSBmaW5kZXN0IHdpY2h0aWdlIEhpbndlaXNlCitkb3J0OiAnbWFuIHJtLWhvd3RvJy4KK0ViZW5mYWxscyB2b24gSW50ZXJlc3NlIGlzdCBmdWVyIERpY2ggc2ljaGVybGljaCBkaWUgSGlsZmVzZWl0ZSAKKyJyZWdpb25zbWFnaWVyIiwgd2VsY2hlcyBlaW5pZ2Ugd2VpdGVyZSBJbmZvcm1hdGlvbmVuIGZ1ZXIgRGljaCBoYXQuCitGYWxscyBEdSBlaW5tYWwgRGlza3Vzc2lvbmVuIGZ1ZWhyZW4gd2lsbHN0IChvZGVyIEZyYWdlbiBoYXN0KSwgZGllIER1IG51ciBtaXQKK0RlaW5lbiBSZWdpb25zbWFnaWVya29sbGVnZW4gKGJ6dy4gUk0rKSBlcm9lcnRlcm4gbW9lY2h0ZXN0LCBrYW5uc3QgRHUgaGllcnp1CitkaWUgTVBBLVJ1YnJpayAncmVnaW9uc21hZ2llcicgYmVudXR6ZW4uCisKK1VuZCBudW4gd3VlbnNjaGUgaWNoIERpciB2aWVsIFNwYXNzIGluIERlaW5lbSBuZXVlbiBBbXQhCisKK0xpZWJlIEdydWVzc2UsCisgICAgICBNZXJsaW4KKwpkaWZmIC0tZ2l0IGEvZG9jL2xmdW4vLmRlZmF1bHQgYi9kb2MvbGZ1bi8uZGVmYXVsdApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5kNTE5ZjY5Ci0tLSAvZGV2L251bGwKKysrIGIvZG9jL2xmdW4vLmRlZmF1bHQKQEAgLTAsMCArMSwxNiBAQAorbXVzdGVyKCkKKworRlVOS1RJT046CisJdHlwZSBtdXN0ZXIoLi4uKQorCQorQVJHVU1FTlRFOgorCQorQkVTQ0hSRUlCVU5HOgorCitSVUVDS0dBQkVXRVJUOgorCQorQkVNRVJLVU5HOgorCQorQkVJU1BJRUw6CisKK1NJRUhFIEFVQ0g6CmRpZmYgLS1naXQgYS9kb2MvbGZ1bi8uc3lub255bSBiL2RvYy9sZnVuLy5zeW5vbnltCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjc3YzkyYTUKLS0tIC9kZXYvbnVsbAorKysgYi9kb2MvbGZ1bi8uc3lub255bQpAQCAtMCwwICsxLDE0IEBACitBX0NPTiBRdWVyeUF0dHJpYnV0ZQorQV9ERVggUXVlcnlBdHRyaWJ1dGUKK0FfSU5UIFF1ZXJ5QXR0cmlidXRlCitBX1NUUiBRdWVyeUF0dHJpYnV0ZQorcGF0aGQgU2VhcmNoUGF0aAorcXBwIFF1ZXJ5UG9zc1Byb25vdW4KK1NQX05BTUUgRGVmZW5kCitTUF9OT19BQ1RJVkVfREVGRU5TRSBEZWZlbmQKK1NQX05PX0VORU1ZIERlZmVuZAorU1BfUEhZU0lDQUxfQVRUQUNLIERlZmVuZAorU1BfUkVDVVJTSVZFIERlZmVuZAorU1BfUkVEVUNFX0FSTU9VUiBEZWZlbmQKK1NQX1NIT1dfREFNQUdFIERlZmVuZAorVGVzdElnbm9yZUV4dCBUZXN0SWdub3JlCmRpZmYgLS1naXQgYS9kb2MvbGZ1bi9BZGRBY3Rpb24gYi9kb2MvbGZ1bi9BZGRBY3Rpb24KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMjMxODNjYQotLS0gL2Rldi9udWxsCisrKyBiL2RvYy9sZnVuL0FkZEFjdGlvbgpAQCAtMCwwICsxLDc2IEBACitBZGRBY3Rpb24oTCkKK0ZVTktUSU9OOgorICAgICB2YXJhcmdzIHZvaWQgQWRkQWN0aW9uKG1peGVkIGZ1biwgbWl4ZWQgY21kLCBpbnQgZmxhZywgaW50IGx2bCk7CisKK0RFRklOSUVSVCBJTjoKKyAgICAgL3N0ZC9wbGF5ZXIvY29tbWFuZC5jCisKK0FSR1VNRU5URToKKyAgICAgZnVuCXp1IHJ1ZmVuZGUgTWV0aG9kZSBpbSBTcGllbGVyIG9kZXIgZWluZSBDbG9zdXJlCisgICAgIGNtZAlhdXNsb2VzZW5kZXMgS29tbWFuZG92ZXJiCisgICAgIGZsYWcJdW5zY2hhcmYgYXVzZnVlaHJlbgorICAgICBsdmwJYWIgd2VsY2hlbSAoTWFnaWVybGV2ZWwpIGZ1bmt0aW9uaWVydCBkYXMgS29tbWFuZG8KKworQkVTQ0hSRUlCVU5HOgorICAgICBEZW0gU3BpZWxlciB3aXJkIGVpbiBuZXVlcyBLb21tYW5kbyBkZWZpbmllcnQuIERpZXNlcyBrYW5uIGVpbmUgTWV0aG9kZQorICAgICBpbiBpaG0gc2Vpbiwgc28gd2llIGJlaSBhbGxlbiBTcGllbGVya29tbWFuZG9zIHVlYmxpY2gsIGthbm4gYWJlciBhdWNoCisgICAgIGVpbmUgQ2xvc3VyZSAoTGZ1bi1DbG9zdXJlIG9kZXIgTGFtYmRhKSBlbnRoYWx0ZW4uCisKKyAgICAgTWl0dGVscyAiZmxhZyIga2FubiBtYW4gZGllIEtvbW1hbmRvZXJrZW5udW5nIHVuc2NoYXJmIGhhbHRlbiwgZC5oLiB3aWUKKyAgICAgYmVpIEFkZENtZChMKSB1bmQgYWRkX2FjdGlvbihFKSB3aXJkIGVpbiAnY21kJyBiZWkgJ2ZsYWcgPSAxJyBhdWNoCisgICAgIHNjaG9uIHZvbiBQcmFlZml4LVN0cmluZ3MgKGhpZXIgb2huZSBMZWVyemVpY2hlbikgZ2V0cmlnZ2VydDoKKyAgICAgQWRkQWN0aW9uKFsuLi5dLCAibXVoIiwgMSwgMCkgd2lyZCB6QiBhdWNoIHZvbiAnbXVodGVucycgb2RlciAnbXVoNCcKKyAgICAgYXVzZ2Vsb2VzdC4KKworICAgICBNaXQgImx2bCIgYmVncmVuenQgbWFuIGRpZSBBdXNmdWVocmJhcmtlaXQuIFNwaWVsZXIgaGFiZW4gZWluCisgICAgIE1hZ2llcmxldmVsIHZvbiAwLCBTZWhlciB2b24gMS4KKworICAgICBEYXMgS29tbWFuZG8gd2lyZCBpbiBQX0xPQ0FMQ01EUyBlaW5nZXRyYWdlbi4gRGllc2UgUHJvcGVydHkgd2lyZAorICAgICBuaWNodCBnZXNwZWljaGVydCEgRWZmZWt0aXYga2FubiBtYW4gbWl0IEFkZEFjdGlvbigpIGVpbiBrb21tYW5kby0KKyAgICAgZ2ViZW5kZXMgT2JqZWt0IGltIFNwaWVsZXIgZWluc3BhcmVuLgorCitCRU1FUktVTkdFTjoKKyAgICAgLSBlcyBnaWJ0IF9ub2NoXyBrZWluIFJlbW92ZUFjdGlvbiEgUGVyIEhhbmQgaW4gUF9MT0NBTENNRFMgZWRpdGllcmVuCisgICAgICAga2FubiB6dSBlcm5zdGVuIEZlaGxlcm4gZnVlaHJlbi4KKyAgICAgLSBlY2h0ZSBTcGllbGVya29tbWFuZG9zIGthbm4gbWFuIGRhbWl0IF9uaWNodF8gdWViZXJzY2hyZWliZW4sCisgICAgICAgZWluIEFkZEFjdGlvbiguLi4sInNhZyIsMSwwKTsgZnVua3Rpb25pZXJ0IG5pY2h0CisgICAgIC0gZWluIGdlbmVyZWxsZXMgQWRkQWN0aW9uKC4uLiwiIiwxLDApOyBnZWh0IG5pY2h0CisKK0JFSVNQSUVMRToKKyAgICAgLi4uCisgICAgIHRoaXNfcGxheWVyKCktPkFkZEFjdGlvbihzeW1ib2xfZnVuY3Rpb24oInplaWdlX215c3Rlcml1bSIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmluZF9vYmplY3QoIi4uLi9teXN0emVpZ2VyIikpLAorCQkJICAgICAgImtub3JmdWxhIiwwLDApOworICAgICB3cml0ZShicmVha19zdHJpbmcoIldhbm4gaW1tZXIgZHUgamV0enQgZGFzIEtvbW1hbmRvIFwia25vcmZ1bGFcIiAiCisJCQkiZWluZ2lic3QsIHdlcmRlbiBkaXIgTXlzdGVyaWVuIGVudGh1ZWxsdCEiLDc4KSk7CisgICAgIC4uLgorCisgICAgIC8vIGltIE9iamVrdCAia25vcmZ1bGEiIC4uLgorICAgICBpbnQgemVpZ2VfbXlzdGVyaXVtKHN0cmluZyBzdHIpIHsKKyAgICAgICBzdHJpbmcgbXlzdDsKKyAgICAgICBteXN0PWVudmlyb25tZW50KFRQKS0+UXVlcnlNeXN0ZXJpdW0oc3RyKTsKKyAgICAgICBpZihteXN0KSB7CisgICAgICAgICB3cml0ZSgiRHUgaGFzdCBlaW4gTXlzdGVyaXVtIGVudGRlY2t0IVxuIik7CisJIHdyaXRlKGJyZWFrX3N0cmluZyhteXN0LDc4KSk7CisJIHNheShicmVha19zdHJpbmcoCisJCVRQLT5OYW1lKFdFUikrIiBzY2hlaW50IG5hY2gga3VyemVyIEtvbnplbnRyYXRpb24gZXR3YXMgIgorCQkiZW50ZGVja3QgenUgaGFiZW4hIiw3OCkpOworICAgICAgIH0gZWxzZSB7CisgICAgICAgICB3cml0ZShicmVha19zdHJpbmcoCisJCSJMZWlkZXIgZW50ZGVja3N0IGR1IHRyb3R6IGRlaW5lciBtYWdpc2NoZW4gRmFlaGlna2VpdCAiCisJCSJrZWluIE15c3Rlcml1bSBpbiBkZWluZXIgVW1nZWJ1bmcuIiw3OCkpOworCSBzYXkoYnJlYWtfc3RyaW5nKAorCQlUUC0+TmFtZShXRVIpKyIga29uemVudHJpZXJ0IHNpY2ggc2ljaHRiYXIsIHNpZWh0IGRhbm4gIgorCQkiamVkb2NoIGV0d2FzIGVudHRhZXVzY2h0IGF1cy4iLDc4KSk7CisgICAgICAgfQorICAgICAgIHJldHVybiAxOworICAgICB9CisKK1NJRUhFIEFVQ0g6CisJCQlQX0xPQ0FMQ01EUworICAgICBGZWhsZXJtZWxkdW5nZW46CW5vdGlmeV9mYWlsKEUpLCBfbm90aWZ5X2ZhaWwoRSkKKyAgICAgQXJndW1lbnRzdHJpbmc6CXF1ZXJ5X3ZlcmIoRSksIF91bnBhcnNlZF9hcmdzKEwpCisgICAgIFNvbnN0aWdlczoJCXJlcGxhY2VfcGVyc29uYWwoRSksIGVuYWJsZV9jb21tYW5kcyhFKQorICAgICBBbHRlcm5hdGl2ZW46CUFkZENtZChMKSwgYWRkX2FjdGlvbihFKQorCisyNC4gTWFlcnogMjAwNCBHbG9pbnNvbgpkaWZmIC0tZ2l0IGEvZG9jL2xmdW4vQWRkQWRqZWN0aXZlIGIvZG9jL2xmdW4vQWRkQWRqZWN0aXZlCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjZiNTgxMDEKLS0tIC9kZXYvbnVsbAorKysgYi9kb2MvbGZ1bi9BZGRBZGplY3RpdmUKQEAgLTAsMCArMSwzOSBAQAorQWRkQWRqZWN0aXZlKCkKKworRlVOS1RJT046CisgICAgIHZvaWQgQWRkQWRqZWN0aXZlKHN0cmluZ3xzdHJpbmcqIGFkaik7CisKK0RFRklOSUVSVCBJTjoKKyAgICAgL3N0ZC90aGluZy9kZXNjcmlwdGlvbi5jCisKK0FSR1VNRU5URToKKyAgICAgYWRqCisgICAgICAgICAgU3RyaW5nIG9kZXIgQXJyYXkgdm9uIFN0cmluZyBtaXQgZGVuIEFkamVrdGl2ZW4uCisKK0JFU0NIUkVJQlVORzoKKyAgICAgWnVzYWV0emxpY2ggenUgZGVuIG1pdCBBZGRJZCgpIHZlcmdlYmVuZW4gQmV6ZWljaG5lcm4gbGFlc3N0IHNpY2ggbWl0CisgICAgIGRlciBWZXJnYWJlIHZvbiBBZGpla3RpdmVuIGRpZSBBbnNwcmVjaGJhcmtlaXQgZWluZXMgT2JqZWt0ZXMgZXJob2VoZW4uCisKK1JVZUNLR0FCRVdFUlQ6CisgICAgIGtlaW5lcgorCitCRU1FUktVTkdFTjoKKyAgICAgRGllIEFkamVrdGl2ZSB3ZXJkZW4gbmljaHQgZGVrbGluaWVydCwgbWFuIG11c3MgYWxzbyBmdWVyIGplZGVuCisgICAgIHNpbm52b2xsZW4gRmFsbCBlaW4gQWRqZWt0aXYgdWViZXJnZWJlbi4KKworQkVJU1BJRUxFOgorCisgICAgICAgQWRkSWQoICh7ICJ6ZXR0ZWwiLCAiYmxhdHQiIH0pICk7CisgICAgICAgQWRkQWRqZWN0aXZlKCAoeyAia2xlaW5lbiIsICJrbGVpbmVzIiB9KSApOworCisgICAgIERhcyBPYmpla3QgcmVhZ2llcnQgamV0enQgYXVmICJ6ZXR0ZWwiLCAia2xlaW5lbiB6ZXR0ZWwiLCAiYmxhdHQiLAorICAgICAia2xlaW5lcyBibGF0dCIgc293aWUgYXVmIGRpZSAoc3ByYWNobGljaCBuaWNodCBnYW56IHNvIGtvcnJla3RlbikKKyAgICAgS29uc3RydWt0aW9uZW4gImtsZWluZXMgemV0dGVsIiwgImtsZWluZW4gYmxhdHQiLCAia2xlaW5lcyBrbGVpbmVuCisgICAgIHpldHRlbCIsIC4uLgorCitTSUVIRSBBVUNIOgorICAgICBBZGRJZCgpLCBSZW1vdmVBZGplY3RpdmUoKSBpZCgpLCBwcmVzZW50KCksIC9zdGQvdGhpbmcvZGVzY3JpcHRpb24uYworCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisyMC4wMS4yMDE1LCBaZXNzdHJhCisKZGlmZiAtLWdpdCBhL2RvYy9sZnVuL0FkZEFtb3VudCBiL2RvYy9sZnVuL0FkZEFtb3VudApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4zYmU4ZTNmCi0tLSAvZGV2L251bGwKKysrIGIvZG9jL2xmdW4vQWRkQW1vdW50CkBAIC0wLDAgKzEsMjUgQEAKK0FkZEFtb3VudCgpCisKK0ZVTktUSU9OOgorICAgICB2b2lkIEFkZEFtb3VudChpbnQgbWVuZ2UpOworCitERUZJTklFUlQgSU46CisgICAgIC9zdGQvdW5pdC5jCisKK0FSR1VNRU5URToKKyAgICAgbWVuZ2UKKyAgICAgICAgICBEaWUgTWVuZ2UsIGRpZSBkZXIgVW5pdCBoaW56dWdlZnVlZ3Qgd2VyZGVuIHNvbGwgKGthbm4gYXVjaAorICAgICAgICAgIG5lZ2F0aXYgc2VpbikuCisKK0JFU0NIUkVJQlVORzoKKyAgICAgbWVuZ2Ugd2lyZCB6dXIgYWt0dWVsbGVuIE1lbmdlIGhpbnp1Z2V6YWVobHQuIFNvbGx0ZSBkYXMgRXJnZWJuaXMgMAorICAgICB3ZXJkZW4sIHdpcmQgZGllIFVuaXQgaW4gYWJzZWhiYXJlciBaZWl0IHplcnN0b2VydC4KKworUlVlQ0tHQUJFV0VSVDoKKyAgICAga2VpbmVyCisKK1NJRUhFIEFVQ0g6CisgICAgIC9zdGQvdW5pdC5jCisKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KK0xhc3QgbW9kaWZpZWQ6IFdlZCBNYXkgOCAxMDoxNTo1MCAxOTk2IGJ5IFdhcmdvbgpkaWZmIC0tZ2l0IGEvZG9jL2xmdW4vQWRkQ2xhc3MgYi9kb2MvbGZ1bi9BZGRDbGFzcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5mOTc3MzBjCi0tLSAvZGV2L251bGwKKysrIGIvZG9jL2xmdW4vQWRkQ2xhc3MKQEAgLTAsMCArMSwyOCBAQAorQWRkQ2xhc3MoKQorRlVOS1RJT046CisgICAgIHZvaWQgQWRkQ2xhc3Moc3RyaW5nfHN0cmluZyogY2xhc3MpOworCitERUZJTklFUlQgSU46CisgICAgIC9zdGQvdGhpbmcvZGVzY3JpcHRpb24uYworCitBUkdVTUVOVEU6CisgICAgIHN0cmluZy9zdHJpbmcqIGNsYXNzCS0gU3RyaW5nIG9kZXIgU3RyaW5nYXJyYXkgZGVyIEtsYXNzZShuKQorCitCRVNDSFJFSUJVTkc6CisgICAgIERlbSBPYmpla3Qgd2VyZGVuIHdlaXRlcmUgS2xhc3NpZml6aWVydW5nZW4gaGluenVnZWZ1ZWd0LgorCisgICAgIERpZSBhbGxnZW1laW4gdmVyZnVlZ2JhcmVuIEtsYXNzZW4gc2luZCB1bnRlciAvc3lzL2NsYXNzLmggZGVmaW5pZXJ0LgorCitCRU1FUktVTkdFTjoKKyAgICAgVm9yIGRlbSA3LiBOb3YgMjAxMiBwcnVlZnRlIGlzX2NsYXNzX21lbWJlcigpIGF1Y2ggZGllIFBfSURTLiBEYW1pdCB3YXIKKyAgICAgekIgZWluIEFkZElkKCJkYWVtb24iKSBnbGVpY2hiZWRldXRlbmQgZWluZW0gQWRkQ2xhc3MoQ0xfREVNT04pLgorCisgICAgIEJpdHRlIHBydWVmdCBldXJlIE9iamVrdGUgKE5QQ3MsIEtyYW5raGVpdGVuLCBHaWZ0ZSwgLi4uKSBhdWYga29ycmVrdGUKKyAgICAgS2xhc3NpZml6aWVydW5nLgorCitTSUVIRSBBVUNIOgorICAgICBSZW1vdmVDbGFzcygpLCBpc19jbGFzc19tZW1iZXIoKQorICAgICBQX0NMQVNTCisKKzIwLjAxLjIwMTUsIFplc3N0cmEKKwpkaWZmIC0tZ2l0IGEvZG9jL2xmdW4vQWRkQ21kIGIvZG9jL2xmdW4vQWRkQ21kCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmFlZWE4ZGIKLS0tIC9kZXYvbnVsbAorKysgYi9kb2MvbGZ1bi9BZGRDbWQKQEAgLTAsMCArMSwyMTAgQEAKK0FkZENtZChMKQorRlVOS1RJT046CisgICAgdmFyYXJncyB2b2lkIEFkZENtZChtaXhlZCBjbWQsIG1peGVkIGZ1bmMsIFttaXhlZCBmbGFnLCBbbWl4ZWQgaWRdXSk7CisKK0RFRklOSUVSVCBJTjoKKyAgICAvc3RkL3RoaW5nL2NvbW1hbmRzLmMKKworQVJHVU1FTlRFOgorICAgIGNtZAorICAgICAgIFZlcmJlbiwgYXVmIGRpZSByZWFnaWVydCB3ZXJkZW4gc29sbAorICAgICAgIE9ERVIKKyAgICAgICBSZWdlbCBtaXQgVHJpZ2dlcnZlcmIgdW5kIG5vZXRpZ2VuIEtleXdvcmRzL1N5bm9ueW1lbgorICAgIGZ1bmMKKyAgICAgICBGdW5rdGlvbnNuYW1lIGltIHNlbGJlbiBPYmpla3Qgb2RlciBDbG9zdXJlIChGdW5rdGlvbnNwb2ludGVyKQorICAgIGZsYWcgKG9wdGlvbmFsKQorICAgICAgIFVuc2NoYXJmZSBBdXNmdWVocnVuZyA9PSAxCisgICAgICAgT0RFUgorICAgICAgIEZlaGxlcm1lbGR1bmdlbiBiZWkgTnV0enVuZyB2b24gUmVnZWxuCisgICAgaWQgKG9wdGlvbmFsKQorICAgICAgIGVpbmUgSUQsIHVlYmVyIGRpZSBkYXMgS29tbWFuZG8gZWluZGV1dGlnIHdpZWRlciBnZWxvZXNjaHQKKyAgICAgICB3ZXJkZW4ga2FubgorCitCRVNDSFJFSUJVTkc6CisgICAgV2VubiBlaW4gU3BpZWxlciBpbSBFaW5mbHVzc2JlcmVpY2ggZGVzIE9iamVrdGVzIGRhcyBWZXJiIGJlbnV0enQsCisgICAgd2lyZCBkaWUgZW50c3ByZWNoZW5kZSBGdW5rdGlvbiBpbSBPYmpla3QgYXVmZ2VydWZlbjoKKyAgICAtIGRpZSBWZXJiZW4gc29sbHRlbiBJbXBlcmF0aXZlIHNlaW4KKyAgICAtIGRpZSBGdW5rdGlvbiBtdXNzIDEgZnVlciBFUkZPTEcgKHVuZCBGUHMhKSB1bmQgMCBzb25zdCB6dXJ1ZWNrZ2ViZW4KKyAgICAgIChzb25zdCB3ZXJkZW4gZXZ0bC4gd2VpdGVyZSBGdW5rdGlvbmVuIG1pdCBkaWVzZW0gS29tbWFuZG92ZXJiIGdlcnVmZW4pCisgICAgLSBpbm5lcmhhbGIgZGVyIEZ1bmt0aW9uZW4ga29lbm5lbiBGZWhsZXJtZWxkdW5nZW4gZnVlciBkZW4gdG90YWxlbgorICAgICAgTWlzc2VyZm9sZyBkZXMgS29tbWFuZG9zIG1pdCBub3RpZnlfZmFpbCBnZXNldHp0IHdlcmRlbgorICAgICAgKGFuc3RhdHQgIldpZSBiaXR0ZT8iKQorCisgICAgQWRkQ21kIGlzdCBlaW4gZHluYW1pc2NoZXIgRXJzYXR6IGZ1ZXIgYWRkX2FjdGlvbiAtIGltIEdlZ2Vuc2F0egorICAgIHp1IGFkZF9hY3Rpb24ga29lbm5lbiBhdWNoIG9obmUgZXJuZXV0ZW4gQXVmcnVmIGRlciBpbml0KCkgbmV1ZQorICAgIEtvbW1hbmRvcyBoaW56dWdlZnVlZ3Qgd2VyZGVuLgorCisgICAgQWRkQ21kIGthbm4gZGFzIExlYmVuIGVpbmZhY2hlciBtYWNoZW4gbWl0OgorICAgICMjIyBSRUdFTE46ICMjIworICAgICAgQmVpIGtvbXBsZXhlbiBTeW50YXhlbiBrYW5uIGVpbiBTdHJpbmcgYW5nZWdlYmVuIHdlcmRlbiwgZGVyIGRpZQorICAgICAgX25vdHdlbmRpZ2VuXyAobmljaHQgZGllIGVybGF1YnRlbiEpIFNjaGx1ZXNzZWx3b3J0ZSB1bmQgZGVyZW4KKyAgICAgIHp1bGFlc3NpZ2UgU3lub255bWUgYmVzY2hyZWlidC4gRGFtaXQga2FubiBtYW4gc2ljaCBlaW5lbiBncm9zc2VuCisgICAgICBUZWlsIGVpZ2VuZXIgQXVzd2VydHVuZyBlcnNwYXJlbi4KKworICAgICAgTnVyIHdlbm4gaW4gcmljaHRpZ2VyIFJlaWhlbmZvbGdlIGF1cyBKRURFUiBkZXIgZHVyY2ggJiBnZXRyZW5udGVuCisgICAgICBTeW5vbnltZ3J1cHBlbiBlaW4gV29ydCBpbSBTcGllbGVya29tbWFuZG8gZW50aGFsdGVuIGlzdCwgd2lyZAorICAgICAgZGllIHp1Z2Vob2VyaWdlIEZ1bmt0aW9uIGF1c2dlZnVlaHJ0LgorCisgICAgICBUcmVubmVyIHNpbmQ6IHwgZnVlciBBbHRlcm5hdGl2ZW4KKyAgICAgICAgICAgICAgICAgICAgJiBmdWVyIEtvbmp1bmt0aW9uZW4KKworICAgICAgQmVpc3BpZWw6CisgICAgICAgICJyaXR6fHJpdHplfHNjaG5pdHp8c2Nobml0emUmbWl0Jm1lc3NlcnxzY2huaXR6bWVzc2VyJiIKKyAgICAgICAgImhlcnp8aGVyemNoZW4mcmluZGV8YmF1bXJpbmRlIgorICAgICAgd3VlcmRlIHouQi4gZHVyY2gKKyAgICAgICAgInJpdHogbWl0IGRlbSBNZXNzZXIgZWluIEhlcnogaW4gZGllIFJpbmRlIGRlcyBCYXVtZXMiCisgICAgICAgICJzY2huaXR6IG1pdCBNZXNzZXIgSGVyemNoZW4gQmF1bXJpbmRlIgorICAgICAgICAic2Nobml0eiBtaXQgbWVpbmVtIE1lc3NlciBIZXJ6Y2hlbiBpbiBkaWUgaGFydGUgQmF1bXJpbmRlIgorICAgICAgZXJmdWVsbHQgd2VyZGVuLgorCisgICAgICBTcGV6aWFscmVnZWx0ZWlsZSBzaW5kOgorICAgICAgLSBAUFJFU0VOVDogZW50c3ByaWNodCBlaW5lbSBPYmpla3QgaW4gSW52IG9kZXIgRW52IGRlcyBTcGllbGVycworICAgICAgLSBASUQ6ICAgICAgZW50c3ByaWNodCBkZXIgSUQgZGVzIGtvbW1hbmRvYmVzaXR6ZW5kZW4gT2JqZWt0ZXMKKyAgICAgICAgICAgICAgICAgICh3byBkaWUgS29tbWFuZG9tZXRob2RlIGRlZmluaWVydCBpc3QsIGlzdCBub2NoIHVud2ljaHRpZykKKyAgICAgIC0gQFBVVF9HRVRfRFJPUCwgQFBVVF9HRVRfVEFLRSwgQFBVVF9HRVRfTk9ORToKKyAgICAgICAgICAgICAgICAgIGVudHNwcmVjaGVuZCBkZW4gRmlsdGVyb3B0aW9uZW4gZnVlciBmaW5kX29icygpCisgICAgICBBQ0hUVU5HOiBadXNhZXR6bGljaGUgWmlmZmVybiBpbiBWZXJiaW5kdW5nIG1pdCBkZW4gQC1TcGV6aWFscmVnZWxuCisgICAgICAgICAgICAgICBzaW5kIHNjaGxlY2h0LiBALVJlZ2VsbiB2ZXJzdWNoZW4gZ2llcmlnLCBPYmpla3RlIGV4YWt0IGltCisgICAgICAgICAgICAgICBJbnZlbnRvcnkgenUgbWF0Y2hlbiAoIm9iamVrdCAzIiBhbnN0YXR0ICJvYmpla3QiKSB1bmQgbWlzcy0KKyAgICAgICAgICAgICAgIGludGVycHJldGllcmVuIGRhaGVyIHpCIGRpZSA0IGluICJzdG9wZiBvYmpla3QgMyBpbiBsb2NoIDQiIGFscworICAgICAgICAgICAgICAgVGVpbCBkZXMgT2JqZWt0LUlELVN0cmluZ3MuCisgICAgICAgICAgICAgICBJbnRlcm5hOiAzIFN1YnN0cmluZ3MgZnVlciBAUFJFU0VOVC9ASUQgKCJncnVlbmVyIGtyaXN0YWxsIDIiKQorICAgICAgICAgICAgICAgICAgICAgICAgNSBmdWVyIEBQVVQuLi4gKCJrcmlzdGFsbCAyIGluIGJldXRlbCAzIikKKworICAgICMjIyBGRUhMRVJNRUxEVU5HRU4gKGJlaSBBbndlbmR1bmcgdm9uIFJlZ2Vsbik6ICMjIworICAgICAgQWxzIGRyaXR0ZXIgUGFyYW1ldGVyIGtvZW5uZW4gYXVjaCBGZWhsZXJtZWxkdW5nZW4gZnVlciBqZXdlaWxzCisgICAgICBmZWhsZW5kZSBTeW5vbnltZ3J1cHBlbiAoYXVzc2VyIGRlciBlcnN0ZW4gLSBkZW4gS29tbWFuZG92ZXJiZW4pCisgICAgICBhbmdlZ2ViZW4gd2VyZGVuLiBTaWUgd2VyZGVuIGluIGRlcnNlbGJlbiBSZWloZW5mb2xnZSAoISkgd2llIGRpZQorICAgICAgU3lub255bWdydXBwZW4gYW5nZWdlYmVuLgorCisgICAgICBNaXQgbmljaHQgdm9uIFNwaWVsZXJuIGVyZnVlbGxiYXJlbiBSZWdlbG4gdW5kIF4tRmVobGVybWVsZHVuZ2VuCisgICAgICBrYW5uIG1hbiBhdWNoIG9obmUgQXVzZnVlaHJ1bmcgZWluZXIgRnVua3Rpb24gVGV4dGUgYW4gU3BpZWxlcgorICAgICAgdW5kIFVtZ2VidW5nIGF1c2dlYmVuLiBTaWVoZSBkYXp1IEFkZENtZF9ic3AuCisKKyAgICAgIFRyZW5uZXIgc2luZDogfCB6dW0gVHJlbm5lbiBkZXIgZWluemVsbmVuIEZlaGxlcm1lbGR1bmdlbgorICAgICAgICAgICAgICAgICAgICBeIHVtCisgICAgICAgICAgICAgICAgICAgICAgIC0gZGllIEF1c3dlcnR1bmcgKGFiIGRpZXNlciBGZWhsZXJtZWxkdW5nISkgbWl0CisgICAgICAgICAgICAgICAgICAgICAgICAgInJldHVybiAxOyIgenUgYmVlbmRlbiB1bmQKKyAgICAgICAgICAgICAgICAgICAgICAgLSBlaW5lIHdyaXRlXnNheS1NZWxkdW5nIHp1IHRyZW5uZW4gdW5kCisgICAgICAgICAgICAgICAgICAgICAgIC0gKGZ1ZXIgZnVua3Rpb25zbG9zZSBBZGRDbWQgYXVjaCBGUHMgenUgdmVyZ2ViZW4hKQorCisgICAgICBCZWlzcGllbGZlaGxlcm1lbGR1bmdlbiBmdWVyIG9iaWdlIFJlZ2VsOgorICAgICAgICAiV29taXQgd2lsbHN0IER1IHNjaG5pdHplbj98V2FzIHdpbGxzdCBEdSBzY2huaXR6ZW4/fCIKKyAgICAgICAgIldvaGluZWluIHdpbGxzdCBEdSBkYXMgc2Nobml0emVuPyIKKworICAgICAgRXMga29lbm5lbiBpbiBkZW4gRmVobGVybWVsZHVuZ2VuIGZvbGdlbmRlIFBsYXR6aGFsdGVyIGJlbnV0enQKKyAgICAgIHdlcmRlbjoKKyAgICAgIC0gQHZlcmIgKGVyc2V0enQgZHVyY2ggcXVlcnlfdmVyYigpIG9obmUgYmVlbmRlbmRlcyAnZScpCisgICAgICAtIEBWRVJCIChlcnNldHp0IGR1cmNoIGNhcGl0YWxpemUocXVlcnlfdmVyYigpKSBvaG5lIGJlZW5kZW5kZXMgJ2UnKQorICAgICAgLSBAV0VSeCwgQFdFU1NFTngsIEBXRU14LCBAV0VOeDogc2llaGUgYWxsZXMgYXVzIHJlcGxhY2VfcGVyc29uYWwoKQorICAgICAgICAtIEBXRS4uMSBpc3QgaW1tZXIgZGVyIGFrdGl2ZSBTcGllbGVyCisgICAgICAgIC0gYWxsZSBmb2xnZW5kZW4gc2luZCBkaWUgbWF0Y2hlbmRlbiBQYXJhbWV0ZXIgZGVyIFNwaWVsZXJlaW5nYWJlCisgICAgICAgICAgLSAoeC0xKTw9RmVobGVybWVsZHVuZyAoZGEgeD0xIFNwaWVsZXIgdW5kCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHgtMSk+RmVobGVybWVsZHVuZ3NvYmpla3QgbmljaHQgZXhpc3RlbnQpCisKKyAgICAgIEF1c2Z1ZWhydW5nc2JlaXNwaWVsOgorICAgICAgICBBZGRDbWQoInJpdHp8cml0emV8c2Nobml0enxzY2huaXR6ZSZtaXQmbWVzc2VyfHNjaG5pdHptZXNzZXImIgorICAgICAgICAgICAgICAgImhlcnp8aGVyemNoZW4mcmluZGV8YmF1bXJpbmRlIiwjJ2Z1biwKKyAgICAgICAgICAgICAgIldpbGxzdCBEdSBtaXQgZXR3YXMgQHZlcmJlbj98V29taXQgd2lsbHN0IGR1IEB2ZXJiZW4/fCIKKyAgICAgICAgICAgICAgIldhcyB3aWxsc3QgZHUgbWl0IGRlbSBAV0VNMyBAdmVyYmVuP3wiCisgICAgICAgICAgICAgICJXb2hpbmVpbiB3aWxsc3QgRHUgZGFzIEBXRU40IHNjaG5pdHplbj8iKTsKKyAgICAgICAgMS4gInJpdHplIiA9PSAiV2lsbHN0IER1IG1pdCBldHdhcyByaXR6ZW4/IgorICAgICAgICAyLiAic2Nobml0eiBtaXQiID09ICJXb21pdCB3aWxsc3QgZHUgc2Nobml0emVuPyIKKyAgICAgICAgMy4gInJpdHogbWl0IG1lc3NlciIgPT0gIldhcyB3aWxsc3QgZHUgbWl0IGRlbSBtZXNzZXIgcml0emVuPyIKKyAgICAgICAgNC4gInJpdHplIG1pdCBkZW0gbWVzc2VyIGVpbiBoZXJ6IiA9PQorICAgICAgICAgICAgICJXb2hpbmVpbiB3aWxsc3QgRHUgZGFzIGhlcnogc2Nobml0emVuPyIKKyAgICAgICAgNS4gInJpdHplIG1pdCBkZW0gbWVzc2VyIGVpbiBoZXJ6Y2hlbiBpbiBkaWUgYmF1bXJpbmRlIgorICAgICAgICAgICAgID09IEVyZm9sZyEKKworICAgICMjIyBVTlNDSEFSRkVSIEFVU0ZVRUhSVU5HOiAjIyMKKyAgICAgIEJlaSB1bnNjaGFyZmVyIEF1c2Z1ZWhydW5nIHdpcmQgZGllIHp1Z2Vob2VyaWdlIE1ldGhvZGUgYXVjaCBkYW5uCisgICAgICBhdXNnZWZ1ZWhydCwgd2VubiBkYXMgdmVyd2VuZGV0ZSBWZXJiIGVpbiBTdXBlcnN0cmluZyBpc3QgdW5kCisgICAgICBiaXNoZXIgbm9jaCBuaWNodCBiZWhhbmRlbHQgd3VyZGUuCisgICAgICBEaWVzZXMgVmVyaGFsdGVuIHNvbGx0ZSBudXIgYmVpbSBnZW5lcmVsbGVuIEFiZmFuZ2VuIHZvbgorICAgICAgQmVmZWhsc2dydXBwZW4gYmVudXR6dCB3ZXJkZW4gdW5kIGlzdCBhbnNvbnN0ZW4gdmVyYWx0ZXQuIEVzCisgICAgICBlbnRzcHJpY2ggYWRkX2FjdGlvbigiZnVuIiwia29tbWFuZG8iLDEpLgorCisKKyAgICAgIEJlaXNwaWVsOgorICAgICAgICAxLiBBZGRDbWQoImtsZXR0IiwiZnVuIiwxKTsKKyAgICAgICAgMi4gQWRkQ21kKCJrbGV0dGVyfGtsZXR0ZXJlJmhvY2giLCMnZnVuMiwiV29oaW4ga2xldHRlcm4/Iik7CisKKyAgICAgICAgYSkgImtsZXR0IgorICAgICAgICBiKSAia2xldHRlciIKKyAgICAgICAgYykgImtsZXR0ZXJlIGhvY2giCisKKyAgICAgICAgQXVzZ2VmdWVocnRlIEZ1bmt0aW9uIGJlaTogMWEsIDFiLCAxYzsgMmMKKyAgICAgICAoMSB3dWVyZGUgYWxzbyBpbW1lciBhdXNnZWZ1ZWhydCkKKyAgICAgICAgRmVobGVybWVsZHVuZyBiZWk6IDJiICgiV29oaW4ga2xldHRlcm4/IikKKworQkVNRVJLVU5HRU46CisgICAgLSBNZXRob2RlbiBkZXIgcHV0X2FuZF9nZXQgKG5pbW0vbmVobWUpIHNvbGx0ZW4gc28gbmljaHQgdmVyc3VjaHQKKyAgICAgIHdlcmRlbiB6dSB1ZWJlcnNjaHJlaWJlbiAtIGRhenUgc2luZCBpbnZpcyBDb250YWluZXIgZGEKKyAgICAtIGJlbnV0enQgbWFuIGZ1ZXIgPGZ1bmN0aW9uPiBlaW5lIENsb3N1cmUsIGthbm4gbWFuIGRpZSBGa3QuIGF1Y2gKKyAgICAgIHByb3RlY3RlZCBvZGVyIHByaXZhdGUgZGVrbGFyaWVyZW4gX3VuZF8gc2llIGthbm4gaW4gZWluZW0KKyAgICAgIGFuZGVyZW4gT2JqZWt0IHNlaW4KKyAgICAtIGJlaSBSZWdlbG4gd2lyZCBhbiBkaWUgZ2dmLiBnZXJ1ZmVuZSBNZXRob2RlIGFscyB6d2VpdGVyIFBhcmFtZXRlcgorICAgICAgZWluIEFycmF5IGRlciBlcmZ1ZWxsZW5kZW4gRWluZ2FiZXRlaWxlIHVlYmVyZ2ViZW46CisgICAgICAic3RlY2smQFBSRVNFTlQmaW4mbG9jaCIgYmVpIEVyZnVlbGx1bmcgLT4gKHs8T2JqZWt0PiwiaW4iLCJsb2NofSkKKyAgICAgIC0gYmVpIE51dHp1bmcgdm9uIEBQVVRfR0VUX1hYWCBrb2VubmVuIGRpZSBQYXJhbWV0ZXIgd2llZGVydW0KKyAgICAgICAgQXJyYXlzIHNlaW4gKCJqZWRlIEhvc2UiIC0+IG1laHJlcmUgZ3VlbHRpZ2UgT2JqZWt0ZSkKKyAgICAtIGp1ZW5nZXJlIEFkZENtZCB1ZWJlcnNjaHJlaWJlbiBhZWx0ZXJlLCBiencuIHdlcmRlbiB2b3IgZGllc2VuCisgICAgICBhdXNnZXdlcnRldAorICAgIC0gQFBVVF9HRVRfWFhYIGtvc3RlbiBzZWhyIHZpZWwgQXVzd2VydHVuZ3N6ZWl0CisKK0JFSVNQSUVMRSAoU0lFSEUgQVVDSCBBRERDTURfQlNQKToKKyAgICAvLyBTSU1QRUw6IGdhbnogc2ltcGVsLCBiZWluYWhlIHdpZSBhZGRfYWN0aW9uCisgICAgQWRkQ21kKCJiZWZpZWhsIiwiYWN0aW9uX2JlZmVobGVuIik7CisgICAgLi4uCisgICAgaW50IGFjdGlvbl9iZWZlaGxlbihzdHJpbmcgc3RyKSB7CisgICAgIGlmKCFzdHIgfHwgIXN0cmxlbihzdHIpKQorICAgICAgLy8gRmVobGVybWVsZHVuZywgZmFsbHMgZ2FyIGtlaW5lIEZ1bmt0aW9uIDEgZGFmdWVyIHp1cnVlY2tnaWJ0CisgICAgICBub3RpZnlfZmFpbCgiV2FzIHdpbGxzdCBkdSBiZWZlaGxlbj8hXG4iKTsKKyAgICAgZWxzZSB7CisgICAgICB3cml0ZSgiRHUgYmVmaWVobHN0IFwiIitzdHIrIlwiLCB1bmQgYWxsZSBmb2xnZW4hXG4iKTsKKyAgICAgIHNheShUUC0+TmFtZShXRVIpKyIgYmVmaWVobHQgXCIiK3N0cisiXCIsIHVuZCBkdSBmb2xnc3QhXG4iKTsKKyAgICAgIHJldHVybiAxOyAgLy8gRVJGT0xHIC0gQWJicnVjaCBkZXIgS29tbWFuZG9hdXN3ZXJ0dW5nCisgICAgIH0KKyAgICAgcmV0dXJuIDA7ICAvLyBNSVNTRVJGT0xHIC0gRmVobGVybWVsZHVuZyBvYmVuIGdlc2V0enQKKyAgICB9CisKKyAgICAvLyBTSU1QRUwgLi4gd2VpdGVyZSBCZWlzcGllbGUKKyAgICBBZGRDbWQoKHsia2xldHRlciIsImtsZXR0ZXJlIn0pLCJhY3Rpb25fa2xldHRlcm4iICk7CisgICAgQWRkQ21kKCh7InJlbm4iLCJyZW5uZSJ9KSwjJ2FjdGlvbl9yZW5uZW4pOworCisgICAgLy8gUkVHRUxOOiBlaW5lIGtvbXBsZXhlcmUgUmVnZWwKKyAgICBBZGRDbWQoImxvZXNjaHxsb2VzY2hlfGVyc3RpY2tlJmZldWVyfGJyYW5kfGZsYW1tZW4mZGVja2V8d29sbGRlY2tlIiwKKyAgICAgICAgICAgImFjdGlvbl9sb2VzY2hlbiIsCisgICAgICAgICAgICJXYXMgd2lsbHN0IGR1IGxvZXNjaGVuP3xXb21pdCB3aWxsc3QgZHUgbG9lc2NoZW4/Iik7CisKKyAgICAvLyBSRUdFTE46IG1pdCBQbGF0emhhbHRlcm4gaW0gRmVobGVyc3RyaW5nCisgICAgQWRkQ21kKCJzcHJpbmd8c3ByaW5nZXxodWVwZnxodWVwZmUmdm9ufHZvbSZiYXVtfGFzdHxlaWNoZSIsCisgICAgICAgICAgICMnYWN0aW9uX2h1ZXBmZSwKKyAgICAgICAgICAgIldpbGxzdCBkdSB2b24gZXR3YXMgQHZlcmJlbj98Vm9uIHdvIHdpbGxzdCBkdSBAdmVyYmVuPyIpOworCisgICAgLy8gU0NITEVDSFQ6IGVpbmUgdW5zY2hhcmZlIFJlZ2VsIC0gc2llIHNvbGx0ZW4gZWluZSBBdXNuYWhtZSBzZWluICghKQorICAgIEFkZENtZCgia2xldHRlciIsImZ1bl9rbGV0dGVybiIsMSk7CisKKyAgICAvLyBGQUxTQ0g6IHNlaHIgc2NobGVjaHQsIGtlaW4gSW1wZXJhdGl2IHZlcndlbmRldAorICAgIC8vIGF1c3NlcmRlbSBzb2xsdGUgbWFuIGZ1ZXIgc29sY2hlIFN5bnRheGVuIEFkZFJlYWREZXRhaWwgYmVudXR6ZW4KKyAgICBBZGRDbWQoImxlc2UiLCJldmFsX2xlc2VuIik7CisKKyAgICAvLyBTSU1QTEUgUkVHRUwgT0hORSBNRVRIT0RFCisgICAgLy8gbWl0IFJlZ2VsbiBrYW5uIG1hbiBhdWNoIEFrdGl2aXRhZXRlbiBpbSBSYXVtIGVybGF1YmVuLCBvaG5lIGVpbmUKKyAgICAvLyBGdW5rdGlvbiBhdWZydWZlbiB6dSBtdWVzc2VuOiBkaWUgbGV0enRlIFJlZ2VsIGlzdCBmdWVyIFNwaWVsZXIKKyAgICAvLyB1bm1vZWdsaWNoIHp1IGVyZnVlbGxlbiwgZGllIGRhenVnZWhvZXJpZ2UgRmVobGVybWVsZHVuZyB3aXJkIG1pdAorICAgIC8vIGRlbSBeICh3cml0ZS1GbGFnKSB2ZXJzZWhlbiB1bmQgZW50c3ByZWNoZW5kIGFuIGRlbiBTcGllbGVyCisgICAgLy8gKHVuZCBkZW4gUmF1bSAoaGludGVyIGRlbSBeKSkgYXVzZ2VnZWJlbgorICAgIEFkZENtZCgic3ByaW5nfHNwcmluZ2UmaGVydW50ZXJ8cnVudGVyJlxuXGJpbXBvc3NpYmxlIiwwLAorICAgICAgICAgICAiV29oaW4gb2RlciB3b3ZvbiB3aWxsc3QgRHUgc3ByaW5nZW4/fCIKKyAgICAgICAgICAgIkR1IHNwcmluZ3N0IHZvbSBCYXVtIHVuZCBrb21tc3QgaGFydCBhdWYuXiIKKyAgICAgICAgICAgIkBXRVIxIHNwcmluZ3Qgdm9tIEJhdW0gdW5kIGtvbW10IGhhcnQgYXVmLiIpOworCitTSUVIRSBBVUNIOgorICAgIEFkZENtZF9ic3AsIFJlbW92ZUNtZChMKSwgaW5pdChFKQorICAgIEZlaGxlcm1lbGR1bmdlbjogbm90aWZ5X2ZhaWwoRSksIF9ub3RpZnlfZmFpbChFKQorICAgIEFyZ3VtZW50c3RyaW5nOiBxdWVyeV92ZXJiKEUpLCBfdW5wYXJzZWRfYXJncyhMKQorICAgIFNvbnN0aWdlczogIHJlcGxhY2VfcGVyc29uYWwoRSksIGVuYWJsZV9jb21tYW5kcyhFKQorICAgIEFsdGVybmF0aXZlbjogQWRkQWN0aW9uKEwpLCBhZGRfYWN0aW9uKEUpCisKKzMwLiBBdWcgMjAxMyBHbG9pbnNvbgpkaWZmIC0tZ2l0IGEvZG9jL2xmdW4vQWRkQ21kX2JzcCBiL2RvYy9sZnVuL0FkZENtZF9ic3AKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZWRiOGQ5OAotLS0gL2Rldi9udWxsCisrKyBiL2RvYy9sZnVuL0FkZENtZF9ic3AKQEAgLTAsMCArMSwzMjAgQEAKK0FERENNRCgpIC0gQkVJU1BJRUxFCitGVU5LVElPTgorICAgIHZhcmFyZ3Mgdm9pZCBBZGRDbWQobWl4ZWQgY21kLCBtaXhlZCBmdW5jLCBtaXhlZCBmbGFnKTsKKworQkVNRVJLVU5HRU4KKyAgICBEaWUgaGllciBhdWZnZWZ1ZWhydGVuIEtvbXBsZXhiZWlzcGllbGUgc2luZCB6dW0gVmVyc3RhZW5kbmlzIGdlZGFjaHQsCisgICAgZGFoZXIgZnVlaHJlbiBzaWUgb2Z0IEFsdGVybmF0aXZlbiBhdWYuIERpZSBsZXR6dGUgVmFyaWFudGUgaXN0IGRhbm4KKyAgICBqZXdlaWxzIGRpZWplbmlnZSwgd2VsY2hlIGFtIGxlaWNodGVzdGVuIGRhcyBQcm9ibGVtIGxvZXNlbiBrb2VubnRlLgorICAgIEZhbGxzIGRpZSBlaW5lbSB6dSBrb21wbGV4IGlzdCwgaGlsZnQgdmllbGxlaWNodCBkaWUgdm9ybGV0enRlLgorCitCRUlTUElFTEUKKyAgICAvLyBTSU1QRUw6IGdhbnogc2ltcGVsLCBiZWluYWhlIHdpZSBhZGRfYWN0aW9uCisgICAgQWRkQ21kKCJiZWZpZWhsIiwiYWN0aW9uX2JlZmVobGVuIik7CisgICAgLi4uCisgICAgaW50IGFjdGlvbl9iZWZlaGxlbihzdHJpbmcgc3RyKSB7CisgICAgIGlmKCFzdHIgfHwgIXN0cmxlbihzdHIpKQorICAgICAgLy8gRmVobGVybWVsZHVuZywgZmFsbHMgZ2FyIGtlaW5lIEZ1bmt0aW9uIDEgZGFmdWVyIHp1cnVlY2tnaWJ0CisgICAgICBub3RpZnlfZmFpbCgiV2FzIHdpbGxzdCBkdSBiZWZlaGxlbj8hXG4iKTsKKyAgICAgZWxzZSB7CisgICAgICB3cml0ZSgiRHUgYmVmaWVobHN0IFwiIitzdHIrIlwiLCB1bmQgYWxsZSBmb2xnZW4hXG4iKTsKKyAgICAgIHNheShUUC0+TmFtZShXRVIpKyIgYmVmaWVobHQgXCIiK3N0cisiXCIsIHVuZCBkdSBmb2xnc3QhXG4iKTsKKyAgICAgIHJldHVybiAxOwkJLy8gRVJGT0xHIC0gQWJicnVjaCBkZXIgS29tbWFuZG9hdXN3ZXJ0dW5nCisgICAgIH0KKyAgICAgcmV0dXJuIDA7CQkvLyBNSVNTRVJGT0xHIC0gRmVobGVybWVsZHVuZyBvYmVuIGdlc2V0enQKKyAgICB9CisKKyAgICAvLyBTSU1QRUwgLi4gd2VpdGVyZSBCZWlzcGllbGUKKyAgICBBZGRDbWQoKHsia2xldHRlciIsImtsZXR0ZXJlIn0pLCJhY3Rpb25fa2xldHRlcm4iICk7CisgICAgQWRkQ21kKCh7InJlbm4iLCJyZW5uZSJ9KSwjJ2FjdGlvbl9yZW5uZW4pOworCisgICAgLy8gUkVHRUxOOiBlaW5lIGtvbXBsZXhlcmUgUmVnZWwKKyAgICBBZGRDbWQoImxvZXNjaHxsb2VzY2hlfGVyc3RpY2tlJmZldWVyfGJyYW5kfGZsYW1tZW4mZGVja2V8d29sbGRlY2tlIiwKKyAgICAgICAgICAgImFjdGlvbl9sb2VzY2hlbiIsCisgICAgICAgICAgICJXYXMgd2lsbHN0IGR1IGxvZXNjaGVuP3xXb21pdCB3aWxsc3QgZHUgbG9lc2NoZW4/Iik7CisKKyAgICAvLyBSRUdFTE46IG1pdCBQbGF0emhhbHRlcm4gaW0gRmVobGVyc3RyaW5nCisgICAgQWRkQ21kKCJzcHJpbmd8c3ByaW5nZXxodWVwZnxodWVwZmUmdm9ufHZvbSZiYXVtfGFzdHxlaWNoZSIsCisgICAgICAgICAgICMnYWN0aW9uX2h1ZXBmZSwKKyAgICAgICAgICAgIldpbGxzdCBkdSB2b24gZXR3YXMgQHZlcmJlbj98Vm9uIHdvIHdpbGxzdCBkdSBAdmVyYmVuPyIpOworCisgICAgLy8gU0NITEVDSFQ6IGVpbmUgdW5zY2hhcmZlIFJlZ2VsIC0gc2llIHNvbGx0ZW4gZWluZSBBdXNuYWhtZSBzZWluICghKQorICAgIEFkZENtZCgia2xldHRlciIsImZ1bl9rbGV0dGVybiIsMSk7CisKKyAgICAvLyBGQUxTQ0g6IHNlaHIgc2NobGVjaHQsIGtlaW4gSW1wZXJhdGl2IHZlcndlbmRldAorICAgIC8vIGF1c3NlcmRlbSBzb2xsdGUgbWFuIGZ1ZXIgc29sY2hlIFN5bnRheGVuIEFkZFJlYWREZXRhaWwgYmVudXR6ZW4KKyAgICBBZGRDbWQoImxlc2UiLCJldmFsX2xlc2VuIik7CisKKyAgICAvLyBTSU1QTEUgUkVHRUwKKyAgICBzdGF0aWMgaW50IGFjdGlvbl9qdW1wKHN0cmluZyBzdHIpOyAgICAgICAgLy8gUHJvdG90eXBlICh3ZWdlbiBjbG9zdXJlKQorICAgIC4uLgorICAgIEFkZENtZCgic3ByaW5nfHNwcmluZ2V8aHVlcGZ8aHVlcGZlJnZvbiZiYXVtfGFzdCIsIydhY3Rpb25fanVtcCwKKyAgICAgICAgICAgIldpbGxzdCBEdSB2b24gZXR3YXMgQHZlcmJlbj98V292b24gd2lsbHN0IER1IEB2ZXJiZW4/Iik7CisgICAgLi4uCisgICAgc3RhdGljIGludCBhY3Rpb25fanVtcChzdHJpbmcgc3RyKSB7CisgICAgICB3cml0ZShicmVha19zdHJpbmcoIkR1IHNwcmluZ3N0IHZvbSBCYXVtIHVuZCBrb21tc3QgaGFydCBhdWYhIiw3OCkpOworICAgICAgdGhpc19wbGF5ZXIoKS0+bW92ZSgoWFhYUk9PTSsiYm9kZW4iKSwgTV9HTywgMCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgInNwcmluZ3QgdW5lbGVnYW50IHZvbSBCYXVtIiwiZmFlbGx0IHZvbSBCYXVtIik7CisgICAgICB0aGlzX3BsYXllcigpLT5EZWZlbmQocmFuZG9tKDEwMCksKHtEVF9CTFVER0VPTn0pLChbU1BfUkVDVVJTSVZFOjFdKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzX29iamVjdCgpKTsKKyAgICAgIHJldHVybiAxOworICAgIH0KKworICAgIC8vIFNJTVBMRSBSRUdFTCBPSE5FIE1FVEhPREUKKyAgICAvLyBtaXQgUmVnZWxuIGthbm4gbWFuIGF1Y2ggQWt0aXZpdGFldGVuIGltIFJhdW0gZXJsYXViZW4sIG9obmUgZWluZQorICAgIC8vIEZ1bmt0aW9uIGF1ZnJ1ZmVuIHp1IG11ZXNzZW46IGRpZSBsZXR6dGUgUmVnZWwgaXN0IGZ1ZXIgU3BpZWxlcgorICAgIC8vIHVubW9lZ2xpY2ggenUgZXJmdWVsbGVuLCBkaWUgZGF6dWdlaG9lcmlnZSBGZWhsZXJtZWxkdW5nIHdpcmQgbWl0CisgICAgLy8gZGVtIF4gKHdyaXRlLUZsYWcpIHZlcnNlaGVuIHVuZCBlbnRzcHJlY2hlbmQgYW4gZGVuIFNwaWVsZXIKKyAgICAvLyAodW5kIGRlbiBSYXVtIChoaW50ZXIgZGVtIF4pKSBhdXNnZWdlYmVuCisgICAgQWRkQ21kKCJzcHJpbmd8c3ByaW5nZSZoZXJ1bnRlcnxydW50ZXImXG5cYmltcG9zc2libGUiLDAsCisgICAgICAgICAgICJXb2hpbiBvZGVyIHdvdm9uIHdpbGxzdCBEdSBzcHJpbmdlbj98IgorICAgICAgICAgICAiRHUgc3ByaW5nc3Qgdm9tIEJhdW0gdW5kIGtvbW1zdCBoYXJ0IGF1Zi5eIgorICAgICAgICAgICAiQFdFUjEgc3ByaW5ndCB2b20gQmF1bSB1bmQga29tbXQgaGFydCBhdWYuIik7CisKKyMjIEtvbXBsZXhiZWlzcGllbDogUmVnZWxuIG1pdCBGZWhsZXJtZWxkdW5nZW4gIyMKKyAjIyBWYXJpYW50ZSAxLCBPSE5FIFJFR0VMTiAjIworICAgIC8vIGJlaSBOaWNodHZlcndlbmR1bmcgdm9uIFJlZ2VsbiBtdXNzIG1hbiBQYXJhbWV0ZXIgc2VsYnN0IGF1c3dlcnRlbgorICAgIEFkZENtZCgoeyJib2hyIiwiYm9ocmUifSksIydhY3Rpb25fYm9ocmVuKTsKKyAgICAuLi4KKyAgICBwcml2YXRlIHN0YXRpYyBpbnQgYWN0aW9uX2JvaHJlbihzdHJpbmcgc3RyKSB7CisgICAgICBzdHJpbmcgKnRtcDsKKyAgICAgIG5vdGlmeV9mYWlsKCJXbyB3aWxsc3QgKGV0d2FzKSBEdSBib2hyZW4/XG4iKTsKKyAgICAgIGlmKCFzdHIpIHJldHVybiAwOyAgICAgICAvLyBUamEsIGtlaW5lIEFyZ3VtZW50ZSAuLi4KKyAgICAgIHRtcD1leHBsb2RlKHN0ciwiICIpOyAgICAvLyBuYWNoICIgIiBpbiBBcmd1bWVudC1BcnJheSBhdWZzcGFsdGVuCisgICAgICBpZigoaT1tZW1iZXIodG1wLCJsb2NoIikpPj0wKSB7IC8vIGFoYSwgYWIgamV0enQgdWViZXJuZWhtZW4gd2lyIDopCisgICAgICAgaWYoKGo9bWVtYmVyKHRtcFsoaSsxKS4uXSwiaW4iKSk8MCAmJgorICAgICAgICAgIChqPW1lbWJlcih0bXBbKGkrMSkuLl0sImR1cmNoIikpPDApCisgICAgICAgICB3cml0ZSgiV2lsbHN0IER1IGRhcyBMb2NoIGluIGV0d2FzIGJvaHJlbj9cbiIpOworICAgICAgICBlbHNlIGlmKChpPW1lbWJlcih0bXBbKGorMSkuLl0sImJvZGVuIikpPDAgJiYKKyAgICAgICAgICAgICAgICAoaT1tZW1iZXIodG1wWyhqKzEpLi5dLCJlcmRlIikpPDApCisgICAgICAgICB3cml0ZSgiSW4vRHVyY2ggd2FzIHdpbGxzdCBkdSBkYXMgTG9jaCBib2hyZW4/XG4iKTsKKyAgICAgICAgZWxzZSB7CisgICAgICAgICB3cml0ZSgiRHUgYm9ocnN0IGVpbiBMb2NoIGluIGRlbiBCb2Rlbi5cbiIpOworICAgICAgICAgc2F5KHRoaXNfcGxheWVyKCktPk5hbWUoV0VSKSsiIGJvaHJ0IGVpbiBMb2NoIGluIGRlbiBCb2Rlbi5cbiIpOworICAgICAgICB9CisgICAgICAgIHJldHVybiAxOyAgICAgIC8vICJib2hyZSBsb2NoIiB3YXIgc28gZWluZGV1dGlnLCBkYXNzIG51ciBkaWVzZQorICAgICAgICAgICAgICAgICAgICAgICAvLyBNZXRob2RlIGdlbWVpbnQgc2VpbiBrb25udGUsIGFsc28gYnJlY2hlbiB3aXIgZGllCisgICAgICAgICAgICAgICAgICAgICAgIC8vIHdlaXRlcmUgQXVzd2VydHVuZyBhdWYgamVkZW4gRmFsbCBhYiAodW5kIGdlYmVuCisgICAgICAgICAgICAgICAgICAgICAgIC8vIGVpbmUgd3JpdGUtRmVobGVybWVsZHVuZykKKyAgICAgIH0gLy8gZW5kIGlmKC4uLiJsb2NoIikKKyAgICAgIHJldHVybiAwOyAgICAgICAgLy8gImJvaHJlIiBhbGxlaW4gbXVzcyBuaWNodCBkaWVzZSBNZXRob2RlIG1laW5lbiwKKyAgICAgICAgICAgICAgICAgICAgICAgLy8gYWxzbyBudXIgb2JpZ2Ugbm90aWZ5X2ZhaWwoKS1NZWxkdW5nLCBmYWxscworICAgICAgICAgICAgICAgICAgICAgICAvLyBzaWNoIG5hY2ggZGllc2VyIE1ldGhvZGUgZ2FyIGtlaW5lIHNvbnN0CisgICAgICAgICAgICAgICAgICAgICAgIC8vIGFuZ2VzcHJvY2hlbiBmdWVobHQKKyAgICB9IC8vIGVuZCBmdW4KKworICMjIFZhcmlhbnRlIDFhLCBPSE5FIFJFR0VMTiAjIworICAgIC8vIHByaW56aXBpZWxsIGtvZW5udGUgZGllIE1ldGhvZGUgYWN0aW9uX2JvaHJlbiBhdWNoIHNvCisgICAgLy8gYXVzc2VoZW4sIGlzdCBhYmVyIG5pY2h0IGdhbnogc28gZmxleGliZWw6CisgICAgcHJpdmF0ZSBzdGF0aWMgaW50IGFjdGlvbl9ib2hyZW4oc3RyaW5nIHN0cikgeworICAgICBzdHJpbmcgdG1wOworICAgICBpZighc3RyIHx8IChzcHJpbnRmKHN0ciwibG9jaCBpbiBlcmRlJXMiLHRtcCkhPTEgJiYKKyAgICAgICAgICAgICAgICAgc3ByaW50ZihzdHIsImxvY2ggZHVyY2ggZXJkZSVzIix0bXApIT0xICYmCisgICAgICAgICAgICAgICAgIHNwcmludGYoc3RyLCJsb2NoIGluIGJvZGVuJXMiLHRtcCkhPTEgJiYKKyAgICAgICAgICAgICAgICAgc3ByaW50ZihzdHIsImxvY2ggZHVyY2ggYm9kZW4lcyIsdG1wKSE9MSkpCisgICAgICBub3RpZnlfZmFpbCgiV2lsbHN0IER1IGluIGlyZ2VuZHdhcyBlaW4gTG9jaCBib2hyZW4/XG4iKTsKKyAgICAgZWxzZSB7CisgICAgICAuLi4KKyAgICAgIHJldHVybiAxOworICAgICB9CisgICAgIHJldHVybiAwOworICAgIH0KKworICMjIFZhcmlhbnRlIDIsIE1JVCBSRUdFTCAjIworICAgIC8vIGRhcyBnbGVpY2hlIGluIGV0d2EgbWFsIGFscyBlaW5mYWNoZSBSZWdlbAorICAgIEFkZENtZCgiYm9ocnxib2hyZSZsb2NoJmlufGR1cmNoJmVyZGV8Ym9kZW4iLCMnYWN0aW9uX2JvaHJlbiwKKyAgICAgICAgICAgIldhcyB3aWxsc3QgZHUgKHdvaGluKSBib2hyZW4/fCIKKyAgICAgICAgICAgIldpbGxzdCBkdSBkYXMgTG9jaCBpbiBldHdhcyBib2hyZW4/fCIKKyAgICAgICAgICAgIldvaGluIHdpbGxzdCBkdSBkYXMgTG9jaCBib2hyZW4/Iik7CisgICAgLi4uCisgICAgcHJpdmF0ZSBzdGF0aWMgaW50IGFjdGlvbl9ib2hyZW4oc3RyaW5nIHN0ciwgbWl4ZWQgKnBhcmFtKSB7CisgICAgIHdyaXRlKCJEdSBib2hyc3QgZWluIExvY2ggaW4gZGVuIEJvZGVuLlxuIik7CisgICAgIHNheSh0aGlzX3BsYXllcigpLT5OYW1lKFdFUikrIiBib2hydCBlaW4gTG9jaCBpbiBkZW4gQm9kZW4uXG4iKTsKKyAgICAgLi4uCisgICAgIHJldHVybiAxOworICAgIH0KKworICMjIFZhcmlhbnRlIDMsIE1JVCBSRUdFTCBVTkQgRkVITEVSTUVMRFVORyAjIworICAgIC8vIHVuZCBudW4gbWl0IEZlaGxlcm1lbGR1bmdlbiBtaXQgRXJzZXR6dW5nZW4sIHNvIGRhc3Mgd2lyIG1laHIKKyAgICAvLyBhdWYgZGllIEVpbmdhYmVuIGRlcyBTcGllbGVycyBlaW5nZWhlbgorICAgIEFkZENtZCgiYm9ocnxib2hyZSZsb2NoJmlufGR1cmNoJmVyZGV8Ym9kZW4iLCMnYWN0aW9uX2JvaHJlbiwKKyAgICAgICAgICAgIldhcyB3aWxsc3QgZHUgKHdvaGluKSBAdmVyYmVuP3wiCisgICAgICAgICAgICJXaWxsc3QgZHUgZGFzIExvY2ggaW4gZXR3YXMgQHZlcmJlbj98IgorICAgICAgICAgICAiQFdFUjMgd2FzIHdpbGxzdCBkdSBkYXMgTG9jaCBAdmVyYmVuPyIpOworICAgIC4uLgorICAgIHByaXZhdGUgc3RhdGljIGludCBhY3Rpb25fYm9ocmVuKHN0cmluZyBzdHIsIG1peGVkICpwYXJhbSkgLi4uCisKKyAjIyBWYXJpYW50ZSA0LCBNSVQgUkVHRUwsIEZFSExFUk1FTERVTkcgVU5EIFJFVFVSTiAxICMjCisgICAgLy8gaW4gVmFyaWFudGUgMSBrYW0gc2lubnZvbGxlcndlaXNlIHNlaHIgZnJ1ZWggZGVyIEFiYnJ1Y2ggbWl0CisgICAgLy8gInJldHVybiAxOyIgdW5kIGRpZSBBdXNnYWJlIHZvbiB3cml0ZS1GZWhsZXJtZWxkdW5nZW4sCisgICAgLy8gZGFzIGtvZW5uZW4gd2lyIGF1Y2gKKyAgICBBZGRDbWQoImJvaHJ8Ym9ocmUmbG9jaCZpbnxkdXJjaCZlcmRlfGJvZGVuIiwjJ2FjdGlvbl9ib2hyZW4sCisgICAgICAgICAgICJXYXMgd2lsbHN0IGR1ICh3b2hpbikgQHZlcmJlbj98IgorICAgICAgICAgICAiV2lsbHN0IGR1IGRhcyBMb2NoIGluIGV0d2FzIEB2ZXJiZW4/XnwiCisgICAgICAgICAgICJAV0VSMyB3YXMgd2lsbHN0IGR1IGRhcyBMb2NoIEB2ZXJiZW4/XiIpOworICAgIC4uLgorICAgIHByaXZhdGUgc3RhdGljIGludCBhY3Rpb25fYm9ocmVuKHN0cmluZyBzdHIsIG1peGVkICpwYXJhbSkgLi4uCisKKyAjIyBWYXJpYW50ZSA1LCBNSVQgUkVHRUwsIEZFSExFUk1FTERVTkcsIFJFVFVSTiAxLCBPSE5FIEZVTiAjIworICAgIC8vIHVuZCBmYWxscyBpbiBhY3Rpb25fYm9ocmVuKCkgbmljaHRzIGF1c3NlciBBdXNnYWJlbiBwYXNzaWVydCwga29lbm5lbgorICAgIC8vIHdpciB1bnMgZGllIGF1Y2ggZ2FueiBzcGFyZW4gaW5kZW0gd2lyIGVpbmUgbmljaHRlcmZ1ZWxsYmFyZSBSZWdlbAorICAgIC8vIHNhbXQgRmVobGVybWVsZHVuZyBiYXVlbgorICAgIEFkZENtZCgiYm9ocnxib2hyZSZsb2NoJmlufGR1cmNoJmVyZGV8Ym9kZW4mXG5pbXBvc3NpYmxlIiwwLAorICAgICAgICAgICAiV2FzIHdpbGxzdCBkdSAod29oaW4pIEB2ZXJiZW4/fCIKKyAgICAgICAgICAgIldpbGxzdCBkdSBkYXMgTG9jaCBpbiBldHdhcyBAdmVyYmVuP158IgorICAgICAgICAgICAiQFdFUjMgd2FzIHdpbGxzdCBkdSBkYXMgTG9jaCBAdmVyYmVuP158IgorICAgICAgICAgICAiRHUgQHZlcmJzdCBlaW4gTG9jaCBAV0VSMyBkZW4gQm9kZW4uXkBXRVIxIEB2ZXJidCAiCisgICAgICAgICAgICJlaW4gTG9jaCBAV0VSMyBkZW4gQm9kZW4uIik7CisKKyAgIC0tLSBFbmRlIEtvbXBsZXhiZWlzcGllbCBSZWdlbG4gbWl0IEZlaGxlcm1lbGR1bmdlbiAtLS0KKworIyMgS29tcGxleGJlaXNwaWVsOiBTcGV6aWFscmVnZWxuIEBQUkVTRU5UIHVuZCBASUQgIyMKKyAjIyBWYXJpYW50ZSAxLCBPSE5FIFJFR0VMTiAjIworICAgIC8vIG9mdCBhZ2llcmVuIEtvbW1hbmRvcyBhdWYgT2JqZWt0ZW4gaW0gUmF1bSwgZGllc2UgbXVlc3NlbiBkYWJlaSBwZXIKKyAgICAvLyBwcmVzZW50KCkgaWRlbnRpZml6aWVydCB3ZXJkZW46CisgICAgLy8gQmVpc3BpZWwgaXN0IGVpbiBHZWxkYXV0b21hdCAoZGVuIG1hbiBiZXNzZXIgbWl0IGVpbmVtIENvbnRhaW5lcgorICAgIC8vIG1pdCBQcmV2ZW50SW5zZXJ0KCkgYmFzdGVsbiBzb2xsdGUpCisgICAgQWRkQ21kKCh7InN0b3BmIiwic3RvcGZlIn0pLCMnYWN0aW9uX3N0b3BmKTsKKyAgICAuLi4KKyAgICBwcml2YXRlIHN0YXRpYyBpbnQgYWN0aW9uX3N0b3BmKHN0cmluZyBzdHIpIHsKKyAgICAgc3RyaW5nIHRtcCx0bXAyOworICAgICBvYmplY3QgbzsKKworICAgICBpZihzdHIgJiYgKHNwcmludGYoIiVzIGluIGF1dG9tYXQlcyIsdG1wLHRtcDIpPT0yIHx8CisgICAgICAgICAgICAgICAgc3ByaW50ZigiJXMgaW4gZ2VsZGF1dG9tYXQlcyIsdG1wLHRtcDIpPT0yIHx8CisgICAgICAgICAgICAgICAgc3ByaW50ZigiJXMgaW4gYmFua29tYXQlcyIsdG1wLHRtcDIpPT0yKSB7CisgICAgICBvPXByZXNlbnQodG1wLHRoaXNfcGxheWVyKCkpOworICAgICAgaWYobykgeworICAgICAgIGlmKG8tPlF1ZXJ5UHJvcCguLi4pKSB7CisgICAgICAgIHdyaXRlKGJyZWFrX3N0cmluZygKKyAgICAgICAgICJEdSBzdG9wZnN0ICIrby0+bmFtZShXRU4sMSkrIiBpbiBkZW4gQXV0b21hdGVuLiIsNzgpKTsKKyAgICAgICAgc2F5KC4uLik7CisgICAgICAgfSBlbHNlIHsKKyAgICAgICAgd3JpdGUoYnJlYWtfc3RyaW5nKAorICAgICAgICAgIkR1IHZlcnN1Y2hzdCAiK28tPm5hbWUoV0VOLDEpKyIgaW4gZGVuIEF1dG9tYXRlbiB6dSBzdG9wZmVuLCAiCisgICAgICAgICAiYWJlciAiK28tPlF1ZXJ5UHJvbm91bihXRVIpKyIgcGFzc3QgbmljaHQgaGluZWluLiIsNzgpKTsKKyAgICAgICAgc2F5KC4uLik7CisgICAgICAgfQorICAgICAgfSBlbHNlIHsKKyAgICAgICB3cml0ZSgiV2FzIHdpbGxzdCBkdSBpbiBkZW4gQXV0b21hdGVuIHN0b3BmZW4/XG4iKTsKKyAgICAgICBzYXkoLi4uLik7CisgICAgICB9CisgICAgICByZXR1cm4gMTsKKyAgICAgfQorICAgICBub3RpZnlfZmFpbCgiV2FzIHdpbGxzdCBkdSB3b2hpbiBzdGVja2VuP1xuIik7CisgICAgIHJldHVybiAwOworICAgIH0KKworICMjIFZhcmlhbnRlIDIsIE1JVCBSRUdFTCAjIworICAgIC8vIGVpbmVyc2VpdHMga29lbm5lbiB3aXIgZGFzIEZpbmRlbiB2b24gT2JqZWt0ZW4gaW4gSW52IHVuZCBFbnYKKyAgICAvLyBpbnRlZ3JpZXJlbiB1bmQgdW5zIGFuZGVyZXJzZWl0cyBkYXMgQXVmemFlaGxlbiBhbGxlciBJRHMgZGVzCisgICAgLy8gQXV0b21hdGVuIGVyc3BhcmVuCisgICAgQWRkQ21kKCJzdGVja3xzdGVja2UmQFBSRVNFTlQmaW4mQElEIiwjJ2FjdGlvbl9zdG9wZiwKKyAgICAgICAgICAgIldhcyB3aWxsc3QgZHUgd29oaW4gc3RvcGZlbj98IgorICAgICAgICAgICAiV2lsbHN0IGR1IEBXRU4yIGluIGV0d2FzIHN0b3BmZW4/fCIKKyAgICAgICAgICAgIldvaGluZWluIHdpbGxzdCBkdSBAV0VOMiBzdG9wZmVuPyIpOworICAgIC4uLgorICAgIC8vIGRhYmVpIHdlcmRlbiB3aWUgaW1tZXIgZGllIGdlZnVuZGVuIE1hdGNoZXMgYWxzIFBhcmFtZXRlcmFycmF5CisgICAgLy8gdWViZXJnZWJlbiAuLi4gdW5kIGRpZSBAUFJFU0VOVCB1bmQgQElEIGFscyBPYmpla3RlIQorICAgIHByaXZhdGUgc3RhdGljIGludCBhY3Rpb25fc3RvcGYoc3RyaW5nIHN0ciwgbWl4ZWQgKnBhcmFtKSB7CisgICAgIGlmKHBhcmFtWzBdLT5RdWVyeVByb3AoLi4uKSkgeworICAgICAgd3JpdGUoYnJlYWtfc3RyaW5nKAorICAgICAgICJEdSBzdG9wZnN0ICIrcGFyYW1bMF0tPm5hbWUoV0VOLDEpKyIgaW4gZGVuIEF1dG9tYXRlbi4iLDc4KSk7CisgICAgICBzYXkoLi4uKTsKKyAgICAgfSBlbHNlIHsKKyAgICAgIHdyaXRlKGJyZWFrX3N0cmluZygKKyAgICAgICAiRHUgdmVyc3VjaHN0ICIrcGFyYW1bMF0tPm5hbWUoV0VOLDEpKyIgaW4gZGVuIEF1dG9tYXRlbiB6dSAiCisgICAgICAgInN0b3BmZW4sIGFiZXIgIitwYXJhbVswXS0+UXVlcnlQcm9ub3VuKFdFUikrIiBwYXNzdCBuaWNodCAiCisgICAgICAgImhpbmVpbi4iLDc4KSk7CisgICAgICBzYXkoLi4uKTsKKyAgICAgfQorICAgICByZXR1cm4gMTsKKyAgICB9CisKKyAgIC0tLSBFbmRlIEtvbXBsZXhiZWlzcGllbCBTcGV6aWFscmVnZWxuIEBQUkVTRU5UIHVuZCBASUQgIC0tLQorCisjIyBLb21wbGV4YmVpc3BpZWw6IGdsZWljaGVzIFZlcmIsIG1laHJlcmUgUmVnZWxuICMjCisgLy8gRGFzIFByb2JsZW0gbWVocmVyZXIgUmVnZWxuIGZ1ZXIgZWluIEtvbW1hbmRvdmVyYiBiZXN0ZWh0IGRhcmluLCBkYXNzCisgLy8gbGV0enRsaWNoIG51ciBlaW5lIGRlciBGZWhsZXJtZWxkdW5nZW4genVtIFRyYWdlbiBrb21tdCAtIHdlbGNoZQorIC8vIGdlbmF1IGlzdCBldHdhcyB2YWdlLgorIC8vIERhYmVpIGthbm4gbWFuIHNpY2ggYXVmIGVpbmVzIHZlcmxhc3NlbjoganVlbmdlcmUgQWRkQ21kIHdlcmRlbgorIC8vIHp1ZXJzdCBhdXNnZXdlcnRldC4gV2VubiBzaWNoIGRhcyBhZW5kZXJ0LCB0cmV0ZXQgZXVyZW4gRU0uCisKKyAjIyBQcm9ibGVtIDE6IE1laHJlcmUgUmVnZWxuIHdlaWwgbWVocmVyZSBad2Vja2UgIyMKKyAgICAjIyBWYXJpYW50ZSAxIC0gR0xFSUNITEFVVEVOREUgRkVITEVSTUVMRFVORworICAgIC8vIGZ1ZXIgYWxsZXMgd2lyZCBlaW5lIGlkZW50aXNjaGUgRmVobGVybWVsZHVuZyBnZXNldHp0LCBkYXMgaXN0CisgICAgLy8gbmF0dWVybGljaCBuaWNodCBzZWhyIGZsZXhpYmVsIG9kZXIgc2Nob2VuCisgICAgQWRkQ21kKCJrcmllY2h8a3JpZWNoZSZob2NofGhpbmF1ZnxoaW5hdXN8aGVyYXVzfHJhdXMiLCMncmVzdWx0X2tyaWVjaCwKKyAgICAgICAgICAgIldvaGluIHdpbGxzdCBEdSBrcmllY2hlbj8iKTsKKyAgICBBZGRDbWQoImtyaWVjaHxrcmllY2hlJm5hY2gmb2JlbiIsIydyZXN1bHRfa3JpZWNoLAorICAgICAgICAgICAiV29oaW4gd2lsbHN0IER1IGtyaWVjaGVuPz98V29oaW4gd2lsbHN0IER1IGtyaWVjaGVuPyIpOworICAgIEFkZENtZCgia3JpZWNofGtyaWVjaGUmYXVzJmxvY2h8Z3J1YmV8ZmFsbGUiLCMncmVzdWx0X2tyaWVjaCk7CisgICAgICAgICAgICJXb2hpbiB3aWxsc3QgRHUga3JpZWNoZW4/fFdvaGluIHdpbGxzdCBEdSBrcmllY2hlbj8iKTsKKworICAgIC8vIG9kZXIgbWFuIHZlcnN1Y2h0IGVpbmUgYmVzc2VyZSBSZWdlbCB6dSBzY2hhZmZlbiwgd2FzIGhpZXIgZHVyY2gKKyAgICAvLyBkaWUgTW9lZ2xpY2hrZWl0IHZvbiB6d2VpIG9kZXIgZHJlaSBQYXJhbWV0ZXIgdW5tb2VnbGljaCBpc3QKKworICAgICMjIFZhcmlhbnRlIDIgLSBFSUdFTkUgQVVTV0VSVFVORworICAgIC8vIGVzIGJpZXRldCBzaWNoIGFsc28gZWlnZW5lIFdlaXRlcmF1c3dlcnR1bmcgYW4sIHdhcyBkdXJjaCBkaWUKKyAgICAvLyBVZWJlcmdhYmUgZGVyIGdldHJpZ2dlcnRlbiBWZXJiZW4gZXJsZWljaHRlcnQgd2lyZDoKKyAgICBBZGRDbWQoImtyaWVjaHxrcmllY2hlJmhvY2h8aGluYXVmfGhpbmF1c3xoZXJhdXN8cmF1c3xhdXN8bmFjaCIsCisgICAgICAgICAgICMncmVzdWx0X2tyaWVjaCwKKyAgICAgICAgICAgIldvaGluIHdpbGxzdCBEdSBrcmllY2hlbj8iKTsKKyAgICAuLi4KKyAgICBzdGF0aWMgaW50IHJlc3VsdF9rcmllY2goc3RyaW5nIHN0ciwgbWl4ZWQgKmV4dHJhKSB7CisgICAgICBpZihtZW1iZXIoZXh0cmEsImF1cyIpPj0wICYmCisgICAgICAgICAhc2l6ZW9mKCh7c3RyfSksIiouXFw8KGhvZWhsZXxncnViZXxmYWxsZSlcXD4uKiIpKQorICAgICAgIG5vdGlmeV9mYWlsKCJXb3JhdXMgd2lsbHN0IER1IGtyaWVjaGVuP1xuIik7CisgICAgICBlbHNlIGlmKG1lbWJlcihleHRyYSwibmFjaCIpPj0wICYmIHN0cnN0cihzdHIsIm9iZW4iKTwwKQorICAgICAgIG5vdGlmeV9mYWlsKCJJbiB3ZWxjaGUgUmljaHR1bmcgd2lsbHN0IER1IGtyaWVjaGVuP1xuIik7CisgICAgICBlbHNlIGlmKHRoaXNfcGxheWVyKCktPlF1ZXJ5QXR0cmlidXRlKEFfREVYKT4xMCB8fAorICAgICAgICAgICAgICBtZW1iZXIoaG9sZGluZ19yb290LHRoaXNfcGxheWVyKCkpKSB7CisgICAgICAgIHdyaXRlKCJEdSBrcmllY2hzdCBtaXQgTXVlaGUgaGVyYXVzLlxuIik7CisgICAgICAgIHRoaXNfcGxheWVyKCktPm1vdmUoKFhYWFJPT00rImRyYXVzc2VuIiksIE1fR08sIDAsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgImtyaWVjaHQgbWl0IE11ZWhlIGF1cyBkZXIgR3J1YmUiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICJrcmllY2h0IGF1cyBlaW5lciBHcnViZSIpOworICAgICAgICByZXR1cm4gMTsKKyAgICAgIH0gZWxzZQorICAgICAgICB3cml0ZSgiRHUgYmlzdCB6dSB1bmdlc2NoaWNrdCwgaGFsdCBEaWNoIGlyZ2VuZHdvIGZlc3QuXG4iKTsKKyAgICAgICAgcmV0dXJuIDE7CisgICAgICB9CisgICAgICByZXR1cm4gMDsKKyAgICB9CisgICAgLy8gKG9iIHNpY2ggZGVyIEF1ZndhbmQgZnVlciBkaWVzZSBCZWlzcGllbHN5bnRheCBsb2hudCBpc3QgZnJhZ2xpY2gpCisKKyAjIyBQcm9ibGVtIDI6IG1laHJlcmUgUmVnZWxuLCB3ZWlsIG9wdGlvbmFsZSBQYXJhbWV0ZXIgIyMKKyAgICAvLyBNYW5jaG1hbCB3aWxsIG1hbiBvcHRpb25hbGUgUGFyYW1ldGVyIGVybGF1YmVuLCBkaWUgYWJlciBlaW5lCisgICAgLy8gV2lya3VuZyB6ZWlnZW4gc29sbGVuOgorICAgIEFkZENtZCgic2NobGFnfHNjaGxhZ2UmQElEJmhhcnQiLCMnYWN0aW9uX3NjaGxhZ19oYXJ0LAorICAgICAgICAgICAiV2FzIG9kZXIgd2VuIHdpbGxzdCBkdSBAdmVyYmVuP3wiCisgICAgICAgICAgICJXaWUgd2lsbHN0IGR1IEBXRU4yIHNjaGxhZ2VuPyIpOworICAgIEFkZENtZCgic2NobGFnfHNjaGxhZ2UmQElEIiwjJ2FjdGlvbl9zY2hsYWcsCisgICAgICAgICAgICJXYXMgb2RlciB3ZW4gd2lsbHN0IGR1IEB2ZXJiZW4/Iik7CisKKyAgICAvLyBEYSBqdWVuZ2VyZSBBZGRDbWQgYWVsdGVyZW4gdm9yZ2VoZW4sIHdpcmQgZGllIGtvbXBsZXhlcmUgUmVnZWwgc2FtdAorICAgIC8vIGlocmVyIEZlaGxlcm1lbGR1bmcgbmllIGF1c2dld2VydGV0LCBkYSBlaW4gInNjaGxhZyBiYWxsIGhhcnQiIGF1Y2gKKyAgICAvLyBkaWUgendlaXRlIFJlZ2VsIHRyaWdnZXJ0LgorCisgICAgLy8gYW5kZXJzIGhlcnVtOgorICAgIEFkZENtZCgic2NobGFnfHNjaGxhZ2UmQElEIiwjJ2FjdGlvbl9zY2hsYWcsCisgICAgICAgICAgICJXYXMgb2RlciB3ZW4gd2lsbHN0IGR1IEB2ZXJiZW4/Iik7CisgICAgQWRkQ21kKCJzY2hsYWd8c2NobGFnZSZASUQmaGFydCIsIydhY3Rpb25fc2NobGFnX2hhcnQsCisgICAgICAgICAgICJXYXMgb2RlciB3ZW4gd2lsbHN0IGR1IEB2ZXJiZW4/fCIKKyAgICAgICAgICAgIldpZSB3aWxsc3QgZHUgQFdFTjIgc2NobGFnZW4/Iik7CisKKyAgICAvLyBKZXR6dCB3aXJkIGRpZSBrb21wbGV4ZXJlIFJlZ2VsIHp1ZXJzdCB1ZWJlcnBydWVmdCB1bmQgdHJpZ2dlcnQKKyAgICAvLyBhdWNoIGRpZSByaWNodGlnZSBGdW5rdGlvbi4KKyAgICAvLyBMZWlkZXIga29tbXQgZGllIEZlaGxlcm1lbGR1bmcgbmllIHp1bSBUcmFnZW4sIGRlbm4gd2FzIGR1cmNoIFJlZ2VsIDIKKyAgICAvLyBkdXJjaGZhZWxsdCwgdHJpZ2dlcnQgZW50d2VkZXIgUmVnZWwgMSBvZGVyIGZhZWxsdCBhdWNoIGR1cmNoIFJlZ2VsIDEKKyAgICAvLyBkdXJjaCB1bmQgdWViZXJzY2hyZWlidCBkYWJlaSBkaWUgTWVsZHVuZy4KKworICAgIEFkZENtZCgic2NobGFnfHNjaGxhZ2UmQElEIiwjJ2FjdGlvbl9zY2hsYWcsCisgICAgICAgICAgICJXYXMgb2RlciB3ZW4gd2lsbHN0IGR1IHdpZSBAdmVyYmVuPyIpOworICAgIEFkZENtZCgic2NobGFnfHNjaGxhZ2UmQElEJmhhcnQiLCMnYWN0aW9uX3NjaGxhZ19oYXJ0KTsKKworICAgIC8vIEZhc3QgcGVyZmVrdC4gQmVzc2VyIHdpcmQgZXMgbmljaHQuCisKKworICAgIC0tLSBFbmRlIEtvbXBsZXhiZWlzcGllbCBtZWhyZXJlIFJlZ2VsbiAtLS0KKworMTAgSnVuaSAyMDA0IEdsb2luc29uCmRpZmYgLS1naXQgYS9kb2MvbGZ1bi9BZGREZWZlbmRlciBiL2RvYy9sZnVuL0FkZERlZmVuZGVyCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjNlYjc5MjMKLS0tIC9kZXYvbnVsbAorKysgYi9kb2MvbGZ1bi9BZGREZWZlbmRlcgpAQCAtMCwwICsxLDM0IEBACitBZGREZWZlbmRlcigpCisKK0ZVTktUSU9OOgorCXZvaWQgQWRkRGVmZW5kZXIob2JqZWN0IGZyaWVuZCk7CisKK0RFRklOSUVSVCBJTjoKKwkvc3RkL2xpdmluZy9jb21iYXQuYworCitBUkdVTUVOVEU6CisJZnJpZW5kCisJICBPYmpla3QgKG5vcm1hbCBMZWJld2VzZW4pLCB3ZWxjaGVzIHp1a3VlbmZ0aWcgdWViZXIgQW5ncmlmZmUKKwkgIGluZm9ybWllcnQgd2VyZGVuIHNvbGwgb2RlciBkaWVzZSBzb2dhciBhYndlaHJ0LgorCitCRVNDSFJFSUJVTkc6CisJRWluIExlYmV3ZXNlbiwgd2VsY2hlcyBhbmdlZ3JpZmZlbiB3aXJkLCBrYW5uIGFuZGVyZSBPYmpla3RlIHVlYmVyCisJZWluZW4gc29sY2hlbiBBbmdyaWZmIHBlciBJbmZvcm1EZWZlbmQoKSBpbmZvcm1pZXJlbiBvZGVyIGlobmVuCisJc29nYXIgZGllIE1vZWdsaWNoa2VpdCBnZWJlbiwgcGVyIERlZmVuZE90aGVyKCkgZGlyZWt0IGluIGRlbgorCWxhdWZlbmRlbiBBbmdyaWZmIGVpbnp1Z3JlaWZlbiAoU2NoYWVkZW4gYWJ3ZWhyZW4gb2RlciB1bXdhbmRlbG4pLgorCUltIE5vcm1hbGZhbGwgaGFuZGVsdCBlcyBzaWNoIGhpZXJiZWkgdW0gYW5kZXJlIExlYmV3ZXNlbiwgd2VsY2hlCisJYWxzIFZlcnRlaWRpZ2VyIGRlcyBhbmdlZ3JpZmZlbmVuIExlYmV3ZXNlbnMgYXVmdHJldGVuOiBEYWhlciBkZXIKKwlOYW1lIGRlciBGdW5rdGlvbi4KKwlEaWUgT2JqZWt0ZSBzaW5kIGluIEZvcm0gZWluZXMgQXJyYXlzIGluIGRlciBQcm9wZXJ0eSBQX0RFRkVOREVSUworCWFiZ2VzcGVpY2hlcnQgdW5kIGtvZW5uZW4gZG9ydCBhYmdlcnVmZW4gd2VyZGVuLiBOYXR1ZXJsaWNoIGthbm4KKwltYW4gd2VpdGVyZSBPYmpla3RlIGRpcmVrdCBkb3J0IGVpbnRyYWdlbiwgamVkb2NoIHNvbGx0ZSBtYW4gZGllCisJaGllcmZ1ZXIgYmVyZWl0Z2VzdGVsbHRlIEZ1bmt0aW9uZW4gQWRkRGVmZW5kZXIoKSB2ZXJ3ZW5kZW4uCisJWnVtIExvZXNjaGVuIHZvbiBFaW50cmFlZ2VuIGltIEFycmF5IHN0ZWh0IGViZW5mYWxscyBlaW5lIEZ1bmt0aW9uCisJYmVyZWl0OiBSZW1vdmVEZWZlbmRlcigpLgorCitTSUVIRSBBVUNIOgorCVJlbW92ZURlZmVuZGVyKCksIEluZm9ybURlZmVuZCgpLCBEZWZlbmRPdGhlcigpLAorCVBfREVGRU5ERVJTLCAvc3RkL2xpdmluZy9jb21iYXQuYworCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCitMYXN0IG1vZGlmaWVkOiBUaHUgSnVsIDI5IDE4OjQ4OjQ1IDE5OTkgYnkgUGF0cnluCmRpZmYgLS1naXQgYS9kb2MvbGZ1bi9BZGREZXRhaWwgYi9kb2MvbGZ1bi9BZGREZXRhaWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMjI5MTk3YgotLS0gL2Rldi9udWxsCisrKyBiL2RvYy9sZnVuL0FkZERldGFpbApAQCAtMCwwICsxLDkxIEBACitBZGREZXRhaWwoKQorCitGVU5LVElPTjoKKyAgICB2b2lkIEFkZERldGFpbChzdHJpbmd8c3RyaW5nKiBrZXlzLAorICAgICAgICAgICAgICAgICAgIHN0cmluZ3xzdHJpbmcqfG1hcHBpbmd8Y2xvc3VyZSBkZXNjKTsKKworREVGSU5JRVJUIElOOgorICAgIC9zdGQvdGhpbmcvZGVzY3JpcHRpb24uYworCitBUkdVTUVOVEU6CisgICAga2V5cworICAgICAgU3RyaW5nIG9kZXIgQXJyYXkgdm9uIFN0cmluZ3MgbWl0IGRlbiBOYW1lbiBkZXIgRGV0YWlscy4KKyAgICBkZXNjCisgICAgICBTdHJpbmcsIE1hcHBpbmcsIFN0cmluZy1BcnJheSBvZGVyIENsb3N1cmUgbWl0L3p1ciBCZXNjaHJlaWJ1bmcuCisKK0JFU0NIUkVJQlVORzoKKyAgICBEaWUgQmVzY2hyZWlidW5nIGRlciBEZXRhaWxzIDxrZXlzPiB3aXJkIGdlc2V0enQuIFdpZSBkaWUgRGV0YWlscworICAgIGJlaSBkZXIgVW50ZXJzdWNodW5nIGF1c3NlaGVuLCBoYWVuZ3QgaW0gd2VzZW50bGljaGVuIHZvbSBUeXAgZGVyCisgICAgQmVzY2hyZWlidW5nIDxkZXNjPiBhYjoKKyAgICAgIDxkZXNjPiBpc3QgZWluIFN0cmluZy4KKyAgICAgICAgQmVpbSBVbnRlcnN1Y2hlbiB3aXJkIGRpZXNlciBTdHJpbmcgenVydWVja2dlZ2ViZW4uCisgICAgICA8ZGVzYz4gaXN0IGVpbiBTdHJpbmctQXJyYXkuCisgICAgICAgIEJlaW0gVW50ZXJzdWNoZW4gd2lyZCB6dWZhZWxsaWcgZWluZXIgZGVyIFN0cmluZ3MgenVydWVja2dlZ2ViZW4uCisgICAgICA8ZGVzYz4gaXN0IGVpbiBNYXBwaW5nLgorICAgICAgICBEYXMgTWFwcGluZyBtdXNzIGZvbGdlbmRlbiBBdWZiYXUgaGFiZW46CisgICAgICAgICAgKFswOiAgICAgICAgIkRlZmF1bHR0ZXh0IiwKKyAgICAgICAgICAgICJyYXNzZTEiOiAicjF0ZXh0IiwgLi4uXSkuCisKKyAgICAgICAgRmFsbHMgZnVlciBkaWUgUmFzc2UgZGVzIGRhcyBEZXRhaWwgdW50ZXJzdWNoZW5kZW4gU3BpZWxlcnMgZWluCisgICAgICAgIEVpbnRyYWcgaW0gTWFwcGluZyBleGlzdGllcnQsIHdpcmQgZGVyIGVudHNwcmVjaGVuZGUgVGV4dAorICAgICAgICB6dXJ1ZWNrZ2VnZWJlbiwgYW5zb25zdGVuIGRlciBEZWZhdWx0dGV4dC4gQXVmIGRpZXNlIFdlaXNlIHNpbmQKKyAgICAgICAgcmFzc2VuYWJoYWVuZ2lnZSBEZXRhaWxzIG1vZWdsaWNoLiBTaWVoZSBhdWNoIGRpZSBCZWlzcGllbGUuCisgICAgICA8ZGVzYz4gaXN0IGVpbmUgQ2xvc3VyZS4KKyAgICAgICAgSW4gZGllc2VtIEZhbGwgd2lyZCBkaWUgQ2xvc3VyZSBhdXNnZWZ1ZWhydCB1bmQgZGFzIEVyZ2VibmlzCisgICAgICAgIHp1cnVlY2tnZWdlYmVuLiBEaWUgQ2xvc3VyZSBiZWtvbW10IGRhYmVpIGRlbiBOYW1lbiBkZXMgRGV0YWlscworICAgICAgICBhbHMgUGFyYW1ldGVyIHVlYmVyZ2ViZW4uCisKKyAgICBGdWVyIERldGFpbHMga29lbm5lbiBGb3JzY2hlcnB1bmt0ZSBlaW5nZXRyYWdlbiB3ZXJkZW4uCisKK0JFSVNQSUVMRToKKyAgICBFaW4gc2NobGljaHRlcyBEZXRhaWw6CisKKyAgICAgIEFkZERldGFpbCgoeyJzb2ZhIiwiY291Y2gifSksICJFaW5lIGtsZWluZSBDb3VjaC5cbiIpOworCisgICAgTGFlbmdlcmUgRGV0YWlscyBzb2xsdGVuIGhpZXJiZWkgbmljaHQgcGVyIEhhbmQgdW1nZWJyb2NoZW4gd2VyZGVuLAorICAgIHNvbmRlcm4gbWFuIGthbm4gaGllcnp1IGRpZSBGdW5rdGlvbiBicmVha19zdHJpbmcoKSBudXR6ZW46CisKKyAgICAgIEFkZERldGFpbCgiZGV0YWlsIiwgYnJlYWtfc3RyaW5nKAorICAgICAgICAiRHUgd29sbHRlc3QgZXMgamEgbmljaHQgYW5kZXJzLCBqZXR6dCBtdXNzdCBEdSBEaXIgZGllc2VzICIKKyAgICAgICAgImZ1ZXJjaHRlcmxpY2ggbGFuZ2UgRGV0YWlsIGR1cmNobGVzZW4hISEiLCA3OCkpOworCisgICAgTm9ldGlnZSBaZWlsZW51bWJydWVjaGUgYmVpIFplaWxlbmxhZW5nZW4gZ3JvZXNzZXIgNzcgd2VyZGVuIHNvCisgICAgYXV0b21hdGlzY2ggZ2VuZXJpZXJ0LgorICAgIEVpbiByYXNzZW5hYmhhZW5naWdlcyBEZXRhaWw6CisKKyAgICAgIEFkZERldGFpbCgoeyJiZXR0IiwiYmV0dGNoZW4ifSksCisgICAgICAgIChbMCAgICAgIDoiRWluZSBrbGVpbmVzIEJldHQuXG4iLCAvLyBEZXIgRGVmYXVsdHRleHQKKyAgICAgICAgICAiendlcmciOiAgICAgICAgICAgICAgICAgICAgICAgIC8vIERpZSBSYXNzZSBrbGVpbiBzY2hyZWliZW4KKyAgICAgICAgICAgICAgICAiRGFzIEJldHQgbGFlZHQgZ2VyYWRlenUgenUgZWluZW0gTmlja2VyY2hlbiBlaW4uXG4iXSkpOworCisgICAgVW5kIG51biBlaW4gRGV0YWlsIG1pdCBDbG9zdXJlIChkaWVzZSBWZXJzaW9uIGVyc2V0enQgZGFzIFZlcmhhbHRlbgorICAgICB2b24gQWRkU3BlY2lhbERldGFpbCkuCisKKyAgICAgIGludCBoZWJlbF9iZXRhZXRpZ3Q7CisgICAgICAuLi4KKyAgICAgIHN0cmluZyBoZWJlbChzdHJpbmcgc3RyKTsgLy8gRnVua3Rpb24gYmVrYW5udCBtYWNoZW4gKFByb3RvdHlwaW5nKQorICAgICAgLi4uCisgICAgICBBZGREZXRhaWwoKHsiaGViZWwiLCJzY2hhbHRlciJ9KSwgIydoZWJlbCk7CisgICAgICAuLi4KKyAgICAgIHN0cmluZyBoZWJlbChzdHJpbmcga2V5KSB7CisgICAgICAgIGlmKGhlYmVsX2JldGFldGlndCkKKyAgICAgICAgICByZXR1cm4gIkRlciAiK2NhcGl0YWxpemUoa2V5KSsiIHN0ZWh0IGF1ZiBFSU4uXG4iOworICAgICAgICBlbHNlCisgICAgICAgICAgcmV0dXJuICJEZXIgIitjYXBpdGFsaXplKGtleSkrIiBzdGVodCBhdWYgQVVTLlxuIjsKKyAgICAgIH0KKworICAgIE1hbiBlcmhhZWx0IHZlcnNjaGllZGVuZSBFcmdlYm5pc3NlIGJlaW0gVW50ZXJzdWNoZW4sIGplIG5hY2hkZW0KKyAgICBvYiBkYXMgRmxhZyBoZWJlbF9iZXRhZXRpZ3QgZ2VzZXR6dCBpc3Qgb2RlciBuaWNodC4KKworU0lFSEUgQVVDSDoKKyAgICBTZXR6ZW46ICAgIEFkZFJlYWREZXRhaWwoKSwgQWRkU21lbGxzKCksIEFkZFNvdW5kcygpLAorICAgICAgICAgICAgICAgQWRkVG91Y2hEZXRhaWwoKQorICAgIExvZXNjaGVuOiAgUmVtb3ZlRGV0YWlsKCksIFJlbW92ZVJlYWREZXRhaWwoKSwgUmVtb3ZlU21lbGxzKCksCisgICAgICAgICAgICAgICBSZW1vdmVTb3VuZHMoKSwgUmVtb3ZlVG91Y2hEZXRhaWwoKQorICAgIERhdGVuOiAgICAgUF9ERVRBSUxTLCBQX1JFQURfREVUQUlMUywgUF9TTUVMTFMsIFBfU09VTkRTLAorICAgICAgICAgICAgICAgUF9UT1VDSF9ERVRBSUxTLCBQX1NQRUNJQUxfREVUQUlMUworICAgIFZlcmFsdGV0OiAgQWRkU3BlY2lhbERldGFpbCgpLCBSZW1vdmVTcGVjaWFsRGV0YWlsKCksIFBfUkVBRF9NU0cKKyAgICBTb25zdGlnZXM6IEdldERldGFpbCgpLCBicmVha19zdHJpbmcoKQorCisyMC4wMS4yMDE1LCBaZXNzdHJhCisKZGlmZiAtLWdpdCBhL2RvYy9sZnVuL0FkZERyaW5rIGIvZG9jL2xmdW4vQWRkRHJpbmsKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNmI5OWUwOAotLS0gL2Rldi9udWxsCisrKyBiL2RvYy9sZnVuL0FkZERyaW5rCkBAIC0wLDAgKzEsMTIgQEAKK0FkZERyaW5rKCkKKworQkVNRVJLVU5HRU46CisKKyAgICAgICAgRGllIEZ1bmt0aW9uIEFkZERyaW5rKCkgc29sbHRlIE5JQ0hUIE1FSFIgQkVOVVRaVCB3ZXJkZW4uCisgICAgICAgIEJpdHRlIEFkZFRvTWVudSgpIHZlcndlbmRlbi4KKworU0lFSEUgQVVDSDoKKwlBZGRUb01lbnUoKSwgUmVtb3ZlRnJvbU1lbnUoKQorCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCitMYXN0IG1vZGlmaWVkOiBGcmkgTWFyIDAzIDEzOjIzOjAwIDIwMDAgYnkgUGFyYWNlbHN1cwpkaWZmIC0tZ2l0IGEvZG9jL2xmdW4vQWRkRXhpdCBiL2RvYy9sZnVuL0FkZEV4aXQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYTA3MDY4MgotLS0gL2Rldi9udWxsCisrKyBiL2RvYy9sZnVuL0FkZEV4aXQKQEAgLTAsMCArMSw5MSBAQAorQWRkRXhpdCgpCitGVU5LVElPTjoKKyAgICAgdm9pZCBBZGRFeGl0KHN0cmluZ3xzdHJpbmcqIGNtZCwgY2xvc3VyZXxzdHJpbmcgZGVzdCk7CisKK0RFRklOSUVSVCBJTjoKKyAgICAgL3N0ZC9yb29tL2V4aXRzCisKK0FSR1VNRU5URToKKyAgICAgc3RyaW5nL3N0cmluZyogY21kCisgICAgICAgICAgZGllIFJpY2h0dW5nKGVuKSwgaW4gZGllIGRlciBBdXNnYW5nIGZ1ZWhydAorICAgICBzdHJpbmcvY2xvc3VyZSBkZXN0CisgICAgICAgICAgZGFzIFppZWwgZGVzIEF1c2dhbmdzIG1pdCBUZXh0L0Nsb3N1cmUKKworQkVTQ0hSRUlCVU5HOgorCisgICAgIEVzIHdpcmQgZWluIEF1c2dhbmcgaW4gZGllIFJpY2h0dW5nKGVuKSBjbWQgZWluZ2VmdWVndC4gRGllIEFydCBkZXMKKyAgICAgQXVzZ2FuZ3MgaGFlbmd0IGFiIHZvbiBkZXN0OgorCisgICAgIC0gZWluIFN0cmluZzoKKyAgICAgICAtIG1pdCBlaW5lbSBEYXRlaW5hbWVuOgorICAgICAgICAgRGVyIEF1c2dhbmcgZnVlaHJ0IGluIGRlbiBSYXVtLCBkZW4gZGVyIERhdGVpbmFtZSBiZXplaWNobmV0LgorICAgICAgIC0gZGVyIEZvcm0gIjxtc2c+I2RhdGVpbmFtZSIKKyAgICAgICAgIERlciBBdXNnYW5nIGZ1ZWhydCBpbiBkZW4gUmF1bSwgZGVuIGRlciBEYXRlaW5hbWUgYmV6ZWljaG5ldCwKKyAgICAgICAgIGJlaSBkZXIgQmVudXR6dW5nIHdpcmQgamVkb2NoIHN0YXR0ICI8bmFtZT4gZ2VodCBuYWNoIDxyaWNodHVuZz4iCisgICAgICAgICAiPG5hbWU+IGdlaHQgbmFjaCA8bXNnPiIgYXVzZ2VnZWJlbi4KKyAgICAgLSBlaW5lIENsb3N1cmU6CisgICAgICAgRGllIENsb3N1cmUgd2lyZCBiZWkgTnV0enVuZyBkZXMgQXVzZ2FuZ3MgYXVmZ2VydWZlbi4gRGFzIGVudHNwcmljaHQKKyAgICAgICBlaW5lIFNwZWNpYWxFeGl0IC0gaW4gZGVyIGdlcnVmZW5lbiBGdW5rdGlvbiBtdXNzIG1hbiBkZW4gU3BpZWxlcgorICAgICAgIHNlbGJzdCBpbiBkZW4gWmllbHJhdW0gYmV3ZWdlbi4KKyAgICAgICBHZWdlYmVuZW5mYWxscyBrYW5uIGRhcyBkdXJjaCBBZGRDbWQoKSBlcnNldHp0IHdlcmRlbi4KKworQkVNRVJLVU5HRU46CisgICAgIE1hbiBrYW5uIGZ1ZXIgZGVuIERhdGVpbmFtZW4gZGVzIFppZWxyYXVtZXMgYXVjaCBlaW5lbiByZWxhdGl2ZW4gUGZhZAorICAgICBhbmdlYmVuLiBEaWUgQXVzd2VydHVuZyBlcmZvbGd0IG5hY2ggZm9sZ2VuZGVtIFNjaGVtYToKKyAgICAgLSAiLi88ZGF0ZWluYW1lPiIKKyAgICAgICBFcyB3aXJkIGVpbiBaaWVscmF1bSByZWxhdGl2IHp1bSBnbGVpY2hlbiBWZXJ6ZWljaG5pcyB3aWUgZGllc2VyCisgICAgICAgUmF1bSBhbmdlc3Byb2NoZW4uCisgICAgIC0gIi4uLzxkYXRlaW5hbWU+IgorICAgICAgIEVzIHdpcmQgZWluIFppZWxyYXVtIHJlbGF0aXYgenVyIFZlcnplaWNobmlzZWJlbmUgdWViZXIgZGVyCisgICAgICAgZGllc2VzIFJhdW1lcyBhbmdlc3Byb2NoZW4gKGFuYWxvZyBtaXQgbWVocmVyZXJuICIuLi8uLiIpCisKKyAgICAgTWl0dGVscyBQX0hJREVfRVhJVFMga2FubiBtYW4gQXVzZ2FlbmdlIHZlcnN0ZWNrZW4uCisKKyAgICAgQmVpIGRlciBCZW51dHp1bmcgZWluZXMgQXVzZ2FuZ3Mgd2lyZCBkZXIgSG9vayBIX0hPT0tfRVhJVF9VU0UKKyAgICAgYXVzZ2Vsb2VzdC4KKworQkVJU1BJRUxFOgorICAgICAjIyMgbm9ybWFsZSBBdXNnYWVuZ2UgIyMjCisgICAgIC8vIEJlaW0gS29tbWFuZG8gInN1ZWRlbiIga29tbXQ6ICI8bmFtZT4gZ2VodCBuYWNoIFN1ZWRlbi4iCisgICAgIEFkZEV4aXQoInN1ZWRlbiIsICIvZ2lsZGVuL2FiZW50ZXVyZXIiKTsKKworICAgICAvLyBCZWltIEtvbW1hbmRvICJzdWVkZW4iIGtvbW10OiAiPG5hbWU+IGdlaHQgaW4gZGllIEdpbGRlLiIKKyAgICAgQWRkRXhpdCgic3VlZGVuIiwgImluIGRpZSBHaWxkZSMvZ2lsZGVuL2FiZW50ZXVyZXIiKTsKKworICAgICAjIyMgQXVzZ2FlbmdlIG1pdCByZWxhdGl2ZW4gUGZhZGVuICMjIworICAgICAvLyBEZXIgTmFtZSBkZXMgUmF1bWVzIHNlaSAiL2QvaW5zZWxuL3dhcmdvbi9oYWZlbjEiCisgICAgIC8vIERpZXNlciBBdXNnYW5nIGdlaHQgbmFjaCAiL2QvaW5zZWxuL3dhcmdvbi9rbmVpcGUiOgorICAgICBBZGRFeGl0KCJub3JkZW4iLCAiLi9rbmVpcGUiICk7CisKKyAgICAgLy8gVW5kIGRpZXNlciBuYWNoICIvZC9pbnNlbG4vYW50aGVhL2FubGVnZSI6CisgICAgIEFkZEV4aXQoInN1ZWRlbiIsICIuLi9hbnRoZWEvYW5sZWdlIiApOworCisgICAgICMjIyBkeW5hbWlzY2hlIEF1c2dhZW5nZSAjIyMKKyAgICAgLy8gZWluIEF1c2dhbmcgc29sbCBudXIgdm9uIEZyb2VzY2hlbiBiZW51dHpiYXIgc2VpbjoKKworICAgICBzdGF0aWMgaW50IGxvY2hma3Qoc3RyaW5nIGRpcik7CQkvLyBQcm90b3R5cAorICAgICAuLi4KKyAgICAgQWRkRXhpdCgibG9jaCIsICMnbG9jaGZrdCk7CisgICAgIC8vIGF1Y2ggaWRlbnRpc2NoIHp1OgorICAgICAvLyBBZGRTcGVjaWFsRXhpdCgibG9jaCIsICMnbG9jaGZrdCk7IFtlaW5lIENsb3N1cmVdIG9kZXIKKyAgICAgLy8gQWRkU3BlY2lhbEV4aXQoImxvY2giLCAibG9jaGZrdCIpOyBbZWluIEZ1bmt0aW9uc25hbWVdCisKKyAgICAgc3RhdGljIGludCBsb2NoZmt0KHN0cmluZyBkaXIpIHsKKyAgICAgICBpZiAoISh0aGlzX3BsYXllcigpLT5RdWVyeVByb3AoUF9GUk9HKSkpIHsKKyAgICAgICAgIC8vIEtlaW4gRnJvc2NoID0+IHBhc3N0IG5pY2h0IQorICAgICAgICAgbm90aWZ5X2ZhaWwoIkR1IGJpc3QgenUgZ3Jvc3MhXG4iKTsKKyAgICAgICAgIHJldHVybiAwOworICAgICAgIH0KKyAgICAgICAvLyBNZWxkdW5nZW4gd2VyZGVuIGltIG1vdmUoKSBnbGVpY2ggbWl0Z2VnZWJlbgorICAgICAgIHJldHVybiB0aGlzX3BsYXllcigpLT5tb3ZlKCIvcm9vbS9sb2NoIiwgTV9HTywgMCwKKyAgICAgICAgICAgICAgICAgICAgImh1ZXBmdCBpbnMgTG9jaCIsICJodWVwZnQgaGVyZWluIik7CisgICAgIH0KKworU0lFSEUgQVVDSDoKKyAgICAgQWRkU3BlY2lhbEV4aXQoKSwgR2V0RXhpdHMoKQorICAgICBSZW1vdmVFeGl0KCksIFJlbW92ZVNwZWNpYWxFeGl0KCksCisgICAgIEhfSE9PS19FWElUX1VTRSwgUF9FWElUUywgUF9ISURFX0VYSVRTLCAvc3RkL3Jvb20vZXhpdHMuYworICAgICBhdXNnYWVuZ2UKKworMzEuMDEuMjAxNSwgWmVzc3RyYQorCmRpZmYgLS1naXQgYS9kb2MvbGZ1bi9BZGRFeHAgYi9kb2MvbGZ1bi9BZGRFeHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOGJhZWQ1NQotLS0gL2Rldi9udWxsCisrKyBiL2RvYy9sZnVuL0FkZEV4cApAQCAtMCwwICsxLDMyIEBACitBZGRFeHAoKQorRlVOS1RJT046CisgICAgIGludCBBZGRFeHAoaW50IGUpCisKK0RFRklOSUVSVCBJTjoKKyAgICAgL3N0ZC9saXZpbmcvbGlmZS5jCisKK0FSR1VNRU5URToKKyAgICAgaW50IGUgLSBBbnphaGwgZGVyIGhpbnp1enVmdWVnZW5kZW4gKGFienV6aWVoZW5kZW4pIFhQCisKK0JFU0NIUkVJQlVORzoKKyAgICAgRGVtIExpdmluZyB3ZXJkZW4gZSBYUCBhdWYgc2VpbmUgYmlzaGVyaWdlbiBQX1hQIGFkZGllcnQuCisKKyAgICAgRmFsbHMgZXMgc2ljaCB1bSBlaW5lbiBTcGllbGVyIG1pdCBQX0tJTExTPjAgaGFuZGVsdCB1bmQKKyAgICAgZSBwb3NpdGl2IGlzdCwgYmVrb21tdCBkZXIgU3BpZWxlciBrZWluZSBYUCBndXRnZXNjaHJpZWJlbi4KKworICAgICBQX0xBU1RfWFAgd2lyZCBha3R1YWxpc2llcnQuCisKK0JFTUVSS1VORzoKKyAgICAgLSBwb3NpdGl2ZSB1bmQgbmVnYXRpdmUgV2VydGUgc2luZCBtb2VnbGljaAorICAgICAtIFBfWFAgd2lyZCBuaWNodCA8MCBnZXNldHp0LgorCitSVUVDS0dBQkVXRVJUOgorICAgICBpbnQgLSBuZXVlciBYUC1XZXJ0CisKK1NJRUhFIEFVQ0g6CisgICAgIEZ1bmt0aW9uZW46ICBkb19kYW1hZ2UoKSwgRGlzdHJpYnV0ZUV4cCgpCisgICAgIFByb3BlcnRpZXM6ICBQX1hQLCBQX0xBU1RfWFAKKyAgICAgU29uc3RpZ2VzOiAgIFBfTk9fWFAsIFBfTk9fU0NPUkUKKyAgICAgICAgICAgICAgICAgIGNyZWF0ZV9kZWZhdWx0X25wYygpCisKKzE0LkZlYiAyMDA3IEdsb2luc29uClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZG9jL2xmdW4vQWRkRXh0cmFMb29rIGIvZG9jL2xmdW4vQWRkRXh0cmFMb29rCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjUyNmE4NTEKLS0tIC9kZXYvbnVsbAorKysgYi9kb2MvbGZ1bi9BZGRFeHRyYUxvb2sKQEAgLTAsMCArMSw5NiBAQAorQWRkRXh0cmFMb29rKCkKK3ZhcmFyZ3MgaW50IEFkZEV4dHJhTG9vayhzdHJpbmcgbG9vaywgW2ludCBkdXJhdGlvbiwgc3RyaW5nIGtleSwKKyAgICAgICAgICAgICAgICAgICAgICAgICBzdHJpbmcgbG9va2VuZGUsIG9iamVjdCBvYl0pOworREVGSU5JRVJUIElOOgorICAgL3N0ZC9saXZpbmcvZGVzY3JpcHRpb24uYworCitCRVNDSFJFSUJVTkc6CisgICBEZXIgRXh0cmFsb29rIGVyc2NoZWludCBpbiBkZXIgTGFuZ2Jlc2NocmVpYnVuZyBkZXMgTGViZXdlc2Vucy4KKyAgIEVpbnRyYWVnZSBrb2VubmVuIG1pdCBkaWVzZXIgRnVua3Rpb24gaGluenVnZWZ1ZWd0IHdlcmRlbi4gRGllcyBpc3QgZGVyCisgICBiZXZvcnp1Z3RlIFdlZywgd2VubiBhbnNvbnN0ZW4gZXh0cmEgZWluIE9iamVrdCBpbSBTcGllbGVyaW52ZW50YXIgYWJnZWxlZ3QKKyAgIHdlcmRlbiBtdWVzc3RlLgorICAgCisgICBBbGxlIFBhcmFtZXRlciBiaXMgYXVmIDxsb29rPiBzaW5kIG9wdGlvbmFsLgorCitBUkdVTUVOVEU6CisgIC0gc3RyaW5nIGxvb2s6CisgICAgU3RyaW5nLCBkZXIgaW4gZGVyIExhbmdiZXNjaHJlaWJ1bmcgZGVzIExlYmV3ZXNlbnMgenVzYWV0emxpY2ggYXVzZ2VnZWJlbgorICAgIHdpcmQuCisgICAgS2FubiBhdWNoIGVpbiBGdW5rdGlvbnNuYW1lIHNlaW4sIHdlbm4gPG9iPiBhbmdlZ2ViZW4gd2lyZCAocy51LikuCisgIC0gaW50IGR1cmF0aW9uOgorICAgID4gMDogV2llIGxhbmcgYmxlaWJ0IGRlciBFeHRyYWxvb2sgZ3VlbHRpZyAoaW4gU2VrdW5kZW4pPyBBbnNjaGxpZXNzZW5kIAorICAgICAgICAgd2lyZCBlciBhdXRvbWF0aXNjaCBnZWxvZXNjaHQuCisgICAgMDogICBEaWVzZXIgRWludHJhZyBibGVpYnQgdW5iZWdyZW56dCBndWVsdGlnLgorICAgIDwgMDogRGllc2VyIEVpbnRyYWcgYmxlaWJ0IGJpcyB6dW0gRW5kZS9SZWJvb3QgYmVzdGVoZW4uCisgIC0gc3RyaW5nIGtleToKKyAgICBTY2hsdWVzc2Vsd29ydCwgdW50ZXIgZGVtIGRlciBFaW50cmFnIHJlZ2lzdHJpZXJ0IHdpcmQgdW5kIG1pdCBkZW0gbWFuIGlobgorICAgIGF1Y2ggbWl0dGVscyBSZW1vdmVFeHRyYUxvb2soKSBlbnRmZXJuZW4ga2Fubi4gU29sbHRlIG5hdHVlcmxpY2gKKyAgICBtb2VnbGljaHN0IGVpbmRldXRpZyBzZWluLiA7LSkgV2VubiA8a2V5PiBuaWNodCBhbmdlYmVuIHdpcmQsIHdpcmQgZGVyIAorICAgIE9iamVrdG5hbWUgKG9iamVjdF9uYW1lKCkpIGJlbnV0enQuCisgIC0gc3RyaW5nIGxvb2tlbmRlOgorICAgIFN0cmluZywgZGVyIGFuIGRhcyBMZWJld2VzZW4gKG51ciBiZWkgU3BpZWxlcm4pIGF1c2dlZ2ViZW4gd2lyZCwgd2VubiBkZXIKKyAgICBlaW5nZXRyYWdlbmUgRXh0cmFsb29rIGFiZ2VsYXVmZW4gaXN0LgorICAgIEthbm4gYXVjaCBlaW4gRnVua3Rpb25zbmFtZSBzZWluLCB3ZW5uIDxvYj4gYW5nZWdlYmVuIHdpcmQuCisgIC0gb2JqZWN0IG9iOgorICAgIFdlbm4gaGllciBlaW4gT2JqZWt0IGFuZ2VnZWJlbiB3aXJkLCB3ZXJkZW4gPGxvb2s+IHVuZCA8bG9va2VuZGU+IGFscworICAgIEZ1bmt0b25zbmFtZW4gYXVmZ2VmYXNzdC4gRGllc2UgRnVua3Rpb25lbiB3ZXJkZW4gaW4gPG9iPiBhdWZnZXJ1ZmVuLCB3ZW5uCisgICAgZGVyIEV4dHJhbG9vayBkZXMgTGViZXdlc2VuIGFuZ2V6ZWlndCB3aXJkIGJ6dy4gZGVyIGVpbmdldHJhZ2VuZSBFeHRyYWxvb2sKKyAgICBhYmdlbGF1ZmVuIGlzdC4gRGllc2UgRnVua3Rpb25lbiBiZWtvbW1lbiBkYXMgamV3ZWlsaWdlIExlYmVud2VzZW4gYWxzCisgICAgT2JqZWt0IHVlYmVyZ2ViZW4uIFNpZSBtdWVzc2VuIGVpbmVuIFN0cmluZyB6dXJ1ZWNrbGllZmVybiwgZGVyIGF1c2dlZ2ViZW4KKyAgICB3aXJkLiBEaWVzZXIgU3RyaW5nIHdpcmQgZGlyZWt0IHNvIGF1c2dlYmVuLCBhbHNvIHNlbGJlciBmdWVyIFplaWxlbnVtYnJ1Y2gKKyAgICBldGMuIHNvcmdlbiEKKyAgICBXSUNIVElHOiBEYXMgT2JqZWt0IHNvbGx0ZSBuYWNoIE1vZWdsaWNoa2VpdCBlaW5lIEJsdWVwcmludCBzZWluLCBkYSBkYXMKKyAgICBnYW56ZSBuaXggbWVociBhdXNnaWJ0LCBzb2JhbGQgZGVyIENsb25lIHplcnN0b2VydCB3aXJkLCBmYWxscyBoaWVyIAorICAgIGVpbmVyIGFuZ2ViZW4gd2lyZC4gV2VubiBpaHIga2VpbmUgQlAgdWViZXJnZWJ0OiBXaXNzdCwgd2FzIGlociB0dXQuIDstKQorCitSVUVDS0dBQkVXRVJURToKKyAgPiAwLCBmYWxscyBkZXIgRWludHJhZyBlcmZvbGdyZWljaCByZWdpc3RyaWVydCB3dXJkZS4KKyAgPCAwIHNvbnN0LgorICAgIC0xOiA8a2V5PiB3YXIgbmljaHQgZ3VlbHRpZyB1bmQgZXMga29ubnRlIGtlaW5lciBlcm1pdHRlbHQgd2VyZGVuLgorICAgIC0yOiA8bG9vaz4gd2FyIGtlaW4gZ3VlbHRpZ2VyIFN0cmluZy4KKyAgICAtMzogPGR1cmF0aW9uPiB3YXIga2VpbiBJbnRlZ2VyLgorICAgIC00OiB1bnRlciA8a2V5PiBnaWJ0IGVzIHNjaG9uIGVpbmVuIEVpbnRyYWcuCisKK0JFTUVSS1VOR0VOOgorICBEaWUgU3RyaW5ncyA8bG9vaz4gdW5kIDxsb29rZW5kZT4gd2VyZGVuIHZvciBBdXNnYWJlIGR1cmNoCisgIHJlcGxhY2VfcGVyc29uYWwoKSBnZXNjaGlja3QsIGRhaGVyIGlzdCBkaWUgVmVyd2VuZHVuZyB2b24gQFdFUjEsIEBXRVNTRU4xCisgIHVzdy4gbW9lZ2xpY2ggKHMuIHJlcGxhY2VfcGVyc29uYWwpLiBEaWVzIGdpbHQgYWJlciBfbmljaHRfIGZ1ZXIgZGVuIEZhbGwsCisgIGRhc3MgZGllIGVudHNwcmVjaGVuZGVuIEZ1bmt0aW9uZW4gaW4gPG9iPiBnZXJ1ZmVuIHdlcmRlbiwgZGFubiBtdWVzc2VuIGRpZQorICBGdW5rdGlvbmVuIHNlbGJlciB1bWJyZWNoZW4sIGV0Yy4KKyAgTmFjaCByZXBsYWNlX3BlcnNvbmFsKCkgd2VyZGVuIGRpZSBTdHJpbmdzIG5vY2ggdm9uIGJyZWFrX3N0cmluZygpIGF1ZiA3OAorICBaZWlsZW4gdW1nZWJyb2NoZW4sIGFsbGVyZGluZ3MgYmxlaWJlbiBkYWJlaSB2b3JoYW5kZW5lIFVtYnJ1ZWNoZSBlcmhhbHRlbi4KKyAgRGllIE1lbGR1bmcgdm9uIDxsb29rZW5kZT4gYnp3LiBkZXIgRnVua3Rpb25zYXVmcnVmIGVyZm9sZ3QsIHdlbm4gZGVyCisgIEV4dHJhbG9vayBkZXIgTGViZXdlc2VuIGRhcyBlcnN0ZSBNYWwgbmFjaCBBYmxhdWYgZGVyIEd1ZWx0aWdrZWl0IGF1ZmdlcnVmZW4KKyAgd2lyZC4KKworQkVJU1BJRUxFOgorICAjIGVpbmZhY2hlciBFaW50cmFnLCAiZnVlciBkaWUgRXdpZ2tlaXQiCisgIGxpdmluZy0+QWRkRXh0cmFMb29rKCJAV0VSMSBoYXQgZGVuIERyYWNoZW5nb3R0IGRlciBTU1AgYmVzaWVndC4iKTsKKworICAjIEVpbnRyYWcgZGVyIG5hY2ggMWggYXV0b21hdGlzY2ggd2VnIGlzdC4KKyAgbGl2aW5nLT5BZGRFeHRyYUxvb2soIkBXRVIxIGlzdCBnYW56IG1pdCBNYXJtZWxhZGUgYmVkZWNrdC4iLCAzNjAwKTsKKyAgCisgICMgRWludHJhZyBtaXQgYmVzdGltbXRlbiBTY2hsdWVzc2VsLCBkYW1pdCBtYW4gaWhuIHdpZWRlciBlbnRmZXJuZW4ga2Fubi4KKyAgbGl2aW5nLT5BZGRFeHRyYUxvb2soIkBXRVIxIGlzdCBnYW56IG1pdCBNYXJtZWxhZGUgYmVkZWNrdC4iLCAzNjAwLAorICAgICAgICAgICAgICAgICAgICAgICAiaHVtbmlfbWFybWVsYWRlbl9sb29rIik7CisgIAorICAjIE1pdCAiRW5kZSItTWVsZHVuZywgYWJlciBrZWluIGVpZ2VuZXIgU2NobHVlc3NlbC4KKyAgbGl2aW5nLT5BZGRFeHRyYUxvb2soIkBXRVIxIGlzdCBwYXRzY2huYXNzLiIsIDEyMDAsIDAsCisgICAgICAgICAgICAgICAgICAgICAgICJEdSBiaXN0IGVuZGxpY2ggd2llZGVyIHRyb2NrZW4uIFB1dWguIik7CisgIAorICAjIE1pdCBPYmpla3QsIHdhcyBkZW4gRXh0cmFsb29rIGR5bmFtaXNjaCBlcnpldWd0CisgIGxpdmluZy0+QWRkRXh0cmFMb29rKCJnZXRfbXlfc3BlY2lhbF9leHRyYWxvb2siLCAzNjAwLCAwLCAwLCB0aGlzX29iamVjdCgpKTsKKyAgICBJbiBkaWVzZW0gRmFsbCBtdXNzIHRoaXNfb2JqZWN0KCkgbmF0dWVybGljaCBkaWUgRnVua3Rpb24KKyAgICAiZ2V0X215X3NwZWNpYWxfZXh0cmFsb29rKCkiIGRlZmluaWVyZW4sIGRpZSBlaW5lbiBTdHJpbmcgenVydWVja2dpYnQuCisKKyAgIyBNaXQgT2JqZWt0LCB3YXMgZGVuIEV4dHJhbG9vayB1bmQgZGllIEVuZGVtZWxkdW5nIGR5bmFtaXNjaCBlcnpldWd0CisgIGxpdmluZy0+QWRkRXh0cmFMb29rKCJnZXRfbXlfc3BlY2lhbF9leHRyYWxvb2siLCAzNjAwLCAwLAorICAgICAgICAgICAgICAgICAgICAgICAiZXh0cmFsb29rZW5kZSIsIHRoaXNfb2JqZWN0KCkpOworCitTSUVIRSBBVUNIOgorICAgUmVtb3ZlRXh0cmFMb29rKCksCisgICByZXBsYWNlX3BlcnNvbmFsKCksIGJyZWFrX3N0cmluZygpCisgICBQX0lOVEVSTkFMX0VYVFJBX0xPT0sKKworMTQuMDUuMjAwNywgWmVzc3RyYQorCmRpZmYgLS1naXQgYS9kb2MvbGZ1bi9BZGRGaXhlZE9iamVjdCBiL2RvYy9sZnVuL0FkZEZpeGVkT2JqZWN0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjNlMmUxNzIKLS0tIC9kZXYvbnVsbAorKysgYi9kb2MvbGZ1bi9BZGRGaXhlZE9iamVjdApAQCAtMCwwICsxLDUyIEBACitBZGRGaXhlZE9iamVjdCgpCisKK0ZVTktUSU9OOgorICAgICAgICB2YXJhcmdzIHZvaWQgQWRkRml4ZWRPYmplY3Qoc3RyaW5nIHN0ciwgaW50IHZhbCwgbWl4ZWQgaWRzKTsKKworREVGSU5JRVJUIElOOgorICAgICAgICAvc3RkL3Jvb20vc2hvcC5jCisKK0FSR1VNRU5URToKKyAgICAgICAgc3RyCisgICAgICAgICAgRGVyIGFic29sdXRlIEZpbGVuYW1lIGVpbmVzIE9iamVrdHMsIGRhcyBpbiBxdWFzaSBiZWxpZWJpZ2VyIE1lbmdlCisgICAgICAgICAgdm9tIGJldHJlZmZlbmRlbiBMYWRlbiB2ZXJrYXVmdCB3ZXJkZW4gc29sbC4KKyAgICAgICAgdmFsCisgICAgICAgICAgU29mZXJuIGFuZ2VnZWJlbiBkZXIgYW5nZW5vbW1lbmUgV2VydCBkZXMgT2JqZWt0cy4gRmFsbHMgdmFsIG5pY2h0CisgICAgICAgICAgYW5nZWdlYmVuIG9kZXIgMCBpc3QsIHdpcmQgZGVyIFdlcnQgYXVzIGRlbSBhbmdlZ2ViZW5lbiBPYmpla3QKKyAgICAgICAgICBzZWxic3QgZXJtaXR0ZWx0LgorICAgICAgICAgIERlciBWZXJrYXVmc3ByZWlzIGlzdCAzICogV2VydCBkZXMgT2JqZWt0cy4KKyAgICAgICAgaWRzCisgICAgICAgICAgU3RyaW5nIG9kZXIgU3RyaW5nYXJyYXkgbWl0IGRlciBJRCBvZGVyIGRlbiBJRHMsIHVlYmVyIGRpZSBtYW4gZGFzCisgICAgICAgICAgT2JqZWt0IGltIExhZGVuIGFuc3ByZWNoZW4ga2Fubi4gRmFsbHMgbmljaHQgYW5nZWdlYmVuLCB3aXJkIGRpZQorICAgICAgICAgIElELUxpc3RlIGF1cyBkZXIgYmx1ZXByaW50IGRlcyBPYmpla3RzIGF1c2dlbGVzZW4uCisKK0JFU0NIUkVJQlVORzoKKyAgICAgICAgTWl0IGRpZXNlciBGdW5rdGlvbiBrYW5uIG1hbiBlaW5lbSBMYWRlbiBtaXR0ZWlsZW4sIGRhc3MgZWluIE9iamVrdAorICAgICAgICBpbiBpaG0gaW4gdW5iZWdyZW56dGVyIEFuemFobCB2ZXJrYXVmdCB3ZXJkZW4gc29sbC4KKyAgICAgICAgV0lDSFRJRzogRGFzIHp1IHZlcmthdWZlbmRlIE9iamVrdCBzb2xsdGUgZGllcyBpbnNvZmVybiB1bnRlcnN0dWV0emVuLCAKKyAgICAgICAgZGFzcyBkaWUgQmx1ZXByaW50IGRpZSBub3R3ZW5kaWdlbiBJbmZvcm1hdGlvbmVuCisgICAgICAgIChQX1NIT1JULCBQX0lEUywgUF9WQUxVRSwgUF9MT05HLCBQX05BTUUpIGJlaW5oYWx0ZXQuIERpZXMgYmVkZXV0ZXQgaW0KKyAgICAgICAgZWluZmFjaHN0ZW4gRmFsbCwgZGFzcyBpbSBjcmVhdGUoKSBhdWYKKyAgICAgICAgICBpZiAoIWNsb25lcCgpKSByZXR1cm47CisgICAgICAgIHZlcnppY2h0ZXQgd2lyZC4KKworUlVlQ0tHQUJFV0VSVDoKKyAgICAgICAga2VpbmVyCisgICAgICAgIAorQkVJU1BJRUxFOgorICAgICAgICBBZGRGaXhlZE9iamVjdCgiL29iai9mYWNrZWwiLCA1MDAwLCAiZmFja2VsIik7CisgICAgICAgICAgRGVyIExhZGVuIHZlcmthdWZ0IEZhY2tlbG4genVtIFByZWlzIHZvbiAzKjUwMDAgR29sZG11ZW56ZW4gdW5kIG1hbgorICAgICAgICAgIGthbm4gZGllIEZhY2tlbCAoYXVzc2VyIHVlYmVyIGRpZSBJbnZlbnRhcm51bW1lcikgbnVyIG1pdHRlbHMgZGVyCisgICAgICAgICAgaWQgImZhY2tlbCIga2F1ZmVuLgorICAgICAgICAgIAorICAgICAgICBBZGRGaXhlZE9iamVjdCgiL29iai9mYWNrZWwiKTsKKyAgICAgICAgICBEZXIgTGFkZW4gdmVya2F1ZnQgRmFja2VsbiB6dW0gZHJlaWZhY2hlbiBXZXJ0IGRlc3Nlbiwgd2FzIGltIE9iamVrdAorICAgICAgICAgIC9vYmovZmFja2VsLmMgYW5nZWdlYmVuIGlzdCAoZGVyemVpdCBzaW5kIGRhcyA1IE11ZW56ZW4pIHVuZCBsYWVzc3QKKyAgICAgICAgICBhbGxlIElEcyB6dSwgZGllIGluIC9vYmovZmFja2VsLmMgYW5nZWdlYmVuIHNpbmQuIERlcnplaXQgaXN0IGRhcworICAgICAgICAgIGF1Y2ggbnVyICJmYWNrZWwiLgorCitTSUVIRSBBVUNIOgorCVJlbW92ZUZpeGVkT2JqZWN0KCksIFNldFN0b3JhZ2VSb29tKCksIC9zdGQvc3RvcmUuYworICAgICAgICAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KK0xldHp0ZSBBZW5kZXJ1bmc6IFNhdCBOb3YgIDkgMTI6NTk6MjUgMjAwMiBkdXJjaCBCYW1iaQpkaWZmIC0tZ2l0IGEvZG9jL2xmdW4vQWRkRm9vZCBiL2RvYy9sZnVuL0FkZEZvb2QKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMmRhMThlNQotLS0gL2Rldi9udWxsCisrKyBiL2RvYy9sZnVuL0FkZEZvb2QKQEAgLTAsMCArMSwxMiBAQAorQWRkRm9vZCgpCisKK0JFTUVSS1VOR0VOOgorCisgICAgICAgIERpZSBGdW5rdGlvbiBBZGRGb29kKCkgc29sbHRlIE5JQ0hUIE1FSFIgQkVOVVRaVCB3ZXJkZW4uCisgICAgICAgIEJpdHRlIEFkZFRvTWVudSgpIHZlcndlbmRlbi4KKworU0lFSEUgQVVDSDoKKyAgICAgICAgQWRkVG9NZW51KCksIFJlbW92ZUZyb21NZW51KCkKKworLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorTGFzdCBtb2RpZmllZDogRnJpIE1hciAwMyAxMzoyMzowMCAyMDAwIGJ5IFBhcmFjZWxzdXMKZGlmZiAtLWdpdCBhL2RvYy9sZnVuL0FkZEZ1ZWwgYi9kb2MvbGZ1bi9BZGRGdWVsCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmJmMDAzNTAKLS0tIC9kZXYvbnVsbAorKysgYi9kb2MvbGZ1bi9BZGRGdWVsCkBAIC0wLDAgKzEsMjkgQEAKK0FkZEZ1ZWwoKQorCitGVU5LVElPTjoKKyAgICAgdm9pZCBBZGRGdWVsKGludCBmdWVsKTsKKworREVGSU5JRVJUIElOOgorICAgICAvc3RkL2xpZ2h0c291cmNlLmMKKworQVJHVU1FTlRFOgorICAgICBmdWVsCisgICAgICAgICAgRGllIHp1c2FldHpsaWNoZSBCcmVubmRhdWVyIGluIFNla3VuZGVuLgorCitCRVNDSFJFSUJVTkc6CisgICAgIERpZSBCcmVubmRhdWVyIGRlciBMaWNodHF1ZWxsZSB3aXJkIHVtIGZ1ZWwgU2VrdW5kZW4gdmVybGFlbmdlcnQuCisKK1JVZUNLR0FCRVdFUlQ6CisgICAgIGtlaW5lcgorCitCRU1FUktVTkdFTjoKKyAgICAgRXMgd2VyZGVuIGtlaW5lIENoZWNrcyBkdXJjaGdlZnVlaHJ0ISBXZW5uIG1hbiBzZWluZSBMaWNodHF1ZWxsZQorICAgICBuYWNoZnVlbGxiYXIgZ2VzdGFsdGVuIHdpbGwsIHNvbGx0ZSBkaWUgTmFjaGZ1ZWxsZnVua3Rpb24gdm9yIGRlbQorICAgICBBZGRGdWVsKCktQXVmcnVmIG5hY2hzZWhlbiwgd2llIHZvbGwgZGllIExpY2h0cXVlbGxlIG5vY2ggaXN0LCB1bmQgZnVlbAorICAgICBlbnRzcHJlY2hlbmQgYmVncmVuemVuLgorCitTSUVIRSBBVUNIOgorICAgICAvc3RkL2xpZ2h0c291cmNlLmMKKworLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorTGFzdCBtb2RpZmllZDogV2VkIE1heSA4IDEwOjE2OjM5IDE5OTYgYnkgV2FyZ29uCmRpZmYgLS1naXQgYS9kb2MvbGZ1bi9BZGRGdW4gYi9kb2MvbGZ1bi9BZGRGdW4KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOTI1YjVhYwotLS0gL2Rldi9udWxsCisrKyBiL2RvYy9sZnVuL0FkZEZ1bgpAQCAtMCwwICsxLDYzIEBACitBZGRGdW4oKQorCitGVU5LVElPTjoKKyAgICAgdm9pZCBBZGRGdW4oc3RyaW5nIGZ1biwgaW50IG5leHQpOworCitERUZJTklFUlQgSU46CisgICAgIC9zdGQvdHJhbnNwb3J0LmMKKworQVJHVU1FTlRFOgorICAgICBmdW4KKyAgICAgICAgICBOYW1lIGRlciBGdW5rdGlvbi4KKyAgICAgbmV4dAorICAgICAgICAgIFplaXQgYmlzIHp1ciBuYWVjaHN0ZW4gRmFocnBsYW5zdGF0aW9uLgorCitCRVNDSFJFSUJVTkc6CisgICAgIERlbSBGYWhycGxhbiB3aXJkIGRlciBBdWZydWYgZGVyIEZ1bmt0aW9uIGZ1biwgZGllIGltIFRyYW5zcG9ydGVyCisgICAgIGRlZmluaWVydCBzZWluIG11c3MsIGhpbnp1Z2VmdWVndC4gTmFjaCBBdWZydWYgZGVyIEZ1bmt0aW9uIHZlcmdlaGVuCisgICAgIG5leHQgU2VrdW5kZW4sIGJpcyBkaWUgbmFlY2hzdGUgU3RhdGlvbiBhbmdlZmFocmVuIHdpcmQuCisKK1JVZUNLR0FCRVdFUlQ6CisgICAgIGtlaW5lcgorCitCRUlTUElFTEU6CisgICAgIFdlbm4gZWluIHp1ZmFlbGxpZyBhdXNnZXdhZWhsdGVyIFBhc3NhZ2llciBlaW5lcyBTY2hpZmZlcyB1bnRlcndlZ3MKKyAgICAgc2Vla3Jhbmsgd2VyZGVuIHNvbGwsIGtvZW5udGUgbWFuIGRhcyB3aWUgZm9sZ3QgcmVhbGlzaWVyZW46CisKKyAgICAgY3JlYXRlKCkKKyAgICAgeworICAgICAgIC4uLgorCisgICAgICAgQWRkRnVuKCJzZWVrcmFuayIsIDUpOworICAgICAgIC4uLgorICAgICB9CisKKyAgICAgc2Vla3JhbmsoKQorICAgICB7CisgICAgICAgb2JqZWN0ICpwYXNzYWdpZXJlLCBvcGZlcjsKKworICAgICAgIC8vIHNvbGwgbmljaHQgaW1tZXIgcGFzc2llcmVuCisgICAgICAgaWYgKHJhbmRvbSg1KSkKKyAgICAgICAgIHJldHVybjsKKworICAgICAgIC8vIE9wZmVyIGF1c3dhZWhsZW4KKyAgICAgICBwYXNzYWdpZXJlID0gUXVlcnlQYXNzZW5nZXJzKCk7CisgICAgICAgaWYgKHNpemVvZihwYXNzYWdpZXJlKSkKKyAgICAgICAgIG9wZmVyID0gcGFzc2FnaWVyZVtyYW5kb20oc2l6ZW9mKHBhc3NhZ2llcmUpKV07CisKKyAgICAgICAvLyBVbmQgdmllbCBTcGFzcy4uLgorICAgICAgIHRlbGxfb2JqZWN0KG9wZmVyLAorICAgICAgICAgIkR1IHdpcnN0IHNlZWtyYW5rISBTY2huZWxsIHN0dWVyenQgRHUgenVyIFJlbGluZyB1bSAgRGljaCB6dVxuIgorICAgICAgICArInVlYmVyZ2ViZW4uXG4iKTsKKyAgICAgICB0ZWxsX3Jvb20odGhpc19vYmplY3QoKSwKKyAgICAgICAgIHNwcmludGYoIiVzIHVlYmVya29tbXQgZGllIFNlZWtyYW5raGVpdCFcbiVzIHN0dWVyenQgYW4gZGllIFJlbGluZywgIgorICAgICAgICAgICAgICAgICsidW0gc2ljaCB6dSB1ZWJlcmdlYmVuLlxuIiwKKyAgICAgICAgICAgICAgICAgY2FwaXRhbGl6ZShvcGZlci0+bmFtZShXRU4pKSwKKyAgICAgICAgICAgICAgICAgY2FwaXRhbGl6ZShvcGZlci0+UXVlcnlQcm9ub3VuKFdFUikpKSwgKHsgb3BmZXIgfSkgKTsKKyAgICAgfQorCitTSUVIRSBBVUNIOgorICAgICBBZGRSb3V0ZSgpLCBBZGRNc2coKSwgL3N0ZC90cmFuc3BvcnQuYworCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCitMYXN0IG1vZGlmaWVkOiBXZWQgTWF5IDggMTA6MTY6NDYgMTk5NiBieSBXYXJnb24KZGlmZiAtLWdpdCBhL2RvYy9sZnVuL0FkZElkIGIvZG9jL2xmdW4vQWRkSWQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZmExY2U3NgotLS0gL2Rldi9udWxsCisrKyBiL2RvYy9sZnVuL0FkZElkCkBAIC0wLDAgKzEsNTAgQEAKK0FkZElkKCkKKworRlVOS1RJT046CisgICAgIHZvaWQgQWRkSWQoc3RyaW5nfHN0cmluZyogaWRzKTsKKworREVGSU5JRVJUIElOOgorICAgICAvc3RkL3RoaW5nL2Rlc2NyaXB0aW9uLmMKKworQVJHVU1FTlRFOgorICAgICBpZHMKKyAgICAgICAgICBTdHJpbmcgb2RlciBBcnJheSB2b24gU3RyaW5ncyBtaXQgZGVuIEJlemVpY2hudW5nZW4sIG1pdCBkZW5lbgorICAgICAgICAgIHNpY2ggc2ljaCBkYXMgT2JqZWt0IGFuc3ByZWNoZW4gbGFzc2VuIHNvbGwuCisKK0JFU0NIUkVJQlVORzoKKyAgICAgSmVkZXMgT2JqZWt0IHNvbGx0ZSBzaWNoIGF1ZiBkaWUgZWluZSBvZGVyIGFuZGVyZSBXZWlzZSBhbnNwcmVjaGVuCisgICAgIGxhc3Nlbi4gWnUgZGllc2VtIFp3ZWNrIGthbm4gbWFuIGRlbSBPYmpla3QgbWl0IGRpZXNlciBGdW5rdGlvbgorICAgICBCZXplaWNobmVyIHVlYmVyZ2ViZW4uCisKK1JVZUNLR0FCRVdFUlQ6CisgICAgIGtlaW5lcgorCitCRU1FUktVTkdFTjoKKyAgICAgSmVkZXMgT2JqZWt0IHNvbGx0ZSBtYW4genVtaW5kZXN0IG1pdCBzZWluZXIgS3VyemJlc2NocmVpYnVuZworICAgICBhbnNwcmVjaGVuIGtvZW5uZW4hIEZ1ZXIgQWJmcmFnZW4gdm9uIFF1ZXN0b2JqZWtlbiBvLmFlLiBzb2xsdGUgbWFuCisgICAgIHp1c2FldHpsaWNoIElEcyB2ZXJ3ZW5kZW4sIGRpZSBTb25kZXJ6ZWljaGVuIHdpZSAiXG4iIG9kZXIgIlx0IgorICAgICBlbnRoYWx0ZW4sIGRhbWl0IHNpY2hlcmdlc3RlbGx0IGlzdCwgZGFzcyBkZXIgU3BpZWxlciBhdWNoIHdpcmtsaWNoIGRpZQorICAgICByaWNodGlnZW4gT2JqZWt0ZSBkYWJlaWhhdC4KKworQkVJU1BJRUxFOgorCisgICAgIEFkZElkKCAiYnVjaCIgKTsKKyAgICAgQWRkSWQoICJidWVjaGxlaW4iICk7CisKKyAgICAgRGFzIE9iamVrdCBsYWVzc3Qgc2ljaCBqZXR6dCBhbHMgImJ1Y2giIHVuZCBhbHMgImJ1ZWNobGVpbiIgYW5zcHJlY2hlbi4KKworICAgICBBZGRJZCggKHsgImJ1Y2giLCAiYnVlY2hsZWluIiB9KSApOworCisgICAgIERpZXNlIFplaWxlIGJld2lya3QgZGFzIGdsZWljaGUgd2llIGRpZSBvYmlnZW4gendlaSBaZWlsZW4uCisKKyAgICAgQWRkSWQoICh7ICJwdXp6bGUiLCAiXG5xdWVzdF9wdXp6bGUiIH0pICk7CisKKyAgICAgRGVyIFNwaWVsZXIga2FubiBkYXMgT2JqZWt0IGFscyAicHV6emxlIiBhbnNwcmVjaGVuLCBxdWVzdHJlbGV2YW50ZQorICAgICBPYmpla3RlIGtvZW5uZW4gbWl0IGRlciBJRCAiXG5xdWVzdF9wdXp6bGUiIG5hY2ggaWhtIHN1Y2hlbi4KKworU0lFSEUgQVVDSDoKKyAgICAgQWRkQWRqZWN0aXZlKCksIFJlbW92ZUlkKCksIGlkKCksIHByZXNlbnQoKSwgL3N0ZC90aGluZy9kZXNjcmlwdGlvbi5jCisKKyAgICAgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKzIwLjAxLjIwMTUsIFplc3N0cmEKKwpkaWZmIC0tZ2l0IGEvZG9jL2xmdW4vQWRkSW5mbyBiL2RvYy9sZnVuL0FkZEluZm8KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOWRlN2JkMgotLS0gL2Rldi9udWxsCisrKyBiL2RvYy9sZnVuL0FkZEluZm8KQEAgLTAsMCArMSwyMTkgQEAKK0FkZEluZm8oKQorRlVOS1RJT046CisgICAgIHZhcmFyZ3Mgdm9pZCBBZGRJbmZvKCBmcmFnZSwgbWVsZHVuZworCQkJICAgWywgaW5kZW50IFssIFtzaWxlbnQgWywgY2FzZWJhc2VkXSBdIF0gKTsKKworREVGSU5JRVJUIElOOgorICAgICAvc3RkL25wYy9pbmZvLmMKKworQVJHVU1FTlRFOgorICAgICBzdHJpbmcvc3RyaW5nKiBmcmFnZQorCVNjaGx1ZXNzZWx0ZXh0KGUpIGF1ZiBkaWUgSW5mb3JtYXRpb25lbiBnZWdlYmVuIHdlcmRlbiBzb2xsZW4uCisgICAgIHN0cmluZy9jbG9zdXJlIG1lbGR1bmcKKwlJbmZvcm1hdGlvbiwgZGllIGdlZ2ViZW4gd2VyZGVuIHNvbGwvQ2xvc3VyZQorICAgICBzdHJpbmcgaW5kZW50CisJVGV4dCwgZGVyIHNpY2ggYmVpIG1laHJ6ZWlsaWdlbiBNZWxkdW5nZW4gd2llZGVyaG9sZW4gc29sbC4KKyAgICAgaW50L3N0cmluZyBzaWxlbnQKKwlJc3Qgc2lsZW50IGdlc2V0enQsIHNvIGVyZm9sZ3QgQW50d29ydCBudXIgYW4gRnJhZ2VuZGVuLgorICAgICBzdHJpbmcvY2xvc3VyZSBjYXNlYmFzZWQKKwlDbG9zdXJlIG1pdCBSZXR1cm53ZXJ0IHN0cmluZyBvZGVyIGludC4KKworQkVTQ0hSRUlCVU5HOgorICAgICBXZW5uIGVpbiBTcGllbGVyIGVpbiBOUEMgbWl0dGVscyAiZnJhZ2UgPG1vbnN0ZXJuYW1lPiBuYWNoIDxmcmFnZT4iIG5hY2gKKyAgICAgZWluZXIgSW5mb3JtYXRpb24gbWl0IGRlbSBTY2hsdWVzc2VsICdmcmFnZScgZnJhZ3QsIHNvIHdpcmQgZGllCisgICAgIGVudHNwcmVjaGVuZGUgJ21lbGR1bmcnIGF1c2dlZ2ViZW4gKG9kZXIgZGllIENsb3N1cmUgaW4gJ21lbGR1bmcnCisgICAgIGdlcnVmZW4gdW5kIGRlciB6dXJ1ZWNrZ2VnZWJlbmUgVGV4dCBhdXNnZWdlYmVuKS4gRGVyIE1lbGR1bmcgd2lyZAorICAgICBkZXIgTmFtZSBkZXMgTW9uc3RlcnMgdm9yYW5nZXN0ZWxsdC4KKworICAgICBGcmFnZToKKyAgICAgIFNjaGx1ZXNzZWwgbXVlc3NlbiBrbGVpbmdlc2NocmllYmVuIHNlaW4sIGtvZW5uZW4gYWJlciBMZWVyemVpY2hlbgorICAgICAgZW50aGFsdGVuLgorCisgICAgIE1lbGR1bmc6CisgICAgICBXZW5uIGtlaW4gJ2luZGVudCcgYW5nZWdlYmVuIGlzdCwgbXVzcyBtYW4gZGllIE1lbGR1bmcgc2VsYnN0CisgICAgICB1bWJyZWNoZW4uCisKKyAgICAgSW5kZW50OgorICAgICAgV2lyZCBlaW4gJ2luZGVudCcgYW5nZWdlYmVuIHNvIHdpcmQgamVkZXIgWmVpbGUgaGludGVyIGRlbQorICAgICAgTW9uc3Rlcm5hbWVuIG5vY2ggZGFzICdpbmRlbnQnIHZvcmFuZ2VzZXR6dC4gWnVzYWV0emxpY2ggd2lyZAorICAgICAgJ21lbGR1bmcnIGF1ZiBqZWRlbiBGYWxsIHNhdWJlciB1bWdlYnJvY2hlbi4KKyAgICAgIEVpbiB0eXBpc2NoZXMgaW5kZW50IGlzdCAic2FndDogIi4KKworICAgICBTaWxlbnQ6CisgICAgICBCZWkgJ3NpbGVudCc9PTEgZXJmb2xndCBrZWluZSBUZXh0YXVzZ2FiZSBkZXIgQW50d29ydG1lbGR1bmcgaW0gUmF1bSwKKyAgICAgIGlzdCAnc2lsZW50JyBlaW4gU3RyaW5nLCBzbyB3aXJkIGplbmVyIGFuIGFsbGUgYW5kZXJlbiBTcGllbGVyIGF1c3NlcgorICAgICAgZGVtIEZyYWdlc3RlbGxlciBpbSBSYXVtIGF1c2dlZ2ViZW4uCisKKyAgICAgQ2FzZWJhc2VkOgorICAgICAgRGllIGFscyBDbG9zdXJlIGFuZ2VnZWJlbmUgTWV0aG9kZSBlbnRzY2hlaWRldCwgb2Igb2RlciB3aWUgZGVyIE5QQyAKKyAgICAgIGF1ZiBkaWVzZSBGcmFnZSBhbnR3b3J0ZW4gc29sbDoKKyAgICAgIC0gcmV0dXJuIDA6CW5vcm1hbGUgQW50d29ydCBtaXQgIm1lbGR1bmciCisgICAgICAtIHJldHVybiAxOglrZWluZSBBbnR3b3J0L0FudHdvcnQgbWl0IERFRkFVTFRfTk9JTkZPCisgICAgICAtIHJldHVybiBzdHJpbmc6CUFudHdvcnQgbWl0IHN0cmluZyB1bnRlciBCZXJ1ZWNrc2ljaHRpZ3VuZyBlaW5lcworCQkJaW5kZW50CisKKyAgICAgRGllIFN0cmluZ3Mgdm9uICdzaWxlbnQnIHVuZCAnbWVsZHVuZycgd2VyZGVuIGdlcGFyc2VkLiBEYWJlaSB3ZXJkZW4gZGllCisgICAgIFNjaGx1ZXNzZWx3b3J0ZSBAV0VSLCBAV0VTU0VOLCBAV0VNLCBAV0VOIGR1cmNoIFRQLT5OYW1lKC4uKSBlcnNldHp0IHVuZAorICAgICBAQ0FQX1dFUiwgQENBUF9XRVNTRU4sIEBDQVBfV0VNLCBAQ0FQX1dFTiBkdXJjaCBjYXBpdGFsaXplKFRQLU5hbWUoLi4pKS4KKworICAgICBNaXR0ZWxzIGRlciBpbiA8bnBjLmg+IGRlZmluaWVydGVuIEZyYWdlIERFRkFVTFRfSU5GTyBrYW5uIGVpbmUKKyAgICAgTWVsZHVuZyBnZXNldHp0IHdlcmRlbiwgZGllIGdlZ2ViZW4gd2VyZGVuIHNvbGwsIHdlbm4gZGVyIFNwaWVsZXIKKyAgICAgZXR3YXMgZnJhZ3QsIGF1ZiBkYXMga2VpbmUgQW50d29ydCB2b3JnZWdlYmVuIGlzdCAoZGFzIGxvZXN0CisgICAgIFNldFByb3AoUF9ERUZBVUxUX0lORk8sIDx0ZXh0PikgYWIpLgorCitCRUlTUElFTEU6CisgICAgICMjIyBlaW5lIFN0YW5kYXJkYW50d29ydCBzZXR6ZW4gIyMjCisgICAgIEFkZEluZm8oREVGQVVMVF9JTkZPLCAic3RhcnJ0IERpciBib2VzZSBpbiBkaWUgQXVnZW4uXG4iKTsKKyAgICAgLy8gaWRlbnRpc2NoIHp1CisgICAgIFNldFByb3AoUF9ERUZBVUxUX0lORk8sICJzdGFycnQgRGlyIGJvZXNlIGluIGRpZSBBdWdlbi5cbiIpOworCisgICAgICMjIyBlaW5mYWNoZSBCZWlzcGllbGUsIGF1Y2ggbWl0IGNhc2ViYXNlZCAjIyMKKyAgICAgQWRkSW5mbygoeyJrbmV0ZSIsImtvaGxlIn0pLAorCSAgICAgInNhZ3Q6IGljaCBoYWJlIHNvIGV0d2FzIG5pY2h0LlxuIik7CisgICAgIEFkZEluZm8oImdlbGQiLAorCSAgICAgIkljaCBoYWJlIHp3YXIga2VpbiBHZWxkLCBhYmVyIC4uLiBibGFibGFibGEgLi4uIiwKKwkgICAgICJzYWd0OiAiICk7CisgICAgIEFkZEluZm8oIm11ZW56ZW4iLAorCSAgICAgImZsdWVzdGVydDogRHUgd2lsbHN0IEdlbGQ/XG4iLAorCSAgICAgMCwKKwkgICAgICJmbHVlc3RlcnQgQFdFTSBldHdhcyB6dS5cbiIpOworCisgICAgIC8vICJmcmFnZSBtb25zdGVyIG5hY2ggZ2VsZCI6IGFsbGUgaW0gUmF1bSBob2VyZW4KKyAgICAgLy8gIERhcyBNb25zdGVyIHNhZ3Q6IEljaCBoYWJlIHp3YXIga2VpbiBHZWxkLCBhYmVyIC4uLgorICAgICAvLyAgRGFzIE1vbnN0ZXIgc2FndDogLi4uIGJsYWJsYWJsYSAuLi4KKworICAgICAvLyAiZnJhZ2UgbW9uc3RlciBuYWNoIG11ZW56ZW4iOgorICAgICAvLyAtIGRlciBGcmFnZW5zdGVsbGVyIGhvZXJ0OgorICAgICAvLyAgICJEYXMgTW9uc3RlciBmbHVlc3RlcnQ6IER1IHdpbGxzdCBHZWxkPyIKKyAgICAgLy8gLSBhbGxlIGFuZGVyZSBob2VyZW46CisgICAgIC8vICAgIkRhcyBNb25zdGVyIGZsdWVzdGVydCA8RnJhZ2Vuc3RlbGxlcm5hbWVuPiBldHdhcyB6dS4iCisKKyAgICAgIyMjIGR5bmFtaXNjaCAjIyMKKyAgICAgLy8gZWluIFByb3RvdHlwLCBkYW1pdCB3aXIgZGllIE1ldGhvZGUgYmVrYW5udCBtYWNoZW4KKyAgICAgc3RhdGljIHN0cmluZyBxdWVyeV9rZWtzZSgpOworICAgICAuLi4KKyAgICAgQWRkSW5mbygoeyJrZWtzIiwia2Vrc2UifSksCisJICAgICAjJ3F1ZXJ5X2tla3NlLAkJLy8gZWluIFZlcndlaXMgYXVmIGRpZSBGdW5rdGlvbgorCSAgICAgInNhZ3Q6ICIpOworICAgICAuLi4KKyAgICAgc3RhdGljIHN0cmluZyBxdWVyeV9rZWtzZSgpIHsKKyAgICAgIGlmKHByZXNlbnQoImtla3MiKSkKKyAgICAgICByZXR1cm4oIkljaCBoYWIgbm9jaCB3ZWxjaGUuIEFldHNjaCEiKTsKKyAgICAgIHJldHVybigiTWVubm8uIEtlaW5lIG1laHIgZGEhIik7CisgICAgIH0KKworICAgICAvLyAiZnJhZ2UgbW9uc3RlciBuYWNoIGtla3MiOgorICAgICAvLyAtIHdlbm4gZXMgbm9jaCBLZWtzZSBoYXQsIGhvZXJlbiBhbGxlOgorICAgICAvLyAgICJEYXMgTW9uc3RlciBzYWd0OiBJY2ggaGFiIG5vY2ggd2VsY2hlLiBBZXRzY2ghCisgICAgIC8vIC0gc29uc3Q6CisgICAgIC8vICAgIkRhcyBNb25zdGVyIHNhZ3Q6ICJNZW5uby4gS2VpbmUgbWVociBkYSEKKworICAgICAjIyMgZHluYW1pc2NoZXIgIyMjCisgICAgIC8vIGVpbiBQcm90b3R5cCwgZGFtaXQgd2lyIGRpZSBNZXRob2RlIGJla2FubnQgbWFjaGVuCisgICAgIHN0YXRpYyBzdHJpbmcgcXVlcnlfa2Vrc2UoKTsKKyAgICAgc3RhdGljIG1peGVkIGNhc2VfZmlnaHRpbmcoKTsKKyAgICAgLi4uCisgICAgIEFkZEluZm8oKHsia2VrcyIsImtla3NlIn0pLAorCSAgICAgIydxdWVyeV9rZWtzZSwiCQkvLyBlaW4gVmVyd2VpcyBhdWYgZGllIEZ1bmt0aW9uCisJICAgICBzYWd0OiAiLAorCSAgICAgMCwJCQkJLy8gbmljaHQgc2lsZW50IDopCisJICAgICAjJ2Nhc2VfZmlnaHRpbmcpOwkJLy8gbm9jaCBlaW4gRnVua3Rpb25zdmVyd2VpcworICAgICAuLi4KKyAgICAgc3RhdGljIHN0cmluZyBxdWVyeV9rZWtzZSgpIHsKKyAgICAgIGlmKHByZXNlbnQoImtla3MiKSkKKyAgICAgICByZXR1cm4oIkljaCBoYWIgbm9jaCB3ZWxjaGUuIEFldHNjaCEiKTsKKyAgICAgIHJldHVybigiTWVubm8uIEtlaW5lIG1laHIgZGEhIik7CisgICAgIH0KKworICAgICBzdGF0aWMgbWl4ZWQgY2FzZV9maWdodGluZygpIHsKKyAgICAgIGlmKEluRmlnaHQoKSkKKyAgICAgICByZXR1cm4oIktlaW5lIFplaXQgZnVlciBLZWtzZS4gTXVzcyBrYWVtcGZlbi4iKTsKKyAgICAgIHJldHVybiAwOworICAgICB9CisKKyAgICAgLy8gImZyYWdlIG1vbnN0ZXIgbmFjaCBrZWtzIjoKKyAgICAgLy8gLSB3ZW5uIGVzIGthZW1wZnQsIGhvZXJlbiBhbGxlOgorICAgICAvLyAgICJEYXMgTW9uc3RlciBzYWd0OiBLZWluZSBaZWl0IGZ1ZXIgS2Vrc2UuIE11c3Mga2FlbXBmZW4uCisgICAgIC8vIC0gc29uc3QsIHdlbm4gZXMgbm9jaCBLZWtzZSBoYXQsIGhvZXJlbiBhbGxlOgorICAgICAvLyAgICJEYXMgTW9uc3RlciBzYWd0OiBJY2ggaGFiIG5vY2ggd2VsY2hlLiBBZXRzY2ghCisgICAgIC8vIC0gc29uc3Q6CisgICAgIC8vICAgIkRhcyBNb25zdGVyIHNhZ3Q6ICJNZW5uby4gS2VpbmUgbWVociBkYSEKKworCisgICAgICMjIyBkeW5hbWlzY2ggdW5kIGtvbXBsZXggIyMjCisgICAgIC8vIGVpbiBQcm90b3R5cCwgZGFtaXQgd2lyIGRpZSBNZXRob2RlIGJla2FubnQgbWFjaGVuCisgICAgIHN0YXRpYyBzdHJpbmcgcXVlc3Rpb25fZ29sZCgpOworICAgICAuLi4KKworICAgICAvLyAiZ29sZCIgd2lyZCBlaW5lIENsb3N1cmUgYXVmIGRpZSBNZXRob2RlIHF1ZXN0aW9uX2dvbGQoKQorICAgICAvLyB6dWdld2llc2VuLCBhdXNzZXJkZW0gc29sbCBlcyBzdGlsbCBibGVpYmVuICh3aXIgaW5mb3JtaWVyZW4KKyAgICAgLy8gZGVuIFJlc3RyYXVtIHNlbGJzdCkKKyAgICAgQWRkSW5mbygiZ29sZCIsIydxdWVzdGlvbl9nb2xkLCJtdXJtZWx0OiAiLDEpOworICAgICAuLi4KKworICAgICAvLyBsb3MgZ2VodHMsIHdpciBnZW5lcmllcmVuIHVuc2VyZSBBbnR3b3J0IHNlbGJzdAorICAgICBzdGF0aWMgc3RyaW5nIHF1ZXN0aW9uX2dvbGQoKSB7CisgICAgICBpbnQgbW9uZXk7CisgICAgICBzdHJpbmcgKnksIG9ianN0cjsKKyAgICAgIG9iamVjdCBvOworICAgICAgLy8gd2lldmllbCBLb2hsZSBoYXQgZGVyIFNwaWVsZXIKKyAgICAgIG1vbmV5PXRoaXNfcGxheWVyKCktPlF1ZXJ5TW9uZXkoKTsKKyAgICAgIHk9YWxsb2NhdGUoMCk7CisgICAgICAvLyB1bmQgamV0enQgc3VjaGVuIHdpciBkaWUgRGluZ2UgYXVzIEdvbGQKKyAgICAgIG89Zmlyc3RfaW52ZW50b3J5KHRoaXNfcGxheWVyKCkpOworICAgICAgd2hpbGUobykgeworICAgICAgIGlmKG8tPlF1ZXJ5TWF0ZXJpYWwoTUFUX0dPTEQpPjAgJiYKKyAgICAgICAgICBzdHJzdHIob2JqZWN0X25hbWUobyksIi9vYmovbW9uZXkiKSkKKyAgICAgICAgeSs9KHtvLT5uYW1lKFdFUiwxKX0pOworICAgICAgIG89bmV4dF9pbnZlbnRvcnkobyk7CisgICAgICB9CisKKyAgICAgIC8vIGRhcyBnZWh0IGFuIGFsbGUgYW5kZXJlbiBpbSBSYXVtLCBzaWxlbnQgYmlldGV0IHNpY2ggaGllcgorICAgICAgLy8gbmljaHQgYW4sIHdlaWwgZXMgbWVocmVyZSBNb2VnbGljaGtlaXRlbiBnaWJ0CisgICAgICBzYXkoYnJlYWtfc3RyaW5nKAorICAgICAgIE5hbWUoV0VSLDEpKyIgbXVybWVsdCAiKworICAgICAgIHRoaXNfcGxheWVyKCktPm5hbWUoV0VNLDEpKworICAgICAgICIgZXR3YXMgenUiKworICAgICAgICgobW9uZXkgfHwgc2l6ZW9mKHkpKT8KKyAgICAgICAgIiB1bmQgZ2xvdHp0ICIrCisgICAgICAgIHRoaXNfcGxheWVyKCktPlF1ZXJ5UHJvbm91bihXRU4pKyIgZ2llcmlnIGFuLiI6CisgICAgICAgICIuIiksNzgpLCh7dGhpc19wbGF5ZXIoKX0pKTsKKworICAgICAgLy8gdW5kIGhpZXIgZGllIEFudHdvcnQgYW4gZGVuIFNwaWVsZXIgc2VsYnN0LCBtaXQgdmllbGVuCisgICAgICAvLyBWZXJ6d2VpZ3VuZ2VuIGZ1ZXIgZGVzc2VuIEJlc2l0enR1bQorICAgICAgcmV0dXJuKCJJY2ggaGFiIGtlaW4gR29sZCBiZWkgbWlyLiIrCisgICAgICAgICAgKChtb25leSB8fCBzaXplb2YoeSkpPworICAgICAgICAgICAiIEFiZXIgZHUgIisKKyAgICAgICAgICAgKG1vbmV5PyJoYXN0IGphIGplZGUgTWVuZ2UgS29obGUgYmVpIGRpciwgc28gZXR3YSAiK21vbmV5KworICAgICAgICAgICAgIiBNdWVuemVuLiIrCisgICAgICAgICAgICAoc2l6ZW9mKHkpPworICAgICAgICAgICAgICIgQXVzc2VyZGVtICIrCisgICAgICAgICAgICAgKChzaXplb2YoeSk9PTEpPyJpc3QiOiJzaW5kIikrCisgICAgICAgICAgICAgIiBhdWNoIG5vY2ggIitDb3VudFVwKHkpKyIgYXVzIEdvbGQuIjoKKyAgICAgICAgICAgICAiIik6CisgICAgICAgICAgICAoc2l6ZW9mKHkpPyIgQWJlciB3YXMgZHUgc28gYmVpIGRpciBoYXN0OiAiKworICAgICAgICAgICAgIENvdW50VXAoeSkrCisgICAgICAgICAgICAgKHNpemVvZih5KT09MT8iIGlzdCI6IiBzaW5kIikrCisgICAgICAgICAgICAgIiBhdXMgR29sZC4iOiIiKSk6CisgICAgICAgICAgICIiKSk7CisgICAgIH0KKworICAgICAvLyAiZnJhZ2UgbW9uc3RlciBuYWNoIGdvbGQiCisgICAgIC8vIC0gZGVyIEZyYWdlc3RlbGxlciBob2VydCB6QjoKKyAgICAgLy8gICBEYXMgTW9uc3RlciBtdXJtZWx0OiBJY2ggaGFiIGtlaW4gR29sZCBiZWkgbWlyLiBBYmVyIGR1IGhhc3QgamEKKyAgICAgLy8gICBEYXMgTW9uc3RlciBtdXJtZWx0OiBqZWRlIE1lbmdlIEtvaGxlIGJlaSBkaXIsIHNvIGV0d2FzIDxudW1iZXI+CisgICAgIC8vICAgRGFzIE1vbnN0ZXIgbXVybWVsdDogTXVlbnplbi4gQXVzc2VyZGVtIGlzdC9zaW5kIG5vY2ggPG9iamVjdDE+CisgICAgIC8vICAgRGFzIE1vbnN0ZXIgbXVybWVsdDogdW5kIDxvYmplY3QyPiBhdXMgR29sZC4iCisgICAgIC8vIC0gZGllIFVtc3RlaGVuZGVuIGhvZXJlbjoKKyAgICAgLy8gICAiRGFzIE1vbnN0ZXIgbXVybWVsdCBAV0VNIGV0d2FzIHp1LiIKKyAgICAgLy8gICBvZGVyCisgICAgIC8vICAgIkRhcyBNb25zdGVyIG11cm1lbHQgQFdFTSBldHdhcyB6dSB1bmQgZ2xvdHp0IGlobi9zaWUgZ2llcmlnIGFuLiIKKworU0lFSEUgQVVDSDoKKyAgICAgVmVyd2FuZHQ6ICBBZGRTcGVjaWFsSW5mbyhMKSwgUmVtb3ZlSW5mbyhMKQorICAgICBQcm9wczogICAgIFBfUFJFX0lORk8sIFBfREVGQVVMVF9JTkZPCisgICAgIEZpbGVzOiAgICAgL3N0ZC9ucGMvaW5mby5jCisgICAgIExvZ2dlbjogICAgUF9MT0dfSU5GTworICAgICBJbnRlcm5hOiAgIEdldEluZm9BcnIsIGRvX2ZyYWdlCisKKzcuQXByIDIwMDQgR2xvaW5zb24KZGlmZiAtLWdpdCBhL2RvYy9sZnVuL0FkZEl0ZW0gYi9kb2MvbGZ1bi9BZGRJdGVtCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjhlODEyZWEKLS0tIC9kZXYvbnVsbAorKysgYi9kb2MvbGZ1bi9BZGRJdGVtCkBAIC0wLDAgKzEsMTU5IEBACitBZGRJdGVtKCkKKworRlVOS1RJT046CisJdmFyYXJncyBvYmplY3QgQWRkSXRlbShtaXhlZCBmaWxlbmFtZSxpbnQgcmVmcmVzaCxtaXhlZCBwcm9wcyk7CisKK0RFRklOSUVSVCBJTjoKKwkvc3RkL3Jvb20vaXRlbXMuYworCS9zdGQvbnBjL2l0ZW1zLmMKKworQVJHVU1FTlRFOgorCWZpbGVuYW1lCisJICBTdHJpbmcgbWl0IGRlbSBOYW1lbiBkZXMgenUgZXJ6ZXVnZW5kZW4gT2JqZWt0ZXMgb2RlciBBcnJheSB2b24KKwkgIFN0cmluZ3MgbWl0IGRlbiBOYW1lbiBkZXIgenUgZXJ6ZXVnZW5kZW4gT2JqZWt0ZS4gQmVpIGVpbmVtIEFycmF5CisJICB3aXJkIGVpbiBOYW1lIHp1ZmFlbGxpZyBhdXNnZXdhZWhsdC4KKwlyZWZyZXNoCisJICBXYW5uIHVuZCB3aWUgc29sbCBkYXMgT2JqZWt0IGVybmV1ZXJ0IHdlcmRlbjoKKwkgIC0gUkVGUkVTSF9OT05FICAgICAgLSBLZWluIFJlZnJlc2ggYmlzIHp1bSBOZXVsYWRlbiBkZXMgUmF1bXMKKyAgICAgICAgICAgICAgICAgICAgICAgIC0gb2RlciBOUENzLgorCSAgLSBSRUZSRVNIX0RFU1RSVUNUICAtIFJlZnJlc2ggYmVpIFJlc2V0LCB3ZW5uIEl0ZW0gemVyc3RvZXJ0CisJICAgICAgICAgICAgICAgICAgICAgICAgd3VyZGUuCisJICAtIFJFRlJFU0hfUkVNT1ZFICAgIC0gUmVmcmVzaCBiZWkgUmVzZXQsIHdlbm4gSXRlbSBlbnRmZXJudCB3dXJkZS4KKwkgIC0gUkVGUkVTSF9BTFdBWVMgICAgLSBOZXVlciBDbG9uZSBiZWkgamVkZW0gUmVzZXQuCisJICAtIFJFRlJFU0hfTU9WRV9IT01FIC0gT2JqZWt0IHdpcmQgYmVpIFJlc2V0IGF1dG9tYXRpc2NoCisJICAgICAgICAgICAgICAgICAgICAgICAgenVydWVja2dlaG9sdCwgd2VubiBlcyB3ZWdiZXdlZ3Qgd3VyZGUuCisJICAgICAgICAgICAgICAgICAgICAgICAgKG51ciBpbiBSYWV1bWVuISkKKwkgIEJlaSBOUEMncyBnaWx0IHp1c2FldHpsaWNoOgorCSAgLSBDTE9ORV9XRUFSICAgICAgIC0gSXRlbSBBbnppZWhlbiwgd2VubiBlcyBlaW5lIFJ1ZXN0dW5nIGlzdC4KKwkgIC0gQ0xPTkVfV0lFTEQgICAgICAtIEl0ZW0genVlY2tlbiwgd2VubiBlcyBlaW5lIFdhZmZlIGlzdC4KKwkgIC0gQ0xPTkVfTk9fQ0hFQ0sgICAtIFp1ZWNrZW4gb2RlciBBbnppZWhlbiBvaG5lIFVlYmVycHJ1ZWZ1bmdlbi4KKwlwcm9wcyAob3B0aW9uYWwpCisJICBNYXBwaW5nIG1pdCBkZW5lbiBpbiBlaW5lbSBnZWNsb250ZW4gT2JqZWt0IHp1IHNldHplbmRlbgorCSAgUHJvcGVydGllcyBvZGVyIDEgZnVlciBkaWUgRXJ6ZXVndW5nIGVpbmVyIEJsdWVwcmludC4KKworUlVlQ0tHQUJFV0VSVDoKKwlJbm5lcmhhbGIgdm9uIFJhZXVtZW4gd2lyZCBkYXMgZXJ6ZXVndGUgT2JqZWt0IHp1cnVlY2tnZWxpZWZlcnQuIEJlaQorCU5QQydzIGtsYXBwdCBkaWVzIGxlaWRlciBuaWNodCwgZGEgZG9ydCBkaWUgT2JqZWt0ZSBuaWNodCBzb2ZvcnQKKwllcnpldWd0IHdlcmRlbiwgc29uZGVybiBlcnN0LCBuYWNoZGVtIGRlciBOUEMgYW4gc2VpbmVuCisJQmVzdGltbXVuZ3NvcnQgdHJhbnNmZXJpZXJ0IHd1cmRlLiBEYWhlciB3aXJkIGJlaSBOUEMgaW1tZXIgMCAKKwl6dXJ1ZWNrZ2VnZWJlbi4KKworQkVTQ0hSRUlCVU5HOgorCUFiaGFlbmdpZyB2b24gPGZpbGVuYW1lPiB1bmQgPHByb3BzPiB3aXJkIGVpbiBPYmpla3QgZXJ6ZXVndCB1bmQgaW4KKwlkZW4gUmF1bSBiencuIE5QQyBiZXdlZ3QuIERhYmVpIGdpYnQgZXMgZm9sZ2VuZGUgTW9lZ2xpY2hrZWl0ZW46CisJLSA8ZmlsZW5hbWU+IGlzdCBlaW4gRGF0ZWluYW1lLgorCSAgRXMgd2lyZCBlaW4gQ2xvbmUgZGllc2VyIERhdGVpIGVyc3RlbGx0IG9kZXIgKHdlbm4gPHByb3BzPj0xIGlzdCkKKwkgIGRlcmVuIEJsdWVwcmludCB2ZXJ3ZW5kZXQuCisJLSA8ZmlsZW5hbWU+IGlzdCBlaW4gQXJyYXkgdm9uIERhdGVpbmFtZW4uCisJICBFcyB3aXJkIGVpbmUgRGF0ZWkgenVmYWVsbGlnIGF1cyBkZW0gQXJyYXkgYXVzZ2V3YWVobHQgdW5kIHZvbgorCSAgZGllc2VyIERhdGVpIGVpbiBDbG9uZSBlcnN0ZWxsdCBvZGVyICh3ZW5uIDxwcm9wcz49MSBpc3QpIGRlcmVuCisJICBCbHVlcHJpbnQgdmVyd2VuZGV0LgorCVVlYmVyZ2lidCBtYW4gZnVlciA8cHJvcHM+IGVpbiBNYXBwaW5nIG1pdCBkZW0gQXVmYmF1CisJICAoW3Byb3BfbmFtZTpwcm9wX3dlcnQsLi4uXSksCisJc28gd2VyZGVuIGRpZXNlIFByb3BlcnRpZXMgaW0gZXJ6ZXVndGVuIE9iamVrdCBnZXNldHp0LgorCURlciBQYXJhbWV0ZXIgPHJlZnJlc2g+IGdpYnQgYW4sIHdhcyB3YWVocmVuZCBlaW5lcyBSZXNldHMgaW0gUmF1bQorCWJ6dy4gaW4gTlBDJ3Mgb2RlciB3YXMgYmVpbSBFcnpldWdlbiB2b24gTlBDJ3MgZ2VzY2hlaGVuIHNvbGw6CisJSW4gPHJvb21zLmg+IHNpbmQgZGF6dSBmb2xnZW5kZSBNb2VnbGljaGtlaXRlbiBkZWZpbmllcnQ6CisJLSBSRUZSRVNIX05PTkUKKyAgICAgICAgICAgIERhcyBPYmpla3Qgd2lyZCBuaWVtYWxzIGVybmV1ZXJ0OyBmYWxscyBlcyB6ZXJzdG9lcnQgd3VyZGUsIHdpcmQKKwkgICAgZXMgZXJzdCBkYW5uIHdpZWRlciBlcnpldWd0LCB3ZW5uIGRlciBSYXVtIGVybmV1dCBnZWxhZGVuIGJ6dy4KKwkgICAgZGVyIE5QQyBuZXUgZXJ6ZXVndCB3aXJkLiBNYW4gYmVhY2h0ZSwgZGFzcyBuaWNodCBqZWRlciBOUEMKKwkgICAgd2lya2xpY2ggcmVmcmVzaGVuZGUgT2JqZWt0ZSBiZW5vZXRpZ3QsIFJFRlJFU0hfTk9ORSBzcGFydAorCSAgICBoaWVyYmVpIHNvd29obCBSZWNoZW56ZWl0IGFscyBhdWNoIFNwZWljaGVyIQorCS0gUkVGUkVTSF9ERVNUUlVDVAorCSAgICBEYXMgT2JqZWt0IHdpcmQgbnVyIGRhbm4gZXJuZXVlcnQsIHdlbm4gZXMgaW4gZGVyIFp3aXNjaGVuemVpdAorCSAgICB6ZXJzdG9lcnQgd3VyZGUgKGJlaSBOUEMncyBpc3QgZGFzIHp1bSBCZWlzcGllbCBkZXIgRmFsbCwgd2VubgorCSAgICBzaWUgZ2V0b2V0ZXQgd3VyZGVuKS4KKwkgICAgUkVGUkVTSF9OT05FICYgUkVGUkVTSF9ERVNUUlVDVCArIEJsdWVwcmludC1PYmpla3QgYmVkZXV0ZXQgYmVpCisJICAgIE5QQydzIGVpbiBVbmlxdWUtT2JqZWt0LCBlcyB3aXJkIGFsc28gbmljaHQgYmVpbSBOZXVlcnpldWdlbiBkZXMKKwkgICAgTlBDJ3MgenVydWVja2dlc2V0enQuCisJLSBSRUZSRVNIX1JFTU9WRQorCSAgICBEYXMgT2JqZWt0IHdpcmQgZXJuZXVlcnQsIHdlbm4gZXMgc2ljaCBuaWNodCBtZWhyIGltIFJhdW0gYnp3LgorCSAgICBpbSBOUEMgYmVmaW5kZXQuIERhcyBrZWluIHNlaW4sIHdlaWwgZXMgemVyc3RvZXJ0IHd1cmRlLCBhYmVyCisJICAgIGF1Y2ggenVtIEJlaXNwaWVsIGluIGZvbGdlbmRlbiBGYWVsbGVuOgorCSAgICAqIHdlaWwgZXMgamVtYW5kIG1pdGdlbm9tbWVuIGhhdAorCSAgICAgICAoaW4gUmFldW1lbiBiZWkgR2VnZW5zdGFlbmRlbikKKwkgICAgKiB3ZWlsIGVzIGZvcnRnZWdhbmdlbiBpc3QKKwkgICAgICAgKGluIFJhZXVtZW4gYmVpIE5QQydzLCBkaWUgaGVydW1sYXVmZW4pCisJICAgICogd2VpbCBlcyB3ZWdnZXdvcmZlbiB3dXJkZQorCSAgICAgICAoaW4gTlBDJ3MgYmVpIEdlZ2Vuc3RhZW5kZW4pCisJLSBSRUZSRVNIX0FMV0FZUworCSAgICBEYXMgT2JqZWt0IHdpcmQgaW1tZXIgZXJuZXVlcnQuIFZvbiBkaWVzZXIgUmVmcmVzaG1ldGhvZGUgc29sbHRlCisJICAgIG1hbiBhbGxlcmRpbmdzIEFic3RhbmQgbmVobWVuLCBkYSBzaWNoIHNvbnN0IG1pdCBkZXIgWmVpdAorCSAgICBnZXdhbHRpZ2UgTWVuZ2VuIHZvbiBPYmpla3RlbiBhbnNhbW1lbG4ga29lbm5lbiEKKwktIFJFRlJFU0hfTU9WRV9IT01FCisJICAgIERhcyBPYmpla3Qgd2lyZCBpbiBlaW5lbiBSYXVtIHp1cnVlY2tiZXdlZ3QsIHNvZmVybiBlcyBub2NoCisJICAgIGV4aXN0aWVydCwgamVkb2NoIG5pY2h0IG1laHIgaW4gZGVtIFJhdW0gaXN0LiBTaW5udm9sbCBpc3QgZGllcworCSAgICBlaWdlbnRsaWNoIG51ciBmdWVyIExlYmV3ZXNlbiwgZnVua3Rpb25pZXJ0IGFiZXIgYXVjaCBiZWkKKwkgICAgYmVsaWViaWdlbiBPYmpla3Rlbi4gSGF1cHRzYWVjaGxpY2ggZ2VodCBlcyBoaWVyYmVpIGRhcnVtLAorCSAgICBoZXJ1bWxhdWZlbmRlIE5QQ3Mgb2RlciBiZWkgZXJ6d3VuZ2VuZW4gQmV3ZWd1bmdlbiBuaWNodCB2b24KKwkgICAgUF9HVUFSRCB6dXJ1ZWNrZ2VoYWx0ZW5lIE5QQ3Mgd2llZGVyIGFuIGVpbmVuIGRlZmluaWVydGVuCisJICAgIEF1c2dhbmdzb3J0IHp1cnVlY2t6dWJyaW5nZW4uCisJSGF0IG1hbiBpbiBSYWV1bWVuIGFscyA8ZmlsZW5hbWU+IGVpbiBBcnJheSB2b24gRGF0ZWluYW1lbgorCXVlYmVyZ2ViZW4sIHNvIHdpcmQgYmVpbSBSZXNldCBqZWRlc21hbCBhdWZzIE5ldWUgZWluIHp1ZmFlbGxpZ2VzCisJT2JqZWt0IGF1cyBkZXIgTGlzdGUgYXVzZ2V3YWVobHQgKG5pY2h0IGluIE5QQydzKS4KKwlJbiBOUEMncyBnaWx0IGRlciBHcnVuZHNhdHogZGVyIFZlcm1laWR1bmcgdm9uIHVlYmVyZmx1ZXNzaWdlbgorCU9iamVrdGVuIGltIE1VRC4gTmV1IGVyemV1Z3Qgd2VyZGVuIE9iamVrdGUgYmVpbSBFcnpldWdlbiBlaW5lcworCU5QQydzIG9kZXIgYmVpIGVpbmVtIFJlc2V0IGltIHNlbGJpZ2VuLiBBbnN0YXR0IGRpZSBPYmpla3RlIGdsZWljaAorCW5ldSB6dSBlcnNjaGFmZmVuLCB3aXJkIGVyc3QgZ2VzY2hhdXQsIG9iIHNpY2ggaWRlbnRpc2NoZSBPYmpla3RlCisJc2Nob24gaW0gUmF1bSBiZWZpbmRlbi4gSXN0IGRpZXMgZGVyIEZhbGwsIHNvIG5pbW10IGRlciBOUEMgc2llIGF1ZiwKKwlydWZ0IGplZG9jaCB2b3JoZXIgbm9jaG1hbHMgY3JlYXRlKCkgaW4gaWhuZW4gYXVmIQorCSAgKG5vZXRpZyB3ZWdlbiBtb2VnbGljaGVyIFZlcmFlbmRlcnVuZ2VuIGFuIGRlbiBPYmpla3RlbikKKwlXYXMgZGFubiBwYXNzaWVydCwgaGFlbmd0IHZvbiB3ZWl0ZXJlbiBBbmdhYmVuIGluIDxyZWZyZXNoPiBhYi4KKwlGb2xnZW5kZSB3ZWl0ZXJlIE1vZWdsaWNoa2VpdGVuIHNpbmQgaW4gPG5wYy5oPiBkZWZpbmllcnQ6CisgICAgICAgIC0gQ0xPTkVfV0VBUgorCSAgSXN0IGRhcyBoaW56dWdlZnVlZ3RlIEl0ZW0gZWluZSBSdWVzdHVuZywgc28gd2lyZCBzaWUgbmFjaAorCSAgQXVmbmFobWUgb2RlciBOZXVlcnpldWd1bmcgYW5nZXpvZ2VuLgorICAgICAgICAtIENMT05FX1dJRUxECisJICBJc3QgZGFzIGhpbnp1Z2VmdWVndGUgSXRlbSBlaW5lIFdhZmZlLCBzbyB3aXJkIHNpZSBuYWNoIEF1Zm5haG1lCisJICBvZGVyIE5ldWVyemV1Z3VuZyBnZXp1ZWNrdC4KKyAgICAgICAgLSBDTE9ORV9OT19DSEVDSworCSAgSGllcm1pdCB2ZXJoaW5kZXJ0IG1hbiBlaW5lIFVlYmVycHJ1ZWZ1bmcsIG9iIGVpbmUgUnVlc3R1bmcKKwkgIGFuZ2V6b2dlbiBvZGVyIGVpbmUgV2FmZmUgZ2V6dWVja3Qgd2VyZGVuIGthbm4uIEVzIGlzdCBqZWRvY2gKKwkgIFZvcnNpY2h0IGdlYm90ZW46IFNvIGthbm4gZXMgb2huZSB3ZWl0ZXJlcyBwYXNzaWVyZW4sIGRhc3MgZWluIE5QQworCSAgbWVocmVyZSBSdWVzdHVuZ2VuIGdsZWljaGVuIFR5cHMgYW5nZXpvZ2VuIG9kZXIgbWVocmVyZSBXYWZmZW4KKwkgIGdlenVlY2t0IGhhdC4KKwlCZW51dHp0IG1hbiBCbHVlcHJpbnRzICg8cHJvcHM+PTEpIG1pdCBSRUZSRVNIX1JFTU9WRSBvZGVyCisJUkVGUkVTSF9BTFdBWVMsIHNvIGthbm4gZXMgenUgdW5nZXdvbGx0ZW4gVWViZXJyYXNjaHVuZ2VuIGtvbW1lbiwgZGEKKwlkaWUgQmx1ZXByaW50IGRhbm4gdW5hYmhhZW5naWcgdm9uIGlocmVtIG1vbWVudGFuZW4gQXVmZW50aGFsdHNvcnQKKwl3aWVkZXIgaW4gZGVuIFJhdW0gYnp3LiBOUEMgYmV3ZWd0IHdpcmQsIHZvbiBkZW0gc2llIGVyemV1Z3Qgd3VyZGUhCisKK0JFTUVSS1VOR0VOOgorCVdlbm4gbWFuIEJsdWVwcmludHMgYmVudXR6dCwgc29sbHRlIG1hbiBkYXJhbiBkZW5rZW4sIGRhc3Mgc2ljaCB2b24KKwlkaWVzZXIgZGFubiBrZWluZSBDbG9uZXMgbWVociBlcnN0ZWxsZW4gbGFzc2VuIQorCVJlbW92ZUl0ZW0oKSB6dW0gRW50ZmVybmVuIHZvbiBJdGVtcyBpc3QgbnVyIGZ1ZXIgUmFldW1lIGRlZmluaWVydCEKKworCURpZSBPcHRpb24gQ0xPTkVfTkVXIGlzdCB2ZXJhbHRldC4gRGllIE9iamVrdGUgd2VyZGVuIG51biBpbW1lcgorCW5ldSBlcnpldWd0LiBEaWUgT3B0aW9uIGRhcmYgbm9jaCBhbmdlZ2ViZW4gd2VyZGVuLCBoYXQgYWJlciBrZWluZQorCUJlZGV1dHVuZyBtZWhyLgorCitCRUlTUElFTEU6CisJLy8gRWluIFd1ZXJmZWwsIGRlciBzaWNoIG5hY2ggRW50ZmVybmVuIGVybmV1ZXJ0OgorCSAgQWRkSXRlbSgiL29iai9taXNjL3d1ZXJmZWwiLFJFRlJFU0hfUkVNT1ZFKTsKKwkvLyBFaW4gZXR3YXMgdmVyYWVuZGVydGVyIFd1ZXJmZWw6CisJICBBZGRJdGVtKCIvb2JqL21pc2Mvd3VlcmZlbCIsCisJICAgICAgICAgIFJFRlJFU0hfUkVNT1ZFLAorCSAgICAgICAgICAoW1BfU0hPUlQgOiJFaW4gc2Nod2VyZXIgV3VlcmZlbCIsCisJICAgICAgICAgICAgUF9XRUlHSFQ6MTAwXSkpOworCS8vIEVpbmUgQmx1ZXByaW50LCBkaWUgbnVyIGVpbm1hbCBpbSBNVUQgZXhpc3RpZXJ0LiBXZW5uIHNpZQorCS8vIHplcnN0b2VydCB3dXJkZSwgd2lyZCBzaWUgYmVpIFJlc2V0IG5ldSBlcnpldWd0OgorCSAgQWRkSXRlbSgiL21vbi9hbmdzdGhhc2UiLFJFRlJFU0hfREVTVFJVQ1QsMSk7CisJLy8gRWluZSBCbHVlcHJpbnQsIGRpZSBudXIgZWlubWFsIGltIE1VRCBleGlzdGllcnQuIFdlbm4gc2llIGF1cyBkZW0KKwkvLyBSYXVtIGVudGZlcm50IHd1cmRlLCB3aXJkIHNpZSBiZWkgUmVzZXQgenVydWVja2dlaG9sdDoKKwkgIEFkZEl0ZW0oIi9tb24vYW5nc3RoYXNlIixSRUZSRVNIX01PVkVfSE9NRSwxKTsKKwkvLyBFaW4genVmYWVsbGlnZXMgT2JqZWt0OgorCSAgQWRkSXRlbSgoeyIvb2JqL21pc2MvbG9sbGkiLAorCSAgICAgICAgICAgICIvb2JqL21pc2MvYm9uYm9uIiwKKwkgICAgICAgICAgICAiL29iai9taXNjL2JpZXIifSksUkVGUkVTSF9SRU1PVkUpOworCS8vIEVpbmUgUnVlc3R1bmcsIGRpZSBhdWNoIGFuZ2V6b2dlbiB3aXJkIChudXIgaW4gTlBDJ3MpOgorCSAgQWRkSXRlbSgiL3J1ZXN0dW5nL3NvbW1lcmtsZWlkIixSRUZSRVNIX1JFTU9WRXxDTE9ORV9XRUFSKTsKKwkvLyBFaW5lIFVuaXF1ZS1XYWZmZSwgZGllIGF1Y2ggZ2V6dWVja3Qgd2lyZCAobnVyIGluIE5QQydzKToKKwkgIEFkZEl0ZW0oIi93YWZmZS96YXBwZXIiLFJFRlJFU0hfREVTVFJVQ1R8Q0xPTkVfV0lFTEQsMSk7CisKK1NJRUhFIEFVQ0g6CisJUmVtb3ZlSXRlbSgpLCByZXBsYWNlX3Byb2dyYW0oKSwgY3JlYXRlKCksIFBfR1VBUkQsCisJL3N0ZC9yb29tL2l0ZW1zLmMsIC9zdGQvbnBjL2l0ZW1zLmMsCisJL3N5cy9yb29tcy5oLCAvc3lzL25wYy5oCisKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KK0xhc3QgbW9kaWZpZWQ6IFRodSBOb3YgMjMgMTM6NDM6MzAgQ0VUIDIwMDYgYnkgUnVtYXRhCmRpZmYgLS1naXQgYS9kb2MvbGZ1bi9BZGRLbm93blBvdGlvbiBiL2RvYy9sZnVuL0FkZEtub3duUG90aW9uCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjRkNGQyOTYKLS0tIC9kZXYvbnVsbAorKysgYi9kb2MvbGZ1bi9BZGRLbm93blBvdGlvbgpAQCAtMCwwICsxLDI1IEBACitBZGRLbm93blBvdGlvbigpCisKK0ZVTktUSU9OOgorICAgICBpbnQgQWRkS25vd25Qb3Rpb24oaW50IG5yKQorCitERUZJTklFUlQgSU46CisgICAgIC9zdGQvcGxheWVyL3BvdGlvbi5jCisKK0FSR1VNRU5URToKKyAgICAgaW50IG5yICAgICAgIE51bW1lciBlaW5lcyBaVHMKKworQkVTQ0hSRUlCVU5HOgorICAgICBBZGRpZXJ0IGVpbmVuIFpUIGFscyBiZWthbm50IGluIGVpbmVtIFNwaWVsZXIuIE51ciB2b20gT3Jha2VsIHJ1ZmJhci4KKworUlVlQ0tHQUJFV0VSVDoKKyAgICAgMSAgRXJmb2xnCisgICAgIC0xIGZlaGxlbmRlIEJlcmVjaHRpZ3VuZworICAgICAtMiBOdW1tZXIgYmVyZWl0cyBlaW5nZXRyYWdlbgorCitTSUVIRSBBVUNIOgorICAgICBTb25zdGlnZXM6IHphdWJlcnRyYWVua2UsIC9zZWN1cmUvcG90aW9ubWFzdGVyLmMsIC9yb29tL29yYWtlbC5jCisgICAgIFZlcndhbmR0OiAgRmluZFBvdGlvbigpLCBSZW1vdmVLbm93blBvdGlvbigpLCBJbkxpc3QoKQorICAgICBQcm9wczogICAgIFBfUE9USU9OUk9PTVMsIFBfS05PV05fUE9USU9OUk9PTVMKKworNi5GZWIgMjAxNiBHbG9pbnNvbgpkaWZmIC0tZ2l0IGEvZG9jL2xmdW4vQWRkTWF0ZXJpYWwgYi9kb2MvbGZ1bi9BZGRNYXRlcmlhbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5kNGY1MGI3Ci0tLSAvZGV2L251bGwKKysrIGIvZG9jL2xmdW4vQWRkTWF0ZXJpYWwKQEAgLTAsMCArMSw3NiBAQAorQWRkTWF0ZXJpYWwoKQorRlVOS1RJT046CisgICAgIHByaXZhdGUgc3RhdGljIHZhcmFyZ3Mgdm9pZCBBZGRNYXRlcmlhbChzdHJpbmcgbWF0LCBpbnQgZ2VuZGVyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWl4ZWQgbmFtZXMsIG1peGVkIGdyb3VwcywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1peGVkIGRpZikgeworCitERUZJTklFUlQgSU46CisgICAgIC9wL2RhZW1vbi9tYXRlcmlhbGRiLmMgKE1BVEVSSUFMREIpCisKK0FSR1VNRU5URToKKyAgICAgc3RyaW5nIG1hdAorICAgICAgIE1hdGVyaWFsc3RyaW5nLCBkZWZpbmllcnQgaW4gPHRoaW5nL21hdGVyaWFsLmg+CisKKyAgICAgaW50IGdlbmRlcgorICAgICAgIEdlc2NobGVjaHQgZGVzIGVpbnp1dHJhZ2VuZGVuIE1hdGVyaWFscworCisgICAgIG1peGVkIG5hbWVzCisgICAgICAgTmFtZSBkZXMgTWF0ZXJpYWxzOgorICAgICAgIC0gIjxOb21pbmF0aXY+IiBvZGVyIChtZWlzdCBudXIgTm9tLiB1bmQgR2VuLiBub2V0aWcpCisgICAgICAgLSAoeyI8Tm9taW5hdGl2PiIsIjxHZW5pdGl2PiIsIjxEYXRpdj4iLCI8QWtrdXNhdGl2PiJ9KQorCisgICAgIG1peGVkIGdyb3VwcworICAgICAgIEVpbmdydXBwaWVydW5nIGRlcyBNYXRlcmlhbHM6CisgICAgICAgLSBNQVRHUk9VUF9YWFggb2RlciAoe01BVEdST1VQX1hYWCwuLi59KQorICAgICAgIC0gKFtNQVRfR1JPVVBfWFhYOnh4LE1BVEdST1VQX1lZWTp5eSwuLi5dKQorCisgICAgIG1peGVkIGRpZgorICAgICAgIFNjaHdpZXJpZ2tlaXRlbiBiZWkgZGVyIEVya2VubmJhcmtlaXQ6CisgICAgICAgLSBpbnQgeCBvZGVyICh7TUlOTUFULHgxLE1BVFBPUzEseDIsTUFUUE9TMiAuLi59KQorICAgICAgIC0geG46IEVya2VubmJhcmtlaXRzc2Nod2llcmlna2VpdCAoMTAwPTEwMCUpIC0xMDAuLjEwMAorICAgICAgIC0gTUlOTUFUOiBFcmtlbm51bmcgenVtaW5kZXN0IGFscyBfZGllc2VzXyBNYXRlcmlhbAorICAgICAgICAgICAgICAgICBtb2VnbGljaAorICAgICAgIC0gTUFUUE9TbjogbW9lZ2xpY2hlcyBNYXRlcmlhbCwgZXJrZW5uYmFyLCB3ZW5uCisgICAgICAgICAgICAgICAgICBFcmtlbm5iYXJrZWl0ZmFlaGlna2VpdD49eG4KKyAgICAgICAgICAgICAgICAgIC0+IGRhcyBsZXR6dGUgTUFUUE9TIG11c3MgbmF0dWVybGljaAorICAgICAgICAgICAgICAgICAgICAgc3RyaW5nIG1hdCBlbnRzcHJlY2hlbgorCitCRVNDSFJFSUJVTkc6CisgICAgIEVzIHdpcmQgaW4gZGllIE1hdGVyaWFsaWVuZGF0ZW5iYW5rIGVpbmUgbmV1ZXMgTWF0ZXJpYWwgYXVmZ2Vub21tZW4sCisgICAgIGRpZSBTdHJpbmdrb25zdGFudGUgZGFmdWVyIHdpcmQgdm9yaGVyIGluIDx0aGluZy9tYXRlcmlhbC5oPiBmZXN0LQorICAgICBnZWxlZ3QuIEZhbGxzIGRlciBHZW5pdGl2IG5pY2h0IE5vbWluYXRpdisicyIgZW50c3ByaWNodCAoei5CLiAiU2VpZGUiKSwKKyAgICAgc29sbHRlIGRpZXNlciBleHBsaXppdCBhbmdlZ2ViZW4gd2VyZGVuLgorICAgICBOYWNoIE5ldWxhZGVuIGRlciBEYXRlbmJhbmsgaXN0IGRpZXNlcyBNYXRlcmlhbCBhdWNoIHBlciBNYXRlcmlhbE5hbWUoKSwKKyAgICAgJ2Vya2VubmJhcicgKHNpZWhlIG1peGVkIGRpZiwgc2llaGUgQmVpc3BpZWwpIGJ6dy4gc2VpbmVuIGVpbnplbG5lbgorICAgICBHcnVwcGVuIHp1b3JkbmJhci4KKworQkVJU1BJRUxFOgorICAgICBBZGRNYXRlcmlhbChNQVRfTklUUk9HTFlDRVJJTkUsTkVVVEVSLCJOaXRyb2dseWNlcmluIiwKKyAgICAgICAgICAgICAgICAgKHtNQVRHUk9VUF9FWFBMT1NJVkUsTUFUR1JPVVBfRkxVSUR9KSwKKyAgICAgICAgICAgICAgICAgKHtNQVRfT0lMLDI1LE1BVF9NSVNDX0VYUExPU0lWRSw1MCxNQVRfTklUUk9HTFlDRVJJTkV9KSk7CisKKyAgICAgRGFtaXQgd2lyZCBkYXMgTWF0ZXJpYWwgTnl0cm9nbHljZXJpbiBhdWZnZW5vbW1lbiwgZWluIGV4cGxvc2l2ZXIKKyAgICAgKGRhbWl0IGVudGZsYW1tYmFyZXIpIHNvd2llIGZsdWVzc2lnZXIgU3RvZmYuIExpZWd0IGRpZSBFcmtlbm51bmdzLQorICAgICBmYWVoaWdrZWl0IChNYXRlcmlhbE5hbWUoKSkgdW50ZXIgMjUsIHdpcmQgZXMgbnVyIGFscyBPZWwgZXJrYW5udCwKKyAgICAgbGllZ3Qgc2llIHVudGVyIDUwLCB3aXJkIGVzIHp1bWluZGVzdCBhbHMgZXhwbG9zaXZlcyBNYXRlcmlhbCBlcmthbm50LAorICAgICBsaWVndCBzaWUgdWViZXIgNDksIHNvIHdpcmQgZXMga29ycmVrdCBlcmthbm50ICh3aWUgc2NoYWRlIDopICkuCisKK0JFTUVSS1VOR0VOOgorICAgICBXaXJkIGluIGRlciBjcmVhdGUoKSBkZXIgRGF0ZW5iYW5rIGF1ZmdlcnVmZW4uIFp1IGJlYWNodGVuOgorICAgICAtIHZvciBFaW50cmFnIGVpbmVzIF9uZXVlbl8gTWF0ZXJpYWxzIGRpZSBEYXRlbmJhbmsgZHVyY2hzdWNoZW4hCisgICAgIC0gYmVpIGRlbiBNYXRlcmlhbGllbmdydXBwZW4gZGllIGF1dG9tYXRpc2NoZW4gQWJoYWVuZ2lna2VpdGVuIGluCisgICAgICAgQWRkTWF0ZXJpYWwoKSBkdXJjaHNlaGVuIQorICAgICAtIGJpdHRlIERhdGVuYmFuayBuZXUgbGFkZW4KKworU0lFSEUgQVVDSDoKKyAgICAgS29uemVwdGU6CSAgbWF0ZXJpYWwsIG1hdGVyaWFsZXJrZW5udW5nCisgICAgIEdydW5kbGVnZW5kOiBQX01BVEVSSUFMLCAvc3lzL3RoaW5nL21hdGVyaWFsLmgKKyAgICAgTWV0aG9kZW46ICAgIFF1ZXJ5TWF0ZXJpYWwoKSwgUXVlcnlNYXRlcmlhbEdyb3VwKCksIE1hdGVyaWFsTGlzdCgpLAorICAgICBMaXN0ZW46CSAgQWxsTWF0ZXJpYWxzKCksIEFsbEdyb3VwcygpLCBEdW1wKCkKKwkJICBtYXRlcmlhbGxpc3RlLCBtYXRlcmlhbGdydXBwZW4KKyAgICAgTWFzdGVyOgkgIENvbnZNYXRlcmlhbExpc3QoKSwgTWF0ZXJpYWxHcm91cCgpLAorCQkgIEdyb3VwTmFtZSgpLCBNYXRlcmlhbE5hbWUoKSwKKwkJICBHZXRHcm91cE1lbWJlcnMoKSwgR2V0TWF0TWVtYmVyc2hpcCgpCisgICAgIFNvbnN0aWdlczoJICBQX01BVEVSSUFMX0tOT1dMRURHRQorCis3LiBNYWkgMjAwNCBHbG9pbnNvbgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2RvYy9sZnVuL0FkZE1pbmlRdWVzdCBiL2RvYy9sZnVuL0FkZE1pbmlRdWVzdApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi45MWU3ODU3Ci0tLSAvZGV2L251bGwKKysrIGIvZG9jL2xmdW4vQWRkTWluaVF1ZXN0CkBAIC0wLDAgKzEsNTQgQEAKK0FkZE1pbmlRdWVzdCgpCisKK0ZVTktUSU9OOgorICAgIGludCBBZGRNaW5pUXVlc3QoaW50IHN0dXBzZSwgc3RyaW5nIHF1ZXN0Z2ViZXIsIHN0cmluZyBkZXNjLCBpbnQgYWN0aXZlLAorICAgICAgICAgICAgICAgICAgICAgc3RyaW5nIHRpdGVsLCBzdHJpbmcgZXJsZWRpZ3QsIG1hcHBpbmcgdm9yYXVzc2V0enVuZ2VuLAorICAgICAgICAgICAgICAgICAgICAgc3RyaW5nIHJlZ2lvbiwgc3RyaW5nICplcmxhdWJ0ZSkKKworREVGSU5JRVJUIElOOgorICAgIC9zZWN1cmUvcXVlc3RtYXN0ZXIKKworQkVTQ0hSRUlCVU5HOgorICAgIERpZXNlIEZ1bmt0aW9uIHRyYWVndCBlaW5lIG5ldWUgTWluaXF1ZXN0IGltIFF1ZXN0bWFzdGVyIGVpbi4KKworQVJHVU1FTlRFOgorCisgICAgc3R1cHNlICg+MCkgIC0gQW56YWhsIFN0dWZlbnB1bmt0ZSwgZGllIGZ1ZXIgZGllIE1RIGd1dGdlc2NocmllYmVuIHdlcmRlbgorICAgIHF1ZXN0Z2ViZXIgICAtIExhZGVuYW1lIGRlcyBPYmpla3RzLCBkYXMgR2l2ZU1pbmlRdWVzdCgpIGF1ZnJ1ZnQKKyAgICBkZXNjICAgICAgICAgLSBBdWZnYWJlbmJlc2NocmVpYnVuZyBkZXIgTWluaXF1ZXN0CisgICAgYWN0aXZlICgwLzEpIC0gaXN0IGRpZSBNaW5pcXVlc3QgYWt0aXYsIGQuaC4gc3BpZWxiYXIsIG9kZXIgbmljaHQ/CisgICAgdGl0ZWwgICAgICAgIC0gVGl0ZWwgZGVyIE1pbmlxdWVzdCwgZGFyZiB3ZWRlciAiaW4iLCBub2NoICJpbSIgZW50aGFsdGVuLAorICAgICAgICAgICAgICAgICAgIHdlaWwgZGFubiBkZXIgRWludHJhZyBpbiBkZXIgRnJhdGVybml0YXMtQmlibGlvdGhlayBuaWNodAorICAgICAgICAgICAgICAgICAgIGdlbGVzZW4gd2VyZGVuIGthbm4uCisgICAgZXJsZWRpZ3QgICAgIC0gQmVzY2hyZWlidW5nIGRlciBNaW5pcXVlc3QsIG5hY2hkZW0gbWFuIHNpZSBlcmxlZGlndCBoYXQKKyAgICAgICAgICAgICAgICAgICBEZXIgVGV4dCBrYW5uIGluIGRlciBCaWJsaW90aGVrIGRlciBrbGVpbmVuIHVuZCBncm9zc2VuCisgICAgICAgICAgICAgICAgICAgSGVsZGVudGF0ZW4gaW4gZGVyIEZyYXRlcm5pdGFzIGVpbmdlc2VoZW4gd2VyZGVuLgorICAgIHZvcmF1c3NldHp1bmdlbiAtIE1hcHBpbmcgaW0gRm9ybWF0IHZvbiBQX1JFU1RSSUNUSU9OUyAocy4gZG9ydCksIHVtCisgICAgICAgICAgICAgICAgICAgZGllIFZvcmF1c3NldHp1bmdlbiBmZXN0enVsZWdlbiwgZGllIGVpbiBTcGllbGVyIAorICAgICAgICAgICAgICAgICAgIGVyZnVlbGxlbiBtdXNzLCB1bSBkaWUgTVEgdWViZXJoYXVwdCBzcGllbGVuIHp1IGtvZW5uZW4KKyAgICAgICAgICAgICAgICAgICBXaXJkIGZ1ZXIgZGllIHJlZ2lvbnNiZXpvZ2VuZW4gSW5mb3JtYXRpb25zcHVua3RlLy1OUENzCisgICAgICAgICAgICAgICAgICAgYXVzZ2V3ZXJ0ZXQuIDAgb2RlciAoW10pIGVpbnRyYWdlbiwgd2VubiBrZWluZSAKKyAgICAgICAgICAgICAgICAgICBWb3JhdXNzZXR6dW5nZW4gYmVzdGVoZW4uCisgICAgcmVnaW9uICAgICAgIC0gWnVvcmRudW5nIGRlciBNaW5pcXVlc3QgenUgZWluZXIgUmVnaW9uOyB3aXJkIGZ1ZXIgZGVyCisgICAgICAgICAgICAgICAgICAgQmlibGlvdGhlayBkZXIgRnJhdGVybml0YXMgdmVyd2VuZGV0LCB1bSBkaWUgTVFzIGRlcgorICAgICAgICAgICAgICAgICAgIGVpbnplbG5lbiBSZWdpb25lbiBoZXJhdXN6dWZpbHRlcm4uCisgICAgZXJsYXVidGUgICAgIC0gQXJyYXkgbWl0IExhZGVuYW1lbiB2b24gT2JqZWt0ZW4sIGRpZSBiZXJlY2h0aWd0IHNpbmQsCisgICAgICAgICAgICAgICAgICAgZGllIERhdGVuIGRlciBNUSBhYnp1ZnJhZ2VuLCB1bSBTcGllbGVybiBlaW5lbiBIaW53ZWlzCisgICAgICAgICAgICAgICAgICAgZGFyYXVmIHp1IGdlYmVuLCBkaWUgc2llIG5vY2ggbmljaHQgYmVzdGFuZGVuIGhhYmVuLgorCitSVUVDS0dBQkVXRVJURToKKyAgICAgMTogSGF0IGdla2xhcHB0CisgICAgLTE6IFBhcmFtZXRlcmZvcm1hdCBzdGltbXQgbmljaHQgKHF1ZXN0Z2ViZXIga2VpbiBTdHJpbmcgb2RlciBMZWVyc3RyaW5nLAorICAgICAgICB2b3JhdXNzZXR6dW5nZW4ga2VpbiBNYXBwaW5nLCByZWdpb24gb2RlciB0aXRlbCBrZWluZSBTdHJpbmdzLCAKKyAgICAgICAgZXJsYXVidGUga2VpbiBBcnJheSkKKyAgICAtMjogd2VuaWdlciBhbHMgMSBTdHVmZW5wdW5rdCBlaW56dXRyYWdlbiB2ZXJzdWNodAorICAgIC0zOiBEYXMgQXJyYXkgaW4gImVybGF1YnRlIiBpc3QgbGVlciwgb2RlciB6dW0gYW5nZWdlYmVuZW4gUXVlc3RnZWJlcgorICAgICAgICB3dXJkZSBrZWluZSBEYXRlaSBnZWZ1bmRlbi4KKyAgICAtNDogRGVyIGFuZ2VnZWJlbmUgUXVlc3RnZWJlciB2ZXJnaWJ0IHNjaG9uIGVpbmUgYW5kZXJlIE1pbmlxdWVzdAorCisKK1NJRUhFIEFVQ0g6CisgICAgR2l2ZU1pbmlRdWVzdChMKSwgSGFzTWluaVF1ZXN0KEwpCisgICAgUF9SRVNUUklDVElPTlMKKyAgICAvc2VjdXJlL3F1ZXN0bWFzdGVyLmMKKwpkaWZmIC0tZ2l0IGEvZG9jL2xmdW4vQWRkTW9uZXkgYi9kb2MvbGZ1bi9BZGRNb25leQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4yMjlkMWNjCi0tLSAvZGV2L251bGwKKysrIGIvZG9jL2xmdW4vQWRkTW9uZXkKQEAgLTAsMCArMSw2MiBAQAorQWRkTW9uZXkoTCkKK0ZVTktUSU9OOgorICAgICBwdWJsaWMgaW50IEFkZE1vbmV5KGludCBhbW91bnQpOworCitERUZJTklFUlQgSU46CisgICAgIC9zdGQvY29udGFpbmVyL21vbmV5aGFuZGxlci5jCisgICAgIC9zdGQvbGl2aW5nL21vbmV5aGFuZGxlci5jCisgICAgIC9zdGQvcGxheWVyL21vbmV5aGFuZGxlci5jCisKK0FSR1VNRU5URToKKyAgICAgaW50IGFtb3VudAorICAgICAgICAgRGllIHp1ZnVlaHJlbmRlIG9kZXIgYWJ6aWVoZW5kZSBHZWxkbWVuZ2UKKworQkVTQ0hSRUlCVU5HOgorICAgICBEZW0gU3BpZWxlciB3aXJkIGRpZSBpbiA8YW1vdW50PiBmZXN0Z2VsZWd0ZSBHZWxkbWVuZ2UgYWJnZXpvZ2VuIG9kZXIKKyAgICAgenVnZWZ1ZWhydC4KKworUlVlQ0tHQUJFV0VSVDoKKyAgICAgVGVjaG5pc2NoIGdlc2VoZW4gd2lyZCBHZWxkIG1pdCBlbnRzcHJlY2hlbmRlbSA8YW1vdW50PiBlcnpldWd0CisgICAgICgiL2l0ZW1zL21vbmV5LmMiKSB1bmQgbWl0dGVscyAibW92ZSIgaW4gZGVuIFNwaWVsZXIgYmV3ZWd0LiAgRGFzIEVyZ2VibmlzCisgICAgIGRpZXNlcyAibW92ZSItQXVmcnVmZXMgd2lyZCBoaWVyIHVlYmVyZ2ViZW4sIHouQi4gMSBmdWVyIE9LLgorICAgICBEaWUgbW9lZ2xpY2hlbiBGZWhsZXItS29uc3RhbnRlbiBzaW5kIGluIC9zeXMvbW92aW5nLmggZGVmaW5pZXJ0LCBzaWVoZQorICAgICBhdWNoIERva3VtZW50YXRpb24genUgIm1vdmUiLgorCitCRU1FUktVTkdFTjoKKyAgICAgPGFtb3VudD4ga2FubiBzb3dvaGwgcG9zaXRpdiBhbHMgYXVjaCBuZWdhdGl2IHNlaW4uIFdlbGNoZSBBdXN3aXJrdW5nZW4KKyAgICAgYmVpZGUgRmFlbGxlIGhhYmVuLCBzb2xsdGUga2xhciBzZWluLiBEb2NoIHNvbGx0ZSBiZWkgZWluZW0gbmVnYXRpdmVuCisgICAgIDxhbW91bnQ+IHZvcmhlciBtaXR0ZWxzIFF1ZXJ5TW9uZXkoKSBhYmdlZnJhZ3Qgd2VyZGVuLCBvYiBkZXIgU3BpZWxlcgorICAgICBhdWNoIHVlYmVyIGF1c3JlaWNoZW5kIEdlbGQgdmVyZnVlZ3QuCisgICAgIFdpcmQgZGVtIFNwaWVsZXIgR2VsZCBhYmdlem9nZW4sIGlzdCBkYXJhdWYgenUgYWNodGVuLCBkaWVzZXMgaW4gZGVyCisgICAgIFplbnRyYWxiYW5rIGVpbnp1emFobGVuIChzLmEuOlBheUluKCkgKS4gCisgICAgIFZlcnNjaGFmZnQgbWFuIGRlbSBTcGllbGVyIEdlbGQgYXVzIGRlbSBOaWNodHMsIG11c3MgZXMgdm9yaGVyIGJlaSBkZXIKKyAgICAgWmVudHJhbGJhbmsgYWJnZWJ1Y2h0IChXaXRoRHJhdygpKSB3ZXJkZW4uCisKKyAgICAgQWNodHVuZzogS2FubiBkZXIgU3BpZWxlciBkaWUgaW4gPGFtb3VudD4gYW5nZWJlbmUgR2VsZG1lbmdlIG5pY2h0CisJICAgICAgdHJhZ2VuLCB3ZXJkZW4gaWhtIGtlaW5lIE11ZW56ZW4gaW4gc2VpbiBJbnZlbnRhciBiZXdlZ3QuICBEaWUKKwkgICAgICBGZWhsZXJtZWxkdW5nIGVya2VubnQgbWFuIGFuIGRlbSBSdWVja2dhYmV3ZXJ0IE1FX1RPT19IRUFWWS4KKworICAgICBJbSBHZWdlbnNhdHogenUgU3BpZWxlcm4gaGFiZW4gYWxsZSBhbmRlcmVuIE9iamVrdGUgKFJhZXVtZSwgTlBDLCBldGMuKQorICAgICBzdGFuZGFyZG1hZXNzaWcga2VpbmVuIE1vbmV5aGFuZGxlci4gSW4gZGllc2VtIEZhbGwgbXVzcyBpbiBMZWJld2VzZW4KKyAgICAgIi9zdGQvbGl2aW5nL21vbmV5aGFuZGxlciIKKyAgICAgdW5kIGluIG5pY2h0LUxlYmV3ZXNlbgorICAgICAiL3N0ZC9jb250YWluZXIvbW9uZXloYW5kbGVyIgorICAgICBnZWVyYnQgd2VyZGVuLgorCitCRUlTUElFTEU6CisgICAgIC8vIGdpYiBpaG0gR2VsZAorICAgICB0aGlzX3BsYXllcigpLT5BZGRNb25leSg1MCk7CisKKyAgICAgLy8gbmltbSBpaG0gR2VsZAorICAgICBpZih0aGlzX3BsYXllcigpLT5BZGRNb25leSgtNTApPT0xKQorICAgICAgd3JpdGUoIkRlciBPcmsgYmVrbGF1dCBkaWNoIVxuIik7CisKK1NJRUhFIEFVQ0g6CisgICAgIEdlbGRoYW5kbGluZzoJUXVlcnlNb25leShMKQorICAgICBaZW50cmFsYmFuazoJUGF5SW4oTCksIFdpdGhEcmF3KEwpCisgICAgIFNvbnN0aWdlczoJCW1vdmUoTCksCisJCQkvaXRlbXMvbW9uZXkuYywgL3N5cy9tb3ZpbmcuaCwgL3N5cy9tb25leS5oLCAvc3lzL2JhbmsuaAorCQkJL3N0ZC9jb250YWluZXIvbW9uZXloYW5kbGVyLmMKKworMTguMDIuMjAxMywgWmVzc3RyYQorCmRpZmYgLS1naXQgYS9kb2MvbGZ1bi9BZGRNc2cgYi9kb2MvbGZ1bi9BZGRNc2cKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOTc0YzkwNQotLS0gL2Rldi9udWxsCisrKyBiL2RvYy9sZnVuL0FkZE1zZwpAQCAtMCwwICsxLDQyIEBACitBZGRNc2coKQorCitGVU5LVElPTjoKKyAgICAgdm9pZCBBZGRNc2coc3RyaW5nIG1zZywgaW50IG5leHQpOworCitERUZJTklFUlQgSU46CisgICAgIC9zdGQvdHJhbnNwb3J0LmMKKworQVJHVU1FTlRFOgorICAgICBtc2cKKyAgICAgICAgICBEaWUgYXVzenVnZWJlbmRlIE1lbGR1bmcuCisgICAgIG5leHQKKyAgICAgICAgICBaZWl0IGJpcyB6dXIgbmFlY2hzdGVuIEZhaHJwbGFuc3RhdGlvbi4KKworQkVTQ0hSRUlCVU5HOgorICAgICBEZW0gRmFocnBsYW4gd2lyZCBkaWUgQXVzZ2FiZSBlaW5lciBNZWxkdW5nIGFuIGRlbiBUcmFuc3BvcnRlcgorICAgICBoaW56dWdlZnVlZ3QuIERpZXNlIE1lbGR1bmcga29lbm50ZSB6dW0gQmVpc3BpZWwgZGFzIE5haGVuIGRlcgorICAgICBuYWVjaHN0ZW4gSGFsdGVzdGVsbGUgYW5rdWVuZGlnZW4gby5hZS4gTmFjaCBBdXNnYWJlIGRlciBNZWxkdW5nCisgICAgIHZlcmdlaGVuIG5leHQgU2VrdW5kZW4sIGJpcyBkaWUgbmFlY2hzdGUgU3RhdGlvbiBhbmdlZmFocmVuIHdpcmQuCisKKyAgICAgVW0gZGFzIFVtYnJlY2hlbiBkZXIgTWVsZHVuZyAobm9ybWFsZXJ3ZWlzZSBhdWYgNzggWmVpY2hlbiBwcm8gWmVpbGUpCisgICAgIG11c3Mgc2ljaCBkZXIgQXVmcnVmZXIgc2VsYmVyIGt1ZW1tZXJuLgorCitSVWVDS0dBQkVXRVJUOgorICAgICBrZWluZXIKKworQkVJU1BJRUxFOgorCisgICAgIEFkZE1zZygiSW4gZGVyIEZlcm5lIHRhdWNodCBlaW5lIGtsZWluZSBJbnNlbG4gYXVmLlxuIiwgMTApOworICAgICBBZGRNc2coIkRhcyBTY2hpZmYgc3RldWVydCBlaW5lbiBrbGVpbmVuIFN0ZWcgYW4uXG4iKTsKKyAgICAgQWRkUm91dGUoLi4uKTsKKworICAgICBOYWNoIGRlciBBbmt1ZW5kaWd1bmcgZGVyIEluc2VsIHZlcmdlaGVuIDEwIFNla3VuZGVuLCBiaXMgZGllIG5hZWNoc3RlCisgICAgIE1lbGR1bmcgYXVzZ2VnZWJlbiB3aXJkLiBEYSBiZWkgZGVyIHp3ZWl0ZW4gTWVsZHVuZyBrZWluZSBaZWl0CisgICAgIGFuZ2VnZWJlbiB3YXIsIGxlZ3QgZGFzIFNjaGlmZiBkaXJla3QgbmFjaCBkZXIgQXVzZ2FiZSBkZXIgTWVsZHVuZyBhbi4KKworU0lFSEUgQVVDSDoKKyAgICAgQWRkUm91dGUoKSwgQWRkRnVuKCksIC9zdGQvdHJhbnNwb3J0LmMKKworLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorMjUuMDEuMjAxNSwgWmVzc3RyYQorCmRpZmYgLS1naXQgYS9kb2MvbGZ1bi9BZGRQbGFudCBiL2RvYy9sZnVuL0FkZFBsYW50Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmE3OWJjZmYKLS0tIC9kZXYvbnVsbAorKysgYi9kb2MvbGZ1bi9BZGRQbGFudApAQCAtMCwwICsxLDU4IEBACitBZGRQbGFudCgpCisKK0ZVTktUSU9OOgorICAgICAgICB2YXJhcmdzIGludCBBZGRQbGFudChzdHJpbmcgZmlsZW5hbWUsIFtzdHJpbmd8c3RyaW5nKiBucGNJZF0pIAorCitERUZJTklFUlQgSU46CisgICAgICAgIC9zdGQvcm9vbS9rcmFldXRlci5jCisKK0FSR1VNRU5URToKKyAgICAgICAgZmlsZW5hbWUKKyAgICAgICAgICBEZXIgRmlsZW5hbWUgZGVzIEtyYXV0cyBkYXMgaGllciBnZWZ1bmRlbiB3ZXJkZW4gc29sbC4KKyAgICAgICAgbnBjSWQKKyAgICAgICAgICBEaWUgSUQgZWluZXMgTlBDcyBvZGVyIGRpZSBJRHMgZWluZXIgTGlzdGUgdm9uIE5QQ3MsIGRlci9kaWUgZGFzIAorICAgICAgICAgIEtyYXV0IGJld2FjaGVuIHNvbGwvZW4uIEJlZmluZGV0IHNpY2ggZWluIE5QQyBtaXQgZWluZXIgZGllc2VyIElEcworICAgICAgICAgIGltIFJhdW0sIGthbm4gZGFzIEtyYXV0IG5pY2h0IGdlcGZsdWVja3Qgd2VyZGVuLiBEaWVzZXMgQXJndW1lbnQgCisgICAgICAgICAgaXN0IG9wdGlvbmFsIQorCitSVWVDS0dBQkVXRVJUOgorICAgICAgICAtMSB3ZW5uIGRhcyBPYmpla3QgbmljaHQgZ2VjbG9udCB3ZXJkZW4ga29ubnRlCisgICAgICAgID49MCBzb25zdAorCitCRVNDSFJFSUJVTkc6CisgICAgICAgIE1pdCBIaWxmZSBkaWVzZXIgRnVua3Rpb24ga29lbm5lbiBLcmFldXRlciBmdWVyIGRlbiBtdWR3ZWl0ZW4KKyAgICAgICAgS3JhZXV0ZXJza2lsbCByZWNodCBlaW5mYWNoIGVpbmdlYmF1dCB3ZXJkZW4uIEFsbGVzIHdhcyBtYW4KKyAgICAgICAgbm9jaCBtYWNoZW4gbXVzcywgaXN0IGRlbiBOYW1lbiBkZXIgUGZsYW56ZSBpbiBlaW5lbSBEZXRhaWwgb2RlcgorICAgICAgICBkZXIgTGFuZ2Jlc2NocmVpYnVuZyB6dSBlcndhZWhuZW4uCisgICAgICAgIE1pdCBkZW0gQmVmZWhsICJzaG93cGxhbnQiIGluIC9vYmovdG9vbHMvcGxhbnR0b29sIGthbm4gbWFuIHNpY2ggCisgICAgICAgIGJlcXVlbSBhbnplaWdlbiBsYXNzZW4sIHdhcyBlcyBhbGxlcyBhbiBLcmFldXRlcm4gZ2lidCwgZGllIG1hbiAKKyAgICAgICAgbmVobWVuIGthbm4uCisKK0JFTUVSS1VOR0VOOgorICAgICAgICBEYW1pdCBkaWUgS3JhZXV0ZXIgdm9uIGRlbiBTcGllbGVybiB6dW0gQnJhdWVuIHZvbiBUcmFlbmtlbiBiZW51dHp0CisgICAgICAgIHdlcmRlbiBrb2VubmVuLCBtdXNzIGRlciBSYXVtIGVyc3QgaW4gZWluZW0gTWFzdGVyIGVpbmdldHJhZ2VuIHdlcmRlbi4KKyAgICAgICAgRGVyemVpdCBzY2hpY2t0IGlociBkYXp1IGFtIGJlc3RlbiBlaW5lIGt1cnplIE1haWwgYW4gZWluZW4gRXJ6bWFnaWVyLAorICAgICAgICBnZXJuZSBuaW1tdCBIdW1uaSBkaWUgZGVyemVpdCBlbnRnZWdlbi4KKyAgICAgICAgRGllIEtyYWV1dGVyIHd1cmRlbiB2b24gZGVyIEJhbGFuY2UgYmVyZWl0cyBhbGxlIGltIHZvcmhpbmVpbgorICAgICAgICBhYmdlbm9tbWVuLiBMZWRpZ2xpY2ggZGllIEVpbmhhbHR1bmcgZGVyIEthdGVnb3JpZW4gaXN0IHp1IGJlYWNodGVuLgorICAgICAgICBTaW5kIEtyYWV1dGVyIG5pY2h0IGltIE1hc3RlciBrb25maWd1cmllcnQgKHdpZSB6LkIuIGltIEhvbWVtdWQpLCBzaW5kCisgICAgICAgIGFsbGUgZXJ6ZXVndGVuIEtyYWV1dGVyIG51ciAiVGVzdGtyYWV1dGVyIiBtaXQgbnVyIGRlciBJRCAia3JhdXQiLgorCitCRUlTUElFTEU6CisgICAgICAgICNpbmNsdWRlIDxpdGVtcy9rcmFldXRlci9rcmFldXRlcmxpc3RlLmg+CisgICAgICAgIGluaGVyaXQgIi9zdGQvcm9vbS9rcmFldXRlciI7CisgICAgICAgIGluaGVyaXQgIi9zdGQvcm9vbSI7CisgICAgICAgIAorICAgICAgICB2b2lkIGNyZWF0ZSgpCisgICAgICAgIHsKKyAgICAgICAgICA6OmNyZWF0ZSgpOworICAgICAgICAgIFNldFByb3AoUF9JTlRfTE9ORywgIkR1IHNpZWhzdCBlaW5lIFdpZXNlIHZvbGxlciBGZWxka2xlZS5cbiIpOworICAgICAgICAgIEFkZFBsYW50KEZFTERLTEVFKTsKKyAgICAgICAgfQorCitTSUVIRSBBVUNIOgorICAgICAgICBBZGRJdGVtKCk7CisKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKzE4LjAxLjIwMTUsIFplc3N0cmEKKwpkaWZmIC0tZ2l0IGEvZG9jL2xmdW4vQWRkUGx1cmFsSWQgYi9kb2MvbGZ1bi9BZGRQbHVyYWxJZApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5mZDM3YmIyCi0tLSAvZGV2L251bGwKKysrIGIvZG9jL2xmdW4vQWRkUGx1cmFsSWQKQEAgLTAsMCArMSwyNyBAQAorQWRkUGx1cmFsSWQoKQorCitGVU5LVElPTjoKKyAgICAgdm9pZCBBZGRQbHVyYWxJZChtaXhlZCBpZCk7CisKK0RFRklOSUVSVCBJTjoKKyAgICAgL3N0ZC91bml0LmMKKworQVJHVU1FTlRFOgorICAgICBpZAorICAgICAgICAgIElkZW50ZmlrYXRpb25zc3RyaW5nIG9kZXIgQXJyYXkgdm9uIFN0cmluZ3MKKworQkVTQ0hSRUlCVU5HOgorICAgICBFcyB3ZXJkZW4gZWluIG9kZXIgbWVocmVyZSBCZXplaWNobmVyIGhpbnp1Z2VmdWVndCwgbWl0IGRlbmVuIHNpY2ggCisgICAgIG1laHJlcmUgRWluaGVpdGVuIGRlciBNZW5nZSBhbnNwcmVjaGVuIGxhc3Nlbi4KKworUlVlQ0tHQUJFV0VSVDoKKyAgICAga2VpbmVyCisKK0JFSVNQSUVMRToKKyAgICAgc2llaGUgL2l0ZW1zL21vbmV5LmMKKworU0lFSEUgQVVDSDoKKyAgICAgQWRkU2luZ3VsYXJJZCgpLCBSZW1vdmVQbHVyYWxJZCgpLCBBZGRJZCgpLCBpZCgpLCAvc3RkL3VuaXQuYworCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCitMYXN0IG1vZGlmaWVkOiBNb24gSnVsIDE0IDExOjMwOjAwIDE5OTcgYnkgU2lsdmFuYQpkaWZmIC0tZ2l0IGEvZG9jL2xmdW4vQWRkUHVyc3VlciBiL2RvYy9sZnVuL0FkZFB1cnN1ZXIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNDUxZWE5ZAotLS0gL2Rldi9udWxsCisrKyBiL2RvYy9sZnVuL0FkZFB1cnN1ZXIKQEAgLTAsMCArMSwyOSBAQAorQWRkUHVyc3VlcigpCisKK0ZVTktUSU9OOgorICB2b2lkIEFkZFB1cnN1ZXIob2JqZWN0IHB1cnN1ZXIpCisKK0FSR1VNRU5URToKKyAgcHVyc3VlcjogT2JqZWt0LCBkYXMgZGVtamVuaWdlbiBmb2xnZW4gc29sbCwgaW4gZGVtIEFkZFB1cnN1ZXIKKyAgICAgICAgICAgYXVmZ2VydWZlbiB3dXJkZS4KKworRlVOS1RJT046CisgIER1cmNoIGRlbiBBdWZydWYgdm9uIEFkZFB1cnN1ZXIgaW4gZWluZW0gT2JqZWt0LCB3ZWxjaGVzIGxpdmluZygpIGlzdCwKKyAgd2lyZCBkYXMgT2JqZWN0LCB3ZWxjaGVzIGFscyBBcmd1bWVudCB1ZWJlcmdlYmVuIHd1cmRlIGluIGRpZSBMaXN0ZQorICBkZXIgVmVyZm9sZ2VyIGVpbmdldHJhZ2VuLiBBbGxlIE9iamVrdGUsIGRpZSBpbiBkZXIgVmVyZm9sZ2VybGlzdGUgc3RlaGVuCisgIHdlcmRlbiBiZWkgQmV3ZWd1bmdlbiBkZXMgVmVyZm9sZ3RlbiBpbiBkYXNzZWxiZSBFbnZpcm9ubWVudCBiZXdlZ3QuCisKK1JVRUNLR0FCRVdFUlQ6CisgIGtlaW5lcgorCitCRU1FUktVTkc6CisgIEltIFZlcmZvbGdlciB3aXJkIFByZXZlbnRGb2xsb3cgbWl0IGRlbSBaaWVsb2JqZWt0LCBpbiBkYXMgZGVyIFZlcmZvbGd0ZSAKKyAgYmV3ZWd0IHdpcmQsIGF1ZmdlcnVmZW4uIERhZHVyY2gga2FubiBkZXIgcmFldW1saWNoZSBCZXJlaWNoLCBpbiBkZW0gCisgIHZlcmZvbGd0IHdpcmQsIGVpbmdlc2NocmFlbmt0IHdlcmRlbi4KKworQkVJU1BJRUxFOgorICBmaW5kX3BsYXllcigiam9mIiktPkFkZFB1cnN1ZXIoZmluZF9wbGF5ZXIoImtpcmsiKSkKKyAgRGFuYWNoIHdpcmQgSm9mIHZvbiBLaXJrIHZlcmZvbGd0LgorCitTSUVIRSBBVUNIOgorICAiUmVtb3ZlUHVyc3VlciIsICJQcmV2ZW50Rm9sbG93IgpkaWZmIC0tZ2l0IGEvZG9jL2xmdW4vQWRkUmVhZERldGFpbCBiL2RvYy9sZnVuL0FkZFJlYWREZXRhaWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYzhkZTc3NQotLS0gL2Rldi9udWxsCisrKyBiL2RvYy9sZnVuL0FkZFJlYWREZXRhaWwKQEAgLTAsMCArMSw4MCBAQAorQWRkUmVhZERldGFpbCgpCisKK0ZVTktUSU9OOgorICAgIHZvaWQgQWRkUmVhZERldGFpbChzdHJpbmd8c3RyaW5nKmtleXMsCisgICAgICAgICAgICAgICAgICAgICAgIHN0cmluZ3xzdHJpbmcqfG1hcHBpbmd8Y2xvc3VyZSBkZXNjKTsKKworREVGSU5JRVJUIElOOgorICAgIC9zdGQvdGhpbmcvZGVzY3JpcHRpb24uYworCitBUkdVTUVOVEU6CisgICAga2V5cworICAgICAgU3RyaW5nIG9kZXIgQXJyYXkgdm9uIFN0cmluZ3MgbWl0IGRlbiBOYW1lbiBkZXIgRGV0YWlscy4KKyAgICBkZXNjCisgICAgICBTdHJpbmcsIE1hcHBpbmcsIFN0cmluZy1BcnJheSBvZGVyIENsb3N1cmUgbWl0L3p1ciBCZXNjaHJlaWJ1bmcuCisKK0JFU0NIUkVJQlVORzoKKyAgICBEaWUgQmVzY2hyZWlidW5nIGRlciBEZXRhaWxzIDxrZXlzPiB3aXJkIGdlc2V0enQuIFdpZSBkaWUgRGV0YWlscworICAgIGJlaW0gTGVzZW4gYXVzZ2VnZWJlbiB3ZXJkZW4sIGhhZW5ndCBpbSB3ZXNlbnRsaWNoZW4gdm9tIFR5cCBkZXIKKyAgICBCZXNjaHJlaWJ1bmcgPGRlc2M+IGFiOgorICAgICAgPGRlc2M+IGlzdCBlaW4gU3RyaW5nLgorICAgICAgIEJlaW0gTGVzZW4gd2lyZCBkaWVzZXIgU3RyaW5nIHp1cnVlY2tnZWdlYmVuLgorICAgICAgPGRlc2M+IGlzdCBlaW4gU3RyaW5nLUFycmF5LgorICAgICAgIEJlaW0gTGVzZW4gd2lyZCB6dWZhZWxsaWcgZWluZXIgZGVyIFN0cmluZ3MgenVydWVja2dlZ2ViZW4uCisgICAgICA8ZGVzYz4gaXN0IGVpbiBNYXBwaW5nLgorICAgICAgICBEYXMgTWFwcGluZyBtdXNzIGZvbGdlbmRlbiBBdWZiYXUgaGFiZW46CisgICAgICAgICAgKFswOiAgICAgICAgIkRlZmF1bHR0ZXh0IiwKKyAgICAgICAgICAgICJyYXNzZTEiOiAicjF0ZXh0IiwgLi4uXSkuCisKKyAgICAgICAgRmFsbHMgZnVlciBkaWUgUmFzc2UgZGVzIGRhcyBEZXRhaWwgdW50ZXJzdWNoZW5kZW4gU3BpZWxlcnMgZWluCisgICAgICAgIEVpbnRyYWcgaW0gTWFwcGluZyBleGlzdGllcnQsIHdpcmQgZGVyIGVudHNwcmVjaGVuZGUgVGV4dAorICAgICAgICB6dXJ1ZWNrZ2VnZWJlbiwgYW5zb25zdGVuIGRlciBEZWZhdWx0dGV4dC4gQXVmIGRpZXNlIFdlaXNlIHNpbmQKKyAgICAgICAgcmFzc2VuYWJoYWVuZ2lnZSBUZXh0ZSBtb2VnbGljaC4KKyAgICAgIDxkZXNjPiBpc3QgZWluZSBDbG9zdXJlLgorICAgICAgICBJbiBkaWVzZW0gRmFsbCB3aXJkIGRpZSBDbG9zdXJlIGF1c2dlZnVlaHJ0IHVuZCBkYXMgRXJnZWJuaXMKKyAgICAgICAgenVydWVja2dlZ2ViZW4uIERpZSBDbG9zdXJlIGJla29tbXQgZGFiZWkgZGVuIE5hbWVuIGRlcyBEZXRhaWxzCisgICAgICAgIGFscyBQYXJhbWV0ZXIgdWViZXJnZWJlbi4KKworICAgIEZ1ZXIgbGVzYmFyZSBEZXRhaWxzIGtvZW5uZW4gRm9yc2NoZXJwdW5rdGUgZWluZ2V0cmFnZW4gd2VyZGVuLgorCisgICAgV2lsbCBtYW4gZWluIGxlc2JhcmVzIERldGFpbCBhbiBlaW5lbSBPYmpla3QgaGFiZW4sIHdlbGNoZXMgZGVyIFNwaWVsZXIKKyAgICBtaXQgImxpZXMgPGlkPiIgKDxpZD4gaXN0IGVpbmUgSUQgZGVzIE9iamVrdHMpIGJla29tbXQsIG11c3MgbWFuIGVpbgorICAgIERldGFpbCBTRU5TRV9ERUZBVUxUIGhpbnp1ZnVlZ2VuLgorICAgIChFaW4gRGV0YWlsICI8aWQ+IiBoaW56dXp1ZnVlZ2VuLCBoYXQgZWluZW4gZ2FueiBhbmRlcmVzIEVmZmVrdCEgRGllc2VzCisgICAgIHd1ZXJkZSB2b20gU3BpZWxlciBtaXQgImxpZXMgPGlkPiBhbiA8aWQ+IiBnZWxlc2VuIHdlcmRlbiB1bmQgaXN0CisgICAgIG1laXN0ZW5zIG5pY2h0IGRhcywgd2FzIGdld3VlbnNjaHQgd2lyZC4pCisKK0JFTUVSS1VOR0VOOgorICAgICgxKSBBdWYgZGllICdkZXNjJyB3aXJkIGtlaW4gcHJvY2Vzc19zdHJpbmcoKSBtZWhyIGFuZ2V3ZW5kZXQuCisgICAgICAgIEJpdHRlIHN0YXR0ZGVzc2VuIGxmdW4gY2xvc3VyZXMgYnp3LiAnaW5saW5lIGNsb3N1cmVzJworICAgICAgICB2ZXJ3ZW5kZW4uCisKKyAgICAoMikgSW0gR2VnZW5zYXR6IHp1bSBWZXJoYWx0ZW4gdm9uIEFkZFRvdWNoRGV0YWlsKCksIEFkZFNtZWxscygpIHVuZAorICAgICAgICBBZGRTb3VuZHMoKSB3aXJrdCBlaW4gU0VOU0VfREVGQVVMVC1EZXRhaWwgaW4gZWluZW0gUmF1bSBuaWNodC4KKyAgICAgICAgRWluIGVpbmZhY2hlcyAibGllcyIgYmxlaWJ0IGRhbm4gb2huZSBSdWVja2dhYmV3ZXJ0LgorCitCRUlTUElFTEU6CisgICAgQWRkUmVhZERldGFpbCggKHsgInNjaGlsZCIgfSksCisgICAgICAiQkVUUkVURU4gU1RSRU5HU1RFTlMgVkVSQk9URU4hXG4iICk7CisKKyAgICBBZGRSZWFkRGV0YWlsKCJpbnNjaHJpZnQiLAorICAgICAgICAgICAgICAgICAgKFswOiAiRG9ydCBzdGVodDogRWluIFJpbmcgc2llIHp1IGJpbmRlbi4gLi4uLlxuIiwKKyAgICAgICAgICAgICAgICAgICAgImVsZiI6ICJBbGxlcyBpbiBkaXIgc3RyYWV1YnQgc2ljaCwgREFTIERBIHp1IGxlc2VuLlxuIl0pKTsKKworICAgIEFkZFJlYWREZXRhaWwoInJlZ2VsbiIsCisgICAgICBmdW5jdGlvbiBzdHJpbmcoKSB7CisgICAgICAgIHRoaXNfcGxheWVyKCktPk1vcmUoIi9ldGMvV0laUlVMRVMiLCAxKTsKKyAgICAgICAgcmV0dXJuICIiOworICAgICAgfSk7CisKK1NJRUhFIEFVQ0g6CisgICAgU2V0emVuOiAgICBBZGREZXRhaWwoKSwgQWRkU21lbGxzKCksIEFkZFNvdW5kcygpLAorICAgICAgICAgICAgICAgQWRkVG91Y2hEZXRhaWwoKQorICAgIExvZXNjaGVuOiAgUmVtb3ZlRGV0YWlsKCksIFJlbW92ZVJlYWREZXRhaWwoKSwgUmVtb3ZlU21lbGxzKCksCisgICAgICAgICAgICAgICBSZW1vdmVTb3VuZHMoKSwgUmVtb3ZlVG91Y2hEZXRhaWwoKQorICAgIERhdGVuOiAgICAgUF9ERVRBSUxTLCBQX1JFQURfREVUQUlMUywgUF9TTUVMTFMsIFBfU09VTkRTLCBQX1RPVUNIX0RFVEFJTFMKKyAgICBWZXJhbHRldDogIEFkZFNwZWNpYWxEZXRhaWwoKSwgUmVtb3ZlU3BlY2lhbERldGFpbCgpLCBQX1JFQURfTVNHCisgICAgU29uc3RpZ2VzOiBHZXREZXRhaWwoKSwgYnJlYWtfc3RyaW5nKCkKKworMjAuMDEuMjAxNSwgWmVzc3RyYQorCmRpZmYgLS1naXQgYS9kb2MvbGZ1bi9BZGRSZXNpc3RhbmNlTW9kaWZpZXIgYi9kb2MvbGZ1bi9BZGRSZXNpc3RhbmNlTW9kaWZpZXIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNjQ3NmY4NgotLS0gL2Rldi9udWxsCisrKyBiL2RvYy9sZnVuL0FkZFJlc2lzdGFuY2VNb2RpZmllcgpAQCAtMCwwICsxLDQ5IEBACitBZGRSZXNpc3RhbmNlTW9kaWZpZXIoKQorCitGVU5LVElPTjoKKyAgICAgdmFyYXJncyBpbnQgQWRkUmVzaXN0YW5jZU1vZGlmaWVyKG1hcHBpbmcgbW9kLCBzdHJpbmcgYWRkKQorCitERUZJTklFUlQgSU46CisgICAgIC9zdGQvbGl2aW5nL2NvbWJhdC5jCisKK0FSR1VNRU5URToKKyAgICAgbWFwcGluZyBtb2Q6CisgICAgICBNYXBwaW5nIG1pdCBTY2hhZGVuc2FydGVuIHVuZCBpaHJlbSBSZXNpc3Rlbnptb2RpZmlrYXRvciAoZGVyIGltIEJlcmVpY2gKKyAgICAgIHZvbiAtMS4wIGJpcyAreCBsaWVnZW4ga2FubiksIHouQi4gKFtEVF9GSVJFOi0xLjBdKSAoVG90YWxyZXNpc3RlbnopLgorICAgICBzdHJpbmcgYWRkOgorICAgICAgRWluIElkZW50aWZpa2F0b3IgZnVlciBfZGllc2VuXyBFaW50cmFnIGRlcyBzZXR6ZW5kZW4gT2JqZWt0ZXMuCisKK0JFU0NIUkVJQlVORzoKKyAgICAgRXMgd2VyZGVuIFJlc2lzdGVuemVuIGluIGRlbSBPYmpla3QgZ2VzZXR6dCwgZGllIHNvbGFuZ2UgYmVzdGVoZW4sIHdpZQorICAgICBkYXMgc2V0emVuZGUgT2JqZWt0IGV4aXN0aWVydCwgb2RlciBuaWNodCBSZW1vdmVSZXNpc3RhbmNlTW9kaWZpZXIKKyAgICAgKG1pdCBldmVudHVlbGxlbSBTY2hsdWVzc2VsIGFkZCkgYXVmZ2VydWZlbiB3aXJkLiBadXNhZXR6bGljaGUgUmVzaXN0ZW56ZW4KKyAgICAgd2VyZGVuIGVpbmdlcmVjaG5ldC4KKworQkVNRVJLVU5HRU46CisgICAgIEZ1ZXIgUnVlc3R1bmdlbiBrYW5uIHVuZCBzb2xsdGUgbWFuIFBfUkVTSVNUQU5DRV9TVFJFTkdUSFMgdmVyd2VuZGVuLgorCitCRUlTUElFTEU6CisgICAgIC8vIE9lbCBtaXQgdmVydmllcmZhY2h0ZW0gRmV1ZXJzY2hhZGVuCisgICAgIGludCBhZGRfYWN0aW9uKCkgeworICAgICAgLi4uCisgICAgICB3cml0ZShicmVha19zdHJpbmcoIkR1IHNjaHVldHRlc3QgZGFzIE9lbCB1ZWJlciAiKworCQkJIG5wYy0+bmFtZShXRU4pKyIuIiw3OCkpOworICAgICAgLi4uCisgICAgICBucGMtPkFkZFJlc2lzdGFuY2VNb2RpZmllcigoW0RUX0ZJUkU6My4wXSksICJvZWwiKTsKKyAgICAgIFNldFByb3AoUF9JTlZJUywxKTsKKyAgICAgIFNldFByb3AoUF9FWFRSQV9MT09LLCAiVWViZXJhbGwgdHJvcGZ0IE9lbCBoZXJ1bnRlci5cbiIpOworICAgICAgbW92ZShucGMsTV9OT0NIRUNLKTsKKyAgICAgIC4uLgorICAgICB9CisKK1JVZUNLR0FCRVdFUlQ6CisgICAgIDEgZnVlciBFcmZvbGcKKworU0lFSEUgQVVDSDoKKyAgICAgTW9kaWZpa2F0b3JlbjoJUmVtb3ZlUmVzaXN0YW5jZU1vZGlmaWVyKCksIFBfUkVTSVNUQU5DRV9NT0RJRklFUgorICAgICBzaW1wbGUgUmVzaXN0ZW56OglQX1JFU0lTVEFOQ0UsIFBfVlVMTkVSQUJJTElUWQorICAgICBIYXVwdG1hcHBpbmc6CVBfUkVTSVNUQU5DRV9TVFJFTkdUSFMKKyAgICAgQmVyZWNobnVuZzoJQ2hlY2tSZXNpc3RhbmNlKCksIFVwZGF0ZVJlc2lzdGFuY2VTdHJlbmd0aHMoKQorICAgICBhbmRlcmVzOgkJYmFsYW5jZSwgL3N0ZC9hcm1vdXIvY29tYmF0LmMsIC9zdGQvbGl2aW5nL2NvbWJhdC5jCisKKzI5LkFwciAyMDAyLCBHbG9pbnNvbkBNRwpkaWZmIC0tZ2l0IGEvZG9jL2xmdW4vQWRkUm9vbUNtZCBiL2RvYy9sZnVuL0FkZFJvb21DbWQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNWUyMDZmZQotLS0gL2Rldi9udWxsCisrKyBiL2RvYy9sZnVuL0FkZFJvb21DbWQKQEAgLTAsMCArMSwxMyBAQAorQWRkUm9vbUNtZCgpCisKK1NZTlRBWDoKKwlBZGRSb29tQ21kKCBzdHJpbmcga29tbWFuZG8sIHN0cmluZyBmdW5rdGlvbiApOworCUFkZFJvb21DbWQoIHN0cmluZyAqa29tbWFuZG9zLCBzdHJpbmcgZnVua3Rpb24gKTsKKworRlVOS1RJT046CisJCisJRGllc2UgRnVua3Rpb24gaXN0IHZlcmFsdGV0LiBTaWUgd2lyZCB2b2xsc3RhZW5kaWcgZHVyY2gKKwlkaWUgRnVua3Rpb24gQWRkQ21kIGVyc2V0enQuCisKK1NJRUhFIEFVQ0g6CisJIkFkZENtZCIKZGlmZiAtLWdpdCBhL2RvYy9sZnVuL0FkZFJvb21NZXNzYWdlIGIvZG9jL2xmdW4vQWRkUm9vbU1lc3NhZ2UKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNGE5Y2ExMgotLS0gL2Rldi9udWxsCisrKyBiL2RvYy9sZnVuL0FkZFJvb21NZXNzYWdlCkBAIC0wLDAgKzEsODAgQEAKK0FkZFJvb21NZXNzYWdlKCkKKworRlVOS1RJT046CisgICAgIHZvaWQgQWRkUm9vbU1lc3NhZ2Uoc3RyaW5nICptc2csIGludCB0aW1lLCBtaXhlZCAqZnVuYyk7CisKK0RFRklOSUVSVCBJTjoKKyAgICAgL3N0ZC9yb29tL2Rlc2NyaXB0aW9uLmMKKworQVJHVU1FTlRFOgorICAgICBtc2cKKyAgICAgICAgICBBcnJheSB2b24gU3RyaW5ncyBtaXQgZGVuIE1lbGR1bmdlbi4KKyAgICAgdGltZQorICAgICAgICAgIERlciBBYnN0YW5kIHp3aXNjaGVuIHp3ZWkgTWVsZHVuZ2VuIGluIFNla3VuZGVuLgorICAgICBmdW5jIChvcHRpb25hbCkKKyAgICAgICAgICBTdHJpbmcgb2RlciBBcnJheSB2b24gU3RyaW5ncyBtaXQgRnVua3Rpb25zbmFtZW4KKworQkVTQ0hSRUlCVU5HOgorICAgICBNaXQgZGllc2VyIEZ1bmt0aW9uIGxlZ3QgbWFuIGZlc3QsIGRhc3MgaW4gYmVzdGltbXRlbiBaZWl0YWJzdGFlbmRlbgorICAgICBNZWxkdW5nZW4gYW4gZGVuIFJhdW0gZ2VzY2hpY2t0IHdlcmRlbiBzb2xsZW4uCisKKyAgICAgRXMgd2lyZCBhbGxlIHRpbWUgU2VrdW5kZW4genVmYWVsbGlnIGVpbmUgZGVyIGluIG1zZyBhbmdlZ2ViZW5lbgorICAgICBNZWxkdW5nZW4gYXVzZ2VnZWJlbi4gSGF0IG1hbiBhdWNoIG5vY2ggZnVuYyBhbmdlZ2ViZW4sIHNvIHdpcmQKKyAgICAgenVzYWV0emxpY2ggZGllc2UgRnVua3Rpb24gKGJlaSBlaW5lbSBBcnJheTogZWluZSB6dWZhZWxsaWcgYXVzZ2VzdWNodGUKKyAgICAgRnVua3Rpb24pIGltIFJhdW0gYXVmZ2VydWZlbi4gQWxzIFBhcmFtZXRlciBiZWtvbW10IGRpZSBGdW5rdGlvbiBkaWUKKyAgICAgTnVtbWVyIGRlciBhdXNnZWdlYmVuZW4gTWVsZHVuZy4KKworICAgICBCZXZvciBtYW4gYWxsZXJkaW5ncyBqZWRlbiBSYXVtIG1pdCBBZGRSb29tTWVzc2FnZSgpIHBmbGFzdGVydCwgc29sbHRlCisgICAgIG1hbiBmb2xnZW5kZXMgYmVkZW5rZW46CisgICAgICAgIG8gVmllbGUgTWVsZHVuZ2VuIGluIHZpZWxlbiBSYWV1bWVuIHRlbmRpZXJlbiBkYXp1LCBkZW4gU3BpZWxlcm4gYXVmCisgICAgICAgICAgZGllIE5lcnZlbiB6dSBnZWhlbiEKKyAgICAgICAgbyBEYSBkYXMgVGltaW5nIHVlYmVyIGVpbmVuIGNhbGxfb3V0KCkgZ2VzdGV1ZXJ0IHdpcmQsIGlzdCBkYXMgR2FuemUKKyAgICAgICAgICBhdXMgU2ljaHQgZGVzIEdhbWVEcml2ZXJzIGF1Y2ggbm9jaCByZWxhdGl2IHRldWVyIQorICAgICBGYXppdDogd2VuaWdlciBpc3QgbWVociEKKworQkVNRVJLVU5HRU46CisgICAgICogRmFsbHMgdGltZSA8IDE1IFNla3VuZGVuIGlzdCwgd2lyZCBhdWYgMTUgU2VrdW5kZW4gYXVmZ2VydW5kZXQuCisgICAgICogZGVyIFByYWVmaXggQWRkLi4uIHRhZXVzY2h0IGhpZXIuIEVpbiBBdWZydWYgdm9uIEFkZFJvb21NZXNzYWdlKCkKKyAgICAgICB1ZWJlcnNjaHJlaWJ0IGFsbGUgdm9yaGVyaWdlbiBXZXJ0ZQorICAgICAqIFRISVNfUExBWUVSKCkgTklDSFQgVkVSV0VOREVOIQorICAgICBJbiBGdW5rdGlvbmVuLCBkaWUgZHVyY2ggQWRkUm9vbU1lc3NhZ2UoKSBhdXNnZWxvZXN0IHdlcmRlbiwgZGFyZgorICAgICB0aGlzX3BsYXllcigpIG5pY2h0IHZlcndlbmRldCB3ZXJkZW4uIEFkZFJvb21NZXNzYWdlIGlzdCBjYWxsX291dC0KKyAgICAgZ2VzdGV1ZXJ0IHVuZCBzcGVpY2hlcnQgc29taXQgZGFzIHRoaXNfcGxheWVyKCkuIERhbWl0IGlzdCB0aGlzX3BsYXllcigpCisgICAgIGltbWVyIGRlciBTcGllbGVyLCBkZXIgZGVuIFJhdW0gZ2VsYWRlbiwgYWxzbyBkZW4gUmF1bSBhbHMgZXJzdGVyCisgICAgIGJldHJldGVuIGhhdC4gCisgICAgIFNwaWVsZXIgYWxzbyBiaXR0ZSBzZWxic3QgdWViZXIgZmlsdGVyKGFsbF9pbnZlbnRvcnkodGhpc19vYmplY3QoKSksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMnaW50ZXJhY3RpdmUpIHN1Y2hlbi4KKworQkVJU1BJRUxFOgorICAgICBFcyBzb2xsIGFsbGUgaGFsYmUgTWludXRlIGVpbmUgTWVsZHVuZyBhdXNnZWdlYmVuIHdlcmRlbi4gRmFsbHMgZXMKKyAgICAgdW50ZXIgZGVuIEZ1ZXNzZW4ga25hY2t0LCBzb2xsIG1hbiB6dWRlbSBtaXQgMzAlLWlnZXIKKyAgICAgV2FocnNjaGVpbmxpY2hrZWl0IHp1c2FtbWVuenVja2VuOgorCisgICAgIGluaGVyaXQgIi9zdGQvcm9vbSI7CisKKyAgICAgdm9pZCBjcmVhdGUoKSB7CisgICAgICAgOjpjcmVhdGUoKTsKKyAgICAgICBBZGRSb29tTWVzc2FnZSggKHsgIkluIGRlciBGZXJuZSBzY2hyZWl0IGVpbiBLYWV1emNoZW4uXG4iLAorICAgICAgICAgICAgICAgICAgICAgICAgICAiRXMgcmFzY2hlbHQgaW0gR2VidWVzY2guXG4iLAorICAgICAgICAgICAgICAgICAgICAgICAgICAiRXR3YXMga25hY2t0IHVudGVyIERlaW5lbiBGdWVzc2VuLlxuIiB9KSwKKyAgICAgICAgICAgICAgICAgICAgICAgIDMwLCAoeyJzb3VuZCIsICJzb3VuZF9tb3JlX3JuZCJ9KSApOworICAgICAgIC4uLgorICAgICB9CisKKyAgICAgdm9pZCBzb3VuZChpbnQgbXNnKSB7CisgICAgICAgaWYgKG1zZyA9PSAyKSAgICAgICAgIC8vIEVzIGhhdCBnZWtuYWNrdC4uLgorICAgICAgICAgaWYgKHJhbmRvbSgxMCkgPCAzKSAvLyBTY2hyZWNrIGxhc3MgbmFjaCEgOy0pCisgICAgICAgICAgIHRlbGxfcm9vbSh0aGlzX29iamVjdCgpLCAiRXJzY2hyb2NrZW4gZmFlaHJzdCBEdSB6dXNhbW1lbiFcbiIgKTsKKyAgICAgfQorCisgICAgIC8vIEV4dHJhLUJlaXNwaWVsOiB3aXIgc2V0emVuIGRpZSBXYXJ0ZWRhdWVyIChQYXJhbWV0ZXIgdGltKSBuZXUKKyAgICAgdm9pZCBzb3VuZF9tb3JlX3JuZCgpIHsKKyAgICAgICBzb3VuZCgwKTsgICAvLyBkaWUgTWVzc2FnZS1OdW1tZXIgaXN0IGhpZXIgdW53aWNodGlnCisgICAgICAgU2V0UHJvcChQX01TR19QUk9CLCAyNStyYW5kb20oMjApKTsgIC8vIG5ldWUgV2FydGVkYXVlcgorICAgICB9CisKK1NJRUhFIEFVQ0g6CisgICAgIFZlcndhbmR0OiB0ZWxsX3Jvb20oKSwgUmVjZWl2ZU1zZygpCisgICAgIFByb3BzOiAgICBQX1JPT01fTVNHLCBQX0ZVTkNfTVNHLCBQX01TR19QUk9CCisKKzIuRmViIDIwMTYgR2xvaW5zb24KZGlmZiAtLWdpdCBhL2RvYy9sZnVuL0FkZFJvdXRlIGIvZG9jL2xmdW4vQWRkUm91dGUKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uM2NhMDA5MwotLS0gL2Rldi9udWxsCisrKyBiL2RvYy9sZnVuL0FkZFJvdXRlCkBAIC0wLDAgKzEsODQgQEAKK0FkZFJvdXRlKCkKK0ZVTktUSU9OOgorICAgIHB1YmxpYyB2YXJhcmdzIHZvaWQgQWRkUm91dGUoc3RyaW5nIHJvb20sIGludCBzdGF5LCBpbnQgbmV4dCwgCisgICAgICAgIHN0cmluZyBoYXJib3VyX2Rlc2MsIG1peGVkIGRlc3RfaWRzLCBzdHJpbmcgZGVzdHN0cikKKworREVGSU5JRVJUIElOOgorICAgIC9zdGQvdHJhbnNwb3J0LmMKKworQVJHVU1FTlRFOgorICAgIHN0cmluZyByb29tCisgICAgICAgIEZpbGVuYW1lIGRlciBIYWx0ZXN0ZWxsZSAoZGVzIFppZWxzKQorICAgIGludCBzdGF5CisgICAgICAgIEF1ZmVudGhhbHRzemVpdCBhbiBkZXIgSGFsdGVzdGVsbGUuCisgICAgaW50IG5leHQKKyAgICAgICAgRmFocnR6ZWl0IHZvbiBkb3J0IGJpcyB6dW0gbmFlY2hzdGVuIEZhaHJwbGFucHVua3QKKyAgICBzdHJpbmcgaGFyYm91cl9kZXNjCisgICAgICAgIE5hbWUgZGVyIEhhbHRlc3RlbGxlIChmdWVyIFF1ZXJ5QXJyaXZlZCkKKyAgICBtaXhlZCBkZXN0X2lkcworICAgICAgICBrbGVpbmdlc2NocmllYmVuZSBJRHMgZGVyIEhhbHRlc3RlbGxlCisgICAgc3RyaW5nIGRlc3Ryc3RyCisgICAgICAgIFVuYmVudXR6dCAvIFVuZGVmaW5pZXJ0LgorCitCRVNDSFJFSUJVTkc6CisgICAgRGVtIEZhaHJwbGFuIGRlcyBUcmFuc3BvcnRlcnMgd2lyZCBlaW5lIG5ldWUgSGFsdGVzdGVsbGUgaGluenVnZWZ1ZWd0LgorCisgICAgQmVpIEVycmVpY2hlbiBkZXIgSGFsdGVzdGVsbGUgd2lyZCBkZXIgVHJhbnNwb3J0ZXIgaW4gZGVuIFJhdW0gJ3Jvb20nCisgICAgYmV3ZWd0IHVuZCBzaWNodGJhciBnZW1hY2h0LiBOdW4ga2FubiBtYW4gaWhuIGZ1ZXIgJ3N0YXknIFNla3VuZGVuCisgICAgYmV0cmV0ZW4gb2RlciB2ZXJsYXNzZW4sIGJldm9yIGVyIGFibGVndCAodW5zaWNodGJhciBnZW1hY2h0IHdpcmQpLgorICAgIE5hY2ggJ25leHQnIFNla3VuZGVuIHdpcmQgZGFubiBkZXIgbmFlY2hzdGUgUHVua3QgZGVzIEZhaHJwbGFucworICAgIGF1c2dlZnVlaHJ0LgorICAgICAKKyAgICAnaGFyYm91cl9kZXNjJyBpc3QgZWluIFN0cmluZywgZGVuIFF1ZXJ5QXJyaXZlZCgpIHp1cnVlY2tnaWJ0LCB3ZW5uIHNpY2gKKyAgICBkZXIgVHJhbnNwb3J0ZXIgYW4gZWluZXIgSGFsdGVzdGVsbGUgYmVmaW5kZXQuIEluIGRlciBSZWdlbCBpc3QgZGFzIGVpbgorICAgIFN0cmluZywgZGVyIGRpZSBIYWx0ZXN0ZWxsZSBuYWVoZXIgYmVzY2hyZWlidC4KKyAgICAKKyAgICAnZGVzdF9pZHMnIGlzdCBlaW4gQXJyYXkgdm9uIFN0cmluZ3MsIGRpZSBhbHMgSUQtQ29kZSBmdWVyIGRpZXNlIAorICAgIEhhbHRzdGVsbGUgZGllbmVuLiBEYXMgd2lyZCB6QiBiZWkgZGVyIEVybWl0dGx1bmcgZWluZXIgSGFsdGVzdGVsbGUgYmVpIAorICAgICJyZWlzZSBuYWNoIiBiZW51dHp0LiBXZW5uICdkZXN0X2lkcycgbmljaHQgZ2VzZXR6dCBpc3QsIHVuZCBhdWNoIAorICAgIFBfSEFSQk9VUiBkZXMgWmllbGhhZmVucyBuaWNodCBrb3JyZWt0IGdlc2V0enQgaXN0LCB3ZXJkZW4gCisgICAgZ3Jvc3NnZXNjaHJpZWJlbmUgQmVncmlmZmUgYXVzICdoYXJib3VyX2Rlc2MnIHZlcndlbmRldC4KKworQkVJU1BJRUxFOgorICAgICMxIEhpZXIgZWluIEF1c3p1ZyBhdXMgL2QvaW5zZWxuL3NjaGlmZmUvam9sbGUuYzoKKworICAgICAgQWRkUm91dGUoIi9kL2ViZW5lL3Jvb20vUG9ydFZhaW4vcG9faGFmMiIsIDQwLAorICAgICAgICAgICAgICAgMTAsICJIYWZlbiB2b24gUG9ydCBWYWluIik7CisKKyAgICBEaWUgSm9sbGUgd2lyZCBhbHNvIGJlaW0gQW5sZWdlbiBpbiBkZW4gUG9ydCBWYWluZXIgSGFmZW4gYmV3ZWd0IHVuZAorICAgIGxhZXNzdCBzaWNoIGRvcnQgNDAgU2VrdW5kZW4gbGFuZyBiZXRyZXRlbiBvZGVyIHZlcmxhc3Nlbi4KKyAgICBRdWVyeUFycml2ZWQoKSBsaWVmZXJ0IHdhZWhyZW5kIGRpZXNlciBaZWl0IGRlbiBTdHJpbmcgIkhhZmVuIHZvbiBQb3J0CisgICAgVmFpbiIgenVydWVjay4gTmFjaCBkZW4gNDAgU2VrdW5kZW4gbGVndCBkaWUgSm9sbGUgYWIsIHVuZCBuYWNoCisgICAgd2VpdGVyZW4gMTAgU2VrdW5kZW4gd2lyZCBkaWUgbmFlY2hzdGUgU3RhdGlvbiBpbiBpaHJlbSBGYWhycGxhbgorICAgIGFuZ2VmYWhyZW4uCisKKyAgICAjMiBEaWUgR2FsZWVyZSBuYWNoIE9ya2hhdXNlbjoKKyAgICAgIEFkZFJvdXRlKElOU0VMKCJzdGVnIiksIDMwLCAyMCwgIlZlcmxvcmVuZSBMYW5kICggT3JraGF1c2VuICkiICk7CisgICAgICAtIGhhZWx0IDMwIFNla3VuZGVuCisgICAgICAtIHJlaXN0IDIwIFNla3VuZGVuCisgICAgICAtIHJlaXN0IG5hY2ggSU5TRUwoInN0ZWciKSwgYmVrYW5udCBhbHMgIlZlcmxvcmVuZSBMYW5kICggT3JraGF1c2VuICkiCisgICAgICAtIGRhIGtlaW5lICdkZXN0X2lkcycgYW5nZWdlYmVuIHNpbmQsIHdhZXJlIGVpbmUgc28gZGVmaW5pZXJ0ZSAKKyAgICAgICAgSGFsdHN0ZWxsZSBudXIgbWl0IGRlbiBJRHMgYW5zcHJlY2hiYXIsIGRpZSBpbiBQX0hBUkJPVVJTIGltIFppZWxyYXVtCisgICAgICAgIGFuZ2VnZWJlbiBzaW5kLgorCisgICAgV2VubiBtYW4gbnVuIGVycmVpY2hlbiB3b2xsdGUsIGRhc3MgZGFzIFppZWwgYXVjaCBtaXQgZGVtIEt1ZXJ6ZWwgInZsYW5kIgorICAgIGFuc3ByZWNoYmFyIGlzdCwga2FubiBtYW4genVtIGVpbmVuIGV4cGxpeml0ZSAnZGVzdF9pZHMnIGVpbnRyYWdlbjoKKyAgICAgIEFkZFJvdXRlKElOU0VMKCJzdGVnIiksIDMwLCAyMCwgIlZlcmxvcmVuZSBMYW5kICggT3JraGF1c2VuICkiLAorICAgICAgICAgICAgICAgKHsidmVybG9yZW5lcyIsICJsYW5kIiwgIm9ya2hhdXNlbiIsICJ2bGFuZCJ9KSk7CisgICAgRGllcyBsYWVzc3Qgc2ljaCBpbSBaaWVsaGFmZW4gYWJlciBhdWNoIGR1cmNoIEVpbnRyYWdlbiBkZXMgS3VlcnplbHMKKyAgICAidmxhbmQiIGluIFBfSEFSQk9VUiBlcnJlaWNoZW4uIERpZXMgaGF0IGRlbiBWb3J0ZWlsLCBkYXNzIGRpZXNlciBIYWZlbgorICAgIGRhbm4gdm9uIGFsbGVuIFRyYW5zcG9ydGVybiwgZGllIGRvcnQgYW5sZWdlbiwgdW50ZXIgZGVtc2VsYmVuIE5hbWVuCisgICAgZXJyZWljaHQgd2VyZGVuIGthbm4uCisgICAgCitISU5XRUlTRToKKyAgICBEYWR1cmNoLCBkYXNzIGRpZSBFaW50cmFlZ2UgYXVzIFBfSEFSQk9VUiB1bmQgJ2Rlc3RfaWRzJyBnbGVpY2hiZXJlY2h0aWd0CisgICAgZnVlciAicmVpc2UgbmFjaCA8emllbD4iIHZlcndlbmRldCB3ZXJkZW4ga29lbm5lbiwgaXN0IGVzIG1vZWdsaWNoLAorICAgIGRhc3MgZGllIFJlaXNlemllbGUgYXVmIGVpbmVtIFNjaGlmZiB1bnRlciB6dXNhZXR6bGljaGVuIEJlemVpY2hudW5nZW4gCisgICAgYmVrYW5udCBzaW5kLCBhbHMgYW4gTGFuZCAoenVtIEJlaXNwaWVsIGtvZW5udGUgZWluZSBmZXJud2VzdGxpY2hlCisgICAgQmVzYXR6dW5nIGRpZSBaaWVsZSBhbmRlcnMgbmVubmVuKS4KKworU0lFSEUgQVVDSDoKK0Z1bmt0aW9uZW46ICBBZGRNc2coTCksIEFkZEZ1bihMKSwgL3N0ZC90cmFuc3BvcnQuYworUHJvcGVydGllczogIFBfSEFSQk9VUiwgUF9OT19UUkFWRUxJTkcsIFBfVFJBVkVMX0lORk8KKworMjAxNS1KYW4tMTgsIEFyYXRob3JuLgpkaWZmIC0tZ2l0IGEvZG9jL2xmdW4vQWRkU2luZ3VsYXJJZCBiL2RvYy9sZnVuL0FkZFNpbmd1bGFySWQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZDk1NjU2NwotLS0gL2Rldi9udWxsCisrKyBiL2RvYy9sZnVuL0FkZFNpbmd1bGFySWQKQEAgLTAsMCArMSwyNyBAQAorQWRkU2luZ3VsYXJJZCgpCisKK0ZVTktUSU9OOgorICAgICB2b2lkIEFkZFNpbmd1bGFySWQobWl4ZWQgaWQpOworCitERUZJTklFUlQgSU46CisgICAgIC9zdGQvdW5pdC5jCisKK0FSR1VNRU5URToKKyAgICAgaWQKKyAgICAgICAgICBJZGVudGlmaWthdGlvbnNzdHJpbmcgb2RlciBBcnJheSB2b24gU3RyaW5ncworCitCRVNDSFJFSUJVTkc6CisgICAgIEVzIHdlcmRlbiBlaW4gb2RlciBtZWhyZXJlIEJlemVpY2huZXIgaGluenVnZWZ1ZWd0LCBtaXQgZGVuZW4gc2ljaCBlaW5lCisgICAgIGVpbnplbG5lIEVpbmhlaXQgYW5zcHJlY2hlbiBsYWVzc3QuCisKK1JVZUNLR0FCRVdFUlQ6CisgICAgIGtlaW5lcgorCitCRUlTUElFTEU6CisgICAgIHNpZWhlIC9pdGVtcy9tb25leS5jCisKK1NJRUhFIEFVQ0g6CisgICAgIEFkZFBsdXJhbElkKCksIFJlbW92ZVNpbmd1bGFySWQoKSwgQWRkSWQoKSwgaWQoKSwgL3N0ZC91bml0LmMKKworLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorTGFzdCBtb2RpZmllZDogTW9uIEp1bCAxNCAxMTozMTowMCAxOTk3IGJ5IFNpbHZhbmEKZGlmZiAtLWdpdCBhL2RvYy9sZnVuL0FkZFNtZWxscyBiL2RvYy9sZnVuL0FkZFNtZWxscwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41NjgyZjAwCi0tLSAvZGV2L251bGwKKysrIGIvZG9jL2xmdW4vQWRkU21lbGxzCkBAIC0wLDAgKzEsNzEgQEAKK0FkZFNtZWxscygpCisKK0ZVTktUSU9OOgorICAgIHZvaWQgQWRkU21lbGxzKHN0cmluZ3xzdHJpbmcqIGtleXMsIHN0cmluZ3xzdHJpbmcqfG1hcHBpbmd8Y2xvc3VyZSBkZXNjKTsKKworREVGSU5JRVJUIElOOgorICAgIC9zdGQvdGhpbmcvZGVzY3JpcHRpb24uYworCitBUkdVTUVOVEU6CisgICAga2V5cworICAgICAgU3RyaW5nIG9kZXIgQXJyYXkgdm9uIFN0cmluZ3MgbWl0IGRlbiBOYW1lbiBkZXIgRGV0YWlscy4KKyAgICBkZXNjCisgICAgICBTdHJpbmcsIE1hcHBpbmcsIFN0cmluZy1BcnJheSBvZGVyIENsb3N1cmUgbWl0L3p1ciBCZXNjaHJlaWJ1bmcuCisKK0JFU0NIUkVJQlVORzoKKyAgICBEaWVzZSBGdW5rdGlvbiBlbnRzcHJpY2h0IGRlbSBBZGREZXRhaWwoKSBmdWVyIFN0YW5kYXJkZGV0YWlscywgbnVyCisgICAga29lbm5lbiBoaWVybWl0IEdlcnVlY2hlIHJlYWxpc2llcnQgd2VyZGVuOgorICAgIERpZSBCZXNjaHJlaWJ1bmcgZGVyIERldGFpbHMgPGtleXM+IHdpcmQgZ2VzZXR6dC4gV2llIGRpZSBEZXRhaWxzCisgICAgYmVpIGRlciBVbnRlcnN1Y2h1bmcgYXVzc2VoZW4sIGhhZW5ndCBpbSB3ZXNlbnRsaWNoZW4gdm9tIFR5cCBkZXIKKyAgICBCZXNjaHJlaWJ1bmcgPGRlc2M+IGFiOgorICAgICAgPGRlc2M+IGlzdCBlaW4gU3RyaW5nLgorICAgICAgICBCZWltIFVudGVyc3VjaGVuIHdpcmQgZGllc2VyIFN0cmluZyB6dXJ1ZWNrZ2VnZWJlbi4KKyAgICAgIDxkZXNjPiBpc3QgZWluIFN0cmluZy1BcnJheS4KKyAgICAgICAgQmVpbSBVbnRlcnN1Y2hlbiB3aXJkIHp1ZmFlbGxpZyBlaW5lciBkZXIgU3RyaW5ncyB6dXJ1ZWNrZ2VnZWJlbi4KKyAgICAgIDxkZXNjPiBpc3QgZWluIE1hcHBpbmcuCisgICAgICAgIERhcyBNYXBwaW5nIG11c3MgZm9sZ2VuZGVuIEF1ZmJhdSBoYWJlbjoKKyAgICAgICAgICAoWzA6ICAgICAgICAiRGVmYXVsdHRleHQiLAorICAgICAgICAgICAgInJhc3NlMSI6ICJyMXRleHQiLCAuLi5dKS4KKworICAgICAgICBGYWxscyBmdWVyIGRpZSBSYXNzZSBkZXMgZGFzIERldGFpbCB1bnRlcnN1Y2hlbmRlbiBTcGllbGVycyBlaW4KKyAgICAgICAgRWludHJhZyBpbSBNYXBwaW5nIGV4aXN0aWVydCwgd2lyZCBkZXIgZW50c3ByZWNoZW5kZSBUZXh0CisgICAgICAgIHp1cnVlY2tnZWdlYmVuLCBhbnNvbnN0ZW4gZGVyIERlZmF1bHR0ZXh0LiBBdWYgZGllc2UgV2Vpc2Ugc2luZAorICAgICAgICByYXNzZW5hYmhhZW5naWdlIERldGFpbHMgbW9lZ2xpY2guIFNpZWhlIGF1Y2ggZGllIEJlaXNwaWVsZS4KKyAgICAgIDxkZXNjPiBpc3QgZWluZSBDbG9zdXJlLgorICAgICAgICBJbiBkaWVzZW0gRmFsbCB3aXJkIGRpZSBDbG9zdXJlIGF1c2dlZnVlaHJ0IHVuZCBkYXMgRXJnZWJuaXMKKyAgICAgICAgenVydWVja2dlZ2ViZW4uIERpZSBDbG9zdXJlIGJla29tbXQgZGFiZWkgZGVuIE5hbWVuIGRlcyBEZXRhaWxzCisgICAgICAgIGFscyBQYXJhbWV0ZXIgdWViZXJnZWJlbi4KKworICAgIEZ1ZXIgR2VydWNoc2RldGFpbHMga29lbm5lbiBGb3JzY2hlcnB1bmt0ZSBlaW5nZXRyYWdlbiB3ZXJkZW4uCisKKyAgICBHZXJ1ZWNoZSBrb2VubmVuIGFsbGdlbWVpbiBlaW5lbiBSYXVtIG9kZXIgT2JqZWt0IHp1Z2VvcmRuZXQgd2VyZGVuOgorICAgIGRhZnVlciBtdXNzIG1hbiBhbHMgPGtleT4gU0VOU0VfREVGQVVMVCB1ZWJlcmdlYmVuLgorICAgIAorICAgIFNwaWVsZXJrb21tYW5kb3M6ICJyaWVjaCIsICJyaWVjaGUiLCAic2NobnVwcGVyIiwgInNjaG51cHBlcmUiCisKK0JFSVNQSUVMRToKKyAgICBFaW4ga2xlaW5lcyBCZWlzcGllbCBmdWVyIHJhc3NlbmFiaGFlbmdpZ2UgR2VydWVjaGUgbWl0IENsb3N1cmVzOgorICAgICAgc3RyaW5nIHN0cmFmZShzdHJpbmcga2V5KTsKKyAgICAgIC4uLgorICAgICAgQWRkU21lbGxzKFNFTlNFX0RFRkFVTFQsCisgICAgICAgICJEZXIgR2VydWNoIHZvbiBLbm9ibGF1Y2ggaXN0IHVlYmVyd2FlbHRpZ2VuZCFcbiIpOworICAgICAgQWRkU21lbGxzKCh7Imtub2JsYXVjaCIsImdlcnVjaCJ9KSwKKyAgICAgICAgICAgICAgICAoWzA6ICAgICAgICAiUHVoaCwgZGFzIHN0aW5rdCFcbiIsCisgICAgICAgICAgICAgICAgICAidmFtcGlyIjogIydzdHJhZmVdKSk7CisgICAgICAuLi4KKyAgICAgIHN0cmluZyBzdHJhZmUoc3RyaW5nIGtleSkgeworICAgICAgICB0aGlzX3BsYXllcigpLT5yZWR1Y2VfaGl0X3BvaW50cygxMDApOworICAgICAgICByZXR1cm4gIkRlciBLbm9ibGF1Y2ggc2NobWVyenQgZGljaCBmdXJjaHRiYXIhXG4iOworICAgICAgfQorCitTSUVIRSBBVUNIOgorICAgIFNldHplbjogICAgQWRkRGV0YWlsKCksIEFkZFJlYWREZXRhaWwoKSwgQWRkU291bmRzKCksCisgICAgICAgICAgICAgICBBZGRUb3VjaERldGFpbCgpCisgICAgTG9lc2NoZW46ICBSZW1vdmVEZXRhaWwoKSwgUmVtb3ZlUmVhZERldGFpbCgpLCBSZW1vdmVTbWVsbHMoKSwKKyAgICAgICAgICAgICAgIFJlbW92ZVNvdW5kcygpLCBSZW1vdmVUb3VjaERldGFpbCgpCisgICAgRGF0ZW46ICAgICBQX0RFVEFJTFMsIFBfUkVBRF9ERVRBSUxTLCBQX1NNRUxMUywgUF9TT1VORFMsIFBfVE9VQ0hfREVUQUlMUworICAgIFZlcmFsdGV0OiAgQWRkU3BlY2lhbERldGFpbCgpLCBSZW1vdmVTcGVjaWFsRGV0YWlsKCksIFBfUkVBRF9NU0cKKyAgICBTb25zdGlnZXM6IEdldERldGFpbCgpLCBicmVha19zdHJpbmcoKQorCisyMC4wMS4yMDE1LCBaZXNzdHJhCisKZGlmZiAtLWdpdCBhL2RvYy9sZnVuL0FkZFNvdW5kcyBiL2RvYy9sZnVuL0FkZFNvdW5kcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5iMzgzODlhCi0tLSAvZGV2L251bGwKKysrIGIvZG9jL2xmdW4vQWRkU291bmRzCkBAIC0wLDAgKzEsNjMgQEAKK0FkZFNvdW5kcygpCisKK0ZVTktUSU9OOgorICAgIHZvaWQgQWRkU291bmRzKHN0cmluZ3xzdHJpbmcqIGtleXMsIHN0cmluZ3xzdHJpbmcqfG1hcHBpbmd8Y2xvc3VyZSBkZXNjKTsKKworREVGSU5JRVJUIElOOgorICAgIC9zdGQvdGhpbmcvZGVzY3JpcHRpb24uYworCitBUkdVTUVOVEU6CisgICAga2V5cworICAgICAgU3RyaW5nIG9kZXIgQXJyYXkgdm9uIFN0cmluZ3MgbWl0IGRlbiBOYW1lbiBkZXIgRGV0YWlscy4KKyAgICBkZXNjCisgICAgICBTdHJpbmcsIE1hcHBpbmcsIFN0cmluZy1BcnJheSBvZGVyIENsb3N1cmUgbWl0L3p1ciBCZXNjaHJlaWJ1bmcuCisKK0JFU0NIUkVJQlVORzoKKyAgICBEaWVzZSBGdW5rdGlvbiBlbnRzcHJpY2h0IGRlbSBBZGREZXRhaWwoKSBmdWVyIFN0YW5kYXJkZGV0YWlscywgbnVyCisgICAga29lbm5lbiBoaWVybWl0IEdlcmFldXNjaGUgcmVhbGlzaWVydCB3ZXJkZW46CisgICAgRGllIEJlc2NocmVpYnVuZyBkZXIgRGV0YWlscyA8a2V5cz4gd2lyZCBnZXNldHp0LiBXaWUgZGllIERldGFpbHMKKyAgICBiZWkgZGVyIFVudGVyc3VjaHVuZyBhdXNzZWhlbiwgaGFlbmd0IGltIHdlc2VudGxpY2hlbiB2b20gVHlwIGRlcgorICAgIEJlc2NocmVpYnVuZyA8ZGVzYz4gYWI6CisgICAgICA8ZGVzYz4gaXN0IGVpbiBTdHJpbmcuCisgICAgICAgIEJlaW0gVW50ZXJzdWNoZW4gd2lyZCBkaWVzZXIgU3RyaW5nIHp1cnVlY2tnZWdlYmVuLgorICAgICAgPGRlc2M+IGlzdCBlaW4gU3RyaW5nLUFycmF5LgorICAgICAgICBCZWltIFVudGVyc3VjaGVuIHdpcmQgenVmYWVsbGlnIGVpbmVyIGRlciBTdHJpbmdzIHp1cnVlY2tnZWdlYmVuLgorICAgICAgPGRlc2M+IGlzdCBlaW4gTWFwcGluZy4KKyAgICAgICAgRGFzIE1hcHBpbmcgbXVzcyBmb2xnZW5kZW4gQXVmYmF1IGhhYmVuOgorICAgICAgICAgIChbMDogICAgICAgICJEZWZhdWx0dGV4dCIsCisgICAgICAgICAgICJyYXNzZTEiOiAicjF0ZXh0IiwgLi4uXSkuCisKKyAgICAgICAgRmFsbHMgZnVlciBkaWUgUmFzc2UgZGVzIGRhcyBEZXRhaWwgdW50ZXJzdWNoZW5kZW4gU3BpZWxlcnMgZWluCisgICAgICAgIEVpbnRyYWcgaW0gTWFwcGluZyBleGlzdGllcnQsIHdpcmQgZGVyIGVudHNwcmVjaGVuZGUgVGV4dAorICAgICAgICB6dXJ1ZWNrZ2VnZWJlbiwgYW5zb25zdGVuIGRlciBEZWZhdWx0dGV4dC4gQXVmIGRpZXNlIFdlaXNlIHNpbmQKKyAgICAgICAgcmFzc2VuYWJoYWVuZ2lnZSBEZXRhaWxzIG1vZWdsaWNoLiBTaWVoZSBhdWNoIGRpZSBCZWlzcGllbGUuCisgICAgICA8ZGVzYz4gaXN0IGVpbmUgQ2xvc3VyZS4KKyAgICAgICAgSW4gZGllc2VtIEZhbGwgd2lyZCBkaWUgQ2xvc3VyZSBhdXNnZWZ1ZWhydCB1bmQgZGFzIEVyZ2VibmlzCisgICAgICAgIHp1cnVlY2tnZWdlYmVuLiBEaWUgQ2xvc3VyZSBiZWtvbW10IGRhYmVpIGRlbiBOYW1lbiBkZXMgRGV0YWlscworICAgICAgICBhbHMgUGFyYW1ldGVyIHVlYmVyZ2ViZW4uCisKKyAgICBGdWVyIEdlcmFldXNjaGRldGFpbHMga29lbm5lbiBGb3JzY2hlcnB1bmt0ZSBlaW5nZXRyYWdlbiB3ZXJkZW4uCisKKyAgICBHZXJhdWVzY2hlIGtvZW5uZW4gYWxsZ2VtZWluIGVpbmVuIFJhdW0gb2RlciBPYmpla3QgenVnZW9yZG5ldCB3ZXJkZW46CisgICAgZGFmdWVyIG11c3MgbWFuIGFscyA8a2V5PiBTRU5TRV9ERUZBVUxUIHVlYmVyZ2ViZW4uCisKKyAgICBTcGllbGVya29tbWFuZG9zOiAibGF1c2NoZSIsICJsYXVzY2giLCAiaG9lciIsICJob2VyZSIKKworQkVJU1BJRUxFOgorICAgIEVpbiBrbGVpbmVzIEJlaXNwaWVsIGZ1ZXIgcmFzc2VuYWJoYWVuZ2lnZSBHZXJhdWVzY2hlCisgICAgICBBZGRTb3VuZHMoU0VOU0VfREVGQVVMVCwgIkRpZSBad2VyZ2VubXVzaWsgdWViZXJ0b2VudCBhbGxlcyFcbiIpOworICAgICAgQWRkU291bmRzKCh7Inp3ZXJnZW5tdXNpayIsIm11c2lrIn0pLAorICAgICAgICAgICAgICAgIChbMCAgICAgIDogIlNlbHRzYW1lciBLcmFjaCFcbiIsCisgICAgICAgICAgICAgICAgICAiendlcmciOiAiRGFzIGtsaW5ndCBlaW5mYWNoIGZhbnRhc3Rpc2NoIVxuIl0pKTsKKworU0lFSEUgQVVDSDoKKyAgICBTZXR6ZW46ICAgIEFkZERldGFpbCgpLCBBZGRSZWFkRGV0YWlsKCksIEFkZFNtZWxscygpLAorICAgICAgICAgICAgICAgQWRkVG91Y2hEZXRhaWwoKQorICAgIExvZXNjaGVuOiAgUmVtb3ZlRGV0YWlsKCksIFJlbW92ZVJlYWREZXRhaWwoKSwgUmVtb3ZlU21lbGxzKCksCisgICAgICAgICAgICAgICBSZW1vdmVTb3VuZHMoKSwgUmVtb3ZlVG91Y2hEZXRhaWwoKQorICAgIERhdGVuOiAgICAgUF9ERVRBSUxTLCBQX1JFQURfREVUQUlMUywgUF9TTUVMTFMsIFBfU09VTkRTLCBQX1RPVUNIX0RFVEFJTFMKKyAgICBWZXJhbHRldDogIEFkZFNwZWNpYWxEZXRhaWwoKSwgUmVtb3ZlU3BlY2lhbERldGFpbCgpLCBQX1JFQURfTVNHCisgICAgU29uc3RpZ2VzOiBHZXREZXRhaWwoKSwgYnJlYWtfc3RyaW5nKCkKKworMjAuMDEuMjAxNSwgWmVzc3RyYQorCmRpZmYgLS1naXQgYS9kb2MvbGZ1bi9BZGRTcGVjaWFsRGV0YWlsIGIvZG9jL2xmdW4vQWRkU3BlY2lhbERldGFpbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi45MGM1NTQzCi0tLSAvZGV2L251bGwKKysrIGIvZG9jL2xmdW4vQWRkU3BlY2lhbERldGFpbApAQCAtMCwwICsxLDYxIEBACitWRVJBTFRFVDogQWRkU3BlY2lhbERldGFpbCgpCisKK0ZVTktUSU9OOgorICAgIHZvaWQgQWRkU3BlY2lhbERldGFpbChzdHJpbmd8c3RyaW5nKiBrZXlzLCBzdHJpbmcgZnVuYyk7CisKK0RFRklOSUVSVCBJTjoKKyAgICAvc3RkL3RoaW5nL2Rlc2NyaXB0aW9uLmMKKworQVJHVU1FTlRFOgorICAgIGtleXMKKyAgICAgIFN0cmluZyBvZGVyIEFycmF5IHZvbiBTdHJpbmdzIG1pdCBkZW4gTmFtZW4gZGVyIERldGFpbHMuCisgICAgZnVuYworICAgICAgU3RyaW5nIG1pdCBkZW0gTmFtZW4gZGVyIEZ1bmt0aW9uLCBkaWUgenVyIEF1c3dlcnR1bmcgYXVmZ2VydWZlbgorICAgICAgd2lyZC4KKworQkVTQ0hSRUlCVU5HOgorICAgIEVzIHdpcmQgZWluIERldGFpbCBoaW56dWdlZnVlZ3QsIGRlc3NlbiBJbmhhbHQgbmljaHQgdm9uIHZvcm5oZXJlaW4KKyAgICBmZXN0c3RlaHQsIHNvbmRlcm4gdm9uIGFldXNzZXJlbiBCZWRpbmd1bmdlbiBhYmhhZW5ndC4gWnUgZGllc2VtCisgICAgWndlY2sgd2lyZCBpbW1lciwgd2VubiBkaWVzZXMgRGV0YWlsIHVudGVyc3VjaHQgd2lyZCwgZGllIEZ1bmt0aW9uCisgICAgZnVuYyBhdWZnZXJ1ZmVuLCB1bSBkZW4gYWt0dWVsbGVuIFp1c3RhbmQgZGVzIERldGFpbHMgenUgYmVzdGltbWVuLgorICAgIERlciBGdW5rdGlvbiB3aXJkIGFscyBQYXJhbWV0ZXIgZGFzIFNjaGx1ZXNzZWx3b3J0IHVlYmVyZ2ViZW4sIG1pdAorICAgIGRlbSBkYXMgRGV0YWlsIHVudGVyc3VjaHQgd3VyZGUuCisKKyAgICBWRVJBTFRFVDogQml0dGUgQWRkRGV0YWlsIG1pdCBDbG9zdXJlIGJlbnV0emVuLgorCitCRUlTUElFTEU6CisgICAgRWluIHp1c3RhbmRzYWJoYWVuZ2lnZXMgRGV0YWlsOgorCisgICAgICBpbnQgaGViZWxfYmV0YWV0aWd0OworICAgICAgc3RyaW5nIGhlYmVsKHN0cmluZyBrZXkpOworICAgICAgLi4uCisgICAgICAvLyBBTFQ6IEFkZFNwZWNpYWxEZXRhaWwoICh7ICJoZWJlbCIsICJzY2hhbHRlciIgfSksICJoZWJlbCIgKTsKKyAgICAgIEFkZERldGFpbCgoeyAiaGViZWwiLCAic2NoYWx0ZXIiIH0pLCAjJ2hlYmVsICk7CisgICAgICAuLi4KKyAgICAgIHN0cmluZyBoZWJlbChzdHJpbmcga2V5KQorICAgICAgeyBpZihoZWJlbF9iZXRhZXRpZ3QpCisgICAgICAgICAgcmV0dXJuICJEZXIgIitjYXBpdGFsaXplKGtleSkrIiBzdGVodCBhdWYgRUlOLlxuIjsKKyAgICAgICAgZWxzZQorICAgICAgICAgIHJldHVybiAiRGVyICIrY2FwaXRhbGl6ZShrZXkpKyIgc3RlaHQgYXVmIEFVUy5cbiI7CisgICAgICB9CisKKyAgICBNYW4gZXJoYWVsdCB2ZXJzY2hpZWRlbmUgRXJnZWJuaXNzZSBiZWltIFVudGVyc3VjaGVuLCBqZSBuYWNoZGVtCisgICAgb2IgZGFzIEZsYWcgaGViZWxfYmV0YWV0aWd0IGdlc2V0enQgaXN0IG9kZXIgbmljaHQuCisKK0JFTUVSS1VORzoKKyAgICBJbnRlcm4gd2VyZGVuIERldGFpbHMgdW5kIFNwZWNpYWxEZXRhaWxzIGltIHNlbGJlbiBNYXBwaW5nCisgICAgdmVyd2FsdGV0LgorICAgIE1hbiBrYW5uIHN0YXR0IGRpZXNlciBGdW5rdGlvbiBkZXNoYWxiIGF1Y2ggQWRkRGV0YWlsIG1pdCBDbG9zdXJlcworICAgIG51dHplbi4KKworU0lFSEUgQVVDSDoKKyAgICBTZXR6ZW4gOiAgIEFkZERldGFpbCgpLCBBZGRSZWFkRGV0YWlsKCksIEFkZFNtZWxscygpLCBBZGRTb3VuZHMoKSwKKyAgICAgICAgICAgICAgIEFkZFRvdWNoRGV0YWlsKCkKKyAgICBMb2VzY2hlbjogIFJlbW92ZURldGFpbCgpLCBSZW1vdmVSZWFkRGV0YWlsKCksIFJlbW92ZVNtZWxscygpLAorICAgICAgICAgICAgICAgUmVtb3ZlU291bmRzKCksIFJlbW92ZVRvdWNoRGV0YWlsKCkKKyAgICBEYXRlbjogICAgIFBfREVUQUlMUywgUF9SRUFEX0RFVEFJTFMsIFBfU01FTExTLCBQX1NPVU5EUywgUF9UT1VDSF9ERVRBSUxTCisgICAgVmVyYWx0ZXQ6ICBSZW1vdmVTcGVjaWFsRGV0YWlsKCksIFBfUkVBRF9NU0cKKyAgICBTb25zdGlnZXM6IEdldERldGFpbCgpLCBicmVha19zdHJpbmcoKQorCisyMC4wMS4yMDE1LCBaZXNzdHJhCisKZGlmZiAtLWdpdCBhL2RvYy9sZnVuL0FkZFNwZWNpYWxFeGl0IGIvZG9jL2xmdW4vQWRkU3BlY2lhbEV4aXQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZGU3ZTViOAotLS0gL2Rldi9udWxsCisrKyBiL2RvYy9sZnVuL0FkZFNwZWNpYWxFeGl0CkBAIC0wLDAgKzEsNTcgQEAKK0FkZFNwZWNpYWxFeGl0KCkKK0ZVTktUSU9OOgorICAgICB2b2lkIEFkZFNwZWNpYWxFeGl0KHN0cmluZ3xzdHJpbmcqIGNtZCwgc3RyaW5nfGNsb3N1cmUgZnVuYyk7CisKK0RFRklOSUVSVCBJTjoKKyAgICAgL3N0ZC9yb29tL2V4aXRzCisKK0FSR1VNRU5URToKKyAgICAgc3RyaW5nL3N0cmluZyogY21kCisgICAgICAgICAgZGllIFJpY2h0dW5nKGVuKSwgaW4gZGllIGRlciBBdXNnYW5nIGZ1ZWhydAorICAgICBzdHJpbmcvY2xvc3VyZSBmdW5jCisgICAgICAgICAgZGVyIE5hbWUgZGVyIGF1Znp1cnVmZW5kZW4gRnVua3Rpb24vQ2xvc3VyZQorCitCRVNDSFJFSUJVTkc6CisgICAgIEVzIHdpcmQgZWluIEF1c2dhbmcgaW4gZGllIFJpY2h0dW5nKGVuKSBjbWQgZWluZ2VmdWVndC4gV2lyZCBkZXIKKyAgICAgQXVzZ2FuZyBiZW51dHp0LCBzbyB3aXJkIGRpZSBDbG9zdXJlIGJ6dy4gRnVua3Rpb24gZnVuYyBhdXNnZWZ1ZWhydC4KKworICAgICBBZGRTcGVjaWFsRXhpdChjbWQsICJmdW5jIikgZW50c3ByaWNodDoKKyAgICAgLSBBZGRFeGl0KGtleXMsICMnZnVuYykKKworQkVNRVJLVU5HRU46CisgICAgIEluIGZ1bmMgbXVzcyBtYW4gZGVuIFNwaWVsZXIgc2VsYnN0IGluIGRlbiBaaWVscmF1bSBiZXdlZ2VuLiBJbQorICAgICBFcmZvbGdzZmFsbCBzb2xsdGUgbWFuIGVpbmVuIFdlcnQgPjAgenVydWVja2dlYmVuLCBpbSBGZWhsZXJmYWxsIGVpbmVuCisgICAgIFdlcnQgPD0wLgorCisgICAgIGZ1bmMgYmVrb21tdCBhbHMgUGFyYW1ldGVyIGVpbmVuIFN0cmluZyBtaXQgZGVyIGdld2FlaGx0ZW4KKyAgICAgQmV3ZWd1bmdzcmljaHR1bmcgdWViZXJnZWJlbi4KKworQkVJU1BJRUxFOgorICAgICAvLyBlaW4gQXVzZ2FuZyBzb2xsIG51ciB2b24gRnJvZXNjaGVuIGJlbnV0emJhciBzZWluOgorCisgICAgIEFkZFNwZWNpYWxFeGl0KCJsb2NoIiwgImxvY2hma3QiKTsKKyAgICAgLy8gZGVyIGdsZWljaGUgQXVmcnVmLCBudXIgYW5kZXJzOgorICAgICAvLyBzdGF0aWMgaW50IGxvY2hma3Qoc3RyaW5nIGRpcik7CQkvLyBQcm90b3R5cAorICAgICAvLyAuLi4KKyAgICAgLy8gQWRkU3BlY2lhbEV4aXQoImxvY2giLCAjJ2xvY2hma3QpOworICAgICAvLyBhdWNoIGlkZW50aXNjaCB6dToKKyAgICAgLy8gQWRkRXhpdCgibG9jaCIsICMnbG9jaGZrdCk7CisKKyAgICAgc3RhdGljIGludCBsb2NoZmt0KHN0cmluZyBkaXIpIHsKKyAgICAgICBpZiAoISh0aGlzX3BsYXllcigpLT5RdWVyeVByb3AoUF9GUk9HKSkpIHsKKyAgICAgICAgIC8vIEtlaW4gRnJvc2NoID0+IHBhc3N0IG5pY2h0IQorICAgICAgICAgbm90aWZ5X2ZhaWwoIkR1IGJpc3QgenUgZ3Jvc3MhXG4iKTsKKyAgICAgICAgIHJldHVybiAwOworICAgICAgIH0KKyAgICAgICAvLyBNZWxkdW5nZW4gd2VyZGVuIGltIG1vdmUoKSBnbGVpY2ggbWl0Z2VnZWJlbgorICAgICAgIHJldHVybiB0aGlzX3BsYXllcigpLT5tb3ZlKCIvcm9vbS9sb2NoIiwgTV9HTywgMCwKKyAgICAgICAgICAgICAgICAgICAgImh1ZXBmdCBpbnMgTG9jaCIsICJodWVwZnQgaGVyZWluIik7CisgICAgIH0KKworU0lFSEUgQVVDSDoKKyAgICAgQWRkRXhpdCgpLCBHZXRFeGl0cygpCisgICAgIFJlbW92ZUV4aXQoKSwgUmVtb3ZlU3BlY2lhbEV4aXQoKQorICAgICBIX0hPT0tfRVhJVF9VU0UsIFBfRVhJVFMsIFBfSElERV9FWElUUywgL3N0ZC9yb29tL2V4aXRzLmMKKyAgICAgYXVzZ2FlbmdlCisKKzMxLjAxLjIwMTUsIFplc3N0cmEKZGlmZiAtLWdpdCBhL2RvYy9sZnVuL0FkZFNwZWNpYWxJbmZvIGIvZG9jL2xmdW4vQWRkU3BlY2lhbEluZm8KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNzM1OTgzZgotLS0gL2Rldi9udWxsCisrKyBiL2RvYy9sZnVuL0FkZFNwZWNpYWxJbmZvCkBAIC0wLDAgKzEsNjQgQEAKK0FkZFNwZWNpYWxJbmZvKCkKK0ZVTktUSU9OOgorICAgICB2YXJhcmdzIHZvaWQgQWRkU3BlY2lhbEluZm8oIGZyYWdlLCBtZWxkdW5nCisJCQkgICBbLCBpbmRlbnQgWywgW3NpbGVudCBbLCBjYXNlYmFzZWRdIF0gXSApOworCitBUkdVTUVOVEU6CisgICAgIHN0cmluZy9zdHJpbmcqIGZyYWdlCisJU2NobHVlc3NlbHRleHQoZSkgYXVmIGRpZSBJbmZvcm1hdGlvbmVuIGdlZ2ViZW4gd2VyZGVuIHNvbGxlbi4KKyAgICAgc3RyaW5nL2Nsb3N1cmUgZnVuY3Rpb24KKwlNZXRob2Rlbm5hbWUgaW0gTlBDL0Nsb3N1cmUKKyAgICAgc3RyaW5nIGluZGVudAorCVRleHQsIGRlciBzaWNoIGJlaSBtZWhyemVpbGlnZW4gTWVsZHVuZ2VuIHdpZWRlcmhvbGVuIHNvbGwuCisgICAgIGludC9zdHJpbmcgc2lsZW50CisJSXN0IHNpbGVudCBnZXNldHp0LCBzbyBlcmZvbGd0IEFudHdvcnQgbnVyIGFuIEZyYWdlbmRlbi4KKyAgICAgc3RyaW5nL2Nsb3N1cmUgY2FzZWJhc2VkCisJRnVua3Rpb25zbmFtZSBvZGVyIENsb3N1cmUgbWl0IFJldHVybndlcnQgc3RyaW5nIG9kZXIgaW50LgorCitERUZJTklFUlQgSU46CisgICAgIC9zdGQvbnBjL2luZm8uYworCitCRVNDSFJFSUJVTkc6CisgICAgIFdlbm4gZWluIFNwaWVsZXIgZWluIE5QQyBtaXR0ZWxzICJmcmFnZSA8bW9uc3Rlcm5hbWU+IG5hY2ggPGZyYWdlPiIgbmFjaAorICAgICBlaW5lciBJbmZvcm1hdGlvbiBtaXQgZGVtIFNjaGx1ZXNzZWwgZnJhZ2UgZnJhZ3QsIHNvIHdpcmQgZGllIE1ldGhvZGUKKyAgICAgImZ1bmN0aW9uIiBnZXJ1ZmVuLiBEaWUgUnVlY2tnYWJlIHdpcmQgYWxzIE1lbGR1bmcgYXVzZ2VnZWJlbi4KKworICAgICBGdWVyIGRpZSBCZXNjaHJlaWJ1bmcgZGVyIHdlaXRlcmVuIFBhcmFtZXRlciBzaWVoZSBtYW4gQWRkSW5mbyhMKS4KKworICAgICBBZGRTcGVjaWFsSW5mbyhrZXlzLCAiZnVuY3Rpb24iLCAuLi4pIGVudHNwcmljaHQ6CisgICAgIC0gQWRkSW5mbyhrZXlzLCAjJ2Z1bmN0aW9uLCAuLi4pIAorCitCRU1FUktVTkdFTjoKKyAgICAgRGEgQWRkU3BlY2lhbEluZm8oKSB1bmQgQWRkSW5mbygpIGF1ZiBkaWUgZ2xlaWNoZW4gRGF0ZW4genVncmVpZmVuLAorICAgICBrYW5uIG1hbiBJbmZvcm1hdGlvbmVuLCBkaWUgbWl0IEFkZFNwZWNpYWxJbmZvKCkgZ2VzZXR6dCB3dXJkZW4sIGF1Y2gKKyAgICAgbWl0IFJlbW92ZUluZm8oKSBlbnRmZXJuZW4uIEVzIGdpYnQga2VpbiBSZW1vdmVTcGVjaWFsSW5mbygpLgorCitCRUlTUElFTEU6CisgICAgIC8vIERhcyBmb2xnZW5kZSBCZWlzcGllbCBpc3QgYXVjaCB1bnRlciBtYW4gQWRkSW5mbyhMKSB6dSBmaW5kZW4uCisgICAgICMjIyBkeW5hbWlzY2ggIyMjCisgICAgIEFkZFNwZWNpYWxJbmZvKCh7Imtla3MiLCJrZWtzZSJ9KSwKKwkJICAgICJxdWVyeV9rZWtzZSIsCS8vIGRlciBNZXRob2Rlbm5hbWUKKwkJICAgICJzYWd0OiAiKTsKKyAgICAgLy8gaXN0IHVlYnJpZ2VucyBkYXMgZ2xlaWNoZSB3aWU6CisgICAgIC8vIHN0YXRpYyBzdHJpbmcgcXVlcnlfa2Vrc2UoKTsKKyAgICAgLy8gLi4uCisgICAgIC8vIEFkZEluZm8oKHsia2VrcyIsImtla3NlIn0pLAorICAgICAvLwkJIydxdWVyeV9rZWtzZSwJCS8vIGVpbiBWZXJ3ZWlzIGF1ZiBkaWUgTWV0aG9kZQorICAgICAvLwkJInNhZ3Q6ICIpOworICAgICAuLi4KKyAgICAgc3RhdGljIHN0cmluZyBxdWVyeV9rZWtzZSgpIHsKKyAgICAgIGlmKHByZXNlbnQoImtla3MiKSkKKyAgICAgICByZXR1cm4oIkljaCBoYWIgbm9jaCB3ZWxjaGUuIEFldHNjaCEiKTsKKyAgICAgIHJldHVybigiTWVubm8uIEtlaW5lIG1laHIgZGEhIik7CisgICAgIH0KKworICAgICAvLyAiZnJhZ2UgbW9uc3RlciBuYWNoIGtla3MiOgorICAgICAvLyAtIHdlbm4gZXMgbm9jaCBLZWtzZSBoYXQsIGhvZXJlbiBhbGxlOgorICAgICAvLyAgICJEYXMgTW9uc3RlciBzYWd0OiBJY2ggaGFiIG5vY2ggd2VsY2hlLiBBZXRzY2ghCisgICAgIC8vIC0gc29uc3Q6CisgICAgIC8vICAgIkRhcyBNb25zdGVyIHNhZ3Q6ICJNZW5uby4gS2VpbmUgbWVociBkYSEKKworU0lFSEUgQVVDSDoKKyAgICAgQWRkSW5mbyhMKSwgUmVtb3ZlSW5mbyhMKQorCis3LkFwciAyMDA0IEdsb2luc29uCmRpZmYgLS1naXQgYS9kb2MvbGZ1bi9BZGRTcGVsbCBiL2RvYy9sZnVuL0FkZFNwZWxsCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmRiYzY4NjkKLS0tIC9kZXYvbnVsbAorKysgYi9kb2MvbGZ1bi9BZGRTcGVsbApAQCAtMCwwICsxLDE0OSBAQAorQWRkU3BlbGwoKQorCitGVU5LVElPTjoKKyAgICB2YXJhcmdzIGludCBBZGRTcGVsbChpbnQgcmF0ZSwgaW50IGRhbWFnZSwgc3RyaW5nIFRleHRGb3JFbmVteSwKKyAgICAgICAgICAgICAgICAgICAgICAgICBzdHJpbmcgVGV4dEZvck90aGVycywgc3RyaW5nfHN0cmluZyogZGFtX3R5cGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgc3RyaW5nIGZ1bmMsIGludHxtYXBwaW5nIHNwZWxsYXJnKQorCitERUZJTklFUlQgSU46CisgICAgL3N0ZC9ucGMvY29tYmF0LmMKKworQVJHVU1FTlRFOgorICAgIHJhdGUgICAgICAgICAgLSBSZWxhdGl2ZSBIYWV1Zmlna2VpdCBkZXIgQW53ZW5kdW5nICgqKSwKKyAgICAgICAgICAgICAgICAgICAgbXVzcyA+PSAwIHNlaW4KKyAgICBkYW1hZ2UgICAgICAgIC0gRGVyIFNjaGFkZW5zd2VydCBmdWVyIERlZmVuZCgpLAorICAgICAgICAgICAgICAgICAgICBtdXNzID4gMCBzZWluCisgICAgVGV4dEZvckVuZW15ICAtIFRleHQsIGRlbiBkZXIgRmVpbmQgZXJoYWx0ZW4gc29sbAorICAgIFRleHRGb3JPdGhlcnMgLSBUZXh0LCBkZW4gYW5kZXJlIGltIFJhdW0gZXJoYWx0ZW4gc29sbGVuCisgICAgZGFtX3R5cGUgICAgICAtIFNjaGFkZW5zdHlwKGVuKSBmdWVyIERlZmVuZCgpLAorICAgICAgICAgICAgICAgICAgICAoRGVmYXVsdDogKHtEVF9NQUdJQ30pICkKKyAgICBmdW5jICAgICAgICAgIC0gRnVua3Rpb25zbmFtZSwgZGllIG5hY2ggQW53ZW5kdW5nIGF1ZmdlcnVmZW4gd2VyZGVuIHNvbGwKKyAgICAgICAgICAgICAgICAgICAgKE9wdGlvbmFsLCBnZXJ1ZmVuIGFuIHRoaXNfb2JqZWN0KCksIGJla29tbXQgYWxzIEFyZ3VtZW50ZQorICAgICAgICAgICAgICAgICAgICAgb2JqZWN0IGVuZW15LCBpbnQgcmVhbF9kYW1hZ2UsIHN0cmluZyogZGFtX3R5cGUpCisgICAgc3BlbGxhcmcgICAgICAtIFNwZWxsLUFyZ3VtZW50IGZ1ZXIgRGVmZW5kKCksIERlZmF1bHQgaXN0ICIxIgorCitCRVNDSFJFSUJVTkc6CisgICAgRXJtb2VnbGljaHQgZWluZmFjaGUgQW5ncmlmZnMtWmF1YmVyc3BydWVjaGUgZnVlciBOUENzLiBEYXMgQXVzZnVlaHJlbiB2b24KKyAgICBTcGVsbHMgdmVydXJzYWNodCBiZWkgZGVtIE5QQyBrZWluZSBLUC1Lb3N0ZW4uCisKKyAgICBNaXQgUF9TUEVMTFJBVEUgd2lyZCBkaWUgZ2VuZXJlbGxlIFdhaHJzY2hlaW5saWNoa2VpdCBkZXIgQXVzZnVlaHJ1bmcKKyAgICBzb2xjaGVyIFNwZWxscyBpbSBIZWFydGJlYXQgYW5nZWdlYmVuLCBtaXQgJ3JhdGUnIGthbm4gbWFuIGRpZSByZWxhdGl2ZQorICAgIFdhaHJzY2hlaW5saWNoa2VpdCBkZXIgU3BlbGxzIHVudGVyZWluYW5kZXIgc3RldWVybi4KKworICAgICgqKSBSZWxhdGl2ZSBIYWV1Zmlna2VpdCBoZWlzc3QsIGRhc3Mgc2ljaCBhbGxlICdyYXRlJyBkZXIgU3BlbGxzCisgICAgYXVmYWRkaWVyZW4gdW5kIGVpbiBlaW56ZWxuZXMgJ3JhdGUnIGRhbm4gaW4gUmVsYXRpb24genVyIEdlc2FtdHN1bW1lCisgICAgc3RlaHQuIEQuaC4gZHJlaSBTcGVsbHMgbWl0IDgwLCAxMCwgMTAgKFN1bW1lIDEwMCkgaGFiZW4gZGllIHNlbGJlbgorICAgIEF1ZnJ1Zi1XYWhyc2NoZWlubGljaGtlaXRlbiB3aWUgZHJlaSBTcGVsbHMgbWl0IDEyMCwgMTUsIDE1IG9kZXIgZHJlaQorICAgIFNwZWxscyBtaXQgMTYwLCAyMCwgMjAuCisKKyAgICBFaW4gU3BlbGwgd2lyZCBpbW1lciBpbiBmb2xnZW5kZXIgUmVpaGVuZm9sZ2UgYWJnZWFyYmVpdGV0OgorICAgICAxLiBEaWUgVGV4dGUgd2VyZGVuIGFuIGRpZSBCZXRlaWxpZ3RlbiBhdXNnZWdlYmVuLgorICAgICAyLiBFcyB3aXJkIGdnZi4gU3BlbGxEZWZlbmQgZ2VydWZlbiAod2VubiBrZWluIFNQX1BIWVNJQ0FMX0FUVEFDSykuCisgICAgICAgIEFiYnJ1Y2ggYmVpIFNjaHV0ei4KKyAgICAgMy4gSW0gT3BmZXIgd2lyZCBEZWZlbmQoKSBtaXQgZGVuIGFuZ2VnZWJlbmVuIFdlcnRlbiBhdWZnZXJ1ZmVuLgorICAgICAgICBBYmJydWNoIGJlaSBUb2QvWmVyc3RvZXJ1bmcgZGVzIE9wZmVycy4KKyAgICAgNC4gRWluZSBGdW5rdGlvbiwgc28gZGVmaW5pZXJ0LCB3aXJkIGF1c2dlZnVlaHJ0LgorCitCRU1FUktVTkdFTjoKKyAgICBUZXh0Rm9yT3RoZXJzIHdpcmQgdm9yIGRlciBBdXNnYWJlIGRlciBNZWxkdW5nIGR1cmNoIHJlcGxhY2VfcGVyc29uYWwoKQorICAgIGdlc2NoaWNrdCwgZC5oLiBlcyBrb2VubmVuIFBsYXR6aGFsdGVyIHdpZSBAV0VSMSwgQFdFTVFQMSB1bmQgYWVobmxpY2hlCisgICAgdmVyd2VuZGV0IHdlcmRlbiAoc2llaGUgYXVjaCBkaWUgTWFucGFnZSB2b24gcmVwbGFjZV9wZXJzb25hbCgpKS4KKyAgICBEYSBFcnNldHp1bmdlbiBudXIgZnVlciBkYXMgR2VnbmVyb2JqZWt0IGJlcnVlY2tzaWNodGlndCB3ZXJkZW4sIGtvZW5uZW4KKyAgICBudXIgUGxhdHpoYWx0ZXIgbWl0IEVuZHppZmZlciAxIHZlcndlbmRldCB3ZXJkZW4uIERpZSBFcnNldHp1bmdlbiB3ZXJkZW4KKyAgICBzbyBnZXN0ZXVlcnQsIGRhc3MgZGllIGVpbmdlZnVlZ3RlbiBOYW1lbiBuYWNoIFNhdHphbmZhZW5nZW4gYXV0b21hdGlzY2gKKyAgICBncm9zcyBnZXNjaHJpZWJlbiB3ZXJkZW4uCisgICAgRnJ1ZWhlciB3dXJkZW4gc3RhdHQgcmVwbGFjZV9wZXJzb25hbCgpIGRpZSBQbGF0emhhbHRlciBAV0VSLCBAV0VTU0VOLCAKKyAgICBAV0VNLCBAV0VOIHZlcndlbmRldC4gRGllc2UgZnVua3Rpb25pZXJlbiB3ZWl0ZXJoaW4sIHNvbGx0ZW4gYWJlciBuaWNodCAKKyAgICBtZWhyIGluIG5ldWVtIENvZGUgYmVudXR6dCB3ZXJkZW4uCisKKyAgICBJbiBkZXIgdm9uIEFkZFNwZWxsIGdlcnVmZW5lbiBNZXRob2RlICJmdW5jIiBrb2VubmVuIHNwZXppZWxsZXJlCisgICAgU2FjaGVuIG1pdCBkZW0gYWt0dWVsbGVuIEZlaW5kIGFuZ2VzdGVsbHQgd2VyZGVuIGtvZW5uZW4uIERpZSBNZXRob2RlCisgICAgZGFyZiBhbHMgU2ljaHRiYXJrZWl0c21vZGlmaWthdG9yIG1heGltYWwgIiIsICJwdWJsaWMiIG9kZXIgInN0YXRpYyIKKyAgICAob2Jzb2xldCkgaGFiZW4gdW5kIG11c3MgaW0gc2VsYmVuIE9iamVrdCBkZWZpbmllcnQgc2Vpbi4KKworICAgIFdpbGwgbWFuIGVpbmVuIHBoeXNpc2NoZW4gQW5ncmlmZiBhdXNsb2VzZW4sIE1VU1MgPHNwZWxsYXJnPiBlaW4gTWFwcGluZworICAgIG1pdCAoW1NQX1BIWVNJQ0FMX0FUVEFDSzogMV0pIHNlaW4uIEJlaSBVZWJlcmdlYmVuIGVpbmVyIDAgb2RlciBXZWdsYXNzZW4KKyAgICBkZXMgV2VydHMgd2lyZCBhbiBEZWZlbmQgZGFzIERlZmF1bHQgJzEnIChkYSBlcyBTcGVsbHMgc2luZCkgdWViZXJnZWJlbi4KKworICAgIFdlbm4gZGFtYWdlPD0wIG9kZXIgcmF0ZTwwIG9kZXIga2VpbmUgTWVsZHVuZ2VuIHVlYmVyZ2ViZW4gd2VyZGVuLCB3aXJkCisgICAgZGVyIFNwZWxsIE5JQ0hUIGVpbmdldHJhZ2VuLCBzb25kZXJuIGRpZSBGdW5rdGlvbiBicmljaHQgbWl0IFJ1ZWNrZ2FiZQorICAgIHZvbiAwIGFiLgorCitCRUlTUElFTEU6CisgICAgLy8gIzEgRWluZmFjaGVyIE5QQyBtaXQgZHJlaSBTcGVsbHMsIEdlc2FtdHJhdGUgPSAxMDAsIGFsc28gc2luZCBkaWUKKyAgICAvLyAgICBSYXRlbiBkaXJla3QgYWxzIFByb3plbnQgQXVmcnVmd2FocnNjaGVpbmxpY2hrZWl0IGxlc2Jhci4KKyAgICBBZGRTcGVsbCg4MCwgNDAwLAorICAgICAgICAgICAgICJEZXIgSGV4ZXIgZ3JlaWZ0IERpY2ggbWl0IGVpbmVtIGtsZWluZW4gRmV1ZXJiYWxsIGFuLlxuIiwKKyAgICAgICAgICAgICAiRGVyIEhleGVyIGdyZWlmdCBAV0VOIG1pdCBlaW5lbSBrbGVpbmVuIEZldWVyYmFsbCBhbi5cbiIsCisgICAgICAgICAgICAgKHtEVF9GSVJFLCBEVF9NQUdJQ30pKTsKKyAgICBBZGRTcGVsbCgxMCwgODAwLAorICAgICAgICAgICAgICJEZXIgSGV4ZXIgZ3JlaWZ0IERpY2ggbWl0IGVpbmVtIHJpZXNpZ2VuIEZldWVyYmFsbCBhbi5cbiIsCisgICAgICAgICAgICAgIkRlciBIZXhlciBncmVpZnQgQFdFTiBtaXQgZWluZW0gcmllc2lnZW4gRmV1ZXJiYWxsIGFuLlxuIiwKKyAgICAgICAgICAgICAoe0RUX0ZJUkUsIERUX01BR0lDfSkpOworICAgIEFkZFNwZWxsKDgsIDEwMCwKKyAgICAgICAgICAgICAiRGVyIEhleGVyIHBpZWtzdCBEaXIgaW4gZGllIEF1Z2VuISIsCisgICAgICAgICAgICAgIkRlciBIZXhlciBwaWVrc3QgQFdFTSBpbiBkaWUgQXVnZW4hIiwgKHtEVF9QSUVSQ0V9KSwKKyAgICAgICAgICAgICAiYXVnZW5fc3RlY2hlbiIpOworICAgIEFkZFNwZWxsKDIsIDUsIChzdHJpbmcpMCwgKHN0cmluZykwLCAoc3RyaW5nKikwLCAic2FsdG9fbW9ydGFsaXMiKTsKKworICAgIChLbGVpbmVyIEZldWVyYmFsbCBtaXQgODAlIFdhaHJzY2hlaW5saWNoa2VpdCwgcmllc2lnZXIgbWl0IDEwJSwKKyAgICAgImF1Z2VuX3N0ZWNoZW4iIG1pdCA4JSwgInNhbHRvX21vcnRhbGlzIiBtaXQgMiUpCisKKyAgICAvLyBEaWUgRnVua3Rpb24gImF1Z2VuX3N0ZWNoZW4iIGthbm4gZGFubiBzbyBhdXNzZWhlbjoKKyAgICB2b2lkIGF1Z2VuX3N0ZWNoZW4ob2JqZWN0IGVuZW15LCBpbnQgZGFtYWdlLCBtaXhlZCBkYW1fdHlwZXMgKSB7CisgICAgICBpZiAoZGFtYWdlPjEwICYmICFlbmVteS0+UXVlcnlQcm9wKFBfQkxJTkQpKSB7CisgICAgICAgIGVuZW15LT5TZXRQcm9wKFBfQkxJTkQsIDEpOworICAgICAgICBpZihlbmVteS0+UXVlcnlQcm9wKFBfQkxJTkQpKQorICAgICAgICAgIHRlbGxfb2JqZWN0KGVuZW15LCAiRHUgYmlzdCBudW4gYmxpbmQhXG4iKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICAvLyBadXIgRnVua3Rpb24gInNhbHRvX21vcnRhbGlzIiBnaWJ0IGVzIGtlaW5lIE1lbGR1bmdlbiwgZGVubm9jaAorICAgIC8vIHdpcmQgRGVmZW5kIG1pdDogZW5lbXktPkRlZmVuZCg1LCAoe0RUX01BR0lDfSksIDEsIHRoaXNfb2JqZWN0KCkpCisgICAgLy8gZ2VydWZlbiEKKyAgICB2b2lkIHNhbHRvX21vcnRhbGlzKG9iamVjdCBlbmVteSwgaW50IGRhbWFnZSwgbWl4ZWQgZGFtX3R5cGVzICkgeworICAgICAgLy8gZGVtIGdlbmVpZ3RlbiBMZXNlciB1ZWJlcmxhc3NlbiwgZGVuIEdlZ25lciB6dSB0b2V0ZW4KKyAgICB9CisKKyAgICAvLyAjMiBQaHlzaXNjaGUgQW5ncmlmZmU6IGRpZSBSdWVzdHVuZ2VuIHNvbGxlbiBiZXJ1ZWNrc2ljaHRpZ3Qgd2VyZGVuIQorICAgIC8vICAgIFNQX1BIWVNJQ0FMX0FUVEFDSyBtdXNzIGluIGVpbmVtIE1hcHBpbmcgYXVmIDEgZ2VzZXR6dCB3ZXJkZW4sCisgICAgLy8gICAgZGFtaXQgUnVlc3R1bmdlbiBwaHlzaXNjaCB3aXJrZW4gKGFuc29uc3RlbiB3ZXJkZW4gbnVyIGlocmUKKyAgICAvLyAgICBEZWZlbmRGdW5jcygpIGF1c2dld2VydGV0KS4gRXMgbXVzcyBhdWNoIGVpbmUgcGh5c2lzY2hlIFNjaGFkZW5zYXJ0CisgICAgLy8gICAgZW50aGFsdGVuIHNlaW4hCisgICAgLy8gICAgU3BlbGxEZWZlbmQoKSB3aXJkIGJlaSBkaWVzZW0gRmxhZyBuaWNodCBtZWhyIGFtIEdlZ25lciBnZXJ1ZmVuLgorICAgIEFkZFNwZWxsKDEwMCwgMjAwK3JhbmRvbSgyMDApLAorICAgICAgIkRpZSBrbGVpbmUgUmF0dGUgYmVpc3N0IERpY2ghXG4iLAorICAgICAgIkBXRVIgd2lyZCB2b24gZWluZXIga2xlaW5lbiBSYXR0ZSBnZWJpc3NlbiFcbiIsCisgICAgICAoe0RUX1BJRVJDRSwgRFRfUE9JU09OfSksIChzdHJpbmcpMCwKKyAgICAgIChbU1BfUEhZU0lDQUxfQVRUQUNLOjFdKSk7CisKKyAgICAvLyAjMyBTZWxla3RpdmUgcGh5c2lzY2hlIEFuZ3JpZmZlIChzaWVoZSBhdWNoIG1hbiBEZWZlbmRfYnNwKToKKyAgICAvLyAgICBXaWxsIG1hbiBlcnJlaWNoZW4sIGRhc3MgZWluaWdlIFJ1ZXN0dW5nZW4gd2lya2VuLCBhbmRlcmUgYWJlcgorICAgIC8vICAgIG5pY2h0IG9kZXIgbnVyIHRlaWx3ZWlzZSwga2FubiBtYW4gZGFzIHVlYmVyIGRpZSBTcGVsbHBhcmFtZXRlcgorICAgIC8vICAgIGF1c2Z1ZWhybGljaCBzdGV1ZXJuOgorCisgICAgLy8gZXJzdG1hbCBmdWVyIGFsbGUgUnVlc3R1bmdzYXJ0ZW4gZWluZW4gU2NodXR6IHZvbiAwJSBlaW5zdGVsbGVuOgorICAgIG1hcHBpbmcgYXJtb3VycyA9IG1hcF9pbmRpY2VzKFZBTElEX0FSTU9VUl9DTEFTUywgIychKTsKKyAgICBhcm1vdXJzW0FUX1RST1VTRVJTXSA9IDEyMDsgIC8vIDEyMCUgU2NodXR6IGR1cmNoIEhvc2VuCisgICAgYXJtb3Vyc1tBVF9CT09UXSA9IDMwOyAgICAgICAvLyAgMzAlIFNjaHV0eiBkdXJjaCBTdGllZmVsCisKKyAgICBBZGRTcGVsbCgyMCwyMDArcmFuZG9tKDIwMCksCisgICAgICAiRGllIGtsZWluZSBSYXR0ZSBiZWlzc3QgRGlyIGJsaXR6c2NobmVsbCBpbiBkaWUgV2FkZSFcbiIsCisgICAgICAiQFdFUiB3aXJkIHZvbiBlaW5lciBrbGVpbmVuIFJhdHRlIGluIGRpZSBXYWRlIGdlYmlzc2VuIVxuIiwKKyAgICAgICh7RFRfUElFUkNFLCBEVF9QT0lTT059KSwgKHN0cmluZykwLAorICAgICAgKFtTUF9QSFlTSUNBTF9BVFRBQ0s6MSwgU1BfTk9fQUNUSVZFX0RFRkVOU0U6MSwKKyAgICAgICAgU1BfUkVEVUNFX0FSTU9VUjogYXJtb3Vyc10pKTsKKworICAgIC8vIFNQX05PX0FDVElWRV9ERUZFTlNFID0gMSBzY2hhbHRldCBha3RpdmUgQWJ3ZWhyIChLYXJhdGUvS2xlcnVzKSBhYgorICAgIC8vIFNQX1JFRFVDRV9BUk1PVVIgZW50aGFlbHQgZWluZSBMaXN0ZSB2b24gUnVlc3R1bmdzdHlwZW4gbWl0IGlocmVuCisgICAgLy8gbmV1ZW4gV2lya3VuZ3NncmFkZW4gaW4gUHJvemVudC4gTmljaHQgZW50aGFsdGVuZSBSdWVzdHVuZ2VuIGhhYmVuCisgICAgLy8gd2VpdGVyaGluIDEwMCUgU2NodXR6d2lya3VuZy4KKworU0lFSEUgQVVDSDoKKyAgICAgU29uc3RpZ2VzOiAgU3BlbGxBdHRhY2ssIFNwZWxsRGVmZW5kLCBEZWZlbmQsIFF1ZXJ5RGVmZW5kLCBTZWxlY3RFbmVteQorICAgICAgICAgICAgICAgICByZXBsYWNlX3BlcnNvbmFsCisgICAgIFByb3BlcnRpZXM6IFBfRElTQUJMRV9BVFRBQ0ssIFBfU1BFTExSQVRFLCBQX0FHR1JFU1NJVkUKKyAgICAgQWJ3ZWhyOiAgICAgRGVmZW5kLCBEZWZlbmRfYnNwLCBTcGVsbERlZmVuZAorICAgICBNZXRob2RlbjogICBtb2RpZmllcnMKKworMTEuMTIuMjAxNSBBcmF0aG9ybgpkaWZmIC0tZ2l0IGEvZG9jL2xmdW4vQWRkVG9NZW51IGIvZG9jL2xmdW4vQWRkVG9NZW51Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjgyNDA3ZjQKLS0tIC9kZXYvbnVsbAorKysgYi9kb2MvbGZ1bi9BZGRUb01lbnUKQEAgLTAsMCArMSwyMzMgQEAKK0FkZFRvTWVudSgpCisKK0ZVTktUSU9OOgorICAgICAgICB2YXJhcmdzIHN0cmluZyBBZGRUb01lbnUoc3RyaW5nICBtZW51ZXRleHQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtaXhlZCAgIGlkcywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1hcHBpbmcgbWluZm8sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtaXhlZCAgIHJhdGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtaXhlZCAgIG1zZywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1peGVkICAgcmVmcmVzaCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1peGVkICAgZGVsYXksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtaXhlZCAgIGRfbXNnKTsKKworREVGSU5JRVJUIElOOgorICAgICAgICAvc3RkL3B1Yi5jCisKK0FSR1VNRU5URToKKyAgICAgICAgRGllIEVybGFldXRlcnVuZyBkZXIgUGFyYW1ldGVyIGJlc2NocmFlbmt0IHNpY2ggaW0gRm9sZ2VuZGVuCisgICAgICAgIHp1bmFlY2hzdCBhdWYgZGllIEdydW5kZnVua3Rpb25hbGl0YWV0IGJlaSBWZXJ3ZW5kdW5nIGZlc3RlcgorICAgICAgICBXZXJ0ZS4gRGllIE1vZWdsaWNoa2VpdGVuIHp1ciBSZWFsaXNpZXJ1bmcgZHluYW1pc2NoZW4gVmVyaGFsdGVucworICAgICAgICBzaW5kIGluIGRlbiBGdXNzbm90ZW4genUgZGVuIGVpbnplbG5lbiBQYXJhbWV0ZXJuIGJlc2NocmllYmVuLgorCisgICAgICAgIG1lbnVldGV4dAorICAgICAgICAgIERlciBUZXh0IHN0ZWh0IGFscyBrdXJ6ZSBCZXNjaHJlaWJ1bmcgaW0gTWVudWUuCisgICAgICAgIGlkcworICAgICAgICAgIFN0cmluZyBvZGVyIEFycmF5IHZvbiBTdHJpbmdzLCBtaXQgZGVuZW4gc2ljaCBkaWUgU3BlaXNlIGJ6dy4gZGFzCisgICAgICAgICAgR2V0cmFlbmsgYmVpbSBCZXN0ZWxsZW4gYW5zcHJlY2hlbiBsYWVzc3QuCisgICAgICAgIG1pbmZvCisgICAgICAgICAgTWFwcGluZyBtaXQgRWludHJhZWdlbiBmdWVyOgorICAgICAgICAgIFBfSFAgICAgICBMUC1IZWlsdW5nIGluIFB1bmt0ZW4gWypdCisgICAgICAgICAgUF9TUCAgICAgIEtQLUhlaWx1bmcgaW4gUHVua3RlbiBbKl0KKyAgICAgICAgICBQX0ZPT0QgICAgU2FldHRpZ3VuZ3N3aXJrdW5nIGRlciBTcGVpc2UgWypdCisgICAgICAgICAgUF9EUklOSyAgIFNhZXR0aWd1bmdzd2lya3VuZyBkZXMgR2V0cmFlbmtzIFsqXQorICAgICAgICAgIFBfQUxDT0hPTCBBbGtvaG9sZ2VoYWx0IGRlcyBHZXRyYWVua3MgWypdCisgICAgICAgICAgUF9WQUxVRSAgIFByZWlzIGRlciBTcGVpc2UgYnp3LiBkZXMgR2V0cmFlbmtzIFsqXQorICAgICAgICByYXRlIFsqXQorICAgICAgICAgIEhlaWxyYXRlIGluIFB1bmt0ZW4gcHJvIEhlYXJ0QmVhdC4KKyAgICAgICAgbXNnIFsqKl0KKyAgICAgICAgICBNZWxkdW5nIGJlaW0gRXNzZW46CisgICAgICAgICAgQXJyYXkgbWl0IDIgU3RyaW5nczogKDEpIGZ1ZXIgRW1wZmFlbmdlciwgKDIpIGZ1ZXIgQW5kZXJlLgorICAgICAgICAgIFZlcmZ1ZWdiYXJlIFBsYXR6aGFsdGVyIHNpbmQgd2VpdGVyIHVudGVuIGltIEFic2Nobml0dCAiQmVpc3BpZWwiCisgICAgICAgICAgZG9rdW1lbnRpZXJ0LgorICAgICAgICByZWZyZXNoCisgICAgICAgICAgTWFwcGluZyBtaXQgRWludHJhZWdlbiBmdWVyOgorICAgICAgICAgICAgUFJfVVNFUiAoS29udGluZ2VudCBmdWVyIGVpbnplbG5lbiBTcGllbGVyKSBbKl0KKyAgICAgICAgICAgIFBSX0FMTCAgKFp1c2F0emtvbnRpbmdlbnQgZnVlciBhbGxlKSBbKl0KKyAgICAgICAgICBBbHRlcm5hdGl2OiAwIGZ1ZXIgdW5iZWdyZW56dGUgVmVyZnVlZ2JhcmtlaXQKKyAgICAgICAgICBFaW5lbSBLZXkgbXVlc3NlbiBkYWJlaSB6d2VpIFdlcnRlIHp1Z2VvcmRuZXQgd2VyZGVuOgorICAgICAgICAgIERlciBFcnN0ZSBnaWJ0IGRpZSBIb2VoZSBkZXMgS29udGluZ2VudHMgYW4sIGRlciBad2VpdGUgbGVndAorICAgICAgICAgIGZlc3QsIGFsbGUgd2lldmllbCByZXNldCgpcyBkYXMgS29udGluZ2VudCB3aWVkZXIgYXVmZ2VmdWVsbHQKKyAgICAgICAgICB3aXJkLgorICAgICAgICAgIFZlcndlbmR1bmcgZGVzIE1hcHBpbmdzIGVyZm9yZGVydCBJbmtsdWRpZXJlbiB2b24gcHViLmguCisgICAgICAgIGRlbGF5IFsqXQorICAgICAgICAgIFphaGwgZGVyIFNla3VuZGVuLCB1bSBkaWUgdmVyem9lZ2VydCBkaWUgSGVpbHVuZyBlaW50cml0dCwKKyAgICAgICAgICB6LkIuIHdlaWwgZGFzIEVzc2VuIGVyc3QgenViZXJlaXRldCB3ZXJkZW4gbXVzcy4KKyAgICAgICAgZF9tc2cgWyoqXQorICAgICAgICAgIE1lbGR1bmcgYmVpbSBCZXN0ZWxsZW4sIGZhbGxzIGRpZSBIZWlsdW5nIHZlcnpvZWdlcnQgd2lyZAorICAgICAgICAgIEFycmF5IG1pdCAyIFN0cmluZ3M6ICgxKSBmdWVyIEVtcGZhZW5nZXIsICgyKSBmdWVyIEFuZGVyZS4KKworICAgICAgICAgIAorICAgICAgICBbKl0gRGllc2VyIFBhcmFtZXRlciBrYW5uIHN0YXR0IGVpbmVzIGZlc3RlbiBaYWhsZW53ZXJ0cyBtaXQgCisgICAgICAgICAgICBmb2xnZW5kZW4gV2VydGVuIGdlZnVlbGx0IHdlcmRlbjoKKworICAgICAgICAgICAgMSkgTWFwcGluZyA8cmFjZW1vZGlmaWVyPiBkZXIgRm9ybToKKyAgICAgICAgICAgICAgICAgICAoWyAwIDogPHN0YW5kYXJkd2VydD4gLAorICAgICAgICAgICAgICAgICAgICA8cmFzc2VfMT4gOiA8d2VydF8xPiwgCisgICAgICAgICAgICAgICAgICAgIC4uLiAsIAorICAgICAgICAgICAgICAgICAgICA8cmFzc2Vfbj4gOiA8d2VydF9uPiBdKS4KKyAgICAgICAgICAgICAgIERpZSBFaW50cmFlZ2UgaW4gZGllc2VtIE1hcHBpbmcgd2VyZGVuIGdlZ2VuIGRpZSBSYXNzZSBkZXMKKyAgICAgICAgICAgICAgIGJlc3RlbGxlbmRlbiBTcGllbGVycyBnZXBydWVmdCB1bmQgZW50c3ByZWNoZW5kIGRpZSAKKyAgICAgICAgICAgICAgIHp1Z2Vob2VyaWdlbiBXZXJ0ZSB2ZXJ3ZW5kZXQuCisgICAgICAgICAgICAyKSBzdHJpbmcgPGZ1bmM+OiBBdWZydWYgZXJmb2xndCBtaXR0ZWxzIAorICAgICAgICAgICAgICAgICBjYWxsX290aGVyKHRoaXNfb2JqZWN0KCksIGZ1bmMsIGVtcGZhZW5nZXIpOworICAgICAgICAgICAgICAgZ2VydWZlbiAoYWJlcjogc2llaGUgSGlud2Vpc2UpLgorICAgICAgICAgICAgMykgY2xvc3VyZSA8ZnVuYz46IEF1ZnJ1ZiBlcmZvbGd0IG1pdHRlbHMKKyAgICAgICAgICAgICAgICAgZnVuY2FsbChmdW5jLCBlbXBmYWVuZ2VyKTsKKyAgICAgICAgICAgIDQpIEFycmF5IGRlciBGb3JtICAoe3N0cmluZyA8b2JqPiwgc3RyaW5nIDxmdW5jPn0pIG9kZXIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoe29iamVjdCA8b2JqPiwgc3RyaW5nIDxmdW5jPn0pCisgICAgICAgICAgICAgICBBdWZydWYgZXJmb2xndCBtaXR0ZWxzCisgICAgICAgICAgICAgICAgIGNhbGxfb3RoZXIob2JqLCBmdW5jLCBlbXBmYWVuZ2VyKTsKKyAgICAgICAgICAgICAgIChhYmVyOiBzaWVoZSBIaW53ZWlzZSkuIDxvYmo+IGlzdCBmb2xnbGljaCBhbHMgT2JqZWt0cG9pbnRlciAKKyAgICAgICAgICAgICAgIG9kZXIgZGVzc2VuIG9iamVjdF9uYW1lKCkgYW56dWdlYmVuLiA8ZnVuYz4gd2lyZCBtaXR0ZWxzIAorICAgICAgICAgICAgICAgZnVuY3Rpb25fZXhpc3RzKCkgYXVmIEV4aXN0ZW56IHVlYmVycHJ1ZWZ0LgorCisgICAgICAgICAgICAgICBISU5XRUlTRTogaW0gRmFsbGUgdm9uIExpZWZlcnZlcnpvZWdlcnVuZyAoImRlbGF5IikgdW5kCisgICAgICAgICAgICAgICBQcmVpcyAoUF9WQUxVRSkgd2lyZCBiZWkgYWxsZW4gRnVua3Rpb25zYXVmcnVmZW4gTklDSFQgZGVyIAorICAgICAgICAgICAgICAgRW1wZmFlbmdlciwgc29uZGVybiBkZXIgWmFobGVyIHVlYmVyZ2ViZW4uCisgICAgICAgICAgICAgICBJbSBGYWxsZSBkZXIgS29udGluZ2VudC1MaXN0ZSAoInJlZnJlc2giKSBrYW5uIG51ciBkaWUKKyAgICAgICAgICAgICAgIHZlcmZ1ZWdiYXJlIE1lbmdlIG1vZGlmaXppZXJ0IHdlcmRlbiwgbmljaHQgZGllIFplaXQKKyAgICAgICAgICAgICAgIGJpcyB6dW0gV2llZGVyLUF1ZmZ1ZWxsZW4uCisKKyAgICAgICAgWyoqXSBadXIgRXJ6ZXVndW5nIHZhcmlhYmxlciBNZWxkdW5nZW4ga29lbm5lbiBmb2xnZW5kZSBXZXJ0ZQorICAgICAgICAgICAgIGVpbmdldHJhZ2VuIHdlcmRlbjoKKworICAgICAgICAgICAgIDEpIGNsb3N1cmUgPGZ1bmM+OiBBdWZydWYgZXJmb2xndCBtaXR0ZWxzIAorICAgICAgICAgICAgICAgICAgZnVuY2FsbChmdW5jLCB6YWhsZXIsIGVtcGZhZW5nZXIsIGlkZW50LCBtaW5mbyk7CisgICAgICAgICAgICAgMikgc3RyaW5nIDxmdW5jPjogQXVmcnVmIGVyZm9sZ3QgbWl0dGVscworICAgICAgICAgICAgICAgICAgY2FsbF9vdGhlcih0aGlzX29iamVjdCgpLCBmdW5jLCB6YWhsZXIsIGVtcGZhZW5nZXIsIAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZGVudCwgbWluZm8pOworICAgICAgICAgICAgIDxmdW5jPiBiZWtvbW10IFphaGxlciB1bmQgRW1wZmFlbmdlciBhbHMgT2JqZWt0cG9pbnRlciwKKyAgICAgICAgICAgICBpZGVudCBhbHMgU3RyaW5nIHVuZCBtaW5mbyBhbHMgTWFwcGluZyBtaXQgZGVuIAorICAgICAgICAgICAgIGpld2VpbGlnZW4gSGVpbHdlcnRlbiB1ZWJlcmdlYmVuLiBtaW5mbyBlbnRzcHJpY2h0IGhpZXJiZWkKKyAgICAgICAgICAgICBkZW4gRGF0ZW4sIGRpZSBhbHMgZHJpdHRlciBQYXJhbWV0ZXIgYW4gQWRkVG9NZW51KCkKKyAgICAgICAgICAgICB1ZWJlcmdlYmVuIHd1cmRlbi4KKyAgICAgICAgICAgICBISU5XRUlTOiB3ZW5uIGluIGRhcyBtaW5mby1NYXBwaW5nIGtlaW5lIGludC1GZXN0d2VydGUgCisgICAgICAgICAgICAgZWluZ2V0cmFnZW4gd3VyZGVuLCB3ZXJkZW4gZGllc2UgZ2VtYWVzcyBkZW4gUmVnZWxuIHVudGVyIFsqXQorICAgICAgICAgICAgIGdlcHJ1ZWZ0OyBGdW5rdGlvbmVuL0Nsb3N1cmVzIHdlcmRlbiBnZ2YuIGF1c2dld2VydGV0IHVuZCAKKyAgICAgICAgICAgICBkZXJlbiBSdWVja2dhYmV3ZXJ0ZSBhbiBkaWUgRnVua3Rpb24gPGZ1bmM+IHVlYmVyZ2ViZW4uCisgICAgICAgICAgICAgV0lDSFRJRzogRGllIFJ1ZWNrZ2FiZXdlcnRlIGRlciBGdW5rdGlvbiB3ZXJkZW4gbmljaHQgCisgICAgICAgICAgICAgYXVzZ2V3ZXJ0ZXQuIEplZGVyLCBkZXIgYW5zdGF0dCBlaW5lciBNZWxkdW5nIGVpbmVuIAorICAgICAgICAgICAgIEZ1bmt0aW9uc2F1ZnJ1ZiBwcm9ncmFtbWllcnQsIG11c3MgZnVlciBkaWUgQXVzZ2FiZSBkZXIKKyAgICAgICAgICAgICBNZWxkdW5nZW4gc2VsYnN0IHNvcmdlbi4KKyAgICAgICAgICAgICAgICAgICAKK0JFU0NIUkVJQlVORzoKKyAgICAgICAgTWl0IGRpZXNlciBGdW5rdGlvbiB3ZXJkZW4gU3BlaXNlbiBvZGVyIEdldHJhZW5rZSBpbiBkaWUgS2FydGUKKyAgICAgICAgdm9uIEtuZWlwZW4gdW5kIFJlc3RhdXJhbnRzIGVpbmdlZnVlZ3QuCisKK1JVRUNLR0FCRVdFUlQ6CisgICAgICAgIFJ1ZWNrZ2FiZXdlcnQgaXN0IGVpbiBTdHJpbmcgIm1lbnVlbnRyeSVkIiwgd29iZWkgJWQgZWluZSBOdW1tZXIKKyAgICAgICAgaXN0LCBkaWUgZGFydWViZXIgQXVza3VuZnQgZ2lidCwgZGVuIHdpZXZpZWx0ZW4gRWludHJhZyBpbiBkaWUKKyAgICAgICAgaW50ZXJuZSBLYXJ0ZSBkZXIgS25laXBlIGRpZXNlIFNwZWlzZSBiencuIGRpZXNlcyBHZXRyYWVuaworICAgICAgICBkYXJzdGVsbHQuIEltIFByaW56aXAgaGFuZGVsdCBlcyBzaWNoIGJlaSBkZW0gU3RyaW5nIHVtIGVpbmVuIEtleQorICAgICAgICBmdWVyIGVpbiBNYXBwaW5nLCBpbiBkZW0gZGllIFNwZWlzZW4gYnp3LiBHZXRyYWVua2UgZ2VzcGVpY2hlcnQKKyAgICAgICAgc2luZC4KKworQkVNRVJLVU5HRU46CisgICAgICAgIERpZSBhZWx0ZXJlbiBGdW5rdGlvbmVuICdBZGREcmluaycgYnp3LiAnQWRkRm9vZCcgd2VyZGVuIHp3YXIgbWl0aGlsZmUKKyAgICAgICAgZGllc2VyIG1hZWNodGlnZXJlbiBGdW5rdGlvbiBhdXMgR3J1ZW5kZW4gZGVyIEFid2FlcnRza29tcGF0aWJpbGl0YWV0CisgICAgICAgIHNpbXVsaWVydCwgc29sbGVuIGFiZXIgbmljaHQgbWVociBlaW5nZXNldHp0IHdlcmRlbi4KKyAgICAgICAgCisgICAgICAgIEZ1ZXIgZGFzIFRlc3RlbiBkZXIgS25laXBlIGdpYnQgZXMgaW4gamVkZXIgS25laXBlIGRlbiBCZWZlaGwKKyAgICAgICAgJ3B1YmluaXQnLiBIaWVybWl0IGxhc3NlbiBzaWNoIGRpZSBTcGVpc2VuIHVuZCBHZXRyYWVua2UgZHVyY2gtCisgICAgICAgIGNoZWNrZW4uIFN0ZWh0IGluIGRlciBBdXNnYWJlIGJlaSBlaW5lbSBHZXRyYWVuay9Fc3NlbiBlaW4gRkFJTCwKKyAgICAgICAgc28gd2lyZCBkaWUgZW50c3ByZWNoZW5kZSBTcGVpc2UgKG9kZXIgR2V0cmFlbmspIE5JQ0hUIGFuIFNwaWVsZXIKKyAgICAgICAgdmVya2F1ZnQuIEF1c25haG1lbiBmdWVyIFNwZWlzZW4vR2V0cmFlbmtlIG1pdCBob2VoZXJlbiBtYXhpbWFsZW4KKyAgICAgICAgV2VydGVuIHNpbmQgZHVyY2ggQmFsYW5jZS1FTSB6dSBnZW5laG1pZ2VuLgorCitCRUlTUElFTDoKKworICAgICAgICBpbmNsdWRlIDxwdWIuaD4KKworICAgICAgICBjcmVhdGUoKQorICAgICAgICB7CisgICAgICAgIEFkZFRvTWVudSgiJ09wYSdzIERyYWNoZW5rZXVsZSciLCh7ImRyYWNoZW5rZXVsZSIsImtldWxlIn0pLAorICAgICAgICAoW1BfSFA6NjMsUF9TUDo2MyxQX0ZPT0Q6OSxQX1ZBTFVFOjUyOF0pLCA1LAorICAgICAgICAoeyJEdSBpc3N0IGRpZSBLZXVsZSBtaXQgZWluZW0gc2NobGVjaHRlbiBHZXdpc3Nlbi4iLAorICAgICAgICAgICImJiBpc3N0IGRpZSBLZXVsZSBtaXQgZWluZW0gc2NobGVjaHRlbiBHZXdpc3Nlbi4ifSksCisgICAgICAgIChbIFBSX1VTRVIgOiA0OyAxICwgUFJfQUxMIDogMjA7IDMgXSksIDksCisgICAgICAgICh7IkRlciB1bnNpY2h0YmFyZSBLbmVpcGllciBzY2huZWlkZXQgZWluZW0gUmVudG5lciBlaW4gZ3Jvc3NlcyAiCisgICAgICAgICAgIlN0dWVjayBhdXMgZGVzc2VuIEtldWxlIHVuZCBiZXJlaXRldCBzaWUgRGlyIHp1LiBLb21pc2NoLCBtdXNzICIKKyAgICAgICAgICAid29obCBlaW4gVGlwcGZlaGxlciBhdWYgZGVyIEthcnRlIGdld2VzZW4gc2Vpbi4iLAorICAgICAgICAgICJEZXIgdW5zaWNodGJhcmUgS25laXBpZXIgc2NobmVpZGV0IGVpbmVtIGhpbGZsb3NlbiBPcGEgZWluICIKKyAgICAgICAgICAiU3R1ZWNrIGF1cyBkZXNzZW4gS2V1bGUgdW5kIGJyYWV0IGRpZXNlIGZ1ZXIgJiYuIn0pICk7CisgICAgICAgIH0KKworICAgICAgICAxKSBOYW1lIGRlciBTcGVpc2UgKGRlcyBHZXRyYWVua3MpIGF1ZiBkZXIgS2FydGUgKGJlaSBtZW51ZSkuCisKKyAgICAgICAgICAgQWRkVG9NZW51KCInT3BhJ3MgRHJhY2hlbmtldWxlJyIsICAgICAKKworICAgICAgICAyKSBpZHMgbWl0IGRlbmVuIHNpY2ggYmVzdGVsbGVuIGxhZXNzdCAoei5CLiAia2F1ZmUga2V1bGUiKS4KKworICAgICAgICAgICAoeyJkcmFjaGVuIiwiZHJhY2hlbmtldWxlIiwia2V1bGUifSksCisKKyAgICAgICAgMykgSGVpbHVuZyBmdWVyIExQIHVuZCBLUCwgU2FldHRpZ3VuZyAoUF9GT09EIG9kZXIgUF9EUklOSywKKyAgICAgICAgICAgUF9BTENPSE9MIG5hY2ggQmVsaWViZW4gc2V0emVuKSwgUHJlaXMgKFBfVkFMVUUpLiAKKyAgICAgICAgICAgSFAgdW5kIFNQIG11ZXNzZW4gbmljaHQgZ2xlaWNoIHNlaW4uIFNwZWlzZW4gdW5kIEdldHJhZW5rZSwKKyAgICAgICAgICAgZGllIG51ciBlaW5lcyB2b24gYmVpZGVuIGhlaWxlbiwgc2luZCBhdWNoIG1vZWdsaWNoLgorCisgICAgICAgICAgIChbUF9IUDo2MyxQX1NQOjYzLFBfRk9PRDo5LFBfVkFMVUU6NTI4XSksCisKKyAgICAgICAgNCkgSGVpbHVuZyBwcm8gSGVhcnRiZWF0IChpbiBkaWVzZW0gQmVpc3BpZWwgamUgNSBLUC9MUCkuCisgICAgCisgICAgICAgICAgIDUsCisKKyAgICAgICAgNSkgTWVsZHVuZ2VuIGZ1ZXIgU3BpZWxlciB1bmQgVW1zdGVoZW5kZSBkaWUgYmVpIEdlbnVzcyBhdXNnZWdlLQorICAgICAgICAgICBiZW4gd2VyZGVuIChhbHNvIE5JQ0hUIGRlciBCZXN0ZWxsLVRleHQpLgorCisgICAgICAgICAgICh7IkR1IGlzc3QgZGllIEtldWxlIG1pdCBlaW5lbSBzY2hsZWNodGVuIEdld2lzc2VuLiIsCisgICAgICAgICAgICAgIiYmIGlzc3QgZGllIEtldWxlIG1pdCBlaW5lbSBzY2hsZWNodGVuIEdld2lzc2VuLiJ9KSwKKworICAgICAgICAgICBWZXJmdWVnYmFyZSBQbGF0emhhbHRlciBzaW5kIChwbCA9IHRoaXNfcGxheWVyKCkpOgorCisgICAgICAgICAgICYmICAtIHBsLT5uYW1lKFdFUiwyKQorICAgICAgICAgICAmMSYgLSBwbC0+bmFtZShXRVIsMikKKyAgICAgICAgICAgJjImIC0gcGwtPm5hbWUoV0VTU0VOLDIpCisgICAgICAgICAgICYzJiAtIHBsLT5uYW1lKFdFTSwyKQorICAgICAgICAgICAmNCYgLSBwbC0+bmFtZShXRU4sMikKKyAgICAgICAgICAgJjEjIC0gY2FwaXRhbGl6ZShwbC0+bmFtZShXRVIsMikpCisgICAgICAgICAgICYyIyAtIGNhcGl0YWxpemUocGwtPm5hbWUoV0VTU0VOLDIpKQorICAgICAgICAgICAmMyMgLSBjYXBpdGFsaXplKHBsLT5uYW1lKFdFTSwyKSkKKyAgICAgICAgICAgJjQjIC0gY2FwaXRhbGl6ZShwbC0+bmFtZShXRU4sMikpCisgICAgICAgICAgICYhICAtIHBsLT5RdWVyeVByb25vdW4oV0VSKQorICAgICAgICAgICAmNSYgLSBwbC0+UXVlcnlQcm9ub3VuKFdFKTsKKyAgICAgICAgICAgJjYmIC0gcGwtPlF1ZXJ5UHJvbm91bihXRVNTRU4pCisgICAgICAgICAgICY3JiAtIHBsLT5RdWVyeVByb25vdW4oV0VNKQorICAgICAgICAgICAmOCYgLSBwbC0+UXVlcnlQcm9ub3VuKFdFTikKKyAgICAgICAgICAgJjUjIC0gY2FwaXRhbGl6ZShwbC0+UXVlcnlQcm9ub3VuKFdFUikpCisgICAgICAgICAgICY2IyAtIGNhcGl0YWxpemUocGwtPlF1ZXJ5UHJvbm91bihXRVNTRU4pKQorICAgICAgICAgICAmNyMgLSBjYXBpdGFsaXplKHBsLT5RdWVyeVByb25vdW4oV0VNKSkKKyAgICAgICAgICAgJjgjIC0gY2FwaXRhbGl6ZShwbC0+UXVlcnlQcm9ub3VuKFdFTikpCisgICAgICAgICAgCisgICAgICAgIDYpIERpZSBTcGVpc2UgaXN0IGluIGlocmVyIEFuemFobCBiZWdyZW56dC4gRnVlciBqZWRlbiBTcGllbGVyCisgICAgICAgICAgIHNpbmQgNCBLZXVsZW4gcHJvIHJlc2V0KCkgZGEuIEF1c3NlcmRlbSBnaWJ0IGVzIG5vY2ggZWluZW4KKyAgICAgICAgICAgIk5vdHZvcnJhdCIgdm9uIDIwIEtldWxlbiwgZGVyIGFsbGUgMyByZXNldCgpcyBhdWZnZWZ1ZWxsdAorICAgICAgICAgICB3aXJkLiBBdXMgZGllc2VtIChzbyBub2NoIHZvcmhhbmRlbikgd2VyZGVuIGRpZSBTcGllbGVyCisgICAgICAgICAgIHZlcnNvcmd0LCB3ZW5uIGlociAicGVyc29lbmxpY2hlciBWb3JyYXQiIGF1ZmdlYnJhdWNodCBpc3QuCisKKyAgICAgICAgICAgKFsgUFJfVVNFUiA6IDQ7IDEgLCBQUl9BTEwgOiAyMDsgMyBdKSwKKyAgICAgICAgICAgCisgICAgICAgICAgIEhJTldFSVM6IGJlaSBCZW51dHp1bmcgZGVzIE1hcHBpbmdzIG11c3MgPHB1Yi5oPiBpbmtsdWRpZXJ0IAorICAgICAgICAgICB3ZXJkZW4hCisgICAgICAgICAgIAorICAgICAgICAgICBXZW5uIG1hbiBrZWluZSByZXNldC1hYmhhZW5naWdlbiBTcGVpc2VuIGhhYmVuIG1vZWNodGUsIHRyYWVndAorICAgICAgICAgICBtYW4gaGllciBlaW5lIDAgZWluLgorCisgICAgICAgIDcpIERpZSBaYWhsIGlzdCBkaWUgV2FydGV6ZWl0IGluIFNla3VuZGVuLCBkaWUgZGVyIFdpcnQgei5CLiBmdWVyCisgICAgICAgICAgIGRpZSBadWJlcmVpdHVuZyB1bmQgQXVzbGllZmVydW5nIGFuIGRlbiBTcGllbGVyIGJyYXVjaHQuCisKKyAgICAgICAgICAgOSwKKyAgICAgICAgIAorICAgICAgICA4KSBMZXR6dGVuZGxpY2ggZGllIE1lbGR1bmdlbiBhbiBTcGllbGVyIHVuZCBVbXN0ZWhlbmRlLCBkaWUgYmVpIEJlLQorICAgICAgICAgICBzdGVsbHVuZyAoaGllciAna2F1ZmUga2V1bGUnKSBhdXNnZWdlYmVuIHdlcmRlbi4KKworICAgICAgICAgICAoeyJEZXIgdW5zaWNodGJhcmUgS25laXBpZXIgc2NobmVpZGV0IGVpbmVtIFJlbnRuZXIgZWluIGdyb3NzZXMgIgorICAgICAgICAgICAiU3R1ZWNrIGF1cyBkZXNzZW4gS2V1bGUgdW5kIGJlcmVpdGV0IHNpZSBEaXIgenUuIEtvbWlzY2gsIG11c3MgIgorICAgICAgICAgICAid29obCBlaW4gVGlwcGZlaGxlciBhdWYgZGVyIEthcnRlIGdld2VzZW4gc2Vpbi4iLAorICAgICAgICAgICAiRGVyIHVuc2ljaHRiYXJlIEtuZWlwaWVyIHNjaG5laWRldCBlaW5lbSBoaWxmbG9zZW4gT3BhIGVpbiAiCisgICAgICAgICAgICJTdHVlY2sgYXVzIGRlc3NlbiBLZXVsZSB1bmQgYnJhZXQgZGllc2UgZnVlciAmJi4ifSkpOworCitTSUVIRSBBVUNIOgorICAgICAgICBBZGRGb29kKCksIEFkZERyaW5rKCksIC9zeXMvcHViLmgKKyAgICAgICAgUmVtb3ZlRnJvbU1lbnUoKQorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorTGFzdCBtb2RpZmllZDogU2FtLCAwMS4gT2t0IDIwMTEsIDIzOjQwIGJ5IEFyYXRob3JuCmRpZmYgLS1naXQgYS9kb2MvbGZ1bi9BZGRUb3VjaERldGFpbCBiL2RvYy9sZnVuL0FkZFRvdWNoRGV0YWlsCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjQxM2UzY2EKLS0tIC9kZXYvbnVsbAorKysgYi9kb2MvbGZ1bi9BZGRUb3VjaERldGFpbApAQCAtMCwwICsxLDcxIEBACitBZGRUb3VjaERldGFpbCgpCisKK0ZVTktUSU9OOgorICAgIHZvaWQgQWRkVG91Y2hEZXRhaWwoc3RyaW5nfHN0cmluZyoga2V5cywKKyAgICAgICAgICAgICAgICAgICAgICAgIHN0cmluZ3xzdHJpbmcqfG1hcHBpbmd8Y2xvc3VyZSBkZXNjKTsKKworREVGSU5JRVJUIElOOgorICAgIC9zdGQvdGhpbmcvZGVzY3JpcHRpb24uYworCitBUkdVTUVOVEU6CisgICAga2V5cworICAgICBTdHJpbmcgb2RlciBBcnJheSB2b24gU3RyaW5ncyBtaXQgZGVuIE5hbWVuIGRlciBEZXRhaWxzLgorICAgIGRlc2MKKyAgICAgU3RyaW5nLCBNYXBwaW5nLCBTdHJpbmctQXJyYXkgb2RlciBDbG9zdXJlIG1pdC96dXIgQmVzY2hyZWlidW5nLgorCitCRVNDSFJFSUJVTkc6CisgICAgRGllc2UgRnVua3Rpb24gZW50c3ByaWNodCBkZW0gQWRkRGV0YWlsKCkgZnVlciBTdGFuZGFyZGRldGFpbHMsIG51cgorICAgIGtvZW5uZW4gaGllcm1pdCAoYWIpdGFzdGJhcmUgYnp3LiBmdWVobGJhcmUgRGV0YWlscyByZWFsaXNpZXJ0IHdlcmRlbjoKKyAgICBEaWUgQmVzY2hyZWlidW5nIGRlciBEZXRhaWxzIDxrZXlzPiB3aXJkIGdlc2V0enQuIFdpZSBkaWUgRGV0YWlscworICAgIGJlaW0gKEFiKVRhc3RlbiBhdXNzZWhlbiwgaGFlbmd0IGltIHdlc2VudGxpY2hlbiB2b20gVHlwIGRlcgorICAgIEJlc2NocmVpYnVuZyA8ZGVzYz4gYWI6CisgICAgIDxkZXNjPiBpc3QgZWluIFN0cmluZy4KKyAgICAgICBCZWltIFVudGVyc3VjaGVuIHdpcmQgZGllc2VyIFN0cmluZyB6dXJ1ZWNrZ2VnZWJlbi4KKyAgICAgIDxkZXNjPiBpc3QgZWluIFN0cmluZy1BcnJheS4KKyAgICAgICAgQmVpbSBVbnRlcnN1Y2hlbiB3aXJkIHp1ZmFlbGxpZyBlaW5lciBkZXIgU3RyaW5ncyB6dXJ1ZWNrZ2VnZWJlbi4KKyAgICAgPGRlc2M+IGlzdCBlaW4gTWFwcGluZy4KKyAgICAgICBEYXMgTWFwcGluZyBtdXNzIGZvbGdlbmRlbiBBdWZiYXUgaGFiZW46CisgICAgICAgICAoWzA6ICAgICAgICAiRGVmYXVsdHRleHQiLAorICAgICAgICAgICAicmFzc2UxIjogInIxdGV4dCIsIC4uLl0pLgorCisgICAgICAgRmFsbHMgZnVlciBkaWUgUmFzc2UgZGVzIGRhcyBEZXRhaWwgdW50ZXJzdWNoZW5kZW4gU3BpZWxlcnMgZWluCisgICAgICAgRWludHJhZyBpbSBNYXBwaW5nIGV4aXN0aWVydCwgd2lyZCBkZXIgZW50c3ByZWNoZW5kZSBUZXh0CisgICAgICAgenVydWVja2dlZ2ViZW4sIGFuc29uc3RlbiBkZXIgRGVmYXVsdHRleHQuIEF1ZiBkaWVzZSBXZWlzZSBzaW5kCisgICAgICAgcmFzc2VuYWJoYWVuZ2lnZSBEZXRhaWxzIG1vZWdsaWNoLiBTaWVoZSBhdWNoIGRpZSBCZWlzcGllbGUuCisgICAgIDxkZXNjPiBpc3QgZWluZSBDbG9zdXJlLgorICAgICAgIEluIGRpZXNlbSBGYWxsIHdpcmQgZGllIENsb3N1cmUgYXVzZ2VmdWVocnQgdW5kIGRhcyBFcmdlYm5pcworICAgICAgIHp1cnVlY2tnZWdlYmVuLiBEaWUgQ2xvc3VyZSBiZWtvbW10IGRhYmVpIGRlbiBOYW1lbiBkZXMgRGV0YWlscworICAgICAgIGFscyBQYXJhbWV0ZXIgdWViZXJnZWJlbi4KKworICAgIEZ1ZXIgZnVlaGxiYXJlIERldGFpbHMga29lbm5lbiBGb3JzY2hlcnB1bmt0ZSBlaW5nZXRyYWdlbiB3ZXJkZW4uCisKKyAgICBGdWVobGJhcmUgRGV0YWlscyBrb2VubmVuIGFsbGdlbWVpbiBlaW5lbiBSYXVtIG9kZXIgT2JqZWt0IHp1Z2VvcmRuZXQKKyAgICB3ZXJkZW46IGRhZnVlciBtdXNzIG1hbiBhbHMgPGtleT4gU0VOU0VfREVGQVVMVCB1ZWJlcmdlYmVuLgorCisgICAgU3BpZWxlcmtvbW1hbmRvczogInRhc3RlIgorCitCRUlTUElFTEU6CisgICAgRWluIGtsZWluZXMgQmVpc3BpZWwgZnVlciByYXNzZW5hYmhhZW5naWdlLCBmdWVobGJhcmUgRGV0YWlscyBtaXQgQ2xvc3VyZXM6CisgICAgICBzdHJpbmcgc3RyYWZlKHN0cmluZyBrZXkpOworICAgICAgLi4uCisgICAgICBBZGRUb3VjaERldGFpbChTRU5TRV9ERUZBVUxULCAiRHUgZnVlaGxzdCBlaW5pZ2UgS25vbGxlblxuIik7CisgICAgICBBZGRUb3VjaERldGFpbCgoeyJrbm9sbGVuIn0pLAorICAgICAgICAgICAgICAgICAgICAgKFswOiAgICAgICAiU2llIGZ1ZWhsZW4gc2ljaCBhbiB3aWUgS25vYmxhdWNoa25vbGxlbi4gIgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiUmllY2ggZG9jaCBtYWwgZGFyYW4uXG4iLAorICAgICAgICAgICAgICAgICAgICAgICAidmFtcGlyIjogIydzdHJhZmVdKSk7CisKKyAgICAgIHN0cmluZyBzdHJhZmUoc3RyaW5nIGtleSkgeworICAgICAgICB0aGlzX3BsYXllcigpLT5yZWR1Y2VfaGl0X3BvaW50cygxMDApOworICAgICAgICByZXR1cm4gIkF1ISBEYXMgd2FyZW4gamEgS25vYmxhdWNoa25vbGxlbiFcbiI7CisgICAgICB9CisKK1NJRUhFIEFVQ0g6CisgICAgU2V0emVuOiAgICBBZGREZXRhaWwoKSwgQWRkUmVhZERldGFpbCgpLCBBZGRTbWVsbHMoKSwgQWRkU291bmRzKCkKKyAgICBMb2VzY2hlbjogIFJlbW92ZURldGFpbCgpLCBSZW1vdmVSZWFkRGV0YWlsKCksIFJlbW92ZVNtZWxscygpLAorICAgICAgICAgICAgICAgUmVtb3ZlU291bmRzKCksIFJlbW92ZVRvdWNoRGV0YWlsKCkKKyAgICBEYXRlbjogICAgIFBfREVUQUlMUywgUF9SRUFEX0RFVEFJTFMsIFBfU01FTExTLCBQX1NPVU5EUywgUF9UT1VDSF9ERVRBSUxTCisgICAgVmVyYWx0ZXQ6ICBBZGRTcGVjaWFsRGV0YWlsKCksIFJlbW92ZVNwZWNpYWxEZXRhaWwoKSwgUF9SRUFEX01TRworICAgIFNvbnN0aWdlczogR2V0RGV0YWlsKCksIGJyZWFrX3N0cmluZygpCisKKzIwLjAxLjIwMTUsIFplc3N0cmEKKwpkaWZmIC0tZ2l0IGEvZG9jL2xmdW4vQWxsR3JvdXBzIGIvZG9jL2xmdW4vQWxsR3JvdXBzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjhmZmJiY2EKLS0tIC9kZXYvbnVsbAorKysgYi9kb2MvbGZ1bi9BbGxHcm91cHMKQEAgLTAsMCArMSwyMSBAQAorQWxsR3JvdXBzKCkKK0ZVTktUSU9OOgorICAgICBzdHJpbmcgKkFsbEdyb3VwcygpCisKK0RFRklOSUVSVCBJTjoKKyAgICAgL3AvZGFlbW9uL21hdGVyaWFsZGIuYyAoTUFURVJJQUxEQikKKworQkVTQ0hSRUlCVU5HOgorICAgICBHaWJ0IGVpbiBBcnJheSBhbGxlciBleGlzdGVudGVuIE1hdGVyaWFsZ3J1cHBlbiB6dXJ1ZWNrIChpaHJlCisgICAgIERlZmluaXRpb25zZm9ybSB3aWUgaW4gPHRoaW5nL21hdGVyaWFsLmg+IGF1ZmdlbGlzdGV0KS4KKworU0lFSEUgQVVDSDoKKyAgICAgS29uemVwdGU6CSAgbWF0ZXJpYWwsIG1hdGVyaWFsZXJrZW5udW5nCisgICAgIEdydW5kbGVnZW5kOiBQX01BVEVSSUFMLCAvc3lzL3RoaW5nL21hdGVyaWFsLmgKKyAgICAgTGlzdGVuOgkgIEFsbE1hdGVyaWFscygpLCBEdW1wKCkKKwkJICBtYXRlcmlhbGxpc3RlLCBtYXRlcmlhbGdydXBwZW4KKyAgICAgTWFzdGVyOgkgIEFkZE1hdGVyaWFsKCksIENvbnZNYXRlcmlhbExpc3QoKSwgTWF0ZXJpYWxHcm91cCgpLAorCQkgIEdyb3VwTmFtZSgpLCBNYXRlcmlhbE5hbWUoKSwKKwkJICBHZXRHcm91cE1lbWJlcnMoKSwgR2V0TWF0TWVtYmVyc2hpcCgpCisKKzcuIE1haSAyMDA0IEdsb2luc29uClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZG9jL2xmdW4vQWxsTWF0ZXJpYWxzIGIvZG9jL2xmdW4vQWxsTWF0ZXJpYWxzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjYyMzBlOWIKLS0tIC9kZXYvbnVsbAorKysgYi9kb2MvbGZ1bi9BbGxNYXRlcmlhbHMKQEAgLTAsMCArMSwyMSBAQAorQWxsTWF0ZXJpYWxzKCkKK0ZVTktUSU9OOgorICAgICBzdHJpbmcgKkFsbE1hdGVyaWFscygpCisKK0RFRklOSUVSVCBJTjoKKyAgICAgL3AvZGFlbW9uL21hdGVyaWFsZGIuYyAoTUFURVJJQUxEQikKKworQkVTQ0hSRUlCVU5HOgorICAgICBHaWJ0IGVpbiBBcnJheSBhbGxlciBleGlzdGVudGVuIE1hdGVyaWFsaWVuIHp1cnVlY2sgKGlocmUgRGVmaW5pdGlvbnMtCisgICAgIGZvcm0gd2llIGluIDx0aGluZy9tYXRlcmlhbC5oPiBhdWZnZWxpc3RldCkuCisKK1NJRUhFIEFVQ0g6CisgICAgIEtvbnplcHRlOgkgIG1hdGVyaWFsLCBtYXRlcmlhbGVya2VubnVuZworICAgICBHcnVuZGxlZ2VuZDogUF9NQVRFUklBTCwgL3N5cy90aGluZy9tYXRlcmlhbC5oCisgICAgIExpc3RlbjoJICBBbGxHcm91cHMoKSwgRHVtcCgpCisJCSAgbWF0ZXJpYWxsaXN0ZSwgbWF0ZXJpYWxncnVwcGVuCisgICAgIE1hc3RlcjoJICBBZGRNYXRlcmlhbCgpLCBDb252TWF0ZXJpYWxMaXN0KCksIE1hdGVyaWFsR3JvdXAoKSwKKwkJICBHcm91cE5hbWUoKSwgTWF0ZXJpYWxOYW1lKCksCisJCSAgR2V0R3JvdXBNZW1iZXJzKCksIEdldE1hdE1lbWJlcnNoaXAoKQorCis3LiBNYWkgMjAwNCBHbG9pbnNvbgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2RvYy9sZnVuL0Fzc29jTWVtYmVyIGIvZG9jL2xmdW4vQXNzb2NNZW1iZXIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMzQ5MTU3YgotLS0gL2Rldi9udWxsCisrKyBiL2RvYy9sZnVuL0Fzc29jTWVtYmVyCkBAIC0wLDAgKzEsNTIgQEAKKworQXNzb2NNZW1iZXIoKQorCisKK0ZVTktUSU9OOgorICAgICAgICBpbnQgQXNzb2NNZW1iZXIob2JqZWN0IG5wYykKKworREVGSU5JRVJUIElOOgorICAgICAgICAvc3RkL2xpdmluZy90ZWFtLmMKKworQVJHVU1FTlRFOgorICAgICAgICBEZXIgenV6dW9yZG5lbmRlIE5QQy4KKworQkVTQ0hSRUlCVU5HOgorICAgICAgICBPcmRuZXQgZWluZW4gTlBDIGVpbmVtIFNwaWVsZXIgenUuIERpZXNlciBpc3QgZGFubgorICAgICAgICBpbW1lciBpbSBUZWFtIGRlcyBTcGllbGVycywgbW9lZ2xpY2hzdCBpbiBkZXIgZ2xlaWNoZW4gUmVpaGUuCisKK1JVRUNLR0FCRVdFUlQ6CisgICAgICAgIDEsIGZhbGxzIFp1b3JkbnVuZyBlcmZvbGdyZWljaCwgc29uc3QgMC4KKworQkVJU1BJRUw6CisgICAgICAgIHZvaWQgZnVuKG9iamVjdCBwbCkKKyAgICAgICAgeworICAgICAgICAgIGlmICggcGwgJiYgcGwtPkFzc29jTWVtYmVyKHRoaXNfb2JqZWN0KCkpICkKKyAgICAgICAgICAgIHRlbGxfb2JqZWN0KHBsLGJyZWFrX3N0cmluZygKKyAgICAgICAgICAgICAgIkljaCBrYWVtcGZlIG51biBhdWYgRGVpbmVyIFNlaXRlIVxuIiw3OCwiRWluIEZldWVydGV1ZmVsICIKKyAgICAgICAgICAgICAgInRlaWx0IERpciBtaXQ6Iik7CisgICAgICAgICAuLi4KKyAgICAgICAgfQorCitCRU1FUktVTkdFTjoKKyAgICAgICAgMS4gS2FubiBudXIgdm9uIEdpbGRlbiwgU3BlbGxib29rcywgdm9tIE9iamVrdCBzZWxiZXIgdW5kIHZvbQorICAgICAgICAgICB6dXp1b3JkbmVuZGVuIE5QQyBhdWZnZXJ1ZmVuIHdlcmRlbi4KKyAgICAgICAgMi4gRWluZW0gTlBDLCBkZXIgc2VsYmVyIGVpbmVtIFNwaWVsZXIgenVnZW9yZG5ldCBpc3QsIGthbm4ga2VpbgorICAgICAgICAgICBOUEMgenVnZW9yZG5ldCB3ZXJkZW4uCisKK1NJRUhFIEFVQ0g6CisgICAgICAgIFVlYmVyc2ljaHQ6IHRlYW1rYW1wZgorICAgICAgICBQcm9wZXJ0aWVzOiBQX1RFQU0sIFBfVEVBTV9BU1NPQ19NRU1CRVJTLCBQX1RFQU1fQVRUQUNLX0NNRCwKKyAgICAgICAgICAgICAgICAgICAgUF9URUFNX0FVVE9GT0xMT1csIFBfVEVBTV9DT0xPUlMsIFBfVEVBTV9MRUFERVIsCisgICAgICAgICAgICAgICAgICAgIFBfVEVBTV9ORVdNRU1CRVIsIFBfVEVBTV9XQU5URURfUk9XLCBQX1RFQU1fV0lNUFlfUk9XCisgICAgICAgIEJld2VndW5nOiAgIElzVGVhbU1vdmUsIFRlYW1GbGVlCisgICAgICAgIE1pdGdsaWVkZXI6IElzVGVhbUxlYWRlciwgVGVhbU1lbWJlcnMKKyAgICAgICAgS2FtcGY6ICAgICAgRGVBc3NvY01lbWJlciwgSW5zZXJ0RW5lbXlUZWFtLCBTZWxlY3ROZWFyRW5lbXksCisgICAgICAgICAgICAgICAgICAgIFNlbGVjdEZhckVuZW15CisgICAgICAgIFBvc2l0aW9uZW46IFByZXNlbnRQb3NpdGlvbiwgUHJlc2VudFJvd3MsIFByZXNlbnRFbmVteVJvd3MsCisgICAgICAgICAgICAgICAgICAgIFByZXNlbnRUZWFtUG9zaXRpb24sIFN3YXBSb3dzCisgICAgICAgIFNvbnN0aWdlczogIFRlYW1QcmVmaXgsIHRlYW1rYW1wZl9pbnRlcm4KKworLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorTGFzdCBtb2RpZmllZDogMDQuMTAuMjAxMSwgWmVzc3RyYQorCmRpZmYgLS1naXQgYS9kb2MvbGZ1bi9BdHRhY2sgYi9kb2MvbGZ1bi9BdHRhY2sKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNDY1NmFlOQotLS0gL2Rldi9udWxsCisrKyBiL2RvYy9sZnVuL0F0dGFjawpAQCAtMCwwICsxLDIyIEBACitBdHRhY2soKQorCitGVU5LVElPTjoKKwl2b2lkIEF0dGFjayhvYmplY3QgZW5lbXkpCisKK0FSR1VNRU5URToKKwllbmVteTogRGVyIEZlaW5kLgorCitCRVNDSFJFSUJVTkc6CisJRGVyIEZlaW5kIHdpcmQgZGVyIFN0YWVya2UgZGVyIFdhZmZlIChiencuIGRlciBIYWVuZGUpIGVudHNwcmVjaGVuZAorCXN0YXJrIGFuZ2VncmlmZmVuLgorCitSVUVDS0dBQkVXRVJUOgorCUtlaW5lci4KKworQkVNRVJLVU5HOgorCURpZXNlIEZ1bmt0aW9uIGdpYnQgZGllIEFuZ3JpZmZzbWVsZHVuZyBhdXMuCisJRmFsbHMgbWl0IGJsb3NzZW4gSGFlbmRlbiBhbmdlZ3JpZmZlbiB3aXJkLCBpc3QgZGllIFN0YWVya2UKKwkoMipTdGFlcmtlX2Rlcl9IYWVuZGUgKyAxMCpBX1NUUikvMworCitTSUVIRSBBVUNIOgorCSJEZWZlbmQiLCAiUXVlcnlEYW1hZ2UiCmRpZmYgLS1naXQgYS9kb2MvbGZ1bi9CZWNvbWVzTmV0QWxpdmUgYi9kb2MvbGZ1bi9CZWNvbWVzTmV0QWxpdmUKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMjJhNmNkYwotLS0gL2Rldi9udWxsCisrKyBiL2RvYy9sZnVuL0JlY29tZXNOZXRBbGl2ZQpAQCAtMCwwICsxLDQ2IEBACitCZWNvbWVzTmV0QWxpdmUoKQorCitGVU5LVElPTjoKKyAgICB2b2lkIEJlY29tZXNOZXRBbGl2ZShvYmplY3QgcGwpOworCitHRVJVRkVOIFZPTjoKKyAgICAvc3RkL3BsYXllci9iYXNlLmMKKworQVJHVU1FTlRFOgorICAgIHBsCisgICAgICBTcGllbGVyLCBkZXIgVmVyYmluZHVuZyB6dW0gTVVEIHdpZWRlcmVybGFuZ3QuCisKK0JFU0NIUkVJQlVORzoKKyAgICBTcGllbGVyLCB3ZWxjaGUgZGllIFZlcmJpbmR1bmcgenVtIE1VRCBmcmVpd2lsbGlnCisgICAgKHouQi4gcGVyICdzY2hsYWZlIGVpbicpIG9kZXIgdW5mcmVpd2lsbGlnIHZlcmxpZXJlbiwgZ2VoZW4gaW4gZGVuCisgICAgTmV0enRvdGVuc3RhdHVzIHVlYmVyLiBTaWUgdmVyYmxlaWJlbiBub2NoIGVpbmUgZGVmaW5pZXJ0ZSBaZWl0IGluCisgICAgZGVyIHp1bGV0enQgYmV0cmV0ZW5lbiBVbWdlYnVuZyB1bmQgd2VyZGVuIHNjaGxpZXNzbGljaCBhdXRvbWF0aXNjaAorICAgIGluIGRlbiBOZXR6dG90ZW5yYXVtIHVlYmVyZnVlaHJ0LgorICAgIFdpcmQgZGllIFZlcmJpbmR1bmcgd2llZGVyIGF1ZmdlYmF1dCwgc28gd2lyZCBkZXIgU3BpZWxlcmNoYXJha3RlcgorICAgIHdpZWRlciB6dW0gTGViZW4gZXJ3ZWNrdCB1bmQgZ2VnZWJlbmVuZmFsbHMgenV2b3IgYXVzIGRlbQorICAgIE5ldHp0b3RlbnJhdW0genVydWVjayB6dSBzZWluZXIgbGV0enRlbiBVbWdlYnVuZyB0ZWxlcG9ydGllcnQuCisgICAgVW0gbnVuIGVpbmVuIFVlYmVyYmxpY2sgZGFydWViZXIgenUgZXJoYWx0ZW4sIHdhbm4gZWluIFNwaWVsZXIgZGllCisgICAgVmVyYmluZHVuZyB6dW0gTVVEIHdpZWRlcmhlcnN0ZWxsdCwgZ2lidCBlcyBkaWUgRnVua3Rpb24KKyAgICBCZWNvbWVzTmV0QWxpdmUoKS4gU2llIHdpcmQgYXV0b21hdGlzY2ggaW4gZGVyIFVtZ2VidW5nIGRlcworICAgIFNwaWVsZXJzLCBpbiBhbGxlbiBPYmpla3RlbiBpbiBkZXIgVW1nZWJ1bmcgZGVzIFNwaWVsZXJzCisgICAgKG5pY2h0IHJla3Vyc2l2KSB1bmQgaW4gYWxsZW4gT2JqZWt0ZW4gaW0gU3BpZWxlciAocmVrdXJzaXYpCisgICAgYXVmZ2VydWZlbi4gVWViZXJnZWJlbiB3aXJkIGhpZXJiZWkgZGFzIFNwaWVsZXJvYmpla3QuCisKKyAgICBFcyBnaWJ0IGF1Y2ggbm9jaCBkaWUgRnVua3Rpb24gQmVjb21lc05ldERlYWQoKSwgbWl0IGRlciBtYW4KKyAgICBhdWYgYWVobmxpY2hlIFdlaXNlIGVpbnNjaGxhZmVuZGUgU3BpZWxlciByZWdpc3RyaWVyZW4ga2Fubi4KKworQkVJU1BJRUxFOgorICAgIEluIGVpbmVtIE5QQyB3YWVyZSBmb2xnZW5kZXMgZGVua2JhcjoKKyAgICAKKyAgICB2b2lkIEJlY29tZXNOZXRBbGl2ZShvYmplY3QgcGwpIHsKKyAgICAgIHRlbGxfcm9vbShlbnZpcm9ubWVudCgpLGJyZWFrX3N0cmluZygKKyAgICAgICAgIkd1dGVuIE1vcmdlbiAiK3BsLT5uYW1lKFdFUikrIiwgYXVjaCBzY2hvbiBhdXNnZXNjaGxhZmVuPyEiLCA3NywKKyAgICAgICAgTmFtZShXRVIpKyIgc2FndCBncmluc2VuZDogIikpOworICAgIH0KKyAgICBTdGVodCBkZXIgTlBDIGluIGVpbmVtIFJhdW0sIHdvIGVpbiBTcGllbGVyIGF1ZndhY2h0LCBzbyB3aXJkIGRlcgorICAgIFNwaWVsZXIgZ2VidWVocmVuZCBiZWdydWVzc3QuCisKK1NJRUhFIEFVQ0g6CisgICAgQmVjb21lc05ldERlYWQoKSwgUGxheWVyUXVpdCgpLCAvc3RkL3BsYXllci9iYXNlLmMsIC9yb29tL25ldHp0b3QuYworCisyNC4gQXVnIDIwMTEgR2xvaW5zb24KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9kb2MvbGZ1bi9CZWNvbWVzTmV0RGVhZCBiL2RvYy9sZnVuL0JlY29tZXNOZXREZWFkCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmZjZmVkN2MKLS0tIC9kZXYvbnVsbAorKysgYi9kb2MvbGZ1bi9CZWNvbWVzTmV0RGVhZApAQCAtMCwwICsxLDQ1IEBACitCZWNvbWVzTmV0RGVhZCgpCisKK0ZVTktUSU9OOgorICAgIHZvaWQgQmVjb21lc05ldERlYWQob2JqZWN0IHBsKTsKKworR0VSVUZFTiBWT046CisgICAgL3N0ZC9wbGF5ZXIvYmFzZS5jCisKK0FSR1VNRU5URToKKyAgICBvYmplY3QgcGwKKyAgICAgIFNwaWVsZXIsIGRlciBWZXJiaW5kdW5nIHp1bSBNVUQgdmVybGllcnQuCisKK0JFU0NIUkVJQlVORzoKKyAgICBTcGllbGVyLCB3ZWxjaGUgZGllIFZlcmJpbmR1bmcgenVtIE1VRCBmcmVpd2lsbGlnCisgICAgKHouQi4gcGVyICdzY2hsYWZlIGVpbicpIG9kZXIgdW5mcmVpd2lsbGlnIHZlcmxpZXJlbiwgZ2VoZW4gaW4gZGVuCisgICAgTmV0enRvdGVuc3RhdHVzIHVlYmVyLiBTaWUgdmVyYmxlaWJlbiBub2NoIGVpbmUgZGVmaW5pZXJ0ZSBaZWl0IGluCisgICAgZGVyIHp1bGV0enQgYmV0cmV0ZW5lbiBVbWdlYnVuZyB1bmQgd2VyZGVuIHNjaGxpZXNzbGljaCBhdXRvbWF0aXNjaAorICAgIGluIGRlbiBOZXR6dG90ZW5yYXVtIHVlYmVyZnVlaHJ0LgorICAgIFVtIG51biBlaW5lbiBVZWJlcmJsaWNrIGRhcnVlYmVyIHp1IGVyaGFsdGVuLCB3YW5uIGVpbiBTcGllbGVyIGRpZQorICAgIFZlcmJpbmR1bmcgenVtIE1VRCB2ZXJsaWVydCwgZ2lidCBlcyBkaWUgRnVua3Rpb24gQmVjb21lc05ldERlYWQoKS4KKyAgICBTaWUgd2lyZCBhdXRvbWF0aXNjaCBpbiBkZXIgVW1nZWJ1bmcgZGVzIFNwaWVsZXJzLCBpbiBhbGxlbiBPYmpla3RlbgorICAgIGluIGRlciBVbWdlYnVuZyBkZXMgU3BpZWxlcnMgKG5pY2h0IHJla3Vyc2l2KSB1bmQgaW4gYWxsZW4gT2JqZWt0ZW4KKyAgICBpbSBTcGllbGVyIChyZWt1cnNpdikgYXVmZ2VydWZlbi4gVWViZXJnZWJlbiB3aXJkIGhpZXJiZWkgZGFzCisgICAgU3BpZWxlcm9iamVrdC4KKworICAgIEVzIGdpYnQgYXVjaCBub2NoIGRpZSBGdW5rdGlvbiBCZWNvbWVzTmV0QWxpdmUoKSwgbWl0IGRlciBtYW4KKyAgICBhdWYgYWVobmxpY2hlIFdlaXNlIGVyd2FjaGVuZGUgU3BpZWxlciByZWdpc3RyaWVyZW4ga2Fubi4KKworQkVJU1BJRUxFOgorICAgIEVzIGdpYnQgR2ViaWV0ZSwgaW4gZGVuZW4gbmV0enRvdGUgU3BpZWxlciB1bmVyd3VlbnNjaHQgc2luZC4KKyAgICBGb2xnZW5kZXJtYXNzZW4ga2FubiBtYW4gc2ljaCBpaHJlciB3aXJrdW5nc3ZvbGwgZW50bGVkaWdlbjoKKyAgICAKKyAgICB2b2lkIEJlY29tZXNOZXREZWFkKG9iamVjdCBwbCkgeworICAgICAgcGwtPm1vdmUoImVpbmdhbmdzcmF1bSB6dSBnZWJpZXQiLCBNX1RQT1JUfE1fTk9DSEVDSyk7CisgICAgfQorICAgIE1hbiBzY2hpY2t0IGRpZXNlIFNwaWVsZXIgd2llZGVyIHp1bSBFaW5nYW5nIGRlcyBHZWJpZXRlcy4KKyAgICBEYSBkZXIgbGV0enRlIEF1ZmVudGhhbHRzb3J0IGVpbmVzIFNwaWVsZXJzLCBkZXIgaW4gZGVuCisgICAgTmV0enRvdGVuc3RhdHVzIHVlYmVyZ2VodCwgZXJzdCBuYWNoIEF1ZnJ1ZiBkZXIgRnVua3Rpb24KKyAgICBCZWNvbWVzTmV0RGVhZCgpIGFiZ2VzcGVpY2hlcnQgd2lyZCwgd2FjaHQgZGVyIFNwaWVsZXIgZGFubiBhbiBkZW0KKyAgICBPcnQgYXVmLCB3byBtYW4gSWhuIGlubmVyaGFsYiBkaWVzZXIgRnVua3Rpb24gaGludGVsZXBvcnRpZXJ0IGhhdC4KKworU0lFSEUgQVVDSDoKKyAgICBCZWNvbWVzTmV0QWxpdmUoKSwgUGxheWVyUXVpdCgpLCAvc3RkL3BsYXllci9iYXNlLmMsIC9yb29tL25ldHp0b3QuYworCisyNC4gQXVnIDIwMTEsIEdsb2luc29uClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZG9jL2xmdW4vQ2Fubm90U2VlIGIvZG9jL2xmdW4vQ2Fubm90U2VlCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjM4Njk1NDEKLS0tIC9kZXYvbnVsbAorKysgYi9kb2MvbGZ1bi9DYW5ub3RTZWUKQEAgLTAsMCArMSwzMCBAQAorQ2Fubm90U2VlKCkKKworRlVOS1RJT046CisgICAgIHZhcmFyZ3MgaW50IENhbm5vdFNlZShpbnQgc2lsZW50KTsKKworREVGSU5JRVJUIElOOgorICAgICAvc3RkL2xpdmluZy9saWdodC5jCisKK0FSR1VNRU5URToKKyAgICAgc2lsZW50IC0gU29sbCBhbiBkYXMgTGViZXdlc2VuIGRpcmVrdCBhdXRvbWF0aXNjaCBlaW5lIE1lbGR1bmcKKyAgICAgICAgICAgICAgYXVzZ2VnZWJlbiB3ZXJkZW4gd2VubiBlcyBuaWNodHMgc2VoZW4ga2Fubj8KKworQkVTQ0hSRUlCVU5HOgorICAgICBEaWVzZSBGdW5rdGlvbiBwcnVlZnQgb2IgZGFzIExlYmV3ZXNlbiBldHdhcyBzZWhlbiBrYW5uLCBvZGVyIG5pY2h0LgorICAgICBIaWVyYmVpIHdpcmQgc293b2hsIGRhcyBMaWNodGxldmVsIG1pdCBzYWVtdGxpY2hlbiBNb2RpZmlrYXRvcmVuLAorICAgICBhbHMgYXVjaCBOYWNodHNpY2h0IHVuZCBkaWUgUHJvcGVydHkgUF9CTElORCBiZXJ1ZWNrc2ljaHRpZ3QuIERhCisgICAgIGRpZXNlIEZ1bmt0aW9uIGJlaSB6dWt1ZW5mdGlnZW4gTXVkbGliYWVuZGVydW5nZW4gaW1tZXIgYWt0dWFsaXNpZXJ0CisgICAgIHdlcmRlbiBkdWVyZnRlLCBzb2xsdGUgbWFuIHNpZSBuYWNoIE1vZWdsaWNoa2VpdCBiZW51dHplbiB1bmQgZGllCisgICAgIEFiZnJhZ2VuIG5pY2h0IHNlbGJzdCBpbXBsZW1lbnRpZXJlbi4KKworUlVlQ0tHQUJFV0VSVDoKKyAgICAgMCwgd2VubiBkZXIgU3BpZWxlciBldHdhcyBzZWhlbiBrYW5uCisgICAgIDEsIHdlbm4gZGVyIFNwaWVsZXIgbmljaHRzIHNlaGVuIGthbm46IEJsaW5kaGVpdAorICAgICAyLCB3ZW5uIGRlciBTcGllbGVyIG5pY2h0cyBzZWhlbiBrYW5uOiB6dSB3ZW5pZyBMaWNodC9rZWluZSBOYWNodHNpY2h0CisKK1NJRUhFIEFVQ0g6CisgICAgIFBfQkxJTkQsIFBfTElHSFRfTU9ESUZJRVIsIFBfUExBWUVSX0xJR0hUCisKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KK0xhc3QgbW9kaWZpZWQ6IE1vbiBKYW4gMTcgMTg6MjI6MjcgMjAwMCBieSBQYWRyZWljCmRpZmYgLS1naXQgYS9kb2MvbGZ1bi9DaGFuZ2VNaW5pUXVlc3QgYi9kb2MvbGZ1bi9DaGFuZ2VNaW5pUXVlc3QKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYTZiZmI3ZAotLS0gL2Rldi9udWxsCisrKyBiL2RvYy9sZnVuL0NoYW5nZU1pbmlRdWVzdApAQCAtMCwwICsxLDQ4IEBACitGVU5LVElPTjoKKyAgICBpbnQgQ2hhbmdlTWluaVF1ZXN0KG1peGVkIHF1ZXN0Z2ViZXIsIGludCBwYXJhbWV0ZXIsIG1peGVkIG5ld3ZhbHVlKQorCitERUZJTklFUlQgSU46CisgICAgL3NlY3VyZS9xdWVzdG1hc3RlcgorCitCRVNDSFJFSUJVTkc6CisgICAgRGllc2UgRnVua3Rpb24gYWVuZGVydCBlaW5lbiBQYXJhbWV0ZXIgZWluZXIgTWluaXF1ZXN0IGltIFF1ZXN0bWFzdGVyLAorICAgIHNjaHJlaWJ0IGZ1ZXIgZGllc2UgQWt0aW9uIGVpbmVuIExvZy1FaW50cmFnIHVuZCBlcnN0ZWxsdCBkYXMgTWluaXF1ZXN0LQorICAgIER1bXBmaWxlIG5ldS4KKworQVJHVU1FTlRFOgorICAgIHF1ZXN0Z2ViZXIgLSBMYWRlbmFtZSBkZXMgT2JqZWt0cyAoc3RyaW5nKSwgZGFzIGRpZSBNaW5pcXVlc3QgdmVyZ2lidCwgCisgICAgICAgICAgICAgICAgIG9kZXJkaWUgSW5kZXhudW1tZXIgKGludCkgZGVyIE1pbmlxdWVzdCBpbiBkZXIgTVEtTGlzdGUKKyAgICBwYXJhbWV0ZXIgIC0gQW5nYWJlIGRlcyB6dSBhZW5kZXJuZW4gUGFyYW1ldGVycyAoUG9zaXRpb24gZGVzIFZhbHVlcworICAgICAgICAgICAgICAgICBpbSBNaW5pcXVlc3RzLU1hcHBpbmcpOgorICAgICAgICAgICAgICAgICAwIDogTWluaXF1ZXN0LVN0dWZlbnB1bmt0ZSwgbWluZC4gMQorICAgICAgICAgICAgICAgICAyIDogQXVmZ2FiZW5iZXNjaHJlaWJ1bmcgZGVyIE1pbmlxdWVzdCAoc3RyaW5nKQorICAgICAgICAgICAgICAgICAzIDogU2ljaHRiYXJrZWl0IGRlciBNaW5pcXVlc3QgKDAvMSksIGRlZmF1bHQgaXN0IDEKKyAgICAgICAgICAgICAgICAgNCA6IGFrdGl2L2luYWt0aXYgKDEvMCkKKyAgICAgICAgICAgICAgICAgNSA6IFRpdGVsIGRlciBNaW5pcXVlc3QKKyAgICAgICAgICAgICAgICAgNiA6ICJnZXNjaGFmZnQiLUJlc2NocmVpYnVuZyBuYWNoIEFic2NobHVzcyBkZXIgTVEKKyAgICAgICAgICAgICAgICAgNyA6IFZvcmF1c3NldHp1bmdlbiwgTWFwcGluZyBpbSBGb3JtYXQgdm9uIFBfUkVTVFJJQ1RJT05TCisgICAgICAgICAgICAgICAgIDggOiB6dWdlb3JkbmV0ZSBSZWdpb24sIFN0cmluZyB3aWUgei5CLiJwb2xhciIsICJnZWJpcmdlIgorICAgICAgICAgICAgICAgICA5IDogZXJsYXVidGUgQWJmcmFnZW9iamVrdGUsIEFycmF5IHZvbiBMYWRlbmFtZW4sIHouQi4KKyAgICAgICAgICAgICAgICAgICAgICh7Ii9kL3JlZ2lvbi9tYWdpZXIvbnBjL2luZm9ucGMifSksIGVzIGtvZW5uZW4gbWVocmVyZSAKKyAgICAgICAgICAgICAgICAgICAgIE9iamVrdGUgZWluZ2V0cmFnZW4gc2VpbgorICAgIG5ld3ZhbHVlICAgLSBuZXVlciBXZXJ0IGZ1ZXIgZGVuIGFuZ2VnZWJlbmVuIFBhcmFtZXRlcgorCitSVUVDS0dBQkVXRVJURToKKyAgICAgMTogaGF0IGdla2xhcHB0CisgICAgIDA6IFp1Z3JpZmYgdmVyd2VpZ2VydAorICAgIC0yOiB1bmd1ZWx0aWdlciBEYXRlbnR5cCBlaW5lcyBkZXIgQXJndW1lbnRlLCBiZWkgUGFyYW1ldGVyIDkgd2lyZAorICAgICAgICBlaW4gdWViZXJnZWJlbmVzIEFycmF5IHp1c2FldHpsaWNoIGF1ZiBMZWVyc3RyaW5ncyB1bmQgRWxlbWVudGUKKyAgICAgICAgZ2VwcnVlZnQsIGRpZSBrZWluZSBTdHJpbmdzIHNpbmQuIFdlbm4gZGFzIEFycmF5IGF1c3NjaGxpZXNzbGljaAorICAgICAgICBhdXMgc29sY2hlbiBFbGVtZW50ZW4gYmVzdGVodCwgd2lyZCBlYmVuZmFsbHMgLTIgenVydWVja2dlZ2ViZW4uCisKK0JFTUVSS1VOR0VOOgorICAgIERhcyBGbGFnICJhY3RpdmUiIGxhZXNzdCBzaWNoIGJlcXVlbWVyIHVlYmVyIGRpZSBRdWVzdG1hc3Rlci1GdW5rdGlvbgorICAgIFN3aXRjaE1pbmlRdWVzdEFjdGl2ZSgpIHVtc2NoYWx0ZW4uCisgICAgRGVyIE1pbmlxdWVzdC1UaXRlbCBkYXJmIGtlaW4gImluIiBvZGVyICJpbSIgZW50aGFsdGVuLCB3ZWlsIGRhbm4gZGllCisgICAgRWludHJhZWdlIGluIGRlciBGcmF0ZXJuaXRhcy1CaWJsaW90aGVrIG5pY2h0IGdlbGVzZW4gd2VyZGVuCisgICAga29lbm5lbi4KKworU0lFSEUgQVVDSDoKKyAgIEFkZE1pbmlRdWVzdChMKQorICAgUF9SRVNUUklDVElPTlMKKwpkaWZmIC0tZ2l0IGEvZG9jL2xmdW4vQ2hhbmdlUmVwdXRhdGlvbiBiL2RvYy9sZnVuL0NoYW5nZVJlcHV0YXRpb24KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZTdjM2FmNgotLS0gL2Rldi9udWxsCisrKyBiL2RvYy9sZnVuL0NoYW5nZVJlcHV0YXRpb24KQEAgLTAsMCArMSw0NSBAQAorQ2hhbmdlUmVwdXRhdGlvbgorRlVOS1RJT046CisgICAgIHB1YmxpYyB2YXJhcmdzIGludCBDaGFuZ2VSZXB1dGF0aW9uKHN0cmluZyByZXBpZCwgaW50IHZhbHVlLCBpbnQgc2lsZW50KQorCitERUZJTklFUlQgSU46CisgICAgIC9zdGQvcGxheWVyL3JlcHV0YXRpb24uYworCitBUkdVTUVOVEU6CisgICAgIHJlcGlkCisgICAgICAgSmVkZSBuZXVlIFJlcHV0YXRpb25zZ3J1cHBlIG11c3MgYW5mYW5ncyBtaXQgZWluZXIgZWluZGV1dGlnZW4gSUQgdm9uIAorICAgICAgIGVpbmVtIEVNIGluIGRlbiBSZXB1dGF0aW9uc21hc3RlciBlaW5nZXRyYWdlbiB3ZXJkZW4uIERhbmFjaCBrYW5uIG1hbiAKKyAgICAgICB1ZWJlciBkaWUgZWluZGV1dGlnZSBJRCA8cmVwaWQ+IGF1ZiBzaWUgenVncmVpZmVuLgorICAgICB2YWx1ZQorICAgICAgIERlciBXZXJ0LCB1bSBkZW4gZGllIFJlcHV0YXRpb24gZ2VhZW5kZXJ0IHdlcmRlbiBzb2xsLiBQb3NpdGl2ZSBXZXJ0ZSAKKyAgICAgICBlcmhvZWhlbiBkaWUgUmVwdXRhdGlvbiwgbmVnYXRpdmUgdmVyc2NobGVjaHRlcm4gc2llLgorICAgICBzaWxlbnQKKyAgICAgICBFaW4gb3B0aW9uYWxlcyBGbGFnLiBGYWxscyBnZXNldHp0LCB3aXJkIGtlaW5lIFN0YW5kYXJkbWVsZHVuZyB1ZWJlciAKKyAgICAgICBkaWUgUmVwdXRhdGlvbnNhZW5kZXJ1bmcgYW4gZGVuIFNwaWVsZXIgYXVzZ2VnZWJlbi4gTWFuIGtvZW5udGUgZGFubiAKKyAgICAgICBlaWdlbmUgTWVsZHVuZ2VuIGF1c2dlYmVuLgorCitCRVNDSFJFSUJVTkc6CisgICAgIFZvciBkZXIgQWVuZGVydW5nIHdpcmQgZWluIENoZWNrIGF1ZiBkaWUgVUlEIGRlcyBhdXNmdWVocmVuZGVuIE9iamVrdGVzCisgICAgIGF1c2dlZnVlaHJ0LCAiZnJlbWRlIiBSZXB1dGF0aW9uZW4gZGFyZiBtYW4gc29taXQgbmljaHQgdmVyYWVuZGVybi4KKyAgICAgTWFuIGthbm4gYWJlciBzZWxic3R2ZXJzdGFlbmRsaWNoIGluIGJlZ3J1ZW5kZXRlbiBGYWVsbGVuIG1pdCBkZW0KKyAgICAgenVzdGFlbmRpZ2VuIE1hZ2llci9SZWdpb25zbWFnaWVyIHNwcmVjaGVuLCBvYiBtYW4gZWJlbmZhbGxzIFp1Z3JpZmYKKyAgICAgZXJoYWVsdC4gRWluZ2V0cmFnZW4gd2lyZCBkaWVzIHNjaGx1c3NlbmRsaWNoIGR1cmNoIGVpbmVuIEVNLgorCitSVWVDS0dBQkVXRVJUOgorICAgICBSRVBfUkVUX1NVQ0NFU1MgICAgUmVwdXRhdGlvbiB3dXJkZSB2ZXJhZW5kZXIuCisgICAgIFJFUF9SRVRfU1VDQ0VTU0NVVCBSZXB1dGF0aW9uIHd1cmRlIGF1ZiBNaW4gLyBNYXggdmVyYWVuZGVydAorICAgICBSRVBfUkVUX1dST05HQVJHUyAgRmFsc2NoZSBBcmd1bWVudGUgZnVlciBDaGFuZ2VSZXAoKQorICAgICBSRVBfUkVUX0lOVkFMSURVSUQgVW56dWxhZXNzaWdlIFVJRCAvIGtlaW5lIFp1Z3JpZmZzcmVjaHRlCisgICAgIFJFUF9SRVRfQUxSRUFEWU1BWCBSZXB1dGF0aW9uIGJlcmVpdHMgTWF4IC8gTWluCisgICAgIFJFUF9SRVRfSU5BQ1RJVkUgICBSZXB1dGF0aW9uIG1vbWVudGFuIGluYWt0aXYKKyAgICAgUkVQX1JFVF9JTlZBTElEUkVQIFJlcHV0YXRpb24gbmljaHQgdm9yaGFuZGVuCisKK0JFSVNQSUVMRToKKyAgICAgcy4gcmVwdXRhdGlvbgorCitTSUVIRSBBVUNIOgorICAgICByZXB1dGF0aW9uCisgICAgIEdldFJlcHV0YXRpb24oKSwgR2V0UmVwdXRhdGlvbnMoKQorCitaVUxFVFpUIEdFQWVOREVSVDoKKzA2LjA0LjIwMDksIFplc3N0cmEKZGlmZiAtLWdpdCBhL2RvYy9sZnVuL0NoZWNrRmluZFJlc3RyaWN0aW9ucyBiL2RvYy9sZnVuL0NoZWNrRmluZFJlc3RyaWN0aW9ucwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5mOWM5NmU1Ci0tLSAvZGV2L251bGwKKysrIGIvZG9jL2xmdW4vQ2hlY2tGaW5kUmVzdHJpY3Rpb25zCkBAIC0wLDAgKzEsMjMgQEAKK0NoZWNrRmluZFJlc3RyaWN0aW9ucworCitGVU5LVElPTjoKKyAgICB2YXJhcmdzIGludCBDaGVja0ZpbmRSZXN0cmljdGlvbnMob2JqZWN0IG9iLCBtaXhlZCByZXN0ciwgY2xvc3VyZSBxcCkKKyAKK0RFRklOSUVSVCBJTjoKKyAgICAvc3RkL3Jvb20vc2hvcC5jCisgCitBUkdVTUVOVEU6CisgICAgb2IgICAgIC0gT2JqZWt0CisgICAgcmVzdHIgIC0genVzYWV0emxpY2hlcyBBcmd1bWVudAorICAgIHFwICAgICAtIHN5bWJvbF9mdW5jdGlvbigiUXVlcnlQcm9wIixvYikKKworQkVTQ0hSRUlCVU5HOgorICAgIEZ1bmt0aW9uLCBkaWUgRmluZEJlc3RXZWFwb24gLyBGaW5kQmVzdEFybW91cnMgZWluc2NocmFlbmt0LgorICAgIFdpcmQgaW4gV2VydCB1bmdsZWljaCAwIHp1cnVlY2tnZWxpZWZlcnQsIHNvIHdpcmQgZGFzIE9iamVrdAorICAgIG5pY2h0IGdlbm9tbWVuLgorCitSVUVDS0dBQkVXRVJUOgorICAgIE5vcm1hbGVyd2Vpc2UgMAorCitTSUVIRSBBVUNIOgorICAgIEZpbmRCZXN0V2VhcG9uKCksIEZpbmRCZXN0QXJtb3VycygpCmRpZmYgLS1naXQgYS9kb2MvbGZ1bi9DaGVja0xpZ2h0VHlwZSBiL2RvYy9sZnVuL0NoZWNrTGlnaHRUeXBlCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjFhMDQ5MGEKLS0tIC9kZXYvbnVsbAorKysgYi9kb2MvbGZ1bi9DaGVja0xpZ2h0VHlwZQpAQCAtMCwwICsxLDg0IEBACitDaGVja0xpZ2h0VHlwZSgpCisKK0ZVTktUSU9OOgorCXZhcmFyZ3MgaW50IENoZWNrTGlnaHRUeXBlKGludCBsaWdodHR5cGUsIGludCBtb2RlKTsKKworREVGSU5JRVJUIElOOgorCS9zdGQvdGhpbmcvZGVzY3JpcHRpb24uYworCitBUkdVTUVOVEU6CisJbGlnaHR0eXBlCisJICBBdWYgZGllc2VuIExpY2h0dHlwIHdpcmQgZ2V0ZXN0ZXQuCisJbW9kZQorCSAgRGllIE1ldGhvZGUsIG5hY2ggZGVyIGRlciBMaWNodHR5cCB1ZWJlcnBydWVmdCB3aXJkLgorCitCRVNDSFJFSUJVTkc6CisgICAgICAgIERpZSBGdW5rdGlvbiBwcnVlZnQsIG9iIGRlciB1ZWJlcmdlYmVuZSBsaWdodHR5cGUgbWl0IGRlbSBpbgorICAgICAgICBQX0xJR0hUX1RZUEUgZGVmaW5pZXJ0ZW4gTGljaHR0eXAgdWViZXJlaW5zdGltbXQuIAorCisgICAgICAgIERhYmVpIGthbm4gaW4gdmVyc2NoaWVkZW5lbiBNb2RpIGdldGVzdGV0IHdlcmRlbjoKKworICAgICAgICBMVF9DSEVDS19BTlkKKyAgICAgICAgICBFcyB3aXJkIGdlcHJ1ZWZ0LCBvYiBtaW5kZXN0ZW5zIGVpbmVyIGRlciBpbiBsaWdodHR5cGUgdWViZXIKKyAgICAgICAgICBnZWJlbmVuIExpY2h0dHlwZW4gaW0gT2JqZWt0IHZvcmhhbmRlbiBpc3QuIERpZXMgaXN0IGRhcworICAgICAgICAgIFN0YW5kYXJkdmVyaGFsdGVuIChkZWZhdWx0KSBkZXIgRnVua3Rpb24uCisKKyAgICAgICAgTFRfQ0hFQ0tfQUxMICAgICAKKyAgICAgICAgICBFcyB3aXJkIGdlcHJ1ZWZ0LCBvYiBhbGxlIGluIGxpZ2h0dHlwZSBkZWZpbmllcnRlbiBMaWNodHR5cGVuCisgICAgICAgICAgdm9yaGFuZGVuIHNpbmQuIEVzIGtvZW5uZW4gYWJlciBhdWNoIG1laHIgTGljaHR0eXBlbiBkZWZpbmllcnQKKyAgICAgICAgICBzZWluLgorCisgICAgICAgIExUX0NIRUNLX01BVENIICAgCisgICAgICAgICAgRXMgd2lyZCBnZXBydWVmdCwgb2IgZ2VuYXUgZGllIGluIGxpZ2h0dHlwZSBkZWZpbmllcnRlbiBMaWNodC0KKyAgICAgICAgICB0eWVuIGRlZmluaWVydCBzaW5kLCBzaW5kIG1laHIgb2RlciB3ZW5pZ2VyIHZvcmhhbmRlbiwgZ2lidCBkaWUKKyAgICAgICAgICBGdW5rdGlvbiAwIHp1cnVlY2suCisKKyAgICAgICAgTFRfQ0hFQ0tfTk9ORSAgICAKKyAgICAgICAgICBFcyB3aXJkIGdlcHJ1ZWZ0LCBvYiBrZWluZXIgZGVyIHVlYmVyZ2ViZW5lbiBMaWNodHR5cGVuIHZvcmhhbmRlbgorICAgICAgICAgIHNpbmQuIE9iIHNvbnN0IG5vY2ggYW5kZXJlIExpY2h0dHlwZW4gdm9yaGFuZGVuIHNpbmQsIGlzdCBkYWJlaSAKKyAgICAgICAgICBlZ2FsLgorCitSVWVDS0dBQkVXRVJUOgorCTAgd2VubiBkaWUgZ2VwcnVlZnRlbiBCZWRpbmd1bmdlbiBuaWNodCBrb3JyZWt0IHNpbmQsIHNvbnN0IAorICAgICAgICBlaW4gV2VydCB1bmdsZWljaCAwLgorCitCRUlTUElFTEU6CisgICAgICAgIEluIGVpbmVtIFJhdW0gc2NoZWludCBkaWUgU29ubmUsIGF1c3NlcmRlbSBnaWJ0IGVzIGRvcnQgZWluIExhZ2VyLQorICAgICAgICBmZXVlciB1bmQgZWluIE9iamVrdCBtaXQgbWFnaXNjaGVtIEdsdWVoZW4gKG1laW5lIFBoYW50YXNpZSBzdHJlaWt0CisgICAgICAgIGdyYWQpOgorCisgICAgICAgIHJhdW0tPlNldFByb3AoIFBfTElHSFRfVFlQRSwgTFRfU1VOfExUX09QRU5fRklSRXxMVF9HTE9XSU5HICk7CisKKyAgICAgICAgRXMgc29sbCBnZXRlc3RldCB3ZXJkZW4sIG9iIGFuIGluIGRlbSBSYXVtIFRhZ2VzbGljaHQgaGVycnNjaHQ6CisKKyAgICAgICAgcmF1bS0+Q2hlY2tMaWdodFR5cGUoTFRfREFZTElHSFQsIExUX0NIRUNLX0FOWSk7CisgICAgICAgIHJhdW0tPkNoZWNrTGlnaHRUeXBlKExUX0RBWUxJR0hUKTsgLy8gZ2xlaWNod2VydGlnCisKKyAgICAgICAgRGllIEZ1bmt0aW9uIGVyZ2lidCB3YWhyLCBkYSBMVF9EQVlMSUdIVCB1bnRlciBhbmRlcmVtIExUX1NVTiBlbnQtCisgICAgICAgIGhhZWx0ICh2Z2wgbWFuIFBfTElHSFRfVFlQRVMpLgorCisgICAgICAgIEVzIHNvbGwgZ2V0ZXN0ZXQgd2VyZGVuLCBkYXNzIHdlZGVyIE1vbmQgbm9jaCBTdGVybmUgaW0gUmF1bSBzaW5kOgorCisgICAgICAgIHJhdW0tPkNoZWNrTGlnaHRUeXBlKExUX01PT058TFRfU1RBUlMsIExUX0NIRUNLX05PTkUpOworCisgICAgICAgIERpZSBGdW5rdGlvbiBlcmdpYnQgd2FociwgZGEgZGllIGJlaWRlbiBuaWNodCBnZXNldHp0IHNpbmQuCisKKyAgICAgICAgRXMgc29sbCBnZXBydWVmdCB3ZXJkZW4sIG9iIE1vbmQgdW5kIFN0ZXJuZSBpbSBSYXVtIGxldWNodGVuOgorCisgICAgICAgIHJhdW0tPkNoZWNrTGlnaHRUeXBlKExUX01PT058TFRfU1RBUlMsIExUX0NIRUNLX0FMTCk7CisKKyAgICAgICAgRGllIEZ1bmt0aW9uIGVyZ2lidCBmYWxzY2gsIGRhIGtlaW5zIGRlciBiZWlkZW4gTGljaHRlciB2b3JoYW5kZW4KKyAgICAgICAgaXN0LiBTaWUgZXJnYWViZSBhYmVyIGF1Y2ggZmFsc2NoLCB3ZW5uIGVpbmVyIGRlciBiZWlkZW4gVHlwZW4KKyAgICAgICAgdm9yaGFuZGVuIHdhZXIuIE51ciB3ZW5uIGJlaWRlIHZvcmhhbmRlbiBzaW5kLCBnaWJ0IExUX0NIRUNLX0FMTAorICAgICAgICB3YWhyLgorCitCRU1FUktVTkc6CisgICAgICAgIExpZ2h0dHlwZXMgaGFiZW4gbmljaHRzIG1pdCBkZW0gTGljaHRzeXN0ZW0genUgdHVuLiBTaWUgZGllbmVuIAorICAgICAgICBudXIgZGVyIEJlc2NocmVpYnVuZyBkZXIgTGljaHR2ZXJoYWVsdG5pc3NlIGFuL2luIGVpbmVtIE9iamVrdC4KKyAgICAgICAgT2JqZWt0ZSBtaXQgdmVyc2NoaWVkZW5lbiBMaWNodHZlcmhhZWx0bmlzc2VuIGJlZWluZmx1c3NlbiBzaWNoCisgICAgICAgIGdlZ2Vuc2VpdGlnIG5pY2h0LgorCitTSUVIRSBBVUNIOgorICAgICAgICAvc3RkL3RoaW5nL2Rlc2NyaXB0aW9uLmMsIC9zdGQvdGhpbmcvbGlnaHR0eXBlcy5oLCBQX0xJR0hUX1RZUEUKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KK0xhc3QgbW9kaWZpZWQ6IEZyaSBKdW4gMTEgMjA6NDc6MzMgMjAwNCBieSBWYW5pb24KZGlmZiAtLWdpdCBhL2RvYy9sZnVuL0NoZWNrUmVzaXN0YW5jZSBiL2RvYy9sZnVuL0NoZWNrUmVzaXN0YW5jZQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi40NTQ4NmE1Ci0tLSAvZGV2L251bGwKKysrIGIvZG9jL2xmdW4vQ2hlY2tSZXNpc3RhbmNlCkBAIC0wLDAgKzEsMjAgQEAKK0NoZWNrUmVzaXN0YW5jZSgpCisKK0ZVTktUSU9OOgorCUNoZWNrUmVzc2lzdGFuY2Uoc3RyaW5nKiBkYW1fdHlwZV9saXN0KQorCitBUkdVTUVOVEU6CisJZGFtX3R5cGVfbGlzdDogTGlzdGUgZGVyIFNjaGFkZW5zYXJ0ZW4sIGRpZSBnZXBydWVmdCB3ZXJkZW4KKworQkVTQ0hSRUlCVU5HOgorCURpZXNlIEZ1bmt0aW9uIHVlYmVycHJ1ZWZ0LCBnZWdlbiB3ZWxjaGUgZGVyIGFuZ2VnZWJlbmVuCisJU2NoYWRlbnNhcnRlbiBkYXMgTGViZXdlc2VuIHJlc2lzdGVudCBvZGVyIHZlcmxldHpsaWNoIGlzdCB1bmQKKwlnaWJ0IGVpbmVuIEZha3RvciB6dXJ1ZWNrLCBkZXIgbWl0IGRlbSBTY2hhZGVuIG11bHRpcGxpemllcnQgd2lyZC4KKwlEaWVzZXIgRmFrdG9yIGJldHJhZWd0IG5vcm1hbGVyd2Vpc2UgMSwgYmVpIGJlaSBqZWRlciBSZXNpc3RlbnoKKwl3aXJkIGVyIGhhbGJpZXJ0IHVuZCBiZWkgamVkZXIgVmVybGV0emxpY2hrZWl0IHZlcmRvcHBlbHQuCisKK1JVRUNLR0FCRVdFUlQ6CisJRWluIEZha3RvciwgZGVyIG1pdCBkZW0gU2NoYWRlbiBtdWx0aXBsaXppZXJ0IHdpcmQsIHZvbSBUeXAgImZsb2F0Ii4KKworU0lFSEUgQVVDSDoKKwkiRGVmZW5kIgpkaWZmIC0tZ2l0IGEvZG9jL2xmdW4vQ2hlY2tTZW5zaXRpdmVBdHRhY2sgYi9kb2MvbGZ1bi9DaGVja1NlbnNpdGl2ZUF0dGFjawpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4zMmFlYzJlCi0tLSAvZGV2L251bGwKKysrIGIvZG9jL2xmdW4vQ2hlY2tTZW5zaXRpdmVBdHRhY2sKQEAgLTAsMCArMSwzMyBAQAorQ2hlY2tTZW5zaXRpdmVBdHRhY2soKQorRlVOS1RJT046CisgICAgIHZvaWQgQ2hlY2tTZW5zaXRpdmVBdHRhY2soaW50IGRhbSwgc3RyaW5nICpkYW1fdHlwZSwgbWl4ZWQgc3BlbGwsCisJCQkgICAgICAgb2JqZWN0IGVuZW15KQorCitERUZJTklFUlQgSU46CisgICAgIC9zdGQvbGl2aW5nL2ludmVudG9yeS5jCisKK0FSR1VNRU5URToKKyAgICAgZGFtCS0gYW4gRGVmZW5kIHVlYmVyZ2ViZW5lciBTY2hhZGVuCisgICAgIGRhbV90eXBlCS0gU2NoYWRlbnN0eXAoZW4pCisgICAgIHNwZWxsCS0gc3BlbGwsIGludCBvZGVyIG1hcHBpbmcKKyAgICAgZW5lbXkJLSBGZWluZGVzb2JqZWt0CisKK0JFU0NIUkVJQlVORzoKKyAgICAgV2lyZCB2b24gRGVmZW5kKCkgYXVmZ2VydWZlbiB1bmQgcHJ1ZWZ0IGRpZSBMaXN0ZW4gaW4KKyAgICAgUF9TRU5TSVRJVkVfQVRUQUNLIGR1cmNoLgorICAgICBXZW5uIGRpZSBTY2hsdWVzc2VsIHVuZCBUaHJlc2hvbGQtV2VydGUgc3RpbW1lbiwgd2lyZAorICAgICB0cmlnZ2VyX3NlbnNpdGl2ZV9hdHRhY2soZW5lbXksa2V5LGRhbSxzcGVsbCxvcHRpb25zKQorICAgICBpbSBPYmpla3QgZ2VydWZlbi4KKworQkVNRVJLVU5HRU46CisgICAgIE9iamVrdGUgbWl0IFBfU0VOU0lUSVZFIG1pdCBTY2hsdWVzc2VsIFNFTlNJVElWRV9BVFRBQ0sgYml0dGUgdm9yc2ljaHRpZworICAgICB2ZXJ3ZW5kZW4sIGRhIHJlY2hlbmludGVuc2l2LgorCitTSUVIRSBBVUNIOgorICAgICBQX1NFTlNJVElWRQorICAgICBJbnNlcnRTZW5zaXRpdmVPYmplY3QsIFJlbW92ZVNlbnNpdGl2ZU9iamVjdAorICAgICBpbnNlcnRfc2Vuc2l0aXZlX2ludl90cmlnZ2VyLCBpbnNlcnRfc2Vuc2l0aXZlX2ludgorICAgICBQX1NFTlNJVElWRV9BVFRBQ0ssIFBfU0VOU0lUSVZFX0lOVkVOVE9SWSwKKyAgICAgUF9TRU5TSVRJVkVfSU5WRU5UT1JZX1RSSUdHRVIKKworMjguSmFuLjIwMDEsIEdsb2luc29uQE1HCmRpZmYgLS1naXQgYS9kb2MvbGZ1bi9DaGVja1NwZWxsRmF0aWd1ZSBiL2RvYy9sZnVuL0NoZWNrU3BlbGxGYXRpZ3VlCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjBkN2NjMmEKLS0tIC9kZXYvbnVsbAorKysgYi9kb2MvbGZ1bi9DaGVja1NwZWxsRmF0aWd1ZQpAQCAtMCwwICsxLDYxIEBACitDaGVja1NwZWxsRmF0aWd1ZQorCitGVU5LVElPTjoKKyAgICBwdWJsaWMgdmFyYXJncyBpbnQgQ2hlY2tTcGVsbEZhdGlndWUoc3RyaW5nIGtleSkKKworREVGSU5JRVJUIElOOgorICAgIC9zdGQvbGl2aW5nL3NraWxscy5jCisgICAgL3N0ZC9wbGF5ZXIvc2tpbGxzLmMKKyAgICAvc3lzL2xpdmluZy9za2lsbHMuaAorCitBUkdVTUVOVEU6CisgICAgc3RyaW5nIGtleSAgOiBFaW5kZXV0aWdlciBOYW1lIGRlcyBTcHJ1Y2hlcywgZWluZXIgR3J1cHBlIHZvbiBTcHJ1ZWNoZW4KKyAgICAgICAgICAgICAgICAgIG9kZXIgMCBmdWVyIGRpZSBnbG9iYWxlIFNwcnVjaGVybXVlZHVuZy4KKworQkVTQ0hSRUlCVU5HOgorICAgIERpZXNlIEZ1bmt0aW9uIGRpZW50IHp1bSBQcnVlZmVuIHZvbiBpbmRpdmlkdWVsbGVuIFNwcnVjaGVybXVlZHVuZ2VuCisgICAgKFNwZWxsZmF0aWd1ZSwgU3BydWNoc3BlcnJlbikuCisgICAgSGllcm1pdCBsYXNzZW4gc2ljaCB1bmFiaGFlbmdpZ2UgRXJtdWVkdW5nZW4vU3BlcnJlbiBmdWVyIGVpbnplbG5lCisgICAgU3BydWVjaGUgb2RlciBHcnVwcGVuIHZvbiBTcHJ1ZWNoZW4gZ2VzdGFsdGVuLgorCisgICAgV2lyZCA8a2V5PiBuaWNodCBhbmdlZ2ViZW4gb2RlciBpc3QgMCwgd2lyZCBkaWUgZ2xvYmFsZSBTcHJ1Y2hzcGVycmUKKyAgICBnZXBydWVmdCAoaWRlbnRpc2NoIHp1IGRlciBQcm9wZXJ0eSBQX05FWFRfU1BFTExfVElNRSksIGFuZGVyZW5mYWxscyAKKyAgICBkaWUgdW50ZXIgPGtleT4gZ2VzcGVpY2hlcnRlIFNwcnVjaGVybXVlZHVuZy4KKyAgICBQcnVlZnQgbWFuIGVpbmVuIEVpbnRyYWcgb2huZSBBbmdhYmUgdm9uIDxrZXk+IGlzdCBkYXMgRXJnZWJuaXMgZGllc2VyCisgICAgRnVua3Rpb24gaWRlbnRpc2NoIHp1ciBBYmZyYWdlIHZvbiBQX05FWFRfU1BFTExfVElNRS4KKworUlVlQ0tHQUJFV0VSVDoKKyAgICAwICAgIFNwcnVjaGVybXVlZHVuZyBleGlzdGllcnQgbmljaHQgb2RlciBpc3QgYWJnZWxhdWZlbi4KKworICAgID4wICAgU3BydWNoZXJtdWVkdW5nIGlzdCBub2NoIG5pY2h0IGFiZ2VsYXVmZW4sIFJ1ZWNrZ2FiZXdlcnQgaXN0IGRpZQorICAgICAgICAgWmVpdCwgYmVpIGRlciBkaWVzZXIgRWludHJhZyBhYmxhZXVmdC4gRGVyIFNwcnVjaCBkYXJmIF9uaWNodF8KKyAgICAgICAgIGF1c2dlZnVlaHJ0IHdlcmRlbi4KKworQkVJU1BJRUxFOgorICAgIEVpbiBTcGVsbCBnZWhvZXJ0IHp1IGVpbmVyIEdydXBwZSB2b24gU3BlbGxzIG1pdCBkZW0gTmFtZW4gJ2V4dHJhc3Vlc3MnLgorICAgIEVyIGRhcmYgbnVyIGF1c2dlZnVlaHJ0IHdlcmRlbiwgd2VubiBzZWl0IDVzIGtlaW4gYW5kZXJlciBTcHJ1Y2ggYXVzIGRlcgorICAgIEdydXBwZSBhdXNnZWZ1ZWhydCB3dXJkZS4KKyAgICBpZiAob2ItPkNoZWNrU3BlbGxGYXRpZ3VlKCJleHRyYXN1ZXNzIikgeworICAgICAgLy8gYWx0ZSBTcGVycmUgbm9jaCBuaWNodCBhYmdlbGF1ZmVuLgorICAgICAgdGVsbF9vYmplY3Qob2IsICJEZWluZSB1bmVuZGxpY2hlIFNjaG9rb3RvcnRlIGlzdCBub2NoIG5pY2h0IHdpZWRlciAiCisgICAgICAgICJuYWNoZ2V3YWNoc2VuLlxuIik7CisgICAgICByZXR1cm4gLi4uIDsKKyAgICB9CisKK0JFTUVSS1VOR0VOOgorICAgIERpZSBnZW5hdWVuIFplaXRkYXVlcm4ga29lbm5lbiB2b24gU3BpZWxlcm4gYmVlaW5mbHVzc3Qgd2VyZGVuLCBzaWUKKyAgICB1bnRlcmxpZWdlbiBkZXIgamV3ZWlsaWdlbiBFaW5zdGVsbHVuZyB2b24gJ3NwcnVjaGVybXVlZHVuZycsIGQuaC4ga29lbm5lbgorICAgIGF1ZiB2b2xsZSAycyBhdWZnZXJ1bmRldCB3ZXJkZW4uCisgICAgQXVjaCB3ZW5uIGRpZXNlIEZ1bmt0aW9uIHp1bSBWZXJ3YWx0ZW4gdm9uIGJlbGllYmlnZW4gWmVpdHNwZXJyZW4gZ2VudXR6dAorICAgIHdlcmRlbiBrb2VubmVuLCBiZXNjaHJhZW5rdCBldWNoIGJpdHRlIGF1ZiBTcHJ1Y2hlcm11ZWR1bmdlbiB1bmQgYmVudXR6dAorICAgIGFuc29uc3RlbiBjaGVja19hbmRfdXBkYXRlX3RpbWVkX2tleSgpLiBGYWxscyBpaHIgZGllc2J6Z2wuIHdlaXRlcmUvYW5kZXJlCisgICAgV3VlbnNjaGUgaGFidCwgc3ByZWNodCBkZW4vZGllIE11ZGxpYi1FTSBhbi4KKworU0lFSEUgQVVDSDoKKyAgICBTZXRTcGVsbEZhdGlndWUoTCksIERlbGV0ZVNwZWxsRmF0aWd1ZShMKQorICAgIFBfTkVYVF9TUEVMTF9USU1FCisgICAgc3BydWNoZXJtdWVkdW5nCisKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKzI3LjAzLjIwMTAsIFplc3N0cmEKKwpkaWZmIC0tZ2l0IGEvZG9jL2xmdW4vQ2xlYXJSaW5nQnVmZmVyIGIvZG9jL2xmdW4vQ2xlYXJSaW5nQnVmZmVyCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjAwOTVkZWMKLS0tIC9kZXYvbnVsbAorKysgYi9kb2MvbGZ1bi9DbGVhclJpbmdCdWZmZXIKQEAgLTAsMCArMSwzNCBAQAorQ2xlYXJSaW5nQnVmZmVyKCkKKworRlVOS1RJT046CisgICAgcHJvdGVjdGVkIHN0cnVjdCBzdGRfcmluZ2J1ZmZlciBDbGVhclJpbmdCdWZmZXIoc3RydWN0IHN0ZF9yaW5nYnVmZmVyIGIpOworCitERUZJTklFUlQgSU46CisgICAgL3N0ZC91dGlsL3JpbmdidWZmZXIuYworICAgIC9zeXMvdXRpbC9yaW5nYnVmZmVyLmgKKworQVJHVU1FTlRFOgorICAgIGIgLSBkZXIgenUgbG9lc2NoZW5kZSBSaW5ncHVmZmVyCisKK0JFU0NIUkVJQlVORzoKKyAgICBEaWVzZSBGdW5rdGlvbiBsb2VzY2h0IGFsbGUgRGF0ZW4gYXVzIGRlbSBQdWZmZXIgPGI+IHVuZCByZS1pbml0aWFsaXNpZXJ0CisgICAgaWhuLgorICAgIAorUlVlQ0tHQUJFV0VSVDoKKyAgICBEZXIgZ2Vsb2VzY2h0ZSBQdWZmZXIgPGI+IHdpcmQgd2llZGVyIHp1cnVlY2tnZWdlYmVuLgorCitCRUlTUElFTEU6CisgICAgLy8gUmluZ3B1ZmZlciBhbmxlZ2VuOgorICAgIHN0cnVjdCBzdGRfcmluZ2J1ZmZlciBidWZmZXI9Q3JlYXRlUmluZ0J1ZmZlcigxMCwgTU9ERV9GSUZPKTsKKyAgICAvLyBtaXQgaXJnZW5kd2VsY2hlbiBEYXRlbiBmdWVsbGVuLi4uCisgICAgLy8gLi4uCisgICAgLy8gUHVmZmVyIGxvZXNjaGVuCisgICAgYnVmZmVyID0gQ2xlYXJSaW5nQnVmZmVyKGJ1ZmZlcik7CisgICAgLy8gb2RlcjoKKyAgICBDbGVhclJpbmdCdWZmZXIoYnVmZmVyKTsKKworU0lFSEUgQVVDSDoKKyAgICBDcmVhdGVSaW5nQnVmZmVyKCksIFJpbmdCdWZmZXJHZXQoKSwgUmVzaXplUmluZ0J1ZmZlcigpCisKKzIzLjA1LjIwMDgsIFplc3N0cmEKKwpkaWZmIC0tZ2l0IGEvZG9jL2xmdW4vQ29uZmlndXJlIGIvZG9jL2xmdW4vQ29uZmlndXJlCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjk3NjM5OTkKLS0tIC9kZXYvbnVsbAorKysgYi9kb2MvbGZ1bi9Db25maWd1cmUKQEAgLTAsMCArMSw3NiBAQAorQ29uZmlndXJlKCkKKworICBwdWJsaWMgbWl4ZWQgQ29uZmlndXJlKG1peGVkIGRhdGEpCisKK0RFRklOSUVSVCBJTjoKKyAgIEJlbGllYmlnZW4gT2JqZWt0ZW4KKworQVJHVU1FTlRFOgorICAgPGRhdGE+CisgICAgIDAgZnVlciBEYXRlbmFiZnJhZ2UKKyAgICAgYmVsaWViaWdlIERhdGVuLCBkaWUgZWluIENvbmZpZ3VyZSgwKSB2b3JoZXIgbGllZmVydGUKKworQkVTQ0hSRUlCVU5HOgorICAgVmllbGUgT2JqZWt0ZSB3ZXJkZW4gZnVlciBiZXN0aW1tdGUgU3BpZWxlciBrb25maWd1cmllcnQgdW5kIHNvCisgICBwZXJzb25hbGlzaWVydC4gU2llIGVudGhhbHRlbiB6dXNhZXR6bGljaCB6dSBkZW4gRGF0ZW4sIHdlbGNoZSB3YWVocmVuZCBkZXMKKyAgIGNyZWF0ZSgpIGdlc2V0enQgd3VyZGVuLCBub2NoIHdlaXRlcmUgc3BpZWxlci1pbmRpdmlkdWVsbGUgRGF0ZW4uCisgICBEYW1pdCBkaWVzZSBPYmpla3RlIGltIEJlZGFyZnNmYWxsIG5ldSBlcnN0ZWxsdCB3ZXJkZW4ga29lbm5lbiwgc29sbHRlIGVpbgorICAgZ2VlaWduZXRlcyBDb25maWd1cmUoKSBkZWZpbmZpZXJ0IHdlcmRlbiwgdW0gZGllc2UgRGF0ZW4gYWJ6dXJ1ZmVuIHVuZCBpbgorICAgZWluZW0gbmV1ZW4gQ2xvbmUgKG9kZXIgbmV1Z2VsYWRlbmVyIEJsdWVwcmludCkgd2llZGVyIHp1IHNldHplbi4KKyAgIAorICAgRXhpc3RpZXJ0IENvbmZpZ3VyZSgpIGltIE9iamVrdCwgTVVTUyBkaWVzZXMgYmVpIGVpbmVtIEF1ZnJ1ZiBtaXQKKyAgIDxkYXRhPj09MCAoZC5oLiBDb25maWd1cmUoMCkpIGFsbGUgaW5kaXZpZHVlbGxlbiBEYXRlbiB6dXJ1ZWNrbGllZmVybiwKKyAgIGRpZSBub2V0aWcgc2luZCwgdW0gZGVuIGFrdHVlbGxlbiBadXN0YW5kIGRlcyBPYmpla3RlcyBzcGFldGVyCisgICB3aWVkZXJoZXJ6dXN0ZWxsZW4uCisgICBEYXMgT2JqZWt0IGRhcmYgbmFjaCBkZW0gWnVydWVja2dlYmVuIGRpZXNlciBEYXRlbiBkaWVzZSBOSUNIVCBtZWhyCisgICB2ZXJhZW5kZXJuLCBkLmguIGVzIG11c3MgZ2dmLiBlaW5lIEtvcGllIGVyc3RlbGx0IHdlcmRlbiAoY29weSwgZGVlcF9jb3B5KQorCisgICBHZW5hdSBkaWVzZSBEYXRlbiB3ZXJkZW4gaW4gZWluZW0gbmV1IGdlY2xvbnRlbiBPYmpla3QgZHVyY2ggZGVuIEF1ZnJ1ZgorICAgdm9uIENvbmZpZ3VyZShkYXRhKSB3aWVkZXIgZ2VzZXR6dC4gRGFzIENvbmZpZ3VyZSBNVVNTIGdlbmF1IGRpZSBEYXRlbiwgZGllCisgICBlcyBpbSBhbHRlbiBPYmpla3QgenVydWVja2xpZWZlcnQsIHdpZWRlciBha3plcHRpZXJlbi4KKworUlVlQ0tHQUJFV0VSVDoKKyAgIFdlbm4gPGRhdGE+PT0wOgorICAgICBBbGxlIGluZGl2aWR1ZWxsZW4gRGF0ZW4gaW4gZWluZXIgYmVsaWViaWdlbiBGb3JtLiBFaW4gTWFwcGluZyBiaWV0ZXQKKyAgICAgc2ljaCBqZWRvY2ggYW4uCisgICAgIE5pY2h0IGVybGF1YnQgc2luZDogT2JqZWt0ZSB1bmQgQ2xvc3VyZXMuCisKKyAgIFdlbm4gPGRhdGE+IT0wOgorICAgICAxLCB3ZW5uIGRpZSBEYXRlbiB6dXIgS29uZmlndXJhdGlvbiBha3plcHRpZXJ0IHd1cmRlbi4KKyAgICAgMCwgc29uc3QuCisKK0JFTUVSS1VOR0VOOgorICAgQ29uZmlndXJlKCkgaXN0IG5pY2h0IHZlcnBmbGljaHRldCwgZXJuZXV0IERhdGVuIHp1IGFremVwdGllcmVuLCB3ZW5uIGVzCisgICBiZXJlaXRzIGVpbm1hbCBtaXQgZ3VlbHRpZ2VuIERhdGVuIGF1ZmdlcnVmZW4gd3VyZGUuCisgICBEYXMgWnVydWVja3NjaHJlaWJlbiBkZXIgRGF0ZW4ga2FubiBhdWNoIG5hY2ggQWJsYXVmIGxhZW5nZXJlciBaZWl0CisgICB1bmQvb2RlciBpbiBlaW5lciBhbmRlcmVuIFVwdGltZSBlcmZvbGdlbi4KKworQkVJU1BJRUxFOgorICAgRWluIE9iamVrdCwgd2VsY2hlcyBlaW4gYW5kZXJlcyBPYmpla3Qgc2ljaGVyIGVyc2V0enQsIGQuaC4gZGllCisgICBpbmRpdmlkdWVsbGUgS29uZmlndXJhdGlvbiBibGVpYnQgZXJoYWx0ZW46CisgICBtaXhlZCBkYXRhOworICAgaWYgKGNhbGxfcmVzb2x2ZWQoZGF0YSxvYiwiQ29uZmlndXJlIiwwKSA9PSAxKSB7CisgICAgIHN0cmluZyBvYm5hbWUgPSBsb2FkX25hbWUob2IpOworICAgICBvYi0+cmVtb3ZlKCk7CisgICAgIG9iID0gY2xvbmVfb2JqZWN0KG9ibmFtZSk7CisgICAgIGlmIChkYXRhKSB7CisgICAgICAgaWYgKG9iLT5Db25maWd1cmUoZGF0YSkgPT0gMSkgeworICAgICAgICAgcHJpbnRmKCJJbnN0YW56IHZvbiAlcyBlcmZvbGdyZWljaCBlcnNldHp0LCBuZXVlcyBPYmpla3Q6ICVPXG4iLAorICAgICAgICAgICAgIG9ibmFtZSxvYik7CisgICAgICAgfQorICAgICAgIGVsc2UgeworICAgICAgICAgcmFpc2VfZXJyb3Ioc3ByaW50ZigiQ29uZmlndXJlKCkgaW4gJU8gYWt6ZXB0aWVydGUgRGF0ZW4gbmljaHQhXG4iLAorICAgICAgICAgICAgIG9iKSk7CisgICAgICAgfQorICAgICB9CisgICB9CisgICBlbHNlIHsKKyAgICAgcHJpbnRmKGJyZWFrX3N0cmluZygKKyAgICAgICAgICJEYXMgT2JqZWt0ICVPIGRlZmluaWVydCBrZWluZSBGdW5rdGlvbiBDb25maWd1cmUoKS4gRXMga2FubiAiCisgICAgICAgICAibmljaHQgc2ljaGVyIGVyc2V0enQgd2VyZGVuLCBkYSB1bmJla2FubnQgaXN0LCBvYiBlcyBpbmRpdmlkdWVsbGUgIgorICAgICAgICAgIkRhdGVuIGVudGhhZWx0LiIsNzgpKTsKKyAgIH0KKworTEVUWlRFIEFlTkRFUlVORzoKKzI2LjA5LjIwMTEsIFplc3N0cmEKKwpkaWZmIC0tZ2l0IGEvZG9jL2xmdW4vQ29udk1hdGVyaWFsTGlzdCBiL2RvYy9sZnVuL0NvbnZNYXRlcmlhbExpc3QKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYWI0NjE4YQotLS0gL2Rldi9udWxsCisrKyBiL2RvYy9sZnVuL0NvbnZNYXRlcmlhbExpc3QKQEAgLTAsMCArMSw0MSBAQAorQ29udk1hdGVyaWFsTGlzdCgpCitGVU5LVElPTjoKKyAgICAgdmFyYXJncyBzdHJpbmcgQ29udk1hdGVyaWFsTGlzdChtaXhlZCBtYXRzLCBpbnQgY2FzdXMsIG1peGVkIGlkaW5mKQorCitERUZJTklFUlQgSU46CisgICAgIC9wL2RhZW1vbi9tYXRlcmlhbGRiLmMgKE1BVEVSSUFMREIpCisKK0FSR1VNRU5URToKKyAgICAgbWl4ZWQgbWF0czogIC0gZGFzIHp1IGVya2VubmVuZGUgTWF0ZXJpYWw6CisgICAgICAgICAgICAgICAgICAgIC0gZWluIE1hcHBpbmcsIGVpbiBTdHJpbmcgb2RlciBlaW4gU3RyaW5nYXJyYXkKKyAgICAgICAgICAgICAgICAgICAgICAoW01BVF9BOnksTUFUX0I6eCwuLl0pIG9kZXIgTUFUX0Egb2RlciAoe01BVF9BLE1BVF9CLC4ufSkKKyAgICAgaW50IGNhc3VzOiAgIC0gZGVyIEZhbGw6IDAuLjMgLT4gPGxhbmd1YWdlLmg+OiBXQVMsIFdFU1NFTiwgV0VNLCBXRU4KKyAgICAgbWl4ZWQgaWRpbmYgIC0gRGluZ2UsIHdlbGNoZSBkaWUgRmFlaGlna2VpdGVuIGRlcyBFcmtlbm5lbnMgYmVlaW5mbHVzc2VuCisJCSAgICAoc2llaGUgIm1hbiBNYXRlcmlhbExpc3QiKQorCitCRVNDSFJFSUJVTkc6CisgICAgIE1hbiB1ZWJlcmdpYnQgQ29udk1hdGVyaWFsTGlzdCgpIGVpbmUgTGlzdGUgdm9uIE1hdGVyaWFsaWVuLCBkaWUgZGllCisgICAgIEZ1bmt0aW9uIHVudGVyIFZlcndlbmR1bmcgdm9uIE1hdGVyaWFsTmFtZSgpIGluIGlocmUgQmVzdGFuZHRlaWxlCisgICAgIGF1ZnNwbGl0dGV0IHVuZCBtaXQgInVuZCIgdW5kICIsIiB2ZXJrbnVlcGZ0IHp1cnVlY2tnaWJ0LgorCitSVUVDS0dBQkVXRVJUOgorICAgICBzdHJpbmcgLSBNYXRlcmlhbGllbiwgZHVyY2ggS29tbWEgdW5kICJ1bmQiIGdldHJlbm50IG9kZXIKKyAgICAgICAgICAgICAgInVuYmVrYW5udGVzIE1hdGVyaWFsIgorCitCRU1FUktVTkdFTjoKKyAgICAgV2lyZCB2b24gL3N0ZC90aGluZy9kZXNjcmlwdGlvbjo6TWF0ZXJpYWxMaXN0KCkgZ2VydWZlbi4KKyAgICAgQml0dGUgYW4gT2JqZWt0ZW4gYXVjaCBNYXRlcmlhbExpc3QoKSB2ZXJ3ZW5kZW4uCisgICAgIFJ1ZnQgZGlyZWt0IE1hdGVyaWFsTmFtZSgpIGF1Zi4KKworU0lFSEUgQVVDSDoKKyAgICAgS29uemVwdGU6CSAgbWF0ZXJpYWwsIG1hdGVyaWFsZXJrZW5udW5nCisgICAgIEdydW5kbGVnZW5kOiBQX01BVEVSSUFMLCAvc3lzL3RoaW5nL21hdGVyaWFsLmgKKyAgICAgTWV0aG9kZW46ICAgIFF1ZXJ5TWF0ZXJpYWwoKSwgUXVlcnlNYXRlcmlhbEdyb3VwKCksIE1hdGVyaWFsTGlzdCgpLAorICAgICBMaXN0ZW46CSAgQWxsTWF0ZXJpYWxzKCksIEFsbEdyb3VwcygpLCBEdW1wKCkKKwkJICBtYXRlcmlhbGxpc3RlLCBtYXRlcmlhbGdydXBwZW4KKyAgICAgTWFzdGVyOgkgIEFkZE1hdGVyaWFsKCksIE1hdGVyaWFsR3JvdXAoKSwKKwkJICBHcm91cE5hbWUoKSwgTWF0ZXJpYWxOYW1lKCksCisJCSAgR2V0R3JvdXBNZW1iZXJzKCksIEdldE1hdE1lbWJlcnNoaXAoKQorICAgICBTb25zdGlnZXM6CSAgUF9NQVRFUklBTF9LTk9XTEVER0UKKworNy4gTWFpIDIwMDQgR2xvaW5zb24KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9kb2MvbGZ1bi9DcmVhdGVSaW5nQnVmZmVyIGIvZG9jL2xmdW4vQ3JlYXRlUmluZ0J1ZmZlcgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4wNDcxYWY2Ci0tLSAvZGV2L251bGwKKysrIGIvZG9jL2xmdW4vQ3JlYXRlUmluZ0J1ZmZlcgpAQCAtMCwwICsxLDQ1IEBACitDcmVhdGVSaW5nQnVmZmVyKCkKKworRlVOS1RJT046CisgICAgcHJvdGVjdGVkIHN0cnVjdCBzdGRfcmluZ2J1ZmZlciBDcmVhdGVSaW5nQnVmZmVyKGludCBzaXplLCBpbnQgbmV3bW9kZSk7CisKK0RFRklOSUVSVCBJTjoKKyAgICAvc3RkL3V0aWwvcmluZ2J1ZmZlci5jCisgICAgL3N5cy91dGlsL3JpbmdidWZmZXIuaAorCitBUkdVTUVOVEU6CisgICAgc2l6ZSAgICAtIEdyb2Vzc2UgZGVzIG5ldWVuIFJpbmdwdWZmZXJzIChpbnQpCisgICAgbmV3bW9kZSAtIEF1c2dhYmVtb2R1cyBiZWltIEFicnVmZW4gZGVzIFB1ZmZlcnMgKGludCk6CisgICAgICAgICAgICAgIE1PREVfRklGTzogRmlyc3QtaW4tRmlyc3QtT3V0CisgICAgICAgICAgICAgIE1PREVfTElGTzogTGFzdC1pbi1GaXJzdC1PdXQKKworQkVTQ0hSRUlCVU5HOgorICAgIERpZXNlIEZ1bmt0aW9uIGVyc3RlbGx0IGVpbmVuIG5ldWVuLCBsZWVyZW4gUmluZ3B1ZmZlciBkZXIgR3JvZXNzZSA8c2l6ZT4KKyAgICB1bmQgbGllZmVydCBpaG4genVydWVjay4gRGllIERhdGVuIGRlcyBQdWZmZXJzIHdlcmRlbiBzcGFldGVyIGdlbWFlc3MKKyAgICA8bmV3bW9kZT4gc28gZ2VzcGVpY2hlcnQsIGRhc3MgYmVpIGRlciBBdXNnYWJlIGRlcyBQdWZmZXJzIG1pdHRlbHMKKyAgICBSaW5nQnVmZmVyR2V0KCkgZGllIGVudHdlZGVyIGRpZSBuZXVlc3RlbiBEYXRlbiB6dWVyc3QgKE1PREVfTElGTykgb2RlcgorICAgIGRpZSBhZWx0ZXN0ZW4gRGF0ZW4genVlcnN0IChNT0RFX0ZJRk8pIGdlbGllZmVydCB3ZXJkZW4uCisKK1JVZUNLR0FCRVdFUlQ6CisgICAgRGVyIG5ldWUgUmluZ3B1ZmZlci4gRGllc2VyIHdpcmQgaW4gZWluZXIgU3RydWN0IHN0ZF9yaW5nYnVmZmVyCisgICAgZ2VzcGVpY2hlcnQuIEVyIGlzdCBpbiBlaW5lciBWYXJpYWJsZSAnbWl4ZWQnIG9kZXIgaW4gZWluZXIgbWl0dGVscworICAgICdzdHJ1Y3Qgc3RkX3JpbmdidWZmZXInIGFuZ2VsZWd0ZW4gVmFyaWFibGUgc3BlaWNoZXJiYXIuCisKK0JFTUVSS1VOR0VOOgorICAgIERlciBnZWxpZWZlcnRlIFJpbmdwdWZmZXIgc29sbHRlIG5pY2h0IHBlciBIYW5kIHZlcmFyYmVpdGV0IG9kZXIKKyAgICBnZW5hZW5kZXJ0IHdlcmRlbiwgc29uZGVybiBudXIgdWViZXIgZGllIFZlcndhbHR1bmdzZnVua3Rpb25lbiBhdXMKKyAgICAvc3RkL3V0aWwvcmluZ2J1ZmZlci5jLgorCitCRUlTUElFTEU6CisgICAgLy8gVmFyaWFibGUgYW5sZWdlbjoKKyAgICBzdHJ1Y3Qgc3RkX3JpbmdidWZmZXIgYnVmZmVyOworICAgIC8vIF9vZGVyXzogbWl4ZWQgYnVmZmVyOworICAgIC8vIG5ldWVuIFB1ZmZlciBtaXQgbWF4LiA1MCBFbGVtZW50ZW4gYW5sZWdlbiwgZGVyIGJlaSBkZXIgQWJmcmFnZSBkaWUKKyAgICAvLyBhZWx0ZXN0ZW4gRGF0ZW4genVlcnN0IHp1cnVlY2tsaWVmZXJ0OgorICAgIGJ1ZmZlciA9IENyZWF0ZVJpbmdCdWZmZXIoNTAsIE1PREVfRklGTyk7CisKK1NJRUhFIEFVQ0g6CisgICAgUmluZ0J1ZmZlclB1dCgpLCBSaW5nQnVmZmVyR2V0KCksIFJlc2l6ZVJpbmdCdWZmZXIoKQorCisyMy4wNS4yMDA4LCBaZXNzdHJhCisKZGlmZiAtLWdpdCBhL2RvYy9sZnVuL0N1c3RvbWl6ZU9iamVjdCBiL2RvYy9sZnVuL0N1c3RvbWl6ZU9iamVjdApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi40YjM1MDkyCi0tLSAvZGV2L251bGwKKysrIGIvZG9jL2xmdW4vQ3VzdG9taXplT2JqZWN0CkBAIC0wLDAgKzEsNTIgQEAKK0N1c3RvbWl6ZU9iamVjdCgpCisKK0ZVTktUSU9OOgorICAgc3RyaW5nIEN1c3RvbWl6ZU9iamVjdCgpOworCitERUZJTklFUlQgSU46CisgICAvc3RkL3ZpcnR1YWwvdl9jb21waWxlci5jCisKK0FSR1VNRU5URToKKyAgIGtlaW5lCisKK1JVZUNLR0FCRVdFUlQ6CisgICBEZW4gT2JqZWt0bmFtZW4sIGRlbiBkYXMgenVsZXR6dCBlcnpldWd0ZSBPYmpla3QgKHdlbGNoZXMgZ2VyYWRlIGRpZQorICAgRnVua3Rpb24gYXVmcnVmdCkgc3BhZXRlciB2b20gRHJpdmVyIGJla29tbWVuIHdpcmQuCisKK0JFU0NIUkVJQlVORzoKKyAgIERpZXNlIEZ1bmt0aW9uIGlzdCBhdXMgZGVtIEdydW5kZSBkYSwgZGEgenVtIFplaXRwdW5rdCBkZXMgQ2xvbmVucyBkZXMKKyAgIFZDLU9iamVrdGVzIChQX1NURF9PQkpFQ1QpIGRpZXNlcyBPYmpla3QgamEgbm9jaCBuaWNodCB3ZWlzcyBXZXIKKyAgIG9kZXIgV2FzIGVzIHNwYWV0ZXIgbWFsIHNlaW4gd2lyZC4KKyAgIERlc2hhbGIga2FubiBkaWVzZXMgVkMtT2JqZWt0IGltIGNyZWF0ZSgpICh1bmQgbnVyIGRhISkgZGllIEZ1bmt0aW9uCisgICBDdXN0b21pemVPYmplY3QoKSBpbiBkZW0gdmlydHVhbF9jb21waWxlciBhdWZydWZlbiwgd2VsY2hlcyBkYXMgT2JqZWt0CisgICBnZWNsb250IGhhdCB1bmQgYmVrb21tdCB2b24gZGllc2VtIGRlbiBPYmpla3RuYW1lbiB6dXJlY2ssIHdlbGNoZXMgZXMKKyAgIHNwYWV0ZXIgbWFsIGJla29tbWVuIHdpcmQuCisgICBEYSBkYXMgVkMtT2JqZWt0IHZvbSBWQyBnZWNsb250IHd1cmRlLCBpc3QgcHJldmlvdXNfb2JqZWN0KCkgaW0gY3JlYXRlKCkKKyAgIGRlcyBWQy1PYmpla3RlcyBkZXIgVkMsIGluIGRlbSBtYW4gQ3VzdG9taXplT2JqZWN0KCkgcnVmdC4KKworQkVNRVJLVU5HRU46CisgICBEYXMgQ3VzdG9taXplT2JqZWN0KCkgaW0gU3RhbmRhcmQtVkMgZ2lidCBudXIgZGVuIHp1a3VlbmZ0aWdlbiBPYmpla3RuYW1lbgorICAgenVydWVjayB1bmQgbWFjaHQgc29uc3Qgbml4LgorCitCRUlTUElFTEU6CisgICBjcmVhdGUoKSBlaW5lcyBWQy1PYmpla3RlczoKKyAgIAorICAgcHJvdGVjdGVkIHZvaWQgY3JlYXRlKCkgeworICAgICAuLi4KKyAgICAgCisgICAgIC8vIHdlciBiaW4gaWNoIGRlbm4gZWlnZW50bGljaD8KKyAgICAgc3RyaW5nIG15bmFtZSA9IHByZXZpb3VzX29iamVjdCgpLT5DdXN0b21pemVPYmplY3QoKTsKKyAgICAgc3dpdGNoKG15bmFtZSkgeworICAgICAgIC8vIEtyYW0ga29uZmlndXJpZXIsIGphIG5hY2ggbXluYW1lLi4uIAorICAgICB9CisgICAgIAorICAgICAuLi4KKyAgIH0KKworU0lFSEUgQVVDSDoKKyAgICAgdmlydHVhbF9jb21waWxlcgorICAgICBDdXN0b21pemVPYmplY3QoKSwgVmFsaWRhdGUoKSwgTm9QYXJhT2JqZWN0cygpLCAKKyAgICAgUF9DT01QSUxFUl9QQVRILCBQX1BBUkEKKyAgICAgL3N0ZC92aXJ0dWFsL3ZfY29tcGlsZXIuYworLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorMjEuMTAuMjAwNywgWmVzc3RyYQpkaWZmIC0tZ2l0IGEvZG9jL2xmdW4vRGFtYWdlIGIvZG9jL2xmdW4vRGFtYWdlCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjMyNTg1MzEKLS0tIC9kZXYvbnVsbAorKysgYi9kb2MvbGZ1bi9EYW1hZ2UKQEAgLTAsMCArMSwzNCBAQAorRGFtYWdlKCkKKworRlVOS1RJT046CisgICAgIGludCBEYW1hZ2UoaW50IGRhbSk7CisKK0RFRklOSUVSVCBJTjoKKyAgICAgL3N0ZC9hcm1vdXIvY29tYmF0LmMgdW5kCisgICAgIC9zdGQvd2VhcG9uL2NvbWJhdC5jCisKK0FSR1VNRU5URToKKyAgICAgZGFtICBEZXIgV2VydCwgbWl0IGRlbSBkaWUgV2FmZmUvUnVlc3R1bmcgYmVzY2hhZWRpZyB3ZXJkZW4gc29sbC4KKworQkVTQ0hSRUlCVU5HOgorICAgICBQX1dDIGJ6dy4gUF9BQyB3aXJkIHVtIGRhbSByZWR1emllcnQgdW5kIFBfREFNQUdFRCB3aXJkIHVtCisgICAgIGRhbSBlcmhvZWh0LgorICAgICBCZWkgZGFtPjAgd2lyZCBkYXMgT2JqZWt0IGJlc2NoYWVkaWd0LCBiZWkgZGFtPDAgcmVwYXJpZXJ0LgorICAgICBEYWJlaSB3ZXJkZW4gc293b2hsIGRpZSBPYmVyZ3JlbnplbiAocy4gL3N5cy9jb21iYXQuaCkgd2llIGF1Y2gKKyAgICAgZGllIFVudGVyZ3JlbnplbiAoV2FmZmVuOjMwLCBSdWVzdHVuZ2VuOiAwKSBmdWVyIFBfV0MgdW5kIFBfQUMKKyAgICAgYmVhY2h0ZXQuIEVzIGthbm4gYXVjaCBuaWNodCBtZWhyIHJlcGFyaWVydCB3ZXJkZW4sIGFscyB2b3JoZXIKKyAgICAgYmVzY2hhZWRpZ3Qgd3VyZGUuCisKK1JVZUNLR0FCRVdFUlQ6CisgICAgIERlciBXZXJ0IGRlciBCZXNjaGFlZGlndW5nLCBkaWUgdGF0c2FlY2hsaWNoIHZvcmdlbm9tbWVuIHd1cmRlLgorCitCRU1FUktVTkdFTjoKKyAgICAgSXN0IGRhcyBPYmpla3QgaW4gQmVudXR6dW5nLCBzZXR6dCBkaWUgRnVua3Rpb24gRGFtYWdlIGF1dG9tYXRpc2NoCisgICAgIGRpZSBQcm9wZXJ0aWVzIFBfVE9UQUxfV0MgYnp3LiBQX1RPVEFMX0FDIGluIGRlbSBiZW51dHplbmRlbiBTcGllbGVyCisgICAgIGF1ZiBkaWUgcmljaHRpZ2VuIFdlcnRlLgorCitTSUVIRSBBVUNIOgorICAgICAvc3RkL2FybW91ci9jb21iYXQuYywgL3N0ZC93ZWFwb24vY29tYmF0LmMKKworLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorTGFzdCBtb2RpZmllZDogVGh1IE1heSAyMiAxMDoxMzoyMyAxOTk3IGJ5IFBhcmFjZWxzdXMKZGlmZiAtLWdpdCBhL2RvYy9sZnVuL0RlQXNzb2NNZW1iZXIgYi9kb2MvbGZ1bi9EZUFzc29jTWVtYmVyCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjVmMzUzMjYKLS0tIC9kZXYvbnVsbAorKysgYi9kb2MvbGZ1bi9EZUFzc29jTWVtYmVyCkBAIC0wLDAgKzEsNDggQEAKKworRGVBc3NvY01lbWJlcigpCisKKworRlVOS1RJT046CisgICAgICAgIGludCBEZUFzc29jTWVtYmVyKG9iamVjdCBucGMpCisKK0RFRklOSUVSVCBJTjoKKyAgICAgICAgL3N0ZC9saXZpbmcvdGVhbS5jCisKK0FSR1VNRU5URToKKyAgICAgICAgRGVyIE5QQywgZGVyIG5pY2h0IG1laHIgenVnZW9yZG5ldCBzZWluIHNvbGwuCisKK0JFU0NIUkVJQlVORzoKKyAgICAgICAgSGVidCBkaWUgWnVvcmRudW5nIGVpbmVzIE5QQ3MgenUgZWluZW0gU3BpZWxlciBhdWYuCisKK1JVRUNLR0FCRVdFUlQ6CisgICAgICAgIDEsIGZhbGxzIEF1ZmhlYnVuZyBlcmZvbGdyZWljaCwgc29uc3QgMC4KKworQkVJU1BJRUw6CisgICAgICAgIHZvaWQgZnVuKG9iamVjdCBwbCkKKyAgICAgICAgeworICAgICAgICAgaWYgKCBwbCAmJiBwbC0+RGVBc3NvY01lbWJlcih0aGlzX29iamVjdCgpKSApCisgICAgICAgICAgdGVsbF9vYmplY3QocGwsYnJlYWtfc3RyaW5nKAorICAgICAgICAgICAgICAiSWNoIGthZW1wZmUgbnVuIG5pY2h0IG1laHIgYXVmIERlaW5lciBTZWl0ZSFcbiIsNzgsCisgICAgICAgICAgICAgICJFaW4gRmV1ZXJ0ZXVmZWwgdGVpbHQgRGlyIG1pdDoiKTsKKyAgICAgICAgIC4uLgorICAgICAgICB9CisKK0JFTUVSS1VOR0VOOgorICAgICAgICBLYW5uIG51ciB2b24gR2lsZGVuLCBTcGVsbGJvb2tzLCB2b20gT2JqZWt0IHNlbGJlciB1bmQgdm9tCisgICAgICAgIHp1Z2VvcmRuZXRlbiBOUEMgYXVmZ2VydWZlbiB3ZXJkZW4uCisKK1NJRUhFIEFVQ0g6CisgICAgICAgIFVlYmVyc2ljaHQ6IHRlYW1rYW1wZgorICAgICAgICBQcm9wZXJ0aWVzOiBQX1RFQU0sIFBfQVNTT0NfTUVNQkVSUywgUF9URUFNX0FUVEFDS19DTUQsCisgICAgICAgICAgICAgICAgICAgIFBfVEVBTV9BVVRPRk9MTE9XLCBQX1RFQU1fQ09MT1JTLCBQX1RFQU1fTEVBREVSLAorICAgICAgICAgICAgICAgICAgICBQX1RFQU1fTkVXTUVNQkVSLCBQX1RFQU1fV0FOVEVEX1JPVywgUF9URUFNX1dJTVBZX1JPVworICAgICAgICBCZXdlZ3VuZzogICBJc1RlYW1Nb3ZlLCBUZWFtRmxlZQorICAgICAgICBNaXRnbGllZGVyOiBJc1RlYW1MZWFkZXIsIFRlYW1NZW1iZXJzCisgICAgICAgIEthbXBmOiAgICAgIEFzc29jTWVtYmVyLCBJbnNlcnRFbmVteVRlYW0sIFNlbGVjdE5lYXJFbmVteSwKKyAgICAgICAgICAgICAgICAgICAgU2VsZWN0RmFyRW5lbXkKKyAgICAgICAgUG9zaXRpb25lbjogUHJlc2VudFBvc2l0aW9uLCBQcmVzZW50Um93cywgUHJlc2VudEVuZW15Um93cywKKyAgICAgICAgICAgICAgICAgICAgUHJlc2VudFRlYW1Qb3NpdGlvbiwgU3dhcFJvd3MKKyAgICAgICAgU29uc3RpZ2VzOiAgVGVhbVByZWZpeCwgdGVhbWthbXBmX2ludGVybgorCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCitMYXN0IG1vZGlmaWVkOiAxNi0wOC0yMDEwLCBHYWJ5bG9uCmRpZmYgLS1naXQgYS9kb2MvbGZ1bi9EZWNsQWRqIGIvZG9jL2xmdW4vRGVjbEFkagpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5mNmU0MjQ0Ci0tLSAvZGV2L251bGwKKysrIGIvZG9jL2xmdW4vRGVjbEFkagpAQCAtMCwwICsxLDQ2IEBACitEZWNsQWRqKCkKKworRlVOS1RJT046CisgICAgIHZhcmFyZ3Mgc3RyaW5nIERlY2xBZGooIHN0cmluZyBhZGosIGludCBjYXN1cywgaW50IGRlbW9uKTsKKworREVGSU5JRVJUIElOOgorICAgICAvc3RkL3RoaW5nL2xhbmd1YWdlLmMKKworQVJHVU1FTlRFOgorICAgICBhZGoKKyAgICAgICAgICBEYXMgenUgZGVrbGluaWVyZW5kZSBBZGpla3Rpdi4KKworICAgICBjYXN1cworICAgICAgICAgIERlciBGYWxsLCBpbiBkZW4gZXMgZGVrbGluaWVydCB3ZXJkZW4gc29sbC4KKworICAgICBkZW1vbgorICAgICAgICAgIEJlemllaHQgc2ljaCBkYXMgQWRqZWt0aXYgYXVmIGVpbmVuIGJlc3RpbW10ZW4gb2RlciBlaW5lbgorICAgICAgICAgIHVuYmVzdGltbXRlbiBHZWdlbnN0YW5kPworCitCRVNDSFJFSUJVTkc6CisgICAgIERla2xpbmllcnQgZGFzIHVlYmVyZ2ViZW5lIEFkamVrdGl2IGluIGRlbiBhbmdlZ2ViZW5lbiBGYWxsLiBJc3QgZGVtb24KKyAgICAgdW5nbGVpY2ggTnVsbCwgc28gd2lyZCBkYXMgQWRqZWt0aXYgc28gYmVoYW5kZWx0LCBhbHMgd3VlcmRlIGVzIHNpY2gKKyAgICAgYXVmIGVpbmVuIGJlc3RpbW10ZW4gR2VnZW5zdGFuZCBiZXppZWhlbiwgYW5zb25zdGVuIGJlemllaHQgZXMgc2ljaCBhdWYKKyAgICAgZWluZW4gdW5iZXN0aW1tdGVuIEdlZ2Vuc3RhbmQuCisKK1JVZUNLR0FCRVdFUlQ6CisgICAgIERhcyBkZWtsaW5pZXJ0ZSBBZGpla3Rpdi4gRXMgd2lyZCB6dXNhZXR6bGljaCBub2NoIGVpbiBMZWVyemVpY2hlbgorICAgICBoaW50ZW4gYW5nZWZ1ZWd0IQorCitCRUlTUElFTEU6CisgICAgIFp1bmFlY2hzdCBlaW4gYmVzdGltbXRlcyBBZGpla3RpdjoKKworICAgICBwcmludGYoIkRlciAlc0JhbGwuXG4iLCBiYWxsLT5EZWNsQWRqKCJncnVlbiIsIFdFUiwgMSk7CisKKyAgICAgTnVuIGVpbiB1bmJlc3RpbW10ZXMgQWRqZWt0aXY6CisKKyAgICAgcHJpbnRmKCJFaW4gJXNCYWxsLlxuIiwgYmFsbC0+RGVjbEFkaigiZ3J1ZW4iLCBXRVIsIDApOworCisgICAgIERhIERlY2xBZGooKSAiZ3J1ZW5lICIgYnp3LiAiZ3J1ZW5lciAiIHp1cnVlY2tnaWJ0LCBkYXJmIHp3aXNjaGVuIGRlbQorICAgICAiJXMiIHVuZCBkZW0gIkJhbGwiIGtlaW4gTGVlcnplaWNoZW4gc3RlaGVuIQorCitTSUVIRSBBVUNIOgorICAgICAvc3RkL3RoaW5nL2xhbmd1YWdlLmMKKworLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorTGFzdCBtb2RpZmllZDogV2VkIE1heSA4IDEwOjE4OjA1IDE5OTYgYnkgV2FyZ29uCmRpZmYgLS1naXQgYS9kb2MvbGZ1bi9EZWZlbmQgYi9kb2MvbGZ1bi9EZWZlbmQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZTAyMjY0YQotLS0gL2Rldi9udWxsCisrKyBiL2RvYy9sZnVuL0RlZmVuZApAQCAtMCwwICsxLDE1MCBAQAorRGVmZW5kKCkKK0ZVTktUSU9OOgorICAgICBwdWJsaWMgaW50IERlZmVuZChpbnQgZGFtLCBzdHJpbmd8c3RyaW5nKiBkYW1fdHlwZSwgaW50fG1hcHBpbmcgc3BlbGwsIAorICAgICAgICAgICAgICAgICAgICAgICAgb2JqZWN0IGVuZW15KQorCitERUZJTklFUlQgSU46CisgICAgIC9zdGQvbGl2aW5nL2NvbWJhdAorCitBUkdVTUVOVEU6CisgICAgIGludCBkYW0gICAgICAgICAgICAgICAgICBpbml0aWFsZSBTdGFlcmtlIGRlcyBBbmdyaWZmcyAoMTAgZGFtIH4gMSBIUCkKKyAgICAgc3RyaW5nKiBkYW1fdHlwZSAgICAgICAgIEFydChlbikgZGVzIFNjaGFkZW5zLCBkZXIgYW5nZXJpY2h0ZXQgd2VyZGVuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzb2xsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBNdXNzIGVpbiBBcnJheSB2b24gU2NoYWRlbnN0eXBlbiBzZWluLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYWx0ZSBPYmpla3RlIHVlYmVyZ2ViZW4gaGllciBtYW5jaG1hbCBzdHJpbmdzLgorICAgICBpbnQvbWFwcGluZyBzcGVsbCAgICAgICAgLSAwIGZ1ZXIgbm9ybWFsZSBBbmdyaWZmZSAoa2VpbmUgWmF1YmVyKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLSAxIGZ1ZXIgWmF1YmVyIChTdGFuZGFyZHJ1ZXN0dW5nZW4gaWdub3JpZXJlbikKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0gbWFwcGluZyBmdWVyIG1laHIgSW5mb3JtYXRpb25lbgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSGV1dGUgYml0dGUgbmFjaCBNb2VnbGljaGtlaXQgZWluIE1hcHBpbmcKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVlYmVyZ2ViZW4uCisgICAgIG9iamVjdCBlbmVteSAgICAgICAgICAgICBkZXIgRmVpbmQvU2NoYWRlbnZlcnVyc2FjaGVyCisKK0JFU0NIUkVJQlVORzoKKyAgICAgMS4gR2VuZXJlbGwKKyAgICAgV2VubiBkYXMgTGViZXdlc2VuIGFuZ2VncmlmZmVuIHdpcmQsIHdpcmQgZ2VwcnVlZnQsIHdpZSBzdGFyayBkaWUKKyAgICAgUnVlc3R1bmdlbiB1bmQga29lcnBlcmVpZ2VuZW4gQWJ3ZWhya3JhZWZ0ZSBzaW5kIHVuZCBkaWUgU3RhZXJrZSBkZXMKKyAgICAgU2NoYWRlbnMgZGVtZW50c3ByZWNoZW5kIHZlcm1pbmRlcnQuCisgICAgIEdnZi4gd2lyZCBkZXIgU2NoYWRlbiB6dWdlZnVlZ3QgdW5kIGRlciBGZWluZCBpbiAgZGllIExpc3RlIGRlciBGZWluZGUKKyAgICAgYXVmZ2Vub21tZW4uIERlciBTY2hhZGVuIGJldHJhZWd0OgorICAgICAgKGRhbS1TdW1tZShSdWVzdHVuZ3NzdGFlcmtlbiktcmFuZG9tKFBfQk9EWStBX0RFWCkpKkNoZWNrUmVzaXN0YW5jZS8xMAorICAgICBhYmVyIG5pY2h0IHVudGVyIDAuCisKKyAgICAgMi4gRGVyIFBhcmFtZXRlciAnc3BlbGwnCisgICAgIElzdCAnc3BlbGwnIDAsIGRhbm4gZ2lsdCBkZXIgQW5ncmlmZiBhbHMgbm9ybWFsZSBwaHlzaXNjaGUgQXR0YWNrZQorICAgICBVZWJlcmdpYnQgbWFuIGFscyAnc3BlbGwnLVBhcmFtZXRlciBlaW4gTWFwcGluZywgc28gZ2lidCBlcyBkYWZ1ZXIKKyAgICAgZGl2ZXJzZSBGbGFncywgZGllIGRhcyBFcmdlYm5pcyBtYW5pcHVsaWVyZW4gKGluIG5ld19za2lsbHMuaAorICAgICBlbnRoYWx0ZW4pLiBOaWNodGFuZ2FiZSBlaW5lcyBGbGFncyBnaWx0IGFscyAwLgorCisgICAgIC0gU1BfUEhZU0lDQUxfQVRUQUNLIC0tLS0tLS0tLS0gMC8xCisgICAgICAgICAgICAgICAgMSwgd2VubiBSdWVzdHVuZ2VuIHdpcmtlbiBzb2xsZW4sIDAgc29uc3QKKyAgICAgICAgICAgICAgICAtPiBlbnRzcHJpY2h0ICFzcGVsbCwgd2VubiBkaWVzZXMgSW50IGlzdAorICAgICAtIFNQX05PX0VORU1ZIC0tLS0tLS0tLS0tLS0tLS0tIDAvMQorICAgICAgICAgICAgICAgIDEsIGZhbGxzIGRlciBBbmdyaWZmIG5pY2h0IHRvZWRsaWNoIGlzdCwgZXMgYWxzbyBrZWluZW4gZWNodGVuCisgICAgICAgICAgICAgICAgR2VnbmVyIGdpYnQKKyAgICAgICAgICAgICAgICAtPiBlcyB3aXJkIGRhbm4gcmVkdWNlX2hpdF9wb2ludHMoKSBnZXJ1ZmVuIHN0YXR0IGRvX2RhbWFnZSgpCisgICAgIC0gU1BfTk9fQUNUSVZFX0RFRkVOU0UgLS0tLS0tLS0gMC8xCisgICAgICAgICAgICAgICAgMSwgZmFsbHMgYWt0aXZlIEFid2VocmVuICh3aWUgenVydWVja3NjaGxhZ2VuZGUgQW11bGV0dGUsCisgICAgICAgICAgICAgICAgS2FyYXRlYWJ3ZWhyZW4gb2RlciBBdXN3ZWljaG1hbm9ldmVyKSB1bnRlcmJsZWliZW4gc29sbGVuCisgICAgICAgICAgICAgICAgLT4gekIgYmVpIEtyYXR6ZW4gZHVyY2ggRG9ybmVuIG9kZXIgRmFsbCBhdXMgZ3Jvc3NlciBIb2VoZQorICAgICAgICAgICAgICAgICAgIGlzdCBha3RpdmUgQWJ3ZWhyIG9kZXIgQXVzd2VpY2hlbiB1bmxvZ2lzY2gKKyAgICAgLSBTUF9SRUNVUlNJVkUgLS0tLS0tLS0tLS0tLS0tLSAwLzEKKyAgICAgICAgICAgICAgICAxLCBmYWxscyBkZXIgU3BlbGwgYXVzIGVpbmVtIERlZmVuZCBnZXJ1ZmVuIHd1cmRlIChvZGVyIGVpbmVyCisgICAgICAgICAgICAgICAgRGVmZW5kRnVuYykKKyAgICAgICAgICAgICAgICAtPiB2ZXJoaW5kZXJ0IFJla3Vyc2lvbnNwcm9ibGVtZQorICAgICAtIFNQX05BTUUgLS0tLS0tLS0tLS0tLS0tLS0tLS0tIHN0cmluZworICAgICAgICAgICAgICAgIE5hbWUgZGVzIFNwZWxscworICAgICAtIFNQX1JFRFVDRV9BUk1PVVIgLS0tLS0tLS0tLS0tIE1hcHBpbmc6IGtleXMgQVRfWC9QX0JPRFksIHZhbHVlcyBpbnQ+PTAKKyAgICAgICAgICAgICAgICBEaWUgU2NodXR6d2lya3VuZyBkdXJjaCBQX0FDL01hZ2llIGVpbmVyIFJ1ZXN0dW5nIHdpcmQKKyAgICAgICAgICAgICAgICB0eXBhYmhhZW5naWcgcmVkdXppZXJ0LiBBdWZiYXUgZWluZXMgTWFwcGluZ3MgaW0gQmVpc3BpZWw6CisgICAgICAgICAgICAgICAgKFtBVF9CT09UUzogMCwgIC8vIFN0aWVmZWwgc2NodWV0emVuIGdhciBuaWNodAorICAgICAgICAgICAgICAgICAgUF9CT0RZOiAgNTAsICAvLyBLb2VycGVyIHp1IDUwJQorICAgICAgICAgICAgICAgICAgQVRfQkVMVDogNjAwICAvLyBHdWVydGVsIHp1IDYwMCUKKyAgICAgICAgICAgICAgICBdKQorICAgICAgICAgICAgICAgIC0+IGFsbGUgJ2ZlaGxlbmRlbicgRWludHJhZWdlIHdpcmtlbiBub3JtYWwKKyAgICAgLSBTUF9TSE9XX0RBTUFHRSAtLS0tLS0tLS0tLS0tLSAwLzEgb2RlciBBcnJheSB2b24gQXJyYXlzCisgICAgICAgICAgICAgICAgMCwgZnVlciBrZWluZSBUcmVmZmVybWVsZHVuZywgMSBzb25zdAorICAgICAgICAgICAgICAgIEluIGVpbmVtIEFycmF5IGtvZW5uZW4gRXJzYXR6LVRyZWZmZXJtZWxkdW5nZW4gZGVmaW5pZXJ0CisgICAgICAgICAgICAgICAgd2VyZGVuLiBGb3JtYXQgaXN0OgorICAgICAgICAgICAgICAgICh7CisgICAgICAgICAgICAgICAgICh7IGludCBscGhpdDEsIHN0cmluZyBtZXNzX21lLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJpbmcgbWVzc19lbiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RyaW5nIG1lc3Nfcm9vbSB9KSwKKyAgICAgICAgICAgICAgICAgKHsgbHBoaXQyLCBtZXNzX21lLCBtZXNzX2VuLCBtZXNzX3Jvb20gfSksCisgICAgICAgICAgICAgICAgIC4uLgorICAgICAgICAgICAgICAgICAoeyBscGhpdG4sIG1lc3NfbWUsIG1lc3NfZW4sIG1lc3Nfcm9vbSB9KSwKKyAgICAgICAgICAgICAgICB9KQorICAgICAgICAgICAgICAgIHdvYmVpIGxwaGl0MTxscGhpdDI8Li4uPGxwaGl0biBzZWluIG11c3MsIGQuaC4gZGFzIEFycmF5LQorICAgICAgICAgICAgICAgIEFycmF5IGF1ZnN0ZWlnZW5kIHNvcnRpZXJ0LgorCisgICAgICAgICAgICAgICAgSXN0IGVpbiBUcmVmZmVyIHggTFAgaGFydCwgd2VyZGVuIGRpZSBNZWxkdW5nZW4gZGVzIGxwaGl0LQorICAgICAgICAgICAgICAgIEFycmF5cyBhdXNnZWdlYmVuLCBkZXNzZW4gV2VydCBhbSBuYWVoZXN0ZW4gdW50ZXIgZGVtIFNjaGFkZW4KKyAgICAgICAgICAgICAgICBsaWVndC4KKworICAgICAgICAgICAgICAgIEluIGRlbiBNZWxkdW5nZW4gbWVzc19tZSAoYW4gZGVuIEdldHJvZmZlbmVuKSwgbWVzc19lbiAoYW4KKyAgICAgICAgICAgICAgICBkZW4gRmVpbmQpLCBtZXNzX3Jvb20gKGFuIGRpZSByZXN0bGljaGVuIFVtc3RlaGVuZGVuKSBrb2VubmVuCisgICAgICAgICAgICAgICAgRXJzYXR6c3RyaW5ncyB3aWUgZm9sZ3QgdmVyd2VuZGV0IHdlcmRlbjoKKyAgICAgICAgICAgICAgICBAV0VSMS9AV0VTU0VOMS9AV0VNMS9AV0VOMSAtIG5hbWUoY2FzdXMpIGRlcyBHZXRyb2ZmZW5lbiAoVE8pCisgICAgICAgICAgICAgICAgQFdFUjIvQFdFU1NFTjIvQFdFTTIvQFdFTjIgLSBuYW1lKGNhc3VzKSBkZXMgRmVpbmRlcyAoZW5lbXkpCisgICAgIC0gRUlORk9fREVGRU5EIC0tLS0tLS0tLS0tLSBNYXBwaW5nCisgICAgICAgICAgICAgICAgRGllc2VzIE1hcHBpbmcgbGllZmVydCBlcndlaXRlcnRlIEluZm9ybWF0aW9uZW4genUgZGVtCisgICAgICAgICAgICAgICAgYmlzaGVyaWdlbiBBYmxhdWYgZGVzIGFrdGl2ZW4gQXR0YWNrcy4KKyAgICAgICAgICAgICAgICBEaWUgdmVyZnVlZ2JhcmVuIEluZm9ybWF0aW9uZW4gc2luZCBpbiBkZXIgTWFucGFnZSB6dQorICAgICAgICAgICAgICAgIERlZmVuZEluZm8gZmVzdGdlaGFsdGVuLgorCisgICAgIDMuIFJlaWhlbmZvbGdlbiBpbiBEZWZlbmQKKyAgICAgLSBkYXMgTGl2aW5nIHdpcmQgYW5nZWdyaWZmZW4sIHdlbm4KKyAgICAgICAtIFBfTk9fQVRUQUNLICE9IDAKKyAgICAgICAtICdlbmVteScgZXhpc3RpZXJ0IHVuZCBrZWluIG5ldHp0b3RlciBTcGllbGVyIGlzdAorICAgICAtIFBfREVGRU5ERVJTIHdlcmRlbiBkdXJjaGdlZ2FuZ2VuICh1bmQgZXZlbnR1ZWxsIGJlbmFjaHJpY2h0aWd0KQorICAgICAtIFBfVE1QX0FUVEFDS19IT09LIHdpcmQgYWJnZWZyYWd0CisgICAgIC0gZGllIFJ1ZXN0dW5nZW4gd2VyZGVuIHZvbSBTY2hhZGVuIGdlZ2ViZW5lbmZhbGxzIGFiZ2V6b2dlbgorICAgICAtIG1hZ2lzY2hlciBBdXN3ZWljaHNraWxsIGJlcnVlY2tzaWNodGlndAorICAgICAtIHNlbnNpdGl2ZSBPYmpla3RlIHdlcmRlbiBnZ2YuIGJlbmFjaHJpY2h0aWd0CisgICAgIC0gSW50ZXJuYWxNb2RpZnlEZWZlbmQgd2lyZCBnZXJ1ZmVuCisgICAgIC0gS29lcnBlcmFid2VociBhYmdlem9nZW4KKyAgICAgLSBkZXIgU2NoYWRlbiBhbiBkb19kYW1hZ2UoKS9yZWR1Y2VfaGl0X3BvaW50cygpIHVlYmVyZ2ViZW4KKyAgICAgLSBGbHVjaHQgdWViZXJwcnVlZmVuIG1pdCBDaGVja1dpbXB5QW5kRmxlZSgpCisKK0JFTUVSS1VOR0VOOgorICAgICBSdWVzdHVuZ2VuIHdpcmtlbiBrb252ZW50aW9uZWxsIG51ciwgd2VubiBtaW5kZXN0ZW5zIGVpbiBTY2hhZGVuc2FudGVpbAorICAgICBtZWNoYW5pc2NoIGlzdCB1bmQgZXMga2VpbiBTcGVsbCBvZGVyIGVpbiBTcGVsbCBtaXQgU1BfUEhZU0lDQUxfQVRUQUNLCisgICAgIGF1ZiAxIGlzdC4KKworICAgICBEZWZlbmQoKSBiZXJ1ZWNrc2ljaHRpZ3QgbWFnaXNjaGUgVmVydGVpZGlndW5nZW4sIGRpZSBkZXIgU3BpZWxlciBiZWkKKyAgICAgc2ljaCBoYXQsIHNvbGx0ZSBhbHNvIGF1cyBGYWlybmVzcyBnZWdlbnVlYmVyIGRlbiBPYmpla3RlbiBhbmRlcmVyCisgICAgIE1hZ2llciBpbW1lciBkZW0gZGlyZWt0ZW4gcmVkdWNlX2hpdF9wb2ludHMoKSBvZGVyIGRvX2RhbWFnZSgpCisgICAgIHZvcmdlem9nZW4gd2VyZGVuLiBNaXR0ZWxzIGRlciBGbGFncyBpbiAnc3BlbGwnIGthbm4gbWFuIHNlaHIgdmllbAorICAgICBhZW5kZXJuLgorCitSVUVDS0dBQkVXRVJUOgorICAgICBIb2VoZSBkZXMgdGF0c2FlY2hsaWNoZW4gU2NoYWRlbnMuIERpZXMga2FubiBtZWhyIHNlaW4gYWxzIGRpZQorICAgICBMZWJlbnNwdW5rdGUgZGVzIExlYmV3ZXNlbnMuCisKK0JFSVNQSUVMRSAoU0lFSEUgQVVDSCBEZWZlbmRfYnNwKToKKyAgICAgLy8gZWluIHNpbXBsZXIgQW5ncmlmZjoKKyAgICAgZW5lbS0+RGVmZW5kKDEwMCwgKHtEVF9CTFVER0VPTn0pLCAwLCB0aGlzX29iamVjdCgpKTsKKworICAgICAvLyBlaW4gbWFnaXNjaGVyIEFuZ3JpZmYgKG9obmUgVHJlZmZlcm1lbGR1bmcpOgorICAgICBlbmVtLT5EZWZlbmQoMTAwLCAoe0RUX0JMVURHRU9OLCBEVF9GSVJFfSksIDEsIHRoaXNfb2JqZWN0KCkpOworCisgICAgIC8vIGVpbiBtYWdpc2NoZXIgQW5ncmlmZiBtaXQgVHJlZmZlcm1lbGR1bmc6CisgICAgIGVuZW0tPkRlZmVuZCgxMDAsICh7RFRfQkxVREdFT04sIERUX0ZJUkV9KSwgKFtTUF9TSE9XX0RBTUFHRToxXSksCisgICAgICAgICAgICAgICAgICAgICAgICAgdGhpc19vYmplY3QoKSk7CisKK1NJRUhFIEFVQ0g6CisgICAgIEFuZ3JpZmY6ICAgQXR0YWNrKEwpLCBQX05PX0FUVEFDSywgSW5zZXJ0RW5lbXkoTCkKKyAgICAgU2NoYWRlbjogICBQX0VOQUJMRV9JTl9BVFRBQ0tfT1VULCBQX0xBU1RfTU9WRSwKKyAgICAgICAgICAgICAgICBkb19kYW1hZ2UoTCksIHJlZHVjZV9oaXRfcG9pbnRzKEwpCisgICAgIFNjaHV0ejogICAgUF9ERUZFTkRFUlMsIEluZm9ybURlZmVuZChMKSwgRGVmZW5kT3RoZXIoTCkKKyAgICAgICAgICAgICAgICBQX0FSTU9VUlMsIFBfQUMsIFBfREVGRU5EX0ZVTkMsIFF1ZXJ5RGVmZW5kKEwpCisgICAgICAgICAgICAgICAgUF9CT0RZLCBBX0RFWAorICAgICBEYXRlbjogICAgIFBfTEFTVF9DT01CQVRfVElNRQorICAgICAgICAgICAgICAgIFBfTEFTVF9EQU1UWVBFUywgUF9MQVNUX0RBTVRJTUUsIFBfTEFTVF9EQU1BR0UKKyAgICAgICAgICAgICAgICBQX0RBTUFHRV9NU0cKKyAgICAgUmVzaXN0ZW56OiBQX1JFU0lTVEFOQ0VfU1RSRU5HVEhTLCBDaGVja1Jlc2lzdGFuY2UoTCkKKyAgICAgU29uc3RpZ2VzOiBDaGVja1NlbnNpdGl2ZUF0dGFjayhMKQorICAgICAgICAgICAgICAgIEludGVybmFsTW9kaWZ5RGVmZW5kKEwpCisgICAgICAgICAgICAgICAgVXNlU2tpbGwoTCksCisgICAgICAgICAgICAgICAgRGVmZW5kSW5mbworCisxNS4wOS4yMDEwLCBaZXNzdHJhCmRpZmYgLS1naXQgYS9kb2MvbGZ1bi9EZWZlbmRGdW5jIGIvZG9jL2xmdW4vRGVmZW5kRnVuYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi43MDQzZTA0Ci0tLSAvZGV2L251bGwKKysrIGIvZG9jL2xmdW4vRGVmZW5kRnVuYwpAQCAtMCwwICsxLDc4IEBACitEZWZlbmRGdW5jKEwpCisKK0ZVTktUSU9OOgorICAgICBpbnQgRGVmZW5kRnVuYyhzdHJpbmd8c3RyaW5nICpkdHlwLCBpbnR8bWFwcGluZ3NwZWxsLCBvYmplY3QgZW5lbXkpOworCitERUZJTklFUlQgSU46CisgICAgIGVpZ2VuZW4gT2JqZWt0ZW47IGZ1ZXIgL3N0ZC9hcm1vdXIvY29tYmF0LmMKKworQVJHVU1FTlRFOgorICAgICBkdHlwCisgICAgICAgICAgU2NoYWRlbnN0eXBlbiBkZXIgQW5ncmlmZnNhcnQuCisgICAgICAgICAgU29sbHRlIGhldXRlIGVpbiBzdHJpbmcqIHNlaW4uCisgICAgIHNwZWxsCisgICAgICAgICAgMCBiZWkgdmVyYWx0ZXRlbiBrb252ZW50aW9uZWxsZW4gQW5ncmlmZmVuIGltIFJlZ2VsZmFsbCBqZWRvY2gKKyAgICAgICAgICBlaW4gTWFwcGluZyBtaXQgd2VpdGVyZW4gSW5mb3MuCisgICAgICAgICAgQmVpIGVpbmVtIGtvbnZlbnRpb25lbGxlbiBBbmdyaWZmIGlzdCBzcGVsbFtTUF9QSFlTSUNBTF9BVFRBQ0tdIGdsZWljaAorICAgICAgICAgIDEuCisgICAgIGVuZW15CisgICAgICAgICAgRGVyIGFuZ3JlaWZlbmRlIEdlZ25lcgorCitCRVNDSFJFSUJVTkc6CisgICAgIEFuaGFuZCBkZXIgdWViZXJnZWJlbmVuIFBhcmFtZXRlciBrYW5uIGhpZXIgZWluIFJ1ZXN0dW5nc2JvbnVzIChvZGVyCisgICAgIGF1Y2ggZWluIFJ1ZXN0dW5nc21hbHVzKSBlcnJlY2huZXQgd2VyZGVuLCBkZXIgenUgZGVtIG5vcm1hbGVuCisgICAgIFJ1ZXN0dW5nc3dlcnQgKGFiaGFlbmdpZyB2b24gZGVyIEFuZ3JpZmZzYXJ0KSBoaW56dWFkZGllcnQgd2lyZC4KKworUlVlQ0tHQUJFV0VSVDoKKyAgICAgRGVyIFJ1ZXN0dW5nc2JvbnVzLCBkZXIgenVyIFJ1ZXN0dW5nc2tsYXNzZSBhZGRpZXJ0IHdlcmRlbiBzb2xsLgorCitCRU1FUktVTkdFTjoKKyAgICAgQXVjaCB3ZW5uIG1hbiBlaW5lIERlZmVuZEZ1bmMoKSBiZW51dHp0LCBkYXJmIGRlciBSdWVja2dhYmV3ZXJ0CisgICAgIHp1c2FtbWVuIG1pdCBkZXIgUF9BQyBpbnNnZXNhbXQgbnVyIGluIHNlaHIgc2VsdGVuZW4sIHdvaGxkdXJjaC0KKyAgICAgZGFjaHRlbiBBdXNuYWhtZWZhZWxsZW4gZGllIG1heGltYWwgenVsYWVzc2lnZSBQX0FDIGZ1ZXIgZGllc2VuCisgICAgIFJ1ZXN0dW5nc3R5cCB1ZWJlcnNjaHJlaXRlbi4gSW4gc29sY2hlbiBBdXNuYWhtZWZhZWxsZW4gZHVlcmZlbgorICAgICBkaWUgRGVmZW5kRnVuY3MgbmljaHQga29uc3RhbnQgd2lya2VuLgorCisgICAgIEJlaSBha3RpdmVtIFp1cnVlY2tzY2hsYWdlbiBJTU1FUiBhdWYgRmxhZ3Mgd2llIFNQX1JFQ1VSU0lWRSB1bmQKKyAgICAgU1BfTk9fQUNUSVZFX0RFRkVOU0UgcHJ1ZWZlbiB1bmQgZ2dmLiBhYmJyZWNoZW4uCisKK0JFSVNQSUVMRToKKyAgICAgRWluZSBSdWVzdHVuZywgZGllIGJlaSBBbmdyaWZmZW4gbWl0IEZldWVyIGlocmUgdm9sbGUgU3RhZXJrZSBlbnRmYWx0ZXQKKyAgICAgdW5kIGJlaSBBbmdyaWZmZW4gZHVyY2ggR2Vpc3RlciBnZXNjaHdhZWNodCB3aXJkOgorCisgICAgIHZvaWQgY3JlYXRlKCkKKyAgICAgeworICAgICAgIDo6Y3JlYXRlKCk7CisKKyAgICAgICBTZXRQcm9wKFBfQVJNT1VSX1RZUEUsIEFUX0FSTU9VUik7CisgICAgICAgU2V0UHJvcChQX0FDLCAyMCk7CisgICAgICAgLi4uCisgICAgICAgLy8gRGllIERlZmVuZEZ1bmMoKSBpc3QgaW4gZGVyIFJ1ZXN0dW5nIHNlbGJzdCBkZWZpbmllcnQKKyAgICAgICBTZXRQcm9wKFBfREVGRU5EX0ZVTkMsIHRoaXNfb2JqZWN0KCkpOworICAgICB9CisKKyAgICAgaW50IERlZmVuZEZ1bmMoc3RyaW5nICpkdHlwLCBtaXhlZCBzcGVsbCwgb2JqZWN0IGVuZW15KQorICAgICB7CisgICAgICAgaW50IHByb3Q7CisKKyAgICAgICAvLyBadWVyc3QgZnJhZ2VuIHdpciBkZW4gQW5ncmlmZiBkdXJjaCBGZXVlciBhYjoKKyAgICAgICBpZiAobWVtYmVyKGR0eXAsIERUX0ZJUkUpID49IDApICAvLyBGZXVlciBnZWhvZXJ0IHp1IGRlbiBTY2hhZGVuc3R5cGVuCisgICAgICAgICBwcm90ID0gNSArIHJhbmRvbSgxMCk7IC8vIERhcyBlcmdpYnQgbWF4aW1hbCAxNC4gWnVzYW1tZW4gbWl0IFBfQUMKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8ga29tbXQgbWFuIGFsc28gbWF4aW1hbCBhdWYgMTQrMjAgPSAzNCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gbGllZ3QgYWxzbyB1bnRlciBkZXIgZnVlciBBVF9BUk1PVVIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gZ2VsdGVuZGVuIE9iZXJncmVuemUKKworICAgICAgIC8vIFVuZCBqZXR6dCBkZXIgR2Vpc3RlcnRlc3QKKyAgICAgICBpZiAoZW5lbXktPlF1ZXJ5UHJvcChQX1JBQ0UpID09ICJHZWlzdCIgfHwKKyAgICAgICAgICAgZW5lbXktPmlzX2NsYXNzX21lbWJlcihDTF9HSE9TVCkpCisgICAgICAgICBwcm90IC09IHJhbmRvbSgxMCk7CisKKyAgICAgICAvLyBEZXIgUnVlY2tnYWJld2VydCB3aXJkIGF1ZiBkZW4gYXVzIFBfQUMgZXJyZWNobmV0ZW4gV2VydCBkcmF1Zmdlc2NobGFnZW4KKyAgICAgICByZXR1cm4gcHJvdDsKKyAgICAgfQorCitTSUVIRSBBVUNIOgorICAgICBQX0RFRkVORF9GVU5DLCBRdWVyeURlZmVuZCgpLCAvc3RkL2FybW91ci9jb21iYXQuYworCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCitMYXN0IG1vZGlmaWVkOiAxOC5KdWwgMjAwNiBNdWFkaWIKZGlmZiAtLWdpdCBhL2RvYy9sZnVuL0RlZmVuZEluZm8gYi9kb2MvbGZ1bi9EZWZlbmRJbmZvCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjQ2MDM1MmEKLS0tIC9kZXYvbnVsbAorKysgYi9kb2MvbGZ1bi9EZWZlbmRJbmZvCkBAIC0wLDAgKzEsMTY4IEBACitEZWZlbmRJbmZvCitGVU5LVElPTjoKKworREVGSU5JRVJUIElOOgorICAgICAvc3lzL2NvbWJhdC5oCisKK0FSR1VNRU5URToKKworQkVTQ0hSRUlCVU5HOgorICAgICBEaWUgRGVmZW5kSW5mb3JtYXRpb25lbiB3ZXJkZW4gaW0gUnVuZGUgZWluZXMgQXR0YWNrL0RlZmVuZCBWb3JnYW5ncyAKKyAgICAgaW4gQXR0YWNrIGluaXRpYWwgYW5nZWxlZ3QgdW5kIGRlbSBEZWZlbmQgdWViZXIgZGVuIFBhcmFtZXRlciBzcGVsbAorICAgICB1ZWJlcmdlYmVuLiBJc3QgZGllc2VyIFBhcmFtZXRlciBlaW4gTWFwcGluZywgc28gc2luZCBkaWUgCisgICAgIERlZmVuZEluZm9ybWF0aW9uZW4gdWViZXIgZGVuIEtleSBFSU5GT19ERUZFTkQgenUgZXJoYWx0ZW4uCisgICAgIERpZSBJbmZvcm1hdGlvbmVuIGxpZWdlbiBpbiBGb3JtIGVpbmVzIE1hcHBpbmdzIHZvci4KKyAgICAgVm9yIFp1Z3JpZmYgc29sbHRlIGltbWVyIGF1ZiBkaWUgRXhpc3RlbnogZGllc2VzIEtleXMgaW4gZGVtIE1hcHBpbmcKKyAgICAgZ2VwcnVlZnQgd2VyZGVuLCBkYSBuaWNodCBhbGxlIEluZm9ybWF0aW9uZW4gaW1tZXIgZXhpc3RpZXJlbi4KKyAgICAgRGllIEtleXMgc2luZCBpbiBjb21iYXQuaCBkZWZpbmllcnQgdW5kIHNpbmQgZm9sZ2VuZGU6CisgICAgIAorICAgIE9SSUdJTkFMX0FJTkZPIC0gTWFwcGluZyAKKyAgICAgICAgSGllciBpc3QgZWluZSBLb3BpZSBkZXMgb3JpZ2luYWxlbiBhaW5mby1tYXBwaW5ncyBkZXMgQXR0YWNrcyAKKyAgICAgICAgdm9yaGFuZGVuIG1pdCBmb2xnZW5kZW4gRWludHJhZWdlbjoKKyAgICAgICAgSW1tZXIgdm9yaGFuZGVuZSBFaW50cmFlZ2U6CisgICAgICAgICAgU0lfRU5FTVkgICAgICAgICAgICAgIGRlciBhbmdlZ3JpZmZlbmUgR2VnbmVyCisgICAgICAgIAorICAgICAgICBBbmdyaWZmIG1pdCBnZXp1ZWNrdGVyIFdhZmZlOgorICAgICAgICAgIFBfV0VBUE9OICAgICAgICAgICAgICBkYXMgV2FmZmVub2JqZWt0IHNlbGJzdAorICAgICAgICAgIFBfV0VBUE9OX1RZUEUgICAgICAgICBQX1dFQVBPTl9UWVBFIGRlciBXYWZmZQorICAgICAgICAgIFBfV0MgICAgICAgICAgICAgICAgICBQX1dDIGRlciBXYWZmZQorICAgICAgICAgIFBfTlJfSEFORFMgICAgICAgICAgICBQX05SX0hBTkRTIGRlciBXYWZmZQorICAgICAgICAgIFNJX1NLSUxMREFNQUdFX1RZUEUgICBQX0RBTV9UWVBFIGRlciBXYWZmZQorICAgICAgICAgIFNJX1NLSUxMREFNQUdFICAgICAgICB3YWZmZS0+UXVlcnlEYW1hZ2UoZW5lbXkpCisgICAgICAgICAgICAgYmVpIHZvcmhhbmRlbmVtIFp3ZWloYW5kc2tpbGwgU0tfVFdPSEFOREVEIHdpcmQgbnVyIGRlciBkdXJjaCAKKyAgICAgICAgICAgICBkZW4gU2tpbGwgbW9kaWZpemllcnRlIFNjaGFkZW5zd2VydCB1ZWJlcm5vbW1lbgorICAgICAgICAgIFNJX1NLSUxMREFNQUdFX01TRyAgICAibWl0ICIrd2FmZmUtPm5hbWUoV0VNLDApCisgICAgICAgICAgU0lfU0tJTExEQU1BR0VfTVNHMiAgICJtaXQgIit3YWZmZS0+bmFtZShXRU0sMSkKKyAgICAgICAgICBTSV9TUEVMTCAgICAgICAgICAgICAgMAorCisgICAgICAgIEFuZ3JpZmYgbWl0IGJsb3NzZW4gSGFlbmRlbjoKKyAgICAgICAgICBQX1dFQVBPTl9UWVBFICAgICAgICAgV1RfSEFORFMKKyAgICAgICAgICBQX1dDICAgICAgICAgICAgICAgICAgUF9IQU5EU1sxXQorICAgICAgICAgIFNJX1NLSUxMREFNQUdFICAgICAgICBTY2hhZGVuc3dlcnQsIGF1cyBQX0hBTkRTWzFdIHVuZCBBX1NUUiAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYmVyZWNobmV0CisgICAgICAgICAgU0lfU0tJTExEQU1BR0VfVFlQRSAgIFBfSEFORFNbMl0KKyAgICAgICAgICBTSV9TS0lMTERBTUFHRV9NU0cKKyAgICAgICAgICBTSV9TS0lMTERBTUFHRV9NU0cyICAgYmVpZGVzIFBfSEFORFNbMF0KKyAgICAgICAgICBTSV9TUEVMTCAgICAgICAgICAgICAgMAorICAgICAgICAgIAorICAgICAgICBBbmdyaWZmIG1pdCBlaW5lbSBTcGVsbCAoU0tfTUFHSUNfQVRUQUNLKToKKyAgICAgICAgICBTSV9TS0lMTERBTUFHRSAgICAgICAgU2NoYWRlbnN3ZXJ0IGRlcyBTcGVsbHMKKyAgICAgICAgICBTSV9TS0lMTERBTUFHRV9UWVBFICAgU2NoYWRlbnN0eXBlbiBkZXMgU3BlbGxzCisgICAgICAgICAgU0lfU0tJTExEQU1BR0VfTVNHICAgIFNjaGFkZW5zbWVsZHVuZyBkZXMgU3BlbGxzLCB3ZW5uIHZvcmhhbmRlbiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc29uc3QgIm1pdCBtYWdpc2NoZW4gRmFlaGlna2VpdGVuIgorICAgICAgICAgIFNJX1NLSUxMREFNQUdFX01TRzIgICBlbnRzcHJlY2hlbmRlIE1lbGR1bmcgZGVzIFNwZWxscywgd2VubiAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ2VzZXR6dCwgYW5zb25zdGVuIGlkZW50aXNjaCBtaXQgCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNJX1NLSUxMREFNQUdFX01TRworICAgICAgICAgIFBfV0VBUE9OX1RZUEUgICAgICAgICBQX1dFQVBPTl9UWVBFIGRlcyBTcGVsbHMsIHdlbm4gdm9yaGFuZGVuLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzb25zdCBXVF9NQUdJQworICAgICAgICAgIFNJX1NQRUxMICAgICAgICAgICAgICBTSV9TUEVMTCBkZXMgU3BlbGxzCisgICAgICAgICAgCisgICAgICAgIEhpbndlaXNlOgorICAgICAgICAtIEFsbGUgRWludHJhZWdlIGluIGRpZXNlbSBNYXBwaW5nIGtvZW5uZW4gYmVyZWl0cyBkdXJjaAorICAgICAgICAgIEludGVybmFsTW9kaWZ5QXR0YWNrKCkgdmVyYWVuZGVydCB3b3JkZW4gc2Vpbi4KKyAgICAgICAgLSBEaWUgRGF0ZW4gd2VyZGVuIG1pdHRlbHMgZGVlcF9jb3B5KGFpbmZvKSBlaW5nZXRyYWdlbi4KKyAgICAgICAgLSBEYXRlbiBpbiBkZW4gRWludHJhZWdlbiBTSV9TS0lMTERBTUFHRSogdW5kIFNJX1NQRUxMIGtvZW5uZW4gYmVpCisgICAgICAgICAgcGh5c2lrYWxpc2NoZW4gQW5ncmlmZmVuIGR1cmNoIGRpZSBTa2lsbHMgRklHSFQoUF9XRUFQT05fVFlQRSkgb2RlcgorICAgICAgICAgIFNLX0ZJR0hUIG9kZXIgZHVyY2ggZWluZW4gUF9UTVBfQVRUQUNLX01PRCBiencuIEhvb2sgdm9tIFR5cCAKKyAgICAgICAgICBIX0hPT0tfQVRUQUNLX01PRCBtb2RpZml6aWVydCB3b3JkZW4gc2Vpbi4KKyAgICAgICAgCisgICAgT1JJR0lOQUxfREFNIC0gaW50CisgICAgICAgIERlciBPcmlnaW5hbHNjaGFkZW4gYXVzIGRlbSBBdHRhY2sKKworICAgIE9SSUdJTkFMX0RBTV9UWVBFIC0gc3RyaW5nL3N0cmluZyogCisgICAgICAgIERlciBPcmlnaW5hbGRhbWFnZXR5cCBhdXMgZGVtIEF0dGFjaworCisgICAgQ1VSUkVOVF9EQU0gLSBpbnQKKyAgICAgICAgRGVyIG1vbWVudGFuZSBTY2hhZGVuLCBuYWNoIHNjaG9uIGVyZm9sZ3RlbiBNb2RpZmlrYXRpb25lbgorICAKKyAgICBDVVJSRU5UX0RBTV9UWVBFIC0gc3RyaW5nL3N0cmluZyoKKyAgICAgICAgRGVyIG1vbWVudGFuZSBEYW1hZ2V0eXAsIG5hY2ggc2Nob24gZXJmb2xndGVuIE1vZGlmaWthdGlvbmVuCisgIAorICAgIEVORU1ZX0lOU0VSVEVEIC0gaW50CisgICAgICAgIDAgb2RlciAxIGplIG5hY2hkZW0gb2IgZGVyIEFuZ3JlaWZlciBzY2hvbiBpbiBkZXIgZW5lbXktbGlzdAorICAgICAgICB2b3JoYW5kZW4gd2FyIG9kZXIgbmljaHQKKyAgCisgICAgUkZSX1JFRFVDRSAtIGludCAKKyAgICAgICAgMCBvZGVyIHJlZHV6aWVydGVyIFNjaGFkZW4gZHVyY2ggUkZSIE1vZGlmaWthdGlvbgorICAKKyAgICBQUkVTRU5UX0RFRkVOREVSUyAtIEFycmF5IAorICAgICAgICBMaXN0ZSBkZXIgZHVyY2ggSW5mb3JtRGVmZW5kIGluZm9ybWllcnRlbiBEZWZlbmRlciBhbHMgT2JqZWt0LgorICAgICAgICBFaW4gRGVmZW5kZXIgd2lyZCBpbW1lciBOQUNIIEluZm9ybURlZmVuZAorICAgICAgICBkYXp1Z2VmdWVndAorICAKKyAgICBERUZFTkRJTkdfREVGRU5ERVIgLSBBcnJheSAoe30pCisgICAgICAgIEhhdCBlaW4gZHVyY2ggSW5mb3JtRGVmZW5kIGVpbiBEZWZlbmRlciB2ZXJ0ZWlkaWd0LCBzbyB3aXJkCisgICAgICAgIGZ1ZXIgZGllc2VuIERlZmVuZGVyIGVpbiBFaW50cmFnIGluIGRpZXNlbSBBcnJheSB2b3JnZW5vbW1lbiwKKyAgICAgICAgd2VsY2hlciBmb2xnZW5kZSBTdHJ1a3R1ciBiZXNpdHp0LgorICAgICAgICAgICAgICAgICh7CisgICAgICAgICAgICAgICAgICAgICAgICBERUZfREVGRU5ERVIgLSBPYmplY3QKKyAgICAgICAgICAgICAgICAgICAgICAgICAgRGVyIFZlcnRlaWRpZ2VyLCB3ZWxjaGVyIFZPUgorICAgICAgICAgICAgICAgICAgICAgICAgICBEZWZlbmRPdGhlciBlaW5nZWZ1ZWd0IHdpcmQKKyAgICAgICAgICAgICAgICAgICAgICAgIERFRl9EQU0gLSBpbnQKKyAgICAgICAgICAgICAgICAgICAgICAgICAgRGVyIHZlcmFlbmRlcnRlIFNjaGFkZW4sIHdlbGNoZXIgTkFDSCAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgRGVmZW5kT3RoZXIgZWluZ2VmdWVndCB3aXJkCisgICAgICAgICAgICAgICAgICAgICAgICBERUZfREFNVFlQRSBzdHJpbmcvc3RyaW5nKiAgCisgICAgICAgICAgICAgICAgICAgICAgICAgIERpZSB2ZXJhZW5kZXJ0ZSBTY2hhZGVuc2FydCwgd2VsY2hlIAorICAgICAgICAgICAgICAgICAgICAgICAgICBOQUNIIERlZmVuZE90aGVyIGVpbmdlZnVlZ3Qgd2lyZAorICAgICAgICAgICAgICAgICAgICAgICAgREVGX1NQRUxMIC0gTWFwcGluZyAgIAorICAgICAgICAgICAgICAgICAgICAgICAgICBEYXMgTWFwcGluZyBkZXMgdmVyYWVuZGVydGVuIFNwZWxscywgd2VsY2hlcworICAgICAgICAgICAgICAgICAgICAgICAgICBhbHMgS29waWUgTkFDSCBEZWZlbmRPdGhlciBlaW5nZWZ1ZWd0IHdpcmQKKyAgICAgICAgICAgICAgICB9KQorICAKKyAgICBERUZFTkRfSE9PSyAtIEludC9BcnJheSAKKyAgICAgICAgRElfTk9IT09LLCB3ZW5uIGtlaW4gSG9vayBkYSB3YXIsIERJX0hPT0tJTlRFUlJVUFQsIHdlbm4gZGVyCisgICAgICAgIEhvb2sgZGFzIERlZmVuZCB1bnRlcmJyaWNodCwgRElfSE9PSywgd2VubiBlaW4gSG9vayB2b3JoYW5kZW4gCisgICAgICAgIGlzdCwgZGllc2VyIGRhcyBEZWZlbmQgYWJlciB1bnZlcmFlbmRlcnQgbGFlc3N0LgorICAgICAgICBWZXJhZW5kZXJ0IGVpbiBIb29rIGRhcyBEZWZlbmQsIHNvIGlzdCBoaWVyIGVpbiBBcnJheSB6dSBmaW5kZW4KKyAgICAgICAgbWl0IGRlbiB2ZXJhZW5kZXJ0ZW4gUGFyYW1ldGVybiBpbiBkZXIgU3RydWt0dXI6CisgICAgICAgICAgICAgICAgKHsKKyAgICAgICAgICAgICAgICAgICAgICAgIEhPT0tfREFNIC0gaW50CisgICAgICAgICAgICAgICAgICAgICAgICAgICBEZXIgdmVyYWVuZGVydGUgU2NoYWRlbgorICAgICAgICAgICAgICAgICAgICAgICAgSE9PS19EQU1UWVBFIC0gc3RyaW5nL3N0cmluZyogICAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIERpZSB2ZXJhZW5kZXJ0ZSBTY2hhZGVuc2FydAorICAgICAgICAgICAgICAgICAgICAgICAgSE9PS19TUEVMTCAtIE1hcHBpbmcgCisgICAgICAgICAgICAgICAgICAgICAgICAgICBEYXMgTWFwcGluZyBkZXMgdmVyYWVuZGVydGVuIFNwZWxscyBhbHMgS29waWUKKyAgICAgICAgICAgICAgICB9KQorICAKKyAgICBERUZFTkRfQVJNT1VSUyAtIE1hcHBpbmcgKDIgV2VydGUgcHJvIEtleSkKKyAgICAgICAgTGlzdGUgZGVyIGJlcnVlY2tzaWNodGlndGVuIFJ1ZXN0dW5nZW4uIEZ1ZXIgamVkZSBSdWVzdHVuZworICAgICAgICB3aXJkIGVpbiBFaW50cmFnIHZvcmdlbm9tbWVuLCBtaXQgZGVtIE9iamVrdCBkZXIgamV3ZWlsaWdlbgorICAgICAgICBSdWVzdHVuZyBhbHMgS2V5LiBIaWVyYmVpIHdlcmRlbiBkaWUgUnVlc3R1bmdlbiBlcnN0IGVpbmdldHJhZ2VuLAorICAgICAgICB3ZW5uIGlociBqZXdlaWxpZ2VzIFF1ZXJ5RGVmZW5kKCkgYXVmZ2VydWZlbiB3aXJkLCBkLmguIGVzIHNpbmQgbmljaHQKKyAgICAgICAgdm9uIEFuZmFuZyBhbiBhbGxlIGdldHJhZ2VuZW4gUnVlc3R1bmcgZHJpbi4gSmVkZXIgRWludHJhZyBpbSBNYXBwaW5nCisgICAgICAgIGJlc2l0enQgZGllIGZvbGdlbmRlbiAyIFdlcnRlOgorICAgICAgICAgICAgICAgIERFRl9BUk1PVVJfREFNIC0gaW50IAorICAgICAgICAgICAgICAgICAgICBEZXIgU2NoYWRlbiBOQUNIIFF1ZXJ5RGVmZW5kICh2b3JoZXIgMCkKKyAgICAgICAgICAgICAgICBERUZfQVJNT1VSX1BST1QgLSBpbnQKKyAgICAgICAgICAgICAgICAgICAgVmVydGVpZGlndW5nc3dlcnQgZGVyIFJ1ZXN0dW5nIFZPUiBEZWZlbmRGdW5jCisgICAgICAgIEJzcDogSWNoIHdpbGwgd2lzc2VuLCB3aWUgZ3V0ICdydWVzdHVuZycgc2NodWV0enRlOgorICAgICAgICAgICAgIHNwZWxsW0VJTkZPX0RFRkVORF1bREVGRU5EX0FSTU9VUlNdW3J1ZXN0dW5nLERFRl9BUk1PVVJfUFJPVF0KKworICAgIERFRkVORF9HVUlMRCAtIEFycmF5IAorICAgICAgICBFaW5lIExpc3RlIG1pdCBkZXIgTW9kaWZpa2F0aW9uIGRlciBHaWxkZSBtaXQgZGVyIFN0cnVrdHVyCisgICAgICAgICAgICAgICAgKHsKKyAgICAgICAgICAgICAgICAgICAgICAgIEdVSUxEX0RBTSAtIGludAorICAgICAgICAgICAgICAgICAgICAgICAgICBEZXIgdmVyYWVuZGVydGUgU2NoYWRlbgorICAgICAgICAgICAgICAgICAgICAgICAgR1VJTERfREFNVFlQRSAtIHN0cmluZy9zdHJpbmcqCisgICAgICAgICAgICAgICAgICAgICAgICAgIERpZSB2ZXJhZW5kZXJ0ZSBTY2hhZGVuc2FydAorICAgICAgICAgICAgICAgIH0pCisgIAorICAgIERFRkVORF9SRVNJIC0gaW50CisgICAgICAgIFNjaGFkZW4gbmFjaCBDaGVja1Jlc2lzdGFuY2UKKyAgCisgICAgREVGRU5EX0JPRFkgLSBpbnQKKyAgICAgICAgU2NoYWRlbiBuYWNoIEJlcnVlY2tzaWNodGlndW5nIGRlcyBCb2RpZXMgKG51cgorICAgICAgICBwaHlzaWthbGlzY2gpCisgIAorICAgIERFRkVORF9MT1NUTFAgLSBpbnQKKyAgICAgICAgVGF0c2FlY2hsaWNoIGFiZ2V6b2dlbmUgTFAKKyAgCisgICAgREVGRU5EX0NVUl9BUk1PVVJfUFJPVCAtIGludAorICAgICAgICBTY2h1dHogZGVyIFJ1ZXN0dW5nIHZvciBDYWxsIGRlcgorICAgICAgICBEZWZlbmRGdW5jLiBJc3QgbnVyIGluIGRlciBEZWZlbmRGdW5jIGRlZmluaWVydC4gS2FubiBhdWNoIGF1cworICAgICAgICBERUZFTkRfQVJNT1VSUyBlbnRub21tZW4gd2VyZGVuCisgICAgIAorU0lFSEUgQVVDSDoKKyAgICAgQXR0YWNrLCBEZWZlbmQKKworMTguSnVsIDIwMDYgTXVhZGliCmRpZmYgLS1naXQgYS9kb2MvbGZ1bi9EZWZlbmRPdGhlciBiL2RvYy9sZnVuL0RlZmVuZE90aGVyCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmEwYjIyNzcKLS0tIC9kZXYvbnVsbAorKysgYi9kb2MvbGZ1bi9EZWZlbmRPdGhlcgpAQCAtMCwwICsxLDg1IEBACitEZWZlbmRPdGhlcigpCisKK0ZVTktUSU9OOgorCW1peGVkIERlZmVuZE90aGVyKGludCBkYW0sbWl4ZWQgZGFtX3R5cGUsbWl4ZWQgc3BlbGwsb2JqZWN0IGVuZW15KTsKKworREVGSU5JRVJUIElOOgorCS9zdGQvbGl2aW5nL2NvbWJhdC5jCisKK0FSR1VNRU5URToKKwlkYW0KKwkgIERlciBTY2hhZGVuLCBkZXIgdm9yYXVzc2ljaHRsaWNoIGJlaW0genUgdmVydGVpZGlnZW5kZW4gTGViZXdlc2VuCisJICB2ZXJ1cnNhY2h0IHdlcmRlbiBzb2xsLgorCWRhbV90eXBlCisJICBEZXIgU2NoYWRlbnN0eXAgKG9kZXIgZGllIFNjaGFkZW5zdHlwZW4pLCBkZXIgYmVpbSB6dQorCSAgdmVydGVpZGlnZW5kZW4gTGViZXdlc2VuIHZlcnVyc2FjaHQgd2VyZGVuIHNvbGxlbi4KKwlzcGVsbAorCSAgV2VubiBkYXMgenUgdmVydGVpZGlnZW5kZSBMZWJld2VzZW4gbWl0IFNwZWxscyBhbmdlZ3JpZmZlbiB3dXJkZSwKKwkgIHNvIGtvZW5udGUgbWFuIGhpZXIgbWVociBJbmZvcyBlbnRuZWhtZW4uCisJZW5lbXkKKwkgIERlciBGZWluZCwgZGVyIGVpbiB6dSB2ZXJ0ZWlkaWdlbmRlcyBMZWJld2VzZW4gYW5nZWdyaWZmZW4gaGF0LgorCitSVWVDS0dBQkVXRVJUOgorCUFycmF5IG1pdCBkZW4gRWludHJhZWdlbiBkZXIgZ2VnZWJlbmVuZmFsbHMgdmVyYWVuZGVydGVuCisJdWViZXJnZWJlbmVuIFBhcmFtZXRlcjogCisgICAgICAgICAgICAoMSkgZGFtICAgICAgW1R5cCBpbnRdLCAKKyAgICAgICAgICAgICgyKSBkYW1fdHlwZSBbVHlwIHN0cmluZypdLCAKKyAgICAgICAgICAgICgzKSBzcGVsbCAgICBbVHlwIG1hcHBpbmddLgorCitCRVNDSFJFSUJVTkc6CisJRXMgaXN0IG1vZWdsaWNoLCBkYXNzIE9iamVrdGUgQW5ncmlmZmUgYXVmIExlYmV3ZXNlbiBhYndlaHJlbiBvZGVyCisJdW13YW5kZWxuLCBzb2Zlcm4gZGllc2UgT2JqZWt0ZSBiZWkgZGVtIGFuZ2VncmlmZmVuZW4gTGViZXdlc2VuCisJbWl0dGVscyBBZGREZWZlbmRlcigpIGFuZ2VtZWxkZXQgd3VyZGVuIHVuZCBzaWNoIGRlciBzZWxiZW4gVW1nZWJ1bmcKKwliZWZpbmRlbi4KKwladW1laXN0IHdpcmQgZXMgc2ljaCBiZWkgZGVuIE9iamVrdGVuIG5hdHVlcmxpY2ggZWJlbmZhbGxzIHVtCisJYW5kZXJlIExlYmV3ZXNlbiBoYW5kZWxuLCBkaWUgZGFzIExlYmV3ZXNlbiwgYmVpIGRlbSBzaWUgYW5nZW1lbGRldAorCXNpbmQsIHZlcnRlaWRpZ2VuIHNvbGxlbi4KKwlCZWkgZWluZW0gQW5ncmlmZiBhdWYgZGFzIExlYmV3ZXNlbiBrb2VubmVuIGFsbGUgT2JqZWt0ZSBwZXIgQXVmcnVmCisJdm9uIERlZmVuZE90aGVyKCkgaW4gZWluZW4gQW5ncmlmZiBlaW5ncmVpZmVuLCB3b2JlaSBkaWUKKwlTY2hhZGVuc3N0YWVya2UsIGRlciBTY2hhZGVuc3R5cCAoZGllIFNjaGFkZW5zdHlwZW4pLAorCVp1c2F0emluZm9ybWF0aW9uZW4gZnVlciBBbmdyaWZmc3NwZWxscyB1bmQgZGVyIEFuZ3JlaWZlciBhbHMKKwlQYXJhbWV0ZXIgdWViZXJnZWJlbiB3ZXJkZW4uCisJRGVzd2VpdGVyZW4gaXN0IHp1IGJlYWNodGVuLCBkYXNzIGJlaSBhbHMgcGh5c2lrYWxpc2NoIG1hcmtpZXJ0ZW4KKwlBbmdyaWZmZW4gaW4gZWluZW0gVGVhbSBudXIgVmVydGVpZGlnZXIgYXVzIGRlciBlcnN0ZW4gUmVpaGUKKwliZXJ1ZWNrc2ljaHRpZ3Qgd2VyZGVuIHVuZCBkYXNzIGJlaSBlaW5lbSBBbmdyaWZmIHp1ZmFlbGxpZyBhdXMKKwlhbGxlbiBtb2VnbGljaGVuIFZlcnRlaWRpZ2VybiBhdXNnZXdhZWhsdCB3aXJkLgorCVN0YW5kYXJkbWFlc3NpZyBpc3QgZGllc2UgRnVua3Rpb24gaW4gTGViZXdlc2VuIGJlcmVpdHMgZGVmaW5pZXJ0LAorCXdvYmVpIGRlciBTa2lsbCBTS19ERUZFTkRfT1RIRVIsIHNvZmVybiB2b3JoYW5kZW4sIGF1ZmdlcnVmZW4gd2lyZC4KKworQkVJU1BJRUw6CisJU2VociBiZWxpZWJ0IHNpbmQgaW4gR2lsZGVuIE5QQ3MsIGRpZSBkZW4gQmVzY2h3b2VyZXIgYmVnbGVpdGVuIHVuZAorCXZlcnRlaWRpZ2VuLCB6LkIuIGJlc2Nod29yZW5lIERhZW1vbmVuOgorCSAgaW5oZXJpdCAic3RkL25wYyI7CisJICBpbmNsdWRlIDxwcm9wZXJ0aWVzLmg+CisJICBvYmplY3Qgb3duZXI7CisJICB2b2lkIGNyZWF0ZSgpCisJICB7IDo6Y3JlYXRlKCk7CisJICAgIFNldFByb3AoUF9OQU1FLCJEYWVtb24iKTsKKwkgICAgLi4uCisJICB9CisJLy8gbmFjaCBDbG9uZW4gZGVzIERhZW1vbnMgZm9sZ2VuZGUgRnVua3Rpb24gbWl0IEJlc2Nod29lcmVyIGFscworCS8vIFBhcmFtZXRlciBhdWZydWZlbgorCSAgSWRlbnRpZnkob2JqZWN0IGNhc3RlcikKKwkgIHsgaWYoIW9iamVjdHAoY2FzdGVyKSkKKwkgICAgICBjYWxsX291dCgjJ3JlbW92ZSwwKTsKKwkgICAgb3duZXI9Y2FzdGVyOworCSAgICBvd25lci0+QWRkRGVmZW5kZXIodGhpc19vYmplY3QoKSk7CisJICB9CisJLy8gZGVyIERhZW1vbiB3ZWhydCBqZWRlbiBBbmdyaWZmIG1pdCBGZXVlciB2b2xsIGFiLCBtYW4gbXVzcyB6dWVyc3QKKwkvLyBkZW4gVmVydGVpZGlnZXIgdW1icmluZ2VuLCB1bSBkZW4gQmVzY2h3b2VyZXIgdG9ldGVuIHp1IGtvZW5uZW4KKwkgIG1peGVkIERlZmVuZE90aGVyKGludCBkYW0sbWl4ZWQgZGFtX3R5cGUsbWl4ZWQgc3BlbGwsb2JqZWN0IGVuZW15KQorCSAgeyBpZihzaXplb2YoZGFtX3R5cGUpJiZtZW1iZXJfYXJyYXkoRFRfRklSRSxkYW1fdHlwZSkhPS0xKQorCSAgICAgIGRhbT0wOworCSAgICByZXR1cm4oe2RhbSxkYW1fdHlwZSxzcGVsbH0pOworCSAgfQorCVNvbGwgZGVyIERhZW1vbiBzaWNoIGF1Y2ggaW4gZWluIFRlYW0gZWlub3JkbmVuLCBpbiB3ZWxjaGVtIHNpY2ggZGVyCisJQmVzY2h3b2VyZXIgZXZlbnR1ZWxsIGJlZmluZGV0LCBzbyBpc3QgenVzYWV0emxpY2ggQXNzb2NNZW1iZXIoKSBpbgorCWRpZXNlbSBCZXNjaHdvZXJlciBhdWZ6dXJ1ZmVuLCB3b2JlaSBkZXIgRGFlbW9uIGFscyBQYXJhbWV0ZXIKKwl1ZWJlcmdlYmVuIHdpcmQuCisKK1NJRUhFIEFVQ0g6CisJQWRkRGVmZW5kZXIoKSwgUmVtb3ZlRGVmZW5kZXIoKSwgSW5mb3JtRGVmZW5kKCksIEtpbGwoKSwgSXNFbmVteSgpLAorCVBfREVGRU5ERVJTLCAvc3RkL2xpdmluZy9jb21iYXQuYywgL3N5cy9uZXdfc2tpbGxzLmgKKworLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorTGFzdCBtb2RpZmllZDogRnJpIEZlYiAyNSAxNDo0NTowMCAyMDAwIGJ5IFBhcmFjZWxzdXMKZGlmZiAtLWdpdCBhL2RvYy9sZnVuL0RlZmVuZF9ic3AgYi9kb2MvbGZ1bi9EZWZlbmRfYnNwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjA2NDU4YTUKLS0tIC9kZXYvbnVsbAorKysgYi9kb2MvbGZ1bi9EZWZlbmRfYnNwCkBAIC0wLDAgKzEsMTM3IEBACitEZWZlbmQoKSAtIEJFSVNQSUVMRQorCitGVU5LVElPTjoKKyAgICAgdmFyYXJncyBpbnQgRGVmZW5kKGludCBkYW0sIG1peGVkIGRhbV90eXBlLCBtaXhlZCBzcGVsbCwgb2JqZWN0IGVuZW15KQorCitCRU1FUktVTkdFTjoKKyAgICAgRGllIGhpZXIgYXVmZ2VmdWVocnRlbiBLb21wbGV4YmVpc3BpZWxlIHNpbmQgenVtIFZlcnN0YWVuZG5pcyBnZWRhY2h0LgorCitCRUlTUElFTEU6CisgIDEpIEVpbiBvcmRpbmFlcmVyIEJpc3MgaW5zIEJlaW4uCisgICAgIHRoaXNfcGxheWVyKCktPkRlZmVuZChyYW5kb20oNTAwKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICh7RFRfUElFUkNFLCBEVF9SSVB9KSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIDAsCisgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzX29iamVjdCgpKTsKKworICAyKSBFaW4gQmlzcyBpbnMgQmVpbiwgbWl0IGRlciBIb3NlIGFscyAyMDAlaWdlIFJ1ZXN0dW5nIHVuZCBSZXN0IG1pdCAxMDAlLgorICAgICB0aGlzX3BsYXllcigpLT5EZWZlbmQocmFuZG9tKDUwMCksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAoe0RUX1BJRVJDRSwgRFRfUklQfSksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAoW1NQX1BIWVNJQ0FMX0FUVEFDSzogMSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU1BfUkVEVUNFX0FSTU9VUjogICAoW0FUX1RST1VTRVJTOiAyMDBdKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgXSksCisgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzX29iamVjdCgpKTsKKworICAzKSBEZXIgQmlzcywgd2VubiBlaW4gVGllciBpbiBkaWUgSG9zZSBnZWtyb2NoZW4gaXN0IHVuZCBkaWVzZXIgb2huZQorICAgICBUcmVmZmVybWVsZHVuZyB1bmQgcGh5c2lzY2hlbiBSdWVzdHVuZ3NzY2h1dHogZHVyY2hnZWh0LgorICAgICB0aGlzX3BsYXllcigpLT5EZWZlbmQocmFuZG9tKDUwMCksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAoe0RUX1BJRVJDRSwgRFRfUklQfSksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAoW1NQX1BIWVNJQ0FMX0FUVEFDSzogMF0pLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpc19vYmplY3QoKSk7CisKKyAgNCkgU3BlbGwtUGFyYW1ldGVyCisgICAgIC8vIEJlaXNwaWVsIGZ1ZXIgZWluZW4gU3BlbGwsIGRlciBudXIgdm9tIEhlbG0gbm9ybWFsIHVuZCB2b24gZWluZW0KKyAgICAgLy8gQW11bGV0dCBtaXQgMTE1JSBhdWZnZWhhbHRlbiB3aXJkLCBhbGxlIGFuZGVyZW4gKGFuZ2ViZW5lbmVuKQorICAgICAvLyBSdWVzdHVuZ2VuIGhhYmVuIDAlIFNjaHV0endpcmt1bmcuCisgICAgIC8vIE1pdCBBdXNnYWJlIGVpZ2VuZXIgTWVsZHVuZ2VuOiBiZWdpbm5lbmQgbWl0IC0xLCBkYSBkZXIgdmVydXJzYWNodGUKKyAgICAgLy8gU2NoYWRlbnN3ZXJ0IG1pbmltYWwgMCB3aXJkIChmdWVycyBFcnNldHplbjogRmVpbmQ6IEBXRXgyLAorICAgICAvLyBTcGllbGVyOiBXRXgxKTsgbWF4aW1hbCB3aXJkIGVyIChFbXBmaW5kbGljaGtlaXRlbiBqZXR6dCBtYWwgYXVzc2VuCisgICAgIC8vIHZvcikgNDkgKDQ5OS8xMCA9IDQ5KSwgbmljaHQgNDk5ISEhCisgICAgIHRoaXNfcGxheWVyKCktPkRlZmVuZCgKKyAgICAgICByYW5kb20oNTAwKSwKKyAgICAgICAoe0RUX1BJRVJDRSwgRFRfQUlSfSksCisgICAgICAgKFtTUF9QSFlTSUNBTF9BVFRBQ0s6IDEsIC8vIHdlZ2VuIERUX1BJRVJDRQorICAgICAgICAgU1BfUkVEVUNFX0FSTU9VUjogICAoW0FUX0FSTU9VUjogICAwLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEFUX0hFTE1FVDogMTAwLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEFUX1JJTkc6ICAgICAwLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEFUX0dMT1ZFOiAgICAwLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEFUX0NMT0FLOiAgICAwLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEFUX0JPT1Q6ICAgICAwLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEFUX1RST1VTRVJTOiAwLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEFUX1NISUVMRDogICAwLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEFUX0FNVUxFVDogMTE1LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEFUX01JU0M6ICAgICAwLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEFUX0JFTFQ6ICAgICAwLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEFUX1FVSVZFUjogICAwXSkKKyAgICAgICAgIFNQX1NIT1dfREFNQUdFOgorICAgICAgICAgICAgICAgKHsoey0xLCJAV0VSMiBzY2hyYW1tdCBEaWNoIG1pdCBlaW5lbSBkdXJjaGJvaHJlbmRlbiBCbGljay4iLAorICAgICAgICAgICAgICAgICAgICAgICJEdSBzY2hyYW1tc3QgQFdFTjEgbWl0IGVpbmVtIGR1cmNoYm9ocmVuZGVuIEJsaWNrLiIsCisgICAgICAgICAgICAgICAgICAgICAgIkBXRVIyIHNjaHJhbW10IEBXRU4xIG1pdCBlaW5lbSBkdXJjaGJvaHJlbmRlbiBCbGljay4iCisgICAgICAgICAgICAgICAgIH0pLAorICAgICAgICAgICAgICAgICAoezUsIkRlciBkdXJjaGJvaHJlbmRlIEJsaWNrIHZvbiBAV0VNMiB0cmlmZnQgRGljaC4iLAorICAgICAgICAgICAgICAgICAgICAgIkRlaW4gZHVyY2hib2hyZW5kZXIgQmxpY2sgdHJpZmZ0IEBXRU4xLiIsCisgICAgICAgICAgICAgICAgICAgICAiRGVyIGR1cmNoYm9ocmVuZGUgQmxpY2sgdm9uIEBXRU0yIHRyaWZmdCBAV0VOMS4iCisgICAgICAgICAgICAgICAgIH0pLAorICAgICAgICAgICAgICAgICAoezIwLCJAV0VTU0VOMiBzdGVjaGVuZGVyIEJsaWNrIGR1cmNoYm9ocnQgRGljaC4iLAorICAgICAgICAgICAgICAgICAgICAgICJEZWluIHN0ZWNoZW5kZXIgQmxpY2sgZHVyY2hib2hydCBAV0VOMS4iLAorICAgICAgICAgICAgICAgICAgICAgICJAV0VTU0VOMiBzdGVjaGVuZGVyIEJsaWNrIGR1cmNoYm9ocnQgQFdFTjEuIgorICAgICAgICAgICAgICAgfSl9KQorICAgICAgIF0pLAorICAgICAgIHRoaXNfb2JqZWN0KCkpOworCisgICAgIC8vIEV0d2FzIGdlc2NoaWNrdGVyIGdlaHQgZGFzIEdhbnplLCB3ZW5uIHdpciBlaW5mYWNoIGF1cyBkZXIgTXVkbGliCisgICAgIC8vIGFsbGUgZXhpc3RpZXJlbmRlbiBSdWVzdHVuZ2VuIGluIGVpbiBNYXBwaW5nIHBhY2tlbiB1bmQgZGllc2UKKyAgICAgLy8gbnVsbGVuIChkYW1pdCBzaW5kIHdpciBhdWNoIGdlZ2VuIG5ldWUgUnVlc3R1bmdzdHlwZW4gc2ljaGVyKToKKyAgICAgbWFwcGluZyBhbWFwID0gbWFwX2luZGljZXMoVkFMSURfQVJNT1VSX0NMQVNTLCMnISk7CisgICAgIGFtYXBbQVRfSEVMTUVUXT0xMDA7CisgICAgIGFtYXBbQVRfQU1VTEVUXT0xMTU7CisKKyAgICAgdGhpc19wbGF5ZXIoKS0+RGVmZW5kKHJhbmRvbSg1MDApLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgKHtEVF9QSUVSQ0UsIERUX0FJUn0pLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgKFtTUF9QSFlTSUNBTF9BVFRBQ0s6IDEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNQX1JFRFVDRV9BUk1PVVI6IGFtYXAsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNQX1NIT1dfREFNQUdFOiAoeyAuLi4gKHNpZWhlIG9iZW4pCisKKyAgNSkgRGVyIEJpc3Mgdm9uIHdlaXRlciBvYmVuIG1pdCBNZWxkdW5nLgorICAgICAvLyBFaW5lIE1lbGR1bmcsIGRpZSBudXIgYXVzZ2VnZWJlbiB3aXJkLCB3ZW5uIGRlciBCaXNzIGF1Y2ggbWluZGVzdGVucworICAgICAvLyBlaW5lbiBMUCBhYnppZWh0LgorICAgICB0aGlzX3BsYXllcigpLT5EZWZlbmQocmFuZG9tKDUwMCksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAoe0RUX1BJRVJDRSwgRFRfUklQfSksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAoW1NQX1BIWVNJQ0FMX0FUVEFDSzogMSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU1BfUkVEVUNFX0FSTU9VUjogICAoW0FUX1RST1VTRVJTOiAyMDBdKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU1BfU0hPV19EQU1BR0U6ICh7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHsxLCJAV0VSMiBiZWlzc3QgRGljaCBpbnMgQmVpbiEiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiRHUgYmVpc3N0IEBXRU4xIGlucyBCZWluISIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJAV0VSMiBiZWlzc3QgQFdFTjEgaW5zIEJlaW4hIgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KSAgICAgICAgICAgfSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIF0pLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpc19vYmplY3QoKSk7CisKKyAgNikgRGVmZW5kRnVuYygpIHVuZCBEZWZlbmQoKSBpbiBlaW5lbSBPYmpla3QKKyAgICAgNmEpCisgICAgIC8vIGVpbmUgTHVmdGFuZ3JpZmZlIHJlZmxla3RpZXJlbmRlIFJ1ZXN0dW5nOgorICAgICBpbnQgRGVmZW5kRnVuYyhzdHJpbmcgKmR0eXAsIG1peGVkIHNwZWxsLCBvYmplY3QgZW5lbXkpIHsKKyAgICAgICBpZihtZW1iZXIoZHR5cCwgRFRfQUlSKT49MCAmJiAhc3BlbGxbU1BfUkVDVVJTSVZFXSkKKyAgICAgICAgIGVuZW15LT5EZWZlbmQocmFuZG9tKDIwMCksCisgICAgICAgICAgICAgICAgICAgICAgICh7RFRfQUlSfSksCisgICAgICAgICAgICAgICAgICAgICAgIChbU1BfUkVDVVJTSVZFOiAxLAorICAgICAgICAgICAgICAgICAgICAgICAgIFNQX1NIT1dfREFNQUdFOgorICAgICAgICAgICAgICAgICAgICAgICAgICh7IkVpbiBMdWZ0d2lyYmVsIGVyZmFzc3QgYXVjaCBEaWNoLiIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAiRGVpbmUgUnVlc3R1bmcgd2lyYmVsdCBAV0VOMSBoZXJ1bS4iLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIkBXRVNTRU4yIFJ1ZXN0dW5nIHdpcmJlbHQgQFdFTjEgaGVydW0uIgorICAgICAgICAgICAgICAgICAgICAgICAgICB9KQorICAgICAgICAgICAgICAgICAgICAgICBdKSwKKyAgICAgICAgICAgICAgICAgICAgICAgUXVlcnlQcm9wKFBfV09STikpOworCisgICAgICAgcmV0dXJuIDA7IC8vIC0+IEluIGRpZXNlbSBGYWxsIGdpYnRzIGtlaW5lbiBSdWVzdHVuZ3Nib251cyEKKyAgICAgfQorCisgICAgIDZiKQorICAgICAvLyBFaW5lIE5VUiBSRUlORSBMdWZ0YW5ncmlmZmUgcmVmbGVrdGllcmVuZGUgUnVlc3R1bmc6CisgICAgIGludCBEZWZlbmRGdW5jKHN0cmluZyAqZHR5cCwgbWl4ZWQgc3BlbGwsIG9iamVjdCBlbmVteSkgeworICAgICAgIGlmKCFzaXplb2YoZHR5cC0oe0RUX0FJUn0pKSAmJiAhc3BlbGxbU1BfUkVDVVJTSVZFXSkKKyAgICAgICAgIC4uLgorCitTSUVIRSBBVUNIOgorICAgICBBbmdyaWZmOiAgIEF0dGFjayhMKSwgUF9OT19BVFRBQ0ssIEluc2VydEVuZW15KEwpCisgICAgIFNjaGFkZW46ICAgUF9FTkFCTEVfSU5fQVRUQUNLX09VVCwgUF9MQVNUX01PVkUsIGRvX2RhbWFnZShMKSwKKyAgICAgICAgICAgICAgICByZWR1Y2VfaGl0X3BvaW50cyhMKSwgcmVkdWNlX3NwZWxsX3BvaW50cyhMKQorICAgICBTY2h1dHo6ICAgIFBfREVGRU5ERVJTLCBJbmZvcm1EZWZlbmQoTCksIERlZmVuZE90aGVyKEwpLAorICAgICAgICAgICAgICAgIFBfQVJNT1VSUywgUF9BQywgUF9ERUZFTkRfRlVOQywgUXVlcnlEZWZlbmQoTCksCisgICAgICAgICAgICAgICAgUF9CT0RZLCBBX0RFWCwgRGVmZW5kKEwpCisgICAgIERhdGVuOiAgICAgUF9MQVNUX0NPTUJBVF9USU1FLCBQX0xBU1RfWFAsIFBfTEFTVF9EQU1BR0UsCisgICAgICAgICAgICAgICAgUF9MQVNUX0RBTVRZUEVTLCBQX0xBU1RfREFNVElNRQorICAgICBSZXNpc3Rlbno6IFBfUkVTSVNUQU5DRV9TVFJFTkdUSFMsIENoZWNrUmVzaXN0YW5jZShMKQorICAgICBTb25zdGlnZXM6IENoZWNrU2Vuc2l0aXZlQXR0YWNrKEwpLCBVc2VTa2lsbChMKSwKKyAgICAgICAgICAgICAgICBJbnRlcm5hbE1vZGlmeURlZmVuZChMKQorCisyNS4gTWFpIDIwMTEgR2FieWxvbgpkaWZmIC0tZ2l0IGEvZG9jL2xmdW4vRGVsZXRlU3BlbGxGYXRpZ3VlIGIvZG9jL2xmdW4vRGVsZXRlU3BlbGxGYXRpZ3VlCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmMwMDQ5ZDkKLS0tIC9kZXYvbnVsbAorKysgYi9kb2MvbGZ1bi9EZWxldGVTcGVsbEZhdGlndWUKQEAgLTAsMCArMSwzNyBAQAorRGVsZXRlU3BlbGxGYXRpZ3VlCisKK0ZVTktUSU9OOgorICAgIHB1YmxpYyB2b2lkIERlbGV0ZVNwZWxsRmF0aWd1ZShzdHJpbmcga2V5KQorCitERUZJTklFUlQgSU46CisgICAgL3N0ZC9saXZpbmcvc2tpbGxzLmMKKyAgICAvc3RkL3BsYXllci9za2lsbHMuYworICAgIC9zeXMvbGl2aW5nL3NraWxscy5oCisKK0FSR1VNRU5URToKKyAgICBzdHJpbmcga2V5ICA6IEVpbmRldXRpZ2VyIE5hbWUgZGVzIFNwcnVjaGVzLCBlaW5lciBHcnVwcGUgdm9uIFNwcnVlY2hlbgorICAgICAgICAgICAgICAgICAgb2RlciAwIGZ1ZXIgZGllIGdsb2JhbGUgU3BydWNoZXJtdWVkdW5nLgorCitCRVNDSFJFSUJVTkc6CisgICAgRGllc2UgRnVua3Rpb24gZGllbnQgenVtIExvZXNjaGVuIHZvbiBpbmRpdmlkdWVsbGVuIFNwcnVjaGVybXVlZHVuZ2VuCisgICAgKFNwZWxsZmF0aWd1ZSwgU3BydWNoc3BlcnJlbikuCisKKyAgICBJc3QgPGtleT4gMCwgd2lyZCBkaWUgZ2xvYmFsZSBTcHJ1Y2hzcGVycmUgZ2Vsb2VzY2h0IChpZGVudGlzY2ggenUgZGVyCisgICAgUHJvcGVydHkgUF9ORVhUX1NQRUxMX1RJTUUpLCBhbmRlcmVuZmFsbHMgZGllIHVudGVyIDxrZXk+IGdlc3BlaWNoZXJ0ZQorICAgIFNwcnVjaGVybXVlZHVuZy4KKyAgICBMb2VzY2h0IG1hbiBlaW5lbiBFaW50cmFnIDAgaXN0IGRhcyBFcmdlYm5pcyBkaWVzZXIgRnVua3Rpb24gaWRlbnRpc2NoIHp1bQorICAgIExvZXNjaGVuL051bGxlbiB2b24gUF9ORVhUX1NQRUxMX1RJTUUuCisKK0JFTUVSS1VOR0VOOgorICAgIFNwcnVjaHNwZXJyZW4gKGluc2IuIGZyZW1kZSkgZHVlcmZlbiBuaWNodCBvaG5lIHdlaXRlcmVzIGdlbG9lc2NodCBvZGVyCisgICAgZ2VhZW5kZXJ0IHdlcmRlbi4gRGllc2VzIGJlZGFyZiBncnVuZHNhZXR6bGljaCBkZXIgR2VuZWhtaWd1bmcgZHVyY2ggZGllCisgICAgR2lsZGVuYmFsYW5jZSEKKworU0lFSEUgQVVDSDoKKyAgICBTZXRTcGVsbEZhdGlndWUoTCksIENoZWNrU3BlbGxGYXRpZ3VlKEwpCisgICAgUF9ORVhUX1NQRUxMX1RJTUUKKyAgICBzcHJ1Y2hlcm11ZWR1bmcKKworLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorMjcuMDMuMjAxMCwgWmVzc3RyYQorCmRpZmYgLS1naXQgYS9kb2MvbGZ1bi9EZWxldGVUaW1lZEF0dHJNb2RpZmllciBiL2RvYy9sZnVuL0RlbGV0ZVRpbWVkQXR0ck1vZGlmaWVyCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmU1MWI2YzkKLS0tIC9kZXYvbnVsbAorKysgYi9kb2MvbGZ1bi9EZWxldGVUaW1lZEF0dHJNb2RpZmllcgpAQCAtMCwwICsxLDMwIEBACitEZWxldGVUaW1lZEF0dHJNb2RpZmllcigpCitGVU5LVElPTjoKKyAgICAgaW50IERlbGV0ZVRpbWVkQXR0ck1vZGlmaWVyKHN0cmluZyBrZXkpCisKK0RFRklOSUVSVCBJTjoKKyAgICAgL3N0ZC9saXZpbmcvYXR0cmlidXRlcy5jCisKK0FSR1VNRU5URToKKyAgICAga2V5CS0JYXVzIFBfVElNRURfQVRUUl9NT0QgenUgbG9lc2NoZW5kZXIgRWludHJhZworCitCRVNDSFJFSUJVTkc6CisgICAgIERlciB6dSBrZXkgZ2Vob2VyZW5kZSBFaW50cmFnIGluIFBfVElNRURfQVRUUl9NT0Qgd2lyZCBnZWxvZXNjaHQgdW5kCisgICAgIHVwZGF0ZV9tYXhfc3BfYW5kX2hwIGF1c2dlZvxocnQuDQorDQorUlVlQ0tHQUJFV0VSVDoNCisgICAgIFRBVFRSX0lOVkFMSURfQVJHUyAgICAgIC0gICAgIEltIEZhbGxlIGVpbmVzIGZlaGxlbmRlbiBrZXktQXJndW1lbnRzIAorICAgICBUQVRUUl9OT19TVUNIX01PRElGSUVSICAtICAgICBGYWxscyBkZXIgTW9kaWZpZXIgbWl0IGRpZXNlbSBLZXkgbmljaHQKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZXhpc3RpZXJ0DQorICAgICBUQVRUUl9PSyAgICAgICAgICAgICAgICAtICAgICBJbSBFcmZvbGdzZmFsbA0KKyAgICAgDQorICAgICBEaWUgUnVlY2tnYWJld2VydGUgc2luZCBpbiAvc3lzL2xpdmluZy9hdHRyaWJ1dGVzLmggZGVmaW5pZXJ0Lg0KKyAgICAKK1NJRUhFIEFVQ0g6DQorCVF1ZXJ5QXR0cmlidXRlKCksIFF1ZXJ5UmVhbEF0dHJpYnV0ZSgpLCBRdWVyeUF0dHJpYnV0ZU9mZnNldCgpLA0KKwlTZXRBdHRyaWJ1dGUoKSwgU2V0UmVhbEF0dHJpYnV0ZSgpLCBVcGRhdGVBdHRyaWJ1dGVzKCksDQorCVNldFRpbWVkQXR0ck1vZGlmaWVyKCksIFF1ZXJ5VGltZWRBdHRyTW9kaWZpZXIoKSwgDQorCVBfQVRUUklCVVRFUywgUF9BVFRSSUJVVEVTX09GRlNFVFMsIFBfVElNRURfQVRUUl9NT0QsDQorCVBfWF9BVFRSX01PRCwgUF9NX0FUVFJfTU9ELCAvc3RkL2xpdmluZy9hdHRyaWJ1dGVzLmMNCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQorTGFzdCBtb2RpZmllZDogVHVlIEp1bCAyNyAyMDowMDoyMCAyMDA0IGJ5IE11YWRpYg0KZGlmZiAtLWdpdCBhL2RvYy9sZnVuL0Rpc2NvdmVyRG9vciBiL2RvYy9sZnVuL0Rpc2NvdmVyRG9vcgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44ODMxMGQ1Ci0tLSAvZGV2L251bGwKKysrIGIvZG9jL2xmdW4vRGlzY292ZXJEb29yCkBAIC0wLDAgKzEsMzEgQEAKK0Rpc2NvdmVyRG9vcigpCisKK0ZVTktUSU9OOgorICAgIHZhcmFyZ3MgaW50IERpc2NvdmVyRG9vcihzdHJpbmcgZG5hbWUpCisKK0FSR1VNRU5URToKKyAgICBkbmFtZTogTmFtZSBkZXMgUmF1bWVzLCBpbiBkZW0gZGVyIFNlaGVyIGRhcyBTZWhlcnRvciBrZW5uZW5sZXJuZW4gc29sbC4KKyAgICAgICAgICAgRGVmYXVsdDogRGllIFVtZ2VidW5nIGRlcyBTZWhlcnMuCisKK0JFU0NIUkVJQlVORzoKKyAgICBOYWNoZGVtIGRpZXNlIEZ1bmt0aW9uIGF1ZmdlcnVmZW4gd3VyZGUsIGthbm4gZGVyIFNlaGVyICh0aGlzX3BsYXllcigpKQorICAgIGRhcyBUb3IgaW4gZGVtIGFuZ2VnZWJlbmVuIFJhdW0gaW1tZXIgdmVyd2VuZGVuLgorCitSVUVDS0dBQkVXRVJUOgorICAgIDEsIGZhbGxzIGRlciBTZWhlciBlaW4gTkVVRVMgVG9yIGtlbm5lbmdlbGVybnQgaGF0CisgICAgMCwgZmFsbHMgZXIgZGFzIFRvciBzY2hvbiBrYW5udGUgb2RlciBrZWluIFNlaGVyIHdhcgorCitCRU1FUktVTkdFTjoKKyAgICBWb24gZWluZW0gU2VoZXJ0b3Igd2lyZCBkaWVzZSBGdW5rdGlvbiBhdXRvbWF0aXNjaCBiZWltIEJldHJldGVuIGRlcworICAgIHVtZ2ViZW5kZW4gUmF1bWVzIGF1ZmdlcnVmZW4sIGZhbGxzIFBfU0VFUkRPT1JfRElTQ09WRVIgZ2VzZXR6dCBpc3QuIFdlbm4KKyAgICBlaW4gVG9yIGF1ZiBkaWVzZSBBcnQgbmljaHQgZW50ZGVja3Qgd2VyZGVuIHNvbGwsIHNvIGRhcmYKKyAgICBQX1NFRVJET09SX0RJU0NPVkVSIG5pY2h0IGdlc2V0enQgc2VpbiB1bmQgbXVzcyBEaXNjb3ZlckRvb3IoKSBzZXBhcmF0LAorICAgIHouQi4gdm9uIGVpbmVtIFF1ZXN0b2JqZWt0LCBhdWZnZXJ1ZmVuIHdlcmRlbi4KKyAgICBEaWVzZSBGdW5rdGlvbiB3aXJkIHZvbiAvZC9zZWhlci9wb3J0YWxlL3NlaGVydG9ybWFzdGVyIGRlZmluaWVydC4KKworQkVJU1BJRUxFOgorICAgIHdyaXRlKCJEZXIgWmF1YmVyZXIgc2FndDogSW0gTmljaHRzIHdpcnN0IER1IGVpbiB3ZWl0ZXJlcyBUb3IgZmluZGVuIVxuIik7CisgICAgIi9kL3NlaGVyL3BvcnRhbGUvc2VoZXJ0b3JtYXN0ZXIiLT5EaXNjb3ZlckRvb3IoIi9yb29tL3ZvaWQiKTsKKworU0lFSEUgQVVDSDoKKyAgICBEb29ySXNLbm93biwgU2hvd0Rvb3JzLCBUZWxlcG9ydCwgR2V0RG9vcnNNYXBwaW5nCmRpZmYgLS1naXQgYS9kb2MvbGZ1bi9EaXN0cmlidXRlRXhwIGIvZG9jL2xmdW4vRGlzdHJpYnV0ZUV4cApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5mMDJmNjlhCi0tLSAvZGV2L251bGwKKysrIGIvZG9jL2xmdW4vRGlzdHJpYnV0ZUV4cApAQCAtMCwwICsxLDI0IEBACitEaXN0cmlidXRlRXhwKCkNCitGVU5LVElPTjoNCisgICAgIHByaXZhdGUgc3RhdGljIHZvaWQgRGlzdHJpYnV0ZUV4cChvYmplY3QgZW5lbXksIGludCBleHBfdG9fZ2l2ZSkNCisNCitERUZJTklFUlQgSU46DQorICAgICAvc3RkL2xpdmluZy9saWZlLmMNCisNCitBUkdVTUVOVEU6DQorICAgICBvYmplY3QgZW5lbXkgICAgIC0gdG9ldGVuZGVyIEZlaW5kDQorICAgICBpbnQgZXhwX3RvX2dpdmUgIC0genUgdmVydGVpbGVuZGUgWFAgKD09IFBfWFAvMTAwKQ0KKw0KK0JFU0NIUkVJQlVORzoNCisgICAgIERhcyBzdGVyYmVuZGUgV2VzZW4gdmVydGVpbHQgc2VpbmUgWFAgYW4gc2VpbmUgRmVpbmRlLg0KKw0KKyAgICAgRGFiZWkgYmVrb21tdCBqZWRlciBHZWduZXIgc2VpbmVuIEFudGVpbCAoYWJo5G5naWcgdm9uIDUwJSB2b24gc2VpbmVtDQorICAgICBnZW1hY2h0ZW4gU2NoYWRlbikgdW5kIGVpbmVuIFRlYW1hbnRlaWwgKGRpZSBhbmRlcmVuIDUwJSD8YmVyIGRhcw0KKyAgICAgZ2VzYW10ZSBUZWFtIGFkZGllcnQgdW5kIGR1cmNoIGRpZSBUZWFtYW56YWhsIGdldGVpbHQpLg0KKw0KK1NJRUhFIEFVQ0g6DQorICAgICBGdW5rdGlvbmVuOiAgQWRkRXhwKCkNCisgICAgIFByb3BlcnRpZXM6ICBQX1hQDQorICAgICBTb25zdGlnZXM6ICAgdGVhbWthbXBmDQorDQorMTQuRmViIDIwMDcgR2xvaW5zb24KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9kb2MvbGZ1bi9Eb0RlY2F5IGIvZG9jL2xmdW4vRG9EZWNheQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44NWNmNTQxCi0tLSAvZGV2L251bGwKKysrIGIvZG9jL2xmdW4vRG9EZWNheQpAQCAtMCwwICsxLDQ0IEBACitEb0RlY2F5KCkKKworRlVOS1RJT046CisgICAgICBwdWJsaWMgIGludCAgICBEb0RlY2F5KGludCBzaWxlbnQpIAorCitERUZJTklFUlQgSU46CisgICAgICAvc3RkL3VuaXQuYworCitBUkdVTUVOVEU6CisgICAgIHNpbGVudCAoaW50KQorICAgICAgIEZhbGxzICE9IDAsIGVyZm9sZ3QgYmVpbSBaZXJmYWxsIGtlaW5lIE1lbGR1bmcsIGQuaC4gZG9EZWNheU1lc3NhYWdlKCkKKyAgICAgICB3aXJkIG5pY2h0IGdlcnVmZW4uCisKK1JVZUNLR0FCRVdFUlQ6CisgICAgIERpZSBGdW5rdGlvbiBnaWJ0IGRpZSBuYWNoIGRlbSBaZXJmYWxsIG5vY2ggdWVicmlnIGdlYmxpZWJlbmUgTWVuZ2UKKyAgICAgenVydWVjayAoaW50KS4KKworQkVTQ0hSRUlCVU5HOgorICAgICBEaWVzZSBGdW5rdGlvbiB3aXJkIGluIENsb25lcyB2b24gVW5pdG9iamVrdGVuIGF1cyBkZXIgQmx1ZXByaW50IGdlcnVmZW4sCisgICAgIHdlbm4gZWluIFplcmZhbGxzaW50ZXJ2YWxsIGFiZ2VsYXVmZW4gaXN0IChuYXR1ZXJsaWNoIG51ciwgd2VubiBpbiBkZXIgQlAKKyAgICAgZGVyIFplcmZhbGwga29uZmlndXJpZXJ0IGlzdCkuCisgICAgIERpZSBGdW5rdGlvbiBwcnVlZnQgbm9ybWFsZXJ3ZWlzZSB2aWEgUF9VTklUX0RFQ0FZX0ZMQUdTLCBvYiBkZXIgWmVyZmFsbAorICAgICBzdGF0dGZpbmRlbiBzb2xsLCBiZXN0aW1tdCBhdXMgUF9VTklUX0RFQ0FZX1FVT1RBIGRpZSB6dSB6ZXJmYWxsZW5kZQorICAgICBNZW5nZSwgcnVmdCBEb0RlY2F5TWVzc2FnZSgpIHVuZCByZWR1emllcnQgUF9BTU9VTlQuCisgICAgIAorICAgICBTaWUga2FubiBhdWNoIHZvbiBIYW5kIGdlcnVmZW4gd2VyZGVuLCB1bSBlaW5lbiBaZXJmYWxsIGF1c3p1bG9lc2VuLCBhdWNoCisgICAgIHdlbm4gbWlyIGdlcmFkZSBuaWNodCBlaW5mYWVsbHQsIGluIHdlbGNoZW4gU2l0dWF0aW9uZW4gZGFzIHNpbm52b2xsCisgICAgIHdhZXJlICh2aWVsbGVpY2h0IGFscyBTcHJ1Y2htaXNzZXJmb2xnLiAqZyopCisKK0JFTUVSS1VOR0VOOgorICAgICBXZW5uIG1hbiBlaW5lbiBhbmRlcmVuIFplcmZhbGxzbWVjaGFuaXNtdXMgaGFiZW4sIHdpbGwgbXVzcyBtYW4gZGllc2UKKyAgICAgRnVua3Rpb24gd29obCB1ZWJlcnNjaHJlaWJlbi4gSW4gZmFzdCBhbGxlbiBGYWVsbGVuIHNvbGx0ZSBkaWVzIGplZG9jaAorICAgICB1bm5vZXRpZyBzZWluLiBIYXQgamVtYW5kIGRhcyBWZXJsYW5nZW4sIGRpZXNlIEZ1bmt0aW9uIHp1CisgICAgIHVlYmVyc2NocmVpYmVuLCBpc3QgdmllbGxlaWNodCB2b3JoZXIgZWluZSBEaXNrdXNzaW9uIG1pdCBkZW0gTXVkbGliLUVNCisgICAgIGFuZ2VicmFjaHQuCisKK1NJRUhFIEFVQ0g6CisgICAgIHVuaXQKKyAgICAgUF9VTklUX0RFQ0FZX0lOVEVSVkFMLCBQX1VOSVRfREVDQVlfRkxBR1MsIFBfVU5JVF9ERUNBWV9RVU9UQSwKKyAgICAgUF9VTklUX0RFQ0FZX01JTgorICAgICBEb0RlY2F5TWVzc2FnZSgpCisgICAgIC9zdGQvdW5pdC5jCisKKzE0LjEwLjIwMDcsIFplc3N0cmEKZGlmZiAtLWdpdCBhL2RvYy9sZnVuL0RvRGVjYXlNZXNzYWdlIGIvZG9jL2xmdW4vRG9EZWNheU1lc3NhZ2UKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZmMzOTMwOQotLS0gL2Rldi9udWxsCisrKyBiL2RvYy9sZnVuL0RvRGVjYXlNZXNzYWdlCkBAIC0wLDAgKzEsMzQgQEAKK0RvRGVjYXlNZXNzYWdlKCkKKworRlVOS1RJT046CisgICAgICBwcm90ZWN0ZWQgdm9pZCBEb0RlY2F5TWVzc2FnZShpbnQgb2xkYW1vdW50LCBpbnQgemVyZmFsbCk7CisgICAgICAKK0RFRklOSUVSVCBJTjoKKyAgICAgIC9zdGQvdW5pdC5jCisKK0FSR1VNRU5URToKKyAgICAgb2xkYW1vdW50IChpbnQpCisgICAgICAgIE1lbmdlIHZvciBkZW0gWmVyZmFsbAorICAgICB6ZXJmYWxsIChpbnQpCisgICAgICAgIGpldHp0IHplcmZhbGxlbmRlIE1lbmdlCisKK0JFU0NIUkVJQlVORzoKKyAgICAgRGllc2UgRnVua3Rpb24gd2lyZCB2b24gRG9EZWNheSgpIGdlcnVmZW4gdW5kIGdpYnQgZGllIFN0YW5kYXJkbWVsZHVuZ2VuCisgICAgIGJlaW0gWmVyZmFsbCB2b24gVW5pdG9iamVrdGVuIGF1cy4KKyAgICAgSGllcmJlaSBpc3QgYW4gZGVyIFVuaXQgbm9jaCBhbGxlcyB1bnZlcmFlbmRlcnQsIHdlbm4gZGllc2UgRnVua3Rpb24KKyAgICAgZ2VydWZlbiB3aXJkLCBkaWUgUmVkdWt0aW9uIHZvbiBQX0FNT1VOVCBlcmZvbGd0IGRpcmVrdCBpbSBBbnNjaGx1c3MuCisgICAgIERpZSBGdW5rdGlvbiB3aXJkIG5pY2h0IGdlcnVmZW4sIHdlbm4gRG9EZWNheSgpIG1pdCBzaWxlbnQhPTAgZ2VydWZlbgorICAgICB3aXJkLgorCitCRU1FUktVTkdFTjoKKyAgICAgV2lsbCBtYW4gbmljaHQgZGllIFN0YW5kYXJkemVyZmFsbHNtZWxkdW5nZW4gKHdvdm9uIGljaCBtZWlzdCBhdXNnZWhlKSwKKyAgICAga2FubiBtYW4gZGllc2UgRnVua3Rpb24gdWViZXJzY2hyZWliZW4gdW5kIGVpZ2VuZSBNZWxkdW5nZW4gZXJ6ZXVnZW4uCisKK1NJRUhFIEFVQ0g6CisgICAgIHVuaXQKKyAgICAgUF9VTklUX0RFQ0FZX0lOVEVSVkFMLCBQX1VOSVRfREVDQVlfRkxBR1MsIFBfVU5JVF9ERUNBWV9RVU9UQSwKKyAgICAgUF9VTklUX0RFQ0FZX01JTgorICAgICBEb0RlY2F5KCkKKyAgICAgL3N0ZC91bml0LmMKKworMTQuMTAuMjAwNywgWmVzc3RyYQpkaWZmIC0tZ2l0IGEvZG9jL2xmdW4vRG9VbndlYXIgYi9kb2MvbGZ1bi9Eb1Vud2VhcgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi42MzhlZGE3Ci0tLSAvZGV2L251bGwKKysrIGIvZG9jL2xmdW4vRG9VbndlYXIKQEAgLTAsMCArMSwzMyBAQAorRG9VbndlYXIoKQorCitGVU5LVElPTjoKKyAgICAgdmFyYXJncyBpbnQgRG9VbndlYXIoaW50IHNpbGVudCwgaW50IGFsbCk7CisKK0RFRklOSUVSVCBJTjoKKyAgICAgL3N0ZC9jbG90aGluZy93ZWFyLmMKKworQVJHVU1FTlRFOgorICAgICBzaWxlbnQKKyAgICAgICAgICBGYWxscyB1bmdsZWljaCAwLCBzbyB3ZXJkZW4ga2VpbmUgTWVsZHVuZ2VuIGF1c2dlZ2ViZW4uCisgICAgICAgICAgRmFsbHMgKHNpbGVudCZNX05PQ0hFQ0spIHdlcmRlbiBhdWNoIHZlcmZsdWNodGUgUnVlc3R1bmdlbgorICAgICAgICAgIGF1c2dlem9nZW4KKyAgICAgYWxsCisgICAgICAgICAgVW5nbGVpY2ggMCwgd2VubiBEb1Vud2VhcigpIGF1cyBlaW5lbSAiemllaGUgYWxsZXMgYXVzIiBoZXJhdXMKKyAgICAgICAgICBhdWZnZXJ1ZmVuIHd1cmRlLgorCitCRVNDSFJFSUJVTkc6CisgICAgIEVzIHdpcmQgdmVyc3VjaHQsIGRpZSBSdWVzdHVuZyBhdXN6dXppZWhlbi4gRGFiZWkgd2VyZGVuIGVpbmUgZXZlbnR1ZWxsCisgICAgIHZvcmhhbmRlbmUgUmVtb3ZlRnVuYygpIHVuZCBGbHVlY2hlIG1pdCBiZXJ1ZWNrc2ljaHRpZ3QuCisKK1JVZUNLR0FCRVdFUlQ6CisgICAgIDAsIHdlbm4gZGllIFJ1ZXN0dW5nIGdhciBuaWNodCBnZXRyYWdlbiB3YXIsIGFuc29uc3RlbiAxLgorCitCRU1FUktVTkdFTjoKKyAgICAgQXVjaCB3ZW5uIGVpbmUgMSB6dXJ1ZWNrZ2VnZWJlbiB3aXJkLCBtdXNzIGRhcyBuaWNodCBoZWlzc2VuLCBkYXNzIGRpZQorICAgICBSdWVzdHVuZyBlcmZvbGdyZWljaCBhdXNnZXpvZ2VuIHd1cmRlIQorCitTSUVIRSBBVUNIOgorICAgICBEb1dlYXIoKSwgUmVtb3ZlRnVuYygpLCBJbmZvcm1VbndlYXIoKSwgL3N0ZC9hcm1vdXIvY29tYmF0LmMKKworLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorTGFzdCBtb2RpZmllZDogU3VuIEp1biAyNyAyMjoyMjowMCAxOTk5IGJ5IFBhcmFjZWxzdXMKZGlmZiAtLWdpdCBhL2RvYy9sZnVuL0RvVW53aWVsZCBiL2RvYy9sZnVuL0RvVW53aWVsZApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5iZTI3YjJjCi0tLSAvZGV2L251bGwKKysrIGIvZG9jL2xmdW4vRG9VbndpZWxkCkBAIC0wLDAgKzEsMzAgQEAKK0RvVW53aWVsZCgpCisKK0ZVTktUSU9OOgorICAgICB2YXJhcmdzIGludCBEb1Vud2llbGQoaW50IHNpbGVudCk7CisKK0RFRklOSUVSVCBJTjoKKyAgICAgL3N0ZC93ZWFwb24vY29tYmF0LmMKKworQVJHVU1FTlRFOgorICAgICBzaWxlbnQKKyAgICAgICAgICBVbmdsZWljaCAwLCB3ZW5uIGRpZSBXYWZmZSBvaG5lIE1lbGR1bmdlbiB3ZWdnZXN0ZWNrdCB3ZXJkZW4gc29sbC4KKworQkVTQ0hSRUlCVU5HOgorICAgICBFcyB3aXJkIHZlcnN1Y2h0LCBkaWUgV2FmZmUgd2VnenVzdGVja2VuLgorCitSVWVDS0dBQkVXRVJUOgorICAgICAwLCB3ZW5uIGRpZSBXYWZmZSBnYXIgbmljaHQgZ2V6dWVja3Qgd2FyLCBhbnNvbnN0ZW4gMS4KKworQkVNRVJLVU5HRU46CisgICAgIEFuaGFuZCBkZXMgUnVlY2tnYWJld2VydGVzIGxhZXNzdCBzaWNoIG5pY2h0IGVyc2VoZW4sIG9iIGRpZSBXYWZmZSBzaWNoCisgICAgIHdlZ3N0ZWNrZW4gbGllc3Mgb2RlciBuaWNodCEKKworICAgICBXZW5uIGRpZSBXYWZmZSB2ZXJmbHVjaHQgaXN0IG9kZXIgKGZhbGxzIGRlZmluaWVydCkgVW53aWVsZEZ1bmMoKSAwCisgICAgIHp1cnVlY2tnaWJ0LCBsYWVzc3Qgc2llIHNpY2ggbmljaHQgd2Vnc3RlY2tlbi4KKworU0lFSEUgQVVDSDoKKyAgICAgVW53aWVsZEZ1bmMoKSwgSW5mb3JtVW53aWVsZCgpLCAvc3RkL3dlYXBvbi5jCisKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KK0xhc3QgbW9kaWZpZWQ6IFN1biBKdW4gMjcgMjI6MjQ6MDAgMTk5OSBieSBQYXJhY2Vsc3VzCmRpZmYgLS1naXQgYS9kb2MvbGZ1bi9Eb1dlYXIgYi9kb2MvbGZ1bi9Eb1dlYXIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMGQ2NGU1YQotLS0gL2Rldi9udWxsCisrKyBiL2RvYy9sZnVuL0RvV2VhcgpAQCAtMCwwICsxLDQyIEBACitEb1dlYXIoKQorCitGVU5LVElPTjoKKyAgICAgdmFyYXJncyBpbnQgRG9XZWFyKGludCBzaWxlbnQsIGludCBhbGwpOworCitERUZJTklFUlQgSU46CisgICAgIC9zdGQvYXJtb3VyL2NvbWJhdC5jCisKK0FSR1VNRU5URToKKyAgICAgc2lsZW50CisgICAgICAgICAgRmFsbHMgdW5nbGVpY2ggMCwgc28gd2VyZGVuIGtlaW5lIE1lbGR1bmdlbiBhdXNnZWdlYmVuLgorICAgICBhbGwKKyAgICAgICAgICBVbmdsZWljaCAwLCB3ZW5uIERvV2VhcigpIGF1cyBlaW5lbSAiemllaGUgYWxsZXMgYW4iIGhlcmF1cworICAgICAgICAgIGF1ZmdlcnVmZW4gd3VyZGUuCisKK0JFU0NIUkVJQlVORzoKKyAgICAgRXMgd2lyZCB2ZXJzdWNodCwgZGllIFJ1ZXN0dW5nIGFuenV6aWVoZW4uIERhYmVpIHdpcmQgZWluZSBldmVudHVlbGwKKyAgICAgdm9yaGFuZGVuZSBXZWFyRnVuYygpIG1pdCBiZXJ1ZWNrc2ljaHRpZ3QuCisKK1JVZUNLR0FCRVdFUlQ6CisgICAgIDAsIHdlbm4gbWFuIGRpZSBSdWVzdHVuZyBnYXIgbmljaHQgYmVpIHNpY2ggaGF0IG9kZXIgc2llIHNjaG9uIGFuIGhhdCwKKyAgICAgYW5zb25zdGVuIDEuCisKK0JFTUVSS1VOR0VOOgorICAgICBBdWNoIHdlbm4gZWluZSAxIHp1cnVlY2tnZWdlYmVuIHdpcmQsIG11c3MgZGFzIG5pY2h0IGhlaXNzZW4sIGRhc3MgZGllCisgICAgIFJ1ZXN0dW5nIGVyZm9sZ3JlaWNoIGFuZ2V6b2dlbiB3dXJkZSEKKworICAgICBHcnVlbmRlIGZ1ZXIgZWluIEZlaGxzY2hsYWdlbiBkZXMgQW56aWVoZW5zIGtvZW5uZW4gc2VpbjoKKyAgICAgICAgbyBNYW4gaGF0IGRpZSBSdWVzdHVuZyBuaWNodCBiZWkgc2ljaC4KKyAgICAgICAgbyBNYW4gaGF0IGRpZSBSdWVzdHVuZyBzY2hvbiBhbi4KKyAgICAgICAgbyBNYW4gaGF0IHNjaG9uIGVpbmUgUnVlc3R1bmcgZGVzIGdsZWljaGVuIFR5cHMgYW4uCisgICAgICAgIG8gRGVyIFR5cCBkZXIgUnVlc3R1bmcgb2RlciBkaWUgUnVlc3R1bmdza2xhc3NlIGlzdCBpbGxlZ2FsLgorICAgICAgICBvIEZhbGxzIGRlZmluaWVydDogV2VhckZ1bmMoKSBnYWIgMCB6dXJ1ZWNrLgorICAgICAgICBvIEZhbGxzIGVzIHNpY2ggdW0gZWluZW4gU2NoaWxkIGhhbmRlbHQ6IE1hbiBoYXQga2VpbmUgSGFuZCBtZWhyCisgICAgICAgICAgZnJlaS4KKworU0lFSEUgQVVDSDoKKyAgICAgRG9VbndlYXIoKSwgV2VhckZ1bmMoKSwgSW5mb3JtV2VhcigpLCBQX0VRVUlQX1RJTUUsIAorICAgICAvc3RkL2FybW91ci9jb21iYXQuYywgUF9VTldFQVJfTVNHLCBQX1dFQVJfTVNHCisKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KK0xhc3QgbW9kaWZpZWQ6IFN1biBKdW4gMjcgMjI6MjI6MDAgMTk5OSBieSBQYXJhY2Vsc3VzCmRpZmYgLS1naXQgYS9kb2MvbGZ1bi9Eb1dpZWxkIGIvZG9jL2xmdW4vRG9XaWVsZApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi45ZmM0MzZkCi0tLSAvZGV2L251bGwKKysrIGIvZG9jL2xmdW4vRG9XaWVsZApAQCAtMCwwICsxLDQxIEBACitEb1dpZWxkKCkKKworRlVOS1RJT046CisgICAgIHZhcmFyZ3MgaW50IERvV2llbGQoaW50IHNpbGVudCk7CisKK0RFRklOSUVSVCBJTjoKKyAgICAgL3N0ZC93ZWFwb24vY29tYmF0LmMKKworQVJHVU1FTlRFOgorICAgICBzaWxlbnQKKyAgICAgICAgICBVbmdsZWljaCAwLCB3ZW5uIGRpZSBXYWZmZSBvaG5lIE1lbGR1bmdlbiBnZXp1ZWNrdCB3ZXJkZW4gc29sbC4KKworQkVTQ0hSRUlCVU5HOgorICAgICBFcyB3aXJkIHZlcnN1Y2h0LCBkaWUgV2FmZmUgenUgenVlY2tlbi4gSGF0IG1hbiBzY2hvbiBlaW5lIFdhZmZlCisgICAgIGdlenVlY2t0LCBzbyB3aXJkIHZlcnN1Y2h0LCBkaWVzZSB3ZWd6dXN0ZWNrZW4uIEtsYXBwdCBkYXMgbmljaHQsIGthbm4KKyAgICAgZGllIFdhZmZlIG5pY2h0IGdlenVlY2t0IHdlcmRlbi4KKworUlVlQ0tHQUJFV0VSVDoKKyAgICAgMCwgd2VubiBtYW4gZGllIFdhZmZlIGdhciBuaWNodCBiZWkgc2ljaCB0cmFlZ3QsIGFuc29uc3RlbiAxLgorCitCRU1FUktVTkdFTjoKKyAgICAgQW5oYW5kIGRlcyBSdWVja2dhYmV3ZXJ0ZXMgbGFlc3N0IHNpY2ggbmljaHQgZW50c2NoZWlkZW4sIG9iIGRpZSBXYWZmZQorICAgICBzaWNoIGVyZm9sZ3JlaWNoIHp1ZWNrZW4gbGllc3MhCisKKyAgICAgR3J1ZW5kZSwgd2FydW0gc2ljaCBlaW5lIFdhZmZlIG5pY2h0IHp1ZWNrZW4gbGFzc2VuIGthbm4sIHNpbmQKKyAgICAgZm9sZ2VuZGU6CisgICAgICAgIG8gTWFuIHRyYWVndCBzaWUgbmljaHQgYmVpIHNpY2ggKG9kZXIgc2llIHN0ZWNrdCBpbiBlaW5lbSBCZXV0ZWwKKyAgICAgICAgICBvLmFlLikuCisgICAgICAgIG8gTWFuIGhhdCBzaWUgc2Nob24gZ2V6dWVja3QuCisgICAgICAgIG8gRmFsbHMgZGVmaW5pZXJ0OiBXaWVsZEZ1bmMoKSBnaWJ0IDAgenVydWVjay4KKyAgICAgICAgbyBNYW4gaXN0IG5pY2h0IGdlc2NoaWNrdCBnZW51ZyAoZGFzIGhhZW5ndCB2b24gZGVyIFdhZmZlbmtsYXNzZQorICAgICAgICAgIGFiKS4KKyAgICAgICAgbyBFaW5lIHNjaG9uIGdlenVlY2t0ZSBXYWZmZSBsYWVzc3Qgc2ljaCBuaWNodCB3ZWdzdGVja2VuLgorICAgICAgICBvIERpZSBXYWZmZW5rbGFzc2UgaXN0IGhvZWhlciBhbHMgZXJsYXVidC4KKyAgICAgICAgbyBNYW4gaGF0IG5pY2h0IGdlbnVnIEhhZW5kZSBmcmVpLgorCitTSUVIRSBBVUNIOgorICAgICBXaWVsZEZ1bmMoKSwgSW5mb3JtV2llbGQoKSwgUF9FUVVJUF9USU1FLCAvc3RkL3dlYXBvbi5jCisKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KK0xhc3QgbW9kaWZpZWQ6IFdlZCBBcHIgMDggMTA6MjU6MDAgMjAwNCBieSBNdWFkaWIKZGlmZiAtLWdpdCBhL2RvYy9sZnVuL0Rvb3JJc0tub3duIGIvZG9jL2xmdW4vRG9vcklzS25vd24KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYjkwOWUzMAotLS0gL2Rldi9udWxsCisrKyBiL2RvYy9sZnVuL0Rvb3JJc0tub3duCkBAIC0wLDAgKzEsMjQgQEAKK0Rvb3JJc0tub3duKCkKKworRlVOS1RJT046CisJaW50IERvb3JJc0tub3duKCkKKworQVJHVU1FTlRFOgorCUtlaW5lLgorCitCRVNDSFJFSUJVTkc6CisJVGVzdGV0LCBvYiBkZXIgU2VoZXIgKHRoaXNfcGxheWVyKCkpIGRhcyBUb3IgaW4gc2VpbmVyIG1vbWVudGFuZW4KKwlVbWdlYnVuZyBzY2hvbiBrZW5udC4KKworUlVFQ0tHQUJFV0VSVDoKKwlEaWUgTnVtbWVyIGRlcyBUb3Jlcy4KKworQkVNRVJLVU5HRU46CisgICAgRGllc2UgRnVua3Rpb24gd2lyZCB2b24gL2Qvc2VoZXIvcG9ydGFsZS9zZWhlcnRvcm1hc3RlciBkZWZpbmllcnQuCisKK0JFSVNQSUVMRToKKyAgICAvZC9zZWhlci9wb3J0YWxlL3NlaGVydG9ybWFzdGVyLT5Eb29ySXNLbm93bigpCisKK1NJRUhFIEFVQ0g6CisgICAgRGlzY292ZXJEb29yLCBTaG93RG9vcnMsIFRlbGVwb3J0LCBHZXREb29yc01hcHBpbmcKKwpkaWZmIC0tZ2l0IGEvZG9jL2xmdW4vRHVtcCBiL2RvYy9sZnVuL0R1bXAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMjc0ZmJiNAotLS0gL2Rldi9udWxsCisrKyBiL2RvYy9sZnVuL0R1bXAKQEAgLTAsMCArMSwyMyBAQAorRHVtcCgpCitGVU5LVElPTjoKKyAgICAgdm9pZCBEdW1wKCkKKworREVGSU5JRVJUIElOOgorICAgICAvcC9kYWVtb24vbWF0ZXJpYWxkYi5jIChNQVRFUklBTERCKQorCitCRVNDSFJFSUJVTkc6CisgICAgIFNjaHJlaWJ0IGFsbGUgTWF0ZXJpYWxpZW4gc2FtdCBpaHJlbiBHcnVwcGVuIHVuZCBhbGxlIEdydXBwZW4gbWl0CisgICAgIGRhenVnZWhvZXJlbmRlbiBNYXRlcmlhbGllbiBpbiBEVU1QRklMRSAoL3AvZGFlbW9uL3NhdmUvTUFURVJJQUxTKQorICAgICBXaXJkIGluIGNyZWF0ZSgpIGRlciBNYXRlcmlhbGllbmRhdGVuYmFuayBhdXRvbWF0aXNjaCBhdWZnZXJ1ZmVuLgorICAgICBEYXMgRHVtcGZpbGUgaXN0IHp1bSBSZWNoZXJjaGllcmVuIGRlciBNYXRlcmlhbGllbiBnZWRhY2h0LgorCitTSUVIRSBBVUNIOgorICAgICBLb256ZXB0ZToJICBtYXRlcmlhbCwgbWF0ZXJpYWxlcmtlbm51bmcKKyAgICAgR3J1bmRsZWdlbmQ6IFBfTUFURVJJQUwsIC9zeXMvdGhpbmcvbWF0ZXJpYWwuaAorICAgICBMaXN0ZW46CSAgQWxsTWF0ZXJpYWxzKCksIEFsbEdyb3VwcygpCisJCSAgbWF0ZXJpYWxsaXN0ZSwgbWF0ZXJpYWxncnVwcGVuCisgICAgIE1hc3RlcjoJICBBZGRNYXRlcmlhbCgpLCBDb252TWF0ZXJpYWxMaXN0KCksIE1hdGVyaWFsR3JvdXAoKSwKKwkJICBHcm91cE5hbWUoKSwgTWF0ZXJpYWxOYW1lKCksCisJCSAgR2V0R3JvdXBNZW1iZXJzKCksIEdldE1hdE1lbWJlcnNoaXAoKQorCis3LiBNYWkgMjAwNCBHbG9pbnNvbgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2RvYy9sZnVuL0VuZW15UHJlc2VudCBiL2RvYy9sZnVuL0VuZW15UHJlc2VudApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4zNjVhZTNkCi0tLSAvZGV2L251bGwKKysrIGIvZG9jL2xmdW4vRW5lbXlQcmVzZW50CkBAIC0wLDAgKzEsMTkgQEAKK0VuZW15UHJlc2VudAorRlVOS1RJT046CisgICAgIHB1YmxpYyBtaXhlZCBFbmVteVByZXNlbnQoKQorCitERUZJTklFUlQgSU46CisgICAgIC9zdGQvbGl2aW5nL2NvbWJhdC5jCisKK0JFU0NIUkVJQlVORzoKKyAgICAgR2lidCBhdXMgZGVyIEZlaW5kZXNsaXN0ZSBkZW4gZXJzdGVuIGFud2VzZW5kZW4sIGxlYmVuZGVuIHVuZCAKKyAgICAgYW5ncmVpZmJhcmVuIGFrdHVlbGxlbiBHZWduZXIgaW0gUmF1bSB6dXJ1ZWNrLgorICAgICBEYW1pdCBpc3QgZGllIEZ1bmt0aW9uIGlkZW50aXNjaCB6dSBJbkZpZ2h0KCkuCisKKyAgICAgV2lsbCBtYW4gYWxsZSBHZWduZXIsIGF1ZiBkaWUgZGllc2UgS3JpdGVyaWVuIHp1dHJlZmZlbiwgc29sbHRlIG1hbgorICAgICBQcmVzZW50RW5lbWllcygpIHZlcndlbmRlbi4KKworU0lFSEUgQVVDSDoKKyAgICAgUHJlc2VudEVuZW1pZXMoKSwgSW5maWdodCgpCisKKzIyLjAzLjIwMDksIFplc3N0cmEKZGlmZiAtLWdpdCBhL2RvYy9sZnVuL0VudGVyIGIvZG9jL2xmdW4vRW50ZXIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNzk4N2VmYQotLS0gL2Rldi9udWxsCisrKyBiL2RvYy9sZnVuL0VudGVyCkBAIC0wLDAgKzEsNDAgQEAKK0VudGVyKCkKKworRlVOS1RJT046CisgICAgIGludCBFbnRlcigpOworCitERUZJTklFUlQgSU46CisgICAgIC9zdGQvdHJhbnNwb3J0LmMKKworQVJHVU1FTlRFOgorICAgICBrZWluZQorCitCRVNDSFJFSUJVTkc6CisgICAgIFdlbm4gc2ljaCBkZXIgU3BpZWxlciBub2NoIG5pY2h0IGF1ZiBkZW0gVHJhbnNwb3J0ZXIgYmVmaW5kZXQsIHVuZCBkZXIKKyAgICAgVHJhbnNwb3J0ZXIgbW9tZW50YW4gYW4gZWluZXIgSGFsdGVzdGVsbGUgbGllZ3QsIGJldHJpdHQgZGVyIFNwaWVsZXIKKyAgICAgZGVuIFRyYW5zcG9ydGVyLgorCitSVWVDS0dBQkVXRVJUOgorICAgICBOdWxsLCB3ZW5uIGRlciBTcGllbGVyIGRlbiBUcmFuc3BvcnRlciBuaWNodCBiZXRyZXRlbiBrb25udGUsIHNvbnN0CisgICAgIHVuZ2xlaWNoIE51bGwuCisKK0JFTUVSS1VOR0VOOgorICAgICBFcyB3ZXJkZW4ga2VpbmUgVGVzdHMgZHVyY2hnZWZ1ZWhydCwgb2IgZGVyIFRyYW5zcG9ydGVyIHVlYmVyaGF1cHQKKyAgICAgYW5nZXNwcm9jaGVuIHd1cmRlISBEYXMgbXVzcyBtYW4gc2VsYmVyIG1hY2hlbi4KKworQkVJU1BJRUxFOgorCisgICAgIGludCBteUVudGVyKHN0cmluZyBzdHIpCisgICAgIHsKKyAgICAgICBpZiAoc3RyICYmIGlkKHN0cikpCisgICAgICAgICByZXR1cm4gRW50ZXIoKTsKKworICAgICAgIG5vdGlmeV9mYWlsKCJXYXMgd2lsbHN0IER1IGJldHJldGVuP1xuIik7CisgICAgICAgcmV0dXJuIDA7CisgICAgIH0KKworU0lFSEUgQVVDSDoKKyAgICAgTGVhdmUoKSwgL3N0ZC90cmFuc3BvcnQuYworCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCitMYXN0IG1vZGlmaWVkOiBXZWQgTWF5IDggMTA6MTg6NDIgMTk5NiBieSBXYXJnb24KZGlmZiAtLWdpdCBhL2RvYy9sZnVuL0V2YWxBcm1vdXIgYi9kb2MvbGZ1bi9FdmFsQXJtb3VyCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmYxZDM1NmEKLS0tIC9kZXYvbnVsbAorKysgYi9kb2MvbGZ1bi9FdmFsQXJtb3VyCkBAIC0wLDAgKzEsMjEgQEAKK0V2YWxBcm1vdXIoKQorCitGVU5LVElPTjoKKyAgICBpbnQgRXZhbEFybW91cihvYmplY3Qgb2IsIGNsb3N1cmUgcXApCisgCitERUZJTklFUlQgSU46CisgICAgL3N0ZC9yb29tL3Nob3AuYworIAorQVJHVU1FTlRFOgorICAgIG9iIC0gRWluZSBSdWVzdHVuZy4KKyAgICBxcCAtIHN5bWJvbF9mdW5jdGlvbigiUXVlcnlQcm9wIixvYikKKworQkVTQ0hSRUlCVU5HOgorICAgIEJld2VydGV0IGRpZSBSdWVzdHVuZy4KKyAKK1JVRUNLR0FCRVdFUlQ6CisgICAgTWF4KFBfQUMsUF9FRkZFQ1RJVkVfQUMpOworIAorU0lFSEUgQVVDSDoKKyAgICBGaW5kQmVzdEFybW91cigpCisKZGlmZiAtLWdpdCBhL2RvYy9sZnVuL0V2YWxXZWFwb24gYi9kb2MvbGZ1bi9FdmFsV2VhcG9uCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjFlNjcxYTMKLS0tIC9kZXYvbnVsbAorKysgYi9kb2MvbGZ1bi9FdmFsV2VhcG9uCkBAIC0wLDAgKzEsMjEgQEAKK0V2YWxXZWFwb24oKQorCitGVU5LVElPTjoKKyAgICBpbnQgRXZhbFdlYXBvbihvYmplY3Qgb2IsIGNsb3N1cmUgcXApCisgCitERUZJTklFUlQgSU46CisgICAgL3N0ZC9yb29tL3Nob3AuYworIAorQVJHVU1FTlRFOgorICAgIG9iIC0gRWluZSBXYWZmZS4KKyAgICBxcCAtIHN5bWJvbF9mdW5jdGlvbigiUXVlcnlQcm9wIixvYikKKworQkVTQ0hSRUlCVU5HOgorICAgIEJld2VydGV0IGRpZSBXYWZmZS4KKyAKK1JVRUNLR0FCRVdFUlQ6CisgICAgTWF4KFBfV0MsUF9FRkZFQ1RJVkVfV0MpOworIAorU0lFSEUgQVVDSDoKKyAgICBGaW5kQmVzdFdlYXBvbigpCisKZGlmZiAtLWdpdCBhL2RvYy9sZnVuL0V4dHJhQXR0YWNrIGIvZG9jL2xmdW4vRXh0cmFBdHRhY2sKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMDE2YjVjMQotLS0gL2Rldi9udWxsCisrKyBiL2RvYy9sZnVuL0V4dHJhQXR0YWNrCkBAIC0wLDAgKzEsMzAgQEAKK0V4dHJhQXR0YWNrKCkKKworRlVOS1RJT046CisJdmFyYXJncyBwdWJsaWMgdm9pZCBFeHRyYUF0dGFjayhvYmplY3QgZW5lbXksIGludCBpZ25vcmVfcHJldmlvdXMpOworCitBUkdVTUVOVEU6CisJZW5lbXk6IERlciBGZWluZC4KKwlpZ25vcmVfcHJldmlvdXM6IEVpbiBGbGFnCisKK0JFU0NIUkVJQlVORzoKKwlEZXIgRmVpbmQgd2lyZCBkZXIgU3RhZXJrZSBkZXIgV2FmZmUgKGJ6dy4gZGVyIEhhZW5kZSkgZW50c3ByZWNoZW5kCisJc3RhcmsgYW5nZWdyaWZmZW4uIEhpZXJiZWkgd2lyZCBBdHRhY2soKSBhdWZnZXJ1ZmVuLgorCUlzdCBpZ25vcmVfcHJldmlvdXMgdW5nbGVpY2ggMCwgZGFubiB3aXJkIGRpZSBFcnN0c2NobGFnc3BlcnJlIHZvbgorCUF0dGFjayBpZ25vcmllcnQuIERpZXNlciBBbmdyaWZmIGlzdCBhbHNvIGF1Y2ggZGFubiBtb2VnbGljaCwgd2VubgorCWRhcyBMZWJld2VzZW4gZWlnZW50bGljaCBrZWluZW4gU2NobGFnIG1laHIgaW4gZGllc2VyIFJ1bmRlIGF1c2Z1ZWhyZW4KKwlkdWVyZnRlLgorCitSVUVDS0dBQkVXRVJUOgorCUtlaW5lci4KKworQkVNRVJLVU5HOgorCURlciBFaW5zYXR6IGRpZXNlciBGdW5rdGlvbiBpc3QgZ2VuZWhtaWd1bmdzcGZsaWNodGlnLgorCVdlaXRlcmUgSGlud2Vpc2Ugc2llaGUgIm1hbiBBdHRhY2siLgorCitTSUVIRSBBVUNIOgorCSJBdHRhY2siCisJL3N0ZC9saXZpbmcvY29tYmF0LmMKKworLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorTGFzdCBtb2RpZmllZDogU3VuIE5vdiAyMSAxMjozMjoyMCAyMDA0IGJ5IEJhbWJpCmRpZmYgLS1naXQgYS9kb2MvbGZ1bi9GaWx0ZXJBcm1vdXJzIGIvZG9jL2xmdW4vRmlsdGVyQXJtb3VycwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5mOTM0OTMzCi0tLSAvZGV2L251bGwKKysrIGIvZG9jL2xmdW4vRmlsdGVyQXJtb3VycwpAQCAtMCwwICsxLDY5IEBACitGaWx0ZXJBcm1vdXJzCitGVU5LVElPTjoKKyAgICAgcHVibGljIG9iamVjdCAqRmlsdGVyQXJtb3VycyhjbG9zdXJlIGZpbHRlcmZ1biwgdmFyYXJncyBtaXhlZCogZXh0cmEpCisKK0RFRklOSUVSVCBJTjoKKyAgICAgL3N0ZC9saXZpbmcvY2xvdGhpbmcuYworCitBUkdVTUVOVEU6CisgICAgIGNsb3N1cmUgZmlsdGVyZnVuCisgICAgICAgRGllIENsb3N1cmUsIGRpZSBlbnRzY2hlaWRlbiBzb2xsLCBvYiBlaW5lIFJ1ZXN0dW5nIGltIEVyZ2VibmlzYXJyYXkKKyAgICAgICBlbnRoYWx0ZW4gc2VpbiBzb2xsLgorICAgICAKKyAgICAgbWl4ZWQgZXh0cmEKKyAgICAgICBCZWxpZWJpZyB2aWVsZSBFeHRyYS1Bcmd1bWVudGUsIGRpZSA8ZmlsdGVyZnVuPiB1ZWJlcmdlYmVuIHdlcmRlbi4KKworQkVTQ0hSRUlCVU5HOgorICAgICBEaWVzZSBGdW5rdGlvbiBydWZ0IDxmaWx0ZXJmdW5jPiBmdWVyIGplZGUgZ2V0cmFnZW5lIFJ1ZXN0dW5nIGRlcworICAgICBMZWJld2VzZW4gbWl0IGRlciBqZXdlaWxpZ2VuIFJ1ZXN0dW5nIGFscyBBcmd1bWVudCBhdWYgdW5kIGxpZWZlcnQgZWluCisgICAgIEFycmF5IG1pdCBhbGxlbiBSdWVzdHVuZ2VuIHp1cnVlY2ssIGZ1ZXIgZGllIDxmaWx0ZXJmdW4+IGVpbmVuIFdlcnQgIT0gMAorICAgICB6dXJ1ZWNrbGllZmVydC4KKyAgICAgRGllIDxleHRyYT4gQXJndW1lbnRlIHdlcmRlbiBhbHMgenVzYWV0emxpY2hlIFBhcmFtZXRlciBhbiA8ZmlsdGVyZnVuPgorICAgICB1ZWJlcmdlYmVuIHVuZCBkdWVyZmVuIGtlaW5lIFJlZmVyZW56ZW4gc2Vpbi4KKyAgICAgCisgICAgIERpZXNlIFZhcmlhbnRlIGlzdCB6dSBiZXZvcnp1Z2VuLCB3ZW5uIG1hbiBSdWVzdHVuZ2VuIG5hY2ggYmVzdGltbXRlbgorICAgICBLcml0ZXJpZW4gZHVyY2hzdWNoZW4gd2lsbCB1bmQgUXVlcnlBcm1vdXJCeVR5cGUoKSBuaWNodCBhdXNyZWljaGVuZCBzZWluCisgICAgIHNvbGx0ZS4KKworUlVlQ0tHQUJFV0VSVDoKKyAgICAgRWluIEFycmF5IHZvbiBPYmpla3RlbiBtaXQgYWxsZW4gcGFzc2VuZGVuIFJ1ZXN0dW5nZW4uCisKK0JFSVNQSUVMRToKKyAgICAgMSkgSWNoIG1vZWNodGUgZ2VybmUgYWxsZSBSdWVzdHVuZ2VuIGhhYmVuLCBkaWUgYmVzY2hhZWRpZ3Qgc2luZDoKKyAgICAgcHJpdmF0ZSBpbnQgX2lzX2RhbWFnZWQob2JqZWN0IHJ1ZXN0dW5nKSB7CisgICAgICAgICByZXR1cm4gcnVlc3R1bmctPlF1ZXJ5UHJvcChQX0RBTUFHRSk7CisgICAgIH0KKyAgICAgLi4uCisgICAgIG9iamVjdCAqZGFtYWdlZF9hcm1vdXJzID0gUEwtPkZpbHRlckFybW91cnMoIydfaXNfZGFtYWdlZCk7CisKKyAgICAgMikgSWNoIG1vZWNodGUgYWxsZSBSdWVzdHVuZ2VuLCBkaWUgZ3JvZXNzZXIgYWxzIDUwY20gc2luZC4KKyAgICAgcHJpdmF0ZSBpbnQgX2FybW91cl9pc19iaWdnZXIob2JqZWN0IHJ1ZXN0dW5nLCBpbnQgc2l6ZSkgeworICAgICAgIHJldHVybiBydWVzdHVuZy0+UXVlcnlQcm9wKFBfU0laRSkgPiBzaXplOworICAgICB9CisgICAgIC4uLgorICAgICBvYmplY3QgKmJpZ19hcm1vdXJzID0gUEwtPkZpbHRlckFybW91cnMoIydfYW1vdXJfaXNfYmlnZ2VyLCA1MCk7IAorCisgICAgIDMpIGFsbGUgUnVlc3R1bmdlbiBtaXQgZWluZXIgc3BlemllbGxlbiBJRC4KKyAgICAgcHJpdmF0ZSBpbnQgX2hhc19pZChvYmplY3QgcnVlc3R1bmcsIHN0cmluZyBpZHN0cikgeworICAgICAgIHJldHVybiBydWVzdHVuZy0+aWQoaWRzdHIpOworICAgICB9CisgICAgIG9iamVjdCAqaGFzX2lkID0gUEwtPkZpbHRlckFybW91cnMoIydfaGFzX2lkLCAiXG50b2xsZXJ1ZXN0dW5nIik7CisKKyAgICAgNCkgYWxsZSBSdWVzdHVuZ2VuIG1pdCBlaW5lciBzcGV6aWVsbGVuIElELCBkaWUgZ3JvZXNzZXIgYWxzIDUwY20gc2luZC4KKyAgICAgcHJpdmF0ZSBpbnQgX2hhc19pZChvYmplY3QgcnVlc3R1bmcsIHN0cmluZyBpZHN0ciwgaW50IHNpemUpIHsKKyAgICAgICByZXR1cm4gcnVlc3R1bmctPmlkKGlkc3RyKSAmJiBydWVzdHVuZy0+UXVlcnlQcm9wKFBfU0laRSkgPiBzaXplOworICAgICB9CisgICAgIG9iamVjdCAqaGFzX2lkID0gUEwtPkZpbHRlckFybW91cnMoIydfaGFzX2lkLCAiXG50b2xsZXJ1ZXN0dW5nIiwgNTApOworCisgICAgIDUpIHVlYmVyaGF1cHQgYWxsZSBnZXRyYWdlbmUgUnVlc3R1bmcKKyAgICAgb2JqZWN0ICpydWUgPSBQTC0+RmlsdGVyQXJtb3VycygjJ29iamVjdHApCisKKworU0lFSEUgQVVDSDoKKyAgICAgV2VhcigpLCBXZWFyQXJtb3VyKCksIFdlYXJDbG90aGluZygpLCBVbndlYXIoKSwgVW53ZWFyQXJtb3VyKCksIAorICAgICBVbndlYXJDbG90aGluZygpCisgICAgIFBfQ0xPVEhJTkcsIFBfQVJNT1VSUworICAgICBGaWx0ZXJDbG90aGluZygpLCBRdWVyeUFybW91ckJ5VHlwZSgpCisKK1pVTEVUWlQgR0VBZU5ERVJUOgorMTQuMDMuMjAwOSwgWmVzc3RyYQpkaWZmIC0tZ2l0IGEvZG9jL2xmdW4vRmlsdGVyQ2xvdGhpbmcgYi9kb2MvbGZ1bi9GaWx0ZXJDbG90aGluZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi45NWIwMGUzCi0tLSAvZGV2L251bGwKKysrIGIvZG9jL2xmdW4vRmlsdGVyQ2xvdGhpbmcKQEAgLTAsMCArMSw1MSBAQAorRmlsdGVyQ2xvdGhpbmcKK0ZVTktUSU9OOgorICAgICBwdWJsaWMgb2JqZWN0ICpGaWx0ZXJDbG90aGluZyhjbG9zdXJlIGZpbHRlcmZ1biwgdmFyYXJncyBtaXhlZCogZXh0cmEpCisKK0RFRklOSUVSVCBJTjoKKyAgICAgL3N0ZC9saXZpbmcvY2xvdGhpbmcuYworCitBUkdVTUVOVEU6CisgICAgIGNsb3N1cmUgZmlsdGVyZnVuCisgICAgICAgRGllIENsb3N1cmUsIGRpZSBlbnRzY2hlaWRlbiBzb2xsLCBvYiBlaW5lIEtsZWlkdW5nIGltIEVyZ2VibmlzYXJyYXkKKyAgICAgICBlbnRoYWx0ZW4gc2VpbiBzb2xsLgorCitCRVNDSFJFSUJVTkc6CisgICAgIERpZXNlIEZ1bmt0aW9uIHJ1ZnQgPGZpbHRlcmZ1bmM+IGZ1ZXIgamVkZSBnZXRyYWdlbmUgS2xlaWR1bmcgZGVzCisgICAgIExlYmV3ZXNlbiBtaXQgZGVyIGpld2VpbGlnZW4gS2xlaWR1bmcgYWxzIEFyZ3VtZW50IGF1ZiB1bmQgbGllZmVydCBlaW4KKyAgICAgQXJyYXkgbWl0IGFsbGVyIEtsZWlkdW5nIHp1cnVlY2ssIGZ1ZXIgZGllIDxmaWx0ZXJmdW4+IGVpbmVuIFdlcnQgIT0gMAorICAgICB6dXJ1ZWNrbGllZmVydC4KKyAgICAgRGllIDxleHRyYT4gQXJndW1lbnRlIHdlcmRlbiBhbHMgenVzYWV0emxpY2hlIFBhcmFtZXRlciBhbiA8ZmlsdGVyZnVuPgorICAgICB1ZWJlcmdlYmVuIHVuZCBkdWVyZmVuIGtlaW5lIFJlZmVyZW56ZW4gc2Vpbi4KKyAgICAgCisgICAgIERpZXNlIFZhcmlhbnRlIGlzdCB6dSBiZXZvcnp1Z2VuLCB3ZW5uIG1hbiBkaWUgZ2V0cmFnZSBLbGVpZHVuZyBuYWNoCisgICAgIGJlc3RpbW10ZW4gS3JpdGVyaWVuIGR1cmNoc3VjaGVuIHdpbGwuIAorCitSVWVDS0dBQkVXRVJUOgorICAgICBFaW4gQXJyYXkgdm9uIE9iamVrdGVuIG1pdCBhbGxlbiBwYXNzZW5kZW4gS2xlaWR1bmcuCisKK0JFSVNQSUVMRToKKyAgICAgMSkgSWNoIG1vZWNodGUgYWxsZSBLbGVpZHVuZywgZGllIGdyb2Vzc2VyIGFscyA1MGNtIGlzdC4KKyAgICAgcHJpdmF0ZSBpbnQgX2FybW91cl9pc19iaWdnZXIob2JqZWN0IGNsb3RoaW5nLCBpbnQgc2l6ZSkgeworICAgICAgIHJldHVybiBjbG90aGluZy0+UXVlcnlQcm9wKFBfU0laRSkgPiBzaXplOworICAgICB9CisgICAgIC4uLgorICAgICBvYmplY3QgKmJpZ19hcm1vdXJzID0gUEwtPkZpbHRlckNsb3RoaW5nKCMnX2Ftb3VyX2lzX2JpZ2dlciwgNTApOyAKKworICAgICAyKSBhbGxlIEtsZWlkdW5nIG1pdCBlaW5lciBzcGV6aWVsbGVuIElELgorICAgICBwcml2YXRlIGludCBfaGFzX2lkKG9iamVjdCBjbG90aGluZywgc3RyaW5nIGlkc3RyKSB7CisgICAgICAgcmV0dXJuIGNsb3RoaW5nLT5pZChpZHN0cik7CisgICAgIH0KKyAgICAgb2JqZWN0ICpoYXNfaWQgPSBQTC0+RmlsdGVyQ2xvdGhpbmcoIydfaGFzX2lkLCAiXG50b2xsZWtsZWlkdW5nIik7CisKKyAgICAgMykgdWViZXJoYXVwdCBhbGxlIGdldHJhZ2VuZSBLbGVpZHVuZworICAgICBvYmplY3QgKmNsb3RoaW5nID0gUEwtPkZpbHRlckNsb3RoaW5nKCMnb2JqZWN0cCkKKworU0lFSEUgQVVDSDoKKyAgICAgV2VhcigpLCBXZWFyQXJtb3VyKCksIFdlYXJDbG90aGluZygpLCBVbndlYXIoKSwgVW53ZWFyQXJtb3VyKCksIAorICAgICBVbndlYXJDbG90aGluZygpCisgICAgIFBfQ0xPVEhJTkcsIFBfQVJNT1VSUworICAgICBGaWx0ZXJBcm1vdXJzKCksIFF1ZXJ5QXJtb3VyQnlUeXBlKCkKKworWlVMRVRaVCBHRUFlTkRFUlQ6CisxNC4wMy4yMDA5LCBaZXNzdHJhCmRpZmYgLS1naXQgYS9kb2MvbGZ1bi9GaW5kQmVzdEFybW91cnMgYi9kb2MvbGZ1bi9GaW5kQmVzdEFybW91cnMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNjhlNzM0YgotLS0gL2Rldi9udWxsCisrKyBiL2RvYy9sZnVuL0ZpbmRCZXN0QXJtb3VycwpAQCAtMCwwICsxLDM4IEBACitGaW5kQmVzdEFybW91cnMoKQorCitGVU5LVElPTjoKKyAgICB2YXJhcmdzIG9iamVjdCAqRmluZEJlc3RBcm1vdXJzKG1peGVkIHR5cGUsIGludCBtYXhtb24sIGludCBtYXh3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWFwcGluZyBtaW5hYywgbWl4ZWQgcmVzdHIpCisgCitERUZJTklFUlQgSU46CisgICAgL3N0ZC9yb29tL3Nob3AuYworIAorQVJHVU1FTlRFOgorICAgIHR5cGUgICAtIGdld3VlbnNjaHRlciBSdWVzdHVuZ3N0eXAgLyBSdWVzdHVuZ3N0eXBlbgorICAgIG1heG1vbiAtIEdlbGQgZGFzIGF1c2dlZ2ViZW4gd2VyZGVuIGRhcmYKKyAgICBtYXh3ICAgLSBNYXhpbWFsZXMgR2V3aWNodAorICAgIG1pbmFjICAtIG1pbmltYWxlIGdld3VlbnNjaHRlIFJ1ZXN0dW5nc2tsYXNzZSBwcm8gVHlwCisgICAgcmVzdHIgIC0genVzYWV0emxpY2hlcyBBcmd1bWVudCBmdWVyIENoZWNrRmluZFJlc3RyaWN0aW9ucygpCisKK0JFU0NIUkVJQlVORzoKKyAgICBTdWNodCBkaWUgYmVzdGVuIFJ1ZXN0dW5nZW4sIGRpZSBkZXIgTGFkZW4gdmVya2F1ZmVuIGthbm4uCisgCitSVUVDS0dBQkVXRVJUOgorICAgIERpZSBiZXN0ZW4gUnVlc3R1bmdlbgorIAorQkVNRVJLVU5HOgorICAgIERpZSBRdWFsaXRhZXQgZGVyIFJ1ZXN0dW5nIHdpcmQgbWl0IEV2YWxBcm1vdXIoKSBiZXN0aW1tdC4KKyAgICBIYWJlbiB6d2VpIFJ1ZXN0dW5nZW4gZGllIGdsZWljaGUgUXVhbGl0YWV0LAorICAgIHdpcmQgZGllIHByZWlzd2VydGVyZSBnZW5vbW1lbi4KKyAKK0JFSVNQSUVMOgorICAgIEZpbmRCZXN0QXJtb3VycyhBVF9BUk1PVVIsNTAwMCkKKyAgICBCZXN0ZXMgUnVlc3R1bmcgdW50ZXIgNTAwMCBNdWVuemVuLgorCisgICAgRmluZEJlc3RBcm1vdXJzKCh7QVRfQVJNT1VSLEFUX0NMT0FLLEFUX0JPT1R9KSwxMDAwMCwoW0FUX0FSTU9VUjoyMF0pKQorICAgIEZpbmRlZCBiZXN0ZSBSdWVzdHVuZywgVW1oYW5nIHVuZCBTY2h1aGUsIGRpZSBkZXIgTGFkZW4gZnVlcgorICAgIGluc2dlc2FtdCAxMDAwMCBNdWVuemVuIHZlcmthdWZlbiBrYW5uLCB3b2JlaSBkaWUgUnVlc3R1bmcgbWluZGVzdGVucworICAgIEFDIDIwIGhhYmVuIG11c3MuCisKK1NJRUhFIEFVQ0g6CisgICAgRmluZEJlc3RXZWFwb24oKSwgQ2hlY2tGaW5kUmVzdHJpY3Rpb25zKCksIEV2YWxBcm1vdXIoKQpkaWZmIC0tZ2l0IGEvZG9jL2xmdW4vRmluZEJlc3RXZWFwb24gYi9kb2MvbGZ1bi9GaW5kQmVzdFdlYXBvbgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5kMGJhOGYxCi0tLSAvZGV2L251bGwKKysrIGIvZG9jL2xmdW4vRmluZEJlc3RXZWFwb24KQEAgLTAsMCArMSwzMyBAQAorRmluZEJlc3RXZWFwb24oKQorCitGVU5LVElPTjoKKyAgICB2YXJhcmdzIG9iamVjdCBGaW5kQmVzdFdlYXBvbihtaXhlZCB0eXBlLCBpbnQgbWF4bW9uLCBpbnQgbWF4dywgaW50IGhhbmRzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCBtaW53YywgbWl4ZWQgcmVzdHIpCisgCitERUZJTklFUlQgSU46CisgICAgL3N0ZC9yb29tL3Nob3AuYworIAorQVJHVU1FTlRFOgorICAgIHR5cGUgICAtIGdld3VlbnNjaHRlciBXYWZmZW50eXAgLyBXYWZmZW50eXBlbgorICAgIG1heG1vbiAtIEdlbGQgZGFzIGF1c2dlZ2ViZW4gd2VyZGVuIGRhcmYKKyAgICBtYXh3ICAgLSBNYXhpbWFsZXMgR2V3aWNodAorICAgIGhhbmRzICAtIEFuemFobCBIYWVuZGUsIGRpZSBkaWUgV2FmZmUgYmVsZWdlbiBkYXJmCisgICAgbWlud2MgIC0gbWluaW1hbGUgZ2V3dWVuc2NodGUgV2FmZmVua2xhc3NlCisgICAgcmVzdHIgIC0genVzYWV0emxpY2hlcyBBcmd1bWVudCBmdWVyIENoZWNrRmluZFJlc3RyaWN0aW9ucygpCisKK0JFU0NIUkVJQlVORzoKKyAgICBTdWNodCBkaWUgYmVzdGUgV2FmZmUsIGRpZSBkZXIgTGFkZW4gdmVya2F1ZmVuIGthbm4uCisgCitSVUVDS0dBQkVXRVJUOgorICAgIERpZSBiZXN0ZSBXYWZmZSA6LSkKKyAKK0JFTUVSS1VORzoKKyAgICBEaWUgUXVhbGl0YWV0IGRlciBXYWZmZSB3aXJkIG1pdCBFdmFsV2VhcG9uKCkgYmVzdGltbXQuCisgICAgSGFiZW4gendlaSBXYWZmZW4gZGllIGdsZWljaGUgUXVhbGl0YWV0LCB3aXJkIGRpZSBwcmVpc3dlcnRlcmUgZ2Vub21tZW4uCisgCitCRUlTUElFTDoKKyAgICBGaW5kQmVzdFdlYXBvbihXVF9TV09SRCw1MDAwLDEpCisgICAgQmVzdGVzIGVpbmhhZW5kaWdlcyBTY2h3ZXJ0IHVudGVyIDUwMDAgTXVlbnplbi4KKworU0lFSEUgQVVDSDoKKyAgICBGaW5kQmVzdEFybW91cnMoKSwgQ2hlY2tGaW5kUmVzdHJpY3Rpb25zKCksIEV2YWxXZWFwb24oKQpkaWZmIC0tZ2l0IGEvZG9jL2xmdW4vRmluZERpc3RhbnRFbmVteVZpY3RpbSBiL2RvYy9sZnVuL0ZpbmREaXN0YW50RW5lbXlWaWN0aW0KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYTUxYzI3ZgotLS0gL2Rldi9udWxsCisrKyBiL2RvYy9sZnVuL0ZpbmREaXN0YW50RW5lbXlWaWN0aW0KQEAgLTAsMCArMSwzMiBAQAorRmluZERpc3RhbnRFbmVteVZpY3RpbSgpCisKK0ZVTktUSU9OOgorCW9iamVjdCBGaW5kRGlzdGFudEVuZW15VmljdGltKHN0cmluZyB3ZW4sIG9iamVjdCBwbCwgc3RyaW5nIG1zZywKKwkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgZGlzdCwgaW50IGR5KQorCitERUZJTklFUlQgSU46CisJL3N0ZC9zcGVsbGJvb2suYworCitBUkdVTUVOVEU6CisJd2VuICAtIGlkIGRlcyBnZXd1ZW5zY2h0ZW4gR2VnbmVycywgZmFsbHMgbmljaHQgYW5nZWdlYmVuOgorICAgICAgICAgICAgICAgU2VsZWN0RW5lbXkoRmluZERpc3RhbnRHcm91cChwbCwtMSxkaXN0LGR5LDEwMDAwKQorCXBsICAgLSBDYXN0ZXIuCisJbXNnICAtIE5hY2hyaWNodCBmYWxscyBHZWduZXIgbmljaHQgYW53ZXNlbmQgaXN0LgorCWRpc3QgLSBFbnRmZXJudW5nCisJZHkgICAtIDIqZXJsYXVidGUgQWJ3ZWljaHVuZyB2b24gZGVyIEVudGZlcm51bmcsIGRlZmF1bHQgMTAwCisKK0JFU0NIUkVJQlVORzoKKwlGaW5kZXQgZWluZW4gR2VnbmVyIGluIEVudGZlcm51bmcgZGlzdC1keS8yIGJpcyBkaXN0K2R5LzIKKwl6LkIuIGZ1ZXIgZWluZW4gQW5ncmlmZnNzcHJ1Y2guCisJCitSVUVDS0dBQkVXRVJUOgorCURlciBBdXNlcndhZWhsdGUgOi0pCisKK0JFTUVSS1VOR0VOOgorCTEuIERlciBHZWduZXIgd2lyZCBhdWYgamVkZW4gRmFsbCBhbmdlZ3JpZmZlbi4KKwkyLiBkaXN0IHdpcmQgbWl0IFNBX1JBTkdFIG1vZGlmaXppZXJ0LAorCSAgIGR5IHdpcmQgbWl0IFNBX0VYVEVOU0lPTiBtb2RpZml6aWVydC4KKwkzLiBEaWUgRW50ZmVybnVuZyBpc3QgcmVsYXRpdiB6dW0gU3BpZWxlci4KKworU0lFSEUgQVVDSDoKKwl0ZWFtcywgRmluZEVuZW15VmljdGltLCBGaW5kTmVhckVuZW15VmljdGltLCBGaW5kRmFyRW5lbXlWaWN0aW0KZGlmZiAtLWdpdCBhL2RvYy9sZnVuL0ZpbmREaXN0YW50R3JvdXAgYi9kb2MvbGZ1bi9GaW5kRGlzdGFudEdyb3VwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjRkZWRhYjYKLS0tIC9kZXYvbnVsbAorKysgYi9kb2MvbGZ1bi9GaW5kRGlzdGFudEdyb3VwCkBAIC0wLDAgKzEsMzEgQEAKK0ZpbmREaXN0YW50R3JvdXAoKQorCitGVU5LVElPTjoKKwl2YXJhcmdzIG9iamVjdCAqRmluZERpc3RhbnRHcm91cChvYmplY3QgcGwsIGludCB3aG8sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCBkaXN0LCBpbnQgZHksIGludCBkeCkKKworREVGSU5JRVJUIElOOgorCS9zdGQvc3BlbGxib29rLmMKKworQVJHVU1FTlRFOgorCXBsICAgLSBDYXN0ZXIKKwl3aG8gIC0gMT1GcmV1bmRlLCAtMT1HZWduZXIsIDA9YmVpZGUKKwlkaXN0IC0gRW50ZmVybnVuZworCWR5ICAgLSBUaWVmZSAgICAgIChkZWZhdWx0IDEwMCkKKwlkeCAgIC0gQnJlaXRlICAgICAoZGVmYXVsdCAxMDAqTUFYX1RFQU1fUk9XTEVOKQorCitCRVNDSFJFSUJVTkc6CisJRXJtaXR0ZWx0IExlYmV3ZXNlbiwgZGllIHNpY2ggaW4gRW50ZmVybnVuZyA8ZGlzdD4gaW4gZWluZW0gQmVyZWljaAorCWRlciBCcmVpdGUgPGR4PiB1bmQgVGllZmUgPGR5PiBiZWZpbmRlbi4KKworUlVFQ0tHQUJFV0VSVDoKKwlBcnJheSBtaXQgZGVuIGdlZnVuZGVuZW4gTGViZXdlc2VuLgorCitCRU1FUktVTkdFTjoKKwlHZW5hdWVyZSBIaW53ZWlzZSB1bnRlciAiRmluZERpc3RhbnRHcm91cHMiLgorCVdlciBzb3dvaGwgRnJldW5kZSB3aWUgYXVjaCBGZWluZGUgaW4gZ2V0cmVubnRlbiBBcnJheXMgYnJhdWNodCwKKwlzb2xsdGUgRmluZERpc3RhbnRHcm91cHMgc3RhdHQgRmluZERpc3RhbnRHcm91cCB2ZXJ3ZW5kZW4uCisKK1NJRUhFIEFVQ0g6CisJdGVhbXMsIEZpbmREaXN0YW50R3JvdXBzCisKZGlmZiAtLWdpdCBhL2RvYy9sZnVuL0ZpbmREaXN0YW50R3JvdXBzIGIvZG9jL2xmdW4vRmluZERpc3RhbnRHcm91cHMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNTA3YjcyZQotLS0gL2Rldi9udWxsCisrKyBiL2RvYy9sZnVuL0ZpbmREaXN0YW50R3JvdXBzCkBAIC0wLDAgKzEsNTkgQEAKK0ZpbmREaXN0YW50R3JvdXBzKCkKKworRlVOS1RJT046CisJdmFyYXJncyBtaXhlZCBGaW5kRGlzdGFudEdyb3VwcyhvYmplY3QgcGwsIGludCBkaXN0LCBpbnQgZHksIGludCBkeCkKKworREVGSU5JRVJUIElOOgorCS9zdGQvc3BlbGxib29rLmMKKworQVJHVU1FTlRFOgorCXBsICAgLSBDYXN0ZXIKKwlkaXN0IC0gRW50ZmVybnVuZworCWR5ICAgLSBUaWVmZSAgICAgIChkZWZhdWx0IDEwMCkKKwlkeCAgIC0gQnJlaXRlICAgICAoZGVmYXVsdCAxMDAqTUFYX1RFQU1fUk9XTEVOKQorCitCRVNDSFJFSUJVTkc6CisJRXJtaXR0ZWxkIGZlaW5kbGljaGUgKGJlaSBTcGllbGVybiBOUENzLCBiZWkgTlBDcyBTcGllbGVyKSB1bmQKKwlmcmV1bmRsaWNoZSAoYmVpIFNwaWVsZXJuIFNwaWVsZXIsIGJlaSBOUENzIE5QQ3MpIExlYmV3ZXNlbiwKKwlkaWUgc2ljaCBpbiBFbnRmZXJudW5nIDxkaXN0PiBpbiBlaW5lbSBCZXJlaWNoIGRlciBCcmVpdGUgPGR4PgorCXVuZCBUaWVmZSA8ZHk+IGJlZmluZGVuLgorCitSVUVDS0dBQkVXRVJUOgorCUFycmF5IG1pdCB6d2VpIEFycmF5cyBhbHMgSW5oYWx0OgorCSh7IGZlaW5kbGljaGUgTGViZXdlc2VuLCBmcmV1bmRsaWNoZSBMZWJld2VzZW4gfSkKKworQkVNRVJLVU5HRU46CisJRGllIEVudGZlcm51bmdzYW5nYWJlbiBzaW5kIGFscyBjbS4genUgdmVyc3RlaGVuLgorCUplZGVzIExlYmV3ZXNlbiBiZWxlZ3QgNTBjbSB4IDUwY20gbWl0IEFic3RhbmQgNTBjbQorCXp1bSBuYWVjaHN0ZW4gTGViZXdlc2VuIGluIGplZGVyIFJpY2h0dW5nLgorCURpZSBCcmVpdGVuYW5nYWJlIHdpcmt0IHNpY2ggbnVyIGluIGRlciBBbnphaGwgZGVyCisJTGViZXdlc2VuIGF1cywgZGllIHp1ZmFlbGxpZyBwcm8gUmVpaGUgYXVzZ2V3YWVobHQgd2VyZGVuLgorCURpZSBTa2lsbGF0dHJpYnV0ZSBTQV9SQU5HRSB1bmQgU0FfRVhURU5TSU9OIHdlcmRlbiBiZXJ1ZWNrc2ljaHRpZ3QuCisKK0JFSVNQSUVMOgorCWRpc3Q9MjAwLCBkeT0yMDAsIGR4PTIwMCwgZWluIFB1bmt0ID0gNTBjbSB4IDUwY20KKwkgICAuIC4gLiAuIC4gLiAuIC4gLiAuIC4gLiAuCisJMy4gLiAuIC4gLiAuIC4gRyAuIC4gLiAuIC4gLgorCSAgIC4gLiAuIC4gLiAuIC4gLiAuIC4gLiAuIC4KKwkyLiAuIC4gLiAuIC4gRyAuIEcgLiAuIC4gLiAuZGlzdCtkeS8yLSsKKwkgICAuIC4gLiAuIC4gLiAuIC4gLiAuIC4gLiAuICAgICAgICAgIHwgIAorCTEuIC4gLiAuIC4gRyAuIEcgLiBHIC4gLiAuIC4gICAgIGRpc3QgKy0rIChHZWduZXIgRykKKwktLS0uLS4tLi0uLS4tLi0uLS4tLi0uLS4tLi0uICAgICAgICAgIHwgfAorCTEuIC4gLiAuIC4gRiAuIEYgLiBGIC4gLiAuIC5kaXN0LWR5LzItKyB8IChGcmV1bmRlIEYpCisJICAgLiAuIC4gLiAuIC4gLiAuIC4gLiAuIC4gLiAgICAgICAgICAgIHwKKwkyLiAuIC4gLiAuIC4gRiAuIFMgLiAuIC4gLiAuLS0tLS0tLS0tLS0tKyAoUmVpaGUgZGVzIFNwaWVsZXJzIFMpCisJICAgLiAuIC4gLiAuIC4gLiAuIC4gLiAuIC4gLgorCTMuIC4gLiAuIC4gLiAuIEYgLiAuIC4gLiAuIC4KKwkgICAuIC4gLiAuIC4gLiAuIC4gLiAuIC4gLiAuCisJQWJnZWRlY2t0ZXIgQmVyZWljaDogICAgICAgICAgIDEwMGNtICBiaXMgIDMwMGNtCisgICAgICAgICAgICAgICAgUmVpaGUgMzogIDM3NWNtLi40MjVjbSAgICAgICAgIDM3NT4zMDAgLT4gbmljaHQgZXJ3aXNjaHQKKyAgICAgICAgICAgICAgICBSZWloZSAyOiAgMjc1Y20uLjMyNWNtICAgICAgICAgMjc1PDMwMCAtPiBlcndpc2NodAorCUdlZ25lciAgUmVpaGUgMTogIDE3NWNtLi4yMjVjbSAxMDA8MTc1LDIyNTwzMDAgLT4gZXJ3aXNjaHQKKwlGcmV1bmRlIFJlaWhlIDE6ICAgNzVjbS4uMTI1Y20gMTAwPDEyNSAgICAgICAgIC0+IGVyd2lzY2h0CisJICAgICAgICBSZWloZSAyOiAgLTI1Y20uLi4yNWNtIDEwMD4gMjUgICAgICAgICAtPiBuaWNodCBlcndpc2NodAorICAgICAgICAgICAgICAgIFJlaWhlIDM6IC0xMjVjbS4uLTc1Y20gMTAwPi03NSAgICAgICAgIC0+IG5pY2h0IGVyd2lzY2h0CisJRXJnZWJuaXM6ICh7KHtHLEcsRyxHfSksKHtGLEZ9KX0pCisJKE1heGltYWwgMiBMZWJld2VzZW4gcHJvIFJlaWhlIGJlaSBCcmVpdGUgMjAwKS4KKworU0lFSEUgQVVDSDoKKwl0ZWFtcywgRmluZERpc3RhbnRHcm91cApkaWZmIC0tZ2l0IGEvZG9jL2xmdW4vRmluZEVuZW15VmljdGltIGIvZG9jL2xmdW4vRmluZEVuZW15VmljdGltCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjBhYjcyZmMKLS0tIC9kZXYvbnVsbAorKysgYi9kb2MvbGZ1bi9GaW5kRW5lbXlWaWN0aW0KQEAgLTAsMCArMSwyNCBAQAorRmluZEVuZW15VmljdGltKCkKKworRlVOS1RJT046CisJb2JqZWN0IEZpbmRFbmVteVZpY3RpbShzdHJpbmcgd2VuLCBvYmplY3QgcGwsIHN0cmluZyBtc2cpCisKK0RFRklOSUVSVCBJTjoKKwkvc3RkL3NwZWxsYm9vay5jCisKK0FSR1VNRU5URToKKwl3ZW4gLSBpZCBkZXMgZ2V3dWVuc2NodGVuIEdlZ25lcnMsIGZhbGxzIG5pY2h0IGFuZ2VnZWJlbiBTZWxlY3RFbmVteS4KKwlwbCAgLSBDYXN0ZXIuCisJbXNnIC0gTmFjaHJpY2h0IGZhbGxzIEdlZ25lciBuaWNodCBhbndlc2VuZCBpc3QuCisKK0JFU0NIUkVJQlVORzoKKwlGaW5kZXQgZWluZW4gR2VnbmVyLCB6LkIuIGZ1ZXIgZWluZW4gQW5ncmlmZnNzcHJ1Y2guCisJCitSVUVDS0dBQkVXRVJUOgorCURlciBBdXNlcndhZWhsdGUgOi0pCisKK0JFTUVSS1VOR0VOOgorCURlciBHZWduZXIgd2lyZCBhdWYgamVkZW4gRmFsbCBhbmdlZ3JpZmZlbi4KKworU0lFSEUgQVVDSDoKKwlGaW5kTGl2aW5nVmljdGltCmRpZmYgLS1naXQgYS9kb2MvbGZ1bi9GaW5kRmFyRW5lbXlWaWN0aW0gYi9kb2MvbGZ1bi9GaW5kRmFyRW5lbXlWaWN0aW0KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZTQzZGRhNgotLS0gL2Rldi9udWxsCisrKyBiL2RvYy9sZnVuL0ZpbmRGYXJFbmVteVZpY3RpbQpAQCAtMCwwICsxLDMwIEBACitGaW5kRmFyRW5lbXlWaWN0aW0oKQorCitGVU5LVElPTjoKKwlvYmplY3QgRmluZEZhckVuZW15VmljdGltKHN0cmluZyB3ZW4sIG9iamVjdCBwbCwgc3RyaW5nIG1zZywKKwkgICAgICAgICAgICAgICAgICAgICAgICAgIGludCBtaW4sIGludCBtYXgpCisKK0RFRklOSUVSVCBJTjoKKwkvc3RkL3NwZWxsYm9vay5jCisKK0FSR1VNRU5URToKKwl3ZW4gLSBpZCBkZXMgZ2V3dWVuc2NodGVuIEdlZ25lcnMsIFNlbGVjdEZhckVuZW15IGZhbGxzIG4vYS4KKwlwbCAgLSBDYXN0ZXIuCisJbXNnIC0gTmFjaHJpY2h0IGZhbGxzIEdlZ25lciBuaWNodCBhbndlc2VuZCBpc3QuCisJbWluIC0gbWluaW1hbGUgS2FtcGZyZWloZQorCW1heCAtIG1heGltYWxlIEthbXBmcmVpaGUKKworQkVTQ0hSRUlCVU5HOgorCUZpbmRldCBlaW5lbiBHZWduZXIgYXVzIEthbXBmcmVpaGUgPG1pbj4gYmlzIDxtYXg+CisJei5CLiBmdWVyIGVpbmVuIEFuZ3JpZmZzc3BydWNoLgorCQorUlVFQ0tHQUJFV0VSVDoKKwlEZXIgQXVzZXJ3YWVobHRlIDotKQorCitCRU1FUktVTkdFTjoKKwkxLiBEZXIgR2VnbmVyIHdpcmQgYXVmIGplZGVuIEZhbGwgYW5nZWdyaWZmZW4uCisJMi4gRGllIFJlaWhlbmFuZ2FiZW4gd2VyZGVuIE5JQ0hUIG1pdCBTa2lsbGF0dHJpYnV0ZW4gbW9kaWZpemllcnQuCisJMy4gRGllIEFuZ2FiZSBkZXIgUmVpaGUgaXN0IGFic29sdXQuCisKK1NJRUhFIEFVQ0g6CisJdGVhbXMsIEZpbmRFbmVteVZpY3RpbSwgRmluZE5lYXJFbmVteVZpY3RpbSwgRmluZERpc3RhbnRFbmVteVZpY3RpbQpkaWZmIC0tZ2l0IGEvZG9jL2xmdW4vRmluZEdyb3VwIGIvZG9jL2xmdW4vRmluZEdyb3VwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmVjMWM2OTMKLS0tIC9kZXYvbnVsbAorKysgYi9kb2MvbGZ1bi9GaW5kR3JvdXAKQEAgLTAsMCArMSw3NiBAQAorRmluZEdyb3VwKCkKKworRlVOS1RJT046CisgICAgb2JqZWN0KkZpbmRHcm91cChvYmplY3QgcGwsaW50IHdobyk7CisKK0RFRklOSUVSVCBJTjoKKyAgICAvc3RkL3NwZWxsYm9vay5jCisKK0FSR1VNRU5URToKKyAgICBwbAorICAgICAgTGViZXdlc2VuLCB2b24gd2VsY2hlbSBkaWUgRnJldW5kZSBvZGVyIEZlaW5kZSBpbiBkZXIgVW1nZWJ1bmcKKyAgICAgIGdlZnVuZGVuIHdlcmRlbiBzb2xsZW4uCisgICAgd2hvCisgICAgICBGbGFnLCB3ZWxjaGVzIGFuemVpZ3QsIG9iIEZyZXVuZGUgb2RlciBGZWluZGUgZ2VmdW5kZW4gd2VyZGVuCisgICAgICBzb2xsZW4gKEtvbnN0YW50ZW4gZGVmaW5pZXJ0IGluICcvc3lzL25ld19za2lsbHMuaCcpOgorICAgICAgICBGR19FTkVNSUVTIC0gKFdlcnQgLTEpIEZlaW5kZSBzb2xsZW4gZ2VmdW5kZW4gd2VyZGVuCisgICAgICAgIEZHX0ZSSUVORFMgLSAoV2VydCAgMSkgRnJldW5kZSBzb2xsZW4gZ2VmdW5kZW4gd2VyZGVuCisgICAgICAgIEZHX0FMTCAgICAgLSAoV2VydCAgMCkgYWxsZSBMZWJld2VzZW4gc29sbGVuIGdlZnVuZGVuIHdlcmRlbgorCitSVWVDS0dBQkVXRVJUOgorICAgIEFycmF5IG1pdCBnZWZ1bmRlbmVuIExlYmV3ZXNlbgorCitCRVNDSFJFSUJVTkc6CisgICAgQmVpIFNwZWxscywgZGllIHNpY2ggYXVmIG1laHJlcmUgR2VnbmVyIGF1c3dpcmtlbiBvZGVyIGJlaSBkZW5lbiBtYW4KKyAgICBwZXIgSGFuZCBlaW4gT3BmZXIgYXVzd2FlaGxlbiBtb2VjaHRlLCBsYWVzc3Qgc2ljaCBtaXR0ZWxzIGRlcgorICAgIEZ1bmt0aW9uIEZpbmRHcm91cCgpIGVpbmUgTGlzdGUgdm9uIExlYmV3ZXNlbiBlcm1pdHRlbG4sIHdlbGNoZSBpbgorICAgIGRlciBVbWdlYnVuZyB2b24gPHBsPiB6dSBmaW5kZW4gc2luZC4KKyAgICBKZSBuYWNoZGVtLCB3YXMgbWFuIGRlbm4gZ2VuYXUgdm9yaGF0LCBrYW5uIG1hbiBzaWNoIHZvbiBkZXIKKyAgICBGdW5rdGlvbiBmcmV1bmRsaWNoIG9kZXIgZmVpbmRsaWNoIGdlc2lubnRlIExlYmV3ZXNlbiBoZXJhdXNzdWNoZW4KKyAgICBsYXNzZW4uCisgICAgV2lsbCBtYW4gZGllIGZyZXVuZGxpY2ggZ2VzaW5udGVuIExlYmV3ZXNlbiBlcm1pdHRlbG4sIHNvIHVlYmVyZ2lidAorICAgIG1hbiBpbiA8d2hvPiBkaWUgS29uc3RhbnRlIEZHX0ZSSUVORFMsIGJlaSBmZWluZGxpY2ggZ2VzaW5udGVuIGRpZQorICAgIEtvbnN0YW50ZSBGR19FTkVNSUVTLCB1bmQgd2VubiBtYW4gYWxsZSBMZWJld2VzZW4gYmVrb21tZW4gbW9lY2h0ZQorICAgIHNjaGxpZXNzbGljaCBGR19BTEwuCisgICAgQmVpIGRlciBBdXN3YWhsIGdlbHRlbiBmb2xnZW5kZSBSZWdlbG46CisgICAgICAoMSkgTGViZXdlc2VuLCBtaXQgZGVuZW4gPHBsPiBpbSBLYW1wZiBpc3QsIHNpbmQgZ3J1bmRzYWV0emxpY2gKKyAgICAgICAgICBmZWluZGxpY2ggZ2VzaW5udC4KKyAgICAgICgyKSBUZWFtbWl0Z2xpZWRlciB2b24gPHBsPiBzaW5kIGdydW5kc2FldHpsaWNoIGZyZXVuZGxpY2gKKyAgICAgICAgICBnZXNpbm50LgorICAgICAgKDMpIFNwaWVsZXIgc2luZCBnZWdlbnVlYmVyIFNwaWVsZXJuIGZyZXVuZGxpY2ggZ2VzaW5udCwgTlBDcworICAgICAgICAgIGdlZ2VudWViZXIgTlBDcy4gTlBDcyBrYW5uIG1hbiBoaWVyYmVpIG1pdCBIaWxmZSBkZXIgUHJvcGVydHkKKyAgICAgICAgICBQX0ZSSUVORCBkZW4gU3BpZWxlcm4genVvcmRuZW4uCisgICAgICAoNCkgRGFyYXVzIGZvbGd0IG5hdHVlcmxpY2gsIGRhc3MgU3BpZWxlciB1bmQgTlBDcyBncnVuZHNhZXR6bGljaAorICAgICAgICAgIGVpbmUgZmVpbmRsaWNoZSBFaW5zdGVsbHVuZyBnZWdlbnVlYmVyIGhhYmVuLCBzb2Zlcm4gZGllIE5QQ3MKKyAgICAgICAgICBuaWNodCBkaWUgUHJvcGVydHkgUF9GUklFTkQgZ2VzZXR6dCBoYWJlbgorICAgICAgICAgICAod2FzIHN0YW5kYXJkbWFlc3NpZyBuYXR1ZXJsaWNoIG5pY2h0IGRlciBGYWxsIGlzdCkuCisgICAgICAoNSkgTmV0enRvdGUgd2VyZGVuIG5pY2h0IGVya2FubnQuCisgICAgICAoNikgTWFnaWVyIHdlcmRlbiBuaWNodCBlcmthbm50LCB3ZW5uIHNpZSB1bnNpY2h0YmFyIHNpbmQuCisgICAgICAoNykgRWluIE1hZ2llciB3aXJkIGFscyBmZWluZGxpY2ggZ2VzaW5udCBudXIgZGFubiBlcmthbm50LCB3ZW5uCisgICAgICAgICAgPHBsPiBtaXQgaWhtIGltIEthbXBmIGlzdC4KKyAgICAgICg2KSBTdWNodCBtYW4gZmVpbmRsaWNoIGdlc2lubnRlIExlYmV3ZXNlbiwgc28gd2VyZGVuIGRpZSwgd2VsY2hlCisgICAgICAgICAgZWluZSB2b24gZGVuIFByb3BlcnRpZXMgUF9OT19BVFRBQ0sgb2RlciBQX05PX0dMT0JBTF9BVFRBQ0sKKyAgICAgICAgICBnZXNldHp0IGhhYmVuLCBuaWNodCBlcmthbm50LgorICAgIERpZSBQcm9wZXJ0eSBQX0ZSSUVORCBzb2xsdGUgbWFuIGluIE5QQ3Mgc2V0emVuLCBkaWUgZGVtIFNwaWVsZXIKKyAgICBoaWxmcmVpY2ggYmVpc2VpdGUgc3RlaGVuLCB6LkIuIHZvbSBTcGllbGVyIGJlc2Nod29yZW5lIEhpbGZzTlBDcy4KKworQkVJU1BJRUxFOgorICAgIFdlbm4gbWFuIGVpbmVuIEZldWVyYmFsbCBuYWNoIGplbWFuZGVtIHdpcmZ0LCBzbyB0cmlmZnQgZGllc2VyIHVudGVyCisgICAgVW1zdGFlbmRlbiBhdWNoIGFuZGVyZSwgd2VubiBlciBncm9zcyBnZW51ZyBpc3QuIE1hbiBuaW1tdCBoaWVyYmVpCisgICAgYW4sIGRhc3Mgc2ljaCBkaWUgZnJldW5kbGljaCBnZXNpbm50ZW4gTGViZXdlc2VuIGRlcyBHZWduZXJzIGF1Y2gKKyAgICBuYWVoZXIgYmVpIGlobSBiZWZpbmRlbiBhbHMgZGllIGZlaW5kbGljaCBnZXNpbm50ZW46CisgICAgICB2aWN0aW0tPkRlZmVuZCg1MDAsRFRfRklSRSwoW1NQX1NIT1dfREFNQUdFOjFdKSxjYXN0ZXIpOworICAgICAgdmljdGltTGlzdD1GaW5kR3JvdXAodmljdGltLEZHX0ZSSUVORFMpOworICAgICAgbWFwX29iamVjdHModmljdGltTGlzdCwKKyAgICAgICAgICAgICAgICAgICAgICAiRGVmZW5kIiwKKyAgICAgICAgICAgICAgICAgICAgICAxMDAsCisgICAgICAgICAgICAgICAgICAgICAgRFRfRklSRSwKKyAgICAgICAgICAgICAgICAgICAgICAoW1NQX1NIT1dfREFNQUdFOjFdKSwKKyAgICAgICAgICAgICAgICAgICAgICBjYXN0ZXIpOworICAgIEhpZXJtaXQgdHJpZmZ0IG1hbiBhbHNvIGF1Y2ggZGllIEZyZXVuZGUgdm9uIDx2aWN0aW0+LgorCitTSUVIRSBBVUNIOgorICAgIEZpbmRHcm91cE4oKSwgRmluZEdyb3VwUCgpLCBQX0ZSSUVORCwgUF9OT19HTE9CQUxfQVRUQUNLCisKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KK0xhc3QgbW9kaWZpZWQ6IE1vbiBKYW4gMjggMjE6NDU6MDAgMjAwMiBieSBUaWFtYWsKZGlmZiAtLWdpdCBhL2RvYy9sZnVuL0ZpbmRHcm91cE4gYi9kb2MvbGZ1bi9GaW5kR3JvdXBOCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjgzNjRmNzcKLS0tIC9kZXYvbnVsbAorKysgYi9kb2MvbGZ1bi9GaW5kR3JvdXBOCkBAIC0wLDAgKzEsNDUgQEAKK0ZpbmRHcm91cE4oKQorCitGVU5LVElPTjoKKwlvYmplY3QqRmluZEdyb3VwTihvYmplY3QgcGwsaW50IHdobyxpbnQgbik7CisKK0RFRklOSUVSVCBJTjoKKwkvc3RkL3NwZWxsYm9vay5jCisKK0FSR1VNRU5URToKKwlwbAorCSAgTGViZXdlc2VuLCB2b24gd2VsY2hlbSBkaWUgRnJldW5kZSBvZGVyIEZlaW5kZSBpbiBkZXIgVW1nZWJ1bmcKKwkgIGdlZnVuZGVuIHdlcmRlbiBzb2xsZW4uCisJd2hvCisJICBGbGFnLCB3ZWxjaGVzIGFuemVpZ3QsIG9iIEZyZXVuZGUgb2RlciBGZWluZGUgZ2VmdW5kZW4gd2VyZGVuCisJICBzb2xsZW4gKEtvbnN0YW50ZW4gZGVmaW5pZXJ0IGluICcvc3lzL25ld19za2lsbHMuaCcpOgorCSAgICBGR19FTkVNSUVTIC0gKFdlcnQgLTEpIEZlaW5kZSBzb2xsZW4gZ2VmdW5kZW4gd2VyZGVuCisJICAgIEZHX0ZSSUVORFMgLSAoV2VydCAgMSkgRnJldW5kZSBzb2xsZW4gZ2VmdW5kZW4gd2VyZGVuCisJICAgIEZHX0FMTCAgICAgLSAoV2VydCAgMCkgYWxsZSBMZWJld2VzZW4gc29sbGVuIGdlZnVuZGVuIHdlcmRlbgorCW4KKwkgIEFuemFobCBkZXIgTGViZXdlc2VuLCBkaWUgenVydWVja2dlZ2ViZW4gd2VyZGVuIHNvbGxlbi4KKwkgIEhpZXJiZWkgZ2VodCB2b3JoZXIgbm9jaCBkYXMgU2tpbGxhdHRyaWJ1dGUgU0FfRVhURU5TSU9OIGVpbiEKKwkgIEVzIHdpcmQgbWluZGVzdGVucyAxIExlYmV3ZXNlbiB6dXJ1ZWNrZ2VsaWVmZXJ0IChzb2Zlcm4gZ2VmdW5kZW4pLgorCitSVWVDS0dBQkVXRVJUOgorCUFycmF5IG1pdCBnZWZ1bmRlbmVuIExlYmV3ZXNlbgorCitCRVNDSFJFSUJVTkc6CisJQXVzZ2VzdWNodCB3ZXJkZW4gZGllIExlYmV3ZXNlbiBnZW5hdXNvIHdpZSBiZWkgRmluZEdyb3VwKCksIG51cgorCWRhc3MgenVtIFNjaGx1c3MgZGllIEFuemFobCBub2NoIGJlZ3Jlbnp0IHdpcmQuCisKK0JFSVNQSUVMRToKKwlNYW4gbW9lY2h0ZSBtYXhpbWFsIDUgRmVpbmRlIGZpbmRlbiwgZGllIG1hbiBnbGVpY2h6ZWl0aWcgbWl0IGVpbmVtCisJU3BlbGwgYmVsZWdlbiBrYW5uOgorCSAgZW5lbXlMaXN0PUZpbmRHcm91cE4oY2FzdGVyLEZHX0VORU1JRVMsNSk7CisJRGllcyBnaWx0IGplZG9jaCBudXIgYmVpIFNBX0VYVEVOU0lPTj09MTAwLCBzb25zdCB3aXJkCisJZGVtZW50c3ByZWNoZW5kIG1laHIgb2RlciB3ZW5pZ2VyIHp1cnVlY2tnZWdlYmVuLgorCSAoYWxzbyBiZWkgU0FfRVhURU5TSU9OPT0yMDAgZG9wcGVsdCBzbyB2aWVsZSAtPiAxMCBMZWJld2VzZW4pCisJRGFzIFNraWxsYXR0cmlidXRlIFNBX0VYVEVOU0lPTiBrYW5uIGF1Y2ggZHVyY2ggU0FfUVVBTElUWQorCXZlcmFlbmRlcnQgd29yZGVuIHNlaW47IGRhcyBzb2xsdGUgYmVhY2h0ZXQgd2VyZGVuLgorCitTSUVIRSBBVUNIOgorCUZpbmRHcm91cCgpLCBGaW5kR3JvdXBQKCksIFBfRlJJRU5ELCBQX05PX0dMT0JBTF9BVFRBQ0sKKworLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorTGFzdCBtb2RpZmllZDogTW9uIEphbiAyNSAxNTowNDozMSAxOTk5IGJ5IFBhdHJ5bgpkaWZmIC0tZ2l0IGEvZG9jL2xmdW4vRmluZEdyb3VwUCBiL2RvYy9sZnVuL0ZpbmRHcm91cFAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZWZlZjU2OAotLS0gL2Rldi9udWxsCisrKyBiL2RvYy9sZnVuL0ZpbmRHcm91cFAKQEAgLTAsMCArMSw0NiBAQAorRmluZEdyb3VwUCgpCisKK0ZVTktUSU9OOgorCW9iamVjdCpGaW5kR3JvdXBQKG9iamVjdCBwbCxpbnQgd2hvLGludCBwcik7CisKK0RFRklOSUVSVCBJTjoKKwkvc3RkL3NwZWxsYm9vay5jCisKK0FSR1VNRU5URToKKwlwbAorCSAgTGViZXdlc2VuLCB2b24gd2VsY2hlbSBkaWUgRnJldW5kZSBvZGVyIEZlaW5kZSBpbiBkZXIgVW1nZWJ1bmcKKwkgIGdlZnVuZGVuIHdlcmRlbiBzb2xsZW4uCisJd2hvCisJICBGbGFnLCB3ZWxjaGVzIGFuemVpZ3QsIG9iIEZyZXVuZGUgb2RlciBGZWluZGUgZ2VmdW5kZW4gd2VyZGVuCisJICBzb2xsZW4gKEtvbnN0YW50ZW4gZGVmaW5pZXJ0IGluICcvc3lzL25ld19za2lsbHMuaCcpOgorCSAgICBGR19FTkVNSUVTIC0gKFdlcnQgLTEpIEZlaW5kZSBzb2xsZW4gZ2VmdW5kZW4gd2VyZGVuCisJICAgIEZHX0ZSSUVORFMgLSAoV2VydCAgMSkgRnJldW5kZSBzb2xsZW4gZ2VmdW5kZW4gd2VyZGVuCisJICAgIEZHX0FMTCAgICAgLSAoV2VydCAgMCkgYWxsZSBMZWJld2VzZW4gc29sbGVuIGdlZnVuZGVuIHdlcmRlbgorCXByCisJICBXYWhyc2NoZWlubGljaGtlaXQsIG1pdCBkZXIgZWluIExlYmV3ZXNlbiBhdXNnZXN1Y2h0IHdlcmRlbiBzb2xsLgorCSAgSGllcmJlaSBnZWh0IHZvcmhlciBub2NoIGRhcyBTa2lsbGF0dHJpYnV0ZSBTQV9FWFRFTlNJT04gZWluIQorCitSVWVDS0dBQkVXRVJUOgorCUFycmF5IG1pdCBnZWZ1bmRlbmVuIExlYmV3ZXNlbgorCitCRVNDSFJFSUJVTkc6CisJQXVzZ2VzdWNodCB3ZXJkZW4gZGllIExlYmV3ZXNlbiBnZW5hdXNvIHdpZSBiZWkgRmluZEdyb3VwKCksIG51cgorCWRhc3MgenVtIFNjaGx1c3MgZGllIGVpbnplbG5lbiBMZWJld2VzZW4gcGVyIFp1ZmFsbCBhdXNnZXdhZWhsdAorCXdlcmRlbi4gRXMgaXN0IGFsc28gbmljaHQgZ2VzaWNoZXJ0LCBkYXNzIHVlYmVyaGF1cHQgZWluIExlYmV3ZXNlbgorCXp1cnVlY2tnZWxpZWZlcnQgd2lyZCwgdHJvdHpkZW0gd2VsY2hlIGdlZnVuZGVuIHd1cmRlbi4KKworQkVJU1BJRUxFOgorCU1hbiBtb2VjaHRlIGltIFNjaG5pdHQgNTAlIGRlciBGZWluZGUgZmluZGVuLCBkaWUgbWFuIGdsZWljaHplaXRpZworCW1pdCBlaW5lbSBTcGVsbCBiZWxlZ3Q6CisJICBlbmVteUxpc3Q9RmluZEdyb3VwUChjYXN0ZXIsRkdfRU5FTUlFUyw1MCk7CisJRGllcyBnaWx0IGplZG9jaCBudXIgYmVpIFNBX0VYVEVOU0lPTj09MTAwLCBzb25zdCB3aXJkIG1pdAorCWRlbWVudHNwcmVjaGVuZCBtZWhyIG9kZXIgd2VuaWdlciBXYWhyc2NoZWlubGljaGtlaXQgenVydWVja2dlZ2ViZW4uCisJIChhbHNvIGJlaSBTQV9FWFRFTlNJT049PTIwMCBkb3BwZWx0IHNvIHZpZWxlIC0+IDEwMCUsIGFsc28gYWxsZSkKKwlEYXMgU2tpbGxhdHRyaWJ1dGUgU0FfRVhURU5TSU9OIGthbm4gYXVjaCBkdXJjaCBTQV9RVUFMSVRZCisJdmVyYWVuZGVydCB3b3JkZW4gc2VpbjsgZGFzIHNvbGx0ZSBiZWFjaHRldCB3ZXJkZW4uCisKK1NJRUhFIEFVQ0g6CisJRmluZEdyb3VwKCksIEZpbmRHcm91cFAoKSwgUF9GUklFTkQsIFBfTk9fR0xPQkFMX0FUVEFDSworCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCitMYXN0IG1vZGlmaWVkOiBNb24gSmFuIDI1IDE1OjA0OjMxIDE5OTkgYnkgUGF0cnluCmRpZmYgLS1naXQgYS9kb2MvbGZ1bi9GaW5kTmVhckVuZW15VmljdGltIGIvZG9jL2xmdW4vRmluZE5lYXJFbmVteVZpY3RpbQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44NmQ3N2NlCi0tLSAvZGV2L251bGwKKysrIGIvZG9jL2xmdW4vRmluZE5lYXJFbmVteVZpY3RpbQpAQCAtMCwwICsxLDI1IEBACitGaW5kTmVhckVuZW15VmljdGltKCkKKworRlVOS1RJT046CisJb2JqZWN0IEZpbmROZWFyRW5lbXlWaWN0aW0oc3RyaW5nIHdlbiwgb2JqZWN0IHBsLCBzdHJpbmcgbXNnKQorCitERUZJTklFUlQgSU46CisJL3N0ZC9zcGVsbGJvb2suYworCitBUkdVTUVOVEU6CisJd2VuIC0gaWQgZGVzIGdld3VlbnNjaHRlbiBHZWduZXJzLCBTZWxlY3ROZWFyRW5lbXkgZmFsbHMgbi9hLgorCXBsICAtIENhc3Rlci4KKwltc2cgLSBOYWNocmljaHQgZmFsbHMgR2VnbmVyIG5pY2h0IGFud2VzZW5kIGlzdC4KKworQkVTQ0hSRUlCVU5HOgorCUZpbmRldCBlaW5lbiBpbSBOYWhrYW1wZiBlcnJlaWNoYmFyZW4gR2VnbmVyLAorCXouQi4gZnVlciBlaW5lbiBBbmdyaWZmc3NwcnVjaC4KKwkKK1JVRUNLR0FCRVdFUlQ6CisJRGVyIEF1c2Vyd2FlaGx0ZSA6LSkKKworQkVNRVJLVU5HRU46CisJRGVyIEdlZ25lciB3aXJkIGF1ZiBqZWRlbiBGYWxsIGFuZ2VncmlmZmVuLgorCitTSUVIRSBBVUNIOgorCXRlYW1zLCBGaW5kRW5lbXlWaWN0aW0sIEZpbmRGYXJFbmVteVZpY3RpbSwgRmluZERpc3RhbnRFbmVteVZpY3RpbQpkaWZmIC0tZ2l0IGEvZG9jL2xmdW4vRmluZFBvdGlvbiBiL2RvYy9sZnVuL0ZpbmRQb3Rpb24KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNDE3Yzg5YgotLS0gL2Rldi9udWxsCisrKyBiL2RvYy9sZnVuL0ZpbmRQb3Rpb24KQEAgLTAsMCArMSw0OSBAQAorRmluZFBvdGlvbigpCisKK0ZVTktUSU9OOgorICAgICB2YXJhcmdzIGludCBGaW5kUG90aW9uKHN0cmluZyBzKTsKKworREVGSU5JRVJUIElOOgorICAgICAvc3RkL3BsYXllci9wb3Rpb24uYworCitBUkdVTUVOVEU6CisgICAgIHN0cmluZyBzCisgICAgICAgQXVzZ2FiZXRleHQuIFdlbm4gMC9MZWVyc3RyaW5nLCB3aXJkIERlZmF1bHQgdmVyd2VuZGV0LgorCitCRVNDSFJFSUJVTkc6CisgICAgIERpZXNlIEZ1bmt0aW9uIGdpYnQgZWluZW0gYXVmcnVmZW5kZW4gU3BpZWxlciBldmVudHVlbGwgZGllc2VuIFpULgorICAgICAKKyAgICAgRGFzIGF1ZnJ1ZmVuZGUgU3BpZWxlcm9iamVrdCBtdXNzIGRhZnVlcjoKKyAgICAgKiBkaWVzZW4gWlQgaW0gUG90aW9ubWFzdGVyIGluIHNlaW5lciBMaXN0ZSBlaW5nZXRyYWdlbiBoYWJlbgorICAgICAqIGRpZXNlbiBaVCBpbiBkZXIgTGlzdGUgZGVyIGJla2FubnRlbiBUcmFlbmtlIGhhYmVuIChkdXJjaAorICAgICAgIE9yYWtlbCBhbHNvIGZ1ZXIgaWhuIGF1Y2ggZnJlaWdlc2NoYWx0ZXQpCisgICAgICogZGFyZiBrZWluZSBQbGF5ZXJraWxscyBoYWJlbiAoUF9LSUxMUykKKyAgICAgKiBkYXJmIG5pY2h0IGltIEVkaXRpZXJtb2R1cyBzZWluCisgICAgICogZGFyZiBrZWluIEdlaXN0IHNlaW4gKEF1c25haG1lOiBHZWlzdGVyc2NobG9zcykKKworICAgICBXZW5uIGFsbGUgS3JpdGVyaWVuIGVyZm9sZ3JlaWNoIGVyZnVlbGx0IHNpbmQsIHdpcmQgJ3MnIG9kZXIgCisgICAgICJEdSBmaW5kZXN0IGVpbmVuIFphdWJlcnRyYW5rLCBkZW4gRHUgc29mb3J0IHRyaW5rc3QuIiBhdXNnZWdlYmVuCisgICAgIHVuZCBkZW0gU3BpZWxlciBnZ2YgZGllIFdhaGwgZGVyIEF0dHJpYnV0ZSBnZWdlYmVuLgorCitSVWVDS0dBQkVXRVJUOgorICAgICAwIGJlaSBOaWNodHZlcmdhYmUsIDEgYmVpIGVyZm9sZ3JlaWNoZXIgVmVyZ2FiZS4KKworQkVJU1BJRUxFOgorICAgICBzdHJpbmcgZGV0YWlsX3BhcGllcmUoKSB7CisgICAgICAgaWYgKHRoaXNfcGxheWVyKCktPkZpbmRQb3Rpb24oCisgICAgICAgICBicmVha19zdHJpbmcoIkJlaW0gUnVtd3VlaGxlbiBpbiBkZW4gUGFwaWVyZW4gZW50ZGVja3N0IER1IGVpbmVuICIKKyAgICAgICAgICAgICAgICAgICAgICAia2xlaW5lbiBaYXViZXJ0cmFuaywgZGVuIER1IHNvZm9ydCB0cmlua3N0LiIsIDc4KSkpCisgICAgICAgICByZXR1cm4gIiI7ICAKKyAgICAgICAgIC8vIEVzIG11c3MgZWluIFN0cmluZyB6dXJ1ZWNrZ2VnZWJlbiB3ZXJkZW4sIGRhIG1hbiBzb25zdAorICAgICAgICAgLy8gZGllIEZlaGxlcm1lbGR1bmcgIlNvd2FzIHNpZWhzdCBkdSBoaWVyIG5pY2h0LiIgYmVrb21tdAorICAgICAgIGVsc2UKKyAgICAgICAgIHJldHVybiAiRGllIFBhcGllcmUgc2luZCBhbGxlIHVuYmVzY2hyaWZ0ZXQuXG4iOworICAgICB9CisKK1NJRUhFIEFVQ0g6CisgICAgIFNvbnN0aWdlczogemF1YmVydHJhZW5rZSwgL3NlY3VyZS9wb3Rpb25tYXN0ZXIuYywgL3Jvb20vb3Jha2VsLmMKKyAgICAgVmVyd2FuZHQ6ICBBZGRLbm93blBvdGlvbigpLCBSZW1vdmVLbm93blBvdGlvbigpLCBJbkxpc3QoKQorICAgICBQcm9wczogICAgIFBfUE9USU9OUk9PTVMsIFBfS05PV05fUE9USU9OUk9PTVMKKyAgICAgQmVmZWhsOiAgICB0cmFlbmtlIChmdWVyIE1hZ2llciB6dW0gRWluc2NoYWx0ZW4gZGVzIEZpbmRlbnMgdm9uIFpUcykKKworNi5GZWIgMjAxNiBHbG9pbnNvbgpkaWZmIC0tZ2l0IGEvZG9jL2xmdW4vRmluZFJhbmdlZFRhcmdldCBiL2RvYy9sZnVuL0ZpbmRSYW5nZWRUYXJnZXQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNzU5NzBmYgotLS0gL2Rldi9udWxsCisrKyBiL2RvYy9sZnVuL0ZpbmRSYW5nZWRUYXJnZXQKQEAgLTAsMCArMSw0MCBAQAorRmluZFJhbmdlZFRhcmdldCgpCisKK0ZVTktUSU9OOgorICAgIHN0YXRpYyBzdHJpbmcgRmluZFJhbmdlZFRhcmdldChzdHJpbmcgc3RyLCBtYXBwaW5nIHNob290KQorCitERUZJTklFUlQgSU46CisgICAgL3N0ZC9yYW5nZWRfd2VhcG9uLmMKKworQVJHVU1FTlRFOgorICAgIHN0cmluZyBzdHIgICAgLSBTY2h1c3NzeW50YXgKKyAgICBtYXBwaW5nIHNob290IC0gU2NodXNzZGF0ZW4KKworQkVTQ0hSRUlCVU5HOgorICAgIEVyaGFlbHQgdm9uIC9zdGQvcmFuZ2VkX3dlYXBvbjo6Y21kX3Nob290KCkgZGllIFNjaHVzc2RhdGVuIHVuZCBlaW5lCisgICAgZXZlbnR1ZWxsIGJlcmVpdHMgbW9kaWZpemllcnRlIFN5bnRheCB1bmQgdmVyc3VjaHQgZWluZW4gcGFzc2VuZGVuIEdlZ25lcgorICAgIGltIFJhdW0gb2RlciBpbSBHZWJpZXQgKFBfU0hPT1RJTkdfQVJFQSkgenUgZmluZGVuLgorICAgIERpZXNlciB3aXJkIGluIFNJX0VORU1ZIGltIE1hcHBpbmcgJ3Nob290JyBlaW5nZXRyYWdlbiB1bmQgZWluIFdlcnQgIT0gMAorICAgIHp1cnVlY2tnZWdlYmVuLgorCitSVUVDS0dBQkVXRVJUOgorICAgIDAgICAgIGJlaSBGZWhsc2NobGFnCisgICAgIT0gMCAgYmVpIGd1ZWx0aWdlbSBTSV9FTkVNWSBpbiAnc2hvb3QnCisKK0JFTUVSS1VOR0VOOgorICAgICdzaG9vdCcgZW50aGFlbHQgbm9ybWFsZXJ3ZWlzZSBmb2xnZW5kZSBFaW50cmFlZ2U6CisgICAgKiBLZXkgUF9XRUFQT046ICAgICAgIGRpZSBTY2h1c3N3YWZmZQorICAgICogS2V5IFBfV0VBUE9OX1RZUEU6ICBQX0FNTVVOSVRJT04sIGFsc28gZGllIE11bml0aW9ucy1JRAorICAgICogS2V5IFBfU1RSRVRDSF9USU1FOiBQX1NUUkVUQ0hfVElNRSBkZXIgV2FmZmUKKyAgICAqIEtleSBQX1dDOiAgICAgICAgICAgUF9TSE9PVElOR19XQyBkZXIgV2FmZmUKKworU0lFSEUgQVVDSDoKKyAgICBHZW5lcmVsbDogIFBfQU1NVU5JVElPTiwgUF9TSE9PVElOR19XQywgUF9TVFJFVENIX1RJTUUKKyAgICBNZXRob2RlbjogIHNob290X2RhbShMKSwgY21kX3Nob290KEwpCisgICAgR2ViaWV0OiAgICBQX1JBTkdFLCBQX1NIT09USU5HX0FSRUEsIFBfVEFSR0VUX0FSRUEKKyAgICBUZWFtOiAgICAgIFByZXNlbnRQb3NpdGlvbihMKQorICAgIFN1Y2hlOiAgICAgcHJlc2VudCwgU2VsZWN0RmFyRW5lbXkoTCkKKyAgICBTeW50YXg6ICAgIF91bnBhcnNlZF9hcmdzKEwpCisgICAgU29uc3RpZ2VzOiBmZXJud2FmZmVuCisKKzI4Lkp1bCAyMDE0IEdsb2luc29uClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZG9jL2xmdW4vRmxlZSBiL2RvYy9sZnVuL0ZsZWUKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNmE2M2Q4OQotLS0gL2Rldi9udWxsCisrKyBiL2RvYy9sZnVuL0ZsZWUKQEAgLTAsMCArMSw1NyBAQAorRmxlZSgpCisKK0ZVTktUSU9OOgorICAgICAgICBwdWJsaWMgdmFyYXJncyB2b2lkIEZsZWUoIG9iamVjdCBvbGRlbnYsIGludCBmb3JjZSApCisKK0RFRklOSUVSVCBJTjoKKyAgICAgICAgL3N5cy9saXZpbmcvY29tYmF0LmgKKyAgICAgICAgL3N0ZC9saXZpbmcvY29tYmF0LmMKKworQVJHVU1FTlRFOgorICAgICAgICBvbGRlbnYKKyAgICAgICAgICBFaW4gUmF1bSBvZGVyIDAuCisgICAgICAgICAgV2lyZCBlaW4gUmF1bSBhbmdlZ2ViZW4sIGRhbm4gbXVzcyBzaWNoIGRlciBGbHVlY2h0ZW5kZSBpbiBkaWVzZW0KKyAgICAgICAgICBSYXVtIGJlZmluZGVuLCBkYW1pdCBlciB2ZXJzdWNodCwgenUgZmx1ZWNodGVuLCBlcyBzZWkgZGVubiwgZGFzCisgICAgICAgICAgb3B0aW9uYWxlIEZsYWcgImZvcmNlIiBpc3QgZ2VzZXR6dC4KKyAgICAgICAgZm9yY2UKKyAgICAgICAgICAxLCB3ZW5uIGRlciBzcGllbGVyIHVuYWJoYWVuZ2lnIHZvbiBzZWluZXIgVm9yc2ljaHQgZmx1ZWNodGVuIHNvbGwuCisgICAgICAgICAgMCBzb25zdC4KKworQkVTQ0hSRUlCVU5HOgorICAgICAgICBGbGVlKCkgd2lyZCBpbSBoZWFydF9iZWF0KCkgb2RlciB2b24gQ2hlY2tXaW1weUFuZEZsZWUoKSBhdWZnZXJ1ZmVuLAorICAgICAgICB1bSBkZW4gU3BpZWxlciBmbHVlY2h0ZW4genUgbGFzc2VuLiBNYW4ga2FubiBkaWUgRnVua3Rpb24gaW0gU3BpZWxlcgorICAgICAgICBhdWNoICJ2b24gSGFuZCIgYXVmcnVmZW4sIGJlaXNwaWVsc3dlaXNlIGluIGVpbmVtIFNwZWxsLiBNYW4gc29sbHRlCisgICAgICAgIGRhbm4gZm9yY2UgYXVmIDEgc2V0emVuLCBkYW1pdCBkZXIgU3BpZWxlciB1bmFiaGFlbmdpZyB2b24gc2VpbmVyCisgICAgICAgIFZvcnNpY2h0IGZsdWVjaHRldC4KKyAgICAgICAgSGllcmJlaSBrYW5uIGRpZSBGbHVjaHQgZGF6dSBmdWVocmVuLCBkYXNzIG1hbiBkaWUgVGVhbXJlaWhlIHdlY2hzZWx0LAorICAgICAgICBhYmVyIGF1Y2gsIGRhc3MgbWFuIGRlbiBSYXVtIHZlcmxhZXNzdC4KKyAgICAgICAgCitSVWVDS0dBQkVXRVJUOgorICAgICAgICBrZWluZXIKKworQkVNRVJLVU5HRU46CisKK0JFSVNQSUVMRToKKyAgICAgICAgdGhpc19wbGF5ZXIoKS0+RmxlZSgwLCAxKTsKKyAgICAgICAgLy8gRGVyIFNwaWVsZXIgc29sbCBmbHVlY2h0ZW4sIGVnYWwsIG9iIHNlaW5lIExlYmVuc3B1bmt0ZSBnZXJpbmdlcgorICAgICAgICAvLyBhbHMgc2VpbmUgVm9yc2ljaHQgc2luZCB1bmQgdW5hYmhhZW5naWcgdm9uIHNlaW5lciBQb3NpdGlvbi4KKyAgICAgICAgCisgICAgICAgIHRoaXNfcGxheWVyKCktPkZsZWUoIGZpbmRfb2JqZWN0KCIvZ2lsZGVuL2FiZW50ZXVyZXIiKSApOworICAgICAgICAvLyBEZXIgU3BpZWxlciBzb2xsIGZsdWVjaHRlbiwgd2VubiBlciBzaWNoIGluIGRlciBBYmVudGV1cmVyZ2lsZGUKKyAgICAgICAgLy8gYmVmaW5kZXQgKG9kZXIgd2VubiBkaWVzZSBuaWNodCBleGlzdGllcnQpCisgICAgICAgIAorICAgICAgICB0aGlzX3BsYXllcigpLT5GbGVlKCAiL2dpbGRlbi9hYmVudGV1cmVyIiApOworICAgICAgICAvLyBEZXIgU3BpZWxlciB3aXJkIG5pY2h0IGZsdWVjaHRlbiwgZGEgZGVyIFZlcmdsZWljaCB2b24gRGF0ZWluYW1lCisgICAgICAgIC8vIHVuZCBkZW0gUmF1bSAwIGVyZ2lidC4KKworICAgICAgICB0aGlzX3BsYXllcigpLT5GbGVlKCBmaW5kX29iamVjdCgiL2dpbGRlbi9hYmVudGV1cmVyIiksIDEpOworICAgICAgICAvLyBEZXIgU3BpZWxlciBzb2xsIGF1ZiBqZWRlbiBGYWxsIGZsdWVjaHRlbiwgZWdhbCBvYiBlciBzaWNoIGluIGRlcgorICAgICAgICAvLyBBYmVudGV1cmVyZ2lsZGUgYmVmaW5kZXQgb2RlciBuaWNodC4gR3J1bmQ6IEdlc2V0enRlcyBmb3JjZS1GbGFnLgorICAgICAgICAKKyAgICAgICAgCisgICAgICAgIAorU0lFSEUgQVVDSDoKKyAgICAgICAgQ2hlY2tXaW1weUFuZEZsZWUoKSwgRGVmZW5kKCksIGhlYXJ0X2JlYXQoKSwgCisKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KK0xhc3QgbW9kaWZpZWQ6IFdlZCBOb3YgMTIgMTQ6NDQ6NDIgMjAwMyBieSBCYW1iaQpkaWZmIC0tZ2l0IGEvZG9jL2xmdW4vRnJlZUhhbmRzIGIvZG9jL2xmdW4vRnJlZUhhbmRzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjJiZWQ5YjAKLS0tIC9kZXYvbnVsbAorKysgYi9kb2MvbGZ1bi9GcmVlSGFuZHMKQEAgLTAsMCArMSwzNiBAQAorRnJlZUhhbmRzCitGVU5LVElPTjoKKyAgICAgcHVibGljIHZhcmFyZ3MgaW50IEZyZWVIYW5kcyhvYmplY3Qgb2IpCisKK0RFRklOSUVSVCBJTjoKKyAgICAgL3N0ZC9saXZpbmcvY29tYmF0LmMKKworQVJHVU1FTlRFOgorICAgICBvYiAtIGRhcyBPYmpla3QsIGRlc3NlbiBIYW5kbnV0enVuZyB2b3JiZWkgaXN0CisgICAgICAgIC0ga2FubiAwIHNlaW4sIGRhbm4gd2lyZCBQTyBiZW51dHp0CisKK1JVRUNLR0FCRVdFUlQ6CisgICAgIDAsIHdlbm4ga2VpbiBPYmpla3QgdWViZXJnZWJlbiB3dXJkZSBvZGVyIGtlaW4gUE8gZXhpc3RpZXJ0CisgICAgIDEsIHNvbnN0CisKK0JFU0NIUkVJQlVORzoKKyAgICAgQmVmcmVpdCBkaWUgSGFlbmRlIGVpbmVzIExpdmluZ3Mgdm9uIGVpbiBiZXN0aW1tdGVuIE9iamVrdC4KKyAgICAgRXMgd2VyZGVuIF9hbGxlXyBIYWVuZGUgd2llZGVyIGZyZWlnZWdlYmVuLgorCitCRUlTUElFTEU6CisgICAgID4gaGFsdGUgc2VpbCBmZXN0CisgICAgIC4uLgorICAgICB0aGlzX3BsYXllcigpLT5Vc2VIYW5kcyh0aGlzX29iamVjdCgpLDIpOworICAgICAuLi4KKworICAgICA+IGxhc3NlIHNlaWwgbG9zCisgICAgIC4uLgorICAgICB0aGlzX3BsYXllcigpLT5GcmVlSGFuZHModGhpc19vYmplY3QoKSk7CisgICAgIC4uLgorCitTSUVIRSBBVUNIOgorICAgICBQX0hBTkRTLCBQX0hBTkRTX1VTRURfQlkKKyAgICAgUF9NQVhfSEFORFMsIFBfVVNFRF9IQU5EUywgUF9GUkVFX0hBTkRTCisgICAgIFVzZUhhbmRzCisKKzEuRmViLjIwMDQgR2xvaW5zb24KZGlmZiAtLWdpdCBhL2RvYy9sZnVuL0dldEFxdWFyaXVtIGIvZG9jL2xmdW4vR2V0QXF1YXJpdW0KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uY2VhOGQ0OQotLS0gL2Rldi9udWxsCisrKyBiL2RvYy9sZnVuL0dldEFxdWFyaXVtCkBAIC0wLDAgKzEsMzcgQEAKK0dldEFxdWFyaXVtKCkKKworRlVOS1RJT046CisgICAgIHZhcmFyZ3MgcHVibGljIHN0cmluZyogR2V0QXF1YXJpdW0ob2JqZWN0IGFuZ2VsKQorCitBUkdVTUVOVEU6CisgICAgIERhcyBvcHRpb25hbGUgQXJndW1lbnQgPGFuZ2VsPiBpc3QgZGllIEFuZ2VsIHNlbGJzdC4KKworQkVTQ0hSRUlCVU5HOgorICAgICBEaWUgRnVua3Rpb24gd2lyZCBiZWltIEFuZ2VsbiBpbiBSYWV1bWVuIGdlcnVmZW4sIHdlbm4gZGllc2UgYWxzIAorICAgICBHZXdhZXNzZXJ0eXAgV19VU0VSIGdlc2V0enQgaGFiZW4gKHNpZWhlIE1hbnBhZ2UgenUgUF9XQVRFUikuCisgICAgIEF1cyBkZXIgenVydWVja2dlZ2ViZW5lbiBMaXN0ZSBkZXIgUGZhZGUgd2lyZCBlaW5lciB6dWZhZWxsaWcgYXVzLQorICAgICBnZXdhZWhsdCB1bmQgZGFzIE9iamVrdCBnZWNsb250LiAKKworUlVFQ0tHQUJFV0VSVDoKKyAgICAgU3RyaW5nLUFycmF5IG1pdCBQZmFkbmFtZW4genUgZGVuIGluIGRpZXNlbSBSYXVtIGZhbmdiYXJlbiBGaXNjaGVuLgorCitCRU1FUktVTkc6CisgICAgIE1hbiBrYW5uIGRpZSBGYW5nY2hhbmNlbiBkdXJjaCBNZWhyZmFjaG5lbm51bmcgZWluemVsbmVyIEVpbnRyYWVnZSAKKyAgICAgbW9kaWZpemllcmVuLiBFcyBtdXNzIHNpY2ggYmVpIGRlbiBFaW50cmFlZ2VuIHVtIGxhZC0gdW5kIGNsb25lYmFyZQorICAgICBPYmpla3RlIGhhbmRlbG4uCisgICAgIEZ1ZXIgc2VsYnN0cHJvZ3JhbW1pZXJ0ZSBGaXNjaGUgaXN0IGRhcyBCYXNpc29iamVrdCAKKyAgICAgL3N0ZC9pdGVtcy9maXNoaW5nL2Zpc2ggenUgdmVyd2VuZGVuLiBFaW5pZ2Ugdm9yZ2VmZXJ0aWd0ZSBGaXNjaGUgCisgICAgIGZpbmRlbiBzaWNoIGRhcnVlYmVyIGhpbmF1cyBpbiAvaXRlbXMvZmlzaGluZy9hcXVhcml1bS8KKworQkVJU1BJRUw6CisgICAgIHZhcmFyZ3Mgc3RyaW5nKiBHZXRBcXVhcml1bShvYmplY3QgYW5nZWwpIHsKKyAgICAgICByZXR1cm4gKHsiL2QvZHNjaHVuZ2VsL3Jpa3VzL3E0ZS9vYmovc3RpY2hsaW5nIiwKKyAgICAgICAgICAgICAgICAiL2QvZHNjaHVuZ2VsL3Jpa3VzL3E0ZS9vYmova2FycGZlbiIsCisgICAgICAgICAgICAgICAgIi9wL3NlaGVyL3BhcnR5bW9uc3Rlci9vYmovZmlzY2gifSk7CisgICAgIH0KKworU0lFSEUgQVVDSDoKKyAgICBQcm9wZXJ0aWVzOiBQX1dBVEVSLCBQX0ZJU0gKKworLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KK3p1bGV0enQgZ2VhZW5kZXJ0OiAyMDE0LVNlcC0wMiwgQXJhdGhvcm4KZGlmZiAtLWdpdCBhL2RvYy9sZnVuL0dldERldGFpbCBiL2RvYy9sZnVuL0dldERldGFpbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi40YmQ3MzAxCi0tLSAvZGV2L251bGwKKysrIGIvZG9jL2xmdW4vR2V0RGV0YWlsCkBAIC0wLDAgKzEsNjcgQEAKK0dldERldGFpbCgpCisKK0ZVTktUSU9OOgorICAgIHZhcmFyZ3Mgc3RyaW5nIEdldERldGFpbChzdHJpbmcga2V5LCBzdHJpbmcgcmFjZSwgaW50IHNlbnNlKQorCitERUZJTklFUlQgSU46CisgICAgL3N0ZC90aGluZy9kZXNjcmlwdGlvbi5jCisKK0FSR1VNRU5URToKKyAgICBrZXkKKyAgICAgIERhcyB6dSBlcm1pdHRlbG5kZSBEZXRhaWwuCisgICAgcmFjZQorICAgICAgUmFzc2UgZGVzIGVybWl0dGVsbmRlbiBPYmpla3RlcyAoZmFsbHMgZXMgZWluIExlYmV3ZXNlbiBpc3QpLgorICAgIHNlbnNlCisgICAgICBEaWUgQXJ0IGRlcyB6dSB1bnRlcnN1Y2hlbmRlbiBEZXRhaWxzOgorICAgICAgICBVbnRlcnN1Y2hlbiwgUmllY2hlbiwgSG9lcmVuLCBUYXN0ZW4uCisKK0JFU0NIUkVJQlVORzoKKyAgICBEaWUgQmVzY2hyZWlidW5nIGRlcyBnZXd1ZW5zY2h0ZW4gRGV0YWlscyB3aXJkIGVybWl0dGVsdC4gRGFiZWkKKyAgICB3ZXJkZW4gcmFzc2Vuc3BlemlmaXNjaGUgRGV0YWlscyBiZXJ1ZWNrc2ljaHRpZ3QuIEVzIGdpYnQgaGllcmJlaQorICAgIHZlcnNjaGllZGVuZSBEZXRhaWxhcnRlbiwgZGVyZW4gVHlwIG1hbiBpbiA8c2Vuc2U+IGFuZ2lidDoKKyAgICAgIFNFTlNFX1ZJRVcgICAgLSBGdWVyIERlZmF1bHRkZXRhaWxzIHp1bSBVbnRlcnN1Y2hlbi4KKyAgICAgIFNFTlNFX1NNRUxMICAgLSBGdWVyIERldGFpbHMsIGRpZSBtYW4gcmllY2hlbiBrYW5uLgorICAgICAgU0VOU0VfU09VTkQgICAtIEZ1ZXIgRGV0YWlscywgZGllIG1hbiBob2VyZW4ga2Fubi4KKyAgICAgIFNFTlNFX1RPVUNIICAgLSBGdWVyIERldGFpbHMsIGRpZSBtYW4gYWJ0YXN0ZW4ga2Fubi4KKyAgICAgIFNFTlNFX1JFQUQgICAgLSBGdWVyIERldGFpbHMsIGRpZSBtYW4gbGVzZW4ga2Fubi4KKworICAgIERhYmVpIGlzdCAwID09IFNFTlNFX1ZJRVcuCisKK1JVZUNLR0FCRVdFUlQ6CisgICAgRGllIEJlc2NocmVpYnVuZyBkZXMgRGV0YWlscyBvZGVyIDAsIHdlbm4gZXMgZGllc2VzIERldGFpbCBuaWNodAorICAgIGdpYnQuCisKK0JFSVNQSUVMOgorICAgIEltIGZvbGdlbmRlbiB3aXJkIGVpbiBrbGVpbmVzIFRlc3RkZXRhaWwgZ2VuZXJpZXJ0OgorICAgICAgQWRkRGV0YWlsKCJ0ZXN0IiwiRGFzIGlzdCBlaW4gVGVzdCFcbiIpOworICAgIEltIGZvbGdlbmRlbiB3aXJkIGRhcyBEZXRhaWwgZW50ZmVybnQsIHdlbm4gZXMgZXhpc3RpZXJ0LiBEaWVzIGlzdAorICAgIGVpZ2VudGxpY2ggbmljaHQgbm9ldGlnLCBkYSBSZW1vdmVEZXRhaWwoKSBkYW1pdCB6dXJlY2h0a29tbXQsIGFiZXIKKyAgICBldmVudHVlbGwgc2luZCBqYSBub2NoIHdlaXRlcmUgQWt0aW9uZW4gbm9ldGlnLgorICAgICAgaWYoR2V0RGV0YWlsKCJ0ZXN0IikpCisgICAgICB7IFJlbW92ZURldGFpbCgidGVzdCIpOworICAgICAgICAuLi4KKyAgICAgIH0KKyAgICBFaW4gR2VydWNoIGthbm4gbWFuIGZvbGdlbmRlcm1hc3NlbiBlcnpldWdlbjoKKyAgICAgIEFkZFNtZWxscygiZ29sZCIsCisgICAgICAgIChbMCAgICAgIDoiR29sZCBrYW5uIG1hbiBuaWNodCByaWVjaGVuIVxuIiwKKyAgICAgICAgICAiendlcmciOiJEZWluZSB0cmFpbmllcnRlIE5hc2UgcmllY2h0IGVzIG11ZWhlbG9zIVxuIl0pKTsKKyAgICBEaWUgQWJmcmFnZSBkZXMgRGV0YWlscyBnZXN0YWx0ZXQgc2ljaCByZWNodCBlaW5mYWNoOgorICAgICAgR2V0RGV0YWlsKCJnb2xkIiwiendlcmciLFNFTlNFX1NNRUxMKTsKKyAgICBEaWUgRnVua3Rpb24gbGllZmVydCBkYXMgRGV0YWlsIGZ1ZXIgZGVuIFp3ZXJnLgorICAgICAgR2V0RGV0YWlsKCJnb2xkIiwwLFNFTlNFX1NNRUxMKTsKKyAgICBEaWUgRnVua3Rpb24gbGllZmVydCBkYXMgRGV0YWlsIGZ1ZXIgZGllIHJlc3RsaWNoZW4gUmFzc2VuLgorICAgICAgR2V0RGV0YWlsKCJnb2xkIiwwLFNFTlNFX1NPVU5EKTsKKyAgICBFaW4gU291bmRkZXRhaWwgbWl0IGRlbSBOYW1lbiAiZ29sZCIgZXhpc3RpZXJ0IG5pY2h0LCBkaWUgRnVua3Rpb24KKyAgICBsaWVmZXJ0IDAgenVydWVjay4KKworU0lFSEUgQVVDSDoKKyAgICBTZXR6ZW46ICAgIEFkZERldGFpbCgpLCBBZGRSZWFkRGV0YWlsKCksIEFkZFNtZWxscygpLCBBZGRTb3VuZHMoKSwKKyAgICAgICAgICAgICAgIEFkZFRvdWNoRGV0YWlsKCkKKyAgICBMb2VzY2hlbjogIFJlbW92ZVJlYWREZXRhaWwoKSwgUmVtb3ZlU21lbGxzKCksIFJlbW92ZURldGFpbCgpLAorICAgICAgICAgICAgICAgUmVtb3ZlU291bmRzKCksIFJlbW92ZVRvdWNoRGV0YWlsKCkKKyAgICBEYXRlbjogICAgIFBfREVUQUlMUywgUF9SRUFEX0RFVEFJTFMsIFBfU01FTExTLCBQX1NPVU5EUywKKyAgICAgICAgICAgICAgIFBfVE9VQ0hfREVUQUlMUywgUF9TUEVDSUFMX0RFVEFJTFMKKyAgICBWZXJhbHRldDogIEFkZFNwZWNpYWxEZXRhaWwoKSwgUmVtb3ZlU3BlY2lhbERldGFpbCgpLCBQX1JFQURfTVNHCisgICAgU29uc3RpZ2VzOiBicmVha19zdHJpbmcoKQorCisyNy4gSmFuIDIwMTMgR2xvaW5zb24KZGlmZiAtLWdpdCBhL2RvYy9sZnVuL0dldERvb3JzTWFwcGluZyBiL2RvYy9sZnVuL0dldERvb3JzTWFwcGluZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi40YzY4YTlkCi0tLSAvZGV2L251bGwKKysrIGIvZG9jL2xmdW4vR2V0RG9vcnNNYXBwaW5nCkBAIC0wLDAgKzEsMjQgQEAKK0dldERvb3JzTWFwcGluZygpCisKK0ZVTktUSU9OOgorICAgIG1hcHBpbmcgR2V0RG9vcnNNYXBwaW5nKCkKKworQkVTQ0hSRUlCVU5HOgorICAgIE1pdCBkaWVzZXIgRnVua3Rpb24gZXJoYWVsdCBtYW4gZGFzIE1hcHBpbmcgZGVyIHZvcmhhbmRlbmVuCisgICAgU2VoZXJwb3J0YWxlLgorICAgIAorICAgIERpZSBTdHJ1a3R1ciBpc3Qgdm9uIGRlciBGb3JtOiAKKwkoWyBQZmFkOiBQb3J0YWxudW1tZXI7IFBvcnRhbGJlc2NocmVpYnVuZywgXSkKKyAgICBFcyB3aXJkIGVpbmUgS29waWUgZGllc2VzIE1hcHBpbmdzIGdlbGllZmVydC4KKworUlVFQ0tHQUJFV0VSVDoKKyAgICBEYXMgU2VoZXJ0b3JtYXBwaW5nCisKK0JFTUVSS1VOR0VOOgorICAgIERpZXNlIEZ1bmt0aW9uIHdpcmQgdm9uIC9kL3NlaGVyL3BvcnRhbGUvc2VoZXJ0b3JtYXN0ZXIgZGVmaW5pZXJ0LgorCitCRUlTUElFTEU6CisgICAgIi9kL3NlaGVyL3BvcnRhbGUvc2VoZXJ0b3JtYXN0ZXIiLT5HZXREb29yc01hcHBpbmcoKTsKKworU0lFSEUgQVVDSDoKKyAgICBEb29ySXNLbm93biwgU2hvd0Rvb3JzLCBUZWxlcG9ydCwgRGlzY292ZXJEb29yCmRpZmYgLS1naXQgYS9kb2MvbGZ1bi9HZXRFbmVtaWVzIGIvZG9jL2xmdW4vR2V0RW5lbWllcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4zMzRkMGJmCi0tLSAvZGV2L251bGwKKysrIGIvZG9jL2xmdW4vR2V0RW5lbWllcwpAQCAtMCwwICsxLDM0IEBACitHZXRFbmVtaWVzKCkKKworRlVOS1RJT046CisJbWFwcGluZyBHZXRFbmVtaWVzKCk7CisKK0RFRklOSUVSVCBJTjoKKwkvc3RkL2xpdmluZy9jb21iYXQuYworCitBUkdVTUVOVEU6CisJa2VpbmUKKworUlVlQ0tHQUJFV0VSVDoKKwlNYXBwaW5nIG1pdCBiZWthbm50ZW4gR2VnbmVybiBhbHMgU2NobHVlc3NlbCB1bmQgWmVpdGVuIGFscworCUVpbnRyYWVnZW4uCisKK0JFU0NIUkVJQlVORzoKKwlEaWVzZSBGdW5rdGlvbiBsaWVmZXJ0IGRhcyBpbnRlcm5lIE1hcHBpbmcgenVydWVjaywgaW4gZGVtIGFsbGUKKwlHZWduZXIgYWJnZXNwZWljaGVydCBzaW5kLiBEaWVzZSBHZWduZXIgc3RlbGxlbiBkaWUgU2NobHVlc3NlbCBpbgorCWRlbSBNYXBwaW5nIGRhci4gQWxzIEVpbnRyYWVnZSBzaW5kIGRpZSBaZWl0ZW4gdmVybWVya3QsIG5hY2gKKwl3ZWxjaGVyIFplaXQgZWluIEdlZ25lciBhdXRvbWF0aXNjaCB3aWVkZXIgdmVyZ2Vzc2VuIHdlcmRlbiBzb2xsLgorCU1laHIgSW5mb3JtYXRpb25lbiBkYXp1IHNpbmQgaW4gZGVyIERva3VtZW50YXRpb24genVyIGFlaG5saWNoCisJZ2VhcnRldGVuIEZ1bmt0aW9uIFF1ZXJ5RW5lbWllcygpIHp1IGZpbmRlbiwgZGllIGplZG9jaCB6d2VpIEFycmF5cworCWdldHJlbm50ZSB6dXJ1ZWNrbGllZmVydC4KKwlBY2h0dW5nOiBFcyB3aXJkIGtlaW5lIEtvcGllIGRlcyBNYXBwaW5ncyBlcnN0ZWxsdC4gU2FlbXRsaWNoZQorCVZlcmFlbmRlcnVuZ2VuIGluIGRlbSBNYXBwaW5nIHdpcmtlbiBzaWNoIHVubWl0dGVsYmFyIGF1ZiBkaWUKKwlpbnRlcm5lIEdlZ25lcmxpc3RlIGF1cy4gRGllIEZ1bmt0aW9uIHNvbGx0ZSBkZXNoYWxiIG5pY2h0IGdlbnV0enQKKwl3ZXJkZW4uIEdlZ25lciBlaW4tIHVuZCBhdXN0cmFnZW4gc29sbHRlIG1hbiBudXIgbWl0dGVscworCUluc2VydEVuZW15KCkgdW5kIFN0b3BIdW50Rm9yKCkuCisKK1NJRUhFIEFVQ0g6CisJUXVlcnlFbmVtaWVzKCksIFNldEVuZW1pZXMoKSwgSW5zZXJ0RW5lbXkoKSwgU3RvcEh1bnRGb3IoKQorCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCitMYXN0IG1vZGlmaWVkOiBXZWQgTWF5IDI2IDE2OjQ3OjUxIDE5OTkgYnkgUGF0cnluCmRpZmYgLS1naXQgYS9kb2MvbGZ1bi9HZXRFeGl0cyBiL2RvYy9sZnVuL0dldEV4aXRzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmQyZjAwNGUKLS0tIC9kZXYvbnVsbAorKysgYi9kb2MvbGZ1bi9HZXRFeGl0cwpAQCAtMCwwICsxLDIzIEBACitHZXRFeGl0cygpCisKK0ZVTktUSU9OOgorICAgICB2YXJhcmdzIHN0cmluZyBHZXRFeGl0cyhvYmplY3Qgdmlld2VyKTsKKworREVGSU5JRVJUIElOOgorICAgICAvc3RkL3Jvb20vZXhpdHMKKworQVJHVU1FTlRFOgorICAgICB2aWV3ZXIKKyAgICAgICAgICBEZXJqZW5pZ2UsIGRlciBzaWNoIGRpZSBBdXNnYWVuZ2UgYW5zY2hhdXQuCisKK0JFU0NIUkVJQlVORzoKKyAgICAgRXMgd2lyZCBlaW5lIExpc3RlIGRlciBmdWVyIHZpZXdlciBzaWNodGJhcmVuIEF1c2dhZW5nZSBlcnN0ZWxsdC4KKworUlVlQ0tHQUJFV0VSVDoKKyAgICAgU3RyaW5nIG1pdCBkZXIgTGlzdGUgZGVyIHNpY2h0YmFyZW4gQXVzZ2FlbmdlLgorCitTSUVIRSBBVUNIOgorICAgICBBZGRFeGl0KCksIEFkZFNwZWNpYWxFeGl0KCksIC9zdGQvcm9vbS9leGl0cy5jCisKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KK0xhc3QgbW9kaWZpZWQ6IFdlZCBNYXkgOCAxMDoxODo0NyAxOTk2IGJ5IFdhcmdvbgpkaWZmIC0tZ2l0IGEvZG9jL2xmdW4vR2V0RlZhbHVlIGIvZG9jL2xmdW4vR2V0RlZhbHVlCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmFjMTcyMjQKLS0tIC9kZXYvbnVsbAorKysgYi9kb2MvbGZ1bi9HZXRGVmFsdWUKQEAgLTAsMCArMSwzNyBAQAorRlVOS1RJT046CisKKwl2YXJhcmdzIGludCBHZXRGVmFsdWUoc3RyaW5nIHZuYW1lLCBtYXBwaW5nIG1hcCwgb2JqZWN0IHBsKSAKKworCitBUkdVTUVOVEU6CisKKwl2bmFtZQk6IG5hbWUgZGVzIHBhcmFtZXRlcnMgYXVzIGRlbSBzcGVsbG1hcHBpbmcKKwltYXAgICAJOiBzcGVsbG1hcHBpbmcKKwlwbCAJOiBjYXN0ZXIKKworCitCRVNDSFJFSUJVTkc6CisKKwlCZXJlY2huZXQgZGVuIFdlcnQgdW5kIGRlbiBGYWN0b3IgZGVzIFBhcmFtZXRlcnMgaW4gc3BlbGxtYXBwaW5nLgorCisKK1JVRUNLR0FCRVdFUlQ6CisKKwlCZXJlY2huZXRlciBXZXJ0KkZhY3RvciBhdXMgZGVtIFNwZWxsbWFwcGluZy4KKworCitCRU1FUktVTkdFTjoKKworCVJ1ZnQgR2V0VmFsdWUodm5hbWUsbWFwLHBsKSpHZXRGYWN0b3Iodm5hbWUsbWFwLHBsKS8xMDAgYXVmLgorCisKK0JFSVNQSUVMOgorCisJeHh4PUdldEZWYWx1ZShTSV9TS0lMTERBTUFHRSxzaW5mbyxjYXN0ZXIpOworCitTaWVoZSBhdWNoOgorCisJIkdldFZhbHVlIiwgIkdldEZhY3RvciIsICJHZXRPZmZzZXQiLCAiR2V0VmFsdWVPIiwgIkdldEZWYWx1ZU8iCisKKwlBdXNmdWVocmxpY2hlcyBCZWlzcGllbCBzaWVoZSAiR2V0RlZhbHVlTyIuCisKZGlmZiAtLWdpdCBhL2RvYy9sZnVuL0dldEZWYWx1ZU8gYi9kb2MvbGZ1bi9HZXRGVmFsdWVPCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmU5NTRlNGIKLS0tIC9kZXYvbnVsbAorKysgYi9kb2MvbGZ1bi9HZXRGVmFsdWVPCkBAIC0wLDAgKzEsNzQgQEAKK0ZVTktUSU9OOgorCisJdmFyYXJncyBpbnQgR2V0RlZhbHVlTyhzdHJpbmcgdm5hbWUsIG1hcHBpbmcgbWFwLCBvYmplY3QgcGwpIAorCisKK0FSR1VNRU5URToKKworCXZuYW1lCTogbmFtZSBkZXMgcGFyYW1ldGVycyBhdXMgZGVtIHNwZWxsbWFwcGluZworCW1hcCAgIAk6IHNwZWxsbWFwcGluZworCXBsIAk6IGNhc3RlcgorCisKK0JFU0NIUkVJQlVORzoKKworCSdCZXJlY2huZXQnIGRlbiBXZXJ0LCBkZW4gRmFjdG9yIHVuZCBkZW4gT2Zmc2V0IGRlcyBQYXJhbWV0ZXJzIAorCWluIHNwZWxsbWFwcGluZy4KKworCitSVUVDS0dBQkVXRVJUOgorCisJQmVyZWNobmV0ZXIgKFdlcnQqRmFjdG9yKS8xMDArT2Zmc2V0IGF1cyBkZW0gU3BlbGxtYXBwaW5nLgorCisKK0JFTUVSS1VOR0VOOgorCisJUnVmdCAoR2V0VmFsdWUodm5hbWUsbWFwLHBsKSpHZXRGYWN0b3Iodm5hbWUsbWFwLHBsKSkvMTAwKworCUdldE9mZnNldCh2bmFtZSxtYXAscGwpIGF1Zi4KKworCitCRUlTUElFTDoKKworCUFkZFNwZWxsKCJlZ2FsIiwxMCwKKwkoWworCU9GRlNFVChTSV9DT1NUKTooW1NNX1JBQ0U6KFsiWndlcmciOjRdKSBdKSwKKwlGQUNUT1IoU0lfQ09TVCk6KFtTTV9SQUNFOihbIk1lbnNjaCI6OTBdKSBdKSwKKwlTSV9TS0lMTERBTUFHRToxMDAsCisJT0ZGU0VUKFNJX1NLSUxMREFNQUdFKToyNSwKKwlTSV9TS0lMTERBTUFHRV9UWVBFOkRUX0VYQU1QTEUsCisJRkFDVE9SKFNJX1NLSUxMREFNQUdFKTooW1NNX1JBQ0U6KFsiWndlcmciOjgwLCJFbGYiOjEyMF0pIF0pIAorCV0pKTsKKworCVNvLCB3YXMgc29sbGVuIHVucyBkaWVzZSBaZWlsZW4gc2FnZW4/CisKKwlFcyB3aXJkIGVpbiBTcHJ1Y2ggTmFtZXMgJ2VnYWwnIGlucyBTcGVsbGJvb2sgZWluZ2V0cmFnZW4uIEVyIGtvc3RldAorCXJlZ3VsYWVyIDEwIE1QLiBGdWVyIFp3ZXJnZSBhbGxlcmRpbmdzIHdpcmQgZWluIE9mZnNldCB2b24gNCBNUCAKKwlhdWZnZXNjaGxhZ2VuLiBBdXNzZXJkZW0gbWFjaGVuIFp3ZXJnZSBudXIgODAlIFNjaGFkZW4sIEVsZmVuIAorCWhpbmdlZ2VuIDEyMCUuIERlciBHcnVuZHNjaGFkZW4gYmV0cmFlZ3QgMTAwIFNjaGFkZW5zcHVua3RlLCBkZXIgCisJT2Zmc2V0IGRlcyBTY2hhZGVucyBub2NobWFsIDI1LiBNZW5zY2hlbiBiZXphaGxlbiBmdWVyIGRpZXNlbiAKKwlTcHJ1Y2ggbnVyIDkwJSBkZXIgS29zdGVuLgorCisJTnVuIGRpZSBSZWNoZW5iZWlzcGllbGU6CisKKwlGdWVyIGRpZSBLb3N0ZW46CisJCVZhbHVlCVZhbHVlTwlGVmFsdWUJRlZhbHVlTworCU1lbnNjaAkgICAxMAkgICAgMTAJICAgICA5CSAgICAgIDkKKwlFbGYgICAJICAgMTAJICAgIDEwCSAgICAxMCAgICAgICAxMAorCUhvYmJpdAkgICAxMAkgICAgMTAJICAgIDEwCSAgICAgMTAKKwlad2VyZwkgICAxMAkgICAgMTQJICAgIDEwCSAgICAgMTQKKworCUZ1ZXIgZGVuIFNjaGFkZW46CisJCQlWYWx1ZQlWYWx1ZU8JRlZhbHVlCUZWYWx1ZU8KKwlNZW5zY2gJCTEwMAkxMjUJMTAwCTEyNQorCUVsZiAgCQkxMDAJMTI1CTEyMAkxNTAKKwlIb2JiaXQJCTEwMAkxMjUJMTAwCTEyNQorCVp3ZXJnCQkxMDAJMTI1CSA4MAkxMDAKKworCUFuIGRpZXNlbSBCZWlzcGllbCBzaWVodCBtYW4gZGV1dGxpY2gsIHdpZSBtYW4gbWl0IGVpbiBwYWFyIAorCU9mZnNldHMgdW5kIEZha3RvcmVuIGRpZSBXaXJrdW5nIGVpbmVzIFNwcnVjaGVzIGRldXRsaWNoIAorCXZlcmFlbmRlcm4ga2Fubi4gRXMgc29sbHRlIGJlaSBlaWdlbmVuIEJlcmVjaG51bmdlbiBpbW1lciAKKwlHZXRGVmFsdWVPIGJlbnV0enQgd2VyZGVuLgorCitTaWVoZSBhdWNoOgorCisJIkdldFZhbHVlIiwgIkdldEZhY3RvciIsICJHZXRPZmZzZXQiLCAiR2V0RlZhbHVlIiwgIkdldFZhbHVlTyIKZGlmZiAtLWdpdCBhL2RvYy9sZnVuL0dldEZhY3RvciBiL2RvYy9sZnVuL0dldEZhY3RvcgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi40MjgxMmRkCi0tLSAvZGV2L251bGwKKysrIGIvZG9jL2xmdW4vR2V0RmFjdG9yCkBAIC0wLDAgKzEsMzcgQEAKK0ZVTktUSU9OOgorCisJdmFyYXJncyBpbnQgR2V0RmFjdG9yKHN0cmluZyB2bmFtZSwgbWFwcGluZyBtYXAsIG9iamVjdCBwbCkgCisKKworQVJHVU1FTlRFOgorCisJdm5hbWUJOiBuYW1lIGRlcyBwYXJhbWV0ZXJzIGF1cyBkZW0gc3BlbGxtYXBwaW5nCisJbWFwICAgCTogc3BlbGxtYXBwaW5nCisJcGwgCTogY2FzdGVyCisKKworQkVTQ0hSRUlCVU5HOgorCisJJ0JlcmVjaG5ldCcgZGVuIEZhY3RvciBkZXMgUGFyYW1ldGVycyBpbiBzcGVsbG1hcHBpbmcuCisKKworUlVFQ0tHQUJFV0VSVDoKKworCUJlcmVjaG5ldGVyIEZhY3RvciBhdXMgZGVtIFNwZWxsbWFwcGluZy4KKworCitCRU1FUktVTkdFTjoKKworCUJlc2NocmFla3VuZyBhdWYgMTAtMTAwMC4gV2VydGUgZ3JvZXNzZXIgb2RlciBrbGVpbmVyIGFscyBkaWVzZQorCXdlcmRlbiAnYWJnZXNjaG5pdHRlbicuCisKKworQkVJU1BJRUw6CisKKwl4eHg9R2V0RmFjdG9yKFNJX1NLSUxMREFNQUdFLHNpbmZvLGNhc3Rlcik7CisKK1NpZWhlIGF1Y2g6CisKKwkiR2V0VmFsdWUiLCAiR2V0T2Zmc2V0IiwgIkdldEZWYWx1ZSIsICJHZXRWYWx1ZU8iLCAiR2V0RlZhbHVlTyIKKworCUF1c2Z1ZWhybGljaGVzIEJlaXNwaWVsIHNpZWhlICJHZXRGVmFsdWVPIi4KZGlmZiAtLWdpdCBhL2RvYy9sZnVuL0dldEdyb3VwTWVtYmVycyBiL2RvYy9sZnVuL0dldEdyb3VwTWVtYmVycwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5lZjcwYWEzCi0tLSAvZGV2L251bGwKKysrIGIvZG9jL2xmdW4vR2V0R3JvdXBNZW1iZXJzCkBAIC0wLDAgKzEsMzYgQEAKK0dldEdyb3VwTWVtYmVycygpCitGVU5LVElPTjoKKyAgICAgc3RyaW5nICpHZXRHcm91cE1lbWJlcnMoc3RyaW5nIGdycCkKKworREVGSU5JRVJUIElOOgorICAgICAvcC9kYWVtb24vbWF0ZXJpYWxkYi5jIChNQVRFUklBTERCKQorCitBUkdVTUVOVEU6CisgICAgIHN0cmluZyBncnAgLSBHcnVwcGVubmFtZQorCitCRVNDSFJFSUJVTkc6CisgICAgIEdpYnQgYWxsZSBkaWVzZXIgR3J1cHBlIHp1Z2Vob2VyaWdlbiBNYXRlcmlhbGllbiB6dXJ1ZWNrLiBEYXp1IGd1dCwgc2ljaAorICAgICBlaW5lbiBVZWJlcmJsaWNrIHVlYmVyIGRpZSBha3R1ZWxsZSBMaXN0ZSB6dSB2ZXJzY2hhZmZlbi4KKworUlVFQ0tHQUJFV0VSVDoKKyAgICAgQXJyYXkgdm9uIFN0cmluZ3MgbWl0IE1hdGVyaWFsaWVuIG9kZXIgKHt9KQorCitCRUlTUElFTEU6CisgICAgIC8vIHdpciB3b2xsZW4gaXJnZW5kIGVpbiBNZXRhbGwgaGFiZW4sIG5lbm5lbiBkaWVzIGFiZXIgYmVpbSBOYW1lbgorICAgICBpbnQgaW5kOworICAgICBzdHJpbmcqIGxpa2VpdDsKKyAgICAgbGlrZWl0PU1BVEVSSUFMREItPkdldEdyb3VwTWVtYmVycyhNQVRHUk9VUF9NRVRBTCk7CisgICAgIGluZD1yYW5kb20oc2l6ZW9mKGxpa2VpdCkpOworICAgICAuLi4KKyAgICAgd3JpdGUoIkRlciBTY2htaWVkIHNhZ3Q6IE1pciBmZWhsdCBub2NoICIrCisJICAgTUFURVJJQUxEQi0+TWF0ZXJpYWxOYW1lKGxpa2VpdFtpbmRdLCBXRVIsIDEwMCkrIi5cbiIpOworICAgICAuLi4KKworU0lFSEUgQVVDSDoKKyAgICAgS29uemVwdGU6CSAgbWF0ZXJpYWwsIG1hdGVyaWFsZXJrZW5udW5nCisgICAgIEdydW5kbGVnZW5kOiBQX01BVEVSSUFMLCAvc3lzL3RoaW5nL21hdGVyaWFsLmgKKyAgICAgTWFzdGVyOgkgIEFkZE1hdGVyaWFsKCksIENvbnZNYXRlcmlhbExpc3QoKSwgTWF0ZXJpYWxHcm91cCgpLAorCQkgIEdyb3VwTmFtZSgpLCBNYXRlcmlhbE5hbWUoKSwKKwkJICBHZXRNYXRNZW1iZXJzaGlwKCkKKworNy4gTWFpIDIwMDQgR2xvaW5zb24KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9kb2MvbGZ1bi9HZXRJbmZvQXJyIGIvZG9jL2xmdW4vR2V0SW5mb0FycgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5mMWUyNTFhCi0tLSAvZGV2L251bGwKKysrIGIvZG9jL2xmdW4vR2V0SW5mb0FycgpAQCAtMCwwICsxLDMxIEBACitHZXRJbmZvQXJyKCkKK0ZVTktUSU9OOgorICAgICBzdGF0aWMgbWl4ZWQgKkdldEluZm9BcnIoc3RyaW5nIHN0cikKKworREVGSU5JRVJUIElOOgorICAgICAvc3RkL25wYy9pbmZvLmMKKworQVJHVU1FTlRFOgorICAgICBzdHJpbmcgc3RyCSAtIFNjaGx1ZXNzZWx3b3J0IGRlciBGcmFnZQorCitCRVNDSFJFSUJVTkc6CisgICAgIFN1Y2h0IG5hY2ggZWluZW0gU2NobHVlc3NlbHdvcnQgaW4gZGVuIGFiZ2VsZWd0ZW4gQW50d29ydGVuCisgICAgIHVuZCBnaWJ0IGRpZSBJbmZvcm1hdGlvbmVuIG9kZXIgZWluZW4gMGVyLUFycmF5IHp1cvxjay4KKworQkVNRVJLVU5HRU46CisgICAgIFVlYmVyc2NocmVpYmJhciA6KQorCitSVUVDS0dBQkVXRVJUOgorICAgICBTaWVoZSBQYXJhbWV0ZXIgdm9uIEFkZEluZm86CisKKyAgICAgQXJyYXkgbWl0OgorICAgICAoeyA8SW5mb3N0cmluZz4gKDAgZnVlciBrZWluZSBBbnR3b3J0KSwKKyAgICAgICAgPEluZGVudC1TdHJpbmc+IChEZWZhdWx0OiAwKSwKKyAgICAgICAgPFNpbGVudD4gKERlZmF1bHQ6IDApLAorICAgICAgICA8Q2FzZWJhc2VkPiAoRGVmYXVsdDogMCkKKyAgICAgfSkKKworU0lFSEUgQVVDSDoKKyAgICAgVmVyd2FuZHQ6IEFkZEluZm8sIGRvX2ZyYWdlCisKKzMxLk1hciAyMDA3IEdsb2luc29uClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZG9jL2xmdW4vR2V0TWF0TWVtYmVyc2hpcCBiL2RvYy9sZnVuL0dldE1hdE1lbWJlcnNoaXAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uODg1OWEzOAotLS0gL2Rldi9udWxsCisrKyBiL2RvYy9sZnVuL0dldE1hdE1lbWJlcnNoaXAKQEAgLTAsMCArMSw1NSBAQAorR2V0TWF0TWVtYmVyc2hpcCgpCitGVU5LVElPTjoKKyAgICAgc3RyaW5nICpHZXRNYXRNZW1iZXJzaGlwKHN0cmluZyBtYXQpCisKK0RFRklOSUVSVCBJTjoKKyAgICAgL3AvZGFlbW9uL21hdGVyaWFsZGIuYyAoTUFURVJJQUxEQikKKworQVJHVU1FTlRFOgorICAgICBzdHJpbmcgbWF0IC0gZWluIE1hdGVyaWFsCisKK0JFU0NIUkVJQlVORzoKKyAgICAgR2lidCBhbGxlIEdydXBwZW4sIGRlbmVuIGRhcyBNYXRlcmlhbCBhbmdlaG9lcnQgenVydWVjay4gR2VlaWduZXQsIHVtCisgICAgIGRpZSBFaWdlbnNjaGFmdGVuIGVpbmVzIE1hdGVyaWFscyB6dSB1ZWJlcnBydWVmZW4uCisKK1JVRUNLR0FCRVdFUlQ6CisgICAgIEFycmF5IHZvbiBTdHJpbmdzIG1pdCBNYXRlcmlhbGllbmdydXBwZW4gb2RlciAoe30pCisKK0JFSVNQSUVMRToKKyAgICAgLy8gZWluIHdlaXNlciBTY2htaWVkOgorICAgICBpbnQgaTsKKyAgICAgc3RyaW5nICptYXQsIG1uYW1lLCBtZ3JvdXA7CisgICAgIG1hdD1tX2luZGljZXMob2ItPlF1ZXJ5UHJvcChQX01BVEVSSUFMKSk7CisgICAgIGk9c2l6ZW9mKG1hdCk7CisKKyAgICAgd3JpdGUoIkRlciBTY2htaWVkIHNhZ3Q6ICIrb2ItPk5hbWUoV0VSKSsiIGJlc3RlaHQgYXVzIC4uLlxuIik7CisgICAgIHdoaWxlKGktLSkgeworICAgICAgLy8gZGVuIE5hbWVuIGVya2VubmVuL2F1c3NwcmVjaGVuOgorICAgICAgLy8gTWF0ZXJpYWxpZW4gd2VyZGVuIGFsbGdlbWVpbiBldHdhcyBiZXNzZXIgZXJrYW5udCAoenUgNSUpLCBhYmVyCisgICAgICAvLyBhbGxlcyBhdXMgTWV0YWxsIHdpcmQgenUgKzEwMCUgYmVzc2VyIGVya2FubnQgLi4uCisgICAgICBtbmFtZT1NQVRFUklBTERCLT5NYXRlcmlhbE5hbWUobWF0W2ldLCBXRVIsCisJICAgICAoezUsIChbTUFUUkdST1VQX01FVEFMLCAxMDBdKX0pKTsKKworICAgICAgLy8gdW5kIG51ciBNZXRhbGxlIGFuYWx5c2llcmVuIC4uLgorICAgICAgaWYoTUFURVJJQUxEQi0+TWF0ZXJpYWxHcm91cCgoW21hdFtpXToxMDBdKSxNQVRHUk9VUF9NRVRBTCk+PTEwMCkgeworICAgICAgIGludCBqOworICAgICAgIHN0cmluZyAqbWdyOworICAgICAgIG1ncj1NQVRFUklBTERCLT5HZXRNYXRNZW1iZXJzaGlwKG1hdFtpXSk7CisgICAgICAgaj1zaXplb2YobWdyKTsKKyAgICAgICBtZ3JvdXA9IiBnZWhvZXJ0IHp1ICI7CisgICAgICAgd2hpbGUoai0tKSB7CisgICAgICAgIG1ncm91cCs9TUFURVJJQUxEQi0+R3JvdXBOYW1lKG1ncltqXSk7CisgICAgICAgIGlmKGo+MCkgbWdyb3VwKz0iLCAiOworICAgICAgIH0KKyAgICAgIH0gZWxzZSBtZ3JvdXA9IiBrZW5uZSBpY2ggbmljaHQiOworICAgICAgcHJpbnRmKCIlLTEyLjEyczogJXNcbiIsbW5hbWUsIG1ncm91cCk7CisgICAgIH0KKworU0lFSEUgQVVDSDoKKyAgICAgS29uemVwdGU6CSAgbWF0ZXJpYWwsIG1hdGVyaWFsZXJrZW5udW5nCisgICAgIEdydW5kbGVnZW5kOiBQX01BVEVSSUFMLCAvc3lzL3RoaW5nL21hdGVyaWFsLmgKKyAgICAgTWFzdGVyOgkgIEFkZE1hdGVyaWFsKCksIENvbnZNYXRlcmlhbExpc3QoKSwgTWF0ZXJpYWxHcm91cCgpLAorCQkgIEdyb3VwTmFtZSgpLCBNYXRlcmlhbE5hbWUoKSwKKwkJICBHZXRHcm91cE1lbWJlcnMoKQorCis3LiBNYWkgMjAwNCBHbG9pbnNvbgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2RvYy9sZnVuL0dldE9mZnNldCBiL2RvYy9sZnVuL0dldE9mZnNldApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5lM2ViYTU0Ci0tLSAvZGV2L251bGwKKysrIGIvZG9jL2xmdW4vR2V0T2Zmc2V0CkBAIC0wLDAgKzEsMzggQEAKK0ZVTktUSU9OOgorCisJdmFyYXJncyBpbnQgR2V0T2Zmc2V0KHN0cmluZyB2bmFtZSwgbWFwcGluZyBtYXAsIG9iamVjdCBwbCkgCisKKworQVJHVU1FTlRFOgorCisJdm5hbWUJOiBuYW1lIGRlcyBwYXJhbWV0ZXJzIGF1cyBkZW0gc3BlbGxtYXBwaW5nCisJbWFwICAgCTogc3BlbGxtYXBwaW5nCisJcGwgCTogY2FzdGVyCisKKworQkVTQ0hSRUlCVU5HOgorCisJJ0JlcmVjaG5ldCcgZGVuIE9mZnNldCBkZXMgUGFyYW1ldGVycyBpbiBzcGVsbG1hcHBpbmcuCisKKworUlVFQ0tHQUJFV0VSVDoKKworCUJlcmVjaG5ldGVyIE9mZnNldCBhdXMgZGVtIFNwZWxsbWFwcGluZy4KKworCitCRU1FUktVTkdFTjoKKworCUJlc2NocmFla3VuZyBhdWYgLTEwMDAwIGJpcyArMTAwMDAuIFdlcnRlIGdyb2Vzc2VyIG9kZXIga2xlaW5lciAKKwlhbHMgZGllc2Ugd2VyZGVuICdhYmdlc2Nobml0dGVuJy4gTWVociBhbHMgMTAwJSBCb251cyBvZGVyIE1hbHVzCisJZ2lidHMgbmljaHQgOy0pLgorCisKK0JFSVNQSUVMOgorCisJeHh4PUdldE9mZnNldChTSV9TS0lMTERBTUFHRSxzaW5mbyxjYXN0ZXIpOworCitTaWVoZSBhdWNoOgorCisJIkdldFZhbHVlIiwgIkdldEZhY3RvciIsICJHZXRGVmFsdWUiLCAiR2V0VmFsdWVPIiwgIkdldEZWYWx1ZU8iCisKKwlBdXNmdWVocmxpY2hlcyBCZWlzcGllbCBzaWVoZSAiR2V0RlZhbHVlTyIuCmRpZmYgLS1naXQgYS9kb2MvbGZ1bi9HZXRPd25lciBiL2RvYy9sZnVuL0dldE93bmVyCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmY2YjBmOTgKLS0tIC9kZXYvbnVsbAorKysgYi9kb2MvbGZ1bi9HZXRPd25lcgpAQCAtMCwwICsxLDE5IEBACitHZXRPd25lcihMKQorRlVOS1RJT046CisgICAgIHN0cmluZyBHZXRPd25lcigpOworCitCRVNDSFJFSUJVTkc6CisgICAgIFdpcmQgdm9tIEhvZXJyb2hyIGdlcnVmZW46CisgICAgICAvZC9pbnNlbG4vc2hha2VkYmVlci9zaGFreWlzbGFuZC9vYmovaG9lcnJvaHIuYworICAgICB1bmQga2FubiBlaW5lbiBCZXNpdHplciBkZXIgRGF0ZWllbiB6dXJ1ZWNrZ2ViZW4sIGRlciB2b20gQmVzaXR6ZXIKKyAgICAgZGVyIFBmYWRlIGluIGRlbmVuIGRpZSBEYXRlaSBsaWVndCBhYndlaWNodC4KKworQkVJU1BJRUxFOgorICAgICBzdHJpbmcgR2V0T3duZXIoKSB7CisgICAgICByZXR1cm4gIlRpYW1hayI7CisgICAgIH0KKworU0lFSEUgQVVDSDoKKyAgICAgUF9JTkZPCisKKzExLiBNYWkgMjAwNCBHbG9pbnNvbgpkaWZmIC0tZ2l0IGEvZG9jL2xmdW4vR2V0UGhpb2xlbkluZm9zIGIvZG9jL2xmdW4vR2V0UGhpb2xlbkluZm9zCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjYwNGQ2OTcKLS0tIC9kZXYvbnVsbAorKysgYi9kb2MvbGZ1bi9HZXRQaGlvbGVuSW5mb3MKQEAgLTAsMCArMSw5NyBAQAorR2V0UGhpb2xlbkluZm9zKEwpCisKK0ZVTktUSU9OOgorICAgICBtaXhlZCAqR2V0UGhpb2xlbkluZm9zKCk7CisKK0JFU0NIUkVJQlVORzoKKworICAgICBXaXJkIHZvbiBkZXIgUGhpb2xlIGF1ZmdlcnVmZW46CisgICAgIC9kL2luc2Vsbi9taXJpbC9zdGVybnF1ZXN0L29iai9waGlvbGUuYworICAgICBEZXIgUmF1bSBtdXNzIC9wL3NlcnZpY2UvbWlyaWwvcGhpb2xlLmggaW5jbHVkZW4uICAgICAKKyAgICAgTWl0IGRlciBQaGlvbGUga2FubiBlaW4gU3BpZWxlciBkdXJjaCBUdWVyZW4gc2NoYXVlbi4gQmVpIFR1ZXJlbiwgZGllCisgICAgIHZvbSBEb29ybWFzdGVyICgvb2JqL2Rvb3JtYXN0ZXIuYykgdmVyd2FsdGV0IHdlcmRlbiwga2xhcHB0IGRpZXMgYXV0by0KKyAgICAgbWF0aXNjaC4gTW9lY2h0ZSBtYW4gZGFzIHZlcmJpZXRlbiwgc28gbXVzcyBkaWUgRnVua3Rpb24gCisgICAgIEdldFBoaW9sZW5JbmZvcygpIGltIGVudHNwcmVjaGVuZGVuIFJhdW0gZGVmaW5pZXJ0IHNlaW4uCisgICAgIEJlZmluZGVuIHNpY2ggVHVlcmVuIGltIFJhdW0sIGRpZSBuaWNodCB2b20gRG9vcm1hc3RlciB2ZXJ3YWx0ZXQgd2VyZGVuLAorICAgICBhYmVyIGJlaSBkZW5lbiBkaWUgUGhpb2xlIGZ1bmt0aW9uaWVyZW4gc29sbCwgc28ga2FubiBkaWVzIGViZW5mYWxscworICAgICBtaXR0ZWxzIEdldFBoaW9sZW5JbmZvcygpIGdlc2NoZWhlbi4KKyAgICAgCisgICAgIEZ1bmt0aW9uIGRlciBQaGlvbGU6CisgICAgIFNpZSBwcm9qaXppZXJ0IGVpbiBCaWxkIGRlc3Nlbiwgd2FzIGhpbnRlciBkZXIgVHVlciBsaWVndCBhdWYgZGllIFR1ZXIuCisgICAgIFN0ZWh0IGRpZSBUdWVyIG9mZmVuLCBzbyBzaWVodCBkZXIgU3BpZWxlciBudXIgZWluZSBXYW5kLCBkZW5uIGVzIHdpcmQKKyAgICAgZ2V6ZWlndCwgd2FzIGhpbnRlciBkaWVzZXIgVHVlciBpc3QuCisgICAgIAorICAgICBJc3QgZGllIFR1ZXIgamVkb2NoIGdlLSBvZGVyIHZlcnNjaGxvc3Nlbiwgc28gc2llaHQgZXIgYXVmIGRlciBUdWVyCisgICAgIGRpZSBMYW5nYmVzY2hyZWlidW5nIGRlcyBSYXVtZXMsIGRlciBoaW50ZXIgZGVyIFR1ZXIgbGllZ3QsIHNvd2llIGRhcworICAgICBJbnZlbnRhciBkaWVzZXMgUmF1bWVzLiAKKworICAgICBBdWZiYXUgZGVyIEZ1bmt0aW9uOgorICAgICBtaXhlZCAqR2V0UGhpb2xlbkluZm9zKCkgeworICAgICAgIHJldHVybiAoeworICAgICAgICAgICAgICAgIChbCisgICAgICAgICAgICAgICAgICBQSElPTEVfREVTVDogICAgIHN0cmluZywgICAgICAgCisgICAgICAgICAgICAgICAgICBQSElPTEVfSURTOiAgICAgICpzdHJpbmcsICAgICAgICAgICAgIAorICAgICAgICAgICAgICAgICAgUEhJT0xFX0dFTkRFUjogICBpbnQsICAgICAgICAgICAKKyAgICAgICAgICAgICAgICAgIFBISU9MRV9TVEFUVVM6ICAgaW50LCAgICAgKG9wdGlvbmFsKQorICAgICAgICAgICAgICAgICAgUEhJT0xFX0xPTkc6ICAgICBzdHJpbmcsICAob3B0aW9uYWwpCisgICAgICAgICAgICAgICAgICBQSElPTEVfVkVSQk9URU46IGludCAgICAgIChvcHRpb25hbCkKKyAgICAgICAgICAgICAgICBdKSwKKyAgICAgICAgICAgICAgICAoWworICAgICAgICAgICAgICAgICAgLi4uIE5hZWNoc3RlIFR1ZXIKKyAgICAgICAgICAgICAgICBdKQorICAgICAgICAgICAgICB9KTsKKyAgICAgfQorICAgICAKKyAgICAgUEhJT0xFX0RFU1QgICAgICBEYXRlaW5hbWUgZGVzIFppZWxyYXVtcworICAgICBQSElPTEVfSURTCSAgICAgIEFycmF5IGRlciBTdHJpbmdzLCBtaXQgZGVuZW4gc2ljaCBkaWUgVHVlciAKKyAgICAgICAgICAgICAgICAgICAgICBhbnNwcmVjaGVuIGxhZXNzdAorICAgICBQSElPTEVfR0VOREVSICAgIEdlc2NobGVjaHQgZGVyIFR1ZXIKKyAgICAgUEhJT0xFX1NUQVRVUyAgICBha3R1ZWxsZXIgU3RhdHVzIGRlciBUdWVyOgorICAgICAgICAgICAgICAgICAgICAgIDAgZ2VzY2hsb3NzZW4vdmVyc2NobG9zc2VuLCAxIG9mZmVuCisgICAgICAgICAgICAgICAgICAgICAgQmVpIFR1ZXJlbiwgZGllIG1pdCBOZXdEb29yIGVyemV1Z3Qgd3VyZGVuCisgICAgICAgICAgICAgICAgICAgICAgbmljaHQgc2V0emVuCisgICAgIFBISU9MRV9MT05HICAgICAgQmVzY2hyZWlidW5nIGRlcyBaaWVscmF1bXMgKHouQi4gYmVpIGVpbmVyIAorICAgICAgICAgICAgICAgICAgICAgIEZha2V0dWVyKQorICAgICBQSElPTEVfVkVSQk9URU4gIDAgZXJsYXVidCwgMSB2ZXJib3RlbgorCitCRUlTUElFTDoKKyAgICAgRWluIFJhdW0gZW50aGFlbHQgZWluZSBIb2x6dHVlciB1bmQgZWluIFBvcnRhbC4gRXJzdGVyZSBpc3QgbWl0dGVscyAKKyAgICAgTmV3RG9vciguLi4pIGdlYmF1dCwgc29sbCBhYmVyIG5pY2h0IHp1IGR1cmNoc2NoYXVlbiBzZWluLCBsZXR6dGVyZSBpc3QgCisgICAgIHNlbGJzdGdlc3RyaWNrdC4gRGllIGVyc3RlIGZ1ZWhydCBpbiBkZW4gV29ya3Jvb20gdm9uIEpvZiwgZGllIHp3ZWl0ZQorICAgICBpc3QgbnVyIGVpbiBGYWtlIHVuZCBpbW1lciBnZXNjaGxvc3Nlbi4gQmVpIHZvbSBEb29ybWFzdGVyIGVyemV1Z3RlbiAKKyAgICAgVHVlcmVuIHNvbGx0ZSBQSElPTEVfU1RBVFVTIG5pY2h0IGdlc2V0enQgd2VyZGVuLCBkYSBkaWVzIGF1dG9tYXRpc2NoCisgICAgIGFiZ2VmcmFndCB3aXJkLgorICAgICAKKyAgICAgI2luY2x1ZGUgIi9wL3NlcnZpY2UvbWlyaWwvcGhpb2xlLmgiCisgICAgIC4uLgorICAgICBtaXhlZCAqR2V0UGhpb2xlbkluZm9zKCl7CisgICAgICAgcmV0dXJuICh7CisgICAgICAgICAgICAgICAgKFsKKyAgICAgICAgICAgICAgICAgIFBISU9MRV9ERVNUOiIvcGxheWVycy9qb2Yvd29ya3Jvb20iLAorICAgICAgICAgICAgICAgICAgUEhJT0xFX0lEUzooeyJob2x6dHVlciJ9KSwgICAgICAgICAgIAorICAgICAgICAgICAgICAgICAgUEhJT0xFX0dFTkRFUjpGRU1BTEUsICAgICAgICAgICAgICAgICAgICAKKyAgICAgICAgICAgICAgICAgIFBISU9MRV9WRVJCT1RFTjoxICAgICAgICAgIAorICAgICAgICAgICAgICAgIF0pLAorICAgICAgICAgICAgICAgIChbCisgICAgICAgICAgICAgICAgICBQSElPTEVfREVTVDowLAorICAgICAgICAgICAgICAgICAgUEhJT0xFX0lEUzooeyJwb3J0YWwifSksICAgICAgICAgICAKKyAgICAgICAgICAgICAgICAgIFBISU9MRV9HRU5ERVI6TkVVVEVSLCAKKyAgICAgICAgICAgICAgICAgIFBISU9MRV9TVEFUVVM6MCwKKyAgICAgICAgICAgICAgICAgIFBISU9MRV9MT05HOiJEdSBzdGVoc3QgaW4gZWluZXIgcmllc2lnZW4gU2NoYXR6a2FtbWVyIHVuZCAiCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAia2FubnN0IERlaW4gR2x1ZWNrIGthdW0gZmFzc2VuLiBOdW4gYnJhdWNoc3QgIgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIkR1IG51ciBub2NoIHp1enVncmVpZmVuIHVuZCBiaXN0IGRlciByZWljaHN0ZSAiCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiQmV3b2huZXIgZGVzIE1vcmdlbkdyYXVlbi4iLAorICAgICAgICAgICAgICAgICAgUEhJT0xFX1ZFUkJPVEVOOjAKKyAgICAgICAgICAgICAgICBdKQorICAgICAgICAgICAgICB9KTsKKyAgICAgIH0KKyAgICAgIE1pdHRlbHMgUEhJT0xFX0xPTkcgbGFlc3N0IHNpY2ggYXVjaCBiZWkgZXJsYXVidGVuIHVuZCB2ZXJib3RlbmVuIFR1ZXJlbiAKKyAgICAgIGVpbnN0ZWxsZW4sIHdhcyBkZXIgU3BpZWxlciBzdGF0dCBkZXIgbm9ybWFsZW4gUmF1bWJlc2NocmVpYnVuZyB1bmQgZGVuIAorICAgICAgaW0gUmF1bSBiZWZpbmRsaWNoZW4gT2JqZWt0ZW4gc2VoZW4gc29sbC4gRGFzIGtvZW5udGUgei5CLiBzaW5udm9sbCAKKyAgICAgIHNlaW4sIGZhbGxzIGRlciBTcGllbGVyIHp3YXIgZGllIFJhdW1iZXNjaHJlaWJ1bmcsIGFiZXIgbmljaHQgZGVuIGZpZXNlbiAKKyAgICAgIERyYWNoZW4gc2VoZW4gc29sbCwgZGVyIHNpY2ggZWJlbmZhbGxzIGltIFJhdW0gYmVmaW5kZXQuCisgICAgICAKK1NJRUhFIEFVQ0g6CisgICAgICBOZXdEb29yKCksIFF1ZXJ5RG9vclN0YXR1cygpLCBTZXREb29yU3RhdHVzKCksIFF1ZXJ5QWxsRG9vcnMoKQorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KK0xldHp0ZSBBZW5kZXJ1bmc6IFNhbSwgMTQuIEphbiAyMDA2LCAxMjoyMSwgTWlyaWwKZGlmZiAtLWdpdCBhL2RvYy9sZnVuL0dldFJlcHV0YXRpb24gYi9kb2MvbGZ1bi9HZXRSZXB1dGF0aW9uCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmI2MGNkZjgKLS0tIC9kZXYvbnVsbAorKysgYi9kb2MvbGZ1bi9HZXRSZXB1dGF0aW9uCkBAIC0wLDAgKzEsMjYgQEAKK0dldFJlcHV0YXRpb24KK0ZVTktUSU9OOgorICAgICBwdWJsaWMgaW50IEdldFJlcHV0YXRpb24oc3RyaW5nIHJlcGlkKQorCitERUZJTklFUlQgSU46CisgICAgIC9zdGQvcGxheWVyL3JlcHV0YXRpb24uYworCitBUkdVTUVOVEU6CisgICAgIHJlcGlkCisgICAgICAgRWluZGV1dGlnZSBJRCBkZXIgYW5nZWZyYWd0ZW4gUmVwdXRhdGlvbi4KKworQkVTQ0hSRUlCVU5HOgorICAgICBMaWVmZXJ0IGRlbiBha3R1ZWxsZW4gV2VydCBkZXIgYW5nZWdlYmVuZW4gUmVwdXRhdGlvbiA8cmVwaWQ+IHp1cnVlY2suCisKK1JVZUNLR0FCRVdFUlQ6CisgICAgIFphaGxlbndlcnQsIEludGVnZXIuCisKK0JFSVNQSUVMRToKKyAgICAgcy4gcmVwdXRhdGlvbgorCitTSUVIRSBBVUNIOgorICAgICByZXB1dGF0aW9uCisgICAgIENoYW5nZVJlcHV0YXRpb24oKSwgR2V0UmVwdXRhdGlvbnMoKQorCitaVUxFVFpUIEdFQWVOREVSVDoKKzA2LjA0LjIwMDksIFplc3N0cmEKZGlmZiAtLWdpdCBhL2RvYy9sZnVuL0dldFJlcHV0YXRpb25zIGIvZG9jL2xmdW4vR2V0UmVwdXRhdGlvbnMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uODFkNTcxZQotLS0gL2Rldi9udWxsCisrKyBiL2RvYy9sZnVuL0dldFJlcHV0YXRpb25zCkBAIC0wLDAgKzEsMjMgQEAKK0dldFJlcHV0YXRpb25zCitGVU5LVElPTjoKKyAgICAgcHVibGljIG1hcHBpbmcgR2V0UmVwdXRhdGlvbnMoKQorCitERUZJTklFUlQgSU46CisgICAgIC9zdGQvcGxheWVyL3JlcHV0YXRpb24uYworCitCRVNDSFJFSUJVTkc6CisgICAgIExpZWZlcnQgZWluIE1hcHBpbmcgYWxsZXIgaW0gU3BpZWxlciBnZXNwZWljaGVydGVuIFJlcHV0YXRpb25lbiB1bmQgaWhyZXIKKyAgICAgV2VydGUgenVydWVjay4KKworUlVlQ0tHQUJFV0VSVDoKKyAgICAgTWFwcGluZyAoWyhzdHJpbmcpcmVwaWQ6IChpbnQpd2VydF0pCisKK0JFSVNQSUVMRToKKyAgICAgcy4gcmVwdWF0aW9uCisKK1NJRUhFIEFVQ0g6CisgICAgIHJlcHV0YXRpb24KKyAgICAgR2V0UmVwdXRhdGlvbigpLCBHZXRSZXB1dGF0aW9ucygpCisKK1pVTEVUWlQgR0VBZU5ERVJUOgorMDYuMDQuMjAwOSwgWmVzc3RyYQpkaWZmIC0tZ2l0IGEvZG9jL2xmdW4vR2V0VmFsdWUgYi9kb2MvbGZ1bi9HZXRWYWx1ZQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4xYzk1MTE5Ci0tLSAvZGV2L251bGwKKysrIGIvZG9jL2xmdW4vR2V0VmFsdWUKQEAgLTAsMCArMSwzNyBAQAorRlVOS1RJT046CisKKwl2YXJhcmdzIGludCBHZXRWYWx1ZShzdHJpbmcgdm5hbWUsIG1hcHBpbmcgbWFwLCBvYmplY3QgcGwpIAorCisKK0FSR1VNRU5URToKKworCXZuYW1lCTogbmFtZSBkZXMgcGFyYW1ldGVycyBhdXMgZGVtIHNwZWxsbWFwcGluZworCW1hcCAgIAk6IHNwZWxsbWFwcGluZworCXBsIAk6IGNhc3RlcgorCisKK0JFU0NIUkVJQlVORzoKKworCSdCZXJlY2huZXQnIGRlbiBXZXJ0IGRlcyB1ZWJlcmdlYmVuZW4gUGFyYW1ldGVycyBhdXMgZGVtIAorCVNwZWxsbWFwcGluZy4KKworCitSVUVDS0dBQkVXRVJUOgorCisJQmVyZWNobmV0ZXIgV2VydCBhdXMgZGVtIFNwZWxsbWFwcGluZy4KKworCitCRU1FUktVTkdFTjoKKworCQorCisKK0JFSVNQSUVMOgorCisJeHh4PUdldFZhbHVlKFNJX1NLSUxMREFNQUdFLHNpbmZvLGNhc3Rlcik7CisKK1NpZWhlIGF1Y2g6CisKKwkiR2V0RmFjdG9yIiwgIkdldE9mZnNldCIsICJHZXRGVmFsdWUiLCAiR2V0VmFsdWVPIiwgIkdldEZWYWx1ZU8iCisKKwlBdXNmdWVocmxpY2hlcyBCZWlzcGllbCBzaWVoZSAiR2V0RlZhbHVlTyIuCmRpZmYgLS1naXQgYS9kb2MvbGZ1bi9HZXRWYWx1ZU8gYi9kb2MvbGZ1bi9HZXRWYWx1ZU8KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZTU1YjhmMwotLS0gL2Rldi9udWxsCisrKyBiL2RvYy9sZnVuL0dldFZhbHVlTwpAQCAtMCwwICsxLDM2IEBACitGVU5LVElPTjoKKworCXZhcmFyZ3MgaW50IEdldFZhbHVlTyhzdHJpbmcgdm5hbWUsIG1hcHBpbmcgbWFwLCBvYmplY3QgcGwpIAorCisKK0FSR1VNRU5URToKKworCXZuYW1lCTogbmFtZSBkZXMgcGFyYW1ldGVycyBhdXMgZGVtIHNwZWxsbWFwcGluZworCW1hcCAgIAk6IHNwZWxsbWFwcGluZworCXBsIAk6IGNhc3RlcgorCisKK0JFU0NIUkVJQlVORzoKKworCUJlcmVjaG5ldCBkZW4gV2VydCB1bmQgZGVuIE9mZnNldCBkZXMgUGFyYW1ldGVycyBpbiBzcGVsbG1hcHBpbmcuCisKKworUlVFQ0tHQUJFV0VSVDoKKworCUJlcmVjaG5ldGVyIFdlcnQrT2Zmc2V0IGF1cyBkZW0gU3BlbGxtYXBwaW5nLgorCisKK0JFTUVSS1VOR0VOOgorCisJUnVmdCBHZXRWYWx1ZSh2bmFtZSxtYXAscGwpK0dldE9mZnNldCh2bmFtZSxtYXAscGwpIGF1Zi4KKworCitCRUlTUElFTDoKKworCXh4eD1HZXRWYWx1ZU8oU0lfU0tJTExEQU1BR0Usc2luZm8sY2FzdGVyKTsKKworU2llaGUgYXVjaDoKKworCSJHZXRWYWx1ZSIsICJHZXRGYWN0b3IiLCAiR2V0T2Zmc2V0IiwgIkdldEZWYWx1ZSIsICJHZXRGVmFsdWVPIgorCisJQXVzZnVlaHJsaWNoZXMgQmVpc3BpZWwgc2llaGUgIkdldEZWYWx1ZU8iLgpkaWZmIC0tZ2l0IGEvZG9jL2xmdW4vR2lsZGVucHJvcGVydGllcyBiL2RvYy9sZnVuL0dpbGRlbnByb3BlcnRpZXMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMzBhMTZjMwotLS0gL2Rldi9udWxsCisrKyBiL2RvYy9sZnVuL0dpbGRlbnByb3BlcnRpZXMKQEAgLTAsMCArMSwxMzEgQEAKK05hbWUJCQlCZXNjaHJlaWJ1bmcKKworUF9HVUlMRF9TS0lMTFMJCVByb3BlcnR5IGZ1ZXIgU2tpbGxzIGluIGRlciBHaWxkZQorUF9HVUlMRF9SRVNUUklDVElPTlMgCVJlc3RyaWt0aW9uZW4gZnVlciBkZW4gRWludHJpdHQgaW4gZGllIEdpbGRlCitQX0dVSUxEX0RFRkFVTFRfU1BFTExCT09LICAKK1BfR1VJTERfTUFMRV9USVRMRVMgCU1hZW5ubGljaGUgR2lsZGVudGl0ZWwKK1BfR1VJTERfRkVNQUxFX1RJVExFUwlXZWlibGljaGUgR2lsZGVudGl0ZWwKK1BfR1VJTERfTEVWRUxTCQlHaWxkZW5zdHVmZW4KK1BfU0JfU1BFTExTIAkJUHJvcGVydHkgZnVlciBTcGVsbHMgaW4gU3BlbGxib29rCitQX0dMT0JBTF9TS0lMTFBST1BTCVByb3BlcnRpZXMgZGVyIEdpbGRlIFVORCBkZXMgU3BlbGxib29rcworCitQcm9wZXJ0aWVzIGRlcyBTcGllbGVyczoKK1BfR1VJTEQJCQlTdHJpbmcgbWl0IGRlbSBOYW1lbiBkZXIgR2lsZGUKK1BfR1VJTERfTEVWRUwJCUdpbGRlbnN0dWZlCitQX0dVSUxEX1RJVExFCQlHaWxkZW50aXRlbAorUF9HVUlMRF9SQVRJTkcJCVJhdGluZyBpbiBkZXIgR2lsZGUKK1BfTkVXU0tJTExTCQltYXBwaW5nIG1pdCBTa2lsbHMgdW5kIFNwZWxscworUF9ORVhUX1NQRUxMX1RJTUUJWmVpdCBiaXMgZGVyIG5hZWNoc3RlIFNwZWxsIGdlc3Byb2NoZW4gd2VyZGVuIGthbm4KK1BfVE1QX0FUVEFDS19IT09LCUFuZ3JpZmZzLUVyc2F0emZ1bmt0aW9uCitQX1RNUF9BVFRBQ0tfTU9ECUFuZ3JpZmZzLU1vZGlmaXppZXJ1bmcKK1BfVE1QX0RFRkVORF9IT09LCUFid2Voci1FcnNhdHpmdW5rdGlvbgorUF9UTVBfRElFX0hPT0sJCSJEaWUiLUVyc2F0emZ1bmt0aW9uCitQX1RNUF9NT1ZFX0hPT0sJCUJld2VndW5ncy1FcnNhdHpmdW5rdGlvbgorUF9ERUZFTkRFUlMJCVZlcnRlaWRpZ2VyCitQX1BSRVBBUkVEX1NQRUxMCVZvcmJlcmVpdGV0ZXIgU3BlbGwKK1BfREVGQVVMVF9HVUlMRAkJU3RhbmRhcmRnaWxkZQorUF9NQUdJQ19SRVNJU1RBTkNFX09GRlNFVCBPZmZzZXQgZnVlciBNYWdpZS1SZXNpc3RlbnplbgorCitTdGFuZGFyZC1Ta2lsbHM6CitTS19GSUdIVAkJS2FtcGZza2lsbChnbG9iYWwpCitTS19TV09SREZJR0hUSU5HCVNjaHdlcnRrYW1wZgorU0tfV0VBUE9OTEVTUwkJV2FmZmVubG9zZXIgS2FtcGYKK1NLX1RXT0hBTkRFRCAgICAgICAJWndlaWhhbmRrYW1wZgorU0tfQ0FTVElORyAgICAgICAgIAlaYXViZXItU2tpbGwKK1NLX01BR0lDX0FUVEFDSyAgICAJTWFnaXNjaGVyIEFuZ3JpZmYKK1NLX01BR0lDX0RFRkVOU0UgICAJTWFnaXNjaGUgQWJ3ZWhyCitTS19OSUdIVFZJU0lPTiAgICAgCU5hY2h0c2ljaHQKK1NLX0JPT1pFICAgICAgICAgICAJU2F1Zi1Ta2lsbAorU0tfSU5GT1JNX0RFRkVORCAgIAkKK1NLX0RFRkVORF9PVEhFUgkJCitTS19DQVJSWQkJVHJhZ2UtU2tpbGwKK1NLX1NQRUxMX0RFRkVORAkJU3BydWNoLUFid2VocgorCitTa2lsbC1BdHRyaWJ1dGU6CitQX1NLSUxMX0FUVFJJQlVURVMJUHJvcGVydHkgZnVlciBTa2lsbC1BdHRyaWJ1dGUKK1BfU0tJTExfQVRUUklCVVRFX09GRlNFVFMgICBQcm9wZXJ0eSBmdWVyIE9mZnNldHMgZGVyIFNraWxsLUF0dHJpYnV0ZQorU0FfUVVBTElUWQkJQWxsZ2VtZWluZSBRdWFsaXRhZXQKK1NBX0RBTUFHRQkJU2NoYWRlbgorU0FfU1BFRUQJCUdlc2Nod2luZGlna2VpdAorU0FfRFVSQVRJT04JCURhdWVyCitTQV9FWFRFTlNJT04JCUF1c2RlaG51bmcKK1NBX1JBTkdFCQlSZWljaHdlaXQKK1NBX0VORU1ZX1NBVkU6IGlkZW50aXNjaCB6dSBTQV9TUEVMTF9QRU5FVFJBVElPTiAoT0JTT0xFVCEpCitTQV9TUEVMTF9QRU5FVFJBVElPTjogQ2hhbmNlIGRlcyBfQ2FzdGVyc18sIGVpbmVuIFNwZWxsIGR1cmNoIGVpbgorICAgICAgICAgICAgICAgICAgICAgIFBfTk9NQUdJQyBkdXJjaHp1a3JpZWdlbi4KKworU2tpbGwtSW5mbzoKK0ZBQ1RPUih4KQkJRmFrdG9yCitPRkZTRVQoeCkJCU9mZnNldAorU0lfU0tJTExGVU5DCQlGdW5rdGlvbiwgZGllIGF1ZmdlcnVmZW4gd2lyZAorU0lfQ0xPU1VSRQkJSW50ZXJuIChHZXNjaHdpbmRpZ2tlaXRzb3B0aW1pZXJ1bmcpCitTSV9TUEVMTEJPT0sJCVNwZWxsYm9vaywgaW4gZGVtIGRlciBTcGVsbCBzdGVodAorU0lfU1BFTExDT1NUCQlLb3N0ZW4gZGVzIFNwZWxscworU0lfVElNRV9NU0cJCURpZSBNZWxkdW5nIHdpcmQgYW5zdGVsbGUgdm9uICJEdSBiaXN0IG5vY2ggenUgCisJCQllcnNjaG9lcGZ0IHZvbiBEZWluZW0gbGV0enRlbiBTcHJ1Y2guIiBhdXNnZWdlYmVuLgorU0lfU1BfTE9XX01TRwkJRGllIE1lbGR1bmcgd2lyZCBhbnN0ZWxsZSB2b24gIkR1IGhhc3QgenUgd2VuaWcgCisJCQlaYXViZXJwdW5rdGUgZnVlciBkaWVzZW4gU3BydWNoLiIgYXVzZ2VnZWJlbi4KK1NJX05PTUFHSUMJCVByb3plbnR3ZXJ0LCBtaXQgZGVtIFBfTk9NQUdJQyBtZ2FuZ2VuIHdlcmRlbiBrYW5uCitTSV9TUEVMTEZBVElHVUUJCUVyc2Nob2VwZnVuZyAtIFplaXQsIGluIGRlciBrZWluZSB3ZWl0ZXJlbiBTcGVsbHMKKwkJCWF1ZmdlcnVmZW4gd2VyZGVuIGtvZW5uZW4KK1NJX1NLSUxMTEVBUk4JCUxlcm5nZXNjaHdpbmRpZ2tlaXQgaW4gMC4wMSUgcHJvIEFfSU5ULzIKK1NJX1NLSUxMQUJJTElUWQkJRmFlaGlna2VpdCwgZGllc2VuIFNwcnVjaCB6dSBiZW51dHplbgorU0lfU0tJTExBUkcJCUFyZ3VtZW50ZSwgZGllIHVlYmVyZ2ViZW4gd3VyZGVuCitTSV9TS0lMTFJFU1RSX1VTRQlCZXNjaHJhZW5rdW5nZW4gYmVpbSBHZWJyYXVjaAorU0lfU0tJTExSRVNUUl9MRUFSTglCZXNjaHJhZW5rdW5nZW4gYmVpbSBMZXJuZW4KK1NJX1NLSUxMSU5GTwkJS3VyemVyIEluZm9ybWF0aW9uc3RleHQKK1NJX1NLSUxMSU5GT19MT05HCUxhbmdlciBJbmZvcm1hdGlvbnN0ZXh0CitTSV9TS0lMTERBTUFHRQkJU2NoYWRlbgorU0lfU0tJTExEQU1BR0VfVFlQRQlBcnQgZGVzIFNjaGFkZW5zCitTSV9TS0lMTERBTUFHRV9NU0cJTWVsZHVuZyBkaWUgYW5zdGVsbGUgZWluZXIgV2FmZmUga29tbWVuIHNvbGwKK1NJX1NLSUxMREFNQUdFX01TRzIJZGl0byBmdWVyIGRlbiBUZXh0IGZ1ZXIgYW5kZXJlIGltIFJhdW0KK1NJX1NQRUxMCQlTcGVsbCwgbWl0IGRlbSBhbmdlZ3JpZmZlbiB3dXJkZQorU0lfSU5IRVJJVAkJU2tpbGwsIHZvbiBkZW0gZXR3YXMgdWViZXJub21tZW4gd2VyZGVuIHNvbGwKK1NJX0RJRkZJQ1VMVFkJCVdlcnQsIGRlciBkaWUgT2JlcmdyZW56ZSBkZXIgRmFlaGlna2VpdCBhYmdyZW56dAorU0lfTEFTVExJR0hUCQlGdWVyIE5hY2h0c2ljaHQ6IFdhbm4gaGF0IGRlciBTcGllbGVyIHp1bSBsZXR6dGVuIAorCQkJbWFsIExpY2h0IGdlc2VoZW4uCitTSV9TS0lMTEhFQUwJCUhlaWx1bmcKK1NJX1VTUgkJCXNlbGJzdCBkZWZpbmllcnRlIEluZm9zCitTSV9HVUlMRAkJR2lsZGUsIGZhbGxzIEF1c3dhaGwgYXVzIG1laHJlcmVuIG1vZWdsaWNoCitTSV9FTkVNWQkJRmVpbmQgYmVpIEthbXBmc3BydWVjaGVuCitTSV9GUklFTkQJCURlciB6dSB2ZXJ0ZWlkaWdlbmRlIEZyZXVuZCBiZWkgRGVmZW5kT3RoZXIgCisJCQl1bmQgSW5mb3JtRGVmZW5kCitTSV9NQUdJQ19UWVBFCQlWb24gd2FzIGZ1ZXIgZWluZXIgQXJ0IGlzdCBkaWUgTWFnaWUgKHMudS4pCitTSV9QUkVQQVJFX1RJTUUJCVplaXQgZGllIHp1ciBWb3JiZXJlaXR1bmcgYmVub2V0aWd0IHdpcmQuCitTSV9BVFRBQ0tfQlVTWV9NU0cJTWVsZHVuZywgd2VubiBkZXIgU3BpZWxlciB6dSBiZXNjaGFlZnRpZ3QgaXN0CitTSV9OT19BVFRBQ0tfQlVTWQlXZW5uIGRlciBTcGVsbCBuaWNodCBhbHMgVGFldGlna2VpdCB6YWVobGVuL2dlemFlaGx0IAorCQkJd2VyZGVuIHNvbGwsIGthbm4gbWFuIGhpZXIgCisJCQlOT19BVFRBQ0tfQlVTWVtfU0VUfF9RVUVSWV0gc2V0emVuCitTUF9OQU1FCQkJTmFtZSBkZXMgU3BlbGxzLCBmYWxscyBNYXBwaW5nCitTUF9TSE9XX0RBTUFHRQkJVHJlZmZlcm1lbGR1bmcgc29sbCBnZXplaWd0IHdlcmRlbi4KK1NQX1JFRFVDRV9BUk1PVVIJQUMgc29sbCBUeXBhYmhhZW5naWcgcmVkdXppZXJ0IHdlcmRlbi4KK1NQX1BIWVNJQ0FMX0FUVEFDSwlLb2VycGVybGljaGVyIEFuZ3JpZmYKK1NQX1JFQ1VSU0lWRQkJUmVrdXJzaW9uZW4KKworU2tpbGwtUmVzdHJpY3Rpb25zOgorU1JfRlVOCQkJRnVua3Rpb24sIGRpZSB3ZWl0ZXJlIEVpbnNjaHJhZW5rdW5nZW4gcHJ1ZWZ0CitTUl9FWENMVURFX1JBQ0UJCUF1c2dlc2NobG9zc2VuZSBSYXNzZW4KK1NSX0lOQ0xVREVfUkFDRQkJRWluZ2VzY2hsb3NzZW5lIFJhc3NlbgorU1JfR09PRAkJCUFsaWduIDwgCitTUl9CQUQJCQlBbGlnbiA+CitTUl9GUkVFX0hBTkRTCQlCZW5vZXRpZ3RlIGZyZWllIEhhZW5kZQorU1JfU0VFUgkJCU11c3MgU2VoZXIgc2VpbgorU1JfTUlOX1NJWkUJCU1pbmRlc3Rncm9lc3NlCitTUl9NQVhfU0laRQkJTWF4aW1hbGdyb2Vzc2UKK1NNX1JBQ0UJCQlSYXNzZW5zcGV6aWZpc2NoZSBCZXNvbmRlcmhlaXRlbgorCitNYWdpZS1BcnRlbjoKK01UX0FOR1JJRkYgICAgICAJQW5ncmlmZgorTVRfU0NIVVRaICAgICAgIAlTY2h1dHoKK01UX0lMTFVTSU9OICAgICAJSWxsdXNpb24KK01UX0JFSEVSUlNDSFVORyAJQmVoZXJyc2NodW5nCitNVF9IRUxMU0lDSFQgICAgCUhlbGxzaWNodAorTVRfVkVSV0FORExVTkcgIAlWZXJ3YW5kbHVuZworTVRfQkVTQ0hXT0VSVU5HIAlCZXNjaHdvZXJ1bmcKK01UX0JFV0VHVU5HICAgICAJQmV3ZWd1bmcKK01UX1NBS1JBTCAgICAgICAJJ0dvZXR0bGljaGVzJworTVRfSEVJTFVORyAgICAgIAlIZWlsdW5nCitNVF9DUkVBVElPTiAgICAgCUVyc2NoYWZmdW5nCitNVF9QU1lDSE8gICAgICAgCVBzeWNoby1LcmFtCitNVF9NSVNDICAgICAgICAgCVNvbnN0aWdlcworCmRpZmYgLS1naXQgYS9kb2MvbGZ1bi9HaXZlTWluaVF1ZXN0IGIvZG9jL2xmdW4vR2l2ZU1pbmlRdWVzdApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5jMDg0MThjCi0tLSAvZGV2L251bGwKKysrIGIvZG9jL2xmdW4vR2l2ZU1pbmlRdWVzdApAQCAtMCwwICsxLDQzIEBACitHaXZlTWluaVF1ZXN0KCkKKworRlVOS1RJT046CisgICAgICAgIGludCBHaXZlTWluaVF1ZXN0KG9iamVjdCB3aW5uZXIpCisKK0RFRklOSUVSVCBJTjoKKyAgICAgICAgL3NlY3VyZS9xdWVzdG1hc3RlcgorCitBUkdVTUVOVEU6CisJd2lubmVyCisJICBTcGllbGVyb2JqZWt0LCBkYXMgZGllIFF1ZXN0IGJlc3RhbmRlbiBoYXQuCisKK1JVZUNLR0FCRVdFUlQ6CisgICAgICAgIChEaWUgRGVmaW5lcyBmdWVyIGRlbiBSdWVja2dhYmV3ZXJ0IGZpbmRlbiBzaWNoIGluIAorICAgICAgICAgL3NlY3VyZS9xdWVzdG1hc3Rlci5oKQorICAgICAgICAgMSA6IEhhdCBnZWtsYXBwdCAgICAgICAgICAgICAgICAgICAgICAgICAgIChPSykKKyAgICAgICAgLTEgOiBTcGllbGVyIGhhdCBkaWUgUXVlc3QgYmVyZWl0cyBnZWxvZXN0ICAoTVFfQUxSRUFEWV9TRVQpCisgICAgICAgIC0yIDogVW5ndWVsdGlnZXIgUXVlc3RuYW1lICAgICAgICAgICAgICAgICAgKE1RX0tFWV9JTlZBTElEKQorICAgICAgICAtMyA6IFVuYmVmdWd0ZXIgWnVncmlmZiAgICAgICAgICAgICAgICAgICAgIChNUV9JTExFR0FMX09CSikKKyAgICAgICAgLTQgOiBRdWVzdCB6dXIgWmVpdCBpbmFrdGl2ICAgICAgICAgICAgICAgICAoTVFfSVNfSU5BQ1RJVkUpCisgICAgICAgIC01IDogR2Flc3RlIGxvZXNlbiBrZWluZSBRdWVzdHMgICAgICAgICAgICAgKE1RX0dVRVNUKQorCitCRVNDSFJFSUJVTkc6CisJTWl0IGRpZXNlciBGdW5rdGlvbiB3aXJkIG5hY2ggZGVtIGVyZm9sZ3JlaWNoZW4gTG9lc2VuIGVpbmVyIAorICAgICAgICBNaW5pUXVlc3QgZGllIFF1ZXN0IGltIFNwaWVsZXIgZWluZ2V0cmFnZW4uIERhYmVpIG11c3MgZGVyCisgICAgICAgIEF1ZnJ1ZiBpbiBkZW0gT2JqZWt0IGVyZm9sZ2VuLCB3ZWxjaGVzIGltIFF1ZXN0bWFzdGVyIAorICAgICAgICBlaW5nZXRyYWdlbiBpc3QuIEFscyBBcmd1bWVudCBtdXNzIGRhcyBTcGllbGVyb2JqZWt0IAorCWFuZ2VnZWJlbiB3ZXJkZW4sIHdlbGNoZXMgZGllIFF1ZXN0IGJlc3RhbmRlbiBoYXQuCisgICAgICAgIAorQkVJU1BJRUw6CisJUU0tPkdpdmVNaW5pUXVlc3QodGhpc19wbGF5ZXIoKSk7CisKK1NJRUhFIEFVQ0g6CisgICAgICAgIEhhc01pbmlRdWVzdAorICAgICAgICAvc2VjdXJlL3F1ZXN0bWFzdGVyLmgsIC9zZWN1cmUvcXVlc3RtYXN0ZXIuYworCitISU5XRUlTOgorICAgICAgICBEaWUgSW5mb3JtYXRpb25lbiBmdWVyIGRlbiBFTSBmdWVyIFF1ZXN0cyBzb2xsdGVuIGRpZXNlbQorICAgICAgICBiZWltIEVpbnRyYWdlbiBkZXIgTWluaXF1ZXN0IGluIGRlbiBRdWVzdG1hc3RlciBwZXIgTWFpbAorICAgICAgICB6dWdlc2NoaWNrdCB3ZXJkZW4uIFNpZWhlIGRhenUgZGllIEhpbGZlIHp1IEFkZE1pbmlRdWVzdC4KKworLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorWnVsZXR6dCBnZWFlbmRlcnQ6IERvbiwgMzAuIEphbiAyMDE0LCAyMjoxNDoxMiB2b24gQXJrLgpkaWZmIC0tZ2l0IGEvZG9jL2xmdW4vR2l2ZVF1ZXN0IGIvZG9jL2xmdW4vR2l2ZVF1ZXN0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjYxM2E1MDEKLS0tIC9kZXYvbnVsbAorKysgYi9kb2MvbGZ1bi9HaXZlUXVlc3QKQEAgLTAsMCArMSw2MyBAQAorR2l2ZVF1ZXN0KCkKKworRlVOS1RJT046CisgICAgICAgIHZhcmFyZ3MgaW50IEdpdmVRdWVzdChzdHJpbmcgcXVlc3RuYW1lLCBzdHJpbmcgbWVzc2FnZSkKKworREVGSU5JRVJUIElOOgorICAgICAgICAvc3RkL3BsYXllci9xdWVzdHMuYworCitBUkdVTUVOVEU6CisgICAgICAgIHF1ZXN0bmFtZQorICAgICAgICAgIFF1ZXN0bmFtZSwgd2llIGVyIGltIFF1ZXN0bWFzdGVyIGVpbmdldHJhZ2VuIHd1cmRlLgorICAgICAgICBtZXNzYWdlIAorICAgICAgICAgIE9wdGlvbmFsZSBNZWxkdW5nLCBkaWUgYXVmIGRlbSBBYmVudGV1ZXItS2FuYWwgc3RhdHQgZGVyIAorICAgICAgICAgIFN0YW5kYXJkbWVsZHVuZyBnZXNlbmRldCB3aXJkLgorICAgICAgICAgIERhYmVpIHdpcmQgQEBuYW1lQEAgZHVyY2ggZGVuIFNwaWVsZXJuYW1lbiBlcnNldHp0LgorCitSVWVDS0dBQkVXRVJUOgorICAgICAgICAoRGllIERlZmluZXMgZnVlciBkZW4gUnVlY2tnYWJld2VydCBmaW5kZW4gc2ljaCBpbiAKKyAgICAgICAgIC9zZWN1cmUvcXVlc3RtYXN0ZXIuaCkKKyAgICAgICAgIDEgOiBIYXQgZ2VrbGFwcHQgICAgICAgICAgICAgICAgICAgICAgICAgICAoT0spCisgICAgICAgIC0xIDogU3BpZWxlciBoYXQgZGllIFF1ZXN0IGJlcmVpdHMgZ2Vsb2VzdCAgKEdRX0FMUkVBRFlfU0VUKQorICAgICAgICAtMiA6IFVuZ3VlbHRpZ2VyIFF1ZXN0bmFtZSAgICAgICAgICAgICAgICAgIChHUV9LRVlfSU5WQUxJRCkKKyAgICAgICAgLTMgOiBVbmJlZnVndGVyIFp1Z3JpZmYgICAgICAgICAgICAgICAgICAgICAoR1FfSUxMRUdBTF9PQkopCisgICAgICAgIC00IDogUXVlc3QgenVyIFplaXQgaW5ha3RpdiAgICAgICAgICAgICAgICAgKEdRX0lTX0lOQUNUSVZFKQorCitCRVNDSFJFSUJVTkc6CisgICAgICAgIE1pdCBkaWVzZXIgRnVua3Rpb24gd2lyZCBuYWNoIGRlbSBlcmZvbGdyZWljaGVuIExvZXNlbiBlaW5lciAKKyAgICAgICAgUXVlc3QgZGllIFF1ZXN0IGltIFNwaWVsZXIgZWluZ2V0cmFnZW4uIERhYmVpIG11c3MgZGVyIEF1ZnJ1ZiAKKyAgICAgICAgaW4gZGVtIE9iamVrdCBlcmZvbGdlbiwgd2VsY2hlcyBpbSBRdWVzdG1hc3RlciBlaW5nZXRyYWdlbiBpc3QuCisgICAgICAgIFp1c2FldHpsaWNoIHdpcmQgZGVyIFplaXRwdW5rdCBlaW5nZXRyYWdlbiwgYW4gZGVtIGRpZSBRdWVzdAorICAgICAgICBiZXN0YW5kZW4gd3VyZGUuCisgICAgICAgIAorICAgICAgICBXZXIgc2ljaCBkYSBuaWNodCBzaWNoZXIgaXN0LCBrYW5uIG1pdCBkZW0gUXVlc3R0b29sIAorICAgICAgICAoL29iai90b29scy9xdWVzdHRvb2wpIG5hY2hzZWhlbi4gCisKKyAgICAgICAgTmFjaGRlbSBlaW5lIFF1ZXN0IGFscyBnZWxvZXN0IG1hcmtpZXJ0IHd1cmRlLCBpc3QgZGllcyBpbiBlaW5lbSAKKyAgICAgICAgTG9nZmlsZSBmdWVyIGRpZSBRdWVzdCBpbSBWZXJ6ZWljaG5pcyAvbG9nL3F1ZXN0IGVpbnp1dHJhZ2VuLiBEYXp1CisgICAgICAgIHdpcmQgd3JpdGVfZmlsZSB2ZXJ3ZW5kZXQuCisKK0JFSVNQSUVMOgorCisgICAgICAgIGludCBxdWVzdDsKKworICAgICAgICBxdWVzdCA9IHRoaXNfcGxheWVyKCktPkdpdmVRdWVzdCgiWmFjaGFyaWFzIEVpc3BhbGFzdCIpOworCisgICAgICAgIGlmIChxdWVzdCA9PSAxKQorICAgICAgICB7CisgICAgICAgICAgd3JpdGUoIkR1IGZ1ZWhsc3QsIHdpZSBEZWluZSBFcmZhaHJ1bmcgYW5zdGVpZ3QuXG4iKTsKKyAgICAgICAgICB3cml0ZV9maWxlKCIvbG9nL3F1ZXN0L2Vpc3BhbGFzdCIsIAorICAgICAgICAgICAgICAgICAgICAgZHRpbWUodGltZSgpKSsiICAgQXVmZ2FiZSBnZWxvZXN0IHZvbiAiCisgICAgICAgICAgICAgICAgICAgICArdGhpc19wbGF5ZXIoKS0+bmFtZSgpKyJcbiIpOworICAgICAgICB9IAorICAgICAgICBlbHNlIGlmIChxdWVzdCAhPSAtMSkKKyAgICAgICAgICB3cml0ZSggIkRpZSBXZWx0ZW5tYXNjaGluZSB3aWxsIERpciBEZWluZSBBcmJlaXQgIgorICAgICAgICAgICAgICAgICArIm5pY2h0IGFuZXJrZW5uZW4uXG4iCisgICAgICAgICAgICAgICAgICsiRnJhZ2UgZWluZW4gRXJ6bWFnaWVyIHVtIEhpbGZlLlxuIiApOworCitTSUVIRSBBVUNIOgorICAgICAgICAvc2VjdXJlL3F1ZXN0bWFzdGVyLmgsIC9vYmovdG9vbHMvcXVlc3R0b29sCisgICAgICAgIFF1ZXJ5UXVlc3QoKSwgd3JpdGVfZmlsZSgpLCBNb2RpZnlRdWVzdFRpbWUoKQorCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCitadWxldHp0IGdlYWVuZGVydDogU29uLCAyNy4gQXByIDIwMTQsIEFyYXRob3JuCmRpZmYgLS1naXQgYS9kb2MvbGZ1bi9Hcm91cE5hbWUgYi9kb2MvbGZ1bi9Hcm91cE5hbWUKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uN2E4MWM0NQotLS0gL2Rldi9udWxsCisrKyBiL2RvYy9sZnVuL0dyb3VwTmFtZQpAQCAtMCwwICsxLDYzIEBACitHcm91cE5hbWUoKQorRlVOS1RJT046CisgICAgIHN0cmluZyBHcm91cE5hbWUoc3RyaW5nIGdycCkKKworREVGSU5JRVJUIElOOgorICAgICAvcC9kYWVtb24vbWF0ZXJpYWxkYi5jIChNQVRFUklBTERCKQorCitBUkdVTUVOVEU6CisgICAgIHN0cmluZyBncnAgLSBlaW4gR3J1cHBlbm5hbWUKKworQkVTQ0hSRUlCVU5HOgorICAgICBHaWJ0IGRpZSBMYW5nYmVzY2hyZWlidW5nIGRlcyBHcnVwcGVubmFtZW5zIHp1cnVlY2suCisKK1JVRUNLR0FCRVdFUlQ6CisgICAgIERpZSBHcnVwcGVuYmVzY2hyZWlidW5nIG9kZXIgIlVuYmVrYW5udGVzIgorCitCRUlTUElFTEU6CisgICAgIC8vIHNpbXBlbAorICAgICB0bXA9bV9pbmRpY2VzKG9iLT5RdWVyeVByb3AoUF9NQVRFUklBTCkpOworICAgICB3cml0ZSgiRGllc2VzIE9iamVrdCBnZWhvZXJ0IHUuYS4genVyIEdydXBwZSAiKworICAgICAgICAgICBNQVRFUklBTERCLT5Hcm91cE5hbWUoTUFURVJJQUxEQi0+R2V0TWF0TWVtYmVyc2hpcCh0bXBbMF0pWzBdKSsKKyAgICAgICAgICAgIi5cbiIpOworICAgICAvLyBnaWJ0IGRpZSBlcnN0ZSBHcnVwcGVuenVnZWhvZXJpZ2tlaXQgZGVzIGVyc3RlIE1hdGVyaWFscyBpbgorICAgICAvLyBQX01BVEVSSUFMIHp1cnVlY2sgKGJlaSBNQVRHUk9VUF9NRVRBTCB6LkIuICIuLi4genVyIEdydXBwZSBNZXRhbGxlLiIpCisKKyAgICAgLy8gZWluIHdlaXNlciBTY2htaWVkOgorICAgICBpbnQgaTsKKyAgICAgc3RyaW5nICptYXQsIG1uYW1lLCBtZ3JvdXA7CisgICAgIG1hdD1tX2luZGljZXMob2ItPlF1ZXJ5UHJvcChQX01BVEVSSUFMKSk7CisgICAgIGk9c2l6ZW9mKG1hdCk7CisKKyAgICAgd3JpdGUoIkRlciBTY2htaWVkIHNhZ3Q6ICIrb2ItPk5hbWUoV0VSKSsiIGJlc3RlaHQgYXVzIC4uLlxuIik7CisgICAgIHdoaWxlKGktLSkgeworICAgICAgLy8gZGVuIE5hbWVuIGVya2VubmVuL2F1c3NwcmVjaGVuOgorICAgICAgLy8gTWF0ZXJpYWxpZW4gd2VyZGVuIGFsbGdlbWVpbiBnYW56IHNjaGxlY2h0IGVya2FubnQgKHp1IDUlKSwgYWJlcgorICAgICAgLy8gYWxsZXMgYXVzIE1ldGFsbCB3aXJkIHp1ICsxMDAlIGd1dCBlcmthbm50IC4uLgorICAgICAgbW5hbWU9TUFURVJJQUxEQi0+TWF0ZXJpYWxOYW1lKG1hdFtpXSwgV0VSLAorCSAgICAgKHs1LCAoW01BVEVSSUFMX1NZTU1FVFJJQ19SRUNPR05JWkFCSUxJVFk6CisJCQkoe01BVEdST1VQX01FVEFMLCAxMDB9KV0pfSkpOworCisgICAgICAvLyB1bmQgbnVyIE1ldGFsbGUgYW5hbHlzaWVyZW4gLi4uCisgICAgICBpZihNQVRFUklBTERCLT5NYXRlcmlhbEdyb3VwKChbbWF0W2ldOjEwMF0pLE1BVEdST1VQX01FVEFMKT49MTAwKSB7CisgICAgICAgaW50IGo7CisgICAgICAgc3RyaW5nICptZ3I7CisgICAgICAgbWdyPU1BVEVSSUFMREItPkdldE1hdE1lbWJlcnNoaXAobWF0W2ldKTsKKyAgICAgICBqPXNpemVvZihtZ3IpOworICAgICAgIG1ncm91cD0iIGdlaG9lcnQgenUgIjsKKyAgICAgICB3aGlsZShqLS0pIHsKKyAgICAgICAgbWdyb3VwKz1NQVRFUklBTERCLT5Hcm91cE5hbWUobWdyW2pdKTsKKyAgICAgICAgaWYoaj4wKSBtZ3JvdXArPSIsICI7CisgICAgICAgfQorICAgICAgfSBlbHNlIG1ncm91cD0iIGtlbm5lIGljaCBuaWNodCI7CisgICAgICBwcmludGYoIiUtMTIuMTJzOiAlc1xuIixtbmFtZSwgbWdyb3VwKTsKKyAgICAgfQorCitTSUVIRSBBVUNIOgorICAgICBLb256ZXB0ZToJICBtYXRlcmlhbCwgbWF0ZXJpYWxlcmtlbm51bmcKKyAgICAgR3J1bmRsZWdlbmQ6IFBfTUFURVJJQUwsIC9zeXMvdGhpbmcvbWF0ZXJpYWwuaAorICAgICBNYXN0ZXI6CSAgQWRkTWF0ZXJpYWwoKSwgQ29udk1hdGVyaWFsTGlzdCgpLCBNYXRlcmlhbEdyb3VwKCksCisJCSAgTWF0ZXJpYWxOYW1lKCksCisJCSAgR2V0R3JvdXBNZW1iZXJzKCksIEdldE1hdE1lbWJlcnNoaXAoKQorCis3LiBNYWkgMjAwNCBHbG9pbnNvbgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2RvYy9sZnVuL0d1YXJkRXhpdCBiL2RvYy9sZnVuL0d1YXJkRXhpdApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4wYmE1M2M0Ci0tLSAvZGV2L251bGwKKysrIGIvZG9jL2xmdW4vR3VhcmRFeGl0CkBAIC0wLDAgKzEsODUgQEAKK0ZVTktUSU9OOgorICAgICBwcm90ZWN0ZWQgPGludHw8c3RyaW5nfGNsb3N1cmU+KiA+KiBHdWFyZEV4aXQob2JqZWN0IHJvb20sIGludCBob29raWQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3RyaW5nfGNsb3N1cmU+KiBoZGF0YSk7CisKK0RFRklOSUVSVCBJTjoKKyAgICAgL3N0ZC9ucGMvbW92aW5nLmMKKworQVJHVU1FTlRFOgorICAgICByb29tCisgICAgICAgICAgRGVyIGRlbiBIb29rIGF1c2xvZXNlbmRlIFJhdW0gKGVudmlyb25tZW50KCkpCisgICAgIGhvb2tpZAorICAgICAgICAgIERpZSBJRCBkZXMgSG9va3MgKEhfSE9PS19FWElUX1VTRSkKKyAgICAgaGRhdGEKKyAgICAgICAgICBFaW4gQXJyYXkgbWl0IDMgRWxlbWVudGVuOgorICAgICAgICAgICh7CisgICAgICAgICAgICAgIHZlcmIgLSBEYXMgS29tbWFuZG92ZXJiL0F1c2dhbmdzbmFtZSAoc3RyaW5nKQorICAgICAgICAgICAgICBkZXN0IC0gWmllbHJhdW0gKHN0cmluZykgb2RlciBjbG9zdXJlIChzcGVjaWFsIGV4aXRzKQorICAgICAgICAgICAgICBtc2cgIC0gQmV3ZWd1bmdzcmljaHR1bmcgKHN0cmluZykgb2RlciAwCisgICAgICAgICAgfSkKKworQkVTQ0hSRUlCVU5HOgorICAgICBJc3QgZGllc2UgRnVua3Rpb24gaW4gZWluZW0gTlBDIGRlZmluaWVydCwgdHJhZWd0IHNpY2ggZGVyIE5QQyBiZWkgamVkZXIKKyAgICAgQmV3ZWd1bmcgYXV0b21hdGlzY2ggYWxzIEtvbnN1bWVudCB2b24gSF9IT09LX0VYSVRfVVNFIGVpbiB1bmQgZGllc2UKKyAgICAgRnVua3Rpb24gd2lyZCBpbW1lciBnZXJ1ZmVuLCB3ZW5uIGVpbiBMZWJld2VzZW4gaW0gZ2xlaWNoZW4gRW52aXJvbm1lbnQKKyAgICAgd2llIGRlciBOUEMgdmVyc3VjaHQsIGVpbmVuIEF1c2dhbmcgenUgYmVudXR6ZW4uCisgICAgIERlciBOUEMga2FubiBkYW5uIGRpZSBCZXdlZ3VuZyBhYmJyZWNoZW4gKHVuZCBzbyBkZW4gQXVzZ2FuZworICAgICBibG9ja2llcmVuKSwgWmllbCBvZGVyIEJld2VndW5nc21lbGR1bmcgYWVuZGVybiBvZGVyIGtlaW5lIFZlcmFlbmRlcnVuZworICAgICB2b3JuZWhtZW4uCisgICAgIERpZSBLb25zdGFudGVuIGZ1ZXIgSG9va2lkIHVuZCBIb29rc3RhdHVzIChzLiBSdWVja2dhYmV3ZXJ0KSBzaW5kIGluCisgICAgIDxob29rLmg+IGRlZmluaWVydC4KKworUlVlQ0tHQUJFV0VSVDoKKyAgICAgQXJyYXkgbWl0IHp3ZWkgRWxlbWVudGVuOgorICAgICAoeworICAgICAgICAgSF9OT19NT0QgLyBIX0FMVEVSRUQgLyBIX0NBTkNFTExFRCwKKyAgICAgICAgIGhkYXRhCisgICAgIH0pCisgICAgIGhkYXRhIGlzdCBnZ2YuIGRhcyBnZWFlbmRlcnRlIEFycmF5LCB3ZWxjaGVzIGRpZSBGdW5rdGlvbiB1ZWJlcmdlYmVuCisgICAgIHdpcmQuIFdlaXRlcmUgRGV0YWlscyBzLiBhdWNoIC9kb2Mvc3RkL2hvb2tzCisKK0JFTUVSS1VOR0VOOgorICAgICBEaWUgQW56YWhsIGFuIEtvbnN1bWVudGVuIGVpbmVzIEhvb2tzIGlzdCBiZWdyZW56dC4gRXMgaXN0IGRhaGVyCisgICAgIG1vZWdsaWNoLCBkYXNzIGRpZSBSZWdpc3RyaWVydW5nIG5pY2h0IGtsYXBwdCwgd2VubiB6dXZpZWxlICg+NSkgV2FlY2h0ZXIKKyAgICAgaW0gUmF1bSBzaW5kLiBXaWxsIG1hbiBkYXJhdWYgcmVhZ2llcmVuLCBtdWVzc3RlIG1hbiBkaWUgUmVnaXN0cmllcnVuZworICAgICBwcnVlZmVuLgorICAgICBFaW4gTlBDLCB3ZWxjaGVyIEd1YXJkRXhpdCgpIGRlZmluaWVydCwgYWJlciBpbSBha3R1ZWxsZW4gRW52aXJvbm1lbnQKKyAgICAga2VpbmUgV2FjaGUgaGFsdGVuIHdpbGwsIGv2bm50ZSBzaWNoIHNlbGJlciBkZS1yZWdpc3RyaWVyZW4uCisKK0JFSVNQSUVMRToKKyAgICAgPGludHw8c3RyaW5nfGNsb3N1cmU+KiA+KiBHdWFyZEV4aXQob2JqZWN0IHJvb20sIGludCBob29raWQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzdHJpbmd8Y2xvc3VyZT4qIGhkYXRhKQorICAgICB7CisgICAgICAgLy8gTnVyIGluIEdlZmFlbmduaXNyYWV1bWVuIFdhY2hlIGhhbHRlbgorICAgICAgIGlmIChzdHJzdHIob2JqZWN0X25hbWUoZW52aXJvbm1lbnQoKSksICIvcm9vbS9qYWlsIik9PTApCisgICAgICAgeworICAgICAgICAgLy8gSGllciBnZWh0cyBuaWNodCByYXVzLiA7LSkKKyAgICAgICAgIGlmIChoZGF0YVswXSA9PSAicmF1cyIpIHsKKyAgICAgICAgICAgICB0ZWxsX29iamVjdCh0aGlzX3BsYXllcigpLCAuLi4pOworICAgICAgICAgICAgIHJldHVybiAoe0hfQ0FOQ0VMTEVELCBoZGF0YX0pOworICAgICAgICAgfQorICAgICAgICAgLy8gU3BlY2lhbCBleGl0cyBlcnNldHplbiB3aXIgZHVyY2ggZWluZW4gZWlnZW5lbgorICAgICAgICAgZWxzZSBpZiAoY2xvc3VyZXAoaGRhdGFbMV0pKSB7CisgICAgICAgICAgIGhkYXRhWzFdID0gIydteV9zcGVjaWFsX2V4aXQ7CisgICAgICAgICAgIHJldHVybiAoe0hfQUxURVJFRCwgaGRhdGF9KTsKKyAgICAgICAgIH0KKyAgICAgICAgIC8vIGFsbGUgYW5kZXJlbiBBdXNnYWVuZ2UgaW4gZGllIHBlcnNvZW5saWNoZSBaZWxsZQorICAgICAgICAgZWxzZSB7CisgICAgICAgICAgIHRlbGxfb2JqZWN0KHRoaXNfcGxheWVyKCksIC4uLik7CisgICAgICAgICAgIGhkYXRhWzFdID0gIi9yb29tL2phaWxfIitnZXR1aWQodGhpc19wbGF5ZXIoKSk7CisgICAgICAgICAgIGhkYXRhWzJdID0gIlN1ZWRlbiI7CisgICAgICAgICAgIHJldHVybiAoe0hfQUxURVJFRCwgaGRhdGF9KTsKKyAgICAgICAgIH0KKyAgICAgIH0KKyAgICAgIC8vIGluIGFsbGVuIGFuZGVyZW4gUmFldW1lbiBuaWNodCBlaW5ncmVpZmVuCisgICAgICByZXR1cm4gKHtIX05PX01PRCwgaGRhdGF9KTsKKyAgICB9CisKKworU0lFSEUgQVVDSDoKKyAgICAgQWRkRXhpdCwgQWRkU3BlY2lhbEV4aXQsIFJlbW92ZUV4aXQKKyAgICAgSFJlZ2lzdGVyVG9Ib29rLCBIUmVnaXN0ZXJNb2RpZmllciwgSFVucmVnaXN0ZXJGcm9tSG9vaworICAgICAvZG9jL3N0ZC9ob29rcworLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorMjAuMDIuMjAxNiwgWmVzc3RyYQorMjIuMDUuMjAxNiwgTXVwZmVsIChCZWlzcGllbCBrb3JyaWdpZXJ0KQpkaWZmIC0tZ2l0IGEvZG9jL2xmdW4vSGFsdCBiL2RvYy9sZnVuL0hhbHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMDZiZmRhNAotLS0gL2Rldi9udWxsCisrKyBiL2RvYy9sZnVuL0hhbHQKQEAgLTAsMCArMSwzMCBAQAorSGFsdCgpCisKK0ZVTktUSU9OOgorICAgICB2b2lkIEhhbHQoKTsKKworREVGSU5JRVJUIElOOgorICAgICAvc3RkL3RyYW5zcG9ydC5jCisKK0FSR1VNRU5URToKKyAgICAga2VpbmUKKworQkVTQ0hSRUlCVU5HOgorICAgICBEaWUgRmFocnQgZGVzIFRyYW5zcG9ydGVycyB3aXJkIGFiZ2Vicm9jaGVuLiBTaWUgbXVzcyBleHBsaXppdCBtaXQKKyAgICAgU3RhcnQoKSB3aWVkZXIgYXVmZ2Vub21tZW4gd2VyZGVuIQorCitSVWVDS0dBQkVXRVJUOgorICAgICBrZWluZXIKKworQkVNRVJLVU5HRU46CisgICAgIEVzIGdpYnQga2VpbmUgZWluZmFjaGUgTW9lZ2xpY2hrZWl0LCBkaWUgRmFocnQgZWluZXMgVHJhbnNwb3J0ZXJzIGFuCisgICAgIGRlciBTdGVsbGUgd2llZGVyIGF1Znp1bmVobWVuLCBhbiBkZXIgc2llIHVudGVyYnJvY2hlbiB3dXJkZS4gTWFuCisgICAgIG11ZXNzdGUgZGllIGFrdHVlbGxlIFBvc2l0aW9uIG1pdCBRdWVyeVBvc2l0aW9uKCkgZXJtaXR0ZWxuLCBtaXQgSGlsZmUKKyAgICAgZGVyIEFkZFhYWCgpLUF1ZnJ1ZmUgaW4gZWluZSBQb3NpdGlvbnNudW1tZXIgdW13YW5kbGVuIHVuZCBkaWVzZSBhbgorICAgICBTdGFydCgpIHVlYmVyZ2ViZW4uCisKK1NJRUhFIEFVQ0g6CisgICAgIFN0YXJ0KCksIC9zdGQvdHJhbnNwb3J0LmMKKworLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorTGFzdCBtb2RpZmllZDogV2VkIE1heSA4IDEwOjE5OjIzIDE5OTYgYnkgV2FyZ29uCmRpZmYgLS1naXQgYS9kb2MvbGZ1bi9IYXNNaW5pUXVlc3QgYi9kb2MvbGZ1bi9IYXNNaW5pUXVlc3QKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNzZmYzM5NAotLS0gL2Rldi9udWxsCisrKyBiL2RvYy9sZnVuL0hhc01pbmlRdWVzdApAQCAtMCwwICsxLDM3IEBACitIYXNNaW5pUXVlc3QoKQorCitGVU5LVElPTjoKKyAgICAgICAgaW50IEhhc01pbmlRdWVzdChtaXhlZCBwbCwgbWl4ZWQgbmFtZSkKKworREVGSU5JRVJUIElOOgorICAgICAgICAvc2VjdXJlL3F1ZXN0bWFzdGVyCisKK0FSR1VNRU5URToKKyAgICAgICAgcGwKKyAgICAgICAgICBOYW1lIGRlcyBTcGllbGVycyBvZGVyIGRhcyBTcGllbGVyb2JqZWt0CisgICAgICAgIG5hbWUKKyAgICAgICAgICBGaWxlbmFtZSBkZXMgT2JqZWt0cyBvZGVyIGRhcyBPYmpla3Qgc2VsYnN0LCB3ZWxjaGVzIGRpZSBNaW5pcXVlc3QKKyAgICAgICAgICBpbSBTcGllbGVyIGVpbnRyYWdlbiBkYXJmLCBvZGVyIGRpZSBOdW1tZXIgKGludCkgZGVyIE1pbmlxdWVzdAorCitSVWVDS0dBQkVXRVJUOgorICAgICAgICAgMSA6IERlciBTcGllbGVyIGhhdCBkaWUgTWluaVF1ZXN0CisgICAgICAgICAwIDogRGVyIFNwaWVsZXIgaGF0IGRpZSBNaW5pUXVlc3Qgbm9jaCBuaWNodAorICAgICAgICAtMiA6IGFuZ2VnZWJlbmUgTWluaXF1ZXN0IGV4aXN0aWVydCBuaWNodAorICAgICAgICAtMyA6IGZhbHNjaGUgRGF0ZW50eXBlbiBmdWVyIHBsIG9kZXIgbmFtZSB1ZWJlcmdlYmVuCisKK0JFU0NIUkVJQlVORzoKKyAgICAgICAgTWl0IGRpZXNlciBGdW5rdGlvbiBrYW5uIGdldGVzdGV0IHdlcmRlbiwgb2IgZWluIFNwaWVsZXIgZWluZSAKKyAgICAgICAgTWluaVF1ZXN0IGJlcmVpdHMgZ2Vsb2VzdCBoYXQuIERhYmVpIGlzdCBlbnR3ZWRlciBkZXIgRmlsZW5hbWUgZGVzIAorICAgICAgICBPYmpla3RlcyBhbnp1Z2ViZW4sIGRhcyBkaWUgUXVlc3QgaW0gU3BpZWxlciBlaW50cmFnZW4gZGFyZiBvZGVyCisgICAgICAgIGRhcyBPYmpla3Qgc2VsYnN0LgorICAgICAgICAKK0JFSVNQSUVMOgorICAgICAgICBpZiggUU0tPkhhc01pbmlRdWVzdChnZXR1aWQodGhpc19wbGF5ZXIoKSksIHRoaXNfb2JqZWN0KCkpIT0xICkKKyAgICAgICAgICB3cml0ZSgiRHUgYmlzdCBub2NoIG5pY2h0IHJlaWYgZ2VudWcuXG4iKTsKKworU0lFSEUgQVVDSDoKKyAgICAgICAgR2l2ZU1pbmlRdWVzdChMKQorICAgICAgICAvc2VjdXJlL3F1ZXN0bWFzdGVyLmgsIC9zZWN1cmUvcXVlc3RtYXN0ZXIuYworCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCitadWxldHp0IGdlYWVuZGVydDogMjAxNC1GZWItMDMsIEFyYXRob3JuLgpkaWZmIC0tZ2l0IGEvZG9jL2xmdW4vSGl0RnVuYyBiL2RvYy9sZnVuL0hpdEZ1bmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uM2QyMjA3NQotLS0gL2Rldi9udWxsCisrKyBiL2RvYy9sZnVuL0hpdEZ1bmMKQEAgLTAsMCArMSw2OCBAQAorSGl0RnVuYygpCisKK0ZVTktUSU9OOgorICAgICBpbnQgSGl0RnVuYyhvYmplY3QgZW5lbXkpOworCitERUZJTklFUlQgSU46CisgICAgIGVpZ2VuZW4gT2JqZWt0ZW4sIGZ1ZXIgL3N0ZC93ZWFwb24vY29tYmF0LmMKKworQVJHVU1FTlRFOgorICAgICBlbmVteQorICAgICAgICAgIERlciBHZWduZXIsIGdlZ2VuIGRlbiBkaWUgV2FmZmUgZWluZ2VzZXR6dCB3aXJkLgorCitCRVNDSFJFSUJVTkc6CisgICAgIERpZSBXYWZmZSBrYW5uIGFuaGFuZCBkZXMgR2VnbmVycyBlbmVteSBlbnRzY2hlaWRlbiwgb2IgZWluCisgICAgIFNjaGFkZW5zYm9udXMgb2RlciBhdWNoIGVpbiBTY2hhZGVuc21hbHVzIHdpcmtzYW0gd2lyZC4gRGllc2VyIEJvbnVzCisgICAgIHdpcmQgenUgZGVtIG5vcm1hbGVuIFNjaGFkZW4gZGVyIFdhZmZlIGhpbnp1YWRkaWVydC4KKworUlVlQ0tHQUJFV0VSVDoKKyAgICAgRGVyIFNjaGFkZW5zYm9udXMgYnp3LiBkZXIgQWJzY2hsYWcuCisKK0JFTUVSS1VOR0VOOgorICAgICBXZW5uIGR1cmNoIGRlbiBCb251cyBkaWUgR2VuZWhtaWd1bmdzZ3JlbnplbiBkZXIgQmFsYW5jZQorICAgICB1ZWJlcnNjaHJpdHRlbiB3ZXJkZW4ga29lbm5lbiwgbXVzcyBtYW4gc2VpbmVuIFJlZ2lvbnNtYWdpZXIgdW5kCisgICAgIGRpZSBPYmpla3QtQmFsYW5jZSBrb25zdWx0aWVyZW4hCisKKyAgICAgV2VydGUgZGVyIEhpdEZ1bmMgc29sbHRlbiBpbW1lciB1ZWJlciBlaW4gcmFuZG9tKCkgenVydWVja2dlZ2ViZW4gCisgICAgIHdlcmRlbiEKKworICAgICBEaWVzZSBGdW5rdGlvbiBzb2xsdGUgZGllIFdhZmZlIG5pY2h0IHplcnN0b2VyZW4hIEZhbGxzIGlociBpbSBLYW1wZiBlaW5lCisgICAgIFdhZmZlIChnZ2YuIGluIEFiaGFlbmdpZ2tlaXQgdm9tIEdlZ25lcikgemVyc3RvZXJlbiB3b2xsdCwgbnV0enQgZGF6dQorICAgICBiaXR0ZSBUYWtlRmxhdygpLiAKKworQkVJU1BJRUxFOgorICAgICBFaW5lIFdhZmZlLCBkaWUgZ2VnZW4gT3JrcyBiZXNvbmRlcnMgZ3V0IHdpcmt0OgorCisgICAgIGluaGVyaXQgInN0ZC93ZWFwb24iOworCisgICAgICNpbmNsdWRlIDxwcm9wZXJ0aWVzLmg+CisgICAgICNpbmNsdWRlIDxjb21iYXQuaD4KKyAgICAgI2luY2x1ZGUgPGNsYXNzLmg+CisKKyAgICAgY3JlYXRlKCl7CisgICAgICAgaWYoIWNsb25lcCh0aGlzX29iamVjdCgpKSkgeworICAgICAgICAgICBzZXRfbmV4dF9yZXNldCgtMSk7CisgICAgICAgICAgIHJldHVybjsKKyAgICAgICB9CisgICAgICAgOjpjcmVhdGUoKTsKKyAgICAgICAvKiAKKyAgICAgICB6aWcgU2V0UHJvcCdzLCB1bSBkaWUgV2FmZmUgenUga29uZmlndXJpZXJlbgorICAgICAgIEhpdEZ1bmMoKSBpc3QgaW4gZGVyIFdhZmZlIHNlbGJzdCBkZWZpbmllcnQgCisgICAgICAgKi8KKyAgICAgICBTZXRQcm9wKFBfSElUX0ZVTkMsIHRoaXNfb2JqZWN0KCkpOworICAgICB9CisKKyAgICAgaW50IEhpdEZ1bmMob2JqZWN0IGVuZW15KQorICAgICB7CisgICAgICAgLyogbGFlc3N0IHNpY2ggZGVyIEdlZ25lciBhbHMgT3JrIGFuc3ByZWNoZW4/ICovCisgICAgICAgaWYgKGVuZW15LT5pc19jbGFzc19tZW1iZXIoQ0xfT1JDKSkKKyAgICAgICAgIHJldHVybiByYW5kb20oMTArcmFuZG9tKDUwKSk7IC8qIEphID0+IFNjaGFkZW4gZXJob2VoZW4gKi8KKworICAgICAgIHJldHVybiAwOyAgIC8qIGFuc29uc3RlbiBrZWluZW4genVzYWV0emxpY2hlbiBTY2hhZGVuIGFucmljaHRlbiAqLworICAgICB9CisKK1NJRUhFIEFVQ0g6CisgICAgIFF1ZXJ5RGVmZW5kKCksIC9zdGQvd2VhcG9uLmMKKyAgICAgVGFrZUZsYXcoKQorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorMTEuMDguMjAwNywgWmVzc3RyYQpkaWZmIC0tZ2l0IGEvZG9jL2xmdW4vSWRlbnRpZnkgYi9kb2MvbGZ1bi9JZGVudGlmeQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44MzZlNThiCi0tLSAvZGV2L251bGwKKysrIGIvZG9jL2xmdW4vSWRlbnRpZnkKQEAgLTAsMCArMSwyNCBAQAorSWRlbnRpZnkoKQorCitGVU5LVElPTjoKKyAgICAgdm9pZCBJZGVudGlmeShvYmplY3Qgb2IpOworCitERUZJTklFUlQgSU46CisgICAgIC9zdGQvY29ycHNlLmMKKworQVJHVU1FTlRFOgorICAgICBvYgorICAgICAgICAgIERhcyBrdWVyemxpY2ggbmFjaCBsYW5nZW0sIGhhcnRlbSBLYW1wZiB2ZXJzdG9yYmVuZSBPYmpla3QuCisKK0JFU0NIUkVJQlVORzoKKyAgICAgSW4gZGllc2VyIEZ1bmt0aW9uIHdlcmRlbiBMYW5nLSB1bmQgS3VyemJlc2NocmVpYnVuZyBkZXIgTGVpY2hlIGdlc2V0enQKKyAgICAgc293aWUgZGllIFZlcndlc3VuZyBpbiBHYW5nIGdlc2V0enQuCisKK1JVZUNLR0FCRVdFUlQ6CisgICAgIGtlaW5lcgorCitTSUVIRSBBVUNIOgorICAgICAvc3RkL2NvcnBzZS5jCisKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KK0xhc3QgbW9kaWZpZWQ6IFdlZCBNYXkgOCAxMDoxOTo1NyAxOTk2IGJ5IFdhcmdvbgpkaWZmIC0tZ2l0IGEvZG9jL2xmdW4vSW5GaWdodCBiL2RvYy9sZnVuL0luRmlnaHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMDg2YzViZAotLS0gL2Rldi9udWxsCisrKyBiL2RvYy9sZnVuL0luRmlnaHQKQEAgLTAsMCArMSwzMiBAQAorSW5GaWdodCgpCisKK0ZVTktUSU9OOgorICAgICAgICBtaXhlZCBJbkZpZ2h0KCkKKworQVJHVU1FTlRFOgorICAgICAgICBrZWluZQorCitCRVNDSFJFSUJVTkc6CisgICAgICAgIERpZXNlIEZ1bmt0aW9uIHd1cmRlIGRhenUgZ2VzY2hyaWViZW4sIHVtIGhlcmF1c3p1ZmluZGVuLAorICAgICAgICBvYiBzaWNoIGVpbiBQQy9OUEMgZGlyZWt0IGltIEthbXBmIGJlZmluZGV0LiBEYXp1IHdpcmQKKyAgICAgICAgZGFzIEFycmF5IG1pdCBkZW4gTmFtZW4gZGVyIEZlaW5kZW4gZGVzIFBDL05QQ3MgZHVyY2ggZGllCisgICAgICAgIEZ1bmt0aW9uIGVudmlyb25tZW50IGdlZmlsdGVydCB1bmQgc28gZmVzdGdlc3RlbGx0LCBvYgorICAgICAgICBkaWUgVW1nZWJ1bmcgZGVyIGJlaWRlbiBGZWluZGUgZ2xlaWNoIGlzdC4KKworUlVFQ0tHQUJFV0VSVDogCisgICAgICAgIEFscyBSdWVja2dhYmV3ZXJ0IGVudGhhZWx0IG1hbiBlbnR3ZWRlciAwLCB3ZW5uIGRhcyBPYmpla3QKKyAgICAgICAgaW0gTW9tZW50IGtlaW5lIEZlaW5kZSBoYXQgYnp3LiBkaWUgbmljaHQgaW0gc2VsYmVuIFJhdW0KKyAgICAgICAgc2luZCwgb2RlciBhYmVyIGRhcyBGZWluZG9iamVrdCwgZGFzIGFscyBlcnN0ZXMgaW0gQXJyYXkKKyAgICAgICAgc3RlaHQgdW5kIGFud2VzZW5kIGlzdC4KKworQkVJU1BJRUw6CisgICAgICAgIFNlbGJzdGVya2xhZXJlbmQgOykKKworQkVNRVJLVU5HOgorICAgICAgICBJbkZpZ2h0KCkgZ2lidCBsZWRpZ2xpY2ggZGFzIEVyZ2VibmlzIHZvbiBFbmVteVByZXNlbnQoKSB6dXJ1ZWNrLgorCitTSUVIRSBBVUNIOgorICAgICAgICBFbmVteVByZXNlbnQoKSwgUHJlc2VudEVuZW1pZXMoKQorICAgICAgICAvc3RkL2xpdmluZy9jb21iYXQuYworCisyMi4wMy4yMDA5LCBaZXNzdHJhCmRpZmYgLS1naXQgYS9kb2MvbGZ1bi9Jbkxpc3QgYi9kb2MvbGZ1bi9Jbkxpc3QKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYWRjZDQzMQotLS0gL2Rldi9udWxsCisrKyBiL2RvYy9sZnVuL0luTGlzdApAQCAtMCwwICsxLDI4IEBACitJbkxpc3QoKQorCitGVU5LVElPTjoKKyAgICAgaW50IEluTGlzdChvYmplY3Qgcm9vbSwgaW50ICpwb3Rpb25saXN0LCBpbnQgKmtub3dubGlzdCkKKworREVGSU5JRVJUIElOOgorICAgICAvc2VjdXJlL3BvdGlvbm1hc3Rlci5jCisKK0FSR1VNRU5URToKKyAgICAgSW1wbGl6aXQ6IHByZXZpb3VzX29iamVjdCgpIC0gU3BpZWxlcm9iamVrdCwgZGFzIFpUIGJla29tbWVuIHNvbGwKKyAgICAgb2JqZWN0IHJvb20gICAgICAgICAgICAgICAgIC0gT2JqZWt0LCB3ZWxjaGVzIFpUIHZlcmdlYmVuIHdpbGwKKyAgICAgaW50KiBwb3Rpb25saXN0ICAgICAgICAgICAgIC0gTGlzdGUgZGVyIFpUcyBkZXMgU3BpZWxlcnMKKyAgICAgaW50KiBrbm93bmxpc3QgICAgICAgICAgICAgIC0gTGlzdGUgZGVyIGJla2FubnRlbiBaVHMgZGVzIFNwaWVsZXJzCisKK0JFU0NIUkVJQlVORzoKKyAgICAgUHJ1ZWZ0LCBvYiAncm9vbScgZWluZW4gWlQgdmVyZ2ViZW4gZGFyZiB1bmQgZ2lidCB6dXJ1ZWNrLCBvYiBkaWUKKyAgICAgTnVtbWVyIGRpZXNlcyBaVHMgaW4gZGVyICdrbm93bmxpc3QnIGVudGhhbHRlbiBpc3QuCisKK1JVZUNLR0FCRVdFUlQ6CisgICAgIDAgIEtlaW4gYWt0aXZlciBaVCBvZGVyIG5pY2h0IGluIExpc3RlIGVudGhhbHRlbi4KKyAgICAgMSAgQWt0aXZlciBaVCB1bmQgaW4gTGlzdGUuCisKK1NJRUhFIEFVQ0g6CisgICAgIFNvbnN0aWdlczogemF1YmVydHJhZW5rZSwgL3Jvb20vb3Jha2VsLmMKKyAgICAgVmVyd2FuZHQ6ICBGaW5kUG90aW9uKCksIFJlbW92ZUtub3duUG90aW9uKCksIEFkZEtub3duUG90aW9uKCkKKyAgICAgUHJvcHM6ICAgICBQX1BPVElPTlJPT01TLCBQX0tOT1dOX1BPVElPTlJPT01TCisKKzYuRmViIDIwMTYgR2xvaW5zb24KZGlmZiAtLWdpdCBhL2RvYy9sZnVuL0luZm9ybUFsY29ob2xFZmZlY3QgYi9kb2MvbGZ1bi9JbmZvcm1BbGNvaG9sRWZmZWN0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjBmYTUyOTcKLS0tIC9kZXYvbnVsbAorKysgYi9kb2MvbGZ1bi9JbmZvcm1BbGNvaG9sRWZmZWN0CkBAIC0wLDAgKzEsNDMgQEAKK0luZm9ybUFsY29ob2xFZmZlY3QKKworRlVOS1RJT046CisJdm9pZCBJbmZvcm1BbGNvaG9sRWZmZWN0KG9iamVjdCBwbCwgaW50IG1zZ2lkLCBpbnQgYXJlYSkKKworREVGSU5JRVJUIElOOgorICAgICBlaWdlbmVuIE9iamVrdGVuOyBmdWVyIC9zdGQvbGl2aW5nL2xpZmUuYworIAorQVJHVU1FTlRFOgorCXBsCisgICAgICAgICAgRGFzIExlYmV3ZXNlbiwgZGFzIGFsa29ob2xpc2llcnQgaXN0LgorICAgICAgICBtc2dpZAorICAgICAgICAgIEZsYWcgZnVlciBkaWUgTWVsZHVuZywgZGllIGF1c2dlZ2ViZW4gd2lyZC4KKyAgICAgICAgYXJlYQorICAgICAgICAgIEF1ZnJ1ZiBlcmZvbGd0IGluIEdpbGRlICgwKSBvZGVyIGltIEVudmlyb25tZW50ICgxKS4KKworQkVTQ0hSRUlCVU5HOgorICAgICAgICBXZW5uIGVpbiBMZWJld2VzZW4gYWxrb2hvbGlzaWVydCBpc3QsIHdlcmRlbiBpbiB1bnJlZ2VsbWFlc3NpZ2VuCisgICAgICAgIEFic3RhZW5kZW4gTWVsZHVuZ2VuIGFuIGRpZSBVbWdlYnVuZyB1bmQgYW5zIExlYmV3ZXNlbiBhdXNnZWdlYmVuLgorICAgICAgICBHbGVpY2h6ZWl0aWcgd2lyZCBkaWUgRnVua3Rpb24gSW5mb3JtQWxjb2hvbEVmZmVjdCBpbiBkZXIgR2lsZGUKKyAgICAgICAgdW5kIGltIEVudmlyb25tZW50IGRlcyBMZWJld2VzZW5zIGF1ZmdlcnVmZW4uCisgICAgICAgIAorICAgICAgICBFcyBnaWJ0IHZpZXIgdmVyc2NoaWVkZW5lIE1lbGR1bmdlbiAoZGVmaW5pZXJ0IGluIC9zeXMvaGVhbHRoLmgpOgorICAgICAgICBBTENfRUZGRUNUX0hJQ0sgICAgICAoMCkgOiAiPEhpY2s+ISBPaCwgVHNjaHVsZGlndW5nLlxuIgorICAgICAgICBBTENfRUZGRUNUX1JVRUxQUyAgICAoMSkgOiAiRHUgcnVlbHBzdC5cbiIKKyAgICAgICAgQUxDX0VGRkVDVF9MT09LRFJVTksgKDIpIDogIkR1IGZ1ZWhsc3QgRGljaCBiZW5vbW1lbi5cbiIKKyAgICAgICAgQUxDX0VGRkVDVF9TVFVNQkxFICAgKDMpIDogIkR1IHN0b2xwZXJzdC5cbiIKKyAgICAgICAgCisgICAgICAgIFdpcmQgZGllIEZ1bmt0aW9uIGluIGVpbmVtIEdpbGRlbnJhdW0gaW1wbGVtZW50aWVydCwgc28ga2FubiBtYW4KKyAgICAgICAgYW5oYW5kIGRlcyAzLiBQYXJhbWV0ZXJzIHVudGVyc2NoZWlkZW4sIG9iIGRpZSBHaWxkZSBhbHMgR2lsZGUKKyAgICAgICAgb2RlciBhbHMgUmF1bSBnZW1laW50IGlzdCAoZGllIEZ1bmt0aW9uIHdpcmQgamUgZWlubWFsIGF1ZmdlcnVmZW4pOgorICAgICAgICBBTENfRUZGRUNUX0FSRUFfR1VJTEQgKDApIDogZGVyIEF1ZnJ1ZiBiZXRyaWZmdCBkaWUgR2lsZGUsCisgICAgICAgIEFMQ19FRkZFQ1RfQVJFQV9FTlYgICAoMSkgOiBkZXIgQXVmcnVmIGJldHJpZmZ0IGRpZSBVbWdlYnVuZy4KKworUlVlQ0tHQUJFV0VSVDoKKwlrZWluZXIKKworU0lFSEUgQVVDSDoKKyAgICAgICAgUF9BTENPSE9MLCAvc3lzL2hlYWx0aC5oCisKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KK0xhc3QgbW9kaWZpZWQ6IFRodSBNYXkgMjMgMjM6MDg6MDAgMjAwMiBieSBNdXBmZWwKKwpkaWZmIC0tZ2l0IGEvZG9jL2xmdW4vSW5mb3JtRGVmZW5kIGIvZG9jL2xmdW4vSW5mb3JtRGVmZW5kCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmViMzY5MjEKLS0tIC9kZXYvbnVsbAorKysgYi9kb2MvbGZ1bi9JbmZvcm1EZWZlbmQKQEAgLTAsMCArMSw2MiBAQAorSW5mb3JtRGVmZW5kKCkKKworRlVOS1RJT046CisJdm9pZCBJbmZvcm1EZWZlbmQob2JqZWN0IGVuZW15KTsKKworREVGSU5JRVJUIElOOgorCS9zdGQvbGl2aW5nL2NvbWJhdC5jCisKK0FSR1VNRU5URToKKwllbmVteQorCSAgRGVyIEZlaW5kLCBkZXIgZWluIHp1IHZlcnRlaWRpZ2VuZGVzIExlYmV3ZXNlbiBhbmdlZ3JpZmZlbiBoYXQuCisKK0JFU0NIUkVJQlVORzoKKwlFcyBpc3QgbW9lZ2xpY2gsIGRhc3MgT2JqZWt0ZSB1ZWJlciBBbmdyaWZmZSBhdWYgTGViZXdlc2VuCisJaW5mb3JtaWVydCB3ZXJkZW4sIHNvZmVybiBkaWVzZSBPYmpla3RlIGJlaSBkZW0gYW5nZWdyaWZmZW5lbgorCUxlYmV3ZXNlbiBtaXR0ZWxzIEFkZERlZmVuZGVyKCkgYW5nZW1lbGRldCB3dXJkZW4gdW5kIHNpY2ggZGVyCisJc2VsYmVuIFVtZ2VidW5nIGJlZmluZGVuLgorCVp1bWVpc3Qgd2lyZCBlcyBzaWNoIGJlaSBkZW4gT2JqZWt0ZW4gbmF0dWVybGljaCBlYmVuZmFsbHMgdW0KKwlhbmRlcmUgTGViZXdlc2VuIGhhbmRlbG4sIGRpZSBkYXMgTGViZXdlc2VuLCBiZWkgZGVtIHNpZSBhbmdlbWVsZGV0CisJc2luZCwgdmVydGVpZGlnZW4gc29sbGVuLgorCUJlaSBlaW5lbSBBbmdyaWZmIGF1ZiBkYXMgTGViZXdlc2VuIHdlcmRlbiBhbGxlIE9iamVrdGUgcGVyIEF1ZnJ1ZgorCXZvbiBJbmZvcm1EZWZlbmQoKSBkYXJ1ZWJlciBpbmZvcm1pZXJ0LCB3b2JlaSBkZXIgQW5ncmVpZmVyIGFscworCVBhcmFtZXRlciB1ZWJlcmdlYmVuIHdpcmQuCisJU3RhbmRhcmRtYWVzc2lnIGlzdCBkaWVzZSBGdW5rdGlvbiBpbiBMZWJld2VzZW4gYmVyZWl0cyBkZWZpbmllcnQsCisJd29iZWkgZGVyIFNraWxsIFNLX0lORk9STV9ERUZFTkQsIHNvZmVybiB2b3JoYW5kZW4sIGF1ZmdlcnVmZW4gd2lyZC4KKworQkVJU1BJRUw6CisJU2VociBiZWxpZWJ0IHNpbmQgaW4gR2lsZGVuIE5QQ3MsIGRpZSBkZW4gQmVzY2h3b2VyZXIgYmVnbGVpdGVuIHVuZAorCXZlcnRlaWRpZ2VuLCB6LkIuIGJlc2Nod29yZW5lIERhZW1vbmVuOgorCSAgaW5oZXJpdCAic3RkL25wYyI7CisJICBpbmNsdWRlIDxwcm9wZXJ0aWVzLmg+CisJICBvYmplY3Qgb3duZXI7CisJICB2b2lkIGNyZWF0ZSgpCisJICB7IDo6Y3JlYXRlKCk7CisJICAgIFNldFByb3AoUF9OQU1FLCJEYWVtb24iKTsKKwkgICAgLi4uCisJICB9CisJLy8gbmFjaCBDbG9uZW4gZGVzIERhZW1vbnMgZm9sZ2VuZGUgRnVua3Rpb24gbWl0IEJlc2Nod29lcmVyIGFscworCS8vIFBhcmFtZXRlciBhdWZydWZlbgorCSAgSWRlbnRpZnkob2JqZWN0IGNhc3RlcikKKwkgIHsgaWYoIW9iamVjdHAoY2FzdGVyKSkKKwkgICAgICBjYWxsX291dCgjJ3JlbW92ZSwwKTsKKwkgICAgb3duZXI9Y2FzdGVyOworCSAgICBvd25lci0+QWRkRGVmZW5kZXIodGhpc19vYmplY3QoKSk7CisJICB9CisJLy8gZm9sZ2VuZGUgRnVua3Rpb24gd2lyZCBhdXRvbWF0aXNjaCBhdWZnZXJ1ZmVuLCB3ZW5uIGRlcgorCS8vIEJlc2Nod29lcmVyIGFuZ2VncmlmZmVuIHdpcmQKKwkgIHZvaWQgSW5mb3JtRGVmZW5kKG9iamVjdCBlbmVteSkKKwkgIHsgaWYoIUlzRW5lbXkoZW5lbXkpJiZlbmVteSE9b3duZXIpCisJICAgICAgS2lsbChlbmVteSk7CisJICB9CisJU29sbCBkZXIgRGFlbW9uIHNpY2ggYXVjaCBpbiBlaW4gVGVhbSBlaW5vcmRuZW4sIGluIHdlbGNoZW0gc2ljaCBkZXIKKwlCZXNjaHdvZXJlciBldmVudHVlbGwgYmVmaW5kZXQsIHNvIGlzdCB6dXNhZXR6bGljaCBBc3NvY01lbWJlcigpIGluCisJZGllc2VtIEJlc2Nod29lcmVyIGF1Znp1cnVmZW4sIHdvYmVpIGRlciBEYWVtb24gYWxzIFBhcmFtZXRlcgorCXVlYmVyZ2ViZW4gd2lyZC4KKworU0lFSEUgQVVDSDoKKwlBZGREZWZlbmRlcigpLCBSZW1vdmVEZWZlbmRlcigpLCBEZWZlbmRPdGhlcigpLCBLaWxsKCksIElzRW5lbXkoKSwKKwlQX0RFRkVOREVSUywgL3N0ZC9saXZpbmcvY29tYmF0LmMsIC9zeXMvbmV3X3NraWxscy5oCisKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KK0xhc3QgbW9kaWZpZWQ6IFRodSBKdWwgMjkgMTg6NDg6NDUgMTk5OSBieSBQYXRyeW4KZGlmZiAtLWdpdCBhL2RvYy9sZnVuL0luZm9ybVJvd0NoYW5nZSBiL2RvYy9sZnVuL0luZm9ybVJvd0NoYW5nZQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5lMmFhOGZjCi0tLSAvZGV2L251bGwKKysrIGIvZG9jL2xmdW4vSW5mb3JtUm93Q2hhbmdlCkBAIC0wLDAgKzEsMjMgQEAKK0luZm9ybVJvd0NoYW5nZSgpCisKK0ZVTktUSU9OOgorCXZhcmFyZ3Mgdm9pZCBJbmZvcm1Sb3dDaGFuZ2UoaW50IGZyb20sIGludCB0bywgb2JqZWN0IGNhc3Rlcik7CisKK0RFRklOSUVSVCBJTjoKKwkvc3RkL2xpdmluZy90ZWFtLmMKKworQVJHVU1FTlRFOgorCWZyb20gICAtIFJlaWhlLCBpbiBkaWUgZGVyIFNwaWVsZXIgdm9yaGVyIHdhci4KKwl0byAgICAgLSBSZWloZSBpbiBkZXIgZGVyIFNwaWVsZXIgamV0enQgaXN0LgorCWNhc3RlciAtIERlciBTcGllbGVyLCBmYWxscyBkaWUgRnVua3Rpb24gaW4gZGVyIEdpbGRlIGF1ZmdlcnVmZW4gd2lyZC4KKyAgICAgICAgCitCRVNDSFJFSUJVTkc6CisJRGllc2UgRnVua3Rpb24gd2lyZCBpbSBTcGllbGVyIHVuZCBpbiBzZWluZXIgR2lsZGUgYXVmZ2VydWZlbiwKKwlmYWxscyBzaWNoIGRpZSBha3R1ZWxsZSBLYW1wZnJlaWhlIGluIGRlciBUZWFtYXVmc3RlbGx1bmcKKwlhZW5kZXJ0LgorCitSVUVDS0dBQkVXRVJUOgorCUtlaW5lci4KKworU0lFSEUgQVVDSDoKKwl0ZWFtcwpkaWZmIC0tZ2l0IGEvZG9jL2xmdW4vSW5mb3JtVW53ZWFyIGIvZG9jL2xmdW4vSW5mb3JtVW53ZWFyCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjk0NzEwMjgKLS0tIC9kZXYvbnVsbAorKysgYi9kb2MvbGZ1bi9JbmZvcm1VbndlYXIKQEAgLTAsMCArMSwyOSBAQAorSW5mb3JtVW53ZWFyCisKK0ZVTktUSU9OOgorCXByb3RlY3RlZCB2b2lkIEluZm9ybVVud2VhcihvYmplY3QgcGwsIGludCBzaWxlbnQsIGludCBhbGwpCisKK0RFRklOSUVSVCBJTjoKKyAgICAgICAgL3N0ZC9jbG90aGluZy93ZWFyLmMKKworQVJHVU1FTlRFOgorCXBsCisgICAgICAgICAgRGFzIExlYmV3ZXNlbiwgZGFzIGRpZSBSdWVzdHVuZyBhdXNnZXpvZ2VuIGhhdC4KKyAgICAgICAgc2lsZW50CisgICAgICAgICAgRmxhZywgb2IgTWVsZHVuZ2VuIHVudGVyZHJ1Y2t0IHdlcmRlbiBzb2xsZW4uCisgICAgICAgIGFsbAorICAgICAgICAgIEZsYWcsIG9iIGRpZSBSdWVzdHVuZyBtaXQgInppZWhlIGFsbGVzIGF1cyIvCisgICAgICAgICAgInppZWhlIGFsbGUgcnVlc3R1bmdlbiBhdXMiIGF1c2dlem9nZW4gd3VyZGUuCisKK0JFU0NIUkVJQlVORzoKKyAgICAgICAgRGllc2UgRnVua3Rpb24gd2lyZCBhdWZnZXJ1ZmVuLCB3ZW5uIGRpZSBSdWVzdHVuZyBlcmZvbGdyZWljaAorICAgICAgICBhdXNnZXpvZ2VuIHd1cmRlLgorCitSVWVDS0dBQkVXRVJUOgorCWtlaW5lcgorCitTSUVIRSBBVUNIOgorICAgICAgICBJbmZvcm1VbndpZWxkKCksIEluZm9ybVdpZWxkKCksIEluZm9ybVdlYXIoKQorCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiswNi4xMC4yMDA3LCBaZXNzdHJhCmRpZmYgLS1naXQgYS9kb2MvbGZ1bi9JbmZvcm1VbndpZWxkIGIvZG9jL2xmdW4vSW5mb3JtVW53aWVsZApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5lZjJkOWJjCi0tLSAvZGV2L251bGwKKysrIGIvZG9jL2xmdW4vSW5mb3JtVW53aWVsZApAQCAtMCwwICsxLDI2IEBACitJbmZvcm1VbndpZWxkCisKK0ZVTktUSU9OOgorCXByb3RlY3RlZCB2b2lkIEluZm9ybVVud2llbGQob2JqZWN0IHBsLCBpbnQgc2lsZW50KQorCitERUZJTklFUlQgSU46CisJL3N0ZC93ZWFwb24vY29tYmF0LmMKKworQVJHVU1FTlRFOgorCXBsCisgICAgICAgICAgRGFzIExlYmV3ZXNlbiwgZGFzIGRpZSBXYWZmZSBnZXp1ZWNrdCBoYXR0ZS4KKyAgICAgICAgc2lsZW50CisgICAgICAgICAgRmxhZywgb2IgTWVsZHVuZ2VuIHVudGVyZHJ1Y2t0IHdlcmRlbiBzb2xsZW4uCisKK0JFU0NIUkVJQlVORzoKKyAgICAgICAgRGllc2UgRnVua3Rpb24gd2lyZCBhdWZnZXJ1ZmVuLCB3ZW5uIGRpZSBXYWZmZSBlcmZvbGdyZWljaAorICAgICAgICB3ZWdnZXN0ZWNrdCB3dXJkZS4KKworUlVlQ0tHQUJFV0VSVDoKKwlrZWluZXIKKworU0lFSEUgQVVDSDoKKyAgICAgICAgSW5mb3JtV2llbGQoKSwgSW5mb3JtV2VhcigpLCBJbmZvcm1VbndlYXIoKQorCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiswNi4xMC4yMDA3LCBaZXNzdHJhCmRpZmYgLS1naXQgYS9kb2MvbGZ1bi9JbmZvcm1XZWFyIGIvZG9jL2xmdW4vSW5mb3JtV2VhcgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi40YzdjOWI0Ci0tLSAvZGV2L251bGwKKysrIGIvZG9jL2xmdW4vSW5mb3JtV2VhcgpAQCAtMCwwICsxLDI5IEBACitJbmZvcm1XZWFyCisKK0ZVTktUSU9OOgorCXByb3RlY3RlZCB2b2lkIEluZm9ybVdlYXIob2JqZWN0IHBsLCBpbnQgc2lsZW50LCBpbnQgYWxsKQorCitERUZJTklFUlQgSU46CisgICAgICAgIC9zdGQvY2xvdGhpbmcvd2Vhci5jCisKK0FSR1VNRU5URToKKwlwbAorICAgICAgICAgIERhcyBMZWJld2VzZW4sIGRhcyBkaWUgUnVlc3R1bmcgYW5nZXpvZ2VuIGhhdC4KKyAgICAgICAgc2lsZW50CisgICAgICAgICAgRmxhZywgb2IgTWVsZHVuZ2VuIHVudGVyZHJ1Y2t0IHdlcmRlbiBzb2xsZW4uCisgICAgICAgIGFsbAorICAgICAgICAgIEZsYWcsIG9iIGRpZSBSdWVzdHVuZyBtaXQgInRyYWdlIGFsbGVzIi8idHJhZ2UgYWxsZSBydWVzdHVuZ2VuIgorICAgICAgICAgIGFuZ2V6b2dlbiB3dXJkZS4KKworQkVTQ0hSRUlCVU5HOgorICAgICAgICBEaWVzZSBGdW5rdGlvbiB3aXJkIGF1ZmdlcnVmZW4sIHdlbm4gZGllIFJ1ZXN0dW5nIGVyZm9sZ3JlaWNoCisgICAgICAgIGFuZ2V6b2dlbiB3dXJkZS4KKworUlVlQ0tHQUJFV0VSVDoKKwlrZWluZXIKKworU0lFSEUgQVVDSDoKKyAgICAgICAgSW5mb3JtVW53aWVsZCgpLCBJbmZvcm1XaWVsZCgpLCBJbmZvcm1VbndlYXIoKQorCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiswNi4xMC4yMDA3LCBaZXNzdHJhCmRpZmYgLS1naXQgYS9kb2MvbGZ1bi9JbmZvcm1XaWVsZCBiL2RvYy9sZnVuL0luZm9ybVdpZWxkCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjY3YzZiOTgKLS0tIC9kZXYvbnVsbAorKysgYi9kb2MvbGZ1bi9JbmZvcm1XaWVsZApAQCAtMCwwICsxLDI2IEBACitJbmZvcm1XaWVsZAorCitGVU5LVElPTjoKKwlwcm90ZWN0ZWQgdm9pZCBJbmZvcm1XaWVsZChvYmplY3QgcGwsIGludCBzaWxlbnQpCisKK0RFRklOSUVSVCBJTjoKKwkvc3RkL3dlYXBvbi9jb21iYXQuYworCitBUkdVTUVOVEU6CisJcGwKKyAgICAgICAgICBEYXMgTGViZXdlc2VuLCBkYXMgZGllIFdhZmZlIGdlenVlY2t0IGhhdC4KKyAgICAgICAgc2lsZW50CisgICAgICAgICAgRmxhZywgb2IgTWVsZHVuZ2VuIHVudGVyZHJ1Y2t0IHdlcmRlbiBzb2xsZW4uCisKK0JFU0NIUkVJQlVORzoKKyAgICAgICAgRGllc2UgRnVua3Rpb24gd2lyZCBhdWZnZXJ1ZmVuLCB3ZW5uIGRpZSBXYWZmZSBlcmZvbGdyZWljaAorICAgICAgICBnZXp1ZWNrdCB3dXJkZS4KKworUlVlQ0tHQUJFV0VSVDoKKwlrZWluZXIKKworU0lFSEUgQVVDSDoKKyAgICAgICAgSW5mb3JtVW53aWVsZCgpLCBJbmZvcm1XZWFyKCksIEluZm9ybVVud2VhcigpCisKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKzA2LjEwLjIwMDcsIFplc3N0cmEKZGlmZiAtLWdpdCBhL2RvYy9sZnVuL0luc2VydEVuZW15IGIvZG9jL2xmdW4vSW5zZXJ0RW5lbXkKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMDNkMWQ3ZAotLS0gL2Rldi9udWxsCisrKyBiL2RvYy9sZnVuL0luc2VydEVuZW15CkBAIC0wLDAgKzEsMjggQEAKK2dlZnVuZGVuIDogbGZ1bi9JbnNlcnRFbmVteQorCitGVU5LVElPTjoKKyAgICAgICAgaW50IEluc2VydEVuZW15KG9iamVjdCBlbmVteSkKKyAgICAgICAgCitERUZJTklFUlQgSU46CisgICAgICAgIC9zdGQvbGl2aW5nL2NvbWJhdC5jCisgICAgICAgIAorQVJHVU1FTlRFOgorICAgICAgICBlbmVteTogRGFzIExlYmV3ZXNlbiwgZGFzIGFuZ2VncmlmZmVuIHdlcmRlbiBzb2xsLgorICAgICAgICAKK0JFU0NIUkVJQlVORzoKKyAgICAgICAgTmFjaCBBdWZydWYgZGVyIEZ1bmt0aW9uIHdpcmQgZGFzIFdlc2VuIGluIGRpZSBMaXN0ZSBkZXIgRmVpbmRlCisgICAgICAgIGF1Zmdlbm9tbWVuLgorICAgICAgICBJbiBqZWRlbSBoZWFydF9iZWF0KCkgd2lyZCBkYW5uIGVpbiBhbndlc2VuZGVyIEZlaW5kCisgICAgICAgIGFuZ2VncmlmZmVuLgorICAgICAgICAKK1JVRUNLR0FCRVdFUlQ6CisgICAgICAgIDAsIGZhbGxzIGRlciBGZWluZCBuaWNodCBleGlzdGllcnQsIGtlaW4gTGViZXdlc2VuIGlzdCwgZWluIEdlaXN0IGlzdCwgCisgICAgICAgICAgIG9kZXIgaW0gR2VnbmVyIFBfTk9fQVRUQUNLIGdlc2V0enQgaXN0LCBvZGVyIHNjaG9uIGFuZ2VnZWdyaWZmZW4gCisgICAgICAgICAgIHd1cmRlCisgICAgICAgIDEgIHNvbnN0CisgICAgICAgIAorU0lFSEUgQVVDSDoKKyAgICAgICAgS2lsbCwgSXNFbmVteSwgU3RvcEh1bnRGb3IsIFBfTk9fQVRUQUNLCisKK0xFVFpURSBBRU5ERVJVTkc6CisyNi4wOC4yMDEwLCBaZXNzdHJhCmRpZmYgLS1naXQgYS9kb2MvbGZ1bi9JbnNlcnRFbmVteVRlYW0gYi9kb2MvbGZ1bi9JbnNlcnRFbmVteVRlYW0KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZTlhZGU2MwotLS0gL2Rldi9udWxsCisrKyBiL2RvYy9sZnVuL0luc2VydEVuZW15VGVhbQpAQCAtMCwwICsxLDQ2IEBACisKK0luc2VydEVuZW15VGVhbSgpCisKKworRlVOS1RJT046CisgICAgICAgIHZhcmFyZ3Mgdm9pZCBJbnNlcnRFbmVteVRlYW0obWl4ZWQgZW5zLCBpbnQgcmVrKQorCitERUZJTklFUlQgSU46CisgICAgICAgIC9zdGQvbGl2aW5nL3RlYW0uYworCitBUkdVTUVOVEU6CisgICAgICAgIGVucyAgICAgb2JqZWN0IEZlaW5kIG9kZXIgb2JqZWN0ICpGZWluZGUKKyAgICAgICAgcmVrICAgICBXdXJkZSB2b24gSW5zZXJ0RW5lbXlUZWFtIGF1ZmdlcnVmZW4KKworQkVTQ0hSRUlCVU5HOgorICAgICAgICBBbGxlIFRlYW1taXRnbGllZGVyIGRlcyBGZWluZGVzIGJ6dy4gZGllIGFuZ2VnZWJlbmVuIEZlaW5kZSAoYWJlcgorICAgICAgICBuaWNodCBkZXJlbiBUZWFtbWl0Z2xpZWRlcikgd2VyZGVuIHp1IEZlaW5kZW4KKyAgICAgICAgIGEpIGRlcyBTcGllbGVycyB1bmQgYWxsZXIgVGVhbW1pdGdsaWVkZXIsIGZhbGxzIHJlaz09MAorICAgICAgICAgYikgZGVzIFNwaWVsZXJzLCBmYWxscyByZWshPTAKKworUlVFQ0tHQUJFV0VSVDoKKyAgICAgICAga2VpbmVyCisKK0JFTUVSS1VOR0VOOgorICAgICAgICAxLiBOdXIgd2VubiBHZWduZXIgdW5kIFRlYW1taXRnbGllZCBpbSBnbGVpY2hlbiBSYXVtIHN0ZWhlbiAoYWJlcgorICAgICAgICAgICBuaWNodCBub3R3ZW5kaWdlcndlaXNlIGltIGdsZWljaGVuIFJhdW0gd2llIGRlciBTcGllbGVyKSB3ZXJkZW4KKyAgICAgICAgICAgc2llIHp1IEZlaW5kZW4uCisgICAgICAgIDIuIEZhbGxzIFRlYW1taXRnbGllZCB1bmQgR2VnbmVyIGJlaWRlcyBTcGllbGVyIHNpbmQsIHdlcmRlbiBzaWUKKyAgICAgICAgICAgbmljaHQgenUgRmVpbmRlbiBnZW1hY2h0LgorICAgICAgICAzLiBJc3QgZGVyIEdlZ25lciBpbSBlaWdlbmVuIFRlYW0sIHNvIHdpcmQgbmljaHRzIGdlbWFjaHQuCisKK1NJRUhFIEFVQ0g6CisgICAgICAgIFVlYmVyc2ljaHQ6IHRlYW1rYW1wZgorICAgICAgICBQcm9wZXJ0aWVzOiBQX1RFQU0sIFBfQVNTT0NfTUVNQkVSUywgUF9URUFNX0FUVEFDS19DTUQsCisgICAgICAgICAgICAgICAgICAgIFBfVEVBTV9BVVRPRk9MTE9XLCBQX1RFQU1fQ09MT1JTLCBQX1RFQU1fTEVBREVSLAorICAgICAgICAgICAgICAgICAgICBQX1RFQU1fTkVXTUVNQkVSLCBQX1RFQU1fV0FOVEVEX1JPVywgUF9URUFNX1dJTVBZX1JPVworICAgICAgICBCZXdlZ3VuZzogICBJc1RlYW1Nb3ZlLCBUZWFtRmxlZQorICAgICAgICBNaXRnbGllZGVyOiBJc1RlYW1MZWFkZXIsIFRlYW1NZW1iZXJzCisgICAgICAgIEthbXBmOiAgICAgIEFzc29jTWVtYmVyLCBEZUFzc29jTWVtYmVyLCBTZWxlY3ROZWFyRW5lbXksCisgICAgICAgICAgICAgICAgICAgIFNlbGVjdEZhckVuZW15CisgICAgICAgIFBvc2l0aW9uZW46IFByZXNlbnRQb3NpdGlvbiwgUHJlc2VudFJvd3MsIFByZXNlbnRFbmVteVJvd3MsCisgICAgICAgICAgICAgICAgICAgIFByZXNlbnRUZWFtUG9zaXRpb24sIFN3YXBSb3dzCisgICAgICAgIFNvbnN0aWdlczogIFRlYW1QcmVmaXgsIHRlYW1rYW1wZl9pbnRlcm4KKworLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorTGFzdCBtb2RpZmllZDogMTYtMDgtMjAxMCwgR2FieWxvbgpkaWZmIC0tZ2l0IGEvZG9jL2xmdW4vSW5zZXJ0U2Vuc2l0aXZlT2JqZWN0IGIvZG9jL2xmdW4vSW5zZXJ0U2Vuc2l0aXZlT2JqZWN0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmM4OWNlZjgKLS0tIC9kZXYvbnVsbAorKysgYi9kb2MvbGZ1bi9JbnNlcnRTZW5zaXRpdmVPYmplY3QKQEAgLTAsMCArMSw0OCBAQAorSW5zZXJ0U2Vuc2l0aXZlT2JqZWN0KCkKK0ZVTktUSU9OOgorICAgICB2b2lkIEluc2VydFNlbnNpdGl2ZU9iamVjdChvYmplY3Qgb2IsIG1peGVkICphcmcpCisKK0RFRklOSUVSVCBJTjoKKyAgICAgL3N0ZC9jb250YWluZXIvaW52ZW50b3J5LmMKKyAgICAgZ2VuZXJhbGl6ZXMgL3N0ZC9saXZpbmcvaW52ZW50b3J5LmMKKworQkVTQ0hSRUlCVU5HOgorICAgICBGdWVndCAib2IiIGluIGRpZSBCZW5hY2hyaWNodGlndW5nc2xpc3RlbiBkZXMgQ29udGFpbmVycyBlaW4uCisgICAgIFdpcmQgdm9uIHRoaW5nL21vdmluZy5jIGltIFppZWwtRW52aXJvbm1lbnQgZ2VydWZlbiwgd2VubgorICAgICBQX1NFTlNJVElWRSBnZXNldHp0IGlzdC4KKworQkVNRVJLVU5HRU46CisgICAgIFNldHp0IG1hbiBQX1NFTlNJVElWRSBuaWNodCBhbHMgRGVmYXVsdCBzb25kZXJuIHNpdHVhdGlvbnNhYmhhZW5naWcsCisgICAgIGRhbm4gbXVzcyBtYW4gYXVjaCBJbnNlcnRTZW5zaXRpdmVPYmplY3QoKSBpbSBFbnZpcm9ubWVudAorICAgICBhdWNoIHNlbGJzdCBydWZlbiEKKworQkVJU1BJRUw6CisgICAgIC8vIEZhY2tlbCAoaW5oZXJpdGluZyBsaWdodHNvdXJjZSkKKyAgICAgLy8gd2VubiBhbmdlenVlbmRldCwgYWVuZGVydCBlcyBkaWUgRWlnZW5zY2hhZnRlbiB1bmQgd2lyZCB6dW0KKyAgICAgLy8gYWt0aXZlbiBPYmpla3QgLSBkYXMgbXVzcyBtYW4gZGVtIGVudmlyb25tZW50KCkgbWl0dGVpbGVuCisgICAgIHN0YXRpYyBpbnQgbGlnaHQoc3RyaW5nIHN0cikgeworICAgICAgaW50IGk7CisgICAgICBpPTo6bGlnaHQoc3RyKTsKKyAgICAgIGlmKGkgJiYgUXVlcnlQcm9wKFBfTElHSFQpPjApIHsKKyAgICAgICBTZXRQcm9wKFBfU0VOU0lUSVZFLAorICAgICAgICAoeyh7U0VOU0lUSVZFX0lOVkVOVE9SWV9UUklHR0VSLERUX0ZJUkUsMTIwfSl9KSk7CisgICAgICAgaWYoZW52aXJvbm1lbnQoKSkKKyAgICAgICAgZW52aXJvbm1lbnQoKS0+SW5zZXJ0U2Vuc2l0aXZlT2JqZWN0KHRoaXNfb2JqZWN0KCksCisJCQkJCSAgICAgUXVlcnlQcm9wKFBfU0VOU0lUSVZFKSk7CisgICAgICB9CisgICAgICByZXR1cm4gaTsKKyAgICAgfQorCisgICAgIC0gZmFsbHMgZWluIGVtcGZpbmRsaWNoZXMgT2JqZWt0IGltIGVudmlyb25tZW50KCkgaXN0LCBkYW5uIHdpcmQKKyAgICAgICBpbiBkaWVzZW0gbnVuIGV2ZW50dWVsbCAoVHJlc2hvbGQpIHRyaWdnZXJfc2Vuc2l0aXZlX2ludigpCisgICAgICAgZ2VydWZlbgorCitTSUVIRSBBVUNIOgorICAgICBQX1NFTlNJVElWRQorICAgICBSZW1vdmVTZW5zaXRpdmVPYmplY3QKKyAgICAgaW5zZXJ0X3NlbnNpdGl2ZV9pbnZfdHJpZ2dlciwgaW5zZXJ0X3NlbnNpdGl2ZV9pbnYKKyAgICAgUF9TRU5TSVRJVkVfQVRUQUNLLCBQX1NFTlNJVElWRV9JTlZFTlRPUlksIFBfU0VOU0lUSVZFX0lOVkVOVE9SWV9UUklHR0VSCisgICAgIENoZWNrU2Vuc2l0aXZlQXR0YWNrCisKKzI1LkFwci4yMDAxLCBHbG9pbnNvbkBNRworCmRpZmYgLS1naXQgYS9kb2MvbGZ1bi9JbnRlcm5hbE1vZGlmeUF0dGFjayBiL2RvYy9sZnVuL0ludGVybmFsTW9kaWZ5QXR0YWNrCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjBhYzJkMTkKLS0tIC9kZXYvbnVsbAorKysgYi9kb2MvbGZ1bi9JbnRlcm5hbE1vZGlmeUF0dGFjawpAQCAtMCwwICsxLDM3IEBACitJbnRlcm5hbE1vZGlmeUF0dGFjayhMKQorCitGVU5LVElPTjoKKyAgICAgcHJvdGVjdGVkIHZvaWQgSW50ZXJuYWxNb2RpZnlBdHRhY2sobWFwcGluZyBhaW5mbykKKworREVGSU5JRVJUIElOOgorICAgICAvc3RkL2xpdmluZy9jb21iYXQKKworQVJHVU1FTlRFOgorICAgICBtYXBwaW5nIGFpbmZvCQlXZXJ0ZSBhdXMgZGVyIEF0dGFjaworCitCRVNDSFJFSUJVTkc6CisgICAgIERpZW50IGRhenUgbm9jaCBBZW5kZXJ1bmdlbiBhbSBWZXJoYWx0ZW4gZGVyIEF0dGFjaygpIHZvcm5laG1lbiB6dQorICAgICBrb2VubmVuLiBEaWUgUGFyYW1ldGVyIHdlcmRlbiBhbGxlIHBlciBSZWZlcmVueiB1ZWJlcmdlYmVuLCBBZW5kZXJ1bmdlbgorICAgICB3aXJrZW4gYWxzbyBkaXJla3QgaW4gZGVyIEF0dGFjaygpIQorICAgICBFaW5mYWNoIHVlYmVyc2NocmVpYmVuIChhYmVyIDo6SW50ZXJuYWxNb2RpZnlBdHRhY2soJmFpbmZvKSBuaWNodAorICAgICB2ZXJnZXNzZW4hCisKKyAgICAgQXVmYmF1IHZvbiAnYWluZm8nOgorICAgICAoWyBTSV9FTkVNWSA6ICAgICAgICAgICAgb2JqZWN0IEFuZ3JlaWZlciwJCQkoLT4gRGVmZW5kKQorICAgICAgICBTSV9TUEVMTCA6ICAgICAgICAgICAwLzEvYXJyYXkgU3BlbGxwYXJhbWV0ZXIsCQkoLT4gRGVmZW5kKQorICAgICAgICBQX1dFQVBPTiA6ICAgICAgICAgICAtIG9kZXIgV2FmZmUsCisgICAgICAgIFNJX1NLSUxMREFNQUdFX01TRzogIHN0cmluZyBBbmdyaWZmc21lbGR1bmdzZW5kZSBhbiBSYXVtLAorICAgICAgICBTSV9TS0lMTERBTUFHRV9NU0cyOiBzdHJpbmcgQW5ncmlmZnNtZWxkdW5nc2VuZGUgYW4gS2FlbXBmZW5kZSwKKyAgICAgICAgU0lfU0tJTExEQU1BR0U6ICAgICAgaW50IFNjaGFkZW4gaW4gWmVobnRlbCBIUCAoU2tpbGxzIHNjaG9uIGRyaW4pCisJCQkJCQkJCSgtPiBEZWZlbmQpLAorICAgICAgICBTSV9TS0lMTERBTUFHRV9UWVBFOiBzdHJpbmcvc3RyaW5nKiBTY2hhZGVuc3R5cGVuLAkoLT4gRGVmZW5kKQorICAgICAgICBQX1dFQVBPTl9UWVBFOiAgICAgICBzdHJpbmcgV2FmZmVudHlwIChjb21iYXQuaCksCisgICAgICAgIFBfV0M6CQkgICAgIC0gb2RlciBpbnQgV0MgZGVyIFdhZmZlL0hhbmQsCisgICAgICAgIFBfTlJfSEFORFM6CSAgICAgLSBvZGVyIGludCBIYW5kcyBkZXIgV2FmZmUvSGFuZCwKKyAgICAgXSk7CisKK1NJRUhFIEFVQ0g6CisgICAgIEludGVybmFsTW9kaWZ5RGVmZW5kKEwpCisgICAgIEF0dGFjayhMKQorCisyOC4wMy4yMDA4LCBaZXNzdHJhCmRpZmYgLS1naXQgYS9kb2MvbGZ1bi9JbnRlcm5hbE1vZGlmeURlZmVuZCBiL2RvYy9sZnVuL0ludGVybmFsTW9kaWZ5RGVmZW5kCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjkzZjBkMzkKLS0tIC9kZXYvbnVsbAorKysgYi9kb2MvbGZ1bi9JbnRlcm5hbE1vZGlmeURlZmVuZApAQCAtMCwwICsxLDI5IEBACitJbnRlcm5hbE1vZGlmeURlZmVuZChMKQorCitGVU5LVElPTjoKKyAgICAgcHJvdGVjdGVkIHZvaWQgSW50ZXJuYWxNb2RpZnlEZWZlbmQoaW50IGRhbSwgbWl4ZWQgZHQsIG1peGVkIHNwZWxsLAorCQkJCSAgICAgIG9iamVjdCBlbmVteSkKKworREVGSU5JRVJUIElOOgorICAgICAvc3RkL2xpdmluZy9jb21iYXQKKworQVJHVU1FTlRFOgorICAgICBpbnQgZGFtICAgICAgICAgICAgIFN0YWVya2UgZGVzIGFienV3ZWhyZW5kZW4gQW5ncmlmZnMgKGluIEhQLzEwKQorICAgICBzdHJpbmcvc3RyaW5nKiBkdCAgIEFydChlbikgZGVzIFNjaGFkZW5zLCBkZXIgYW5nZXJpY2h0ZXQgd2VyZGVuIHNvbGwKKyAgICAgaW50L21hcHBpbmcgc3BlbGwgICAwIGZ1ZXIgbm9ybWFsZSBBbmdyaWZmZSAoa2VpbmUgWmF1YmVyKQorICAgICAgICAgICAgICAgICAgICAgICAgIDEgZnVlciBaYXViZXIgKFN0YW5kYXJkcnVlc3R1bmdlbiBpZ25vcmllcmVuKQorICAgICAgICAgICAgICAgICAgICAgICAgIG1hcHBpbmcgZnVlciBtZWhyIEluZm9ybWF0aW9uZW4KKyAgICAgb2JqZWN0IGVuZW15ICAgICAgICBkZXIgRmVpbmQvU2NoYWRlbnZlcnVyc2FjaGVyCisKK0JFU0NIUkVJQlVORzoKKyAgICAgRGllbnQgZGF6dSBub2NoIEFlbmRlcnVuZ2VuIGFtIFZlcmhhbHRlbiBkZXIgRGVmZW5kKCkgdm9ybmVobWVuIHp1CisgICAgIGtvZW5uZW4uIERpZSBQYXJhbWV0ZXIgd2VyZGVuIGFsbGUgcGVyIFJlZmVyZW56IHVlYmVyZ2ViZW4sIEFlbmRlcnVuZ2VuCisgICAgIHdpcmtlbiBhbHNvIGRpcmVrdCBpbiBkZXIgRGVmZW5kKCkhCisgICAgIEVpbmZhY2ggdWViZXJzY2hyZWliZW4sIGFiZXIgOjpJbnRlcm5hbE1vZGlmeURlZmVuZCgmLi4uLCAmLi4uLikgbmljaHQKKyAgICAgdmVyZ2Vzc2VuIQorCitTSUVIRSBBVUNIOgorICAgICBJbnRlcm5hbE1vZGlmeUF0dGFjayhMKQorICAgICBEZWZlbmQoTCkKKworMjguMDMuMjAwOCwgWmVzc3RyYQpkaWZmIC0tZ2l0IGEvZG9jL2xmdW4vSXNFbmVteSBiL2RvYy9sZnVuL0lzRW5lbXkKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYzQwNmNkNQotLS0gL2Rldi9udWxsCisrKyBiL2RvYy9sZnVuL0lzRW5lbXkKQEAgLTAsMCArMSwzMSBAQAorSXNFbmVteSgpCisKK0ZVTktUSU9OOgorCWludCBJc0VuZW15KG9iamVjdCB3ZXIpOworCitERUZJTklFUlQgSU46CisJL3N0ZC9saXZpbmcvY29tYmF0LmMKKworQVJHVU1FTlRFOgorCXdlcgorCSAgRGFzIE9iamVrdCwgd2VsY2hlcyBkYXJhdWYgdWViZXJwcnVlZnQgd2VyZGVuIHNvbGwsIG9iIGVzCisJICBkZXJ6ZWl0IGFscyBHZWduZXIgYmVrYW5udCBpc3QuCisKK1JVZUNLR0FCRVdFUlQ6CisJRmxhZzogMSBiZWkgRmVpbmRzY2hhZnQsIDAgc29uc3QKKworQkVTQ0hSRUlCVU5HOgorCU1pdCBkaWVzZXIgRnVua3Rpb24ga2FubiBtYW4gdWViZXJwcnVlZmVuLCBvYiBkYXMgT2JqZWt0IDx3ZXI+LCBhbHNvCisJaW0gTm9ybWFsZmFsbCBlaW4gTGViZXdlc2VuLCBkZXJ6ZWl0IGFscyBHZWduZXIgZXJrYW5udCB3aXJkLiBOYWNoCisJZWluZXIgZ2V3aXNzZW4gWmVpdCBsYWV1ZnQgZGllIEZlaW5kc2NoYWZ0IGF1dG9tYXRpc2NoIGF1cywgc29kYXNzCisJbWFuIHNpY2ggbmljaHQgZGFyYXVmIHZlcmxhc3NlbiwgZGFzcyBlaW4gR2VnbmVyIGF1Y2ggenVrdWVuZnRpZyBhbHMKKwlzb2xjaGlnZXIgZXJrYW5udCB3aXJkLiAoRGllc2UgWmVpdCBiZXRyYWVndCBub3JtYWwgMzAwIFNla3VuZGVuLikKKwlTb2xjaCBlaW5lIEZlaW5kc2NoYWZ0IGthbm4gaW0gdWVicmlnZW4gYXVjaCBlaW5zZWl0aWcgc2VpbiEgTWVocgorCWRhenUgZmluZGV0IG1hbiBpbiBkZXIgRG9rdW1lbnRhdGlvbiB6dSBTdG9wSHVudEZvcigpLCBlaW5lcgorCUZ1bmt0aW9uLCBkaWUgRnJpZWRlbiB6d2lzY2hlbiBHZWduZXJuIHN0aWZ0ZW4gc29sbC4KKworU0lFSEUgQVVDSDoKKwlTZWxlY3RFbmVteSgpLCBRdWVyeUVuZW1pZXMoKSwgU3RvcEh1bnRGb3IoKQorCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCitMYXN0IG1vZGlmaWVkOiBXZWQgTWF5IDI2IDE2OjQ3OjUxIDE5OTkgYnkgUGF0cnluCmRpZmYgLS1naXQgYS9kb2MvbGZ1bi9Jc0VxdWFsIGIvZG9jL2xmdW4vSXNFcXVhbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44MDY2NjFlCi0tLSAvZGV2L251bGwKKysrIGIvZG9jL2xmdW4vSXNFcXVhbApAQCAtMCwwICsxLDM5IEBACitJc0VxdWFsKCkKKworRlVOS1RJT04KKyAgICBpbnQgSXNFcXVhbChvYmplY3Qgb2IpCisKK0RFRklOSUVSVCBJTjoKKyAgICAvc3RkL3VuaXQuYworCitBUkdVTUVOVEU6CisgICAgb2IgICAgICBEYXMgT2JqZWt0IGRhcyBnZXBydWVmdCB3ZXJkZW4gc29sbC4KKworQkVTQ0hSRUlCVU5HOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAorICAgIERpZXNlIEZ1bmt0aW9uIHBydWVmdCBvYiB6d2VpIE9iamVrdGUgdm9tIGdsZWljaGVuIFR5cCBzaW5kLCBhbHNvIG9iCisgICAgei5CLiBvYiB1bmQgdGhpc19vYmplY3QoKSBiZWlkZXMgTXVlbnplbiBzaW5kIG9kZXIgYmVpZGVzIEVkZWxzdGVpbmUuCisgICAgQmVpIGVpbmVtIEVyZ2VibmlzICE9IDAgZmFzc3QgdW5pdC5jIGRpZXNlIHp3ZWkgT2JqZWt0ZSBhdXRvbWF0aXNjaAorICAgIHp1c2FtbWVuLCB3ZW5uIG9iLT5Jc0VxdWFsKHRoaXNfb2JqZWN0KCkpIGF1Y2ggZWluZW4gV2VydCAhPSAwIGVyZ2lidC4KKyAgICBIaWVyYmVpIHdpcmQgZGFzIElzRXF1YWwoKSB2b24gYmVpZGVuIGJldGVpbGlndGVuIE9iamVrdGVuIGdlcnVmZW4gdW5kIHNpZQorICAgIG11ZXNzZW4gdWViZXJlaW5zdGltbWVuLCBkYXNzIHNpZSBlaWdlbnRsaWNoIGRhcyBnbGVpY2hlIE9iamVrdCBzaW5kLgorICAgIFNlbGJzdHZlcnN0YWVuZGxpY2ggaXN0IGRpZXNlIEZ1bmt0aW9uIG51ciBpbSBGYWxsZSB2b24gVW5pdG9iamVrdGVuCisgICAgc2lubnZvbGwuCisKK1JVZUNLR0FCRVdFUlQ6CisgICAgMCAtIHRoaXNfb2JqZWN0KCkgaXN0IG5pY2h0IHZvbSBzZWxiZW4gVHlwIHdpZSBvYgorICAgIDEgLSB0aGlzX29iamVjdCgpIGlzdCB2b20gZ2xlaWNoZW4gVHlwIHdpZSBvYgorCitCRUlTUElFTEU6CisgICAgbyBFaW4gVW5pdG9iamVrdCBkYXMgdmVyc2NoaWVkZW5lIEJlc2NocmVpYnVuZ2VuIGhhYmVuIGthbm4uLi4KKworICAgICAgIGludCBJc0VxdWFsKG9iamVjdCBvYikKKyAgICAgICB7CisgICAgICAgICAgaWYgKCEoaW50KTo6SXNFcXVhbChvYikpIHJldHVybiAwOworICAgICAgICAgIHJldHVybiAoUXVlcnlQcm9wKFBfU0hPUlQpPT1vYi0+UXVlcnlQcm9wKFBfU0hPUlQpKTsKKyAgICAgICB9CisKK1NJRUhFIEFVQ0g6CisgICAgL3N0ZC91bml0LmMKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorMjUuMDEuMjAxNSwgWmVzc3RyYQorCmRpZmYgLS1naXQgYS9kb2MvbGZ1bi9Jc1RlYW1MZWFkZXIgYi9kb2MvbGZ1bi9Jc1RlYW1MZWFkZXIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZWFhMDA4ZgotLS0gL2Rldi9udWxsCisrKyBiL2RvYy9sZnVuL0lzVGVhbUxlYWRlcgpAQCAtMCwwICsxLDQ4IEBACisKK0lzVGVhbUxlYWRlcigpCisKKworRlVOS1RJT046CisgICAgICAgIG9iamVjdCBJc1RlYW1MZWFkZXIoKQorCitERUZJTklFUlQgSU46CisgICAgICAgIC9zdGQvbGl2aW5nL3RlYW0uYworCitBUkdVTUVOVEU6CisgICAgICAgIGtlaW5lCisKK0JFU0NIUkVJQlVORzoKKyAgICAgICAgVGVzdGV0LCBvYiBkZXIgU3BpZWxlciBlaW4gVGVhbWxlaXRlciBpc3QuCisKK1JVRUNLR0FCRVdFUlQ6CisgICAgICAgIEZhbGxzIGRlciBTcGllbGVyIFRlYW1sZWl0ZXIgaXN0LCB3aXJkIGRhcyBUZWFtb2JqZWt0IHp1cnVlY2tnZWdlYmVuLAorICAgICAgICBzb25zdCAwLgorCitCRUlTUElFTDoKKyAgICAgICAgc3RyaW5nIGxlYWRlcl90ZXN0KG9iamVjdCBwbCkKKyAgICAgICAgeworICAgICAgICAgLi4uCisKKyAgICAgICAgIGlmICggb2JqZWN0cChwbC0+SXNUZWFtTGVhZGVyKCkpICkKKyAgICAgICAgICByZXR1cm4gIkFscyBMZWl0ZXIgZWluZXMgVGVhbXMgaGFzdCBEdSBncm9zc2UgVmVyYW50d29ydHVuZyB6dSAiCisgICAgICAgICAgICAidHJhZ2VuISI7CisgICAgICAgICBlbHNlCisgICAgICAgICAgcmV0dXJuICJXZW5uIER1IG1hbCBMZWl0ZXIgZWluZXMgVGVhbXMgc2VpbiBtb2VjaHRlcywgc29sbHRlc3QgIgorICAgICAgICAgICAgIkR1IERpciB2b3JoZXIgZGVyIFZlcmFudHdvcnR1bmcgYmV3dXNzdCB3ZXJkZW4hIjsKKyAgICAgICAgfQorCitTSUVIRSBBVUNIOgorICAgICAgICBVZWJlcnNpY2h0OiB0ZWFta2FtcGYKKyAgICAgICAgUHJvcGVydGllczogUF9URUFNLCBQX0FTU09DX01FTUJFUlMsIFBfVEVBTV9BVFRBQ0tfQ01ELAorICAgICAgICAgICAgICAgICAgICBQX1RFQU1fQVVUT0ZPTExPVywgUF9URUFNX0NPTE9SUywgUF9URUFNX0xFQURFUiwKKyAgICAgICAgICAgICAgICAgICAgUF9URUFNX05FV01FTUJFUiwgUF9URUFNX1dBTlRFRF9ST1csIFBfVEVBTV9XSU1QWV9ST1cKKyAgICAgICAgQmV3ZWd1bmc6ICAgSXNUZWFtTW92ZSwgVGVhbUZsZWUKKyAgICAgICAgTWl0Z2xpZWRlcjogVGVhbU1lbWJlcnMKKyAgICAgICAgS2FtcGY6ICAgICAgQXNzb2NNZW1iZXIsIERlQXNzb2NNZW1iZXIsIEluc2VydEVuZW15VGVhbSwKKyAgICAgICAgICAgICAgICAgICAgU2VsZWN0TmVhckVuZW15LCBTZWxlY3RGYXJFbmVteQorICAgICAgICBQb3NpdGlvbmVuOiBQcmVzZW50UG9zaXRpb24sIFByZXNlbnRSb3dzLCBQcmVzZW50RW5lbXlSb3dzLAorICAgICAgICAgICAgICAgICAgICBQcmVzZW50VGVhbVBvc2l0aW9uLCBTd2FwUm93cworICAgICAgICBTb25zdGlnZXM6ICBUZWFtUHJlZml4LCB0ZWFta2FtcGZfaW50ZXJuCisKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KK0xhc3QgbW9kaWZpZWQ6IDE2LTA4LTIwMTAsIEdhYnlsb24KZGlmZiAtLWdpdCBhL2RvYy9sZnVuL0lzVGVhbU1vdmUgYi9kb2MvbGZ1bi9Jc1RlYW1Nb3ZlCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjg0NGIwNDEKLS0tIC9kZXYvbnVsbAorKysgYi9kb2MvbGZ1bi9Jc1RlYW1Nb3ZlCkBAIC0wLDAgKzEsNDAgQEAKKworSXNUZWFtTW92ZSgpCisKKworRlVOS1RJT046CisgICAgICAgIG9iamVjdCBJc1RlYW1Nb3ZlKCkKKworREVGSU5JRVJUIElOOgorICAgICAgICAvc3RkL2xpdmluZy90ZWFtLmMKKworQVJHVU1FTlRFOgorICAgICAgICBrZWluZQorCitCRVNDSFJFSUJVTkc6CisgICAgICAgIFRlc3RldCwgb2IgbW9tZW50YW4gZGllIEFuZ3JpZmZzYmV3ZWd1bmcgYXVzZ2VmdWVocnQgd2lyZC4KKworUlVFQ0tHQUJFV0VSVDoKKyAgICAgICAgRmFsbHMgZGllIEFuZ3JpZmZzYmV3ZWd1bmcgZ2VyYWRlIGF1c2dlZnVlaHJ0IHdpcmQsIHdpcmQgZGFzCisgICAgICAgIFRlYW1vYmpla3QgenVydWVja2dlZ2ViZW4sIHNvbnN0IDAuCisKK0JFTUVSS1VOR0VOOgorICAgICAgICBXaXJkIGludGVybiBiZW5vZXRpZ3QsIGRhbWl0IGRlciBCZWdydWVzc3VuZ3NzY2hsYWcgdmVyem9lZ2VydAorICAgICAgICB3ZXJkZW4ga2FubiwgYmlzIGFsbGUgVGVhbW1pdGdsaWVkZXIgaWhyZSBBbmdyaWZmc2Jld2VndW5nCisgICAgICAgIGF1c2dlZnVlaHJ0IGhhYmVuLgorCitTSUVIRSBBVUNIOgorICAgICAgICBVZWJlcnNpY2h0OiB0ZWFta2FtcGYKKyAgICAgICAgUHJvcGVydGllczogUF9URUFNLCBQX0FTU09DX01FTUJFUlMsIFBfVEVBTV9BVFRBQ0tfQ01ELAorICAgICAgICAgICAgICAgICAgICBQX1RFQU1fQVVUT0ZPTExPVywgUF9URUFNX0NPTE9SUywgUF9URUFNX0xFQURFUiwKKyAgICAgICAgICAgICAgICAgICAgUF9URUFNX05FV01FTUJFUiwgUF9URUFNX1dBTlRFRF9ST1csIFBfVEVBTV9XSU1QWV9ST1cKKyAgICAgICAgQmV3ZWd1bmc6ICAgVGVhbUZsZWUKKyAgICAgICAgTWl0Z2xpZWRlcjogSXNUZWFtTGVhZGVyLCBUZWFtTWVtYmVycworICAgICAgICBLYW1wZjogICAgICBBc3NvY01lbWJlciwgRGVBc3NvY01lbWJlciwgSW5zZXJ0RW5lbXlUZWFtLAorICAgICAgICAgICAgICAgICAgICBTZWxlY3ROZWFyRW5lbXksIFNlbGVjdEZhckVuZW15CisgICAgICAgIFBvc2l0aW9uZW46IFByZXNlbnRQb3NpdGlvbiwgUHJlc2VudFJvd3MsIFByZXNlbnRFbmVteVJvd3MsCisgICAgICAgICAgICAgICAgICAgIFByZXNlbnRUZWFtUG9zaXRpb24sIFN3YXBSb3dzCisgICAgICAgIFNvbnN0aWdlczogIFRlYW1QcmVmaXgsIHRlYW1rYW1wZl9pbnRlcm4KKworLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorTGFzdCBtb2RpZmllZDogMTYtMDgtMjAxMCwgR2FieWxvbgpkaWZmIC0tZ2l0IGEvZG9jL2xmdW4vSXNVbml0IGIvZG9jL2xmdW4vSXNVbml0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmJjZThhYjAKLS0tIC9kZXYvbnVsbAorKysgYi9kb2MvbGZ1bi9Jc1VuaXQKQEAgLTAsMCArMSwyMyBAQAorSXNVbml0KCkKKworRlVOS1RJT046CisgICAgIGludCBJc1VuaXQoKTsKKworREVGSU5JRVJUIElOOgorICAgICAvc3RkL3VuaXQuYworCitBUkdVTUVOVEU6CisgICAgIGtlaW5lCisKK0JFU0NIUkVJQlVORzoKKyAgICAgRGllc2UgRnVua3Rpb24gbGllZmVydCBpbW1lciAxIHp1cnVlY2sgdW5kIHplaWd0IGRhbWl0IGFuLCBkYXNzIGVzIHNpY2gKKyAgICAgYmVpIGRpZXNlbSBPYmpla3QgdW0gZWluIE1lbmdlbm9iamVrdCBoYW5kZWx0LgorCitSVWVDS0dBQkVXRVJUOgorICAgICAxIGJlaSBhbGxlbiBPYmpla3RlbiwgZGllIC9zdGQvdW5pdC5jIGVyYmVuLCBhbnNvbnN0ZW4gMC4KKworU0lFSEUgQVVDSDoKKyAgICAgL3N0ZC91bml0LmMKKworLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorTGFzdCBtb2RpZmllZDogV2VkIE1heSA4IDEwOjIwOjE5IDE5OTYgYnkgV2FyZ29uCmRpZmYgLS1naXQgYS9kb2MvbGZ1bi9LaWxsIGIvZG9jL2xmdW4vS2lsbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5hOGU0NTQwCi0tLSAvZGV2L251bGwKKysrIGIvZG9jL2xmdW4vS2lsbApAQCAtMCwwICsxLDI0IEBACitLaWxsKCkKKworRlVOS1RJT046CisJaW50IEtpbGwob2JqZWN0IGVuZW15KQorCitBUkdVTUVOVEU6CisJZW5lbXk6IERlciBib2VzZSwgYm9lc2UgRmVpbmQuCisKK0JFU0NIUkVJQlVORzoKKwlOYWNoIEF1ZnJ1ZiBkZXIgRnVua3Rpb24gd2lyZCBkZXIgRmVpbmQgaW4gamVkZW0KKwloZWFydF9iZWF0KCkgYXR0YWNraWVydC4KKworUlVFQ0tHQUJFV0VSVDoKKwkwLCAgRmFsbHMgZGVyIEZlaW5kIG5pY2h0IGV4aXN0aWVydAorICAtMSwgZmFsbHMgZGVyIEZlaW5kIGVpbiBHZWlzdCBpc3QKKyAgLTIsIGZhbGxzIGRlciBGZWluZCBQX05PX0FUVEFDSyBnZXNldHp0IGhhdAorICAtMywgZmFsbHMgZGVyIEFuZ3JlaWZlciBzZWxiZXIgUF9OT19BVFRBQ0sgZ2VzZXR6dCBoYXQKKyAgLTQsIGZhbGxzIGRlciBGZWluZCBiZXJlaXRzIGFuZ2VncmlmZmVuIHd1cmRlCisJMSAgIGZhbGxzIGRlciBGZWluZCBlcmZvbGdyZWljaCBhbHMgRmluZCByZWdpc3RyaWVydCB3dXJkZS4KKworQkVNRVJLVU5HRU46CisKK1NJRUhFIEFVQ0g6CisJSW5zZXJ0RW5lbXkKZGlmZiAtLWdpdCBhL2RvYy9sZnVuL0xlYXJuU2tpbGwgYi9kb2MvbGZ1bi9MZWFyblNraWxsCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjYzNzNmYmIKLS0tIC9kZXYvbnVsbAorKysgYi9kb2MvbGZ1bi9MZWFyblNraWxsCkBAIC0wLDAgKzEsMzUgQEAKK0xlYXJuU2tpbGwoKQorRlVOS1RJT046CisgICAgcHVibGljIHZhcmFyZ3Mgdm9pZCBMZWFyblNraWxsKHN0cmluZyBzbmFtZSwgaW50IGFkZCwgaW50IGRpZmYpCisKK0RFRklOSUVSVCBJTjoKKyAgICAvc3RkL2xpdmluZy9za2lsbHMuYworCitBUkdVTUVOVEU6CisgICAgc3RyaW5nIHNuYW1lICAgICBkZXIgenUgbGVybmVuZGUgU2tpbGwKKyAgICBzdHJpbmcgYWRkICAgICAgIEFuemFobCB6dSBsZXJuZW5kZXIgU2tpbGxwdW5rdGUKKyAgICBpbnQgZGlmZiAgICAgICAgIFNjaHdpZXJpZ2tlaXQKKworQkVTQ0hSRUlCVU5HOgorICAgIERpZSBNZXRob2RlIGxhZXNzdCBlaW5lbiBpbnRlcmFrdGl2ZW4gKGVpbmdlbG9nZ3RlbikgU3BpZWxlciBkZW4KKyAgICBTa2lsbCAnc25hbWUnIHVtICdhZGQnIFB1bmt0ZSBsZXJuZW4uCisKKyAgICBEYWJlaSB3aXJkIHNpY2hlcmdlc3RlbGx0LCBkYXNzICdhZGQnIGRlbiBXZXJ0IE1BWF9TS0lMTEVBUk4gbmljaHQKKyAgICB1ZWJlcnNjaHJlaXRldCwgZGVyIFNraWxsIG5pY2h0IHZlcnNjaHdpbmRldCB1bmQgZnVlciB1ZWJlcmdlb3JkbmV0ZQorICAgIFNraWxscyAoU0lfSU5IRVJJVCkgZGllc2VyIHVlYmVyZ2VvcmRuZXRlIFNraWxsIGF1Y2ggZWluZW4gTGVybmVmZmVrdAorICAgIGVyZmFlaHJ0LgorCisgICAgV2lyZCB6QiB2b24gTGVhcm4gKHNwZWxsYm9vaykgdW5kIFNwZWxsU3VjY2VzcyAoc3BlbGxib29rKSBnZXJ1ZmVuLgorCitTSUVIRSBBVUNIOgorICAgIFNraWxscyBMZXJuZW46ICBNb2RpZnlTa2lsbCwgTGltaXRBYmlsaXR5CisgICAgKiBOdXR6dW5nOiAgICAgIFVzZVNwZWxsLCBVc2VTa2lsbAorICAgICogQWJmcmFnZW46ICAgICBRdWVyeVNraWxsLCBRdWVyeVNraWxsQWJpbGl0eQorICAgICogTW9kaWZpa2F0aW9uOiBNb2RpZnlTa2lsbEF0dHJpYnV0ZSwgUXVlcnlTa2lsbEF0dHJpYnV0ZSwKKyAgICAgICAgICAgICAgICAgICAgUXVlcnlTa2lsbEF0dHJpYnV0ZU1vZGlmaWVyLCBSZW1vdmVTa2lsbEF0dHJpYnV0ZU1vZGlmaWVyCisgICAgICAqIFByb3BlcnRpZXM6IFBfU0tJTExfQVRUUklCVVRFUywgUF9TS0lMTF9BVFRSSUJVVEVfT0ZGU0VUUworICAgICogc29uc3RpZzogICAgICBzcHJ1Y2hlcm11ZWR1bmcKKyAgICAqIFByb3BlcnRpZXM6ICAgUF9ORVdTS0lMTFMKKyAgICBTcGVsbGJvb2s6ICAgICAgTGVhcm4sIFNwZWxsU3VjY2VzcworCiszLiBPa3QgMjAxMSBHbG9pbnNvbgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2RvYy9sZnVuL0xlYXZlIGIvZG9jL2xmdW4vTGVhdmUKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYjNiNTJkMgotLS0gL2Rldi9udWxsCisrKyBiL2RvYy9sZnVuL0xlYXZlCkBAIC0wLDAgKzEsNDAgQEAKK0xlYXZlKCkKKworRlVOS1RJT046CisgICAgIGludCBMZWF2ZSgpOworCitERUZJTklFUlQgSU46CisgICAgIC9zdGQvdHJhbnNwb3J0LmMKKworQVJHVU1FTlRFOgorICAgICBrZWluZQorCitCRVNDSFJFSUJVTkc6CisgICAgIFdlbm4gc2ljaCBkZXIgU3BpZWxlciBhdWYgZWluZW0gVHJhbnNwb3J0ZXIgYmVmaW5kZXQsIHVuZCBkaWVzZXIgc2ljaAorICAgICBtb21lbnRhbiBhbiBlaW5lciBIYWx0ZXN0ZWxsZSBsaWVndCwgdmVybGFlc3N0IGRlciBTcGllbGVyIGRlbgorICAgICBUcmFuc3BvcnRlci4KKworUlVlQ0tHQUJFV0VSVDoKKyAgICAgTnVsbCwgd2VubiBkZXIgU3BpZWxlciBkZW4gVHJhbnNwb3J0ZXIgbmljaHQgdmVybGFzc2VuIGtvbm50ZSwgc29uc3QKKyAgICAgdW5nbGVpY2ggTnVsbC4KKworQkVNRVJLVU5HRU46CisgICAgIEVzIHdlcmRlbiBrZWluZSBUZXN0cyBkdXJjaGdlZnVlaHJ0LCBvYiBkZXIgVHJhbnNwb3J0ZXIgdWViZXJoYXVwdAorICAgICBhbmdlc3Byb2NoZW4gd3VyZGUhIERhcyBtdXNzIG1hbiBzZWxiZXIgbWFjaGVuLgorCitCRUlTUElFTEU6CisKKyAgICAgaW50IG15TGVhdmUoc3RyaW5nIHN0cikKKyAgICAgeworICAgICAgIGlmIChzdHIgJiYgaWQoc3RyKSkKKyAgICAgICAgIHJldHVybiBMZWF2ZSgpOworCisgICAgICAgbm90aWZ5X2ZhaWwoIldhcyB3aWxsc3QgRHUgdmVybGFzc2VuP1xuIik7CisgICAgICAgcmV0dXJuIDA7CisgICAgIH0KKworU0lFSEUgQVVDSDoKKyAgICAgRW50ZXIoKSwgL3N0ZC90cmFuc3BvcnQuYworCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCitMYXN0IG1vZGlmaWVkOiBXZWQgTWF5IDggMTA6MjA6MzAgMTk5NiBieSBXYXJnb24KZGlmZiAtLWdpdCBhL2RvYy9sZnVuL0xpbWl0QWJpbGl0eSBiL2RvYy9sZnVuL0xpbWl0QWJpbGl0eQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5lNmEyODEwCi0tLSAvZGV2L251bGwKKysrIGIvZG9jL2xmdW4vTGltaXRBYmlsaXR5CkBAIC0wLDAgKzEsNDcgQEAKK0xpbWl0QWJpbGl0eSgpCitGVU5LVElPTjoKKyAgICBwcm90ZWN0ZWQgdmFyYXJncyBtaXhlZCBMaW1pdEFiaWxpdHkobWl4ZWQgc2luZm8sIGludCBkaWZmKQorCitERUZJTklFUlQgSU46CisgICAgL3N0ZC9saXZpbmcvc2tpbGxzLmMKKworQVJHVU1FTlRFOgorICAgIG1peGVkIHNpbmZvICAgICAgU2tpbGwtSW5mb3JtYXRpb25lbgorICAgIGludCBkaWZmICAgICAgICAgU2Nod2llcmlna2VpdAorCitCRVNDSFJFSUJVTkc6CisgICAgU2V0enQgZWluIE1heGltdW0gYW4gU2tpbGxmZXJ0aWdrZWl0IGJhc2llcmVuZCBhdWYgZGVyIFNjaHdpZXJpZ2tlaXQKKyAgICB1bmQgZGVtIFBfTEVWRUwgZGVzIFNwaWVsZXJzLgorICAgIAorICAgIEZvbGdlbmQgZWluZSBLb3BpZSAoISkgZGVyIFRhYmVsbGUgYXVzIC9zdGQvbGl2aW5nL3NraWxsczoKKyAgICBkaWZmfGx2bCAxOnwgICAzOnwgICA3OnwgMTA6fCAxMzp8IDE2OnwgMTk6fCAyMjp8IDI1OnwgMjg6fCAzMTp8IDM0OnwKKyAgICAtLS0tKy0tLS0tLSstLS0tLSstLS0tLSstLS0tKy0tLS0rLS0tLSstLS0tKy0tLS0rLS0tLSstLS0tKy0tLS0rLS0tLSsKKyAgICAgLTUwfCAgIDgzJXwgIDg0JXwgIDg2JXwgODclfCA4OSV8IDkwJXwgOTIlfCA5MyV8IDk1JXwgOTYlfCA5OCV8IDk5JXwKKyAgICAgLTEwfCAgIDY5JXwgIDcyJXwgIDc0JXwgNzclfCA4MCV8IDgyJXwgODUlfCA4OCV8IDkxJXwgOTMlfCA5NiV8IDk5JXwKKyAgICAgICAwfCAgIDY2JXwgIDY5JXwgIDcyJXwgNzUlfCA3OCV8IDgxJXwgODQlfCA4NyV8IDkwJXwgOTMlfCA5NiV8IDk5JXwKKyAgICAgIDEwfCAgIDYyJXwgIDY1JXwgIDY5JXwgNzIlfCA3NSV8IDc5JXwgODIlfCA4NSV8IDg5JXwgOTIlfCA5NSV8IDk4JXwKKyAgICAgIDIwfCAgIDU5JXwgIDYyJXwgIDY2JXwgNzAlfCA3MyV8IDc3JXwgODAlfCA4NCV8IDg4JXwgOTElfCA5NSV8IDk4JXwKKyAgICAgIDMwfCAgIDU1JXwgIDU5JXwgIDYzJXwgNjclfCA3MSV8IDc1JXwgNzklfCA4MyV8IDg3JXwgOTAlfCA5NCV8IDk4JXwKKyAgICAgIDQwfCAgIDUyJXwgIDU2JXwgIDYwJXwgNjUlfCA2OSV8IDczJXwgNzclfCA4MSV8IDg2JXwgOTAlfCA5NCV8IDk4JXwKKyAgICAgIDUwfCAgIDQ5JXwgIDUzJXwgIDU4JXwgNjIlfCA2NyV8IDcxJXwgNzYlfCA4MCV8IDg1JXwgODklfCA5NCV8IDk4JXwKKyAgICAgMTAwfCAgIDMyJXwgIDM4JXwgIDQ0JXwgNTAlfCA1NiV8IDYyJXwgNjglfCA3NCV8IDgwJXwgODYlfCA5MiV8IDk4JXwKKyAgICAgMTUwfCAgIDE1JXwgIDIyJXwgIDMwJXwgMzclfCA0NSV8IDUyJXwgNjAlfCA2NyV8IDc1JXwgODIlfCA5MCV8IDk3JXwKKyAgICAgMjAwfCAgIC0yJXwgICA3JXwgIDE2JXwgMjUlfCAzNCV8IDQzJXwgNTIlfCA2MSV8IDcwJXwgNzklfCA4OCV8IDk3JXwKKyAgICAgMjUwfCAgLTE5JXwgIC04JXwgICAyJXwgMTIlfCAyMyV8IDMzJXwgNDQlfCA1NCV8IDY1JXwgNzUlfCA4NiV8IDk2JXwKKyAgICAgMzAwfCAgLTM2JXwgLTI0JXwgLTEyJXwgIDAlfCAxMiV8IDI0JXwgMzYlfCA0OCV8IDYwJXwgNzIlfCA4NCV8IDk2JXwKKyAgICAgNDAwfCAgLTcwJXwgLTU1JXwgLTQwJXwtMjUlfC0xMCV8ICA1JXwgMjAlfCAzNSV8IDUwJXwgNjUlfCA4MCV8IDk1JXwKKyAgICAgNTAwfCAtMTA0JXwgLTg2JXwgLTY4JXwtNTAlfC0zMiV8LTE0JXwgIDQlfCAyMiV8IDQwJXwgNTglfCA3NiV8IDk0JXwKKyAgICAgNjAwfCAtMTM4JXwtMTE3JXwgLTk2JXwtNzUlfC01NCV8LTMzJXwtMTIlfCAgOSV8IDMwJXwgNTElfCA3MiV8IDkzJXwKKworU0lFSEUgQVVDSDoKKyAgICBTa2lsbHMgTGVybmVuOiAgTGVhcm5Ta2lsbCwgTW9kaWZ5U2tpbGwKKyAgICAqIE51dHp1bmc6ICAgICAgVXNlU3BlbGwsIFVzZVNraWxsCisgICAgKiBBYmZyYWdlbjogICAgIFF1ZXJ5U2tpbGwsIFF1ZXJ5U2tpbGxBYmlsaXR5CisgICAgKiBNb2RpZmlrYXRpb246IE1vZGlmeVNraWxsQXR0cmlidXRlLCBRdWVyeVNraWxsQXR0cmlidXRlLAorICAgICAgICAgICAgICAgICAgICBRdWVyeVNraWxsQXR0cmlidXRlTW9kaWZpZXIsIFJlbW92ZVNraWxsQXR0cmlidXRlTW9kaWZpZXIKKyAgICAgICogUHJvcGVydGllczogUF9TS0lMTF9BVFRSSUJVVEVTLCBQX1NLSUxMX0FUVFJJQlVURV9PRkZTRVRTCisgICAgKiBzb25zdGlnOiAgICAgIHNwcnVjaGVybXVlZHVuZworICAgICogUHJvcGVydGllczogICBQX05FV1NLSUxMUworICAgIFNwZWxsYm9vazogICAgICBMZWFybiwgU3BlbGxTdWNjZXNzCisKKzMuIE9rdCAyMDExIEdsb2luc29uCmRpZmYgLS1naXQgYS9kb2MvbGZ1bi9NYXRlcmlhbEdyb3VwIGIvZG9jL2xmdW4vTWF0ZXJpYWxHcm91cApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5kYTUxY2FkCi0tLSAvZGV2L251bGwKKysrIGIvZG9jL2xmdW4vTWF0ZXJpYWxHcm91cApAQCAtMCwwICsxLDM3IEBACitNYXRlcmlhbEdyb3VwKCkKK0ZVTktUSU9OOgorICAgICBpbnQgTWF0ZXJpYWxHcm91cChtYXBwaW5nIG1hdHMsIHN0cmluZyBncnApCisKK0RFRklOSUVSVCBJTjoKKyAgICAgL3AvZGFlbW9uL21hdGVyaWFsZGIuYyAoTUFURVJJQUxEQikKKworQVJHVU1FTlRFOgorICAgICBtYXBwaW5nIG1hdHMgLSBNYXRlcmlhbGllbm1hcHBpbmcKKyAgICAgc3RyaW5nIGdycCAgIC0gTWF0ZXJpYWxpZW5ncnVwcGUKKworQkVTQ0hSRUlCVU5HOgorICAgICBEaWUgTWF0ZXJpYWxpZW4gaW0gTWFwcGluZyB3ZXJkZW4gYXVmIFp1Z2Vob2VyaWdrZWl0IHp1IGRlciBHcnVwcGUKKyAgICAgdW50ZXJzdWNodCB1bmQgZGVyIEdlc2FtdGFudGVpbCBkaWVzZXIgTWF0ZXJpYWxpZW5ncnVwcGUgYW0gTWFwcGluZworICAgICBpbiBQcm96ZW50IHp1cnVlY2tnZWdlYmVuICh3ZW5uIGRhcyBNYXBwaW5nIHNpY2ggYXVmIDEwMCUgYXVmYWRkaWVydCkuCisKK1JVRUNLR0FCRVdFUlQ6CisgICAgIGludCAtIHByb3plbnR1YWxlciBBbnRlaWwgZGVyIE1hdGVyaWFsaWVuZ3J1cHBlIC0xMDAgLi4uIDEwMCAlCisKK0JFSVNQSUVMRToKKyAgICAgaWYoTUFURVJJQUxEQi0+TWF0ZXJpYWxHcm91cCgKKwkJKFtNQVRfTUlTQ19TVE9ORTo0MCxNQVRfQU1FVEhZU1Q6NTAsTUFUX01JU0NfTUVUQUw6MTBdKSwKKwkJTUFUR1JPVVBfSkVXRUwpPjUwKQorICAgICAgd3JpdGUoIk9oIGphLCBkYXJpbiBzaW5kIHNlaHIgdmllbGUgRWRlbHN0ZWluZSFcbiIpOworCitCRU1FUktVTkdFTjoKKyAgICAgV2lyZCB2b24gL3N0ZC90aGluZy9kZXNjcmlwdGlvbjo6UXVlcnlNYXRlcmlhbEdyb3VwKCkgZ2VydWZlbi4KKyAgICAgQml0dGUgYW4gT2JqZWt0ZW4gYXVjaCBRdWVyeU1hdGVyaWFsR3JvdXAoKSB2ZXJ3ZW5kZW4uCisKK1NJRUhFIEFVQ0g6CisgICAgIEtvbnplcHRlOgkgIG1hdGVyaWFsLCBtYXRlcmlhbGVya2VubnVuZworICAgICBHcnVuZGxlZ2VuZDogUF9NQVRFUklBTCwgL3N5cy90aGluZy9tYXRlcmlhbC5oCisgICAgIE1hc3RlcjoJICBBZGRNYXRlcmlhbCgpLCBDb252TWF0ZXJpYWxMaXN0KCkKKwkJICBHcm91cE5hbWUoKSwgTWF0ZXJpYWxOYW1lKCksCisJCSAgR2V0R3JvdXBNZW1iZXJzKCksIEdldE1hdE1lbWJlcnNoaXAoKQorCis3LiBNYWkgMjAwNCBHbG9pbnNvbgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2RvYy9sZnVuL01hdGVyaWFsTGlzdCBiL2RvYy9sZnVuL01hdGVyaWFsTGlzdApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4xN2VmNTI2Ci0tLSAvZGV2L251bGwKKysrIGIvZG9jL2xmdW4vTWF0ZXJpYWxMaXN0CkBAIC0wLDAgKzEsNjUgQEAKK01hdGVyaWFsTGlzdChMKQorRlVOS1RJT046CisgICAgIHZhcmFyZ3Mgc3RyaW5nIE1hdGVyaWFsTGlzdChpbnQgY2FzdXMsIG1peGVkIGlkaW5mKQorCitERUZJTklFUlQgSU46CisgICAgIC9zdGQvdGhpbmcvZGVzY3JpcHRpb24uYworCitBUkdVTUVOVEU6CisgICAgIGludCBjYXN1cwkgLSBkZXIgRmFsbCwgaW4gZGVtIGRpZSBNYXRlcmlhbGllbiBkZWtsaW5pZXJ0IHdlcmRlbiBzb2xsZW4KKyAgICAgbWl4ZWQgaWRpbmYgLSBEaW5nZSwgd2VsY2hlIGRpZSBGYWVoaWdrZWl0ZW4gZGVzIEVya2VubmVucyBiZWVpbmZsdXNzZW46CisJCSAgIEVpbnplbG5lIFdlcnRlOgorICAgICAgICAgICAgICAgICAgICogeDogYWxsZ2VtZWluZSBFcmtlbm51bmcgLTEwMCAuLi4gMTAwCisgICAgICAgICAgICAgICAgICAgKiB3aG86IGRlciBTcGllbGVyIC0gUF9NQVRFUklBTF9LTk9XTEVER0Ugd2lyZCBhYmdlZnJhZ3QKKyAgICAgICAgICAgICAgICAgICAqIGZ1bjogd2lyZCBldmFsdWllcnQKKyAgICAgICAgICAgICAgICAgICAqIHdoYXQsIGthbm4gZm9sZ2VuZGVzIGVudGhhbHRlbjoKKyAgICAgICAgICAgICAgICAgICAgIC0gRWludHJhZyBmdWVyIE1hdGVyaWFsaWVuIChbTUFUX1hYWDotMTAwLi4uMTAwXSkKKyAgICAgICAgICAgICAgICAgICAgIC0gRWludHJhZyBmdWVyIE1hdGVyaWFsaWVuZ3J1cHBlbiAoZGl0bykKKyAgICAgICAgICAgICAgICAgICAgIC0gKFtNQVRFUklBTF9TWU1NRVRSSUNfUkVDT0dOSVpBQklMSVRZOiBtaXhlZCBtZ10pCisgICAgICAgICAgICAgICAgICAgICAgICogbWcgZWluIEFycmF5OgorICAgICAgICAgICAgICAgICAgICAgICAgICh7TUFUR1JPVVBfWDEsaW50IHoxLCBNQVRHUk9VUF9YMiwgaW50IHoyLCAuLi59KQorICAgICAgICAgICAgICAgICAgICAgICAgIHdvYmVpIGJlaSBadWdlaG9lcmlna2VpdCB2b24gc3RyaW5nIG1hdCB6dSBHcnVwcGUKKyAgICAgICAgICAgICAgICAgICAgICAgICB6PG4+IGF1ZiBkaWUgRmFlaGlna2VpdCBhZGRpZXJ0LCBhbmRlcm5mYWxscyBkYXZvbgorICAgICAgICAgICAgICAgICAgICAgICAgIHN1YnRyYWhpZXJ0IHdpcmQKKwkJICAgQXJyYXkgbWl0IG9iaWdlbiBXZXJ0ZW46CisgICAgICAgICAgICAgICAgICAgLSBhbGxlIFBhcmFtZXRlciBkZXMgQXJyYXlzIHNpbmQgb3B0aW9uYWwgdW5kIGFkZGl0aXYKKyAgICAgICAgICAgICAgICAgICAtICh7aW50IHgsIG9iamVjdCB3aG8sIG1hcHBpbmcgd2hhdCwgY2xvc3VyZSBmdW59KQorCitCRVNDSFJFSUJVTkc6CisgICAgIExpc3RldCBkaWUgTWF0ZXJpYWxpZW4gYXVmLCBhdXMgZGVuZW4gZWluIE9iamVrdCBiZXN0ZWh0LgorICAgICBEYWJlaSBoYWVuZ3QgZGllIEdlbmF1aWdrZWl0IGRlciBNYXRlcmlhbGVya2VubnVuZyB2b24gaWRpbmYgYWIuIEQuaC4KKyAgICAgamUgbmFjaCBkZW4gRmFlaGlna2VpdGVuL2RlciBhbmdlZ2ViZW5lbiBGYWVoaWdrZWl0IHdpcmQgekIgV29sZnJhbQorICAgICBhbHMgIldvbGZyYW0iIG9kZXIgbnVyIGFscyAiTWV0YWxsIiBlcmthbm50LgorCisgICAgIFdlbm4gZWluIFNwaWVsZXIgZXR3YXMgaWRlbnRpZml6aWVydCwgc29sbHRlIGF1Y2ggVFAgdWViZXJnZWJlbiB3ZXJkZW4sCisgICAgIGJlaSBOUENzIGtvZW5udGUgZGFzIGFuZGVycyBhdXNzZWhlbi4KKworUlVFQ0tHQUJFV0VSVDoKKyAgICAgU3RyaW5nIG1pdCBMaXN0ZSBkZXIgTWF0ZXJpYWxpZW4uCisKK0JFTUVSS1VOR0VOOgorICAgICAtIGVzIHdlcmRlbiBudXIgZGllIE1hdGVyaWFsaWVuIGFuZ2VnZWJlbiwgbmljaHQgZGllIE1lbmdlLgorICAgICAtIHJ1ZnQgQ29udk1hdGVyaWFsTGlzdCgpIGFuIGRlciBNQVRFUklBTERCCisKK0JFSVNQSUVMRToKKyAgICAgLy8gc2ltcGVsCisgICAgIHdyaXRlKCJEZXIgR2VnZW5zdGFuZCBiZXN0ZWh0IGF1cyIrb2ItPk1hdGVyaWFsTGlzdChXRU0sVFApKyIuXG4iKQorICAgICAvLyAtPiAiRGVyIEdlZ2Vuc3RhbmQgYmVzdGVodCBhdXMgR29sZCwgU2lsYmVyIHVuZCBSdWJpbi5cbiIKKworICAgICAvLyBrb21wbGV4ZXIKKyAgICAgb2ItPlNldFByb3AoUF9NQVRFUklBTCwgKFtQX05JVFJPR0xZQ0VSSU5FOjkwLFBfR1VOUE9XREVSOjEwXSkpOworICAgICB3cml0ZSgiRGFzIGVudGhhZWx0ICIrb2ItPk1hdGVyaWFsTGlzdChXRVIsVFApKyIuXG4iKTsKKyAgICAgLy8gLT4gIkRhcyBlbnRoYWVsdCBTY2h3YXJ6cHVsdmVyIHVuZCBOaXRyb2dseWNlcmluLiIKKworU0lFSEUgQVVDSDoKKyAgICAgS29uemVwdGU6CSAgbWF0ZXJpYWwsIG1hdGVyaWFsZXJrZW5udW5nCisgICAgIEdydW5kbGVnZW5kOiBQX01BVEVSSUFMLCAvc3lzL3RoaW5nL21hdGVyaWFsLmgKKyAgICAgTWV0aG9kZW46ICAgIFF1ZXJ5TWF0ZXJpYWwoKSwgUXVlcnlNYXRlcmlhbEdyb3VwKCkKKyAgICAgTGlzdGVuOgkgIEFsbE1hdGVyaWFscygpLCBBbGxHcm91cHMoKSwgRHVtcCgpCisJCSAgbWF0ZXJpYWxsaXN0ZSwgbWF0ZXJpYWxncnVwcGVuCisgICAgIE1hc3RlcjoJICBBZGRNYXRlcmlhbCgpLCBDb252TWF0ZXJpYWxMaXN0KCksIE1hdGVyaWFsR3JvdXAoKSwKKwkJICBHcm91cE5hbWUoKSwgTWF0ZXJpYWxOYW1lKCksCisJCSAgR2V0R3JvdXBNZW1iZXJzKCksIEdldE1hdE1lbWJlcnNoaXAoKQorICAgICBTb25zdGlnZXM6CSAgUF9NQVRFUklBTF9LTk9XTEVER0UKKworNy4gTWFpIDIwMDQgR2xvaW5zb24KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9kb2MvbGZ1bi9NYXRlcmlhbE5hbWUgYi9kb2MvbGZ1bi9NYXRlcmlhbE5hbWUKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMGUzMzhhMwotLS0gL2Rldi9udWxsCisrKyBiL2RvYy9sZnVuL01hdGVyaWFsTmFtZQpAQCAtMCwwICsxLDcyIEBACitNYXRlcmlhbE5hbWUoKQorRlVOS1RJT046CisgICAgIHZhcmFyZ3Mgc3RyaW5nIE1hdGVyaWFsTmFtZShzdHJpbmcgbWF0LCBpbnQgY2FzdXMsIG1peGVkIGlkaW5mKQorCitERUZJTklFUlQgSU46CisgICAgIC9wL2RhZW1vbi9tYXRlcmlhbGRiLmMgKE1BVEVSSUFMREIpCisKK0FSR1VNRU5URToKKyAgICAgc3RyaW5nIG1hdAkgLSBkYXMgenUgZXJrZW5uZW5kZSBNYXRlcmlhbAorICAgICBpbnQgY2FzdXMJIC0gZGVyIEZhbGwKKyAgICAgbWl4ZWQgaWRpbmYgLSBEaW5nZSwgd2VsY2hlIGRpZSBGYWVoaWdrZWl0ZW4gZGVzIEVya2VubmVucyBiZWVpbmZsdXNzZW4KKwkJICAgKHNpZWhlICJtYW4gTWF0ZXJpYWxMaXN0IikKKworQkVTQ0hSRUlCVU5HOgorICAgICBEaWVzZSBGdW5rdGlvbiBzdWNodCB1bnRlciBCZXJ1ZWNrc2ljaHRpZ3VuZyBkZXIgRXJrZW5udW5nc2JlLQorICAgICBzY2hyYWVua3VuZ2VuIGRlcyBNYXRlcmlhbHMgdW5kIEZhZWhpZ2tlaXRlbiBkZXMgU3BpZWxlcnMgZGVuCisgICAgIEtsYXJuYW1lbiBkZXMgTWF0ZXJpYWxzIGhlcmF1cyB1bmQgZ2lidCBkZW4genVydWVjay4KKworUlVFQ0tHQUJFV0VSVDoKKyAgICAgc3RyaW5nOiBNYXRlcmlhbG5hbWUgb2RlciBnZW5lcmVsbGVyIE5hbWUuCisKK0JFSVNQSUVMRToKKyAgICAgLy8gZGVyIGhpZXIgbWFnIGFsbGUgZXhpc3RpZXJlbmRlbiBKdXdlbGVuLCBhdWNoIHdlbm4gd2VsY2hlIGVyZ2Flbnp0CisgICAgIC8vIHdlcmRlbiBzb2xsdGVuCisgICAgIC8vIFBhcmFtZXRlcjogMS4gZWluIEp1d2VsLCAyLiBDYXN1cywgMy4gMTAwJSBFcmtlbm51bmcgLSBvYiBlciBzaWUKKyAgICAgLy8gYmVpbSBFbXBmYW5nIGRhbm4gYXVjaCB6dSAxMDAlIGVya2VubnQsIHN0ZWh0IGhpZXIgbmljaHQhCisgICAgIHN0cmluZyogbGlrZWl0OworICAgICBsaWtlaXQ9TUFURVJJQUxEQi0+R2V0R3JvdXBNZW1iZXJzKE1BVEdST1VQX0pFV0VMKTsKKyAgICAgLi4uCisgICAgIHdyaXRlKCJEZXIgQWx0ZSBzYWd0OiBJY2ggbWFnICIrCisJICAgTUFURVJJQUxEQi0+TWF0ZXJpYWxOYW1lKGxpa2VpdFtyYW5kb20oc2l6ZW9mKGxpa2VpdCkpXSwgV0VOLCAxMDApKworCSAgICIuXG4iKTsKKyAgICAgLi4uCisKKyAgICAgLy8gZWluIHdlaXNlciBzY2htaWVkOgorICAgICBpbnQgaTsKKyAgICAgc3RyaW5nICptYXQsIG1uYW1lLCBtZ3JvdXA7CisgICAgIG1hdD1tX2luZGljZXMob2ItPnF1ZXJ5cHJvcChwX21hdGVyaWFsKSk7CisgICAgIGk9c2l6ZW9mKG1hdCk7CisKKyAgICAgd3JpdGUoImRlciBzY2htaWVkIHNhZ3Q6ICIrb2ItPm5hbWUod2VyKSsiIGJlc3RlaHQgYXVzIC4uLlxuIik7CisgICAgIHdoaWxlKGktLSkgeworICAgICAgLy8gZGVuIG5hbWVuIGVya2VubmVuL2F1c3NwcmVjaGVuOgorICAgICAgLy8gbWF0ZXJpYWxpZW4gd2VyZGVuIGFsbGdlbWVpbiBnYW56IHNjaGxlY2h0IGVya2FubnQgKHp1IDUlKSwgYWJlcgorICAgICAgLy8gYWxsZXMgYXVzIG1ldGFsbCB3aXJkIHp1ICsxMDAlIGd1dCBlcmthbm50IC4uLgorICAgICAgbW5hbWU9bWF0ZXJpYWxkYi0+bWF0ZXJpYWxuYW1lKG1hdFtpXSwgd2VyLAorCSAgICAgKHs1LCAoW21hdGVyaWFsX3N5bW1ldHJpY19yZWNvZ25pemFiaWxpdHk6CisJCQkoe21hdGdyb3VwX21ldGFsLCAxMDB9KV0pfSkpOworCisgICAgICAvLyB1bmQgbnVyIG1ldGFsbGUgYW5hbHlzaWVyZW4gLi4uCisgICAgICBpZihtYXRlcmlhbGRiLT5tYXRlcmlhbGdyb3VwKChbbWF0W2ldOjEwMF0pLG1hdGdyb3VwX21ldGFsKT49MTAwKSB7CisgICAgICAgaW50IGo7CisgICAgICAgc3RyaW5nICptZ3I7CisgICAgICAgbWdyPW1hdGVyaWFsZGItPmdldG1hdG1lbWJlcnNoaXAobWF0W2ldKTsKKyAgICAgICBqPXNpemVvZihtZ3IpOworICAgICAgIG1ncm91cD0iIGdlaG9lcnQgenUgIjsKKyAgICAgICB3aGlsZShqLS0pIHsKKyAgICAgICAgbWdyb3VwKz1tYXRlcmlhbGRiLT5ncm91cG5hbWUobWdyW2pdKTsKKyAgICAgICAgaWYoaj4wKSBtZ3JvdXArPSIsICI7CisgICAgICAgfQorICAgICAgfSBlbHNlIG1ncm91cD0iIGtlbm5lIGljaCBuaWNodCI7CisgICAgICBwcmludGYoIiUtMTIuMTJzOiAlc1xuIixtbmFtZSwgbWdyb3VwKTsKKyAgICAgfQorCitTSUVIRSBBVUNIOgorICAgICBLb256ZXB0ZToJICBtYXRlcmlhbCwgbWF0ZXJpYWxlcmtlbm51bmcKKyAgICAgR3J1bmRsZWdlbmQ6IFBfTUFURVJJQUwsIC9zeXMvdGhpbmcvbWF0ZXJpYWwuaAorICAgICBNYXN0ZXI6CSAgQWRkTWF0ZXJpYWwoKSwgQ29udk1hdGVyaWFsTGlzdCgpLCBNYXRlcmlhbEdyb3VwKCksCisJCSAgR3JvdXBOYW1lKCkKKwkJICBHZXRHcm91cE1lbWJlcnMoKSwgR2V0TWF0TWVtYmVyc2hpcCgpCisKKzcuIE1haSAyMDA0IEdsb2luc29uClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZG9jL2xmdW4vTWF5QWRkT2JqZWN0IGIvZG9jL2xmdW4vTWF5QWRkT2JqZWN0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmQ1MDJkYTQKLS0tIC9kZXYvbnVsbAorKysgYi9kb2MvbGZ1bi9NYXlBZGRPYmplY3QKQEAgLTAsMCArMSwzMyBAQAorTWF5QWRkT2JqZWN0KCkKKworRlVOS1RJT046CisgICAgIGludCBNYXlBZGRPYmplY3Qob2JqZWN0IG9iKTsKKworREVGSU5JRVJUIElOOgorICAgICAvc3RkL2NvbnRhaW5lci9yZXN0cmljdGlvbnMuYworCitBUkdVTUVOVEU6CisgICAgIG9iIC0gRGFzIE9iamVjdCBiZWkgZGVtIGdlcHJ1ZWZ0IHdlcmRlbiBzb2xsLCBvYiBlcyBub2NoIGluIGRlbgorICAgICAgICAgIENvbnRhaW5lciBwYXNzdC4KKworQkVTQ0hSRUlCVU5HOgorICAgICBXZW5uIGVpbiBPYmpla3QgaW4gZWluZW4gQ29udGFpbmVyIGJld2VndCB3aXJkLCBwcnVlZnQgbW92ZSgpIHVlYmVyCisgICAgIGRpZXNlIEZ1bmt0aW9uLCBvYiBkYXMgT2JqZWt0IHVlYmVyaGF1cHQgbm9jaCBpbiBkZW4gQmVoYWVsdGVyIGhpbmVpbgorICAgICBwYXNzdC4gRGF6dSB1ZWJlcmdpYnQgbW92ZSgpIGRhcyBPYmpla3QgZGFzIGluIGRlbiBDb250YWluZXIgYmV3ZWd0CisgICAgIHdlcmRlbiBzb2xsLiAoSW4gUmFldW1lbiBpc3QgZGllc2UgRnVua3Rpb25lbiB1ZWJlcnNjaHJpZWJlbiB1bmQKKyAgICAgbGllZmVydCBpbW1lciBUcnVlIHp1cnVlY2suKQorCitSVWVDS0dBQkVXRVJUOgorICAgICAxIC0gd2VubiBkYXMgT2JqZWt0IG5vY2ggdm9tIENvbnRhaW5lciBhdWZnZW5vbW1lbiB3ZXJkZW4ga2Fubi4KKyAgICAgMCBzb25zdC4KKworQkVNRVJLVU5HRU46CisgICAgIGludmlzLU9iamVrdGUgcGFzc2VuIGltbWVyIGluIGRlbiBDb250YWluZXIgaGluZWluIQorICAgICBtb3ZlKCkgcnVmdCBkaWVzZSBGdW5rdGlvbiBuaWNodCBhdWYsIHdlbm4gaW4gZGVuIEZsYWdzIE1fTk9DSEVDSworICAgICBnZXNldHp0IHdhciEKKworU0lFSEUgQVVDSDoKKyAgICAgTWF5QWRkV2VpZ2h0KCksIFByZXZlbnRJbnNlcnQoKSwgbW92ZSgpLCAvc3RkL2NvbnRhaW5lci9yZXN0cmljdGlvbnMuYworCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCitMYXN0IG1vZGlmaWVkOiAyMy4wOS4yMDA3LCBaZXNzdHJhCmRpZmYgLS1naXQgYS9kb2MvbGZ1bi9NYXlBZGRXZWlnaHQgYi9kb2MvbGZ1bi9NYXlBZGRXZWlnaHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMWNjNGU0NwotLS0gL2Rldi9udWxsCisrKyBiL2RvYy9sZnVuL01heUFkZFdlaWdodApAQCAtMCwwICsxLDQ3IEBACitNYXlBZGRXZWlnaHQoKQorCitGVU5LVElPTjoKKyAgICAgaW50IE1heUFkZFdlaWdodChpbnQgZ2V3aWNodCk7CisKK0RFRklOSUVSVCBJTjoKKyAgICAgL3N0ZC9jb250YWluZXIvcmVzdHJpY3Rpb25zLmMKKworQVJHVU1FTlRFOgorICAgICBnZXdpY2h0CisgICAgICAgICAgRGFzIHp1IHBydWVmZW5kZSBHZXdpY2h0LgorCitCRVNDSFJFSUJVTkc6CisgICAgIFdlbm4gZWluIE9iamVrdCBlaW4gZWluZW4gQmVoYWVsdGVyIGJld2VndCB3aXJkLCBwcnVlZnQgbW92ZSgpIHVlYmVyCisgICAgIGRpZXNlIEZ1bmt0aW9uLCBvYiBkYXMgT2JqZWt0IHVlYmVyaGF1cHQgbm9jaCBpbiBkZW4gQmVoYWVsdGVyIGhpbmVpbgorICAgICBwYXNzdC4gRGF6dSB1ZWJlcmdpYnQgbW92ZSgpIGRpZXNlciBGdW5rdGlvbiBkYXMgR2V3aWNodCBkZXMgenUKKyAgICAgYmV3ZWdlbmRlbiBPYmpla3Rlcy4KKworUlVlQ0tHQUJFV0VSVDoKKyAgICAgMCwgd2VubiBkZXIgQmVoYWVsdGVyIG5vY2ggZWluIGdld2ljaHQgR3JhbW0gd2llZ2VuZGVzIE9iamVrdCBhdWZuZWhtZW4KKyAgICAga2FubiwgLTEgaW0gYW5kZXJlbiBGYWxsLgorCitCRU1FUktVTkdFTjoKKyAgICAgbW92ZSgpIHJ1ZnQgZGllc2UgRnVua3Rpb24gbmljaHQgYXVmLCB3ZW5uIGluIGRlbiBGbGFncyBNX05PQ0hFQ0sKKyAgICAgZ2VzZXR6dCB3YXIhCisKK0JFSVNQSUVMRToKKyAgICAgRGllIGVudHNwcmVjaGVuZGUgQWJmcmFnZSBpbiAvc3RkL3RoaW5nL21vdmluZy5jIHNpZWh0IGV0d2EKKyAgICAgZm9sZ2VuZGVybWFzc2VuIGF1czoKKworICAgICBpbnQgd2VpZ2h0OworCisgICAgIC4uLgorICAgICB3ZWlnaHQgPSBRdWVyeVByb3AoUF9UT1RBTF9XRUlHSFQpOyAgIC8vIEJlaGFlbHRlcj8gSmEgPT4gR2VzYW10Z2V3aWNodAorICAgICBpZiAoIXdlaWdodCkKKyAgICAgICB3ZWlnaHQgPSBRdWVyeVByb3AoUF9XRUlHSFQpOyAgICAgICAvLyBOZWluOiBlaW5mYWNoZXMgR2V3aWNodAorCisgICAgIGlmICh6aWVsLT5NYXlBZGRXZWlnaHQod2VpZ2h0KSA9PSAtMSkgLy8gUGFzc3QgZXMgbm9jaCByZWluPworICAgICAgIHJldHVybiBNRV9UT09fSEVBVlk7ICAgICAgICAgICAgICAgIC8vIE5laW4sIGVudHNwci4gRmVobGVyIHp1cnVlY2tnZWJlbgorCisgICAgIC4uLgorCitTSUVIRSBBVUNIOgorICAgICBNYXlBZGRPYmplY3QoKSwgUHJldmVudEluc2VydCgpLCBtb3ZlKCksIC9zdGQvY29udGFpbmVyL3Jlc3RyaWN0aW9ucy5jCisKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KK0xhc3QgbW9kaWZpZWQ6IDIzLjA5LjIwMDcsIFplc3N0cmEKZGlmZiAtLWdpdCBhL2RvYy9sZnVuL01lc3NhZ2UgYi9kb2MvbGZ1bi9NZXNzYWdlCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjM2MzVmNmUKLS0tIC9kZXYvbnVsbAorKysgYi9kb2MvbGZ1bi9NZXNzYWdlCkBAIC0wLDAgKzEsMjMgQEAKK01lc3NhZ2UoKQorCitGVU5LVElPTjoKKyAgICAgICAgdmFyYXJncyBpbnQgTWVzc2FnZShzdHJpbmcgc3RyLCBpbnQgZmxhZykKKworQVJHVU1FTlRFOgorICAgICAgICBzdHI6IERlbiB6dSB1ZWJlcm1pdHRlbG5kZW4gVGV4dC4KKwlmbGFnOiBCZXNjaHJlaWJ0IGRpZSBBcnQgZGVyIE1lbGR1bmcgbmFlaGVyLCBzaWVoZQorCSAgICAgIC9zeXMvcGxheWVyL2NvbW0uaAorCitCRVNDSFJFSUJVTkc6CisgICAgICAgIEVpbmVtIFNwaWVsZXIgd2lyZCBkZXIgVGV4dCBzdHIgdWViZXJtaXR0ZWx0LgorCitSVUVDS0dBQkVXRVJUOgorICAgICAgICAxIGJlaSBlcmZvbGdyZWljaGVyIFVlYmVybWl0dGx1bmcKKyAgICAgICAgMCB3ZW5uIGRlciBLb2JvbGQgYWt0aXYgd2FyCisgICAgICAgPDAgd2VubiBTcGllbGVyIG9kZXIgdmVyd2VuZGV0ZXMgVmVyYiBpZ25vcmllcnQKKyAgICAgICAgICB3ZXJkZW4KKworU0lFSEUgQVVDSDoKKyAgICAgUF9JR05PUkUsIFRlc3RJZ25vcmUoKQorCisxMi4gTWFpIDIwMDQgR2xvaW5zb24KZGlmZiAtLWdpdCBhL2RvYy9sZnVuL01vZGlmeVF1ZXN0VGltZSBiL2RvYy9sZnVuL01vZGlmeVF1ZXN0VGltZQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4wMDIwYmFkCi0tLSAvZGV2L251bGwKKysrIGIvZG9jL2xmdW4vTW9kaWZ5UXVlc3RUaW1lCkBAIC0wLDAgKzEsNDQgQEAKK01vZGlmeVF1ZXN0VGltZSgpCisKK0ZVTktUSU9OOgorICAgICAgICBpbnQgTW9kaWZ5UXVlc3RUaW1lKHN0cmluZyBxdWVzdG5hbWUsIGludCB6ZWl0KQorCitERUZJTklFUlQgSU46CisgICAgICAgIC9zdGQvcGxheWVyL3F1ZXN0cy5jCisKK0FSR1VNRU5URToKKyAgICAgICAgcXVlc3RuYW1lCisgICAgICAgICAgUXVlc3RuYW1lLCB3aWUgZXIgaW0gUXVlc3RtYXN0ZXIgZWluZ2V0cmFnZW4gd3VyZGUuCisgICAgICAgIHplaXQKKyAgICAgICAgICBaZWl0cHVua3QsIHp1IGRlbSBkaWUgUXVlc3QgZ2Vsb2VzdCB3dXJkZQorCitSVWVDS0dBQkVXRVJUOgorICAgICAgICAgMSA6IFF1ZXN0emVpdHB1bmt0IGVyZm9sZ3JlaWNoIG5hY2hnZXRyYWdlbgorICAgICAgICAtMSA6IGtlaW5lIFp1Z3JpZmZzcmVjaHRlIChudXIgRU0rIHVuZCBkZXIgVGFnZWJ1Y2htYXN0ZXIgZXJsYXVidCkKKyAgICAgICAgLTIgOiBRdWVzdGxpc3RlIGltIFNwaWVsZXJvYmpla3QgaXN0IHVuZXJ3YXJ0ZXQga2VpbiBNYXBwaW5nCisgICAgICAgIC0zIDogU3BpZWxlciBoYXQgZGllc2UgUXVlc3Qgbm9jaCBuaWNodCBiZXN0YW5kZW4KKyAgICAgICAgLTQgOiBrZWluIGd1ZWx0aWdlciBaZWl0cHVua3QgdWViZXJnZWJlbiAoa2VpbiBJbnRlZ2VyLCBXZXJ0IDwgLTEKKyAgICAgICAgICAgICBvZGVyIFdlcnQgPiB0aW1lKCkpLgorCitCRVNDSFJFSUJVTkc6CisgICAgICAgIE1pdCBkaWVzZXIgRnVua3Rpb24ga2FubiBkZXIgWmVpdHB1bmt0IG5hY2hnZXRyYWdlbiB3ZXJkZW4sIHp1CisgICAgICAgIGRlbSBlaW4gU3BpZWxlciBlaW5lIGJlc3RpbW10ZSBRdWVzdCBiZXJlaXRzIGdlbG9lc3QgaGF0LiAKKyAgICAgICAgQWxzIFF1ZXN0bmFtZSB3aXJkIGRhenUgZGVyIE5hbWUgYW5nZWdlYmVuLCBkZXIgaW0gUXVlc3RtYXN0ZXIgCisgICAgICAgIGVpbmdldHJhZ2VuIGlzdC4gRGVyIFplaXRwdW5rdCBpc3QgYWxzIEludGVnZXItV2VydCBpbSB1ZWJsaWNoZW4KKyAgICAgICAgdGltZSgpLUZvcm1hdCBhbnp1Z2ViZW4uIFVlYmVyZ2lidCBtYW4gLTEgYWxzIDx6ZWl0PiwgZGFubiB3aXJkCisgICAgICAgIGRlciBUYWdlYnVjaG1hc3RlciBlcm5ldXQgdmVyc3VjaGVuLCBkYXMgTG9nZmlsZSBlaW56dWxlc2VuLCAKKyAgICAgICAgd2VubiBkZXIgU3BpZWxlciBkYXMgbmFlY2hzdGUgbWFsIHNlaW4gQWJlbnRldWVydGFnZWJ1Y2ggbGllc3QuCisKK0hJTldFSVM6CisgICAgICAgIERpZSBGdW5rdGlvbiBta3RpbWUoKSBpc3QgbnVldHpsaWNoLCB3ZW5uIGRlciBaZWl0cHVua3QgZGVzIAorICAgICAgICBCZXN0ZWhlbnMgZWluZXIgUXVlc3QgbWFudWVsbCByZWtvbnN0cnVpZXJ0IHdlcmRlbiBtdXNzLCBkZXIKKyAgICAgICAgWmVpdHB1bmt0IGFiZXIgbnVyIGFscyBEYXR1bXMtL1plaXRhbmdhYmUgaW4gVGV4dGZvcm0gdm9ybGllZ3QgCisgICAgICAgIChldHdhIGF1cyBlaW5lbSBMb2dmaWxlIG9kZXIgYXVzIGRlciBRdWVzdC1GZWVkYmFja21haWwpLgorCitTSUVIRSBBVUNIOgorICAgICAgICAvc2VjdXJlL3F1ZXN0bWFzdGVyLmgsIC9vYmovdG9vbHMvcXVlc3R0b29sCisgICAgICAgIEdpdmVRdWVzdChMKQorICAgICAgICBta3RpbWUoRSksIGR0aW1lKFNFKQorCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCitadWxldHp0IGdlYWVuZGVydDogTW9uLCAyNy4gSmFuLiAyMDE1LCBBcmF0aG9ybgpkaWZmIC0tZ2l0IGEvZG9jL2xmdW4vTW9kaWZ5U2tpbGwgYi9kb2MvbGZ1bi9Nb2RpZnlTa2lsbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44ZGQ2MjJmCi0tLSAvZGV2L251bGwKKysrIGIvZG9jL2xmdW4vTW9kaWZ5U2tpbGwKQEAgLTAsMCArMSw3MyBAQAorTW9kaWZ5U2tpbGwoKQorRlVOS1RJT046CisgICAgcHVibGljIHZhcmFyZ3Mgdm9pZCBNb2RpZnlTa2lsbChzdHJpbmcgc25hbWUsIG1peGVkIHZhbCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCBkaWZmLCBzdHJpbmcgZ2lsZGUpCisKK0RFRklOSUVSVCBJTjoKKyAgICAvc3RkL2xpdmluZy9za2lsbHMuYworCitBUkdVTUVOVEU6CisgICAgc3RyaW5nIHNuYW1lICAgICBkZXIgenUgYWVuZGVybmRlIFNraWxsCisgICAgbWl4ZWQgdmFsICAgICAgICBBZW5kZXJ1bmdzd2VydDogaW50IGZ1ZXIgU0lfU0tJTExBQklMSVRZLCBzb25zdCBtYXBwaW5nCisgICAgaW50IGRpZmYgICAgICAgICBTY2h3aWVyaWdrZWl0IChvcHRpb25hbDogZGVmYXVsdCBpc3QgZXhpc3RpZXJlbmRlcyBkaWZmKQorICAgIHN0cmluZyBnaWxkZSAgICAgR2lsZGUgKG9wdGlvbmFsOiBkZWZhdWx0IGlzdCBlaWdlbmUgR2lsZGUpCisKK0JFU0NIUkVJQlVORzoKKyAgICBNaXQgZGVyIE1ldGhvZGUga2FubiBtYW4gZGllIFdlcnRlIGVpbmVzIFNraWxscy9TcGVsbHMgdmVyYWVuZGVybi4gRGFiZWkKKyAgICB3aXJkIGVpbiBTa2lsbCBpbW1lciBpbiBlaW4gTWFwcGluZyB1bWdld2FuZGVsdCAoU2tpbGxzL1NwZWxscyBrb2VubmVuCisgICAgYXVjaCBlaW5mYWNoIG51ciBpaHJlbiBTa2lsbHdlcnQgZW50aGFsdGVuLCBkaWVzZSBpc3QgYWVxdWl2YWxlbnQgenUKKyAgICBlaW5lbSBNYXBwaW5nIG1pdCAoW1NJX1NLSUxMQUJJTElUWTo8U2tpbGx3ZXJ0Pl0pLgorCisgICAgSXN0ICd2YWwnIGVpbiBpbnQsIHdpcmQgZGllc2VzIGFscyBTSV9TS0lMTEFCSUxJVFkgZ2VzZXR6dC4gRmFsbHMgZGVyCisgICAgU2tpbGwgbnVyIGVpbiBpbnQgd2FyLCB3aXJkIGVpbiAnZGlmZichPTAgYWxzIFNJX0RJRkZJQ1VMVFkgZ2VzZXR6dC4KKworICAgIElzdCAndmFsJyBlaW4gTWFwcGluZywgd2lyZCBkaWVzZXMgenVtIFNraWxsbWFwcGluZyBhZGRpZXJ0LgorICAgIAorICAgIEV0d2FpZ2UgU0lfU0tJTExBQklMSVRZLUFlbmRlcnVuZ2VuIGxhdWZlbiBkYW5hY2ggbm9jaCBkdXJjaCBMaW1pdEFiaWxpdHkuCisKK0JFSVNQSUVMRToKKyAgICAvLyAjMWE6IExlcm5lIGVpbmVuIFNwZWxsL1NraWxsIChlaW5lciBHaWxkZSkKKyAgICBjYXN0ZXItPk1vZGlmeVNraWxsKCJmZXVlcmJhbGwiLCBNQVhfQUJJTElUWSwgMTAwLCAiYWJlbnRldXJlciIpCisgICAgLy8gIzFiOiAuLi4gb2RlciAuLi4KKyAgICBjYXN0ZXItPk1vZGlmeVNraWxsKCJmZXVlcmJhbGwiLCAoW1NJX1NLSUxMQUJJTElUWTogTUFYX0FCSUxJVFldKSwgMTAwLAorICAgICAgICAgICAgICAgICAgICAgICAgImFiZW50ZXVyZXIiKQorICAgIC8vICMxYzogLi4uIG9kZXIgZnVlciBlaW5lbiBBYmVudGV1cmVyIC4uLgorICAgIGNhc3Rlci0+TW9kaWZ5U2tpbGwoImZldWVyYmFsbCIsIChbU0lfU0tJTExBQklMSVRZOiBNQVhfQUJJTElUWV0pLCAxMDApOworICAgIAorICAgIC8vICMyOiBTZXR6ZSBlaW5lIFNraWxsLUZ1bmt0aW9uIGZ1ZXIgZWluZW4gS2FtcGZza2lsbCBkZXMgS2xlcnVzCisgICAgdGhpc19wbGF5ZXIoKS0+TW9kaWZ5U2tpbGwoRklHSFQoV1RfQ0xVQiksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKFtTSV9TS0lMTEZVTkM6ICJLZXVsZW5rYW1wZiIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTSV9ESUZGSUNVTFRZOiAxMDBdKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAxMDAsICJrbGVydXMiKTsKKworICAgIC8vICMzOiBTcGVpY2hlcmUgaW0gU2tpbGwgKGFsc28gU3BpZWxlcikgZWluZSBPcHRpb24gZnVlciBkaWVzZW4gU2tpbGwKKyAgICAvLyBWb3J0ZWlsOiBkaWVzZXIgRWludHJhZyB3aXJkIGRlbSBTcGVsbCBpbW1lciB1ZWJlcmdlYmVuCisgICAgY2FzdGVyLT5Nb2RpZnlTa2lsbCgiYmxpdHoiLCAoWyJrbGVydXNfc3BlbGxfb3B0aW9uIjogMl0pKTsKKworICAgIChDb2RlIGluIC9kb2MvYmVpc3BpZWxlL3Rlc3RvYmpla3RlL21vZGlmeXNraWxsc3BlbGxfdGVzdCkKKyAgICAvLyAjNDogTGVybmUgZWluZW4gdW5hYmhhZW5naWdlbiBTcGVsbDogQUNIVFVORworICAgIC8vIGRpZXNlciBTcGVsbCBmdW5rdGlvbmllcnQgbnVyIHNvbGFuZ2UsIHdpZSBkaWUgQ2xvc3VyZSBleGlzdGllcnQsCisgICAgLy8gU0lfU0tJTExBQklMSVRZIHVuZCBTcGVsbCBibGVpYmVuIGplZG9jaCBpbSBTcGllbGVyIGdlc3BlaWNoZXJ0ICghKQorICAgIHRoaXNfcGxheWVyKCktPk1vZGlmeVNraWxsKCJmbnJ4IiwKKyAgICAgIChbU0lfQ0xPU1VSRToKKyAgICAgICAgICBmdW5jdGlvbiBpbnQgKG9iamVjdCBjYXN0ZXIsIHN0cmluZyBza2lsbCwgbWFwcGluZyBzaW5mKSB7CisgICAgICAgICAgICBjYXN0ZXItPkxlYXJuU2tpbGwoImZucngiLCAxKTsKKyAgICAgICAgICAgIHRlbGxfb2JqZWN0KGNhc3RlciwgIlBlbmchIERlaW4gU2tpbGx3ZXJ0IHN0ZWlndCBhdWYgIisKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FzdGVyLT5RdWVyeVNraWxsQWJpbGl0eSgiZm5yeCIpKyIuXG4iKTsKKyAgICAgICAgICAgIHJldHVybiBFUkZPTEc7CisgICAgICAgICAgfSwKKyAgICAgICAgU0lfU0tJTExBQklMSVRZOiA4NDMyXSksCisgICAgICAxMDAsCisgICAgICAiQU5ZIik7CisKK1NJRUhFIEFVQ0g6CisgICAgU2tpbGxzIExlcm5lbjogIExlYXJuU2tpbGwsIExpbWl0QWJpbGl0eQorICAgICogTnV0enVuZzogICAgICBVc2VTcGVsbCwgVXNlU2tpbGwKKyAgICAqIEFiZnJhZ2VuOiAgICAgUXVlcnlTa2lsbCwgUXVlcnlTa2lsbEFiaWxpdHkKKyAgICAqIE1vZGlmaWthdGlvbjogTW9kaWZ5U2tpbGxBdHRyaWJ1dGUsIFF1ZXJ5U2tpbGxBdHRyaWJ1dGUsCisgICAgICAgICAgICAgICAgICAgIFF1ZXJ5U2tpbGxBdHRyaWJ1dGVNb2RpZmllciwgUmVtb3ZlU2tpbGxBdHRyaWJ1dGVNb2RpZmllcgorICAgICAgKiBQcm9wZXJ0aWVzOiBQX1NLSUxMX0FUVFJJQlVURVMsIFBfU0tJTExfQVRUUklCVVRFX09GRlNFVFMKKyAgICAqIHNvbnN0aWc6ICAgICAgc3BydWNoZXJtdWVkdW5nCisgICAgKiBQcm9wZXJ0aWVzOiAgIFBfTkVXU0tJTExTCisKKzMuIE9rdCAyMDExIEdsb2luc29uClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZG9jL2xmdW4vTW9kaWZ5U2tpbGxBdHRyaWJ1dGUgYi9kb2MvbGZ1bi9Nb2RpZnlTa2lsbEF0dHJpYnV0ZQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5lNWIzNjY5Ci0tLSAvZGV2L251bGwKKysrIGIvZG9jL2xmdW4vTW9kaWZ5U2tpbGxBdHRyaWJ1dGUKQEAgLTAsMCArMSwxMDUgQEAKK01vZGlmeVNraWxsQXR0cmlidXRlKCkKK0ZVTktUSU9OOgorICAgIHB1YmxpYyBpbnQgTW9kaWZ5U2tpbGxBdHRyaWJ1dGUoc3RyaW5nIGF0cm5hbWUsIG1peGVkIHZhbHVlLCAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCBkdXJhdGlvbikKKworREVGSU5JRVJUIElOOgorICAgIC9zdGQvbGl2aW5nL3NraWxsX2F0dHJpYnV0ZXMuYworCitBUkdVTUVOVEU6CisgICAgPGF0cm5hbWU+ICAgc3RyaW5nCisgICAgICAgICAgICAgICAgTmFtZSBkZXMgenUgdmVyYWVuZGVybmRlbiBBdHRyaWJ1dGVzCisgICAgICAgICAgICAgICAgKERlZmluaWVydCBpbiAvc3lzL2xpdmluZy9za2lsbF9hdHRyaWJ1dGVzLmgpCisKKyAgICA8dmFsdWU+ICAgICBpbnQgb2RlciBjbG9zdXJlCisgICAgICAgICAgICAgICAgV2VydCBkZXMgTW9kaWZpa2F0b3JzCisgICAgICAgICAgICAgICAgb2RlcgorICAgICAgICAgICAgICAgIGVpbmUgQ2xvc3VyZSwgd2VsY2hlIGJlaSBBYmZyYWdlIGRlcyBiZXRyZWZmZW5kZW4gU0FzCisgICAgICAgICAgICAgICAgYWJnZWZyYWd0IHVtIGRlbiBNb2RpZmlrYXRvciB6dSBiZXN0aW1tZW4uCisKKyAgICA8ZHVyYXRpb24+ICBpbnQKKyAgICAgICAgICAgICAgICBEYXVlciBpbiBTZWt1bmRlbgorCitCRVNDSFJFSUJVTkc6CisgICAgQWVuZGVydCB0ZW1wb3JhZXIsIGQuaC4gZnVlciBlaW5lIGJlc3RpbW10ZSBaZWl0LCBlaW4gU2tpbGwtQXR0cmlidXQKKyAgICBlaW5lcyBMZWJld2VzZW4sIGluZGVtIGVpbiBNb2RpZmlrYXRvciBoaW56dWdlZnVlZ3Qgd2lyZC4KKyAgICAKKyAgICBEZXIgU3RhbmRhcmR3ZXJ0IGVpbmVzIFNBIHdpcmQgdm9uIFBfU0tJTExfQVRUUklCVVRFX09GRlNFVFMgZmVzdGdlbGVndAorICAgIG9kZXIgaXN0IDEwMCwgd2VubiBiZXNhZ3RlIFByb3BlcnR5IGxlZXIgaXN0LgorICAgIEFsbGUgTW9kaWZpa2F0b3JlbiAobmVnYXRpdiB3aWUgcG9zaXRpdikgd2VyZGVuIGFkZGllcnQgdW5kIGJpbGRlbgorICAgIHp1c2FtbWVuIG1pdCBkZW0gU3RhbmRhcmR3ZXJ0IGVpbmUgR2VzYW10c3VtbWUuCisgICAgQmVpIGFsbGVuIFNBcyBhdXNzZXIgU0FfUVVBTElUWSB3aXJkIGRpZXNlIEdlc2FtdHN1bW1lIG5vY2ggbWl0CisgICAgU0FfUVVBTElUWSAod2VsY2hlcyBzaWNoIGRhbWl0IGF1ZiBhbGxlIGFuZGVyZW4gU2tpbGwtQXR0cmlidXRlCisgICAgYXVzd2lya3QpIG11bHRpcGxpemllcnQgdW5kIGRhcyBFcmdlYm5pcyBzdGVsbHQgZGVuIEVuZHdlcnQgZGVzIFNBIGRhci4KKyAgICAoQmVpc3BpZWwgcy51LikKKworICAgIERlciBXZXJ0IGVpbmVzIE1vZGlmaWthdG9ycyBtdXNzIHp3aXNjaGVuIC0xMDAwIHVuZCAxMDAwIGxpZWdlbi4gRGVyCisgICAgR2VzYW10d2VydCBlaW5lcyBTQSBrYW5uIDEwIG5pY2h0IHVudGVyLSB1bmQgMTAwMCBuaWNodCB1ZWJlcnNjaHJlaXRlbi4KKworICAgIEZhbGxlIDx2YWx1ZT4gZWluZSBDbG9zdXJlIGlzdCwgd2lyZCBkaWVzZSBDbG9zdXJlIGplZGVzbWFsCisgICAgYXVzZ2VmdWVocnQsIHdlbm4gZGFzIGVudHNwcmVjaGVuZGUgU0EgYWJnZWZyYWd0IHdpcmQuIERlcgorICAgIFJ1ZWNrZ2FiZXdlcnQgZGllc2VyIENsb3N1cmUgc3RlbGx0IGRhbm4gZGVuIFdlcnQgZGVzIE1vZGlmaWthdG9ycworICAgIGRhci4gQXVjaCBkaWVzZXIgbXVzcyB6d2lzY2hlbiAtMTAwMCB1bmQgMTAwMCBsaWVnZW4uIEdpYnQgZGllCisgICAgQ2xvc3VyZSBrZWluZW4gaW50IHp1cnVlY2ssIHdpcmQgZGVyIE1vZGlmaWthdG9yIGdlbG9lc2NodC4KKworICAgIEd1ZWx0aWdlIFNraWxsLUF0dHJpYnV0ZSBzaW5kIG1vbWVudGFuOgorICAgICogU0FfUVVBTElUWTogICAgQWxsZ2VtZWluZSBRdWFsaXRhZXQ6IHdpcmt0IHNpY2ggYXVmIGFsbGUgYW5kZXJlbgorICAgICAgICAgICAgICAgICAgICAgQXR0cmlidXRlIGF1Y2ggYXVzIChtdWx0cGxpa2F0aXYgYXVmIEJhc2lzIDEwMCkKKyAgICAqIFNBX0RBTUFHRTogICAgIFNjaGFkZW4sIGRlbiBkYXMgTGViZXdlc2VuIG1hY2h0CisgICAgKiBTQV9TUEVFRDogICAgICBHZXNjaHdpbmRpZ2tlaXQgZGVzIExlYmV3ZXNlbnMgKHpCIEFuZ3JpZmZlL1J1bmRlKQorICAgICogU0FfRFVSQVRJT046ICAgU3BlbGwtL1NraWxsZGF1ZXIKKyAgICAqIFNBX0VORU1ZX1NBVkU6IGlkZW50aXNjaCB6dSBTQV9TUEVMTF9QRU5FVFJBVElPTiAoT0JTT0xFVCEpCisgICAgKiBTQV9TUEVMTF9QRU5FVFJBVElPTjogQ2hhbmNlIGRlcyBfQ2FzdGVyc18sIGVpbmVuIFNwZWxsIGR1cmNoIGVpbgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIFBfTk9NQUdJQyBkdXJjaHp1a3JpZWdlbi4KKyAgICAqIFNBX1JBTkdFOiAgICAgIFJlaWNod2VpdGUgZGVzIExlYmV3ZXNlbnMgKGVoZXIgdW5iZW51dHp0KQorICAgICogU0FfRVhURU5TSU9OOiAgIkF1c2RlaG51bmciIGJlaSBHcnVwcGVuLS9GbGFlY2hlbnNwZWxsczogRmluZEdyb3VwTi9QCisKK1JVRUNLR0FCRVdFUlQ6CisgICAgU0FfTU9EX09LICAgICAgICAgICAgICB3ZW5uIGRlciBNb2RpZmlrYXRvciBnZXNldHp0IHd1cmRlCisgICAgU0FfVE9PX01BTllfTU9EUyAgICAgICB3ZW5uIGRpZSBtYXguIEFuemFobCBhbiBNb2RzIHNjaG9uIGVycmVpY2h0IGlzdC4KKyAgICBTQV9NT0RfVE9PX1NNQUxMICAgICAgIHdlbm4gZGVyIE1vZGlmaWthdG9yIHp1IGtsZWluIGlzdCAKKyAgICBTQV9NT0RfVE9PX0JJRyAgICAgICAgIHdlbm4gZGVyIE1vZGlmaWthdG9yIHp1IGdyb3NzIGlzdAorICAgIFNBX01PRF9JTlZBTElEX0FUVFIgICAgd2VubiBkYXMgZ2V3dWVuc2NodGUgU0EgZ2FyIG5pY2h0IGV4aXN0aWVydAorICAgIFNBX01PRF9JTlZBTElEX09CSkVDVCAgd2VubiBkYXMgc2V0emVuZGUgT2JqZWt0IHVuZ3VlbHRpZyBpc3QKKyAgICBTQV9NT0RfSU5WQUxJRF9WQUxVRSAgIHdlbm4gZGVyIE1vZGlmaWthdG9yIHVuZ3VlbHRpZyBpc3QKKyAgICBXZW5uIG1hbiBudXIgd2lzc2VuIHdpbGwsIG9iIGRpZSBPcGVyYXRpb24gZXJmb2xncmVpY2ggd2FyLCBlbXBmaWVobHQKKyAgICBlcyBzaWNoLCBhdWYgPT0gU0FfTU9EX09LIHp1IHBydWVmZW4uCisKK0JFTUVSS1VOR0VOOgorICAgIE5hY2hkZW0gZWluIE9iamVrdCwgd2VsY2hlcyBNb2RpZmlrYXRvcmVuIHNldHp0ZSwgemVyc3RvZXJ0IHd1cmRlLAorICAgIHdlcmRlbiBkaWUgTW9kaWZpa2F0b3JlbiBzcGFldGVzdGVucyB1bmd1ZWx0aWcsIHNvYmFsZCBpbiBkZW0KKyAgICBtYW5pcHVsaWVydGVuIExlYmV3ZXNlbiBlcm5ldXQgTW9kaWZ5U2tpbGxBdHRyaWJ1dGUoKSBnZXJ1ZmVuIHdpcmQhCisgICAgQmVpIENsb3N1cmVzIGlzdCBkZXIgTW9kIHNvZm9ydCB3ZWcuCisKK0JFSVNQSUVMRToKKyAgICAvLyBzZWkgUEwgZWluIFNwaWVsZXIsIGRlbiBtZWluIE5QQyBzY2h3YWVjaGVuIHdpbGw6CisgICAgUEwtPk1vZGlmeVNraWxsQXR0cmlidXRlKFNBX1FVQUxJVFksIC03NSwgMTMpOworICAgIC8vIEZ1ZXIgMTNzIHdpcmQgU0FfUVVBTElUWSB1bSA3NSByZWR1emllcnQuIERpZXMgd2lya3Qgc2ljaCBhdWYgYWxsZQorICAgIC8vIGFuZGVyZW4gU0FzIGF1cyEgKHMuIGRyaXR0ZXMgQmVpc3BpZWwpCisKKyAgICAvLyBzZWkgUEwgZWluIExlYmV3ZXNlbiwgd2VsY2hlbSBpY2ggZnVlciAxMXMgMiBTY2hsYWVnZSBwcm8gS2FtcGZydW5kZQorICAgIC8vIHp1c2FldHpsaWNoIGdlYmVuIG1vZWNodGU6CisgICAgUEwtPk1vZGlmeVNraWxsQXR0cmlidXRlKFNBX1NQRUVELCAyMDAsIDExKTsKKyAgICAvLyB3ZW5uIGtlaW5lIHdlaXRlcmVzIE1vZGlmaWthdG9yZW4gd2lya2VuLCBoYXQgUEwgamV0enQgMyBTY2hsYWVnZQorICAgIC8vIHBybyBLYW1wZnJ1bmRlIChCYXNpc3dlcnQgMTAwICsgMjAwID09IDMwMCA9PiAzKS4KKworICAgIEFuZ2Vub21tZW4sIGVpbiBMZWJld2VzZW4gaGF0IGVpbmVuIEJhc2lzd2VydCB2b24gMTMwIGF1ZiBTQV9TUEVFRCB1bmQKKyAgICAxMDAgYXVmIFNBX1FVQUxJVFkgKFBfU0tJTExfQVRUUklCVVRFX09GRlNFVFMpIHVuZCBudW4gMyBNb2RpZmlrYXRvcmVuCisgICAgZ2VzZXR6dDogU0FfU1BFRUQgKzEwMCwgU0FfU1BFRUQgLTMwIHVuZCBTQV9RVUFMSVRZIHZvbiAtMTA6CisgICAgWnVuYWVjaHN0IHdpcmQgU0FfUVVBTElUWSBiZXN0aW1tdDogMTAwIC0gMTAgPSA5MCAgPT4gMC45CisgICAgQW5zY2hsaWVzc2VuZCB3aXJkIFNBX1NQRUVEIGJlc3RpbW10OiAxMzAgKyAxMDAgLSAzMCA9IDIwMCA9PiAyCisgICAgTnVuIHdpcmQgU0FfU1BFRUQgbm9jaCBtaXQgU0FfUVVBTElUWSBtdWx0aXBsaXppZXJ0OiAyICogMC45ID0gMS44CisgICAgRGFzIExlYmV3ZXNlbiBoYXQgbnVuIGFsc28gaW0gRW5kZWZmZWt0IDEuOCBTY2hsYWVnZSBwcm8gS2FtcGZydW5kZS4KKworICAgIAorU0lFSEUgQVVDSDoKKyAgICBTa2lsbHMgTGVybmVuOiAgTGVhcm5Ta2lsbCwgTW9kaWZ5U2tpbGwsIExpbWl0QWJpbGl0eQorICAgICogTnV0enVuZzogICAgICBVc2VTcGVsbCwgVXNlU2tpbGwKKyAgICAqIEFiZnJhZ2VuOiAgICAgUXVlcnlTa2lsbAorICAgICogTW9kaWZpa2F0aW9uOiBRdWVyeVNraWxsQXR0cmlidXRlLAorICAgICAgICAgICAgICAgICAgICBRdWVyeVNraWxsQXR0cmlidXRlTW9kaWZpZXIsIFJlbW92ZVNraWxsQXR0cmlidXRlTW9kaWZpZXIKKyAgICAgICogUHJvcGVydGllczogUF9TS0lMTF9BVFRSSUJVVEVTLCBQX1NLSUxMX0FUVFJJQlVURV9PRkZTRVRTCisgICAgKiBzb25zdGlnOiAgICAgIHNwcnVjaGVybXVlZHVuZywgc2tpbGxfaW5mb19saXN0ZQorICAgICogUHJvcGVydGllczogICBQX05FV1NLSUxMUworCis1LiBPa3QgMjAxMSBHbG9pbnNvbgpkaWZmIC0tZ2l0IGEvZG9jL2xmdW4vTW9yZSBiL2RvYy9sZnVuL01vcmUKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMmU3M2ZhMgotLS0gL2Rldi9udWxsCisrKyBiL2RvYy9sZnVuL01vcmUKQEAgLTAsMCArMSw1NiBAQAorTW9yZSgpCisKK0ZVTktUSU9OOgorICAgICB2YXJhcmdzIHB1YmxpYyB2b2lkIE1vcmUoc3RyaW5nIHR4dCwgaW50IGZpbGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtaXhlZCBjdHJsLCBtaXhlZCAqY3RybGFyZ3MsIGludCBmbGFncyk7CisKK0RFRklOSUVSVCBJTjoKKyAgICAgL3N0ZC91dGlsL3BhZ2VyLmMKKworQVJHVU1FTlRFOgorICAgICB0eHQgIC0gZW50d2VkZXIgZWluIFRleHQgZGVyIGF1c2dlZ2ViZW4gd2VyZGVuIHNvbGwsIG9kZXIgZWluIGZpbGVuYW1lLgorICAgICBmaWxlIC0gZGFzIGZsYWcgZmlsZSBnaWJ0IGFuLCBvYiBlcyBzaWNoIGJlaSA8dHh0PiB1bSBlaW5lbiB0ZXh0IG9kZXIKKyAgICAgICAgICAgIGVpbmVuIEZpbGVuYW1lbiBoYW5kZWx0LiBCZWkgZWluZW0gRmlsZW5hbWVuIHdpcmQgZGVyIEluaGFsdAorICAgICAgICAgICAgZGllc2VzIEZpbGVzIGVpbmdlbGVzZW4gdW5kIGF1c2dlZ2ViZW4uCisgICAgIGN0cmwgLSBFaW5lIGNsb3N1cmUsIGRpZSBhdWZnZXJ1ZmVuIHdpcmQsIGZhbGxzIGtlaW4gPHR4dD4gYW5nZWdlYmVuCisgICAgICAgICAgICB3dXJkZS4KKyAgICAgY3RybGFyZ3MgLSBjdHJsYXJncyB3aXJkIGFscyBQYXJhbWV0ZXIgYW4gY3RybCB1ZWJlcmdlYmVuLgorICAgICBmbGFncyAtIGZsYWdzIHdpcmQgbWl0IGRlbiBpbSBTcGllbGVyIGRlZmluaWVydGVuIFBfTU9SRV9GTEFHUworICAgICAgICAgICAgIGtvbWJpbmllcnQuCisKK0JFU0NIUkVJQlVORzoKKworICAgICBNb3JlKCkgZGllbnQgZGVyIEF1c2dhYmUgdm9uIFRleHRlbiBhbiBTcGllbGVyLiBNaXQgSGlsZmUgZWluZXMKKyAgICAgUEwtPk1vcmUodHh0KSBvZGVyIFBMLT5Nb3JlKHR4dCwgMSkgaXN0IGVzIHNlaHIgZWluZmFjaCBsYWVuZ2VyZSBUZXh0ZQorICAgICBhbiBTcGllbGVyIGF1c3p1Z2ViZW4uIEJlaSBkZXIgQXVzZ2FiZSB3ZXJkZW4gZGllIHBlcnNvZW5saWNoZW4KKyAgICAgRWluc3RlbGx1bmdlbiBkZXMgU3BpZWxlcm4gKHdpZSB6LmIuIFplaWxlbiBwcm8gQmlsZHNjaGlybXNlaXRlKQorICAgICBhdXRvbWF0aXNjaCBiZXJ1ZWNrc2ljaHRpZ3QgdW5kIGRlciBUZXh0IGRhZHVyY2ggZ2dmLiB6ZXJzdHVlY2tlbHQKKyAgICAgdW5kIGluIG1laHJlcmVuIFNjaHJpdHRlbiBuYWNoZWluYW5kZXIgYW5nZXplaWd0LgorCitSVWVDS0dBQkVXRVJUOgorICAgICBrZWluZXIKKworQkVNRVJLVU5HRU46CisgICAgIEJlaW0gZWlubGVzZW4gZGVzIEZpbGVzIHNpbmQgZGllIExlc2VyZWNodGUgZGVzIFNwaWVsZXIgaW4gZGVtIE1vcmUoKQorICAgICBhdWZnZXJ1ZmVuIHdpcmQgdm9uIEJlZGV1dHVuZyB1bmQgbmljaHQgZGllIFJlY2h0ZSBkZXMgT2JqZWt0ZXMgZGFzCisgICAgIE1vcmUoKSBhdWZydWZ0LiBTcGllbGVyb2JqZWt0ZSBoYWJlbiBpbSBNb3JnZW5HcmF1ZW4gamVkb2NoIG51ciBzZWhyCisgICAgIGVpbmdlc2NocmFlbmt0ZSBMZXNlcmVjaHRlISBBdXNnZWdlYmVuIHdlcmRlbiBrb2VubmVuIG51ciBmaWxlcworICAgICBhdXMgL3AvKiwgL2dpbGRlbi8qIHVuZCAvZC8qIGRpZSBfa2VpbmVuXyBjb2RlIGVudGhhbHRlbi4gQWxzIENvZGUKKyAgICAgd2lyZCBoaWVyYmVpIGplZGVzIEZpbGUgYmV0cmFjaHRldCBkYXMgYWxzIHZvcmxldHp0ZXMgWmVpY2hlbiBlaW5lbiAuCisgICAgIGhhdCAoYWxzbyAuYywgLmgsIC5vIHVzdy4pLgorICAgICBXaWxsIG1hbiBhdXMgaXJnZW5kd2VsY2hlbiBHcnVlbmRlbiBlaW4gRmlsZSAoei5iLiBhdXMgL3BsYXllcnMvKQorICAgICBhdXNnZWJlbiwgc28gc29sbHRlIG1hbiBzdGF0dGRlc3NlbiBmb2xnZW5kZXMgdmVyd2VuZGVuOgorICAgICB0aGlzX3BsYXllcigpLT5Nb3JlKHJlYWRfZmlsZShmaWxlbmFtZSkpCisKK0JFSVNQSUVMRToKKworICAgICAvLyBBdXNnYWJlIGVpbmVzIG5vcm1hbGVuIHRleHRlcy4uLgorICAgICB0aGlzX3BsYXllcigpLT5Nb3JlKCJFaW5mYWNoIG51ciBtYWwgc28gZWluIFRlc3QuLi5cbiIpOworCisgICAgIC8vIEF1c2dhYmUgZWluZXMga29tcGxldHRlbiBmaWxlcworICAgICB0aGlzX3BsYXllcigpLT5Nb3JlKCIvZXRjL1dJWlJVTEVTIiwgMSk7CisKK1NJRUhFIEFVQ0g6CisKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KK0xhc3QgbW9kaWZpZWQ6IE1vbiBGZWIgMjIgMTU6MDk6MTggMTk5OSBieSBQYWRyZWljCmRpZmYgLS1naXQgYS9kb2MvbGZ1bi9OUENfS2lsbGVkX2J5IGIvZG9jL2xmdW4vTlBDX0tpbGxlZF9ieQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4zNzM5MmJhCi0tLSAvZGV2L251bGwKKysrIGIvZG9jL2xmdW4vTlBDX0tpbGxlZF9ieQpAQCAtMCwwICsxLDEzIEBACitGVU5LVElPTjoKKwl2b2lkIE5QQ19LaWxsZWRfQnkob2JqZWN0IHBsKQorCQorQVJHVU1FTlRFOgorCVNwaWVsZXIsIGRlciBlaW5lbiBOUEMgZ2VraWxsdCBoYXQuCisJCitCRVNDSFJFSUJVTkc6CisJV2lyZCBpbiBkZXIgR2lsZGUgZGVzIFNwaWVsZXJzIGF1ZmdlcnVmZW4sCisJd2VubiBkaWVzZXIgZWluZW4gTlBDIGdla2lsbHQgaGF0LgorCQorUlVFQ0tHQUJFV0VSVDoKKwlLZWluZXIKKwkKZGlmZiAtLWdpdCBhL2RvYy9sZnVuL05hbWUgYi9kb2MvbGZ1bi9OYW1lCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjc3NGFjNjgKLS0tIC9kZXYvbnVsbAorKysgYi9kb2MvbGZ1bi9OYW1lCkBAIC0wLDAgKzEsMjggQEAKK05hbWUoKQorCitGVU5LVElPTjoKKyAgICAgdmFyYXJncyBzdHJpbmcgTmFtZShpbnQgY2FzdXMsIGludCBkZW1vbik7CisKK0RFRklOSUVSVCBJTjoKKyAgICAgL3N0ZC90aGluZy9kZXNjcmlwdGlvbi5jCisKK0FSR1VNRU5URToKKyAgICAgY2FzdXMKKyAgICAgICAgICBEZXIgRmFsbCwgaW4gZGVtIGRlciBOYW1lIGRla2xpbmllcnQgd2VyZGVuIHNvbGwuCisgICAgIGRlbW9uCisgICAgICAgICAgR2lidCBhbiwgb2IgZGVyIE5hbWUgbWl0IGJlc3RpbW10ZW0gb2RlciB1bmJlc3RpbW10ZW0gQXJ0aWtlbAorICAgICAgICAgIHZlcnNlaGVuIHdlcmRlbiBzb2xsOgorICAgICAgICAgICAgICsgZGVtb24gPSAwOiBVbmJlc3RpbW10ZXIgQXJ0aWtlbC4KKyAgICAgICAgICAgICArIGRlbW9uID0gMTogQmVzdGltbXRlciBBcnRpa2VsLgorICAgICAgICAgICAgICsgZGVtb24gPSAyOiBGaW5kZSBzZWxic3QgaGVyYXVzLCBvYiBlaW4gYmVzdGltbXRlciBvZGVyIGVpbgorICAgICAgICAgICAgICAgdW5iZXN0aW1tdGVyIEFydGlrZWwgdmVyd2VuZGV0IHdlcmRlbiBzb2xsLgorCitCRVNDSFJFSUJVTkc6CisgICAgIERpZXNlciBGdW5rdGlvbnNhdWZydWYgaXN0IGVpbiBBbGlhcyBmdWVyIAorICAgICBjYXBpdGFsaXplKCBuYW1lKCBjYXN1cywgZGVtb24gKSApCisKK1NJRUhFIEFVQ0g6CisgICAgIG5hbWUoKSwgL3N0ZC90aGluZy9kZXNjcmlwdGlvbi5jCisKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KK0xhc3QgbW9kaWZpZWQ6IFNhdCBBdWcgIDMgMTE6MjQ6MDYgMjAwMiBieSBWYW5pb24KZGlmZiAtLWdpdCBhL2RvYy9sZnVuL05ld0Rvb3IgYi9kb2MvbGZ1bi9OZXdEb29yCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjA5ZjU3OTYKLS0tIC9kZXYvbnVsbAorKysgYi9kb2MvbGZ1bi9OZXdEb29yCkBAIC0wLDAgKzEsMjIzIEBACitGVU5LVElPTjoKKyAgICAgdmFyYXJncyBpbnQgTmV3RG9vcihzdHJpbmd8c3RyaW5nKiBjbWRzLCBzdHJpbmcgZGVzdCwgc3RyaW5nfHN0cmluZyogaWRzLAorICAgICAgICAgICAgICAgICAgICAgICAgIG1hcHBpbmd8PGludHxzdHJpbmd8c3RyaW5nKj4qIHByb3BzKTsKK0RFRklOSUVSVCBJTjoKKyAgICAgL3N0ZC9yb29tL2Rvb3JzLmMKKworQVJHVU1FTlRFOgorICAgICBjbWRzIChzdHJpbmd8c3RyaW5nKikKKyAgICAgICAgICBTdHJpbmcgb2RlciBBcnJheSB2b24gU3RyaW5ncyBtaXQgZGVuIEJlZmVobGVuLCBtaXQgZGVuZW4gbWFuCisgICAgICAgICAgZHVyY2ggZGllIFR1ZXIgZ2VodCAoaW4gZGVyIFJlZ2VsIFJpY2h0dW5nZW4gd2llICJub3JkZW4iKS4KKyAgICAgZGVzdCAoc3RyaW5nKQorICAgICAgICAgIFBmYWQgZGVzIFppZWxyYXVtZXMsIE9ITkUgIi5jIiwgc29uc3Qgd2lyZCBlaW5lIHp3ZWlzZWl0aWdlIFR1ZXIKKyAgICAgICAgICAod2llIHNpZSB1ZWJsaWNoIGlzdCkgbmljaHQgYWxzIHNvbGNoZSBlcmthbm50LgorICAgICBpZHMgKHN0cmluZ3xzdHJpbmcqKQorICAgICAgICAgIFN0cmluZyBvZGVyIEFycmF5IHZvbiBTdHJpbmdzIG1pdCBkZW4gQmV6ZWljaG5lcm4gZGVyIFR1ZXIuIEthbm4KKyAgICAgICAgICBhdWNoIDAgc2VpbjsgaW4gZGllc2VtIEZhbGwgbGFlc3N0IHNpY2ggZGllIFR1ZXIgbnVyIGFscyAidHVlciIKKyAgICAgICAgICBhbnNwcmVjaGVuLgorICAgICBwcm9wcyAobWFwcGluZ3w8aW50fHN0cmluZ3xzdHJpbmcqPiopCisgICAgICAgICAgRGllIEVpZ2Vuc2NoYWZ0ZW4gZGVyIFR1ZXIgKHMudS4pLgorCitCRVNDSFJFSUJVTkc6CisgICAgIEVzIHdpcmQgZWluZSBuZXVlIFR1ZXIgZ2VzY2hhZmZlbi4gRGllIFR1ZXIgbGFlc3N0IHNpY2gsIHdlbm4gc2llCisgICAgIGdlb2VmZm5ldCBpc3QsIG1pdCBkZW4gaW4gPGNtZHM+IGFuZ2VnZWJlbmVuIEJlZmVobGVuIGR1cmNoc2NocmVpdGVuLgorICAgICBNYW4gZ2VsYW5ndCBkYW5uIGluIGRlbiBSYXVtIDxkZXN0Pi4KKworICAgICBEaWUgS29tbWFuZG9zIHdlcmRlbiBiZWkgZ2VvZWZmbmV0ZXIgVHVlciBpbiBkaWUgTGlzdGUgZGVyIHNpY2h0YmFyZW4KKyAgICAgQXVzZ2FlbmdlIGVpbmdlZnVlZ3QuCisKKyAgICAgSW4gPHByb3BzPiBsYXNzZW4gc2ljaCBBdXNzZWhlbiB1bmQgRWlnZW5zY2hhZnRlbiBkZXIgVHVlciBmZXN0bGVnZW4uCisgICAgIEhpc3RvcmlzY2ggaXN0IGVzIGVpbiBBcnJheSBtaXQgUGFhcmVuIHZvbiBTY2hsdWVzc2VsbiB1bmQgV2VydGVuLCBkLmguCisgICAgIGVzIGtvbW10IGltbWVyIGVyc3QgZWluIEVsZW1lbnQsIHdlbGNoZXMgZGllIEVpZ2Vuc2NoYWZ0IGJlemVpY2huZXQgdW5kCisgICAgIGRhbm4gZWluIEVsZW1lbnQgbWl0IGRlbSBXZXJ0IGRpZXNlciBFaWdlbnNjaGFmdC4KKyAgICAgTW9kZXJuZXIgaXN0IGVzLCBlaW4gTWFwcGluZyBtaXQgZGVuIGVudHNwcmVjaGVuZGVuIFNjaGx1ZXNzZWxuIHVuZAorICAgICBXZXJ0ZW4genUgdWViZXJnZWJlbi4gRGllcyBpc3QgYXVjaCBkcmluZ2VuZCBlbXBmb2hsZW4uCisKKyAgICAgSW4gPGRvb3Jyb29tLmg+IHNpbmQgZGF6dSBmb2xnZW5kZSBFaWdlbnNjaGFmdGVuIGRlZmluaWVydDoKKyAgICAgRF9GTEFHUworICAgICAgICAgIERPT1JfT1BFTgorICAgICAgICAgICAgICAgRGllIFR1ZXIgaXN0IGJlaW0gRXJ6ZXVnZW4gZ2VvZWZmbmV0LgorICAgICAgICAgIERPT1JfQ0xPU0VECisgICAgICAgICAgICAgICBEaWUgVHVlciBpc3QgYmVpbSBFcnpldWdlbiBnZXNjaGxvc3Nlbi4KKyAgICAgICAgICBET09SX05FRURLRVkKKyAgICAgICAgICAgICAgIE1hbiBiZW5vZXRpZ3QgZWluZW4gU2NobHVlc3NlbCB6dW0gT2VmZm5lbiBkZXIgVHVlci4KKyAgICAgICAgICBET09SX0NMT1NFS0VZCisgICAgICAgICAgICAgICBNYW4gYmVub2V0aWd0IGVpbmVuIFNjaGx1ZXNzZWwgenVtIFNjaGxpZXNzZW4gZGVyIFR1ZXIuCisgICAgICAgICAgRE9PUl9SRVNFVF9DTAorICAgICAgICAgICAgICAgRGllIFR1ZXIgc2NobGllc3N0IHNpY2ggYmVpbSBSZXNldC4KKyAgICAgICAgICBET09SX1JFU0VUX09QCisgICAgICAgICAgICAgICBEaWUgVHVlciBvZWZmbmV0IHNpY2ggYmVpbSBSZXNldC4KKworICAgICBEX0xPTkcKKyAgICAgICAgICBEaWUgTGFuZ2Jlc2NocmVpYnVuZyBkZXIgVHVlci4gCisgICAgICAgICAgSGllciBrYW5uIGVpbiBNYXBwaW5nIGVpbmdldHJhZ2VuIHdlcmRlbiwgZGFzIGFscyBLZXlzIGRlbiBUdWVyLQorICAgICAgICAgIFN0YXR1cyBoYXQgdW5kIGRpZSB6dWdlaG9lcmlnZSBMYW5nYmVzY2hyZWlidW5nIGRhenUuIEJlaXNwaWVsOgorICAgICAgICAgIChbIERfU1RBVFVTX0NMT1NFRCA6ICJEaWUgVHVlciBpc3QgZ2VzY2hsb3NzZW4uXG4iLAorICAgICAgICAgICAgIERfU1RBVFVTX09QRU4gICA6ICJEaWUgVHVlciBpc3Qgb2ZmZW4uXG4iIF0pCisgICAgICAgICAgCisgICAgICAgICAgRGVmYXVsdDogIkVpbmUgVHVlci5cbiIKKworICAgICBEX1NIT1JUCisgICAgICAgICAgRGllIEt1cnpiZXNjaHJlaWJ1bmcgZGVyIFR1ZXIuIEVpbiAiJXMiIHdpcmQgZHVyY2ggImdlb2VmZm5ldCIKKyAgICAgICAgICBiencuICJnZXNjaGxvc3NlbiIgZXJzZXR6dC4KKworICAgICAgICAgIEVzIHdlcmRlbiBkaWUgS3VyemJlc2NocmVpYnVuZ2VuIGFsbGVyIGltIFJhdW0gdm9yaGFuZGVuZW4gVHVlcmVuCisgICAgICAgICAgYW5laW5hbmRlcmdlaGFlbmd0IChlcyB3aXJkIGpld2VpbHMgZWluIExlZXJ6ZWljaGVuIGVpbmdlc2Nob2JlbiksCisgICAgICAgICAgZGFzIEdhbnplIG1pdCBicmVha19zdHJpbmcoKSB1bWdlYnJvY2hlbiB1bmQgYW4gUF9JTlRfTE9ORworICAgICAgICAgIGFuZ2VoYWVuZ3QuCisKKyAgICAgICAgICBEZWZhdWx0OiAiRWluZSAlc2UgVHVlci4iCisKKyAgICAgRF9OQU1FCisgICAgICAgICAgRGVyIE5hbWUgZGVyIFR1ZXIuIERpZXNlciBOYW1lIHdpcmQgYmVpbSBPZWZmbmVuIHVuZCBTY2hsaWVzc2VuCisgICAgICAgICAgZGVyIFR1ZXIgc293aWUgYmVpIEZlaGxlcm1lbGR1bmdlbiBhdXNnZWdlYmVuLiBNYW4ga2FubiB3aWUgYmVpCisgICAgICAgICAgUF9OQU1FIGVpbmVuIFN0cmluZyBvZGVyIGVpbiBBcnJheSB2b24gU3RyaW5ncyBhbmdlYmVuLgorCisgICAgICAgICAgRGVmYXVsdDogIlR1ZXIiCisKKyAgICAgRF9HRU5ERVIKKyAgICAgICAgICBEYXMgR2VzY2hsZWNodCBkZXIgVHVlci4KKworICAgICAgICAgIERlZmF1bHQ6IEZFTUFMRQorCisgICAgIERfTVNHUworICAgICAgICAgIFN0cmluZyBvZGVyIEFycmF5IHZvbiBkcmVpIFN0cmluZ3MuIERpZXNlIFN0cmluZ3Mgd2VyZGVuIGJlaW0KKyAgICAgICAgICBEdXJjaHNjaHJlaXRlbiBkZXIgVHVlciBhbiBtb3ZlKCkgYWxzIGRpciBiencuIGRpciwgdGV4dG91dCB1bmQKKyAgICAgICAgICB0ZXh0aW4gdWViZXJnZWJlbi4KKworICAgICBEX0ZVTkMKKyAgICAgICAgICBTdHJpbmcgbWl0IGRlbSBOYW1lbiBlaW5lciBGdW5rdGlvbiwgZGllIGltIFN0YXJ0cmF1bSB2b3IgZGVtCisgICAgICAgICAgRHVyY2hzY2hyZWl0ZW4gZGVyIFR1ZXIgYXVmZ2VydWZlbiB3ZXJkZW4gc29sbC4gRGllc2UgRnVua3Rpb24KKyAgICAgICAgICBrYW5uIGRhcyBEdXJjaHNjaHJlaXRlbiBqZWRvY2ggbmljaHQgdmVyaGluZGVybiEKKworICAgICBEX0ZVTkMyCisgICAgICAgICAgU3RyaW5nIG1pdCBkZW0gTmFtZW4gZWluZXIgRnVua3Rpb24sIGRpZSBpbSBaaWVscmF1bSBuYWNoIGRlbQorICAgICAgICAgIER1cmNoc2NocmVpdGVuIGRlciBUdWVyIGF1ZmdlcnVmZW4gd2VyZGVuIHNvbGwuCisKKyAgICAgRF9URVNURlVOQworICAgICAgICAgIEZhbGxzIGF1ZiBkZW4gTmFtZW4gZWluZXIgRnVua3Rpb24gZ2VzZXR6dCwgd2lyZCBkaWVzZSBGdW5rdGlvbgorICAgICAgICAgIHZvciBkZW0gRHVyY2hzY2hyZWl0ZW4gaW0gU3RhcnRyYXVtIGF1ZmdlcnVmZW4uIFdlbm4gc2llIGVpbmVuCisgICAgICAgICAgV2VydCAhPSAwIHp1cnVlY2tsaWVmZXJ0LCB3aXJkIGRpZSBUdWVyIE5JQ0hUIGR1cmNoc2Nocml0dGVuLiAKKworICAgICBEX1JFU0VUX01TRworICAgICAgICAgIE1lbGR1bmcsIGRpZSBiZWltIFJlc2V0IGRlciBUdWVyIGF1c2dlZ2ViZW4gd2lyZC4KKworICAgICBEX09QRU5fV0lUSF9NT1ZFCisgICAgICAgICAgVHVlciBvZWZmbmV0IGF1dG9tYXRpc2NoIGJlaSBFaW5nYWJlIGRlcyBCZWZlaGxzIHp1bSAKKyAgICAgICAgICBIaW5kdXJjaGdlaGVuLgorICAgICAgICAgIAorUlVFQ0tHQUJFV0VSVDoKKyAgICAgMSwgd2VubiBkaWUgVHVlciBvcmR1bmdzZ2VtYWVzcyBlaW5nZWJhdXQgd2VyZGVuIGtvbm50ZSwgc29uc3QgMC4KKworQkVNRVJLVU5HRU46CisgICAgIFp3ZWkgVHVlcnNlaXRlbiBnZWx0ZW4gYWxzIHZlcnNjaGllZGVuZSBTZWl0ZW4gZWluZXIgVHVlciwgd2VubiBhbHMKKyAgICAgWmllbCBpbiBSYXVtIEEgUmF1bSBCIHVuZCBpbiBSYXVtIEIgUmF1bSBBIGFuZ2VnZWJlbiBpc3QuIERlciBadXN0YW5kCisgICAgIHdpcmQgYWJnZWZyYWd0LCB3ZW5uIGRlciBSYXVtIGJldHJldGVuIHdpcmQgKGluaXQpLCB3ZW5uIGRpZSBUdWVyCisgICAgIGdlb2VmZm5ldC9nZXNjaGxvc3NlbiB3aXJkLCBQX0lOVF9MT05HIG9kZXIgUF9FWElUUyBhYmdlZnJhZ3Qgd2lyZAorICAgICB1bmQgYmVpbSBSZXNldC4KKworICAgICBFcyBzaW5kIGF1Y2ggVHVlcmVuIG1vZWdsaWNoLCBkaWUgbnVyIGF1ZiBlaW5lciBTZWl0ZSBleGlzdGllcmVuLCBvZGVyCisgICAgIGF1Y2ggc29sY2hlLCBkaWUgYXVmIGJlaWRlbiBTZWl0ZW4gdmVyc2NoaWVkZW4gYXVzc2VoZW4gb2RlciBnYXIgYXVmCisgICAgIGVpbmVyIFNlaXRlIG51ciBtaXQgZWluZW0gU2NobHVlc3NlbCB6dSBvZWZmbmVuIHNpbmQsIGF1ZiBkZXIgYW5kZXJlbgorICAgICBqZWRvY2gga2VpbiBTY2hsdWVzc2VsIG5vZXRpZyBpc3QuCisKKyAgICAgV2VyIGF1cyBpcmdlbmRlaW5lbSBHcnVuZCBkZW4gWnVzdGFuZCBlaW5lciBUdWVyIHNlbGJlciBhYmZyYWdlbiBvZGVyCisgICAgIHZlcmFlbmRlcm4gd2lsbCwga2FubiBkYWZ1ZXIgaW4gL29iai9kb29ybWFzdGVyIGRpZSBGdW5rdGlvbmVuCisgICAgIFF1ZXJ5RG9vclN0YXR1cyh6aWVsKSBiencuIFNldERvb3JTdGF0dXMoemllbCxzdGF0dXMpIGF1ZnJ1ZmVuLgorCisgICAgICoqKiBBQ0hUVU5HICoqKgorICAgICBFcyBnaWJ0IGVpbmUgUXVlc3RiZWxvaG51bmcgKFBoaW9sZSBhdXMgZGVyIFN0ZXJuZW5saWNodC1RdWVzdCB2b24KKyAgICAgTWlyaWwpLCBtaXQgZGVyIG1hbiBkdXJjaCBUdWVyZW4gaGluZHVyY2hzY2hhdWVuIGthbm4uIERlcnplaXQgaXN0IGRhcworICAgICBwZXIgZGVmYXVsdCBmdWVyIGFsbGUgVHVlcmVuIGVybGF1YnQuIFdlbm4gbWFuIGRhcyBuaWNodCBtb2VjaHRlLAorICAgICBvZGVyIGFuZGVyZSBUZXh0ZSBhdXNnZWJlbiwgYWxzIGRpZSBQaGlvbGUgbm9ybWFsZXJ3ZWlzZSBlcnpldWd0LAorICAgICBkYW5uIGthbm4gbWFuIGRpZXMgZHVyY2ggTnV0enVuZyBiZXN0aW1tdGVyIEZ1bmt0aW9uZW4gYnp3LiBGbGFncworICAgICBlcnJlaWNoZW4uIFp1ciBEb2t1bWVudGF0aW9uIHNpZWhlIE1hbnBhZ2UgenUgR2V0UGhpb2xlbkluZm9zKCkuCisKK0JFSVNQSUVMRToKKworICAqKiBEaWVzIGlzdCBlaW5lIGdld29laG5saWNoZSBUdWVyIG9obmUgQmVzb25kZXJoZWl0ZW4gdW5kIG9obmUKKyAgICAgRXh0cmEtQmVzY2hyZWlidW5nOgorCisgICAgIE5ld0Rvb3IoInN1ZWRlbiIsIi9wbGF5ZXJzL3JvY2h1cy9yb29tL3Rlc3QxIik7CisKKyAgKiogRWluIFBvcnRhbDoKKworICAgICBOZXdEb29yKCJub3JkZW4iLCIvcGxheWVycy9yb2NodXMvcm9vbS90ZXN0MiIsCisgICAgICAgICAgICAgInBvcnRhbCIsCisgICAgICAgICAgICAgKFsgRF9OQU1FOiAgICJQb3J0YWwiLAorICAgICAgICAgICAgICAgIERfR0VOREVSOiBORVVURVIsCisgICAgICAgICAgICAgICAgRF9TSE9SVDogICJJbSBOb3JkZW4gc2llaHN0IER1IGVpbiAlc2VzIFBvcnRhbC4iLAorICAgICAgICAgICAgICAgIERfTE9ORzogICAiRGFzIFBvcnRhbCBpc3QgZWluZmFjaCBudXIgZ2lnYW50aXNjaC5cbiIsCisgICAgICAgICAgICAgIF0pICk7CisKKyAgICAgQWx0ZXJuYXRpdiBtaXQgcHJvcHMgaW4gYWx0ZXIgQXJyYXlub3RhdGlvbjoKKyAgICAgTmV3RG9vcigibm9yZGVuIiwiL3BsYXllcnMvcm9jaHVzL3Jvb20vdGVzdDIiLAorICAgICAgICAgICAgICJwb3J0YWwiLAorICAgICAgICAgICAgICh7IERfTkFNRSwgICAiUG9ydGFsIiwKKyAgICAgICAgICAgICAgICBEX0dFTkRFUiwgTkVVVEVSLAorICAgICAgICAgICAgICAgIERfU0hPUlQsICAiSW0gTm9yZGVuIHNpZWhzdCBEdSBlaW4gJXNlcyBQb3J0YWwuIiwKKyAgICAgICAgICAgICAgICBEX0xPTkcsICAgIkRhcyBQb3J0YWwgaXN0IGVpbmZhY2ggbnVyIGdpZ2FudGlzY2guXG4iCisgICAgICAgICAgICAgIH0pICk7CisgICAgIAorICAqKiBUdWVyZW4gbWl0IEJld2VndW5nc21lbGR1bmc6CisKKyAgICAgTmV3RG9vcigibm9yZGVuIiwiL3Jvb20vc2VlMiIsCisgICAgICAgICAgICAgKHsgRF9NU0dTLCAgKHsibmFjaCBOb3JkZW4iLCJzY2h3aW1tdCIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAia29tbXQgaGVyZWluZ2VzY2h3b21tZW4ifSkgfSkgKTsKKworICAqKiBFaW5lIFR1ZXIgbWl0IFRlc3RmdW5rdGlvbjoKKworICAgICBOZXdEb29yKCJvc3RlbiIsIi9tZWluL3ppZWxyYXVtIiwKKyAgICAgICAgICAgICAoeyBEX1RFU1RGVU5DLCAiYmxvY2tlcl9kYSIgfSkgKTsKKworICAgICBEaWUgRnVua3Rpb24gYmxvY2tlcl9kYToKKworICAgICBpbnQgYmxvY2tlcl9kYSgpICAgICAgLy8gS0VJTkUgcHJvdGVjdGVkLUZ1bmt0aW9uISBTaWUgd2lyZCBzb25zdCBOSUNIVAorICAgICB7ICAgICAgICAgICAgICAgICAgICAgLy8gYXVmZ2VydWZlbiB1bmQgYXVzZ2V3ZXJ0ZXQhCisgICAgICAgaWYgKCBwcmVzZW50KCJtZWluX2ZpZXNlc19tb1xuc3RlciIsdGhpc19vYmplY3QoKSkgKQorICAgICAgICB7CisgICAgICAgICB3cml0ZSgiRWluIGZpZXNlcyBNb25zdGVyIHN0ZWxsdCBzaWNoIERpciBpbiBkZW4gV2VnLlxuIik7CisgICAgICAgICByZXR1cm4gMTsKKyAgICAgICAgfQorICAgICAgIHJldHVybiAwOyAgICAgICAgICAgLy8gb3B0aW9uYWwKKyAgICAgfQorCisgICoqIE51biBub2NoIGVpbmUgVHVlciBtaXQgZWluaWdlbiBFeHRyYXM6CisKKyAgICAgTmV3RG9vcigibm9yZHdlc3RlbiIsIi9yb29tcy9rYW1tZXIiLAorICAgICAgICAgICAgICh7InR1ZXIiLCJob2x6dHVlciJ9KSwKKyAgICAgICAgICAgICAoeworICAgICAgICAgICAgICAgRF9GTEFHUywgIChET09SX0NMT1NFRHxET09SX1JFU0VUX0NMKSwKKyAgICAgICAgICAgICAgIERfTVNHUywgICAoeyJuYWNoIE5vcmR3ZXN0ZW4iLCJnZWh0IiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAia29tbXQgZHVyY2ggZWluZSBUdWVyIGhlcmVpbiJ9KSwKKyAgICAgICAgICAgICAgIERfU0hPUlQsICAiSW0gTm9yZHdlc3RlbiBzaWVoc3QgRHUgZWluZSAlc2UgSG9senR1ZXIuIiwKKyAgICAgICAgICAgICAgIERfTE9ORywgICAiU2llIHRyZW5udCBkZW4gTGFkZW4gdm9tIGRhaGludGVybGllZ2VuZGVuIFJhdW0uXG4iLAorICAgICAgICAgICAgICAgRF9OQU1FLCAgICJIb2x6dHVlciIsCisgICAgICAgICAgICAgICBEX0ZVTkMsICAgInZpZXciLAorICAgICAgICAgICAgICAgRF9GVU5DMiwgICJsb29rX3VwIgorICAgICAgICAgICAgIH0pICk7CisKKyAgICAgSW0gU3RhcnRyYXVtOgorCisgICAgIHZvaWQgdmlldygpCisgICAgIHsKKyAgICAgICB3cml0ZSgiRGVyIEFuZ2VzdGVsbHRlIHdpcmZ0IERpciBlaW5lbiBtaXNzYmlsbGlnZW5kZW4gQmxpY2sgenUsICIKKyAgICAgICAgICAgICAibGFlc3N0IERpY2ggYWJlciBwYXNzaWVyZW4uXG4iKTsKKyAgICAgfQorCisgICAgIEltIFppZWxyYXVtOgorCisgICAgIHZvaWQgbG9va191cCgpCisgICAgIHsKKyAgICAgICB3cml0ZSgiRWluIGFsdGVyIE1hbm4gc2NoYXV0IGt1cnogenUgRGlyIGF1ZiB1bmQgdmVydGllZnQgc2ljaCBkYW5uICIKKyAgICAgICAgICAgICAid2llZGVyIGluIHNlaW5lIEFrdGVuLlxuIik7CisgICAgIH0KKworCitTSUVIRSBBVUNIOgorICAgIFF1ZXJ5RG9vcktleSgpLCBRdWVyeURvb3JTdGF0dXMoKSwgU2V0RG9vclN0YXR1cygpLAorICAgIC9zdGQvcm9vbS9kb29ycy5jLCAvb2JqL2Rvb3JtYXN0ZXIuYywgR2V0UGhpb2xlbkluZm9zKCksIFF1ZXJ5QWxsRG9vcnMoKQorCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorMDguMDIuMjAxNSwgQXJhdGhvcm4KKwpkaWZmIC0tZ2l0IGEvZG9jL2xmdW4vTm9QYXJhT2JqZWN0cyBiL2RvYy9sZnVuL05vUGFyYU9iamVjdHMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uODA0ZTdiNwotLS0gL2Rldi9udWxsCisrKyBiL2RvYy9sZnVuL05vUGFyYU9iamVjdHMKQEAgLTAsMCArMSwyOCBAQAorKioqKioqKioqKioqKioqKioqKioqKiBWRVJBTFRFVEUgTEZVTiAqKioqKioqKioqKioqKioqKioqKioqKioqKioqCitOb1BhcmFPYmplY3RzKCkKKworRlVOS1RJT046CisJaW50IE5vUGFyYU9iamVjdHMoKQorCitERUZJTklFUlQgSU46CisJL3N0ZC92aXJ0dWFsL3ZfY29tcGlsZXIuYworCitSVWVDS0dBQkVXRVJUOgorICAgIDEsIHdlbm4gZGVyIFZDIGtlaW5lIFBhcmF3ZWx0LU9iamVrdGUgZXJ6ZXVndCwKKyAgICAwLCB3ZW5uIGVyIGVzIGRvY2ggdHV0LgorCitCRVNDSFJFSUJVTkc6CisgICAgRGllc2UgRnVua3Rpb24gaXN0IHZlcmFsdGV0LiBRdWVyeVZhbGlkT2JqZWN0KCkgaXN0IGdlbmVyZWxsZXIgdW5kCisgICAgZWluZmFjaGVyIHp1IGhhbmRoYWJlbi4gQml0dGUgaW4gWnVrdW5mdCBQX1BBUkEgaW0gVkMgc2V0emVuLCBzaWVoZSBoaWVyenUKKyAgICBkaWUgTWFucGFnZSB2b24gUXVlcnlWYWxpZE9iamVjdCgpLgorCisgICAgRGllIEZ1bmt0aW9uIGdpYnQgYW4sIG9iIGVpbiBWaXJ0dWFsIENvbXBpbGVyIGF1Y2ggUGFyYXdlbHQtT2JqZWt0ZQorICAgIGVyemV1Z2VuIGthbm4uCisgICAgV2ljaHRpZzogRW50d2VkZXIgZGllc2VyIEZ1bmt0aW9uIGltIFZDIGRlZmluaWVyZW4sIHdlbm4gZGVyIFZDIGtlaW5lCisgICAgUGFyYS1PYmpla3RlIGVyemV1Z2VuIHdpcmQgb2RlciBQX1BBUkEgcGFzc2VuZCBzZXR6ZW4hCisKK1NJRUhFIEFVQ0g6CisJdmlydHVhbF9jb21waWxlciwgUF9QQVJBLCBRdWVyeVZhbGlkT2JqZWN0CisKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKzA0LjAzLjIwMDcsIFplc3N0cmEKZGlmZiAtLWdpdCBhL2RvYy9sZnVuL05vdGlmeURlc3RydWN0IGIvZG9jL2xmdW4vTm90aWZ5RGVzdHJ1Y3QKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNDhlNzFlZQotLS0gL2Rldi9udWxsCisrKyBiL2RvYy9sZnVuL05vdGlmeURlc3RydWN0CkBAIC0wLDAgKzEsNDcgQEAKK05vdGlmeURlc3RydWN0KCkKKworRlVOS1RJT046CisgICAgIHB1YmxpYyBpbnR8c3RyaW5nIE5vdGlmeVJlbW92ZShvYmplY3QgemVyc3RvZXJlcik7CisKK0FSR1VNRU5URToKKyAgICAgemVyc3RvZXJlcgorICAgICAgICAgIERhcyBPYmpla3QsIHdlbGNoZXMgZGVzdHJ1Y3QoKSBhdWYgZGllc2VzIE9iamVrdCBhbndlbmRldC4KKworQkVTQ0hSRUlCVU5HOgorICAgICBEaWVzZSBGdW5rdGlvbiB3aXJkIHZvbSBNYXN0ZXIgZGVyIE11ZGxpYiBpbiBqZWRlbSBPYmpla3QgZ2VydWZlbiwKKyAgICAgd2VsY2hlcyB6ZXJzdG9lcnQgd2lyZCwgdW0gT2JqZWt0ZW4gZWluZSBsZXR6dGUgQ2hhbmNlIHp1IGdlYmVuLCBzaWNoCisgICAgIGF1Znp1cmFldW1lbi4KKyAgICAgV2VubiBpaHIgZGllc2UgRnVua3Rpb24gc2VsYmVyIGRlZmluaWVydCwgYWNodGV0IGJpdHRldCBkYXJhdWYsIGRhc3Mgc2llCisgICAgIGluIGtlaW5lbSBGYWxsIEZlaGxlciBhdXNsb2VzZW4gc29sbHRlLCBkLmguIHRlc3RldCBlbnRzcHJlY2hlbmQKKyAgICAgZ3J1ZW5kbGljaC4KKyAgICAgV2VubiBpaHIgYXVzIC9zdGQvIGVyYnQgdW5kIGRpZXNlIEZ1bmt0aW9uIHVlYmVyc2NocmVpYnQsLCBfbXVlc3N0XyBpaHIKKyAgICAgZGllIGdlZXJidGUgTm90aWZ5RGVzdHJ1Y3QoKSBhdWZydWZlbiwgZGEgc29uc3QgZGFzIExpY2h0c3lzdGVtIG5pY2h0CisgICAgIGFrdHVhbGlzaWVydCB3aXJkLgorCisgICAgIFByaXZpbGVnaWVydGUgT2JqZWt0ZSAoei5CLiBSb290LU9iamVrdGUsIHNwZXppZWxsZSBBdXNuYWhtZW4gd2llIGRlcgorICAgICBOZXR6dG90ZW5yYXVtLCBBcm1hZ2VkZG9uKSBrb2VubmVuIGRpZSBaZXJzdG9lcnVuZyBpbiBsZXR6dGVyIFNla3VuZGUKKyAgICAgdmVyaGluZGVybiwgaW5kZW0gc2llIGhpZXIgZWluZW4gV2VydCAhPSAwIHp1cnVlY2tsaWVmZXJuLiBXaXJkIGVpbgorICAgICBzdHJpbmcgenVydWVja2dlbGllZmVydCwgd2lyZCBkaWVzZXIgZGllIEZlaGxlcm1lbGR1bmcgZGVzCisgICAgIHByZXBhcmVfZGVzdHJ1Y3QoKSBpbSBNYXN0ZXIgc2Vpbi4KKyAgICAgQmVpIG5pY2h0LXByaXZpbGVnaWVydGVuIE9iamVrdGVuIChhbHNvIGZhc3QgYWxsZSkgaXN0IGFuIGRpZXNlciBTdGVsbGUKKyAgICAgX2tlaW5fIEFiYnJ1Y2ggZGVyIFplcnN0b2VydW5nIG1vZWdsaWNoIQorCitSVWVDS0dBQkVXRVJUOgorICAgICBEZXIgUnVlY2tnYWJld2VydCBtdXNzIGVpbiBzdHJpbmcgb2RlciBlaW4gaW50IHNlaW4uIEFsbGVyZGluZ3Mgd2lyZCBkZXIKKyAgICAgTWFzdGVyIGRlbiBSdWVja2dhYmV3ZXJ0IG51ciBmdWVyIHByaXZpbGVnaWVydGUgT2JqZWt0ZSBhdXN3ZXJ0ZW4uCisKK0JFTUVSS1VOR0VOOgorICAgICBXaWUgZ2VzYWd0LCBiaXR0ZSBrZWluZSBGZWhsZXIgYXVzbG9lc2VuIChhdWNoIHdlbm4gZGVyIE1hc3RlcgorICAgICBncnVuZHNhZXR6bGljaCBkYW1pdCBrbGFyIGtvbW10KS4gU3BlemllbGwgaXN0IGVpbiByYWlzZV9lcnJvcigpIHp1cgorICAgICBWZXJoaW5kZXJ1bmcgZWluZXMgZGVzdHJ1Y3RzIG51dHpsb3MuCisgICAgIEJpdHRlIG1hY2h0IGluIGRpZXNlciBGdW5raW9uIG51ciBkYXMsIHdhcyBfdW5iZWRpbmd0XyBub3R3ZW5kaWcgaXN0LgorICAgICBXZW5uIGplbWFuZCBlaW4gZGVzdHJ1Y3QoKSBhbndlbmRldCBzdGF0dCBlaW4gcmVtb3ZlKCkgenUgcnVmZW4sIGhhdCBkYXMKKyAgICAgaW4gZGVyIFJlZ2VsIGVpbmVuIEdydW5kICh6LkIuIHVtIGJ1Z2dlbmRlIHJlbW92ZSgpIHp1IHVtZ2VoZW4pLiBJbnNiLgorICAgICBpc3QgZWluIHNhdmVfb2JqZWN0KCkgaW4gcmVtb3ZlKCkgdW5kIE5vdGlmeURlc3RydWN0KCkgdm9sbHN0YWVuZGlnCisgICAgIHVlYmVyZmx1ZXNzaWcuCisKK1NJRUhFIEFVQ0g6CisgICAgTm90aWZ5TGVhdmUoKSwgTm90aWZ5SW5zZXJ0KCksIE5vdGlmeVJlbW92ZSgpCisKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KK0xhc3QgbW9kaWZpZWQ6IDI1LjAyLjIwMDksIFplc3N0cmEKZGlmZiAtLWdpdCBhL2RvYy9sZnVuL05vdGlmeUluc2VydCBiL2RvYy9sZnVuL05vdGlmeUluc2VydApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5hYTJjNmVjCi0tLSAvZGV2L251bGwKKysrIGIvZG9jL2xmdW4vTm90aWZ5SW5zZXJ0CkBAIC0wLDAgKzEsMjggQEAKK05vdGlmeUluc2VydCgpCisKK0ZVTktUSU9OOgorICAgICB2b2lkIE5vdGlmeUluc2VydChvYmplY3Qgb2IsIG9iamVjdCBvbGRlbnYpOworCitBUkdVTUVOVEU6CisgICAgIG9iCisgICAgICAgICAgRGFzIE9iamVrdCwgZGFzIGluIGRlbiBCZWhhZWx0ZXIgZWluZ2VmdWVndCB3dXJkZS4KKyAgICAgb2xkZW52CisgICAgICAgICAgRGFzIE9iamVrdCwgYXVzIGRlbSA8b2I+IGthbS4KKworQkVTQ0hSRUlCVU5HOgorICAgICBEaWVzZSBGdW5rdGlvbiB3aXJkIGltIEJlaGFlbHRlciBhdWZnZXJ1ZmVuLCBuYWNoZGVtIGVpbiBPYmpla3QgaW4KKyAgICAgYmVzYWd0ZW4gQmVoYWVsdGVyIGhpbmVpbiBiZXdlZ3Qgd3VyZGUuIAorCitSVWVDS0dBQkVXRVJUOgorICAgICBrZWluZXIKKworQkVNRVJLVU5HRU46CisgICAgIERpZXNlIEZ1bmt0aW9uIHdpcmQgbnVyIGltIEZhbGxlIHVuYmVsZWJ0ZXIgT2JqZWt0ZSBnZXJ1ZmVuLiBGdWVyIAorICAgICBMZWJld2VzZW4gcy4gYml0dGUuIGluaXQoKS4KKworU0lFSEUgQVVDSDoKKyAgICBOb3RpZnlMZWF2ZSgpLCBQcmV2ZW50SW5zZXJ0KCksIFByZXZlbnRMZWF2ZSgpLCBtb3ZlKCksIE5vdGlmeVJlbW92ZSgpCisgICAgZXhpdCgpLCBpbml0KCksIE5vdGlmeU1vdmUoKSwgUHJldmVudE1vdmUoKQorCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCitMYXN0IG1vZGlmaWVkOiAyMS4wNS4yMDEyLCBaZXNzdHJhCmRpZmYgLS1naXQgYS9kb2MvbGZ1bi9Ob3RpZnlMZWF2ZSBiL2RvYy9sZnVuL05vdGlmeUxlYXZlCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjYyMWZjYTgKLS0tIC9kZXYvbnVsbAorKysgYi9kb2MvbGZ1bi9Ob3RpZnlMZWF2ZQpAQCAtMCwwICsxLDI4IEBACitOb3RpZnlMZWF2ZSgpCisKK0ZVTktUSU9OOgorICAgICB2b2lkIE5vdGlmeUxlYXZlKG9iamVjdCBvYiwgb2JqZWN0IGRlc3QpOworCitBUkdVTUVOVEU6CisgICAgIG9iCisgICAgICAgICAgRGFzIE9iamVrdCwgZGFzIGF1cyBkZW0gQmVoYWVsdGVyIGVudGZlcm50IHd1cmRlLgorICAgICBkZXN0CisgICAgICAgICAgRGFzIE9iamVrdCwgaW4gZGFzIDxvYj4gYmV3ZWd0IHd1cmRlLgorCitCRVNDSFJFSUJVTkc6CisgICAgIERpZXNlIEZ1bmt0aW9uIHdpcmQgaW0gQmVoYWVsdGVyIGF1ZmdlcnVmZW4sIG5hY2hkZW0gZWluIE9iamVrdCBhdXMKKyAgICAgYmVzYWd0ZW4gQmVoYWVsdGVyIGVudGZlcm50IHd1cmRlLgorCitSVWVDS0dBQkVXRVJUOgorICAgICBrZWluZXIKKworQkVNRVJLVU5HRU46CisgICAgIERpZXNlIEZ1bmt0aW9uIHdpcmQgbnVyIGltIEZhbGxlIHVuYmVsZWJ0ZXIgT2JqZWt0ZSBnZXJ1ZmVuLiBGdWVyCisgICAgIExlYmV3ZXNlbiBzLiBiaXR0ZS4gZXhpdCgpLgorCitTSUVIRSBBVUNIOgorICAgIE5vdGlmeVJlbW92ZSgpLCBOb3RpZnlJbnNlcnQoKSwgUHJldmVudEluc2VydCgpLCBQcmV2ZW50TGVhdmUoKSwgbW92ZSgpLAorICAgIGV4aXQoKSwgaW5pdCgpLCBOb3RpZnlNb3ZlKCksIFByZXZlbnRNb3ZlKCkKKworLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorTGFzdCBtb2RpZmllZDogMjEuMDUuMjAxMiwgWmVzc3RyYQpkaWZmIC0tZ2l0IGEvZG9jL2xmdW4vTm90aWZ5TW92ZSBiL2RvYy9sZnVuL05vdGlmeU1vdmUKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOWZlMTg2MQotLS0gL2Rldi9udWxsCisrKyBiL2RvYy9sZnVuL05vdGlmeU1vdmUKQEAgLTAsMCArMSw1OCBAQAorCitGVU5LVElPTjoKKyAgICAgcHJvdGVjdGVkIHZvaWQgTm90aWZ5TW92ZShvYmplY3QgZGVzdCwgb2JqZWN0IG9sZGVudiwgaW50IG1ldGhvZCk7CisKK0RFRklOSUVSVCBJTjoKKyAgICAgL3N0ZC90aGluZy9tb3ZpbmcuYworICAgICAvc3RkL2xpdmluZy9tb3ZpbmcuYworICAgICAvc3RkL3BsYXllci9tb3ZpbmcuYworCitBUkdVTUVOVEU6CisgICAgIGRlc3QKKyAgICAgICAgICBEYXMgWmllbCBkZXMgTW92ZXMgYnp3LiBkYXMgamV0enQgYWt0dWVsbGUgRW52aXJvbm1lbnQKKyAgICAgb2xkZW52CisgICAgICAgICAgRGFzIGFsdGUgRW52aXJvbm1lbnQgZGVzIE9iamVrdHMKKyAgICAgbWV0aG9kCisgICAgICAgICAgRGllIE1vdmUtTWV0aG9kZShuKSwgbWl0IGRlci9kZW5lbiBiZXdlZ3Qgd3VyZGUuCisKK0JFU0NIUkVJQlVORzoKKyAgICAgRGllc2UgRnVua3Rpb24gd2lyZCB2b20gbW92ZSgpIGltIE9iamVrdCBnZXJ1ZmVuLCBzb2JhbGQgZGllIEJld2VndW5nIGltCisgICAgIHdlc2VudGxpY2hlbiBhYmdlc2NobG9zc2VuIGlzdC4gU2llIHNvbGwgZWluZXJzZWl0cyBkYXMgT2JqZWt0IHVlYmVyIGVpbmUKKyAgICAgc3RhdHRnZWZ1bmRlbmUgQmV3ZWd1bmcgaW5mb3JtaWVyZW4sIGFiZXIgYXVjaCBlaW5pZ2UgRGluZ2UgZXJsZWRpZ2VuLAorICAgICBkaWUgYmVpIGRlciBCZXdlZ3VuZyBzdGF0dGZpbmRlbiBtdWVzc2VuIChiZWkgTGl2aW5ncyB6LkIuIGRhcyBUZWFtCisgICAgIG5hY2hob2xlbikuCisKK1JVZUNLR0FCRVdFUlQ6CisgICAgIGtlaW5lcgorCitCRU1FUktVTkdFTjoKKyAgICAgRGllc2UgRnVua3Rpb24ga2FubiB1ZWJlcnNjaHJpZWJlbiB3ZXJkZW4sIGRhbWl0IGRhcyBPYmpla3QgQmV3ZWd1bmdlbgorICAgICBtaXRnZWtvbW10LCBvaG5lIGRhcyBtb3ZlKCkgc2VsYmVyIHp1IHVlYmVyc2NocmVpYmVuIG9kZXIgZWluZW4gTW92ZS1Ib29rCisgICAgIHp1IHNldHplbi4gRGFiZWkgYWJlciBiaXR0ZSB1bmJlZGluZ3QgYmVhY2h0ZW46CisgICAgIERhcyBnZWVyYnRlIE5vdGlmeU1vdmUoKSBfTVVTUyBJTiBKRURFTSBGQUxMXyBtaXQgYXVmZ2VydWZlbiB3ZXJkZW4hCisgICAgIFNvbGx0ZXQgaWhyIGRhcyB2ZXJnZXNzZW4sIHdlcmRlbiBldXJlIE9iamVrdGUgYnVnZ2VuLiA7LSkKKyAgICAgRGllIEZ1bmt0aW9uIGRhcmYgbnVyIG9iamVrdGludGVybiB2ZXJ3ZW5kZXQgd2VyZGVuLiBCZWltIFVlYmVyc2NocmVpYmVuCisgICAgIGRhcyAncHJvdGVjdGVkJyBuaWNodCB2ZXJnZXNzZW4hCisKK0JFSVNQSUVMRToKKyAgICAgRWluZSBCb21iZSwgZGllIGluIFNlaGVyaGF1c3RydWhlbiBleHBsb2RpZXJ0OgorCisgICAgIHByb3RlY3RlZCB2b2lkIE5vdGlmeU1vdmUob2JqZWN0IGRlc3QsIG9iamVjdCBvbGRlbnYsIGludCBtZXRob2QpIHsKKyAgICAgICAgIDo6Tm90aWZ5TW92ZShkZXN0LCBvbGRlbnYsIG1ldGhvZCk7IC8vIFdJQ0hUSUchCisgICAgICAgICBpZiAob2JqZWN0cChkZXN0KSAmJgorICAgICAgICAgICAgIGxvYWRfbmFtZShkZXN0KSA9PSAiL2Qvc2VoZXIvaGFldXNlci90cnVoZSIpIHsKKyAgICAgICAgICAgICBpZiAoZmluZF9jYWxsX291dCgiZXhwbG9kaWVyZSIpPT0tMSkKKyAgICAgICAgICAgICAgICAgY2FsbF9vdXQoImV4cGxvZGllcmUiLDkwMCk7CisgICAgICAgICB9CisgICAgICAgICBlbHNlCisgICAgICAgICAgICAgcmVtb3ZlX2NhbGxfb3V0KCJleHBsb2RpZXJlIik7CisgICAgIH0KKworCitTSUVIRSBBVUNIOgorICAgICBQcmV2ZW50TGVhdmUoKSwgTm90aWZ5SW5zZXJ0KCksIE5vdGlmeUxlYXZlKCksIE1heUFkZE9iamVjdCgpLAorICAgICBQcmV2ZW50SW5zZXJ0TGl2aW5nKCksIFByZXZlbnRMZWF2ZUxpdmluZygpLCBOb3RpZnlNb3ZlKCksCisgICAgIFByZXZlbnRNb3ZlKCksIE1heUFkZFdlaWdodCgpLCBtb3ZlKCksIC9zdGQvY29udGFpbmVyL3Jlc3RyaWN0aW9ucy5jCisKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KK0xhc3QgbW9kaWZpZWQ6IDA0LjA4LjIwMDcsIFplc3N0cmEKZGlmZiAtLWdpdCBhL2RvYy9sZnVuL05vdGlmeVBsYXllckRlYXRoIGIvZG9jL2xmdW4vTm90aWZ5UGxheWVyRGVhdGgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOTE2NjE1MAotLS0gL2Rldi9udWxsCisrKyBiL2RvYy9sZnVuL05vdGlmeVBsYXllckRlYXRoCkBAIC0wLDAgKzEsNzQgQEAKK05vdGlmeVBsYXllckRlYXRoKCkKKworRlVOS1RJT046CisgIHZvaWQgTm90aWZ5UGxheWVyRGVhdGgob2JqZWN0IHZpY3RpbSxvYmplY3Qga2lsbGVyLGludCBsb3N0X2V4cCk7CisKK0RFRklOSUVSVCBJTjoKKyAgL3N0ZC9wbGF5ZXIvbGlmZS5jCisKK0FSR1VNRU5URToKKyAgdmljdGltCisgICAgR2V0b2V0ZXRlciBTcGllbGVyLgorICBraWxsZXIKKyAgICBPYmpla3QsIHdlbGNoZXMgZGVuIFNwaWVsZXIgZ2V0b2V0ZXQgaGF0LgorICBsb3N0X2V4cAorICAgIEVyZmFocnVuZ3NwdW5rdGUsIGRpZSBkZXIgU3BpZWxlciBkdXJjaCBkZW4gVG9kIHZlcmxvcmVuIGhhdC4KKworQkVTQ0hSRUlCVU5HOgorICBEaWVzZSBGdW5rdGlvbiB3aXJkIGF1cyBkZW0gU3BpZWxlcm9iamVrdCBoZXJhdXMgaW1tZXIgZGFubgorICBhdWZnZXJ1ZmVuLCB3ZW5uIGRlciBTcGllbGVyIHN0aXJidCB1bmQgendhcjoKKyAgICAxKSBpbSBHZWduZXIsIGRlciBkZW4gU3BpZWxlciBnZXRvZXRldCBoYXQsCisgICAgMikgaW0gRW52aXJvbm1lbnQgZGVzIGdldG9ldGV0ZW4gU3BpZWxlcnMsCisgICAgMykgaW4gZGVyIEdpbGRlIGRlcyBTcGllbGVycywKKyAgICA0KSBpbiBhbGxlbiBPYmpla3RlbiBpbiBkaWVzZW0gRW52aXJvbm1lbnQgdW5kCisgICAgNSkgaW4gYWxsZW4gT2JqZWt0ZW4gKGF1Y2ggaW5uZXJoYWxiIENvbnRhaW5lcm4pIGltIFNwaWVsZXIuCisgIERlciBHZWduZXIgd2lyZCBoaWVyYmVpIG51ciBlaW5tYWwgaW5mb3JtaWVydCwgYWxzbyBiZWkgbGV0enRlcmVuCisgIEZhZWxsZW4gaGVyYXVzZ2VmaWx0ZXJ0LCBmYWxscyBub2V0aWchCisgIEhhdXB0YXVmZ2FiZSBkaWVzZXIgRnVua3Rpb24gaXN0IGVzIHNvbWl0LCBhdWYgVG9kZSB2b24gU3BpZWxlcm4genUKKyAgcmVhZ2llcmVuIG9kZXIgc2VsYmlnZSBlaW5mYWNoIG51ciBtaXR6dWxvZ2dlbi4KKworICBadSBkZW0gWmVpdHB1bmt0IGRlcyBBdWZydWZzIGRpZXNlciBGdW5rdGlvbiBpc3QgZGVyIFNwaWVsZXIgbm9jaCBfbmljaHRfCisgIEdlaXN0IHVuZCBub2NoIF9uaWNodF8gaW0gVG9kZXNyYXVtIC0gZGllcyB3aXJkIGltIEFuc2NobHVzcyBhbiBkZW4gQXVmcnVmCisgIGRlciBOb3RpZnlQbGF5ZXJEZWF0aCgpIGR1cmNoZ2VmdWVocnQuCisgIAorICBBdWZnZXJ1ZmVuIHdpcmQgZGllIEZ1bmt0aW9uIGF1cyAnL3N0ZC9wbGF5ZXIvbGlmZS5jJyBtaXR0ZWxzIGNhdGNoKCkgdW5kCisgIHdlcmRlbiBtaXQgbGltaXRlZCgpIGF1ZiBtYXguIDE1MGsgKEdlZ25lciwgRW52aXJvbm1lbnQsIEdpbGRlKSBiencuIDgwayAKKyAgKGFsbGUgYW5kZXJlbiBPYmpla3RlKSBUaWNrcyBiZXNjaHJhZW5rdC4KKyAgRmVobGVyIGluIGRpZXNlciBGdW5rdGlvbiBoYWJlbiBzb21pdCBrZWluZSBuZWdhdGl2ZW4gQXVzd2lya3VuZ2VuCisgIGF1ZiBkYXMgU3RlcmJlbiBkZXMgU3BpZWxlcnMuCisKK1JVZUNLR0FCRVdFUlQ6CisgIGtlaW5lcgorCitCRUlTUElFTEU6CisgIEZvbGdlbmRlcyBCZWlzcGllbCBkZW1vbnN0cmllcnQgYmVpc3BpZWxzd2Vpc2UsIHdpZSBtYW4gVG9kZSB2b24KKyAgU3BpZWxlcm4gbWl0bG9nZ2VuIGthbm4gKGRhcyBCZWlzcGllbCBpc3QgaGllcmJlaSBhdWYgZGVuIGFtCisgIGhhZXVmaWdzdGVuIGF1ZnRyZXRlbmRlbiBGYWxsIGJlem9nZW4sIGRhc3MgbnVyIGRhcyB0b2V0ZW5kZSBPYmpla3QKKyAgZGVuIFRvZCBwcm90b2tvbGxpZXJlbiBzb2xsKToKKworICAgIHZvaWQgTm90aWZ5UGxheWVyRGVhdGgob2JqZWN0IGRlYWQsIG9iamVjdCBraWxsZXIsIGludCBsb3N0X2V4cCkgCisgICAgeyAKKyAgICAgIGlmICggaW50cChsb3N0X2V4cCkgJiYgb2JqZWN0cChkZWFkKSAmJiBvYmplY3RwKGtpbGxlcikgJiYgCisgICAgICAgICAgIGtpbGxlcj09dGhpc19vYmplY3QoKSApCisgICAgICAgIHdyaXRlX2ZpbGUoICIvbG9nL3BhdHJ5bi9kZWFkIiwgc3ByaW50ZigKKyAgICAgICAgICAiJXMgLSAlcyB2b24gJXMgZ2V0b2V0ZXQuIFhQOiAtJWQiLCBjdGltZSgpLCBnZXR1aWQoZGVhZCksCisgICAgICAgICAgIGtpbGxlci0+bmFtZShXRU0pLCBsb3N0X2V4cCkgKTsKKyAgICB9CisKKyAgQml0dGUgYmVhY2h0ZW46IHdyaXRlX2ZpbGUoKSBzY2hyZWlidCBvaG5lIEdyb2Vzc2VuYmVncmVuenVuZyBpbiBkYXMKKyAgTG9nZmlsZS4gRGEgZGllcyBhdWYgRGF1ZXIgYnp3LiBpbiBHZWJpZXRlbiBtaXQgaG9oZXIgTG9nLUFrdGl2aXRhZXQKKyAgenUgTG9nZmlsZXMgdm9uIGVub3JtZXIgR3JvZXNzZSBmdWVocmVuIGthbm4sIGlzdCBkaWUgVmVyd2VuZHVuZworICB2b24gd3JpdGVfZmlsZSgpIG5pY2h0IGVtcGZlaGxlbnN3ZXJ0LiBBdXNuYWhtZW4ga29lbm5lbiBuYXR1ZXJsaWNoCisgIG1pdCBkZW0genVzdGFlbmRpZ2VuIFJlZ2lvbnNtYWdpZXIgYWJnZXNwcm9jaGVuIHdlcmRlbiwgei5CLiBmdWVyCisgIGJlZ3Jlbnp0ZSBBbndlbmR1bmcgZXR3YSBiZWkgc2VociBzdGFya2VuLCBzZWx0ZW4gYmVzaWVndGVuIEdlZ25lcm4uCisKKyAgV2VpdGVyaGluIGlzdCBlcyBlbXBmZWhsZW5zd2VydCwgZGFzIHRvZXRlbmRlIE9iamVrdCAoa2lsbGVyKSBuaWNodAorICBpbSBOb3RpZnlQbGF5ZXJEZWF0aCgpIHp1IHplc3RvZXJlbiwgc29uZGVybiBldHdhcyB6ZWl0dmVyc2V0enQsCisgIGRhbWl0IG5pY2h0IGV0d2EgaW0gbmFjaGZvbGdlbmRlbiBOb3RpZnlQbGF5ZXJEZWF0aCgpIGVpbmVzIGFuZGVyZW4KKyAgT2JqZWt0ZXMgKHMuby4gUmVpaGVuZm9sZ2UpIGtpbGxlcj09MCBpc3QuCisKK1NJRUhFIEFVQ0g6CisgIERlZmVuZCgpLCBkb19kYW1hZ2UoKSwgTm90aWZ5SHBDaGFuZ2UoKSwgY2F0Y2goKSwgd3JpdGVfZmlsZSgpLCBsb2dfZmlsZSgpCisgIFBfTEFTVF9ERUFUSF9QUk9QUworLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorMjQuMDMuMjAxMiwgWmVzc3RyYQpkaWZmIC0tZ2l0IGEvZG9jL2xmdW4vTm90aWZ5UmVtb3ZlIGIvZG9jL2xmdW4vTm90aWZ5UmVtb3ZlCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjQ4YjA0ZmEKLS0tIC9kZXYvbnVsbAorKysgYi9kb2MvbGZ1bi9Ob3RpZnlSZW1vdmUKQEAgLTAsMCArMSwyNiBAQAorTm90aWZ5UmVtb3ZlKCkKKworRlVOS1RJT046CisgICAgIHZvaWQgTm90aWZ5UmVtb3ZlKG9iamVjdCBvYik7CisKK0FSR1VNRU5URToKKyAgICAgb2IKKyAgICAgICAgICBEYXMgT2JqZWt0LCBkYXMgYXVzIGRlbSBCZWhhZWx0ZXIgZW50ZmVybnQgd3VyZGUuCisKK0JFU0NIUkVJQlVORzoKKyAgICAgRGllc2UgRnVua3Rpb24gd2lyZCBpbSBCZWhhZWx0ZXIgYXVmZ2VydWZlbiwgd2VubiBlaW4gT2JqZWt0IGltCisgICAgIGJlc2FndGVuIEJlaGFlbHRlciB6ZXJzdG9lcnQgd2lyZC4KKworUlVlQ0tHQUJFV0VSVDoKKyAgICAga2VpbmVyCisKK0JFTUVSS1VOR0VOOgorICAgICBXaXJkIG5pY2h0IGdlcnVmZW4sIHdlbm4gZWluIFNwaWVsZXJvYmpla3QgemVyc3RvZXJ0IHdpcmQuCisKK1NJRUhFIEFVQ0g6CisgICAgTm90aWZ5TGVhdmUoKSwgTm90aWZ5SW5zZXJ0KCksIFByZXZlbnRJbnNlcnQoKSwgUHJldmVudExlYXZlKCksIG1vdmUoKSwKKyAgICBOb3RpZnlNb3ZlKCksIFByZXZlbnRNb3ZlKCksCisgICAgQmVjb21lc05ldERlYWQoKQorCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCitMYXN0IG1vZGlmaWVkOiAwNC4wOC4yMDA3LCBaZXNzdHJhCmRpZmYgLS1naXQgYS9kb2MvbGZ1bi9Ob3RpZnlUaW1lZEF0dHJNb2RFeHBpcmVkIGIvZG9jL2xmdW4vTm90aWZ5VGltZWRBdHRyTW9kRXhwaXJlZApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5mNTlhNzlhCi0tLSAvZGV2L251bGwKKysrIGIvZG9jL2xmdW4vTm90aWZ5VGltZWRBdHRyTW9kRXhwaXJlZApAQCAtMCwwICsxLDIwIEBACitOb3RpZnlUaW1lZEF0dHJNb2RFeHBpcmVkCitGVU5LVElPTjoKKyAgICAgdm9pZCBOb3RpZnlUaW1lZEF0dHJNb2RFeHBpcmVkKHN0cmluZyBrZXkpCisKK0RFRklOSUVSVCBJTjoKKyAgICAgUHVzaC1NZXRob2RlIGluIG5vdGlmeS1PYmpla3Rlbi4KKworQVJHVU1FTlRFOgorICAgICBzdHJpbmcga2V5CQktIGRlciBnZWxvZXNjaHRlIE1vZGlmaWVyCisKK0JFU0NIUkVJQlVORzoKKyAgICAgV2lyZCBhdXMgZGVtIExlYmV3ZXNlbiBhdXMgYXVmZ2VydWZlbiwgaW4gZGVtIGRlciBlbnRzcHJlY2hlbmRlbgorICAgICBNb2RpZmllciBzb2ViZW4gdW5ndWVsdGlnIGdld29yZGVuIGlzdC4gICAgIAorCitTSUVIRSBBVUNIOgorICAgICBQcm9wZXJ0aWVzOiBQX0FUVFJJQlVURVMsIFBfVElNRURfQVRUUl9NT0QKKyAgICAgTWV0aG9kZW46CSBTZXRUaW1lZEF0dHJNb2RpZmllcihMKSwgRGVsZXRlVGltZWRBdHRyTW9kaWZpZXIoTCksCisJCSBRdWVyeVRpbWVkQXR0ck1vZGlmaWVyKEwpCisKKzI3LiBKdWxpIDIwMDQgR2xvaW5zb24KZGlmZiAtLWdpdCBhL2RvYy9sZnVuL05vdGlmeVhNQXR0ck1vZExpbWl0VmlvbGF0aW9uIGIvZG9jL2xmdW4vTm90aWZ5WE1BdHRyTW9kTGltaXRWaW9sYXRpb24KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNDRmMzljMAotLS0gL2Rldi9udWxsCisrKyBiL2RvYy9sZnVuL05vdGlmeVhNQXR0ck1vZExpbWl0VmlvbGF0aW9uCkBAIC0wLDAgKzEsMjAgQEAKK05vdGlmeVhNQXR0ck1vZExpbWl0VmlvbGF0aW9uKCkKK0ZVTktUSU9OOgorICAgICAgdm9pZCBOb3RpZnlYTUF0dHJNb2RMaW1pdFZpb2xhdGlvbigpCisKK0RFRklOSUVSVCBJTjoKKyAgICAgL3N0ZC90aGluZy9yZXN0cmljdGlvbnMuYworDQorQkVTQ0hSRUlCVU5HOgorICAgICBXaXJkIGdlcnVmZW4gd2VubiBkaWUgU3VtbWUgZGVyIGluIFBfWF9BVFRSX01PRCBvZGVyIFBfWF9BVFRSX01PRAorICAgICBhbmdlZ2ViZW5lbiBNb2RpZmlrYXRvcmVuIGRpZSBTdW1tZSBhbGxlciBNb2RpZmlrYXRvcmVuIGltIFNwaWVsZXIgCisgICAgIHVlYmVyIGRlbiB6dWdlbGFzc2VuZW4gR3Jlbnp3ZXJ0IGhlYnQgdW5kIHNvbWl0IG5pY2h0IG1laHIgaW4gZGllCisgICAgIEJlcmVjaG51bmcgZWluZ2VodC4KKyAgICAgCitTSUVIRSBBVUNIOgorICAgICBRdWVyeUF0dHJpYnV0ZSgpLCBRdWVyeVJlYWxBdHRyaWJ1dGUoKSwgUXVlcnlBdHRyaWJ1dGVPZmZzZXQoKSwNCisgICAgIFNldEF0dHIoKSwgU2V0QXR0cmlidXRlKCksIFNldFJlYWxBdHRyaWJ1dGUoKSwgVXBkYXRlQXR0cmlidXRlcygpLA0KKyAgICAgUF9BVFRSSUJVVEVTLCBQX0FUVFJJQlVURVNfT0ZGU0VUUywgUF9BVFRSSUJVVEVTX01PRElGSUVSLA0KKyAgICAgUF9YX0FUVFJfTU9ELCBQX01fQVRUUl9NT0QsIC9zdGQvbGl2aW5nL2F0dHJpYnV0ZXMuYw0KKworMTMuSnVuLjIwMDQsIE11YWRpYgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2RvYy9sZnVuL1BhY2lmeSBiL2RvYy9sZnVuL1BhY2lmeQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5iOTBlZDgzCi0tLSAvZGV2L251bGwKKysrIGIvZG9jL2xmdW4vUGFjaWZ5CkBAIC0wLDAgKzEsMTEzIEBACitGVU5LVElPTgorCXB1YmxpYyBpbnQgUGFjaWZ5KG9iamVjdCBjYXN0ZXIpCisKK0RFRklOSUVSVCBJTgorCS9zdGQvbGl2aW5nL2NvbWJhdC5jCisKK0JFU0NIUkVJQlVORworCURpZXNlIEZ1bmt0aW9uIHZlcnN1Y2h0LCBlaW4gTGViZXdlc2VuIHp1IGJlZnJpZWRlbi4KKyAgV2lsbCBlaW5lIEdpbGRlIGVpbiBMZWJld2VzZW4gYmVmcmllZGVuLCBtdXNzIHNpZSBoaWVyZnVlciBkaWVzZSBGdW5rdGlvbgorICBpbiBkZW0gTGViZXdlc2VuIGF1ZnJ1ZmVuLgorCisgIEVpbiBpbW1lciBiZWZyaWVkYmFyZXIgTlBDIGthbm4gZHVyY2ggZGFzIFNldHplbiB2b24gUF9BQ0NFUFRfUEVBQ0UgaW4gZWluZW0KKyAgTGViZXdlc2VuIHJlYWxpc2llcnQgd2VyZGVuLgorCisJU3RhbmRhcmRtYWVzc2lnIGZ1bmt0aW9uaWVydCBkaWUgRnVua3Rpb24gd2llIGZvbGd0OgorICAqIEtvbW10IGRlciBWZXJzdWNoIHZvbSBTcGVsbGNhc3RlciBzZWxic3QsIGlzdCBlciBpbW1lciBlcmZvbGdyZWljaC4KKyAgKiBLb21tdCBkZXIgVmVyc3VjaCB2b24gZWluZW0gVGVhbWtvbGxlZ2VuLCBpc3QgZXIgaW1tZXIgZXJmb2xncmVpY2guCisgICogSGF0IGRhcyBMZWJld2VzZW4ga2VpbmUgR2VnbmVyLCBpc3QgZGVyIFZlcnN1Y2ggaW1tZXIgZXJmb2xnbG9zLgorICBJbiBkaWVzZW4gRmFlbGxlbiBlcmZvbGd0IGF1Y2gga2VpbmUgRXJob2VodW5nIGRlcyBCZWZyaWVkZXphZWhsZXJzLgorICAKKyAgSW4gYW5kZXJlbiBGYWVsbGVuIHdpcmQgZGllIGluIFBfUEVBQ0VfSElTVE9SWSBmdWVyIGRpZSBHaWxkZSBkZXMgQ2FzdGVycworICBhYmdlbGVndGUgWmFobCBlcmZvbGdyZWljaGVyIEJlZnJpZWR1bmdlbiAoQU5aKSwgZGllIEludGVsbGlnZW56IGRlcworICBDYXN0ZXJzIChJTlRfQ0FTVEVSKSB1bmQgZGllIEludGVsbGlnZW56IGRlcyBMZWJlbndlc2VucyBzZWxiZXIgKElOVF9NRSkKKyAgZXJtaXR0ZWx0LgorICBBbnNjaGxpZXNzZW5kIHdpcmQgZWluZSBXYWhyc2NoZWlubGljaGtlaXQgdyBhdXNnZXJlY2huZXQ6CisgIAorICAgIHcgPSAoSU5UX0NBU1RFUiArIDEwIC0gQU5aKjQpIC8gKElOVF9NRSArIDEwKQorICAKKyAgSGllcmJlaSBnaWJ0IHcgZGllIENoYW5jZSBhdWYgZWluZSBlcmZvbGdyZWljaGUgQmVmcmllZHVuZyBhbi4gTWl0dGVscyBlaW5lcgorICBadWZhbGxzemFobCB3aXJkIGJlc3RpbW10LCBvYiBkZXIgYWt0dWVsbGUgVmVyc3VjaCBlcmZvbGdyZWljaCBpc3QuIEZhbGxzCisgIGphLCB3aXJkIGRlciBaYWVobGVyIGZ1ZXIgZGllIEdpbGRlIGRlcyBDYXN0ZXJzIGluIFBfUEVBQ0VfSElTVE9SWSBlcmhvZWh0LgorCisgIEplIG9lZnRlciBlaW4gTGViZXdlc2VuIGFscyB2b24gZWluZXIgR2lsZGUgc2Nob24gYmVmcmllZGV0IHd1cmRlLCBkZXN0bworICB1bndhaHJzY2hlaW5saWNoZXIsIGRhc3MgZXMgZXJuZXV0IGRhcmF1ZiAnaGVyZWluZmFlbGx0Jy4KKworQkVNRVJLVU5HRU46CisgICoJRGllIEZ1bmt0aW9uIGthbm4gYXVjaCB1ZWJlcnNjaHJpZWJlbiB3ZXJkZW4sIHVtIGVpbiB2b20gTWFnaWVyCisgICAgZ2V3dWVuc2NodGVzIFZlcmhhbHRlbiB6dSByZWFsaXNpZXJlbi4gRWluIGtvbXBsZXR0ZXMgQWJoYWVuZ2VuIHZvbgorICAgIEJlZnJpZWR1bmdlbiBzb2xsdGUgZGFiZWkgYWJlciBkaWUgQXVzbmFobWUgc2VpbiEKKyAgKiBEaWVzZSBGdW5rdGlvbiB2ZXJ3YWx0ZXQgYXVjaCBkYXMgUF9QRUFDRV9ISVNUT1JZLCBzcGV6aWVsbCBkaWUgUmVkdWt0aW9uCisgICAgZGVyIEVyZm9sZ3N6YWVobGVyLiBVZWJlcnNjaHJlaWJ0IG1hbiBzaWUgb2huZSBkYXMgZ2VlcmJ0ZSBQYWNpZnkoKQorICAgIHp1IG51dHplbiwgd2lyZCBQX1BFQUNFX0hJU1RPUlkgbmljaHQgbWVociB2ZXJ3YWx0ZXQuCisKK1JVRUNLR0FCRVdFUlRFOgorICAgIDEgLSBkYXMgTGViZXdlc2VuIHd1cmRlIGVyZm9sZ3JlaWNoIGJlZnJpZWRldC4uCisgICAgMCAtIGRlciBCZWZyaWVkZXZlcnN1Y2ggaXN0IGdlc2NoZWl0ZXJ0LgorICAgIAorQkVJU1BJRUxFOgorICAgIEFuZ2Vub21tZW4sIGRlciBDYXN0ZXIgaGF0IGVpbmUgSW50ZWxsaWdlbnogdm9uIDIyLiBEaWUgZm9sZ2VuZGUgVGFiZWxsZQorICAgIGdpYnQgZGFubiBkaWUgV2FocnNjaGVpbmxpY2hrZWl0ZW4gZnVlciBlaW5lIGVyZm9sZ3JlaWNoZSBCZWZyaWVkdW5nIGFuOgorICAgIChpbiBBYmhhZW5naWdrZWl0IHZvbiBlaWdlbmVyIEludGVsbGlnZW56IHVuZCB2ZXJnYW5nZW5lciBlcmZvbGdyZWljaGVyCisgICAgIFZlcnN1Y2hlKQorIElOVF9NRSAgRXJmb2xnc3dhaHJzY2hlaW5saWNoa2VpdGVuIGplIG5hY2ggQW56YWhsIGVyZm9sZ3JlaWNoZXIgVmVyc3VjaGUKKyAgICAgICAgICAgICAgMSAgICAgICAyICAgICAgIDMgICAgICAgNCAgICAgICA1ICAgICAgIDYgICAgICAgNyAgICAgICA4CisgICAgICAwICAgICAyODAgICAgIDI0MCAgICAgMjAwICAgICAxNjAgICAgIDEyMCAgICAgIDgwICAgICAgNDAgICAgICAgMAorICAgICAgMiAgMjMzLDMzICAgICAyMDAgIDE2Niw2NyAgMTMzLDMzICAgICAxMDAgICA2Niw2NyAgIDMzLDMzICAgICAgIDAKKyAgICAgIDQgICAgIDIwMCAgMTcxLDQzICAxNDIsODYgIDExNCwyOSAgIDg1LDcxICAgNTcsMTQgICAyOCw1NyAgICAgICAwCisgICAgICA2ICAgICAxNzUgICAgIDE1MCAgICAgMTI1ICAgICAxMDAgICAgICA3NSAgICAgIDUwICAgICAgMjUgICAgICAgMAorICAgICAgOCAgMTU1LDU2ICAxMzMsMzMgIDExMSwxMSAgIDg4LDg5ICAgNjYsNjcgICA0NCw0NCAgIDIyLDIyICAgICAgIDAKKyAgICAgMTAgICAgIDE0MCAgICAgMTIwICAgICAxMDAgICAgICA4MCAgICAgIDYwICAgICAgNDAgICAgICAyMCAgICAgICAwCisgICAgIDEyICAxMjcsMjcgIDEwOSwwOSAgIDkwLDkxICAgNzIsNzMgICA1NCw1NSAgIDM2LDM2ICAgMTgsMTggICAgICAgMAorICAgICAxNCAgMTE2LDY3ICAgICAxMDAgICA4MywzMyAgIDY2LDY3ICAgICAgNTAgICAzMywzMyAgIDE2LDY3ICAgICAgIDAKKyAgICAgMTYgIDEwNyw2OSAgIDkyLDMxICAgNzYsOTIgICA2MSw1NCAgIDQ2LDE1ICAgMzAsNzcgICAxNSwzOCAgICAgICAwCisgICAgIDE4ICAgICAxMDAgICA4NSw3MSAgIDcxLDQzICAgNTcsMTQgICA0Miw4NiAgIDI4LDU3ICAgMTQsMjkgICAgICAgMAorICAgICAyMCAgIDkzLDMzICAgICAgODAgICA2Niw2NyAgIDUzLDMzICAgICAgNDAgICAyNiw2NyAgIDEzLDMzICAgICAgIDAKKyAgICAgMjIgICAgODcsNSAgICAgIDc1ICAgIDYyLDUgICAgICA1MCAgICAzNyw1ICAgICAgMjUgICAgMTIsNSAgICAgICAwCisgICAgIDI0ICAgODIsMzUgICA3MCw1OSAgIDU4LDgyICAgNDcsMDYgICAzNSwyOSAgIDIzLDUzICAgMTEsNzYgICAgICAgMAorICAgICAyNiAgIDc3LDc4ICAgNjYsNjcgICA1NSw1NiAgIDQ0LDQ0ICAgMzMsMzMgICAyMiwyMiAgIDExLDExICAgICAgIDAKKyAgICAgMjggICA3Myw2OCAgIDYzLDE2ICAgNTIsNjMgICA0MiwxMSAgIDMxLDU4ICAgMjEsMDUgICAxMCw1MyAgICAgICAwCisgICAgIDMwICAgICAgNzAgICAgICA2MCAgICAgIDUwICAgICAgNDAgICAgICAzMCAgICAgIDIwICAgICAgMTAgICAgICAgMAorICAgICAzMiAgIDY2LDY3ICAgNTcsMTQgICA0Nyw2MiAgICAzOCwxICAgMjgsNTcgICAxOSwwNSAgICA5LDUyICAgICAgIDAKKyAgICAgMzQgICA2Myw2NCAgIDU0LDU1ICAgNDUsNDUgICAzNiwzNiAgIDI3LDI3ICAgMTgsMTggICAgOSwwOSAgICAgICAwCisgICAgIDM1ICAgNjIsMjIgICA1MywzMyAgIDQ0LDQ0ICAgMzUsNTYgICAyNiw2NyAgIDE3LDc4ICAgIDgsODkgICAgICAgMAorICAgICAzNiAgIDYwLDg3ICAgNTIsMTcgICA0Myw0OCAgIDM0LDc4ICAgMjYsMDkgICAxNywzOSAgICAgOCw3ICAgICAgIDAKKyAgICAgMzggICA1OCwzMyAgICAgIDUwICAgNDEsNjcgICAzMywzMyAgICAgIDI1ICAgMTYsNjcgICAgOCwzMyAgICAgICAwCisgICAgIDQwICAgICAgNTYgICAgICA0OCAgICAgIDQwICAgICAgMzIgICAgICAyNCAgICAgIDE2ICAgICAgIDggICAgICAgMAorICAgICA0MiAgIDUzLDg1ICAgNDYsMTUgICAzOCw0NiAgIDMwLDc3ICAgMjMsMDggICAxNSwzOCAgICA3LDY5ICAgICAgIDAKKyAgICAgNDQgICA1MSw4NSAgIDQ0LDQ0ICAgMzcsMDQgICAyOSw2MyAgIDIyLDIyICAgMTQsODEgICAgNyw0MSAgICAgICAwCisgICAgIDQ2ICAgICAgNTAgICA0Miw4NiAgIDM1LDcxICAgMjgsNTcgICAyMSw0MyAgIDE0LDI5ICAgIDcsMTQgICAgICAgMAorICAgICA0OCAgIDQ4LDI4ICAgNDEsMzggICAzNCw0OCAgIDI3LDU5ICAgMjAsNjkgICAxMyw3OSAgICAgNiw5ICAgICAgIDAKKyAgICAgNTAgICA0Niw2NyAgICAgIDQwICAgMzMsMzMgICAyNiw2NyAgICAgIDIwICAgMTMsMzMgICAgNiw2NyAgICAgICAwCisgICAgIDUyICAgNDUsMTYgICAzOCw3MSAgIDMyLDI2ICAgMjUsODEgICAxOSwzNSAgICAxMiw5ICAgIDYsNDUgICAgICAgMAorICAgICA1NCAgIDQzLDc1ICAgIDM3LDUgICAzMSwyNSAgICAgIDI1ICAgMTgsNzUgICAgMTIsNSAgICA2LDI1ICAgICAgIDAKKyAgICAgNTYgICA0Miw0MiAgIDM2LDM2ICAgIDMwLDMgICAyNCwyNCAgIDE4LDE4ICAgMTIsMTIgICAgNiwwNiAgICAgICAwCisgICAgIDU4ICAgNDEsMTggICAzNSwyOSAgIDI5LDQxICAgMjMsNTMgICAxNyw2NSAgIDExLDc2ICAgIDUsODggICAgICAgMAorICAgICA2MCAgICAgIDQwICAgMzQsMjkgICAyOCw1NyAgIDIyLDg2ICAgMTcsMTQgICAxMSw0MyAgICA1LDcxICAgICAgIDAKKyAgICAgNjIgICAzOCw4OSAgIDMzLDMzICAgMjcsNzggICAyMiwyMiAgIDE2LDY3ICAgMTEsMTEgICAgNSw1NiAgICAgICAwCisgICAgIDY0ICAgMzcsODQgICAzMiw0MyAgIDI3LDAzICAgMjEsNjIgICAxNiwyMiAgIDEwLDgxICAgIDUsNDEgICAgICAgMAorICAgICA2NiAgIDM2LDg0ICAgMzEsNTggICAyNiwzMiAgIDIxLDA1ICAgMTUsNzkgICAxMCw1MyAgICA1LDI2ICAgICAgIDAKKyAgICAgNjggICAgMzUsOSAgIDMwLDc3ICAgMjUsNjQgICAyMCw1MSAgIDE1LDM4ICAgMTAsMjYgICAgNSwxMyAgICAgICAwCisgICAgIDcwICAgICAgMzUgICAgICAzMCAgICAgIDI1ICAgICAgMjAgICAgICAxNSAgICAgIDEwICAgICAgIDUgICAgICAgMAorICAgICA3MiAgIDM0LDE1ICAgMjksMjcgICAyNCwzOSAgIDE5LDUxICAgMTQsNjMgICAgOSw3NiAgICA0LDg4ICAgICAgIDAKKyAgICAgNzQgICAzMywzMyAgIDI4LDU3ICAgMjMsODEgICAxOSwwNSAgIDE0LDI5ICAgIDksNTIgICAgNCw3NiAgICAgICAwCisgICAgIDc2ICAgMzIsNTYgICAyNyw5MSAgIDIzLDI2ICAgIDE4LDYgICAxMyw5NSAgICAgOSwzICAgIDQsNjUgICAgICAgMAorICAgICA3OCAgIDMxLDgyICAgMjcsMjcgICAyMiw3MyAgIDE4LDE4ICAgMTMsNjQgICAgOSwwOSAgICA0LDU1ICAgICAgIDAKKyAgICAgODAgICAzMSwxMSAgIDI2LDY3ICAgMjIsMjIgICAxNyw3OCAgIDEzLDMzICAgIDgsODkgICAgNCw0NCAgICAgICAwCisgICAgIDgyICAgMzAsNDMgICAyNiwwOSAgIDIxLDc0ICAgMTcsMzkgICAxMywwNCAgICAgOCw3ICAgIDQsMzUgICAgICAgMAorICAgICA4NCAgIDI5LDc5ICAgMjUsNTMgICAyMSwyOCAgIDE3LDAyICAgMTIsNzcgICAgOCw1MSAgICA0LDI2ICAgICAgIDAKKyAgICAgODYgICAyOSwxNyAgICAgIDI1ICAgMjAsODMgICAxNiw2NyAgICAxMiw1ICAgIDgsMzMgICAgNCwxNyAgICAgICAwCisgICAgIDg4ICAgMjgsNTcgICAyNCw0OSAgIDIwLDQxICAgMTYsMzMgICAxMiwyNCAgICA4LDE2ICAgIDQsMDggICAgICAgMAorICAgICA5MCAgICAgIDI4ICAgICAgMjQgICAgICAyMCAgICAgIDE2ICAgICAgMTIgICAgICAgOCAgICAgICA0ICAgICAgIDAKKyAgICAgOTIgICAyNyw0NSAgIDIzLDUzICAgMTksNjEgICAxNSw2OSAgIDExLDc2ICAgIDcsODQgICAgMyw5MiAgICAgICAwCisgICAgIDk0ICAgMjYsOTIgICAyMywwOCAgIDE5LDIzICAgMTUsMzggICAxMSw1NCAgICA3LDY5ICAgIDMsODUgICAgICAgMAorICAgICA5NiAgIDI2LDQyICAgMjIsNjQgICAxOCw4NyAgIDE1LDA5ICAgMTEsMzIgICAgNyw1NSAgICAzLDc3ICAgICAgIDAKKyAgICAgOTggICAyNSw5MyAgIDIyLDIyICAgMTgsNTIgICAxNCw4MSAgIDExLDExICAgIDcsNDEgICAgIDMsNyAgICAgICAwCisgICAgMTAwICAgMjUsNDUgICAyMSw4MiAgIDE4LDE4ICAgMTQsNTUgICAxMCw5MSAgICA3LDI3ICAgIDMsNjQgICAgICAgMAorCitTSUVIRSBBVUNICisgICAgICAgIFBfQUNDRVBUX1BFQUNFLCBQX1BFQUNFX0hJU1RPUlkKKworTEVUWlRFIEFFTkRFUlVORworMDcuMDYuMjAwOCwgWmVzc3RyYQorCmRpZmYgLS1naXQgYS9kb2MvbGZ1bi9QYXlJbiBiL2RvYy9sZnVuL1BheUluCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjA3MTRjNTMKLS0tIC9kZXYvbnVsbAorKysgYi9kb2MvbGZ1bi9QYXlJbgpAQCAtMCwwICsxLDQ3IEBACitQYXlJbigpCitGVU5LVElPTjoKKyAgICAgdmFyYXJncyB2b2lkIFBheUluKGludCBhbW91bnQsIGludCBwZXJjZW50KTsKKworREVGSU5JRVJUIElOOgorICAgICAvcC9kYWVtb24vemVudHJhbGJhbmsuYworCitBUkdVTUVOVEU6CisgICAgIGludCBhbW91bnQJLQllaW56dXphaGxlbmRlciBCZXRyYWcKKyAgICAgaW50IHBlcmNlbnQgLQlCZXdlcnR1bmdzcHJvemVudHNhdHoKKworQkVTQ0hSRUlCVU5HOgorICAgICBFcyB3aXJkIEJydXR0byBhbW91bnQgR2VsZCBpbiBkaWUgQmFuayBlaW5nZXphaGx0LiBEZXIgUHJvemVudHNhdHogbGVndAorICAgICBmZXN0LCB3aWV2aWVsIHRhdHNhZWNobGljaCBndXRnZXNjaHJpZWJlbiB3aXJkOgorICAgICBHdXRzY2hyaWZ0ID0gYW1vdW50KnBlcmNlbnQvMTAwCisKKyAgICAgV2lyZCBwZXJjZW50IG5pY2h0IGFuZ2VnZWJlbiwgZGFubiB3aXJkIGRlciBkZXJ6ZWl0aWdlIEJhbmtiZXdlcnR1bmdzLQorICAgICBtYXNzc3RhYiBmdWVyIEdlbGQgYW5nZW5vbW1lbi4KKworQkVJU1BJRUxFOgorICAgICAjaW5jbHVkZSA8YmFuay5oPgorICAgICAuLi4KKyAgICAgQWRkQ21kKCJzcGVuZGUiLCMnYWN0aW9uX3NwZW5kZSwKKwkgICAgIldhcyB3aWxsc3QgZHUgc3BlbmRlbj8iKTsKKyAgICAgLi4uCisgICAgIGludCBhY3Rpb25fc3BlbmRlKHN0cmluZyBzdHIsIGV4dHJhICpvKSB7CisgICAgICBpbnQgaTsKKyAgICAgIGlmKHNzY2FuZigiJWQgbXVlbnplIixpKT09MSAmJiBpPjApCisgICAgICAgaWYodGhpc19wbGF5ZXIoKS0+UXVlcnlNb25leShpKSAmJiB0aGlzX3BsYXllcigpLT5BZGRNb25leSgtaSkpIHsKKyAgICAgICAgd3JpdGUoIkR1IHNwZW5kZXN0ICIraSsiIE11ZW56ZW4uXG4iKTsKKwlzYXkodGhpc19wbGF5ZXIoKS0+TmFtZShXRVIpKyIgc3BlbmRldCAiK2krIiBNdWVuemVuLlxuIik7CisJWkVOVFJBTEJBTkstPlBheUluKGkpOworCQorICAgICAgIH0gZWxzZQorICAgICAgICB3cml0ZSgiU292aWVsIGhhc3QgZHUgbmljaHQgZGFiZWkhXG4iKTsKKyAgICAgIC4uLgorCitCRU1FUktVTkdFTjoKKyAgICAgVW5zZXJlIFplbnRyYWxiYW5rIGlzdCBrb3JydXB0LCB2b3IgYWxsZW0gZGFkdXJjaCwgZGFzcyBpbiBMYWVkZW4gdW5kCisgICAgIGFuIGFuZGVyZW4gU3RlbGxlbiBHZWxkIGVyemV1Z3Qgd2lyZC4KKworU0lFSEUgQVVDSDoKKyAgICAgR2VsZGhhbmRsaW5nOglBZGRNb25leShMKSwgUXVlcnlNb25leShMKQorICAgICBaZW50cmFsYmFuazoJV2l0aERyYXcoTCksIF9xdWVyeV9jdXJyZW50X21vbmV5KEwpCisgICAgIFNvbnN0aWdlczoJCS9pdGVtcy9tb25leS5jLCAvc3lzL2JhbmsuaAorCisyNy4gQXByIDIwMDQgR2xvaW5zb24KZGlmZiAtLWdpdCBhL2RvYy9sZnVuL1BsYXllclF1aXQgYi9kb2MvbGZ1bi9QbGF5ZXJRdWl0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjIyZTNkNmUKLS0tIC9kZXYvbnVsbAorKysgYi9kb2MvbGZ1bi9QbGF5ZXJRdWl0CkBAIC0wLDAgKzEsMjAgQEAKK1BsYXllclF1aXQoKQorCitGVU5LVElPTjoKKyAgICB2b2lkIFBsYXllclF1aXQob2JqZWN0IHBsKTsKKworR0VSVUZFTiBWT046CisgICAgL3N0ZC9wbGF5ZXIvYmFzZS5jCisKK0FSR1VNRU5URToKKyAgICBvYmplY3QgcGwKKyAgICAgIFNwaWVsZXIsIGRlciBWZXJiaW5kdW5nIGJlZW5kZXQKKworQkVTQ0hSRUlCVU5HOgorICAgIFdpcmQgaW0gZW52aXJvbm1lbnQoKSBnZXJ1ZmVuLCB3ZW5uIGRlciBTcGllbGVyIGRhcyBNVUQgbWl0ICJlbmRlIgorICAgIHZlcmxhZXNzdC4KKworU0lFSEUgQVVDSDoKKyAgICBCZWNvbWVzTmV0QWxpdmUoKSwgQmVjb21lc05ldERlYWQoKQorICAgIAorMjQuIEF1ZyAyMDExIEdsb2luc29uClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZG9jL2xmdW4vUHJlc2VudEVuZW1pZXMgYi9kb2MvbGZ1bi9QcmVzZW50RW5lbWllcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi45YzMxZWZlCi0tLSAvZGV2L251bGwKKysrIGIvZG9jL2xmdW4vUHJlc2VudEVuZW1pZXMKQEAgLTAsMCArMSw3MSBAQAorRlVOS1RJT046CisJb2JqZWN0ICpQcmVzZW50RW5lbWllcygpOworCitERUZJTklFUlQgSU46CisJL3N0ZC9saXZpbmcvY29tYmF0LmMKKworQVJHVU1FTlRFOgorCWtlaW5lCisKK1JVZUNLR0FCRVdFUlQ6CisJYW53ZXNlbmRlIEZlaW5kZQorCitCRVNDSFJFSUJVTkc6CisJRGllc2UgRnVua3Rpb24gbGllZmVydCBnZW5hdSBkaWUgRmVpbmRlIHp1cnVlY2ssIGRpZSBzaWNoIGRlcnplaXQgaW0KKwlzZWxiZW4gUmF1bSBiZWZpbmRlbi4gRGllIEZlaW5kZSB1bnRlcmxpZWdlbiBoaWVyYmVpIG5vY2ggZ2V3aXNzZW4KKwlFaW5zY2hyYWVua3VuZ2VuOgorCSAgKDEpIFNpZSBkdWVyZmVuIGFscyBOUEMgbmljaHQgZ2VzdG9yYmVuIHNlaW4sIGRhcyBoZWlzc3QsIHNpZQorCSAgICAgIG11ZXNzZW4gYWxzIE9iamVrdCBub2NoIGV4aXN0aWVyZW4uCisJICAoMikgU2llIGR1ZXJmZW4gYWxzIFNwaWVsZXIgbmljaHQgZ2VzdG9yYmVuIHNlaW4sIGRhcyBoZWlzc3QsIHNpZQorCSAgICAgIGR1ZXJmZW4ga2VpbmUgR2Vpc3RlciBzZWluIChQcm9wZXJ0eSBQX0dIT1NUIG5pY2h0IGdlc2V0enQpLgorCSAgKDMpIFNpZSBtdWVzc2VuIGFuZ3JlaWZiYXIgc2VpbiwgZGFzIGhlaXNzdCwgZGllIFByb3BlcnR5CisJICAgICAgUF9OT19BVFRBQ0sgZGFyZiBuaWNodCBnZXNldHp0IHNlaW4uCisJV2lyZCBlaW5lIGRpZXNlciBCZWRpbmd1bmdlbiB2ZXJsZXR6dCwgc28gd2lyZCBkZXIgR2VnbmVyIGF1cyBkZXIKKwlpbnRlcm5lbiBHZWduZXJsaXN0ZSBlbnRmZXJudC4gWnVzYWV0emxpY2ggZ2lsdDoKKwkgIE5ldHp0b3RlIHdlcmRlbiBudXIgYWxzIEdlZ25lciBlcmthbm50LCB3ZW5uIGtlaW5lIGFuZGVyZW4gR2VnbmVyCisJICB6dXIgVmVyZnVlZ3VuZyBzdGVoZW4uCisKK0JFSVNQSUVMOgorCUltIEZvbGdlbmRlbiBlcmJsaW5kZW4gYWxsZSBHZWduZXIgaW0gUmF1bToKKwkgIHN0cmluZyBibGluZFRoZW1BbGwoKQorCSAgeyBvYipsaXZMaXN0OworCSAgICBpZighbGl2TGlzdD1QcmVzZW50RW5lbWllcygpKQorCSAgICAgIHJldHVybiBicmVha19zdHJpbmcoCisJICJNaXN0Li4ua2VpbmVyIGRhLCBkZXIgYmxpbmQgd2VyZGVuIG1vZWNodGUuIiw3NywKKwkgTmFtZShXRVIpKyIgZ3J1bW1lbHQ6ICIpOworCSAgICBmb3IoaT1zaXplb2YobGl2TGlzdCk7aS0tOykKKwkgICAgeyBpZihsaXZMaXN0W2ldLT5RdWVyeVByb3AoUF9CTElORCkpCisJICAgICAgeyB0ZWxsX29iamVjdCh0aGlzX29iamVjdCgpLGJyZWFrX3N0cmluZygKKwkgbGl2TGlzdFtpXS0+TmFtZShXRVIpKyIgaXN0IHNjaG9uIGJsaW5kLiIsNzcpKTsKKwkgICAgICAgIGNvbnRpbnVlOworCSAgICAgIH0KKwkgICAgICB0ZWxsX29iamVjdCh0aGlzX29iamVjdCgpLGJyZWFrX3N0cmluZygKKwkgIkR1IGtyYXR6dCAiK2xpdkxpc3RbaV0tPm5hbWUoV0VNKSsiIGRpZSBBdWdlbiBhdXMuIiw3NykpOworCSAgICAgIHRlbGxfb2JqZWN0KGxpdkxpc3RbaV0sYnJlYWtfc3RyaW5nKAorCSBOYW1lKFdFUikrIiBrcmF0enQgRGlyIGRpZSBBdWdlbiBhdXMhIiw3NykpOworCSAgICAgIHRlbGxfcm9vbShlbnZpcm9ubWVudCh0aGlzX29iamVjdCgpKSxicmVha19zdHJpbmcoCisJIE5hbWUoV0VSKSsiIGtyYXR6dCAiK2xpdkxpc3RbaV0tPm5hbWUoV0VNKQorCSsiIGRpZSBBdWdlbiBhdXMuIiw3NyksKHt0aGlzX29iamVjdCgpLGxpdkxpc3RbaV19KSk7CisJICAgICAgbGl2TGlzdFtpXS0+U2V0UHJvcChQX0JMSU5ELDEpOworCSAgICB9CisJICAgIHJldHVybiIiOworCSAgfQorCUF1ZmdlcnVmZW4gd2lyZCBkYXMgZ2FuemUgYW0gQmVzdGVuIGluIGVpbmVtIENoYXQ6CisJICB2b2lkIGNyZWF0ZSgpCisJICB7IDo6Y3JlYXRlKCk7CisJICAgIC4uLgorCSAgICBTZXRQcm9wKFBfQ0hBVF9DSEFOQ0UsMTApOworCSAgICBTZXRDaGF0cygyMCwoe2JyZWFrX3N0cmluZygKKwkgIk5pY2h0IGFuZ3JlaWZlbiwgc29uc3Qgd2lyc3QgRHUgbm9jaCBibGluZCEiLDc3LAorCSBOYW1lKFdFUikrIiBicnVlbGx0OiAiKSwKKwkgICAgICAgICAgICAgICAgICAiQEBibGluZFRoZW1BbGxAQCJ9KSk7CisJICB9CisJTmF0dWVybGljaCBzaW5kIGF1Y2ggbm9jaCBtZWhyIEZ1bmt0aW9uZW4gdW5kIE1lbGR1bmdlbiBhbHMgQ2hhdHMKKwltb2VnbGljaDogRGllIHp3ZWkgaW0gQmVpc3BpZWwgc2luZCBpbSBOb3JtYWxmYWxsIGV0d2FzIHdlbmlnLgorCitTSUVIRSBBVUNIOgorCVNlbGVjdEVuZW15KCksIFF1ZXJ5RW5lbWllcygpLCBJc0VuZW15KCksIFBfR0hPU1QsIFBfTk9fQVRUQUNLLAorCVNldENoYXRzLCBQX0NIQVRfQ0hBTkNFCisKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KK0xhc3QgbW9kaWZpZWQ6IFRodSBNYXkgMjcgMTU6MDE6NDggMTk5OSBieSBQYXRyeW4KZGlmZiAtLWdpdCBhL2RvYy9sZnVuL1ByZXNlbnRFbmVteVJvd3MgYi9kb2MvbGZ1bi9QcmVzZW50RW5lbXlSb3dzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjMzOTY0MmMKLS0tIC9kZXYvbnVsbAorKysgYi9kb2MvbGZ1bi9QcmVzZW50RW5lbXlSb3dzCkBAIC0wLDAgKzEsNDAgQEAKKworUHJlc2VudEVuZW15Um93cygpCisKKworRlVOS1RJT046CisgICAgICAgIHZhcmFyZ3MgbWl4ZWQgKlByZXNlbnRFbmVteVJvd3Mob2JqZWN0ICpoZXJlKQorCitERUZJTklFUlQgSU46CisgICAgICAgIC9zdGQvbGl2aW5nL3RlYW0uYworCitBUkdVTUVOVEU6CisgICAgICAgIFJ1ZWNrZ2FiZXdlcnQgdm9uIFByZXNlbnRFbmVtaWVzIGthbm4gdWViZXJnZWJlbiB3ZXJkZW4uCisKK0JFU0NIUkVJQlVORzoKKyAgICAgICAgRXJnaWJ0IGRpZSBmZWluZGxpY2hlbiBSZWloZW4uCisKK1JVRUNLR0FCRVdFUlQ6CisgICAgICAgIEVpbiBBcnJheSwgYmVzdGVoZW5kIGF1cyBNQVhfVEVBTVJPV1MgQXJyYXlzIG1pdCBkZW4gT2JqZWt0ZW4KKyAgICAgICAgZGVyIGFud2VzZW5kZW4gRmVpbmRlLgorCitCRU1FUktVTkdFTjoKKyAgICAgICAgSmVkZSBSZWloZSBpc3QgU3VtbWUgZGVyIGVudHNwcmVjaGVuZGVuIFJlaWhlbiBkZXIKKyAgICAgICAgYW53ZXNlbmRlbiBUZWFtcy4KKyAgICAgICAgRmVpbmRlLCBkaWUgaW4ga2VpbmVtIFRlYW0gc2luZCwgc3RlaGVuIGltIGVyc3RlbiBBcnJheS4KKworU0lFSEUgQVVDSDoKKyAgICAgICAgVWViZXJzaWNodDogdGVhbWthbXBmCisgICAgICAgIFByb3BlcnRpZXM6IFBfVEVBTSwgUF9BU1NPQ19NRU1CRVJTLCBQX1RFQU1fQVRUQUNLX0NNRCwKKyAgICAgICAgICAgICAgICAgICAgUF9URUFNX0FVVE9GT0xMT1csIFBfVEVBTV9DT0xPUlMsIFBfVEVBTV9MRUFERVIsCisgICAgICAgICAgICAgICAgICAgIFBfVEVBTV9ORVdNRU1CRVIsIFBfVEVBTV9XQU5URURfUk9XLCBQX1RFQU1fV0lNUFlfUk9XCisgICAgICAgIEJld2VndW5nOiAgIElzVGVhbU1vdmUsIFRlYW1GbGVlCisgICAgICAgIE1pdGdsaWVkZXI6IElzVGVhbUxlYWRlciwgVGVhbU1lbWJlcnMKKyAgICAgICAgS2FtcGY6ICAgICAgQXNzb2NNZW1iZXIsIERlQXNzb2NNZW1iZXIsIEluc2VydEVuZW15VGVhbSwKKyAgICAgICAgICAgICAgICAgICAgU2VsZWN0TmVhckVuZW15LCBTZWxlY3RGYXJFbmVteQorICAgICAgICBQb3NpdGlvbmVuOiBQcmVzZW50UG9zaXRpb24sIFByZXNlbnRSb3dzLCBQcmVzZW50VGVhbVBvc2l0aW9uLAorICAgICAgICAgICAgICAgICAgICBTd2FwUm93cworICAgICAgICBTb25zdGlnZXM6ICBUZWFtUHJlZml4LCB0ZWFta2FtcGZfaW50ZXJuCisKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KK0xhc3QgbW9kaWZpZWQ6IDE2LTA4LTIwMTAsIEdhYnlsb24KZGlmZiAtLWdpdCBhL2RvYy9sZnVuL1ByZXNlbnRQb3NpdGlvbiBiL2RvYy9sZnVuL1ByZXNlbnRQb3NpdGlvbgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5lYTc2NWNmCi0tLSAvZGV2L251bGwKKysrIGIvZG9jL2xmdW4vUHJlc2VudFBvc2l0aW9uCkBAIC0wLDAgKzEsMzggQEAKKworUHJlc2VudFBvc2l0aW9uKCkKKworCitGVU5LVElPTjoKKyAgICAgICAgdmFyYXJncyBpbnQgUHJlc2VudFBvc2l0aW9uKG1peGVkIHBtYXApCisKK0RFRklOSUVSVCBJTjoKKyAgICAgICAgL3N0ZC9saXZpbmcvdGVhbS5jCisKK0FSR1VNRU5URToKKyAgICAgICAgUnVlY2tnYWJld2VydCB2b24gUHJlc2VudFRlYW1Sb3dzKCkgb2RlciBQcmVzZW50VGVhbVBvc2l0aW9ucygpCisgICAgICAgIGthbm4gdWViZXJnZWJlbiB3ZXJkZW4uCisKK0JFU0NIUkVJQlVORzoKKyAgICAgICAgRXJnaWJ0IGRpZSBOdW1tZXIgZGVyIFJlaWhlLCBpbiBkZXIgZGVyIFNwaWVsZXIgZ2VyYWRlIHN0ZWh0LgorCitSVUVDS0dBQkVXRVJUOgorICAgICAgICBSZWloZW5udW1tZXIgaW0gQmVyZWljaCB2b24gMSBiaXMgVEVBTV9NQVhST1dTLgorCitCRU1FUktVTkdFTjoKKyAgICAgICAgSXN0IGVpbiBTcGllbGVyIGluIGtlaW5lbSBUZWFtLCBzbyBzdGVodCBlciBhdXRvbWF0aXNjaCBpbiBSZWloZSAxLgorCitTSUVIRSBBVUNIOgorICAgICAgICBVZWJlcnNpY2h0OiB0ZWFta2FtcGYKKyAgICAgICAgUHJvcGVydGllczogUF9URUFNLCBQX0FTU09DX01FTUJFUlMsIFBfVEVBTV9BVFRBQ0tfQ01ELAorICAgICAgICAgICAgICAgICAgICBQX1RFQU1fQVVUT0ZPTExPVywgUF9URUFNX0NPTE9SUywgUF9URUFNX0xFQURFUiwKKyAgICAgICAgICAgICAgICAgICAgUF9URUFNX05FV01FTUJFUiwgUF9URUFNX1dBTlRFRF9ST1csIFBfVEVBTV9XSU1QWV9ST1cKKyAgICAgICAgQmV3ZWd1bmc6ICAgSXNUZWFtTW92ZSwgVGVhbUZsZWUKKyAgICAgICAgTWl0Z2xpZWRlcjogSXNUZWFtTGVhZGVyLCBUZWFtTWVtYmVycworICAgICAgICBLYW1wZjogICAgICBBc3NvY01lbWJlciwgRGVBc3NvY01lbWJlciwgSW5zZXJ0RW5lbXlUZWFtLAorICAgICAgICAgICAgICAgICAgICBTZWxlY3ROZWFyRW5lbXksIFNlbGVjdEZhckVuZW15CisgICAgICAgIFBvc2l0aW9uZW46IFByZXNlbnRSb3dzLCBQcmVzZW50RW5lbXlSb3dzLCBQcmVzZW50VGVhbVBvc2l0aW9uLAorICAgICAgICAgICAgICAgICAgICBTd2FwUm93cworICAgICAgICBTb25zdGlnZXM6ICBUZWFtUHJlZml4LCB0ZWFta2FtcGZfaW50ZXJuCisKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KK0xhc3QgbW9kaWZpZWQ6IDE2LTA4LTIwMTAsIEdhYnlsb24KZGlmZiAtLWdpdCBhL2RvYy9sZnVuL1ByZXNlbnRSb3dzIGIvZG9jL2xmdW4vUHJlc2VudFJvd3MKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZThjODU0YQotLS0gL2Rldi9udWxsCisrKyBiL2RvYy9sZnVuL1ByZXNlbnRSb3dzCkBAIC0wLDAgKzEsODggQEAKKworUHJlc2VudFJvd3MoKQorCisKK0ZVTktUSU9OOgorICAgIG1peGVkICpQcmVzZW50Um93cyhvYmplY3QgZW52KTsKKworREVGSU5JRVJUIElOOgorICAgIFRFQU1fT0JKRUNUIChzLiA8bGl2aW5nL3RlYW0uaD4pCisKK0FSR1VNRU5URToKKyAgICBvYmplY3QgZW52CisgICAgICAgIERhcyBFbnZpcm9ubWVudCBkZXMgZ2V3dWVuc2NodGVuIE9iamVrdGVzLgorCitCRVNDSFJFSUJVTkc6CisgICAgTWl0IGRpZXNlciBGdW5rdGlvbiBiZWtvbW10IG1hbiBkaWUgYWt0dWVsbGVuIFRlYW1yZWloZW4sIGRpZSBpbSBBcmd1bWVudAorICAgIGVudiBhbndlc2VuZCBzaW5kLCBkZXMgVGVhbXMgenVydWVja2dlZ2ViZW4uIElzdCBlbnYga2VpbiBPYmpla3QsIHNvCisgICAgd2lyZCBlbnZpcm9ubWVudCh0aGlzX3BsYXllcigpKSBhbHMgc29sY2hlcyBhbmdlbm9tbWVuLgorCitSVUVDS0dBQkVXRVJUOgorICAgIEVzIHdpcmQgZWluIG1peGVkLUFycmF5IHp1cnVlY2tnZWdlYmVuLCBkYWJlaSBzaW5kIGRpZSBlaW56ZWxuZW4gUmVpaGVuCisgICAgc2VsYnN0IHdpZWRlcnVtIEFycmF5cyBtaXQgZGVuIFNwaWVsZXJvYmpla3Rlbi4KKworQkVJU1BJRUw6CisKKyAgICBFaW4gTlBDIGltIEthbXBmIGxhZXNzdCBlaW5lIEZldWVyd2FsemUgYXVmIGVpbiBUZWFtIGxvcywgd2VsY2hlIGFiZXIgbnVyCisgICAgU3BpZWxlciBpbiBkZXIgZXJzdGVuIHVuZCB6d2VpdGVuIFRlYW1yZWloZSBTY2hhZGVuIHp1ZnVlZ2VuIHNvbGwuCisKKyAgICB2b2lkIEF0dGFjayggb2JqZWN0IGVuZW15ICkKKyAgICB7CisgICAgIC4uLgorCisgICAgIG9iamVjdCB0ZWFtID0gZW5lbXktPlF1ZXJ5UHJvcChQX1RFQU0pOworCisgICAgIGlmICggb2JqZWN0cCh0ZWFtKSApCisgICAgICB7CisgICAgICAgbWl4ZWQgdGVhbXJvd3MgPSB0ZWFtLT5QcmVzZW50Um93cyhlbmVteSk7CisKKy8vICBJbmhhbHQgdm9uICJ0ZWFtcm93cyIgenUgZGllc2VtIFplaXRwdW5rdDoKKworLy8gICh7ICh7Wy9kd2FyZjpoYXV3ZWddfSksKHt9KSwoe1svZWxmOnNwaXR6b2hyXX0pLCh7fSksKHt9KSwoe30pIH0pCisKKy8vICBJbiBkZXIgVW1nZWJ1bmcgdm9uIFp3ZXJnIEhhdXdlZyBzdGVodCBhbHNvIG5vY2ggRWxmIFNwaXR6b2hyLCB1bmQgendhcgorLy8gIGluIGRlciBkcml0dGVuIFRlYW1yZWloZSAoZGVyIGhhdCBHbHVlY2sgZ2VoYWJ0KS4KKy8vICBXZW5uIGRlbSBUZWFtIG5vY2ggbWVociBTcGllbGVyIGFuZ2Vob2VyZW4sIGJlZmluZGVuIHNpZSBzaWNoIGdlcmFkZQorLy8gIG5pY2h0IGluIGRlciBVbWdlYnVuZyAoc3ByaWNoIGltIHNlbGJlbiBSYXVtKSB3aWUgSGF1d2VnLgorCisgICAgICAgZm9yZWFjaCAoIGkgOiAyICkKKyAgICAgICAgeworICAgICAgICAgZm9yZWFjaCAoIG9iamVjdCBwbCA6IHRlYW1yb3dzW2ldICkKKyAgICAgICAgICB7CisgICAgICAgICAgIHRlbGxfb2JqZWN0KHBsLCJEZXIgRmV1ZXJ0ZXVmZWwgbGFlc3N0IGVpbmUgRmV1ZXJ3YWx6ZSBhdWYgRGljaCAiCisgICAgICAgICAgICAgICAidW5kIERlaW4gVGVhbSBsb3MuXG4iKTsKKworICAgICAgICAgICBwbC0+RGVmZW5kKDIwMCtyYW5kb20oMjAwKSwoe0RUX0ZJUkV9KSwoW1NQX1NIT1dfREFNQUdFOjFdKSxUTyk7CisgICAgICAgICAgfQorICAgICAgICB9CisgICAgICB9CisgICAgIGVsc2UKKyAgICAgIHsKKyAgICAgICB0ZWxsX29iamVjdChlbmVteSwiRGVyIEZldWVydGV1ZmVsIGxhZXNzdCBlaW5lIEZldWVyd2FsemUgYXVmIERpY2ggIgorICAgICAgICAgICAibG9zLlxuIik7CisKKyAgICAgICBlbmVteS0+RGVmZW5kKDIwMCtyYW5kb20oMjAwKSwoe0RUX0ZJUkV9KSwoW1NQX1NIT1dfREFNQUdFOjFdKSxUTyk7CisgICAgICB9CisKKyAgICAgLi4uCisgICAgfQorCitCRU1FUktVTkc6CisgICAgTWFuIGJlYWNodGUsIGRhc3MgZGFzIGVyc3RlIEFyZ3VtZW50IChhbHNvIEFyZ3VtZW50IDApIGRpZSBlcnN0ZQorICAgIFRlYW1yZWloZSBpc3QuCisKK1NJRUhFIEFVQ0g6CisgICAgICAgIFVlYmVyc2ljaHQ6IHRlYW1rYW1wZgorICAgICAgICBQcm9wZXJ0aWVzOiBQX1RFQU0sIFBfQVNTT0NfTUVNQkVSUywgUF9URUFNX0FUVEFDS19DTUQsCisgICAgICAgICAgICAgICAgICAgIFBfVEVBTV9BVVRPRk9MTE9XLCBQX1RFQU1fQ09MT1JTLCBQX1RFQU1fTEVBREVSLAorICAgICAgICAgICAgICAgICAgICBQX1RFQU1fTkVXTUVNQkVSLCBQX1RFQU1fV0FOVEVEX1JPVywgUF9URUFNX1dJTVBZX1JPVworICAgICAgICBCZXdlZ3VuZzogICBJc1RlYW1Nb3ZlLCBUZWFtRmxlZQorICAgICAgICBNaXRnbGllZGVyOiBJc1RlYW1MZWFkZXIsIFRlYW1NZW1iZXJzCisgICAgICAgIEthbXBmOiAgICAgIEFzc29jTWVtYmVyLCBEZUFzc29jTWVtYmVyLCBJbnNlcnRFbmVteVRlYW0sCisgICAgICAgICAgICAgICAgICAgIFNlbGVjdE5lYXJFbmVteSwgU2VsZWN0RmFyRW5lbXkKKyAgICAgICAgUG9zaXRpb25lbjogUHJlc2VudFBvc2l0aW9uLCBQcmVzZW50RW5lbXlSb3dzLCBQcmVzZW50VGVhbVBvc2l0aW9uLAorICAgICAgICAgICAgICAgICAgICBTd2FwUm93cworICAgICAgICBTb25zdGlnZXM6ICBUZWFtUHJlZml4LCB0ZWFta2FtcGZfaW50ZXJuCisKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KK0xhc3QgbW9kaWZpZWQ6IDE2LTA4LTIwMTAsIEdhYnlsb24KZGlmZiAtLWdpdCBhL2RvYy9sZnVuL1ByZXNlbnRUZWFtUG9zaXRpb25zIGIvZG9jL2xmdW4vUHJlc2VudFRlYW1Qb3NpdGlvbnMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNzZhZGMxNwotLS0gL2Rldi9udWxsCisrKyBiL2RvYy9sZnVuL1ByZXNlbnRUZWFtUG9zaXRpb25zCkBAIC0wLDAgKzEsNDAgQEAKKworUHJlc2VudFRlYW1Qb3NpdGlvbnMoKQorCisKK0ZVTktUSU9OOgorICAgICAgICB2YXJhcmdzIG1hcHBpbmcgUHJlc2VudFRlYW1Qb3NpdGlvbnMobWl4ZWQgcG1hcCkKKworREVGSU5JRVJUIElOOgorICAgICAgICAvc3RkL2xpdmluZy90ZWFtLmMKKworQVJHVU1FTlRFOgorICAgICAgICBSdWVja2dhYmV3ZXJ0IHZvbiBQcmVzZW50VGVhbVJvd3MoKSBrYW5uIHVlYmVyZ2ViZW4gd2VyZGVuLgorCitCRVNDSFJFSUJVTkc6CisgICAgICAgIEVybWl0dGVsdCBkaWUgUmVpaGVubnVtbWVybiBhbGxlciBhbndlc2VuZGVyIFRlYW1taXRnbGllZGVyLgorCitSVUVDS0dBQkVXRVJUOgorICAgICAgICBFaW4gTWFwcGluZyBtaXQgZGVuIFJlaWhlbm51bW1lcm4gKHZvbiAxIGJpcyBNQVhfVEVBTVJPV1MpCisgICAgICAgIGRlciBhbndlc2VuZGVuIFRlYW1taXRnbGllZGVyLgorCitCRU1FUktVTkdFTjoKKyAgICAgICAgS2FubiBhdWNoIHp1ciBLb252ZXJ0aWVydW5nIGFuZGVyZXIgS2FtcGZyZWloZW4tQXJyYXlzIGluCisgICAgICAgIGVpbiBQb3NpdGlvbnMtTWFwcGluZyB2ZXJ3ZW5kZXQgd2VyZGVuLgorICAgICAgICBJc3QgZGVyIFNwaWVsZXIgaW4ga2VpbmVtIFRlYW0sIHNvIHN0ZWh0IGVyIGluIFJlaWhlIDEuCisKK1NJRUhFIEFVQ0g6CisgICAgICAgIFVlYmVyc2ljaHQ6IHRlYW1rYW1wZgorICAgICAgICBQcm9wZXJ0aWVzOiBQX1RFQU0sIFBfQVNTT0NfTUVNQkVSUywgUF9URUFNX0FUVEFDS19DTUQsCisgICAgICAgICAgICAgICAgICAgIFBfVEVBTV9BVVRPRk9MTE9XLCBQX1RFQU1fQ09MT1JTLCBQX1RFQU1fTEVBREVSLAorICAgICAgICAgICAgICAgICAgICBQX1RFQU1fTkVXTUVNQkVSLCBQX1RFQU1fV0FOVEVEX1JPVywgUF9URUFNX1dJTVBZX1JPVworICAgICAgICBCZXdlZ3VuZzogICBJc1RlYW1Nb3ZlLCBUZWFtRmxlZQorICAgICAgICBNaXRnbGllZGVyOiBJc1RlYW1MZWFkZXIsIFRlYW1NZW1iZXJzCisgICAgICAgIEthbXBmOiAgICAgIEFzc29jTWVtYmVyLCBEZUFzc29jTWVtYmVyLCBJbnNlcnRFbmVteVRlYW0sCisgICAgICAgICAgICAgICAgICAgIFNlbGVjdE5lYXJFbmVteSwgU2VsZWN0RmFyRW5lbXkKKyAgICAgICAgUG9zaXRpb25lbjogUHJlc2VudFBvc2l0aW9uLCBQcmVzZW50Um93cywgUHJlc2VudEVuZW15Um93cywKKyAgICAgICAgICAgICAgICAgICAgU3dhcFJvd3MKKyAgICAgICAgU29uc3RpZ2VzOiAgVGVhbVByZWZpeCwgdGVhbWthbXBmX2ludGVybgorCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCitMYXN0IG1vZGlmaWVkOiAxNi0wOC0yMDEwLCBHYWJ5bG9uCmRpZmYgLS1naXQgYS9kb2MvbGZ1bi9QcmVzZW50VGVhbVJvd3MgYi9kb2MvbGZ1bi9QcmVzZW50VGVhbVJvd3MKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMzhiZmE3ZQotLS0gL2Rldi9udWxsCisrKyBiL2RvYy9sZnVuL1ByZXNlbnRUZWFtUm93cwpAQCAtMCwwICsxLDI0IEBACitQcmVzZW50VGVhbVJvd3MoKQorCitGVU5LVElPTjoKKwltaXhlZCAqUHJlc2VudFRlYW1Sb3dzKCkKKworREVGSU5JRVJUIElOOgorCS9zdGQvbGl2aW5nL3RlYW0uYworCitBUkdVTUVOVEU6CisJa2VpbmUKKworQkVTQ0hSRUlCVU5HOgorCUVyZ2lidCBkaWUgUmVpaGVuIG1pdCBkZW4gYW53ZXNlbmRlbiBUZWFtbWl0Z2xpZWRlcm4uCisKK1JVRUNLR0FCRVdFUlQ6CisJRWluIEFycmF5IGJlc3RlaGVuZCBhdXMgTUFYX1RFQU1ST1dTIEFycmF5cyBtaXQgZGVuIE9iamVrdGVuCisgICAgICAgIGRlciBhbndlc2VuZGVuIFRlYW1taXRnbGllZGVyLgorCitCRU1FUktVTkdFTjoKKwlXZW5uIGRlciBTcGllbGVyIGluIGtlaW5lbSBUZWFtIGlzdCwgZW50aGFlbHQgZGFzIGVyc3RlIEFycmF5CisJbnVyIGRlbiBTcGllbGVyIHVuZCBkaWUgYW5kZXJlbiBBcnJheXMgc2luZCBsZWVyLgorCitTSUVIRSBBVUNIOgorCXRlYW1zCmRpZmYgLS1naXQgYS9kb2MvbGZ1bi9QcmV2ZW50Rm9sbG93IGIvZG9jL2xmdW4vUHJldmVudEZvbGxvdwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4xMDBmOTJkCi0tLSAvZGV2L251bGwKKysrIGIvZG9jL2xmdW4vUHJldmVudEZvbGxvdwpAQCAtMCwwICsxLDQ5IEBACitQcmV2ZW50Rm9sbG93KCkKKworRlVOS1RJT046CisgIGludCBQcmV2ZW50Rm9sbG93KG9iamVjdCBkZXN0KQorCitBUkdVTUVOVEU6CisgIGRlc3Q6IFppZWxvYmpla3QsIGluIGRhcyBkZXIgVmVyZm9sZ3RlIGJld2VndCB3ZXJkZW4gc29sbC4KKworRlVOS1RJT046CisgIEluIGplZGVtIFZlcmZvbGdlciwgZGVyIG1pdCBBZGRQdXJzdWVyIGluIGRpZSBMaXN0ZSBkZXIgVmVyZm9sZ2VyIAorICBlaW5nZXRyYWdlbiB3dXJkZSwgd2lyZCB2b3IgZGVtIEJld2VnZW4gaW4gZGFzIFppZWxvYmpla3QgZGllIEZ1bmt0aW9uCisgIFByZXZlbnRGb2xsb3cgbWl0IGRlbSBaaWVsb2JqZWt0IGFscyBBcmd1bWVudCBhdWZnZXJ1ZmVuLgorCitSVUVDS0dBQkVXRVJUOgorICAwOiBWZXJmb2xnZXIgZGFyZiBpbiBkYXMgWmllbG9iamVrdCBmb2xnZW4KKyAgMTogVmVyZm9sZ2VyIGRhcmYgaW4gZGllc2VzIFppZWxvYmpla3QgbmljaHQgZm9sZ2VuCisgICAgIChWZXJmb2xndW5nIGJsZWlidCB3ZWl0ZXJoaW4gYWt0aXYpCisgIDI6IFZlcmZvbGdlciBkYXJmIGluIGRpZXNlcyBaaWVsb2JqZWt0IG5pY2h0IGZvbGdlbgorICAgICAoVmVyZm9sZ3VuZyB3aXJkIGFiZ2Vicm9jaGVuIHVuZCBWZXJmb2xnZXIgYXVzIGRlciBWZXJmb2xnZXJsaXN0ZQorICAgICAgYXVzZ2V0cmFnZW4pCisKK0JFTUVSS1VORzoKKyAgRHVyY2ggUHJldmVudEZvbGxvdyBrYW5uIGRlciByYWV1bWxpY2hlIEJlcmVpY2gsIGluIGRlbSB2ZXJmb2xndCB3ZXJkZW4KKyAgZGFyZiwgZWluZ2VzY2hyYWVua3Qgd2VyZGVuLgorCitCRUlTUElFTEU6CisgIE1hbiBtb2VjaHRlLCBkYXNzIGVpbiBOUEMgYXVmIGVpbmVyIEluc2VsIG5pY2h0IG1pdCBkZW0gU3BpZWxlciBpbiBkYXMKKyAgQm9vdCBzdGVpZ3QsIHVtIG1pdCBkZW0gU3BpZWxlciB6dXNhbW1lbiB2b24gZGVyIEluc2VsIGhlcnVudGVyenVrb21tZW4uCisKKyAgI2RlZmluZSBQQVRIKHgpICgiL2QvLi4uLy4uLi9tZWluL3BmYWQvKyh4KSIpICAgICAgICAgICAgICAgICAgICAgICAgICAgCisKKyAgLi4uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCisKKyAgaW50IFByZXZlbnRGb2xsb3cob2JqZWN0IGJvb3QpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAorICAgeworICAgIGlmICggb2JqZWN0X25hbWUoYm9vdClbMC4uc3RybGVuKFBBVEgoImJvb3QiKSktMV0gPT0gUEFUSCgiYm9vdCIpICkKKyAgICAgcmV0dXJuIDE7CisgICB9ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAorCisgIERpZXNlIEZ1bmt0aW9ucy1EZWZpbml0aW9uIGlzdCBzZWhyIGZsZXhpYmVsLCBkZW5uIHNpZSBlcmxhdWJ0IHNvd29obAorICBzcGFldGVyZSBQZmFkYW5wYXNzdW5nIGFscyBhdWNoIG1laHJlcmUgQm9vdGUuCisgIERhIHVlYmVyIGRpZSBGdW5rdGlvbiBzdHJsZW4oKSBudXIgYmlzIHp1bSBsZXR6dGVuIEJ1Y2hzdGFiZW4gZGVzICAgIAorICBhbmdlZ2ViZW5lbiBTdHJpbmdzIGdldGVzdGV0IHdpcmQsIHdpcmQgYWxzbyBnbGVpY2h6ZWl0aWcgYXVjaCBhdWYgICAgICAgICAgCisgIGJvb3RbMV0sIGJvb3RbMl0gdXN3LiBnZXRlc3RldC4KKworU0lFSEUgQVVDSDoKKyAgIkFkZFB1cnN1ZXIiLCAiUmVtb3ZlUHVyc3VlciIKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KK0xhc3QgbW9kaWZpZWQ6IFR1ZSBKdW4gMTAgMTM6NTk6MzAgMjAwMyBieSBHYWJ5bG9uClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZG9jL2xmdW4vUHJldmVudEluc2VydCBiL2RvYy9sZnVuL1ByZXZlbnRJbnNlcnQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNTVjMTUzMwotLS0gL2Rldi9udWxsCisrKyBiL2RvYy9sZnVuL1ByZXZlbnRJbnNlcnQKQEAgLTAsMCArMSw0NiBAQAorUHJldmVudEluc2VydCgpCisKK0ZVTktUSU9OOgorICAgICBpbnQgUHJldmVudEluc2VydChvYmplY3Qgb2IpOworCitERUZJTklFUlQgSU46CisgICAgIC9zdGQvY29udGFpbmVyL3Jlc3RyaWN0aW9ucy5jCisKK0FSR1VNRU5URToKKyAgICAgb2IKKyAgICAgICAgICBEYXMgT2JqZWt0LCBkYXMgaW4gZGVuIEJlaGFlbHRlciBlaW5nZWZ1ZWd0IHdlcmRlbiBzb2xsLgorCitCRVNDSFJFSUJVTkc6CisgICAgIE1pdCBkaWVzZXIgRnVua3Rpb24ga2FubiBlaW4gQmVoYWVsdGVyIHBydWVmZW4sIG9iIGVyIGRhcyBPYmpla3Qgb2IKKyAgICAgYXVmbmVobWVuIG1vZWNodGUgb2RlciBuaWNodC4KKworUlVlQ0tHQUJFV0VSVDoKKyAgICAgMCwgd2VubiBkYXMgT2JqZWt0IGF1Zmdlbm9tbWVuIHdlcmRlbiBrYW5uOyBlaW4gV2VydCBncm9lc3NlciBhbHMgMAorICAgICB6ZWlndCBhbiwgZGFzcyBkYXMgT2JqZWt0IG5pY2h0IGF1Zmdlbm9tbWVuIHdlcmRlbiBzb2xsLgorCitCRU1FUktVTkdFTjoKKyAgICAgV2VubiBvYiBtaXQgZGVtIEZsYWcgTV9OT0NIRUNLIGJld2VndCB3aXJkLCB3aXJkIFByZXZlbnRJbnNlcnQoKSB6d2FyCisgICAgIGF1ZmdlcnVmZW4sIGRhcyBPYmpla3Qgd2lyZCBqZWRvY2ggYXVmIGplZGVuIEZhbGwgaW4gZGVuIEJlaGFlbHRlcgorICAgICBiZXdlZ3QsIHVuYWJoYWVuZ2lnIHZvbSBSdWVja2dhYmV3ZXJ0IQorCitCRUlTUElFTEU6CisgICAgIFVtIHp1IHZlcmhpbmRlcm4sIGRhc3MgbWFuIEdlbGQgaW4gZWluZW4gQmVoYWVsdGVyIHN0ZWNrZW4ga2Fubiwgc29sbHRlCisgICAgIG1hbiB3aWUgZm9sZ3Qgdm9yZ2VoZW46CisKKyAgICAgdmFyYXJncyBpbnQgUHJldmVudEluc2VydChvYmplY3Qgb2IpCisgICAgIHsKKyAgICAgICAvLyBXZW5uIGVzIEdlbGQgaXN0LCBlcmhlYmVuIHdpciBzb2ZvcnQgRWluc3BydWNoCisgICAgICAgaWYgKG9iLT5pZCgiZ2VsZCIpKQorICAgICAgICAgcmV0dXJuIDE7CisgICAgICAgLy8gQW5zb25zdGVuIGtvZW5udGUgZWluIGVyZXJidGVzIE9iamVrdCBub2NoIEVpbnNwcnVjaCBlcmhlYmVuIQorICAgICAgIGVsc2UKKyAgICAgICAgIHJldHVybiA6OlByZXZlbnRJbnNlcnQob2IpOworICAgICB9CisKK1NJRUhFIEFVQ0g6CisgICAgIFByZXZlbnRMZWF2ZSgpLCBOb3RpZnlJbnNlcnQoKSwgTm90aWZ5TGVhdmUoKSwgTWF5QWRkT2JqZWN0KCksCisgICAgIFByZXZlbnRJbnNlcnRMaXZpbmcoKSwgUHJldmVudExlYXZlTGl2aW5nKCksIE5vdGlmeU1vdmUoKSwKKyAgICAgUHJldmVudE1vdmUoKSwgTWF5QWRkV2VpZ2h0KCksIG1vdmUoKSwgL3N0ZC9jb250YWluZXIvcmVzdHJpY3Rpb25zLmMKKworLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorTGFzdCBtb2RpZmllZDogU2F0IERlYyAxOCAwMjowMDowMCAxOTk5IGJ5IFRpYW1hawpkaWZmIC0tZ2l0IGEvZG9jL2xmdW4vUHJldmVudEluc2VydExpdmluZyBiL2RvYy9sZnVuL1ByZXZlbnRJbnNlcnRMaXZpbmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNzhmNDMxZgotLS0gL2Rldi9udWxsCisrKyBiL2RvYy9sZnVuL1ByZXZlbnRJbnNlcnRMaXZpbmcKQEAgLTAsMCArMSwzNSBAQAorUHJldmVudEluc2VydExpdmluZygpCisKK0ZVTktUSU9OOgorICAgICBpbnQgUHJldmVudEluc2VydExpdmluZyhvYmplY3Qgb2IpOworCitERUZJTklFUlQgSU46CisgICAgIC9zdGQvY29udGFpbmVyL3Jlc3RyaWN0aW9ucy5jCisKK0FSR1VNRU5URToKKyAgICAgb2IKKyAgICAgICAgICBEYXMgTGl2aW5nLCBkYXMgaW4gZGVuIEJlaGFlbHRlciBlaW5nZWZ1ZWd0IHdlcmRlbiBzb2xsLgorCitCRVNDSFJFSUJVTkc6CisgICAgIE1pdCBkaWVzZXIgRnVua3Rpb24ga2FubiBlaW4gQmVoYWVsdGVyIHBydWVmZW4sIG9iIGVyIGRhcyBMaXZpbmcgb2IKKyAgICAgYXVmbmVobWVuIG1vZWNodGUgb2RlciBuaWNodC4KKworUlVlQ0tHQUJFV0VSVDoKKyAgICAgMCwgd2VubiBkYXMgTGl2aW5nIGF1Zmdlbm9tbWVuIHdlcmRlbiBrYW5uOyBlaW4gV2VydCBncm9lc3NlciBhbHMgMAorICAgICB6ZWlndCBhbiwgZGFzcyBkYXMgTGl2aW5nIG5pY2h0IGF1Zmdlbm9tbWVuIHdlcmRlbiBzb2xsLgorCitCRU1FUktVTkdFTjoKKyAgICAgV2VubiBvYiBtaXQgZGVtIEZsYWcgTV9OT0NIRUNLIGJld2VndCB3aXJkLCB3aXJkIFByZXZlbnRJbnNlcnRMaXZpbmcoKSAKKyAgICAgendhciBhdWZnZXJ1ZmVuLCBkYXMgTGl2aW5nIHdpcmQgamVkb2NoIGF1ZiBqZWRlbiBGYWxsIGluIGRlbiBCZWhhZWx0ZXIKKyAgICAgYmV3ZWd0LCB1bmFiaGFlbmdpZyB2b20gUnVlY2tnYWJld2VydCEKKworCitTSUVIRSBBVUNIOgorICAgICBQcmV2ZW50TGVhdmVMaXZpbmcoKSwgL3N0ZC9jb250YWluZXIvcmVzdHJpY3Rpb25zLmMsCisgICAgIFByZXZlbnRNb3ZlKCksIFByZXZlbnRJbnNlcnQoKSwgUHJldmVudExlYXZlKCksCisgICAgIE5vdGlmeU1vdmUoKSwgTm90aWZ5SW5zZXJ0KCksIE5vdGlmeUxlYXZlKCksIE5vdGlmeVJlbW92ZSgpLAorICAgICBtb3ZlKCksIGluaXQoKSwgZXhpdCgpLAorICAgICBJbml0QXR0YWNrKCksIEV4aXRBdHRhY2soKQorCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCitMYXN0IG1vZGlmaWVkOiAwNC4wOC4yMDA3LCBaZXNzdHJhCmRpZmYgLS1naXQgYS9kb2MvbGZ1bi9QcmV2ZW50TGVhdmUgYi9kb2MvbGZ1bi9QcmV2ZW50TGVhdmUKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uODVkNDZhMwotLS0gL2Rldi9udWxsCisrKyBiL2RvYy9sZnVuL1ByZXZlbnRMZWF2ZQpAQCAtMCwwICsxLDM1IEBACitQcmV2ZW50TGVhdmUoKQorCitGVU5LVElPTjoKKyAgICAgaW50IFByZXZlbnRMZWF2ZShvYmplY3Qgb2IsIG1peGVkIGRlc3QpOworCitERUZJTklFUlQgSU46CisgICAgIC9zdGQvY29udGFpbmVyL3Jlc3RyaWN0aW9ucy5jCisKK0FSR1VNRU5URToKKyAgICAgb2IKKyAgICAgICAgICBEYXMgT2JqZWt0LCBkYXMgYXVzIGRlbSBCZWhhZWx0ZXIgZ2Vub21tZW4gd2VyZGVuIHNvbGwuCisgICAgIGRlc3QgCisgICAgICAgICAgRGFzIFppZWwgaW4gZGFzIGRhcyBPYmpla3Qgb2IgYmV3ZWd0IHdlcmRlbiBzb2xsLgorCitCRVNDSFJFSUJVTkc6CisgICAgIE1pdCBkaWVzZXIgRnVua3Rpb24ga2FubiBlaW4gQmVoYWVsdGVyIHBydWVmZW4sIG9iIGVyIGRhcyBPYmpla3Qgb2IKKyAgICAgc2ljaCBiZXdlZ2VuIGxhc3NlbiBtb2VjaHRlIG9kZXIgbmljaHQuCisKK1JVZUNLR0FCRVdFUlQ6CisgICAgIDAsIHdlbm4gZGFzIE9iamVrdCBiZXdlZ3Qgd2VyZGVuIGthbm47IGVpbiBXZXJ0IGdyb2Vzc2VyIGFscyAwCisgICAgIHplaWd0IGFuLCBkYXNzIGRhcyBPYmpla3QgbmljaHQgYmV3ZWd0IHdlcmRlbiBzb2xsLgorCitCRU1FUktVTkdFTjoKKyAgICAgV2VubiBvYiBtaXQgZGVtIEZsYWcgTV9OT0NIRUNLIGJld2VndCB3aXJkLCB3aXJkIFByZXZlbnRMZWF2ZSgpIHp3YXIKKyAgICAgYXVmZ2VydWZlbiwgZGFzIE9iamVrdCB3aXJkIGplZG9jaCBhdWYgamVkZW4gRmFsbCBhdXMgZGVtIEJlaGFlbHRlcgorICAgICBiZXdlZ3QsIHVuYWJoYWVuZ2lnIHZvbSBSdWVja2dhYmV3ZXJ0IQorCitTSUVIRSBBVUNIOgorICAgICBQcmV2ZW50SW5zZXJ0KCksIE5vdGlmeUluc2VydCgpLCBOb3RpZnlMZWF2ZSgpLAorICAgICBNYXlBZGRXZWlnaHQoKSwgbW92ZSgpLCAvc3RkL2NvbnRhaW5lci9yZXN0cmljdGlvbnMuYworICAgICBQcmV2ZW50TGVhdmVMaXZpbmcoKSwgUHJldmVudEluc2VydExpdmluZygpLCBQcmV2ZW50TW92ZSgpLAorICAgICBOb3RpZnlNb3ZlKCksIE1heUFkZE9iamVjdCgpLCBOb3RpZnlSZW1vdmUoKQorCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCitMYXN0IG1vZGlmaWVkOiAwNC4wOC4yMDA3LCBaZXNzdHJhCmRpZmYgLS1naXQgYS9kb2MvbGZ1bi9QcmV2ZW50TGVhdmVMaXZpbmcgYi9kb2MvbGZ1bi9QcmV2ZW50TGVhdmVMaXZpbmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNGQxM2I1NAotLS0gL2Rldi9udWxsCisrKyBiL2RvYy9sZnVuL1ByZXZlbnRMZWF2ZUxpdmluZwpAQCAtMCwwICsxLDM1IEBACitQcmV2ZW50TGVhdmVMaXZpbmcoKQorCitGVU5LVElPTjoKKyAgICAgaW50IFByZXZlbnRMZWF2ZUxpdmluZyhvYmplY3Qgb2IsIG1peGVkIGRlc3QpOworCitERUZJTklFUlQgSU46CisgICAgIC9zdGQvY29udGFpbmVyL3Jlc3RyaWN0aW9ucy5jCisKK0FSR1VNRU5URToKKyAgICAgb2IKKyAgICAgICAgICBEYXMgTGl2aW5nLCBkYXMgYXVzIGRlbSBCZWhhZWx0ZXIgZ2Vub21tZW4gd2VyZGVuIHNvbGwuCisgICAgIGRlc3QgCisgICAgICAgICAgRGFzIFppZWwgaW4gZGFzIGRhcyBMaXZpbmcgb2IgYmV3ZWd0IHdlcmRlbiBzb2xsLgorCitCRVNDSFJFSUJVTkc6CisgICAgIE1pdCBkaWVzZXIgRnVua3Rpb24ga2FubiBlaW4gQmVoYWVsdGVyIHBydWVmZW4sIG9iIGVyIGRhcyBMaXZpbmcgb2IKKyAgICAgc2ljaCBiZXdlZ2VuIGxhc3NlbiBtb2VjaHRlIG9kZXIgbmljaHQuCisKK1JVZUNLR0FCRVdFUlQ6CisgICAgIDAsIHdlbm4gZGFzIExpdmluZyBiZXdlZ3Qgd2VyZGVuIGthbm47IGVpbiBXZXJ0IGdyb2Vzc2VyIGFscyAwCisgICAgIHplaWd0IGFuLCBkYXNzIGRhcyBMaXZpbmcgbmljaHQgYmV3ZWd0IHdlcmRlbiBzb2xsLgorCitCRU1FUktVTkdFTjoKKyAgICAgV2VubiBvYiBtaXQgZGVtIEZsYWcgTV9OT0NIRUNLIGJld2VndCB3aXJkLCB3aXJkIFByZXZlbnRMZWF2ZSgpIHp3YXIKKyAgICAgYXVmZ2VydWZlbiwgZGFzIExpdmluZyB3aXJkIGplZG9jaCBhdWYgamVkZW4gRmFsbCBhdXMgZGVtIEJlaGFlbHRlcgorICAgICBiZXdlZ3QsIHVuYWJoYWVuZ2lnIHZvbSBSdWVja2dhYmV3ZXJ0IQorCitTSUVIRSBBVUNIOgorICAgICBQcmV2ZW50SW5zZXJ0TGl2aW5nKCksIC9zdGQvY29udGFpbmVyL3Jlc3RyaWN0aW9ucy5jCisgICAgIFByZXZlbnRNb3ZlKCksIFByZXZlbnRMZWF2ZSgpLCBQcmV2ZW50SW5zZXJ0KCksCisgICAgIE5vdGlmeU1vdmUoKSwgTm90aWZ5TGVhdmUoKSwgTm90aWZ5SW5zZXJ0KCksIE5vdGlmeVJlbW92ZSgpLAorICAgICBtb3ZlKCksIGV4aXQoKSwgaW5pdCgpLAorICAgICBJbml0QXR0YWNrLCBFeGl0QXR0YWNrKCkKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KK0xhc3QgbW9kaWZpZWQ6IDA0LjA4LjIwMDcsIFplc3N0cmEKZGlmZiAtLWdpdCBhL2RvYy9sZnVuL1ByZXZlbnRNb3ZlIGIvZG9jL2xmdW4vUHJldmVudE1vdmUKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNzk4ZWUwYgotLS0gL2Rldi9udWxsCisrKyBiL2RvYy9sZnVuL1ByZXZlbnRNb3ZlCkBAIC0wLDAgKzEsODEgQEAKK1ByZXZlbnRJbnNlcnQoKQorCitGVU5LVElPTjoKKyAgICAgcHJvdGVjdGVkIGludCBQcmV2ZW50TW92ZShvYmplY3QgZGVzdCwgb2JqZWN0IG9sZGVudiwgaW50IG1ldGhvZCk7CisKK0RFRklOSUVSVCBJTjoKKyAgICAgL3N0ZC90aGluZy9tb3ZpbmcuYworICAgICAvc3RkL2xpdmluZy9tb3ZpbmcuYworICAgICAvc3RkL3BsYXllci9tb3ZpbmcuYworCitBUkdVTUVOVEU6CisgICAgIGRlc3QKKyAgICAgICAgICBEYXMgWmllbCBkZXMgTW92ZXMKKyAgICAgb2xkZW52CisgICAgICAgICAgRGFzIChOb2NoLSlFbnZpcm9ubWVudCBkZXMgT2JqZWt0cworICAgICBtZXRob2QKKyAgICAgICAgICBEaWUgTW92ZS1NZXRob2RlKG4pLCBtaXQgZGVyL2RlbmVuIGJld2VndCB3ZXJkZW4gc29sbAorCitCRVNDSFJFSUJVTkc6CisgICAgIE1pdCBkaWVzZXIgRnVua3Rpb24gcHJ1ZWZ0IGVpbiBPYmpla3QsIG9iIGVzIHZvbiAnb2xkZW52JyBuYWNoICdkZXN0JworICAgICBiZXdlZ3Qgd2VyZGVuIG1hZy4gRGFiZWkgd2lyZCAnbWV0aG9kJyBiZXJ1ZWNrc2ljaHRpZ3QgKHouQi4gc2NoYWx0ZXQKKyAgICAgTV9OT0NIRUNLIGRpZSBtZWlzdGVuIFBydWVmdW5nZW4gYWIpLgorICAgICBCZWkgR2VnZW5zdGFlbmRlbiB3aXJkIHouQi4gUF9OT0RST1AsIFBfTk9HRVQsIGRhcyBHZXdpY2h0LCBvYiBkYXMgWmllbAorICAgICBkYXMgT2JqZWt0IGF1Zm5laG1lbiB3aWxsIChNYXlBZGRXZWlnaHQoKSwgUHJldmVudEluc2VydCkgb2RlciBhdWNoCisgICAgIFByZXZlbnRMZWF2ZSgpIGdlcHJ1ZWZ0LgorICAgICBCZWkgTGViZXdlc2VuIHdpcmQgei5CLiBQX05PX1RQT1JUIGluICdkZXN0JyB1bmQgJ29sZGVudicgdW5kCisgICAgIFByZXZlbnRMZWF2ZUxpdmluZy9QcmV2ZW50SW5zZXJ0TGl2aW5nKCkgYXVzZ2V3ZXJ0ZXQuCisgICAgIEJlaSBTcGllbGVybiB3aXJkIGF1Y2ggbm9jaCBnZXRlc3RldCwgb2IgbWV0aG9kIE1fR08gb2RlciBNX1RQT1JUCisgICAgIGVudGhhZWx0IHVuZCBvYiBkYXMgWmllbCBudXIgdm9uIFRlc3RzcGllbGVybiBiZXRyZXRlbiB3ZXJkZW4ga2Fubi4KKworUlVlQ0tHQUJFV0VSVDoKKyAgICAgMCwgd2VubiBkYXMgT2JqZWt0IGJld2VndCB3ZXJkZW4gZGFyZi4KKyAgICAgV2VubiBlcyBuaWNodCBiZXdlZ3Qgd2VyZGVuIGRhcmYsIHNpbmQgYWxzIFJ1ZWNrZ2FiZXdlcnRlIGRpZSBpbgorICAgICAvc3lzL21vdmluZy5oIGRlZmluaWVydGVuIE1vdmUtRmVobGVyd2VydGUgenVsYWVzc2lnIChzLiBtb3ZlKCkpLiBTb2xsdGUKKyAgICAgaGllciBlaW4gdW5ndWVsdGlnZXIgRmVobGVyd2VydCB6dXJ1ZWNrZ2VnZWJlbiB3ZXJkZW4sIHdpcmQgZGFzIG1vdmUoKQorICAgICBlYmVuZmFsbHMgYWJnZWJyb2NoZW4gdW5kIE1FX0RPTlRfV0FOVF9UT19CRV9NT1ZFRCB6dXJ1ZWNrZ2ViZW4uCisKK0JFTUVSS1VOR0VOOgorICAgICBEaWVzZSBGdW5rdGlvbiBrYW5uIHVlYmVyc2NocmllYmVuLCB1bSBmZWluZXJlIEtvbnRyb2xsZSB1ZWJlciBkaWUKKyAgICAgQmV3ZWd1bmdlbiBkZXMgT2JqZWt0IHp1IGhhYmVuLiBEYWJlaSBhYmVyIGJpdHRlIGVpbmlnZSBEaW5nZSBiZWFjaHRlbjoKKyAgICAgMS4gRGVua3QgZGFyYW4sIGdnZi4gTV9OT0NIRUNLIHp1IGJlcnVlY2tzaWNodGlnZW4gdW5kIHVuZCBldXJlCisgICAgIFBydWVmdW5nZW4gbnVyIHp1IG1hY2hlbiwgd2VubiBlcyBuaWNodCBpbiBtZXRob2Qgdm9ya29tbXQuCisgICAgIDIuIEdBTlogV0lDSFRJRzogV2VubiBpaHIgbWl0IGV1cmVuIFBydWVmdW5nZW4gZmVydGlnIHNlaW4gdW5kIGRhcyBPYmpla3QKKyAgICAgYmV3ZWd0IHdlcmRlbiBkdWVyZnRlLCBkaWUgZ2VlcmJ0ZW4gUHJ1ZWZ1bmdlbiBub2NoIHRlc3RlbiwgYWxzbyBfSU1NRVJfCisgICAgIGRhcyBnZWVyYnRlIFByZXZlbnRNb3ZlKCkgbm9jaCBhdWZydWZlbiB1bmQgZGVzc2VuIFdlcnQKKyAgICAgenVydWVja2dlYmVuL2JlcnVlY2tzaWNodGlnZW4sIGRhIHNvbnN0IFBydWVmdW5nZW4gZGVzIEdld2ljaHRzIGV0Yy4gCisgICAgIG5pY2h0IGZ1bmt0aW9uaWVyZW4gb2RlciBiZWkgTGViZXdlc2VuIGRpZSBQcmV2ZW50KigpIGltIEVudmlyb25tZW50IAorICAgICBuaWNodCBnZXJ1ZmVuIHdlcmRlbiEKKyAgICAgMy4gRGllIEZ1bmt0aW9uIGlzdCBudXIgb2JqZWt0aW50ZXJuIHp1IHZlcndlbmRlbiwgQ2FsbC1PdGhlciB2b24gYXVzc2VuCisgICAgIHNpbmQgbmljaHQgbW9lZ2xpY2gsIGJlaW0gVWViZXJzY2hyZWliZW4gJ3Byb3RlY3RlZCcgbmljaHQgdmVyZ2Vzc2VuLgorICAgICA0LiBOb2NobWFsOiBHZWVyYnRlcyBQcmV2ZW50TW92ZSgpIF9OSUNIVCBWRVJHRVNTRU5fIQorCitCRUlTUElFTEU6CisgICAgIEVpbiBPYmpla3QsIHdhcyBudXIgaW0gU3Rlcm5lbmxpY2h0IGF1Zmdlbm9tbWVuIHdlcmRlbiBrYW5uICh3YXJ1bQorICAgICBhdWNoIGltbWVyKToKKworICAgICBwcm90ZWN0ZWQgaW50IFByZXZlbnRNb3ZlKG9iamVjdCBkZXN0LCBvYmplY3Qgb2xkZW52LCBpbnQgbWV0aG9kKSB7CisgICAgICAgaWYgKCAobWV0aG9kICYgTV9OT0NIRUNLKSApIHsKKyAgICAgICAgICAgLy8gd2VubiBtaXQgTV9OT0NIRUNLIGJld2VndCwgaXN0IGRhcyBTdGVybmVubGljaHQgZWdhbCwgbnVyCisgICAgICAgICAgIC8vIGdlZXJidGVzIFByZXZlbnRNb3ZlKCkgYmVydWVja3NpY2h0ZW46CisgICAgICAgICAgIHJldHVybiA6OlByZXZlbnRNb3ZlKGRlc3QsIG9sZGVudiwgbWV0aG9kKTsKKyAgICAgICB9CisgICAgICAgZWxzZSBpZiAoIG1ldGhvZCAmIE1fR0VUKSB7CisgICAgICAgICAgIC8vIHdlbm4gZXMgYXVmZ2Vub21tZW4gd2VyZGVuIHNvbGw6IG5hY2ggU3Rlcm5lbmxpY2h0IGltIFJhdW0KKyAgICAgICAgICAgLy8gZ3Vja2VuOgorICAgICAgICAgICBpZiAob2JqZWN0cChkZXN0KSAmJiAKKyAgICAgICAgICAgICAgIChkZXN0LT5RdWVyeVByb3AoUF9MSUdIVF9UWVBFKSAhPSBMVF9TVEFSUykpCisgICAgICAgICAgICAgICByZXR1cm4gTUVfQ0FOVF9CRV9UQUtFTjsKKyAgICAgICB9CisgICAgICAgLy8gRmFsbC10aHJvdWdoOgorICAgICAgIHJldHVybiA6OlByZXZlbnRNb3ZlKGRlc3QsIG9sZGVudiwgbWV0aG9kKTsKKyAgICAgfQorCisKK1NJRUhFIEFVQ0g6CisgICAgIFByZXZlbnRMZWF2ZSgpLCBOb3RpZnlJbnNlcnQoKSwgTm90aWZ5TGVhdmUoKSwgTWF5QWRkT2JqZWN0KCksCisgICAgIFByZXZlbnRJbnNlcnRMaXZpbmcoKSwgUHJldmVudExlYXZlTGl2aW5nKCksIE5vdGlmeU1vdmUoKSwKKyAgICAgUHJldmVudE1vdmUoKSwgTWF5QWRkV2VpZ2h0KCksIG1vdmUoKSwgL3N0ZC9jb250YWluZXIvcmVzdHJpY3Rpb25zLmMKKworLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorTGFzdCBtb2RpZmllZDogMDQuMDguMjAwNywgWmVzc3RyYQpkaWZmIC0tZ2l0IGEvZG9jL2xmdW4vUXVlcnkgYi9kb2MvbGZ1bi9RdWVyeQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4yYjM5OTk4Ci0tLSAvZGV2L251bGwKKysrIGIvZG9jL2xmdW4vUXVlcnkKQEAgLTAsMCArMSw4MSBAQAorUXVlcnkoKQorRlVOS1RJT046CisgICAgIHB1YmxpYyB2YXJhcmdzIG1peGVkIFF1ZXJ5KHN0cmluZyBuYW1lLCBpbnQgVHlwZSk7CisKK0RFRklOSUVSVCBJTjoKKyAgICAgL3N0ZC90aGluZy9wcm9wZXJ0aWVzLmMKKworQVJHVU1FTlRFOgorICAgICBzdHJpbmcgbmFtZSAtIFByb3BlcnR5LCBkZXJlbiBXZXJ0KGUpIGF1c2dlbGVzZW4gd2VyZGVuCisgICAgIGludCB0eXBlICAtIEFydCBkZXIgZ2V3dWVuc2NodGVuIEluZm9ybWF0aW9uLgorCitCRVNDSFJFSUJVTkc6CisgICAgIERlciBXZXJ0IGVpbmVyIGRlciBpbm5lcmVuIEVpZ2Vuc2NoYWZ0ZW4gZGVyIFByb3BlcnR5ICduYW1lJyB3aXJkCisgICAgIHp1cnVlY2tnZWdlYmVuLiAgJ1R5cGUnIGlzdCBkYWJlaSBlaW5lciBkZXIgaW4gL3N5cy90aGluZy9wcm9wZXJ0aWVzLmgKKyAgICAgdW5kIGZvbGdlbmQgYXVmZ2VsaXN0ZXRlbiBGX1hYWC1XZXJ0ZToKKworICAgICBGX1ZBTFVFICg9PTAsIERlZmF1bHQpCisgICAgICAgICBVbnRlciBVbWdlaHVuZyBlaW5lciBldmVudHVlbGwgdm9yaGFuZGVuZW4gQWJmcmFnZW1ldGhvZGUgb2RlcgorICAgICAgICAgX3F1ZXJ5XyduYW1lJygpIHdpcmQgZGVyIERhdGVud2VydCBkZXIgUHJvcGVydHkgJ25hbWUnCisgICAgICAgICB6dXJ1ZWNrZ2VnZWJlbi4KKyAgICAgRl9NT0RFCisgICAgICAgICAgRGllIGludGVybmVuIEZsYWdzIGRlciBQcm9wZXJ0eSB3ZXJkZW4genVydWVja2dlZ2ViZW4uRGllcyBrb2VubmVuCisgICAgICAgICAgKGxvZ2lzY2ggbWl0ICYgdmVya251ZXBmdCkgc2VpbjoKKyAgICAgICAgICBTQVZFICAtIFByb3BlcnR5IHNvbGwgYmVpIHNhdmVfb2JqZWN0KCkgZ2VzcGVpY2hlcnQgd2VyZGVuCisgICAgICAgICAgUFJPVEVDVEVEIC0gT2JqZWt0IHNlbGJzdC9FTS9Sb290IGthbm4gUHJvcGVydHkgbWFuaXB1bGllcmVuCisgICAgICAgICAgU0VDVVJFRCAgLSB3aWUgUFJPVEVDVEVELCBkYXMgRmxhZyBrYW5uIGFiZXIgbmljaHQKKyAgICAgICAgICAgICAgICAgICAgIHp1cnVlY2tnZXNldHp0IHdlcmRlbiAoaW1tZXIgU0VDVVJFRCkKKyAgICAgICAgICBOT1NFVE1FVEhPRCAtIG5pZW1hbmQga2FubiBQcm9wZXJ0eSBtYW5pcHVsaWVyZW4KKyAgICAgICAgICAgICAgICAgICAgICAgIChhdWNoIGtlaW4gRl9TRVRfTUVUSE9EIG9kZXIgX3NldF8nbmFtZScoKSkKKyAgICAgRl9TRVRfTUVUSE9ECisgICAgICAgICAgRWluIGV2ZW50dWVsbCBmdWVyIGRpZSBQcm9wZXJ0eSBlaW5nZXRyYWdlbmUgRl9TRVRfTUVUSE9EIHdpcmQKKyAgICAgICAgICB6dXJ1ZWNrZ2VnZWJlbi4KKyAgICAgICAgICAoX3NldF8nbmFtZScoKS1NZXRob2RlbiB3ZXJkZW4gc28gbmljaHQgYXVmZ2VmdWVocnQhKQorICAgICBGX1FVRVJZX01FVEhPRAorICAgICAgICAgIEVpbiBldmVudHVlbGwgZnVlciBkaWUgUHJvcGVydHkgZWluZ2V0cmFnZW5lIEZfUVVFUllfTUVUSE9EIHdpcmQKKyAgICAgICAgICB6dXJ1ZWNrZ2VnZWJlbi4KKyAgICAgICAgICAoX3F1ZXJ5XyduYW1lJygpLU1ldGhvZGVuIHdlcmRlbiBzbyBuaWNodCBhdWZnZWZ1ZWhydCEpCisKK1JVZUNLR0FCRVdFUlQ6CisgICAgIERpZSBnZXd1ZW5zY2h0ZSBFaWdlbnNjaGFmdCwgYWJoYWVuZ2lnIHZvbiAnVHlwZScuCisKK0JFTUVSS1VOR0VOOgorICAgICAtIFF1ZXJ5KCkgc29sbHRlIG5pY2h0IHp1bSByZWd1bGFlcmVuIEF1c2xlc2VuIGRlcyBJbmhhbHQgZWluZXIKKyAgICAgICBQcm9wZXJ0eSB2ZXJ3ZW5kZXQgd2VyZGVuLCBkYSBzb3dvaGwgRl9RVUVSWV9NRVRIT0QgYWxzIGF1Y2gKKyAgICAgICBsaWJpbnRlcm5lIF9xdWVyeV8nbmFtZScoKS1NZXRob2RlbiB1bWdhbmdlbiB3ZXJkZW4gdW5kIGRhcyBFcmdlYm5pcworICAgICAgIGZ1ZXIgc28gdmVyYWVuZGVydGUgUHJvcGVydHlzIHVuZGVmaW5pZXJ0IGlzdAorICAgICAtIF9zZXRfJ25hbWUnKCkgdW5kIF9xdWVyeV8nbmFtZScoKSBzaW5kIGFsdGUgUHJvcGVydHltZXRob2RlbiB1bmQKKyAgICAgICBzb2xsdGVuIG5pY2h0IGluIG5vcm1hbGVuIE9iamVrdGVuIGJlbnV0enQgd2VyZGVuIC0+CisgICAgICAgRl9TRVRfTUVUSE9EL0ZfUVVFUllfTUVUSE9EIChnZ2YuIG1pdCBQUk9URUNURUQpIG51dHplbgorICAgICAtIEZfU0VUL0ZfUVVFUllfTUVUSE9EcyBrb2VubmVuICdwcm90ZWN0ZWQnIChlbXBmb2hsZW4pIG9kZXIgJ3N0YXRpYycKKyAgICAgICBzZWluLiBfc2V0Xy9fcXVlcnlfIGR1ZXJmZW4gbW9tZW50YW4gX25pY2h0XyAncHJvdGVjdGVkJyBzZWluLCBmdWVyCisgICAgICAgZGllc2UgZ2VodCBudXIgJ3N0YXRpYycgKGluIGRpZXNlbSBGYWxsIGVtcGZvaGxlbikuCisKK0JFSVNQSUVMRToKKyAgICAgLy8gQXVzbGVzZW4gZGVzIFdlcnRlcyB1bnRlciBVbWdlaHVuZyBlaW5lciBBYmZyYWdlbWV0aG9kZQorICAgICBRdWVyeShQX1hZWiwgRl9WQUxVRSk7CisKKyAgICAgLy8gQXVzbGVzZW4gZGVyIEZsYWdzIGVyZmFlaHJ0IG1hbiBtaXQ6CisgICAgIFF1ZXJ5KFBfWFlaLCBGX01PREUpOworCisgICAgIC8vIHNhdWJlcmVzIFByb2dyYW1taWVyZW4sIHdpciB3b2xsZW4gZWluZSBGX1FVRVJZX01FVEhPRCBzZXR6ZW4sCisgICAgIC8vIHBydWVmZW4gdm9yaGVyIGF1ZiBFeGlzdGVuejoKKyAgICAgaWYodGhpc19wbGF5ZXIoKS0+UXVlcnkoUF9GUk9HLCBGX1FVRVJZX01FVEhPRCkgeworICAgICAgd3JpdGUoYnJlYWtfc3RyaW5nKAorICAgICAgICJJY2gga2FubiBkaWNoIG5pY2h0IHdlaXRlciB2b3IgRnJvc2Noc2VpbiBzY2h1ZXR6ZW4hIiwKKyAgICAgICAiRGVyIE1hZ2llciB3aW5rdCBhYjogIiwgNzgpKTsKKyAgICAgIHNheShicmVha19zdHJpbmcoCisgICAgICAgIkljaCBrYW5uIGRpY2ggbmljaHQgd2VpdGVyIHZvciBGcm9zY2hzZWluIHNjaHVldHplbiEiLAorICAgICAgICJEZXIgTWFnaWVyIHNhZ3QgenUgIit0aGlzX3BsYXllcigpLT5uYW1lKFdFTSkrIjogIiwgNzgpKTsKKyAgICAgfSBlbHNlIHsKKyAgICAgIHRoaXNfcGxheWVyKCktPlNldChQX0ZST0csICMncXVlcnlfcHJvdGVjdF9mcm9nLCBGX1FVRVJZX01FVEhPRCk7CisgICAgICAuLi4KKyAgICAgfQorCitTSUVIRSBBVUNIOgorICAgICBBZWhubGljaGVzOiBTZXRQcm9wKEwpLCBRdWVyeVByb3AoTCksIFNldChMKQorICAgICBHZW5lcmVsbDogIFNldFByb3BlcnRpZXMoTCksIFF1ZXJ5UHJvcGVydGllcyhMKQorICAgICBLb256ZXB0OiAgcHJvcGVydGllcywgL3N0ZC90aGluZy9wcm9wZXJ0aWVzLmMKKyAgICAgU29uc3RpZ2VzOiAgUF9BVVRPTE9BRE9CSgorCisyOC4wMy4yMDA4LCBaZXNzdHJhCmRpZmYgLS1naXQgYS9kb2MvbGZ1bi9RdWVyeUFsbERvb3JzIGIvZG9jL2xmdW4vUXVlcnlBbGxEb29ycwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4zYmJiZmJiCi0tLSAvZGV2L251bGwKKysrIGIvZG9jL2xmdW4vUXVlcnlBbGxEb29ycwpAQCAtMCwwICsxLDMyIEBACitGVU5LVElPTjoKKyAgICAgbWFwcGluZyBRdWVyeUFsbERvb3JzKCk7CisKK0RFRklOSUVSVCBJTjoKKyAgICAgL29iai9kb29ybWFzdGVyLmMKKworQVJHVU1FTlRFOgorICAgICBrZWluZQorCitCRVNDSFJFSUJVTkc6CisgICAgIEVzIHdlcmRlbiBkaWUgWnVzdGFlbmRlIEFMTEVSIFR1ZXJlbiBpbSBNb3JnZW5HcmF1ZW4gZXJtaXR0ZWx0LgorCitSVUVDS0dBQkVXRVJUOgorICAgICBFaW4gTWFwcGluZyBtaXQgZGVuIFp1c3RhZW5kZW4gYWxsZXIgVHVlcmVuIGltIE1vcmdlbkdyYXVlbi4gQWxzCisgICAgIFNjaGx1ZXNzZWwgZGllbmVuIGRpZSBEYXRlaW5hbWVuIGRlciBTdGFydC0gdW5kIFppZWxyYWV1bWUgaW4KKyAgICAgbGV4aWtvZ3JhcGhpc2NoZXIgKGFscGhhYmV0aXNjaGVyKSBSZWloZW5mb2xnZSwgZ2V0cmVubnQgZHVyY2ggIjoiLAorICAgICBkZXIgV2VydCBkZXMgS2V5cyBpc3QgZGVyIGFrdHVlbGxlIFp1c3RhbmQgZGllc2VyIFR1ZXIsIHouQi46CisKKyAgICAoWyAiL2QvaW5zZWxuL3NjaGlmZmUvam9sbGU6L2QvaW5zZWxuL3NjaGlmZmUvam9sbGUvbWFzY2giIDogLTEsCisgICAgICAgLi4uCisgICAgIF0pOworCisgICAgIEVzIGdpYnQgYWxzbyBlaW5lIFR1ZXIgendpc2NoZW4gSm9sbGUgdW5kIE1hc2NoaW5lbnJhdW0sIGRpZQorICAgICBtb21lbnRlbiBnZXNjaGxvc3NlbiBpc3QgKC0xID0gRF9TVEFUVVNfQ0xPU0VEKS4KKworCitTSUVIRSBBVUNIOgorICAgIE5ld0Rvb3IoKSwgUXVlcnlEb29yS2V5KCksIFF1ZXJ5RG9vclN0YXR1cygpLCBTZXREb29yU3RhdHVzKCksCisgICAgL3N0ZC9yb29tL2Rvb3JzLmMsIC9vYmovZG9vcm1hc3Rlci5jLCBHZXRQaGlvbGVuSW5mb3MoKSwgUF9ET09SX0lORk9TCisKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCitMZXR6dGUgQWVuZGVydW5nOiBEb24sIDA4LjA1LjIwMTQsIEdhYnlsb24KZGlmZiAtLWdpdCBhL2RvYy9sZnVuL1F1ZXJ5QXJtb3VyQnlUeXBlIGIvZG9jL2xmdW4vUXVlcnlBcm1vdXJCeVR5cGUKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMjJkNDNlOQotLS0gL2Rldi9udWxsCisrKyBiL2RvYy9sZnVuL1F1ZXJ5QXJtb3VyQnlUeXBlCkBAIC0wLDAgKzEsNjQgQEAKK1F5ZXJ5QXJtb3VyQnlUeXBlKCkKKworRlVOS1RJT046CisgICAgIG1peGVkIFF1ZXJ5QXJtb3VyQnlUeXBlKHN0cmluZyB0eXBlKQorCitERUZJTklFUlQgSU46CisgICAgIC9zdGQvbGl2aW5nL2NvbWJhdC5jCisKK0FSR1VNRU5URToKKyAgICAgc3RyaW5nIHR5cGUKKyAgICAgICAgVHlwIGRlciBSdWVzdHVuZyBhdXMgL3N5cy9jb21iYXQuaCwgYXVmIGRpZSBnZXRlc3RldCB3ZXJkZW4gc29sbC4KKworQkVTQ0hSRUlCVU5HOgorICAgICBBYmZyYWdlLCBvYiBkYXMgTGViZXdlc2VuIGVpbmUgUnVlc3R1bmcgZGVzIGFuZ2VnZWJlbmVuIFR5cHMgdHJhZWd0LgorCisgICAgIFp1cnVlY2tnZWdlYmVuIHdpcmQgamUgbmFjaCBUcmFnZXN0YXR1cyB1bmQgPHR5cGU+OgorICAgICAqIDAsIGZhbGxzIGRhcyBMZWJld2VzZW4gZGllIGdlc3VjaHRlIFJ1ZXN0dW5nc2FydCBuaWNodCB0cmFlZ3QKKyAgICAgKiBpbSBFcmZvbGdzZmFsbCBkYXMgUnVlc3R1bmdzb2JqZWt0CisgICAgICogZmFsbHMgPHR5cGU+IEFUX01JU0MgaXN0OgorICAgICAgICogKHt9KSwgd2VubiBlcyBrZWluZSBBVF9NSVNDLVJ1ZXN0dW5nIHRyYWVndAorICAgICAgICogZWluIEFycmF5IHZvbiBBVF9NSVNDLVJ1ZXN0dW5nZW4KKyAgICAgKiBmYWxscyA8dHlwZT4gMCBpc3Q6IGVpbiBNYXBwaW5nLCBkYXMgZGllc2UgSW5mb3JtYXRpb25lbiBtaXQgZGVtCisgICAgICAgUnVlc3R1bmdzdHlwZW4gYWxzIFNjaGx1ZXNzZWwgZW50aGFlbHQ6CisgICAgICAgKFtBVF9NSVNDOiAoe1tvYmplY3RdLCAuLi59KSwKKyAgICAgICAgIEFUXy4uLjogPG9iamVjdD4sCisgICAgICAgICAuLi4gXSkKKworQkVNRVJLVU5HOgorICAgICBJc3QgPHR5cGU+IEFUX01JU0MsIHNvIHdpcmQgYXVmIGplZGVuIEZhbGwgZWluIEFycmF5IHp1cnVlY2tnZWdlYmVuIQorCitCRUlTUElFTEU6CisgICAgIFdpciB3b2xsZW4gd2lzc2VuLCBvYiB0aGlzX3BsYXllcigpIEhhbmRzY2h1aGUgdHJhZWd0OgorCisgICAgIGlmIChvYmplY3RwKHRoaXNfcGxheWVyKCktPlF1ZXJ5QXJtb3VyQnlUeXBlKEFUX0dMT1ZFKSkpCisgICAgICAgLi4uCisKKworICAgICBXaXIgYmF1ZW4gZWluZW4gVHVlcnN0ZWhlciwgZGVyIGF1ZiBBVF9NSVNDLUtsZWlkdW5nIGFjaHRldDoKKworICAgICBpZiAoc2l6ZW9mKHRoaXNfcGxheWVyKCktPlF1ZXJ5QXJtb3VyQnlUeXBlKEFUX01JU0MpKSA+IDMpIHsKKyAgICAgICBpZih0aGlzX3BsYXllcigpLT5SZWNlaXZlTXNnKAorICAgICAgICAgICAgIkR1IGRhcmZzdCBuaWNodCBwYXNzaWVyZW4sIER1IGhhc3QgenV2aWVsZSAiCisgICAgICAgICAgICAidW5wYXNzZW5kZSBEaW5nZSBhbiEiLAorICAgICAgICAgICAgTVRfTElTVEVOfE1TR19ET05UX1NUT1JFLCBNQV9URUxMLAorICAgICAgICAgICAgIkRlciBXYWVjaHRlciB0ZWlsdCBEaXIgbWl0OiAiKTxNU0dfREVMSVZFUkVEICYmIC8vIHRhdWI/CisgICAgICAgICAgdGhpc19wbGF5ZXIoKS0+UmVjZWl2ZU1zZygKKyAgICAgICAgICAgICJEZXIgV2FlY2h0ZXIgaGFlbHQgZGljaCBhdWYuIiwgTVRfTE9PSyk8TVNHX0RFTElWRVJFRCkgLy8gYmxpbmQ/CisgICAgICAgICAgICB0aGlzX3BsYXllcigpLT5SZWNlaXZlTXNnKAorICAgICAgICAgICAgICAiSmVtYW5kIGhhZWx0IGRpY2ggYXVmLiIsIE1UX0ZFRUwpOyAvLyBudSBhYmVyIQorICAgICAgIC8vIEF1ZmhhbHRlbiEKKyAgICAgfSBlbHNlIHRoaXNfcGxheWVyKCktPlJlY2VpdmVNc2coCisgICAgICAgICAgICAgICJEdSBkYXJmc3QgcGFzc2llcmVuLCB2aWVsIFNwYXNzIGltIENhc2lubyEiLAorICAgICAgICAgICAgICBNVF9MSVNURU58TVNHX0RPTlRfU1RPUkUsIE1BX1RFTEwsCisgICAgICAgICAgICAgICJEZXIgV2FlY2h0ZXIgdGVpbHQgRGlyIG1pdDogIik7CisgICAgICAgLy8gaW0gRXJmb2xnc2ZhbGwgaXN0IGVzIHVucyBlZ2FsLCB3ZW5uIGVzIGRlciBTcGllbGVyIG5pY2h0CisgICAgICAgLy8gbGllc3Q6IGVyIHdpcmQgZGFubiBlYmVuICJ3b3J0bG9zIiBkdXJjaGdlbGFzc2VuCisKK1NJRUhFIEFVQ0g6CisgICAgIFdlYXIoKSwgV2VhckFybW91cigpLCBXZWFyQ2xvdGhpbmcoKSwgVW53ZWFyKCksIFVud2VhckFybW91cigpLAorICAgICBVbndlYXJDbG90aGluZygpLCBGaWx0ZXJDbG90aGluZygpLAorICAgICBQX0FSTU9VUl9UWVBFLCBQX0NMT1RISU5HLCBQX0FSTU9VUlMsCisgICAgIC9zdGQvbGl2aW5nL2NvbWJhdC5jCisKKzAyLjAyLjIwMTYsIEdsb2luc29uCmRpZmYgLS1naXQgYS9kb2MvbGZ1bi9RdWVyeUFycml2ZWQgYi9kb2MvbGZ1bi9RdWVyeUFycml2ZWQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMzNjZjg4NwotLS0gL2Rldi9udWxsCisrKyBiL2RvYy9sZnVuL1F1ZXJ5QXJyaXZlZApAQCAtMCwwICsxLDI2IEBACitRdWVyeUFycml2ZWQoKQorCitGVU5LVElPTjoKKyAgICAgbWl4ZWQgUXVlcnlBcnJpdmVkKCk7CisKK0RFRklOSUVSVCBJTjoKKyAgICAgL3N0ZC90cmFuc3BvcnQuYworCitBUkdVTUVOVEU6CisgICAgIGtlaW5lCisKK0JFU0NIUkVJQlVORzoKKyAgICAgRGllc2UgRnVua3Rpb24gZXJtaXR0ZWx0LCBvYiBzaWNoIGRlciBUcmFuc3BvcnRlciBtb21lbnRhbiBhbiBlaW5lcgorICAgICBIYWx0ZXN0ZWxsZSBiZWZpbmRldCAodW5kIGJlc3RpZWdlbiBvZGVyIHZlcmxhc3NlbiB3ZXJkZW4ga2Fubikgb2RlciBvYgorICAgICBlciB1bnRlcndlZ3MgaXN0LgorCitSVWVDS0dBQkVXRVJUOgorICAgICBOdWxsLCB3ZW5uIGRlciBUcmFuc3BvcnRlciB1bnRlcndlZ3MgaXN0LiBMaWVndCBkZXIgVHJhbnNwb3J0ZXIgYW4KKyAgICAgZWluZXIgSGFsdGVzdGVsbGUsIHNvIHdpcmQgZGVyIG1pdCBBZGRSb3V0ZSBhbHMgbmFtZSB1ZWJlcmdlYmVuZSBTdHJpbmcKKyAgICAgenVydWVja2dlZ2ViZW4uCisKK1NJRUhFIEFVQ0g6CisgICAgIEFkZFJvdXRlKCksIC9zdGQvdHJhbnNwb3J0LmMKKworLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorTGFzdCBtb2RpZmllZDogV2VkIE1heSA4IDEwOjIxOjQ3IDE5OTYgYnkgV2FyZ29uCmRpZmYgLS1naXQgYS9kb2MvbGZ1bi9RdWVyeUFydGljbGUgYi9kb2MvbGZ1bi9RdWVyeUFydGljbGUKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMDk5M2IzZQotLS0gL2Rldi9udWxsCisrKyBiL2RvYy9sZnVuL1F1ZXJ5QXJ0aWNsZQpAQCAtMCwwICsxLDkyIEBACitRdWVyeUFydGljbGUoKQorCitGVU5LVElPTjoKKyAgICAgdmFyYXJncyBzdHJpbmcgUXVlcnlBcnRpY2xlKGludCBjYXN1cywgaW50IGRlbSwgaW50IGZvcmNlKTsKKworREVGSU5JRVJUIElOOgorICAgICAvc3RkL3RoaW5nL2xhbmd1YWdlLmMKKworQVJHVU1FTlRFOgorICAgICBjYXN1cworICAgICAgICAgIERlciBGYWxsLCBpbiBkZW0gZGVyIEFydGlrZWwgZ2V3dWVuc2NodCB3aXJkLgorICAgICAgICAgIChLb25zdGFudGVuIGF1cyAvc3lzL3RoaW5nL2xhbmd1YWdlLmg6IFdFUiwgV0VNLCBXRVNTRU4sIFdFTi4pCisKKyAgICAgZGVtCisgICAgICAgICAgV2lyZCBlaW4gYmVzdGltbXRlciBvZGVyIGVpbiB1bmJlc3RpbW10ZXIgQXJ0aWtlbCB2ZXJsYW5ndD8KKyAgICAgICAgICAgICArIGRlbSA9IDA6IFVuYmVzdGltbXRlciBBcnRpa2VsIQorICAgICAgICAgICAgICsgZGVtID0gMTogQmVzdGltbXRlciBBcnRpa2VsIQorICAgICAgICAgICAgICsgZGVtID0gMjogRmluZGUgc2VsYnN0IGhlcmF1cywgd2VsY2hlciBBcnRpa2VsIHBhc3N0IQorCisgICAgIGZvcmNlCisgICAgICAgICAgRmFsbHMgdW5nbGVpY2ggTnVsbCwgc28gd2lyZCBhdWYgamVkZW4gRmFsbCBlaW4gQXJ0aWtlbAorICAgICAgICAgIHp1cnVlY2tnZWdlYmVuLCB0cm90eiBQX0FSVElDTEUgPT0gMC4KKworQkVTQ0hSRUlCVU5HOgorICAgICBEaWVzZSBGdW5rdGlvbiBnaWJ0IGVpbmVuIHp1bSBHZXNjaGxlY2h0IGRlcyBPYmpla3RlcyBwYXNzZW5kZW4gQXJ0aWtlbAorICAgICB6dXJ1ZWNrLCBkZXIgaW4gZGVuIHBhc3NlbmRlbiBGYWxsIGRla2xpbmllcnQgd2lyZC4KKworICAgICBEYXMgSGVyYXVzZmluZGVuIGRlcyBwYXNzZW5kZW4gQXJ0aWtlbHMgYmVpICdkZW0nID0gMiBiZXppZWh0IHNpY2ggYXVmCisgICAgIFNpdHVhdGlvbmVuLCBpbiBkZW5lbiBtZWhyZXJlIGdsZWljaG5hbWlnZSBPYmpla3RlIGltIHNlbGJlbiBFbnZpcm9ubWVudAorICAgICBzaW5kLiBNYW4gJ25pbW10JyBkYW5uIHpCIG5pY2h0ICJkZW4gU3RhbW0iIHNvbmRlcm4gImVpbmVuIFN0YW1tIi4KKworICAgICBJc3QgUF9BUlRJQ0xFID0gMCwgc28gd2lyZCBlaW4gTGVlcnN0cmluZyB6dXJ1ZWNrZ2VnZWJlbiwgZXMgc2VpIGRlbm4sCisgICAgIG1hbiB1ZWJlcmdpYnQgaW4gZGVtIEFyZ3VtZW50ICdmb3JjZScgZWluZW4gV2VydCB1bmdsZWljaCBOdWxsLgorCitCRU1FUktVTkdFTjoKKyAgICAgQWNodHVuZzogYmVpIGd1ZWx0aWdlbSBBcnRpa2VsIHdpcmQgZWluIExlZXJ6ZWljaGVuIGFuZ2VoYWVuZ3QhCisKKyAgICAgTmFtZSgpL25hbWUoKSBudXR6ZW4gYmVyZWl0cyBRdWVyeUFydGljbGUoKSwgd2VubiBQX0FSVElDTEUgZ2VzZXR6dAorICAgICBpc3QuIERlc2hhbGIgbXVzcyBtYW4gc2ljaCAiRWluZXMgT3JrcyIgbmljaHQgc2VsYnN0IGF1cyBkZW0KKyAgICAgUXVlcnlBcnRpY2xlKCkgdW5kIGRlbSBOYW1lbiB6dXNhbW1lbmJhc3RlbG4sIHdlbm4gbWVocmVyZSBPcmtzCisgICAgIGltIFJhdW0gaGVydW1zdGVoZW4gdW5kIG1hbiBlaW5lIE5hY2hyaWNodCB3aWU6CisgICAgICAgIkR1IGhhdXN0IGRlbiBPcmsuIiB1bmQgZm9sZ2VuZAorICAgICAgICJbRGVzfEVpbmVzXSBPcmtzIE5hc2Ugc2Nod2lsbHQgYW4uIgorICAgICBoYWJlbiBtb2VjaHRlOgorICAgICAgICJEdSBoYXVzdCAiK29yay0+bmFtZShXRU4sIDEpKyIuICIKKyAgICAgICBvcmstPk5hbWUoV0VTU0VOLCAyKSsiIE5hc2Ugc2Nod2lsbHQgYW4uIgorCitSVWVDS0dBQkVXRVJUOgorICAgICAqIGdld3VlbnNjaHRlciBBcnRpa2VsIGFscyBTdHJpbmcgcGx1cyBMZWVyemVpY2hlbiAoISkgT0RFUgorICAgICAqIExlZXJzdHJpbmcKKworQkVJU1BJRUxFOgorICAgICAvLyAiWCBoYXV0IFkgYXVmIGRpZSBOYXNlLiBbRGVyfERpZXxEYXNdIGlzdCBuaWNodCBiZWVpbmRydWNrdC4iCisgICAgIC8vIE1hbiB3aWxsOgorICAgICAvLyAqIGF1ZiBqZWRlbiBGYWxsIGVpbmVuIEFydGlrZWwsIGF1Y2ggd2VubiBrZWluIFBfQVJUSUNMRSBnZXNldHp0IGlzdAorICAgICAvLyAqIG51ciBkZW4gYmVzdGltbXRlbiBBcnRpa2VsCisgICAgIHNlbmRfcm9vbSh0aGlzX29iamVjdCgpLAorICAgICAgIHBsMS0+TmFtZShXRVIpKyIgaGF1dCAiK3BsMi0+bmFtZShXRU0pKyIgYXVmIGRpZSBOYXNlLiAiKworICAgICAgIGNhcGl0YWxpemUocGwyLT5RdWVyeUFydGljbGUoV0VSLCAxLCAxKSkrImlzdCBuaWNodCBiZWVpbmRydWNrdC4iLAorICAgICAgIE1UX0xPT0t8TVRfTElTVEVOLCAwLCAwLCAoe3BsMSwgcGwyfSkpOworCisgICAgIC8vICJYIGdpYnQgZGlyIFkuIFtFcnxTaWV8RXNdIHBydWVmdCBbZGVufGRpZXxkYXNdIC4uLiIKKyAgICAgLy8gTWFuIHdpbGw6CisgICAgIC8vICogYXVmIGplZGVuIEZhbGwgZWluZW4gQXJ0aWtlbCwgYXVjaCB3ZW5uIGtlaW4gUF9BUlRJQ0xFIGdlc2V0enQgaXN0CisgICAgIC8vICogbnVyIGRlbiBiZXN0aW1tdGVuIEFydGlrZWwKKyAgICAgc2VuZF9yb29tKHRoaXNfb2JqZWN0KCksCisgICAgICAgcGwxLT5OYW1lKFdFUikrIiBnaWJ0ICIrcGwyLT5uYW1lKFdFTSkrIiAiK29iai0+bmFtZShXRVIpKyIuICIrCisgICAgICAgY2FwaXRhbGl6ZShwbDItPlF1ZXJ5UHJvbm91bihXRVIpKSsiIHBydWVmdCAiKworICAgICAgIG9iLT5RdWVyeUFydGljbGUoV0VOLCAxLCAxKSsiLi4uIiwKKyAgICAgICBNVF9MT09LfE1UX0xJU1RFTiwgMCwgMCwgKHtwbDEsIHBsMn0pKTsKKworICAgICAvLyAiRGlyIGZhZWxsdCBYIGF1ZiBkZW4gS29wZi4gRHUgc2llaHN0IFtkaWV8ZGVufGRhc3xlaW5lfGVpbmVufGVpbmVzICIKKyAgICAgLy8gImF1ZiBkZW0gQm9kZW4gbGllZ2VuLiBbU2llfEVyfEVzXSBzaWVodCBibHV0aWcgYXVzLiBBdWEuIElzdCBkYXMgIgorICAgICAvLyAidm9uIGRpcj8iCisgICAgIC8vIE1hbiB3aWxsOgorICAgICAvLyAqIGF1ZiBqZWRlbiBGYWxsIGVpbmVuIEFydGlrZWwsIGF1Y2ggd2VubiBrZWluIFBfQVJUSUNMRSBnZXNldHp0IGlzdAorICAgICAvLyAqIGJlc3RpbW10ZS91bmJlc3RpbW10ZSBBcnRpa2VsLCB3ZW5uIGJlcmVpdHMgZ2xlaWNoZSBHZWdlbnN0YWVuZGUKKyAgICAgLy8gICAoekIgS29rb3NudWVzc2UpIGF1ZiBkZW0gQm9kZW4gbGllZ2VuIC4uLgorICAgICBvYi0+bW92ZShlbnZpcm9ubWVudCgpLCBNX05PQ0hFQ0spOyAvLyB2b3JoZXIgbWFjaGVuIQorICAgICBwbC0+UmVjZWl2ZU1zZygKKyAgICAgICAiRGlyIGZhZWxsdCAiK29iLT5uYW1lKFdFUiwgMCkrIiBhdWYgZGVuIEtvcGYuIER1IHNpZWhzdCAiKworICAgICAgIG9iLT5RdWVyeUFydGljbGUoV0VOLCAyLCAxKSsiIGF1ZiBkZW0gQm9kZW4gbGllZ2VuLiAiKworICAgICAgIGNhcGl0YWxpemUob2ItPlF1ZXJ5UHJvbm91bihXRVIpKSsiIHNpZWh0IGJsdXRpZyAuLi4KKworU0lFSEUgQVVDSDoKKyAgICAgQWVobmxpY2g6ICBTdWdnZXN0QXJ0aWNsZSgpLCBxdWVyeV9jX2FydGljbGUoKSwgcXVlcnlfZ19zdWZmaXgoKQorICAgICBTb25zdGlnZXM6IFF1ZXJ5T3duKCksIFF1ZXJ5RHUoKSwKKyAgICAgICAgICAgICAgICBRdWVyeVByb25vdW4oKSwgUXVlcnlQb3NzUHJvbm91bigpCisgICAgICAgICAgICAgICAgRGVjbEFkaigpCisgICAgICAgICAgICAgICAgbmFtZSgpCisKKzkuIEp1biAyMDE2LCBHbG9pbnNvbgpkaWZmIC0tZ2l0IGEvZG9jL2xmdW4vUXVlcnlBdHRyaWJ1dGUgYi9kb2MvbGZ1bi9RdWVyeUF0dHJpYnV0ZQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi42MGE2OGM5Ci0tLSAvZGV2L251bGwKKysrIGIvZG9jL2xmdW4vUXVlcnlBdHRyaWJ1dGUKQEAgLTAsMCArMSwzMiBAQAorUXVlcnlBdHRyaWJ1dGUoKQorRlVOS1RJT046CisgICAgIGludCBRdWVyeUF0dHJpYnV0ZShzdHJpbmcgYXR0cikKKworREVGSU5JRVJUIElOOgorICAgICAvc3RkL2xpdmluZy9hdHRyaWJ1dGVzLmMKKworQVJHVU1FTlRFOgorICAgICBhdHRyICAgICAgIC0gaW50ZXJlc3NpZXJlbmRlcyBHZXNhbXRhdHRyaWJ1dAorCitCRVNDSFJFSUJVTkc6CisgICAgIERhcyBBdHRyaWJ1dCBzYW10IHNlaW5lciBPZmZzZXRzIChNb2RpZmllcikgd2lyZCB6dXJ1ZWNrZ2VnZWJlbi4KKworUlVlQ0tHQUJFV0VSVDoKKyAgICAgV2VydCBkZXMgQXR0cmlidXRlcywgYmVpIFNwaWVsZXJuIG5pY2h0IGdyb2Vzc2VyIGFscyAzMC4KKworQkVJU1BJRUxFOgorICAgICBpZiAodGhpc19wbGF5ZXIoKS0+UXVlcnlBdHRyaWJ1dGUoQV9DT04pID4gMjApCisgICAgICAgd3JpdGUoIkR1IHNjaGFmZnN0IGVzIGRlbiBCZXJnIGhvY2guIEFiZXIgbnVyIG11ZWhzYW0uXG4iKTsKKworQkVORVJLVU5HRU46CisgICAgIFdlbm4gZXMgdW0gQXR0cmlidXRhYmZyYWdlbiBnZWh0LCBiaXR0ZSBkaWVzZSBNZXRob2RlIHZlcndlbmRlbiEKKworU0lFSEUgQVVDSDoNCisJUXVlcnlBdHRyaWJ1dGUoKSwgUXVlcnlSZWFsQXR0cmlidXRlKCksIFF1ZXJ5QXR0cmlidXRlT2Zmc2V0KCksDQorCVNldEF0dHJpYnV0ZSgpLCBTZXRSZWFsQXR0cmlidXRlKCksIFVwZGF0ZUF0dHJpYnV0ZXMoKSwNCisJU2V0VGltZWRBdHRyTW9kaWZpZXIoKSwgUXVlcnlUaW1lZEF0dHJNb2RpZmllcigpLCANCisJRGVsZXRlVGltZWRBdHRyTW9kaWZpZXIoKSwNCisJUF9BVFRSSUJVVEVTLCBQX0FUVFJJQlVURVNfT0ZGU0VUUywgUF9USU1FRF9BVFRSX01PRCwNCisJUF9YX0FUVFJfTU9ELCBQX01fQVRUUl9NT0QsIC9zdGQvbGl2aW5nL2F0dHJpYnV0ZXMuYw0KKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCitMYXN0IG1vZGlmaWVkOiBUdWUgSnVsIDI3IDIwOjAwOjIwIDIwMDQgYnkgTXVhZGliDQpkaWZmIC0tZ2l0IGEvZG9jL2xmdW4vUXVlcnlBdHRyaWJ1dGVPZmZzZXQgYi9kb2MvbGZ1bi9RdWVyeUF0dHJpYnV0ZU9mZnNldApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5mOTM4YWI4Ci0tLSAvZGV2L251bGwKKysrIGIvZG9jL2xmdW4vUXVlcnlBdHRyaWJ1dGVPZmZzZXQKQEAgLTAsMCArMSwyNiBAQAorUXVlcnlBdHRyaWJ1dGVPZmZzZXQoKQorRlVOS1RJT046CisgICAgIGludCBRdWVyeUF0dHJpYnV0ZU9mZnNldChzdHJpbmcgYXR0cikKKworREVGSU5JRVJUIElOOgorICAgICAvc3RkL2xpdmluZy9hdHRyaWJ1dGVzLmMKKworQVJHVU1FTlRFOgorICAgICBhdHRyCS0JZ2VzdWNodGVyIEF0dHJpYnV0T2Zmc2V0CisKK0JFU0NIUkVJQlVORzoKKyAgICAgRGllIE9mZnNldHMgZGVzIEF0dHJpYnV0cyAoaW5rbHVzaXZlIE1vZGlmaWVyKSB3ZXJkZW4genVydWVja2dlZ2ViZW4uCisKK0JFSVNQSUVMRToKKyAgICAgaWYodGhpc19wbGF5ZXIoKS0+UXVlcnlBdHRyaWJ1dGVPZmZzZXQoQV9TVFIpPDApCisgICAgICB3cml0ZSgiRHUgYmlzdCBnZXNjaHdhZWNodC5cbiIpOworCitTSUVIRSBBVUNIOg0KKwlRdWVyeUF0dHJpYnV0ZSgpLCBRdWVyeVJlYWxBdHRyaWJ1dGUoKSwgUXVlcnlBdHRyaWJ1dGVPZmZzZXQoKSwNCisJU2V0QXR0cmlidXRlKCksIFNldFJlYWxBdHRyaWJ1dGUoKSwgVXBkYXRlQXR0cmlidXRlcygpLA0KKwlTZXRUaW1lZEF0dHJNb2RpZmllcigpLCBRdWVyeVRpbWVkQXR0ck1vZGlmaWVyKCksIA0KKwlEZWxldGVUaW1lZEF0dHJNb2RpZmllcigpLA0KKwlQX0FUVFJJQlVURVMsIFBfQVRUUklCVVRFU19PRkZTRVRTLCBQX1RJTUVEX0FUVFJfTU9ELA0KKwlQX1hfQVRUUl9NT0QsIFBfTV9BVFRSX01PRCwgL3N0ZC9saXZpbmcvYXR0cmlidXRlcy5jDQorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KK0xhc3QgbW9kaWZpZWQ6IFR1ZSBKdWwgMjcgMjA6MDA6MjAgMjAwNCBieSBNdWFkaWINCmRpZmYgLS1naXQgYS9kb2MvbGZ1bi9RdWVyeUJ1eUZhY3QgYi9kb2MvbGZ1bi9RdWVyeUJ1eUZhY3QKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNDM1ZThiZQotLS0gL2Rldi9udWxsCisrKyBiL2RvYy9sZnVuL1F1ZXJ5QnV5RmFjdApAQCAtMCwwICsxLDIyIEBACitRdWVyeUJ1eUZhY3QoKQorCitGVU5LVElPTjoKKyAgICAgaW50IFF1ZXJ5QnV5RmFjdCgpOworCitERUZJTklFUlQgSU46CisgICAgIC9zdGQvbGFkZW4uYworCitBUkdVTUVOVEU6CisgICAgIGtlaW5lCisKK0JFU0NIUkVJQlVORzoKKyAgICAgR2lidCBkZW4gbWl0IFNldEJ1eUZhY3QoKSBnZXNldHp0ZW4gRmFrdG9yIHp1cnVlY2suCisKK1JVZUNLR0FCRVdFUlQ6CisgICAgIERlciBFaW5rYXVmc3ByZWlzbXVsdGlwbGlrYXRvci4KKworU0lFSEUgQVVDSDoKKyAgICAgU2V0QnV5RmFjdCgpLCAvc3RkL2xhZGVuLmMKKworLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorTGFzdCBtb2RpZmllZDogV2VkIE1heSA4IDEwOjIxOjU3IDE5OTYgYnkgV2FyZ29uCmRpZmYgLS1naXQgYS9kb2MvbGZ1bi9RdWVyeUJ1eVZhbHVlIGIvZG9jL2xmdW4vUXVlcnlCdXlWYWx1ZQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4yNjFhNDM1Ci0tLSAvZGV2L251bGwKKysrIGIvZG9jL2xmdW4vUXVlcnlCdXlWYWx1ZQpAQCAtMCwwICsxLDUyIEBACitRdWVyeUJ1eVZhbHVlKCkNCisNCitGdW5rdGlvbjoNCisgICAgc3RhdGljIHZhcmFyZ3MgaW50IFF1ZXJ5QnV5VmFsdWUobWl4ZWQgb2IsIG9iamVjdCBjbGllbnQpDQorDQorRGVmaW5pZXJ0IGluOg0KKyAgICAvc3RkL3Jvb20vc2hvcA0KKw0KK0FyZ3VtZW50ZToNCisgICAgb2I6IA0KKyAgICAgIERhcyB6dSBrYXVmZW5kZSBPYmpla3QgKFN0cmluZyBvZGVyIG9iamVjdCkuDQorICAgICAgSW0gTm9ybWFsZmFsbCBoYW5kZWx0IGVzIHNpY2ggdW0gZWluIE9iamVrdC4gQXVzbmFobWUgc2luZCANCisgICAgICBHZWdlbnN0YWVuZGUsIGRpZSBtaXQgQWRkRml4ZWRPYmplY3QoKSBoaW56dWdlZnVlZ3Qgd3VyZGVuLg0KKyAgICBjbGllbnQ6IA0KKyAgICAgIERlciBLYWV1ZmVyLg0KKw0KK0Jlc2NocmVpYnVuZzoNCisgICAgRXJtaXR0ZWx0IGRlbiBQcmVpcywgZGVuIDxjbGllbnQ+IGZ1ZXIgPG9iPiB6dSBiZXphaGxlbiBoYXQuDQorDQorUnVlY2tnYWJld2VydDoNCisgICAgRGVyIFByZWlzIGFscyBJbnRlZ2VyLg0KKw0KK0JlaXNwaWVsOg0KKyAgICBFaW4gSGFlbmRsZXIsIGRlciBTcGllbGVybiBkaWUgaWhtIGdlaG9sZmVuIGhhYmVuIGVpbmVuIFJhYmF0dCB2b24gMTAlIA0KKyAgICBnZXdhZWhydDoNCisgICAgDQorICAgIG9iamVjdCAqaGVscGVyczsNCisgICAgcHJvdGVjdGVkIHZvaWQgY3JlYXRlKCkNCisgICAgew0KKyAgICAgIDo6Y3JlYXRlKCk7DQorICAgICAgaGVscGVycz0oe30pOw0KKyAgICAgIC4uLg0KKyAgICB9DQorICAgIA0KKyAgICBzdGF0aWMgdmFyYXJncyBpbnQgUXVlcnlCdXlWYWx1ZShtaXhlZCBvYiwgb2JqZWN0IGNsaWVudCkNCisgICAgew0KKyAgICAgIGlmKG1lbWJlcihoZWxwZXJzLGNsaWVudCkhPS0xKQ0KKyAgICAgIHsNCisgICAgICAgIHJldHVybiA6OlF1ZXJ5QnV5VmFsdWUob2IsY2xpZW50KSo5LzEwOw0KKyAgICAgIH0NCisgICAgICByZXR1cm4gOjpRdWVyeUJ1eVZhbHVlKG9iLGNsaWVudCk7DQorICAgIH0NCisNCitTaWVoZSBhdWNoOg0KKyAgICBGdW5rdGlvbmVuOg0KKyAgICAgIEFkZEZpeGVkT2JqZWN0KCksIFJlbW92ZUZpeGVkT2JqZWN0KCksIFNldFN0b3JhZ2VSb29tKCksIA0KKyAgICAgIFF1ZXJ5U3RvcmFnZVJvb20oKSwgUXVlcnlCdXlGYWN0KCksIHNlbGxfb2JqKCksIGJ1eV9vYmooKQ0KKyAgICBQcm9wZXJ0aWVzOg0KKyAgICAgIFBfS0VFUEVSLCBQX01JTl9TVE9DSywgUF9TVE9SRV9DT05TVU1FDQorDQorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQorTGV0enRlIEFlbmRlcnVuZzogMjEuMDUuMjAxNCwgQnVnZml4ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZG9jL2xmdW4vUXVlcnlDb2luc1BlclVuaXRzIGIvZG9jL2xmdW4vUXVlcnlDb2luc1BlclVuaXRzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjk0OGMxYjAKLS0tIC9kZXYvbnVsbAorKysgYi9kb2MvbGZ1bi9RdWVyeUNvaW5zUGVyVW5pdHMKQEAgLTAsMCArMSwzMSBAQAorUXVlcnlDb2luc1BlclVuaXQoKQorCitGVU5LVElPTjoKKyAgICAgaW50ICpRdWVyeUNvaW5zUGVyVW5pdHMoKTsKKworREVGSU5JRVJUIElOOgorICAgICAvc3RkL3VuaXQuYworCitBUkdVTUVOVEU6CisgICAgIGtlaW5lCisKK0JFU0NIUkVJQlVORzoKKyAgICAgTGllZmVydCBkYXMgV2VydHZlcmhhZWx0bmlzIGZ1ZXIgZGllIEVpbmhlaXRlbiB6dXJ1ZWNrLgorCitSVWVDS0dBQkVXRVJUOgorICAgICBFaW4gQXJyYXkgdm9uIHp3ZWkgWmFobGVuLiBEaWUgZXJzdGUgWmFobCBpc3QgZGVyIFdlcnQgZGVyIGluIGRlcgorICAgICB6d2VpdGVuIFphaGwgYW5nZWdlYmVuZW4gRWluaGVpdGVuLgorCitCRUlTUElFTEU6CisgICAgIFN0ZWh0IGltIFVuaXQtT2JqZWt0IGZvbGdlbmRlIFdlcnR6dXdlaXN1bmc6CisKKyAgICAgICBTZXRDb2luc1BlclVuaXRzKDcsMik7CisKKyAgICAgc28gbGllZmVydCBRdWVyeUNvaW5zUGVyVW5pdHMoKSBhbHMgRXJnZWJuaXMgKHs3LCAyfSkuCisKK1NJRUhFIEFVQ0g6CisgICAgIFNldENvaW5zUGVyVW5pdHMoKSwgU2V0R3JhbXNQZXJVbml0cygpLCBRdWVyeUdyYW1zUGVyVW5pdCgpLAorICAgICAvc3RkL3VuaXQuYworCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCitMYXN0IG1vZGlmaWVkOiBXZWQgTWF5IDggMTA6MjI6MDIgMTk5NiBieSBXYXJnb24KZGlmZiAtLWdpdCBhL2RvYy9sZnVuL1F1ZXJ5RGFtYWdlIGIvZG9jL2xmdW4vUXVlcnlEYW1hZ2UKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOTljNGZlZAotLS0gL2Rldi9udWxsCisrKyBiL2RvYy9sZnVuL1F1ZXJ5RGFtYWdlCkBAIC0wLDAgKzEsMzkgQEAKK1F1ZXJ5RGFtYWdlKCkKKworRlVOS1RJT046CisgICAgIGludCBRdWVyeURhbWFnZShvYmplY3QgZW5lbXkpOworCitERUZJTklFUlQgSU46CisgICAgIC9zdGQvd2VhcG9uL2NvbWJhdC5jCisKK0FSR1VNRU5URToKKyAgICAgZW5lbXkKKyAgICAgICAgICBEZXIgR2VnbmVyLCBnZWdlbiBkZW4gZGllIFdhZmZlIGVpbmdlc2V0enQgd2lyZC4KKworQkVTQ0hSRUlCVU5HOgorICAgICBEaWVzIGlzdCBkaWUgemVudHJhbGUgRnVua3Rpb24gZGVyIFdhZmZlLiBTaWUgd2lyZCBpbiBqZWRlciBLYW1wZnJ1bmRlCisgICAgIHZvbiBBdHRhY2soKSBhdXMgYXVmZ2VydWZlbiB1bmQgZ2lidCBkZW4gU2NoYWRlbiB6dXJ1ZWNrLCBkZW4gZGVyCisgICAgIEdlZ25lciBhYndlaHJlbiBtdXNzLgorCisgICAgIEluIGRlbiBTY2hhZGVuIGdlaGVuIHNvd29obCBkaWUgU3RhZXJrZSBkZXIgV2FmZmUgYWxzIGF1Y2ggZGllIFN0YWVya2UKKyAgICAgZGVzIFRyYWVnZXJzIGRlciBXYWZmZSBlaW4uCisKKyAgICAgV3VyZGUgZWluZSBIaXRGdW5jKCkgYW5nZWdlYmVuLCBzbyB3aXJkIGRpZXNlIG1pdCBkZW4gZ2xlaWNoZW4KKyAgICAgUGFyYW1ldGVybiB3aWUgUXVlcnlEYW1hZ2UoKSBhdWZnZXJ1ZmVuLgorCitSVWVDS0dBQkVXRVJUOgorICAgICBEaWUgU3RhZXJrZSBkZXMgU2NobGFnZXMgZnVlciBkaWVzZSBLYW1wZnJ1bmRlLiBTaWUgZXJtaXR0ZWx0IHNpY2ggYWxzCisgICAgIFp1ZmFsbHN6YWhsIHp3aXNjaGVuIDAgdW5kIGVpbmVtIFdlcnQsIGRlciBzaWNoIGF1cyBkZXIgU3RhZXJrZSBkZXIKKyAgICAgV2FmZmUgdW5kIGRlciBTdGFlcmtlIGlocmVzIFRyYWVnZXJzIGVyZ2lidC4gRGFzIEVyZ2VibmlzIGRlcworICAgICBIaXRGdW5jKCktQXVmcnVmcyB3aXJkIHp1IGRpZXNlciBaYWhsIGhpbnp1Z2V6YWVobHQuCisKK0JFTUVSS1VOR0VOOgorICAgICBBdWNoIHdlbm4gbWFuIGVpbmUgSGl0RnVuYygpIHZlcndlbmRldCwgZGFyZiBkZXIgUnVlY2tnYWJld2VydAorICAgICBpbnNnZXNhbXQgbmljaHQgZ3JvZXNzZXIgYWxzIDIwMCB3ZXJkZW4uIEltIFp3ZWlmZWxzZmFsbCBzb2xsdGUgCisgICAgIG1hbiBzaWNoIG1pdCBkZXIgenVzdGFlbmRpZ2VuIEJhbGFuY2UgYmVzcHJlY2hlbiEKKworU0lFSEUgQVVDSDoKKyAgICAgSGl0RnVuYygpLCBBdHRhY2soKSwgL3N0ZC93ZWFwb24uYywgZ3Jlbnp3ZXJ0ZQorCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCitMYXN0IG1vZGlmaWVkOiBGcmUgRmViIDE2LjAyLjAxIDEyOjU4OjAwIHZvbiBUaWxseQpkaWZmIC0tZ2l0IGEvZG9jL2xmdW4vUXVlcnlEZWZlbmQgYi9kb2MvbGZ1bi9RdWVyeURlZmVuZApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi40ZDNkM2UwCi0tLSAvZGV2L251bGwKKysrIGIvZG9jL2xmdW4vUXVlcnlEZWZlbmQKQEAgLTAsMCArMSw0NSBAQAorUXVlcnlEZWZlbmQoKQorCitGVU5LVElPTjoKKyAgICAgaW50IFF1ZXJ5RGVmZW5kKHN0cmluZ3xzdHJpbmcqIGR0eXAsIGludHxtYXBwaW5nIHNwZWxsLCBvYmplY3QgZW5lbXkpOworCitERUZJTklFUlQgSU46CisgICAgIC9zdGQvYXJtb3VyL2NvbWJhdC5jCisKK0FSR1VNRU5URToKKyAgICAgZHR5cCAgLSBTY2hhZGVuc3R5cGVuIGRlciBBbmdyaWZmc2FydAorICAgICBzcGVsbCAtIDAgICAgICAgYmVpIGtvbnZlbnRpb25lbGxlbSBBbmdyaWZmLAorICAgICAgICAgICAgICE9IDAgICAgYmVpIEFuZ3JpZmYgbWl0IGVpbmVtIG5pY2h0cGh5c2lzY2hlbiBTcGVsbCwKKyAgICAgICAgICAgICBtYXBwaW5nIGJlaSBnZW5hdWVyZW4gQW5nYWJlbiB6dXIgV2lya3VuZworICAgICBlbmVteSAtIERlciBhbmdyZWlmZW5kZSBHZWduZXIKKworQkVTQ0hSRUlCVU5HOgorICAgICBEaWVzIGlzdCBkaWUgemVudHJhbGUgRnVua3Rpb24gZWluZXIgUnVlc3R1bmcuIFNpZSB3aXJkIGluIGplZGVyCisgICAgIEthbXBmcnVuZGUgYXVzIC9zdGQvbGl2aW5nL2NvbWJhdDo6RGVmZW5kKCkgZnVlciBqZWRlIFJ1ZXN0dW5nIGF1ZmdlcnVmZW4sCisgICAgIGRpZSBkZXIgU3BpZWxlciBhbmdlem9nZW4gaGF0LgorCisgICAgIERlciBTY2h1dHp3ZXJ0IHZvbiBQX0FDIGVudGZhbHRldCBzZWluZSBXaXJrdW5nIG51ciBiZWkga29udmVudGlvbmVsbGVuCisgICAgIEFuZ3JpZmZlbjoKKyAgICAgKiB3ZW5uICdzcGVsbCcgMCBpc3QgKGJlaSBBdWZydWYgYXVzIGRlciBEZWZlbmQgaGVyYXVzIGF1c2dlc2NobG9zc2VuKQorICAgICAqIHdlbm4gJ3NwZWxsJyBlaW4gTWFwcGluZyBtaXQgZGVtIEZsYWcgU1BfUEhZU0lDQUxfQVRUQUNLICE9IDAgVU5ECisgICAgICAgICAgICAgICAgICAgIGluICdkdHlwJyBtaW5kZXN0ZW5zIGVpbiBwaHlzaXNjaGVyIFNjaGFkZW4gZW50aGFsdGVuIGlzdAorCitSVWVDS0dBQkVXRVJUOgorICAgICBEaWUgUnVlc3R1bmdzc3RhZXJrZSBpbiBkaWVzZXIgS2FtcGZydW5kZS4gU2llIGVybWl0dGVsdCBzaWNoIGFscworICAgICBadWZhbGxzemFobCB6d2lzY2hlbiAwIHVuZCBQX0FDLCB6dXp1ZWdsaWNoIGRlcyBFcmdlYm5pc3NlcyBkZXMKKyAgICAgRGVmZW5kRnVuYygpLUF1ZnJ1ZnMuCisKK0JFTUVSS1VOR0VOOgorICAgICBBdWNoIHdlbm4gbWFuIGVpbmUgRGVmZW5kRnVuYygpIGJlbnV0enQsIGRhcmYgZGVyIFJ1ZWNrZ2FiZXdlcnQKKyAgICAgaW5zZ2VzYW10IG5pY2h0IGdyb2Vzc2VyIHdlcmRlbiBhbHMgZGVyIGZ1ZXIgZGVuIFJ1ZXN0dW5nc3R5cAorICAgICBtYXhpbWFsIHp1bGFlc3NpZ2UhCisKK1NJRUhFIEFVQ0g6CisgICAgIFJ1ZXN0dW5nZW46IFBfQVJNT1VSX1RZUEUsIFBfTlJfSEFORFMsIFBfQVJNT1VSUywgUF9XT1JOCisgICAgIFNjaHV0ejogICAgIFBfQUMsIERlZmVuZCgpLCBEZWZlbmRGdW5jCisgICAgIFNvbnN0aWdlczogIFBfRVFVSVBfVElNRSwgUF9MQVNUX1VTRSwgUF9EQU1fVFlQRQorICAgICBWZXJ3YW5kdDogICBRdWVyeUFybW91ckJ5VHlwZShMKSwgUF9XRUFQT04sIEZpbHRlckNsb3RoaW5nKCksCisgICAgICAgICAgICAgICAgIEZpbHRlckFybW91cnMoKQorICAgICBSZXNpc3Rlbno6ICBQX1JFU0lTVEFOQ0VfU1RSRU5HVEhTLCBDaGVja1Jlc2lzdGFuY2UoTCkKKworMjguSnVsIDIwMTQgR2xvaW5zb24KZGlmZiAtLWdpdCBhL2RvYy9sZnVuL1F1ZXJ5RGlzZ3Vpc2UgYi9kb2MvbGZ1bi9RdWVyeURpc2d1aXNlCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmMzMGFhM2YKLS0tIC9kZXYvbnVsbAorKysgYi9kb2MvbGZ1bi9RdWVyeURpc2d1aXNlCkBAIC0wLDAgKzEsMjkgQEAKK1F1ZXJ5RGlzZ3Vpc2UoKQorCitGVU5LVElPTjoKKyAgICAgbWl4ZWQgUXVlcnlEaXNndWlzZSgpOworCitERUZJTklFUlQgSU46CisgICAgID8/PworCitBUkdVTUVOVEU6CisgICAgIGtlaW5lCisKK0JFU0NIUkVJQlVORzoKKyAgICAgUHJ1ZWZ0LCBvYiBkZXIgU3BpZWxlciBkdXJjaCBlaW5lbiBTaGFkb3cgKG1laXN0ZW5zIGRlciBUYXJuaGVsbSkgCisgICAgICdtYW5pcHVsaWVydCcgaXN0LgorCitSVWVDS0dBQkVXRVJUOgorICAgICAwLCB3ZW5uIGRpZXMgbmljaHQgZGVyIEZhbGwgaXN0LCBhbnNvbnN0ZW4gZGllIEJlc2NocmVpYnVuZyBkZXMgU2hhZG93CisgICAgIHZvbSBUeXAgc3RyaW5nLgorCitCRU1FUktVTkdFTjoKKyAgICAgSW4gV2FmZmVuIC8gUnVlc3R1bmdlbiB1LmFlLiBkaWUgUF9SRVNUUklDVElPTlMgZ2VzZXR6dCBoYWJlbiwKKyAgICAgZXJ1ZWJyaWd0IHNpY2ggZWluZSBBYmZyYWdlIGF1ZiBRdWVyeURpc2d1aXNlKCksIGRhIGRpZXMgYmVyZWl0cyBpbQorICAgICByZXN0cmljdGlvbl9jaGVja2VyIGVybGVkaWd0IHdpcmQuCisKK1NJRUhFIEFVQ0g6CisgICAgIFBfUkVTVFJJQ1RJT05TLCAvc3RkL3Jlc3RyaWN0aW9uX2NoZWNrZXIuYworCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCitMYXN0IG1vZGlmaWVkOiBNb24gTWFyIDI2IDE0OjQ4OjIwIDIwMDEgdm9uIFRpbGx5CmRpZmYgLS1naXQgYS9kb2MvbGZ1bi9RdWVyeURvb3JLZXkgYi9kb2MvbGZ1bi9RdWVyeURvb3JLZXkKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uY2ZkNmEyOQotLS0gL2Rldi9udWxsCisrKyBiL2RvYy9sZnVuL1F1ZXJ5RG9vcktleQpAQCAtMCwwICsxLDQ4IEBACitGVU5LVElPTjoKKyAgICAgbWl4ZWQgUXVlcnlEb29yS2V5KCk7CisKK0RFRklOSUVSVCBJTjoKKyAgICAgdmVyc2NoLiBTY2hsdWVzc2VsbgorCitBUkdVTUVOVEU6CisgICAgIGtlaW5lCisKK0JFU0NIUkVJQlVORzoKKyAgICAgRGllc2UgRnVua3Rpb24gd2lyZCBpbiBlaW5lbSBTY2hsdWVzc2VsIGF1ZmdlcnVmZW4sIHdlbm4gbWFuIG1pdCBkaWVzZW0KKyAgICAgZWluZSBUdWVyIGF1Zi0gb2RlciBhYnNjaGxpZXNzZW4gd2lsbC4gQW5oYW5kIGRlcyBSdWVja2dhYmV3ZXJ0ZXMgd2lyZAorICAgICBlbnRzY2hpZWRlbiwgb2IgZGVyIFNjaGx1ZXNzZWwgcGFzc3Qgb2RlciBuaWNodC4KKworUlVFQ0tHQUJFV0VSVDoKKyAgICAgU3RyaW5nIG9kZXIgQXJyYXkgdm9uIFN0cmluZ3MgZGVyIFJhdW1wZmFkZSwgZGVyZW4gZ2VtZWluc2FtZSBUdWVyZW4KKyAgICAgc2ljaCBtaXQgZGllc2VtIFNjaGx1ZXNzZWwgYXVmLSBiencuIGFic2NobGllc3NlbiBsYXNzZW4uIERpZSBLZXlzIHNpbmQKKyAgICAgZGFiZWkgZGllIFJhdW1wZmFkZSwgZ2V0cmVubnQgZHVyY2ggZWluICI6Ii4gRGFiZWkgbXVlc3NlbiBkaWUgUGZhZGUKKyAgICAgaW4gbGV4aWtvZ3JhcGhpc2NoZXIgKGFscGhhYmV0aXNjaGVyKSBSZWloZW5mb2xnZSBzb3J0aWVydCBzZWluOgorCisgICAgICI8bmFtZV9yYXVtXzE+OjxuYW1lX3JhdW1fMj4iCisKK0JFSVNQSUVMRToKKyAgICAgRWluIFNjaGx1ZXNzZWwsIG1pdCBkZW0gc2ljaCBlaW5lIGVpbnppZ2UgVHVlciBvZWZmbmVuIGxhZXNzdCAoZmFsbHMgZXMKKyAgICAgamVtYWxzIGVpbmUgVHVlciB6d2lzY2hlbiBLYXJhdGUtIHVuZCBBYmVudGV1cmVyZ2lsZGUgZ2ViZW4gc29sbHRlLi4uKToKKworICAgICBzdHJpbmcgUXVlcnlEb29yS2V5KCkKKyAgICAgeworICAgICAgIHJldHVybiAiL2dpbGRlbi9hYmVudGV1cmVyOi9naWxkZW4va2FyYXRlIjsKKyAgICAgfQorCisgICAgIEVpbiBTY2hsdWVzc2VsLCBkZXIgaW4gbWVocmVyZW4gVHVlcmVuIHBhc3N0OgorCisgICAgIHN0cmluZyogUXVlcnlEb29yS2V5KCkKKyAgICAgeworICAgICAgIHJldHVybiAoeyAiL2dpbGRlbi9hYmVudGV1cmVyOi9wbGF5ZXJzL3dhcmdvbi93b3Jrcm9vbSIsCisgICAgICAgICAgICAgICAgICIvZ2lsZGVuL2FiZW50ZXVyZXI6L2dpbGRlbi9rYXJhdGUiLAorICAgICAgICAgICAgICAgICAiL3BsYXllcnMvam9mL3dvcmtyb29tOi9wbGF5ZXJzL3dhcmdvbi93b3Jrcm9vbSIKKyAgICAgICAgICAgICAgfSk7CisgICAgIH0KKworCitTSUVIRSBBVUNIOgorICAgIE5ld0Rvb3IoKSwgUXVlcnlEb29yU3RhdHVzKCksIFNldERvb3JTdGF0dXMoKSwgUF9ET09SX0lORk9TLAorICAgIC9zdGQvcm9vbS9kb29ycy5jLCAvb2JqL2Rvb3JtYXN0ZXIuYywgR2V0UGhpb2xlbkluZm9zKCksIFF1ZXJ5QWxsRG9vcnMoKQorCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorTGV0enRlIEFlbmRlcnVuZzogRG9uLCAwOC4wNS4yMDE0LCBHYWJ5bG9uCmRpZmYgLS1naXQgYS9kb2MvbGZ1bi9RdWVyeURvb3JTdGF0dXMgYi9kb2MvbGZ1bi9RdWVyeURvb3JTdGF0dXMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYzFlZTZiOAotLS0gL2Rldi9udWxsCisrKyBiL2RvYy9sZnVuL1F1ZXJ5RG9vclN0YXR1cwpAQCAtMCwwICsxLDI4IEBACitGVU5LVElPTjoKKyAgICAgaW50IFF1ZXJ5RG9vclN0YXR1cyhzdHJpbmcgZGVzdCk7CisKK0RFRklOSUVSVCBJTjoKKyAgICAgL29iai9kb29ybWFzdGVyLmMKKworQVJHVU1FTlRFOgorICAgICA8ZGVzdD4gPSBaaWVscmF1bSBkZXIgVHVlci4KKworQkVTQ0hSRUlCVU5HOgorICAgICBFcyB3aXJkIGRlciBadXN0YW5kIGRlciBUdWVyLCBkaWUgdm9uIGRpZXNlbSBSYXVtIG5hY2ggPGRlc3Q+IGZ1ZWhydCwKKyAgICAgZXJtaXR0ZWx0LgorCitSVWVDS0dBQkVXRVJUOgorICAgICAwIGJlaSBuaWNodCB2b3JoYW5kZW5lIFR1ZXIsIGFuc29uc3RlbiBlaW5lciBkZXIgZm9sZ2VuZGVuIFp1c3RhZW5kZSAoYXVzCisgICAgICAgPGRvb3Jyb29tLmg+KToKKworICAgICAgIERfU1RBVFVTX0xPQ0tFRCAtIFR1ZXIgYWJnZXNjaGxvc3NlbgorICAgICAgIERfU1RBVFVTX0NMT1NFRCAtIFR1ZXIgZ2VzY2hsb3NzZW4KKyAgICAgICBEX1NUQVRVU19PUEVOICAgLSBUdWVyIGdlb2VmZm5ldAorCisKK1NJRUhFIEFVQ0g6CisgICAgTmV3RG9vcigpLCBRdWVyeURvb3JLZXkoKSwgU2V0RG9vclN0YXR1cygpLCBQX0RPT1JfSU5GT1MsCisgICAgL3N0ZC9yb29tL2Rvb3JzLmMsIC9vYmovZG9vcm1hc3Rlci5jLCBHZXRQaGlvbGVuSW5mb3MoKSwgUXVlcnlBbGxEb29ycygpCisKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCitMZXR6dGUgQWVuZGVydW5nOiBEb24sIDA4LjA1LjIwMTQsIEdhYnlsb24KZGlmZiAtLWdpdCBhL2RvYy9sZnVuL1F1ZXJ5RHUgYi9kb2MvbGZ1bi9RdWVyeUR1Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjliZTYyYTgKLS0tIC9kZXYvbnVsbAorKysgYi9kb2MvbGZ1bi9RdWVyeUR1CkBAIC0wLDAgKzEsMzkgQEAKK1F1ZXJ5RHUoKQorCitGVU5LVElPTjoKKyAgICAgdmFyYXJncyBzdHJpbmcgUXVlcnlEdShpbnQgY2FzdXMsIGludCBnZW5kZXIsIGludCBhbnphaGwpOworCitERUZJTklFUlQgSU46CisgICAgIC9zdGQvdGhpbmcvbGFuZ3VhZ2UuYworCitBUkdVTUVOVEU6CisgICAgIGNhc3VzCisgICAgICAgICAgRGVyIEZhbGwgZnVlciBkaWUgQW5yZWRlLgorCisgICAgIGdlbmRlcgorICAgICAgICAgIERhcyBHZXNjaGxlY2h0IGRlcyBhbnp1cmVkZW5kZW4gT2JqZWt0ZXMuCisKKyAgICAgYW56YWhsCisgICAgICAgICAgSXN0IG51ciBlaW4gT2JqZWt0IGFuenVzcHJlY2hlbiBvZGVyIG1laHJlcmU/CisKK0JFU0NIUkVJQlVORzoKKyAgICAgRGllc2UgRnVua3Rpb24gbGllZmVydCBkaWUgZGVtIEFubGFzcyBlbnRzcHJlY2hlbmRlIEFucmVkZSBmdWVyIGVpbgorICAgICBPYmpla3QuCisKK1JVZUNLR0FCRVdFUlQ6CisgICAgIEVpbiBTdHJpbmcgbWl0IGRlciBBbnJlZGUuCisKK0JFSVNQSUVMRToKKworICAgICBwcmludGYoIiVzIHNldHp0ICVzIGF1ZiBkZW4gQm9kZW4uXG4iLAorICAgICAgICAgICBjYXBpdGFsaXplKFF1ZXJ5RHUoV0VSLCBUUC0+UXVlcnlQcm9wKFBfR0VOREVSKSwgU0lOR1VMQVIpLAorICAgICAgICAgICBRdWVyeUR1KFdFTiwgVFAtPlF1ZXJ5UHJvcChQX0dFTkRFUiksIFNJTkdVTEFSKSk7CisKKyAgICAgKEluIGRlbiBtZWlzdGVuIEZhZWxsZW4ga2FubiBtYW4gaGllciBhdWNoIGRpcmVrdCAiRHUiIHVuZCAiZGljaCIKKyAgICAgZWluc2V0emVuLikKKworU0lFSEUgQVVDSDoKKyAgICAgL3N0ZC90aGluZy9sYW5ndWFnZS5jCisgICAgIFF1ZXJ5UG9zc1Byb25vdW4oKSwgUXVlcnlPd24oKSwgUXVlcnlQcm9ub3VuKCkKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KK0xhc3QgbW9kaWZpZWQ6IFdlZCBNYXkgOCAxMDoyMjoyNyAxOTk2IGJ5IFdhcmdvbgpkaWZmIC0tZ2l0IGEvZG9jL2xmdW4vUXVlcnlFbmVtaWVzIGIvZG9jL2xmdW4vUXVlcnlFbmVtaWVzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjdjMzkzYjQKLS0tIC9kZXYvbnVsbAorKysgYi9kb2MvbGZ1bi9RdWVyeUVuZW1pZXMKQEAgLTAsMCArMSwzMyBAQAorRlVOS1RJT046CisJbWl4ZWQgUXVlcnlFbmVtaWVzKCk7CisKK0RFRklOSUVSVCBJTjoKKwkvc3RkL2xpdmluZy9jb21iYXQuYworCitBUkdVTUVOVEU6CisJa2VpbmUKKworUlVlQ0tHQUJFV0VSVDoKKwlBcnJheSBtaXQgQXJyYXkgYXVzIGJla2FubnRlbiBHZWduZXJuIHVuZCBBcnJheSBhdXMgWmVpdGVuCisKK0JFU0NIUkVJQlVORzoKKwlEaWVzZSBGdW5rdGlvbiBlbnRoYWVsdCBlaW4gQXJyYXksIGRhcyB6d2VpIEVsZW1lbnRlIGVudGhhZWx0LCBkaWUKKwl3aWVkZXJ1bSBBcnJheXMgc2luZDoKKwkgIDEuIEFycmF5OiBEaWUgYmVrYW5udGVuIEdlZ25lciBhbHMgT2JqZWt0cG9pbnRlci4KKwkgIDIuIEFycmF5OiBEaWUgenVnZW9yZG5ldGVuIFplaXRlbiwgd2llIGxhbmdlIGVpbiBHZWduZXIgbm9jaCBhbHMKKwkgICAgICAgICAgICBzb2xjaGVyIGJla2FubnQgc2VpbiBzb2xsLgorCUltIE5vcm1hbGZhbGwgd2lyZCBlaW4gR2VnbmVyIGRhbm4gYmVrYW5udCwgd2VubiBtYW4gZ2V6aWVsdAorCWplbWFuZGVuIGF0YWNraWVydCwgb2RlciB3ZW5uIG1hbiBlaW5lbiBBbmdyaWZmIGFid2VocmVuIG11c3MuCisJRGFubiB3aXJkIGRlciBHZWduZXIgaW50ZXJuIGFiZ2VzcGVpY2hlcnQsIHVuZCBlcyB3aXJkIGVpbmUgWmVpdAorCWdlc2V0enQsIGRpZSBkYW5uIHJ1bnRlcmdlemFlaGx0IHdpcmQuIElzdCBkaWUgWmVpdCBhdWYgMCwgc28gd2lyZAorCWRlciBHZWduZXIgd2llZGVyIGF1dG9tYXRpc2NoIGF1c2dldHJhZ2VuLgorCShTdGFuZGFyZG1hZXNzaWcgYmV0cmFlZ3QgZGllc2UgWmVpdCA2MDAgU2VrdW5kZW4gKDMwMCBIZWFydGJlYXRzKS4pCisJTWFuIGthbm4gc2ljaCBkaWUgR2VnbmVyIGF1Y2ggaW4gRm9ybSBlaW5lcyBNYXBwaW5ncyB6dXJ1ZWNrZ2ViZW4KKwlsYXNzZW4uIERpZXMgZXJyZWljaHQgbWFuIG1pdHRlbHMgZGVyIEZ1bmt0aW9uIEdldEVuZW1pZXMoKS4KKworU0lFSEUgQVVDSDoKKwlLaWxsKCksIEF0dGFjaygpLCBEZWZlbmQoKSwgZG9fbXlfaGVhcnRfYmVhdCgpLCBQcmVzZW50RW5lbWllcygpLAorCUdldEVuZW1pZXMoKSwgU2VsZWN0RW5lbXkoKSwgUXVlcnlQcmVmZXJlZEVuZW15KCksIFBfUFJFRkVSRURfRU5FTVkKKworLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorMjkuMTIuMjAwNywgWmVzc3RyYQpkaWZmIC0tZ2l0IGEvZG9jL2xmdW4vUXVlcnlGbGF3IGIvZG9jL2xmdW4vUXVlcnlGbGF3Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjgxMzdkODEKLS0tIC9kZXYvbnVsbAorKysgYi9kb2MvbGZ1bi9RdWVyeUZsYXcKQEAgLTAsMCArMSw0MSBAQAorUXVlcnlGbGF3KCkKKworRlVOS1RJT046CisgICAgIG1peGVkICpRdWVyeUZsYXcoKTsKKworREVGSU5JRVJUIElOOgorICAgICAvc3RkL2FybW91ci9jb21iYXQuYywKKyAgICAgL3N0ZC93ZWFwb24vY29tYmF0LmMKKworQVJHVU1FTlRFOgorICAgICBrZWluZQorCitCRVNDSFJFSUJVTkc6CisgICAgIFF1ZXJ5RmxhdygpIGxpZWZlcnQgSW5mb3JtYXRpb25lbiB1ZWJlciBkZW4gR3JhZCBkZXIgQWJudXR6dW5nIGRlcgorICAgICBXYWZmZSBiencuIFJ1ZXN0dW5nLiBEZXIgWnVzdGFuZCB3aXJkIGFscyBBcnJheSBtaXQgZGVyIFphaGwgZGVyCisgICAgIFRha2VGbGF3KCktQXVmcnVmZSB1bmQgZGVtIERhdHVtIGRlcyBlcnN0ZW4gVGFrZUZsYXcoKS1BdWZydWZzCisgICAgIHp1cnVlY2tnZWdlYmVuLgorCitSVWVDS0dBQkVXRVJUOgorICAgICBFaW4gQXJyYXkgbWl0IGRyZWkgRWxlbWVudGVuOgorICAgICAgIDEuIGRlciBha3R1ZWxsZSBaYWVobGVyc3RhbmQKKyAgICAgICAyLiBaZWl0IGRlciBlcnN0ZW4gQmVudXR6dW5nCisgICAgICAgMy4gZGllIFplaXQgZGVyIGVyc3RlbiBCZW51dHp1bmcgYWxzIFN0cmluZworCitCRUlTUElFTEU6CisgICAgIERlbiBha3R1ZWxsZW4gQWJudXR6dW5nc2dyYWQgZWluZXIgUnVlc3R1bmcga2FubiBtYW4gc2ljaCB3aWUgZm9sZ3QKKyAgICAgYW56ZWlnZW4gbGFzc2VuOgorCisgICAgIG1peGVkICpmbGF3OworCisgICAgIGZsYXcgPSBydWVzdHVuZy0+UXVlcnlGbGF3KCk7CisKKyAgICAgcHJpbnRmKCJaYWVobGVyc3RhbmQ6ICVkLCBlcnN0ZXIgU2NobGFnOiAlc1xuIiwgZmxhd1swXSwgZmxhd1syXSk7CisgICAgIC8vIG9kZXIgYW5hbG9nOgorICAgICBwcmludGYoIlphZWhsZXJzdGFuZDogJWQsIGVyc3RlciBTY2hsYWc6ICVzXG4iLCBmbGF3WzBdLCBkdGltZShmbGF3WzFdKSk7CisKK1NJRUhFIEFVQ0g6CisgICAgIFRha2VGbGF3KCksIC9zdGQvYXJtb3VyL2NvbWJhdC5jLCAvc3RkL3dlYXBvbi9jb21iYXQuYworCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCitMYXN0IG1vZGlmaWVkOiBXZWQgTWF5IDggMTA6MjI6MzIgMTk5NiBieSBXYXJnb24KZGlmZiAtLWdpdCBhL2RvYy9sZnVuL1F1ZXJ5R2VuZGVyU3RyaW5nIGIvZG9jL2xmdW4vUXVlcnlHZW5kZXJTdHJpbmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOTY3YTE2ZQotLS0gL2Rldi9udWxsCisrKyBiL2RvYy9sZnVuL1F1ZXJ5R2VuZGVyU3RyaW5nCkBAIC0wLDAgKzEsMjMgQEAKK1F1ZXJ5R2VuZGVyU3RyaW5nKCkKKworRlVOS1RJT046CisgICAgIHN0cmluZyBRdWVyeUdlbmRlclN0cmluZygpOworCitERUZJTklFUlQgSU46CisgICAgIC9zdGQvdGhpbmcvbGFuZ3VhZ2UuYworCitBUkdVTUVOVEU6CisgICAgIGtlaW5lCisKK0JFU0NIUkVJQlVORzoKKyAgICAgRXMgd2lyZCBlaW4gU3RyaW5nIG1pdCBkZW0gR2VzY2hsZWNodCBkZXMgT2JqZWt0ZXMgenVydWVja2dlZ2ViZW4KKyAgICAgKCJtYWVubmxpY2giLCAid2VpYmxpY2giLCAic2FlY2hsaWNoIikuCisKK1JVZUNLR0FCRVdFUlQ6CisgICAgIERlciBTdHJpbmcgbWl0IGRlbSBHZXNjaGxlY2h0LgorCitTSUVIRSBBVUNIOgorICAgICAvc3RkL3RoaW5nL2xhbmd1YWdlLmMKKworLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorTGFzdCBtb2RpZmllZDogV2VkIE1heSA4IDEwOjIzOjAwIDE5OTYgYnkgV2FyZ29uCmRpZmYgLS1naXQgYS9kb2MvbGZ1bi9RdWVyeUdyYW1zUGVyVW5pdHMgYi9kb2MvbGZ1bi9RdWVyeUdyYW1zUGVyVW5pdHMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMzU0OWU1NAotLS0gL2Rldi9udWxsCisrKyBiL2RvYy9sZnVuL1F1ZXJ5R3JhbXNQZXJVbml0cwpAQCAtMCwwICsxLDMxIEBACitRdWVyeUdyYW1zUGVyVW5pdHMoKQorCitGVU5LVElPTjoKKyAgICAgaW50ICpRdWVyeUdyYW1zUGVyVW5pdHMoKTsKKworREVGSU5JRVJUIElOOgorICAgICAvc3RkL3VuaXQuYworCitBUkdVTUVOVEU6CisgICAgIGtlaW5lCisKK0JFU0NIUkVJQlVORzoKKyAgICAgTGllZmVydCBkYXMgR2V3aWNodHN2ZXJoYWVsdG5pcyBmdWVyIGRpZSBFaW5oZWl0ZW4genVydWVjay4KKworUlVlQ0tHQUJFV0VSVDoKKyAgICAgRWluIEFycmF5IHZvbiB6d2VpIFphaGxlbi4gRGllIGVyc3RlIFphaGwgaXN0IGRhcyBHZXdpY2h0IGRlciBpbiBkZXIKKyAgICAgendlaXRlbiBaYWhsIGFuZ2VnZWJlbmVuIEVpbmhlaXRlbi4KKworQkVJU1BJRUxFOgorICAgICBTdGVodCBpbSBVbml0LU9iamVrdCBmb2xnZW5kZSBHZXdpY2h0c3p1d2Vpc3VuZzoKKworICAgICAgIFNldEdyYW1zUGVyVW5pdHMoNCwxKTsKKworICAgICBzbyBsaWVmZXJ0IFF1ZXJ5R3JhbXNQZXJVbml0cygpIGFscyBFcmdlYm5pcyAoezQsIDF9KS4KKworU0lFSEUgQVVDSDoKKyAgICAgU2V0Q29pbnNQZXJVbml0cygpLCBRdWVyeUNvaW5zUGVyVW5pdHMoKSBTZXRHcmFtc1BlclVuaXRzKCksCisgICAgIC9zdGQvdW5pdC5jCisKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KK0xhc3QgbW9kaWZpZWQ6IFdlZCBNYXkgOCAxMDoyMjozOSAxOTk2IGJ5IFdhcmdvbgpkaWZmIC0tZ2l0IGEvZG9jL2xmdW4vUXVlcnlHcm91cGVkS2V5cyBiL2RvYy9sZnVuL1F1ZXJ5R3JvdXBlZEtleXMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uY2U3ZTMxNgotLS0gL2Rldi9udWxsCisrKyBiL2RvYy9sZnVuL1F1ZXJ5R3JvdXBlZEtleXMKQEAgLTAsMCArMSwyNiBAQAorUXVlcnlHcm91cGVkS2V5cygpCisKK0ZVTktUSU9OOgorICAgIG1peGVkICpRdWVyeUdyb3VwZWRLZXlzKCkKKworREVGSU5JRVJUIElOOgorICAgIC9zZWN1cmUvcXVlc3RtYXN0ZXIuYworCitBUkdVTUVOVEU6CisgICAga2VpbmUKKworUlVFQ0tHQUJFV0VSVDoKKyAgICBBcnJheSBtaXQgQXJyYXlzIG1pdCBkZW4gU2NobHVlc3NlbHdvZXJ0ZXJuIGRlciBRdWVzdHMKKworQkVTQ0hSRUlCVU5HOgorICAgIERpZXNlIEZ1bmt0aW9uIGxpZWZlcnQgZWluIEFycmF5IG1pdCBtZWhyZXJlbiBBcnJheXMgenVydWVjaywgZGllCisgICAgZGllIFNjaGx1ZXNzZWx3b2VydGVyIGRlciBRdWVzdHMgZW50aGFsdGVuLiBEYWJlaSBlbnRoYWVsdCBkYXMgCisgICAgZXJzdGUgQXJyYXkgZGllIFNjaGx1ZXNzZWx3b2VydGVyIGRlciBRdWVzdHMgZGVyIGVyc3RlbiBHcnVwcGUgZXRjLgorICAgIERhcyBsZXR6dGUgQXJyYXkgZW50aGFlbHQgZGllIEdydXBwZSBkZXIgb3B0aW9uYWxlbiBRdWVzdHMuCisKK1NJRUhFIEFVQ0g6CisgICAgR2l2ZVF1ZXN0LCBRdWVyeVF1ZXN0LCAvc2VjdXJlL3F1ZXN0bWFzdGVyLmgKKworLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorWnVsZXR6dCBnZWFlbmRlcnQ6IFNvbiwgMTkuIE5vdiAyMDAwLCAxMzoyMjoxNSB2b24gWm9vay4KKwpkaWZmIC0tZ2l0IGEvZG9jL2xmdW4vUXVlcnlHdWVzdCBiL2RvYy9sZnVuL1F1ZXJ5R3Vlc3QKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uY2M5OTcxYgotLS0gL2Rldi9udWxsCisrKyBiL2RvYy9sZnVuL1F1ZXJ5R3Vlc3QKQEAgLTAsMCArMSwzMyBAQAorUXVlcnlHdWVzdCgpCitGVU5LVElPTjoKKyAgICAgaW50IFF1ZXJ5R3Vlc3QoKTsKKworREVGSU5JRVJUIElOOgorICAgICAvc3RkL3BsYXllci9iYXNlCisKK0JFU0NIUkVJQlVORzoKKyAgICAgQXVmIGRlciB1aWQgYmFzaWVyZW5kZSBIaWxmc2Z1bmt0aW9uLCB1bSBHYWVzdGUgenUgaWRlbnRpZml6aWVyZW4uCisKK1JVZUNLR0FCRVdFUlQ6CisgICAgIDEsIHdlbm4gU3BpZWxlcm9iamVrdCBlaW4gR2FzdCBpc3Q7IDAgc29uc3QKKworQkVJU1BJRUxFOgorICAgICBpZih0aGlzX2ludGVyYWN0aXZlKCktPlF1ZXJ5R3Vlc3QoKSkKKyAgICAgeworICAgICAgICh0aGlzX2ludGVyYWN0aXZlKCktPlJlY2VpdmVNc2coCisgICAgICAgICAgIldpciBiZWRpZW5lbiBoaWVyIG51ciBvcmRlbnRsaWNoZSBDaGFyYWt0ZXJlLiIsCisgICAgICAgICAgTVRfTElTVEVOLCBNQV9TQVksCisgICAgICAgICAgIkRlciBXaXJ0IHNhZ3Q6ICIpICE9IE1TR19TRU5TRV9CTE9DSykgfHwKKyAgICAgICAodGhpc19pbnRlcmFjdGl2ZSgpLT5SZWNlaXZlTXNnKAorICAgICAgICAgICJEZXIgV2lydCBnZXN0aWt1bGllcnQgZGljaCBoaW5hdXMuIiwKKyAgICAgICAgICBNVF9MT09LLCBNQV9MT09LKSAhPSBNU0dfU0VOU0VfQkxPQ0spIHx8CisgICAgICAgKHRoaXNfaW50ZXJhY3RpdmUoKS0+UmVjZWl2ZU1zZygKKyAgICAgICAgICAiSXJnZW5kd2VyIHN0dXBzdCBkaWNoIGFuLiBEdSBzb2xsc3Qgd29obCBnZWhlbi4iLAorICAgICAgICAgIE1UX0ZFRUwsIE1BX0ZFRUwpKTsKKyAgICAgICByZXR1cm4gMTsKKyAgICAgfQorCitTSUVIRSBBVUNIOgorICAgICBnZXR1aWQoKQorCisxNC4gTWFpIDIwMTUgR2xvaW5zb24KZGlmZiAtLWdpdCBhL2RvYy9sZnVuL1F1ZXJ5SGVhbEluZm8gYi9kb2MvbGZ1bi9RdWVyeUhlYWxJbmZvCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjA3Yjc1NDIKLS0tIC9kZXYvbnVsbAorKysgYi9kb2MvbGZ1bi9RdWVyeUhlYWxJbmZvCkBAIC0wLDAgKzEsMjYgQEAKK1F1ZXJ5SGVhbEluZm8oKQorCitGVU5LVElPTjoKKyAgICAgc3RyaW5nIFF1ZXJ5SGVhbEluZm8oKTsKKworREVGSU5JRVJUIElOOgorICAgICAvc3RkL2NvcnBzZS5jLAorCitBUkdVTUVOVEU6CisgICAgIGtlaW5lCisKK0JFU0NIUkVJQlVORzoKKyAgICAgUXVlcnlIZWFsSW5mbygpIGxpZWZlcnQgZWluZW4gU3RhbmRhcmR0ZXh0IHp1cnVlY2ssIGRlciBncm9iIEF1c2t1bmZ0IAorICAgICBkYXJ1ZWJlciBnaWJ0LCB3ZWxjaGUgQXVzd2lya3VuZ2VuIGRhcyBFc3NlbiBlaW5lciBMZWljaGUgaGFldHRlLiAKKyAgICAgRGllc2UgSW5mbyBrYW5uIHouQi4gdm9uIEdpbGRlbiB2ZXJ3ZW5kZXQgd2VyZGVuLCBkaWUgUF9IRUFMIChzLmRvcnQpCisgICAgIGVpbmVyIExlaWNoZSBuaWNodCBzZWxic3QgYXVzd2VydGVuIHdvbGxlbi4KKworUlVlQ0tHQUJFV0VSVDoKKyAgICAgRWluIG5pY2h0IHVtYnJvY2hlbmVyIFN0cmluZy4gRnVlciBaZWlsZW51bWJydWVjaGUga2FubiBkZXJqZW5pZ2UsCisgICAgIGRlciBkZW4gVGV4dCBhdXNsaWVzdCwgc2VsYnN0IHNvcmdlbi4KKworU0lFSEUgQVVDSDoKKyAgICAgL3N0ZC9jb3Jwc2UuYywgUF9IRUFMCisKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KK0xhc3QgbW9kaWZpZWQ6IDMxLjAzLjIwMDgsIEFyYXRob3JuCmRpZmYgLS1naXQgYS9kb2MvbGZ1bi9RdWVyeU1hdGVyaWFsIGIvZG9jL2xmdW4vUXVlcnlNYXRlcmlhbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi43MWUzYTMzCi0tLSAvZGV2L251bGwKKysrIGIvZG9jL2xmdW4vUXVlcnlNYXRlcmlhbApAQCAtMCwwICsxLDM0IEBACitRdWVyeU1hdGVyaWFsKEwpCitGVU5LVElPTjoKKyAgICAgaW50IFF1ZXJ5TWF0ZXJpYWwoc3RyaW5nIG1hdCkKKworREVGSU5JRVJUIElOOgorICAgICAvc3RkL3RoaW5nL2Rlc2NyaXB0aW9uLmMKKworQVJHVU1FTlRFOgorICAgICBzdHJpbmcgbWF0IC0JTWF0ZXJpYWwsIGF1ZiBkYXMgZ2V0ZXN0ZXQgd2VyZGVuIHNvbGwKKworQkVTQ0hSRUlCVU5HOgorICAgICBUZXN0ZXQsIG9iIGVpbiBHZWdlbnN0YW5kIGF1cyBkZW0gYW5nZWdlYmVuZW4gTWF0ZXJpYWwgYmVzdGVodAorICAgICB1bmQgZ2lidCBkZXNzZW4gQW50ZWlsIHp1cnVlY2suCisgICAgIERpZSBSdWVja2dhYmUgaXN0IGltIFdlcnRlYmVyZWljaCAtMTAwIChBbnRpZ3J1cHBlbikgYmlzICsxMDAgKCUpLgorCitSVUVDS0dBQkVXRVJUOgorICAgICBBbnRlaWwgaW4gUHJvemVudC4KKworQkVJU1BJRUxFOgorICAgICBpZihvYi0+UXVlcnlNYXRlcmlhbChNQVRfSVZPUlkpPD0wKQorICAgICAgIHdyaXRlKCJEYXJhdXMga2FubnN0IER1IGtlaW5lIEJpbGxpYXJka3VnZWxuIHNjaG5pdHplbiFcbiIpOworCitTSUVIRSBBVUNIOgorICAgICBLb256ZXB0ZToJICBtYXRlcmlhbCwgbWF0ZXJpYWxlcmtlbm51bmcKKyAgICAgR3J1bmRsZWdlbmQ6IFBfTUFURVJJQUwsIC9zeXMvdGhpbmcvbWF0ZXJpYWwuaAorICAgICBNZXRob2RlbjogICAgUXVlcnlNYXRlcmlhbEdyb3VwKCksIE1hdGVyaWFsTGlzdCgpLAorICAgICBMaXN0ZW46CSAgQWxsTWF0ZXJpYWxzKCksIEFsbEdyb3VwcygpLCBEdW1wKCkKKwkJICBtYXRlcmlhbGxpc3RlLCBtYXRlcmlhbGdydXBwZW4KKyAgICAgTWFzdGVyOgkgIEFkZE1hdGVyaWFsKCksIENvbnZNYXRlcmlhbExpc3QoKSwgTWF0ZXJpYWxHcm91cCgpLAorCQkgIEdyb3VwTmFtZSgpLCBNYXRlcmlhbE5hbWUoKSwKKwkJICBHZXRHcm91cE1lbWJlcnMoKSwgR2V0TWF0TWVtYmVyc2hpcCgpCisgICAgIFNvbnN0aWdlczoJICBQX01BVEVSSUFMX0tOT1dMRURHRQorCis3LiBNYWkgMjAwNCBHbG9pbnNvbgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2RvYy9sZnVuL1F1ZXJ5TWF0ZXJpYWxHcm91cCBiL2RvYy9sZnVuL1F1ZXJ5TWF0ZXJpYWxHcm91cApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5jM2I2ODYwCi0tLSAvZGV2L251bGwKKysrIGIvZG9jL2xmdW4vUXVlcnlNYXRlcmlhbEdyb3VwCkBAIC0wLDAgKzEsNTAgQEAKK1F1ZXJ5TWF0ZXJpYWxHcm91cChMKQorRlVOS1RJT046CisgICAgIGludCBRdWVyeU1hdGVyaWFsR3JvdXAoc3RyaW5nIGdycCkKKworREVGSU5JRVJUIElOOgorICAgICAvc3RkL3RoaW5nL2Rlc2NyaXB0aW9uLmMKKworQVJHVU1FTlRFOgorICAgICBzdHJpbmcgZ3JwCQktIE1hdGVyaWFsZ3J1cHBlLCBhdWYgZGllIGdldGVzdGV0IHdlcmRlbiBzb2xsCisKK0JFU0NIUkVJQlVORzoKKyAgICAgTGllZmVydCBlaW5lIEFuZ2FiZSwgenUgd2VsY2hlbSBBbnRlaWwgZGFzIE9iamVrdCBhdXMgTWF0ZXJpYWxpZW4KKyAgICAgZGllc2VyIEdydXBwZSBiZXN0ZWh0LgorICAgICBEaWUgUnVlY2tnYWJlIGlzdCBpbSBXZXJ0ZWJlcmVpY2ggLTEwMCAoQW50aWdydXBwZW4pIGJpcyArMTAwICglKS4KKworUlVFQ0tHQUJFV0VSVDoKKyAgICAgQW50ZWlsIGluIFByb3plbnQuCisKK0JFTUVSS1VOR0VOOgorICAgICBSdWZ0IE1hdGVyaWFsR3JvdXAoKSBhbiBkZXIgTUFURVJJQUxEQi4KKworQkVJU1BJRUxFOgorICAgICAvLyBrYW5uIG1hbiBkYW1pdCB3YXMgYW5mYW5nZW4/CisgICAgIGlmKG9iLT5RdWVyeU1hdGVyaWFsR3JvdXAoTUFUR1JPVVBfTUVUQUwpPDUwKQorICAgICAgIHdyaXRlKCJEZXIgU2NobWllZCBzYWd0OiBEYXJhdXMga2FubiBpY2gga2VpbiBTY2h3ZXJ0IGZlcnRpZ2VuLlxuIik7CisKKyAgICAgLy8gdmVyYnJlbm50IGRhcyBEaW5nPworICAgICBpZihvYi0+UXVlcnlNYXRlcmlhbEdyb3VwKE1BVEdST1VQX0lORkxBTU1BQkxFKT41MCkgeworICAgICAgIHdyaXRlKG9iLT5OYW1lKFdFUikrIiBnZWh0IGluIEZsYW1tZW4gYXVmLlxuIik7CisgICAgICAgb2ItPnJlbW92ZSgpOworICAgICB9CisKKyAgICAgLy8gd2llIG1hZ25ldGlzY2ggaXN0IGVzIGRlbm4/CisgICAgIGlmKG9iLT5RdWVyeU1hdGVyaWFsR3JvdXAoTUFUR1JPVVBfTUFHTkVUSUMpPjUwKQorICAgICAgd3JpdGUoYnJlYWtfc3RyaW5nKAorICAgICAgIG9iLT5OYW1lKFdFUikrIiBmbHV0c2NodCBEaXIgYXVzIGRlciBIYW5kIHVuZCBibGVpYnQgYW0gTWFnbmV0ZW4gIgorCQkgICAgICJrbGViZW4hIiw3OCkpOworCitTSUVIRSBBVUNIOgorICAgICBLb256ZXB0ZToJICBtYXRlcmlhbCwgbWF0ZXJpYWxlcmtlbm51bmcKKyAgICAgR3J1bmRsZWdlbmQ6IFBfTUFURVJJQUwsIC9zeXMvdGhpbmcvbWF0ZXJpYWwuaAorICAgICBNZXRob2RlbjogICAgUXVlcnlNYXRlcmlhbCgpLCBNYXRlcmlhbExpc3QoKSwKKyAgICAgTGlzdGVuOgkgIEFsbE1hdGVyaWFscygpLCBBbGxHcm91cHMoKSwgRHVtcCgpCisJCSAgbWF0ZXJpYWxsaXN0ZSwgbWF0ZXJpYWxncnVwcGVuCisgICAgIE1hc3RlcjoJICBBZGRNYXRlcmlhbCgpLCBDb252TWF0ZXJpYWxMaXN0KCksIE1hdGVyaWFsR3JvdXAoKSwKKwkJICBHcm91cE5hbWUoKSwgTWF0ZXJpYWxOYW1lKCksCisJCSAgR2V0R3JvdXBNZW1iZXJzKCksIEdldE1hdE1lbWJlcnNoaXAoKQorICAgICBTb25zdGlnZXM6CSAgUF9NQVRFUklBTF9LTk9XTEVER0UKKworNy4gTWFpIDIwMDQgR2xvaW5zb24KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9kb2MvbGZ1bi9RdWVyeU1heFFQIGIvZG9jL2xmdW4vUXVlcnlNYXhRUApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi45ZmEwZjVhCi0tLSAvZGV2L251bGwKKysrIGIvZG9jL2xmdW4vUXVlcnlNYXhRUApAQCAtMCwwICsxLDI3IEBACitRdWVyeU1heFFQKCkKKworRlVOS1RJT046CisgICAgaW50IFF1ZXJ5TWF4UVAoKQorCitERUZJTklFUlQgSU46CisgICAgL3NlY3VyZS9xdWVzdG1hc3Rlci5jCisKK0FSR1VNRU5URToKKyAgICBrZWluZQorCitSVUVDS0dBQkVXRVJUOgorICAgIEFiZW50ZXVlcnB1bmt0ZSBkZXIgUGZsaWNodHF1ZXN0cworCitCRVNDSFJFSUJVTkc6CisgICAgRGllc2UgRnVua3Rpb24gbGllZmVydCBkaWUgQWJlbnRldWVycHVua3RlIGRlciBhbHMgUGZsaWNodHF1ZXN0CisgICAgZWluZ2V0cmFnZW5lbiBBYmVudGV1ZXIgenVydWVjay4gUGZsaWNodHF1ZXN0IGJlZGV1dGV0IGVudHdlZGVyLAorICAgIGRhc3MgZGllIFF1ZXN0IHp3aW5nZW5kIGdlbG9lc3Qgd2VyZGVuIG11c3Mgb2RlciBkYXNzIHNpZSB6dQorICAgIGRlciA4MCUtUmVnZWwgZ2Vob2VydC4KKworU0lFSEUgQVVDSDoKKyAgICBHaXZlUXVlc3QsIFF1ZXJ5UXVlc3QsIC9zZWN1cmUvcXVlc3RtYXN0ZXIuaCwgUXVlcnlHcm91cGVkS2V5cywKKyAgICBRdWVyeU9wdFFQLCBRdWVyeVRvdGFsUVAKKworLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorWnVsZXR6dCBnZWFlbmRlcnQ6IFNhbSwgMjUuIE5vdiAyMDAwLCAxNDowNDoyOCB2b24gWm9vay4KKwpkaWZmIC0tZ2l0IGEvZG9jL2xmdW4vUXVlcnlNb25leSBiL2RvYy9sZnVuL1F1ZXJ5TW9uZXkKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uODk5YjUwZQotLS0gL2Rldi9udWxsCisrKyBiL2RvYy9sZnVuL1F1ZXJ5TW9uZXkKQEAgLTAsMCArMSwyOCBAQAorUXVlcnlNb25leSgpCitGVU5LVElPTjoKKyAgICAgaW50IFF1ZXJ5TW9uZXkoKQorCitERUZJTklFUlQgSU46CisgICAgIC9zdGQvcGxheWVyL21vbmV5aGFuZGxlci5jCisKK0JFU0NIUkVJQlVORzoKKyAgICAgVGVzdGV0LCBvYiBlaW4gU3BpZWxlciwgT2JqZWt0LCBSYXVtIG9kZXIgTnBjIHVlYmVyIGVpbmUgZGVmaW5pZXJ0ZSAKKyAgICAgR2VsZG1lbmdlIHZlcmZ1ZWd0LCBvZGVyIG5pY2h0LgorCitSVUVDS0dBQkVXRVJUOgorICAgICBHZWxkbWVuZ2UgaW0gQmVzaXR6IGRlcyBhYmdlZnJhZ3RlbiBTcGllbGVycworCitCRUlTUElFTEU6CisgICAgIGludCBpOworICAgICBpPTUwK3JhbmRvbSgxMCk7CisgICAgIGlmKCF0aGlzX3BsYXllcigpLT5RdWVyeU1vbmV5KCkpCisgICAgICAgd3JpdGUoIkR1IGJlc2l0enQga2VpbmUgTXVlbnplbiFcbiIpOworICAgICBpZih0aGlzX3BsYXllcigpLT5RdWVyeU1vbmV5KCkgPCBpKQorICAgICAgIHdyaXRlKCJEdSBiZXNpdHp0IG5pY2h0IGRpZSBlcmZvcmRlcmxpY2hlbiAiK2krIiBNdWVuemVuLlxuIik7CisKK1NJRUhFIEFVQ0g6CisgICAgIEdlbGRoYW5kbGluZzoJQWRkTW9uZXkoTCkKKyAgICAgWmVudHJhbGJhbms6CVBheUluKEwpLCBXaXRoRHJhdyhMKSwgX3F1ZXJ5X2N1cnJlbnRfbW9uZXkoTCkKKyAgICAgU29uc3RpZ2VzOgkJL2l0ZW1zL21vbmV5LmMKKworTGFzdCBtb2RpZmllZDogRGllLCAgMS4gQXVnIDIwMDAsIDE2OjM5OjA2IGJ5IFRpbGx5CmRpZmYgLS1naXQgYS9kb2MvbGZ1bi9RdWVyeU5hbWUgYi9kb2MvbGZ1bi9RdWVyeU5hbWUKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZDI2Y2QxYQotLS0gL2Rldi9udWxsCisrKyBiL2RvYy9sZnVuL1F1ZXJ5TmFtZQpAQCAtMCwwICsxLDI0IEBACitRdWVyeU5hbWUoKQorCitGVU5LVElPTjoKKyAgICAgbWl4ZWQgUXVlcnlOYW1lKCk7CisKK0RFRklOSUVSVCBJTjoKKyAgICAgL3N0ZC90aGluZy9kZXNjcmlwdGlvbi5jCisKK0FSR1VNRU5URToKKyAgICAga2VpbmUKKworQkVTQ0hSRUlCVU5HOgorICAgICBESUVTRSBGVU5LVElPTiBTT0xMVEUgTklDSFQgTUVIUiBCRU5VVFpUIFdFUkRFTiEKKyAgICAgRXMgd2lyZCBkZXIgSW5oYWx0IGRlciBQcm9wZXJ0eSBQX05BTUUgenV1ZWNrZ2VnZWJlbjsgZGllcyBsYWVzc3Qgc2ljaAorICAgICBqZWRvY2ggZ2VuYXUgc28gZ3V0IG1pdCBRdWVyeVByb3AoUF9OQU1FKSBiZXdlcmtzdGVsbGlnZW4hCisKK1JVZUNLR0FCRVdFUlQ6CisgICAgIFN0cmluZyBvZGVyIEFycmF5IHZvbiBTdHJpbmdzIG1pdCBkZW0gTmFtZW4gZGVzIE9iamVrdGVzLgorCitTSUVIRSBBVUNIOgorICAgICBRdWVyeVByb3AoKSwgTmFtZSgpLCBuYW1lKCksIC9zdGQvdGhpbmcvZGVzY3JpcHRpb24uYworCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCitMYXN0IG1vZGlmaWVkOiBTYXQgQXVnICAzIDExOjIxOjA1IDIwMDIgYnkgVmFuaW9uCmRpZmYgLS1naXQgYS9kb2MvbGZ1bi9RdWVyeU9wZW5NaW5pUXVlc3RzRm9yUGxheWVyIGIvZG9jL2xmdW4vUXVlcnlPcGVuTWluaVF1ZXN0c0ZvclBsYXllcgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi40MDI0NmFlCi0tLSAvZGV2L251bGwKKysrIGIvZG9jL2xmdW4vUXVlcnlPcGVuTWluaVF1ZXN0c0ZvclBsYXllcgpAQCAtMCwwICsxLDU0IEBACitGVU5LVElPTjoKKyAgICBtYXBwaW5nIFF1ZXJ5T3Blbk1pbmlRdWVzdHNGb3JQbGF5ZXIob2JqZWN0IHBsYXllcikKKworREVGSU5JRVJUIElOOgorICAgIC9zZWN1cmUvcXVlc3RtYXN0ZXIKKworQkVTQ0hSRUlCVU5HOgorICAgIERpZXNlIEZ1bmt0aW9uIGdpYnQgZGllIExpc3RlIGRlciBvZmZlbmVuIE1pbmlxdWVzdHMgZGVzIFNwaWVsZXJzIGFscworICAgIE1hcHBpbmcgenVydWVjay4KKworQVJHVU1FTlRFOgorICAgIHBsYXllciAtIGRhcyBpbnRlcmVzc2llcmVuZGUgU3BpZWxlcm9iamVrdAorCitSVUVDS0dBQkVXRVJURToKKyAgICBNYXBwaW5nIG1pdCBkZXIgTGlzdGUgZGVyIE1pbmlxdWVzdHMsIGZ1ZXIgZGllIGRhcyBhYmZyYWdlbmRlIE9iamVrdAorICAgIHp1c3RhZW5kaWcgaXN0LCBvZGVyIGxlZXJlcyBNYXBwaW5nLCB3ZW5uIGRlciBTcGllbGVyIGtlaW5lIE1RcyBtZWhyCisgICAgb2ZmZW4gaGF0LgorCisgICAgRGllIExpc3RlIGVudGhhZWx0IGRpZSBNaW5pcXVlc3RudW1tZXIgYWxzIEtleS4gRGllc2VtIHNpbmQgendlaSBXZXJ0ZQorICAgIHp1Z2VvcmRuZXQ6IHp1bSBlaW5lbiBlaW4gTWluaXF1ZXN0LUF1ZmdhYmVudGV4dCwgdW5kIHp1bSBhbmRlcmVuIC0KKyAgICBmYWxscyBkZXIgU3BpZWxlciBlaW5lIGRlciBWb3JiZWRpbmd1bmdlbiBmdWVyIGRpZSBNaW5pcXVlc3QgbmljaHQKKyAgICBlcmZ1ZWxsdCAtIGVpbiBIaW53ZWlzdGV4dCwgZGVyIEF1c2t1bmZ0IGdpYnQsIHdlbGNoZSBCZWRpbmd1bmcgbm9jaAorICAgIHp1IGVyZnVlbGxlbiBpc3QgKCJTZWhlcnN0YXR1cyBmZWhsdCIpLiBEaWVzZSBIaW53ZWlzdGV4dGUgZW50c3ByZWNoZW4KKyAgICBkZW5lbiBhdXMgY2hlY2tfcmVzdHJpY3Rpb25zKCkgaW4gL3N0ZC9yZXN0cmljdGlvbl9jaGVja2VyLmMuIERlciAKKyAgICBqZXdlaWxzIGFuZGVyZSBUZXh0IHdpcmQgYXVmIDAgZ2VzZXR6dC4KKworICAgIERpZSBTdHJ1a3R1ciBkZXMgTWFwcGluZ3MgaXN0IGRhaGVyIGZvbGdlbmRlOgorICAgICAgKFsgTVEtTnVtbWVyIDogPEF1ZmdhYmVuc3RlbGx1bmc+IDsgPEhpbmRlcnVuZ3NncnVuZD4gXSkKKyAgICAKKyAgICBCZWlzcGllbDogZWluIFNwaWVsZXIgaGF0IGRpZSBNaW5pcXVlc3RzIDE4IHVuZCA0OSBub2NoIG5pY2h0IGdlbG9lc3QsCisgICAgZXJmdWVsbHQgYWJlciBudXIgZnVlciBNaW5pcXVlc3QgNDkgZGllIEFuZm9yZGVydW5nZW4uIE1pbmlxdWVzdCAxOAorICAgIGVyZm9yZGVydCBkZW4gU2VoZXJzdGF0dXMuIERhbm4gc2FlaGUgZGFzIE1hcHBpbmcgc28gYXVzOgorICAgICAgKFsgMTggOiAwICAgICAgICAgICAgICAgICAgICA7ICJEYXp1IG11c3N0IER1IGVyc3QgU2VoZXIgd2VyZGVuLlxuIiwKKyAgICAgICAgIDQ5IDogIkF1ZmdhYmVudGV4dF96dV80OSIgOyAwIF0pCisKKyAgICBKZWRlcyBhYmZyYWdlbmRlIE9iamVrdCBtdXNzIGRhaGVyIGRpZXNlcyBNYXBwaW5nIHp1bmFlY2h0IGdlZWlnbmV0CisgICAgYXVmIHNlaW5lbiBJbmhhbHQgcHJ1ZWZlbiwgdW0genUgZXJtaXR0ZWxuLCB3ZWxjaGUgTWVsZHVuZyBqZXdlaWxzCisgICAgYXVzenVnZWJlbiBpc3QuCisKK0JFTUVSS1VOR0VOOgorICAgIERhcyBhYmZyYWdlbmRlIE9iamVrdCBtdXNzIHZvbiBlaW5lbSBFcnptYWdpZXIgb2RlciBHb3R0ICh6LkIuIGRlbQorICAgIHp1c3RhZW5kaWdlbiBRdWVzdC1FTSkgaW0gUXVlc3RtYXN0ZXIgYWxzIHp1Z3JpZmZzYmVyZWNodGlndCBiZWkgZGVuLQorICAgIGplbmlnZW4gTWluaXF1ZXN0cyBlaW5nZXRyYWdlbiBzZWluLCBmdWVyIGRpZSBlcyBkaWUgZW50c3ByZWNoZW5kZW4KKyAgICBNaW5pcXVlc3QtSGlud2Vpc2UgYXVzZ2ViZW4gZGFyZi4gRGllc2UgQmVyZWNodGlndW5nIGlzdCBtaXQgZGVtIAorICAgIFF1ZXN0LUVNIGFienVzdGltbWVuLiBBbmRlcmVuIE9iamVrdGVuIHdpcmQgZWluIGxlZXJlcyBNYXBwaW5nIHp1cnVlY2stCisgICAgZ2VnZWJlbi4KKworU0lFSEUgQVVDSDoKKyAgICBBZGRNaW5pUXVlc3QoTCksIENoYW5nZU1pbmlRdWVzdChMKQorICAgIFBfUkVTVFJJQ1RJT05TCisgICAgZXJ6bWFnaWVyCisKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KK0xhc3QgbW9kaWZpZWQ6IDYuIEp1bmkgMjAxNCwgQXJhdGhvcm4uCmRpZmYgLS1naXQgYS9kb2MvbGZ1bi9RdWVyeU93biBiL2RvYy9sZnVuL1F1ZXJ5T3duCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmIxYTU1ZjYKLS0tIC9kZXYvbnVsbAorKysgYi9kb2MvbGZ1bi9RdWVyeU93bgpAQCAtMCwwICsxLDMyIEBACitRdWVyeU93bigpCisKK0ZVTktUSU9OOgorICAgICB2YXJhcmdzIHN0cmluZyBRdWVyeU93bihpbnQgY2FzdXMpCisKK0RFRklOSUVSVCBJTjoKKyAgICAgL3N0ZC90aGluZy9sYW5ndWFnZS5jCisKK0FSR1VNRU5URToKKyAgICAgY2FzdXMKKyAgICAgICAgICBEZXIgRmFsbCBmdWVyIGRpZSBBbnJlZGUuCisKK0JFU0NIUkVJQlVORzoKKyAgICAgRGllc2UgRnVua3Rpb24gbGllZmVydCBkYXMgZGVtIEFubGFzcyBlbnRzcHJlY2hlbmRlIFBvc3Nlc3Npdi0KKyAgICAgcHJvbm9tZW4gZnVlciBkZW4gU3BpZWxlciBzZWxiZXIgKERlaW4vRGVpbmUpLgorCitSVWVDS0dBQkVXRVJUOgorICAgICBFaW4gU3RyaW5nIG1pdCBkZW0gUHJvbm9tZW4uCisKK0JFSVNQSUVMRToKKworICAgICBwcmludGYoIiVzICVzIGxvZXN0IHNpY2ggYXVmLlxuIiwKKyAgICAgICAgICAgY2FwaXRhbGl6ZShvYmotPlF1ZXJ5T3duKFdFUikpLG9iai0+bmFtZShXRVIpKTsKKworICAgICAoSW4gZGVuIG1laXN0ZW4gRmFlbGxlbiBrYW5uIG1hbiBoaWVyIGF1Y2ggZGlyZWt0ICJEZWluIiBvZGVyICJEZWluZSIKKyAgICAgIGVpbnNldHplbi4pCisKK1NJRUhFIEFVQ0g6CisgICAgIC9zdGQvdGhpbmcvbGFuZ3VhZ2UuYworCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCitMYXN0IG1vZGlmaWVkOiBTdW4gQXVnIDEwIDIzOjU1OjI3IDIwMDMgYnkgTWFuZHJhZ29uCmRpZmYgLS1naXQgYS9kb2MvbGZ1bi9RdWVyeVBhc3NlbmdlcnMgYi9kb2MvbGZ1bi9RdWVyeVBhc3NlbmdlcnMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYTcxYWY2NwotLS0gL2Rldi9udWxsCisrKyBiL2RvYy9sZnVuL1F1ZXJ5UGFzc2VuZ2VycwpAQCAtMCwwICsxLDI5IEBACitRdWVyeVBhc3NlbmdlcnMoKQorCitGVU5LVElPTjoKKyAgICAgb2JqZWN0ICpRdWVyeVBhc3NlbmdlcnMoKTsKKworREVGSU5JRVJUIElOOgorICAgICAvc3RkL3RyYW5zcG9ydC5jCisKK0FSR1VNRU5URToKKyAgICAga2VpbmUKKworQkVTQ0hSRUlCVU5HOgorICAgICBEaWVzZSBGdW5rdGlvbiBlcm1pdHRlbHQgZGllIG1vbWVudGFuIGF1ZiBkZW0gVHJhbnNwb3J0ZXIgYmVmaW5kbGljaGVuCisgICAgIFBhc3NhZ2llcmUuCisKK1JVZUNLR0FCRVdFUlQ6CisgICAgIEFycmF5IHZvbiBPYmpla3RlbiBtaXQgZGVuIFBhc3NhZ2llcmVuLgorCitCRU1FUktVTkdFTjoKKyAgICAgRXMgd2VyZGVuIG51ciBkaWUgUGFzc2FnaWVyZSB6dXJ1ZWNrZ2VnZWJlbiwgZGllIHNpY2ggaW4gZGVtCisgICAgIGVpZ2VudGxpY2hlbiBUcmFuc3BvcnRlcm9iamVrdCBiZWZpbmRlbiEgV2VubiBkZXIgVHJhbnNwb3J0ZXIgbm9jaCB1bQorICAgICB6dXNhZXR6bGljaGUgUmFldW1lIHZlcmdyb2Vzc2VydCB3aXJkLCB3ZXJkZW4gdW50ZXIgVW1zdGFlbmRlbiBuaWNodAorICAgICBhbGxlIFBhc3NhZ2llcmUgZXJmYXNzdCEKKworU0lFSEUgQVVDSDoKKyAgICAgL3N0ZC90cmFuc3BvcnQuYworCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCitMYXN0IG1vZGlmaWVkOiBXZWQgTWF5IDggMTA6MjI6NDggMTk5NiBieSBXYXJnb24KZGlmZiAtLWdpdCBhL2RvYy9sZnVuL1F1ZXJ5UG9zaXRpb24gYi9kb2MvbGZ1bi9RdWVyeVBvc2l0aW9uCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjRkNTE3OWQKLS0tIC9kZXYvbnVsbAorKysgYi9kb2MvbGZ1bi9RdWVyeVBvc2l0aW9uCkBAIC0wLDAgKzEsMjkgQEAKK1F1ZXJ5UG9zaXRpb24oKQorCitGVU5LVElPTjoKKyAgICAgc3RyaW5nICpRdWVyeVBvc2l0aW9uKCk7CisKK0RFRklOSUVSVCBJTjoKKyAgICAgL3N0ZC90cmFuc3BvcnQuYworCitBUkdVTUVOVEU6CisgICAgIGtlaW5lCisKK0JFU0NIUkVJQlVORzoKKyAgICAgRXMgd2lyZCBlaW4gQXJyYXkgdm9uIHp3ZWkgU3RyaW5ncyBtaXQgS2VubnplaWNobmVybiBkZXIgbGV0enRlbiAob2RlcgorICAgICBha3R1ZWxsZW4pIHVuZCBkZXIgbmFlY2hzdGVuIFN0YXRpb24gaW0gRmFocnBsYW4genVydWVja2dlZ2ViZW4uCisKKyAgICAgRGllIEtlbm56ZWljaG5lciBzaW5kIGRhYmVpIGRpZSBlcnN0ZW4gQXJndW1lbnRlIGRlciBlbnRzcHJlY2hlbmRlbgorICAgICBBZGRYWFgoKS1BdWZydWZlbiwgYWxzbyBkZXIgTmFtZSBkZXIgSGFsdGVzdGVsbGUgYmVpIEFkZFJvdXRlLCBkZXIgVGV4dAorICAgICBkZXIgTWVsZHVuZyBiZWkgQWRkTXNnKCkgdW5kIGRlciBOYW1lIGRlciBGdW5rdGlvbiBiZWkgQWRkRnVuKCkuCisKK1JVZUNLR0FCRVdFUlQ6CisgICAgIEFycmF5IG1pdCB6d2VpIFN0cmluZ3MuIERlciBlcnN0ZSBTdHJpbmcgZ2lidCBkZW4gS2VubnplaWNobmVyIGRlcgorICAgICBtb21lbnRhbmVuIEZhaHJwbGFuc3RhdGlvbiBhbiwgZGVyIHp3ZWl0ZSBTdHJpbmcgZGVuIEtlbm56ZWljaG5lciBkZXIKKyAgICAgbmFlY2hzdGVuIEZhaHJwbGFuc3RhdGlvbi4KKworU0lFSEUgQVVDSDoKKyAgICAgQWRkUm91dGUoKSwgQWRkTXNnKCksIEFkZEZ1bigpLCAvc3RkL3RyYW5zcG9ydC5jCisKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KK0xhc3QgbW9kaWZpZWQ6IFdlZCBNYXkgOCAxMDoyMjo1MiAxOTk2IGJ5IFdhcmdvbgpkaWZmIC0tZ2l0IGEvZG9jL2xmdW4vUXVlcnlQb3NzUHJvbm91biBiL2RvYy9sZnVuL1F1ZXJ5UG9zc1Byb25vdW4KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYzNmNDEwNgotLS0gL2Rldi9udWxsCisrKyBiL2RvYy9sZnVuL1F1ZXJ5UG9zc1Byb25vdW4KQEAgLTAsMCArMSw0OCBAQAorUXVlcnlQb3NzUHJvbm91bigpCisKK0ZVTktUSU9OOgorICAgICB2YXJhcmdzIHN0cmluZyBRdWVyeVBvc3NQcm9ub3VuKG1peGVkIHdoYXQsIGludCBjYXN1cywgaW50IGFuemFobCk7CisKK0RFRklOSUVSVCBJTjoKKyAgICAgL3N0ZC90aGluZy9sYW5ndWFnZS5jCisKK0FSR1VNRU5URToKKyAgICAgd2hhdAorICAgICAgICAgIEdlc2NobGVjaHQgZGVzIE9iamVrdGVzLCBkYXMgYmVzZXNzZW4gd2lyZCwgb2RlciBkYXMgT2JqZWt0CisgICAgICAgICAgc2VsYnN0LgorCisgICAgIGNhc3VzCisgICAgICAgICAgRGVyIEZhbGwsIGluIGRlbSBkYXMgT2JqZWt0IGJlc2Vzc2VuIHdpcmQuCisKKyAgICAgYW56YWhsCisgICAgICAgICAgSGFuZGVsdCBlcyBzaWNoIHVtIG51ciBlaW4gT2JqZWt0IG9kZXIgdW0gbWVocmVyZT8KKworQkVTQ0hSRUlCVU5HOgorICAgICBEaWVzZSBGdW5rdGlvbiBnaWJ0IGVpbiBQb3NzZXNzaXZwcm9ub21lbiB6dXJ1ZWNrLCBkYXMgZGFzCisgICAgIEJlc2l0enZlcmhhZWx0bmlzIGVpbmVzIE9iamVrdGVzIHp1IGRpZXNlbSBPYmpla3QgYW56ZWlndC4KKworUlVlQ0tHQUJFV0VSVDoKKyAgICAgRGFzIFBvc3Nlc3NpdnByb25vbWVuIGltIGVudHNwcmVjaGVuZGVuIEZhbGwuCisKK0JFTUVSS1VOR0VOOgorICAgICB3aGF0IHVuZCBjYXN1cyBiZXppZWhlbiBzaWNoIGF1ZiBkYXMgT2JqZWt0LCB3ZWxjaGVzIGJlc2Vzc2VuIHdpcmQsIHVuZAorICAgICBuaWNodCBhdWYgZGVuIEJlc2l0emVyISEhCisKK0JFSVNQSUVMRToKKyAgICAgVW0gZWluZSBrb3JyZWt0ZSBBdXNnYWJlIGJlaW0gSGFlbmRla2xhdHNjaGVuIHp1IGVycmVpY2hlbiwga29lbm50ZSBtYW4KKyAgICAgekIuIGZvbGdlbmRlIFplaWxlIHZlcndlbmRlbjoKKworICAgICAgcHJpbnRmKCIlcyBrbGF0c2NodCBpbiAlcyBIYWVuZGUuXG4iLHRoaXNfcGxheWVyKCktPm5hbWUoV0VSKSwKKyAgICAgICAgICAgdGhpc19wbGF5ZXIoKS0+UXVlcnlQb3NzUHJvbm91bihGRU1BTEUsIFdFTiwgUExVUkFMKSk7CisKKyAgICAgRkVNQUxFLCBkYSAiZGllIEhhbmQiIHdlaWJsaWNoIGlzdCwgV0VOLCBkYSBtYW4gaW0gQWtrdXNhdGl2IGtsYXRzY2h0LAorICAgICB1bmQgUExVUkFMLCBkYSBtYW4gZGF6dSBiZWlkZSBIYWVuZGUgYnJhdWNodC4KKworICAgICBFaW4gYmVsaWVidGVyIEZlaGxlciBpc3QgZXMsIGFscyBGYWxsIFdFU1NFTiB6dSB2ZXJ3ZW5kZW4gKGluIFdFU1NFTgorICAgICBIYWVuZGUga2xhdHNjaHQgbWFuPyA9PiBpbiBzZWluZSkuCisgICAgIERpZSByaWNodGlnZSBGcmFnZSB3YWVyZSBhYmVyOiBXRU4ga2xhdHNjaHQgbWFuPyAoaW4gZGllIEhhZW5kZSkKKworU0lFSEUgQVVDSDoKKyAgICAgUXVlcnlPd24oKSwgUXVlcnlQcm9ub3VuKCksIC9zdGQvdGhpbmcvbGFuZ3VhZ2UuYworLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorTGFzdCBtb2RpZmllZDogV2VkIEphbiAxMSAxMzoxMzozNSBDRVQgMjAwNiBieSBSdW1hdGEKZGlmZiAtLWdpdCBhL2RvYy9sZnVuL1F1ZXJ5UHJheVJvb20gYi9kb2MvbGZ1bi9RdWVyeVByYXlSb29tCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjBhMDk3ZDMKLS0tIC9kZXYvbnVsbAorKysgYi9kb2MvbGZ1bi9RdWVyeVByYXlSb29tCkBAIC0wLDAgKzEsMzMgQEAKK1F1ZXJ5UHJheVJvb20oKQorCitGVU5LVElPTjoKKyAgICAgcHVibGljIHN0cmluZyBRdWVyeVByYXlSb29tKCkKKworREVGSU5JRVJUIElOOgorICAgICAvc3RkL3BsYXllci9iYXNlLmMKKworQVJHVU1FTlRFOgorICAgICBrZWluZQorCitCRVNDSFJFSUJVTkc6CisgICAgRGllcyBpc3QgZGVyIFJhdW0sIGluIGRlbiBkZXIgU3BpZWxlciBuYWNoIGRlbSBFbmRlIGRlciBUb2Rlc3NlcXVlbnoKKyAgICBiZXdlZ3Qgd2lyZCwgZC5oLiBlaW4gUmF1bSwgd28gZXIgYmV0ZW4ga2FubiwgdW0gZWluZW4gbmV1ZW4gS29lcnBlciB6dQorICAgIGVyaGFsdGVuLgorICAgIERlciBSYXVtIHdpcmQgYWxzIFN0cmluZyBhbmdlZ2ViZW4gKGtlaW4gT2JqZWt0KS4KKworICAgIEplZGUgUmFzc2UgaGF0IGVpbmVuIERlZmF1bHQgZnVlciBkaWVzZSBGdW5rdGlvbiwgd2VsY2hlciBtaXQKKyAgICBTZXREZWZhdWx0UHJheVJvb20oKSBnZXNldHp0IHdpcmQuIERpZXNlciBEZWZhdWx0IGthbm4gbWl0IGRlciBQcm9wZXJ0eQorICAgIFBfUFJBWV9ST09NIHVlYmVybGFnZXJ0IHdlcmRlbi4gV2lyZCBkaWUgUHJvcGVydHkgYXVmIDAgZGdlc2V0enQsIHdpcmQKKyAgICBkaWVzZXIgRGVmYXVsdCBha3Rpdi4KKworUlVlQ0tHQUJFV0VSVDoKKyAgICBEZXIgT2JqZWt0bmFtZSBkZXMgQmV0cmF1bXMgKHN0cmluZykKKworCitTSUVIRSBBVUNIOgorICAgICBQX1BSQVlfUk9PTQorICAgICBTZXREZWZhdWx0UHJheVJvb20KKworLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorMjEuMDUuMjAxMywgWmVzc3RyYQorCmRpZmYgLS1naXQgYS9kb2MvbGZ1bi9RdWVyeVByZWZlcmVkRW5lbXkgYi9kb2MvbGZ1bi9RdWVyeVByZWZlcmVkRW5lbXkKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMjY3ZDI3ZAotLS0gL2Rldi9udWxsCisrKyBiL2RvYy9sZnVuL1F1ZXJ5UHJlZmVyZWRFbmVteQpAQCAtMCwwICsxLDM1IEBACitGVU5LVElPTjoKKwlvYmplY3QgUXVlcnlQcmVmZXJlZEVuZW15KCk7CisKK0RFRklOSUVSVCBJTjoKKwkvc3RkL2xpdmluZy9jb21iYXQuYworCitBUkdVTUVOVEU6CisJa2VpbmUKKworUlVlQ0tHQUJFV0VSVDoKKwliZXZvcnp1Z3RlciBHZWduZXIKKworQkVTQ0hSRUlCVU5HOgorCURpZXNlIEZ1bmt0aW9uIGxpZWZlcnQgdW50ZXIgZm9sZ2VuZGVuIEJlZGluZ3VuZ2VuIHp1ZmFlbGxpZyBlaW5lcworCWRlciBMZWJld2VzZW4gYWxzIGJldm9yenVndGVuIEdlZ25lciB6dXJ1ZWNrLCB3ZWxjaGUgaW4gZGVyCisJUHJvcGVydHkgUF9QUkVGRVJFRF9FTkVNWSBpbiBlaW5lbSBBcnJheSBlaW5nZXRyYWdlbiBzaW5kOgorCSAgKDEpIERlciBlcnN0ZSBFaW50cmFnIGRlcyBlcndhZWhudGVuIFByb3BlcnR5YXJyYXlzIGVudGhhZWx0CisJICAgICAgZWluZW4gV2VydCB6d2lzY2hlbiAwIHVuZCAxMDAsIGRlciBkaWUgV2FocnNjaGVpbmxpY2hrZWl0CisJICAgICAgZGFmdWVyIGFuZ2lidCwgZGFzcyBlaW4gTGViZXdlc2VuIGFscyBHZWduZXIgYmV2b3J6dWd0IHdlcmRlbgorCSAgICAgIHNvbGwuIEVzIHdpcmQgYWxzbyBuaWNodCBpbW1lciBiZXZvcnp1Z3QsIHdlbm4gZG9ydCBlaW4gV2VydAorCSAgICAgIGtsZWluZXIgMTAwIHN0ZWh0ISBJbiBkaWVzZW0gRmFsbCB3aXJkIGVpbmUgMCB6dXJ1ZWNrZ2VnZWJlbi4KKwkgICgyKSBEYXMgcGVyIFp1ZmFsbCBhdXMgZGVuIEFycmF5ZWxlbWVudGVuIGFiIEVsZW1lbnQgMiBnZXdhZWhsdGUKKwkgICAgICBMZWJld2VzZW4gbXVzcyBhdWNoIHdpcmtsaWNoIGV4aXN0aWVyZW4uIElzdCBkaWVzIG5pY2h0IGRlcgorCSAgICAgIEZhbGwsIHdpcmQgZGFzIG51bm1laHIgbGVlcmUgRWxlbWVudCBhdXMgZGVtIEFycmF5IGVudGZlcm50CisJICAgICAgdW5kIGVpbmUgMCB6dXJ1ZWNrZ2VsaWVmZXJ0LgorCSAgKDMpIERhcyBMZWJld2VzZW4gbXVzcyBkZXJ6ZWl0IGF1Y2ggd2lya2xpY2ggRmVpbmQgc2VpbiEgSXN0IGRpZXMKKwkgICAgICBuaWNodCBkZXIgRmFsbCwgd2lyZCBlaW5lIDAgenVydWVja2dlZ2ViZW4uCisJV2lsbCBtYW4gZWluZSBhbmRlcmUgQmV2b3J6dWd1bmcgdm9uIEdlZ25lcm4gZXJyZWljaGVuLAorCXVlYmVyc2NocmVpYnQgbWFuIGFtIGJlc3RlbiBkaWVzZSBGdW5rdGlvbi4KKworU0lFSEUgQVVDSDoKKwlTZWxlY3RFbmVteSgpLCBJc0VuZW15KCksIFBfUFJFRkVSRURfRU5FTVkKKworLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorTGFzdCBtb2RpZmllZDogV2VkIE1heSAyNiAxNjo0Nzo1MSAxOTk5IGJ5IFBhdHJ5bgpkaWZmIC0tZ2l0IGEvZG9jL2xmdW4vUXVlcnlQcm9ub3VuIGIvZG9jL2xmdW4vUXVlcnlQcm9ub3VuCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmZkMDQxY2IKLS0tIC9kZXYvbnVsbAorKysgYi9kb2MvbGZ1bi9RdWVyeVByb25vdW4KQEAgLTAsMCArMSwzMiBAQAorUXVlcnlQcm9ub3VuKCkKKworRlVOS1RJT046CisgICAgIHN0cmluZyBRdWVyeVByb25vdW4oaW50IGNhc3VzKTsKKworREVGSU5JRVJUIElOOgorICAgICAvc3RkL3RoaW5nL2xhbmd1YWdlLmMKKworQVJHVU1FTlRFOgorICAgICBjYXN1cworICAgICAgICAgIERlciBGYWxsLCBpbiBkZW0gZGFzIFBlcnNvbmFscHJvbm9tZW4gdmVybGFuZ3Qgd2lyZC4KKworQkVTQ0hSRUlCVU5HOgorICAgICBFcyB3aXJkIGVpbiBQZXJzb25hbHByb25vbWVuICgiZXIiLCAic2llIiwgImVzIikgaW0gZW50c3ByZWNoZW5kZW4gRmFsbAorICAgICBmdWVyIGRpZXNlcyBPYmpla3QgYmVyZWNobmV0LgorCitSVWVDS0dBQkVXRVJUOgorICAgICBEYXMgUHJvbm9tZW4gaW0gZW50c3ByZWNoZW5kZW4gRmFsbC4KKworQkVJU1BJRUxFOgorCisgICAgIHByaW50ZigiRHUgdmVyc3VjaHQsICVzIHp1IG5laG1lbiwgYWJlciAlcyBpc3QgenUgc2Nod2VyLlxuIiwKKyAgICAgICAgICAgb2ItPm5hbWUoV0VOKSwgb2ItPlF1ZXJ5UHJvbm91bihXRVIpKTsKKworICAgICBIaWVyIHdpcmQgaW1tZXIgZGFzIHJpY2h0aWdlIFByb25vbWVuIHZlcndlbmRldCwgZWdhbCwgd2VsY2hlcworICAgICBHZXNjaGxlY2h0IGRhcyBPYmpla3Qgb2IgaGF0LgorCitTSUVIRSBBVUNIOgorICAgICBTdWdnZXN0QXJ0aWNsZSgpLCBRdWVyeVBvc3NQcm9ub3VuKCksIC9zdGQvdGhpbmcvbGFuZ3VhZ2UuYworICAgICBRdWVyeU93bigpCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCitMYXN0IG1vZGlmaWVkOiBXZWQgTWF5IDggMTA6MjM6MTQgMTk5NiBieSBXYXJnb24KZGlmZiAtLWdpdCBhL2RvYy9sZnVuL1F1ZXJ5UHJvcCBiL2RvYy9sZnVuL1F1ZXJ5UHJvcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5lZTc1MmUwCi0tLSAvZGV2L251bGwKKysrIGIvZG9jL2xmdW4vUXVlcnlQcm9wCkBAIC0wLDAgKzEsMzkgQEAKK1F1ZXJ5UHJvcCgpCitGVU5LVElPTjoKKyAgICAgbWl4ZWQgUXVlcnlQcm9wKHN0cmluZyBuYW1lKTsKKworREVGSU5JRVJUIElOOgorICAgICAvc3RkL3RoaW5nL3Byb3BlcnRpZXMuYworCitBUkdVTUVOVEU6CisgICAgIHN0cmluZyBuYW1lCS0gYWJ6dWZyYWdlbmRlIFByb3BlcnR5CisKK0JFU0NIUkVJQlVORzoKKyAgICAgRGVyIERhdGVud2VydCBkZXIgUHJvcGVydHkgJ25hbWUnIHdpcmQgenVydWVja2dlZ2ViZW4uCisKKyAgICAgRXhpc3RpZXJ0IGVpbmUgRl9RVUVSWV9NRVRIT0Qgb2RlciBlaW5lIF9xdWVyeV8nbmFtZScoKS1NZXRob2RlIGZ1ZXIKKyAgICAgZGllc2UgUHJvcGVydHksIHNvIHdpcmQgZGllc2UgYXVmZ2VydWZlbiB1bmQgaWhyICdWYWx1ZScgdWViZXJnZWJlbi4KKyAgICAgRWluZSBGX1FVRVJZX01FVEhPRCBoYXQgZGFiZWkgVm9ycmFuZyB2b3IgX3F1ZXJ5XyduYW1lJygpLCBkLmguCisgICAgIF9xdWVyeV8nbmFtZScoKSB3aXJkIG5hY2ggZXJmb2xncmVpY2hlciBGX1FVRVJZX01FVEhPRCBuaWNodCBtZWhyCisgICAgIGdlcnVmZW4uCisKKyAgICAgKERpZXNlIE1ldGhvZGVuIG51dHplbiBkYW5uIFNldCgpLCB1bSBhdWYgZGVuIERhdGVud2VydCBkZXIgUHJvcGVydHkKKyAgICAgICduYW1lJyB6dXJ1ZWNrenVncmVpZmVuLiBUZWlsd2Vpc2Ugd2VyZGVuIGFiZXIgYXVjaCBpbnRlcm5lIFZhcmlhYmxlbgorICAgICAgc28gb2VmZmVudGxpY2ggZ2VtYWNodCB1bmQgc2luZCBuaWNodCBpbiBkZXIgdWViZXIgU2V0L1F1ZXJ5CisgICAgICB2ZXJmdWVnYmFyZW4gUHJvcGVydHkgJ25hbWUnIGFiZ2VsZWd0LikKKworUlVlQ0tHQUJFV0VSVDoKKyAgICAgRGVyIERhdGVud2VydCBkZXIgUHJvcGVydHkuCisgICAgIDAsIGZhbGxzIGRpZXNlIG5pY2h0IGV4aXN0aWVydC4KKworQkVJU1BJRUxFOgorICAgICAvLyB3aWUgaG9jaCBzaW5kIGRpZSBha3R1ZWxsZSBMUCBkZXMgU3BpZWxlcnM/CisgICAgIGhwID0gdGhpc19wbGF5ZXIoKS0+UXVlcnlQcm9wKFBfSFApOworCitTSUVIRSBBVUNIOgorICAgICBBZWhubGljaGVzOglTZXRQcm9wKEwpLCBTZXQoTCksIFF1ZXJ5KEwpCisgICAgIEdlbmVyZWxsOgkJU2V0UHJvcGVydGllcyhMKSwgUXVlcnlQcm9wZXJ0aWVzKEwpCisgICAgIEtvbnplcHQ6CQlwcm9wZXJ0aWVzLCAvc3RkL3RoaW5nL3Byb3BlcnRpZXMuYworICAgICBTb25zdGlnZXM6CQlQX0FVVE9MT0FET0JKCisKKzE1LkRleiAyMDA0IEdsb2luc29uCmRpZmYgLS1naXQgYS9kb2MvbGZ1bi9RdWVyeVByb3BlcnRpZXMgYi9kb2MvbGZ1bi9RdWVyeVByb3BlcnRpZXMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYWE3NDBiNQotLS0gL2Rldi9udWxsCisrKyBiL2RvYy9sZnVuL1F1ZXJ5UHJvcGVydGllcwpAQCAtMCwwICsxLDMwIEBACitRdWVyeVByb3BlcnRpZXMoKQorRlVOS1RJT046CisgICAgIG1hcHBpbmcgUXVlcnlQcm9wZXJ0aWVzKCkKKworREVGSU5JRVJUIElOOgorICAgICAvc3RkL3RoaW5nL3Byb3BlcnRpZXMuYworCitBUkdVTUVOVEU6CisgICAgIGtlaW5lCisKK0JFU0NIUkVJQlVORzoKKyAgICAgRGllc2UgRnVua3Rpb24gbGllZmVydCBlaW4gTWFwcGluZyBtaXQgYWxsZW4gZnVlciBkYXMgT2JqZWt0CisgICAgIGRlZmluaWVydGVuIFByb3BlcnRpZXMgenVydWVjay4KKworUlVlQ0tHQUJFV0VSVDoKKyAgICAgRWluIE1hcHBpbmcgbWl0IGRlbiBQcm9wZXJ0aWVzLiBEYXMgTWFwcGluZyBoYXQgZm9sZ2VuZGVuIEF1ZmJhdToKKwkoWyBuYW1lOiB3ZXJ0OyBmbGFnczsgc2V0X21ldGhvZDsgcXVlcnlfbWV0aG9kLAorCSAgIG5hbWUyOiAuLi4gXSk7CisKK0JFTUVSS1VOR0VOOgorICAgICAtIGRpZXNlIEZ1bmt0aW9uIHdpcmQgdm9uIHJlc3RvcmVfb2JqZWN0KCkgdW5kIHNhdmVfb2JqZWN0KCkKKyAgICAgLSBGX1FVRVJZX01FVEhPRHMgdW5kIF9xdWVyeV8ncHJvcCcoKS1NZXRob2RlbiBoYWJlbiBrZWluZSBBdXN3aXJrdW5nCisgICAgICAgYXVmIGRpZSBXZXJ0ZWZlbGRlciEKKworU0lFSEUgQVVDSDoKKyAgICAgQWVobmxpY2hlczoJU2V0UHJvcChMKSwgUXVlcnlQcm9wKEwpLCBTZXQoTCksIFF1ZXJ5KEwpCisgICAgIEdlbmVyZWxsOgkJU2V0UHJvcGVydGllcyhMKSAKKyAgICAgS29uemVwdDoJCXByb3BlcnRpZXMsIC9zdGQvdGhpbmcvcHJvcGVydGllcy5jCisKKzEuTWFpIDIwMDQgR2xvaW5zb24KZGlmZiAtLWdpdCBhL2RvYy9sZnVuL1F1ZXJ5UXVlc3QgYi9kb2MvbGZ1bi9RdWVyeVF1ZXN0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjI5NWFkMTYKLS0tIC9kZXYvbnVsbAorKysgYi9kb2MvbGZ1bi9RdWVyeVF1ZXN0CkBAIC0wLDAgKzEsMzQgQEAKK1F1ZXJ5UXVlc3QoKQorCitGVU5LVElPTjoKKyAgICAgICAgaW50IFF1ZXJ5UXVlc3Qoc3RyaW5nIHF1ZXN0bmFtZSkKKworREVGSU5JRVJUIElOOgorICAgICAgICAvc3RkL3BsYXllci9xdWVzdHMuYworCitBUkdVTUVOVEU6CisgICAgICAgIHF1ZXN0bmFtZQorICAgICAgICAgIFF1ZXN0bmFtZSwgd2llIGVyIGltIFF1ZXN0bWFzdGVyIGVpbmdldHJhZ2VuIHd1cmRlLgorCitSVWVDS0dBQkVXRVJUOgorICAgICAgICAoRGllIERlZmluZXMgZnVlciBkZW4gUnVlY2tnYWJld2VydCBmaW5kZW4gc2ljaCBpbiAKKyAgICAgICAgIC9zZWN1cmUvcXVlc3RtYXN0ZXIuaCkKKyAgICAgICAgIDEgOiBTcGllbGVyIGhhdCBkaWUgUXVlc3QgYmVyZWl0cyBnZWxvZXN0ICAoT0spCisgICAgICAgICAwIDogVW5ndWVsdGlnZXIgUXVlc3RuYW1lIG9kZXIgZGVyIFNwaWVsZXIKKyAgICAgICAgICAgICBoYXQgZGllIFF1ZXN0IG5vY2ggbmljaHQuICAgICAgICAgICAgICAoUVFfS0VZX0lOVkFMSUQpCisgICAgICAgICAyIDogR2Flc3RlIGtvZW5uZW4ga2VpbmUgUXVlc3QgbG9lc2VuICAgICAgKFFRX1FVRVNUKQorCitCRVNDSFJFSUJVTkc6CisJTWl0IGRpZXNlciBGdW5rdGlvbiBrYW5uIGdldGVzdGV0IHdlcmRlbiwgb2IgZWluIFNwaWVsZXIgZWluZSAKKyAgICAgICAgYmVzdGltbXRlIFF1ZXN0IGJlcmVpdHMgZ2Vsb2VzdCBoYXQuIEFscyBRdWVzdG5hbWUgd2lyZCBkYXp1CisgICAgICAgIGRlciBOYW1lIGFuZ2VnZWJlbiwgZGVyIGltIFF1ZXN0bWFzdGVyIGVpbmdldHJhZ2VuIHd1cmRlLgorCisgICAgICAgIFdlciBzaWNoIGRhIG5pY2h0IHNpY2hlciBpc3QsIGthbm4gbWl0IGRlbSBRdWVzdHRvb2wgCisgICAgICAgICgvb2JqL3Rvb2xzL3F1ZXN0dG9vbCkgbmFjaHNlaGVuLiAKKworU0lFSEUgQVVDSDoKKyAgICAgICAgL3NlY3VyZS9xdWVzdG1hc3Rlci5oLCAvb2JqL3Rvb2xzL3F1ZXN0dG9vbAorICAgICAgICBHaXZlUXVlc3QKKworLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorWnVsZXR6dCBnZWFlbmRlcnQ6IE1vbiwgMTcuIEp1bCAyMDAwLCAxMjoxNjo0MSB2b24gWm9vay4KZGlmZiAtLWdpdCBhL2RvYy9sZnVuL1F1ZXJ5UXVlc3RUaW1lIGIvZG9jL2xmdW4vUXVlcnlRdWVzdFRpbWUKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMjQxMGQ2YQotLS0gL2Rldi9udWxsCisrKyBiL2RvYy9sZnVuL1F1ZXJ5UXVlc3RUaW1lCkBAIC0wLDAgKzEsMjkgQEAKK1F1ZXJ5UXVlc3RUaW1lKCkKKworRlVOS1RJT046CisgICAgICAgIGludCBRdWVyeVF1ZXN0VGltZShzdHJpbmcgcXVlc3RuYW1lKQorCitERUZJTklFUlQgSU46CisgICAgICAgIC9zdGQvcGxheWVyL3F1ZXN0cy5jCisKK0FSR1VNRU5URToKKyAgICAgICAgcXVlc3RuYW1lCisgICAgICAgICAgUXVlc3RuYW1lLCB3aWUgZXIgaW0gUXVlc3RtYXN0ZXIgZWluZ2V0cmFnZW4gd3VyZGUuCisKK1JVZUNLR0FCRVdFUlQ6CisgICAgICAgIFF1ZXN0emVpdHB1bmt0IGluIFNla3VuZGVuIHNlaXQgRXBvY2ggYWxzIHBvc2l0aXZlciBJbnRlZ2VyLVdlcnQKKyAgICAgICAgIDAgOiBUYWdlYnVjaG1hc3RlciBoYXQga2VpbmUgRGF0ZW4gaW4gZGVuIExvZ2ZpbGVzIGdlZnVuZGVuIHVuZAorICAgICAgICAgICAgIG1hY2h0IGRhcyBhdWYgZGllc2UgV2Vpc2Uga2VubnRsaWNoCisgICAgICAgIC0xIDogUXVlc3R6ZWl0cHVua3QgdW5iZWthbm50CisKK0JFU0NIUkVJQlVORzoKKyAgICAgICAgTWl0IGRpZXNlciBGdW5rdGlvbiBrYW5uIGRlciBaZWl0cHVua3QgYWJnZWZyYWd0IHdlcmRlbiwgenUKKyAgICAgICAgZGVtIGVpbiBTcGllbGVyIGVpbmUgYmVzdGltbXRlIFF1ZXN0IGdlbG9lc3QgaGF0LiAKKyAgICAgICAgQWxzIFF1ZXN0bmFtZSB3aXJkIGRhenUgZGVyIE5hbWUgYW5nZWdlYmVuLCBkZXIgaW0gUXVlc3RtYXN0ZXIgCisgICAgICAgIGVpbmdldHJhZ2VuIGlzdC4KKworU0lFSEUgQVVDSDoKKyAgICAgICAgR2l2ZVF1ZXN0KEwpLCBRdWVyeVF1ZXN0KEwpLCBNb2RpZnlRdWVzdFRpbWUoTCkKKworLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorWnVsZXR6dCBnZWFlbmRlcnQ6IDE5LiBEZXouIDIwMTUsIEFyYXRob3JuCmRpZmYgLS1naXQgYS9kb2MvbGZ1bi9RdWVyeVJlYWxBdHRyaWJ1dGUgYi9kb2MvbGZ1bi9RdWVyeVJlYWxBdHRyaWJ1dGUKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uN2VlOWY4MwotLS0gL2Rldi9udWxsCisrKyBiL2RvYy9sZnVuL1F1ZXJ5UmVhbEF0dHJpYnV0ZQpAQCAtMCwwICsxLDI2IEBACitRdWVyeVJlYWxBdHRyaWJ1dGUoKQorRlVOS1RJT046CisgICAgIGludCBRdWVyeVJlYWxBdHRyaWJ1dGUoc3RyaW5nIGF0dHIpCisKK0RFRklOSUVSVCBJTjoKKyAgICAgL3N0ZC9saXZpbmcvYXR0cmlidXRlcy5jCisKK0FSR1VNRU5URToKKyAgICAgYXR0ciAgICAgICAtICAgICAgIGRhcyBpbnRlcmVzc2llcmVuZGUgQXR0cmlidXQKKworQkVTQ0hSRUlCVU5HOgorICAgICBEYXMgcmVhbGUgQXR0cmlidXQgKG9obmUgT2Zmc2V0cykgd2lyZCB6dXJ1ZWNrZ2VnZWJlbi4KKworQkVJU1BJRUxFOgorICAgICBpZih0aGlzX3BsYXllcigpLT5RdWVyeVJlYWxBdHRyaWJ1dGUoQV9JTlQpPjE1KQorICAgICAgd3JpdGUoIkR1IGJpc3QgYXVjaCBzbyBnYW56IHNjaG9lbiBjbGV2ZXIuXG4iKTsKKworU0lFSEUgQVVDSDoNCisJUXVlcnlBdHRyaWJ1dGUoKSwgUXVlcnlSZWFsQXR0cmlidXRlKCksIFF1ZXJ5QXR0cmlidXRlT2Zmc2V0KCksDQorCVNldEF0dHJpYnV0ZSgpLCBTZXRSZWFsQXR0cmlidXRlKCksIFVwZGF0ZUF0dHJpYnV0ZXMoKSwNCisJU2V0VGltZWRBdHRyTW9kaWZpZXIoKSwgUXVlcnlUaW1lZEF0dHJNb2RpZmllcigpLCANCisJRGVsZXRlVGltZWRBdHRyTW9kaWZpZXIoKSwNCisJUF9BVFRSSUJVVEVTLCBQX0FUVFJJQlVURVNfT0ZGU0VUUywgUF9USU1FRF9BVFRSX01PRCwNCisJUF9YX0FUVFJfTU9ELCBQX01fQVRUUl9NT0QsIC9zdGQvbGl2aW5nL2F0dHJpYnV0ZXMuYw0KKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCitMYXN0IG1vZGlmaWVkOiBUdWUgSnVsIDI3IDIwOjAwOjIwIDIwMDQgYnkgTXVhZGliDQpkaWZmIC0tZ2l0IGEvZG9jL2xmdW4vUXVlcnlTZWxsVmFsdWUgYi9kb2MvbGZ1bi9RdWVyeVNlbGxWYWx1ZQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41NDRjYjI5Ci0tLSAvZGV2L251bGwKKysrIGIvZG9jL2xmdW4vUXVlcnlTZWxsVmFsdWUKQEAgLTAsMCArMSw0MyBAQAorRlVOS1RJT046CisKKyAgICAgIHZhcmFyZ3MgaW50IFF1ZXJ5U2VsbFZhbHVlKG9iamVjdCBvYiwgb2JqZWN0IGNsaWVudCk7CisKK0RFRklOSUVSVCBJTjoKKworICAgICAgL3N0ZC90cmFkaW5nX3ByaWNlLmMKKworQkVTQ0hSRUlCVU5HOgorCisgICAgICBEaWVzZSBGdW5rdGlvbiBrYW5uIGRhenUgZ2VudXR6dCB3ZXJkZW4sIGRlbiBWZXJrYXVmc3ByZWlzIGluIGVpbmVtIAorICAgICAgTGFkZW4gZ2xvYmFsIHp1IHZlcmFlbmRlcm4uIFNvZmVybiBkaWVzIHp1Z3Vuc3RlbiBkZXIgU3BpZWxlciBnZXNjaGllaHQsCisgICAgICBtdXNzIGRhZnVlciBkaWUgWnVzdGltbXVuZyBkZXMgenVzdGFlbmRpZ2VuIFJlZ2lvbnNtYWdpZXJzIHVuZCBkZXIKKyAgICAgIEJhbGFuY2UgZWluZ2Vob2x0IHdlcmRlbi4gWnVkZW0gc29sbHRlIGVzIG5pY2h0IGluIGplZGVtIHgtYmVsaWViaWdlbiAKKyAgICAgIExhZGVuIGdlbnV0enQgd2VyZGVuLCBzb25kZXJuIG51ciBpbiByZWNodCBhYmdlbGVnZW5lbiBHZWJpZXRlbiwgaW4KKyAgICAgIGRpZSBtYW4gbmljaHQgZWluZmFjaCBza3JpcHRlbiBrYW5uLgorCisgICAgICBFaW4gQmVpc3BpZWwgaXN0IGRlciBMYWRlbiBhdWYgZGVtIEt1dHRlciBpbiBQb3J0IFZhaW4sIGRlciBudXIgaW4KKyAgICAgIGxhZW5nZXJlbiBJbnRlcnZhbGxlbiBtYWwgenVnYWVuZ2xpY2ggaXN0LgorCitCRUlTUElFTDoKKworICAgICAgRWluIExhZGVuIHphaGx0IDEwJSB1ZWJlciBkZW0gbm9ybWFsZW4gVmVya2F1ZnNwcmVpczoKKworICAgICAgcHJpdmF0ZSBpbnQgc2VsbF9mYWN0b3IgPSAxMTA7CisKKyAgICAgIHZhcmFyZ3MgaW50IFF1ZXJ5U2VsbFZhbHVlKG9iamVjdCBvYiwgb2JqZWN0IGNsaWVudCkgeworICAgICAgICAvLyBFcyB3aXJkIG5pY2h0IG5hZWhlciBnZXBydWVmdCwgb2IgPG9iPiBlaW4gZ3VlbHRpZ2VyIE9iamVrdHBvaW50ZXIKKyAgICAgICAgLy8gaXN0LCBkYSBkZXIgTGFkZW4gc2VsYnN0IHNpY2hlcnN0ZWxsdCwgZGFzcyBkYXMgc28gaXN0LiBXZW5uIAorICAgICAgICAvLyBkYXMgZG9jaCBlaW5tYWwgbmljaHQgZGVyIEZhbGwgc2VpbiBzb2xsdGUsIGxpZWd0IGRlciBGZWhsZXIKKyAgICAgICAgLy8gd29hbmRlcnMuIEVpbmVuIEJ1ZyBhdXN6dWxvZXNlbiBpc3QgZGFubiBzaW5udm9sbC4KKworICAgICAgICAvLyBCYXNpc3ByZWlzIGVybWl0dGVsbiAKKyAgICAgICAgaW50IHByZWlzID0gOjpRdWVyeVNlbGxWYWx1ZShvYiwgY2xpZW50KTsKKyAgICAgICAgLy8gdW5kIGRlbiBCb251cyBhdWZzY2hsYWdlbi4KKyAgICAgICAgcHJlaXMgPSAoc2VsbF9mYWN0b3IgKiBwcmVpcykvMTAwOyAKKworICAgICAgICAvLyBOaWNodCBtZWhyIGF1c3phaGxlbiwgYWxzIGRhcyBPYmpla3QgYW4gc2ljaCB3ZXJ0IGlzdC4KKyAgICAgICAgcmV0dXJuIG1pbihwcmVpcywgb2ItPlF1ZXJ5UHJvcChQX1ZBTFVFKSk7CisgICAgICB9CisKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KK0xFVFpURSBBRU5ERVJVTkc6IDE4LUp1bi0yMDE1LCBBcmF0aG9ybgpkaWZmIC0tZ2l0IGEvZG9jL2xmdW4vUXVlcnlTa2lsbCBiL2RvYy9sZnVuL1F1ZXJ5U2tpbGwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMDE3YjlmOQotLS0gL2Rldi9udWxsCisrKyBiL2RvYy9sZnVuL1F1ZXJ5U2tpbGwKQEAgLTAsMCArMSwzNSBAQAorUXVlcnlTa2lsbCgpCitGVU5LVElPTjoKKyAgICBwdWJsaWMgdmFyYXJncyBtYXBwaW5nIFF1ZXJ5U2tpbGwoc3RyaW5nIHNuYW1lLCBzdHJpbmcgZ2lsZGUpCisKK0RFRklOSUVSVCBJTjoKKyAgICAvc3RkL2xpdmluZy9za2lsbHMuYworICAgIAorQVJHVU1FTlRFOgorICAgIHN0cmluZyBzbmFtZSAgICBOYW1lIGRlcyBhYnp1ZnJhZ2VuZGVuIFNraWxsCisgICAgc3RyaW5nIGdpbGRlICAgIE5hbWUgZGVyIEdpbGRlLCB1bnRlciBkZXIgZGVyIFNraWxsIGdlc3VjaHQgd2VyZGVuIHNvbGwKKworQkVTQ0hSRUlCVU5HOgorICAgIERpZXNlIEZ1bmt0aW9uIGxpZWZlcnQgZGFzIFNraWxsbWFwcGluZ3MgZGVzIFNraWxscyAnc25tZScgaW0gTGViZXdlc2VuCisgICAgenVydWVjay4gRGllc2UgZW50aGFlbHQgRWludHJhZWdlLCBkaWUgaW4gZGVyIE1hbi1QYWdlIHNraWxsX2luZm9fbGlzdGUKKyAgICBiZXNjaHJpZWJlbiBzaW5kLgorCisgICAgRmFsbHMgJ2dpbGRlJyBuaWNodCBhbmdlZ2ViZW4gd2lyZCwgd2lyZCBkZXIgU2tpbGwgenVlcnN0IGZ1ZXIgZGllIEdpbGRlCisgICAgUF9HVUlMRCBkZXMgTGViZXdlc2VucyBnZXN1Y2h0LCBhbnNvbnN0ZW4gaW4gZGVuIGFsbGdlbWVpbmVuIFNraWxscworICAgICJBTlkiIChlcyB3aXJkIE5JQ0hUIGluIEdpbGRlbm9iamVrdCBvZGVyIFNwZWxsYm9vayBldHdhcyBhYmdlZnJhZ3QpLgorCitSVUVDS0dBQkVXRVJUOgorICAgIEVpbiBNYXBwaW5nIG1pdCBTa2lsbGluZm9zIG9kZXIgMCwgZmFsbHMgZGVyIFNraWxsIG5pY2h0IHZvcmhhbmRlbiBpc3QuCisgICAgRGFzIE1hcHBpbmcgaXN0IGVpbmUgS29waWUuCisKK1NJRUhFIEFVQ0g6CisgICAgU2tpbGxzIExlcm5lbjogIExlYXJuU2tpbGwsIE1vZGlmeVNraWxsLCBMaW1pdEFiaWxpdHkKKyAgICAqIE51dHp1bmc6ICAgICAgVXNlU3BlbGwsIFVzZVNraWxsCisgICAgKiBBYmZyYWdlbjogICAgIFF1ZXJ5U2tpbGxBYmlsaXR5CisgICAgKiBNb2RpZmlrYXRpb246IE1vZGlmeVNraWxsQXR0cmlidXRlLCBRdWVyeVNraWxsQXR0cmlidXRlLAorICAgICAgICAgICAgICAgICAgICBRdWVyeVNraWxsQXR0cmlidXRlTW9kaWZpZXIsIFJlbW92ZVNraWxsQXR0cmlidXRlTW9kaWZpZXIKKyAgICAgICogUHJvcGVydGllczogUF9TS0lMTF9BVFRSSUJVVEVTLCBQX1NLSUxMX0FUVFJJQlVURV9PRkZTRVRTCisgICAgKiBzb25zdGlnOiAgICAgIHNwcnVjaGVybXVlZHVuZywgc2tpbGxfaW5mb19saXN0ZQorICAgICogUHJvcGVydGllczogICBQX05FV1NLSUxMUworCis1LiBPa3QgMjAxMSBHbG9pbnNvbgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2RvYy9sZnVuL1F1ZXJ5U2tpbGxBYmlsaXR5IGIvZG9jL2xmdW4vUXVlcnlTa2lsbEFiaWxpdHkKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNWNmZDgxNQotLS0gL2Rldi9udWxsCisrKyBiL2RvYy9sZnVuL1F1ZXJ5U2tpbGxBYmlsaXR5CkBAIC0wLDAgKzEsMjkgQEAKK1F1ZXJ5U2tpbGxBYmlsaXR5KCkKK0ZVTktUSU9OOgorICAgIHB1YmxpYyB2YXJhcmdzIGludCBRdWVyeVNraWxsQWJpbGl0eShzdHJpbmcgc25hbWUsIHN0cmluZyBnaWxkZSkKKworREVGSU5JRVJUIElOOgorICAgIC9zdGQvbGl2aW5nL3NraWxscy5jCisgICAgCitBUkdVTUVOVEU6CisgICAgc3RyaW5nIHNuYW1lICAgICAgICBOYW1lIGRlcyBhYnp1ZnJhZ2VuZGVuIFNraWxsCisgICAgc3RyaW5nIGdpbGRlICAgICAgICAgR2lsZGUsIHVudGVyIGRlciBkZXIgU2tpbGwgZ2VzdWNodCB3ZXJkZW4gc29sbAorCitCRVNDSFJFSUJVTkc6CisgICAgRGllc2UgRnVua3Rpb24gbGllZmVydCBlaW5lbiBXZXJ0IHp1cnVlY2ssIGRlciBhdXNzYWd0LCB3aWUgZ3V0IGRhcworICAgIExlYmV3ZXNlbiBkZW4gU2tpbGwgJ3NuYW1lJyBiZWhlcnJzY2h0IChLZXkgU0lfU0tJTExBQklMSVRZIGltCisgICAgU2tpbGxtYXBwaW5nKS4KKyAgICBEaWVzZXIgV2VydCBrYW5uIHp3aXNjaGVuIC1NQVhfQUJJTElUWSB1bmQgTUFYX0FCSUxJVFkgbGllZ2VuLAorICAgIG5vcm1hbCBpc3QgMCBiaXMgTUFYX0FCSUxJVFkgKDEwMDAwIC0gU2tpbGwgcGVyZmVrdGlvbmllcnQpLgorCitTSUVIRSBBVUNIOgorICAgIFNraWxscyBMZXJuZW46ICBMZWFyblNraWxsLCBNb2RpZnlTa2lsbCwgTGltaXRBYmlsaXR5CisgICAgKiBOdXR6dW5nOiAgICAgIFVzZVNwZWxsLCBVc2VTa2lsbAorICAgICogQWJmcmFnZW46ICAgICBRdWVyeVNraWxsCisgICAgKiBNb2RpZmlrYXRpb246IE1vZGlmeVNraWxsQXR0cmlidXRlLCBRdWVyeVNraWxsQXR0cmlidXRlLAorICAgICAgICAgICAgICAgICAgICBRdWVyeVNraWxsQXR0cmlidXRlTW9kaWZpZXIsIFJlbW92ZVNraWxsQXR0cmlidXRlTW9kaWZpZXIKKyAgICAgICogUHJvcGVydGllczogUF9TS0lMTF9BVFRSSUJVVEVTLCBQX1NLSUxMX0FUVFJJQlVURV9PRkZTRVRTCisgICAgKiBzb25zdGlnOiAgICAgIHNwcnVjaGVybXVlZHVuZywgc2tpbGxfaW5mb19saXN0ZQorICAgICogUHJvcGVydGllczogICBQX05FV1NLSUxMUworCis1LiBPa3QgMjAxMSBHbG9pbnNvbgpkaWZmIC0tZ2l0IGEvZG9jL2xmdW4vUXVlcnlTa2lsbEF0dHJpYnV0ZSBiL2RvYy9sZnVuL1F1ZXJ5U2tpbGxBdHRyaWJ1dGUKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZDBiMWJkMQotLS0gL2Rldi9udWxsCisrKyBiL2RvYy9sZnVuL1F1ZXJ5U2tpbGxBdHRyaWJ1dGUKQEAgLTAsMCArMSw1OCBAQAorUXVlcnlTa2lsbEF0dHJpYnV0ZSgpCitGVU5LVElPTjoKKyAgICBwdWJsaWMgaW50IFF1ZXJ5U2tpbGxBdHRyaWJ1dGUoc3RyaW5nIGF0cm5hbWUpCisKK0RFRklOSUVSVCBJTjoKKyAgICAvc3RkL2xpdmluZy9za2lsbF9hdHRyaWJ1dGVzLmMKKyAgICAKK0FSR1VNRU5URToKKyAgICBzdHJpbmcgYXRybmFtZSAgICAgICAgICAgIE5hbWUgZGVzIGFienVmcmFnZW5kZW4gQXR0cmlidXRzCisgICAgCitCRVNDSFJFSUJVTkc6CisgICAgTWl0IGRpZXNlciBGdW5rdGlvbiBrYW5uIG1hbiBkZW4gV2VydCBiZXN0aW1tdGVyIEF0dHJpYnV0ZQorICAgIGFiZnJhZ2VuLCBkYWJlaSB3ZXJkZW4gZGFzIGFiZ2VmcmFndGUgQXR0cmlidXQsIFRvZGVzZm9sZ2VuLAorICAgIFNBX1FVQUxJVFkgdW5kIFdlcnRlIGluIFBfU0tJTExfQVRUUklCVVRFX09GRlNFVFMKKyAgICBiZXJ1ZWNrc2ljaHRpZ3QuCisgICAgCisgICAgTW9tZW50YW5lIFNraWxscyBzaWVoZSBNb2RpZnlTa2lsbEF0dHJpYnV0ZS4KKworUlVFQ0tHQUJFV0VSVDoKKyAgICBEZXIgV2VydCBkZXMgQXR0cmlidXRzLiBJc3QgbmljaHRzIGJlc3RpbW10ZXMgZ2VzZXR6dCwgd2lyZAorICAgIGRlciBTdGFuZGFyZHdlcnQgMTAwIHp1cnVlY2tnZWdlYmVuLgorICAgIERlciBSdWVja2dhYmV3ZXJ0IGxpZWd0IHp3aXNjaGVuIDEwIGJpcyAxMDAwIChQcm96ZW50KS4KKyAgICAKK0JFTUVSS1VORzoKKyAgICBEaWUgRnVua3Rpb24gaXN0IHp3YXIgYWxzICd2YXJhcmdzJyBkZWZpbmllcnQsIGdpYnQgbWFuIGFsbGVyZGluZ3MKKyAgICBrZWluZW4gQXR0cmlidXRuYW1lbiBhbiwgd2lyZCBpbW1lciAxMDAgenVydWVja2dlZ2ViZW4uCisgICAgCitCRUlTUElFTDoKKyAgICAvLyBlaW4gU3BpZWxlciBrYW5uIGVpbiBTdHVlY2sgS2Flc2Ugc3RpYml0emVuLCB3ZW5uIGVyIHNjaG5lbGwKKyAgICAvLyBnZW51ZyBpc3QgLi4uICgxNSUgdWViZXIgbm9ybWFsKQorICAgIGlmKHRoaXNfcGxheWVyKCktPlF1ZXJ5U2tpbGxBdHRyaWJ1dGUoU0FfU1BFRUQpPj0xMTUpIHsKKyAgICAgIHRlbGxfb2JqZWN0KHRoaXNfcGxheWVyKCksCisgICAgICAgICJEdSBzY2huYXBwc3QgZGFzIFN0dWVjayBLYWVzZSBhdXMgZGVyIEZhbGxlLlxuIik7CisgICAgICBvYmoga2Flc2UgPSBjbG9uZV9vYmplY3QoLi4uKTsKKyAgICAgIFsuLi5dCisgICAgfSBlbHNlIHsKKyAgICAgIG1hcHBpbmcgYW1hcD1tYXBfaW5kaWNlcyhWQUxJRF9BUk1PVVJfQ0xBU1MsIychKTsKKyAgICAgIGFtYXBbQVRfR0xPVkVdPTEwMDsKKyAgICAgIHRlbGxfb2JqZWN0KHRoaXNfcGxheWVyKCksCisgICAgICAgICJEdSBiaXN0IHp1IGxhbmdzYW0gdW5kIGRpZSBGYWxsZSBzY2huYXBwdCBodW5ncmlnIHp1LlxuIik7CisgICAgICB0aGlzX3BsYXllcigpLT5EZWZlbmQocmFuZG9tKDEwMCksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAoe0RUX1BJRVJDRSwgRFRfU1FVRUVaRX0pLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgKFtTUF9QSFlTSUNBTF9BVFRBQ0s6IDEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNQX1JFRFVDRV9BUk1PVVI6IGFtYXAsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNQX1NIT1dfREFNQUdFOiAwXSkpOworICAgIH0KKworU0lFSEUgQVVDSDoKKyAgICBTa2lsbHMgTGVybmVuOiAgTGVhcm5Ta2lsbCwgTW9kaWZ5U2tpbGwsIExpbWl0QWJpbGl0eQorICAgICogTnV0enVuZzogICAgICBVc2VTcGVsbCwgVXNlU2tpbGwKKyAgICAqIEFiZnJhZ2VuOiAgICAgUXVlcnlTa2lsbCwgUXVlcnlTa2lsbEFiaWxpdHkKKyAgICAqIE1vZGlmaWthdGlvbjogTW9kaWZ5U2tpbGxBdHRyaWJ1dGUsCisgICAgICAgICAgICAgICAgICAgIFF1ZXJ5U2tpbGxBdHRyaWJ1dGVNb2RpZmllciwgUmVtb3ZlU2tpbGxBdHRyaWJ1dGVNb2RpZmllcgorICAgICAgKiBQcm9wZXJ0aWVzOiBQX1NLSUxMX0FUVFJJQlVURVMsIFBfU0tJTExfQVRUUklCVVRFX09GRlNFVFMKKyAgICAqIHNvbnN0aWc6ICAgICAgc3BydWNoZXJtdWVkdW5nLCBza2lsbF9pbmZvX2xpc3RlCisgICAgKiBQcm9wZXJ0aWVzOiAgIFBfTkVXU0tJTExTCisKKzUuIE9rdCAyMDExIEdsb2luc29uCmRpZmYgLS1naXQgYS9kb2MvbGZ1bi9RdWVyeVNraWxsQXR0cmlidXRlTW9kaWZpZXIgYi9kb2MvbGZ1bi9RdWVyeVNraWxsQXR0cmlidXRlTW9kaWZpZXIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNTA3YzUxYgotLS0gL2Rldi9udWxsCisrKyBiL2RvYy9sZnVuL1F1ZXJ5U2tpbGxBdHRyaWJ1dGVNb2RpZmllcgpAQCAtMCwwICsxLDkwIEBACitRdWVyeVNraWxsQXR0cmlidXRlTW9kaWZpZXIoKQorRlVOS1RJT046CisgICAgcHVibGljIHZhcmFyZ3MgbWFwcGluZyBRdWVyeVNraWxsQXR0cmlidXRlTW9kaWZpZXIob2JqZWN0IGNhc3RlciwgCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RyaW5nICphdHJuYW1lcykKKworREVGSU5JRVJUIElOOgorICAgIC9zdGQvbGl2aW5nL3NraWxsX2F0dHJpYnV0ZXMuYworCitBUkdVTUVOVEU6CisgICAgPGNhc3Rlcj4gICAgb2JqZWN0CisgICAgICAgICAgICAgICAgT2JqZWt0LCB3ZWxjaGVzIGRpZSBnZXN1Y2h0ZW4gTW9kcyBnZXNldHp0IGhhdAorCisgICAgPGF0cm5hbWVzPiAgc3RyaW5nKgorICAgICAgICAgICAgICAgIEFycmF5IHZvbiBTa2lsbC1BdHRyaWJ1dGVuLCB3ZWxjaGUgZHVyY2hzdWNodCB3ZXJkZW4gc29sbGVuLgorCitCRVNDSFJFSUJVTkc6CisgICAgRGllc2UgRnVua3Rpb24gbGllZmVydCBhbGxlIE1vZHMgdm9uIDxjYXN0ZXI+IGF1ZiBkZW4gU2tpbGwtCisgICAgQXR0cmlidXRlbiA8YXRybmFtZXM+IGluIGVpbmVtIE1hcHBpbmcgenVydWVjay4KKyAgICBXaXJkIDxhdHJuYW1lcz4gbmljaHQgYW5nZWdlYmVuIG9kZXIgaXN0IGVpbiBsZWVyZXMgQXJyYXksIHdlcmRlbiBhbGxlCisgICAgU2tpbGwtQXR0cmlidXRlIG5hY2ggTW9kcyBhYmdlc3VjaHQuCisgICAgV2lyZCA8Y2FzdGVyPiBuaWNodCBhbmdlYmVuIG9kZXIgaXN0IDAsIHNvIHdlcmRlbiBhbGxlIE1vZHMgZGVyIAorICAgIGdld3VlbnNjaHRlbiBTa2lsbC1BdHRyaWJ1dGUgZ2VsaWVmZXJ0LgorICAgIERlbWVudHNwcmVjaGVuZCBiZWtvbW10IG1hbiBhbGxlIE1vZHMgYWxsZXIgU2tpbGwtQXR0cmlidXRlLCB3ZW5uIGtlaW5zCisgICAgdm9uIGJlaWRlbSBhbmdlZ2ViZW4gd2lyZC4KKworUlVFQ0tHQUJFV0VSVDoKKyAgICAoW10pLCBmYWxscyBrZWluZSBNb2RpZmlrYXRvcmVuIGdlZnVuZGVuIHd1cmRlbi4KKyAgICBJbiBhbmRlcmVuIEZhZWxsZW4gaXN0IGRpZSBEYXRlbnN0cnVrdHVyIGRlcyBNYXBwaW5ncyB3aWUgZm9sZ3Q6CisgICAgKFsgYXRybmFtZTE6IChbIDxjYXN0ZXI+OiA8dmFsdWU+OyA8ZHVyYXRpb24+IF0pLAorICAgICAgIGF0cm5hbWUyOiAoWyA8Y2FzdGVyPjogPHZhbHVlPjsgPGR1cmF0aW9uPiBdKSBdKQorICAgIERpZSBTY2hsdWVzc2VsIGltIE1hcHBpbmcgc2luZCBkaWUgamV3ZWlsaWdlbiBTa2lsbC1BdHRyaWJ1dGUsIGRpZSBXZXJ0ZQorICAgIGRlcyBNYXBwaW5ncyBzaW5kIGVybmV1dCBNYXBwaW5ncywgd2VsY2hlIGFscyBTY2hsdWVzc2VsIGRpZSBPYmpla3RlCisgICAgaGFiZW4sIHdlbGNoZSBkaWUgTW9kcyBnZXNldHp0IGhhYmVuLiBJbiBkaWVzZW0gTWFwcGluZyBnZWhvZXJlbiB6dSBqZWRlbQorICAgIFNjaGx1ZXNzZWwgendlaSBXZXJ0ZSwgZGVuIFdlcnQgZGVzIE1vZGlmaWthdG9ycyB1bmQgZGllIEFibGF1ZnplaXQuCisgICAgPHZhbHVlPiBrYW5uIGhpZXJiZWkgZWluIGludCBvZGVyIGVpbmUgY2xvc3VyZSBzZWluLCA8ZHVyYXRpb24+IGlzdCBlaW4KKyAgICBpbnQsIDxjYXN0ZXI+IGlzdCBlaW4gT2JqZWt0LgorICAgIEdnZi4ga2FubiBkYXMgaW5uZXJlIE1hcHBpbmcgbmF0dWVybGljaCBhdWNoIG1laHJlcmUgTW9kaWZpa2F0b3JlbgorICAgIGVudGhhbHRlbiAoYWxzbyBjYXN0ZXIxLCBjYXN0ZXIyLCB1c3cuKS4KKworQkVNRVJLVU5HRU46CisKK0JFSVNQSUVMRToKKyAgICAgRWluIE9iamVrdCBtb2VjaHRlIHNlaW5lbiBiZXN0ZWhlbmRlbiBNb2RpZmlrYXRvciB1bSAyMCB1bmQgZGllCisgICAgIEd1ZWx0aWdrZWl0IHVtIDEzIGVyaG9laGVuLgorICAgICBtYXBwaW5nIHJlcyA9IG9iLT5RdWVyeVNraWxsQXR0cmlidXRlTW9kaWZpZXIodGhpc19vYmplY3QoKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHtTQV9EQU1BR0V9KSApOworICAgICBpZiAobWVtYmVyKHJlcywgU0FfREFNQUdFKSAmJiBtZW1iZXIocmVzW1NBX0RBTUFHRV0sIHRoaXNfb2JqZWN0KCkpKSB7CisgICAgICAgICAgLy8gYWx0ZW4gTW9kIHVlYmVyc2NocmVpYmVuIHVuZCBXZXJ0ZSBkYWJlaSBhbmhlYmVuLgorICAgICAgICAgIG9iLT5Nb2RpZnlTa2lsbEF0dHJpYnV0ZU1vZGlmaWVyKFNBX0RBTUFHRSwKKyAgICAgICAgICAgICAgcmVzW1NBX0RBTUFHRV1bdGhpc19vYmplY3QoKSwwXSArIDIwLAorICAgICAgICAgICAgICByZXNbU0FfREFNQUdFXVt0aGlzX29iamVjdCgpLDFdICsgMTMgKTsKKyAgICAgfQorICAgICBlbHNlCisgICAgICAgICAgLy8gbmV1ZW4gTW9kIHNldHplbi4KKyAgICAgICAgICBvYi0+TW9kaWZ5U2tpbEF0dHJpYnV0ZU1vZGlmaWVyKFNBX0RBTUFHRSwgMjAsIDEzKTsKKyAgICAgIAorICAgICBFaW4gT2JqZWt0IGhhdCBkZW4gRmx1Y2ggZGVyIHVucHJhZXppc2VuIFNjaG5lbGxpZ2tlaXQsIHdlbGNoZXIgU0FfREFNQUdFCisgICAgIHJlZHV6aWVydCwgc29mZXJuIGRhcyBMZWJld2VzZW4gZWluZW4gcG9zaXRpdmVuIE1vZGlmaWthdG9yIGF1ZiBTQV9TUEVFRAorICAgICBoYXQ6CisgICAgIG1hcHBpbmcgcmVzID0gb2ItPlF1ZXJ5U2tpbGxBdHRyaWJ1dGVNb2RpZmllcigwLCAoe1NBX1NQRUVEfSkgKTsKKyAgICAgaWYgKG1lbWJlcihyZXMsIFNBX1NQRUVEKSB7CisgICAgICAgICBpbnQgdmFsLCBpbnQgZHVyOworICAgICAgICAgZm9yZWFjaChvYmplY3QgY2FzdGVyLCBpbnQgdiwgaW50IGQ6IHJlc1tTQV9TUEVFRF0pIHsKKyAgICAgICAgICAgICAvLyBncm9lc3N0ZW4gTW9kIHJhdXNmaW5kZW4sIGRhYmVpIGtlaW5lIGNsb3N1cmVzCisgICAgICAgICAgICAgLy8gYmVydWVja3NpY2h0aWdlbi4KKyAgICAgICAgICAgICBpZiAoaW50cCh2KSAmJiB2PnZhbCkgeworICAgICAgICAgICAgICAgICB2YWw9djsKKyAgICAgICAgICAgICAgICAgZHVyPWQ7CisgICAgICAgICAgICAgfQorICAgICAgICAgfQorICAgICAgICAgaWYgKHZhbCA+IDApIHsKKyAgICAgICAgICAgICAvLyBwb3MuIE1vZCBhdWYgU0FfU1BFRUQgZ2VmdW5kZW4sIGVudHNwcmVjaGVuZGVuIG5lZy4gTW9kIGF1ZgorICAgICAgICAgICAgIC8vIFNBX0RBTUFHRSBzZXR6ZW4sIGRlciB6dW0gZ2xlaWNoZW4gWmVpdHB1bmt0IHVuZ3VlbHRpZyB3aXJkCisgICAgICAgICAgICAgLy8gd2llIGRlciBNb2QgYXVmIFNBX1NQRUVELgorICAgICAgICAgICAgIGlmIChvYi0+TW9kaWZ5U2tpbGxBdHRyaWJ1dGUoU0FfREFNQUdFLCAtdmFsLCBkdXIpID09IFNBX01PRF9PSykKKyAgICAgICAgICAgICAgICB0ZWxsX29iamVjdChvYiwgInRvbGxlIEZsdWNobWVsZHVuZy4iKTsKKyAgICAgICAgIH0KKyAgICAgfQorCitTSUVIRSBBVUNIOgorICAgIFNraWxscyBMZXJuZW46ICBMZWFyblNraWxsLCBNb2RpZnlTa2lsbCwgTGltaXRBYmlsaXR5CisgICAgKiBOdXR6dW5nOiAgICAgIFVzZVNwZWxsLCBVc2VTa2lsbAorICAgICogQWJmcmFnZW46ICAgICBRdWVyeVNraWxsLCBRdWVyeVNraWxsQWJpbGl0eQorICAgICogTW9kaWZpa2F0aW9uOiBNb2RpZnlTa2lsbEF0dHJpYnV0ZSwgUXVlcnlTa2lsbEF0dHJpYnV0ZSwKKyAgICAgICAgICAgICAgICAgICAgUmVtb3ZlU2tpbGxBdHRyaWJ1dGVNb2RpZmllcgorICAgICAgKiBQcm9wZXJ0aWVzOiBQX1NLSUxMX0FUVFJJQlVURVMsIFBfU0tJTExfQVRUUklCVVRFX09GRlNFVFMKKyAgICAqIHNvbnN0aWc6ICAgICAgc3BydWNoZXJtdWVkdW5nLCBza2lsbF9pbmZvX2xpc3RlCisgICAgKiBQcm9wZXJ0aWVzOiAgIFBfTkVXU0tJTExTCisKKzE0LjA4LjIwMDgsIFplc3N0cmEKZGlmZiAtLWdpdCBhL2RvYy9sZnVuL1F1ZXJ5U2tpbGxCb251cyBiL2RvYy9sZnVuL1F1ZXJ5U2tpbGxCb251cwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4xYTRlZjQ3Ci0tLSAvZGV2L251bGwKKysrIGIvZG9jL2xmdW4vUXVlcnlTa2lsbEJvbnVzCkBAIC0wLDAgKzEsNjUgQEAKK1F1ZXJ5U2tpbGxCb251cygpCisKK0ZVTktUSU9OOgorICAgICBpbnQgUXVlcnlTa2lsbEJvbnVzKG9iamVjdCBjYXN0ZXIsIG9iamVjdCB0YXJnZXQsIG1hcHBpbmcgc2luZm8pCisKK0RFRklOSUVSVCBJTjoKKyAgICAgYmVsaWViaWdlbiBPYmpla3RlbgorCitBUkdVTUVOVEU6CisgICAgIG9iamVjdCBjYXN0ZXIKKyAgICAgICAgICBkZXIgQmVudXR6ZXIgZWluZXMgU2tpbGxzL1NwZWxscyAoTGViZXdlc2VuKQorICAgICBvYmplY3QgdGFyZ2V0CisgICAgICAgICAgZGFzIFppZWwgZWluZXMgU2tpbGxzL1NwZWxscyAoYmVsaWViaWdlcyBPYmpla3Qgb2RlciAwKQorICAgICBtYXBwaW5nIHNpbmZvCisgICAgICAgICAgZGFzIFNraWxsaW5mb21hcHBpbmcKKworQkVTQ0hSRUlCVU5HOgorICAgICBEaWVzZSBGdW5rdGlvbiB3aXJkIHZvbiBkZXIgR2lsZGUgZGVzIENhc3RlcnMgaW0gRW52aXJvbm1lbnQgdW5kIGdnZi4KKyAgICAgYXVjaCBpbSBaaWVsIGVpbmVzIFNraWxscy9TcGVsbHMgZ2VydWZlbi4KKyAgICAgRGllIEdpbGRlIHVlYmVyZ2lidCBuZWJlbiBDYXN0ZXIgdW5kIFppZWwgZWluIE1hcHBpbmcgbWl0IFNraWxsaW5mb3MgKHMuCisgICAgIFNJIEtvbnN0YW50ZW4gYXVzIG5ld19za2lsbHMuaCBmdWVyIERldGFpbHMpLCB3ZWxjaGVzIGFsbGUgd2VzZW50bGljaGVuCisgICAgIEluZm9ybWF0aW9uZW4gdWViZXIgZGVuIGJlbnV0enRlbiBTa2lsbC9TcGVsbCBlbnRoYWVsdC4KKworICAgICBRdWVyeVNraWxsQm9udXMoKSBsaWVmZXJ0IGVpbmVuIEJvbnVzIChvZGVyIE1hbHVzKSB6dXJ1ZWNrLCBkZW4gZGVyCisgICAgIEF1ZnJ1ZmVyIGFscyBGYWt0b3IgaW4gZGVyIEJlcmVjaG51bmcgZGVzIEVmZmVrdHMgZGVzIFNraWxscworICAgICBiZXJ1ZWNrc2ljaHRpZ2VuIGthbm4gKGFiZXIgbmljaHQgbXVzcykuCisgICAgIERlciBCb251cy9NYWx1cyB3aXJkIGhpZXJiZWkgYWxzIGdhbnp6YWhsaWdlciAwLjAxLVByb3plbnR3ZXJ0IGF1ZmdlZmFzc3QKKyAgICAgKDEwMDAwID09IDEwMCUgPT0ga2VpbmUgVmVyYWVuZGVydW5nLCAxID09IDAuMDElKS4KKworICAgICBEaWVzZSBGdW5rdGlvbiBrYW5uIGluIGJlbGllYmlnZW4gT2JqZWt0ZW4gKHJlLSlkZWZpbmllcnQgd2VyZGVuLiBJbQorICAgICBGYWxsZSBtb2JpbGVyIE9iamVrdGUgb2RlciBhbmhhbHRlbmRlciBFZmZla3RlIGlzdCBqZWRvY2ggZWluZQorICAgICBCYWxhbmNlZ2VuZWhtaWd1bmcgZXJmb3JkZXJsaWNoLCBzb2Zlcm4ga2FtcGZyZWxldmFudGUgU2tpbGxzIGJlZWluZmx1c3N0CisgICAgIHdlcmRlbi4KKyAgICAgRWluZSBmbGFlY2hlbmRlY2tlbmRlIFJlZHV6aWVydW5nIHZvbiBTa2lsbHMvR2lsZGVuZmFlaGlna2VpdGVuIGlzdAorICAgICBleHBsaXppdCBfbmljaHRfIGVyd3VlbnNjaHQgdW5kIHNvbGwgYXVmIGVpbnplbG5lIFJhZXVtZSB1bmQgT2JqZWt0ZQorICAgICBiZXNjaHJhZW5rdCBzZWluLgorCitCRU1FUktVTkdFTjoKKyAgICAgRGFzIE1hcHBpbmcgPHNpbmZvPiBrYW5uIGluIGRpZXNlciBGdW5rdGlvbiBnZWFlbmRlcnQgd2VyZGVuLiBEaWVzZXMga2FubgorICAgICBhbGxlcmRpbmdzIHNlaHIgd2VpdHJlaWNoZW5kZSBGb2xnZW4gaGFiZW4sIHNwZXppZWxsIGJlaSBtYW5nZWxuZGVuCisgICAgIEtlbm50bmlzc2VuIHVlYmVyIEludGVybmEgZGVzIFNraWxsc3lzdGVtcy4gRGFoZXIgYml0dGUgdm9uIEFlbmRlcnVuZ2VuCisgICAgIGFic2VoZW4gYnp3LiB2b3JoZXIgbWl0IGRlbSBqZXdlaWxpZ2VuIEdpbGRlbm1hZ2llciB1bmQvb2RlciBkZXIKKyAgICAgR2lsZGVuYmFsYW5jZSBhYmtsYWVyZW4uCisgICAgIERpZSBCZWRldXR1bmcgZGVyIFdlcnRlIGluIDxzaW5mbz4ga2FubiBqZSBuYWNoIEdpbGRlIHZhcmlpZXJlbi4gSW0KKyAgICAgWndlaWZlbHNmYWxsIGJpdHRlIGJlaSBkZW4gamV3ZWlsaWdlbiBHaWxkZW5tYWdpZXJuIG5hY2hmcmFnZW4uIAorICAgICBEaWUgR2lsZGUga2FubiBkaWVzZSBGdW5rdGlvbiBydWZlbiwgbXVzcyBhYmVyIG5pY2h0LiBFYmVuc28ga2FubiBzaWUgZGFzCisgICAgIEVyZ2VibmlzIGJlcnVlY2tzaWNodGlnZW4sIG11c3MgYWJlciBuaWNodC4KKworQkVJU1BJRUxFOgorICAgICBJbiBlaW5lbSBSYXVtIHNvbGxlbiBIZWlsemF1YmVyIGJlc29uZGVycyBlZmZpemllbnQgc2VpbjoKKyAgICAgaW50IFF1ZXJ5U2tpbGxCb251cyhvYmplY3QgY2FzdGVyLCBvYmplY3QgdGFyZ2V0LCBtYXBwaW5nIHNpbmZvKSB7CisgICAgICAgIGlmIChwb2ludGVycChzaW5mb1tTSV9NQUdJQ19UWVBFXSkKKyAgICAgICAgICAgICYmIG1lbWJlcihzaW5mb1tTSV9NQUdJQ19UWVBFXSwgTVRfSEVJTFVORykgPiAtMSkKKyAgICAgICAgeworICAgICAgICAgICAgcmV0dXJuIDEyMDAwICsgcmFuZG9tKDMwMDApOyAvLyBib251cyB2b24gMTIwLTE1MCUKKyAgICAgICAgfQorICAgICAgICByZXR1cm4gMTAwMDA7CisgICAgIH0KKworU0lFSEUgQVVDSDoKKyAgICAgZ2lsZGVuLWRva3UKKyAgICAgPG5ld19za2lsbHMuaD4KKworTEVUWlRFIEFlTkRFUlVORzoKKzE5LjA4LjIwMTMsIFplc3N0cmEKZGlmZiAtLWdpdCBhL2RvYy9sZnVuL1F1ZXJ5U3RvcmFnZVJvb20gYi9kb2MvbGZ1bi9RdWVyeVN0b3JhZ2VSb29tCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmI2MmU0MGQKLS0tIC9kZXYvbnVsbAorKysgYi9kb2MvbGZ1bi9RdWVyeVN0b3JhZ2VSb29tCkBAIC0wLDAgKzEsMjEgQEAKK1F1ZXJ5U3RvcmFnZVJvb20oKQ0KKw0KK0Z1bmt0aW9uOg0KKyAgICBzdHJpbmcgUXVlcnlTdG9yYWdlUm9vbSgpDQorDQorRGVmaW5pZXJ0IGluOg0KKyAgICAvc3RkL3Jvb20vc2hvcA0KKw0KK1J1ZWNrZ2FiZXdlcnQ6DQorICAgIERhdGVpbmFtZSBkZXMgTGFnZXJzLCBpbiBkZW0gZGllIGF1Zmdla2F1ZnRlbiBHZWdlbnN0YWVuZGUgYXVmYmV3YWhydCANCisgICAgd2VyZGVuLg0KKw0KK1NpZWhlIGF1Y2g6DQorICAgIEZ1bmt0aW9uZW46DQorICAgICAgQWRkRml4ZWRPYmplY3QoKSwgUmVtb3ZlRml4ZWRPYmplY3QoKSwgU2V0U3RvcmFnZVJvb20oKSwgDQorICAgICAgUXVlcnlCdXlWYWx1ZSgpLCBRdWVyeUJ1eUZhY3QoKSwgc2VsbF9vYmooKSwgYnV5X29iaigpDQorICAgIFByb3BlcnRpZXM6DQorICAgICAgUF9LRUVQRVIsIFBfTUlOX1NUT0NLLCBQX1NUT1JFX0NPTlNVTUUNCisNCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCitMZXR6dGUgQWVuZGVydW5nOiAyMS4wNS4yMDE0LCBCdWdmaXgNCmRpZmYgLS1naXQgYS9kb2MvbGZ1bi9RdWVyeVRpbWVkQXR0ck1vZGlmaWVyIGIvZG9jL2xmdW4vUXVlcnlUaW1lZEF0dHJNb2RpZmllcgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4xOTA4NjA4Ci0tLSAvZGV2L251bGwKKysrIGIvZG9jL2xmdW4vUXVlcnlUaW1lZEF0dHJNb2RpZmllcgpAQCAtMCwwICsxLDQyIEBACitRdWVyeVRpbWVkQXR0ck1vZGlmaWVyKCkKK0ZVTktUSU9OOgorICAgICBtYXBwaW5nIFF1ZXJ5VGltZWRBdHRyTW9kaWZpZXIoc3RyaW5nIGtleSkKKworREVGSU5JRVJUIElOOgorICAgICAvc3RkL2xpdmluZy9hdHRyaWJ1dGVzLmMKKworQVJHVU1FTlRFOgorICAgICBrZXkJLQlhdXMgUF9USU1FRF9BVFRSX01PRCBhYnp1ZnJhZ2VuZGVyIEVpbnRyYWcKKworQkVTQ0hSRUlCVU5HOgorICAgICBEZXIgenUga2V5IGdlaG9lcmVuZGUgRWludHJhZyBpbiBQX1RJTUVEX0FUVFJfTU9EIHdpcmQgYWJnZWZyYWd0Lg0KKw0KK1JVZUNLR0FCRVdFUlQ6DQorICAgICBFaW4gbGVlcmVzIE1hcHBpbmcgaW0gRmFsbGUgZWluZXMgZmVobGVyaGFmdGVuIGtleS1Bcmd1bWVudGVzIG9kZXIgCisgICAgIGVpbmVzIG5pY2h0IGV4aXN0ZW50ZW4gS2V5cy4NCisgICAgIA0KKyAgICAgQW5zb25zdGVuIHdpcmQgZWluIE1hcHBpbmcgZGVyIEZvcm0NCisgICAgIA0KKyAgICAgICAgKFsNCisgICAgICAgICAgIEtleSA6IChbIE1hcHBpbmcgbWl0IGRlbiBNb2RpZmlrYXRvcmVuIF0pIDsNCisgICAgICAgICAgICAgICAgIEFibGF1ZnplaXQgOyBBYmxhdWZvYmpla3QgOyBOYWNocmljaHRlbmVtcGZhZW5nZXIgDQorICAgICAgICBdKSAgICANCisNCisgICAgIHp1cnVlY2tnZWdlYmVuLkRpZSBBYmxhdWZ6ZWl0IGlzdCBoaWVyYmVpIGRpZSBaZWl0IGluIFNla3VuZGVuIHNlaXQNCisgICAgIGRlbSAxLiBKYW4gMTk3MCwgMC4wOjAgR01ULCBkYXMgQWJsYXVmb2JqZWt0IGlzdCBkYXMgT2JqZWt0IGFuIGRlc3Nlbg0KKyAgICAgRXhpc3RlbnogZGllIEF0dHJpYnV0dmVyYWVuZGVydW5nZW4gZ2VidW5kZW4gaXN0IHVuZCBkZXINCisgICAgIE5hY2hyaWNodGVuZW1wZmFlbmdlciBpc3QgZGFzamVuaWdlbiBPYmpla3RlIHdlbGNoZXMgaW0gRmFsbGUgDQorICAgICBkdXJjaCBkZW4gQXVmcnVmIHZvbiAiTm90aWZ5VGltZWRBdHRyTW9kRXhwaXJlZCIgYmVuYWNocmljaHRpZ3QgDQorICAgICB3aXJkIHNvYmFsZCBkYXMgQXR0cmlidXQgYWJnZWxhdWZlbiBpc3QuIA0KKyAgICAgRGVyIEZ1bmt0aW9uIE5vdGlmeVRpbWVkQXR0ck1vZEV4cGlyZWQgd2lyZCBhbHMgQXJndW1lbnQgZGVyIGtleQ0KKyAgICAgZGVyIGFiZ2VsYXVmZW5lbiBBdHRyaWJ1dHZlcmFlbmRlcnVuZyB1ZWJlcmdlYmVuLg0KKyAgICAgRGFzIE1hcHBpbmcgaXN0IGVpbmUgS29waWUgZGVyIE9yaWdpbmFsZGF0ZW5zdHJ1a3R1ciB6dSBkaWVzZW0gS2V5Lg0KKyAgICAKK1NJRUhFIEFVQ0g6DQorCVF1ZXJ5QXR0cmlidXRlKCksIFF1ZXJ5UmVhbEF0dHJpYnV0ZSgpLCBRdWVyeUF0dHJpYnV0ZU9mZnNldCgpLA0KKwlTZXRBdHRyaWJ1dGUoKSwgU2V0UmVhbEF0dHJpYnV0ZSgpLCBVcGRhdGVBdHRyaWJ1dGVzKCksDQorCVNldFRpbWVkQXR0ck1vZGlmaWVyKCksIERlbGV0ZVRpbWVkQXR0ck1vZGlmaWVyKCksDQorCVBfQVRUUklCVVRFUywgUF9BVFRSSUJVVEVTX09GRlNFVFMsIFBfVElNRURfQVRUUl9NT0QsDQorCVBfWF9BVFRSX01PRCwgUF9NX0FUVFJfTU9ELCAvc3RkL2xpdmluZy9hdHRyaWJ1dGVzLmMNCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQorTGFzdCBtb2RpZmllZDogVHVlIEp1bCAyNyAyMDowMDoyMCAyMDA0IGJ5IE11YWRpYg0KZGlmZiAtLWdpdCBhL2RvYy9sZnVuL1F1ZXJ5VG90YWxRUCBiL2RvYy9sZnVuL1F1ZXJ5VG90YWxRUApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5jZjE1Y2MwCi0tLSAvZGV2L251bGwKKysrIGIvZG9jL2xmdW4vUXVlcnlUb3RhbFFQCkBAIC0wLDAgKzEsMjUgQEAKK1F1ZXJ5VG90YWxRUCgpCisKK0ZVTktUSU9OOgorICAgIGludCBRdWVyeVRvdGFsUVAoKQorCitERUZJTklFUlQgSU46CisgICAgL3NlY3VyZS9xdWVzdG1hc3Rlci5jCisKK0FSR1VNRU5URToKKyAgICBrZWluZQorCitSVUVDS0dBQkVXRVJUOgorICAgIEFiZW50ZXVlcnB1bmt0ZSBzYWVtdGxpY2hlciBRdWVzdHMKKworQkVTQ0hSRUlCVU5HOgorICAgIERpZXNlIEZ1bmt0aW9uIGxpZWZlcnQgZGllIEFiZW50ZXVlcnB1bmt0ZSBkZXIgc2FlbXRsaWNoZXIgYWt0aXZpZXJ0ZXIKKyAgICBRdWVzdHMgenVydWVjay4KKworU0lFSEUgQVVDSDoKKyAgICBHaXZlUXVlc3QsIFF1ZXJ5UXVlc3QsIC9zZWN1cmUvcXVlc3RtYXN0ZXIuaCwgUXVlcnlHcm91cGVkS2V5cywKKyAgICBRdWVyeU1heFFQLCBRdWVyeU9wdFFQCisKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KK1p1bGV0enQgZ2VhZW5kZXJ0OiBTYW0sIDI1LiBOb3YgMjAwMCwgMTQ6MDQ6Mjggdm9uIFpvb2suCisKZGlmZiAtLWdpdCBhL2RvYy9sZnVuL1F1ZXJ5VXNlciBiL2RvYy9sZnVuL1F1ZXJ5VXNlcgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4xMjlhMGE1Ci0tLSAvZGV2L251bGwKKysrIGIvZG9jL2xmdW4vUXVlcnlVc2VyCkBAIC0wLDAgKzEsNTAgQEAKK1F1ZXJ5VXNlcigpCisKK0ZVTktUSU9OOgorICAgICBwdWJsaWMgb2JqZWN0IFF1ZXJ5VXNlcigpCisKK0RFRklOSUVSVCBJTjoKKyAgICAgL3N0ZC9ucGMvY29tYmF0LmMKKyAgICAgL3N0ZC9jbG90aGluZy93ZWFyLmMKKyAgICAgL3N0ZC93ZWFwb24vY29tYmF0LmMKKyAgICAgYWxsZSBPYmpla3RlLCBpbiBkZW5lbiBlcyBkYXJ1ZWJlciBoaW5hdXMgbm9ldGlnIGlzdAorCitBUkdVTUVOVEU6CisgICAgIGtlaW5lCisKK0JFU0NIUkVJQlVORzoKKyAgICAgTGllZmVydCBkZW4gYWt0dWVsbGVuIE51dHplciAoTGViZXdlc2VuKSBlaW5lcyBJdGVtcyBvZGVyIE5QQ3MuCisgICAgIAorICAgICBEaWVzZSBGdW5rdGlvbiB3aXJkIHouQi4gdm9uIGdldF9raWxsaW5nX3BsYXllcigpIGJlbnV0enQsIHVtCisgICAgIGhlcmF1c3p1ZmluZGVuLCB6dSB3ZWxjaGVtIFNwaWVsZXIgZGVubiBkYXMgT2JqZWt0IGdlaG9lcnQsIHdhcyBkZW4KKyAgICAgdG9lZGxpY2hlbiBTY2hhZGVuIHZlcnVyc2FjaHQgaGF0LgorCisgICAgIEltIEZhbGxlIGVpbmVzIE5QQ3MgaXN0IGRpZXMgc3RhbmRhcmRtYWVzc2lnIGRlciBTcGllbGVyLCBiZWkgZGVtIGRlcgorICAgICBOUEMgYWxzIEhlbGZlci1OUEMgZWluZ2V0cmFnZW4gaXN0IChzLiBSZWdpc3RlckhlbHBlck5QQykuCisgICAgIEltIEZhbGxlIGVpbmVyIFJ1ZXN0dW5nIGlzdCBlcyBkYXMgTGViZXdlc2VuLCB3ZWxjaGVzIHNpZSBnZXJhZGUgdHJhZWd0LgorICAgICBJbSBGYWxsZSBlaW5lciBXYWZmZSBpc3QgZXMgZGFzIExlYmV3ZXNlbiwgd2VsY2hlcyBzaWUgZ2VyYWRlIGdlenVlY2t0CisgICAgIGhhdC4KKyAgICAgQWxsZSBhbmRlcmVuIE9iamVrdGUgZW50aGFsdGVuIGtlaW5lbiBEZWZhdWx0IGZ1ZXIgZGllc2UgRnVua3Rpb24uCisKK1JVZUNLR0FCRVdFUlQ6CisgICAgIERhcyBudXR6ZW5kZSBMZWJld2VzZW4sIGZhbGxzIGVzIGVybWl0dGVsdCB3ZXJkZW4ga29ubnRlLCBzb25zdCAwLgorCitCRU1FUktVTkdFTjoKKyAgICAgU29sbHRlIGluIGFsbGVuIE9iamVrdGVuIGRlZmluaWVydCB3ZXJkZW4sIHdlbGNoZSBMZWJld2VzZW4gU2NoYWRlbgorICAgICB6dWZ1ZWdlbiwgb2huZSBkYXNzIGRhcyB2ZXJ1cnNhY2hlbmRlIExlYmV3ZXNlbiBkYWJlaSBhbHMgRmVpbmQgaW0KKyAgICAgRGVmZW5kKCkgYW5nZWJlbiB3aXJkLgorICAgICBEZXIgZ2VsaWVmZXJ0ZSBOdXR6ZXIgbXVzcyBleHBsaXppdCBrZWluIFNwaWVsZXIgc2Vpbi4gRXMgd2FlcmUgei5CLgorICAgICBtb2VnbGljaCwgZGFzcyB2b24gZWluZW0gU3BpZWxlciBrb250cm9sbGllcnRlciBOUEMgZWluZW4gQnVtZXJhbmcgbnV0enQuCisKK0JFSVNQSUVMRToKKyAgICAgRWluIHZvbiBlaW5lbSBTcGllbGVyIGJlc2Nod29yZW5lcyBXZXNlbiB3aXJmdCBlaW5lbiBCdW1lcmFuZyBuYWNoIGVpbmVtCisgICAgIEZlaW5kLgorICAgICBEYW5uIGxpZWZlcnQgUXVlcnlVc2VyKCkgaW0gQnVtZXJhbmcgZGVuIE5QQyBhbHMgTnV0emVyIHVuZAorICAgICBRdWVyeVVzZXIoKSBpbSBOUEMgd2llZGVydW0gZGVuIFNwaWVsZXIuCisgICAgIAorU0lFSEUgQVVDSDoKKyAgICAgUmVnaXN0ZXJIZWxwZXJOUEMoKSwgZ2V0X2tpbGxlcl9wbGF5ZXIoKQorICAgICBQX1dPUk4sIFBfV0lFTERFRAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorMTIuMTEuMjAxMywgWmVzc3RyYQorCmRpZmYgLS1naXQgYS9kb2MvbGZ1bi9RdWVyeVZhbGlkT2JqZWN0IGIvZG9jL2xmdW4vUXVlcnlWYWxpZE9iamVjdApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi40NjIyZDY1Ci0tLSAvZGV2L251bGwKKysrIGIvZG9jL2xmdW4vUXVlcnlWYWxpZE9iamVjdApAQCAtMCwwICsxLDQ3IEBACitRdWVyeVZhbGlkT2JqZWN0KCkKKworRlVOS1RJT046CisgICAgIHB1YmxpYyBpbnQgUXVlcnlWYWxpZE9iamVjdChzdHJpbmcgb25hbWUpOworCitERUZJTklFUlQgSU46CisgICAgIC9zdGQvdmlydHVhbC92X2NvbXBpbGVyLmMKKworQVJHVU1FTlRFOgorICAgICBvbmFtZQorICAgICAgIE9iamVrdG5hbWUsIGRlciBnZXBydWVmdCB3ZXJkZW4gc29sbCAoa29tcGxldHRlciBQZmFkIG1pdCAvIGFtIEFuZmFuZykgCisKK1JVZUNLR0FCRVdFUlQ6CisgICAgIDw9MCAtIGZhbGxzIFZDIG5pY2h0IHp1c3RhZW5kaWcgaXN0LgorICAgICA+MCAtIGZhbGxzIGRlciBWQyBzaWNoIGZ1ZXIgZGFzIE9iamVrdCB6dXN0YWVuZGlnIGVya2xhZXJ0LgorCitCRVNDSFJFSUJVTkc6CisgICAgIFVlYmVyIGRpZSBGdW5rdGlvbiBsYWVzc3Qgc2ljaCBoZXJhdXNmaW5kZW4sIG9iIGVpbiBWQyBzaWNoIGZ1ZXIgZGFzCisgICAgIGdld3VlbnNjaHRlIE9iamVrdCB6dXN0YWVuZGlnIGZ1ZWhsdC4gRGFiZWkgd2lyZCBWYWxpZGF0ZSgpLAorICAgICBQX0NPTVBJTEVSX1BBVEgsIE5vUGFyYU9iamVjdHMoKSB1bmQgUF9QQVJBIGltIFZDIGF1c2dld2VydGV0OgorICAgICAxLiBadWVyc3Qgd2lyZCBtaXQgVmFsaWRhdGUoKSBnZXBydWVmdCwgb2IgZGVyIEZpbGVuYW1lIChvaG5lIFBmYWQpIG9rIGlzdC4KKyAgICAgMi4gd2lyZCBnZWd1Y2t0LCBvYiBkYXMgYW5nZWZyYWd0ZSBPYmpla3QgaW0gcmljaHRpZ2VuIFBmYWQgbGllZ3QgCisgICAgICAgIChQX0NPTVBJTEVSX1BBVEgpLgorICAgICAzLiB3ZW5uIGRhcyBhbmdlZnJhZ3RlIE9iamVrdCBlaW4gUGFyYS1PYmpla3QgaXN0OgorICAgICAgIGEpIHdpcmQgTm9QYXJhT2JqZWN0cygpIGdlcHJ1ZWZ0LCB3ZW5uIGRhcyAhPTAgaXN0LCBzaW5kIGdhciBrZWluZSBQYXJhLQorICAgICAgICAgIE9iamVrdGUgZXJsYXVidC4KKyAgICAgICBiKSB3aXJkIFBfUEFSQSBfaW0gVkNfIGFiZ2VmcmFndCwgZG9ydCBrYW5uIG1hbiBlaW4gQXJyYXkgYWxsZXIgCisgICAgICAgICAgZXJsYXVidGVuIFBhcmEtRGltZW5zaW9uZW4gcmVpbnNjaHJlaWJlbi4gRnVlciBhbGxlIGFuZGVyZW4gZXJrbGFlcnQgCisgICAgICAgICAgc2ljaCBkZXIgVkMgZnVlciBuaWNodCB6dXN0YWVuZGlnLiBXZW5uIFBfUEFSQSBuaWNodCBnZXNldHp0IGlzdCwgCisgICAgICAgICAgc2luZCBhbGxlIGVybGF1YnQuIEVpbiBsZWVyZXMgQXJyYXkgKHt9KSB3dWVyZGUgZWluZW0gCisgICAgICAgICAgTm9QYXJhT2JqZWN0cygpIHtyZXR1cm4gMTt9IGVudHNwcmVjaGVuLgorCitCRU1FUktVTkdFTjoKKyAgICAgRGllc2UgRnVua3Rpb24gd2lyZCB2b20gbW92ZSBhYmdlZnJhZ3QuIEJpdHRlIGF1ZiBqZWRlbiBGYWxsIFBfUEFSQSBvZGVyCisgICAgIE5vUGFyYU9iamVjdHMoKSBwYXNzZW5kIGRlZmluaWVyZW4sIHNvbnN0IGJ1Z2d0cy4KKworICAgICBXZW5uIGplbWFuZCBtaXQgZGVtIG9iZW4gYmVzY2hyaWViZW4gU3RhbmRhcmR2ZXJoYWx0ZW4gbmljaHQgZ2x1ZWNrbGljaAorICAgICBpc3QsIGthbm4gbWFuIGRpZSBGdW5rdGlvbiBwYXNzZW5kIHVlYmVyc2NocmVpYmVuLgorCisKK1NJRUhFIEFVQ0g6CisgICAgIHZpcnR1YWxfY29tcGlsZXIKKyAgICAgQ3VzdG9taXplT2JqZWN0KCksIFZhbGlkYXRlKCksIE5vUGFyYU9iamVjdHMoKSwgCisgICAgIFBfQ09NUElMRVJfUEFUSCwgUF9QQVJBCisgICAgIC9zdGQvdmlydHVhbC92X2NvbXBpbGVyLmMKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKzIxLjEwLjIwMDcsIFplc3N0cmEKZGlmZiAtLWdpdCBhL2RvYy9sZnVuL1JlY2VpdmVNc2cgYi9kb2MvbGZ1bi9SZWNlaXZlTXNnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjY0NDNiY2QKLS0tIC9kZXYvbnVsbAorKysgYi9kb2MvbGZ1bi9SZWNlaXZlTXNnCkBAIC0wLDAgKzEsMjUwIEBACitSZWNlaXZlTXNnKCkKKworcHVibGljIHZhcmFyZ3MgaW50IFJlY2VpdmVNc2coc3RyaW5nIG1zZywgaW50IG1zZ190eXAsIHN0cmluZyBtc2dfYWN0aW9uLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RyaW5nIG1zZ19wcmVmaXgsIG1peGVkIG9yaWdpbikKKworREVGSU5JRVJUIElOOgorICAgIC9zdGQvbGl2aW5nL2NvbW0uYworICAgIC9zdGQvbnBjL2NvbW0uYworICAgIC9zdGQvcGxheWVyL2NvbW0uYworICAgIC9zdGQvcm9vbS9pdGVtcy5jCisKK0FSR1VNRU5URToKKyAgICBzdHJpbmcgbXNnCisgICAgICBTdHJpbmcgbWl0IGRlciB1ZWJlcm1pdHRlbHRlbiBOYWNocmljaHQuIE11c3MgbmljaHQgdW1nZWJyb2NoZW4gc2VpbiwKKyAgICAgIGRhIFJlY2VpdmVNc2coKSBkYXMgZWJlbmZhbGxzIGVybGVkaWd0LgorICAgIGludCBtc2dfdHlwCisgICAgICBOYWNocmljaHRlbnR5cChlbikgZnVlciBGaWx0ZXJ1bmcgdW5kIEZsYWdzIGZ1ZXIgQmVoYW5kbHVuZy9VbWJydWNoLgorICAgICAgU2llaGUgdW50ZW4gZnVlciBtaXQgfCBrb21iaW5pZXJiYXJlIEtvbnN0YW50ZW4uCisgICAgc3RyaW5nIG1zZ19hY3Rpb24gKG9wdGlvbmFsKQorICAgICAgQXVzbG9lc2VuZGUgQWt0aW9uLCB3aXJkIGF1Y2ggZnVlciBJZ25vcmllcmVuIHZlcndlbmRldC4KKyAgICAgIERlZmF1bHQgaXN0IHF1ZXJ5X3ZlcmIoKS4gU2llaGUgdW50ZW4gZnVlciBhbHRlcm5hdGl2ZSBLb25zdGFudGVuLgorICAgIHN0cmluZyBtc2dfcHJlZml4IChvcHRpb25hbCkKKyAgICAgIFN0cmluZywgd2VsY2hlciBnZ2YuIGltIGJyZWFrX3N0cmluZygpIGFscyBpbmRlbnQgdmVyd2VuZGV0IHdpcmQuCisgICAgICBEZWZhdWx0IGlzdCAwIChrZWluIEluZGVudCkKKyAgICBtaXhlZCBvcmlnaW4gKDxvYmplY3Q+KSAob3B0aW9uYWwpCisgICAgICBEYXMgZGllIE1lbGR1bmcgYXVzbG9lc2VuZGUgT2JqZWt0LCB3aXJkIGZ1ZXIgSWdub3JpZXJlbiB2ZXJ3ZW5kZXQuCisgICAgICBEZWZhdWx0OiBwcmV2aW91c19vYmplY3QoKQorCitCRVNDSFJFSUJVTkc6CisgICAgUmVjZWl2ZU1zZygpIHdpcmQgYmVudXR6dCwgdW0gZWluZW0gTGViZXdlc2VuIGVpbmUgTmFjaHJpY2h0IHp1IHNlbmRlbi4KKyAgICBEYWJlaSBydWZ0IGVzIGRhcyBzb25zdCB1ZWJsaWNoZSB0ZWxsX29iamVjdCgpIGZ1ZXIgU3BpZWxlciBiencuCisgICAgY2F0Y2hfdGVsbCgpIGltIE5QQyBhdWYuCisKKyAgICBHZXJhZGUgZnVlciBOYWNocmljaHRlbiBhbiBTcGllbGVyIGJpZXRldCBkaWUgTWV0aG9kZSB3ZWl0ZXJlIEZlYXR1cmVzLAorICAgIGRpZSBiaXNoZXIgc29uc3QgaGFlbmRpc2NoIHp1IGltcGxlbWVudGllcmVuIHdhcmVuOgorICAgIDEpIFBydWVmdW5nIGF1ZiBFbXBmYW5nYmFya2VpdCwgamUgbmFjaCAnbXNnX3R5cCcsIHpCCisgICAgICAgTVRfTE9PSyBudXIgYW4gTmljaHRibGluZGUKKyAgICAgICBNVF9MSVNURU4gbnVyIGFuIE5pY2h0dGF1YmUKKyAgICAgICBNVF9ERUJVRyBudXIgYW4gTWFnaWVyL1Rlc3RzcGllbGVyCisgICAgMikgUHJ1ZWZlbiBhdWYgSWdub3JpZXJlbiB2b24KKyAgICAgICAtIEFrdGlvbiAoJ21zZ19hY3Rpb24nKQorICAgICAgICAgLSBtaXQgJ21zZ19hY3Rpb24nIHx8IHF1ZXJ5X3ZlcmIoKQorICAgICAgIC0gVXJoZWJlciAoJ29yaWdpbicpCisgICAgICAgICAtIGZ1ZXIgc2VuZGVuZGUgU3BpZWxlciBtaXQgb3JpZ2luLT5xdWVyeV9yZWFsbmFtZSgpCisgICAgICAgICAtIGZ1ZXIgc2VuZGVuZGUgTlBDcyBtaXQgb3JpZ2luLT5OYW1lKFJBVykpCisgICAgMykgU3BlaWNoZXJ1bmcgaW4gZGVyIHRtaGlzdCAoVHlwIE1UX0NPTU0pCisgICAgNCkgU3BlaWNoZXJ1bmcgaW0gS29ib2xkIChUeXAgTVRfQ09NTSArIGFrdGl2ZXIgS29ib2xkKQorICAgIDUpIFVtYnJlY2hlbiB1bnRlciBCZXJ1ZWNrc2ljaHRpZ3VuZyB2b24gaW5kZW50LCAnbXNnX3R5cCctRmxhZ3MKKyAgICAgICBmdWVyIFVtYnJ1Y2ggdW5kIFBfUFJFUEVORF9CUworCisgICAgUmFldW1lIGRlZmluaWVyZW4gc3RhbmRhcmRtYWVzc2lnIGViZW5mYWxscyBlaW4gUmVjZWl2ZU1zZygpLCB3ZWxjaGVzIGluCisgICAgamVkZW0gT2JqZWt0IGltIFJhdW0gUmVjZWl2ZU1zZygpIG1pdCBkZW4gdWViZXJnZWJlbmVuIEFyZ3VtZW50ZW4gYXVmcnVmdC4KKyAgICBJbiBkaWVzZW0gRmFsbCBpc3QgZGVyIFJ1ZWNrZ2FiZSBkZXIga2xlaW5zdGUgdm9uIGFsbGVuIGdlcnVmZW5lbgorICAgIFJlY2VpdmVNc2coKSB6dXJ1ZWNrZ2VsaWVmZXJ0ZSBXZXJ0LgorICAgIAorUlVlQ0tHQUJFV0VSVDoKKyAgICA+IDAgZnVlciBFcmZvbGcsIDwgMCBmdWVyIE1pc3NlcmZvbGcsIHMudS4KKyAgICBNU0dfREVMSVZFUkVEICAgIGJlaSBlcmZvbGdyZWljaGVyIFp1c3RlbGx1bmcKKyAgICBNU0dfQlVGRkVSRUQgICAgIGJlaSBad2lzY2hlbnNwZWljaGVydW5nIGR1cmNoIGRlbiBLb2JvbGQKKworICAgIE1TR19GQUlMRUQgICAgICAgbmljaHQgbmFlaGVyIHNwZXppZml6aWVydGVyIEZlaGxlciBiZWkgWnVzdGVsbHVuZworICAgIE1TR19JR05PUkVEICAgICAgTmFjaHJpY2h0IHd1cmRlIGlnbm9yaWVydCAoQWJzZW5kZXIsIG9yaWdpbikKKyAgICBNU0dfVkVSQl9JR04gICAgIE5hY2hyaWNodCB3dXJkZSBpZ25vcmllcnQgKEtvbW1hbmRvdmVyYiwgbXNnX2FjdGlvbikKKyAgICBNU0dfTVVEX0lHTiAgICAgIEFic2VuZGVuZGVzIE11ZCB3dXJkZSBpZ25vcmllcnQuCisgICAgTVNHX1NFTlNFX0JMT0NLICBQYXNzZW5kZSBTaW5uZSBkZXMgRW1wZmFlbmdlciBzaW5kIGJsb2NraWVydCAoei5CLgorICAgICAgICAgICAgICAgICAgICAgYmxpbmQsIHRhdWIpCisgICAgTVNHX0JVRkZFUl9GVUxMICBLb2JvbGQga2FubiBzaWNoIG5pY2h0cyBtZWhyIG1lcmtlbgorCitCRU1FUktVTkdFTjoKKyAgICBGdWVyIHNhZW10bGljaGUgQWx0ZXJuYXRpdm1lbGR1bmdlbiBpbSBGYWxsZSBlaW5lciBuaWNodCBlcmZvbGdyZWljaAorICAgIHp1Z2VzdGVsbHRlbiBOYWNocmljaHQgaXN0IGRlciBBdWZydWZlciB2b24gUmVjZWl2ZU1zZygpIHZlcmFudHdvcnRsaWNoLgorCisgICAgTlBDczoKKyAgICAqIFJlY2VpdmVNc2coKSBydWZ0IHp3ZWNrcyBBYndhZXJ0c2tvbXBhdGliaWxpdGFldCBjYXRjaF90ZWxsKCkgYXVmCisgICAgKiBlbXBmb2hsZW4gaXN0LCBpbiBOUENzIG51biBSZWNlaXZlTXNnKCkgenUgdWViZXJzY2hyZWliZW4uCisgICAgICAqIGNhdGNoX3RlbGwoKSBtdXNzIHdlaXRlcmhpbiBmdWVyIGFuZGVyZSB0ZWxsX29iamVjdCgpCisgICAgICAgIHVlYmVyc2NocmllYmVuICB3ZXJkZW4KKworQkVJU1BJRUxFOgorICAgICMxLjEgTmFjaHJpY2h0IGFuIGVpbmVuIFNwaWVsZXIsIHpCIGluIGRlciBXdWVzdGUKKyAgICB0aGlzX3BsYXllcigpLT5SZWNlaXZlTXNnKCJEaWUgU29ubmUgYnJlbm50IGRpciBhdWYgZGVuIEtvcGYuIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE1UX0ZFRUx8TVRfTE9PSyk7CisKKyAgICAjMS4yIE5hY2hyaWNodCBhbiBlaW5lbiBTcGllbGVyIHZvbiBlaW5lbSBOUEMgbWl0IEluZGVudAorICAgIC8vIGJlaSBha3RpdmVtIEVkaXRvcitLb2JvbGQgbGFuZGV0IGRpZXNlciBUZXh0IGF1Y2ggaW0gS29ib2xkCisgICAgdGhpc19wbGF5ZXIoKS0+UmVjZWl2ZU1zZygiRHUgaGF1c3QgamEgZ2FueiBzY2hvZW4gcmVpbiEiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTVRfQ09NTXxNVF9GQVJ8TVNHX0RPTlRfU1RPUkUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBNQV9URUxMLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIkFya3NoYXQgdGVpbHQgZGlyIG1pdDogIik7CisKKyAgICAjMS4zIE5hY2hyaWNodCBhbiBlaW5lbiBTcGllbGVyIG1pdCBGYWxsYmFjay1LYXNrYWRlCisgICAgLy8gQWNodHVuZywgYmVpIE1UX0NPTU0gb2RlciBJZ25vcmllcmVuIGdpYnQgZXMgbmF0dWVybGljaCBhdWNoCisgICAgLy8gTWlzc2VyZm9sZ3MtUnVlY2tnYWJlbi4gQmVpIGVpbmVtIG5vcm1hbGVuIEtvbW1hbmRvIHdpZSBkaWVzZW0KKyAgICAvLyBoaWVyIGlzdCBkYXMgdW5wcm9ibGVtYXRpc2NoIHVuZCBkYWhlciBzaW5udm9sbDoKKyAgICBpZih0aGlzX3BsYXllcigpLT5SZWNlaXZlTXNnKAorICAgICAgICAgIkR1IGRydWVja3N0IGRlbiBLbm9wZiB1bmQgZXMgb2VmZm5ldCBzaWNoIGtuaXJzY2hlbmQgIgorICAgICAgICAgImVpbiBrbGVpbmVzIEZhY2ggaW4gZGVyIFdhbmQuIiwgTVRfTE9PSykgPCBNU0dfREVMSVZFUkVEICYmCisgICAgICAgdGhpc19wbGF5ZXIoKS0+UmVjZWl2ZU1zZygKKyAgICAgICAgICJEdSBkcnVlY2tzdCBkZW4gS25vcGYgdW5kIGlyZ2VuZCBldHdhcyBzY2hlaW50IHNpY2ggIgorICAgICAgICAgImtuaXJzY2hlbmQgenUgb2VmZm5lbi4gRGFzIEdlcmFldXNjaCBrYW0gdm9uIGRlciBXYW5kLiIsCisgICAgICAgICBNVF9MSVNURU4pIDwgTVNHX0RFTElWRVJFRCkgLy8gbGVpZGVyIGJsaW5kIFVORCB0YXViIC4uLiBhbHNvOgorICAgICAgdGhpc19wbGF5ZXIoKS0+UmVjZWl2ZU1zZygKKyAgICAgICAgIkR1IGRydWVja3N0IGRlbiBLbm9wZiB1bmQgaXJnZW5kIGV0d2FzIHNjaGVpbnQgenUgcGFzc2llcmVuLCAiCisgICAgICAgICJhYmVyIGxlaWRlciBzaWVoc3QgdW5kIGhvZXJzdCBkdSBuaWNodHMuIiwgTVRfRkVFTCk7CisKKworICAgICMyLjEgSW0gTlBDIGFscyBFbXBmYWVuZ2VyIGF1ZiBlaW4gVE0gcmVhZ2llcmVuCisgICAgcHVibGljIHZhcmFyZ3MgaW50IFJlY2VpdmVNc2coc3RyaW5nIG1zZywgaW50IG1zZ190eXAsIHN0cmluZyBtc2dfYWN0aW9uLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cmluZyBtc2dfcHJlZml4LCBtaXhlZCBvcmlnaW4pIHsKKyAgICAgIGludCByZXQgPSBNU0dfREVMSVZFUkVEOyAgLy8gRGVmYXVsdAorCisgICAgICAvLyBlaW5lIE9PQy1Lb21tdW5pa2F0aW9uPworICAgICAgaWYobXNnX3R5cCZNVF9DT01NKSB7CisgICAgICAgIGlmKHN0cnN0cihtc2csICJoaWxmZSIpPj0wKQorICAgICAgICAgIGlmKGVudmlyb25tZW50KG9yaWdpbik9PWVudmlyb25tZW50KCkpIHsKKyAgICAgICAgICAgIG9yaWdpbi0+UmVjZWl2ZU1zZygiSWNoIHdlcmQgZGlyIGdsZWljaCBoZWxmZW4hIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBNVF9DT01NfE1TR19ET05UX1NUT1JFLCBNQV9URUxMLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJBcmtzaGF0IHRlaWx0IGRpciBtaXQ6ICIpOworICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICBvcmlnaW4tPlJlY2VpdmVNc2coIkhpbGYgZGlyIHNlbGJzdCwgZGFubiBoaWxmdCBkaXIgR290dCEiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE1UX0NPTU18TVRfRkFSfE1TR19ET05UX1NUT1JFLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE1BX1RFTEwsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIkFya3NoYXQgdGVpbHQgZGlyIG1pdDogIik7CisgICAgICAgICAgfQorICAgICAgICBlbHNlIGlmKC4uLikKKyAgICAgICAgWy4uLl0KKyAgICAgIH0gZWxzZSBpZihtc2dfdHlwJk1UX0xJU1RFTiAmJiBtc2dfYWN0aW9uPT1NQV9TQVkpIHsKKyAgICAgICAgWy4uLl0KKyAgICAgIH0KKworICAgICAgcmV0dXJuIHJldDsKKyAgICB9CisKKworICAgICMzLjEgYWxzIFNlbmRlciBhbiB2aWVsZSwgVmFyaWFudGUgbWl0IGVpZ2VuZW0gZmlsdGVyCisgICAgLy8gQWNodHVuZzogc2llaGUgMy4zLiBzZW5kX3Jvb20oKSBsb2VzdCB2aWVsZXMuCisgICAgLy8gTGl2aW5nIG5pY2t0IG51ciBzZWluZW4gTmljaHRnZWduZXJuIHp1CisgICAgb2JqZWN0ICphbGwgPSBmaWx0ZXIoYWxsX2ludmVudG9yeShlbnZpcm9ubWVudCh0aGlzX3BsYXllcigpKSksCisgICAgICAgICAgICAgICAgICAgICAgICAgIydsaXZpbmcpIC0gKHt0aGlzX3BsYXllcigpfSk7CisgICAgYWxsIC09IHRoaXNfcGxheWVyKCktPlByZXNlbnRFbmVtaWVzKCk7CisgICAgYWxsLT5SZWNlaXZlTXNnKHRoaXNfcGxheWVyKCktPk5hbWUoKSsKKyAgICAgICAgICAgICAgICAgICAgIiBuaWNrdCBkaXIgdmVyc3RvaGxlbiB6dSB1bmQgc2NoZWludCBiZXJlaXQuIiwKKyAgICAgICAgICAgICAgICAgICAgTVRfTE9PSywgTUFfRU1PVEUpOworCisgICAgIzMuMiBhbHMgU2VuZGVyIGFuIHZpZWxlLCBWYXJpYW50ZSBtaXQgZWluemVsbmVtIEl0ZXJpZXJlbgorICAgIC8vIEFjaHR1bmc6IHNpZWhlIDMuMy4gc2VuZF9yb29tKCkgbG9lc3QgdmllbGVzLgorICAgIC8vIExpdmluZyB0cmlua3QgZXR3YXMsIGplZGVyIGltIFJhdW0gc29sbCBlcyBzZWhlbiBvZGVyIGhvZXJlbgorICAgIG9iamVjdCBvYiA9IGZpcnN0X2ludmVudG9yeShlbnZpcm9ubWVudCh0aGlzX3BsYXllcigpKSk7CisgICAgZG8geworICAgICAgaWYobGl2aW5nKG9iKSAmJiBvYiE9dGhpc19wbGF5ZXIoKSkKKyAgICAgICAgb2ItPlJlY2VpdmVNc2codGhpc19wbGF5ZXIoKS0+TmFtZSgpKyIgdHJpbmt0IGVpbmVuIFNjaG5hcHMgYXVzLiIsCisgICAgICAgICAgICAgICAgICAgICAgIE1UX0xPT0t8TVRfTElTVEVOLAorICAgICAgICAgICAgICAgICAgICAgICBNQV9EUklOSyk7CisgICAgICBvYiA9IG5leHRfaW52ZW50b3J5KG9iKTsKKyAgICB9IHdoaWxlKG9iKTsKKworICAgICMzLjMgYWxzIFNlbmRlciBhbiB2aWVsZSwgVmFyaWFudGUgbWl0IHNlbmRfcm9vbQorICAgIC8vIExpdmluZyBncnVlc3N0IHNlaW5lIEZyZXVuZGUKKyAgICAvLyBzZW5kX3Jvb20oKSBydWZ0IFJlY2VpdmVNc2cgbWl0IGFsbGVuIGVudHNwcmVjaGVuZGVuIFBhcmFtZXRlcm4KKyAgICBvYmplY3QgKmV4Y2x1ZGUgPSB0aGlzX3BsYXllcigpLT5QcmVzZW50RW5lbWllcygpOworICAgIHNlbmRfcm9vbSh0aGlzX29iamVjdCgpLAorICAgICAgICAgICAgICB0aGlzX3BsYXllcigpLT5OYW1lKCkrIiBncnVlc3N0IGRpY2guIiwKKyAgICAgICAgICAgICAgTVRfTE9PS3xNVF9MSVNURU4sCisgICAgICAgICAgICAgIE1BX0VNT1RFLAorICAgICAgICAgICAgICAwLAorICAgICAgICAgICAgICBleGNsdWRlKTsKKworICAgICMzLjQgYWxzIFNlbmRlciBhbiB2aWVsZSBtaXQgc2VuZF9yb29tIHVuZCBSZWNlaXZlTXNnKCkKKyAgICAvLyBMaXZpbmcgZ3J1ZXNzdCBzZWluZSBGcmV1bmRlLCBzZWluZSBGZWluZGUgc2VoZW4gZGFzCisgICAgLy8gc2VuZF9yb29tKCkgcnVmdCBSZWNlaXZlTXNnIG1pdCBhbGxlbiBlbnRzcHJlY2hlbmRlbiBQYXJhbWV0ZXJuCisgICAgb2JqZWN0ICpleGNsdWRlID0gdGhpc19wbGF5ZXIoKS0+UHJlc2VudEVuZW1pZXMoKTsKKyAgICBzZW5kX3Jvb20odGhpc19vYmplY3QoKSwKKyAgICAgICAgICAgICAgdGhpc19wbGF5ZXIoKS0+TmFtZSgpKyIgZ3J1ZXNzdCBkaWNoLiIsCisgICAgICAgICAgICAgIE1UX0xPT0t8TVRfTElTVEVOLCBNQV9FTU9URSwgMCwgZXhjbHVkZSk7CisgICAgZXhjbHVkZS0+UmVjZWl2ZU1lc3NhZ2UoCisgICAgICB0aGlzX3BsYXllcigpLT5OYW1lKCkrIiBncnVlc3N0LCBhYmVyIG5pY2h0IGRpY2guIiwKKyAgICAgIE1UX0xPT0t8TVRfTElTVEVOLCBNQV9FTU9URSk7CisKK0tPTlNUQU5URU4gRlVFUiBQQVJBTUVURVI6CisgICAgU2FlbXRsaWNoIGluICIvc3lzL2xpdmluZy9jb21tLmgiLiBIaWVyIG5pY2h0IG5vdHdlbmRpZ2Vyd2Vpc2UKKyAgICBpbW1lciBha3R1ZWxsIG9kZXIgdm9sbHN0YWVuZGlnLgorCisgICAgPG1zZ190eXA+CisgICAgICBNVF9VTktOT1dOICAgICAgdW5zcGV6LiBOYWNocmljaHRlbnR5cCAobmljaHQgdmVyd2VuZGVuKS4gRXMgd2lyZAorICAgICAgICAgICAgICAgICAgICAgIHZlcnN1Y2h0LCBhdWZncnVuZCA8bXNnX2FjdGlvbj4gZGVuIFR5cCB6dSBlcnJhdGVuLgorICAgICAgTVRfTE9PSyAgICAgICAgIGFsbGVzLCB3YXMgbWFuIHNpZWh0CisgICAgICBNVF9MSVNURU4gICAgICAgYWxsZXMsIHdhcyBtYW4gaG9lcnQKKyAgICAgIE1UX0ZFRUwgICAgICAgICBhbGxlcywgd2FzIG1hbiBmdWVobHQKKyAgICAgIE1UX1RBU1RFICAgICAgICBhbGxlcywgd2FzIG1hbiBzY2htZWNrdAorICAgICAgTVRfU01FTEwgICAgICAgIGFsbGVzLCB3YXMgbWFuIHJpZWNodAorICAgICAgTVRfTUFHSUMgICAgICAgIGFsbGUgc29uc3RpZ2VuICh1ZWJlcnNpbm5saWNoZW4pIFdhaHJuZWhtdW5nZW4KKyAgICAgIE1UX05PVElGSUNBVElPTiBTdGF0dXNtZWxkdW5nZW4sIEtvbW1hbmRvYmVzdGFldGlndW5nZW4KKyAgICAgIE1UX0NPTU0gICAgICAgICBhbGxlIE9PQy1Lb21tdW5pa2F0aW9uLCBkLmguIG5pY2h0IGR1cmNoIG8uZy4gU2lubmUKKyAgICAgICAgICAgICAgICAgICAgICBhYmdlZGVja3QuCisgICAgICBNVF9GQVIgICAgICAgICAgYWxsZXMsIHdhcyBhdXMgZGVyIEZlcm5lIC8gZWluZW0gYW5kZXJlbiBSYXVtIGtvbW10LgorICAgICAgICAgICAgICAgICAgICAgIG11c3MgbWl0IG1pbi4gZWluZW0gYW5kZXJlbiBUeXAga29tYmluaWVydCB3ZXJkZW4KKyAgICAgIE1UX0RFQlVHICAgICAgICBEZWJ1Z21lbGR1bmdlbiwgc2VoZW4gbnVyIE1hZ2llciBpbSBNYWdpZXJtb2R1cworICAgICAgTVRfTkVXUyAgICAgICAgIE1haWxzICYgTVBBCisKKyAgICAgIE1TR19ET05UX0JVRkZFUiBOYWNocmljaHQgZGFyZiBuaWNodCBpbSBLb2JvbGQgZ2VzcGVpY2hlcnQgd2VyZGVuCisgICAgICBNU0dfRE9OVF9TVE9SRSAgTmFjaHJpY2h0IGRhcmYgbmljaHQgaW4gZGllIENvbW0tSGlzdG9yeQorICAgICAgTVNHX0RPTlRfV1JBUCAgIE5hY2hyaWNodCBuaWNodCBwZXIgYnJlYWtfc3RyaW5nIHVtYnJlY2hlbgorICAgICAgTVNHX0RPTlRfSUdOT1JFIE5hY2hyaWNodCBrYW5uIG5pY2h0IGlnbm9yaWVydCB3ZXJkZW4KKworICAgICAgTVNHX0JTX0xFQVZFX0xGUyAgICB3aWUgQlNfTEVBVkVfTVlfTEZTIGZ1ZXIgYnJlYWtfc3RyaW5nKCkKKyAgICAgIE1TR19CU19TSU5HTEVfU1BBQ0Ugd2llIEJTX1NJTkdMRV9TUEFDRSBmdWVyIGJyZWFrX3N0cmluZygpCisgICAgICBNU0dfQlNfQkxPQ0sgICAgICAgIHdpZSBCU19CTE9DSyBmdWVyIGJyZWFrX3N0cmluZygpCisgICAgICBNU0dfQlNfTk9fUEFSSU5ERU5UIHdpZSBCU19OT19QQVJJTkRFTlQgZnVlciBicmVha19zdHJpbmcoKQorICAgICAgTVNHX0JTX0lOREVOVF9PTkNFICB3aWUgQlNfSU5ERU5UX09OQ0UgZnVlciBicmVha19zdHJpbmcoKQorICAgICAgTVNHX0JTX1BSRVBfSU5ERU5UICB3aWUgQlNfUFJFUEVORF9JTkRFTlQgZnVlciBicmVha19zdHJpbmcoKQorCisgICAgPG1zZ19hY3Rpb24+IChvcHRpb25hbCkKKyAgICAgIE1BX1VOS05PV04gICAgIFVuc3Blei4gQWt0aW9uLiBFcyB3aXJkIGRlciBEZWZhdWx0IHF1ZXJ5X3ZlcmIoKQorICAgICAgICAgICAgICAgICAgICAgYmVudXR6dCBiencuIHZlcnN1Y2h0LCBkaWUgQWt0aW9uIHp1IGVycmF0ZW4uCisgICAgICBNQV9QVVQgICAgICAgICBKZW1hbmQgbGVndCBldHdhcyBoaW4gdW5kIGdpYnQgamVtYW5kZW4gZXR3YXMKKyAgICAgIE1BX1RBS0UgICAgICAgIEplbWFuZCBuaW1tdCBldHdhcworICAgICAgTUFfTU9WRV9JTiAgICAgSmVtYW5kIGJldHJpdHQgZGVuIFJhdW0KKyAgICAgIE1BX01PVkVfT1VUICAgIEplbWFuZCB2ZXJsYWVzc3QgZGVuIFJhdW0KKyAgICAgIE1BX01PVkUgICAgICAgIEplbWFuZCBiZXdlZ3Qgc2ljaCAKKyAgICAgIE1BX0ZJR0hUICAgICAgIEplbWFuZCBrYWVtcGZ0CisgICAgICBNQV9XSUVMRCAgICAgICBKZW1hbmQgenVlY2t0IGVpbmUgV2FmZmUKKyAgICAgIE1BX1VOV0lFTEQgICAgIEplbWFuZCBzdGVja3QgZWluZSBXYWZmZSB3ZWcKKyAgICAgIE1BX1dFQVIgICAgICAgIEplbWFuZCB6aWVodCBldHdhcyBhbgorICAgICAgTUFfVU5XRUFSICAgICAgSmVtYW5kIHppZWh0IGV0d2FzIGF1cworICAgICAgTUFfRUFUICAgICAgICAgSmVtYW5kIGlzc3QgZXR3YXMKKyAgICAgIE1BX0RSSU5LICAgICAgIEplbWFuZCB0cmlua3QgZXR3YXMKKyAgICAgIE1BX1NQRUxMICAgICAgIEplbWFuZCB3aXJrdCBlaW5lbiBTcGVsbAorICAgICAgTUFfTE9PSyAgICAgICAgSmVtYW5kIHNpZWh0IGV0d2FzIGFuLCB1bnRlcnN1Y2h0IGV0d2FzCisgICAgICBNQV9MSVNURU4gICAgICBKZW1hbmQgaG9yY2h0IG9kZXIgbGF1c2NodCBhbiBldHdhcworICAgICAgTUFfRkVFTCAgICAgICAgSmVtYW5kIGJldGFzdGV0IGV0d2FzCisgICAgICBNQV9TTUVMTCAgICAgICBKZW1hbmQgc2NobnVlZmZlbHQgaGVydW0KKyAgICAgIE1BX1NFTlNFICAgICAgIEplbWFuZCBtYWNodCBlaW5lIHVlYmVyc2lubmxpY2hlIFdhaHJuZWhtdW5nCisgICAgICBNQV9SRUFEICAgICAgICBKZW1hbmQgbGllc3QgZXR3YXMKKyAgICAgIE1BX1VTRSAgICAgICAgIEplbWFuZCBiZW51dHp0IGV0d2FzCisgICAgICBNQV9TQVkgICAgICAgICBKZW1hbmQgc2FndCBldHdhcworICAgICAgTUFfUkVNT1ZFICAgICAgRXR3YXMgdmVyc2Nod2luZGV0CisgICAgICAvLyBNQV9DSEFUICAgICAgICBDaGF0a3JhbXMgKHouQi4gdGVpbGUtbWl0LCBUZWFta2FtcGZjaGF0KQorICAgICAgTUFfQ0hBTk5FTCAgICAgRWJlbmVuCisgICAgICBNQV9FTU9URSAgICAgICAocilFbW90ZXMsIFNvdWx2ZXJiZW4gKHJlbW90ZXMgbWl0IFR5cCBNVF9DT01NfE1UX0ZBUikKKyAgICAgIE1BX1NIT1VUICAgICAgIFJ1ZmVuIChuaWNodDogc2hvdXQoKSEpCisgICAgICBNQV9TSE9VVF9TRUZVTiBSdWZlbiB1ZWJlciBzaG91dChTRSkKKworU0lFSEUgQVVDSDoKKyAgICBWZXJ3YW5kdDogc2VuZF9yb29tKFNFKQorICAgIExmdW5zOiAgICBUZXN0SWdub3JlKEwpCisgICAgRWZ1bnM6ICAgIHRlbGxfb2JqZWN0KEUpLCBjYXRjaF90ZWxsKEwpLCBjYXRjaF9tc2coTCkKKyAgICAgICAgICAgICAgcXVlcnlfdmVyYihFKSwgcXVlcnlfb25jZV9pbnRlcmFjdGl2ZShFKSwgYnJlYWtfc3RyaW5nKFNFKQorCisxMy4wMy4yMDE2LCBaZXNzdHJhCisKZGlmZiAtLWdpdCBhL2RvYy9sZnVuL1JlZ2lzdGVyRXZlbnQgYi9kb2MvbGZ1bi9SZWdpc3RlckV2ZW50Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjhiYzVkOGQKLS0tIC9kZXYvbnVsbAorKysgYi9kb2MvbGZ1bi9SZWdpc3RlckV2ZW50CkBAIC0wLDAgKzEsODIgQEAKKworRlVOS1RJT046CisgICAgIGludCBSZWdpc3RlckV2ZW50KHN0cmluZyBlaWQsIHN0cmluZyBmdW4sIG9iamVjdCBsaXN0ZW5lcik7CisKK0RFRklOSUVSVCBJTjoKKyAgICAgL3AvZGFlbW9uL2V2ZW50ZC5jCitERUtMQVJJRVJUIElOOgorICAgICAvc3lzL2V2ZW50cy5oCisKK0FSR1VNRU5URToKKyAgICAgc3RyaW5nIGVpZCwKKyAgICAgICBEaWUgSUQgZGVzIEV2ZW50cywgZnVlciBkZW4gbWFuIHNpY2ggcmVnaXN0cmllcmVuIHdpbGwuIERhIGRpZXNlcgorICAgICAgIFN0cmluZyBmdWVyIGFsbGUgRXZlbnRzIGpld2VpbHMgZWluZGV1dGlnIHNlaW4gbXVzcywgZW1wZmllaGx0IGVzIHNpY2gsCisgICAgICAgZnVlciBlaWdlbmUgRXZlbnRzIHouQi4gYWxzIFByYWVmaXggZGVuIGVpZ2VuZW4gTWFnaWVybmFtZW4genUgbmVobWVuLAorICAgICAgIHouQi4gInplc3N0cmFfdnVsa2FuYXVzYnJ1Y2giLgorICAgICAgIEFDSFRVTkc6IElEcywgZGllIG1pdCAnX2V2dF9saWJfJyBiZWdpbm5lbiwgc2luZCBBVVNTQ0hMSUVTU0xJQ0ggZGVyCisgICAgICAgTXVkbGliIHZvcmJlaGFsdGVuIQorICAgICBzdHJpbmcgZnVuLAorICAgICAgIE5hbWUgZGVyIEZ1bmt0aW9uLCBkaWUgaW0gT2JqZWt0IGxpc3RlbmVyIGJlaSBBdWZ0cmV0ZW4gZGVzIEV2ZW50cworICAgICAgIGdlcnVmZW4gd2VyZGVuIHNvbGwuCisgICAgIG9iamVjdCBsaXN0ZW5lciwKKyAgICAgICBEYXMgT2JqZWt0LCBkYXMgYWxzIExhdXNjaGVyIGZ1ZXIgZGllc2VuIEV2ZW50IHJlZ2lzdHJpZXJ0IHdlcmRlbiBzb2xsLgorCitCRVNDSFJFSUJVTkc6CisgICAgIERhcyBPYmpla3QgJ2xpc3RlbmVyJyB3aXJkIGFscyBMYXVzY2hlciBkaWVzZXMgRXZlbnRzIHJlZ2lzdHJpZXJ0LiBBYgorICAgICBkaWVzZW0gTW9tZW50IHdpcmQgaW1tZXIgZGFubiwgd2VubiBlaW4gRXZlbnQgbWl0IGRlciBJRCAnZWlkJyBhdXNnZWxvZXN0CisgICAgIHdpcmQsIGluICdsaXN0ZW5lcicgZGllIEZ1bmt0aW9uICdmdW4nIGF1ZmdlcnVmZW4gKHplaXR2ZXJ6b2VnZXJ0LCBtZWlzdAorICAgICAwLTJzKS4KKyAgICAgCisgICAgIERpZSBGdW5rdGlvbiB3aXJkIGRhYmVpIGltbWVyIG1pdCAzIEFyZ3VtZW50ZW4gYXVmZ2VydWZlbjoKKyAgICAgbGlzdGVuZXItPmZ1bihlaWQsIHRyaWdnZXJvYiwgZGF0YSk7CisgICAgIEhpZXJiZWkgaXN0ICdlaWQnIGRpZSBqZXdlaWxpZ2UgRXZlbnQtSUQgdW5kICd0cmlnZ2Vyb2InIGlzdCBkYXMgT2JqZWt0LAorICAgICB3ZWxjaGVzIGRlbiBFdmVudCBhdXNsb2VzdGUuIAorICAgICAnZGF0YScga2FubiBqZWRlciBMUEMtRGF0ZW50eXAgc2VpbiB1bmQgZW50aGFlbHQgZGllIERhdGVuLCBkaWUgZGFzCisgICAgIHRyaWdnZXJuZGUgT2JqZWt0IGFuIGFsbGUgTGlzdGVuZXIgdWViZXJtaXR0ZWxuIHdpbGwgKGRhbWl0IHNpbmQgRGF0ZW50eXAKKyAgICAgdW5kIEluaGFsdCBrb21wbGV0dCBhYmhhZW5naWcgdm9tIEV2ZW50ISkKKworICAgICBFeGlzdGllcnQgYmlzaGVyIG5vY2gga2VpbiBFdmVudCBtaXQgZGVyIElEICdlaWQnLCB3aXJkIGltcGxpeml0IGVpbgorICAgICBuZXVlciBFdmVudCBlcnN0ZWxsdCwgZGVyIGVyc3RtYWwgbnVyIGRhcyBzaWNoIGdlcmFkZSByZWdpc3RyaWVyZW5kZQorICAgICBPYmpla3QgYWxzIExhdXNjaGVyIGhhdC4KKworCitSVWVDS0dBQkVXRVJUOgorICAgICAxIGZ1ZXIgRXJmb2xnLCA8PTAgZnVlciBNaXNzZXJmb2xnLgorICAgICAxICAgLSBFcmZvbGcsICdsaXN0ZW5lcicgd3VyZGUgZWluZ2V0cmFnZW4uCisgICAgIC0xICAtIGZhbHNjaGUgQXJndW1lbnRlIHd1cmRlbiB1ZWJlcmdlYmVuCisgICAgIC0yICAtIG5pY2h0LW9lZmZlbnRsaWNoZXIgRXZlbnQgdW5kICdsaXN0ZW5lcicgd3VyZGUgbmljaHQgZnVlciBkaWVzZW4KKyAgICAgICAgICAgRXZlbnQgZnJlaWdlZ2ViZW4gKG1vbWVudGFuIGdpYnQgZXMgbm9jaCBrZWluZSBuaWNodC1vZWZmZW50bGljaGVuCisgICAgICAgICAgIEV2ZW50cykKKyAgICAgLTMgIC0gJ2Z1bicgaW4gJ2xpc3RlbmVyJyBpc3QgbmljaHQgdm9yaGFuZGVuIG9kZXIgbmljaHQgdm9uIGF1c3NlbiAKKyAgICAgICAgICAgYXVmcnVmYmFyIChwcm90ZWN0ZWQsIHN0YXRpYywgcHJpdmF0ZSkuCisgICAgIAorQkVNRVJLVU5HRU46CisgICAgIFdlbm4gJ2xpc3RlbmVyJyBiZXJlaXRzIGZ1ZXIgZGVuIEV2ZW50IHJlZ2lzdHJpZXJ0IHdpcmQsIHdpcmQgZGllIGFsdGUKKyAgICAgUmVnaXN0cmllcnVuZyB1ZWJlcnNjaHJpZWJlbiAoYWxzIGdnZi4gZ2lsdCBkYW5uIGRlciBqZXR6dCB1ZWJlcmdlYmVuZQorICAgICBGdW5rdGlvbnNuYW1lKS4KKyAgICAgRGllIEZ1bmt0aW9uICdmdW4nIHNvbGx0ZSBzcGFyc2FtIG1pdCBkZW4gRXZhbC1UaWNrcyB1bWdlaGVuLiBNb21lbnRhbgorICAgICBpc3QgZGllIG1heC4gTWVuZ2UgYW4gVGlja3MgYXVmIDMwMDAwIGJlc2NocmFlbmt0LiBEaWVzIGthbm4gYmVpCisgICAgIFByb2JsZW1lbiBhdWNoIGplZGVyemVpdCByZWR1emllcnQgd2VyZGVuIQorICAgICBEZXIgRVZFTlREIG1lcmt0IHNpY2ggRXZlbnQtTGF1c2NoZXIgbmljaHQgdWViZXIgUmVib290cyBoaW5hdXMuCisgICAgIFNvbGx0ZSBzaWNoIGVpbmUgQmx1ZXByaW50IGFubWVsZGVuLCBzaWNoIHplcnN0b2VyZW4gdW5kIG5ldWdlbGFkZW4KKyAgICAgd2VyZGVuLCBpc3QgZGllIG5ldWUgQmx1ZXByaW50IG5vY2ggYW5nZW1lbGRldCwgd2VpbCBkYXMgbmV1ZSBPYmpla3QKKyAgICAgdW50ZXIgZGVtIGFsdGVuIE5hbWVuIHdpZWRlcmdlZnVuZGVuIHdpcmQuIERpZXMgZ2lsdCBfbmljaHRfIGZ1ZXIKKyAgICAgQ2xvbmVzIQorCitCRUlTUElFTEU6CisgICAgIDEuIEVpbiBPYmpla3QgbW9lY2h0ZSB1ZWJlciBTcGllbGVydG9kZSBpbmZvcm1pZXJ0IHdlcmRlbjoKKyAgICAgICAgICBFVkVOVEQtPlJlZ2lzdGVyRXZlbnQoRVZUX0xJQl9QTEFZRVJfREVBVEgsICJzcGllbGVyX2lzdF90b3QiLCAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpc19vYmplY3QoKSk7CisgICAgICAgIEFiIGpldHp0IHdpcmQgaW0gT2JqZWt0IGplZGVzIE1hbCwgd2VubiBlaW4gU3BpZWxlciBzdGlyYnQsIGRpZSAKKyAgICAgICAgRnVua3Rpb24gInNwaWVsZXJfaXN0X3RvdCIgYXVmZ2VydWZlbi4KKworICAgICAyLiBFaW4gT2JqZWt0IHdpbGwgaW5mb3JtaWVydCB3ZXJkZW4sIHdlbm4gZGVyIEV2ZW50CisgICAgICAgICJib2luZ196d2VyZ2Vua29lbmlnX2FuZ3JpZmYiIGF1c2dlbG9lc3Qgd2lyZDoKKyAgICAgICAgICAgRVZFTlRELT5SZWdpc3RlckV2ZW50KCJib2luZ196d2VyZ2Vua29lbmlnX2FuZ3JpZmYiLCJhbGFybSIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpc19vYmplY3QoKSk7CisKK1NJRUhFIEFVQ0g6CisgICAgIGV2ZW50cywgZXZlbnRkLCBVbnJlZ2lzdGVyRXZlbnQoKSwgVHJpZ2dlckV2ZW50KCkKKworLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorTGFzdCBtb2RpZmllZDogMTUuMDguMjAwNywgWmVzc3RyYQpkaWZmIC0tZ2l0IGEvZG9jL2xmdW4vUmVnaXN0ZXJIZWxwZXJOUEMgYi9kb2MvbGZ1bi9SZWdpc3RlckhlbHBlck5QQwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4xNzBlOGIxCi0tLSAvZGV2L251bGwKKysrIGIvZG9jL2xmdW4vUmVnaXN0ZXJIZWxwZXJOUEMKQEAgLTAsMCArMSw4NyBAQAorUmVnaXN0ZXJIZWxwZXJOUEMoKQorRlVOS1RJT046CisgICAgIHB1YmxpYyBpbnQgUmVnaXN0ZXJIZWxwZXJOUEMob2JqZWN0IG5wYywgaW50IGZsYWdzKTsKKworREVGSU5JRVJUIElOOgorICAgICAvc3RkL3BsYXllci9jb21iYXQuYworICAgICAvc3lzL2xpdmluZy9jb21iYXQuaAorCitBUkdVTUVOVEU6CisgICAgIG9iamVjdCBucGMKKyAgICAgICBPYmpla3QgZGVzIGhlbGZlbmRlbiBOUEMsIGRlciBhbmdlbWVsZGV0IHdlcmRlbiBzb2xsLgorCisgICAgIGludCBmbGFncworICAgICAgIHZlci1vZGVyLXRlIEtvbnN0YW50ZW4sIGRpZSBkaWUgQXJ0IGRlcyBIZWxmZXItTlBDIGJlc2NocmVpYmVuIChzLnUuKQorCitCRVNDSFJFSUJVTkc6CisgICAgIE1pdCBkaWVzZXIgRnVua3Rpb24gd2lyZCBlaW4gZWluZW0gU3BpZWxlciBoZWxmZW5kZXIgTlBDIGltIFNwaWVsZXIKKyAgICAgYW5nZW1lbGRldC4gSGllcmR1cmNoIGthbm4gc3BhZXRlciBoZXJhdXNnZWZ1bmRlbiB3ZXJkZW4sIHdlbGNoZSBOUEMKKyAgICAgZWluZW0gU3BpZWxlciBoZWxmZW4gdW5kIGdnZi4gZGVuIHZvbiBkaWVzZW4gdmVydXJzYWNodGVuIFNjaGFkZW4gaW0KKyAgICAgS2FtcGYgZGVtIFNwaWVsZXIgenV6dXJlY2huZW4uCisKKyAgICAgRGllIEZsYWdzIHNpbmQgZWluZSBkZXIgZm9sZ2VuZGVuIEtvbnN0YW50ZW4gb2RlciBlaW5lIGJlbGllYmlnZSBkdXJjaAorICAgICB2ZXItb2Rlci11bmcgZ2ViaWxkZXRlIEtvbWJpbmF0aW9uLgorCisgICAgIE1vbWVudGFuIGdpYnQgZXMgMiBLbGFzc2VuIHZvbiBIZWxmZXItTlBDOgorICAgICArIEdVSUxEX0hFTFBFUjogZGVyIEhlbGZlci1OUEMgaXN0IGVpbiBHaWxkZW4tTlBDCisgICAgICsgTUlTQ19IRUxQRVI6ICBkZXIgSGVsZmVyLU5QQyBpc3QgaXJnZW5kZWluIE5QQywgZGVyIG5pY2h0IHp1IGVpbmVyIEdpbGRlCisgICAgICAgICAgICAgICAgICAgICBnZWhvZXJ0LgorCisgICAgIFp1c2FldHpsaWNoIHp1IGRlbiBLbGFzc2VuIGdpYnQgZXMgbm9jaCB3ZWl0ZXJlIEZsYWdzLCBkaWUgZXR3YXMgdWViZXIKKyAgICAgZGVuIEhlbGZlci1OUEMgc2FnZW46CisKKyAgICAgKyBFWENMVVNJVkVfSEVMUEVSOiBkaWVzZXIgSGVsZmVyLU5QQyBkdWxkZXQga2VpbmVuIHdlaXRlcmVuIE5QQyBkZXIKKyAgICAgICAgICAgICAgICAgICAgICAgICBnbGVpY2hlbiBLbGFzc2UuCisgICAgICsgQUNUSVZFX0hFTFBFUjogaXN0IGRpZXNlcyBGbGFnIGdlc2V0enQsIGlzdCBkZXIgTlBDIG1laHIgYWxzIG51ciByZWluZXIKKyAgICAgICAgICAgICAgICAgICAgICBTY2hsYWdmYWVuZ2VyLgorCisgICAgIFdpcmQgRVhDTFVTSVZFX0hFTFBFUiBnZXNldHp0IHVuZCBlcyBpc3QgaW4gZGVyIGdsZWljaGVuIEtsYXNzZSBzY2hvbiBlaW4KKyAgICAgTlBDIGFuZ2VtZWxkZXQsIHNjaGxhZWd0IGRpZSBSZWdpc3RyaWVydW5nIGZlaGwuCisgICAgIElzdCBpbiBkZXIgZ2xlaWNoZW4gS2xhc3NlIGJlcmVpdHMgZWluIE5QQyBtaXQgRVhDTFVTSVZFX0hFTFBFUgorICAgICBhbmdlbWVsZGV0LCBzY2hsYWVndCBkaWUgUmVnaXN0aWVydW5nIGViZW5mYWxscyBmZWhsLCBhdWNoIHdlbm4gZGVyIG5ldWUKKyAgICAgTlBDIGtlaW4gRVhDTFVTSVZFX0hFTFBFUiBzZXR6dC4KKworUlVlQ0tHQUJFV0VSVDoKKyAgICAgMSwgd2VubiBkaWUgUmVnaXN0cmllcnVuZyBlcmZvbGdyZWljaCB3YXIuCisgICAgIDAgc29uc3QuIEluIGRpZXNlbSBGYWxsIGRhcmYgZGVyIE5QQyBkZW0gU3BpZWxlciBOSUNIVCBoZWxmZW4sIHdlZGVyCisgICAgICAgcGFzc2l2IChTY2hsYWdmYWVuZ2VyKSwgbm9jaCBha3Rpdi4KKworQkVNRVJLVU5HRU46CisgICAgIERpZXNlIEZ1bmt0aW9uIHNldHp0IGJlaSBkZXIgRXJmb2xnIGRpZSBQcm9wZXJ0eSBQX0hFTFBFUl9OUEMgaW4gPG5wYz4KKyAgICAgYXVmIHBhc3NlbmRlIFdlcnRlLgorICAgICBCaXR0ZSBhdWYgZ2FyIGtlaW5lbiBGYWxsIGRpZSBudW1lcmlzY2hlbiBXZXJ0ZSBkZXIgS29uc3RhbnRlbiBmdWVyCisgICAgIDxmbGFncz4gbnV0emVuLCBkaWVzZSBrb2VubmVuIHNpY2ggamVkZXJ6ZWl0IGFlbmRlcm4uCisKK0JFSVNQSUVMRToKKyAgICAgMS4gRWluIG5pY2h0LWV4a2x1c2l2ZXIgR2lsZGVuLU5QQywgZGVyIGRlbSBTcGllbGVyIGZvbGd0LgorICAgICBpZiAoc3BpZWxlci0+UmVnaXN0ZXJIZWxwZXJOUEModGhpc19vYmplY3QoKSwgR1VJTERfSEVMUEVSKSA9PSAxKSB7CisgICAgICAgbW92ZShlbnZpcm9ubWVudChzcGllbGVyKSwgTV9HTyk7CisgICAgICAgc3BpZWxlci0+QWRkUHVyc3Vlcih0aGlzX29iamVjdCgpKTsKKyAgICAgICAvLyBtZWxkdW5nIGF1c2dlYmVuZS4uLgorICAgICB9CisKKyAgICAgMmEuIEVpbiBleGtsdXNpdmVyIE5pY2h0LUdpbGRlbi1OUEMKKyAgICAgaWYgKHNwaWVsZXItPlJlZ2lzdGVySGVscGVyTlBDKHRoaXNfb2JqZWN0KCksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBNSVNDX0hFTFBFUnxFWENMVVNJVkVfSEVMUEVSKSA9PSAxKSB7CisgICAgICAgbW92ZShlbnZpcm9ubWVudChzcGllbGVyKSwgTV9HTyk7CisgICAgIH0KKworICAgICAyYi4gRWluIG5pY2h0LWV4a2x1c2l2ZXIgTmljaHQtR2lsZGUtTlBDLCBkZXIgbmFjaCAyYS4ga29tbXQuCisgICAgIGlmIChzcGllbGVyLT5SZWdpc3RlckhlbHBlck5QQyh0aGlzX29iamVjdCgpLCBNSVNDX0hFTFBFUikgPT0gMSkgeworICAgICAgIC8vIC4uLiB3ZW5uIGRlciBOUEMgYXVzIDJhIG5vY2ggZXhpc3RpZXJ0LCB0cmlmZnQgZGllcyBoaWVyIG5pZSB6dS4KKyAgICAgfQorCisgICAgIDMuIEVpbiBleGtsdXNpdmVyIE5QQywgZGVyIHdlaXRlcmUgR2lsZGVuLSB1bmQgc29uc3RpZ2UgTlBDIGF1c3NjaGxpZXNzdAorICAgICAgICAoU29sY2hlIEtvbWJpbmF0aW9uIGJpdHRlIG1pdCBkZXIgR2lsZGVuLUJhbGFuY2UgYWJzdGltbWVuLikKKyAgICAgaWYgKHNwaWVsZXItPlJlZ2lzdGVySGVscGVyTlBDKHRoaXNfb2JqZWN0KCksIAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIE1JU0NfSEVMUEVSfEdVSUxEX0hFTFBFUnxFWENMVVNJVkVfSEVMUEVSKSA9PSAxKSB7CisgICAgICAgbW92ZShlbnZpcm9ubWVudChzcGllbGVyKSwgTV9HTyk7CisgICAgIH0KKworICAgICA0LiBEaWUgUmVnaXN0cmllcnVuZyBvaG5lIEtsYXNzZSBzY2hsYWVndCBmZWhsLCB6LkIuOgorICAgICAgIHNwaWVsZXItPlJlZ2lzdGVySGVscGVyTlBDKHRoaXNfb2JqZWN0KCksIDApOworICAgICAgIHNwaWVsZXItPlJlZ2lzdGVySGVscGVyTlBDKHRoaXNfb2JqZWN0KCksIEVYQ0xVU0lWRV9IRUxQRVIpOworCitTSUVIRSBBVUNIOgorICAgIFVucmVnaXN0ZXJIZWxwZXJOUEMoKQorICAgIFBfSEVMUEVSX05QQwpkaWZmIC0tZ2l0IGEvZG9jL2xmdW4vUmVnaXN0ZXJIZWxwZXJPYmplY3QgYi9kb2MvbGZ1bi9SZWdpc3RlckhlbHBlck9iamVjdApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5hYTFjYjY2Ci0tLSAvZGV2L251bGwKKysrIGIvZG9jL2xmdW4vUmVnaXN0ZXJIZWxwZXJPYmplY3QKQEAgLTAsMCArMSwxMTMgQEAKKworRlVOS1RJT046CisgICAgIGludCBSZWdpc3RlckhlbHBlck9iamVjdChvYmplY3QgaGVscGVyLCBpbnQgdHlwZSwgCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJpbmd8Y2xvc3VyZSBjYWxsYmFjayk7CisKK0RFRklOSUVSVCBJTjoKKyAgICAgL3N0ZC9saXZpbmcvaGVscGVycy5jCisKK0FSR1VNRU5URToKKyAgICAgb2JqZWN0IGhlbHBlcgorICAgICAgIERhcyBPYmpla3QsIGRhcyBiZWkgZWluZW0gTGViZXdlc2VuIGFscyBIaWxmc29iamVrdCByZWdpc3RyaWVydCAKKyAgICAgICB3ZXJkZW4gc29sbC4gRGFzIE9iamVrdCBtdXNzIHNpY2ggZGF6dSBuaWNodCBpbSBJbnZlbnRhciBkZXMKKyAgICAgICBMZWJld2VzZW5zIGJlZmluZGVuLgorICAgICBpbnQgdHlwZQorICAgICAgIEhlbGZlcnR5cCwgZWluZXIgZGVyIGluIC9zeXMvbGl2aW5nL2hlbHBlcnMuaCBkZWZpbmllcnRlbiBUeXBlbjoKKyAgICAgICAtIEhFTFBFUl9UWVBFX0FFUklBTCBmdWVyIGRpZSBGbHVnLS9TZWdlbHVudGVyc3R1ZXR6dW5nCisgICAgICAgLSBIRUxQRVJfVFlQRV9BUVVBVElDIGZ1ZXIgVGF1Y2h1bnRlcnN0dWV0enVuZworICAgICBzdHJpbmd8Y2xvc3VyZSBjYWxsYmFjaworICAgICAgICBDbG9zdXJlIG9kZXIgRnVua3Rpb25zbmFtZSBhbHMgU3RyaW5nOyBkaWVzIGlzdCBkaWUgRnVua3Rpb24sIGRpZSBpbQorICAgICAgICBPYmpla3QgaGVscGVyIGdlcnVmZW4gd2lyZCwgdW0gYWJ6dWZyYWdlbiwgb2IgZXMgc2ljaCBha3R1ZWxsIGZ1ZXIKKyAgICAgICAgenVzdGFlbmRpZyBlcmtsYWVydCBvZGVyIG5pY2h0LgorCitCRVNDSFJFSUJVTkc6CisgICAgIERhcyBPYmpla3QgImhlbHBlciIgd2lyZCBhbHMgSGlsZnNvYmpla3QgZnVlciBiZXN0aW1tdGUgQWt0aXZpdGFldGVuIHdpZQorICAgICB6dW0gQmVpc3BpZWwgRmxpZWdlbiBvZGVyIFRhdWNoZW4gcmVnaXN0cmllcnQuIAorICAgICAKKyAgICAgRGllIGFscyBDYWxsYmFjayB1ZWJlcmdlYmVuZSBGdW5rdGlvbiB3aXJkIGJlaSBkZXIgQWJmcmFnZSBkZXIgCisgICAgIFBfKl9IRUxQRVJTLVByb3BlcnRpZXMgKHNpZWhlIHVudGVuKSBhdWZnZXJ1ZmVuIHVuZCBkZXJlbiAKKyAgICAgUnVlY2tnYWJld2VydCBpbiBkZXIgUHJvcGVydHkgdmVybWVya3QuIAorICAgICAKKyAgICAgRGVyIFJ1ZWNrZ2FiZXdlcnQgZGVyIENhbGxiYWNrLU1ldGhvZGUgbXVzcyBpbSBXZXJ0ZWJlcmVpY2ggCisgICAgIDAuLjEwMDAwIGxpZWdlbiwgd29iZWkgZWluIFdlcnQgdm9uIDAgYmVkZXV0ZXQsIGRhc3MgZGFzIEhpbGZzb2JqZWt0IAorICAgICBzaWNoIGdlcmFkZSBuaWNodCB6dXN0YWVuZGlnIGZ1ZWhsdC4gQmVpIGRlbiBXZXJ0ZW4gPjAgaXN0IGVzIGRlbSAKKyAgICAgYWJmcmFnZW5kZW4gT2JqZWt0IHVlYmVybGFzc2VuLCB3aWUgZXMgZGllc2UgRGF0ZW4gYmV3ZXJ0ZXQuCisKKyAgICAgRGllIEZ1bmt0aW9uIG11c3MgZXhpc3RpZXJlbiB1bmQgcHVibGljIHNlaW4sIGQuaC4gdm9uIGF1c3NlbiBnZXJ1ZmVuIAorICAgICB3ZXJkZW4ga29lbm5lbi4KKyAgICAgCisgICAgIERpZSBGdW5rdGlvbiBiZWtvbW10IGRhcyBTcGllbGVyb2JqZWt0IHVuZCBkYXMgYWJmcmFnZW5kZSBPYmpla3QgYWxzCisgICAgIFBhcmFtZXRlciB1ZWJlcmdlYmVuLgorCitISU5XRUlTOgorICAgICBFcyBpc3QgZWluIFVudGVyc2NoaWVkLCBvYiBzaWNoIGVpbiBPYmpla3QgdmlhIFVucmVnaXN0ZXJIZWxwZXJPYmplY3QoKQorICAgICBhbHMgSGVsZmVyIGF1c3RyYWVndCwgb2RlciBvYiBkZXIgQXVmcnVmIGRlciBDYWxsYmFjay1GdW5rdGlvbiBlaW5lCisgICAgIDAgenVydWVja2dpYnQuIEltIGxldHp0ZXJlbiBGYWxsIGlzdCBkYXMgT2JqZWt0IG5hY2ggd2llIHZvciAKKyAgICAgcmVnaXN0cmllcnQgdW5kIGthbm4gdHJvdHpkZW0gdm9tIGFiZnJhZ2VuZGVuIE9iamVrdCBhbHMgCisgICAgIGZ1bmt0aW9uc2ZhZWhpZyBhbmdlc2VoZW4gd2VyZGVuLgorCitSVUVDS0dBQkVXRVJURToKKyAgICAgIDEgIE9iamVrdCB3dXJkZSBlcmZvbGdyZWljaCByZWdpc3RyaWVydCAoSEVMUEVSX1NVQ0NFU1MpCisgICAgIC0xICBhbmdlZ2ViZW5lcyBIaWxmc29iamVrdCBleGlzdGllcnQgbmljaHQgKEhFTFBFUl9OT19DQUxMQkFDS19PQkpFQ1QpCisgICAgIC0yICBhbmdlZ2ViZW5lcyBIaWxmc29iamVrdCBpc3QgYmVyZWl0cyBmdWVyIGRpZXNlIEFydCBkZXIKKyAgICAgICAgIFVudGVyc3R1ZXR6dW5nIHJlZ2lzdHJpZXJ0IChIRUxQRVJfQUxSRUFEWV9MSVNURUQpCisKK0JFSVNQSUVMRToKKyAgICAgYSkgRWluZSBsdWZ0Z2VmdWVsbHRlIEJsYXNlIHdpbGwgc2ljaCBhbHMgVGF1Y2gtSGVsZmVyIGFtIFNwaWVsZXIKKyAgICAgYW5tZWxkZW4gdW5kIGlzdCB6dXN0YWVuZGlnLCBzb2xhbmdlIHNpY2ggbm9jaCBMdWZ0IGluIGlociBiZWZpbmRldDoKKworICAgICBpbnQgbHVmdCA9IDU7IC8vIGdsb2JhbGUgVmFyaWFibGUgei5CLiBmdWVyIEx1ZnRpbmhhbHQgdm9uIDUgQXRlbXp1ZWdlbgorCisgICAgIC8vIFJlZ2lzdHJpZXJ1bmcgaW0gU3BpZWxlcm9iamVrdAorICAgICBpZiAoIFRQLT5SZWdpc3RlckhlbHBlck9iamVjdChNRSwgSEVMUEVSX1RZUEVfQVFVQVRJQywKKyAgICAgICAgICAiRGl2aW5nQ2FsbGJhY2siKSA9PSBIRUxQRVJfU1VDQ0VTUyApIHsKKyAgICAgICB0ZWxsX29iamVjdChUUCwgIkR1IGthbm5zdCBqZXR6dCBtaXQgSGlsZmUgZGVyIEx1ZnRibGFzZSB1bnRlciBXYXNzZXIgIgorICAgICAgICAgImF0bWVuLlxuIik7CisgICAgIH0KKworICAgICAvLyBoaWVyIGtvZW5uZW4gbmF0dWVybGljaCBhdWNoIG5vY2gga29tcGxleGVyZSBEaW5nZSBhYmxhdWZlbiwgei5CLgorICAgICAvLyB3ZW5uIGVpbiBXZXJ0IHp1cnVlY2tnZWdlYmVuIHdlcmRlbiBzb2xsLCBkZXIgbmljaHQgbnVyIDAgb2RlciAxIGlzdC4KKyAgICAgcHVibGljIGludCBEaXZpbmdDYWxsYmFjayhvYmplY3QgcGxheWVyLCBvYmplY3QgY2FsbGVyKSB7CisgICAgICAgcmV0dXJuIChlbnZpcm9ubWVudChNRSk9PXBsYXllciAmJiBsdWZ0PjApOworICAgICB9CisKKyAgICAgYikgRWluIFNwaWVsZXIgYmVmaW5kZXQgc2ljaCBpbiBlaW5lbSBSYXVtIG1pdCBlaW5lbSBzdGVpbGVuIEFiaGFuZywgZGVuCisgICAgIG1hbiBoaW51bnRlcnNwcmluZ2VuIGthbm4uIERpZXMgZ2VodCBhYmVyIG51ciBkYW5uIGdlZmFocmxvcywgd2VubiBlcworICAgICBIaWxmc29iamVrdGUgZ2lidCwgZGllIGRlbiAoU2VnZWwpZmx1ZyBlcmxhdWJlbjoKKworICAgICAvLyBjbWRfc3ByaW5nZW4oKSBzZWkgZGllIEZ1bmt0aW9uLCBkaWUgYmVpIGRlciBFaW5nYWJlIGRlcyBCZWZlaGxzIGR1cmNoCisgICAgIC8vIGRlbiBTcGllbGVyIGF1ZmdlcnVmZW4gd2lyZC4KKyAgICAgc3RhdGljIGludCBjbWRfc3ByaW5nZW4oc3RyaW5nIHN0cikgeworICAgICAgIFsuLi5dCisgICAgICAgLy8gUHJvcGVydHkgYWJmcmFnZW4KKyAgICAgICBtYXBwaW5nIGhlbHBlcnMgPSBUUC0+UXVlcnlQcm9wKFBfQUVSSUFMX0hFTFBFUlMpOworICAgICAgIC8vIExpc3RlIGRlciBXZXJ0ZSBmdWVyIGRpZSBlaW56ZWxuZW4gVW50ZXJzdHVldHp1bmdzb2JqZWt0ZSBlcm1pdHRlbG4KKyAgICAgICBpbnQgKnZhbHVlcyA9IG1fdmFsdWVzKGhlbHBlcnMsMCk7CisgICAgICAgLy8gU3BpZWxlciBzY2hvbm1hbCBydW50ZXJiZXdlZ2VuLCBkaWUgRm9sZ2VuIHNlaW5lcyBIYW5kZWxucyBzcHVlcnQKKyAgICAgICAvLyBlciBkYW5uLCB3ZW5uIGVyIHVudGVuIGFuZ2Vrb21tZW4gaXN0LgorICAgICAgIFRQLT5tb3ZlKHppZWxyYXVtLCBNX0dPfE1fU0lMRU5UKTsKKyAgICAgICAvLyAiaGVscGVycyIgaXN0IGltbWVyIGVpbiBNYXBwaW5nLCBkYXMgcHJ1ZWZlbiB3aXIgbmljaHQgZXh0cmEuCisgICAgICAgLy8gV2VubiBkaWUgTGlzdGUgZGVyIE9iamVrdGUgbm9jaCBtaW5kZXN0ZW5zIGVpbiBFbGVtZW50IGVudGhhZWx0LAorICAgICAgIC8vIG5hY2hkZW0gYWxsZSB1bnp1c3RhZW5kaWdlbiBIaWxmc29iamVrdGUgKFJ1ZWNrZ2FiZXdlcnQgZGVyCisgICAgICAgLy8gQ2FsbGJhY2stRnVua3Rpb24gPT0gMCkgcmF1c2dlcmVjaG5ldCB3dXJkZW4sIGV4aXN0aWVydCBtaW5kZXN0ZW5zCisgICAgICAgLy8gZWluIGdlZWlnbmV0ZXMgSGlsZnNvYmpla3QuCisgICAgICAgaWYgKCBzaXplb2YodmFsdWVzLSh7MH0pKSApIHsKKyAgICAgICAgIHRlbGxfb2JqZWN0KFRQLCAiU2FuZnQgc2VnZWxzdCBEdSBkZW4gSGFuZyBoaW5hYi5cbiIpOworICAgICAgIH0KKyAgICAgICBlbHNlIHsKKyAgICAgICAgIHRlbGxfb2JqZWN0KFRQLCBCUygiVG9kZXNtdXRpZyBzcHJpbmdzdCBEdSBkZW4gSGFuZyBoaW5hYiB1bmQgIgorICAgICAgICAgICAic2NobGFlZ3N0IGhhcnQgdW50ZW4gYXVmLiBEdSBoYWV0dGVzdCB2aWVsbGVpY2h0IGRhcmFuIGRlbmtlbiAiCisgICAgICAgICAgICJzb2xsZW4sIERpciBnZWVpZ25ldGUgSGlsZnNtaXR0ZWwgZnVlciBzbyBlaW5lIEFrdGlvbiB6dSAiCisgICAgICAgICAgICJiZXNvcmdlbi4iKTsKKyAgICAgICAgIFRQLT5EZWZlbmQoODAwLCAoe0RUX0JMVURHRU9OfSksIChbU1BfTk9fQUNUSVZFX0RFRkVOU0U6MV0pLCBNRSk7CisgICAgICAgfQorICAgICAgIHJldHVybiAxOworICAgICB9CisKK1NJRUhFIEFVQ0g6CisgICAgIEZ1bmt0aW9uZW46ICBVbnJlZ2lzdGVySGVscGVyT2JqZWN0KCkKKyAgICAgUHJvcGVydGllczogIFBfSEVMUEVSX09CSkVDVFMsIFBfQUVSSUFMX0hFTFBFUlMsIFBfQVFVQVRJQ19IRUxQRVJTCisgICAgIFNvbnN0aWdlczogICAvc3lzL2xpdmluZy9oZWxwZXJzLmgKKworMDUuMDIuMjAxNSBBcmF0aG9ybgorCmRpZmYgLS1naXQgYS9kb2MvbGZ1bi9SZW1vdmVBZGplY3RpdmUgYi9kb2MvbGZ1bi9SZW1vdmVBZGplY3RpdmUKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNDg2MDVkZAotLS0gL2Rldi9udWxsCisrKyBiL2RvYy9sZnVuL1JlbW92ZUFkamVjdGl2ZQpAQCAtMCwwICsxLDI0IEBACitSZW1vdmVBZGplY3RpdmUoKQorCitGVU5LVElPTjoKKyAgICAgdm9pZCBSZW1vdmVBZGplY3RpdmUoc3RyaW5nfHN0cmluZyogYWRqKTsKKworREVGSU5JRVJUIElOOgorICAgICAvc3RkL3RoaW5nL2Rlc2NyaXB0aW9uLmMKKworQVJHVU1FTlRFOgorICAgICBhZGoKKyAgICAgICAgICBTdHJpbmcgb2RlciBBcnJheSB2b24gU3RyaW5nIG1pdCBkZW4gQWRqZWt0aXZlbi4KKworQkVTQ0hSRUlCVU5HOgorICAgICBGYWxscyBlaW5pZ2UgZGVyIHZvcmhhbmRlbmVuIEFkamVrdGl2ZSBuaWNodCBtZWhyIHZlcndlbmRldCB3ZXJkZW4KKyAgICAgc29sbGVuLCBrb2VubmVuIHNpZSBtaXQgZGllc2VyIEZ1bmt0aW9uIGVudGZlcm50IHdlcmRlbi4KKworUlVlQ0tHQUJFV0VSVDoKKyAgICAga2VpbmVyCisKK1NJRUhFIEFVQ0g6CisgICAgIEFkZEFkamVjdGl2ZSgpLCBSZW1vdmVJZCgpLCAvc3RkL3RoaW5nL2Rlc2NyaXB0aW9uLmMKKworLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorMjAuMDEuMjAxNSwgWmVzc3RyYQpkaWZmIC0tZ2l0IGEvZG9jL2xmdW4vUmVtb3ZlQ2xhc3MgYi9kb2MvbGZ1bi9SZW1vdmVDbGFzcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4zZWVkYTZjCi0tLSAvZGV2L251bGwKKysrIGIvZG9jL2xmdW4vUmVtb3ZlQ2xhc3MKQEAgLTAsMCArMSwyMyBAQAorUmVtb3ZlQ2xhc3MoKQorCitGVU5LVElPTjoKKyAgICAgdm9pZCBSZW1vdmVDbGFzcyhzdHJpbmd8c3RyaW5nKiBjbGFzcyk7CisKK0RFRklOSUVSVCBJTjoKKyAgICAgL3N0ZC90aGluZy9kZXNjcmlwdGlvbi5jCisKK0FSR1VNRU5URToKKyAgICAgc3RyaW5nL3N0cmluZyogY2xhc3MJLSBTdHJpbmcgb2RlciBTdHJpbmdhcnJheSBkZXIgS2xhc3NlKG4pCisKK0JFU0NIUkVJQlVORzoKKyAgICAgRGVtIE9iamVrdCB3ZXJkZW4gZWluaWdlIGRlciBtaXQgQWRkQ2xhc3MoKSBnZXNldHp0ZW4gS2xhc3NlbiB3aWVkZXIgDQorICAgICBlbnR6b2dlbi4KKyAgICAgRGllIGFsbGdlbWVpbiB2ZXJmdWVnYmFyZW4gS2xhc3NlbiBzaW5kIHVudGVyIC9zeXMvY2xhc3MuaCBkZWZpbmllcnQuCisKK1NJRUhFIEFVQ0g6CisgICAgIEFkZENsYXNzKCksIGlzX2NsYXNzX21lbWJlcigpCisgICAgIFBfQ0xBU1MKKworLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorMjAuMDEuMjAxNSwgWmVzc3RyYQorCmRpZmYgLS1naXQgYS9kb2MvbGZ1bi9SZW1vdmVDbWQgYi9kb2MvbGZ1bi9SZW1vdmVDbWQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMjU5NDFjNgotLS0gL2Rldi9udWxsCisrKyBiL2RvYy9sZnVuL1JlbW92ZUNtZApAQCAtMCwwICsxLDYwIEBACitSZW1vdmVDbWQoTCkKK0ZVTktUSU9OOgorICAgIHZhcmFyZ3MgaW50IFJlbW92ZUNtZChtaXhlZCBjbWQsIGludCBub3J1bGUsIG1peGVkIGlkKQorCitERUZJTklFUlQgSU46CisgICAgL3N0ZC90aGluZy9jb21tYW5kcy5jCisKK0FSR1VNRU5URToKKyAgICBjb20KKyAgICAgICAgIFN0cmluZyBvZGVyIEFycmF5IHZvbiBTdHJpbmdzIG1pdCBkZW4genUgZW50ZmVybmVuZGVuIEtvbW1hbmRvcy4KKyAgICBub3J1bGUKKyAgICAgICAgIEtvbW1hbmRvcyBtaXQgUmVnZWxuIHdlcmRlbiBuaWNodCBlbnRmZXJudCAoYXVzc2VyIGJlaSBjbWQ9PTApCisgICAgaWQKKyAgICAgICAgIGVpbmUgSUQsIG1pdCBkZXIgbWFuIGVpbiB2b3JoZXIgbWl0IGRpZXNlciBJRCBnZXNwZWljaGVydGVzCisgICAgICAgICBLb21tYW5kbyBlaW5kZXV0aWcgbHZzY2hlbiBrYW5uCisKK0JFU0NIUkVJQlVORzoKKyAgICBNaXQgQWRkQ21kKCkgaGluenVnZWZ1ZWd0ZSBLb21tYW5kb3Mga29lbm5lbiBtaXQgZGllc2VtIEJlZmVobCB3aWVkZXIKKyAgICBhYmdlbWVsZGV0IHdlcmRlbi4gRGllIGVudGZlcm50ZW4gS29tbWFuZG9zIHNpbmQgZGlyZWt0IG5hY2ggZGVtCisgICAgUmVtb3ZlQ21kKCktQXVmcnVmIG5pY2h0IG1laHIgYW5zcHJlY2hiYXIuCisKKyAgICBXaXJkIGVpbiBSZWdlbHN0cmluZyBhbmdlZ2ViZW4sIHNvIHdpcmQgZGllIGlkZW50aXNjaGUgQWRkQ21kLQorICAgIFJlZ2VsIGVudGZlcm50LgorCitCRU1FUktVTkdFTjoKKyAgICBVZWJlcmdpYnQgbWFuIGZ1ZXIgY29tIGVpbmUgMCwgc28gd2VyZGVuIGFsbGUgZGVmaW5pZXJ0ZW4gS29tbWFuZG9zCisgICAgZW50ZmVybnQhCisKK1JVRUNLR0FCRVdFUlQ6CisgICAgQW56YWhsIGRlciBlbnRmZXJudGVuIEtvbW1hbmRvcy4KKworQkVJU1BJRUxFOgorICAgICgxKSBBZGRDbWQoInRlc3QiKTsKKyAgICAoMikgQWRkQ21kKCJ0ZXN0fHRlc3RlJm1pdCZwYXJhbWV0ZXIiKTsKKyAgICAoMykgQWRkQ21kKCh7InRlc3QifSksMSk7CisgICAgKDQpIEFkZENtZCgidGVzdCIsMCwwLCJYWVoiKTsKKyAgICAoNSkgQWRkQ21kKCJ0ZXN0Jm1pdCZwYXJhbWV0ZXIiLDAsMCwiWFlaIik7CisKKyAgICBSZW1vdmVDbWQoMCk7CisgICAgLSBlbnRmZXJudCBhbGxlIEtvbW1hbmRvcworICAgIFJlbW92ZUNtZCgidGVzdCIsMSk7CisgICAgLSBlbnRmZXJudCAoMSkgdW5kICgzKQorICAgIFJlbW92ZUNtZCgidGVzdCIpOworICAgIC0gZW50ZmVybnQgKDEpLCAoMykgdW5kIGVpbmVuIFRlaWwgdm9uICgyKSwKKyAgICAgIGVzIHZlcmJsZWlidCAidGVzdGUmbWl0JnBhcmFtZXRlciIKKyAgICBSZW1vdmVDbWQoInRlc3R8dGVzdGUmbWl0JnBhcmFtZXRlciIKKyAgICAtIGVudGZlcm50ICgyKQorICAgIFJlbW92ZUNtZCgidGVzdCIsMCwiWFlaIik7CisgICAgLSBlbnRmZXJudCAoNCkgdW5kICg1KQorICAgIFJlbW92ZUNtZCgidGVzdCIsMSwiWFlaIik7CisgICAgLSBlbnRmZXJudCAoNCksIG5pY2h0ICg1KQorICAgIFJlbW92ZUNtZCgwLDAsIlhZWiIpOworICAgIC0gZW50ZmVybnQgKDQpIHVuZCAoNSkKKworU0lFSEUgQVVDSDoKKwkJCUFkZENtZChMKSwgQWRkQ21kX2JzcAorICAgIFNvbnN0aWdlczoJCXJlcGxhY2VfcGVyc29uYWwoRSksIGVuYWJsZV9jb21tYW5kcyhFKSwgaW5pdChFKQorICAgIEFsdGVybmF0aXZlbjoJQWRkQWN0aW9uKEwpLCBhZGRfYWN0aW9uKEUpCisKKzI0Lk1hZXJ6IDIwMDQgR2xvaW5zb24KZGlmZiAtLWdpdCBhL2RvYy9sZnVuL1JlbW92ZURlZmVuZGVyIGIvZG9jL2xmdW4vUmVtb3ZlRGVmZW5kZXIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYWFkNDZkZgotLS0gL2Rldi9udWxsCisrKyBiL2RvYy9sZnVuL1JlbW92ZURlZmVuZGVyCkBAIC0wLDAgKzEsMzYgQEAKK1JlbW92ZURlZmVuZGVyKCkKKworRlVOS1RJT046CisJdm9pZCBSZW1vdmVEZWZlbmRlcihvYmplY3QgZnJpZW5kKTsKKworREVGSU5JRVJUIElOOgorCS9zdGQvbGl2aW5nL2NvbWJhdC5jCisKK0FSR1VNRU5URToKKwlmcmllbmQKKwkgIE9iamVrdCAobm9ybWFsIExlYmV3ZXNlbiksIHdlbGNoZXMgenVrdWVuZnRpZyBuaWNodCBtZWhyIHVlYmVyCisJICBBbmdyaWZmZSBpbmZvcm1pZXJ0IHdlcmRlbiBzb2xsIHVuZCBkaWVzZSBhdWNoIG5pY2h0IG1laHIgYWJ3ZWhydC4KKworQkVTQ0hSRUlCVU5HOgorCUVpbiBMZWJld2VzZW4sIHdlbGNoZXMgYW5nZWdyaWZmZW4gd2lyZCwga2FubiBhbmRlcmUgT2JqZWt0ZSB1ZWJlcgorCWVpbmVuIHNvbGNoZW4gQW5ncmlmZiBwZXIgSW5mb3JtRGVmZW5kKCkgaW5mb3JtaWVyZW4gb2RlciBpaG5lbgorCXNvZ2FyIGRpZSBNb2VnbGljaGtlaXQgZ2ViZW4sIHBlciBEZWZlbmRPdGhlcigpIGRpcmVrdCBpbiBkZW4KKwlsYXVmZW5kZW4gQW5ncmlmZiBlaW56dWdyZWlmZW4gKFNjaGFlZGVuIGFid2VocmVuIG9kZXIgdW13YW5kZWxuKS4KKwlJbSBOb3JtYWxmYWxsIGhhbmRlbHQgZXMgc2ljaCBoaWVyYmVpIHVtIGFuZGVyZSBMZWJld2VzZW4sIHdlbGNoZQorCWFscyBWZXJ0ZWlkaWdlciBkZXMgYW5nZWdyaWZmZW5lbiBMZWJld2VzZW5zIGF1ZnRyZXRlbjogRGFoZXIgZGVyCisJTmFtZSBkZXIgRnVua3Rpb24uIEF1c3NlcmRlbSBiZXN0ZWh0IGRpZSBFaW5zY2hyYWVua3VuZywgZGFzcyBkaWVzZQorCU9iamVrdGUgaW4gZGVyIGdsZWljaGVuIFVtZ2VidW5nIHNlaW4gbXVlc3Nlbiwgd2llIGRhcyB6dQorCXZlcnRlaWRpZ2VuZGUgTGViZXdlc2VuLgorCURpZSBPYmpla3RlIHNpbmQgaW4gRm9ybSBlaW5lcyBBcnJheXMgaW4gZGVyIFByb3BlcnR5IFBfREVGRU5ERVJTCisJYWJnZXNwZWljaGVydCB1bmQga29lbm5lbiBkb3J0IGFiZ2VydWZlbiB3ZXJkZW4uIE5hdHVlcmxpY2gga2FubgorCW1hbiBhbHRlIE9iamVrdGUgZGlyZWt0IGRvcnQgbG9lc2NoZW4sIGplZG9jaCBzb2xsdGUgbWFuIGRpZQorCWhpZXJmdWVyIGJlcmVpdGdlc3RlbGx0ZSBGdW5rdGlvbmVuIFJlbW92ZURlZmVuZGVyKCkgdmVyd2VuZGVuLgorCVp1bSBIaW56dWZ1ZWdlbiB2b24gRWludHJhZWdlbiBpbSBBcnJheSBzdGVodCBlYmVuZmFsbHMgZWluZQorCUZ1bmt0aW9uIGJlcmVpdDogQWRkRGVmZW5kZXIoKS4KKworU0lFSEUgQVVDSDoKKwlBZGREZWZlbmRlcigpLCBJbmZvcm1EZWZlbmQoKSwgRGVmZW5kT3RoZXIoKSwKKwlQX0RFRkVOREVSUywgL3N0ZC9saXZpbmcvY29tYmF0LmMKKworLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorTGFzdCBtb2RpZmllZDogVGh1IEp1bCAyOSAxODo0ODo0NSAxOTk5IGJ5IFBhdHJ5bgpkaWZmIC0tZ2l0IGEvZG9jL2xmdW4vUmVtb3ZlRGV0YWlsIGIvZG9jL2xmdW4vUmVtb3ZlRGV0YWlsCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmY3M2FmMmEKLS0tIC9kZXYvbnVsbAorKysgYi9kb2MvbGZ1bi9SZW1vdmVEZXRhaWwKQEAgLTAsMCArMSw1NyBAQAorUmVtb3ZlRGV0YWlsKCkKKworRlVOS1RJT046CisgICAgdm9pZCBSZW1vdmVEZXRhaWwobWl4ZWQgKmtleXMpOworCitERUZJTklFUlQgSU46CisgICAgL3N0ZC90aGluZy9kZXNjcmlwdGlvbi5jCisKK0FSR1VNRU5URToKKyAgICBrZXlzCisgICAgICBTdHJpbmcgb2RlciBBcnJheSB2b24gU3RyaW5ncyBtaXQgZGVuIHp1IGVudGZlcm5lbmRlbiBEZXRhaWxzLgorCitCRVNDSFJFSUJVTkc6CisgICAgRW50ZmVybnQgZGllIGluIDxrZXlzPiBhbmdlZ2ViZW5lbiBEZXRhaWxzIGF1cyBkZXIgTGlzdGUgZGVyCisgICAgdm9yaGFuZGVuZW4gRGV0YWlscy4gVWViZXJnaWJ0IG1hbiBmdWVyIDxrZXlzPiBlaW5lIDAsIHNvIHdlcmRlbgorICAgIHNhZW10bGljaGUgRGV0YWlscyBlbnRmZXJudCEKKworQkVJU1BJRUw6CisgICAgRWluIGtsZWluZXMgQmVpc3BpZWwsIGJlaSBkZW0gZWluZSBPZWZmbnVuZyBlcnNjaGVpbnQgdW5kIHdpZWRlcgorICAgIHZlcnNjaHdpbmRldCwgamUgbmFjaGRlbSwgb2IgbWFuIGVpbmUgTHVrZSBvZWZmbmV0IG9kZXIgc2NobGllc3N0LgorICAgICAgaW50IG9lZmZuZUx1a2Uoc3RyaW5nIHN0cik7CisgICAgICBpbnQgc2NobGllc3NlTHVrZShzdHJpbmcgc3RyKTsKKyAgICAgIC4uLgorICAgICAgQWRkQ21kKCJvZWZmbmUiLCAjJ29lZmZuZUx1a2UpOworICAgICAgQWRkQ21kKCJzY2hsaWVzc2UiLCAjJ3NjaGxpZXNzZUx1a2UpOworICAgICAgLi4uCisgICAgICBpbnQgb2VmZm5lTHVrZShzdHJpbmcgc3RyKSB7CisgICAgICAgIGlmKHN0ciE9Imx1a2UiIHx8IEdldERldGFpbCgib2VmZm51bmciKSkKKyAgICAgICAgICByZXR1cm4gMDsKKyAgICAgICAgQWRkRGV0YWlsKCJvZWZmbnVuZyIsIkR1IHNpZWhzdCBlaW5lIGtsZWluZSBPZWZmbnVuZy5cbiIpOworICAgICAgICByZXR1cm4gMTsKKyAgICAgIH0KKworICAgICAgaW50IHNjaGxpZXNzZUx1a2Uoc3RyaW5nIHN0cikgeworICAgICAgICBpZihzdHIhPSJsdWtlIiB8fCAhR2V0RGV0YWlsKCJvZWZmbnVuZyIpKQorICAgICAgICAgIHJldHVybiAwOworICAgICAgICBSZW1vdmVEZXRhaWwoIm9lZmZudW5nIik7IC8vIERldGFpbCB3aWVkZXIgZW50ZmVybmVuCisgICAgICAgIHJldHVybiAxOworICAgICAgfQorCitCRU1FUktVTkdFTjoKKyAgICBEYSBpbnRlcm4gRGV0YWlscyB1bmQgU3BlY2lhbERldGFpbHMgaW0gZ2xlaWNoZW4gTWFwcGluZyB2ZXJ3YWx0ZXQKKyAgICB3ZXJkZW4sIGxhc3NlbiBzaWNoIG1pdCBkaWVzZXIgRnVua3Rpb24gYXVjaCBTcGVjaWFsRGV0YWlscworICAgIGVudGZlcm5lbi4KKyAgICBEaWUgRnVua3Rpb24gUmVtb3ZlU3BlY2lhbERldGFpbCgpIHNvbGx0ZSBhbHNvIG5pY2h0IGdlbnV0enQgd2VyZGVuIQorCitTSUVIRSBBVUNIOgorICAgIFNldHplbjogICAgQWRkRGV0YWlsKCksIEFkZFJlYWREZXRhaWwoKSwgQWRkU21lbGxzKCksIEFkZFNvdW5kcygpLAorICAgICAgICAgICAgICAgQWRkVG91Y2hEZXRhaWwoKQorICAgIExvZXNjaGVuOiAgUmVtb3ZlUmVhZERldGFpbCgpLCBSZW1vdmVTbWVsbHMoKSwKKyAgICAgICAgICAgICAgIFJlbW92ZVNvdW5kcygpLCBSZW1vdmVUb3VjaERldGFpbCgpCisgICAgRGF0ZW46ICAgICBQX0RFVEFJTFMsIFBfUkVBRF9ERVRBSUxTLCBQX1NNRUxMUywgUF9TT1VORFMsCisgICAgICAgICAgICAgICBQX1RPVUNIX0RFVEFJTFMsIFBfU1BFQ0lBTF9ERVRBSUxTCisgICAgVmVyYWx0ZXQ6ICBBZGRTcGVjaWFsRGV0YWlsKCksIFJlbW92ZVNwZWNpYWxEZXRhaWwoKSwgUF9SRUFEX01TRworICAgIFNvbnN0aWdlczogR2V0RGV0YWlsKCksIGJyZWFrX3N0cmluZygpCisKKzguIEp1bGkgMjAxMSBHbG9pbnNvbgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2RvYy9sZnVuL1JlbW92ZUV4aXQgYi9kb2MvbGZ1bi9SZW1vdmVFeGl0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmVkYzYxZjIKLS0tIC9kZXYvbnVsbAorKysgYi9kb2MvbGZ1bi9SZW1vdmVFeGl0CkBAIC0wLDAgKzEsMjggQEAKK1JlbW92ZUV4aXQoKQorRlVOS1RJT046CisgICAgIHZvaWQgUmVtb3ZlRXhpdChzdHJpbmd8c3RyaW5nKiBjbWQpOworCitERUZJTklFUlQgSU46CisgICAgIC9zdGQvcm9vbS9leGl0cworCitBUkdVTUVOVEU6CisgICAgIHN0cmluZy9zdHJpbmcqIGNtZAorICAgICAgICAgIFJpY2h0dW5nKGVuKSwgZGllIGVudGZlcm50IHdlcmRlbiBzb2xsZW4uCisKK0JFU0NIUkVJQlVORzoKKyAgICAgRGllIGluIGNtZCBhbmdlZ2ViZW5lbiBBdXNnYWVuZ2Ugd2VyZGVuIHdpZWRlciBlbnRmZXJudC4KKworICAgICBJc3QgY21kID0gMCwgc28gd2VyZGVuIGFsbGUgQXVzZ2FlbmdlIGVudGZlcm50LgorCitCRU1FUktVTkdFTjoKKyAgICAgQXVzZ2FlbmdlIHdlcmRlbiBhbiBkZXIgZ2xlaWNoZW4gU3RlbGxlIGdlc3BlaWNoZXJ0OgorICAgICAtIFJlbW92ZUV4aXQoKSBncmVpZnQgYXVmIGRpZSBnbGVpY2hlbiBEYXRlbiB3aWUgUmVtb3ZlU3BlY2lhbEV4aXQoKQorICAgICAgIHp1LCBlbnRmZXJudCBhbHNvIGF1Y2ggc3BlemllbGxlIEF1c2dhZW5nZSEKKworU0lFSEUgQVVDSDoKKyAgICAgQWRkRXhpdCgpLCBBZGRTcGVjaWFsRXhpdCgpLCBHZXRFeGl0cygpCisgICAgIFJlbW92ZVNwZWNpYWxFeGl0KCksCisgICAgIEhfSE9PS19FWElUX1VTRSwgUF9FWElUUywgUF9ISURFX0VYSVRTLCAvc3RkL3Jvb20vZXhpdHMuYworICAgICBhdXNnYWVuZ2UKKworMzEuMDEuMjAxNSwgWmVzc3RyYQpkaWZmIC0tZ2l0IGEvZG9jL2xmdW4vUmVtb3ZlRXh0cmFMb29rIGIvZG9jL2xmdW4vUmVtb3ZlRXh0cmFMb29rCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjFiYTE5NmUKLS0tIC9kZXYvbnVsbAorKysgYi9kb2MvbGZ1bi9SZW1vdmVFeHRyYUxvb2sKQEAgLTAsMCArMSwzOSBAQAorUmVtb3ZlRXh0cmFMb29rKCkKKworaW50IFJlbW92ZUV4dHJhTG9vayhzdHJpbmcgbG9vayk7CisKK0RFRklOSUVSVCBJTjoKKyAgIC9zdGQvbGl2aW5nL2Rlc2NyaXB0aW9uLmMKKworQkVTQ0hSRUlCVU5HOgorICAgRGVyIEV4dHJhbG9vayBlcnNjaGVpbnQgaW4gZGVyIExhbmdiZXNjaHJlaWJ1bmcgZGVzIExlYmV3ZXNlbnMuCisgICBFaW50cmFlZ2Uga29lbm5lbiBtaXQgZGllc2VyIEZ1bmt0aW9uICh2b3J6ZWl0aWcpIHdpZWRlciBlbnRmZXJudCB3ZXJkZW4uCisKK0FSR1VNRU5URToKKyAgLSBzdHJpbmcga2V5OgorICAgIFNjaGx1ZXNzZWx3b3J0LCB1bnRlciBkZW0gZGVyIEVpbnRyYWcsIGRlbiBtYW4gZW50ZmVybmVuIG1vZWNodGUsIHZvbgorICAgIEFkZEV4dHJhTG9vaygpIHJlZ2lzdHJpZXJ0IHd1cmRlLgorCitSVUVDS0dBQkVXRVJURToKKyAgPiAwLCBmYWxscyBkZXIgRWludHJhZyBlcmZvbGdyZWljaCBlbnRmZXJudCB3dXJkZS4KKyAgPCAwIHNvbnN0LgorICAgIC0xOiBrZWluZW4gKGd1ZWx0aWdlbikgPGtleT4gdWViZXJnZWJlbi4KKyAgICAtMjoga2VpbiBFaW50cmFnIGZ1ZXIgPGtleT4gZ2VmdW5kZW4uCisKK0JFTUVSS1VOR0VOOgorICBCZWltIEVudGZlcm5lbiBtaXQgZGllc2VyIEZ1bmt0aW9uIHdpcmQgZGllICJFbmRlbWVsZHVuZyIgZGVzIGVudGZlcm50ZW4KKyAgRWludHJhZ2VzIG5pY2h0IGF1c2dlZ2ViZW4uCisKK0JFSVNQSUVMRToKKyAgIyBFeHRyYWxvb2sgcmVnaXN0cmllcmVuLgorICBsaXZpbmctPkFkZEV4dHJhTG9vaygiQFdFUjEgd2lyZCB2b24gZWluZXIgSG9yZGUgRGFlbW9uZW4gdmVyZm9sZ3QuIiwKKyAgICAgICAgICAgICAgICAgICAgICAgImVubm94X2RhZW1vbmVuaG9yZGVudmVyZm9sZ2VybG9vayIpOworICAjIE51biBrYW5uIGRlciBFaW50cmFnIGF1Y2ggd2llZGVyIGVudGZlcm50IHdlcmRlbjoKKyAgbGl2aW5nLT5SZW1vdmVFeHRyYUxvb2soImVubm94X2RhZW1vbmVuaG9yZGVudmVyZm9sZ2VybG9vayIpOworCitTSUVIRSBBVUNIOgorICAgQWRkRXh0cmFMb29rKCksCisgICBQX0lOVEVSTkFMX0VYVFJBX0xPT0sKKworMTQuMDUuMjAwNywgWmVzc3RyYQorCmRpZmYgLS1naXQgYS9kb2MvbGZ1bi9SZW1vdmVGaXhlZE9iamVjdCBiL2RvYy9sZnVuL1JlbW92ZUZpeGVkT2JqZWN0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjc2MTZiMmIKLS0tIC9kZXYvbnVsbAorKysgYi9kb2MvbGZ1bi9SZW1vdmVGaXhlZE9iamVjdApAQCAtMCwwICsxLDQwIEBACitSZW1vdmVGaXhlZE9iamVjdCgpCisKK0ZVTktUSU9OOgorCXZvaWQgUmVtb3ZlRml4ZWRPYmplY3Qoc3RyaW5nIGZpbGVuYW1lKTsKKworREVGSU5JRVJUIElOOgorCS9zdGQvbGFkZW4uYworCitBUkdVTUVOVEU6CisJc3RyCisJICBEYXRlaW5hbWUgZGVzIE9iamVrdGVzLCB3ZWxjaGVzIG5pY2h0IG1laHIgZGF1ZXJoYWZ0IGltIExhZGVuIHNlaW4KKwkgIHNvbGwuCisKK1JVZUNLR0FCRVdFUlQ6CisgICAgICAgIGtlaW5lcgorCitCRVNDSFJFSUJVTkc6CisJT2JqZWt0ZSwgZGllIG1pdHRlbHMgZGVyIEZ1bmt0aW9uIEFkZEZpeGVkT2JqZWN0KCkgaW0gTGFkZW4KKwllaW5nZWJ1bmRlbiB3ZXJkZW4sIHNpbmQgZG9ydCBzdGFlbmRpZyB2ZXJmdWVnYmFyLiBVbSBkaWVzZW4gWnVzdGFuZAorCXdpZWRlciBhdWZ6dWhlYmVuLCBrYW5uIG1hbiBzaWUgbWl0dGVscyBkaWVzZXIgRnVua3Rpb24gd2llZGVyCisJZW50ZmVybmVuLiBFdmVudHVlbGwgaW0gTGFnZXIgYmVmaW5kbGljaGUgT2JqZWt0ZSBkaWVzZXIgQXJ0IHdlcmRlbgorCWhpZXJiZWkgbmljaHQgemVyc3RvZXJ0IHVuZCBrb2VubmVuIGR1cmNoYXVzIG5vY2ggZ2VrYXVmdCB3ZXJkZW4sCisJYmlzIHNpZSBhbGxlIHNpbmQuIERhbmFjaCBnaWJ0IGVzIHNpZSBkb3J0IG5pY2h0IG1laHIhCisKK0JFSVNQSUVMRToKKwlJbSBhbGxlbiBMYWVkZW4gZ2lidCBlcyBzY2hvbiBlaW4gT2JqZWt0LCB3ZWxjaGVzIGRvcnQKKwlzdGFuZGFyZG1hZXNzaWcgZXJoYWVsdGxpY2ggaXN0LiBGb2xnZW5kZSBaZWlsZSBzb3JndCBkYWZ1ZXI6CisJICBBZGRGaXhlZE9iamVjdCgiL29iai9ib2Vyc2UiLDgwLCh7ImJvZXJzZSIsImdlbGRib2Vyc2UifSkpOworCVdlbm4gbWFuIGRhcyBpbiBzZWluZW0gTGFkZW4gbmljaHQgd3VlbnNjaHQsIGthbm4gbWFuIGRpZSBHZWxkYm9lcnNlCisJbWl0dGVscyBmb2xnZW5kZXIgWmVpbGUgd2llZGVyIGF1cyBkZW0gTGFkZW4gbG9lc2NoZW46CisJICBSZW1vdmVGaXhlZE9iamVjdCgiL29iai9ib2Vyc2UiKTsKKwlFcyBpc3QgbmljaHQgbW9lZ2xpY2gsIGtlaW5lIG9kZXIgbWVocmVyZSBPYmpla3RlIGFuenVnZWJlbiwgdW0gYXVmCisJZGllc2UgV2Vpc2UgYWxsZSBiencuIG1laHJlcmUgT2JqZWt0ZSBhbHMgbmljaHQgbWVociBzdGFlbmRpZworCXZlcmZ1ZWdiYXIgenUgbWFya2llcmVuLgorCitTSUVIRSBBVUNIOgorCUFkZEZpeGVkT2JqZWN0KCksIFNldFN0b3JhZ2VSb29tKCksIC9zdGQvc3RvcmUuYworCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCitMYXN0IG1vZGlmaWVkOiBUaHUgSnVuIDE4IDE0OjE5OjE5IDE5OTggYnkgUGF0cnluCmRpZmYgLS1naXQgYS9kb2MvbGZ1bi9SZW1vdmVGcm9tTWVudSBiL2RvYy9sZnVuL1JlbW92ZUZyb21NZW51Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmE4MzI2YWYKLS0tIC9kZXYvbnVsbAorKysgYi9kb2MvbGZ1bi9SZW1vdmVGcm9tTWVudQpAQCAtMCwwICsxLDMyIEBACitSZW1vdmVGcm9tTWVudSgpCisKK0ZVTktUSU9OOgorICAgICBpbnQgUmVtb3ZlRnJvbU1lbnUobWl4ZWQgaWRzKQorCitERUZJTklFUlQgSU46CisgICAgIC9zdGQvcHViLmMKKworQVJHVU1FTlRFOgorICAgICBpZHMgLSBzdHJpbmcgb2RlciBzdHJpbmcqCisJICAgU3RyaW5nIG9kZXIgQXJyYXkgdm9uIFN0cmluZ3MsIG1pdCBkZW5lbiBzaWNoIGRpZSBTcGVpc2UgYnp3LgorICAgICAgICAgICBkYXMgR2V0cmFlbmsgYmVpbSBCZXN0ZWxsZW4gYW5zcHJlY2hlbiBsYWVzc3QuCisKK1JVRUNLR0FCRVdFUlQ6CisgICAgIGludCAtIEFuemFobCBlbnRmZXJudGVyIEVpbnplbG1lbnVlZWludHJhZWdlCisKK0JFU0NIUkVJQlVORzoKKyAgICAgTWl0IGRpZXNlciBNZXRob2RlIGthbm4gbWFuIGlkLWJhc2llcnQgU3BlaXNlbiB1bmQgR2V0cmFlbmtlCisgICAgIHdpZWRlciB2b24gZGVyIEthcnRlIGVudGZlcm5lbiAod2VubiB6QiBudXIgc2Fpc29uYmFzaWVydAorICAgICBiZXN0aW1tdGUgRGluZ2UgYW5nZWJvdGVuIHdlcmRlbiBzb2xsZW4pLgorICAgICAKK0JFTUVSS1VOR0VOOgorICAgICAtIHNpY2ggendpc2NoZW4gendlaSBTcGVpc2VuIHVlYmVyc2NobmVpZGVuZGUgSURzIGZ1ZWhyZW4genUKKyAgICAgICB1bmRlZmluaWVydGVtIFZlcmhhbHRlbiEKKyAgICAgLSBiZWkgQmVudXR6dW5nIHZvbiBSZW1vdmVGcm9tTWVudSBzb2xsdGUgbWFuIGluIERlbGF5LVNwZWlzZW4gb2RlcgorICAgICAgIC1HZXRyYWVua2VuIGF1ZiBkaWUgTnV0enVuZyB2b20gaWRlbnQtUGFyYW1ldGVyIGluIGRlbgorICAgICAgIFNlcnZpZXJuYWNocmljaHRlbiB2ZXJ6aWNodGVuIChlcyBzZWksIG1hbiB3ZWlzcyB3YXMgbWFuIHR1dCkKKworU0lFSEUgQVVDSDoKKyAgICAgQWRkVG9NZW51KCksIEFkZEZvb2QoKSwgQWRkRHJpbmsoKSwgL3N5cy9wdWIuaAorCisxNS4gRmVicnVhciAyMDA5IEdsb2luc29uCmRpZmYgLS1naXQgYS9kb2MvbGZ1bi9SZW1vdmVGdW5jIGIvZG9jL2xmdW4vUmVtb3ZlRnVuYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4wNTRhYmU0Ci0tLSAvZGV2L251bGwKKysrIGIvZG9jL2xmdW4vUmVtb3ZlRnVuYwpAQCAtMCwwICsxLDg3IEBACitSZW1vdmVGdW5jKCkKKworRlVOS1RJT046CisgICAgIGludCBSZW1vdmVGdW5jKG9iamVjdCBydWVzdCwgaW50IGluZm8sIG9iamVjdCB1c2VyKTsKKworREVGSU5JRVJUIElOOgorICAgICBlaWdlbmVuIE9iamVrdGVuIChmdWVyIC9zdGQvY2xvdGhpbmcvd2VhcikKKworQVJHVU1FTlRFOgorICAgICBydWVzdCAob2JqZWN0KQorICAgICAgICAgIERpZSBSdWVzdHVuZy9LbGVpZHVuZywgZGllIGF1c2dlem9nZW4gd2VyZGVuIHNvbGwuCisgICAgIGluZm8gKGludCkKKyAgICAgICAgICBCZWkgKGluZm8mTV9TSUxFTlQpIHdpcmQga2VpbmUgTWVsZHVuZyB1ZWJlciBkYXMgQXVzemllaGVuCisgICAgICAgICAgYXVzZ2VnZWJlbi4KKyAgICAgICAgICBCZWkgKGluZm8mTV9OT0NIRUNLKSB3aXJkIGRpZSBLbGVpZHVuZyBhdXNnZXpvZ2VuLCBlZ2FsIHdhcyBkaWVzZQorICAgICAgICAgIEZ1bmt0aW9uIHp1cnVlY2tnaWJ0LiBEaWVzIHRyaXR0IGluc2Jlc29uZGVyZSBkYW5uIGF1Ziwgd2VubiBkZXIKKyAgICAgICAgICBTcGllbGVyLCBkZXIgZGllIFJ1ZXN0dW5nIHRyYWVndCwgc3RpcmJ0IHVuZCBkaWUgUnVlc3R1bmcgaW4KKyAgICAgICAgICBkaWUgTGVpY2hlIGJld2VndCB3aXJkLgorICAgICB1c2VyIChvYmplY3QpCisgICAgICAgICAgRGFzIExlYmV3ZXNlbiwgd2VsY2hlcyBkaWUgUnVlc3R1bmcvS2xlaWR1bmcgZ2VyYWRlIHRyYWVndCB1bmQgc2llCisgICAgICAgICAgYXVzemllaGVuIHdpbGwuCisKK0JFU0NIUkVJQlVORzoKKyAgICAgTWl0IGRpZXNlciBGdW5rdGlvbiBrYW5uIG1hbiBwcnVlZmVuLCBvYiBzaWNoIGRhcyBLbGVpZHVuZ3NzdHVlY2sgYnp3LgorICAgICBSdWVzdHVuZyA8cnVlc3Q+IHZvbiB0aGlzX3BsYXllcigpIGF1c3ppZWhlbiBsYWVzc3Qgb2RlciBuaWNodC4KKyAgICAgS2FubiBkaWUgUnVlc3R1bmcgYXVzZ2V6b2dlbiB3ZXJkZW4sIHNvIG11c3MgZWluIFdlcnQgdW5nbGVpY2ggMAorICAgICB6dXJ1ZWNrZ2VnZWJlbiB3ZXJkZW4uCisgICAgIAorICAgICBEaWVzZSBGdW5rdGlvbiBtZWxkZXQgbnVyIGVpbmVuIF9XdW5zY2hfIGFuLiBEaWVzZXIga2FubiBpZ25vcmllcnQKKyAgICAgd2VyZGVuICh6LkIuIGJlaSBiZXN0aW1tdGVuIEJld2VndW5nZW4sIFRvZCBkZXMgU3BpZWxlcnMgZXRjLikuCisgICAgIFVuYWJoYWVuZ2lnIHZvbSBXZXJ0IGRpZXNlciBGdW5rdGlvbiBrYW5uIGRhcyBBdXN6aWVoZW4gbm9jaCBTY2hlaXRlcm4KKyAgICAgb2RlciBFcnp3dW5nZW4gd2VyZGVuLgorICAgICBXZW5uIGlociBzaWNoZXIgc2VpbiB3b2xsdCwgZGFzcyBkZXIgU3BpZWxlciBlaW4gT2JqZWt0IGFuZ2V6b2dlbiBoYXQsCisgICAgIGJlbnV0enQgYml0dGUgSW5mb3JtVW53ZWFyKCkuCisKK1JVZUNLR0FCRVdFUlQ6CisgICAgIDAsIHdlbm4gc2ljaCBkaWUgUnVlc3R1bmcgbmljaHQgYXVzemllaGVuIGxhZXNzdCwgYW5zb25zdGVuIHVuZ2xlaWNoIDAuCisKK0JFTUVSS1VOR0VOOgorICAgICBWZXJmbHVjaHRlIFJ1ZXN0dW5nZW4sIGRpZSBzaWNoIGVyc3QgbmFjaCBFbnRmZXJudW5nIGRlcyBGbHVjaGVzIHdpZWRlcgorICAgICBhdXN6aWVoZW4gbGFzc2VuLCBzb2xsdGUgbWFuIGJlc3NlciBtaXQgUF9DVVJTRUQgcmVhbGlzaWVyZW4gKG1hbiBzcGFydAorICAgICBkaWUgUmVtb3ZlRnVuYygpIGVpbikuCisgICAgIEJpdHRlIG5pY2h0IGRyYXVmIHZlcmxhc3NlbiwgZGFzcyB0aGlzX3BsYXllcigpIGRhcyBhdXN6aWVoZW5kZSBMZWJld2VzZW4KKyAgICAgaXN0LgorICAgICBEaWUgUmVpaGVuZm9sZ2UgZGVyIEFyZ3VtZW50ZSBpc3QgZXR3YXMgdW5zY2hvZW4sIGFiZXIgbGVpZGVyIHd1cmRlIDx1c2VyPgorICAgICBlcmhlYmxpY2ggc3BhZXRlciBoaW56dWdlZnVlZ3QgdW5kIGVzIHdhciB1bm1vZWdsaWNoLCBlaW5pZ2UgaHVuZGVydAorICAgICBPYmpla3RlIHp1IGFlbmRlcm4uCisKK0JFSVNQSUVMRToKKyAgICAgRWluIFVtaGFuZywgZGVuIG1hbiBudXIgbWl0IGd1dGVyIEVpbnN0ZWxsdW5nIHdpZWRlciBhdXN6aWVoZW4ga2FubjoKKworICAgICBpbmhlcml0ICJzdGQvYXJtb3VyLmMiOworCisgICAgICNpbmNsdWRlIDxwcm9wZXJ0aWVzLmg+CisgICAgICNpbmNsdWRlIDxtb3ZpbmcuaD4KKworICAgICBjcmVhdGUoKQorICAgICB7CisgICAgICAgOjpjcmVhdGUoKTsKKworICAgICAgIFNldFByb3AoUF9BUk1PVVJfVFlQRSwgQVRfQ0xPQUspOworICAgICAgIC8qIHppZyB3ZWl0ZXJlIFNldFByb3AncywgdW0gZGVuIFVtaGFuZyB6dSBrb25maWd1cmllcmVuICovCisKKyAgICAgICAvKiBSZW1vdmVGdW5jKCkgaXN0IGltIFVtaGFuZyBzZWxic3QgenUgZmluZGVuICovCisgICAgICAgU2V0UHJvcChQX1JFTU9WRV9GVU5DLCB0aGlzX29iamVjdCgpKTsKKyAgICAgfQorCisgICAgIGludCBSZW1vdmVGdW5jKG9iamVjdCBtZSwgaW50IGluZm8sIG9iamVjdCB1c2VyKQorICAgICB7CisgICAgICAgaWYgKHVzZXItPlF1ZXJ5UHJvcChQX0FMSUdOKSA+PSAwIHx8IChpbmZvJk1fTk9DSEVDSykpCisgICAgICAgICByZXR1cm4gMTsgICAvKiBndXRlIENoYXJha3RlcmUga29lbm5lbiBkZW4gVW1oYW5nIGF1c3ppZWhlbiAqLworCisgICAgICAgLyogQW5zb25zdGVuIGdlYmVuIHdpciBldnRsLiBlaW5lbiBlbnRzcHJlY2hlbmRlbiBIaW53ZWlzIGF1czogKi8KKyAgICAgICBpZiAoIShpbmZvJk1fU0lMRU5UKSkKKyAgICAgICAgICAgd3JpdGUoICJEZXIgVW1oYW5nIHdpcmQgdm9uIERlaW5lciBCb3NoZWl0IHNvIHNlaHIgIgorICAgICAgICAgICAgICAgICArImFuZ2V6b2dlbiwgZGFzcyBEdSBpaG5cbm5pY2h0IG1laHIgYXVzemllaGVuIGthbm5zdCFcbiIpOworICAgICAgIHJldHVybiAwOworICAgICB9CisKK1NJRUhFIEFVQ0g6CisgICAgIFBfV0VBUl9NU0csIFBfVU5XRUFSX01TRywgUF9XSUVMRF9NU0csIFBfVU5XSUVMRF9NU0cKKyAgICAgRG9VbndlYXIoKSwgRG9XZWFyKCksIEluZm9ybVdlYXIoKSwgSW5mb3JtVW53ZWFyKCkKKyAgICAgL3N0ZC9jbG90aGluZy93ZWFyLmMKKworLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorMDIuMDcuMjAxMywgWmVzc3RyYQorCmRpZmYgLS1naXQgYS9kb2MvbGZ1bi9SZW1vdmVJZCBiL2RvYy9sZnVuL1JlbW92ZUlkCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjg1ZTcwOTkKLS0tIC9kZXYvbnVsbAorKysgYi9kb2MvbGZ1bi9SZW1vdmVJZApAQCAtMCwwICsxLDI2IEBACitSZW1vdmVJZCgpCisKK0ZVTktUSU9OOgorICAgICB2b2lkIFJlbW92ZUlkKHN0cmluZ3xzdHJpbmcqIGlkcyk7CisKK0RFRklOSUVSVCBJTjoKKyAgICAgL3N0ZC90aGluZy9kZXNjcmlwdGlvbi5jCisKK0FSR1VNRU5URToKKyAgICAgaWRzCisgICAgICAgICAgU3RyaW5nIG9kZXIgQXJyYXkgdm9uIFN0cmluZ3MgbWl0IGRlbiBCZXplaWNobnVuZ2VuLCBkaWUgYXVzIGRlcgorICAgICAgICAgIExpc3RlIGRlciBJRHMgZGVzIE9iamVrdGVzIGVudGZlcm50IHdlcmRlbiBzb2xsZW4uCisKK0JFU0NIUkVJQlVORzoKKyAgICAgV2VubiBlaW4gT2JqZWt0IHNpY2ggbmljaHQgbWVociBtaXQgZ2V3aXNzZW4gQmV6ZWljaG5lcm4gYW5zcHJlY2hlbgorICAgICBsYXNzZW4gc29sbCwga2FubiBtYW4gZGllc2UgbWl0IGRpZXNlciBGdW5rdGlvbiBlbnRmZXJuZW4uCisKK1JVZUNLR0FCRVdFUlQ6CisgICAgIGtlaW5lcgorCitTSUVIRSBBVUNIOgorICAgICBBZGRJZCgpLCBSZW1vdmVBZGplY3RpdmUoKSwgL3N0ZC90aGluZy9kZXNjcmlwdGlvbi5jCisKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKzIwLjAxLjIwMTUsIFplc3N0cmEKKwpkaWZmIC0tZ2l0IGEvZG9jL2xmdW4vUmVtb3ZlSW5mbyBiL2RvYy9sZnVuL1JlbW92ZUluZm8KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNWNlZDYyYwotLS0gL2Rldi9udWxsCisrKyBiL2RvYy9sZnVuL1JlbW92ZUluZm8KQEAgLTAsMCArMSwyNCBAQAorUmVtb3ZlSW5mbygpCitGVU5LVElPTjoKKyAgICAgdm9pZCBSZW1vdmVJbmZvKHN0cmluZyBrZXkpCisKK0RFRklOSUVSVCBJTjoKKyAgICAgL3N0ZC9ucGMvaW5mby5jCisKK0FSR1VNRU5URToKKyAgICAga2V5CXp1IGxvZXNjaGVuZGVyIFNjaGx1ZXNzZWwKKworQkVTQ0hSRUlCVU5HOgorICAgICBMb2VzY2h0IGRpZSBBbnR3b3J0IHp1bSBlbnRzcHJlY2hlbmRlbiBGcmFnZXNjaGx1ZXNzZWwuCisKK0JFSVNQSUVMOgorICAgICAvLyBlcnN0ZWxsZW4gdW5kIGxvZXNjaGVuCisgICAgIEFkZEluZm8oImdvbGQiLCJzYWd0OiBJY2ggaGFiZSBrZWluZXMuXG4iKTsKKyAgICAgUmVtb3ZlSW5mbygiZ29sZCIpOworCitTSUVIRSBBVUNIOgorICAgICBBZGRJbmZvKEwpLCBBZGRTcGVjaWFsSW5mbyhMKQorICAgICBQX1BSRV9JTkZPLCBQX0RFRkFVTFRfSU5GTworICAgICAvc3RkL25wYy9pbmZvLmMKKworMTcuQXVnLjIwMDMgR2xvaW5zb24KZGlmZiAtLWdpdCBhL2RvYy9sZnVuL1JlbW92ZUl0ZW0gYi9kb2MvbGZ1bi9SZW1vdmVJdGVtCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmFhNDU0ZjcKLS0tIC9kZXYvbnVsbAorKysgYi9kb2MvbGZ1bi9SZW1vdmVJdGVtCkBAIC0wLDAgKzEsNDEgQEAKK1JlbW92ZUl0ZW0oKQorCitGVU5LVElPTjoKKwl2b2lkIFJlbW92ZUl0ZW0obWl4ZWQgZmlsZSk7CisKK0RFRklOSUVSVCBJTjoKKwkvc3RkL3Jvb20vaXRlbXMuYworCitBUkdVTUVOVEU6CisJZmlsZQorCSAgICAgU3RyaW5nIG9kZXIgQXJyYXkgdm9uIFN0cmluZ3MgbWl0IGRlbSBOYW1lbiBkZXMgenUgZW50ZmVybmVuZGVuCisJICAgICBPYmpla3RzLgorCitCRVNDSFJFSUJVTkc6CisJRGFzIG1pdCBBZGRJdGVtKGZpbGUpIGRlbSBSYXVtIGhpbnp1Z2VmdWVndGUgT2JqZWt0IHdpcmQgd2llZGVyIGF1cworCWRlciBMaXN0ZSBkZXIgT2JqZWt0ZSBlbnRmZXJudC4KKwlXdXJkZSBiZWkgQWRkSXRlbSgpIGVpbiBBcnJheSB2b24gRGF0ZWluYW1lbiB1ZWJlcmdlYmVuLCBzbyBtdXNzIGRhcworCXNlbGJlIEFycmF5IGF1Y2ggYmVpIFJlbW92ZUl0ZW0oKSB1ZWJlcmdlYmVuIHdlcmRlbiEKKwlGYWxscyBkYXMgT2JqZWt0LCBkYXMgZHVyY2ggZGVuIEFkZEl0ZW0oKS1BdWZydWYgZXJ6ZXVndCB3dXJkZSwgc2ljaAorCW5vY2ggaW0gUmF1bSBiZWZpbmRldCwgd2lyZCBlcyBkdXJjaCBkZW4gUmVtb3ZlSXRlbSgpLUF1ZnJ1ZiB6ZXJzdG9lcnQuCisKK1JVRUNLR0FCRVdFUlQ6CisJa2VpbmVyCisKK0JFSVNQSUVMRToKKwlFaW4gbXVlbGxzY2hsdWNrZXJmcmVpZXIgTGFkZW4gbGFlc3N0IHNpY2ggd2llIGZvbGd0IGVyemV1Z2VuOgorCisJaW5oZXJpdCAiL3N0ZC9sYWRlbiI7CisJI2luY2x1ZGUgPHByb3BlcnRpZXMuaD4KKworCWNyZWF0ZSgpCisJeworCSAgOjpjcmVhdGUoKTsgIC8vIEhpZXIgd2lyZCB1LmEuIGRlciBNdWVsbHNjaGx1Y2tlciBlcnpldWd0CisKKwkgIFJlbW92ZUl0ZW0oIi9vYmovZW50c29yZyIpOyAvLyB1bmQgd2VnIGRhbWl0IQorCisJICBTZXRQcm9wKC4uLik7ICAvLyB1bmQgZGllIG5vcm1hbGUgQmVzY2hyZWlidW5nLi4uCisJfQorCitTSUVIRSBBVUNIOgorCUFkZEl0ZW0oKSwgL3N0ZC9yb29tL2l0ZW1zLmMKZGlmZiAtLWdpdCBhL2RvYy9sZnVuL1JlbW92ZUtub3duUG90aW9uIGIvZG9jL2xmdW4vUmVtb3ZlS25vd25Qb3Rpb24KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNWIxNDE4YwotLS0gL2Rldi9udWxsCisrKyBiL2RvYy9sZnVuL1JlbW92ZUtub3duUG90aW9uCkBAIC0wLDAgKzEsMjUgQEAKK1JlbW92ZUtub3duUG90aW9uKCkKKworRlVOS1RJT046CisgICAgIGludCBSZW1vdmVLbm93blBvdGlvbihpbnQgbnIpCisKK0RFRklOSUVSVCBJTjoKKyAgICAgL3N0ZC9wbGF5ZXIvcG90aW9uLmMKKworQVJHVU1FTlRFOgorICAgICBpbnQgbnIgICAgICAgTnVtbWVyIGVpbmVzIFpUcworCitCRVNDSFJFSUJVTkc6CisgICAgIEVudGZlcm50IGVpbmVuIGJla2FubnRlbiBaVCBhdXMgZWluZW4gU3BpZWxlci4gTnVyIHZvbSBPcmFrZWwgcnVmYmFyLgorCitSVWVDS0dBQkVXRVJUOgorICAgICAxICBFcmZvbGcKKyAgICAgLTEgZmVobGVuZGUgQmVyZWNodGlndW5nCisgICAgIC0yIE51bW1lciBuaWNodCBlaW5nZXRyYWdlbgorCitTSUVIRSBBVUNIOgorICAgICBTb25zdGlnZXM6IHphdWJlcnRyYWVua2UsIC9zZWN1cmUvcG90aW9ubWFzdGVyLmMsIC9yb29tL29yYWtlbC5jCisgICAgIFZlcndhbmR0OiAgRmluZFBvdGlvbigpLCBBZGRLbm93blBvdGlvbigpLCBJbkxpc3QoKQorICAgICBQcm9wczogICAgIFBfUE9USU9OUk9PTVMsIFBfS05PV05fUE9USU9OUk9PTVMKKworNi5GZWIgMjAxNiBHbG9pbnNvbgpkaWZmIC0tZ2l0IGEvZG9jL2xmdW4vUmVtb3ZlUGx1cmFsSWQgYi9kb2MvbGZ1bi9SZW1vdmVQbHVyYWxJZApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4wOTYwZTAyCi0tLSAvZGV2L251bGwKKysrIGIvZG9jL2xmdW4vUmVtb3ZlUGx1cmFsSWQKQEAgLTAsMCArMSwyOCBAQAorUmVtb3ZlUGx1cmFsSWQoKQorCitGVU5LVElPTjoKKyAgICAgdm9pZCBSZW1vdmVQbHVyYWxJZChtaXhlZCBpZCk7CisKK0RFRklOSUVSVCBJTjoKKyAgICAgL3N0ZC91bml0LmMKKworQVJHVU1FTlRFOgorICAgICBpZAorICAgICAgICAgIElkZW50ZmlrYXRpb25zc3RyaW5nIG9kZXIgQXJyYXkgdm9uIFN0cmluZ3MKKworQkVTQ0hSRUlCVU5HOgorICAgICBFcyB3ZXJkZW4gZWluIG9kZXIgbWVocmVyZSBCZXplaWNobmVyIGVudGZlcm50LCBtaXQgZGVuZW4gc2ljaCAKKyAgICAgbWVocmVyZSBFaW5oZWl0ZW4gZGVyIE1lbmdlIGFuc3ByZWNoZW4gbGFzc2VuLgorCitSVUVDS0dBQkVXRVJUOgorICAgICBrZWluZXIKKworQkVJU1BJRUxFOgorICAgICBzaWVoZSAvaXRlbXMvbW9uZXkuYworCitTSUVIRSBBVUNIOgorICAgICBSZW1vdmVTaW5ndWxhcklkKCksIEFkZFBsdXJhbElkKCksIEFkZElkKCksIGlkKCksIC9zdGQvdW5pdC5jCisKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KK0xhc3QgbW9kaWZpZWQ6IE1vbiBKdWwgMTQgMTE6MzA6MDAgMTk5NyBieSBTaWx2YW5hCisKZGlmZiAtLWdpdCBhL2RvYy9sZnVuL1JlbW92ZVB1cnN1ZXIgYi9kb2MvbGZ1bi9SZW1vdmVQdXJzdWVyCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjhiYTIzNTgKLS0tIC9kZXYvbnVsbAorKysgYi9kb2MvbGZ1bi9SZW1vdmVQdXJzdWVyCkBAIC0wLDAgKzEsMjYgQEAKK1JlbW92ZVJ1cnN1ZXIoKQorCitGVU5LVElPTjoKKyAgdm9pZCBSZW1vdmVQdXJzdWVyKG9iamVjdCBwdXJzdWVyKQorCitBUkdVTUVOVEU6CisgIHB1cnN1ZXI6IE9iamVrdCwgZGFzIGF1cyBkZXIgVmVyZm9sZ2VybGlzdGUgZGVzIE9iamVrdGVzLCBpbiBkZW0KKyAgICAgICAgICAgUmVtb3ZlUHVyc3VlciBhdWZnZXJ1ZmVuIHd1cmRlLCBhdXNnZXRyYWdlbiB3ZXJkZW4gc29sbC4KKworRlVOS1RJT046CisgIER1cmNoIGRlbiBBdWZydWYgdm9uIFJlbW92ZVB1cnN1ZXIgaW4gZWluZW0gT2JqZWt0LCB3ZWxjaGVzIGxpdmluZygpIGlzdCwKKyAgd2lyZCBkYXMgT2JqZWN0LCB3ZWxjaGVzIGFscyBBcmd1bWVudCB1ZWJlcmdlYmVuIHd1cmRlIGF1cyBkZXIgTGlzdGUKKyAgZGVyIFZlcmZvbGdlciBhdXNnZXRyYWdlbi4KKworUlVFQ0tHQUJFV0VSVDoKKyAga2VpbmVyCisKK0JFTUVSS1VORzoKKyAga2VpbmUKKworQkVJU1BJRUxFOgorICBmaW5kX3BsYXllcigiam9mIiktPlJlbW92ZVB1cnN1ZXIoZmluZF9wbGF5ZXIoImtpcmsiKSkKKyAgRGFuYWNoIHdpcmQgSm9mIG5pY2h0IG1laHIgdm9uIEtpcmsgdmVyZm9sZ3QuCisKK1NJRUhFIEFVQ0g6CisgICJBZGRQdXJzdWVyIiwgIlByZXZlbnRGb2xsb3ciCmRpZmYgLS1naXQgYS9kb2MvbGZ1bi9SZW1vdmVSZWFkRGV0YWlsIGIvZG9jL2xmdW4vUmVtb3ZlUmVhZERldGFpbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5mMzU3OTU0Ci0tLSAvZGV2L251bGwKKysrIGIvZG9jL2xmdW4vUmVtb3ZlUmVhZERldGFpbApAQCAtMCwwICsxLDMxIEBACitSZW1vdmVSZWFkRGV0YWlsKCkKKworRlVOS1RJT046CisgICAgdm9pZCBSZW1vdmVSZWFkRGV0YWlsKHN0cmluZ3xzdHJpbmcqIGtleXMpOworCitERUZJTklFUlQgSU46CisgICAgL3N0ZC90aGluZy9kZXNjcmlwdGlvbi5jCisKK0FSR1VNRU5URToKKyAgICBrZXlzCisgICAgICAgICBTdHJpbmcgb2RlciBBcnJheSB2b24gU3RyaW5ncyBtaXQgZGVuIHp1IGVudGZlcm5lbmRlbiBEZXRhaWxzLgorCitCRVNDSFJFSUJVTkc6CisgICAgRW50ZmVybnQgZGllIGluIGtleXMgYW5nZWdlYmVuZW4gRGV0YWlscyBhdXMgZGVyIExpc3RlIGRlciB2b3JoYW5kZW5lbgorICAgIGxlc2JhcmVuIERldGFpbHMuCisKK0JFTUVSS1VOR0VOOgorICAgIFVlYmVyZ2lidCBtYW4gZnVlciBrZXlzIGVpbmUgMCwgc28gd2VyZGVuIHNhZW10bGljaGUgbGVzYmFyZW4gRGV0YWlscworICAgIGVudGZlcm50IQorCitTSUVIRSBBVUNIOgorICAgIFNldHplbjogICAgQWRkRGV0YWlsKCksIEFkZFJlYWREZXRhaWwoKSwgQWRkU21lbGxzKCksIEFkZFNvdW5kcygpLAorICAgICAgICAgICAgICAgQWRkVG91Y2hEZXRhaWwoKQorICAgIExvZXNjaGVuOiAgUmVtb3ZlRGV0YWlsKCksIFJlbW92ZVNtZWxscygpLAorICAgICAgICAgICAgICAgUmVtb3ZlU291bmRzKCksIFJlbW92ZVRvdWNoRGV0YWlsKCkKKyAgICBEYXRlbjogICAgIFBfREVUQUlMUywgUF9SRUFEX0RFVEFJTFMsIFBfU01FTExTLCBQX1NPVU5EUywgUF9UT1VDSF9ERVRBSUxTCisgICAgVmVyYWx0ZXQ6ICBBZGRTcGVjaWFsRGV0YWlsKCksIFJlbW92ZVNwZWNpYWxEZXRhaWwoKSwgUF9SRUFEX01TRworICAgIFNvbnN0aWdlczogR2V0RGV0YWlsKCksIGJyZWFrX3N0cmluZygpCisKKzIwLjAxLjIwMTUsIFplc3N0cmEKKwpkaWZmIC0tZ2l0IGEvZG9jL2xmdW4vUmVtb3ZlUmVzaXN0YW5jZU1vZGlmaWVyIGIvZG9jL2xmdW4vUmVtb3ZlUmVzaXN0YW5jZU1vZGlmaWVyCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjBlNjMwZmIKLS0tIC9kZXYvbnVsbAorKysgYi9kb2MvbGZ1bi9SZW1vdmVSZXNpc3RhbmNlTW9kaWZpZXIKQEAgLTAsMCArMSwzNyBAQAorUmVtb3ZlUmVzaXN0YW5jZU1vZGlmaWVyKCkKKworRlVOS1RJT046CisgICAgIHZhcmFyZ3Mgdm9pZCBSZW1vdmVSZXNpc3RhbmNlTW9kaWZpZXIoc3RyaW5nIGFkZCk7CisKK0RFRklOSUVSVCBJTjoKKyAgICAgL3N0ZC9saXZpbmcvY29tYmF0LmMKKworQVJHVU1FTlRFOgorICAgICBzdHJpbmcgYWRkOgorICAgICAgRWluIGV2ZW50dWVsbGVyIElkZW50aWZpa2F0b3IgZnVlciBlaW5lbiBnZXNldHp0ZW4gTW9kaWZpa2F0b3IuCisKK0JFU0NIUkVJQlVORzoKKyAgICAgRGllIHZvbiBlaW5lbSBPYmpla3QgaW0gWmllbG9iamVrdCBnZXNldHp0ZSBSZXNpc3Rlbnogd2lyZCBnZWxvZXNjaHQsCisgICAgIGRlciBTY2hsdWVzc2VsIGFkZCB3aXJkIGRhenUgYmVudXR6dCwgZWluZSBiZXN0aW1tdGUgUmVzaXN0ZW56IHp1CisgICAgIGxvZXNjaGVuIChzbyBrYW5uIGVpbiBzZXR6ZW5kZXMgT2JqZWt0IG1laHJlcmUgdmVyc2NoaWVkZW5lIFJlLQorICAgICBzaXN0ZW56ZW4gc2V0emVuIHVuZCBzZWxla3RpdiBsb2VzY2hlbikuCisKK0JFSVNQSUVMRToKKyAgICAgLy8gdW5zZXIgT2VsIGF1cyBBZGRSZXNpc3RhbmNlTW9kaWZpZXIoKSB2ZXJicmVubnQgZW5kZ3VlbHRpZworICAgICB2YXJhcmdzIHZvaWQgdHJpZ2dlcl9zZW5zaXRpdmVfYXR0YWNrKCkgeworICAgICAgLi4uCisgICAgICBpZihlbnZpcm9ubWVudCgpICYmIGxpdmluZyhlbnZpcm9ubWVudCgpKSkgeworICAgICAgIGVudmlyb25tZW50KCktPlJlbW92ZVJlc2lzdGFuY2VNb2RpZmllcigib2VsIik7CisgICAgICAgdGVsbF9vYmplY3QoZW52aXJvbm1lbnQoKSwiRGFzIE9lbCB2ZXJicmVubnQgZW5kZ3VlbHRpZy5cbiIpOworICAgICAgfQorICAgICAgcmVtb3ZlKCk7CisgICAgIH0KKworU0lFSEUgQVVDSDoKKyAgICAgTW9kaWZpa2F0b3JlbjoJQWRkUmVzaXN0YW5jZU1vZGlmaWVyLCBQX1JFU0lTVEFOQ0VfTU9ESUZJRVIKKyAgICAgc2ltcGxlIFJlc2lzdGVuejoJUF9SRVNJU1RBTkNFLCBQX1ZVTE5FUkFCSUxJVFkKKyAgICAgSGF1cHRtYXBwaW5nOglQX1JFU0lTVEFOQ0VfU1RSRU5HVEhTCisgICAgIEJlcmVjaG51bmc6CUNoZWNrUmVzaXN0YW5jZSgpLCBVcGRhdGVSZXNpc3RhbmNlU3RyZW5ndGhzKCkKKyAgICAgYW5kZXJlczoJCWJhbGFuY2UsIC9zdGQvYXJtb3VyL2NvbWJhdC5jLCAvc3RkL2xpdmluZy9jb21iYXQuYworCisyOS5BcHIgMjAwMiwgR2xvaW5zb25ATUcKZGlmZiAtLWdpdCBhL2RvYy9sZnVuL1JlbW92ZVJvdXRlIGIvZG9jL2xmdW4vUmVtb3ZlUm91dGUKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZTMwMTcxOQotLS0gL2Rldi9udWxsCisrKyBiL2RvYy9sZnVuL1JlbW92ZVJvdXRlCkBAIC0wLDAgKzEsMjMgQEAKK1JlbW92ZVJvdXRlKCkKKworRlVOS1RJT046CisgICAgIHZvaWQgUmVtb3ZlUm91dGUoKTsKKworREVGSU5JRVJUIElOOgorICAgICAvc3RkL3RyYW5zcG9ydC5jCisKK0FSR1VNRU5URToKKyAgICAga2VpbmUKKworQkVTQ0hSRUlCVU5HOgorICAgICBEZXIgVHJhbnNwb3J0ZXIgd2lyZCBhbmdlaGFsdGVuIHVuZCBkZXIgZ2VzYW10ZSBGYWhycGxhbiB3aXJkCisgICAgIGdlbG9lc2NodC4gRGFtaXQgbGFzc2VuIHNpY2ggenVtIEJlaXNwaWVsIHZhcmlhYmxlIFJvdXRlbiBrb25zdHJ1aWVyZW4uCisKK1JVZUNLR0FCRVdFUlQ6CisgICAgIGtlaW5lcgorCitTSUVIRSBBVUNIOgorICAgICBBZGRSb3V0ZSgpLCBBZGRNc2coKSwgQWRkRnVuKCksIC9zdGQvdHJhbnNwb3J0LmMKKworLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorTGFzdCBtb2RpZmllZDogV2VkIE1heSA4IDEwOjI0OjI2IDE5OTYgYnkgV2FyZ29uCmRpZmYgLS1naXQgYS9kb2MvbGZ1bi9SZW1vdmVTZW5zaXRpdmVPYmplY3QgYi9kb2MvbGZ1bi9SZW1vdmVTZW5zaXRpdmVPYmplY3QKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNWY2ZTBkYwotLS0gL2Rldi9udWxsCisrKyBiL2RvYy9sZnVuL1JlbW92ZVNlbnNpdGl2ZU9iamVjdApAQCAtMCwwICsxLDU2IEBACitSZW1vdmVTZW5zaXRpdmVPYmplY3QoKQorRlVOS1RJT046CisgICAgIHZvaWQgUmVtb3ZlU2Vuc2l0aXZlT2JqZWN0KG9iamVjdCBvYikKKworREVGSU5JRVJUIElOOgorICAgICAvc3RkL2NvbnRhaW5lci9pbnZlbnRvcnkuYworICAgICBnZW5lcmFsaXplcyAvc3RkL2xpdmluZy9pbnZlbnRvcnkuYworCitBUkdVTUVOVEU6CisgICAgIG9iIC0genUgZW50ZmVybmVuZGVzIE9iamVrdAorCitCRVNDSFJFSUJVTkc6CisgICAgIEVudGZlcm50IG9iIGF1cyBkZW4gQmVuYWNocmljaHRpZ3VuZ3NsaXN0ZW4gZGVzIENvbnRhaW5lcnMuCisgICAgIFdpcmQgdm9uIHRoaW5nL21vdmluZy5jIGltIGFsdGVuIEVudmlyb25tZW50IGdlcnVmZW4sIHdlbm4KKyAgICAgUF9TRU5TSVRJVkUgZ2VzZXR6dCBpc3QuCisgICAgIFJ1ZnQgZGF6dSBSZW1vdmVTZW5zaXRpdmVPYmplY3RGcm9tTGlzdCgpLgorCitCRU1FUktVTkdFTjoKKyAgICAgU2V0enQgbWFuIFBfU0VOU0lUSVZFIG5pY2h0IGFscyBEZWZhdWx0IHNvbmRlcm4gc2l0dWF0aW9uc2FiaGFlbmdpZywKKyAgICAgZGFubiBtdXNzIG1hbiBhdWNoIFJlbW92ZVNlbnNpdGl2ZU9iamVjdCBpbSBFbnZpcm9ubWVudAorICAgICBhdWNoIHNlbGJzdCBydWZlbiEKKworQkVJU1BJRUw6CisgICAgIC8vIEZhY2tlbCAoaW5oZXJpdGluZyBsaWdodHNvdXJjZSkKKyAgICAgdm9pZCBjcmVhdGUoKSB7CisgICAgIC4uLgorICAgICAgIFNldFByb3AoUF9TRU5TSVRJVkUsCisgICAgICAgICh7KHtTRU5TSVRJVkVfSU5WRU5UT1JZX1RSSUdHRVIsRFRfRklSRSwxMjB9KX0pKTsKKyAgICAgLi4uCisgICAgIH0KKworICAgICAvLyB3ZW5uIGRpZSBGYWNrZWwgZ2Vsb2VzY2h0IHdpcmQsIHZlcmxpZXJ0IHNpZSBpaHJlIGFrdGl2ZQorICAgICAvLyBFaWdlbnNjaGFmdCB1bmQgbXVzcyBkYXMgZGVtIGVudmlyb25tZW50KCkgbWl0dGVpbGVuCisgICAgIHN0YXRpYyBpbnQgZXh0aW5ndWlzaChzdHJpbmcgc3RyKSB7CisgICAgICBpbnQgaTsKKyAgICAgIGk9OjpleHRpbmd1aXNoKHN0cik7CisgICAgICBpZihpICYmIFF1ZXJ5UHJvcChQX0xJR0hUKTw9MCkgeworICAgICAgIFNldFByb3AoUF9TRU5TSVRJVkUsMCk7CisgICAgICAgaWYoZW52aXJvbm1lbnQoKSkKKyAgICAgICAgZW52aXJvbm1lbnQoKS0+UmVtb3ZlU2Vuc2l0aXZlT2JqZWN0KHRoaXNfb2JqZWN0KCkpOworICAgICAgfQorICAgICAgcmV0dXJuIGk7CisgICAgIH0KKworICAgICAtIGVtcGZpbmRsaWNoZSBPYmpla3RlIHdpZSBFaXN6YXBmZW4ga29lbm5lbiBqZXR6dCB3aWVkZXIgZ2VmYWhybG9zCisgICAgICAgaW4gZGFzIHNlbGJlIGVudmlyb25tZW50KCkgYmV3ZWd0IHdlcmRlbgorCitTSUVIRSBBVUNIOgorICAgICBQX1NFTlNJVElWRQorICAgICBJbnNlcnRTZW5zaXRpdmVPYmplY3QKKyAgICAgaW5zZXJ0X3NlbnNpdGl2ZV9pbnZfdHJpZ2dlciwgaW5zZXJ0X3NlbnNpdGl2ZV9pbnYKKyAgICAgUF9TRU5TSVRJVkVfQVRUQUNLLCBQX1NFTlNJVElWRV9JTlZFTlRPUlksIFBfU0VOU0lUSVZFX0lOVkVOVE9SWV9UUklHR0VSCisgICAgIENoZWNrU2Vuc2l0aXZlQXR0YWNrCisKKzI1LkFwci4yMDAxLCBHbG9pbnNvbkBNRworCmRpZmYgLS1naXQgYS9kb2MvbGZ1bi9SZW1vdmVTaW5ndWxhcklkIGIvZG9jL2xmdW4vUmVtb3ZlU2luZ3VsYXJJZApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4wMTY5OTljCi0tLSAvZGV2L251bGwKKysrIGIvZG9jL2xmdW4vUmVtb3ZlU2luZ3VsYXJJZApAQCAtMCwwICsxLDI4IEBACitSZW1vdmVTaW5ndWxhcklkKCkKKworRlVOS1RJT046CisgICAgIHZvaWQgUmVtb3ZlU2luZ3VsYXJJZChtaXhlZCBpZCk7CisKK0RFRklOSUVSVCBJTjoKKyAgICAgL3N0ZC91bml0LmMKKworQVJHVU1FTlRFOgorICAgICBpZAorICAgICAgICAgIElkZW50aWZpa2F0aW9uc3N0cmluZyBvZGVyIEFycmF5IHZvbiBTdHJpbmdzCisKK0JFU0NIUkVJQlVORzoKKyAgICAgRXMgd2VyZGVuIGVpbiBvZGVyIG1laHJlcmUgQmV6ZWljaG5lciBlbnRmZXJudCwgbWl0IGRlbmVuIHNpY2ggZWluZQorICAgICBlaW56ZWxuZSBFaW5oZWl0IGFuc3ByZWNoZW4gbGFlc3N0LgorCitSVUVDS0dBQkVXRVJUOgorICAgICBrZWluZXIKKworQkVJU1BJRUxFOgorICAgICBzaWVoZSAvaXRlbXMvbW9uZXkuYworCitTSUVIRSBBVUNIOgorICAgICBBZGRTaW5ndWxhcklkKCksIFJlbW92ZVBsdXJhbElkKCksIEFkZElkKCksIGlkKCksIC9zdGQvdW5pdC5jCisKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KK0xhc3QgbW9kaWZpZWQ6IE1vbiBKdWwgMTQgMTE6MzE6MDAgMTk5NyBieSBTaWx2YW5hCisKZGlmZiAtLWdpdCBhL2RvYy9sZnVuL1JlbW92ZVNraWxsQXR0cmlidXRlTW9kaWZpZXIgYi9kb2MvbGZ1bi9SZW1vdmVTa2lsbEF0dHJpYnV0ZU1vZGlmaWVyCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjcxZGZkMTAKLS0tIC9kZXYvbnVsbAorKysgYi9kb2MvbGZ1bi9SZW1vdmVTa2lsbEF0dHJpYnV0ZU1vZGlmaWVyCkBAIC0wLDAgKzEsNTkgQEAKK1JlbW92ZVNraWxsQXR0cmlidXRlTW9kaWZpZXIoKQorRlVOS1RJT046CisgICAgcHVibGljIGludCBSZW1vdmVTa2lsbEF0dHJpYnV0ZU1vZGlmaWVyKG9iamVjdCBjYXN0ZXIsIHN0cmluZyBhdHJuYW1lKQorCitERUZJTklFUlQgSU46CisgICAgL3N0ZC9saXZpbmcvc2tpbGxfYXR0cmlidXRlcy5jCisKK0FSR1VNRU5URToKKyAgICA8YXRybmFtZT4gICBzdHJpbmcKKyAgICAgICAgICAgICAgICBOYW1lIGRlcyBTa2lsbC1BdHRyaWJ1dGVzLCB2b24gZGVtIGRlciBNb2RpZmlrYXRvciBnZWxvZXNjaHQKKyAgICAgICAgICAgICAgICB3ZXJkZW4gc29sbC4KKyAgICAgICAgICAgICAgICAoRGVmaW5pZXJ0IGluIC9zeXMvbGl2aW5nL3NraWxsX2F0dHJpYnV0ZXMuaCkKKworICAgIDxjYXN0ZXI+ICAgIG9iamVjdAorICAgICAgICAgICAgICAgIE9iamVrdCwgZGVzc2VuIE1vZGlmaWthdG9yIHdpZWRlciBlbnRmZXJudCB3ZXJkZW4gc29sbC4KKworQkVTQ0hSRUlCVU5HOgorICAgIEVudGZlcm50IGRlbiBNb2RpZmlrYXRvciwgZGVuIE9iamVjdCA8Y2FzdGVyPiBnZXNldHp0IGhhdCwgd2llZGVyLiBEaWVzCisgICAgaXN0IG51ciBub3R3ZW5kaWcsIHdlbm4gZGVyIEVmZmVrdCB2b3IgQWJsYXVmIGRlciBHdWVsdGlna2VpdCBkZXMKKyAgICBNb2RpZmlrYXRvcnMgYXVmZ2Vob2JlbiB3ZXJkZW4gc29sbC4KKworUlVFQ0tHQUJFV0VSVDoKKyAgICBTQV9NT0RfUkVNT1ZFRCAgICAgICAgIHdlbm4gZGVyIE1vZGlmaWthdG9yIGdlbG9lc2NodCB3dXJkZQorICAgIFNBX01PRF9OT1RfRk9VTkQgICAgICAgd2VubiBkZXIgTW9kaWZpa2F0b3IgbmljaHQgZ2VmdW5kZW4gd3VyZGUKKyAgICBXZW5uIG1hbiBudXIgd2lzc2VuIHdpbGwsIG9iIGRpZSBPcGVyYXRpb24gZXJmb2xncmVpY2ggd2FyLCBlbXBmaWVobHQgZXMKKyAgICBzaWNoLCBhdWYgPT0gU0FfTU9EX1JFTU9WRUQgenUgcHJ1ZWZlbi4KKworQkVJU1BJRUxFOgorICAgIC8vIGVpbmUgV2FmZmUgc2V0enQgaW0gSW5mb3JtV2llbGQoKSBlaW5lbiBCb251cyBhdWYgU0FfREFNQUdFIGZ1ZXIgMTBtaW4KKyAgICBwcm90ZWN0ZWQgdm9pZCBJbmZvcm1XaWVsZChvYmplY3QgcGwsIGludCBzaWxlbnQpIHsKKyAgICAgIGlmIChvYmplY3RwKHBsKSkgeworICAgICAgICBpZiAocGwtPk1vZGlmeVNraWxsQXR0cmlidXRlKFNBX0RBTUFHRSwgMjAsIDYwMCkgPT0gU0FfTU9EX09LKQorICAgICAgICAgIC8vIEVyZm9sZ3NtZWxkdW5nIGFuIFNwaWVsZXIKKyAgICAgICAgZWxzZQorICAgICAgICAgIC8vIE1pc3NlcmZvbGdzbWVsZHVuZyBhbiBTcGllbGVyLgorICAgICAgfQorICAgIH0KKworICAgIC8vIHdlbm4gZGVyIFNwaWVsZXIgZGllIFdhZmZlIHZvciBBYmxhdWYgZGVyIDYwMHMgd2Vnc3RlY2tlbiB3aWxsLCBtdXNzCisgICAgLy8gZGVyIEJvbnVzIG5hdHVlcmxpY2ggYXVjaCB3aWVkZXIgcmF1cworICAgIHByb3RlY3RlZCB2b2lkIEluZm9ybVVud2llbGQob2JqZWN0IHBsLCBpbnQgc2lsZW50KSB7CisgICAgICBpZiAob2JqZWN0cChwbCkpCisgICAgICAgIHBsLT5SZW1vdmVTa2lsbEF0dHJpYnV0ZU1vZGlmaWVyKHRoaXNfb2JqZWN0KCksIFNBX0RBTUFHRSk7CisgICAgICAgIC8vIGZhbGxzIGtlaW4gc29sY2hlciBNb2QgbWVociBnZXNldHp0IHdhciwgbGllZmVydCBSU0FNKCkKKyAgICAgICAgLy8gU0FfTU9EX05PVF9GT1VORCB6dXJ1ZWNrLiBBdXN3ZXJ0dW5nIGRlcyBSdWVja2dhYmV3ZXJ0ZXMgaXN0CisgICAgICAgIC8vIHZlcm5hY2hsYWVzc2lndC4KKyAgICB9CisgICAgCitTSUVIRSBBVUNIOgorICAgIFNraWxscyBMZXJuZW46ICBMZWFyblNraWxsLCBNb2RpZnlTa2lsbCwgTGltaXRBYmlsaXR5CisgICAgKiBOdXR6dW5nOiAgICAgIFVzZVNwZWxsLCBVc2VTa2lsbAorICAgICogQWJmcmFnZW46ICAgICBRdWVyeVNraWxsLCBRdWVyeVNraWxsQWJpbGl0eQorICAgICogTW9kaWZpa2F0aW9uOiBNb2RpZnlTa2lsbEF0dHJpYnV0ZSwgUXVlcnlTa2lsbEF0dHJpYnV0ZSwKKyAgICAgICAgICAgICAgICAgICAgUXVlcnlTa2lsbEF0dHJpYnV0ZU1vZGlmaWVyCisgICAgICAqIFByb3BlcnRpZXM6IFBfU0tJTExfQVRUUklCVVRFUywgUF9TS0lMTF9BVFRSSUJVVEVfT0ZGU0VUUworICAgICogc29uc3RpZzogICAgICBzcHJ1Y2hlcm11ZWR1bmcsIHNraWxsX2luZm9fbGlzdGUKKyAgICAqIFByb3BlcnRpZXM6ICAgUF9ORVdTS0lMTFMKKworMTMuMDguMjAwOCwgWmVzc3RyYQpkaWZmIC0tZ2l0IGEvZG9jL2xmdW4vUmVtb3ZlU21lbGxzIGIvZG9jL2xmdW4vUmVtb3ZlU21lbGxzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmNjNzIyMDcKLS0tIC9kZXYvbnVsbAorKysgYi9kb2MvbGZ1bi9SZW1vdmVTbWVsbHMKQEAgLTAsMCArMSwzOCBAQAorUmVtb3ZlU21lbGxzKCkKKworRlVOS1RJT046CisgICAgdm9pZCBSZW1vdmVTbWVsbHMoc3RyaW5nfHN0cmluZyoga2V5cyk7CisKK0RFRklOSUVSVCBJTjoKKyAgICAvc3RkL3RoaW5nL2Rlc2NyaXB0aW9uLmMKKworQVJHVU1FTlRFOgorICAgIGtleXMKKyAgICAgIFN0cmluZyBvZGVyIEFycmF5IHZvbiBTdHJpbmdzIG1pdCBkZW4genUgZW50ZmVybmVuZGVuIERldGFpbHMuCisKK0JFU0NIUkVJQlVORzoKKyAgICBEaWVzZSBGdW5rdGlvbiBlbnRzcHJpY2h0IGRlbSBSZW1vdmVEZXRhaWwoKSBmdWVyIFN0YW5kYXJkZGV0YWlscywKKyAgICBudXIga29lbm5lbiBoaWVybWl0IEdlcnVlY2hlIGVudGZlcm50IHdlcmRlbjoKKyAgICBFbnRmZXJudCBkaWUgaW4gPGtleXM+IGFuZ2VnZWJlbmVuIERldGFpbHMgYXVzIGRlciBMaXN0ZSBkZXIKKyAgICB2b3JoYW5kZW5lbiBEZXRhaWxzLiBVZWJlcmdpYnQgbWFuIGZ1ZXIgPGtleXM+IGVpbmUgMCwgc28gd2VyZGVuCisgICAgc2FlbXRsaWNoZSBEZXRhaWxzIGVudGZlcm50IQorCitCRUlTUElFTDoKKyAgICBadWVyc3QgZXJ6ZXVnZW4gd2lyIGVpbiBrbGVpbmVzIERldGFpbCwgbWl0IGRlbSB3aXIgYW0gUmF1Y2ggcmllY2hlbgorICAgIGtvZW5uZW4uIERhcyBGZXVlciBicmVubnQgbGFuZ3NhbSBhYiB1bmQgZGFzIERldGFpbCB3aXJkIHdpZWRlcgorICAgIGVudGZlcm50OgorCisgICAgICBBZGRTbWVsbHMoInJhdWNoIiwqIEggVSBTIFQgKlxuIik7CisgICAgICBjYWxsX291dCgjJ1JlbW92ZVNtZWxscywgMTAwLCAicmF1Y2giKTsKKworU0lFSEUgQVVDSDoKKyAgICBTZXR6ZW46ICAgIEFkZERldGFpbCgpLCBBZGRSZWFkRGV0YWlsKCksIEFkZFNtZWxscygpLCBBZGRTb3VuZHMoKSwKKyAgICAgICAgICAgICAgIEFkZFRvdWNoRGV0YWlsKCkKKyAgICBMb2VzY2hlbjogIFJlbW92ZURldGFpbCgpLCBSZW1vdmVSZWFkRGV0YWlsKCksIFJlbW92ZVNtZWxscygpLAorICAgICAgICAgICAgICAgUmVtb3ZlU291bmRzKCksIFJlbW92ZVRvdWNoRGV0YWlsKCkKKyAgICBEYXRlbjogICAgIFBfREVUQUlMUywgUF9SRUFEX0RFVEFJTFMsIFBfU01FTExTLCBQX1NPVU5EUywgUF9UT1VDSF9ERVRBSUxTCisgICAgVmVyYWx0ZXQ6ICBBZGRTcGVjaWFsRGV0YWlsKCksIFJlbW92ZVNwZWNpYWxEZXRhaWwoKSwgUF9SRUFEX01TRworICAgIFNvbnN0aWdlczogR2V0RGV0YWlsKCksIGJyZWFrX3N0cmluZygpCisKKzIwLjAxLjIwMTUsIFplc3N0cmEKKwpkaWZmIC0tZ2l0IGEvZG9jL2xmdW4vUmVtb3ZlU291bmRzIGIvZG9jL2xmdW4vUmVtb3ZlU291bmRzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjUwZDkwMGEKLS0tIC9kZXYvbnVsbAorKysgYi9kb2MvbGZ1bi9SZW1vdmVTb3VuZHMKQEAgLTAsMCArMSw0NiBAQAorUmVtb3ZlU291bmRzKCkKKworRlVOS1RJT046CisgICAgdm9pZCBSZW1vdmVTb3VuZHMoc3RyaW5nfHN0cmluZyoga2V5cyk7CisKK0RFRklOSUVSVCBJTjoKKyAgICAvc3RkL3RoaW5nL2Rlc2NyaXB0aW9uLmMKKworQVJHVU1FTlRFOgorICAgIGtleXMKKyAgICAgIFN0cmluZyBvZGVyIEFycmF5IHZvbiBTdHJpbmdzIG1pdCBkZW4genUgZW50ZmVybmVuZGVuIERldGFpbHMuCisKK0JFU0NIUkVJQlVORzoKKyAgICBEaWVzZSBGdW5rdGlvbiBlbnRzcHJpY2h0IGRlbSBSZW1vdmVEZXRhaWwoKSBmdWVyIFN0YW5kYXJkZGV0YWlscywgICAKKyAgICBudXIga29lbm5lbiBoaWVybWl0IEdlcmF1ZXNjaGUgZW50ZmVybnQgd2VyZGVuOgorICAgIEVudGZlcm50IGRpZSBpbiA8a2V5cz4gYW5nZWdlYmVuZW4gRGV0YWlscyBhdXMgZGVyIExpc3RlIGRlcgorICAgIHZvcmhhbmRlbmVuIERldGFpbHMuIFVlYmVyZ2lidCBtYW4gZnVlciA8a2V5cz4gZWluZSAwLCBzbyB3ZXJkZW4KKyAgICBzYWVtdGxpY2hlIERldGFpbHMgZW50ZmVybnQhCisKK0JFSVNQSUVMOgorICAgIFdpciBsYXNzZW4gZXR3YXMgTXVzaWsgc3BpZWxlbiB1bmQgd2VubiB3aXIgZGVuIFBsYXR0ZW5zcGllbGVyCisgICAgYXVzbWFjaGVuLCBkYW5uIGVuZGV0IHNpZSB1bmQgbWFuIGhvZXJ0IGF1Y2ggbmljaHRzIG1laHI6CisKKyAgICAgIGludCBhdXNtYWNoZW4oc3RyaW5nIHN0cik7CisgICAgICAuLi4KKyAgICAgIEFkZFNvdW5kcygoeyJtdXNpayIsImhpcC1ob3AifSkgLCJLbGluZ3QgbmFjaCBIaXAtSG9wLi4uXG4iKTsKKyAgICAgIEFkZENtZCgibWFjaHxtYWNoZSZwbGF0dGVuc3BpZWxlciZhdXMiLCAjJ2F1c21hY2hlbiwKKyAgICAgICAgICAgICAiV2FzIHdpbGxzdCBkdSAoYXVzKW1hY2hlbj98V2lsbHN0IGR1IGRlbiBhdXNtYWNoZW4/XiIpOworICAgICAgLi4uCisgICAgICBpbnQgYXVzbWFjaGVuKHN0cmluZyBzdHIpIHsKKyAgICAgICAgaWYoIUdldERldGFpbCgibXVzaWsiLCAwLCBTRU5TRV9TT1VORCkpIC8vIGV4aXN0aWVydCBNdXNpa2RldGFpbCA/CisgICAgICAgICAgcmV0dXJuKCJEZXIgUGxhdHRlbnNwaWVsZXIgbGFldWZ0IGRvY2ggZ2FyIG5pY2h0IVxuIiwgMSk7CisgICAgICAgIFJlbW92ZVNvdW5kcygwKTsKKyAgICAgICAgIHJldHVybiAxOworICAgICAgfQorCitTSUVIRSBBVUNIOgorICAgIFNldHplbjogICAgQWRkRGV0YWlsKCksIEFkZFJlYWREZXRhaWwoKSwgQWRkU21lbGxzKCksIEFkZFNvdW5kcygpLAorICAgICAgICAgICAgICAgQWRkVG91Y2hEZXRhaWwoKQorICAgIExvZXNjaGVuOiAgUmVtb3ZlRGV0YWlsKCksIFJlbW92ZVJlYWREZXRhaWwoKSwgUmVtb3ZlU21lbGxzKCksCisgICAgICAgICAgICAgICBSZW1vdmVUb3VjaERldGFpbCgpCisgICAgRGF0ZW46ICAgICBQX0RFVEFJTFMsIFBfUkVBRF9ERVRBSUxTLCBQX1NNRUxMUywgUF9TT1VORFMsIFBfVE9VQ0hfREVUQUlMUworICAgIFZlcmFsdGV0OiAgQWRkU3BlY2lhbERldGFpbCgpLCBSZW1vdmVTcGVjaWFsRGV0YWlsKCksIFBfUkVBRF9NU0cKKyAgICBTb25zdGlnZXM6IEdldERldGFpbCgpLCBicmVha19zdHJpbmcoKQorCis4LiBKdWxpIDIwMTEgR2xvaW5zb24KZGlmZiAtLWdpdCBhL2RvYy9sZnVuL1JlbW92ZVNwZWNpYWxEZXRhaWwgYi9kb2MvbGZ1bi9SZW1vdmVTcGVjaWFsRGV0YWlsCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmViZWM0Y2IKLS0tIC9kZXYvbnVsbAorKysgYi9kb2MvbGZ1bi9SZW1vdmVTcGVjaWFsRGV0YWlsCkBAIC0wLDAgKzEsMzcgQEAKK1ZFUkFMVEVUOiBSZW1vdmVTcGVjaWFsRGV0YWlsKCkKKworRlVOS1RJT046CisgICAgdm9pZCBSZW1vdmVTcGVjaWFsRGV0YWlsKHN0cmluZ3xzdHJpbmcqIGtleXMpOworCitERUZJTklFUlQgSU46CisgICAgL3N0ZC90aGluZy9kZXNjcmlwdGlvbi5jCisKK0FSR1VNRU5URToKKyAgICBrZXlzCisgICAgICBTdHJpbmcgb2RlciBBcnJheSB2b24gU3RyaW5ncyBtaXQgZGVuIHp1IGVudGZlcm5lbmRlbiBEZXRhaWxzLgorCitCRVNDSFJFSUJVTkc6CisgICAgRW50ZmVybnQgZGllIGluIGtleXMgYW5nZWdlYmVuZW4gRGV0YWlscyBhdXMgZGVyIExpc3RlIGRlcgorICAgIHZvcmhhbmRlbmVuIFNwZWNpYWxEZXRhaWxzLgorCisgICAgVkVSQUxURVQ6IEJpdHRlIFJlbW92ZURldGFpbCgpIGJlbnV0emVuLgorCitCRU1FUktVTkdFTjoKKyAgICBVZWJlcmdpYnQgbWFuIGZ1ZXIga2V5cyBlaW5lIDAsIHNvIHdlcmRlbiBzYWVtdGxpY2hlIFNwZWNpYWxEZXRhaWxzCisgICAgZW50ZmVybnQhCisgICAgRGEgaW50ZXJuIERldGFpbHMgdW5kIFNwZWNpYWxEZXRhaWxzIGltIGdsZWljaGVuIE1hcHBpbmcgdmVyd2FsdGV0CisgICAgd2VyZGVuLCBsYXNzZW4gc2ljaCBtaXQgZGllc2VyIEZ1bmt0aW9uIGF1Y2ggRGV0YWlscyBlbnRmZXJuZW4uCisgICAgTWFuIHNvbGx0ZSBkaWVzZSBGdW5rdGlvbiBkZXNoYWxiIG5pY2h0IG1laHIgdmVyd2VuZGVuLCBzaWVoZQorICAgIEFkZERldGFpbCBtaXQgQ2xvc3VyZXMuCisKK1NJRUhFIEFVQ0g6CisgICAgU2V0emVuIDogICBBZGREZXRhaWwoKSwgQWRkUmVhZERldGFpbCgpLCBBZGRTbWVsbHMoKSwgQWRkU291bmRzKCksCisgICAgICAgICAgICAgICBBZGRUb3VjaERldGFpbCgpCisgICAgTG9lc2NoZW46ICBSZW1vdmVEZXRhaWwoKSwgUmVtb3ZlUmVhZERldGFpbCgpLCBSZW1vdmVTbWVsbHMoKSwKKyAgICAgICAgICAgICAgIFJlbW92ZVNvdW5kcygpLCBSZW1vdmVUb3VjaERldGFpbCgpCisgICAgRGF0ZW46ICAgICBQX0RFVEFJTFMsIFBfUkVBRF9ERVRBSUxTLCBQX1NNRUxMUywgUF9TT1VORFMsIFBfVE9VQ0hfREVUQUlMUworICAgIFZlcmFsdGV0OiAgQWRkU3BlY2lhbERldGFpbCgpLCBQX1JFQURfTVNHCisgICAgU29uc3RpZ2VzOiBHZXREZXRhaWwoKSwgYnJlYWtfc3RyaW5nKCkKKworMjAuMDEuMjAxNSwgWmVzc3RyYQorCmRpZmYgLS1naXQgYS9kb2MvbGZ1bi9SZW1vdmVTcGVjaWFsRXhpdCBiL2RvYy9sZnVuL1JlbW92ZVNwZWNpYWxFeGl0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjY5YTE4ZTQKLS0tIC9kZXYvbnVsbAorKysgYi9kb2MvbGZ1bi9SZW1vdmVTcGVjaWFsRXhpdApAQCAtMCwwICsxLDI5IEBACitSZW1vdmVTcGVjaWFsRXhpdCgpCitGVU5LVElPTjoKKyAgICAgdm9pZCBSZW1vdmVTcGVjaWFsRXhpdChzdHJpbmd8c3RyaW5nKiBjbWQpOworCitERUZJTklFUlQgSU46CisgICAgIC9zdGQvcm9vbS9leGl0cworCitBUkdVTUVOVEU6CisgICAgIHN0cmluZy9zdHJpbmcqIGNtZAorICAgICAgICAgIFJpY2h0dW5nKGVuKSwgZGllIGVudGZlcm50IHdlcmRlbiBzb2xsZW4uCisKK0JFU0NIUkVJQlVORzoKKyAgICAgRGllIGluIGNtZCBhbmdlZ2ViZW5lbiBBdXNnYWVuZ2Ugd2VyZGVuIHdpZWRlciBlbnRmZXJudC4KKworICAgICBJc3QgY21kID0gMCwgc28gd2VyZGVuIGFsbGUgQXVzZ2FlbmdlIGVudGZlcm50LgorCitCRU1FUktVTkdFTjoKKyAgICAgQXVzZ2FlbmdlIHdlcmRlbiBhbiBkZXIgZ2xlaWNoZW4gU3RlbGxlIGdlc3BlaWNoZXJ0OgorICAgICAtIFJlbW92ZVNwZWNpYWxFeGl0KCkgZ3JlaWZ0IGF1ZiBkaWUgZ2xlaWNoZW4gRGF0ZW4gd2llIFJlbW92ZUV4aXQoKQorICAgICAgIHp1LCBlbnRmZXJudCBhbHNvIGF1Y2ggbm9ybWFsZSBBdXNnYWVuZ2UhCisKK1NJRUhFIEFVQ0g6CisgICAgIEFkZEV4aXQoKSwgQWRkU3BlY2lhbEV4aXQoKSwgQWRkR3VhcmRlZEV4aXQoKSwgR2V0RXhpdHMoKQorICAgICBSZW1vdmVFeGl0KCksCisgICAgIFBfRVhJVFMsIFBfSElERV9FWElUUywgL3N0ZC9yb29tL2V4aXRzLmMKKyAgICAgYXVzZ2FlbmdlCisKKzMxLjAxLjIwMTUsIFplc3N0cmEKKwpkaWZmIC0tZ2l0IGEvZG9jL2xmdW4vUmVtb3ZlVG91Y2hEZXRhaWwgYi9kb2MvbGZ1bi9SZW1vdmVUb3VjaERldGFpbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44YjgxNmE0Ci0tLSAvZGV2L251bGwKKysrIGIvZG9jL2xmdW4vUmVtb3ZlVG91Y2hEZXRhaWwKQEAgLTAsMCArMSw1NCBAQAorUmVtb3ZlVG91Y2hEZXRhaWwoKQorCitGVU5LVElPTjoKKyAgICB2b2lkIFJlbW92ZVRvdWNoRGV0YWlsKHN0cmluZ3xzdHJpbmcqIGtleXMpOworCitERUZJTklFUlQgSU46CisgICAgL3N0ZC90aGluZy9kZXNjcmlwdGlvbi5jCisKK0FSR1VNRU5URToKKyAgICBrZXlzCisgICAgICBTdHJpbmcgb2RlciBBcnJheSB2b24gU3RyaW5ncyBtaXQgZGVuIHp1IGVudGZlcm5lbmRlbiBEZXRhaWxzLgorCitCRVNDSFJFSUJVTkc6CisgICAgRGllc2UgRnVua3Rpb24gZW50c3ByaWNodCBkZW0gUmVtb3ZlRGV0YWlsKCkgZnVlciBTdGFuZGFyZGRldGFpbHMsCisgICAgbnVyIGtvZW5uZW4gaGllcm1pdCAoYWIpdGFzdGJhcmUgRGV0YWlscyBlbnRmZXJudCB3ZXJkZW46CisgICAgRW50ZmVybnQgZGllIGluIDxrZXlzPiBhbmdlZ2ViZW5lbiBEZXRhaWxzIGF1cyBkZXIgTGlzdGUgZGVyCisgICAgdm9yaGFuZGVuZW4gRGV0YWlscy4gVWViZXJnaWJ0IG1hbiBmdWVyIDxrZXlzPiBlaW5lIDAsIHNvIHdlcmRlbgorICAgIHNhZW10bGljaGUgdGFzdGJhcmVuL2Z1ZWhsYmFyZW4gRGV0YWlscyBlbnRmZXJudCEKKworQkVJU1BJRUw6CisgICAgWnVlcnN0IHdpcmQgZWluIERldGFpbCAiYm9kZW4iIGVyemV1Z3QsIGRhcyBhYmdldGFzdGV0IHdlcmRlbiBrYW5uLgorICAgIERpZXNlcyBrYW5uIGR1cmNoIEJldGFldGlnZW4gZWluZXMgS25vcGZlcywgYWVoLCBlbnRmZXJudCB3ZXJkZW4uCisKKyAgICAgIGludCBrbm9wZigpOworICAgICAgdm9pZCBrbm9wZjIoKTsKKworICAgICAgQWRkVG91Y2hEZXRhaWwoImJvZGVuIiwgIkVyIGlzdCBhdXMgU3RlaW4uXG4iKTsKKyAgICAgIEFkZENtZCgiZHJ1ZWNrfGRydWVja2Uma25vcGYiLCAjJ2tub3BmLCAiV2FzIHdpbGxzdCBkdSBkcnVlY2tlbj8iKTsKKworICAgICAgdm9pZCBrbm9wZigpIHsKKyAgICAgICAgdGVsbF9yb29tKHRoaXNfb2JqZWN0KCksIGJyZWFrX3N0cmluZygKKyAgICAgICAgICB0aGlzX3BsYXllcigpLT5OYW1lKFdFUikrIiBkcnVlY2t0IGVpbmVuIEtub3BmLCBkZXIgZGFiZWkgc2F0dCAiKworICAgICAgICAgICJrbGFja3QuIiwgNzgpKTsKKworICAgICAgICBpZihmaW5kX2NhbGxfb3V0KCMna25vcGYyKTw9MCkKKyAgICAgICAgICBjYWxsX291dCgjJ2tub3BmMiwgMSk7CisgICAgICB9CisgICAgICAKKyAgICAgIHZvaWQga25vcGYyKCkgeworICAgICAgICB0ZWxsX3Jvb20odGhpc19vYmplY3QoKSwgIlVob2guIERlciBCb2RlbiBrbGFwcHQgd2VnLiBEdSBmYWVsbHN0LiIpOworICAgICAgICBSZW1vdmVUb3VjaERldGFpbHMoImJvZGVuIik7CisgICAgICB9CisKK1NJRUhFIEFVQ0g6CisgICAgU2V0emVuOiAgICBBZGREZXRhaWwoKSwgQWRkUmVhZERldGFpbCgpLCBBZGRTbWVsbHMoKSwgQWRkU291bmRzKCksCisgICAgICAgICAgICAgICBBZGRUb3VjaERldGFpbCgpCisgICAgTG9lc2NoZW46ICBSZW1vdmVEZXRhaWwoKSwgUmVtb3ZlUmVhZERldGFpbCgpLCBSZW1vdmVTbWVsbHMoKSwKKyAgICAgICAgICAgICAgIFJlbW92ZVNvdW5kcygpCisgICAgRGF0ZW46ICAgICBQX0RFVEFJTFMsIFBfUkVBRF9ERVRBSUxTLCBQX1NNRUxMUywgUF9TT1VORFMsIFBfVE9VQ0hfREVUQUlMUworICAgIFZlcmFsdGV0OiAgQWRkU3BlY2lhbERldGFpbCgpLCBSZW1vdmVTcGVjaWFsRGV0YWlsKCksIFBfUkVBRF9NU0cKKyAgICBTb25zdGlnZXM6IEdldERldGFpbCgpLCBicmVha19zdHJpbmcoKQorCisyMC4wMS4yMDE1LCBaZXNzdHJhCisKZGlmZiAtLWdpdCBhL2RvYy9sZnVuL1Jlc2l6ZVJpbmdCdWZmZXIgYi9kb2MvbGZ1bi9SZXNpemVSaW5nQnVmZmVyCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmM1YTZjMDgKLS0tIC9kZXYvbnVsbAorKysgYi9kb2MvbGZ1bi9SZXNpemVSaW5nQnVmZmVyCkBAIC0wLDAgKzEsNDQgQEAKK1Jlc2l6ZVJpbmdCdWZmZXIoKQorCitGVU5LVElPTjoKKyAgICBwcm90ZWN0ZWQgc3RydWN0IHN0ZF9yaW5nYnVmZmVyIGJ1ZiBSaW5nQnVmZmVyUHV0KAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RydWN0IHN0ZF9yaW5nYnVmZmVyIGJ1ZiwgCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgc2l6ZSk7CisKK0RFRklOSUVSVCBJTjoKKyAgICAvc3RkL3V0aWwvcmluZ2J1ZmZlci5jCisgICAgL3N5cy91dGlsL3JpbmdidWZmZXIuaAorICAgIAorQVJHVU1FTlRFOgorICAgIGJ1ZiAgLSBSaW5ncHVmZmVyLCBkZXNzZW4gR3JvZXNzZSBnZWFlbmRlcnQgd2VyZGVuIHNvbGwKKyAgICBzaXplIC0gbmV1ZSBHcm9lc3NlIChpbnQpIAorCitCRVNDSFJFSUJVTkc6CisgICAgRGllc2UgRnVua3Rpb24gZXJzdGVsbHQgZWluZW4gbmV1ZW4gUmluZ3B1ZmZlciBkZXIgR3JvZXNzZSA8c2l6ZT4sIHdlbGNoZXIKKyAgICBkZW4gZ2xlaWNoZW4gTW9kdXMgaGF0IHdpZSA8YnVmPiB1bmQgZGllIGdsZWljaGVuIERhdGVuIGVudGhhZWx0LgorICAgIElzdCBkZXIgbmV1ZSBQdWZmZXIga2xlaW5lciBhbHMgPGJ1Zj4sIHNvIGtvbW10IGVzIGhpZXJiZWkgenUKKyAgICBEYXRlbnZlcmx1c3QuCisgICAgPGJ1Zj4gd2lyZCBuaWNodCB2ZXJhZW5kZXJ0LiBJc3QgZGllIEdyb2Vzc2Ugdm9uIDxidWY+IGdsZWljaCBkZXIKKyAgICBuZXVlbiBnZXd1ZW5zY2h0ZW4gR3JvZXNzZSwgd2lyZCBsZXR6dGVuZGxpY2ggZGVyIFJpbmdwdWZmZXIga29waWVydC4gCisgICAgSmUgbmFjaCBHcm9lc3NlIHZvbiA8YnVmPiB1bmQgV2VydCB2b24gPHNpemU+IGthbm4gZGllcyBlaW5lIHRldXJlCisgICAgQW5nZWxlZ2VuaGVpdCBzZWluLgorCitSVWVDS0dBQkVXRVJUOgorICAgIERlciBuZXVlIFJpbmdwdWZmZXIgbWl0IEdyb2Vzc2UgPHNpemU+LgorCitCRUlTUElFTEU6CisgICAgLy8gUmluZ3B1ZmZlciBhbmxlZ2VuOgorICAgIHN0cnVjdCBzdGRfcmluZ2J1ZmZlciBidWZmZXIgPSBDcmVhdGVSaW5nQnVmZmVyKDUsIE1PREVfRklGTyk7CisgICAgLy8gNSBXZXJ0ZSByZWluc2NocmVpYmVuOgorICAgIGZvcmVhY2goaW50IGk6IDUpIFJpbmdCdWZmZXJQdXQoYnVmZmVyLCBpKTsKKyAgICAvLyBHcm9lc3NlIGFlbmRlcm4KKyAgICBidWZmZXIgPSBSZXNpemVSaW5nQnVmZmVyKGJ1ZmZlciwgMTApOworICAgIC8vIERhdGVuIGFscyBBcnJheSBlcm1pdHRlbG46CisgICAgbWl4ZWQgYXJyYXkgPSBSaW5nQnVmZmVyR2V0KGJ1ZmZlcik7CisgICAgLy8gYXJyYXkgZW50aGFlbHQ6ICh7MCwwLDAsMCwwLDAsMSwyLDMsNH0pCisKK1NJRUhFIEFVQ0g6CisgICAgUmluZ0J1ZmZlckdldCgpLCBSaW5nQnVmZmVyUHV0KCksIENyZWF0ZVJpbmdCdWZmZXIoKQorCisyMy4wNS4yMDA4LCBaZXNzdHJhCisKZGlmZiAtLWdpdCBhL2RvYy9sZnVuL1JpbmdCdWZmZXJHZXQgYi9kb2MvbGZ1bi9SaW5nQnVmZmVyR2V0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjhkNmI0NjcKLS0tIC9kZXYvbnVsbAorKysgYi9kb2MvbGZ1bi9SaW5nQnVmZmVyR2V0CkBAIC0wLDAgKzEsNDEgQEAKK1JpbmdCdWZmZXJHZXQoKQorCitGVU5LVElPTjoKKyAgICBwcm90ZWN0ZWQgbWl4ZWQgUmluZ0J1ZmZlckdldChzdHJ1Y3Qgc3RkX3JpbmdidWZmZXIgYnVmKTsKKworREVGSU5JRVJUIElOOgorICAgIC9zdGQvdXRpbC9yaW5nYnVmZmVyLmMKKyAgICAvc3lzL3V0aWwvcmluZ2J1ZmZlci5oCisKK0FSR1VNRU5URToKKyAgICBidWYgLSBSaW5ncHVmZmVyLCB3ZWxjaGVyIGF1c2dlYmVuIHdlcmRlbiBzb2xsCisKK0JFU0NIUkVJQlVORzoKKyAgICBEaWVzZSBGdW5rdGlvbiBsaWVmZXJ0IGRpZSBEYXRlbiBkZXMgUmluZ3B1ZmZlcnMgaW4gRm9ybSBlaW5lcyBBcnJheXMKKyAgICB6dXJ1ZWNrLCB3ZWxjaGVzIGRhbm4gd2VpdGVydmVyYXJiZWl0ZXQgd2VyZGVuIGthbm4uCisgICAgRGllIFJlaWhlbmZvbGdlIGRlciBEYXRlbiBpc3QgZW50c3ByZWNoZW5kIGRlcyBiZWltIEFubGVnZW4gZGVzCisgICAgUmluZ3B1ZmZlcnMgYW5nZWJlbmVuIE1vZGVzOgorICAgIE1PREVfRklGTzogYWVsdGVzdGUgRGF0ZW4genVlcnN0CisgICAgTU9ERV9MSUZPOiBuZXVlc3RlIERhdGVuIHp1ZXJzdAorCitCRU1FUktVTkdFTjoKKyAgICBBZW5kZXJ1bmdlbiBhbSBBcnJheSBiZWVpbmZsdXNzZW4gZGllIERhdGVuIGRlcyBSaW5ncHVmZmVycyBuaWNodC4gQWJlcjoKKyAgICBIaWVyYmVpIHdlcmRlbiBkaWUgRGF0ZW4gbmljaHQgdGllZiBrb3BpZXJ0LiBELmguIGVudGhhZWx0IGRlciBSaW5ncHVmZmVyCisgICAgUmVmZXJlbnplbiBhdWYgd2VpdGVyZSBEYXRlbiwgemVpZ2VuIGRlciBSaW5ncHVmZmVyIHVuZCBkYXMgaGllcgorICAgIGdlbGllZmVydGUgQXJyYXkgYXVmIGRpZSBnbGVpY2hlbiBEYXRlbi4KKworQkVJU1BJRUxFOgorICAgIC8vIFJpbmdwdWZmZXIgYW5sZWdlbjoKKyAgICBzdHJ1Y3Qgc3RkX3JpbmdidWZmZXIgYnVmZmVyID0gQ3JlYXRlUmluZ0J1ZmZlcigxMCwgTU9ERV9GSUZPKTsKKyAgICAvLyAxNSBXZXJ0ZSByZWluc2NocmVpYmVuOgorICAgIGZvcmVhY2goaW50IGk6IDE1KSBSaW5nQnVmZmVyUHV0KGJ1ZmZlciwgaSk7CisgICAgLy8gV2VydGUgYWJydWZlbjoKKyAgICBtaXhlZCBhcnJheT1SaW5nQnVmZmVyR2V0KGJ1ZmZlcik7CisgICAgLy8gYXJyYXkgZW50aGFlbHQgbnVuOgorICAgIC8vICh7NSw2LDcsOCw5LDEwLDExLDEyLDEzLDE0fSkgCisKK1NJRUhFIEFVQ0g6CisgICAgQ3JlYXRlUmluZ0J1ZmZlcigpLCBSaW5nQnVmZmVyUHV0KCksIFJlc2l6ZVJpbmdCdWZmZXIoKQorCisyMy4wNS4yMDA4LCBaZXNzdHJhCisKZGlmZiAtLWdpdCBhL2RvYy9sZnVuL1JpbmdCdWZmZXJQdXQgYi9kb2MvbGZ1bi9SaW5nQnVmZmVyUHV0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjgyYTc4YmIKLS0tIC9kZXYvbnVsbAorKysgYi9kb2MvbGZ1bi9SaW5nQnVmZmVyUHV0CkBAIC0wLDAgKzEsMzAgQEAKK1JpbmdCdWZmZXJQdXQoKQorCitGVU5LVElPTjoKKyAgICBwcm90ZWN0ZWQgdm9pZCBSaW5nQnVmZmVyUHV0KHN0cnVjdCBzdGRfcmluZ2J1ZmZlciBidWYsIG1peGVkIHZhbCk7CisKK0RFRklOSUVSVCBJTjoKKyAgICAvc3RkL3V0aWwvcmluZ2J1ZmZlci5jCisgICAgL3N5cy91dGlsL3JpbmdidWZmZXIuaAorCitBUkdVTUVOVEU6CisgICAgYnVmIC0gUmluZ3B1ZmZlciwgaW4gZGVuIDx2YWw+IGdlc2NocmllYmVuIHdlcmRlbiBzb2xsCisgICAgdmFsIC0gbmV1ZXMgRGF0dW0KKworQkVTQ0hSRUlCVU5HOgorICAgIERpZXNlIEZ1bmt0aW9uIHNjaHJlaWJ0IDx2YWw+IGluIGRlbiBSaW5ncHVmZmVyIDxidWY+LiBIaWVyYmVpIHdpcmQgZ2dmLgorICAgIGRhcyBhZWx0ZXN0ZSBpbSBQdWZmZXIgZXhpc3RpZXJlbmRlIERhdHVtIHVlYmVyc2NocmllYmVuLiA8YnVmPiBtdXNzIGVpbmUKKyAgICB2b24gQ3JlYXRlUmluZ0J1ZmZlcigpIG9kZXIgUmVzaXplUmluZ0J1ZmZlcigpIHp1cnVlY2tnZWxpZWZlcnRlcgorICAgIFJpbmdwdWZmZXIgc2Vpbi4KKworQkVJU1BJRUxFOgorICAgIC8vIFJpbmdwdWZmZXIgYW5sZWdlbjoKKyAgICBzdHJ1Y3Qgc3RkX3JpbmdidWZmZXIgYnVmZmVyID0gQ3JlYXRlUmluZ0J1ZmZlcigxMCwgTU9ERV9GSUZPKTsKKyAgICAvLyAxNSBXZXJ0ZSByZWluc2NocmVpYmVuOgorICAgIGZvcmVhY2goaW50IGk6IDE1KSBSaW5nQnVmZmVyUHV0KGJ1ZmZlciwgaSk7CisKK1NJRUhFIEFVQ0g6CisgICAgUmluZ0J1ZmZlckdldCgpLCBDcmVhdGVSaW5nQnVmZmVyKCksIFJlc2l6ZVJpbmdCdWZmZXIoKQorCisyMy4wNS4yMDA4LCBaZXNzdHJhCisKZGlmZiAtLWdpdCBhL2RvYy9sZnVuL1NlYXJjaFBhdGggYi9kb2MvbGZ1bi9TZWFyY2hQYXRoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjAzNWZkY2IKLS0tIC9kZXYvbnVsbAorKysgYi9kb2MvbGZ1bi9TZWFyY2hQYXRoCkBAIC0wLDAgKzEsODMgQEAKK1NlYXJjaFBhdGgKKworRlVOS1RJT046CisgICAgIHB1YmxpYyBpbnQgU2VhcmNoUGF0aChzdHJpbmcgZnJvbSwgc3RyaW5nIHRvLCBpbnQgcGFyYSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsb3N1cmUgY2FsbGJhY2spCisKK0RFRklOSUVSVCBJTjoKKyAgICAgL3AvZGFlbW9uL3BhdGhkLmMKKyAgICAgPHN5cy9wYXRoLmQ+CisKK0FSR1VNRU5URToKKyAgICAgZnJvbSAgICAgLSBEZXIgU3RhcnRwdW5rdAorICAgICB0byAgICAgICAtIERlciBFbmRwdW5rdAorICAgICBwYXJhICAgICAtIERpZSBQYXJhd2VsdCBpbiBkZXIgZ2VzdWNodCB3aXJkIChOb3JtYWx3ZWx0OiAwKQorICAgICBjYWxsYmFjayAtIENsb3N1cmUsIGRpZSBhbSBFbmRlIGRlciBQZmFkc3VjaGUgZ2VydWZlbiB3aXJkCisKK0JFU0NIUkVJQlVORzoKKyAgICBEaWVzZSBGdW5rdGlvbiBiZXJlY2huZXQgLSBzb2Zlcm4gbW9lZ2xpY2ggLSBkZW4ga3Vlcnplc3RlbiBQZmFkIHp3aXNjaGVuCisgICAgPGZyb20+IHVuZCA8dG8+IGluIGRlciAoUGFyYS0pV2VsdCA8cGFyYT4uCisgICAgCisgICAgRGllIFBmYWRzdWNoZSB3aXJkIGFuaGFuZCB2b24gRGF0ZW4gdWViZXIgdm9uIFNwaWVsZXJuIGdlbGF1ZmVuZSBXZWdlCisgICAgZHVyY2hnZWZ1ZWhydC4gRC5oLiBHZWJpZXRlLCBkaWUgdm9uIFNwaWVsZXJuIG5pY2h0IChpbiBsZXR6dGVyIFplaXQgbWFsKQorICAgIGJldHJldGVuIHdlcmRlbiwgc2luZCBhdWNoIGRlbSBQZmFkZGFlbW9uIG5pY2h0IGJla2FubnQuIEF1Y2gga2FubiBlcworICAgIEdlYmlldGUgZ2ViZW4sIHdvIHp3YXIgZ2ViaWV0c2ludGVybiBQZmFkZSBiZWthbm50IHNpbmQsIGFiZXIga2VpbmUgV2VnZQorICAgIGluIGRlbiBSZXN0IHZvbSBNRy4KKworICAgIERhIGRpZXNlIFN1Y2hlIGltIEFsbGdlbWVpbmVuIFNFSFIgYXVmd2VuZGlnIHNlaW4ga2Fubiwgd2lyZCBzaWUgbWVpc3RlbnMKKyAgICBuaWNodCBzb2ZvcnQgZmVydGlnLCBzb25kZXJuIGRhdWVydCBlaW5lIFdlaWxlLiBXZW5uIHNpZSBmZXJ0aWcgaXN0LCB3aXJkCisgICAgZGllIENsb3N1cmUgPGNhbGxiYWNrPiBhdWZnZXJ1ZmVuIHVuZCBpaHIgZGllIEFyZ3VtZW50ZSA8ZnJvbT4sIDx0bz4sCisgICAgPHBhcmF3ZWx0PiwgPGtvc3Rlbj4sIDxwYXRoPiB1bmQgPGNtZHM+IHVlYmVyZ2ViZW4uIERpZSBCZWRldXR1bmcKKyAgICBkaWVzZXIgQXJndW1lbnRlIGlzdCB1bnRlbiBlcmtsYWVydC4KKworICAgIEVpbmUgU3VjaGUgbmFjaCBlaW5lbSBQZmFkIGluIGVpbmVyIFBhcmF3ZWx0IGZ1ZWhydCBkdXJjaCBSYWV1bWUgZGVyCisgICAgZ2V3dWVuc2NoZW4gUGFyYXdlbHQgdW5kIGR1cmNoIFJhZXVtZSBkZXIgTm9ybWFsd2VsdC4KKworUlVlQ0tHQUJFV0VSVDoKKyAgICAgMSAgICAgIC0gU3VjaGUgd3VyZGUgZ2VzdGFydGV0CisgICAgIDIgICAgICAtIFBmYWQgZ2VmdW5kZW4gKHVuZCBjYWxsYmFjayBnZXJ1ZmVuKQorICAgIC0xICAgICAgLSBlcyBsYWV1ZnQgc2Nob24gZWluIFN1Y2hhdWZ0cmFnZSBmdWVyIGRpZSBVSUQgZGVzIGFuZnJhZ2VuZGVuCisgICAgICAgICAgICAgIE9iamVrdGVzCisgICAgLTIgICAgICAtIGVzIGxhdWZlbiBiZXJlaXRzIHp1dmllbGUgU3VjaGFuZnJhZ2VuCisgICAgLTMgICAgICAtIDxmcm9tPiB1bmQvb2RlciA8dG8+IHNpbmQgbmljaHQgYmVrYW5udAorICAgIAorICAgIEFuIDxjYWxsYmFjaz4gdWViZXJnZWJlbmUgQXJndW1lbnRlIGFtIEVuZGUgZGVyIFBmYWRzdWNoZToKKyAgICAgICAgPGZyb20+IC0gU3RhcnRwdW5rdCBkZXMgV2VnZXMgKHN0cmluZykKKyAgICAgICAgPHRvPiAgIC0gWmllbHB1bmt0IGRlcyBXZWdlcyAoc3RyaW5nKQorICAgICAgICA8cGFyYT4gLSBQYXJhd2VsdCBkZXMgV2VnZXMgKGludCkKKyAgICAgICAgPGNvc3RzPi0gS29zdGVuIGRlcyBXZWdlLiAoaW50KSBKZSBob2VoZXIsIGRlc3RvCisgICAgICAgICAgICAgICAgIGxhZW5nZXIvdW5ndWVuc3RpZ2VyLiAwLCB3ZW5uIGtlaW4gUGZhZCBnZWZ1bmRlbgorICAgICAgICA8cGF0aD4gLSBBcnJheSBtaXQgUmF1bW5hbWVuLCBkaWUgZHVyY2hsYXVmZW4gd2VyZGVuIChzdHJpbmcqKQorICAgICAgICAgICAgICAgICAwLCB3ZW5uIGtlaW4gUGZhZCBnZWZ1bmRlbgorICAgICAgICA8Y21kcz4gLSBBcnJheSBtaXQgS29tbWFuZG9zIHp1bSBBYmxhdWZlbiBkZXMgV2VnZXMgKHN0cmluZyopCisgICAgICAgICAgICAgICAgIDAsIHdlbm4ga2VpbiBQZmFkIGdlZnVuZGVuCisKK0JFTUVSS1VOR0VOOgorICAgRXMgaXN0IG5hdHVlcmxpY2ggbmljaHQgZGF6dSBnZWRhY2h0LCBTcGllbGVybiBmZXJ0aWdlIFJvdXRlbiB6d2lzY2hlbgorICAgT3J0ZW4genUgZ2ViZW4gLSBiencuIG51ciBpbiBBdXNuYWhtZWZhZWxsZW4uCisgICBQZmFkYWJmcmdlbiB3ZXJkZW4gZ2Vsb2dndC4KKworICAgRGllIEFuZ2FiZSA8Y29zdHM+IHNhZ3QgZ3JvYiBldHdhcyB1ZWJlciBkaWUgTGFlbmdlIHVuZCB2b3IgYWxsZW0gdWViZXIgZGllCisgICAiUXVhbGl0YWV0IiBkZXMgUGZhZGVzIGF1cy4gRGllIHN0ZWlndCBiZWkgUGFyYXdlbHR3ZWNoc2Vsbiwgd2VuaWcKKyAgIGFiZ2VsYXVmZW5lbiBWZXJiaW5kdW5nZW4gendpc2NoZW4gUmFldW1lbiBvZGVyIHdlbm4gZWluZSBWZXJiaW5kdW5nIGtlaW4KKyAgIG5vcm1hbGVyIEF1c2dhbmcgaXN0LgorCisgICBEaWUgQ2xvc3VyZSA8Y2FsbGJhY2s+IHNvbGx0ZSBuaWNodCB6dXZpZWxlIFRpY2tzIHZlcmJyYXVjaGVuLgorCitCRUlTUElFTDoKKyAgICNpbmNsdWRlIDxwYXRoZC5oPgorICAgdm9pZCBzdWNoZXJnZWJuaXMoc3RyaW5nIGZyb20sIHN0cmluZyB0bywgaW50IHBhcmEsIGludCBjb3N0cywgc3RyaW5nKgorICAgICAgICBwYXRoLCBzdHJpbmcqIGNtZHMpIHsKKyAgICAgICAgdGVsbF9vYmplY3QoZmluZF9wbGF5ZXIoInplc3N0cmEiKSwgc3ByaW50ZigKKyAgICAgICAgICAgICJFcmdlYm5pcyBQZmFkc3VjaGUgdm9uICVzIG5hY2ggJXMgaW4gUGFyYSAlZCBmdWVyICVkOlxuICVPXG4gJU9cbiIsCisgICAgICAgICAgICBmcm9tLCB0bywgcGFyYSwgY29zdHMsIHBhdGgsIGNtZHMpKTsKKyAgIH07CisKKyAgIC4uLgorICAgbWl4ZWQgcmVzPVBBVEhELT5TZWFyY2hQYXRoKCIvZ2lsZGVuL2FiZW50ZXVyZXIiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICIvZC9lYmVuZS9kYW5jZXIvbHVja3kvcm9vbS9wb3ZhX2xhMyIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMCwgIydzdWNoZXJnZWJuaXMpOworCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisyMi4xMi4yMDE1LCBaZXNzdHJhCisKZGlmZiAtLWdpdCBhL2RvYy9sZnVuL1NlbGVjdEVuZW15IGIvZG9jL2xmdW4vU2VsZWN0RW5lbXkKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uODYzZTBjMAotLS0gL2Rldi9udWxsCisrKyBiL2RvYy9sZnVuL1NlbGVjdEVuZW15CkBAIC0wLDAgKzEsMzIgQEAKK1NlbGVjdEVuZW15KCkKKworRlVOS1RJT046CisJdmFyYXJncyBvYmplY3QgU2VsZWN0RW5lbXkob2JqZWN0KmhlcmUpOworCitERUZJTklFUlQgSU46CisJL3N0ZC9saXZpbmcvY29tYmF0LmMKKworQVJHVU1FTlRFOgorCWhlcmUKKwkgIEdlZ25lciwgYXVzIHdlbGNoZW4gYXVzZ2V3YWVobHQgd2VyZGVuIHNvbGwgKG9wdGlvbmFsISkKKworUlVlQ0tHQUJFV0VSVDoKKwlBdXNnZXdhZWhsdGVyIEdlZ25lciwgZGVyIGFuZ2VncmlmZmVuIHdlcmRlbiBzb2xsLgorCitCRVNDSFJFSUJVTkc6CisJRGllc2UgRnVua3Rpb24gd2FlaGx0IGVpbmVuIEdlZ25lciBhdXMsIGRlciBhbmdlZ3JpZmZlbiB3ZXJkZW4gc29sbC4KKwlXZXJkZW4ga2VpbmUgR2VnbmVyIGltIFBhcmFtZXRlciA8aGVyZT4gYW5nZWdlYmVuLCBzbyB3aXJkIGRlcgorCVJ1ZWNrZ2FiZXdlcnQgZGVyIEZ1bmt0aW9uIFByZXNlbnRFbmVtaWVzKCkgdmVyd2FuZHQsIHdlbGNoZSBkaWUKKwlha3R1ZWxsIGFud2VzZW5kZW4gR2VnbmVyIGltIFJhdW0gbGllZmVydC4KKwlTaW5kIGtlaW5lIEdlZ25lciBhbndlc2VuZCwgc28gd2lyZCAwIHp1cnVlY2tnZWxpZWZlcnQuCisJRGFuYWNoIHdpcmQgZ2VzY2hhdXQsIG9iIEdlZ25lciBiZXZvcnp1Z3QgYXVzZ2V3YWVobHQgd2VyZGVuIHNvbGxlbi4KKwlEaWVzIGdlc2NoaWVodCBtaXR0ZWxzIGRlciBGdW5rdGlvbiBRdWVyeVByZWZlcmVkRW5lbXkoKS4KKwlBdWNoIGRpZXNlciBiZXZvcnp1Z3RlIEdlZ25lciBtdXNzIGltIHNlbGJlbiBSYXVtIHNlaW4hIFdlbm4gbmljaHQsCisJd2lyZCBkb2NoIGlyZ2VuZGVpbiBhbmRlcmVyIEdlZ25lciBhdXNnZXdhZWhsdCB1bmQgenVydWVja2dlZ2ViZW4uCisKK1NJRUhFIEFVQ0g6CisJUHJlc2VudEVuZW1pZXMoKSwgUXVlcnlQcmVmZXJlZEVuZW15KCksIFBfUFJFRkVSRURfRU5FTVksCisJSW5zZXJ0RW5lbXkoKSwgU3RvcEh1bnRGb3IoKQorCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCitMYXN0IG1vZGlmaWVkOiBUaHUgTWF5IDI3IDE1OjAxOjQ4IDE5OTkgYnkgUGF0cnluCmRpZmYgLS1naXQgYS9kb2MvbGZ1bi9TZWxlY3RGYXJFbmVteSBiL2RvYy9sZnVuL1NlbGVjdEZhckVuZW15Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmQ1NzRkY2MKLS0tIC9kZXYvbnVsbAorKysgYi9kb2MvbGZ1bi9TZWxlY3RGYXJFbmVteQpAQCAtMCwwICsxLDQ1IEBACisKK1NlbGVjdEZhckVuZW15KCkKKworCitGVU5LVElPTjoKKyAgICAgICAgdmFyYXJncyBvYmplY3QgU2VsZWN0RmFyRW5lbXkob2JqZWN0ICpoZXJlLCBpbnQgbWluLCBpbnQgbWF4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgZm9yY2Vmcm9tKQorCitERUZJTklFUlQgSU46CisgICAgICAgIC9zdGQvbGl2aW5nL3RlYW0uYworCitBUkdVTUVOVEU6CisgICAgICAgIGhlcmUgICAgICAgLSBSdWVja2dhYmV3ZXJ0IHZvbiBQcmVzZW50RW5lbWllcygpCisgICAgICAgIG1pbiAgICAgICAgLSBtaW5pbWFsZSBLYW1wZnJlaWhlCisgICAgICAgIG1heCAgICAgICAgLSBtYXhpbWFsZSBLYW1wZnJlaWhlCisgICAgICAgIGZvcmNlZnJvbSAgLSBHZWduZXIgTVVTUyBhdXMgdWViZXJnZWJlbmVtIEFycmF5IGF1c2dld2FlaGx0IHdlcmRlbgorCitCRVNDSFJFSUJVTkc6CisgICAgICAgIFdhZWhsdCBlaW5lbiBGZWluZCBhdXMgUmVpaGUgPG1pbj4gYmlzIDxtYXg+IGF1cy4KKworUlVFQ0tHQUJFV0VSVDoKKyAgICAgICAgRGVyIEF1c2Vyd2FlaGx0ZSA6LSkKKworQkVNRVJLVU5HRU46CisgICAgICAgIDEuIFdlbm4gaW4gZGVuIGFuZ2VnZWJlbiBSZWloZW4ga2VpbiBGZWluZCBpc3Qgb2RlciA8bWF4PiBrbGVpbmVyCisgICAgICAgICAgIGFscyA8bWluPiBpc3QsIHdpcmQgYXVjaCBrZWluZXIgenVydWVja2dlZ2ViZW4uCisgICAgICAgIDIuIEF1cyBFZmZpemllbnpncnVlbmRlbiBzb2xsdGUgZm9yY2Vmcm9tIG51ciBiZW51dHp0IHdlcmRlbiwgd2VubgorICAgICAgICAgICBlcyB3aXJrbGljaCBub2V0aWcgaXN0IChzLiBoaWVyenUgYXVjaCBTZWxlY3ROZWFyRW5lbXkoKSkuCisgICAgICAgIDMuIDAgPD0gPG1pbj4gPD0gPG1heD4gPCBNQVhfVEVBTVJPV1MKKworU0lFSEUgQVVDSDoKKyAgICAgICAgVWViZXJzaWNodDogdGVhbWthbXBmCisgICAgICAgIFByb3BlcnRpZXM6IFBfVEVBTSwgUF9BU1NPQ19NRU1CRVJTLCBQX1RFQU1fQVRUQUNLX0NNRCwKKyAgICAgICAgICAgICAgICAgICAgUF9URUFNX0FVVE9GT0xMT1csIFBfVEVBTV9DT0xPUlMsIFBfVEVBTV9MRUFERVIsCisgICAgICAgICAgICAgICAgICAgIFBfVEVBTV9ORVdNRU1CRVIsIFBfVEVBTV9XQU5URURfUk9XLCBQX1RFQU1fV0lNUFlfUk9XCisgICAgICAgIEJld2VndW5nOiAgIElzVGVhbU1vdmUsIFRlYW1GbGVlCisgICAgICAgIE1pdGdsaWVkZXI6IElzVGVhbUxlYWRlciwgVGVhbU1lbWJlcnMKKyAgICAgICAgS2FtcGY6ICAgICAgQXNzb2NNZW1iZXIsIERlQXNzb2NNZW1iZXIsIEluc2VydEVuZW15VGVhbSwKKyAgICAgICAgICAgICAgICAgICAgU2VsZWN0TmVhckVuZW15CisgICAgICAgIFBvc2l0aW9uZW46IFByZXNlbnRQb3NpdGlvbiwgUHJlc2VudFJvd3MsIFByZXNlbnRFbmVteVJvd3MsCisgICAgICAgICAgICAgICAgICAgIFByZXNlbnRUZWFtUG9zaXRpb24sIFN3YXBSb3dzCisgICAgICAgIFNvbnN0aWdlczogIFRlYW1QcmVmaXgsIHRlYW1rYW1wZl9pbnRlcm4KKworLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorTGFzdCBtb2RpZmllZDogMTYtMDgtMjAxMCwgR2FieWxvbgpkaWZmIC0tZ2l0IGEvZG9jL2xmdW4vU2VsZWN0TmVhckVuZW15IGIvZG9jL2xmdW4vU2VsZWN0TmVhckVuZW15Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjk5OGJlZTgKLS0tIC9kZXYvbnVsbAorKysgYi9kb2MvbGZ1bi9TZWxlY3ROZWFyRW5lbXkKQEAgLTAsMCArMSw0OSBAQAorCitTZWxlY3ROZWFyRW5lbXkoKQorCisKK0ZVTktUSU9OOgorICAgICAgICB2YXJhcmdzIG9iamVjdCBTZWxlY3ROZWFyRW5lbXkob2JqZWN0ICpoZXJlLCBpbnQgZm9yY2Vmcm9tKQorCitERUZJTklFUlQgSU46CisgICAgICAgIC9zdGQvbGl2aW5nL3RlYW0uYworCitBUkdVTUVOVEU6CisgICAgICAgIGhlcmUgICAgICAtIFJ1ZWNrZ2FiZXdlcnQgdm9uIFByZXNlbnRFbmVtaWVzKCkKKyAgICAgICAgZm9yY2Vmcm9tIC0gR2VnbmVyIE1VU1MgYXVzIHVlYmVyZ2ViZW5lbSBBcnJheSBhdXNnZXdhZWhsdCB3ZXJkZW4KKworQkVTQ0hSRUlCVU5HOgorICAgICAgICBXYWVobHQgZWluZW4gaW0gTmFoa2FtcGYgZXJyZWljaGJhcmVuIEZlaW5kIGF1cworCitSVUVDS0dBQkVXRVJUOgorICAgICAgICBEZXIgQXVzZXJ3YWVobHRlIDotKQorCitCRU1FUktVTkdFTjoKKyAgICAgICAgMS4gRmFsbHMgZGVyIFNwaWVsZXIgaW4gZWluZW0gVGVhbSBpc3QgdW5kIGluIGVpbmVyIGhpbnRlcmVuIFJlaWhlCisgICAgICAgICAgIHN0ZWh0LCB3aXJkIGtlaW4gRmVpbmQgYXVzZ2V3YWVobHQsIGVzIHNlaSBkZW5uLCBkZXIgU3BpZWxlciBoYXQKKyAgICAgICAgICAgZWluZW4gS2FtcGYgbWl0IGVpbmVtIFRlYW1taXRnbGllZCBhbmdlZmFuZ2VuLgorICAgICAgICAyLiBXZW5uIGVpbiBiZXZvcnp1Z3RlciBGZWluZCBpbiBlaW5lciBkZXIgaGludGVyZW4gUmVpaGVuIGVpbmVzCisgICAgICAgICAgIFRlYW1zIHN0ZWh0LCB3aXJkIHNvbGFuZ2UgZGFzIFRlYW0gYmV2b3J6dWd0LgorICAgICAgICAzLiBBdWNoIEZlaW5kZSBpbiBkZW4gaGludGVyZW4gUmVpaGVuIGtvZW5uZW4gaW0gTmFoa2FtcGYgZXJyZWljaGJhcgorICAgICAgICAgICBzZWluLCB3ZW5uIGRpZSB2b3JkZXJlbiBSZWloZW4gbmljaHQgZ2VudWVnZW5kIERlY2t1bmcgYmlldGVuLgorICAgICAgICA0LiBBQ0hUVU5HOiBEZXIgQXVzZXJ3YWVobHRlIGtvbW10IG5pY2h0IG5vdHdlbmRpZ2Vyd2Vpc2UgYXVzIGRlbQorICAgICAgICAgICB1ZWJlcmdlYmVuZW4gQXJyYXksIHdlbm4gZm9yY2Vmcm9tPTAgaXN0LiBOb3JtYWxlcndlaXNlIGlzdCBkaWVzZXMKKyAgICAgICAgICAgVmVyaGFsdGVuIGJlYWJzaWNodGlndCwgZGFtaXQgamVtYW5kLCBkZXIgc2ljaCBpbiBkZXIgUmVpaGUgdm9yCisgICAgICAgICAgIGVpbmVuIEdlZ25lciBzdGVsbHQsIGFuZ2VncmlmZmVuIHdpcmQsIGF1Y2ggd2VubiBlciBub2NoIG5pY2h0CisgICAgICAgICAgIEZlaW5kIGlzdC4KKworU0lFSEUgQVVDSDoKKyAgICAgICAgVWViZXJzaWNodDogdGVhbWthbXBmCisgICAgICAgIFByb3BlcnRpZXM6IFBfVEVBTSwgUF9BU1NPQ19NRU1CRVJTLCBQX1RFQU1fQVRUQUNLX0NNRCwKKyAgICAgICAgICAgICAgICAgICAgUF9URUFNX0FVVE9GT0xMT1csIFBfVEVBTV9DT0xPUlMsIFBfVEVBTV9MRUFERVIsCisgICAgICAgICAgICAgICAgICAgIFBfVEVBTV9ORVdNRU1CRVIsIFBfVEVBTV9XQU5URURfUk9XLCBQX1RFQU1fV0lNUFlfUk9XCisgICAgICAgIEJld2VndW5nOiAgIElzVGVhbU1vdmUsIFRlYW1GbGVlCisgICAgICAgIE1pdGdsaWVkZXI6IElzVGVhbUxlYWRlciwgVGVhbU1lbWJlcnMKKyAgICAgICAgS2FtcGY6ICAgICAgQXNzb2NNZW1iZXIsIERlQXNzb2NNZW1iZXIsIEluc2VydEVuZW15VGVhbSwKKyAgICAgICAgICAgICAgICAgICAgU2VsZWN0RmFyRW5lbXkKKyAgICAgICAgUG9zaXRpb25lbjogUHJlc2VudFBvc2l0aW9uLCBQcmVzZW50Um93cywgUHJlc2VudEVuZW15Um93cywKKyAgICAgICAgICAgICAgICAgICAgUHJlc2VudFRlYW1Qb3NpdGlvbiwgU3dhcFJvd3MKKyAgICAgICAgU29uc3RpZ2VzOiAgVGVhbVByZWZpeCwgdGVhbWthbXBmX2ludGVybgorCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCitMYXN0IG1vZGlmaWVkOiAxNi0wOC0yMDEwLCBHYWJ5bG9uCmRpZmYgLS1naXQgYS9kb2MvbGZ1bi9TZXQgYi9kb2MvbGZ1bi9TZXQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNDJlNjkzMAotLS0gL2Rldi9udWxsCisrKyBiL2RvYy9sZnVuL1NldApAQCAtMCwwICsxLDEzNyBAQAorU2V0KCkKK0ZVTktUSU9OOgorICAgICBwdWJsaWMgdmFyYXJncyBtaXhlZCBTZXQoc3RyaW5nIG5hbWUsIG1peGVkIFZhbHVlLCBpbnQgVHlwZSwgaW50IGV4dGVybik7CisKK0RFRklOSUVSVCBJTjoKKyAgICAgL3N0ZC90aGluZy9wcm9wZXJ0aWVzLmMKKyAgICAgL3N5cy90aGluZy9wcm9wZXJ0aWVzLmggKFByb3RvdHlwKQorCitBUkdVTUVOVEU6CisgICAgIG5hbWUgLSBQcm9wZXJ0eSwgZGllIG1hbmlwdWxpZXJ0IHdlcmRlbiBzb2xsCisgICAgIFZhbHVlIC0gZGVyIHp1IHNldHplbmRlL2FlbmRlcm5kZSBXZXJ0CisgICAgIFR5cGUgLSBkaWUgRWlnZW5zY2hhZnQgZGVyIFByb3BlcnR5LCBkaWUgbWFuaXB1bGllcnQgd2VyZGVuIHNvbGwKKyAgICAgZXh0ZXJuIC0gSW50ZXJuZSBWZXJ3ZW5kdW5nOgorICAgIFd1cmRlIFNldCB1ZWJlciBTZXRQcm9wIHZvbiBhdXNzZW4gZ2VydWZlbi4KKworQkVTQ0hSRUlCVU5HOgorICAgICBFaW5lIGRlciBpbm5lcmVuIEVpZ2Vuc2NoYWZ0ZW4gZGVyIFByb3BlcnR5ICduYW1lJyB3aXJkIHZlcmFlbmRlcnQuCisgICAgICdUeXBlJyBpc3QgZGFiZWkgZWluZXIgZGVyIGluIC9zeXMvdGhpbmcvcHJvcGVydGllcy5oIGRlZmluaWVydGVuCisgICAgIEZfWFhYIC0gV2VydGU6CisKKyAgICAgRl9WQUxVRSAoPT0wLCBkZWZhdWx0KQorICAgICAgIFNldHp0IGRlbiBJbmhhbHQgZGVyIFByb3BlcnR5IGF1ZiAnVmFsdWUnLiBBZWhubGljaCAiU2V0UHJvcCIsCisgICAgICAgdW1nZWh0IGplZG9jaCBlaW5lIGV0d2FpZ2UgRl9TRVRfTUVUSE9EIG9kZXIgX3NldF8nbmFtZScoKS1NZXRob2RlLgorICAgICBGX01PREUKKyAgICAgRl9NT0RFX0FTCisgICAgIEZfTU9ERV9BRAorICAgICAgIEFlbmRlcnQgZWluZXMgZGVyIGludGVybmVuIEZsYWdzIGRlciBQcm9wZXJ0eS4gRl9NT0RFIG5lZ2llcnQgZGVuCisgICAgICAgdm9yaGVyaWdlbiBXZXJ0IHZvbSBGbGFnICdWYWx1ZScsIEZfTU9ERV9BUyBzZXR6dCB1bmQgRl9NT0RFX0FECisgICAgICAgbG9lc2NodCBpaG4uCisgICAgICAgVmVyZnVlZ2JhcmUgaW50ZXJuZSBGbGFnczoKKyAgICAgICAgIFNBVkUgCisgICAgICAgICAgIFByb3BlcnR5IHdpcmQgYmVpIHNhdmVfb2JqZWN0KCkgZ2VzcGVpY2hlcnQKKyAgICAgICAgIFBST1RFQ1RFRCAKKyAgICAgICAgICAgRmxhZyBzZXR6YmFyIGR1cmNoOiAgIGJlbGllYmlnZXMgT2JqZWt0CisgICAgICAgICAgIEZsYWcgbG9lc2NoYmFyIGR1cmNoOiB0aGlzX29iamVjdCgpLCBST09ULCBFTSsKKyAgICAgICAgICAgSW5oYWx0IGRlciBQcm9wZXJ0eSB2ZXJhZW5kZXJuIHNvd2llIFNldC0gdW5kIFF1ZXJ5LU1ldGhvZGVuCisgICAgICAgICAgIHNldHplbiBvZGVyIGxvZXNjaGVuIGR1ZXJmZW4gbnVyIG5vY2ggdGhpc19vYmplY3QoKSwgUk9PVCwgRU0rCisgICAgICAgICAgIFdBUk5VTkc6IERpZXNlcyBGbGFnIG5pY2h0IGxlaWNodGZlcnRpZyBiZWkgU3BpZWxlcm4gc2V0emVuIQorICAgICAgICAgU0VDVVJFRCAgCisgICAgICAgICAgIEZsYWcgc2V0emJhciBkdXJjaDogICB0aGlzX29iamVjdCgpLCBST09ULCBFTSsKKyAgICAgICAgICAgRmxhZyBsb2VzY2hiYXIgZHVyY2g6IE5pZW1hbmRlbiEKKyAgICAgICAgICAgSW5oYWx0IGRlciBQcm9wZXJ0eSB2ZXJhZW5kZXJuIHNvd2llIFNldC0gdW5kIFF1ZXJ5LU1ldGhvZGVuCisgICAgICAgICAgIHNldHplbiBvZGVyIGxvZXNjaGVuIGR1ZXJmZW4gbnVyIG5vY2ggdGhpc19vYmplY3QoKSwgUk9PVCwgRU0rCisgICAgICAgICBOT1NFVE1FVEhPRCAKKyAgICAgICAgICAgUHJvcGVydHkgbmljaHQgbWVociB1ZWJlciBTZXRQcm9wKCkgYWVuZGVyYmFyCisgICAgICAgICAgIChkYW1pdCBlbnRmYWxsZW4gYXVjaCBTRVRfTUVUSE9ELCBfc2V0XyduYW1lJykKKyAgICAgRl9TRVRfTUVUSE9ECisgICAgICAgQWVuZGVydCBkZW4gRWludHJhZyBmdWVyIGVpbmUgU2V0TWV0aG9kIC0gZWluZSBDbG9zdXJlLCBkaWUgYW5zdGF0dAorICAgICAgIGRlcyBTZXR6ZW5zIGRlciBQcm9wZXJ0eSBiZWltIEF1ZnJ1ZiB2b24gU2V0UHJvcCBtaXQgJ1ZhbHVlJworICAgICAgIGF1ZmdlcnVmZW4gd2lyZC4KKyAgICAgRl9RVUVSWV9NRVRIT0QKKyAgICAgICBBZW5kZXJ0IGRlbiBFaW50cmFnIGZ1ZXIgZWluZSBRdWVyeU1ldGhvZCAtIGVpbmUgQ2xvc3VyZSwgZGllIGFuc3RhdHQKKyAgICAgICBkZXMgTGVzZW5zIGRlciBQcm9wZXJ0eSBiZWltIEF1ZnJ1ZiB2b24gUXVlcnlQcm9wIGF1ZmdlcnVmZW4gd2lyZC4KKworUlVlQ0tHQUJFV0VSVDoKKyAgICAgRGFzIEVyZ2VibmlzIGRlciBNYW5pcHVsYXRpb24gYnp3LiBlaW5lciBkZXIgZGVmaW5pZXJ0ZW4KKyAgICAgRmVobGVyY29kZXMuCisKK0JFTUVSS1VOR0VOOgorICAgICAtIFNldCgpIHNvbGx0ZSBuaWNodCB6dW0gcmVndWxhZXJlbiBNYW5pcHVsaWVyZW4gZGVzIEluaGFsdHMgZWluZXIKKyAgICAgICBQcm9wZXJ0eSB2ZXJ3ZW5kZXQgd2VyZGVuLCBkYSBzb3dvaGwgRl9TRVRfTUVUSE9EIGFscyBhdWNoIGxpYmludGVybmUKKyAgICAgICBfc2V0XyduYW1lJygpLU1ldGhvZGVuIHVtZ2FuZ2VuIHdlcmRlbiB1bmQgZGFzIEVyZ2VibmlzIGZ1ZXIgc28KKyAgICAgICB2ZXJhZW5kZXJ0ZSBQcm9wZXJ0aWVzIHVuZGVmaW5pZXJ0IGlzdC4KKyAgICAgLSBlaW5lIGdlc2V0enRlIEZfU0VUL0ZfUVVFUllfTUVUSE9EIGhhdCBiZWkgU2V0UHJvcC9RdWVyeVByb3AgVm9ycmFuZworICAgICAgIHZvciBlaW5lciBfc2V0L19xdWVyeV9tZXRob2QKKyAgICAgICAtPiBfc2V0L19xdWVyeSB3aXJkIG5hY2ggZXJmb2xncmVpY2hlbSBSdWYgdm9uIEZfWFhYX01FVEhPRCBpZ25vcmllcnQKKyAgICAgLSBGX1NFVC9GX1FVRVJZX01FVEhPRCBzb2xsdGUgbm9ybWFsZXJ3ZWlzZSBWb3J6dWcgdm9yIGVpbmVyCisgICAgICAgX3NldF8vX3F1ZXJ5XyogZ2VnZWJlbiB3ZXJkZW4uCisKKyAgICBTZXRNZXRob2RzL1F1ZXJ5TWV0aG9kczoKKyAgICAgLSBmYWxscyBpaHIgUXVlcnkvU2V0TWV0aG9kcyBhbiBvZWZmZW50bGljaGVuIFByb3BlcnRpZXMgc2V0emVuCisgICAgICAgd29sbHQsIHBydWVmdCBiaXR0ZSB2b3JoZXIsIG9iIGRvcnQgbmljaHQgc2Nob24gZWluZSAoZnJlbWRlKSBnZXNldHp0CisgICAgICAgaXN0IHVuZCBicmVjaHQgZ2dmLiBldWVyIFNldCgpIGFiLCB1bSBuaWNodCBkaWUgQXJiZWl0IGFuZGVyZXIKKyAgICAgICBNaXRtYWdpZXIgenUgc2Fib3RpZXJlbiAoei5CLiBQX0hBTkRTKQorICAgICAtIFByb3BlcnRpZXMgc29sbHRlbiBtaXQgUXVlcnktIG9kZXIgU2V0TWV0aG9kZW4gbnVyIHNvIGxhbmdlIHdpZQorICAgICAgIG5vZXRpZyBiZWxlZ3Qgd2VyZGVuCisgICAgICAgLT4gbWFuY2hlIFByb3BlcnRpZXMgc29sbHRlIG1hbiBhbHMgV2VydCBzZXR6ZW4sIF9hdWNoIHdlbm5fIGRpZQorICAgICAgICAgIFNwaWVsZXIgc2llIHp1cnVlY2tzZXR6ZW4ga29lbm50ZW4gKHpCIFBfTVNHSU4vUF9NU0dPVVQpCisgICAgIC0gYXVmIGtlaW5lbiBGYWxsIGRlbiBXZXJ0IHNwZWljaGVybiwgdWViZXJzY2hyZWliZW4sIHJ1ZWNrc2NocmVpYmVuLAorICAgICAgIGRhcyBmdWVocnQgZmFzdCBpbW1lciB6dSBQcm9ibGVtZW4uCisgICAgIC0gU2V0L1F1ZXJ5TWV0aG9kZW4gc29sbHRlbiBuaWNodCBhbHMgVHJpZ2dlci9MaXN0ZW5lciBmdWVyIGVpbgorICAgICAgIEVyZWlnbmlzICh6LkIuIFBfRElFX01TRyBmdWVyIGRhcyBFcmVpZ25pcyAiVG9kIGRlcyBTcGllbGVycyIpCisgICAgICAgbWlzc2JyYXVjaHQgd2VyZGVuCisgICAgICAgLT4gZXMgZ2lidCBzaWNoZXJlIHVuZCBzYXViZXJlIE1vZWdsaWNoa2VpdGVuIChOb3RpZnlQbGF5ZXJEZWF0aCksCisgICAgICAgICAgdW5kIHdlbm4gbmljaHQsIHdlbmRldCBldWNoIGFuIGRlbiBFTSBldXJlcyBWZXJ0cmF1ZW5zCisgICAgIC0gRl9TRVQvRl9RVUVSWV9NRVRIT0RzIGtvZW5uZW4gJ3Byb3RlY3RlZCcgKGVtcGZvaGxlbikgb2RlciAnc3RhdGljJworICAgICAgIHNlaW4uIF9zZXRfL19xdWVyeV8gZHVlcmZlbiBtb21lbnRhbiBfbmljaHRfICdwcm90ZWN0ZWQnIHNlaW4sIGZ1ZXIKKyAgICAgICBnZWh0IG51ciAnc3RhdGljJyAoaW4gZGllc2VtIEZhbGwgZW1wZm9obGVuKS4KKworQkVJU1BJRUxFOgorICAgICAjIyMgQWVuZGVybiB2b24gRWlnZW5zY2hhZnRlbiBlaW5lciBQcm9wZXJ0eSAjIyMKKyAgICAgLy8gU2V0emVuIGRlcyBTQVZFLUZsYWdzIChiZWkgc2F2ZV9vYmplY3QoKSBtaXR6dXNwZWljaGVybikKKyAgICAgU2V0KFBfWFlaLCBTQVZFLCBGX01PREVfQVMpOworCisgICAgIC8vIExvZXNjaGVuIGRlcyBTQVZFLUZsYWdzCisgICAgIFNldChQX1hZWiwgU0FWRSwgRl9NT0RFX0FEKTsKKyAgICAgCisgICAgIC8vIE5lZ2llcmVuIGRlcyBiaXNoZXJpZ2VuIFNBVkUtRmxhZ3MKKyAgICAgU2V0KFBfWFlaLCBTQVZFLCBGX01PREUpOworICAgICAvLyBIaW53ZWlzOiBkYXMgU2V0emVuIGRlcyBGbGFncyBmdW5rdGlvbmllcnQgbWl0dGVscyBGX01PREUgbnVyIGRhbm4sCisgICAgIC8vIHdlbm4gc2ljaGVyZ2VzdGVsbHQgaXN0LCBkYXNzIGVzIHZvcmhlciBuaWNodCBnZXNldHp0IHdhci4gRGllIAorICAgICAvLyBzaWNoZXJlIFZhcmlhbnRlIGlzdCBkYWhlciwgRl9NT0RFX0FTIHp1IHZlcndlbmRlbi4KKworICAgICAvLyBTcGVycmVuIGRlcyBTZXRQcm9wL1NFVF9NRVRIT0QtWnVncmlmZnM6CisgICAgIFNldChQX1hZWiwgTk9TRVRNRVRIT0QsIEZfTU9ERV9BUyk7CisKKyAgICAgLy8gVm9ybGFldWZpZ2VyIFp1Z3JpZmZzc2NodXR6IGZ1ZXIgZWluZSBQcm9wZXJ0eToKKyAgICAgU2V0KFBfWFlaLCBQUk9URUNURUQsIEZfTU9ERV9BUyk7CisKKyAgICAgLy8gUGVybWFuZW50ZXIgWnVncmlmZnNzY2h1dHogZnVlciBlaW5lIFByb3BlcnR5OgorICAgICBTZXQoUF9YWVosIFNFQ1VSRUQsIEZfTU9ERV9BUyk7CisKKyAgICAgIyMjIFNldHplbiBlaW5lciBTZXRNZXRob2QvUXVlcnlNZXRob2QgIyMjCisgICAgIC8vIFNldHplbiBlaW5lciBpbnRlcm5lbiBTZXRNZXRob2QKKyAgICAgbWl4ZWQgZm9vKG1peGVkIHZhbCk7CisgICAgIC4uLgorICAgICBTZXQoUF9YWVosICMnZm9vLCBGX1NFVF9NRVRIT0QpOworICAgICAuLi4KKworICAgICAvLyBTZXR6ZW4gZWluZXIgUXVlcnlNZXRob2QgYmVpIGVpbmVtIGFuZGVyZW4gT2JqZWt0CisgICAgIG1peGVkIGJhcigpOworICAgICAuLi4KKyAgICAgb3RoZXItPlNldChQX1hZWiwgIydiYXIsIEZfUVVFUllfTUVUSE9EKTsKKyAgICAgLi4uCisKKyAgICAgLy8gRGVyIFZvbGxzdGFlbmRpZ2tlaXQgaGFsYmVyIHNlaSBkYXMgQWVuZGVybiBlaW5lciBQcm9wZXJ0eSB1bnRlcgorICAgICAvLyBVbWdlaHVuZyB2b24gU2V0LU1ldGhvZGVuIGFuZ2VnZWJlbi4gRXMgaXN0IGFiZXIgYXVzIG8uZy4gR3J1ZW5kZW4KKyAgICAgLy8genUgZW1wZmVobGVuLCBkaWVzZSBWYXJpYW50ZSBuaWNodCB6dSB2ZXJ3ZW5kZW4uCisgICAgIFNldChQX1hZWiwgImJsYSIsIEZfVkFMVUUpOworCitTSUVIRSBBVUNIOgorICAgICBBZWhubGljaGVzOiBTZXRQcm9wKEwpLCBRdWVyeVByb3AoTCksIFF1ZXJ5KEwpCisgICAgIEdlbmVyZWxsOiAgU2V0UHJvcGVydGllcyhMKSwgUXVlcnlQcm9wZXJ0aWVzKEwpCisgICAgIEtvbnplcHQ6ICBwcm9wZXJ0aWVzLCAvc3RkL3RoaW5nL3Byb3BlcnRpZXMuYworICAgICBTb25zdGlnZXM6ICBQX0FVVE9MT0FET0JKCisKKzA2LiBKYW4gMjAwOCBBcmF0aG9ybgpkaWZmIC0tZ2l0IGEvZG9jL2xmdW4vU2V0QXR0YWNrQ2hhdHMgYi9kb2MvbGZ1bi9TZXRBdHRhY2tDaGF0cwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44NzIwM2ExCi0tLSAvZGV2L251bGwKKysrIGIvZG9jL2xmdW4vU2V0QXR0YWNrQ2hhdHMKQEAgLTAsMCArMSw2OCBAQAorU2V0QXR0YWNrQ2hhdHMoKQorCitGVU5LVElPTjoKKyAgICAgdm9pZCBTZXRBdHRhY2tDaGF0cyhpbnQgY2hhbmNlLCBtaXhlZCBzdHJzKTsKKworREVGSU5JRVJUIElOOgorICAgICAvc3RkL25wYy9jaGF0LmMKKworQVJHVU1FTlRFOgorICAgICBjaGFuY2UKKyAgICAgICAgICBQcm96ZW50dWFsZSBXYWhyc2NoZWlubGljaGtlaXQgZWluZXIgQXVzZ2FiZQorICAgICBzdHJzCisgICAgICAgICAgU3RyaW5nYXJyYXkgbWl0IGRlbiBNb25zdGVyY2hhdHMKKworQkVTQ0hSRUlCVU5HOgorICAgICBEZXIgTlBDIGdpYnQgbWl0IGRlciBXYWhyc2NoZWlubGljaGtlaXQgJ2NoYW5jZScgZWluZW4genVmYWVsbGlnCisgICAgIGdld2FlaGx0ZW4gVGV4dCBhdXMgJ3N0cnMnIHZvbiBzaWNoLiBEaWUgQXJyYXllbGVtZW50ZSBrb2VubmVuIAorICAgICBhdWNoIEZ1bmt0aW9uZW4gKCJAQGZ1bmNAQCIpIG9kZXIgQ2xvc3VyZXMgZW50aGFsdGVuLCBkaWUgZGFubgorICAgICBhdWZnZXJ1ZmVuIHdlcmRlbiB1bmQgZGVyZW4gUnVlY2tnYWJld2VydGUgZGFzIE1vbnN0ZXIgZGFubiBhdXNnaWJ0LgorCitSVUVDS0dBQkVXRVJUOgorICAgICBrZWluZXIKKyAgICAgCitCRU1FUktVTkdFTjoKKyAgICAgQXR0YWNrQ2hhdHMgd2VyZGVuIG51ciBpbSBLYW1wZiBhdXNnZWdlYmVuLiBBbnNvbnN0ZW4gaXN0IFNldENoYXRzKCkKKyAgICAgenUgdmVyd2VuZGVuLgorICAgICAKKyAgICAgJ2NoYW5jZScgd2lyZCBpbiBkZXIgUHJvcGVydHkgUF9BQ0hBVF9DSEFOQ0UgYWJnZWxlZ3QuIFVtIGVpbmVuIE5QQworICAgICB2b3J1ZWJlcmdlaGVuZCAnc3RpbGx6dWxlZ2VuJywga2FubiBtYW4gUF9BQ0hBVF9DSEFOQ0UgYXVmIDAgc2V0emVuLgorICAgICAKKyAgICAgTWFuIGthbm4gQXR0YWNrQ2hhdHMgbnV0emVuLCB1bSBNb25zdGVyc3BlbGxzIHp1IHJlYWxpc2llcmVuLiBCZXNzZXIKKyAgICAgaXN0IGVzIGFiZXIsIGRhZnVlciAnQWRkU3BlbGwnIHp1IHZlcndlbmRlbi4KKyAgICAgCitCRUlTUElFTEU6CisKKyAgICAgU2V0QXR0YWNrQ2hhdHMoIDIwLAorICAgICAgICh7ICJEZXIgT3JrIHRyaXR0IERpciBpbiBkZW4gSGludGVybi5cbiIsCisgICAgICAgICAgIkRlciBPcmsgYnJ1ZWxsdDogTGViZW5kIGtvbW1zdCBEdSBoaWVyIG5pY2h0IHJhdXMhXG4iLAorICAgICAgICAgICJEZXIgT3JrIGJsdXRldCBzY2hvbiBhdXMgbWVocmVyZW4gV3VuZGVuLlxuIiwKKyAgICAgICAgICAiQEBrbmlyc2NoQEAiIH0pICk7CisgICAgICAgICAgCisgICAgIHN0cmluZyBrbmlyc2NoKCkKKyAgICAgeworICAgICAgIG9iamVjdCAqcnVlc3R1bmcsICp0bXAsIGhlbG07CisgICAgICAgCisgICAgICAgcnVlc3R1bmcgPSB0aGlzX3BsYXllcigpLT5RdWVyeVByb3AoUF9BUk1PVVJTKTsgLy8gZ2V0cmFnZW5lIFJ1ZXN0dW5nCisgICAgICAgdG1wID0gZmlsdGVyX29iamVjdHMocnVlc3R1bmcsICJpZCIsIEFUX0hFTE1FVCk7CisgICAgICAgLy8gV2VubiBkZXIgU3BpZWxlciBlaW5lbiBIZWxtIHRyYWVndCwgZW50aGFlbHQgJ3RtcCcgamV0enQKKyAgICAgICAvLyBlaW4gQXJyYXkgbWl0IGRlbSBIZWxtb2JqZWt0IGFscyBlaW56aWdlbSBFbGVtZW50CisgICAgICAgaWYgKHNpemVvZih0bXApKSBoZWxtID0gdG1wWzBdOworCSBpZiAob2JqZWN0cChoZWxtKSkKKwkgeworCSAgIC8vIEFDIG51ciBkYW5uIHNlbmtlbiwgd2VubiBzaWUgbmljaHQgc2Nob24gMCBpc3QuCisJICAgaWYgKGhlbG0tPlF1ZXJ5UHJvcChQX0FDKT4wKSB7CisJICAgICBoZWxtLT5EYW1hZ2UoMSk7CisJICAgICByZXR1cm4gIkRlciBPcmsgYmVzY2hhZWRpZ3QgRGVpbmVuIEhlbG0hXG4iOworCSAgIH0KKwkgICByZXR1cm4gIiI7CisJIH0KKwkgZWxzZQorCSAgIHJldHVybiAiIjsgLy8ga2VpbmUgTWVsZHVuZworICAgICB9CisKK1NJRUhFIEFVQ0g6CisgICAgIFBfQUNIQVRfQ0hBTkNFLCBTZXRDaGF0cygpLCAvc3RkL25wYy9jaGF0LmMsIEFkZFNwZWxsKCkKKworTEVUWlRFIEFFTkRFUlVORzoKKwlEb24sIDI3LjEyLjIwMDcsIDE2OjM1OjAwIHZvbiBBcmF0aG9ybgpkaWZmIC0tZ2l0IGEvZG9jL2xmdW4vU2V0QXR0ciBiL2RvYy9sZnVuL1NldEF0dHIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOGVjZjM4MQotLS0gL2Rldi9udWxsCisrKyBiL2RvYy9sZnVuL1NldEF0dHIKQEAgLTAsMCArMSwzMSBAQAorU2V0QXR0cigpCitGVU5LVElPTjoKKyAgICAgcHJpdmF0ZSBzdGF0aWMgaW50IFNldEF0dHIoc3RyaW5nIGF0dHIsIGludCB2YWwpCisKK0RFRklOSUVSVCBJTjoKKyAgICAgL3N0ZC9saXZpbmcvYXR0cmlidXRlcy5jCisKK0FSR1VNRU5URToKKyAgICAgYXR0ciAgICAgICAtIHp1IHNldHplbmRlcyBBdHRyaWJ1dAorICAgICB2YWwgICAgICAgIC0gV2VydAorCitCRVNDSFJFSUJVTkc6CisgICAgIEZpbHRlcnQgZGVuIFdlcnQgZHVyY2ggX2ZpbHRlcmF0dHIoKS4gRGFkdXJjaCB3ZXJkZW4gU1RSLCBJTlQsIENPTiwgREVYCisgICAgIGF1ZiAyMCBiZWdyZW56dC4gU2V0enQgZGFubiBkYXMgQXR0cmlidXQuCisgICAgIE9mZnNldHMgd2VyZGVuIGhpZXIgbmljaHQgYmVydWVja3NpY2h0aWd0LCBRdWVyeUF0dHJpYnV0ZSgpIGdpYnQgYWxzbworICAgICB2YWwgKyBldHdhaWdlIE9mZnNldHMvTW9kaWZpZXIgenVydWVjay4KKworUlVlQ0tHQUJFV0VSVDoKKyAgICAgVGF0c2FlY2hsaWNoIGdlc2V0enRlciBXZXJ0LgorCitCRU1FUktVTkdFTjoKKyAgICAgV2lyZCB2b24gU2V0QXR0cmlidXRlKCkgdW5kIFNldFJlYWxBdHRyaWJ1dGUoKSBhdWZnZXJ1ZmVuLgorCitTSUVIRSBBVUNIOgorICAgICBRdWVyeUF0dHJpYnV0ZSgpLCBRdWVyeVJlYWxBdHRyaWJ1dGUoKSwgUXVlcnlBdHRyaWJ1dGVPZmZzZXQoKSwNCisgICAgIFNldEF0dHJpYnV0ZSgpLCBTZXRSZWFsQXR0cmlidXRlKCksIFVwZGF0ZUF0dHJpYnV0ZXMoKSwNCisgICAgIFRlc3RBdHRyaWJ1dGVMb2NrKCksDQorICAgICBQX0FUVFJJQlVURVMsIFBfQVRUUklCVVRFU19PRkZTRVRTLCBQX0FUVFJJQlVURVNfTU9ESUZJRVIsDQorICAgICBQX1hfQVRUUl9NT0QsIFBfTV9BVFRSX01PRCwgL3N0ZC9saXZpbmcvYXR0cmlidXRlcy5jDQorCisxMy5Ob3YuMjAwMiwgR2xvaW5zb24KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9kb2MvbGZ1bi9TZXRBdHRyaWJ1dGUgYi9kb2MvbGZ1bi9TZXRBdHRyaWJ1dGUKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYmFiNTRmMgotLS0gL2Rldi9udWxsCisrKyBiL2RvYy9sZnVuL1NldEF0dHJpYnV0ZQpAQCAtMCwwICsxLDI4IEBACitTZXRBdHRyaWJ1dGUoKQorRlVOS1RJT046CisgICAgIGludCBTZXRBdHRyaWJ1dGUoc3RyaW5nIGF0dHIsIGludCB2YWwpCisKK0RFRklOSUVSVCBJTjoKKyAgICAgL3N0ZC9saXZpbmcvYXR0cmlidXRlcy5jCisKK0FSR1VNRU5URToKKyAgICAgYXR0ciAgICAgICAtIHp1IHNldHplbmRlcyBBdHRyaWJ1dAorICAgICB2YWwgICAgICAgIC0gV2VydAorCitCRVNDSFJFSUJVTkc6CisgICAgIE5pbW0gdmFsIGFscyBHZXNhbXR3ZXJ0IGRlcyBBdHRyaWJ1dGVzLCBkLmguIHppZWh0IGV0d2FpZ2UgT2Zmc2V0cyB2b3IKKyAgICAgU2V0emVuIGFiLiAoUXVlcnlBdHRyaWJ1dGUgZ2lidCBkYW5uIGFsc28gdmFsIHp1cnVlY2spCisKK1JVZUNLR0FCRVdFUlQ6CisgICAgIERlbiBkdXJjaCBTZXRBdHRyIGdlZmlsdGVydGVuIGdlc2V0enRlbiBXZXJ0LgorICAgICBCaXR0ZSBuaWNodCBhdWYgU3BpZWxlciBhbndlbmRlbiEKKworU0lFSEUgQVVDSDoNCisJUXVlcnlBdHRyaWJ1dGUoKSwgUXVlcnlSZWFsQXR0cmlidXRlKCksIFF1ZXJ5QXR0cmlidXRlT2Zmc2V0KCksDQorCVNldEF0dHJpYnV0ZSgpLCBTZXRSZWFsQXR0cmlidXRlKCksIFVwZGF0ZUF0dHJpYnV0ZXMoKSwNCisJU2V0VGltZWRBdHRyTW9kaWZpZXIoKSwgUXVlcnlUaW1lZEF0dHJNb2RpZmllcigpLCANCisJRGVsZXRlVGltZWRBdHRyTW9kaWZpZXIoKSwNCisJUF9BVFRSSUJVVEVTLCBQX0FUVFJJQlVURVNfT0ZGU0VUUywgUF9USU1FRF9BVFRSX01PRCwNCisJUF9YX0FUVFJfTU9ELCBQX01fQVRUUl9NT0QsIC9zdGQvbGl2aW5nL2F0dHJpYnV0ZXMuYw0KKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCitMYXN0IG1vZGlmaWVkOiBUdWUgSnVsIDI3IDIwOjAwOjIwIDIwMDQgYnkgTXVhZGliDQpkaWZmIC0tZ2l0IGEvZG9jL2xmdW4vU2V0QnV5RmFjdCBiL2RvYy9sZnVuL1NldEJ1eUZhY3QKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYjUxNTRjNwotLS0gL2Rldi9udWxsCisrKyBiL2RvYy9sZnVuL1NldEJ1eUZhY3QKQEAgLTAsMCArMSwzNiBAQAorU2V0QnV5RmFjdCgpCisKK0ZVTktUSU9OOgorICAgICB2b2lkIFNldEJ1eUZhY3QoaW50IGZhY3QpOworCitERUZJTklFUlQgSU46CisgICAgIC9zdGQvbGFkZW4uYworCitBUkdVTUVOVEU6CisgICAgIGZhY3QKKyAgICAgICAgICBEZXIgRWlua2F1ZnNwcmVpc211bHRpcGxpa2F0b3IuCisKK0JFU0NIUkVJQlVORzoKKyAgICAgRGVyIFByZWlzLCBkZXIgYmVpbSBLYXVmIGVpbmVzIE9iamVrdHMgaW0gTGFkZW4genUgZW50cmljaHRlbiBpc3QsCisgICAgIGVycmVjaG5ldCBzaWNoIGF1cyBzZWluZW0gV2VydCAoIFBfVkFMVUUpLCBtdWx0aXBsaXppZXJ0IG1pdCBkZW0gRmFrdG9yCisgICAgIGZhY3QuIERpZXNlciBQcmVpcyBpc3Qga29uc3RhbnQgdW5kIG5pY2h0IHZvbiBkZXIgYWt0dWVsbGVuIE1hcmt0bGFnZQorICAgICBhYmhhZW5naWcuCisKKyAgICAgRGVyIERlZmF1bHR3ZXJ0IGlzdCAzLiBFaW4gaG9laGVyZXIgV2VydCBlbnRzcHJpY2h0IGVpbmVtIHRldXJlbiBMYWRlbiwKKyAgICAgd2FlaHJlbmQgZWluIGtsZWluZXJlciBXZXJ0IHp1IGtsZWluZW4gUHJlaXNlbiBmdWVocnQuCisKK1JVZUNLR0FCRVdFUlQ6CisgICAgIGtlaW5lcgorCitCRU1FUktVTkdFTjoKKyAgICAgTm9ybWFsZXJ3ZWlzZSBrb21tdCBtYW4gb2huZSBkaWVzZSBGdW5rdGlvbiBhdXM6IGluIHRldXJlbiBMYWVkZW4gd2lyZAorICAgICBuaWNodCB2aWVsIGVpbmdla2F1ZnQgKGVzIHNlaSBkZW5uLCBlcyBsaWVnZW4gc3RhbmRhcmRtYWVzc2lnIGd1dGUKKyAgICAgT2JqZWt0ZSBpbSBTcGVpY2hlciksIGVpbmVtIEJpbGxpZ2xhZGVuIHdpcmQgYmFsZCBkYXMgR2VsZCBhdXNnZWhlbiBtaXQKKyAgICAgZGVyIEZvbGdlLCBkYXNzIGRlciBMYWRlbmJlc2l0emVyIG5pY2h0cyBtZWhyIGFua2F1ZmVuIGthbm4gdW5kIHNlaW4KKyAgICAgTGFnZXIgZ2FlaG5lbmQgbGVlciBpc3QuCisKK1NJRUhFIEFVQ0g6CisgICAgIFF1ZXJ5QnV5RmFjdCgpLCAvc3RkL2xhZGVuLmMKKworLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorTGFzdCBtb2RpZmllZDogV2VkIE1heSA4IDEwOjI0OjUyIDE5OTYgYnkgV2FyZ29uCmRpZmYgLS1naXQgYS9kb2MvbGZ1bi9TZXRDaGF0cyBiL2RvYy9sZnVuL1NldENoYXRzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjNmNDI1YTgKLS0tIC9kZXYvbnVsbAorKysgYi9kb2MvbGZ1bi9TZXRDaGF0cwpAQCAtMCwwICsxLDY5IEBACitTZXRDaGF0cygpCisKK0ZVTktUSU9OOgorCXZvaWQgU2V0Q2hhdHMoaW50IGNoYW5jZSxtaXhlZCBzdHJzKTsKKworREVGSU5JRVJUIElOOgorCS9zdGQvbnBjL2NoYXQuYworCitBUkdVTUVOVEU6CisJY2hhbmNlCisJICBQcm96ZW50dWFsZSBXYWhyc2NoZWlubGljaGtlaXQgZWluZXIgQXVzZ2FiZQorCXN0cnMKKwkgIFN0cmluZ2FycmF5IG1pdCBkZW4gTW9uc3RlcmNoYXRzCisKK0JFU0NIUkVJQlVORzoKKwlEZXIgTlBDIGdpYnQgbWl0IGRlciBXYWhyc2NoZWlubGljaGtlaXQgPGNoYW5jZT4gcHJvIEhlYXJ0YmVhdCBlaW5lbgorCXp1ZmFlbGxpZyBnZXdhZWhsdGVuIFRleHQgYXVzIGRlbSBBcnJheSA8c3Rycz4gdm9uIHNpY2guCisJRGllIEFycmF5ZWxlbWVudGUga29lbm5lbiBhdWNoIENsb3N1cmVzIG9kZXIKKwlwcm9jZXNzX3N0cmluZygpLUZ1bmt0aW9uZW4gKCJAQGZ1bmNAQCIpIGVudGhhbHRlbiwgZGllIGRhbm4KKwlhdWZnZXJ1ZmVuIHdlcmRlbiB1bmQgZGVyZW4gUnVlY2tnYWJld2VydGUgZGFzIE1vbnN0ZXIgZGFubiBhdXNnaWJ0LgorCSAoRnVlciBrZWluZSBBdXNnYWJlIGRhbm4gTGVlcnN0cmluZyAiIiB6dXJ1ZWNrZ2ViZW4hKQorCUluIGRpZXNlbiBGdW5rdGlvbmVuIGlzdCB0aGlzX3BsYXllcigpIGRhcyBNb25zdGVyIHNlbGJzdCEKKwlGdWVyIFplaWxlbnVtYnJ1ZWNoZSBpc3QgaW1tZXIgc2VsYnN0IHp1IHNvcmdlbi4KKworUlVFQ0tHQUJFV0VSVDoKKwlrZWluZXIKKworQkVJU1BJRUxFOgorCUVpbiBlaW5mYWNoZXMgQmVpc3BpZWw6CisJICAvLyBQcm90b3R5cGUgZnVlciBDbG9zdXJlLgorCSAgc3RhdGljIHN0cmluZyBpbmZvMSgpOworCSAgdm9pZCBjcmVhdGUoKQorCSAgeyAuLi4KKwkgICAgU2V0Q2hhdHMoMjAsCisJICAgKHsiRGVyIE9yayBzYWd0OiBIYXUgYWIsIGJldm9yIGljaCBEaWNoIGZyZXNzZS5cbiIsCisJICAgICAiRGVyIE9yayBncmluc3QgRGljaCB1bnZlcnNjaGFlbXQgYW4uXG4iLAorCSAgICAgIkRlciBPcmsgd2VkZWx0IG1pdCBzZWluZW0gU2FlYmVsIHZvciBEZWluZW0gR2VzaWNodCBoZXJ1bS5cbiIsCisJICAgICAiRGVyIE9yayBkcm9odCBEaXIgbWl0IGRlciBGYXVzdC5cbiIsCisgICAgICAgICAgICAgIydpbmZvMSwKKwkgICAgICJAQGluZm8yQEAifSkpOworICAgICAgICAgIH0KKwkgIC8vIEZ1bmt0aW9uIGFscyBDbG9zdXJlLiBQcm90b3R5cGUgbm90d2VuZGlnIQorCSAgc3RhdGljIHN0cmluZyBpbmZvMSgpCisJICB7IGlmKFF1ZXJ5UHJvcChQX0hQKTxRdWVyeVByb3AoUF9BTElHTikpCisJICAgICAgcmV0dXJuIkdsZWljaCB3ZXJkZSBpY2ggdm9uIGhpZXIgZmxpZWhlbiFcbiI7CisJICAgIHJldHVybiIiOworCSAgfQorCSAgLy8gRnVua3Rpb24gYWxzIHByb2Nlc3Nfc3RyaW5nKCkuCisJICBzdHJpbmcgaW5mbzIoKQorCSAgeyByZXR1cm4gUXVlcnlQcm9wKFBfSFApPT1RdWVyeVByb3AoUF9NQVhfSFApPworCSAiRGVyIE9yayBncmluc3Q6IE1pciBnZWh0IGVzIGZhbnRhc3Rpc2NoIVxuIjoKKwkgIkRlciBPcmsgc2V1Znp0OiBNaXIgZ2luZyBlcyB3aXJrbGljaCBzY2hvbiBtYWwgYmVzc2VyLlxuIjsKKwkgIH0KKworQkVNRVJLVU5HRU46CisJSW0gS2FtcGYgd2VyZGVuIGtlaW5lIENoYXRzIGF1c2dlZ2ViZW4uIEVzIGlzdCBkYW5uIFNldEF0dGFja0NoYXRzKCkKKwl6dSB2ZXJ3ZW5kZW4uCisJRnVua3Rpb25lbiBhbHMgcHJvY2Vzc19zdHJpbmcoKSBzb2xsdGUgbWFuIG5pY2h0IG1laHIgdmVyd2VuZGVuLgorCTxjaGFuY2U+IHdpcmQgaW4gZGVyIFByb3BlcnR5IFBfQ0hBVF9DSEFOQ0UgYWJnZWxlZ3QuIFVtIGVpbmVuIE5QQworCXZvcnVlYmVyZ2VoZW5kICdzdGlsbHp1bGVnZW4nLCBrYW5uIG1hbiBQX0NIQVRfQ0hBTkNFIGF1ZiAwIHNldHplbi4KKyAgV2VubiBrZWluIFNwaWVsZXIgYW53ZXNlbmQgaXN0LCBoYWJlbiBOUEMgaW4gZGVyIFJlZ2VsIGtlaW5lbiBIZWFydGJlYXQsCisgIHdlc3dlZ2VuIGRhbm4gYXVjaCBkaWUgQ2hhdHMgYXVzZ2VzY2hhbHRldCBzaW5kLgorICBTcGllbGVyIGtvZW5uZW4gTlBDICdzdGlsbGVuJywgZC5oLiBDaGF0cyB1bmQgQXR0YWNrQ2hhdHMgYWJzY2hhbHRlbi4KKworU0lFSEUgQVVDSDoKKwlQX0NIQVRfQ0hBTkNFLCBTZXRBdHRhY2tDaGF0cygpLCBwcm9jZXNzX3N0cmluZygpCisKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KK0xhc3QgbW9kaWZpZWQ6IFNhdCBKYW4gMTggMTg6NDg6MDYgMjAwMyBieSBQYXRyeW4KZGlmZiAtLWdpdCBhL2RvYy9sZnVuL1NldENvaW5zUGVyVW5pdHMgYi9kb2MvbGZ1bi9TZXRDb2luc1BlclVuaXRzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjA3ZTM4NzkKLS0tIC9kZXYvbnVsbAorKysgYi9kb2MvbGZ1bi9TZXRDb2luc1BlclVuaXRzCkBAIC0wLDAgKzEsMzggQEAKK1NldENvaW5zUGVyVW5pdHMoKQorCitGVU5LVElPTjoKKyAgICAgdm9pZCBTZXRDb2luc1BlclVuaXRzKGludCBjb2lucywgaW50IHVuaXRzKTsKKworREVGSU5JRVJUIElOOgorICAgICAvc3RkL3VuaXQuYworCitBUkdVTUVOVEU6CisgICAgIGNvaW5zCisgICAgICAgICAgWmFobCBkZXIgTXVlbnplbgorICAgICB1bml0cworICAgICAgICAgIFphaGwgZGVyIEVpbmhlaXRlbgorCitCRVNDSFJFSUJVTkc6CisgICAgIEVzIHdpcmQgZmVzdGdlbGVndCwgd2lldmllbCBlaW5lIGJlc3RpbW10ZSBNZW5nZSBkZXIgRWluaGVpdGVuIGtvc3RldC4KKyAgICAgRWluZSBlaW56ZWxuZSBFaW5oZWl0IGtvc3RldCBjb2lucy91bml0cyBNdWVuemVuLgorCitSVWVDS0dBQkVXRVJUOgorICAgICBrZWluZXIKKworQkVNRVJLVU5HRU46CisgICAgIEJlaSBkZXIgUHJlaXNiZXJlY2hudW5nIHdpcmQgYWJnZXJ1bmRldC4gSGF0IG1hbiBhbHNvIGVpbiBWZXJoYWVsdG5pcworICAgICB2b24gZWluZXIgTXVlbnplIHBybyB6d2VpIEVpbmhlaXRlbiwgc28gaXN0IGRlciBQcmVpcyBlaW5lciBlaW56ZWxuZW4KKyAgICAgRWluaGVpdCAwIQorCitCRUlTUElFTEU6CisgICAgIEVpbmUgRWluaGVpdCBzb2xsIDMuNSBNdWVuemVuIHdlcnQgc2VpbjoKKworICAgICAvKiA3IE11ZW56ZW4gLyAyIEVpbmhlaXRlbiA9IDMuNSBNdWVuemVuIC8gRWluaGVpdCAqLworICAgICBTZXRDb2luc1BlclVuaXRzKDcsMik7CisKK1NJRUhFIEFVQ0g6CisgICAgIFF1ZXJ5Q29pbnNQZXJVbml0cygpLCBTZXRHcmFtc1BlclVuaXRzKCksIFF1ZXJ5R3JhbXNQZXJVbml0cygpLAorICAgICAvc3RkL3VuaXQuYworCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCitMYXN0IG1vZGlmaWVkOiBXZWQgTWF5IDggMTA6MjQ6NTcgMTk5NiBieSBXYXJnb24KZGlmZiAtLWdpdCBhL2RvYy9sZnVuL1NldERvb3JTdGF0dXMgYi9kb2MvbGZ1bi9TZXREb29yU3RhdHVzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjE5NDg2MzcKLS0tIC9kZXYvbnVsbAorKysgYi9kb2MvbGZ1bi9TZXREb29yU3RhdHVzCkBAIC0wLDAgKzEsMjkgQEAKK0ZVTktUSU9OOgorICAgICB2b2lkIFNldERvb3JTdGF0dXMoc3RyaW5nIGRlc3QsIGludCBzdGF0dXMpOworCitERUZJTklFUlQgSU46CisgICAgIC9vYmovZG9vcm1hc3Rlci5jCisKK0FSR1VNRU5URToKKyAgICAgPGRlc3Q+ICAgPSBaaWVscmF1bSBkZXIgVHVlci4KKyAgICAgPHN0YXR1cz4gPSBEZXIgbmV1ZSBadXN0YW5kIGRlciBUdWVyLgorCitCRVNDSFJFSUJVTkc6CisgICAgIERlciBadXN0YW5kIGRlciBUdWVyLCBkaWUgdm9uIGRpZXNlbSBSYXVtIG5hY2ggPGRlc3Q+IGZ1ZWhydCwgd2lyZCBhdWYKKyAgICAgPHN0YXR1cz4gZ2VhZW5kZXJ0LiBIaWVyYmVpIG11c3MgPHN0YXR1cz4gZWluZXIgZGVyIGRyZWkgZm9sZ2VuZGVuIFdlcnRlCisgICAgIGF1cyA8ZG9vcnJvb20uaD4gc2VpbjoKKworICAgICAgIERfU1RBVFVTX0xPQ0tFRCAtIFR1ZXIgYWJnZXNjaGxvc3NlbgorICAgICAgIERfU1RBVFVTX0NMT1NFRCAtIFR1ZXIgZ2VzY2hsb3NzZW4KKyAgICAgICBEX1NUQVRVU19PUEVOICAgLSBUdWVyIGdlb2VmZm5ldAorCitSVUVDS0dBQkVXRVJUOgorICAgICBrZWluZXIKKworCitTSUVIRSBBVUNIOgorICAgIE5ld0Rvb3IoKSwgUXVlcnlEb29yS2V5KCksIFF1ZXJ5RG9vclN0YXR1cygpLCBQX0RPT1JfSU5GT1MsCisgICAgL3N0ZC9yb29tL2Rvb3JzLmMsIC9vYmovZG9vcm1hc3Rlci5jLCBHZXRQaGlvbGVuSW5mb3MoKSwgUXVlcnlBbGxEb29ycygpCisKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCitMZXR6dGUgQWVuZGVydW5nOiBEb24sIDA4LjA1LjIwMTQsIEdhYnlsb24KZGlmZiAtLWdpdCBhL2RvYy9sZnVuL1NldEVuZW1pZXMgYi9kb2MvbGZ1bi9TZXRFbmVtaWVzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjZjNzlhNTYKLS0tIC9kZXYvbnVsbAorKysgYi9kb2MvbGZ1bi9TZXRFbmVtaWVzCkBAIC0wLDAgKzEsMzMgQEAKK1NldEVuZW1pZXMoKQorCitGVU5LVElPTjoKKyAgICAgbWFwcGluZyBTZXRFbmVtaWVzKG9iamVjdCAqbXllbmVtaWVzKTsKKworREVGSU5JRVJUIElOOgorICAgICAvc3RkL2xpdmluZy9jb21iYXQuYworCitBUkdVTUVOVEU6CisgICAgIG15ZW5lbWllcworCSAgQXJyYXk6ICh7R2VnbmVyYXJyYXksIFplaXRlbmFycmF5fSkKKworUlVlQ0tHQUJFV0VSVDoKKyAgICAgSW50ZXJuZXMgTWFwcGluZyBtaXQgYmVrYW5udGVuIEdlZ25lcm4gdW5kIFplaXRlbi4KKworQkVTQ0hSRUlCVU5HOgorICAgICBOb3JtYWxlcndlaXNlIGZ1ZWd0IG1hbiBlaW56ZWxuZSBHZWduZXIgbWl0dGVscyBJbnNlcnRFbmVteSgpIGVpbiB1bmQKKyAgICAgbG9lc2NodCBhbHRlIEZlaW5kZSBtaXR0ZWxzIFN0b3BIdW50Rm9yKCkuCisKKyAgICAgVW0gamVkb2NoIG1pdCBlaW5lbSBTY2hsYWcgdmllbGUgVmVyYWVuZGVydW5nZW4gdm9yenVuZWhtZW4sIGthbm4gbWFuCisgICAgIGRpZSBGdW5rdGlvbiBTZXRFbmVtaWVzKCkgbnV0emVuLgorCisgICAgIElociB1ZWJlcmdpYnQgbWFuIGVpbiBBcnJheSBtaXQgZWluZW0gQXJyYXkgbWl0IGRlbiBnZXd1ZW5zY2h0ZW4gR2VnbmVybgorICAgICBhbHMgdW5kIGVpbmVtIHp3ZWl0ZW4sIGdsZWljaGdyb3NzZW4gQXJyYXkgbWl0IGRlbiBaZWl0ZW4sIHdpZSBsYW5nZQorICAgICBkaWVzZSBHZWduZXIgYWt0dWVsbCBzZWluIHNvbGxlbiwgYWxzIEVpbnRyYWVnZS4KKworICAgICBEaWUgRnVua3Rpb24gdHJhZWd0IGRpZXNlIFdlcnRlIGFscyBHZWduZXIgbWl0IGVudHNwcmVjaGVuZGVyCisgICAgIEZlaW5kZXN6ZWl0IGVpbi4KKworU0lFSEUgQVVDSDoKKyAgICAgSW5zZXJ0RW5lbXkoKSwgU3RvcEh1bnRGb3IoKSwgU2VsZWN0RW5lbXkoKSwgUHJlc2VudEVuZW1pZXMoKQorCisxMC5GZWIgMjAwNSBHbG9pbnNvbgpkaWZmIC0tZ2l0IGEvZG9jL2xmdW4vU2V0R3JhbXNQZXJVbml0cyBiL2RvYy9sZnVuL1NldEdyYW1zUGVyVW5pdHMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZmNiZjlhNAotLS0gL2Rldi9udWxsCisrKyBiL2RvYy9sZnVuL1NldEdyYW1zUGVyVW5pdHMKQEAgLTAsMCArMSwzMiBAQAorU2V0R3JhbXNQZXJVbml0cygpCisKK0ZVTktUSU9OOgorICAgICB2b2lkIFNldEdyYW1zUGVyVW5pdHMoaW50IGdyYW1zLCBpbnQgdW5pdHMpOworCitERUZJTklFUlQgSU46CisgICAgIC9zdGQvdW5pdC5jCisKK0FSR1VNRU5URToKKyAgICAgZ3JhbXMKKyAgICAgICAgICBHZXdpY2h0IGluIEdyYW1tCisgICAgIHVuaXRzCisgICAgICAgICAgWmFobCBkZXIgRWluaGVpdGVuCisKK0JFU0NIUkVJQlVORzoKKyAgICAgRXMgd2lyZCBmZXN0Z2VsZWd0LCB3aWV2aWVsIGVpbmUgYmVzdGltbXRlIE1lbmdlIGRlciBFaW5oZWl0ZW4gd2llZ3QuCisgICAgIEVpbmUgZWluemVsbmUgRWluaGVpdCB3aWVndCBncmFtcy91bml0cyBHcmFtbS4KKworUlVlQ0tHQUJFV0VSVDoKKyAgICAga2VpbmVyCisKK0JFSVNQSUVMRToKKyAgICAgVmllciBFaW5oZWl0ZW4gc29sbGVuIDMgR3JhbW0gd2llZ2VuOgorCisgICAgIFNldEdyYW1zUGVyVW5pdHMoMyw0KTsKKworU0lFSEUgQVVDSDoKKyAgICAgU2V0Q29pbnNQZXJVbml0cygpLCBRdWVyeUNvaW5zUGVyVW5pdHMoKSwgUXVlcnlHcmFtc1BlclVuaXRzKCksCisgICAgIC9zdGQvdW5pdC5jCisKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KK0xhc3QgbW9kaWZpZWQ6IFdlZCBNYXkgOCAxMDoyNTowOSAxOTk2IGJ5IFdhcmdvbgpkaWZmIC0tZ2l0IGEvZG9jL2xmdW4vU2V0UHJvcCBiL2RvYy9sZnVuL1NldFByb3AKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYjI2MDJmYgotLS0gL2Rldi9udWxsCisrKyBiL2RvYy9sZnVuL1NldFByb3AKQEAgLTAsMCArMSw0NyBAQAorU2V0UHJvcCgpCitGVU5LVElPTjoKKyAgICAgcHVibGljIG1peGVkIFNldFByb3Aoc3RyaW5nIG5hbWUsIG1peGVkIFZhbHVlKTsKKworREVGSU5JRVJUIElOOgorICAgICAvc3RkL3RoaW5nL3Byb3BlcnRpZXMuYworICAgICAvc3lzL3RoaW5nL3Byb3BlcnRpZXMuaCAoUHJvdG90eXApCisKK0FSR1VNRU5URToKKyAgICAgbmFtZQktIFByb3BlcnR5LCBkZXJlbiBXZXJ0IHZlcmFlbmRlcnQgd2VyZGVuIHNvbGwuCisgICAgIFZhbHVlCS0gV2VydCwgYXVmIGRlbiBkZXIgSW5oYWx0IGRlciBQcm9wZXJ0eSBnZXNldHp0IHdlcmRlbiBzb2xsCisKK0JFU0NIUkVJQlVORzoKKyAgICAgRGVyIERhdGVud2VydCBkZXIgUHJvcGVydHkgJ25hbWUnIHdpcmQgYXVmIGRlbiBXZXJ0ICdWYWx1ZScgZ2VzZXR6dC4KKworICAgICBFeGlzdGllcnQgZWluZSBGX1NFVF9NRVRIT0Qgb2RlciBlaW5lIF9zZXRfJ25hbWUnKCktTWV0aG9kZSBmdWVyCisgICAgIGRpZXNlIFByb3BlcnR5LCBzbyB3aXJkIGRpZXNlIGF1ZmdlcnVmZW4gdW5kIGlociAnVmFsdWUnIHVlYmVyZ2ViZW4uCisgICAgIEVpbmUgRl9TRVRfTUVUSE9EIGhhdCBkYWJlaSBWb3JyYW5nIHZvciBfc2V0XyduYW1lJygpLCBkLmguCisgICAgIF9zZXRfJ25hbWUnKCkgd2lyZCBuYWNoIGVyZm9sZ3JlaWNoZXIgRl9RVUVSWV9NRVRIT0QgbmljaHQgbWVocgorICAgICBnZXJ1ZmVuLgorCisgICAgIChEaWVzZSBNZXRob2RlbiBudXR6ZW4gZGFubiBTZXQoKSwgdW0gZGVuIERhdGVud2VydCBkZXIgUHJvcGVydHkKKyAgICAgICduYW1lJyB6dSBhZW5kZXJuLiBUZWlsd2Vpc2Ugd2VyZGVuIGFiZXIgYXVjaCBpbnRlcm5lIFZhcmlhYmxlbiBzbworICAgICAgb2VmZmVudGxpY2ggZ2VtYWNodCB1bmQgc2luZCBuaWNodCBpbiBkZXIgdWViZXIgU2V0L1F1ZXJ5IHZlcmZ1ZWdiYXJlbgorICAgICAgUHJvcGVydHkgJ25hbWUnIGFiZ2VsZWd0LikKKworUlVlQ0tHQUJFV0VSVDoKKyAgICAgRGVyIFdlcnQsIGRlciBudW4gaW4gZGVyIFByb3BlcnR5IGdlc3BlaWNoZXJ0IGlzdC4KKyAgICAgSW4gZGVyIFJlZ2VsIGlzdCBkYXMgJ1ZhbHVlJy4gV2VubiBkaWUgUHJvcGVydHkgdWViZXIgZWluZSBTRVRfTUVUSE9ECisgICAgIG9kZXIgZWluZSBfc2V0XyduYW1lJygpLUZ1bmt0aW9uIHZlcmZ1ZWd0IHVuZCBkaWVzZSAnVmFsdWUnIGFlbmRlcnQKKyAgICAgKHp1bSBCZWlzcGllbCwgaW5kZW0gc2llICdWYWx1ZScgYW4gZWluZW4gYmVzdGltbXRlbiBlcmxhdWJ0ZW4KKyAgICAgV2VydGViZXJlaWNoIGFucGFzc3QpLCBrYW5uIGRlciBSdWVja2dhYmV3ZXJ0IGplZG9jaCBhdWNoIHZlcmFlbmRlcnQKKyAgICAgc2Vpbi4KKworICAgICBXZW5uIGRpZSBQcm9wZXJ0eSBuaWNodCB2ZXJhZW5kZXJ0IHdlcmRlbiBkYXJmLCB3aXJkIC0xIHp1cnVlY2tnZWdlYmVuLgorCitCRUlTUElFTEU6CisgICAgIC8vIGdlYmVuIHdpciBkZW0gWndlcmcgZWluZSBLdXJ6YmVzY2hyZWlidW5nCisgICAgIFNldFByb3AoUF9TSE9SVCwgIkVpbiBrbGVpbmVyIFp3ZXJnIik7CisKK1NJRUhFIEFVQ0g6CisgICAgIEFlaG5saWNoZXM6CVF1ZXJ5UHJvcChMKSwgU2V0KEwpLCBRdWVyeShMKQorICAgICBHZW5lcmVsbDoJCVNldFByb3BlcnRpZXMoTCksIFF1ZXJ5UHJvcGVydGllcyhMKQorICAgICBLb256ZXB0OgkJcHJvcGVydGllcywgL3N0ZC90aGluZy9wcm9wZXJ0aWVzLmMKKworMTUuRGV6IDIwMDQgR2xvaW5zb24KKwpkaWZmIC0tZ2l0IGEvZG9jL2xmdW4vU2V0UHJvcGVydGllcyBiL2RvYy9sZnVuL1NldFByb3BlcnRpZXMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNGExZmExZAotLS0gL2Rldi9udWxsCisrKyBiL2RvYy9sZnVuL1NldFByb3BlcnRpZXMKQEAgLTAsMCArMSwyNyBAQAorU2V0UHJvcGVydGllcygpCitGVU5LVElPTjoKKyAgICAgdm9pZCBTZXRQcm9wZXJ0aWVzKG1hcHBpbmcgcHJvcHMpOworCitERUZJTklFUlQgSU46CisgICAgIC9zdGQvdGhpbmcvcHJvcGVydGllcy5jCisKK0FSR1VNRU5URToKKyAgICAgcHJvcHMJLSBNYXBwaW5nIG1pdCBkZW4gRGF0ZW4gZnVlciBhbGxlIFByb3BlcnRpZXMKKworQkVTQ0hSRUlCVU5HOgorICAgICBEaWVzZSBGdW5rdGlvbiBzZXR6dCBhbmdlZ2ViZW5lIFByb3BlcnRpZXMgYXVmIGVpbmVuIFNjaGxhZy4KKyAgICAgTWFwcGluZyBtdXNzIHdpZSBmb2xndCBhdWZnZWJhdXQgc2VpbjoKKwkoWyBuYW1lOiB3ZXJ0OyBmbGFnczsgc2V0X21ldGhvZDsgcXVlcnlfbWV0aG9kLAorCSAgIG5hbWUyOiAuLi4gXSk7CisKK0JFTUVSS1VOR0VOOgorICAgICAtIGRpZXNlIEZ1bmt0aW9uIHdpcmQgdm9uIHJlc3RvcmVfb2JqZWN0KCkgdmVyd2VuZGV0LCB1bSBuaWNodCBhbGxlCisgICAgICAgcmVzdGF1cmllcnRlbiBQcm9wZXJ0aWVzIGVpbnplbG4gc2V0emVuIHp1IG11ZXNzZW4uCisgICAgIC0gU0VDVVJFRC9QUk9URUNURUQvTk9TRVRNRVRIT0QgUHJvcGVydGllcyB3ZXJkZW4gYmVydWVja3NpY2h0aWd0CisKK1NJRUhFIEFVQ0g6CisgICAgIEFlaG5saWNoZXM6CVNldFByb3AoTCksIFF1ZXJ5UHJvcChMKSwgU2V0KEwpLCBRdWVyeShMKQorICAgICBHZW5lcmVsbDoJCVF1ZXJ5UHJvcGVydGllcyhMKQorICAgICBLb256ZXB0OgkJcHJvcGVydGllcywgL3N0ZC90aGluZy9wcm9wZXJ0aWVzLmMKKworMS5NYWkgMjAwNCBHbG9pbnNvbgpkaWZmIC0tZ2l0IGEvZG9jL2xmdW4vU2V0UmVhbEF0dHJpYnV0ZSBiL2RvYy9sZnVuL1NldFJlYWxBdHRyaWJ1dGUKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNjhlYTE0YwotLS0gL2Rldi9udWxsCisrKyBiL2RvYy9sZnVuL1NldFJlYWxBdHRyaWJ1dGUKQEAgLTAsMCArMSwzMSBAQAorU2V0UmVhbEF0dHJpYnV0ZSgpCitGVU5LVElPTjoKKyAgICAgaW50IFNldFJlYWxBdHRyaWJ1dGUoc3RyaW5nIGF0dHIsIGludCB2YWwpCisKK0RFRklOSUVSVCBJTjoKKyAgICAgL3N0ZC9saXZpbmcvYXR0cmlidXRlcy5jCisKK0FSR1VNRU5URToKKyAgICAgYXR0ciAgICAgICAtIHp1IHNldHplbmRlcyBBdHRyaWJ1dAorICAgICB2YWwgICAgICAgIC0gV2VydAorCitCRVNDSFJFSUJVTkc6CisgICAgIFNldHp0IGRlbiByZWFsZW4gV2VydCBkZXMgQXR0cmlidXRlcywgZC5oLiBkYXMgcmVpbmUgQXR0cmlidXQsCisgICAgIHdlbm4gbW9lZ2xpY2guIExlZGlnbGljaCBlaW5lIEFsaWFzLU1ldGhvZGUgZnVlciBTZXRBdHRyKCkuCisgICAgIChRdWVyeUF0dHJpYnV0ZSgpIGdpYnQgYWxzbyB2YWwgKyBldHdhaWdlIE9mZnNldHMvTW9kaWZpZXIgenVydWVjaykKKworUlVlQ0tHQUJFV0VSVDoKKyAgICAgRGVuIGdlc2V0enRlbiBXZXJ0LgorCitCRU1FUktVTkdFTjoKKyAgICAgQml0dGUgbmljaHQgYXVmIFNwaWVsZXIgYW53ZW5kZW4hCisKK1NJRUhFIEFVQ0g6DQorCVF1ZXJ5QXR0cmlidXRlKCksIFF1ZXJ5UmVhbEF0dHJpYnV0ZSgpLCBRdWVyeUF0dHJpYnV0ZU9mZnNldCgpLA0KKwlTZXRBdHRyaWJ1dGUoKSwgU2V0UmVhbEF0dHJpYnV0ZSgpLCBVcGRhdGVBdHRyaWJ1dGVzKCksDQorCVNldFRpbWVkQXR0ck1vZGlmaWVyKCksIFF1ZXJ5VGltZWRBdHRyTW9kaWZpZXIoKSwgDQorCURlbGV0ZVRpbWVkQXR0ck1vZGlmaWVyKCksDQorCVBfQVRUUklCVVRFUywgUF9BVFRSSUJVVEVTX09GRlNFVFMsIFBfVElNRURfQVRUUl9NT0QsDQorCVBfWF9BVFRSX01PRCwgUF9NX0FUVFJfTU9ELCAvc3RkL2xpdmluZy9hdHRyaWJ1dGVzLmMNCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQorTGFzdCBtb2RpZmllZDogVHVlIEp1bCAyNyAyMDowMDoyMCAyMDA0IGJ5IE11YWRpYg0KZGlmZiAtLWdpdCBhL2RvYy9sZnVuL1NldFNwZWxsRmF0aWd1ZSBiL2RvYy9sZnVuL1NldFNwZWxsRmF0aWd1ZQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5jMzQ2MjdiCi0tLSAvZGV2L251bGwKKysrIGIvZG9jL2xmdW4vU2V0U3BlbGxGYXRpZ3VlCkBAIC0wLDAgKzEsNzUgQEAKK1NldFNwZWxsRmF0aWd1ZQorCitGVU5LVElPTjoKKyAgICBwdWJsaWMgdmFyYXJncyBpbnQgU2V0U3BlbGxGYXRpZ3VlKGludCBkdXJhdGlvbiwgc3RyaW5nIGtleSkKKworREVGSU5JRVJUIElOOgorICAgIC9zdGQvbGl2aW5nL3NraWxscy5jCisgICAgL3N0ZC9wbGF5ZXIvc2tpbGxzLmMKKyAgICAvc3lzL2xpdmluZy9za2lsbHMuaAorCitBUkdVTUVOVEU6CisgICAgaW50IGR1cmF0aW9uOiBXaWUgbGFuZyBzb2xsIGRpZSBTcHJ1Y2hlcm11ZWR1bmcgYW5kYXVlcm4/CisgICAgc3RyaW5nIGtleSAgOiBFaW5kZXV0aWdlciBOYW1lIGRlcyBTcHJ1Y2hlcywgZWluZXIgR3J1cHBlIHZvbiBTcHJ1ZWNoZW4KKyAgICAgICAgICAgICAgICAgIG9kZXIgMCBmdWVyIGRpZSBnbG9iYWxlIFNwcnVjaGVybXVlZHVuZy4KKworQkVTQ0hSRUlCVU5HOgorICAgIERpZXNlIEZ1bmt0aW9uIGRpZW50IHp1bSBWZXJ3YWx0ZW4gdm9uIGluZGl2aWR1ZWxsZW4gU3BydWNoZXJtdWVkdW5nZW4KKyAgICAoU3BlbGxmYXRpZ3VlLCBTcHJ1Y2hzcGVycmVuKS4KKyAgICBIaWVybWl0IGxhc3NlbiBzaWNoIHVuYWJoYWVuZ2lnZSBFcm11ZWR1bmdlbi9TcGVycmVuIGZ1ZXIgZWluemVsbmUKKyAgICBTcHJ1ZWNoZSBvZGVyIEdydXBwZW4gdm9uIFNwcnVlY2hlbiBnZXN0YWx0ZW4uCisKKyAgICA8ZHVyYXRpb24+IGlzdCBkaWUgWmVpdCAoaW4gU2VrdW5kZW4pLCB3ZWxjaGUgZGllIFNwcnVjaGVybXVlZHVuZworICAgIGFuaGFsdGVuIHNvbGwgKG5pY2h0IGRpZSBFbmR6ZWl0KS4KKworICAgIFdpcmQgPGtleT4gbmljaHQgYW5nZWdlYmVuIG9kZXIgaXN0IDAsIHdpcmQgZGllIGdsb2JhbGUgU3BydWNoc3BlcnJlCisgICAgZ2VzZXR6dCAoaWRlbnRpc2NoIHp1IGRlciBQcm9wZXJ0eSBQX05FWFRfU1BFTExfVElNRSksIGFuZGVyZW5mYWxscyBkaWUKKyAgICB1bnRlciA8a2V5PiBnZXNwZWljaGVydGUgU3BydWNoZXJtdWVkdW5nLgorICAgIFNldHp0IG1hbiBlaW5lbiBFaW50cmFnIG9obmUgQW5nYWJlIHZvbiA8a2V5PiBiZWRldXRldCBkaWVzIGRhbWl0IGF1Y2gsCisgICAgZGFzcyBkZXIgV2VydCB2b24gUF9ORVhUX1NQRUxMX1RJTUUgZ2VhZW5kZXJ0IHdpcmQuCisKK1JVZUNLR0FCRVdFUlQ6CisgICAgLTEgICAgRGVyIEVpbnRyYWcgPGtleT4gaXN0IG5vY2ggbmljaHQgYWJnZWxhdWZlbiwgZXMgd3VyZGUgX2tlaW5lXworICAgICAgICAgIG5ldWUgU3BydWNoZXJtdWVkdW5nLy1TcGVycmUgZ2VzcGVpY2hlcnQuCisKKyAgICA+MCAgICBFaW50cmFnIHd1cmRlIGdlc3BlaWNoZXJ0LCBSdWVja2dhYmV3ZXJ0IGlzdCBkaWUgWmVpdCwgenUgZGVyIGRpZQorICAgICAgICAgIFNwZXJyZSBhYmxhZXVmdC4KKworQkVJU1BJRUxFOgorICAgIEVpbiBTcGVsbCBnZWhvZXJ0IHp1IGVpbmVyIEdydXBwZSB2b24gU3BlbGxzIG1pdCBkZW0gTmFtZW4gJ2V4dHJhc3Vlc3MnLgorICAgIEVyIGRhcmYgbnVyIGF1c2dlZnVlaHJ0IHdlcmRlbiwgd2VubiBzZWl0IDVzIGtlaW4gYW5kZXJlciBTcHJ1Y2ggYXVzIGRlcgorICAgIEdydXBwZSBhdXNnZWZ1ZWhydCB3dXJkZS4KKyAgICBpZiAoQ2FsY3VsYXRlU3BlbGxTdWNjZXNzKC4uLikgPiB4KSB7CisgICAgICAvLyBTcGVsbGZhdGlndWUgc2V0emVuICh1bmQgRXJmb2xnIHBydWVmZW4hKQorICAgICAgaWYgKG9iLT5TZXRTcGVsbEZhdGlndWUoNSwgImV4dHJhc3Vlc3MiKSA+IC0xKSB7CisgICAgICAgIHRlbGxfb2JqZWN0KG9iLCAiRHUgZnVldHRlcnN0ICIgKyBlbmVteS0+TmFtZShXRU4pICsgIiBtaXQgZWluZW0gIgorICAgICAgICAgICJTdHVlY2sgc3Vlc3NlciBTY2hva290b3J0ZS5cbiIpOworICAgICAgICAuLi4KKyAgICAgIH0KKyAgICAgIGVsc2UgeworICAgICAgICAvLyBTYXVlcmVpISBadSBlcm11ZWRldCBmdWVyIGRpZXNlbiBTcHJ1Y2guIEZlaGxlcm1kZWxkdW5nIC4uLgorICAgICAgfQorICAgIH0KKyAgICBEaWVzZXMgc2V0enQgbmF0dWVybGljaCB2b3JhdXMsIGRhc3MgYWxsZSBhbmRlcmVuIFNwcnVlY2hlIGRlciBHcnVwcGUKKyAgICAiZXh0cmFzdWVzcyIgZGVuIGdsZWljaGVuIDxrZXk+IHBydWVmZW4gdW5kIHNldHplbi4KKyAgICAoV2lsbCBtYW4gdm9yIENhbGN1bGF0ZVNwZWxsU3VjY2VzcygpIHdpc3Nlbiwgb2IgZGVyIFNwcnVjaCB1ZWJlcmhhdXB0CisgICAgIGdld2lya3Qgd2VyZGVuIGR1ZXJmdGUsIHNvbGx0ZSBtYW4gaGllcnp1IGRhbm4gQ2hlY2tTcGVsbEZhdGlndWUoKQorICAgICB2ZXJ3ZW5kZW4uKQorCitCRU1FUktVTkdFTjoKKyAgICBEaWUgZ2VuYXVlbiBaZWl0ZGF1ZXJuIGtvZW5uZW4gdm9uIFNwaWVsZXJuIGJlZWluZmx1c3N0IHdlcmRlbiwgc2llCisgICAgdW50ZXJsaWVnZW4gZGVyIGpld2VpbGlnZW4gRWluc3RlbGx1bmcgdm9uICdzcHJ1Y2hlcm11ZWR1bmcnLCBkLmguIGtvZW5uZW4KKyAgICBhdWYgdm9sbGUgMnMgYXVmZ2VydW5kZXQgd2VyZGVuLiAoRGllcyBpc3QgbmljaHQgZGVyIEZhbGwgYmVpIE5QQy4pCisgICAgQXVjaCB3ZW5uIGRpZXNlIEZ1bmt0aW9uIHp1bSBWZXJ3YWx0ZW4gdm9uIGJlbGllYmlnZW4gWmVpdHNwZXJyZW4gZ2VudXR6dAorICAgIHdlcmRlbiBrb2VubmVuLCBiZXNjaHJhZW5rdCBldWNoIGJpdHRlIGF1ZiBTcHJ1Y2hlcm11ZWR1bmdlbiB1bmQgYmVudXR6dAorICAgIGFuc29uc3RlbiBjaGVja19hbmRfdXBkYXRlX3RpbWVkX2tleSgpLiBGYWxscyBpaHIgZGllc2J6Z2wuIHdlaXRlcmUvYW5kZXJlCisgICAgV3VlbnNjaGUgaGFidCwgc3ByZWNodCBkZW4vZGllIE11ZGxpYi1FTSBhbi4KKworU0lFSEUgQVVDSDoKKyAgICBDaGVja1NwZWxsRmF0aWd1ZShMKSwgRGVsZXRlU3BlbGxGYXRpZ3VlKEwpCisgICAgUF9ORVhUX1NQRUxMX1RJTUUKKyAgICBzcHJ1Y2hlcm11ZWR1bmcKKworLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorMjcuMDMuMjAxMCwgWmVzc3RyYQorCmRpZmYgLS1naXQgYS9kb2MvbGZ1bi9TZXRTdG9yYWdlUm9vbSBiL2RvYy9sZnVuL1NldFN0b3JhZ2VSb29tCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjQ2NTVhMWUKLS0tIC9kZXYvbnVsbAorKysgYi9kb2MvbGZ1bi9TZXRTdG9yYWdlUm9vbQpAQCAtMCwwICsxLDc0IEBACitTZXRTdG9yYWdlUm9vbSgpCisKK0ZVTktUSU9OOgorICAgICAgICB2b2lkIFNldFN0b3JhZ2VSb29tKHN0cmluZyBzdG9yZSk7CisKK0RFRklOSUVSVCBJTjoKKyAgICAgICAgL3N0ZC9yb29tL3Nob3AuYworCitBUkdVTUVOVEU6CisgICAgICAgIHN0b3JlCisgICAgICAgICAgRGF0ZWluYW1lIGRlcyBMYWdlcnMsIGluIGRlbSBkaWUgYXVmZ2VrYXVmdGVuIE9iamVrdGUgYXVmYmV3YWhydAorICAgICAgICAgIHdlcmRlbi4KKworUlVlQ0tHQUJFV0VSVDoKKyAgICAgICAga2VpbmVyCisKK0JFU0NIUkVJQlVORzoKKyAgICAgICAgTWl0IGRpZXNlciBGdW5rdGlvbiB3aXJkIGRlbSBMYWRlbiBiZWthbm50IGdlZ2ViZW4sIHdlbGNoZXMgT2JqZWt0CisgICAgICAgIGFscyBMYWdlciBmdWVyIGFuZ2VrYXVmdGUgT2JqZWt0ZSBkaWVuZW4gc29sbC4gSmVkZXIgTGFkZW4gbXVzcworICAgICAgICBleHBsaXppdCBlaW5lbiBlaWdlbmVuIExhZ2VycmF1bSBzZXR6ZW4sIGFuc29uc3RlbiB3aXJkIGVpbiAKKyAgICAgICAgTGF1ZnplaXRmZWhsZXIgYXVzZ2Vsb2VzdCB1bmQgZGVyIExhZGVuIGlzdCBuaWNodCBsYWRiYXIuCisgICAgICAgIAorICAgICAgICBEYXMgU3BlaWNoZXJvYmpla3Qgc29sbHRlIC9zdGQvc3RvcmUuYyBlcmJlbiwgZGEgZG9ydCBlaW5pZ2UKKyAgICAgICAgQXVmcmFldW1mdW5rdGlvbmVuIGRlZmluaWVydCBzaW5kLiBFbnRzY2hlaWRlbmQgZnVlciBzZWxiaWdlIHNpbmQKKyAgICAgICAgZGllIFByb3BlcnRpZXMgUF9NSU5fU1RPQ0sgdW5kIFBfU1RPUkVfQ09OU1VNRS4KKworQkVJU1BJRUxFOgorICAgICAgICBEZXIgUmF1bSAnbXlsYWRlbi5jJyBrb2VubnRlIGV0d2Egc28gYXVzc2VoZW46CisgICAgICAgICAgCisgICAgICAgICAgLy8gbXlsYWRlbi5jCisgICAgICAgICAgaW5oZXJpdCAiL3N0ZC9zaG9wIjsKKyAgICAgICAgICAjaW5jbHVkZSA8cHJvcGVydGllcy5oPgorICAgICAgICAgIAorICAgICAgICAgIHByb3RlY3RlZCB2b2lkIGNyZWF0ZSgpIHsKKyAgICAgICAgICAgIDo6Y3JlYXRlKCk7CisgICAgICAgICAgICBTZXRQcm9wKC4uLik7IC8vIEJlc2NocmVpYnVuZyB3aWUgYmVpIG5vcm1hbGVuIFJhZXVtZW4KKyAgICAgICAgICAgIFNldFN0b3JhZ2VSb29tKCIvZC9iZWlzcGllbC9teXN0b3JlIik7CisgICAgICAgICAgICBBZGRGaXhlZE9iamVjdCgiL2l0ZW1zL2ZhY2tlbCIpOworICAgICAgICAgIH0KKworICAgICAgICBJbiBkaWVzZW0gTGFkZW4gd2lyZCBudW4gZGllIFN0YW5kYXJkZmFja2VsIGFscyBtZW5nZW5tYWVzc2lnIAorICAgICAgICB1bmJlZ3Jlbnp0ZXIgQXJ0aWtlbCB2ZXJrYXVmdC4KKworICAgICAgICBEZXIgenVnZWhvZXJpZ2UgTGFnZXJyYXVtICdteXN0b3JlLmMnIGthbm4gZGFubiBpbSBlaW5mYWNoc3RlbiBGYWxsCisgICAgICAgIHNvIGF1c3NlaGVuOgorICAgICAgICAgIAorICAgICAgICAgIC8vIG15c3RvcmUuYworICAgICAgICAgIGluaGVyaXQgIi9zdGQvc3RvcmUiOworICAgICAgICAgICNpbmNsdWRlIDxyb29tcy5oPiAgLy8gRnVlciBBZGRJdGVtLUtvbnN0YW50ZW4KKyAgICAgICAgICAKKyAgICAgICAgICBwcm90ZWN0ZWQgdm9pZCBjcmVhdGUoKSB7CisgICAgICAgICAgICA6OmNyZWF0ZSgpOworICAgICAgICAgICAgLy8gS0VJTkUgd2VpdGVyZW4gQmVzY2hyZWlidW5nZW4hCisgICAgICAgICAgICAvLyAxLiBlcmJ0IGRlciBTcGVpY2hlciBrZWluZSBCZXNjaHJlaWJ1bmdzbW9kdWxlLAorICAgICAgICAgICAgLy8gMi4gc29sbGVuIGRhIGVoIG51ciBTYWNoZW4gdW5kIGtlaW5lIFNwaWVsZXIgcmVpbiEKKyAgICAgICAgICAgIEFkZEl0ZW0oIi9pdGVtcy9zY2hhdWZlbCIsIFJFRlJFU0hfUkVNT1ZFKTsKKyAgICAgICAgICB9CisgICAgICAgIAorICAgICAgICBEZXIgTGFkZW4gdmVya2F1ZnQgbnVuIGF1Y2ggU2NoYXVmZWxuLCBqZWRvY2ggbnVyIGVpbmUgcHJvIFJlc2V0LgorCitISU5XRUlTRTogICAgICAgIAorICAgICAgICBGdWVyIHN0YW5kYXJkbWFlc3NpZyB2ZXJrYXVmdGUgV2FyZW4gYmVhY2h0ZSBtYW4gZGVuIFVudGVyc2NoaWVkIAorICAgICAgICB6d2lzY2hlbiBkZW4gRnVua3Rpb25lbiBBZGRJdGVtKCkgdW5kIEFkZEZpeGVkT2JqZWN0KCkuCisgICAgICAgIERpZSBlcnN0Z2VuYW5udGUgRnVua3Rpb24gaXN0IGltIExhZ2VyIHp1IHZlcndlbmRlbiwgbGV0enRlcmUgamVkb2NoCisgICAgICAgIGltIExhZGVuLgorCitTSUVIRSBBVUNIOgorICAgICAgICBBbGxnZW1laW5lczogIGxhZGVuCisgICAgICAgIEZ1bmt0aW9uZW46ICAgQWRkSXRlbShMKSwgQWRkRml4ZWRPYmplY3QoTCksIFJlbW92ZUZpeGVkT2JqZWN0KEwpIAorICAgICAgICBCYXNpc29iamVrdGU6IC9zdGQvc3RvcmUuYworICAgICAgICBQcm9wZXJ0aWVzOiAgIFBfTUlOX1NUT0NLLCBQX1NUT1JFX0NPTlNVTUUKKworLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorTGFzdCBtb2RpZmllZDogMTktSnVuLTIwMTUsIEFyYXRob3JuCmRpZmYgLS1naXQgYS9kb2MvbGZ1bi9TZXRUaW1lZEF0dHJNb2RpZmllciBiL2RvYy9sZnVuL1NldFRpbWVkQXR0ck1vZGlmaWVyCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjU4MDQ4MjMKLS0tIC9kZXYvbnVsbAorKysgYi9kb2MvbGZ1bi9TZXRUaW1lZEF0dHJNb2RpZmllcgpAQCAtMCwwICsxLDkyIEBACitTZXRUaW1lZEF0dHJNb2RpZmllcigpCitGVU5LVElPTjoKKyAgICAgaW50IFNldFRpbWVkQXR0ck1vZGlmaWVyKHN0cmluZyBrZXksIG1hcHBpbmcgbW9kaWZpZXIsIAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IG91dGRhdGVkLCBvYmplY3QgZGVwZW5kZW50LCBtaXhlZCBub3RpZnkpIAorREVGSU5JRVJUIElOOgorICAgICAvc3RkL2xpdmluZy9hdHRyaWJ1dGVzLmMKKworQVJHVU1FTlRFOgorICAgICBrZXkJLQlpbiBQX1RJTUVEX0FUVFJfTU9EIHZvcnp1bmVobWVuZGVyIG9kZXIgenUgCisgICAgICAgICAgICAgICAgICAgICAgICBhZW5kZXJuZGVyIEVpbnRyYWcNCisgICAgIG1vZGlmaWVyICAgLSAgICAgICBNYXBwaW5nIG1pdCBkZW4gQXR0cmlidXR2ZXJhZW5kZXJ1bmdlbg0KKyAgICAgb3V0ZGF0ZWQgICAtICAgICAgIFplaXRwdW5rdCB6dSBkZW0gZGllIEF0dHJpYnV0dmVyYWVuZGVydW5nZW4NCisgICAgICAgICAgICAgICAgICAgICAgICBhYmxhdWZlbiBzb2xsZW4gaW4gU2VrdW5kZW4gc2VpdCBkZW0NCisgICAgICAgICAgICAgICAgICAgICAgICAxLiBKYW4gMTk3MCwgMC4wOjAgR01UIG9kZXIgMA0KKyAgICAgZGVwZW5kZW50ICAtICAgICAgIE9iamVrdCBkZXNzZW4gRXhpc3RlbnogZWluZSBCZWRpbmd1bmcgZnVlciBkaWUNCisgICAgICAgICAgICAgICAgICAgICAgICBBdHRyaWJ1dHZlcmFlbmRlcnVuZyBzZWluIHNvbGwgb2RlciAwDQorICAgICBub3RpZnkgICAgIC0gICAgICAgT2JqZWt0IG9kZXIgRmlsZSBkYXMgbWl0dGVscyAKKyAgICAgICAgICAgICAgICAgICAgICAgIE5vdGlmeVRpbWVkQXR0ck1vZEV4cGlyZWQgdWViZXINCisgICAgICAgICAgICAgICAgICAgICAgICBkZW4gQXR0cmlidXRhYmxhdWYgaW5mb3JtaWVydCB3ZXJkZW4gc29sbA0KKworQkVTQ0hSRUlCVU5HOgorICAgICBEZXIgenUga2V5IGdlaG9lcmVuZGUgRWludHJhZyB3aXJkIGluIFBfVElNRURfQVRUUl9NT0QgYW5nZWxlZ3Qgb2Rlcg0KKyAgICAgbW9kaWZpemllcnQgdW5kIHVwZGF0ZV9tYXhfc3BfYW5kX2hwIGF1ZmdlcnVmZW4uDQorICAgICBFcyBlbXBmaWVobHQgc2ljaCBhdWYgZGllIEVpbmRldXRpZ2tlaXQgZGVzIHN0cmluZy1QYXJhbWV0ZXJzIGtleQorICAgICBiZXNvbmRlcmVzIEF1Z2VubWVyayB6dSBsZWdlbi4KKw0KKyAgICAgVW50ZXIgZGVtIEtleSBrZXkgd2lyZCBpbiBQX1RJTUVEX0FUVFJfTU9EIGVpbiBFaW50cmFnIHZvcmdlbm9tbWVuLA0KKyAgICAgd2VsY2hlciBkaWUgQXR0cmlidXRlIGRlcyBMaXZpbmdzIHVtIGRpZSBpbiBtb2RpZmllciBzdGVoZW5kZW4gT2Zmc2V0cw0KKyAgICAgdmVyYWVuZGVydC4NCisNCisgICAgIERpZXNlIFZlcmFlbmRlcnVuZyBpc3Qgc29sYW5nZSBha3RpdiBiaXMgZW50d2VkZXIgZGllIGluIG91dGRhdGVkDQorICAgICBzdGVoZW5kZSBaZWl0IHVlYmVyc2Nocml0dGVuIGlzdCBvZGVyIGRhcyBpbiBkZXBlbmRlbnQgdWViZXJnZWJlbmUNCisgICAgIE9iamVrdCBuaWNodCBtZWhyIGV4aXN0aWVydC4NCisgICAgIFNpbmQgYmVpZGUgQXJndW1lbnRlIDAgc28gbGFldWZ0IGRpZSBBdHRyaWJ1dHZlcmFlbmRlcnVuZyBuaWNodCBhYg0KKyAgICAgdW5kIGthbm4gZHVyY2ggRGVsZXRlVGltZWRBdHRyTW9kaWZpZXIgZ2Vsb2VzY2h0IHdlcmRlbi4NCisgICAgIExhZXVmdCBkaWUgQXR0cmlidXR2ZXJhZW5kZXJ1bmcgYWIsIHNvIHdpcmQgZGVyIGluIG5vdGlmeSBhbmdlZ2ViZW5lDQorICAgICBFbXBmYWVuZ2VyIG1pdHRlbHMgQXVmcnVmIE5vdGlmeVRpbWVkQXR0ck1vZEV4cGlyZWQgZGF2b24gCisgICAgIGJlbmFjaHJpY2h0aWd0Lg0KKyAgICAgRGVyIEZ1bmt0aW9uIE5vdGlmeVRpbWVkQXR0ck1vZEV4cGlyZWQgd2lyZCBhbHMgQXJndW1lbnQgZGVyIGtleQ0KKyAgICAgZGVyIGFiZ2VsYXVmZW5lbiBBdHRyaWJ1dHZlcmFlbmRlcnVuZyB1ZWJlcmdlYmVuLg0KKw0KK0JFSVNQSUVMRToNCisgICAgIEVpbiBOUEMga2FubiBlaW5lbiBTcGllbGVyIGF1ZiBkaWUgZm9sZ2VuZGUgV2Vpc2Ugc29sYW5nZSBkaWUNCisgICAgIEF0dHJpYnV0ZSB1bSBlaW5zIGhlcmFic2V0emVuIGJpcyBlbnR3ZWRlciBlaW5lIFN0dW5kZSB2ZXJzdHJpY2hlbg0KKyAgICAgaXN0IG9kZXIgZGVyIE5QQyBuaWNodCBtZWhyIGV4aXN0aWVydCB6dW0gQmVpc3BpZWwgd2VpbCBlciBnZXRvZXRldA0KKyAgICAgd3VyZGUuDQorDQorICAgICAgIHBsYXllci0+U2V0VGltZWRBdHRyTW9kaWZpZXIoIHBsYXllci0+cXVlcnlfcmVhbF9uYW1lKCksDQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChbQV9TVFI6LTEsQV9JTlQ6LTEsQV9ERVg6LTEsQV9DT046LTFdKSwNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGltZSgpKzM2MDAsDQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXNfb2JqZWN0KCksDQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXNfb2JqZWN0KCkNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICk7DQorDQorICAgICBXaWxsIGRlciBOUEMgbnVuIG5vY2ggZGFyYXVmIHJlYWdpZXJlbiwgZGFzcyBkaWUgQXR0cmlidXRtb2RpZmlrYXRpb24NCisgICAgIGR1cmNoIFRpbWVvdXQgYWJnZWxhdWZlbiBpc3QsIHNvIGtvZW5udGUgZGllcyBmb2xnZW5kZXJtYXNzZW4gZ2VzY2hlaGVuLg0KKw0KKyAgICAgICB2b2lkIE5vdGlmeVRpbWVkQXR0ck1vZEV4cGlyZWQoc3RyaW5nIHN0cikNCisgICAgICAgew0KKyAgICAgICAgICAgLy8gRGllIEZ1bmt0aW9uIHdpcmQgYXVzIGRlbSBMZWJld2VzZW4gZ2VydWZlbiwgaW4gd2VsY2hlbSBkZXIgTW9kCisgICAgICAgICAgIC8vIGdlcmFkZSBhYmdlbGF1ZmVuIGlzdC4gQWxzbyBNZWxkdW5nc2F1c2dhYmUgYW4KKyAgICAgICAgICAgLy8gcHJldmlvdXNfb2JqZWN0KCkuCisgICAgICAgICAgIHRlbGxfb2JqZWN0KHByZXZpb3VzX29iamVjdCgpCisgICAgICAgICAgICAgICAsIkRhIGhhc3QgRHUgYWJlciBub2NobWFsIEdsdWVjayBnZWhhYnQuXG4iKTsNCisgICAgICAgfQ0KKw0KKw0KK1JVZUNLR0FCRVdFUlQ6DQorICAgICBUQVRUUl9JTlZBTElEX0FSR1MgICAgICAtICAgICBJbSBGYWxsZSBlaW5lcyBmZWhsZW5kZW4ga2V5LUFyZ3VtZW50cywNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVpbmVzIGZlaGxlbmRlbiBtb2RpZmllci1Bcmd1bWVudHMgb2Rlcg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWluZXMgYmVyZWl0cyBhYmdlbGF1ZmVuZW4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG91dGRhdGV0LUFyZ3VtZW50cw0KKyAgICAgVEFUVFJfT0sgICAgICAgICAgICAgICAgLSAgICAgSW0gRXJmb2xnc2ZhbGwNCisNCisgICAgIERpZSBSdWVja2dhYmV3ZXJ0ZSBzaW5kIGluIC9zeXMvbGl2aW5nL2F0dHJpYnV0ZXMuaCBkZWZpbmllcnQuDQorCitTSUVIRSBBVUNIOg0KKyAgICAgQXR0cmlidXRlOiAgUXVlcnlBdHRyaWJ1dGUoKSwgU2V0QXR0cmlidXRlKCkNCisgICAgICAgICAgICAgICAgIFNldFJlYWxBdHRyaWJ1dGUoKSwgUXVlcnlSZWFsQXR0cmlidXRlKCksDQorICAgICAgICAgICAgICAgICBRdWVyeUF0dHJpYnV0ZU9mZnNldCgpLA0KKyAgICAgICAgICAgICAgICAgVXBkYXRlQXR0cmlidXRlcygpDQorICAgICBNZXRob2RlbjogICBRdWVyeVRpbWVkQXR0ck1vZGlmaWVyKCksIERlbGV0ZVRpbWVkQXR0ck1vZGlmaWVyKCkNCisgICAgIENhbGxiYWNrOiAgIE5vdGlmeVRpbWVkQXR0ck1vZEV4cGlyZWQoKQ0KKyAgICAgUHJvcGVydGllczogUF9BVFRSSUJVVEVTLCBQX0FUVFJJQlVURVNfT0ZGU0VUUw0KKwkJIFBfWF9BVFRSX01PRCwgUF9NX0FUVFJfTU9EDQorCQkgUF9USU1FRF9BVFRSX01PRA0KKyAgICAgU29uc3RpZ2VzOiAgL3N0ZC9saXZpbmcvYXR0cmlidXRlcy5jDQorCitMRVRaVEUgQWVuZGVydW5nOgorMTUuMDIuMjAwOSwgWmVzc3RyYQorCisKZGlmZiAtLWdpdCBhL2RvYy9sZnVuL1Nob3dEb29ycyBiL2RvYy9sZnVuL1Nob3dEb29ycwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5lY2QzNmIwCi0tLSAvZGV2L251bGwKKysrIGIvZG9jL2xmdW4vU2hvd0Rvb3JzCkBAIC0wLDAgKzEsMjMgQEAKK1Nob3dEb29ycygpCisKK0ZVTktUSU9OOgorCXZvaWQgU2hvd0Rvb3JzKCkKKworQVJHVU1FTlRFOgorCUtlaW5lLgorCitCRVNDSFJFSUJVTkc6CisJWmVpZ3QgYWxsZSBTZWhlcnRvciBhbiwgZGllIGRlciBTZWhlciAodGhpc19wbGF5ZXIoKSkgc2Nob24ga2VubnQuCisJRmFsbHMgaW4gc2VpbmVyIFVtZ2VidW5nIGVpbiBUb3Igc3RlaHQsIHNvIHdpcmQgZGllc2VzIGVpbmdla2xhbW1lcnQuCisKK1JVRUNLR0FCRVdFUlQ6CisJS2VpbmVyLgorCitCRU1FUktVTkdFTjoKKyAgICBEaWVzZSBGdW5rdGlvbiB3aXJkIHZvbiAvZC9zZWhlci9wb3J0YWxlL3NlaGVydG9ybWFzdGVyIGRlZmluaWVydC4KKworQkVJU1BJRUxFOgorICAgIC9kL3NlaGVyL3BvcnRhbGUvc2VoZXJ0b3JtYXN0ZXItPlNob3dEb29ycygpCisKK1NJRUhFIEFVQ0g6CisgICAgRGlzY292ZXJEb29yLCBEb29ySXNLbm93biwgVGVsZXBvcnQsIEdldERvb3JzTWFwcGluZwpkaWZmIC0tZ2l0IGEvZG9jL2xmdW4vU2hvd1Byb3BMaXN0IGIvZG9jL2xmdW4vU2hvd1Byb3BMaXN0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjY0YmM0Y2IKLS0tIC9kZXYvbnVsbAorKysgYi9kb2MvbGZ1bi9TaG93UHJvcExpc3QKQEAgLTAsMCArMSw0OSBAQAorU2hvd1Byb3BMaXN0KCkKKworRlVOS1RJT046CisgICAgIHZvaWQgU2hvd1Byb3BMaXN0KHN0cmluZyAqcHJvcHMpOworCitERUZJTklFUlQgSU46CisgICAgIC9zdGQvdGhpbmcvdXRpbC5jCisKK0FSR1VNRU5URToKKyAgICAgcHJvcHMKKyAgICAgICAgICBBcnJheSB2b24gU3RyaW5ncyBtaXQgZGVuIE5hbWVuIGRlciBQcm9wZXJ0aWVzLCBkaWUgYXVzZ2VnZWJlbgorICAgICAgICAgIHdlcmRlbiBzb2xsZW4uCisKK0JFU0NIUkVJQlVORzoKKyAgICAgR2lidCBkaWUgSW5oYWx0ZSBkZXIgaW4gcHJvcHMgYW5nZWdlYmVuZW4gUHJvcGVydGllcyBhdXMuCisKK1JVZUNLR0FCRVdFUlQ6CisgICAgIGtlaW5lcgorCitCRUlTUElFTEU6CisgICAgIFNlaSB0ZXN0LmMgZm9sZ2VuZGVzIFByb2dyYW1tOgorCisgICAgIGluaGVyaXQgInN0ZC90aGluZyI7CisgICAgIGluaGVyaXQgInN0ZC90aGluZy91dGlsIjsKKworICAgICBjcmVhdGUoKSB7CisgICAgICAgOjpjcmVhdGUoKTsKKworICAgICAgIFNldFByb3AoUF9TSE9SVCwgIkt1cnoiKTsKKyAgICAgICBTZXRQcm9wKFBfTkFNRSwgKHsgIk5hbWUiLCAiTmFtZW5zIiwgIk5hbWVuIiwgIk5hbWVuIiB9KSk7CisgICAgICAgU2V0UHJvcCgibWUiLCB0aGlzX29iamVjdCgpICk7CisgICAgIH0KKworICAgICBNaXQgeGNhbGwgdGVzdC0+U2hvd1Byb3BMaXN0KCAoeyBQX1NIT1JULCBQX05BTUUsICJtZSIgfSkgKTsgZXJoaWVsdGUKKyAgICAgbWFuIGRhbm4gZm9sZ2VuZGUgQXVzZ2FiZToKKworICAgICAqc2hvcnQ6ICJLdXJ6IgorICAgICAqbmFtZTogKHsgIk5hbWUiLCAiTmFtZW5zIiwgIk5hbWVuIiwgIk5hbWVuIiB9KQorICAgICAqbWU6IE9CSigvcGxheWVycy93YXJnb24vdGVzdCMxMjM0NSkKKworQkVNRVJLVU5HRU46CisgICAgIE1pdCBkZW0gQmVmZWhsIHhwcm9wcyBkZXMgTUd0b29scyBsYXNzZW4gc2ljaCB1ZWJyaWdlbnMgc2FlbXRsaWNoZQorICAgICBQcm9wZXJ0aWVzIGVpbmVzIE9iamVrdGUgYXVmIGVpbmVuIFNjaGxhZyBhdXNnZWJlbi4KKworU0lFSEUgQVVDSDoKKyAgICAgL3N0ZC90aW5nL3V0aWwuYworCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCitMYXN0IG1vZGlmaWVkOiBXZWQgTWF5IDggMTA6MjU6MjYgMTk5NiBieSBXYXJnb24KZGlmZiAtLWdpdCBhL2RvYy9sZnVuL1NraWxsUmVzVHJhbnNmZXIgYi9kb2MvbGZ1bi9Ta2lsbFJlc1RyYW5zZmVyCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjY5ODNlZWEKLS0tIC9kZXYvbnVsbAorKysgYi9kb2MvbGZ1bi9Ta2lsbFJlc1RyYW5zZmVyCkBAIC0wLDAgKzEsMjggQEAKK1NraWxsUmVzVHJhbnNmZXIoKQorCitGVU5LVElPTjoKKyAgICAgcHJvdGVjdGVkIHZvaWQgU2tpbGxSZXNUcmFuc2ZlcihtYXBwaW5nIGZyb21fTSwgbWFwcGluZyB0b19NKQorCitERUZJTklFUlQgSU46CisgICAgIC9zdGQvbGl2aW5nL3NraWxsX3V0aWxzCisKK0FSR1VNRU5URToKKyAgICAgbWFwcGluZyBmcm9tX006IE1hcHBpbmcgbWl0IHp1IGtvcGllcmVuZGVuIFdlcnRlbgorICAgICBtYXBwaW5nIHRvX006ICAgWmllbG1hcHBpbmcKKworQkVTQ0hSRUlCVU5HOgorICAgICBJbnRlcm5lIE1ldGhvZGUsIGRpZSB6QiAoISkgd2FlaHJlbmQgZGVyIEF1c2Z1ZWhydW5nIHZvbiBBdHRhY2soKSBkdXJjaAorICAgICBTa2lsbHMgb2RlciBQX1RNUF9BVFRBQ0tfTU9EIGdlYWVuZGVydGUgV2VydGUgc2VsZWt0aWVydCBpbiBkYXMKKyAgICAgSGF1cHRhbmdyaWZmc21hcHBpbmcgdWViZXJ0cmFlZ3QuCisKKyAgICAgRGVyemVpdCB3ZXJkZW4gZm9sZ2VuZGUgV2VydGUga29waWVydDoKKyAgICAgU0lfU0tJTExEQU1BR0UsIFNJX1NLSUxMREFNQUdFX01TRywgU0lfU0tJTExEQU1BR0VfTVNHMiwKKyAgICAgU0lfU0tJTExEQU1BR0VfVFlQRSwgU0lfU1BFTEwKKworQkVNRVJLVU5HRU46CisgICAgICogd2lyZCBhbiBtZWhyZXJlbiBTdGVsbGVuLCBuaWNodCBudXIgZGVyIGxpdmluZy9jb21iYXQgdmVyd2VuZGV0CisKK1NJRUhFIEFVQ0g6CisgICAgIFBfVE1QX0FUVEFDS19NT0QsIFVzZVNraWxsIChXYWZmZW5mYWVoaWdrZWl0ZW4pCisKKzE4Lkp1bCAyMDE0IEdsb2luc29uCmRpZmYgLS1naXQgYS9kb2MvbGZ1bi9TcGVsbEF0dGFjayBiL2RvYy9sZnVuL1NwZWxsQXR0YWNrCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjBlMjRmZDkKLS0tIC9kZXYvbnVsbAorKysgYi9kb2MvbGZ1bi9TcGVsbEF0dGFjawpAQCAtMCwwICsxLDcxIEBACitTcGVsbEF0dGFjaygpCisKK0ZVTktUSU9OOgorICAgICAgICB2b2lkIFNwZWxsQXR0YWNrKG9iamVjdCBlbmVteSkKKworQVJHVU1FTlRFOgorICAgICAgICBlbmVteTogRGVyIEZlaW5kLgorCitCRVNDSFJFSUJVTkc6CisgICAgICAgIERpZXNlIEZ1bmt0aW9uIHdpcmQgaW4gamVkZW0gSGVhcnRiZWF0IGVpbmVzIE5QQ3MgYXVzZ2VmdWVocnQsCisgICAgICAgIGZhbGxzIG5pY2h0IFBfRElTQUJMRV9BVFRBQ0sgZ2VzZXR6dCBpc3QgKFBhcmFseXNlKS4KKyAgICAgICAgU3RhbmRhcmRtYWVzc2lnIHR1dCBkaWVzZSBGdW5rdGlvbiBuaWNodHMsIGFiZXIgbWFuIGthbm4gc2llCisgICAgICAgIHVlYmVyc2NocmVpYmVuLCBkYW1pdCBpbiBqZWRlbSBIZWFydGJlYXQgQW5ncmlmZmUgbWl0IFNwZWxscworICAgICAgICBhdXNnZWZ1ZWhydCB3ZXJkZW4uCisKKyAgICAgICAgTWFuIHNvbGx0ZSBoaWVyYmVpIGVpbiByYW5kb20oKSBlaW5iYXVlbiwgZGFtaXQgZGVyIE5QQyBuaWNodAorICAgICAgICBpbiBqZWRlbSBIZWFydGJlYXQgYXVjaCB3aXJrbGljaCBlaW5lbiBBbmdyaWZmIGF1c2Z1ZWhydC4KKyAgICAgICAgQXVzc2VyZGVtIHNvbGx0ZSBtYW4gYXVjaCBmdWVyIGV2ZW50dWVsbGUgQXVzZ2FiZW4gc29yZ2VuLgorCitSVUVDS0dBQkVXRVJUOgorICAgICAgICBLZWluZXIuCisKK0JFTUVSS1VORzoKKyAgICAgICAgRGllIEF0dGFja0NoYXRzLCBkaWUgbWl0dGVscyBTZXRBdHRhY2tDaGF0cyBnZXNldHp0IHdlcmRlbgorICAgICAgICBrb2VubmVuLCBtYWNodCBpbSBHcnVuZGUgbmljaHRzIGFuZGVyZXMsIGFiZXIgQ2hhdHMgc2luZCBoYWx0CisgICAgICAgIGtlaW5lIEFuZ3JpZmZlLiA6LSkKKworQkVJU1BJRUxFOgorICAgICAgICBJbSBHcnVuZGUgaXN0IGRpZXNlcyBzaW1wbGUgQmVpc3BpZWwgZWluZSBOYWNoYmlsZHVuZyB2b24KKyAgICAgICAgQXR0YWNrLUNoYXRzIHVuZCBzb2xsIGRlbWVudHNwcmVjaGVuZCBudXIgZGVyIEFuc2NoYXV1bmcgZGllbmVuLgorCisgICAgICAgIHZvaWQgU3BlbGxBdHRhY2sob2JqZWN0IGVuZW15KSAKKyAgICAgICAgeworICAgICAgICAgIC8vIG1pdCA4MCUgV2FocnNjaGVpbmxpY2hrZWl0IHdpcmQgbmljaHRzIGdlbWFjaHQuCisgICAgICAgICAgc3dpdGNoKHJhbmRvbSg1KSkKKyAgICAgICAgICB7CisgICAgICAgICAgICBjYXNlIDA6IAorICAgICAgICAgICAgICB3cml0ZSgiRGVyIE9yayB0cml0dCBEaXIgaW4gZGVuIEhpbnRlcm4uXG4iKTsKKyAgICAgICAgICAgICAgcmV0dXJuOworICAgICAgICAgICAgY2FzZSAxOiAKKyAgICAgICAgICAgICAgd3JpdGUoIkRlciBPcmsgYnJ1ZWxsdDogTGViZW5kIGtvbW1zdCBEdSBoaWVyIG5pY2h0IHJhdXMhXG4iKTsKKyAgICAgICAgICAgICAgcmV0dXJuOworICAgICAgICAgICAgY2FzZSAyOgorICAgICAgICAgICAgICB3cml0ZSgiRGVyIE9yayBibHV0ZXQgc2Nob24gYXVzIG1laHJlcmVuIFd1bmRlbi5cbiIpOworICAgICAgICAgICAgICByZXR1cm47CisgICAgICAgICAgICBjYXNlIDM6CisgICAgICAgICAgICAgIHdyaXRlKGtuaXJzY2goZW5lbXkpKTsKKyAgICAgICAgICAgICAgcmV0dXJuOworICAgICAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgICAgcmV0dXJuOworICAgICAgICAgIH0KKyAgICAgICAgfQorCisgICAgICAgIHN0cmluZyBrbmlyc2NoKG9iamVjdCBlbmVteSkKKyAgICAgICAgeworICAgICAgICAgICBpZiAob2JqZWN0cChlbmVteSkpCisgICAgICAgICAgICAgaGVsbSA9IGVuZW15LT5RdWVyeUFybW91ckJ5VHlwZShBVF9IRUxNRVQpOworICAgICAgICAgICBpZiAob2JqZWN0cChoZWxtKSkKKyAgICAgICAgICAgeworICAgICAgICAgICAgIGhlbG0tPkRhbWFnZSgxKTsKKyAgICAgICAgICAgICByZXR1cm4gIkRlciBPcmsgYmVzY2hhZWRpZ3QgRGVpbmVuIEhlbG0hXG4iOworICAgICAgICAgICB9CisgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICByZXR1cm4gIiI7IC8vIGtlaW5lIE1lbGR1bmcKKyAgICAgICAgfQorCitTSUVIRSBBVUNIOgorICAgICAgICAiQXR0YWNrIiwgIlNldEF0dGFja0NoYXRzIiwgL3N0ZC9ucGMvY29tYmF0LmMKKworTEVUWlRFIEFFTkRFUlVORzoKKyBEb24sIDI3LjAyLjIwMDMsIDEyOjUwOjAwIHZvbiBIaXJ1ZG8KZGlmZiAtLWdpdCBhL2RvYy9sZnVuL1NwZWxsRGVmZW5kIGIvZG9jL2xmdW4vU3BlbGxEZWZlbmQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNzk1MzdkNQotLS0gL2Rldi9udWxsCisrKyBiL2RvYy9sZnVuL1NwZWxsRGVmZW5kCkBAIC0wLDAgKzEsNDMgQEAKK1NwZWxsRGVmZW5kKCkKK0ZVTktUSU9OOgorICAgICBwdWJsaWMgaW50IFNwZWxsRGVmZW5kKG9iamVjdCBjYXN0ZXIsbWFwcGluZyBzaW5mbyk7CisKK0RFRklOSUVSVCBJTjoKKyAgICAgL3N0ZC9saXZpbmcvY29tYmF0LmMKKworQVJHVU1FTlRFOgorICAgICBvYmplY3QgY2FzdGVyCS0gR2VnbmVyCisgICAgIG1hcHBpbmcgc2luZm8JLSBadXNhdHppbmZvcm1hdGlvbmVuIHp1bSBTcGVsbAorCitCRVNDSFJFSUJVTkc6CisgICAgIFVlYmVyIGRlbiBTa2lsbCBTS19TUEVMTF9ERUZFTkQgbWl0IGRlbiBBdWZydWZwYXJhbWV0ZXJuCisgICAgICAgU0lfRU5FTVkgICAgOiA8Y2FzdGVyPgorICAgICB1bmQKKyAgICAgICBTSV9TS0lMTEFSRyA6IDxzaW5mbz4KKyAgICAgd2lyZCBlaW5lIEFid2VocmNoYW5jZSBpbiAwLjAxJS1TY2hyaXR0ZW4gZnVlciBlaW5lbgorICAgICBTcGVsbCBlcm1pdHRlbHQsIGFsc28gMCUgLSAxMDAlIGJ6dy4gYWxzIFJ1ZWNrZ2FiZXdlcnQKKyAgICAgMCAtIDEwMDAwLgorICAgICAKKyAgICAgV2VpdGVyaGluIHdpcmQgYXV0b21hdGlzY2ggUF9NQUdJQ19SRVNJU1RBTkNFX09GRlNFVCB1bmQgZGVyIFNraWxsCisgICAgIFNLX1NQRUxMX0RFRkVORCBiZXJ1ZWNrc2ljaHRpZ3QuCisKK1JVZUNLR0FCRVdFUlQ6CisgICAgIERpZSBBYndlaHJjaGFuY2UgaW4gMC4wMSUtU2Nocml0dGVuLgorICAgICAKKyAgICAgRnVlciBTcGllbGVyIHdpcmQgZGllc2VyIFJ1ZWNrZ2FiZXdlcnQgYXVmIDMzMzMgbWF4aW1hbCwgYWxzbyAzMywzMyUKKyAgICAgQWJ3ZWhybW9lZ2xpY2hrZWl0IGJlc2NocmFlbmt0LgorCitCRU1FUktVTkdFTjoKKyAgICAgRGllIFNwZWxsYm9va3MgbXVlc3NlbiBzZWxic3QgYXVmIGRpZSBBdXN3ZXJ0dW5nIGRpZXNlciBGdW5rdGlvbgorICAgICBhY2h0ZW4hIERpZXMgZ2VzY2hpZWh0IG51ciBpbSBGYWxsZSB2b24gVHJ5R2xvYmFsQXR0YWNrU3BlbGwoKQorICAgICB1bmQgYmVpIFNwZWxscyBmdWVyIE5QQ3MgbWl0dGVscyBQX1NQRUxMUyBhdXRvbWF0aXNjaCEKKworICAgICBCaXR0ZSBiZWkgTlBDcyBuaWNodCBwYXVzY2hhbCAxMDAlIC8gMTAwMDAgenVydWVja2dlYmVuLiBEYW5rZS4KKworU0lFSEUgQVVDSDoKKyAgICAgVmVyd2FuZHQ6ICAgICBQX01BR0lDX1JFU0lTVEFOQ0VfT0ZGU0VUCisgICAgIEFlaG5saWNoOiAgICAgUF9OT01BR0lDCisgICAgIEdlbmVyZWxsOiAgICAgVHJ5R2xvYmFsQXR0YWNrU3BlbGwsIC9zdGQvc3BlbGxib29rLmMKKyAgICAgU29uc3RpZ2VzOiAgICBVc2VTa2lsbCwgU0tfU1BFTExfREVGRU5ECisKKzI5LkRleiAyMDA3IEdsb2luc29uCmRpZmYgLS1naXQgYS9kb2MvbGZ1bi9TcGVsbEluZm9ybSBiL2RvYy9sZnVuL1NwZWxsSW5mb3JtCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjM2OWIyMDEKLS0tIC9kZXYvbnVsbAorKysgYi9kb2MvbGZ1bi9TcGVsbEluZm9ybQpAQCAtMCwwICsxLDMxIEBACitTcGVsbEluZm9ybQorCitGVU5LVElPTjoKKyAgICAgICAgdm9pZCBTcGVsbEluZm9ybShjYXN0ZXIsc3BlbGwsc2luZm8pOworCitERUZJTklFUlQgSU46CisgICAgICAgIHNlbGJlciB6dSBkZWZpbmllcmVuCisKK0FSR1VNRU5URToKKyAgICAgICAgcGwKKyAgICAgICAgICBEYXMgTGViZXdlc2VuLCBkYXMgZXJmb2xncmVpY2ggZ2V6YXViZXJ0IGhhdC4KKyAgICAgICAgc3BlbGwKKyAgICAgICAgICBEZXIgTmFtZSBkZXMgZ2V6YXViZXJ0ZW4gU3BlbGxzCisgICAgICAgIHNpbmZvCisgICAgICAgICAgRGFzIGtvbXBsZXR0ZSBTcGVsbG1hcHBpbmcgZGVzIGdlemF1YmVydGVuIFNwZWxscworCitCRVNDSFJFSUJVTkc6CisgICAgICAgIERpZXNlIEZ1bmt0aW9uIHdpcmQgdm9tIFNwZWxsYnVjaCBlaW5lciBHaWxkZSBpbiBkZXIgVW1nZWJ1bmcKKyAgICAgICAgKEVudmlyb25tZW50KSBlaW5lcyBMZWJld2VzZW5zIGF1ZmdlcnVmZW4sIHdlbm4gaW1tZXIgZGFzIExlYmV3ZXNlbgorICAgICAgICBlaW5lbiBTcGVsbCBfZXJmb2xncmVpY2hfIGdlemF1YmVydCBoYXQuCisgICAgICAgIEJlbWVya3VuZzogQml0dGUgdmVybWVpZGVuLCBhdWZ3YWVuZGlnZSBTYWNoZW4gaW4gZGVyIEZ1bmt0aW9uIHp1CisgICAgICAgIG1hY2hlbiwgZGEgc29uc3QgdS5VLiBkZXN3ZWdlbiBHaWxkZW4gYW5mYW5nZW4genUgYnVnZ2VuLiBGYWxscyBlcworICAgICAgICBzZWluIG11c3MsIG1hY2h0IGRhbm4gbGllYmVyIGVpbmVuIGNhbGxfb3V0IG1pdCAycyBXYXJ0ZXplaXQuCisKK1JVZUNLR0FCRVdFUlQ6CisgICAgICAgIGtlaW5lcgorCitTSUVIRSBBVUNIOgorICAgICAgICAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKzE2LjA0LjIwMDcsIFplc3N0cmEKZGlmZiAtLWdpdCBhL2RvYy9sZnVuL1N0YXJ0IGIvZG9jL2xmdW4vU3RhcnQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uODlmNjNlZgotLS0gL2Rldi9udWxsCisrKyBiL2RvYy9sZnVuL1N0YXJ0CkBAIC0wLDAgKzEsMjUgQEAKK1N0YXJ0KCkKKworRlVOS1RJT046CisgICAgIHZhcmFyZ3Mgdm9pZCBTdGFydChpbnQgcG9zKTsKKworREVGSU5JRVJUIElOOgorICAgICAvc3RkL3RyYW5zcG9ydC5jCisKK0FSR1VNRU5URToKKyAgICAgcG9zCisgICAgICAgICAgRmFocnBsYW5zdGF0aW9uLCBhbiBkZXIgYmVnb25uZW4gd2VyZGVuIHNvbGwuCisKK0JFU0NIUkVJQlVORzoKKyAgICAgRGllc2UgRnVua3Rpb24gc2NoaWNrdCBkZW4gVHJhbnNwb3J0ZXIgYXVmIGRpZSBTdHJlY2tlLiBEYWJlaSBiZWdpbm50CisgICAgIGRlciBXZWcgYW4gZGVyIG1pdCBwb3MgYmV6ZWljaG5ldGVuIFN0ZWxsZSBpbSBGYWhycGxhbi4gRGVmYXVsdCBpc3QgMCwKKyAgICAgZC5oLiBkZXIgVHJhbnNwb3J0ZXIgYmVnaW5udCBzZWluZW4gV2VnIGFuIGRlciBlcnN0ZW4gRmFocnBsYW5wb3NpdGlvbi4KKworUlVlQ0tHQUJFV0VSVDoKKyAgICAga2VpbmVyCisKK1NJRUhFIEFVQ0g6CisgICAgIEhhbHQoKSwgL3N0ZC90cmFuc3BvcnQuYworCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCitMYXN0IG1vZGlmaWVkOiBXZWQgTWF5IDggMTA6MjU6MzAgMTk5NiBieSBXYXJnb24KZGlmZiAtLWdpdCBhL2RvYy9sZnVuL1N0b3BIdW50Rm9yIGIvZG9jL2xmdW4vU3RvcEh1bnRGb3IKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNzM4YjkyMAotLS0gL2Rldi9udWxsCisrKyBiL2RvYy9sZnVuL1N0b3BIdW50Rm9yCkBAIC0wLDAgKzEsNTIgQEAKK1N0b3BIdW50Rm9yKCkKKworRlVOS1RJT046CisgIHZhcmFyZ3MgaW50IFN0b3BIdW50Rm9yKG9iamVjdCBhcmcsaW50IHNpbGVudCk7CisKK0RFRklOSUVSVCBJTjoKKyAgL3N0ZC9saXZpbmcvY29tYmF0LmMKKworQVJHVU1FTlRFOgorICBhcmcKKyAgICBEZXIgR2VnbmVyLCB3ZWxjaGVyIG5pY2h0IG1laHIgYmVrYWVtcGZ0IHdlcmRlbiBzb2xsLgorICBzaWxlbnQKKyAgICBGbGFnLCB3ZWxjaGVzIGdlc2V0enQgYW56ZWlndCwgZGFzcyBkaWUgYmVpZGVuIEV4LVN0cmVpdGhhZWhuZQorICAgIHVlYmVyIGRhcyBlaW5zZWl0aWdlIEZyaWVkZW5zYW5nZWJvdCBuaWNodCBpbmZvcm1pZXJ0IHdlcmRlbgorICAgIHNvbGxlbi4KKworUlVlQ0tHQUJFV0VSVDoKKyAgRmxhZzogQmVpIDAgd2FyIGRlciBHZWduZXIgbmljaHQgYXVmZmluZGJhciwgYmVpIDEgRXJmb2xnLgorCitCRVNDSFJFSUJVTkc6CisgIE1pdCBkaWVzZXIgRnVua3Rpb24ga2FubiBtYW4gZWluIExlYmV3ZXNlbiA8YXJnPiBhbHMgR2VnbmVyCisgIGF1c3RyYWdlbi4gSW0gTm9ybWFsZmFsbCBlcmhhbHRlbiBzb3dvaGwgZGFzIGFrdHVlbGxlIE9iamVrdCwgYWxzCisgIGF1Y2ggZGVyIEdlZ25lciBlaW5lIEluZm9ybWF0aW9uIGRhcnVlYmVyLiBEaWVzIGthbm4gamVkb2NoIG1pdCBkZW0KKyAgZ2VzZXR6dGVuIEZsYWcgPHNpbGVudD4gdW50ZXJidW5kZW4gd2VyZGVuLgorICBFcyBpc3QgYXVjaCBtb2VnbGljaCwgYXVmIGRpZXNlIE1lbGR1bmcgRWluZmx1c3MgenUgbmVobWVuLCBpbmRlbQorICBtYW4gZGllIEZ1bmt0aW9uIFN0b3BIdW50VGV4dCgpIHVlYmVyc2NocmVpYnQsIHdlbGNoZSBkYWZ1ZXIKKyAgdmVyYW50d29ydGxpY2ggaXN0LgorICBBY2h0dW5nOiBVbSB6d2lzY2hlbiBiZWlkZW4gU3RyZWl0aGFlaG5lbiBGcmllZGVuIHp1IHNjaGxpZXNzZW4sCisgIG11c3MgZGVyIGVpbmUgR2VnbmVyIGpld2VpbHMgYmVpIGRlbSBhbmRlcmVuIGF1c2dldHJhZ2VuIHdlcmRlbi4gRWluCisgIGVpbnplbG5lcyBTdG9wSHVudEZvcigpIGlzdCBzb3p1c2FnZW4gbnVyIGVpbiBlaW5zZWl0aWdlcworICBGcmllZGVuc2FuZ2Vib3QuCisKK0JFTUVSS1VOR0VOOgorICBTb2xsIGVpbiBWaWVjaCB1bnRlciBiZXN0aW1tdGVuIFVtc3RhZW5kZW4gbmljaHQgYW5ncmVpZmJhciBzZWluLCBpc3QgaW4KKyAga2VpbmVtIEZhbGwgU3RvcEh1bnRGb3IoKSBpbSBEZWZlbmQoKSB6dSB2ZXJ3ZW5kZW4sIHNvbmRlcm4gUF9OT19BVFRBQ0suCisgIEdydW5kOiBTdG9wcHQgbWFuIHVubGllYnNhbWUgS2FlbXBmZSBqZXdlaWxzIGFtIEFuZmFuZyB2b20gRGVmZW5kLCBrYW5uIGVpbgorICBHZWduZXIgZ2VmYWhybG9zIEFuZ3JpZmZzc3BlbGxzIGF1c2Z1ZWhyZW4gKHVuZCB1ZWJlbiksIG9obmUgZGFzcyBkaWUgR2VmYWhyCisgIGJlc3RlaHQsIGRhc3MgZGVyIE5QQyB6dXJ1ZWNrc2NobGFlZ3QuCisKK0JFSVNQSUVMRToKKyAgTWFuIHdpbGwgYXVzIGlyZ2VuZGVpbmVtIEdydW5kIGRlbiBLYW1wZiB6d2lzY2hlbiBzaWNoIHVuZCBHZWduZXIgZW5lbXkKKyAgZWluc3RlbGxlbjoKKyAgLi4uCisgIFN0b3BIdW50Rm9yKGVuZW15KTsgLy8gZW5lbXkgbmljaHQgbWVociBiZWthZW1wZmVuCisgIGVuZW15LT5TdG9wSHVudEZvcih0aGlzX29iamVjdCgpKTsgLy8gZW5lbXkgc29sbCBtaWNoIG5pY2h0IGJla2FlbXBmZW4uCisgIC4uLgorCitTSUVIRSBBVUNIOgorICBTdG9wSHVudFRleHQoKSwgU2VsZWN0RW5lbXkoKSwgUXVlcnlFbmVtaWVzKCksIElzRW5lbXkoKQorCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisxNi4wMy4yMDA4LCBaZXNzdHJhIApkaWZmIC0tZ2l0IGEvZG9jL2xmdW4vU3RvcEh1bnRUZXh0IGIvZG9jL2xmdW4vU3RvcEh1bnRUZXh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjFjYThjZmIKLS0tIC9kZXYvbnVsbAorKysgYi9kb2MvbGZ1bi9TdG9wSHVudFRleHQKQEAgLTAsMCArMSw1OCBAQAorU3RvcEh1bnRUZXh0KCkKKworRlVOS1RJT046CisJdm9pZCBTdG9wSHVudFRleHQob2JqZWN0IGFyZyk7CisKK0RFRklOSUVSVCBJTjoKKwkvc3RkL2xpdmluZy9jb21iYXQuYworCitBUkdVTUVOVEU6CisJYXJnCisJICBEZXIgR2VnbmVyLCB3ZWxjaGVyIG5pY2h0IG1laHIgYmVrYWVtcGZ0IHdpcmQuCisKK0JFU0NIUkVJQlVORzoKKwlNaXQgZGVyIEZ1bmt0aW9uIFN0b3BIdW50Rm9yKCkga2FubiBtYW4gZWluIExlYmV3ZXNlbiBhbHMgR2VnbmVyCisJYXVzdHJhZ2VuLiBEYWJlaSBlcmhhbHRlbiBzb3dvaGwgZGVyIEdlZ25lciwgYWxzIGF1Y2ggZGFzIExlYmV3ZXNlbiwKKwl3ZWxjaGVzIChlaW5zZWl0aWchKSBGcmllZGVuIHNjaGxpZXNzdCwgamV3ZWlscyBlaW5lIE1lbGR1bmcsIHNvZmVybgorCW1hbiBkaWVzIG5pY2h0IG1pdHRlbHMgZWluZXMgRmxhZ3MgdW50ZXJiaW5kZXQuCisJRXMgaXN0IG51biBtb2VnbGljaCwgYXVmIGRpZXNlIE1lbGR1bmcgRWluZmx1c3MgenUgbmVobWVuLCBpbmRlbQorCW1hbiBkaWUgRnVua3Rpb24gU3RvcEh1bnRUZXh0KCkgdWViZXJzY2hyZWlidCwgd2VsY2hlIGRhZnVlcgorCXZlcmFudHdvcnRsaWNoIGlzdC4KKworQkVJU1BJRUw6CisJRWluIExlYmV3ZXNlbiBtb2VjaHRlIGVpbmVuIEthbXBmIHNvZm9ydCBhYmJyZWNoZW4sIHdlbm4gZXMgdm9uCisJZWluZW0gRnJvc2NoIGFuZ2VncmlmZmVuIHdpcmQ6CisJICBpbnQgRGVmZW5kKGludCBkYW0sbWl4ZWQgZGFtX3R5cGUsbWl4ZWQgc3BlbGwsb2JqZWN0IGVuZW15KQorCSAgeyBpZihlbmVteSYmZW5lbXktPlF1ZXJ5UHJvcChQX0ZST0cpKQorCSAgICB7IGlmKFN0b3BIdW50Rm9yKGVuZW15KSkKKyAgICAgICAgICAgICAgeyAvLyB3ZW5uIEZyb3NjaCBhbmdyZWlmZW4gd2lsbCwgZGVyIG5vY2gga2VpbiBHZWduZXIgd2FyCisgICAgICAgICAgICAgICAgdGVsbF9vYmplY3QoYXJnLAorICAgICAgICAgdGhpc19vYmplY3QoKS0+TmFtZShXRVIpKyIga2FlbXBmdCBuaWNodCBtaXQgRGlyLlxuIgorCSsiV2FocnNjaGVpbmxpY2ggd2VyZGVuIEZyb2VzY2hlIHZlcnNjaG9udC5cbiIpOworCSAgICAgICAgdGVsbF9vYmplY3QodGhpc19vYmplY3QoKSwKKwkgIkRlciBibG9lZGUgRnJvc2NoIHdvbGx0ZSBEaWNoIGRvY2ggdGF0c2FlY2hsaWNoIGFuZ3JlaWZlbi5cbiIpOworICAgICAgICAgICAgICB9CisJICAgICAgZW5lbXktPlN0b3BIdW50Rm9yKHRoaXNfb2JqZWN0KCksMSk7CisgICAgICAgICAgICAgIHJldHVybiAwOworICAgICAgICAgICAgfQorCSAgICByZXR1cm46OkRlZmVuZChkYW0sZGFtX3R5cGUsc3BlbGwsZW5lbXkpOworCSAgfQorCSAgLy8gd2lyZCBudXIgYXVmZ2VydWZlbiwgd2VubiBkZXIgR2VnbmVyIGlyZ2VuZHdhbm4gRnJvc2NoIHd1cmRlCisJICB2b2lkIFN0b3BIdW50VGV4dChvYmplY3QgYXJnKQorCSAgeyB0ZWxsX29iamVjdChhcmcsCisJIHRoaXNfb2JqZWN0KCktPk5hbWUoV0VSKSsiIGphZ2QgRGljaCBuaWNodCBtZWhyLlxuIgorCSsiV2FocnNjaGVpbmxpY2ggd2VyZGVuIEZyb2VzY2hlIHZlcnNjaG9udC5cbiIpOworCSAgICB0ZWxsX29iamVjdCh0aGlzX29iamVjdCgpLAorCSJEZWluIEdlZ25lciBpc3QgZG9jaCB0YXRzYWVjaGxpY2ggcGxvZXR6bGljaCBGcm9zY2ggZ2V3b3JkZW4hXG4iKTsKKwkgIH0KKwlXYXJ1bSBicmF1Y2h0IG1hbiBudW4gZGFzIGVyc3RlIFN0b3BIdW50Rm9yKCksIHdlbm4gZG9jaCBHZWduZXIgZXJzdAorCWluIDo6RGVmZW5kKCkgZWluZ2V0cmFnZW4gd2VyZGVuLCB3ZWxjaGVzIGRvY2ggZ2FyIG5pY2h0IGF1c2dlZnVlaHJ0CisJd2lyZCwgd2VubiBkZXIgR2VnbmVyIGVpbiBGcm9zY2ggaXN0PyBNYW4gYmVhY2h0ZSBoaWVyYmVpLCBkYXNzIGRlcgorCUdlZ25lciBqYSBhdWNoIHdhZWhyZW5kIGRlcyBLYW1wZmVzIG9kZXIgd2FlaHJlbmQgZGVyIEZlaW5kc2NoYWZ0CisJaXJnZW5kd2FubiBGcm9zY2ggd2VyZGVuIGtvZW5udGUgdW5kIGRhbm4gc2Nob24gR2VnbmVyIHdhci4KKworU0lFSEUgQVVDSDoKKwlTdG9wSHVudEZvcigpLCBTZWxlY3RFbmVteSgpLCBRdWVyeUVuZW1pZXMoKSwgSXNFbmVteSgpCisKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KK0xhc3QgbW9kaWZpZWQ6IFdlZCBNYXkgMjYgMTY6NDc6NTEgMTk5OSBieSBQYXRyeW4KZGlmZiAtLWdpdCBhL2RvYy9sZnVuL1N1Z2dlc3RBcnRpY2xlIGIvZG9jL2xmdW4vU3VnZ2VzdEFydGljbGUKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uN2E0YmE1YwotLS0gL2Rldi9udWxsCisrKyBiL2RvYy9sZnVuL1N1Z2dlc3RBcnRpY2xlCkBAIC0wLDAgKzEsMzUgQEAKK1N1Z2dlc3RBcnRpY2xlKCkKKworRlVOS1RJT046CisgICAgIHZhcmFyZ3MgaW50IFN1Z2dlc3RBcnRpY2xlKHN0cmluZyBuYW1lKTsKKworREVGSU5JRVJUIElOOgorICAgICAvc3RkL3RoaW5nL2xhbmd1YWdlLmMKKworQVJHVU1FTlRFOgorICAgICBuYW1lCisgICAgICAgICAgRGVyIE5hbWUgenVyIEVudHNjaGVpZHVuZ3NoaWxmZS4KKworQkVTQ0hSRUlCVU5HOgorICAgICBEaWVzZSBGdW5rdGlvbiB2ZXJzdWNodCBoZXJhdXN6dWZpbmRlbiwgb2IgZGVyIEFydGlrZWwgenUgZGllc2VtIE9iamVrdAorICAgICBlaW4gdW5iZXN0aW1tdGVyIG9kZXIgYmVzc2VyIGVpbiBiZXN0aW1tdGVyIEFydGlrZWwgc2VpbiBzb2xsdGUuIERpZQorICAgICBWb3JnZWhlbnN3ZWlzZSBpc3QgZm9sZ2VuZGU6IEdpYnQgZXMgaW4gZGVyIFVtZ2VidW5nIGRpZXNlcyBPYmpla3RlcworICAgICBlaW4gd2VpdGVyZXMgT2JqZWt0LCBkYXMgZGVuIE5hbWVuIG5hbWUgYmVzaXR6dCwgc28gd2lyZCBlaW4KKyAgICAgdW5iZXN0aW1tdGVyIEFydGlrZWwgdm9yZ2VzY2hsYWdlbiwgYW5zb25zdGVuIGVpbiBiZXN0aW1tdGVyLgorCitSVWVDS0dBQkVXRVJUOgorICAgICAwLCB3ZW5uIGVpbiB1bmJlc3RpbW10ZXIgQXJ0aWtlbCBnZWVpZ25ldCBpc3QsIGFuc29uc3RlbiAxLgorCitCRU1FUktVTkdFTjoKKyAgICAgRGVyIFZlcmdsZWljaCBlcmZvbGd0IG1pdHRlbHMgZGVyIFByb3BlcnR5IFBfTkFNRS4gVW0gRXJmb2xnIHp1IGhhYmVuLAorICAgICBzb2xsdGUgbWFuIGRpZXNlIEZ1bmt0aW9uIGRhaGVyIGluIGRlciBGb3JtCisKKyAgICAgU3VnZ2VzdEFydGljbGUoUXVlcnlQcm9wKFBfTkFNRSkpCisKKyAgICAgYXVmcnVmZW4uCisKK1NJRUhFIEFVQ0g6CisgICAgIFF1ZXJ5QXJ0aWNsZSgpLCBuYW1lKCksIC9zdGQvdGhpbmcvbGFuZ3VhZ2UuYworCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCitMYXN0IG1vZGlmaWVkOiBXZWQgTWF5IDggMTA6MjU6MzQgMTk5NiBieSBXYXJnb24KZGlmZiAtLWdpdCBhL2RvYy9sZnVuL1N3YXBSb3dzIGIvZG9jL2xmdW4vU3dhcFJvd3MKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uN2Q1ZDkyOAotLS0gL2Rldi9udWxsCisrKyBiL2RvYy9sZnVuL1N3YXBSb3dzCkBAIC0wLDAgKzEsNDAgQEAKKworU3dhcFJvd3MoKQorCisKK0ZVTktUSU9OOgorICAgIGludCBTd2FwUm93cyggb2JqZWN0IG9iMSwgb2JqZWN0IG9iMiApCisKK0RFRklOSUVSVCBJTjoKKyAgICAvc3RkL2xpdmluZy90ZWFtLmMKKworQVJHVU1FTlRFOgorICAgIG9iMSwgb2IyIC0gU3BpZWxlciwgZGllIGRpZSBSZWloZW4gdGF1c2NoZW4gc29sbGVuLgorCitCRVNDSFJFSUJVTkc6CisgICAgRGllIGFuZ2VnZWJlbmVuIFNwaWVsZXIgdGF1c2NoZW4gZGllIFJlaWhlbi4KKworUlVFQ0tHQUJFV0VSVDoKKyAgICAxIGJlaSBlcmZvbGdyZWljaGVtIFRhdXNjaCwgMCBzb25zdC4KKworQkVNRVJLVU5HOgorICAgIERlciBUYXVzY2ggd2lyZCBudXIgZHVyY2hnZWZ1ZWhydCwgd2VubiBkaWUgYW5nZWdlYmVuZW4gU3BpZWxlciBhdWNoCisgICAgdGF0c2FlY2hsaWNoIGltIFRlYW0gc2luZCB1bmQgZGFtaXQga2VpbiBOUEMgdm9yIGVpbmVuIFNwaWVsZXIgZ2VzdGVsbHQKKyAgICB3dWVyZGUuCisgICAgTW9lY2h0ZSBtYW4gd2lzc2VuLCBvYiBlaW4gU3BpZWxlciBlaW5lIFJlaWhlIGdld2VjaHNlbHQgaGF0LCBtdXNzIG1hbgorICAgIHNpY2ggZGVyIEhpbGZlIGVpbmVzIEhvb2tzIGJlZGllbmVuOiBIX0hPT0tfVEVBTVJPV0NIQU5HRQorCitTSUVIRSBBVUNIOgorICAgICAgICBVZWJlcnNpY2h0OiB0ZWFta2FtcGYKKyAgICAgICAgUHJvcGVydGllczogUF9URUFNLCBQX1RFQU1fTEVBREVSLCBQX1RFQU1fQVNTT0NfTUVNQkVSUywKKyAgICAgICAgICAgICAgICAgICAgUF9URUFNX05FV01FTUJFUgorICAgICAgICBCZXdlZ3VuZzogICBJc1RlYW1Nb3ZlLCBUZWFtRmxlZQorICAgICAgICBNaXRnbGllZGVyOiBJc1RlYW1MZWFkZXIsIFRlYW1NZW1iZXJzCisgICAgICAgIEthbXBmOiAgICAgIEFzc29jTWVtYmVyLCBEZUFzc29jTWVtYmVyLCBJbnNlcnRFbmVteVRlYW0KKyAgICAgICAgICAgICAgICAgICAgU2VsZWN0TmVhckVuZW15LCBTZWxlY3RGYXJFbmVteQorICAgICAgICBQb3NpdGlvbmVuOiBQcmVzZW50UG9zaXRpb24sIFByZXNlbnRSb3dzLCBQcmVzZW50RW5lbXlSb3dzLAorICAgICAgICAgICAgICAgICAgICBQcmVzZW50VGVhbVBvc2l0aW9uCisgICAgICAgIFNvbnN0aWdlczogIFRlYW1QcmVmaXgsIHRlYW1rYW1wZl9pbnRlcm4KKworLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorTGFzdCBtb2RpZmllZDogMTYtMDgtMjAxMCwgR2FieWxvbgpkaWZmIC0tZ2l0IGEvZG9jL2xmdW4vVGFrZUZsYXcgYi9kb2MvbGZ1bi9UYWtlRmxhdwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi43YmZkMDNhCi0tLSAvZGV2L251bGwKKysrIGIvZG9jL2xmdW4vVGFrZUZsYXcKQEAgLTAsMCArMSw3NSBAQAorVGFrZUZsYXcoKQorCitGVU5LVElPTjoKKyAgICAgdmFyYXJncyB2b2lkIFRha2VGbGF3KG9iamVjdCBlbmVteSk7IChXYWZmZW4pCisgICAgIHZhcmFyZ3Mgdm9pZCBUYWtlRmxhdyhtaXhlZCBkYW1fdHlwZXMsbWFwcGluZyBlaW5mb3MpIChSdWVzdHVuZ2VuKQorCitERUZJTklFUlQgSU46CisgICAgIC9zdGQvYXJtb3VyL2NvbWJhdC5jLAorICAgICAvc3RkL3dlYXBvbi9jb21iYXQuYworCitBUkdVTUVOVEU6CisgICAgIGtlaW5lCisKK0JFU0NIUkVJQlVORzoKKyAgICAgRGllc2UgRnVua3Rpb24gd2lyZCBpbiBXYWZmZW4gdW5kIFJ1ZXN0dW5nZW4gd2FlaHJlbmQgZGVzIEthbXBmZXMKKyAgICAgYXVmZ2VydWZlbi4gSW4gZWluZXIgV2FmZmUgZXJmb2xndCBkZXIgQXVmcnVmIGJlaSBqZWRlbSBTY2hsYWcgbWl0CisgICAgIGRpZXNlciBXYWZmZSwgYmVpIFJ1ZXN0dW5nZW4gd2lyZCBUYWtlRmxhdygpIGluIGVpbmVyIHp1ZmFlbGxpZworICAgICBhdXNnZXdhZWhsdGVuIGdldHJhZ2VuZW4gUnVlc3R1bmcgYXVmZ2VydWZlbi4KKyAgICAgV2FmZmVuIGJla29tbWVuIGRhcyBHZWduZXJvYmpla3QgdWViZXJnZWJlbiwgUnVlc3R1bmdlbiBkaWUgZXJ3ZWl0ZXJ0ZW4KKyAgICAgRGVmZW5kSW5mb3MgKHMuIGRvcnQgZnVlciBEZXRhaWxzKS4gQXVmZ3J1bmQgZGllc2VyIEluZm9ybWF0aW9uZW4ga2FubgorICAgICBtYW4gZGVuIFNjaGFkZW4sIGRlbiBlaW4gR2VnZW5zdGFuZCBuaW1tdCwgZmxleGlibGVyIGdlc3RhbHRlbiAoei5CLiBiZWkKKyAgICAgZWluZXIgV2FmZmUgaW4gQWJoYWVuZ2lna2VpdCB2b24gUF9CT0RZIGRlcyBHZWduZXJzLikKKworICAgICBTb3dlaXQgbWFuIGRpZSBGdW5rdGlvbiBuaWNodCB1ZWJlcmxhZWR0LCBiZXdpcmt0IHNpZSBuaWNodHMgd2VpdGVyIGFscworICAgICBkYXMgRXJob2VoZW4gZWluZXMgWmFlaGxlcnMsIGRlciBtaXQgUXVlcnlGbGF3KCkgYWJnZWZyYWd0IHdlcmRlbiBrYW5uLgorCitSVWVDS0dBQkVXRVJUOgorICAgICBrZWluZXIKKworQkVNRVJLVU5HRU46CisgICAgIERpZSBXYWZmZW4tLyBSdWVzdHVuZ3NrbGFzc2Ugd2lyZCBuaWNodCBhdXRvbWF0aXNjaCByZWR1emllcnQhIFdlbm4KKyAgICAgZWluZSBXYWZmZSBvZGVyIFJ1ZXN0dW5nIHNpY2ggYWJudXR6ZW4gc29sbCwgbXVzcyBtYW4gVGFrZUZsYXcoKQorICAgICB1ZWJlcmxhZGVuIHVuZCBkb3J0IGVudHNwcmVjaGVuZCBoYW5kZWxuLCBvZGVyIChmdWVyIGVpbmZhY2hlCisgICAgIEZhZWxsZSkgZGllIFByb3BlcnR5IFBfUVVBTElUWSBzZXR6ZW4uCisKK0JFSVNQSUVMRToKKyAgICAgRWluZSBXYWZmZSwgZGVyZW4gV2FmZmVua2xhc3NlIGFsbGUgMjAgU2NobGFlZ2UgdW0gMSBhYm5pbW10OgorCisgICAgIGluaGVyaXQgInN0ZC93ZWFwb24iOworCisgICAgICNpbmNsdWRlIDxwcm9wZXJ0aWVzLmg+CisgICAgICNpbmNsdWRlIDxjb21iYXQuaD4KKworICAgICBjcmVhdGUoKQorICAgICB7CisgICAgICAgLyogRGFzIFVlYmxpY2hlLi4uICovCisgICAgIH0KKworICAgICBUYWtlRmxhdygpCisgICAgIHsKKyAgICAgICBpbnQgZmxhdzsKKworICAgICAgIC8qIGVyc3QgbWFsIGRlbiBaYWVobGVyIGVyaG9laGVuLi4uICovCisgICAgICAgOjpUYWtlRmxhdygpOworCisgICAgICAgLyogamV0enQgZGVuIGFrdHVlbGxlbiBaYWVobGVyc3RhbmQgYWJmcmFnZW4gKi8KKyAgICAgICBmbGF3ID0gUXVlcnlGbGF3KClbMF07CisKKyAgICAgICAvKiBBYnp1ZyBudXIgamVkZW4gMjAuIFNjaGxhZyAqLworICAgICAgIGlmICghKGZsYXcgJSAyMCkpIHsKKyAgICAgICAgIC8qIFNvLCBqZXR6dCBmdWVyIGRlbiBTY2hhZGVuIHNvcmdlbi4gSGllcmZ1ZXIgYmVudXR6dCAqLworICAgICAgICAgLyogbWFuIGFtIHNpY2hlcnN0ZW4gZGllIGVpbmdlYmF1dGUgRnVua3Rpb24gRGFtYWdlKCkgKi8KKyAgICAgICAgIERhbWFnZSgxKTsKKyAgICAgICB9CisgICAgIH0KKworICAgICBEaWVzZXMgZWluZmFjaGUgQmVpc3BpZWwgaGFldHRlIG5hdHVlcmxpY2ggYXVjaCB1ZWJlciBlaW4KKyAgICAgU2V0UHJvcChQX1FVQUxJVFksMjApOyBpbSBjcmVhdGUoKSByZWFsaXNpZXJ0IHdlcmRlbiBrb2VubmVuLgorCitTSUVIRSBBVUNIOgorICAgICBRdWVyeUZsYXcoKSwgRGFtYWdlKCksIERlZmVuZEluZm8sIFBfUVVJQUxJVFksIC9zdGQvYXJtb3VyL2NvbWJhdC5jLAorICAgICAvc3RkL3dlYXBvbi9jb21iYXQuYworCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCitMYXN0IG1vZGlmaWVkOiBUaHUgTWF5IDIyIDEwOjMwOjEwIDE5OTcgYnkgUGFyYWNlbHN1cwpkaWZmIC0tZ2l0IGEvZG9jL2xmdW4vVGVhbUZsZWUgYi9kb2MvbGZ1bi9UZWFtRmxlZQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5mYjMxN2EwCi0tLSAvZGV2L251bGwKKysrIGIvZG9jL2xmdW4vVGVhbUZsZWUKQEAgLTAsMCArMSw0MCBAQAorCitUZWFtRmxlZSgpCisKKworRlVOS1RJT046CisgICAgICAgIGludCBUZWFtRmxlZSgpCisKK0RFRklOSUVSVCBJTjoKKyAgICAgICAgL3N0ZC9saXZpbmcvdGVhbS5jCisKK0FSR1VNRU5URToKKyAgICAgICAga2VpbmUKKworQkVTQ0hSRUlCVU5HOgorICAgICAgICBTcGllbGVyIHdpcmQgenVyIEZsdWNodCBpbiBoaW50ZXJlIFJlaWhlIHZlcmFubGFzc3QsIGZhbGxzIGVyIGRpZXMKKyAgICAgICAgZWluZ2VzdGVsbHQgaGF0LgorCitSVUVDS0dBQkVXRVJUOgorICAgICAgICAxLCBmYWxscyBkZXIgU3BpZWxlciBpbiBlaW5lIGhpbnRlcmUgUmVpaGUgZmxpZWhlbiB3b2xsdGUgdW5kIG5hY2gKKyAgICAgICAgZGVtIFZlcnN1Y2ggbmljaHQgbWVociBpbiBkZXIgZXJzdGVuIFJlaWhlIHN0ZWh0LCBzb25zdCAwLgorCitCRU1FUktVTkdFTjoKKyAgICAgICAgQmVpbSBUZWFtbGVpdGVyIGZ1ZWhydCBkZXIgRmx1Y2h0dmVyc3VjaCBkYXp1LCBkYXNzIHNlaW4gVGVhbSBuaWNodAorICAgICAgICBtZWhyIGZvbGd0LgorCitTSUVIRSBBVUNIOgorICAgICAgICBVZWJlcnNpY2h0OiB0ZWFta2FtcGYKKyAgICAgICAgUHJvcGVydGllczogUF9URUFNLCBQX0FTU09DX01FTUJFUlMsIFBfVEVBTV9BVFRBQ0tfQ01ELAorICAgICAgICAgICAgICAgICAgICBQX1RFQU1fQVVUT0ZPTExPVywgUF9URUFNX0NPTE9SUywgUF9URUFNX0xFQURFUiwKKyAgICAgICAgICAgICAgICAgICAgUF9URUFNX05FV01FTUJFUiwgUF9URUFNX1dBTlRFRF9ST1csIFBfVEVBTV9XSU1QWV9ST1cKKyAgICAgICAgQmV3ZWd1bmc6ICAgSXNUZWFtTW92ZQorICAgICAgICBNaXRnbGllZGVyOiBJc1RlYW1MZWFkZXIsIFRlYW1NZW1iZXJzCisgICAgICAgIEthbXBmOiAgICAgIEFzc29jTWVtYmVyLCBEZUFzc29jTWVtYmVyLCBJbnNlcnRFbmVteVRlYW0sCisgICAgICAgICAgICAgICAgICAgIFNlbGVjdE5lYXJFbmVteSwgU2VsZWN0RmFyRW5lbXkKKyAgICAgICAgUG9zaXRpb25lbjogUHJlc2VudFBvc2l0aW9uLCBQcmVzZW50Um93cywgUHJlc2VudEVuZW15Um93cywKKyAgICAgICAgICAgICAgICAgICAgUHJlc2VudFRlYW1Qb3NpdGlvbiwgU3dhcFJvd3MKKyAgICAgICAgU29uc3RpZ2VzOiAgVGVhbVByZWZpeCwgdGVhbWthbXBmX2ludGVybgorCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCitMYXN0IG1vZGlmaWVkOiAxNi0wOC0yMDEwLCBHYWJ5bG9uCmRpZmYgLS1naXQgYS9kb2MvbGZ1bi9UZWFtTWVtYmVycyBiL2RvYy9sZnVuL1RlYW1NZW1iZXJzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjI4Y2E5M2IKLS0tIC9kZXYvbnVsbAorKysgYi9kb2MvbGZ1bi9UZWFtTWVtYmVycwpAQCAtMCwwICsxLDM4IEBACisKK1RlYW1NZW1iZXJzKCkKKworCitGVU5LVElPTjoKKyAgICAgICAgb2JqZWN0ICpUZWFtTWVtYmVycygpCisKK0RFRklOSUVSVCBJTjoKKyAgICAgICAgL3N0ZC9saXZpbmcvdGVhbS5jCisKK0FSR1VNRU5URToKKyAgICAgICAga2VpbmUKKworQkVTQ0hSRUlCVU5HOgorICAgICAgICBMaWVmZXJ0IFRlYW1taXRnbGllZGVyIGRlcyBUZWFtcyBkZXMgU3BpZWxlcnMuCisKK1JVRUNLR0FCRVdFUlQ6CisgICAgICAgIEFycmF5IG1pdCBBTExFTiBUZWFtbWl0Z2xpZWRlcm4uCisKK0JFTUVSS1VOR0VOOgorICAgICAgICBGYWxscyBkZXIgU3BpZWxlciBpbiBrZWluZW0gVGVhbSBpc3QsIGVudGhhZWx0IGRhcyBBcnJheSBudXIgZGVuCisgICAgICAgIFNwaWVsZXIuCisKK1NJRUhFIEFVQ0g6CisgICAgICAgIFVlYmVyc2ljaHQ6IHRlYW1rYW1wZgorICAgICAgICBQcm9wZXJ0aWVzOiBQX1RFQU0sIFBfQVNTT0NfTUVNQkVSUywgUF9URUFNX0FUVEFDS19DTUQsCisgICAgICAgICAgICAgICAgICAgIFBfVEVBTV9BVVRPRk9MTE9XLCBQX1RFQU1fQ09MT1JTLCBQX1RFQU1fTEVBREVSLAorICAgICAgICAgICAgICAgICAgICBQX1RFQU1fTkVXTUVNQkVSLCBQX1RFQU1fV0FOVEVEX1JPVywgUF9URUFNX1dJTVBZX1JPVworICAgICAgICBCZXdlZ3VuZzogICBJc1RlYW1Nb3ZlLCBUZWFtRmxlZQorICAgICAgICBNaXRnbGllZGVyOiBJc1RlYW1MZWFkZXIKKyAgICAgICAgS2FtcGY6ICAgICAgQXNzb2NNZW1iZXIsIERlQXNzb2NNZW1iZXIsIEluc2VydEVuZW15VGVhbSwKKyAgICAgICAgICAgICAgICAgICAgU2VsZWN0TmVhckVuZW15LCBTZWxlY3RGYXJFbmVteQorICAgICAgICBQb3NpdGlvbmVuOiBQcmVzZW50UG9zaXRpb24sIFByZXNlbnRSb3dzLCBQcmVzZW50RW5lbXlSb3dzLAorICAgICAgICAgICAgICAgICAgICBQcmVzZW50VGVhbVBvc2l0aW9uLCBTd2FwUm93cworICAgICAgICBTb25zdGlnZXM6ICBUZWFtUHJlZml4LCB0ZWFta2FtcGZfaW50ZXJuCisKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KK0xhc3QgbW9kaWZpZWQ6IDE2LTA4LTIwMTAsIEdhYnlsb24KZGlmZiAtLWdpdCBhL2RvYy9sZnVuL1RlYW1QcmVmaXggYi9kb2MvbGZ1bi9UZWFtUHJlZml4Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmVmYmViYjcKLS0tIC9kZXYvbnVsbAorKysgYi9kb2MvbGZ1bi9UZWFtUHJlZml4CkBAIC0wLDAgKzEsMzcgQEAKKworVGVhbVByZWZpeCgpCisKKworRlVOS1RJT046CisgICAgICAgIHN0cmluZyBUZWFtUHJlZml4KCkKKworREVGSU5JRVJUIElOOgorICAgICAgICAvc3RkL2xpdmluZy90ZWFtLmMKKworQVJHVU1FTlRFOgorICAgICAgICBrZWluZQorCitCRVNDSFJFSUJVTkc6CisgICAgICAgIEVyZ2lidCBUZWFtLVByZWZpeCBlaW5lcyBTcGllbGVycy4KKworUlVFQ0tHQUJFV0VSVDoKKyAgICAgICAgIltUZWFtIFRlYW1uYW1lXSAiLCBmYWxscyBkZXIgU3BpZWxlciBpbiBlaW5lbSBUZWFtIGlzdCwKKyAgICAgICAgIiIgICAgICAgICAgICAgICAgICBzb25zdC4KKworQkVNRVJLVU5HRU46CisKK1NJRUhFIEFVQ0g6CisgICAgICAgIFVlYmVyc2ljaHQ6IHRlYW1rYW1wZgorICAgICAgICBQcm9wZXJ0aWVzOiBQX1RFQU0sIFBfQVNTT0NfTUVNQkVSUywgUF9URUFNX0FUVEFDS19DTUQsCisgICAgICAgICAgICAgICAgICAgIFBfVEVBTV9BVVRPRk9MTE9XLCBQX1RFQU1fQ09MT1JTLCBQX1RFQU1fTEVBREVSLAorICAgICAgICAgICAgICAgICAgICBQX1RFQU1fTkVXTUVNQkVSLCBQX1RFQU1fV0FOVEVEX1JPVywgUF9URUFNX1dJTVBZX1JPVworICAgICAgICBCZXdlZ3VuZzogICBJc1RlYW1Nb3ZlLCBUZWFtRmxlZQorICAgICAgICBNaXRnbGllZGVyOiBJc1RlYW1MZWFkZXIsIFRlYW1NZW1iZXJzCisgICAgICAgIEthbXBmOiAgICAgIEFzc29jTWVtYmVyLCBEZUFzc29jTWVtYmVyLCBJbnNlcnRFbmVteVRlYW0sCisgICAgICAgICAgICAgICAgICAgIFNlbGVjdE5lYXJFbmVteSwgU2VsZWN0RmFyRW5lbXkKKyAgICAgICAgUG9zaXRpb25lbjogUHJlc2VudFBvc2l0aW9uLCBQcmVzZW50Um93cywgUHJlc2VudEVuZW15Um93cywKKyAgICAgICAgICAgICAgICAgICAgUHJlc2VudFRlYW1Qb3NpdGlvbiwgU3dhcFJvd3MKKyAgICAgICAgU29uc3RpZ2VzOiAgdGVhbWthbXBmX2ludGVybgorCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCitMYXN0IG1vZGlmaWVkOiAxNi0wOC0yMDEwLCBHYWJ5bG9uCmRpZmYgLS1naXQgYS9kb2MvbGZ1bi9UZWxlcG9ydCBiL2RvYy9sZnVuL1RlbGVwb3J0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmI5MDJkMDcKLS0tIC9kZXYvbnVsbAorKysgYi9kb2MvbGZ1bi9UZWxlcG9ydApAQCAtMCwwICsxLDI4IEBACitUZWxlcG9ydCgpCisKK0ZVTktUSU9OOgorICAgIGludCBUZWxlcG9ydChzdHJpbmcgemllbCkKKworQVJHVU1FTlRFOgorICAgIHppZWw6IE51bW1lciBkZXMgU2VoZXJ0b3JzLCB6dSBkZW0gdGVsZXBvcnRpZXJ0IHdlcmRlbiBzb2xsLgorCitCRVNDSFJFSUJVTkc6CisgICAgVGVsZXBvcnRpZXJ0IGRlbiBTZWhlciAodGhpc19wbGF5ZXIoKSkgenUgZGVtIFRvciBtaXQgZGVyIGFuZ2VnZWJlbmVuCisgICAgTnVtbWVyLiBGYWxscyBrZWluZSBOdW1tZXIgYW5nZWdlYmVuIHdpcmQsIHdpcmQgbWl0IFNob3dEb29ycygpIGRpZQorICAgIExpc3RlIGRlciBiZWthbm50ZW4gVG9yZSBhbmdlemVpZ3QgdW5kIGF1ZiBkaWUgRWluZ2FiZSBlaW5lciBOdW1tZXIKKyAgICBnZXdhcnRldC4KKworUlVFQ0tHQUJFV0VSVDoKKyAgICAwLCBmYWxscyBkZXIgU2VoZXIgbmljaHQgbmViZW4gZWluZW0gVG9yIHN0ZWh0LCBkYXNzIGVyIGtlbm50LgorICAgIDEgIHNvbnN0LgorCitCRU1FUktVTkdFTjoKKyAgICBEZXIgU2VoZXIgbXVzcyBpbiBlaW5lbSBSYXVtIHN0ZWhlbiwgaW4gZGVtIHNpY2ggZWluIFNlaGVydG9yIGJlZmluZGV0LAorICAgIGRhc3MgZXIga2VubnQuIERlciBTZWhlciBtdXNzIGF1Y2ggZGFzIGFuZ2VnZWJlbmUgWmllbCBrZW5uZW4uCisgICAgRGllc2UgRnVua3Rpb24gd2lyZCB2b24gL2Qvc2VoZXIvcG9ydGFsZS9zZWhlcnRvcm1hc3RlciBkZWZpbmllcnQuCisKK0JFSVNQSUVMRToKKyAgICAvZC9zZWhlci9wb3J0YWxlL3NlaGVydG9ybWFzdGVyLT5UZWxlcG9ydCgxKQorCitTSUVIRSBBVUNIOgorICAgIERpc2NvdmVyRG9vciwgRG9vcklzS25vd24sIFNob3dEb29ycywgR2V0RG9vcnNNYXBwaW5nCmRpZmYgLS1naXQgYS9kb2MvbGZ1bi9UZXN0SWdub3JlIGIvZG9jL2xmdW4vVGVzdElnbm9yZQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4zZTY2NGMwCi0tLSAvZGV2L251bGwKKysrIGIvZG9jL2xmdW4vVGVzdElnbm9yZQpAQCAtMCwwICsxLDY2IEBACitUZXN0SWdub3JlKCkKKworRlVOS1RJT046CisgICAgIHB1YmxpYyBpbnQgVGVzdElnbm9yZShzdHJpbmd8c3RyaW5nKiBhcmcpCisKK0RFRklOSUVSVCBJTjoKKyAgICAgL3N0ZC9wbGF5ZXIvY29tbS5jCisKK0FSR1VNRU5URToKKyAgICAgYXJnCisgICAgICAgICBTdHJpbmcgb2RlciBBcnJheSB2b24gU3RyaW5ncywgZGllIGdldGVzdGV0IHdlcmRlbiBzb2xsZW4sCisgICAgICAgICBGb3JtYXQgamV3ZWlsczogW3NwaWVsZXJdLmFrdGlvblsucXVhbGlmaXppZXJlcl0KKworUlVlQ0tHQUJFV0VSVDoKKyAgICAgMCwgd2VubiBhcmcgbmljaHQgaWdub3JpZXJ0IHdpcmQKKyAgICAgTVNHX0lHTk9SRUQsIHdlbm4gKG1pbi4gZWluIEVsZW1lbnQgdm9uKSBhcmcgaWdub3JpZXJ0IHdpcmQKKworQkVTQ0hSRUlCVU5HOgorICAgICBFcyB3aXJkIGdlcHJ1ZWZ0LCBvYiBkZXIgU3BpZWxlciBpcmdlbmRlaW5lbiBFaW50cmFnIGF1ZiBzZWluZXIgTGlzdGUKKyAgICAgaGF0LCBkZXIgZGF6dSBmdWVocnQsIGRhc3MgPGFyZz4gaWdub3JpZXJ0IHdpcmQuIEhpZXJiZWkga29tbWVuIGplIG5hY2gKKyAgICAgZGVuIEFuZ2FiZW4gaW4gPGFyZz4gZm9sZ2VuZGUgUmVnZWxuIHp1bSBUcmFnZW46CisgICAgIDEpIHNwaWVsZXIKKyAgICAgICAgV2lyZCBkZXIgU3BpZWxlciBpZ25vcmllcnQ/CisgICAgIDIpIC5ha3Rpb24KKyAgICAgICAgSWdub3JpZXJ0IGRlciBTcGllbGVyIC5ha3Rpb24sIGQuaC4gZGllIEFrdGlvbiBrb21wbGV0dCAoT0hORQorICAgICAgICBRdWFsaWZpemllcmVyKT8KKyAgICAgMykgc3BpZWxlci5ha3Rpb24KKyAgICAgICAgSWdub3JpZXJ0IGRlciBTcGllbGVyIHNwaWVsZXIsIC5ha3Rpb24gb2RlciBzcGllbGVyLmFrdGlvbj8KKyAgICAgNCkgc3BpZWxlci5ha3Rpb24ucXVhbGlmaXppZXJlcgorICAgICAgICBJZ25vcmllcnQgZGVyIFNwaWVsZXIgc3BpZWxlciwgLmFrdGlvbiwgc3BpZWxlci5ha3Rpb24gb2RlcgorICAgICAgICBzcGllbGVyLmFrdGlvbi5xdWFsaWZpemllcmVyPworICAgICA1KSAuYWt0aW9uLnF1YWxpZml6aWVyZXIKKyAgICAgICAgSWdub3JpZXJ0IGRlciBTcGllbGVyIC5ha3Rpb24gb2RlciAuYWt0aW9uLnF1YWxpZml6aWVyZXI/CisKKyAgICAgRGEgVGVzdElnbm9yZSgpIGRhbWl0IGR1cmNoYXVzIGV0d2FzIGF1ZndlbmRpZ2VyIHNlaW4ga2Fubiwgc29sbHRlCisgICAgIG1hbiBkaWVzIG5pY2h0IHVubm9ldGlnIG9mdCBhdWZydWZlbi4gKEJyYXVjaHQgbWFuIGRhcyBFcmdlYm5pcyB6LkIuCisgICAgIGt1cnogc3BhZXRlciBub2NobWFsLCBrb2VubnRlIG1hbiBkYXMgRXJnZWJuaXMgc3BlaWNoZXJuLikgV2lyZCBkZXIKKyAgICAgUXVhbGlmaXppZXJlciBuaWNodCBnZWJyYXVjaHQsIHNvbGx0ZSBtYW4gaWhuIHdlZ2xhc3Nlbi4KKworQkVJU1BJRUw6CisgICAgIGlmICghdGhpc19wbGF5ZXIoKS0+VGVzdElnbm9yZSgiYW5keSIpKQorICAgICAgIHRlbGxfb2JqZWN0KHRoaXNfcGxheWVyKCksICJBbmR5IHRlaWx0IERpciBtaXQ6IEhhbGxvIVxuIik7CisKKyAgICAgLy8gQmVpc3BpZWwgZnVlciBlaW5lIElnbm9yZS1DaGVjayBmdWVyIEFrdGlvbiAoa3JhdHplbikgZnVlciBlaW5lbgorICAgICAvLyBTcGllbGVyICh0aGlzX3BsYXllcigpKSBhbiBlaW5lbSBhbmRlcmVuIFNwaWVsZXIgKHRhcmdldCkKKyAgICAgaWYgKCF0YXJnZXQtPlRlc3RJZ25vcmUoICh7Z2V0dWlkKHRoaXNfcGxheWVyKCkpICsgIi5rcmF0emUiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBnZXR1aWQodGhpc19wbGF5ZXIoKSkgKyAiLmtyYXR6In0pICkpCisgICAgIHsKKyAgICAgICB0ZWxsX29iamVjdCh0YXJnZXQsIHRoaXNfcGxheWVyKCktPk5hbWUoKSsiIGtyYXR6dCBkaWNoLlxuIik7CisgICAgICAgdGVsbF9vYmplY3QodGhpc19wbGF5ZXIoKSwgIkR1IGtyYXR6dCAiK3RhcmdldC0+TmFtZSgpKyIuXG4iKTsKKyAgICAgfQorICAgICBlbHNlCisgICAgICAgdGVsbF9vYmplY3QodGhpc19wbGF5ZXIoKSwgdGFyZ2V0LT5OYW1lKCkrIiBpZ25vcmllcnQgZGljaC5cbiIpOworCisgICAgIC8vIGFsbHVtZmFzc2VuZGVyIElnbm9yaWVyLUNoZWNrIGluIGVpbmVyIEdpbGRlIChLbGVydXMpIGF1ZgorICAgICAvLyBlaW5lIEFrdGlvbiAoa3VyaWVyZW4pIGZ1ZXIgZWluZW4gYmVzdGltbXRlbiBTcGllbGVyIChkZW4gY2FzdGVyKQorICAgICAvLyBhbiBlaW5lbSB6dSBrdXJpZXJlbmRlbiBTcGllbGVyICh0YXJnZXQpCisgICAgIGlmICh0YXJnZXQtPlRlc3RJZ25vcmUoZ2V0dWlkKGNhc3RlcikrIi5rdXJpZXJlLmtsZXJ1cyIpKQorICAgICAgIHRlbGxfb2JqZWN0KGNhc3RlciwgYnJlYWtfc3RyaW5nKAorICAgICAgICAgdGFyZ2V0LT5OYW1lKCkrIiBpZ25vcmllcnQgZGVpbmVuIFZlcnN1Y2guIiwgNzgpKTsKKworU0lFSEUgQVVDSDoKKyAgICAgUF9JR05PUkUsIEFkZElnbm9yZSwgUmVtb3ZlSWdub3JlLCBUZXN0SWdub3JlU2ltcGxlLCAvc3RkL3BsYXllci9jb21tLmMKKworMjYuMDQuMjAxNCBaZXNzdHJhCisKZGlmZiAtLWdpdCBhL2RvYy9sZnVuL1Rlc3RJZ25vcmVTaW1wbGUgYi9kb2MvbGZ1bi9UZXN0SWdub3JlU2ltcGxlCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjU0MjYzMmUKLS0tIC9kZXYvbnVsbAorKysgYi9kb2MvbGZ1bi9UZXN0SWdub3JlU2ltcGxlCkBAIC0wLDAgKzEsNTUgQEAKK1Rlc3RJZ25vcmVTaW1wbGUoKQorCitGVU5LVElPTjoKKyAgICAgcHVibGljIGludCBUZXN0SWdub3JlU2ltcGxlKHN0cmluZyAqYXJnKQorCitERUZJTklFUlQgSU46CisgICAgIC9zdGQvcGxheWVyL2NvbW0uYworCitBUkdVTUVOVEU6CisgICAgIGFyZworICAgICAgICAgTGlzdGUgdm9uIFN0cmluZ3MsIGRpZSBnZXRlc3RldCB3ZXJkZW4gc29sbGVuCisKK0JFU0NIUkVJQlVORzoKKyAgICAgVGVzdElnbm9yZVNpbXBsZSgpIHBydWVmdCwgb2IgZGVyIFNwaWVsZXIgbWluLiBlaW5lbiBkZXIgdWViZXJnZWJlbmVuCisgICAgIEVpbnRyYWVnZSBhdWYgc2VpbmVyIElnbm9yaWVyZWxpc3RlIGhhdC4KKyAgICAgRmFsbHMgbWFuIG1laHJlcmUgRWludHJhZWdlIHBydWVmZW4gbXVzcy9tb2VjaHRlLCBpc3QgZXMgc2NobmVsbGVyLCBhbGxlCisgICAgIEVpbnRyYWVnZSBpbiBlaW5lbSB6dSB1ZWJlcmdlYmVuIGFuc3RhdHQgZnVlciBqZWRlbiBlaW56ZWxuIAorICAgICBUZXN0SWdub3JlU2ltcGxlKCkgYXVmenVydWZlbi4KKworUlVlQ0tHQUJFV0VSVDoKKyAgICAgMSwgZmFsbHMgZXMgbWluZGVzdGVucyBlaW5lIFVlYmVyZWluc3RpbW11bmdlbiB2b24gYXJnIHVuZCBkZXIKKyAgICAgSWdub3JpZXJlLUxpc3RlIGRlcyBTcGllbGVycyBnaWJ0LgorICAgICAwLCBzb25zdC4KKworQkVJU1BJRUw6CisgICAgIGlmICghdGhpc19wbGF5ZXIoKS0+VGVzdElnbm9yZVNpbXBsZSgoeyJhbmR5In0pKSkKKyAgICAgICB0ZWxsX29iamVjdCh0aGlzX3BsYXllcigpLCAiQW5keSB0ZWlsdCBEaXIgbWl0OiBIYWxsbyFcbiIpOworCisgICAgIC8vIEJlaXNwaWVsIGZ1ZXIgZWluZSBJZ25vcmUtQ2hlY2sgZnVlciBBa3Rpb24gKGtyYXR6ZW4pIGZ1ZXIgZWluZW4KKyAgICAgLy8gU3BpZWxlciAodGhpc19wbGF5ZXIoKSkgYW4gZWluZW0gYW5kZXJlbiBTcGllbGVyICh0YXJnZXQpCisgICAgIGlmICghdGFyZ2V0LT5UZXN0SWdub3JlU2ltcGxlKGdldHVpZCh0aGlzX3BsYXllcigpKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ2V0dWlkKHRoaXNfcGxheWVyKCkpKyIua3JhdHoiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBnZXR1aWQodGhpc19wbGF5ZXIoKSkrIi5rcmF0emUiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiLmtyYXR6IiwgIi5rcmF0emUifSkpKSB7CisgICAgICAgdGVsbF9vYmplY3QodGFyZ2V0LCB0aGlzX3BsYXllcigpLT5OYW1lKCkrIiBrcmF0enQgZGljaC5cbiIpOworICAgICAgIHRlbGxfb2JqZWN0KHRoaXNfcGxheWVyKCksICJEdSBrcmF0enQgIit0YXJnZXQtPk5hbWUoKSsiLlxuIik7CisgICAgIH0gZWxzZQorICAgICAgIHRlbGxfb2JqZWN0KHRoaXNfcGxheWVyKCksIHRhcmdldC0+TmFtZSgpKyIgaWdub3JpZXJ0IGRpY2guXG4iKTsKKworICAgICAvLyBhbGx1bWZhc3NlbmRlciBJZ25vcmllci1DaGVjayBpbiBlaW5lciBHaWxkZSAoS2xlcnVzKSBhdWYKKyAgICAgLy8gZWluZSBBa3Rpb24gKGt1cmllcmVuKSBmdWVyIGVpbmVuIGJlc3RpbW10ZW4gU3BpZWxlciAoZGVuIGNhc3RlcikKKyAgICAgLy8gYW4gZWluZW0genUga3VyaWVyZW5kZW4gU3BpZWxlciAodGFyZ2V0KQorICAgICBpZiAodGFyZ2V0LT5UZXN0SWdub3JlU2ltcGxlKCh7Z2V0dWlkKGNhc3RlciksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBnZXR1aWQoY2FzdGVyKSsiLmt1cmllcmUiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ2V0dWlkKGNhc3RlcikrIi5rdXJpZXJlLmtsZXJ1cyIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiLmt1cmllcmUiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIi5rdXJpZXJlLmtsZXJ1cyJ9KSkpCisgICAgICAgdGVsbF9vYmplY3QoY2FzdGVyLCBicmVha19zdHJpbmcoCisgICAgICAgICB0YXJnZXQtPk5hbWUoKSsiIGlnbm9yaWVydCBkZWluZW4gVmVyc3VjaC4iLCA3OCkpOworCitTSUVIRSBBVUNIOgorICAgICBQX0lHTk9SRSwgQWRkSWdub3JlLCBSZW1vdmVJZ25vcmUsIFRlc3RJZ25vcmUsIC9zdGQvcGxheWVyL2NvbW0uYworCisyNi4wNC4yMDE0IFplc3N0cmEKKwpkaWZmIC0tZ2l0IGEvZG9jL2xmdW4vVGVzdExpbWl0VmlvbGF0aW9uIGIvZG9jL2xmdW4vVGVzdExpbWl0VmlvbGF0aW9uCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjkzNDQyOTkKLS0tIC9kZXYvbnVsbAorKysgYi9kb2MvbGZ1bi9UZXN0TGltaXRWaW9sYXRpb24KQEAgLTAsMCArMSwyMSBAQAorVGVzdExpbWl0VmlvbGF0aW9uKCkKK0ZVTktUSU9OOgorICAgICAgc3RhdHVzIFRlc3RMaW1pdFZpb2xhdGlvbihtYXBwaW5nIGNoZWNrKQorCitERUZJTklFUlQgSU46CisgICAgIC9zdGQvbGl2aW5nL2F0dHJpYnV0ZXMuYworDQorUEFSQU1FVEVSOg0KKyAgICAgY2hlY2sJLSBNYXBwaW5nIG1pdCBBdHRyaWJ1dGVuOiAoWzxhdHRyPjo8d2VydD5dKQ0KKworQkVTQ0hSRUlCVU5HOgorICAgICBQcnVlZnQsIG9iIGRpZSBTdW1tZSBkZXIgaW4gY2hlY2sgZW50aGFsdGVuZW4gTW9kaWZpa2F0b3JlbiBkaWUgU3VtbWUKKyAgICAgYWxsZXIgTW9kaWZpa2F0b3JlbiBpbSBTcGllbGVyIHVlYmVyIGRlbiB6dWdlbGFzc2VuZW4gR3Jlbnp3ZXJ0IGhlYnQuCisgICAgIAorU0lFSEUgQVVDSDoKKyAgICAgUXVlcnlBdHRyaWJ1dGUoKSwgUXVlcnlSZWFsQXR0cmlidXRlKCksIFF1ZXJ5QXR0cmlidXRlT2Zmc2V0KCksDQorICAgICBTZXRBdHRyKCksIFNldEF0dHJpYnV0ZSgpLCBTZXRSZWFsQXR0cmlidXRlKCksIFVwZGF0ZUF0dHJpYnV0ZXMoKSwNCisgICAgIFBfQVRUUklCVVRFUywgUF9BVFRSSUJVVEVTX09GRlNFVFMsIFBfQVRUUklCVVRFU19NT0RJRklFUiwNCisgICAgIFBfWF9BVFRSX01PRCwgUF9NX0FUVFJfTU9ELCAvc3RkL2xpdmluZy9hdHRyaWJ1dGVzLmMNCisKKzEzLkp1bi4yMDA0LCBNdWFkaWIKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9kb2MvbGZ1bi9UcmlnZ2VyRXZlbnQgYi9kb2MvbGZ1bi9UcmlnZ2VyRXZlbnQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uN2IwMDg5ZgotLS0gL2Rldi9udWxsCisrKyBiL2RvYy9sZnVuL1RyaWdnZXJFdmVudApAQCAtMCwwICsxLDU5IEBACisKK0ZVTktUSU9OOgorICAgICB2YXJhcmdzIGludCBUcmlnZ2VyRXZlbnQoc3RyaW5nIGVpZCwgbWl4ZWQgZGF0YSk7CisKK0RFRklOSUVSVCBJTjoKKyAgICAgL3AvZGFlbW9uL2V2ZW50ZC5jCitERUtMQVJJRVJUIElOOgorICAgICAvc3lzL2V2ZW50cy5oCisKK0FSR1VNRU5URToKKyAgICAgc3RyaW5nIGVpZCwKKyAgICAgICBEaWUgSUQgZGVzIEV2ZW50cywgZGVyIGF1c2dlbG9lc3Qgd2VyZGVuIHNvbGwuCisgICAgICAgRGEgZGllc2VyIFN0cmluZyBmdWVyIGFsbGUgRXZlbnRzIGpld2VpbHMgZWluZGV1dGlnIHNlaW4gbXVzcywgCisgICAgICAgZW1wZmllaGx0IGVzIHNpY2gsIGZ1ZXIgZWlnZW5lIEV2ZW50cyB6LkIuIGFscyBQcmFlZml4IGRlbiBlaWdlbmVuIAorICAgICAgIE1hZ2llcm5hbWVuIHp1IG5laG1lbiwgei5CLiAiemVzc3RyYV92dWxrYW5hdXNicnVjaCIuCisgICAgICAgQUNIVFVORzogSURzLCBkaWUgbWl0ICdldnRfbGliXycgYmVnaW5uZW4sIHNpbmQgQVVTU0NITElFU1NMSUNIIGRlcgorICAgICAgIE11ZGxpYiB2b3JiZWhhbHRlbiEKKworICAgICBtaXhlZCBkYXRhLAorICAgICAgIERhdGVuLCBkaWUgamVkZXIgTGF1c2NoZXIgdWViZXJnZWJlbiBiZWtvbW10LiBLYW5uIGVpbiBiZWxpZWJpZ2VyCisgICAgICAgRGF0ZW50eXAgc2Vpbi4gR2dmLiBlaW4gTWFwcGluZyBvZGVyIEFycmF5IGJlbnV0emVuLgorCitCRVNDSFJFSUJVTkc6CisgICAgIERlciBFdmVudCBtaXQgZGVyIElEICdlaWQnIHdpcmQgYXVzZ2Vsb2VzdC4gTWl0IGt1cnplciBWZXJ6b2VnZXJ1bmcKKyAgICAgKG1laXN0IDAtMnMpIHdlcmRlbiBhbGxlIGZ1ZXIgJ2VpZCcgcmVnaXN0cmllcnRlbiBMYXVzY2hlciBkdXJjaCBBdWZydWYKKyAgICAgZWluZXIgRnVua3Rpb24gaW4gaWhuZW4gaW5mb3JtaWVydDoKKyAgICAgbGlzdGVuZXItPmZ1bihlaWQsIHRyaWdnZXJvYiwgZGF0YSk7CisgICAgICd0cmlnZ2Vyb2InIGlzdCBoaWVyYmVpIGRhcyBPYmpla3QsIHdlbGNoZSBUcmlnZ2VyRXZlbnQoKSBnZXJ1ZmVuIGhhdCwKKyAgICAgJ2RhdGEnIGRhcywgd2FzIGRhcyB0cmlnZ2VybmRlIE9iamVrdGUgYWxzIERhdGVuIHdlaXRlcnZlcnRlaWxlbiBtb2VjaHRlLgorICAgICBEaWUgZWluemVsbmVuIGZ1bigpIGluIGRlbiBsYXVzY2hlbmRlbiBPYmpla3RlbiBtdWVzc2VuIHdpc3Nlbiwgd2FzIHNpZQorICAgICBtaXQgJ2RhdGEnIGFuZmFuZ2VuIHNvbGxlbi4gOy0pCisKK1JVZUNLR0FCRVdFUlQ6CisgICAgIDEgZnVlciBFcmZvbGcsIDw9MCBmdWVyIE1pc3NlcmZvbGcuCisgICAgIDEgICAtIEVyZm9sZywgRXZlbnQgJ2VpZCcgd3VyZGUgYXVzZ2Vsb2VzdC4KKyAgICAgLTEgIC0gZmFsc2NoZSBBcmd1bWVudGUgd3VyZGVuIHVlYmVyZ2ViZW4KKyAgICAgLTIgIC0gbmljaHQtb2VmZmVudGxpY2hlciBFdmVudCB1bmQgZGFzIHRyaWdnZXJuZGUgT2JqZWt0IHd1cmRlIG5pY2h0CisgICAgICAgICAgIGZ1ZXIgZGllc2VuIEV2ZW50IGZyZWlnZWdlYmVuIChtb21lbnRhbiBnaWJ0IGVzIG5vY2gga2VpbmUKKyAgICAgICAgICAgbmljaHQtb2VmZmVudGxpY2hlbiBFdmVudHMpCisgICAgIC0zICAtIEV2ZW50ICdlaWQnIGV4aXN0aWVydCBuaWNodCwgZC5oLiBlcyBnaWJ0IGtlaW5lIExhdXNjaGVyLgorICAgICAtNCAgLSBFcyBnaWJ0IHp1dmllbGUgbmljaHQgdmVyYXJiZWl0ZXRlIEV2ZW50cy4KKworQkVNRVJLVU5HRU46CisKKworQkVJU1BJRUxFOgorICAgICAxLiBFaW4gV2FlY2h0ZXIgd2lyZCBhbmdlZ3JpZmZlbjoKKyAgICAgICAgRVZFTlRELT5UcmlnZ2VyRXZlbnQoInhhbmRfaG9semZhZWxsZXJsYWdlcl9hbmdyaWZmIiwgCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChbImFuZ3JlaWZlciI6IGVuZW15LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJvcnQiOiBlbnZpcm9ubWVudCh0aGlzX29iamVjdCgpKSBdKSApOworICAgICAgICBBbGxlIGFuZGVyZW4gYW5nZW1lbGRldGVuIFdhZWNodGVyIGRlciBMYWdlcnMgd2VyZGVuIG51biBpbmZvcm1pZXJ0CisgICAgICAgIHVuZCBrb2VubmVuIGlocmVyc2VpdHMgcmVhZ2llcmVuIChkZW0gZXJzdGVuIFdhZWNodGVyIHp1aGlsZmUga29tbWVuCisgICAgICAgIG9kZXIgYXVjaCBkaWUgTGFnZXJ0b3JlIHNjaGxpZXNzZW4pLgorCitTSUVIRSBBVUNIOgorICAgICBldmVudHMsIGV2ZW50ZCwgVW5yZWdpc3RlckV2ZW50KCksIFJlZ2lzdGVyRXZlbnQoKQorCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCitMYXN0IG1vZGlmaWVkOiAxNS4wOC4yMDA3LCBaZXNzdHJhCmRpZmYgLS1naXQgYS9kb2MvbGZ1bi9VbnJlZ2lzdGVyRXZlbnQgYi9kb2MvbGZ1bi9VbnJlZ2lzdGVyRXZlbnQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMGRlMzYxYQotLS0gL2Rldi9udWxsCisrKyBiL2RvYy9sZnVuL1VucmVnaXN0ZXJFdmVudApAQCAtMCwwICsxLDQ5IEBACisKK0ZVTktUSU9OOgorICAgICBpbnQgVW5yZWdpc3RlckV2ZW50KHN0cmluZyBlaWQsIG9iamVjdCBsaXN0ZW5lcik7CisKK0RFRklOSUVSVCBJTjoKKyAgICAgL3AvZGFlbW9uL2V2ZW50ZC5jCitERUtMQVJJRVJUIElOOgorICAgICAvc3lzL2V2ZW50cy5oCisKK0FSR1VNRU5URToKKyAgICAgc3RyaW5nIGVpZCwKKyAgICAgICBEaWUgSUQgZGVzIEV2ZW50cywgdm9tIGRlbSBtYW4gc2ljaCBhYm1lbGRlbiB3aWxsLgorICAgICBvYmplY3QgbGlzdGVuZXIsCisgICAgICAgRGFzIE9iamVrdCwgZGFzIGFscyBMYXVzY2hlciBhdXNnZXRyYWdlbiB3ZXJkZW4gc29sbC4KKworQkVTQ0hSRUlCVU5HOgorICAgICBEYXMgT2JqZWt0ICdsaXN0ZW5lcicgd2lyZCBhbHMgTGF1c2NoZXIgZGllc2VzIEV2ZW50cyBhdXNnZXRyYWdlbi4gQWIKKyAgICAgZGllc2VtIE1vbWVudCB3aXJkIGVzIGJlaSBFdmVudHMgdm9tIFR5cCAnZWlkJyBuaWNodCBtZWhyIGluZm9ybWllcnQuICAgICAKKworICAgICBIYXQgZGVyIEV2ZW50ICdlaWQnIGltIEFuc2NobHVzcyBrZWluZSBMYXVzY2hlciBtZWhyLCB3aXJkIGVyIGltcGxpeml0CisgICAgIGdlbG9lc2NodC4KKworUlVlQ0tHQUJFV0VSVDoKKyAgICAgMSBmdWVyIEVyZm9sZywgPD0wIGZ1ZXIgTWlzc2VyZm9sZy4KKyAgICAgMSAgIC0gRXJmb2xnLCAnbGlzdGVuZXInIHd1cmRlIGVpbmdldHJhZ2VuLgorICAgICAtMSAgLSBmYWxzY2hlIEFyZ3VtZW50ZSB1ZWJlcmdlYmVuCisgICAgIC0yICAtICdsaXN0ZW5lcicgaXN0IG5pY2h0IGZ1ZXIgJ2VpZCcgcmVnaXN0cmllcnQuCisgICAgCitCRU1FUktVTkdFTjoKKyAgICAgV2VubiBzaWNoIGVpbiBPYmpla3Qgdm9yIFplcnN0b2VydW5nIG5pY2h0IGFibWVsZGV0LCB3aXJkIGVzIGdnZi4gYmVpbQorICAgICBuYWVjaHN0ZW4gQXVmdHJldGVuIHZvbiAnZWlkJyBhdXRvbWF0aXNjaCBhdXNnZXRyYWdlbi4KKyAgICAgRmFsbHMgQmx1ZXByaW50cyBuYWNoIE5ldWxhZGVuIG5pY2h0IGF1dG9tYXRpc2NoIGFuZ2VtZWxkZXQgc2VpbiBzb2xsZW4sCisgICAgIHNvbGx0ZW4gc2llIHNpY2ggaW0gcmVtb3ZlKCkgZXhwbGl6aXQgYWJtZWxkZW4uCisKK0JFSVNQSUVMRToKKyAgICAgMS4gRWluIE9iamVrdCBtb2VjaHRlIG5pY2h0IG1laHIgdWViZXIgU3BpZWxlcnRvZGUgaW5mb3JtaWVydCB3ZXJkZW46CisgICAgICAgICAgRVZFTlRELT5VbnJlZ2lzdGVyRXZlbnQoRVZUX0xJQl9QTEFZRVJfREVBVEgsIHRoaXNfb2JqZWN0KCkpOworCisgICAgIDIuIEVpbiBPYmpla3QgbW9lY2h0ZSBzaWNoIGJlaSBaZXJzdG9lcnVuZyBhYm1lbGRlbjoKKyAgICAgICB2YXJhcmdzIGludCByZW1vdmUoaW50IHNpbGVudCkgeworICAgICAgICAgICAuLi4KKyAgICAgICAgICAgRVZFTlRELT5VbnJlZ2lzdGVyRXZlbnQoInplc3N0cmFfdnVsa2FuYXVzYnJ1Y2giLHRoaXNfb2JqZWN0KCkpOworICAgICAgIH0KKworU0lFSEUgQVVDSDoKKyAgICAgZXZlbnRzLCBldmVudGQsIFVucmVnaXN0ZXJFdmVudCgpLCBSZWdpc3RlckV2ZW50KCkKKworLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorTGFzdCBtb2RpZmllZDogMTUuMDguMjAwNywgWmVzc3RyYQpkaWZmIC0tZ2l0IGEvZG9jL2xmdW4vVW5yZWdpc3RlckhlbHBlck5QQyBiL2RvYy9sZnVuL1VucmVnaXN0ZXJIZWxwZXJOUEMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZGUzODRmZAotLS0gL2Rldi9udWxsCisrKyBiL2RvYy9sZnVuL1VucmVnaXN0ZXJIZWxwZXJOUEMKQEAgLTAsMCArMSw0NSBAQAorVW5yZWdpc3RlckhlbHBlck5QQygpCitGVU5LVElPTjoKKyAgICAgcHVibGljIGludCBVbnJlZ2lzdGVySGVscGVyTlBDKG9iamVjdCBucGMpOworCitERUZJTklFUlQgSU46CisgICAgIC9zdGQvcGxheWVyL2NvbWJhdC5jCisKK0FSR1VNRU5URToKKyAgICAgb2JqZWN0IG5wYworICAgICAgIE9iamVrdCBkZXMgaGVsZmVuZGVuIE5QQywgZGVyIGFiZ2VtZWxkZXQgd2VyZGVuIHNvbGwuCisKK0JFU0NIUkVJQlVORzoKKyAgICAgTWl0IGRpZXNlciBGdW5rdGlvbiB3aXJkIGVpbiBlaW5lbSBTcGllbGVyIGhlbGZlbmRlciBOUEMgaW0gU3BpZWxlcgorICAgICB3aWVkZXIgYWJnZW1lbGRldCwgd2VubiBkaWVzZXIgZGVtIFNwaWVsZXIgYWIgamV0enQgbmljaHQgbWVociBoaWxmdC4KKworICAgICBXZW5uIGVpbiBIZWxmZXItTlBDIHplcnN0b2VydCB3aXJkLCBpc3QgZGVyIEF1ZnJ1ZiBuaWNodCBub2V0aWcuCisgICAgIEJsZWlidCBkYXMgT2JqZWt0IGRlcyBOUEMgYWJlciBleGlzdGVudCwgYml0dGUgYXVmIGplZGVuIEZhbGwgd2llZGVyCisgICAgIG9yZGVudGxpY2ggYWJtZWxkZW4sIGRhIGFuc29uc3RlbiBnZ2YuIGRlciBTcGllbGVyIHVubm9ldGlnIGJsb2NraWVydAorICAgICB3aXJkLgorCitSVWVDS0dBQkVXRVJUOgorICAgICAxLCB3ZW5uIGRpZSBBYm1lbGR1bmcgZXJmb2xncmVpY2ggd2FyLgorICAgICAwIHNvbnN0LCB6LkIuIHdlbm4gZGVyIE5QQyBnYXIgbmljaHQgYWxzIEhlbGZlciByZWdpc3RyaWVydCB3YXIuCisKK0JFTUVSS1VOR0VOOgorICAgICBEaWVzZSBGdW5rdGlvbiBzZXR6dCBiZWkgZGVyIEVyZm9sZyBkaWUgUHJvcGVydHkgUF9IRUxQRVJfTlBDIGluIDxucGM+CisgICAgIGF1ZiAwLgorCitCRUlTUElFTEU6CisgICAgIDEuIEVpbiBOUEMsIGRlciBkZW0gU3BpZWxlciBuaWNodCBtZWhyIGhlbGZlbiB3aWxsIHVuZCBub3JtYWxlcndlaXNlbiBpbQorICAgICAgICBSYXVtIHZlcmJsZWliZW4gc29sbDoKKyAgICAgdGVsbF9vYmplY3Qoc3BpZWxlciwgIkljaCBtYWcgRGljaCBuaWNodCBtZWhyLCBEdSBiaXN0IGRvb2YhXG4iKTsKKyAgICAgaWYgKHNwaWVsZXItPlVucmVnaXN0ZXJIZWxwZXJOUEModGhpc19vYmplY3QoKSkgIT0gMSkgeworICAgICAgIC8vIGRhcyBpc3QgamEgYmxvZWQuLi4KKyAgICAgICByZW1vdmUoMCk7CisgICAgIH0KKyAgICAgZWxzZSB7CisgICAgICAgdGVsbF9yb29tKGVudmlyb25tZW50KCksCisgICAgICAgICAgIE5hbWUoKSsiIGRyZWh0ICIgK3NwaWVsZXItPk5hbWUoV0VNKSArICIgc2NobW9sbGVuZCBkZW4gUnVlY2tlbiAiCisgICAgICAgICAgICJ6dS5cbiIpOworICAgICB9CisKK1NJRUhFIEFVQ0g6CisgICAgVW5yZWdpc3RlckhlbHBlck5QQygpCisgICAgUF9IRUxQRVJfTlBDCmRpZmYgLS1naXQgYS9kb2MvbGZ1bi9VbnJlZ2lzdGVySGVscGVyT2JqZWN0IGIvZG9jL2xmdW4vVW5yZWdpc3RlckhlbHBlck9iamVjdApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5lZWZkODRlCi0tLSAvZGV2L251bGwKKysrIGIvZG9jL2xmdW4vVW5yZWdpc3RlckhlbHBlck9iamVjdApAQCAtMCwwICsxLDQ3IEBACitGVU5LVElPTjoKKyAgICAgaW50IFVucmVnaXN0ZXJIZWxwZXJPYmplY3Qob2JqZWN0IGhlbHBlciwgaW50IHR5cGUpOworCitERUZJTklFUlQgSU46CisgICAgIC9zdGQvbGl2aW5nL2hlbHBlcnMuYworCitBUkdVTUVOVEU6CisgICAgIG9iamVjdCBoZWxwZXIKKyAgICAgICBEYXMgT2JqZWt0LCBkYXMgYWxzIEhpbGZzb2JqZWt0IGRlcmVnaXN0cmllcnQgd2VyZGVuIHNvbGwuCisgICAgIGludCB0eXBlCisgICAgICAgSGVsZmVydHlwLCBlaW5lciBkZXIgaW4gL3N5cy9saXZpbmcvaGVscGVycy5oIGRlZmluaWVydGVuIFR5cGVuOgorICAgICAgIC0gSEVMUEVSX1RZUEVfQUVSSUFMIGZ1ZXIgZGllIEZsdWctL1NlZ2VsdW50ZXJzdHVldHp1bmcKKyAgICAgICAtIEhFTFBFUl9UWVBFX0FRVUFUSUMgZnVlciBUYXVjaHVudGVyc3R1ZXR6dW5nCisKK0JFU0NIUkVJQlVORzoKKyAgICAgRGFzIGFscyBIaWxmc29iamVrdCBmdWVyIGJlc3RpbW10ZSBBa3Rpdml0YWV0ZW4gd2llIHp1bSBCZWlzcGllbCBUYXVjaGVuCisgICAgIG9kZXIgRmxpZWdlbiBiZWkgZWluZW0gTGViZXdlc2VuIHJlZ2lzdHJpZXJ0ZSBPYmpla3QgImhlbHBlciIgbWVsZGV0CisgICAgIHNpY2ggYmVpIGRpZXNlbSBhYi4KKyAgICAgSGlud2VpczogZnVlciBlaW5lIHRlbXBvcmFlciBndWVsdGlnZSAiTmljaHQtWnVzdGFlbmRpZ2tlaXQiIGthZW1lIGF1Y2gKKyAgICAgaW4gRnJhZ2UsIGluIGRpZXNlciBaZWl0IGVpbmZhY2ggIjAiIHp1cnVlY2t6dWdlYmVuLCBzdGF0dCBzaWNoCisgICAgIGtvbXBsZXR0IGFienVtZWxkZW4uCisKK1JVRUNLR0FCRVdFUlRFOgorICAgICAgMSAgT2JqZWt0IHd1cmRlIGVyZm9sZ3JlaWNoIGF1c2dldHJhZ2VuIChIRUxQRVJfU1VDQ0VTUykKKyAgICAgLTEgIGFuZ2VnZWJlbmVzIEhpbGZzb2JqZWt0IGV4aXN0aWVydCBuaWNodCAoSEVMUEVSX05PX0NBTExCQUNLX09CSkVDVCkKKyAgICAgLTMgIGFuZ2VnZWJlbmVzIEhpbGZzb2JqZWt0IHdhciBnYXIgbmljaHQgYW5nZW1lbGRldAorICAgICAgICAgKEhFTFBFUl9OT1RISU5HX1RPX1VOUkVHSVNURVIpCisKK0JFSVNQSUVMOgorICAgICBFaW5lIGx1ZnRnZWZ1ZWxsdGUgQmxhc2UgaGF0dGUgc2ljaCBhbHMgVGF1Y2gtSGVsZmVyIGFtIFNwaWVsZXIKKyAgICAgYW5nZW1lbGRldCwgaXN0IGpldHp0IGFiZXIgdmVyYnJhdWNodCB1bmQgbWVsZGV0IHNpY2ggZGFoZXIgYWI6CisKKyAgICAgLy8gQXVzdHJhZ2VuIGltIFNwaWVsZXJvYmpla3QKKyAgICAgdm9pZCBCbGFzZUF1c3RyYWdlbigpIHsKKyAgICAgICBbLi4uXQorICAgICAgIGlmICggVFAtPlVucmVnaXN0ZXJIZWxwZXJPYmplY3QoTUUsIEhFTFBFUl9UWVBFX0FRVUFUSUMpCisgICAgICAgICAgICA9PSBIRUxQRVJfU1VDQ0VTUyApCisgICAgICAgICByZW1vdmUoKTsKKyAgICAgfQorCitTSUVIRSBBVUNIOgorICAgICBGdW5rdGlvbmVuOiAgUmVnaXN0ZXJIZWxwZXJPYmplY3QoKQorICAgICBQcm9wZXJ0aWVzOiAgUF9IRUxQRVJfT0JKRUNUUywgUF9BRVJJQUxfSEVMUEVSUywgUF9BUVVBVElDX0hFTFBFUlMKKyAgICAgU29uc3RpZ2VzOiAgIC9zeXMvbGl2aW5nL2hlbHBlcnMuaAorCisxOS4wMi4yMDEzIEFyYXRob3JuCisKZGlmZiAtLWdpdCBhL2RvYy9sZnVuL1Vud2VhciBiL2RvYy9sZnVuL1Vud2VhcgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi42MjRjN2ZjCi0tLSAvZGV2L251bGwKKysrIGIvZG9jL2xmdW4vVW53ZWFyCkBAIC0wLDAgKzEsMzggQEAKK1Vud2VhcigpCitGVU5LVElPTjoKKyAgICAgcHVibGljIGludCBVbndlYXIob2JqZWN0IG9iKSAKKworREVGSU5JRVJUIElOOgorICAgICAvc3RkL2xpdmluZy9jbG90aGluZy5jCisKK0FSR1VNRU5URToKKyAgICAgb2JqZWN0IG9iCisgICAgICAgRGllIFJ1ZXN0dW5nIG9kZXIgS2xlaWR1bmcsIGRpZSBhdXNnZXpvZ2VuIHdpcmQuCisKK0JFU0NIUkVJQlVORzoKKyAgICAgRGFzIExlYmV3ZXNlbiwgaW4gZGVtIGRpZXNlIEZ1bmt0aW9uIGdlcnVmZW4gd2lyZCwgemllaHQgZGllIFJ1ZXN0dW5nCisgICAgIG9kZXIgZGFzIEtsZWlkdW5nc3N0dWVjayA8b2I+IGF1cy4KKyAgICAgQUJFUjogJ0F1c3ppZWhlbicgYmVkZXV0ZXQgaW4gZGllc2VtIEtvbnRleHQgbGVkaWdsaWNoLCBkYXNzIGRpZQorICAgICBSdWVzdHVuZy9LbGVpZHVuZyBhdXMgUF9BUk1PVVJTIGJ6dy4gUF9DTE9USElORyBhdXNnZXRyYWdlbiB3aXJkLiBFcworICAgICBmaW5kZW4genVyIFplaXQga2VpbmUgUHJ1ZWZ1bmdlbiBzdGF0dCwgb2IgZGFzIExlYmV3ZXNlbiBkZW4gR2VnZW5zdGFuZAorICAgICB1ZWJlcmhhdXB0IGF1c3ppZWhlbiBrYW5uLiBHZW5hdXNvd2VuaWcgd2VyZGVuIEZ1bmt0aW9uZW4gd2llCisgICAgIEluZm9ybVVud2VhcigpL1JlbW92ZUZ1bmMoKSBnZXJ1ZmVuIG9kZXIgZXR3YWlnZSBTdGF0LUJvbmkgZGVha3RpdmllcnQuCisKKyAgICAgRGllIEZ1bmt0aW9uIGlzdCBudXIgZGF6dSBnZWRhY2h0LCBpbSBadWdlIGRlcyBBdXN6aWVoZW5zIGVpbmVzIE9iamVrdHMKKyAgICAgdm9uIGRpZXNlbSBpbSBMZWJld2VzZW4gZ2VydWZlbiB6dSB3ZXJkZW4uCisKK1JVZUNLR0FCRVdFUlQ6CisgICAgIDEsIHdlbm4gZGFzIEF1c3ppZWhlbiBlcmZvbGdyZWljaCB3YXIuCisgICAgIDAgc29uc3QuCisKK0JFTUVSS1VOR0VOOgorICAgICBOaWNodCB2b24gSGFuZCBhdWZydWZlbiwgZXMgc2VpIGRlbm4gbWFuIHdlaXNzIGdlbmF1LCB3YXMgbWFuIHR1dC4gVW5kIGFtCisgICAgIGJlc3RlbiBhdWNoIGRhbm4gbmljaHQuCisKK1NJRUhFIEFVQ0g6CisgICAgIFdlYXIoKSwgV2VhckFybW91cigpLCBXZWFyQ2xvdGhpbmcoKSwgVW53ZWFyQXJtb3VyKCksIFVud2VhckNsb3RoaW5nKCkKKyAgICAgUF9DTE9USElORywgUF9BUk1PVVJTCisgICAgIEZpbHRlckNsb3RoaW5nKCksIEZpbHRlckFybW91cnMoKQorCitaVUxFVFpUIEdFQWVOREVSVDoKKzE0LjAzLjIwMDksIFplc3N0cmEKZGlmZiAtLWdpdCBhL2RvYy9sZnVuL1Vud2VhckFybW91ciBiL2RvYy9sZnVuL1Vud2VhckFybW91cgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44NmI1NWRhCi0tLSAvZGV2L251bGwKKysrIGIvZG9jL2xmdW4vVW53ZWFyQXJtb3VyCkBAIC0wLDAgKzEsMzggQEAKK1Vud2VhckFybW91cigpCitGVU5LVElPTjoKKyAgICAgcHVibGljIGludCBVbndlYXJBcm1vdXIob2JqZWN0IG9iKSAKKworREVGSU5JRVJUIElOOgorICAgICAvc3RkL2xpdmluZy9jbG90aGluZy5jCisKK0FSR1VNRU5URToKKyAgICAgb2JqZWN0IG9iCisgICAgICAgRGllIFJ1ZXN0dW5nLCBkaWUgYXVzZ2V6b2dlbiB3aXJkLgorCitCRVNDSFJFSUJVTkc6CisgICAgIERhcyBMZWJld2VzZW4sIGluIGRlbSBkaWVzZSBGdW5rdGlvbiBnZXJ1ZmVuIHdpcmQsIHppZWh0IGRpZSBSdWVzdHVuZworICAgICA8b2I+IGF1cy4KKyAgICAgQUJFUjogJ0F1c3ppZWhlbicgYmVkZXV0ZXQgaW4gZGllc2VtIEtvbnRleHQgbGVkaWdsaWNoLCBkYXNzIGRpZQorICAgICBSdWVzdHVuZy9LbGVpZHVuZyBhdXMgUF9BUk1PVVJTIGF1c2dldHJhZ2VuIHdpcmQuIEVzIGZpbmRlbiB6dXIgWmVpdAorICAgICBrZWluZSBQcnVlZnVuZ2VuIHN0YXR0LCBvYiBkYXMgTGViZXdlc2VuIGRlbiBHZWdlbnN0YW5kIHVlYmVyaGF1cHQKKyAgICAgYXVzemllaGVuIGthbm4uIEdlbmF1c293ZW5pZyB3ZXJkZW4gRnVua3Rpb25lbiB3aWUKKyAgICAgSW5mb3JtVW53ZWFyKCkvUmVtb3ZlRnVuYygpIGdlcnVmZW4gb2RlciBldHdhaWdlIFN0YXQtQm9uaSBkZWFrdGl2aWVydC4KKworICAgICBEaWUgRnVua3Rpb24gaXN0IG51ciBkYXp1IGdlZGFjaHQsIGltIFp1Z2UgZGVzIEF1c3ppZWhlbnMgZWluZXMgT2JqZWt0cworICAgICB2b24gZGllc2VtIGltIExlYmV3ZXNlbiBnZXJ1ZmVuIHp1IHdlcmRlbi4KKworUlVlQ0tHQUJFV0VSVDoKKyAgICAgMSwgd2VubiBkYXMgQXVzemllaGVuIGVyZm9sZ3JlaWNoIHdhci4KKyAgICAgMCBzb25zdC4KKworQkVNRVJLVU5HRU46CisgICAgIE5pY2h0IHZvbiBIYW5kIGF1ZnJ1ZmVuLCBlcyBzZWkgZGVubiBtYW4gd2Vpc3MgZ2VuYXUsIHdhcyBtYW4gdHV0LiBVbmQgYW0KKyAgICAgYmVzdGVuIGF1Y2ggZGFubiBuaWNodC4KKworU0lFSEUgQVVDSDoKKyAgICAgV2VhcigpLCBXZWFyQXJtb3VyKCksIFdlYXJDbG90aGluZygpLCBVbndlYXIoKSwgVW53ZWFyQ2xvdGhpbmcoKQorICAgICBQX0NMT1RISU5HLCBQX0FSTU9VUlMKKyAgICAgRmlsdGVyQ2xvdGhpbmcoKSwgRmlsdGVyQXJtb3VycygpCisKK1pVTEVUWlQgR0VBZU5ERVJUOgorMTQuMDMuMjAwOSwgWmVzc3RyYQpkaWZmIC0tZ2l0IGEvZG9jL2xmdW4vVW53ZWFyQ2xvdGhpbmcgYi9kb2MvbGZ1bi9VbndlYXJDbG90aGluZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4wNTU2NjU0Ci0tLSAvZGV2L251bGwKKysrIGIvZG9jL2xmdW4vVW53ZWFyQ2xvdGhpbmcKQEAgLTAsMCArMSwzOCBAQAorVW53ZWFyQ2xvdGhpbmcoKQorRlVOS1RJT046CisgICAgIHB1YmxpYyBpbnQgVW53ZWFyQ2xvdGhpbmcob2JqZWN0IG9iKSAKKworREVGSU5JRVJUIElOOgorICAgICAvc3RkL2xpdmluZy9jbG90aGluZy5jCisKK0FSR1VNRU5URToKKyAgICAgb2JqZWN0IG9iCisgICAgICAgRGFzIEtsZWlkdW5nc3N0dWNrLCBkYXMgYXVzZ2V6b2dlbiB3aXJkLgorCitCRVNDSFJFSUJVTkc6CisgICAgIERhcyBMZWJld2VzZW4sIGluIGRlbSBkaWVzZSBGdW5rdGlvbiBnZXJ1ZmVuIHdpcmQsIHppZWh0IGRhcworICAgICBLbGVpZHVuZ3NzdHVlY2sgPG9iPiBhdXMuCisgICAgIEFCRVI6ICdBdXN6aWVoZW4nIGJlZGV1dGV0IGluIGRpZXNlbSBLb250ZXh0IGxlZGlnbGljaCwgZGFzcyBkaWUKKyAgICAgUnVlc3R1bmcvS2xlaWR1bmcgYXVzIFBfQ0xPVEhJTkcgYXVzZ2V0cmFnZW4gd2lyZC4gRXMgZmluZGVuIHp1ciBaZWl0CisgICAgIGtlaW5lIFBydWVmdW5nZW4gc3RhdHQsIG9iIGRhcyBMZWJld2VzZW4gZGVuIEdlZ2Vuc3RhbmQgdWViZXJoYXVwdAorICAgICBhdXN6aWVoZW4ga2Fubi4gR2VuYXVzb3dlbmlnIHdlcmRlbiBGdW5rdGlvbmVuIHdpZQorICAgICBJbmZvcm1VbndlYXIoKS9SZW1vdmVGdW5jKCkgZ2VydWZlbi4KKworICAgICBEaWUgRnVua3Rpb24gaXN0IG51ciBkYXp1IGdlZGFjaHQsIGltIFp1Z2UgZGVzIEF1c3ppZWhlbnMgZWluZXMgT2JqZWt0cworICAgICB2b24gZGllc2VtIGltIExlYmV3ZXNlbiBnZXJ1ZmVuIHp1IHdlcmRlbi4KKworUlVlQ0tHQUJFV0VSVDoKKyAgICAgMSwgd2VubiBkYXMgQXVzemllaGVuIGVyZm9sZ3JlaWNoIHdhci4KKyAgICAgMCBzb25zdC4KKworQkVNRVJLVU5HRU46CisgICAgIE5pY2h0IHZvbiBIYW5kIGF1ZnJ1ZmVuLCBlcyBzZWkgZGVubiBtYW4gd2Vpc3MgZ2VuYXUsIHdhcyBtYW4gdHV0LiBVbmQgYW0KKyAgICAgYmVzdGVuIGF1Y2ggZGFubiBuaWNodC4KKworU0lFSEUgQVVDSDoKKyAgICAgV2VhcigpLCBXZWFyQXJtb3VyKCksIFdlYXJDbG90aGluZygpLCBVbndlYXIoKSwgVW53ZWFyQXJtb3VyKCkKKyAgICAgUF9DTE9USElORywgUF9BUk1PVVJTCisgICAgIEZpbHRlckNsb3RoaW5nKCksIEZpbHRlckFybW91cnMoKQorCitaVUxFVFpUIEdFQWVOREVSVDoKKzE0LjAzLjIwMDksIFplc3N0cmEKZGlmZiAtLWdpdCBhL2RvYy9sZnVuL1Vud2llbGRGdW5jIGIvZG9jL2xmdW4vVW53aWVsZEZ1bmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOWU0OTI5YwotLS0gL2Rldi9udWxsCisrKyBiL2RvYy9sZnVuL1Vud2llbGRGdW5jCkBAIC0wLDAgKzEsNTIgQEAKK1Vud2llbGRGdW5jKCkKKworRlVOS1RJT046CisgICAgIGludCBVbndpZWxkRnVuYyhvYmplY3Qgd2VhcG9uLCBpbnQgaW5mbywgb2JqZWN0IHVzZXIpOworCitERUZJTklFUlQgSU46CisgICAgIGVpZ2VuZW4gT2JqZWt0ZW4sIGZ1ZXIgL3N0ZC93ZWFwb24vY29tYmF0LmMKKworQVJHVU1FTlRFOgorICAgICB3ZWFwb24gKG9iamVjdCkKKyAgICAgICAgICBEaWUgV2FmZmUsIGRpZSB3ZWdnZXN0ZWNrdCB3ZXJkZW4gc29sbC4KKyAgICAgaW5mbyAoaW50KQorICAgICAgICAgIEJlaSAoaW5mbyZNX1NJTEVOVCkgd2lyZCBrZWluZSBNZWxkdW5nIHVlYmVyIGRhcyBXZWdzdGVja2VuCisgICAgICAgICAgYXVzZ2VnZWJlbi4KKyAgICAgICAgICBCZWkgKGluZm8mTV9OT0NIRUNLKSB3aXJkIGRpZSBXYWZmZSBhdWNoIHdlZ2dlc3RlY2t0LCB3ZW5uCisgICAgICAgICAgc2llIHZlcmZsdWNodCBpc3QuIERpZSB0cml0dCBpbnNiZXNvbmRlcmUgZGFubiBhdWYsIHdlbm4gZGVyCisgICAgICAgICAgU3BpZWxlciwgZGVyIGRpZSBXYWZmZSBiZW51dHp0LCBzdGlyYnQgdW5kIGRpZSBXYWZmZSBpbgorICAgICAgICAgIGRpZSBMZWljaGUgYmV3ZWd0IHdpcmQuCisgICAgIHVzZXIgKG9iamVjdCkKKyAgICAgICAgICBEYXMgTGViZXdlc2VuLCB3ZWxjaGVzIGRpZSBXYWZmZSBnZXJhZGUgZ2V6dWVja3QgaGF0IHVuZCBzaWUgbnVuCisgICAgICAgICAgYXVzemllaGVuIHdpbGwuCisKK0JFU0NIUkVJQlVORzoKKyAgICAgSGllciBrb2VubmVuIHp1c2FldHpsaWNoZSBBYmZyYWdlbiB2b3JnZW5vbW1lbiB3ZXJkZW4sIG9iIHNpY2ggZGllCisgICAgIFdhZmZlIDx3ZWFwb24+IHdlZ3N0ZWNrZW4gbGFlc3N0IG9kZXIgbmljaHQuCisKK1JVZUNLR0FCRVdFUlQ6CisgICAgIDAsIHdlbm4gc2ljaCBkaWUgV2FmZmUgbmljaHQgd2Vnc3RlY2tlbiBsYWVzc3QsIGFuc29uc3RlbiB1bmdsZWljaCAwLgorCitCRU1FUktVTkdFTjoKKyAgICAgVmVyZmx1Y2h0ZSBXYWZmZW4sIGRpZSBzaWNoIGVyc3QgbmFjaCBFbnRmZXJudW5nIGRlcyBGbHVjaGVzIHdlZ3N0ZWNrZW4KKyAgICAgbGFzc2VuLCBzb2xsdGUgbWFuIGJlc3NlciBtaXQgUF9DVVJTRUQgcmVhbGlzaWVyZW4uCisgICAgIFNlbGJzdCB3ZW5uIG1hbiBlaW5lbiBXZXJ0IHVuZ2xlaWNoIE51bGwgenVydWVja2dpYnQsIGlzdCBkYXMgbm9jaAorICAgICBrZWluZSBHYXJhbnRpZSwgZGFzcyBzaWNoIGRpZSBXYWZmZSBhdWNoIHdpcmtsaWNoIHp1ZWNrZW4gbGFlc3N0ISBEZXIKKyAgICAgU3BpZWxlciBrb2VubnRlIHp1bSBCZWlzcGllbCBub2NoIGVpbmUgV2FmZmUgZ2V6dWVja3QgaGFiZW4sIGRpZSBzaWNoCisgICAgIG5pY2h0IHdlZ3N0ZWNrZW4gbGFlc3N0LCBldGMuCisgICAgIFdlbm4gaWhyIHNpY2hlciBzZWluIHdvbGx0LCBkYXNzIGRlciBTcGllbGVyIGVpbiBPYmpla3QgZ2V6dWVja3QgaGF0LAorICAgICBiZW51dHp0IGJpdHRlIEluZm9ybVdlYXIoKS4KKyAgICAgQml0dGUgbmljaHQgZHJhdWYgdmVybGFzc2VuLCBkYXNzIHRoaXNfcGxheWVyKCkgZGFzIExlYmV3ZXNlbiBpc3QsCisgICAgIHdlbGNoZXMgZGllIFdhZmZlIGdlenVlY2t0IHVuZCB3ZWdzdGVja2VuIHdpbGwuCisgICAgIERpZSBSZWloZW5mb2xnZSBkZXIgQXJndW1lbnRlIGlzdCBldHdhcyB1bnNjaG9lbiwgYWJlciBsZWlkZXIgd3VyZGUgPHVzZXI+CisgICAgIGVyaGVibGljaCBzcGFldGVyIGhpbnp1Z2VmdWVndCB1bmQgZXMgd2FyIHVubW9lZ2xpY2gsIGVpbmlnZSBodW5kZXJ0CisgICAgIE9iamVrdGUgenUgYWVuZGVybi4KKworU0lFSEUgQVVDSAorICAgICBQX1dJRUxEX01TRywgUF9VTldJRUxEX01TRywgUF9XRUFSX01TRywgUF9VTldFQVJfTVNHCisgICAgIERvV2llbGQoKSwgRG9VbndpZWxkKCksIEluZm9ybVdpZWxkKCksIEluZm9ybVVud2llbGQoKSwgCisgICAgIFVud2llbGRGdW5jLCBXaWVsZEZ1bmMoKSAKKyAgICAgL3N0ZC93ZWFwb24vY29tYmF0LmMKKworLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorMDIuMDIuMjAwOSwgWmVzc3RyYQpkaWZmIC0tZ2l0IGEvZG9jL2xmdW4vVXBkYXRlQXR0cmlidXRlcyBiL2RvYy9sZnVuL1VwZGF0ZUF0dHJpYnV0ZXMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZWY1YTI0ZgotLS0gL2Rldi9udWxsCisrKyBiL2RvYy9sZnVuL1VwZGF0ZUF0dHJpYnV0ZXMKQEAgLTAsMCArMSwzMiBAQAorVXBkYXRlQXR0cmlidXRlcygpCitGVU5LVElPTjoKKyAgICAgdm9pZCBVcGRhdGVBdHRyaWJ1dGVzKCkKKworREVGSU5JRVJUIElOOgorICAgICAvc3RkL2xpdmluZy9hdHRyaWJ1dGVzLmMKKworQkVTQ0hSRUlCVU5HOgorICAgICBSZWNobmV0IGRhbWl0IGFsbGUgQXR0cmlidXRtb2RpZmllciBkZXIgaW0gSW52ZW50b3J5IGJlZmluZGxpY2hlbiANCisgICAgIChQX1hfQVRUUl9NT0QsIFBfWF9IRUFMVEhfTU9EKSB1bmQgZ2V0cmFnZW5lbi9nZXp1ZWNrdGVuIA0KKyAgICAgKFBfTV9IRUFMVEhfTU9ELCBQX01fQVRUUl9NT0QpIE9iamVrdGUgdW5kIGFsbGVyIEF0dHJpYnV0b2Zmc2V0cyANCisgICAgIHp1c2FtbWVuIHVuZCBzcGVpY2hlcnQgc2llIGluIGVpbmVyIGludGVybiBmdWVyIEF0dHJpYnV0ZSANCisgICAgIHZlcndlbmRldGUgVmFyaWFibGVuLgorICAgICBCZXJlY2huZXQgZGFyYXVmIGJhc2llcmVuZCBIUCB1bmQgU1AgbmV1LgorICAgICANCisgICAgIERpZSBCZWRpbmd1bmdlbiBmdWVyIGRpZSB1ZWJlciBQX1RJTUVEX0FUVFJfTU9EIGdlc2V0enRlbiANCisgICAgIEF0dHJpYnV0dmVyYWVuZGVydW5nZW4gd2VyZGVuIGltIEhlYXJ0YmVhdCBpbiBkZXIgRnVua3Rpb24NCisgICAgIGF0dHJpYnV0ZV9oYiB1ZWJlcnBydWVmdC4NCisKK0JFTUVSS1VOR0VOOgorICAgICBTb2xsdGUgbmFjaCBFaW5icmluZ2VuIG5ldWVyIE1vZGlmaWthdG9yb2JqZWt0ZSBhbSBMaXZpbmcgZ2VydWZlbgorICAgICB3ZXJkZW4uCisKK1NJRUhFIEFVQ0g6DQorCVF1ZXJ5QXR0cmlidXRlKCksIFF1ZXJ5UmVhbEF0dHJpYnV0ZSgpLCBRdWVyeUF0dHJpYnV0ZU9mZnNldCgpLA0KKwlTZXRBdHRyaWJ1dGUoKSwgU2V0UmVhbEF0dHJpYnV0ZSgpLCBVcGRhdGVBdHRyaWJ1dGVzKCksDQorCVNldFRpbWVkQXR0ck1vZGlmaWVyKCksIFF1ZXJ5VGltZWRBdHRyTW9kaWZpZXIoKSwgDQorCURlbGV0ZVRpbWVkQXR0ck1vZGlmaWVyKCksDQorCVBfQVRUUklCVVRFUywgUF9BVFRSSUJVVEVTX09GRlNFVFMsIFBfVElNRURfQVRUUl9NT0QsDQorCVBfWF9BVFRSX01PRCwgUF9NX0FUVFJfTU9ELCAvc3RkL2xpdmluZy9hdHRyaWJ1dGVzLmMNCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQorMDkuMDUuMjAwNyBieSBaZXNzdHJhDQpkaWZmIC0tZ2l0IGEvZG9jL2xmdW4vVXBkYXRlUmVzaXN0YW5jZVN0cmVuZ3RocyBiL2RvYy9sZnVuL1VwZGF0ZVJlc2lzdGFuY2VTdHJlbmd0aHMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNDg3NDdiMwotLS0gL2Rldi9udWxsCisrKyBiL2RvYy9sZnVuL1VwZGF0ZVJlc2lzdGFuY2VTdHJlbmd0aHMKQEAgLTAsMCArMSwyNiBAQAorVXBkYXRlUmVzaXN0YW5jZVN0cmVuZ3RocygpCisKK0ZVTktUSU9OOgorICAgICBwdWJsaWMgdm9pZCBVcGRhdGVSZXNpc3RhbmNlU3RyZW5ndGhzKCkKKworREVGSU5JRVJUIElOOgorICAgICAvc3RkL2xpdmluZy9jb21iYXQuYworCitCRVNDSFJFSUJVTkc6CisgICAgIERpZSBGdW5rdGlvbiB3aXJkIGludGVybiBtZWhybWFscyAoZHVyY2ggRGVmZW5kLCBBZGRSZXNpc3RhbmNlTW9kaWZpZXIKKyAgICAgdW5kIFJlbW92ZVJlc2lzdGFuY2VNb2RpZmllcikgYXVmZ2VydWZlbi4gSW4gaWhyIHdpcmQgZGFzIFJlc2lzdGVuei0KKyAgICAgbWFwcGluZyB6dXNhbW1lbmdlcmVjaG5ldCB1bmQgRWludHJhZWdlIGdlbG9lc2NodCwgZGVyZW4gRWludHJhZWdlCisgICAgIGludmFsaWQgc2luZCBvZGVyIGRlcmVuIHNldHplbmRlIE9iamVrdGUgZ2Vsb2VzY2h0IHd1cmRlbi4KKworUlVlQ0tHQUJFV0VSVDoKKyAgICAga2VpbmVyCisKK1NJRUhFIEFVQ0g6CisgICAgIEJlcmVjaG51bmc6CUNoZWNrUmVzaXN0YW5jZSgpLCBEZWZlbmQoKQorICAgICBNb2RpZmlrYXRvcmVuOglBZGRSZXNpc3RhbmNlTW9kaWZpZXIsIFJlbW92ZVJlc2lzdGFuY2VNb2RpZmllcigpLAorCQkJUF9SRVNJU1RBTkNFX01PRElGSUVSCisgICAgIHNpbXBsZSBSZXNpc3Rlbno6CVBfUkVTSVNUQU5DRSwgUF9WVUxORVJBQklMSVRZCisgICAgIEhhdXB0bWFwcGluZzoJUF9SRVNJU1RBTkNFX1NUUkVOR1RIUworICAgICBhbmRlcmVzOgkJYmFsYW5jZSwgL3N0ZC9hcm1vdXIvY29tYmF0LmMsIC9zdGQvbGl2aW5nL2NvbWJhdC5jCisKKzI5LkFwciAyMDAyLCBHbG9pbnNvbkBNRwpkaWZmIC0tZ2l0IGEvZG9jL2xmdW4vVXNlSGFuZHMgYi9kb2MvbGZ1bi9Vc2VIYW5kcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5hNGZiYzhkCi0tLSAvZGV2L251bGwKKysrIGIvZG9jL2xmdW4vVXNlSGFuZHMKQEAgLTAsMCArMSwzNyBAQAorVXNlSGFuZHMKK0ZVTktUSU9OOgorICAgICBwdWJsaWMgdmFyYXJncyBpbnQgVXNlSGFuZHMob2JqZWN0IG9iLCBpbnQgbnVtKQorCitERUZJTklFUlQgSU46CisgICAgIC9zdGQvbGl2aW5nL2NvbWJhdC5jCisKK0FSR1VNRU5URToKKyAgICAgb2IgIC0gZGFzIE9iamVrdCwgZGFzIGRpZSBIYWVuZGUgYmVsZWdlbiBzb2xsCisgICAgIG51bSAtIGRpZSBBbnphaGwgZGVyIHp1IGJlbGVnZW5kZW4gSGFlbmRlICAgIAorCitSVUVDS0dBQkVXRVJUOgorICAgICAxLCBmdWVyIEVyZm9sZworICAgICAwLCBzb25zdCAgICAgCisKK0JFU0NIUkVJQlVORzoKKyAgICAgQmVsZWd0LCB3ZW5uIG1vZWdsaWNoIEhhZW5kZSBlaW5lcyBMaXZpbmdzIGR1cmNoIGVpbiBiZXN0aW1tdGVzCisgICAgIE9iamVrdC4gV2VubiBkaWUgQW56YWhsIGRlciBmcmVpZW4gSGFlbmRlIChQX01BWF9IQU5EUy1QX1VTRURfSEFORFMpCisgICAgIGtsZWluZXIgaXN0IGFscyAibnVtIiwgZGFubiBzY2hsYWVndCBkaWVzZSBCZWxlZ3VuZyBmZWhsLgorCitCRUlTUElFTEU6CisgICAgID4gaGFsdGUgc2VpbCBmZXN0CisgICAgIC4uLgorICAgICB0aGlzX3BsYXllcigpLT5Vc2VIYW5kcyh0aGlzX29iamVjdCgpLDIpOworICAgICAuLi4KKworICAgICA+IGxhc3NlIHNlaWwgbG9zCisgICAgIC4uLgorICAgICB0aGlzX3BsYXllcigpLT5GcmVlSGFuZHModGhpc19vYmplY3QoKSk7CisgICAgIC4uLgorCitTSUVIRSBBVUNIOgorICAgICBQX0hBTkRTLCBQX0hBTkRTX1VTRURfQlkKKyAgICAgUF9NQVhfSEFORFMsIFBfVVNFRF9IQU5EUywgUF9GUkVFX0hBTkRTCisgICAgIEZyZWVIYW5kcworCisxLkZlYi4yMDA0IEdsb2luc29uCmRpZmYgLS1naXQgYS9kb2MvbGZ1bi9Vc2VTa2lsbCBiL2RvYy9sZnVuL1VzZVNraWxsCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjNiMTJiZDgKLS0tIC9kZXYvbnVsbAorKysgYi9kb2MvbGZ1bi9Vc2VTa2lsbApAQCAtMCwwICsxLDQ4IEBACitVc2VTa2lsbCgpCitGVU5LVElPTjoKKyAgICBwdWJsaWMgdmFyYXJncyBtaXhlZCBVc2VTa2lsbChzdHJpbmcgc2tpbGwsIG1hcHBpbmcgYXJncykKKworREVGSU5JRVJUIElOOgorICAgIC9zdGQvbGl2aW5nL3NraWxscy5jCisKK0FSR1VNRU5URToKKyAgICBzdHJpbmcgc2tpbGwgICAgIFNraWxsLU5hbWUKKyAgICBtYXBwaW5nIGFyZ3MgICAgIEFyZ3VtZW50ZSAodmVyYWVuZGVydGUgU2tpbGxtYXBwaW5nLUluZm9ybWF0aW9uZW4pCisKK0JFU0NIUkVJQlVORzoKKyAgICBCZW51dHp0IGVpbmVuIFNraWxsLiBEaWVzZXIgU2tpbGwgc29sbHRlIChhbHMgZ3Jvc3NnZXNjaHJpZWJlbmVyIFNraWxsKQorICAgIGltIExpdmluZyB2b3JsaWVnZW4gdW5kIGRhcyBMaXZpbmcgZGFyZiBrZWluIEdlaXN0IHNlaW4uCisgICAgCisgICAgRGllIEFyZ3VtZW50ZSAnYXJncycgd2VyZGVuIHRlbXBvcmFlciBhdWYgZGFzIFNraWxsbWFwcGluZyBkZXMgTGl2aW5nCisgICAgYWRkaWVydCAoYWxzbyBudXIgZnVlciBkaWVzZW4gQXVmcnVmIHVuZCBTSV9JTkhFUklUIGd1ZWx0aWcpLgorICAgIAorICAgIEVpbmUgYXVzZnVlaHJiYXJlIFNraWxsLUZ1bmt0aW9uIHp1bSBTa2lsbCB3aXJkIGluIGZvbGdlbmRlcgorICAgIFJlaWhlbmZvbGdlIGJlc3RpbW10OgorICAgIC0gZWluZSBnZXNldHp0ZSBTSV9DTE9TVVJFIG51dHplbgorICAgIC0gZWluIGdlc2V0enRlcyBTSV9TS0lMTEZVTkMgaW4gZGVyIGdlc2V0enRlbiBHaWxkZSBudXR6ZW4KKyAgICAtIGltIExpdmluZyBkaWUgRnVua3Rpb24gIlN0ZFNraWxsXyIrc2tpbGwgKHpCIFdhZmZlbnNraWxscykgbnV0emVuCisgICAgLSBRdWVyeVNraWxsQWJpbGl0eSgpIG51dHplbgorICAgIERpZSBzbyBiZXN0aW1tdGUgU2tpbGwtRnVua3Rpb24gd2lyZCBkYW5uIGFscyBTSV9DTE9TVVJFIGltIFNwaWVsZXIKKyAgICBnZXNldHp0IHVuZCBpc3QgYmlzIHp1ciBaZXJzdG9lcnVuZyBkZXIgZW50c3ByZWNoZW5kZW4gT2JqZWt0ZSBndWVsdGlnLgorICAgIERpZSBNZXRob2RlIHdpcmQgZGFubiBnZXJ1ZmVuIChkZXIgU2tpbGwgYWxzbyBhbmdld2FuZHQpLgorICAgIAorICAgIFN0YW5kYXJkbWFlc3NpZyBnaWJ0IGVpbiBVc2VTa2lsbCgpIGFsc28gZWluZmFjaCBkZW4gU0lfU0tJTExBQklMSVRZLVdlcnQKKyAgICBlaW5lcyBTa2lsbHMgenVydWVjaywgZXMgc2VpIGRlbm4sIGVpbmUgRnVua3Rpb24gd3VyZGUgZnVlciBkZW4gU2tpbGwKKyAgICBhbiBlaW5lciBkZXIgb2JlbiBnZW5hbm50ZW4gU3RlbGxlbiBpbXBsZW1lbnRpZXJ0LgorICAgIAorICAgIEVpbiBldmVudHVlbGwgdWViZXJnZW9yZG5ldGVyIFNraWxsIChTSV9JTkhFUklUKSB3aXJkIG1pdCBkZW0gZHVyY2ggZGVuCisgICAgQXVmcnVmIGRlciBTa2lsbC1GdW5rdGlvbiB2ZXJhZW5kZXJ0ZW4gTWFwcGluZyBtaXQgVXNlU2tpbGwoc2tpbGwsIGFyZ3MpCisgICAgZWJlbmZhbGxzIG5vY2ggYXVzZ2VmdWVocnQsIGJldm9yIGRhcyBSZXN1bHRhdCB6dXJ1ZWNrZ2VnZWJlbiB3aXJkLgorCitTSUVIRSBBVUNIOgorICAgIFNraWxscyBMZXJuZW46ICBMZWFyblNraWxsLCBNb2RpZnlTa2lsbCwgTGltaXRBYmlsaXR5CisgICAgKiBOdXR6dW5nOiAgICAgIFVzZVNwZWxsCisgICAgKiBBYmZyYWdlbjogICAgIFF1ZXJ5U2tpbGwsIFF1ZXJ5U2tpbGxBYmlsaXR5CisgICAgKiBNb2RpZmlrYXRpb246IE1vZGlmeVNraWxsQXR0cmlidXRlLCBRdWVyeVNraWxsQXR0cmlidXRlLAorICAgICAgICAgICAgICAgICAgICBRdWVyeVNraWxsQXR0cmlidXRlTW9kaWZpZXIsIFJlbW92ZVNraWxsQXR0cmlidXRlTW9kaWZpZXIKKyAgICAgICogUHJvcGVydGllczogUF9TS0lMTF9BVFRSSUJVVEVTLCBQX1NLSUxMX0FUVFJJQlVURV9PRkZTRVRTCisgICAgKiBzb25zdGlnOiAgICAgIHNwcnVjaGVybXVlZHVuZywgc2tpbGxfaW5mb19saXN0ZQorICAgICogUHJvcGVydGllczogICBQX05FV1NLSUxMUworICAgIFNwZWxsYm9vazogICAgICBMZWFybiwgU3BlbGxTdWNjZXNzLCBFcmZvbGcsIE1pc3NlcmZvbGcKKworNC4gT2t0IDIwMTEgR2xvaW5zb24KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9kb2MvbGZ1bi9Vc2VTcGVsbCBiL2RvYy9sZnVuL1VzZVNwZWxsCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmRkZjFjNGQKLS0tIC9kZXYvbnVsbAorKysgYi9kb2MvbGZ1bi9Vc2VTcGVsbApAQCAtMCwwICsxLDc3IEBACitVc2VTcGVsbCgpCitGVU5LVElPTjoKKyAgICBwdWJsaWMgdmFyYXJncyBpbnQgVXNlU3BlbGwoc3RyaW5nIHN0ciwgc3RyaW5nIHNwZWxsKQorCitERUZJTklFUlQgSU46CisgICAgL3N0ZC9saXZpbmcvc2tpbGxzLmMKKworQVJHVU1FTlRFOgorICAgIHN0cmluZyBzdHIgICAgICAgU3BlbGwtT3B0aW9uZW4KKyAgICBzdHJpbmcgc3BlbGwgICAgIG9wdGlvbmFsZXIgU3BlbGxuYW1lCisKK0JFU0NIUkVJQlVORzoKKyAgICBCZW51dHp0IGVpbmVuIFNwZWxsLCBkZXNzZW4gU3BlbGxuYW1lICdzcGVsbCcgZ2dmIHVlYmVyIHF1ZXJ5X3ZlcmIoKQorICAgIGVybWl0dGVsdCB3aXJkLiBEaWVzZXIgU3BlbGwgc29sbHRlIChhbHMga2xlaW5nZXNjaHJpZWJlbmVyCisgICAgU2tpbGwvU3BlbGwpIGltIExpdmluZyB2b3JsaWVnZW4uCisgICAgCisgICAgRGllIEFyZ3VtZW50ZSAnc3RyJyB3ZXJkZW4gYWxzIFNJX1NLSUxMQVJHIHRlbXBvcmFlciBpbiBkYXMKKyAgICBTa2lsbG1hcHBpbmcgZWluZ2V0cmFnZW4gKGFsc28gbnVyIGZ1ZXIgZGllc2VuIEF1ZnJ1ZiBndWVsdGlnKS4KKyAgICAKKyAgICBFaW5lIGF1c2Z1ZWhyYmFyZSBTcGVsbC1GdW5rdGlvbiB6dW0gU3BlbGwgd2lyZCBpbiBmb2xnZW5kZXIKKyAgICBSZWloZW5mb2xnZSBiZXN0aW1tdDoKKyAgICAtIGVpbmUgZ2VzZXR6dGUgU0lfQ0xPU1VSRSBudXR6ZW4KKyAgICAtICJVc2VTcGVsbCIgYW4gZWluZW0gZ2VzZXR6dGVuIFNJX1NQRUxMQk9PSyBudXR6ZW4KKyAgICAtICJVc2VTcGVsbCIgYW4gZGVyIGdlc2V0enRlbiBQX0dVSUxEIG51dHplbgorICAgICAgLSBbVXNlU3BlbGwgZGVyIEdpbGRlIHN1Y2h0IGlBIGViZW5mYWxscyBudXIgZGVuIFNwZWxsIGFtIFNwZWxsYm9va10KKyAgICAtIGVpbmUgQ2xvc3VyZSBtaXQgUnVlY2tnYWJld2VydCAwIGVyc3RlbGxlbgorICAgIERpZSBzbyBiZXN0aW1tdGUgU3BlbGwtRnVua3Rpb24gd2lyZCBkYW5uIGFscyBTSV9DTE9TVVJFIGltIFNwaWVsZXIKKyAgICBnZXNldHp0IHVuZCBpc3QgYmlzIHp1ciBaZXJzdG9lcnVuZyBkZXIgZW50c3ByZWNoZW5kZW4gT2JqZWt0ZSBndWVsdGlnLgorICAgIERpZSBNZXRob2RlIHdpcmQgZGFubiBnZXJ1ZmVuIChkZXIgU3BlbGwgYWxzbyBhbmdld2FuZHQpLgorCisgICAgU3RhbmRhcmRtYWVzc2lnIGdpYnQgZWluIFVzZVNwZWxsKCkgYWxzbyAwIHp1cnVlY2ssIGVzIHNlaSBkZW5uLCBlaW5lCisgICAgRnVua3Rpb24gd3VyZGUgZnVlciBkZW4gU3BlbGwgYW4gZWluZXIgZGVyIG9iZW4gZ2VuYW5udGVuIFN0ZWxsZW4KKyAgICBpbXBsZW1lbnRpZXJ0LgorCisgICAgU0lfSU5IRVJJVCBpc3QgZnVlciBTcGVsbHMgYmVpbSBBdWZydWYgd2lya3VuZ3Nsb3MgKGdpbHQgYWJlciBiZWkKKyAgICBMZWFyblNraWxsIG5vcm1hbCkuCisKKyAgICBFaW4gRHVyY2hsYXVmIHZvbiBVc2VTcGVsbCBkdXJjaCBkZW4gU3BpZWxlciBzaWVodCBpbiBldHdhIHNvIGF1czoKKyAgICAgIDEpIERpZSBNZXRob2RlIHdpcmQgYWxzIEVtcGZhZW5nZXIgZnVlciBLb21tYW5kb3MgYmVrYW5udCBnZW1hY2h0LgorICAgICAgICAgRGFzIHBhc3NpZXJ0IG1pdCBkZXIgQW53ZWlzdW5nCisgICAgICAgICAnYWRkX2FjdGlvbigiVXNlU3BlbGwiLCAiIiwgMSk7JyBpbiBkZW4gRGF0ZWllbiBwbGF5ZXIvYmFzZS5jIHVuZAorICAgICAgICAgaW4gbGl2aW5nL25wYy5jLgorCisgICAgICAyKSAvc3RkL2xpdmluZy9za2lsbHM6OlVzZVNwZWxsIHdpcmQgZHVyY2ggS29tbWFuZG8gb2RlciBIZWFydGJlYXQKKyAgICAgICAgIGdlcnVmZW4uCisgICAgICAKKyAgICAgIDMpIFVzZVNwZWxsKCkgZXJtaXR0ZWx0IGVpbmUgU0lfQ0xPU1VSRSBvZGVyIGRlbGVnaWVydCBkaWVzZW4gQXVmcnVmCisgICAgICAgICBhbiBkaWUgZ3VlbHRpZ2UgR2lsZGUvZGFzIFNwZWxsYm9vayB3ZWl0ZXIuCisgICAgICAKKyAgICAgIDQpIEVpbmUgZ3VlbHRpZ2UgQ2xvc3VyZSB3aXJkIGF1c2dlZnVlaHJ0LiBVc2VTcGVsbCgpIHVlYmVyZ2lidCBkYWJlaQorICAgICAgICAgZGllIFNwZWxsL1NraWxsLUluZm9ybWF0aW9uZW4gdW5kIFNJX1NLSUxMQVJHLgorICAgICAgCisgICAgICA0LjEuKSBJbSBOb3JtYWxmYWxsIGVpbmVyIEdpbGRlL1NwZWxsYm9vayBsYW5kZXQgZGVyIEF1ZnJ1ZiB1ZWJlcgorICAgICAgICAgICAgL3N0ZC9naWxkZW5fb2I6OlVzZVNwZWxsKCkgaW4gL3N0ZC9zcGVsbGJvb2s6OlVzZVNwZWxsKCkgdW5kCisgICAgICAgICAgICBkaWVzZXMgcnVmdCBlaW5lIFNwZWxsZnVua3Rpb24gaW0gU3BlbGxib29rIGF1Zi4KKyAgICAgICAgICAgIERpZSBTcGVsbGZ1bmt0aW9uIGFyYmVpdGV0IG1pdCBkZW4gU3BlbGwtSW5mb3JtYXRpb25lbiB1bmQKKyAgICAgICAgICAgIGdpYnQgZWluIEVSRk9MRywgTUlTU0VSRk9MRyBvZGVyIDAgZGFmdWVyIHp1cnVlY2ssIG9iIGRhcworICAgICAgICAgICAgU3BlbGxib29rIExlcm5lbi9GZWhsZXJtZWxkdW5nIG9kZXIgbmljaHRzIG1hY2hlbiBzb2xsLgorICAgICAgICAgICAgRGVtZW50c3ByZWNoZW5kIHdlcmRlbiBQX1NQLCBQX0FUVEFDS19CVVNZIHVuZAorICAgICAgICAgICAgUF9ORVhUX1NQRUxMX1RJTUUgaW0gU3BlbGxib29rIGdlYWVuZGVydC4KKworICAgICAgNS4pIERlciBBdWZydWYgZGVyIENsb3N1cmUga2VocnQgenVydWVjayB1bmQgd2lyZCB6dXJ1ZWNrZ2VnZWJlbi4KKyAgICAgICAgICBEYW1pdCBpc3QgZGVyIDAtUnVlY2tnYWJld2VydCBkZXIgU3BlbGxmdW5rdGlvbiBpbSBTcGVsbGJvb2sKKyAgICAgICAgICBhZXF1aXZhbGVudCBlaW5lbSBuaWNodCBhdXNnZWZ1ZWhydGVuIEtvbW1hbmRvLgorCitTSUVIRSBBVUNIOgorICAgIFNraWxscyBMZXJuZW46ICBMZWFyblNraWxsLCBNb2RpZnlTa2lsbCwgTGltaXRBYmlsaXR5CisgICAgKiBOdXR6dW5nOiAgICAgIFVzZVNraWxsCisgICAgKiBBYmZyYWdlbjogICAgIFF1ZXJ5U2tpbGwsIFF1ZXJ5U2tpbGxBYmlsaXR5CisgICAgKiBNb2RpZmlrYXRpb246IE1vZGlmeVNraWxsQXR0cmlidXRlLCBRdWVyeVNraWxsQXR0cmlidXRlLAorICAgICAgICAgICAgICAgICAgICBRdWVyeVNraWxsQXR0cmlidXRlTW9kaWZpZXIsIFJlbW92ZVNraWxsQXR0cmlidXRlTW9kaWZpZXIKKyAgICAgICogUHJvcGVydGllczogUF9TS0lMTF9BVFRSSUJVVEVTLCBQX1NLSUxMX0FUVFJJQlVURV9PRkZTRVRTCisgICAgKiBzb25zdGlnOiAgICAgIHNwcnVjaGVybXVlZHVuZywgc2tpbGxfaW5mb19saXN0ZQorICAgICogUHJvcGVydGllczogICBQX05FV1NLSUxMUworICAgIFNwZWxsYm9vazogICAgICBVc2VTcGVsbCAoc3BlbGxib29rKSwgTGVhcm4sIFNwZWxsU3VjY2VzcworCis1LiBPa3QgMjAxMSBHbG9pbnNvbgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2RvYy9sZnVuL1ZhbGlkYXRlIGIvZG9jL2xmdW4vVmFsaWRhdGUKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMTBmNDc5MQotLS0gL2Rldi9udWxsCisrKyBiL2RvYy9sZnVuL1ZhbGlkYXRlCkBAIC0wLDAgKzEsNDcgQEAKK1ZhbGlkYXRlKCkKKworRlVOS1RJT046CisgICBzdHJpbmcgVmFsaWRhdGUoc3RyaW5nIG9uYW1lKTsKKworREVGSU5JRVJUIElOOgorICAgL3N0ZC92aXJ0dWFsL3ZfY29tcGlsZXIuYworCitBUkdVTUVOVEU6CisgICBvbmFtZQorICAgICAgIE9iamVrdG5hbWUsIGRlciBnZXBydWVmdCB3ZXJkZW4gc29sbCAKKworUlVlQ0tHQUJFV0VSVDoKKyAgIAorQkVTQ0hSRUlCVU5HOgorICAgRGllc2UgRnVua3Rpb24gaGF0IGRpZSBBdWZnYWJlIHp1IHVlYmVycHJ1ZWZlbiBvYiBlaW4gT2JqZWt0IHdlbGNoZXMKKyAgIGdlbGFkZW4gd2VyZGVuIHNvbGwsIGluIGRlbSBWQyAgdWViZXJoYXVwdCBlcmxhdWJ0IGlzdC4gRGllc2VyIAorICAgRnVua3Rpb24gd2lyZCBudXIgZGVyIHJlaW5lIEZpbGVuYW1lIHVlYmVyZ2ViZW4sIG9obmUgUGZhZCEKKyAgIERpZXNlIEZ1bmt0aW9uIG1hY2h0IGltIFN0YW5kYXJkLVZDIGluIC9zdGQvIG5pY2h0cyB3ZWl0ZXIsIGFscworICAgZGFzICcuYycgYW0gRmlsZSBOYW1lbiBhYnp1c2NobmVpZGVuLgorICAgU29sbHRlIGRlciBEYXRlaW5hbWUgZ3VlbHRpZyBzZWluIGxpZWZlcnQgZGllIEZ1bmt0aW9uIGFscyBSdWVja2dhYmV3ZXJ0CisgICBkZW4gRmlsZW5hbWVuIG9obmUgLmMgdW5kIHNvbnN0IDAuCisKK0JFTUVSS1VOR0VOOgorICAgQW0gYmVzdGVuIHJ1ZnQgbWFuIGluIHNlaW5lbSBWYWxpZGF0ZSgpIGRhcyA6OlZhbGlkYXRlKCksIHdhcyBlaW5lbSBkaWUKKyAgIEFyYmVpdCBhYm5pbW10LCBlaW4gLmMgYW0gRW5kZSB6dSBlbnRmZXJuZW4uCisKK0JFSVNQSUVMOgorICAgc3RyaW5nIFZhbGlkYXRlKHN0cmluZyBvbmFtZSkgeworICAgICBzdHJpbmcgcmF1bSwgc3BpZWxlcjsKKyAgICAgLy8uYyBhYnNjaG5laWRlbgorICAgICBvbmFtZT06OlZhbGlkYXRlKG9uYW1lKTsKKyAgICAgCisgICAgIC8vIGZvbGd0IGRlciBSYXVtIGRlbSBNdXN0ZXIgImFyZW5hfG5hbWUiPyBXZW5uIG5laW4gLT4gdW5ndWVsdGlnLAorICAgICAvLyAwIHp1cmVja2dlYmVuLCBzb25zdCBkZW4gRmlsZW5hbWVuLgorICAgICBpZihzc2NhbmYob25hbWUsIiVzfCVzIixyYXVtLHNwaWVsZXIpPDIgfHwgcmF1bSE9ImFyZW5hIikKKyAgICAgICAgcmV0dXJuIDA7CisgICAgIHJldHVybiBvbmFtZTsKKyAgIH0KKworU0lFSEUgQVVDSDoKKyAgICAgdmlydHVhbF9jb21waWxlcgorICAgICBDdXN0b21pemVPYmplY3QoKSwgVmFsaWRhdGUoKSwgTm9QYXJhT2JqZWN0cygpLCAKKyAgICAgUF9DT01QSUxFUl9QQVRILCBQX1BBUkEKKyAgICAgL3N0ZC92aXJ0dWFsL3ZfY29tcGlsZXIuYworLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorMjcuMTAuMjAwNywgWmVzc3RyYQpkaWZmIC0tZ2l0IGEvZG9jL2xmdW4vV2VhciBiL2RvYy9sZnVuL1dlYXIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYmZjOGFkMgotLS0gL2Rldi9udWxsCisrKyBiL2RvYy9sZnVuL1dlYXIKQEAgLTAsMCArMSwzNyBAQAorV2VhcigpCitGVU5LVElPTjoKKyAgICAgcHVibGljIGludCBXZWFyKG9iamVjdCBvYikgCisKK0RFRklOSUVSVCBJTjoKKyAgICAgL3N0ZC9saXZpbmcvY2xvdGhpbmcuYworCitBUkdVTUVOVEU6CisgICAgIG9iamVjdCBvYgorICAgICAgIERpZSBSdWVzdHVuZyBvZGVyIEtsZWlkdW5nLCBkaWUgYW5nZXpvZ2VuIHdpcmQuCisKK0JFU0NIUkVJQlVORzoKKyAgICAgRGFzIExlYmV3ZXNlbiwgaW4gZGVtIGRpZXNlIEZ1bmt0aW9uIGdlcnVmZW4gd2lyZCwgemllaHQgZGllIFJ1ZXN0dW5nCisgICAgIG9kZXIgZGFzIEtsZWlkdW5nc3N0dWVjayA8b2I+IGFuLgorICAgICBBQkVSOiAnQW56aWVoZW4nIGJlZGV1dGV0IGluIGRpZXNlbSBLb250ZXh0IGxlZGlnbGljaCwgZGFzcyBkaWUKKyAgICAgUnVlc3R1bmcvS2xlaWR1bmcgaW4gUF9BUk1PVVJTIGJ6dy4gUF9DTE9USElORyBlaW5nZXRyYWdlbiB3aXJkLiBFcworICAgICBmaW5kZW4genVyIFplaXQga2VpbmUgUHJ1ZWZ1bmdlbiBzdGF0dCwgb2IgZGFzIExlYmV3ZXNlbiBkZW4gR2VnZW5zdGFuZAorICAgICB1ZWJlcmhhdXB0IGFuemllaGVuIGthbm4uIEdlbmF1c293ZW5pZyB3ZXJkZW4gRnVua3Rpb25lbiB3aWUgSW5mb3JtV2VhcigpCisgICAgIGdlcnVmZW4gb2RlciBldHdhaWdlIFN0YXQtQm9uaSBha3RpdmllcnQuCisgICAgIERpZSBGdW5rdGlvbiBpc3QgbnVyIGRhenUgZ2VkYWNodCwgaW0gWnVnZSBkZXMgQW56aWVoZW5zIGVpbmVzIE9iamVrdHMKKyAgICAgdm9uIGRpZXNlbSBpbSBMZWJld2VzZW4gZ2VydWZlbiB6dSB3ZXJkZW4uCisKK1JVZUNLR0FCRVdFUlQ6CisgICAgIDEsIHdlbm4gZGFzIEFuemllaGVuIGVyZm9sZ3JlaWNoIHdhci4KKyAgICAgMCBzb25zdC4KKworQkVNRVJLVU5HRU46CisgICAgIE5pY2h0IHZvbiBIYW5kIGF1ZnJ1ZmVuLCBlcyBzZWkgZGVubiBtYW4gd2Vpc3MgZ2VuYXUsIHdhcyBtYW4gdHV0LiBVbmQgYW0KKyAgICAgYmVzdGVuIGF1Y2ggZGFubiBuaWNodC4KKworU0lFSEUgQVVDSDoKKyAgICAgV2VhckFybW91cigpLCBXZWFyQ2xvdGhpbmcoKSwgVW53ZWFyKCksIFVud2VhckFybW91cigpLCBVbndlYXJDbG90aGluZygpCisgICAgIFBfQ0xPVEhJTkcsIFBfQVJNT1VSUworICAgICBGaWx0ZXJDbG90aGluZygpLCBGaWx0ZXJBcm1vdXJzKCkKKworWlVMRVRaVCBHRUFlTkRFUlQ6CisxNC4wMy4yMDA5LCBaZXNzdHJhCmRpZmYgLS1naXQgYS9kb2MvbGZ1bi9XZWFyQXJtb3VyIGIvZG9jL2xmdW4vV2VhckFybW91cgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi45ZmQ4ZTk1Ci0tLSAvZGV2L251bGwKKysrIGIvZG9jL2xmdW4vV2VhckFybW91cgpAQCAtMCwwICsxLDM3IEBACitXZWFyQXJtb3VyKCkKK0ZVTktUSU9OOgorICAgICBwdWJsaWMgaW50IFdlYXJBcm1vdXIob2JqZWN0IG9iKSAKKworREVGSU5JRVJUIElOOgorICAgICAvc3RkL2xpdmluZy9jbG90aGluZy5jCisKK0FSR1VNRU5URToKKyAgICAgb2JqZWN0IG9iCisgICAgICAgRGllIFJ1ZXN0dW5nLCBkaWUgYW5nZXpvZ2VuIHdpcmQuCisKK0JFU0NIUkVJQlVORzoKKyAgICAgRGFzIExlYmV3ZXNlbiwgaW4gZGVtIGRpZXNlIEZ1bmt0aW9uIGdlcnVmZW4gd2lyZCwgemllaHQgZGllIFJ1ZXN0dW5nCisgICAgIDxvYj4gYW4uCisgICAgIEFCRVI6ICdBbnppZWhlbicgYmVkZXV0ZXQgaW4gZGllc2VtIEtvbnRleHQgbGVkaWdsaWNoLCBkYXNzIGRpZQorICAgICBSdWVzdHVuZy9LbGVpZHVuZyBpbiBQX0FSTU9VUlMgZWluZ2V0cmFnZW4gd2lyZC4gRXMgZmluZGVuIHp1ciBaZWl0IGtlaW5lCisgICAgIFBydWVmdW5nZW4gc3RhdHQsIG9iIGRhcyBMZWJld2VzZW4gZGVuIEdlZ2Vuc3RhbmQgdWViZXJoYXVwdCBhbnppZWhlbgorICAgICBrYW5uLiBHZW5hdXNvd2VuaWcgd2VyZGVuIEZ1bmt0aW9uZW4gd2llIEluZm9ybVdlYXIoKSBnZXJ1ZmVuIG9kZXIKKyAgICAgZXR3YWlnZSBTdGF0LUJvbmkgYWt0aXZpZXJ0LgorICAgICBEaWUgRnVua3Rpb24gaXN0IG51ciBkYXp1IGdlZGFjaHQsIGltIFp1Z2UgZGVzIEFuemllaGVucyBlaW5lcyBPYmpla3RzCisgICAgIHZvbiBkaWVzZW0gaW0gTGViZXdlc2VuIGdlcnVmZW4genUgd2VyZGVuLgorCitSVWVDS0dBQkVXRVJUOgorICAgICAxLCB3ZW5uIGRhcyBBbnppZWhlbiBlcmZvbGdyZWljaCB3YXIuCisgICAgIDAgc29uc3QuCisKK0JFTUVSS1VOR0VOOgorICAgICBOaWNodCB2b24gSGFuZCBhdWZydWZlbiwgZXMgc2VpIGRlbm4gbWFuIHdlaXNzIGdlbmF1LCB3YXMgbWFuIHR1dC4gVW5kIGFtCisgICAgIGJlc3RlbiBhdWNoIGRhbm4gbmljaHQuCisKK1NJRUhFIEFVQ0g6CisgICAgIFdlYXIoKSwgV2VhckNsb3RoaW5nKCksIFVud2VhcigpLCBVbndlYXJBcm1vdXIoKSwgVW53ZWFyQ2xvdGhpbmcoKQorICAgICBQX0NMT1RISU5HLCBQX0FSTU9VUlMKKyAgICAgRmlsdGVyQ2xvdGhpbmcoKSwgRmlsdGVyQXJtb3VycygpCisKK1pVTEVUWlQgR0VBZU5ERVJUOgorMTQuMDMuMjAwOSwgWmVzc3RyYQpkaWZmIC0tZ2l0IGEvZG9jL2xmdW4vV2VhckNsb3RoaW5nIGIvZG9jL2xmdW4vV2VhckNsb3RoaW5nCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjE3YzAyODAKLS0tIC9kZXYvbnVsbAorKysgYi9kb2MvbGZ1bi9XZWFyQ2xvdGhpbmcKQEAgLTAsMCArMSwzNyBAQAorV2VhckNsb3RoaW5nKCkKK0ZVTktUSU9OOgorICAgICBwdWJsaWMgaW50IFdlYXJDbG90aGluZyhvYmplY3Qgb2IpIAorCitERUZJTklFUlQgSU46CisgICAgIC9zdGQvbGl2aW5nL2Nsb3RoaW5nLmMKKworQVJHVU1FTlRFOgorICAgICBvYmplY3Qgb2IKKyAgICAgICBEYXMgS2xlaWR1bmdzc3R1Y2ssIGRhcyBhbmdlem9nZW4gd2lyZC4KKworQkVTQ0hSRUlCVU5HOgorICAgICBEYXMgTGViZXdlc2VuLCBpbiBkZW0gZGllc2UgRnVua3Rpb24gZ2VydWZlbiB3aXJkLCB6aWVodCBkYXMKKyAgICAgS2xlaWR1bmdzc3R1ZWNrIDxvYj4gYW4uCisgICAgIEFCRVI6ICdBbnppZWhlbicgYmVkZXV0ZXQgaW4gZGllc2VtIEtvbnRleHQgbGVkaWdsaWNoLCBkYXNzIGRpZQorICAgICBSdWVzdHVuZy9LbGVpZHVuZyBpbiBQX0NMT1RISU5HIGVpbmdldHJhZ2VuIHdpcmQuIEVzIGZpbmRlbiB6dXIgWmVpdAorICAgICBrZWluZSBQcnVlZnVuZ2VuIHN0YXR0LCBvYiBkYXMgTGViZXdlc2VuIGRlbiBHZWdlbnN0YW5kIHVlYmVyaGF1cHQKKyAgICAgYW56aWVoZW4ga2Fubi4gR2VuYXVzb3dlbmlnIHdlcmRlbiBGdW5rdGlvbmVuIHdpZSBJbmZvcm1XZWFyKCkgZ2VydWZlbi4KKworICAgICBEaWUgRnVua3Rpb24gaXN0IG51ciBkYXp1IGdlZGFjaHQsIGltIFp1Z2UgZGVzIEFuemllaGVucyBlaW5lcyBPYmpla3RzCisgICAgIHZvbiBkaWVzZW0gaW0gTGViZXdlc2VuIGdlcnVmZW4genUgd2VyZGVuLgorCitSVWVDS0dBQkVXRVJUOgorICAgICAxLCB3ZW5uIGRhcyBBbnppZWhlbiBlcmZvbGdyZWljaCB3YXIuCisgICAgIDAgc29uc3QuCisKK0JFTUVSS1VOR0VOOgorICAgICBOaWNodCB2b24gSGFuZCBhdWZydWZlbiwgZXMgc2VpIGRlbm4gbWFuIHdlaXNzIGdlbmF1LCB3YXMgbWFuIHR1dC4gVW5kIGFtCisgICAgIGJlc3RlbiBhdWNoIGRhbm4gbmljaHQuCisKK1NJRUhFIEFVQ0g6CisgICAgIFdlYXIoKSwgV2VhckFybW91cigpLCBVbndlYXIoKSwgVW53ZWFyQXJtb3VyKCksIFVud2VhckNsb3RoaW5nKCkKKyAgICAgUF9DTE9USElORywgUF9BUk1PVVJTCisgICAgIEZpbHRlckNsb3RoaW5nKCksIEZpbHRlckFybW91cnMoKQorCitaVUxFVFpUIEdFQWVOREVSVDoKKzE0LjAzLjIwMDksIFplc3N0cmEKZGlmZiAtLWdpdCBhL2RvYy9sZnVuL1dlYXJGdW5jIGIvZG9jL2xmdW4vV2VhckZ1bmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNjI2ZmQ2NAotLS0gL2Rldi9udWxsCisrKyBiL2RvYy9sZnVuL1dlYXJGdW5jCkBAIC0wLDAgKzEsODAgQEAKK1dlYXJGdW5jKCkKKworRlVOS1RJT046CisgICAgIGludCBXZWFyRnVuYyhvYmplY3QgcnVlc3QsIGludCBzaWxlbnQsIG9iamVjdCB1c2VyKTsKKworREVGSU5JRVJUIElOOgorICAgICBlaWdlbmVuIE9iamVrdGVuIChmdWVyIC9zdGQvY2xvdGhpbmcvd2VhcikKKworQVJHVU1FTlRFOgorICAgICBydWVzdCAob2JqZWN0KQorICAgICAgICAgIERpZSBSdWVzdHVuZy9LbGVpZHVuZywgZGllIGFuZ2V6b2dlbiB3ZXJkZW4gc29sbC4KKyAgICAgc2lsZW50IChpbnQpCisgICAgICAgICAgT2IgZGFiZWkgZWluZSBNZWxkdW5nIGF1c2dlZ2ViZW4gd2lyZC4KKyAgICAgdXNlciAob2JqZWN0KQorICAgICAgICAgIERhcyBMZWJld2VzZW4sIHdlbGNoZXMgZGllIFJ1ZXN0dW5nL0tsZWlkdW5nIGFuemllaGVuIHdpbGwuCisKK0JFU0NIUkVJQlVORzoKKyAgICAgTWl0IGRpZXNlciBGdW5rdGlvbiBrYW5uIG1hbiBwcnVlZmVuLCBvYiBzaWNoIGRhcyBLbGVpZHVuZ3NzdHVlY2sgYnp3LgorICAgICBSdWVzdHVuZyA8cnVlc3Q+IHZvbiB0aGlzX3BsYXllcigpIGFuemllaGVuIGxhZXNzdCBvZGVyIG5pY2h0LgorICAgICBLYW5uIGRpZSBSdWVzdHVuZyBhbmdlem9nZW4gd2VyZGVuLCBzbyBtdXNzIGVpbiBXZXJ0IHVuZ2xlaWNoIDAKKyAgICAgenVydWVja2dlZ2ViZW4gd2VyZGVuLgorCitSVWVDS0dBQkVXRVJUOgorICAgICAwLCB3ZW5uIHNpY2ggZGllIFJ1ZXN0dW5nIG5pY2h0IGFuemllaGVuIGxhZXNzdCwgYW5zb25zdGVuIHVuZ2xlaWNoIDAuCisKK0JFTUVSS1VOR0VOOgorICAgICBCaXR0ZSBuaWNodCBkYXJhdWYgdmVybGFzc2VuLCBkYXNzIGRlciBTcGllbGVyIGRhcyBPYmpla3QgYXVjaCB3aXJrbGljaAorICAgICBhbnppZWh0LCB3ZW5uIG1hbiBoaWVyIDEgenVydWVja2dpYnQuCisgICAgIFNwZXppZWxsIGJlaSBTY2hpbGRlbiBrYW5uIGRhcyBBbnppZWhlbiB0cm90eiBlaW5lcyBSdWVja2dhYmV3ZXJ0ZXMgCisgICAgICE9IDAgaW1tZXIgbm9jaCBzY2hpZWYgZ2VoZW4sIHdlbm4gZGVyIFNwaWVsZXIga2VpbmUgSGFuZCBtZWhyIGZyZWkgaGF0LgorICAgICBXZW5uIGlociBzaWNoZXIgc2VpbiB3b2xsdCwgZGFzcyBkZXIgU3BpZWxlciBlaW4gT2JqZWt0IGFuZ2V6b2dlbiBoYXQsCisgICAgIGJlbnV0enQgYml0dGUgSW5mb3JtV2VhcigpLgorICAgICBCaXR0ZSBuaWNodCBkcmF1ZiB2ZXJsYXNzZW4sIGRhc3MgdGhpc19wbGF5ZXIoKSBkYXMgYXVzemllaGVuZGUgTGViZXdlc2VuCisgICAgIGlzdC4KKyAgICAgRGllIFJlaWhlbmZvbGdlIGRlciBBcmd1bWVudGUgaXN0IGV0d2FzIHVuc2Nob2VuLCBhYmVyIGxlaWRlciB3dXJkZSA8dXNlcj4KKyAgICAgZXJoZWJsaWNoIHNwYWV0ZXIgaGluenVnZWZ1ZWd0IHVuZCBlcyB3YXIgdW5tb2VnbGljaCwgZWluaWdlIGh1bmRlcnQKKyAgICAgT2JqZWt0ZSB6dSBhZW5kZXJuLgorCitCRUlTUElFTEU6CisgICAgIEVpbiBIZWxtLCBkZXIgbnVyIHZvbiBFbGZlbiBnZXRyYWdlbiB3ZXJkZW4ga2FubjoKKworICAgICBpbmhlcml0ICJzdGQvYXJtb3VyLmMiOworCisgICAgICNpbmNsdWRlIDxwcm9wZXJ0aWVzLmg+CisKKyAgICAgY3JlYXRlKCkKKyAgICAgeworICAgICAgIDo6Y3JlYXRlKCk7CisKKyAgICAgICBTZXRQcm9wKFBfQVJNT1VSX1RZUEUsIEFUX0hFTE1FVCk7CisgICAgICAgLyogemlnIHdlaXRlcmUgU2V0UHJvcCdzLCB1bSBkZW4gSGVsbSB6dSBrb25maWd1cmllcmVuICovCisKKyAgICAgICAvKiBXZWFyRnVuYygpIGlzdCBpbSBIZWxtIHNlbGJzdCB6dSBmaW5kZW4gKi8KKyAgICAgICBTZXRQcm9wKFBfV0VBUl9GVU5DLCB0aGlzX29iamVjdCgpKTsKKyAgICAgfQorCisgICAgIGludCBXZWFyRnVuYyhvYmplY3QgbWUsIGludCBzaWxlbnQsIG9iamVjdCB1c2VyKQorICAgICB7CisgICAgICAgaWYgKHVzZXItPlF1ZXJ5UHJvcChQX1JBQ0UpID09ICJFbGYiKQorICAgICAgICAgcmV0dXJuIDE7ICAgLyogRWxmZW4gZHVlcmZlbiBkZW4gSGVsbSB0cmFnZW4gKi8KKworICAgICAgIC8qIERpZSBhbmRlcmVuIFJhc3NlbiBzb2xsdGVuIHp1bWluZGVzdCBlcmZhaHJlbiBrb2VubmVuLCB3aWVzbworICAgICAgICAgIHNpZSBkZW4gSGVsbSBuaWNodCB0cmFnZW4ga29lbm5lbi4uLiAqLworICAgICAgIGlmICghc2lsZW50KQorICAgICAgICAgICB3cml0ZSggIkRlciBIZWxtIHJ1dHNjaHQgRGlyIGltbWVyIHVlYmVyIERlaW5lIHJ1bmRlbiAiCisgICAgICAgICAgICAgICAgICsiT2hyZW4uXG4iICk7CisgICAgICAgcmV0dXJuIDA7CisgICAgIH0KKworICAgICBHaWJ0IGpldHp0IGVpbiBOaWNodC1FbGYgInRyYWdlIGhlbG0iIGVpbiwgc28gYmVrb21tdCBlciBkaWUgTWVsZHVuZworICAgICAiRGVyIEhlbG0gcnV0c2NodCBEaXIgaW1tZXIgdWViZXIgRGVpbmUgcnVuZGVuIE9ocmVuLiIsIEVsZmVuIGRhZ2VnZW4KKyAgICAgcGFzc3QgZGFzIFRlaWwgd2llIGFuZ2Vnb3NzZW4uCisKK1NJRUhFIEFVQ0g6CisgICAgIFBfV0VBUl9NU0csIFBfVU5XRUFSX01TRywgUF9XSUVMRF9NU0csIFBfVU5XSUVMRF9NU0cKKyAgICAgRG9XZWFyKCksIERvVW53ZWFyKCksIEluZm9ybVVud2VhcigpLCBJbmZvcm1XZWFyKCkKKyAgICAgL3N0ZC9jbG90aGluZy93ZWFyLmMKKworLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorMDIuMDIuMjAwOSwgWmVzc3RyYQpkaWZmIC0tZ2l0IGEvZG9jL2xmdW4vV2llbGRGdW5jIGIvZG9jL2xmdW4vV2llbGRGdW5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjIzZTI5OWYKLS0tIC9kZXYvbnVsbAorKysgYi9kb2MvbGZ1bi9XaWVsZEZ1bmMKQEAgLTAsMCArMSw3NyBAQAorV2llbGRGdW5jKCkKKworRlVOS1RJT046CisgICAgIGludCBXaWVsZEZ1bmMob2JqZWN0IHdlYXBvbiwgaW50IHNpbGVudCwgb2JqZWN0IHVzZXIpOworCitERUZJTklFUlQgSU46CisgICAgIGVpZ2VuZW4gT2JqZWt0ZW4gKGZ1ZXIgL3N0ZC93ZWFwb24vY29tYmF0KQorCitBUkdVTUVOVEU6CisgICAgIHdlYXBvbiAob2JqZWN0KQorICAgICAgICAgIERpZSBXYWZmZSwgZGllIGdlenVlY2t0IHdlcmRlbiBzb2xsLgorICAgICBzaWxlbnQgKGludCkKKyAgICAgICAgICBPYiBkYWJlaSBlaW5lIE1lbGR1bmcgYXVzZ2VnZWJlbiB3ZXJkZW4gc29sbC4KKyAgICAgdXNlciAob2JqZWN0KQorICAgICAgICAgIERhcyBMZWJld2VzZW4sIHdlbGNoZXMgZGllIFdhZmZlIHp1ZWNrZW4gd2lsbC4KKworQkVTQ0hSRUlCVU5HOgorICAgICBJbiBkaWVzZXIgRnVua3Rpb24ga2FubiBtYW4genVzYWV0emxpY2hlIEFiZnJhZ2VuIHZvcm5laG1lbiwgb2Igc2ljaAorICAgICBkaWUgV2FmZmUgPHdlYXBvbj4gdm9uIDx1c2VyPiB6dWVja2VuIGxhZXNzdCBvZGVyIG5pY2h0LgorCitSVWVDS0dBQkVXRVJUOgorICAgICAwLCB3ZW5uIGRpZSBXYWZmZSBuaWNodCBnZXp1ZWNrdCB3ZXJkZW4ga2Fubiwgc29uc3QgdW5nbGVpY2ggMC4KKworQkVNRVJLVU5HRU46CisgICAgIFNlbGJzdCB3ZW5uIG1hbiBlaW5lbiBXZXJ0IHVuZ2xlaWNoIE51bGwgenVydWVja2dpYnQsIGlzdCBkYXMgbm9jaAorICAgICBrZWluZSBHYXJhbnRpZSwgZGFzcyBzaWNoIGRpZSBXYWZmZSBhdWNoIHdpcmtsaWNoIHp1ZWNrZW4gbGFlc3N0ISBEZXIKKyAgICAgU3BpZWxlciBrb2VubnRlIHp1bSBCZWlzcGllbCBub2NoIGVpbmUgV2FmZmUgZ2V6dWVja3QgaGFiZW4sIGRpZSBzaWNoCisgICAgIG5pY2h0IHdlZ3N0ZWNrZW4gbGFlc3N0LCBldGMuCisgICAgIFdlbm4gaWhyIHNpY2hlciBzZWluIHdvbGx0LCBkYXNzIGRlciBTcGllbGVyIGVpbiBPYmpla3QgZ2V6dWVja3QgaGF0LAorICAgICBiZW51dHp0IGJpdHRlIEluZm9ybVdpZWxkKCkuCisgICAgIEJpdHRlIG5pY2h0IGRyYXVmIHZlcmxhc3NlbiwgZGFzcyB0aGlzX3BsYXllcigpIGRhcyBMZWJld2VzZW4gaXN0LAorICAgICB3ZWxjaGVzIGRpZSBXYWZmZSB6dWVja2Ugd2lsbC4KKyAgICAgRGllIFJlaWhlbmZvbGdlIGRlciBBcmd1bWVudGUgaXN0IGV0d2FzIHVuc2Nob2VuLCBhYmVyIGxlaWRlciB3dXJkZSA8dXNlcj4KKyAgICAgZXJoZWJsaWNoIHNwYWV0ZXIgaGluenVnZWZ1ZWd0IHVuZCBlcyB3YXIgdW5tb2VnbGljaCwgZWluaWdlIGh1bmRlcnQKKyAgICAgT2JqZWt0ZSB6dSBhZW5kZXJuLgorCitCRUlTUElFTEU6CisgICAgIEVpbmUgV2FmZmUsIGRpZSBzaWNoIG5pY2h0IHZvbiBad2VyZ2VuIHp1ZWNrZW4gbGFlc3N0OgorCisgICAgIGluaGVyaXQgInN0ZC93ZWFwb24iOworCisgICAgICNpbmNsdWRlIDxwcm9wZXJ0aWVzLmg+CisgICAgICNpbmNsdWRlIDxjb21iYXQuaD4KKworICAgICBjcmVhdGUoKQorICAgICB7CisgICAgICAgOjpjcmVhdGUoKTsKKworICAgICAgIC4uLiAvKiB6aWcgU2V0UHJvcCdzLCB1bSBkaWUgV2FmZmUgenUga29uZmlndXJpZXJlbiAqLworCisgICAgICAgLyogV2llbGRGdW5jKCkgaXN0IGluIGRlciBXYWZmZSBzZWxic3QgenUgZmluZGVuICovCisgICAgICAgU2V0UHJvcChQX1dJRUxEX0ZVTkMsIHRoaXNfb2JqZWN0KCkpOworICAgICB9CisKKyAgICAgaW50IFdpZWxkRnVuYyhvYmplY3Qgd2VhcG9uLCBpbnQgc2lsZW50LCBvYmplY3QgdXNlcikKKyAgICAgeworICAgICAgIC8qIE5pY2h0LVp3ZXJnZSBkdWVyZmVuIGRpZSBXYWZmZSB6dWVja2VuICovCisgICAgICAgaWYgKHVzZXItPlF1ZXJ5UHJvcChQX1JBQ0UpICE9ICJad2VyZyIpCisgICAgICAgICByZXR1cm4gMTsKKworICAgICAgIC8qIEFuc29uc3RlbiBzYWdlbiB3aXIgZXZ0bC4sIHdhcnVtIGRhcyBadWVja2VuIG5pY2h0IGtsYXBwdC4uLiAqLworICAgICAgIGlmICghc2lsZW50KQorICAgICAgICAgd3JpdGUoICJEZWluZSBrbGVpbmVuIEhhZW5kY2hlbiBrb2VubmVuIGRlbiBHcmlmZiBuaWNodCAiKworICAgICAgICAgICAgICAgICJ1bWtsYW1tZXJuLlxuIik7CisKKyAgICAgICAvKiAuLi51bmQgYnJlY2hlbiBkYXMgWnVlY2tlbiBhYi4gKi8KKyAgICAgICByZXR1cm4gMDsKKyAgICAgfQorCitTSUVIRSBBVUNIOgorICAgICBQX1dJRUxEX01TRywgUF9VTldJRUxEX01TRywgUF9XRUFSX01TRywgUF9VTldFQVJfTVNHCisgICAgIERvV2llbGQoKSwgRG9VbndpZWxkKCksIEluZm9ybVVud2llbGQoKSwgSW5mb3JtV2llbGQoKSAKKyAgICAgVW53aWVsZEZ1bmMsIFdpZWxkRnVuYyAKKyAgICAgL3N0ZC93ZWFwb24vY29tYmF0LmMKKworLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiswMi4wMi4yMDA5LCBaZXNzdHJhCmRpZmYgLS1naXQgYS9kb2MvbGZ1bi9XaXRoRHJhdyBiL2RvYy9sZnVuL1dpdGhEcmF3Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmQxNTMyYTIKLS0tIC9kZXYvbnVsbAorKysgYi9kb2MvbGZ1bi9XaXRoRHJhdwpAQCAtMCwwICsxLDQyIEBACitXaXRoRHJhdygpCitGVU5LVElPTjoKKyAgICAgaW50IFdpdGhEcmF3KGludCBhbW91bnQpOworCitERUZJTklFUlQgSU46CisgICAgIC9wL2RhZW1vbi96ZW50cmFsYmFuay5jCisKK0FSR1VNRU5URToKKyAgICAgaW50IGFtb3VudAktIGFuZ2Vmb3JkZXJ0ZSBHZWxkbWVuZ2UKKworQkVTQ0hSRUlCVU5HOgorICAgICBEYW1pdCB3aXJkIGJlaSBkZXIgWmVudHJhbGJhbmsgZWluZSBiZXN0aW1tdGUgTWVuZ2UgR2VsZCBhbmdlZm9yZGVydC4KKyAgICAgRGVyIFJ1ZWNrZ2FiZXdlcnQgaGFlbmd0IHZvbSBLYXNzZW5zdGFuZCBkZXIgWmVudHJhbGJhbmsgYWIgdW5kIGlzdAorICAgICBlbnR3ZWRlciBhbW91bnQgb2RlciBhbW91bnQvMy4KKworUlVlQ0tHQUJFV0VSVDoKKyAgICAgTWVuZ2UgZGVzIGJlaSBkZXIgWmVudHJhbGJhbmsgImFiZ2Vob2JlbmVuIiBHZWxkZXMuCisKK0JFSVNQSUVMRToKKyAgICAgI2luY2x1ZGUgPGJhbmsuaD4KKyAgICAgLi4uCisgICAgIGlmKFpFTlRSQUxCQU5LLT5XaXRoRHJhdyg1MDAwMCk8NTAwMDApCisgICAgICB3cml0ZShicmVha19zdHJpbmcoCisgICAgICAgIkxlaWRlciBrb2VubmVuIHdpciBpaG5lbiBrZWluZW4gdm9sbGVuIFp1c2NodXNzIHp1IGlocmVtIEhvdGVsYmF1ICIKKyAgICAgICAiZ2ViZW4hIiwKKyAgICAgICAiRGVyIEJlYW10ZSBzYWd0OiAiLDc4KSk7CisgICAgICBzYXkoYnJlYWtfc3RyaW5nKAorICAgICAgICJMZWlkZXIga29lbm5lbiB3aXIgaWhuZW4ga2VpbmVuIHZvbGxlbiBadXNjaHVzcyB6dSBpaHJlbSBIb3RlbGJhdSAiCisgICAgICAgImdlYmVuISIsCisgICAgICAgIkRlciBCZWFtdGUgc2FndCB6dSAiK3RoaXNfcGxheWVyKCktPm5hbWUoV0VNKSsiOiAiLDc4KSk7CisgICAgICAuLi4KKworQkVNRVJLVU5HRU46CisgICAgIFVuc2VyZSBaZW50cmFsYmFuayBpc3Qga29ycnVwdCwgdm9yIGFsbGVtIGRhZHVyY2gsIGRhc3MgaW4gTGFlZGVuIHVuZAorICAgICBhbiBhbmRlcmVuIFN0ZWxsZW4gR2VsZCBlcnpldWd0IHdpcmQuCisKK1NJRUhFIEFVQ0g6CisgICAgIEdlbGRoYW5kbGluZzoJQWRkTW9uZXkoTCksIFF1ZXJ5TW9uZXkoTCkKKyAgICAgWmVudHJhbGJhbms6CVBheUluKEwpLCBfcXVlcnlfY3VycmVudF9tb25leShMKQorICAgICBTb25zdGlnZXM6CQkvaXRlbXMvbW9uZXkuYywgL3N5cy9iYW5rLmgKKworMjcuIEFwciAyMDA0IEdsb2luc29uCmRpZmYgLS1naXQgYS9kb2MvbGZ1bi9fX0lOSVQgYi9kb2MvbGZ1bi9fX0lOSVQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMjA4YjY1NQotLS0gL2Rldi9udWxsCisrKyBiL2RvYy9sZnVuL19fSU5JVApAQCAtMCwwICsxLDEyIEBACitTWU5PUFNJUzoKKwlfX0lOSVQKKworREVTQ1JJUFRJT046CisJVGhpcyBmdW5jdGlvbiBpcyBjb25zdHJ1Y3RlZCBhdXRvbWFnaWNhbGx5IGJ5IHRoZSBwYXJzZXIgYXQKKwljb21waWxlciwgaWYgdGhlIHBhcnNlciB3YXMgY29tcGlsZWQgd2l0aCAjZGVmaW5lCisJSU5JVElBTElTQVRJT05fX0lOSVQuIFRoaXMgZnVuY3Rpb24gaXMgbm90IGludGVuZGVkIHRvIGJlCisJZGVmaW5lZCBieSB0aGUgbHBjIG9iamVjdHMsIGFuZCBuZXZlciB0byBiZSBjYWxsZWQgZnJvbSBscGMKKwlvYmplY3RzLiBUaGlzIG1hbiBwYWdlIGlzIGhlcmUganVzdCBmb3IgY29tcGxldGVuZXNzLgorCitTRUUgQUxTTzoKKwlpbml0aWFsaXNhdGlvbihMUEMpCmRpZmYgLS1naXQgYS9kb2MvbGZ1bi9fcXVlcnlfY3VycmVudF9tb25leSBiL2RvYy9sZnVuL19xdWVyeV9jdXJyZW50X21vbmV5Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjE2YjdlZTUKLS0tIC9kZXYvbnVsbAorKysgYi9kb2MvbGZ1bi9fcXVlcnlfY3VycmVudF9tb25leQpAQCAtMCwwICsxLDMyIEBACitfcXVlcnlfY3VycmVudF9tb25leSgpCitGVU5LVElPTjoKKyAgICAgaW50IF9xdWVyeV9jdXJyZW50X21vbmV5KCkKKworREVGSU5JRVJUIElOOgorICAgICAvcC9kYWVtb24vemVudHJhbGJhbmsuYworCitCRVNDSFJFSUJVTkc6CisgICAgIEVzIHdpcmQgenVydWVja2dlZ2ViZW4sIHdpZXZpZWwgR2VsZCBkaWUgWmVudHJhbGJhbmsgYmVzaXR6dC4KKworQkVJU1BJRUxFOgorICAgICAjaW5jbHVkZSA8YmFuay5oPgorICAgICAuLi4KKyAgICAgaWYoWkVOVFJBTEJBTkstPl9xdWVyeV9jdXJyZW50X21vbmV5KCk8MzAwMDApIHsKKyAgICAgIHdyaXRlKGJyZWFrX3N0cmluZygKKyAgICAgICAiTGVpZGVyIGtvZW5uZW4gd2lyIGlocmVuIEJhdXNwYXJ2ZXJ0cmFnIGRlcnplaXQgbmljaHQgZWlubG9lc2VuLiIsCisgICAgICAgIkRlciBCZWFtdGUgc2FndDogIiw3OCkpOworICAgICAgc2F5KGJyZWFrX3N0cmluZygKKyAgICAgICAiTGVpZGVyIGtvZW5uZW4gd2lyIGlocmVuIEJhdXNwYXJ2ZXJ0cmFnIGRlcnplaXQgbmljaHQgZWlubG9lc2VuLiIsCisgICAgICAgIkRlciBCZWFtdGUgc2FndCB6dSAiK3RoaXNfcGxheWVyKCktPm5hbWUoV0VNKSsiOiAiLDc4KSk7CisgICAgIH0KKworQkVNRVJLVU5HRU46CisgICAgIFVuc2VyZSBaZW50cmFsYmFuayBpc3Qga29ycnVwdCwgdm9yIGFsbGVtIGRhZHVyY2gsIGRhc3MgaW4gTGFlZGVuIHVuZAorICAgICBhbiBhbmRlcmVuIFN0ZWxsZW4gR2VsZCBlcnpldWd0IHdpcmQuCisKK1NJRUhFIEFVQ0g6CisgICAgIEdlbGRoYW5kbGluZzoJQWRkTW9uZXkoTCksIFF1ZXJ5TW9uZXkoTCkKKyAgICAgWmVudHJhbGJhbms6CVdpdGhEcmF3KEwpLCBQYXlJbihMKQorICAgICBTb25zdGlnZXM6CQkvaXRlbXMvbW9uZXkuYywgL3N5cy9iYW5rLmgKKworMjcuIEFwciAyMDA0IEdsb2luc29uCmRpZmYgLS1naXQgYS9kb2MvbGZ1bi9fdW5wYXJzZWRfYXJncyBiL2RvYy9sZnVuL191bnBhcnNlZF9hcmdzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjRlNTI3YjgKLS0tIC9kZXYvbnVsbAorKysgYi9kb2MvbGZ1bi9fdW5wYXJzZWRfYXJncwpAQCAtMCwwICsxLDI5IEBACitfdW5wYXJzZWRfYXJncygpCitGVU5LVElPTjoKKyAgICAgdmFyYXJncyBzdHJpbmcgX3VucGFyc2VkX2FyZ3MoaW50IGxldmVsKQorCitERUZJTklFUlQgSU46CisgICAgIC9zdGQvcGxheWVyL2NvbW1hbmQuYzoKKworQVJHVU1FTlRFOgorICAgICBsZXZlbAorICAgICAgICAgIEdpYnQgYW4sIHdpZXZpZWwgZGVzIFRleHRlcyAid2VnZ2VwYXJzZWQiIHdlcmRlbiBzb2xsLgorCitCRVNDSFJFSUJVTkc6CisgICAgIEdpYnQgZGVuIFRleHQgZGVzIGxldHp0ZW4gQmVmZWhscyBkZXMgU3BpZWxlcnMgKG9obmUgZGFzIEJlZmVobHN3b3J0CisgICAgIHNlbGJzdCkgenVydWVjay4gImxldmVsIiBnaWJ0IGRhYmVpIGFuLCB3aWV2aWVsIGdlcGFyc2VkIHdpcmQ6CisgICAgIGxldmVsID0gMCA6IEdhciBrZWluIFBhcnNpbmcuCisgICAgICAgICAgICAgICAgIC0+IGVudHNwcmljaHQgZWluZW0gcXVlcnlfY29tbWFuZCgpCisgICAgIGxldmVsID0gMSA6IERlciBUZXh0IHdpcmQgaW4gS2xlaW5idWNoc3RhYmVuIHVtZ2V3YW5kZWx0LCBkb3BwZWx0ZQorICAgICAgICAgICAgICAgICBMZWVyemVpY2hlbiB3ZXJkZW4gZW50ZmVybnQuCisgICAgIGxldmVsID0gMiA6IFNlbWlrb2xpLCBLb21tYXRhIHVuZCBEb3BwZWxwdW5rdGUgd2VyZGVuIGluIExlZXJ6ZWljaGVuCisJCSB1bWdld2FuZGVsdCwgZG9wcGVsdGUgTGVlcnplaWNoZW4gdW5kIEFydGlrZWwgKGRlciwgZGllLAorCQkgZGFzLCBlaW4sLi4uKSB3ZXJkZW4gZW50ZmVybnQuCisKK1JVZUNLR0FCRVdFUlQ6CisgICAgIERlciBnZXBhcnN0ZSBUZXh0LgorCitTSUVIRSBBVUNIOgorICAgICBxdWVyeV9jb21tYW5kKCkKKworNy5BdWcgMjAwNyBHbG9pbnNvbgpkaWZmIC0tZ2l0IGEvZG9jL2xmdW4vYWNjZXNzX3JpZ2h0cyBiL2RvYy9sZnVuL2FjY2Vzc19yaWdodHMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOTg1OTc2MQotLS0gL2Rldi9udWxsCisrKyBiL2RvYy9sZnVuL2FjY2Vzc19yaWdodHMKQEAgLTAsMCArMSw3NSBAQAorYWNjZXNzX3JpZ2h0cygpCisKK0ZVTktUSU9OOgorICAgIGludCBhY2Nlc3NfcmlnaHRzKHN0cmluZyBldWlkLCBzdHJpbmcgZmlsZSk7CisKK0RFRklOSUVSVCBJTjoKKyAgICBhY2Nlc3NfcmlnaHRzLmMgKG11c3MgbWFuIHNlbGJlciBzY2hyZWliZW4pCisKK1BBUkFNRVRFUjoKKyAgICBldWlkCisgICAgICAgIERpZSBldWlkIGRlc2plbmlnZW4sIGRlciBhdWYgZGFzIFZlcnplaWNobmlzIHNjaHJlaWJlbiB3aWxsCisgICAgZmlsZQorICAgICAgICBOYW1lIGRlciBEYXRlaSwgYXVmIGRpZSB6dWdlZ3JpZmZlbiB3ZXJkZW4gc29sbAorCitCRVNDSFJFSUJVTkc6CisgICAgYWNjZXNzX3JpZ2h0cygpIHdpcmQgaW1tZXIgZGFubiBhdWZnZXJ1ZmVuLCB3ZW5uIGplbWFuZCwgZGVyIG5pY2h0CisgICAgc293aWVzbyBzY2hvbiBzY2hyZWliYmVyZWNodGlndCBpc3QsIGluIGRpZSBEYXRlaS9kYXMgVmVyemVpY2huaXMgZmlsZQorICAgIHNjaHJlaWJlbiBvZGVyIGxvZXNjaGVuIHdpbGwuCisKKyAgICBBbmhhbmQgdm9uIGV1aWQga2FubiBtYW4gZGFubiBlbnRzY2hlaWRlbiwgb2IgZGVyIFNjaHJlaWJ6dWdyaWZmIGVybGF1YnQKKyAgICB3aXJkIG9kZXIgbmljaHQuCisKK1JVRUNLR0FCRVdFUlQ6CisgICAgMCwgd2VubiBkZXIgWnVncmlmZiB2ZXJ3ZWlnZXJ0IHdpcmQsCisgICAgMSwgd2VubiBkZXIgWnVncmlmZiBlcmxhdWJ0IHdpcmQuCisKK0JFSVNQSUVMRToKKyAgICAvKiAvZC9pbnNlbG4vd2FyZ29uL2FjY2Vzc19yaWdodHMuYyAqLworCisgICAgaW50IGFjY2Vzc19yaWdodHMoc3RyaW5nIGV1aWQsIHN0cmluZyBmaWxlKQorICAgIHsKKyAgICAgIHN0cmluZyBkaXIsIHJlc3Q7CisKKyAgICAgIC8vIENhdHdlYXpsZSBkYXJmIGF1ZiBhbGxlcyB6dWdyZWlmZW4gKCphcmdsKiA7XikKKyAgICAgIGlmIChldWlkID09ICJjYXR3ZWF6bGUiKQorICAgICAgICByZXR1cm4gMTsKKworICAgICAgLy8gUmVjaHRlIGF1ZiBlaW56ZWxuZSBWZXJ6ZWljaG5pc3NlIGVybWl0dGVsbjoKKyAgICAgIGlmIChzc2NhbmYoZmlsZSwgIiVzLyVzIiwgZGlyLCByZXN0KSAhPSAyKQorICAgICAgICByZXN0ID0gZmlsZTsKKworICAgICAgLy8gSm9mIHVuZCBCb2luZyBkdWVyZmVuIGFuIFRhcmtvIFJldWIgcnVtcGZ1c2NoZW46CisgICAgICBpZiAoZGlyID09ICJ0YXJrbyIgJiYgKGV1aWQgPT0gImpvZiIgfHwgZXVpZCA9PSAiYm9pbmciKSkKKyAgICAgICAgcmV0dXJuIDE7CisKKyAgICAgIC8vIEFudGhlYSBkYXJmIGRpZSBLYXJ0ZW4gdm9uIEF1cm9yYSB1bmQgZGVyIFBpcmF0ZW5ob2VobGUgYmVhcmJlaXRlbjoKKyAgICAgIGlmIChkaXIgPT0gIk1BUFMiICYmIAorICAgICAgICAgIG1lbWJlciggKHsiQXVyb3JhIiwgIlBpcmF0ZW5ob2VobGUiIH0pLCByZXN0KSA+PSAwICYmIAorICAgICAgICAgIGV1aWQgPT0gImFudGhlYSIpCisgICAgICAgIHJldHVybiAxOworCisgICAgICAvLyBhbGxlIGFuZGVyZW4gZHVlcmZlbiBuaWNodCEKKyAgICAgIHJldHVybiAwOworICAgIH0KKworQkVNRVJLVU5HRU46CisgICAgZmlsZSBpc3QgaW1tZXIgcmVsYXRpdiB6dSBkZW0gVmVyemVpY2huaXMsIGluIGRlbSBkYXMgYWNjZXNzX3JpZ2h0cy5jCisgICAgbGllZ3QhIFdpbGwgYWxzbyBqZW1hbmQgYXVmIC9kL2luc2Vsbi93YXJnb24vdGFya28vbWFjcm9zLmggc2NocmVpYmVuLAorICAgIHdpcmQgZmlsZSAidGFya28vbWFjcm9zLmgiIHVlYmVyZ2ViZW4uCisKKyAgICBJbiBWZXJ6ZWljaG5pc3NlbiB2b24gTWFnaWVybiBtaXQgZWluZW0gTGV2ZWwgPj0gRUxERVJfTFZMIHdpcmQgZGFzCisgICAgYWNjZXNzX3JpZ2h0cy5jIE5JQ0hUIGF1c2dld2VydGV0IChkYSBkYW1pdCBhbmRlcmUgTWFnaWVyIHpCLiBhbgorICAgIEVyem1hZ2llcnJlY2h0ZSBnZWxhbmdlbiBrb2VubnRlbikuCisKKyAgICBFcyB3aXJkIGltbWVyIG51ciBFSU4gYWNjZXNzX3JpZ2h0cy5jIGF1c2dld2VydGV0LCBuYWVtbGljaCBkYXMgaW4gZGVyCisgICAgdGllZnN0ZW4gVmVyemVpY2huaXNlYmVuZS4KKworICAgIE1hbiBrYW5uIHNvd29obCBpbiBzZWluZW4gUmVnaW9uc3ZlcnplaWNobmlzc2VuIGFscyBhdWNoIGluIHNlaW5lbgorICAgIEhvbWV2ZXJ6ZWljaG5pc3NlbiBhY2Nlc3NfcmlnaHRzLmMtRGF0ZWllbiBhbmxlZ2VuLgorCisgICAgR0FOWiBXSUNIVElHISEhCisgICAgRnVlciBkaWUgRGF0ZWllbiwgZGllIGV2dGwuIHZvbiBhbmRlcmVuIGFuZ2VsZWd0IHdlcmRlbiwgaXN0IG1hbiBpbW1lcgorICAgIG5vY2ggc2VsYnN0IHZlcmFudHdvcnRsaWNoISBXZW5uIGplbWFuZCBhbHNvIGVpbiBHZWJpZXQgYmVpIERpciBhbi0KKyAgICBzY2hsaWVzc3QsIG11c3MgZXMgZXJzdCB2b24gZGVuIHZlcmFudHdvcnRsaWNoZW4gUmVnaW9uc21hZ2llcm4gYWJnZXNlZ25ldAorICAgIHNlaW4hCmRpZmYgLS1naXQgYS9kb2MvbGZ1bi9idWZmZXJfaHAgYi9kb2MvbGZ1bi9idWZmZXJfaHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYzNlN2IxYgotLS0gL2Rldi9udWxsCisrKyBiL2RvYy9sZnVuL2J1ZmZlcl9ocApAQCAtMCwwICsxLDc2IEBACitGVU5LVElPTjoKKyAgICBpbnQgYnVmZmVyX2hwKCBpbnQgdmFsLCBpbnQgcmF0ZSApOworCitERUZJTklFUlQgSU46CisgICAgL3N0ZC9saXZpbmcvbGlmZS5jCisKK0FSR1VNRU5URToKKyAgICB2YWw6ICBHZXNhbXRlIEhlaWx1bmcuCisgICAgcmF0ZTogTFAtUmF0ZS4KKyAgICAgICAgCitCRVNDSFJFSUJVTkc6CisgICAgRXJob2VodCBkaWUgTFAgZWluZXMgU3BpZWxlcnMgYXV0b21hdGlzY2ggaW5zZ2VzYW10IHVtIGRlbiBXZXJ0ICJ2YWwiLgorICAgIFBybyBoZWFydF9iZWF0KCkgd2lyZCBpaG0gZGFiZWkgZGVyIFdlcnQgInJhdGUiIHp1Z2VmdWVocnQuCisgICAgU29sbGVuIG5lYmVuIFBfSFAgbm9jaCB3ZWl0ZXJlIFByb3BzIG1hbmlwdWxpZXJ0IHdlcmRlbiAtIGJzcHcuIHp1cgorICAgIFBfRk9PRCAtIGJpZXRldCBzaWNoIGRpZSBGdW5rdGlvbiBjb25zdW1lKCkgYW4uCisKK1JVRUNLR0FCRVdFUlRFOgorICAgIERlciBnZXRhbmt0ZSBXZXJ0IHBybyBoZWFydF9iZWF0KCkuCisKK0JFTUVSS1VORzoKKyAgICBTb2xsdGUgdm9uIGplZGVyIHRyYWdiYXJlbiBIZWlsdW5nIGdlbnV0enQgd2VyZGVuLCB3ZWxjaGUgZGVuIFNwaWVsZXIKKyAgICBkYXJhdWYgc2NobGllc3NlbiBsYXNzZW4ga2FubiwgYXVmIG5hdHVlcmxpY2hlbSB1bmQgbmljaHRtYWdpc2NoZW0gV2VnCisgICAgKEVzc2VuLCBUcmlua2VuKSBnZWhlaWx0IHdvcmRlbiB6dSBzZWluLgorCitCRUlTUElFTDoKKyAgICAjZGVmaW5lIFRQIHRoaXNfcGxheWVyKCkKKyAgICAuLi4KKworICAgIGludCBoZWlsdW5nPTE7CisgICAgLi4uCisKKyAgICBjcmVhdGUoKQorICAgIHsKKyAgICAgOjpjcmVhdGUoKTsKKyAgICAgU2V0UHJvcChQX05BTUUsIkhlaWxwZmxhbnplIik7CisgICAgIC4uLgorCisgICAgIEFkZENtZCgiaXNzIiwiZWF0Iik7CisgICAgfQorCisgICAgaW50IGVhdChzdHJpbmcgc3RyKQorICAgIHsKKyAgICAgIG5vdGlmeV9mYWlsKCJXQVMgd2lsbHN0IER1IGVzc2VuP1xuIik7CisgICAgICBpZiAoICFzdHIgfHwgIWlkKHN0cikgKQorICAgICAgIHJldHVybiAwOworICAgICAgLi4uCisKKyAgICAgIGlmICggIVRQLT5lYXRfZm9vZCgyNSkgKQorICAgICAgIHJldHVybiAxOworCisgICAgICBUUC0+YnVmZmVyX2hwKDIwLDUpOworICAgICAgVFAtPmJ1ZmZlcl9zcCg4MCwxMCk7CisgICAgICBoZWlsdW5nLS07CisgICAgICB3cml0ZShCUygiRHUgZnVlaGxzdCBsYW5nc2FtLCB3aWUgRGVpbmUgS3JhZWZ0ZSB6dXJ1ZWNra2VocmVuLiIpKTsKKworICAgICAgcmV0dXJuIDE7CisgICAgfQorCisgICAgcmVzZXQoKQorICAgIHsKKyAgICAgIGhlaWx1bmc9MTsKKyAgICAgIDo6cmVzZXQoKTsKKyAgICB9CisKKyAgICBFcyB3aXJkIGR1cmNoIGVhdF9mb29kIGdldGVzdGV0LCBvYiBkZXIgU3BpZWxlciBub2NoIGdlbnVlZ2VuZCBlc3NlbiBrYW5uLgorICAgIFdlbm4gamEsIGtyaWVndCB1bnNlciBIZWxkIGRpZSAyNSBhdXRvbWF0aXNjaCBvYmVuIGRyYXVmIHVuZCBhdXNzZXJkZW0KKyAgICAyMCBMUCBpbiA1LUxQLVNjaHJpdHRlbiB1bmQgODAgS1AgaW4gMTAtTFAtU2Nocml0dGVuIGd1dGdlc2NocmllYmVuLgorCitTSUVIRSBBVUNIOgorICAgICBBZWhubGljaDogIGhlYWxfc2VsZiwgcmVzdG9yZV9zcGVsbF9wb2ludHMsIHJlc3RvcmVfaGl0X3BvaW50cywgCisgICAgICAgICAgICAgICAgYnVmZmVyX3NwCisgICAgIFRhbmtlbjogICAgY29uc3VtZSwgZHJpbmtfYWxjb2hvbCwgZHJpbmtfc29mdCwgZWF0X2Zvb2QKKyAgICAgUHJvcHM6ICAgICBQX1NQLCBQX0hQLAorICAgICBLb256ZXB0ZTogIGhlaWx1bmcKKworOS4gQXVndXN0IDIwMTUgR2xvaW5zb24KZGlmZiAtLWdpdCBhL2RvYy9sZnVuL2J1ZmZlcl9zcCBiL2RvYy9sZnVuL2J1ZmZlcl9zcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5kYzczNDFjCi0tLSAvZGV2L251bGwKKysrIGIvZG9jL2xmdW4vYnVmZmVyX3NwCkBAIC0wLDAgKzEsMzYgQEAKK0ZVTktUSU9OOgorICAgIGludCBidWZmZXJfc3AoIGludCB2YWwsIGludCByYXRlICk7CisKK0RFRklOSUVSVCBJTjoKKyAgICAvc3RkL2xpdmluZy9saWZlLmMKKworQVJHVU1FTlRFOgorICAgIHZhbDogIEdlc2FtdGUgSGVpbHVuZy4KKyAgICByYXRlOiBLUC1SYXRlLgorICAgICAgICAKK0JFU0NIUkVJQlVORzoKKyAgICBFcmhvZWh0IGRpZSBLUCBlaW5lcyBTcGllbGVycyBhdXRvbWF0aXNjaCBpbnNnZXNhbXQgdW0gZGVuIFdlcnQgInZhbCIuCisgICAgUHJvIGhlYXJ0X2JlYXQoKSB3aXJkIGlobSBkYWJlaSBkZXIgV2VydCAicmF0ZSIgenVnZWZ1ZWhydC4KKyAgICBTb2xsZW4gbmViZW4gUF9TUCBub2NoIHdlaXRlcmUgUHJvcHMgbWFuaXB1bGllcnQgd2VyZGVuIC0gYnNwdy4genVyCisgICAgUF9GT09EIC0gYmlldGV0IHNpY2ggZGllIEZ1bmt0aW9uIGNvbnN1bWUoKSBhbi4KKworUlVFQ0tHQUJFV0VSVEU6CisgICAgRGVyIGdldGFua3RlIFdlcnQgcHJvIGhlYXJ0X2JlYXQoKS4KKworQkVNRVJLVU5HOgorICAgIFNvbGx0ZSB2b24gamVkZXIgdHJhZ2JhcmVuIEhlaWx1bmcgZ2VudXR6dCB3ZXJkZW4sIHdlbGNoZSBkZW4gU3BpZWxlcgorICAgIGRhcmF1ZiBzY2hsaWVzc2VuIGxhc3NlbiBrYW5uLCBhdWYgbmF0dWVybGljaGVtIHVuZCBuaWNodG1hZ2lzY2hlbSBXZWcKKyAgICAoRXNzZW4sIFRyaW5rZW4pIGdlaGVpbHQgd29yZGVuIHp1IHNlaW4uCisKK0JFSVNQSUVMOgorICAgIHMuIEJzcC4genUgImJ1ZmZlcl9ocCIKKworU0lFSEUgQVVDSDoKKyAgICAgQWVobmxpY2g6ICBoZWFsX3NlbGYsIHJlc3RvcmVfc3BlbGxfcG9pbnRzLCByZXN0b3JlX2hpdF9wb2ludHMsIAorICAgICAgICAgICAgICAgIGJ1ZmZlcl9ocAorICAgICBUYW5rZW46ICAgIGNvbnN1bWUsIGRyaW5rX2FsY29ob2wsIGRyaW5rX3NvZnQsIGVhdF9mb29kCisgICAgIFByb3BzOiAgICAgUF9TUCwgUF9IUCwKKyAgICAgS29uemVwdGU6ICBoZWlsdW5nCisKKzkuIEF1Z3VzdCAyMDE1IEdsb2luc29uCisKZGlmZiAtLWdpdCBhL2RvYy9sZnVuL2J1eV9vYmogYi9kb2MvbGZ1bi9idXlfb2JqCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmJmMTk5NWIKLS0tIC9kZXYvbnVsbAorKysgYi9kb2MvbGZ1bi9idXlfb2JqCkBAIC0wLDAgKzEsNDIgQEAKK2J1eV9vYmooKQorCitGVU5LVElPTjoKKwlzdGF0aWMgc3RyaW5nIGJ1eV9vYmoobWl4ZWQgb2IsIGludCBzaG9ydCk7CisKK0RFRklOSUVSVCBJTjoKKwkvc3RkL3Nob3AuYworCitBUkdVTUVOVEU6CisJb2IgLSBkZXIgR2VnZW5zdGFuZCBiZWkgZGVtIGdlcHJ1ZWZ0IHdlcmRlbiBzb2xsLCBvYiBkZXIgTGFkZW4gaWhuCisJICAgICBhbiB0aGlzX3BsYXllcigpIHZlcmthdWZ0LiBTb2xsdGUgZXMgc2ljaCBoaWVyYmVpIHVtIGVpbgorCSAgICAgRml4ZWRPYmplY3QgaGFuZGVsbiwgd2lyZCBlaW4gU3RyaW5nIHVlYmVyZ2ViZW4sIGFuc29uc3RlbiBlaW4KKwkgICAgIG9iamVjdC4KKyAgICAgICAgc2hvcnQgLSBCaXNoZXIgbm9jaCBuaWNodCBpbiBCZW51dHp1bmcuIEFiZXIgZnVlciBkaWUgWnVrdW5mdAorICAgICAgICAgICAgIHZvcmdlc2VobiwgZmFsbHMgbWFuIG1laHJlcmUgT2JqZWt0ZSBhdWYgZWlubWFsIGthdWZ0LgorICAgICAgICAgICAgIEVpbiBhdXN3ZXJ0ZW4gaXN0IGtlaW5lIFBmbGljaHQsIHdhZXJlIGFiZXIgcHJha3Rpc2NoLCBkYW1pdAorICAgICAgICAgICAgIGRlciBTY3JvbGwgZGFiZWkgbmljaHQgenUgZ3Jvc3Mgd2lyZC4KKworUlVlQ0tHQUJFV0VSVDoKKyAgICAgICAgRWluIFN0cmluZyB3YXMgZGVyIEhhZW5kbGVyIHNhZ2VuIHNvbGwgd2llc28gZGVyIEdlZ2Vuc3RhbmQgbmljaHQKKwl2ZXJrYXVmdCB3aXJkLiBEZXIgU3RyaW5nIHdpcmQgZGFiZWkgd2llIGZvbGd0IHVtZ2Vicm9jaGVuOgorICAgICAgICBicmVha19zdHJpbmcoc3RyLCA3OCwgTmFtZShXRVIsIDEpKyIgc2FndDogIikKK0JFU0NIUkVJQlVORzoKKwlEdXJjaCB1ZWJlcnNjaHJlaWJlbiBkaWVzZXIgRnVua3Rpb24gaXN0IGVzIG1vZWdsaWNoIGJlc3RpbW10ZQorCU9iamVrdGUgKHdpZSB6LmIuIFF1ZXN0b2JqZWt0ZSkgbnVyIGFuIGF1c2dld2FlaGx0ZSBTcGllbGVyIHp1CisJdmVya2F1ZmVuKS4gQWJlciBhdWNoIGFiZnJhZ2VuIG9iIGRlciBMYWRlbiB1ZWJlcmhhdXB0IG1pdAorCXRoaXNfcGxheWVyKCkgaGFuZGVsdCwgc2luZCBtb2VnbGljaC4KKworQkVJU1BJRUxFOgorCXN0YXRpYyBzdHJpbmcgYnV5X29iaihtaXhlZCBvYiwgaW50IHNob3J0KQorCXsKKwkgICBpZiAoUEwtPlF1ZXJ5UHJvcChQX1JBQ0UpPT0iWndlcmciKQorCSAgICAgIHJldHVybiAiSWNoIHZlcmthdWZlIG5pY2h0cyBhbiBad2VyZ2UhIjsKKwkgICByZXR1cm4gOjpidXlfb2JqKG9iLCBzaG9ydCk7CisJfQorCitTSUVIRSBBVUNIOgorCXNlbGxfb2JqKCksIEFkZEZpeGVkT2JqZWN0KCksIFJlbW92ZUZpeGVkT2JqZWN0KCksIFNldFN0b3JhZ2VSb29tKCksCisgICAgICAgIC9zdGQvc2hvcC5jCisKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KK0xhc3QgbW9kaWZpZWQ6IFRodSBNYXIgNCAxNToyNjoxMyAxOTk5IGJ5IFBhZHJlaWMKZGlmZiAtLWdpdCBhL2RvYy9sZnVuL2NhdGNoX21zZyBiL2RvYy9sZnVuL2NhdGNoX21zZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4zYmYwOWM5Ci0tLSAvZGV2L251bGwKKysrIGIvZG9jL2xmdW4vY2F0Y2hfbXNnCkBAIC0wLDAgKzEsMTUgQEAKK2NhdGNoX21zZygpCisKK1NZTk9QU0lTOgorICAgIHZvaWQgY2F0Y2hfbXNnKG1peGVkICphcnIsIG9iamVjdCBvYmopCisKK0RFU0NSSVBUSU9OOgorICAgIFdoZW4gc2F5KCksIHRlbGxfb2JqZWN0KCkgIG9yIHRlbGxfcm9vbSgpIGFyZSB1c2VkIHdpdGggYW4gYXJyYXkgCisgICAgYXMgbWVzc2FnZSwgdGhlIGFycmF5IHdpbGwgYmUgcGFzc2VkIHRvIGNhdGNoX21lc3NhZ2UoKSBpbiBhbGwgbGl2aW5nCisgICAgb2JqZWN0cyB0aGF0IGNhbiBoZWFyIGl0LCBpbnN0ZWFkIG9mIHdyaXRpbmcgdG8gdGhlIHVzZXIgcmVzcC4KKyAgICBzZW5kaW5nIHRvIGNhdGNoX3RlbGwoKS4gVGhpcyBjYW4gYmUgdXNlZCB0byBpbXBsZW1lbnQKKyAgICBjb21tdW5pY2F0aW9uIHByb3RvY29scyBiZXR3ZWVuIGxpdmluZ3MuIFRoZSBzZWNvbmQgZGVub3RlcworICAgIHRoZSBvYmplY3QgdGhhdCBoYXMgc2VudCB0aGUgbWVzc2FnZS4KKworU0VFIEFMU086Cisgc2F5KEUpLCB0ZWxsX3Jvb20oRSksIHRlbGxfb2JqZWN0KEUpLCBjYXRjaF90ZWxsKEwpCmRpZmYgLS1naXQgYS9kb2MvbGZ1bi9jYXRjaF90ZWxsIGIvZG9jL2xmdW4vY2F0Y2hfdGVsbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5iNjQ4MzJiCi0tLSAvZGV2L251bGwKKysrIGIvZG9jL2xmdW4vY2F0Y2hfdGVsbApAQCAtMCwwICsxLDI1IEBACitjYXRjaF90ZWxsKCkKKworU1lOT1BTSVM6CisJdm9pZCBjYXRjaF90ZWxsKHN0cmluZykKKworREVTQ1JJUFRJT046CisJV2hlbiBhIG1lc3NhZ2UgaXMgc2VudCB0byBhIG5vbmludGVyYWN0aXZlIHBsYXllciwgdmlhIHNheSgpLAorCXRlbGxfb2JqZWN0LCB0ZWxsX3Jvb20oKSwgcHJpbnRmKCkgb3Igd3JpdGUoKSwgaXQgd2lsbCBnZXQgdG8gdGhlCisJZnVuY3Rpb24gY2F0Y2hfdGVsbChzdHJpbmcpLiBUaGlzIHdpbGwgZW5hYmxlIGNvbW11bmljYXRpb25zIGJldHdlZW4KKwlOUENzIGFuZCBmcm9tIGEgcGxheWVyIHRvIGFuIE5QQy4KKworCUFsc28sIGlmIGFuIGludGVyYWN0aXZlIG9iamVjdCBpcyBiZWluZyBzaGFkb3dlZCBhbmQgdGhlCisJc2hhZG93IGhhcyBjYXRjaF90ZWxsKCkgZGVmaW5lZCwgaXQgd2lsbCByZWNlaXZlIGFsbCBvdXRwdXQKKwl0aGF0IHdvdWxkIG90aGVyd2lzZSBiZSB3cml0dGVuIHRvIHRoZSB1c2VyLgorCisJSWYgYSBtZXNzYWdlIGlzIHNlbnQgYnkgYW4gaW50ZXJhY3RpdmUgb2JqZWN0LCBjYXRjaF90ZWxsKCkgaXMKKwlub3QgY2FsbGVkIGluIHRoYXQgb2JqZWN0LCB0byBwcmV2ZW50IHJlY3Vyc2l2ZSBjYWxscy4gVGh1cworCWNhdGNoX3RlbGwoKSBpbiBpbnRlcmFjdGl2ZSBvYmplY3RzIGNhbiBiZSB1c2VkIHRvIGZpbHRlciB0aGUKKwlvdXRwdXQgdGhhdCBnb2VzIHRvIHRoZSB1c2Vycy4KKworCVRoZSBlZnVuIHNob3V0KCkgc2VuZHMgdG8gaW50ZXJhY3RpdmUgb2JqZWN0cyBvbmx5LgorCitTRUUgQUxTTzoKKwllbmFibGVfY29tbWFuZHMoRSksIHNheShFKSwgdGVsbF9vYmplY3QoRSksIHRlbGxfcm9vbShFKSwKKwl3cml0ZShFKSwgY2F0Y2hfbXNnKEwpIApkaWZmIC0tZ2l0IGEvZG9jL2xmdW4vY2hlY2tfYW5kX3VwZGF0ZV90aW1lZF9rZXkgYi9kb2MvbGZ1bi9jaGVja19hbmRfdXBkYXRlX3RpbWVkX2tleQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41MTNjMjYxCi0tLSAvZGV2L251bGwKKysrIGIvZG9jL2xmdW4vY2hlY2tfYW5kX3VwZGF0ZV90aW1lZF9rZXkKQEAgLTAsMCArMSw5MyBAQAorY2hlY2tfYW5kX3VwZGF0ZV90aW1lZF9rZXkoKQorCitGVU5LVElPTjoKKyAgICAgICBwdWJsaWMgaW50IGNoZWNrX2FuZF91cGRhdGVfdGltZWRfa2V5KGludCBkdXJhdGlvbiwgc3RyaW5nIGtleSkKKyAgICAgICAKK0RFRklOSUVSVCBJTjoKKyAgICAgICAvc3RkL2xpdmluZy9saWZlLmMgICAgCisKK0FSR1VNRU5URToKKyAgICAgICBpbnQgZHVyYXRpb246IEluIHdpZXZpZWwgU2VrdW5kZW4gd2lyZCA8a2V5PiB3aWVkZXIgZnJlaWdlYmViZW4sCisgICAgICAgICAgICAgICAgICAgICAoei5CLiB3YW5uIGthbm4gZGVyIFNwaWVsZXIgYW4gZGllc2VyIFN0ZWxsZSBlaW5lIG5ldWUgCisgICAgICAgICAgICAgICAgICAgICBIZWlsdW5nIGJla29tbWVuKS4KKyAgICAgICBzdHJpbmcga2V5ICA6IEVpbmRldXRpZ2VyIE5hbWUsIHdpcmQgenVzYW1tZW4gbWl0IDxkdXJhdGlvbj4KKyAgICAgICAgICAgICAgICAgICAgIGdlc3BlaWNoZXJ0LgorCitCRVNDSFJFSUJVTkc6CisgICAgICAgRGllc2UgRnVua3Rpb24gaGF0IGRpZSBBdWZnYWJlLCBaZWl0c3BlcnJlbiB2ZXJzY2hpZWRlbnN0ZXIgQXJ0CisgICAgICAgZWluZmFjaCB6dSBlcm1vZWdsaWNoZW4gKHouQi4gZGllIFJlYWxpc2llcnVuZyBjaGFyYWt0ZXItYWJoYWVuZ2lnZXIKKyAgICAgICBIZWlsc3RlbGxlbiB1LmFlLikuCisKKyAgICAgICA8a2V5PiBtdXNzIGVpbmRldXRpZyBzZWluLCBhbSBiZXN0ZW4gdmVyd2VuZGV0IG1hbiBkZW4gZWlnZW5lbgorICAgICAgIE1hZ2llcm5hbWVuICh1bmQgZ2dmLiBuZW4gR2ViaWV0c25hbWVuKSBhbHMgVGVpbCBkZXMgU3RyaW5ncy4KKworICAgICAgIERpZSBGdW5rdGlvbiBpc3QgZGVmaW5pZXJ0IGluIC9zdGQvbGl2aW5nL2xpZmUuYy4gU29taXQgZnVua3Rpb25pZXJ0CisgICAgICAgc2llIGF1Y2ggYmVpIE5QQ3MuIERpZSBEYXRlbiB3ZXJkZW4gaW4gUF9USU1JTkdfTUFQIGdlc3BlaWNoZXJ0LCBzaW5kCisgICAgICAgYWxzbyBnZWdlbiAiZW5kZSIgcmVzaXN0ZW50LiAod2VyZGVuIGFsbGVyZGluZ3MgbmFjaCBBYmxhdWYgZ2dmLgorICAgICAgICdhdWZnZXJhZXVtdCcpCisKKyAgICAgICBEYXMgTWFwcGluZyBQX1RJTUlOR19NQVAgaXN0IE5JQ0hUIHp1ciBBYmZyYWdlIHVuZCAvIG9kZXIgTWFuaXB1bGF0aW9uCisgICAgICAgJ3BlciBIYW5kJyB2b3JnZXNlaGVuLgorCitSVWVDS0dBQkVXRVJUOgorICAgICAgIDAgICAgSXJnZW5kZWluIEZlaGxlciBpbSBBdWZydWYsIGV2dGwuIGV4aXN0aWVydCBkaWUgRnVua3Rpb24gKG5vY2gpCisgICAgICAgICAgICBuaWNodCBpbSBqZXcuIE9iamVrdC4KKworICAgICAgLTEgICAgQWxsZXMgb2theS4gTmV1ZXIgWmVpdHB1bmt0IHdpcmQgYXV0b21hdGlzY2ggZ2VzcGVpY2hlcnQuIEluCisgICAgICAgICAgICBkaWVzZW0gRmFsbCBkYXJmIGRlciBTcGllbGVyIGdlaGVpbHQgd2VyZGVuLgorCisgICAgICA+MCAgICBLZXkgbm9jaCBnZXNwZXJydCwgaW4gZGVtIEZhbGwgZGFyZiBhbHNvIG5pY2h0IGdlaGVpbHQgd2VyZGVuLiAKKyAgICAgICAgICAgIERlciBSdWVja2dhYmV3ZXJ0IGlzdCBkZXIgWmVpdHB1bmt0LCBhYiBkZW0gPGtleT4gd2llZGVyIGZyZWkgaXN0LAorICAgICAgICAgICAgbGFlc3N0IHNpY2ggZGFoZXIgZGF6dSBudXR6ZW4sIHVtIGRlbSBTcGllbGVyIGVpbmVuIEFuaGFsdHNwdW5rdAorICAgICAgICAgICAgenUgZ2ViZW4sIHdhbm4gZXIgZGllIFN0ZWxsZSB3aWVkZXIgbnV0emVuIGthbm4sIGV0d2E6CisKKyAgICAgICAgICAgICJEaWUgU2NoYWxlIGlzdCBlcnN0IGhhbGIgdm9sbCwgRHUgbXVzc3Qgbm9jaCBldHdhcyB3YXJ0ZW4uIgorCitCRUlTUElFTEU6CisgICAgICAgRWluZSBIZWlsc3RlbGxlIHNvbGwgamVkZW0gU3BpZWxlciBhbGxlIDVtaW4genVyIFZlcmZ1ZWd1bmcgc3RlaGVuOgorCisgICAgICAgQWRkQ21kKCh7InRyaW5rIiwidHJpbmtlIn0pLCJ0cmlua19jbWQiKTsKKworICAgICAgIGludCB0cmlua19jbWQoc3RyaW5nIHN0cil7CisgICAgICAgICAuLi4KKyAgICAgICAgIC4uLgorICAgICAgICAgLyoKKyAgICAgICAgIERlciBrZXkgc29sbHRlIG5hdHVlcmxpY2ggZWluZSBldHdhcyBlaW5kZXV0aWdlcmUgS2VubnplaWNobnVuZworICAgICAgICAgd2llIGV0d2EgInRpbGx5X3RyaW5rZW4iIGJla29tbWVuLCBhdWNoIHdlbm4gZXIgZHVyY2ggZWluZW4KKyAgICAgICAgIGFuZGVyZW4gKGdsZWljaG5hbWlnZW4pIG5pY2h0IHVlYmVyc2NocmllYmVuIHdlcmRlbiBrYW5uLgorCisgICAgICAgICBUcmlmZnQgZGllc2UgQWJmcmFnZSBoaWVyIHp1LCBrYW5uIGRlbSBTcGllbGVyIEhlaWx1bmcgby5hZS4genUtCisgICAgICAgICBnZWZ1ZWhydCB3ZXJkZW4uIERpZSBuZXVlIFplaXQgKGR1cmF0aW9uKSB3aXJkIGF1dG9tYXRpc2NoIGdlc2V0enQuCisgICAgICAgICAqLworICAgICAgICAgaWYodGhpc19wbGF5ZXIoKS0+Y2hlY2tfYW5kX3VwZGF0ZV90aW1lZF9rZXkoMzAwLCJqb2ZfdHJpbmtlbiIpPT0tMSl7CisgICAgICAgICAgIGlmKHRoaXNfcGxheWVyKCktPmRyaW5rX3NvZnQoMikpeworICAgICAgICAgICAgIHRoaXNfcGxheWVyKCktPmhlYWxfc2VsZig1MCk7CisgICAgICAgICAgICAgd3JpdGUoIkR1IGZ1ZWhsc3QgRGljaCBzaWNodGxpY2ggZXJmcmlzY2h0LlxuIik7CisgICAgICAgICAgICAgcmV0dXJuIDE7CisgICAgICAgICAgICB9CisgICAgICAgICAgIGVsc2V7CisgICAgICAgICAgICAgd3JpdGUoIkR1IGhhc3Qgc2Nob24genV2aWVsIGdldHJ1bmtlbi5cbiIpOworICAgICAgICAgICAgIHJldHVybiAxOworICAgICAgICAgICAgfQorICAgICAgICAgIH0KKyAgICAgICAgIGVsc2UgeworICAgICAgICAgICB3cml0ZSgiRHUgdHJpbmtzdCB1bmQgZGVua3N0IC4gbyBPIChIbW0sIG5pY2h0IHNjaGxlY2h0KS5cbiIpOworICAgICAgICAgICByZXR1cm4gMTsKKyAgICAgICAgICB9CisgICAgICAgICByZXR1cm4gMDsKKyAgICAgICAgfQorCitCRU1FUktVTkdFTjogCisgICAgICAgQXVjaCBiZWkgZGllc2VyIEZ1bmt0aW9uIGlzdCBkYXJhdWYgenUgYWNodGVuLCBkYXNzIFByb3BlcnRpZXMgd2llCisgICAgICAgUF9GT09ELCBQX0RSSU5LIHVuZCBQX0FMQ09IT0wgYmVydWVja3NpY2h0aWd0IHdlcmRlbi4KKyAgICAgICBIZWlsc3RlbGxlbiBzaW5kIGRlbSB6dXN0YWVuZGlnZW4gTWFnaWVyIGZ1ZXIgSGVpbHVuZ3MtQmFsYW5jZSB6dSAKKyAgICAgICBtZWxkZW4uIFdlciBkaWVzIG1vbWVudGFuIGlzdCwga2FubiBkZW0gTWFpbGFsaWFzIGhlaWx1bmdzX2JhbGFuY2UKKyAgICAgICBlbnRub21tZW4gd2VyZGVuLgorCitTSUVIRSBBVUNIOgorICAgICAgIGNoZWNrX3RpbWVkX2tleSwgZWF0X2Zvb2QsIGRyaW5rX2FsY29ob2wsIGRyaW5rX3NvZnQsIGhlYWxfc2VsZiwKKyAgICAgICByZXN0b3JlX3NwZWxsX3BvaW50cywgcmVkdWNlX2hpdF9wb2ludAorCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiswOC4wMS4yMDEyLCBaZXNzdHJhCisKZGlmZiAtLWdpdCBhL2RvYy9sZnVuL2NoZWNrX3Jlc3RyaWN0aW9ucyBiL2RvYy9sZnVuL2NoZWNrX3Jlc3RyaWN0aW9ucwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4yYzgxNWNkCi0tLSAvZGV2L251bGwKKysrIGIvZG9jL2xmdW4vY2hlY2tfcmVzdHJpY3Rpb25zCkBAIC0wLDAgKzEsMTQ5IEBACitjaGVja19yZXN0cmljdGlvbnMoKQorRlVOS1RJT046CisgICAgc3RyaW5nIGNoZWNrX3Jlc3RyaWN0aW9ucyhvYmplY3QgcGwsIG1hcHBpbmcgcmVzdHIpCisKK0RFRklOSUVSVCBJTjoKKyAgICAvc3RkL3Jlc3RyaWN0aW9uX2NoZWNrZXIuYworCitBUkdVTUVOVEU6CisgICAgb2JqZWN0IHBsICAgICAgICBnZXBydWVmdGVzIExlYmV3ZXNlbgorICAgIG1hcHBpbmcgcmVzdHIgICAgTWFwcGluZyBtaXQgUmVzdHJpa3Rpb25lbiwgcy51LgorCitCRVNDSFJFSUJVTkc6CisgICAgRGllIE1ldGhvZGUgd2lyZCB2ZXJ3ZW5kZXQsIHVtIFJlc3RyaWt0aW9uZW4gKHp1bSBCZWlzcGllbCBmdWVyIGRhcworICAgIENhc3RlbiBlaW5lcyBTcGVsbHMpIHp1IHBydWVmZW4uIFNpZSB3aXJkIHZvbiBTcGVsbGJvb2sgdW5kCisgICAgR2lsZGVub2JqZWt0IGRpcmVrdCBnZW51dHp0LgorCisgICAgSWhyIHdpcmQgZGFiZWkgZWluIFNwaWVsZXJvYmpla3Qgc293aWUgZWluIE1hcHBpbmcgbWl0IGRlbiBqZXdlaWxpZ2VuCisgICAgUmVzdHJpa3Rpb25lbiB1ZWJlcmdlYmVuLiBEaWUgYWt0dWVsbCBtb2VnbGljaGVuIEtleXMgZGVzIE1hcHBpbmdzIHNpbmQKKyAgICB3ZWl0ZXIgdW50ZW4gZ2VsaXN0ZXQuCisKK0JFTUVSS1VOR0VOOgorICAgIEVzIHdpcmQgYmVpIGRlciBSYXNzZSBQX1JFQUxfUkFDRSBnZXBydWVmdC4gRGVyIFRhcm5oZWxtIGZ1bmt0aW9uaWVydAorICAgIGFsc28gbmljaHQuCisKKyAgICBCZWkgRXJ3ZWl0ZXJ1bmdzdm9yc2NobGFlZ2VuIHdlbmRldCBldWNoIGJpdHRlIGFuIGVpbmVuIEVNIG9kZXIKKyAgICBpbmhlcml0ZXQgaW0gWndlaWZlbHNmYWxsIG5hY2ggQWJzcHJhY2hlLgorICAgIE5JRU1BTFMgc29sY2hlbiBDb2RlIGVpbmZhY2ggS09QSUVSRU4uIFNwYWV0ZXIgbXVzcyBudXIgaXJnZW5kd2VyCisgICAgZXVyZW0gYWx0ZW4gQ29kZSBoaW50ZXJoZXJyYWV1bWVuLgorCitBa3R1ZWxsZSBMaXN0ZSBkZXIgcHJ1ZWZiYXJlbiBQYXJhbWV0ZXI6CisgICAgUF9MRVZFTAorICAgICAgTWluZGVzdHN0dWZlLCBkaWUgZGFzIExlYmV3ZXNlbiBiZXNpdHplbiBtdXNzLCB1bSBkaWUgQWt0aW9uCisgICAgICBhdXN6dWZ1ZWhyZW4uCisgICAgUF9HVUlMRF9MRVZFTAorICAgICAgR2lsZGVubGV2ZWwsIGRhcyBkYXMgTGViZXdlc2VuIG1pbmRlc3RlbnMgZXJyZWljaHQgaGFiZW4gbXVzcywgdW0gZGllCisgICAgICBBa3Rpb24gYXVzenVmdWVocmVuLgorICAgIFNSX1NFRVIKKyAgICAgIElzdCBnZXNldHp0LCB3ZW5uIGRhcyBMZWJld2VzZW4gU2VoZXIgc2VpbiBtdXNzLgorICAgICAgQXVzd2VydHVuZyBudXIgZnVlciBJbnRlcmFjdGl2ZXMsIE5TQyBpZ25vcmllcmVuIGRhcyBGbGFnLgorICAgIFBfWFAKKyAgICAgIE1pbmRlc3RtZW5nZSBhbiBFcmZhaHJ1bmdzcHVua3RlbiwgZGllIGVpbiBMZWJld2VzZW4gYmVzaXR6ZW4gbXVzcywKKyAgICAgIHVtIGRpZSBBa3Rpb24gYXVzenVmdWVocmVuLgorICAgIFBfUVAKKyAgICAgIE1pbmRlc3RtZW5nZSBhbiBBYmVudGV1ZXJwdW5rdGVuLCBkaWUgZGFzIExlYmV3ZXNlbiBoYWJlbiBtdXNzLgorICAgIFBfQUxDT0hPTAorICAgICAgTWVuZ2UgYW4gQWxrb2hvbCwgdW50ZXIgZGVyIGRlciBBbGtvaG9sc3BpZWdlbCBkZXMgTGViZXdlc2VuIGxpZWdlbgorICAgICAgbXVzcywgdW0gZGllIEFrdGlvbiBub2NoIGF1c2Z1ZWhyZW4genUga29lbm5lbi4KKyAgICBQX0RSSU5LCisgICAgICBNZW5nZSBhbiBGbHVlc3NpZ2tlaXQsIHVudGVyIGRlciBkZXIgRmx1ZXNzaWdrZWl0c3NwaWVnZWwgZGVzCisgICAgICBMZWJld2VzZW4gbGllZ2VuIG11c3MsIHVtIGRpZSBBa3Rpb24gbm9jaCBhdXNmdWVocmVuIHp1IGtvZW5uZW4uCisgICAgUF9GT09ECisgICAgICBCZWluaGFsdGV0IGRpZSBNZW5nZSBhbiBOYWhydW5nLCB1bnRlciBkZXIgZGVyIE5haHJ1bmdzc3BpZWdlbCBkZXMKKyAgICAgIFNwaWVsZXJzIGxpZWdlbiBtdXNzLCB1bSBkaWUgQWt0aW9uIG5vY2ggYXVzZnVlaHJlbiB6dSBrb2VubmVuLgorICAgIFBfREVBRgorICAgICAgSXN0IGdlc2V0enQsIGZhbGxzIGRlciBTcGllbGVyIG5pY2h0IHRhdWIgc2VpbiBkYXJmLgorICAgIFBfRlJPRworICAgICAgSXN0IGdlc2V0enQsIGZhbGxzIGRlciBTcGllbGVyIGtlaW4gRnJvc2NoIHNlaW4gZGFyZi4KKyAgICBQX0JMSU5ECisgICAgICBJc3QgZ2VzZXR6dCwgZmFsbHMgZGVyIFNwaWVsZXIgbmljaHQgYmxpbmQgc2VpbiBkYXJmLgorICAgICAgQWNodHVuZzogZGFzIGlzdCBuaWNodCBnbGVpY2hiZWRldXRlbmQgbWl0IGRlbSBVbXN0YW5kLCBkYXNzIGVyIGV2dGwuCisgICAgICBuaWNodHMgbWVociBzZWhlbiBrYW5uLiBBdWNoIGFuZGVyZSBHcnVlbmRlICh6dW0gQmVpc3BpZWwgRHVua2VsaGVpdCkKKyAgICAgIGtvZW5uZW4gYmV3aXJrZW4sIGRhc3MgZWluIFNwaWVsZXIgbmljaHRzIG1laHIgc2llaHQuCisgICAgQV9JTlQsIEFfREVYLCBBX0NPTiwgQV9TVFIKKyAgICAgIEpld2VpbGlnZSBNaW5kZXN0aG9laGUgZWluZXMgQXR0cmlidXQsIHVtIGVpbmUgQWt0aW9uIGF1c2Z1ZWhyZW4genUKKyAgICAgIGtvZW5uZW4uCisgICAgU1JfQkFELCBTUl9HT09ECisgICAgICBHaWJ0IGFuLCB3aWUgW21pbmltYWxdIGJvZXNlIGJ6dy4gd2llIFttYXhpbWFsXSBndXQgZWluIENoYXJha3RlciBzZWluCisgICAgICBkYXJmLCB1bSBlaW5lIEFrdGlvbiBhdXNmdWVocmVuIHp1IGtvZW5uZW4uCisgICAgU1JfTUlOX1NJWkUsIFNSX01BWF9TSVpFCisgICAgICBHaWJ0IGRpZSBtaW5pbWFsZSwgYnp3LiBkaWUgbWF4aW1hbGUgR3JvZXNzZSBhbiwgZGllIGVpbiBDaGFyYWt0ZXIKKyAgICAgIG1heGltYWwgaGFiZW4gZGFyZiwgdW0gZWluZSBBa3Rpb24gYXVzZnVlaHJlbiB6dSBrb2VubmVuLgorICAgIFNSX0ZSRUVfSEFORFMKKyAgICAgIEdpYnQgYW4sIHdpZXZpZWxlIGZyZWllIEhhZW5kZSBlaW4gQ2hhcmFrdGVyIGZ1ZXIgZGllc2UgQWt0aW9uCisgICAgICBiZXNpdHplbiBtdXNzLgorICAgIFNSX0VYQ0xVREVfUkFDRQorICAgICAgTWl0Z2xpZWRlciBhbGxlciBpbiBkaWVzZXIgTGlzdGUgYXVmZ2VmdWVocnRlbiBSYXNzZW4ga29lbm5lbgorICAgICAgZGllc2UgQWt0aW9uIG5pY2h0IGF1c2Z1ZWhyZW4uCisgICAgU1JfSU5DTFVERV9SQUNFCisgICAgICBNaXRnbGllZGVyIGFsbGVyIE5JQ0hUIGluIGRpZXNlciBMaXN0ZSBhdWZnZWZ1ZWhydGVuIFJhc3NlbiBrb2VubmVuCisgICAgICBkaWVzZSBBa3Rpb24gbmljaHQgYXVzZnVlaHJlbi4KKyAgICBTTV9SQUNFCisgICAgICBIaWVyIGthbm4gcHJvIFJhc3NlIGVpbiBNYXBwaW5nIG1pdCBiZXNvbmRlcmVuIChudXIpIGZ1ZXIgZGllc2UgUmFzc2UKKyAgICAgIGdlbHRlbmRlbiBFaW5zY2hyYWVua3VuZ2VuIHZvcmdlbm9tbWVuIHdlcmRlbi4gQWxzIEtleXMgc2luZCBkaWUKKyAgICAgIGluIGRpZXNlciBNYW5wYWdlIGJlc2NocmllYmVuZW4gS2V5cyBlcmxhdWJ0LCB3b2JlaSBTTV9SQUNFIG5pY2h0CisgICAgICByZWt1cnNpdiBhdXNnZXdlcnRldCB3aXJkLgorICAgICAgRGVyIFJhc3Nlbm5hbWUgaXN0IGdyb3NzIGdlc2NocmllYmVuIHVuZCAiKiIgc3RlaHQgZnVlciBhbGxlIFJhc3Nlbi4KKyAgICBTUl9FWENMVURFX0dVSUxECisgICAgU1JfSU5DTFVERV9HVUlMRAorICAgICAgRGllc2UgYmVpZGVuIEtleXMgdmVyaGFsdGVuIHNpY2ggd2llIFNSXypfUkFDRSwgbnVyIGRhc3MgaGllciBHaWxkZW4KKyAgICAgIGdlbmFubnQgd2VyZGVuLgorICAgIFNSX0ZVTgorICAgICAgSGllciBrYW5uIGVpbmUgRnVua3Rpb24gaW4gdmVyc2NoaWVkZW5lbiBGb3JtZW4genVtIFBydWVmZW4gZGVyCisgICAgICBSZXN0cmlrdGlvbmVuIGFuZ2VnZWJlbiB3ZXJkZW4sIHNpZWhlIGV4ZWN1dGVfYW55dGhpbmcoKS4KKyAgICAgIERhcyBrYW5uIG51ZXR6bGljaCBzZWluLCB1bSBhbmRlcmUgUmVzdHJpa3Rpb25lbiB6dSBwcnVlZmVuLAorICAgICAgd2llIGRhcyBCZXN0ZWhlbiB2b24gTWluaXF1ZXN0cyBvZGVyIGFuZGVyZSBGYWVoaWdrZWl0ZW4vRmxhZ3MuCisgICAgICBJc3QgZGVyIFRlc3QgbmljaHQgYmVzdGFuZGVuLCBnaWJ0IGRpZSBGdW5rdGlvbiBlaW5lbiBTdHJpbmcgenVydWVjay4KKyAgICBTUl9QUk9QCisgICAgICBIaWVyIGthbm4gZWluIE1hcHBpbmcgbWl0IFByb3BlcnRpZXMgdW5kIHp1Z2Vob2VyaWdlbiBXZXJ0ZW4gYW5nZWdlYmVuCisgICAgICB3ZXJkZW4sIGRpZSBqZXdlaWxzIGF1ZiBJZGVudGl0YWV0IGdlcHJ1ZWZ0IHdlcmRlbi4gWnVzYWV0emxpY2ggc29sbHRlCisgICAgICBlaW5lIE1lbGR1bmcgYW5nZWdlYmVuIHdlcmRlbiwgZGllIGFscyBGZWhsZXJtZWxkdW5nIGF1c2dlZ2ViZW4gd2lyZCwKKyAgICAgIHdlbm4gZGVyIFNwaWVsZXIgZGllIEJlZGluZ3VuZyBuaWNodCBlcmZ1ZWxsdC4gRXMgc29sbHRlIGltbWVyIGVpbmUKKyAgICAgIHBhc3NlbmRlIE1lbGR1bmcgZnVlciBkZW4gU3BpZWxlciBlaW5nZWJhdXQgd2VyZGVuLiBCZWlzcGllbDoKKyAgICAgIChbIFNSX1BST1A6IChbUF9BVVNHQU5HX0VOVERFQ0tUOiAxOyAiRGVpbiBTY2h3ZXJ0IGZsdWVzdGVydCAiCisgICAgICAgICAgInZlcmFlcmdlcnQ6IEljaCB3ZXJkZSBEaXIgZXJzdCBkYW5uIHp1IERpZW5zdGVuIHNlaW4sIHdlbm4gRHUgIgorICAgICAgICAgICJEaWNoIGFscyB3dWVyZGlnIGVyd2llc2VuIGhhc3QhIl0pIF0pCisgICAgICBBdWZncnVuZCBkZXIgTWVsZHVuZyB3aXJkIGVtcGZvaGxlbiwgU1JfUFJPUCBuaWNodCBpbiBSZXN0cmlrdGlvbmVuCisgICAgICBlaW56dXNldHplbiwgZGllIG1hc3NlbndlaXNlIGluIFNhdmVmaWxlcyBsYW5kZW4gKHouQi4KKyAgICAgIFNwaWVsZXJzYXZlZmlsZXMpLgorICAgIFNSX1FVRVNUCisgICAgICBIaWVyIGthbm4gZWluIFN0cmluZy1BcnJheSBtaXQgZGVuIE5hbWVuIChLZXlzKSBkZXIgUXVlc3QocykgYW5nZWdlYmVuCisgICAgICB3ZXJkZW4sIGRpZSBkZXIgU3BpZWxlciBiZXN0YW5kZW4gaGFiZW4gbXVzcywgdW0gZGllIEFrdGlvbiBhdXNmdWVocmVuCisgICAgICB6dSBrb2VubmVuLgorICAgIFNRX01JTklRVUVTVAorICAgICAgSGllciBrYW5uIGVudHdlZGVyIGVpbiBTdHJpbmctQXJyYXkgbWl0IGRlbiBMYWRlbmFtZW4gZGVyIHZlcmdlYmVuZGVuCisgICAgICBPYmpla3RlIG9kZXIgZWluIEludC1BcnJheSBtaXQgZGVuIEluZGV4LU51bW1lcm4gKElEcykgZGVyCisgICAgICBNaW5pcXVlc3QocykgKGVtcGZvaGxlbiEpIGFuZ2VnZWJlbiB3ZXJkZW4sIGRpZSBkZXIgU3BpZWxlciBiZXN0YW5kZW4KKyAgICAgIGhhYmVuIG11c3MsIHVtIGRpZSBBa3Rpb24gYXVzZnVlaHJlbiB6dSBrb2VubmVuLgorCitCRUlTUElFTEU6CisgICAgLy8gIzEgTGV2ZWxiZXNjaHJhZW5rdW5nIGluIGRlciBBYmVudGV1cmVyZ2lsZGUKKyAgICBBZGRTcGVsbCgiZmV1ZXJiYWxsIiwyMCwKKyAgICAgICAgICAgICAoW1NJX1NLSUxMUkVTVFJfTEVBUk46KFtQX0xFVkVMOjE1XSksIC4uLgorCisgICAgLy8gIzIgR2xhdWJlbnN0ZXN0IGltIEtsZXJ1cworICAgIEFkZFNwZWxsKCJiZXRlIiwKKyAgICAgICAgICAgICAoW1NJX1NLSUxMUkVTVFJfTEVBUk46IChbUF9HVUlMRF9MRVZFTCA6IExWTF9OT1ZJWkUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNSX0ZVTiA6ICMnZ2xhdWJlbnNUZXN0IF0pLCAuLi4KKyAgICAvLyBtaXQKKyAgICBzdGF0aWMgc3RyaW5nIGdsYXViZW5zVGVzdChvYmplY3QgcGwpIHsKKyAgICAgIGlmIChwbC0+UXVlcnlQcm9wKEtfU1RSRU5HVEgpIDwgODAwMCkKKyAgICAgICAgcmV0dXJuICgiRGVpbmUgR2xhdWJlbnNzdGFlcmtlIGxhZXNzdCB6dSB3dWVuc2NoZW4gdWVicmlnIVxuIik7CisgICAgICByZXR1cm4gMDsKKyAgICB9CisKKyAgICAvLyAjMyBTTV9SQUNFLU1vZGlmaWthdGlvbiBkZXIgUmVzdHJpa3Rpb25lbjoKKyAgICAvLyAgICBoYWVydGVyZSBSZXN0cmlrdGlvbmVuIGZ1ZXIgWndlcmdlCisgICAgLy8gICAgLSBob2VoZXJlcyBMZXZlbAorICAgIC8vICAgIC0genVzYWV0emxpY2ggQV9TVFIgcHJ1ZWZlbgorICAgIChbUF9MRVZFTDoxNSwKKyAgICAgIEFfSU5UOjEwLAorICAgICAgU01fUkFDRTogKFsiWndlcmciOiAoW1BfTEVWRUw6MTcsIEFfU1RSOjIwXSldKV0pCisgICAgLy8gaXN0IGlkZW50aXNjaCB6dQorICAgIChbU01fUkFDRTogKFsiKiI6ICAgICAoW1BfTEVWRUw6MTUsIEFfSU5UOjEwXSksCisgICAgICAgICAgICAgICAgICJad2VyZyI6IChbUF9MRVZFTDoxNywgQV9JTlQ6MTAsIEFfU1RSOjIwXSldKV0pCisKK1NJRUhFIEFVQ0g6CisgICAgZXhlY3V0ZV9hbnl0aGluZyhMKSwgQWRkU3BlbGwgKEdpbGRlKSwgUF9SRVNUUklDVElPTlMKKworMDMuIEphbnVhciAyMDE0LCBBcmF0aG9ybgpkaWZmIC0tZ2l0IGEvZG9jL2xmdW4vY2hlY2tfdGltZWRfa2V5IGIvZG9jL2xmdW4vY2hlY2tfdGltZWRfa2V5Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjgxYmFmZjcKLS0tIC9kZXYvbnVsbAorKysgYi9kb2MvbGZ1bi9jaGVja190aW1lZF9rZXkKQEAgLTAsMCArMSwzNCBAQAorY2hlY2tfdGltZWRfa2V5KCkKKworRlVOS1RJT046CisgICAgICAgcHVibGljIGludCBjaGVja190aW1lZF9rZXkoc3RyaW5nIGtleSkKKyAgICAgICAKK0RFRklOSUVSVCBJTjoKKyAgICAgICAvc3RkL2xpdmluZy9saWZlLmMgICAgCisKK0FSR1VNRU5URToKKyAgICAgICBzdHJpbmcga2V5ICA6IEVpbmRldXRpZ2VyIE5hbWUKKworQkVTQ0hSRUlCVU5HOgorICAgICAgIERpZXNlIEZ1bmt0aW9uIGhhdCBkaWUgQXVmZ2FiZSwgbWl0dGVscyBjaGVja19hbmRfdXBkYXRlX3RpbWVkX2tleSgpCisgICAgICAgZ2VzcGVpY2hlcnRlIFplaXRzcGVycmVuIHp1IHBydWVmZW4sIGFiZXIgZGFiZWkgbmljaHQgenUgdmVyYWVuZGVybi4KKworICAgICAgIEVzIE1VU1MgYmVpIGRlciBlaWdlbnRsaWNoZW4gQWt0aW9uICh6LkIuIEhlaWx1bmcgZGVzIFNwaWVsZXJzKSBkZXIKKyAgICAgICBSdWVja2dhYmV3ZXJ0IHZvbiBjaGVja19hbmRfdXBkYXRlX3RpbWVkX2tleSgpIGJlcnVlY2tzaWNodGlndCB3ZXJkZW4sCisgICAgICAgc29sbHRlIGRpZXNlcyBuaWNodCAtMSBnZWxpZWZlcnQgaGFiZW4sIE1VU1MgPGtleT4gYWxzIGdlc3BlcnJ0CisgICAgICAgYmV0cmFjaHRldCB3ZXJkZW4sIGQuaC4gY2hlY2tfdGltZWRfa2V5KCkgaGF0IG51ciBpbmZvcm1hdGl2ZW4KKyAgICAgICBDaGFyYWt0ZXIuCisKK1JVZUNLR0FCRVdFUlQ6CisgICAgICAgMCAgICBEaWUgWmVpdHNwZXJyZSA8a2V5PiBpc3QgYWJnZWxhdWZlbi4KKworICAgICAgID4wICAgPGtleT4gaXN0IG5vY2ggZ2VzcGVycnQuCisgICAgICAgICAgICBEZXIgUnVlY2tnYWJld2VydCBpc3QgZGVyIFplaXRwdW5rdCwgYWIgZGVtIDxrZXk+IHdpZWRlciBmcmVpIGlzdCwKKworU0lFSEUgQVVDSDoKKyAgICAgICBjaGVja19hbmRfdXBkYXRlX3RpbWVkX2tleSwgZWF0X2Zvb2QsIGRyaW5rX2FsY29ob2wsIGRyaW5rX3NvZnQsCisgICAgICAgaGVhbF9zZWxmLCByZXN0b3JlX3NwZWxsX3BvaW50cywgcmVkdWNlX2hpdF9wb2ludAorCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiswOC4wMS4yMDEyLCBaZXNzdHJhCisKZGlmZiAtLWdpdCBhL2RvYy9sZnVuL2NsZWFuX3VwIGIvZG9jL2xmdW4vY2xlYW5fdXAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOTdkZGYwOQotLS0gL2Rldi9udWxsCisrKyBiL2RvYy9sZnVuL2NsZWFuX3VwCkBAIC0wLDAgKzEsNDMgQEAKK2NsZWFuX3VwKCkKK0ZVTktUSU9OOgorICAgICBpbnQgY2xlYW5fdXAoaW50IHJlZik7CisKK0RFRklOSUVSVCBJTjoKKyAgICAgL3N0ZC9yb29tLmMKKyAgICAgbWFuIGthbm4gZGllIEZ1bmt0aW9uIGplZG9jaCBhdWNoIGluIGJlbGllYmlnZW4gT2JqZWt0ZW4gc2VsYnN0CisgICAgIGRlZmluaWVyZW4uCisKK0FSR1VNRU5URToKKyAgICAgcmVmCisgICAgICAgICAgICAgKyAwIGJlaSBnZWNsb25ldGVuIE9iamVrdGVuCisgICAgICAgICAgICAgKyAxIGJlaSBlaW5mYWNoZW4gZ2VsYWRlbmVuIE9iamVrdGVuCisgICAgICAgICAgICAgKyA+MSBiZWkgT2JqZWt0ZW4sIGRpZSBnZWVyYnQgd3VyZGVuIG9kZXIgYWxzIEJsdWVwcmludCBkaWVuZW4KKyAgICAgICAgICAgICArIDwwLCB3ZW5uIGNsZWFuX3VwKCkgdm9uIGF1c3NlbiBhdWZnZXJ1ZmVuIHd1cmRlIChkYXMgbXVzcyBtYW4KKyAgICAgICAgICAgICAgIHNlbGJzdCBiZWFjaHRlbiEpCisKK0JFU0NIUkVJQlVORzoKKyAgICAgV2VubiBlaW4gT2JqZWt0IHNlaXQgbGFuZ2VyIFplaXQgbmljaHQgbWVociBiZW51dHp0IHd1cmRlLCBrYW5uIGVzIHNpY2gKKyAgICAgaGllciBzZWxic3QgemVyc3RvZXJlbi4gRGFzIHNvbGx0ZSBkYXMgT2JqZWt0IGFsbGVyZGluZ3MgbnVyIHR1biwgd2VubgorICAgICByZWYga2xlaW5lciBvZGVyIGdsZWljaCAxIGlzdC4KKworUlVlQ0tHQUJFV0VSVDoKKyAgICAgRGVyIFJ1ZWNrZ2FiZXdlcnQgaGF0IG51ciBkYW5uIGVpbmUgQmVkZXV0dW5nLCB3ZW5uIHNpY2ggZGFzIE9iamVrdAorICAgICBuaWNodCBzZWxic3QgemVyc3RvZXJ0IGhhdC4gV2lyZCAwIHp1cnVlY2tnZWdlYmVuLCBzbyB3aXJkIGNsZWFuX3VwKCkKKyAgICAgZXJzdCBkYW5uIHdpZWRlciBhdWZnZXJ1ZmVuLCBuYWNoZGVtIGRhcyBPYmpla3QgYXVzLSB1bmQgd2llZGVyCisgICAgIGVpbmdlc3dhcHB0IHd1cmRlLgorCisgICAgIEVpbiBSdWVja2dhYmV3ZXJ0IHVuZ2xlaWNoIDAgemVpZ3QgYW4sIGRhc3MgZGFzIE9iamVrdCBzaWNoCisgICAgIHdhaHJzY2hlaW5saWNoIGluIGRlciBuYWVjaHN0ZW4gY2xlYW5fdXAoKS1SdW5kZSB6ZXJzdG9lcmVuIGthbm4sIHdlbm4KKyAgICAgaW4gZGVyIFp3aXNjaGVuemVpdCB6Qi4gbm9jaCBlaW5tYWwgcmVzZXQoKSBhdWZnZXJ1ZmVuIHd1cmRlLgorCitCRU1FUktVTkdFTjoKKyAgICAgU3RhbmRhcmRtYWVzc2lnIGRlZmluaWVyZW4gbnVyIFJhZXVtZSBjbGVhbl91cCgpLgorCisgICAgIERpZSBaZWl0ZW4gendpc2NoZW4gendlaSBBdWZydWZlbiB2b24gY2xlYW5fdXAoKSBiZXRyYWdlbiBtb21lbnRhbgorICAgICBlaW5lbiBUYWcgKDg2NDAwIFNla3VuZGVuKS4KKworU0lFSEUgQVVDSDoKKyAgICAgcmVzZXQoKSwgUF9ORVZFUl9DTEVBTgorICAgICBtZW1vcnkKKworMjEuIE1hZXJ6IDIwMDQgR2xvaW5zb24KZGlmZiAtLWdpdCBhL2RvYy9sZnVuL2NtZF9zaG9vdCBiL2RvYy9sZnVuL2NtZF9zaG9vdApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5jY2Q1MmNlCi0tLSAvZGV2L251bGwKKysrIGIvZG9jL2xmdW4vY21kX3Nob290CkBAIC0wLDAgKzEsMzEgQEAKK2NtZF9zaG9vdCgpCisKK0ZVTktUSU9OOgorICAgIHN0YXRpYyBpbnQgY21kX3Nob290KHN0cmluZyBzdHIpCisKK0RFRklOSUVSVCBJTjoKKyAgICAvc3RkL3JhbmdlZF93ZWFwb24uYworCitBUkdVTUVOVEU6CisgICAgc3RyaW5nIHN0ciAgICAtIFNjaHVzc3N5bnRheAorCitCRVNDSFJFSUJVTkc6CisgICAgS29tbWFuZG9mdW5rdGlvbiBkZXIgRmVybndhZmZlLiBFbnRoYWVsdCBkaWUgVm9yYmVyZWl0dW5nIHVuZCBkZW4gU2NodXNzLgorCitCRU1FUktVTkdFTjoKKyAgICBJc3QgaW4gZGVyIEZlcm53YWZmZSBtaXQgQWRkQ21kKCAoeyJzY2hpZXNzIiwgInNjaGllc3NlIn0pLCAiY21kX3Nob290Iik7CisgICAgYW5nZWJ1bmRlbi4gV2lsbCBtYW4gZWluZSBhbmRlcmUgU3ludGF4IGhhYmVuLCBrYW5uIG1hbiBtaXQKKyAgICBBZGRDbWQvUmVtb3ZlQ21kIGRpZXNlIHVtc2V0emVuLgorCitCRUlTUElFTEU6CisgICAgUmVtb3ZlQ21kKCh7InNjaGllc3MiLCAic2NoaWVzc2UifSkpOyAvLyBlbnRmZXJuZSBEZWZhdWx0LUtvbW1hbmRvCisgICAgQWRkQ21kKCh7InNjaGxldWRlciIsICJzY2hsZXVkZXJlIn0pLCAjJ2NtZF9zaG9vdCk7CisKK1NJRUhFIEFVQ0g6CisgICAgR2VuZXJlbGw6ICBQX0FNTVVOSVRJT04sIFBfU0hPT1RJTkdfV0MsIFBfU1RSRVRDSF9USU1FCisgICAgTWV0aG9kZW46ICBzaG9vdF9kYW0oTCksIGNtZF9zaG9vdChMKQorICAgIEtvbW1hbmRvczogQWRkQ21kKEwpLCBSZW1vdmVDbWQoTCkKKyAgICBTeW50YXg6ICAgIF91bnBhcnNlZF9hcmdzKEwpCisgICAgU29uc3RpZ2VzOiBmZXJud2FmZmVuCisKKzI4Lkp1bCAyMDE0IEdsb2luc29uClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZG9jL2xmdW4vY29tbWFuZF9tZSBiL2RvYy9sZnVuL2NvbW1hbmRfbWUKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uY2RiMWVmMgotLS0gL2Rldi9udWxsCisrKyBiL2RvYy9sZnVuL2NvbW1hbmRfbWUKQEAgLTAsMCArMSw4MSBAQAorY29tbWFuZF9tZSgpCitGVU5LVElPTjoKKyAgICBpbnQgY29tbWFuZF9tZShzdHJpbmcgc3RyKQorCitBUkdVTUVOVEU6CisgICAgc3RyaW5nIHN0ciAtIGF1c3p1ZnVlaHJlbmRlcyBLb21tYW5kbworCitERUZJTklFUlQgSU46CisgICAgL3N0ZC9ucGMuYywgL3N0ZC9wbGF5ZXIvY29tbWFuZC5jCisKK0JFU0NIUkVJQlVORzoKKyAgICBGdWVocnQgJ3N0cicgd2llIGVpbiBLb21tYW5kbyBhdXMsIHdlbGNoZXMgZGlyZWt0IHZvbSBMaXZpbmcKKyAgICBhYmdlZ2ViZW4gd3VyZGUuCisKKyAgICBEZXIgUnVlY2tnYWJld2VydCBpc3QgPj0xIGZ1ZXIgRXJmb2xnIHVuZCAwIGZ1ZXIgTWlzc2VyZm9sZy4gCisgICAgUnVlY2tnYWJld2VydCBpc3QgaW0gRXJmb2xnc2ZhbGwgZGllIEhvZWhlIGRlciBFdmFsQ29zdCBpbiBUaWNrcy4gCisKKyAgICBjb21tYW5kX21lKCkgbGVpdGV0IGRlbiBCZWZlaGwgYW4gY29tbWFuZCgpKEUpIHdlaXRlciB1bmQgZXJsYXVidAorICAgIGRhZHVyY2ggYXVjaCBkZW4gQXVmcnVmIHZvbiBzb25zdCBkdXJjaCAic3RhdGljIiwgInByb3RlY3RlZCIgb2RlcgorICAgICJwcml2YXRlIiB2b3IgZXh0ZXJuZW0gQXVmcnVmIGdlc2NodWV0enRlbiBLb21tYW5kby1GdW5rdGlvbmVuLgorCisgICAgS29tbWFuZG9zIG1pdCBvZWZmZW50bGljaGVuIEtvbW1hbmRvZnVua3Rpb25lbiAoYWxzbyBkYW1pdCBhbGxlIG1pdAorICAgIEFkZENtZCBkZWZpbmllcnRlbiBLb21tYW5kb3MpIGtvZW5uZW4gYXVjaCBkdXJjaCBjb21tYW5kKCkoRSkKKyAgICB2b24gYXVzc2VuIGF1c2dlbG9lc3Qgd2VyZGVuLgorCitCRU1FUktVTkdFTjogICAgCisgICAgLSBiZXJ1ZWNrc2ljaHRpZ3QgQWxpYXNlLCBkLmguIHdlbm4gbWFuIEFsaWFzZSBlaW5lcyBTcGllbGVycworICAgICAgaWdub3JpZXJlbiB3aWxsLCBtdXNzIG1hbiBlaW4gXFwgKGZ1ZXIgZWluIFwgaW0gRWluZ2FiZXN0cmluZykKKyAgICAgIHZvciBkZW4gQmVmZWhsIHN0ZWxsZW4KKyAgICAtIGZ1ZXIgb2JqZWt0aW50ZXJuZSBLb21tYW5kb3MgZnVua3Rpb25pZXJ0IGFsc28gYXVjaCBjb21tYW5kKCkoRSkKKworQkVJU1BJRUw6CisgICAgKENvZGUgZGVzIFRlc3RyYXVtIGlzdCBpbiAvZG9jL2JlaXNwaWVsZS90ZXN0b2JqZWt0ZS9jb21tYW5kX21lX3Rlc3RyYXVtKQorICAgIC8vICMxOiBUZXN0cmF1bSwgendpbmdlIFNwaWVsZXIgYmVpICJzY2hsZWljaGUgaGVyYW4iIHp1bSBGdXJ6ZW4KKyAgICAvLyAgICAgY29tbWFuZF9tZSgpIGlzdCBoaWVyIG5vZXRpZywgZGEgZGFzIEZ1cnplbiBlaW5lIGdlc2NodWV0enRlCisgICAgLy8gICAgIEtvbW1hbmRvZnVua3Rpb24gaGF0CisgICAgaW5oZXJpdCAiL3N0ZC9yb29tIjsKKworICAgIHZvaWQgY3JlYXRlKCkgeworICAgICAgOjpjcmVhdGUoKTsKKyAgICAgIEFkZENtZCgic2NobGVpY2hlJmhlcmFufGhlcnVtIiwgImFjdGlvbl9zY2hsZWljaGVuIik7CisgICAgfQorICAgIAorICAgIHZvaWQgaW5pdCgpIHsKKyAgICAgIDo6aW5pdCgpOworICAgICAgYWRkX2FjdGlvbigiYWN0aW9uX2tyaWVjaGVuIiwgImtyaWVjaCIsIDEpOworICAgIH0KKworICAgIHN0YXRpYyBpbnQgYWN0aW9uX3NjaGxlaWNoZW4oc3RyaW5nIHN0cikgeworICAgICAgc3RyaW5nIHRtcCA9IHRoaXNfcGxheWVyKCktPlF1ZXJ5UHJvcChQX1JBQ0UpOworICAgICAgLy8gLi4uIAorICAgICAgaWYodG1wWzwxXT09J2UnKSB0bXA9dG1wWzAuLjwyXTsKKyAgICAgIHdyaXRlKGJyZWFrX3N0cmluZygiRHUgdmVyc3VjaHN0IGxlaXNlIHp1IHNjaGxlaWNoZW4sIGRhYmVpIHBhc3NpZXJ0ICIKKyAgICAgICAgImRpciBhYmVyIGVpbiBhbGx6dSAiKworICAgICAgICAodG1wPT0iTWVuc2NoIj8ibWVuc2NobGljaGVzIjpsb3dlcl9jYXNlKHRtcCkrImlzY2hlcyIpKworICAgICAgICAiIE1pc3NnZXNjaGljay4gVmVyZmx1Y2h0ISIsIDc4KSk7CisgICAgICB0aGlzX3BsYXllcigpLT5jb21tYW5kX21lKCJcXGZ1cnplIik7CisgICAgICByZXR1cm4gMTsKKyAgICB9CisgICAgCisgICAgc3RhdGljIGludCBhY3Rpb25fa3JpZWNoZW4oc3RyaW5nIHN0cikgeworICAgICAgd3JpdGUoYnJlYWtfc3RyaW5nKCJEZWluZSBLbmllIHR1biB6dSBzZWhyIHdlaCBkYWZ1ZXIuIiwgNzgpKTsKKyAgICAgIHRlbGxfcm9vbSh0aGlzX29iamVjdCgpLCBicmVha19zdHJpbmcodGhpc19wbGF5ZXIoKS0+TmFtZShXRVIpKworICAgICAgICAiIGtuYWNrdCBtaXQgZGVuIEtuaWVuLiIsIDc4KSk7CisgICAgICByZXR1cm4gMTsKKyAgICB9CisgICAgCisgICAgLy8gIzIgKGluIG9iaWdlbSBSYXVtKTogendpbmdlIFNwaWVsZXIgaW4gUmF1bSB6dSBvYmlnZW0gS29tbWFuZG8KKyAgICAvLyAgICBCZWlkZSBLb21tYW5kb3MgZ2VsaW5nZW4sIGRhIEtvbW1hbmRvIG1pdCBBZGRDbWQgZGVmaW5pZXJ0LgorICAgIGZpbmRfcGxheWVyKCJuYWRkbCIpLT5jb21tYW5kX21lKCJzY2hsZWljaGUgaGVydW0iKQorICAgIGNvbW1hbmQoInNjaGxlaWNoZSBoZXJ1bSIsIGZpbmRfcGxheWVyKCJuYWRkbCIpKTsgCisKKyAgICAvLyAjMyAoaW4gb2JpZ2VtIFJhdW0pOiB6d2luZ2UgU3BpZWxlciBpbiBSYXVtIHp1IG9iaWdlbSBLb21tYW5kbworICAgIGZpbmRfcGxheWVyKCJuYWRkbCIpLT5jb21tYW5kX21lKCJrcmllY2hlIikKKyAgICAvLyAgICBGb2xnZW5kZXMgS29tbWFuZG8gc2NobGFlZ3QgZmVobCwgZGEgS29tbWFuZG9mdW5rdGlvbiBzdGF0aWMgaXN0LgorICAgIGNvbW1hbmQoImtyaWVjaGUiLCBmaW5kX3BsYXllcigibmFkZGwiKSk7CisgICAgCitTSUVIRSBBVUNIOgorICAgICBlbmFibGVfY29tbWFuZHMoRSksIGNvbW1hbmQoRSkKKworMDYgU2VwIDIwMTIgR2xvaW5zb24KZGlmZiAtLWdpdCBhL2RvYy9sZnVuL2NvbnN1bWUgYi9kb2MvbGZ1bi9jb25zdW1lCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjk5NzllYzQKLS0tIC9kZXYvbnVsbAorKysgYi9kb2MvbGZ1bi9jb25zdW1lCkBAIC0wLDAgKzEsODUgQEAKK3B1YmxpYyB2YXJhcmdzIGludCBjb25zdW1lKG1hcHBpbmcgY2luZm8sIGludCB0ZXN0b25seSkKKworRlVOS1RJT046CisgICAgcHVibGljIHZhcmFyZ3MgaW50IGNvbnN1bWUobWFwcGluZyBjaW5mbywgaW50IHRlc3Rvbmx5KTsKKworICAgIEFlbmRlcnVuZyBkZXIgR2VzdW5kaGVpdCBlaW5lcyBMZWJld2VzZW5zIGR1cmNoIGV0d2FzIEtvbnN1bWllcmJhcmVzLgorCitERUZJTklFUlQgSU46CisgICAgL3N0ZC9saXZpbmcvbGlmZS5jCisKK0FSR1VNRU5URToKKyAgICBjaW5mbworICAgICAgICBNYXBwaW5nIG1pdCBJbmZvcm1hdGlvbmVuIHVlYmVyIGRpZSBHZXN1bmRoZWl0c2FlbmRlcnVuZworICAgICAgICBIZWlsdW5nLgorICAgIHRlc3Rvbmx5CisgICAgICAgIEdpYnQgYW4sIG9iIG51ciBkaWUgQmVkaW5ndW5nZW4gYWJnZXRlc3RldCB3ZXJkZW4gc29sbGVuLAorICAgICAgICBvZGVyIGF1Y2ggZGllIFdpcmt1bmcgZWludHJldGVuIHNvbGwuCisKK1JVRUNLR0FCRVdFUlQ6CisgICAgMSBlcmZvbGdyZWljaCBrb25zdW1pZXJ0CisgICAgMCBrZWluZSBvZGVyIGZhbHNjaGUgQWVuZGVydW5nc2RhdGVuIGluIGNpbmZvIChuaWNodCBiZW51dHpiYXIpCisgICA8MCBCZWRpbmd1bmcgZnVlciBrb25zdW1pZXJlbiBuaWNodCBlcmZ1ZWxsdCwgQml0c2V0IGF1czoKKyAgICAgIEhDX01BWF9GT09EX1JFQUNIRUQgICAgLSBLYW5uIG5pY2h0cyBtZWhyIGVzc2VuCisgICAgICBIQ19NQVhfRFJJTktfUkVBQ0hFRCAgIC0gS2FubiBuaWNodHMgbWVociB0cmlua2VuCisgICAgICBIQ19NQVhfQUxDT0hPTF9SRUFDSEVEIC0gS2FubiBuaWNodHMgbWVociBzYXVmZW4KKyAgICAgIEhDX0hPT0tfQ0FOQ0VMTEVUSU9OICAgLSBkdXJjaCBIX0hPT0tfQ09OU1VNRSBhYmdlYnJvY2hlbgorCitCRVNDSFJFSUJVTkc6CisgICAgRGllIEZ1bmt0aW9uIHN0ZWxsdCBlaW5lIE1vZWdsaWNoa2VpdCB6dXIgVmVyZnVlZ3VuZywgZGllIEFlbmRlcnVuZworICAgIGRlciBHZXN1bmRoZWl0IGVpbmVzIExlYmV3ZXNlbnMgYmVpbSBLb25zdW1pZXJlbiB2b24gaXJnZW5kZXR3YXMgKHouQiBpbgorICAgIGVpbmVyIEtuZWlwZSwgZHVyY2ggZWluZSBIZWlsc3RlbGx0ZSBvZGVyIHRyYWdiYXJlIFRhbmtlLCAuLi4pIHplbnRyYWwgenUKKyAgICBlcmxlZGlnZW4uIFNpZSB2ZXJlaW50IGluIHNpY2ggZGllIFBydWVmdW5nIGF1ZiBEdXJjaGZ1ZXJiYXJrZWl0IGRlcgorICAgIEFlbmRlcnVuZyB1bmQgQW53ZW5kdW5nIGRlciBBZW5kZXJ1bmcuCisKKyAgICBEZXIgZXJzdGUgUGFyYW1ldGVyIGdpYnQgZGllIEVpZ2Vuc2NoYWZ0ZW4gZGVyIEFlbmRlcnVuZyBhbiwgZGVyIHp3ZWl0ZSBvYgorICAgIGF1c3NjaGxpZXNzbGljaCBkaWUgUHJ1ZWZ1bmcgYXVmIEFud2VuZGJhcmtlaXQgZXJmb2xnZW4gc29sbC4KKworICAgIERhcyBNYXBwaW5nIGNpbmZvIGhhdCBmb2xnZW5kZSBTdHJ1a3R1cjoKKyAgICBhKSBFaW5mYWNoZSBBbmdhYmUgZGVyIGJldHJvZmZlbmVuIFByb3BlcnRpZXMuIEluIG5ldWVtIENvZGUgYml0dGUgbmljaHQKKyAgICAgICBtYWNoZW4sIGRvcnQgZWluIE1hcHBpbmcgd2llIHVudGVyIGIpIGJlc2NocmllYmVuIG51dHplbiEKKworICAgIGIpIFN0cnVrdHVyaWVydCBpbiBFZmZla3RlIHVuZCBCZWRpbmd1bmdlbiBtaXQgZm9sZ2VuZGVuIFNjaGx1ZXNzZWxuOgorICAgICAgSF9FRkZFQ1RTIC0gTWFwcGluZyBkZXIgenUgYWVuZGVybmRlbiBQcm9wZXJ0aWVzIG1pdCBkZW0gVW1mYW5nIGRlcgorICAgICAgICAgICAgICAgICAgQWVuZGVydW5nLCBlcmxhdWJ0ZSBQcm9wZXJ0aWVzIHNpZWhlIEhfQUxMT1dFRF9FRkZFQ1RTCisKKyAgICAgIEhfQ09ORElUSU9OUyAtIE1hcHBpbmcgZGVyIHp1IHBydWVmZW5kZW4gUHJvcGVydGllcyBtaXQgZGVtIFVtZmFuZyBkZXIKKyAgICAgICAgICAgICAgICAgICAgIEFlbmRlcnVuZywgZXJsYXVidGUgUHJvcGVydGllcyBzaWVoZSBIX0FMTE9XRURfQ09ORElUSU9OUworCisgICAgICBIX0RJU1RSSUJVVElPTiAtIFZlcnRlaWx1bmcgZGVyIEFlbmRlcnVuZyBmdWVyIFBfU1AsIFBfSFAKKyAgICAgICAgICAgICAgICAgICAgICAgSERfSU5TVEFOVCBiencuIDA6IGluc3RhbnRlIEhlaWx1bmcKKyAgICAgICAgICAgICAgICAgICAgICAgMSAtIDUwOiBhbmdlYmVuZSBaYWhsIHBybyBIZWFydGJlYXQKKyAgICAgICAgICAgICAgICAgICAgICAgSERfU1RBTkRBUkQ6IDUgcHJvIEhlYXJ0YmVhdAorCisgICAgQWVuZGVydW5nZW4ga29lbm5lbiBzb3dvaGwgcG9zaXRpdiBhbHMgYXVjaCBuZWdhdGl2IHNlaW4uCisKK0JFTUVSS1VOR0VOOgorICAgIEhpZXJiZWkgYWJlciBiaXR0ZSBiZWFjaHRlbiwgZGFzcyBUYW5rZW4vRW50YW5rZW4gc293aWUgSGVpbHVuZ2VuIGdnZi4gdm9uCisgICAgZGVyIChIZWlsdW5ncy0pQmFsYW5jZSBnZW5laG1pZ3Qgd2VyZGVuIG11ZXNzZW4hCisKK0JFSVNQSUVMRToKKyAgICBIZWlsdW5nIHVtIDEwMCBLUCwgNTAgTFAsIGFiZXIgbnVyIHdlbm4gMzAgUF9GT09EIGdlZ2Vzc2VuIHdlcmRlbiBrYW5uOgorCisgICAgY29uc3VtZSggKFtIX0VGRkVDVFM6IChbUF9IUDo1MCwgUF9TUDoxMDBdKSwKKyAgICAgICAgICAgICAgIEhfQ09ORElUSU9OUzogKFtQX0ZPT0Q6MzBdKSBdKSApOworCisgICAgSGVpbHVuZyB1bSAxMDAgS1AgdW5kIFZlcmdpZnR1bmcgdW0gMiwgd2VubiAxNSBBbGtvaG9sIGdldHJ1bmtlbiB3ZXJkZW4KKyAgICBrb2VubmVuLiBEaWUgU1Agd2VyZGVuIHplaXR2ZXJ6b2VnZXJ0IG1pdCAxMCBwcm8gSGVhcnRiZWF0IHp1Z2VmdWVocnQuCisKKyAgICBjb25zdW1lKChbSF9FRkZFQ1RTOiAoW1BfU1A6IDEwMCwgUF9QT0lTT046IDJdKSwKKyAgICAgICAgICAgICAgSF9DT05ESVRJT05TOiAoW1BfQUxDT0hPTDogMTVdKSwKKyAgICAgICAgICAgICAgSF9ESVNUUklCVVRJT046IDEwXSkgKQorCitTSUVIRSBBVUNIOgorICAgICBBZWhubGljaDogIGRyaW5rX2FsY29ob2wsIGVhdF9mb29kLCBkcmlua19zb2Z0CisgICAgIEhlaWx1bmc6ICAgaGVhbF9zZWxmLCByZXN0b3JlX3NwZWxsX3BvaW50cywgcmVzdG9yZV9oaXRfcG9pbnRzLCAKKyAgICAgICAgICAgICAgICBidWZmZXJfaHAsIGJ1ZmZlcl9zcAorICAgICBUaW1pbmc6ICAgIGNoZWNrX2FuZF91cGRhdGVfdGltZWRfa2V5CisgICAgIEVudHRhbmtlbjogZGVmdWVsX2RyaW5rLCBkZWZ1ZWxfZm9vZAorICAgICBQcm9wczogICAgIFBfRFJJTkssIFBfRk9PRCwgUF9BTENPSE9MLCBQX1NQLCBQX0hQLAorICAgICAgICAgICAgICAgIFBfREVGVUVMX1RJTUVfRFJJTksKKyAgICAgS29uemVwdGU6ICBoZWlsdW5nLCBlbnR0YW5rZW4sIGZvb2QKKworTEVUWlRFIEFlTkRFUlVORzoKKyAgICAyOS4wNS4yMDE1LCBCb2luZworCmRpZmYgLS1naXQgYS9kb2MvbGZ1bi9jcmVhdGUgYi9kb2MvbGZ1bi9jcmVhdGUKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOTU4MjYwOQotLS0gL2Rldi9udWxsCisrKyBiL2RvYy9sZnVuL2NyZWF0ZQpAQCAtMCwwICsxLDc4IEBACitjcmVhdGUoKQorCitGVU5LVElPTjoKKyAgICAgcHJvdGVjdGVkIHZvaWQgY3JlYXRlKCk7CisgICAgIHZvaWQgY3JlYXRlKCk7CisKK0RFRklOSUVSVCBJTjoKKyAgICAgYWxsZW4gU3RhbmRhcmRvYmpla3RlbgorCitBUkdVTUVOVEU6CisgICAgIGtlaW5lCisKK0JFU0NIUkVJQlVORzoKKyAgICAgRGllc2UgRnVua3Rpb24gd2lyZCBhdWZnZXJ1ZmVuLCB3ZW5uIGVpbiBPYmpla3QgZ2VsYWRlbiBvZGVyIGdlY2xvbnQKKyAgICAgd2lyZC4KKyAgICAgSW4gZGllc2VyIEZ1bmt0aW9uIHdpcmQgZGFzIE9iamVrdCBpbml0aWFsaXNpZXJ0IHVuZCBrb25maWd1cmllcnQuCisgICAgIFdhZWhyZW5kIGRlcyBjcmVhdGUoKSBrYW5uIGVzIGVpbmVuIHRoaXNfcGxheWVyKCkvdGhpc19pbnRlcmFjdGl2ZSgpCisgICAgIGdlYmVuLCBtdXNzIGFiZXIgbmljaHQhCisgICAgIEltIGNyZWF0ZSgpIGhhdCBkYXMgT2JqZWt0IG5vY2gga2VpbiBlbnZpcm9ubWVudCgpLgorICAgICBjcmVhdGUoKSB3aXJkIG51ciBnZXJ1ZmVuLCB3ZW5uIGRhcyBPYmpla3RlIGdlY2xvbnQgb2RlciBleHBsaXppdCBnZWxhZGVuCisgICAgIHdpcmQuIFdlbm4gZXMgYXVmZ3J1bmQgZWluZXMgaW5oZXJpdCBpbiBlaW5lbSBhbmRlcmVuIE9iamVrdCB2b20gRHJpdmVyCisgICAgIGdlbGFkZW4gd2lyZCwgd2lyZCBkYXMgY3JlYXRlKCkgbmljaHQgYXVzZ2VmdWVocnQgKHMuIGNyZWF0ZV9zdXBlcigpKS4KKworUlVlQ0tHQUJFV0VSVDoKKyAgICAga2VpbmVyCisKK0JFTUVSS1VOR0VOOgorICAgICBFcmJ0IG1hbiB2b24gYW5kZXJlbiBPYmpla3Rlbiwgc28gYmVzdGVodCBkaWUgZXJzdGUgQWt0aW9uIGlubmVyaGFsYgorICAgICB2b24gY3JlYXRlKCkgbm9ybWFsZXJ3ZWlzZSBkYXJpbiwgaW4gZGllc2VuIE9iamVrdGVuIGNyZWF0ZSgpCisgICAgIGF1Znp1cnVmZW4uCisgICAgIERpZSBGdW5rdGlvbiBrYW5uIHByb3RlY3RlZCBvZGVyIHN0YXRpYyBzZWluIChhYmVyIG5pY2h0IHByaXZhdGUpLiBFcworICAgICBkdWVyZnRlIGZ1ZXIgZGllIG1laXN0ZW4gT2JqZWt0ZSBzaW5udm9sbCBzZWluLCBjcmVhdGUoKSBwcm90ZWN0ZWQgenUKKyAgICAgZGVrbGFyaWVyZW4uCisKKyAgICAgVW0gU3BlaWNoZXIgenUgc3BhcmVuLCBrYW5uIG1hbiBiZWkgQmx1ZXByaW50cyB2b24gZGVyIEtvbmZpZ3VyaWVydW5nCisgICAgIGFic2VoZW4gKHNpZWhlIEJlaXNwaWVsKS4gRGllcyBzb2xsdGUgbWFuIGFsbGVyZGluZ3MgbmljaHQgYmVpIE9iamVrdGVuCisgICAgIG1hY2hlbiwgdm9uIGRlbmVuIGtlaW5lIENsb25lcyBlcnpldWd0IHdlcmRlbiBzb2xsZW4gKHpCLiBiZWkgUmFldW1lbikuIAorCisgICAgIE1hbiBzb2xsdGUgYmVpIEFiYnJ1Y2ggZGVzIGNyZWF0ZSgpIGluIEJQIHVuYmVkaW5ndCBzZXRfbmV4dF9yZXNldCgtMSk7CisgICAgIHJ1ZmVuLCBkYSBzb25zdCBkaWUgKG5pY2h0IGtvbmZpZ3VyaWVydGUpIEJQIHJlc2V0dGVuIGthbm4gdW5kIGRhbm4KKyAgICAgYnVnZ3QuCisKK0JFSVNQSUVMRToKKyAgICAgRWluIEdlZ2Vuc3RhbmQgd3VlcmRlIHdpZSBmb2xndCBrb25maWd1cmllcnQ6CisKKyAgICAgaW5oZXJpdCAic3RkL3RoaW5nIjsKKworICAgICAjaW5jbHVkZSA8cHJvcGVydGllcy5oPgorCisgICAgIGNyZWF0ZSgpCisgICAgIHsKKyAgICAgICAvLyBXZW5uIHdpciBkaWUgQmx1ZXByaW50IHNpbmQ6IE5JQ0hUIGtvbmZpZ3VyaWVyZW4hCisgICAgICAgLy8gQmVpIG5vcm1hbGVuIFJhZXVtZW4gb2RlciBUcmFuc3BvcnRlcm4gc2luZCBkaWVzZSBiZWlkZW4KKyAgICAgICAvLyBaZWlsZW4gd2VnenVsYXNzZW4hISEKKyAgICAgICBpZiAoIWNsb25lcCh0aGlzX29iamVjdCgpKSkgeworICAgICAgICAgICBzZXRfbmV4dF9yZXNldCgtMSk7ICAgIC8vIHdpY2h0aWcsIGRhbWl0IGRpZSBCUCBuaWNodCByZXNldHRldC4KKyAgICAgICAgICAgcmV0dXJuOworICAgICAgIH0KKworICAgICAgIC8vIEFuc29uc3RlbiBkaWUgYWxsZ2VtZWluZW4gRWlnZW5zY2hhZnRlbiB2b24gL3N0ZC90aGluZworICAgICAgIC8vIGtvbmZpZ3VyaWVyZW4uLi4KKyAgICAgICA6OmNyZWF0ZSgpOworCisgICAgICAgLy8gLi4udW5kIG51biB1bnNlcmUgc3BlemllbGxlbiBFaWdlbnNjaGFmdGVuOgorICAgICAgIFNldFByb3AoUF9OQU1FLCAiTXVlbGwiKTsKKyAgICAgICBTZXRQcm9wKFBfU0hPUlQsICJNdWVsbCIpOworICAgICAgIFNldFByb3AoUF9MT05HLCAiVm9lbGxpZyB1bm51ZXR6ZXIgTXVlbGwhXG4iKTsKKyAgICAgICBTZXRQcm9wKFBfQVJUSUNMRSwgMCk7CisgICAgICAgU2V0UHJvcChQX1ZBTFVFLCAwKTsKKyAgICAgICBTZXRQcm9wKFBfR0VOREVSLCBNQUxFKTsKKyAgICAgfQorCitTSUVIRSBBVUNIOgorICAgICBjcmVhdGUoTCksIHJlc2V0KEwpCisgICAgIGhvb2soQyksIGNyZWF0ZShIKSwgY3JlYXRlX29iKEgpLCBjcmVhdGVfc3VwZXIoSCwgcmVzZXQoSCkKKyAgICAgY3JlYXRlKEEpLCByZXNldChBKQorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorMjIuMTAuMjAwNywgWmVzc3RyYQpkaWZmIC0tZ2l0IGEvZG9jL2xmdW4vY3JlYXRlX2RlZmF1bHRfbnBjIGIvZG9jL2xmdW4vY3JlYXRlX2RlZmF1bHRfbnBjCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmIzMzFjNWMKLS0tIC9kZXYvbnVsbAorKysgYi9kb2MvbGZ1bi9jcmVhdGVfZGVmYXVsdF9ucGMKQEAgLTAsMCArMSw1NSBAQAorY3JlYXRlX2RlZmF1bHRfbnBjKCkKK0ZVTktUSU9OOgorICAgICB2YXJhcmdzIHZvaWQgY3JlYXRlX2RlZmF1bHRfbnBjKCBpbnQgbGV2ZWwsIGludCBtYXhocCApOworCitCRU5VVFpVTkc6CisgICAgIGluaGVyaXQgInN0ZC9ucGMiOworCitGVU5LVElPTjoKKyAgICAgU2V0emUgZGllIERhdGVuIGVpbmVzIE1vbnN0ZXJzIGF1ZiBlaW5lbiBnZXdpc3NlbiBMZXZlbC4KKworICAgICBEZXIgTGV2ZWwgc29sbHRlIHp3aXNjaGVuIDEgdW5kIDIwIGxpZWdlbi4gRGllIFN0YXRzIHdlcmRlbiBhdWYgZGllc2VuCisgICAgIExldmVsIGdlc2V0enQgdW5kIG1laHJlcmUgYW5kZXJlIFdlcnRlLCBzbyBkYXNzIGRhcyBNb25zdGVyIHZvbiBkZXIKKyAgICAgU3RhZXJrZSBoZXIgZWluZW0gU3BpZWxlciBnbGVpY2hlbiBMZXZlbHMgZW50c3ByaWNodC4KKworICAgICBXaXJkIGRlciAob3B0aW9uYWxlKSBQYXJhbWV0ZXIgbWF4aHAgd2VnZ2VsYXNzZW4sIHdpcmQgZGllc2VyIGJlcmVjaG5ldAorICAgICBuYWNoOgorICAgICAgICAgIG1heGhwID0gNDIgKyA4ICogbGV2ZWwKKworICAgICBEaWUgZ2VuYXVlbiBXZXJ0ZSBzaW5kOgorICAgICAgICAgIFBfTEVWRUwgOiBsZXZlbAorICAgICAgICAgIFBfTUFYX0hQOiBtYXhocAorICAgICAgICAgIFBfTUFYX1NQOiBtYXhocAorICAgICAgICAgIFBfSEFORFMgOiAxMCAqIGxldmVsCisgICAgICAgICAgUF9CT0RZICA6ICgyMC8zKSAqIGxldmVsCisgICAgICAgICAgUF9YUCAgICA6IDUwICogbGV2ZWwgKiBtYXhocCAoPT0gNSAqIFBfSEFORFMgKiBtYXhfaHApCisKKyAgICAgICAgICBBX1NUUiwgQV9JTlQsIEFfREVYLCBBX0NPTiA6IGxldmVsCisKK0JFTUVSS1VORzoKKyAgICAgRGllc2UgRnVua3Rpb24gc29sbHRlIG51ciBpbSBjcmVhdGUoKSBlaW5lcyBNb25zdGVycyBiZW51dHp0IHdlcmRlbi4KKyAgICAgT2JlbiBiZXNjaHJpZWJlbmUgV2VydGUsIGRpZSB2b3IgZGVtIEF1ZnJ1ZiBkZXIgRnVua3Rpb24gZ2VzZXR6dAorICAgICB3dXJkZW4sIHdlcmRlbiBkdXJjaCBkaWUgbmV1ZW4gV2VydGUgZXJzZXR6dC4KKworICAgICBBYiBlaW5lbSBBdWZydWYgbWl0IExldmVsIDIwIHdlcmRlbiBQX1hQID0gMjAyMDAwIGdlc2V0enQsIGFsc28gZWluCisgICAgIEtpbGwtU3R1cCB2ZXJnZWJlbiAoc2llaGUgUF9YUCkuCisKK0JFSVNQSUVMOgorICAgICBjcmVhdGVfZGVmYXVsdF9ucGMoMTcpIGVyZ2lidDoKKworICAgICAgICAgIFBfTEVWRUwgOiAxNworICAgICAgICAgIFBfTUFYX0hQOiAxNzgKKyAgICAgICAgICBQX01BWF9TUDogMTc4CisgICAgICAgICAgUF9IQU5EUyA6IDE3MAorICAgICAgICAgIFBfQk9EWSAgOiAxMTMKKyAgICAgICAgICBQX1hQICAgIDogMTUxMzAwCisKKyAgICAgICAgICBBX1NUUiwgQV9JTlQsIEFfREVYLCBBX0NPTiA6IDE3CisKK1NJRUhFIEFVQ0g6CisgICAgIEZ1bmt0aW9uZW46ICBBZGRFeHAoKSwgR2l2ZUtpbGxTY29yZSgpCisgICAgIFByb3BlcnRpZXM6ICBQX1hQCisgICAgICAgICAgICAgICAgICBQX0xFVkVMLCBQX01BWF9IUCwgUF9NQVhfU1AsIFBfSEFORFMsIFBfQk9EWQorICAgICBTb25zdGlnZXM6ICAgbnBjcworCisxNC5GZWIgMjAwNyBHbG9pbnNvbgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2RvYy9sZnVuL2NyZWF0ZV9zdXBlciBiL2RvYy9sZnVuL2NyZWF0ZV9zdXBlcgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4xNDcyNWE2Ci0tLSAvZGV2L251bGwKKysrIGIvZG9jL2xmdW4vY3JlYXRlX3N1cGVyCkBAIC0wLDAgKzEsNDkgQEAKK2NyZWF0ZV9zdXBlcigpCisKK0ZVTktUSU9OOgorICAgICBwcm90ZWN0ZWQgdm9pZCBjcmVhdGVfc3VwZXIoKTsKKworREVGSU5JRVJUIElOOgorICAgICBhbGxlbiBTdGFuZGFyZG9iamVrdGVuCisKK0FSR1VNRU5URToKKyAgICAga2VpbmUKKworQkVTQ0hSRUlCVU5HOgorICAgICBEaWVzZSBGdW5rdGlvbiB3aXJkIGltbWVyIGRhbm4gYXVmZ2VydWZlbiwgd2VubiBlaW4gT2JqZWt0IGltcGxpeml0IGR1cmNoCisgICAgIGVpbiAnaW5oZXJpdCcgaW4gZWluZW0gZXJiZW5kZW4gT2JqZWt0ZSBnZWxhZGVuIHdpcmQuCisgICAgIE5vcm1hbHdlaXNlIG11c3MgbWFuIGRpZXNlcyBzbyBnZWxhZGVuZSBPYmpla3RlIG5pY2h0IGtvbmZpZ3VyaWVyZW4sIHdlaWwKKyAgICAgbnVyIGRhcyBQcm9ncmFtbSBkaWVzZXMgT2JqZWt0ZXMgZnVlciBkaWUgZXJiZW5kZW4gT2JqZWt0ZSBpbnRlcmVzc2FudAorICAgICBpc3QsIG5pY2h0IHNlaW5lIERhdGVuLgorICAgICBXYXMgaGllciBhYmVyIHouQi4gc2lubnZvbGwgaXN0LCBpc3QgZGFzIEFic2NoYWx0ZW4gZGVzIFJlc2V0cywgZGVubiBlaW4KKyAgICAgT2JqZWt0LCB3YXMgbnVyIGRhenUgZGllbnQsIGRhc3MgZXMgdm9uIGFuZGVyZW4gZ2VlcmJ0IHdpcmQsIGJyYXVjaHQKKyAgICAga2VpbmVuIFJlc2V0LCBhdWNoIHdlbm4gZXMgZWluIHJlc2V0KCkgZGVmaW5pZXJ0ICh3YXMgaW4gZXJiZW5kZW4gT2JqZWt0ZQorICAgICBiZW51dHp0IHdpcmQpLgorICAgICBEaWUgY3JlYXRlX3N1cGVyKCkgaW4gZGVuIFN0YW5kYXJkb2JqZWt0ZW4gdHVuIG1vbWVudGFuIGdlbmF1IGRpZXNlcy4KKworUlVlQ0tHQUJFV0VSVDoKKyAgICAga2VpbmVyCisKK0JFTUVSS1VOR0VOOgorICAgICBXZW5uIGlociB2b24gL3N0ZC8gZXJidCwgYnJhdWNodCBpaHIgZXVjaCBpbiBhbGxlciBSZWdlbCB1bSBkaWVzZQorICAgICBGdW5rdGlvbiBrZWluZSBHZWRhbmtlbiBtYWNoZW4uCisgICAgIElociBrb2VubnQgZGllc2UgRnVua3Rpb24gYWJlciBpbiBPYmpla3RlbiBzZWxiZXIgZGVmaW5pZXJlbiwgZGllIG51ciB6dW0KKyAgICAgRXJiZW4gZ2VkYWNodCBzaW5kLiBEaWVzIGthbm4gc2lubnZvbGwgZWluLCB3ZW5uIGlociBuaWNodCB2b24gL3N0ZC8gZXJidAorICAgICB1bmQgZWluIHJlc2V0KCkgaW0gT2JqZWt0IGhhYnQgb2RlciB3YXMgbWFjaGVuIHdvbGx0LCB3YXMgdWViZXIgZGFzCisgICAgIEFic2NoYWx0ZW4gZGVzIFJlc2V0cyBoaW5hdXNnZWh0LgorCitCRUlTUElFTEU6CisgICAgIEdlZ2ViZW4gc2VpIGZvbGdlbmRlIFZlcmVyYnVuZ3NrZXR0ZToKKyAgICAgL3N0ZC9yb29tIC0+IC9kL2luc2Vsbi96ZXNzdHJhL3N0ZHJhdW0gLT4gL2QvaW5zZWxuL3plc3N0cmEvcmF1bQorCisgICAgIFdpcmQgbnVuICdyYXVtJyBnZWxhZGVuIHVuZCAnc3RkcmF1bScgaXN0IG5vY2ggbmljaHQgZ2VsYWRlbiwgd2lyZCBkZXIKKyAgICAgRHJpdmVyIGltcGxpeml0IHZvbiBzZWxic3QgJ3N0ZHJhdW0nIGxhZGVuICh3ZWlsICdyYXVtJyBkYXMgUHJvZ3JhbW0gdm9uCisgICAgICdzdGRyYXVtJyBicmF1Y2h0KS4gQmVpIGRpZXNlbSBMYWRlbiB3aXJkIGRhcyBjcmVhdGUoKSBpbiAnc3RkcmF1bScgbmljaHQKKyAgICAgYXVzZ2VmdWVocnQsIHNvbmRlcm4gc3RhdHRkZXNzZW4gY3JlYXRlX3N1cGVyKCkuCisgICAgCitTSUVIRSBBVUNIOgorICAgICBjcmVhdGUoTCksIHJlc2V0KEwpCisgICAgIGhvb2soQyksIGNyZWF0ZShIKSwgY3JlYXRlX29iKEgpLCBjcmVhdGVfc3VwZXIoSCwgcmVzZXQoSCkKKyAgICAgY3JlYXRlKEEpLCByZXNldChBKQorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorMjIuMTAuMjAwNywgWmVzc3RyYQpkaWZmIC0tZ2l0IGEvZG9jL2xmdW4vZGVmdWVsX2RyaW5rIGIvZG9jL2xmdW4vZGVmdWVsX2RyaW5rCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjY3ZTgzNGQKLS0tIC9kZXYvbnVsbAorKysgYi9kb2MvbGZ1bi9kZWZ1ZWxfZHJpbmsKQEAgLTAsMCArMSw1OSBAQAorRlVOS1RJT046CisgICAgaW50IGRlZnVlbF9kcmluaygpOworCitERUZJTklFUlQgSU46CisgICAgL3N0ZC9saXZpbmcvbGlmZS5jCisKK0FSR1VNRU5URToKKyAgICBLZWluZS4KKyAgICAgICAgCitCRVNDSFJFSUJVTkc6CisgICAgRW50dGFua3QgZGVuIFNwaWVsZXIgYXV0b21hdGlzY2ggdW0gZWluZW4gZ2V3aXNzZW4gRmx1ZXNzaWdrZWl0cy1XZXJ0LAorICAgIHNvZmVybiBkZXIgU3BpZWxlciB1ZWJlciBlaW5lciBiZXN0aW1tdGVuIEVudHRhbmstR3JlbnplIGxpZWd0IHVuZCBzZWl0CisgICAgc2VpbmVtIGxldHp0ZW4gRW50dGFua2VuIGVpbmUgZ2V3aXNzZSBaZWl0IHZlcmdhbmdlbiBpc3QuCisgICAgQWxsZSBkaWVzZSBXZXJ0ZSBzaW5kIHJhc3NlbmFiaGFlbmdpZy4KKyAgICBBdXNzZXJkZW0gd2lyZCBkZW0gU3BpZWxlciBlaW5lIGdld2lzc2UgTWVuZ2UgQWxrb2hvbCBlbnR6b2dlbi4gRXIgd2lyZAorICAgIGFsc28gbWl0IGplZGVtIGZsdWVzc2lnZW4gRW50dGFua2VuIGV0d2FzIG51ZWNodGVybmVyLgorCisgICAgRXMgaXN0IGFsc28gTklDSFQgbW9lZ2xpY2gsIEVpbmZsdXNzIGF1ZiBkaWUgTWVuZ2UgZGVzIEVudHRhbmtlbnMKKyAgICB6dSBuZWhtZW4uIERhcyBpc3QgaGllciBzbyBnZXdvbGx0LgorCisgICAgSGF0IGRlciBTcGllbGVyIG1pbmRlc3RlbnMgCisgICAgKiBQX0RFRlVFTF9MSU1JVF9EUklOSyBpbiBQX0RSSU5LCisgICAga2FubiBlciBhbGxlCisgICAgKiBQX0RFRlVFTF9USU1FX0RSSU5LCisgICAgdW0KKyAgICAqICh4PVBfRFJJTksqUF9ERUZVRUxfQU1PVU5UX0RSSU5LLzIpICsgcmFuZG9tKHgpCisgICAgICAoYWxzbyB1bSAoNTAgYmlzIDEwMCAqIFBfRFJJTkspIFByb3plbnQpCisgICAgZW50dGFua2VuLgorCitSVUVDS0dBQkVXRVJURToKKyAgICBERUZVRUxfVE9PX1NPT046IC0yLCB3ZW5uIEVudHRhbmtpbnRlcnZhbGx6ZWl0ZW4genUga3Vyei4KKyAgICBERUZVRUxfVE9PX0xPVzogIC0xLCB3ZW5uIEVudHRhbmtncmVuemUgbm9jaCBuaWNodCBlcnJlaWNodC4KKyAgICBOT19ERUZVRUw6ICAgICAgICAwLCB3ZW5uIEVudHRhbmtlbiBuaWNodCBub2V0aWcgd2FyIChTcGllbGVyIHdhciBsZWVyKQorICAgID4wLCB3ZW5uIEVyZm9sZyAoZW50dGFua3RlIFdlcnQgd2lyZCB6dXJ1ZWNrZ2VnZWJlbikuCisKKyAgICAoS29uc3RhbnRlbiBrb21tZW4gYXVzIC9zeXMvZGVmdWVsLmgpCisKK0JFTUVSS1VORzoKKyAgICBCaXR0ZSBkZWZ1ZWxfZHJpbmsoKSBiZW51dHplbiB1bmQgbmljaHQgUF9EUklOSyBvZGVyIFBfTUFYX0RSSU5LIGRlcworICAgIG1hbmlwdWxpZXJlbiEKKworICAgIEVzIGdpYnQga2VpbmUgZWlnZW5lIE1ldGhvZGUgZnVlciBkaWUgVmVycmluZ2VydW5nIHZvbiBQX0FMQ09IT0wuCisKKyAgICBBY2h0dW5nOiBOdXIgVG9pbGV0dGVuIHNvbGx0ZW4gZGllc2UgRnVua3Rpb24gaW0gU3BpZWxlciBhdWZydWZlbiEKKworQkVJU1BJRUw6CisgICAgcy4gQnNwLiB6dSBkZWZ1ZWxfZm9vZCgpCisKK1NJRUhFIEFVQ0g6CisgICAgIEFlaG5saWNoOiAgZGVmdWVsX2Zvb2QKKyAgICAgVGFua2VuOiAgICBjb25zdW1lLCBkcmlua19hbGNvaG9sLCBkcmlua19zb2Z0LCBlYXRfZm9vZAorICAgICBIZWlsdW5nOiAgIGhlYWxfc2VsZiwgcmVzdG9yZV9zcGVsbF9wb2ludHMsIHJlc3RvcmVfaGl0X3BvaW50cywgCisgICAgICAgICAgICAgICAgYnVmZmVyX2hwLCBidWZmZXJfc3AKKyAgICAgVGltaW5nOiAgICBjaGVja19hbmRfdXBkYXRlX3RpbWVkX2tleQorICAgICBQcm9wczogICAgIFBfRFJJTkssIFBfRk9PRCwgUF9BTENPSE9MLCBQX1NQLCBQX0hQLAorICAgICAgICAgICAgICAgIFBfREVGVUVMX1RJTUVfRk9PRCwgUF9ERUZVRUxfVElNRV9EUklOSworICAgICBLb256ZXB0ZTogIGhlaWx1bmcsIGVudHRhbmtlbiwgZm9vZAorCis5LiBBdWd1c3QgMjAxNSBHbG9pbnNvbgpkaWZmIC0tZ2l0IGEvZG9jL2xmdW4vZGVmdWVsX2Zvb2QgYi9kb2MvbGZ1bi9kZWZ1ZWxfZm9vZApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4xZTg5MTEwCi0tLSAvZGV2L251bGwKKysrIGIvZG9jL2xmdW4vZGVmdWVsX2Zvb2QKQEAgLTAsMCArMSw4NSBAQAorRlVOS1RJT046CisgICAgaW50IGRlZnVlbF9mb29kKCk7CisKK0RFRklOSUVSVCBJTjoKKyAgICAvc3RkL2xpdmluZy9saWZlLmMKKworQVJHVU1FTlRFOgorICAgIEtlaW5lLgorCitCRVNDSFJFSUJVTkc6CisgICAgRW50dGFua3QgZGVuIFNwaWVsZXIgYXV0b21hdGlzY2ggdW0gZWluZW4gZ2V3aXNzZW4gRXNzZW5zLVdlcnQsCisgICAgc29mZXJuIGRlciBTcGllbGVyIHVlYmVyIGVpbmVyIGJlc3RpbW10ZW4gRW50dGFuay1HcmVuemUgbGllZ3QgdW5kIHNlaXQKKyAgICBzZWluZW0gbGV0enRlbiBFbnR0YW5rZW4gZWluZSBnZXdpc3NlIFplaXQgdmVyZ2FuZ2VuIGlzdC4KKyAgICBBbGxlIGRpZXNlIFdlcnRlIHNpbmQgcmFzc2VuYWJoYWVuZ2lnLgorCisgICAgRXMgaXN0IGFsc28gTklDSFQgbW9lZ2xpY2gsIEVpbmZsdXNzIGF1ZiBkaWUgTWVuZ2UgZGVzIEVudHRhbmtlbnMKKyAgICB6dSBuZWhtZW4uIERhcyBpc3QgaGllciBzbyBnZXdvbGx0LgorCisgICAgSGF0IGRlciBTcGllbGVyIG1pbmRlc3RlbnMgCisgICAgKiBQX0RFRlVFTF9MSU1JVF9GT09EIGluIFBfRk9PRAorICAgIGthbm4gZXIgYWxsZQorICAgICogUF9ERUZVRUxfVElNRV9GT09ECisgICAgdW0KKyAgICAqICh4PVBfRFJJTksqUF9ERUZVRUxfQU1PVU5UX0ZPT0QvMikgKyByYW5kb20oeCkKKyAgICAgIChhbHNvIHVtICg1MCBiaXMgMTAwICogUF9GT09EKSBQcm96ZW50KQorICAgIGVudHRhbmtlbi4KKworUlVFQ0tHQUJFV0VSVEU6CisgICAgREVGVUVMX1RPT19TT09OOiAtMiwgd2VubiBFbnR0YW5raW50ZXJ2YWxsemVpdGVuIHp1IGt1cnouCisgICAgREVGVUVMX1RPT19MT1c6ICAtMSwgd2VubiBFbnR0YW5rZ3JlbnplIG5vY2ggbmljaHQgZXJyZWljaHQuCisgICAgTk9fREVGVUVMOiAgICAgICAgMCwgd2VubiBFbnR0YW5rZW4gbmljaHQgbm9ldGlnIHdhciAoU3BpZWxlciB3YXIgbGVlcikKKyAgICA+MCwgd2VubiBFcmZvbGcgKGVudHRhbmt0ZSBXZXJ0IHdpcmQgenVydWVja2dlZ2ViZW4pLgorCisgICAgKEtvbnN0YW50ZW4ga29tbWVuIGF1cyAvc3lzL2RlZnVlbC5oKQorCitCRU1FUktVTkc6CisgICAgQml0dGUgZGVmdWVsX2Zvb2QoKSBiZW51dHplbiB1bmQgbmljaHQgUF9GT09EIG9kZXIgUF9NQVhfRk9PRCBkZXMKKyAgICBTcGllbGVycyBtYW5pcHVsaWVyZW4hCisKKyAgICBBY2h0dW5nOiBOdXIgVG9pbGV0dGVuIHNvbGx0ZW4gZGllc2UgRnVua3Rpb24gaW0gU3BpZWxlciBhdWZydWZlbiEKKworQkVJU1BJRUw6CisgICAgaW50IGFjdGlvbl9lbnR0YW5rZW4oKSB7CisgICAgICBzdHJpbmcgbXNnOworICAgICAgaW50IHZhbCA9IHRoaXNfcGxheWVyKCktPmRlZnVlbF9mb29kKCk7CisKKyAgICAgIHN3aXRjaCAodmFsKSB7CisgICAgICAgIGNhc2UgREVGVUVMX1RPT19TT09OOgorICAgICAgICAgIG1zZyA9ICJEdSB3YXJzdCBkb2NoIGVyc3Qgdm9yIGt1cnplbSBhdWYgVG9pbGV0dGUuLi4iOworICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIERFRlVFTF9UT09fTE9XOgorICAgICAgICAgIG1zZyA9ICJEdSB2ZXJzdWNoc3QgRGljaCB6dSBlbnRsZWVyZW4sIGFiZXIgaXJnZW5kd2llIHdpbGwgIgorICAgICAgICAgICAgICAgICJkYXMgbmljaHQgc28gcmVjaHQga2xhcHBlbi4iOworICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIE5PX0RFRlVFTDoKKyAgICAgICAgICBtc2cgPSAiRHUgaGFzdCBzZWl0IGxhbmdlbSBuaWNodHMgZ2VnZXNzZW4sIHdpZSB3aWxsc3QgRHUgZGFubiAiCisgICAgICAgICAgICAgICAgIndhcyBsb3N3ZXJkZW4ga29lbm5lbj8iOworICAgICAgICAgIGJyZWFrOworICAgICAgICBkZWZhdWx0OgorICAgICAgICAgIHN0cmluZyBxdWFsaWZpZXI7CisgICAgICAgICAgaW50IGZ1enp5cGVyY2VudCA9ICg5MCtyYW5kb20oMjApKSAqCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbC90aGlzX3BsYXllcigpLT5RdWVyeVByb3AoUF9NQVhfRk9PRCk7CisgICAgICAgICAgc3dpdGNoKGZ1enp5cGVyY2VudCkgeworICAgICAgICAgICAgY2FzZSAwLi41MDogIHF1YWxpZmllciA9ICJldHdhcyI7IGJyZWFrOworICAgICAgICAgICAgY2FzZSA1MS4uNzU6IHF1YWxpZmllciA9ICJlbm9ybSI7IGJyZWFrOworICAgICAgICAgICAgZGVmYXVsdDogICAgIHF1YWxpZmllciA9ICJ1bmdsYXVibGljaCI7IGJyZWFrOworICAgICAgICAgIH0KKyAgICAgICAgICBtc2cgPSAiRHUgZW50bGVlcnN0IERpY2ggIitxdWFsaWZpZXIiKy4gUHVoLCBkYXMgdGF0IGd1dCEiOworICAgICAgICAgIGJyZWFrOworICAgICAgfQorICAgICAgdGVsbF9vYmplY3QodGhpc19wbGF5ZXIoKSwgYnJlYWtfc3RyaW5nKG1zZywgNzgpKTsKKyAgICAgIHJldHVybiAxOworICAgIH0KKworU0lFSEUgQVVDSDoKKyAgICAgQWVobmxpY2g6ICBkZWZ1ZWxfZHJpbmsKKyAgICAgVGFua2VuOiAgICBjb25zdW1lLCBkcmlua19hbGNvaG9sLCBkcmlua19zb2Z0LCBlYXRfZm9vZAorICAgICBIZWlsdW5nOiAgIGhlYWxfc2VsZiwgcmVzdG9yZV9zcGVsbF9wb2ludHMsIHJlc3RvcmVfaGl0X3BvaW50cywgCisgICAgICAgICAgICAgICAgYnVmZmVyX2hwLCBidWZmZXJfc3AKKyAgICAgVGltaW5nOiAgICBjaGVja19hbmRfdXBkYXRlX3RpbWVkX2tleQorICAgICBQcm9wczogICAgIFBfRFJJTkssIFBfRk9PRCwgUF9BTENPSE9MLCBQX1NQLCBQX0hQLAorICAgICAgICAgICAgICAgIFBfREVGVUVMX1RJTUVfRk9PRCwgUF9ERUZVRUxfVElNRV9EUklOSworICAgICBLb256ZXB0ZTogIGhlaWx1bmcsIGVudHRhbmtlbiwgZm9vZAorCis5LiBBdWd1c3QgMjAxNSBHbG9pbnNvbgpkaWZmIC0tZ2l0IGEvZG9jL2xmdW4vZGVyZWdpc3Rlcl9tb2RpZmllciBiL2RvYy9sZnVuL2RlcmVnaXN0ZXJfbW9kaWZpZXIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uY2JiNTQxZQotLS0gL2Rldi9udWxsCisrKyBiL2RvYy9sZnVuL2RlcmVnaXN0ZXJfbW9kaWZpZXIKQEAgLTAsMCArMSwyNCBAQAorZGVyZWdpc3Rlcl9tb2RpZmllcigpCitGVU5LVElPTjoKKyAgICAgdm9pZCBkZXJlZ2lzdGVyX21vZGlmaWVyKG9iamVjdCBtb2RpZmllcikKKworREVGSU5JRVJUIElOOgorICAgICAvc3RkL2xpdmluZy9hdHRyaWJ1dGVzLmMKKw0KK1BBUkFNRVRFUjoNCisgICAgIG1vZGlmaWVyCS0gT2JqZWt0IG1pdCBQX1hfQVRUUl9NT0Qgb2RlciBQX01fQVRUUl9NT0QNCisKK0JFU0NIUkVJQlVORzoKKyAgICAgTWVsZGV0IGVpbmVuIE1vZGlmaWVyIGltIFNwaWVsZXIgYWIuIFdpcmQgZHVyY2ggUmVtb3ZlU2Vuc2l0aXZlT2JqZWN0CisgICAgIGJlemllaHVuZ3N3ZWlzZSBiZWltIEF1c3ppZWhlbiBvZGVyIFdlZ3N0ZWNrZW4gZ2VydWZlbi4KKyAgICAgTXVzcyBuaWNodCBkaXJla3QgZ2VydWZlbiB3ZXJkZW4uIEJlaSBWZXJhZW5kZXJ1bmdlbiB2b24gTW9kaWZpa2F0b3JlbgorICAgICBzb2xsdGUgc3RhdHRkZXNzZW4gVXBkYXRlQXR0cmlidXRlcyBnZXJ1ZmVuIHdlcmRlbi4gICAgIAorCitTSUVIRSBBVUNIOgorICAgICBRdWVyeUF0dHJpYnV0ZSgpLCBRdWVyeVJlYWxBdHRyaWJ1dGUoKSwgUXVlcnlBdHRyaWJ1dGVPZmZzZXQoKSwNCisgICAgIFNldEF0dHIoKSwgU2V0QXR0cmlidXRlKCksIFNldFJlYWxBdHRyaWJ1dGUoKSwgVXBkYXRlQXR0cmlidXRlcygpLA0KKyAgICAgcmVnaXN0ZXJfbW9kaWZpZXIoKSxQX0FUVFJJQlVURVMsIFBfQVRUUklCVVRFU19PRkZTRVRTLCAKKyAgICAgUF9BVFRSSUJVVEVTX01PRElGSUVSLCBQX1hfQVRUUl9NT0QsIFBfTV9BVFRSX01PRCwgCisgICAgIC9zdGQvbGl2aW5nL2F0dHJpYnV0ZXMuYw0KKworMTMuSnVuLjIwMDQsIE11YWRpYgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2RvYy9sZnVuL2RpZSBiL2RvYy9sZnVuL2RpZQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5jZTA1NWY4Ci0tLSAvZGV2L251bGwKKysrIGIvZG9jL2xmdW4vZGllCkBAIC0wLDAgKzEsNDUgQEAKK2RpZSgpCisKK0ZVTktUSU9OOgorICAgICBwdWJsaWMgdmFyYXJncyB2b2lkIGRpZShpbnQgcG9pc29uZGVhdGgsaW50IGV4dGVybik7CisKK0RFRklOSUVSVCBJTjoKKyAgICAgL3N0ZC9saXZpbmcvbGlmZS5jCisKK0FSR1VNRU5URToKKyAgICAgaW50IHBvaXNvbmRlYXRoCisJICBEaWVzZXMgRmxhZyBzb2xsdGUgYmVpIGVpbmVtIEdpZnR0b2QgKFBfUE9JU09OKSBnZXNldHp0IHNlaW4uCisgICAgIGludCBleHRlcm4KKwkgIEludGVybi4KKworQkVTQ0hSRUlCVU5HOgorICAgICBEYXMgTGViZXdlc2VuIHN0aXJidCwgbWVpc3QgYXV0b21hdGlzY2ggdm9uIGRvX2RhbWFnZSgpIGF1c2dlbG9lc3QsIHdlbm4KKyAgICAgMCBIUCB1bnRlcnNjaHJpdHRlbiB3ZXJkZW4uIEluIGRpZXNlbSBGYWxsIHdpcmQgZGVyIEthbXBmIGJlZW5kZXQsIEdpZnQsCisgICAgIEFsa29ob2wsIFRyaW5rLSB1bmQgRXNzd2VydGUsIEJsaW5kaGVpdCwgVGF1YmhlaXQgdS5zLncuIGF1ZiBOdWxsCisgICAgIGdlc2V0enQgb2RlciBnZWxvZXNjaHQuCisKKyAgICAgRXMgd2lyZCBhdXRvbWF0aXNjaCBlaW5lIExlaWNoZSAoc2llaGUgYXVjaCBQX0NPUlBTRSwgUF9OT0NPUlBTRSkgbmVic3QKKyAgICAgVG9kZXNtZWxkdW5nZW4gKHNpZWhlIGF1Y2ggUF9ESUVfTVNHKSBlcnpldWd0LCB1bmQgZnVlciBTcGllbGVyIHdlcmRlbgorICAgICBLaWxsc3R1cHNlIHZlcmdlYmVuLCBzb2Zlcm4gbm90d2VuZGlnLgorCisgICAgIFVlYmVyIGRlbiBIb29rIFBfVE1QX0RJRV9IT09LIGthbm4gbWFuIGplZG9jaCBhdWYgZGVuIEF1dG9tYXRpc211cworICAgICBFaW5mbHVzcyBuZWhtZW4sIHouQi4ga29lbm50ZSBlaW4gdGVtcG9yYWVyZXIgVG9kZXNiYW5uLVphdWJlciBkYXMKKyAgICAgU3RlcmJlbiBmdWVyIGt1cnplIFplaXQgdmVyaGluZGVybi4KKworUlVlQ0tHQUJFV0VSVDoKKyAgICAga2VpbmVyCisKK0JFTUVSS1VOR0VOOgorICAgICBEaWVzZSBGdW5rdGlvbiBzb2xsdGUgbnVyIHNlbHRlbiBkaXJla3QgdmVyd2VuZGV0IHdlcmRlbi4gTWVpc3QgaXN0IGRlcgorICAgICB1ZWJsaWNoZSBXZWcgdWViZXIgRGVmZW5kKCkgLT4gZG9fZGFtYWdlKCkgLT4gZGllKCkgZGllIGxvZ2lzY2ggYmVzc2VyZQorICAgICB1bmQgYmFsYW5jZXRlY2huaXNjaCBndWVuc3RpZ2VyZSBMb2VzdW5nLgorCitTSUVIRSBBVUNIOgorICAgICBUb2Rlc3Vyc2FjaGVuOglEZWZlbmQoTCksIGRvX2RhbWFnZShMKSwgUF9QT0lTT04KKyAgICAgVmVyd2FuZHQ6CQlQX1RNUF9ESUVfSE9PSywgUF9ERUFEUworICAgICBUb2Rlc21lbGR1bmdlbjoJUF9LSUxMX05BTUUsIFBfS0lMTF9NU0csIFBfTVVSREVSX01TRywgUF9ESUVfTVNHCisJCQlQX1pBUF9NU0csIFBfRU5FTVlfREVBVEhfU0VRVUVOQ0UKKyAgICAgU29uc3RpZ2VzOgkJUF9DT1JQU0UsIFBfTk9DT1JQU0UsIC9zdGQvY29ycHNlLmMKKworLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorTGFzdCBtb2RpZmllZDogTW9uIE1heSAxNCAxNjoyMDozNCAyMDAxIGJ5IFBhdHJ5bgpkaWZmIC0tZ2l0IGEvZG9jL2xmdW4vZG9VbndlYXJNZXNzYWdlIGIvZG9jL2xmdW4vZG9VbndlYXJNZXNzYWdlCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmUwMjllYTIKLS0tIC9kZXYvbnVsbAorKysgYi9kb2MvbGZ1bi9kb1Vud2Vhck1lc3NhZ2UKQEAgLTAsMCArMSwyOCBAQAorZG9VbndlYXJNZXNzYWdlKCkKKworRlVOS1RJT046CisJdm9pZCBkb1Vud2Vhck1lc3NhZ2Uob2JqZWN0IHdvcm5fYnksIGludCBhbGwpOworCitERUZJTklFUlQgSU46CisJL3N0ZC9hcm1vdXIvY29tYmF0LmMKKworQVJHVU1FTlRFOgorCXdvcm5fYnkKKyAgICAgICAgICBEYXMgTGViZXdlc2VuLCBkYXNzIGRpZSBSdWVzdHVuZyBiaXNoZXIgZ2V0cmFnZW4gaGF0CisgICAgICAgIGFsbAorICAgICAgICAgIFd1cmRlICJ6aWVoZSBhbGxlcyBhdXMiLyJ6aWVoZSBhbGxlIHJ1ZXN0dW5nZW4gYXVzIiBlaW5nZWdlYmVuLAorICAgICAgICAgIHNvIGlzdCBhbGwgZ2VzZXR6dCwgYW5zb25zdGVuIG5pY2h0LgorCitCRVNDSFJFSUJVTkc6CisgICAgICAgIERpZXNlIEZ1bmt0aW9uIGdpYnQgYmVpbSBBdXN6aWVoZW4gZWluZXIgUnVlc3R1bmcgZGllIGVudHNwci4KKyAgICAgICAgTWVsZHVuZyBhbiBkZW4gVHJhZWdlciB1bmQgZGllIFVtZ2VidW5nIGF1cy4KKworUlVlQ0tHQUJFV0VSVDoKKwlrZWluZXIKKworU0lFSEUgQVVDSDoKKyAgICAgICAgZG9XZWFyTWVzc2FnZSgpLCBkb1dpZWxkTWVzc2FnZSgpLCBkb1Vud2llbGRNZXNzYWdlKCkKKworLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorTGFzdCBtb2RpZmllZDogU2F0IEp1biAyNiAxNTo0MTowMCAxOTk5IGJ5IFBhcmFjZWxzdXMKKwpkaWZmIC0tZ2l0IGEvZG9jL2xmdW4vZG9VbndpZWxkTWVzc2FnZSBiL2RvYy9sZnVuL2RvVW53aWVsZE1lc3NhZ2UKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZGJmMDdjZQotLS0gL2Rldi9udWxsCisrKyBiL2RvYy9sZnVuL2RvVW53aWVsZE1lc3NhZ2UKQEAgLTAsMCArMSwyNSBAQAorZG9VbndpZWxkTWVzc2FnZSgpCisKK0ZVTktUSU9OOgorCXZvaWQgZG9VbndpZWxkTWVzc2FnZShvYmplY3Qgd2llbGRlZF9ieSk7CisKK0RFRklOSUVSVCBJTjoKKwkvc3RkL3dlYXBvbi9jb21iYXQuYworCitBUkdVTUVOVEU6CisJd2llbGRlZF9ieQorICAgICAgICAgIERhcyBMZWJld2VzZW4sIGRhc3MgZGllIChQYXJpZXIpV2FmZmUgYmlzaGVyIGdlenVlY2t0IGhhdHRlLgorCitCRVNDSFJFSUJVTkc6CisgICAgICAgIERpZXNlIEZ1bmt0aW9uIGdpYnQgYmVpbSBXZWdzdGVja2VuIGVpbmVyIFdhZmZlIGRpZSBlbnRzcHIuCisgICAgICAgIE1lbGR1bmcgYW4gZGVuIEJlbnV0emVyIHVuZCBkaWUgVW1nZWJ1bmcgYXVzLgorCitSVWVDS0dBQkVXRVJUOgorCWtlaW5lcgorCitTSUVIRSBBVUNIOgorICAgICAgICBkb1dlYXJNZXNzYWdlKCksIGRvVW53ZWFyTWVzc2FnZSgpLCBkb1dpZWxkTWVzc2FnZSgpCisKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KK0xhc3QgbW9kaWZpZWQ6IFNhdCBKdW4gMjYgMTU6MzI6MDAgMTk5OSBieSBQYXJhY2Vsc3VzCisKZGlmZiAtLWdpdCBhL2RvYy9sZnVuL2RvV2Vhck1lc3NhZ2UgYi9kb2MvbGZ1bi9kb1dlYXJNZXNzYWdlCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjE5NjJkNWMKLS0tIC9kZXYvbnVsbAorKysgYi9kb2MvbGZ1bi9kb1dlYXJNZXNzYWdlCkBAIC0wLDAgKzEsMjYgQEAKK2RvV2Vhck1lc3NhZ2UoKQorCitGVU5LVElPTjoKKwl2YXJhcmdzIHZvaWQgZG9XZWFyTWVzc2FnZShpbnQgYWxsKTsKKworREVGSU5JRVJUIElOOgorCS9zdGQvYXJtb3VyL2NvbWJhdC5jCisKK0FSR1VNRU5URToKKwlhbGwKKyAgICAgICAgICBXdXJkZSAidHJhZ2UgYWxsZXMiLyJ0cmFnZSBhbGxlIHJ1ZXN0dW5nZW4iIGVpbmdlZ2ViZW4sIHNvCisgICAgICAgICAgaXN0IGFsbCBnZXNldHp0LCBhbnNvbnN0ZW4gbmljaHQuCisKK0JFU0NIUkVJQlVORzoKKyAgICAgICAgRGllc2UgRnVua3Rpb24gZ2lidCBiZWltIEFuemllaGVuIGVpbmVyIFJ1ZXN0dW5nIGRpZSBlbnRzcHIuCisgICAgICAgIE1lbGR1bmcgYW4gZGVuIFRyYWVnZXIgdW5kIGRpZSBVbWdlYnVuZyBhdXMuCisKK1JVZUNLR0FCRVdFUlQ6CisJa2VpbmVyCisKK1NJRUhFIEFVQ0g6CisgICAgICAgIGRvVW53ZWFyTWVzc2FnZSgpLCBkb1dpZWxkTWVzc2FnZSgpLCBkb1Vud2llbGRNZXNzYWdlKCkKKworLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorTGFzdCBtb2RpZmllZDogU2F0IEp1biAyNiAxNTozMDowMCAxOTk5IGJ5IFBhcmFjZWxzdXMKKwpkaWZmIC0tZ2l0IGEvZG9jL2xmdW4vZG9XaWVsZE1lc3NhZ2UgYi9kb2MvbGZ1bi9kb1dpZWxkTWVzc2FnZQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4yMzE1ZmFhCi0tLSAvZGV2L251bGwKKysrIGIvZG9jL2xmdW4vZG9XaWVsZE1lc3NhZ2UKQEAgLTAsMCArMSwyNCBAQAorZG9XaWVsZE1lc3NhZ2UoKQorCitGVU5LVElPTjoKKwl2b2lkIGRvV2llbGRNZXNzYWdlKCk7CisKK0RFRklOSUVSVCBJTjoKKwkvc3RkL3dlYXBvbi9jb21iYXQuYworCitBUkdVTUVOVEU6CisJa2VpbmUKKworQkVTQ0hSRUlCVU5HOgorICAgICAgICBEaWVzZSBGdW5rdGlvbiBnaWJ0IGJlaW0gWnVlY2tlbiBlaW5lciBXYWZmZSBkaWUgZW50c3ByLgorICAgICAgICBNZWxkdW5nIGFuIGRlbiBCZW51dHplciB1bmQgZGllIFVtZ2VidW5nIGF1cy4KKworUlVlQ0tHQUJFV0VSVDoKKwlrZWluZXIKKworU0lFSEUgQVVDSDoKKyAgICAgICAgZG9XZWFyTWVzc2FnZSgpLCBkb1Vud2Vhck1lc3NhZ2UoKSwgZG9VbndpZWxkTWVzc2FnZSgpCisKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KK0xhc3QgbW9kaWZpZWQ6IFNhdCBKdW4gMjYgMTU6MzM6MDAgMTk5OSBieSBQYXJhY2Vsc3VzCisKZGlmZiAtLWdpdCBhL2RvYy9sZnVuL2RvX2RhbWFnZSBiL2RvYy9sZnVuL2RvX2RhbWFnZQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4yZDU4ODM5Ci0tLSAvZGV2L251bGwKKysrIGIvZG9jL2xmdW4vZG9fZGFtYWdlCkBAIC0wLDAgKzEsNDQgQEAKK2RvX2RhbWFnZShMKQorRlVOS1RJT046CisgICAgIGludCBkb19kYW1hZ2UoaW50IGRhbSxtaXhlZCBlbmVteSk7CisKK0RFRklOSUVSVCBJTjoKKyAgICAgL3N0ZC9saXZpbmcvbGlmZS5jCisKK0FSR1VNRU5URToKKyAgICAgaW50IGRhbQorCSAgRGllIGFienV6aWVoZW5kZW4gTGViZW5zcHVua3RlIChIUCkuCisgICAgIG9iamVjdCBlbmVteQorCSAgRGFzIE9iamVrdCwgd2VsY2hlcyBkZW4gU2NoYWRlbiB6dWZ1ZWd0LgorCitCRVNDSFJFSUJVTkc6CisgICAgIERlbSBMZWJld2VzZW4gd2VyZGVuIDxkYW0+IEhQIGFiZ2V6b2dlbi4gRmFsbHMgd2VuaWdlciBhbHMgMCBIUCB1ZWJyaWcKKyAgICAgYmxlaWJlbiwgc28gc3RpcmJ0IGVzIGF1dG9tYXRpc2NoIG1pdHRlbHMgZGllKCkuCisgICAgIEVpbiBMZWJld2VzZW4sIHdlbGNoZXMgc2ljaCBiZXdlZ3QgaGF0LCB0cmlmZnQgZGllIGVyc3RlbiBLYW1wZnJ1bmRlbgorICAgICBzZWhyIHZpZWwgc2NobGVjaHRlciwgdW0gUmVpbi1SYXVzLUF0dGFja2VuIHp1IHZlcmhpbmRlcm4uIERpZXNlcworICAgICBWb3JnZWhlbiBrYW5uIG1hbiBtaXR0ZWxzIFBfRU5BQkxFX0lOX0FUVEFDS19PVVQgZGVha3RpdmllcmVuLgorICAgICBMZWJld2VzZW4sIHdlbGNoZSBQX05PX0FUVEFDSyBnZXNldHp0IGhhYmVuLCBrYW5uIG1hbiBtaXQgZGllc2VyCisgICAgIEZ1bmt0aW9uIG5pY2h0IHNjaGFkZW4uCisKK1JVZUNLR0FCRVdFUlQ6CisgICAgIERlciB0YXRzYWVjaGxpY2ggdmVydXJzYWNodGUgU2NoYWRlbi4KKworQkVNRVJLVU5HRU46CisgICAgIEJlaW0gR2VnbmVyIDxlbmVteT4sIGZhbGxzIHZvcmhhbmRlbiwgd2VyZGVuIFhQIHVuZCBBTElHTiBlbnRzcHJlY2hlbmQKKyAgICAgYW5nZXBhc3N0LCBpbSBPcGZlciB3aXJkIGRlciBHZWduZXIgaW4gUF9LSUxMRVIgdmVybWVya3QsIGRlciBLYW1wZiB3aXJkCisgICAgIGJlZW5kZXQuCisgICAgIERpZXNlIEZ1bmt0aW9uIHNvbGx0ZSBudXIgc2VsdGVuIGRpcmVrdCB2ZXJ3ZW5kZXQgd2VyZGVuLiBNZWlzdCBpc3QgZGVyCisgICAgIHVlYmxpY2hlIFdlZyB1ZWJlciBEZWZlbmQoKSAtPiBkb19kYW1hZ2UoKSAtPiBkaWUoKSBkaWUgbG9naXNjaCBiZXNzZXJlCisgICAgIHVuZCBiYWxhbmNldGVjaG5pc2NoIGd1ZW5zdGlnZXJlIExvZXN1bmcsIGRhIERlZmVuZCgpIG1hZ2lzY2hlCisgICAgIFZlcnRlaWRpZ3VuZ2VuLCBkaWUgZGVyIFNwaWVsZXIgYmVpIHNpY2ggaGF0IGJlcnVlY2tzaWNodGlndC4KKyAgICAgRXMgc29sbHRlIGFsc28gYWxsZWluIHNjaG9uIGF1cyBGYWlybmVzcyBnZWdlbnVlYmVyIGRlbiBPYmpla3RlbgorICAgICBhbmRlcmVyIE1hZ2llciBEZWZlbmQoKSBpbW1lciBkZW0gZGlyZWt0ZW4gcmVkdWNlX2hpdF9wb2ludHMoKSBvZGVyCisgICAgIGRvX2RhbWFnZSgpIHZvcmdlem9nZW4gd2VyZGVuLiBNaXR0ZWxzIGRlciBGbGFncyBpbiAnc3BlbGwnIGthbm4gbWFuCisgICAgIHNlaHIgdmllbGUgUGFyYW1ldGVyIGJlZWluZmx1c3Nlbi4KKworU0lFSEUgQVVDSDoKKyAgICAgVmVyd2FuZHQ6CURlZmVuZChMKSwgcmVkdWNlX2hpdF9wb2ludHMoTCksIGRpZShMKQorICAgICBQcm9wczoJUF9OT19BVFRBQ0ssIFBfRU5BQkxFX0lOX0FUVEFDS19PVVQsIFBfS0lMTEVSCisJCVBfWFAsIFBfQUxJR04KKworMjMuRmViLjIwMDQgR2xvaW5zb24KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9kb2MvbGZ1bi9kb19mcmFnZSBiL2RvYy9sZnVuL2RvX2ZyYWdlCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmRjMDg2MTAKLS0tIC9kZXYvbnVsbAorKysgYi9kb2MvbGZ1bi9kb19mcmFnZQpAQCAtMCwwICsxLDIxIEBACitkb19mcmFnZSgpCitGVU5LVElPTjoKKyAgICAgaW50IGRvX2ZyYWdlKHN0cmluZyB0ZXh0KQorCitERUZJTklFUlQgSU46CisgICAgIC9zdGQvbnBjL2luZm8uYworCitBUkdVTUVOVEU6CisgICAgIHN0cmluZyBzdHIJIC0gU2NobHVlc3NlbHdvcnQgZGVyIEZyYWdlCisKK0JFU0NIUkVJQlVORzoKKyAgICAgQmVhcmJlaXRldCBlaW4gU2NobHVlc3NlbHdvcnQsIGRhcyBtaXQgImZyYWdlIDx3ZW4+IG5hY2ggIiB1ZWJlcmdlYmVuCisgICAgIHd1cmRlLiBHaWJ0IGVudHNwcmVjaGVuZGUgQW50d29ydGVuIGZvcm1hdGllcnQgYXVzLgorCitCRU1FUktVTkdFTjoKKyAgICAgUmVjaHQga29tcGxleCwgYmVzc2VyIG5pY2h0IHVlYmVyc2NocmVpYmVuIHdlbm4gbWFuIGVzIG5pY2h0IHZlcnN0ZWh0LgorCitTSUVIRSBBVUNIOgorICAgICBWZXJ3YW5kdDogIEdldEluZm9BcnIsIEFkZEluZm8KKworMzEuTWFyIDIwMDcgR2xvaW5zb24KZGlmZiAtLWdpdCBhL2RvYy9sZnVuL2RvX3Vud2VhciBiL2RvYy9sZnVuL2RvX3Vud2VhcgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5jZWNmYTM0Ci0tLSAvZGV2L251bGwKKysrIGIvZG9jL2xmdW4vZG9fdW53ZWFyCkBAIC0wLDAgKzEsMzQgQEAKK2RvX3Vud2VhcigpCisKK0ZVTktUSU9OOgorICAgICB2YXJhcmdzIGludCBkb191bndlYXIoc3RyaW5nIHN0ciwgaW50IHNpbGVudCk7CisKK0RFRklOSUVSVCBJTjoKKyAgICAgL3N0ZC9hcm1vdXIvY29tYmF0LmMKKworQVJHVU1FTlRFOgorICAgICBzdHIKKyAgICAgICAgICBTdHJpbmcgZGVyIG5vcm1hbGVyd2Vpc2UgZGVtIFBhcmFtZXRlciBkZXMgInppZWhlIi1Lb21tYW5kb3MKKyAgICAgICAgICBlbnRzcHJpY2h0LgorCisgICAgIHNpbGVudAorICAgICAgICAgIDEsIHdlbm4gZGFzIEF1c3ppZWhlbiBvaG5lIE1lbGR1bmdlbiBkdXJjaGdlZnVlaHJ0IHdlcmRlbiBzb2xsLgorCitCRVNDSFJFSUJVTkc6CisgICAgIERpZXNlIEZ1bmt0aW9uIHN0ZWxsdCBmZXN0LCBvYiBkaWUgUnVlc3R1bmcgc2ljaCBkdXJjaCBzdHIKKyAgICAgaWRlbnRpZml6aWVyZW4gbGFlc3N0IHVuZCBhbmdlem9nZW4gaXN0IHVuZCBydWZ0IGltIEVyZm9sZ3NmYWxsCisgICAgIFVuV2VhcihzaWxlbnQpIGF1Zi4KKworUlVlQ0tHQUJFV0VSVDoKKyAgICAgMSwgd2VubiBhbGxlcyBndXQgZ2luZywgYW5zb25zdGVuIDAuCisKK0JFTUVSS1VOR0VOOgorICAgICBXZW5uIG1hbiBSdWVzdHVuZ2VuICJ2b24gYXVzc2VuIiBhdXN6aWVoZW4gd2lsbCwgc29sbHRlIG1hbiBkaXJla3QKKyAgICAgVW5XZWFyKCkgdmVyd2VuZGVuIQorCitTSUVIRSBBVUNIOgorICAgICBkb193ZWFyKCksIFVuV2VhcigpLCBSZW1vdmVGdW5jKCksIEluZm9ybVVud2VhcigpLAorICAgICAvc3RkL2FybW91ci9jb21iYXQuYworCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCitMYXN0IG1vZGlmaWVkOiBTdW4gSnVuIDI3IDIyOjI5OjAwIDE5OTkgYnkgUGFyYWNlbHN1cwpkaWZmIC0tZ2l0IGEvZG9jL2xmdW4vZG9fd2VhciBiL2RvYy9sZnVuL2RvX3dlYXIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZmUyMjdkNgotLS0gL2Rldi9udWxsCisrKyBiL2RvYy9sZnVuL2RvX3dlYXIKQEAgLTAsMCArMSwyNyBAQAorZG9fd2VhcigpCisKK0ZVTktUSU9OOgorICAgICB2YXJhcmdzIGludCBkb193ZWFyKHN0cmluZyBzdHIsIGludCBzaWxlbnQpOworCitERUZJTklFUlQgSU46CisgICAgIC9zdGQvYXJtb3VyL2NvbWJhdC5jCisKK0FSR1VNRU5URToKKyAgICAgc3RyCisgICAgICAgICAgU3RyaW5nLCBkZXIgbm9ybWFsZXJ3ZWlzZSBkZW0gUGFyYW1ldGVyIGRlcworICAgICAgICAgICJ6aWVoZS90cmFnZSItS29tbWFuZG9zIGVudHNwcmljaHQuCisgICAgIHNpbGVudAorICAgICAgICAgIDEsIHdlbm4gZGFzIEFuemllaGVuIG9obmUgTWVsZHVuZ2VuIGR1cmNoZ2VmdWVocnQgd2VyZGVuIHNvbGwuCisKK0JFU0NIUkVJQlVORzoKKyAgICAgV2VubiBzaWNoIGRpZSBSdWVzdHVuZyBtaXQgInN0ciIgaWRlbnRpZml6aWVyZW4gbGFlc3N0LCB3aXJkIHZlcnN1Y2h0LAorICAgICBzaWUgbWl0dGVscyBEb1dlYXIoKSBhbnp1emllaGVuLgorCitSVWVDS0dBQkVXRVJUOgorICAgICAxLCB3ZW5uIHNpY2ggZGllIFJ1ZXN0dW5nIGFuemllaGVuIGxpZXNzLCBzb25zdCAwLgorCitTSUVIRSBBVUNIOgorICAgICBkb191bndlYXIoKSwgRG9XZWFyKCksIFdlYXJGdW5jKCksIEluZm9ybVdlYXIoKSwgL3N0ZC9hcm1vdXIvY29tYmF0LmMKKworLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorTGFzdCBtb2RpZmllZDogU3VuIEp1biAyNyAyMjozMTowMCAxOTk5IGJ5IFBhcmFjZWxzdXMKZGlmZiAtLWdpdCBhL2RvYy9sZnVuL2RyaW5rX2FsY29ob2wgYi9kb2MvbGZ1bi9kcmlua19hbGNvaG9sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjI4ZWQxZGQKLS0tIC9kZXYvbnVsbAorKysgYi9kb2MvbGZ1bi9kcmlua19hbGNvaG9sCkBAIC0wLDAgKzEsODMgQEAKK0ZVTktUSU9OOgorICAgIHB1YmxpYyB2YXJhcmdzIGludCBkcmlua19hbGNvaG9sKGludCBzdHJlbmd0aCwgaW50IHRlc3Rvbmx5LCBzdHJpbmcgbXl0ZXh0KQorCitERUZJTklFUlQgSU46CisgICAgL3N0ZC9saXZpbmcvbGlmZS5jCisKK0FSR1VNRU5URToKKyAgICBzdHJlbmd0aDogd2lyZCB6dXIgYWt0dWVsbGVuIFNhZXR0aWd1bmcgUF9BTENPSE9MIGRhenUgYWRkaWVydAorICAgIHRlc3Rvbmx5OiBJc3QgZGFzIEZsYWcgZ2VzZXR6dCwgd2lyZCBkZW0gU3BpZWxlciBrZWluIEFMQ09IT0wgenVnZWZ1ZWhydC4KKyAgICAgICAgICAgICAgRGFyZiBudXIgenVtIFRlc3RlbiBkZXIgSGVpbHN0ZWxsZSB2ZXJ3ZW5kZXQgd2VyZGVuIHVuZCBtdXNzCisgICAgICAgICAgICAgIGltIG5vcm1hbGVuIEJldHJpZWIgYXVmICcwJyBzdGVoZW4hCisgICAgbXl0ZXh0OiBXZXIgc2VsYmVyIGVpbmVuIFRleHQgYmVpIE1pc3NlcmZvbGcgYXVzZ2ViZW4gbGFzc2VuIG1vZWNodGUsCisgICAgICAgICAgICBkYXJmIHNpY2ggaGllciB3YXMgbmV0dGVzIGF1c2Rlbmtlbi4KKyAgICAgICAgICAgIEFjaHR1bmc6IERhcyB1bnRlcmRydWVja3QgbmljaHQgZGllICJOdWVjaHRlcm4iLU1lbGR1bmcsIGRpZSBiZWkKKyAgICAgICAgICAgIG5lZ2F0aXZlbSBzdHJlbmd0aCBhdWZ0cmV0ZW4ga2Fubiwgd2VubiBQX0FMQ09IT0wgd2llZGVyIDAgaXN0LgorCitCRVNDSFJFSUJVTkc6CisgICAgRXMgd2lyZCBnZXBydWVmdCwgb2IgZGVtIFNwaWVsZXIgZGVyIGFuZ2VnZWJlbmUgV2VydCBmdWVyICdzdHJlbmd0aCcKKyAgICBhdWYgc2VpbmUgYWt0dWVsbGUgUF9BTENPSE9MIGFkZGllcnQgd2VyZGVuIGthbm4gb2RlciBuaWNodC4gRmFsbHMKKyAgICBkYXMgbW9lZ2xpY2ggaXN0IHVuZCB0ZXN0b25seSA9IDAsIHdpcmQgUF9BTENPSE9MIGVudHNwcmVjaGVuZAorICAgIGFrdHVhbGlzaWVydC4KKworICAgIFNvbGxlbiBuZWJlbiBQX0FMQ09IT0wgbm9jaCB3ZWl0ZXJlIFByb3BzIG1hbmlwdWxpZXJ0IHdlcmRlbiAtIGJzcHcuIHp1cgorICAgIEhlaWx1bmcgZWluZXMgTGViZXdlc2VucyAtIGJpZXRldCBzaWNoIGRpZSBGdW5rdGlvbiBjb25zdW1lKCkgYW4uCisKK1JVRUNLR0FCRVdFUlQ6CisgICAgMCBiZWkgW3BvdGVudGllbGxlbV0gTWlzc2VyZm9sZyAoc3RyZW5ndGggKyBQX0FMQ09IT0wgPiBQX01BWF9BTENPSE9MKQorICAgIDEgYmVpIFtwb3RlbnRpZWxsZW1dIEVyZm9sZworICAgICogcG90ZW50aWVsbCBiZXppZWh0IHNpY2ggaGllciBhdWYgTnV0enVuZyBtaXQgJ3Rlc3Rvbmx5JyAhPSAwCisKK0JFTUVSS1VORzoKKyAgICBkcmlua19hbG9jb2hvbCgpIGJpdHRlIGFuc3RhdHQgZWlnZW5lciBNYW5pcHVsYXRpb25lbiB2b24gUF9BTENPSE9MIHVuZAorICAgIFBfTUFYX0FMQ09IT0wgdmVyd2VuZGVuLgorCisgICAgQWNodHVuZzogSW1tZXIgZXJzdCBWT1IgZWluZXIgSGVpbHVuZyBhdXNmdWVocmVuIHVuZCBiZWkgRXJmb2xnIGhlaWxlbi4KKworICAgIEJlaSBIZWlsc3RlbGxlbiBzb2xsdGUgZWluZSBldnRsLiBIZWlsdW5nIGRlcyBTcGllbGVycyBtaXQgZGVyIGVpZ2VucworICAgIGRhZnVlciBlaW5nZXJpY2h0ZXRlbiBGdW5rdGlvbiBjaGVja19hbmRfdXBkYXRlX3RpbWVkX2tleSByZWFsaXNpZXJ0CisgICAgd2VyZGVuLgorCitCRUlTUElFTDoKKyAgICBpbnQgaGVpbHN0ZWxsZSgpIHsKKyAgICAgIGlmKHRoaXNfcGxheWVyKCktPmRyaW5rX2FsY29ob2woMTAsIDAsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJEdSBwcnVzdGVzdCBpbiBkZW4gU2NobmFwcy4gIgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiRGVyIHBhc3N0IG5pY2h0IG1laHIgcmVpbi5cbiIpKSB7CisgICAgICAgIC8vIFBsYXR6IGZ1ZXIgMTAgIkFsa29ob2wiIHdhciBub2NoLCBkaWVzZSBzaW5kIGpldHp0IGJlcmVpdHMgYWRkaWVydAorICAgICAgICAvLyBOYWNocmljaHQgYW4gZGVuIFNwaWVsZXI6CisgICAgICAgIHRlbGxfb2JqZWN0KHRoaXNfcGxheWVyKCksCisgICAgICAgICAgICAgICAgICAgIGJyZWFrX3N0cmluZygiRHUgdHJpbmtzdCBkZW4gU2NobmFwcyBhdXMuIiwgNzgpKTsKKworICAgICAgICAvLyBOYWNocmljaHQgYW4gYW5kZXJlIExpdmluZ3MgaW0gUmF1bQorICAgICAgICBvYmplY3Qgb2IgPSBmaXJzdF9pbnZlbnRvcnkoZW52aXJvbm1lbnQodGhpc19wbGF5ZXIoKSkpOworICAgICAgICBkbyB7CisgICAgICAgICAgaWYobGl2aW5nKG9iKSAmJiBvYiE9dGhpc19wbGF5ZXIoKSkKKyAgICAgICAgICAgIG9iLT5SZWNlaXZlTXNnKHRoaXNfcGxheWVyKCktPk5hbWUoKSsiIHRyaW5rdCBlaW5lbiBTY2huYXBzIGF1cy4iLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgTVRfTE9PS3xNVF9MSVNURU4sCisgICAgICAgICAgICAgICAgICAgICAgICAgICBNQV9EUklOSyk7CisgICAgICAgICAgb2IgPSBuZXh0X2ludmVudG9yeShvYik7CisgICAgICAgIH0gd2hpbGUob2IpOworCisgICAgICAgIC8vIFJhc3NlbmFiaGFlbmdpZ2UgSGVpbHVuZzogU29mb3J0IG9kZXIgaW4gU2Nocml0dGVuCisgICAgICAgIC8vIFRyYWdiYXJlIEhlaWx1bmdlbiBzb2xsdGVuIGF1Y2ggZWhlciBidWZmZXJfaHAvX3NwIGJlbnV0emVuLgorICAgICAgICBpZih0aGlzX3BsYXllcigpLT5RdWVyeVByb3AoUF9SRUFMX1JBQ0UpPT0iU2NobmFwc2Ryb3NzZWwiKQorICAgICAgICAgIHRoaXNfcGxheWVyKCktPmhlYWxfc2VsZigzMCk7CisgICAgICAgIGVsc2UgeworICAgICAgICAgIHRoaXNfcGxheWVyKCktPmJ1ZmZlcl9ocCgzMCw1KTsKKyAgICAgICAgICB0aGlzX3BsYXllcigpLT5idWZmZXJfc3AoMzAsNSk7CisgICAgICAgIH0KKyAgICAgIH0KKworICAgICAgcmV0dXJuIDE7CisgICAgIH0KK1NJRUhFIEFVQ0g6CisgICAgIEFlaG5saWNoOiAgY29uc3VtZSwgZWF0X2Zvb2QsIGRyaW5rX3NvZnQKKyAgICAgSGVpbHVuZzogICBoZWFsX3NlbGYsIHJlc3RvcmVfc3BlbGxfcG9pbnRzLCByZXN0b3JlX2hpdF9wb2ludHMsIAorICAgICAgICAgICAgICAgIGJ1ZmZlcl9ocCwgYnVmZmVyX3NwCisgICAgIFRpbWluZzogICAgY2hlY2tfYW5kX3VwZGF0ZV90aW1lZF9rZXkKKyAgICAgRW50dGFua2VuOiBkZWZ1ZWxfZHJpbmssIGRlZnVlbF9mb29kCisgICAgIFByb3BzOiAgICAgUF9EUklOSywgUF9GT09ELCBQX0FMQ09IT0wsIFBfU1AsIFBfSFAsCisgICAgICAgICAgICAgICAgUF9ERUZVRUxfVElNRV9EUklOSworICAgICBLb256ZXB0ZTogIGhlaWx1bmcsIGVudHRhbmtlbiwgZm9vZAorCis5LiBBdWd1c3QgMjAxNSBHbG9pbnNvbgpkaWZmIC0tZ2l0IGEvZG9jL2xmdW4vZHJpbmtfc29mdCBiL2RvYy9sZnVuL2RyaW5rX3NvZnQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNGFiNmUwNwotLS0gL2Rldi9udWxsCisrKyBiL2RvYy9sZnVuL2RyaW5rX3NvZnQKQEAgLTAsMCArMSw4MyBAQAorRlVOS1RJT046CisgICAgcHVibGljIHZhcmFyZ3MgaW50IGRyaW5rX3NvZnQoaW50IHN0cmVuZ3RoLCBpbnQgdGVzdG9ubHksIHN0cmluZyBteXRleHQpCisKK0RFRklOSUVSVCBJTjoKKyAgICAvc3RkL2xpdmluZy9saWZlLmMKKworQVJHVU1FTlRFOgorICAgIHN0cmVuZ3RoOiBXaXJkIHp1IGRlbSBhdWdlbmJsaWNrbGljaGVuIFNhZXR0aWd1bmdzZ3JhZCAoUF9EUklOSykgYWRkaWVydC4KKyAgICB0ZXN0b25seTogSXN0IGRhcyBGbGFnIGdlc2V0enQsIHdpcmQgZGVtIFNwaWVsZXIga2VpbiBEUklOSyB6dWdlZnVlaHJ0LgorICAgICAgICAgICAgICBEYXJmIG51ciB6dW0gVGVzdGVuIGRlciBIZWlsc3RlbGxlIHZlcndlbmRldCB3ZXJkZW4gdW5kIG11c3MKKyAgICAgICAgICAgICAgaW0gbm9ybWFsZW4gQmV0cmllYiBhdWYgJzAnIHN0ZWhlbiEKKyAgICBteXRleHQ6IFdlciBzZWxiZXIgZWluZW4gVGV4dCBiZWkgTWlzc2VyZm9sZyBhdXNnZWJlbiBsYXNzZW4gbW9lY2h0ZSwKKyAgICAgICAgICAgIGRhcmYgc2ljaCBoaWVyIHdhcyBuZXR0ZXMgYXVzZGVua2VuLgorICAgICAgICAgICAgQWNodHVuZzogRGFzIHVudGVyZHJ1ZWNrdCBuaWNodCBkaWUgIkR1cnN0Ii1NZWxkdW5nLCBkaWUgYmVpCisgICAgICAgICAgICBuZWdhdGl2ZW0gc3RyZW5ndGggYXVmdHJpdHQsIHdlbm4gUF9EUklOSyB3aWVkZXIgMCBpc3QuCisKK0JFU0NIUkVJQlVORzoKKyAgICBFcyB3aXJkIGdlcHJ1ZWZ0LCBvYiBkZW0gU3BpZWxlciBkZXIgYW5nZWJlbmUgV2VydCAic3RyZW5ndGgiIGF1ZgorICAgIGFrdHVlbGxlIFBfRFJJTksgYWRkaWVydCB3ZXJkZW4ga2FubiBvZGVyIG5pY2h0LiBJc3QgZGllcyBtb2VnbGljaCwKKyAgICB3aXJkIGVzIGdlbWFjaHQsIGVzIHNlaSBkZW5uIGRhcyB0ZXN0b25seSAhPSAwLgorCisgICAgU29sbGVuIG5lYmVuIFBfRFJJTksgbm9jaCB3ZWl0ZXJlIFByb3BzIG1hbmlwdWxpZXJ0IHdlcmRlbiAtIGJzcHcuIHp1cgorICAgIEhlaWx1bmcgZWluZXMgTGViZXdlc2VucyAtIGJpZXRldCBzaWNoIGRpZSBGdW5rdGlvbiBjb25zdW1lKCkgYW4uCisKK1JVRUNLR0FCRVdFUlQ6CisgICAgIDAsIHdlbm4gc3RyZW5ndGggKyBQX0RSSU5LID4gUF9NQVhfRFJJTksKKyAgICA+MCwgd2VubiBFcmZvbGcKKworQkVNRVJLVU5HOgorICAgIGRyaW5rX3NvZnQoKSBiaXR0ZSBhbnN0YXR0IGVpZ2VuZXIgTWFuaXB1bGF0aW9uZW4gdm9uIFBfRFJJTksgdW5kCisgICAgUF9NQVhfRFJJTksgdmVyd2VuZGVuLgorCisgICAgQWNodHVuZzogSW1tZXIgZXJzdCBWT1IgZWluZXIgSGVpbHVuZyBhdXNmdWVocmVuIHVuZCBiZWkgRXJmb2xnIGhlaWxlbi4KKworICAgIEJlaSBIZWlsc3RlbGxlbiBzb2xsdGUgZWluZSBldnRsLiBIZWlsdW5nIGRlcyBTcGllbGVycyBtaXQgZGVyIGVpZ2VucworICAgIGRhZnVlciBlaW5nZXJpY2h0ZXRlbiBGdW5rdGlvbiBjaGVja19hbmRfdXBkYXRlX3RpbWVkX2tleSByZWFsaXNpZXJ0CisgICAgd2VyZGVuLgorCitCRUlTUElFTDoKKyAgICBpbnQgaGVpbHN0ZWxsZSgpIHsKKyAgICAgIGlmKHRoaXNfcGxheWVyKCktPmRyaW5rX3NvZnQoMTAsIDAsICJEdSBibHViYmVyc3QgbmljaHQgdWViZXJ6ZXVndCAiCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJpbiBkZXIgTGltb25hZGUuIERhcyBpc3QgenUgdmllbC5cbiIpKSB7CisgICAgICAgIC8vIFBsYXR6IGZ1ZXIgMTAgIlRyaW5rZW4iIHdhciBub2NoLCBkaWVzZSBzaW5kIGpldHp0IGJlcmVpdHMgYWRkaWVydAorICAgICAgICAvLyBOYWNocmljaHQgYW4gZGVuIFNwaWVsZXI6CisgICAgICAgIHRlbGxfb2JqZWN0KHRoaXNfcGxheWVyKCksIGJyZWFrX3N0cmluZygiRHUgbmltbXN0IGVpbmVuIGdyb3NzZW4gIgorICAgICAgICAgICAgICAgICAgICAiU2NobHVjayB6dWNrZXJzdWVzc2UgTGltb25hZGUuIiwgNzgpKTsKKworICAgICAgICAvLyBhbGxlIGFuZGVyZW4gaW0gUmF1bSBiZWtvbW1lbiBlcyBnZ2YgYXVjaCBtaXQ6CisgICAgICAgIC8vIDEpIGZpbHRlciguLi4sICMnbGl2aW5nKSBlcmdpYnQgZGllIExlYmV3ZXNlbiBpbSBSYXVtCisgICAgICAgIC8vIDIpIGZpbHRlcl9vYmplY3RzKC4uLiwgIlJlY2VpdmVNc2ciKSBydWZ0IFJlY2VpdmVNc2cgYW4gamVkZW0KKyAgICAgICAgLy8gMykgUmVjZWl2ZU1zZyguLi4pIGJla29tbXQgZGllIEZvbGdlcGFyYW1ldGVyCisgICAgICAgIGZpbHRlcl9vYmplY3RzKGZpbHRlcihhbGxfaW52ZW50b3J5KGVudmlyb25tZW50KHRoaXNfcGxheWVyKCkpKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMnbGl2aW5nKSAtICh7dGhpc19wbGF5ZXIoKX0pLAorICAgICAgICAgICAgICAgICAgICAgICAiUmVjZWl2ZU1zZyIsCisgICAgICAgICAgICAgICAgICAgICAgIHRoaXNfcGxheWVyKCktPk5hbWUoKSsKKyAgICAgICAgICAgICAgICAgICAgICAgICAiIHRyaW5rdCBlaW5lbiBTY2hsdWNrIExpbW9uYWRlLiIsCisgICAgICAgICAgICAgICAgICAgICAgIE1UX0xPT0t8TVRfTElTVEVOLAorICAgICAgICAgICAgICAgICAgICAgICBNQV9EUklOSyk7CisKKyAgICAgICAgLy8gUmFzc2VuYWJoYWVuZ2lnZSBIZWlsdW5nOiBTb2ZvcnQgb2RlciBpbiBTY2hyaXR0ZW4KKyAgICAgICAgLy8gVHJhZ2JhcmUgSGVpbHVuZ2VuIHNvbGx0ZW4gYXVjaCBlaGVyIGJ1ZmZlcl9ocC9fc3AgYmVudXR6ZW4uCisgICAgICAgIGlmKHRoaXNfcGxheWVyKCktPlF1ZXJ5UHJvcChQX1JFQUxfUkFDRSk9PSJTYXVmemllZ2UiKQorICAgICAgICAgIHRoaXNfcGxheWVyKCktPmhlYWxfc2VsZigzMCk7CisgICAgICAgIGVsc2UgeworICAgICAgICAgIHRoaXNfcGxheWVyKCktPmJ1ZmZlcl9ocCgzMCw1KTsKKyAgICAgICAgICB0aGlzX3BsYXllcigpLT5idWZmZXJfc3AoMzAsNSk7CisgICAgICAgIH0KKyAgICAgIH0KKworICAgICAgcmV0dXJuIDE7CisgICAgIH0KKworU0lFSEUgQVVDSDoKKyAgICAgQWVobmxpY2g6ICBjb25zdW1lLCBkcmlua19hbGNvaG9sLCBlYXRfZm9vZAorICAgICBIZWlsdW5nOiAgIGhlYWxfc2VsZiwgcmVzdG9yZV9zcGVsbF9wb2ludHMsIHJlc3RvcmVfaGl0X3BvaW50cywgCisgICAgICAgICAgICAgICAgYnVmZmVyX2hwLCBidWZmZXJfc3AKKyAgICAgVGltaW5nOiAgICBjaGVja19hbmRfdXBkYXRlX3RpbWVkX2tleQorICAgICBFbnR0YW5rZW46IGRlZnVlbF9kcmluaywgZGVmdWVsX2Zvb2QKKyAgICAgUHJvcHM6ICAgICBQX0RSSU5LLCBQX0ZPT0QsIFBfQUxDT0hPTCwgUF9TUCwgUF9IUCwKKyAgICAgICAgICAgICAgICBQX0RFRlVFTF9USU1FX0RSSU5LCisgICAgIEtvbnplcHRlOiAgaGVpbHVuZywgZW50dGFua2VuLCBmb29kCisKKzkuIEF1Z3VzdCAyMDE1IEdsb2luc29uCmRpZmYgLS1naXQgYS9kb2MvbGZ1bi9kcm9wIGIvZG9jL2xmdW4vZHJvcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5hYjhkZDE5Ci0tLSAvZGV2L251bGwKKysrIGIvZG9jL2xmdW4vZHJvcApAQCAtMCwwICsxLDQ1IEBACitkcm9wKCkKKworRlVOS1RJT046CisgICAgcHVibGljIHZhcmFyZ3MgaW50IGRyb3Aob2JqZWN0IG8sIG1peGVkIG1zZyk7CisKK0RFRklOSUVSVCBJTjoKKyAgICAvc3RkL2xpdmluZy9wdXRfYW5kX2dldC5jCisKK0FSR1VNRU5URToKKyAgICBvYmplY3QgbworICAgICAgICBEYXMgT2JqZWt0LCBkYXMgZmFsbGVuZ2VsYXNzZW4gd2VyZGVuIHNvbGwuCisgICAgbWl4ZWQgbXNnCisgICAgICAgIEVpbmUgb3B0aW9uYWxlIE1lbGR1bmcsIGRpZSBhbnN0ZWxsZSB2b24gUF9EUk9QX01TRyBvZGVyIGRlcgorICAgICAgICBTdGFuZGFyZG1lbGR1bmcgdmVyd2VuZGV0IHdpcmQsIG9kZXIgLTEsIHVtIGRpZSBNZWxkdW5nIHp1CisgICAgICAgIHVudGVyZHJ1ZWNrZW4uCisKK0JFU0NIUkVJQlVORzoKKyAgICBEZXIgU3BpZWxlciBvZGVyIE5QQyBsYWVzc3QgZGFzIE9iamVrdCBmYWxsZW4uIEdpYnQgby0+bW92ZSgpIGtlaW5lbgorICAgIHBvc2l0aXZlbiBXZXJ0IHp1cnVlY2ssIGJlaXNwaWVsc3dlaXNlIHdlaWwgZGFzIE9iamVrdCB2ZXJmbHVjaHQgaXN0LAorICAgIGJla29tbXQgZXIgZWluZSBlbnRzcHJlY2hlbmRlIEZlaGxlcm1lbGR1bmcuCisKK1JVRUNLR0FCRVdFUlQ6CisgICAgV2VubiBkYXMgRmFsbGVubGFzc2VuIGdla2xhcHB0IGhhdCwgMSwgYW5zb25zdGVuIDAuCisKK0JFTUVSS1VORzoKKyAgICBEaWVzZSBGdW5rdGlvbiBpc3QgZGFubiBzaW5udm9sbCwgd2VubiBtYW4gZGVuIFNwaWVsZXIgZWluIE9iamVrdAorICAgIGZhbGxlbmxhc3NlbiBsYXNzZW4gdW5kIHNpY2ggbmljaHQgc2VsYnN0IHVtIGRpZSBGZWhsZXJiZWhhbmRsdW5nIGt1ZW1tZXJuCisgICAgbW9lY2h0ZSAtIHVuZCBkYSB1bnphZWhsaWdlIHZlcnNjaGllZGVuZSBEaW5nZSBzY2hpZWZnZWhlbiBrb2VubmVuIHVuZAorICAgIG1hbmNoZSBPYmpla3RlIGVpZ2VuZSBGZWhsZXJtZWxkdW5nZW4gZGVmaW5pZXJlbiwgZWlnZW50bGljaCBpbW1lci4KKworICAgIERpZSBGdW5rdGlvbiBwcnVlZnQgbmljaHQsIG9iIGRlciBTcGllbGVyL05QQyBkYXMgT2JqZWt0IHVlYmVyaGF1cHQgaGF0LAorICAgIGRhcyBtdXNzIG1hbiBnZ2YuIHNlbGJzdCBlcm1pdHRlbG4uCisKK0JFSVNQSUVMOgorICAgIGlmICh0aGlzX3BsYXllcigpLT5kcm9wKG9iaiwgKHsKKyAgICAgICAgICAgICJEdSB3aXJmc3QgQFdFTjIgaW4gZGVuIFNhZXVyZXRlaWNoLlxuIiwKKyAgICAgICAgICAgICJAV0VSMSB3aXJmdCBAV0VOVTIgaW4gZGVuIFNhZXVyZXRlaWNoLlxuIiB9KSkpCisgICAgICAgIG9iai0+cmVtb3ZlKCk7CisKK1NJRUhFIEFVQ0g6CisgICAgbW92ZShMKSwgUF9EUk9QX01TRywgZHJvcF9vYmplY3RzKEwpLCBQX05PSU5TRVJUX01TRywgUF9OT0xFQVZFX01TRywKKyAgICBQX1RPT19NQU5ZX01TRywgUF9UT09fSEVBVllfTVNHLCBQX0VOVl9UT09fSEVBVllfTVNHLCBQX05PRFJPUAorCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCitMYXN0IG1vZGlmaWVkOiBUaHUgQXVnIDI4IDIyOjIwOjM3IDIwMDggYnkgQW15bnRob3IKZGlmZiAtLWdpdCBhL2RvYy9sZnVuL2Ryb3Bfb2JqIGIvZG9jL2xmdW4vZHJvcF9vYmoKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMmYyNWUwZgotLS0gL2Rldi9udWxsCisrKyBiL2RvYy9sZnVuL2Ryb3Bfb2JqCkBAIC0wLDAgKzEsMjggQEAKK2Ryb3Bfb2JqKCkKKworRlVOS1RJT04KKyAgICBpbnQgZHJvcF9vYmoob2JqZWN0IG9iKTsKKworREVGSU5JRVJUIElOOgorCisgICAgL3N0ZC9saXZpbmcvcHV0X2FuZF9nZXQuYworCitBUkdVTUVOVEU6CisKKyAgICBvYiAgRGFzIE9iamVrdCwgZGFzIHZvbiBkZW0gTGViZXdlc2VuLCBpbiBkZW0gZGllc2UgRnVua3Rpb24gYXVmZ2VydWZlbgorICAgICAgICB3aXJkLCBmYWxsZW5nZWxhc3NlbiB3ZXJkZW4gc29sbC4KKworQkVTQ0hSRUlCVU5HOgorCisgICAgRGFzIExlYmV3ZXNlbiwgaW4gZGVtIGRpZXNlIEZ1bmt0aW9uIGF1ZmdlcnVmZW4gd2VyZGVuIHNvbGwsIGxhZXNzdAorICAgIGRlbiBhbmdlZ2ViZW5lbiBHZWdlbnN0YW5kIGZhbGxlbiwgd2VubiBkaWVzIG1vZWdsaWNoIGlzdC4KKworUlVlQ0tHQUJFV0VSVDoKKyAgICAxLCB3ZW5uIGRhcyBPYmpla3QgZmFsbGVuIGdlbGFzc2VuIHd1cmRlIG9kZXIgZGllcyBuaWNodCBtb2VnbGljaCB3YXIuCisgICAgKGluIGRpZXNlbSBGYWxsIHdpcmQgYXVjaCBkaXJla3QgZWluZSBUZXh0YXVzZ2FiZSBhdXNnZWdlYmVuKQorICAgIDAgc29uc3QsIGluIGRpZXNlbSBGYWxsIHdpcmQgaW4gbm90aWZ5X2ZhaWwgZWluZSBwYXNzZW5kZSBBdXNnYWJlCisgICAgcGxhemllcnQuCisKK1NJRUhFIEFVQ0g6CisKKyAgICBmaW5kX29icygpLCBnaXZlX29iaigpLCBwaWNrX29iaigpLCBwdXRfb2JqKCksIC9zdGQvbGl2aW5nL3B1dF9hbmRfZ2V0LmMKZGlmZiAtLWdpdCBhL2RvYy9sZnVuL2Ryb3Bfb2JqZWN0cyBiL2RvYy9sZnVuL2Ryb3Bfb2JqZWN0cwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5jMTA0NWY0Ci0tLSAvZGV2L251bGwKKysrIGIvZG9jL2xmdW4vZHJvcF9vYmplY3RzCkBAIC0wLDAgKzEsNDggQEAKK2Ryb3Bfb2JqZWN0cygpCisKK0ZVTktUSU9OOgorICAgIHB1YmxpYyB2YXJhcmdzIGludCBkcm9wX29iamVjdHMoc3RyaW5nIHN0ciwgbWl4ZWQgbXNnKTsKKworREVGSU5JRVJUIElOOgorICAgIC9zdGQvbGl2aW5nL3B1dF9hbmRfZ2V0LmMKKworQVJHVU1FTlRFOgorICAgIHN0cmluZyBzdHIKKyAgICAgICAgV2FzIGZhbGxlbmdlbGFzc2VuIHdlcmRlbiBzb2xsLgorICAgIG1peGVkIG1zZworICAgICAgICBFaW5lIG9wdGlvbmFsZSBNZWxkdW5nLCBkaWUgYW5zdGVsbGUgdm9uIFBfRFJPUF9NU0cgb2RlciBkZXIKKyAgICAgICAgU3RhbmRhcmRtZWxkdW5nIHZlcndlbmRldCB3aXJkLCBvZGVyIC0xLCB1bSBkaWUgTWVsZHVuZyB6dQorICAgICAgICB1bnRlcmRydWVja2VuLgorCitCRVNDSFJFSUJVTkc6CisgICAgRGVyIFNwaWVsZXIgb2RlciBOUEMgbGFlc3N0IGRpZSBpbiA8c3RyPiBiZW5hbm50ZW4gU2FjaGVuIGZhbGxlbi4KKyAgICBLYW5uIGVyIGVpbiBPYmpla3QgbmljaHQgZmFsbGVubGFzc2VuLCBiZWtvbW10IGVyIGVpbmUgZW50c3ByZWNoZW5kZQorICAgIEZlaGxlcm1lbGR1bmcuIFdlbm4ga2VpbmUgT2JqZWt0ZSBhdWYgPHN0cj4gcGFzc2VuLCB3aXJkIHBlcgorICAgIF9ub3RpZnlfZmFpbCgpIGVpbmUgTWVsZHVuZyBnZXNldHp0LCBhYmVyIG5vY2ggbmljaHQgYXVzZ2VnZWJlbi4KKworUlVFQ0tHQUJFV0VSVDoKKyAgICBXZW5uIDxzdHI+IGlyZ2VuZHdlbGNoZSB2b3JoYW5kZW5lbiBTYWNoZW4gc2luZCwgMSwgc29uc3QgMC4KKworQkVNRVJLVU5HOgorICAgIFdlbm4gZGllIEZ1bmt0aW9uIDEgenVydWVja2dpYnQsIGhlaXNzdCBkYXMgbm9jaCBuaWNodCwgZGFzcyBkZXIgU3BpZWxlcgorICAgIGV0d2FzIGZhbGxlbmdlbGFzc2VuIGhhdCEgRXIgaGF0IGVzIG51ciB2ZXJzdWNodCwgZC5oLiBhdWYgamVkZW4gRmFsbCBlaW5lCisgICAgTWVsZHVuZyBiZWtvbW1lbi4gR2lidCBkaWUgRnVua3Rpb24gMCB6dXJ1ZWNrLCBoYXQgZXIgbm9jaCBrZWluZSBiZWtvbW1lbi4KKworQkVJU1BJRUw6CisgICAgcHJpdmF0ZSBpbnQgY21kX29wZmVybihzdHJpbmcgc3RyKQorICAgIHsKKyAgICAgICAgbm90aWZ5X2ZhaWwoIldBUyBtb2VjaHRlc3QgRHUgb3BmZXJuP1xuIik7CisKKyAgICAgICAgaWYgKCF0aGlzX3BsYXllcigpLT5kcm9wX29iamVjdHMoc3RyLCAoeyAiRHUgb3BmZXJzdCBAV0VOMi4iLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJAV0VSMSBvcGZlcnQgQFdFTlUyLlxuIiB9KSkpCisgICAgICAgICAgICByZXR1cm4gMDsKKworICAgICAgICBmaWx0ZXJfb2JqZWN0cyh0aGlzX3BsYXllcigpLT5tb3ZlZF9vYmplY3RzKCksICJyZW1vdmUiKTsKKyAgICAgICAgcmV0dXJuIDE7CisgICAgfQorCitTSUVIRSBBVUNIOgorICAgIG1vdmUoTCksIGRyb3AoTCksIFBfRFJPUF9NU0csIGZpbmRfb2JqZWN0cyhMKSwgbW92ZWRfb2JqZWN0cyhMKQorCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCitMYXN0IG1vZGlmaWVkOiBGcmkgSnVsIDI1IDEwOjU5OjM3IDIwMDggYnkgQW15bnRob3IKZGlmZiAtLWdpdCBhL2RvYy9sZnVuL2VhdF9mb29kIGIvZG9jL2xmdW4vZWF0X2Zvb2QKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZWMwMTAyZAotLS0gL2Rldi9udWxsCisrKyBiL2RvYy9sZnVuL2VhdF9mb29kCkBAIC0wLDAgKzEsODYgQEAKK0ZVTktUSU9OOgorICAgIHB1YmxpYyB2YXJhcmdzIGludCBlYXRfZm9vZChpbnQgZm9vZCwgaW50IHRlc3Rvbmx5LCBzdHJpbmcgbXl0ZXh0KQorCitERUZJTklFUlQgSU46CisgICAgL3N0ZC9saXZpbmcvbGlmZS5jCisKK0FSR1VNRU5URToKKyAgICBmb29kOiBXaXJkIHp1IGRlbSBhdWdlbmJsaWNrbGljaGVuIFNhZXR0aWd1bmdzZ3JhZCAoUF9GT09EKSBhZGRpZXJ0LgorICAgIHRlc3Rvbmx5OiBJc3QgZGFzIEZsYWcgZ2VzZXR6dCwgd2lyZCBkZW0gU3BpZWxlciBrZWluIEZPT0QgenVnZWZ1ZWhydC4KKyAgICAgICAgICAgICAgRGFyZiBudXIgenVtIFRlc3RlbiBkZXIgSGVpbHN0ZWxsZSB2ZXJ3ZW5kZXQgd2VyZGVuIHVuZCBtdXNzCisgICAgICAgICAgICAgIGltIG5vcm1hbGVuIEJldHJpZWIgYXVmICcwJyBzdGVoZW4hCisgICAgbXl0ZXh0OiBXZXIgc2VsYmVyIGVpbmVuIFRleHQgYmVpIE1pc3NlcmZvbGcgYXVzZ2ViZW4gbGFzc2VuIG1vZWNodGUsCisgICAgICAgICAgICBkYXJmIHNpY2ggaGllciB3YXMgbmV0dGVzIGF1c2Rlbmtlbi4KKyAgICAgICAgICAgIEFjaHR1bmc6IERhcyB1bnRlcmRydWVja3QgbmljaHQgZGllICJIdW5nZXIiLU1lbGR1bmcsIGRpZSBiZWkKKyAgICAgICAgICAgIG5lZ2F0aXZlbSBmb29kIGF1ZnRyZXRlbiBrYW5uLCB3ZW5uIFBfRk9PRCB3aWVkZXIgMCBpc3QuCisKK0JFU0NIUkVJQlVORzoKKyAgICBFcyB3aXJkIGdlcHJ1ZWZ0LCBvYiBkZW0gU3BpZWxlciBkZXIgYW5nZWJlbmUgV2VydCAic3RyZW5ndGgiIGF1ZiBzZWluZQorICAgIGFrdHVlbGxlIFBfRk9PRCBhZGRpZXJ0IHdlcmRlbiBrYW5uIG9kZXIgbmljaHQuIElzdCBkaWVzIG1vZWdsaWNoLCB3aXJkCisgICAgd2lyZCBlcyBnZW1hY2h0LCBlcyBzZWkgZGVubiBkYXMgdGVzdG9ubHkgIT0gMC4KKworICAgIFNvbGxlbiBuZWJlbiBQX0ZPT0Qgbm9jaCB3ZWl0ZXJlIFByb3BzIG1hbmlwdWxpZXJ0IHdlcmRlbiAtIGJzcHcuIHp1cgorICAgIEhlaWx1bmcgZWluZXMgTGViZXdlc2VucyAtIGJpZXRldCBzaWNoIGRpZSBGdW5rdGlvbiBjb25zdW1lKCkgYW4uCisKK1JVRUNLR0FCRVdFUlQ6CisgICAgIDAsIHdlbm4gc3RyZW5ndGggKyBQX0ZPT0QgPiBQX01BWF9GT09ELgorICAgID4wLCB3ZW5uIEVyZm9sZy4KKworQkVNRVJLVU5HOgorICAgIGVhdF9mb29kKCkgYml0dGUgYW5zdGF0dCBlaWdlbmVyIE1hbmlwdWxhdGlvbmVuIHZvbiBQX0ZPT0QgdW5kCisgICAgUF9NQVhfRk9PRCB2ZXJ3ZW5kZW4uCisKKyAgICBBY2h0dW5nOiBJbW1lciBlcnN0IFZPUiBlaW5lciBIZWlsdW5nIGF1c2Z1ZWhyZW4gdW5kIGJlaSBFcmZvbGcgaGVpbGVuLgorCisgICAgQmVpIEhlaWxzdGVsbGVuIHNvbGx0ZSBlaW5lIGV2dGwuIEhlaWx1bmcgZGVzIFNwaWVsZXJzIG1pdCBkZXIgZWlnZW5zCisgICAgZGFmdWVyIGVpbmdlcmljaHRldGVuIEZ1bmt0aW9uIGNoZWNrX2FuZF91cGRhdGVfdGltZWRfa2V5IHJlYWxpc2llcnQKKyAgICB3ZXJkZW4uCisKK0JFSVNQSUVMOgorICAgIGludCBoZWlsc3RlbGxlKCkgeworICAgICAgLy8gV2VubiBhdWYgZGFzIFBfRk9PRCBkZXMgU3BpZWxlcnMgZGllIGFuZ2VnZWJlbmVuIDEwIG5pY2h0IG1laHIgYWRkaWVydAorICAgICAgLy8gYWRkaWVydCB3ZXJkZW4ga29lbm5lbiAod2VpbCBzb25zdCBQX01BWF9GT09EIHVlYmVyc2Nocml0dGVuIHdpcmQpLAorICAgICAgLy8gd2lyZCBkaWUgRmVobGVybWVsZHVuZyBhdXNnZWdlYmVuLCBkYXNzIGRlciBTcGllbGVyIG5pY2h0cyBtZWhyCisgICAgICAvLyBlc3Nlbi90cmlua2VuIGthbm4uCisgICAgICAvLyBCZWkgZ2VzZXR6dGVtICdteXRleHQnIHdpcmQgJ215dGV4dCcgYW4gZGVuIFNwaWVsZXIgYXVzZ2VnZWJlbi4KKyAgICAgIC8vIEFuc29uc3RlbiB3aXJkIGRpZSBTdGFuZGFyZG1lbGR1bmcgYXVzZ2VnZWJlbi4KKyAgICAgIGlmICghdGhpc19wbGF5ZXIoKS0+ZWF0X2Zvb2QoMTAsIDAsICJEZXIgS2VrcyBpc3QgZWluZmFjaCAiCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAienV2aWVsIGZ1ZXIgRGljaC5cbiIpICkKKyAgICAgICAgcmV0dXJuIDE7CisKKyAgICAgIC8vIFNwaWVsZXIgaGF0dGUgbm9jaCBhdXNyZWljaGVuZCBTcGllbHJhdW0gYmVpIFBfRk9PRC4gRGllIDEwIHNpbmQgCisgICAgICAvLyBzY2hvbiBhZGRpZXJ0IHdvcmRlbi4gSmV0enQgTmFjaHJpY2h0IGF1c2dlYmVuOgorICAgICAgdGVsbF9vYmplY3QodGhpc19wbGF5ZXIoKSwgYnJlYWtfc3RyaW5nKCJEdSBrbmFiYmVyc3QgZWluIGJpc3NjaGVuIGFuICIKKyAgICAgICAgICAgICAgICAgICJkZW0gS2VrcyBoZXJ1bSB1bmQgZnVlaGxzdCBEaWNoIGdsZWljaCB2aWVsIGJlc3Nlci4iLCA3OCkpOworCisgICAgICAvLyBhbGxlIExlYmV3ZXNlbiBpbSBSYXVtIGJla29tbWVuIGRhcyBhdWNoIG1pdAorICAgICAgZm9yZWFjaChvYmplY3Qgb2I6CisgICAgICAgICAgICAgIChmaWx0ZXIoYWxsX2ludmVudG9yeShlbnZpcm9ubWVudCh0aGlzX3BsYXllcigpKSksICMnbGl2aW5nKSAtCisgICAgICAgICAgICAgICAoe3RoaXNfcGxheWVyKCl9KSkpCisgICAgICAgIG9iLT5SZWNlaXZlTXNnKHRoaXNfcGxheWVyKCktPk5hbWUoKSsiIGtudXNwZXJ0IGVpbmVuIEtla3Mgd2VnLiIsCisgICAgICAgICAgICAgICAgICAgICAgIE1UX0xPT0t8TVRfTElTVEVOLAorICAgICAgICAgICAgICAgICAgICAgICBNQV9FQVQpOworCisgICAgICAvLyBSYXNzZW5hYmhhZW5naWdlIEhlaWx1bmc6IFNvZm9ydCBvZGVyIGluIFNjaHJpdHRlbgorICAgICAgLy8gVHJhZ2JhcmUgSGVpbHVuZ2VuIHNvbGx0ZW4gYXVjaCBlaGVyIGJ1ZmZlcl9ocC9fc3AgYmVudXR6ZW4uCisgICAgICBpZih0aGlzX3BsYXllcigpLT5RdWVyeVByb3AoUF9SRUFMX1JBQ0UpPT0iS3J1ZW1lbG1vbnN0ZXIiKQorICAgICAgICB0aGlzX3BsYXllcigpLT5oZWFsX3NlbGYoMzApOworICAgICAgZWxzZSB7CisgICAgICAgIHRoaXNfcGxheWVyKCktPmJ1ZmZlcl9ocCgzMCw1KTsKKyAgICAgICAgdGhpc19wbGF5ZXIoKS0+YnVmZmVyX3NwKDMwLDUpOworICAgICAgfQorCisgICAgICByZXR1cm4gMTsKKyAgICB9CisKK1NJRUhFIEFVQ0g6CisgICAgIEFlaG5saWNoOiAgY29uc3VtZSwgZHJpbmtfYWxjb2hvbCwgZHJpbmtfc29mdAorICAgICBIZWlsdW5nOiAgIGhlYWxfc2VsZiwgcmVzdG9yZV9zcGVsbF9wb2ludHMsIHJlc3RvcmVfaGl0X3BvaW50cywgCisgICAgICAgICAgICAgICAgYnVmZmVyX2hwLCBidWZmZXJfc3AKKyAgICAgVGltaW5nOiAgICBjaGVja19hbmRfdXBkYXRlX3RpbWVkX2tleQorICAgICBFbnR0YW5rZW46IGRlZnVlbF9kcmluaywgZGVmdWVsX2Zvb2QKKyAgICAgUHJvcHM6ICAgICBQX0RSSU5LLCBQX0ZPT0QsIFBfQUxDT0hPTCwgUF9TUCwgUF9IUCwKKyAgICAgICAgICAgICAgICBQX0RFRlVFTF9USU1FX0RSSU5LCisgICAgIEtvbnplcHRlOiAgaGVpbHVuZywgZW50dGFua2VuLCBmb29kCisKKzkuIEF1Z3VzdCAyMDE1IEdsb2luc29uCmRpZmYgLS1naXQgYS9kb2MvbGZ1bi9leGVjdXRlX2FueXRoaW5nIGIvZG9jL2xmdW4vZXhlY3V0ZV9hbnl0aGluZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi45Yzg4OWYwCi0tLSAvZGV2L251bGwKKysrIGIvZG9jL2xmdW4vZXhlY3V0ZV9hbnl0aGluZwpAQCAtMCwwICsxLDQyIEBACitleGVjdXRlX2FueXRoaW5nKCkKK0ZVTktUSU9OOgorICAgIHByb3RlY3RlZCBtaXhlZCBleGVjdXRlX2FueXRoaW5nKG1peGVkIGZ1biwgbWl4ZWQgYXJncywgLi4uKQorCitERUZJTklFUlQgSU46CisgICAgL3N0ZC91dGlsL2V4ZWN1dGVyLmMKKworQVJHVU1FTlRFOgorICAgIG1peGVkIGZ1biAgICAgICAgYXVzenVmdWVocmVuZGUgRnVua3Rpb24vQXJyYXkvQ2xvc3VyZSAuLi4gYW55dGhpbmcKKyAgICBtaXhlZCBhcmdzICAgICAgIHdlaXRlcmUgQXJndW1lbnRlLCB3ZXJkZW4gd2VpdGVyIHVlYmVyZ2ViZW4KKworQkVTQ0hSRUlCVU5HOgorICAgIEZ1ZWhydCAiYWxsZXMiIGF1czoKKyAgICAKKyAgICAnZnVuJyBrYW5uIHNlaW46CisgICAgLSBlaW5lIENsb3N1cmUKKyAgICAgIFtmdW5jYWxsKGZ1biwgYXJncywgLi4uKV0KKyAgICAtIGVpbmVuIFN0cmluZyBhbHMgRnVua3Rpb24gaW0gT2JqZWt0CisgICAgICBbY2FsbF9vdGhlcih0aGlzX29iamVjdCgpLCBmdW4sIGFyZ3MsIC4uLildCisgICAgLSBlaW4gQXJyYXkgbWl0IE9iamVrdC9PYmpla3RuYW1lbiArIEZ1bmt0aW9uIGFscyBBdWZydWYgZGVyIEZ1bmt0aW9uIGFtCisgICAgICBPYmpla3QvT2JqZWt0bmFtZW46CisgICAgICBbY2FsbF9vdGhlcihhcnJheVswXSwgYXJyYXlbMV0sIGFyZ3MuLi4pXQorCisgICAgV2lyZCBleGVjdXRlX2FueXRoaW5nKCkgYXVzIGRlbSByZXN0cmljdGlvbl9jaGVja2VyIGdlcnVmZW4sIHdpcmQgYWxzCisgICAgZXJzdGVyIFBhcmFtZXRlciBpbW1lciBkYXMgZ2VwcnVlZnRlIExpdmluZyB1ZWJlcmdlYmVuLgorCitCRU1FUktVTkdFTjoKKyAgICBFcyBrYW5uIHNpY2ggYW5iaWV0ZW4sIGRpZSBnZXJ1ZmVuZSBGdW5rdGlvbiBtaXQgdmFyYXJncy1Bcmd1bWVudGVuIHp1CisgICAgZ2VzdGFsdGVuLCBkYW1pdCBpaHIgbWVociBBcmd1bWVudGUgdWViZXJnZWJlbiB3ZXJkZW4ga29lbm5lbiBhbHMgaW4gZGVyCisgICAgRnVua3Rpb25zZGVmaW5pdGlvbiBhbmdlZ2ViZW4gc2luZC4gCisKKyAgICBEZXIgUmVzdHJpa3Rpb25zcHJ1ZWZlciAoL3N0ZC9yZXN0cmljdGlvbl9jaGVja2VyKSB2ZXJzdGVodCBpbSBGYWxsZSBlaW5lcworICAgIEFycmF5cyBtaXQgT2JqZWt0L09iamVrdG5hbWVuICsgRnVua3Rpb24gYXVjaCBlaW4gQXJyYXkgbWl0IG1laHIgYWxzIDIKKyAgICBFbGVtZW50ZW4uIERpZSB3ZWl0ZXJlbiBFbGVtZW50ZSB3ZXJkZW4gZGFubiB6dSB3ZWl0ZXJlbiBBcmd1bWVudGVuIGRlcgorICAgIGdlcnVmZW5lbiBGdW5rdGlvbi4gSGllcmJlaSB3aXJkIDxwbD4gZ2dmLiBhYmVyIGFscyBlcnN0ZXMgQXJndW1lbnQgdm9yCisgICAgYWxsZSBhbmRlcmVuIGVpbmdlZnVlZ3QuCisKK1NJRUhFIEFVQ0g6CisgICAgY2hlY2tfcmVzdHJpY3Rpb25zLCB2YXJhcmdzCisKKzMxLjEyLjIwMTMsIFplc3N0cmEKKwpkaWZmIC0tZ2l0IGEvZG9jL2xmdW4vZXhpdCBiL2RvYy9sZnVuL2V4aXQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMTkwZGI5MQotLS0gL2Rldi9udWxsCisrKyBiL2RvYy9sZnVuL2V4aXQKQEAgLTAsMCArMSwzMyBAQAorZXhpdCgpCisKK0ZVTktUSU9OOgorICB2YXJhcmdzIHZvaWQgZXhpdChvYmplY3QgbGl2LCBvYmplY3QgZGVzdCk7CisKK0RFRklOSUVSVCBJTjoKKyAgL3N0ZC9yb29tL2Rlc2NyaXB0aW9uLmMKKworQVJHVU1FTlRFOgorICBsaXYgLSAob2JqZWN0KSBEYXMgYmV3ZWd0ZSBMZWJld2VzZW4uCisgIGRlc3QgLSAob2JqZWN0KSBEYXMgRW52aXJvbm1lbnQsIGluIHdlbGNoZXMgYmV3ZWd0IHdpcmQuCisKK0JFU0NIUkVJQlVORzoKKyAgRGllc2UgRnVua3Rpb24gd2lyZCBpbW1lciBkYW5uIGF1ZmdlcnVmZW4sIHdlbm4gZWluIExlYmV3ZXNlbiBkZW4KKyAgUmF1bSB2ZXJsYWVzc3QuIFN0YW5kYXJkbWFlc3NpZyB3ZXJkZW4gaGllciBnZ2YuIGRpZSBSYXVtbWVsZHVuZ2VuCisgIGFiZ2VzdGVsbHQsIG1hbiBrYW5uIGFiZXIgYXVjaCBlaWdlbmUgQ2hlY2tzIGVpbmhhZW5nZW4uIEluIGRlbSBGYWxsIE1VU1MKKyAgbWFuIGFiZXIgZGFzIGdlZXJidGUgZXhpdCgpIGF1ZiBqZWRlbiBGYWxsIGF1ZnJ1ZmVuLgorCitSVWVDS0dBQkVXRVJUOgorICBrZWluZXIKKworQkVNRVJLVU5HOgorICBNYW4gYmVhY2h0ZSwgZGFzcyB0aGlzX3BsYXllcigpIDAgc2VpbiBrYW5uLCB3ZW5uIHouQi4gZWluIG5ldHp0b3RlciBTcGllbGVyCisgIFNwaWVsZXIgZGVuIFJhdW0gdmVybGFlc3N0LgorICBNYW4gYmVhY2h0ZSBhdXNzZXJkZW0sIGRhc3MgdGhpc19wbGF5ZXIoKSBuaWNodCB1bmJlZGluZ3QgZGFzIGJld2VndGUgTGl2aW5nCisgIHNlaW4gbXVzcy4gV2VubiB6LkIuIGplbWFuZCBlaW4gTGViZXdlc2VuIGJld2VndCwgaXN0IFRQIGRlciwgZGVyIGRpZQorICBCZXdlZ3VuZyBkdXJjaGZ1ZWhydCwgbmljaHQgZGFzIExlYmV3ZXNlbi4KKworU0lFSEUgQVVDSDoKKyAgaW5pdCgpLCB0aGlzX3BsYXllcigpLCBwcmV2aW91c19vYmplY3QoKSwgY2FsbGVyX3N0YWNrKCksCisgIE5vdGZpeUxlYXZlKCksIE5vdGlmeVJlbW92ZSgpLCBOb3RpZnlEZXN0cnVjdCgpCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCitMYXN0IG1vZGlmaWVkOiAyNS4wMi4yMDA5LCBaZXNzdHJhCmRpZmYgLS1naXQgYS9kb2MvbGZ1bi9maW5kX29icyBiL2RvYy9sZnVuL2ZpbmRfb2JzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjhmNDQzODQKLS0tIC9kZXYvbnVsbAorKysgYi9kb2MvbGZ1bi9maW5kX29icwpAQCAtMCwwICsxLDM4IEBACitmaW5kX29icygpCisKK0ZVTktUSU9OCisgICAgb2JqZWN0KiBmaW5kX29icyhzdHJpbmcgc3RyLCBpbnQgbWV0aCkKKworREVGSU5JRVJUIElOOgorCisgICAgL3N0ZC9saXZpbmcvcHV0X2FuZF9nZXQuYworCitBUkdVTUVOVEU6CisKKyAgICBzdHIgICAgIERlciBTdHJpbmcgZGVyIGdlcGFyc2VkIHdlcmRlbiBzb2xsLgorICAgIG1ldGggICAgTWl0IEhpbGZlIGRpZXNlcyBQYXJhbWV0ZXJzIGtvZW5uZW4gYmVzdGltbXRlIEJlcmVpY2hzLQorICAgICAgICAgICAgZWluZ3Jlbnp1bmdlbiB2b3JnZW5vbW1lbiB3ZXJkZW4gKGRlZmluaWVydCBpbiBtb3ZpbmcuaCk6CisKKyAgICAgICAgICAgIFBVVF9HRVRfTk9ORSAtIGtlaW5lcmxlaSBCZXJlaWNoc2VpbmdyZW56dW5nLgorICAgICAgICAgICAgUFVUX0dFVF9UQUtFIC0gZXMgaGFuZGVsdCBzaWNoIHVtIGVpbiBOZWhtZW4gdm9uIEdlZ2Vuc3RhZW5kZW4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgIGFsc28gd2lyZCBkYXMgaW52ZW50b3J5IGF1c2dlbm9tbWVuLgorICAgICAgICAgICAgUFVUX0dFVF9EUk9QIC0gZXMgaGFuZGVsdCBzaWNoIHVtIGRhcyBFbnRmZXJuZW4gdm9uIEdlZ2Vuc3RhZW5kZW4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgIGFsc28gd2lyZCBkYXMgZW52aXJvbm1lbnQgYXVzZ2Vub21tZW4uICAgICAgICAgICAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKK0JFU0NIUkVJQlVORzogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKKyAgICBEZXIgU3RyaW5nIChzdHIpIG11c3MgZm9sZ2VuZGVzIEZvcm1hdCBoYWJlbiBkYW1pdCBPYmpla3RlIGdlZnVuZGVuCisgICAgd2VyZGVuLgorCisgICAgPGdlZ2Vuc3RhbmQ+IFthdXMgY29udGFpbmVyXSBbaW4gbWlyfGltIHJhdW1dCisKKyAgICA8Z2VnZW5zdGFuZD4ga2FubiBoaWVyYmVpIHNvd29obCBlaW5lIE9iamVrdC1JRCBhbHMgYXVjaCBlaW4KKyAgICBHcnVwcGVuYmV6ZWljaG5lciB3aWUgei5iLiAiYWxsZXMiIHNlaW4uCisKK1JVZUNLR0FCRVdFUlQ6CisKKyAgICBFaW4gQXJyYXkgbWl0IGFsbGVuIE9iamVrdGVuIGRpZSBzaWNoIGFuZ2VzcHJvY2hlbiBmdWVobGVuLCBvZGVyIGFiZXIgMC4KKworU0lFSEUgQVVDSDoKKworICAgIGRyb3Bfb2JqKCksIGdpdmVfb2JqKCksIHBpY2tfb2JqKCksIHB1dF9vYmooKSwgL3N0ZC9saXZpbmcvcHV0X2FuZF9nZXQuYwpkaWZmIC0tZ2l0IGEvZG9jL2xmdW4vZ2V0X2tpbGxpbmdfcGxheWVyIGIvZG9jL2xmdW4vZ2V0X2tpbGxpbmdfcGxheWVyCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjE2Njg1YjkKLS0tIC9kZXYvbnVsbAorKysgYi9kb2MvbGZ1bi9nZXRfa2lsbGluZ19wbGF5ZXIKQEAgLTAsMCArMSwzOSBAQAorZ2V0X2tpbGxpbmdfcGxheWVyKCkKKworRlVOS1RJT046CisgICAgIHByb3RlY3RlZCBvYmplY3QgZ2V0X2tpbGxpbmdfcGxheWVyKCkKKworREVGSU5JRVJUIElOOgorICAgICAvc3RkL2xpdmluZy9saWZlLmMKKworQVJHVU1FTlRFOgorICAgICBrZWluZQorCitCRVNDSFJFSUJVTkc6CisgICAgIExpZWZlcnQgaW0gVG9kIChuYWNoIGRlbSB0b2V0ZW5kZW4gZG9fZGFtYWdlKCkpIGRhcyBTcGllbGVyb2JqZWt0LCB3YXMKKyAgICAgZGVuIFRvZCB3b2hsIHp1IHZlcmFudHdvcnRlbiBoYXQsIGZhbGxzIGVzIGVybWl0dGVsdCB3ZXJkZW4ga2Fubi4gRXMKKyAgICAgd2VyZGVuIHJlZ2lzdHJpZXJ0ZSBIZWxmZXItTlBDIHVuZCBlaW5pZ2Ugc2NoYWRlbnZlcnVyc2FjaGVuZGUgT2JqZWt0ZQorICAgICBiZXJ1ZWNrc2ljaHRpZ3QuIEhpZXJiZWkgd2lyZCBRdWVyeVVzZXIoKSBpbiBkZW4gT2JqZWt0ZW4gYWJnZWZyYWd0LgorCisgICAgIEVzIGJlbm9ldGlndCBlaW4gZ3VlbHRpZ2VzIFBfS0lMTEVSLCBkLmguIGZhbGxzIGRhcyBMZWJld2VzZW4gdmVyZ2lmdGV0CisgICAgIHd1cmRlIG9kZXIgZGFzIHRvZXRlbmRlIE9iamVrdCBhdXMgc29uc3RpZ2VuIEdydWVuZGVuIG5pY2h0IGluIFBfS0lMTEVSCisgICAgIHN0ZWh0LCBmdW5rdGlvbmllcnQgZXMgbmljaHQuCisgICAgIEF1Y2ggZ2lidCBlcyBiZXN0aW1tdCBPYmpla3RlLCBkaWUgZnVlciBTcGllbGVyIHRvZXRlbiBrb2VubmVuLCBkaWUgZGllCisgICAgIGRpZXNlIEZ1bmt0aW9uIG5pY2h0IGtlbm50LgorICAgICAoRGllcyBnaWx0IGJlaWRlcyBlYmVuc28gZnVlciAvcC9zZXJ2aWNlL211cGZlbC9nZXRraWxsLmMsIGlzdCBhbHNvIGtlaW4KKyAgICAgIEdydW5kLCBqZW5lcyBzdGF0dCBkaWVzZXIgRnVua3Rpb24genUgbnV0emVuLikKKworUlVlQ0tHQUJFV0VSVDoKKyAgICAgRGFzIE9iamVrdCBkZXMgU3BpZWxlcnMsIGZhbGxzIGVzIGVybWl0dGVsdCB3ZXJkZW4ga29ubnRlLCBzb25zdCAwLgorCitCRU1FUktVTkdFTjoKKyAgICBEZXIgTmFtZSBkZXMgU3BpZWxlciBpc3QgbWl0dGVsIE5hbWUoKSBlcm1pdHRlbGJhci4gV2lsbCBtYW4gZGllIEluZm8sIAorICAgIHdvbWl0IGVpbiBTcGllbGVyIGRlbiBLaWxsIGdnZi4gZ2VtYWNodCBoYXQsIGthbm4gbWFuIFBfS0lMTEVSCisgICAgYXVzd2VydGVuL251dHplbi4KKworU0lFSEUgQVVDSDoKKyAgICAgUXVlcnlVc2VyCisgICAgIFBfS0lMTEVSCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisxMS4xMS4yMDEzLCBaZXNzdHJhCisKZGlmZiAtLWdpdCBhL2RvYy9sZnVuL2dpbGRlL0FkZFNraWxsIGIvZG9jL2xmdW4vZ2lsZGUvQWRkU2tpbGwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMjFkYjUwNAotLS0gL2Rldi9udWxsCisrKyBiL2RvYy9sZnVuL2dpbGRlL0FkZFNraWxsCkBAIC0wLDAgKzEsMzMgQEAKK0FkZFNraWxsKCkKK0ZVTktUSU9OOgorICAgIHZhcmFyZ3MgaW50IEFkZFNraWxsKHN0cmluZyBzbmFtZSwgbWFwcGluZyBza2kpCisKK0RFRklOSUVSVCBJTjoKKyAgICAvc3RkL2dpbGRlbl9vYi5jCisKK0FSR1VNRU5URToKKyAgICBzdHJpbmcgc25hbWUgICAgICAgTmFtZSBkZXMgU2tpbGxzCisgICAgbWFwcGluZyBza2kgICAgICAgIFNraWxsLU1hcHBpbmcKKworQkVTQ0hSRUlCVU5HOgorICAgIEZ1ZWd0IGRlbiBTa2lsbCB6dXIgTGlzdGUgZGVyIGluIGRpZXNlciBHaWxkZSBsZXJuYmFyZW4gU2tpbGxzCisgICAgaGluenUuIERhcyBNYXBwaW5nIGVudGhhZWx0IEluZm9ybWF0aW9uZW4sIGRpZSBkZXIgR2lsZGVucmF1bQorICAgIGJ6dy4gZGFzIEdpbGRlbm9iamVrdCB6dW0gU2tpbGwgaGVyYXVzZ2ViZW4gdW5kIGRpZSBkYXMgTGVybmVuCisgICAgZGVzIFNraWxscyBiZWVpbmZsdXNzZW4uCisKK1JVRUNLR0FCV0VSVDoKKyAgICAxIGZ1ZXIgRXJmb2xnCisKK0JFSVNQSUVMOgorICAgIEFkZFNraWxsKCBGSUdIVChXVF9DTFVCKSwgKFsgT0ZGU0VUKFNJX1NLSUxMTEVBUk4pIDogMSBdKSApOworCitTSUVIRSBBVUNIOgorICAgIEdPYmogTGVybmVuOiAgICBMZWFyblNraWxsLCBMZWFyblNwZWxsLCBJbml0aWFsU2tpbGxBYmlsaXR5CisgICAgKiBBbnplaWdlbjogICAgIFNraWxsTGlzdGUKKyAgICAqIFZlcndhbHRlbjogICAgQWRkU3BlbGwgKGdpbGRlKSwgUXVlcnlTcGVsbCwgUXVlcnlTa2lsbAorICAgICogTnV0emVuOiAgICAgICBVc2VTcGVsbCAoZ2lsZGUpCisgICAgKiBQcm9wZXJ0aWVzOiAgIFBfR1VJTERfU0tJTExTLCBQX0dMT0JBTF9TS0lMTFBST1BTCisgICAgR2lsZGVuZmt0LjogICAgIEd1aWxkUmF0aW5nCisgICAgKiBFaW4vQXVzdHJpdHQ6IGJlaXRyZXRlbiwgYmVpX29kZXJfYXVzX3RyZXRlbiwgYXVzdHJldGVuCisKKzMuIE9rdCAyMDExIEdsb2luc29uClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZG9jL2xmdW4vZ2lsZGUvQWRkU3BlbGwgYi9kb2MvbGZ1bi9naWxkZS9BZGRTcGVsbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5jMGNhOTM1Ci0tLSAvZGV2L251bGwKKysrIGIvZG9jL2xmdW4vZ2lsZGUvQWRkU3BlbGwKQEAgLTAsMCArMSw0NyBAQAorQWRkU3BlbGwoKQorRlVOS1RJT046CisgICAgdmFyYXJncyBpbnQgQWRkU3BlbGwoc3RyaW5nIHZlcmIsIG1hcHBpbmcgc2tpKQorCitERUZJTklFUlQgSU46CisgICAgL3N0ZC9naWxkZW5fb2IuYworCitBUkdVTUVOVEU6CisgICAgc3RyaW5nIHZlcmIgICAgICAgIE5hbWUgZGVzIFNwZWxscworICAgIG1hcHBpbmcgc2tpICAgICAgICBTa2lsbC1NYXBwaW5nCisKK0JFU0NIUkVJQlVORzoKKyAgICBGdWVndCBkZW4gU3BlbGwgenVyIExpc3RlIGRlciBpbiBkaWVzZXIgR2lsZGUgbGVybmJhcmVuIFNwZWxscworICAgIGhpbnp1LiBEYXMgTWFwcGluZyBlbnRoYWVsdCBJbmZvcm1hdGlvbmVuLCBkaWUgZGVyIEdpbGRlbnJhdW0KKyAgICBiencuIGRhcyBHaWxkZW5vYmpla3QgenVtIFNwZWxsIGhlcmF1c2dlYmVuIHVuZCBkaWUgZGFzIExlcm5lbgorICAgIGRlcyBTcGVsbHMgYmVlaW5mbHVzc2VuLgorCitSVUVDS0dBQldFUlQ6CisgICAgMSBmdWVyIEVyZm9sZworCitCRU1FUktVTkdFTjoKKyAgICBTaWVoZSBkYXMgVmVyaGFsdGVuIHZvbiBRdWVyeVNwZWxsIChnaWxkZSkgenVtIFp1c2FtbWVuZnVlZ2VuCisgICAgZGVyIEFkZFNwZWxsLUluZm9ybWF0aW9uZW4gYXVzIEdpbGRlIHVuZCBTcGVsbGJvb2suIFJlbGV2YW50CisgICAgekIgZnVlciBMZXJucmVzdHJpa3Rpb25lbi4KKworQkVJU1BJRUw6CisgICAgQWRkU3BlbGwoImVudGZsdWNoZSIsCisgICAgICAoW1NJX1NLSUxMUkVTVFJfTEVBUk4gOgorICAgICAgICAoW1BfR1VJTERfTEVWRUw6IExWTF9XQU5ERVIsCisgICAgICAgICAgU1JfRlVOOiAgICAgICAgIydnbGF1YmVuc1Rlc3RdKSwKKyAgICAgICAgU0lfRElGRklDVUxUWTogMTAwLAorICAgICAgICBTSV9TS0lMTElORk86ICAiV2FuZGVycHJlZGlnZXIgYWIgU3R1ZmUgNyIsCisgICAgICAgIFNJX1NLSUxMSU5GT19MT05HOiBicmVha19zdHJpbmcoCisgICAgICAgICAgIlVtIGplbWFuZGVuIHZvbiBlaW5lbSBsYWVzdGlnZW4gU3ByYWNoZmx1Y2ggenUgYmVmcmVpZW4sICIKKyAgICAgICAgICAic29sbHRlIG1hbiBkaWVzZSBBbnJ1ZnVuZyBiZW51dHplbiBbLi4uXSIsIDc4KSwKKyAgICAgICAgU0lfR09EOiAgICAgICAgTEVNQk9MRF0pKTsKKworU0lFSEUgQVVDSDoKKyAgICBHT2JqIExlcm5lbjogICAgTGVhcm5Ta2lsbCwgTGVhcm5TcGVsbCwgSW5pdGlhbFNraWxsQWJpbGl0eQorICAgICogQW56ZWlnZW46ICAgICBTa2lsbExpc3RlCisgICAgKiBWZXJ3YWx0ZW46ICAgIEFkZFNraWxsLCBRdWVyeVNwZWxsLCBRdWVyeVNraWxsLCBRdWVyeVNraWxsCisgICAgKiBOdXR6ZW46ICAgICAgIFVzZVNwZWxsIChnaWxkZSkKKyAgICAqIFByb3BlcnRpZXM6ICAgUF9HVUlMRF9TS0lMTFMsIFBfR0xPQkFMX1NLSUxMUFJPUFMKKyAgICBHaWxkZW5ma3QuOiAgICAgR3VpbGRSYXRpbmcKKyAgICAqIEVpbi9BdXN0cml0dDogYmVpdHJldGVuLCBiZWlfb2Rlcl9hdXNfdHJldGVuLCBhdXN0cmV0ZW4KKworMy4gT2t0IDIwMTEgR2xvaW5zb24KZGlmZiAtLWdpdCBhL2RvYy9sZnVuL2dpbGRlL0d1aWxkUmF0aW5nIGIvZG9jL2xmdW4vZ2lsZGUvR3VpbGRSYXRpbmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uN2JmYjZiMgotLS0gL2Rldi9udWxsCisrKyBiL2RvYy9sZnVuL2dpbGRlL0d1aWxkUmF0aW5nCkBAIC0wLDAgKzEsMjcgQEAKK0d1aWxkUmF0aW5nKCkKK0ZVTktUSU9OOgorICAgIGludCBHdWlsZFJhdGluZyhvYmplY3QgcGwpCisKK0RFRklOSUVSVCBJTjoKKyAgICAvc3RkL2dpbGRlbl9vYi5jCisKK0FSR1VNRU5URToKKyAgICBvYmplY3QgcGwgICAgICAgICAgU3BpZWxlciwgZGVyIGdlcmF0ZXQgd2VyZGVuIHNvbGwKKworQkVTQ0hSRUlCVU5HOgorICAgIEdpYnQgZGFzIEd1aWxkLVJhdGluZyBkZXMgU3BpZWxlcnMgaW0gQmVyZWljaCAwLU1BWF9BQklMSVRZIHp1cnVlY2sKKyAgICB1bmQgc2NocmVpYnQgc2llIGluIFBfR1VJTERfUkFUSU5HLiBXaWNodGlnIGZ1ZXIgTGV2ZWxiZXN0aW1tdW5nIQorICAgIAorICAgIE5vcm1hbGVyd2Vpc2UgaXN0IGRhcyBkZXIgTWl0dGVsd2VydCBkZXIgU2tpbGwtQWJpbGl0aWVzIGFsbGVyIFNraWxscworICAgIHVuZCBTcGVsbHMsIGRhcyBWZXJoYWx0ZW4ga2FubiBhYmVyIHVlYmVyc2NocmllYmVuIHdlcmRlbi4KKworU0lFSEUgQVVDSDoKKyAgICBHT2JqIExlcm5lbjogICAgTGVhcm5Ta2lsbCwgTGVhcm5TcGVsbCwgSW5pdGlhbFNraWxsQWJpbGl0eQorICAgICogQW56ZWlnZW46ICAgICBTa2lsbExpc3RlCisgICAgKiBWZXJ3YWx0ZW46ICAgIEFkZFNwZWxsIChnaWxkZSksIEFkZFNraWxsLCBRdWVyeVNwZWxsLCBRdWVyeVNraWxsCisgICAgKiBOdXR6ZW46ICAgICAgIFVzZVNwZWxsIChnaWxkZSkKKyAgICAqIFByb3BlcnRpZXM6ICAgUF9HVUlMRF9TS0lMTFMsIFBfR0xPQkFMX1NLSUxMUFJPUFMsIFBfR1VJTERfUkFUSU5HCisgICAgR2lsZGVuZmt0LjoKKyAgICAqIEVpbi9BdXN0cml0dDogYmVpdHJldGVuLCBiZWlfb2Rlcl9hdXNfdHJldGVuLCBhdXN0cmV0ZW4KKworMTAuIE9rdCAyMDExIEdsb2luc29uClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZG9jL2xmdW4vZ2lsZGUvSW5pdGlhbFNraWxsQWJpbGl0eSBiL2RvYy9sZnVuL2dpbGRlL0luaXRpYWxTa2lsbEFiaWxpdHkKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMjhhMjY4OQotLS0gL2Rldi9udWxsCisrKyBiL2RvYy9sZnVuL2dpbGRlL0luaXRpYWxTa2lsbEFiaWxpdHkKQEAgLTAsMCArMSwzMSBAQAorSW5pdGlhbFNraWxsQWJpbGl0eSgpCitGVU5LVElPTjoKKyAgICBzdGF0aWMgaW50IEluaXRpYWxTa2lsbEFiaWxpdHkobWFwcGluZyBza2ksIG9iamVjdCBwbCkKKworREVGSU5JRVJUIElOOgorICAgIC9zdGQvZ2lsZGVuX29iLmMKKworQVJHVU1FTlRFOgorICAgIG1hcHBpbmcgc2tpICAgICBEZXIgenUgbGVybmVuZGUgU2tpbGwKKyAgICBvYmplY3QgIHBsICAgICAgU3BpZWxlcgorCitCRVNDSFJFSUJVTkc6CisgICAgR2lidCBkZW4gaW5pdGlhbGVuIEFiaWxpdHktV2VydCBmdWVyIGVpbmVuIG5ldSB6dSBsZXJuZW5kZW4gU2tpbGwgKFNwZWxsKQorICAgIHp1cnVlY2suIERpZSBTdGFuZGFyZGZvcm1lbCBiZW51dHp0IG51ciBJbnRlbGxpZ2VueiB1bmQgU0lfU0tJTExMRUFSTiB1bmQKKyAgICBrYW5uIGluIGRlciBHaWxkZSB1ZWJlcnNjaHJpZWJlbiB3ZXJkZW4uCisKK0JFTUVSS1VOR0VOOgorICAgIERlciB6dXJ1ZWNrZ2VnZWJlbmUgV2VydCB3aXJkIG5vY2ggaW4gZGFzIFNwaWVsZXItU2tpbGxzeXN0ZW0gZWluZ2VnZWJlbgorICAgIHVuZCBkYWhlciBrYW5uIGRlciByZWFsIGdlbGVybnRlIFdlcnQgYWJ3ZWljaGVuCisKK1NJRUhFIEFVQ0g6CisgICAgU2tpbGxzOiAgICAgICAgIExpbWl0QWJpbGl0eSwgTW9kaWZ5U2tpbGwKKyAgICBHT2JqIExlcm5lbjogICAgTGVhcm5Ta2lsbCwgTGVhcm5TcGVsbAorICAgICogQW56ZWlnZW46ICAgICBTa2lsbExpc3RlCisgICAgKiBWZXJ3YWx0ZW46ICAgIEFkZFNwZWxsIChnaWxkZSksIEFkZFNraWxsLCBRdWVyeVNwZWxsLCBRdWVyeVNraWxsCisgICAgKiBOdXR6ZW46ICAgICAgIFVzZVNwZWxsIChnaWxkZSkKKyAgICAqIFByb3BlcnRpZXM6ICAgUF9HVUlMRF9TS0lMTFMsIFBfR0xPQkFMX1NLSUxMUFJPUFMKKyAgICBHaWxkZW5ma3QuOiAgICAgR3VpbGRSYXRpbmcKKyAgICAqIEVpbi9BdXN0cml0dDogYmVpdHJldGVuLCBiZWlfb2Rlcl9hdXNfdHJldGVuLCBhdXN0cmV0ZW4KKworMy4gT2t0IDIwMTEgR2xvaW5zb24KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9kb2MvbGZ1bi9naWxkZS9MZWFyblNraWxsIGIvZG9jL2xmdW4vZ2lsZGUvTGVhcm5Ta2lsbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5jMzgxOTU5Ci0tLSAvZGV2L251bGwKKysrIGIvZG9jL2xmdW4vZ2lsZGUvTGVhcm5Ta2lsbApAQCAtMCwwICsxLDM1IEBACitMZWFyblNraWxsKCkKK0ZVTktUSU9OOgorICAgIGludCBMZWFyblNraWxsKHN0cmluZyBza2lsbCkKKworREVGSU5JRVJUIElOOgorICAgIC9zdGQvZ2lsZGVuX29iLmMKKworQVJHVU1FTlRFOgorICAgIHN0cmluZyBza2lsbCAgICAgRGVyIHp1IGxlcm5lbmRlIFNraWxsCisKK0JFU0NIUkVJQlVORzoKKyAgICBEaWVzZSBGdW5rdGlvbiB1ZWJlcnBydWVmdCBkZW4gU3BpZWxlciBhdWYgR2lsZGVuenVnZWhvZXJpZ2tlaXQKKyAgICB1bmQgcnVmdCwgZmFsbHMga2VpbiAnc2tpbGwnIGFuZ2VnZWJlbiBpc3QgZGllIFNraWxsTGlzdGUoKQorICAgIGZ1ZXIgU2tpbGxzIGF1Zi4KKworICAgIEZhbGxzIGVpbiBBcmd1bWVudCBhbmdlZ2ViZW4gd2lyZCwgd2lyZCBiZWkgZGVtIFNwaWVsZXIgZGllc2VyIFNraWxsCisgICAgaW5pdGlhbGlzaWVydCwgc29mZXJuIGVyIGRpZSBub3R3ZW5kaWdlbiBBbmZvcmRlcnVuZ2VuIGVyZnVlbGx0IGhhdC4KKworUlVFQ0tHQUJFV0VSVDoKKyAgICAwIGJlaSBGZWhsZXIsIDEgYmVpIEVyZm9sZy4KKworQkVNRVJLVU5HRU46CisgICAgRnVlciBkaWUgTGViZXdlc2VuLVNraWxscyBnaWJ0IGVzIGVpbmUgZ2xlaWNobmFtaWdlIEZ1bmt0aW9uLgorICAgIFNpZWhlIGRhZnVlciBMZWFyblNraWxsLgorCitTSUVIRSBBVUNIOgorICAgIEdPYmogTGVybmVuOiAgICBMZWFyblNwZWxsLCBJbml0aWFsU2tpbGxBYmlsaXR5CisgICAgKiBBbnplaWdlbjogICAgIFNraWxsTGlzdGUKKyAgICAqIFZlcndhbHRlbjogICAgQWRkU3BlbGwgKGdpbGRlKSwgQWRkU2tpbGwsIFF1ZXJ5U3BlbGwsIFF1ZXJ5U2tpbGwKKyAgICAqIE51dHplbjogICAgICAgVXNlU3BlbGwgKGdpbGRlKQorICAgICogUHJvcGVydGllczogICBQX0dVSUxEX1NLSUxMUywgUF9HTE9CQUxfU0tJTExQUk9QUworICAgIEdpbGRlbmZrdC46ICAgICBHdWlsZFJhdGluZworICAgICogRWluL0F1c3RyaXR0OiBiZWl0cmV0ZW4sIGJlaV9vZGVyX2F1c190cmV0ZW4sIGF1c3RyZXRlbgorCiszLiBPa3QgMjAxMSBHbG9pbnNvbgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2RvYy9sZnVuL2dpbGRlL0xlYXJuU3BlbGwgYi9kb2MvbGZ1bi9naWxkZS9MZWFyblNwZWxsCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjU1YzU4NDAKLS0tIC9kZXYvbnVsbAorKysgYi9kb2MvbGZ1bi9naWxkZS9MZWFyblNwZWxsCkBAIC0wLDAgKzEsMzIgQEAKK0xlYXJuU3BlbGwoKQorRlVOS1RJT046CisgICAgdmFyYXJncyBpbnQgTGVhcm5TcGVsbChzdHJpbmcgc3BlbGwsIG9iamVjdCBwbCkKKworREVGSU5JRVJUIElOOgorICAgIC9zdGQvZ2lsZGVuX29iLmMKKworQVJHVU1FTlRFOgorICAgIHN0cmluZyBzcGVsbCAgICAgRGVyIHp1IGxlcm5lbmRlIFNwZWxsCisgICAgb2JqZWN0IHBsICAgICAgICBsZXJuZW5kZXIgU3BpZWxlciwgd2VubiAwLCB3aXJkIHRoaXNfcGxheWVyKCkgZ2Vub21tZW4KKworQkVTQ0hSRUlCVU5HOgorICAgIERpZXNlIEZ1bmt0aW9uIHVlYmVycHJ1ZWZ0IGRlbiBTcGllbGVyIGF1ZiBHaWxkZW56dWdlaG9lcmlna2VpdAorICAgIHVuZCBydWZ0LCBmYWxscyBrZWluICdzcGVsbCcgYW5nZWdlYmVuIGlzdCBkaWUgU2tpbGxMaXN0ZSgpCisgICAgZnVlciBTcGVsbHMgYXVmLgorCisgICAgRmFsbHMgZWluIEFyZ3VtZW50IGFuZ2VnZWJlbiB3aXJkLCB3aXJkIGJlaSBkZW0gU3BpZWxlciBkaWVzZXIgU3BlbGwKKyAgICBpbml0aWFsaXNpZXJ0LCBzb2Zlcm4gZXIgZGllIG5vdHdlbmRpZ2VuIEFuZm9yZGVydW5nZW4gZXJmdWVsbHQgaGF0LgorCitSVUVDS0dBQkVXRVJUOgorICAgIDAgYmVpIEZlaGxlciwgMSBiZWkgRXJmb2xnLgorCitTSUVIRSBBVUNIOgorICAgIEdPYmogTGVybmVuOiAgICBMZWFyblNraWxsLCBJbml0aWFsU2tpbGxBYmlsaXR5CisgICAgKiBBbnplaWdlbjogICAgIFNraWxsTGlzdGUKKyAgICAqIFZlcndhbHRlbjogICAgQWRkU3BlbGwgKGdpbGRlKSwgQWRkU2tpbGwsIFF1ZXJ5U3BlbGwsIFF1ZXJ5U2tpbGwKKyAgICAqIE51dHplbjogICAgICAgVXNlU3BlbGwgKGdpbGRlKQorICAgICogUHJvcGVydGllczogICBQX0dVSUxEX1NLSUxMUywgUF9HTE9CQUxfU0tJTExQUk9QUworICAgIEdpbGRlbmZrdC46ICAgICBHdWlsZFJhdGluZworICAgICogRWluL0F1c3RyaXR0OiBiZWl0cmV0ZW4sIGJlaV9vZGVyX2F1c190cmV0ZW4sIGF1c3RyZXRlbgorCiszLiBPa3QgMjAxMSBHbG9pbnNvbgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2RvYy9sZnVuL2dpbGRlL1F1ZXJ5U2tpbGwgYi9kb2MvbGZ1bi9naWxkZS9RdWVyeVNraWxsCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjU5ZGNlMTIKLS0tIC9kZXYvbnVsbAorKysgYi9kb2MvbGZ1bi9naWxkZS9RdWVyeVNraWxsCkBAIC0wLDAgKzEsMzMgQEAKK1F1ZXJ5U2tpbGwoKQorRlVOS1RJT046CisgICAgbWFwcGluZyBRdWVyeVNraWxsKHN0cmluZyBza2lsbCkKKworREVGSU5JRVJUIElOOgorICAgIC9zdGQvZ2lsZGVuX29iLmMKKworQVJHVU1FTlRFOgorICAgIHN0cmluZyBza2lsbCAgICAgICBOYW1lIGRlcyBTa2lsbHMKKworQkVTQ0hSRUlCVU5HOgorICAgIExpZWZlcnQgZnVlciBkaWVzZW4gU2tpbGwgZGllIEdpbGRlbmluZm9ybWF0aW9uZW4gaW4gZWluZW0KKyAgICBNYXBwaW5nIHp1cnVlY2suCisKK0JFSVNQSUVMOgorICAgIC8vIC9naWxkZW4va2xlcnVzLT5RdWVyeVNraWxsKEZJR0hUKFdUX0NMVUIpKSBnaWJ0IHpCIHp1cnVlY2s6CisgICAgKFtTSV9GVU46ICAgICAgICAgICAgICAgICJGaWdodF9jbHViIiwKKyAgICAgIE9GRlNFVChTSV9TS0lMTExFQVJOKTogMQorICAgICAgU0lfU0tJTExSRVNUUl9VU0U6ICAgICAoW1NSX0ZVTjojJ2dpbGRlbi9rbGVydXMtPnNwZWxsVGVzdCgpXSksCisgICAgICBPRkZTRVQoU0lfU0tJTExMRUFSTik6ICMnZ2lsZGVuL2tsZXJ1cy0+bGVhcm5PZmZzZXQsCisgICAgICBPRkZTRVQoU0lfU1BFTExDT1NUKTogICMnZ2lsZGVuL2tsZXJ1cy0+Y29zdE9mZnNldCwKKyAgICAgIEZBQ1RPUihTSV9TUEVMTENPU1QpOiAgIydnaWxkZW4va2xlcnVzLT5jb3N0RmFjdG9yXSkKKworU0lFSEUgQVVDSDoKKyAgICBHT2JqIExlcm5lbjogICAgTGVhcm5Ta2lsbCwgTGVhcm5TcGVsbCwgSW5pdGlhbFNraWxsQWJpbGl0eQorICAgICogQW56ZWlnZW46ICAgICBTa2lsbExpc3RlCisgICAgKiBWZXJ3YWx0ZW46ICAgIEFkZFNraWxsLCBBZGRTcGVsbCwgUXVlcnlTcGVsbAorICAgICogTnV0emVuOiAgICAgICBVc2VTcGVsbCAoZ2lsZGUpCisgICAgKiBQcm9wZXJ0aWVzOiAgIFBfR1VJTERfU0tJTExTLCBQX0dMT0JBTF9TS0lMTFBST1BTCisgICAgR2lsZGVuZmt0LjogICAgIEd1aWxkUmF0aW5nCisgICAgKiBFaW4vQXVzdHJpdHQ6IGJlaXRyZXRlbiwgYmVpX29kZXJfYXVzX3RyZXRlbiwgYXVzdHJldGVuCisKKzMuIE9rdCAyMDExIEdsb2luc29uClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZG9jL2xmdW4vZ2lsZGUvUXVlcnlTcGVsbCBiL2RvYy9sZnVuL2dpbGRlL1F1ZXJ5U3BlbGwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMjJmMTk2NQotLS0gL2Rldi9udWxsCisrKyBiL2RvYy9sZnVuL2dpbGRlL1F1ZXJ5U3BlbGwKQEAgLTAsMCArMSw1NCBAQAorUXVlcnlTcGVsbCgpCitGVU5LVElPTjoKKyAgICBtYXBwaW5nIFF1ZXJ5U3BlbGwoc3RyaW5nIHNwZWxsKQorCitERUZJTklFUlQgSU46CisgICAgL3N0ZC9naWxkZW5fb2IuYworCitBUkdVTUVOVEU6CisgICAgc3RyaW5nIHNwZWxsICAgICAgIE5hbWUgZGVzIFNwZWxscworCitCRVNDSFJFSUJVTkc6CisgICAgTGllZmVydCBmdWVyIGRpZXNlbiBTcGVsbCBkaWUgR2lsZGVuLSB1bmQgU3BlbGxib29raW5mb3JtYXRpb25lbgorICAgIHp1c2FtbWVuZ2VmYXNzdCBpbiBlaW4gTWFwcGluZyB6dXJ1ZWNrLgorICAgIERpZSBHaWxkZW5pbmZvcm1hdGlvbmVuIGhhYmVuIGRhYmVpIFZvcnJhbmcgKGQuaC4gZWluZSBMZXJucmVzdHJpa3Rpb24KKyAgICBpbSBTcGVsbGJvb2sgd2lyZCBiZW51dHp0LCBiZWkgdW50ZXJzY2hpZWRsaWNoZW4gV2VydGVuIGZ1ZXIgZGFzIGdsZWljaGUKKyAgICBBdHRyaWJ1dCBnZWh0IGRlciBXZXJ0IGluIGRlciBHaWxkZSB2b3IpLgorCitCRUlTUElFTDoKKyAgICAvLyAvZ2lsZGVuL2tsZXJ1cy0+UXVlcnlTcGVsbCgiZW50Zmx1Y2hlIikgZ2lidCB6QiB6dXJ1ZWNrOgorICAgIChbU0lfU1BFTExGQVRJR1VFOiAyLAorICAgICAgU0lfU1BfTE9XX01TRzogICAiRGVpbmUgS29uemVudHJhdGlvbiByZWljaHQgbmljaHQgYXVzLCBkYXMgSW50ZXJlc3NlICIKKyAgICAgICAgICAgICAgICAgICAgICAgImRlciBHb2V0dGVyIHp1ICJ3ZWNrZW4uXG4iLAorICAgICAgU0lfVElNRV9NU0c6ICAgICAiU28gc2NobmVsbCBrb2VubmVuIHNpY2ggZGllIEdvZXR0ZXIgbmljaHQgd2llZGVyIHVtICIKKyAgICAgICAgICAgICAgICAgICAgICAgIkRpY2gga3VlbW1lcm4hXG4iLAorICAgICAgU0lfU0tJTExMRUFSTjogICA1LAorICAgICAgT0ZGU0VUKFNJX1NLSUxMTEVBUk4pOjE1CisgICAgICBTSV9TS0lMTFJFU1RSX0xFQVJOOgorICAgICAgKFtQX0xFVkVMOiAgICAgICA3LAorICAgICAgICBQX0dVSUxEX0xFVkVMOiBMVkxfV0FOREVSLAorICAgICAgICBTUl9GVU46ICAgICAgICAjJ2dpbGRlbi9rbGVydXMtPmdsYXViZW5zVGVzdF0pLAorICAgICAgU0lfRElGRklDVUxUWTogICAxMDAsCisgICAgICBTSV9TS0lMTElORk86ICAgICJXYW5kZXJwcmVkaWdlciBhYiBTdHVmZSA3IiwKKyAgICAgIFNJX1NLSUxMSU5GT19MT05HOgorICAgICAgICAiVW0gamVtYW5kZW4gdm9uIGVpbmVtIGxhZXN0aWdlbiBTcHJhY2hmbHVjaCB6dSBiZWZyZWllbiwgIgorICAgICAgICAic29sbHRlIG1hbiBkaWVzZSBBbnJ1ZnVuZyBiZW51dHplbiBbLi4uXSIsCisgICAgICBTUF9OQU1FOiAgICAgICAgICJlbnRmbHVjaGUiLAorICAgICAgU0lfU0tJTExSRVNUUl9VU0U6IChbIFNSX0ZSRUVfSEFORFMgOiAwIF0pLAorICAgICAgU0lfTUFHSUNfVFlQRTogICAoe01UX1NBS1JBTH0pCisgICAgICBTSV9HT0Q6ICAgICAgICAgIExFTUJPTEQsCisgICAgICBTSV9TS0lMTFJFU1RSX1VTRTogICAgIChbU1JfRlVOOiMnZ2lsZGVuL2tsZXJ1cy0+c3BlbGxUZXN0KCldKSwKKyAgICAgIE9GRlNFVChTSV9TS0lMTExFQVJOKTogIydnaWxkZW4va2xlcnVzLT5sZWFybk9mZnNldCwKKyAgICAgIE9GRlNFVChTSV9TUEVMTENPU1QpOiAgIydnaWxkZW4va2xlcnVzLT5jb3N0T2Zmc2V0LAorICAgICAgRkFDVE9SKFNJX1NQRUxMQ09TVCk6ICAjJ2dpbGRlbi9rbGVydXMtPmNvc3RGYWN0b3JdKQorCitTSUVIRSBBVUNIOgorICAgIEdPYmogTGVybmVuOiAgICBMZWFyblNraWxsLCBMZWFyblNwZWxsLCBJbml0aWFsU2tpbGxBYmlsaXR5CisgICAgKiBBbnplaWdlbjogICAgIFNraWxsTGlzdGUKKyAgICAqIFZlcndhbHRlbjogICAgQWRkU2tpbGwsIEFkZFNwZWxsLCBRdWVyeVNraWxsCisgICAgKiBOdXR6ZW46ICAgICAgIFVzZVNwZWxsIChnaWxkZSkKKyAgICAqIFByb3BlcnRpZXM6ICAgUF9HVUlMRF9TS0lMTFMsIFBfR0xPQkFMX1NLSUxMUFJPUFMKKyAgICBHaWxkZW5ma3QuOiAgICAgR3VpbGRSYXRpbmcKKyAgICAqIEVpbi9BdXN0cml0dDogYmVpdHJldGVuLCBiZWlfb2Rlcl9hdXNfdHJldGVuLCBhdXN0cmV0ZW4KKworMy4gT2t0IDIwMTEgR2xvaW5zb24KZGlmZiAtLWdpdCBhL2RvYy9sZnVuL2dpbGRlL1NraWxsTGlzdGUgYi9kb2MvbGZ1bi9naWxkZS9Ta2lsbExpc3RlCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjhjYzJiMzkKLS0tIC9kZXYvbnVsbAorKysgYi9kb2MvbGZ1bi9naWxkZS9Ta2lsbExpc3RlCkBAIC0wLDAgKzEsMjcgQEAKK1NraWxsTGlzdGUoKQorRlVOS1RJT046CisgICAgaW50IFNraWxsTGlzdGUoaW50IHdoYXQpCisKK0RFRklOSUVSVCBJTjoKKyAgICAvc3RkL2dpbGRlbl9vYi5jCisKK0FSR1VNRU5URToKKyAgICBpbnQgd2hhdCAgICAgICAgUnVlY2tnYWJlb3B0aW9uOgorCitCRVNDSFJFSUJVTkc6CisgICAgR2lidCBlaW5lIFRleHQgbWl0IExpc3RlIG1pdCBsZXJuYmFyZW4gU2tpbGxzL1NwZWxscyB6dXJ1ZWNrOgorICAgIAorICAgIEZ1ZXIgJ3doYXQnOiAwIC0gYWxsZTsgMSAtIFNwZWxsczsgMiAtIFNraWxscy4KKyAgICAKKyAgICBaZWlndCBFaW50cmFlZ2UgYXVzIFNJX1NLSUxMSU5GTy4KKworU0lFSEUgQVVDSDoKKyAgICBHT2JqIExlcm5lbjogICAgTGVhcm5Ta2lsbCwgTGVhcm5TcGVsbCwgSW5pdGlhbFNraWxsQWJpbGl0eQorICAgICogVmVyd2FsdGVuOiAgICBBZGRTcGVsbCAoZ2lsZGUpLCBBZGRTa2lsbCwgUXVlcnlTcGVsbCwgUXVlcnlTa2lsbAorICAgICogTnV0emVuOiAgICAgICBVc2VTcGVsbCAoZ2lsZGUpCisgICAgKiBQcm9wZXJ0aWVzOiAgIFBfR1VJTERfU0tJTExTLCBQX0dMT0JBTF9TS0lMTFBST1BTCisgICAgR2lsZGVuZmt0LjogICAgIEd1aWxkUmF0aW5nCisgICAgKiBFaW4vQXVzdHJpdHQ6IGJlaXRyZXRlbiwgYmVpX29kZXJfYXVzX3RyZXRlbiwgYXVzdHJldGVuCisgICAgU2tpbGxzOiAgICAgICAgIHNraWxsX2luZm9fbGlzdGUKKworMy4gT2t0IDIwMTEgR2xvaW5zb24KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9kb2MvbGZ1bi9naWxkZS9Vc2VTcGVsbCBiL2RvYy9sZnVuL2dpbGRlL1VzZVNwZWxsCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjk2ODIzY2MKLS0tIC9kZXYvbnVsbAorKysgYi9kb2MvbGZ1bi9naWxkZS9Vc2VTcGVsbApAQCAtMCwwICsxLDMyIEBACitVc2VTcGVsbCgpCitGVU5LVElPTjoKKyAgICB2YXJhcmdzIGludCBVc2VTcGVsbChvYmplY3QgY2FzdGVyLCBzdHJpbmcgc3BlbGwsIG1hcHBpbmcgc2luZm8pCisKK0RFRklOSUVSVCBJTjoKKyAgICAvc3RkL2dpbGRlbl9vYi5jCisKK0FSR1VNRU5URToKKyAgICBvYmplY3QgY2FzdGVyICAgICAgU3BpZWxlciwgZGVyIFNwZWxsIG51dHp0CisgICAgc3RyaW5nIHNwZWxsICAgICAgIFNwZWxsLU5hbWUKKyAgICBtYXBwaW5nIHNpbmZvICAgICAgU3BlbGwtSW5mb3JtYXRpb25lbgorCitCRVNDSFJFSUJVTkc6CisgICAgUHJ1ZWZ0LCBvYiBkZXIgU3BlbGwgaW4gZGVyIEdpbGRlIGRlZmluaWVydCBpc3QgdW5kIHJ1ZnQgaWhuIGRhbm4KKyAgICBnZ2YgaW4gYXVzIGRlbSBTcGVsbC1NYXBwaW5nIGdlbGVzZW5lbiBHaWxkZW4tU0lfU1BFTExCT09LIGF1Zi4KKworICAgIFdpcmQgdm9uIGxpdmluZy9za2lsbHM6OlVzZVNwZWxsIGdlcnVmZW4sIHdlbm4gZGllc2VzIGRpZSBTSV9DTE9TVVJFLAorICAgIGFsc28gZGllIEZ1bmt0aW9uIGVpbmVzIFNwZWxscyBzdWNodCwgZnVlciBkZW4ga2VpbiBTSV9TUEVMTEJPT0sKKyAgICBleHBsaXppdCBhbmdlZ2ViZW4gd3VyZGUuCisKK1JVRUNLR0FCV0VSVDoKKyAgICBSdWVja2dhYmV3ZXJ0IGRlcyBTcGVsbHMgYXVzIGRlbSBTcGVsbGJvb2sgb2RlciAwLgorCitTSUVIRSBBVUNIOgorICAgIEdPYmogTGVybmVuOiAgICBMZWFyblNraWxsLCBMZWFyblNwZWxsLCBJbml0aWFsU2tpbGxBYmlsaXR5CisgICAgKiBBbnplaWdlbjogICAgIFNraWxsTGlzdGUKKyAgICAqIFZlcndhbHRlbjogICAgQWRkU3BlbGwgKGdpbGRlKSwgQWRkU2tpbGwsIFF1ZXJ5U3BlbGwsIFF1ZXJ5U2tpbGwKKyAgICAqIFByb3BlcnRpZXM6ICAgUF9HVUlMRF9TS0lMTFMsIFBfR0xPQkFMX1NLSUxMUFJPUFMKKyAgICBHaWxkZW5ma3QuOiAgICAgR3VpbGRSYXRpbmcKKyAgICAqIEVpbi9BdXN0cml0dDogYmVpdHJldGVuLCBiZWlfb2Rlcl9hdXNfdHJldGVuLCBhdXN0cmV0ZW4KKworMy4gT2t0IDIwMTEgR2xvaW5zb24KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9kb2MvbGZ1bi9naWxkZS9hdXN0cmV0ZW4gYi9kb2MvbGZ1bi9naWxkZS9hdXN0cmV0ZW4KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNDc3MGJlZgotLS0gL2Rldi9udWxsCisrKyBiL2RvYy9sZnVuL2dpbGRlL2F1c3RyZXRlbgpAQCAtMCwwICsxLDM0IEBACithdXN0cmV0ZW4oKQorRlVOS1RJT046CisgICAgdmFyYXJncyBpbnQgYXVzdHJldGVuKGludCBsb3NzKQorCitBUkdVTUVOVEU6CisgICAgaW50IGxvc3MgICAgICAgUHJvemVudHNhdHosIHVtIGRlbiBzaWNoIGRpZSBHaWxkZW5za2lsbHMgdmVyc2NobGVjaHRlcm4KKworREVGSU5JRVJUIElOOgorICAgIC9zdGQvZ2lsZGVuX29iLmMKKworQkVTQ0hSRUlCVU5HOgorICAgIEF1c3RyaXR0c2Z1bmt0aW9uIGRlciBHaWxkZS4gUHJ1ZWZ0IGRpZSBSZXN0cmlrdGlvbmVuIGRlciBHaWxkZSB1bmQKKyAgICBsYWVzc3QgdGhpc19wbGF5ZXIoKSBnZ2YgYXVzdHJldGVuLiBEYXMgQXVzdHJldGVuIGF1cyBkZXIgU3RhbmRhcmQtCisgICAgZ2lsZGUgaXN0IGRhYmVpIG5pY2h0IG1vZWdsaWNoLgorCisgICAgRGVyIEdpbGRlbm1hc3RlciBsb2VzdCBnZ2YgZWluIEVWVF9HVUlMRF9DSEFOR0UgYXVzLiBEYWJlaSB3ZXJkZW4KKyAgICBFX09CSkVDVCwgRV9HVUlMRE5BTUUsIEVfTEFTVF9HVUlMRE5BTUUgZW50c3ByZWNoZW5kIGdlc2V0enQuCisKKyAgICBEZXIgR2lsZGVubWFzdGVyIHNlbmt0IGF1Y2ggZGllIFNraWxsL1NwZWxsLUZhZWhpZ2tlaXRlbiB1bSAnbG9zcycgYnp3LgorICAgIG5vcm1hbGVyd2Vpc2UgbWluZGVzdGVucyAyMCUuCisKKyAgICBEdXJjaCBVZWJlcnNjaHJlaWJlbiBrb2VubmVuIGhpZXIgekIgQWJzY2hpZWRzbWVsZHVuZ2VuIGdlc2VuZGV0IHdlcmRlbi4KKworU0lFSEUgQVVDSDoKKyAgICBHT2JqIExlcm5lbjogICAgTGVhcm5Ta2lsbCwgTGVhcm5TcGVsbCwgSW5pdGlhbFNraWxsQWJpbGl0eQorICAgICogQW56ZWlnZW46ICAgICBTa2lsbExpc3RlCisgICAgKiBWZXJ3YWx0ZW46ICAgIEFkZFNwZWxsIChnaWxkZSksIEFkZFNraWxsLCBRdWVyeVNwZWxsLCBRdWVyeVNraWxsCisgICAgKiBOdXR6ZW46ICAgICAgIFVzZVNwZWxsIChnaWxkZSkKKyAgICAqIFByb3BlcnRpZXM6ICAgUF9HVUlMRF9TS0lMTFMsIFBfR0xPQkFMX1NLSUxMUFJPUFMKKyAgICBHaWxkZW5ma3QuOgorICAgICogRWluL0F1c3RyaXR0OiBiZWl0cmV0ZW4sIGJlaV9vZGVyX2F1c190cmV0ZW4KKyAgICAqIFByb3BzIGRhZnVlcjogUF9HVUlMRF9SRVNUUklDVElPTlMKKworMy4gT2t0IDIwMTEgR2xvaW5zb24KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9kb2MvbGZ1bi9naWxkZS9iZWlfb2Rlcl9hdXNfdHJldGVuIGIvZG9jL2xmdW4vZ2lsZGUvYmVpX29kZXJfYXVzX3RyZXRlbgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4wYTVkZTc4Ci0tLSAvZGV2L251bGwKKysrIGIvZG9jL2xmdW4vZ2lsZGUvYmVpX29kZXJfYXVzX3RyZXRlbgpAQCAtMCwwICsxLDI1IEBACitiZWlfb2Rlcl9hdXNfdHJldGVuKCkKK0ZVTktUSU9OOgorICAgIGludCBiZWlfb2Rlcl9hdXNfdHJldGVuKHN0cmluZyBzdHIpCisKK0FSR1VNRU5URToKKyAgICBzdHJpbmcgc3RyICAgICAgIFNwaWVsZXJwYXJhbWV0ZXIKKworREVGSU5JRVJUIElOOgorICAgIC9zdGQvZ2lsZGVuX29iLmMKKworQkVTQ0hSRUlCVU5HOgorICAgIEF1cy0gb2RlciBFaW50cml0dHNmdW5rdGlvbiwgcnVmdCBiZWl0cmV0ZW4oKSBiencuIGF1c3RyZXRlbigpIGF1Zi4KKyAgICBXaXJkIGltIFN0ZC1HaWxkZW5yYXVtIHBlciBBZGRDbWQgenVyIFZlcmZ1ZWd1bmcgZ2VzdGVsbHQuCisKK1NJRUhFIEFVQ0g6CisgICAgR09iaiBMZXJuZW46ICAgIExlYXJuU2tpbGwsIExlYXJuU3BlbGwsIEluaXRpYWxTa2lsbEFiaWxpdHkKKyAgICAqIEFuemVpZ2VuOiAgICAgU2tpbGxMaXN0ZQorICAgICogVmVyd2FsdGVuOiAgICBBZGRTcGVsbCAoZ2lsZGUpLCBBZGRTa2lsbCwgUXVlcnlTcGVsbCwgUXVlcnlTa2lsbAorICAgICogTnV0emVuOiAgICAgICBVc2VTcGVsbCAoZ2lsZGUpCisgICAgKiBQcm9wZXJ0aWVzOiAgIFBfR1VJTERfU0tJTExTLCBQX0dMT0JBTF9TS0lMTFBST1BTCisgICAgR2lsZGVuZmt0LjoKKyAgICAqIEVpbi9BdXN0cml0dDogYmVpdHJldGVuLCBhdXN0cmV0ZW4KKyAgICAqIFByb3BzIGRhZnVlcjogUF9HVUlMRF9SRVNUUklDVElPTlMKKworMy4gT2t0IDIwMTEgR2xvaW5zb24KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9kb2MvbGZ1bi9naWxkZS9iZWl0cmV0ZW4gYi9kb2MvbGZ1bi9naWxkZS9iZWl0cmV0ZW4KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMzkzOGY3YgotLS0gL2Rldi9udWxsCisrKyBiL2RvYy9sZnVuL2dpbGRlL2JlaXRyZXRlbgpAQCAtMCwwICsxLDI4IEBACitiZWl0cmV0ZW4oKQorRlVOS1RJT046CisgICAgaW50IGJlaXRyZXRlbigpCisKK0RFRklOSUVSVCBJTjoKKyAgICAvc3RkL2dpbGRlbl9vYi5jCisKK0JFU0NIUkVJQlVORzoKKyAgICBCZWl0cml0dHNmdW5rdGlvbiBkZXIgR2lsZGUuIFBydWVmdCBkaWUgR2lsZGUgc2VsYnN0IGltIEdpbGRlbm1hc3RlciwKKyAgICBkYW5uIGRpZSBSZXN0cmlrdGlvbmVuIGRlciBHaWxkZSB1bmQgbGFlc3N0IHRoaXNfcGxheWVyKCkgZ2dmIGVpbnRyZXRlbi4KKworICAgIERlciBHaWxkZW5tYXN0ZXIgbG9lc3QgZ2dmIGVpbiBFVlRfR1VJTERfQ0hBTkdFIGF1cy4gRGFiZWkgd2VyZGVuCisgICAgRV9PQkpFQ1QsIEVfR1VJTEROQU1FLCBFX0xBU1RfR1VJTEROQU1FIGVudHNwcmVjaGVuZCBnZXNldHp0LgorCisgICAgRHVyY2ggVWViZXJzY2hyZWliZW4ga29lbm5lbiBoaWVyIHpCIFN0YW5kYXJkLVNraWxscyB1bmQgU3BlbGxzIGRlbgorICAgIFNwaWVsZXIgYmVpIEVpbnRyaXR0IGdlbGVocnQgd2VyZGVuLgorCitTSUVIRSBBVUNIOgorICAgIEdPYmogTGVybmVuOiAgICBMZWFyblNraWxsLCBMZWFyblNwZWxsLCBJbml0aWFsU2tpbGxBYmlsaXR5CisgICAgKiBBbnplaWdlbjogICAgIFNraWxsTGlzdGUKKyAgICAqIFZlcndhbHRlbjogICAgQWRkU3BlbGwgKGdpbGRlKSwgQWRkU2tpbGwsIFF1ZXJ5U3BlbGwKKyAgICAqIE51dHplbjogICAgICAgVXNlU3BlbGwgKGdpbGRlKQorICAgICogUHJvcGVydGllczogICBQX0dVSUxEX1NLSUxMUywgUF9HTE9CQUxfU0tJTExQUk9QUworICAgIEdpbGRlbmZrdC46CisgICAgKiBFaW4vQXVzdHJpdHQ6IGJlaV9vZGVyX2F1c190cmV0ZW4sIGF1c3RyZXRlbgorICAgICogUHJvcHMgZGFmdWVyOiBQX0dVSUxEX1JFU1RSSUNUSU9OUworCiszLiBPa3QgMjAxMSBHbG9pbnNvbgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2RvYy9sZnVuL2dpdmUgYi9kb2MvbGZ1bi9naXZlCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjM5YTI2MjQKLS0tIC9kZXYvbnVsbAorKysgYi9kb2MvbGZ1bi9naXZlCkBAIC0wLDAgKzEsNDMgQEAKK2dpdmUoKQorCitGVU5LVElPTjoKKyAgICBwdWJsaWMgdmFyYXJncyBpbnQgZ2l2ZShvYmplY3Qgbywgb2JqZWN0IGRlc3QsIG1peGVkIG1zZyk7CisKK0RFRklOSUVSVCBJTjoKKyAgICAvc3RkL2xpdmluZy9wdXRfYW5kX2dldC5jCisKK0FSR1VNRU5URToKKyAgICBvYmplY3QgbworICAgICAgICBEYXMgT2JqZWt0LCBkYXMgdWViZXJnZWJlbiB3ZXJkZW4gc29sbC4KKyAgICBvYmplY3QgZGVzdAorICAgICAgICBEZXIgU3BpZWxlciBvZGVyIE5QQywgZGVyIGRhcyBPYmpla3QgYmVrb21tZW4gc29sbC4KKyAgICBtaXhlZCBtc2cKKyAgICAgICAgRWluZSBvcHRpb25hbGUgTWVsZHVuZywgZGllIGFuc3RlbGxlIHZvbiBQX0dJVkVfTVNHIG9kZXIgZGVyCisgICAgICAgIFN0YW5kYXJkbWVsZHVuZyB2ZXJ3ZW5kZXQgd2lyZCwgb2RlciAtMSwgdW0gZGllIE1lbGR1bmcgenUKKyAgICAgICAgdW50ZXJkcnVlY2tlbi4KKworQkVTQ0hSRUlCVU5HOgorICAgIERlciBTcGllbGVyIG9kZXIgTlBDIHVlYmVyZ2lidCBkZW0gRW1wZmFlbmdlciBkYXMgT2JqZWt0LiBHaWJ0IG8tPm1vdmUoKQorICAgIGtlaW5lbiBwb3NpdGl2ZW4gV2VydCB6dXJ1ZWNrLCBiZWlzcGllbHN3ZWlzZSB3ZWlsIGRhcyBPYmpla3QgdmVyZmx1Y2h0CisgICAgaXN0IG9kZXIgZGVyIEVtcGZhZW5nZXIgZXMgbmljaHQgbWVociB0cmFnZW4ga2FubiwgYmVrb21tdCBlciBlaW5lCisgICAgZW50c3ByZWNoZW5kZSBGZWhsZXJtZWxkdW5nLgorCitSVUVDS0dBQkVXRVJUOgorICAgIFdlbm4gZGllIFVlYmVyZ2FiZSBnZWtsYXBwdCBoYXQsIDEsIGFuc29uc3RlbiAwLgorCitCRU1FUktVTkc6CisgICAgRGllc2UgRnVua3Rpb24gaXN0IGRhbm4gc2lubnZvbGwsIHdlbm4gbWFuIGRlbiBTcGllbGVyIGVpbiBPYmpla3QKKyAgICB3ZWl0ZXJnZWJlbiBsYXNzZW4gdW5kIHNpY2ggbmljaHQgc2VsYnN0IHVtIGRpZSBGZWhsZXJiZWhhbmRsdW5nIGt1ZW1tZXJuCisgICAgbW9lY2h0ZSAtIHVuZCBkYSB1bnphZWhsaWdlIHZlcnNjaGllZGVuZSBEaW5nZSBzY2hpZWZnZWhlbiBrb2VubmVuIHVuZAorICAgIG1hbmNoZSBPYmpla3RlIGVpZ2VuZSBGZWhsZXJtZWxkdW5nZW4gZGVmaW5pZXJlbiwgZWlnZW50bGljaCBpbW1lci4KKworICAgIERpZSBGdW5rdGlvbiBwcnVlZnQgbmljaHQsIG9iIGRlciBTcGllbGVyL05QQyBkZXIgT2JqZWt0IHVlYmVyaGF1cHQgaGF0LAorICAgIGRhcyBtdXNzIG1hbiBnZ2YuIHNlbGJzdCBlcm1pdHRlbG4uCisKK1NJRUhFIEFVQ0g6CisgICAgbW92ZShMKSwgUF9HSVZFX01TRywgZ2l2ZV9vYmplY3RzKEwpLCBnaXZlX25vdGlmeShMKSwKKyAgICBQX05PSU5TRVJUX01TRywgUF9OT0xFQVZFX01TRywgUF9UT09fTUFOWV9NU0csCisgICAgUF9UT09fSEVBVllfTVNHLCBQX0VOVl9UT09fSEVBVllfTVNHLCBQX05PRFJPUAorCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCitMYXN0IG1vZGlmaWVkOiBUaHUgQXVnIDI4IDIyOjIxOjE5IDIwMDggYnkgQW15bnRob3IKZGlmZiAtLWdpdCBhL2RvYy9sZnVuL2dpdmVfbm90aWZ5IGIvZG9jL2xmdW4vZ2l2ZV9ub3RpZnkKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMDEwZDY4ZQotLS0gL2Rldi9udWxsCisrKyBiL2RvYy9sZnVuL2dpdmVfbm90aWZ5CkBAIC0wLDAgKzEsNTkgQEAKK2dpdmVfbm90aWZ5KCkKK0ZVTktUSU9OOgorICAgICB2b2lkIGdpdmVfbm90aWZ5KG9iamVjdCBvYmopOworCitERUZJTklFUlQgSU46CisgICAgIC9zdGQvbnBjL3B1dF9hbmRfZ2V0LmMKKworQVJHVU1FTlRFOgorICAgICBvYmoKKyAgICAgICBhbiBkZW4gTlBDIHVlYmVyZ2ViZW5lcyBPYmpla3QKK1JVZUNLR0FCRVdFUlQ6CisgICAgIGtlaW5lcgorCitCRVNDSFJFSUJVTkc6CisgICAgIERpZXNlIEZ1bmt0aW9uIHdpcmQgYXV0b21hdGlzY2ggaW1tZXIgZGFubiBhdWZnZXJ1ZmVuLCB3ZW5uIGVpbgorICAgICBMZWJld2VzZW4gKHdlbGNoZXMga2VpbiBTcGllbGVyY2hhcmFrdGVyIGlzdCkgZWluIE9iamVrdCB1ZWJlcmdlYmVuCisgICAgIGJla29tbXQuIERpZXMgbXVzcyBqZWRvY2ggdWViZXIgZGllIEZ1bmt0aW9uYWxpdGFldCB2b24KKyAgICAgcHV0X2FuZF9nZXQuYyBnZXNjaGVoZW4gc2VpbiwgaW5uZXJoYWxiIHZvbiBtb3ZlKCkgd2lyZCBkaWUgRnVua3Rpb24KKyAgICAgbmljaHQgYXVmZ2VydWZlbiEKKworQkVJU1BJRUw6CisgICAgIE9mdG1hbHMgd2lsbCBtYW4gaW4gUXVlc3RzIGVycmVpY2hlbiwgZGFzcyBlaW5lbSBOUEMgZWluIGJlc3RpbW10ZXMKKyAgICAgSXRlbSBhbHMgQmV3ZWlzIGRlciBFcmZ1ZWxsdW5nIGVpbmVyIGJlc3RpbW10ZW4gQXVmZ2FiZSB1ZWJlcmJyYWNodAorICAgICB3aXJkLiBGb2xnZW5kZXJtYXNzZSBrYW5uIGRpZXMgcmVhbGlzaWVydCB3ZXJkZW46CisgICAgIHZvaWQgY3JlYXRlKCkgeworICAgICAgIDo6Y3JlYXRlKCk7CisgICAgICAgLi4uCisgICAgICAgU2V0UHJvcChQX1JFSkVDVCwoe1JFSkVDVF9HSVZFLAorICAgICAgICAgTmFtZShXRVIpKyIgc2FndDogRGFzIGJyYXVjaGUgaWNoIG5pY2h0IVxuIn0pKTsKKyAgICAgICAuLi4KKyAgICAgfQorCisgICAgIHZvaWQgcXVlc3Rfb2sob2JqZWN0IG9iaikgeyAuLi4KKyAgICAgICAvLyBWZXJuaWNodHVuZyBkZXMgUXVlc3RvYmpla3RlcyB1bmQgUXVlc3R0ZXh0ZQorICAgICAgIC8vIFF1ZXN0YmVsb2hudW5nIHVuZCBRdWVzdGFuZXJrZW5udW5nCisgICAgIH0KKworICAgICB2b2lkIGdpdmVfbm90aWZ5KG9iamVjdCBvYmopIHsKKyAgICAgICBpZihvYmotPmlkKCJcbnF1ZXN0aXRlbSIpKSAvLyBRdWVzdGl0ZW0gYmVrb21tZW4/CisgICAgICAgICBxdWVzdF9vayhvYmopOworICAgICAgIGVsc2UKKyAgICAgICAgIDo6Z2l2ZV9ub3RpZnkob2JqKTsgIC8vIFBfUkVKRUNUIHNvbGwgc29uc3QgZ3JlaWZlbgorICAgICB9CisgICAgIERlciBBdWZydWYgdm9uIDo6Z2l2ZV9ub3RpZnkoKSBzdGVsbHQgc2ljaGVyLCBkYXNzIGVpbiBPYmpla3QKKyAgICAgenVydWVja2dlZ2ViZW4gd2lyZCwgc29mZXJuIGVzIG5pY2h0IGRhcyBnZXN1Y2h0ZSBpc3QuIEVycmVpY2h0IHdpcmQKKyAgICAgZGllcyB1ZWJlciBQX1JFSkVDVCAoc2llaGUgQmVtZXJrdW5nZW4pLgorCitCRU1FUktVTkdFTjoKKyAgICAgU3BlemllbGwgaW4gTlBDcyBpc3QgZGllc2UgRnVua3Rpb24gbm9ybWFsZXJ3ZWlzZSBkYWZ1ZXIKKyAgICAgdmVyYW50d29ydGxpY2gsIGRhc3MgbWl0dGVscyBkZXIgUHJvcGVydHkgUF9SRUpFQ1QgZGllIEFubmFobWUgdm9uCisgICAgIE9iamVrdGVuIHZlcndlaWdlcnQgd2VyZGVuIGthbm4uIFVlYmVyc2NocmVpYnQgbWFuIHNpZSwgc28gc29sbHRlCisgICAgIG1hbiBnZWdlYmVuZW5mYWxscyBkYXJhdWYgYWNodGVuLCBkYXNzIGRpZXNlIFN0YW5kYXJkZnVua3Rpb24KKyAgICAgZWJlbmZhbGxzIGF1ZmdlcnVmZW4gd2lyZC4KKworU0lFSEUgQVVDSDoKKyAgICAgUF9SRUpFQ1QsIHNob3dfbm90aWZ5KCksIAorICAgICAvc3RkL25wYy9wdXRfYW5kX2dldC5jLCAvc3RkL2xpdmluZy9wdXRfYW5kX2dldC5jCisKKzIyLiBPa3RvYmVyIDIwMTMsIEFyYXRob3JuLgpkaWZmIC0tZ2l0IGEvZG9jL2xmdW4vZ2l2ZV9vYmogYi9kb2MvbGZ1bi9naXZlX29iagpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41OWY4Yzk5Ci0tLSAvZGV2L251bGwKKysrIGIvZG9jL2xmdW4vZ2l2ZV9vYmoKQEAgLTAsMCArMSwyNyBAQAorZ2l2ZV9vYmooKQorCitGVU5LVElPTgorICAgIGludCBnaXZlX29iaihvYmplY3Qgb2IsIG9iamVjdCB3aGVyZSkKKworREVGSU5JRVJUIElOOgorCisgICAgL3N0ZC9saXZpbmcvcHV0X2FuZF9nZXQuYworCitBUkdVTUVOVEU6CisKKyAgICBvYiAgICAgIERhcyBPYmpla3QsIGRhcyBhYmdlZ2ViZW4gd2VyZGVuIHNvbGwuCisgICAgd2hlcmUgICBEYXMgTGViZXdlc2VuLCBkYXNzIGRhcyBPYmpla3QgZXJoYWVsdC4KKworQkVTQ0hSRUlCVU5HOgorCisgICAgRGFzIExlYmV3ZXNlbiwgaW4gZGVtIGRpZXNlIEZ1bmt0aW9uIGF1ZmdlcnVmZW4gd2VyZGVuIHNvbGwsIGdpYnQKKyAgICBkZW4gYW5nZWdlYmVuZW4gR2VnZW5zdGFuZCAob2IpIGFuIGRhcyBhbmdlZ2ViZW5lIExlYmV3ZXNlbiAod2hlcmUpLgorCitSVWVDS0dBQkVXRVJUOgorICAgIDEsIHdlbm4gZGFzIE9iamVrdCB1ZWJlcmdlYmVuIHd1cmRlIG9kZXIgZGllIFVlYmVyZ2FiZSBuaWNodCBtb2VnbGljaCB3YXIuCisgICAgKGluIGRpZXNlbSBGYWxsIHdpcmQgYXVjaCBkaXJla3QgZWluZSBUZXh0YXVzZ2FiZSBhdXNnZWdlYmVuKQorICAgIDAgc29uc3QsIGluIGRpZXNlbSBGYWxsIHdpcmQgaW4gbm90aWZ5X2ZhaWwgZWluZSBwYXNzZW5kZSBBdXNnYWJlIHBsYXppZXJ0LgorCitTSUVIRSBBVUNIOgorCisgICAgcGlja19vYmooKSwgZHJvcF9vYmooKSwgcHV0X29iaigpLCBmaW5kX29icygpLCAvc3RkL2xpdmluZy9wdXRfYW5kX2dldC5jCmRpZmYgLS1naXQgYS9kb2MvbGZ1bi9oZWFsX3NlbGYgYi9kb2MvbGZ1bi9oZWFsX3NlbGYKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNWY2MDU0NwotLS0gL2Rldi9udWxsCisrKyBiL2RvYy9sZnVuL2hlYWxfc2VsZgpAQCAtMCwwICsxLDQ5IEBACitoZWFsX3NlbGYoKQorCitGVU5LVElPTjoKKyAgICB2b2lkIGhlYWxfc2VsZihpbnQgcG9pbnRzKTsKKworQVJHVU1FTlRFOgorICAgIHBvaW50czogRGllIGRlbSBMZWJld2VzZW4genVrb21tZW5kZSBIZWlsdW5nLgorCitCRVNDSFJFSUJVTkc6CisgICAgRGVtIExlYmV3ZXNlbiB3ZXJkZW4gcG9pbnRzIExlYmVucy0gdW5kIEtvbnplbnRyYXRpb25zcHVua3RlIAorICAgIGd1dGdlc2NocmllYmVuIHVuZCBhdWYgZGllIGFrdHVlbGxlbiBhZGRpZXJ0LiBFcyB3ZXJkZW4gYWJlciBuaWNodAorICAgIGRpZSBtYXhpbWFsZW4gV2VydGUgdWViZXJzY2hyaXR0ZW4uCisKK1JVRUNLR0FCRVdFUlQ6CisgICAgS2VpbmVyCisKK0JFSVNQSUVMRToKKyAgICAKKyAgICBBZGRDbWQoInBmbHVlY2smYmVlcmUiLCJwZmx1ZWNrZV9jbWQiLCJXYXMgbW9lY2h0ZXN0IER1IHBmbHVlY2tlbj8iKTsKKworICAgIGludCBwZmx1ZWNrZV9jbWQoc3RyaW5nIHN0cil7CisgICAgICAgIHdyaXRlKCJEdSBwZmx1ZWNrc3QgZWluZSBCZWVyZSwgaXNzdCBzaWUgdW5kIGZ1ZWhsc3QgRGljaCBnbGVpY2ggIgorICAgICAgICAgICAgICsidmllbCBiZXNzZXIuXG4iKTsKKyAgICAgICAgdGhpc19wbGF5ZXIoKS0+aGVhbF9zZWxmKDMwKTsKKyAgICAgICAgcmV0dXJuIDE7CisgICAgfQorCisgICAgRGVyIFNwaWVsZXIgYmVrb21tdCBoaWVyIHBybyBCZWVyZSBkaWUgZXIgcGZsdWVja3QgdW5kIGlzc3QgamUgMzAgTFAvS1AKKyAgICB6dSBzZWluZW4gbW9tZW50YW5lbi4KKworQkVNRVJLVU5HRU46IAorICAgIGhlYWxfc2VsZiB3aXJkIGdlcm5lIGZ1ZXIgSGVpbHN0ZWxsZW4gaW4gR2ViaWV0ZW4gZ2Vub21tZW4sIGluIGRlbmVuIGVpbgorICAgIFNwaWVsZXIgZGllc2UgSGVpbHVuZyBhdWNoIHdpcmtsaWNoIGJyYXVjaHQuIERlbm5vY2ggaXN0IGRlciBFaW5zYXR6IHVuLQorICAgIGJlZGluZ3QgbWl0IGRlciBIZWlsdW5nc2JhbGFuY2UgYWJ6dXNwcmVjaGVuIHVuZCBkYXJhdWYgenUgYWNodGVuLCBkYXNzCisgICAgcHJvIHJlc2V0KCkgbnVyIGVpbmUgYmVzdGltbXRlIEFuemFobCBhbiBIZWlsdW5nZW4gYXVzZ2VnZWJlbiB3ZXJkZW4uCisKKyAgICBCZWkgSGVpbHN0ZWxsZW4gc29sbHRlIGVpbmUgZXZ0bC4gSGVpbHVuZyBkZXMgU3BpZWxlcnMgbWl0IGRlciBlaWdlbnMKKyAgICBkYWZ1ZXIgZWluZ2VyaWNodGV0ZW4gRnVua3Rpb24gY2hlY2tfYW5kX3VwZGF0ZV90aW1lZF9rZXkgcmVhbGlzaWVydAorICAgIHdlcmRlbi4KKworU0lFSEUgQVVDSDoKKyAgICBWZXJ3YW5kdDogICByZXN0b3JlX3NwZWxsX3BvaW50cywgcmVzdG9yZV9oaXRfcG9pbnRzLCBidWZmZXJfaHAKKwkJYnVmZmVyX3NwLCBjaGVja19hbmRfdXBkYXRlX3RpbWVkX2tleQorICAgIEdlZ2VucGFydHM6IGRvX2RhbWFnZSwgcmVkdWNlX2hpdF9wb2ludHMsIHJlZHVjZV9zcGVsbF9wb2ludHMKKyAgICBQcm9wczogICAgICBQX0hQLCBQX1NQCisgICAgS29uemVwdDogICAgaGVpbHVuZworCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCitMYXN0IG1vZGlmaWVkOiAyNy4wNS4yMDA3IGJ5IEVubm94CmRpZmYgLS1naXQgYS9kb2MvbGZ1bi9oZWFydF9iZWF0IGIvZG9jL2xmdW4vaGVhcnRfYmVhdApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi42YTMxNGJkCi0tLSAvZGV2L251bGwKKysrIGIvZG9jL2xmdW4vaGVhcnRfYmVhdApAQCAtMCwwICsxLDQyIEBACitoZWFydF9iZWF0KCkKKworRlVOS1RJT046CisgICAgIHByb3RlY3RlZCB2b2lkIGhlYXJ0X2JlYXQoKTsKKworREVGSU5JRVJUIElOOgorICAgICAvc3RkL2xpdmluZy9saWZlLmMKKyAgICAgL3N0ZC9saXZpbmcvY29tYmF0LmMKKyAgICAgdW5kIGFuZGVyZW4uLi4KKyAgICAga2FubiBhdWNoIGluIGJlbGllYmlnZW4gT2JqZWt0ZW4gc2VsYnN0IGRlZmluaWVydCB3ZXJkZW4uCisKK0JFU0NIUkVJQlVORzoKKyAgICAgRGllc2UgRnVua3Rpb24gd2lyZCBhbGxlIHp3ZWkgU2VrdW5kZW4gdm9tIEdhbWVEcml2ZXIgYXVmZ2VydWZlbi4gU2llCisgICAgIHJlZ2VsdCBpbiBkZXIgTUctTXVkTGliIGRhcyBIZWlsZW4gdm9uIFNwaWVsZXJuIHVuZCBNb25zdGVybiwgZGVuCisgICAgIEFibGF1ZiB2b24gS2FtcGZydW5kZW4sIGRpZSBWZXJkYXV1bmcgZXRjLgorCisgICAgIERhIGhlYXJ0X2JlYXQoKSB6aWVtbGljaCB2aWVsZSBSZXNzb3VyY2VuIGRlcyBHYW1lRHJpdmVycyB2ZXJicmFldCwKKyAgICAgc29sbHRlIG1hbiBPYmpla3RlIG1pdCBoZWFydF9iZWF0KCkgbnVyIHNvIHNlbHRlbiB3aWUgbW9lZ2xpY2gKKyAgICAgYmVudXR6ZW4hIFVuZCBzZWxic3QgZGFubiBzb2xsdGUgZGVyIGhlYXJ0X2JlYXQoKSBuaWNodCBkaWUgZ2FuemUgWmVpdAorICAgICB1ZWJlciBsYXVmZW4sIHNvbmRlcm4gc2ljaCBzbyBiYWxkIHdpZSBtb2VnbGljaCBhYnNjaGFsdGVuLgorCisgICAgIERhcyBFaW4tIHVuZCBBdXNzY2hhbHRlbiBkZXMgaGVhcnRfYmVhdCgpcyBlcmZvbGd0IG1pdAorICAgICBzZXRfaGVhcnRfYmVhdCgpLgorCitCRU1FUktVTkdFTjoKKyAgICAgMS4gVGV1ZXIsIHRldWVyLCB0ZXVlciEKKyAgICAgMi4gU29sbCBldWVyIFZpZWNoIHBybyAiZWNodGVtIiBIZWFydGJlYXQgbWVocmVyZSBLYW1wZnJ1bmRlbiBoYWJlbiwKKyAgICAgICAgYmVudXR6dCBkYWZ1ZXIgU0FfU1BFRUQgdW5kIHJ1ZnQgYXVmIGdhciBrZWluZW4gRmFsbCBtZWhyZmFjaCAKKyAgICAgICAgOjpoZWFydF9iZWF0KCkgYXVmLiBBbHNvIF9OSUNIVF8KKyAgICAgICAgdm9pZCBoZWFydF9iZWF0KCkgeworICAgICAgICAgICAgOjpoZWFydF9iZWF0KCk7CisgICAgICAgICAgICA6OmhlYXJ0X2JlYXQoKTsgfQorICAgICAgICBzb25kZXJuOgorICAgICAgICBTZXRQcm9wKFBfU0tJTExfQVRUUklCVVRFX09GRlNFVFMsIChbU0FfU1BFRUQ6IDIwMF0pICk7CisKK1NJRUhFIEFVQ0g6CisgICAgIEVmdW5zOiAgICAgc2V0X2hlYXJ0X2JlYXQoKSwgYWJzb2x1dGVfaGJfY291bnQoKSwgc2V0X25leHRfcmVzZXQoKQorICAgICBGZWhsZXI6ICAgIG1ha2VfaW1tb3J0YWwoTCkKKworLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorMjIuMy4yMDA4LCBaZXNzdHJhCisKZGlmZiAtLWdpdCBhL2RvYy9sZnVuL2lkIGIvZG9jL2xmdW4vaWQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uN2NmNWFlZAotLS0gL2Rldi9udWxsCisrKyBiL2RvYy9sZnVuL2lkCkBAIC0wLDAgKzEsNzYgQEAKK2lkKCkKKworRlVOS1RJT046CisgICAgIHZhcmFyZ3MgaW50IGlkKHN0cmluZyBzdHIsIGludCBsdmwpOworCitERUZJTklFUlQgSU46CisgICAgIC9zdGQvdGhpbmcvZGVzY3JpcHRpb24uYworICAgICAvc3RkL3BsYXllci9iYXNlLmMKKworQVJHVU1FTlRFOgorICAgICBzdHJpbmcgc3RyCisgICAgICAgICAgU3RyaW5nLCBhdWYgZGVuIGdldGVzdGV0IHdlcmRlbiBzb2xsLgorICAgICBpbnQgbHZsCisgICAgICAgICAgSW4gL3N0ZC9wbGF5ZXIvYmFzZS5jIGJlbnV0enQuIFdlbm4gZGVyIFNwaWVsZXIgdW5zaWNodGJhciBpc3QKKyAgICAgICAgICB1bmQgbHZsIGtsZWluZXIgaXN0IGFscyBzZWluIExldmVsLCB3aXJkIDAgenVydWVja2dlZ2ViZW4uCisKK0JFU0NIUkVJQlVORzoKKyAgICAgRXMgd2lyZCBnZXBydWVmdCwgb2Igc2ljaCBkYXMgT2JqZWt0IG1pdCBzdHIgYW5zcHJlY2hlbiBsYWVzc3QuIERhenUKKyAgICAgd2lyZCBzdHIgbWl0IGRlbSBJbmhhbHQgZGVyIFByb3BlcnR5IFBfSURTIHZlcmdsaWNoZW4uIEZhbGxzCisgICAgIFBfQURKRUNUSVZFUyBnZXNldHp0IGlzdCwgd2VyZGVuIGF1Y2ggYWxsZSBBZGpla3RpdmtvbWJpbmF0aW9uZW4gbWl0CisgICAgIGRlbiBCZXplaWNobmVybiBnZXBydWVmdC4KKworICAgICBCZXNvbmRlcmUgQmVkZXV0dW5nIGhhdCBkaWVzZSBGdW5rdGlvbiBiZWkgTWVuZ2Vub2JqZWt0ZW46IEFuaGFuZCB2b24KKyAgICAgc3RyIHdpcmQgdmVybWVya3QsIHdlbGNoZSBNZW5nZSBkZXMgT2JqZWt0ZXMgYW5nZXNwcm9jaGVuIHdpcmQuIEVzCisgICAgIHdlcmRlbiBkYWJlaSBtZWhyZXJlIEZhZWxsZSB1bnRlcnNjaGllZGVuOgorICAgICBvIHN0ciBpc3QgZWluZXIgZGVyIG1pdCBBZGRJZCgpIGFuZ2VnZWJlbmVyIEJlemVpY2huZXIuIEluIGRpZXNlbQorICAgICAgIEZhbGwgaXN0IGRpZSBhbmdlc3Byb2NoZW5lIE1lbmdlIGRpZSBHZXNhbXRtZW5nZS4KKyAgICAgbyBzdHIgaXN0IGVpbmVyIGRlciBtaXQgQWRkU2luZ3VsYXJJZCgpIGFuZ2VnZWJlbmVuIEJlemVpY2huZXIuIERpZQorICAgICAgIGFuZ2VzcHJvY2hlbmUgTWVuZ2UgaXN0IGluIGRpZXNlbSBGYWxsIDEuCisgICAgIG8gc3RyIGlzdCBlaW5lciBkZXIgbWl0IEFkZFBsdXJhbElkKCkgYW5nZWdlYmVuZW4gQmV6ZWljaG5lci4gRGllCisgICAgICAgYW5nZXNwcm9jaGVuZSBNZW5nZSBpc3QgaW4gZGllc2VtIEZhbGwgLiBkaWUgR2VzYW10bWVuZ2UuCisgICAgIG8gSGF0IHN0ciBkaWUgRm9ybSAiPG4+IDxpZD4iLCB3b2JlaSA8bj49MSB1bmQgPGlkPiBlaW5lIFNpbmd1bGFySWQKKyAgICAgICBvZGVyIDEgPCA8bj4gPD0gZGVyIEdlc2FtdG1lbmdlIHVuZCA8aWQ+IGVpbmUgUGx1cmFsSWQsIHNvIGlzdCBkaWUKKyAgICAgICBhbmdlc3Byb2NoZW5lIE1lbmdlID0gPG4+LgorICAgICBXaWUgZ2VzYWd0LCBnaWx0IGRpZXMgZWluemlnIHVuZCBhbGxlaW4gYmVpIE1lbmdlbm9iamVrdGVuIQorCitSVWVDS0dBQkVXRVJUOgorICAgICAxLCB3ZW5uIHNpY2ggZGFzIE9iamVrdCB2b24gc3RyIGFuZ2VzcHJvY2hlbiBmdWVobHQsIGFuc29uc3RlbiAwLgorCitCRUlTUElFTEU6CisgICAgIEFuZ2Vub21tZW4sIGVpbiBPYmpla3QgaGFiZSBmb2xnZW5kZSBCZXplaWNobmVyOgorCisgICAgIEFkZElkKCAibXVybWVsIiApOworICAgICBBZGRBZGplY3RpdmUoICJydW5kZSIgKTsKKworICAgICBEYW5uIGxpZWZlcm4gZGllIGFuZ2VnZWJlbmVuIGlkKCktQXVmcnVmZSBmb2xnZW5kZSBFcmdlYm5pc3NlOgorCisgICAgIGlkKCAibXVybWVsIiApOyAgICAgICAgID0+IDEKKyAgICAgaWQoICJydW5kZSBtdXJtZWwiICk7ICAgPT4gMQorICAgICBpZCggImtsZWluZSBtdXJtZWwiICk7ICA9PiAwCisgICAgIGlkKCAicnVuZGVyIGJhbGwiICk7ICAgID0+IDAKKyAgICAgaWQoICJydW5kZSBtdXJtZWwgMiIgKTsgPT4gMSwgd2VubiBkaWVzIGRpZSB6d2VpdGUgTXVybWVsIGluIGRlcgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBnbGVpY2hlbiBVbWdlYnVuZyBpc3QsIGFuc29uc3RlbiAwCisKKyAgICAgQmVpIGVpbmVtIEhhdWZlbiB2b24gMTAwIE11ZW56ZW4gaGFldHRlIG1hbiB6Qi46CisKKyAgICAgQWRkSWQoICJnZWxkIiApOworICAgICBBZGRTaW5ndWxhcklkKCAibXVlbnplIiApOworICAgICBBZGRQbHVyYWxJZCggIm11ZW56ZW4iICk7CisKKyAgICAgTmFjaCBmdWVobGVuIHNpY2ggbmFjaCBkZW4gZm9sZ2VuZGVuIGlkKCktQXVmcnVmZW4gZm9sZ2VuZGUgQW56YWhsZW4KKyAgICAgYW5nZXNwcm9jaGVuOgorCisgICAgIGlkKCAiZ2VsZCIgKTsgICAgICAgPT4gMTAwIE11ZW56ZW4KKyAgICAgaWQoICJtdWVuemUiICk7ICAgICA9PiAxIE11ZW56ZQorICAgICBpZCggIm11ZW56ZW4iICk7ICAgID0+IDEwMCBNdWVuemVuCisgICAgIGlkKCAiMSBtdWVuemUiICk7ICAgPT4gMSBNdWVuemUKKyAgICAgaWQoICI0MiBtdWVuemVuIiApOyA9PiA0MiBNdWVuemVuCisKKyAgICAgaWQoKSBsaWVmZXJ0IGluIGFsbCBkaWVzZW4gRmFlbGxlbiAxIHp1cnVlY2suCisKK1NJRUhFIEFVQ0g6CisgICAgIEFkZElkKCksIEFkZEFkamVjdGl2ZSgpLCBBZGRTaW5ndWxhcklkKCksIEFkZFBsdXJhbElkKCksIHByZXNlbnQoKSwKKyAgICAgbWF0Y2hfaWRzKCksIC9zdGQvdGhpbmcvZGVzY3JpcHRpb24uYywgL3N0ZC91bml0LmMKKworNi4gU2VwIDIwMTIgR2xvaW5zb24KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9kb2MvbGZ1bi9pbml0IGIvZG9jL2xmdW4vaW5pdApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5mOWQwY2FkCi0tLSAvZGV2L251bGwKKysrIGIvZG9jL2xmdW4vaW5pdApAQCAtMCwwICsxLDY1IEBACitpbml0KCkKKworRlVOS1RJT046CisJdm9pZCBpbml0KCk7CisKK0RFRklOSUVSVCBJTjoKKwkvc3RkL3Jvb20vZGVzY3JpcHRpb24uYworCitBUkdVTUVOVEU6CisJa2VpbmUKKworQkVTQ0hSRUlCVU5HOgorCWluaXQoKSB3aXJkIGltbWVyIGRhbm4gYXVmZ2VydWZlbiwgd2VubiBlaW4gbGViZW5kZXMgT2JqZWt0IGluIGRpZQorCU5hZWhlIGFuZGVyZXIgT2JqZWt0ZSBiZXdlZ3Qgd2lyZCBvZGVyIGVpbiBuaWNodCBsZWJlbmRpZ2VzIE9iamVrdAorCWluIGRpZSBOYWVoZSB2b24gTGViZXdlc2VuIGdlbGFuZ3QuIGluaXQoKSB3aXJkIGRhYmVpIGluIGFsbGVuCisJT2JqZWt0ZW4gYXVmZ2VydWZlbiwgYmVpIGRlbmVuIGVzIG5vdHdlbmRpZyBpc3QuCisKKwlEZXIgSGF1cHR6d2VjayBkaWVzZXIgRnVua3Rpb24gYmVzdGVodCBkYXJpbiwgZGVuIE9iamVrdGVuCisJdW50ZXJlaW5hbmRlciBpaHJlIGpld2VpbGlnZW4gQmVmZWhsZSB6dWdhZW5nbGljaCB6dSBtYWNoZW4uCisJV2FlaHJlbmQgZGllcyBpbiBhbmRlcmVuIE11ZExpYnMgZHVyY2ggZWluZSBSZWloZSB2b24KKwlhZGRfYWN0aW9uKCktQXVmcnVmZW4gaW0gUnVtcGYgdm9uIGluaXQoKSBnZXNjaGFoLCBnZXNjaGllaHQgZGllcyBpbgorCWRlciBNRy1NdWRMaWIgYmVpIE9iamVrdGVuLCBkaWUgL3N0ZC90aGluZy9jb21tYW5kcy5jIGVyYmVuCisJIChkYXMgc2luZCB6Qi4gYWxsZSBTdGFuZGFyZG9iamVrdGUpIHF1YXNpIGF1dG9tYXRpc2NoCisJIChkb3J0IHdlcmRlbiBkaWUgQmVmZWhsZSBkYW5uIHBlciBBZGRDbWQoKSBpbSBjcmVhdGUoKSBhbmdlbWVsZGV0LAorCSAgbWFuIHNwYXJ0IHNpY2ggZGllIEltcGxlbWVudGllcnVuZyB2b24gaW5pdCgpIHVuZCBkZW0gTXVkIHNvbWl0CisJICBTcGVpY2hlcikuIERlciBhbmRlcmUgV2VnIGlzdCBhYmVyIG5hdHVlcmxpY2ggaW1tZXIgbm9jaCBtb2VnbGljaC4KKworUlVlQ0tHQUJFV0VSVDoKKwlrZWluZXIKKworQkVNRVJLVU5HRU46CisJRGVyIEFibGF1ZiBkZXIgaW5pdCgpLUtldHRlIGlzdCB3aWUgZm9sZ3Q6CisJbyBJc3QgZGFzIE9iamVrdCBYLCB3ZWxjaGVzIGlucyBaaWVsb2JqZWt0IEQgYmV3ZWd0IHd1cmRlLCBlaW4KKwkgIExlYmV3ZXNlbiwgc28gd2lyZCBpbiBEIGluaXQoKSBhdWZnZXJ1ZmVuLCB3b2JlaSB0aGlzX3BsYXllcigpIGF1ZgorCSAgWCBnZXNldHp0IGlzdC4KKwlvIERhbm4gd2lyZCBmdWVyIGplZGVzIE9iamVrdCBDIGluIEQgZm9sZ2VuZGVzIGF1c2dlZnVlaHJ0OgorCSAgKyBJc3QgQyBlaW4gTGViZXdlc2VuLCBkYW5uIHdpcmQgaW5pdCgpIGluIFggYXVmZ2VydWZlbiwgd29iZWkKKwkgICAgdGhpc19wbGF5ZXIoKSBhdWYgQyBnZXNldHp0IGlzdC4KKwkgICsgSXN0IFggZWluIExlYmV3ZXNlbiwgZGFubiB3aXJkIGluaXQoKSBpbiBDIGF1ZmdlcnVmZW4sIHdvYmVpCisJICB0aGlzX3BsYXllcigpIGF1ZiBYIGdlc2V0enQgaXN0LgorCW8gU2NobGllc3NsaWNoIHdpcmQgaW4gZGVtIEZhbGwsIGRhc3MgRCBsZWJlbmRpZyBpc3QsIGluIFggaW5pdCgpCisJICBhdWZnZXJ1ZmVuLCB3b2JlaSB0aGlzX3BsYXllcigpIGF1ZiBEIGdlc2V0enQgaXN0LgorCitCRUlTUElFTEU6CisJRCBzZWkgZWluIFJhdW0sIGluIGRlbSBzaWNoIGRhcyBMZWJld2VzZW4gTDEgc293aWUgZGllIEdlZ2Vuc3RhZW5kZQorCU4xIHVuZCBOMiBiZWZpbmRlbi4KKwlCZXRyaXR0IGVpbiBTcGllbGVyIFggZGllc2VuIFJhdW0sIHNvIHdlcmRlbiBmb2xnZW5kZSBpbml0KClzCisJYXVmZ2VydWZlbjoKKworCSAgRC0+aW5pdCgpOyAgLy8gdGhpc19wbGF5ZXIoKSA9PSBYCisJICBYLT5pbml0KCk7ICAvLyB0aGlzX3BsYXllcigpID09IEwxCisJICBMMS0+aW5pdCgpOyAvLyB0aGlzX3BsYXllcigpID09IFgKKwkgIE4xLT5pbml0KCk7IC8vIHRoaXNfcGxheWVyKCkgPT0gWAorCSAgTjItPmluaXQoKTsgLy8gdGhpc19wbGF5ZXIoKSA9PSBYCisKKwlHZWxhbmd0IGRhZ2VnZW4gZWluIG5pY2h0bGViZW5kaWdlcyBPYmpla3QgbmFjaCBELCBzbyBzaWVodCBkYXMgR2FuemUKKwl3aWUgZm9sZ3QgYXVzOgorCisJICBYLT5pbml0KCk7ICAgIC8vIHRoaXNfcGxheWVyKCkgPT0gTDEKKworU0lFSEUgQVVDSDoKKwlleGl0KCksIEFkZENtZCgpLCBhZGRfYWN0aW9uKCksCisgIE5vdGlmeUluc2VydCgpCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCitMYXN0IG1vZGlmaWVkOiAwNC4wOC4yMDA3LCBaZXNzdHJhCmRpZmYgLS1naXQgYS9kb2MvbGZ1bi9pbnNlcnRfc2Vuc2l0aXZlX2ludiBiL2RvYy9sZnVuL2luc2VydF9zZW5zaXRpdmVfaW52Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjViNTRkZjQKLS0tIC9kZXYvbnVsbAorKysgYi9kb2MvbGZ1bi9pbnNlcnRfc2Vuc2l0aXZlX2ludgpAQCAtMCwwICsxLDIxIEBACitpbnNlcnRfc2Vuc2l0aXZlX2ludgorRlVOS1RJT046CisgICAgIHZvaWQgaW5zZXJ0X3NlbnNpdGl2ZV9pbnYob2JqZWN0IG9iLCBzdHJpbmcga2V5LAorCQkJICAgICAgIGludCB0aHJlc2hvbGQsIG1peGVkICpvcHQpCisKK0RFRklOSUVSVCBJTjoKKyAgICAgL3N0ZC9jb250YWluZXIvaW52ZW50b3J5LmMKKworQkVTQ0hSRUlCVU5HOgorICAgICBEaWVzZSBGdW5rdGlvbiBzdWNodCwgb2IgYmVpbSBIaW56dWZ1ZWdlbiBlaW5lcyBzZW5zaXRpdmVuIE9iamVrdHMKKyAgICAgc2Nob24gZWluIE9iamVrdCBkYSBpc3QsIGRhc3MgZGllc2VzIGF1c2xvZXN0LgorCitTSUVIRSBBVUNIOgorICAgICBQX1NFTlNJVElWRQorICAgICBJbnNlcnRTZW5zaXRpdmVPYmplY3QsIFJlbW92ZVNlbnNpdGl2ZU9iamVjdAorICAgICBpbnNlcnRfc2Vuc2l0aXZlX2ludl90cmlnZ2VyCisgICAgIFBfU0VOU0lUSVZFX0FUVEFDSywgUF9TRU5TSVRJVkVfSU5WRU5UT1JZLAorICAgICBQX1NFTlNJVElWRV9JTlZFTlRPUllfVFJJR0dFUgorICAgICBDaGVja1NlbnNpdGl2ZUF0dGFjaworCisyOC5KYW4uMjAwMSwgR2xvaW5zb25ATUcKZGlmZiAtLWdpdCBhL2RvYy9sZnVuL2luc2VydF9zZW5zaXRpdmVfaW52X3RyaWdnZXIgYi9kb2MvbGZ1bi9pbnNlcnRfc2Vuc2l0aXZlX2ludl90cmlnZ2VyCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjc2NmYwZjUKLS0tIC9kZXYvbnVsbAorKysgYi9kb2MvbGZ1bi9pbnNlcnRfc2Vuc2l0aXZlX2ludl90cmlnZ2VyCkBAIC0wLDAgKzEsMjEgQEAKK2luc2VydF9zZW5zaXRpdmVfaW52X3RyaWdnZXIKK0ZVTktUSU9OOgorICAgICB2b2lkIGluc2VydF9zZW5zaXRpdmVfaW52X3RyaWdnZXIob2JqZWN0IG9iLCBzdHJpbmcga2V5LAorCQkJCSAgICAgICBpbnQgdGhyZXNob2xkLCBtaXhlZCAqb3B0KQorCitERUZJTklFUlQgSU46CisgICAgIC9zdGQvY29udGFpbmVyL2ludmVudG9yeS5jCisKK0JFU0NIUkVJQlVORzoKKyAgICAgRGllc2UgRnVua3Rpb24gc3VjaHQsIG9iIGVpbiBzZW5zaXRpdmVzIE9iamVrdCBpbSBJbnZlbnRvcnkgaXN0LAorICAgICBkYXMgZHVyY2ggZGllc2VzIChzb2ViZW4gZWluZ2VmdWVndGUpIE9iamVrdCBhdXNnZWxvZXN0IHdpcmQuCisKK1NJRUhFIEFVQ0g6CisgICAgIFBfU0VOU0lUSVZFCisgICAgIEluc2VydFNlbnNpdGl2ZU9iamVjdCwgUmVtb3ZlU2Vuc2l0aXZlT2JqZWN0CisgICAgIGluc2VydF9zZW5zaXRpdmVfaW52CisgICAgIFBfU0VOU0lUSVZFX0FUVEFDSywgUF9TRU5TSVRJVkVfSU5WRU5UT1JZLAorICAgICBQX1NFTlNJVElWRV9JTlZFTlRPUllfVFJJR0dFUgorICAgICBDaGVja1NlbnNpdGl2ZUF0dGFjaworCisyOC5KYW4uMjAwMSwgR2xvaW5zb25ATUcKZGlmZiAtLWdpdCBhL2RvYy9sZnVuL2ludF9sb25nIGIvZG9jL2xmdW4vaW50X2xvbmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNzUxM2U4NwotLS0gL2Rldi9udWxsCisrKyBiL2RvYy9sZnVuL2ludF9sb25nCkBAIC0wLDAgKzEsNjQgQEAKK2ludF9sb25nKCkKK0ZVTktUSU9OOgorICAgICB2YXJhcmdzIHN0cmluZyBpbnRfbG9uZyhtaXhlZCB2aWV3ZXIsIG1peGVkIHZpZXdwb2ludCwgaW50IGZsYWdzKQorCitERUZJTklFUlQgSU46CisgICAgIC9zdGQvcm9vbS9kZXNjcmlwdGlvbi5jCisKK0FSR1VNRU5URToKKyAgICAgbWl4ZWQgdmlld2VyCS0gZGVyIEJldHJhY2h0ZXIgZGVzIFJhdW1lcworICAgICBtaXhlZCB2aWV3cG9pbnQJLSAwL09iamVrdC9BcnJheSBkZXIvZGllIEF1c2dhbmdzcHVua3QoZSkgZGVzCisJCQkgIEJldHJhY2h0ZW5zICh1bmQgZGFtaXQgbmljaHQgc2ljaHRiYXIhKQorICAgICBpbnQgZmxhZ3MJCS0gTW9kaWZpa2F0b3JlbiBmdWVyIGRpZSBBbnplaWdlCisJCQkgIChzaWVoZSAibWFuIG1ha2VfaW52bGlzdCIsIHdpcmQgbWl0IDMgdmVyVU5EZXQhKQorCitCRVNDSFJFSUJVTkc6CisgICAgIEVzIHdpcmQgZGllIEJlc2NocmVpYnVuZyBkZXMgUmF1bWlubmVyZW4gZXJzdGVsbHQuIERhYmVpIHdpcmQgZGllCisgICAgIExhbmdiZXNjaHJlaWJ1bmcgZGVzIFJhdW1lcywgZGllIGVudGhhbHRlbmVuIE9iamVrdGUgKGV4a2x1c2l2ZQorICAgICBhbGxlciB2aWV3cG9pbnRzIChub3JtYWxlcndlaXNlIG51ciBkZXIgQmV0cmFjaHRlcikpIHVuZCBBdXNnYWVuZ2UsCisgICAgIHdlbm4gdm9tIFZpZXdlciBlaW5nZXNjaGFsdGV0IGRhcmdlc3RlbGx0LgorICAgICBGYWxscyBkZXIgUmF1bSBpbm5lcmhhbGIgZWluZXMgYW5kZXJlbiBSYXVtZXMgbGllZ3QgdW5kIHNlbGJzdAorICAgICB0cmFuc3BhcmVudCBpc3QsIHdpZSB6dXNhZXR6bGljaCBkaWUgS3VyemJlc2NocmVpYnVuZyBkZXMgQXVzc2VuLQorICAgICByYXVtZXMgYW5nZXplaWd0LgorCisgICAgIElzdCBWaWV3ZXIgZWluIE1hZ2llciBtaXQgZWluZ2VzY2hhbHRldGVtIE1hZ2llcm1vZHVzLCBzbyB3aXJkIGRlcgorICAgICBCZXNjaHJlaWJ1bmcgZGVyIERhdGVpbmFtZSBkZXMgUmF1bWVzIHZvcmFuZ2VzdGVsbHQuCisKK1JVZUNLR0FCRVdFUlQ6CisgICAgIERpZSBMYW5nYmVzY2hyZWlidW5nIGRlcyBSYXVtZXMgdm9uIGlubmVuLgorCitCRU1FUktVTkdFTjoKKyAgICAgRGllIFRyZW5udW5nIHZvbiB2aWV3ZXIgdW5kIHZpZXdwb2ludCBoYXQgZHVyY2hhdXMgaWhyZW4gU2lubi4gU28gaXN0CisgICAgIGVzIHp1bSBCZWlzcGllbCBtb2VnbGljaCwgZWluZW4gUmF1bSAibWl0IGRlbiBBdWdlbiBlaW5lcyBBbmRlcmVuIiB6dQorICAgICBiZXRyYWNodGVuLiBEYWJlaSBzYWVoZSBtYW4gc2ljaCBzZWxic3QsIHdlbm4gbWFuIGltIFJhdW0gd2FlcmUuCisKK0JFSVNQSUVMRToKKyAgICAgLy8gaW4gZGllc2VtIFJhdW0gc2llaHQgbWFuIGtlaW5lIE1pdHNwaWVsZXIgaW0gInNjaGF1IiBvZGVyIGJlaW0KKyAgICAgLy8gQmV0cmV0ZW4gKHZpZWxsZWljaHQgaXN0IGVzIHp1IG5lYmxpZykKKyAgICAgLy8gZGF6dSB3ZXJkZW4gZWluZmFjaCBhbGxlIEludGVyYWN0aXZlcyB6dSBkZW4gdmlld3BvaW50cyBhZGRpZXJ0CisgICAgIHN0cmluZyBpbnRfbG9uZyhvYmplY3Qgdmlld2VyLCBtaXhlZCB2aWV3cG9pbnRzLCBpbnQgZmxhZ3MpIHsKKyAgICAgIGlmKCFwb2ludGVycCh2aWV3cG9pbnRzKSkgdmlld3BvaW50cz0oe3ZpZXdwb2ludHN9KTsKKyAgICAgIHJldHVybiA6OmludF9sb25nKCZ2aWV3ZXIsCisJCQl2aWV3cG9pbnRzKworCQkJZmlsdGVyKGFsbF9pbnZlbnRvcnkodGhpc19vYmplY3QoKSksCisJCQkJICAgICAjJ2ludGVyYWN0aXZlKSwKKwkJCSZmbGFncyk7CisgICAgIH0KKworICAgICBzdHJpbmcgaW50X3Nob3J0KG9iamVjdCB2aWV3ZXIsIG1peGVkIHZpZXdwb2ludHMpIHsKKyAgICAgIGlmKCFwb2ludGVycCh2aWV3cG9pbnRzKSkgdmlld3BvaW50cz0oe3ZpZXdwb2ludHN9KTsKKyAgICAgIHJldHVybiA6OmludF9zaG9ydCgmdmlld2VyLAorCQkJIHZpZXdwb2ludHMrCisJCQkgZmlsdGVyKGFsbF9pbnZlbnRvcnkodGhpc19vYmplY3QoKSksCisJCQkJICAgICAgIydpbnRlcmFjdGl2ZSkpOworICAgICB9CisKK1NJRUhFIEFVQ0g6CisgICAgIEFlaG5saWNoZXM6CWludF9zaG9ydCgpCisgICAgIFByb3BlcnRpZXM6CVBfSU5UX0xPTkcsIFBfU0hPUlQKKwkJCVBfSElERV9FWElUUywgUF9TSE9XX0VYSVRTCisJCQlQX1RSQU5TUEFSRU5UCisgICAgIEtvbW1hbmRva2V0dGU6CW1ha2VfaW52bGlzdCgpLCBzaG9ydCgpCisgICAgIFNvbnN0aWdlczoJCVBfUkVGRVJFTkNFX09CSkVDVCwgUF9XQU5UU19UT19MRUFSTgorCisxMS4gTWFpIDIwMDQgR2xvaW5zb24KZGlmZiAtLWdpdCBhL2RvYy9sZnVuL2ludF9zaG9ydCBiL2RvYy9sZnVuL2ludF9zaG9ydApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5lNGE4ZDNhCi0tLSAvZGV2L251bGwKKysrIGIvZG9jL2xmdW4vaW50X3Nob3J0CkBAIC0wLDAgKzEsNTggQEAKK2ludF9zaG9ydCgpCitGVU5LVElPTjoKKyAgICAgc3RyaW5nIGludF9zaG9ydChtaXhlZCB2aWV3ZXIsIG1peGVkIHZpZXdwb2ludCk7CisKK0RFRklOSUVSVCBJTjoKKyAgICAgL3N0ZC9yb29tL2Rlc2NyaXB0aW9uLmMKKworQVJHVU1FTlRFOgorICAgICBtaXhlZCB2aWV3ZXIJLSBkZXIgQmV0cmFjaHRlciBkZXMgUmF1bWVzCisgICAgIG1peGVkIHZpZXdwb2ludAktIDAvT2JqZWt0L0FycmF5IGRlci9kaWUgQXVzZ2FuZ3NwdW5rdChlKSBkZXMKKwkJCSAgQmV0cmFjaHRlbnMgKHVuZCBkYW1pdCBuaWNodCBzaWNodGJhciEpCisKK0JFU0NIUkVJQlVORzoKKyAgICAgRXMgd2lyZCBlaW5lIGt1cnplICBCZXNjaHJlaWJ1bmcgZGVzIFJhdW1pbm5lcmVuIGVyc3RlbGx0LiBEYWJlaSB3aXJkCisgICAgIGRpZSBLdXJ6YmVzY2hyZWlidW5nIGRlcyBSYXVtZXMsIGRpZSBlbnRoYWx0ZW5lbiBPYmpla3RlIChleGtsdXNpdmUKKyAgICAgYWxsZXIgdmlld3BvaW50cyAobm9ybWFsZXJ3ZWlzZSBudXIgZGVyIEJldHJhY2h0ZXIpKSB1bmQgQXVzZ2FlbmdlLAorICAgICB3ZW5uIHZvbSBWaWV3ZXIgZWluZ2VzY2hhbHRldCBkYXJnZXN0ZWxsdC4KKworICAgICBJc3QgVmlld2VyIGVpbiBNYWdpZXIgbWl0IGVpbmdlc2NoYWx0ZXRlbSBNYWdpZXJtb2R1cywgc28gd2lyZCBkZXIKKyAgICAgQmVzY2hyZWlidW5nIGRlciBEYXRlaW5hbWUgZGVzIFJhdW1lcyB2b3Jhbmdlc3RlbGx0LgorCitSVWVDS0dBQkVXRVJUOgorICAgICBEaWUgS3VyemJlc2NocmVpYnVuZyBkZXMgUmF1bWVzIHZvbiBpbm5lbi4KKworQkVNRVJLVU5HRU46CisgICAgIERpZSBUcmVubnVuZyB2b24gdmlld2VyIHVuZCB2aWV3cG9pbnQgaGF0IGR1cmNoYXVzIGlocmVuIFNpbm4uIFNvIGlzdAorICAgICBlcyB6dW0gQmVpc3BpZWwgbW9lZ2xpY2gsIGVpbmVuIFJhdW0gIm1pdCBkZW4gQXVnZW4gZWluZXMgQW5kZXJlbiIgenUKKyAgICAgYmV0cmFjaHRlbi4gRGFiZWkgc2FlaGUgbWFuIHNpY2ggc2VsYnN0LCB3ZW5uIG1hbiBpbSBSYXVtIHdhZXJlLgorCitCRUlTUElFTEU6CisgICAgIC8vIGluIGRpZXNlbSBSYXVtIHNpZWh0IG1hbiBrZWluZSBNaXRzcGllbGVyIGltICJzY2hhdSIgb2RlciBiZWltCisgICAgIC8vIEJldHJldGVuICh2aWVsbGVpY2h0IGlzdCBlcyB6dSBuZWJsaWcpCisgICAgIC8vIGRhenUgd2VyZGVuIGVpbmZhY2ggYWxsZSBJbnRlcmFjdGl2ZXMgenUgZGVuIHZpZXdwb2ludHMgYWRkaWVydAorICAgICBzdHJpbmcgaW50X2xvbmcob2JqZWN0IHZpZXdlciwgbWl4ZWQgdmlld3BvaW50cywgaW50IGZsYWdzKSB7CisgICAgICBpZighcG9pbnRlcnAodmlld3BvaW50cykpIHZpZXdwb2ludHM9KHt2aWV3cG9pbnRzfSk7CisgICAgICByZXR1cm4gOjppbnRfbG9uZygmdmlld2VyLAorCQkJdmlld3BvaW50cysKKwkJCWZpbHRlcihhbGxfaW52ZW50b3J5KHRoaXNfb2JqZWN0KCkpLAorCQkJCSAgICAgIydpbnRlcmFjdGl2ZSksCisJCQkmZmxhZ3MpOworICAgICB9CisKKyAgICAgc3RyaW5nIGludF9zaG9ydChvYmplY3Qgdmlld2VyLCBtaXhlZCB2aWV3cG9pbnRzKSB7CisgICAgICBpZighcG9pbnRlcnAodmlld3BvaW50cykpIHZpZXdwb2ludHM9KHt2aWV3cG9pbnRzfSk7CisgICAgICByZXR1cm4gOjppbnRfc2hvcnQoJnZpZXdlciwKKwkJCSB2aWV3cG9pbnRzKworCQkJIGZpbHRlcihhbGxfaW52ZW50b3J5KHRoaXNfb2JqZWN0KCkpLAorCQkJCSAgICAgICMnaW50ZXJhY3RpdmUpKTsKKyAgICAgfQorCitTSUVIRSBBVUNIOgorICAgICBBZWhubGljaGVzOglpbnRfbG9uZygpCisgICAgIFByb3BlcnRpZXM6CVBfSU5UX1NIT1JULCBQX1NIT1JUCisJCQlQX0hJREVfRVhJVFMsIFBfU0hPV19FWElUUworICAgICBLb21tYW5kb2tldHRlOgltYWtlX2ludmxpc3QoKSwgc2hvcnQoKQorICAgICBTb25zdGlnZXM6CQlQX1JFRkVSRU5DRV9PQkpFQ1QsIFBfV0FOVFNfVE9fTEVBUk4KKworMTEuIE1haSAyMDA0IEdsb2luc29uCmRpZmYgLS1naXQgYS9kb2MvbGZ1bi9pc19jbGFzc19tZW1iZXIgYi9kb2MvbGZ1bi9pc19jbGFzc19tZW1iZXIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNzAxOTQ0NwotLS0gL2Rldi9udWxsCisrKyBiL2RvYy9sZnVuL2lzX2NsYXNzX21lbWJlcgpAQCAtMCwwICsxLDE1NSBAQAoraXNfY2xhc3NfbWVtYmVyKCkKK0ZVTktUSU9OOgorICAgICBpbnQgaXNfY2xhc3NfbWVtYmVyKHN0cmluZ3xzdHJpbmcqIGNsYXNzKTsKKworREVGSU5JRVJUIElOOgorICAgICAvc3RkL3RoaW5nL2Rlc2NyaXB0aW9uLmMKKworQVJHVU1FTlRFOgorICAgICBzdHJpbmcvc3RyaW5nKiBjbGFzcwktIFN0cmluZyBvZGVyIFN0cmluZ2FycmF5IGRlciBLbGFzc2UobikKKworQkVTQ0hSRUlCVU5HOgorICAgICBFcyB3aXJkIGdldGVzdGV0LCBvYiBkYXMgT2JqZWt0IGluIGVpbmUgZGVyIGluIGNsYXNzIGFuZ2VnZWJlbmVuCisgICAgIEtsYXNzZW4gZmFlbGx0LiBJbiBkaWVzZW4gVGVzdCB3ZXJkZW4gZGllIGZvbGdlbmRlbiBFaWdlbnNjaGFmdGVuIGRlcworICAgICBPYmpla3RlcyBlaW5iZXpvZ2VuOgorCisgICAgICAgMS4gRGllIFJhc3NlIGRlcyBPYmpla3RlcyAoYmVpIExlYmV3ZXNlbiksCisgICAgICAgMi4gZGllIElEcyBkZXMgT2JqZWt0ZXMgdW5kCisgICAgICAgMy4gZGllIGV4cGxpeml0IGFuZ2VnZWJlbmVuIEtsYXNzZW4gZGVzIE9iamVrdGVzLgorICAgICAgIDQuIGVpbmlnZW4gaW1wbGl6aXRlbiBLbGFzc2VuLCBkaWUgc2ljaCBhdXMgZGVuIEtsYXNzZW4gaW4gMyBlcmdlYmVuLgorCisgICAgIERpZSBtb2VnbGljaGVuIEtsYXNzZW4gc2luZCBpbiAvc3lzL2NsYXNzLmggZGVmaW5pZXJ0LiBNb21lbnRhbiBzdGVoZW4KKyAgICAgZm9sZ2VuZGUgS2xhc3NlbiB6dXIgVmVyZnVlZ3VuZzoKKworICAgICBDTF9BTU1VTklUSU9OCisgICAgICAgICAgRGFzIE9iamVrdCBlaWduZXQgc2ljaCBhbHMgTXVuaXRpb24uCisgICAgIENMX0FOSU1BTAorICAgICAgICAgIERhcyBPYmpla3QgaXN0IGVpbiBUaWVyLgorICAgICBDTF9BUkFDSE5JRAorICAgICAgICAgIERhcyBPYmpla3QgaW4gZWluIFNwaW5uZW53ZXNlbi4KKyAgICAgQ0xfQklHQkFORworICAgICAgICAgIERpZXNlcyBPYmpla3Qga2FubiBtZWhyZXJlbiBMZWJld2VzZW4gYXVmIGVpbm1hbCBTY2hhZGVuIHp1ZnVlZ2VuLgorICAgICBDTF9CSVJECisgICAgICAgICAgRWluIFZvZ2VsLgorICAgICBDTF9DUkFXTElORworICAgICAgICAgIERpZXNlcyBXZXNlbiBiZXdlZ3Qgc2ljaCBrcmllY2hlbmQuCisgICAgIENMX0NVUlNFCisgICAgICAgICAgRGFzIE9iamVrdCBpc3QgZWluIEZsdWNoICh6Qi4gZWluIFNwcmFjaGZsdWNoKS4KKyAgICAgQ0xfREVNT04KKyAgICAgICAgICBCZWkgZGVtIE9iamVrdCBoYW5kZWx0IGVzIHNpY2ggdW0gZWluZW4gRGFlbW9uLgorICAgICBDTF9ESVNFQVNFCisgICAgICAgICAgRWluZSBLcmFua2hlaXQuCisgICAgIENMX0RSQUdPTgorICAgICAgICAgIEVpbiBEcmFjaGUuCisgICAgIENMX0RXQVJGCisgICAgICAgICAgRnVlciB1bnNlcmUga2xlaW5lbiBHYWVzdGUuLi4KKyAgICAgQ0xfRUxGCisgICAgICAgICAgRWxmZW4gYWxsZXIgQXJ0LgorICAgICBDTF9FTEVNRU5UQUwKKyAgICAgICAgICBFaW4gRWxlbWVudGFyIGlyZ2VuZGVpbmVyIEFydC4gTWF0ZXJpYWwgc2V0emVuIHdhZXJlIGFuZ2VicmFjaHQuCisgICAgIENMX0VYUExPU0lWRQorICAgICAgICAgIEJlaSBkZW0gT2JqZWt0IGhhbmRlbHQgZXMgc2ljaCB1bSBlaW5lbiBTcHJlbmdzdG9mZi4KKyAgICAgQ0xfRkVMSU5FCisgICAgICAgICAgRmVsaW5lbiB1bmQgYW5kZXJlIGthdHplbmFydGlnZW4gTGViZXdlc2VuLgorICAgICBDTF9GSVNICisgICAgICAgICAgRmlzY2hlIC0ga2VpbmUgTWVlcmVzc2FldWdlciEKKyAgICAgQ0xfRkxZSU5HCisgICAgICAgICAgRGllc2VzIFdlc2VuIGJld2VndCBzaWNoIGZsaWVnZW5kLgorICAgICBDTF9GUk9HCisgICAgICAgICAgRnJvZXNjaGUgLSBhdWNoIGdlZnJvc2NodGUgU3BpZWxlci4KKyAgICAgQ0xfR0hPU1QKKyAgICAgICAgICBHZWlzdGVyIHVuZCBnZWlzdGVyaGFmdGUgV2VzZW4uCisgICAgIENMX0dIT1VMCisgICAgICAgICAgRWluIEdob3VsLiBFciBmYWVsbHQgYXV0b21hdGlzY2ggaW4gZGllIEtsYXNzZSBDTF9VTkRFQUQuCisgICAgIENMX0dJQU5UCisgICAgICAgICAgRWluIHJpZXNpZ2VzIExlYmV3ZXNlbi4KKyAgICAgQ0xfR05PTUUKKyAgICAgICAgICBFaW4gR25vbS4KKyAgICAgQ0xfR09CTElOCisgICAgICAgICAgRWluIEdvYmxpbi4KKyAgICAgQ0xfSE9CQklUCisgICAgICAgICAgRWluIEhvYmJpdC4KKyAgICAgQ0xfSE9CR09CTElOCisgICAgICAgICAgRWluIEhvYmdvYmxpbi4gRXIgZmFlbGx0IGF1dG9tYXRpc2NoIGF1Y2ggaW4gZGllIEtsYXNzZSBDTF9HT0JMSU4uCisgICAgIENMX0hVTUFOCisgICAgICAgICAgRWluIE1lbnNjaC4KKyAgICAgQ0xfSU5PUkdBTklDCisgICAgICAgICAgQW5vcmdhbmlzY2hlIExlYmV3ZXNlbiB3aWUgTWV0YWxsbW9uc3RlcgorICAgICBDTF9JTlNFQ1QKKyAgICAgICAgICBJbnNla3RlbiAoTmljaHQgbWl0IFNwaW5uZW4gdmVyd2VjaHNlbG4pCisgICAgIENMX0xJVklORworICAgICAgICAgIExlYmV3ZXNlbiBpbSBhbGxnZW1laW5lbi4KKyAgICAgQ0xfTUFNTUFMCisgICAgICAgICAgU2FldWdldGllcmUuCisgICAgIENMX01BTU1BTF9MQU5ECisgICAgICAgICAgTGFuZHNhZXVnZXRpZXJlCisgICAgIENMX01BTU1BTF9XQVRFUgorICAgICAgICAgIE1lZXJlc3NhZXVnZXIuCisgICAgIENMX09SQworICAgICAgICAgIEVpbiBPcmsuCisgICAgIENMX1BMQU5UCisgICAgICAgICAgUGZsYW56ZW4gdW5kIHBmbGFuemVuYXJ0aWdlIE1vbnN0ZXIuCisgICAgIENMX1BPSVNPTgorICAgICAgICAgIERhcyBPYmpla3QgaXN0IHNlbGJzdCBlaW4gR2lmdAorICAgICBDTF9QT0lTT05PVVMKKyAgICAgICAgICBEYXMgT2JqZWt0IGthbm4gZWluZW4gU3BpZWxlci9OUEMgdmVyZ2lmdGVuLgorICAgICBDTF9SRVBUSUxFCisgICAgICAgICAgUmVwdGlsaWVuLgorICAgICBDTF9TSEFET1cKKyAgICAgICAgICBTY2hhdHRlbndlc2VuLgorICAgICBDTF9TS0VMRVRPTgorICAgICAgICAgIEVpbiBTa2VsZXR0LiBFcyBmYWVsbHQgYXV0b21hdGlzY2ggaW4gZGllIEtsYXNzZSBDTF9VTkRFQUQuCisgICAgIENMX1NMSU1FCisgICAgICAgICAgRnVlciBFaW56ZWxsZXIgdW5kIGFlaG5saWNoZXMgU2NobGVpbWdldGllcgorICAgICBDTF9TTkFLRQorICAgICAgICAgIFNjaGxhbmdlbi4KKyAgICAgQ0xfU1dJTU1JTkcKKyAgICAgICAgICBEaWVzZXMgV2VzZW4gYmV3ZWd0IHNpY2ggc2Nod2ltbWVuZC4KKyAgICAgQ0xfVFJPTEwKKyAgICAgICAgICBFaW4gVHJvbGwuCisgICAgIENMX1VOREVBRAorICAgICAgICAgIEVpbiB1bnRvdGVzIExlYmV3ZXNlbi4KKyAgICAgQ0xfV0FMS0lORworICAgICAgICAgIERpZXNlcyBXZXNlbiBiZXdlZ3Qgc2ljaCBnZWhlbmQuCisgICAgIENMX1ZBTVBJUkUKKyAgICAgICAgICBFaW4gVmFtcGlyLiBFciBmYWVsbHQgYXV0b21hdGlzY2ggaW4gZGllIEtsYXNzZSBDTF9VTkRFQUQuCisgICAgIENMX1pPTUJJRQorICAgICAgICAgIEVpbiBab21iaWUuIEVyIGZhZWxsdCBhdXRvbWF0aXNjaCBpbiBkaWUgS2xhc3NlIENMX1VOREVBRC4KKworICAgICBJbXBsaXppdGUgS2xhc3NlbjoKKyAgICAgQmVpIGVpbmlnZW4gS2xhc3NlbiB3aXJkIGltIEFkZENsYXNzKCkgYXV0b21hdGlzY2ggZWluZSBvZGVyIG1laHJlcmUKKyAgICAgd2VpdGVyZXIgS2xhc3NlbiBoaW56dWdlZnVlZ3QgdW5kIGltIFJlbW92ZUNsYXNzKCkgZGllIGVudHNwcmVjaGVuZGVuCisgICAgIGltcGxpeml0ZW4gS2xhc3NlbiBhdWNoIGF1dG9tYXRpc2NoIGVudGZlcm50LgorICAgICBXdWVuc2NodCBtYW4gZGllc2UgaW1wbGl6aXRlbiBLbGFzc2VuIG5pY2h0LCBtdXNzIG1hbiBuYWNoIGRlbSBBZGRDbGFzcygpCisgICAgIGRpZXNlIG1pdHRlbHMgZWluZXMgZW50c3ByZWNoZW5kZW4gUmVtb3ZlQ2xhc3MoKSBlbnRmZXJuZW4uCisgICAgIERpZSBpbXBsaXppdGVuIEtsYXNzZW4gZWluZXIgS2xhc3NlIGxhc3NlbiBzaWNoIG1pdCBIaWxmZSBkZXIgRnVua3Rpb24KKyAgICAgUXVlcnlJbXBsaWNpdENsYXNzZXMoKSBpbiBDTEFTU0RCIGhlcmF1c2ZpbmRlbjoKKyAgICAgICBDTEFTU0RCLT5RdWVyeUltcGxpY2l0Q2xhc3NlcyguLi4pCisgICAgIE1vbWVudGFuIHNpbmQgZGllczoKKyAgICAgQ0xfWk9NQklFOiAgICAgICBDTF9VTkRFQUQKKyAgICAgQ0xfU0tFTEVUT046ICAgICBDTF9VTkRFQUQKKyAgICAgQ0xfR0hPVUw6ICAgICAgICBDTF9VTkRFQUQKKyAgICAgQ0xfVkFNUElSRTogICAgICBDTF9VTkRFQUQKKyAgICAgQ0xfSE9CR09CTElOOiAgICBDTF9HT0JMSU4KKyAgICAgQ0xfTUFNTUFMX0xBTkQ6ICBDTF9NQU1NQUwsIENMX0FOSU1BTAorICAgICBDTF9NQU1NQUxfV0FURVI6IENMX01BTU1BTCwgQ0xfQU5JTUFMCisgICAgIENMX1NOQUtFOiAgICAgICAgQ0xfUkVQVElMRQorICAgICBDTF9BUkFDSE5JRDogICAgIENMX0FOSU1BTAorICAgICBDTF9CSVJEOiAgICAgICAgIENMX0FOSU1BTAorICAgICBDTF9GSVNIOiAgICAgICAgIENMX0FOSU1BTAorICAgICBDTF9GUk9HOiAgICAgICAgIENMX0FOSU1BTAorICAgICBDTF9JTlNFQ1Q6ICAgICAgIENMX0FOSU1BTAorICAgICBDTF9NQU1NQUw6ICAgICAgIENMX0FOSU1BTAorICAgICBDTF9SRVBUSUxFOiAgICAgIENMX0FOSU1BTAorICAgICBDTF9TTkFLRTogICAgICAgIENMX0FOSU1BTAorCitSVWVDS0dBQkVXRVJUOgorICAgICAxLCB3ZW5uIGRhcyBPYmpla3QgaW4gZWluZSBkZXIgYW5nZWdlYmVuZW4gS2xhc3NlbiBmYWVsbHQsIGFuc29uc3RlbiAwLgorCitTSUVIRSBBVUNIOgorICAgICBBZGRDbGFzcygpLCBSZW1vdmVDbGFzcygpLCAvc3RkL3RoaW5nL2Rlc2NyaXB0aW9uLmMKKyAgICAgUF9DTEFTUworCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisyMC4wMS4yMDE1LCBaZXNzdHJhCisKZGlmZiAtLWdpdCBhL2RvYy9sZnVuL2xmdW4gYi9kb2MvbGZ1bi9sZnVuCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmVhZGQ0NWEKLS0tIC9kZXYvbnVsbAorKysgYi9kb2MvbGZ1bi9sZnVuCkBAIC0wLDAgKzEsMTIgQEAKK05BTUU6CisJbGZ1bigpCisKK0RFU0NSSVBUSU9OOgorCVRoaXMgZGlyZWN0b3J5IGNvbnRhaW5zIGRlc2NyaXB0aW9ucyBmb3IgdGhlIGxmdW5zIHVzZWQgYnkKKwlBbXlsYWFyJ3MgdmVyc2lvbiBvZiB0aGUgTFBDIHBhcnNlci4KKworCVRoZXNlIGFyZSBmdW5jdGlvbnMgdGhhdCBhcmUgYXBwbGllZCBieSB0aGUgcGFyc2VyIHRvIHRoZSBMUEMKKwlvYmplY3RzIG9uIHZhcmlvdXMgb2NjYXNpb25zLgorCitTRUUgQUxTTzoKKwllZnVuKEUpLCBtYXN0ZXIoTSksIGNvbmNlcHRzKEMpLCBscGMoTFBDKSwgZHJpdmVyKEQpCmRpZmYgLS1naXQgYS9kb2MvbGZ1bi9sb2NhdGVfb2JqZWN0cyBiL2RvYy9sZnVuL2xvY2F0ZV9vYmplY3RzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjFkNTZlOWEKLS0tIC9kZXYvbnVsbAorKysgYi9kb2MvbGZ1bi9sb2NhdGVfb2JqZWN0cwpAQCAtMCwwICsxLDU0IEBACitsb2NhdGVfb2JqZWN0cygpCisKK0ZVTktUSU9OOgorICAgICBvYmplY3QgKmxvY2F0ZV9vYmplY3RzKHN0cmluZyBkZXNjLCBpbnQgaW5mbyk7CisKK0RFRklOSUVSVCBJTjoKKyAgICAgL3N0ZC9jb250YWluZXIvcmVzdHJpY3Rpb25zLmMKKworQVJHVU1FTlRFOgorICAgICBkZXNjCisgICAgICAgICAgRGllIFVtc2NocmVpYnVuZyBkZXMgZ2VzdWNodGVuIE9iamVrdGVzLgorCisgICAgIGluZm8KKyAgICAgICAgICBJc3QgdW5nbGVpY2ggMCwgd2VubiBkaWVzZSBGdW5rdGlvbiB2b24gL3N0ZC9saXZpbmcvcHV0X2FuZF9nZXQuYworICAgICAgICAgIGF1cyBhdWZnZXJ1ZmVuIHd1cmRlLgorCitCRVNDSFJFSUJVTkc6CisgICAgIERpZXNlIEZ1bmt0aW9uIGVyd2VpdGVydCBkaWUgRnVua3Rpb25hbGl0YWV0IHZvbiBwcmVzZW50X29iamVjdHMoKQorICAgICBpbnNvZmVybiwgYWxzIGRhc3MgZXMgbW9lZ2xpY2ggaXN0LCBhdWNoIG5vY2ggQmVoYWVsdGVyIGlubmVyaGFsYiBkZXMKKyAgICAgQmVoYWVsdGVycyB6dSBkdXJjaHN1Y2hlbi4gRGFzIGdlbmF1ZSBWZXJoYWx0ZW4gaGFlbmd0IHZvbiBkZXNjIGFiOgorCisgICAgIElzdCBkZXNjIHZvbiBkZXIgRm9ybSAiPGlkPiIsIHNvIHdpcmQgZGFzIEVyZ2VibmlzIHZvbgorICAgICBwcmVzZW50X29iamVjdHMoZGVzYykgenVydWVja2dlZ2ViZW4uCisKKyAgICAgSXN0IGRlc2Mgdm9uIGRlciBGb3JtICI8Z2VzdWNodD4gaW4gPGlkPiIsIHNvIHdpcmQgaW4gYWxsZW4gT2JqZWt0ZW4sCisgICAgIGRpZSB2b24gcHJlc2VudF9vYmplY3RzKCI8aWQ+IikgZXJmYXNzdCB3dXJkZW4sCisgICAgIGxvY2F0ZV9vYmplY3RzKCI8ZGVzYz4iKSBhdWZnZXJ1ZmVuLiBadXJ1ZWNrZ2VnZWJlbiB3ZXJkZW4gYWxsZSBhdWYKKyAgICAgZGllc2UgV2Vpc2UgZ2VmdW5kZW5lbiBPYmpla3RlLgorCitSVWVDS0dBQkVXRVJUOgorICAgICBBcnJheSB2b24gT2JqZWt0ZW4sIGRpZSBhdWYgZGllIG9iZW4gZ2VzY2hpbGRlcnRlIEFydCB1bmQgV2Vpc2UKKyAgICAgZXJtaXR0ZWx0IHd1cmRlbi4gS29ubnRlIGtlaW4gT2JqZWt0IGVybWl0dGVsdCB3ZXJkZW4sIHdpcmQgZWluIGxlZXJlcworICAgICBBcnJheSB6dXJ1ZWNrZ2VnZWJlbi4KKworQkVNRVJLVU5HRU46CisgICAgIFRoZW9yZXRpc2NoIHNvbGx0ZSBlcyBtb2VnbGljaCBzZWluLCB1ZWJlciBkZXNjIHJla3Vyc2l2IG1laHJlcmUKKyAgICAgQmVoYWVsdGVyZWJlbmVuIGVyZmFzc2VuIHp1IGtvZW5uZW4gKGV0d2EgbWl0ICJzY2h3ZXJ0IGluIGJldXRlbCBpbgorICAgICBiZXV0ZWwgaW4gd2FyZ29uIikuIEluIGRlciBha3R1ZWxsZW4gSW1wbGVtZW50aWVydW5nIGtsYXBwdCBkYXMgamVkb2NoCisgICAgIG5pY2h0OyBuYWNoIGRlbSBlcnN0ZW4gImluIiBpc3QgU2NobHVzcyEKKworQkVJU1BJRUxFOgorICAgICBXYXMgc3RlY2t0IGFsbGVzIGRlbSBCZXV0ZWwsIGRlbiBkZXIgU3BpZWxlciBiZWkgc2ljaCB0cmFlZ3Q/CisKKyAgICAgb2JqZWN0ICpvYnM7CisgICAgIG9icyA9IHRoaXNfcGxheWVyKCktPmxvY2F0ZV9vYmplY3RzKCJhbGxlcyBpbiBiZXV0ZWwiKTsKKworICAgICBUcmFlZ3QgZGVyIFNwaWVsZXIga2VpbmVuIEJldXRlbCBiZWkgc2ljaCBvZGVyIGlzdCBkaWVzZXIgbGVlciwgc28gd2lyZAorICAgICBlaW4gbGVlcmVzIEFycmF5IHp1cnVlY2tnZWdlYmVuLgorCitTSUVIRSBBVUNIOgorICAgICBwcmVzZW50X29iamVjdHMoKSwgL3N0ZC9jb250YWluZXIvcmVzdHJpY3Rpb25zLmMKKworLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorTGFzdCBtb2RpZmllZDogV2VkIE1heSA4IDEwOjIwOjM2IDE5OTYgYnkgV2FyZ29uCmRpZmYgLS1naXQgYS9kb2MvbGZ1bi9sb2dvbiBiL2RvYy9sZnVuL2xvZ29uCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjcwMGYxZTAKLS0tIC9kZXYvbnVsbAorKysgYi9kb2MvbGZ1bi9sb2dvbgpAQCAtMCwwICsxLDE1IEBACitsb2dvbigpCisKK1NZTk9QU0lTOgorCWludCBsb2dvbih2b2lkKQorCitERVNDUklQVElPTjoKKwlXaGVuIHRoZSBwYXJzZXIgYWNjZXB0cyBhIG5ldyBjb25uZWN0aW9uLCBpdCBmaXJzdCBjYWxscworCWNvbm5lY3QoKSBpbiB0aGUgbWFzdGVyIG9iamVjdCBhbmQgdGhlbiBhcHBsaWVzIGxvZ29uKCkgdG8KKwl0aGUgb2JqZWN0IHRoYXQgaXMgcmV0dXJuZWQgYnkgdGhlIG1hc3Rlci4gVGhhdCB3aWxsIHVzdWFsbHkgYmUKKwlhIHNwZWNpYWwgbG9naW4gb2JqZWN0LCB0aGF0IGlzIGV4cGVjdGVkIHRvIGNsb25lIGFuZCBnZXQgZ29pbmcKKwlhIHVzZXIgc2hlbGwgb3IgcGxheWVyIG9iamVjdC4KKwlTaG91bGQgcmV0dXJuIDAgb24gZmFpbHVyZSwgZXZlcnl0aGluZyBlbHNlIG1lYW5zIHN1Y2Nlc3MuCisKK1NFRSBBTFNPOgorCWNvbm5lY3QoTSkKZGlmZiAtLWdpdCBhL2RvYy9sZnVuL2xvbmcgYi9kb2MvbGZ1bi9sb25nCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjM0YWM0ZjkKLS0tIC9kZXYvbnVsbAorKysgYi9kb2MvbGZ1bi9sb25nCkBAIC0wLDAgKzEsMzEgQEAKK2xvbmcoKQorRlVOS1RJT046CisgICAgIHZhcmFyZ3Mgc3RyaW5nIGxvbmcoaW50IG1vZGUpOworCitERUZJTklFUlQgSU46CisgICAgIC9zdGQvdGhpbmcvZGVzY3JpcHRpb24uYworCitBUkdVTUVOVEU6CisgICAgIGludCBtb2RlCQktIE1vZGlmaWthdG9yZW4gZnVlciBkaWUgQW56ZWlnZSwgZmFsbHMgdGhpc19vYmplY3QoKQorCQkJICBlaW4gQ29udGFpbmVyIGlzdAorCQkJICAoc2llaGUgIm1hbiBtYWtlX2ludmxpc3QiKQorCitCRVNDSFJFSUJVTkc6CisgICAgIERlciBJbmhhbHQgZGVyIFByb3BlcnR5IFBfTE9ORyB3aXJkIGF1c2dld2VydGV0IHVuZCB6dXJ1ZWNrZ2VnZWJlbi4KKyAgICAgRmFsbHMgZGFzIE9iamVrdCBlaW4gQ29udGFpbmVyIHVuZCB0cmFuc3BhcmVudCAob2ZmZW4pIGlzdCwgd2lyZAorICAgICB6dWRlbSBtYWtlX2ludmxpc3QoKSBhdWYgZGVuIEluaGFsdCB6dXJ1ZWNrZ2VnZWJlbi4KKworUlVlQ0tHQUJFV0VSVDoKKyAgICAgRGllIExhbmdiZXNjaHJlaWJ1bmcgZGVzIE9iamVrdGVzLgorCitCRU1FUktVTkdFTjoKKyAgICAgRHVyY2ggVWViZXJsYWRlbiB2b24gbG9uZygpIGxhc3NlbiBzaWNoIG5vY2ggd2VpdGVyZSBFaWdlbnNjaGFmdGVuIGRlcworICAgICBPYmpla3RlcyBhbnplaWdlbi4gQmVoYWVsdGVyIGtvZW5uZW4genVtIEJlaXNwaWVsIG5vY2ggaWhyZW4gSW5oYWx0CisgICAgIGFuemVpZ2VuLCBMZWJld2VzZW4gaWhyZW4gR2VzdW5kaGVpdHN6dXN0YW5kLCBvLmFlLgorCitTSUVIRSBBVUNIOgorICAgICBBZWhubGljaGVzOglzaG9ydCgpCisgICAgIFByb3BlcnRpZXM6CVBfTE9ORywgUF9JTlZJUywgUF9UUkFOU1BBUkVOVAorICAgICBTb25zdGlnZXM6CQltYWtlX2ludmxpc3QoKQorCisxMS4gTWFpIDIwMDQgR2xvaW5zb24KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9kb2MvbGZ1bi9tYWtlX2ltbW9ydGFsIGIvZG9jL2xmdW4vbWFrZV9pbW1vcnRhbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4zZmY0OTAwCi0tLSAvZGV2L251bGwKKysrIGIvZG9jL2xmdW4vbWFrZV9pbW1vcnRhbApAQCAtMCwwICsxLDI3IEBACittYWtlX2ltbW9ydGFsKCkNCisNCitGVU5LVElPTjoNCisgICAgIHZvaWQgbWFrZV9pbW1vcnRhbCgpOw0KKw0KK0RFRklOSUVSVCBJTjoNCisgICAgIC9zdGQvbnBjL2NvbWJhdC5jDQorDQorQkVTQ0hSRUlCVU5HOg0KKyAgICAgTWFjaHQgZGVuIE5QQyBm/HIgNSBNaW51dGVuIHVuYW5ncmVpZmJhciB1bmQgaGVpbHQgaWhuLg0KKw0KKyAgICAgV2lyZCBiZWkgRmVobGVybiBpbSBIZXJ6c2NobGFnIGRlcyBOUENzIGdlcnVmZW4gdW0gQnVnbnV0enVuZw0KKyAgICAgenUgdW50ZXJiaW5kZW4uDQorDQorICAgICBBdXNzY2hyaWZ0Og0KKyAgICAgIi4uLiB2ZXJzdGVja3Qgc2ljaCBoaW50ZXIgZWluZW0gRmVobGVyIGltIFJhdW0tWmVpdC1HZWZ1ZWdlIHVuZA0KKyAgICAgIGVudGdlaHQgc28gdm9ydWViZXJnZWhlbmQgYWxsZW4gQW5ncmlmZmVuLiINCisNCitCRU1FUktVTkdFTjoNCisgICAgIE5pY2h0IG1pc3NicmF1Y2hlbi4NCisNCitTSUVIRSBBVUNIOg0KKyAgICAgTWV0aG9kZW46ICAgICAgIGhlYXJ0X2JlYXQoKSwgc3RhdGljIF9jaGVja19pbW1vcnRhbGl0eSgpDQorICAgICBNYXN0ZXI6ICAgICAgICAgaGVhcnRfYmVhdF9lcnJvcigpDQorICAgICBQcm9wZXJ0aWVzOiAgICAgInRpbWVfdG9fbW9ydGFsaXR5Ig0KKw0KKzEuSnVuaSAyMDA3IEdsb2luc29uClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZG9jL2xmdW4vbWFrZV9pbnZsaXN0IGIvZG9jL2xmdW4vbWFrZV9pbnZsaXN0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmVmZmJjY2EKLS0tIC9kZXYvbnVsbAorKysgYi9kb2MvbGZ1bi9tYWtlX2ludmxpc3QKQEAgLTAsMCArMSwzOCBAQAorbWFrZV9pbnZsaXN0KCkKK0ZVTktUSU9OOgorICAgICB2YXJhcmdzIG1peGVkIG1ha2VfaW52bGlzdChvYmplY3Qgdmlld2VyLCBtaXhlZCBpbnYsIGludCBmbGFncykKKworREVGSU5JRVJUIElOOgorICAgICAvc3RkL2NvbnRhaW5lci9kZXNjcmlwdGlvbi5jCisKK0FSR1VNRU5URToKKyAgICAgb2JqZWN0IHZpZXdlcgktIGRhcyBPYmpla3QsIHdlbGNoZXMgc2ljaCBkZW4gSW5oYWx0IGFuc2llaHQgKGluCisJCQkgIGRlciBSZWdlbCB0aGlzX3BsYXllcigpKQorICAgICBtaXhlZCBpbnYJCS0gZWluIEFycmF5IHZvbiBPYmpla3RlbiwgZGllIGluIGRpZSBMaXN0ZQorCQkJICBhdWZnZW5vbW1lbiB3ZXJkZW4gc29sbGVuCisgICAgIGludCBmbGFncwkJLSBGb2xnZW5kZSBXZXJ0ZSBrb2VubmVuIHZlck9ERVJ0IHdlcmRlbjoKKwkJCSAgMTogZGFzIEludiBuaWNodCBhbHMgU3RyaW5nLCBzb25kZXJuIGFscyBlaW4KKwkJCSAgICAgQXJyYXkgenVydWVja2dlYmVuCisJCQkgIDI6IGdsZWljaGUgT2JqZWt0ZSBuaWNodCB6dXNhbW1lbmdlZmFzc2VuCisJCQkgIDQ6IHVudGVyZHJ1ZWNrdCBkaWUgQXVzZ2FiZSBkZXMgRGF0ZWluYW1lbnMgaGludGVyCisJCQkgICAgIGplZGVtIHRyb3R6IGVpbmdlc2NoYWx0ZXRlbSBNYWdpZXJtb2R1cworCitCRVNDSFJFSUJVTkc6CisgICAgIERpZSBLdXJ6YmVzY2hyZWlidW5nZW4gZGVyIE9iamVrdGUgaW4gaW52IHdlcmRlbiB6dSBlaW5lciBMaXN0ZQorICAgICB6dXNhbW1lbmdlZmFzc3QgKGVpbmUgWmVpbGUgcHJvIE9iamVrdCkuIFVuc2ljaHRiYXJlIE9iamVrdGUgdGF1Y2hlbiBpbgorICAgICBkaWVzZXIgTGlzdGUgbmljaHQgYXVmLgorCisgICAgIElzdCB2aWV3ZXIgZWluIE1hZ2llciBtaXQgZWluZ2VzY2hhbHRldGVtIE1hZ2llcm1vZHVzLCBzbyB3aXJkIGhpbnRlcgorICAgICBkaWUgS3VyemJlc2NocmVpYnVuZ2VuIG5vY2ggZGVyIERhdGVpbmFtZSBkZXMgamV3ZWlsaWdlbiBPYmpla3RlcyBpbgorICAgICBlY2tpZ2VuIEtsYW1tZXJuIGFuZ2VnZWJlbi4gVW5zaWNodGJhcmUgT2JqZWt0ZSBlcnNjaGVpbmVuIGluIGRpZXNlbQorICAgICBGYWxsIGFscyBGaWxlbmFtZW4uCisKK1JVZUNLR0FCRVdFUlQ6CisgICAgIEVpbiBTdHJpbmcgb2RlciBlaW4gQXJyYXksIGRpZSBkYXMgaW52IGJlc2NocmVpYmVuLgorCitTSUVIRSBBVUNIOgorICAgICBLb21tYW5kb2tldHRlOglzaG9ydCgpCisgICAgIFByb3BlcnRpZXM6CVBfU0hPUlQsIFBfSU5WSVMsIFBfV0FOVFNfVE9fTEVBUk4KKyAgICAgU29uc3RpZ2VzOgkJUF9SRUZFUkVOQ0VfT0JKRUNUCisKK0xhc3QgbW9kaWZpZWQ6IFR1ZSBPY3QgMTUgMTA6MTA6MDAgMjAwMiBieSBSaWt1cwpkaWZmIC0tZ2l0IGEvZG9jL2xmdW4vbWFzdGVyL0FkZFdpemFyZEZvclVJRCBiL2RvYy9sZnVuL21hc3Rlci9BZGRXaXphcmRGb3JVSUQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYzU4NDYzYgotLS0gL2Rldi9udWxsCisrKyBiL2RvYy9sZnVuL21hc3Rlci9BZGRXaXphcmRGb3JVSUQKQEAgLTAsMCArMSw0NyBAQAorQWRkV2l6YXJkRm9yVUlEKCkKKworRlVOS1RJT046CisgICAgc3RyaW5nKiBBZGRXaXphcmRGb3JVSUQoc3RyaW5nIHVpZCwgc3RyaW5nIHdpemFyZCk7CisKK0RFRklOSUVSVCBJTjoKKyAgICAvc2VjdXJlL21hc3Rlci91c2VyaW5mby5jCisKK0FSR1VNRU5URToKKyAgICB1aWQKKyAgICAgIERpZSBVSUQsIGZ1ZXIgZGllIG1hbiBlaW5lbiAod2VpdGVyZW4pIHZlcmFudHdvcnRsaWNoZW4gTWFnaWVyCisgICAgICBleHBsaXppdCBlaW50cmFnZW4gbW9lY2h0ZS4KKyAgICB3aXphcmQKKyAgICAgIERlciBNYWdpZXIsIGRlbiBtYW4gZWludHJhZ2VuIG1vZWNodGUuCisKK0JFU0NIUkVJQlVORzoKKyAgICBEaWUgRnVua3Rpb24gdHJhZWd0IGVpbmVuIE1hZ2llciAnd2l6YXJkJyBleHBsaXppdCBhbHMgdmVyYW50d29ydGxpY2hlbgorICAgIE1hZ2llciBmdWVyIGRpZSBVSUQgJ3VpZCcgZWluLiBIaWVyYmVpIGthbm4gJ3VpZCcgc29nYXIgZGVyIE5hbWUgZWluZXMKKwkJYW5kZXJlbiBNYWdpZXJzIHNlaW4sIGRlc3NlbiBVSURzICd3aXphcmQnIHNvenVzYWdlbiAiYWRvcHRpZXJ0Ii4KKworCQlCZXJlY2h0aWd0IHp1bSBFaW50cmFnZW4gdm9uIE1hZ2llcm4gZnVlciBiZXN0aW1tdGUgVUlEcyBzaW5kIGFsbGUgTWFnaWVyLAorICAgIGRpZSAoaW1wbGl6aXQgb2RlciBleHBsaXppdCkgdmVyYW50d29ydGxpY2ggZnVlciBkaWUgamV3ZWlsaWdlIFVJRCBzaW5kLgorICAgIFouQi4ga2FubiBaZXNzdHJhIG9obmUgd2VpdGVyZXMgamVtYW5kIHdlaXRlcmVuIGFscyB2ZXJhbnR3b3J0bGljaCBmdWVyCisgICAgZC5pbnNlbG4uemVzc3RyYSBlaW50cmFnZW4uCisKK1JVZUNLR0FCRVdFUlQ6CisgICAgWnVydWVja2dlbGllZmVydCB3aXJkIGVpbiBBcnJheSB2b24gU3RyaW5ncywgamVkZXMgRWxlbWVudCBpc3QgZWluZSBVSUQsCisgICAgZnVlciBkaWUgZGllciBNYWdpZXIgamV0enQgZXhwbGl6aXQgZWluZ2V0cmFnZW4gaXN0LgorCitCRU1FUktVTkdFTjoKKyAgICBFcyBpc3QgbmljaHQgbm9ldGlnLCB6LkIuIFplc3N0cmEgYWxzIHZlcmFudHdvcnRsaWNoIGZ1ZXIgZC5pbnNlbG4uemVzc3RyYQorICAgIGVpbnp1dHJhZ2VuLCBkYSBzaWUgb2huZWhpbiBzY2hvbiBpbXBsaXppdCBkYWZ1ZXIgenVzdGFlbmRpZyBpc3QuIEF1Y2gKKyAgICBmdWVyIFJNcyBiencuIEdNcyBtdXNzIGlocmUgUmVnaW9uIGJ6dy4gR2lsZGUgbmljaHQgZXhwbGl6aXQgZWluZ2V0cmFnZW4gCisgICAgd2VyZGVuLgorCitCRUlTUElFTEU6CisgICAgbWFzdGVyKCktPkFkZFdpemFyZEZvclVJRCgicC53YXRlcmx1aCIsInpvb2siKTsKKwkJCisJCXN0cmluZyAqdWlkcyA9IG1hc3RlcigpLT5BZGRXaXphcmRGb3JVSUQoImpvZiIsInpvb2siKTsKKyAgICBwcmludGYoIlpvb2sgaXN0IG51biBleHBsaXppdCB6dXN0YWVuZGlnIGZ1ZXI6ICVzXG4iLENvdW50VXAodWlkcykpOworCitTSUVIRSBBVUNIOgorICAgIFF1ZXJ5V2l6YXJkc0ZvclVJRCgpLCBRdWVyeVVJRHNGb3JXaXphcmQsCisJCVJlbW92ZVdpemFyZEZyb21VSUQoKQorCisyMC4wMi4yMDA3LCBaZXNzdHJhCisKZGlmZiAtLWdpdCBhL2RvYy9sZnVuL21hc3Rlci9RdWVyeVVJREFsaWFzIGIvZG9jL2xmdW4vbWFzdGVyL1F1ZXJ5VUlEQWxpYXMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMGVhODQ0YwotLS0gL2Rldi9udWxsCisrKyBiL2RvYy9sZnVuL21hc3Rlci9RdWVyeVVJREFsaWFzCkBAIC0wLDAgKzEsNDMgQEAKK1F1ZXJ5VUlEQWxpYXMoKQorCitGVU5LVElPTjoKKyAgICB2YXJhcmdzIHN0cmluZyogUXVlcnlVSURzRm9yV2l6YXJkKHN0cmluZyB1aWRhbGlhcywgaW50IHJlY3Vyc2l2ZSk7CisKK0RFRklOSUVSVCBJTjoKKyAgICAvc2VjdXJlL21hc3Rlci91c2VyaW5mby5jCisKK0FSR1VNRU5URToKKyAgICB1aWRhbGlhcworICAgICAgVUlELCBkaWUgZXhwYW5kaWVydCB3ZXJkZW4gc29sbC4KKyAgICByZWN1cnNpdmUgKG9wdGlvbmFsKQorICAgICAgR2lidCBhbiwgb2IgUXVlcnlVSURBbGlhcygpIChpbmRpcmVrdCkgcmVrdXJzaXYgYXVmZ2VydWZlbiB3dXJkZS4KKyAgICAgIFNvbGx0ZSBub3JtYWxlcndlaXNlIG5pY2h0IHBlciBIYW5kIGdlc2V0enQgd2VyZGVuLgorCitCRVNDSFJFSUJVTkc6CisgICAgRGllIEZ1bmt0aW9uIGVybWl0dGVsdCBhdXMgZWluZXIgIkFsaWFzLVVJRCIgZGllIFVJRCwgZnVlciBkaWUgc2llIHN0ZWh0LgorICAgIEhpZXJiZWkgd2VyZGVuIGZvbGdlbmRlIFVJRC1BbGlhc2UgYmVydWVja3NpY2h0aWd0OgorICAgICJyZWdpb24iOiAgICBkLnJlZ2lvbi4qICsgcmVnaW9uICsgZC5yZWdpb24KKyAgICAiZ2lsZGUiOiAgICAgR1VJTEQuZ2lsZGUsIEdVSUxELmdpbGRlbnNwZWxsYm9vaywgcC5naWxkZQorICAgICJwIjogICAgICAgICBwLiogKG9obmUgcC5zZXJ2aWNlKQorICAgICJwLnNlcnZpY2UiOiBwLnNlcnZpY2UuKgorICAgICJtYWdpZXJpZCI6ICBRdWVyeVVJRHNGb3JXaXphcmQoKQorCisgICAgRGFzIEVyZ2VibmlzIGRpZXNlciBGdW5rdGlvbiB3aXJkIGxhZW5nZXJlIFplaXQgZ2VjYWNoZXQgKGJpcyB6dSAyNGgpLgorCitSVWVDS0dBQkVXRVJUOgorICAgIFp1cnVlY2tnZWxpZWZlcnQgd2lyZCBlaW4gQXJyYXkgdm9uIFN0cmluZ3MsIGplZGVzIEVsZW1lbnQgaXN0IGVpbmUgVUlELgorICAgIFNvbGx0ZSB1aWRhbGlhc2Uga2VpbmVzIGRlciBvLmcuIHNlaW4sIHdpcmQgZWluICh7dWlkYWxpYXN9KSBnZWxpZWZlcnQuCisKK0JFSVNQSUVMRToKKyAgICBzdHJpbmcgKnVpZHMgPSBtYXN0ZXIoKS0+UXVlcnlVSURBbGlhcygic2NoYXR0ZW53ZWx0Iik7CisgICAgLy8gdWlkcyBlbnRoYWVsdCBudW46CisgICAgLy8gKHsiZC5hbmZhZW5nZXIiLCJhbmZhZW5nZXIiLCJkLmFuZmFlbmdlci5hcmsiLCJkLmFuZmFlbmdlci5lbm5veCIsCisgICAgLy8gICAiZC5hbmZhZW5nZXIuaHVtbmkiLCJkLmFuZmFlbmdlci5raXJpYSIsImQuYW5mYWVuZ2VyLmtvbnplcHRlIiwKKyAgICAvLyAgICJkLmFuZmFlbmdlci5taXJpbCJ9KQorCitTSUVIRSBBVUNIOgorICAgIFF1ZXJ5V2l6YXJkc0ZvclVJRCgpLCAKKwkJQWRkV2l6YXJkRm9yVUlEKCksIFJlbW92ZVdpemFyZEZyb21VSUQoKQorCisxNi4xMi4yMDA3LCBaZXNzdHJhCisKZGlmZiAtLWdpdCBhL2RvYy9sZnVuL21hc3Rlci9RdWVyeVVJRHNGb3JXaXphcmQgYi9kb2MvbGZ1bi9tYXN0ZXIvUXVlcnlVSURzRm9yV2l6YXJkCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmE0MDI4YzEKLS0tIC9kZXYvbnVsbAorKysgYi9kb2MvbGZ1bi9tYXN0ZXIvUXVlcnlVSURzRm9yV2l6YXJkCkBAIC0wLDAgKzEsNDIgQEAKK1F1ZXJ5VUlEc0ZvcldpemFyZCgpCisKK0ZVTktUSU9OOgorICAgIHZhcmFyZ3Mgc3RyaW5nKiBRdWVyeVVJRHNGb3JXaXphcmQoc3RyaW5nIHdpem5hbWUsIGludCByZWN1cnNpdmUpOworCitERUZJTklFUlQgSU46CisgICAgL3NlY3VyZS9tYXN0ZXIvdXNlcmluZm8uYworCitBUkdVTUVOVEU6CisgICAgd2l6bmFtZQorICAgICAgRGVyIE1hZ2llciwgZnVlciBkZW4gbWFuIGRpZSBVSURzIGVybWl0dGVsbiB3aWxsLCBmdWVyIGRpZSBlcgorICAgICAgenVzdGFlbmRpZyBpc3QuCisgICAgcmVjdXJzaXZlIChvcHRpb25hbCkKKyAgICAgIEdpYnQgYW4sIG9iIFF1ZXJ5VUlEc0ZvcldpemFyZCgpIChpbmRpcmVrdCkgcmVrdXJzaXYgYXVmZ2VydWZlbiB3dXJkZS4KKyAgICAgIFNvbGx0ZSBub3JtYWxlcndlaXNlIG5pY2h0IHBlciBIYW5kIGdlc2V0enQgd2VyZGVuLgorCitCRVNDSFJFSUJVTkc6CisgICAgRGllIEZ1bmt0aW9uIGVybWl0dGVsdCBkaWUgVUlEcywgZnVlciBkaWUgZGllc2VyIE1hZ2llciB6dXN0YWVuZGlnIGlzdC4KKyAgICBEYWJlaSB3aXJkIGltcGxpemllcnQgYmVydWVja3NpY2h0aWd0LCB3ZW5uIGRlciBNYWdpZXIgUk0gZWluZXIgUmVnaW9uCisgICAgb2RlciBHaWxkZW5tYWdpZXIgZWluZXIgR2lsZGUgaXN0LCBlYmVuc28gd2llIFZlcnplaWNobmlzc2UgaW4gZGVuCisgICAgUmVnaW9uZW4gb2RlciBpbiAvcC9zZXJ2aWNlLgorICAgIEF1c3NlcmRlbSB3aXJkIG5hY2hnZXNjaGF1dCwgZnVlciB3ZWxjaGUgVUlEcyBkaWVzZXIgTWFnaWVyIGV4cGxpeml0CisgICAgZWluZ2V0cmFnZW4gd29yZGVuIGlzdC4KKyAgICBXZW5uIHouQi4gTWFnaWVyIEEgYXVjaCBmdWVyIGFsbGUgVUlEcyB2b24gTWFnaWVyIEIgenVzdGFlbmRpZyBzZWluCisgICAgc29sbHRlLCBsaWVmZXJ0IGRpZSBGdW5rdGlvbiBhdWNoIGRpZSBVSURzIHZvbiBCIHp1cnVlY2suCisKK1JVZUNLR0FCRVdFUlQ6CisgICAgWnVydWVja2dlbGllZmVydCB3aXJkIGVpbiBBcnJheSB2b24gU3RyaW5ncywgamVkZXMgRWxlbWVudCBpc3QgZWluZSBVSUQuCisgICAgU29sbHRlIGZ1ZXIgZWluZW4gTmFtZW4ga2VpbmUgVUlEIGVybWl0dGVsYmFyIHNlaW4sIGlzdCBkYXMgQXJyYXlzIGxlZXIuCisKK0JFSVNQSUVMRToKKyAgICBzdHJpbmcgKnVpZHMgPSBtYXN0ZXIoKS0+UXVlcnlVSURzRm9yV2l6YXJkKCJlbm5veCIpOworICAgIC8vIHVpZHMgZW50aGFlbHQgbnVuOgorICAgIC8vICh7ImVubm94IiwiZC5hbmZhZW5nZXIuZW5ub3giLCJkLnNjaGF0dGVud2VsdC5lbm5veCIsCisgICAgLy8gICAicC5zZXJ2aWNlLmVubm94IiwiR1VJTEQuY2hhb3MiLCJwLmNoYW9zIn0pCisKK1NJRUhFIEFVQ0g6CisgICAgUXVlcnlXaXphcmRzRm9yVUlEKCksIAorCQlBZGRXaXphcmRGb3JVSUQoKSwgUmVtb3ZlV2l6YXJkRnJvbVVJRCgpCisKKzE2LjEyLjIwMDcsIFplc3N0cmEKKwpkaWZmIC0tZ2l0IGEvZG9jL2xmdW4vbWFzdGVyL1F1ZXJ5V2l6YXJkc0ZvclVJRCBiL2RvYy9sZnVuL21hc3Rlci9RdWVyeVdpemFyZHNGb3JVSUQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOTMwOTViNgotLS0gL2Rldi9udWxsCisrKyBiL2RvYy9sZnVuL21hc3Rlci9RdWVyeVdpemFyZHNGb3JVSUQKQEAgLTAsMCArMSw0NiBAQAorUXVlcnlXaXphcmRzRm9yVUlEKCkKKworRlVOS1RJT046CisgICAgdmFyYXJncyBzdHJpbmcqIFF1ZXJ5V2l6YXJkc0ZvclVJRChzdHJpbmcgdWlkLCBpbnQgcmVjdXJzaXZlKTsKKworREVGSU5JRVJUIElOOgorICAgIC9zZWN1cmUvbWFzdGVyL3VzZXJpbmZvLmMKKworQVJHVU1FTlRFOgorICAgIHVpZAorICAgICAgRGllIFVJRCwgZnVlciBkaWUgbWFuIGRpZSBNYWdpZXIgZXJtaXR0ZWxuIHdpbGwsIGRpZSBmdWVyIHNpZQorICAgICAgenVzdGFlbmRpZyBzaW5kLgorICAgIHJlY3Vyc2l2ZSAob3B0aW9uYWwpCisgICAgICBnaWJ0IGFuLCBvYiBkYXMgUXVlcnlXaXphcmRzRm9yVUlEKCkgKGluZGlyZWt0KSBhdXMgZWluZW0gCisgICAgICBRdWVyeVdpemFyZHNGb3JVSUQoKSBoZXJhdXMgZ2VydWZlbiB3dXJkZS4gU29sbHRlIG5pY2h0IG1hbnVlbGwgZ2VzZXR6dAorICAgICAgd2VyZGVuLgorCitCRVNDSFJFSUJVTkc6CisgICAgRGllIEZ1bmt0aW9uIGVybWl0dGVsdCBkaWUgTWFnaWVyLCBkaWUgZnVlciBkaWVzZSBVSUQgenVzdGFlbmRpZyBzaW5kLgorCitSVWVDS0dBQkVXRVJUOgorICAgIFp1cnVlY2tnZWxpZWZlcnQgd2lyZCBlaW4gQXJyYXkgdm9uIFN0cmluZ3MsIGplZGVzIEVsZW1lbnQgaXN0IGVpbiBNYWdpZXIuCisgICAgU29sbHRlIGZ1ZXIgZWluZSBVSUQga2VpbiBNYWdpZXIgZXJtaXR0ZWxiYXIgc2VpbiwgaXN0IGRhcyBBcnJheSBsZWVyLgorICAgIFdlbm4gei5CLiBmdWVyIGRpZSBVSUQgZGVyIE1hZ2llciAiQXRhbXVyIiBnZWZ1bmRlbiB3aXJkLCBhYmVyIGZ1ZXIgYWxsZSAKKyAgICBVSURzIHZvbiAiQXRhbXVyIiBhdWNoIGRlciBNYWdpZXIgIlJ1bWF0YSIgenVzdGFlbmRpZyBzZWluIHNvbGx0ZSwgd2lyZCAKKyAgICAiUnVtYXRhIiB1ZWJlciBlaW5lIHJla3Vyc2l2ZSBTdWNoZSBnZWZ1bmRlbi4KKworQkVNRVJLVU5HRU46CisgICAgV2VubiBkaWUgVUlEIGRlbiBNYWdpZXIgbmljaHQgaW1wbGl6aXQgZW50aGFlbHQgKHouQi4gR1VJTEQuZ2lsZGUsIGltIAorICAgIEdlZ2Vuc2F0eiB6dSBkLnJlZ2lvbi5tYWdpZXIpLCBmaW5kZXQgZGllc2UgRnVua3Rpb24gbnVyIE1hZ2llciwgZnVlciBkaWUgCisgICAgc2VpdCBMYWRlbiBkZXMgTWFzdGVyIGJlcmVpdHMgZWlubWFsIGdldF91c2VyaW5mbygpIG9kZXIgCisgICAgUXVlcnlVSURzRm9yV2l6YXJkKCkgaW0gTWFzdGVyIGdlcnVmZW4gd3VyZGUsIHdhcyB6LkIuIEVpbmxvZ2dlbiBwYXNzaWVydC4KKyAgICBNYWdpZXIsIGRpZSBsYW5nIG5pY2h0IGVpbmxvZ2d0ZW4sIHdlcmRlbiBhbHNvIG1hbmNobWFsIG5pY2h0IGdlZnVuZGVuLAorICAgIHdhcyBpbiBkZXIgUmVnZWwgbmljaHQgc2NobGltbSBzZWluIHNvbGx0ZSwgZGEgc2llIGphIG9obmVoaW4gZGVuCisgICAgZW50c3ByZWNoZW5kZW4gQ29kZSBnZXJhZGUgbmljaHQgd2FydGVuLi4uCisKK0JFSVNQSUVMRToKKyAgICBzdHJpbmcgKndpeiA9IG1hc3RlcigpLT5RdWVyeVdpemFyZHMoIkdVSUxELmtsZXJ1cyIpOworICAgIC8vIHdpeiBlbnRoYWVsdCBudW46ICh7Im1vcmdvdGgiLCJtYWdkYWxlbmEifSkKKworU0lFSEUgQVVDSDoKKyAgICBRdWVyeVVJRHNGb3JXaXphcmQoKSwgCisJCUFkZFdpemFyZEZvclVJRCgpLCBSZW1vdmVXaXphcmRGcm9tVUlEKCkKKworMTYuMTIuMjAwNywgWmVzc3RyYQorCmRpZmYgLS1naXQgYS9kb2MvbGZ1bi9tYXN0ZXIvUmVtb3ZlV2l6YXJkRnJvbVVJRCBiL2RvYy9sZnVuL21hc3Rlci9SZW1vdmVXaXphcmRGcm9tVUlECm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmRhOTcxMzIKLS0tIC9kZXYvbnVsbAorKysgYi9kb2MvbGZ1bi9tYXN0ZXIvUmVtb3ZlV2l6YXJkRnJvbVVJRApAQCAtMCwwICsxLDM4IEBACitSZW1vdmVXaXphcmRGcm9tVUlEKCkKKworRlVOS1RJT046CisgICAgc3RyaW5nKiBSZW1vdmVXaXphcmRGcm9tVUlEKHN0cmluZyB1aWQsIHN0cmluZyB3aXphcmQpOworCitERUZJTklFUlQgSU46CisgICAgL3NlY3VyZS9tYXN0ZXIvdXNlcmluZm8uYworCitBUkdVTUVOVEU6CisgICAgdWlkCisgICAgICBEaWUgVUlELCBmdWVyIGRpZSBtYW4gZWluZW4genVzdGFlbmRpZ2VuIE1hZ2llciBhdXN0cmFnZW4gd2lsbC4KKyAgICB3aXphcmQKKyAgICAgIERlciBNYWdpZXIsIGRlbiBtYW4gYXVzdHJhZ2VuIG1vZWNodGUuCisKK0JFU0NIUkVJQlVORzoKKyAgICBEaWUgRnVua3Rpb24gbG9lc2NodCBkaWUgVUlEICd1aWQnIGF1cyBkZXIgTGlzdGUgZGVyIFVJRHMsIGZ1ZXIgZGllCisgICAgJ3dpemFyZCcgZXhwbGl6aXQgenVzdGFlbmRpZyBpc3QuCisKKyAgICBCZXJlY2h0aWd0IHp1bSBBdXN0cmFnZW4gdm9uIE1hZ2llcm4gZnVlciBiZXN0aW1tdGUgVUlEcyBzaW5kIGFsbGUgTWFnaWVyLAorICAgIGRpZSAoaW1wbGl6aXQgb2RlciBleHBsaXppdCkgdmVyYW50d29ydGxpY2ggZnVlciBkaWUgamV3ZWlsaWdlIFVJRCBzaW5kLgorICAgIE1hbiBrYW5uIHNpY2ggYXVjaCBzZWxiZXIgYXVzdHJhZ2VuLiA7LSkKKworUlVlQ0tHQUJFV0VSVDoKKyAgICBadXJ1ZWNrZ2VsaWVmZXJ0IHdpcmQgZWluIEFycmF5IHZvbiBTdHJpbmdzLCBqZWRlcyBFbGVtZW50IGlzdCBlaW5lIFVJRCwKKyAgICBmdWVyIGRpZSBkaWVyIE1hZ2llciBqZXR6dCBleHBsaXppdCBlaW5nZXRyYWdlbiBpc3QuCisKK0JFSVNQSUVMRToKKyAgICBtYXN0ZXIoKS0+UmVtb3ZlV2l6YXJkRnJvbVVJRCgicC53YXRlcmx1aCIsInpvb2siKTsKKwkJCisgICAgc3RyaW5nICp1aWRzID0gbWFzdGVyKCktPlJlbW92ZVdpemFyZEZyb21VSUQoImpvZiIsInpvb2siKTsKKyAgICBwcmludGYoIlpvb2sgaXN0IG51biBleHBsaXppdCB6dXN0YWVuZGlnIGZ1ZXI6ICVzXG4iLENvdW50VXAodWlkcykpOworCitTSUVIRSBBVUNIOgorICAgIFF1ZXJ5V2l6YXJkc0ZvclVJRCgpLCBRdWVyeVVJRHNGb3JXaXphcmQoKQorCQlBZGRXaXphcmRGb3JVSUQoKQorCisyMC4wMi4yMDA3LCBaZXNzdHJhCisKZGlmZiAtLWdpdCBhL2RvYy9sZnVuL21hdGNoX2lkcyBiL2RvYy9sZnVuL21hdGNoX2lkcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5kMmM5ODViCi0tLSAvZGV2L251bGwKKysrIGIvZG9jL2xmdW4vbWF0Y2hfaWRzCkBAIC0wLDAgKzEsNDcgQEAKK21hdGNoX2lkcygpCisKK0ZVTktUSU9OOgorICAgICBpbnQgbWF0Y2hfaWRzKHN0cmluZyAqbGlzdCk7CisKK0RFRklOSUVSVCBJTjoKKyAgICAgL3N0ZC90aGluZy9kZXNjcmlwdGlvbi5jCisKK0FSR1VNRU5URToKKyAgICAgKmxpc3QJU3RyaW5nLUFycmF5IG1pdCB6dSB0ZXN0ZW5kZW4gSURzCisKK0JFU0NIUkVJQlVORzoKKyAgICAgRGllIExpc3RlIGRlciB1ZWJlcmdlYmVuZW4gSURzIHdpcmQgbWl0IGRlbiBJRHMgZGVzIE9iamVrdGVzCisgICAgIFVORC1WZXJrbnVlcGZ0LiBEaWUgR3JvZXNzZSBkZXMgcmVzdWx0aWVyZW5kZW4gQXJyYXlzIHdpcmQKKyAgICAgenVydWVja2dlZ2ViZW4uCisgICAgIERpZXNlIEZ1bmt0aW9uIGVybGF1YnQgYWxzbyBkYXMgZ2xlaWNoemVpdGlnZSBQcnVlZmVuIGF1ZgorICAgICBtZWhyZXJlIElEcy4gQWxsZXJkaW5ncyB3ZXJkZW4gLSBpbSBHZWdlbnNhdHogenUgaWQoKSAtCisgICAgIEFkamVrdGl2ZSB1bmQgQXVzZHJ1ZWNrZSBkZXIgQXJ0ICI8SUQ+IDxudW1tZXI+IiBuaWNodAorICAgICBiZXJ1ZWNrc2ljaHRpZ3QuCisgICAgIEViZW5zbyB3ZXJkZW4gU3BlemlhbGl0YWV0ZW4gd2llIFVuaXRvYmpla3RlIHVuZCBPYmpla3RlIG1pdAorICAgICB1ZWJlcnNjaHJpZWJlbmVtIGlkKCkgbmljaHQgYmVydWVja3NpY2h0aWd0ISBJbSBad2VpZmVsc2ZhbGwgaXN0IGRhaGVyCisgICAgIGRvY2ggZGllIE51dHp1bmcgdm9uIGlkKCkgenUgZW1wZmVobGVuLgorCitSVWVDS0dBQkVXRVJUOgorICAgICBBbnphaGwgZGVyIHp1dHJlZmZlbmRlbiBJRHMuCisKK0JFSVNQSUVMRToKKyAgICAgQW5nZW5vbW1lbiwgZWluIE9iamVrdCBoYWJlIGZvbGdlbmRlIEJlemVpY2huZXI6CisKKyAgICAgQWRkSWQoICh7Im11cm1lbCIsImt1Z2VsIiwiZ2xhc211cm1lbCIsImdsYXNrdWdlbCJ9KSApOworICAgICBBZGRBZGplY3RpdmUoICJydW5kIiApOworCisgICAgIERhbm4gbGllZmVybiBkaWUgYW5nZWdlYmVuZW4gbWF0Y2hfaWRzKCktQXVmcnVmZSBmb2xnZW5kZSBFcmdlYm5pc3NlOgorCisgICAgIG1hdGNoX2lkcyggKHsibXVybWVsIiwic3RlaW4ifSkgKTsgICAgICAgICA9PiAxCisgICAgIG1hdGNoX2lkcyggKHsibXVybWVsIiwia3VnZWwifSkgKTsgICAgICAgICA9PiAyCisgICAgIG1hdGNoX2lkcyggKHsicnVuZGUgbXVybWVsIn0pICk7ICAgICAgICAgICA9PiAwCisgICAgIG1hdGNoX2lkcyggKHsibXVybWVsIDIifSkgKTsgICAgICAgICAgICAgICA9PiAwLCBhdWNoIHdlbm4gZGllcyBkaWUgCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHp3ZWl0ZSBNdXJtZWwgaW4gZGVyCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdsZWljaGVuIFVtZ2VidW5nIGlzdAorCitTSUVIRSBBVUNIOgorICAgICBBZGRJZCgpLCBBZGRBZGplY3RpdmUoKSwgQWRkU2luZ3VsYXJJZCgpLCBBZGRQbHVyYWxJZCgpLCBwcmVzZW50KCksCisgICAgIGlkKCksIC9zdGQvdGhpbmcvZGVzY3JpcHRpb24uYywgL3N0ZC91bml0LmMKKworLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorTGFzdCBtb2RpZmllZDogU2F0IE1hciAxNSAyMTo0MDowMCAyMDAwIGJ5IFBhcmFjZWxzdXMKZGlmZiAtLWdpdCBhL2RvYy9sZnVuL21vdmUgYi9kb2MvbGZ1bi9tb3ZlCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmIzMjNjMzQKLS0tIC9kZXYvbnVsbAorKysgYi9kb2MvbGZ1bi9tb3ZlCkBAIC0wLDAgKzEsMjEyIEBACittb3ZlKCkKKworRlVOS1RJT046IAorICAgICBGdWVyIHVuYmVsZWJ0ZSBHZWdlbnN0YWVuZGUgKC9zdGQvdGhpbmcpOgorICAgICAgIHZhcmFyZ3MgaW50IG1vdmUob2JqZWN0fHN0cmluZyBkZXN0LCBpbnQgbWV0aG9kKTsKKworICAgICBGdWVyIExlYmV3ZXNlbiAoL3N0ZC9saXZpbmcsIC9zdGQvbnBjLCB1c3cuKToKKyAgICAgICB2YXJhcmdzIGludCBtb3ZlKG9iamVjdHxzdHJpbmcgZGVzdCwgaW50IG1ldGhvZCwgc3RyaW5nIGRpciwgCisgICAgICAgICAgICAgICAgICAgICAgICBzdHJpbmcgdGV4dG91dCwgc3RyaW5nIHRleHRpbik7CisKK0RFRklOSUVSVCBJTjoKKyAgICAgL3N0ZC90aGluZy9tb3ZpbmcuYworICAgICAvc3RkL2xpdmluZy9tb3ZpbmcuYworCitBUkdVTUVOVEU6CisgICAgIGRlc3QKKyAgICAgICAgICBEYXMgWmllbG9iamVrdCAoZW50d2VkZXIgZGVyIERhdGVpbmFtZSBvZGVyIGRhcyBPYmpla3Qgc2VsYnN0KS4KKworICAgICBtZXRob2QKKyAgICAgICAgICBEaWUgQXJ0IGRlciBCZXdlZ3VuZyAoZWluZSBkZXIgdW50ZW4gYXVmZ2VmdWVocnRlbiBBcnRlbjsgZXMKKyAgICAgICAgICBrb2VubmVuIGF1Y2ggbWVocmVyZSB6dXNhbW1lbmdlLU9ERVItdCB3ZXJkZW4pLgorCisgICAgIGRpcgorICAgICAgICAgIERpZSBSaWNodHVuZywgaW4gZGllIGVpbiBMZWJld2VzZW4gZ2VodC4gTm9ybWFsZXJ3ZWlzZSBpc3QgZGFzIGRpZQorICAgICAgICAgIGVpbmdlc2NobGFnZW5lIExhdWZyaWNodHVuZyAoekIuICJuYWNoIE5vcmRlbiIpLgorCisgICAgIHRleHRvdXQKKyAgICAgICAgICBWZXJsYWVzc3QgZWluIExlYmV3ZXNlbiBlaW5lbiBSYXVtLCBzbyB3aXJkIGRpZXNlIE1lbGR1bmcgaW4gZGVuCisgICAgICAgICAgUmF1bSBnZXNjaGlja3QuIElzdCBiZWkgZGlyIGVpbiBTdHJpbmcgYW5nZWdlYmVuLCBzbyB3aXJkIGRpZXNlcgorICAgICAgICAgIG5vY2ggYW4gdGV4dG91dCBhbmdlaGFlbmd0LiBEZXIgTmFtZSBkZXMgTGViZXdlc2VucyB3aXJkIGRlcgorICAgICAgICAgIE1lbGR1bmcgaW4gamVkZW0gRmFsbCB2b3Jhbmdlc3RlbGx0LgorCisgICAgIHRleHRpbgorICAgICAgICAgIERpZXNlciBUZXh0IHdpcmQgaW0gWmllbHJhdW0gYXVzZ2VnZWJlbiwgd2VubiBlaW4gTGViZXdlc2VuIGlobgorICAgICAgICAgIGJldHJpdHQuIEJlaSBub3JtYWxlciBGb3J0YmV3ZWd1bmcgaXN0IGRhcyAia29tbXQgYW4iLiBEZW0gVGV4dAorICAgICAgICAgIHdpcmQgbm9jaCBkZXIgTmFtZSBkZXMgU3BpZWxlcnMgdm9yYW5nZXN0ZWxsdC4KKworQkVTQ0hSRUlCVU5HOgorICAgICBFcyB3aXJkIHZlcnN1Y2h0LCBkYXMgT2JqZWt0IGluIGRhcyBaaWVsb2JqZWt0IGRlc3QgenUgYmV3ZWdlbi4KKyAgICAgQWJoYWVuZ2lnIHZvbSBtb21lbnRhbmVuIEF1ZmVudGhhbHRzb3J0IHVuZCBkZW0gWmllbG9iamVrdCBpc3QgZGllCisgICAgIEJld2VndW5nc21ldGhvZGUgbWV0aG9kIHp1IHdhZWhsZW4uCisKKyAgICAgSW4gPG1vdmluZy5oPiBzaW5kIGZvbGdlbmRlIEtvbnN0YW50ZW4gZnVlciBkaWUgQXJ0IGRlciBCZXdlZ3VuZworICAgICBkZWZpbmllcnQ6CisgICAgIE1fTk9DSEVDSworICAgICAgICAgIEVzIHdlcmRlbiBrZWluZSBBYmZyYWdlbiBkdXJjaGdlZnVlaHJ0LCBvYiBkYXMgT2JqZWt0IHVlYmVyaGF1cHQKKyAgICAgICAgICBpbiBkYXMgWmllbG9iamVrdCBoaW5laW5wYXNzdCAod2FzIHpCLiBhdXMgR2V3aWNodHNncnVlbmRlbiBkZXIKKyAgICAgICAgICBGYWxsIHNlaW4ga29lbm50ZSkuCisKKyAgICAgTV9HTworICAgICAgICAgIEVpbiBMZWJld2VzZW4gYmV3ZWd0IHNpY2ggZ2VoZW5kIHZvbiBlaW5lbSBSYXVtIGluIGRlbiBuYWVjaHN0ZW4uCisgICAgICAgICAgQmVpIG5vcm1hbGVtIEdlaGVuIHdpcmQgZGllc2UgTWV0aG9kZSBiZW51dHp0OyBtYW4gc29sbHRlIHNpZSBhdWNoCisgICAgICAgICAgYmVudXR6ZW4sIHdlbm4gbWFuIFNwaWVsZXIgdWViZXIgZWluZW4gU3BlY2lhbEV4aXQgaW4gZWluZW4KKyAgICAgICAgICBiZW5hY2hiYXJ0ZW4gUmF1bSBiZXdlZ3QuCisKKyAgICAgTV9UUE9SVAorICAgICAgICAgIEVpbiBMZWJld2VzZW4gd2lyZCB2b24gZWluZW0gUmF1bSBpbiBlaW5lbiBhbmRlcmVuIHRlbGVwb3J0aWVydC4KKyAgICAgICAgICBJbSBHZWdlbnNhdHogenUgTV9HTyBrYW5uIGVpbiBSYXVtIHZlcmhpbmRlcm4sIGRhc3MgbWFuIGlobgorICAgICAgICAgIG1pdHRlbHMgTV9UUE9SVCB2ZXJsYWVzc3Qgb2RlciBiZXRyaXR0LgorCisgICAgIE1fTk9fU0hPVworICAgICAgICAgIEJlaW0gQmV3ZWdlbiB2b24gTGViZXdlc2VuIGJla29tbWVuIGRpZXNlIGRpZSBCZXNjaHJlaWJ1bmcgZGVzCisgICAgICAgICAgWmllbHJhdW1lcyBuaWNodCBhdXNnZWdlYmVuLgorCisgICAgIE1fTk9fQVRUQUNLCisgICAgICAgICAgQmVpbSBCZXdlZ2VuIHZvbiBMZWJld2VzZW4gYmVrb21tZW4gZGllc2Uga2VpbmVuCisgICAgICAgICAgQmVncnVlc3N1bmdzc2NobGFnLCB3ZW5uIGVpbiBGZWluZCBpbSBaaWVscmF1bSBzdGVodC4KKworICAgICBNX1NJTEVOVAorICAgICAgICAgIEVzIHdlcmRlbiBiZWltIEJld2VnZW4ga2VpbmUgTWVsZHVuZ2VuIGF1c2dlZ2ViZW4uIERpZXNlcgorICAgICAgICAgIFBhcmFtZXRlciB3aXJrdCBzaWNoIG51ciBhdWYgZGFzIEJld2VnZW4gdm9uIExlYmVud2VzZW4gYXVzLgorCisgICAgIE1fR0VUCisgICAgICAgICAgRGFzIE9iamVrdCB3aXJkIHZvbiBlaW5lbSB1bmJlbGVidGVuIE9iamVrdCAoekIuIGVpbmVtIFJhdW0sIGVpbmVyCisgICAgICAgICAgTGVpY2hlLCBlaW5lbSBCZXV0ZWwpIGluIGVpbiBsZWJlbmRlcyBPYmpla3QgKFNwaWVsZXIgb2RlciBOUEMpCisgICAgICAgICAgYmV3ZWd0LgorCisgICAgIE1fUFVUCisgICAgICAgICAgRGFzIE9iamVrdCB3aXJkIHZvbiBlaW5lbSBsZWJlbmRlbiBPYmpla3QgaW4gZWluIHVuYmVsZWJ0ZXMgT2JqZWt0CisgICAgICAgICAgYmV3ZWd0LgorCisgICAgIE1fR0lWRQorICAgICAgICAgIERhcyBPYmpla3Qgd2lyZCB2b24gZWluZW0gTGViZXdlc2VuIGFuIGVpbiBhbmRlcmVzIExlYmV3ZXNlbgorICAgICAgICAgIHdlaXRlcmdlcmVpY2h0LgorCisgICAgIE1fTU9WRV9BTEwgKE51ciBmdWVyIE9iamVrdGUsIGRpZSAvc3RkL3VuaXQuYyBlcmJlbikKKyAgICAgICAgICBFcyB3aXJkIGRpZSBnZXNhbXRlIE1lbmdlIGJld2VndCwgbmljaHQgbnVyIGVpbiBUZWlsLgorCisgICAgIFNvbGwgZGFzIE9iamVrdCBhdWYgamVkZW4gRmFsbCB1bmQgb2huZSBqZWRlIEFiZnJhZ2UgYmV3ZWd0IHdlcmRlbiwgc28KKyAgICAgcmVpY2h0IGVzLCBhbHMgbWV0aG9kIE1fTk9DSEVDSyB6dSB1ZWJlcmdlYmVuLgorCisgICAgIFdhZmZlbiB1bmQgUnVlc3R1bmdlbiB3ZXJkZW4sIHNvd2VpdCBzaWUgZ2V6dWVja3QgYnp3LiBhbmdlem9nZW4gc2luZCwKKyAgICAgYmVpbSBCZXdlZ2VuIGF1ZiBqZWRlbiBGYWxsIHdlZ2dlc3RlY2t0IGJ6dy4gYXVzZ2V6b2dlbi4gSXN0IGluIG1ldGhvZAorICAgICBNX1NJTEVOVCBlbnRoYWx0ZW4sIHNvIGdlc2NoaWVodCBkaWVzIG9obmUgTWVsZHVuZ2VuLgorCisgICAgIERpZSBlcnN0ZSBBcnQgZGVzIEZ1bmt0aW9uc2F1ZnJ1ZnMgaXN0IHNvd29obCBiZWltIEJld2VnZW4gdm9uCisgICAgIExlYmV3ZXNlbiBhbHMgYXVjaCB2b24gdW5iZWxlYnRlbiBPYmpla3RlbiBtb2VnbGljaC4gRGllIHp3ZWl0ZSBBcnQKKyAgICAgbGFlc3N0IHNpY2ggbnVyIGJlaSBMZWJld2VzZW4gYW53ZW5kZW4uCisKK0FOTUVSS1VORzoKKyAgICAgRGllc2UgRnVua3Rpb24gc29sbHRlIG5pY2h0IChtZWhyKSB1ZWJlcnNjaHJpZWJlbiB3ZXJkZW4uIFN0YXR0ZGVzc2VuCisgICAgIGdyZWlmdCBiaXR0ZSBhdWYgUHJldmVudE1vdmUoKSB1bmQgTm90aWZ5TW92ZSgpIHp1cnVlY2suIFJNcyBzaW5kCisgICAgIGF1ZmdlcnVmZW4sIE9iamVrdCBtaXQgdWViZXJzY2hyaWViZW5lbiBtb3ZlKCkgbnVyIG5vY2ggZGFubgorICAgICBhbnp1c2NobGllc3Nlbiwgd2VubiBkZXIgWndlY2sgc29uc3QgbmljaHQgZXJyZWljaHQgd2VyZGVuIGthbm4uIFNvbGx0ZXQKKyAgICAgaWhyIG1vdmUoKSB1ZWJlcnNjaHJlaWJlbjogU2VpZCBldWNoIHNlaHIgZ2VuYXUgaW0ga2xhcmVuLCB3YXMgbW92ZSgpCisgICAgIGdlbmF1IG1hY2h0LiA7LSkKKyAgICAgCisgICAgIFdlbm4gTGl2aW5ncyBiZXdlZ3Qgd2VyZGVuLCBzb3JndCBtb3ZlKCkgYXV0b21hdGlzY2ggaW4gQWJoYWVuZ2lna2VpdAorICAgICB2b24gUF9QQVJBIGRhZnVlciwgZGFzcyBkYXMgTGViZXdlc2VuIGluIGRlciBrb3JyZWt0ZW4gKFBhcmFsbGVsLSlXZWx0CisgICAgIGxhbmRldC4KKworICAgICBCZWkgR2VnZW5zdGFlbmRlbiB3aXJkIGViZW5mYWxscyB2ZXJzdWNodCwgZGllIHJpY2h0aWdlIFppZWx3ZWx0CisgICAgIGF1c3p1d2FlaGxlbiAoZGFtaXQgei5CLiBpbiBkZXIgUGFyYWxsZWx3ZWx0IGdld29yZmVuZSBCdW1lcmFuZ3MgYXVjaCBudXIKKyAgICAgaW5uZXJoYWxiIGRlciBQYXJhbGxlbHdlbHQgZmxpZWdlbikuIFVtIFJlY2hlbnplaXQgenUgc3BhcmVuLCB3aXJkIGRhcworICAgICBhbGxlcmRpbmdzIG51ciB2ZXJzdWNodCwgd2VubiAnZGVzdCcgZWluIEZpbGVuYW1lIGlzdCB1bmQga2VpbiBPYmpla3QuCisKKyAgICAgR3J1bmQ6IGJlaSBaaWVsb2JqZWt0ZW4gaGFuZGVsdCBlcyBzaWNoIG1laXN0IHVtIEJld2VndW5nZW4gaW4gZGFzIEludgorICAgICBvZGVyIEVudiBlaW5lcyBTcGllbGVycyAtIHVuZCBkaWUgc2luZCB1bmludGVyZXNzYW50LiBSYXVtd2VjaHNlbCBkYWdlZ2VuCisgICAgIGVyZm9sZ2VuIGZhc3QgaW1tZXIgdW50ZXIgQW5nYWJlIGVpbmVzIEZpbGVuYW1lbnMgYW5zdGF0dCBlaW5lcyBPYmpla3Rlcy4KKworUlVlQ0tHQUJFV0VSVDoKKyAgICAgQWxsZSBSdWVja2dhYmV3ZXJ0ZSBzaW5kIGFscyBzeW1ib2xpc2NoZSBLb25zdGFudGVuIGluIDxtb3ZpbmcuaD4KKyAgICAgZGVmaW5pZXJ0LiAoTU9WRV9PSyBpc3QgMSwgYWxsZSBhbmRlcmVuIHNpbmQgPDAgdW5kIHN5bWJvbGlzaWVyZW4gRmVobGVyLgorICAgICBUcmFkaXRpb25lbGwgZXJmb2xndCBkaWUgUHJ1ZWZ1bmcgYXVmIGVyZm9sZ3JlaWNoZXMgTW92ZSBtaXQgPT0gMSwgaW4KKyAgICAgWnVrdW5mdCB3aXJkID09IE1PVkVfT0sgZW1wZm9obGVuLikKKyAgICAgCisgICAgIE1PVkVfT0sKKyAgICAgICAgICBEaWUgQmV3ZWd1bmcgd3VyZGUgZXJmb2xncmVpY2ggYWJnZXNjaGxvc3Nlbi4KKworICAgICBNRV9QTEFZRVIKKyAgICAgICAgICBMZWJld2VzZW4gbGFzc2VuIHNpY2ggbmljaHQgb2huZSB3ZWl0ZXJlcyBiZXdlZ2VuLiBFcyBtdXNzCisgICAgICAgICAgbWluZGVzdGVucyBlaW5lIGRlciBNZXRob2RlbiBNX05PQ0hFQ0ssIE1fR08gb2RlciBNX1RQT1JUCisgICAgICAgICAgYW5nZWdlYmVuIHdlcmRlbi4KKworICAgICBNRV9UT09fSEVBVlkKKyAgICAgICAgICBEYXMgWmllbG9iamVrdCBrYW5uIGRpZXNlcyBPYmpla3QgYXVzIEdld2ljaHRzZ3J1ZW5kZW4gbmljaHQgbWVocgorICAgICAgICAgIGF1Zm5laG1lbi4KKworICAgICBNRV9DQU5UX1RQT1JUX0lOCisgICAgICAgICAgRGFzIFppZWxvYmpla3QgdmVyYmlldGV0IGRhcyBUZWxlcG9ydGllcmVuIGluIHNpY2ggaGluZWluIChudXIgYmVpCisgICAgICAgICAgTV9UUE9SVCBvaG5lIE1fTk9DSEVDSykuCisKKyAgICAgTUVfQ0FOVF9UUE9SVF9PVVQKKyAgICAgICAgICBEZXIgUmF1bSwgaW4gZGVtIHNpY2ggZGFzIExlYmV3ZXNlbiBiZWZpbmRldCwgdmVyYmlldGV0IGRhcworICAgICAgICAgIFRlbGVwb3J0aWVyZW4gYXVzIHNpY2ggaGluYXVzIChudXIgYmVpIE1fVFBPUlQgb2huZSBNX05PQ0hFQ0spLgorCisgICAgIE1FX0NBTlRfQkVfRFJPUFBFRAorICAgICAgICAgIERhcyBPYmpla3Qga2FubiBuaWNodCBmYWxsZW4gZ2VsYXNzZW4gd2VyZGVuICh6Qi4gd2VpbCBQX05PRFJPUAorICAgICAgICAgIGdlc2V0enQgaXN0KS4KKworICAgICBNRV9DQU5UX0JFX1RBS0VOCisgICAgICAgICAgRGFzIE9iamVrdCBrYW5uIG5pY2h0IGdlbm9tbWVuIHdlcmRlbiAoekIuIHdlaWwgUF9OT0dFVCBnZXNldHp0CisgICAgICAgICAgaXN0KS4KKworICAgICBNRV9DQU5UX0JFX0lOU0VSVEVECisgICAgICAgICAgRGFzIFppZWxvYmpla3QgdmVyaGluZGVydCBkYXMgRWluZnVlZ2VuIGF1cyBiZXN0aW1tdGVuIEdydWVuZGVuLgorCisgICAgIE1FX0NBTlRfTEVBVkVfRU5WCisgICAgICAgICAgRGVyIENvbnRhaW5lciB2ZXJoaW5kZXJ0IGVpbiB2ZXJsYXNzZW4gZGVzIE9iamVrdGVzCisKKyAgICAgTUVfVE9PX0hFQVZZX0ZPUl9FTlYKKyAgICAgICAgICBFaW4gT2JqZWt0IGthbm4gZWluZW4gQmVoYWVsdGVyIG5pY2h0IHZlcmxhc3NlbiwgZGEgZXMgZGVtIAorICAgICAgICAgIExlYmV3ZXNlbiBzb25zdCB6dSBzY2h3ZXIgd3VlcmRlLgorCisgICAgIFRPT19NQU5ZX09CSkVDVFMKKyAgICAgICAgICBEYXMgWmllbG9iamVrdCBrYW5uIHNvdmllbGUgT2JqZWt0ZSBuaWNodCBtZWhyIGF1Zm5laG1lbi4KKworICAgICBNRV9OT1RfQUxMT1dFRAorICAgICAgICAgIFJhZXVtZSBtaXQgZ2VzZXR6dGVyIFByb3BlcnR5IFBfTk9fUExBWUVSUyBrb2VubmVuIG51ciB2b24KKyAgICAgICAgICBUZXN0c3BpZWxlcm4gdW5kIE1hZ2llcm4gYmV0cmV0ZW4gd2VyZGVuLiBCZWkgU3BpZWxlcm4gb2RlcgorICAgICAgICAgIEdpbGRlbnRlc3RpZXMgZ2lidCBlcyBkaWVzZSBGZWhsZXJtZWxkdW5nLgorICAgICBNRV9XQVNfREVTVFJVQ1RFRAorICAgICAgICAgIERhcyBPYmpla3QgaGF0IHNpY2ggZW50d2VkZXIgaW0gVmVybGF1ZmUgZGVyIEJld2VndW5nIHNlbGJzdAorICAgICAgICAgIHplcnN0b2VydCBvZGVyIHd1cmRlIHplcnN0b2VydCwgc29kYXNzIG1vdmUoKSBuaWNodCBlcmZvbGdyZWljaAorICAgICAgICAgIGJlZW5kZXQgd2VyZGVuIGtvbm50ZS4gKEJzcDogc2Vuc2l0aXZlIE9iamVrdGUpCisKKyAgICAgTUVfRE9OVF9XQU5UX1RPX0JFX01PVkVECisgICAgICAgICAgRGFzIE9iamVrdCBtb2VjaHRlIG5pY2h0IGJld2VndCB3ZXJkZW4uCisKK0JFSVNQSUVMRToKKyAgICAgICAgbyBFaW4gT2JqZWt0ICJnaWJ0IHNpY2giIGRlbSBTcGllbGVyOgorCisgICAgICAgICAgbW92ZSh0aGlzX3BsYXllcigpLCBNX0dFVCk7CisKKyAgICAgICAgbyBFaW4gTGViZXdlc2VuIHdpcmQgaW4gZGllIEFiZW50ZXVyZXJnaWxkZSB0ZWxlcG9ydGllcnQ6CisKKyAgICAgICAgICBsdi0+bW92ZSgiL2dpbGRlbi9hYmVudGV1cmVyIiwgTV9UUE9SVCk7CisKKyAgICAgICAgbyBFaW4gU3BpZWxlciAid2lyZCBpbiBkaWUgR2lsZGUgZ2VnYW5nZW4iOgorCisgICAgICAgICAgdGhpc19wbGF5ZXIoKS0+bW92ZSgiL2dpbGRlbi9hYmVudGV1cmVyIiwgTV9HTywgImluIGRpZSBHaWxkZSIpOworCisgICAgICAgICAgU3BpZWxlciwgZGllIG1pdCBpaG0gaW0gZ2xlaWNoZW4gUmF1bSBzdGVoZW4sIHNlaGVuIGZvbGdlbmRlCisgICAgICAgICAgTWVsZHVuZzoKKyAgICAgICAgICAiPG5hbWU+IGdlaHQgaW4gZGllIEdpbGRlLiIKKworICAgICAgICBvIEVpbiBTcGllbGVyIHNjaHdpbW10IGR1cmNocyBNZWVyOgorCisgICAgICAgICAgdGhpc19wbGF5ZXIoKS0+bW92ZSgibWVlcl94eSIsIE1fR08sICJuYWNoIE5vcmRlbiIsICJzY2h3aW1tdCIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAic2Nod2ltbXQgaGVyZWluIik7CisKKyAgICAgICAgICBTcGllbGVyIGluIHNlaW5lbSBTdGFydHJhdW0gc2VoZW4gIjxuYW1lPiBzY2h3aW1tdCBuYWNoIE5vcmRlbi4iLAorICAgICAgICAgIFNwaWVsZXIgaW4gc2VpbmVtIFppZWxyYXVtIHNlaGVuICI8bmFtZT4gc2Nod2ltbXQgaGVyZWluLiIKKworU0lFSEUgQVVDSDoKKyAgICAgbW92ZV9vYmplY3QoKSwgcmVtb3ZlKCksIHNldG1pbiwgc2V0bW1pbiwgc2V0bW91dCwgc2V0bW1vdXQsIHJldmlldywKKyAgICAgUHJldmVudEluc2VydCgpLCBQcmV2ZW50TGVhdmUoKSwgUHJldmVudEluc2VydExpdmluZygpLAorICAgICBQcmV2ZW50TGVhdmVMaXZpbmcoKSwgUHJldmVudE1vdmUoKSwgTm90aWZ5SW5zZXJ0KCksIE5vdGlmeUxlYXZlKCksCisgICAgIE5vdGlmeU1vdmUoKSwgTm90aWZ5UmVtb3ZlKCksIGluaXQoKSwgZXhpdCgpLAorICAgICBQX05PX1BMQVlFUlMsIFBfUEFSQSwgL3N0ZC90aGluZy9tb3ZpbmcuYywgL3N0ZC9saXZpbmcvbW92aW5nLmMKKyAgICAgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKzIwMTUtSmFuLTE5LCBBcmF0aG9ybgpkaWZmIC0tZ2l0IGEvZG9jL2xmdW4vbW92ZWRfb2JqZWN0cyBiL2RvYy9sZnVuL21vdmVkX29iamVjdHMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZWRjYmQ2ZQotLS0gL2Rldi9udWxsCisrKyBiL2RvYy9sZnVuL21vdmVkX29iamVjdHMKQEAgLTAsMCArMSwzMCBAQAorbW92ZWRfb2JqZWN0cygpCisKK0ZVTktUSU9OOgorICAgIHB1YmxpYyBvYmplY3QgKm1vdmVkX29iamVjdHModm9pZCk7CisKK0RFRklOSUVSVCBJTjoKKyAgICAvc3RkL2xpdmluZy9wdXRfYW5kX2dldC5jCisKK0FSR1VNRU5URToKKyAgICBrZWluZQorCitCRVNDSFJFSUJVTkc6CisgICAgTWl0IGRpZXNlciBGdW5rdGlvbiBsYXNzZW4gc2ljaCBkaWUgT2JqZWt0ZSBlcm1pdHRlbG4sIGRpZSBkYXMgTGViZXdlc2VuCisgICAgYmVpbSBsZXR6dGVuIEF1ZnJ1ZiB2b24gZHJvcF9vYmplY3RzKEwpIG9kZXIgZWluZXIgYWVobmxpY2hlbiBGdW5rdGlvbgorICAgIGJld2VndCBoYXQuCisKK1JVRUNLR0FCRVdFUlQ6CisgICAgQXJyYXkgbWl0IGRlbiB6dWxldHp0IGJld2VndGVuIE9iamVrdGVuLCBvZGVyIGVpbiBsZWVyZXMgQXJyYXksIGZhbGxzCisgICAga2VpbmUgT2JqZWt0ZSBhdWYgZGllIEJlc2NocmVpYnVuZyBkZXMgbGV0enRlbiBkcm9wX29iamVjdHMoKSAvIAorICAgIHBpY2tfb2JqZWN0cygpIC8gcHV0X29iamVjdHMoKSAvIGdpdmVfb2JqZWN0cygpIHBhc3N0ZW4uCisKK0JFSVNQSUVMRToKKyAgICBzaWVoZSBkcm9wX29iamVjdHMoKSB1bmQgZ2l2ZV9vYmplY3RzKCkKKworU0lFSEUgQVVDSDoKKyAgICBkcm9wX29iamVjdHMoTCksIGdpdmVfb2JqZWN0cyhMKSwgcGlja19vYmplY3RzKEwpLCBwdXRfb2JqZWN0cyhMKSwKKyAgICBzaG93X29iamVjdHMoTCksIE5vdGlmeU1vdmUoTCkKKworLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorTGFzdCBtb2RpZmllZDogVGh1IEF1ZyAyOCAyMjoxOToyNiAyMDA4IGJ5IEFteW50aG9yCmRpZmYgLS1naXQgYS9kb2MvbGZ1bi9tb3ZlZF93aGVyZSBiL2RvYy9sZnVuL21vdmVkX3doZXJlCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjhiYjdlOWMKLS0tIC9kZXYvbnVsbAorKysgYi9kb2MvbGZ1bi9tb3ZlZF93aGVyZQpAQCAtMCwwICsxLDI4IEBACittb3ZlZF93aGVyZSgpCisKK0ZVTktUSU9OOgorICAgIHB1YmxpYyBvYmplY3QgbW92ZWRfd2hlcmUodm9pZCk7CisKK0RFRklOSUVSVCBJTjoKKyAgICAvc3RkL2xpdmluZy9wdXRfYW5kX2dldC5jCisKK0FSR1VNRU5URToKKyAgICBrZWluZQorCitCRVNDSFJFSUJVTkc6CisgICAgTWl0IGRpZXNlciBGdW5rdGlvbiBsYWVzc3Qgc2ljaCBlcm1pdHRlbG4sIHdvaGluIGRhcyBMZWJld2VzZW4genVsZXR6dAorICAgIG1pdHRlbHMgcHV0X29iamVjdHMoTCkgb2RlciBnaXZlX29iamVjdHMoTCkgZXR3YXMgYmV3ZWd0IG9kZXIgd2VtIGVzIG1pdAorICAgIHNob3dfb2JqZWN0cyhMKSBldHdhcyBnZXplaWd0IGhhdC4KKworUlVFQ0tHQUJFV0VSVDoKKyAgICBEZXIgQ29udGFpbmVyIG9kZXIgZGFzIExlYmV3ZXNlbiwgd29oaW4gZGllIEdlZ2Vuc3RhZW5kZSBiZXdlZ3Qgd3VyZGVuLgorCitCRUlTUElFTDoKKyAgICBzaWVoZSBnaXZlX29iamVjdHMoKQorCitTSUVIRSBBVUNIOgorICAgIHB1dF9vYmplY3RzKEwpLCBnaXZlX29iamVjdHMoTCksIHNob3dfb2JqZWN0cyhMKSwgTm90aWZ5SW5zZXJ0KEwpLAorICAgIFBfTEFTVF9DT05URU5UX0NIQU5HRQorCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCitMYXN0IG1vZGlmaWVkOiBUaHUgQXVnIDI4IDIyOjE2OjE1IDIwMDggYnkgQW15bnRob3IKZGlmZiAtLWdpdCBhL2RvYy9sZnVuL211c3RlciBiL2RvYy9sZnVuL211c3RlcgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5kNTE5ZjY5Ci0tLSAvZGV2L251bGwKKysrIGIvZG9jL2xmdW4vbXVzdGVyCkBAIC0wLDAgKzEsMTYgQEAKK211c3RlcigpCisKK0ZVTktUSU9OOgorCXR5cGUgbXVzdGVyKC4uLikKKwkKK0FSR1VNRU5URToKKwkKK0JFU0NIUkVJQlVORzoKKworUlVFQ0tHQUJFV0VSVDoKKwkKK0JFTUVSS1VORzoKKwkKK0JFSVNQSUVMOgorCitTSUVIRSBBVUNIOgpkaWZmIC0tZ2l0IGEvZG9jL2xmdW4vbmFtZSBiL2RvYy9sZnVuL25hbWUKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMjZlNTBmYQotLS0gL2Rldi9udWxsCisrKyBiL2RvYy9sZnVuL25hbWUKQEAgLTAsMCArMSw1MCBAQAorbmFtZSgpCisKK0ZVTktUSU9OOgorICAgICB2YXJhcmdzIHN0cmluZyBuYW1lKGludCBjYXN1cywgaW50IGRlbW9uKTsKKworREVGSU5JRVJUIElOOgorICAgICAvc3RkL3RoaW5nL2Rlc2NyaXB0aW9uLmMKKworQVJHVU1FTlRFOgorICAgICBjYXN1cworICAgICAgICAgIERlciBGYWxsLCBpbiBkZW0gZGVyIE5hbWUgZGVrbGluaWVydCB3ZXJkZW4gc29sbC4KKyAgICAgZGVtb24KKyAgICAgICAgICBHaWJ0IGFuLCBvYiBkZXIgTmFtZSBtaXQgYmVzdGltbXRlbSBvZGVyIHVuYmVzdGltbXRlbSBBcnRpa2VsCisgICAgICAgICAgdmVyc2VoZW4gd2VyZGVuIHNvbGw6CisgICAgICAgICAgICAgKyBkZW1vbiA9IDA6IFVuYmVzdGltbXRlciBBcnRpa2VsLgorICAgICAgICAgICAgICsgZGVtb24gPSAxOiBCZXN0aW1tdGVyIEFydGlrZWwuCisgICAgICAgICAgICAgKyBkZW1vbiA9IDI6IEZpbmRlIHNlbGJzdCBoZXJhdXMsIG9iIGVpbiBiZXN0aW1tdGVyIG9kZXIgZWluCisgICAgICAgICAgICAgICB1bmJlc3RpbW10ZXIgQXJ0aWtlbCB2ZXJ3ZW5kZXQgd2VyZGVuIHNvbGwuCisKK0JFU0NIUkVJQlVORzoKKyAgICAgRGllc2UgRnVua3Rpb24gZXJtaXR0ZWx0IGRlbiBOYW1lbiBkZXMgT2JqZWt0ZXMgaW0gZ2V3dWVuc2NodGVuIEZhbGwKKyAgICAgdW5kIG1pdCBkZW0gYW5nZWdlYmVuZW4gQXJ0aWtlbC4gTW9lZ2xpY2hlIFdlcnRlIGZ1ZXIgY2FzdXMgc2luZCBpbgorICAgICA8dGhpbmcvbGFuZ3VhZ2UuaD4gZGVmaW5pZXJ0LiBXZWl0ZXJoaW4gd2VyZGVuIGF1Y2ggKGZhbGxzIGFuZ2VnZWJlbikKKyAgICAgZGllIE5hbWVuc2FkamVrdGl2ZSBkZWtsaW5pZXJ0IHVuZCBpbiBkZW4gTmFtZW4gZWluZ2ViYXV0LgorCitSVWVDS0dBQkVXRVJUOgorICAgICBTdHJpbmcgbWl0IGRlbSBOYW1lbiBkZXMgT2JqZWt0ZXMuCisKK0JFTUVSS1VOR0VOOgorICAgICBGYWxscyBQX0FSVElDTEUgZ2VzZXR6dCBpc3QsIHdlcmRlbiB3ZWRlciBBcnRpa2VsIG5vY2ggTmFtZW5zYWRqZWt0aXZlCisgICAgIGluIGRlbiBOYW1lbiBlaW5nZWJhdXQuCisKKyAgICAgV2VubiBtYW4gYWxzIGNhc3VzIFJBVyBhbmdpYnQsIHdpcmQgZGVyIE5hbWUgaW0gTm9taW5hdGl2IG9obmUgQXJ0aWtlbAorICAgICB1bmQgTmFtZW5zYWRqZWt0aXZlIHp1cnVlY2tnZWdlYmVuLgorCitCRUlTUElFTEU6CisgICAgIFdlbm4gZGFzIE9iamVrdCBlaW4gQmFsbCBtaXQgUF9OQU1FPSJCYWxsIiB1bmQgUF9OQU1FX0FESj0ia2xlaW4iIGlzdCwKKyAgICAgc28gbGllZmVybiBkaWUgZm9sZ2VuZGVuIEF1ZnJ1ZmUgZGllIGFuZ2VnZWJlbmVuIEVyZ2Vibmlzc2U6CisKKyAgICAgbmFtZShXRVIsMCk7ICAgID0+ICJlaW4ga2xlaW5lciBCYWxsIgorICAgICBuYW1lKFdFU1NFTiwxKTsgPT4gImRlcyBrbGVpbmVuIEJhbGxzIgorICAgICBuYW1lKFJBVyk7ICAgICAgPT4gIkJhbGwiCisgICAgIG5hbWUoV0VNLDIpOyAgICA9PiAiZWluZW0ga2xlaW5lbiBCYWxsIiBvZGVyICJkZW0ga2xlaW5lbiBCYWxsIiwKKyAgICAgICAgICAgICAgICAgICAgICAgIGFiaGFlbmdpZyBkYXZvbiwgd2lldmllbGUgQmFlbGxlIGdlcmFkZSBkYSBzaW5kLgorCitTSUVIRSBBVUNIOgorICAgICAvc3RkL3RoaW5nL2Rlc2NyaXB0aW9uLmMsIE5hbWUoKQorCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCitMYXN0IG1vZGlmaWVkOiBTYXQgQXVnICAzIDExOjI4OjU1IDIwMDIgYnkgVmFuaW9uCmRpZmYgLS1naXQgYS9kb2MvbGZ1bi9ub3RpZnlfcGxheWVyX2NoYW5nZSBiL2RvYy9sZnVuL25vdGlmeV9wbGF5ZXJfY2hhbmdlCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjE3NjVhZjYKLS0tIC9kZXYvbnVsbAorKysgYi9kb2MvbGZ1bi9ub3RpZnlfcGxheWVyX2NoYW5nZQpAQCAtMCwwICsxLDU2IEBACit2b2lkIG5vdGlmeV9wbGF5ZXJfY2hhbmdlKHN0cmluZy9vYmplY3Qgd2hvLCBpbnQgcmVpbiBbLCBpbnQgaW52aXNdKQorCitGVU5LVElPTjoKKyAgICB2b2lkIC9ub3RpZnlfcGxheWVyX2NoYW5nZShvYmplY3Qgd2hvLCBpbnQgcmVpbikKKyAgICB2b2lkIC9zdGQvcGxheWVyL2Jhc2U6Om5vdGlmeV9wbGF5ZXJfY2hhbmdlKHN0cmluZyB3aG8sIGludCByZWluLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IGludmlzKQorICAKK0dFUlVGRU4gVk9OOgorICAgIC9zdGQvcGxheWVyL2Jhc2UuYyAoZC5oLiBhbGxlIFNwaWVsZXJzaGVsbHMvLU9iamVrdGUpCisKK0FSR1VNRU5URToKKyAgICBzdHJpbmcgd2hvCisgICAgICBnZXR1aWQoKSBlaW5lcyBTcGllbGVycworICAgIG9iamVjdCB3aG8KKyAgICAgIFNwaWVsZXItT2JqZWt0CisgICAgaW50IHJlaW4KKyAgICAgIDAgZnVlciBkYXMgTVVEIHZlcmxhc3NlbmRlLCAxIGZ1ZXIgaGVyZWlua29tbWVuZGUgU3BpZWxlcgorICAgIGludCBpbnZpcworICAgICAgMSBmdWVyIHVuc2ljaHRiYXJlIFNwaWVsZXIgKE1hZ2llcikKKworQkVTQ0hSRUlCVU5HOgorICAgIERpZXNlIEZ1bmt0aW9uIHdpcmQgdm9uIExlYmV3ZXNlbiBmdWVyIGhlcmVpbmtvbW1lbmRlIHVuZCBkYXMgU3BpZWwKKyAgICB2ZXJsYXNzZW5kZSBTcGllbGVyIGFuIHZlcnNjaGllZGVuZW4gU3RlbGxlbiBhdWZnZXJ1ZmVuOgorICAgIAorICAgICogaW4gYW5kZXJlbiBTcGllbGVybiBtaXQgbm90aWZ5X3BsYXllcl9jaGFuZ2UoKSBtaXQgZHJlaSBQYXJhbWV0ZXJuCisgICAgICAtIGRpZXMgZGllbnQgZnVlciBkaWUgImVyd2FydGUiLUZ1bmt0aW9uYWxpdGFldAorICAgICogaW4gZGVyIEdpbGRlIGRlcyBTcGllbGVybiBtaXQgendlaSBQYXJhbWV0ZXIKKyAgICAgIC0gZGFtaXQga29lbm5lbiBHaWxkZW4gbm90d2VuZGlnZSBBbnBhc3N1bmdlbiB2b3JuZWhtZW4KKworICAgIERpZXNlIEZ1bmt0aW9uZW4gd2VyZGVuIGF1Y2ggZ2VydWZlbiwgd2VubiBNYWdpZXIgImludmlzIC1lIiBiencuCisgICAgInZpcyBlIiBiZW51dHplbi4KKworQkVJU1BJRUxFOgorICAgIC8vIGluIGVpbmVyIEdpbGRlOgorICAgIHZvaWQgbm90aWZ5X3BsYXllcl9jaGFuZ2Uob2JqZWN0IHBsLCBpbnQgcmVpbikgeworICAgICAgaWYgKHJlaW4gJiYgb2JqZWN0cChwbCkpIHsKKyAgICAgICAgLy8gQ2hlY2tzLCBvYiBTcGllbGVyc2tpbGxzIGluIE9yZG51bmcgc2luZAorICAgICAgICBtYXBwaW5nIGJldGUgPSBwbC0+UXVlcnlTa2lsbCgiYmV0ZSIpOworICAgICAgICAKKyAgICAgICAgaWYgKCFtYXBwaW5ncChiZXRlKSkgeworICAgICAgICAgIGlmIChJU19MRUFSTkVSKHBsKSB8fCBwbC0+UXVlcnlQcm9wKFBfVEVTVFBMQVlFUikpIHsKKyAgICAgICAgICAgIHRlbGxfb2JqZWN0KHBsLCBicmVha19zdHJpbmcoCisgICAgICAgICAgICAgICJEdSBiaXN0IGVpbiBrYXB1dHRlciBUZXN0LUtsZXJpa2VyIC4uLiIsIDc4LAorICAgICAgICAgICAgICAiQXJrc2hhdCB0ZWlsdCBkaXIgbWl0OiAiKSk7CisgICAgICAgICAgICAvLyBub3RkdWVyZnRpZ2UgUmVwYXJhdHVyZW4KKyAgICAgICAgICB9IGVsc2UKKyAgICAgICAgICAgIHJhaXNlX2Vycm9yKCJLbGVydXM6IEthcHV0dGVyIG9kZXIgZ2VzZXR6ZXIgS2xlcmlrZXIhXG4iKTsKKyAgICAgICAgfQorICAgICAgfQorICAgIH0KKworU0lFSEUgQVVDSDoKKyAgICBSZWdpc3RlckV2ZW50IG1pdCAoRVZUX0xJQl9MT0dJTiwgRVZUX0xJQl9MT0dPVVQpCisgICAgZXJ3YXJ0ZQorCisxLiBTZXAgMjAxMSBHbG9pbnNvbgpkaWZmIC0tZ2l0IGEvZG9jL2xmdW4vb2Jzb2xldGUvQWRkSHBIb29rIGIvZG9jL2xmdW4vb2Jzb2xldGUvQWRkSHBIb29rCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmUyMjc5NTEKLS0tIC9kZXYvbnVsbAorKysgYi9kb2MvbGZ1bi9vYnNvbGV0ZS9BZGRIcEhvb2sKQEAgLTAsMCArMSwyOSBAQAorKioqKioqKioqKioqKioqKioqKioqIE9CU09MRVRFIExGVU4gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyogRGllc2UgRWZ1biBiaXR0ZSBuaWNodCBtZWhyIGJlbnV0emVuLCBzb25kZXJuIHN0YXR0ZGVzc2VuIGRpZSAgICAgICAqCisqIEhvb2tzIChzLiAvZG9jL3N0ZC9ob29rcykuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKgorKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKK0FkZEhwSG9vaygpCitGVU5LVElPTjoKKyAgICAgaW50IEFkZEhwSG9vayhvYmplY3Qgb2IpCisKK0RFRklOSUVSVCBJTjoKKyAgICAgL3N0ZC9wbGF5ZXIvbGlmZS5jCisKK0FSR1VNRU5URToKKyAgICAgb2IgLSBkYXMgT2JqZWt0LCBkYXMgc2ljaCBlaW50cmFnZW4gbW9lY2h0ZS4KKworQkVTQ0hSRUlCVU5HOgorICAgICBUcmFlZ3QgZWluIE9iamVrdCBpbiBQX0hQX0hPT0tTIGVpbiwgd2VubiBlcyBuaWNodCBzY2hvbiBkYXJpbiBzdGVodC4KKworICAgICBBZW5kZXJuIHNpY2ggYmVpbSBTcGllbGVyIGRhbm4gSFAgb2RlciBLUCAobmljaHQgZHVyY2ggU2V0KCkpLCB3aXJkCisgICAgIGFuIGFsbGVuIGVpbmdldHJhZ2VuZW4gT2JqZWt0ZW4gTm90aWZ5SHBDaGFuZ2UoKSBnZXJ1ZmVuLgorCitSVUVDS0dBQkVXRVJUOgorICAgICAxLCB3ZW5uIEVyZm9sZywgMCBzb25zdAorCitTSUVIRSBBVUNIOgorICAgICBHZWdlbnBhcnQ6CVJlbW92ZUhwSG9vaygpCisgICAgIFByb3BzOglQX0hQX0hPT0tTLCBQX0hQCisgICAgIFZlcndhbmR0OglyZWR1Y2VfaGl0X3BvaW50cygpLCBkb19kYW1hZ2UoKSwgYnVmZmVyX2hwKCkKKworMjMuRmViLjIwMDQgR2xvaW5zb24KZGlmZiAtLWdpdCBhL2RvYy9sZnVuL29ic29sZXRlL0FkZEluc2VydEhvb2sgYi9kb2MvbGZ1bi9vYnNvbGV0ZS9BZGRJbnNlcnRIb29rCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjVlODAyNzIKLS0tIC9kZXYvbnVsbAorKysgYi9kb2MvbGZ1bi9vYnNvbGV0ZS9BZGRJbnNlcnRIb29rCkBAIC0wLDAgKzEsNTkgQEAKKyoqKioqKioqKioqKioqKioqKioqKiBPQlNPTEVURSBMRlVOICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisqIERpZXNlIEVmdW4gYml0dGUgbmljaHQgbWVociBiZW51dHplbiwgc29uZGVybiBzdGF0dGRlc3NlbiBkaWUgICAgICAgKgorKiBIb29rcyAocy4gL2RvYy9zdGQvaG9va3MpLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoKKyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCitBZGRJbnNlcnRIb29rKCkKKworRlVOS1RJT046CisgICAgIHZvaWQgQWRkSW5zZXJ0SG9vayhvYmplY3Qgb2IpOworCitERUZJTklFUlQgSU46CisgICAgIC9zdGQvcGxheWVyL3Jlc3RyaWN0aW9ucy5jCisKK0FSR1VNRU5URToKKyAgICAgb2IgLSBEYXMgT2JqZWt0LCBkYXMgaW5mb3JtaWVydCB3ZXJkZW4gc29sbCwgd2VubiBlaW4gT2JqZWt0IGRlbQorICAgICAgICAgIFNwaWVsZXJpbnZlbnRhciBoaW56dWdlZnVlZ3Qgd3VyZGUuCisKK0JFU0NIUkVJQlVORzoKKyAgICAgKERpZXNlIEZ1bmt0aW9uYWxpdGFldCB3dXJkZSBlcnNldHp0IGR1cmNoIGRlbiBhbGxnZW1laW5lbiBIb29rCisgICAgICBIX0hPT0tfSU5TRVJUIHVuZCBpc3QgbnVyIG5vY2ggYXVzIEdydWVuZGVuIGRlciBLb21wYXRpYmlsaXRhZXQKKyAgICAgIHZvcmhhbmRlbi4pCisKKyAgICAgRGllc2UgRnVua3Rpb24gd2lyZCBpbSBTcGllbGVyb2JqZWt0IGF1ZmdlcnVmZW4sIHVtIGRhcyBPYmpla3Qgb2IgYWxzCisgICAgIEhvb2stTGlzdGVuZXIgYW56dW1lbGRlbi4gQXVmIGRpZXNlIFdlaXNlIGVpbmdldHJhZ2VuZSBMaXN0ZW5lcgorICAgICB3ZXJkZW4gaW5mb3JtaWVydCwgd2VubiBlaW4gT2JqZWt0IGlucyBTcGllbGVyaW52ZW50YXIgYmV3ZWd0IHd1cmRlLgorICAgICBUZWNobmlzY2ggd2lyZCBkaWUgQmV3ZWd1bmcgdWViZXIgTm90aWZ5SW5zZXJ0KCkgaW0gU3BpZWxlcm9iamVrdAorICAgICBkZXRla3RpZXJ0LCB1bmQgaW0gTGlzdGVuZXItT2JqZWt0IHdpcmQgZGllIEZ1bmt0aW9uIEluc2VydE5vdGlmeSgpCisgICAgIGdlcnVmZW4sIGRpZSBhbHMgUGFyYW1ldGVyIGRhcyBuZXUgaW5zIFNwaWVsZXJpbnZlbnRhciBiZXdlZ3RlIE9iamVrdAorICAgICB1ZWJlcmdlYmVuIGJla29tbXQuCisKK1JVZUNLR0FCRVdFUlQ6CisgICAgIGtlaW5lcgorCitCRU1FUktVTkdFTjoKKyAgICAgRGFzIExpc3RlbmVyLU9iamVrdCBtdXNzIHNpY2ggZWJlbmZhbGxzIGltIFNwaWVsZXJpbnZlbnRhciBiZWZpbmRlbiwKKyAgICAgYW5zb25zdGVuIHdpcmQgZGVyIGVpbmdldHJhZ2VuZSBIb29rIHdpZWRlciBnZWxvZXNjaHQuCisKK0JFSVNQSUVMOgorICAgICAKKyAgICAgYSkgT2JqZWt0ICJvYiIgd2lyZCBpbSBTcGllbGVyIGFscyBMaXN0ZW5lciBhbmdlbWVsZGV0OgorICAgICAgICB0aGlzX3BsYXllcigpLT5BZGRJbnNlcnRIb29rKG9iKTsKKworICAgICBiKSBPYmpla3QgIm5ldyIgd2lyZCBpbnMgU3BpZWxlcmludmVudGFyIGJld2VndCwgZGFzIFNwaWVsZXJvYmpla3QKKyAgICAgICAgaW5mb3JtaWVydCAib2IiIGRhcnVlYmVyOgorICAgICAgICBvYi0+SW5zZXJ0Tm90aWZ5KG5ldyk7CisKKyAgICAgYykgRGFzIExpc3RlbmVyLU9iamVrdCAib2IiIHJlYWdpZXJ0IGRhcmF1Ziwgei5CLiBpbmRlbSBlcyBkaWUgRmFja2VsCisgICAgICAgIGxvZXNjaHQsIHNvZmVybiBzaWUgdm9yaGVyIGJyYW5udGU6CisgICAgICAgIHZvaWQgSW5zZXJ0Tm90aWZ5KG9iamVjdCBuZXcpIHsKKyAgICAgICAgICBpZiAoIG9iamVjdHAobmV3KSAmJiBuZXctPmlkKCJcbmZhY2tlbCIpICYmIAorICAgICAgICAgICAgICAgbmV3LT5RdWVyeVByb3AoUF9MSUdIVEVEKSApCisgICAgICAgICAgICBuZXctPnVubGlnaHQoKTsKKyAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKworU0lFSEUgQVVDSDoKKyAgICBOb3RpZnlJbnNlcnQoKSwgUmVtb3ZlSW5zZXJ0SG9vaygpLCBRdWVyeUluc2VydEhvb2tzKCkKKworLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorTGFzdCBtb2RpZmllZDogMTQuMDQuMjAxMCwgQXJhdGhvcm4KZGlmZiAtLWdpdCBhL2RvYy9sZnVuL29ic29sZXRlL01vZGlmeVNraWxsQXR0cmlidXRlT2xkIGIvZG9jL2xmdW4vb2Jzb2xldGUvTW9kaWZ5U2tpbGxBdHRyaWJ1dGVPbGQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNjVkOWFmYwotLS0gL2Rldi9udWxsCisrKyBiL2RvYy9sZnVuL29ic29sZXRlL01vZGlmeVNraWxsQXR0cmlidXRlT2xkCkBAIC0wLDAgKzEsOTAgQEAKK01vZGlmeVNraWxsQXR0cmlidXRlT2xkKCkKKworRlVOS1RJT046CisgICAgdmFyYXJncyBpbnQgTW9kaWZ5U2tpbGxBdHRyaWJ1dGVPbGQob2JqZWN0IGNhc3Rlciwgc3RyaW5nIGF0cm5hbWUsIAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCB2YWx1ZSwgaW50IGR1cmF0aW9uLCBtaXhlZCBmdW4pCisKK0RFRklOSUVSVCBJTjoKKyAgICAvc3RkL2xpdmluZy9za2lsbF9hdHRyaWJ1dGVzLmMKKworQVJHVU1FTlRFOgorICAgIDxjYXN0ZXI+ICAgIElHTk9SSUVSVAorICAgICAgICAgICAgICAgIGZydWVoZXIgT2JqZWt0LCBkYXMgZGllIE1vZGlmaWthdGlvbiB2b3JuaW1tdCwgaGV1dGUgaXN0CisgICAgICAgICAgICAgICAgZGllc2VzIEFyZ3VtZW50IG9obmUgQmVkZXV0dW5nIHVuZCB3aXJkIGlnbm9yaWVydC4KKworICAgIDxhdHJuYW1lPiAgIFNUUklORworICAgICAgICAgICAgICAgIE5hbWUgZGVzIHp1IHZlcmFlbmRlcm5kZW4gQXR0cmlidXRlcworICAgICAgICAgICAgICAgIChEZWZpbmllcnQgaW4gL3N5cy9saXZpbmcvc2tpbGxfYXR0cmlidXRlcy5oKQorCisgICAgPHZhbHVlPiAgICAgSU5UCisgICAgICAgICAgICAgICAgTmV1ZXIgV2VydCBkZXMgQXR0cmlidXRzIChTdGFuZGFyZDogMTAwKQorCisgICAgPGR1cmF0aW9uPiAgSU5UCisgICAgICAgICAgICAgICAgRGF1ZXIgaW4gU2VrdW5kZW4KKworICAgIDxmdW4+ICAgICAgIE5JQ0hUIE1FSFIgVU5URVJTVFVFVFpUIC0gTW9kaWZ5U2tpbGxBdHRyaWJ1dGUoKSBudXR6ZW4hIQorCitCRVNDSFJFSUJVTkc6CisgICAgRGllc2UgRnVua3Rpb24gZXhpc3RpZXJ0IG51ciBhdXMgS29tcGF0aWJpbGl0YWV0c2dydWVuZGVuLiBCaXR0ZSBpbiBuZXVlbgorICAgIE9iamVrdGVuIE5JQ0hUIG1laHIgdmVyd2VuZGVuIHVuZCBpbiBhbHRlbiBuYWNoIE1vZWdsaWNoa2VpdCBhdXNiYXVlbiEKKworICAgIEFlbmRlcnQgZWluIFNraWxsLUF0dHJpYnV0IGVpbmVzIExpdmluZy4KKyAgICAKKyAgICBGdWVyIDx2YWx1ZT4gaXN0IGZvbGdlbmRlcyB6dSBiZWFjaHRlbjoKKyAgICBGcnVlaGVyIGhhbmRlbHRlIGVzIHNpY2ggdW0gZWluZW4gbXVsdGlwbGlrYXRpdmVuIEZha3Rvci4gMTAwIGhhdHRlIGRpZQorICAgIEJlZGV1dHVuZyB2b24gMSB1bmQgdmVyYWVuZGVydGUgbmljaHRzLiBIZXV0ZSBzaW5kIGRpZSBNb2RpZmlrYXRvcmVuCisgICAgYWRkaXRpdi4gRGllc2UgRnVua3Rpb24gbWFjaHQgZWluZSBlaW5mYWNoZSBVbXJlY2hudW5nLCBpbmRlbSBzaWUgdm9tIGhpZXIKKyAgICB1ZWJlcmdlYmVuIFdlcnQgMTAwIGFiemllaHQuIChJbiBkZXIgQW5uYWhtZSwgZGFzcyBmcnVlaGVyIG1laXN0IGVoIG51ciAKKyAgICBlaW4gTW9kaWZpa2F0b3IgenVyIGdsZWljaGVuIFplaXQgYWt0aXYgd2FyLikKKyAgICBHaWJ0IG1hbiBoaWVyIGFsc28gaGllciBlaW5lIDEwMCBhbiwgd2lyZCBlaW4gTW9kaWZpa2F0b3Igdm9uIDAgZWluZ2UtCisgICAgdHJhZ2VuLCBkZXIgbmljaHRzIGFlbmRlcnQsIGJlaSAyMDAgd2lyZCBlaW4gTW9kaWZpa2F0b3Igdm9uIDEwMCBlaW5nZS0KKyAgICB0cmFnZW4sIGJlaSA1MCBlaW5lciB2b24gLTUwLCB3ZWxjaGVyIGRhcyBTa2lsbGF0dHJpYnV0ZSBmb2xnbGljaCAKKyAgICByZWR1emllcnQuCisKKyAgICBFcyBzaW5kIG1vbWVudGFuIG1heC4gNSBnbGVpY2h6ZWl0aWdlIFNraWxsYXR0cmlidXRlLU1vZGlmaWthdG9yZW4gcHJvIFNBCisgICAgenVsYWVzc2lnLgorCitSVUVDS0dBQkVXRVJUOgorICAgICAwICB3ZW5uIGRlciBXZXJ0IHVuZ3VlbHRpZyBpc3Qgb2RlciBhdXMgc29uc3RpZ2VtIEdydW5kZSBuaWNodCBnZXNldHp0CisgICAgICAgIHdlcmRlbiBrb25udGUgKGZ1ZXIgYmVzc2VyZSBEaWFnbm9zdGlrIC0+IE1vZGlmeVNraWxsQXR0cmlidXRlKCkpLgorICAgID4wICB3ZW5uIGFsbGVzIG9rYXkgd2FyCisKK0JFTUVSS1VOR0VOOgorICAgIEZydWVoZXIgbXVzc3RlIGVpbiBzZXR6ZW5kZXMgT2JqZWt0IGVpbiBncm9lc3NlcmVzIFBfTEVWRUwgaGFiZW4gYWxzIGRhcworICAgIE9iamVrdCwgd2VsY2hlcyBlaW5lbiB2b3JoZXJpZ2VuIE1vZGlmaWthdG9yIGdlc2V0enQgaGF0LCB1bSBkaWVzZW4genUKKyAgICB1ZWJlcnNjaHJlaWJlbi4gRGllcyBpc3QgaW56d2lzY2hlbiBvaG5lIEJlZGV1dHVuZy4KKworQkVJU1BJRUxFOgorICAgIEVpbiBOUEM6CisKKyAgICB2b2lkCisgICAgY3JlYXRlKCkgeworICAgIC4KKyAgICAuCisgICAgLgorICAgIEFkZFNwZWxsKDEsIDEsCisgICAgICAiRGVyIGZ1ZXJjaHRlcmxpY2hlIE5QQyBoYXV0IERpciBhdWYgZGVuIEtvcGYuXG4iLAorICAgICAgIkRlciBmdWVyY2h0ZXJsaWNoZSBOUEMgaGF1dCBAV0VOIGF1ZiBkZW4gS29wZi5cbiIsCisgICAgICBEVF9NQUdJQywgInNjaHdhZWNoZW4iKTsKKyAgICAuCisgICAgLgorICAgIH0KKworICAgIHNjaHdhZWNoZW4ob2JqZWN0IGVuZW15LCBpbnQgZGFtYWdlLCBtaXhlZCAqZGFtX3R5cGUpIHsKKyAgICAgIGludCBlcmdlYm5pczsKKyAgICAgIGVyZ2VibmlzID0gZW5lbXktPk1vZGlmeVNraWxsQXR0cmlidXRlT2xkKHRoaXNfb2JqZWN0KCksIFNBX1FVQUxJVFksIDUwLCA1KTsKKyAgICAgIGlmIChlcmdlYm5pcyA+IDApCisgICAgICAgICAgdGVsbF9vYmplY3QoZW5lbm15LCAiRHUgZnVlaGxzdCBEaWNoIGdhbnogc2Nod2FjaC5cbiIpOworICAgIH0KKyAgICAKKyAgICBEZXIgTlBDIHNjaHdhZWNodCBzZWluZW4gR2VnbmVyIGVyaGVibGljaCEgQWxsZXMgd2lyZCBmdWVyIDUgU2VrdW5kZW4gdW0KKyAgICA1MCwgZC5oLiAwLjUgU2tpbGxhdHRyaWJ1dGUgcmVkdXppZXJ0ICg1MCAtIDEwMCA9PiAtNTAgYWxzIE1vZGlmaWthdG9yKS4KKworU0lFSEUgQVVDSDoKKyAgICBQX1NLSUxMX0FUVFJJQlVURVMsIFBfU0tJTExfQVRUUklCVVRFX09GRlNFVFMsCisgICAgTW9kaWZ5U2tpbGxBdHRyaWJ1dGUsIFF1ZXJ5U2tpbGxBdHRyaWJ1dGUoKSwKKyAgICBSZW1vdmVTa2lsbEF0dHJpYnV0ZU1vZGlmZXIoKSwgUXVlcnlTa2lsbEF0dHJpYnV0ZU1vZGlmaWVyKCkKKworLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKzA3LjA4LjIwMDggWmVzc3RyYQorCmRpZmYgLS1naXQgYS9kb2MvbGZ1bi9vYnNvbGV0ZS9Ob3RpZnlHaXZlUXVlc3QgYi9kb2MvbGZ1bi9vYnNvbGV0ZS9Ob3RpZnlHaXZlUXVlc3QKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uN2UyOTc5OAotLS0gL2Rldi9udWxsCisrKyBiL2RvYy9sZnVuL29ic29sZXRlL05vdGlmeUdpdmVRdWVzdApAQCAtMCwwICsxLDM3IEBACisqKioqKioqKioqKioqKioqKioqKiogT0JTT0xFVEUgTEZVTiAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorKiBEaWVzZSBFZnVuIGJpdHRlIG5pY2h0IG1laHIgYmVudXR6ZW4sIHNvbmRlcm4gc3RhdHRkZXNzZW4gZGllICAgICAgICoKKyogRXZlbnRzIChzaWVoZSAibWFuIGV2ZW50cyIpLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqCisqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorCitOb3RpZnlHaXZlUXVlc3QoKQorCitGVU5LVElPTjoKKyAgICAgdm9pZCBOb3RpZnlHaXZlUXVlc3Qob2JqZWN0IHBsLCBzdHJpbmcga2V5KTsKKyAgICAgCitERUZJTklFUlQgSU46CisgICAgIC9zdGQvZ2lsZGVuX29iLmMKKyAgICAgCitBUkdVTUVOVEU6CisgICAgIHBsICAgICBEZXIgU3BpZWxlciwgZGVyIGVpbmUgUXVlc3QgZ2Vsb2VzdCBoYXQuCisgICAgIGtleSAgICBOYW1lIGRlciBnZWxvZXN0ZW4gUXVlc3QuCisgICAgIAorQkVTQ0hSRUlCVU5HOgorICAgICBEaWUgRnVua3Rpb24gd2lyZCBpbiBkZXIgR2lsZGUgZGVzIFNwaWVsZXJzIGF1ZmdlcnVmZW4sIHdlbm4gZGVyIAorICAgICBTcGllbGVyIGVpbmUgZ3VlbHRpZ2UgUXVlc3QgYmVzdGVodCAtIHVuZCB6d2FyIHVuYWJoYWVuZ2lnIGRhdm9uLAorICAgICBvYiBlciBzaWUgYmVyZWl0cyBnZWxvZXN0IGhhdCwgb2RlciBuaWNodC4KKyAgICAgCitSVUVDS0dBQkVXRVJUOgorICAgICBrZWluZXIKKyAgICAgCitCRU1FUktVTkdFTjoKKyAgICAgRGllIEZ1bmt0aW9uIGlzdCBkYWZ1ZXIgZ2VkYWNodCwgdm9uIEdpbGRlbnByb2dyYW1taWVyZXJuIHVlYmVyc2NocmllYmVuCisgICAgIHp1IHdlcmRlbiwgd2VubiBiZWlzcGllbHN3ZWlzZSBiZXN0aW1tdGUgUXVlc3RzIGFscyBBdWZzdGllZ3NiZWRpbmd1bmcKKyAgICAgdmVybGFuZ3Qgd2VyZGVuLCBkaWVzZSBhYmVyIGluIGRlciBlbnRzcHJlY2hlbmRlbiBHaWxkZSBnZWxvZXN0IHNlaW4KKyAgICAgbXVlc3NlbiAoei5CLiBPYmVyZ2xhZGlhdG9yIGFscyBMZXZlbC01LVphdWJlcmVyKS4KKyAgICAgCitTSUVIRSBBVUNIOgorICAgICAvc3RkL2dpbGRlbl9vYi5jCisgICAgIC9zdGQvcGxheWVyL3F1ZXN0cy5jCisKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KK0xhc3QgbW9kaWZpZWQ6IEZyaSBPY3QgNCAxMDoxNzowMCAxOTk2IGJ5IFNpbHZhbmEKZGlmZiAtLWdpdCBhL2RvYy9sZnVuL29ic29sZXRlL05vdGlmeUhwQ2hhbmdlIGIvZG9jL2xmdW4vb2Jzb2xldGUvTm90aWZ5SHBDaGFuZ2UKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNmY4MmIwMwotLS0gL2Rldi9udWxsCisrKyBiL2RvYy9sZnVuL29ic29sZXRlL05vdGlmeUhwQ2hhbmdlCkBAIC0wLDAgKzEsNDcgQEAKKyoqKioqKioqKioqKioqKioqKioqKiBPQlNPTEVURSBMRlVOICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisqIERpZXNlIEVmdW4gYml0dGUgbmljaHQgbWVociBiZW51dHplbiwgc29uZGVybiBzdGF0dGRlc3NlbiBkaWUgICAgICAgKgorKiBIb29rcyAocy4gL2RvYy9zdGQvaG9va3MpLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoKKyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCitOb3RpZnlIcENoYW5nZSgpCisKK0ZVTktUSU9OOgorCXZvaWQgTm90aWZ5SHBDaGFuZ2UoKTsKKworREVGSU5JRVJUIElOOgorCS9zdGQvcGxheWVyL2xpZmUuYworCitBUkdVTUVOVEU6CisJa2VpbmUKKworQkVTQ0hSRUlCVU5HOgorCVdlbm4gc2ljaCBkaWUgTGViZW5zcHVua3RlIGVpbmVzIFNwaWVsZXJzIGFlbmRlcm4sIHNvIHdlcmRlbiBkYXZvbgorCWF1Y2ggYW5kZXJlIE9iamVrdGUgdW50ZXJyaWNodGV0LCBzb2Zlcm4gZGllc2UgbWl0dGVscyBkZXIgRnVua3Rpb24KKwlBZGRIcEhvb2soKSBiZWkgZWJlbiBkaWVzZW0gU3BpZWxlciBhbmdlbWVsZGV0IHd1cmRlbi4KKwlGb3J0YW4gd2lyZCBkYW5uIGRpZSBGdW5rdGlvbiBOb3RpZnlIcENoYW5nZSgpIGluIGRpZXNlbgorCWFuZ2VtZWxkZXRlbiBPYmpla3RlbiBhdWZnZXJ1ZmVuLCB3ZW5uIHNpY2ggZGllIFByb3BlcnR5IFBfSFAgZGVzCisJU3BpZWxlcnMgYWVuZGVydC4gRXMgd2VyZGVuIGhpZXJiZWkga2VpbmUgQXJndW1lbnRlIGFuCisJTm90aWZ5SHBDaGFuZ2UoKSB1ZWJlcmdlYmVuLCBkaWUgYWt0dWVsbGVuIExlYmVuc3B1bmt0ZSBrYW5uIG1hbiBqYQorCWF1Y2ggb2huZSB3ZWl0ZXJlcyB1ZWJlciBkaWUgUHJvcGVydHkgUF9IUCBpbiBFcmZhaHJ1bmcgYnJpbmdlbiB1bmQKKwlhZWx0ZXJlIFdlcnRlIG11c3MgbWFuIHNpY2ggZ2Vzb25kZXJ0IG1lcmtlbi4gWnUgYmVhY2h0ZW4gaXN0LCBkYXNzCisJZGllIFByb3BlcnR5IFBfSFAgYmVpIEF1ZnJ1ZiBkZXIgRnVua3Rpb24gTm90aWZ5SHBDaGFuZ2UoKSBiZXJlaXRzCisJZGVuIG5ldWVuIFdlcnQgZW50aGFlbHQuCisJQmVpIGRlbSBTcGllbGVyIGFuZ2VtZWxkZXRlIE9iamVrdGUsIGRpZSB2b24gTGViZW5zcHVua3RlYWVuZGVydW5nZW4KKwlpbmZvcm1pZXJ0IHdlcmRlbiBzb2xsZW4sIHdlcmRlbiBhdXRvbWF0aXNjaCBhdXMgZGVyIExpc3RlIGVudGZlcm50LAorCXdlbm4gc2llIHplcnN0b2VydCB3dXJkZW4uIERpZXNlIExpc3RlIGlzdCBpbiBkZXIgUHJvcGVydHkKKwlQX0hQX0hPT0tTIHp1IGZpbmRlbi4gUGVyIEhhbmQga2FubiBtYW4gc2llIGF1Y2ggZXhwbGl6aXQgbWl0dGVscworCWRlciBGdW5rdGlvbiBSZW1vdmVIcEhvb2soKSBlbnRmZXJuZW4uCisJU3RpcmJ0IGVpbiBTcGllbGVyLCBzbyB3aXJkIGRpZSBGdW5rdGlvbiBOb3RpZnlQbGF5ZXJEZWF0aCgpCisJYXVmZ2VydWZlbiB1bmQgbmljaHQgTm90aWZ5SHBDaGFuZ2UoKSEKKworUlVlQ0tHQUJFV0VSVDoKKwlrZWluZXIKKworQkVJU1BJRUxFOgorCWlzdCBpbiBBcmJlaXQKKworU0lFSEUgQVVDSDoKKwlQX0hQLCBQX0hQX0hPT0tTLCBBZGRIcEhvb2soKSwgUmVtb3ZlSHBIb29rKCksCisJRGVmZW5kKCksIGRvX2RhbWFnZSgpLCBOb3RpZnlQbGF5ZXJEZWF0aCgpCisKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KK0xhc3QgbW9kaWZpZWQ6IFRodSBOb3YgMTkgMTM6NTQ6MzMgMTk5OCBieSBQYXRyeW4KZGlmZiAtLWdpdCBhL2RvYy9sZnVuL29ic29sZXRlL1F1ZXJ5RW5lbXkgYi9kb2MvbGZ1bi9vYnNvbGV0ZS9RdWVyeUVuZW15Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmJmMGI1ODMKLS0tIC9kZXYvbnVsbAorKysgYi9kb2MvbGZ1bi9vYnNvbGV0ZS9RdWVyeUVuZW15CkBAIC0wLDAgKzEsMjQgQEAKKyoqKioqKioqKioqKioqKioqKioqKiBPQlNPTEVURSBMRlVOICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCitGVU5LVElPTjoKKwlvYmplY3QgUXVlcnlFbmVteSgpOworCitERUZJTklFUlQgSU46CisJL3N0ZC9saXZpbmcvY29tYmF0LmMKKworQVJHVU1FTlRFOgorCWtlaW5lCisKK1JVZUNLR0FCRVdFUlQ6CisJZ2VmdW5kZW5lciBHZWduZXIKKworQkVTQ0hSRUlCVU5HOgorCURpZXNlIEZ1bmt0aW9uIGxpZWZlcnQgenVmYWVsbGlnIGVpbmVuIGRlciBhbndlc2VuZGVuIEdlZ25lcgorCXp1cnVlY2ssIHNvZmVybiBrZWluZSBHZWduZXIgYmV2b3J6dWd0IGF1c2dld2FlaGx0IHdlcmRlbi4KKworQkVNRVJLVU5HRU46CisgIERpZXNlIExmdW4gZXhpc3RpZXJ0IG5pY2h0IG1laHIuIEJpdHRlIFNlbGVjdEVuZW15KCkgYmVudXR6ZW4uCisKK1NJRUhFIEFVQ0g6CisJU2VsZWN0RW5lbXkoKSwgUXVlcnlQcmVmZXJlZEVuZW15KCksIFBfUFJFRkVSRURfRU5FTVkKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKzA3LjAyLjIwMDksIFplc3N0cmEKZGlmZiAtLWdpdCBhL2RvYy9sZnVuL29ic29sZXRlL1F1ZXJ5SW5zZXJ0SG9va3MgYi9kb2MvbGZ1bi9vYnNvbGV0ZS9RdWVyeUluc2VydEhvb2tzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmM0M2QwMzYKLS0tIC9kZXYvbnVsbAorKysgYi9kb2MvbGZ1bi9vYnNvbGV0ZS9RdWVyeUluc2VydEhvb2tzCkBAIC0wLDAgKzEsMzEgQEAKKyoqKioqKioqKioqKioqKioqKioqKiBPQlNPTEVURSBMRlVOICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisqIERpZXNlIEVmdW4gYml0dGUgbmljaHQgbWVociBiZW51dHplbiwgc29uZGVybiBzdGF0dGRlc3NlbiBkaWUgICAgICAgKgorKiBIb29rcyAocy4gL2RvYy9zdGQvaG9va3MpLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoKKyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCitRdWVyeUluc2VydEhvb2tzKCkKKworRlVOS1RJT046CisgICAgIG9iamVjdCAqUXVlcnlJbnNlcnRIb29rcygpOworCitERUZJTklFUlQgSU46CisgICAgIC9zdGQvcGxheWVyL3Jlc3RyaWN0aW9ucy5jCisKK0FSR1VNRU5URToKKyAgICAga2VpbmUKKworQkVTQ0hSRUlCVU5HOgorICAgICAoRGllc2UgRnVua3Rpb25hbGl0YWV0IHd1cmRlIGVyc2V0enQgZHVyY2ggZGVuIGFsbGdlbWVpbmVuIEhvb2sKKyAgICAgIEhfSE9PS19JTlNFUlQgdW5kIGlzdCBudXIgbm9jaCBhdXMgR3J1ZW5kZW4gZGVyIEtvbXBhdGliaWxpdGFldAorICAgICAgdm9yaGFuZGVuLikKKworICAgICBEaWVzZSBGdW5rdGlvbiBnaWJ0IGRpZSBha3R1ZWxsIGJlaW0gU3BpZWxlcm9iamVrdCBhbmdlbWVsZGV0ZW4KKyAgICAgTGlzdGVuZXItT2JqZWt0ZSB6dXJ1ZWNrLgorCitSVWVDS0dBQkVXRVJUOgorICAgICBBcnJheSBhdXMgT2JqZWt0cG9pbnRlcm4gb2RlciBsZWVyZXMgQXJyYXkKKworU0lFSEUgQVVDSDoKKyAgICBOb3RpZnlJbnNlcnQoKSwgQWRkSW5zZXJ0SG9vaygpLCBSZW1vdmVJbnNlcnRIb29rKCkKKworLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorTGFzdCBtb2RpZmllZDogMTQuMDQuMjAxMCwgQXJhdGhvcm4KZGlmZiAtLWdpdCBhL2RvYy9sZnVuL29ic29sZXRlL1F1ZXJ5T3B0UVAgYi9kb2MvbGZ1bi9vYnNvbGV0ZS9RdWVyeU9wdFFQCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmY2ZjcyYzUKLS0tIC9kZXYvbnVsbAorKysgYi9kb2MvbGZ1bi9vYnNvbGV0ZS9RdWVyeU9wdFFQCkBAIC0wLDAgKzEsMjUgQEAKK1F1ZXJ5T3B0UVAoKQorCitGVU5LVElPTjoKKyAgICBpbnQgUXVlcnlPcHRRUCgpCisKK0RFRklOSUVSVCBJTjoKKyAgICAvc2VjdXJlL3F1ZXN0bWFzdGVyLmMKKworQVJHVU1FTlRFOgorICAgIGtlaW5lCisKK1JVRUNLR0FCRVdFUlQ6CisgICAgQWJlbnRldWVycHVua3RlIGRlciBvcHRpb25hbGVuIFF1ZXN0cworCitCRVNDSFJFSUJVTkc6CisgICAgRGllc2UgRnVua3Rpb24gbGllZmVydCBkaWUgQWJlbnRldWVycHVua3RlIGRlciBvcHRpb25hbGVuCisgICAgQWJlbnRldWVyIHp1cnVlY2suIAorCitTSUVIRSBBVUNIOgorICAgIEdpdmVRdWVzdCwgUXVlcnlRdWVzdCwgL3NlY3VyZS9xdWVzdG1hc3Rlci5oLCBRdWVyeUdyb3VwZWRLZXlzLAorICAgIFF1ZXJ5TWF4UVAsIFF1ZXJ5VG90YWxRUAorCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCitadWxldHp0IGdlYWVuZGVydDogU2FtLCAyNS4gTm92IDIwMDAsIDE0OjA0OjI4IHZvbiBab29rLgorCmRpZmYgLS1naXQgYS9kb2MvbGZ1bi9vYnNvbGV0ZS9SZW1vdmVIcEhvb2sgYi9kb2MvbGZ1bi9vYnNvbGV0ZS9SZW1vdmVIcEhvb2sKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZDMxNzdmMQotLS0gL2Rldi9udWxsCisrKyBiL2RvYy9sZnVuL29ic29sZXRlL1JlbW92ZUhwSG9vawpAQCAtMCwwICsxLDI1IEBACisqKioqKioqKioqKioqKioqKioqKiogT0JTT0xFVEUgTEZVTiAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorKiBEaWVzZSBFZnVuIGJpdHRlIG5pY2h0IG1laHIgYmVudXR6ZW4sIHNvbmRlcm4gc3RhdHRkZXNzZW4gZGllICAgICAgICoKKyogSG9va3MgKHMuIC9kb2Mvc3RkL2hvb2tzKS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqCisqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorUmVtb3ZlSHBIb29rKCkKK0ZVTktUSU9OOgorICAgICBpbnQgUmVtb3ZlSHBIb29rKG9iamVjdCBvYikKKworREVGSU5JRVJUIElOOgorICAgICAvc3RkL3BsYXllci9saWZlLmMKKworQVJHVU1FTlRFOgorICAgICBvYiAtIGRhcyBPYmpla3QsIGRhcyBzaWNoIGF1c3RyYWdlbiBtb2VjaHRlLgorCitCRVNDSFJFSUJVTkc6CisgICAgIEVudGZlcm50IGRlbiBFaW50cmFnIGZ1ZXIgZGllc2VzIE9iamVrdCBpbiBQX0hQX0hPT0tTLgorCitSVUVDS0dBQkVXRVJUOgorICAgICAxLCB3ZW5uIEVyZm9sZywgMCBzb25zdAorCitTSUVIRSBBVUNIOgorICAgICBHZWdlbnBhcnQ6CUFkZEhwSG9vaygpCisgICAgIFByb3BzOglQX0hQX0hPT0tTLCBQX0hQCisKKzIzLkZlYi4yMDA0IEdsb2luc29uCmRpZmYgLS1naXQgYS9kb2MvbGZ1bi9vYnNvbGV0ZS9SZW1vdmVJbnNlcnRIb29rIGIvZG9jL2xmdW4vb2Jzb2xldGUvUmVtb3ZlSW5zZXJ0SG9vawpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5mMjMyZWVkCi0tLSAvZGV2L251bGwKKysrIGIvZG9jL2xmdW4vb2Jzb2xldGUvUmVtb3ZlSW5zZXJ0SG9vawpAQCAtMCwwICsxLDMxIEBACisqKioqKioqKioqKioqKioqKioqKiogT0JTT0xFVEUgTEZVTiAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorKiBEaWVzZSBFZnVuIGJpdHRlIG5pY2h0IG1laHIgYmVudXR6ZW4sIHNvbmRlcm4gc3RhdHRkZXNzZW4gZGllICAgICAgICoKKyogSG9va3MgKHMuIC9kb2Mvc3RkL2hvb2tzKS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqCisqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorUmVtb3ZlSW5zZXJ0SG9vaygpCisKK0ZVTktUSU9OOgorICAgICB2b2lkIFJlbW92ZUluc2VydEhvb2sob2JqZWN0IG9iKTsKKworREVGSU5JRVJUIElOOgorICAgICAvc3RkL3BsYXllci9yZXN0cmljdGlvbnMuYworCitBUkdVTUVOVEU6CisgICAgIG9iIC0gRGFzIE9iamVrdCwgZGFzIGFscyBMaXN0ZW5lciBhdXMgZGVyIExpc3RlIGF1c2dldHJhZ2VuIHdlcmRlbiBzb2xsCisKK0JFU0NIUkVJQlVORzoKKyAgICAgKERpZXNlIEZ1bmt0aW9uYWxpdGFldCB3dXJkZSBlcnNldHp0IGR1cmNoIGRlbiBhbGxnZW1laW5lbiBIb29rCisgICAgICBIX0hPT0tfSU5TRVJUIHVuZCBpc3QgbnVyIG5vY2ggYXVzIEdydWVuZGVuIGRlciBLb21wYXRpYmlsaXRhZXQKKyAgICAgIHZvcmhhbmRlbi4pCisKKyAgICAgRGllc2UgRnVua3Rpb24gd2lyZCBpbSBTcGllbGVyb2JqZWt0IGF1ZmdlcnVmZW4sIHVtIGVpbiBhbHMgTGlzdGVuZXIKKyAgICAgZWluZ2V0cmFnZW5lcyBIb29rLU9iamVrdCBvYiB3aWVkZXIgYXVzenV0cmFnZW4uCisKK1JVZUNLR0FCRVdFUlQ6CisgICAgIGtlaW5lcgorCitTSUVIRSBBVUNIOgorICAgIE5vdGlmeUluc2VydCgpLCBBZGRJbnNlcnRIb29rKCksIFF1ZXJ5SW5zZXJ0SG9va3MoKQorCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCitMYXN0IG1vZGlmaWVkOiAxNC4wNC4yMDEwLCBBcmF0aG9ybgpkaWZmIC0tZ2l0IGEvZG9jL2xmdW4vb2Jzb2xldGUvVGVzdEF0dHJpYnV0ZUxvY2sgYi9kb2MvbGZ1bi9vYnNvbGV0ZS9UZXN0QXR0cmlidXRlTG9jawpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4xMjZlOTMxCi0tLSAvZGV2L251bGwKKysrIGIvZG9jL2xmdW4vb2Jzb2xldGUvVGVzdEF0dHJpYnV0ZUxvY2sKQEAgLTAsMCArMSwyNSBAQAorKioqKioqKioqKioqKioqKioqKioqIE9CU09MRVRFIExGVU4gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKK1Rlc3RBdHRyaWJ1dGVMb2NrKCkKK0ZVTktUSU9OOgorICAgICBzdHJpbmcgVGVzdEF0dHJpYnV0ZUxvY2sobWFwcGluZyBjaGVjaykKKworREVGSU5JRVJUIElOOgorICAgICAvc3RkL2xpdmluZy9hdHRyaWJ1dGVzLmMKKw0KK1BBUkFNRVRFUjoNCisgICAgIGNoZWNrCS0gTWFwcGluZyBtaXQgQXR0cmlidXRlbjogKFs8YXR0cj46PHdlcnQ+XSkNCisKK0JFU0NIUkVJQlVORzoKKyAgICAgUHJ1ZWZ0LCBvYiBlaW5lcyBkZXIgaW0gTWFwcGluZyBlbnRoYWx0ZW5lbiBBdHRyaWJ1dGUgYmxvY2tpZXJ0DQorICAgICBpc3QgKGJlcmVpdHMgZHVyY2ggZWluZW4gYW5kZXJlbiBNb2RpZmllciBiZWxlZ3Qgd3VyZGUpLgorICAgICAKKyAgICAgRGEgTW9kaWZpZXIgbmljaHQgbWVociBkaXJla3QgYmxvY2tpZXJlbiBpc3QgZGllc2UgRnVua3Rpb24gb2Jzb2xldAorICAgICB1bmQgaW4gTGl2aW5ncyBpbnp3aXNjaGVuIG5pY2h0IG1laHIgZXhpc3RlbnQuCisKK1NJRUhFIEFVQ0g6CisgICAgIFF1ZXJ5QXR0cmlidXRlKCksIFF1ZXJ5UmVhbEF0dHJpYnV0ZSgpLCBRdWVyeUF0dHJpYnV0ZU9mZnNldCgpLA0KKyAgICAgU2V0QXR0cigpLCBTZXRBdHRyaWJ1dGUoKSwgU2V0UmVhbEF0dHJpYnV0ZSgpLCBVcGRhdGVBdHRyaWJ1dGVzKCksDQorICAgICBQX0FUVFJJQlVURVMsIFBfQVRUUklCVVRFU19PRkZTRVRTLCBQX0FUVFJJQlVURVNfTU9ESUZJRVIsDQorICAgICBQX1hfQVRUUl9NT0QsIFBfTV9BVFRSX01PRCwgL3N0ZC9saXZpbmcvYXR0cmlidXRlcy5jDQorCisxMS4wNS4yMDA3LCBaZXNzdHJhCmRpZmYgLS1naXQgYS9kb2MvbGZ1bi9vYnNvbGV0ZS9leHRyYV9sb29rIGIvZG9jL2xmdW4vb2Jzb2xldGUvZXh0cmFfbG9vawpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi43NTNhOGVkCi0tLSAvZGV2L251bGwKKysrIGIvZG9jL2xmdW4vb2Jzb2xldGUvZXh0cmFfbG9vawpAQCAtMCwwICsxLDE5IEBACisqKioqKioqKioqKioqKioqKioqKiogVkVSQUxURVRFIExGVU4gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisqIERpZXNlIExGVU4gaXN0IHZlcmFsdGV0LiBCaXR0ZSBiZW51dHp0IHNpZSBOSUNIVCBtZWhyLCBzb25kZXJuICAqCisqIHN0YXR0ZGVzc2RlbiBBZGRFeHRyYUxvb2soKS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqCisqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisKK2V4dHJhX2xvb2soKQorCitGVU5LVElPTjoKKyAgICBzdHJpbmcgZXh0cmFfbG9vaygpOworCitCRVNDSFJFSUJVTkc6CisgICAgS2FubiBpbiBPYmpla3QgZGVmaW5pZXJ0IHNlaW4uIFdlbm4gZWluIExpdmluZyAoc3RkL2xpdmluZy9kZXNjcmlwdGlvbikKKyAgICBkYXMgT2JqZWt0IGVudGhhZWx0LCB3aXJkIHp1IGRlc3NlbiBsb25nKCkgZGVyIHp1cnVlY2tnZWdlYmVuZSBTdHJpbmcKKyAgICBoaW56dWdlZnVlZ3QuCisKK1NJRUhFIEFVQ0g6CisgICAgQWRkRXh0cmFMb29rKCkKKworMjUuSmFuIDIwMTUgR2xvaW5zb24KZGlmZiAtLWdpdCBhL2RvYy9sZnVuL29ic29sZXRlL3BhcmFtb3ZlIGIvZG9jL2xmdW4vb2Jzb2xldGUvcGFyYW1vdmUKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOTY2ODZhMgotLS0gL2Rldi9udWxsCisrKyBiL2RvYy9sZnVuL29ic29sZXRlL3BhcmFtb3ZlCkBAIC0wLDAgKzEsNDUgQEAKKyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyoqKioqKioqKioqKioqKioqKioqKioqKiogVkVSQUxURVRFIExGVU4gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyoqKioqKioqKioqKioqKioqKioqKioqKiogRE8gTk9UIFVTRSEgICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKK3BhcmFtb3ZlKCkKKworRlVOS1RJT046CisgICAgIGludCBwYXJhbW92ZSgpOworCitERUZJTklFUlQgSU46CisgICAgIC9zdGQvcm9vbS9wYXJhLmMKKworQVJHVU1FTlRFOgorICAgICBrZWluZQorCitCRVNDSFJFSUJVTkc6CisgICAgIEJld2VndCBkZW4gU3BpZWxlciBnZ2YuIGluIGVpbmUgUGFyYWxsZWxkaW1lbnNpb24uCisKK1JVZUNLR0FCRVdFUlQ6CisgICAgIDEsIHdlbm4gZGVyIFNwaWVsZXIgZGllIERpbWVuc2lvbiBnZXdlY2hzZWx0IGhhdC4KKworQkVJU1BJRUw6CisgICAgIGluaXQoKXsKKyAgICAgICBpZighcGFyYW1vdmUoKSkgOjppbml0KCk7CisgICAgICB9CisKK0JFTUVSS1VOR0VOOgorICAgICBESUVTRSBGVU5LVElPTiBOSUNIVCBNRUhSIEJFTlVUWkVOIQorCisgICAgIERpZXNlIEZ1bmt0aW9uIHNvbGx0ZSBudXIgYXVzIGVpbmVtIGluaXQoKSBhdWZnZXJ1ZmVuIHdlcmRlbiEKKworICAgICBGdWVyIGRpZSBFbnRzY2hlaWR1bmcsIGluIHdlbGNoZW0gUmF1bSBlaW4gU3BpZWxlciBpbiBBYmhhZW5naWdrZWl0IAorICAgICB2b24gUF9QQVJBIGxhbmRldCwgaXN0IGRpZSBGdW5rdGlvbiBtb3ZlKCkgenVzdGFlbmRpZy4gQWxzIE1hZ2llciAKKyAgICAgbXVzcyBtYW4gc2ljaCBkYXJ1bSBuaWNodCBnZXNvbmRlcnQga3VlbW1lcm4uIERhcyBoZWlzc3QgYWJlciBhdWNoLCAKKyAgICAgZGFzcyBiZWltIEFuc2NobHVzcyBlaW5lcyBOb3JtYWx3ZWx0cmF1bWVzIGF1dG9tYXRpc2NoIGFsbGUgaW4gZGVtIAorICAgICBWZXJ6ZWljaG5pcyBtaXQgZ2xlaWNoZW0gTmFtZW4gdm9yaGFuZGVuZW4gUGFyYWxsZWx3ZWx0cmFldW1lIG1pdCAKKyAgICAgYW5nZXNjaGxvc3NlbiB3ZXJkZW4uCisKKyAgICAgRGVzd2VnZW4gaXN0IHBhcmFtb3ZlKCkgdmVyYWx0ZXQgdW5kIHNvbGx0ZSBuaWNodCBtZWhyIGdlbnV0enQgd2VyZGVuLgorCitTSUVIRSBBVUNIOgorICAgICAvc3RkL3Jvb20vcGFyYS5jLCBQX1BBUkEsIFBfTk9fUExBWUVSUywgbW92ZQorCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCitMYXN0IG1vZGlmaWVkOiAwNS4wOC4yMDA3LCBaZXNzdHJhCmRpZmYgLS1naXQgYS9kb2MvbGZ1bi9waWNrIGIvZG9jL2xmdW4vcGljawpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41OWJmNTFmCi0tLSAvZGV2L251bGwKKysrIGIvZG9jL2xmdW4vcGljawpAQCAtMCwwICsxLDQ4IEBACitwaWNrKCkKKworRlVOS1RJT046CisgICAgcHVibGljIHZhcmFyZ3MgaW50IHBpY2sob2JqZWN0IG8sIG1peGVkIG1zZyk7CisKK0RFRklOSUVSVCBJTjoKKyAgICAvc3RkL2xpdmluZy9wdXRfYW5kX2dldC5jCisKK0FSR1VNRU5URToKKyAgICBvYmplY3QgbworICAgICAgICBEYXMgT2JqZWt0LCBkYXMgYXVmZ2Vob2JlbiB3ZXJkZW4gc29sbC4KKyAgICBtaXhlZCBtc2cKKyAgICAgICAgRWluZSBvcHRpb25hbGUgTWVsZHVuZywgZGllIGFuc3RlbGxlIHZvbiBQX1BJQ0tfTVNHIG9kZXIgZGVyCisgICAgICAgIFN0YW5kYXJkbWVsZHVuZyB2ZXJ3ZW5kZXQgd2lyZCwgb2RlciAtMSwgdW0gZGllIE1lbGR1bmcgenUKKyAgICAgICAgdW50ZXJkcnVlY2tlbi4KKworQkVTQ0hSRUlCVU5HOgorICAgIERlciBTcGllbGVyIG9kZXIgTlBDIG5pbW10IGRhcyBPYmpla3QgYXVmLiBHaWJ0IG8tPm1vdmUoKSBrZWluZW4gcG9zaXRpdmVuCisgICAgV2VydCB6dXJ1ZWNrLCBiZWlzcGllbHN3ZWlzZSB3ZWlsIGRhcyBPYmpla3QgenUgc2Nod2VyIGlzdCBvZGVyIG5pY2h0CisgICAgZ2Vub21tZW4gd2VyZGVuIGRhcmYsIGJla29tbXQgZXIgZWluZSBlbnRzcHJlY2hlbmRlIEZlaGxlcm1lbGR1bmcuCisKK1JVRUNLR0FCRVdFUlQ6CisgICAgV2VubiBkYXMgQXVmbmVobWVuIGdla2xhcHB0IGhhdCwgMSwgYW5zb25zdGVuIDAuCisKK0JFTUVSS1VORzoKKyAgICBEaWVzZSBGdW5rdGlvbiBpc3QgZGFubiBzaW5udm9sbCwgd2VubiBtYW4gZGVuIFNwaWVsZXIgZWluIE9iamVrdAorICAgIGF1Zm5laG1lbiBsYXNzZW4gdW5kIHNpY2ggbmljaHQgc2VsYnN0IHVtIGRpZSBGZWhsZXJiZWhhbmRsdW5nIGt1ZW1tZXJuCisgICAgbW9lY2h0ZSAtIHVuZCBkYSB1bnphZWhsaWdlIHZlcnNjaGllZGVuZSBEaW5nZSBzY2hpZWZnZWhlbiBrb2VubmVuIHVuZAorICAgIG1hbmNoZSBPYmpla3RlIGVpZ2VuZSBGZWhsZXJtZWxkdW5nZW4gZGVmaW5pZXJlbiwgZWlnZW50bGljaCBpbW1lci4KKworICAgIERpZSBGdW5rdGlvbiBwcnVlZnQgbmljaHQsIG9iIHNpY2ggZGFzIE9iamVrdCB1ZWJlcmhhdXB0IGluIGRlciBSZWljaHdlaXRlCisgICAgZGVzIFNwaWVsZXJzL05QQyBiZWZpbmRldCwgZGFzIG11c3MgbWFuIGdnZi4gc2VsYnN0IGVybWl0dGVsbi4KKworQkVJU1BJRUw6CisgICAgb2IgPSBjbG9uZV9vYmplY3QoV0VJTkdVTU1JKTsKKworICAgIGlmICh0aGlzX3BsYXllcigpLT5waWNrKG9iLCAoeyAiRHUgbmltbXN0IEBXRU5VMiBhdXMgZGVtIFJlZ2FsLiIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJAV0VSMSBuaW1tdCBAV0VOVTIgYXVzIGRlbSBSZWdhbC4iIH0pKSkKKyAgICAgICAgd2Vpbmd1bW1pLS07CisgICAgZWxzZQorICAgICAgICBvYi0+cmVtb3ZlKCk7CisKK1NJRUhFIEFVQ0g6CisgICAgbW92ZShMKSwgUF9QSUNLX01TRywgcGlja19vYmplY3RzKEwpLCBQX05PSU5TRVJUX01TRywgUF9OT0xFQVZFX01TRywKKyAgICBQX1RPT19NQU5ZX01TRywgUF9UT09fSEVBVllfTVNHLCBQX0VOVl9UT09fSEVBVllfTVNHLCBQX05PR0VUCisKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KK0xhc3QgbW9kaWZpZWQ6IFRodSBBdWcgMjggMjI6MjE6NDEgMjAwOCBieSBBbXludGhvcgpkaWZmIC0tZ2l0IGEvZG9jL2xmdW4vcGlja19vYmogYi9kb2MvbGZ1bi9waWNrX29iagpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5hNGM3YzE3Ci0tLSAvZGV2L251bGwKKysrIGIvZG9jL2xmdW4vcGlja19vYmoKQEAgLTAsMCArMSwyNyBAQAorcGlja19vYmooKQorCitGVU5LVElPTgorICAgIGludCBwaWNrX29iaihvYmplY3Qgb2IpCisKK0RFRklOSUVSVCBJTjoKKworICAgIC9zdGQvbGl2aW5nL3B1dF9hbmRfZ2V0LmMKKworQVJHVU1FTlRFOgorCisgICAgb2IgICAgICBEYXMgT2JqZWt0LCBkYXMgZ2Vub21tZW4gd2VyZGVuIHNvbGwuCisKK0JFU0NIUkVJQlVORzoKKworICAgIERhcyBMZWJld2VzZW4sIGluIGRlbSBkaWVzZSBGdW5rdGlvbiBhdWZnZXJ1ZmVuIHdlcmRlbiBzb2xsLCBoZWJ0CisgICAgZGVuIGFuZ2VnZWJlbmVuIEdlZ2Vuc3RhbmQgKG9iKSBhdWYsIGZhbGxzIGVzIGlobSBtb2VnbGljaCBpc3QuCisKK1JVZUNLR0FCRVdFUlQ6CisgICAgMSwgd2VubiBkYXMgT2JqZWt0IGdlbm9tbWVuIHd1cmRlIG9kZXIgZGllcyBuaWNodCBtb2VnbGljaCB3YXIuIChpbiBkaWVzZW0KKyAgICBGYWxsIHdpcmQgYXVjaCBkaXJla3QgZWluZSBUZXh0YXVzZ2FiZSBhdXNnZWdlYmVuKQorICAgIDAgc29uc3QsIGluIGRpZXNlbSBGYWxsIHdpcmQgaW4gbm90aWZ5X2ZhaWwgZWluZSBwYXNzZW5kZSBBdXNnYWJlCisgICAgcGxhemllcnQKKworU0lFSEUgQVVDSDoKKworICAgIGRyb3Bfb2JqKCksIGZpbmRfb2JzKCksIGdpdmVfb2JqKCksIHB1dF9vYmooKSwgL3N0ZC9saXZpbmcvcHV0X2FuZF9nZXQuYwpkaWZmIC0tZ2l0IGEvZG9jL2xmdW4vcGlja19vYmplY3RzIGIvZG9jL2xmdW4vcGlja19vYmplY3RzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjkyYzA4M2QKLS0tIC9kZXYvbnVsbAorKysgYi9kb2MvbGZ1bi9waWNrX29iamVjdHMKQEAgLTAsMCArMSwzOSBAQAorcGlja19vYmplY3RzKCkKKworRlVOS1RJT046CisgICAgcHVibGljIHZhcmFyZ3MgaW50IHBpY2tfb2JqZWN0cyhzdHJpbmcgc3RyLCBpbnQgZmxhZywgbWl4ZWQgbXNnKTsKKworREVGSU5JRVJUIElOOgorICAgIC9zdGQvbGl2aW5nL3B1dF9hbmRfZ2V0LmMKKworQVJHVU1FTlRFOgorICAgIHN0cmluZyBzdHIKKyAgICAgICAgV2FzIGF1ZmdlaG9iZW4gd2VyZGVuIHNvbGwuCisgICAgaW50IGZsYWcKKyAgICAgICAgTXVzcyBkYXMgT2JqZWt0IGlyZ2VuZHdvIGRyaW5zdGVja2VuIChmbGFnID0gMSksIG9kZXIgZGFyZiBlcyBlaW5mYWNoCisgICAgICAgIHNvIGhlcnVtbGllZ2VuIChmbGFnID0gMCk/IERpZXNlcyBBcmd1bWVudCBpc3QgaGF1cHRzYWVjaGxpY2ggZnVlciBkYXMKKyAgICAgICAgS29tbWFuZG8gImhvbGUiIGdlZGFjaHQsIGluIGRlciBSZWdlbCBicmF1Y2h0IG1hbiBlcyBuaWNodCBhbnp1Z2ViZW4uCisgICAgbWl4ZWQgbXNnCisgICAgICAgIEVpbmUgb3B0aW9uYWxlIE1lbGR1bmcsIGRpZSBhbnN0ZWxsZSB2b24gUF9QSUNLX01TRyBvZGVyIGRlcgorICAgICAgICBTdGFuZGFyZG1lbGR1bmcgdmVyd2VuZGV0IHdpcmQsIG9kZXIgLTEsIHVtIGRpZSBNZWxkdW5nIHp1CisgICAgICAgIHVudGVyZHJ1ZWNrZW4uCisKK0JFU0NIUkVJQlVORzoKKyAgICBEZXIgU3BpZWxlciBvZGVyIE5QQyBuaW1tdCBkaWUgaW4gPHN0cj4gYmVuYW5udGVuIFNhY2hlbi4gS2FubiBlciBlaW4KKyAgICBPYmpla3QgbmljaHQgbmVobWVuLCBiZWtvbW10IGVyIGVpbmUgZW50c3ByZWNoZW5kZSBGZWhsZXJtZWxkdW5nLiBXZW5uCisgICAga2VpbmUgT2JqZWt0ZSBhdWYgPHN0cj4gcGFzc2VuLCB3aXJkIHBlciBfbm90aWZ5X2ZhaWwoKSBlaW5lIE1lbGR1bmcKKyAgICBnZXNldHp0LCBhYmVyIG5vY2ggbmljaHQgYXVzZ2VnZWJlbi4KKworUlVFQ0tHQUJFV0VSVDoKKyAgICBXZW5uIDxzdHI+IGlyZ2VuZHdlbGNoZSB2b3JoYW5kZW5lbiBTYWNoZW4gc2luZCwgMSwgc29uc3QgMC4KKworQkVNRVJLVU5HOgorICAgIFdlbm4gZGllIEZ1bmt0aW9uIDEgenVydWVja2dpYnQsIGhlaXNzdCBkYXMgbm9jaCBuaWNodCwgZGFzcyBkZXIgU3BpZWxlcgorICAgIGV0d2FzIGdlbm9tbWVuIGhhdCEgRXIgaGF0IGVzIG51ciB2ZXJzdWNodCwgZC5oLiBhdWYgamVkZW4gRmFsbCBlaW5lCisgICAgTWVsZHVuZyBiZWtvbW1lbi4gR2lidCBkaWUgRnVua3Rpb24gMCB6dXJ1ZWNrLCBoYXQgZXIgbm9jaCBrZWluZSBiZWtvbW1lbi4KKworU0lFSEUgQVVDSDoKKyAgICBtb3ZlKEwpLCBwaWNrKEwpLCBQX1BJQ0tfTVNHLCBmaW5kX29iamVjdHMoTCksIG1vdmVkX29iamVjdHMoTCkKKworLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorTGFzdCBtb2RpZmllZDogRnJpIEp1bCAyNSAxMDo1ODo0MyAyMDA4IGJ5IEFteW50aG9yCmRpZmYgLS1naXQgYS9kb2MvbGZ1bi9wcmVzZW50X29iamVjdHMgYi9kb2MvbGZ1bi9wcmVzZW50X29iamVjdHMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMTVjZjRiZQotLS0gL2Rldi9udWxsCisrKyBiL2RvYy9sZnVuL3ByZXNlbnRfb2JqZWN0cwpAQCAtMCwwICsxLDMyIEBACitwcmVzZW50X29iamVjdHMoKQorCitGVU5LVElPTjoKKyAgICAgb2JqZWN0ICpwcmVzZW50X29iamVjdHMoc3RyaW5nIGRlc2MpOworCitERUZJTklFUlQgSU46CisgICAgIC9zdGQvY29udGFpbmVyL3Jlc3RyaWN0aW9ucy5jCisKK0FSR1VNRU5URToKKyAgICAgZGVzYworICAgICAgICAgIFVtc2NocmVpYnVuZyBkZXMgZ2VzdWNodGVuIE9iamVrdGVzIG9kZXIgImFsbGVzIiBvZGVyICJhbGxlIi4KKworQkVTQ0hSRUlCVU5HOgorICAgICBEaWVzZSBGdW5rdGlvbiBnaWJ0IGRpZSBPYmpla3RlIGltIElubmVyZW4gZGVzIEJlaGFlbHRlcnMgenVydWVjaywgZGllCisgICAgIHNpY2ggbWl0IGRlc2MgYW5zcHJlY2hlbiBsYXNzZW4uIEluIGRlbSBGYWxsLCBkYXNzICJhbGxlKHMpIgorICAgICBhbmdlZm9yZGVydCB3aXJkLCBzaW5kIGRhcyBhbGxlIHNpY2h0YmFyZW4gT2JqZWt0ZSwgYW5zb25zdGVuIGRhcyBlcnN0ZQorICAgICBPYmpla3QsIGRhcyBzaWNoIG1pdCBkZXNjIGFuc3ByZWNoZW4gbGFlc3N0LgorICAgICBPYmpla3RlLCBkaWUgUF9JTlZJUyBnZXNldHp0IGhhYmVuLCB6YWVobGVuIGFscyBuaWNodCBhbnNwcmVjaGJhciwgaW0KKyAgICAgR2VnZW5zYXR6IHp1IHNvbGNoZW4gT2JqZWt0ZW4sIGRpZSBrZWluZSBQX1NIT1JUIGhhYmVuLgorCitSVWVDS0dBQkVXRVJUOgorICAgICBFaW4gQXJyYXkgdm9uIE9iamVrdGVuIG1pdCBkZW4gZ2Vmb3JkZXJ0ZW4gRWlnZW5zY2hhZnRlbi4KKworICAgICBCZWZpbmRldCBzaWNoIGtlaW4gT2JqZWt0IGltIEJlaGFlbHRlciwgZGFzIHNpY2ggZHVyY2ggZGVzYyBhbnNwcmVjaGVuCisgICAgIGxhZXNzdCwgc28gd2lyZCBlaW4gbGVlcmVzIEFycmF5IHp1cnVlY2tnZWdlYmVuLgorCitTSUVIRSBBVUNIOgorICAgICBsb2NhdGVfb2JqZWN0cygpLCAvc3RkL2NvbnRhaW5lci9yZXN0cmljdGlvbnMuYworCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiswMy4wMy4yMDEzLCBaZXNzdHJhCisKZGlmZiAtLWdpdCBhL2RvYy9sZnVuL3B1dCBiL2RvYy9sZnVuL3B1dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4zM2U3ZWFmCi0tLSAvZGV2L251bGwKKysrIGIvZG9jL2xmdW4vcHV0CkBAIC0wLDAgKzEsNDMgQEAKK3B1dCgpCisKK0ZVTktUSU9OOgorICAgIHB1YmxpYyB2YXJhcmdzIGludCBwdXQob2JqZWN0IG8sIG9iamVjdCBkZXN0LCBtaXhlZCBtc2cpOworCitERUZJTklFUlQgSU46CisgICAgL3N0ZC9saXZpbmcvcHV0X2FuZF9nZXQuYworCitBUkdVTUVOVEU6CisgICAgb2JqZWN0IG8KKyAgICAgICAgRGFzIE9iamVrdCwgZGFzIGlyZ2VuZHdvIGhpbmdlc3RlY2t0IHdlcmRlbiBzb2xsLgorICAgIG9iamVjdCBkZXN0CisgICAgICAgIERlciBCZWhhZWx0ZXIsIGluIGRlbiBkYXMgT2JqZWt0IGdlc3RlY2t0IHdlcmRlbiBzb2xsLgorICAgIG1peGVkIG1zZworICAgICAgICBFaW5lIG9wdGlvbmFsZSBNZWxkdW5nLCBkaWUgYW5zdGVsbGUgdm9uIFBfUFVUX01TRyBvZGVyIGRlcgorICAgICAgICBTdGFuZGFyZG1lbGR1bmcgdmVyd2VuZGV0IHdpcmQsIG9kZXIgLTEsIHVtIGRpZSBNZWxkdW5nIHp1CisgICAgICAgIHVudGVyZHJ1ZWNrZW4uCisKK0JFU0NIUkVJQlVORzoKKyAgICBEZXIgU3BpZWxlciBvZGVyIE5QQyBzdGVja3QgZGFzIE9iamVrdCBpbiBlaW5lbiBCZWhhZWx0ZXIuIEdpYnQgby0+bW92ZSgpCisgICAga2VpbmVuIHBvc2l0aXZlbiBXZXJ0IHp1cnVlY2ssIGJlaXNwaWVsc3dlaXNlIHdlaWwgZXIgZGFzIE9iamVrdCBuaWNodAorICAgIHdlZ2dlYmVuIGRhcmYgb2RlciBkZXIgQmVoYWVsdGVyIHNjaG9uIHZvbGwgaXN0LCBiZWtvbW10IGVyIGVpbmUKKyAgICBlbnRzcHJlY2hlbmRlIEZlaGxlcm1lbGR1bmcuCisKK1JVRUNLR0FCRVdFUlQ6CisgICAgV2VubiBkYXMgQmV3ZWdlbiBnZWtsYXBwdCBoYXQsIDEsIGFuc29uc3RlbiAwLgorCitCRU1FUktVTkc6CisgICAgRGllc2UgRnVua3Rpb24gaXN0IGRhbm4gc2lubnZvbGwsIHdlbm4gbWFuIGRlbiBTcGllbGVyIGVpbiBPYmpla3QgaXJnZW5kd28KKyAgICBoaW5zdGVja2VuIGxhc3NlbiB1bmQgc2ljaCBuaWNodCBzZWxic3QgdW0gZGllIEZlaGxlcmJlaGFuZGx1bmcga3VlbW1lcm4KKyAgICBtb2VjaHRlIC0gdW5kIGRhIHVuemFlaGxpZ2UgdmVyc2NoaWVkZW5lIERpbmdlIHNjaGllZmdlaGVuIGtvZW5uZW4gdW5kCisgICAgbWFuY2hlIE9iamVrdGUgZWlnZW5lIEZlaGxlcm1lbGR1bmdlbiBkZWZpbmllcmVuLCBlaWdlbnRsaWNoIGltbWVyLgorCisgICAgRGllIEZ1bmt0aW9uIHBydWVmdCBuaWNodCwgb2Igc2ljaCBkYXMgT2JqZWt0IHVuZCBkZXIgQmVoYWVsdGVyIHVlYmVyaGF1cHQKKyAgICBpbiBkZXIgUmVpY2h3ZWl0ZSBkZXMgU3BpZWxlcnMvTlBDIGJlZmluZGVuLCBkYXMgbXVzcyBtYW4gZ2dmLiBzZWxic3QKKyAgICBlcm1pdHRlbG4uCisKK1NJRUhFIEFVQ0g6CisgICAgbW92ZShMKSwgUF9QVVRfTVNHLCBwdXRfb2JqZWN0cyhMKSwgUF9OT0lOU0VSVF9NU0csIFBfTk9MRUFWRV9NU0csCisgICAgUF9UT09fTUFOWV9NU0csIFBfVE9PX0hFQVZZX01TRywgUF9FTlZfVE9PX0hFQVZZX01TRywgUF9OT0dFVCwgUF9OT0RST1AKKworLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorTGFzdCBtb2RpZmllZDogVGh1IEF1ZyAyOCAyMjoyMTo1OCAyMDA4IGJ5IEFteW50aG9yCmRpZmYgLS1naXQgYS9kb2MvbGZ1bi9wdXRfb2JqIGIvZG9jL2xmdW4vcHV0X29iagpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4xZjFiMjk5Ci0tLSAvZGV2L251bGwKKysrIGIvZG9jL2xmdW4vcHV0X29iagpAQCAtMCwwICsxLDMwIEBACitwdXRfb2JqKCkKKworRlVOS1RJT04KKyAgICBpbnQgcHV0X29iaihvYmplY3Qgb2IsIG9iamVjdCB3aGVyZSkKKworREVGSU5JRVJUIElOOgorCisgICAgL3N0ZC9saXZpbmcvcHV0X2FuZF9nZXQuYworCitBUkdVTUVOVEU6CisKKyAgICBvYiAgICAgIERhcyBPYmpla3QsIGRhcyBpcmdlbmR3byBoaW5laW5nZWxlZ3Qgd2VyZGVuIHNvbGwuCisgICAgd2hlcmUgICBEYXMgKHRvdGUpIE9iamVrdCwgaW4gZGFzIGV0d2FzIGhpbmVpbmdlbGVndCB3ZXJkZW4gc29sbC4KKworQkVTQ0hSRUlCVU5HOgorCisgICAgRGFzIExlYmV3ZXNlbiwgaW4gZGVtIGRpZXNlIEZ1bmt0aW9uIGF1ZmdlcnVmZW4gd2VyZGVuIHNvbGwsIGxlZ3QKKyAgICBkZW4gYW5nZWdlYmVuZW4gR2VnZW5zdGFuZCAob2IpIGluIGRhcyBhbmdlZ2ViZW5lIFppZWxvYmpla3QgKHdoZXJlKS4KKyAgICBEYWJlaSBzb2xsdGUgZXMgc2ljaCBiZWkgd2hlcmUgdW0gZWluZW4gQ29udGFpbmVyL1JhdW0gaGFuZGVsbi4KKyAgICBJc3Qgd2hlcmUgZWluIExlYmV3ZXNlbiwgdmVyd2VuZGV0IG1hbiBiZXNzZXIgZ2l2ZV9vYmooKS4KKworUlVlQ0tHQUJFV0VSVDoKKyAgICAxLCB3ZW5uIGRhcyBPYmpla3Qgd2VnZ2VsZWd0IHd1cmRlIG9kZXIgZGllcyBuaWNodCBtb2VnbGljaCB3YXIuIChpbiBkaWVzZW0KKyAgICBGYWxsIHdpcmQgYXVjaCBkaXJla3QgZWluZSBUZXh0YXVzZ2FiZSBhdXNnZWdlYmVuKQorICAgIDAgc29uc3QsIGluIGRpZXNlbSBGYWxsIHdpcmQgaW4gbm90aWZ5X2ZhaWwgZWluZSBwYXNzZW5kZSBBdXNnYWJlCisgICAgcGxhemllcnQKKworU0lFSEUgQVVDSDoKKworICAgIGRyb3Bfb2JqKCksIGZpbmRfb2JzKCksIGdpdmVfb2JqKCksIHBpY2tfb2JqKCksIC9zdGQvbGl2aW5nL3B1dF9hbmRfZ2V0LmMKZGlmZiAtLWdpdCBhL2RvYy9sZnVuL3F1ZXJ5X3ByZXZlbnRfc2hhZG93IGIvZG9jL2xmdW4vcXVlcnlfcHJldmVudF9zaGFkb3cKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uODBiMGM3ZAotLS0gL2Rldi9udWxsCisrKyBiL2RvYy9sZnVuL3F1ZXJ5X3ByZXZlbnRfc2hhZG93CkBAIC0wLDAgKzEsMzQgQEAKK3F1ZXJ5X3ByZXZlbnRfc2hhZG93KEwpCitGVU5LVElPTjoKKyAgICAgdmFyYXJncyBpbnQgcXVlcnlfcHJldmVudF9zaGFkb3cob2JqZWN0IHNoYWRvd2VyKQorCitQQVJBTUVURVI6CisgICAgIG9iamVjdCBzaGFkb3dlcgktIGRhIE9iamVrdCwgZGFzIGVpbmUgQmVzY2hhdHR1bmcgYmVhbnRyYWd0CisKK0JFU0NIUkVJQlVORzoKKyAgICAgRGllc2UgTWV0aG9kZSBrYW5uIGluIE9iamVrdGVuIGRlZmluaWVydCB3ZXJkZW4sIGRpZSBuaWNodCBiZXNjaGF0dGV0CisgICAgIHdlcmRlbiB3b2xsZW4gb2RlciBhbmhhbmQgZGVzIE9iamVrdGVzIHNoYWRvd2VyIGVudHNjaGVpZGVuIHdvbGxlbiBvYgorICAgICBzaWUgYmVzY2hhdHRldCB3ZXJkZW4gd29sbGVuLgorCisgICAgIEdpYnQgZGllIEZ1bmt0aW9uIDAgenVydWVjaywgd2lyZCBlaW4gU2hhZG93IGF1ZiBkYXMgT2JqZWt0IGVybGF1YnQsCisgICAgIHNvbnN0IHNjaGxhZWd0IGVzIGZlaGwuCisKK0JFSVNQSUVMOgorICAgICAvLyBnZW5lcmVsbCBrZWluZSBCZXNjaGF0dHVuZworICAgICBpbnQgcXVlcnlfcHJldmVudF9zaGFkb3cob2JqZWN0IHdobykgeworICAgICAgcmV0dXJuIDE7CisgICAgIH0KKworICAgICAvLyBCZXNjaGF0dHVuZyBkdXJjaCBvZmZpemllbGxlIE9iamVrdGUgZXJsYXVidAorICAgICBpbnQgcXVlcnlfcHJldmVudF9zaGFkb3cob2JqZWN0IHdobykgeworICAgICAgaWYod2hvICYmICFzdHJzdHIob2JqZWN0X25hbWUod2hvKSwiL3N0ZC9wbGF5ZXIiKSkKKyAgICAgICByZXR1cm4gMDsKKyAgICAgIHJldHVybiAxOworICAgICB9CisKK1NJRUhFIEFVQ0g6CisgICAgIFJlY2h0ZToJICAgICBxdWVyeV9hbGxvd19zaGFkb3coTSkKKyAgICAgR2VuZXJlbGw6CSAgICAgc2hhZG93KEUpLCB1bnNoYWRvdyhFKQorICAgICBJbmZvcm1hdGlvbmVuOiAgcXVlcnlfc2hhZG93aW5nKEUpCisKKzIwLiBNYWkgMjAwNCBHbG9pbnNvbgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2RvYy9sZnVuL3F1ZXJ5X3JlYWxfbmFtZSBiL2RvYy9sZnVuL3F1ZXJ5X3JlYWxfbmFtZQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5kNzYzM2RlCi0tLSAvZGV2L251bGwKKysrIGIvZG9jL2xmdW4vcXVlcnlfcmVhbF9uYW1lCkBAIC0wLDAgKzEsMTUgQEAKK3F1ZXJ5X3JlYWxfbmFtZSgpCisKK1NZTk9QU0lTOgorCXN0cmluZyBxdWVyeV9yZWFsX25hbWUodm9pZCkKKworREVTQ1JJUFRJT046CisJVGhlIHJlc3VsdCBvZiB0aGlzX3BsYXllcigpLT5xdWVyeV9yZWFsX25hbWUoKSBpcyB1c2VkIGFzCisJZGVmYXVsdCBhcmd1bWVudCBmb3IgdGhlIGVmdW4gd2l6bGlzdCgpLgorCisJSWYgTE9HX1NIT1VUIHdhcyAjZGVmaW5lZCBpbiB0aGUgcGFyc2VyIGF0IGNvbXBpbGUgdGltZSwgdGhlCisJZWZ1biBzaG91dCB3aWxsIHVzZSBxdWVyeV9yZWFsX25hbWUoKSB0byBsb2cgdGhlIHNob3V0ZXIncworCW5hbWUuCisKK1NFRSBBTFNPOgorCXNob3V0KEUpLCB3aXpsaXN0KEUpCmRpZmYgLS1naXQgYS9kb2MvbGZ1bi9xdWVyeV93ZWlnaHRfY29udGVudHMgYi9kb2MvbGZ1bi9xdWVyeV93ZWlnaHRfY29udGVudHMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMTM5ODBmOAotLS0gL2Rldi9udWxsCisrKyBiL2RvYy9sZnVuL3F1ZXJ5X3dlaWdodF9jb250ZW50cwpAQCAtMCwwICsxLDIwIEBACitxdWVyeV93ZWlnaHRfY29udGVudHMoKQorCitGVU5LVElPTjoKKyAgICAgaW50IHF1ZXJ5X3dlaWdodF9jb250ZW50cygpCisKK0RFRklOSUVSVCBJTjoKKyAgICAgL3N0ZC9jb250YWluZXIvcmVzdHJpY3Rpb25zLmMKKworQVJHVU1FTlRFOgorICAgICBrZWluZQorCitCRVNDSFJFSUJVTkc6CisgICAgIEdpYnQgZGFzIEdld2ljaHQgZGVzIEluaGFsdGVzIGRlcyBCZWhhZWx0ZXJzIHp1cnVlY2sgKG9obmUKKyAgICAgQmVydWVja3NpY2h0aWd1bmcgdm9uIFBfV0VJR0hUX1BFUkNFTlQhKQorCitSVWVDS0dBQkVXRVJUOgorICAgICBEYXMgR2V3aWNodCBkZXMgQmVoYWVsdGVyaW5oYWx0ZXMuCisKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KK0xhc3QgbW9kaWZpZWQ6IFdlZCBNYXkgOCAxMDoyMzozMiAxOTk2IGJ5IFdhcmdvbgpkaWZmIC0tZ2l0IGEvZG9jL2xmdW4vcmVkdWNlX2hpdF9wb2ludHMgYi9kb2MvbGZ1bi9yZWR1Y2VfaGl0X3BvaW50cwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4zOWIzMzY4Ci0tLSAvZGV2L251bGwKKysrIGIvZG9jL2xmdW4vcmVkdWNlX2hpdF9wb2ludHMKQEAgLTAsMCArMSw0MyBAQAorcmVkdWNlX2hpdF9wb2ludHMoKQorRlVOS1RJT046CisgICAgaW50IHJlZHVjZV9oaXRfcG9pbnRzKGludCBkYW1hZ2UpCisKK0RFRklOSUVSVCBJTjoKKyAgICAvc3RkL2xpdmluZy9saWZlLmMKKworQVJHVU1FTlRFOgorICAgIGludCBkYW1hZ2UJLSBkZXIgenVnZWZ1ZWd0ZSBTY2hhZGVuCisKK0JFU0NIUkVJQlVORzoKKyAgICBEZW0gTGViZXdlc2VuIHdlcmRlbiBkYW1hZ2UgTGViZW5zcHVua3RlIGFiZ2V6b2dlbiwgYWJlciBkZXIKKyAgICBXZXJ0IHdpcmQgaGludGVyaGVyIG5pY2h0IGtsZWluZXIgYWxzIDEgc2VpbiB1bmQgZGFzIExlYmV3ZXNlbgorICAgIHdpcmQgZGFkdXJjaCBuaWNodCBzdGVyYmVuLgorCitSVUVDS0dBQkVXRVJUOgorICAgIERpZSB2ZXJibGVpYmVuZGVuIExlYmVuc3B1bmt0ZS4KKworQkVJU1BJRUxFOgorICAgIHdyaXRlKCJQbG9ldHpsaWNoIHNjaGllc3N0IGVpbmUgc2NoZXVzc2xpY2hlIEtyZWF0dXIgYXVzIGRlciBQZnVldHplICIrCisgICAgICAgICAgImhlcmF1cyB1bmRcbmJlaXNzdCBEaWNoIGlucyBCZWluLCBzaWUgdmVyc2Nod2luZGV0IHNvIHNjaG5lbGwsICIrCisgICAgICAgICAgIndpZSBzaWUgZ2Vrb21tZW4gaXN0LlxuIik7CisgICAgdGhpc19wbGF5ZXIoKS0+cmVkdWNlX2hpdF9wb2ludHMoNTApOworICAgIChBdXN6dWcgYXVzIC9wbGF5ZXJzL2JvaW5nL2ZyaWVkaG9mL3Jvb20vY2F0MXg5KQorCitCRU1FUktVTkdFTjoKKyAgICBkYW1hZ2Uga2FubiBhdWNoIGVpbiBuZWdhdGl2ZXIgV2VydCBzZWluLCBkYW5uIHdlcmRlbiBkZW0gTGViZXdlc2VuCisgICAgZGllc2UgTGViZW5zcHVua3RlIGd1dGdlc2NocmllYmVuIHVuZCBhdWYgZGllIGFrdHVlbGxlbiBMZWJlbnNwdW5rdGUKKyAgICBhZGRpZXJ0LiBEYSBkaWVzIGVpbmUgRm9ybSBkZXIgSGVpbHVuZyBpc3QsIG51ciBuYWNoIFJ1ZWNrc3ByYWNoZSBtaXQKKyAgICBkZW0gUmVnaW9uc21hZ2llciB2ZXJ3ZW5kZW4uCisKKyAgICBCZWkgSGVpbHN0ZWxsZW4gc29sbHRlIGVpbmUgZXZ0bC4gSGVpbHVuZyBkZXMgU3BpZWxlcnMgbWl0IGRlciBlaWdlbnMKKyAgICBkYWZ1ZXIgZWluZ2VyaWNodGV0ZW4gRnVua3Rpb24gY2hlY2tfYW5kX3VwZGF0ZV90aW1lZF9rZXkgcmVhbGlzaWVydAorICAgIHdlcmRlbi4KKworU0lFSEUgQVVDSDoKKyAgICBHZWdlbnBhcnQ6CXJlc3RvcmVfaGl0X3BvaW50cygpCisgICAgVmVyd2FuZHQ6CWRvX2RhbWFnZSgpLCBEZWZlbmQoKSwgcmVkdWNlX3NwZWxsX3BvaW50cygpCisgICAgUHJvcHM6CVBfSFAKKyAgICBLb256ZXB0OgloZWlsdW5nCisKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KK0xhc3QgbW9kaWZpZWQ6IFNhdCBEZWMgMTMgMDE6MDA6NDcgMTk5OSBieSBUaWxseQpkaWZmIC0tZ2l0IGEvZG9jL2xmdW4vcmVkdWNlX3NwZWxsX3BvaW50cyBiL2RvYy9sZnVuL3JlZHVjZV9zcGVsbF9wb2ludHMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMTNjMDYzMAotLS0gL2Rldi9udWxsCisrKyBiL2RvYy9sZnVuL3JlZHVjZV9zcGVsbF9wb2ludHMKQEAgLTAsMCArMSwyNyBAQAorcmVkdWNlX3NwZWxsX3BvaW50cygpCitGVU5LVElPTjoKKyAgICB2b2lkIHJlZHVjZV9zcGVsbF9wb2ludHMoaW50IHBvaW50cykKKworREVGSU5JRVJUIElOOgorICAgIC9zdGQvbGl2aW5nL2xpZmUuYworCitBUkdVTUVOVEU6CisgICAgcG9pbnRzOiBBbnphaGwgZGVyIEtvbnplbnRyYXRpb25zcHVua3RlIGRpZSBhYmdlem9nZW4gd2VyZGVuIHNvbGxlbi4KKworQkVTQ0hSRUlCVU5HOgorICAgIERlbSBMZWJld2VzZW4gd2VyZGVuIHBvaW50cyBLb256ZW50cmF0aW9uc3B1bmt0ZSBhYmdlem9nZW4uIEZhbGxzCisgICAgZGFzIExlYmV3ZXNlbiB3ZW5pZ2VyIEtvbnplbnRyYXRpb25zcHVua3RlIGhhdCwgYWxzIGFiZ2V6b2dlbiB3ZXJkZW4KKyAgICBzb2xsZW4sIHdlcmRlbiBzaWUgYXVmIDAgZ2VzZXR6dC4KKworQkVJU1BJRUxFOgorICAgIHdyaXRlKCJEYXMgYm9lc2UgYm9lc2UgTW9uc3RlciBzY2hhdXQgRGljaCBncmltbWlnIGFuIHVuZCBsYWJ0IHNpY2ggYW4gIgorICAgICAgICAgKyJEZWluZXIgS29uemVudHJhdGlvbi5cbiIpOworICAgIHRoaXNfcGxheWVyKCktPnJlZHVjZV9zcGVsbF9wb2ludHMoNTApOworCitTSUVIRSBBVUNIOgorICAgIEdlZ2VucGFydDoJcmVzdG9yZV9zcGVsbF9wb2ludHMoTCkKKyAgICBWZXJ3YW5kdDoJcmVkdWNlX2hpdF9wb2ludHMoTCksIGJ1ZmZlcl9zcChMKQorICAgIFByb3BzOglQX1NQCisgICAgS29uemVwdDoJaGVpbHVuZworCisyMy5GZWIuMjAwNCBHbG9pbnNvbgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2RvYy9sZnVuL3JlZ2lzdGVyX21vZGlmaWVyIGIvZG9jL2xmdW4vcmVnaXN0ZXJfbW9kaWZpZXIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMzU5YTA1MAotLS0gL2Rldi9udWxsCisrKyBiL2RvYy9sZnVuL3JlZ2lzdGVyX21vZGlmaWVyCkBAIC0wLDAgKzEsMjQgQEAKK3JlZ2lzdGVyX21vZGlmaWVyKCkKK0ZVTktUSU9OOgorICAgICB2b2lkIHJlZ2lzdGVyX21vZGlmaWVyKG9iamVjdCBtb2RpZmllcikKKworREVGSU5JRVJUIElOOgorICAgICAvc3RkL2xpdmluZy9hdHRyaWJ1dGVzLmMKKw0KK1BBUkFNRVRFUjoNCisgICAgIG1vZGlmaWVyCS0gT2JqZWt0IG1pdCBQX1hfQVRUUl9NT0Qgb2RlciBQX01fQVRUUl9NT0QNCisKK0JFU0NIUkVJQlVORzoKKyAgICAgUmVnaXN0cmllcnQgZWluZW4gTW9kaWZpZXIgaW0gU3BpZWxlci4gV2lyZCBkdXJjaCBJbnNlcnRTZW5zaXRpdmVPYmplY3QKKyAgICAgYmV6aWVodW5nc3dlaXNlIGJlaW0gQW56aWVoZW4gb2RlciBadWVja2VuIGdlcnVmZW4uCisgICAgIE11c3MgbmljaHQgZGlyZWt0IGdlcnVmZW4gd2VyZGVuLiBCZWkgVmVyYWVuZGVydW5nZW4gdm9uIE1vZGlmaWthdG9yZW4KKyAgICAgc29sbHRlIHN0YXR0ZGVzc2VuIFVwZGF0ZUF0dHJpYnV0ZXMgZ2VydWZlbiB3ZXJkZW4uICAgICAKKworU0lFSEUgQVVDSDoKKyAgICAgUXVlcnlBdHRyaWJ1dGUoKSwgUXVlcnlSZWFsQXR0cmlidXRlKCksIFF1ZXJ5QXR0cmlidXRlT2Zmc2V0KCksDQorICAgICBTZXRBdHRyKCksIFNldEF0dHJpYnV0ZSgpLCBTZXRSZWFsQXR0cmlidXRlKCksIFVwZGF0ZUF0dHJpYnV0ZXMoKSwNCisgICAgIGRlcmVnaXN0ZXJfbW9kaWZpZXIoKSwgUF9BVFRSSUJVVEVTLCBQX0FUVFJJQlVURVNfT0ZGU0VUUywgCisgICAgIFBfQVRUUklCVVRFU19NT0RJRklFUixQX1hfQVRUUl9NT0QsIFBfTV9BVFRSX01PRCwgCisgICAgIC9zdGQvbGl2aW5nL2F0dHJpYnV0ZXMuYw0KKworMTMuSnVuLjIwMDQsIE11YWRpYgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2RvYy9sZnVuL3JlbW92ZSBiL2RvYy9sZnVuL3JlbW92ZQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4yMWZjNTlhCi0tLSAvZGV2L251bGwKKysrIGIvZG9jL2xmdW4vcmVtb3ZlCkBAIC0wLDAgKzEsMzQgQEAKK3JlbW92ZSgpCisKK0ZVTktUSU9OOgorICAgICB2YXJhcmdzIGludCByZW1vdmUoaW50IHNpbGVudCk7CisKK0RFRklOSUVSVCBJTjoKKyAgICAgL3N0ZC90aGluZy9tb3ZpbmcuYworICAgICAvc3RkL2xpdmluZy9tb3ZpbmcuYworICAgICAvc3RkL3Jvb20vbW92aW5nLmMKKworQVJHVU1FTlRFOgorICAgICBzaWxlbnQKKyAgICAgICAgICBGYWxscyB1bmdsZWljaCAwLCBzbyB3ZXJkZW4gYmVpbSBaZXJzdG9lcmVuIGtlaW5lIE1lbGR1bmdlbgorICAgICAgICAgIGF1c2dlZ2ViZW4uCisKK0JFU0NIUkVJQlVORzoKKyAgICAgQmVpbSBBdWZydWYgZGllc2VyIEZ1bmt0aW9uIGVudGZlcm50IHNpY2ggZGFzIE9iamVrdCBzZWxic3QuIER1cmNoCisgICAgIFVlYmVybGFkZW4gZGllc2VyIEZ1bmt0aW9uIGthbm4gbWFuIGRpZXNlbiBWb3JnYW5nIG5vY2ggZHVyY2ggZGllCisgICAgIEF1c2dhYmUgdm9uIE1lbGR1bmdlbiBrb21tZW50aWVyZW4sIG9kZXIgaXJnZW5kd2VsY2hlIERhdGVuCisgICAgIGFic3BlaWNoZXJuLCBvZGVyIGRhcyBaZXJzdG9lcmVuIGdhbnogdmVyaGluZGVybiAoYXVmIGRpZXNlbSBXZWcuLi4gTWl0CisgICAgIGRlc3RydWN0KCkga2FubiBkYXMgT2JqZWt0IGltbWVyIG5vY2ggZGlyZWt0IHplcnN0b2VydCB3ZXJkZW4hKQorCitSVWVDS0dBQkVXRVJUOgorICAgICAxLCB3ZW5uIHNpY2ggZGFzIE9iamVrdCBlcmZvbGdyZWljaCBzZWxic3QgemVyc3RvZXJ0IGhhdCwgc29uc3QgMC4KKworQkVNRVJLVU5HRU46CisgICAgIE5hY2ggZWluZW0gZXJmb2xncmVpY2hlbiA6OnJlbW92ZSgpIGdlbHRlbiBkaWUgc2VsYmVuIEVpbnNjaHJhZW5rdW5nZW4KKyAgICAgd2llIG5hY2ggZWluZW0gZGVzdHJ1Y3QoKSEKKworU0lFSEUgQVVDSDoKKyAgICAgZGVzdHJ1Y3QoKQorCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCitMYXN0IG1vZGlmaWVkOiBXZWQgTWF5IDggMTA6MjM6NDAgMTk5NiBieSBXYXJnb24KZGlmZiAtLWdpdCBhL2RvYy9sZnVuL3JlbW92ZV9tdWx0aXBsZSBiL2RvYy9sZnVuL3JlbW92ZV9tdWx0aXBsZQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi42MzQwZmQxCi0tLSAvZGV2L251bGwKKysrIGIvZG9jL2xmdW4vcmVtb3ZlX211bHRpcGxlCkBAIC0wLDAgKzEsNTggQEAKK3JlbW92ZV9tdWx0aXBsZSgpCitGVU5LVElPTjoKKyAgICAgcHVibGljIHZhcmFyZ3MgaW50IHJlbW92ZV9tdWx0aXBsZShpbnQgbGltaXQsIG1peGVkIGZ1bik7CisKK0RFRklOSUVSVCBJTjoKKyAgICAgL3N0ZC9jb250YWluZXIvaXRlbXMuYworCitBUkdVTUVOVEU6CisgICAgIGxpbWl0OiBBbnphaGwgZ2xlaWNoZXIgT2JqZWt0ZSwgZGllIHZlcmJsZWliZW4gc29sbGVuLgorICAgICBmdW46ICAgRnVua3Rpb25zbmFtZSAoc3RyaW5nKSBvZGVyIENsb3N1cmUuCisKK0JFU0NIUkVJQlVORzoKKyAgICAgV2lyZCBkaWVzZSBGdW5rdGlvbiBhdWZnZXJ1ZmVuLCB3ZXJkZW4gYWxsZSBnbGVpY2hlbiBPYmpla3RlCisgICAgIChzdGFuZGFyZG1hZXNzaWcgZGVmaW5pZXJ0IGFscyBnbGVpY2hlciBMYWRlbmFtZSwgZ2xlaWNoZQorICAgICAgS3VyemJlc2NocmVpYnVuZyB1bmQgZ2xlaWNoZSBMYW5nYmVzY2hyZWlidW5nKSwgZGVyZW4gQW56YWhsIDxsaW1pdD4KKyAgICAgdWViZXJzY2hyZWl0ZXQsIGVudGZlcm50LgorICAgICAKKyAgICAgQXVzbmFobWVuOiBMZWJld2VzZW4gdW5kIHBlciBBZGRJdGVtKCkgaGluenVnZWZ1ZWd0ZSBPYmpla3RlLgorCisgICAgIE1pdCBkZW0gQXJndW1lbnQgPGZ1bj4gbGFzc2VuIHNpY2ggZGllIEtyaXRlcmllbiBmdWVyIGRpZSAiR2xlaWNoaGVpdCIKKyAgICAgYWVuZGVybi4KKyAgICAgSXN0IDxmdW4+IGVpbiBGdW5rdGlvbnNuYW1lLCB3aXJkIGRpZXNlIEZ1bmt0aW9uIGFuIGFsbGVuIGluIEZyYWdlCisgICAgIGtvbW1lbmVuZGVuIE9iamVrdGVuIGltIENvbnRhaW5lciBnZXJ1ZmVuLgorICAgICBJc3QgPGZ1bj4gZWluZSBDbG9zdXJlLCB3ZXJkZW4gc2llIGZ1ZXIgamVkZXMgaW4gRnJhZ2Uga29tbWVuZGUgT2JqZWt0CisgICAgIGVpbm1hbCBnZXJ1ZmVuIHVuZCBpaHIgZGFzIE9iamVrdCB1ZWJlcmdlYmVuLgorICAgICBBbHMgJ2dsZWljaCcgd2VyZGVuIGFsbGUgT2JqZWt0ZSBiZXRyYWNodGV0LCBmdWVyIGRpZSA8ZnVuPiBkZW4gZ2xlaWNoZW4KKyAgICAgV2VydCB6dXJ1ZWNrbGllZmVydC4KKyAgICAgT2JqZWt0ZSwgZnVlciBkaWUgPGZ1bj4gMCB6dXJ1ZWNrbGllZmVydCwgd2VyZGVuIGlnbm9yaWVydC4KKworQkVNRVJLVU5HRU46CisgICAgIDEpIFJhZXVtZSBydWZlbiByZW1vdmVfbXVsdGlwbGUoMykgc3RhbmRhcmRtYWVzc2lnIGltIHJlc2V0KCksIGplZG9jaAorICAgICAgICBudXIsIHdlbm4ga2VpbiBTcGllbGVyIGFud2VzZW5kIGlzdCB1bmQgbWVociBhbHMgMTAgT2JqZWt0ZSBpbSBSYXVtCisgICAgICAgIHNpbmQuCisgICAgIDIpIHJlbW92ZV9tdWx0aXBlKDApIGVudGZlcm50IGFsbGUgZW50ZmVybmJhcmVuIE9iamVrdGUgKHMuIEF1c25haG1lbikuCisKK0JFSVNQSUVMRToKKyAgICAgRWluIENvbnRhaW5lciBlbnRoYWVsdCA1IEZhY2tlbG4uIEltIHJlc2V0KCkgcnVmdCBtYW4gbnVuCisgICAgIHJlbW92ZV9tdWx0aXBsZSgzKSBhdWYuIEFuc2NobGllc3NlbmQgc2luZCBub2NoIDMgRmFja2VsbiB1ZWJyaWcuCisgICAgIAorICAgICBBbGxlIHZlcmJsZWliZW5kZW4gT2JqZWt0ZSBpbSBDb250YWluZXIgc29sbGVuIHVudGVyc2NoaWVkbGljaGUgTmFtZW4KKyAgICAgaGFiZW46CisgICAgIHJlbW92ZV9tdWx0aXBsZSgxLCAibmFtZSIpOworCisgICAgIEVpbiBDb250YWluZXIgc29sbCBudXIgZWluIE9iamVrdCBiZWhhbHRlbiwgd2VsY2hlcyBncm9lc3NlciBhbHMgNzAgY20KKyAgICAgaXN0OgorICAgICBpbnQgZ3JvZXNzZW5fZmlsdGVyKG9iamVjdCBvYikgeworICAgICAgIGlmIChvYi0+UXVlcnlQcm9wKFBfU0laRSA+IDcwKSkgcmV0dXJuIDE7CisgICAgICAgcmV0dXJuIDA7IC8vIGRhbWl0IGRhcyBPYmpla3QgaWdub3JpZXJ0IHdpcmQuCisgICAgICAgLy8gQWx0ZXJuYXRpdiBrb2VubnRlIG1hbiBzdGF0dCAwIGF1Y2ggb2JqZWN0X25hbWUob2IpIHp1cnVlY2tsaWVmZXJuLAorICAgICAgIC8vIGRhbm4gc2luZCBkaWVzZSBPYmpla3RlIGFsbGUgdW50ZXJzY2hpZWRsaWNoLgorICAgICB9CisgICAgIC4uLgorICAgICByZW1vdmVfbXVsdGlwbGUoMSwgIydncm9lc3Nlbl9maWx0ZXIpOworCitTSUVIRSBBVUNIOgorICAgICByZXNldCgpCisKKzMxLjAxLjIwMDksIFplc3N0cmEKZGlmZiAtLWdpdCBhL2RvYy9sZnVuL3Jlc2V0IGIvZG9jL2xmdW4vcmVzZXQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMDdhMjJlZQotLS0gL2Rldi9udWxsCisrKyBiL2RvYy9sZnVuL3Jlc2V0CkBAIC0wLDAgKzEsODggQEAKK3Jlc2V0KCkKK0ZVTktUSU9OOgorICAgICB2b2lkIHJlc2V0KCk7CisgICAgIHByb3RlY3RlZCB2b2lkIHJlc2V0KCk7CisKK0JFU0NIUkVJQlVORzoKKyAgICAgcmVzZXQoKSB3aXJkIHZvbSBHYW1lRHJpdmVyIGluIGplZGVtIE9iamVrdCBhdWZnZXJ1ZmVuLCB1bSBkZW0gT2JqZWt0CisgICAgIGRpZSBHZWxlZ2VuaGVpdCB6dSBnZWJlbiwgc2ljaCB3aWVkZXIgaW4gZWluZW4gZGVmaW5pZXJ0ZW4gWnVzdGFuZCB6dQorICAgICB2ZXJzZXR6ZW46IFJhZXVtZSB1bmQgTW9uc3RlciBlcnpldWdlbiBwZXIgQWRkSXRlbSgpIGVpbmdlZnVlZ3RlIHVuZAorICAgICB6d2lzY2hlbnplaXRsaWNoIGVudGZlcm50ZSBPYmpla3RlIG5ldSwgVHVlcmVuIHNjaGxpZXNzZW4gc2ljaCAuLi4KKworICAgICBTb2xhbmdlIGRhcyBPYmpla3QgImJlbnV0enQiIHdpcmQsIHdpcmQgcmVzZXQoKSByZWdlbG1hZXNzaWcgYWxsZQorICAgICA0NSBNaW51dGVuICgrLy0xNSBNaW51dGVuKSBtaXQgZWluZXIgQXVmbG9lc3VuZyB2b24gMnMgYXVmZ2VydWZlbgorICAgICAoZC5oLiBkZXIgRHJpdmVyIHBydWVmdCB1bmQgcnVmdCBudXIgYWxsZSAyIFNla3VuZGVuIHJlc2V0KCkgYXVmCisgICAgIGFsbGVuIE9iamVrdGVuKS4KKworICAgICBXaXJkIGVpbmUgT2JqZWt0IG5pY2h0IG1laHIgImJlbnV0enQiLCBkLmguIHdpcmQgYW4gZWluZW0gT2JqZWt0IG5pY2h0CisgICAgIHZvbiBhdXNzZW4gKGR1cmNoIGNhbGxfb3RoZXIgZXRjLikgX25hY2hfIGVpbmVtIHJlc2V0KCkgZWluZSBNZXRob2RlCisgICAgIGJ6dy4gTEZ1biBnZXJ1ZmVuLCBzbyBiZWtvbW10IGRpZXNlcyBPYmpla3Qga2VpbmVuIHdlaXRlcmVuIHJlc2V0KCkuCisKKyAgICAgRWluIEZ1bmt0aW9uc2F1ZnJ1ZiBhbSBPYmpla3Qgc2NoYWx0ZXQgZGVuIHJlc2V0KCkgd2llZGVyIGVpbi4KKyAgICAgQmVpIGVpbmVtIE9iamVrdCBpbiBlaW5lbSBDb250YWluZXIgd2FlcmUgZGFzIHpCIGRhcyBCZW51dHplbiBkZXMKKyAgICAgQ29udGFpbmVycyAoSGluZWlubGVnZW4vSGVyYXVzbmVobWVuL0hpbmVpbnNlaGVuKS4gRGFzIGthbm4KKyAgICAgc2VociBsYW5nZSBkYXVlcm4uCisKKyAgICAgRGllIEFic2NoYWx0dW5nIGthbm4gbWFuIHZlcmhpbmRlcm4sIGluZGVtIG1hbiBpbSByZXNldCgpIHBlciBjYWxsX291dCgpCisgICAgIGVpbmUgRnVua3Rpb24gaW0gT2JqZWt0IHJ1ZnQuIERpZXMgYWJlciBiaXR0ZSBfbnVyXyBtYWNoZW4sIHdlbm4gZGFzCisgICAgIE9iamVrdCBfdW5iZWRpbmd0XyBhdWYgZWluZW4gc3RhZW5kaWdlbiBSZXNldCBhbmdld2llc2VuIGlzdCwgYXVjaCB3ZW5uCisgICAgIGVzIG5pY2h0ICJiZW51dHp0IiB3aXJkLgorCisgICAgIEFlbmRlcm4gbGFlc3N0IHNpY2ggZGllIFplaXQgendpc2NoZW4gZGVuIEF1ZnJ1ZmVuIHZvbiByZXNldCgpIG1pdAorICAgICBzZXRfbmV4dF9yZXNldCgpLiBEaWUgQXVmbG9lc3VuZyB2b24gMnMga2FubiBtYW4gbmljaHQgYWVuZGVybi4KKworQkVNRVJLVU5HRU46CisgICAgIC0gbWFuIGthbm4gcmVzZXQoKSBudXR6ZW4sIHVtIEVyZWlnbmlzc2UgYXVzenVsb2VzZW46CisgICAgICAgLSBlcyBpc3QgYmlsbGlnZXIgYWxzIGxhbmdlIGNhbGxfb3V0KCkKKyAgICAgICAtIHNpZWhlIFdhcm51bmcgYmV6dWVnbGljaCBBYnNjaGFsdGVuIGRlcyByZXNldAorICAgICAtIG1hbiBrYW5uIHJlc2V0KCkgYWxzIHByb3RlY3RlZCBvZGVyIHN0YXRpYyBkZWZpbmllcmVuLCB3ZW5uIG1hbiBuaWNodAorICAgICAgIG1vZWNodGUsIGRhc3MgZGllIEZ1bmt0aW9uIHZvbiBhdXNzZW4gZ2VydWZlbiB3ZXJkZW4ga2Fubi4gRGllcworICAgICAgIHZlcmhpbmRlcnQgRWluZmx1c3NuYWhtZSB2b24gYXVzc2VuLCBrYW5uIGFiZXIgYXVjaCBEZWJ1Z21hc3NuYWhtZW4KKyAgICAgICBlcnNjaHdlcmVuLiBFcyBpc3QgYWJlciBkZW5ub2NoIGZ1ZXIgZWluaWdlIE9iamVrdGUgc2lubnZvbGwuCisgICAgIC0gZGVyIERyaXZlciBydWZ0IHJlc2V0KCkgdW5hYmhhZW5naWcgdm9uIHp1c2FldHpsaWNoZW4sICJtYW51ZWxsZW4iCisgICAgICAgUnVmZW4gdm9uIHJlc2V0KCkKKyAgICAgICAtIGtlaW5lIFJ1ZmUgdm9uIHJlc2V0KCkgbWl0IGNhbGxfb3V0KCkgYXVzIHJlc2V0KCkgKENhbGxvdXQtS2V0dGVuLQorICAgICAgICAgYmlsZHVuZyBkcm9odCksIGZ1ZXIgc29sY2hlIEZhZWxsZSBpc3Qgc2V0X25leHRfcmVzZXQoRSkgZGEhCisgICAgIC0gYmVpIEJsdWVwcmludHMgc29sbHRlIGRlciByZXNldCgpIGluIGRlciBSZWdlbCBhYmdlc2NoYWx0ZXQgd2VyZGVuLAorICAgICAgIHNvZmVybiBlciBuaWNodCBhdWYgd2ljaHRpZ2UgQXVmZ2FiZW4gaW4gZGVyIEJQIHp1IHR1biBoYXQ6CisgICAgICAgcHJvdGVjdGVkIHZvaWQgY3JlYXRlKCkgeworICAgICAgICAgaWYoIWNsb25lcChNRSkpIHsKKyAgICAgICAgICAgICBzZXRfbmV4dF9yZXNldCgtMSk7CisgICAgICAgICAgICAgcmV0dXJuOworICAgICAgICAgfQorICAgICAgICAgOjpjcmVhdGUoKTsKKyAgICAgICAgIC4uLgorICAgICAgIH0KKworQkVJU1BJRUxFOgorICAgICAvLyBlaW4gTlBDLCBkZXIgYmVpIGplZGVtIHJlc2V0KCkgc2NoYXV0LCBvYiB1bSBpaG4gaGVydW0gYmVzc2VyZQorICAgICAvLyBBdXNydWVzdHVuZyBsaWVndCBhbHMgZGllLCBkaWUgZXIgc2VsYnN0IGdlcmFkZSB0cmFlZ3Q6CisKKyAgICAgLi4uCisgICAgIHZvaWQgcmVzZXQoKSB7CisgICAgICAgOjpyZXNldCgpOworCisgICAgICAgaWYoY2xvbmVwKHRoaXNfb2JqZWN0KCkpICYmIGVudmlyb25tZW50KCkpIHsKKyAgICAgICAgIG9iamVjdCBvOworICAgICAgICAgbz1maXJzdF9pbnZlbnRvcnkoZW52aXJvbm1lbnQoKSk7CisgICAgICAgICB3aGlsZShvKSB7CisgICAgICAgICAgICAgbG9va19mb3JfZ29vZF93ZWFwb25zX2FuZF91c2VfdGhlbV9pZl9iZXR0ZXIobyk7CisgICAgICAgICAgICAgbz1uZXh0X2ludmVudG9yeShvKTsKKyAgICAgICAgIH0KKyAgICAgICB9CisgICAgIH0KKworICAgICAvLyBlaW4gcmVzZXQgZnVlciBlaW5lbiBHZWdlbnN0YW5kLCBkZXIgdmllbGxlaWNodCBpbgorICAgICAvLyBpbiBlaW5lbSBDb250YWluZXIgbGFuZGV0IHVuZCBkYW5uIHdlaXRlciBlaW5lbiByZXNldAorICAgICAvLyBiZWtvbW1lbiBtdXNzL3NvbGwKKworICAgICB2b2lkIHJlc2V0KCkgeworICAgICAgIC8vIGlyZ2VuZCBlaW4gQ29kZSBoaWVyCisgICAgICAgY2FsbF9vdGhlcih0aGlzX29iamVjdCgpLCAiPz8/Iik7IC8vIGVpbmZhY2ggbnVyIHdhcyBhdWZydWZlbgorICAgICB9CisKK1NJRUhFIEFVQ0g6CisgICAgIGNsZWFuX3VwKCksIHNldF9uZXh0X3Jlc2V0KEUpLCBxdWVyeV9uZXh0X3Jlc2V0KEUpCisgICAgIG1lbW9yeQorCitsZXR6dGUgQWVuZGVydW5nOiAyMDA5LTAxLTE0IFJ1bWF0YQpkaWZmIC0tZ2l0IGEvZG9jL2xmdW4vcmVzdG9yZV9oaXRfcG9pbnRzIGIvZG9jL2xmdW4vcmVzdG9yZV9oaXRfcG9pbnRzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjdhZTM0NTcKLS0tIC9kZXYvbnVsbAorKysgYi9kb2MvbGZ1bi9yZXN0b3JlX2hpdF9wb2ludHMKQEAgLTAsMCArMSwzMyBAQAorcmVzdG9yZV9oaXRfcG9pbnRzKCkKK0ZVTktUSU9OOgorICAgIGludCByZXN0b3JlX2hpdF9wb2ludHMoaW50IGhlYWwpCisKK0FSR1VNRU5URToKKyAgICBpbnQgaGVhbAktIGRlciB6dSBoZWlsZW5kZSBCZXRyYWcKKworQkVTQ0hSRUlCVU5HOgorICAgIERlbSBMZWJld2VzZW4gd2VyZGVuIGhlYWwgTGViZW5zcHVua3RlIGF1Zmdlc2NobGFnZW4uIERpZSBIUAorICAgIHN0ZWlnZW4gbmljaHQgdWViZXIgUF9NQVhfSFAuCisKK1JVRUNLR0FCRVdFUlQ6CisgICAgRGllIHZlcmJsZWliZW5kZW4gTGViZW5zcHVua3RlLgorCitCRUlTUElFTEU6CisgICAgd3JpdGUoIlBsb2V0emxpY2ggc2NoaWVzc3QgZWluZSBzY2hldXNzbGljaGUgS3JlYXR1ciBhdXMgZGVyIFBmdWV0emUgIisKKyAgICAgICAgICAiaGVyYXVzIHVuZFxuc2NobGVpbXQgZGljaCBoZWlsZW5kIHZvbGwsIHNpZSB2ZXJzY2h3aW5kZXQgc28sICIrCisgICAgICAgICAgIndpZSBzaWUgZ2Vrb21tZW4gaXN0LlxuIik7CisgICAgdGhpc19wbGF5ZXIoKS0+cmVzdG9yZV9oaXRfcG9pbnRzKDUwKTsKKworQkVNRVJLVU5HRU46CisgICAgQmVpIEhlaWxzdGVsbGVuIHNvbGx0ZSBlaW5lIGV2dGwuIEhlaWx1bmcgZGVzIFNwaWVsZXJzIG1pdCBkZXIgZWlnZW5zCisgICAgZGFmdWVyIGVpbmdlcmljaHRldGVuIEZ1bmt0aW9uIGNoZWNrX2FuZF91cGRhdGVfdGltZWRfa2V5IHJlYWxpc2llcnQKKyAgICB3ZXJkZW4uCisgICAgQW5zb25zdGVuIGJpdHRlIGJ1ZmZlcl9ocCgpIGJlbnV0emVuIHVuZCBkaWUgS29uemVwdHNlaXRlIGxlc2VuIQorCitTSUVIRSBBVUNIOgorICAgIEdlZ2VucGFydDoJcmVkdWNlX2hpdF9wb2ludHMoKQorICAgIFZlcndhbmR0OglidWZmZXJfaHAoKSwgaGVhbF9zZWxmKCksIHJlc3RvcmVfc3BlbGxfcG9pbnRzKCkKKyAgICBQcm9wczoJUF9IUAorICAgIEtvbnplcHQ6CWhlaWx1bmcKKworMjMuRmViLjIwMDQgR2xvaW5zb24KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9kb2MvbGZ1bi9yZXN0b3JlX3NwZWxsX3BvaW50cyBiL2RvYy9sZnVuL3Jlc3RvcmVfc3BlbGxfcG9pbnRzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjg3YzJhNmMKLS0tIC9kZXYvbnVsbAorKysgYi9kb2MvbGZ1bi9yZXN0b3JlX3NwZWxsX3BvaW50cwpAQCAtMCwwICsxLDM3IEBACityZXN0b3JlX3NwZWxsX3BvaW50cygpCitGVU5LVElPTjoKKyAgICB2b2lkIHJlc3RvcmVfc3BlbGxfcG9pbnRzKGludCBwb2ludHMpCisKK0FSR1VNRU5URToKKyAgICBwb2ludHM6IEFuemFobCBkZXIgS29uemVudHJhdGlvbnNwdW5rdGUgZGllIGd1dGdlc2NocmllYmVuIHdlcmRlbiBzb2xsZW4uCisKK0JFU0NIUkVJQlVORzoKKyAgICBEZW0gTGViZXdlc2VuIHdlcmRlbiBwb2ludHMgS29uemVudHJhdGlvbnNwdW5rdGUgZ3V0Z2VzY2hyaWViZW4uIEZhbGxzCisgICAgUHVua3RlIGFiZ2V6b2dlbiB3ZXJkZW4gc29sbGVuIHVuZCBkYXMgTGViZXdlc2VuIG5pY2h0IHVlYmVyIDxwb2ludHM+CisgICAgS29uemVudHJhdGlvbnNwdW5rdGUgdmVyZnVlZ3QsIHdlcmRlbiBzaWUgYXVmIDAgZ2VzZXR6dC4KKworUlVFQ0tHQUJFV0VSVDoKKyAgICBLZWluZXIKKworQkVJU1BJRUxFOgorICAgIHdyaXRlKCJEYXMgYm9lc2UgYm9lc2UgTW9uc3RlciBzY2hhdXQgRGljaCBzdWVzcyBhbiB1bmQgZ2lidCBkaXIgbWVociAiCisgICAgICAgICArIktvbnplbnRyYXRpb24uXG4iKTsKKyAgICB0aGlzX3BsYXllcigpLT5yZXN0b3JlX3NwZWxsX3BvaW50cyg1MCk7CisKK0JFTUVSS1VOR0VOOgorICAgIERhIGRhcyBCZW51dHplbiBkZXIgRnVua3Rpb24gZWluZSBIZWlsdW5nIGJlZGV1dGV0LCBzb2xsdGUgbWFuIGJlaQorICAgIFZlcndlbmR1bmcgYXVmIGplZGVuIEZhbGwgUnVlY2tzcHJhY2hlIG1pdCBzZWluZW0gUk0gbmVobWVuLCBiencKKyAgICBkaWUgSGVpbHN0ZWxsZSBiZWkgZGVyIEhlaWx1bmdzYmFsYW5jZSBnZW5laG1pZ2VuIGxhc3Nlbi4KKworICAgIEJlaSBIZWlsc3RlbGxlbiBzb2xsdGUgZWluZSBldnRsLiBIZWlsdW5nIGRlcyBTcGllbGVycyBtaXQgZGVyIGVpZ2VucworICAgIGRhZnVlciBlaW5nZXJpY2h0ZXRlbiBGdW5rdGlvbiBjaGVja19hbmRfdXBkYXRlX3RpbWVkX2tleSByZWFsaXNpZXJ0CisgICAgd2VyZGVuLgorICAgIEFuc29uc3RlbiBiaXR0ZSBidWZmZXJfc3AoKSBiZW51dHplbiB1bmQgZGllIEtvbnplcHRzZWl0ZSBsZXNlbiEKKworU0lFSEUgQVVDSDoKKyAgICBHZWdlbnBhcnQ6CXJlZHVjZV9zcGVsbF9wb2ludHMoTCkKKyAgICBWZXJ3YW5kdDoJYnVmZmVyX3NwKEwpLCByZXN0b3JlX2hpdF9wb2ludHMoTCkKKyAgICBQcm9wczoJUF9TUAorICAgIEtvbnplcHQ6CWhlaWx1bmcKKworMjMuRmViLjIwMDQgR2xvaW5zb24KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9kb2MvbGZ1bi9zYXZlX21lIGIvZG9jL2xmdW4vc2F2ZV9tZQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5kN2Y5ZTBhCi0tLSAvZGV2L251bGwKKysrIGIvZG9jL2xmdW4vc2F2ZV9tZQpAQCAtMCwwICsxLDIxIEBACitzYXZlX21lKEwpCitGVU5LVElPTjoKKyAgICB2b2lkIHNhdmVfbWUobWl4ZWQgdmFsdWVfaXRlbXMpCisKK0RFRklOSUVSVCBJTjoKKyAgICAvc3RkL3BsYXllci9iYXNlLmMKKworQVJHVU1FTlRFOgorICAgIHZhbHVlX2l0ZW1zCisgICAgICAgVW5nbGVpY2ggMCwgd2VubiBXZXJ0IGRlciBHZWdlbnN0YWVuZGUgYmVyZWNobmV0IHdlcmRlbiBzb2xsLgorCitCRVNDSFJFSUJVTkc6CisgICAgU3BlaWNoZXJ0IGVpbmVuIFNwaWVsZXIsIHNlaW5lIEF1dG9sb2FkZXIsIGJlc3RpbW10IHNlaW4gR3VpbGRSYXRpbmcKKyAgICB1bmQgYmVyZWNobmV0L3NwZWljaGVydCBhdWYgQW5mb3JkZXJ1bmcgZGVuIFdlcnQgZGVyIGdldHJhZ2VuZW4KKyAgICBHZWdlbnN0YWVuZGUuCisKK1NJRUhFIEFVQ0g6CisgICAgUHJvcHM6ICAgICAgIFBfQ0FSUklFRF9WQUxVRSwgUF9BVVRPTE9BRE9CSiwgUF9MQVNUX0xPR09VVAorICAgIEtvbW1hbmRvczogICBzYXZlLCBlbmRlCisKKzEuU2VwdGVtYmVyIDIwMDggR2xvaW5zb24KZGlmZiAtLWdpdCBhL2RvYy9sZnVuL3NlY29uZF9saWZlIGIvZG9jL2xmdW4vc2Vjb25kX2xpZmUKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYjVhYmZkNQotLS0gL2Rldi9udWxsCisrKyBiL2RvYy9sZnVuL3NlY29uZF9saWZlCkBAIC0wLDAgKzEsMzAgQEAKK3NlY29uZF9saWZlKCkKKworRlVOS1RJT046CisJdmFyYXJncyBpbnQgc2Vjb25kX2xpZmUob2JqZWN0IG9iaik7CisKK0RFRklOSUVSVCBJTjoKKwkvc3RkL3BsYXllci9saWZlLmMKKworQVJHVU1FTlRFOgorCW9iagorCSAgTGVpY2hlIGRlcyBMZWJld2VzZW5zLgorCitCRVNDSFJFSUJVTkc6CisgICAgICAgIERpZXNlIEZ1bmt0aW9uIHdpcmQgaW0gZGllKCkgZGVzIExlYmV3ZXNlbnMgYXVmZ2VydWZlbiwgd2VubiBzaWNoZXIKKyAgICAgICAgaXN0LCBkYXNzIGVzIHN0aXJidC4gVWVibGljaGVyd2Vpc2UgaXN0IGRpZXNlIEZ1bmt0aW9uIG51ciBpbSBTcGllbGVyCisgICAgICAgIGRlZmluaWVydCB1bmQgcmVnZWx0IEVQLVZlcmx1c3QgdW5kIGRlcmdsZWljaGVuLiBFaW4gU2hhZG93IHd1ZXJkZQorICAgICAgICBkaWVzZSBGdW5rdGlvbiB1ZWJlcmxhZ2VybiwgdW0genUgdmVyaGluZGVybiwgZGFzcyBlaW4gU3BpZWxlciBzdGlyYnQuCisKK1JVZUNLR0FCRVdFUlQ6CisgICAgICAgIDEsIHdlbm4gZGFzIExlYmV3ZXNlbiBuaWNodCBzdGlyYnQsIHNvbnN0IDAKKworQkVNRVJLVU5HOgorICAgICAgICBCZWkgTlBDcyBzb2xsdGUgbWFuIGRpcmVrdCBkaWUoKSB1ZWJlcnNjaHJlaWJlbiwgd2VubiBtYW4gbmljaHQKKyAgICAgICAgbW9lY2h0ZSwgZGFzcyBzaWUgc3RlcmJlbi4KKworU0lFSEUgQVVDSDoKKyAgICAgICAgZGllKCkKKworLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorTGFzdCBtb2RpZmllZDogMjAxNS1KYW4tMTksIEFyYXRob3JuIApkaWZmIC0tZ2l0IGEvZG9jL2xmdW4vc2VsbF9vYmogYi9kb2MvbGZ1bi9zZWxsX29iagpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44YzM2MmYxCi0tLSAvZGV2L251bGwKKysrIGIvZG9jL2xmdW4vc2VsbF9vYmoKQEAgLTAsMCArMSw1MiBAQAorc2VsbF9vYmooKQ0KKw0KK0Z1bmt0aW9uOg0KKyAgICBzdGF0aWMgc3RyaW5nIHNlbGxfb2JqKG9iamVjdCBvYiwgaW50IHNob3J0KQ0KKw0KK0RlZmluaWVydCBpbjoNCisgICAgL3N0ZC9yb29tL3Nob3ANCisNCitBcmd1bWVudGU6DQorICAgIG9iOg0KKyAgICAgIERhcyBhbnp1a2F1ZmVuZGUgT2JqZWt0DQorICAgIHNob3J0Og0KKyAgICAgIEdpYnQgYW4sIG9iIGRlciBWZXJrYWV1ZmVyIG51ciBlaW4gT2JqZWt0ICgwKSBvZGVyIG1laHJlcmUgKDEpIA0KKyAgICAgIHZlcmthdWZ0LiAoVmVya2F1ZmUgYWxsZXMgZXRjLikNCisNCitCZXNjaHJlaWJ1bmc6DQorICAgIEVybWl0dGVsdCBvYiBkZXIgTGFkZW4gYmVyZWl0IGlzdCwgPG9iPiBhbnp1a2F1ZmVuLg0KKw0KK1J1ZWNrZ2FiZXdlcnQ6DQorICAgIE1lbGR1bmcgZGllIGF1c2dlZ2ViZW4gd2lyZCwgd2VubiBlaW4gT2JqZWt0IGFiZ2VsZWhudCB3aXJkIG9kZXIgMC4NCisNCitCZW1lcmt1bmc6DQorICAgIE1hbiBzb2xsdGUgaW0gbm9ybWFsZmFsbCBfbmllbWFsc18gZWluZmFjaCAwIHp1cnVlY2tnZWJlbiwgc29uZGVybiBkYXMgDQorICAgIGdlZXJidGUgc2VsbF9vYmooKSBhdXMgL3N0ZC9yb29tL3Nob3AsIGRhbWl0IGJlaXNwaWVsc3dlaXNlIFBfTk9CVVkgDQorICAgIGJlYWNodGV0IHdpcmQuDQorDQorQmVpc3BpZWw6DQorICAgIEVpbiBTY2htaWVkLCBkZXIgbnVyIFdhZmZlbiBhbmthdWZ0Og0KKyAgICANCisgICAgcHJvdGVjdGVkIHZvaWQgY3JlYXRlKCkNCisgICAgew0KKyAgICAgIC4uLg0KKyAgICB9DQorICAgIA0KKyAgICBzdGF0aWMgc3RyaW5nIHNlbGxfb2JqKG9iamVjdCBvYiwgaW50IHNob3J0KQ0KKyAgICB7DQorICAgICAgaWYoIW9iLT5RdWVyeVByb3AoUF9XRUFQT05fVFlQRSkpDQorICAgICAgew0KKyAgICAgICAgcmV0dXJuICJJY2ggYmluIG51ciBhbiBXYWZmZW4gaW50ZXJlc3NpZXJ0LiI7DQorICAgICAgfQ0KKyAgICAgIHJldHVybiA6OnNlbGxfb2JqKG9iLHNob3J0KTsNCisgICAgfQ0KKw0KK1NpZWhlIGF1Y2g6DQorICAgIEZ1bmt0aW9uZW46DQorICAgICAgQWRkRml4ZWRPYmplY3QoKSwgUmVtb3ZlRml4ZWRPYmplY3QoKSwgU2V0U3RvcmFnZVJvb20oKSwgDQorICAgICAgUXVlcnlTdG9yYWdlUm9vbSgpLCBRdWVyeUJ1eVZhbHVlKCksIFF1ZXJ5QnV5RmFjdCgpLCBidXlfb2JqKCkNCisgICAgUHJvcGVydGllczoNCisgICAgICBQX0tFRVBFUiwgUF9NSU5fU1RPQ0ssIFBfU1RPUkVfQ09OU1VNRQ0KKw0KKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KK0xldHp0ZSBBZW5kZXJ1bmc6IDIxLjA1LjIwMTQsIEJ1Z2ZpeA0KZGlmZiAtLWdpdCBhL2RvYy9sZnVuL3NldF9vYmplY3RfbmV4dF9yZXNldCBiL2RvYy9sZnVuL3NldF9vYmplY3RfbmV4dF9yZXNldApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi42OGRmYTJmCi0tLSAvZGV2L251bGwKKysrIGIvZG9jL2xmdW4vc2V0X29iamVjdF9uZXh0X3Jlc2V0CkBAIC0wLDAgKzEsMjUgQEAKK3NldF9vYmplY3RfbmV4dF9yZXNldCgpCisKK0ZVTktUSU9OOgorCWludCBzZXRfb2JqZWN0X25leHRfcmVzZXQob2JqZWN0IG9iLCBpbnQgemVpdCApOworCitERUZJTklFUlQgSU46IC9zZWN1cmUvZGVidWcuYworCitBUkdVTUVOVEU6CisJb2I6IERhcyBPYmpla3QsIGRlc3MgUmVzZXQgZ2VzZXR6dCB3ZXJkZW4gc29sbC4KKyAgemVpdDogWmVpdCBiaXMgenVtIG5hZWNoc3RlbiBSZXNldCB2b24gb2IuCisKK0ZVTktUSU9OOgorICBEaWUgRnVua3Rpb24gcnVmdCBsZXR6dGVuZGxpY2ggc2V0X25leHRfcmVzZXQoKSBpbiA8b2I+IGF1ZiB1bmQgc2V0enQgZGFoZXIKKyAgZGVzc2VuIFJlc2V0emVpdCBhdWYgZWluZW4gbmV1ZW4gV2VydC4gRGllcyBpc3QgenUgRGVidWd6d2Vja2VuIGdlZGFjaHQuCisKKyAgRGllIEJlbnV0enVuZyBpc3QgbnVyIGZ1ZXIgRU0rIG1vZWdsaWNoLgorCitSVUVDS0dBQkVXRVJUOgorCUdpYnQgZGVuIFJ1ZWNrZ2FiZXdlcnQgZGVzIHNldF9uZXh0X3Jlc2V0KCktQXVmcnVmcyBpbiA8b2I+IHp1cnVlY2suCisKK1NJRUhFIEFVQ0g6CisJc2V0X25leHRfcmVzZXQoRSkKKworMTAuMTAuMjAwNywgWmVzc3RyYQorCmRpZmYgLS1naXQgYS9kb2MvbGZ1bi9zaG9vdF9kYW0gYi9kb2MvbGZ1bi9zaG9vdF9kYW0KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNWQ4MmQwMgotLS0gL2Rldi9udWxsCisrKyBiL2RvYy9sZnVuL3Nob290X2RhbQpAQCAtMCwwICsxLDQwIEBACitzaG9vdF9kYW0oKQorCitGVU5LVElPTjoKKyAgICBzdGF0aWMgaW50IHNob290X2RhbShtYXBwaW5nIHNob290KQorCitERUZJTklFUlQgSU46CisgICAgL3N0ZC9yYW5nZWRfd2VhcG9uLmMKKworQVJHVU1FTlRFOgorICAgIG1hcHBpbmcgc2hvb3QgLSBTY2h1c3NkYXRlbgorCitCRVNDSFJFSUJVTkc6CisgICAgRXJoYWVsdCB2b24gL3N0ZC9yYW5nZWRfd2VhcG9uOjpjbWRfc2hvb3QoKSBkaWUgU2NodXNzZGF0ZW4gdW5kIGJlcmVjaG5ldAorICAgIGRlbiBTY2hhZGVuIGRlciBXYWZmZSwgYmFzaWVyZW5kIGF1ZiBkZW4gUF9TSE9PVElOR19XQyB2b24gV2FmZmUgdW5kCisgICAgTXVuaXRpb24gc293aWUgZGVyIEdlc2NoaWNrbGljaGtlaXQgZGVzIFNjaHVldHplbi4gSGl0RnVuY3MgZGVyIE11bml0aW9uCisgICAgdW5kIFNraWxscyB3ZXJkZW4gaGllciBlYmVuZmFsbHMgYmVydWVja3NpY2h0aWd0LgorCitSVUVDS0dBQkVXRVJUOgorICAgIFNjaGFkZW4uIEViZW5mYWxscyBpbiAnc2hvb3QnIHVudGVyIFNJX1NLSUxMREFNQUdFIGFrdHVhbGlzaWVydC4KKworQkVNRVJLVU5HRU46CisgICAgJ3Nob290JyBlbnRoYWVsdCBub3JtYWxlcndlaXNlIGZvbGdlbmRlIEVpbnRyYWVnZToKKyAgICAqIEtleSBQX1dFQVBPTjogICAgICAgZGllIFNjaHVzc3dhZmZlCisgICAgKiBLZXkgUF9XRUFQT05fVFlQRTogIFBfQU1NVU5JVElPTiwgYWxzbyBkaWUgTXVuaXRpb25zLUlECisgICAgKiBLZXkgUF9TVFJFVENIX1RJTUU6IFBfU1RSRVRDSF9USU1FIGRlciBXYWZmZQorICAgICogS2V5IFBfV0M6ICAgICAgICAgICBQX1NIT09USU5HX1dDIGRlciBXYWZmZQorICAgICogS2V5IFBfU0hPT1RJTkdfV0M6ICBQX1NIT09USU5HX1dDIGRlciBNdW5pdGlvbgorICAgICogS2V5IFBfQU1NVU5JVElPTjogICBNdW5pdGlvbnNvYmpla3QgKGV2ZW50dWVsbCBVbml0KQorICAgICogS2V5IFNJX0VORU1ZOiAgICAgICBndWVsdGlnZW4gR2VnbmVyCisgICAgKiBLZXkgU0lfU0tJTExEQU1BR0VfVFlQRTogIFNjaGFkZW4gKGF1cyBQX0RBTV9UWVBFIGRlciBNdW5pdGlvbikKKyAgICAqIEtleSBTSV9TS0lMTERBTUFHRV9NU0cvMjogTXVuaXRpb25zbmFtZQorCitTSUVIRSBBVUNIOgorICAgIEdlbmVyZWxsOiAgUF9BTU1VTklUSU9OLCBQX1NIT09USU5HX1dDLCBQX1NUUkVUQ0hfVElNRQorICAgIE1ldGhvZGVuOiAgRmluZFJhbmdlZFRhcmdldChMKSwgY21kX3Nob290KEwpCisgICAgU2tpbGxzOiAgICBVc2VTa2lsbChMKSwgU2tpbGxSZXNUcmFuc2ZlcihMKQorICAgIEF0dHJpYnV0ZTogUXVlcnlBdHRyaWJ1dGUKKyAgICBTb25zdGlnZXM6IGZlcm53YWZmZW4sIEhpdEZ1bmMKKworMjguSnVsIDIwMTQgR2xvaW5zb24KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9kb2MvbGZ1bi9zaG9ydCBiL2RvYy9sZnVuL3Nob3J0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmE5NzM0YzIKLS0tIC9kZXYvbnVsbAorKysgYi9kb2MvbGZ1bi9zaG9ydApAQCAtMCwwICsxLDMxIEBACitzaG9ydCgpCitGVU5LVElPTjoKKyAgICAgcHVibGljIHZhcmFyZ3Mgc3RyaW5nIHNob3J0KCk7CisKK0RFRklOSUVSVCBJTjoKKyAgICAgL3N0ZC90aGluZy9kZXNjcmlwdGlvbi5jCisKK0FSR1VNRU5URToKKyAgICAga2VpbmUKKworQkVTQ0hSRUlCVU5HOgorICAgICBEZXIgSW5oYWx0IGRlciBQcm9wZXJ0eSBQX1NIT1JUIHdpcmQgYXVzZ2V3ZXJ0ZXQsIG1pdCAiLlxuIgorICAgICBhYmdlc2NobG9zc2VuIHVuZCB6dXJ1ZWNrZ2VnZWJlbi4KKworUlVlQ0tHQUJFV0VSVDoKKyAgICAgRGllIEt1cnpiZXNjaHJlaWJ1bmcgYWxzIFN0cmluZyBvZGVyIDAsIGZhbGxzIGRhcyBPYmpla3QgdW5zaWNodGJhcgorICAgICBpc3QuCisKK0JFTUVSS1VOR0VOOgorICAgICBEdXJjaCBVZWJlcmxhZGVuIHZvbiBzaG9ydCgpIGxhc3NlbiBzaWNoIG5vY2ggd2VpdGVyZSBFaWdlbnNjaGFmdGVuIGRlcworICAgICBPYmpla3RlcyB6ZWlnZW4uIEZhY2tlbG4gemVpZ2VuIHp1bSBCZWlzcGllbCBhbiwgb2Igc2llIGJyZW5uZW4sCisgICAgIFJ1ZXN0dW5nZW4sIG9iIHNpZSBhbmdlem9nZW4gc2luZCB1bmQgV2FmZmVuLCBvYiBzaWUgZ2V6dWVja3Qgc2luZC4KKworU0lFSEUgQVVDSDoKKyAgICAgQWVobmxpY2hlczoJbG9uZygpCisgICAgIFByb3BlcnRpZXM6CVBfU0hPUlQsIFBfSU5WSVMKKyAgICAgU29uc3RpZ2VzOgkJbWFrZV9pbnZsaXN0KCkKKworLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorMjAuMDEuMjAxNSwgWmVzc3RyYQorCmRpZmYgLS1naXQgYS9kb2MvbGZ1bi9zaG93X25vdGlmeSBiL2RvYy9sZnVuL3Nob3dfbm90aWZ5Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmFlMDlhZGMKLS0tIC9kZXYvbnVsbAorKysgYi9kb2MvbGZ1bi9zaG93X25vdGlmeQpAQCAtMCwwICsxLDQ0IEBACitnaXZlX25vdGlmeSgpCitGVU5LVElPTjoKKyAgICAgdm9pZCBzaG93X25vdGlmeShvYmplY3Qgb2JqKQorCitERUZJTklFUlQgSU46CisgICAgIC9zdGQvbGl2aW5nL3B1dF9hbmRfZ2V0LmMKKworQVJHVU1FTlRFOgorICAgICBvYmogLSBkZW0gTGViZXdlc2VuIGdlemVpZ3RlcyBPYmpla3QKKworUlVlQ0tHQUJFV0VSVDoKKyAgICAga2VpbmVyCisKK0JFU0NIUkVJQlVORzoKKyAgICAgRGllc2UgRnVua3Rpb24gd2lyZCBhdXRvbWF0aXNjaCBpbW1lciBkYW5uIGF1ZmdlcnVmZW4sIHdlbm4gZWluZW0KKyAgICAgTGViZXdlc2VuICh3ZWxjaGVzIGtlaW4gU3BpZWxlcmNoYXJha3RlciBpc3QpIGVpbiBPYmpla3QgZ2V6ZWlndCB3aXJkLgorICAgICBEaWVzIGZ1bmt0aW9uaWVydCBudXIgZGFubiwgd2VubiBkZXIgU3RhbmRhcmRiZWZlaGwgZGVyIFNwaWVsZXJzaGVsbAorICAgICB2ZXJ3ZW5kZXQgd2lyZCAoInplaWdlIDxuYW1lPiA8Z2VnZW5zdGFuZD4iKS4gU2VsYnN0Z2ViYXV0ZXMgInplaWdlIgorICAgICBmdW5rdGlvbmllcnQgbmljaHQuCisKK0JFSVNQSUVMOgorICAgICBPZnRtYWxzIHdpbGwgbWFuIGluIFF1ZXN0cyBlcnJlaWNoZW4sIGRhc3MgZWluZW0gTlBDIGVpbiBiZXN0aW1tdGVzCisgICAgIEl0ZW0gYWxzIEJld2VpcyBkZXIgRXJmdWVsbHVuZyBlaW5lciBiZXN0aW1tdGVuIEF1ZmdhYmUgdm9yZ2V6ZWlndAorICAgICB3aXJkLiBGb2xnZW5kZXJtYXNzZW4ga2FubiBkaWVzIHJlYWxpc2llcnQgd2VyZGVuOgorCisgICAgIHZvaWQgcXVlc3Rfb2sob2JqZWN0IG9iaikgeyAuLi4KKyAgICAgICAvLyB6LkIuIFZlcm5pY2h0dW5nIGRlcyBRdWVzdG9iamVrdGVzIHVuZCBRdWVzdHRleHRlCisgICAgICAgLy8gUXVlc3RiZWxvaG51bmcgdW5kIFF1ZXN0YW5lcmtlbm51bmcsIGV0Yy4KKyAgICAgfQorCisgICAgIHZvaWQgc2hvd19ub3RpZnkob2JqZWN0IG9iaikgeworICAgICAgIGlmKG9iai0+aWQoIlxucXVlc3RpdGVtIikpIC8vIElzdCBkYXMgZGFzIGdlZm9yZGVydGUgUXVlc3RvYmpla3Q/CisgICAgICAgICBxdWVzdF9vayhvYmopOworICAgICB9CisKK0JFTUVSS1VOR0VOOgorICAgICBEYSBlcyBudXIgdW0gZGFzIFZvcnplaWdlbiB2b24gR2VnZW5zdGFlbmRlbiBnZWh0LCBkaWUgbmljaHQgZGVuIAorICAgICBCZXNpdHplciB3ZWNoc2Vsbiwgc2luZCBNZWNoYW5pc21lbiB3aWUgUF9SRUpFQ1QgaW4gZGllc2VtIEZhbGwgCisgICAgIG5pY2h0IGVyZm9yZGVybGljaC4KKworU0lFSEUgQVVDSDoKKyAgICAgZ2l2ZV9ub3RpZnkoKSwgL3N0ZC9ucGMvcHV0X2FuZF9nZXQuYywgL3N0ZC9saXZpbmcvcHV0X2FuZF9nZXQuYworCisyMi4gT2t0b2JlciAyMDEzIEFyYXRob3JuCmRpZmYgLS1naXQgYS9kb2MvbGZ1bi9zcGVsbGJvb2svQWRkU3BlbGwgYi9kb2MvbGZ1bi9zcGVsbGJvb2svQWRkU3BlbGwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNzg2ODZkMQotLS0gL2Rldi9udWxsCisrKyBiL2RvYy9sZnVuL3NwZWxsYm9vay9BZGRTcGVsbApAQCAtMCwwICsxLDU0IEBACitBZGRTcGVsbCgpCitGVU5LVElPTjoKKyAgICB2YXJhcmdzIGludCBBZGRTcGVsbChzdHJpbmcgdmVyYiwgaW50IGtvc3RlbiwgbWl4ZWQgc2tpKSAKKworREVGSU5JRVJUIElOOgorICAgIC9zdGQvc3BlbGxib29rLmMKKworQVJHVU1FTlRFOgorICAgIHN0cmluZyB2ZXJiICAgICBOYW1lIGRlcyBTcGVsbHMKKyAgICBpbnQga29zdGVuICAgICAgbm9ybWFsZSBLb3N0ZW4gKEdydW5ka29zdGVuKQorICAgIG1peGVkIHNraSAgICAgICBTa2lsbG1hcHBpbmcgbWl0IGFsbGVuIEVpbnRyYWVnZW4genVtIFNwZWxsCisKK0JFU0NIUkVJQlVORzoKKyAgICBBZGRpZXJ0IGVpbmVuIEVpbnRyYWcgZnVlciBkZW4gU3BlbGwgaW0gU3BlbGxib29rLiBXZW5uIGRpZXNlcgorICAgIFNwZWxsIGRpcmVrdCB2b20gU3BpZWxlciAoU0lfU1BFTExCT09LKSBvZGVyIChub3JtYWxlcndlaXNlKQorICAgIHVlYmVyIGVpbiBHaWxkZW5vYmpla3QgYXVmZ2VydWZlbiB3aXJkLCB3aXJkIGRhcyBNYXBwaW5nIGF1ZgorICAgIGRpZSBTa2lsbGluZm9ybWF0aW9uZW4gYXVzIFNwaWVsZXIgdW5kIEdpbGRlIGFkZGllcnQgdW5kCisgICAgYmVlaW5mbHVzc3QgZGFtaXQgZGVuIEF1ZnJ1ZiBkZXIgbGV0enRsaWNoZW4gU3BlbGxmdW5rdGlvbi4KKworQkVNRVJLVU5HRU46CisgICAgU2llaGUgZGFzIFZlcmhhbHRlbiB2b24gUXVlcnlTcGVsbCAoZ2lsZGUpIHp1bSBadXNhbW1lbmZ1ZWdlbgorICAgIGRlciBBZGRTcGVsbC1JbmZvcm1hdGlvbmVuIGF1cyBHaWxkZSB1bmQgU3BlbGxib29rLiBSZWxldmFudAorICAgIHpCIGZ1ZXIgTGVybnJlc3RyaWt0aW9uZW4uCisKK0JFSVNQSUVMOgorICAgIEFkZFNwZWxsKCJrYW1wZnNjaHJlaSIsIDMwLAorICAgICAgICAgKFtTSV9TS0lMTFJFU1RSX0xFQVJOOihbUF9MRVZFTDoxM10pLAorICAgICAgICAgICBTSV9NQUdJQ19UWVBFOiAoe01UX1BTWUNIT30pLAorICAgICAgICAgICBTSV9TUEVMTDogICAgICAoWworICAgICAgICAgICAgIFNQX05BTUU6ICJLYW1wZnNjaHJlaSIsCisgICAgICAgICAgICAgU1BfU0hPV19EQU1BR0U6CisgICAgICAgICAgICAgICAoeyh7IC0xLCAiRGlyIGdlc2NoaWVodCBqZWRvY2ggbmljaHRzLiIsCisgICAgICAgICAgICAgICAgICAgIkBXRU0xIGdlc2NoaWVodCBqZWRvY2ggbmljaHRzLiIsCisgICAgICAgICAgICAgICAgICAgIkBXRU0xIGdlc2NoaWVodCBqZWRvY2ggbmljaHRzLiIgfSksCisgICAgICAgICAgICAgICAgICh7ICAwLCAiRHUga2FubnN0IGRhcnVlYmVyIGFiZXIgbnVyIGxhY2hlbi4iLAorICAgICAgICAgICAgICAgICAgICJAV0VSMSBrYW5uIGRhcnVlYmVyIGFiZXIgbnVyIGxhY2hlbi4iLAorICAgICAgICAgICAgICAgICAgICJAV0VSMSBrYW5uIGRhcnVlYmVyIGFiZXIgbnVyIGxhY2hlbi4iIH0pLAorICAgICAgICAgICAgICAgICAoeyAxMCwgIkRpciBkcm9laG5lbiBkaWUgT2hyZW4uIiwKKyAgICAgICAgICAgICAgICAgICAiQFdFTTEgZHJvZWhuZW4gZGllIE9ocmVuLiIsCisgICAgICAgICAgICAgICAgICAgIkBXRU0xIGRyb2VobmVuIGRpZSBPaHJlbi4iIH0pCisgICAgICAgICAgICAgICB9KV0pCisgICAgICAgICBdKSk7CisKK1NJRUhFIEFVQ0g6CisgICAgU3BlbGxib29rIExlcm5lbjogTGVhcm4sIFNwZWxsU3VjY2VzcywgRXJmb2xnLCBNaXNzZXJmb2xnCisgICAgKiBWZXJ3YWx0ZW46ICAgICAgUXVlcnlTcGVsbAorICAgICogQW5ncmlmZjogICAgICAgIFRyeUF0dGFja1NwZWxsLCBUcnlEZWZhdWx0QXR0YWNrU3BlbGwsCisgICAgICAgICAgICAgICAgICAgICAgVHJ5R2xvYmFsQXR0YWNrU3BlbGwKKyAgICAqIFByb3BlcnRpZXM6ICAgICBQX0dMT0JBTF9TS0lMTFBST1BTLCBQX1NCX1NQRUxMUworICAgIFNraWxscyBMZXJuZW46ICAgIExlYXJuU2tpbGwsIE1vZGlmeVNraWxsLCBMaW1pdEFiaWxpdHkKKyAgICAqIE51dHp1bmc6ICAgICAgICBVc2VTcGVsbCwgVXNlU2tpbGwKKyAgICAqIHNvbnN0aWc6ICAgICAgICBzcHJ1Y2hlcm11ZWR1bmcsIHNraWxsX2luZm9fbGlzdGUKKworNS4gT2t0IDIwMTEgR2xvaW5zb24KZGlmZiAtLWdpdCBhL2RvYy9sZnVuL3NwZWxsYm9vay9FcmZvbGcgYi9kb2MvbGZ1bi9zcGVsbGJvb2svRXJmb2xnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjYyNWJmNGYKLS0tIC9kZXYvbnVsbAorKysgYi9kb2MvbGZ1bi9zcGVsbGJvb2svRXJmb2xnCkBAIC0wLDAgKzEsMjggQEAKK0VyZm9sZygpCitGVU5LVElPTjoKKyAgICB2b2lkIEVyZm9sZyhvYmplY3QgY2FzdGVyLCBzdHJpbmcgc3BlbGwsIG1hcHBpbmcgc2luZm8pCisKK0RFRklOSUVSVCBJTjoKKyAgICAvc3RkL3NwZWxsYm9vay5jCisKK0FSR1VNRU5URToKKyAgICBvYmplY3QgY2FzdGVyICAgIFNwZWxsIHNwcmVjaGVuZGVyIFNwaWVsZXIKKyAgICBzdHJpbmcgc3BlbGwgICAgIFNwZWxsbmFtZQorICAgIG1hcHBpbmcgc2luZm8gICAgU3BlbGwtSW5mby1NYXBwaW5nIG1pdCBhbGxlbiBJbmZvcm1hdGlvbmVuCisKK0JFU0NIUkVJQlVORzoKKyAgICBXaXJkIGJlaSBFcmZvbGcgZWluZXMgU3BlbGxzIGdlcnVmZW4uIFJ1ZnQgU3BlbGxJbmZvcm0oKSBhbQorICAgIEVudmlyb25tZW50LgorCitTSUVIRSBBVUNIOgorICAgIFNvbnN0aWdlczogICAgICAgIFNwZWxsSW5mb3JtCisgICAgU3BlbGxib29rIExlcm5lbjogTGVhcm4sIFNwZWxsU3VjY2VzcywgTWlzc2VyZm9sZworICAgICogVmVyd2FsdGVuOiAgICAgIEFkZFNwZWxsLCBRdWVyeVNwZWxsCisgICAgKiBBbmdyaWZmOiAgICAgICAgVHJ5QXR0YWNrU3BlbGwsIFRyeURlZmF1bHRBdHRhY2tTcGVsbCwKKyAgICAgICAgICAgICAgICAgICAgICBUcnlHbG9iYWxBdHRhY2tTcGVsbAorICAgICogUHJvcGVydGllczogICAgIFBfR0xPQkFMX1NLSUxMUFJPUFMsIFBfU0JfU1BFTExTCisgICAgU2tpbGxzIExlcm5lbjogICAgTGVhcm5Ta2lsbCwgTW9kaWZ5U2tpbGwsIExpbWl0QWJpbGl0eQorICAgICogTnV0enVuZzogICAgICAgIFVzZVNwZWxsLCBVc2VTa2lsbAorICAgICogc29uc3RpZzogICAgICAgIHNwcnVjaGVybXVlZHVuZywgc2tpbGxfaW5mb19saXN0ZQorCis1LiBPa3QgMjAxMSBHbG9pbnNvbgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2RvYy9sZnVuL3NwZWxsYm9vay9MZWFybiBiL2RvYy9sZnVuL3NwZWxsYm9vay9MZWFybgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi40ZTI0MzFhCi0tLSAvZGV2L251bGwKKysrIGIvZG9jL2xmdW4vc3BlbGxib29rL0xlYXJuCkBAIC0wLDAgKzEsMzMgQEAKK0xlYXJuKCkKK0ZVTktUSU9OOgorICAgIHZvaWQgTGVhcm4ob2JqZWN0IGNhc3Rlciwgc3RyaW5nIHNwZWxsLCBtYXBwaW5nIHNpbmZvKQorCitERUZJTklFUlQgSU46CisgICAgL3N0ZC9zcGVsbGJvb2suYworCitBUkdVTUVOVEU6CisgICAgb2JqZWN0IGNhc3RlciAgIERlcmplbmlnZSwgZGVyIGRlbiBTcHJ1Y2ggc3ByaWNodC4KKyAgICBzdHJpbmcgc3BlbGwgICAgRGVyIGdlc3Byb2NoZW5lIFNwZWxsCisgICAgbWFwcGluZyBzaW5mbyAgIE1hcHBpbmcgbWl0IGFsbGVuIG1vZWdsaWNoZW4gSW5mb3JtYXRpb25lbiB6dW0gU3BlbGwKKworQkVTQ0hSRUlCVU5HOgorICAgIERpZXNlIEZ1bmt0aW9uIHdpcmQgdm9uIGRlciBGdW5rdGlvbiAiTWlzc2VyZm9sZyIgYXVzIGRlbSAKKyAgICBTcGVsbGJvb2sgYXVmZ2VydWZlbi4gSGllciBsZXJudCBkZXIgU3BpZWxlciBkZW4gU3BydWNoLCBkZXIgCisgICAgbmljaHQgZ2VnbHVlY2t0IGlzdC4KKworQkVNRVJLVU5HRU46CisgICAgS2FubiBhdWNoIHVlYmVyc2NocmllYmVuIHdlcmRlbiwgd2VubiBtYW4ga29tcGxleGUgTGVybi1BZW5kZXJ1bmdlbgorICAgIHZvcm5laG1lbiB3aWxsLiBBbmRlcmUgQXR0cmlidXRlIHNpbmQgdWViZXIgU0lfTEVBUk5fQVRUUklCVVRFCisgICAgc2V0emJhci4KKworU0lFSEUgQVVDSDoKKyAgICBTcGVsbGJvb2sgTGVybmVuOiBTcGVsbFN1Y2Nlc3MsIEVyZm9sZywgTWlzc2VyZm9sZworICAgICogVmVyd2FsdGVuOiAgICAgIEFkZFNwZWxsLCBRdWVyeVNwZWxsCisgICAgKiBBbmdyaWZmOiAgICAgICAgVHJ5QXR0YWNrU3BlbGwsIFRyeURlZmF1bHRBdHRhY2tTcGVsbCwKKyAgICAgICAgICAgICAgICAgICAgICBUcnlHbG9iYWxBdHRhY2tTcGVsbAorICAgICogUHJvcGVydGllczogICAgIFBfR0xPQkFMX1NLSUxMUFJPUFMsIFBfU0JfU1BFTExTCisgICAgU2tpbGxzIExlcm5lbjogICAgTGVhcm5Ta2lsbCwgTW9kaWZ5U2tpbGwsIExpbWl0QWJpbGl0eQorICAgICogTnV0enVuZzogICAgICAgIFVzZVNwZWxsLCBVc2VTa2lsbAorICAgICogc29uc3RpZzogICAgICAgIHNwcnVjaGVybXVlZHVuZywgc2tpbGxfaW5mb19saXN0ZQorCis1LiBPa3QgMjAxMSBHbG9pbnNvbgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2RvYy9sZnVuL3NwZWxsYm9vay9NaXNzZXJmb2xnIGIvZG9jL2xmdW4vc3BlbGxib29rL01pc3NlcmZvbGcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uN2FkNTMwYgotLS0gL2Rldi9udWxsCisrKyBiL2RvYy9sZnVuL3NwZWxsYm9vay9NaXNzZXJmb2xnCkBAIC0wLDAgKzEsNTMgQEAKK01pc3NlcmZvbGcoKQorRlVOS1RJT046CisgICAgdm9pZCBNaXNzZXJmb2xnKG9iamVjdCBjYXN0ZXIsIHN0cmluZyBzcGVsbCwgbWFwcGluZyBzaW5mbykgCisKK0RFRklOSUVSVCBJTjoKKyAgICAvc3RkL3NwZWxsYm9vay5jCisKK0FSR1VNRU5URToKKyAgICBvYmplY3QgY2FzdGVyICAgIFNwZWxsIHNwcmVjaGVuZGVyIFNwaWVsZXIKKyAgICBzdHJpbmcgc3BlbGwgICAgIFNwZWxsbmFtZQorICAgIG1hcHBpbmcgc2luZm8gICAgU3BlbGwtSW5mby1NYXBwaW5nIG1pdCBhbGxlbiBJbmZvcm1hdGlvbmVuCisKK0JFU0NIUkVJQlVORzoKKyAgICBXaXJkIGJlaSBNaXNzZXJmb2xnIGVpbmVzIFNwZWxscyBpbSBTcGVsbGJvb2sgYXVmZ2VydWZlbiB1bmQKKyAgICBydWZ0IGRpZSBMZXJuZnVua3Rpb24gTGVhcm4oKSBuYWNoIGVpbmVyIEZlaGxlcm1lbGR1bmcuCisgICAgCisgICAgS2FubiB1ZWJlcnNjaHJpZWJlbiB3ZXJkZW4sIHVtIGRpZSBNZWxkdW5nZW4gYW56dXBhc3Nlbi4KKworQkVJU1BJRUw6CisgICAgLy8gTWlzc2VyZm9sZ2UgaW0gS2xlcnVzIG1pdCBhbmdlcGFzc3RlbiBNZWxkdW5nZW4KKyAgICB2b2lkIE1pc3NlcmZvbGcob2JqZWN0IGNhc3Rlciwgc3RyaW5nIHNwZWxsLCBtYXBwaW5nIHNpbmZvKSB7CisgICAgICBzd2l0Y2goc3BlbGwpIHsKKyAgICAgICAgY2FzZSAiYmVncmFiZSI6CisgICAgICAgICAgdGVsbF9vYmplY3QoY2FzdGVyLCBCUygKKyAgICAgICAgICAgICJEdSBiZWdyYWVic3QgRGVpbmUgSG9mZm51bmdlbiwgZGFzcyBEdSBkaWVzZSBBbnJ1ZnVuZyBqZW1hbHMgIgorICAgICAgICAgICAgInBlcmZla3QgYmVoZXJyc2NoZW4gd2lyc3QuIikpOworICAgICAgICAgIHRlbGxfcm9vbShlbnZpcm9ubWVudChjYXN0ZXIpLAorICAgICAgICAgICAgY2FzdGVyLT5OYW1lKFdFUikrIiB0cml0dCBkaWUgTGVpY2hlIGx1c3Rsb3MuXG4iLCAoe2Nhc3Rlcn0pKTsKKyAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSAiYmxpdHoiOgorICAgICAgICBbLi4uXQorICAgICAgfQorICAgICAgICAKKyAgICAgIGludCBvbGRfYWJpbCA9IHNpbmZvW1NJX1NLSUxMQUJJTElUWV07CisgICAgICBMZWFybihjYXN0ZXIsIHNwZWxsLCBzaW5mbyk7CisgICAgICBpbnQgbmV3X2FiaWwgPSBjYXN0ZXItPlF1ZXJ5U2tpbGxBYmlsaXR5KHNwZWxsKTsKKyAgICAgIGlmIChvbGRfYWJpbCA8IG5ld19hYmlsKQorICAgICAgICB0ZWxsX29iamVjdChjYXN0ZXIsICJEaWUgR29ldHRlciBzY2hlbmtlbiBEaXIgZWluZSBFcmxldWNodHVuZy5cbiIpOworICAgICAgZWxzZQorICAgICAgICB0ZWxsX29iamVjdChjYXN0ZXIsICJMZWlkZXIgbGVybnN0IER1IG5pY2h0IGF1cyBEZWluZW0gRmVobGVyLlxuIik7IAorICAgIH0KKworU0lFSEUgQVVDSDoKKyAgICBTcGVsbGJvb2sgTGVybmVuOiBMZWFybiwgU3BlbGxTdWNjZXNzLCBFcmZvbGcKKyAgICAqIFZlcndhbHRlbjogICAgICBBZGRTcGVsbCwgUXVlcnlTcGVsbAorICAgICogQW5ncmlmZjogICAgICAgIFRyeUF0dGFja1NwZWxsLCBUcnlEZWZhdWx0QXR0YWNrU3BlbGwsCisgICAgICAgICAgICAgICAgICAgICAgVHJ5R2xvYmFsQXR0YWNrU3BlbGwKKyAgICAqIFByb3BlcnRpZXM6ICAgICBQX0dMT0JBTF9TS0lMTFBST1BTLCBQX1NCX1NQRUxMUworICAgIFNraWxscyBMZXJuZW46ICAgIExlYXJuU2tpbGwsIE1vZGlmeVNraWxsLCBMaW1pdEFiaWxpdHkKKyAgICAqIE51dHp1bmc6ICAgICAgICBVc2VTcGVsbCwgVXNlU2tpbGwKKyAgICAqIHNvbnN0aWc6ICAgICAgICBzcHJ1Y2hlcm11ZWR1bmcsIHNraWxsX2luZm9fbGlzdGUKKworNS4gT2t0IDIwMTEgR2xvaW5zb24KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9kb2MvbGZ1bi9zcGVsbGJvb2svUXVlcnlTcGVsbCBiL2RvYy9sZnVuL3NwZWxsYm9vay9RdWVyeVNwZWxsCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjBjYWRlYzIKLS0tIC9kZXYvbnVsbAorKysgYi9kb2MvbGZ1bi9zcGVsbGJvb2svUXVlcnlTcGVsbApAQCAtMCwwICsxLDI2IEBACitRdWVyeVNwZWxsKCkKK0ZVTktUSU9OOgorICAgIG1hcHBpbmcgUXVlcnlTcGVsbChzdHJpbmcgc3BlbGwpCisKK0RFRklOSUVSVCBJTjoKKyAgICAvc3RkL3NwZWxsYm9vay5jCisKK0FSR1VNRU5URToKKyAgICBzdHJpbmcgc3BlbGwgICAgTmFtZSBkZXMgU3BlbGxzCisKK0JFU0NIUkVJQlVORzoKKyAgICBHaWJ0IGRhcyBTcGVsbG1hcHBpbmcgYXVzIFBfU0JfU1BFTExTIGZ1ZXIgZGllc2VuIFNwZWxsIHp1cnVlY2suCisgICAgCisgICAgSGllciBlbnRoYWVsdCBRdWVyeVNwZWxsIG51ciBkaWUgU3BlbGxib29rLUluZm9ybWF0aW9uZW4uCisKK1NJRUhFIEFVQ0g6CisgICAgU3BlbGxib29rIExlcm5lbjogTGVhcm4sIFNwZWxsU3VjY2VzcywgRXJmb2xnLCBNaXNzZXJmb2xnCisgICAgKiBWZXJ3YWx0ZW46ICAgICAgQWRkU3BlbGwKKyAgICAqIEFuZ3JpZmY6ICAgICAgICBUcnlBdHRhY2tTcGVsbCwgVHJ5RGVmYXVsdEF0dGFja1NwZWxsLAorICAgICAgICAgICAgICAgICAgICAgIFRyeUdsb2JhbEF0dGFja1NwZWxsCisgICAgKiBQcm9wZXJ0aWVzOiAgICAgUF9HTE9CQUxfU0tJTExQUk9QUywgUF9TQl9TUEVMTFMKKyAgICBTa2lsbHMgTGVybmVuOiAgICBMZWFyblNraWxsLCBNb2RpZnlTa2lsbCwgTGltaXRBYmlsaXR5CisgICAgKiBOdXR6dW5nOiAgICAgICAgVXNlU3BlbGwsIFVzZVNraWxsCisgICAgKiBzb25zdGlnOiAgICAgICAgc3BydWNoZXJtdWVkdW5nLCBza2lsbF9pbmZvX2xpc3RlCisKKzUuIE9rdCAyMDExIEdsb2luc29uClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZG9jL2xmdW4vc3BlbGxib29rL1NwZWxsU3VjY2VzcyBiL2RvYy9sZnVuL3NwZWxsYm9vay9TcGVsbFN1Y2Nlc3MKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZWM0NDg4NAotLS0gL2Rldi9udWxsCisrKyBiL2RvYy9sZnVuL3NwZWxsYm9vay9TcGVsbFN1Y2Nlc3MKQEAgLTAsMCArMSwzMSBAQAorU3BlbGxTdWNjZXNzKCkKK0ZVTktUSU9OOgorICAgIGludCBTcGVsbFN1Y2Nlc3Mob2JqZWN0IGNhc3RlciwgbWFwcGluZyBzaW5mbykKKworREVGSU5JRVJUIElOOgorICAgIC9zdGQvc3BlbGxib29rLmMKKworQVJHVU1FTlRFOgorICAgIG9iamVjdCBjYXN0ZXIgICAgU3BlbGwgc3ByZWNoZW5kZXIgU3BpZWxlcgorICAgIG1hcHBpbmcgc2luZm8gICAgU3BlbGwtSW5mby1NYXBwaW5nIG1pdCBhbGxlbiBJbmZvcm1hdGlvbmVuCisKK0JFU0NIUkVJQlVORzoKKyAgICBCZXJlY2huZXQgZGVuIEVyZm9sZyBkZXIgQW53ZW5kdW5nIGVpbmVzIFNwZWxscyBhdXMgc2VpbmVyCisgICAgU0lfU0tJTExBQklMSVRZIHVuZCBkZW0gU2tpbGwgU0tfQ0FTVElORyBpbSBTcGllbGVyLiBMYWVzc3QKKyAgICBkZW4gU3BpZWxlciBiZWkgYmVzb25kZXJzIGd1dGVtIEdlbGluZ2VuIFNLX0NBU1RJTkcgbGVybmVuLgorCitCRU1FUktVTkdFTjoKKyAgICBTS19DQVNUSU5HIG11c3MgZnVlciBkaWUgU0tfQ0FTVElORy1Cb25pIGJlaGVycnNjaHQgd2VyZGVuLgorICAgIERhcyBpc3QgekIgaW0gS2xlcnVzIGFiIGJlc3RpbW10ZW0gTGV2ZWwgZGVyIEZhbGwuCisKK1NJRUhFIEFVQ0g6CisgICAgU3BlbGxib29rIExlcm5lbjogTGVhcm4sIEVyZm9sZywgTWlzc2VyZm9sZworICAgICogVmVyd2FsdGVuOiAgICAgIEFkZFNwZWxsLCBRdWVyeVNwZWxsCisgICAgKiBBbmdyaWZmOiAgICAgICAgVHJ5QXR0YWNrU3BlbGwsIFRyeURlZmF1bHRBdHRhY2tTcGVsbCwKKyAgICAgICAgICAgICAgICAgICAgICBUcnlHbG9iYWxBdHRhY2tTcGVsbAorICAgICogUHJvcGVydGllczogICAgIFBfR0xPQkFMX1NLSUxMUFJPUFMsIFBfU0JfU1BFTExTCisgICAgU2tpbGxzIExlcm5lbjogICAgTGVhcm5Ta2lsbCwgTW9kaWZ5U2tpbGwsIExpbWl0QWJpbGl0eQorICAgICogTnV0enVuZzogICAgICAgIFVzZVNwZWxsLCBVc2VTa2lsbAorICAgICogc29uc3RpZzogICAgICAgIHNwcnVjaGVybXVlZHVuZywgc2tpbGxfaW5mb19saXN0ZQorCis1LiBPa3QgMjAxMSBHbG9pbnNvbgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2RvYy9sZnVuL3NwZWxsYm9vay9UcnlBdHRhY2tTcGVsbCBiL2RvYy9sZnVuL3NwZWxsYm9vay9UcnlBdHRhY2tTcGVsbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi43NmQ3NWI4Ci0tLSAvZGV2L251bGwKKysrIGIvZG9jL2xmdW4vc3BlbGxib29rL1RyeUF0dGFja1NwZWxsCkBAIC0wLDAgKzEsNDggQEAKKyoqIGdpbGRlbi1kb2t1CisgbyBUcnlBdHRhY2tTcGVsbChvcGZlcixzY2hhZGVuLHR5cGVuLGlzX3NwZWxsLGNhc3RlcixpbmZvKQorICAgVmVyc3VjaHQgZGVuIEFuZ3JpZmZzLVNwcnVjaCBhdWYgZGVuIEdlZ25lciBhbnp1d2VuZGVuLiBEaWUKKyAgIG1pdHRsZXJlbiA0IFdlcnRlIHNpbmQgZGllLCBkaWUgYXVjaCBiZWkgRGVmZW5kIHVlYmVyZ2ViZW4gd2VyZGVuLgorICAgRGFiZWkgd2lyZCBkaWUgQWJ3ZWhyZmFlaGlna2VpdCBkZXMgR2VnbmVycyBnZWdlbiBNYWdpZSB1bmQgZGFzCisgICBTa2lsbC1BdHRyaWJ1dCBTQV9EQU1BR0UgYXV0b21hdGlzY2ggYmVydWVja3NpY2h0aWd0LiAKKworRlVOS1RJT046CisKK2ludCBUcnlBdHRhY2tTcGVsbChvYmplY3QgdmljdGltLCBpbnQgZGFtYWdlLCBtaXhlZCBkdHlwZXMsCisgICAgICAgICAgICAgICAgICAgbWl4ZWQgaXNfc3BlbGwsIG9iamVjdCBjYXN0ZXIsIG1hcHBpbmcgc2luZm8pCisKKworQVJHVU1FTlRFOgorCisgICAgICAgIHZpY3RpbSAgIDogRGFzIGFybWUgT3BmZXIuCisgICAgICAgIGRhbWFnZSAgIDogRGVyIFNjaGFkZW4uCisgICAgICAgIGR0eXBlcyAgIDogRGllIFNjaGFkZW5zYXJ0ZW4uCisJICAgICAgaXNfc3BlbGwgOiBJc3QgZXMgZWluIFNwZWxsPyBXZXJkZW4gbm9jaCBTcGV6aWVsbGUgUGFyYW1ldGVyIAorCSAgICAgICAgICAgdWViZXJnZWJlbiAoYWxzIG1hcHBpbmcpID8KKyAgICAgICAgY2FzdGVyICAgOiBEZXJqZW5pZ2UsIGRlciBkZW4gU3BydWNoIHNwcmljaHQuCisgICAgICAgIHNpbmZvICAgIDogTWFwcGluZyBtaXQgYWxsZW4gbW9lZ2xpY2hlbiBJbmZvcm1hdGlvbmVuIHp1bSBTcGVsbAorCisKK0JFU0NIUkVJQlVORzoKKworCURpZXNlIEZ1bmt0aW9uIHdpcmQgdm9tIFNwZWxsYm9vayBhdWZnZXJ1ZmVuLCB3ZW5uIGRlciBTcGllbGVyCisJZWluZW4gQW5ncmlmZnNzcGVsbCBnZW1hY2h0IGhhdCB1bmQgZGFtaXQgU2NoYWRlbiBhbnJpY2h0ZW4gd2lsbC4KKworCitSVUVDS0dBQkVXRVJUOgorCisJRGVyIFdlcnQsIGRlciB2b20gRGVmZW5kKCkgZGVzIEdlZ25lcnMgenVydWVja2dlbGllZmVydCB3aXJkLgorCisKK0JFTUVSS1VOR0VOOgorCisJWnUgZXJzdCB3aXJkIHVlYmVycHJ1ZWZ0LCBvYiBkYXMgWmllbCB1ZWJlcmhhdXB0IGFuZ3JlaWZiYXIgaXN0LiBEaWVzCisJdmVyaGluZGVydCBkYXMgdWViZW4gdm9uIFNwZWxscyBhbiB1bmFuZ3JlaWZiYXJlbiBOUENzLgorCUFscyBuYWVjaHN0ZXMgd2lyZCBkaWUgRmFlaGlna2VpdCwgU3BlbGxzIGFienV3ZWhyZW4gdWViZXJwcnVlZnQuCisJRmFsbHMgYmVpZGUgQWJmcmFnZW4gb2sgc2luZCwgd2lyZCBEZWZlbmQgYXVmZ2VydWZlbi4KKworCitTaWVoZSBhdWNoOgorCitUcnlEZWZhdWx0QXR0YWNrU3BlbGwgKHRvIGJlIHdyaXR0ZW4pCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKzA3LjEwLjIwMDcsIFplc3N0cmEKZGlmZiAtLWdpdCBhL2RvYy9sZnVuL3RyaWdnZXJfc2Vuc2l0aXZlX2F0dGFjayBiL2RvYy9sZnVuL3RyaWdnZXJfc2Vuc2l0aXZlX2F0dGFjawpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4xMjliMzhjCi0tLSAvZGV2L251bGwKKysrIGIvZG9jL2xmdW4vdHJpZ2dlcl9zZW5zaXRpdmVfYXR0YWNrCkBAIC0wLDAgKzEsNzUgQEAKK3RyaWdnZXJfc2Vuc2l0aXZlX2F0dGFjaygpCisKK0ZVTktUSU9OOgorICAgICB2YXJhcmdzIHZvaWQgdHJpZ2dlcl9zZW5zaXRpdmVfYXR0YWNrKG9iamVjdCBlbmVteSwgc3RyaW5nIGtleSwgaW50CisgICAgIGRhbSwgbWl4ZWQgc3BlbGwsIG1peGVkICpvcHRpb25zKTsKKworREVGSU5JRVJUIElOOgorICAgICBlaWdlbmVuIHNlbnNpdGl2ZW4gT2JqZWt0ZW4sIHdpcmQgYXVmZ2VydWZlbiB2b24KKyAgICAgL3N0ZC9saXZpbmcvaW52ZW50b3J5LmMKKworQVJHVU1FTlRFOgorICAgICBlbmVteQorICAgICAgICAgIERlciBHZWduZXIsIGRlciBkaWUgQWt0aW9uIGF1c2dlbG9lc3QgaGF0LgorICAgICBrZXkKKyAgICAgICAgICBEZXIgYXVzbG9lc2VuZGUgU2NoYWRlbnN0eXAuCisgICAgIGRhbQorICAgICAgICAgIERlciBhbmdlcmljaHRldGUgU2NoYWRlbi4KKyAgICAgc3BlbGwKKyAgICAgICAgICBXaWUgYmVpIERlZmVuZCgpLgorICAgICBvcHRpb25zCisgICAgICAgICAgQXJyYXkgbWl0IGRlbiBpbiBQX1NFTlNJVElWRSBhbmdlZ2ViZW5lbiBPcHRpb25lbiBmdWVyIGRpZXNlCisgICAgICAgICAgQWt0aW9uLgorCitCRVNDSFJFSUJVTkc6CisgICAgIFdlbm4gZGVyIGJlaSBlaW5lbSBBbmdyaWZmIHp1Z2VmdWVndGUgU2NoYWRlbiBkZW4gaW4gUF9TRU5TSVRJVkUKKyAgICAgYW5nZWdlYmVuZW4gR3Jlbnp3ZXJ0IHVlYmVyc3RlaWd0IHNvd2llIGRlciBhbHMgU2NobHVlc3NlbCBhbmdlZ2ViZW5lCisgICAgIFNjaGFkZW5zdHlwIGluIGRlbiBTY2hhZWRlbnN0eXBlbiBkZXMgQW5ncmlmZmVzIHZvcmtvbW10LCB3aXJkIGRpZXNlCisgICAgIEZ1bmt0aW9uIGF1ZmdlcnVmZW4gdW5kIGthbm4gZW50c3ByZWNoZW5kIHJlYWdpZXJlbi4KKworUlVlQ0tHQUJFV0VSVDoKKyAgICAga2VpbmVyCisKK0JFSVNQSUVMRToKKyAgICAgRWluZSBGYWNrZWwsIGRpZSBzaWNoIGJlaSBGZXVlcmF0dGFja2VuIHNlbGJzdCBlbnR6dWVuZGV0IHVuZCBiZWkKKyAgICAgV2Fzc2VyYXR0YWNrZW4gdmVybG9lc2NodCwga29lbm50ZSBtYW4gd2llIGZvbGd0IGltcGxlbWVudGllcmVuOgorCisgICAgIGluaGVyaXQgIi9zdGQvbGlnaHRzb3VyY2UuYyIKKworICAgICAjaW5jbHVkZSA8cHJvcGVydGllcy5oPgorICAgICAjaW5jbHVkZSA8c2Vuc2l0aXZlLmg+CisgICAgICNpbmNsdWRlIDxjb21iYXQuaD4KKworICAgICBjcmVhdGUoKQorICAgICB7CisgICAgICAgOjpjcmVhdGUoKTsKKworICAgICAgIFNldFByb3AoLi4uKTsgLy8gZGllIHVlYmxpY2hlbiBFaWdlbnNjaGFmdGVuIGRlZmluaWVyZW4KKworICAgICAgIFNldFByb3AoUF9TRU5TSVRJVkUsCisgICAgICAgICAgIC8vICBFcmVpZ25pcyAgICAgICAgICBLZXkgICAgICAgR3JlbnplIChrZWluZSBPcHRpb25lbikKKyAgICAgICAgICh7ICh7IFNFTlNJVElWRV9BVFRBQ0ssIERUX0ZJUkUsICAxMDAgfSksCisgICAgICAgICAgICAoeyBTRU5TSVRJVkVfQVRUQUNLLCBEVF9XQVRFUiwgMTAwIH0pIH0pICk7CisgICAgIH0KKworICAgICB2YXJhcmdzIHZvaWQKKyAgICAgdHJpZ2dlcl9zZW5zaXRpdmVfYXR0YWNrKG9iamVjdCBlbmVteSwgc3RyaW5nIGtleSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCBkYW0sIG1peGVkIHNwZWxsKQorICAgICB7CisgICAgICAgLy8gRXMgc29sbCBuaWNodCB2ZXJzY2h3aWVnZW4gd2VyZGVuLCBkYXNzIGRhcyBFbnR6dWVuZGVuIHVuZAorICAgICAgIC8vIExvZXNjaGVuIGVpbmVyIExpY2h0cXVlbGxlIHNvIGxlaWRlciBuaWNodCBmdW5rdGlvbmllcnQuLi4KKyAgICAgICBpZiAoa2V5ID09IERUX0ZJUkUgJiYgIVF1ZXJ5UHJvcChQX0xJR0hURUQpKSB7CisgICAgICAgICBTZXRQcm9wKFBfTElHSFRFRCwgMSk7CisgICAgICAgICB0ZWxsX29iamVjdChlbnZpcm9ubWVudCgpLCAiRGllIEZhY2tlbCBmYWVuZ3QgRmV1ZXIuXG4iKTsKKyAgICAgICB9CisgICAgICAgZWxzZSBpZiAoa2V5ID09IERUX1dBVEVSICYmIFF1ZXJ5UHJvcChQX0xJR0hURUQpKSB7CisgICAgICAgICBTZXRQcm9wKFBfTElHSFRFRCwgMCk7CisgICAgICAgICB0ZWxsX29iamVjdChlbnZpcm9ubWVudCgpLCAiRGllIEZhY2tlbCB2ZXJsaXNjaHQuXG4iKTsKKyAgICAgICB9CisgICAgIH0KKworU0lFSEUgQVVDSDoKKyAgICAgdHJpZ2dlcl9zZW5zaXRpdmVfaW52KCksIHNlbnNpdGl2ZSBPYmpla3RlCisKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KK0xhc3QgbW9kaWZpZWQ6IFN1biBNYXkgMTkgMTU6NTY6MjUgMTk5NiBieSBXYXJnb24KZGlmZiAtLWdpdCBhL2RvYy9sZnVuL3RyaWdnZXJfc2Vuc2l0aXZlX2ludiBiL2RvYy9sZnVuL3RyaWdnZXJfc2Vuc2l0aXZlX2ludgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5hNDE3ZWJlCi0tLSAvZGV2L251bGwKKysrIGIvZG9jL2xmdW4vdHJpZ2dlcl9zZW5zaXRpdmVfaW52CkBAIC0wLDAgKzEsNDAgQEAKK3RyaWdnZXJfc2Vuc2l0aXZlX2ludigpCisKK0ZVTktUSU9OOgorICAgICB2YXJhcmdzIHZvaWQgdHJpZ2dlcl9zZW5zaXRpdmVfaW52KG9iamVjdCBvYiwgc3RyaW5nIGtleSwgaW50IHdlcnQsCisgICAgIG1peGVkICpvcHRpb25lbjEsIG1peGVkICpvcHRpb25lbjIpOworCitERUZJTklFUlQgSU46CisgICAgIGVpZ2VuZW4gT2JqZWt0ZW4sIHdpcmQgYXVmZ2VydWZlbiB2b24gL3N0ZC9jb250YWluZXIvaW52ZW50b3J5LmMKKworQVJHVU1FTlRFOgorICAgICBvYgorICAgICAgICAgIERhcyBhdXNsb2VzZW5kZSBPYmpla3QKKyAgICAga2V5CisgICAgICAgICAgRGVyIFNjaGx1ZXNzZWwsIGRlciBkaWUgQWt0aW9uIGF1c2xvZXN0ZS4KKyAgICAgd2VydAorICAgICAgICAgIERlciBHcmVuendlcnQgZGVzIGF1c2xvZXNlbmRlbiBPYmpla3Rlcy4KKyAgICAgb3B0aW9uZW4xCisgICAgICAgICAgRGllIE9wdGlvbmVuIGRlcyBhdXNsb2VzZW5kZW4gT2JqZWt0ZXMuCisgICAgIG9wdGlvbmVuMgorICAgICAgICAgIERpZSBPcHRpb25lbiBkZXMgcmVhZ2llcmVuZGVuIE9iamVrdGVzLgorCitCRVNDSFJFSUJVTkc6CisgICAgIERpZXNlIEZ1bmt0aW9uIHdpcmQgaW4gT2JqZWt0ZW4gZGVzIHNlbnNpdGl2ZW4gVHlwcyBTRU5TSVRJVkVfSU5WRU5UT1JZCisgICAgIGF1ZmdlcnVmZW4sIHdlbm4gc2llIGluIEtvbnRha3QgbWl0IE9iamVrdGVuIGRlcyBUeXBzCisgICAgIFNFTlNJVElWRV9JTlZFTlRPUllfVFJJR0dFUiB0cmV0ZW4sIGRpZSBkZW4gZ2xlaWNoZW4gU2NobHVlc3NlbAorICAgICBhdWZ3ZWlzZW4gdW5kIGVpbmVuIGhvZWhlcmVuIEdyZW56d2VydCBoYWJlbi4KKworICAgICBBbmhhbmQgZGVyIFBhcmFtZXRlciBrb2VubmVuIGRhbm4gZGllIG5vZXRpZ2VuIEFrdGlvbmVuIGF1c2dlbG9lc3QKKyAgICAgd2VyZGVuLgorCitSVWVDS0dBQkVXRVJUOgorICAgICBrZWluZXIKKworQkVJU1BJRUxFOgorCitTSUVIRSBBVUNIOgorICAgICB0cmlnZ2VyX3NlbnNpdGl2ZV9hdHRhY2soKSwgc2Vuc2l0aXZlIE9iamVrdGUKKworLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorTGFzdCBtb2RpZmllZDogV2VkIE1heSA4IDEwOjI2OjEwIDE5OTYgYnkgV2FyZ29uCmRpZmYgLS1naXQgYS9kb2MvbGZ1bi93aWVsZF9tZSBiL2RvYy9sZnVuL3dpZWxkX21lCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjQyNzUwNGUKLS0tIC9kZXYvbnVsbAorKysgYi9kb2MvbGZ1bi93aWVsZF9tZQpAQCAtMCwwICsxLDEwIEBACit3aWVsZF9tZSgpCisKK0JFTUVSS1VOR0VOOgorICAgICB3aWVsZF9tZSB3dXJkZSBkdXJjaCBEb1dpZWxkIGVyc2V0enQuCisKK1NJRUhFIEFVQ0g6CisgICAgIERvV2llbGRGdW5jKCksIC9zdGQvd2VhcG9uLmMKKworLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorTGFzdCBtb2RpZmllZDogV2VkIEFwciAwOCAxMDoyNTowMCAyMDA0IGJ5IE11YWRpYgpkaWZmIC0tZ2l0IGEvZG9jL2xpYmhvb2tzL0hfSE9PS19FWElUX1VTRSBiL2RvYy9saWJob29rcy9IX0hPT0tfRVhJVF9VU0UKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZTRlNGU1MwotLS0gL2Rldi9udWxsCisrKyBiL2RvYy9saWJob29rcy9IX0hPT0tfRVhJVF9VU0UKQEAgLTAsMCArMSwzMCBAQAorSE9PSzogCisgICBIX0hPT0tfRVhJVF9VU0UKKworREVGSU5JRVJUIElOOgorICAgL3N5cy9ob29rLmgKKworR0VSVUZFTiBWT046CisgICAvc3RkL3Jvb20vZXhpdHMuYworCitCRVNDSFJFSUJVTkc6CisgICBXaXJkIGF1c2dlbG9lc3QsIHdlbm4gZWluIExlYmV3ZXNlbiBlaW5lbiBSYXVtYXVzZ2FuZyBiZW51dHp0LgorCitFVkVOVC1EQVRFTjoKKyAgIEVzIHdpcmQgZWluIEFycmF5IHVlYmVyZ2ViZW46CisgICAoeyA8dmVyYj4sIDxkZXN0cm9vbT4sIDxtZXNzYWdlPiB9KQorICAgICAgPHZlcmI+ICAgICA6IGVpbmdlZ2ViZW5lcyBLb21tYW5kb3ZlcmIKKyAgICAgIDxkZXN0cm9vbT4gOiBaaWVscmF1bSAoc3RyaW5nKSBvZGVyIGNsb3N1cmUKKyAgICAgIDxtZXNzYWdlPiAgOiBCZXdlZ3VuZ3NtZWxkdW5nIChnZ2YuIDApCisKK1JVZUNLR0FCRVdFUlRFOgorICAgKHsgPHN0YXR1cz4sIDxkYXRlbj4gfSkKKyAgICAgIDxzdGF0dXM+ICA6IEhfTk9fTU9ELCBIX0NBTkNFTExFRCwgSF9BTFRFUkVECisgICAgICA8ZGF0ZW4+ICAgOiB3aWUgdWViZXJnZWJlbmVzIERhdGVuYXJyYXkKKworU0lFSEUgQVVDSDoKKyAgIEhSZWdpc3RlclRvSG9vaygpLCBIVW5yZWdpc3RlckZyb21Ib29rKCksIEhvb2tGbG93KCkKKworLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKzcuMi4yMDE2LCBaZXNzdHJhCisKZGlmZiAtLWdpdCBhL2RvYy9saWJob29rcy9IX0hPT0tfSFAgYi9kb2MvbGliaG9va3MvSF9IT09LX0hQCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmU4MDc5MWYKLS0tIC9kZXYvbnVsbAorKysgYi9kb2MvbGliaG9va3MvSF9IT09LX0hQCkBAIC0wLDAgKzEsMjggQEAKK0hPT0s6CisgICBIX0hPT0tfSFAKKworREVGSU5JRVJUIElOOgorICAgL3N5cy9ob29rLmgKKworQVVTR0VMT2VTVCBWT046CisgICAvc3RkL2xpdmluZy9saWZlLmMKKworQkVTQ0hSRUlCVU5HOgorICAgV2lyZCBhdXNnZWxvZXN0LCB3ZW5uIHNpY2ggZGllIFBfSFAgZWluZXMgU3BpZWxlcnMgYWVuZGVybi4KKyAgIERpZXNlciBIb29rIGxhZXVmdCBuYWNoIGRlciBBZW5kZXJ1bmcgZGVyIExlYmVuc3B1bmt0ZS4gRXMgaXN0IG5pY2h0CisgICBtb2VnbGljaCwgZGllc2VuIEhvb2sgYWJ6dWJyZWNoZW4gb2RlciBkaWUgTGViZW5zcHVua3RlIHp1IGFlbmRlcm4uCisKK0VWRU5ULURBVEVOOgorICAgRXMgd2VyZGVuIGRpZSBuZXVlbiBMZWJlbnNwdW5rdGUgZGVzIFNwaWVsZXJzIHVlYmVyZ2ViZS4KKworUlVlQ0tHQUJFV0VSVEU6CisgICAoeyA8c3RhdHVzPiwgPGRhdGVuPiB9KQorICAgICAgPHN0YXR1cz4gIDogSF9OT19NT0QKKyAgICAgIDxkYXRlbj4gICA6IExlYmVuc3B1bmt0ZQorCitTSUVIRSBBVUNIOgorICAgSFJlZ2lzdGVyVG9Ib29rKCksIEhVbnJlZ2lzdGVyRnJvbUhvb2soKSwgSG9va0Zsb3coKQorCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorNy4yLjIwMTYsIFplc3N0cmEKKwpkaWZmIC0tZ2l0IGEvZG9jL2xpYmhvb2tzL0hfSE9PS19TUCBiL2RvYy9saWJob29rcy9IX0hPT0tfU1AKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYzY0Zjk4ZQotLS0gL2Rldi9udWxsCisrKyBiL2RvYy9saWJob29rcy9IX0hPT0tfU1AKQEAgLTAsMCArMSwyNyBAQAorSE9PSzoKKyAgIEhfSE9PS19TUAorCitERUZJTklFUlQgSU46CisgICAvc3lzL2hvb2suaAorCitBVVNHRUxPZVNUIFZPTjoKKyAgIC9zdGQvbGl2aW5nL2xpZmUuYworCitCRVNDSFJFSUJVTkc6CisgICBXaXJkIGF1c2dlbG9lc3QsIHdlbm4gc2ljaCBkaWUgUF9TUCBlaW5lcyBTcGllbGVycyBhZW5kZXJuLgorICAgRGllc2VyIEhvb2sgbGFldWZ0IG5hY2ggZGVyIEFlbmRlcnVuZyBkZXIgS29uemVudHJhdGlvbnNwdW5rdGUuIEVzIGlzdAorICAgbmljaHQgbW9lZ2xpY2gsIGRpZXNlbiBIb29rIGFienVicmVjaGVuIG9kZXIgZGllIExlYmVuc3B1bmt0ZSB6dSBhZW5kZXJuLgorCitFVkVOVC1EQVRFTjoKKyAgIEVzIHdlcmRlbiBkaWUgbmV1ZW4gS29uemVudHJhdGlvbnNwdW5rdGUgZGVzIFNwaWVsZXJzIHVlYmVyZ2ViZW4uCisKK1JVZUNLR0FCRVdFUlRFOgorICAgKHsgPHN0YXR1cz4sIDxkYXRlbj4gfSkKKyAgICAgIDxzdGF0dXM+ICA6IEhfTk9fTU9ECisgICAgICA8ZGF0ZW4+ICAgOiBLb256ZW50cmF0aW9uc3B1bmt0ZQorCitTSUVIRSBBVUNIOgorICAgSFJlZ2lzdGVyVG9Ib29rKCksIEhVbnJlZ2lzdGVyRnJvbUhvb2soKSwgSG9va0Zsb3coKQorCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorNy4yLjIwMTYsIFplc3N0cmEKZGlmZiAtLWdpdCBhL2RvYy9tYXN0ZXIvY29tcGlsZV9vYmplY3QgYi9kb2MvbWFzdGVyL2NvbXBpbGVfb2JqZWN0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjFiNTU2NTgKLS0tIC9kZXYvbnVsbAorKysgYi9kb2MvbWFzdGVyL2NvbXBpbGVfb2JqZWN0CkBAIC0wLDAgKzEsMTEgQEAKK1NZTk9QU0lTCisJb2JqZWN0IGNvbXBpbGVfb2JqZWN0KHN0cmluZyBmaWxlbmFtZSkKKworREVTQ1JJUFRJT04KKwlUaGlzIGZ1bmN0aW9uIGlzIGNhbGVkIGlmIHRoZSBpbnRlcnByZXRlciBjYW5ub3QgZmluZCB0aGUKKwlmaWxlIGZvciBhbiBvYmplY3QgdG8gYmUgbG9hZGVkLiBUaGUgbWFzdGVyIG9iamVjdCBoYXMgbm93CisJdGhlIG9wcG9ydHVuaXR5IHRvIHJldHVybiBhbiBvYmplY3QgdGhhdCB3aWxsIHRoZW4gc2VydmUgYXMgaWYKKwljb21waWxlZCBmcm9tIHRoZSBnaXZlbiBmaWxlbmFtZS4KKworCUlmIDAgaXMgcmV0dXJuZWQsIHRoZSB1c3VhbCBgYENvdWxkIG5vdCBsb2FkIGRlc2NyIGZvcicnIGVycm9yCisJd2lsbCBvY2N1ci4KZGlmZiAtLWdpdCBhL2RvYy9tYXN0ZXIvY29ubmVjdCBiL2RvYy9tYXN0ZXIvY29ubmVjdApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5hMWM3MzE1Ci0tLSAvZGV2L251bGwKKysrIGIvZG9jL21hc3Rlci9jb25uZWN0CkBAIC0wLDAgKzEsMTMgQEAKK1NZTk9QU0lTCisJb2JqZWN0IGNvbm5lY3Qodm9pZCkKKworREVTQ1JJUFRJT04KKwlSZXR1cm4gYSBsb2dpbiBvYmplY3QgdGhhdCB0aGUgcmVxdWVzdGVkIGNvbm5lY3Rpb24gc2hvdWxkIGJlCisJYm91bmQgdG8uIE5vdGUgdGhhdCB0aGUgY29ubmVjdGlvbiBpcyBub3QgYm91bmQgeWV0LgorCisJVGhlIGxmdW4gbG9nb24oKSB3aWxsIGJlIGFwcGxpZWQgdG8gdGhlIGxvZ2luIG9iamVjdCBhZnRlcgorCWJpbmRpbmcgdGhlIGNvbm5lY3Rpb24gdG8gaXQuIFRoYXQgbGZ1biBoYXMgdG8gcmV0dXJuICE9IDAgdG8KKwlpbmRpY2F0ZSBzdWNjZXNzLgorCitTRUUgQUxTTworCWxvZ29uKEEpLCBkaXNjb25uZWN0KE0pLCBpbnRlcmFjdGl2ZShFKSwgZXhlYyhFKQpkaWZmIC0tZ2l0IGEvZG9jL21hc3Rlci9kYW5nbGluZ19sZnVuX2Nsb3N1cmUgYi9kb2MvbWFzdGVyL2RhbmdsaW5nX2xmdW5fY2xvc3VyZQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi42YmZhZWI1Ci0tLSAvZGV2L251bGwKKysrIGIvZG9jL21hc3Rlci9kYW5nbGluZ19sZnVuX2Nsb3N1cmUKQEAgLTAsMCArMSwyNiBAQAorU1lOT1BTSVMKKwl2b2lkIGRhbmdsaW5nX2xmdW5fY2xvc3VyZSgpCisKK0RFU0NSSVBUSU9OCisJSGFuZGxlIGEgZGFuZ2xpbmcgbGZ1bi1jbG9zdXJlLgorCisJVGhpcyBpcyBjYWxsZWQgd2hlbiB0aGUgZ2FtZWRyaXZlciBleGVjdXRlcyBhIGNsb3N1cmUgdXNpbmcgYQorCXZhbmlzaGVkIGxmdW4uIEEgcHJvcGVyIGhhbmRsaW5nIGlzIHRvIHJhaXNlIGEgcnVudGltZSBlcnJvci4KKworCVRlY2huaWNhbDoKKwkgIFVwb24gcmVwbGFjaW5nIHByb2dyYW1zIChzZWUgZWZ1biByZXBsYWNlX3Byb2dyYW0oKSksIGFueQorCSAgZXhpc3RpbmcgbGFtYmRhIGNsb3N1cmVzIG9mIHRoZSBvYmplY3QgYXJlIGFkanVzdGVkIHRvIHRoZQorCSAgbmV3IGVudmlyb25tZW50LiBJZiBhIGNsb3N1cmUgdXNlcyBhIGxmdW4gd2hpY2ggdmFuaXNoZWQgaW4KKwkgIHRoZSByZXBsYWNlbWVudCBwcm9jZXNzLCB0aGUgcmVmZXJlbmNlIHRvIHRoaXMgbGZ1biBpcworCSAgcmVwbGFjZWQgYnkgYSByZWZlcmVuY2UgdG8gdGhpcyBmdW5jdGlvbi4gVGhlIGVycm9yIHdpbGwKKwkgIHRoZW4gb2NjdXIgd2hlbiB0aGUgZXhlY3V0aW9uIG9mIHRoZSBhZGp1c3RlZCBsYW1iZGEgcmVhY2hlcworCSAgdGhlIHBvaW50IG9mIHRoZSBsZnVuIHJlZmVyZW5jZS4gVGhlcmUgYXJlIHR3byByZWFzb25zIGZvcgorCSAgdGhlIGRlbGF5ZWQgaGFuZGxpbmcuIEZpcnN0IGlzIHRoYXQgdGhlIHByb2dyYW0gcmVwbGFjZW1lbnQKKwkgIGFuZCB3aXRoIGl0IHRoZSBjbG9zdXJlIGFkanVzdG1lbnQgaGFwcGVucyBhdCB0aGUgZW5kIG9mIGEKKwkgIGJhY2tlbmQgY3ljbGUsIG91dHNpZGUgb2YgYW55IGV4ZWN1dGlvbiB0aHJlYWQ6IG5vb25lIHdvdWxkCisJICBzZWUgdGhlIGVycm9yIGF0IHRoaXMgdGltZS4gIFNlY29uZCwgc21hcnQgY2xvc3VyZXMgbWlnaHQKKwkgIGtub3cvcmVjb2duaXplIHRoZSBwcm9ncmFtIHJlcGxhY2VtZW50ICBhbmQgc2tpcCB0aGUgY2FsbCB0bworCSAgdGhlIHZhbmlzaGVkIGxmdW4uCisKK1NFRSBBTFNPCisJY2xvc3VyZXMoTFBDKQpkaWZmIC0tZ2l0IGEvZG9jL21hc3Rlci9kaXNjb25uZWN0IGIvZG9jL21hc3Rlci9kaXNjb25uZWN0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmY3YTlmM2QKLS0tIC9kZXYvbnVsbAorKysgYi9kb2MvbWFzdGVyL2Rpc2Nvbm5lY3QKQEAgLTAsMCArMSwxMyBAQAorU1lOT1BTSVMKKwl2b2lkIGRpc2Nvbm5lY3Qob2JqZWN0IG9iKQorCitERVNDUklQVElPTgorCUhhbmRsZSB0aGUgbG9zcyBvZiB0aGUgSVAgY29ubmVjdGlvbiBmb3IgdGhlIChmb3JtZXJseSkKKwlpbnRlcmFjdGl2ZSBvYmplY3Qgb2IuIFRoZSBjb25uZWN0aW9uIGNhbiBiZSBsb3N0IGJlY2F1c2UgdGhlCisJdGhlIHVuZGVybHlpbmcgdHJhbnNwb3J0IGNvbm5lY3Rpb24gd2FzIGxvc3QgKGBgbmV0ZGVhZCcnKSwgb3IKKwliZWNhdXNlIG9mIGEgY2FsbCB0byBleGVjKCkgb3IgcmVtb3ZlX2ludGVyYWN0aXZlKCkuIFRoZQorCWNvbm5lY3Rpb24gd2lsbCBiZSB1bmJvdW5kIHVwb24gcmV0dXJuIGZyb20gdGhpcyBjYWxsLgorCitTRUUgQUxTTworCWNvbm5lY3QoTSksIHJlbW92ZV9wbGF5ZXIoTSksIHJlbW92ZV9pbnRlcmFjdGl2ZShFKSwgZXhlYyhFKSwKKwlpbnRlcmFjdGl2ZShFKQpkaWZmIC0tZ2l0IGEvZG9jL21hc3Rlci9lcGlsb2cgYi9kb2MvbWFzdGVyL2VwaWxvZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5lYjUxZDc1Ci0tLSAvZGV2L251bGwKKysrIGIvZG9jL21hc3Rlci9lcGlsb2cKQEAgLTAsMCArMSwyNCBAQAorU1lOT1BTSVMKKwl2b2lkIGVwaWxvZyh2b2lkKQkJLyogY29tcGF0IGluIDMuMiAqLworCXN0cmluZyAqZXBpbG9nKGludCBlZmxhZykJLyogIWNvbXBhdCBvciAzLjIuMSAqLworCitERVNDUklQVElPTgorCVBlcmZvcm0gZmluYWwgYWN0aW9ucyBiZWZvcmUgb3BlbmluZyB0aGUgc3lzdGVtIHRvIHVzZXJzLgorCVRoZSBzZW1hbnRpY3Mgb2YgdGhpcyBmdW5jdGlvbiBkaWZmZXIgZm9yIGNvbXBhdCBhbmQgIWNvbXBhdAorCW1vZGUsIGFuZCBiZXR3ZWVuIDMuMiBhbmQgMy4yLjEuCisKKwlDb21wYXQgaW4gMy4yOiB0aGUgb2JqZWN0cyBmcm9tIHRoZSBJTklUX0ZJTEUgKCNkZWZpbmVkIHRvCisJInJvb20vaW5pdF9maWxlIiBhdCBjb21waWxlIHRpbWUgaW4gdGhlIHBhcnNlcikgYXJlIGFscmVhZHkKKwlsb2FkZWQgYXQgdGhpcyB0aW1lLiBOb3JtYWxseSB0aGVyZSBpcyBub3RoaW5nIGxlZnQgdG8gZG8gZm9yCisJdGhpcyBmdW5jdGlvbi4KKworCSFDb21wYXQgYW5kIDMuMi4xOiB0aGUgYXJndW1lbnQgaXMgdGhlIG51bWJlciBvZiAtZSBvcHRpb25zIHRoYXQgd2VyZQorCWdpdmVuIHRvIHRoZSBwYXJzZXIgb24gdGhlIGNvbW1hbmRsaW5lLiBOb3JtYWxseSBpdCBpcyBqdXN0IDAKKwlvciAxLiBUaGUgZnVuY3Rpb24gc2hvdWxkIHJldHVybiBhbiBhcnJheSBvZiBzdHJpbmdzLCB3aGljaAorCXRyYWRpdGlvbmFsbHkgZGVub3RlIHRoZSBvYmplY3RzIHRvIGJlIHByZWxvYWRlZCB3aXRoCisJbWFzdGVyLT5wcmVsb2FkKCkuIEFueSBvdGhlciByZXR1cm4gdmFsdWUgaXMgaW50ZXJwcmV0ZWQgYXMKKwlgYG5vIG9iamVjdCB0byBwcmVsb2FkJycuIFRoZSByZXN1bHRpbmcgc3RyaW5ncyB3aWxsIGJlIHBhc3NlZAorCW9uZSBhdCBhIHRpbWUgYXMgYXJndW1lbnRzIHRvIHByZWxvYWQoKS4KKworU0VFIEFMU08JCisJcHJlbG9hZChNKSwgbWFzdGVyKE0pCmRpZmYgLS1naXQgYS9kb2MvbWFzdGVyL2V4dGVybmFsX21hc3Rlcl9yZWxvYWQgYi9kb2MvbWFzdGVyL2V4dGVybmFsX21hc3Rlcl9yZWxvYWQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNTc5MTNmMAotLS0gL2Rldi9udWxsCisrKyBiL2RvYy9tYXN0ZXIvZXh0ZXJuYWxfbWFzdGVyX3JlbG9hZApAQCAtMCwwICsxLDEwIEBACitTWU5PUFNJUworCXZvaWQgZXh0ZXJuYWxfbWFzdGVyX3JlbG9hZCgpCisKK0RFU0NSSVBUSU9OCisJTWFzdGVyIHdhcyByZWxvYWRlZCBvbiBleHRlcm5hbCByZXF1ZXN0IGJ5IFNJR1VTUjEuCisJSXQgd2lsbCBiZSBjYWxsZWQgYWZ0ZXIgaW5hdWd1cmF0ZV9tYXN0ZXIoKSBvZiBjb3Vyc2UuCisJSWYgeW91IHBsYW4gdG8gZG8gYWRkaXRpb25hbCBtYWdpYyBoZXJlLCB5b3UncmUgd2VsY29tZS4KKworU0VFIEFMU08KKwlpbmF1Z3VyYXRlX21hc3RlcihNKQpkaWZmIC0tZ2l0IGEvZG9jL21hc3Rlci9mbGFnIGIvZG9jL21hc3Rlci9mbGFnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmUwNGU5MWQKLS0tIC9kZXYvbnVsbAorKysgYi9kb2MvbWFzdGVyL2ZsYWcKQEAgLTAsMCArMSw0MSBAQAorU1lOT1BTSVMKKwl2b2lkIGZsYWcoc3RyaW5nIGFyZykKKworREVTQ1JJUFRJT04KKwlFdmFsdWF0ZSBhbiBhcmd1bWVudCBnaXZlbiBhcyBvcHRpb24gJy1mJyB0byB0aGUgZHJpdmVyLgorCUlmIHNldmVyYWwgJy1mJyBvcHRpb25zIGFyZSBnaXZlbiwgdGhpcyBmdW5jdGlvbiB3aWxsIGJlCisJY2FsbGVkIHNlcXVlbnRpYWxseSB3aXRoIGFsbCBnaXZlbiBhcmd1bWVudHMuCisJVGhpcyBmdW5jdGlvbiBjYW4gYmUgdXNlZCB0byBwYXNzIHRoZSBtYXN0ZXIgY29tbWFuZHMgdmlhCisJYXJndW1lbnRzIHRvIHRoZSBkcml2ZXIuIFRoaXMgaXMgdXNlZnVsIHdoZW4gYnVpbGRpbmcgYSBuZXcKKwltdWRsaWIgZnJvbSBzY3JhdGNoLiBJdCBpcyBjYWxsZWQgb25seSB3aGVuIHRoZSBzeXN0ZW0gaXMKKwlzdGFydGVkLgorCitFWEFNUExFCisJLy8gVGhlIGNvZGUgZ2l2ZW4gaW1wbGVtZW50cyB0aGVzZSBjb21tYW5kczoKKwkvLyAgJy1mY2FsbCA8b2I+IDxmdW4+IDxhcmc+JzogY2FsbCBmdW5jdGlvbiA8ZnVuPiBpbiBvYmplY3QgPG9iPiB3aXRoCisJLy8JCQkJYXJndW1lbnQgPGFyZz4uCisJLy8gICctZnNodXRkb3duJzogc2h1dGRvd24gdGhlIHN5c3RlbSBpbW1lZGlhdGVseS4KKwkvLyBUaHVzLCBzdGFydGluZyB0aGUgZHJpdmVyIGFzCisJLy8JICdwYXJzZSAiLWZjYWxsIGZvbyBiYXIgWW93ISIgLWZzaHV0ZG93bicgd291bGQKKwkvLyBmaXJzdCBkbyBmb28tPmJhcigiWW93ISIpIGFuZCB0aGVuIHNodXQgZG93biB0aGUgc3lzdGVtLgorCisJeworCSAgc3RyaW5nIG9iaiwgZnVuLCByZXN0OworCisJICBpZiAoYXJnID09ICJzaHV0ZG93biIpCisJICB7CisJICAgIHNodXRkb3duKCk7CisJICAgIHJldHVybjsKKwkgIH0KKwkgIGlmIChzc2NhbmYoYXJnLCAiY2FsbCAlcyAlcyAlcyIsIG9iaiwgZnVuLCByZXN0KSA+PSAyKQorCSAgeworCSAgICB3cml0ZShvYmorIi0+IitmdW4rIihcIiIrcmVzdCsiXCIpID0gIik7CisJICAgIHdyaXRlKGNhbGxfb3RoZXIob2JqLCBmdW4sIHJlc3QpKTsKKwkgICAgd3JpdGUoIlxuIik7CisJICAgIHJldHVybjsKKwkgIH0KKwkgIHdyaXRlKCJtYXN0ZXI6IFVua25vd24gZmxhZyAiK2FyZysiXG4iKTsKKwl9CisKK1NFRSBBTFNPCisJbWFzdGVyKE0pCmRpZmYgLS1naXQgYS9kb2MvbWFzdGVyL2dldF9iYl91aWQgYi9kb2MvbWFzdGVyL2dldF9iYl91aWQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNWE0ZGM4YgotLS0gL2Rldi9udWxsCisrKyBiL2RvYy9tYXN0ZXIvZ2V0X2JiX3VpZApAQCAtMCwwICsxLDE4IEBACitTWU5PUFNJUworCXN0cmluZyBnZXRfYmJfdWlkKHZvaWQpCisKK0RFU0NSSVBUSU9OCisJSXMgY2FsbGVkIHRvIGdldCB0aGUgYGBiYWNrYm9uZSBpZCcnLiBPYmplY3RzIHdob3NlIGNyZWF0b3IgaXMKKwl0aGUgYmFja2JvbmUgaWQgYXJlIGBgdHJ1c3RlZCcnLCBhbmQgd2lsbCBhdXRvbWFnaWNhbGx5IGdldAorCXRoZSB1aWQgYW5kIGV1aWQgb2YgdGhlIG9iamVjdCB0aGF0IGNhdXNlZCB0byBsb2FkIG9yIGNsb25lCisJdGhlbS4KKworCVRoZSBiYWNrYm9uZSBpZCBpcyBhbHNvIHRlbXBvcmFyeSBnaXZlbiB0byBvYmplY3RzIHdoaWxlIGJlaW5nCisJY2FsbGVkIHZpYSBwcm9jZXNzX3N0cmluZygpLgorCitISVNUT1JZCisJU2luY2UgMy4yLjEsIGdldF9iYl91aWQoKSBpcyBuZWVkZWQganVzdCBmb3IgcHJvY2Vzc19zdHJpbmcoKQorCWlmIG5vIHRoaXNfb2JqZWN0KCkgaXMgcHJlc2VudC4KKworU0VFIEFMU08KKwl1aWRzKEMpLCBjcmVhdG9yX2ZpbGUoTSksIGNyZWF0b3IoRSksIGdldF9yb290X2lkKE0pCmRpZmYgLS1naXQgYS9kb2MvbWFzdGVyL2dldF9lZF9idWZmZXJfc2F2ZV9maWxlX25hbWUgYi9kb2MvbWFzdGVyL2dldF9lZF9idWZmZXJfc2F2ZV9maWxlX25hbWUKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNTBhMjNjMwotLS0gL2Rldi9udWxsCisrKyBiL2RvYy9tYXN0ZXIvZ2V0X2VkX2J1ZmZlcl9zYXZlX2ZpbGVfbmFtZQpAQCAtMCwwICsxLDIyIEBACitTWU5PUFNJUworCXN0cmluZyBnZXRfZWRfYnVmZmVyX3NhdmVfb2JqZWN0X25hbWUoc3RyaW5nIGVkaXRlZF9maWxlKQorCitERVNDUklQVElPTgorCVRoaXMgZnVuY3Rpb24gaXMgY2FsbGVkIHdoZW4gYW4gaW50ZXJhY3RpdmUgdXNlciBvYmplY3QgaXMKKwlkZXN0cnVjdGVkIG9yIGxvb3NlcyBjb25uZWN0aW9uIHRocm91Z2ggcmVtb3ZlX2ludGVyYWN0aXZlKCkKKwl3aGlsZSBlZGl0aW5nIHdpdGggZWQoKSB0aGUgZmlsZSBlZGl0ZV9maWxlIChlbWVyZ2VuY3kgc2F2ZSkuCisJdGhpc19wbGF5ZXIoKSBpcyBzZXQgdG8gdGhlIG9iamVjdCB0aGF0IGxvb3NpbmcgY29ubmVjdGlvbi4KKwlUaGUgZnVuY3Rpb24gc2hvdWxkIHJldHVybiBhIGZpbGUgbmFtZSBmb3IgdGhlIGVtZXJnZW5jeSBzYXZlCisJZmlsZS4KKworRVhBTVBMRQorCXN0cmluZyBnZXRfZWRfYnVmZmVyX3NhdmVfb2JqZWN0X25hbWUoc3RyaW5nIGZpbGUpIHsKKwkgIHJldHVybiAiL3BsYXllcnMvIitnZXR1aWQodGhpc19wbGF5ZXIoKSkrIi8uZGVhZF9lZF9maWxlcy8iCisJCSArIGV4cGxvZGUoZmlsZSwgIi8iKVs8MV07CisJfQorCisJVGhpcyBicmVha3MgdXAgZmlsZSBpbnRvIGl0cyBjb21wb25lbnRzIGFuZCBzdG9yZXMgaXQgaW4gdGhlCisJdXNlcidzIGVtZXJnZW5jeSBzYXZlIGRpcmVjdG9yeSB1bmRlciB0aGUgZmlsZSdzIGJhc2VuYW1lLgorCitTRUUgQUxTTworCWVkKEUpLCBkZXN0cnVjdChFKSwgcmVtb3ZlX2ludGVyYWN0aXZlKEUpLCB2YWxpZF93cml0ZShNKQpkaWZmIC0tZ2l0IGEvZG9jL21hc3Rlci9nZXRfbWFzdGVyX3VpZCBiL2RvYy9tYXN0ZXIvZ2V0X21hc3Rlcl91aWQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYTBjNjczNwotLS0gL2Rldi9udWxsCisrKyBiL2RvYy9tYXN0ZXIvZ2V0X21hc3Rlcl91aWQKQEAgLTAsMCArMSwxMiBAQAorU1lOT1BTSVMKKwlzdHJpbmcgZ2V0X21hc3Rlcl91aWQodm9pZCkKKworREVTQ1JJUFRJT04KKwlSZXR1cm4gdGhlIHN0cmluZyB0byBiZSB1c2VkIGFzIHJvb3QtdWlkLgorCVVuZGVyICFuYXRpdmUsIHRoZSBmdW5jdGlvbiBpcyBleHBlbmRhYmxlLgorCitISVNUT1JZCisJSW50cm9kdWNlZCBpbiAzLjIuMUA0MCByZXBsYWNpbmcgZ2V0X3Jvb3RfdWlkKCkuCisKK1NFRSBBTFNPCisJZ2V0X2JiX3VpZChNKSwgZ2V0X21hc3Rlcl91aWQoTSksIHVpZHMoQyksIGNyZWF0b3JfZmlsZShNKSwgY3JlYXRvcihFKQpkaWZmIC0tZ2l0IGEvZG9jL21hc3Rlci9nZXRfc2ltdWxfZWZ1biBiL2RvYy9tYXN0ZXIvZ2V0X3NpbXVsX2VmdW4KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uODhhZGJhMAotLS0gL2Rldi9udWxsCisrKyBiL2RvYy9tYXN0ZXIvZ2V0X3NpbXVsX2VmdW4KQEAgLTAsMCArMSwyNCBAQAorU1lOT1BTSVMKKwltaXhlZCBnZXRfICAgICBzaW11bF9lZnVuKHZvaWQpICAgICAgLy8gMy4yCisJc3RyaW5nfHN0cmluZyogZ2V0X3NpbXVsX2VmdW4odm9pZCkgIC8vIDMuMi4xCisKK0RFU0NSSVBUSU9OCisJTG9hZCB0aGUgc2ltdWxfZWZ1biBvYmplY3QocykgYW5kIHJldHVybiBvbmUgb3IgbW9yZSBwYXRocyBvZiBpdC4KKy8vIE5vdGUgdGhhdCB0aGUgb2JqZWN0KHMpIG11c3QgYmUgbG9hZGVkIGJ5IHRoaXMgZnVuY3Rpb24hCisvLworLy8gV2hlbiB5b3UgcmV0dXJuIGFuIGFycmF5IG9mIHN0cmluZ3MsIHRoZSBmaXJzdCBzdHJpbmcgaXMgdGFrZW4gYXMgcGF0aAorLy8gdG8gdGhlIHNpbXVsX2VmdW4gb2JqZWN0LCBhbmQgYWxsIG90aGVyIHBhdGhzIGFyZSB1c2VkIGZvciBiYWNrdXAKKy8vIHNpbXVsX2VmdW4gb2JqZWN0cyB0byBjYWxsIHNpbXVsX2VmdW5zIHRoYXQgYXJlIG5vdCBwcmVzZW50IGluIHRoZQorLy8gbWFpbiBzaW11bF9lZnVuIG9iamVjdC4gVGhpcyBhbGxvd3MgdG8gcmVtb3ZlIHNpbXVsX2VmdW5zIGF0IHJ1bnRpbWUgCisvLyB3aXRob3V0IGdldHRpbmcgZXJyb3JzIGZyb20gb2xkIGNvbXBpbGVkIHByb2dyYW1zIHRoYXQgc3RpbGwgdXNlIHRoZSAKKy8vIG9ic29sZXRlIHNpbXVsX2VmdW5zLiBBIHNpZGUgdXNlIG9mIHRoaXMgbWVjaGFuaXNtIGlzIHRvIHByb3ZpZGUgCisvLyBhICdzcGFyZScgc2ltdWxfZWZ1biBvYmplY3QgaW4gY2FzZSB0aGUgbm9ybWFsIG9uZSBmYWlscyB0byBsb2FkLgorLy8KKwlTaG91bGQgcmV0dXJuIGVpdGhlciB0aGUgb2JqZWN0X25hbWUgb2YgdGhlIHNpbXVsX2VmdW4gb2JqZWN0IGFzCisJYSBzdHJpbmcsIG9yIGFuIGFycmF5IGNvbnRhaW5pbmcgYXMgZmlyc3QgZWxlbWVudCBhIHN0cmluZworCXdpdGggdGhlIGZpbGUgbmFtZSBvZiB0aGUgc2ltdWxfZWZ1biBvYmplY3QgYW5kIHRoZSBmb2xsb3dpbmcKKwllbGVtZW50cyBzdHJpbmdzIHdpdGggZmlsZSBuYW1lcyBvZiBhbHRlcm5hdGUgc2ltdWxfZWZ1bgorCW9iamVjdHMgdGhhdCB3aWxsIGJlIHVzZWQgaWYgdGhlIGZpcnN0IG9uZSBjYW5ub3QgYmUgbG9hZGVkLgorCitTRUUgQUxTTworCXNpbXVsX2VmdW4oQykKZGlmZiAtLWdpdCBhL2RvYy9tYXN0ZXIvZ2V0X3dpel9uYW1lIGIvZG9jL21hc3Rlci9nZXRfd2l6X25hbWUKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNjA1Njk2NQotLS0gL2Rldi9udWxsCisrKyBiL2RvYy9tYXN0ZXIvZ2V0X3dpel9uYW1lCkBAIC0wLDAgKzEsMTMgQEAKK1NZTk9QU0lTCisJc3RyaW5nIGdldF93aXpfbmFtZShzdHJpbmcgZmlsZSkKKworREVTQ1JJUFRJT04KKwlBcmd1bWVudCBpcyBhIGZpbGUgbmFtZSwgd2hpY2ggd2Ugd2FudCB0byBnZXQgdGhlIG93bmVyIG9mLgorCVRoaXMgdXNlZCBmb3IgdGhlIHdpemxpc3QsIHRvIGRldGVybWluZSB3aG8gZ2V0cyB0aGUgc2NvcmUgZm9yCisJdGhlIGZpbGUgYmVpbmcgdXNlZC4KKworCUZvciAzLjIuMSwgaXQgaXMgdXNlZCBvbmx5IHRvIHNjb3JlIGVycm9ycyB0byB0aGUgcmlnaHQgd2l6YXJkLgorCitTRUUgQUxTTworCXdpemxpc3QoRSksIGdldF93aXpfaW5mbyhFKSwgcXVlcnlfcmVhbF9uYW1lKEEpLAorCXF1ZXJ5X2NyZWF0b3IoTSksIGdldHVpZChFKQpkaWZmIC0tZ2l0IGEvZG9jL21hc3Rlci9oYW5kbGVfZXh0ZXJuYWxfc2lnbmFsIGIvZG9jL21hc3Rlci9oYW5kbGVfZXh0ZXJuYWxfc2lnbmFsCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjZmZTgxZWYKLS0tIC9kZXYvbnVsbAorKysgYi9kb2MvbWFzdGVyL2hhbmRsZV9leHRlcm5hbF9zaWduYWwKQEAgLTAsMCArMSwyNiBAQAorU1lOT1BTSVMKKyAgICAgICAgI2luY2x1ZGUgPHNpZ25hbHMuaD4KKworICAgICAgICBpbnQgaGFuZGxlX2V4dGVybmFsX3NpZ25hbChpbnQgc2lnbmFsKQorCitERVNDUklQVElPTgorICAgICAgICBJZiB0aGUgZHJpdmVyIHJlY2VpdmVzIGEgc2lnbmFsIGZyb20gdGhlIE9TIGl0IGZvcndhcmRzIGl0IHRvIHRoZQorICAgICAgICBtdWRsaWIgbWFzdGVyIGJ5IGNhbGxpbmcgdGhpcyBmdW5jdGlvbi4gVGhlIHNpZ25hbCByZWNlaXZlZCBieSB0aGUKKyAgICAgICAgZHJpdmVyIGlzIGdpdmVuIGluIDxzaWduYWw+IGFuZCBtYXkgYmUgb25lIG9mIHRoZSBmb2xsb3dpbmc6CisgICAgICAgIFNJR0hVUCwgU0lHSU5ULCBTSUdURVJNLCBTSUdVU1IxLCBTSUdVU1IyLgorCisgICAgICAgIElmIHRoaXMgZnVuY3Rpb24gcmV0dXJucyAhPSAwLCB0aGUgZHJpdmVyIHdpbGwgYXNzdW1lIHRoZSBzaWduYWwgaGFzCisgICAgICAgIGJlZW4gZGVhbHQgd2l0aCBhbmQgdGFrZSBOTyBmdXJ0aGVyIGFjdGlvbi4KKyAgICAgICAgVGhlIGV4Y2VwdGlvbiBpcyBTSUdURVJNLCB3aGljaCBjYW4ndCBiZSBoYW5kbGVkLiBUaGUgZHJpdmVyIHdpbGwKKyAgICAgICAgcGVyZm9ybSBhIGdyYWNlZnVsIHNodXRkb3duIG9mIHRoZSBnYW1lIGFmdGVyIHRoaXMgZnVuY3Rpb24gcmV0dXJucy4KKworICAgICAgICBJZiB0aGUgbWFzdGVyIGRvZXMgbm90IGhhbmRsZSB0aGUgc2lnbmFsIChyZXR1cm5zIDAgb3IgdGhpcyBmdW5jdGlvbgorICAgICAgICBkb2Ugbm90IGV4aXQpLCB0aGUgZHJpdmVyIHdpbGwgcGVyZm9ybSB0aGUgZm9sbG93aW5nIGRlZmF1bHQgYWN0aW9uczoKKworICAgICAgICBTSUdIVVA6ICBiZWdpbiBhIGdyYWNlZnVsIHNodXRkb3duCisgICAgICAgIFNJR0lOVDogIHNlbmQgaXRzZWxmIGFuIHVuaGFuZGxlZCBTSUdJTlQuIFRoaXMgdXN1YWxseSBjYXVzZXMgYW4KKyAgICAgICAgICAgICAgICAgaW1tZWRpYXRlIGFuZCBub24tZ3JhY2VmdWwgc2h1dGRvd24uCisgICAgICAgIFNJR1VTUjE6IHRoZSBkcml2ZXIgd2lsbCByZWxvYWQgdGhlIG1hc3RlciBvYmplY3QKKyAgICAgICAgU0lHVVNSMjogdGhlIGRyaXZlciB3aWxsIHJlLW9wZW4gaXRzIGRlYnVnIGxvZyBmaWxlCisgICAgICAgICAgICAgICAgICh0aGlzIHdpbGwgaGFwcGVuIHRoZSBuZXh0IHRpbWUgdGhlIGRyaXZlciB3cml0ZXMgdG8gaXQpCisKZGlmZiAtLWdpdCBhL2RvYy9tYXN0ZXIvaGVhcnRfYmVhdF9lcnJvciBiL2RvYy9tYXN0ZXIvaGVhcnRfYmVhdF9lcnJvcgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5kNGQxNWYyCi0tLSAvZGV2L251bGwKKysrIGIvZG9jL21hc3Rlci9oZWFydF9iZWF0X2Vycm9yCkBAIC0wLDAgKzEsMjQgQEAKK1NZTk9QU0lTCisJbWl4ZWQgaGVhcnRfYmVhdF9lcnJvcihvYmplY3QgY3VscHJpdCwgc3RyaW5nIGVyciwgc3RyaW5nIHByZywKKwkJCSAgICAgICBzdHJpbmcgY3Vyb2JqLCBpbnQgbGluZSkKKworREVTQ1JJUFRJT04KKwlUaGlzIGZ1bmN0aW9uIGlzIGNhbGxlZCB3aGVuIGEgcnVudGltZSBlcnJvciBvY2N1cnMgd2hpbGUKKwlleGVjdXRpbmcgdGhlIGhlYXJ0X2JlYXQoKSBmdW5jdGlvbiBvZiB0aGUgb2JqZWN0IGN1bHByaXQuIHByZworCWlzIHByb2dyYW0gd2hlcmUgdGhlIGFjdHVhbCBlcnJvciBoYXBwZW5lZCwgaW4gb2JqZWN0IGN1cm9iagorCWF0IHRoZSBnaXZlbiBsaW5lLgorCisJQXQgdGltZSBvZiBjYWxsLCB0aGUgaGVhcnRfYmVhdCBoYXMgYmVlbiB0dXJuZWQgb2ZmLgorCVJldHVybiBhbnl0aGluZyAhPSAwIHRvIHJlc3RhcnQgdGhlIGhlYXJ0X2JlYXQgaW4gY3VscHJpdC4KKworCUlmIGN1bHByaXQgaXMgYSB1c2VyLCBpdCBzaG91bGQgYXQgbGVhc3QgZ2V0IHRoZSBtZXNzYWdlIGBgWW91CisJaGF2ZSBubyBoZWFydGJlYXQnJy4gQSBtb3JlIGFkdmFuY2VkIGhhbmRsaW5nIHdvdWxkIGRlc3RydWN0CisJdGhlIG9mZmVuZGluZyBvYmplY3QgY3Vyb2JqIGFuZCBhbmQgYWxsb3cgdGhlIGhlYXJ0YmVhdCB0bworCXJlc3RhcnQuCisKKwlOb3RlIHRoYXQgcHJnIGRlbm90ZXMgdGhlIHByb2dyYW0gYWN0dWFsbHkgZXhlY3V0ZWQgKHdoaWNoCisJbWlnaHQgYmUgYW4gaW5oZXJpdGVkIG9uZSkgd2hlcmVhcyBjdXJvYmogaXMganVzdCB0aGUKKwlvZmZlbmRpbmcgb2JqZWN0LgorCitTRUUgQUxTTworCXNldF9oZWFydF9iZWF0KEUpLCBoZWFydF9iZWF0KEEpLCBydW50aW1lX2Vycm9yKE0pCmRpZmYgLS1naXQgYS9kb2MvbWFzdGVyL2luYXVndXJhdGVfbWFzdGVyIGIvZG9jL21hc3Rlci9pbmF1Z3VyYXRlX21hc3RlcgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44NWM5NTI2Ci0tLSAvZGV2L251bGwKKysrIGIvZG9jL21hc3Rlci9pbmF1Z3VyYXRlX21hc3RlcgpAQCAtMCwwICsxLDMwIEBACitTWU5PUFNJUworCXZvaWQgaW5hdWd1cmF0ZV9tYXN0ZXIoaW50IGFyZykKKworREVTQ1JJUFRJT04KKwlUaGlzIGZ1bmN0aW9uIGlzIGNhbGxlZCBpbiB0aGUgbWFzdGVyIG9iamVjdCBhZnRlciBpdCBoYXMgYmVlbgorCWNyZWF0ZWQgYW5kIGlzIGZ1bGx5IGZ1bmN0aW9uYWwuIE5vdGUgdGhhdCB0aGUgY3JlYXRlKCkKKwlmdW5jdGlvbiBpcyBvZiBsaXR0bGUgdXNlIGluIHRoZSBtYXN0ZXIgb2JqZWN0LCBiZWNhdXNlIGF0IHRoZQorCXRpbWUgaXQgaXMgY2FsbGVkIHRoZXJlIGlzIG5vIHNpbXVsX2VmdW4gb2JqZWN0IHlldCwgYW5kIHRoZQorCWludGVycHJldGVyIGRvZXMgbm90IGtub3cgYW55dGhpbmcgYWJvdXQgdGhlIHVzZXItaWRzIGFuZAorCWFjY2VzcyBwZXJtaXNzaW9ucy4KKworCVRoZSBhcmd1bWVudCA8YXJnPiBkZW5vdGVzIHdoeSB0aGlzIGZ1bmN0aW9uIGlzIGNhbGxlZDoKKwkgIGFyZyA9IDA6IHRoZSBtdWQganVzdCBzdGFydGVkLCB0aGlzIGlzIHRoZSBmaXJzdCBtYXN0ZXIgb2YgYWxsLgorCSAgICAgID0gMTogdGhlIG1hc3RlciB3YXMgZGVzdHJ1Y3RlZCBhbmQgdGhlbiByZWFjdGl2YXRlZAorCSAgICAgICAgICAgKGJlY2F1c2UgYSBuZXcgb25lIGNvdWxkbid0IGJlIGxvYWRlZCkuCisJICAgICAgPSAyOiB0aGUgbWFzdGVyIHdhcyBkZXN0cnVjdGVkIGFuZCB0aGVuIHJlYWN0aXZhdGVkLCBidXQKKwkgICAgICAgICAgIGFkZGl0aW9uYWxseSBsb3N0IGFsbCB2YXJpYWJsZSBjb250ZW50cy4KKwkgICAgICA9IDM6IHRoaXMgaXMgYSByZWxvYWRlZCBtYXN0ZXIuCisKKwlUaGlzIGZ1bmN0aW9uIGhhcyBhdCBsZWFzdCB0byBzZXQgdXAgdGhlIGRyaXZlcmhvb2tzIHRvIHVzZQorCShpbiAzLjIuMSkuIEFsc28sIGFueSBtdWR3aG8gb3Igd2l6bGlzdCBoYW5kbGluZyBoYXMgdG8gYmUKKwlpbml0aWFsaXplZCBoZXJlLgorCisJQmVzaWRlcyB0aGF0LCBkbyB3aGF0ZXZlciB5b3UgZmVlbCB5b3UgbmVlZCB0byBkbywgCisJZS5nLiBzZXRfYXV0b19pbmNsdWRlX3N0cmluZygpLCBvciBnaXZlIHRoZSBtYXN0ZXIgYSBkZWNlbnQgZXVpZC4KKworU0VFIEFMU08KKwlpbml0aWFsaXNhdGlvbihNKSwgY3JlYXRlKE0pLCBzaW11bF9lZnVuKEMpLCBnZXRfYmJfaWQoTSksCisJZ2V0X3Jvb3RfaWQoTSksIGdldF9tYXN0ZXJfdWlkKE0pLCBmbGFnKE0pLAorCXJlYWN0aXZhdGVfZGVzdHJ1Y3RlZF9tYXN0ZXIoTSkKZGlmZiAtLWdpdCBhL2RvYy9tYXN0ZXIvaW5jbHVkZV9maWxlIGIvZG9jL21hc3Rlci9pbmNsdWRlX2ZpbGUKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNjg1NjhlZQotLS0gL2Rldi9udWxsCisrKyBiL2RvYy9tYXN0ZXIvaW5jbHVkZV9maWxlCkBAIC0wLDAgKzEsMzIgQEAKK1NZTk9QU0lTCisgICAgICAgIG1peGVkIGluY2x1ZGVfZmlsZSAoc3RyaW5nIGZpbGUsIHN0cmluZyBjb21waWxlZF9maWxlLCBpbnQgc3lzX2luY2x1ZGUpCisKK0RFU0NSSVBUSU9OCisgICAgICAgIEdlbmVyYXRlIHRoZSBwYXRobmFtZSBvZiBhbiBpbmNsdWRlZCBmaWxlLgorCisgICAgICAgIEFyZ3VtZW50czoKKyAgICAgICAgICBwcmV2aW91c19vYmplY3QoKTogVGhlIG9iamVjdCBjYXVzaW5nIHRoZSBjb21waWxlLgorICAgICAgICAgIGZpbGUgICAgICAgICAgICAgOiBUaGUgbmFtZSBnaXZlbiBpbiB0aGUgI2luY2x1ZGUgZGlyZWN0aXZlLgorICAgICAgICAgIGNvbXBpbGVkX2ZpbGUgICAgOiBUaGUgb2JqZWN0IGZpbGUgd2hpY2ggaXMganVzdCBjb21waWxlZC4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGNvbXBhdDogbmFtZSBnaXZlbiB3aXRob3V0IGxlYWRpbmcgIi8iKQorICAgICAgICAgIHN5c19pbmNsdWRlICAgICAgOiBUUlVFIGZvciAjaW5jbHVkZSA8PiBkaXJlY3RpdmVzLgorCisgICAgICAgIFJlc3VsdDoKKyAgICAgICAgICAwOiB1c2UgdGhlIG5vcm1hbCBpbmNsdWRlIGZpbGVuYW1lIGdlbmVyYXRpb24gKCIiLWluY2x1ZGVzIGFyZQorICAgICAgICAgICAgIHVzZWQgYXMgdGhleSBhcmUsIDw+LWluY2x1ZGVzIGFyZSBoYW5kbGVkIGFjY29yZGluZyB0bworICAgICAgICAgICAgIEhfSU5DTFVERV9ESVJTKS4KKworICAgICAgICAgIDxwYXRoPjogdGhlIGZ1bGwgYWJzb2x1dGUgcGF0aG5hbWUgb2YgdGhlIGZpbGUgdG8gaW5jbHVkZSwKKyAgICAgICAgICAgICAgICAgIHdpdGhvdXQgcGFyZW50ZGlyIHBhcnRzICgiLy4uLyIpLiBMZWFkaW5nIHNsYXNoZXMgKCIvIikKKyAgICAgICAgICAgICAgICAgIG1heSBiZSBvbWl0dGVkLgorCisgICAgICAgICAgZWxzZTogVGhlIGluY2x1ZGUgZGlyZWN0aXZlIGlzIG5vdCBsZWdhbC4KKworICAgICAgICBJZiB0aGUgZnVuY3Rpb24gZG9lcyBub3QgZ2VuZXJhdGUgYSB2YWxpZCBwYXRobmFtZSwgdGhlIGRyaXZlcgorICAgICAgICB3aWxsIG5leHQgdHJ5IHRvIHJlc29sdmUgdGhlIGluY2x1ZGUgdXNpbmcgdGhlIEhfSU5DTFVERV9ESVJTIGhvb2suCisKK0hJU1RPUlkKKyAgICAgICAgSW50cm9kdWNlZCBpbiBMRE11ZCAzLjIuOC4KKworU0VFIEFMU08KKyAgICAgICAgaG9va3MoQyksIGluaGVyaXRfZmlsZShNKSwgaW5jbHVkZV9kaXJzKEgpCmRpZmYgLS1naXQgYS9kb2MvbWFzdGVyL2luaGVyaXRfZmlsZSBiL2RvYy9tYXN0ZXIvaW5oZXJpdF9maWxlCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjc5MTRmYWMKLS0tIC9kZXYvbnVsbAorKysgYi9kb2MvbWFzdGVyL2luaGVyaXRfZmlsZQpAQCAtMCwwICsxLDI2IEBACitTWU5PUFNJUworICAgICAgICBtaXhlZCBpbmhlcml0X2ZpbGUgKHN0cmluZyBmaWxlLCBzdHJpbmcgY29tcGlsZWRfZmlsZSkKKworREVTQ1JJUFRJT04KKyAgICAgICAgR2VuZXJhdGUgdGhlIHBhdGhuYW1lIG9mIGFuIGluaGVyaXRlZCBvYmplY3QuCisKKyAgICAgICAgQXJndW1lbnRzOgorICAgICAgICAgIHByZXZpb3VzX29iamVjdCgpOiBUaGUgb2JqZWN0IGNhdXNpbmcgdGhlIGNvbXBpbGUuCisgICAgICAgICAgZmlsZSAgICAgICAgICAgICA6IFRoZSBuYW1lIGdpdmVuIGluIHRoZSBpbmhlcml0IGRpcmVjdGl2ZS4KKyAgICAgICAgICBjb21waWxlZF9maWxlICAgIDogVGhlIG9iamVjdCBmaWxlIHdoaWNoIGlzIGp1c3QgY29tcGlsZWQuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjb21wYXQ6IG5hbWUgZ2l2ZW4gd2l0aG91dCBsZWFkaW5nICIvIikKKworICAgICAgICBSZXN1bHQ6CisgICAgICAgICAgMDogdXNlIHRoZSBnaXZlbiBmaWxlbmFtZSBhcyBpdCBpcy4KKworICAgICAgICAgIDxwYXRoPjogdGhlIGZ1bGwgYWJzb2x1dGUgcGF0aG5hbWUgb2YgdGhlIGZpbGUgdG8gaW5oZXJpdCwKKyAgICAgICAgICAgICAgICAgIHdpdGhvdXQgcGFyZW50ZGlyIHBhcnRzICgiLy4uLyIpLiBMZWFkaW5nIHNsYXNoZXMgKCIvIikKKyAgICAgICAgICAgICAgICAgIGFyZSBpZ25vcmVkLgorCisgICAgICAgICAgZWxzZTogVGhlIGluaGVyaXQgZGlyZWN0aXZlIGlzIG5vdCBsZWdhbC4KKworSElTVE9SWQorICAgICAgICBJbnRyb2R1Y2VkIGluIExETXVkIDMuMi44LgorCitTRUUgQUxTTworICAgICAgICBob29rcyhDKSwgaW5jbHVkZV9maWxlKE0pCmRpZmYgLS1naXQgYS9kb2MvbWFzdGVyL2luaXRpYWxpc2F0aW9uIGIvZG9jL21hc3Rlci9pbml0aWFsaXNhdGlvbgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5lMDhkMzRhCi0tLSAvZGV2L251bGwKKysrIGIvZG9jL21hc3Rlci9pbml0aWFsaXNhdGlvbgpAQCAtMCwwICsxLDE2IEBACitTWU5PUFNJUworCUluaXRpYWxpemF0aW9uIG9mIHRoZSBtYXN0ZXIgb2JqZWN0IChzaW5jZSAzLjIuMSkuCisKKwlBcyBzaW5jZSAzLjIuMSB0aGUgbGZ1bnMgd2hpY2ggYXJlIGNhbGxlZCB0byBpbml0aWFsaXplCisJb2JqZWN0cyBhZnRlciBhIGxvYWQgYXJlIGRlZmluZWQgdGhyb3VnaCBkcml2ZXIgaG9va3MsIGFuZAorCXRoZXNlIGhvb2tzIGFyZSBjbGVhcmVkIHByaW9yIHRvIGEgbWFzdGVyIChyZSlsb2FkLCB0aGUgZmlyc3QKKwlmdW5jdGlvbiBjYWxsZWQgaXMgaW5hdWd1cmF0ZV9tYXN0ZXIoKS4gQW55d2F5IGl0J3Mgbm90IHZlcnkKKwlzZW5zaWJsZSB0byBkbyBhbnl0aGluZyBlYXJsaWVyIGFzIHRoZSBtYXN0ZXIgaXMgbm90CisJcmVjb2duaXplZCBhcyBzdWNoIGF0IHRoYXQgdGltZSwgYW5kIHNvIGEgbnVtYmVyIG9mCisJKGltcG9ydGFudCkgdGhpbmdzIHdvdWxkIG5vdCB3b3JrLgorCVdoaWNoIGxmdW4gaXMgY2FsbGVkIGR1cmluZyBydW50aW1lIHRvIHJlc2V0IHRoZSBtYXN0ZXIgaXMgYWxzbworCWRlcGVuZGluZyBvbiB0aGUgZHJpdmVyaG9vayBzZXR0aW5ncy4gQXJiaXRyYXJ5IGFjdGlvbnMgbWF5IGJlIGRvbmUKKwlvbiBhIHJlc2V0LgorCitTRUUgQUxTTworCWluYXVndXJhdGVfbWFzdGVyKE0pCmRpZmYgLS1naXQgYS9kb2MvbWFzdGVyL2xvZ19lcnJvciBiL2RvYy9tYXN0ZXIvbG9nX2Vycm9yCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmFmYzMzODUKLS0tIC9kZXYvbnVsbAorKysgYi9kb2MvbWFzdGVyL2xvZ19lcnJvcgpAQCAtMCwwICsxLDExIEBACitTWU5PUFNJUworCXZvaWQgbG9nX2Vycm9yKHN0cmluZyBmaWxlLCBzdHJpbmcgZXJyKQorCitERVNDUklQVElPTgorCUFubm91bmNlIGEgY29tcGlsZXItdGltZSBlcnJvciBpbiB0aGUgbmFtZWQgZmlsZS4gV2hlbmV2ZXIgdGhlCisJTFBDIGNvbXBpbGVyIGRldGVjdHMgYW4gZXJyb3IsIHRoaXMgZnVuY3Rpb24gaXMgY2FsbGVkLiBJdAorCXNob3VsZCBhdCBsZWFzdCBsb2cgdGhlIGVycm9yIGluIGEgZmlsZSwgYW5kIGFsc28gYW5ub3VuY2UgaXQKKwl0byB0aGUgYWN0aXZlIHVzZXIuCisKK1NFRSBBTFNPCisJcnVudGltZV9lcnJvcihNKQpkaWZmIC0tZ2l0IGEvZG9jL21hc3Rlci9tYWtlX3BhdGhfYWJzb2x1dGUgYi9kb2MvbWFzdGVyL21ha2VfcGF0aF9hYnNvbHV0ZQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5lMGEwMDE5Ci0tLSAvZGV2L251bGwKKysrIGIvZG9jL21hc3Rlci9tYWtlX3BhdGhfYWJzb2x1dGUKQEAgLTAsMCArMSwxMCBAQAorU1lOT1BTSVMKKwlzdHJpbmcgbWFrZV9wYXRoX2Fic29sdXRlKHN0cmluZyBzdHIpCisKK0RFU0NSSVBUSU9OCisJQWJzb2x1dGl6ZSBhIHJlbGF0aXZlIGZpbGVuYW1lIHN0ciBnaXZlbiB0byB0aGUgZWRpdG9yLiBTaG91bGQKKwlyZXR1cm4gdGhlIGZ1bGwgcGF0aG5hbWUgb2YgdGhlIGZpbGUgdG8gdXNlLiBBbnkgbm9uLXN0cmluZworCXJlc3VsdCB3aWxsIGFjdCBhcyBgYGJhZCBmaWxlIG5hbWUnJy4KKworU0VFIEFMU08KKwllZChFKSwgdmFsaWRfd3JpdGUoTSkKZGlmZiAtLWdpdCBhL2RvYy9tYXN0ZXIvbWFzdGVyIGIvZG9jL21hc3Rlci9tYXN0ZXIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uN2Q4ODg1NQotLS0gL2Rldi9udWxsCisrKyBiL2RvYy9tYXN0ZXIvbWFzdGVyCkBAIC0wLDAgKzEsMzAgQEAKK05BTUUKKwltYXN0ZXIKKworREVTQ1JJUFRJT04KKwlUaGlzIGRpcmVjdG9yeSBjb250YWlucyBkZXNjcmlwdGlvbnMgZm9yIHRoZSBmdW5jdGlvbnMgdGhhdAorCUFteWxhYXIncyB2ZXJzaW9uIG9mIHRoZSBMUEMgcGFyc2VyLCBleHBlY3RzIHRvIGZpbmQgaW4gdGhlCisJbWFzdGVyIG9iamVjdCAoc2ltaWxhciB0byBsZnVucywgYnV0IGZvciB0aGUgbWFzdGVyIG9iamVjdAorCW9ubHkpLiBUaGUgbmFtZSBvZiB0aGUgbWFzdGVyIG9iamVjdCBpcyBoYXJkY29kZWQgaW4gdGhlCisJcGFyc2VyICh0byAic2VjdXJlL21hc3RlciIpLgorCisJVGhlIG1hc3RlciBpcyB0aGUgZ2F0ZXdheSBiZXR3ZWVuIHRoZSBpbnRlcnByZXRlciBhbmQgdGhlCisJbXVkbGliIHRvIHBlcmZvcm0gYWN0aW9ucyB3aXRoIG11ZGxpYiBzcGVjaWZpYyBlZmZlY3RzLiBDYWxscworCXRvIHRoZSBtYXN0ZXIgYnkgdGhlIGludGVycHJldGVyIGhhdmUgYW4gYXV0b21hdGljIGNhdGNoKCkgaW4KKwllZmZlY3QuCisKKwlOb3RlIHRoYXQgdGhlIG1hc3RlciBpcyBsb2FkZWQgZmlyc3Qgb2YgYWxsIG9iamVjdHMuIFRodXMgeW91CisJc2hvdWxkbid0IGluaGVyaXQgYW4gb3RoZXIgb2JqZWN0LCBub3IgaXMgdGhlIGNvbXBpbGVyIGFibGUgdG8KKwlzZWFyY2ggaW5jbHVkZSBmaWxlcyAocmVhZDogdGhleSBtdXN0IGJlIHNwZWNpZmllZCB3aXRoIGZ1bGwKKwlwYXRoKS4KKworCUFteWxhYXIgc2F5czogYWN0dWFsbHksIHlvdSBjYW4gaW5oZXJpdCwgYnV0IHRoZSBmaWxlIHdpbGwgYmUKKwlsb2FkZWQgdGhlbiBiZWZvcmUgdGhlIG1hc3Rlciwgd2hpY2ggaXNuJ3QgZ29vZCBmb3IgbW9zdAorCWZpbGVzLgorCisJUmVmZXIgdG8gJ21hc3Rlci0zLjInIGFuZCAnbWFzdGVyLTMuMi4xJyBmb3IgdGhlIHN1cnZleXMgb2YKKwl0aGUgbWFzdGVycyBpbnRlcm5hbHMuIAorCitTRUUgQUxTTworCW1hc3Rlci0zLjIoTSksIG1hc3Rlci0zLjIuMShNKQorCWVmdW4oRSksIGFwcGxpZWQoQSksIGNvbmNlcHRzKEMpLCBkcml2ZXIoRCksIGxwYyhMUEMpCmRpZmYgLS1naXQgYS9kb2MvbWFzdGVyL21hc3Rlci0zLjIgYi9kb2MvbWFzdGVyL21hc3Rlci0zLjIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYjU1YTkzMQotLS0gL2Rldi9udWxsCisrKyBiL2RvYy9tYXN0ZXIvbWFzdGVyLTMuMgpAQCAtMCwwICsxLDI0OCBAQAorTkFNRQorCW1hc3RlciBmb3IgTFBNdWQgMy4yCisKK0RFU0NSSVBUSU9OCisJVGhpcyBkaXJlY3RvcnkgY29udGFpbnMgZGVzY3JpcHRpb25zIGZvciB0aGUgZnVuY3Rpb25zIHRoYXQKKwlBbXlsYWFyJ3MgdmVyc2lvbiBvZiB0aGUgTFBDIHBhcnNlciwgZXhwZWN0cyB0byBmaW5kIGluIHRoZQorCW1hc3RlciBvYmplY3QgKHNpbWlsYXIgdG8gbGZ1bnMsIGJ1dCBmb3IgdGhlIG1hc3RlciBvYmplY3QKKwlvbmx5KS4gVGhlIG5hbWUgb2YgdGhlIG1hc3RlciBvYmplY3QgaXMgaGFyZGNvZGVkIGluIHRoZQorCXBhcnNlciAodG8gInNlY3VyZS9tYXN0ZXIiKS4KKworCVRoZSBtYXN0ZXIgaXMgdGhlIGdhdGV3YXkgYmV0d2VlbiB0aGUgaW50ZXJwcmV0ZXIgYW5kIHRoZQorCW11ZGxpYiB0byBwZXJmb3JtIGFjdGlvbnMgd2l0aCBtdWRsaWIgc3BlY2lmaWMgZWZmZWN0cy4gQ2FsbHMKKwl0byB0aGUgbWFzdGVyIGJ5IHRoZSBpbnRlcnByZXRlciBoYXZlIGFuIGF1dG9tYXRpYyBjYXRjaCgpIGluCisJZWZmZWN0LgorCisJTm90ZSB0aGF0IHRoZSBtYXN0ZXIgaXMgbG9hZGVkIGZpcnN0IG9mIGFsbCBvYmplY3RzLiBUaHVzIHlvdQorCXNob3VsZG4ndCBpbmhlcml0IGFuIG90aGVyIG9iamVjdCwgbm9yIGlzIHRoZSBjb21waWxlciBhYmxlIHRvCisJc2VhcmNoIGluY2x1ZGUgZmlsZXMgKHJlYWQ6IHRoZXkgbXVzdCBiZSBzcGVjaWZpZWQgd2l0aCBmdWxsCisJcGF0aCkuCisKKwlBbXlsYWFyIHNheXM6IGFjdHVhbGx5LCB5b3UgY2FuIGluaGVyaXQsIGJ1dCB0aGUgZmlsZSB3aWxsIGJlCisJbG9hZGVkIHRoZW4gYmVmb3JlIHRoZSBtYXN0ZXIsIHdoaWNoIGlzbid0IGdvb2QgZm9yIG1vc3QKKwlmaWxlcy4KKworCUEgc2hvcnQgc3VydmV5IG9mIHRoZSB0aGluZ3MgdGhhdCBoYXBwZW4gYXQgc3lzdGVtIHN0YXJ0dXAKKwl0aW1lOgorCisJVGhlIEluaXRpYWxpc2F0aW9uIGZ1bmN0aW9ucyBhcmUgY2FsbGVkIGFmdGVyIChyZSlsb2FkaW5nIHRoZQorCW1hc3RlciB0byBlc3RhYmxpc2ggdGhlIG1vc3QgYmFzaWMgb3BlcmF0aW9uIHBhcmFtZXRlcnMuCisKKwlUaGUgaW5pdGlhbGlzYXRpb24gb2YgTFBNdWQgb24gc3RhcnR1cCBmb2xsb3dzIHRoaXMgc2NoZWR1bGU6CisJICAtIFRoZSBpbnRlcnByZXRlciBldmFsdWF0ZXMgdGhlIGNvbW1hbmRsaW5lIG9wdGlvbnMgYW5kCisJICAgIGluaXRpYWxpemVzIGl0c2VsZi4KKwkgIC0gVGhlIG1hc3RlciBpcyBsb2FkZWQsIGFuZCB0aHVzIGl0J3MgY3JlYXRlKCkgKCFjb21wYXQgb25seSkgYW5kCisJICAgIGl0cyByZXNldCgpIGlzIGNhbGxlZCwgdGhvdWdoIGl0J3Mgbm90IG11Y2ggdXNlLCBzaW5jZQorCSAgICBtb3N0IG9mIHRoZSBpbXBvcnRhbnQgdGhpbmdzIHdvbid0IHdvcmsgYWxyZWFkeS4KKwkgIC0gZ2V0X3Jvb3RfdWlkKCkgaXMgY2FsbGVkLiBJZiB0aGUgcmVzdWx0IGlzIHZhbGlkLCBpdAorCSAgICBiZWNvbWVzIHRoZSBtYXN0ZXJzIHVpZCBhbmQgZXVpZC4KKwkgIC0gZ2V0X2JiX3VpZCgpIGlzIGNhbGxlZC4KKwkgIC0gaW5hdWd1cmF0ZV9tYXN0ZXIoKSBpcyBjYWxsZWQuCisJICAtIGZsYWcoKSBpcyBjYWxsZWQgZm9yIGVhY2ggZ2l2ZW4gJy1mJyBjb21tYW5kbGluZSBvcHRpb24uCisJICAtIGdldF9zaW11bF9lZnVuKCkgaXMgY2FsbGVkLgorCSAgLSBkZWZpbmVfaW5jbHVkZV9kaXJzKCkgaXMgY2FsbGVkLgorCSAgLSBQcmVsb2FkaW5nIGlzIGRvbmU6CisJICAgICAgY29tcGF0IDogVGhlIGZpbGVuYW1lcyBvZiB0aGUgb2JqZWN0cyBhcmUgcmVhZCBmcm9tCisJCSAgICAgICBJTklUX0ZJTEUgYW5kIHRoZSBvYmplY3RzIGFyZSBsb2FkZWQuIFRoZW4KKwkJICAgICAgIGVwaWxvZygpIGlzIGNhbGxlZC4KKwkgICAgICAhY29tcGF0OiBlcGlsb2coKSBpcyBjYWxsZWQuIElmIGl0IHJldHVybnMgYW4gYXJyYXkgb2YKKwkJICAgICAgIHN0cmluZ3MsIGl0IGlzIGNvbnNpZGVyZWQgaG9sZGluZyB0aGUgZmlsZW5hbWVzCisJCSAgICAgICBvZiB0aGUgb2JqZWN0cyB0byBwcmVsb2FkLiBUaGV5IGFyZSB0aGVuIGdpdmVuCisJCSAgICAgICBvbmUgYXQgYSB0aW1lIGFzIGFyZ3VtZW50IHRvIHByZWxvYWQoKSB3aGljaAorCQkgICAgICAgZG9lcyB0aGUgYWN0dWFsIHByZWxvYWRpbmcuCisJICAtIFRoZSBpbnRlcnByZXRlciBzZXRzIHVwIHRoZSBJUCBjb21tdW5pY2F0aW9uIGFuZCBlbnRlcnMKKwkgICAgdGhlIGJhY2tlbmQgbG9vcC4KKworCUlmIHRoZSBtYXN0ZXIgaXMgcmVsb2FkZWQgZHVyaW5nIHN5c3RlbSBvcGVyYXRpb24sIHRoaXMKKwlhY3Rpb25zIGFyZSB0YWtlbjoKKwkgIC0gVGhlIG1hc3RlciBpcyBsb2FkZWQsIGFuZCB0aHVzIGl0J3MgY3JlYXRlKCkgKCFjb21wYXQgb25seSkgYW5kCisJICAgIGl0cyByZXNldCgpIGlzIGNhbGxlZC4KKwkgIC0gQW55IGF1dG8taW5jbHVkZSBzdHJpbmcgaXMgY2xlYXJlZC4KKwkgIC0gZ2V0X3Jvb3RfdWlkKCkgaXMgY2FsbGVkLiBJZiB0aGUgcmVzdWx0IGlzIHZhbGlkLCBpdCBiZWNvbWVzIHRoZQorCSAgICBtYXN0ZXJzIHVpZCBhbmQgZXVpZC4KKwkgIC0gaW5hdWd1cmF0ZV9tYXN0ZXIoKSBpcyBjYWxsZWQuCisKKwlJZiB0aGUgbWFzdGVyIHdhcyBkZXN0cnVjdGVkLCBidXQgY291bGRuJ3QgYmUgcmVsb2FkZWQsIHRoZSBvbGQKKwltYXN0ZXIgb2JqZWN0IGNvdWxkIGJlIHJlYWN0aXZhdGVkLiBJbiB0aGF0IGNhc2U6CisJICAtIHJlYWN0aXZhdGVfZGVzdHJ1Y3RlZF9tYXN0ZXIoKSBpcyBjYWxsZWQuCisJICAtIGluYXVndXJhdGVfbWFzdGVyKCkgaXMgY2FsbGVkLgorCisKKwlTZWN1cml0eSBoaW50OiBtb3N0IG9mIHRoaXMgZnVuY3Rpb25zIGFyZSBub3QgdXNlZnVsIHRvIGJlCisJY2FsbGVkIGRpcmVjdGx5IGZyb20gb3RoZXIgb2JqZWN0cyBhbmQgY2FuIGJlIG1hZGUgcHJpdmF0ZSBvcgorCXN0YXRpYy4gVW5saWtlIGNyZWF0ZSgpLCB0aGVzZSBmdW5jdGlvbnMgdGhhdCBhcmUgYXBwbGllZCB0bworCXRoZSBtYXN0ZXIgb2JqZWN0IGFyZSBmb3VuZCBieSB0aGUgaW50ZXJwcmV0ZXIgZXZlbiBpZiBub3QKKwlwdWJsaWNseSBhY2Nlc3NpYmxlLgorCisKKworCUEgc2hvcnQgcmVmZXJlbmNlIHRvIGFsbCBleHBlY3RlZCBtYXN0ZXIgZnVuY3Rpb25zLi4uCisJLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCSAgICBJbml0aWFsaXNhdGlvbgorCisJdm9pZCBjcmVhdGUgKCkJLy8gIWNvbXBhdAorCSAgSW5pdGlhbGl6ZSB0aGUgb2JqZWN0LiBOb3QgdmVyeSB1c2VmdWwsIHRob3VnaC4KKworCXZvaWQgcmVzZXQgKGludCBmbGFnKSAgLy8gIW5hdGl2ZQorCXZvaWQgcmVzZXQgKCkJICAgICAgIC8vIG5hdGl2ZQorCSAgSW5pdGlhbGl6ZSAoY29tcGF0IG9ubHkpIG9yIHJlc2V0IHRoZSBvYmplY3QuCisKKwl2b2lkIGluYXVndXJhdGVfbWFzdGVyICgpCisJICBQZXJmb3JtIG11ZGxpYiBzcGVjaWZpYyBzZXR1cCBvZiB0aGUgbWFzdGVyLgorCisJdm9pZCBmbGFnIChzdHJpbmcgYXJnKQorCSAgRXZhbHVhdGUgYW4gYXJndW1lbnQgZ2l2ZW4gYXMgb3B0aW9uICctZicgdG8gdGhlIGRyaXZlci4KKworCXN0cmluZyAqZGVmaW5lX2luY2x1ZGVfZGlycyAoKQorCSAgRGVmaW5lIHdoZXJlIHRoZSBpbmNsdWRlIGZpbGVzIGFyZSBzZWFyY2hlZC4KKworCXZvaWQJZXBpbG9nICgpCSAgICAvLyBjb21wYXQKKwlzdHJpbmcgKmVwaWxvZyAoaW50IGVmbGFnKSAgLy8gIWNvbXBhdAorCSAgUGVyZm9ybSBmaW5hbCBhY3Rpb25zIGJlZm9yZSBvcGVuaW5nIHRoZSBzeXN0ZW0gdG8gdXNlcnMuCisJICBUaGUgc2VtYW50aWNzIG9mIHRoaXMgZnVuY3Rpb24gZGlmZmVyIGZvciBjb21wYXQgYW5kICFjb21wYXQgbW9kZS4KKworCXZvaWQgcHJlbG9hZCAoc3RyaW5nIGZpbGUpICAvLyAhY29tcGF0CisJICBQcmVsb2FkIGEgZ2l2ZW4gb2JqZWN0LgorCisJdm9pZCBleHRlcm5hbF9tYXN0ZXJfcmVsb2FkICgpCisJICBDYWxsZWQgYWZ0ZXIgYSByZWxvYWQgb2YgdGhlIG1hc3RlciBvbiBleHRlcm5hbCByZXF1ZXN0LgorCisJdm9pZCByZWFjdGl2YXRlX2Rlc3RydWN0ZWRfbWFzdGVyIChpbnQgcmVtb3ZlZCkKKwkgIFJlYWN0aXZhdGUgYSBmb3JtZXJseSBkZXN0cnVjdGVkIG1hc3Rlci4KKworCXN0cmluZ3xzdHJpbmcgKiBnZXRfc2ltdWxfZWZ1biAoKQorCSAgTG9hZCB0aGUgc2ltdWxfZWZ1biBvYmplY3QgYW5kIHJldHVybiBvbmUgb3IgbW9yZSBwYXRocyBvZiBpdC4KKworCS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKwkgICAgSGFuZGxpbmcgb2YgdXNlciBjb25uZWN0aW9ucworCisJb2JqZWN0IGNvbm5lY3QgKCkKKwkgIEhhbmRsZSB0aGUgcmVxdWVzdCBmb3IgYSBuZXcgY29ubmVjdGlvbi4KKworCXZvaWQgZGlzY29ubmVjdCAob2JqZWN0IG9iaikKKwkgIEhhbmRsZSB0aGUgbG9zcyBvZiBhbiBJUCBjb25uZWN0aW9uLgorCisJdm9pZCByZW1vdmVfcGxheWVyIChvYmplY3QgdXNlcikKKwkgIFJlbW92ZSBhIHVzZXIgb2JqZWN0IGZyb20gdGhlIHN5c3RlbS4KKworCS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisJICAgIFJ1bnRpbWUgU3VwcG9ydAorCisJb2JqZWN0IGNvbXBpbGVfb2JqZWN0IChzdHJpbmcgZmlsZW5hbWUpCisJICBDb21waWxlIGFuIHZpcnR1YWwgb2JqZWN0LgorCisJc3RyaW5nIGdldF93aXpfbmFtZSAoc3RyaW5nIGZpbGUpCisJICBSZXR1cm4gdGhlIGF1dGhvciBvZiBhIGZpbGUuCisKKwlzdHJpbmcgb2JqZWN0X25hbWUgKG9iamVjdCBvYmopCisJICBSZXR1cm4gYSBwcmludGFibGUgbmFtZSBmb3IgYW4gb2JqZWN0LgorCisJbWl4ZWQgcHJlcGFyZV9kZXN0cnVjdCAob2JqZWN0IG9iaikKKwkgIFByZXBhcmUgdGhlIGRlc3RydWN0aW9uIG9mIHRoZSBnaXZlbiBvYmplY3QuCisKKwl2b2lkIHF1b3RhX2RlbW9uICh2b2lkKQorCSAgSGFuZGxlIHF1b3RhcyBpbiB0aW1lcyBvZiBtZW1vcnkgc2hvcnRhZ2UuCisKKwl2b2lkIHJlY2VpdmVfdWRwIChzdHJpbmcgaG9zdCwgc3RyaW5nIG1zZykKKwkgIEhhbmRsZSBhIHJlY2VpdmVkIElNUCBtZXNzYWdlLgorCisJdm9pZCBzbG93X3NodXRfZG93biAoaW50IG1pbnV0ZXMpCisJICBTY2hlZHVsZSBhIHNodXRkb3duIGZvciB0aGUgbmVhciBmdXR1cmUuCisKKwl2b2lkIG5vdGlmeV9zaHV0ZG93biAoKQorCSAgTm90aWZ5IHRoZSBtYXN0ZXIgYWJvdXQgYW4gaW1tZWRpYXRlIHNodXRkb3duLgorCisJLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKwkgICAgRXJyb3IgSGFuZGxpbmcKKworCXZvaWQgZGFuZ2xpbmdfbGZ1bl9jbG9zdXJlICgpCisJICBIYW5kbGUgYSBkYW5nbGluZyBsZnVuLWNsb3N1cmUuCisKKwl2b2lkIGxvZ19lcnJvciAoc3RyaW5nIGZpbGUsIHN0cmluZyBlcnIpCisJICBBbm5vdW5jZSBhIGNvbXBpbGVyLXRpbWUgZXJyb3IuCisKKwltaXhlZCBoZWFydF9iZWF0X2Vycm9yIChvYmplY3QgY3VscHJpdCwgc3RyaW5nIGVyciwKKwkJCQlzdHJpbmcgcHJnLCBzdHJpbmcgY3Vyb2JqLCBpbnQgbGluZSkKKwkgIEFubm91bmNlIGFuIGVycm9yIGluIHRoZSBoZWFydF9iZWF0KCkgZnVuY3Rpb24uCisKKwl2b2lkIHJ1bnRpbWVfZXJyb3IgKHN0cmluZyBlcnIsIHN0cmluZyBwcmcsIHN0cmluZyBjdXJvYmosIGludCBsaW5lKQorCSAgQW5ub3VuY2UgYSBydW50aW1lIGVycm9yLgorCisJLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKwkgICAgU2VjdXJpdHkgYW5kIFBlcm1pc3Npb25zCisKKwlpbnQgcHJpdmlsZWdlX3Zpb2xhdGlvbiAoc3RyaW5nIG9wLCBtaXhlZCB3aG8sIG1peGVkIGFyZzMsIG1peGVkIGFyZzQpCisJICBWYWxpZGF0ZSB0aGUgZXhlY3V0aW9uIG9mIGEgcHJpdmlsZWdlZCBvcGVyYXRpb24uCisKKwlpbnQgcXVlcnlfYWxsb3dfc2hhZG93IChvYmplY3QgdmljdGltKQorCSAgVmFsaWRhdGUgYSBzaGFkb3dpbmcuCisKKwlpbnQgcXVlcnlfcGxheWVyX2xldmVsIChzdHJpbmcgd2hhdCkKKwkgIENoZWNrIGlmIHRoZSB1c2VyIGlzIG9mIGhpZ2ggZW5vdWdoIGxldmVsIGZvciBzZXZlcmFsIHRoaW5ncy4KKworCWludCB2YWxpZF9leGVjIChzdHJpbmcgbmFtZSkKKwkgIFZhbGlkYXRlIHRoZSByZWJpbmRpbmcgb2YgYW4gSVAgY29ubmVjdGlvbiBieSB1c2FnZSBvZiBlZnVuCisJICBleGVjKCkuCisKKwlpbnQgdmFsaWRfcXVlcnlfc25vb3AgKG9iamVjdCBvYmopCisJICBWYWxpZGF0ZSBpZiB0aGUgc25vb3BlcnMgb2YgYW4gb2JqZWN0IG1heSBiZSByZXZlYWxlZCBieQorCSAgdXNhZ2Ugb2YgdGhlIGVmdW4gcXVlcnlfc25vb3AoKS4KKworCWludCB2YWxpZF9zbm9vcCAob2JqZWN0IHNub29wZWUsIG9iamVjdCBzbm9vcGVyKQorCSAgVmFsaWRhdGUgdGhlIHN0YXJ0L3N0b3Agb2YgYSBzbm9vcC4KKworCS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCSAgICBVc2VyaWRzIGFuZCBkZXBlbmRpbmcgU2VjdXJpdHkKKworCXN0cmluZyBjcmVhdG9yX2ZpbGUgKG1peGVkIG9iaikKKwkgIFJldHVybiB0aGUgbmFtZSBvZiB0aGUgY3JlYXRvciBvZiBhbiBvYmplY3QuCisJICBUaGlzIGlzIGNhbGxlZCBpbiBldmVyeSBtb2RlIQorCisJc3RyaW5nIGdldF9yb290X3VpZCAoKQkvLyAhY29tcGF0CisJICBSZXR1cm4gdGhlIHN0cmluZyB0byBiZSB1c2VkIGFzIHJvb3QtdWlkLgorCisJc3RyaW5nIGdldF9iYl91aWQoKSAgLy8gIWNvbXBhdAorCSAgUmV0dXJuIHRoZSBzdHJpbmcgdG8gYmUgdXNlZCBhcyByb290LXVpZC4KKworCWludCB2YWxpZF9zZXRldWlkIChvYmplY3Qgb2JqLCBzdHJpbmcgbmV3ZXVpZCkJLy8gIWNvbXBhdAorCSAgVmFsaWRhdGUgdGhlIGNoYW5nZSBvZiBhbiBvYmplY3RzIGV1aWQgYnkgZWZ1biBzZXRldWlkKCkuCisKKwlpbnR8c3RyaW5nIHZhbGlkX3JlYWQgKHN0cmluZyBwYXRoLCBzdHJpbmcgZXVpZCwgc3RyaW5nIGZ1biwgb2JqZWN0IGNhbGxlcikKKwlpbnR8c3RyaW5nIHZhbGlkX3dyaXRlIChzdHJpbmcgcGF0aCwgc3RyaW5nIGV1aWQsIHN0cmluZyBmdW4sIG9iamVjdCBjYWxsZXIpCisJICBWYWxpZGF0ZSBhIHJlYWRpbmcvd3JpdGluZyBmaWxlIG9wZXJhdGlvbi4KKworCS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisJICAgIGVkKCkgU3VwcG9ydAorCisJc3RyaW5nIG1ha2VfcGF0aF9hYnNvbHV0ZSAoc3RyaW5nIHN0cikKKwkgIEFic29sdXRpemUgYSByZWxhdGl2ZSBmaWxlbmFtZSBnaXZlbiB0byB0aGUgZWRpdG9yLgorCisJaW50IHNhdmVfZWRfc2V0dXAgKG9iamVjdCB3aG8sIGludCBjb2RlKQorCSAgU2F2ZSBpbmRpdmlkdWFsIHNldHRpbmdzIG9mIGVkIGZvciBhIHdpemFyZC4KKworCWludCByZXRyaWV2ZV9lZF9zZXR1cCAob2JqZWN0IHdobykKKwkgIFJldHJpZXZlIGluZGl2aWR1YWwgc2V0dGluZ3Mgb2YgZWQgZm9yIGEgd2l6YXJkLgorCisJc3RyaW5nIGdldF9lZF9idWZmZXJfc2F2ZV9vYmplY3RfbmFtZSAoc3RyaW5nIGZpbGUpCisJICBSZXR1cm4gYSBmaWxlbmFtZSBmb3IgdGhlIGVkIGJ1ZmZlciB0byBiZSBzYXZlZCBpbnRvLgorCisJLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCSAgICBwYXJzZV9jb21tYW5kKCkgU3VwcG9ydCAgKCFjb21wYXQpCisKKwlzdHJpbmcgKnBhcnNlX2NvbW1hbmRfaWRfbGlzdCAoKQorCSAgUmV0dXJuIGdlbmVyaWMgc2luZ3VsYXIgaWRzLgorCisJc3RyaW5nICpwYXJzZV9jb21tYW5kX3BsdXJhbF9pZF9saXN0ICgpCisJICBSZXR1cm4gZ2VuZXJpYyBwbHVyYWwgaWRzLgorCisJc3RyaW5nICpwYXJzZV9jb21tYW5kX2FkamVjdGl2X2lkX2xpc3QgKCkKKwkgIFJldHVybiBnZW5lcmljIGFkamVjdGl2ZSBpZHMuCisKKwlzdHJpbmcgKnBhcnNlX2NvbW1hbmRfcHJlcG9zX2xpc3QgKCkKKwkgIFJldHVybiBjb21tb24gcHJlcG9zaXRpb25zLgorCisJc3RyaW5nIHBhcnNlX2NvbW1hbmRfYWxsX3dvcmQoKQorCSAgUmV0dXJuIHRoZSBvbmUoISkgJ2FsbCcgd29yZC4KKworU0VFIEFMU08KKwltYXN0ZXIoTSksIGVmdW4oRSksIGFwcGxpZWQoQSksIGNvbmNlcHRzKEMpLCBkcml2ZXIoRCksIGxwYyhMUEMpCmRpZmYgLS1naXQgYS9kb2MvbWFzdGVyL21hc3Rlci0zLjIuMSBiL2RvYy9tYXN0ZXIvbWFzdGVyLTMuMi4xCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjAzZTQzMzkKLS0tIC9kZXYvbnVsbAorKysgYi9kb2MvbWFzdGVyL21hc3Rlci0zLjIuMQpAQCAtMCwwICsxLDIzMSBAQAorTkFNRQorCW1hc3RlciBmb3IgTFBNdWQgMy4yLjEKKworREVTQ1JJUFRJT04KKwlUaGlzIGRpcmVjdG9yeSBjb250YWlucyBkZXNjcmlwdGlvbnMgZm9yIHRoZSBmdW5jdGlvbnMgdGhhdAorCUFteWxhYXIncyB2ZXJzaW9uIG9mIHRoZSBMUEMgcGFyc2VyLCBleHBlY3RzIHRvIGZpbmQgaW4gdGhlCisJbWFzdGVyIG9iamVjdCAoc2ltaWxhciB0byBsZnVucywgYnV0IGZvciB0aGUgbWFzdGVyIG9iamVjdAorCW9ubHkpLiBUaGUgbmFtZSBvZiB0aGUgbWFzdGVyIG9iamVjdCBpcyBoYXJkY29kZWQgaW4gdGhlCisJcGFyc2VyICh0byAic2VjdXJlL21hc3RlciIpLgorCisJVGhlIG1hc3RlciBpcyB0aGUgZ2F0ZXdheSBiZXR3ZWVuIHRoZSBpbnRlcnByZXRlciBhbmQgdGhlCisJbXVkbGliIHRvIHBlcmZvcm0gYWN0aW9ucyB3aXRoIG11ZGxpYiBzcGVjaWZpYyBlZmZlY3RzLiBDYWxscworCXRvIHRoZSBtYXN0ZXIgYnkgdGhlIGludGVycHJldGVyIGhhdmUgYW4gYXV0b21hdGljIGNhdGNoKCkgaW4KKwllZmZlY3QuCisKKwlOb3RlIHRoYXQgdGhlIG1hc3RlciBpcyBsb2FkZWQgZmlyc3Qgb2YgYWxsIG9iamVjdHMuIFRodXMgeW91CisJc2hvdWxkbid0IGluaGVyaXQgYW4gb3RoZXIgb2JqZWN0LCBub3IgaXMgdGhlIGNvbXBpbGVyIGFibGUgdG8KKwlzZWFyY2ggaW5jbHVkZSBmaWxlcyAocmVhZDogdGhleSBtdXN0IGJlIHNwZWNpZmllZCB3aXRoIGZ1bGwKKwlwYXRoKS4KKworCUFteWxhYXIgc2F5czogYWN0dWFsbHksIHlvdSBjYW4gaW5oZXJpdCwgYnV0IHRoZSBmaWxlIHdpbGwgYmUKKwlsb2FkZWQgdGhlbiBiZWZvcmUgdGhlIG1hc3Rlciwgd2hpY2ggaXNuJ3QgZ29vZCBmb3IgbW9zdAorCWZpbGVzLgorCisJQSBzaG9ydCBzdXJ2ZXkgb2YgdGhlIHRoaW5ncyB0aGF0IGhhcHBlbiBhdCBzeXN0ZW0gc3RhcnR1cAorCXRpbWU6CisKKwlUaGUgSW5pdGlhbGlzYXRpb24gZnVuY3Rpb25zIGFyZSBjYWxsZWQgYWZ0ZXIgKHJlKWxvYWRpbmcgdGhlCisJbWFzdGVyIHRvIGVzdGFibGlzaCB0aGUgbW9zdCBiYXNpYyBvcGVyYXRpb24gcGFyYW1ldGVycy4KKworCVRoZSBpbml0aWFsaXNhdGlvbiBvZiBMUE11ZCBvbiBzdGFydHVwIGZvbGxvd3MgdGhpcyBzY2hlZHVsZToKKwkgIC0gVGhlIGludGVycHJldGVyIGV2YWx1YXRlcyB0aGUgY29tbWFuZGxpbmUgb3B0aW9ucyBhbmQKKwkgICAgaW5pdGlhbGl6ZXMgaXRzZWxmLgorCSAgLSBUaGUgbWFzdGVyIGlzIGxvYWRlZCwgYnV0IHNpbmNlIHRoZSBkcml2ZXJob29rcyBhcmUgbm90IHNldCB5ZXQsCisJICAgIG5vIHN0YW5kYXJkIGluaXRpYWxpc2F0aW9uIGxmdW4gaXMgY2FsbGVkLgorCSAgLSBnZXRfbWFzdGVyX3VpZCgpIGlzIGNhbGxlZC4gSWYgdGhlIHJlc3VsdCBpcyB2YWxpZCwgaXQgYmVjb21lcyB0aGUKKwkgIC0gaW5hdWd1cmF0ZV9tYXN0ZXIoKSBpcyBjYWxsZWQuCisJICAtIGZsYWcoKSBpcyBjYWxsZWQgZm9yIGVhY2ggZ2l2ZW4gJy1mJyBjb21tYW5kbGluZSBvcHRpb24uCisJICAtIGdldF9zaW11bF9lZnVuKCkgaXMgY2FsbGVkLgorCSAgLSB0aGUgV0laTElTVCBpcyByZWFkIGluLgorCSAgLSBlcGlsb2coKSBpcyBjYWxsZWQuIElmIGl0IHJldHVybnMgYW4gYXJyYXkgb2Ygc3RyaW5ncywKKwkgICAgdGhleSBhcmUgZ2l2ZW4gb25lIGF0IGEgdGltZSBhcyBhcmd1bWVudCB0byBwcmVsb2FkKCkuCisJICAgIFRyYWRpdGlvbmFsbHksIHRoZXNlIHN0cmluZ3MgYXJlIHRoZSBmaWxlbmFtZXMgb2YgdGhlIG9iamVjdHMgdG8KKwkgICAgcHJlbG9hZCwgd2hpY2ggcHJlbG9hZCgpIHRoZW4gZG9lcy4KKwkgIC0gVGhlIGludGVycHJldGVyIHNldHMgdXAgdGhlIElQIGNvbW11bmljYXRpb24gYW5kIGVudGVycworCSAgICB0aGUgYmFja2VuZCBsb29wLgorCisJSWYgdGhlIG1hc3RlciBpcyByZWxvYWRlZCBkdXJpbmcgc3lzdGVtIG9wZXJhdGlvbiwgdGhpcworCWFjdGlvbnMgYXJlIHRha2VuOgorCSAgLSBUaGUgbWFzdGVyIGlzIGxvYWRlZCwgYW5kIGl0cyBpbml0aWFsaXNhdGlvbiBsZnVuIGlzCisJICAgIGNhbGxlZCBhY2NvcmRpbmcgdG8gdGhlIHNldHRpbmdzIG9mIHRoZSBkcml2ZXJob29rcyAoaWYgc2V0KS4KKwkgIC0gQW55IGF1dG8taW5jbHVkZSBzdHJpbmcgYW5kIGFsbCBkcml2ZXJob29rcyBhcmUgY2xlYXJlZC4KKwkgIC0gZ2V0X21hc3Rlcl91aWQoKSBpcyBjYWxsZWQuIElmIHRoZSByZXN1bHQgaXMgdmFsaWQsIGl0IGJlY29tZXMgdGhlCisJICAgIG1hc3RlcnMgdWlkIGFuZCBldWlkLgorCSAgLSBpbmF1Z3VyYXRlX21hc3RlcigpIGlzIGNhbGxlZC4KKworCUlmIHRoZSBtYXN0ZXIgd2FzIGRlc3RydWN0ZWQsIGJ1dCBjb3VsZG4ndCBiZSByZWxvYWRlZCwgdGhlIG9sZAorCW1hc3RlciBvYmplY3QgY291bGQgYmUgcmVhY3RpdmF0ZWQuIEluIHRoYXQgY2FzZToKKwkgIC0gcmVhY3RpdmF0ZV9kZXN0cnVjdGVkX21hc3RlcigpIGlzIGNhbGxlZC4KKwkgIC0gaW5hdWd1cmF0ZV9tYXN0ZXIoKSBpcyBjYWxsZWQuCisKKworCVNlY3VyaXR5IGhpbnQ6IG1vc3Qgb2YgdGhpcyBmdW5jdGlvbnMgYXJlIG5vdCB1c2VmdWwgdG8gYmUKKwljYWxsZWQgZGlyZWN0bHkgZnJvbSBvdGhlciBvYmplY3RzIGFuZCBjYW4gYmUgbWFkZSBwcml2YXRlIG9yCisJc3RhdGljLiBVbmxpa2UgY3JlYXRlKCksIHRoZXNlIGZ1bmN0aW9ucyB0aGF0IGFyZSBhcHBsaWVkIHRvCisJdGhlIG1hc3RlciBvYmplY3QgYXJlIGZvdW5kIGJ5IHRoZSBpbnRlcnByZXRlciBldmVuIGlmIG5vdAorCXB1YmxpY2x5IGFjY2Vzc2libGUuCisKKworCisJQSBzaG9ydCByZWZlcmVuY2UgdG8gYWxsIGV4cGVjdGVkIG1hc3RlciBmdW5jdGlvbnMuLi4KKwktLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisJICAgIEluaXRpYWxpc2F0aW9uCisKKwl2b2lkIGluYXVndXJhdGVfbWFzdGVyICgpCisJICBQZXJmb3JtIG11ZGxpYiBzcGVjaWZpYyBzZXR1cCBvZiB0aGUgbWFzdGVyLgorCisJc3RyaW5nIGdldF9tYXN0ZXJfdWlkICgpCisJICBSZXR1cm4gdGhlIHN0cmluZyB0byBiZSB1c2VkIGFzIHVpZCAoYW5kIC1ldWlkKSBvZiBhCisJICAocmUpbG9hZGVkIG1hc3Rlci4gCisKKwl2b2lkIGZsYWcgKHN0cmluZyBhcmcpCisJICBFdmFsdWF0ZSBhbiBhcmd1bWVudCBnaXZlbiBhcyBvcHRpb24gJy1mJyB0byB0aGUgZHJpdmVyLgorCisJc3RyaW5nICpkZWZpbmVfaW5jbHVkZV9kaXJzICgpCisJICBEZWZpbmUgd2hlcmUgdGhlIGluY2x1ZGUgZmlsZXMgYXJlIHNlYXJjaGVkLgorCisJc3RyaW5nICplcGlsb2cgKGludCBlZmxhZykKKwkgIFBlcmZvcm0gZmluYWwgYWN0aW9ucyBiZWZvcmUgb3BlbmluZyB0aGUgc3lzdGVtIHRvIHVzZXJzLgorCisJdm9pZCBwcmVsb2FkIChzdHJpbmcgZmlsZSkKKwkgIFByZWxvYWQgYSBnaXZlbiBvYmplY3QuCisKKwl2b2lkIGV4dGVybmFsX21hc3Rlcl9yZWxvYWQgKCkKKwkgIENhbGxlZCBhZnRlciBhIHJlbG9hZCBvZiB0aGUgbWFzdGVyIG9uIGV4dGVybmFsIHJlcXVlc3QuCisKKwl2b2lkIHJlYWN0aXZhdGVfZGVzdHJ1Y3RlZF9tYXN0ZXIgKGludCByZW1vdmVkKQorCSAgUmVhY3RpdmF0ZSBhIGZvcm1lcmx5IGRlc3RydWN0ZWQgbWFzdGVyLgorCisJc3RyaW5nfHN0cmluZyAqIGdldF9zaW11bF9lZnVuICgpCisJICBMb2FkIHRoZSBzaW11bF9lZnVuIG9iamVjdCBhbmQgcmV0dXJuIG9uZSBvciBtb3JlIHBhdGhzIG9mIGl0LgorCisJLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCSAgICBIYW5kbGluZyBvZiB1c2VyIGNvbm5lY3Rpb25zCisKKwlvYmplY3QgY29ubmVjdCAoKQorCSAgSGFuZGxlIHRoZSByZXF1ZXN0IGZvciBhIG5ldyBjb25uZWN0aW9uLgorCisJdm9pZCBkaXNjb25uZWN0IChvYmplY3Qgb2JqKQorCSAgSGFuZGxlIHRoZSBsb3NzIG9mIGFuIElQIGNvbm5lY3Rpb24uCisKKwl2b2lkIHJlbW92ZV9wbGF5ZXIgKG9iamVjdCB1c2VyKQorCSAgUmVtb3ZlIGEgdXNlciBvYmplY3QgZnJvbSB0aGUgc3lzdGVtLgorCisJdm9pZCBzdGFsZV9lcnEgKGNsb3N1cmUgY2FsbGJhY2spCisJICBOb3RpZnkgdGhlIGxvc3Mgb2YgdGhlIGVycSBkZW1vbi4KKworCS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisJICAgIFJ1bnRpbWUgU3VwcG9ydAorCisJb2JqZWN0IGNvbXBpbGVfb2JqZWN0IChzdHJpbmcgZmlsZW5hbWUpCisJICBDb21waWxlIGFuIHZpcnR1YWwgb2JqZWN0LgorCisJc3RyaW5nIGdldF93aXpfbmFtZSAoc3RyaW5nIGZpbGUpCisJICBSZXR1cm4gdGhlIGF1dGhvciBvZiBhIGZpbGUuCisKKwlzdHJpbmcgb2JqZWN0X25hbWUgKG9iamVjdCBvYmopCisJICBSZXR1cm4gYSBwcmludGFibGUgbmFtZSBmb3IgYW4gb2JqZWN0LgorCisJbWl4ZWQgcHJlcGFyZV9kZXN0cnVjdCAob2JqZWN0IG9iaikKKwkgIFByZXBhcmUgdGhlIGRlc3RydWN0aW9uIG9mIHRoZSBnaXZlbiBvYmplY3QuCisKKwl2b2lkIHF1b3RhX2RlbW9uICh2b2lkKQorCSAgSGFuZGxlIHF1b3RhcyBpbiB0aW1lcyBvZiBtZW1vcnkgc2hvcnRhZ2UuCisKKwl2b2lkIHJlY2VpdmVfdWRwIChzdHJpbmcgaG9zdCwgc3RyaW5nIG1zZywgaW50IHBvcnQpCisJICBIYW5kbGUgYSByZWNlaXZlZCBJTVAgbWVzc2FnZS4KKworCXZvaWQgc2xvd19zaHV0X2Rvd24gKGludCBtaW51dGVzKQorCSAgU2NoZWR1bGUgYSBzaHV0ZG93biBmb3IgdGhlIG5lYXIgZnV0dXJlLgorCisJdm9pZCBub3RpZnlfc2h1dGRvd24gKCkKKwkgIE5vdGlmeSB0aGUgbWFzdGVyIGFib3V0IGFuIGltbWVkaWF0ZSBzaHV0ZG93bi4KKworCS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisJICAgIEVycm9yIEhhbmRsaW5nCisKKwl2b2lkIGRhbmdsaW5nX2xmdW5fY2xvc3VyZSAoKQorCSAgSGFuZGxlIGEgZGFuZ2xpbmcgbGZ1bi1jbG9zdXJlLgorCisJdm9pZCBsb2dfZXJyb3IgKHN0cmluZyBmaWxlLCBzdHJpbmcgZXJyKQorCSAgQW5ub3VuY2UgYSBjb21waWxlci10aW1lIGVycm9yLgorCisJbWl4ZWQgaGVhcnRfYmVhdF9lcnJvciAob2JqZWN0IGN1bHByaXQsIHN0cmluZyBlcnIsCisJCQkJc3RyaW5nIHByZywgc3RyaW5nIGN1cm9iaiwgaW50IGxpbmUpCisJICBBbm5vdW5jZSBhbiBlcnJvciBpbiB0aGUgaGVhcnRfYmVhdCgpIGZ1bmN0aW9uLgorCisJdm9pZCBydW50aW1lX2Vycm9yIChzdHJpbmcgZXJyLCBzdHJpbmcgcHJnLCBzdHJpbmcgY3Vyb2JqLCBpbnQgbGluZSkKKwkgIEFubm91bmNlIGEgcnVudGltZSBlcnJvci4KKworCS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisJICAgIFNlY3VyaXR5IGFuZCBQZXJtaXNzaW9ucworCisJaW50IHByaXZpbGVnZV92aW9sYXRpb24gKHN0cmluZyBvcCwgbWl4ZWQgd2hvLCBtaXhlZCBhcmczLCBtaXhlZCBhcmc0KQorCSAgVmFsaWRhdGUgdGhlIGV4ZWN1dGlvbiBvZiBhIHByaXZpbGVnZWQgb3BlcmF0aW9uLgorCisJaW50IHF1ZXJ5X2FsbG93X3NoYWRvdyAob2JqZWN0IHZpY3RpbSkKKwkgIFZhbGlkYXRlIGEgc2hhZG93aW5nLgorCisJaW50IHF1ZXJ5X3BsYXllcl9sZXZlbCAoc3RyaW5nIHdoYXQpCisJICBDaGVjayBpZiB0aGUgdXNlciBpcyBvZiBoaWdoIGVub3VnaCBsZXZlbCBmb3Igc2V2ZXJhbCB0aGluZ3MuCisKKwlpbnQgdmFsaWRfZXhlYyAoc3RyaW5nIG5hbWUpCisJICBWYWxpZGF0ZSB0aGUgcmViaW5kaW5nIG9mIGFuIElQIGNvbm5lY3Rpb24gYnkgdXNhZ2Ugb2YgZWZ1bgorCSAgZXhlYygpLgorCisJaW50IHZhbGlkX3F1ZXJ5X3Nub29wIChvYmplY3Qgb2JqKQorCSAgVmFsaWRhdGUgaWYgdGhlIHNub29wZXJzIG9mIGFuIG9iamVjdCBtYXkgYmUgcmV2ZWFsZWQgYnkKKwkgIHVzYWdlIG9mIHRoZSBlZnVuIHF1ZXJ5X3Nub29wKCkuCisKKwlpbnQgdmFsaWRfc25vb3AgKG9iamVjdCBzbm9vcGVlLCBvYmplY3Qgc25vb3BlcikKKwkgIFZhbGlkYXRlIHRoZSBzdGFydC9zdG9wIG9mIGEgc25vb3AuCisKKwktLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKwkgICAgVXNlcmlkcyBhbmQgZGVwZW5kaW5nIFNlY3VyaXR5CisKKwlzdHJpbmcgZ2V0X2JiX3VpZCgpICAvLyBldWlkcworCSAgUmV0dXJuIHRoZSBzdHJpbmcgdG8gYmUgdXNlZCBhcyByb290LXVpZC4KKworCWludCB2YWxpZF9zZXRldWlkIChvYmplY3Qgb2JqLCBzdHJpbmcgbmV3ZXVpZCkJLy8gZXVpZHMKKwkgIFZhbGlkYXRlIHRoZSBjaGFuZ2Ugb2YgYW4gb2JqZWN0cyBldWlkIGJ5IGVmdW4gc2V0ZXVpZCgpLgorCisJaW50fHN0cmluZyB2YWxpZF9yZWFkIChzdHJpbmcgcGF0aCwgc3RyaW5nIGV1aWQsIHN0cmluZyBmdW4sIG9iamVjdCBjYWxsZXIpCisJaW50fHN0cmluZyB2YWxpZF93cml0ZSAoc3RyaW5nIHBhdGgsIHN0cmluZyBldWlkLCBzdHJpbmcgZnVuLCBvYmplY3QgY2FsbGVyKQorCSAgVmFsaWRhdGUgYSByZWFkaW5nL3dyaXRpbmcgZmlsZSBvcGVyYXRpb24uCisKKwktLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCSAgICBlZCgpIFN1cHBvcnQKKworCXN0cmluZyBtYWtlX3BhdGhfYWJzb2x1dGUgKHN0cmluZyBzdHIpCisJICBBYnNvbHV0aXplIGEgcmVsYXRpdmUgZmlsZW5hbWUgZ2l2ZW4gdG8gdGhlIGVkaXRvci4KKworCWludCBzYXZlX2VkX3NldHVwIChvYmplY3Qgd2hvLCBpbnQgY29kZSkKKwkgIFNhdmUgaW5kaXZpZHVhbCBzZXR0aW5ncyBvZiBlZCBmb3IgYSB3aXphcmQuCisKKwlpbnQgcmV0cmlldmVfZWRfc2V0dXAgKG9iamVjdCB3aG8pCisJICBSZXRyaWV2ZSBpbmRpdmlkdWFsIHNldHRpbmdzIG9mIGVkIGZvciBhIHdpemFyZC4KKworCXN0cmluZyBnZXRfZWRfYnVmZmVyX3NhdmVfb2JqZWN0X25hbWUgKHN0cmluZyBmaWxlKQorCSAgUmV0dXJuIGEgZmlsZW5hbWUgZm9yIHRoZSBlZCBidWZmZXIgdG8gYmUgc2F2ZWQgaW50by4KKworCS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKwkgICAgcGFyc2VfY29tbWFuZCgpIFN1cHBvcnQgICghY29tcGF0LCBTVVBQTFlfUEFSU0VfQ09NTUFORCBkZWZpbmVkKQorCisJc3RyaW5nICpwYXJzZV9jb21tYW5kX2lkX2xpc3QgKCkKKwkgIFJldHVybiBnZW5lcmljIHNpbmd1bGFyIGlkcy4KKworCXN0cmluZyAqcGFyc2VfY29tbWFuZF9wbHVyYWxfaWRfbGlzdCAoKQorCSAgUmV0dXJuIGdlbmVyaWMgcGx1cmFsIGlkcy4KKworCXN0cmluZyAqcGFyc2VfY29tbWFuZF9hZGplY3Rpdl9pZF9saXN0ICgpCisJICBSZXR1cm4gZ2VuZXJpYyBhZGplY3RpdmUgaWRzLgorCisJc3RyaW5nICpwYXJzZV9jb21tYW5kX3ByZXBvc19saXN0ICgpCisJICBSZXR1cm4gY29tbW9uIHByZXBvc2l0aW9ucy4KKworCXN0cmluZyBwYXJzZV9jb21tYW5kX2FsbF93b3JkKCkKKwkgIFJldHVybiB0aGUgb25lKCEpICdhbGwnIHdvcmQuCisKK1NFRSBBTFNPCisJbWFzdGVyKE0pLCBlZnVuKEUpLCBhcHBsaWVkKEEpLCBjb25jZXB0cyhDKSwgZHJpdmVyKEQpLCBscGMoTFBDKQpkaWZmIC0tZ2l0IGEvZG9jL21hc3Rlci9ub3RpZnlfc2h1dGRvd24gYi9kb2MvbWFzdGVyL25vdGlmeV9zaHV0ZG93bgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5kMjNjZDk4Ci0tLSAvZGV2L251bGwKKysrIGIvZG9jL21hc3Rlci9ub3RpZnlfc2h1dGRvd24KQEAgLTAsMCArMSwyOSBAQAorU1lOT1BTSVMKKyAgICAgICAgdmFyYXJncyB2b2lkIG5vdGlmeV9zaHV0ZG93biAoc3RyaW5nIGNyYXNoX3JlYXNvbikKKworREVTQ1JJUFRJT04KKyAgICAgICAgTm90aWZ5IHRoZSBtYXN0ZXIgYWJvdXQgYW4gaW1tZWRpYXRlIHNodXRkb3duLiBJZiA8Y3Jhc2hfcmVhc29uPiBpcyAwLAorICAgICAgICBpdCBpcyBhIG5vcm1hbCBzaHV0ZG93biwgb3RoZXJ3aXNlIGl0IGlzIGEgY3Jhc2ggYW5kIDxjcmFzaF9yZWFzb24+CisgICAgICAgIGdpdmVzIGEgaGludCBhdCB0aGUgcmVhc29uLgorCisgICAgICAgIFRoZSBmdW5jdGlvbiBoYXMgdGhlIG9wcG9ydHVuaXR5IHRvIHBlcmZvcm0gYW55IGNsZWFudXAgb3BlcmF0aW9uLAorICAgICAgICBsaWtlIGluZm9ybWluZyB0aGUgbXVkd2hvIHNlcnZlciB0aGF0IHRoZSBtdWQgaXMgZG93bi4gVGhpcyBjYW4gbm90IGJlCisgICAgICAgIGRvbmUgd2hlbiByZW1vdmVfcGxheWVyKCkgaXMgY2FsbGVkIGJlY2F1c2UgdGhlIHVkcCBjb25uZWN0aXZpdHkgaXMKKyAgICAgICAgYWxyZWFkeSBnb25lIHRoZW4uCisKKyAgICAgICAgSWYgdGhlIGdhbWVkcml2ZXIgc2h1dHMgZG93biBub3JtYWxseSAsIHRoaXMgaXMgdGhlIGxhc3QgZnVuY3Rpb24KKyAgICAgICAgY2FsbGVkIGJlZm9yZSB0aGUgbXVkIHNodXRzIGRvd24gdGhlIHVkcCBjb25uZWN0aW9ucyBhbmQgdGhlIGFjY2VwdGluZworICAgICAgICBzb2NrZXQgZm9yIG5ldyBwbGF5ZXJzLgorCisgICAgICAgIElmIHRoZSBnYW1lZHJpdmVyIGNyYXNoZXMsIHRoaXMgaXMgdGhlIGxhc3QgZnVuY3Rpb24gY2FsbGVkIGJlZm9yZSB0aGUKKyAgICAgICAgbXVkIGF0dGVtcHRzIHRvIGR1bXAgY29yZSBhbmQgZXhpdC4gV0FSTklORzogU2luY2UgdGhlIGRyaXZlciBpcyBpbiBhbgorICAgICAgICB1bnN0YWJsZSBzdGF0ZSwgdGhpcyBmdW5jdGlvbiBtYXkgbm90IGJlIGFibGUgdG8gcnVuIHRvIGNvbXBsZXRpb24hCisgICAgICAgIFRoZSBmb2xsb3dpbmcgY3Jhc2ggcmVhc29ucyBhcmUgZGVmaW5lZDoKKyAgICAgICAgICAiRmF0YWwgRXJyb3IiOiBhbiBpbnRlcm5hbCBzYW5pdHkgY2hlY2sgZmFpbGVkLgorCitISVNUT1JZCisgICAgICAgIExETXVkIDMuMi45IGFkZGVkIHRoZSA8Y3Jhc2hfcmVhc29uPiBhcmd1bWVudCBhbmQgdGhhdCB0aGUgZnVuY3Rpb24KKyAgICAgICAgaXMgY2FsbGVkIGZvciBhIGNyYXNoIGF0IGFsbC4KKworU0VFIEFMU08KKyAgICAgICAgc2xvd19zaHV0X2Rvd24oTSksIHJlbW92ZV9wbGF5ZXIoTSksCmRpZmYgLS1naXQgYS9kb2MvbWFzdGVyL29iamVjdF9uYW1lIGIvZG9jL21hc3Rlci9vYmplY3RfbmFtZQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4yOTkwYjZkCi0tLSAvZGV2L251bGwKKysrIGIvZG9jL21hc3Rlci9vYmplY3RfbmFtZQpAQCAtMCwwICsxLDEwIEBACitTWU5PUFNJUworCXN0cmluZyBvYmplY3RfbmFtZShvYmplY3Qgb2IpCisKK0RFU0NSSVBUSU9OCisJUmV0dXJuIGEgcHJpbnRhYmxlIG5hbWUgZm9yIGFuIG9iamVjdC4gVGhpcyBmdW5jdGlvbiBpcyBjYWxsZWQKKwlieSBzcHJpbnRmKCkgdG8gcHJpbnQgYSBtZWFuaW5nZnVsIG5hbWUgaW4gYWRkaXRpb24gdG8gdGhlCisJbm9ybWFsIG9iamVjdF9uYW1lKCkuCisKK1NFRSBBTFNPCisJc3ByaW50ZihFKSwgb2JqZWN0X25hbWUoRSkKZGlmZiAtLWdpdCBhL2RvYy9tYXN0ZXIvcGFyc2VfY29tbWFuZF9hbGxfd29yZCBiL2RvYy9tYXN0ZXIvcGFyc2VfY29tbWFuZF9hbGxfd29yZApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5iNTdhYjA1Ci0tLSAvZGV2L251bGwKKysrIGIvZG9jL21hc3Rlci9wYXJzZV9jb21tYW5kX2FsbF93b3JkCkBAIC0wLDAgKzEsOSBAQAorU1lOT1BTSVMKKwlzdHJpbmcgKnBhcnNlX2NvbW1hbmRfYWxsX3dvcmQodm9pZCkKKworREVTQ1JJUFRJT04KKwlVc2VkIGJ5IHBhcnNlX2NvbW1hbmQoKS4gUmV0dXJuIHRoZSB3b3JkIGZvciBgYGFsbCcnIGluIHRoZQorCWluc3RhbGxhdGlvbnMgbmF0aXZlIGxhbmd1YWdlLgorCitTRUUgQUxTTworCXBhcnNlX2NvbW1hbmQoRSkKZGlmZiAtLWdpdCBhL2RvYy9tYXN0ZXIvcGFyc2VfY29tbWFuZF9wcmVwb3NfbGlzdCBiL2RvYy9tYXN0ZXIvcGFyc2VfY29tbWFuZF9wcmVwb3NfbGlzdApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4yNDcwNmNlCi0tLSAvZGV2L251bGwKKysrIGIvZG9jL21hc3Rlci9wYXJzZV9jb21tYW5kX3ByZXBvc19saXN0CkBAIC0wLDAgKzEsOSBAQAorU1lOT1BTSVMKKwlzdHJpbmcgKnBhcnNlX2NvbW1hbmRfcHJlcG9zX2xpc3Qodm9pZCkKKworREVTQ1JJUFRJT04KKwlVc2VkIGJ5IHBhcnNlX2NvbW1hbmQoKS4gUmV0dXJuIGFuIGFycmF5IG9mIGNvbW1vbgorCXByZXBvc2l0aW9ucyBpbiB0aGUgaW5zdGFsbGF0aW9ucyBuYXRpdmUgbGFuZ3VhZ2UuCisKK1NFRSBBTFNPCisJcGFyc2VfY29tbWFuZChFKQpkaWZmIC0tZ2l0IGEvZG9jL21hc3Rlci9wcmVsb2FkIGIvZG9jL21hc3Rlci9wcmVsb2FkCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjk1ZjI3ZDcKLS0tIC9kZXYvbnVsbAorKysgYi9kb2MvbWFzdGVyL3ByZWxvYWQKQEAgLTAsMCArMSwxOCBAQAorU1lOT1BTSVMKKwl2b2lkIHByZWxvYWQoc3RyaW5nIGZpbGUpCisKK0RFU0NSSVBUSU9OCisJTG9hZCB0aGUgb2JqZWN0IHdpdGggdGhlIGdpdmVuIGZpbGUgbmFtZSwgdGhhdCB3YXMgcmV0dXJuZWQgYnkKKwllcGlsb2coKS4gSXQgaXMgdGFzayBvZiB0aGUgZXBpbG9nKCkvcHJlbG9hZCgpIHBhaXIgdG8gZW5zdXJlCisJdGhlIHZhbGlkaXR5IG9mIHRoZSBnaXZlbiBzdHJpbmdzIChlLmcuIGZpbHRlcmluZyBvdXQgY29tbWVudHMKKwlhbmQgYmxhbmsgbGluZXMpLiBGb3IgcHJlbG9hZCBpdHNlbGYgYSBjYWxsX290aGVyKGZpbGUsICI/Pz8iKQorCXMgc3VmZmljaWVudCwgYnV0IGl0IHNob3VsZCBiZSBndWFyZGVkIGJ5IGEgY2F0Y2goKSB0byBhdm9pZAorCXByZW1hdHVyZSBibG9ja2luZ3MuIEFsc28gaXQgaXMgd2lzZSB0byBjaGFuZ2UgdGhlIG1hc3RlcidzCisJZXVpZCBmcm9tIHJvb3RfdWlkIHRvIHNvbWV0aGluZyBsZXNzIHByaXZpbGVnZWQgZm9yIHRoZSB0aW1lCisJb2YgdGhlIHByZWxvYWQuCisKKwlZb3UgY2FuIG9mIGNvdXJzZSBkbyBhbnl0aGluZyBlbHNlIHdpdGggdGhlIHBhc3NlZCBzdHJpbmdzIC0KKwlwcmVsb2FkaW5nIGlzIGp1c3QgdGhlIHRyYWRpdGlvbmFsIHRhc2suCisKK1NFRSBBTFNPCisJZXBpbG9nKE0pLCBtYXN0ZXIoTSkKZGlmZiAtLWdpdCBhL2RvYy9tYXN0ZXIvcHJlcGFyZV9kZXN0cnVjdCBiL2RvYy9tYXN0ZXIvcHJlcGFyZV9kZXN0cnVjdApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4zMTIxYjg4Ci0tLSAvZGV2L251bGwKKysrIGIvZG9jL21hc3Rlci9wcmVwYXJlX2Rlc3RydWN0CkBAIC0wLDAgKzEsMjIgQEAKK1NZTk9QU0lTCisJbWl4ZWQgcHJlcGFyZV9kZXN0cnVjdChvYmplY3Qgb2JqKQorCitERVNDUklQVElPTgorCVByZXBhcmUgdGhlIGRlc3RydWN0aW9uIG9mIHRoZSBvYmplY3Qgb2JqLiBSZXR1cm4gMCBpZiB0aGUKKwlvYmplY3QgaXMgcmVhZHkgZm9yIGRlc3RydWN0aW9uLCBhbnkgb3RoZXIgdmFsdWUgd2lsbCBhYm9ydAorCXRoZSBhdHRlbXB0LiBJZiBhIHN0cmluZyBpcyByZXR1cm5lZCwgYW4gZXJyb3Igd2l0aCB0aGUgc3RyaW5nCisJYXMgbWVzc2FnZSB3aWxsIGJlIGlzc3VlZC4KKworCVRoZSBpbnRlcnByZXRlciBjYWxscyB0aGlzIGZ1bmN0aW9uIHdoZW5ldmVyIGFuIG9iamVjdCBzaGFsbAorCWJlIGRlc3RydWN0ZWQuIEl0IGV4cGVjdHMsIHRoYXQgdGhpcyBmdW5jdGlvbiBjbGVhbnMgdGhlCisJaW52ZW50b3J5IG9mIHRoZSBvYmplY3QsIG9yIHRoZSBkZXN0cnVjdCB3aWxsIGZhaWwuCisJRnVydGhlcm1vcmUsIHRoZSBmdW5jdGlvbiBjb3VsZCBub3RpZnkgdGhlIGZvcm1lciBpbnZlbnRvcnkKKwlvYmplY3RzIHRoYXQgdGhlaXIgaG9sZGVyIGlzIHVuZGVyIGRlc3RydWN0aW9uICh1c2VmdWwgdG8gbW92ZQorCXVzZXJzIG91dCBvZiByb29tcyB3aGljaCByZSB1cGRhdGVkKTsgYW5kIGl0IGNvdWxkIGFubm91bmNlCisJc3lzdGVtd2lkZSB0aGUgZGVzdHJ1Y3Rpb24ocXVpdHRpbmcpIG9mIHVzZXJzLgorCisJU3RyYW5nZSB0aGluZ3Mgd2lsbCBoYXBwZW4gaWYgdGhlIG1hc3RvciBvYmplY3QgZG9lcyBub3QKKwlwcm92aWRlIHRoaXMgZnVuY3Rpb24uCisKK1NFRSBBTFNPCisJcmVtb3ZlX3BsYXllcihNKSwgZGVzdHJ1Y3QoRSkKZGlmZiAtLWdpdCBhL2RvYy9tYXN0ZXIvcHJpdmlsZWdlX3Zpb2xhdGlvbiBiL2RvYy9tYXN0ZXIvcHJpdmlsZWdlX3Zpb2xhdGlvbgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi45NTdhNGI5Ci0tLSAvZGV2L251bGwKKysrIGIvZG9jL21hc3Rlci9wcml2aWxlZ2VfdmlvbGF0aW9uCkBAIC0wLDAgKzEsNjMgQEAKK1NZTk9QU0lTCisJaW50IHByaXZpbGVnZV92aW9sYXRpb24oc3RyaW5nIG9wLCBtaXhlZCB3aG8sIG1peGVkIGFyZzMsIG1peGVkIGFyZzQpCisKK0RFU0NSSVBUSU9OCisJVmFsaWRhdGUgdGhlIGV4ZWN1dGlvbiBvZiBhIHByaXZpbGVnZWQgb3BlcmF0aW9uLgorCW9wIGRlbm90ZXMgdGhlIHJlcXVlc3RlZCBvcGVyYXRpb24sIHdobyBpcyB0aGUgb2JqZWN0CisJcmVxdWVzdGluZyB0aGUgb3BlcmF0aW9uIChvYmplY3RfbmFtZSBvciBvYmplY3QgcG9pbnRlciksIGFyZzMKKwlhbmQgYXJnNCBhcmUgYWRkaXRpb25hbCBhcmd1bWVudHMsIGRlcGVuZGluZyBvbiB0aGUgb3BlcmF0aW9uLgorCisJVGhlIGZ1bmN0aW9uIHNob3VsZCByZXR1cm4gPjAgdG8gZ3JhbnQgdGhlIHByaXZpbGVnZSwgMCB0bworCWluZGljYXRlIHRoYXQgdGhlIGNhbGxlciB3YXMgcHJvYmFibHkgbWlzbGVhZGVkIGFuZCB0aGUgZXJyb3IKKwltaWdodCBiZSBmaXhlZCwgYW5kIGFueXRoaW5nIGVsc2UgdG8gaW5kaWNhdGUgYSByZWFsCisJdmlvbGF0aW9uLCB0aGF0IHdpbGwgYmUgaGFuZGxlZCBhcyBydW4gdGltZSBlcnJvci4KKworCVRoZSBwcml2aWxlZ2VkIG9wZXJhdGlvbnMgYXJlOgorCWF0dGFjaF9lcnFfZGVtb24gIEF0dGFjaCB0aGUgZXJxIGRlbW9uIHRvIG9iamVjdCA8YXJnPiB3aXRoCisJICAgICAgICAgICAgICAgICAgZmxhZyA8YXJncz4uIAorCWJpbmRfbGFtYmRhCSAgQmluZCBhIGxhbWJkYS1jbG9zdXJlIHRvIG9iamVjdCBhcmczLgorCWNhbGxfb3V0X2luZm8JICBSZXR1cm4gYW4gYXJyYXkgd2l0aCBhbGwgY2FsbF9vdXQKKwkJCSAgaW5mb3JtYXRpb25zLgorCW5vbWFzayBzaW11bF9lZnVuIEF0dGVtcHQgdG8gZ2V0IGFuIGVmdW4gPGFyZz4gdmlhIGVmdW46OiB3aGVuCisJICAgICAgICAgICAgICAgICAgaXQgaXMgc2hhZG93ZWQgYnkgYSBub21hc2sgdHlwZSBzaW11bF9lZnVuLgorCXJlbmFtZV9vYmplY3QJICBUaGUgb2JqZWN0IHdobyB0cmllcyB0byByZW5hbWUgdGhlIG9iamVjdAorCQkJICBhcmczIHRvIHRoZSBuYW1lIGFyZzQuCisJc2VuZF91ZHAJICBTZW5kIFVEUC1kYXRhIHRvIGhvc3QgYXJnMy4KKwlzZXRfYXV0b19pbmNsdWRlX3N0cmluZyBTZXQgdGhlIHN0cmluZyBhdXRvbWF0aWNhbGx5IGluY2x1ZGVkCisJCQkgIGJ5IHRoZSBjb21waWxlciBpbnRvIGV2ZXJ5IG9iamVjdC4KKwlnZXRfZXh0cmFfd2l6aW5mbyBHZXQgdGhlIGFkZGl0aW9uYWwgd2l6LWxpc3QgaW5mbyBmb3IgdXNlcgorCQkJICBhcmczLgorCXNldF9leHRyYV93aXppbmZvIFNldCB0aGUgYWRkaXRpb25hbCB3aXotbGlzdCBpbmZvIGZvciB1c2VyCisJCQkgIGFyZzMuCisJc2V0X2V4dHJhX3dpemluZm9fc2l6ZSBTZXQgdGhlIHNpemUgb2YgdGhlIGFkZGl0aW9uYWwgdXNlcgorCQkJICBpbmZvIGluIHRoZSB3aXotbGlzdCB0byBhcmczLgorCXNldF9kcml2ZXJfaG9vayAgIDogU2V0IGhvb2sgPGFyZz4gdG8gPGFyZzI+LgorCXNldF90aGlzX29iamVjdAkgIFNldCB0aGlzX29iamVjdCgpIHRvIGFyZzMuCisJc2hhZG93X2FkZF9hY3Rpb24gQWRkIGFuIGFjdGlvbiB0byBmdW5jdGlvbiBhcmc0IHRoYXQgaXMKKwkJCSAgc2hhZG93ZWQgYnkgdGhlIG9iamVjdCBhcmczLgorCXN5bWJvbF92YXJpYWJsZQkgIEF0dGVtcHQgdG8gbWFrZSBhIHN5bWJvbCBmcm9tIGEgaGlkZGVuCisJCQkgIGluaGVyaXRlZCB2YXJpYWJsZS4gYXJnMyBpcyB0aGUgb2JqZWN0IGluCisJCQkgIHF1ZXN0aW9uLCBhcmc0IHRoZSBudW1iZXIgb2YgdGhlIHZhcmlhYmxlIGluCisJCQkgIHRoZSB2YXJpYWJsZSB0YWJsZS4KKwl3aXpsaXN0X2luZm8JICBSZXR1cm4gYW4gYXJyYXkgd2l0aCBhbGwgd2l6LWxpc3QKKwkJCSAgaW5mb3JtYXRpb24uCisKKwljYWxsX291dF9pbmZvKCkgY2FuIHJldHVybiB0aGUgYXJndW1lbnRzIHRvIGZ1bmN0aW9ucyBhbmQKKwlsYW1iZGEgY2xvc3VyZXMgdG8gYmUgY2FsbGVkIGJ5IGNhbGxfb3V0KCk7IHlvdSBzaG91bGQKKwljb25zaWRlciB0aGF0IHJlYWQgYWNjZXNzIHRvIGNsb3N1cmVzLCBtYXBwaW5ncyBhbmQgYXJyYXlzCisJbWVhbnMgd3JpdGUgYWNjZXNzIGFuZC9vciBvdGhlciBwcml2aWxlZ2VzLiAKKwl3aXpsaXN0X2luZm8oKSB3aWxsIHJldHVybiBhbiBhcnJheSB3aGljaCBob2xkcywgYW1vbmcgb3RoZXJzLAorCXRoZSBleHRyYSB3aXpsaXN0IGZpZWxkLiBXaGlsZSBhIHRvcGxldmVsIGFycmF5LCBpZiBmb3VuZCwKKwl3aWxsIGJlIGNvcGllZCwgdGhpcyBkb2VzIG5vdCBhcHBseSB0byBuZXN0ZWQgYXJyYXlzIG9yIHRvIGFueQorCW1hcHBpbmdzLiBZb3UgbWlnaHQgYWxzbyBoYXZlIHNvbWUgc2Vuc2l0aXZlIGNsb3N1cmVzIHRoZXJlLgorCXNlbmRfdWRwKCkgc2hvdWxkIGJlIHdhdGNoZWQgYXMgaXQgY291bGQgYmUgYWJ1c2VkIHRvIG1lc3MgdXAKKwl0aGUgSU1QLgorCVRoZSB4eHhfZXh0cmFfd2l6aW5mbyBvcGVyYXRpb25zIGFyZSBuZWNlc3NhcnkgZm9yIGEgcHJvcGVyCisJd2l6bGlzdCBhbmQgc2hvdWxkIHRoZXJlZm9yZSBiZSByZXN0cmljdGVkIHRvIGFkbWlucy4KKwlBbGwgb3RoZXIgb3BlcmF0aW9ucyBhcmUgcG90ZW50aWFsIHNvdXJjZXMgZm9yIGRpcmVjdCBzZWN1cml0eQorCWJyZWFjaGVzIC0gYW55IHVzZSBvZiB0aGVtIHNob3VsZCBiZSBzY3J1dGluaXplZCBjbG9zZWx5LgorCitTRUUgQUxTTwkKKwlzaW11bF9lZnVuKEMpLCBjYWxsX291dF9pbmZvKEUpLCBzaGFkb3coRSksIGFkZF9hY3Rpb24oRSksCisJd2l6bGlzdChFKSwgc2V0X3RoaXNfb2JqZWN0KEUpLCByZW5hbWVfb2JqZWN0KEUpLAorCWJpbmRfbGFtYmRhKEUpLCBzZW5kX3VkcChFKSwgc2V0X2F1dG9faW5jbHVkZV9zdHJpbmcoRSkKZGlmZiAtLWdpdCBhL2RvYy9tYXN0ZXIvcXVlcnlfYWxsb3dfc2hhZG93IGIvZG9jL21hc3Rlci9xdWVyeV9hbGxvd19zaGFkb3cKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNDdkMmU5NQotLS0gL2Rldi9udWxsCisrKyBiL2RvYy9tYXN0ZXIvcXVlcnlfYWxsb3dfc2hhZG93CkBAIC0wLDAgKzEsMjMgQEAKK3F1ZXJ5X2FsbG93X3NoYWRvdyhNKQorRlVOS1RJT046CisgICAgIGludCBxdWVyeV9hbGxvd19zaGFkb3cob2JqZWN0IHZpY3RpbSkKKworREVGSU5JVElPTjoKKyAgICAgL3NlY3VyZS9tYXN0ZXIuYworCitCRVNDSFJFSUJVTkc6CisgICAgIEdpYnQgMSB6dXJ1ZWNrLCB3ZW5uIGRhcyBPYmpla3QgdmljdGltIHZvbiBwcmV2aW91c19vYmplY3QoKSBiZXNjaGF0dGV0IAorICAgICB3ZXJkZW4gZGFyZiwgMCBzb25zdC4KKworICAgICBEaWUgRnVua3Rpb24gcHJ1ZWZ0LCBvYiBkYXMgT2JqZWt0IHZpY3RpbSBlaW4gUm9vdC1PYmpla3QgaXN0LCBvZGVyCisgICAgIG9iIGVzIGJlaW0gQXVmcnVmIHZvbiBxdWVyeV9wcmV2ZW50X3NoYWRvdygpIDEgenVydWVja2dpYnQuCisKK0JFTUVSS1VOR0VOOgorICAgICBXaXJkIGF1dG9tYXRpc2NoIGJlaSBzaGFkb3coKSBhdXNnZWZ1ZWhydC4KKworU0lFSEUgQVVDSDoKKyAgICAgUmVjaHRlOgkgICAgIHF1ZXJ5X3ByZXZlbnRfc2hhZG93KEwpCisgICAgIEdlbmVyZWxsOgkgICAgIHNoYWRvdyhFKSwgdW5zaGFkb3coRSkKKyAgICAgSW5mb3JtYXRpb25lbjogIHF1ZXJ5X3NoYWRvd2luZyhFKQorCisyMC4gTWFpIDIwMDQgR2xvaW5zb24KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9kb2MvbWFzdGVyL3F1ZXJ5X3BsYXllcl9sZXZlbCBiL2RvYy9tYXN0ZXIvcXVlcnlfcGxheWVyX2xldmVsCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjQ4NGUxOGUKLS0tIC9kZXYvbnVsbAorKysgYi9kb2MvbWFzdGVyL3F1ZXJ5X3BsYXllcl9sZXZlbApAQCAtMCwwICsxLDE1IEBACitTWU5PUFNJUworCWludCBxdWVyeV9wbGF5ZXJfbGV2ZWwoc3RyaW5nIHdoYXQpCisKK0RFU0NSSVBUSU9OCisJQ2hlY2sgaWYgdGhlIHVzZXIgaXMgb2YgaGlnaCBlbm91Z2ggbGV2ZWwgZm9yIHNldmVyYWwgdGhpbmdzLgorCisJVGhlIGFyZ3VtZW50IGRlbm90ZXMgdGhlIGFjdGlvbiBmb3Igd2hpY2ggcGVybWlzc2lvbiBpcyB0byBiZQorCWNoZWNrZWQ6CisKKwkidHJhY2UiCQlJcyB0aGUgdXNlciBhbGxvd2VkIHRvIHVzZSB0cmFjaW5nPworCSJpbnNwZWN0IG1lbW9yeSIgSXMgdGhlIHVzZXIgYWxsb3dlZCB0byBpc3N1ZSB0aGUKKwkJCXNwZWNpYWwgY29tbWFuZCAic2hvd3NtYWxsbmV3bWFsbG9jZWQiPyAKKworU0VFIEFMU08KKwl0cmFjZShFKSwgc2hvd3NtYWxsbmV3bWFsbG9jZWQoRCksIG1hbGxvYyhEKSwgc3RhdHVzKEQpLCBtZW1vcnkoQykKZGlmZiAtLWdpdCBhL2RvYy9tYXN0ZXIvcXVvdGFfZGVtb24gYi9kb2MvbWFzdGVyL3F1b3RhX2RlbW9uCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmY3ZjhkOTUKLS0tIC9kZXYvbnVsbAorKysgYi9kb2MvbWFzdGVyL3F1b3RhX2RlbW9uCkBAIC0wLDAgKzEsMTggQEAKK1NZTk9QU0lTCisJdm9pZCBxdW90YV9kZW1vbih2b2lkKQorCitERVNDUklQVElPTgorCUhhbmRsZSBxdW90YXMgaW4gdGltZXMgb2YgbWVtb3J5IHNob3J0YWdlLgorCisJVGhpcyBmdW5jdGlvbiBpcyBjYWxsZWQgZHVyaW5nIHRoZSBmaW5hbCBwaGFzZSBvZiBhIGdhcmJhZ2UKKwljb2xsZWN0aW9uIGlmIHRoZSByZXNlcnZlZCB1c2VyIGFyZWEgY291bGRuJ3QgYmUgcmVhbGxvY2F0ZWQuCisJVGhpcyBmdW5jdGlvbiAob3IgYSBjYWxsZWQgZGVtb24pIGhhcyBub3cgdGhlIG9wcG9ydHVuaXR5IHRvCisJcmVtb3ZlIHNvbWUgKHN0aWxsIGFjdGl2ZSkgb2JqZWN0cyBmcm9tIHRoZSBzeXN0ZW0uIElmIHRoaXMgZG9lcworCW5vdCBmcmVlIGVub3VnaCBtZW1vcnkgdG8gcmVhbGxvY2F0ZSB0aGUgdXNlciByZXNlcnZlLAorCXNsb3dfc2h1dF9kb3duKCkgd2lsbCBiZSBjYWxsZWQgdG8gc3RhcnQgQXJtYWdlZGRvbi4KKworCVVwIHRvIG5vdywgdGhlIHdpemxpc3QgbGFja3MgdmFyaW91cyBpbmZvcm1hdGlvbnMgbmVlZGVkIHRvCisJZGV0ZWN0IHRoZSBtZW1vcnktaHVuZ3JpZXN0IHVzZXJzLgorCitTRUUgQUxTTworCXNsb3dfc2h1dF9kb3duKE0pLCB3aXpsaXN0KEUpCmRpZmYgLS1naXQgYS9kb2MvbWFzdGVyL3JlYWN0aXZhdGVfZGVzdHJ1Y3RlZF9tYXN0ZXIgYi9kb2MvbWFzdGVyL3JlYWN0aXZhdGVfZGVzdHJ1Y3RlZF9tYXN0ZXIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZTkwZDJhMQotLS0gL2Rldi9udWxsCisrKyBiL2RvYy9tYXN0ZXIvcmVhY3RpdmF0ZV9kZXN0cnVjdGVkX21hc3RlcgpAQCAtMCwwICsxLDE1IEBACitTWU5PUFNJUworCXZvaWQgcmVhY3RpdmF0ZV9kZXN0cnVjdGVkX21hc3RlcihpbnQgZmxhZykKKworREVTQ1JJUFRJT04KKwlUaGlzIGZ1bmN0aW9uIGlzIGNhbGxlZCBpbiBhbiBhbHJlYWR5IGRlc3RydWN0ZWQgbWFzdGVyIG9iamVjdAorCWlmIG5vIG5ldyBtYXN0ZXIgb2JqZWN0IGNvdWxkIGJlIGxvYWRlZC4gZmxhZyB3aWxsIGJlIDEgaWYgdGhlCisJb2xkIG1hc3RlciBvYmplY3QgY291bGQgYmUgcmVjbGFpbWVkIGZvcm0gdGhlIGxpc3Qgb2Ygb2JqZWN0cworCXRoYXQgd2VyZSBtYXJrZWQgZm9yIGRlc3RydWN0aW9uIGJ1dCBub3QgeWV0IHRlcm1pbmF0ZWQuIElmCisJZmxhZyBpcyAwLCBhbGwgdmFyaWFibGVzIG9mIHRoZSBvYmplY3QgaGF2ZSBiZWVuIHNldCB0byAwIGFuZAorCW11c3QgYmUgcmUtaW5pdGlhbGl6ZWQuCisKKwlBZnRlciB0aGlzIGZ1bmN0aW9uLCBpbmF1Z3VyYXRlX21hc3RlcigpIHdpbGwgYmUgYXBwbGllZCBhZ2Fpbi4KKworU0VFIEFMU08KKwlkZXN0cnVjdChFKSwgaW5hdWd1cmF0ZV9tYXN0ZXIoTSksIG1hc3RlcihNKQpkaWZmIC0tZ2l0IGEvZG9jL21hc3Rlci9yZWNlaXZlX3VkcCBiL2RvYy9tYXN0ZXIvcmVjZWl2ZV91ZHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYTFiNThjNQotLS0gL2Rldi9udWxsCisrKyBiL2RvYy9tYXN0ZXIvcmVjZWl2ZV91ZHAKQEAgLTAsMCArMSwxNyBAQAorU1lOT1BTSVMKKwl2b2lkIHJlY2VpdmVfdWRwKHN0cmluZyBob3N0LCBzdHJpbmcgbXNnLCBpbnQgaG9zdHBvcnQpCisKK0RFU0NSSVBUSU9OCisJSGFuZGxlIGEgcmVjZWl2ZWQgSU1QIG1lc3NhZ2UuCisKKwlUaGlzIGZ1bmN0aW9uIGlzIGNhbGxlZCBmb3IgZXZlcnkgbWVzc2FnZSByZWNlaXZlZCBvbiB0aGUgSU1QCisJcG9ydC4gVXN1YWxseSBpdCBpcyBwYXNzZWQgb24gdG8gc29tZSBvYmplY3QgdGhhdCBoYW5kbGVzCisJaW50ZXIgbXVkIGNvbW11bmljYXRpb25zLgorCitISVNUT1JZCisJVGhlICdob3N0cG9ydCcgYXJndW1lbnQgd2FzIGFkZGVkIGluIDMuMi4xLgorCitTRUUgQUxTTworCXNlbmRfdWRwKEUpLCBxdWVyeV91ZHBfcG9ydChFKQorCisyOS4xMC4yMDA2IFplc3N0cmEKZGlmZiAtLWdpdCBhL2RvYy9tYXN0ZXIvcmVtb3ZlX3BsYXllciBiL2RvYy9tYXN0ZXIvcmVtb3ZlX3BsYXllcgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5iNzBhMWZiCi0tLSAvZGV2L251bGwKKysrIGIvZG9jL21hc3Rlci9yZW1vdmVfcGxheWVyCkBAIC0wLDAgKzEsMTQgQEAKK1NZTk9QU0lTCisJdm9pZCByZW1vdmVfcGxheWVyKG9iamVjdCBvYikKKworREVTQ1JJUFRJT04KKwlSZW1vdmUgYW4gaW50ZXJhY3RpdmUgdXNlciBvYmplY3Qgb2IgZnJvbSB0aGUgc3lzdGVtLiBUaGlzCisJZnVuY3Rpb24gaXMgY2FsbGVkIGJ5IHRoZSBpbnRlcnByZXRlciB0byBleHBlbGwgcmVtYWluaW5nCisJdXNlcnMgZnJvbSB0aGUgc3lzdGVtIG9uIHNodXRkb3duIGluIGEgcG9saXRlIHdheS4gSWYgdGhpcworCWZ1bmN0aW9ucyBmYWlscyB0byBxdWl0L2Rlc3RydWN0IHRoZSB1c2VyLCBoZSB3aWxsIGJlCisJZGVzdHJ1Y3RlZCB0aGUgaGFyZCB3YXkgYnkgdGhlIGludGVycHJldGVyLgorCisJVGhpcyBmdW5jdGlvbiBtdXN0IG5vdCBjYXVzZSBydW50aW1lIGVycm9ycy4KKworU0VFIEFMU08KKwlyZW1vdmVfaW50ZXJhY3RpdmUoRSksIHNsb3dfc2h1dF9kb3duKE0pCmRpZmYgLS1naXQgYS9kb2MvbWFzdGVyL3JldHJpZXZlX2VkX3NldHVwIGIvZG9jL21hc3Rlci9yZXRyaWV2ZV9lZF9zZXR1cApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi40ZDkyZWYwCi0tLSAvZGV2L251bGwKKysrIGIvZG9jL21hc3Rlci9yZXRyaWV2ZV9lZF9zZXR1cApAQCAtMCwwICsxLDkgQEAKK1NZTk9QU0lTCisJaW50IHJldHJpZXZlX2VkX3NldHVwKG9iamVjdCBjb21tYW5kX2dpdmVyKQorCitERVNDUklQVElPTgorCVNob3VsZCByZXR1cm4gYW4gaW50ZWdlciB0aGF0IGdpdmVzIHRoZSBlZCBzZXR1cCBmbGFncyBmb3IgdGhlCisJdXNlciB0aGF0IGlzIGRlbm90ZWQgYnkgY29tbWFuZF9naXZlci4KKworU0VFIEFMU08KKwlzYXZlX2VkX3NldHVwKE0pCmRpZmYgLS1naXQgYS9kb2MvbWFzdGVyL3J1bnRpbWVfZXJyb3IgYi9kb2MvbWFzdGVyL3J1bnRpbWVfZXJyb3IKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZDEwOWRmOAotLS0gL2Rldi9udWxsCisrKyBiL2RvYy9tYXN0ZXIvcnVudGltZV9lcnJvcgpAQCAtMCwwICsxLDE2IEBACitTWU5PUFNJUworCXZvaWQgcnVudGltZV9lcnJvcihzdHJpbmcgZXJyLCBzdHJpbmcgcHJnLCBzdHJpbmcgY3Vyb2JqLCBpbnQgbGluZSkKKworREVTQ1JJUFRJT04KKwlUaGlzIGZ1bmN0aW9uIGhhcyB0byBhbm5vdW5jZSBhIHJ1bnRpbWUgZXJyb3IgdG8gdGhlIGFjdGl2ZQorCXVzZXIuIElmIHRoZSB1c2VyIGhhcyBlbm91Z2ggcHJpdmlsZWdlcywgaXQgbWlnaHQgZ2l2ZSBoaW0gdGhlCisJZnVsbCBlcnJvciBtZXNzYWdlIHRvZ2V0aGVyIHdpdGggdGhlIHNvdXJjZSBsaW5lLiBFbHNlIGl0CisJc2hvdWxkIGlzc3VlIGEgZGVjZW50IG1lc3NhZ2UgKCJZb3VyIHNlbnNpdGl2ZSBtaW5kIG5vdGljZXMgYQorCXdyb25nbmVzcyBpbiB0aGUgZmFicmljIG9mIHNwYWNlIikuCisKKwlOb3RlIHRoYXQgcHJnIGRlbm90ZXMgdGhlIHByb2dyYW0gYWN0dWFsbHkgZXhlY3V0ZWQgKHdoaWNoCisJbWlnaHQgYmUgYW4gaW5oZXJpdGVkIG9uZSkgd2hlcmVhcyBjdXJvYmogaXMganVzdCB0aGUKKwlvZmZlbmRpbmcgb2JqZWN0LgorCitTRUUgQUxTTworCWxvZ19lcnJvcihNKSwgaGVhcnRfYmVhdF9lcnJvcihNKSwgcmFpc2VfZXJyb3IoRSkKZGlmZiAtLWdpdCBhL2RvYy9tYXN0ZXIvcnVudGltZV93YXJuaW5nIGIvZG9jL21hc3Rlci9ydW50aW1lX3dhcm5pbmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uODA4NjRhYgotLS0gL2Rldi9udWxsCisrKyBiL2RvYy9tYXN0ZXIvcnVudGltZV93YXJuaW5nCkBAIC0wLDAgKzEsMjcgQEAKK1NZTk9QU0lTCisgICAgICAgIHZvaWQgcnVudGltZV93YXJuaW5nKCBzdHJpbmcgbXNnLCBzdHJpbmcgY3Vyb2JqLCBzdHJpbmcgcHJvZywgaW50IGxpbmUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAsIGludCBpbnNpZGVfY2F0Y2gpCisKK0RFU0NSSVBUSU9OCisgICAgICAgIFRoaXMgZnVuY3Rpb24gaXMgY2FsbGVkIHRvIGxldCB0aGUgbXVkbGliIGhhbmRsZSBhIHJ1bnRpbWUgd2FybmluZywKKyAgICAgICAgZS5nLiBieSBsb2dnaW5nIGl0IGludG8gYSBkYXRhYmFzZS4KKworICAgICAgICA8bXNnPiBpcyB0aGUgd2FybmluZyBtZXNzYWdlLgorICAgICAgICA8Y3Vyb2JqPiBpcyB0aGUgbmFtZSBvZiB0aGUgY3VycmVudCBvYmplY3Qgd2hpY2ggY2F1c2VkIHRoZSBtZXNzYWdlCisgICAgICAgICAgICAgICh0aGUgb2JqZWN0IGl0c2VsZiBtaWdodCBhbHJlYWR5IGJlIGRlc3RydWN0ZWQpLCBvciAwIGlmIHRoZXJlCisgICAgICAgICAgICAgIGlzIG5vbmUuCisgICAgICAgIDxwcm9nPiwgPGxpbmU+IGRldGVybWluZSB0aGUgbmFtZSBvZiB0aGUgcHJvZ3JhbSBhbmQgdGhlIGxpbmUgd2hlcmUKKyAgICAgICAgICAgICAgdGhlIGVycm9yIG9jY3VyZWQgaWYgdGhlIGN1cnJlbnQgb2JqZWN0IGV4aXN0cywgb3RoZXJ3aXNlCisgICAgICAgICAgICAgIHRoZXkgYXJlIDAuCisgICAgICAgIDxpbnNpZGVfY2F0Y2g+IDogIT0gMCBpZiB0aGUgd2FybmluZyBvY2N1cnMgaW5zaWRlIGEgY2F0Y2goKS4KKworICAgICAgICBUaGUgZHJpdmVyIGlzIGxpbWl0ZWQgdG8gdGhyZWUgbmVzdGVkIHdhcm5pbmdzLCB0byBwcmV2ZW50CisgICAgICAgIGFuIGVuZGxlc3MgcmVjdXJzaW9uIGluIGNhc2UgcnVudGltZV93YXJuaW5nKCkgaXRzZWxmIGNhdXNlcworICAgICAgICB3YXJuaW5ncy4KKworSElTVE9SWQorICAgICAgICBJbnRyb2R1Y2VkIGluIExETXVkIDMuMy41NTEuCisgICAgICAgIExETXVkIDMuMy43MDUgYWRkZWQgdGhlIDxpbnNpZGVfY2F0Y2g+IGFyZ3VtZW50LgorCitTRUUgQUxTTworICAgICAgICBydW50aW1lX2Vycm9yKE0pCmRpZmYgLS1naXQgYS9kb2MvbWFzdGVyL3NhdmVfZWRfc2V0dXAgYi9kb2MvbWFzdGVyL3NhdmVfZWRfc2V0dXAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZmVhYWY3MQotLS0gL2Rldi9udWxsCisrKyBiL2RvYy9tYXN0ZXIvc2F2ZV9lZF9zZXR1cApAQCAtMCwwICsxLDMzIEBACitTWU5PUFNJUworCWludCBzYXZlX2VkX3NldHVwKG9iamVjdCB3aG8sIGludCBjb2RlKQorCitERVNDUklQVElPTgorCVNhdmUgaW5kaXZpZHVhbCBvcHRpb24gc2V0dGluZ3Mgb2YgdGhlIGJ1aWx0aW4gZWQsIGVuY29kZWQKKwlpbnRvIGNvZGUsIGZvciB0aGUgdXNlciBkZW5vdGVkIGJ5IHdoby4gVGhlc2UgZnVuY3Rpb25zIGFyZQorCWxvY2F0ZWQgaW4gdGhlIG1hc3RlciBvYmplY3Qgc28gdGhhdCB0aGUgbG9jYWwgZ29kcyBjYW4gZGVjaWRlCisJd2hhdCBzdHJhdGVneSB0aGV5IHdhbnQgdG8gdXNlLiBzdWdnZXN0aW9uczoKKwlBIHNldHVwIGZpbGUgZm9yIGV2ZXJ5IHVzZXIuCisJCWFkdmFudGFnZXM6CXRyYW5zcGFyZW50IHRvIHRoZSB1c2VyCisJCQkJaW5kZXBlbmRlbnQgb2YgdXNlciBjb3VudAorCQlkaXNhZHZhbnRhZ2U6CWV4dHJhIGZpbGUgYWNjZXNzIGF0IGVkIGludm9jYXRpb24KKwlBbiBhcnJheSBpbiB0aGUgbWFzdGVyIG9iamVjdCwgdXNlcnMgYXJlIHNlYXJjaGVkIGJ5IG1lbWJlcl9hcnJheQorCQlhZHZhbnRhZ2U6CWVhc3kgdG8gaW1wbGVtZW50CisJCWRpc2FkdmFudGFnZToJcGVyZm9ybWFuY2UgZGVncmFkYXRpb24gd2l0aCBoaWdoIHVzZXIgY291bnRzCisJQW4gQVZMLXRyZWUgdG8gYWNjZXNzIHVzZXJzIGJ5IG5hbWUKKwkJYWR2YW50YWdlOgljYW4gZml0IGFueSBuZWVkCisJCWRpc2FkdmFudGFnZToJaGFyZCB0byBpbXBsZW1lbnQsIHdpbGwgbmVlZCBtb3JlCisJCQkJb3ZlcmhlYWQgb24gc21hbGwgYW5kIG1lZGl1bQorCQkJCWluc3RhbGxhdGlvbnMgdGhhbiBpdCBjYW4gZXZlciBtYWtlCisJCQkJZ29vZCBieSBsZyh1c2VyY291bnQpIGNvbXBsZXhpdHkKKwlEZWRpY2F0ZWQgZmxhZ3MgaW4gZXZlcnkgdXNlciBvYmplY3QuCisJCWFkdmFudGFnZXM6CWVhc3kgdG8gaW1wbGVtZW50CisJCQkJaW5kZXBlbmRlbnQgb2YgdXNlciBjb3VudAorCQkJCVdpbGwgYWxzbyB3b3JrIGZvciBudXNlcnMgdy9vIGZpbGUKKwkJCQlhY2Nlc3MgcHJpdmlsZWdlcy4KKwkJZGlzYWR2YW50YWdlOgljYXJlIGhhcyB0byBiZSB0YWtlbiB0byBhdm9pZAorCQkJCWNvbGxpc2lvbiB3aXRoIG90aGVyIHVzZXMgb2YgdGhlIGZsYWdzCisJCQkJaW4gdGhlIHVzZXIgb2JqZWN0CisKK1NFRSBBTFNPCisJZWQoRSksIHJldHJpZXZlX2VkX3NldHVwKE0pLCB2YWxpZF93cml0ZShNKSwKKwlnZXRfZWRfYnVmZmVyX3NhdmVfb2JqZWN0X25hbWUoTSkKZGlmZiAtLWdpdCBhL2RvYy9tYXN0ZXIvc2xvd19zaHV0X2Rvd24gYi9kb2MvbWFzdGVyL3Nsb3dfc2h1dF9kb3duCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjlhN2ZlOGQKLS0tIC9kZXYvbnVsbAorKysgYi9kb2MvbWFzdGVyL3Nsb3dfc2h1dF9kb3duCkBAIC0wLDAgKzEsNDAgQEAKK1NZTk9QU0lTCisJdm9pZCBzbG93X3NodXRfZG93bihpbnQgbWludXRlcykKKworREVTQ1JJUFRJT04KKwlTY2hlZHVsZSBhIHNodXRkb3duIGZvciB0aGUgbmVhciBmdXR1cmUuIG1pbnV0ZXMgaXMgdGhlCisJZGVzaXJlZCB0aW1lIGluIG1pbnV0ZXMgdGlsbCB0aGUgc2h1dGRvd246CisJIHNpeCwgaWYganVzdCB0aGUgdXNlciByZXNlcnZlIGhhcyBiZWVuIHB1dCBpbnRvIHVzZS4KKwkgb25lLCBpZiB0aGUgKHNtYWxsZXIpIG1hc3RlciByZXNlcnZlIGhhcyBiZWVuIHB1dCBpbnRvIHVzZSBhcworCSAgICAgIHdlbGwuCisKKwlUaGUgaW50ZXJwcmV0ZXIgY2FsbHMgdGhpcyBmdW5jdGlvbiB3aGVuIGl0IHJ1bnMgbG93IG9uCisJbWVtb3J5LiBBdCB0aGlzIHRpbWUsIGl0IGhhcyBmcmVlZCBpdHMgcmVzZXJ2ZSwgYnV0IHNpbmNlIGl0CisJd29uJ3QgbGFzdCBsb25nLCB0aGUgaW50ZXJwcmV0ZXIgbmVlZHMgdG8gYmUgc2h1dCBkb3duLiBUaGUKKwlkZWxheSBpcyB0byBnaXZlIHRoZSB1c2VycyB0aGUgb3Bwb3J0dW5pdHkgdG8gZmluaXNoIHRoZWlyCisJY3VycmVudCB0YXNrcywgYnV0IGRvbid0IHRha2UgdGhlICdtaW51dGVzJyBmb3IgZ3JhbnRlZCwganVzdAorCWRlZHVjZSB0aGUgdXJnZW5jeSBmcm9tIGl0LiAKKwlJdCBpcyBwb3NzaWJsZSB0aGF0IHRoZSBkcml2ZXIgbWF5IHJlYWxsb2NhdGUgc29tZSBtZW1vcnkKKwlhZnRlciB0aGUgZnVuY3Rpb24gaGFzIGJlZW4gY2FsbGVkLCBhbmQgdGhlbiBydW4gYWdhaW4gaW50byBhCisJbG93IG1lbW9yeSBzaXR1YXRpb24sIGNhbGxpbmcgdGhpcyBmdW5jdGlvbiBhZ2Fpbi4KKwlUaGlzIGZ1bmN0aW9uIG1pZ2h0IGxvYWQgYW4gJ0FybWFnZWRkb24nIG9iamVjdCBhbmQgdGVsbCBpdAorCXdoYXQgdG8gZG8uIEl0IGlzIHRoZSBBcm1hZ2VkZG9uIG9iamVjdCB0aGVuIHdoaWNoIHBlcmZvcm1zCisJdGhlIHNodXRkb3duLgorCisJVGVjaG5pY2FsOiBUaGUgbWVtb3J5IGhhbmRsaW5nIG9mIHRoZSBpbnRlcnByZXRlciBpbmNsdWRlcworCXRocmVlIHJlc2VydmVkIGFyZWFzOiB1c2VyLCBzeXN0ZW0gYW5kIG1hc3Rlci4gQWxsIHRocmVlIGFyZQorCXRoZXJlIHRvIGluc3VyZSB0aGF0IHRoZSBzeXN0ZW0gc2h1dHMgZG93biBncmFjZWZ1bGx5IHdoZW4gdGhlCisJbWVtb3J5IHJ1bnMgb3V0OiB0aGUgdXNlciBhcmVhIHRvIGdpdmUgdGhlIHVzZXJzIHRpbWUgdG8KKwlxdWl0IG5vcm1hbGx5LCB0aGUgb3RoZXJzIHRvIGVuYWJsZSBlbWVyZ2VuY3ktbG9nb3V0cyB3aGVuIHRoZQorCXVzZXIgcmVzZXJ2ZSBpcyB1c2VkIHVwIGFzIHdlbGwuCisJVGhlIGFyZWFzIGFyZSBhbGxvY2F0ZWQgYXQgc3RhcnQgb2YgdGhlIGludGVycHJldGVyLCBhbmQKKwlyZWxlYXNlZCB3aGVuIG5vIG1vcmUgbWVtb3J5IGNvdWxkIGJlIG9idGFpbmVkIGZyb20gdGhlIGhvc3QuCisJSW4gc3VjaCBhIGNhc2UsIG9uZSBvZiB0aGUgcmVtYWluaW5nIGFyZWFzIGlzIGZyZWVkIChzbyB0aGUKKwlvcGVyYXRpb24gY2FuIGNvbnRpbnVlIGEgc2hvcnQgd2hpbGUpIGFuZCBhIGdhcmJhZ2UgY29sbGVjdGlvbgorCWlzIGluaXRpYXRlZC4gSWYgdGhlIGdhcmJhZ2UgY29sbGVjdGlvbiByZWN5Y2xlcyBlbm91Z2ggbWVtb3J5CisJKGVpdGhlciB0cnVlIGdhcmJhZ2Ugb3IgYnkgdGhlIGFpZCBvZiB0aGUgcXVvdGFfZGVtb24pIHRvCisJcmVhbGxvY2F0ZSB0aGUgYXJlYXMsIGFsbCBpcyBmaW5lLCBlbHNlIHRoZSBzeXN0ZW0gc2h1dCBkb3duCisJaXMgaW52b2tlZCBieSBhIGNhbGwgdG8gdGhpcyBmdW5jdGlvbi4gCisKK1NFRSBBTFNPCisJcXVvdGFfZGVtb24oTSksIG5vdGlmeV9zaHV0ZG93bihNKSwgc2h1dGRvd24oRSksIG1hbGxvYyhEKSwgbWVtb3J5KEMpCmRpZmYgLS1naXQgYS9kb2MvbWFzdGVyL3N0YWxlX2VycSBiL2RvYy9tYXN0ZXIvc3RhbGVfZXJxCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmEwNWNhMzEKLS0tIC9kZXYvbnVsbAorKysgYi9kb2MvbWFzdGVyL3N0YWxlX2VycQpAQCAtMCwwICsxLDE3IEBACitTWU5PUFNJUworCXZvaWQgc3RhbGVfZXJxIChjbG9zdXJlIGNhbGxiYWNrKQorCitERVNDUklQVElPTgorCU5vdGlmeSB0aGUgbG9zcyBvZiB0aGUgZXJxIGRlbW9uLgorCUFyZ3VtZW50IGlzIHRoZSBjYWxsYmFjayBjbG9zdXJlIHNldCBmb3IgYW4gZXJxIHJlcXVlc3QuCisKKwlJZiB0aGUgZXJxIGNvbm5lY3Rpb24gZGllcyBwcmVtYXR1cmVseSwgdGhlIGRyaXZlciB3aWxsIGNhbGwKKwl0aGlzIGxmdW4gZm9yIGV2ZXJ5IHBlbmRpbmcgcmVxdWVzdCB3aXRoIHNldCBjYWxsYmFjay4gVGhpcworCWZ1bmN0aW9uIHNob3VsZCBub3RpZnkgdGhlIG9yaWdpbmF0aW5nIG9iamVjdCB0aGF0IHRoZSBhbnN3ZXIKKwl3aWxsIG5ldmVyIGFycml2ZS4gCisKK0hJU1RPUlkKKwlJbnRyb2R1Y2VkIGluIDMuMi4xQDYxLgorCitTRUUgQUxTTworCWVycShDKQpkaWZmIC0tZ2l0IGEvZG9jL21hc3Rlci92YWxpZF9leGVjIGIvZG9jL21hc3Rlci92YWxpZF9leGVjCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjJjMGI2N2IKLS0tIC9kZXYvbnVsbAorKysgYi9kb2MvbWFzdGVyL3ZhbGlkX2V4ZWMKQEAgLTAsMCArMSwxNSBAQAorU1lOT1BTSVMKKwlpbnQgdmFsaWRfZXhlYyhzdHJpbmcgbmFtZSwgb2JqZWN0IG9iLCBvYmplY3Qgb2Jmcm9tKQorCitERVNDUklQVElPTgorCVZhbGlkYXRlIHRoZSByZWJpbmRpbmcgb2YgYW4gSVAgY29ubmVjdGlvbiBieSB1c2FnZSBvZiBlZnVuCisJZXhlYygpLiBBcmd1bWVudHMgYXJlIHRoZSA8bmFtZT4gb2YgdGhlIF9wcm9ncmFtXyBhdHRlbXB0aW5nCisJdG8gcmViaW5kIHRoZSBjb25uZWN0aW9uLCB0aGUgb2JqZWN0IDxvYj4gdG8gcmVjZWl2ZSB0aGUKKwljb25uZWN0aW9uLCBhbmQgdGhlIG9iamVjdCA8b2Jmcm9tPiBnaXZpbmcgdGhlIGNvbm5lY3Rpb24uCisJTm90ZSB0aGF0IHRoZSBwcm9ncmFtIG5hbWUgaXMgbm90IHRoZSBvYmplY3RfbmFtZSgpIG9mIHRoZQorCW9iamVjdCwgYW5kIGhhcyBubyBsZWFkaW5nIHNsYXNoLgorCisJUmV0dXJuIDAgdG8gZGlzYWxsb3cgdGhlIGFjdGlvbiwgYW55IG90aGVyIHZhbHVlIHRvIGFsbG93IGl0LgorCitTRUUgQUxTTworCWV4ZWMoRSkKZGlmZiAtLWdpdCBhL2RvYy9tYXN0ZXIvdmFsaWRfcXVlcnlfc25vb3AgYi9kb2MvbWFzdGVyL3ZhbGlkX3F1ZXJ5X3Nub29wCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmU5MjM3OGEKLS0tIC9kZXYvbnVsbAorKysgYi9kb2MvbWFzdGVyL3ZhbGlkX3F1ZXJ5X3Nub29wCkBAIC0wLDAgKzEsMTIgQEAKK1NZTk9QU0lTCisJdmFsaWRfcXVlcnlfc25vb3Aob2JqZWN0IG9iKQorCitERVNDUklQVElPTgorCVNob3VsZCByZXR1cm4gMSBpZiBwcmV2aW91c19vYmplY3QoKSAodGhlIG9uZSB0aGF0IGNhbGxlZCB0aGUKKwllZnVuIHF1ZXJ5X3Nub29wKCkpIGlzIGFsbG93ZWQgdG8gcXVlcnkgd2V0aGVyIG9iIGlzIGJlaW5nCisJc25vb3BlZCwgMCBpZiBub3QuCisKKwlUaGUgbWFzdGVyIG9iamVjdCBpcyBhbHdheXMgYWxsb3dlZCB0byB1c2UgcXVlcnlfc25vb3AoKS4KKworU0VFIEFMU08KKwl2YWxpZF9zbm9vcChNKSwgcXVlcnlfc25vb3AoRSksIHNub29wKEUpCmRpZmYgLS1naXQgYS9kb2MvbWFzdGVyL3ZhbGlkX3JlYWQgYi9kb2MvbWFzdGVyL3ZhbGlkX3JlYWQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMmRhZmJhZQotLS0gL2Rldi9udWxsCisrKyBiL2RvYy9tYXN0ZXIvdmFsaWRfcmVhZApAQCAtMCwwICsxLDMyIEBACitTWU5PUFNJUworCXN0cmluZyB2YWxpZF9yZWFkKHN0cmluZyBwYXRoLCBzdHJpbmcgdWlkLCBzdHJpbmcgZnVuYywgb2JqZWN0IG9iKQorCitERVNDUklQVElPTgorCVRoaXMgZnVuY3Rpb24gaXMgY2FsbGVkIHRvIGNoZWNrIGlmIHRoZSBvYmplY3Qgb2Igd2l0aCB0aGUKKwl1c2VyLWlkIHVpZCBoYXMgcmVhZCBwZXJtaXNzaW9ucyBmb3IgdGhlIGZpbGUgZ2l2ZW4gYnkgcGF0aAorCWZvciB0aGUgb3BlcmF0aW9uIG5hbWVkIGJ5IGZ1bmMuIEl0IHNob3VsZCByZXR1cm4gMCBpZgorCXBlcm1pc3Npb24gaXMgZGVuaWVkLCBvciB0aGUgbm9ybWFsaXplZCBwYXRoIGlmIHBlcm1pc3Npb24gaXMKKwlncmFudGVkLiBZb3UgY2FuIGFsc28gcmV0dXJuIDEgdG8gaW5kaWNhdGUgdGhhdCB0aGUgcGF0aCBjYW4KKwliZSB1c2VkIHVuY2hhbmdlZC4KKworCVRoZSByZXR1cm5lZCBwYXRobmFtZSBtdXN0IG5vdCBjb250YWluIGBgLi4nJywgYSBsZWFkaW5nIC8KKwl3aWxsIGJlIHN0cmlwcGVkIGJ5IHRoZSBpbnRlcnByZXRlci4KKworCUZ1bmMgZGVub3RlcyB0aGUgZWZ1biBjYWxsIG9yIG90aGVyIG9wZXJhdGlvbiB0aGF0IGNhdXNlZAorCXZhbGlkX3JlYWQoKSB0byBiZSBjYWxsZWQ6CisJZWRfc3RhcnQgKGNoZWNrIGlmIHRoZSBmaWxlIHRvIGJlIGVkaXRlZCBpcyByZWFkYWJsZSksCisJZmlsZV9zaXplLAorCWdldF9kaXIsCisJcHJpbnRfZmlsZSAoZWZ1biBjYXQoKSksCisJcmVhZF9ieXRlcywKKwlyZWFkX2ZpbGUsCisJcmVzdG9yZV9vYmplY3QsCisJdGFpbC4KKworCU5vdGUgdGhhdCB0aGlzIGZ1bmN0aW9uIGlzIGNhbGxlZCBpbiBjb21wYXQgbW9kZSBhcyB3ZWxsLiBJZgorCXlvdSBuZWVkIHRvIGJlIGNvbXBhdGlibGUgd2l0aCB0aGUgb2xkIDIuNC41LW11ZGxpYiwgcmVkaXJlY3QKKwl0aGVzZSBjYWxscyB0byB0aGUgdmFsaWRfcmVhZC92YWxpZF93cml0ZSBpbiB0aGUgdXNlcgorCW9iamVjdC4KKworU0VFIEFMU08KKwl2YWxpZF93cml0ZShNKSwgbWFrZV9wYXRoX2Fic29sdXRlKE0pCmRpZmYgLS1naXQgYS9kb2MvbWFzdGVyL3ZhbGlkX3NldGV1aWQgYi9kb2MvbWFzdGVyL3ZhbGlkX3NldGV1aWQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uM2FmYzBkMgotLS0gL2Rldi9udWxsCisrKyBiL2RvYy9tYXN0ZXIvdmFsaWRfc2V0ZXVpZApAQCAtMCwwICsxLDkgQEAKK1NZTk9QU0lTCisJaW50IHZhbGlkX3NldGV1aWQob2JqZWN0IG9iLCBzdHJpbmcgbmV3aWQpCisKK0RFU0NSSVBUSU9OCisJU2hvdWxkIHJldHVybiAxIGlmIG9iIGlzIGFsbG93ZWQgdG8gc2V0IGl0cyBldWlkIHRvIG5ld2lkLgorCU9iamVjdHMgYXJlIGFsd2F5cyBhbGxvd2VkIHRvIHNldCB0aGVpciBldWlkIHRvIDAuCisKK1NFRSBBTFNPCisJc2V0ZXVpZChFKSwgdWlkcyhDKQpkaWZmIC0tZ2l0IGEvZG9jL21hc3Rlci92YWxpZF9zbm9vcCBiL2RvYy9tYXN0ZXIvdmFsaWRfc25vb3AKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNWJmZjk4NwotLS0gL2Rldi9udWxsCisrKyBiL2RvYy9tYXN0ZXIvdmFsaWRfc25vb3AKQEAgLTAsMCArMSw4IEBACitTWU5PUFNJUworCWludCB2YWxpZF9zbm9vcChvYmplY3QgbWUsIG9iamVjdCB5b3UpCisKK0RFU0NSSVBUSU9OCisJU2hvdWxkIHJldHVybiAxIGlmIG1lIGlzIGFsbG93ZWQgdG8gc25vb3AgeW91LCAwIGlmIG5vdC4KKworU0VFIEFMU08KKwlzbm9vcChFKSwgcXVlcnlfc25vb3AoRSksIHZhbGlkX3F1ZXJ5X3Nub29wKE0pCmRpZmYgLS1naXQgYS9kb2MvbWFzdGVyL3ZhbGlkX3dyaXRlIGIvZG9jL21hc3Rlci92YWxpZF93cml0ZQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4zMWZlNDNiCi0tLSAvZGV2L251bGwKKysrIGIvZG9jL21hc3Rlci92YWxpZF93cml0ZQpAQCAtMCwwICsxLDMzIEBACitTWU5PUFNJUworCXN0cmluZyB2YWxpZF93cml0ZShzdHJpbmcgcGF0aCwgc3RyaW5nIHVpZCwgc3RyaW5nIGZ1bmMsIG9iamVjdCBvYikKKworREVTQ1JJUFRJT04KKwlUaGlzIGZ1bmN0aW9uIGlzIGNhbGxlZCB0byBjaGVjayBpZiB0aGUgb2JqZWN0IG9iIHdpdGggdGhlCisJdXNlci1pZCB1aWQgaGFzIHdyaXRlIHBlcm1pc3Npb25zIHRvIHRoZSBmaWxlIGdpdmVuIGJ5IHBhdGgKKwlmb3IgdGhlIG9wZXJhdGlvbiBuYW1lZCBieSBmdW5jLiBJdCBzaG91bGQgcmV0dXJuIDAgaWYKKwlwZXJtaXNzaW9uIGlzIGRlbmllZCwgb3IgdGhlIG5vcm1hbGl6ZWQgcGF0aCBpZiBwZXJtaXNzaW9uIGlzCisJZ3JhbnRlZC4gWW91IGNhbiBhbHNvIHJldHVybiAxIHRvIGluZGljYXRlIHRoYXQgdGhlIHBhdGggY2FuCisJYmUgdXNlZCB1bmNoYW5nZWQuCisKKwlUaGUgcmV0dXJuZWQgcGF0aG5hbWUgbXVzdCBub3QgY29udGFpbiBgYC4uJycsIGEgbGVhZGluZyAvCisJd2lsbCBiZSBzdHJpcHBlZCBieSB0aGUgaW50ZXJwcmV0ZXIuCisKKwlGdW5jIGRlbm90ZXMgdGhlIGVmdW4gY2FsbCBvciBvdGhlciBvcGVyYXRpb24gdGhhdCBjYXVzZWQKKwl2YWxpZF93cml0ZSgpIHRvIGJlIGNhbGxlZDoKKwljaW5kZW50LAorCWRvX3JlbmFtZSAoZWZ1biByZW5hbWUoKSwgZm9yIHRoZSBvbGQgYW5kIHRoZW4gZm9yIHRoZSBuZXcgbmFtZSksCisJZWRfc3RhcnQgKHdoZW5ldmVyIHRoZSBidWlsdGluIGVkIHRyaWVzIHRvIHdyaXRlIHRvIGEgZmlsZSksCisJbWtkaXIsCisJcmVtb3ZlX2ZpbGUgKGVmdW4gcm0oKSksCisJcm1kaXIsCisJc2F2ZV9vYmplY3QsCisJd3JpdGVfYnl0ZXMsCisJd3JpdGVfZmlsZS4KKworCU5vdGUgdGhhdCB0aGlzIGZ1bmN0aW9uIGlzIGNhbGxlZCBpbiBjb21wYXQgbW9kZSBhcyB3ZWxsLiBJZgorCXlvdSBuZWVkIHRvIGJlIGNvbXBhdGlibGUgd2l0aCB0aGUgb2xkIDIuNC41LW11ZGxpYiwgcmVkaXJlY3QKKwl0aGVzZSBjYWxscyB0byB0aGUgdmFsaWRfcmVhZC92YWxpZF93cml0ZSBpbiB0aGUgdXNlcgorCW9iamVjdC4KKworU0VFIEFMU08KKwl2YWxpZF9yZWFkKE0pLCBtYWtlX3BhdGhfYWJzb2x1dGUoTSkKZGlmZiAtLWdpdCBhL2RvYy9tYXRlcmlhbHMvTWF0REIgYi9kb2MvbWF0ZXJpYWxzL01hdERCCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjY1MzY1ODUKLS0tIC9kZXYvbnVsbAorKysgYi9kb2MvbWF0ZXJpYWxzL01hdERCCkBAIC0wLDAgKzEsNDIgQEAKK0RlciBNYXN0ZXIgaGF0IChlcnN0bWFsKSBrZWluIEFkZE1hdGVyaWFsIG1laHIuIE5ldWUgTWF0ZXJpYWxpZW4gd2VyZGVuIGpldHp0CitnYW56IGVpbmZhY2ggZHVyY2ggZWluZSBuZXVlIERhdGVpIGltIFZlcnplaWNobmlzIG1pdCBkZW4gTWF0ZXJpYWxpZW4gdW5kIGRlbgorQXVmcnVmIGRlciBVcGRhdGUoKS1GdW5rdGlvbiBpbiBkZXIgRGF0ZW5iYW5rIGVyemV1Z3QuIERhcyBnbGVpY2hlIGdpbHQgZnVlcgorbmV1ZSBNYXRlcmlhbGdydXBwZW4uCitOYWNoIGVpbmVtIFVwZGF0ZSBzb2xsdGUgbWFuIGRlbiBNYXRlcmlhbGhlYWRlciB1bmQgZGllIERva3UgbmV1IGdlbmVyaWVyZW4KK3VuZCBlaW5zcGllbGVuLCBkYW1pdCBhbGxlcyBzY2hvZW4ga29uc2lzdGVudCBibGVpYnQgKGFuZGVycyBhbHMgYmlzaGVyKS4KK0RhcyBGb3JtYXQgZGVyIE1hdGVyaWFsZGF0ZWllbiBzY2hhdXQgbWFuIHNpY2ggYW0gYmVzdGVuIGFtIEJlaXNwaWVsIGFuLgorCitEaWUgYWx0ZW4gRnVua3Rpb25lbiBkZXMgTWFzdGVycyBleGlzdGllcmVuIHdlaXRlcmhpbi4gRXMgZ2lidCBlaW4gcGFhciBuZXVlLAordW0gYWJoYWVuZ2lnZSBGaWxlcyB6dSBlcnpldWdlbiB1bmQgZGllIERhdGVuYmFuayBuZXUgYXVmenViYXVlbjoKKworLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCit2b2lkIFVwZGF0ZSgpCisKK0VybmV1dGVzIEVpbmxlc2VuIGRlciBNYXRlcmlhbGRhdGVuLiBEYXMgRWlubGVzZW4gcGFzc2llcnQgYXN5bmNocm9uLCBmYWxscyBlcworenUgbGFuZ2UgZGF1ZXJ0LiBOYWNoIEFic2NobHVzcyBkZXMgRWlubGVzZW5zIHdlcmRlbiBkaWUgbmV1ZW4gRGF0ZW4gYWt0aXYuCisKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKwordmFyZ2FyZ3Mgdm9pZCBHZW5NYXRMaXN0KHN0cmluZyBmaWxlbmFtZSkKKworR2VuZXJpZXJ0IERhdGVpIG1pdCByZWdpc3RyaWVydGVuIE1hdGVyaWFsaWVuIGZ1ZXIgZGllIERva3VtZW50YXRpb24uIEZhbGxzCitrZWluIERhdGVpbmFtZSBhbmdlZ2ViZW4gd2lyZCwgd2lyZCAibWF0ZXJpYWxsaXN0ZSIgdmVyd2VuZGV0LgorCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK3ZhcmdhcmdzIHZvaWQgR2VuTWF0R3JvdXBMaXN0KHN0cmluZyBmaWxlbmFtZSkKKworR2VuZXJpZXJ0IERhdGVpIG1pdCByZWdpc3RyaWVydGVuIE1hdGVyaWFsZ3J1cHBlbiBmdWVyIGRpZQorRG9rdW1lbnRhdGlvbi4gRmFsbHMga2VpbiBEYXRlaW5hbWUgYW5nZWdlYmVuIHdpcmQsIHdpcmQgIm1hdGVyaWFsZ3J1cHBlbiIKK3ZlcndlbmRldC4KKworLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCit2YXJnYXJncyB2b2lkIEdlbkhlYWRlckZpbGUoc3RyaW5nIGZpbGVuYW1lKQorCitHZW5lcmllcnQgRGF0ZWkgbWl0IERlZmluaXRpb25lbiBkZXIgbW9lZ2xpY2hlbiBNYXRlcmlhbGllbiB1bmQgR3J1cHBlbi4gRGVyCitJbmhhbHQgZW50c3ByaWNodCBkZXIgYmlzaGVyaWdlbiAvc3lzL3RoaW5nL21hdGVyaWFsLmguICBXZW5uIGtlaW4gRGF0ZWluYW1lCithbmdlZ2ViZW4gd2lyZCwgd2lyZCAibWF0ZXJpYWwuaCIgdmVyd2VuZGV0LgorCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZG9jL21hdGVyaWFscy9ncm91cHMvTUFUR1JPVVBfQUNJRElDIGIvZG9jL21hdGVyaWFscy9ncm91cHMvTUFUR1JPVVBfQUNJRElDCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmJjZmI4ZTcKLS0tIC9kZXYvbnVsbAorKysgYi9kb2MvbWF0ZXJpYWxzL2dyb3Vwcy9NQVRHUk9VUF9BQ0lESUMKQEAgLTAsMCArMSw1IEBACitHcnVwcGVuaWQ6CitNQVRHUk9VUF9BQ0lESUMKKworTmFtZToKK1NhZXVyZW4KZGlmZiAtLWdpdCBhL2RvYy9tYXRlcmlhbHMvZ3JvdXBzL01BVEdST1VQX0JBU0lDIGIvZG9jL21hdGVyaWFscy9ncm91cHMvTUFUR1JPVVBfQkFTSUMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNWQ1YjIwOAotLS0gL2Rldi9udWxsCisrKyBiL2RvYy9tYXRlcmlhbHMvZ3JvdXBzL01BVEdST1VQX0JBU0lDCkBAIC0wLDAgKzEsNSBAQAorR3J1cHBlbmlkOgorTUFUR1JPVVBfQkFTSUMKKworTmFtZToKK0xhdWdlbgpkaWZmIC0tZ2l0IGEvZG9jL21hdGVyaWFscy9ncm91cHMvTUFUR1JPVVBfQklPIGIvZG9jL21hdGVyaWFscy9ncm91cHMvTUFUR1JPVVBfQklPCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmI0ZmY4OTkKLS0tIC9kZXYvbnVsbAorKysgYi9kb2MvbWF0ZXJpYWxzL2dyb3Vwcy9NQVRHUk9VUF9CSU8KQEAgLTAsMCArMSw1IEBACitHcnVwcGVuaWQ6CitNQVRHUk9VUF9CSU8KKworTmFtZToKK2Jpb2xvZ2lzY2hlIE1hdGVyaWFsaWVuCmRpZmYgLS1naXQgYS9kb2MvbWF0ZXJpYWxzL2dyb3Vwcy9NQVRHUk9VUF9DTE9USCBiL2RvYy9tYXRlcmlhbHMvZ3JvdXBzL01BVEdST1VQX0NMT1RICm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmJlNGVkNDkKLS0tIC9kZXYvbnVsbAorKysgYi9kb2MvbWF0ZXJpYWxzL2dyb3Vwcy9NQVRHUk9VUF9DTE9USApAQCAtMCwwICsxLDUgQEAKK0dydXBwZW5pZDoKK01BVEdST1VQX0NMT1RICisKK05hbWU6CitTdG9mZmUKZGlmZiAtLWdpdCBhL2RvYy9tYXRlcmlhbHMvZ3JvdXBzL01BVEdST1VQX0NPTklGRVJfV09PRCBiL2RvYy9tYXRlcmlhbHMvZ3JvdXBzL01BVEdST1VQX0NPTklGRVJfV09PRApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi43NWZmNWIzCi0tLSAvZGV2L251bGwKKysrIGIvZG9jL21hdGVyaWFscy9ncm91cHMvTUFUR1JPVVBfQ09OSUZFUl9XT09ECkBAIC0wLDAgKzEsNSBAQAorR3J1cHBlbmlkOgorTUFUR1JPVVBfQ09OSUZFUl9XT09ECisKK05hbWU6CitOYWRlbGhvZWx6ZXIKZGlmZiAtLWdpdCBhL2RvYy9tYXRlcmlhbHMvZ3JvdXBzL01BVEdST1VQX0RFQUQgYi9kb2MvbWF0ZXJpYWxzL2dyb3Vwcy9NQVRHUk9VUF9ERUFECm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjg5ZTMzYTcKLS0tIC9kZXYvbnVsbAorKysgYi9kb2MvbWF0ZXJpYWxzL2dyb3Vwcy9NQVRHUk9VUF9ERUFECkBAIC0wLDAgKzEsNSBAQAorR3J1cHBlbmlkOgorTUFUR1JPVVBfREVBRAorCitOYW1lOgorVWViZXJyZXN0ZSB2b24gTGViZXdlc2VuCmRpZmYgLS1naXQgYS9kb2MvbWF0ZXJpYWxzL2dyb3Vwcy9NQVRHUk9VUF9ERUNJRFVPVVNfV09PRCBiL2RvYy9tYXRlcmlhbHMvZ3JvdXBzL01BVEdST1VQX0RFQ0lEVU9VU19XT09ECm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjU3OWM0ZGMKLS0tIC9kZXYvbnVsbAorKysgYi9kb2MvbWF0ZXJpYWxzL2dyb3Vwcy9NQVRHUk9VUF9ERUNJRFVPVVNfV09PRApAQCAtMCwwICsxLDUgQEAKK0dydXBwZW5pZDoKK01BVEdST1VQX0RFQ0lEVU9VU19XT09ECisKK05hbWU6CitMYXViaG9lbHplcgpkaWZmIC0tZ2l0IGEvZG9jL21hdGVyaWFscy9ncm91cHMvTUFUR1JPVVBfRFJVRyBiL2RvYy9tYXRlcmlhbHMvZ3JvdXBzL01BVEdST1VQX0RSVUcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYTU5YjIzMgotLS0gL2Rldi9udWxsCisrKyBiL2RvYy9tYXRlcmlhbHMvZ3JvdXBzL01BVEdST1VQX0RSVUcKQEAgLTAsMCArMSw1IEBACitHcnVwcGVuaWQ6CitNQVRHUk9VUF9EUlVHCisKK05hbWU6CitEcm9nZW4gdW5kIEhlaWx0cmFlbmtlCmRpZmYgLS1naXQgYS9kb2MvbWF0ZXJpYWxzL2dyb3Vwcy9NQVRHUk9VUF9FQVRBQkxFIGIvZG9jL21hdGVyaWFscy9ncm91cHMvTUFUR1JPVVBfRUFUQUJMRQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4zNTRlZGQ2Ci0tLSAvZGV2L251bGwKKysrIGIvZG9jL21hdGVyaWFscy9ncm91cHMvTUFUR1JPVVBfRUFUQUJMRQpAQCAtMCwwICsxLDUgQEAKK0dydXBwZW5pZDoKK01BVEdST1VQX0VBVEFCTEUKKworTmFtZToKK0Vzc2JhcmVzCmRpZmYgLS1naXQgYS9kb2MvbWF0ZXJpYWxzL2dyb3Vwcy9NQVRHUk9VUF9FTEVDVFJJQ0FMIGIvZG9jL21hdGVyaWFscy9ncm91cHMvTUFUR1JPVVBfRUxFQ1RSSUNBTApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4wNGQzYmI2Ci0tLSAvZGV2L251bGwKKysrIGIvZG9jL21hdGVyaWFscy9ncm91cHMvTUFUR1JPVVBfRUxFQ1RSSUNBTApAQCAtMCwwICsxLDUgQEAKK0dydXBwZW5pZDoKK01BVEdST1VQX0VMRUNUUklDQUwKKworTmFtZToKK2dlbGFkZW5lIE1hdGVyaWFsaWVuCmRpZmYgLS1naXQgYS9kb2MvbWF0ZXJpYWxzL2dyb3Vwcy9NQVRHUk9VUF9FTEVNRU5UQUwgYi9kb2MvbWF0ZXJpYWxzL2dyb3Vwcy9NQVRHUk9VUF9FTEVNRU5UQUwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZDkyMzQzNwotLS0gL2Rldi9udWxsCisrKyBiL2RvYy9tYXRlcmlhbHMvZ3JvdXBzL01BVEdST1VQX0VMRU1FTlRBTApAQCAtMCwwICsxLDUgQEAKK0dydXBwZW5pZDoKK01BVEdST1VQX0VMRU1FTlRBTAorCitOYW1lOgorKGFsdGVydHVlbWxpY2hlKSBFbGVtZW50ZQpkaWZmIC0tZ2l0IGEvZG9jL21hdGVyaWFscy9ncm91cHMvTUFUR1JPVVBfRVhQTE9TSVZFIGIvZG9jL21hdGVyaWFscy9ncm91cHMvTUFUR1JPVVBfRVhQTE9TSVZFCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjNmNGQyMDgKLS0tIC9kZXYvbnVsbAorKysgYi9kb2MvbWF0ZXJpYWxzL2dyb3Vwcy9NQVRHUk9VUF9FWFBMT1NJVkUKQEAgLTAsMCArMSw1IEBACitHcnVwcGVuaWQ6CitNQVRHUk9VUF9FWFBMT1NJVkUKKworTmFtZToKK1NwcmVuZ3N0b2ZmZQpkaWZmIC0tZ2l0IGEvZG9jL21hdGVyaWFscy9ncm91cHMvTUFUR1JPVVBfRkxFWElCTEUgYi9kb2MvbWF0ZXJpYWxzL2dyb3Vwcy9NQVRHUk9VUF9GTEVYSUJMRQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5iOTExNDNkCi0tLSAvZGV2L251bGwKKysrIGIvZG9jL21hdGVyaWFscy9ncm91cHMvTUFUR1JPVVBfRkxFWElCTEUKQEAgLTAsMCArMSw1IEBACitHcnVwcGVuaWQ6CitNQVRHUk9VUF9GTEVYSUJMRQorCitOYW1lOgorYmllZ3NhbWUgTWF0ZXJpYWxpZW4KZGlmZiAtLWdpdCBhL2RvYy9tYXRlcmlhbHMvZ3JvdXBzL01BVEdST1VQX0ZMVUlEIGIvZG9jL21hdGVyaWFscy9ncm91cHMvTUFUR1JPVVBfRkxVSUQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMTNmNzRmNgotLS0gL2Rldi9udWxsCisrKyBiL2RvYy9tYXRlcmlhbHMvZ3JvdXBzL01BVEdST1VQX0ZMVUlECkBAIC0wLDAgKzEsNSBAQAorR3J1cHBlbmlkOgorTUFUR1JPVVBfRkxVSUQKKworTmFtZToKK0ZsdWVzc2lna2VpdGVuCmRpZmYgLS1naXQgYS9kb2MvbWF0ZXJpYWxzL2dyb3Vwcy9NQVRHUk9VUF9HQVMgYi9kb2MvbWF0ZXJpYWxzL2dyb3Vwcy9NQVRHUk9VUF9HQVMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZjFkMjQzNgotLS0gL2Rldi9udWxsCisrKyBiL2RvYy9tYXRlcmlhbHMvZ3JvdXBzL01BVEdST1VQX0dBUwpAQCAtMCwwICsxLDUgQEAKK0dydXBwZW5pZDoKK01BVEdST1VQX0dBUworCitOYW1lOgorR2FzZQpkaWZmIC0tZ2l0IGEvZG9jL21hdGVyaWFscy9ncm91cHMvTUFUR1JPVVBfSEVSQkFMIGIvZG9jL21hdGVyaWFscy9ncm91cHMvTUFUR1JPVVBfSEVSQkFMCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjA0N2I0MDgKLS0tIC9kZXYvbnVsbAorKysgYi9kb2MvbWF0ZXJpYWxzL2dyb3Vwcy9NQVRHUk9VUF9IRVJCQUwKQEAgLTAsMCArMSw1IEBACitHcnVwcGVuaWQ6CitNQVRHUk9VUF9IRVJCQUwKKworTmFtZToKK3BmbGFuemxpY2hlIE1hdGVyaWFsaWVuCmRpZmYgLS1naXQgYS9kb2MvbWF0ZXJpYWxzL2dyb3Vwcy9NQVRHUk9VUF9IT0xZIGIvZG9jL21hdGVyaWFscy9ncm91cHMvTUFUR1JPVVBfSE9MWQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44NjA5YzJjCi0tLSAvZGV2L251bGwKKysrIGIvZG9jL21hdGVyaWFscy9ncm91cHMvTUFUR1JPVVBfSE9MWQpAQCAtMCwwICsxLDUgQEAKK0dydXBwZW5pZDoKK01BVEdST1VQX0hPTFkKKworTmFtZToKK2hlaWxpZ2UgTWF0ZXJpYWxpZW4KZGlmZiAtLWdpdCBhL2RvYy9tYXRlcmlhbHMvZ3JvdXBzL01BVEdST1VQX0lORkxBTU1BQkxFIGIvZG9jL21hdGVyaWFscy9ncm91cHMvTUFUR1JPVVBfSU5GTEFNTUFCTEUKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uM2U4NzUzNwotLS0gL2Rldi9udWxsCisrKyBiL2RvYy9tYXRlcmlhbHMvZ3JvdXBzL01BVEdST1VQX0lORkxBTU1BQkxFCkBAIC0wLDAgKzEsNSBAQAorR3J1cHBlbmlkOgorTUFUR1JPVVBfSU5GTEFNTUFCTEUKKworTmFtZToKK2VudGZsYW1tYmFyZSBNYXRlcmlhbGllbgpkaWZmIC0tZ2l0IGEvZG9jL21hdGVyaWFscy9ncm91cHMvTUFUR1JPVVBfSU5WSVMgYi9kb2MvbWF0ZXJpYWxzL2dyb3Vwcy9NQVRHUk9VUF9JTlZJUwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi43NDFiYWVmCi0tLSAvZGV2L251bGwKKysrIGIvZG9jL21hdGVyaWFscy9ncm91cHMvTUFUR1JPVVBfSU5WSVMKQEAgLTAsMCArMSw1IEBACitHcnVwcGVuaWQ6CitNQVRHUk9VUF9JTlZJUworCitOYW1lOgordW5zaWNodGJhcmUgTWF0ZXJpYWxpZW4KZGlmZiAtLWdpdCBhL2RvYy9tYXRlcmlhbHMvZ3JvdXBzL01BVEdST1VQX0pFV0VMIGIvZG9jL21hdGVyaWFscy9ncm91cHMvTUFUR1JPVVBfSkVXRUwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uN2FhYjM5MgotLS0gL2Rldi9udWxsCisrKyBiL2RvYy9tYXRlcmlhbHMvZ3JvdXBzL01BVEdST1VQX0pFV0VMCkBAIC0wLDAgKzEsNSBAQAorR3J1cHBlbmlkOgorTUFUR1JPVVBfSkVXRUwKKworTmFtZToKK0VkZWxzdGVpbmUKZGlmZiAtLWdpdCBhL2RvYy9tYXRlcmlhbHMvZ3JvdXBzL01BVEdST1VQX0xJVklORyBiL2RvYy9tYXRlcmlhbHMvZ3JvdXBzL01BVEdST1VQX0xJVklORwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi42YzAyNDYyCi0tLSAvZGV2L251bGwKKysrIGIvZG9jL21hdGVyaWFscy9ncm91cHMvTUFUR1JPVVBfTElWSU5HCkBAIC0wLDAgKzEsNSBAQAorR3J1cHBlbmlkOgorTUFUR1JPVVBfTElWSU5HCisKK05hbWU6CitMZWJld2VzZW4KZGlmZiAtLWdpdCBhL2RvYy9tYXRlcmlhbHMvZ3JvdXBzL01BVEdST1VQX01BR0lDIGIvZG9jL21hdGVyaWFscy9ncm91cHMvTUFUR1JPVVBfTUFHSUMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMjBiODI4NwotLS0gL2Rldi9udWxsCisrKyBiL2RvYy9tYXRlcmlhbHMvZ3JvdXBzL01BVEdST1VQX01BR0lDCkBAIC0wLDAgKzEsNSBAQAorR3J1cHBlbmlkOgorTUFUR1JPVVBfTUFHSUMKKworTmFtZToKK01hZ2lzY2hlcwpkaWZmIC0tZ2l0IGEvZG9jL21hdGVyaWFscy9ncm91cHMvTUFUR1JPVVBfTUFHTkVUSUMgYi9kb2MvbWF0ZXJpYWxzL2dyb3Vwcy9NQVRHUk9VUF9NQUdORVRJQwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5kNDNjM2IzCi0tLSAvZGV2L251bGwKKysrIGIvZG9jL21hdGVyaWFscy9ncm91cHMvTUFUR1JPVVBfTUFHTkVUSUMKQEAgLTAsMCArMSw1IEBACitHcnVwcGVuaWQ6CitNQVRHUk9VUF9NQUdORVRJQworCitOYW1lOgorYW56aWVoZW5kZSBNYXRlcmlhbGllbgpkaWZmIC0tZ2l0IGEvZG9jL21hdGVyaWFscy9ncm91cHMvTUFUR1JPVVBfTUVUQUwgYi9kb2MvbWF0ZXJpYWxzL2dyb3Vwcy9NQVRHUk9VUF9NRVRBTApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5mMzk3OWFmCi0tLSAvZGV2L251bGwKKysrIGIvZG9jL21hdGVyaWFscy9ncm91cHMvTUFUR1JPVVBfTUVUQUwKQEAgLTAsMCArMSw1IEBACitHcnVwcGVuaWQ6CitNQVRHUk9VUF9NRVRBTAorCitOYW1lOgorTWV0YWxsZQpkaWZmIC0tZ2l0IGEvZG9jL21hdGVyaWFscy9ncm91cHMvTUFUR1JPVVBfTUlORVJBTCBiL2RvYy9tYXRlcmlhbHMvZ3JvdXBzL01BVEdST1VQX01JTkVSQUwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMzFlZGE0YwotLS0gL2Rldi9udWxsCisrKyBiL2RvYy9tYXRlcmlhbHMvZ3JvdXBzL01BVEdST1VQX01JTkVSQUwKQEAgLTAsMCArMSw1IEBACitHcnVwcGVuaWQ6CitNQVRHUk9VUF9NSU5FUkFMCisKK05hbWU6CitNaW5lcmFsaWVuCmRpZmYgLS1naXQgYS9kb2MvbWF0ZXJpYWxzL2dyb3Vwcy9NQVRHUk9VUF9NSVNDIGIvZG9jL21hdGVyaWFscy9ncm91cHMvTUFUR1JPVVBfTUlTQwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5iMTljN2Q5Ci0tLSAvZGV2L251bGwKKysrIGIvZG9jL21hdGVyaWFscy9ncm91cHMvTUFUR1JPVVBfTUlTQwpAQCAtMCwwICsxLDUgQEAKK0dydXBwZW5pZDoKK01BVEdST1VQX01JU0MKKworTmFtZToKK3ZlcnNjaGllZGVuZSBNYXRlcmlhbGllbiwgZGllIG5pY2h0IG5hZWhlciB6dWdlb3JkbmV0IHNpbmQgKGFscyBmZXN0LCBmbHVlc3NpZywgZ2FzZm9lcm1pZykKZGlmZiAtLWdpdCBhL2RvYy9tYXRlcmlhbHMvZ3JvdXBzL01BVEdST1VQX1BBUEVSIGIvZG9jL21hdGVyaWFscy9ncm91cHMvTUFUR1JPVVBfUEFQRVIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZjhlZDUwNwotLS0gL2Rldi9udWxsCisrKyBiL2RvYy9tYXRlcmlhbHMvZ3JvdXBzL01BVEdST1VQX1BBUEVSCkBAIC0wLDAgKzEsNSBAQAorR3J1cHBlbmlkOgorTUFUR1JPVVBfUEFQRVIKKworTmFtZToKK1BhcGllcmFlaGxpY2hlcwpkaWZmIC0tZ2l0IGEvZG9jL21hdGVyaWFscy9ncm91cHMvTUFUR1JPVVBfUE9JU09OT1VTIGIvZG9jL21hdGVyaWFscy9ncm91cHMvTUFUR1JPVVBfUE9JU09OT1VTCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjFmMmUyNmMKLS0tIC9kZXYvbnVsbAorKysgYi9kb2MvbWF0ZXJpYWxzL2dyb3Vwcy9NQVRHUk9VUF9QT0lTT05PVVMKQEAgLTAsMCArMSw1IEBACitHcnVwcGVuaWQ6CitNQVRHUk9VUF9QT0lTT05PVVMKKworTmFtZToKK0dpZnRlCmRpZmYgLS1naXQgYS9kb2MvbWF0ZXJpYWxzL2dyb3Vwcy9NQVRHUk9VUF9QUkVDSU9VU19NRVRBTCBiL2RvYy9tYXRlcmlhbHMvZ3JvdXBzL01BVEdST1VQX1BSRUNJT1VTX01FVEFMCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjNkMGZiMWEKLS0tIC9kZXYvbnVsbAorKysgYi9kb2MvbWF0ZXJpYWxzL2dyb3Vwcy9NQVRHUk9VUF9QUkVDSU9VU19NRVRBTApAQCAtMCwwICsxLDUgQEAKK0dydXBwZW5pZDoKK01BVEdST1VQX1BSRUNJT1VTX01FVEFMCisKK05hbWU6CitFZGVsbWV0YWxsZQpkaWZmIC0tZ2l0IGEvZG9jL21hdGVyaWFscy9ncm91cHMvTUFUR1JPVVBfUkFESU9BQ1RJVkUgYi9kb2MvbWF0ZXJpYWxzL2dyb3Vwcy9NQVRHUk9VUF9SQURJT0FDVElWRQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4xZjJiZTE5Ci0tLSAvZGV2L251bGwKKysrIGIvZG9jL21hdGVyaWFscy9ncm91cHMvTUFUR1JPVVBfUkFESU9BQ1RJVkUKQEAgLTAsMCArMSw1IEBACitHcnVwcGVuaWQ6CitNQVRHUk9VUF9SQURJT0FDVElWRQorCitOYW1lOgorVW5iZXNjaHJlaWJsaWNoZXMKZGlmZiAtLWdpdCBhL2RvYy9tYXRlcmlhbHMvZ3JvdXBzL01BVEdST1VQX1NPTElEIGIvZG9jL21hdGVyaWFscy9ncm91cHMvTUFUR1JPVVBfU09MSUQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uM2MwMWRkYgotLS0gL2Rldi9udWxsCisrKyBiL2RvYy9tYXRlcmlhbHMvZ3JvdXBzL01BVEdST1VQX1NPTElECkBAIC0wLDAgKzEsNSBAQAorR3J1cHBlbmlkOgorTUFUR1JPVVBfU09MSUQKKworTmFtZToKK2Zlc3RlIE1hdGVyaWFsaWVuCmRpZmYgLS1naXQgYS9kb2MvbWF0ZXJpYWxzL2dyb3Vwcy9NQVRHUk9VUF9TVE9ORSBiL2RvYy9tYXRlcmlhbHMvZ3JvdXBzL01BVEdST1VQX1NUT05FCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjdhNzZlNWMKLS0tIC9kZXYvbnVsbAorKysgYi9kb2MvbWF0ZXJpYWxzL2dyb3Vwcy9NQVRHUk9VUF9TVE9ORQpAQCAtMCwwICsxLDUgQEAKK0dydXBwZW5pZDoKK01BVEdST1VQX1NUT05FCisKK05hbWU6CitTdGVpbmUKZGlmZiAtLWdpdCBhL2RvYy9tYXRlcmlhbHMvZ3JvdXBzL01BVEdST1VQX1RST1BJQ0FMX1dPT0QgYi9kb2MvbWF0ZXJpYWxzL2dyb3Vwcy9NQVRHUk9VUF9UUk9QSUNBTF9XT09ECm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjAyZmEwNzIKLS0tIC9kZXYvbnVsbAorKysgYi9kb2MvbWF0ZXJpYWxzL2dyb3Vwcy9NQVRHUk9VUF9UUk9QSUNBTF9XT09ECkBAIC0wLDAgKzEsNSBAQAorR3J1cHBlbmlkOgorTUFUR1JPVVBfVFJPUElDQUxfV09PRAorCitOYW1lOgorVHJvcGVuaG9lbHplcgpkaWZmIC0tZ2l0IGEvZG9jL21hdGVyaWFscy9ncm91cHMvTUFUR1JPVVBfVU5IT0xZIGIvZG9jL21hdGVyaWFscy9ncm91cHMvTUFUR1JPVVBfVU5IT0xZCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjQ0ZDk2MWIKLS0tIC9kZXYvbnVsbAorKysgYi9kb2MvbWF0ZXJpYWxzL2dyb3Vwcy9NQVRHUk9VUF9VTkhPTFkKQEAgLTAsMCArMSw1IEBACitHcnVwcGVuaWQ6CitNQVRHUk9VUF9VTkhPTFkKKworTmFtZToKK2RhZW1vbmlzY2hlIE1hdGVyaWFsaWVuCmRpZmYgLS1naXQgYS9kb2MvbWF0ZXJpYWxzL2dyb3Vwcy9NQVRHUk9VUF9XT09EIGIvZG9jL21hdGVyaWFscy9ncm91cHMvTUFUR1JPVVBfV09PRApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41NDY2ZDFkCi0tLSAvZGV2L251bGwKKysrIGIvZG9jL21hdGVyaWFscy9ncm91cHMvTUFUR1JPVVBfV09PRApAQCAtMCwwICsxLDUgQEAKK0dydXBwZW5pZDoKK01BVEdST1VQX1dPT0QKKworTmFtZToKK0hvZWx6ZXIKZGlmZiAtLWdpdCBhL2RvYy9tYXRlcmlhbHMvbWF0ZXJpYWxzL01BVF9BREFNQU5UIGIvZG9jL21hdGVyaWFscy9tYXRlcmlhbHMvTUFUX0FEQU1BTlQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZWJiNDM1YwotLS0gL2Rldi9udWxsCisrKyBiL2RvYy9tYXRlcmlhbHMvbWF0ZXJpYWxzL01BVF9BREFNQU5UCkBAIC0wLDAgKzEsMjAgQEAKK01hdGVyaWFsaWQ6CitNQVRfQURBTUFOVCAgICAgICAgICAgICAgImFkYW1hbnQiCisKK05hbWU6CisiQWRhbWFudCIgIkFkYW1hbnRzIiAiQWRhbWFudCIgIkFkYW1hbnQiCisKK0dlc2NobGVjaHQ6CitOCisKK0Jlc2NocmVpYnVuZzoKK2hhcnRlcyBFbGZlbm1ldGFsbAorCitFcmtlbm5iYXJrZWl0OgorTUFUX01JU0NfTUVUQUw6MTAKK01BVF9BREFNQU5UCisKK0dydXBwZW56dWdlaG9lcmlna2VpdDoKK01BVEdST1VQX01FVEFMOjEwMAorTUFUR1JPVVBfUFJFQ0lPVVNfTUVUQUw6MTAwCitNQVRHUk9VUF9TT0xJRDoxMDAKZGlmZiAtLWdpdCBhL2RvYy9tYXRlcmlhbHMvbWF0ZXJpYWxzL01BVF9BR0FURSBiL2RvYy9tYXRlcmlhbHMvbWF0ZXJpYWxzL01BVF9BR0FURQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5lNTQ1NmM2Ci0tLSAvZGV2L251bGwKKysrIGIvZG9jL21hdGVyaWFscy9tYXRlcmlhbHMvTUFUX0FHQVRFCkBAIC0wLDAgKzEsMjEgQEAKK01hdGVyaWFsaWQ6CitNQVRfQUdBVEUgICAgICAgICAgICAgICAgImFnYXRlIgorCitOYW1lOgorIkFjaGF0IiAiQWNoYXRzIiAiQWNoYXQiICJBY2hhdCIKKworR2VzY2hsZWNodDoKK00KKworQmVzY2hyZWlidW5nOgorRmFyYnNwaWVsCisKK0Vya2VubmJhcmtlaXQ6CitNQVRfTUlTQ19NSU5FUkFMOjAKK01BVF9RVUFSVFo6MjAKK01BVF9BR0FURQorCitHcnVwcGVuenVnZWhvZXJpZ2tlaXQ6CitNQVRHUk9VUF9NSU5FUkFMOjEwMAorTUFUR1JPVVBfU1RPTkU6MTAwCitNQVRHUk9VUF9TT0xJRDoxMDAKZGlmZiAtLWdpdCBhL2RvYy9tYXRlcmlhbHMvbWF0ZXJpYWxzL01BVF9BSVIgYi9kb2MvbWF0ZXJpYWxzL21hdGVyaWFscy9NQVRfQUlSCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmE5ZDRhODAKLS0tIC9kZXYvbnVsbAorKysgYi9kb2MvbWF0ZXJpYWxzL21hdGVyaWFscy9NQVRfQUlSCkBAIC0wLDAgKzEsMTkgQEAKK01hdGVyaWFsaWQ6CitNQVRfQUlSICAgICAgICAgICAgICAgICAgImFpciIKKworTmFtZToKKyJMdWZ0IiAiTHVmdCIgIkx1ZnQiICJMdWZ0IgorCitHZXNjaGxlY2h0OgorRgorCitCZXNjaHJlaWJ1bmc6CistIG5pY2h0IHZvcmhhbmRlbiAtCisKK0Vya2VubmJhcmtlaXQ6CistIGtlaW5lIEVpbnNjaHJhZW5rdW5nIC0KKworR3J1cHBlbnp1Z2Vob2VyaWdrZWl0OgorTUFUR1JPVVBfR0FTOjEwMAorTUFUR1JPVVBfSU5WSVM6MTAwCitNQVRHUk9VUF9FTEVNRU5UQUw6MTAwCmRpZmYgLS1naXQgYS9kb2MvbWF0ZXJpYWxzL21hdGVyaWFscy9NQVRfQUxDT0hPTCBiL2RvYy9tYXRlcmlhbHMvbWF0ZXJpYWxzL01BVF9BTENPSE9MCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjRlZjgwZDQKLS0tIC9kZXYvbnVsbAorKysgYi9kb2MvbWF0ZXJpYWxzL21hdGVyaWFscy9NQVRfQUxDT0hPTApAQCAtMCwwICsxLDE4IEBACitNYXRlcmlhbGlkOgorTUFUX0FMQ09IT0wgICAgICAgICAgICAgICJhbGNvaG9sIgorCitOYW1lOgorIkFsa29ob2wiICJBbGtvaG9scyIgIkFsa29ob2wiICJBbGtvaG9sIgorCitHZXNjaGxlY2h0OgorTQorCitCZXNjaHJlaWJ1bmc6CistIG5pY2h0IHZvcmhhbmRlbiAtCisKK0Vya2VubmJhcmtlaXQ6CistIGtlaW5lIEVpbnNjaHJhZW5rdW5nIC0KKworR3J1cHBlbnp1Z2Vob2VyaWdrZWl0OgorTUFUR1JPVVBfSU5GTEFNTUFCTEU6MTAwCitNQVRHUk9VUF9GTFVJRDoxMDAKZGlmZiAtLWdpdCBhL2RvYy9tYXRlcmlhbHMvbWF0ZXJpYWxzL01BVF9BTFVNSU5JVU0gYi9kb2MvbWF0ZXJpYWxzL21hdGVyaWFscy9NQVRfQUxVTUlOSVVNCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmVjYjI4MmQKLS0tIC9kZXYvbnVsbAorKysgYi9kb2MvbWF0ZXJpYWxzL21hdGVyaWFscy9NQVRfQUxVTUlOSVVNCkBAIC0wLDAgKzEsMjAgQEAKK01hdGVyaWFsaWQ6CitNQVRfQUxVTUlOSVVNICAgICAgICAgICAgIkFsIgorCitOYW1lOgorIkFsdW1pbml1bSIgIkFsdW1pbml1bXMiICJBbHVtaW5pdW0iICJBbHVtaW5pdW0iCisKK0dlc2NobGVjaHQ6CitOCisKK0Jlc2NocmVpYnVuZzoKK3dlaWNoIGJlaGFuZGVsdCBoYXJ0CisKK0Vya2VubmJhcmtlaXQ6CitNQVRfTUlTQ19NRVRBTDowCitNQVRfU0lMVkVSOjE1CitNQVRfQUxVTUlOSVVNCisKK0dydXBwZW56dWdlaG9lcmlna2VpdDoKK01BVEdST1VQX01FVEFMOjEwMAorTUFUR1JPVVBfU09MSUQ6MTAwCmRpZmYgLS1naXQgYS9kb2MvbWF0ZXJpYWxzL21hdGVyaWFscy9NQVRfQU1CRVIgYi9kb2MvbWF0ZXJpYWxzL21hdGVyaWFscy9NQVRfQU1CRVIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZWNhOWVlMAotLS0gL2Rldi9udWxsCisrKyBiL2RvYy9tYXRlcmlhbHMvbWF0ZXJpYWxzL01BVF9BTUJFUgpAQCAtMCwwICsxLDIyIEBACitNYXRlcmlhbGlkOgorTUFUX0FNQkVSICAgICAgICAgICAgICAgICJhbWJlciIKKworTmFtZToKKyJCZXJuc3RlaW4iICJCZXJuc3RlaW5zIiAiQmVybnN0ZWluIiAiQmVybnN0ZWluIgorCitHZXNjaGxlY2h0OgorTQorCitCZXNjaHJlaWJ1bmc6CistIG5pY2h0IHZvcmhhbmRlbiAtCisKK0Vya2VubmJhcmtlaXQ6CistIGtlaW5lIEVpbnNjaHJhZW5rdW5nIC0KKworR3J1cHBlbnp1Z2Vob2VyaWdrZWl0OgorTUFUR1JPVVBfTUlORVJBTDoxMDAKK01BVEdST1VQX0pFV0VMOjEwMAorTUFUR1JPVVBfQklPOjEwMAorTUFUR1JPVVBfU1RPTkU6MTAwCitNQVRHUk9VUF9TT0xJRDoxMDAKK01BVEdST1VQX0RFQUQ6MTAwCmRpZmYgLS1naXQgYS9kb2MvbWF0ZXJpYWxzL21hdGVyaWFscy9NQVRfQU1FVEhZU1QgYi9kb2MvbWF0ZXJpYWxzL21hdGVyaWFscy9NQVRfQU1FVEhZU1QKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uODZjZGQ1MwotLS0gL2Rldi9udWxsCisrKyBiL2RvYy9tYXRlcmlhbHMvbWF0ZXJpYWxzL01BVF9BTUVUSFlTVApAQCAtMCwwICsxLDIxIEBACitNYXRlcmlhbGlkOgorTUFUX0FNRVRIWVNUICAgICAgICAgICAgICJhbWV0aHlzdCIKKworTmFtZToKKyJBbWV0aHlzdCIgIkFtZXRoeXN0cyIgIkFtZXRoeXN0IiAiQW1ldGh5c3QiCisKK0dlc2NobGVjaHQ6CitNCisKK0Jlc2NocmVpYnVuZzoKK3Zpb2xldHQgKFF1YXJ6KQorCitFcmtlbm5iYXJrZWl0OgorTUFUX01JU0NfSkVXRUw6MjUKK01BVF9BTUVUSFlTVAorCitHcnVwcGVuenVnZWhvZXJpZ2tlaXQ6CitNQVRHUk9VUF9NSU5FUkFMOjEwMAorTUFUR1JPVVBfSkVXRUw6MTAwCitNQVRHUk9VUF9TVE9ORToxMDAKK01BVEdST1VQX1NPTElEOjEwMApkaWZmIC0tZ2l0IGEvZG9jL21hdGVyaWFscy9tYXRlcmlhbHMvTUFUX0FOVElNT04gYi9kb2MvbWF0ZXJpYWxzL21hdGVyaWFscy9NQVRfQU5USU1PTgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4xMjMxMWY3Ci0tLSAvZGV2L251bGwKKysrIGIvZG9jL21hdGVyaWFscy9tYXRlcmlhbHMvTUFUX0FOVElNT04KQEAgLTAsMCArMSwyMCBAQAorTWF0ZXJpYWxpZDoKK01BVF9BTlRJTU9OICAgICAgICAgICAgICAiYW50aW1vbiIKKworTmFtZToKKyJBbnRpbW9uIiAiQW50aW1vbnMiICJBbnRpbW9uIiAiQW50aW1vbiIKKworR2VzY2hsZWNodDoKK04KKworQmVzY2hyZWlidW5nOgord2VpY2gsIHNwcm9lZGUsIHNpbGJlcndlaXNzCisKK0Vya2VubmJhcmtlaXQ6CitNQVRfTUlTQ19NRVRBTDowCitNQVRfU0lMVkVSOjE1CitNQVRfQU5USU1PTgorCitHcnVwcGVuenVnZWhvZXJpZ2tlaXQ6CitNQVRHUk9VUF9NRVRBTDoxMDAKK01BVEdST1VQX1NPTElEOjEwMApkaWZmIC0tZ2l0IGEvZG9jL21hdGVyaWFscy9tYXRlcmlhbHMvTUFUX0FRVUFNQVJJTkUgYi9kb2MvbWF0ZXJpYWxzL21hdGVyaWFscy9NQVRfQVFVQU1BUklORQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5lNDAxNDEyCi0tLSAvZGV2L251bGwKKysrIGIvZG9jL21hdGVyaWFscy9tYXRlcmlhbHMvTUFUX0FRVUFNQVJJTkUKQEAgLTAsMCArMSwyMSBAQAorTWF0ZXJpYWxpZDoKK01BVF9BUVVBTUFSSU5FICAgICAgICAgICAiYXF1YW1hcmluZSIKKworTmFtZToKKyJBcXVhbWFyaW4iICJBcXVhbWFyaW5zIiAiQXF1YW1hcmluIiAiQXF1YW1hcmluIgorCitHZXNjaGxlY2h0OgorTQorCitCZXNjaHJlaWJ1bmc6CitibGF1CisKK0Vya2VubmJhcmtlaXQ6CitNQVRfTUlTQ19KRVdFTDoyNQorTUFUX0FRVUFNQVJJTkUKKworR3J1cHBlbnp1Z2Vob2VyaWdrZWl0OgorTUFUR1JPVVBfTUlORVJBTDoxMDAKK01BVEdST1VQX0pFV0VMOjEwMAorTUFUR1JPVVBfU1RPTkU6MTAwCitNQVRHUk9VUF9TT0xJRDoxMDAKZGlmZiAtLWdpdCBhL2RvYy9tYXRlcmlhbHMvbWF0ZXJpYWxzL01BVF9BUlNFTklDIGIvZG9jL21hdGVyaWFscy9tYXRlcmlhbHMvTUFUX0FSU0VOSUMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZWYxMmViNwotLS0gL2Rldi9udWxsCisrKyBiL2RvYy9tYXRlcmlhbHMvbWF0ZXJpYWxzL01BVF9BUlNFTklDCkBAIC0wLDAgKzEsMjEgQEAKK01hdGVyaWFsaWQ6CitNQVRfQVJTRU5JQyAgICAgICAgICAgICAgImFyc2VuaWMiCisKK05hbWU6CisiQXJzZW4iICJBcnNlbnMiICJBcnNlbiIgIkFyc2VuIgorCitHZXNjaGxlY2h0OgorTgorCitCZXNjaHJlaWJ1bmc6CitnaWZ0aWdlcyBIYWxibWV0YWxsCisKK0Vya2VubmJhcmtlaXQ6CitNQVRfU0FMVDo1MAorTUFUX01JU0NfTUVUQUw6NjYKK01BVF9BUlNFTklDCisKK0dydXBwZW56dWdlaG9lcmlna2VpdDoKK01BVEdST1VQX1BPSVNPTk9VUzoxMDAKK01BVEdST1VQX01FVEFMOjEwMAorTUFUR1JPVVBfU09MSUQ6MTAwCmRpZmYgLS1naXQgYS9kb2MvbWF0ZXJpYWxzL21hdGVyaWFscy9NQVRfQVNCRVNUT1MgYi9kb2MvbWF0ZXJpYWxzL21hdGVyaWFscy9NQVRfQVNCRVNUT1MKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMjE1YjU0NgotLS0gL2Rldi9udWxsCisrKyBiL2RvYy9tYXRlcmlhbHMvbWF0ZXJpYWxzL01BVF9BU0JFU1RPUwpAQCAtMCwwICsxLDIwIEBACitNYXRlcmlhbGlkOgorTUFUX0FTQkVTVE9TICAgICAgICAgICAgICJhc2Jlc3RvcyIKKworTmFtZToKKyJBc2Jlc3QiICJBc2Jlc3RzIiAiQXNiZXN0IiAiQXNiZXN0IgorCitHZXNjaGxlY2h0OgorTQorCitCZXNjaHJlaWJ1bmc6CitncmF1d2Vpc3MKKworRXJrZW5uYmFya2VpdDoKKy0ga2VpbmUgRWluc2NocmFlbmt1bmcgLQorCitHcnVwcGVuenVnZWhvZXJpZ2tlaXQ6CitNQVRHUk9VUF9QT0lTT05PVVM6MTAwCitNQVRHUk9VUF9NSU5FUkFMOjEwMAorTUFUR1JPVVBfU1RPTkU6MTAwCitNQVRHUk9VUF9TT0xJRDoxMDAKZGlmZiAtLWdpdCBhL2RvYy9tYXRlcmlhbHMvbWF0ZXJpYWxzL01BVF9BU0hfV09PRCBiL2RvYy9tYXRlcmlhbHMvbWF0ZXJpYWxzL01BVF9BU0hfV09PRApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41MzFjMWRmCi0tLSAvZGV2L251bGwKKysrIGIvZG9jL21hdGVyaWFscy9tYXRlcmlhbHMvTUFUX0FTSF9XT09ECkBAIC0wLDAgKzEsMjYgQEAKK01hdGVyaWFsaWQ6CitNQVRfQVNIX1dPT0QgICAgICAgICAgICAgImFzaF93b29kIgorCitOYW1lOgorIkVzY2hlbmhvbHoiICJFc2NoZW5ob2x6ZXMiICJFc2NoZW5ob2x6IiAiRXNjaGVuaG9seiIKKworR2VzY2hsZWNodDoKK04KKworQmVzY2hyZWlidW5nOgorZmxleGliZWwsIG1hZ2lzY2gKKworRXJrZW5uYmFya2VpdDoKK01BVF9NSVNDX0RFQ0lEVU9VU19XT09EOjE1CitNQVRfQVNIX1dPT0QKKworR3J1cHBlbnp1Z2Vob2VyaWdrZWl0OgorTUFUR1JPVVBfSU5GTEFNTUFCTEU6MTAwCitNQVRHUk9VUF9NQUdJQzoxMDAKK01BVEdST1VQX0JJTzoxMDAKK01BVEdST1VQX0hFUkJBTDoxMDAKK01BVEdST1VQX0ZMRVhJQkxFOjEwMAorTUFUR1JPVVBfREVDSURVT1VTX1dPT0Q6MTAwCitNQVRHUk9VUF9TT0xJRDoxMDAKK01BVEdST1VQX1dPT0Q6MTAwCitNQVRHUk9VUF9ERUFEOjEwMApkaWZmIC0tZ2l0IGEvZG9jL21hdGVyaWFscy9tYXRlcmlhbHMvTUFUX0FTUEhBTFQgYi9kb2MvbWF0ZXJpYWxzL21hdGVyaWFscy9NQVRfQVNQSEFMVApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44YjAzZTRmCi0tLSAvZGV2L251bGwKKysrIGIvZG9jL21hdGVyaWFscy9tYXRlcmlhbHMvTUFUX0FTUEhBTFQKQEAgLTAsMCArMSwxOCBAQAorTWF0ZXJpYWxpZDoKK01BVF9BU1BIQUxUICAgICAgICAgICAgICAiYXNwaGFsdCIKKworTmFtZToKKyJBc3BoYWx0IiAiQXNwaGFsdHMiICJBc3BoYWx0IiAiQXNwaGFsdCIKKworR2VzY2hsZWNodDoKK00KKworQmVzY2hyZWlidW5nOgorLSBuaWNodCB2b3JoYW5kZW4gLQorCitFcmtlbm5iYXJrZWl0OgorLSBrZWluZSBFaW5zY2hyYWVua3VuZyAtCisKK0dydXBwZW56dWdlaG9lcmlna2VpdDoKK01BVEdST1VQX1NUT05FOjEwMAorTUFUR1JPVVBfU09MSUQ6MTAwCmRpZmYgLS1naXQgYS9kb2MvbWF0ZXJpYWxzL21hdGVyaWFscy9NQVRfQVNQSVJJTiBiL2RvYy9tYXRlcmlhbHMvbWF0ZXJpYWxzL01BVF9BU1BJUklOCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjVhN2E2Y2MKLS0tIC9kZXYvbnVsbAorKysgYi9kb2MvbWF0ZXJpYWxzL21hdGVyaWFscy9NQVRfQVNQSVJJTgpAQCAtMCwwICsxLDE5IEBACitNYXRlcmlhbGlkOgorTUFUX0FTUElSSU4gICAgICAgICAgICAgICJhc3BpcmluIgorCitOYW1lOgorIkFzcGlyaW4iICJBc3BpcmlucyIgIkFzcGlyaW4iICJBc3BpcmluIgorCitHZXNjaGxlY2h0OgorTgorCitCZXNjaHJlaWJ1bmc6CistIG5pY2h0IHZvcmhhbmRlbiAtCisKK0Vya2VubmJhcmtlaXQ6CitNQVRfU0FMVDo1MAorTUFUX0FTUElSSU4KKworR3J1cHBlbnp1Z2Vob2VyaWdrZWl0OgorTUFUR1JPVVBfU09MSUQ6MTAwCitNQVRHUk9VUF9EUlVHOjEwMApkaWZmIC0tZ2l0IGEvZG9jL21hdGVyaWFscy9tYXRlcmlhbHMvTUFUX0JBTFNBIGIvZG9jL21hdGVyaWFscy9tYXRlcmlhbHMvTUFUX0JBTFNBCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjk2M2FmNGEKLS0tIC9kZXYvbnVsbAorKysgYi9kb2MvbWF0ZXJpYWxzL21hdGVyaWFscy9NQVRfQkFMU0EKQEAgLTAsMCArMSwyMyBAQAorTWF0ZXJpYWxpZDoKK01BVF9CQUxTQSAgICAgICAgICAgICAgICAiYmFsc2EiCisKK05hbWU6CisiQmFsc2Fob2x6IiAiQmFsc2Fob2x6ZXMiICJCYWxzYWhvbHoiICJCYWxzYWhvbHoiCisKK0dlc2NobGVjaHQ6CitOCisKK0Jlc2NocmVpYnVuZzoKK3dlaWNoZXIvbGVpY2h0ZXIgYWxzIEtvcmsKKworRXJrZW5uYmFya2VpdDoKKy0ga2VpbmUgRWluc2NocmFlbmt1bmcgLQorCitHcnVwcGVuenVnZWhvZXJpZ2tlaXQ6CitNQVRHUk9VUF9JTkZMQU1NQUJMRToxMDAKK01BVEdST1VQX0JJTzoxMDAKK01BVEdST1VQX0hFUkJBTDoxMDAKK01BVEdST1VQX1RST1BJQ0FMX1dPT0Q6MTAwCitNQVRHUk9VUF9TT0xJRDoxMDAKK01BVEdST1VQX1dPT0Q6MTAwCitNQVRHUk9VUF9ERUFEOjEwMApkaWZmIC0tZ2l0IGEvZG9jL21hdGVyaWFscy9tYXRlcmlhbHMvTUFUX0JBUllUIGIvZG9jL21hdGVyaWFscy9tYXRlcmlhbHMvTUFUX0JBUllUCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjUxNmZmYTIKLS0tIC9kZXYvbnVsbAorKysgYi9kb2MvbWF0ZXJpYWxzL21hdGVyaWFscy9NQVRfQkFSWVQKQEAgLTAsMCArMSwyMSBAQAorTWF0ZXJpYWxpZDoKK01BVF9CQVJZVCAgICAgICAgICAgICAgICAiYmFyeXQiCisKK05hbWU6CisiU2Nod2Vyc3BhdCIgIlNjaHdlcnNwYXRlcyIgIlNjaHdlcnNwYXQiICJTY2h3ZXJzcGF0IgorCitHZXNjaGxlY2h0OgorTQorCitCZXNjaHJlaWJ1bmc6Cit3ZWlzcywgaG9oZSBEaWNodGUKKworRXJrZW5uYmFya2VpdDoKK01BVF9NSVNDX01JTkVSQUw6MzMKK01BVF9PUlRIT0tMQVM6NTAKK01BVF9CQVJZVAorCitHcnVwcGVuenVnZWhvZXJpZ2tlaXQ6CitNQVRHUk9VUF9NSU5FUkFMOjEwMAorTUFUR1JPVVBfU1RPTkU6MTAwCitNQVRHUk9VUF9TT0xJRDoxMDAKZGlmZiAtLWdpdCBhL2RvYy9tYXRlcmlhbHMvbWF0ZXJpYWxzL01BVF9CQVNBTFQgYi9kb2MvbWF0ZXJpYWxzL21hdGVyaWFscy9NQVRfQkFTQUxUCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmM4NTg4MzAKLS0tIC9kZXYvbnVsbAorKysgYi9kb2MvbWF0ZXJpYWxzL21hdGVyaWFscy9NQVRfQkFTQUxUCkBAIC0wLDAgKzEsMTggQEAKK01hdGVyaWFsaWQ6CitNQVRfQkFTQUxUICAgICAgICAgICAgICAgImJhc2FsdCIKKworTmFtZToKKyJCYXNhbHQiICJCYXNhbHRzIiAiQmFzYWx0IiAiQmFzYWx0IgorCitHZXNjaGxlY2h0OgorTQorCitCZXNjaHJlaWJ1bmc6CistIG5pY2h0IHZvcmhhbmRlbiAtCisKK0Vya2VubmJhcmtlaXQ6CistIGtlaW5lIEVpbnNjaHJhZW5rdW5nIC0KKworR3J1cHBlbnp1Z2Vob2VyaWdrZWl0OgorTUFUR1JPVVBfU1RPTkU6MTAwCitNQVRHUk9VUF9TT0xJRDoxMDAKZGlmZiAtLWdpdCBhL2RvYy9tYXRlcmlhbHMvbWF0ZXJpYWxzL01BVF9CRUVDSCBiL2RvYy9tYXRlcmlhbHMvbWF0ZXJpYWxzL01BVF9CRUVDSApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4xZWFmODE1Ci0tLSAvZGV2L251bGwKKysrIGIvZG9jL21hdGVyaWFscy9tYXRlcmlhbHMvTUFUX0JFRUNICkBAIC0wLDAgKzEsMjQgQEAKK01hdGVyaWFsaWQ6CitNQVRfQkVFQ0ggICAgICAgICAgICAgICAgImJlZWNoIgorCitOYW1lOgorIkJ1Y2hlbmhvbHoiICJCdWNoZW5ob2x6ZXMiICJCdWNoZW5ob2x6IiAiQnVjaGVuaG9seiIKKworR2VzY2hsZWNodDoKK04KKworQmVzY2hyZWlidW5nOgoraGFydCwgcm9ldGxpY2gKKworRXJrZW5uYmFya2VpdDoKK01BVF9NSVNDX0RFQ0lEVU9VU19XT09EOjUKK01BVF9CRUVDSAorCitHcnVwcGVuenVnZWhvZXJpZ2tlaXQ6CitNQVRHUk9VUF9JTkZMQU1NQUJMRToxMDAKK01BVEdST1VQX0JJTzoxMDAKK01BVEdST1VQX0hFUkJBTDoxMDAKK01BVEdST1VQX0RFQ0lEVU9VU19XT09EOjEwMAorTUFUR1JPVVBfU09MSUQ6MTAwCitNQVRHUk9VUF9XT09EOjEwMAorTUFUR1JPVVBfREVBRDoxMDAKZGlmZiAtLWdpdCBhL2RvYy9tYXRlcmlhbHMvbWF0ZXJpYWxzL01BVF9CSVJDSCBiL2RvYy9tYXRlcmlhbHMvbWF0ZXJpYWxzL01BVF9CSVJDSApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi43Yjk1MGM3Ci0tLSAvZGV2L251bGwKKysrIGIvZG9jL21hdGVyaWFscy9tYXRlcmlhbHMvTUFUX0JJUkNICkBAIC0wLDAgKzEsMjQgQEAKK01hdGVyaWFsaWQ6CitNQVRfQklSQ0ggICAgICAgICAgICAgICAgImJpcmNoIgorCitOYW1lOgorIkJpcmtlbmhvbHoiICJCaXJrZW5ob2x6ZXMiICJCaXJrZW5ob2x6IiAiQmlya2VuaG9seiIKKworR2VzY2hsZWNodDoKK04KKworQmVzY2hyZWlidW5nOgorbWFnaXNjaCwgemFlaCwgc3Vlc3MKKworRXJrZW5uYmFya2VpdDoKK01BVF9NSVNDX0RFQ0lEVU9VU19XT09EOjUKK01BVF9CSVJDSAorCitHcnVwcGVuenVnZWhvZXJpZ2tlaXQ6CitNQVRHUk9VUF9JTkZMQU1NQUJMRToxMDAKK01BVEdST1VQX0JJTzoxMDAKK01BVEdST1VQX0hFUkJBTDoxMDAKK01BVEdST1VQX0RFQ0lEVU9VU19XT09EOjEwMAorTUFUR1JPVVBfU09MSUQ6MTAwCitNQVRHUk9VUF9XT09EOjEwMAorTUFUR1JPVVBfREVBRDoxMDAKZGlmZiAtLWdpdCBhL2RvYy9tYXRlcmlhbHMvbWF0ZXJpYWxzL01BVF9CTE9PRCBiL2RvYy9tYXRlcmlhbHMvbWF0ZXJpYWxzL01BVF9CTE9PRApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4zZjRiMmIxCi0tLSAvZGV2L251bGwKKysrIGIvZG9jL21hdGVyaWFscy9tYXRlcmlhbHMvTUFUX0JMT09ECkBAIC0wLDAgKzEsMTkgQEAKK01hdGVyaWFsaWQ6CitNQVRfQkxPT0QgICAgICAgICAgICAgICAgImJsb29kIgorCitOYW1lOgorIkJsdXQiICJCbHV0cyIgIkJsdXQiICJCbHV0IgorCitHZXNjaGxlY2h0OgorTgorCitCZXNjaHJlaWJ1bmc6CistIG5pY2h0IHZvcmhhbmRlbiAtCisKK0Vya2VubmJhcmtlaXQ6CistIGtlaW5lIEVpbnNjaHJhZW5rdW5nIC0KKworR3J1cHBlbnp1Z2Vob2VyaWdrZWl0OgorTUFUR1JPVVBfQklPOjEwMAorTUFUR1JPVVBfRkxVSUQ6MTAwCitNQVRHUk9VUF9ERUFEOjEwMApkaWZmIC0tZ2l0IGEvZG9jL21hdGVyaWFscy9tYXRlcmlhbHMvTUFUX0JPTkUgYi9kb2MvbWF0ZXJpYWxzL21hdGVyaWFscy9NQVRfQk9ORQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4zODAwODIzCi0tLSAvZGV2L251bGwKKysrIGIvZG9jL21hdGVyaWFscy9tYXRlcmlhbHMvTUFUX0JPTkUKQEAgLTAsMCArMSwxOSBAQAorTWF0ZXJpYWxpZDoKK01BVF9CT05FICAgICAgICAgICAgICAgICAiYm9uZSIKKworTmFtZToKKyJLbm9jaGVuIiAiS25vY2hlbnMiICJLbm9jaGVuIiAiS25vY2hlbiIKKworR2VzY2hsZWNodDoKK00KKworQmVzY2hyZWlidW5nOgorLSBuaWNodCB2b3JoYW5kZW4gLQorCitFcmtlbm5iYXJrZWl0OgorLSBrZWluZSBFaW5zY2hyYWVua3VuZyAtCisKK0dydXBwZW56dWdlaG9lcmlna2VpdDoKK01BVEdST1VQX0JJTzoxMDAKK01BVEdST1VQX1NPTElEOjEwMAorTUFUR1JPVVBfREVBRDoxMDAKZGlmZiAtLWdpdCBhL2RvYy9tYXRlcmlhbHMvbWF0ZXJpYWxzL01BVF9CUkFTUyBiL2RvYy9tYXRlcmlhbHMvbWF0ZXJpYWxzL01BVF9CUkFTUwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5kZTJmNGQ3Ci0tLSAvZGV2L251bGwKKysrIGIvZG9jL21hdGVyaWFscy9tYXRlcmlhbHMvTUFUX0JSQVNTCkBAIC0wLDAgKzEsMjAgQEAKK01hdGVyaWFsaWQ6CitNQVRfQlJBU1MgICAgICAgICAgICAgICAgImJyYXNzIgorCitOYW1lOgorIk1lc3NpbmciICJNZXNzaW5ncyIgIk1lc3NpbmciICJNZXNzaW5nIgorCitHZXNjaGxlY2h0OgorTgorCitCZXNjaHJlaWJ1bmc6CitiaXMgODAlIEt1cGZlciwgUmVzdCBaaW5rCisKK0Vya2VubmJhcmtlaXQ6CitNQVRfTUlTQ19NRVRBTDowCitNQVRfR09MRDoxNQorTUFUX0JSQVNTCisKK0dydXBwZW56dWdlaG9lcmlna2VpdDoKK01BVEdST1VQX01FVEFMOjEwMAorTUFUR1JPVVBfU09MSUQ6MTAwCmRpZmYgLS1naXQgYS9kb2MvbWF0ZXJpYWxzL21hdGVyaWFscy9NQVRfQlJPTkNFIGIvZG9jL21hdGVyaWFscy9tYXRlcmlhbHMvTUFUX0JST05DRQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi42NTdkMjRlCi0tLSAvZGV2L251bGwKKysrIGIvZG9jL21hdGVyaWFscy9tYXRlcmlhbHMvTUFUX0JST05DRQpAQCAtMCwwICsxLDE4IEBACitNYXRlcmlhbGlkOgorTUFUX0JST05DRSAgICAgICAgICAgICAgICJicm9uY2UiCisKK05hbWU6CisiQnJvbnplIiAiQnJvbnplIiAiQnJvbnplIiAiQnJvbnplIgorCitHZXNjaGxlY2h0OgorRgorCitCZXNjaHJlaWJ1bmc6CitLdXBmZXJsZWdpZXJ1bmcgKG1pdCBaaW5uKQorCitFcmtlbm5iYXJrZWl0OgorLSBrZWluZSBFaW5zY2hyYWVua3VuZyAtCisKK0dydXBwZW56dWdlaG9lcmlna2VpdDoKK01BVEdST1VQX01FVEFMOjEwMAorTUFUR1JPVVBfU09MSUQ6MTAwCmRpZmYgLS1naXQgYS9kb2MvbWF0ZXJpYWxzL21hdGVyaWFscy9NQVRfQlJVWUVSRSBiL2RvYy9tYXRlcmlhbHMvbWF0ZXJpYWxzL01BVF9CUlVZRVJFCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjQ3OTUwMGEKLS0tIC9kZXYvbnVsbAorKysgYi9kb2MvbWF0ZXJpYWxzL21hdGVyaWFscy9NQVRfQlJVWUVSRQpAQCAtMCwwICsxLDI0IEBACitNYXRlcmlhbGlkOgorTUFUX0JSVVlFUkUgICAgICAgICAgICAgICJicnV5ZXJlIgorCitOYW1lOgorIkJydXllcmVob2x6IiAiQnJ1eWVyZWhvbHplcyIgIkJydXllcmVob2x6IiAiQnJ1eWVyZWhvbHoiCisKK0dlc2NobGVjaHQ6CitOCisKK0Jlc2NocmVpYnVuZzoKK3NlaHIgaGFydCB1bmQgemFlaCwgZnVlciBQZmVpZmVuCisKK0Vya2VubmJhcmtlaXQ6CitNQVRfTUlTQ19ERUNJRFVPVVNfV09PRDo1CitNQVRfQlJVWUVSRQorCitHcnVwcGVuenVnZWhvZXJpZ2tlaXQ6CitNQVRHUk9VUF9JTkZMQU1NQUJMRToxMDAKK01BVEdST1VQX0JJTzoxMDAKK01BVEdST1VQX0hFUkJBTDoxMDAKK01BVEdST1VQX0RFQ0lEVU9VU19XT09EOjEwMAorTUFUR1JPVVBfU09MSUQ6MTAwCitNQVRHUk9VUF9XT09EOjEwMAorTUFUR1JPVVBfREVBRDoxMDAKZGlmZiAtLWdpdCBhL2RvYy9tYXRlcmlhbHMvbWF0ZXJpYWxzL01BVF9DQU5OQUJJUyBiL2RvYy9tYXRlcmlhbHMvbWF0ZXJpYWxzL01BVF9DQU5OQUJJUwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5hODFjZDM5Ci0tLSAvZGV2L251bGwKKysrIGIvZG9jL21hdGVyaWFscy9tYXRlcmlhbHMvTUFUX0NBTk5BQklTCkBAIC0wLDAgKzEsMjEgQEAKK01hdGVyaWFsaWQ6CitNQVRfQ0FOTkFCSVMgICAgICAgICAgICAgImNhbm5hYmlzIgorCitOYW1lOgorIkhhbmYiICJIYW5mcyIgIkhhbmYiICJIYW5mIgorCitHZXNjaGxlY2h0OgorTQorCitCZXNjaHJlaWJ1bmc6CithdWNoIFRIQworCitFcmtlbm5iYXJrZWl0OgorTUFUX01JU0NfSEVSQkFMOjMzCitNQVRfQ0FOTkFCSVMKKworR3J1cHBlbnp1Z2Vob2VyaWdrZWl0OgorTUFUR1JPVVBfSEVSQkFMOjEwMAorTUFUR1JPVVBfRkxFWElCTEU6MTAwCitNQVRHUk9VUF9TT0xJRDoxMDAKK01BVEdST1VQX0RSVUc6MTAwCmRpZmYgLS1naXQgYS9kb2MvbWF0ZXJpYWxzL21hdGVyaWFscy9NQVRfQ0FSQk9OIGIvZG9jL21hdGVyaWFscy9tYXRlcmlhbHMvTUFUX0NBUkJPTgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4wNWEwNWEyCi0tLSAvZGV2L251bGwKKysrIGIvZG9jL21hdGVyaWFscy9tYXRlcmlhbHMvTUFUX0NBUkJPTgpAQCAtMCwwICsxLDE4IEBACitNYXRlcmlhbGlkOgorTUFUX0NBUkJPTiAgICAgICAgICAgICAgICJDIgorCitOYW1lOgorIktvaGxlbnN0b2ZmIiAiS29obGVuc3RvZmZzIiAiS29obGVuc3RvZmYiICJLb2hsZW5zdG9mZiIKKworR2VzY2hsZWNodDoKK00KKworQmVzY2hyZWlidW5nOgorLSBuaWNodCB2b3JoYW5kZW4gLQorCitFcmtlbm5iYXJrZWl0OgorLSBrZWluZSBFaW5zY2hyYWVua3VuZyAtCisKK0dydXBwZW56dWdlaG9lcmlna2VpdDoKK01BVEdST1VQX0lORkxBTU1BQkxFOjEwMAorTUFUR1JPVVBfU09MSUQ6MTAwCmRpZmYgLS1naXQgYS9kb2MvbWF0ZXJpYWxzL21hdGVyaWFscy9NQVRfQ0FSVE9OIGIvZG9jL21hdGVyaWFscy9tYXRlcmlhbHMvTUFUX0NBUlRPTgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi42OGM4MzZjCi0tLSAvZGV2L251bGwKKysrIGIvZG9jL21hdGVyaWFscy9tYXRlcmlhbHMvTUFUX0NBUlRPTgpAQCAtMCwwICsxLDIwIEBACitNYXRlcmlhbGlkOgorTUFUX0NBUlRPTiAgICAgICAgICAgICAgICJjYXJ0b24iCisKK05hbWU6CisiUGFwcGUiICJQYXBwZSIgIlBhcHBlIiAiUGFwcGUiCisKK0dlc2NobGVjaHQ6CitGCisKK0Jlc2NocmVpYnVuZzoKKy0gbmljaHQgdm9yaGFuZGVuIC0KKworRXJrZW5uYmFya2VpdDoKKy0ga2VpbmUgRWluc2NocmFlbmt1bmcgLQorCitHcnVwcGVuenVnZWhvZXJpZ2tlaXQ6CitNQVRHUk9VUF9JTkZMQU1NQUJMRToxMDAKK01BVEdST1VQX0JJTzoxMDAKK01BVEdST1VQX1BBUEVSOjEwMAorTUFUR1JPVVBfU09MSUQ6MTAwCmRpZmYgLS1naXQgYS9kb2MvbWF0ZXJpYWxzL21hdGVyaWFscy9NQVRfQ0VEQVIgYi9kb2MvbWF0ZXJpYWxzL21hdGVyaWFscy9NQVRfQ0VEQVIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uY2M2ZWU5MwotLS0gL2Rldi9udWxsCisrKyBiL2RvYy9tYXRlcmlhbHMvbWF0ZXJpYWxzL01BVF9DRURBUgpAQCAtMCwwICsxLDI1IEBACitNYXRlcmlhbGlkOgorTUFUX0NFREFSICAgICAgICAgICAgICAgICJjZWRhciIKKworTmFtZToKKyJaZWRlcm5ob2x6IiAiWmVkZXJuaG9semVzIiAiWmVkZXJuaG9seiIgIlplZGVybmhvbHoiCisKK0dlc2NobGVjaHQ6CitOCisKK0Jlc2NocmVpYnVuZzoKK21hZ2lzY2ggdW5kIHdlaWNoCisKK0Vya2VubmJhcmtlaXQ6CitNQVRfTUlTQ19DT05JRkVSX1dPT0Q6NQorTUFUX0NFREFSCisKK0dydXBwZW56dWdlaG9lcmlna2VpdDoKK01BVEdST1VQX0lORkxBTU1BQkxFOjEwMAorTUFUR1JPVVBfTUFHSUM6MTAwCitNQVRHUk9VUF9CSU86MTAwCitNQVRHUk9VUF9IRVJCQUw6MTAwCitNQVRHUk9VUF9TT0xJRDoxMDAKK01BVEdST1VQX1dPT0Q6MTAwCitNQVRHUk9VUF9ERUFEOjEwMAorTUFUR1JPVVBfQ09OSUZFUl9XT09EOjEwMApkaWZmIC0tZ2l0IGEvZG9jL21hdGVyaWFscy9tYXRlcmlhbHMvTUFUX0NFUkFNSUMgYi9kb2MvbWF0ZXJpYWxzL21hdGVyaWFscy9NQVRfQ0VSQU1JQwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi40ZjcxYjFjCi0tLSAvZGV2L251bGwKKysrIGIvZG9jL21hdGVyaWFscy9tYXRlcmlhbHMvTUFUX0NFUkFNSUMKQEAgLTAsMCArMSwxNyBAQAorTWF0ZXJpYWxpZDoKK01BVF9DRVJBTUlDICAgICAgICAgICAgICAiY2VyYW1pYyIKKworTmFtZToKKyJLZXJhbWlrIiAiS2VyYW1payIgIktlcmFtaWsiICJLZXJhbWlrIgorCitHZXNjaGxlY2h0OgorRgorCitCZXNjaHJlaWJ1bmc6CistIG5pY2h0IHZvcmhhbmRlbiAtCisKK0Vya2VubmJhcmtlaXQ6CistIGtlaW5lIEVpbnNjaHJhZW5rdW5nIC0KKworR3J1cHBlbnp1Z2Vob2VyaWdrZWl0OgorTUFUR1JPVVBfU09MSUQ6MTAwCmRpZmYgLS1naXQgYS9kb2MvbWF0ZXJpYWxzL21hdGVyaWFscy9NQVRfQ0hBTEsgYi9kb2MvbWF0ZXJpYWxzL21hdGVyaWFscy9NQVRfQ0hBTEsKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNTc3NWU5MQotLS0gL2Rldi9udWxsCisrKyBiL2RvYy9tYXRlcmlhbHMvbWF0ZXJpYWxzL01BVF9DSEFMSwpAQCAtMCwwICsxLDE3IEBACitNYXRlcmlhbGlkOgorTUFUX0NIQUxLICAgICAgICAgICAgICAgICJjaGFsayIKKworTmFtZToKKyJLcmVpZGUiICJLcmVpZGUiICJLcmVpZGUiICJLcmVpZGUiCisKK0dlc2NobGVjaHQ6CitGCisKK0Jlc2NocmVpYnVuZzoKKy0gbmljaHQgdm9yaGFuZGVuIC0KKworRXJrZW5uYmFya2VpdDoKKy0ga2VpbmUgRWluc2NocmFlbmt1bmcgLQorCitHcnVwcGVuenVnZWhvZXJpZ2tlaXQ6CitNQVRHUk9VUF9TT0xJRDoxMDAKZGlmZiAtLWdpdCBhL2RvYy9tYXRlcmlhbHMvbWF0ZXJpYWxzL01BVF9DSEVFU0UgYi9kb2MvbWF0ZXJpYWxzL21hdGVyaWFscy9NQVRfQ0hFRVNFCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjE0M2Q1NDQKLS0tIC9kZXYvbnVsbAorKysgYi9kb2MvbWF0ZXJpYWxzL21hdGVyaWFscy9NQVRfQ0hFRVNFCkBAIC0wLDAgKzEsMjEgQEAKK01hdGVyaWFsaWQ6CitNQVRfQ0hFRVNFICAgICAgICAgICAgICJjaGVlc2UiCisKK05hbWU6CisiS2Flc2UiICJLYWVzZXMiICJLYWVzZSIgIkthZXNlIgorCitHZXNjaGxlY2h0OgorTQorCitCZXNjaHJlaWJ1bmc6Cit3ZWljaCwgZXNzYmFyCisKK0Vya2VubmJhcmtlaXQ6CitNQVRHUk9VUF9FQVRBQkxFOjAKK01BVEdST1VQX0JJTzowCitNQVRfQ0hFRVNFCisKK0dydXBwZW56dWdlaG9lcmlna2VpdDoKK01BVEdST1VQX0VBVEFCTEU6MTAwCitNQVRHUk9VUF9TT0xJRDoxMDAKK01BVEdST1VQX0JJTzoxMDAKZGlmZiAtLWdpdCBhL2RvYy9tYXRlcmlhbHMvbWF0ZXJpYWxzL01BVF9DSElGRk9OIGIvZG9jL21hdGVyaWFscy9tYXRlcmlhbHMvTUFUX0NISUZGT04KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMjk5NWE0YQotLS0gL2Rldi9udWxsCisrKyBiL2RvYy9tYXRlcmlhbHMvbWF0ZXJpYWxzL01BVF9DSElGRk9OCkBAIC0wLDAgKzEsMjEgQEAKK01hdGVyaWFsaWQ6CitNQVRfQ0hJRkZPTiAgICAgICAgICAgICAgImNoaWZmb24iCisKK05hbWU6CisiQ2hpZmZvbiIgIkNoaWZmb25zIiAiQ2hpZmZvbiIgIkNoaWZmb24iCisKK0dlc2NobGVjaHQ6CitNCisKK0Jlc2NocmVpYnVuZzoKKy0gbmljaHQgdm9yaGFuZGVuIC0KKworRXJrZW5uYmFya2VpdDoKKy0ga2VpbmUgRWluc2NocmFlbmt1bmcgLQorCitHcnVwcGVuenVnZWhvZXJpZ2tlaXQ6CitNQVRHUk9VUF9JTkZMQU1NQUJMRToxMDAKK01BVEdST1VQX0JJTzoxMDAKK01BVEdST1VQX0ZMRVhJQkxFOjEwMAorTUFUR1JPVVBfU09MSUQ6MTAwCitNQVRHUk9VUF9DTE9USDoxMDAKZGlmZiAtLWdpdCBhL2RvYy9tYXRlcmlhbHMvbWF0ZXJpYWxzL01BVF9DSElUSU4gYi9kb2MvbWF0ZXJpYWxzL21hdGVyaWFscy9NQVRfQ0hJVElOCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjA4MWU2NWQKLS0tIC9kZXYvbnVsbAorKysgYi9kb2MvbWF0ZXJpYWxzL21hdGVyaWFscy9NQVRfQ0hJVElOCkBAIC0wLDAgKzEsMTkgQEAKK01hdGVyaWFsaWQ6CitNQVRfQ0hJVElOICAgICAgICAgICAgICAgImNoaXRpbiIKKworTmFtZToKKyJDaGl0aW4iICJDaGl0aW5zIiAiQ2hpdGluIiAiQ2hpdGluIgorCitHZXNjaGxlY2h0OgorTgorCitCZXNjaHJlaWJ1bmc6CistIG5pY2h0IHZvcmhhbmRlbiAtCisKK0Vya2VubmJhcmtlaXQ6CistIGtlaW5lIEVpbnNjaHJhZW5rdW5nIC0KKworR3J1cHBlbnp1Z2Vob2VyaWdrZWl0OgorTUFUR1JPVVBfQklPOjEwMAorTUFUR1JPVVBfU09MSUQ6MTAwCitNQVRHUk9VUF9ERUFEOjEwMApkaWZmIC0tZ2l0IGEvZG9jL21hdGVyaWFscy9tYXRlcmlhbHMvTUFUX0NITE9SIGIvZG9jL21hdGVyaWFscy9tYXRlcmlhbHMvTUFUX0NITE9SCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmYzMmVhODgKLS0tIC9kZXYvbnVsbAorKysgYi9kb2MvbWF0ZXJpYWxzL21hdGVyaWFscy9NQVRfQ0hMT1IKQEAgLTAsMCArMSwyMCBAQAorTWF0ZXJpYWxpZDoKK01BVF9DSExPUiAgICAgICAgICAgICAgICAiY2hsb3IiCisKK05hbWU6CisiQ2hsb3JnYXMiICJDaGxvcmdhc2VzIiAiQ2hsb3JnYXMiICJDaGxvcmdhcyIKKworR2VzY2hsZWNodDoKK04KKworQmVzY2hyZWlidW5nOgorLSBuaWNodCB2b3JoYW5kZW4gLQorCitFcmtlbm5iYXJrZWl0OgorTUFUX01JU0NfR0FTOjIwCitNQVRfQ0hMT1IKKworR3J1cHBlbnp1Z2Vob2VyaWdrZWl0OgorTUFUR1JPVVBfUE9JU09OT1VTOjEwMAorTUFUR1JPVVBfR0FTOjEwMAorTUFUR1JPVVBfSU5WSVM6MTAwCmRpZmYgLS1naXQgYS9kb2MvbWF0ZXJpYWxzL21hdGVyaWFscy9NQVRfQ0hST01JVU0gYi9kb2MvbWF0ZXJpYWxzL21hdGVyaWFscy9NQVRfQ0hST01JVU0KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYWExZDE1ZgotLS0gL2Rldi9udWxsCisrKyBiL2RvYy9tYXRlcmlhbHMvbWF0ZXJpYWxzL01BVF9DSFJPTUlVTQpAQCAtMCwwICsxLDIwIEBACitNYXRlcmlhbGlkOgorTUFUX0NIUk9NSVVNICAgICAgICAgICAgICJjaHJvbWl1bSIKKworTmFtZToKKyJDaHJvbSIgIkNocm9tcyIgIkNocm9tIiAiQ2hyb20iCisKK0dlc2NobGVjaHQ6CitOCisKK0Jlc2NocmVpYnVuZzoKK3NpbGJlcndlaXNzLCB3ZWljaCwgemFlaAorCitFcmtlbm5iYXJrZWl0OgorTUFUX01JU0NfTUVUQUw6MAorTUFUX1NJTFZFUjoxNQorTUFUX0NIUk9NSVVNCisKK0dydXBwZW56dWdlaG9lcmlna2VpdDoKK01BVEdST1VQX01FVEFMOjEwMAorTUFUR1JPVVBfU09MSUQ6MTAwCmRpZmYgLS1naXQgYS9kb2MvbWF0ZXJpYWxzL21hdGVyaWFscy9NQVRfQ0lOTkFCQVIgYi9kb2MvbWF0ZXJpYWxzL21hdGVyaWFscy9NQVRfQ0lOTkFCQVIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMmE1MTllYQotLS0gL2Rldi9udWxsCisrKyBiL2RvYy9tYXRlcmlhbHMvbWF0ZXJpYWxzL01BVF9DSU5OQUJBUgpAQCAtMCwwICsxLDIwIEBACitNYXRlcmlhbGlkOgorTUFUX0NJTk5BQkFSICAgICAgICAgICAgICJjaW5uYWJhciIKKworTmFtZToKKyJaaW5ub2JlciIgIlppbm5vYmVycyIgIlppbm5vYmVyIiAiWmlubm9iZXIiCisKK0dlc2NobGVjaHQ6CitOCisKK0Jlc2NocmVpYnVuZzoKK2JsZWlncmF1IGJpcyBzY2hhcmxhY2hyb3QKKworRXJrZW5uYmFya2VpdDoKK01BVF9NSVNDX01JTkVSQUw6MjAKK01BVF9DSU5OQUJBUgorCitHcnVwcGVuenVnZWhvZXJpZ2tlaXQ6CitNQVRHUk9VUF9NSU5FUkFMOjEwMAorTUFUR1JPVVBfU09MSUQ6MTAwCitNQVRHUk9VUF9TVE9ORToxMDAKZGlmZiAtLWdpdCBhL2RvYy9tYXRlcmlhbHMvbWF0ZXJpYWxzL01BVF9DTEFZIGIvZG9jL21hdGVyaWFscy9tYXRlcmlhbHMvTUFUX0NMQVkKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZWE5Nzk1ZAotLS0gL2Rldi9udWxsCisrKyBiL2RvYy9tYXRlcmlhbHMvbWF0ZXJpYWxzL01BVF9DTEFZCkBAIC0wLDAgKzEsMTcgQEAKK01hdGVyaWFsaWQ6CitNQVRfQ0xBWSAgICAgICAgICAgICAgICAgImNsYXkiCisKK05hbWU6CisiVG9uIiAiVG9ucyIgIlRvbiIgIlRvbiIKKworR2VzY2hsZWNodDoKK00KKworQmVzY2hyZWlidW5nOgorLSBuaWNodCB2b3JoYW5kZW4gLQorCitFcmtlbm5iYXJrZWl0OgorLSBrZWluZSBFaW5zY2hyYWVua3VuZyAtCisKK0dydXBwZW56dWdlaG9lcmlna2VpdDoKK01BVEdST1VQX1NPTElEOjEwMApkaWZmIC0tZ2l0IGEvZG9jL21hdGVyaWFscy9tYXRlcmlhbHMvTUFUX0NMT1RIIGIvZG9jL21hdGVyaWFscy9tYXRlcmlhbHMvTUFUX0NMT1RICm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjgzYTRkMTUKLS0tIC9kZXYvbnVsbAorKysgYi9kb2MvbWF0ZXJpYWxzL21hdGVyaWFscy9NQVRfQ0xPVEgKQEAgLTAsMCArMSwyMSBAQAorTWF0ZXJpYWxpZDoKK01BVF9DTE9USCAgICAgICAgICAgICAgICAiY2xvdGgiCisKK05hbWU6CisiU3RvZmYiICJTdG9mZmVzIiAiU3RvZmYiICJTdG9mZiIKKworR2VzY2hsZWNodDoKK00KKworQmVzY2hyZWlidW5nOgorLSBuaWNodCB2b3JoYW5kZW4gLQorCitFcmtlbm5iYXJrZWl0OgorLSBrZWluZSBFaW5zY2hyYWVua3VuZyAtCisKK0dydXBwZW56dWdlaG9lcmlna2VpdDoKK01BVEdST1VQX0lORkxBTU1BQkxFOjEwMAorTUFUR1JPVVBfQ0xPVEg6MTAwCitNQVRHUk9VUF9CSU86MTAwCitNQVRHUk9VUF9GTEVYSUJMRToxMDAKK01BVEdST1VQX1NPTElEOjEwMApkaWZmIC0tZ2l0IGEvZG9jL21hdGVyaWFscy9tYXRlcmlhbHMvTUFUX0NPQkFMVCBiL2RvYy9tYXRlcmlhbHMvbWF0ZXJpYWxzL01BVF9DT0JBTFQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNTEzYjMyYQotLS0gL2Rldi9udWxsCisrKyBiL2RvYy9tYXRlcmlhbHMvbWF0ZXJpYWxzL01BVF9DT0JBTFQKQEAgLTAsMCArMSwyMCBAQAorTWF0ZXJpYWxpZDoKK01BVF9DT0JBTFQgICAgICAgICAgICAgICAiQ28iCisKK05hbWU6CisiQ29iYWx0IiAiQ29iYWx0cyIgIkNvYmFsdCIgIkNvYmFsdCIKKworR2VzY2hsZWNodDoKK04KKworQmVzY2hyZWlidW5nOgoraGFydGVzLCBzcHJvZWRlcyBMZWdpZXJ1bmdtZXQuCisKK0Vya2VubmJhcmtlaXQ6CitNQVRfTUlTQ19NRVRBTDoyNQorTUFUX0NPQkFMVAorCitHcnVwcGVuenVnZWhvZXJpZ2tlaXQ6CitNQVRHUk9VUF9NRVRBTDoxMDAKK01BVEdST1VQX01BR05FVElDOjEwMAorTUFUR1JPVVBfU09MSUQ6MTAwCmRpZmYgLS1naXQgYS9kb2MvbWF0ZXJpYWxzL21hdGVyaWFscy9NQVRfQ09DQUlORSBiL2RvYy9tYXRlcmlhbHMvbWF0ZXJpYWxzL01BVF9DT0NBSU5FCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmQ2OWQ0MTMKLS0tIC9kZXYvbnVsbAorKysgYi9kb2MvbWF0ZXJpYWxzL21hdGVyaWFscy9NQVRfQ09DQUlORQpAQCAtMCwwICsxLDE5IEBACitNYXRlcmlhbGlkOgorTUFUX0NPQ0FJTkUgICAgICAgICAgICAgICJjb2NhaW5lIgorCitOYW1lOgorIktva2FpbiIgIktva2FpbnMiICJLb2thaW4iICJLb2thaW4iCisKK0dlc2NobGVjaHQ6CitOCisKK0Jlc2NocmVpYnVuZzoKKy0gbmljaHQgdm9yaGFuZGVuIC0KKworRXJrZW5uYmFya2VpdDoKK01BVF9DSEFMSzo1MAorTUFUX0NPQ0FJTkUKKworR3J1cHBlbnp1Z2Vob2VyaWdrZWl0OgorTUFUR1JPVVBfRFJVRzoxMDAKK01BVEdST1VQX1NPTElEOjEwMApkaWZmIC0tZ2l0IGEvZG9jL21hdGVyaWFscy9tYXRlcmlhbHMvTUFUX0NPTkNSRVRFIGIvZG9jL21hdGVyaWFscy9tYXRlcmlhbHMvTUFUX0NPTkNSRVRFCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmJiNzExY2MKLS0tIC9kZXYvbnVsbAorKysgYi9kb2MvbWF0ZXJpYWxzL21hdGVyaWFscy9NQVRfQ09OQ1JFVEUKQEAgLTAsMCArMSwxOCBAQAorTWF0ZXJpYWxpZDoKK01BVF9DT05DUkVURSAgICAgICAgICAgICAiY29uY3JldGUiCisKK05hbWU6CisiQmV0b24iICJCZXRvbnMiICJCZXRvbiIgIkJldG9uIgorCitHZXNjaGxlY2h0OgorTQorCitCZXNjaHJlaWJ1bmc6CistIG5pY2h0IHZvcmhhbmRlbiAtCisKK0Vya2VubmJhcmtlaXQ6CistIGtlaW5lIEVpbnNjaHJhZW5rdW5nIC0KKworR3J1cHBlbnp1Z2Vob2VyaWdrZWl0OgorTUFUR1JPVVBfU1RPTkU6MTAwCitNQVRHUk9VUF9TT0xJRDoxMDAKZGlmZiAtLWdpdCBhL2RvYy9tYXRlcmlhbHMvbWF0ZXJpYWxzL01BVF9DT1BQRVIgYi9kb2MvbWF0ZXJpYWxzL21hdGVyaWFscy9NQVRfQ09QUEVSCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjdjMzUxYTYKLS0tIC9kZXYvbnVsbAorKysgYi9kb2MvbWF0ZXJpYWxzL21hdGVyaWFscy9NQVRfQ09QUEVSCkBAIC0wLDAgKzEsMTkgQEAKK01hdGVyaWFsaWQ6CitNQVRfQ09QUEVSICAgICAgICAgICAgICAgIkN1IgorCitOYW1lOgorIkt1cGZlciIgIkt1cGZlcnMiICJLdXBmZXIiICJLdXBmZXIiCisKK0dlc2NobGVjaHQ6CitOCisKK0Jlc2NocmVpYnVuZzoKK3dlaWNoLCByb3QKKworRXJrZW5uYmFya2VpdDoKK01BVF9NSVNDX01FVEFMOjUKK01BVF9DT1BQRVIKKworR3J1cHBlbnp1Z2Vob2VyaWdrZWl0OgorTUFUR1JPVVBfTUVUQUw6MTAwCitNQVRHUk9VUF9TT0xJRDoxMDAKZGlmZiAtLWdpdCBhL2RvYy9tYXRlcmlhbHMvbWF0ZXJpYWxzL01BVF9DT1JLIGIvZG9jL21hdGVyaWFscy9tYXRlcmlhbHMvTUFUX0NPUksKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYTRmYzNjNgotLS0gL2Rldi9udWxsCisrKyBiL2RvYy9tYXRlcmlhbHMvbWF0ZXJpYWxzL01BVF9DT1JLCkBAIC0wLDAgKzEsMjIgQEAKK01hdGVyaWFsaWQ6CitNQVRfQ09SSyAgICAgICAgICAgICAgICAgImNvcmsiCisKK05hbWU6CisiS29yayIgIktvcmtzIiAiS29yayIgIktvcmsiCisKK0dlc2NobGVjaHQ6CitNCisKK0Jlc2NocmVpYnVuZzoKK3dlaWNoCisKK0Vya2VubmJhcmtlaXQ6CistIGtlaW5lIEVpbnNjaHJhZW5rdW5nIC0KKworR3J1cHBlbnp1Z2Vob2VyaWdrZWl0OgorTUFUR1JPVVBfREVBRDoxMDAKK01BVEdST1VQX0hFUkJBTDoxMDAKK01BVEdST1VQX0JJTzoxMDAKK01BVEdST1VQX0lORkxBTU1BQkxFOjEwMAorTUFUR1JPVVBfU09MSUQ6MTAwCitNQVRHUk9VUF9XT09EOjEwMApkaWZmIC0tZ2l0IGEvZG9jL21hdGVyaWFscy9tYXRlcmlhbHMvTUFUX0NPVFRPTiBiL2RvYy9tYXRlcmlhbHMvbWF0ZXJpYWxzL01BVF9DT1RUT04KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYTJkOTRjYQotLS0gL2Rldi9udWxsCisrKyBiL2RvYy9tYXRlcmlhbHMvbWF0ZXJpYWxzL01BVF9DT1RUT04KQEAgLTAsMCArMSwyMSBAQAorTWF0ZXJpYWxpZDoKK01BVF9DT1RUT04gICAgICAgICAgICAgICAiY290dG9uIgorCitOYW1lOgorIkJhdW13b2xsZSIgIkJhdW13b2xsZSIgIkJhdW13b2xsZSIgIkJhdW13b2xsZSIKKworR2VzY2hsZWNodDoKK0YKKworQmVzY2hyZWlidW5nOgorLSBuaWNodCB2b3JoYW5kZW4gLQorCitFcmtlbm5iYXJrZWl0OgorLSBrZWluZSBFaW5zY2hyYWVua3VuZyAtCisKK0dydXBwZW56dWdlaG9lcmlna2VpdDoKK01BVEdST1VQX0lORkxBTU1BQkxFOjEwMAorTUFUR1JPVVBfQ0xPVEg6MTAwCitNQVRHUk9VUF9CSU86MTAwCitNQVRHUk9VUF9GTEVYSUJMRToxMDAKK01BVEdST1VQX1NPTElEOjEwMApkaWZmIC0tZ2l0IGEvZG9jL21hdGVyaWFscy9tYXRlcmlhbHMvTUFUX0NSWVNUQUwgYi9kb2MvbWF0ZXJpYWxzL21hdGVyaWFscy9NQVRfQ1JZU1RBTApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5hYWIyZWI1Ci0tLSAvZGV2L251bGwKKysrIGIvZG9jL21hdGVyaWFscy9tYXRlcmlhbHMvTUFUX0NSWVNUQUwKQEAgLTAsMCArMSwxOSBAQAorTWF0ZXJpYWxpZDoKK01BVF9DUllTVEFMICAgICAgICAgICAgICAiY3J5c3RhbCIKKworTmFtZToKKyJLcmlzdGFsbCIgIktyaXN0YWxscyIgIktyaXN0YWxsIiAiS3Jpc3RhbGwiCisKK0dlc2NobGVjaHQ6CitNCisKK0Jlc2NocmVpYnVuZzoKK2tsYXIgYmlzIHdlaXNzCisKK0Vya2VubmJhcmtlaXQ6CistIGtlaW5lIEVpbnNjaHJhZW5rdW5nIC0KKworR3J1cHBlbnp1Z2Vob2VyaWdrZWl0OgorTUFUR1JPVVBfTUlORVJBTDoxMDAKK01BVEdST1VQX1NPTElEOjEwMAorTUFUR1JPVVBfU1RPTkU6MTAwCmRpZmYgLS1naXQgYS9kb2MvbWF0ZXJpYWxzL21hdGVyaWFscy9NQVRfREVUT05BVElOR19HQVMgYi9kb2MvbWF0ZXJpYWxzL21hdGVyaWFscy9NQVRfREVUT05BVElOR19HQVMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uODBhODhlNQotLS0gL2Rldi9udWxsCisrKyBiL2RvYy9tYXRlcmlhbHMvbWF0ZXJpYWxzL01BVF9ERVRPTkFUSU5HX0dBUwpAQCAtMCwwICsxLDIxIEBACitNYXRlcmlhbGlkOgorTUFUX0RFVE9OQVRJTkdfR0FTICAgICAgICJveHloeWRyb2dlbiIKKworTmFtZToKKyJLbmFsbGdhcyIgIktuYWxsZ2FzZXMiICJLbmFsbGdhcyIgIktuYWxsZ2FzIgorCitHZXNjaGxlY2h0OgorTgorCitCZXNjaHJlaWJ1bmc6CistIG5pY2h0IHZvcmhhbmRlbiAtCisKK0Vya2VubmJhcmtlaXQ6CitNQVRfTUlTQ19HQVM6MjAKK01BVF9ERVRPTkFUSU5HX0dBUworCitHcnVwcGVuenVnZWhvZXJpZ2tlaXQ6CitNQVRHUk9VUF9JTkZMQU1NQUJMRToxMDAKK01BVEdST1VQX0dBUzoxMDAKK01BVEdST1VQX0VYUExPU0lWRToxMDAKK01BVEdST1VQX0lOVklTOjEwMApkaWZmIC0tZ2l0IGEvZG9jL21hdGVyaWFscy9tYXRlcmlhbHMvTUFUX0RJQU1PTkQgYi9kb2MvbWF0ZXJpYWxzL21hdGVyaWFscy9NQVRfRElBTU9ORApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5iOWY5ZmMwCi0tLSAvZGV2L251bGwKKysrIGIvZG9jL21hdGVyaWFscy9tYXRlcmlhbHMvTUFUX0RJQU1PTkQKQEAgLTAsMCArMSwyMiBAQAorTWF0ZXJpYWxpZDoKK01BVF9ESUFNT05EICAgICAgICAgICAgICAiZGlhbW9uZCIKKworTmFtZToKKyJEaWFtYW50IiAiRGlhbWFudHMiICJEaWFtYW50IiAiRGlhbWFudCIKKworR2VzY2hsZWNodDoKK00KKworQmVzY2hyZWlidW5nOgorLSBuaWNodCB2b3JoYW5kZW4gLQorCitFcmtlbm5iYXJrZWl0OgorTUFUX01JU0NfSkVXRUw6MAorTUFUX0NSWVNUQUw6MjUKK01BVF9ESUFNT05ECisKK0dydXBwZW56dWdlaG9lcmlna2VpdDoKK01BVEdST1VQX01JTkVSQUw6MTAwCitNQVRHUk9VUF9TT0xJRDoxMDAKK01BVEdST1VQX0pFV0VMOjEwMAorTUFUR1JPVVBfU1RPTkU6MTAwCmRpZmYgLS1naXQgYS9kb2MvbWF0ZXJpYWxzL21hdGVyaWFscy9NQVRfRFVTVCBiL2RvYy9tYXRlcmlhbHMvbWF0ZXJpYWxzL01BVF9EVVNUCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmQ1YTVjNDkKLS0tIC9kZXYvbnVsbAorKysgYi9kb2MvbWF0ZXJpYWxzL21hdGVyaWFscy9NQVRfRFVTVApAQCAtMCwwICsxLDE3IEBACitNYXRlcmlhbGlkOgorTUFUX0RVU1QgICAgICAgICAgICAgICAgICJkdXN0IgorCitOYW1lOgorIlN0YXViIiAiU3RhdWJzIiAiU3RhdWIiICJTdGF1YiIKKworR2VzY2hsZWNodDoKK00KKworQmVzY2hyZWlidW5nOgorLSBuaWNodCB2b3JoYW5kZW4gLQorCitFcmtlbm5iYXJrZWl0OgorLSBrZWluZSBFaW5zY2hyYWVua3VuZyAtCisKK0dydXBwZW56dWdlaG9lcmlna2VpdDoKK01BVEdST1VQX1NPTElEOjEwMApkaWZmIC0tZ2l0IGEvZG9jL21hdGVyaWFscy9tYXRlcmlhbHMvTUFUX0VBUlRIIGIvZG9jL21hdGVyaWFscy9tYXRlcmlhbHMvTUFUX0VBUlRICm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjhmZjI4ZTAKLS0tIC9kZXYvbnVsbAorKysgYi9kb2MvbWF0ZXJpYWxzL21hdGVyaWFscy9NQVRfRUFSVEgKQEAgLTAsMCArMSwxOCBAQAorTWF0ZXJpYWxpZDoKK01BVF9FQVJUSCAgICAgICAgICAgICAgICAiZWFydGgiCisKK05hbWU6CisiRXJkZSIgIkVyZGUiICJFcmRlIiAiRXJkZSIKKworR2VzY2hsZWNodDoKK0YKKworQmVzY2hyZWlidW5nOgorLSBuaWNodCB2b3JoYW5kZW4gLQorCitFcmtlbm5iYXJrZWl0OgorLSBrZWluZSBFaW5zY2hyYWVua3VuZyAtCisKK0dydXBwZW56dWdlaG9lcmlna2VpdDoKK01BVEdST1VQX0VMRU1FTlRBTDoxMDAKK01BVEdST1VQX1NPTElEOjEwMApkaWZmIC0tZ2l0IGEvZG9jL21hdGVyaWFscy9tYXRlcmlhbHMvTUFUX0VCT05ZIGIvZG9jL21hdGVyaWFscy9tYXRlcmlhbHMvTUFUX0VCT05ZCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjkzM2NlNjYKLS0tIC9kZXYvbnVsbAorKysgYi9kb2MvbWF0ZXJpYWxzL21hdGVyaWFscy9NQVRfRUJPTlkKQEAgLTAsMCArMSwyNCBAQAorTWF0ZXJpYWxpZDoKK01BVF9FQk9OWSAgICAgICAgICAgICAgICAiZWJvbnkiCisKK05hbWU6CisiRWJlbmhvbHoiICJFYmVuaG9semVzIiAiRWJlbmhvbHoiICJFYmVuaG9seiIKKworR2VzY2hsZWNodDoKK04KKworQmVzY2hyZWlidW5nOgorc2Nod2FyegorCitFcmtlbm5iYXJrZWl0OgorTUFUX01JU0NfREVDSURVT1VTX1dPT0Q6MTUKK01BVF9FQk9OWQorCitHcnVwcGVuenVnZWhvZXJpZ2tlaXQ6CitNQVRHUk9VUF9ERUFEOjEwMAorTUFUR1JPVVBfSEVSQkFMOjEwMAorTUFUR1JPVVBfREVDSURVT1VTX1dPT0Q6MTAwCitNQVRHUk9VUF9CSU86MTAwCitNQVRHUk9VUF9JTkZMQU1NQUJMRToxMDAKK01BVEdST1VQX1NPTElEOjEwMAorTUFUR1JPVVBfV09PRDoxMDAKZGlmZiAtLWdpdCBhL2RvYy9tYXRlcmlhbHMvbWF0ZXJpYWxzL01BVF9FTEVLVFJPTiBiL2RvYy9tYXRlcmlhbHMvbWF0ZXJpYWxzL01BVF9FTEVLVFJPTgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4xMWQ2NGY5Ci0tLSAvZGV2L251bGwKKysrIGIvZG9jL21hdGVyaWFscy9tYXRlcmlhbHMvTUFUX0VMRUtUUk9OCkBAIC0wLDAgKzEsMjAgQEAKK01hdGVyaWFsaWQ6CitNQVRfRUxFS1RST04gICAgICAgICAgICAgImVsZWt0cm9uIgorCitOYW1lOgorIkVsZWt0cm9uIiAiRWxla3Ryb25zIiAiRWxla3Ryb24iICJFbGVrdHJvbiIKKworR2VzY2hsZWNodDoKK04KKworQmVzY2hyZWlidW5nOgorYmlzIDc1JSBHb2xkLCBSZXN0IFNpbGJlcgorCitFcmtlbm5iYXJrZWl0OgorTUFUX01JU0NfTUVUQUw6MAorTUFUX0dPTEQ6NjYKK01BVF9FTEVLVFJPTgorCitHcnVwcGVuenVnZWhvZXJpZ2tlaXQ6CitNQVRHUk9VUF9NRVRBTDoxMDAKK01BVEdST1VQX1NPTElEOjEwMApkaWZmIC0tZ2l0IGEvZG9jL21hdGVyaWFscy9tYXRlcmlhbHMvTUFUX0VNRVJBTEQgYi9kb2MvbWF0ZXJpYWxzL21hdGVyaWFscy9NQVRfRU1FUkFMRApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5kYWFkMmMwCi0tLSAvZGV2L251bGwKKysrIGIvZG9jL21hdGVyaWFscy9tYXRlcmlhbHMvTUFUX0VNRVJBTEQKQEAgLTAsMCArMSwyMSBAQAorTWF0ZXJpYWxpZDoKK01BVF9FTUVSQUxEICAgICAgICAgICAgICAiZW1lcmFsZCIKKworTmFtZToKKyJTbWFyYWdkIiAiU21hcmFnZHMiICJTbWFyYWdkIiAiU21hcmFnZCIKKworR2VzY2hsZWNodDoKK00KKworQmVzY2hyZWlidW5nOgorZ3J1ZW4KKworRXJrZW5uYmFya2VpdDoKK01BVF9NSVNDX0pFV0VMOjI1CitNQVRfRU1FUkFMRAorCitHcnVwcGVuenVnZWhvZXJpZ2tlaXQ6CitNQVRHUk9VUF9NSU5FUkFMOjEwMAorTUFUR1JPVVBfU09MSUQ6MTAwCitNQVRHUk9VUF9KRVdFTDoxMDAKK01BVEdST1VQX1NUT05FOjEwMApkaWZmIC0tZ2l0IGEvZG9jL21hdGVyaWFscy9tYXRlcmlhbHMvTUFUX0ZBVCBiL2RvYy9tYXRlcmlhbHMvbWF0ZXJpYWxzL01BVF9GQVQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOThlMmEwMwotLS0gL2Rldi9udWxsCisrKyBiL2RvYy9tYXRlcmlhbHMvbWF0ZXJpYWxzL01BVF9GQVQKQEAgLTAsMCArMSwyMiBAQAorTWF0ZXJpYWxpZDoKK01BVF9GQVQgICAgICAgICAgICAgICAgICAiZmF0IgorCitOYW1lOgorIkZldHQiICJGZXR0cyIgIkZldHQiICJGZXR0IgorCitHZXNjaGxlY2h0OgorTgorCitCZXNjaHJlaWJ1bmc6CistIG5pY2h0IHZvcmhhbmRlbiAtCisKK0Vya2VubmJhcmtlaXQ6CitNQVRfTUlTQ19GT09EOi01MAorTUFUX0ZBVAorCitHcnVwcGVuenVnZWhvZXJpZ2tlaXQ6CitNQVRHUk9VUF9ERUFEOjEwMAorTUFUR1JPVVBfRUFUQUJMRToxMDAKK01BVEdST1VQX0JJTzoxMDAKK01BVEdST1VQX0lORkxBTU1BQkxFOjEwMAorTUFUR1JPVVBfU09MSUQ6MTAwCmRpZmYgLS1naXQgYS9kb2MvbWF0ZXJpYWxzL21hdGVyaWFscy9NQVRfRkVBVEhFUiBiL2RvYy9tYXRlcmlhbHMvbWF0ZXJpYWxzL01BVF9GRUFUSEVSCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjFmNTFlY2MKLS0tIC9kZXYvbnVsbAorKysgYi9kb2MvbWF0ZXJpYWxzL21hdGVyaWFscy9NQVRfRkVBVEhFUgpAQCAtMCwwICsxLDIxIEBACitNYXRlcmlhbGlkOgorTUFUX0ZFQVRIRVIgICAgICAgICAgICAgICJmZWF0aGVyIgorCitOYW1lOgorIkZlZGVybiIgIkZlZGVybiIgIkZlZGVybiIgIkZlZGVybiIKKworR2VzY2hsZWNodDoKK0YKKworQmVzY2hyZWlidW5nOgorLSBuaWNodCB2b3JoYW5kZW4gLQorCitFcmtlbm5iYXJrZWl0OgorLSBrZWluZSBFaW5zY2hyYWVua3VuZyAtCisKK0dydXBwZW56dWdlaG9lcmlna2VpdDoKK01BVEdST1VQX0RFQUQ6MTAwCitNQVRHUk9VUF9JTkZMQU1NQUJMRToxMDAKK01BVEdST1VQX0JJTzoxMDAKK01BVEdST1VQX0ZMRVhJQkxFOjEwMAorTUFUR1JPVVBfU09MSUQ6MTAwCmRpZmYgLS1naXQgYS9kb2MvbWF0ZXJpYWxzL21hdGVyaWFscy9NQVRfRkVMVCBiL2RvYy9tYXRlcmlhbHMvbWF0ZXJpYWxzL01BVF9GRUxUCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmVhZDdkNDkKLS0tIC9kZXYvbnVsbAorKysgYi9kb2MvbWF0ZXJpYWxzL21hdGVyaWFscy9NQVRfRkVMVApAQCAtMCwwICsxLDIxIEBACitNYXRlcmlhbGlkOgorTUFUX0ZFTFQgICAgICAgICAgICAgICAgICJmZWx0IgorCitOYW1lOgorIkZpbHoiICJGaWx6ZXMiICJGaWx6IiAiRmlseiIKKworR2VzY2hsZWNodDoKK00KKworQmVzY2hyZWlidW5nOgorLSBuaWNodCB2b3JoYW5kZW4gLQorCitFcmtlbm5iYXJrZWl0OgorLSBrZWluZSBFaW5zY2hyYWVua3VuZyAtCisKK0dydXBwZW56dWdlaG9lcmlna2VpdDoKK01BVEdST1VQX0lORkxBTU1BQkxFOjEwMAorTUFUR1JPVVBfQ0xPVEg6MTAwCitNQVRHUk9VUF9CSU86MTAwCitNQVRHUk9VUF9GTEVYSUJMRToxMDAKK01BVEdST1VQX1NPTElEOjEwMApkaWZmIC0tZ2l0IGEvZG9jL21hdGVyaWFscy9tYXRlcmlhbHMvTUFUX0ZJUiBiL2RvYy9tYXRlcmlhbHMvbWF0ZXJpYWxzL01BVF9GSVIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMGZkMDE3ZQotLS0gL2Rldi9udWxsCisrKyBiL2RvYy9tYXRlcmlhbHMvbWF0ZXJpYWxzL01BVF9GSVIKQEAgLTAsMCArMSwyNCBAQAorTWF0ZXJpYWxpZDoKK01BVF9GSVIgICAgICAgICAgICAgICAgICAiZmlyIgorCitOYW1lOgorIlRhbm5lbmhvbHoiICJUYW5uZW5ob2x6ZXMiICJUYW5uZW5ob2x6IiAiVGFubmVuaG9seiIKKworR2VzY2hsZWNodDoKK04KKworQmVzY2hyZWlidW5nOgordHJvY2tlbiAoRG91Z2xhc2llKQorCitFcmtlbm5iYXJrZWl0OgorTUFUX01JU0NfQ09OSUZFUl9XT09EOjE1CitNQVRfRklSCisKK0dydXBwZW56dWdlaG9lcmlna2VpdDoKK01BVEdST1VQX0RFQUQ6MTAwCitNQVRHUk9VUF9IRVJCQUw6MTAwCitNQVRHUk9VUF9DT05JRkVSX1dPT0Q6MTAwCitNQVRHUk9VUF9JTkZMQU1NQUJMRToxMDAKK01BVEdST1VQX0JJTzoxMDAKK01BVEdST1VQX1NPTElEOjEwMAorTUFUR1JPVVBfV09PRDoxMDAKZGlmZiAtLWdpdCBhL2RvYy9tYXRlcmlhbHMvbWF0ZXJpYWxzL01BVF9GSVJFIGIvZG9jL21hdGVyaWFscy9tYXRlcmlhbHMvTUFUX0ZJUkUKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uODFiOTRhYQotLS0gL2Rldi9udWxsCisrKyBiL2RvYy9tYXRlcmlhbHMvbWF0ZXJpYWxzL01BVF9GSVJFCkBAIC0wLDAgKzEsMTkgQEAKK01hdGVyaWFsaWQ6CitNQVRfRklSRSAgICAgICAgICAgICAgICAgImZpcmUiCisKK05hbWU6CisiRmV1ZXIiICJGZXVlcnMiICJGZXVlciIgIkZldWVyIgorCitHZXNjaGxlY2h0OgorTgorCitCZXNjaHJlaWJ1bmc6CistIG5pY2h0IHZvcmhhbmRlbiAtCisKK0Vya2VubmJhcmtlaXQ6CistIGtlaW5lIEVpbnNjaHJhZW5rdW5nIC0KKworR3J1cHBlbnp1Z2Vob2VyaWdrZWl0OgorTUFUR1JPVVBfR0FTOjEwMAorTUFUR1JPVVBfSU5WSVM6MTAwCitNQVRHUk9VUF9FTEVNRU5UQUw6MTAwCmRpZmYgLS1naXQgYS9kb2MvbWF0ZXJpYWxzL21hdGVyaWFscy9NQVRfRkxFU0ggYi9kb2MvbWF0ZXJpYWxzL21hdGVyaWFscy9NQVRfRkxFU0gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uM2Y2MWU1NgotLS0gL2Rldi9udWxsCisrKyBiL2RvYy9tYXRlcmlhbHMvbWF0ZXJpYWxzL01BVF9GTEVTSApAQCAtMCwwICsxLDIxIEBACitNYXRlcmlhbGlkOgorTUFUX0ZMRVNIICAgICAgICAgICAgICAgICJmbGVzaCIKKworTmFtZToKKyJGbGVpc2NoIiAiRmxlaXNjaGVzIiAiRmxlaXNjaCIgIkZsZWlzY2giCisKK0dlc2NobGVjaHQ6CitOCisKK0Jlc2NocmVpYnVuZzoKKy0gbmljaHQgdm9yaGFuZGVuIC0KKworRXJrZW5uYmFya2VpdDoKK01BVF9NSVNDX0ZPT0Q6LTUwCitNQVRfRkxFU0gKKworR3J1cHBlbnp1Z2Vob2VyaWdrZWl0OgorTUFUR1JPVVBfREVBRDoxMDAKK01BVEdST1VQX0JJTzoxMDAKK01BVEdST1VQX0VBVEFCTEU6MTAwCitNQVRHUk9VUF9TT0xJRDoxMDAKZGlmZiAtLWdpdCBhL2RvYy9tYXRlcmlhbHMvbWF0ZXJpYWxzL01BVF9GTElOVCBiL2RvYy9tYXRlcmlhbHMvbWF0ZXJpYWxzL01BVF9GTElOVApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi40ZWE1Y2E5Ci0tLSAvZGV2L251bGwKKysrIGIvZG9jL21hdGVyaWFscy9tYXRlcmlhbHMvTUFUX0ZMSU5UCkBAIC0wLDAgKzEsMTggQEAKK01hdGVyaWFsaWQ6CitNQVRfRkxJTlQgICAgICAgICAgICAgICAgImZsaW50IgorCitOYW1lOgorIkZldWVyc3RlaW4iICJGZXVlcnN0ZWlucyIgIkZldWVyc3RlaW4iICJGZXVlcnN0ZWluIgorCitHZXNjaGxlY2h0OgorTQorCitCZXNjaHJlaWJ1bmc6CistIG5pY2h0IHZvcmhhbmRlbiAtCisKK0Vya2VubmJhcmtlaXQ6CistIGtlaW5lIEVpbnNjaHJhZW5rdW5nIC0KKworR3J1cHBlbnp1Z2Vob2VyaWdrZWl0OgorTUFUR1JPVVBfU1RPTkU6MTAwCitNQVRHUk9VUF9TT0xJRDoxMDAKZGlmZiAtLWdpdCBhL2RvYy9tYXRlcmlhbHMvbWF0ZXJpYWxzL01BVF9GTFVPUklURSBiL2RvYy9tYXRlcmlhbHMvbWF0ZXJpYWxzL01BVF9GTFVPUklURQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi40MDUyYWQ0Ci0tLSAvZGV2L251bGwKKysrIGIvZG9jL21hdGVyaWFscy9tYXRlcmlhbHMvTUFUX0ZMVU9SSVRFCkBAIC0wLDAgKzEsMjEgQEAKK01hdGVyaWFsaWQ6CitNQVRfRkxVT1JJVEUgICAgICAgICAgICAgImZsdW9yaXRlIgorCitOYW1lOgorIkZsdXNzc3BhdCIgIkZsdXNzc3BhdGVzIiAiRmx1c3NzcGF0IiAiRmx1c3NzcGF0IgorCitHZXNjaGxlY2h0OgorTQorCitCZXNjaHJlaWJ1bmc6CitvZnQgZmx1b3Jlc3ppZXJlbmQKKworRXJrZW5uYmFya2VpdDoKK01BVF9NSVNDX01JTkVSQUw6MzMKK01BVF9PUlRIT0tMQVM6NTAKK01BVF9GTFVPUklURQorCitHcnVwcGVuenVnZWhvZXJpZ2tlaXQ6CitNQVRHUk9VUF9NSU5FUkFMOjEwMAorTUFUR1JPVVBfU09MSUQ6MTAwCitNQVRHUk9VUF9TVE9ORToxMDAKZGlmZiAtLWdpdCBhL2RvYy9tYXRlcmlhbHMvbWF0ZXJpYWxzL01BVF9GVU5HVVMgYi9kb2MvbWF0ZXJpYWxzL21hdGVyaWFscy9NQVRfRlVOR1VTCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjFmODQ1YTMKLS0tIC9kZXYvbnVsbAorKysgYi9kb2MvbWF0ZXJpYWxzL21hdGVyaWFscy9NQVRfRlVOR1VTCkBAIC0wLDAgKzEsMTkgQEAKK01hdGVyaWFsaWQ6CitNQVRfRlVOR1VTICAgICAgICAgICAgICAgImZ1bmd1cyIKKworTmFtZToKKyJQaWx6IiAiUGlsenMiICJQaWx6IiAiUGlseiIKKworR2VzY2hsZWNodDoKK00KKworQmVzY2hyZWlidW5nOgorLSBuaWNodCB2b3JoYW5kZW4gLQorCitFcmtlbm5iYXJrZWl0OgorLSBrZWluZSBFaW5zY2hyYWVua3VuZyAtCisKK0dydXBwZW56dWdlaG9lcmlna2VpdDoKK01BVEdST1VQX0JJTzoxMDAKK01BVEdST1VQX1NPTElEOjEwMAorTUFUR1JPVVBfTElWSU5HOjEwMApkaWZmIC0tZ2l0IGEvZG9jL21hdGVyaWFscy9tYXRlcmlhbHMvTUFUX0dBUk5FVCBiL2RvYy9tYXRlcmlhbHMvbWF0ZXJpYWxzL01BVF9HQVJORVQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMTdhNGY4MwotLS0gL2Rldi9udWxsCisrKyBiL2RvYy9tYXRlcmlhbHMvbWF0ZXJpYWxzL01BVF9HQVJORVQKQEAgLTAsMCArMSwyMCBAQAorTWF0ZXJpYWxpZDoKK01BVF9HQVJORVQgICAgICAgICAgICAgICAiZ2FybmV0IgorCitOYW1lOgorIkdyYW5hdCIgIkdyYW5hdHMiICJHcmFuYXQiICJHcmFuYXQiCisKK0dlc2NobGVjaHQ6CitNCisKK0Jlc2NocmVpYnVuZzoKK3JvdCwgRWRlbHN0ZWluOiBLYXJmdW5rZWwKKworRXJrZW5uYmFya2VpdDoKKy0ga2VpbmUgRWluc2NocmFlbmt1bmcgLQorCitHcnVwcGVuenVnZWhvZXJpZ2tlaXQ6CitNQVRHUk9VUF9NSU5FUkFMOjEwMAorTUFUR1JPVVBfU09MSUQ6MTAwCitNQVRHUk9VUF9TVE9ORToxMDAKK01BVEdST1VQX0pFV0VMOjEwMApkaWZmIC0tZ2l0IGEvZG9jL21hdGVyaWFscy9tYXRlcmlhbHMvTUFUX0dIT1NUIGIvZG9jL21hdGVyaWFscy9tYXRlcmlhbHMvTUFUX0dIT1NUCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmJiZGQ4ZmMKLS0tIC9kZXYvbnVsbAorKysgYi9kb2MvbWF0ZXJpYWxzL21hdGVyaWFscy9NQVRfR0hPU1QKQEAgLTAsMCArMSwyMCBAQAorTWF0ZXJpYWxpZDoKK01BVF9HSE9TVCAgICAgICAgICAgICAgICAiZ2hvc3QiCisKK05hbWU6CisiR2Vpc3QiICJHZWlzdHMiICJHZWlzdCIgIkdlaXN0IgorCitHZXNjaGxlY2h0OgorTQorCitCZXNjaHJlaWJ1bmc6CistIG5pY2h0IHZvcmhhbmRlbiAtCisKK0Vya2VubmJhcmtlaXQ6CistIGtlaW5lIEVpbnNjaHJhZW5rdW5nIC0KKworR3J1cHBlbnp1Z2Vob2VyaWdrZWl0OgorTUFUR1JPVVBfQklPOjEwMAorTUFUR1JPVVBfR0FTOjEwMAorTUFUR1JPVVBfREVBRDoxMDAKK01BVEdST1VQX0lOVklTOjEwMApkaWZmIC0tZ2l0IGEvZG9jL21hdGVyaWFscy9tYXRlcmlhbHMvTUFUX0dMQVNTIGIvZG9jL21hdGVyaWFscy9tYXRlcmlhbHMvTUFUX0dMQVNTCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjVkYTdlMTMKLS0tIC9kZXYvbnVsbAorKysgYi9kb2MvbWF0ZXJpYWxzL21hdGVyaWFscy9NQVRfR0xBU1MKQEAgLTAsMCArMSwxNyBAQAorTWF0ZXJpYWxpZDoKK01BVF9HTEFTUyAgICAgICAgICAgICAgICAiZ2xhc3MiCisKK05hbWU6CisiR2xhcyIgIkdsYXNzZXMiICJHbGFzIiAiR2xhcyIKKworR2VzY2hsZWNodDoKK04KKworQmVzY2hyZWlidW5nOgorLSBuaWNodCB2b3JoYW5kZW4gLQorCitFcmtlbm5iYXJrZWl0OgorLSBrZWluZSBFaW5zY2hyYWVua3VuZyAtCisKK0dydXBwZW56dWdlaG9lcmlna2VpdDoKK01BVEdST1VQX1NPTElEOjEwMApkaWZmIC0tZ2l0IGEvZG9jL21hdGVyaWFscy9tYXRlcmlhbHMvTUFUX0dORUlTUyBiL2RvYy9tYXRlcmlhbHMvbWF0ZXJpYWxzL01BVF9HTkVJU1MKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYTAzZWVlYQotLS0gL2Rldi9udWxsCisrKyBiL2RvYy9tYXRlcmlhbHMvbWF0ZXJpYWxzL01BVF9HTkVJU1MKQEAgLTAsMCArMSwxOSBAQAorTWF0ZXJpYWxpZDoKK01BVF9HTkVJU1MgICAgICAgICAgICAgICAiZ25laXNzIgorCitOYW1lOgorIkduZWlzcyIgIkduZWlzc3MiICJHbmVpc3MiICJHbmVpc3MiCisKK0dlc2NobGVjaHQ6CitNCisKK0Jlc2NocmVpYnVuZzoKKy0gbmljaHQgdm9yaGFuZGVuIC0KKworRXJrZW5uYmFya2VpdDoKK01BVF9NSVNDX1NUT05FOjM1CitNQVRfR05FSVNTCisKK0dydXBwZW56dWdlaG9lcmlna2VpdDoKK01BVEdST1VQX1NUT05FOjEwMAorTUFUR1JPVVBfU09MSUQ6MTAwCmRpZmYgLS1naXQgYS9kb2MvbWF0ZXJpYWxzL21hdGVyaWFscy9NQVRfR09MRCBiL2RvYy9tYXRlcmlhbHMvbWF0ZXJpYWxzL01BVF9HT0xECm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjJkYzA1MWIKLS0tIC9kZXYvbnVsbAorKysgYi9kb2MvbWF0ZXJpYWxzL21hdGVyaWFscy9NQVRfR09MRApAQCAtMCwwICsxLDE5IEBACitNYXRlcmlhbGlkOgorTUFUX0dPTEQgICAgICAgICAgICAgICAgICJBdSIKKworTmFtZToKKyJHb2xkIiAiR29sZGVzIiAiR29sZCIgIkdvbGQiCisKK0dlc2NobGVjaHQ6CitOCisKK0Jlc2NocmVpYnVuZzoKK3dlaXNzIGJpcyBnZWxiL3JvdAorCitFcmtlbm5iYXJrZWl0OgorLSBrZWluZSBFaW5zY2hyYWVua3VuZyAtCisKK0dydXBwZW56dWdlaG9lcmlna2VpdDoKK01BVEdST1VQX01FVEFMOjEwMAorTUFUR1JPVVBfU09MSUQ6MTAwCitNQVRHUk9VUF9QUkVDSU9VU19NRVRBTDoxMDAKZGlmZiAtLWdpdCBhL2RvYy9tYXRlcmlhbHMvbWF0ZXJpYWxzL01BVF9HUkFOSVRFIGIvZG9jL21hdGVyaWFscy9tYXRlcmlhbHMvTUFUX0dSQU5JVEUKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uN2U0ZGE3YQotLS0gL2Rldi9udWxsCisrKyBiL2RvYy9tYXRlcmlhbHMvbWF0ZXJpYWxzL01BVF9HUkFOSVRFCkBAIC0wLDAgKzEsMTggQEAKK01hdGVyaWFsaWQ6CitNQVRfR1JBTklURSAgICAgICAgICAgICAgImdyYW5pdGUiCisKK05hbWU6CisiR3Jhbml0IiAiR3Jhbml0cyIgIkdyYW5pdCIgIkdyYW5pdCIKKworR2VzY2hsZWNodDoKK00KKworQmVzY2hyZWlidW5nOgorLSBuaWNodCB2b3JoYW5kZW4gLQorCitFcmtlbm5iYXJrZWl0OgorLSBrZWluZSBFaW5zY2hyYWVua3VuZyAtCisKK0dydXBwZW56dWdlaG9lcmlna2VpdDoKK01BVEdST1VQX1NUT05FOjEwMAorTUFUR1JPVVBfU09MSUQ6MTAwCmRpZmYgLS1naXQgYS9kb2MvbWF0ZXJpYWxzL21hdGVyaWFscy9NQVRfR1JBUEhJVEUgYi9kb2MvbWF0ZXJpYWxzL21hdGVyaWFscy9NQVRfR1JBUEhJVEUKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNDlkN2Y0NAotLS0gL2Rldi9udWxsCisrKyBiL2RvYy9tYXRlcmlhbHMvbWF0ZXJpYWxzL01BVF9HUkFQSElURQpAQCAtMCwwICsxLDIzIEBACitNYXRlcmlhbGlkOgorTUFUX0dSQVBISVRFICAgICAgICAgICAgICJncmFwaGl0ZSIKKworTmFtZToKKyJHcmFwaGl0IiAiR3JhcGhpdHMiICJHcmFwaGl0IiAiR3JhcGhpdCIKKworR2VzY2hsZWNodDoKK04KKworQmVzY2hyZWlidW5nOgorbWV0YWxsaXNjaCBncmF1CisKK0Vya2VubmJhcmtlaXQ6CitNQVRfTUlTQ19NSU5FUkFMOjIwCitNQVRfTEVBRDo0MAorTUFUX0NBUkJPTjo2MAorTUFUX0dSQVBISVRFCisKK0dydXBwZW56dWdlaG9lcmlna2VpdDoKK01BVEdST1VQX0lORkxBTU1BQkxFOjEwMAorTUFUR1JPVVBfTUlORVJBTDoxMDAKK01BVEdST1VQX1NPTElEOjEwMAorTUFUR1JPVVBfU1RPTkU6MTAwCmRpZmYgLS1naXQgYS9kb2MvbWF0ZXJpYWxzL21hdGVyaWFscy9NQVRfR1VOUE9XREVSIGIvZG9jL21hdGVyaWFscy9tYXRlcmlhbHMvTUFUX0dVTlBPV0RFUgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4zZWVjNjc1Ci0tLSAvZGV2L251bGwKKysrIGIvZG9jL21hdGVyaWFscy9tYXRlcmlhbHMvTUFUX0dVTlBPV0RFUgpAQCAtMCwwICsxLDE5IEBACitNYXRlcmlhbGlkOgorTUFUX0dVTlBPV0RFUiAgICAgICAgICAgICJndW5wb3dkZXIiCisKK05hbWU6CisiU2Nod2FyenB1bHZlciIgIlNjaHdhcnpwdWx2ZXJzIiAiU2Nod2FyenB1bHZlciIgIlNjaHdhcnpwdWx2ZXIiCisKK0dlc2NobGVjaHQ6CitOCisKK0Jlc2NocmVpYnVuZzoKKy0gbmljaHQgdm9yaGFuZGVuIC0KKworRXJrZW5uYmFya2VpdDoKKy0ga2VpbmUgRWluc2NocmFlbmt1bmcgLQorCitHcnVwcGVuenVnZWhvZXJpZ2tlaXQ6CitNQVRHUk9VUF9JTkZMQU1NQUJMRToxMDAKK01BVEdST1VQX1NPTElEOjEwMAorTUFUR1JPVVBfRVhQTE9TSVZFOjEwMApkaWZmIC0tZ2l0IGEvZG9jL21hdGVyaWFscy9tYXRlcmlhbHMvTUFUX0hBSVIgYi9kb2MvbWF0ZXJpYWxzL21hdGVyaWFscy9NQVRfSEFJUgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4zZmZkNWMzCi0tLSAvZGV2L251bGwKKysrIGIvZG9jL21hdGVyaWFscy9tYXRlcmlhbHMvTUFUX0hBSVIKQEAgLTAsMCArMSwyMSBAQAorTWF0ZXJpYWxpZDoKK01BVF9IQUlSICAgICAgICAgICAgICAgICAiaGFpciIKKworTmFtZToKKyJIYWFyZSIgIkhhYXJlIiAiSGFhcmVuIiAiSGFhcmVuIgorCitHZXNjaGxlY2h0OgorRgorCitCZXNjaHJlaWJ1bmc6CistIG5pY2h0IHZvcmhhbmRlbiAtCisKK0Vya2VubmJhcmtlaXQ6CistIGtlaW5lIEVpbnNjaHJhZW5rdW5nIC0KKworR3J1cHBlbnp1Z2Vob2VyaWdrZWl0OgorTUFUR1JPVVBfREVBRDoxMDAKK01BVEdST1VQX0lORkxBTU1BQkxFOjEwMAorTUFUR1JPVVBfQklPOjEwMAorTUFUR1JPVVBfRkxFWElCTEU6MTAwCitNQVRHUk9VUF9TT0xJRDoxMDAKZGlmZiAtLWdpdCBhL2RvYy9tYXRlcmlhbHMvbWF0ZXJpYWxzL01BVF9IRUxJVU0gYi9kb2MvbWF0ZXJpYWxzL21hdGVyaWFscy9NQVRfSEVMSVVNCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmI0NTA0YzAKLS0tIC9kZXYvbnVsbAorKysgYi9kb2MvbWF0ZXJpYWxzL21hdGVyaWFscy9NQVRfSEVMSVVNCkBAIC0wLDAgKzEsMTkgQEAKK01hdGVyaWFsaWQ6CitNQVRfSEVMSVVNICAgICAgICAgICAgICAgIkhlIgorCitOYW1lOgorIkhlbGl1bSIgIkhlbGl1bXMiICJIZWxpdW0iICJIZWxpdW0iCisKK0dlc2NobGVjaHQ6CitOCisKK0Jlc2NocmVpYnVuZzoKKy0gbmljaHQgdm9yaGFuZGVuIC0KKworRXJrZW5uYmFya2VpdDoKK01BVF9NSVNDX0dBUzoyMAorTUFUX0hFTElVTQorCitHcnVwcGVuenVnZWhvZXJpZ2tlaXQ6CitNQVRHUk9VUF9HQVM6MTAwCitNQVRHUk9VUF9JTlZJUzoxMDAKZGlmZiAtLWdpdCBhL2RvYy9tYXRlcmlhbHMvbWF0ZXJpYWxzL01BVF9IT1JOIGIvZG9jL21hdGVyaWFscy9tYXRlcmlhbHMvTUFUX0hPUk4KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZGFkMjM1OQotLS0gL2Rldi9udWxsCisrKyBiL2RvYy9tYXRlcmlhbHMvbWF0ZXJpYWxzL01BVF9IT1JOCkBAIC0wLDAgKzEsMTkgQEAKK01hdGVyaWFsaWQ6CitNQVRfSE9STiAgICAgICAgICAgICAgICAgImhvcm4iCisKK05hbWU6CisiSG9ybiIgIkhvcm5zIiAiSG9ybiIgIkhvcm4iCisKK0dlc2NobGVjaHQ6CitOCisKK0Jlc2NocmVpYnVuZzoKKy0gbmljaHQgdm9yaGFuZGVuIC0KKworRXJrZW5uYmFya2VpdDoKKy0ga2VpbmUgRWluc2NocmFlbmt1bmcgLQorCitHcnVwcGVuenVnZWhvZXJpZ2tlaXQ6CitNQVRHUk9VUF9ERUFEOjEwMAorTUFUR1JPVVBfQklPOjEwMAorTUFUR1JPVVBfU09MSUQ6MTAwCmRpZmYgLS1naXQgYS9kb2MvbWF0ZXJpYWxzL21hdGVyaWFscy9NQVRfSE9XQUxHTyBiL2RvYy9tYXRlcmlhbHMvbWF0ZXJpYWxzL01BVF9IT1dBTEdPCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmFhZWFiNzMKLS0tIC9kZXYvbnVsbAorKysgYi9kb2MvbWF0ZXJpYWxzL21hdGVyaWFscy9NQVRfSE9XQUxHTwpAQCAtMCwwICsxLDIyIEBACitNYXRlcmlhbGlkOgorTUFUX0hPV0FMR08gICAgICAgICAgICAgICJob3dhbGdvIgorCitOYW1lOgorIkhvd2FsZ29lcnoiICJIb3dhbGdvZXJ6ZXMiICJIb3dhbGdvZXJ6IiAiSG93YWxnb2VyeiIKKworR2VzY2hsZWNodDoKK04KKworQmVzY2hyZWlidW5nOgorWndlcmdlbndhZmZlbnN0YWhsCisKK0Vya2VubmJhcmtlaXQ6CitNQVRfTUlTQ19NRVRBTDoxMAorTUFUX1NURUVMOjY1CitNQVRfSE9XQUxHTworCitHcnVwcGVuenVnZWhvZXJpZ2tlaXQ6CitNQVRHUk9VUF9NQUdORVRJQzoxMDAKK01BVEdST1VQX01FVEFMOjEwMAorTUFUR1JPVVBfU09MSUQ6MTAwCitNQVRHUk9VUF9QUkVDSU9VU19NRVRBTDoxMDAKZGlmZiAtLWdpdCBhL2RvYy9tYXRlcmlhbHMvbWF0ZXJpYWxzL01BVF9JQ0UgYi9kb2MvbWF0ZXJpYWxzL21hdGVyaWFscy9NQVRfSUNFCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmU4YjA0ZDMKLS0tIC9kZXYvbnVsbAorKysgYi9kb2MvbWF0ZXJpYWxzL21hdGVyaWFscy9NQVRfSUNFCkBAIC0wLDAgKzEsMTcgQEAKK01hdGVyaWFsaWQ6CitNQVRfSUNFICAgICAgICAgICAgICAgICAgImljZSIKKworTmFtZToKKyJFaXMiICJFaXNlcyIgIkVpcyIgIkVpcyIKKworR2VzY2hsZWNodDoKK04KKworQmVzY2hyZWlidW5nOgorLSBuaWNodCB2b3JoYW5kZW4gLQorCitFcmtlbm5iYXJrZWl0OgorLSBrZWluZSBFaW5zY2hyYWVua3VuZyAtCisKK0dydXBwZW56dWdlaG9lcmlna2VpdDoKK01BVEdST1VQX1NPTElEOjEwMApkaWZmIC0tZ2l0IGEvZG9jL21hdGVyaWFscy9tYXRlcmlhbHMvTUFUX0lOSyBiL2RvYy9tYXRlcmlhbHMvbWF0ZXJpYWxzL01BVF9JTksKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZWQ0M2Q1ZQotLS0gL2Rldi9udWxsCisrKyBiL2RvYy9tYXRlcmlhbHMvbWF0ZXJpYWxzL01BVF9JTksKQEAgLTAsMCArMSwxNyBAQAorTWF0ZXJpYWxpZDoKK01BVF9JTksgICAgICAgICAgICAgICAgICAiaW5rIgorCitOYW1lOgorIlRpbnRlIiAiVGludGUiICJUaW50ZSIgIlRpbnRlIgorCitHZXNjaGxlY2h0OgorRgorCitCZXNjaHJlaWJ1bmc6CistIG5pY2h0IHZvcmhhbmRlbiAtCisKK0Vya2VubmJhcmtlaXQ6CistIGtlaW5lIEVpbnNjaHJhZW5rdW5nIC0KKworR3J1cHBlbnp1Z2Vob2VyaWdrZWl0OgorTUFUR1JPVVBfRkxVSUQ6MTAwCmRpZmYgLS1naXQgYS9kb2MvbWF0ZXJpYWxzL21hdGVyaWFscy9NQVRfSVJJRElVTSBiL2RvYy9tYXRlcmlhbHMvbWF0ZXJpYWxzL01BVF9JUklESVVNCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmUxMjI1ODgKLS0tIC9kZXYvbnVsbAorKysgYi9kb2MvbWF0ZXJpYWxzL21hdGVyaWFscy9NQVRfSVJJRElVTQpAQCAtMCwwICsxLDIzIEBACitNYXRlcmlhbGlkOgorTUFUX0lSSURJVU0gICAgICAgICAgICAgICJJciIKKworTmFtZToKKyJJcmlkaXVtIiAiSXJpZGl1bXMiICJJcmlkaXVtIiAiSXJpZGl1bSIKKworR2VzY2hsZWNodDoKK04KKworQmVzY2hyZWlidW5nOgorc2Nod2VyLCBnaWZ0aWcKKworRXJrZW5uYmFya2VpdDoKK01BVF9NSVNDX01FVEFMOjAKK01BVF9TSUxWRVI6NQorTUFUX1BMQVRJTlVNOjI1CitNQVRfSVJJRElVTQorCitHcnVwcGVuenVnZWhvZXJpZ2tlaXQ6CitNQVRHUk9VUF9NRVRBTDoxMDAKK01BVEdST1VQX1BPSVNPTk9VUzoxMDAKK01BVEdST1VQX1NPTElEOjEwMAorTUFUR1JPVVBfUFJFQ0lPVVNfTUVUQUw6MTAwCmRpZmYgLS1naXQgYS9kb2MvbWF0ZXJpYWxzL21hdGVyaWFscy9NQVRfSVJPTiBiL2RvYy9tYXRlcmlhbHMvbWF0ZXJpYWxzL01BVF9JUk9OCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjcwMTVjYjAKLS0tIC9kZXYvbnVsbAorKysgYi9kb2MvbWF0ZXJpYWxzL21hdGVyaWFscy9NQVRfSVJPTgpAQCAtMCwwICsxLDE5IEBACitNYXRlcmlhbGlkOgorTUFUX0lST04gICAgICAgICAgICAgICAgICJGZSIKKworTmFtZToKKyJFaXNlbiIgIkVpc2VucyIgIkVpc2VuIiAiRWlzZW4iCisKK0dlc2NobGVjaHQ6CitOCisKK0Jlc2NocmVpYnVuZzoKK3dlaWNoCisKK0Vya2VubmJhcmtlaXQ6CistIGtlaW5lIEVpbnNjaHJhZW5rdW5nIC0KKworR3J1cHBlbnp1Z2Vob2VyaWdrZWl0OgorTUFUR1JPVVBfTUVUQUw6MTAwCitNQVRHUk9VUF9NQUdORVRJQzoxMDAKK01BVEdST1VQX1NPTElEOjEwMApkaWZmIC0tZ2l0IGEvZG9jL21hdGVyaWFscy9tYXRlcmlhbHMvTUFUX0lST05fV09PRCBiL2RvYy9tYXRlcmlhbHMvbWF0ZXJpYWxzL01BVF9JUk9OX1dPT0QKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNzc4OTBmNgotLS0gL2Rldi9udWxsCisrKyBiL2RvYy9tYXRlcmlhbHMvbWF0ZXJpYWxzL01BVF9JUk9OX1dPT0QKQEAgLTAsMCArMSwyNCBAQAorTWF0ZXJpYWxpZDoKK01BVF9JUk9OX1dPT0QgICAgICAgICAgICAiaXJvbl93b29kIgorCitOYW1lOgorIkVpc2VuaG9seiIgIkVpc2VuaG9semVzIiAiRWlzZW5ob2x6IiAiRWlzZW5ob2x6IgorCitHZXNjaGxlY2h0OgorTgorCitCZXNjaHJlaWJ1bmc6CitleHRyZW0gaGFydCAodHJvcGlzY2gpCisKK0Vya2VubmJhcmtlaXQ6CitNQVRfT0FLOjI1CitNQVRfSVJPTl9XT09ECisKK0dydXBwZW56dWdlaG9lcmlna2VpdDoKK01BVEdST1VQX0RFQUQ6MTAwCitNQVRHUk9VUF9IRVJCQUw6MTAwCitNQVRHUk9VUF9UUk9QSUNBTF9XT09EOjEwMAorTUFUR1JPVVBfQklPOjEwMAorTUFUR1JPVVBfSU5GTEFNTUFCTEU6MTAwCitNQVRHUk9VUF9TT0xJRDoxMDAKK01BVEdST1VQX1dPT0Q6MTAwCmRpZmYgLS1naXQgYS9kb2MvbWF0ZXJpYWxzL21hdGVyaWFscy9NQVRfSVZPUlkgYi9kb2MvbWF0ZXJpYWxzL21hdGVyaWFscy9NQVRfSVZPUlkKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZTZhZDg1MgotLS0gL2Rldi9udWxsCisrKyBiL2RvYy9tYXRlcmlhbHMvbWF0ZXJpYWxzL01BVF9JVk9SWQpAQCAtMCwwICsxLDE5IEBACitNYXRlcmlhbGlkOgorTUFUX0lWT1JZICAgICAgICAgICAgICAgICJpdm9yeSIKKworTmFtZToKKyJFbGZlbmJlaW4iICJFbGZlbmJlaW5zIiAiRWxmZW5iZWluIiAiRWxmZW5iZWluIgorCitHZXNjaGxlY2h0OgorTgorCitCZXNjaHJlaWJ1bmc6CistIG5pY2h0IHZvcmhhbmRlbiAtCisKK0Vya2VubmJhcmtlaXQ6CistIGtlaW5lIEVpbnNjaHJhZW5rdW5nIC0KKworR3J1cHBlbnp1Z2Vob2VyaWdrZWl0OgorTUFUR1JPVVBfREVBRDoxMDAKK01BVEdST1VQX0JJTzoxMDAKK01BVEdST1VQX1NPTElEOjEwMApkaWZmIC0tZ2l0IGEvZG9jL21hdGVyaWFscy9tYXRlcmlhbHMvTUFUX0pBREUgYi9kb2MvbWF0ZXJpYWxzL21hdGVyaWFscy9NQVRfSkFERQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5iMGQxOTUwCi0tLSAvZGV2L251bGwKKysrIGIvZG9jL21hdGVyaWFscy9tYXRlcmlhbHMvTUFUX0pBREUKQEAgLTAsMCArMSwyMCBAQAorTWF0ZXJpYWxpZDoKK01BVF9KQURFICAgICAgICAgICAgICAgICAiamFkZSIKKworTmFtZToKKyJKYWRlIiAiSmFkZSIgIkphZGUiICJKYWRlIgorCitHZXNjaGxlY2h0OgorRgorCitCZXNjaHJlaWJ1bmc6CistIG5pY2h0IHZvcmhhbmRlbiAtCisKK0Vya2VubmJhcmtlaXQ6CistIGtlaW5lIEVpbnNjaHJhZW5rdW5nIC0KKworR3J1cHBlbnp1Z2Vob2VyaWdrZWl0OgorTUFUR1JPVVBfTUlORVJBTDoxMDAKK01BVEdST1VQX1NPTElEOjEwMAorTUFUR1JPVVBfSkVXRUw6MTAwCitNQVRHUk9VUF9TVE9ORToxMDAKZGlmZiAtLWdpdCBhL2RvYy9tYXRlcmlhbHMvbWF0ZXJpYWxzL01BVF9KT0ZJVU0gYi9kb2MvbWF0ZXJpYWxzL21hdGVyaWFscy9NQVRfSk9GSVVNCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjljMmNiYzEKLS0tIC9kZXYvbnVsbAorKysgYi9kb2MvbWF0ZXJpYWxzL21hdGVyaWFscy9NQVRfSk9GSVVNCkBAIC0wLDAgKzEsMTkgQEAKK01hdGVyaWFsaWQ6CitNQVRfSk9GSVVNICAgICAgICAgICAgICAgImpvZml1bSIKKworTmFtZToKKyJKb2ZpdW0iICJKb2ZpdW1zIiAiSm9maXVtIiAiSm9maXVtIgorCitHZXNjaGxlY2h0OgorTgorCitCZXNjaHJlaWJ1bmc6CistIG5pY2h0IHZvcmhhbmRlbiAtCisKK0Vya2VubmJhcmtlaXQ6CistIGtlaW5lIEVpbnNjaHJhZW5rdW5nIC0KKworR3J1cHBlbnp1Z2Vob2VyaWdrZWl0OgorTUFUR1JPVVBfTUVUQUw6MTAwCitNQVRHUk9VUF9TT0xJRDoxMDAKK01BVEdST1VQX1BSRUNJT1VTX01FVEFMOjEwMApkaWZmIC0tZ2l0IGEvZG9jL21hdGVyaWFscy9tYXRlcmlhbHMvTUFUX0xBQ0UgYi9kb2MvbWF0ZXJpYWxzL21hdGVyaWFscy9NQVRfTEFDRQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4zNmRiNDVmCi0tLSAvZGV2L251bGwKKysrIGIvZG9jL21hdGVyaWFscy9tYXRlcmlhbHMvTUFUX0xBQ0UKQEAgLTAsMCArMSwyMSBAQAorTWF0ZXJpYWxpZDoKK01BVF9MQUNFICAgICAgICAgICAgICAgICAibGFjZSIKKworTmFtZToKKyJTcGl0emUiICJTcGl0emUiICJTcGl0emUiICJTcGl0emUiCisKK0dlc2NobGVjaHQ6CitGCisKK0Jlc2NocmVpYnVuZzoKKy0gbmljaHQgdm9yaGFuZGVuIC0KKworRXJrZW5uYmFya2VpdDoKKy0ga2VpbmUgRWluc2NocmFlbmt1bmcgLQorCitHcnVwcGVuenVnZWhvZXJpZ2tlaXQ6CitNQVRHUk9VUF9JTkZMQU1NQUJMRToxMDAKK01BVEdST1VQX0NMT1RIOjEwMAorTUFUR1JPVVBfQklPOjEwMAorTUFUR1JPVVBfRkxFWElCTEU6MTAwCitNQVRHUk9VUF9TT0xJRDoxMDAKZGlmZiAtLWdpdCBhL2RvYy9tYXRlcmlhbHMvbWF0ZXJpYWxzL01BVF9MQVJJWCBiL2RvYy9tYXRlcmlhbHMvbWF0ZXJpYWxzL01BVF9MQVJJWApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi45ZWRhNGNkCi0tLSAvZGV2L251bGwKKysrIGIvZG9jL21hdGVyaWFscy9tYXRlcmlhbHMvTUFUX0xBUklYCkBAIC0wLDAgKzEsMjUgQEAKK01hdGVyaWFsaWQ6CitNQVRfTEFSSVggICAgICAgICAgICAgICAgImxhcml4IgorCitOYW1lOgorIkxhZXJjaGVuaG9seiIgIkxhZXJjaGVuaG9semVzIiAiTGFlcmNoZW5ob2x6IiAiTGFlcmNoZW5ob2x6IgorCitHZXNjaGxlY2h0OgorTgorCitCZXNjaHJlaWJ1bmc6CitzZWhyIGhhcnppZywgYmllZ3NhbQorCitFcmtlbm5iYXJrZWl0OgorTUFUX01JU0NfQ09OSUZFUl9XT09EOjUKK01BVF9MQVJJWAorCitHcnVwcGVuenVnZWhvZXJpZ2tlaXQ6CitNQVRHUk9VUF9ERUFEOjEwMAorTUFUR1JPVVBfSEVSQkFMOjEwMAorTUFUR1JPVVBfQ09OSUZFUl9XT09EOjEwMAorTUFUR1JPVVBfRkxFWElCTEU6MTAwCitNQVRHUk9VUF9CSU86MTAwCitNQVRHUk9VUF9JTkZMQU1NQUJMRToxMDAKK01BVEdST1VQX1NPTElEOjEwMAorTUFUR1JPVVBfV09PRDoxMDAKZGlmZiAtLWdpdCBhL2RvYy9tYXRlcmlhbHMvbWF0ZXJpYWxzL01BVF9MQVRFWCBiL2RvYy9tYXRlcmlhbHMvbWF0ZXJpYWxzL01BVF9MQVRFWApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi43ODg3NmEyCi0tLSAvZGV2L251bGwKKysrIGIvZG9jL21hdGVyaWFscy9tYXRlcmlhbHMvTUFUX0xBVEVYCkBAIC0wLDAgKzEsMTkgQEAKK01hdGVyaWFsaWQ6CitNQVRfTEFURVggICAgICAgICAgICAgICAgImxhdGV4IgorCitOYW1lOgorIkd1bW1pIiAiR3VtbWlzIiAiR3VtbWkiICJHdW1taSIKKworR2VzY2hsZWNodDoKK04KKworQmVzY2hyZWlidW5nOgorLSBuaWNodCB2b3JoYW5kZW4gLQorCitFcmtlbm5iYXJrZWl0OgorLSBrZWluZSBFaW5zY2hyYWVua3VuZyAtCisKK0dydXBwZW56dWdlaG9lcmlna2VpdDoKK01BVEdST1VQX0ZMRVhJQkxFOjEwMAorTUFUR1JPVVBfQklPOjEwMAorTUFUR1JPVVBfU09MSUQ6MTAwCmRpZmYgLS1naXQgYS9kb2MvbWF0ZXJpYWxzL21hdGVyaWFscy9NQVRfTEFVR0hJTkdfR0FTIGIvZG9jL21hdGVyaWFscy9tYXRlcmlhbHMvTUFUX0xBVUdISU5HX0dBUwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi45MWRhNmUzCi0tLSAvZGV2L251bGwKKysrIGIvZG9jL21hdGVyaWFscy9tYXRlcmlhbHMvTUFUX0xBVUdISU5HX0dBUwpAQCAtMCwwICsxLDIwIEBACitNYXRlcmlhbGlkOgorTUFUX0xBVUdISU5HX0dBUyAgICAgICAgICJsYXVnaGluZ19nYXMiCisKK05hbWU6CisiTGFjaGdhcyIgIkxhY2hnYXNlcyIgIkxhY2hnYXMiICJMYWNoZ2FzIgorCitHZXNjaGxlY2h0OgorTgorCitCZXNjaHJlaWJ1bmc6CistIG5pY2h0IHZvcmhhbmRlbiAtCisKK0Vya2VubmJhcmtlaXQ6CistIGtlaW5lIEVpbnNjaHJhZW5rdW5nIC0KKworR3J1cHBlbnp1Z2Vob2VyaWdrZWl0OgorTUFUR1JPVVBfSU5GTEFNTUFCTEU6MTAwCitNQVRHUk9VUF9HQVM6MTAwCitNQVRHUk9VUF9FWFBMT1NJVkU6MTAwCitNQVRHUk9VUF9JTlZJUzoxMDAKZGlmZiAtLWdpdCBhL2RvYy9tYXRlcmlhbHMvbWF0ZXJpYWxzL01BVF9MQVpVUklURSBiL2RvYy9tYXRlcmlhbHMvbWF0ZXJpYWxzL01BVF9MQVpVUklURQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi42ZWQzNThhCi0tLSAvZGV2L251bGwKKysrIGIvZG9jL21hdGVyaWFscy9tYXRlcmlhbHMvTUFUX0xBWlVSSVRFCkBAIC0wLDAgKzEsMjEgQEAKK01hdGVyaWFsaWQ6CitNQVRfTEFaVVJJVEUgICAgICAgICAgICAgImxhenVyaXRlIgorCitOYW1lOgorIkxhcGlzbGF6dWxpIiAiTGFwaXNsYXp1bGlzIiAiTGFwaXNsYXp1bGkiICJMYXBpc2xhenVsaSIKKworR2VzY2hsZWNodDoKK00KKworQmVzY2hyZWlidW5nOgordGllZmJsYXUgKHVsdHJhbWFyaW4pCisKK0Vya2VubmJhcmtlaXQ6CitNQVRfTUlTQ19NSU5FUkFMOjIwCitNQVRfTEFaVVJJVEUKKworR3J1cHBlbnp1Z2Vob2VyaWdrZWl0OgorTUFUR1JPVVBfTUlORVJBTDoxMDAKK01BVEdST1VQX1NPTElEOjEwMAorTUFUR1JPVVBfU1RPTkU6MTAwCitNQVRHUk9VUF9KRVdFTDoxMDAKZGlmZiAtLWdpdCBhL2RvYy9tYXRlcmlhbHMvbWF0ZXJpYWxzL01BVF9MRUFEIGIvZG9jL21hdGVyaWFscy9tYXRlcmlhbHMvTUFUX0xFQUQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMmJmYWZjOQotLS0gL2Rldi9udWxsCisrKyBiL2RvYy9tYXRlcmlhbHMvbWF0ZXJpYWxzL01BVF9MRUFECkBAIC0wLDAgKzEsMjAgQEAKK01hdGVyaWFsaWQ6CitNQVRfTEVBRCAgICAgICAgICAgICAgICAgIlBiIgorCitOYW1lOgorIkJsZWkiICJCbGVpcyIgIkJsZWkiICJCbGVpIgorCitHZXNjaGxlY2h0OgorTgorCitCZXNjaHJlaWJ1bmc6CistIG5pY2h0IHZvcmhhbmRlbiAtCisKK0Vya2VubmJhcmtlaXQ6CistIGtlaW5lIEVpbnNjaHJhZW5rdW5nIC0KKworR3J1cHBlbnp1Z2Vob2VyaWdrZWl0OgorTUFUR1JPVVBfRkxFWElCTEU6MTAwCitNQVRHUk9VUF9NRVRBTDoxMDAKK01BVEdST1VQX1BPSVNPTk9VUzoxMDAKK01BVEdST1VQX1NPTElEOjEwMApkaWZmIC0tZ2l0IGEvZG9jL21hdGVyaWFscy9tYXRlcmlhbHMvTUFUX0xFQVRIRVIgYi9kb2MvbWF0ZXJpYWxzL21hdGVyaWFscy9NQVRfTEVBVEhFUgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4zNGM4ZTc1Ci0tLSAvZGV2L251bGwKKysrIGIvZG9jL21hdGVyaWFscy9tYXRlcmlhbHMvTUFUX0xFQVRIRVIKQEAgLTAsMCArMSwyMSBAQAorTWF0ZXJpYWxpZDoKK01BVF9MRUFUSEVSICAgICAgICAgICAgICAibGVhdGhlciIKKworTmFtZToKKyJMZWRlciIgIkxlZGVycyIgIkxlZGVyIiAiTGVkZXIiCisKK0dlc2NobGVjaHQ6CitOCisKK0Jlc2NocmVpYnVuZzoKKy0gbmljaHQgdm9yaGFuZGVuIC0KKworRXJrZW5uYmFya2VpdDoKKy0ga2VpbmUgRWluc2NocmFlbmt1bmcgLQorCitHcnVwcGVuenVnZWhvZXJpZ2tlaXQ6CitNQVRHUk9VUF9ERUFEOjEwMAorTUFUR1JPVVBfQ0xPVEg6MTAwCitNQVRHUk9VUF9CSU86MTAwCitNQVRHUk9VUF9GTEVYSUJMRToxMDAKK01BVEdST1VQX1NPTElEOjEwMApkaWZmIC0tZ2l0IGEvZG9jL21hdGVyaWFscy9tYXRlcmlhbHMvTUFUX0xJR0hUTklORyBiL2RvYy9tYXRlcmlhbHMvbWF0ZXJpYWxzL01BVF9MSUdIVE5JTkcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMjBkNTVjYQotLS0gL2Rldi9udWxsCisrKyBiL2RvYy9tYXRlcmlhbHMvbWF0ZXJpYWxzL01BVF9MSUdIVE5JTkcKQEAgLTAsMCArMSwxOSBAQAorTWF0ZXJpYWxpZDoKK01BVF9MSUdIVE5JTkcgICAgICAgICAgICAibGlnaHRuaW5nIgorCitOYW1lOgorIkJsaXR6IiAiQmxpdHplcyIgIkJsaXR6IiAiQmxpdHoiCisKK0dlc2NobGVjaHQ6CitNCisKK0Jlc2NocmVpYnVuZzoKKy0gbmljaHQgdm9yaGFuZGVuIC0KKworRXJrZW5uYmFya2VpdDoKKy0ga2VpbmUgRWluc2NocmFlbmt1bmcgLQorCitHcnVwcGVuenVnZWhvZXJpZ2tlaXQ6CitNQVRHUk9VUF9FTEVDVFJJQ0FMOjEwMAorTUFUR1JPVVBfR0FTOjEwMAorTUFUR1JPVVBfSU5WSVM6MTAwCmRpZmYgLS1naXQgYS9kb2MvbWF0ZXJpYWxzL21hdGVyaWFscy9NQVRfTElNRSBiL2RvYy9tYXRlcmlhbHMvbWF0ZXJpYWxzL01BVF9MSU1FCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmVkNjFkZWEKLS0tIC9kZXYvbnVsbAorKysgYi9kb2MvbWF0ZXJpYWxzL21hdGVyaWFscy9NQVRfTElNRQpAQCAtMCwwICsxLDI0IEBACitNYXRlcmlhbGlkOgorTUFUX0xJTUUgICAgICAgICAgICAgICAgICJsaW1lIgorCitOYW1lOgorIkxpbmRlbmhvbHoiICJMaW5kZW5ob2x6ZXMiICJMaW5kZW5ob2x6IiAiTGluZGVuaG9seiIKKworR2VzY2hsZWNodDoKK04KKworQmVzY2hyZWlidW5nOgord2VpY2gKKworRXJrZW5uYmFya2VpdDoKK01BVF9NSVNDX0RFQ0lEVU9VU19XT09EOjE1CitNQVRfTElNRQorCitHcnVwcGVuenVnZWhvZXJpZ2tlaXQ6CitNQVRHUk9VUF9ERUFEOjEwMAorTUFUR1JPVVBfSEVSQkFMOjEwMAorTUFUR1JPVVBfREVDSURVT1VTX1dPT0Q6MTAwCitNQVRHUk9VUF9CSU86MTAwCitNQVRHUk9VUF9JTkZMQU1NQUJMRToxMDAKK01BVEdST1VQX1NPTElEOjEwMAorTUFUR1JPVVBfV09PRDoxMDAKZGlmZiAtLWdpdCBhL2RvYy9tYXRlcmlhbHMvbWF0ZXJpYWxzL01BVF9MSU1FU1RPTkUgYi9kb2MvbWF0ZXJpYWxzL21hdGVyaWFscy9NQVRfTElNRVNUT05FCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjAxZWE5MGEKLS0tIC9kZXYvbnVsbAorKysgYi9kb2MvbWF0ZXJpYWxzL21hdGVyaWFscy9NQVRfTElNRVNUT05FCkBAIC0wLDAgKzEsMTggQEAKK01hdGVyaWFsaWQ6CitNQVRfTElNRVNUT05FICAgICAgICAgICAgImxpbWVzdG9uZSIKKworTmFtZToKKyJLYWxrc3RlaW4iICJLYWxrc3RlaW5zIiAiS2Fsa3N0ZWluIiAiS2Fsa3N0ZWluIgorCitHZXNjaGxlY2h0OgorTQorCitCZXNjaHJlaWJ1bmc6CistIG5pY2h0IHZvcmhhbmRlbiAtCisKK0Vya2VubmJhcmtlaXQ6CistIGtlaW5lIEVpbnNjaHJhZW5rdW5nIC0KKworR3J1cHBlbnp1Z2Vob2VyaWdrZWl0OgorTUFUR1JPVVBfU1RPTkU6MTAwCitNQVRHUk9VUF9TT0xJRDoxMDAKZGlmZiAtLWdpdCBhL2RvYy9tYXRlcmlhbHMvbWF0ZXJpYWxzL01BVF9MSU5FTiBiL2RvYy9tYXRlcmlhbHMvbWF0ZXJpYWxzL01BVF9MSU5FTgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5mYTRkZWIwCi0tLSAvZGV2L251bGwKKysrIGIvZG9jL21hdGVyaWFscy9tYXRlcmlhbHMvTUFUX0xJTkVOCkBAIC0wLDAgKzEsMjEgQEAKK01hdGVyaWFsaWQ6CitNQVRfTElORU4gICAgICAgICAgICAgICAgImxpbmVuIgorCitOYW1lOgorIkxlaW5lbiIgIkxlaW5lbiIgIkxlaW5lbiIgIkxlaW5lbiIKKworR2VzY2hsZWNodDoKK04KKworQmVzY2hyZWlidW5nOgorLSBuaWNodCB2b3JoYW5kZW4gLQorCitFcmtlbm5iYXJrZWl0OgorLSBrZWluZSBFaW5zY2hyYWVua3VuZyAtCisKK0dydXBwZW56dWdlaG9lcmlna2VpdDoKK01BVEdST1VQX0lORkxBTU1BQkxFOjEwMAorTUFUR1JPVVBfQ0xPVEg6MTAwCitNQVRHUk9VUF9CSU86MTAwCitNQVRHUk9VUF9GTEVYSUJMRToxMDAKK01BVEdST1VQX1NPTElEOjEwMApkaWZmIC0tZ2l0IGEvZG9jL21hdGVyaWFscy9tYXRlcmlhbHMvTUFUX01BR05FU0lVTSBiL2RvYy9tYXRlcmlhbHMvbWF0ZXJpYWxzL01BVF9NQUdORVNJVU0KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZGQ1Y2JiYgotLS0gL2Rldi9udWxsCisrKyBiL2RvYy9tYXRlcmlhbHMvbWF0ZXJpYWxzL01BVF9NQUdORVNJVU0KQEAgLTAsMCArMSwyMSBAQAorTWF0ZXJpYWxpZDoKK01BVF9NQUdORVNJVU0gICAgICAgICAgICAiTWciCisKK05hbWU6CisiTWFnbmVzaXVtIiAiTWFnbmVzaXVtcyIgIk1hZ25lc2l1bSIgIk1hZ25lc2l1bSIKKworR2VzY2hsZWNodDoKK04KKworQmVzY2hyZWlidW5nOgorYnJlbm5iYXIKKworRXJrZW5uYmFya2VpdDoKK01BVF9NSVNDX01FVEFMOjAKK01BVF9BTFVNSU5JVU06MzAKK01BVF9NQUdORVNJVU0KKworR3J1cHBlbnp1Z2Vob2VyaWdrZWl0OgorTUFUR1JPVVBfTUVUQUw6MTAwCitNQVRHUk9VUF9JTkZMQU1NQUJMRToxMDAKK01BVEdST1VQX1NPTElEOjEwMApkaWZmIC0tZ2l0IGEvZG9jL21hdGVyaWFscy9tYXRlcmlhbHMvTUFUX01BSEFHT05JIGIvZG9jL21hdGVyaWFscy9tYXRlcmlhbHMvTUFUX01BSEFHT05JCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjBkODkyOWMKLS0tIC9kZXYvbnVsbAorKysgYi9kb2MvbWF0ZXJpYWxzL21hdGVyaWFscy9NQVRfTUFIQUdPTkkKQEAgLTAsMCArMSwyNCBAQAorTWF0ZXJpYWxpZDoKK01BVF9NQUhBR09OSSAgICAgICAgICAgICAibWFoYWdvbmkiCisKK05hbWU6CisiTWFoYWdvbmkiICJNYWhhZ29uaXMiICJNYWhhZ29uaSIgIk1haGFnb25pIgorCitHZXNjaGxlY2h0OgorTgorCitCZXNjaHJlaWJ1bmc6Cityb3QgYmlzIGR1bmtlbHJvdAorCitFcmtlbm5iYXJrZWl0OgorTUFUX01JU0NfVFJPUElDQUxfV09PRDotNQorTUFUX01BSEFHT05JCisKK0dydXBwZW56dWdlaG9lcmlna2VpdDoKK01BVEdST1VQX0RFQUQ6MTAwCitNQVRHUk9VUF9IRVJCQUw6MTAwCitNQVRHUk9VUF9UUk9QSUNBTF9XT09EOjEwMAorTUFUR1JPVVBfQklPOjEwMAorTUFUR1JPVVBfSU5GTEFNTUFCTEU6MTAwCitNQVRHUk9VUF9TT0xJRDoxMDAKK01BVEdST1VQX1dPT0Q6MTAwCmRpZmYgLS1naXQgYS9kb2MvbWF0ZXJpYWxzL21hdGVyaWFscy9NQVRfTUFMQUNISVRFIGIvZG9jL21hdGVyaWFscy9tYXRlcmlhbHMvTUFUX01BTEFDSElURQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi43NzcxMDEwCi0tLSAvZGV2L251bGwKKysrIGIvZG9jL21hdGVyaWFscy9tYXRlcmlhbHMvTUFUX01BTEFDSElURQpAQCAtMCwwICsxLDIwIEBACitNYXRlcmlhbGlkOgorTUFUX01BTEFDSElURSAgICAgICAgICAgICJtYWxhY2hpdGUiCisKK05hbWU6CisiTWFsYWNoaXQiICJNYWxhY2hpdHMiICJNYWxhY2hpdCIgIk1hbGFjaGl0IgorCitHZXNjaGxlY2h0OgorTQorCitCZXNjaHJlaWJ1bmc6CistIG5pY2h0IHZvcmhhbmRlbiAtCisKK0Vya2VubmJhcmtlaXQ6CitNQVRfTUlTQ19NSU5FUkFMOjIwCitNQVRfTUFMQUNISVRFCisKK0dydXBwZW56dWdlaG9lcmlna2VpdDoKK01BVEdST1VQX01JTkVSQUw6MTAwCitNQVRHUk9VUF9TT0xJRDoxMDAKK01BVEdST1VQX1NUT05FOjEwMApkaWZmIC0tZ2l0IGEvZG9jL21hdGVyaWFscy9tYXRlcmlhbHMvTUFUX01BUExFIGIvZG9jL21hdGVyaWFscy9tYXRlcmlhbHMvTUFUX01BUExFCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjllYmJkOTgKLS0tIC9kZXYvbnVsbAorKysgYi9kb2MvbWF0ZXJpYWxzL21hdGVyaWFscy9NQVRfTUFQTEUKQEAgLTAsMCArMSwyNCBAQAorTWF0ZXJpYWxpZDoKK01BVF9NQVBMRSAgICAgICAgICAgICAgICAibWFwbGUiCisKK05hbWU6CisiQWhvcm5ob2x6IiAiQWhvcm5ob2x6ZXMiICJBaG9ybmhvbHoiICJBaG9ybmhvbHoiCisKK0dlc2NobGVjaHQ6CitOCisKK0Jlc2NocmVpYnVuZzoKKy0gbmljaHQgdm9yaGFuZGVuIC0KKworRXJrZW5uYmFya2VpdDoKK01BVF9NSVNDX0RFQ0lEVU9VU19XT09EOjI1CitNQVRfTUFQTEUKKworR3J1cHBlbnp1Z2Vob2VyaWdrZWl0OgorTUFUR1JPVVBfREVBRDoxMDAKK01BVEdST1VQX0hFUkJBTDoxMDAKK01BVEdST1VQX0RFQ0lEVU9VU19XT09EOjEwMAorTUFUR1JPVVBfQklPOjEwMAorTUFUR1JPVVBfSU5GTEFNTUFCTEU6MTAwCitNQVRHUk9VUF9TT0xJRDoxMDAKK01BVEdST1VQX1dPT0Q6MTAwCmRpZmYgLS1naXQgYS9kb2MvbWF0ZXJpYWxzL21hdGVyaWFscy9NQVRfTUFSQkxFIGIvZG9jL21hdGVyaWFscy9tYXRlcmlhbHMvTUFUX01BUkJMRQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5hNDg5NDJmCi0tLSAvZGV2L251bGwKKysrIGIvZG9jL21hdGVyaWFscy9tYXRlcmlhbHMvTUFUX01BUkJMRQpAQCAtMCwwICsxLDE4IEBACitNYXRlcmlhbGlkOgorTUFUX01BUkJMRSAgICAgICAgICAgICAgICJtYXJibGUiCisKK05hbWU6CisiTWFybW9yIiAiTWFybW9ycyIgIk1hcm1vciIgIk1hcm1vciIKKworR2VzY2hsZWNodDoKK00KKworQmVzY2hyZWlidW5nOgorLSBuaWNodCB2b3JoYW5kZW4gLQorCitFcmtlbm5iYXJrZWl0OgorLSBrZWluZSBFaW5zY2hyYWVua3VuZyAtCisKK0dydXBwZW56dWdlaG9lcmlna2VpdDoKK01BVEdST1VQX1NUT05FOjEwMAorTUFUR1JPVVBfU09MSUQ6MTAwCmRpZmYgLS1naXQgYS9kb2MvbWF0ZXJpYWxzL21hdGVyaWFscy9NQVRfTUVSQ1VSWSBiL2RvYy9tYXRlcmlhbHMvbWF0ZXJpYWxzL01BVF9NRVJDVVJZCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmNmM2ZkODgKLS0tIC9kZXYvbnVsbAorKysgYi9kb2MvbWF0ZXJpYWxzL21hdGVyaWFscy9NQVRfTUVSQ1VSWQpAQCAtMCwwICsxLDE5IEBACitNYXRlcmlhbGlkOgorTUFUX01FUkNVUlkgICAgICAgICAgICAgICJIZyIKKworTmFtZToKKyJRdWVja3NpbGJlciIgIlF1ZWNrc2lsYmVycyIgIlF1ZWNrc2lsYmVyIiAiUXVlY2tzaWxiZXIiCisKK0dlc2NobGVjaHQ6CitOCisKK0Jlc2NocmVpYnVuZzoKKy0gbmljaHQgdm9yaGFuZGVuIC0KKworRXJrZW5uYmFya2VpdDoKKy0ga2VpbmUgRWluc2NocmFlbmt1bmcgLQorCitHcnVwcGVuenVnZWhvZXJpZ2tlaXQ6CitNQVRHUk9VUF9NRVRBTDoxMDAKK01BVEdST1VQX1BPSVNPTk9VUzoxMDAKK01BVEdST1VQX0ZMVUlEOjEwMApkaWZmIC0tZ2l0IGEvZG9jL21hdGVyaWFscy9tYXRlcmlhbHMvTUFUX01FVEhBTkUgYi9kb2MvbWF0ZXJpYWxzL21hdGVyaWFscy9NQVRfTUVUSEFORQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5kOTNjNTc2Ci0tLSAvZGV2L251bGwKKysrIGIvZG9jL21hdGVyaWFscy9tYXRlcmlhbHMvTUFUX01FVEhBTkUKQEAgLTAsMCArMSwyMSBAQAorTWF0ZXJpYWxpZDoKK01BVF9NRVRIQU5FICAgICAgICAgICAgICAibWV0aGFuZSIKKworTmFtZToKKyJNZXRoYW4iICJNZXRoYW5zIiAiTWV0aGFuIiAiTWV0aGFuIgorCitHZXNjaGxlY2h0OgorTgorCitCZXNjaHJlaWJ1bmc6CistIG5pY2h0IHZvcmhhbmRlbiAtCisKK0Vya2VubmJhcmtlaXQ6CitNQVRfTUlTQ19HQVM6MjAKK01BVF9NRVRIQU5FCisKK0dydXBwZW56dWdlaG9lcmlna2VpdDoKK01BVEdST1VQX0lORkxBTU1BQkxFOjEwMAorTUFUR1JPVVBfR0FTOjEwMAorTUFUR1JPVVBfRVhQTE9TSVZFOjEwMAorTUFUR1JPVVBfSU5WSVM6MTAwCmRpZmYgLS1naXQgYS9kb2MvbWF0ZXJpYWxzL21hdGVyaWFscy9NQVRfTUlMSyBiL2RvYy9tYXRlcmlhbHMvbWF0ZXJpYWxzL01BVF9NSUxLCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjdhZWEwNDAKLS0tIC9kZXYvbnVsbAorKysgYi9kb2MvbWF0ZXJpYWxzL21hdGVyaWFscy9NQVRfTUlMSwpAQCAtMCwwICsxLDE3IEBACitNYXRlcmlhbGlkOgorTUFUX01JTEsgICAgICAgICAgICAgICAgICJtaWxrIgorCitOYW1lOgorIk1pbGNoIiAiTWlsY2giICJNaWxjaCIgIk1pbGNoIgorCitHZXNjaGxlY2h0OgorRgorCitCZXNjaHJlaWJ1bmc6CistIG5pY2h0IHZvcmhhbmRlbiAtCisKK0Vya2VubmJhcmtlaXQ6CistIGtlaW5lIEVpbnNjaHJhZW5rdW5nIC0KKworR3J1cHBlbnp1Z2Vob2VyaWdrZWl0OgorTUFUR1JPVVBfRkxVSUQ6MTAwCmRpZmYgLS1naXQgYS9kb2MvbWF0ZXJpYWxzL21hdGVyaWFscy9NQVRfTUlTQyBiL2RvYy9tYXRlcmlhbHMvbWF0ZXJpYWxzL01BVF9NSVNDCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmQ5YWE1NTQKLS0tIC9kZXYvbnVsbAorKysgYi9kb2MvbWF0ZXJpYWxzL21hdGVyaWFscy9NQVRfTUlTQwpAQCAtMCwwICsxLDE3IEBACitNYXRlcmlhbGlkOgorTUFUX01JU0MgICAgICAgICAgICAgICAgICJtaXNjIgorCitOYW1lOgorInZlcnNjaGllZGVuZXMgTWF0ZXJpYWwiICJ2ZXJzY2hpZWRlbmVuIE1hdGVyaWFscyIgInZlcnNjaGllZGVuZW0gTWF0ZXJpYWwiICJ2ZXJzY2hpZWRlbmVuIE1hdGVyaWFsIgorCitHZXNjaGxlY2h0OgorTgorCitCZXNjaHJlaWJ1bmc6CithbGxnLiBNYXRlcmlhbCAoZGVmYXVsdCkKKworRXJrZW5uYmFya2VpdDoKKy0ga2VpbmUgRWluc2NocmFlbmt1bmcgLQorCitHcnVwcGVuenVnZWhvZXJpZ2tlaXQ6CitNQVRHUk9VUF9NSVNDOjEwMApkaWZmIC0tZ2l0IGEvZG9jL21hdGVyaWFscy9tYXRlcmlhbHMvTUFUX01JU0NfQUNJRCBiL2RvYy9tYXRlcmlhbHMvbWF0ZXJpYWxzL01BVF9NSVNDX0FDSUQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYWM4ZDE1ZgotLS0gL2Rldi9udWxsCisrKyBiL2RvYy9tYXRlcmlhbHMvbWF0ZXJpYWxzL01BVF9NSVNDX0FDSUQKQEAgLTAsMCArMSwxOSBAQAorTWF0ZXJpYWxpZDoKK01BVF9NSVNDX0FDSUQgICAgICAgICAgICAibWlzY19hY2lkIgorCitOYW1lOgorIlNhZXVyZSIgIlNhZXVyZSIgIlNhZXVyZSIgIlNhZXVyZSIKKworR2VzY2hsZWNodDoKK0YKKworQmVzY2hyZWlidW5nOgorLSBuaWNodCB2b3JoYW5kZW4gLQorCitFcmtlbm5iYXJrZWl0OgorLSBrZWluZSBFaW5zY2hyYWVua3VuZyAtCisKK0dydXBwZW56dWdlaG9lcmlna2VpdDoKK01BVEdST1VQX0FDSURJQzoxMDAKK01BVEdST1VQX0ZMVUlEOjEwMAorTUFUR1JPVVBfUE9JU09OT1VTOjEwMApkaWZmIC0tZ2l0IGEvZG9jL21hdGVyaWFscy9tYXRlcmlhbHMvTUFUX01JU0NfQkFTRSBiL2RvYy9tYXRlcmlhbHMvbWF0ZXJpYWxzL01BVF9NSVNDX0JBU0UKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uY2QyY2ZkMQotLS0gL2Rldi9udWxsCisrKyBiL2RvYy9tYXRlcmlhbHMvbWF0ZXJpYWxzL01BVF9NSVNDX0JBU0UKQEAgLTAsMCArMSwxOSBAQAorTWF0ZXJpYWxpZDoKK01BVF9NSVNDX0JBU0UgICAgICAgICAgICAibWlzY19iYXNlIgorCitOYW1lOgorIkxhdWdlIiAiTGF1Z2UiICJMYXVnZSIgIkxhdWdlIgorCitHZXNjaGxlY2h0OgorRgorCitCZXNjaHJlaWJ1bmc6CistIG5pY2h0IHZvcmhhbmRlbiAtCisKK0Vya2VubmJhcmtlaXQ6CistIGtlaW5lIEVpbnNjaHJhZW5rdW5nIC0KKworR3J1cHBlbnp1Z2Vob2VyaWdrZWl0OgorTUFUR1JPVVBfRkxVSUQ6MTAwCitNQVRHUk9VUF9CQVNJQzoxMDAKK01BVEdST1VQX1BPSVNPTk9VUzoxMDAKZGlmZiAtLWdpdCBhL2RvYy9tYXRlcmlhbHMvbWF0ZXJpYWxzL01BVF9NSVNDX0NPTklGRVJfV09PRCBiL2RvYy9tYXRlcmlhbHMvbWF0ZXJpYWxzL01BVF9NSVNDX0NPTklGRVJfV09PRApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4xMDg5NTM4Ci0tLSAvZGV2L251bGwKKysrIGIvZG9jL21hdGVyaWFscy9tYXRlcmlhbHMvTUFUX01JU0NfQ09OSUZFUl9XT09ECkBAIC0wLDAgKzEsMjMgQEAKK01hdGVyaWFsaWQ6CitNQVRfTUlTQ19DT05JRkVSX1dPT0QgICAgIm1pc2NfY29uaWZlcl93b29kIgorCitOYW1lOgorIk5hZGVsaG9seiIgIk5hZGVsaG9semVzIiAiTmFkZWxob2x6IiAiTmFkZWxob2x6IgorCitHZXNjaGxlY2h0OgorTgorCitCZXNjaHJlaWJ1bmc6CistIG5pY2h0IHZvcmhhbmRlbiAtCisKK0Vya2VubmJhcmtlaXQ6CistIGtlaW5lIEVpbnNjaHJhZW5rdW5nIC0KKworR3J1cHBlbnp1Z2Vob2VyaWdrZWl0OgorTUFUR1JPVVBfREVBRDoxMDAKK01BVEdST1VQX0hFUkJBTDoxMDAKK01BVEdST1VQX0NPTklGRVJfV09PRDoxMDAKK01BVEdST1VQX0lORkxBTU1BQkxFOjEwMAorTUFUR1JPVVBfQklPOjEwMAorTUFUR1JPVVBfU09MSUQ6MTAwCitNQVRHUk9VUF9XT09EOjEwMApkaWZmIC0tZ2l0IGEvZG9jL21hdGVyaWFscy9tYXRlcmlhbHMvTUFUX01JU0NfREVBRCBiL2RvYy9tYXRlcmlhbHMvbWF0ZXJpYWxzL01BVF9NSVNDX0RFQUQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uN2E0NDM3YQotLS0gL2Rldi9udWxsCisrKyBiL2RvYy9tYXRlcmlhbHMvbWF0ZXJpYWxzL01BVF9NSVNDX0RFQUQKQEAgLTAsMCArMSwxOSBAQAorTWF0ZXJpYWxpZDoKK01BVF9NSVNDX0RFQUQgICAgICAgICAgICAibWlzY19kZWFkIgorCitOYW1lOgorInN0ZXJibGljaGUgVWViZXJyZXN0ZSIgInN0ZXJibGljaGUgVWViZXJyZXN0ZXMiICJzdGVyYmxpY2hlIFVlYmVycmVzdGUiICJzdGVyYmxpY2hlIFVlYmVycmVzdGUiCisKK0dlc2NobGVjaHQ6CitNCisKK0Jlc2NocmVpYnVuZzoKK2FsbGcuIHRvdGVzIE1hdGVyaWFsCisKK0Vya2VubmJhcmtlaXQ6CistIGtlaW5lIEVpbnNjaHJhZW5rdW5nIC0KKworR3J1cHBlbnp1Z2Vob2VyaWdrZWl0OgorTUFUR1JPVVBfREVBRDoxMDAKK01BVEdST1VQX0JJTzoxMDAKK01BVEdST1VQX1NPTElEOjEwMApkaWZmIC0tZ2l0IGEvZG9jL21hdGVyaWFscy9tYXRlcmlhbHMvTUFUX01JU0NfREVDSURVT1VTX1dPT0QgYi9kb2MvbWF0ZXJpYWxzL21hdGVyaWFscy9NQVRfTUlTQ19ERUNJRFVPVVNfV09PRApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi43MzM0NTZlCi0tLSAvZGV2L251bGwKKysrIGIvZG9jL21hdGVyaWFscy9tYXRlcmlhbHMvTUFUX01JU0NfREVDSURVT1VTX1dPT0QKQEAgLTAsMCArMSwyMyBAQAorTWF0ZXJpYWxpZDoKK01BVF9NSVNDX0RFQ0lEVU9VU19XT09EICAibWlzY19kZWNpZHVvdXNfd29vZCIKKworTmFtZToKKyJMYXViaG9seiIgIkxhdWJob2x6ZXMiICJMYXViaG9seiIgIkxhdWJob2x6IgorCitHZXNjaGxlY2h0OgorTgorCitCZXNjaHJlaWJ1bmc6CistIG5pY2h0IHZvcmhhbmRlbiAtCisKK0Vya2VubmJhcmtlaXQ6CistIGtlaW5lIEVpbnNjaHJhZW5rdW5nIC0KKworR3J1cHBlbnp1Z2Vob2VyaWdrZWl0OgorTUFUR1JPVVBfREVBRDoxMDAKK01BVEdST1VQX0hFUkJBTDoxMDAKK01BVEdST1VQX0RFQ0lEVU9VU19XT09EOjEwMAorTUFUR1JPVVBfQklPOjEwMAorTUFUR1JPVVBfSU5GTEFNTUFCTEU6MTAwCitNQVRHUk9VUF9TT0xJRDoxMDAKK01BVEdST1VQX1dPT0Q6MTAwCmRpZmYgLS1naXQgYS9kb2MvbWF0ZXJpYWxzL21hdGVyaWFscy9NQVRfTUlTQ19EUlVHIGIvZG9jL21hdGVyaWFscy9tYXRlcmlhbHMvTUFUX01JU0NfRFJVRwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5iZTU5MTk2Ci0tLSAvZGV2L251bGwKKysrIGIvZG9jL21hdGVyaWFscy9tYXRlcmlhbHMvTUFUX01JU0NfRFJVRwpAQCAtMCwwICsxLDE4IEBACitNYXRlcmlhbGlkOgorTUFUX01JU0NfRFJVRyAgICAgICAgICAgICJtaXNjX2RydWciCisKK05hbWU6CisiRHJvZ2UiICJEcm9nZSIgIkRyb2dlIiAiRHJvZ2UiCisKK0dlc2NobGVjaHQ6CitGCisKK0Jlc2NocmVpYnVuZzoKK2FsbGcuIERyb2dlbgorCitFcmtlbm5iYXJrZWl0OgorLSBrZWluZSBFaW5zY2hyYWVua3VuZyAtCisKK0dydXBwZW56dWdlaG9lcmlna2VpdDoKK01BVEdST1VQX0RSVUc6MTAwCitNQVRHUk9VUF9TT0xJRDoxMDAKZGlmZiAtLWdpdCBhL2RvYy9tYXRlcmlhbHMvbWF0ZXJpYWxzL01BVF9NSVNDX0VYUExPU0lWRSBiL2RvYy9tYXRlcmlhbHMvbWF0ZXJpYWxzL01BVF9NSVNDX0VYUExPU0lWRQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4zNDQ2ODc4Ci0tLSAvZGV2L251bGwKKysrIGIvZG9jL21hdGVyaWFscy9tYXRlcmlhbHMvTUFUX01JU0NfRVhQTE9TSVZFCkBAIC0wLDAgKzEsMTkgQEAKK01hdGVyaWFsaWQ6CitNQVRfTUlTQ19FWFBMT1NJVkUgICAgICAgIm1pc2NfZXhwbG9zaXZlIgorCitOYW1lOgorImV4cGxvc2l2ZXMgTWF0ZXJpYWwiICJleHBsb3NpdmVuIE1hdGVyaWFscyIgImV4cGxvc2l2ZW0gTWF0ZXJpYWwiICJleHBsb3NpdmVuIE1hdGVyaWFsIgorCitHZXNjaGxlY2h0OgorTgorCitCZXNjaHJlaWJ1bmc6CithbGxnLiBTcHJlbmdzdG9mZmUKKworRXJrZW5uYmFya2VpdDoKKy0ga2VpbmUgRWluc2NocmFlbmt1bmcgLQorCitHcnVwcGVuenVnZWhvZXJpZ2tlaXQ6CitNQVRHUk9VUF9NSVNDOjEwMAorTUFUR1JPVVBfSU5GTEFNTUFCTEU6MTAwCitNQVRHUk9VUF9FWFBMT1NJVkU6MTAwCmRpZmYgLS1naXQgYS9kb2MvbWF0ZXJpYWxzL21hdGVyaWFscy9NQVRfTUlTQ19GTEVYSUJMRSBiL2RvYy9tYXRlcmlhbHMvbWF0ZXJpYWxzL01BVF9NSVNDX0ZMRVhJQkxFCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjk3OGQzN2MKLS0tIC9kZXYvbnVsbAorKysgYi9kb2MvbWF0ZXJpYWxzL21hdGVyaWFscy9NQVRfTUlTQ19GTEVYSUJMRQpAQCAtMCwwICsxLDE4IEBACitNYXRlcmlhbGlkOgorTUFUX01JU0NfRkxFWElCTEUgICAgICAgICJtaXNjX2ZsZXhpYmxlIgorCitOYW1lOgorImJpZWdzYW1lcyBNYXRlcmlhbCIgImJpZWdzYW1lbiBNYXRlcmlhbHMiICJiaWVnc2FtZW0gTWF0ZXJpYWwiICJiaWVnc2FtZW4gTWF0ZXJpYWwiCisKK0dlc2NobGVjaHQ6CitOCisKK0Jlc2NocmVpYnVuZzoKKy0gbmljaHQgdm9yaGFuZGVuIC0KKworRXJrZW5uYmFya2VpdDoKKy0ga2VpbmUgRWluc2NocmFlbmt1bmcgLQorCitHcnVwcGVuenVnZWhvZXJpZ2tlaXQ6CitNQVRHUk9VUF9GTEVYSUJMRToxMDAKK01BVEdST1VQX1NPTElEOjEwMApkaWZmIC0tZ2l0IGEvZG9jL21hdGVyaWFscy9tYXRlcmlhbHMvTUFUX01JU0NfRkxVSUQgYi9kb2MvbWF0ZXJpYWxzL21hdGVyaWFscy9NQVRfTUlTQ19GTFVJRApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5mY2E5MjZkCi0tLSAvZGV2L251bGwKKysrIGIvZG9jL21hdGVyaWFscy9tYXRlcmlhbHMvTUFUX01JU0NfRkxVSUQKQEAgLTAsMCArMSwxNyBAQAorTWF0ZXJpYWxpZDoKK01BVF9NSVNDX0ZMVUlEICAgICAgICAgICAibWlzY19mbHVpZCIKKworTmFtZToKKyJGbHVlc3NpZ2tlaXQiICJGbHVlc3NpZ2tlaXRzIiAiRmx1ZXNzaWdrZWl0IiAiRmx1ZXNzaWdrZWl0IgorCitHZXNjaGxlY2h0OgorRgorCitCZXNjaHJlaWJ1bmc6CithbGxnLiBGbHVlc3NpZ2tlaXQKKworRXJrZW5uYmFya2VpdDoKKy0ga2VpbmUgRWluc2NocmFlbmt1bmcgLQorCitHcnVwcGVuenVnZWhvZXJpZ2tlaXQ6CitNQVRHUk9VUF9GTFVJRDoxMDAKZGlmZiAtLWdpdCBhL2RvYy9tYXRlcmlhbHMvbWF0ZXJpYWxzL01BVF9NSVNDX0ZPT0QgYi9kb2MvbWF0ZXJpYWxzL21hdGVyaWFscy9NQVRfTUlTQ19GT09ECm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjI0NGM0NDAKLS0tIC9kZXYvbnVsbAorKysgYi9kb2MvbWF0ZXJpYWxzL21hdGVyaWFscy9NQVRfTUlTQ19GT09ECkBAIC0wLDAgKzEsMTggQEAKK01hdGVyaWFsaWQ6CitNQVRfTUlTQ19GT09EICAgICAgICAgICAgIm1pc2NfZm9vZCIKKworTmFtZToKKyJFc3NlbiIgIkVzc2VucyIgIkVzc2VuIiAiRXNzZW4iCisKK0dlc2NobGVjaHQ6CitOCisKK0Jlc2NocmVpYnVuZzoKKy0gbmljaHQgdm9yaGFuZGVuIC0KKworRXJrZW5uYmFya2VpdDoKKy0ga2VpbmUgRWluc2NocmFlbmt1bmcgLQorCitHcnVwcGVuenVnZWhvZXJpZ2tlaXQ6CitNQVRHUk9VUF9FQVRBQkxFOjEwMAorTUFUR1JPVVBfU09MSUQ6MTAwCmRpZmYgLS1naXQgYS9kb2MvbWF0ZXJpYWxzL21hdGVyaWFscy9NQVRfTUlTQ19HQVMgYi9kb2MvbWF0ZXJpYWxzL21hdGVyaWFscy9NQVRfTUlTQ19HQVMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYjhmOTBiYgotLS0gL2Rldi9udWxsCisrKyBiL2RvYy9tYXRlcmlhbHMvbWF0ZXJpYWxzL01BVF9NSVNDX0dBUwpAQCAtMCwwICsxLDE4IEBACitNYXRlcmlhbGlkOgorTUFUX01JU0NfR0FTICAgICAgICAgICAgICJtaXNjX2dhcyIKKworTmFtZToKKyJHYXMiICJHYXNlcyIgIkdhcyIgIkdhcyIKKworR2VzY2hsZWNodDoKK04KKworQmVzY2hyZWlidW5nOgorYWxsZy4gR2FzCisKK0Vya2VubmJhcmtlaXQ6CistIGtlaW5lIEVpbnNjaHJhZW5rdW5nIC0KKworR3J1cHBlbnp1Z2Vob2VyaWdrZWl0OgorTUFUR1JPVVBfR0FTOjEwMAorTUFUR1JPVVBfSU5WSVM6MTAwCmRpZmYgLS1naXQgYS9kb2MvbWF0ZXJpYWxzL21hdGVyaWFscy9NQVRfTUlTQ19IRVJCQUwgYi9kb2MvbWF0ZXJpYWxzL21hdGVyaWFscy9NQVRfTUlTQ19IRVJCQUwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNjQ1YzhmMwotLS0gL2Rldi9udWxsCisrKyBiL2RvYy9tYXRlcmlhbHMvbWF0ZXJpYWxzL01BVF9NSVNDX0hFUkJBTApAQCAtMCwwICsxLDIxIEBACitNYXRlcmlhbGlkOgorTUFUX01JU0NfSEVSQkFMICAgICAgICAgICJtaXNjX2hlcmJhbCIKKworTmFtZToKKyJLcmFldXRlciIgIktyYWV1dGVyIiAiS3JhZXV0ZXIiICJLcmFldXRlciIKKworR2VzY2hsZWNodDoKK0YKKworQmVzY2hyZWlidW5nOgorYWxsZy4gS3JhZXV0ZXIKKworRXJrZW5uYmFya2VpdDoKK01BVF9NSVNDX1BMQU5UOjE1CitNQVRfTUlTQ19IRVJCQUwKKworR3J1cHBlbnp1Z2Vob2VyaWdrZWl0OgorTUFUR1JPVVBfSEVSQkFMOjEwMAorTUFUR1JPVVBfQklPOjEwMAorTUFUR1JPVVBfTElWSU5HOjEwMAorTUFUR1JPVVBfU09MSUQ6MTAwCmRpZmYgLS1naXQgYS9kb2MvbWF0ZXJpYWxzL21hdGVyaWFscy9NQVRfTUlTQ19IT0xZIGIvZG9jL21hdGVyaWFscy9tYXRlcmlhbHMvTUFUX01JU0NfSE9MWQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44ZDI2NWFhCi0tLSAvZGV2L251bGwKKysrIGIvZG9jL21hdGVyaWFscy9tYXRlcmlhbHMvTUFUX01JU0NfSE9MWQpAQCAtMCwwICsxLDE4IEBACitNYXRlcmlhbGlkOgorTUFUX01JU0NfSE9MWSAgICAgICAgICAgICJtaXNjX2hvbHkiCisKK05hbWU6CisiaGVpbGlnZXMgTWF0ZXJpYWwiICJoZWlsaWdlbiBNYXRlcmlhbHMiICJoZWlsaWdlbSBNYXRlcmlhbCIgImhlaWxpZ2VuIE1hdGVyaWFsIgorCitHZXNjaGxlY2h0OgorTgorCitCZXNjaHJlaWJ1bmc6CistIG5pY2h0IHZvcmhhbmRlbiAtCisKK0Vya2VubmJhcmtlaXQ6CistIGtlaW5lIEVpbnNjaHJhZW5rdW5nIC0KKworR3J1cHBlbnp1Z2Vob2VyaWdrZWl0OgorTUFUR1JPVVBfSE9MWToxMDAKK01BVEdST1VQX1NPTElEOjEwMApkaWZmIC0tZ2l0IGEvZG9jL21hdGVyaWFscy9tYXRlcmlhbHMvTUFUX01JU0NfSU5WSVMgYi9kb2MvbWF0ZXJpYWxzL21hdGVyaWFscy9NQVRfTUlTQ19JTlZJUwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5lMTdmZmRlCi0tLSAvZGV2L251bGwKKysrIGIvZG9jL21hdGVyaWFscy9tYXRlcmlhbHMvTUFUX01JU0NfSU5WSVMKQEAgLTAsMCArMSwxOCBAQAorTWF0ZXJpYWxpZDoKK01BVF9NSVNDX0lOVklTICAgICAgICAgICAibWlzY19pbnZpcyIKKworTmFtZToKKyIiICIiICIiICIiCisKK0dlc2NobGVjaHQ6CitGCisKK0Jlc2NocmVpYnVuZzoKK2FsbGcuIHVuc2ljaHRiYXJlcyBNYXRlcmlhbAorCitFcmtlbm5iYXJrZWl0OgorLSBrZWluZSBFaW5zY2hyYWVua3VuZyAtCisKK0dydXBwZW56dWdlaG9lcmlna2VpdDoKK01BVEdST1VQX01JU0M6MTAwCitNQVRHUk9VUF9JTlZJUzoxMDAKZGlmZiAtLWdpdCBhL2RvYy9tYXRlcmlhbHMvbWF0ZXJpYWxzL01BVF9NSVNDX0pFV0VMIGIvZG9jL21hdGVyaWFscy9tYXRlcmlhbHMvTUFUX01JU0NfSkVXRUwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNmQxMzI3ZgotLS0gL2Rldi9udWxsCisrKyBiL2RvYy9tYXRlcmlhbHMvbWF0ZXJpYWxzL01BVF9NSVNDX0pFV0VMCkBAIC0wLDAgKzEsMjAgQEAKK01hdGVyaWFsaWQ6CitNQVRfTUlTQ19KRVdFTCAgICAgICAgICAgIm1pc2NfamV3ZWwiCisKK05hbWU6CisiRWRlbHN0ZWluIiAiRWRlbHN0ZWlucyIgIkVkZWxzdGVpbiIgIkVkZWxzdGVpbiIKKworR2VzY2hsZWNodDoKK00KKworQmVzY2hyZWlidW5nOgorLSBuaWNodCB2b3JoYW5kZW4gLQorCitFcmtlbm5iYXJrZWl0OgorLSBrZWluZSBFaW5zY2hyYWVua3VuZyAtCisKK0dydXBwZW56dWdlaG9lcmlna2VpdDoKK01BVEdST1VQX01JTkVSQUw6MTAwCitNQVRHUk9VUF9TT0xJRDoxMDAKK01BVEdST1VQX0pFV0VMOjEwMAorTUFUR1JPVVBfU1RPTkU6MTAwCmRpZmYgLS1naXQgYS9kb2MvbWF0ZXJpYWxzL21hdGVyaWFscy9NQVRfTUlTQ19MSVZJTkcgYi9kb2MvbWF0ZXJpYWxzL21hdGVyaWFscy9NQVRfTUlTQ19MSVZJTkcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNTgxYTAxZgotLS0gL2Rldi9udWxsCisrKyBiL2RvYy9tYXRlcmlhbHMvbWF0ZXJpYWxzL01BVF9NSVNDX0xJVklORwpAQCAtMCwwICsxLDE5IEBACitNYXRlcmlhbGlkOgorTUFUX01JU0NfTElWSU5HICAgICAgICAgICJtaXNjX2xpdmluZyIKKworTmFtZToKKyJMZWJld2VzZW4iICJMZWJld2VzZW5zIiAiTGViZXdlc2VuIiAiTGViZXdlc2VuIgorCitHZXNjaGxlY2h0OgorTgorCitCZXNjaHJlaWJ1bmc6CithbGxnLiBsZWJlbmRlcyBNYXRlcmlhbAorCitFcmtlbm5iYXJrZWl0OgorLSBrZWluZSBFaW5zY2hyYWVua3VuZyAtCisKK0dydXBwZW56dWdlaG9lcmlna2VpdDoKK01BVEdST1VQX0JJTzoxMDAKK01BVEdST1VQX1NPTElEOjEwMAorTUFUR1JPVVBfTElWSU5HOjEwMApkaWZmIC0tZ2l0IGEvZG9jL21hdGVyaWFscy9tYXRlcmlhbHMvTUFUX01JU0NfTUFHSUMgYi9kb2MvbWF0ZXJpYWxzL21hdGVyaWFscy9NQVRfTUlTQ19NQUdJQwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4wODg2YjU5Ci0tLSAvZGV2L251bGwKKysrIGIvZG9jL21hdGVyaWFscy9tYXRlcmlhbHMvTUFUX01JU0NfTUFHSUMKQEAgLTAsMCArMSwxOCBAQAorTWF0ZXJpYWxpZDoKK01BVF9NSVNDX01BR0lDICAgICAgICAgICAibWlzY19tYWdpYyIKKworTmFtZToKKyJNYWdpZSIgIk1hZ2llIiAiTWFnaWUiICJNYWdpZSIKKworR2VzY2hsZWNodDoKK0YKKworQmVzY2hyZWlidW5nOgorYWxsZy4gbWFnaXNjaGVzIE1hdGVyaWFsLCBkYXMgc2ljaCBuaWNodCBuYWVoZXIgYmVzdGltbWVuIGxhZXNzdCAod2llIE9rdGFyaW4sIEJpcm5iYXVtaG9seikKKworRXJrZW5uYmFya2VpdDoKKy0ga2VpbmUgRWluc2NocmFlbmt1bmcgLQorCitHcnVwcGVuenVnZWhvZXJpZ2tlaXQ6CitNQVRHUk9VUF9NSVNDOjEwMAorTUFUR1JPVVBfTUFHSUM6MTAwCmRpZmYgLS1naXQgYS9kb2MvbWF0ZXJpYWxzL21hdGVyaWFscy9NQVRfTUlTQ19NQUdORVRJQyBiL2RvYy9tYXRlcmlhbHMvbWF0ZXJpYWxzL01BVF9NSVNDX01BR05FVElDCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjJkNDg1MzkKLS0tIC9kZXYvbnVsbAorKysgYi9kb2MvbWF0ZXJpYWxzL21hdGVyaWFscy9NQVRfTUlTQ19NQUdORVRJQwpAQCAtMCwwICsxLDE4IEBACitNYXRlcmlhbGlkOgorTUFUX01JU0NfTUFHTkVUSUMgICAgICAgICJtaXNjX21hZ25ldGljIgorCitOYW1lOgorIm1hZ25ldGlzY2hlcyBNYXRlcmlhbCIgIm1hZ25ldGlzY2hlbiBNYXRlcmlhbHMiICJtYWduZXRpc2NoZW0gTWF0ZXJpYWwiICJtYWduZXRpc2NoZW4gTWF0ZXJpYWwiCisKK0dlc2NobGVjaHQ6CitOCisKK0Jlc2NocmVpYnVuZzoKKy0gbmljaHQgdm9yaGFuZGVuIC0KKworRXJrZW5uYmFya2VpdDoKKy0ga2VpbmUgRWluc2NocmFlbmt1bmcgLQorCitHcnVwcGVuenVnZWhvZXJpZ2tlaXQ6CitNQVRHUk9VUF9NQUdORVRJQzoxMDAKK01BVEdST1VQX1NPTElEOjEwMApkaWZmIC0tZ2l0IGEvZG9jL21hdGVyaWFscy9tYXRlcmlhbHMvTUFUX01JU0NfTUVUQUwgYi9kb2MvbWF0ZXJpYWxzL21hdGVyaWFscy9NQVRfTUlTQ19NRVRBTApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi42MWI4NzFjCi0tLSAvZGV2L251bGwKKysrIGIvZG9jL21hdGVyaWFscy9tYXRlcmlhbHMvTUFUX01JU0NfTUVUQUwKQEAgLTAsMCArMSwxOCBAQAorTWF0ZXJpYWxpZDoKK01BVF9NSVNDX01FVEFMICAgICAgICAgICAibWlzY19tZXRhbCIKKworTmFtZToKKyJNZXRhbGwiICJNZXRhbGxzIiAiTWV0YWxsIiAiTWV0YWxsIgorCitHZXNjaGxlY2h0OgorTgorCitCZXNjaHJlaWJ1bmc6CithbGxnLiBNZXRhbGwKKworRXJrZW5uYmFya2VpdDoKKy0ga2VpbmUgRWluc2NocmFlbmt1bmcgLQorCitHcnVwcGVuenVnZWhvZXJpZ2tlaXQ6CitNQVRHUk9VUF9NRVRBTDoxMDAKK01BVEdST1VQX1NPTElEOjEwMApkaWZmIC0tZ2l0IGEvZG9jL21hdGVyaWFscy9tYXRlcmlhbHMvTUFUX01JU0NfTUlORVJBTCBiL2RvYy9tYXRlcmlhbHMvbWF0ZXJpYWxzL01BVF9NSVNDX01JTkVSQUwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOTFkYTk4ZAotLS0gL2Rldi9udWxsCisrKyBiL2RvYy9tYXRlcmlhbHMvbWF0ZXJpYWxzL01BVF9NSVNDX01JTkVSQUwKQEAgLTAsMCArMSwxOSBAQAorTWF0ZXJpYWxpZDoKK01BVF9NSVNDX01JTkVSQUwgICAgICAgICAibWlzY19taW5lcmFsIgorCitOYW1lOgorIk1pbmVyYWwiICJNaW5lcmFscyIgIk1pbmVyYWwiICJNaW5lcmFsIgorCitHZXNjaGxlY2h0OgorTgorCitCZXNjaHJlaWJ1bmc6CithbGxnLiBNaW5lcmFsaWVuCisKK0Vya2VubmJhcmtlaXQ6CistIGtlaW5lIEVpbnNjaHJhZW5rdW5nIC0KKworR3J1cHBlbnp1Z2Vob2VyaWdrZWl0OgorTUFUR1JPVVBfTUlORVJBTDoxMDAKK01BVEdST1VQX1NPTElEOjEwMAorTUFUR1JPVVBfU1RPTkU6MTAwCmRpZmYgLS1naXQgYS9kb2MvbWF0ZXJpYWxzL21hdGVyaWFscy9NQVRfTUlTQ19QTEFOVCBiL2RvYy9tYXRlcmlhbHMvbWF0ZXJpYWxzL01BVF9NSVNDX1BMQU5UCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmZmODA1YmMKLS0tIC9kZXYvbnVsbAorKysgYi9kb2MvbWF0ZXJpYWxzL21hdGVyaWFscy9NQVRfTUlTQ19QTEFOVApAQCAtMCwwICsxLDIwIEBACitNYXRlcmlhbGlkOgorTUFUX01JU0NfUExBTlQgICAgICAgICAgICJtaXNjX3BsYW50IgorCitOYW1lOgorInBmbGFuemxpY2hlcyBNYXRlcmlhbCIgInBmbGFuemxpY2hlbiBNYXRlcmlhbHMiICJwZmxhbnpsaWNoZW0gTWF0ZXJpYWwiICJwZmxhbnpsaWNoZW4gTWF0ZXJpYWwiCisKK0dlc2NobGVjaHQ6CitOCisKK0Jlc2NocmVpYnVuZzoKK2FsbGcuIHBsYW56bGljaGVzIE1hdGVyaWFsIG9obmUgSG9semFudGVpbAorCitFcmtlbm5iYXJrZWl0OgorLSBrZWluZSBFaW5zY2hyYWVua3VuZyAtCisKK0dydXBwZW56dWdlaG9lcmlna2VpdDoKK01BVEdST1VQX0hFUkJBTDoxMDAKK01BVEdST1VQX0JJTzoxMDAKK01BVEdST1VQX0xJVklORzoxMDAKK01BVEdST1VQX1NPTElEOjEwMApkaWZmIC0tZ2l0IGEvZG9jL21hdGVyaWFscy9tYXRlcmlhbHMvTUFUX01JU0NfUE9JU09OIGIvZG9jL21hdGVyaWFscy9tYXRlcmlhbHMvTUFUX01JU0NfUE9JU09OCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjgyNzU0ZjEKLS0tIC9kZXYvbnVsbAorKysgYi9kb2MvbWF0ZXJpYWxzL21hdGVyaWFscy9NQVRfTUlTQ19QT0lTT04KQEAgLTAsMCArMSwxOCBAQAorTWF0ZXJpYWxpZDoKK01BVF9NSVNDX1BPSVNPTiAgICAgICAgICAibWlzY19wb2lzb24iCisKK05hbWU6CisiZ2lmdGlnZXMgTWF0ZXJpYWwiICJnaWZ0aWdlbiBNYXRlcmlhbHMiICJnaWZ0aWdlbSBNYXRlcmlhbCIgImdpZnRpZ2VuIE1hdGVyaWFsIgorCitHZXNjaGxlY2h0OgorTgorCitCZXNjaHJlaWJ1bmc6CistIG5pY2h0IHZvcmhhbmRlbiAtCisKK0Vya2VubmJhcmtlaXQ6CistIGtlaW5lIEVpbnNjaHJhZW5rdW5nIC0KKworR3J1cHBlbnp1Z2Vob2VyaWdrZWl0OgorTUFUR1JPVVBfTUlTQzoxMDAKK01BVEdST1VQX1BPSVNPTk9VUzoxMDAKZGlmZiAtLWdpdCBhL2RvYy9tYXRlcmlhbHMvbWF0ZXJpYWxzL01BVF9NSVNDX1NPTElEIGIvZG9jL21hdGVyaWFscy9tYXRlcmlhbHMvTUFUX01JU0NfU09MSUQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uM2I3NWNlOAotLS0gL2Rldi9udWxsCisrKyBiL2RvYy9tYXRlcmlhbHMvbWF0ZXJpYWxzL01BVF9NSVNDX1NPTElECkBAIC0wLDAgKzEsMTcgQEAKK01hdGVyaWFsaWQ6CitNQVRfTUlTQ19TT0xJRCAgICAgICAgICAgIm1pc2Nfc29saWQiCisKK05hbWU6CisidmVyc2NoaWVkZW5lcyBNYXRlcmlhbCIgInZlcnNjaGllZGVuZW4gTWF0ZXJpYWxzIiAidmVyc2NoaWVkZW5lbSBNYXRlcmlhbCIgInZlcnNjaGllZGVuZW4gTWF0ZXJpYWwiCisKK0dlc2NobGVjaHQ6CitOCisKK0Jlc2NocmVpYnVuZzoKK2FsbGcuIEZlc3RzdG9mZmUKKworRXJrZW5uYmFya2VpdDoKKy0ga2VpbmUgRWluc2NocmFlbmt1bmcgLQorCitHcnVwcGVuenVnZWhvZXJpZ2tlaXQ6CitNQVRHUk9VUF9TT0xJRDoxMDAKZGlmZiAtLWdpdCBhL2RvYy9tYXRlcmlhbHMvbWF0ZXJpYWxzL01BVF9NSVNDX1NUT05FIGIvZG9jL21hdGVyaWFscy9tYXRlcmlhbHMvTUFUX01JU0NfU1RPTkUKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNjM3NWJlNwotLS0gL2Rldi9udWxsCisrKyBiL2RvYy9tYXRlcmlhbHMvbWF0ZXJpYWxzL01BVF9NSVNDX1NUT05FCkBAIC0wLDAgKzEsMTggQEAKK01hdGVyaWFsaWQ6CitNQVRfTUlTQ19TVE9ORSAgICAgICAgICAgIm1pc2Nfc3RvbmUiCisKK05hbWU6CisiU3RlaW4iICJTdGVpbmVzIiAiU3RlaW4iICJTdGVpbiIKKworR2VzY2hsZWNodDoKK00KKworQmVzY2hyZWlidW5nOgorYWxsZy4gR2VzdGVpbgorCitFcmtlbm5iYXJrZWl0OgorLSBrZWluZSBFaW5zY2hyYWVua3VuZyAtCisKK0dydXBwZW56dWdlaG9lcmlna2VpdDoKK01BVEdST1VQX1NUT05FOjEwMAorTUFUR1JPVVBfU09MSUQ6MTAwCmRpZmYgLS1naXQgYS9kb2MvbWF0ZXJpYWxzL21hdGVyaWFscy9NQVRfTUlTQ19UUk9QSUNBTF9XT09EIGIvZG9jL21hdGVyaWFscy9tYXRlcmlhbHMvTUFUX01JU0NfVFJPUElDQUxfV09PRApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4wMzc2YzViCi0tLSAvZGV2L251bGwKKysrIGIvZG9jL21hdGVyaWFscy9tYXRlcmlhbHMvTUFUX01JU0NfVFJPUElDQUxfV09PRApAQCAtMCwwICsxLDIzIEBACitNYXRlcmlhbGlkOgorTUFUX01JU0NfVFJPUElDQUxfV09PRCAgICJtaXNjX3Ryb3BpY2FsX3dvb2QiCisKK05hbWU6CisiVHJvcGVuaG9seiIgIlRyb3BlbmhvbHplcyIgIlRyb3BlbmhvbHoiICJUcm9wZW5ob2x6IgorCitHZXNjaGxlY2h0OgorTgorCitCZXNjaHJlaWJ1bmc6CistIG5pY2h0IHZvcmhhbmRlbiAtCisKK0Vya2VubmJhcmtlaXQ6CistIGtlaW5lIEVpbnNjaHJhZW5rdW5nIC0KKworR3J1cHBlbnp1Z2Vob2VyaWdrZWl0OgorTUFUR1JPVVBfREVBRDoxMDAKK01BVEdST1VQX0hFUkJBTDoxMDAKK01BVEdST1VQX1RST1BJQ0FMX1dPT0Q6MTAwCitNQVRHUk9VUF9CSU86MTAwCitNQVRHUk9VUF9JTkZMQU1NQUJMRToxMDAKK01BVEdST1VQX1NPTElEOjEwMAorTUFUR1JPVVBfV09PRDoxMDAKZGlmZiAtLWdpdCBhL2RvYy9tYXRlcmlhbHMvbWF0ZXJpYWxzL01BVF9NSVNDX1VOSE9MWSBiL2RvYy9tYXRlcmlhbHMvbWF0ZXJpYWxzL01BVF9NSVNDX1VOSE9MWQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4zNjQyMDZhCi0tLSAvZGV2L251bGwKKysrIGIvZG9jL21hdGVyaWFscy9tYXRlcmlhbHMvTUFUX01JU0NfVU5IT0xZCkBAIC0wLDAgKzEsMTggQEAKK01hdGVyaWFsaWQ6CitNQVRfTUlTQ19VTkhPTFkgICAgICAgICAgIm1pc2NfdW5ob2x5IgorCitOYW1lOgorInVuaGVpbGlnZXMgTWF0ZXJpYWwiICJ1bmhlaWxpZ2VuIE1hdGVyaWFscyIgInVuaGVpbGlnZW0gTWF0ZXJpYWwiICJ1bmhlaWxpZ2VuIE1hdGVyaWFsIgorCitHZXNjaGxlY2h0OgorTgorCitCZXNjaHJlaWJ1bmc6CistIG5pY2h0IHZvcmhhbmRlbiAtCisKK0Vya2VubmJhcmtlaXQ6CistIGtlaW5lIEVpbnNjaHJhZW5rdW5nIC0KKworR3J1cHBlbnp1Z2Vob2VyaWdrZWl0OgorTUFUR1JPVVBfVU5IT0xZOjEwMAorTUFUR1JPVVBfU09MSUQ6MTAwCmRpZmYgLS1naXQgYS9kb2MvbWF0ZXJpYWxzL21hdGVyaWFscy9NQVRfTUlTQ19XT09EIGIvZG9jL21hdGVyaWFscy9tYXRlcmlhbHMvTUFUX01JU0NfV09PRApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4zOTM3ZTkxCi0tLSAvZGV2L251bGwKKysrIGIvZG9jL21hdGVyaWFscy9tYXRlcmlhbHMvTUFUX01JU0NfV09PRApAQCAtMCwwICsxLDIyIEBACitNYXRlcmlhbGlkOgorTUFUX01JU0NfV09PRCAgICAgICAgICAgICJtaXNjX3dvb2QiCisKK05hbWU6CisiSG9seiIgIkhvbHplcyIgIkhvbHoiICJIb2x6IgorCitHZXNjaGxlY2h0OgorTgorCitCZXNjaHJlaWJ1bmc6CistIG5pY2h0IHZvcmhhbmRlbiAtCisKK0Vya2VubmJhcmtlaXQ6CistIGtlaW5lIEVpbnNjaHJhZW5rdW5nIC0KKworR3J1cHBlbnp1Z2Vob2VyaWdrZWl0OgorTUFUR1JPVVBfREVBRDoxMDAKK01BVEdST1VQX0hFUkJBTDoxMDAKK01BVEdST1VQX0JJTzoxMDAKK01BVEdST1VQX0lORkxBTU1BQkxFOjEwMAorTUFUR1JPVVBfU09MSUQ6MTAwCitNQVRHUk9VUF9XT09EOjEwMApkaWZmIC0tZ2l0IGEvZG9jL21hdGVyaWFscy9tYXRlcmlhbHMvTUFUX01JVEhSSUwgYi9kb2MvbWF0ZXJpYWxzL21hdGVyaWFscy9NQVRfTUlUSFJJTApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi45MGZlNzEzCi0tLSAvZGV2L251bGwKKysrIGIvZG9jL21hdGVyaWFscy9tYXRlcmlhbHMvTUFUX01JVEhSSUwKQEAgLTAsMCArMSwxOSBAQAorTWF0ZXJpYWxpZDoKK01BVF9NSVRIUklMICAgICAgICAgICAgICAibWl0aHJpbCIKKworTmFtZToKKyJNaXRocmlsIiAiTWl0aHJpbHMiICJNaXRocmlsIiAiTWl0aHJpbCIKKworR2VzY2hsZWNodDoKK04KKworQmVzY2hyZWlidW5nOgorWndlcmdlbnJ1ZXN0dW5nc21ldGFsbAorCitFcmtlbm5iYXJrZWl0OgorLSBrZWluZSBFaW5zY2hyYWVua3VuZyAtCisKK0dydXBwZW56dWdlaG9lcmlna2VpdDoKK01BVEdST1VQX01FVEFMOjEwMAorTUFUR1JPVVBfU09MSUQ6MTAwCitNQVRHUk9VUF9QUkVDSU9VU19NRVRBTDoxMDAKZGlmZiAtLWdpdCBhL2RvYy9tYXRlcmlhbHMvbWF0ZXJpYWxzL01BVF9NT09OU1RPTkUgYi9kb2MvbWF0ZXJpYWxzL21hdGVyaWFscy9NQVRfTU9PTlNUT05FCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjA4M2JlZGEKLS0tIC9kZXYvbnVsbAorKysgYi9kb2MvbWF0ZXJpYWxzL21hdGVyaWFscy9NQVRfTU9PTlNUT05FCkBAIC0wLDAgKzEsMjAgQEAKK01hdGVyaWFsaWQ6CitNQVRfTU9PTlNUT05FICAgICAgICAgICAgIm1vb25zdG9uZSIKKworTmFtZToKKyJNb25kc3RlaW4iICJNb25kc3RlaW5lcyIgIk1vbmRzdGVpbiIgIk1vbmRzdGVpbiIKKworR2VzY2hsZWNodDoKK00KKworQmVzY2hyZWlidW5nOgorZ2VsYiwgYmxhZXVsaWNoLCBmYWhsCisKK0Vya2VubmJhcmtlaXQ6CitNQVRfTUlTQ19NSU5FUkFMOjI1CitNQVRfTU9PTlNUT05FCisKK0dydXBwZW56dWdlaG9lcmlna2VpdDoKK01BVEdST1VQX01JTkVSQUw6MTAwCitNQVRHUk9VUF9TT0xJRDoxMDAKK01BVEdST1VQX1NUT05FOjEwMApkaWZmIC0tZ2l0IGEvZG9jL21hdGVyaWFscy9tYXRlcmlhbHMvTUFUX01PUlBISVVNIGIvZG9jL21hdGVyaWFscy9tYXRlcmlhbHMvTUFUX01PUlBISVVNCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmYzZDM4M2EKLS0tIC9kZXYvbnVsbAorKysgYi9kb2MvbWF0ZXJpYWxzL21hdGVyaWFscy9NQVRfTU9SUEhJVU0KQEAgLTAsMCArMSwyMCBAQAorTWF0ZXJpYWxpZDoKK01BVF9NT1JQSElVTSAgICAgICAgICAgICAibW9ycGhpdW0iCisKK05hbWU6CisiTW9ycGhpdW0iICJNb3JwaGl1bXMiICJNb3JwaGl1bSIgIk1vcnBoaXVtIgorCitHZXNjaGxlY2h0OgorTgorCitCZXNjaHJlaWJ1bmc6CistIG5pY2h0IHZvcmhhbmRlbiAtCisKK0Vya2VubmJhcmtlaXQ6CitNQVRfU0FMVDo1MAorTUFUX01PUlBISVVNCisKK0dydXBwZW56dWdlaG9lcmlna2VpdDoKK01BVEdST1VQX0hFUkJBTDoxMDAKK01BVEdST1VQX0RSVUc6MTAwCitNQVRHUk9VUF9TT0xJRDoxMDAKZGlmZiAtLWdpdCBhL2RvYy9tYXRlcmlhbHMvbWF0ZXJpYWxzL01BVF9ORVVUUk9OSVVNIGIvZG9jL21hdGVyaWFscy9tYXRlcmlhbHMvTUFUX05FVVRST05JVU0KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYjY0YzI4OQotLS0gL2Rldi9udWxsCisrKyBiL2RvYy9tYXRlcmlhbHMvbWF0ZXJpYWxzL01BVF9ORVVUUk9OSVVNCkBAIC0wLDAgKzEsMTkgQEAKK01hdGVyaWFsaWQ6CitNQVRfTkVVVFJPTklVTSAgICAgICAgICAgIk5ldXRyIgorCitOYW1lOgorIk5ldXRyb25pdW0iICJOZXV0cm9uaXVtcyIgIk5ldXRyb25pdW0iICJOZXV0cm9uaXVtIgorCitHZXNjaGxlY2h0OgorTgorCitCZXNjaHJlaWJ1bmc6Cit1bHRyYXNjaHdlciwgdW56ZXJzdG9lcmJhcgorCitFcmtlbm5iYXJrZWl0OgorTUFUX01JU0NfTUVUQUw6LTI1CitNQVRfTkVVVFJPTklVTQorCitHcnVwcGVuenVnZWhvZXJpZ2tlaXQ6CitNQVRHUk9VUF9NRVRBTDoxMDAKK01BVEdST1VQX1NPTElEOjEwMApkaWZmIC0tZ2l0IGEvZG9jL21hdGVyaWFscy9tYXRlcmlhbHMvTUFUX05JQ0tFTCBiL2RvYy9tYXRlcmlhbHMvbWF0ZXJpYWxzL01BVF9OSUNLRUwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uM2JmMDkzNQotLS0gL2Rldi9udWxsCisrKyBiL2RvYy9tYXRlcmlhbHMvbWF0ZXJpYWxzL01BVF9OSUNLRUwKQEAgLTAsMCArMSwyMCBAQAorTWF0ZXJpYWxpZDoKK01BVF9OSUNLRUwgICAgICAgICAgICAgICAibmlja2VsIgorCitOYW1lOgorIk5pY2tlbCIgIk5pY2tlbHMiICJOaWNrZWwiICJOaWNrZWwiCisKK0dlc2NobGVjaHQ6CitOCisKK0Jlc2NocmVpYnVuZzoKK3phZWgsIGZlc3QsIHNpbGJlcndlaXNzCisKK0Vya2VubmJhcmtlaXQ6CitNQVRfTUlTQ19NRVRBTDowCitNQVRfU0lMVkVSOjE1CitNQVRfTklDS0VMCisKK0dydXBwZW56dWdlaG9lcmlna2VpdDoKK01BVEdST1VQX01FVEFMOjEwMAorTUFUR1JPVVBfU09MSUQ6MTAwCmRpZmYgLS1naXQgYS9kb2MvbWF0ZXJpYWxzL21hdGVyaWFscy9NQVRfTklUUk9HTFlDRVJJTkUgYi9kb2MvbWF0ZXJpYWxzL21hdGVyaWFscy9NQVRfTklUUk9HTFlDRVJJTkUKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZmZmYTA2ZQotLS0gL2Rldi9udWxsCisrKyBiL2RvYy9tYXRlcmlhbHMvbWF0ZXJpYWxzL01BVF9OSVRST0dMWUNFUklORQpAQCAtMCwwICsxLDIxIEBACitNYXRlcmlhbGlkOgorTUFUX05JVFJPR0xZQ0VSSU5FICAgICAgICJuaXRyb2dseWNlcmluZSIKKworTmFtZToKKyJOaXRyb2dseWNlcmluIiAiTml0cm9nbHljZXJpbnMiICJOaXRyb2dseWNlcmluIiAiTml0cm9nbHljZXJpbiIKKworR2VzY2hsZWNodDoKK04KKworQmVzY2hyZWlidW5nOgorLSBuaWNodCB2b3JoYW5kZW4gLQorCitFcmtlbm5iYXJrZWl0OgorTUFUX09JTDoyNQorTUFUX01JU0NfRVhQTE9TSVZFOjUwCitNQVRfTklUUk9HTFlDRVJJTkUKKworR3J1cHBlbnp1Z2Vob2VyaWdrZWl0OgorTUFUR1JPVVBfSU5GTEFNTUFCTEU6MTAwCitNQVRHUk9VUF9FWFBMT1NJVkU6MTAwCitNQVRHUk9VUF9GTFVJRDoxMDAKZGlmZiAtLWdpdCBhL2RvYy9tYXRlcmlhbHMvbWF0ZXJpYWxzL01BVF9OVVRUUkVFIGIvZG9jL21hdGVyaWFscy9tYXRlcmlhbHMvTUFUX05VVFRSRUUKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uN2RkODhmZgotLS0gL2Rldi9udWxsCisrKyBiL2RvYy9tYXRlcmlhbHMvbWF0ZXJpYWxzL01BVF9OVVRUUkVFCkBAIC0wLDAgKzEsMjQgQEAKK01hdGVyaWFsaWQ6CitNQVRfTlVUVFJFRSAgICAgICAgICAgICAgIm51dHRyZWUiCisKK05hbWU6CisiTnVzc2JhdW1ob2x6IiAiTnVzc2JhdW1ob2x6ZXMiICJOdXNzYmF1bWhvbHoiICJOdXNzYmF1bWhvbHoiCisKK0dlc2NobGVjaHQ6CitOCisKK0Jlc2NocmVpYnVuZzoKK2hlbGwsIHBvbGllcmZhZWhpZworCitFcmtlbm5iYXJrZWl0OgorTUFUX01JU0NfREVDSURVT1VTX1dPT0Q6MTUKK01BVF9OVVRUUkVFCisKK0dydXBwZW56dWdlaG9lcmlna2VpdDoKK01BVEdST1VQX0RFQUQ6MTAwCitNQVRHUk9VUF9IRVJCQUw6MTAwCitNQVRHUk9VUF9ERUNJRFVPVVNfV09PRDoxMDAKK01BVEdST1VQX0JJTzoxMDAKK01BVEdST1VQX0lORkxBTU1BQkxFOjEwMAorTUFUR1JPVVBfU09MSUQ6MTAwCitNQVRHUk9VUF9XT09EOjEwMApkaWZmIC0tZ2l0IGEvZG9jL21hdGVyaWFscy9tYXRlcmlhbHMvTUFUX09BSyBiL2RvYy9tYXRlcmlhbHMvbWF0ZXJpYWxzL01BVF9PQUsKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uY2EyNTZkYQotLS0gL2Rldi9udWxsCisrKyBiL2RvYy9tYXRlcmlhbHMvbWF0ZXJpYWxzL01BVF9PQUsKQEAgLTAsMCArMSwyNCBAQAorTWF0ZXJpYWxpZDoKK01BVF9PQUsgICAgICAgICAgICAgICAgICAib2FrIgorCitOYW1lOgorIkVpY2hlbmhvbHoiICJFaWNoZW5ob2x6ZXMiICJFaWNoZW5ob2x6IiAiRWljaGVuaG9seiIKKworR2VzY2hsZWNodDoKK04KKworQmVzY2hyZWlidW5nOgoraGFydAorCitFcmtlbm5iYXJrZWl0OgorTUFUX01JU0NfREVDSURVT1VTX1dPT0Q6NQorTUFUX09BSworCitHcnVwcGVuenVnZWhvZXJpZ2tlaXQ6CitNQVRHUk9VUF9ERUFEOjEwMAorTUFUR1JPVVBfSEVSQkFMOjEwMAorTUFUR1JPVVBfREVDSURVT1VTX1dPT0Q6MTAwCitNQVRHUk9VUF9CSU86MTAwCitNQVRHUk9VUF9JTkZMQU1NQUJMRToxMDAKK01BVEdST1VQX1NPTElEOjEwMAorTUFUR1JPVVBfV09PRDoxMDAKZGlmZiAtLWdpdCBhL2RvYy9tYXRlcmlhbHMvbWF0ZXJpYWxzL01BVF9PQlNJRElBTiBiL2RvYy9tYXRlcmlhbHMvbWF0ZXJpYWxzL01BVF9PQlNJRElBTgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44NjUyMDNiCi0tLSAvZGV2L251bGwKKysrIGIvZG9jL21hdGVyaWFscy9tYXRlcmlhbHMvTUFUX09CU0lESUFOCkBAIC0wLDAgKzEsMjAgQEAKK01hdGVyaWFsaWQ6CitNQVRfT0JTSURJQU4gICAgICAgICAgICAgIm9ic2lkaWFuIgorCitOYW1lOgorIk9ic2lkaWFuIiAiT2JzaWRpYW5zIiAiT2JzaWRpYW4iICJPYnNpZGlhbiIKKworR2VzY2hsZWNodDoKK04KKworQmVzY2hyZWlidW5nOgorc2Nod2FyegorCitFcmtlbm5iYXJrZWl0OgorTUFUX01JU0NfTUlORVJBTDoxMAorTUFUX09CU0lESUFOCisKK0dydXBwZW56dWdlaG9lcmlna2VpdDoKK01BVEdST1VQX01JTkVSQUw6MTAwCitNQVRHUk9VUF9TT0xJRDoxMDAKK01BVEdST1VQX1NUT05FOjEwMApkaWZmIC0tZ2l0IGEvZG9jL21hdGVyaWFscy9tYXRlcmlhbHMvTUFUX09DVEFSSU5FIGIvZG9jL21hdGVyaWFscy9tYXRlcmlhbHMvTUFUX09DVEFSSU5FCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjRlZjBkMjkKLS0tIC9kZXYvbnVsbAorKysgYi9kb2MvbWF0ZXJpYWxzL21hdGVyaWFscy9NQVRfT0NUQVJJTkUKQEAgLTAsMCArMSwyMSBAQAorTWF0ZXJpYWxpZDoKK01BVF9PQ1RBUklORSAgICAgICAgICAgICAib2N0YXJpbmUiCisKK05hbWU6CisiT2t0YXJpbiIgIk9rdGFyaW5zIiAiT2t0YXJpbiIgIk9rdGFyaW4iCisKK0dlc2NobGVjaHQ6CitNCisKK0Jlc2NocmVpYnVuZzoKK21hZ2lzY2hlciBNdWVsbCA6KQorCitFcmtlbm5iYXJrZWl0OgorLSBrZWluZSBFaW5zY2hyYWVua3VuZyAtCisKK0dydXBwZW56dWdlaG9lcmlna2VpdDoKK01BVEdST1VQX01BR0lDOjEwMAorTUFUR1JPVVBfU1RPTkU6MTAwCitNQVRHUk9VUF9KRVdFTDoxMDAKK01BVEdST1VQX01JTkVSQUw6MTAwCitNQVRHUk9VUF9TT0xJRDoxMDAKZGlmZiAtLWdpdCBhL2RvYy9tYXRlcmlhbHMvbWF0ZXJpYWxzL01BVF9PSUwgYi9kb2MvbWF0ZXJpYWxzL21hdGVyaWFscy9NQVRfT0lMCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjdkZTUxMDIKLS0tIC9kZXYvbnVsbAorKysgYi9kb2MvbWF0ZXJpYWxzL21hdGVyaWFscy9NQVRfT0lMCkBAIC0wLDAgKzEsMTggQEAKK01hdGVyaWFsaWQ6CitNQVRfT0lMICAgICAgICAgICAgICAgICAgIm9pbCIKKworTmFtZToKKyJPZWwiICJPZWxzIiAiT2VsIiAiT2VsIgorCitHZXNjaGxlY2h0OgorTgorCitCZXNjaHJlaWJ1bmc6CistIG5pY2h0IHZvcmhhbmRlbiAtCisKK0Vya2VubmJhcmtlaXQ6CistIGtlaW5lIEVpbnNjaHJhZW5rdW5nIC0KKworR3J1cHBlbnp1Z2Vob2VyaWdrZWl0OgorTUFUR1JPVVBfSU5GTEFNTUFCTEU6MTAwCitNQVRHUk9VUF9GTFVJRDoxMDAKZGlmZiAtLWdpdCBhL2RvYy9tYXRlcmlhbHMvbWF0ZXJpYWxzL01BVF9PTElWSU4gYi9kb2MvbWF0ZXJpYWxzL21hdGVyaWFscy9NQVRfT0xJVklOCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjg5YTFlM2IKLS0tIC9kZXYvbnVsbAorKysgYi9kb2MvbWF0ZXJpYWxzL21hdGVyaWFscy9NQVRfT0xJVklOCkBAIC0wLDAgKzEsMjAgQEAKK01hdGVyaWFsaWQ6CitNQVRfT0xJVklOICAgICAgICAgICAgICAgIm9saXZpbiIKKworTmFtZToKKyJPbGl2aW4iICJPbGl2aW5zIiAiT2xpdmluIiAiT2xpdmluIgorCitHZXNjaGxlY2h0OgorTgorCitCZXNjaHJlaWJ1bmc6CitncnVlbiBiaXMgYnJhdW4KKworRXJrZW5uYmFya2VpdDoKK01BVF9NSVNDX01JTkVSQUw6MjAKK01BVF9PTElWSU4KKworR3J1cHBlbnp1Z2Vob2VyaWdrZWl0OgorTUFUR1JPVVBfTUlORVJBTDoxMDAKK01BVEdST1VQX1NPTElEOjEwMAorTUFUR1JPVVBfU1RPTkU6MTAwCmRpZmYgLS1naXQgYS9kb2MvbWF0ZXJpYWxzL21hdGVyaWFscy9NQVRfT05ZWCBiL2RvYy9tYXRlcmlhbHMvbWF0ZXJpYWxzL01BVF9PTllYCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmNiNTM2M2EKLS0tIC9kZXYvbnVsbAorKysgYi9kb2MvbWF0ZXJpYWxzL21hdGVyaWFscy9NQVRfT05ZWApAQCAtMCwwICsxLDIyIEBACitNYXRlcmlhbGlkOgorTUFUX09OWVggICAgICAgICAgICAgICAgICJvbnl4IgorCitOYW1lOgorIk9ueXgiICJPbnl4ZXMiICJPbnl4IiAiT255eCIKKworR2VzY2hsZWNodDoKK00KKworQmVzY2hyZWlidW5nOgorVW50ZXJhcnQgQWNoYXQsIHNjaHdhcnoKKworRXJrZW5uYmFya2VpdDoKK01BVF9NSVNDX01JTkVSQUw6MAorTUFUX1FVQVJUWjoyMAorTUFUX0FHQVRFOjc1CitNQVRfT05ZWAorCitHcnVwcGVuenVnZWhvZXJpZ2tlaXQ6CitNQVRHUk9VUF9NSU5FUkFMOjEwMAorTUFUR1JPVVBfU09MSUQ6MTAwCitNQVRHUk9VUF9TVE9ORToxMDAKZGlmZiAtLWdpdCBhL2RvYy9tYXRlcmlhbHMvbWF0ZXJpYWxzL01BVF9PUEFMIGIvZG9jL21hdGVyaWFscy9tYXRlcmlhbHMvTUFUX09QQUwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uODllOTcwNwotLS0gL2Rldi9udWxsCisrKyBiL2RvYy9tYXRlcmlhbHMvbWF0ZXJpYWxzL01BVF9PUEFMCkBAIC0wLDAgKzEsMjEgQEAKK01hdGVyaWFsaWQ6CitNQVRfT1BBTCAgICAgICAgICAgICAgICAgIm9wYWwiCisKK05hbWU6CisiT3BhbCIgIk9wYWxzIiAiT3BhbCIgIk9wYWwiCisKK0dlc2NobGVjaHQ6CitNCisKK0Jlc2NocmVpYnVuZzoKK3dlaXNzLCByb3QsIGJsYXUsIGJ1bnQKKworRXJrZW5uYmFya2VpdDoKK01BVF9NSVNDX0pFV0VMOjI1CitNQVRfT1BBTAorCitHcnVwcGVuenVnZWhvZXJpZ2tlaXQ6CitNQVRHUk9VUF9NSU5FUkFMOjEwMAorTUFUR1JPVVBfU09MSUQ6MTAwCitNQVRHUk9VUF9KRVdFTDoxMDAKK01BVEdST1VQX1NUT05FOjEwMApkaWZmIC0tZ2l0IGEvZG9jL21hdGVyaWFscy9tYXRlcmlhbHMvTUFUX09QSVVNIGIvZG9jL21hdGVyaWFscy9tYXRlcmlhbHMvTUFUX09QSVVNCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmU2ODA4MjkKLS0tIC9kZXYvbnVsbAorKysgYi9kb2MvbWF0ZXJpYWxzL21hdGVyaWFscy9NQVRfT1BJVU0KQEAgLTAsMCArMSwyMCBAQAorTWF0ZXJpYWxpZDoKK01BVF9PUElVTSAgICAgICAgICAgICAgICAib3BpdW0iCisKK05hbWU6CisiT3BpdW0iICJPcGl1bXMiICJPcGl1bSIgIk9waXVtIgorCitHZXNjaGxlY2h0OgorTgorCitCZXNjaHJlaWJ1bmc6CistIG5pY2h0IHZvcmhhbmRlbiAtCisKK0Vya2VubmJhcmtlaXQ6CitNQVRfTUlTQ19IRVJCQUw6NTAKK01BVF9PUElVTQorCitHcnVwcGVuenVnZWhvZXJpZ2tlaXQ6CitNQVRHUk9VUF9IRVJCQUw6MTAwCitNQVRHUk9VUF9EUlVHOjEwMAorTUFUR1JPVVBfU09MSUQ6MTAwCmRpZmYgLS1naXQgYS9kb2MvbWF0ZXJpYWxzL21hdGVyaWFscy9NQVRfT1JUSE9LTEFTIGIvZG9jL21hdGVyaWFscy9tYXRlcmlhbHMvTUFUX09SVEhPS0xBUwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5kZTEwMGI2Ci0tLSAvZGV2L251bGwKKysrIGIvZG9jL21hdGVyaWFscy9tYXRlcmlhbHMvTUFUX09SVEhPS0xBUwpAQCAtMCwwICsxLDIwIEBACitNYXRlcmlhbGlkOgorTUFUX09SVEhPS0xBUyAgICAgICAgICAgICJvcnRob2tsYXMiCisKK05hbWU6CisiRmVsZHNwYXQiICJGZWxkc3BhdGVzIiAiRmVsZHNwYXQiICJGZWxkc3BhdCIKKworR2VzY2hsZWNodDoKK00KKworQmVzY2hyZWlidW5nOgord2Vpc3MgYmlzIGdyYXUsIGdydWVubGljaAorCitFcmtlbm5iYXJrZWl0OgorTUFUX01JU0NfTUlORVJBTDozMworTUFUX09SVEhPS0xBUworCitHcnVwcGVuenVnZWhvZXJpZ2tlaXQ6CitNQVRHUk9VUF9NSU5FUkFMOjEwMAorTUFUR1JPVVBfU09MSUQ6MTAwCitNQVRHUk9VUF9TVE9ORToxMDAKZGlmZiAtLWdpdCBhL2RvYy9tYXRlcmlhbHMvbWF0ZXJpYWxzL01BVF9PU01JVU0gYi9kb2MvbWF0ZXJpYWxzL21hdGVyaWFscy9NQVRfT1NNSVVNCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjdhYjIxYTAKLS0tIC9kZXYvbnVsbAorKysgYi9kb2MvbWF0ZXJpYWxzL21hdGVyaWFscy9NQVRfT1NNSVVNCkBAIC0wLDAgKzEsMjIgQEAKK01hdGVyaWFsaWQ6CitNQVRfT1NNSVVNICAgICAgICAgICAgICAgIk9zIgorCitOYW1lOgorIk9zbWl1bSIgIk9zbWl1bXMiICJPc21pdW0iICJPc21pdW0iCisKK0dlc2NobGVjaHQ6CitOCisKK0Jlc2NocmVpYnVuZzoKK3NjaHdlcnN0ZXMgTWV0YWxsCisKK0Vya2VubmJhcmtlaXQ6CitNQVRfTUlTQ19NRVRBTDowCitNQVRfU0lMVkVSOjUKK01BVF9QTEFUSU5VTToyNQorTUFUX09TTUlVTQorCitHcnVwcGVuenVnZWhvZXJpZ2tlaXQ6CitNQVRHUk9VUF9NRVRBTDoxMDAKK01BVEdST1VQX1NPTElEOjEwMAorTUFUR1JPVVBfUFJFQ0lPVVNfTUVUQUw6MTAwCmRpZmYgLS1naXQgYS9kb2MvbWF0ZXJpYWxzL21hdGVyaWFscy9NQVRfUEFQRVIgYi9kb2MvbWF0ZXJpYWxzL21hdGVyaWFscy9NQVRfUEFQRVIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNGE3ODIwZAotLS0gL2Rldi9udWxsCisrKyBiL2RvYy9tYXRlcmlhbHMvbWF0ZXJpYWxzL01BVF9QQVBFUgpAQCAtMCwwICsxLDIxIEBACitNYXRlcmlhbGlkOgorTUFUX1BBUEVSICAgICAgICAgICAgICAgICJwYXBlciIKKworTmFtZToKKyJQYXBpZXIiICJQYXBpZXJzIiAiUGFwaWVyIiAiUGFwaWVyIgorCitHZXNjaGxlY2h0OgorTgorCitCZXNjaHJlaWJ1bmc6CistIG5pY2h0IHZvcmhhbmRlbiAtCisKK0Vya2VubmJhcmtlaXQ6CistIGtlaW5lIEVpbnNjaHJhZW5rdW5nIC0KKworR3J1cHBlbnp1Z2Vob2VyaWdrZWl0OgorTUFUR1JPVVBfUEFQRVI6MTAwCitNQVRHUk9VUF9JTkZMQU1NQUJMRToxMDAKK01BVEdST1VQX0JJTzoxMDAKK01BVEdST1VQX0ZMRVhJQkxFOjEwMAorTUFUR1JPVVBfU09MSUQ6MTAwCmRpZmYgLS1naXQgYS9kb2MvbWF0ZXJpYWxzL21hdGVyaWFscy9NQVRfUEFQWVJVUyBiL2RvYy9tYXRlcmlhbHMvbWF0ZXJpYWxzL01BVF9QQVBZUlVTCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmU1ZWU4YzEKLS0tIC9kZXYvbnVsbAorKysgYi9kb2MvbWF0ZXJpYWxzL21hdGVyaWFscy9NQVRfUEFQWVJVUwpAQCAtMCwwICsxLDIxIEBACitNYXRlcmlhbGlkOgorTUFUX1BBUFlSVVMgICAgICAgICAgICAgICJwYXB5cnVzIgorCitOYW1lOgorIlBhcHlydXMiICJQYXB5cnVzcyIgIlBhcHlydXMiICJQYXB5cnVzIgorCitHZXNjaGxlY2h0OgorTQorCitCZXNjaHJlaWJ1bmc6CistIG5pY2h0IHZvcmhhbmRlbiAtCisKK0Vya2VubmJhcmtlaXQ6CistIGtlaW5lIEVpbnNjaHJhZW5rdW5nIC0KKworR3J1cHBlbnp1Z2Vob2VyaWdrZWl0OgorTUFUR1JPVVBfUEFQRVI6MTAwCitNQVRHUk9VUF9JTkZMQU1NQUJMRToxMDAKK01BVEdST1VQX0JJTzoxMDAKK01BVEdST1VQX0ZMRVhJQkxFOjEwMAorTUFUR1JPVVBfU09MSUQ6MTAwCmRpZmYgLS1naXQgYS9kb2MvbWF0ZXJpYWxzL21hdGVyaWFscy9NQVRfUEFSRlVNIGIvZG9jL21hdGVyaWFscy9tYXRlcmlhbHMvTUFUX1BBUkZVTQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5hNzA0ZmQ5Ci0tLSAvZGV2L251bGwKKysrIGIvZG9jL21hdGVyaWFscy9tYXRlcmlhbHMvTUFUX1BBUkZVTQpAQCAtMCwwICsxLDE3IEBACitNYXRlcmlhbGlkOgorTUFUX1BBUkZVTSAgICAgICAgICAgICAgICJwYXJmdW0iCisKK05hbWU6CisiUGFyZnVlbSIgIlBhcmZ1ZW1zIiAiUGFyZnVlbSIgIlBhcmZ1ZW0iCisKK0dlc2NobGVjaHQ6CitOCisKK0Jlc2NocmVpYnVuZzoKKy0gbmljaHQgdm9yaGFuZGVuIC0KKworRXJrZW5uYmFya2VpdDoKKy0ga2VpbmUgRWluc2NocmFlbmt1bmcgLQorCitHcnVwcGVuenVnZWhvZXJpZ2tlaXQ6CitNQVRHUk9VUF9GTFVJRDoxMDAKZGlmZiAtLWdpdCBhL2RvYy9tYXRlcmlhbHMvbWF0ZXJpYWxzL01BVF9QQVRFTlRfTEVBVEhFUiBiL2RvYy9tYXRlcmlhbHMvbWF0ZXJpYWxzL01BVF9QQVRFTlRfTEVBVEhFUgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5jNGZjMTc3Ci0tLSAvZGV2L251bGwKKysrIGIvZG9jL21hdGVyaWFscy9tYXRlcmlhbHMvTUFUX1BBVEVOVF9MRUFUSEVSCkBAIC0wLDAgKzEsMjAgQEAKK01hdGVyaWFsaWQ6CitNQVRfUEFURU5UX0xFQVRIRVIgICAgICAgInBhdGVudF9sZWF0aGVyIgorCitOYW1lOgorIkxhY2tsZWRlciIgIkxhY2tsZWRlcnMiICJMYWNrbGVkZXIiICJMYWNrbGVkZXIiCisKK0dlc2NobGVjaHQ6CitOCisKK0Jlc2NocmVpYnVuZzoKK0t1bnN0bGVkZXIKKworRXJrZW5uYmFya2VpdDoKKy0ga2VpbmUgRWluc2NocmFlbmt1bmcgLQorCitHcnVwcGVuenVnZWhvZXJpZ2tlaXQ6CitNQVRHUk9VUF9GTEVYSUJMRToxMDAKK01BVEdST1VQX0JJTzoxMDAKK01BVEdST1VQX0NMT1RIOjEwMAorTUFUR1JPVVBfU09MSUQ6MTAwCmRpZmYgLS1naXQgYS9kb2MvbWF0ZXJpYWxzL21hdGVyaWFscy9NQVRfUEVBUkwgYi9kb2MvbWF0ZXJpYWxzL21hdGVyaWFscy9NQVRfUEVBUkwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZWI1NmYxMAotLS0gL2Rldi9udWxsCisrKyBiL2RvYy9tYXRlcmlhbHMvbWF0ZXJpYWxzL01BVF9QRUFSTApAQCAtMCwwICsxLDIwIEBACitNYXRlcmlhbGlkOgorTUFUX1BFQVJMICAgICAgICAgICAgICAgICJwZWFybCIKKworTmFtZToKKyJQZXJsZSIgIlBlcmxlIiAiUGVybGUiICJQZXJsZSIKKworR2VzY2hsZWNodDoKK04KKworQmVzY2hyZWlidW5nOgorLSBuaWNodCB2b3JoYW5kZW4gLQorCitFcmtlbm5iYXJrZWl0OgorLSBrZWluZSBFaW5zY2hyYWVua3VuZyAtCisKK0dydXBwZW56dWdlaG9lcmlna2VpdDoKK01BVEdST1VQX0JJTzoxMDAKK01BVEdST1VQX0RFQUQ6MTAwCitNQVRHUk9VUF9TT0xJRDoxMDAKK01BVEdST1VQX0pFV0VMOjEwMApkaWZmIC0tZ2l0IGEvZG9jL21hdGVyaWFscy9tYXRlcmlhbHMvTUFUX1BFQVJMTU9USEVSIGIvZG9jL21hdGVyaWFscy9tYXRlcmlhbHMvTUFUX1BFQVJMTU9USEVSCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmYwNThkYmMKLS0tIC9kZXYvbnVsbAorKysgYi9kb2MvbWF0ZXJpYWxzL21hdGVyaWFscy9NQVRfUEVBUkxNT1RIRVIKQEAgLTAsMCArMSwxOSBAQAorTWF0ZXJpYWxpZDoKK01BVF9QRUFSTE1PVEhFUiAgICAgICAgICAicGVhcmxtb3RoZXIiCisKK05hbWU6CisiUGVybG11dHQiICJQZXJsbXV0dHMiICJQZXJsbXV0dCIgIlBlcmxtdXR0IgorCitHZXNjaGxlY2h0OgorTgorCitCZXNjaHJlaWJ1bmc6CistIG5pY2h0IHZvcmhhbmRlbiAtCisKK0Vya2VubmJhcmtlaXQ6CistIGtlaW5lIEVpbnNjaHJhZW5rdW5nIC0KKworR3J1cHBlbnp1Z2Vob2VyaWdrZWl0OgorTUFUR1JPVVBfREVBRDoxMDAKK01BVEdST1VQX0JJTzoxMDAKK01BVEdST1VQX1NPTElEOjEwMApkaWZmIC0tZ2l0IGEvZG9jL21hdGVyaWFscy9tYXRlcmlhbHMvTUFUX1BFQVJfV09PRCBiL2RvYy9tYXRlcmlhbHMvbWF0ZXJpYWxzL01BVF9QRUFSX1dPT0QKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZDMxZmZiNQotLS0gL2Rldi9udWxsCisrKyBiL2RvYy9tYXRlcmlhbHMvbWF0ZXJpYWxzL01BVF9QRUFSX1dPT0QKQEAgLTAsMCArMSwyNSBAQAorTWF0ZXJpYWxpZDoKK01BVF9QRUFSX1dPT0QgICAgICAgICAgICAicGVhcl93b29kIgorCitOYW1lOgorIkJpcm5iYXVtaG9seiIgIkJpcm5iYXVtaG9semVzIiAiQmlybmJhdW1ob2x6IiAiQmlybmJhdW1ob2x6IgorCitHZXNjaGxlY2h0OgorTgorCitCZXNjaHJlaWJ1bmc6Cit6YWVoLCB0cm9ja2VuLCBtYWdpc2NoCisKK0Vya2VubmJhcmtlaXQ6CitNQVRfTUlTQ19ERUNJRFVPVVNfV09PRDozNQorTUFUX1BFQVJfV09PRAorCitHcnVwcGVuenVnZWhvZXJpZ2tlaXQ6CitNQVRHUk9VUF9ERUFEOjEwMAorTUFUR1JPVVBfTUFHSUM6MTAwCitNQVRHUk9VUF9IRVJCQUw6MTAwCitNQVRHUk9VUF9ERUNJRFVPVVNfV09PRDoxMDAKK01BVEdST1VQX0JJTzoxMDAKK01BVEdST1VQX0lORkxBTU1BQkxFOjEwMAorTUFUR1JPVVBfU09MSUQ6MTAwCitNQVRHUk9VUF9XT09EOjEwMApkaWZmIC0tZ2l0IGEvZG9jL21hdGVyaWFscy9tYXRlcmlhbHMvTUFUX1BFTFQgYi9kb2MvbWF0ZXJpYWxzL21hdGVyaWFscy9NQVRfUEVMVApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5lMTU1NjZkCi0tLSAvZGV2L251bGwKKysrIGIvZG9jL21hdGVyaWFscy9tYXRlcmlhbHMvTUFUX1BFTFQKQEAgLTAsMCArMSwyMSBAQAorTWF0ZXJpYWxpZDoKK01BVF9QRUxUICAgICAgICAgICAgICAgICAicGVsdCIKKworTmFtZToKKyJGZWxsIiAiRmVsbGVzIiAiRmVsbCIgIkZlbGwiCisKK0dlc2NobGVjaHQ6CitNCisKK0Jlc2NocmVpYnVuZzoKKy0gbmljaHQgdm9yaGFuZGVuIC0KKworRXJrZW5uYmFya2VpdDoKKy0ga2VpbmUgRWluc2NocmFlbmt1bmcgLQorCitHcnVwcGVuenVnZWhvZXJpZ2tlaXQ6CitNQVRHUk9VUF9ERUFEOjEwMAorTUFUR1JPVVBfQ0xPVEg6MTAwCitNQVRHUk9VUF9CSU86MTAwCitNQVRHUk9VUF9GTEVYSUJMRToxMDAKK01BVEdST1VQX1NPTElEOjEwMApkaWZmIC0tZ2l0IGEvZG9jL21hdGVyaWFscy9tYXRlcmlhbHMvTUFUX1BFTklDSUxMSU4gYi9kb2MvbWF0ZXJpYWxzL21hdGVyaWFscy9NQVRfUEVOSUNJTExJTgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi43ZDc5MzQ0Ci0tLSAvZGV2L251bGwKKysrIGIvZG9jL21hdGVyaWFscy9tYXRlcmlhbHMvTUFUX1BFTklDSUxMSU4KQEAgLTAsMCArMSwyMSBAQAorTWF0ZXJpYWxpZDoKK01BVF9QRU5JQ0lMTElOICAgICAgICAgICAicGVuaWNpbGxpbiIKKworTmFtZToKKyJQZW5pY2lsbGluIiAiUGVuaWNpbGxpbnMiICJQZW5pY2lsbGluIiAiUGVuaWNpbGxpbiIKKworR2VzY2hsZWNodDoKK04KKworQmVzY2hyZWlidW5nOgorLSBuaWNodCB2b3JoYW5kZW4gLQorCitFcmtlbm5iYXJrZWl0OgorTUFUX0NIQUxLOjUwCitNQVRfUEVOSUNJTExJTgorCitHcnVwcGVuenVnZWhvZXJpZ2tlaXQ6CitNQVRHUk9VUF9CSU86MTAwCitNQVRHUk9VUF9ERUFEOjEwMAorTUFUR1JPVVBfRFJVRzoxMDAKK01BVEdST1VQX1NPTElEOjEwMApkaWZmIC0tZ2l0IGEvZG9jL21hdGVyaWFscy9tYXRlcmlhbHMvTUFUX1BFUkdBTUVOVCBiL2RvYy9tYXRlcmlhbHMvbWF0ZXJpYWxzL01BVF9QRVJHQU1FTlQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNzk0MTE3OAotLS0gL2Rldi9udWxsCisrKyBiL2RvYy9tYXRlcmlhbHMvbWF0ZXJpYWxzL01BVF9QRVJHQU1FTlQKQEAgLTAsMCArMSwyMiBAQAorTWF0ZXJpYWxpZDoKK01BVF9QRVJHQU1FTlQgICAgICAgICAgICAicGVyZ2FtZW50IgorCitOYW1lOgorIlBlcmdhbWVudCIgIlBlcmdhbWVudHMiICJQZXJnYW1lbnQiICJQZXJnYW1lbnQiCisKK0dlc2NobGVjaHQ6CitOCisKK0Jlc2NocmVpYnVuZzoKKy0gbmljaHQgdm9yaGFuZGVuIC0KKworRXJrZW5uYmFya2VpdDoKKy0ga2VpbmUgRWluc2NocmFlbmt1bmcgLQorCitHcnVwcGVuenVnZWhvZXJpZ2tlaXQ6CitNQVRHUk9VUF9ERUFEOjEwMAorTUFUR1JPVVBfUEFQRVI6MTAwCitNQVRHUk9VUF9GTEVYSUJMRToxMDAKK01BVEdST1VQX0JJTzoxMDAKK01BVEdST1VQX0lORkxBTU1BQkxFOjEwMAorTUFUR1JPVVBfU09MSUQ6MTAwCmRpZmYgLS1naXQgYS9kb2MvbWF0ZXJpYWxzL21hdGVyaWFscy9NQVRfUEhPU1BIT1JVUyBiL2RvYy9tYXRlcmlhbHMvbWF0ZXJpYWxzL01BVF9QSE9TUEhPUlVTCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmM1YTBmYmIKLS0tIC9kZXYvbnVsbAorKysgYi9kb2MvbWF0ZXJpYWxzL21hdGVyaWFscy9NQVRfUEhPU1BIT1JVUwpAQCAtMCwwICsxLDE4IEBACitNYXRlcmlhbGlkOgorTUFUX1BIT1NQSE9SVVMgICAgICAgICAgICJQIgorCitOYW1lOgorIlBob3NwaG9yIiAiUGhvc3Bob3JzIiAiUGhvc3Bob3IiICJQaG9zcGhvciIKKworR2VzY2hsZWNodDoKK00KKworQmVzY2hyZWlidW5nOgorLSBuaWNodCB2b3JoYW5kZW4gLQorCitFcmtlbm5iYXJrZWl0OgorLSBrZWluZSBFaW5zY2hyYWVua3VuZyAtCisKK0dydXBwZW56dWdlaG9lcmlna2VpdDoKK01BVEdST1VQX1BPSVNPTk9VUzoxMDAKK01BVEdST1VQX1NPTElEOjEwMApkaWZmIC0tZ2l0IGEvZG9jL21hdGVyaWFscy9tYXRlcmlhbHMvTUFUX1BJTkUgYi9kb2MvbWF0ZXJpYWxzL21hdGVyaWFscy9NQVRfUElORQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi42NGUxY2RjCi0tLSAvZGV2L251bGwKKysrIGIvZG9jL21hdGVyaWFscy9tYXRlcmlhbHMvTUFUX1BJTkUKQEAgLTAsMCArMSwyNCBAQAorTWF0ZXJpYWxpZDoKK01BVF9QSU5FICAgICAgICAgICAgICAgICAicGluZSIKKworTmFtZToKKyJLaWVmZXJob2x6IiAiS2llZmVybmhvbHplcyIgIktpZWZlcmhvbHoiICJLaWVmZXJob2x6IgorCitHZXNjaGxlY2h0OgorTgorCitCZXNjaHJlaWJ1bmc6CitoYXJ6aWcgKFBpbmllLCBLaWVuc3BhbikKKworRXJrZW5uYmFya2VpdDoKK01BVF9NSVNDX0NPTklGRVJfV09PRDoxNQorTUFUX1BJTkUKKworR3J1cHBlbnp1Z2Vob2VyaWdrZWl0OgorTUFUR1JPVVBfREVBRDoxMDAKK01BVEdST1VQX0hFUkJBTDoxMDAKK01BVEdST1VQX0NPTklGRVJfV09PRDoxMDAKK01BVEdST1VQX0lORkxBTU1BQkxFOjEwMAorTUFUR1JPVVBfQklPOjEwMAorTUFUR1JPVVBfU09MSUQ6MTAwCitNQVRHUk9VUF9XT09EOjEwMApkaWZmIC0tZ2l0IGEvZG9jL21hdGVyaWFscy9tYXRlcmlhbHMvTUFUX1BMQVNUSUMgYi9kb2MvbWF0ZXJpYWxzL21hdGVyaWFscy9NQVRfUExBU1RJQwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi42YzU1MzI3Ci0tLSAvZGV2L251bGwKKysrIGIvZG9jL21hdGVyaWFscy9tYXRlcmlhbHMvTUFUX1BMQVNUSUMKQEAgLTAsMCArMSwxOCBAQAorTWF0ZXJpYWxpZDoKK01BVF9QTEFTVElDICAgICAgICAgICAgICAicGxhc3RpYyIKKworTmFtZToKKyJrdWVuc3RsaWNoZXMgTWF0ZXJpYWwiICJrdWVuc3RsaWNoZW4gTWF0ZXJpYWxzIiAia3VlbnN0bGljaGVtIE1hdGVyaWFsIiAia3VlbnN0bGljaGVuIE1hdGVyaWFsIgorCitHZXNjaGxlY2h0OgorTgorCitCZXNjaHJlaWJ1bmc6CitLdW5zdHN0b2ZmCisKK0Vya2VubmJhcmtlaXQ6CitNQVRfTUlTQ19TT0xJRDozNQorTUFUX1BMQVNUSUMKKworR3J1cHBlbnp1Z2Vob2VyaWdrZWl0OgorTUFUR1JPVVBfU09MSUQ6MTAwCmRpZmYgLS1naXQgYS9kb2MvbWF0ZXJpYWxzL21hdGVyaWFscy9NQVRfUExBVElOVU0gYi9kb2MvbWF0ZXJpYWxzL21hdGVyaWFscy9NQVRfUExBVElOVU0KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYzE2NzFiNQotLS0gL2Rldi9udWxsCisrKyBiL2RvYy9tYXRlcmlhbHMvbWF0ZXJpYWxzL01BVF9QTEFUSU5VTQpAQCAtMCwwICsxLDIxIEBACitNYXRlcmlhbGlkOgorTUFUX1BMQVRJTlVNICAgICAgICAgICAgICJQdCIKKworTmFtZToKKyJQbGF0aW4iICJQbGF0aW5zIiAiUGxhdGluIiAiUGxhdGluIgorCitHZXNjaGxlY2h0OgorTgorCitCZXNjaHJlaWJ1bmc6CitncmF1d2Vpc3MKKworRXJrZW5uYmFya2VpdDoKK01BVF9NSVNDX01FVEFMOjAKK01BVF9TSUxWRVI6NQorTUFUX1BMQVRJTlVNCisKK0dydXBwZW56dWdlaG9lcmlna2VpdDoKK01BVEdST1VQX01FVEFMOjEwMAorTUFUR1JPVVBfU09MSUQ6MTAwCitNQVRHUk9VUF9QUkVDSU9VU19NRVRBTDoxMDAKZGlmZiAtLWdpdCBhL2RvYy9tYXRlcmlhbHMvbWF0ZXJpYWxzL01BVF9QTFVUT05JVU0gYi9kb2MvbWF0ZXJpYWxzL21hdGVyaWFscy9NQVRfUExVVE9OSVVNCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmU1YTI4NTcKLS0tIC9kZXYvbnVsbAorKysgYi9kb2MvbWF0ZXJpYWxzL21hdGVyaWFscy9NQVRfUExVVE9OSVVNCkBAIC0wLDAgKzEsMjAgQEAKK01hdGVyaWFsaWQ6CitNQVRfUExVVE9OSVVNICAgICAgICAgICAgIlB1IgorCitOYW1lOgorIlBsdXRvbml1bSIgIlBsdXRvbml1bXMiICJQbHV0b25pdW0iICJQbHV0b25pdW0iCisKK0dlc2NobGVjaHQ6CitOCisKK0Jlc2NocmVpYnVuZzoKKy0gbmljaHQgdm9yaGFuZGVuIC0KKworRXJrZW5uYmFya2VpdDoKK01BVF9EVVNUOjY1CitNQVRfUExVVE9OSVVNCisKK0dydXBwZW56dWdlaG9lcmlna2VpdDoKK01BVEdST1VQX1JBRElPQUNUSVZFOjEwMAorTUFUR1JPVVBfUE9JU09OT1VTOjEwMAorTUFUR1JPVVBfU09MSUQ6MTAwCmRpZmYgLS1naXQgYS9kb2MvbWF0ZXJpYWxzL21hdGVyaWFscy9NQVRfUE9QTEFSIGIvZG9jL21hdGVyaWFscy9tYXRlcmlhbHMvTUFUX1BPUExBUgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44Y2Y2ZWVkCi0tLSAvZGV2L251bGwKKysrIGIvZG9jL21hdGVyaWFscy9tYXRlcmlhbHMvTUFUX1BPUExBUgpAQCAtMCwwICsxLDI0IEBACitNYXRlcmlhbGlkOgorTUFUX1BPUExBUiAgICAgICAgICAgICAgICJwb3BsYXIiCisKK05hbWU6CisiUGFwcGVsaG9seiIgIlBhcHBlbGhvbHplcyIgIlBhcHBlbGhvbHoiICJQYXBwZWxob2x6IgorCitHZXNjaGxlY2h0OgorTgorCitCZXNjaHJlaWJ1bmc6CitzZWhyIHdlaWNoLCBmYXNlcmlnCisKK0Vya2VubmJhcmtlaXQ6CitNQVRfTUlTQ19ERUNJRFVPVVNfV09PRDoyNQorTUFUX1BPUExBUgorCitHcnVwcGVuenVnZWhvZXJpZ2tlaXQ6CitNQVRHUk9VUF9ERUFEOjEwMAorTUFUR1JPVVBfSEVSQkFMOjEwMAorTUFUR1JPVVBfREVDSURVT1VTX1dPT0Q6MTAwCitNQVRHUk9VUF9CSU86MTAwCitNQVRHUk9VUF9JTkZMQU1NQUJMRToxMDAKK01BVEdST1VQX1NPTElEOjEwMAorTUFUR1JPVVBfV09PRDoxMDAKZGlmZiAtLWdpdCBhL2RvYy9tYXRlcmlhbHMvbWF0ZXJpYWxzL01BVF9RVUFSVFogYi9kb2MvbWF0ZXJpYWxzL21hdGVyaWFscy9NQVRfUVVBUlRaCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmRhNzg3ODYKLS0tIC9kZXYvbnVsbAorKysgYi9kb2MvbWF0ZXJpYWxzL21hdGVyaWFscy9NQVRfUVVBUlRaCkBAIC0wLDAgKzEsMTkgQEAKK01hdGVyaWFsaWQ6CitNQVRfUVVBUlRaICAgICAgICAgICAgICAgInF1YXJ0eiIKKworTmFtZToKKyJRdWFyeiIgIlF1YXJ6ZXMiICJRdWFyeiIgIlF1YXJ6IgorCitHZXNjaGxlY2h0OgorTQorCitCZXNjaHJlaWJ1bmc6CitrbGFyIGJpcyBncmF1LCBhdWNoIGdlbGIKKworRXJrZW5uYmFya2VpdDoKKy0ga2VpbmUgRWluc2NocmFlbmt1bmcgLQorCitHcnVwcGVuenVnZWhvZXJpZ2tlaXQ6CitNQVRHUk9VUF9NSU5FUkFMOjEwMAorTUFUR1JPVVBfU09MSUQ6MTAwCitNQVRHUk9VUF9TVE9ORToxMDAKZGlmZiAtLWdpdCBhL2RvYy9tYXRlcmlhbHMvbWF0ZXJpYWxzL01BVF9ST0JJTklBIGIvZG9jL21hdGVyaWFscy9tYXRlcmlhbHMvTUFUX1JPQklOSUEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uM2MxNjlhNwotLS0gL2Rldi9udWxsCisrKyBiL2RvYy9tYXRlcmlhbHMvbWF0ZXJpYWxzL01BVF9ST0JJTklBCkBAIC0wLDAgKzEsMjQgQEAKK01hdGVyaWFsaWQ6CitNQVRfUk9CSU5JQSAgICAgICAgICAgICAgInJvYmluaWEiCisKK05hbWU6CisiUm9iaW5pZW5ob2x6IiAiUm9iaW5pZW5ob2x6ZXMiICJSb2JpbmllbmhvbHoiICJSb2JpbmllbmhvbHoiCisKK0dlc2NobGVjaHQ6CitOCisKK0Jlc2NocmVpYnVuZzoKK3NlaHIgaGFydAorCitFcmtlbm5iYXJrZWl0OgorTUFUX01JU0NfREVDSURVT1VTX1dPT0Q6NQorTUFUX1JPQklOSUEKKworR3J1cHBlbnp1Z2Vob2VyaWdrZWl0OgorTUFUR1JPVVBfREVBRDoxMDAKK01BVEdST1VQX0hFUkJBTDoxMDAKK01BVEdST1VQX0RFQ0lEVU9VU19XT09EOjEwMAorTUFUR1JPVVBfQklPOjEwMAorTUFUR1JPVVBfSU5GTEFNTUFCTEU6MTAwCitNQVRHUk9VUF9TT0xJRDoxMDAKK01BVEdST1VQX1dPT0Q6MTAwCmRpZmYgLS1naXQgYS9kb2MvbWF0ZXJpYWxzL21hdGVyaWFscy9NQVRfUk9TRVdPT0QgYi9kb2MvbWF0ZXJpYWxzL21hdGVyaWFscy9NQVRfUk9TRVdPT0QKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYjlmZjM2MgotLS0gL2Rldi9udWxsCisrKyBiL2RvYy9tYXRlcmlhbHMvbWF0ZXJpYWxzL01BVF9ST1NFV09PRApAQCAtMCwwICsxLDI0IEBACitNYXRlcmlhbGlkOgorTUFUX1JPU0VXT09EICAgICAgICAgICAgICJyb3Nld29vZCIKKworTmFtZToKKyJQYWxpc2FuZGVyIiAiUGFsaXNhbmRlcnMiICJQYWxpc2FuZGVyIiAiUGFsaXNhbmRlciIKKworR2VzY2hsZWNodDoKK00KKworQmVzY2hyZWlidW5nOgorc2Nob2tvbGFkZW5icmF1bgorCitFcmtlbm5iYXJrZWl0OgorTUFUX01JU0NfVFJPUElDQUxfV09PRDotNQorTUFUX1JPU0VXT09ECisKK0dydXBwZW56dWdlaG9lcmlna2VpdDoKK01BVEdST1VQX0RFQUQ6MTAwCitNQVRHUk9VUF9IRVJCQUw6MTAwCitNQVRHUk9VUF9UUk9QSUNBTF9XT09EOjEwMAorTUFUR1JPVVBfQklPOjEwMAorTUFUR1JPVVBfSU5GTEFNTUFCTEU6MTAwCitNQVRHUk9VUF9TT0xJRDoxMDAKK01BVEdST1VQX1dPT0Q6MTAwCmRpZmYgLS1naXQgYS9kb2MvbWF0ZXJpYWxzL21hdGVyaWFscy9NQVRfUlVCWSBiL2RvYy9tYXRlcmlhbHMvbWF0ZXJpYWxzL01BVF9SVUJZCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjJmMDNjNzUKLS0tIC9kZXYvbnVsbAorKysgYi9kb2MvbWF0ZXJpYWxzL21hdGVyaWFscy9NQVRfUlVCWQpAQCAtMCwwICsxLDIxIEBACitNYXRlcmlhbGlkOgorTUFUX1JVQlkgICAgICAgICAgICAgICAgICJydWJ5IgorCitOYW1lOgorIlJ1YmluIiAiUnViaW5zIiAiUnViaW4iICJSdWJpbiIKKworR2VzY2hsZWNodDoKK00KKworQmVzY2hyZWlidW5nOgorcm90CisKK0Vya2VubmJhcmtlaXQ6CitNQVRfTUlTQ19KRVdFTDoyNQorTUFUX1JVQlkKKworR3J1cHBlbnp1Z2Vob2VyaWdrZWl0OgorTUFUR1JPVVBfTUlORVJBTDoxMDAKK01BVEdST1VQX1NPTElEOjEwMAorTUFUR1JPVVBfSkVXRUw6MTAwCitNQVRHUk9VUF9TVE9ORToxMDAKZGlmZiAtLWdpdCBhL2RvYy9tYXRlcmlhbHMvbWF0ZXJpYWxzL01BVF9TQUxQRVRFUiBiL2RvYy9tYXRlcmlhbHMvbWF0ZXJpYWxzL01BVF9TQUxQRVRFUgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5hYWNhMWJlCi0tLSAvZGV2L251bGwKKysrIGIvZG9jL21hdGVyaWFscy9tYXRlcmlhbHMvTUFUX1NBTFBFVEVSCkBAIC0wLDAgKzEsMTcgQEAKK01hdGVyaWFsaWQ6CitNQVRfU0FMUEVURVIgICAgICAgICAgICAgInNhbHBldGVyIgorCitOYW1lOgorIlNhbHBldGVyIiAiU2FscGV0ZXJzIiAiU2FscGV0ZXIiICJTYWxwZXRlciIKKworR2VzY2hsZWNodDoKK00KKworQmVzY2hyZWlidW5nOgorLSBuaWNodCB2b3JoYW5kZW4gLQorCitFcmtlbm5iYXJrZWl0OgorLSBrZWluZSBFaW5zY2hyYWVua3VuZyAtCisKK0dydXBwZW56dWdlaG9lcmlna2VpdDoKK01BVEdST1VQX1NPTElEOjEwMApkaWZmIC0tZ2l0IGEvZG9jL21hdGVyaWFscy9tYXRlcmlhbHMvTUFUX1NBTFQgYi9kb2MvbWF0ZXJpYWxzL21hdGVyaWFscy9NQVRfU0FMVApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4xZDU0YTllCi0tLSAvZGV2L251bGwKKysrIGIvZG9jL21hdGVyaWFscy9tYXRlcmlhbHMvTUFUX1NBTFQKQEAgLTAsMCArMSwxOCBAQAorTWF0ZXJpYWxpZDoKK01BVF9TQUxUICAgICAgICAgICAgICAgICAibmF0cml1bWNobG9yaWRlIgorCitOYW1lOgorIlNhbHoiICJTYWx6ZXMiICJTYWx6IiAiU2FseiIKKworR2VzY2hsZWNodDoKK04KKworQmVzY2hyZWlidW5nOgorS29jaHNhbHoKKworRXJrZW5uYmFya2VpdDoKKy0ga2VpbmUgRWluc2NocmFlbmt1bmcgLQorCitHcnVwcGVuenVnZWhvZXJpZ2tlaXQ6CitNQVRHUk9VUF9FQVRBQkxFOjEwMAorTUFUR1JPVVBfU09MSUQ6MTAwCmRpZmYgLS1naXQgYS9kb2MvbWF0ZXJpYWxzL21hdGVyaWFscy9NQVRfU0FORCBiL2RvYy9tYXRlcmlhbHMvbWF0ZXJpYWxzL01BVF9TQU5ECm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmFmMzM1NTIKLS0tIC9kZXYvbnVsbAorKysgYi9kb2MvbWF0ZXJpYWxzL21hdGVyaWFscy9NQVRfU0FORApAQCAtMCwwICsxLDE3IEBACitNYXRlcmlhbGlkOgorTUFUX1NBTkQgICAgICAgICAgICAgICAgICJzYW5kIgorCitOYW1lOgorIlNhbmQiICJTYW5kcyIgIlNhbmQiICJTYW5kIgorCitHZXNjaGxlY2h0OgorTQorCitCZXNjaHJlaWJ1bmc6CistIG5pY2h0IHZvcmhhbmRlbiAtCisKK0Vya2VubmJhcmtlaXQ6CistIGtlaW5lIEVpbnNjaHJhZW5rdW5nIC0KKworR3J1cHBlbnp1Z2Vob2VyaWdrZWl0OgorTUFUR1JPVVBfU09MSUQ6MTAwCmRpZmYgLS1naXQgYS9kb2MvbWF0ZXJpYWxzL21hdGVyaWFscy9NQVRfU0FOREFMIGIvZG9jL21hdGVyaWFscy9tYXRlcmlhbHMvTUFUX1NBTkRBTApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5mNzY1OTBkCi0tLSAvZGV2L251bGwKKysrIGIvZG9jL21hdGVyaWFscy9tYXRlcmlhbHMvTUFUX1NBTkRBTApAQCAtMCwwICsxLDI0IEBACitNYXRlcmlhbGlkOgorTUFUX1NBTkRBTCAgICAgICAgICAgICAgICJzYW5kYWwiCisKK05hbWU6CisiU2FuZGVsaG9seiIgIlNhbmRlbGhvbHplcyIgIlNhbmRlbGhvbHoiICJTYW5kZWxob2x6IgorCitHZXNjaGxlY2h0OgorTgorCitCZXNjaHJlaWJ1bmc6CitndXQgcmllY2hlbmQsIGtvc3RiYXIsIGhhcnQKKworRXJrZW5uYmFya2VpdDoKK01BVF9NSVNDX1RST1BJQ0FMX1dPT0Q6LTUKK01BVF9TQU5EQUwKKworR3J1cHBlbnp1Z2Vob2VyaWdrZWl0OgorTUFUR1JPVVBfREVBRDoxMDAKK01BVEdST1VQX0hFUkJBTDoxMDAKK01BVEdST1VQX1RST1BJQ0FMX1dPT0Q6MTAwCitNQVRHUk9VUF9CSU86MTAwCitNQVRHUk9VUF9JTkZMQU1NQUJMRToxMDAKK01BVEdST1VQX1NPTElEOjEwMAorTUFUR1JPVVBfV09PRDoxMDAKZGlmZiAtLWdpdCBhL2RvYy9tYXRlcmlhbHMvbWF0ZXJpYWxzL01BVF9TQVBQSElSRSBiL2RvYy9tYXRlcmlhbHMvbWF0ZXJpYWxzL01BVF9TQVBQSElSRQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi40MzY4MDBjCi0tLSAvZGV2L251bGwKKysrIGIvZG9jL21hdGVyaWFscy9tYXRlcmlhbHMvTUFUX1NBUFBISVJFCkBAIC0wLDAgKzEsMjEgQEAKK01hdGVyaWFsaWQ6CitNQVRfU0FQUEhJUkUgICAgICAgICAgICAgInNhcHBoaXJlIgorCitOYW1lOgorIlNhcGhpciIgIlNhcGhpcnMiICJTYXBoaXIiICJTYXBoaXIiCisKK0dlc2NobGVjaHQ6CitNCisKK0Jlc2NocmVpYnVuZzoKK2JsYXUKKworRXJrZW5uYmFya2VpdDoKK01BVF9NSVNDX0pFV0VMOjI1CitNQVRfU0FQUEhJUkUKKworR3J1cHBlbnp1Z2Vob2VyaWdrZWl0OgorTUFUR1JPVVBfTUlORVJBTDoxMDAKK01BVEdST1VQX1NPTElEOjEwMAorTUFUR1JPVVBfSkVXRUw6MTAwCitNQVRHUk9VUF9TVE9ORToxMDAKZGlmZiAtLWdpdCBhL2RvYy9tYXRlcmlhbHMvbWF0ZXJpYWxzL01BVF9TQVRJTiBiL2RvYy9tYXRlcmlhbHMvbWF0ZXJpYWxzL01BVF9TQVRJTgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5mMmE2ZTNiCi0tLSAvZGV2L251bGwKKysrIGIvZG9jL21hdGVyaWFscy9tYXRlcmlhbHMvTUFUX1NBVElOCkBAIC0wLDAgKzEsMjEgQEAKK01hdGVyaWFsaWQ6CitNQVRfU0FUSU4gICAgICAgICAgICAgICAgInNhdGluIgorCitOYW1lOgorIlNhdGluIiAiU2F0aW5zIiAiU2F0aW4iICJTYXRpbiIKKworR2VzY2hsZWNodDoKK04KKworQmVzY2hyZWlidW5nOgorLSBuaWNodCB2b3JoYW5kZW4gLQorCitFcmtlbm5iYXJrZWl0OgorLSBrZWluZSBFaW5zY2hyYWVua3VuZyAtCisKK0dydXBwZW56dWdlaG9lcmlna2VpdDoKK01BVEdST1VQX0lORkxBTU1BQkxFOjEwMAorTUFUR1JPVVBfQ0xPVEg6MTAwCitNQVRHUk9VUF9CSU86MTAwCitNQVRHUk9VUF9GTEVYSUJMRToxMDAKK01BVEdST1VQX1NPTElEOjEwMApkaWZmIC0tZ2l0IGEvZG9jL21hdGVyaWFscy9tYXRlcmlhbHMvTUFUX1NIQURPVyBiL2RvYy9tYXRlcmlhbHMvbWF0ZXJpYWxzL01BVF9TSEFET1cKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNWRlNDU5YgotLS0gL2Rldi9udWxsCisrKyBiL2RvYy9tYXRlcmlhbHMvbWF0ZXJpYWxzL01BVF9TSEFET1cKQEAgLTAsMCArMSwxNyBAQAorTWF0ZXJpYWxpZDoKK01BVF9TSEFET1cgICAgICAgICAgICAgICAic2hhZG93IgorCitOYW1lOgorIlNjaGF0dGVuIiAiU2NoYXR0ZW5zIiAiU2NoYXR0ZW4iICJTY2hhdHRlbiIKKworR2VzY2hsZWNodDoKK00KKworQmVzY2hyZWlidW5nOgorLSBuaWNodCB2b3JoYW5kZW4gLQorCitFcmtlbm5iYXJrZWl0OgorLSBrZWluZSBFaW5zY2hyYWVua3VuZyAtCisKK0dydXBwZW56dWdlaG9lcmlna2VpdDoKK01BVEdST1VQX01JU0M6MTAwCmRpZmYgLS1naXQgYS9kb2MvbWF0ZXJpYWxzL21hdGVyaWFscy9NQVRfU0hJVCBiL2RvYy9tYXRlcmlhbHMvbWF0ZXJpYWxzL01BVF9TSElUCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjEyZDA1ZDQKLS0tIC9kZXYvbnVsbAorKysgYi9kb2MvbWF0ZXJpYWxzL21hdGVyaWFscy9NQVRfU0hJVApAQCAtMCwwICsxLDE3IEBACitNYXRlcmlhbGlkOgorTUFUX1NISVQgICAgICAgICAgICAgICAgICJzaGl0IgorCitOYW1lOgorIlNjaGVpc3NlIiAiU2NoZWlzc2UiICJTY2hlaXNzZSIgIlNjaGVpc3NlIgorCitHZXNjaGxlY2h0OgorRgorCitCZXNjaHJlaWJ1bmc6CistIG5pY2h0IHZvcmhhbmRlbiAtCisKK0Vya2VubmJhcmtlaXQ6CistIGtlaW5lIEVpbnNjaHJhZW5rdW5nIC0KKworR3J1cHBlbnp1Z2Vob2VyaWdrZWl0OgorTUFUR1JPVVBfU09MSUQ6MTAwCmRpZmYgLS1naXQgYS9kb2MvbWF0ZXJpYWxzL21hdGVyaWFscy9NQVRfU0lMSyBiL2RvYy9tYXRlcmlhbHMvbWF0ZXJpYWxzL01BVF9TSUxLCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmVhYmRlYzgKLS0tIC9kZXYvbnVsbAorKysgYi9kb2MvbWF0ZXJpYWxzL21hdGVyaWFscy9NQVRfU0lMSwpAQCAtMCwwICsxLDIyIEBACitNYXRlcmlhbGlkOgorTUFUX1NJTEsgICAgICAgICAgICAgICAgICJzaWxrIgorCitOYW1lOgorIlNlaWRlIiAiU2VpZGUiICJTZWlkZSIgIlNlaWRlIgorCitHZXNjaGxlY2h0OgorRgorCitCZXNjaHJlaWJ1bmc6CistIG5pY2h0IHZvcmhhbmRlbiAtCisKK0Vya2VubmJhcmtlaXQ6CistIGtlaW5lIEVpbnNjaHJhZW5rdW5nIC0KKworR3J1cHBlbnp1Z2Vob2VyaWdrZWl0OgorTUFUR1JPVVBfREVBRDoxMDAKK01BVEdST1VQX0ZMRVhJQkxFOjEwMAorTUFUR1JPVVBfQ0xPVEg6MTAwCitNQVRHUk9VUF9CSU86MTAwCitNQVRHUk9VUF9JTkZMQU1NQUJMRToxMDAKK01BVEdST1VQX1NPTElEOjEwMApkaWZmIC0tZ2l0IGEvZG9jL21hdGVyaWFscy9tYXRlcmlhbHMvTUFUX1NJTFZFUiBiL2RvYy9tYXRlcmlhbHMvbWF0ZXJpYWxzL01BVF9TSUxWRVIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZTQ0NDdlNQotLS0gL2Rldi9udWxsCisrKyBiL2RvYy9tYXRlcmlhbHMvbWF0ZXJpYWxzL01BVF9TSUxWRVIKQEAgLTAsMCArMSwxOSBAQAorTWF0ZXJpYWxpZDoKK01BVF9TSUxWRVIgICAgICAgICAgICAgICAiQWciCisKK05hbWU6CisiU2lsYmVyIiAiU2lsYmVycyIgIlNpbGJlciIgIlNpbGJlciIKKworR2VzY2hsZWNodDoKK04KKworQmVzY2hyZWlidW5nOgord2Vpc3MKKworRXJrZW5uYmFya2VpdDoKKy0ga2VpbmUgRWluc2NocmFlbmt1bmcgLQorCitHcnVwcGVuenVnZWhvZXJpZ2tlaXQ6CitNQVRHUk9VUF9NRVRBTDoxMDAKK01BVEdST1VQX1NPTElEOjEwMAorTUFUR1JPVVBfUFJFQ0lPVVNfTUVUQUw6MTAwCmRpZmYgLS1naXQgYS9kb2MvbWF0ZXJpYWxzL21hdGVyaWFscy9NQVRfU0tJTiBiL2RvYy9tYXRlcmlhbHMvbWF0ZXJpYWxzL01BVF9TS0lOCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjIzMWM4ZjAKLS0tIC9kZXYvbnVsbAorKysgYi9kb2MvbWF0ZXJpYWxzL21hdGVyaWFscy9NQVRfU0tJTgpAQCAtMCwwICsxLDIwIEBACitNYXRlcmlhbGlkOgorTUFUX1NLSU4gICAgICAgICAgICAgICAgICJza2luIgorCitOYW1lOgorIkhhdXQiICJIYXV0IiAiSGF1dCIgIkhhdXQiCisKK0dlc2NobGVjaHQ6CitGCisKK0Jlc2NocmVpYnVuZzoKKy0gbmljaHQgdm9yaGFuZGVuIC0KKworRXJrZW5uYmFya2VpdDoKKy0ga2VpbmUgRWluc2NocmFlbmt1bmcgLQorCitHcnVwcGVuenVnZWhvZXJpZ2tlaXQ6CitNQVRHUk9VUF9GTEVYSUJMRToxMDAKK01BVEdST1VQX0RFQUQ6MTAwCitNQVRHUk9VUF9CSU86MTAwCitNQVRHUk9VUF9TT0xJRDoxMDAKZGlmZiAtLWdpdCBhL2RvYy9tYXRlcmlhbHMvbWF0ZXJpYWxzL01BVF9TTEFURSBiL2RvYy9tYXRlcmlhbHMvbWF0ZXJpYWxzL01BVF9TTEFURQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44N2ZkNDBjCi0tLSAvZGV2L251bGwKKysrIGIvZG9jL21hdGVyaWFscy9tYXRlcmlhbHMvTUFUX1NMQVRFCkBAIC0wLDAgKzEsMTggQEAKK01hdGVyaWFsaWQ6CitNQVRfU0xBVEUgICAgICAgICAgICAgICAgInNsYXRlIgorCitOYW1lOgorIlNjaGllZmVyIiAiU2NoaWVmZXJzIiAiU2NoaWVmZXIiICJTY2hpZWZlciIKKworR2VzY2hsZWNodDoKK00KKworQmVzY2hyZWlidW5nOgorLSBuaWNodCB2b3JoYW5kZW4gLQorCitFcmtlbm5iYXJrZWl0OgorLSBrZWluZSBFaW5zY2hyYWVua3VuZyAtCisKK0dydXBwZW56dWdlaG9lcmlna2VpdDoKK01BVEdST1VQX1NUT05FOjEwMAorTUFUR1JPVVBfU09MSUQ6MTAwCmRpZmYgLS1naXQgYS9kb2MvbWF0ZXJpYWxzL21hdGVyaWFscy9NQVRfU0xJTUUgYi9kb2MvbWF0ZXJpYWxzL21hdGVyaWFscy9NQVRfU0xJTUUKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNDljMDhhOQotLS0gL2Rldi9udWxsCisrKyBiL2RvYy9tYXRlcmlhbHMvbWF0ZXJpYWxzL01BVF9TTElNRQpAQCAtMCwwICsxLDE3IEBACitNYXRlcmlhbGlkOgorTUFUX1NMSU1FICAgICAgICAgICAgICAgICJzbGltZSIKKworTmFtZToKKyJTY2hsZWltIiAiU2NobGVpbXMiICJTY2hsZWltIiAiU2NobGVpbSIKKworR2VzY2hsZWNodDoKK00KKworQmVzY2hyZWlidW5nOgorLSBuaWNodCB2b3JoYW5kZW4gLQorCitFcmtlbm5iYXJrZWl0OgorLSBrZWluZSBFaW5zY2hyYWVua3VuZyAtCisKK0dydXBwZW56dWdlaG9lcmlna2VpdDoKK01BVEdST1VQX0ZMVUlEOjEwMApkaWZmIC0tZ2l0IGEvZG9jL21hdGVyaWFscy9tYXRlcmlhbHMvTUFUX1NPQVAgYi9kb2MvbWF0ZXJpYWxzL21hdGVyaWFscy9NQVRfU09BUApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5iNzkxZGE5Ci0tLSAvZGV2L251bGwKKysrIGIvZG9jL21hdGVyaWFscy9tYXRlcmlhbHMvTUFUX1NPQVAKQEAgLTAsMCArMSwxOCBAQAorTWF0ZXJpYWxpZDoKK01BVF9TT0FQICAgICAgICAgICAgICAgICAic29hcCIKKworTmFtZToKKyJTZWlmZSIgIlNlaWZlcyIgIlNlaWZlIiAiU2VpZmUiCisKK0dlc2NobGVjaHQ6CitGCisKK0Jlc2NocmVpYnVuZzoKKy0gbmljaHQgdm9yaGFuZGVuIC0KKworRXJrZW5uYmFya2VpdDoKKy0ga2VpbmUgRWluc2NocmFlbmt1bmcgLQorCitHcnVwcGVuenVnZWhvZXJpZ2tlaXQ6CitNQVRHUk9VUF9GTFVJRDoxMDAKK01BVEdST1VQX1NPTElEOjEwMApkaWZmIC0tZ2l0IGEvZG9jL21hdGVyaWFscy9tYXRlcmlhbHMvTUFUX1NPRElVTSBiL2RvYy9tYXRlcmlhbHMvbWF0ZXJpYWxzL01BVF9TT0RJVU0KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMzBjOGRiNAotLS0gL2Rldi9udWxsCisrKyBiL2RvYy9tYXRlcmlhbHMvbWF0ZXJpYWxzL01BVF9TT0RJVU0KQEAgLTAsMCArMSwyMSBAQAorTWF0ZXJpYWxpZDoKK01BVF9TT0RJVU0gICAgICAgICAgICAgICAiTmEiCisKK05hbWU6CisiTmF0cml1bSIgIk5hdHJpdW1zIiAiTmF0cml1bSIgIk5hdHJpdW0iCisKK0dlc2NobGVjaHQ6CitOCisKK0Jlc2NocmVpYnVuZzoKK1dhc3Nlci1Wb3JzaWNodAorCitFcmtlbm5iYXJrZWl0OgorTUFUX01JU0NfTUVUQUw6MAorTUFUX0FMVU1JTklVTTozMAorTUFUX1NPRElVTQorCitHcnVwcGVuenVnZWhvZXJpZ2tlaXQ6CitNQVRHUk9VUF9NRVRBTDoxMDAKK01BVEdST1VQX0lORkxBTU1BQkxFOjEwMAorTUFUR1JPVVBfU09MSUQ6MTAwCmRpZmYgLS1naXQgYS9kb2MvbWF0ZXJpYWxzL21hdGVyaWFscy9NQVRfU1BSVUNFIGIvZG9jL21hdGVyaWFscy9tYXRlcmlhbHMvTUFUX1NQUlVDRQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi42OTlmNGY5Ci0tLSAvZGV2L251bGwKKysrIGIvZG9jL21hdGVyaWFscy9tYXRlcmlhbHMvTUFUX1NQUlVDRQpAQCAtMCwwICsxLDI0IEBACitNYXRlcmlhbGlkOgorTUFUX1NQUlVDRSAgICAgICAgICAgICAgICJzcHJ1Y2UiCisKK05hbWU6CisiRmljaHRlbmhvbHoiICJGaWNodGVuaG9semVzIiAiRmljaHRlbmhvbHoiICJGaWNodGVuaG9seiIKKworR2VzY2hsZWNodDoKK04KKworQmVzY2hyZWlidW5nOgordHJvY2tlbiwgYnJ1ZWNoaWcKKworRXJrZW5uYmFya2VpdDoKK01BVF9NSVNDX0NPTklGRVJfV09PRDoxNQorTUFUX1NQUlVDRQorCitHcnVwcGVuenVnZWhvZXJpZ2tlaXQ6CitNQVRHUk9VUF9ERUFEOjEwMAorTUFUR1JPVVBfSEVSQkFMOjEwMAorTUFUR1JPVVBfQ09OSUZFUl9XT09EOjEwMAorTUFUR1JPVVBfSU5GTEFNTUFCTEU6MTAwCitNQVRHUk9VUF9CSU86MTAwCitNQVRHUk9VUF9TT0xJRDoxMDAKK01BVEdST1VQX1dPT0Q6MTAwCmRpZmYgLS1naXQgYS9kb2MvbWF0ZXJpYWxzL21hdGVyaWFscy9NQVRfU1RFRUwgYi9kb2MvbWF0ZXJpYWxzL21hdGVyaWFscy9NQVRfU1RFRUwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZmRjNmNhZAotLS0gL2Rldi9udWxsCisrKyBiL2RvYy9tYXRlcmlhbHMvbWF0ZXJpYWxzL01BVF9TVEVFTApAQCAtMCwwICsxLDE5IEBACitNYXRlcmlhbGlkOgorTUFUX1NURUVMICAgICAgICAgICAgICAgICJzdGVlbCIKKworTmFtZToKKyJTdGFobCIgIlN0YWhscyIgIlN0YWhsIiAiU3RhaGwiCisKK0dlc2NobGVjaHQ6CitOCisKK0Jlc2NocmVpYnVuZzoKK2hhcnQsIGZsZXhpYmVsCisKK0Vya2VubmJhcmtlaXQ6CistIGtlaW5lIEVpbnNjaHJhZW5rdW5nIC0KKworR3J1cHBlbnp1Z2Vob2VyaWdrZWl0OgorTUFUR1JPVVBfTUVUQUw6MTAwCitNQVRHUk9VUF9NQUdORVRJQzoxMDAKK01BVEdST1VQX1NPTElEOjEwMApkaWZmIC0tZ2l0IGEvZG9jL21hdGVyaWFscy9tYXRlcmlhbHMvTUFUX1NUUkFXIGIvZG9jL21hdGVyaWFscy9tYXRlcmlhbHMvTUFUX1NUUkFXCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjA4ODJjMGMKLS0tIC9kZXYvbnVsbAorKysgYi9kb2MvbWF0ZXJpYWxzL21hdGVyaWFscy9NQVRfU1RSQVcKQEAgLTAsMCArMSwyMCBAQAorTWF0ZXJpYWxpZDoKK01BVF9TVFJBVyAgICAgICAgICAgICAgICAic3RyYXciCisKK05hbWU6CisiU3Ryb2giICJTdHJvaHMiICJTdHJvaCIgIlN0cm9oIgorCitHZXNjaGxlY2h0OgorTgorCitCZXNjaHJlaWJ1bmc6CistIG5pY2h0IHZvcmhhbmRlbiAtCisKK0Vya2VubmJhcmtlaXQ6CistIGtlaW5lIEVpbnNjaHJhZW5rdW5nIC0KKworR3J1cHBlbnp1Z2Vob2VyaWdrZWl0OgorTUFUR1JPVVBfSU5GTEFNTUFCTEU6MTAwCitNQVRHUk9VUF9GTEVYSUJMRToxMDAKK01BVEdST1VQX0hFUkJBTDoxMDAKK01BVEdST1VQX1NPTElEOjEwMApkaWZmIC0tZ2l0IGEvZG9jL21hdGVyaWFscy9tYXRlcmlhbHMvTUFUX1NVTEZVUiBiL2RvYy9tYXRlcmlhbHMvbWF0ZXJpYWxzL01BVF9TVUxGVVIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uY2FmOGE1YgotLS0gL2Rldi9udWxsCisrKyBiL2RvYy9tYXRlcmlhbHMvbWF0ZXJpYWxzL01BVF9TVUxGVVIKQEAgLTAsMCArMSwyMCBAQAorTWF0ZXJpYWxpZDoKK01BVF9TVUxGVVIgICAgICAgICAgICAgICAiUyIKKworTmFtZToKKyJTY2h3ZWZlbCIgIlNjaHdlZmVscyIgIlNjaHdlZmVsIiAiU2Nod2VmZWwiCisKK0dlc2NobGVjaHQ6CitNCisKK0Jlc2NocmVpYnVuZzoKK2dlbGIKKworRXJrZW5uYmFya2VpdDoKKy0ga2VpbmUgRWluc2NocmFlbmt1bmcgLQorCitHcnVwcGVuenVnZWhvZXJpZ2tlaXQ6CitNQVRHUk9VUF9JTkZMQU1NQUJMRToxMDAKK01BVEdST1VQX01JTkVSQUw6MTAwCitNQVRHUk9VUF9TT0xJRDoxMDAKK01BVEdST1VQX1NUT05FOjEwMApkaWZmIC0tZ2l0IGEvZG9jL21hdGVyaWFscy9tYXRlcmlhbHMvTUFUX1RBTExPVyBiL2RvYy9tYXRlcmlhbHMvbWF0ZXJpYWxzL01BVF9UQUxMT1cKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNzJlYmYwYgotLS0gL2Rldi9udWxsCisrKyBiL2RvYy9tYXRlcmlhbHMvbWF0ZXJpYWxzL01BVF9UQUxMT1cKQEAgLTAsMCArMSwyMCBAQAorTWF0ZXJpYWxpZDoKK01BVF9UQUxMT1cgICAgICAgICAgICAgICAidGFsbG93IgorCitOYW1lOgorIlRhbGciICJUYWxncyIgIlRhbGciICJUYWxnIgorCitHZXNjaGxlY2h0OgorTQorCitCZXNjaHJlaWJ1bmc6CistIG5pY2h0IHZvcmhhbmRlbiAtCisKK0Vya2VubmJhcmtlaXQ6CistIGtlaW5lIEVpbnNjaHJhZW5rdW5nIC0KKworR3J1cHBlbnp1Z2Vob2VyaWdrZWl0OgorTUFUR1JPVVBfSU5GTEFNTUFCTEU6MTAwCitNQVRHUk9VUF9ERUFEOjEwMAorTUFUR1JPVVBfQklPOjEwMAorTUFUR1JPVVBfU09MSUQ6MTAwCmRpZmYgLS1naXQgYS9kb2MvbWF0ZXJpYWxzL21hdGVyaWFscy9NQVRfVEFSIGIvZG9jL21hdGVyaWFscy9tYXRlcmlhbHMvTUFUX1RBUgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5lZGFkM2NhCi0tLSAvZGV2L251bGwKKysrIGIvZG9jL21hdGVyaWFscy9tYXRlcmlhbHMvTUFUX1RBUgpAQCAtMCwwICsxLDE3IEBACitNYXRlcmlhbGlkOgorTUFUX1RBUiAgICAgICAgICAgICAgICAgICJ0YXIiCisKK05hbWU6CisiVGVlciIgIlRlZXJzIiAiVGVlciIgIlRlZXIiCisKK0dlc2NobGVjaHQ6CitNCisKK0Jlc2NocmVpYnVuZzoKKy0gbmljaHQgdm9yaGFuZGVuIC0KKworRXJrZW5uYmFya2VpdDoKKy0ga2VpbmUgRWluc2NocmFlbmt1bmcgLQorCitHcnVwcGVuenVnZWhvZXJpZ2tlaXQ6CitNQVRHUk9VUF9TT0xJRDoxMDAKZGlmZiAtLWdpdCBhL2RvYy9tYXRlcmlhbHMvbWF0ZXJpYWxzL01BVF9URUFLIGIvZG9jL21hdGVyaWFscy9tYXRlcmlhbHMvTUFUX1RFQUsKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uM2EyZDc2NwotLS0gL2Rldi9udWxsCisrKyBiL2RvYy9tYXRlcmlhbHMvbWF0ZXJpYWxzL01BVF9URUFLCkBAIC0wLDAgKzEsMjQgQEAKK01hdGVyaWFsaWQ6CitNQVRfVEVBSyAgICAgICAgICAgICAgICAgInRlYWsiCisKK05hbWU6CisiVGVha2hvbHoiICJUZWFraG9semVzIiAiVGVha2hvbHoiICJUZWFraG9seiIKKworR2VzY2hsZWNodDoKK04KKworQmVzY2hyZWlidW5nOgorLSBuaWNodCB2b3JoYW5kZW4gLQorCitFcmtlbm5iYXJrZWl0OgorTUFUX01JU0NfVFJPUElDQUxfV09PRDoyNQorTUFUX1RFQUsKKworR3J1cHBlbnp1Z2Vob2VyaWdrZWl0OgorTUFUR1JPVVBfREVBRDoxMDAKK01BVEdST1VQX0hFUkJBTDoxMDAKK01BVEdST1VQX1RST1BJQ0FMX1dPT0Q6MTAwCitNQVRHUk9VUF9CSU86MTAwCitNQVRHUk9VUF9JTkZMQU1NQUJMRToxMDAKK01BVEdST1VQX1NPTElEOjEwMAorTUFUR1JPVVBfV09PRDoxMDAKZGlmZiAtLWdpdCBhL2RvYy9tYXRlcmlhbHMvbWF0ZXJpYWxzL01BVF9USEFMTElVTSBiL2RvYy9tYXRlcmlhbHMvbWF0ZXJpYWxzL01BVF9USEFMTElVTQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi40NWNlMDkxCi0tLSAvZGV2L251bGwKKysrIGIvZG9jL21hdGVyaWFscy9tYXRlcmlhbHMvTUFUX1RIQUxMSVVNCkBAIC0wLDAgKzEsMjIgQEAKK01hdGVyaWFsaWQ6CitNQVRfVEhBTExJVU0gICAgICAgICAgICAgInRoYWxsaXVtIgorCitOYW1lOgorIlRoYWxsaXVtIiAiVGhhbGxpdW1zIiAiVGhhbGxpdW0iICJUaGFsbGl1bSIKKworR2VzY2hsZWNodDoKK04KKworQmVzY2hyZWlidW5nOgorZ2lmdGlnLCBzY2h3ZXIsIHdlaWNoCisKK0Vya2VubmJhcmtlaXQ6CitNQVRfTUlTQ19NRVRBTDowCitNQVRfTEVBRDo1MAorTUFUX1RIQUxMSVVNCisKK0dydXBwZW56dWdlaG9lcmlna2VpdDoKK01BVEdST1VQX0ZMRVhJQkxFOjEwMAorTUFUR1JPVVBfTUVUQUw6MTAwCitNQVRHUk9VUF9QT0lTT05PVVM6MTAwCitNQVRHUk9VUF9TT0xJRDoxMDAKZGlmZiAtLWdpdCBhL2RvYy9tYXRlcmlhbHMvbWF0ZXJpYWxzL01BVF9USU4gYi9kb2MvbWF0ZXJpYWxzL21hdGVyaWFscy9NQVRfVElOCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjhmMjk0NTQKLS0tIC9kZXYvbnVsbAorKysgYi9kb2MvbWF0ZXJpYWxzL21hdGVyaWFscy9NQVRfVElOCkBAIC0wLDAgKzEsMjIgQEAKK01hdGVyaWFsaWQ6CitNQVRfVElOICAgICAgICAgICAgICAgICAgIlNuIgorCitOYW1lOgorIlppbm4iICJaaW5ucyIgIlppbm4iICJaaW5uIgorCitHZXNjaGxlY2h0OgorTgorCitCZXNjaHJlaWJ1bmc6CitzZWhyIHdlaWNoLCB3ZWlzcworCitFcmtlbm5iYXJrZWl0OgorTUFUX01JU0NfTUVUQUw6MAorTUFUX1NJTFZFUjoxNQorTUFUX0xFQUQ6MzAKK01BVF9USU4KKworR3J1cHBlbnp1Z2Vob2VyaWdrZWl0OgorTUFUR1JPVVBfTUVUQUw6MTAwCitNQVRHUk9VUF9GTEVYSUJMRToxMDAKK01BVEdST1VQX1NPTElEOjEwMApkaWZmIC0tZ2l0IGEvZG9jL21hdGVyaWFscy9tYXRlcmlhbHMvTUFUX1RJVEFOSVVNIGIvZG9jL21hdGVyaWFscy9tYXRlcmlhbHMvTUFUX1RJVEFOSVVNCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjdjNTQzNzQKLS0tIC9kZXYvbnVsbAorKysgYi9kb2MvbWF0ZXJpYWxzL21hdGVyaWFscy9NQVRfVElUQU5JVU0KQEAgLTAsMCArMSwyMCBAQAorTWF0ZXJpYWxpZDoKK01BVF9USVRBTklVTSAgICAgICAgICAgICAiVGkiCisKK05hbWU6CisiVGl0YW4iICJUaXRhbnMiICJUaXRhbiIgIlRpdGFuIgorCitHZXNjaGxlY2h0OgorTgorCitCZXNjaHJlaWJ1bmc6CithZXVzc2Vyc3QgaGFydAorCitFcmtlbm5iYXJrZWl0OgorTUFUX01JU0NfTUVUQUw6MTAKK01BVF9TVEVFTDoyMAorTUFUX1RJVEFOSVVNCisKK0dydXBwZW56dWdlaG9lcmlna2VpdDoKK01BVEdST1VQX01FVEFMOjEwMAorTUFUR1JPVVBfU09MSUQ6MTAwCmRpZmYgLS1naXQgYS9kb2MvbWF0ZXJpYWxzL21hdGVyaWFscy9NQVRfVE5UIGIvZG9jL21hdGVyaWFscy9tYXRlcmlhbHMvTUFUX1ROVApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5iOWFmM2VjCi0tLSAvZGV2L251bGwKKysrIGIvZG9jL21hdGVyaWFscy9tYXRlcmlhbHMvTUFUX1ROVApAQCAtMCwwICsxLDE5IEBACitNYXRlcmlhbGlkOgorTUFUX1ROVCAgICAgICAgICAgICAgICAgICJ0bnQiCisKK05hbWU6CisiVE5UIiAiVE5UIiAiVE5UIiAiVE5UIgorCitHZXNjaGxlY2h0OgorTgorCitCZXNjaHJlaWJ1bmc6CistIG5pY2h0IHZvcmhhbmRlbiAtCisKK0Vya2VubmJhcmtlaXQ6CistIGtlaW5lIEVpbnNjaHJhZW5rdW5nIC0KKworR3J1cHBlbnp1Z2Vob2VyaWdrZWl0OgorTUFUR1JPVVBfSU5GTEFNTUFCTEU6MTAwCitNQVRHUk9VUF9TT0xJRDoxMDAKK01BVEdST1VQX0VYUExPU0lWRToxMDAKZGlmZiAtLWdpdCBhL2RvYy9tYXRlcmlhbHMvbWF0ZXJpYWxzL01BVF9UT09USCBiL2RvYy9tYXRlcmlhbHMvbWF0ZXJpYWxzL01BVF9UT09USApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5lNDU4OGE1Ci0tLSAvZGV2L251bGwKKysrIGIvZG9jL21hdGVyaWFscy9tYXRlcmlhbHMvTUFUX1RPT1RICkBAIC0wLDAgKzEsMjAgQEAKK01hdGVyaWFsaWQ6CitNQVRfVE9PVEggICAgICAgICAgICAgICAgInRvb3RoIgorCitOYW1lOgorIlphaG4iICJaYWhucyIgIlphaG4iICJaYWhuIgorCitHZXNjaGxlY2h0OgorTQorCitCZXNjaHJlaWJ1bmc6CistIG5pY2h0IHZvcmhhbmRlbiAtCisKK0Vya2VubmJhcmtlaXQ6CistIGtlaW5lIEVpbnNjaHJhZW5rdW5nIC0KKworR3J1cHBlbnp1Z2Vob2VyaWdrZWl0OgorTUFUR1JPVVBfQklPOjEwMAorTUFUR1JPVVBfREVBRDoxMDAKK01BVEdST1VQX1NPTElEOjEwMAorTUFUR1JPVVBfU1RPTkU6MTAwCmRpZmYgLS1naXQgYS9kb2MvbWF0ZXJpYWxzL21hdGVyaWFscy9NQVRfVE9QQVogYi9kb2MvbWF0ZXJpYWxzL21hdGVyaWFscy9NQVRfVE9QQVoKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZDM5ZDVlMQotLS0gL2Rldi9udWxsCisrKyBiL2RvYy9tYXRlcmlhbHMvbWF0ZXJpYWxzL01BVF9UT1BBWgpAQCAtMCwwICsxLDIxIEBACitNYXRlcmlhbGlkOgorTUFUX1RPUEFaICAgICAgICAgICAgICAgICJ0b3BheiIKKworTmFtZToKKyJUb3BhcyIgIlRvcGFzIiAiVG9wYXMiICJUb3BhcyIKKworR2VzY2hsZWNodDoKK00KKworQmVzY2hyZWlidW5nOgorZ2VsYgorCitFcmtlbm5iYXJrZWl0OgorTUFUX01JU0NfSkVXRUw6MjUKK01BVF9UT1BBWgorCitHcnVwcGVuenVnZWhvZXJpZ2tlaXQ6CitNQVRHUk9VUF9NSU5FUkFMOjEwMAorTUFUR1JPVVBfU09MSUQ6MTAwCitNQVRHUk9VUF9KRVdFTDoxMDAKK01BVEdST1VQX1NUT05FOjEwMApkaWZmIC0tZ2l0IGEvZG9jL21hdGVyaWFscy9tYXRlcmlhbHMvTUFUX1RVTkdTVEVOIGIvZG9jL21hdGVyaWFscy9tYXRlcmlhbHMvTUFUX1RVTkdTVEVOCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjdhN2M2NDMKLS0tIC9kZXYvbnVsbAorKysgYi9kb2MvbWF0ZXJpYWxzL21hdGVyaWFscy9NQVRfVFVOR1NURU4KQEAgLTAsMCArMSwxOSBAQAorTWF0ZXJpYWxpZDoKK01BVF9UVU5HU1RFTiAgICAgICAgICAgICAiVyIKKworTmFtZToKKyJXb2xmcmFtIiAiV29sZnJhbXMiICJXb2xmcmFtIiAiV29sZnJhbSIKKworR2VzY2hsZWNodDoKK04KKworQmVzY2hyZWlidW5nOgorc2VociBoYXJ0LCBoaXR6ZWJlc3RhZW5kaWcKKworRXJrZW5uYmFya2VpdDoKK01BVF9NSVNDX01FVEFMOjI1CitNQVRfVFVOR1NURU4KKworR3J1cHBlbnp1Z2Vob2VyaWdrZWl0OgorTUFUR1JPVVBfTUVUQUw6MTAwCitNQVRHUk9VUF9TT0xJRDoxMDAKZGlmZiAtLWdpdCBhL2RvYy9tYXRlcmlhbHMvbWF0ZXJpYWxzL01BVF9UVVJRVU9JU0UgYi9kb2MvbWF0ZXJpYWxzL21hdGVyaWFscy9NQVRfVFVSUVVPSVNFCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmRmZTMwZjkKLS0tIC9kZXYvbnVsbAorKysgYi9kb2MvbWF0ZXJpYWxzL21hdGVyaWFscy9NQVRfVFVSUVVPSVNFCkBAIC0wLDAgKzEsMjEgQEAKK01hdGVyaWFsaWQ6CitNQVRfVFVSUVVPSVNFICAgICAgICAgICAgInR1cnF1b2lzZSIKKworTmFtZToKKyJUdWVya2lzIiAiVHVlcmtpcyIgIlR1ZXJraXMiICJUdWVya2lzIgorCitHZXNjaGxlY2h0OgorTQorCitCZXNjaHJlaWJ1bmc6CistIG5pY2h0IHZvcmhhbmRlbiAtCisKK0Vya2VubmJhcmtlaXQ6CitNQVRfTUlTQ19KRVdFTDoyNQorTUFUX1RVUlFVT0lTRQorCitHcnVwcGVuenVnZWhvZXJpZ2tlaXQ6CitNQVRHUk9VUF9NSU5FUkFMOjEwMAorTUFUR1JPVVBfU09MSUQ6MTAwCitNQVRHUk9VUF9KRVdFTDoxMDAKK01BVEdST1VQX1NUT05FOjEwMApkaWZmIC0tZ2l0IGEvZG9jL21hdGVyaWFscy9tYXRlcmlhbHMvTUFUX1ZFTFZFVCBiL2RvYy9tYXRlcmlhbHMvbWF0ZXJpYWxzL01BVF9WRUxWRVQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZTJhNTYzNAotLS0gL2Rldi9udWxsCisrKyBiL2RvYy9tYXRlcmlhbHMvbWF0ZXJpYWxzL01BVF9WRUxWRVQKQEAgLTAsMCArMSwyMSBAQAorTWF0ZXJpYWxpZDoKK01BVF9WRUxWRVQgICAgICAgICAgICAgICAidmVsdmV0IgorCitOYW1lOgorIlNhbXQiICJTYW10cyIgIlNhbXQiICJTYW10IgorCitHZXNjaGxlY2h0OgorTQorCitCZXNjaHJlaWJ1bmc6CistIG5pY2h0IHZvcmhhbmRlbiAtCisKK0Vya2VubmJhcmtlaXQ6CistIGtlaW5lIEVpbnNjaHJhZW5rdW5nIC0KKworR3J1cHBlbnp1Z2Vob2VyaWdrZWl0OgorTUFUR1JPVVBfSU5GTEFNTUFCTEU6MTAwCitNQVRHUk9VUF9DTE9USDoxMDAKK01BVEdST1VQX0JJTzoxMDAKK01BVEdST1VQX0ZMRVhJQkxFOjEwMAorTUFUR1JPVVBfU09MSUQ6MTAwCmRpZmYgLS1naXQgYS9kb2MvbWF0ZXJpYWxzL21hdGVyaWFscy9NQVRfV0FURVIgYi9kb2MvbWF0ZXJpYWxzL21hdGVyaWFscy9NQVRfV0FURVIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOTAwNDk4ZgotLS0gL2Rldi9udWxsCisrKyBiL2RvYy9tYXRlcmlhbHMvbWF0ZXJpYWxzL01BVF9XQVRFUgpAQCAtMCwwICsxLDE4IEBACitNYXRlcmlhbGlkOgorTUFUX1dBVEVSICAgICAgICAgICAgICAgICJ3YXRlciIKKworTmFtZToKKyJXYXNzZXIiICJXYXNzZXJzIiAiV2Fzc2VyIiAiV2Fzc2VyIgorCitHZXNjaGxlY2h0OgorTgorCitCZXNjaHJlaWJ1bmc6CistIG5pY2h0IHZvcmhhbmRlbiAtCisKK0Vya2VubmJhcmtlaXQ6CistIGtlaW5lIEVpbnNjaHJhZW5rdW5nIC0KKworR3J1cHBlbnp1Z2Vob2VyaWdrZWl0OgorTUFUR1JPVVBfRUxFTUVOVEFMOjEwMAorTUFUR1JPVVBfRkxVSUQ6MTAwCmRpZmYgLS1naXQgYS9kb2MvbWF0ZXJpYWxzL21hdGVyaWFscy9NQVRfV0FYIGIvZG9jL21hdGVyaWFscy9tYXRlcmlhbHMvTUFUX1dBWApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5iYWExNjNjCi0tLSAvZGV2L251bGwKKysrIGIvZG9jL21hdGVyaWFscy9tYXRlcmlhbHMvTUFUX1dBWApAQCAtMCwwICsxLDE3IEBACitNYXRlcmlhbGlkOgorTUFUX1dBWCAgICAgICAgICAgICAgICAgICJ3YXgiCisKK05hbWU6CisiV2FjaHMiICJXYWNoc2VzIiAiV2FjaHMiICJXYWNocyIKKworR2VzY2hsZWNodDoKK04KKworQmVzY2hyZWlidW5nOgorLSBuaWNodCB2b3JoYW5kZW4gLQorCitFcmtlbm5iYXJrZWl0OgorLSBrZWluZSBFaW5zY2hyYWVua3VuZyAtCisKK0dydXBwZW56dWdlaG9lcmlna2VpdDoKK01BVEdST1VQX1NPTElEOjEwMApkaWZmIC0tZ2l0IGEvZG9jL21hdGVyaWFscy9tYXRlcmlhbHMvTUFUX1dFQ0tBTUlOIGIvZG9jL21hdGVyaWFscy9tYXRlcmlhbHMvTUFUX1dFQ0tBTUlOCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmQyMmJlY2IKLS0tIC9kZXYvbnVsbAorKysgYi9kb2MvbWF0ZXJpYWxzL21hdGVyaWFscy9NQVRfV0VDS0FNSU4KQEAgLTAsMCArMSwxOCBAQAorTWF0ZXJpYWxpZDoKK01BVF9XRUNLQU1JTiAgICAgICAgICAgICAid2Vja2FtaW5lIgorCitOYW1lOgorIkF1ZnB1dHNjaG1pdHRlbCIgIkF1ZnB1dHNjaG1pdHRlbHMiICJBdWZwdXRzY2htaXR0ZWwiICJBdWZwdXRzY2htaXR0ZWwiCisKK0dlc2NobGVjaHQ6CitOCisKK0Jlc2NocmVpYnVuZzoKKy0gbmljaHQgdm9yaGFuZGVuIC0KKworRXJrZW5uYmFya2VpdDoKKy0ga2VpbmUgRWluc2NocmFlbmt1bmcgLQorCitHcnVwcGVuenVnZWhvZXJpZ2tlaXQ6CitNQVRHUk9VUF9EUlVHOjEwMAorTUFUR1JPVVBfU09MSUQ6MTAwCmRpZmYgLS1naXQgYS9kb2MvbWF0ZXJpYWxzL21hdGVyaWFscy9NQVRfV0lMTE9XIGIvZG9jL21hdGVyaWFscy9tYXRlcmlhbHMvTUFUX1dJTExPVwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4wZTVmMGVmCi0tLSAvZGV2L251bGwKKysrIGIvZG9jL21hdGVyaWFscy9tYXRlcmlhbHMvTUFUX1dJTExPVwpAQCAtMCwwICsxLDI1IEBACitNYXRlcmlhbGlkOgorTUFUX1dJTExPVyAgICAgICAgICAgICAgICJ3aWxsb3ciCisKK05hbWU6CisiV2VpZGVuaG9seiIgIldlaWRlbmhvbHplcyIgIldlaWRlbmhvbHoiICJXZWlkZW5ob2x6IgorCitHZXNjaGxlY2h0OgorTgorCitCZXNjaHJlaWJ1bmc6Cit3ZWljaCB1bmQgZmxleGliZWwKKworRXJrZW5uYmFya2VpdDoKK01BVF9NSVNDX0RFQ0lEVU9VU19XT09EOjUKK01BVF9XSUxMT1cKKworR3J1cHBlbnp1Z2Vob2VyaWdrZWl0OgorTUFUR1JPVVBfREVBRDoxMDAKK01BVEdST1VQX0hFUkJBTDoxMDAKK01BVEdST1VQX0RFQ0lEVU9VU19XT09EOjEwMAorTUFUR1JPVVBfRkxFWElCTEU6MTAwCitNQVRHUk9VUF9CSU86MTAwCitNQVRHUk9VUF9JTkZMQU1NQUJMRToxMDAKK01BVEdST1VQX1NPTElEOjEwMAorTUFUR1JPVVBfV09PRDoxMDAKZGlmZiAtLWdpdCBhL2RvYy9tYXRlcmlhbHMvbWF0ZXJpYWxzL01BVF9XT09ERU5fUExBTlQgYi9kb2MvbWF0ZXJpYWxzL21hdGVyaWFscy9NQVRfV09PREVOX1BMQU5UCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjBjOWM3OTUKLS0tIC9kZXYvbnVsbAorKysgYi9kb2MvbWF0ZXJpYWxzL21hdGVyaWFscy9NQVRfV09PREVOX1BMQU5UCkBAIC0wLDAgKzEsMjIgQEAKK01hdGVyaWFsaWQ6CitNQVRfV09PREVOX1BMQU5UICAgICAgICAgIndvb2Rlbl9wbGFudCIKKworTmFtZToKKyJCYXVtIiAiQmF1bWVzIiAiQmF1bSIgIkJhdW0iCisKK0dlc2NobGVjaHQ6CitNCisKK0Jlc2NocmVpYnVuZzoKK1BmbGFuemVuIG1pdCBIb2x6YW50ZWlsIChCYWV1bWUsIEdlYnVlc2NoZSkKKworRXJrZW5uYmFya2VpdDoKKy0ga2VpbmUgRWluc2NocmFlbmt1bmcgLQorCitHcnVwcGVuenVnZWhvZXJpZ2tlaXQ6CitNQVRHUk9VUF9IRVJCQUw6MTAwCitNQVRHUk9VUF9CSU86MTAwCitNQVRHUk9VUF9JTkZMQU1NQUJMRToxMDAKK01BVEdST1VQX1NPTElEOjEwMAorTUFUR1JPVVBfV09PRDoxMDAKK01BVEdST1VQX0xJVklORzoxMDAKZGlmZiAtLWdpdCBhL2RvYy9tYXRlcmlhbHMvbWF0ZXJpYWxzL01BVF9XT09MIGIvZG9jL21hdGVyaWFscy9tYXRlcmlhbHMvTUFUX1dPT0wKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOGUyYWUwNwotLS0gL2Rldi9udWxsCisrKyBiL2RvYy9tYXRlcmlhbHMvbWF0ZXJpYWxzL01BVF9XT09MCkBAIC0wLDAgKzEsMjIgQEAKK01hdGVyaWFsaWQ6CitNQVRfV09PTCAgICAgICAgICAgICAgICAgIndvb2wiCisKK05hbWU6CisiV29sbGUiICJXb2xsZSIgIldvbGxlIiAiV29sbGUiCisKK0dlc2NobGVjaHQ6CitGCisKK0Jlc2NocmVpYnVuZzoKKy0gbmljaHQgdm9yaGFuZGVuIC0KKworRXJrZW5uYmFya2VpdDoKKy0ga2VpbmUgRWluc2NocmFlbmt1bmcgLQorCitHcnVwcGVuenVnZWhvZXJpZ2tlaXQ6CitNQVRHUk9VUF9ERUFEOjEwMAorTUFUR1JPVVBfRkxFWElCTEU6MTAwCitNQVRHUk9VUF9JTkZMQU1NQUJMRToxMDAKK01BVEdST1VQX0JJTzoxMDAKK01BVEdST1VQX0NMT1RIOjEwMAorTUFUR1JPVVBfU09MSUQ6MTAwCmRpZmYgLS1naXQgYS9kb2MvbWF0ZXJpYWxzL21hdGVyaWFscy9NQVRfWUVXIGIvZG9jL21hdGVyaWFscy9tYXRlcmlhbHMvTUFUX1lFVwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5jZWY4ZjY2Ci0tLSAvZGV2L251bGwKKysrIGIvZG9jL21hdGVyaWFscy9tYXRlcmlhbHMvTUFUX1lFVwpAQCAtMCwwICsxLDI2IEBACitNYXRlcmlhbGlkOgorTUFUX1lFVyAgICAgICAgICAgICAgICAgICJ5ZXciCisKK05hbWU6CisiRWliZW5ob2x6IiAiRWliZW5ob2x6ZXMiICJFaWJlbmhvbHoiICJFaWJlbmhvbHoiCisKK0dlc2NobGVjaHQ6CitOCisKK0Jlc2NocmVpYnVuZzoKK3phZWgsIGJpZWdzYW0KKworRXJrZW5uYmFya2VpdDoKK01BVF9NSVNDX0NPTklGRVJfV09PRDo1CitNQVRfWUVXCisKK0dydXBwZW56dWdlaG9lcmlna2VpdDoKK01BVEdST1VQX0lORkxBTU1BQkxFOjEwMAorTUFUR1JPVVBfQklPOjEwMAorTUFUR1JPVVBfU09MSUQ6MTAwCitNQVRHUk9VUF9QT0lTT05PVVM6MTAwCitNQVRHUk9VUF9XT09EOjEwMAorTUFUR1JPVVBfSEVSQkFMOjEwMAorTUFUR1JPVVBfQ09OSUZFUl9XT09EOjEwMAorTUFUR1JPVVBfREVBRDoxMDAKK01BVEdST1VQX0ZMRVhJQkxFOjEwMApkaWZmIC0tZ2l0IGEvZG9jL21hdGVyaWFscy9tYXRlcmlhbHMvTUFUX1pJTkMgYi9kb2MvbWF0ZXJpYWxzL21hdGVyaWFscy9NQVRfWklOQwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi40OTcwZTE3Ci0tLSAvZGV2L251bGwKKysrIGIvZG9jL21hdGVyaWFscy9tYXRlcmlhbHMvTUFUX1pJTkMKQEAgLTAsMCArMSwyMiBAQAorTWF0ZXJpYWxpZDoKK01BVF9aSU5DICAgICAgICAgICAgICAgICAiemluYyIKKworTmFtZToKKyJaaW5rIiAiWmlua3MiICJaaW5rIiAiWmluayIKKworR2VzY2hsZWNodDoKK04KKworQmVzY2hyZWlidW5nOgord2VpY2gsIGJlc3RhZW5kaWcKKworRXJrZW5uYmFya2VpdDoKK01BVF9NSVNDX01FVEFMOjAKK01BVF9TSUxWRVI6MTUKK01BVF9MRUFEOjMwCitNQVRfWklOQworCitHcnVwcGVuenVnZWhvZXJpZ2tlaXQ6CitNQVRHUk9VUF9NRVRBTDoxMDAKK01BVEdST1VQX0ZMRVhJQkxFOjEwMAorTUFUR1JPVVBfU09MSUQ6MTAwCmRpZmYgLS1naXQgYS9kb2MvbWNtZC8ucmVhZG1lIGIvZG9jL21jbWQvLnJlYWRtZQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4wMTdkYjk4Ci0tLSAvZGV2L251bGwKKysrIGIvZG9jL21jbWQvLnJlYWRtZQpAQCAtMCwwICsxLDMgQEAKK0hpZXIgZmluZGVzdCBEdSBIaWxmZXNlaXRlbiB6dSBkZW4gQmVmZWhsZW4sIGRpZSBkaWUgTWFnaWVyc2hlbGwgenVyCitWZXJmdWVndW5nIHN0ZWxsdC4KKwpkaWZmIC0tZ2l0IGEvZG9jL21jbWQvLnN5bm9ueW0gYi9kb2MvbWNtZC8uc3lub255bQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4xZjYxMzhhCi0tLSAvZGV2L251bGwKKysrIGIvZG9jL21jbWQvLnN5bm9ueW0KQEAgLTAsMCArMSwzIEBACitoZWFsIGhlaWxlCitwZWFjZSBmcmllZGVuCisrIGdvdG8KZGlmZiAtLWdpdCBhL2RvYy9tY21kL2FkZGd1aWxkbWFzdGVyIGIvZG9jL21jbWQvYWRkZ3VpbGRtYXN0ZXIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uM2JhYjZkZAotLS0gL2Rldi9udWxsCisrKyBiL2RvYy9tY21kL2FkZGd1aWxkbWFzdGVyCkBAIC0wLDAgKzEsMjUgQEAKKworYWRkZ3VpbGRtYXN0ZXIKKy0tLS0tLS0tLS0tLS0tCisKKyBFUlpNQUdJRVJLT01NQU5ETzoKKyAgICBhZGRndWlsZG1hc3RlciA8bmFtZT4gPGdpbGRlPgorCisgQVJHVU1FTlRFOgorCisgICAgIDxuYW1lPgorICAgICAgICBOYW1lIGRlcyBNYWdpZXJzCisgICAgIDxnaWxkZT4KKyAgICAgICAgTmFtZSBlaW5lciBHaWxkZQorCisgQkVTQ0hSRUlCVU5HOgorICAgIERlciBNYWdpZXIgPG5hbWU+IHdpcmQgenVtIEdpbGRlbm1hZ2llciBmdWVyIGRpZSBHaWxkZSA8Z2lsZGU+IAorICAgIGVybmFubnQuCisKKyAgICBEaWVzZXIgQmVmZWhsIHN0ZWh0IG51ciBHb2V0dGVybiB6dXIgVmVyZnVlZ3VuZy4KKworIFNJRUhFIEFVQ0g6CisgICAgcmVtb3ZlZ3VpbGRtYXN0ZXIsIGdpbGRlbgorCisgTEVUWlRFIEFlTkRFUlVORzoKKyAgICAyMDAzLTEyLTEwLCBab29rCmRpZmYgLS1naXQgYS9kb2MvbWNtZC9hZGRtYXN0ZXIgYi9kb2MvbWNtZC9hZGRtYXN0ZXIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMjA2ODllNgotLS0gL2Rldi9udWxsCisrKyBiL2RvYy9tY21kL2FkZG1hc3RlcgpAQCAtMCwwICsxLDI0IEBACisKK2FkZG1hc3RlcgorLS0tLS0tLS0tCisKKyBFUlpNQUdJRVJLT01NQU5ETzoKKyAgICBhZGRtYXN0ZXIgPG5hbWU+IDxyZWdpb24+CisKKyBBUkdVTUVOVEU6CisKKyAgICAgPG5hbWU+CisgICAgICAgIE5hbWUgZGVzIE1hZ2llcnMKKyAgICAgPHJlZ2lvbj4KKyAgICAgICAgRWluZSBSZWdpb24KKworIEJFU0NIUkVJQlVORzoKKyAgICBEZXIgTWFnaWVyIDxuYW1lPiB3aXJkIGluIGRlciBSZWdpb24gPHJlZ2lvbj4genVtIFJlZ2lvbnNtYWdpZXIgZXJuYW5udC4KKworICAgIERpZXNlciBCZWZlaGwgc3RlaHQgbnVyIEVyem1hZ2llcm4gdW5kIEdvZXR0ZXJuIHp1ciBWZXJmdWVndW5nLgorCisgU0lFSEUgQVVDSDoKKyAgICByZW1vdmVtYXN0ZXIsIHJlZ2lvbmVuCisKKyBMRVRaVEUgQWVOREVSVU5HOgorICAgIFRodSwgMjQuMDcuMTk5NywgMDk6MDA6MDAgdm9uIFdhcmdvbgpkaWZmIC0tZ2l0IGEvZG9jL21jbWQvYXQgYi9kb2MvbWNtZC9hdApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4wMzE1YjczCi0tLSAvZGV2L251bGwKKysrIGIvZG9jL21jbWQvYXQKQEAgLTAsMCArMSwzMyBAQAorCithdAorLS0KKworIE1BR0lFUktPTU1BTkRPOgorICAgIGF0IDxuYW1lPiA8a29tbWFuZG8+CisKKyBBUkdVTUVOVEU6CisKKyAgICAgPHJhdW0+CisgICAgICAgIE5hbWUgZWluZXMgTGViZXdlc2VucworICAgICA8a29tbWFuZG8+CisgICAgICAgIGRhcyBhdXp1ZnVlaHJlbmRlIEtvbW1hbmRvCisKKyBCRVNDSFJFSUJVTkc6CisgICAgRHUgd2lyc3QsIHVuc2ljaHRiYXIgZnVlciBkaWUgQW53ZXNlbmRlbiwgaW4gZGVuIFJhdW0gdHJhbnNwb3J0aWVydCwgaW4KKyAgICBkZW0gc2ljaCBkYXMgTGViZXdlc2VuIDxuYW1lPiBiZWZpbmRldC4gRG9ydCBmdWVocnN0IER1IGRhcyBLb21tYW5kbworICAgIDxrb21tYW5kbz4gYXVzIHVuZCBnZWxhbmdzdCBhdXRvbWF0aXNjaCB3aWVkZXIgaW4gZGVuIFJhdW0genVydWVjaywgaW4gZGVtCisgICAgRHUgdm9yaGVyIHdhcnN0LgorCisgQkVJU1BJRUxFOgorICAgIENhdHdlYXpsZSBtYWNodCBtYWwgd2llZGVyIEZheGVuPworCisgICAgPiBhdCBjYXR3ZWF6bGUgd3VlcmdlIGNhdHdlYXpsZQorCisgICAgRGllIFVtc3RlaGVuZGVuIHNlaGVuIGRhbm4gendhciBkaWUgTWVsZHVuZ2VuIGRlcyBLb21tYW5kb3MsIGFiZXIgbWFuCisgICAgc2VsYnN0IGJlZmluZGV0IHNpY2ggc29mb3J0IHdpZWRlciBpbiBTaWNoZXJoZWl0IDopCisKKyBTSUVIRSBBVUNIOgorICAgIGluLCBnb3RvCisKKyBMRVRaVEUgQWVOREVSVU5HOgorICAgIFRodSwgMjQuMDcuMTk5NywgMDk6MDA6MDAgdm9uIFdhcmdvbgpkaWZmIC0tZ2l0IGEvZG9jL21jbWQvYmFuaXNoIGIvZG9jL21jbWQvYmFuaXNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjA3MTA0ZWYKLS0tIC9kZXYvbnVsbAorKysgYi9kb2MvbWNtZC9iYW5pc2gKQEAgLTAsMCArMSwzOCBAQAorCitiYW5pc2gKKy0tLS0tLQorCisgTUFHSUVSS09NTUFORE86CisgICAgYmFuaXNoIFstZl0gPG5hbWU+IFs8Z3J1bmQ+XQorCisgQVJHVU1FTlRFOgorCisgICAgLWYgKG9wdGlvbmFsKQorICAgICAgICBTcGVycnVuZyBlcnp3aW5nZW4KKyAgICAgPG5hbWU+CisgICAgICAgIERlciB6dSBzcGVycmVuZGUgTmFtZQorICAgICA8Z3J1bmQ+IChvcHRpb25hbCkKKyAgICAgICAgRGVyIEdydW5kIGRlciBTcGVycmUKKworIEJFU0NIUkVJQlVORzoKKyAgICBNaXQgZGllc2VtIEJlZmVobCBrYW5uIG1hbiBiZXN0aW1tdGUgTmFtZW4gc3BlcnJlbiwgc28gZGFzcyBzaWNoIGtlaW5lCisgICAgU3BpZWxlciBtaXQgZ2xlaWNoZW0gTmFtZW4gZWlubG9nZ2VuIGtvZW5uZW4uIFNpbm52b2xsIGlzdCBkaWVzIHouQi4gYmVpCisgICAgTmFtZW4gdm9uIE5QQ3Mgb2RlciBPZXJ0bGljaGtlaXRlbiwgd28gZXMgZ2dmLiB6dSBWZXJ3aXJydW5nZW4ga29tbWVuCisgICAga29lbm50ZS4KKworICAgIEFscyBndXRlIFByYXhpcyBzb2xsdGUgbWFuIGluIGRlbiBHcnVuZCBhdWNoIGFuZ2ViZW4sIGZ1ZXIgd2VsY2hlbiAKKyAgICBNYWdpZXIgZGVyIE5hbWUgZ2VzcGVycnQgd3VyZGUuIAorCisgICAgTWl0IGRlciBPcHRpb24gLWYga2FubiBtYW4gYXVjaCBOYW1lbiB2b24gZXhpc3RlbnRlbiBTcGllbGVybiBiYW5pc2hlbi4KKyAgICBEaWVzZSBrb2VubmVuIHNpY2ggd2VpdGVyaGluIG5vY2ggZWlubG9nZ2VuLCBhYmVyIHNvYmFsZCBkZXIgU3BpZWxlciBzaWNoCisgICAgbG9lc2NodCwgaXN0IGRlciBOYW1lIGdlc3BlcnJ0LgorCisgICAgTWl0IGRlbSBHcnVuZCAnbG9lc2NoZW4nIGtvZW5uZW4gZ2VzcGVycnRlIE5hbWVuIHdpZWRlciBmcmVpZ2VnZWJlbiB3ZXJkZW4uCisKKyAgICBEaWVzZXIgQmVmZWhsIGthbm4gbnVyIHZvbiBSZWdpb25zLSB1bmQgaG9laGVyZW4gTWFnaWVybiBhdXNnZWZ1ZWhydCB3ZXJkZW4uCisKKyBTSUVIRSBBVUNIOgorICAgIG1iYW5pc2gsIHRiYW5pc2gsIHNiYW5pc2gKKworIExFVFpURSBBZU5ERVJVTkc6CisgICAgRG9uLCAgMi4gTWFpIDIwMTMsIDExOjQ1OjA4IHZvbiBab29rCmRpZmYgLS1naXQgYS9kb2MvbWNtZC9jYXQgYi9kb2MvbWNtZC9jYXQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNjRhYjAyYgotLS0gL2Rldi9udWxsCisrKyBiL2RvYy9tY21kL2NhdApAQCAtMCwwICsxLDIzIEBACisKK2NhdAorLS0tCisKKyBNQUdJRVJLT01NQU5ETzoKKyAgICBjYXQgPGRhdGVpPgorCisgQVJHVU1FTlRFOgorCisgICAgIDxkYXRlaT4KKyAgICAgICAgRGllIGF1c3p1Z2ViZW5kZSBEYXRlaQorCisgQkVTQ0hSRUlCVU5HOgorICAgIEJpcyB6dSA0MCBaZWlsZW4gZGVyIERhdGVpIDxkYXRlaT4gd2VyZGVuIGF1c2dlZ2ViZW4uIEJlaW0gQWJicnVjaAorICAgIGVyc2NoZWludCBkaWUgTWVsZHVuZworCisgICAgKioqKipUUlVOQ0FURUQqKioqCisKKyBTSUVIRSBBVUNIOgorICAgIGhlYWQsIHRhaWwsIG1vcmUKKworIExFVFpURSBBZU5ERVJVTkc6CisgICAgVGh1LCAyNC4wNy4xOTk3LCAwOTowMDowMCB2b24gV2FyZ29uCmRpZmYgLS1naXQgYS9kb2MvbWNtZC9jZCBiL2RvYy9tY21kL2NkCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjhkNzc0YjYKLS0tIC9kZXYvbnVsbAorKysgYi9kb2MvbWNtZC9jZApAQCAtMCwwICsxLDM3IEBACisKK2NkCistLQorCisgTUFHSUVSS09NTUFORE86CisgICAgY2QgWyAtIF0gWyAtbCBdIFsgLXMgXSBbIDxWZXJ6ZWljaG5pcz4gXQorCisgQVJHVU1FTlRFOgorCisgICAgIDxWZXJ6ZWljaG5pcz4gIG5ldWVyIFBmYWQsIGRlciBnZXNldHp0IHdlcmRlbiBzb2xsCisKKyBCRVNDSFJFSUJVTkc6CisgICAgRGFzIGFrdHVlbGxlIFZlcnplaWNobmlzIHdpcmQgYXVmIDxWZXJ6ZWljaG5pcz4gZ2VzZXR6dC4KKworICAgIExhZXNzdCBtYW4gPFZlcnplaWNobmlzPiB3ZWcsIHdpcmQgZGFzIGFrdHVlbGxlIFZlcnplaWNobmlzIGF1ZiBkYXMKKyAgICBIZWltYXR2ZXJ6ZWljaG5pcyBnZXNldHp0LiBCZWkgZWluZW0gTWFnaWVyIG1pdCBNYWdpZXJsZXZlbCAxNSBpc3QgZGllcworICAgIGRhcyBWZXJ6ZWljaG5pcyBgL2RvYycsIGFiIE1hZ2llcmxldmVsIDIwIGRhcyBWZXJ6ZWljaG5pcworICAgIGAvcGxheWVycy88TWFnaWVybmFtZT4nLgorCisgICAgQmVpIEVpbmRldXRpZ2tlaXQga29lbm5lbiBQbGF0emhhbHRlciB2ZXJ3ZW5kZXQgd2VyZGVuLiBEaWUgQmVmZWhsZSAKKyAgICBjZCAvc3RkL3BsYXllci9zaGFkb3dzIHVuZCBjZCAvKi9wbCovc2gqIGJld2lya2VuIGRhc3NlbGJlLgorCisgICAgTWl0IGRlciBPcHRpb24gLSB3aXJkIGRpcmVrdCBpbnMgbGV0enRlIFZlcnplaWNobmlzIGdld2VjaHNlbHQuCisKKyAgICBNaXQgZGVuIE9wdGlvbmVuIC1sIHVuZCAtcyBrYW5uIG1hbiBkaWUgQmVoYW5kbHVuZyB2b24gYC5yZWFkbWUnLURhdGVpZW4KKyAgICBpbSBaaWVsdmVyemVpY2huaXMgZWluc3RlbGxlbi4gTWl0IGRlciBPcHRpb24gLXMgd2lyZCBkaWUgQXVzZ2FiZSBkZXIKKyAgICBgLnJlYWRtZSctRGF0ZWllbiB2ZXJoaW5kZXJ0LCBtaXQgLWwgZGFnZWdlbiBlcmxhdWJ0LgorCisgICAgVWViZXIgZGllIFZhcmlhYmxlICdDRF9TSE9SVCcga2FubiBlaW5nZXN0ZWxsdCB3ZXJkZW4sIG9iIGAucmVhZG1lJy0KKyAgICBEYXRlaWVuIGdydW5kc2FldHpsaWNoIHVudGVyZHJ1ZWNrdCB3ZXJkZW4gc29sbGVuLiBEYXp1IGVpbmZhY2ggCisgICAgJ3NldCBDRF9TSE9SVCAxJyBlaW5nZWJlbgorCisgU0lFSEUgQVVDSDoKKyAgICBwcm9tcHQsIHB3ZCwgbHMsIHNldAorCisgTEVUWlRFIEFFTkRFUlVORzoKKyAgICAwMy4wNi4yMDE1LCBCdWdmaXgKZGlmZiAtLWdpdCBhL2RvYy9tY21kL2Nsb25lIGIvZG9jL21jbWQvY2xvbmUKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMDRmNDYyNwotLS0gL2Rldi9udWxsCisrKyBiL2RvYy9tY21kL2Nsb25lCkBAIC0wLDAgKzEsMzYgQEAKKworY2xvbmUKKy0tLS0tCisKKyBNQUdJRVJLT01NQU5ETzoKKyAgICBjbG9uZSBbLWZdIDxvYmpla3RuYW1lPgorCisgQVJHVU1FTlRFOgorCisgICAgIDxvYmpla3RuYW1lPiBEYXRlaW5hbWUgZGVzIE9iamVrdGVzLCBkYXMgZXJ6ZXVndCB3ZXJkZW4gc29sbAorCisgT1BUSU9ORU46CisKKyAgICAgLWY6ICBFcnp3aW5ndCBkZW4gVmVyc3VjaCBkZXMgQ2xvbmVucyBvaG5lIFVlYmVycHJ1ZWZ1bmcsIG9iIGVpbmUKKyAgICAgICAgICBEYXRlaSBleGlzdGllcnQuIERpZXNlIE9wdGlvbiBzb2xsdGUgbnVyIGluIEF1c25haG1lZmFlbGxlbgorICAgICAgICAgIHZlcndlbmRldCB3ZXJkZW4sIGRhIEZlaGxzY2hsYWVnZSBzb2ZvcnQgYWxzIEZlaGxlcm1lbGR1bmcgaW0KKyAgICAgICAgICBEcml2ZXJsb2cgYXVmdGF1Y2hlbi4KKworIEJFU0NIUkVJQlVORzoKKyAgICBFaW5lIEtvcGllIHZvbiBlaW5lbSBPYmpla3QsIGRhcyBpbSBGaWxlIDxvYmpla3RuYW1lPiBiZXNjaHJpZWJlbiBpc3QsCisgICAgd2lyZCBlcnpldWd0LiBEYXMgT2JqZWt0IGJlZmluZGV0IHNpY2ggZGFuYWNoIGltIEludmVudGFyIGRlcyBNYWdpZXJzCisgICAgb2RlciAod2VubiBpbiBkZW0gT2JqZWt0IFBfTk9HRVQgZ2VzZXR6dCBpc3QpIGltIGdsZWljaGVuIFJhdW0gd2llIGRlcgorICAgIE1hZ2llci4KKworICAgIERpZSBCbHVlcHJpbnQgd2lyZCB6dSBuaWNodHMgYW5kZXJlbSBnZWJyYXVjaHQsIGFscyBLb3BpZW4genUgZXJ6ZXVnZW4uCisKKyAgICBXZW5uIGVpbiBPYmpla3Qgbm9jaCBuaWNodCBnZWxhZGVuIGlzdCwgd2lyZCBlcyBuZXUgZ2VsYWRlbi4KKworICAgIFJhZXVtZSBzb2xsdGVuIG5pZW1hbHMgZ2VjbG9udCB3ZXJkZW4sIGRhIHNpZSBpbW1lciBudXIgZWlubWFsIGV4aXN0aWVyZW4KKyAgICBzb2xsdGVuIHVuZCBuaWNodCBpbiBtZWhyZXJuIEtvcGllbi4KKworIFNJRUhFIEFVQ0g6CisgICAgbG9hZCwgZGVzdHJ1Y3QsIHVwZCwgc2V0Y21zZworCisgTEVUWlRFIEFFTkRFUlVORzoKKyAgICBNaXQsIDA1LjA2LjIwMDMsIDE4OjAwOjAwIHZvbiBNYW5kcmFnb24KZGlmZiAtLWdpdCBhL2RvYy9tY21kL2NwIGIvZG9jL21jbWQvY3AKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYjVjZjViNQotLS0gL2Rldi9udWxsCisrKyBiL2RvYy9tY21kL2NwCkBAIC0wLDAgKzEsNDUgQEAKKworY3AKKy0tCisKKyBNQUdJRVJLT01NQU5ETzoKKyAgICBjcCBbIC1pcmZ2IF0gPHZvbj4gPG5hY2g+CisgICAgY3AgWyAtaXJmdiBdIDx2b25fMT4gWyAuLi4gPHZvbl9uPiBdIDx2ZXJ6PgorICAgIGNwIFsgLWlyZnZtIF0gPHZvbl8xPiBbIC4uLiA8dm9uX24+IF0gPHZlcno+IDxtYXNrZT4KKyAKKyBBUkdVTUVOVEU6CisKKyAgICAgPHZvbj4gICBOYW1lIGRlciBRdWVsbGRhdGVpCisgICAgIDx2b25feD4gTmFtZSB2b24gUXVlbGxkYXRlaWVuIG9kZXIgLXZlcnplaWNobmlzc2VuCisgICAgIDxuYWNoPiAgTmFtZSBkZXIgWmllbGRhdGVpCisgICAgIDx2ZXJ6PiAgTmFtZSBkZXMgWmllbHZlcnplaWNobmlzc2VzCisgICAgIDxtYXNrZT4gRGF0ZWltYXNrZQorCisgQkVTQ0hSRUlCVU5HOgorICAgIERpZSBEYXRlaSA8dm9uPiB3aXJkIG5hY2ggRGF0ZWkgPG5hY2g+IGtvcGllcnQsIGJ6dy4gZGllIERhdGVpKGVuKSA8dm9uXzE+CisgICAgKC0gPHZvbl9uPikgaW4gZGFzIFZlcnplaWNobmlzIDx2ZXJ6Pi4KKworICAgIERpZSBEYXRlaW5hbWVuIGtvZW5uZW4gYXVjaCBNdXN0ZXIgd2llICogb2RlciA/IGVudGhhbHRlbi4KKworICAgIFp1c2FldHpsaWNoIGtvZW5uZW4gZm9sZ2VuZGUgRmxhZ3MgYW5nZWdlYmVuIHdlcmRlbjoKKworICAgICAtaSAgVm9yIGplZGVtIGtvcGllcmVuIHdpcmQgZ2VmcmFndCwgb2Iga29waWVydCB3ZXJkZW4gc29sbAorICAgICAtciAgVW50ZXJ2ZXJ6ZWljaG5pc3NlIHdlcmRlbiByZWt1cnNpdiBrb3BpZXJ0CisgICAgIC1mICBWb3IgZGVtIFVlYmVyc2NocmVpYmVuIGVpbmVyIGV4aXN0aWVyZW5kZW4gRGF0ZWkgd2lyZCBuaWNodCBnZWZyYWd0CisgICAgIC12ICBFcyB3aXJkIGplZGVyIEFyYmVpdHNzY2hyaXR0IGF1ZiBkZW0gQmlsZHNjaGlybSBhdXNnZWdlYmVuCisgICAgIC1tICBFcyB3ZXJkZW4gbnVyIERhdGVpZW4ga29waWVydCwgZGllIGRlciBNYXNrZSA8bWFza2U+IGVudHNwcmVjaGVuLgorICAgICAgICAgTGV0emVyZSB3aXJkIGltIGdsb2ItRm9ybWF0IGFuZ2VnZWJlbi4gKHouQi4gKi5jLCBzYXZlKi5vKQorICAgIAorIEJFSVNQSUVMRToKKworICAgID4gY3AgZGF0ZWkxIGRhdGVpMgorICAgID4gY3AgKi5jIHRlbXAKKyAgICA+IGNwIC9kb2MvcyogLgorICAgID4gY3AgLWlybSAvZG9jIH4vS1VSUyAqLmMgCisgICAgPiBjcCAtcmYgfm1hbmRyYWdvbi9tZWxvcmFuIC9kL2luc2Vsbi9tYW5kcmFnb24KKworIFNJRUhFIEFVQ0g6CisgICAgbXYsIHJtLCBta2Rpciwgcm1kaXIKKworIExFVFpURSBBRU5ERVJVTkc6CisgICAgTWl0LCAwMi4xMC4yMDAyLCAwMjowMDowMCB2b24gTWFuZHJhZ29uCmRpZmYgLS1naXQgYS9kb2MvbWNtZC9kZXN0cnVjdCBiL2RvYy9tY21kL2Rlc3RydWN0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmU4NWVkNGMKLS0tIC9kZXYvbnVsbAorKysgYi9kb2MvbWNtZC9kZXN0cnVjdApAQCAtMCwwICsxLDMwIEBACisKK2Rlc3RydWN0CistLS0tLS0tLQorCisgTUFHSUVSS09NTUFORE86CisgICAgZGVzdHJ1Y3QgPG9iamVrdD4KKworIEFSR1VNRU5URToKKworICAgICA8b2JqZWt0PiAgIElEIGVpbmVzIE9iamVrdGVzCisKKyBCRVNDSFJFSUJVTkc6CisgICAgV2VubiBlcyBlaW4gT2JqZWt0IGluIGRlciBVbWdlYnVuZyAoSW52ZW50b3J5LCBSYXVtKSBnaWJ0LCBkYXMgYXVmCisgICAgPG9iamVrdD4gYW5zcHJpY2h0LCB3aXJkIGRpZXNlcyBPYmpla3QgemVyc3RvZXJ0LgorCisgICAgSW4gZGVtIE9iamVrdCB3aXJkIHJlbW92ZSgpIGF1ZmdlcnVmZW4sIHVtIGVzIHp1IHplcnN0b2VyZW4uIEZhbGxzIGRpZXMKKyAgICBuaWNodCB6dXIgWmVyc3RvZXJ1bmcgZGVzIE9iamVrdGVzIGZ1ZWhydCAod2VpbCBkYXMgT2JqZWt0IGdhciBrZWluCisgICAgcmVtb3ZlKCkgZGVmaW5pZXJ0IG9kZXIgZGllIHJlbW92ZSgpLUZ1bmt0aW9uIGRhcyBaZXJzdG9lcmVuIHZlcmhpbmRlcnQpLAorICAgIGJsZWlidCBkYXMgT2JqZWt0IGVyaGFsdGVuLgorCisgQkVNRVJLVU5HRU46CisgICAgU3BpZWxlciBkdWVyZmVuIG5pZW1hbHMgemVyc3RvZXJ0IHdlcmRlbiEKKworIFNJRUhFIEFVQ0g6CisgICAgbG9hZCwgY2xvbmUsIHVwZCwgc2V0ZG1zZywKKyAgICByZW1vdmUoTCksIGRlc3RydWN0KEUpCisKKyBMRVRaVEUgQUVOREVSVU5HOgorICAgIDExLjA2LjIwMTQsIFplc3N0cmEKKwpkaWZmIC0tZ2l0IGEvZG9jL21jbWQvZG8gYi9kb2MvbWNtZC9kbwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4xODBmNDUzCi0tLSAvZGV2L251bGwKKysrIGIvZG9jL21jbWQvZG8KQEAgLTAsMCArMSwzMCBAQAorCitkbworLS0KKworIE1BR0lFUktPTU1BTkRPOgorICAgIGRvIDxjbWRzPgorCisgQVJHVU1FTlRFOgorCisgICAgIDxjbWRzPgorICAgICAgICBMaXN0ZSB2b24gQmVmZWhsZW4gKG1pdCBgOycgZ2V0cmVubnQpCisKKyBCRVNDSFJFSUJVTkc6CisgICAgTWl0IGRpZXNlbSBCZWZlaGwga2FubiBtYW4gbWVocmVyZSBhbmRlcmUgQmVmZWhsZSBuYWNoZWluYW5kZXIgYXVzZnVlaHJlbi4KKyAgICBEaWVzIGxhZXNzdCBzaWNoIHp1bSBCZWlzcGllbCBpbSBadXNhbW1lbmhhbmcgbWl0IEFsaWFzZW4gYXVzbnV0emVuLgorCisgICAgRGllIGVpbnplbG5lbiBCZWZlaGxlIHdlcmRlbiBkdXJjaCBTZW1pa29sb25zIChgOycpIGdldHJlbm50OyBpbiBkZW4KKyAgICBCZWZlaGxlbiBzZWxic3QgZHVlcmZlbiBrZWluZSBTZW1pa29sb25zIHZvcmtvbW1lbi4KKworIEJFSVNQSUVMRToKKyAgICBXZW5uIG1hbiBzZWluIEVyc2NoZWluZW4gaW4gZGVyIEFiZW50ZXVyZXJnaWxkZSBtaXQgZWluZW0gZnJldW5kbGljaGVuCisgICAgR3J1c3MgdmVyYmluZGVuIG1vZWNodGUsIGtvZW5udGUgbWFuIGZvbGdlbmRlcm1hc3NlbiB2b3JnZWhlbjoKKworICAgID4gZG8gZ290byAvZ2lsZGVuL2FiZW50ZXVyZXI7IHNhZyBIYWxsbyEKKworIFNJRUhFIEFVQ0g6CisgICAgYWxpYXMKKworIExFVFpURSBBZU5ERVJVTkc6CisgICAgVGh1LCAyNC4wNy4xOTk3LCAwOTowMDowMCB2b24gV2FyZ29uCmRpZmYgLS1naXQgYS9kb2MvbWNtZC9lY2hvYWxsIGIvZG9jL21jbWQvZWNob2FsbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4zYWJlZmQzCi0tLSAvZGV2L251bGwKKysrIGIvZG9jL21jbWQvZWNob2FsbApAQCAtMCwwICsxLDI0IEBACisKK2VjaG9hbGwKKy0tLS0tLS0KKworIE1BR0lFUktPTU1BTkRPOgorICAgIGVjaG9hbGwgPHRleHQ+CisKKyBBUkdVTUVOVEU6CisKKyAgICAgPHRleHQ+CisgICAgICAgIGVpbiBiZWxpZWJpZ2VyIFRleHQKKworIEJFU0NIUkVJQlVORzoKKyAgICBEZXIgVGV4dCA8dGV4dD4gd2lyZCBhbiBhbGxlIFNwaWVsZXIgaW0gTVVEIGdlc2NoaWNrdC4KKworICAgIERlciBCZWZlaGwgc29sbHRlIG1pdCBncm9lc3N0ZXIgU29yZ2ZhbHQgYmVoYW5kZWx0IHdlcmRlbi4gSW4gZGllc2VtCisgICAgWnVzYW1tZW5oYW5nIHNlaSBhdWNoIG5vY2htYWwgZGFyYXVmIGhpbmdld2llc2VuLCBkYXNzIEVjaG9zIGluIGZyZW1kZW0KKyAgICBOYW1lbiBuaWNodCBlcmxhdWJ0IHNpbmQuCisKKyBTSUVIRSBBVUNIOgorICAgIHZlcnRyYWcsIGVtb3RlLCBlY2hvLCBlY2hvdG8sIG1lY2hvLCB0ZWlsZSAobWl0KQorCisgTEVUWlRFIEFlTkRFUlVORzoKKyAgICBUdWUsIDAyLjA5LjE5OTcsIDE2OjU0OjE4IHZvbiBXYXJnb24KZGlmZiAtLWdpdCBhL2RvYy9tY21kL2VjaG90byBiL2RvYy9tY21kL2VjaG90bwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41NTI4MzEyCi0tLSAvZGV2L251bGwKKysrIGIvZG9jL21jbWQvZWNob3RvCkBAIC0wLDAgKzEsMjYgQEAKKworZWNob3RvCistLS0tLS0KKworIE1BR0lFUktPTU1BTkRPOgorICAgIGVjaG90byA8bmFtZT4gPHRleHQ+CisKKyBBUkdVTUVOVEU6CisKKyAgICAgPG5hbWU+CisgICAgICAgIE5hbWUgZWluZXMgKGVpbmdlbG9nZ3RlbikgU3BpZWxlcnMgb2RlciBOUENzCisgICAgIDx0ZXh0PgorICAgICAgICBlaW4gYmVsaWViaWdlciBUZXh0CisKKyBCRVNDSFJFSUJVTkc6CisgICAgRGVyIFRleHQgPHRleHQ+IHdpcmQgYW4gZGFzIExlYmV3ZXNlbiA8bmFtZT4gZ2VzY2hpY2t0LgorCisgICAgRGVyIEJlZmVobCBzb2xsdGUgbWl0IFNvcmdmYWx0IGJlaGFuZGVsdCB3ZXJkZW4uIEluIGRpZXNlbSBadXNhbW1lbmhhbmcKKyAgICBzZWkgYXVjaCBub2NobWFsIGRhcmF1ZiBoaW5nZXdpZXNlbiwgZGFzcyBFY2hvcyBpbiBmcmVtZGVtIE5hbWVuIG5pY2h0CisgICAgZXJsYXVidCBzaW5kLgorCisgU0lFSEUgQVVDSDoKKyAgICB2ZXJ0cmFnLCBlbW90ZSwgZWNobywgZWNob2FsbCwgbWVjaG8sIHRlaWxlIChtaXQpCisKKyBMRVRaVEUgQWVOREVSVU5HOgorICAgIFR1ZSwgMDIuMDkuMTk5NywgMTY6NTQ6Mzggdm9uIFdhcmdvbgpkaWZmIC0tZ2l0IGEvZG9jL21jbWQvZWQgYi9kb2MvbWNtZC9lZApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44ZmM1YmUxCi0tLSAvZGV2L251bGwKKysrIGIvZG9jL21jbWQvZWQKQEAgLTAsMCArMSw0NyBAQAorCitlZAorLS0KKworIE1BR0lFUktPTU1BTkRPOgorICAgIGVkIDxkYXRlaT4gWy4uLl0KKworIEFSR1VNRU5URToKKworICAgICA8ZGF0ZWk+IFsuLi5dCisgICAgICAgIE5hbWUobikgZGVyIHp1IGJlYXJiZWl0ZW5kZW4gRGF0ZWkoZW4pCisKKyBCRVNDSFJFSUJVTkc6CisgICAgU3RhcnRldCBkZW4gRWRpdG9yIG5hY2hlaW5hbmRlciBtaXQgamVkZXIgYW5nZWdlYmVuZW4gRGF0ZWkuCisKKyAgICBEaWUgRGF0ZWluYW1lbiBrb2VubmVuIGF1Y2ggTXVzdGVyIHdpZSAqIG9kZXIgPyBlbnRoYWx0ZW4uCisKKyAgICBEZXIgRWRpdG9yIGlzdCBpbSBncm9zc2VuIHVuZCBnYW56ZW4ga29tcGF0aWJlbCB6dW0gVU5JWCBFZGl0b3IgZWQuIEVyIGlzdAorICAgIHplaWxlbm9yaWVudGllcnQgdW5kIGZ1bmt0aW9uaWVydCBuYWNoIGVpbmVtIGVpbmZhY2hlbiBQcmluemlwLgorCisgICAgRXMgZ2lidCB6d2VpIE1vZGk6IEtvbW1hbmRvbW9kdXMgdW5kIEVpbmdhYmVtb2R1cworCisgICAgIEtvbW1hbmRvbW9kdXM6CisKKyAgICAgICAgICogSGF0IGRhcyBQcm9tcHQgYDonCisgICAgICAgICAqIEFremVwdGllcnQgQmVmZWhsZSBkZXIgQXJ0IFs8YWRkcmVzc2U+XTxiZWZlaGw+CisgICAgICAgICAgIEhpZXJiZWkgYmVzdGVodCA8YWRyZXNzZT4gYXVzIGVpbmVyIFplaWxlbm51bW1lciBvZGVyIGF1cyBlaW5lcgorICAgICAgICAgICBBbmdhYmUgZGllIG1laHJlcmUgWmVpbGVuIGFkcmVzc2llcnQ6IHplaWxlMSx6ZWlsZTIKKyAgICAgICAgICAgRGllIEJlZmVobGUga29lbm5lbiBtaXQgZGVtIEJlZmVobCBgaCcgYWJnZXJ1ZmVuIHdlcmRlbi4KKworICAgICBFaW5nYWJlbW9kdXM6CisKKyAgICAgICAgICogSGF0IGtlaW5lbiBQcm9tcHQuCisgICAgICAgICAqIEFremVwdGllcnQgRWluZ2FiZW4sIGJpcyBhdWYgZWluZXIgZWluemVsbmVuIFplaWxlIGVpbiBgLicKKyAgICAgICAgICAgZWluZ2VnZWJlbiB3aXJkLCBkYXMgd2VjaHNlbHQgd2llZGVyIGluIGRlbiBLb21tYW5kb21vZHVzLgorCisgQkVJU1BJRUxFOgorCisgICAgPiBlZCB0ZXN0LmMKKyAgICA+IGVkICouYworCisgU0lFSEUgQVVDSDoKKyAgICBtb3JlLCBoZWFkLCB0YWlsLCBsb2FkLCBjbG9uZQorICAgIGVkMChMUEMpLCBlZDEoTFBDKSwgZWQyKExQQyksIGVkMyhMUEMpLCBlZDQoTFBDKSwgZWQ1KExQQykKKworIExFVFpURSBBZU5ERVJVTkc6CisgICAgVGh1LCAyNC4wNy4xOTk3LCAwOTowMDowMCB2b24gV2FyZ29uCmRpZmYgLS1naXQgYS9kb2MvbWNtZC9leGVjIGIvZG9jL21jbWQvZXhlYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi42MzkwZjBmCi0tLSAvZGV2L251bGwKKysrIGIvZG9jL21jbWQvZXhlYwpAQCAtMCwwICsxLDI5IEBACisKK2V4ZWMKKy0tLS0KKworIE1BR0lFUktPTU1BTkRPOgorICAgIGV4ZWMgPGRhdGVpPgorCisgQVJHVU1FTlRFOgorCisgICAgIDxkYXRlaT4KKyAgICAgICAgRGF0ZWluYW1lIGRlcyBaaWVsb2JqZWt0ZXMKKworIEJFU0NIUkVJQlVORzoKKyAgICBFcyB3aXJkIHZlcnN1Y2h0LCBlaW5lbiBDbG9uZSB2b24gPGRhdGVpPiB6dSBlcnNjaGFmZmVuIHVuZCBEZWluZQorICAgIFZlcmJpbmR1bmcgenVtIE1VRCBhbiBkaWVzZW4gQ2xvbmUgd2VpdGVyenVnZWJlbi4gRGFzIE9iamVrdCBzb2xsdGUgZGF6dQorICAgIG1vZWdsaWNoc3QgZWluZSBSYXNzZW5zaGVsbCwgenVtaW5kZXN0IGFiZXIgYC9zdGQvcGxheWVyL2Jhc2UuYycgZ2VlcmJ0CisgICAgaGFiZW4uCisKKyAgICBEYXMgT2JqZWt0IG11c3MgZGllIGdsZWljaGUgVUlEIGJlc2l0emVuIHdpZSBEdSAoc3ByaWNoOiBlcyBtdXNzIHNpY2ggaW4KKyAgICBlaW5lbSBEZWluZXIgVmVyemVpY2huaXNzZSBiZWZpbmRlbikuCisKKyAgICBEaWVzZXIgQmVmZWhsIGthbm4gbnVyIHZvbiBSZWdpb25zLSB1bmQgaG9laGVyZW4gTWFnaWVybiBhdXNnZWZ1ZWhydAorICAgIHdlcmRlbi4KKworIFNJRUhFIEFVQ0g6CisgICAgZXhlYyhFKQorCisgTEVUWlRFIEFlTkRFUlVORzoKKyAgICBUaHUsIDI0LjA3LjE5OTcsIDA5OjAwOjAwIHZvbiBXYXJnb24KZGlmZiAtLWdpdCBhL2RvYy9tY21kL2ZyaWVkZW4gYi9kb2MvbWNtZC9mcmllZGVuCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjVmOGYxMGYKLS0tIC9kZXYvbnVsbAorKysgYi9kb2MvbWNtZC9mcmllZGVuCkBAIC0wLDAgKzEsMjQgQEAKKworZnJpZWRlbgorLS0tLS0tLQorCisgTUFHSUVSS09NTUFORE86CisgICAgZnJpZWRlbiBbPG5hbWU+XQorCisgQVJHVU1FTlRFOgorCisgICAgIDxuYW1lPiAob3B0aW9uYWwpCisgICAgICAgIE5hbWUgZWluZXMgTGViZXdlc2VucworCisgQkVTQ0hSRUlCVU5HOgorICAgIE9obmUgQXJndW1lbnQgd2VyZGVuIGFsbGUgS2FlbXBmZSBpbiBkZW0gUmF1bSwgaW4gZGVtIER1IERpY2ggZ2VyYWRlCisgICAgYmVmaW5kZXN0IGFiZ2Vicm9jaGVuLgorCisgICAgTWl0IEFyZ3VtZW50IGJyaWNodCBkYXMgTGViZXdlc2VuIDxuYW1lPiBkZW4gS2FtcGYgYWIgKGQuaC4gZXMgc2VsYnN0CisgICAgc2NobGFlZ3QgbmljaHQgbWVociB6dSwgdW5kIGF1Y2ggc2VpbmUgRmVpbmRlIGdyZWlmZW4gZXMgbmljaHQgbWVociBhbikuCisKKyBTSUVIRSBBVUNIOgorICAgIHN0b3AKKworIExFVFpURSBBZU5ERVJVTkc6CisgICAgVGh1LCAyNC4wNy4xOTk3LCAwOTowMDowMCB2b24gV2FyZ29uCmRpZmYgLS1naXQgYS9kb2MvbWNtZC9nb3RvIGIvZG9jL21jbWQvZ290bwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41ODdkZGEwCi0tLSAvZGV2L251bGwKKysrIGIvZG9jL21jbWQvZ290bwpAQCAtMCwwICsxLDUyIEBACisKK2dvdG8KKy0tLS0KKworIE1BR0lFUktPTU1BTkRPOgorICAgIGdvdG8gPHppZWw+CisgICAgKzxtYWdpZXI+CisKKyBBUkdVTUVOVEU6CisKKyAgICAgPHppZWw+CisgICAgICAgIFBmYWRuYW1lIG9kZXIgTmFtZSBlaW5lcyBMZWJld2VzZW5zCisgICAgIDxtYWdpZXI+CisgICAgICAgIE5hbWUgZWluZXMgTWFnaWVycyAobWluZGVzdGVucyBNYWdpZXJsZXZlbCAyMCkKKworIEJFU0NIUkVJQlVORzoKKyAgICBNaXQgZGllc2VuIEJlZmVobGVuIGdlbGFuZ3N0IER1IGFuIGRpZSBnZXd1ZW5zY2h0ZW4gT3J0ZSBpbSBNb3JnZW5HcmF1ZW4uCisKKyAgICBJc3QgPHppZWw+IGVpbiBQZmFkbmFtZSwgc28gZ2VsYW5nc3QgRHUgZGlyZWt0IGluIGRlbiBhbmdlZ2ViZW5lbiBSYXVtLgorCisgICAgSXN0IDx6aWVsPiBkYWdlZ2VuIGRlciBOYW1lIGVpbmVzIChlaW5nZWxvZ2d0ZW4pIFNwaWVsZXJzIG9kZXIgZWluZXMgTlBDcywKKyAgICBzbyB3aXJzdCBEdSBpbiBkZW4gUmF1bSB0ZWxlcG9ydGllcnQsIGluIGRlbSBzaWNoIGRhcyBlbnRzcHJlY2hlbmRlCisgICAgTGViZXdlc2VuIGF1ZmhhZWx0LgorICAgIAorICAgIFdlbm4gbWVoZXJlIE5QQ3MgZGVzIE5hbWVucyBleGlzdGllcmVuLCBrYW5uIG1hbiBtaXQgJ2dvdG8gbmFtZSBucicgZGVuCisgICAgZ2V3dWVuc2NodGVuIGF1c3dhZWhsZW4uCisKKyAgICBFaW5lIHNjaG5lbGxlIEFydCwgaW4gZGVuIEFyYmVpdHNyYXVtIGRlcyBNYWdpZXJzIDxtYWdpZXI+IHp1IGdlbGFuZ2VuLAorICAgIGlzdCBkYXMgS29tbWFuZG8gKzxtYWdpZXI+LgorCisgICAgV2VubiBEdSBEaWNoIGltIFZlcmZvbGdlbW9kdXMgYmVmaW5kZXQsIHdpcmQgZGllc2VyIGR1cmNoIGRlbiBCZWZlaGwKKyAgICBhYmdlc2NoYWx0ZXQuCisKKyBCRUlTUElFTEU6CisgICAgSW4gV2FyZ29ucyBBcmJlaXRzcmF1bSBzdGVodCBpbW1lciBlaW4gTlBDIG5hbWVucyBFcnJvbC4gRGVzaGFsYiBrYW5uIG1hbgorICAgIGF1ZiBmb2xnZW5kZSBkcmVpIEFydGVuIGluIFdhcmdvbnMgQXJiZWl0c3JhdW0gZ2VsYW5nZW46CisKKyAgICA+IGdvdG8gfndhcmdvbi93b3Jrcm9vbQorICAgID4gZ290byBlcnJvbAorICAgID4gK3dhcmdvbgorICAgIAorICAgIEVzIGdpYnQgaW0gTW9yZ2VuZ3JhdWVuIHphaGxyZWljaGUgUmVoZS4gWnUgZGVuIGVpbnplbG5lbiBnZWxhbmd0IG1hbiBtaXQKKyAgICA+IGdvdG8gcmVoIDEKKyAgICA+IGdvdG8gcmVoIDIKKyAgICA+IGdvdG8gcmVoIDMKKyAgICA+IC4uLgorCisgU0lFSEUgQVVDSDoKKyAgICB0cmFucywgaW4sIGF0LCBzZXRtbWluLCBzZXRtbW91dAorCisgTEVUWlRFIEFlTkRFUlVORzoKKyAgICBTYXQsIDI5LjA3LjIwMDAsIDE4OjAwOjAwIHZvbiBTaWx2YW5hCmRpZmYgLS1naXQgYS9kb2MvbWNtZC9ncmVwIGIvZG9jL21jbWQvZ3JlcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41YjVhNzJmCi0tLSAvZGV2L251bGwKKysrIGIvZG9jL21jbWQvZ3JlcApAQCAtMCwwICsxLDU1IEBACisKK2dyZXAKKy0tLS0KKworIE1BR0lFUktPTU1BTkRPOgorICAgIGdyZXAgWyAtY2hpbG52cmYgXSA8cmVnZXhwPiA8bmFtZT4gWy4uLl0KKyAgICBncmVwIFsgLWNoaWxudnJtZiBdIDxyZWdleHA+IDxuYW1lPiBbLi4uXSBbPG1hc2tlPl0KKworIEFSR1VNRU5URToKKworICAgICA8cmVnZXhwPiAgICAgICByZWd1bGFlcmVyIFN1Y2hhdXNkcnVjaworICAgICA8bmFtZT4gWy4uLl0gICBEaWUgenUgZHVyY2hzdWNoZW5kZShuKSBEYXRlaShlbikgKG9kZXIgVmVyemVpY2huaXNzZSkKKyAgICAgPG1hc2tlPiAgICAgICAgTWFza2UsIGRlciBlaW5lIERhdGVpIGVudHNwcmVjaGVuIG11c3MgKGdsb2IpCisKKyBCRVNDSFJFSUJVTkc6CisgICAgSW4gZGVuIGFuZ2VnZWJlbmVuIERhdGVpZW4gd2lyZCBuYWNoIGRlbSByZWd1bGFlcmVuIEF1c2RydWNrIDxyZWdleHA+CisgICAgZ2VzdWNodC4KKworICAgIERpZSBEYXRlaW5hbWVuIGtvZW5uZW4gYXVjaCBNdXN0ZXIgd2llICogb2RlciA/IGVudGhhbHRlbi4KKworICAgIFp1c2FldHpsaWNoIGtvZW5uZW4gZm9sZ2VuZGUgRmxhZ3MgYW5nZWdlYmVuIHdlcmRlbjoKKworICAgICAtYyAgRXMgd2lyZCBudXIgZGllIFphaGwgZGVyIGdlZnVuZGVuZW4gWmVpbGVuIHBybyBEYXRlaSBhdXNnZWdlYmVuLgorICAgICAtaCAgRGllIERhdGVpbmFtZW4gd2VyZGVuIG5pY2h0IG1pdCBhdXNnZWdlYmVuLgorICAgICAtaSAgR3Jvc3MtIHVuZCBLbGVpbnNjaHJlaWJ1bmcgd2VyZGVuIGlnbm9yaWVydC4KKyAgICAgLWwgIERpZSBEYXRlaW5hbWVuIHdlcmRlbiBpbW1lciBtaXQgYXVzZ2VnZWJlbi4KKyAgICAgLW4gIERpZSBaZWlsZW5udW1tZXJuIGRlciBnZWZ1bmRlbmVuIFplaWxlbiB3ZXJkZW4gYXVzZ2VnZWJlbi4KKyAgICAgLXYgIEVzIHdlcmRlbiBkaWUgWmVpbGVuIGF1c2dlZ2ViZW4sIGluIGRlbmVuIDxyZWdleHA+ICpuaWNodCogZ2VmdW5kZW4KKyAgICAgICAgIHd1cmRlLgorICAgICAtciAgSGFuZGVsdCBlcyBzaWNoIGJlaSA8bmFtZT4gdW0gZWluIFZlcnplaWNobmlzLCB3ZXJkZW4gcmVrdXJzaXYKKyAgICAgICAgIGFsbGUgZGFyaW4gYmVmaW5kbGljaGVuIERhdGVpZW4gZHVyY2hzdWNodC4KKyAgICAgLW0gIEVzIHdlcmRlbiBudXIgRGF0ZWllbiBkdXJjaHN1Y2h0LCBkaWUgYXVmIGRpZSBEYXRlaW1hc2tlIDxtYXNrZT4KKyAgICAgICAgIHBhc3Nlbi4gTGV0enRlcmUgd2lyZCBpbiBnbG9iLUZvcm0gYW5nZWdlYmVuLgorICAgICAtZiAgQWxsZSBBdXNnYWJlbiB2b24gZ3JlcCB3ZXJkZW4gaW4gZGllIERhdGVpIGdyZXAub3V0IGltIFZlcnplaWNobmlzCisgICAgICAgICBkZXMgTWFnaWVycyAoL3BsYXllcnMvbWFnaWVybmFtZSkgYXVzZ2VnZWJlbi4KKworIEJFTUVSS1VOR0VOOgorICAgIERhcyBEdXJjaHN1Y2hlbiBzZWhyIGxhbmdlciBEYXRlaWVuIG9kZXIgdm9uIFZlcnplaWNobmlzc2VuIG1pdCBzZWhyCisgICAgdmllbGVuIERhdGVpZW4gc29sbHRlIG1hbiBtb2VnbGljaHN0IHZlcm1laWRlbiwgZGEgZGllcyBzZWhyIGxhZ2ludGVuc2l2CisgICAgaXN0LgorCisgQkVJU1BJRUxFOgorCisgICAgPiBncmVwIFBfTiAvc3lzLyouaAorICAgID4gZ3JlcCAtbiAiLipbYWJdKiIgZGF0ZWkuYworICAgID4gZ3JlcCAtcm0gIlBfQkxBQkxVQkIiIC9zdGQgKi5jIC0+IHN1Y2h0IGFsbGUgRGF0ZWllbiBpbiAvc3RkLCBkaWUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhdWYgLmMgZW5kZW4gdW5kIFBfQkxBQkxVQkIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbnRoYWx0ZW4gCisKKyBTSUVIRSBBVUNIOgorICAgIHJlZ2V4cChFKSwgbW9yZSwgY2F0LCBoZWFkLCB0YWlsCisKKyBMRVRaVEUgQUVOREVSVU5HOgorICAgIE1pdCwgMDIuMTAuMjAwMiwgMDI6MDA6MDAgdm9uIE1hbmRyYWdvbgorIApcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2RvYy9tY21kL2hlYWQgYi9kb2MvbWNtZC9oZWFkCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmMxNmFkNWIKLS0tIC9kZXYvbnVsbAorKysgYi9kb2MvbWNtZC9oZWFkCkBAIC0wLDAgKzEsMjAgQEAKKworaGVhZAorLS0tLQorCisgTUFHSUVSS09NTUFORE86CisgICAgaGVhZCA8ZGF0ZWk+CisKKyBBUkdVTUVOVEU6CisKKyAgICAgPGRhdGVpPgorICAgICAgICBEaWUgYXVzenVnZWJlbmRlIERhdGVpCisKKyBCRVNDSFJFSUJVTkc6CisgICAgRGllIGVyc3RlbiB6ZWhuIFplaWxlbiBkZXIgRGF0ZWkgPGRhdGVpPiB3ZXJkZW4gYXVzZ2VnZWJlbi4KKworIFNJRUhFIEFVQ0g6CisgICAgY2F0LCB0YWlsLCBtb3JlCisKKyBMRVRaVEUgQWVOREVSVU5HOgorICAgIFRodSwgMjQuMDcuMTk5NywgMDk6MDA6MDAgdm9uIFdhcmdvbgpkaWZmIC0tZ2l0IGEvZG9jL21jbWQvaGVpbGUgYi9kb2MvbWNtZC9oZWlsZQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4yMjY5ODJlCi0tLSAvZGV2L251bGwKKysrIGIvZG9jL21jbWQvaGVpbGUKQEAgLTAsMCArMSwyNyBAQAorCitoZWlsZQorLS0tLS0KKworIE1BR0lFUktPTU1BTkRPOgorICAgIGhlaWxlIDx6aWVsPgorCisgQVJHVU1FTlRFOgorCisgICAgIDx6aWVsPgorICAgICAgICBEYXMgenUgaGVpbGVuZGUgTGViZXdlc2VuCisKKyBCRVNDSFJFSUJVTkc6CisgICAgRGFzIGFuZ2VnZWJlbmUgTGViZXdlc2VuIHdpcmQgdm9sbHN0YWVuZGlnIGdlaGVpbHQuCisKKyAgICBEZXIgQmVmZWhsIGRhcmYgbnVyIGZ1ZXIgVGVzdHMgYmVudXR6dCB3ZXJkZW4uIE1hbiBzb2xsdGUgZGFyYXVmIGFjaHRlbiwKKyAgICBkYXNzIG1hbiBrZWluZSBTcGllbGVyIGRhbWl0IGJlZWluZmx1c3N0LCB1bmQgendhciB3ZWRlciBpbSBHdXRlbiAoaW5kZW0KKyAgICBtYW4gZGVuIFNwaWVsZXIgaGVpbHQpIG5vY2ggaW0gQm9lc2VuIChpbmRlbSBtYW4gZGFzIE1vbnN0ZXIgaGVpbHQsIGdlZ2VuCisgICAgZGFzIGRlciBTcGllbGVyIGdlcmFkZSBrYWVtcGZ0KS4KKworICAgIE1hZ2llci1MZWhybGluZ2VuIHN0ZWh0IGRpZXNlciBCZWZlaGwgbm9jaCBuaWNodCB6dXIgVmVyZnVlZ3VuZy4KKworIFNJRUhFIEFVQ0g6CisgICAgdmVydHJhZworCisgTEVUWlRFIEFlTkRFUlVORzoKKyAgICBUdWUsIDAyLjA5LjE5OTcsIDE2OjU0OjQ1IHZvbiBXYXJnb24KZGlmZiAtLWdpdCBhL2RvYy9tY21kL2hvbWUgYi9kb2MvbWNtZC9ob21lCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjQ4ZmM5MDcKLS0tIC9kZXYvbnVsbAorKysgYi9kb2MvbWNtZC9ob21lCkBAIC0wLDAgKzEsMjMgQEAKKworaG9tZQorLS0tLQorCisgTUFHSUVSS09NTUFORE86CisgICAgaG9tZQorCisgQVJHVU1FTlRFOgorICAgIGtlaW5lCisKKyBCRVNDSFJFSUJVTkc6CisgICAgRHUgd2lyc3QgaW4gRGVpbmVuIFdvcmtyb29tIHRyYW5zcG9ydGllcnQuCisKKyAgICBNYWdpZXItTGVocmxpbmdlbiBzdGVodCBkaWVzZXIgQmVmZWhsIG5vY2ggbmljaHQgenVyIFZlcmZ1ZWd1bmcsIGRhIHNpZQorICAgIGF1Y2ggbm9jaCBrZWluZW4gV29ya3Jvb20gaGFiZW4uCisgICAgV2VubiBEdSBEaWNoIGltIFZlcmZvbGdlbW9kdXMgYmVmaW5kZXQsIHdpcmQgZGllc2VyIGR1cmNoIGRlbiBCZWZlaGwKKyAgICBhYmdlc2NoYWx0ZXQuCisKKyBTSUVIRSBBVUNIOgorICAgIGdvdG8KKworIExFVFpURSBBZU5ERVJVTkc6CisgICAgU2F0LCAyOS4wNy4yMDAwLCAxODowMDowMCB2b24gU2lsdmFuYQpkaWZmIC0tZ2l0IGEvZG9jL21jbWQvaWdub3JpZXJlIGIvZG9jL21jbWQvaWdub3JpZXJlCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjQzYWFiZjQKLS0tIC9kZXYvbnVsbAorKysgYi9kb2MvbWNtZC9pZ25vcmllcmUKQEAgLTAsMCArMSwzMCBAQAorCitpZ25vcmllcmUKKy0tLS0tLS0tLQorCisgTUFHSUVSS09NTUFORE86CisgICAgaWdub3JpZXJlIDxtYWdpZXI+LmRlYnVnCisKKyBBUkdVTUVOVEU6CisKKyAgICAgPG1hZ2llcj4KKyAgICAgICAgTmFtZSBkZXMgTWFnaWVycywgZGVzc2VuIEJ1Z21lbGR1bmdlbiBpZ25vcmllcnQgd2VyZGVuIHNvbGxlbi4KKworIEJFU0NIUkVJQlVORzoKKyAgICBNaXQgSGlsZmUgZGllc2VzIEJlZmVobHMga2FubiBtYW4gZ2V6aWVsdCBkaWUgQnVncyBlaW5lcyBiZXN0aW1tdGVuIAorICAgIE1hZ2llcnMgaWdub3JpZXJlbi4KKyAgICAKKyAgICBFcyB3ZXJkZW4gZGllIEJ1Zy1NZWxkdW5nZW4gYXVmIGRlbiBLYW5hZWxlbiAnZGVidWcnIHVuZCBhdWYgCisgICAgJ2VudHdpY2tsdW5nJyBpZ25vcmllcnQuIAorCisgICAgQmVpbSBEdXJjaHNlaGVuIGRlciBLYW5hbC1IaXN0b3J5ICgtZGViKjIwKSB3ZXJkZW4gZGllIEJ1Z3MgYWxsZXJkaW5ncyAKKyAgICBuaWNodCBpZ25vcmllcnQuCisKKyAgICAnLWRlYiBiYWNrdHJhY2UnIGxpZWZlcnQgZWluIEJhY2t0cmFjZSB6dSBkZW0gbGV0enRlbiBhdWZnZXRyZXRlbmVuIEJ1ZywKKyAgICB2b2VsbGlnIHVuYWJoYWVuZ2lnLCBvYiBkZXIgQXVmcnVmZW5kZSBkZW4gQnVnIGlnbm9yaWVydC4KKworIFNJRUhFIEFVQ0g6CisgICAgaWdub3JpZXJlIChTcGllbGVya29tbWFuZG8pCisKKyBMRVRaVEUgQUVOREVSVU5HOgorICAgIERvbiwgMDEuMDguMjAwMiwgMTc6MTU6MDAgdm9uIFZhbmlvbgpkaWZmIC0tZ2l0IGEvZG9jL21jbWQvaW4gYi9kb2MvbWNtZC9pbgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5lYjk2MDlmCi0tLSAvZGV2L251bGwKKysrIGIvZG9jL21jbWQvaW4KQEAgLTAsMCArMSwyOSBAQAorCitpbgorLS0KKworIE1BR0lFUktPTU1BTkRPOgorICAgIGluIDxyYXVtPiA8a29tbWFuZG8+CisKKyBBUkdVTUVOVEU6CisKKyAgICAgPHJhdW0+CisgICAgICAgIERhdGVpbmFtZSBlaW5lcyBSYXVtZXMKKyAgICAgPGtvbW1hbmRvPgorICAgICAgICBkYXMgYXV6dWZ1ZWhyZW5kZSBLb21tYW5kbworCisgQkVTQ0hSRUlCVU5HOgorICAgIER1IHdpcnN0LCB1bnNpY2h0YmFyIGZ1ZXIgZGllIEFud2VzZW5kZW4sIGluIGRlbiBSYXVtIDxyYXVtPgorICAgIHRyYW5zcG9ydGllcnQsIGZ1ZWhyc3QgZGFzIEtvbW1hbmRvIDxrb21tYW5kbz4gYXVzIHVuZCBnZWxhbmdzdAorICAgIGF1dG9tYXRpc2NoIHdpZWRlciBpbiBkZW4gUmF1bSB6dXJ1ZWNrLCBpbiBkZW0gRHUgdm9yaGVyIHdhcnN0LgorCisgQkVJU1BJRUxFOgorICAgIEVpbiBCbGljayBhdWYgZGllIGFrdHVlbGxlIExpc3RlIGRlciBBYmVudGV1ZXI6CisKKyAgICA+IGluIC9naWxkZW4vYWJlbnRldXJlciBsaXN0ZQorCisgU0lFSEUgQVVDSDoKKyAgICBhdCwgZ290bworCisgTEVUWlRFIEFlTkRFUlVORzoKKyAgICBUaHUsIDI0LjA3LjE5OTcsIDA5OjAwOjAwIHZvbiBXYXJnb24KZGlmZiAtLWdpdCBhL2RvYy9tY21kL2ludmlzIGIvZG9jL21jbWQvaW52aXMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZmFjZTFhMAotLS0gL2Rldi9udWxsCisrKyBiL2RvYy9tY21kL2ludmlzCkBAIC0wLDAgKzEsMjYgQEAKKworaW52aXMKKy0tLS0tCisKKyBNQUdJRVJLT01NQU5ETzoKKyAgICBpbnZpcyBbZV0KKworIEFSR1VNRU5URToKKyAgICBXaXJkIGRlciBQYXJhbWF0ZXIgtGVgIGFuZ2VnZWJlbiwgZXJoYWx0ZW4gZGllIE1pdHNwaWVsZXIgZGllCisgICAgRXJ3YXJ0ZW1lbGR1bmdlbiB3aWUgYmVpbSBBdXNsb2dnZW4uCisKKyBCRVNDSFJFSUJVTkc6CisgICAgRHUgd2lyc3QgdW5zaWNodGJhci4gS2VpbiBTcGllbGVyIGthbm4gRGljaCBqZXR6dCBtZWhyIHNlaGVuLgorCisgICAgSmVkZXIgTWFnaWVyIHNvbGx0ZSBzaWNoIHVlYmVybGVnZW4sIHdhbm4gZXMgc2lubnZvbGwgaXN0LCB1bnNpY2h0YmFyIHp1CisgICAgc2VpbiwgdW5kIHdhbm4gZXIgYmVzc2VyIHNpY2h0YmFyIGlzdC4KKworICAgIEVzIGJlc3RlaHQgYXVzc2VyZGVtIGRpZSBNb2VnbGljaGtlaXQsIHNpY2ggZGlyZWt0IHVuc2ljaHRiYXIgZWluenVsb2dnZW4KKyAgICAoYXVjaCB3ZW5uIG1hbiBiZWltIGxldHp0ZW4gQXVzbG9nZ2VuIHNpY2h0YmFyIHdhcikuIERhenUgbXVzcyBtYW4gYmVpIGRlcgorICAgIFBhc3N3b3J0YWJmcmFnZSBhbHMgZXJzdGVuIEJ1Y2hzdGFiZW4gZWluIC0gZWluZ2ViZW4uCisKKyBTSUVIRSBBVUNIOgorICAgIHZpcworCisgTEVUWlRFIEFlTkRFUlVORzoKKyAgICBUaHUsIDI0LjA3LjE5OTcsIDA5OjAwOjAwIHZvbiBXYXJnb24KZGlmZiAtLWdpdCBhL2RvYy9tY21kL2xvYWQgYi9kb2MvbWNtZC9sb2FkCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjRmZjRkYjQKLS0tIC9kZXYvbnVsbAorKysgYi9kb2MvbWNtZC9sb2FkCkBAIC0wLDAgKzEsMjMgQEAKKworbG9hZAorLS0tLQorCisgTUFHSUVSS09NTUFORE86CisgICAgbG9hZCA8ZGF0ZWk+IFsuLi5dCisKKyBBUkdVTUVOVEU6CisKKyAgICAgPGRhdGVpPiBbLi4uXSAgRWluIG9kZXIgbWVocmVyZSBEYXRlaW5hbWVuCisKKyBCRVNDSFJFSUJVTkc6CisgICAgRGFzIE9iamVrdCwgd2VsY2hlcyBpbiA8ZGF0ZWk+IGRlZmluaWVydCBpc3QsIHdpcmQgZ2VsYWRlbi4gV2VubiBlcyBiZXJlaXRzCisgICAgZ2VsYWRlbiBpc3QsIHBhc3NpZXJ0IG5pY2h0cy4KKworICAgIFJhZXVtZSBrb2VubmVuIGF1Y2ggZ2VsYWRlbiB3ZXJkZW4sIGluZGVtIG1hbiBzaWUgYmV0cml0dC4gRGllIEJsdWVwcmludAorICAgIGVpbmVzIE9iamVrdGVzIGthbm4gYXVjaCBkdXJjaCBDbG9uZW4gZGVzIE9iamVrdGVzIGdlbGFkZW4gd2VyZGVuLgorCisgU0lFSEUgQVVDSDoKKyAgICBjbG9uZSwgZGVzdHJ1Y3QsIHVwZAorCisgTEVUWlRFIEFFTkRFUlVORzoKKyAgICBNaXQsIDAyLjEwLjIwMDIsIDAyOjAwOjAwIHZvbiBNYW5kcmFnb24KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9kb2MvbWNtZC9sb2NhbGNtZCBiL2RvYy9tY21kL2xvY2FsY21kCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjFhN2NiM2QKLS0tIC9kZXYvbnVsbAorKysgYi9kb2MvbWNtZC9sb2NhbGNtZApAQCAtMCwwICsxLDI3IEBACisKK2xvY2FsY21kCistLS0tLS0tLQorCisgTUFHSUVSS09NTUFORE86CisgICAgbG9jYWxjbWQKKworIEFSR1VNRU5URToKKyAgICBrZWluZQorCisgQkVTQ0hSRUlCVU5HOgorICAgIEVpZ2VudGxpY2ggc29sbHRlIGRpZXNlcyBLb21tYW5kbyBhbGxlIEJlZmVobGUgYW56ZWlnZW4sIGRpZSBEdSBhdWZncnVuZAorICAgIGRlcyBSYXVtZXMsIGluIGRlbSBEdSBnZXJhZGUgc3RlaHN0LCBhdWZncnVuZCBkZXIgZGVyIERpbmdlIGluIGRlbSBSYXVtCisgICAgdW5kIGluIERlaW5lbSBJbnZlbnRhciBzb3dpZSBhdWZncnVuZCBEZWluZXIgZWlnZW5lbiBTdGVsbHVuZyBhdXNmdWVocmVuCisgICAga2FubnN0LgorCisgICAgQXVzIHRlY2huaXNjaGVuIEdydWVuZGVuIHdlcmRlbiBhbGxlcmRpbmdzIG51ciBkaWUgQmVmZWhsZSBhbmdlemVpZ3QsIGRpZQorICAgIHVlYmVyIGFkZF9hY3Rpb24oKSBpbiBkaWUgQmVmZWhsc2xpc3RlIGVpbmdlZnVlZ3Qgd2VyZGVuOyBkYXMgTW9yZ2VuR3JhdWVuCisgICAgdmVyZnVlZ3QgamVkb2NoIHVlYmVyIGVpbmVuIGFuZGVyZW4gTWVjaGFuaXNtdXMsIHVtIGluIE9iamVrdGVuIEtvbW1hbmRvcworICAgIHp1IGRlZmluaWVyZW4uCisKKyBTSUVIRSBBVUNIOgorICAgIG1hbiwgaGlsZmUsCisgICAgQWRkQ21kKEwpLCBhZGRfYWN0aW9uKEUpCisKKyBMRVRaVEUgQWVOREVSVU5HOgorICAgIFRodSwgMjQuMDcuMTk5NywgMDk6MDA6MDAgdm9uIFdhcmdvbgpkaWZmIC0tZ2l0IGEvZG9jL21jbWQvbHMgYi9kb2MvbWNtZC9scwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4zNDY5OTQxCi0tLSAvZGV2L251bGwKKysrIGIvZG9jL21jbWQvbHMKQEAgLTAsMCArMSw5MCBAQAorCitscworLS0KKworIE1BR0lFUktPTU1BTkRPOgorICAgIGxzIFsgLWFscnRzdWcgXSBbIDxuYW1lPiAuLi4gXQorCisgQVJHVU1FTlRFOgorCisgICAgIDxuYW1lPiAgRGF0ZWktIG9kZXIgVmVyemVpY2huaXNuYW1lIChlcyBrb2VubmVuIGF1Y2ggbWVocmVyZSBzZWluKQorCisgQkVTQ0hSRUlCVU5HOgorICAgIERpZSBhbmdlZ2ViZW4gRGF0ZWllbiB1bmQgVmVyemVpY2huaXNzZSB3ZXJkZW4gYXVmZ2VsaXN0ZXQuIExhZXNzdCBtYW4KKyAgICA8bmFtZT4gd2VnLCB3aXJkIGRlciBJbmhhbHQgZGVzIGFrdHVlbGxlbiBWZXJ6ZWljaG5pc3NlcyBhdWZnZWxpc3RldC4KKworICAgIERpZSBGbGFncyBoYWJlbiBmb2xnZW5kZSBCZWRldXR1bmc6CisKKyAgICAgLWEgIEF1Y2ggdW5zaWNodGJhcmUgRGF0ZWllbiAoZGVyZW4gTmFtZW4gbWl0IC4gYmVnaW5uZW4pIHdlcmRlbgorICAgICAgICAgYW5nZXplaWd0LgorICAgICAtbCAgRWluZSBhdXNmdWVocmxpY2hlIExpc3RlLCBpbiBkZXIgYXVjaCBMYWVuZ2UgdW5kIERhdHVtIGRlciBEYXRlaQorICAgICAgICAgYW5nZWdlYmVuIHdlcmRlbi4KKyAgICAgLXUgIEluIFZlcmJpbmR1bmcgbWl0IC1sIHdpcmQgYXVjaCBkaWUgVUlEIGRlciBEYXRlaWVuIGF1c2dlZ2ViZW4uCisgICAgIC1nICBJbiBWZXJiaW5kdW5nIG1pdCAtbCB3aXJkIGF1Y2ggZGllIEdJRCBkZXIgRGF0ZWllbiBhdXNnZWdlYmVuLgorICAgICAtciAgRGllIFNvcnRpZXJyZWloZW5mb2xnZSB3aXJkIHVtZ2VrZWhydC4KKyAgICAgLXQgIERpZSBMaXN0ZSB3aXJkIG5hY2ggZGVtIEVyc3RlbGx1bmdzZGF0dW0gc29ydGllcnQuCisgICAgIC1zICBEaWUgTGlzdGUgd2lyZCBuYWNoIGRlciBHcm9lc3NlIGRlciBEYXRlaWVuIGdlb3JkbmV0LgorCisgRUlOU1RFTExVTkdFTjoKKyAgICBWZXJ6ZWljaG5pc3NlIHVuZCBnZWxhZGVuZSBPYmpla3RlIHdlcmRlbiwgYWJoYWVuZ2lnIHZvbiBkZXIgYWt0dWVsbGVuCisgICAgRWluc3RlbGx1bmcgZGVzIFRlcm1pbmFsdHlwcywgYmVzb25kZXJzIGFuZ2V6ZWlndC4KKworICAgIERpZXNlIEVpbnN0ZWxsdW5nZW4gbGFzc2VuIHNpY2ggdWViZXIgendlaSBVbWdlYnVuZ3N2YXJpYWJsZW4gYWVuZGVybiwKKyAgICB3ZW5uIG1hbiBhbHMgVGVybWluYWx0eXAgYHZ0MTAwJyBvZGVyIGBhbnNpJyBlaW5nZXN0ZWxsdCBoYXQuIEJlaSBkZXIKKyAgICBFaW5zdGVsbHVuZyBgZHVtYicgd2lyZCBiZWkgVmVyemVpY2huaXNzZW4gZWluIC8gYW5nZWhhZW5ndCB1bmQgYmVpCisgICAgZ2VsYWRlbmVuIE9iamVrdGVuIGVpbiAqLgorCisgICAgIExTX0RJUiAgSGllciBrYW5uIG1hbiBkaWUgRGFyc3RlbGx1bmcgdm9uIFZlcnplaWNobmlzc2VuIGtvbmZpZ3VyaWVyZW4uCisgICAgICAgICAgICAgRGVyIERlZmF1bHQgaXN0IGJlaSBgdnQxMDAnLVRlcm1pbmFscyBGZXR0c2NocmlmdCB1bmQgYmVpCisgICAgICAgICAgICAgYGFuc2knLVRlcm1pbmFscyBibGF1ZSBGZXR0c2NocmlmdC4KKyAgICAgTFNfT0JKICBEaWVzZSBWYXJpYWJsZSBiZWluaGFsdGV0IGRpZSBFaW5zdGVsbHVuZyBmdWVyIGdlbGFkZW5lIE9iamVrdGUuCisgICAgICAgICAgICAgRGVyIERlZmF1bHQgaXN0IGJlaSBgdnQxMDAnLVRlcm1pbmFscyBpbnZlcnNlIERhcnN0ZWxsdW5nIHVuZCBiZWkKKyAgICAgICAgICAgICBgYW5zaSctVGVybWluYWxzIHJvdGUgU2NocmlmdC4KKyAgICAgTFNfVkMgICBEaWVzZSBWYXJpYWJsZSBiZWluaGFsdGV0IGRpZSBFaW5zdGVsbHVuZyBmdWVyIE9iamVrdGUsIGRpZSB2b24KKyAgICAgICAgICAgICBlaW5lbSBWaXJ0dWFsIENvbXBpbGVyIGVyemV1Z3Qgd3VyZGVuLiBEZWZhdWx0IGlzdCB3aWUgYmVpIExTX09CSi4KKworICAgIERpZSBWYXJpYWJsZW4ga29lbm5lbiBkaWUgbmFjaGZvbGdlbmQgYXVmZ2VmdWVocnRlbiBXZXJ0ZSBhbm5laG1lbi4gVW0KKyAgICBtZWhyZXJlIEVmZmVrdGUgenUga29tYmluaWVyZW4sIG11c3MgbWFuIHNpZSBtaXQgZWluZW0gKyB0cmVubmVuLgorCisgICAgYHZ0MTAwJyB1bmQgYGFuc2knOgorCisgICAgIG5vbmUgICAgS2VpbmUgSGVydm9yaGVidW5nZW4KKyAgICAgYm9sZCAgICBGZXR0c2NocmlmdAorICAgICBibGluayAgIGJsaW5rZW5kZSBTY2hyaWZ0CisgICAgIGludmVycyAgU2NocmlmdC0gdW5kIEhpbnRlcmdydW5kZmFyYmUgd2VyZGVuIHZlcnRhdXNjaHQKKworICAgIE51ciBgYW5zaSc6CisKKyAgICAgYmxhY2sgICAgIFRleHRmYXJiZSBzY2h3YXJ6CisgICAgIHJlZCAgICAgICBUZXh0ZmFyYmUgcm90CisgICAgIGdyZWVuICAgICBUZXh0ZmFyYmUgZ3J1ZW4KKyAgICAgeWVsbG93ICAgIFRleHRmYXJiZSBnZWxiCisgICAgIGJsdWUgICAgICBUZXh0ZmFyYmUgYmxhdQorICAgICBwdXJwbGUgICAgVGV4dGZhcmJlIHB1cnB1cgorICAgICBjeWFuICAgICAgVGV4dGZhcmJlIGN5YW4KKyAgICAgd2hpdGUgICAgIFRleHRmYXJiZSB3ZWlzcworICAgICBiYmxhY2sgICAgSGludGVyZ3J1bmRmYXJiZSBzY2h3YXJ6CisgICAgIGJyZWQgICAgICBIaW50ZXJncnVuZGZhcmJlIHJvdAorICAgICBiZ3JlZW4gICAgSGludGVyZ3J1bmRmYXJiZSBncnVlbgorICAgICBieWVsbG93ICAgSGludGVyZ3J1bmRmYXJiZSBnZWxiCisgICAgIGJibHVlICAgICBIaW50ZXJncnVuZGZhcmJlIGJsYXUKKyAgICAgYnB1cnBsZSAgIEhpbnRlcmdydW5kZmFyYmUgcHVycHVyCisgICAgIGJjeWFuICAgICBIaW50ZXJncnVuZGZhcmJlIGN5YW4KKyAgICAgYndoaXRlICAgIEhpbnRlcmdydW5kZmFyYmUgd2Vpc3MKKworIEJFSVNQSUVMRToKKworICAgID4gbHMgLWwKKyAgICA+IGxzIC1hIC9kb2MKKworICAgIFZlcnplaWNobmlzc2UgaW4gRmV0dHNjaHJpZnQgYW56ZWlnZW4sIGdlbGFkZW5lIERhdGVpZW4gcm90IGF1ZiBnZWxiZW0KKyAgICBIaW50ZXJncnVuZDoKKworICAgID4gc2V0IExTX0RJUiBib2xkCisgICAgPiBzZXQgTFNfT0JKIHJlZCtieWVsbG93CisKKyBTSUVIRSBBVUNIOgorICAgIGNkLCBwd2QsIHNldCwgc3R0eQorCisgTEVUWlRFIEFFTkRFUlVORzoKKyAgICBNaXQsIDAyLjEwLjIwMDIsIDAyOjAwOjAwIHZvbiBNYW5kcmFnb24KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9kb2MvbWNtZC9tYW4gYi9kb2MvbWNtZC9tYW4KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMzEzMGFkNQotLS0gL2Rldi9udWxsCisrKyBiL2RvYy9tY21kL21hbgpAQCAtMCwwICsxLDYxIEBACisKK21hbgorLS0tCisKKyBNQUdJRVJLT01NQU5ETzoKKyAgICBtYW4gWy1pXSA8bmFtZS9udW1tZXI+CisgICAgbWFuIFstaV0gPG5hbWU+IFtudW1tZXJdCisgICAgbWFuIFstbWldIDxtYXNrZT4KKyAgICBtYW4gWy1yaV0gPG1hc2tlPgorCisgQVJHVU1FTlRFOgorCisgICAgIDxuYW1lPiBbLi4uXSAgIE5hbWUgZGVyIGdld3VlbnNjaHRlbiBIaWxmZXNlaXRlCisgICAgIDxtYXNrZT4gICAgICAgIFdvcnR0ZWlsIGVpbmVyIEhpbGZlc2VpdGUgKGthbm4gKiB1bmQgPyBlbnRoYWx0ZW4pCisgICAgIDxbbnVtbWVyXT4JICAgIE51bW1lciBlaW5lciB2b24gbWVocmVyZW4gSGlsZnNzZWl0ZW4KKworIEJFU0NIUkVJQlVORzoKKyAgICBJbSBIaWxmZXZlcnplaWNobmlzIChgL2RvYycpIHdpcmQgbmFjaCBkZXIgZW50c3ByZWNoZW5kZW4gSGlsZmVzZWl0ZQorICAgIGdlc3VjaHQgdW5kIGRpZXNlIGRhbm4gYW5nZXplaWd0LgorCisgICAgV2VubiBkZXIgUGFyYW1ldGVyIC1tIHZlcndlbmRldCB3dXJkZSwgZGFubiB3ZXJkZW4gYWxsZSBIaWxmZXNlaXRlbgorICAgIGF1ZmdlbGlzdGV0LCBkZXJlbiBOYW1lIGRpZSBNYXNrZSBlbnRoYWVsdC4KKworICAgIERlciBQYXJhbWV0ZXIgLXIgZXJtb2VnbGljaHQgZXMsIGVpbmVuIEF1c2RydWNrIGltIFJlZ2V4cC1Gb3JtYXQKKyAgICBhbnp1Z2ViZW4uCisKKyAgICBNaXQgSGlsZmUgZGVyIE51bW1lciBrYW5uIG1hbiBzaWNoIGRhcyBnZW5hdWUgQXVzc2NocmVpYmVuIGVpbmVyCisgICAgYmVzdGltbXRlbiBIaWxmc3NlaXRlIGJlaSBkZXIgQW56ZWlnZSBtZWhyZXJlIHNwYXJlbi4KKworICAgIERpZSBPcHRpb24gLWkgKGludGVyYWt0aXZlciBIVE1MLU1vZHVzKSBpc3QgenVyIFplaXQgbmljaHQgYWt0aXZpZXJ0LgorCisgQUNIVFVORzoKKworICAgIE5hY2ggZGVtIEVpbnNwaWVsZW4gdm9uIG5ldWVuIE1BTi1TZWl0ZW4gbXVzcyBkZXIgYmV0cmVmZmVuZGUgTWFnaWVyCisgICAgcGVyICd4Y2FsbCAvcC9kYWVtb24vbWFuZC0+dXBkYXRlX2NhY2hlKCknIGRlbiBDYWNoZSBha3R1YWxpc2llcmVuLgorICAgIERpZXNlciB3aXJkIGF1dG9tYXRpc2NoIG51ciB3b2VjaGVudGxpY2ggYWt0dWFsaXNpZXJ0LgorCisgQkVJU1BJRUxFOgorICAgIEVpbmUgZWluZmFjaGUgSGlsZmVzZWl0ZSAobmFlbWxpY2ggZGllc2UpOgorCisgICAgPiBtYW4gbWFuCisKKyAgICBXZWxjaGUgSGlsZmVzZWl0ZW4gaGFiZW4gZXR3YXMgbWl0IEhhZW5kZW4genUgdHVuPworCisgICAgPiBtYW4gLW0gKmhhbmRzKgorCisgICAgV2VsY2hlIEhpbGZlc3NlaXRlbiBzYWdlbiB1bnMgZXR3YXMgdWViZXIgV2FmZmVuPworCisgICAgPiBtYW4gd2FmZmVuCisgICAgICBFcyB3dXJkZW4gZm9sZ2VuZGUgcG90ZW50aWVsbCBwYXNzZW5kZW4gU2VpdGVuIGdlZnVuZGVuOgorICAgICAgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAgICAgIDE6IGhlbHAvd2FmZmVuZmVydGlna2VpdGVuIDI6IHN0ZC93ZWFwb24gMzogd2l6L3dhZmZlbgorICAgICAgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAgICA+IG1hbiAzIE9ERVIJPiBtYW4gd2l6L3dhZmZlbiBPREVSCT4gbWFuIHdhZmZlbiAzCisgICAgICBbQW56ZWlnZSB2b24gL3dpei93YWZmZW5dCisKKyBTSUVIRSBBVUNIOgorICAgIGhpbGZlIHJtYW4KKworIExFVFpURSBBRU5ERVJVTkc6CisgICAgMjAuIE1hZXJ6IDIwMDQgR2xvaW5zb24KZGlmZiAtLWdpdCBhL2RvYy9tY21kL21iYW5pc2ggYi9kb2MvbWNtZC9tYmFuaXNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmMxZjU3NTQKLS0tIC9kZXYvbnVsbAorKysgYi9kb2MvbWNtZC9tYmFuaXNoCkBAIC0wLDAgKzEsMzEgQEAKKworbWJhbmlzaAorLS0tLS0tLQorCisgRVJaTUFHSUVSS09NTUFORE86CisgICAgbWJhbmlzaCA8bmFtZT4gWzxncnVuZD5dCisKKyBBUkdVTUVOVEU6CisKKyAgICAgPG5hbWU+CisgICAgICAgIE5hbWUgZGVzIE9wZmVycworICAgICA8Z3J1bmQ+IChvcHRpb25hbCkKKyAgICAgICAgRGVyIEdydW5kIGRlciBTcGVycmUKKworIEJFU0NIUkVJQlVORzoKKyAgICBNaXQgZGllc2VtIEJlZmVobCBsYWVzc3Qgc2ljaCB2ZXJoaW5kZXJuLCBkYXNzIGRlciBTcGllbGVyIDxuYW1lPiB2b24KKyAgICBiZWxpZWJpZ2VuIE1hZ2llcm4gZ2VzcG9uc29ydCAoZC5oLiB6dW0gTWFnaWVyIGdlbWFjaHQpIHdlcmRlbiBrYW5uIChhdXMKKyAgICB3ZWxjaGVtIDxncnVuZD4gYXVjaCBpbW1lcikuCisKKyAgICBOdXIgZWluIEVyem1hZ2llciBvZGVyIEdvdHQga2FubiBpbiBkaWVzZW0gRmFsbCBlaW4gU3BvbnNvcmluZyB2b3JuZWhtZW4uCisKKyAgICBNaXQgZGVtIEdydW5kICdsb2VzY2hlbicga29lbm5lbiBnZXNwZXJydGUgTmFtZW4gd2llZGVyIGZyZWlnZWdlYmVuIHdlcmRlbi4KKyAgICBPaG5lIFBhcmFtZXRlciB3aXJkIGRpZSBMaXN0ZSBhbGxlciBnZXNwZXJydGVuIE5hbWVuIGF1c2dlZ2ViZW4uCisKKyAgICBEaWVzZXIgQmVmZWhsIGthbm4gbnVyIHZvbiBFcnptYWdpZXJuIHVuZCBHb2V0dGVybiBhdXNnZWZ1ZWhydCB3ZXJkZW4uCisKKyBTSUVIRSBBVUNIOgorICAgIGJhbmlzaCwgdGJhbmlzaCwgc2JhbmlzaAorCisgTEVUWlRFIEFlTkRFUlVORzoKKyAgICBNb24sIDIwLjEyLjE5OTksIDIzOjMwOjAwIHZvbiBUaWFtYWsKZGlmZiAtLWdpdCBhL2RvYy9tY21kL21lY2hvIGIvZG9jL21jbWQvbWVjaG8KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNTY5ZDc4MAotLS0gL2Rldi9udWxsCisrKyBiL2RvYy9tY21kL21lY2hvCkBAIC0wLDAgKzEsMjIgQEAKKworbWVjaG8KKy0tLS0tCisKKyBNQUdJRVJLT01NQU5ETzoKKyAgICBtZWNobyA8dGV4dD4KKworIEFSR1VNRU5URToKKworICAgICA8dGV4dD4KKyAgICAgICAgZWluIGJlbGllYmlnZXIgVGV4dAorCisgQkVTQ0hSRUlCVU5HOgorICAgIERlciBUZXh0IDx0ZXh0PiB3aXJkIGFuIGFsbGUgTWFnaWVyIGltIE1VRCBnZXNjaGlja3QuCisKKyAgICBEZXIgQmVmZWhsIHNvbGx0ZSBtaXQgZ3JvZXNzdGVyIFNvcmdmYWx0IGJlaGFuZGVsdCB3ZXJkZW4uCisKKyBTSUVIRSBBVUNIOgorICAgIHZlcnRyYWcsIGVtb3RlLCBlY2hvLCBlY2hvYWxsLCBlY2hvdG8sIHRlaWxlIChtaXQpCisKKyBMRVRaVEUgQWVOREVSVU5HOgorICAgIFR1ZSwgMDIuMDkuMTk5NywgMTY6NTQ6NTcgdm9uIFdhcmdvbgpkaWZmIC0tZ2l0IGEvZG9jL21jbWQvbWtkaXIgYi9kb2MvbWNtZC9ta2RpcgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5mMDYxNWRjCi0tLSAvZGV2L251bGwKKysrIGIvZG9jL21jbWQvbWtkaXIKQEAgLTAsMCArMSw0MyBAQAorCitta2RpcgorLS0tLS0KKworIE1BR0lFUktPTU1BTkRPOgorICAgIG1rZGlyIFstdnJdIDx2ZXJ6PiBbLi4uXQorCisgQVJHVU1FTlRFOgorCisgICAgIDx2ZXJ6PiBbLi4uXQorICAgICAgICBOYW1lIGRlcyBuZXVlbiBWZXJ6ZWljaG5pc3NlcyAoZXMga29lbm5lbiBhdWNoIG1laHJlcmUgc2VpbikKKworIEJFU0NIUkVJQlVORzoKKyAgICBEaWUgYW5nZWdlYmVuZW4gVmVyemVpY2huaXNzZSB3ZXJkZW4gbmV1IGFuZ2VsZWd0LgorCisgICAgRGllIEZsYWdzIGhhYmVuIGZvbGdlbmRlIEJlZGV1dHVuZzoKKworICAgIC12ICBHZW5hdSBhdXNnZWJlbiwgd2FzIGdlbWFjaHQgd2lyZAorICAgIC1yICBSZWt1cnNpdiBkaWUgT0JFUnZlcnplaWNobmlzc2Ugdm9uIDx2ZXJ6PiBtaXRhbmxlZ2VuLCB3ZW5uIHNpZSBuaWNodAorICAgICAgICBzY2hvbiBleGlzdGllcmVuLgorICAgIC1wICBEYXMgZ2xlaWNoZSB3aWUgLXIgKGFsaWFzIGVpbmdlZnVlaHJ0LCB3ZWlsIC1wIGVpbmZhY2ggdmllbAorICAgICAgICB2ZXJicmVpdGV0ZXIgaXN0KS4KKyAKKyBCRUlTUElFTEU6CisKKyAgICA+IG1rZGlyIG5ldworCisgICAgU29sbCBqZXR6dCBpbiBgbmV3Lycgbm9jaCBkYXMgVmVyemVpY2huaXMgYGZvby9iYXIvJyBhbmdlbGVndCB3ZXJkZW4sIHNvCisgICAgZGFyZiBtYW4gbmljaHQgZm9sZ2VuZGVuIEF1ZnJ1ZiB2ZXJ3ZW5kZW4KKworICAgID4gbWtkaXIgbmV3L2Zvby9iYXIgICAgICA7IFNvIG5pY2h0IQorCisgICAgc29uZGVybiBrb2VubnRlIHouQiBmb2xnZW5kZXJtYXNzZW4gdm9yZ2VoZW46CisKKyAgICA+IG1rZGlyIG5ldy9mb28gbmV3L2Zvby9iYXIgICAgICAgICAgIG9kZXIKKyAgICA+IG1rZGlyIC1yIC9uZXcvZm9vL2JhcgorCisgU0lFSEUgQVVDSDoKKyAgICBybWRpcgorCisgTEVUWlRFIEFFTkRFUlVORzoKKyAgICAyNi4wMS4yMDEzLCBaZXNzdHJhCisKZGlmZiAtLWdpdCBhL2RvYy9tY21kL21vcmUgYi9kb2MvbWNtZC9tb3JlCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjFlYzY3NWIKLS0tIC9kZXYvbnVsbAorKysgYi9kb2MvbWNtZC9tb3JlCkBAIC0wLDAgKzEsNDIgQEAKKworbW9yZQorLS0tLQorCisgTUFHSUVSS09NTUFORE86CisgICAgbW9yZSA8ZGF0ZWk+IFsuLi5dCisKKyBBUkdVTUVOVEU6CisKKyAgICAgPGRhdGVpPiBbLi4uXQorICAgICAgICBEYXRlaW5hbWUobikKKworIEJFU0NIUkVJQlVORzoKKyAgICBEaWUgRGF0ZWkoZW4pIDxkYXRlaT4gd2lyZC93ZXJkZW4gc3R1ZWNrY2hlbndlaXNlIGFuZ2V6ZWlndC4gTmFjaCBqZWRlcgorICAgIGF1c2dlZ2ViZW5lbiBTZWl0ZSB3aXJkIGdlc3RvcHB0IHVuZCBlcyBrb2VubmVuIHZlcnNjaGllZGVuZSBBa3Rpb25lbgorICAgIGR1cmNoZ2VmdWVocnQgd2VyZGVuOgorCisgICAgIDxSRVRVUk4+LCBmLCBGCisgICAgICAgICAgICAgICBFaW5lIFNlaXRlIHZvcndhZXJ0cworICAgICBkLCBEICAgICAgRWluZSBoYWxiZSBTZWl0ZSB2b3J3YWVydHMKKyAgICAgdSwgVSAgICAgIEVpbmUgaGFsYmUgU2VpdGUgenVydWVjaworICAgICBiLCBCICAgICAgRWluZSBTZWl0ZSB6dXJ1ZWNrCisgICAgIDx6ZWlsZT4gICBTcHJpbmdlIHp1IFplaWxlIDx6ZWlsZT4KKyAgICAgPyAgICAgICAgIEhpbGZldGV4dCBhdXNnZWJlbgorICAgICBxLCB4ICAgICAgQW56ZWlnZSBkZXIgYWt0dWVsbGVuIERhdGVpIGFiYnJlY2hlbgorICAgICAvPHJlZ2V4cD4KKyAgICAgICAgICAgICAgIHJlZ3VsYWVyZW4gQXVzZHJ1Y2sgPHJlZ2V4cD4gc3VjaGVuCisKKyAgICBEaWUgRGF0ZWluYW1lbiBrb2VubmVuIGF1Y2ggTXVzdGVyIHdpZSAqIG9kZXIgPyBlbnRoYWx0ZW4uCisKKyAgICBEaWUgTGFlbmdlIGVpbmVyIFNlaXRlIGthbm4gbWFuIG1pdCBkZW0gQmVmZWhsIGB6ZWlsZW4nIGVpbnN0ZWxsZW4uCisKKyBCRUlTUElFTEU6CisKKyAgICA+IG1vcmUgL3N0ZC9ucGMuYworICAgID4gbW9yZSAqLmgKKworIFNJRUhFIEFVQ0g6CisgICAgY2F0LCBoZWFkLCB0YWlsLCB6ZWlsZW4KKworIExFVFpURSBBZU5ERVJVTkc6CisgICAgVGh1LCAyNC4wNy4xOTk3LCAwOTowMDowMCB2b24gV2FyZ29uCmRpZmYgLS1naXQgYS9kb2MvbWNtZC9tc2NoYXUgYi9kb2MvbWNtZC9tc2NoYXUKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNWRkMjZhMQotLS0gL2Rldi9udWxsCisrKyBiL2RvYy9tY21kL21zY2hhdQpAQCAtMCwwICsxLDQwIEBACisKK21zY2hhdQorLS0tLS0tCisKKyBNQUdJRVJLT01NQU5ETzoKKyAgICBtc2NoYXUgPHNjaGFsdGVyPgorCisgQVJHVU1FTlRFOgorCisgICAgIDxzY2hhbHRlcj4KKyAgICAgICAgJ2FuJywgJ2Vpbicgb2RlciAnamEnIHNjaGFsdGV0IGRlbiBNYWdpZXJtb2R1cyBlaW4KKyAgICAgICAgJ2F1cycgb2RlciAnbmVpbicgc2NoYWx0ZXQgZGVuIE1hZ2llcm1vZHVzIGF1cworICAgICAgICAnK2RlYnVnJyBzY2hhbHRldCBEZWJ1Z21lbGR1bmdlbiBlaW4KKyAgICAgICAgJy1kZWJ1Zycgc2NoYWx0ZXQgRGVidWdtZWxkdW5nZW4gYXVzCisKKyBCRVNDSFJFSUJVTkc6CisgICAgTWFuY2htYWwgbW9lY2h0ZSBtYW4gZXR3YXMgYXVzcHJvYmllcmVuLCB3YXMgbnVyIFNwaWVsZXJuIG1vZWdsaWNoIGlzdCwKKyAgICB6dW0gQmVpc3BpZWwgYmVpbSBUZXN0ZW4gdm9uIEFiZW50ZXVlcm4gby5hZS4gRGF6dSBkaWVudCBkaWVzZXIgQmVmZWhsLAorICAgIG1pdCBkZW0gbWFuIGRpZSBtZWlzdGVuIEZhZWhpZ2tlaXRlbiBlaW5lcyBNYWdpZXJzIGRlYWt0aXZpZXJlbiBrYW5uLgorCisgICAgTmFjaCBlaW5lbSBgbXNjaGF1IGF1cycgc2llaHQgbWFuIGtlaW5lIERhdGVpbmFtZW4gbWVociB2b24gUmFldW1lbiB1bmQKKyAgICBPYmpla3Rlbi4gRGllIG1laXN0ZW4gTWFnaWVyYmVmZWhsZSBzaW5kIGFiZ2VzY2hhbHRldCB1bmQgbWFuIGthbm4gYXVjaAorICAgIHdpZWRlciBzdGVyYmVuIHdpZSBlaW4gbm9ybWFsZXIgU3BpZWxlci4KKworICAgIE1pdCBgbXNjaGF1IGFuJyBrZWhydCBtYW4gd2llZGVyIGluIGRlbiBNYWdpZXJtb2R1cyB6dXJ1ZWNrLgorCisgICAgWnVzYWV0emxpY2gga2FubiBkaWVzZXMgS29tbWFuZG8gbm9jaCB1bXNjaGFsdGVuLCBvYiBNYWdpZXIgRGVidWdtZWxkdW5nZW4KKyAgICAoZGFzIHNpbmQgTWVsZHVuZ2VuLCBkaWUgbWl0IGRlbSBUeXAgTVRfREVCVUcgYW4gUmVjZWl2ZU1zZygpIHVlYmVyZ2ViZW4KKyAgICAgd2VyZGVuKSB3YWhybmVobWVuIG1vZWNodGVuIG9kZXIgbmljaHQuCisKKyBCRU1FUktVTkdFTjoKKyAgICBBdWNoIG1pdCBhdXNnZXNjaGFsdGV0ZW0gTWFnaWVybW9kdXMgdW50ZXJsaWVndCBtYW4gbm9jaCBkZW4gQmVkaW5ndW5nZW4KKyAgICBkZXMgTWFnaWVydmVydHJhZ3MhCisKKyBTSUVIRSBBVUNIOgorICAgIHZlcnRyYWcsIHNjaGF1IChhbiksIGkgKD1pbnZlbnR1cikKKworIExFVFpURSBBZU5ERVJVTkc6CisgICAgMS41LjIwMTQsIFplc3N0cmEKKwpkaWZmIC0tZ2l0IGEvZG9jL21jbWQvbXYgYi9kb2MvbWNtZC9tdgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4zMmM1MzY4Ci0tLSAvZGV2L251bGwKKysrIGIvZG9jL21jbWQvbXYKQEAgLTAsMCArMSw1MSBAQAorCittdgorLS0KKworIE1BR0lFUktPTU1BTkRPOgorICAgIG12IFsgLWlyZnYgXSAgPGFsdD4gPG5ldT4KKyAgICBtdiBbIC1pcmZ2IF0gIDx2b25fMT4gWyAuLi4gPHZvbl9uPiBdIDxuYWNoPgorICAgIG12IFsgLWlyZnZtIF0gPHZvbl8xPiBbIC4uLiA8dm9uX24+IF0gPG5hY2g+IDxtYXNrZT4KKworIEFSR1VNRU5URToKKworICAgICA8YWx0PiAgICBBbHRlciBEYXRlaS0gb2RlciBWZXJ6ZWljaG5pc25hbWUKKyAgICAgPG5ldT4gICAgTmV1ZXIgRGF0ZWktIG9kZXIgVmVyemVpY2huaXNuYW1lCisgICAgIDx2b25fMT4KKyAgICAgPHZvbl9uPiAgTmFtZSBkZXIgUXVlbGxkYXRlaWVuIHVuZCAtdmVyemVpY2huaXNzZQorICAgICA8bmFjaD4gICBEYXMgWmllbHZlcnplaWNobmlzCisgICAgIDxtYXNrZT4gIERhdGVpbWFza2UgZnVlciBEYXRlaS0gb2RlciBWZXJ6ZWljaG5pc25hbWVuCisKKyBCRVNDSFJFSUJVTkc6CisgICAgTWl0IGRlbSBlcnN0ZW4gQXVmcnVmIHdpcmQgZGllIERhdGVpIGJ6dy4gZGFzIFZlcnplaWNobmlzIDxhbHQ+IGluIDxuZXU+CisgICAgdW1iZW5hbm50LgorCisgICAgTWl0IGRlbSB6d2VpdGVuIEF1ZnJ1ZiB3ZXJkZW4gZGllIFF1ZWxsZGF0ZWllbiA8dm9uXzE+IGJpcyA8dm9uX24+IGluIGRhcworICAgIFppZWx2ZXJ6ZWljaG5pcyA8dmVyej4gdmVyc2Nob2Jlbi4KKworICAgIEluIGRlciB6d2VpdGVuIFZhcmlhbnRlIGtvZW5uZW4gZGllIERhdGVpbmFtZW4gYXVjaCBNdXN0ZXIgd2llICogb2RlciA/CisgICAgZW50aGFsdGVuLgorCisgICAgRGllIE9wdGlvbmVuIGhhYmVuIGZvbGdlbmRlIEJlZGV1dHVuZzoKKworICAgICAtaSAgVm9yIGRlbSBVZWJlcnNjaHJlaWJlbiBlaW5lciBleGlzdGllcmVuZGVuIERhdGVpIHdpcmQgZWluZQorICAgICAgICAgU2ljaGVyaGVpdHNhYmZyYWdlIGR1cmNoZ2VmdWVocnQuCisgICAgIC1yICBFcyB3ZXJkZW4gcmVrdXJzaXYgVW50ZXJ2ZXJ6ZWljaG5pc3NlIHZlcnNjaG9iZW4sIGZhbGxzIGRhcworICAgICAgICAgWmllbHZlcnplaWNobmlzIHNjaG9uIGV4aXN0aWVydAorICAgICAtZiAgRXZ0bC4gYXVmdHJldGVuZGUgUHJvYmxlbWUsIGRpZSBzb25zdCBlaW5lbiBBYmJydWNoIGJld2lya2VuIHd1ZXJkZW4sCisgICAgICAgICB3ZXJkZW4gaWdub3JpZXJ0LiBBdWNoIGAtaScgd2lyZCBhdXNzZXIgS3JhZnQgZ2VzZXR6dC4KKyAgICAgLXYgIEVzIHdpcmQgZGV0YWlsbGllcnQgYXVzZ2VnZWJlbiwgd2FzIGdlbWFjaHQgd2lyZAorICAgICAtbSAgRXMgd2VyZGVuIG51ciBEYXRlaWVuIHZlcnNjaG9iZW4sIGRpZSBkZW0gTXVzdGVyIDxtYXNrZT4gZW50c3ByZWNoZW4KKworIEJFSVNQSUVMRToKKworICAgID4gbXYgZGF0ZWkxIGRhdGVpMgorICAgID4gbXYgKiB0ZW1wCisgICAgPiBtdiAvcGxheWVycy9oYXRlLyouYyAuLi90ZXN0CisgICAgPiBtdiAtaWZybSB+bWFuZHJhZ29uL21lbG9yYW4gL2QvaW5zZWxuL21hbmRyYWdvbi9tZWxvcmFuICouYworCisgU0lFSEUgQVVDSDoKKyAgICBjcCwgcm0KKworIExFVFpURSBBRU5ERVJVTkc6CisgICAgRG9uLCAwMy4xMC4yMDAyLCAxODowMDowMCB2b24gTWFuZHJhZ29uCmRpZmYgLS1naXQgYS9kb2MvbWNtZC9vcm9wYXggYi9kb2MvbWNtZC9vcm9wYXgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNjZiYzFiMgotLS0gL2Rldi9udWxsCisrKyBiL2RvYy9tY21kL29yb3BheApAQCAtMCwwICsxLDMwIEBACisKK29yb3BheAorLS0tLS0tCisKKyBNQUdJRVJLT01NQU5ETzoKKyAgICBvcm9wYXggWzxzdHVmZT5dCisKKyBBUkdVTUVOVEU6CisKKyAgICAgPHN0dWZlPiAob3B0aW9uYWwpCisgICAgICAgIE1hZ2llcmxldmVsLCBhYiBkZW0gUnVmZSBkdXJjaGdlbGFzc2VuIHdlcmRlbgorCisgQkVTQ0hSRUlCVU5HOgorICAgIER1IHN0ZWNrc3QgRGlyIE9yb3BheCBpbiBkaWUgT2hyZW4uIE51biBrYW5uc3QgRHUgbmljaHRzIG1laHIgaG9lcmVuLCB3YXMKKyAgICBnZXJ1ZmVuLCBnZXNhZ3Qgb2RlciBEaXIgbWl0Z2V0ZWlsdCB3aXJkLiBEYXMgZ2lsdCBhbGxlcmRpbmdzIG51ciBmdWVyCisgICAgTGV1dGUgbWl0IGVpbmVtIE1hZ2llcmxldmVsLCBkZXIga2xlaW5lciBpc3QgYWxzIDxzdHVmZT4uCisKKyAgICBEaWUgaG9lY2hzdG1vZWdsaWNoZSBTdHVmZSBpc3QgRGVpbiBlaWdlbmVyIE1hZ2llcmxldmVsLgorCisgICAgUnVmc3QgRHUgZGVuIEJlZmVobCBvaG5lIEFyZ3VtZW50IGF1Ziwgd2lyZCBkYXMgT3JvcGF4IHdpZWRlciBlbnRmZXJudC4KKworICAgIEF1ZiBkaWUgS29tbXVuaWthdGlvbiB1ZWJlciBkaWUgRWJlbmVuIHdpcmt0IGRhcyBPcm9wYXggbmljaHQsIGRhIGRpZXNlCisgICAgQXJ0IGRlciBLb21tdW5pa2F0aW9uIGF1ZiBnZWlzdGlnZXIgRWJlbmUgdmVybGFldWZ0IHVuZCBuaWNodCB1ZWJlciBkZW4KKyAgICBHZWhvZXJnYW5nLgorCisgU0lFSEUgQVVDSDoKKyAgICBpZ25vcmllcmUKKworIExFVFpURSBBZU5ERVJVTkc6CisgICAgVGh1LCAyNC4wNy4xOTk3LCAwOTowMDowMCB2b24gV2FyZ29uCmRpZmYgLS1naXQgYS9kb2MvbWNtZC9wZW9wbGUgYi9kb2MvbWNtZC9wZW9wbGUKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYjVhZGVlZAotLS0gL2Rldi9udWxsCisrKyBiL2RvYy9tY21kL3Blb3BsZQpAQCAtMCwwICsxLDMwIEBACisKK3Blb3BsZQorLS0tLS0tCisKKyBNQUdJRVJLT01NQU5ETzoKKyAgICBwZW9wbGUKKworIEFSR1VNRU5URToKKyAgICBrZWluZQorCisgQkVTQ0hSRUlCVU5HOgorICAgIERpZXNlcyBLb21tYW5kbyBsaXN0ZXQgSW5mb3JtYXRpb25lbiB1ZWJlciBhbGxlIGVpbmdlbG9nZ3RlbiBTcGllbGVyIHVuZAorICAgIE1hZ2llciBhdWY6CisKKyAgICAgKiB2b24gd2VsY2hlciBJbnRlcm5ldG51bW1lciBzaWUga29tbWVuCisgICAgICogZGVuIGFrdHVlbGxlbiBOYW1lbi4KKyAgICAgKiBkZW4gTWFnaWVybGV2ZWwKKyAgICAgKiBkYXMgQWx0ZXIKKyAgICAgKiBJZGxlIGZsYWcgYEknLCB3ZW5uIGRlciBTcGllbGVyIGxhZW5nZXIgYWxzIDUgTWludXRlbiBuaWNodHMgbWVocgorICAgICAgIGdlbWFjaHQgaGF0CisgICAgICogd28gZXIgaXN0CisKKyAgICBBdXNzZXJkZW0gd2lyZCBkaWUgQW56YWhsIGRlciBha3RpdmVuIFNwaWVsZXIsIGRpZSBBbnphaGwgZGVyIEtvbW1hbmRvcworICAgIHBybyBTZWt1bmRlIHVuZCBkaWUgQW56YWhsIGRlciBrb21waWxpZXJ0ZW4gWmVpbGVuIHBybyBTZWt1bmRlIGFuZ2V6ZWlndC4KKworIFNJRUhFIEFVQ0g6CisgICAgd2VyLCBwd2hvCisKKyBMRVRaVEUgQWVOREVSVU5HOgorICAgIFRodSwgMjQuMDcuMTk5NywgMDk6MDA6MDAgdm9uIFdhcmdvbgpkaWZmIC0tZ2l0IGEvZG9jL21jbWQvcGluZyBiL2RvYy9tY21kL3BpbmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOWRhZjdiMwotLS0gL2Rldi9udWxsCisrKyBiL2RvYy9tY21kL3BpbmcKQEAgLTAsMCArMSwxOSBAQAorCitwaW5nCistLS0tCisKKyBNQUdJRVJLT01NQU5ETzoKKyAgICBwaW5nIDxzcGllbGVyPgorCisgQVJHVU1FTlRFOgorCisgICAgIDxzcGllbGVyPgorICAgICAgICBlaW4gKGVpbmdlbG9nZ3RlcikgU3BpZWxlcgorCisgQkVTQ0hSRUlCVU5HOgorICAgIERlciBTcGllbGVyIDxzcGllbGVyPiB3aXJkIGFuZ2VwaWVwdC4gRGFiZWkgd2lyZCBiZWkgZGVtIFNwaWVsZXIgZWluZQorICAgIE1lbGR1bmcgdW5kLCBmYWxscyBzZWluIFJlY2huZXIgZGllcyB1bnRlcnN0dWV0enQsIGVpbiBTaWduYWx0b24KKyAgICBhdXNnZWdlYmVuLgorCisgTEVUWlRFIEFlTkRFUlVORzoKKyAgICBUaHUsIDI0LjA3LjE5OTcsIDA5OjAwOjAwIHZvbiBXYXJnb24KZGlmZiAtLWdpdCBhL2RvYy9tY21kL3Byb21wdCBiL2RvYy9tY21kL3Byb21wdApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5lYjliMGRlCi0tLSAvZGV2L251bGwKKysrIGIvZG9jL21jbWQvcHJvbXB0CkBAIC0wLDAgKzEsNDMgQEAKKworcHJvbXB0CistLS0tLS0KKworIE1BR0lFUktPTU1BTkRPOgorICAgIHByb21wdCBbPHRleHQ+XQorCisgQVJHVU1FTlRFOgorCisgICAgIDx0ZXh0PiAob3B0aW9uYWwpCisgICAgICAgIGVpbiBiZWxpZWJpZ2VyIFRleHQKKworIEJFU0NIUkVJQlVORzoKKyAgICBEaWUgRWluZ2FiZWF1ZmZvcmRlcnVuZyAoInByb21wdCIpIHdpcmQgYXVmIGRpZSBhbmdlZ2ViZW5lIE1lbGR1bmcgPHRleHQ+CisgICAgZ2VzZXR6dC4KKworICAgIE9obmUgQXJndW1lbnRlIHdpcmQgZGFzIERlZmF1bHRwcm9tcHQgKGA+ICcpIGVpbmdlc3RlbGx0LgorCisgICAgVW0gTGVlcnplaWNoZW4gYW4gQW5mYW5nIHVuZCBFbmRlIGRlcyBQcm9tcHRzIHp1IGVybW9lZ2xpY2hlbiwga2FubiA8dGV4dD4KKyAgICBpbiBBbmZ1ZWhydW5nc3plaWNoZW4gZ2VzZXR6dCB3ZXJkZW4uIEF1c3NlcmRlbSBnaWJ0IGVzIG5vY2ggZm9sZ2VuZGUKKyAgICBiZXNvbmRlcmUgWmVpY2hlbmZvbGdlbjoKKworICAgICBcaCAgd2lyZCBkdXJjaCBkZW4gTmFtZW4gZGVzIE11ZHMgZXJzZXR6dAorICAgICBcdSAgd2lyZCBkdXJjaCBEZWluZW4gTmFtZW4gZXJzZXR6dAorICAgICBcdyAgd2lyZCBkdXJjaCBkYXMgYWt0dWVsbGUgVmVyemVpY2huaXMgZXJzZXR6dAorICAgICBcdCAgd2lyZCBkdXJjaCBkaWUgYWt0dWVsbGUgWmVpdCBlcnNldHp0CisgICAgIFxuICBhbiBkaWVzZXIgU3RlbGxlIHdpcmQgZWluIFplaWxlbnVtYnJ1Y2ggZWluZ2VmdWVndAorCisgQkVJU1BJRUxFOgorCisgICAgPiBwcm9tcHQgIlxoOlx1Olx3PiAiCisKKyAgICBlcmdpYnQgYmVpIFdhcmdvbiwgd2VubiBlciBzaWNoIGluIHNlaW5lbSBIb21ldmVyemVpY2hucyBiZWZpbmRldDoKKworICAgIE1vcmdlbkdyYXVlbjpXYXJnb246L3BsYXllcnMvd2FyZ29uPiBfCisKKyAgICAoZGVyIFVudGVyc3RyaWNoIHNvbGwgZGVuIEN1cnNvciBhbnplaWdlbikKKworIFNJRUhFIEFVQ0g6CisgICAgcHdkCisKKyBMRVRaVEUgQWVOREVSVU5HOgorICAgIE1vbiwgMDguMDIuMTk5OSwgMjI6MTU6MDAgdm9uIFRpYW1hawpkaWZmIC0tZ2l0IGEvZG9jL21jbWQvcHJvdGVjdCBiL2RvYy9tY21kL3Byb3RlY3QKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNTkyODc2YQotLS0gL2Rldi9udWxsCisrKyBiL2RvYy9tY21kL3Byb3RlY3QKQEAgLTAsMCArMSwzMiBAQAorCitwcm90ZWN0CistLS0tLS0tCisKKyBNQUdJRVJLT01NQU5ETzoKKyAgICBwcm90ZWN0IDxwcm9wPgorCisgQVJHVU1FTlRFOgorCisgICAgIDxwcm9wPgorICAgICAgICBOYW1lIGRlciB6dSBzY2h1ZXR6ZW5kZW4gUHJvcGVydHkKKworIEJFU0NIUkVJQlVORzoKKyAgICBEYXMgWnVzdGFuZCBkZXMgUFJPVEVDVEVELUZsYWdzIGRlciBQcm9wZXJ0eSA8cHJvcD4gd2lyZCB1bWdlc2NoYWx0ZXQuCisKKyAgICBNYW4gbXVzcyBkYWJlaSBhbGxlcmRpbmdzIGJlYWNodGVuLCBkYXNzIG1hbiBuaWNodCBkZW4gTmFtZW4gZGVyIFByb3BlcnR5CisgICAgYXVzIGAvc3lzL3Byb3BlcnRpZXMuaCcgdmVyd2VuZGVuIGRhcmYsIHNvbmRlcm4gZGVuIFN0cmluZyBuZWhtZW4gbXVzcywKKyAgICBkZXIgc2ljaCBoaW50ZXIgZGVtIFBfWFlaIHZlcmJpcmd0LgorCisgICAgTWFnaWVyLUxlaHJsaW5nZW4gc3RlaHQgZGllc2VyIEJlZmVobCBub2NoIG5pY2h0IHp1ciBWZXJmdWVndW5nLgorCisgQkVJU1BJRUxFOgorICAgIFdlbm4gRHUgdmVyaGluZGVybiB3aWxsc3QsIGRhc3MgamVtYW5kIGFuZGVyZXMgRGVpbmVuIFRpdGVsIChQX1RJVExFID0KKyAgICAidGl0bGUiKSBhZW5kZXJuIGthbm46CisKKyAgICA+IHByb3RlY3QgdGl0bGUKKworIFNJRUhFIEFVQ0g6CisgICAgYC9zdGQvdGhpbmcvcHJvcGVydGllcy5jJworCisgTEVUWlRFIEFlTkRFUlVORzoKKyAgICBUaHUsIDI0LjA3LjE5OTcsIDA5OjAwOjAwIHZvbiBXYXJnb24KZGlmZiAtLWdpdCBhL2RvYy9tY21kL3B3ZCBiL2RvYy9tY21kL3B3ZApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5iOGQ1ZjQyCi0tLSAvZGV2L251bGwKKysrIGIvZG9jL21jbWQvcHdkCkBAIC0wLDAgKzEsMTggQEAKKworcHdkCistLS0KKworIE1BR0lFUktPTU1BTkRPOgorICAgIHB3ZAorCisgQVJHVU1FTlRFOgorICAgIGtlaW5lCisKKyBCRVNDSFJFSUJVTkc6CisgICAgRGVyIGFrdHVlbGxlIFBmYWQgd2lyZCBhbmdlemVpZ3QuCisKKyBTSUVIRSBBVUNIOgorICAgIGNkLCBwcm9tcHQsIGxzCisKKyBMRVRaVEUgQWVOREVSVU5HOgorICAgIFRodSwgMjQuMDcuMTk5NywgMDk6MDA6MDAgdm9uIFdhcmdvbgpkaWZmIC0tZ2l0IGEvZG9jL21jbWQvcHdobyBiL2RvYy9tY21kL3B3aG8KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNzljZDM4MgotLS0gL2Rldi9udWxsCisrKyBiL2RvYy9tY21kL3B3aG8KQEAgLTAsMCArMSwzNSBAQAorCitwd2hvCistLS0tCisKKyBNQUdJRVJLT01NQU5ETzoKKyAgICBwd2hvCisKKyBBUkdVTUVOVEU6CisgICAga2VpbmUKKworIEJFU0NIUkVJQlVORzoKKyAgICBEaWVzZXMgS29tbWFuZG8gZ2lidCBkaWUgd2ljaHRpZ3N0ZW4gQ2hhcmFrdGVyd2VydGUgYWxsZXIgZWluZ2Vsb2dndGVuCisgICAgU3BpZWxlciB1bmQgU2VoZXIgYXVzLgorCisgICAgQWxzIEluZm9tYXRpb24gZXJoYWVsdCBtYW4KKworICAgICAqIGRlbiBMZXZlbAorICAgICAqIGRlbiBOYW1lbgorICAgICAqIGRpZSBFcmZhaHJ1bmdzcHVua3RlCisgICAgICogZGllIEFiZW50ZXVlcnB1bmt0ZQorICAgICAqIEludGVsbGlnZW56CisgICAgICogS3JhZnQKKyAgICAgKiBHZXNjaGlja2xpY2hrZWl0CisgICAgICogQXVzZGF1ZXIKKyAgICAgKiBBbmdyaWZmc3N0YWVya2UKKyAgICAgKiBBYndlaHJzdGFlcmtlCisgICAgICogQW5ncmlmZnNzdGFlcmtlIG1pdCBibG9zc2VuIEhhZW5kZW4KKyAgICAgKiBtb21lbnRhbmUgTGViZW5zcHVua3RlCisgICAgICogbWF4aW1hbGUgTGViZW5zcHVua3RlCisKKyBTSUVIRSBBVUNIOgorICAgIHdlciwgcGVvcGxlCisKKyBMRVRaVEUgQWVOREVSVU5HOgorICAgIFRodSwgMjQuMDcuMTk5NywgMDk6MDA6MDAgdm9uIFdhcmdvbgpkaWZmIC0tZ2l0IGEvZG9jL21jbWQvcmVtb3ZlZ3VpbGRtYXN0ZXIgYi9kb2MvbWNtZC9yZW1vdmVndWlsZG1hc3RlcgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi43NGNlMzAwCi0tLSAvZGV2L251bGwKKysrIGIvZG9jL21jbWQvcmVtb3ZlZ3VpbGRtYXN0ZXIKQEAgLTAsMCArMSwyNCBAQAorCityZW1vdmVndWlsZG1hc3RlcgorLS0tLS0tLS0tLS0tLS0tLS0KKworIEVSWk1BR0lFUktPTU1BTkRPOgorICAgIHJlbW92ZWd1aWxkbWFzdGVyIDxuYW1lPiA8Z2lsZGU+CisKKyBBUkdVTUVOVEU6CisKKyAgICAgPG5hbWU+CisgICAgICAgIE5hbWUgZGVzIE1hZ2llcnMKKyAgICAgPGdpbGRlPgorICAgICAgICBOYW1lIGRlciBHaWxkZQorCisgQkVTQ0hSRUlCVU5HOgorICAgIERlciBNYWdpZXIgPG5hbWU+IGlzdCBmb3J0YW4gbmljaHQgbWVociBHaWxkZW5tYWdpZXIgZGVyIEdpbGRlIDxnaWxkZT4uCisKKyAgICBEaWVzZXIgQmVmZWhsIHN0ZWh0IG51ciBHb2V0dGVybiB6dXIgVmVyZnVlZ3VuZy4KKworIFNJRUhFIEFVQ0g6CisgICAgYWRkZ3VpbGRtYXN0ZXIsIGdpbGRlbgorCisgTEVUWlRFIEFlTkRFUlVORzoKKyAgICAyMDAzLTEyLTEwLCBab29rLgpkaWZmIC0tZ2l0IGEvZG9jL21jbWQvcmVtb3ZlbWFzdGVyIGIvZG9jL21jbWQvcmVtb3ZlbWFzdGVyCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmI3ZjVkMjMKLS0tIC9kZXYvbnVsbAorKysgYi9kb2MvbWNtZC9yZW1vdmVtYXN0ZXIKQEAgLTAsMCArMSwyNSBAQAorCityZW1vdmVtYXN0ZXIKKy0tLS0tLS0tLS0tLQorCisgRVJaTUFHSUVSS09NTUFORE86CisgICAgcmVtb3ZlbWFzdGVyIDxuYW1lPiA8cmVnaW9uPgorCisgQVJHVU1FTlRFOgorCisgICAgIDxuYW1lPgorICAgICAgICBOYW1lIGRlcyBNYWdpZXJzCisgICAgIDxyZWdpb24+CisgICAgICAgIEVpbmUgUmVnaW9uCisKKyBCRVNDSFJFSUJVTkc6CisgICAgRGVyIE1hZ2llciA8bmFtZT4gd2lyZCB2b24gZGVyIExpc3RlIGRlciBSZWdpb25zbWFnaWVyIGRlciBSZWdpb24gPHJlZ2lvbj4KKyAgICBnZXN0cmljaGVuLgorCisgICAgRGllc2VyIEJlZmVobCBzdGVodCBudXIgRXJ6bWFnaWVybiB1bmQgR29ldHRlcm4genVyIFZlcmZ1ZWd1bmcuCisKKyBTSUVIRSBBVUNIOgorICAgIGFkZG1hc3RlciwgcmVnaW9uZW4KKworIExFVFpURSBBZU5ERVJVTkc6CisgICAgVGh1LCAyNC4wNy4xOTk3LCAwOTowMDowMCB2b24gV2FyZ29uCmRpZmYgLS1naXQgYS9kb2MvbWNtZC9ybSBiL2RvYy9tY21kL3JtCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjgzNzhhMDIKLS0tIC9kZXYvbnVsbAorKysgYi9kb2MvbWNtZC9ybQpAQCAtMCwwICsxLDM1IEBACisKK3JtCistLQorCisgTUFHSUVSS09NTUFORE86CisgICAgcm0gWyAtaXJ2IF0gPGRhdGVpbmFtZT4gWy4uLl0KKyAgICBybSBbIC1pcm12IF0gPGRhdGVpbmFtZT4gWy4uLl0gWzxtYXNrZT5dCisKKyBBUkdVTUVOVEU6CisKKyAgICAgPGRhdGVpbmFtZT4gTmFtZSBlaW5lciBEYXRlaSBvZGVyIGVpbmVzIFZlcnplaWNobmlzc2VzCisgICAgICAgICAgICAgICAgIChlcyBrb2VubmVuIGF1Y2ggbWVocmVyZSBzZWluKQorCisgQkVTQ0hSRUlCVU5HOgorICAgIERpZSBhbmdlZ2ViZW5lbiBEYXRlaWVuIG9kZXIgVmVyemVpY2huaXNzZSB3ZXJkZW4gZ2Vsb2VzY2h0LgorICAgIERpZSBEYXRlaW5hbWVuIGtvZW5uZW4gYXVjaCBNdXN0ZXIgd2llICogb2RlciA/IGVudGhhbHRlbi4KKworICAgIERpZSBPcHRpb25lbiBoYWJlbiBmb2xnZW5kZSBCZWRldXR1bmc6CisKKyAgICAgLXIgIFVudGVydmVyemVpY2huaXNzZSB3ZXJkZW4gcmVrdXJzaXYgZ2Vsb2VzY2h0LgorICAgICAtaSAgQmVpIGplZGVyIERhdGVpIHdpcmQgbmFjaGdlZnJhZ3QsIG9iIHNpZSBnZWxvZXNjaHQgd2VyZGVuIHNvbGwuCisgICAgIC1tICBFcyBzaW5kIG51ciBEYXRlaWVuIGJldHJvZmZlbiwgZGllIGRlciBNYXNrZSA8bWFza2U+IGVudHNwcmVjaGVuCisgICAgIC12ICBFcyB3aXJkIGplZGVyIEFyYmVpdHNzY2hyaXR0IGF1c2dlZ2ViZW4KKworIEJFSVNQSUVMRToKKworICAgID4gcm0gdGVzdDEuYworICAgID4gcm0gKi5iYWsKKyAgICA+IHJtIC1ybSAvICp+ICAgICAKKworIFNJRUhFIEFVQ0g6CisgICAgY3AsIG12CisKKyBMRVRaVEUgQWVOREVSVU5HOgorICAgIFRodSwgMTcuMTAuMjAwMiwgMTY6MzA6MDAgdm9uIE1hbmRyYWdvbgpkaWZmIC0tZ2l0IGEvZG9jL21jbWQvcm1hbiBiL2RvYy9tY21kL3JtYW4KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOTVmNGQ1YQotLS0gL2Rldi9udWxsCisrKyBiL2RvYy9tY21kL3JtYW4KQEAgLTAsMCArMSwyOCBAQAorCitybWFuCistLS0KKworIE1BR0lFUktPTU1BTkRPOgorICAgIHJtYW4gPGhpbGZzc2VpdGU+IDxtdWRuYW1lPgorCisgQVJHVU1FTlRFOgorCisgICAgIDxoaWxmc3NlaXRlPiAgIE5hbWUgZGVyIGdld3VlbnNjaHRlbiBIaWxmZXNlaXRlCisgICAgIDxtdWRuYW1lPiAgICAgIE5hbWUgZWluZXMgYmVrYW5udGVuIE11ZHMKKworIEJFU0NIUkVJQlVORzoKKyAgICBBbiBkYXMgTXVkIDxtdWRuYW1lPiB3aXJkIGVpbmUgQW5mcmFnZSBnZXNjaGlja3QsIG9iIGVzIGVpbmUgSGlsZmUtCisgICAgU2VpdGUgenVtIFRoZW1hIDxoaWxmc3NlaXRlPiBiZXJlaXRzdGVsbGVuIGthbm4uIERpZSBBbnR3b3J0IGlzdAorICAgIHZvbSBNdWQgYWJoYWVuZ2lnLgorCisgQkVJU1BJRUxFOgorICAgCisgICAgSW0gUGstTXVkIGRpZSBIaWxmZXNlaXRlIHp1IFBLcyBhbmZvcmRlcm46CisKKyAgICA+IHJtYW4gcGsgcGstbXVkCisKKyBTSUVIRSBBVUNIOgorICAgIGhpbGZlIG1hbiB1ZHBxCisKKyBMRVRaVEUgQUVOREVSVU5HOgorICAgIERpZSwgMDYuMDYuMjAwMywgMTg6MDA6MDAgdm9uIE1hbmRyYWdvbgpkaWZmIC0tZ2l0IGEvZG9jL21jbWQvcm1kaXIgYi9kb2MvbWNtZC9ybWRpcgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4wMmI0MTgyCi0tLSAvZGV2L251bGwKKysrIGIvZG9jL21jbWQvcm1kaXIKQEAgLTAsMCArMSwyNCBAQAorCitybWRpcgorLS0tLS0KKworIE1BR0lFUktPTU1BTkRPOgorICAgIHJtZGlyIFstdl0gPHZlcno+IFsuLi5dCisKKyBBUkdVTUVOVEU6CisKKyAgICAgPHZlcno+ICBEYXMgenUgbG9lc2NoZW5kZSBWZXJ6ZWljaG5pcyAoZXMga29lbm5lbiBhdWNoIG1laHJlcmUgc2VpbikKKworIEJFU0NIUkVJQlVORzoKKyAgICBEaWUgYW5nZWdlYmVuZW4gVmVyemVpY2huaXNzZSB3ZXJkZW4gZ2Vsb2VzY2h0LiBEaWUgVmVyemVpY2huaXNzZSBtdWVzc2VuCisgICAgZGF6dSBsZWVyIHNlaW4uCisKKyAgICBEYXMgRmxhZyAtdiBzb3JndCBkYWZ1ZXIsIGRhcyBkZXRhaWxsaWVydGUgSW5mb3JtYXRpb25lbiB1ZWJlciBkZW4gRm9ydC0KKyAgICBzY2hyaXR0IGF1c2dlZ2ViZW4gd2VyZGVuLgorCisKKyBTSUVIRSBBVUNIOgorICAgIG1rZGlyLCBybQorCisgTEVUWlRFIEFFTkRFUlVORzoKKyAgICBNaXQsIDAyLjEwLjIwMDIsIDAyOjAwOjAwIHZvbiBNYW5kcmFnb24KZGlmZiAtLWdpdCBhL2RvYy9tY21kL3NhbGxvdyBiL2RvYy9tY21kL3NhbGxvdwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4xODc1MGQyCi0tLSAvZGV2L251bGwKKysrIGIvZG9jL21jbWQvc2FsbG93CkBAIC0wLDAgKzEsMjMgQEAKKworc2FsbG93CistLS0tLS0KKworIE1BR0lFUktPTU1BTkRPOgorICAgIHNhbGxvdyA8bmFtZT4KKworIEFSR1VNRU5URToKKworICAgICA8bmFtZT4KKyAgICAgICAgTmFtZSBlaW5lcyBNYWdpZXJzCisKKyBCRVNDSFJFSUJVTkc6CisgICAgRHUgZXJsYXVic3QgZGVtIE1hZ2llciA8bmFtZT4gRGljaCB6dSBzbm9vcGVuLgorCisgICAgRGllcyBpc3QgbnVyIG5vZXRpZywgd2VubiBlaW4gTWFnaWVyIHZvbiBnbGVpY2hlbSBvZGVyIGdlcmluZ2VyZW0gTGV2ZWwKKyAgICBEaWNoIHNub29wZW4gc29sbC4KKworIFNJRUhFIEFVQ0g6CisgICAgc25vb3AKKworIExFVFpURSBBZU5ERVJVTkc6CisgICAgVGh1LCAyNC4wNy4xOTk3LCAwOTowMDowMCB2b24gV2FyZ29uCmRpZmYgLS1naXQgYS9kb2MvbWNtZC9zYmFuaXNoIGIvZG9jL21jbWQvc2JhbmlzaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5hN2M4NDdmCi0tLSAvZGV2L251bGwKKysrIGIvZG9jL21jbWQvc2JhbmlzaApAQCAtMCwwICsxLDU1IEBACisKK3NiYW5pc2gKKy0tLS0tLS0KKworIE1BR0lFUktPTU1BTkRPOgorICAgIHNiYW5pc2ggPGFkcmVzc2U+IDx0YWdlPgorCisgQVJHVU1FTlRFOgorCisgICAgIDxhZHJlc3NlPgorICAgICAgICBJUC1BZHJlc3NlIGRlcyBPcGZlcnMKKyAgICAgPHRhZ2U+CisgICAgICAgIERpZSBEYXVlciBkZXIgU3BlcnJ1bmcKKworIEJFU0NIUkVJQlVORzoKKyAgICBNaXQgZGllc2VtIEJlZmVobCBrYW5uIG1hbiB2ZXJoaW5kZXJuLCBkYXNzIHNpY2ggdm9uIGJlc3RpbW10ZW4gQWRyZXNzZW4KKyAgICBhdXMgR2Flc3RlIGVpbmxvZ2dlbiBvZGVyIG5ldWUgU3BpZWxlciBhbmdlbGVndCB3ZXJkZW4uLgorICAgIAorICAgIERpZSBEYXVlciB3aXJkIGluIFRhZ2VuIGFuZ2VnZWJlbi4gRWluZSBBbmdhYmUgdm9uIC0xIHNldHp0IGVpbmUgCisgICAgdW5iZWZyaXN0ZXRlIFNwZXJyZTsgbWl0IGVpbmVyIERhdWVyIHZvbiAwIFRhZ2VuIGxvZXNjaHQgbWFuIGVpbmUgZ2VzZXR6dGUgCisgICAgU3BlcnJlLgorCisgICAgRGllIEFuZ2FiZSB2b24gJ3NiYW5pc2gnIG9obmUgUGFyYW1ldGVyIGdpYnQgZWluZSBMaXN0ZSBhbGxlciBnZXNwZXJydGVuCisgICAgQWRyZXNzZW4gYXVzLgorCisgICAgRGllIHp1IHNwZXJyZW5kZSBJUC1BZHJlc3NlIGthbm4gaW4gZGVuIGZvbGdlbmRlbiBGb3JtZW4gYW5nZWdlYmVuIHdlcmRlbjoKKyAgICAgIC0gJ24ubi5uLm4nOiBlaW56ZWxuZSBBZHJlc3NlCisgICAgICAtICduLm4ubi5uL3gnOiBTdWJuZXR6d2VyayBpbiBDSURSLU5vdGF0aW9uIG1pdCBTdWJuZXR6bWFza2UgeC4KKyAgICAgICAgICAgICAgICAgICAgIDJeKDMyLXgpIEFkcmVzc2VuCisgICAgICAtICduLm4ubi5uL20ubS5tLm0nOiBTdWJuZXR6d2VyayBpbiBDSURSLU5vdGF0aW9uIG1pdCBTdWJuZXR6bWFza2UgCisgICAgICAgICAgICAgICAgICAgICAgICAgICBtLm0ubS5tCisgICAgICAtICduLm4ubic6IENsYXNzLUMtTmV0eiBuLm4ubiAoMjU1IEFkcmVzc2VuKQorICAgICAgLSAnbi5uJzogQ2xhc3MtQi1OZXR6IG4ubiAoNjU1MzYgQWRyZXNzZW4pCisKKyAgICBEaWVzZXIgQmVmZWhsIHN0ZWh0IGVpbmdlc2NocmFlbmt0IGFiIExldmVsIDI2IHp1ciBWZXJmdWVndW5nOgorCisgICAgICAtIGFiIExldmVsIDI2IGthbm4gbWFuIGJpcyB6dSB6ZWhuIGVpbnplbG5lIElQcyBmdWVyIGVpbmVuIFRhZyBzcGVycmVuCisgICAgICAgIHVuZCBlaWdlbmUgU3BlcnJ1bmdlbiB3aWVkZXIgYXVmaGViZW4KKyAgICAgIC0gYWIgTGV2ZWwgNDAga2FubiBtYW4gYmlzIHp1IHplaG4gSVBzIHVuZC9vZGVyIFN1Ym5ldHplIG1pdCBiaXMgenUgMjU1CisgICAgICAgIEFkcmVzc2VuIGZ1ZXIgZWluZW4gVGFnIHNwZXJyZW4gdW5kIGVpZ2VuZSBTcGVycnVuZ2VuIHdpZWRlciBhdWZoZWJlbgorICAgICAgLSBIaWxmc3NoZXJpZmZzIHVuZCBFcnptYWdpZXIga29lbm5lbiBiZWxpZWJpZyB2aWVsZSBJUHMgYnp3LiBTdWJuZXR6ZQorICAgICAgICBiZWxpZWJpZ2VyIEdyb2Vzc2UgZnVlciBiZWxpZWJpZ2UgWmVpdHJhZXVtZSBzcGVycmVuIHNvd2llIGZyZW1kZQorICAgICAgICBTcGVycnVuZ2VuIHdpZWRlciBhdWZoZWJlbgorCisgQkVNRVJLVU5HRU46CisgICAgRWluIHNiYW5pc2ggZnVlaHJ0IGF1c2RydWVja2xpY2ggX25pY2h0XyBkYXp1LCBkYXNzIHNpY2ggdm9uIGRlbgorICAgIGVudHNwcmVjaGVuZGVuIEFkcmVzc2VuIGtlaW5lIGJlc3RlaGVuZGVuIFNwaWVsZXIgbWVociBlaW5sb2dnZW4KKyAgICBrb2VubmVuLgorCisgU0lFSEUgQVVDSDoKKyAgICBiYW5pc2gsIG1iYW5pc2gsIHRiYW5pc2gKKworIExFVFpURSBBZU5ERVJVTkc6CisgMjAuMDEuMjAxMywgWmVzc3RyYQorCmRpZmYgLS1naXQgYS9kb2MvbWNtZC9zZXQgYi9kb2MvbWNtZC9zZXQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNmQ3M2ZkYQotLS0gL2Rldi9udWxsCisrKyBiL2RvYy9tY21kL3NldApAQCAtMCwwICsxLDQ5IEBACisKK3NldAorLS0tCisKKyBNQUdJRVJLT01NQU5ETzoKKyAgICBzZXQgWzx2YXI+IFs8d2VydD5dXQorCisgQVJHVU1FTlRFOgorCisgICAgIDx2YXI+CisgICAgICAgIGVpbmUgYmVsaWViaWdlIFplaWNoZW5rZXR0ZQorICAgICA8d2VydD4KKyAgICAgICAgZGVyIGRhenVnZWhvZXJpZ2UgV2VydAorCisgQkVTQ0hSRUlCVU5HOgorICAgIERpZSBWYXJpYWJsZSA8dmFyPiB3aXJkIGF1ZiBkZW4gV2VydCA8d2VydD4gZ2VzdGV6dC4KKworICAgIExhZXNzdCBtYW4gPHdlcnQ+IHdlZywgd2lyZCBkaWUgVmFyaWFibGUgPHZhcj4gZ2Vsb2VzY2h0LgorCisgICAgR2FueiBvaG5lIEFyZ3VtZW50ZSB3ZXJkZW4gZGllIG1vbWVudGFuIGRlZmluaWVydGVuIFZhcmlhYmxlbiBhdXNnZWdlYmVuLgorCisgICAgRGllIFZhcmlhYmxlbiB3aXJrZW4gc2ljaCBiZWkgZGVuIG1laXN0ZW4gRGF0ZWlrb21tYW5kb3MgYXVzLiBNYW4ga2FubiBzaWUKKyAgICB2ZXJ3ZW5kZW4sIHVtIHNpY2ggQWJrdWVyenVuZ2VuIHp1IG9mdCBiZW51dHp0ZW4gRGF0ZWllbiBvZGVyCisgICAgVmVyemVpY2huaXNzZW4genUgbGVnZW4uCisKKyBCRVNPTkRFUkUgVkFSSUFCTEVOCisgICAgRWluaWdlIFVtZ2VidW5nc3ZhcmlhYmxlbiBoYWJlbiBlaW5lIGZlc3RlIEJlZGV1dHVuZzoKKworICAgICBMU19PQkogICBEaWVzZSBWYXJpYWJsZW4gc2luZCBpbSBadXNhbW1lbmhhbmcgbWl0IGRlbSBscy1CZWZlaGwgdm9uCisgICAgIExTX0RJUiAgIEJlZGV1dHVuZyB1bmQgc3RldWVybiBkaWUgZmFyYmxpY2hlIERhcnN0ZWxsdW5nIGRlciBBdXNnYWJlIAorICAgICBMU19WQyAgICAKKworICAgICBDRF9TSE9SVCBXZW5uIGF1ZiAxIGdlc2V0enQsIHdpcmQgYmVpICdjZCcgZWluZSAucmVhZG1lLURhdGVpIG5pY2h0IG1pdAorICAgICAgICAgICAgICBhdXNnZWdlYmVuLgorCisgQkVJU1BJRUxFOgorICAgIEVpbmUgQWJrdWVyenVuZyBmdWVyIGVpbmVuIFBmYWQ6CisKKyAgICA+IHNldCBscyAvZC9pbnNlbG4vd2FyZ29uL2x1ZnRzY2hsb3NzCisKKyAgICBOdW4ga2FubiBtYW4gbWl0IGVpbmVtIGVpbmZhY2hlbiBgY2QgJGxzJyBpbiBkYXMgVmVyemVpY2huaXMgZ2VsYW5nZW4uCisgICAgRWluIGNkICRscy9tb24gZnVlaHJ0IG5hY2ggL2QvaW5zZWxuL3dhcmdvbi9sdWZ0c2NobG9zcy9tb24uCisKKyBTSUVIRSBBVUNIOgorICAgIGNkLCBscywgcm0sIG12LCBjYXQsIGhlYWQsIHRhaWwsIG1vcmUKKworIExFVFpURSBBRU5ERVJVTkc6CisgICAgTWl0LCAwMi4xMC4yMDAyLCAwMjowMDowMCB2b24gTWFuZHJhZ29uCisgClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZG9jL21jbWQvc2V0Y21zZyBiL2RvYy9tY21kL3NldGNtc2cKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOTk0NDkzNwotLS0gL2Rldi9udWxsCisrKyBiL2RvYy9tY21kL3NldGNtc2cKQEAgLTAsMCArMSwzMyBAQAorCitzZXRjbXNnCistLS0tLS0tCisKKyBNQUdJRVJLT01NQU5ETzoKKyAgICBzZXRjbXNnIFs8dGV4dD5dCisKKyBBUkdVTUVOVEU6CisKKyAgICAgPHRleHQ+IChvcHRpb25hbCkKKyAgICAgICAgRGllIG5ldWUgTWVsZHVuZworCisgQkVTQ0hSRUlCVU5HOgorICAgIE1pdCBkaWVzZW0gQmVmZWhsIGthbm5zdCBEdSBkaWUgTWVsZHVuZyBmZXN0bGVnZW4sIGRpZSBhbmRlcmUgTGV1dGUgaW0KKyAgICBnbGVpY2hlbiBSYXVtIHNlaGVuLCB3ZW5uIER1IGVpbmVuIEdlZ2Vuc3RhbmQgY2xvbnN0LiBWb3IgZGVuIFRleHQgd2lyZAorICAgIG5vY2ggRGVpbiBOYW1lIGdlc3RlbGx0LgorCisgICAgT2huZSBBcmd1bWVudCB3aXJkIGRpZSBEZWZhdWx0bWVsZHVuZyBlaW5nZXN0ZWxsdC4KKworIEJFSVNQSUVMRToKKyAgICBBbmdlbm9tbWVuLCBXYXJnb24gc3RlbGx0IGZvbGdlbmRlIENsb25lLU1lbGR1bmcgZWluOgorCisgICAgPiBzZXRjbXNnIGhvbHQgZXR3YXMgYXVzIGRlbiB0aWVmZW4gVGFzY2hlbiBzZWluZXMgTWFudGVscworCisgICAgQ2xvbnQgV2FyZ29uIG51biBpcmdlbmQgZXR3YXMsIHNlaGVuIGRpZSBTcGllbGVyIGltIGdsZWljaGVuIFJhdW06CisKKyAgICBXYXJnb24gaG9sdCBldHdhcyBhdXMgZGVuIHRpZWZlbiBUYXNjaGVuIHNlaW5lcyBNYW50ZWxzLgorCisgU0lFSEUgQVVDSDoKKyAgICBzZXRkbXNnLCByZXZpZXcsIGNsb25lCisKKyBMRVRaVEUgQWVOREVSVU5HOgorICAgIFRodSwgMjQuMDcuMTk5NywgMDk6MDA6MDAgdm9uIFdhcmdvbgpkaWZmIC0tZ2l0IGEvZG9jL21jbWQvc2V0ZG1zZyBiL2RvYy9tY21kL3NldGRtc2cKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNjExYzdlNQotLS0gL2Rldi9udWxsCisrKyBiL2RvYy9tY21kL3NldGRtc2cKQEAgLTAsMCArMSwzMyBAQAorCitzZXRkbXNnCistLS0tLS0tCisKKyBNQUdJRVJLT01NQU5ETzoKKyAgICBzZXRkbXNnIFs8dGV4dD5dCisKKyBBUkdVTUVOVEU6CisKKyAgICAgPHRleHQ+IChvcHRpb25hbCkKKyAgICAgICAgRGllIG5ldWUgTWVsZHVuZworCisgQkVTQ0hSRUlCVU5HOgorICAgIE1pdCBkaWVzZW0gQmVmZWhsIGthbm5zdCBEdSBkaWUgTWVsZHVuZyBmZXN0bGVnZW4sIGRpZSBhbmRlcmUgTGV1dGUgaW0KKyAgICBnbGVpY2hlbiBSYXVtIHNlaGVuLCB3ZW5uIER1IGVpbmVuIEdlZ2Vuc3RhbmQgemVyc3RvZXJzdC4gVm9yIGRlbiBUZXh0CisgICAgd2lyZCBub2NoIGRlciBOYW1lIGRlcyBHZWdlbnN0YW5kZXMgZ2VzdGVsbHQuCisKKyAgICBPaG5lIEFyZ3VtZW50IHdpcmQgZGllIERlZmF1bHRtZWxkdW5nIGVpbmdlc3RlbGx0LgorCisgQkVJU1BJRUxFOgorICAgIEFuZ2Vub21tZW4sIFdhcmdvbiBzdGVsbHQgZm9sZ2VuZGUgRGVzdHJ1Y3QtTWVsZHVuZyBlaW46CisKKyAgICA+IHNldGRtc2cgd2lyZCB2b24gV2FyZ29uIGFubmloaWxpZXJ0CisKKyAgICBaZXJzdG9lcnQgV2FyZ29uIG51biB6LkIuIGVpbmUgRmFja2VsLCBzZWhlbiBkaWUgU3BpZWxlciBpbSBnbGVpY2hlbiBSYXVtOgorCisgICAgRWluZSBGYWNrZWwgd2lyZCB2b24gV2FyZ29uIGFubmloaWxpZXJ0LgorCisgU0lFSEUgQVVDSDoKKyAgICBzZXRjbXNnLCByZXZpZXcsIGRlc3RydWN0CisKKyBMRVRaVEUgQWVOREVSVU5HOgorICAgIFRodSwgMjQuMDcuMTk5NywgMDk6MDA6MDAgdm9uIFdhcmdvbgpkaWZmIC0tZ2l0IGEvZG9jL21jbWQvc2hlbGwgYi9kb2MvbWNtZC9zaGVsbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi40NmNkM2NhCi0tLSAvZGV2L251bGwKKysrIGIvZG9jL21jbWQvc2hlbGwKQEAgLTAsMCArMSw0NyBAQAorCisgICAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tTUFHSUVSX0hJTEZTX1NFSVRFLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK0FscyBNYWdpZXIgaGF0IG1hbiBuZWJlbiBkZW4gU3BpZWxlci0gdW5kIFNlaGVyYmVmZWhsZW4gZWluaWdlIHdlaXRlcmUKK0JlZmVobGUgenVyIFZlcmZ1ZWd1bmcuIEVpbmUgRXJsYWV1dGVydW5nIHp1IGRlbiBmb2xnZW5kZW4gVGhlbWVuIHVuZAorS29tbWFuZG9zIGthbm4gbWFuIG1pdCAiaGlsZmUgPGtvbW1hbmRvPiIgZXJoYWx0ZW4uIFdvYmVpIGhpZXIgbmljaHQKK3p3aXNjaGVuIGRlbiBTdHVmZW4gZGVyIE1hZ2llciB1bnRlcnNjaGllZGVuIHdpcmQuIERpZXMgd2lyZCBhYmVyIGpld2VpbHMKK2JlaSBkZXIgRXJsYWV1dGVydW5nIGVyd2FlaG50LgorCitBTExHRU1FSU5FIFRIRU1FTjoKKyAgICBiYWxhbmNlLCBmb3JzY2hlcnB1bmt0ZSwgdGVzdHNwaWVsZXIsIHp3ZWl0c3BpZWxlcgorCitLT01NVU5JS0FUSU9OOgorICAgIGVjaG9hbGwsIGVjaG90bywgZWNobywgbWVjaG8sIG1ydWZlLCBvcm9wYXgsIHJlbW90ZQorCitCRVdFR1VORzoKKyAgICBnb3RvLCB0cmFucywgaG9tZSwgdmVyZm9sZ2UsIHNldG1pbiwgc2V0bW91dCwgc2V0bW1pbiwgc2V0bW1vdXQsCisgICAgYXQsIGluLCArCisKK0tBTVBGOgorICAgIHphcCwgZnJpZWRlbiwgc2V0aGFuZHMKKworREFURUlTWVNURU06CisgICAgY2QsIHB3ZCwgbHMsIGNhdCwgaGVhZCwgdGFpbCwgbW9yZSwgZ3JlcCwgY3AsIG12LCBybSwgbWtkaXIsCisgICAgcm1kaXIsIHNldCwgcHJvbXB0LCBlZAorCitPQkpFS1RFOgorICAgIGNsb25lLCBkZXN0cnVjdCwgdXBkKGF0ZSksIGxvYWQsIHNldGNtc2csIHNldGRtc2cKKworSU5GTzoKKyAgICBtc2NoYXUsIHBlb3BsZSwgcHdobywgbG9jYWxjbWQsIG1hbiwgc25vb3AsIHNhbGxvdywgc3BpZWxlciwgcm1hbgorCitBTkRFUkVTOgorICAgIGhlaWxlLCB6d2luZ2UsIHRpdGxlLCBleHRyYWxvb2ssIHRyYWVua2UsIGludmlzLCB2aXMsIHByb3RlY3QsIGRvLAorICAgIHNob3dwcmVzYXksIHBpbmcsIHRvZG8KKworUkVHSU9OU01BR0lFUkJFRkVITEUgVU5EIC1USEVNRU46CisgICAgcmVnaW9uc21hZ2llciBiYW5pc2gsIGV4ZWMKKworRVJaTUFHSUVSQkVGRUhMRToKKyAgICBhZGRtYXN0ZXIsIHJlbW92ZW1hc3RlciwgbWJhbmlzaCwgc2h1dGRvd24KKworSW4gZGVuIFZlcnplaWNobmlzc2VuIHVudGVyIC9kb2MvKiBmaW5kZXN0IER1IHZpZWxlIHdlaXRlcmUgRG9rdW1lbnRhdGlvbmVuLgorVW50ZXIgYW5kZXJlbSBmaW5kZXN0IER1IGVpbmVuIFByb2dyYW1taWVya3VycyBpbiBMUEMvTW9yZ2VuR3JhdWVuIHVudGVyCisgIC9kb2MvS1VSUy8qCitBdXNzZXJkZW0gc29sbHRlbiB1bmJlZGluZ3QgZGllIERva3VtZW50YXRpb25lbiB1bnRlciAvZG9jL01HLyogYmVhY2h0ZXQgd2VyZGVuLgorCmRpZmYgLS1naXQgYS9kb2MvbWNtZC9zaG93cHJlc2F5IGIvZG9jL21jbWQvc2hvd3ByZXNheQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4xYjNlNzg2Ci0tLSAvZGV2L251bGwKKysrIGIvZG9jL21jbWQvc2hvd3ByZXNheQpAQCAtMCwwICsxLDIzIEBACisKK3Nob3dwcmVzYXkKKy0tLS0tLS0tLS0KKworIE1BR0lFUktPTU1BTkRPOgorICAgIHNob3dwcmVzYXkgW2VpbnxhbnxhdXNdCisKKyBBUkdVTUVOVEU6CisgICAga2VpbmUKKworIEJFU0NIUkVJQlVORzoKKyAgICBOb3JtYWxlcndlaXNlIHdpcmQgZGFzIFByZXNheSBiZWkgZGVuIEtvbW11bmlrYXRpb25zYmVmZWhsZW4gbmljaHQgbWl0CisgICAgYXVzZ2VnZWJlbi4gTW9lY2h0ZSBtYW4gZGFzIGRlbm5vY2gsIHNvIGthbm4gZGllIEF1c2dhYmUgbWl0IGRpZXNlbSBCZWZlaGwKKyAgICBha3RpdmllcnQgdW5kIGRlYWt0aXZpZXJ0IHdlcmRlbi4KKworICAgIE1hbiBzb2xsdGUgZGFzIFByZXNheSBudXIgbWl0IGF1c2dlYmVuIGxhc3Nlbiwgd2VubiBlcyBrdXJ6IGlzdCAobmljaHQKKyAgICBsYWVuZ2VyIGFscyAxMCBaZWljaGVuKS4KKworIFNJRUhFIEFVQ0g6CisgICAgcHJlc2F5CisKKyBMRVRaVEUgQWVOREVSVU5HOgorICAgIFR1ZSwgMTcuMTIuMjAwMiwgMTI6MDA6MDAgdm9uIE1hbmRyYWdvbgpkaWZmIC0tZ2l0IGEvZG9jL21jbWQvc2h1dGRvd24gYi9kb2MvbWNtZC9zaHV0ZG93bgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44ZmNlMmJiCi0tLSAvZGV2L251bGwKKysrIGIvZG9jL21jbWQvc2h1dGRvd24KQEAgLTAsMCArMSwyNiBAQAorCitzaHV0ZG93bgorLS0tLS0tLS0KKworIEVSWk1BR0lFUktPTU1BTkRPOgorICAgIHNodXRkb3duIDxncnVuZD4KKworIEFSR1VNRU5URToKKworICAgICA8Z3J1bmQ+CisgICAgICAgIERlciBHcnVuZCBmdWVyIGRlbiBOZXVzdGFydAorCisgQkVTQ0hSRUlCVU5HOgorICAgIE1pdCBkaWVzZW0gQmVmZWhsIHdpcmQgZGFzIFNwaWVsIFNPRk9SVCBoZXJ1bnRlcmdlZmFocmVuLiBNYW4gc29sbHRlCisgICAgZGllc2VuIEJlZmVobCBudXIgYmVudXR6ZW4sIHdlbm4gZXMgd2lya2xpY2ggZHJpbmdlbmQgbm90d2VuZGlnIGlzdDsgZnVlcgorICAgIGVpbmVuIE5ldXN0YXJ0IG1pdCBWZXJ6b2VnZXJ1bmcgc3RlaHQgQXJtYWdlZGRvbiBpbW1lciBnZXJuIHp1cgorICAgIFZlcmZ1ZWd1bmcuIEVyIHNvbGx0ZSBlaWdlbnRsaWNoIGltbWVyIGdld2FlaGx0IHdlcmRlbiwgZGEgZGllIFNwaWVsZXIKKyAgICBkYW5uIGF1Y2ggWmVpdCBoYWJlbiwgc2ljaCBhdWYgZGVuIE5ldXN0YXJ0IGVpbnp1c3RlbGxlbi4KKworICAgIERpZXNlciBCZWZlaGwgc3RlaHQgbnVyIEVyem1hZ2llcm4gdW5kIEdvZXR0ZXJuIHp1ciBWZXJmdWVndW5nLgorCisgU0lFSEUgQVVDSDoKKyAgICBgL29iai9zaHV0JyAoQXJtYWdlZGRvbikKKworIExFVFpURSBBZU5ERVJVTkc6CisgICAgVGh1LCAyNC4wNy4xOTk3LCAwOTowMDowMCB2b24gV2FyZ29uCmRpZmYgLS1naXQgYS9kb2MvbWNtZC9zbm9vcCBiL2RvYy9tY21kL3Nub29wCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmY4ZDhkZGMKLS0tIC9kZXYvbnVsbAorKysgYi9kb2MvbWNtZC9zbm9vcApAQCAtMCwwICsxLDQ1IEBACisKK3Nub29wCistLS0tLQorCisgTUFHSUVSS09NTUFORE86CisgICAgc25vb3AgPG5hbWU+IFs8ZmxhZ3M+XQorICAgIHNub29wCisKKyBBUkdVTUVOVEU6CisKKyAgICAgPG5hbWU+CisgICAgICAgIE5hbWUgZWluZXMgU3BpZWxlcnMKKyAgICAgPGZsYWdzPiAob3B0aW9uYWwpCisgICAgICAgICdsJyB1bmQvb2RlciAnZicKKworIEJFU0NIUkVJQlVORzoKKyAgICBEdSBzaWVoc3QgdW5kIGhvZXJzdCBhbGxlcyBhdXMgZGVyIFNpY2h0IGRlcyBTcGllbGVycyA8bmFtZT4uIERhcyBrYW5uCisgICAgYXVjaCBlaW4gTWFnaWVyIHNlaW4sIHdlbm4gZXIgZWluZW4ga2xlaW5lcmVuIExldmVsIGhhdCBhbHMgRHUuCisKKyAgICBEaWUgRmxhZ3MgaGFiZW4gZm9sZ2VuZGUgQmVkZXV0dW5nOgorCisgICAgIGYgKGZvcmNlKQorICAgICAgICBGYWxscyBkZXIgU3BpZWxlciBzY2hvbiB2b24gZWluZW0gTWFnaWVyIG1pdCBuaWVkcmlnZXJlbSBMZXZlbAorICAgICAgICBnZXNub29wZWQgd2lyZCwgd2lyZCBkaWVzZW0gZGVyIFNub29wIHdlZ2dlbm9tbWVuIChlaW4gU3BpZWxlciBrYW5uCisgICAgICAgIGltbWVyIG51ciB2b24gKmVpbmVtKiBNYWdpZXIgZ2xlaWNoemVpdGlnIGdlc25vb3BlZCB3ZXJkZW4pLgorCisgICAgICAgIE9obmUgZGFzIEZsYWcgd2lyZCBudXIgZWluZSBNaXR0ZWlsdW5nIGF1c2dlZ2ViZW4sIGRhc3MgZGVyIFNwaWVsZXIKKyAgICAgICAgc2Nob24gZ2Vzbm9vcGVkIHdpcmQuCisKKyAgICAgbCAobG9ja2VkKQorICAgICAgICBHaWJ0IG1hbiBkaWVzZXMgRmxhZyBhbiwgc28ga29lbm5lbiBNYWdpZXIgbWl0IGtsZWluZXJlbSBMZXZlbCBkZW4KKyAgICAgICAgU3BpZWxlciBuaWNodCBzbm9vcGVuLCB3YWVocmVuZCBtYW4gc2VsYnN0IGVzIGdlcmFkZSB0dXQuCisKKyAgICAgICAgTGFlc3N0IG1hbiBkYXMgRmxhZyB3ZWcsIHVuZCBlaW4gTWFnaWVyIG1pdCBrbGVpbmVyZW0gTGV2ZWwgd2lsbCBkZW4KKyAgICAgICAgZ2xlaWNoZW4gU3BpZWxlciBzbm9vcGVuLCBzbyB3aXJkIGVyIGdld2lzc2VybWFzc2VuIGRhendpc2NoZW4KKyAgICAgICAgZ2VrbGlua3Q6IERlciBTcGllbGVyIHdpcmQgbnVuIHZvbiBkaWVzZW0gTWFnaWVyIGdlc25vb3BlZCwgdW5kIGRlcgorICAgICAgICBNYWdpZXIgd2llZGVydW0gdm9uIERpci4KKworICAgIE1pdCBkZXIgendlaXRlbiBGb3JtIChvaG5lIEFyZ3VtZW50ZSkgd2lyZCBkYXMgU25vb3BlbiB3aWVkZXIgYmVlbmRldC4KKworIFNJRUhFIEFVQ0g6CisgICAgc2FsbG93LCB2ZXJ0cmFnLCBzbm9vcCgpCisKKyBMRVRaVEUgQWVOREVSVU5HOgorICAgIFR1ZSwgMDIuMDkuMTk5NywgMTY6NTU6MDQgdm9uIFdhcmdvbgpkaWZmIC0tZ2l0IGEvZG9jL21jbWQvc3BpZWxlciBiL2RvYy9tY21kL3NwaWVsZXIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMTVhNWMyMgotLS0gL2Rldi9udWxsCisrKyBiL2RvYy9tY21kL3NwaWVsZXIKQEAgLTAsMCArMSwyNiBAQAorCitzcGllbGVyCistLS0tLS0tCisKKyBNQUdJRVJLT01NQU5ETzoKKyAgICBzcGllbGVyIGF1cyBpcCA8aXAtYWRyZXNzZT4KKyAgICBzcGllbGVyIGF1cyBpcCB2b24gPHNwaWVsZXItbmFtZT4KKworIEFSR1VNRU5URToKKyAgICAgPGlwLWFkcmVzc2U+ICAgSVAtQWRyZXNzZSBpbSBGb3JtYXQgeC54LngueAorICAgICA8c3BpZWxlci1uYW1lPiBOYW1lIGVpbmVzIGVpbmdlbG9nZ3RlbiBTcGllbGVycworCisgQkVTQ0hSRUlCVU5HOgorICAgIERpZXNlciBCZWZlaGwgemVpZ3QgYWxsZSBTcGllbGVyIGFuLCBkaWUgdWViZXIgZGllIElQLUFkcmVzc2UKKyAgICA8aXAtYWRyZXNzZT4gb2RlciBkaWVzZWxiZSBJUC1BZHJlc3NlIGVpbmdlbG9nZ3Qgc2luZCB3aWUgZGVyCisgICAgU3BpZWxlciA8c3BpZWxlci1uYW1lPi4KKyAKKyAgICBFcyB3ZXJkZW4genVkZW0gSW5mb3JtYXRpb25lbiB3aWUgRWlubG9nZGF0dW0sIElkbGV6ZWl0IHVuZAorICAgIFp3ZWl0aWVlaWdlbnNjaGFmdCBhbmdlemVpZ3QuCQorCisgU0lFSEUgQVVDSDoKKyAgICBwZW9wbGUsIHB3aG8sIHF1ZXJ5X2lwX251bWJlcihFKQorCisKKyBMRVRaVEUgQUVOREVSVU5HOgorICAgIEZyZSwgMDQuMTAuMjAwMiwgMTM6MDA6MDAgdm9uIE1hbmRyYWdvbgpkaWZmIC0tZ2l0IGEvZG9jL21jbWQvc3VlbmRlciBiL2RvYy9tY21kL3N1ZW5kZXIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZjgzOGI2MgotLS0gL2Rldi9udWxsCisrKyBiL2RvYy9tY21kL3N1ZW5kZXIKQEAgLTAsMCArMSw1NyBAQAorCitzdWVuZGVyCistLS0tLS0tCisKKyBFUlpNQUdJRVItIFVORCBERVBVVFktS09NTUFORE86CisKKyAgICBzdWVuZGVyID8gICAgICAgICAgICAgICAgICAgIEdpYnQgZWluZSBMaXN0ZSBhbGxlciBlaW5nZXRyYWdlbmVuIAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIlN1ZW5kZXIiIGF1cy4KKworICAgIHN1ZW5kZXIgPG5hbWU+ICAgICAgICAgICAgICAgTGlzdGV0IGRpZSAiU3VlbmRlbiIgZGVzIFNwaWVsZXJzL01hZ2llcnMKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxuYW1lPiBhdWYuCisKKyAgICBzdWVuZGVyICs8bmFtZT4gPHRleHQ+ICAgICAgIEZ1ZWd0IGVpbmVuICJTdWVuZGVuZWludHJhZyIgZnVlciBkZW4KKyAgICBzdWVuZGVyICs8bmFtZT4gLWYgPHRleHQ+ICAgIFNwaWVsZXIvTWFnaWVyIDxuYW1lPiBoaW56dS4gRHVyY2ggQW5nYWJlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZXIgT3B0aW9uIC1mIGtvZW5uZW4gRWludHJhZWdlIGZ1ZXIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJlcmVpdHMgZ2Vsb2VzY2h0ZSBTcGllbGVyL01hZ2llcgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmFjaGdldHJhZ2VuIHdlcmRlbi4KKworICAgIHN1ZW5kZXIgLTxuYW1lPiA8bnI+ICAgICAgICAgTG9lc2NodCBkZW4gIlN1ZW5kZW5laW50cmFnIiA8bnI+IGRlcworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU3BpZWxlcnMvTWFnaWVycyA8bmFtZT4uIERpZXNlcyBLb21tYW5kbworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXN0IEVyem1hZ2llcm4gdm9yYmVoYWx0ZW4uCisKKyAgICBzdWVuZGVyICEgICAgICAgICAgICAgICAgICAgIEVyemV1Z3QgZWluIER1bXAtRmlsZSBtaXQgYWxsZW4gRWludHJhZWdlbgorCisgICAgc3VlbmRlciAqICAgICAgICAgICAgICAgICAgICBaZWlndCBBTExFIEVpbnRyYWVnZSBhbiAocGVyIE1vcmUoKSA7KQorCisgQVJHVU1FTlRFOgorCisgICAgIDxuYW1lPgorICAgICAgICBOYW1lIGRlcyBTcGllbGVycy9NYWdpZXJzCisKKyAgICAgPHRleHQ+CisgICAgICAgIEluZm90ZXh0LiBTb2xsdGUgZW50aGFsdGVuOiAKKyAgICAgICAgICBhKSBvYiBlcyBlaW5lIFZlcndhcm51bmcsIGVpbmUgQmVzdHJhZnVuZyBvZGVyIExvZXNjaHVuZyBpc3QKKyAgICAgICAgICBiKSBkZW4gR3J1bmQuCisgICAgICAgICAgYykgQmVpIE5hY2h0cmFlZ2xpY2hlbiBFaW50cmFlZ2VuIGVpbmVuIGVudHNwci4gSGlud2Vpcy4KKyAgICAgICAgRGVyIFRleHQgd2lyZCBhdXRvbWF0aXNjaCB1bSBkYXMgRGF0dW0gdW5kIGRlbiBOYW1lbiBkZXMKKyAgICAgICAgRWludHJhZ2VuZGVuIGVyZ2Flbnp0LiAKKworICAgICA8bnI+CisgICAgICAgIERpZSBOdW1tZXIgZGVzIEVpbnRyYWdzLiBOYWNoIGplZGVyIExvZXNjaHVuZyB3ZXJkZW4gZGllIEVpbnRyYWVnZQorICAgICAgICBuZXUgZHVyY2hudW1tZXJpZXJ0IQorCisgQkVTQ0hSRUlCVU5HOgorCisgICAgVmVyd2FsdHVuZyBkZXIgdm9tIFNoZXJpZmYgdW5kIHNlaW5lbSBEZXB1dHkgZHVyY2hnZWZ1ZWhydGVuIE1hc3NuYWhtZW4sCisgICAgZGFtaXQgYW5kZXJlIEVyem1hZ2llci9Hb2V0dGVyIHNjaG5lbGxlciBuYWNoc2NobGFnZW4ga29lbm5lbiwgb2Igc2llCisgICAgei5CLiBlaW5lIFN0cmFmZSBhdWZoZWJlbiBkdWVyZmVuLgorCisgICAgRGllc2VyIEJlZmVobCBzdGVodCBudXIgRXJ6bWFnaWVybiB1bmQgRGVwdXRpZXMgenVyIFZlcmZ1ZWd1bmcuCisKKyBTSUVIRSBBVUNIOgorCisgICAgc2hlcmlmZgorCisgTEVUWlRFIEFlTkRFUlVORzoKKyAgICBEaWUsIDE1LjA4LjIwMDAsIDExOjAwOjAwIHZvbiBQYXJhY2Vsc3VzCmRpZmYgLS1naXQgYS9kb2MvbWNtZC90YWlsIGIvZG9jL21jbWQvdGFpbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5lNGFkYjU5Ci0tLSAvZGV2L251bGwKKysrIGIvZG9jL21jbWQvdGFpbApAQCAtMCwwICsxLDIxIEBACisKK3RhaWwKKy0tLS0KKworIE1BR0lFUktPTU1BTkRPOgorICAgIHRhaWwgPGRhdGVpPgorCisgQVJHVU1FTlRFOgorCisgICAgIDxkYXRlaT4KKyAgICAgICAgRGllIGF1c3p1Z2ViZW5kZSBEYXRlaQorCisgQkVTQ0hSRUlCVU5HOgorICAgIERpZSBsZXR6dGVuIFplaWxlbiBkZXIgRGF0ZWkgPGRhdGVpPiB3ZXJkZW4gYXVzZ2VnZWJlbi4gRGFiZWkgd2lyZCBlaW4KKyAgICBNYXhpbXVtIHZvbiAxMDAwIEJ5dGUgbmljaHQgdWViZXJzY2hyaXR0ZW4uCisKKyBTSUVIRSBBVUNIOgorICAgIGNhdCwgaGVhZCwgbW9yZQorCisgTEVUWlRFIEFlTkRFUlVORzoKKyAgICBUaHUsIDI0LjA3LjE5OTcsIDA5OjAwOjAwIHZvbiBXYXJnb24KZGlmZiAtLWdpdCBhL2RvYy9tY21kL3RiYW5pc2ggYi9kb2MvbWNtZC90YmFuaXNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjIyN2EyMjgKLS0tIC9kZXYvbnVsbAorKysgYi9kb2MvbWNtZC90YmFuaXNoCkBAIC0wLDAgKzEsMjYgQEAKKwordGJhbmlzaAorLS0tLS0tLQorCisgRVJaTUFHSUVSS09NTUFORE86CisgICAgdGJhbmlzaCA8bmFtZT4gPHRhZ2U+CisKKyBBUkdVTUVOVEU6CisKKyAgICAgPG5hbWU+CisgICAgICAgIE5hbWUgZGVzIE9wZmVycworICAgICA8dGFnZT4KKyAgICAgICAgRGllIERhdWVyIGRlciBTcGllbHBhdXNlCisKKyBCRVNDSFJFSUJVTkc6CisgICAgTWl0IGRpZXNlbSBCZWZlaGwga2FubiBtYW4gU3BpZWxlcm4gZWluZSBTcGllbHBhdXNlIGF1ZmVybGVnZW4uIERpZSBEYXVlcgorICAgIHdpcmQgaW4gVGFnZW4gYW5nZWdlYmVuLiBFaW5lIEFuZ2FiZSB2b24gLTEgc2V0enQgZWluZSB1bmJlZnJpc3RldGUKKyAgICBTcGllbHBhdXNlOyBtaXQgZWluZXIgRGF1ZXIgdm9uIDAgVGFnZW4gbG9lc2NodCBtYW4gZWluZSBnZXNldHp0ZSBTcGVycmUuCisKKyAgICBEaWVzZXIgQmVmZWhsIGthbm4gbnVyIHZvbiBFcnptYWdpZXJuIHVuZCBHb2V0dGVybiBhdXNnZWZ1ZWhydCB3ZXJkZW4uCisKKyBTSUVIRSBBVUNIOgorICAgIGJhbmlzaCwgbWJhbmlzaCwgc2JhbmlzaAorCisgTEVUWlRFIEFlTkRFUlVORzoKKyAgICBNb24sIDIwLjEyLjE5OTksIDIzOjMwOjAwIHZvbiBUaWFtYWsKZGlmZiAtLWdpdCBhL2RvYy9tY21kL3RvZG8gYi9kb2MvbWNtZC90b2RvCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjYzNzNiMTQKLS0tIC9kZXYvbnVsbAorKysgYi9kb2MvbWNtZC90b2RvCkBAIC0wLDAgKzEsMzUgQEAKKwordG9kbworLS0tLQorCisgTUFHSUVSS09NTUFORE86CisgICAgdG9kbyBuZXUKKyAgICB0b2RvIGFuemVpZ2VuIFs8bnVtbWVyMT5dIFtiaXMgPG51bW1lcjI+XQorICAgIHRvZG8gbG9lc2NoZW4gPG51bW1lcjE+CisgICAgdG9kbyB2ZXJzY2hpZWJlbiBbPG51bW1lcjE+XSBbbmFjaCA8emllbD5dCisKKyBBUkdVTUVOVEU6CisKKyAgICAgPG51bW1lcjE+CisgICAgIDxudW1tZXIyPiBOdW1tZXIgZWluZXMgRWludHJhZ3MgaW4gZGVyIFRvZG8tTGlzdGUKKyAgICAgPHppZWw+ICAgIE51bW1lciBlaW5lcyBFaW50cmFncyBpbiBkZXIgVG9kby1MaXN0ZSBvZGVyICdvYmVuJyBvZGVyICd1bnRlbicKKworIEJFU0NIUkVJQlVORzoKKyAgICBNaXQgZGVtIEJlZmVobCAndG9kbycga2FubiBlaW4gTWFnaWVyIHNlaW5lIFRvZG8tTGlzdGUgdmVyd2FsdGVuLiBWaWVyCisgICAgZ3J1bmRzYWV0emxpY2hlIE9wdGlvbmVuIHN0ZWhlbiBoaWVyIHp1ciBWZXJmdWVndW5nOgorCisgICAgJ3RvZG8gbmV1JyBsZWd0IGVpbmVuIG5ldWVuIEVpbnRyYWcgYW4uCisgICAgJ3RvZG8gbG9lc2NoZW4nIGxvZXNjaHQgZGVuIEVpbnRyYWcgPG51bW1lcjE+CisgICAgJ3RvZG8gYW56ZWlnZW4nIHplaWd0IGVudHdlZGVyIGFsbGUgRWludHJhZWdlIGFuLCBlaW5lbiBlaW56ZWxuZW4gRWludHJhZworICAgICAgICAgICAgICAgICAgICBvZGVyIGVpbmVuIEF1c3NjaG5pdHQgYXVzIGRlciBUb2RvLUxpc3RlLiBGYWxscyA8bnVtbWVyMj4KKyAgICAgICAgICAgICAgICAgICAga2xlaW5lciBpc3QsIGFscyA8bnVtbWVyMT4gZXJmb2xndCBkaWUgQXVzZ2FiZSBydWVja3dhZXJ0cy4KKyAgICAndG9kbyB2ZXJzY2hpZWJlbicgdmVyc2NoaWVidCBlaW5lbiBFaW50cmFnIGFuIGVpbmUgYmVzdGltbXRlIFN0ZWxsZSBvZGVyCisgICAgICAgICAgICAgICAgICAgIGVpbmVuIFNjaHJpdHQgbmFjaCBvYmVuIG9kZXIgdW50ZW4uCisKKyAgICBOZWdhdGl2ZSBOdW1tZXJuIGJlaSAndG9kbyBhbnplaWdlbicgd2VyZGVuIHZvbSBFbmRlIGRlciBUb2RvLUxpc3RlIGF1cworICAgIGdlemFlaGx0LgorCisgU0lFSEUgQVVDSDoKKworIExFVFpURSBBRU5ERVJVTkc6CisgICAgTWl0LCAwMi4xMC4yMDAyLCAwMjowMDowMCB2b24gTWFuZHJhZ29uClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZG9jL21jbWQvdHJhZW5rZSBiL2RvYy9tY21kL3RyYWVua2UKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMWU0ZDMwNQotLS0gL2Rldi9udWxsCisrKyBiL2RvYy9tY21kL3RyYWVua2UKQEAgLTAsMCArMSwyOCBAQAorCit0cmFlbmtlCistLS0tLS0tCisKKyBNQUdJRVJLT01NQU5ETzoKKyAgICB0cmFlbmtlCisKKyBBUkdVTUVOVEU6CisgICAga2VpbmUKKworIEJFU0NIUkVJQlVORzoKKyAgICBNaXQgZGllc2VtIEtvbW1hbmRvIGthbm4gbWFuIGJlc3RpbW1lbiwgb2IgbWFuIHVlYmVyYWxsLCB3byBlaW4KKyAgICBaYXViZXJ0cmFuayB2ZXJzdGVja3QgaXN0LCBhdWNoIGVpbmVuIFRyYW5rIGZpbmRlbiBrYW5uLgorCisgICAgQW5zb25zdGVuIGZpbmRldCBtYW4gbnVyIGRpZSBUcmFlbmtlLCBkaWUgbWFuIGluIHNlaW5lciBMaXN0ZSBzdGVoZW4gaGF0LgorCisgICAgRGVyIEJlZmVobCB3aXJrdCBhbHMgVW1zY2hhbHRlcjogS2FubiBtYW4gVHJhZW5rZSBmaW5kZW4sIHNvIHdpcmQgZGFzCisgICAgVmVyaGFsdGVuIG51biBhdXNnZXNjaGFsdGV0LCB1bmQgdW1nZWtlaHJ0LgorCisgSElOV0VJUzoKKyAgICBXZW5uIG1hbiBtaXQgZWluZ2VzY2hhbHRldGVtICJ0cmFlbmtlIiBaYXViZXJ0cmFlbmtlIGZpbmRldCwgd2VyZGVuCisgICAgZGllc2UgTklDSFQgYXVzIGRlciBaVC1MaXN0ZSBhdXNnZXRyYWdlbi4KKworIFNJRUhFIEFVQ0g6CisgICAgYXR0cmlidXRlLCB6YXViZXJ0cmFlbmtlCisKKyBMRVRaVEUgQWVOREVSVU5HOgorICAgMTMuMDguMjAxNSwgQXJhdGhvcm4gCmRpZmYgLS1naXQgYS9kb2MvbWNtZC90cmFucyBiL2RvYy9tY21kL3RyYW5zCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjBjNTdiZTQKLS0tIC9kZXYvbnVsbAorKysgYi9kb2MvbWNtZC90cmFucwpAQCAtMCwwICsxLDI0IEBACisKK3RyYW5zCistLS0tLQorCisgTUFHSUVSS09NTUFORE86CisgICAgdHJhbnMgPG5hbWU+CisKKyBBUkdVTUVOVEU6CisKKyAgICAgPG5hbWU+CisgICAgICAgIE5hbWUgZWluZXMgTGViZXdlc2VucworCisgQkVTQ0hSRUlCVU5HOgorICAgIERhcyBMZWJld2VzZW4gPG5hbWU+IHdpcmQgenUgRGlyIHRyYW5zcG9ydGllcnQuCisKKyAgICBTcGllbGVyIGR1ZXJmZW4gZGFkdXJjaCBuaWNodCBpbSBTcGllbCBiZWVpbmZsdXNzdCB3ZXJkZW4hCisKKyAgICBNYWdpZXItTGVocmxpbmdlbiBzdGVodCBkaWVzZXIgQmVmZWhsIG5vY2ggbmljaHQgenVyIFZlcmZ1ZWd1bmcuCisKKyBTSUVIRSBBVUNIOgorICAgIHZlcnRyYWcsIGdvdG8KKworIExFVFpURSBBZU5ERVJVTkc6CisgICAgVHVlLCAwMi4wOS4xOTk3LCAxNjo1NToxNCB2b24gV2FyZ29uCmRpZmYgLS1naXQgYS9kb2MvbWNtZC91ZHBxIGIvZG9jL21jbWQvdWRwcQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi40ZmZmNzFlCi0tLSAvZGV2L251bGwKKysrIGIvZG9jL21jbWQvdWRwcQpAQCAtMCwwICsxLDQ3IEBACisKK3VkcHEKKy0tLS0KKworIE1BR0lFUktPTU1BTkRPOgorICAgIHVkcHEgPG11ZD4gPHR5cGU+CisKKyBBUkdVTUVOVEU6CisKKyAgICAgPG11ZD4KKyAgICAgICAgZWluIE1VRCBhdXMgZGVyIGBtdWRzJy1MaXN0ZQorICAgICA8dHlwZT4KKyAgICAgICAgQXJ0IGRlciBnZXd1ZW5zY2h0ZW4gSW5mb3JtYXRpb24KKworIEJFU0NIUkVJQlVORzoKKyAgICBNaXQgZGllc2VtIEtvbW1hbmRvIGthbm4gbWFuIEluZm9ybWF0aW9uZW4gdWViZXIgZGVuIFVEUC1TZXJ2aWNlIHVuZCBkZW4KKyAgICBJTkVURCB2b24gYW5kZXJlbiBNVURzIGF1cyBkZXIgYG11ZHMnLUxpc3RlIGFiZnJhZ2VuLgorCisgICAgRm9sZ2VuZGUgSW5mb3JtYXRpb25lbiAoPHR5cGU+KSBrb2VubmVuIGFiZ2VmcmFndCB3ZXJkZW46CisKKyAgICAgY29tbWFuZHMKKyAgICAgICAgVURQLUtvbW1hbmRvcywgZGllIGRhcyBNVUQgdmVyc3RlaHQKKyAgICAgZW1haWwKKyAgICAgICAgRU1haWwtQWRyZXNzZSwgbWl0IGRlciBkYXMgTVVEIGJ6dy4gc2VpbmUgQWRtaW5pc3RyYXRvcmVuIHp1IGVycmVpY2hlbgorICAgICAgICBzaW5kCisgICAgIGhvc3RzCisgICAgICAgIERpZSBMaXN0ZSBkZXIgSG9zdHMsIG1pdCBkZW5lbiBkYXMgTVVEIGluIFZlcmJpbmR1bmcgc3RlaHQgKGltIHNlbGJlbgorICAgICAgICBGb3JtYXQgd2llIGAvZXRjL0lORVREX0hPU1RTJworICAgICBpbmV0ZAorICAgICAgICBEaWUgVmVyc2lvbnNudW1tZXIgZGVzIHZlcndlbmRldGVuIElORVRECisgICAgIGxpc3QKKyAgICAgICAgRGllIExpc3RlIGRlciBJbmZvcm1hdGlvbmVuLCBkaWUgbWFuIG1pdCBkZW0gYHVkcHEnLUJlZmVobCB2b24gZGVtIE1VRAorICAgICAgICBlcmhhbHRlbiBrYW5uIChkYXMga29lbm5lbiBtZWhyIG9kZXIgd2VuaWdlciBQdW5rdGUgc2VpbiwgYWxzIGluCisgICAgICAgIGRpZXNlciBMaXN0ZSBoaWVyIHZvcmhhbmRlbiBzaW5kLCBqZSBuYWNoIFZlcnNpb24gZGVzIElORVREIGF1ZiBkZXIKKyAgICAgICAgYW5kZXJlbiBTZWl0ZSkKKyAgICAgbXVkX3BvcnQKKyAgICAgICAgRGVyIFBvcnQsIHVudGVyIGRlbSBkYXMgTVVEIGxhZXVmdAorICAgICB0aW1lCisgICAgICAgIERpZSBTeXN0ZW16ZWl0IGRlcyBNVURzCisgICAgIHZlcnNpb24KKyAgICAgICAgRGllIFZlcnNpb25zbnVtbWVyIGRlcyB2ZXJ3ZW5kZXRlbiBHYW1lRHJpdmVycworCisgU0lFSEUgQVVDSDoKKyAgICBtdWRzCisKKyBMRVRaVEUgQWVOREVSVU5HOgorICAgIFRodSwgMjQuMDcuMTk5NywgMDk6MDA6MDAgdm9uIFdhcmdvbgpkaWZmIC0tZ2l0IGEvZG9jL21jbWQvdXBkIGIvZG9jL21jbWQvdXBkCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmQ2NjIzNmEKLS0tIC9kZXYvbnVsbAorKysgYi9kb2MvbWNtZC91cGQKQEAgLTAsMCArMSw3OSBAQAorCit1cGQKKy0tLQorCisgTUFHSUVSS09NTUFORE86CisgICAgdXBkIFsgLWFiY2RoZmlsbXJ2IF0gPGRhdGVpPiBbLi4uXQorCisgQVJHVU1FTlRFOgorCisgICAgIDxkYXRlaT4gWy4uLl0KKyAgICAgICAgZGllIHp1IGJlYXJiZWl0ZW5kZShuKSBEYXRlaShlbikKKworIEJFU0NIUkVJQlVORzoKKyAgICBEaWVzZXMgc3BlemllbGxlIEtvbW1hbmRvIHN0ZWxsdCBlaW4gZGF0ZWliYXNpZXJ0ZXMgVXBkYXRlIGRhci4gRXMKKyAgICB6ZXJzdG9lcnQgdW5kL29kZXIgbGFlZHQgZ2VsYWRlbmUgT2JqZWt0ZSAoQmx1ZXByaW50cykuCisKKyAgICBEaWUgRGF0ZWluYW1lbiBrb2VubmVuIGF1Y2ggTXVzdGVyIHdpZSAqIG9kZXIgPyBlbnRoYWx0ZW4uCisKKyAgICBXaXJkIGVpbiBPYmpla3QgbmljaHQgbnVyIHplcnN0b2VydCwgc29uZGVybiBhdWNoIG5ldSBlcnpldWd0LCBzbyB3aXJkCisgICAgQ29uZmlndXJlKCkgYmVudXR6dCwgc29mZXJuIGVzIGVpbmVzIGhhdCwgZC5oLiBkaWUgT2JqZWt0ZGF0ZW4gd2VyZGVuCisgICAgdm9yIGRlciBaZXJzdG9lcnVuZyBtaXR0ZWxzIENvbmZpZ3VyZSgpIGFiZ2VydWZlbiB1bmQgaW0gbmV1ZW4gT2JqZWt0IG1pdAorICAgIENvbmZpZ3VyZSgpIHdpZWRlciBnZXNldHp0LgorCisgICAgWnVzYWV0emxpY2gga29lbm5lbiBmb2xnZW5kZSBGbGFncyBhbmdlZ2ViZW4gd2VyZGVuOgorCisgICAgIC1hICBBbGxlIEluc3RhbnplbiAoQ2xvbmVzKSBkZXIgRGF0ZWkgd2VyZGVuIHplcnN0b2VydC4gRGEgZGF6dSBkaWUKKyAgICAgICAgIGdlc2FtdGUgT2JqZWt0bGlzdGUgZHVyY2hzdWNodCB3ZXJkZW4gbXVzcyB1bmQgZGllc2UgRnVua3Rpb24KKyAgICAgICAgIGVudHNwcmVjaGVuZCB6ZWl0YXVmd2VuZGlnIGlzdCwgc29sbHRlIG1hbiBkaWVzZXMgbnVyIG1pdCBCZWRhY2h0CisgICAgICAgICBiZW51dHplbi4KKyAgICAgLWIgIEZhbGxzIGVzIGJlaW0gVXBkYXRlIGVpbmVuIEZlaGxlciBnYWIsIHdpcmQgdmVyc3VjaHQsIGVpbiBCYWNrdHJhY2UKKyAgICAgICAgIGF1cyBgLzxyZWNobmVyPi5kZWJ1Zy5sb2cnIHp1IGxlc2VuLgorICAgICAtQyAgRGllIE51dHp1bmcgdm9uIENvbmZpZ3VyZSgpIHdpcmQgZXJ6d3VuZ2VuLCBkLmguIE9iamVrdGUsIGRpZSBrZWluCisgICAgICAgICBvZWZmZW50bGljaGVzIENvbmZpZ3VyZSgpIGhhYmVuLCB3ZXJkZW4gbmljaHQgemVyc3RvZXJ0L2Vyc2V0enQuCisgICAgICAgICAoaW0gWnVzYW1tZW5zcGllbCBtaXQgLWwgb2RlciAtciwgaW5rb21wYXRpYmVsIG1pdCAtYykKKyAgICAgLWMgIERpZSBQcm9wZXJ0aWVzIGRlcyBPcmlnaW5hbG9iamVrdGVzIHdlcmRlbiBrb3BpZXJ0LiBJbiBkaWVzZW0gRmFsbAorICAgICAgICAgd2lyZCBDb25maWd1cmUoKSBfbmljaHRfIGJlbnV0enQgKGltIFp1c2FtbWVuc3BpZWwgbWl0IC1sIHVuZCAtciwKKyAgICAgICAgIGlua29tcGF0aWJlbCBtaXQgLUMpCisgICAgIC1kICBCZWltIFplcnN0b2VyZW4gZGVyIEluc3RhbnplbiB3ZXJkZW4gYXVjaCBldnRsLiBpbiBpaG5lbiB2b3JoYW5kZW5lCisgICAgICAgICBPYmpla3RlIHplcnN0b2VydC4gTnVldHpsaWNoLCB1bSB6LkIuIE5QQ3Mgc2FtdCBpaHJlciBBdXNydWVzdHVuZyB6dQorICAgICAgICAgZW50c29yZ2VuLgorICAgICAtZiAgQWxsZSBJbnN0YW56ZW4gKENsb25lcykgZGVyIERhdGVpIHdlcmRlbiBnZXN1Y2h0LgorICAgICAtaCAgRXMgd2lyZCBrZWluIHJlbW92ZSB2ZXJzdWNodCwgc29uZGVybiBzb2ZvcnQgZGVzdHJ1Y3QgdmVyd2VuZGV0LgorICAgICAgICAgQml0dGUgbnVyIGluIEF1c25haG1lZmFlbGxlbiB2ZXJ3ZW5kZW4uCisgICAgIC1pICBOaWNodCBudXIgZGllIERhdGVpIHNlbGJzdCB3aXJkIHplcnN0b2VydCwgc29uZGVybiBhdWNoIGFsbGUgZ2VlcmJ0ZW4KKyAgICAgICAgIEtsYXNzZW4gKHNvd2VpdCBzaWUgZ2VsYWRlbiBzaW5kKS4KKyAgICAgLWwgIERpZSBEYXRlaSB3aXJkIGdlbGFkZW4gKGFlaG5saWNoIHdpZSBiZWltIEJlZmVobCBsb2FkLCBhbGxlcmRpbmdzCisgICAgICAgICB3aXJkIGRhcyBhbHRlIE9iamVrdCB6ZXJzdG9lcnQsIGZhbGxzIGVzIHNjaG9uIGdlbGFkZW4gaXN0KS4KKyAgICAgLW0gIE1BS0UgLSB3aWUgLWksIGFiZXIgZXMgd2VyZGVuIG51ciBPYmpla3RlIHplcnN0b2VydCwgZGllIGFlbHRlciBzaW5kCisgICAgICAgICBhbHMgZGllIERhdGVpCisgICAgIC1yICBXZW5uIGVpbiBPYmpla3QgemVyc3RvZXJ0IHd1cmRlLCB3aXJkIHZlcnN1Y2h0LCBlcyBuZXUgenUgbGFkZW4uCisgICAgIC1zICBBbGxlIEVyZm9sZ3NtZWxkdW5nZW4gdW50ZXJnZW9yZG5ldGVyIFByb3plc3NlIHVudGVyZHJ1ZWNrZW4uCisgICAgIC12ICBEZXIgdm9sbGUgQWJoYWVuZ2lna2VpdHNiYXVtIHdpcmQgYXVzZ2VnZWJlbiAoaW0gWnVzYW1tZW5zcGllbCBtaXQKKyAgICAgICAgIC1tKQorCisgICAgRXMga29lbm5lbiBhdWNoIE9iamVrdGUgYW5nZWdlYmVuIHdlcmRlbiwgZGllIG5pY2h0IGFscyBEYXRlaSBleGlzdGllcmVuLAorICAgIGQuaC4gbWFuIGthbm4gYXVjaCBJbnN0YW56ZW4gbWl0IGRlbSAjIGltIE5hbWVuIHplcnN0b2VyZW4uIEF1c3NlcmRlbQorICAgIGtvZW5uZW4gbnVyIE9iamVrdGUsIGRpZSBtYW4gc2VsYnN0IHNjaHJlaWJlbiBkYXJmLCB6ZXJzdG9lcnQvZ2VsYWRlbgorICAgIHdlcmRlbi4KKworICAgIGB1cGQnIG1lcmt0IHNpY2ggZGFzIHp1bGV0enQgZ2VsYWRlbmUgb2RlciBnZWNsb250ZSBPYmpla3QhIERpZXMgd2lya3QKKyAgICBzaWNoIHZvciBhbGxlbSBkYW5uIGF1cywgd2VubiBtYW4gZWluIE9iamVrdCB6dW0gdGVzdGVuIGltbWVyIHdpZWRlcgorICAgIHplcnN0b2VyZW4sIHVwZGF0ZW4sIGxhZGVuIHVuZCBjbG9uZW4gbXVzcy4gRGllc2UgUmVpaGUgdm9uIEtvbW1hbmRvcyB3aXJkCisgICAgZHVyY2ggYHVwZCAtbXInIG9obmUgQXJndW1lbnQgYXVmIGRhcyB6dWxldHp0IGdlbGFkZW5lIG9kZXIgZ2Vsb250ZSBPYmpla3QKKyAgICB2b2xsem9nZW4uCisKKyBCRUlTUElFTEU6CisKKyAgICA+IHVwZCAqLmMKKyAgICA+IHVwZCAtciAqCisgICAgPiB1cGQgLW12IHRlc3QuYworICAgID4gdXBkIC1yIHRlc3QjMTIzNDUKKyAgICA+IHVwZCAtYXIgL2QvaW5zZWxuL21hbmRyYWdvbi9tZWxvcmFuL29iai9hbGxlL21lbG9yYW5fb2JqCisKKyBTSUVIRSBBVUNIOgorICAgIGRlc3RydWN0LCBsb2FkCisgICAgQ29uZmlndXJlKCkKKworIExFVFpURSBBRU5ERVJVTkc6CisgICAgVHVlLCBPY3QgMTAgMTg6NTA6MDAgMjAwMCB2b24gTWFuZHJhZ29uCmRpZmYgLS1naXQgYS9kb2MvbWNtZC92ZXJmb2xnZSBiL2RvYy9tY21kL3ZlcmZvbGdlCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjhjZmY0OGMKLS0tIC9kZXYvbnVsbAorKysgYi9kb2MvbWNtZC92ZXJmb2xnZQpAQCAtMCwwICsxLDQwIEBACisKK3ZlcmZvbGdlCistLS0tLS0tLQorCisgTUFHSUVSS09NTUFORE86CisgICAgdmVyZm9sZ2UgWzxuYW1lPl0KKworIEFSR1VNRU5URToKKworICAgIDxuYW1lPiAob3B0aW9uYWwpCisgICAgICAgTmFtZSBlaW5lcyBlaW5nZWxvZ2d0ZW4gU3BpZWxlcnMgb2RlciBlaW5lcyBOUENzLiBEZXIgYW5nZWdlYmVuZQorICAgICAgIE5hbWUgbXVzcyBlaW5kZXV0aWcgc2VpbiwgamVkb2NoIHJlaWNoZW4gZGllIEFuZmFuZ3NidWNoc3RhYmVuIGF1cy4KKyAgICAgICBXZW5uIGRhcyBkZXIgRmFsbCBpc3QsIHdpcmQgenVlcnN0IG5hY2ggZWluZW0gU3BpZWxlciBkaWVzZXMgTmFtZW5zCisgICAgICAgZ2VzdWNodCwgZGFuYWNoIG5hY2ggZWluZW0gTlBDIGltIHNlbGJlbiBSYXVtIHdpZSBkZXIgTWFnaWVyLCAKKyAgICAgICBhbnNjaGxpZXNzZW5kIG5hY2ggZWluZW0gTlBDIGlyZ2VuZHdvIHNvbnN0IGltIE11ZC4gRmFsbHMgc2ljaCBkYXMgCisgICAgICAgWmllbG9iamVrdCBuaWNodCBpbSBzZWxiZW4gUmF1bSB3aWUgZGVyIE1hZ2llciBiZWZpbmRldCwgd2lyZCBlcgorICAgICAgIGhpbmJld2VndC4KKworICAgICAgIERlciBNYWdpZXIga2FubiBzaWNoIG5pY2h0IHNlbGJzdCB2ZXJmb2xnZW4uCisKKyAgICAgICBFcyB3ZXJkZW4gbnVyIExlYmV3ZXNlbiBnZWZ1bmRlbiwgZGllIGVpbiBFbnZpcm9ubWVudCBoYWJlbiwgZGVubgorICAgICAgIG51ciBkaWVzZSBrb2VubmVuIHNpbm52b2xsIHZlcmZvbGd0IHdlcmRlbi4KKworIEJFU0NIUkVJQlVORzoKKyAgICBEdSB2ZXJmb2xnc3QgZGVuIFNwaWVsZXIgb2RlciBkZW4gTlBDIDxuYW1lPiBkdXJjaCBkYXMgZ2FuemUgTVVELgorCisgICAgJ3ZlcmZvbGdlJyBvaG5lIFBhcmFtZXRlciBicmljaHQgZWluZSBha3RpdmUgVmVyZm9sZ3VuZyBhYi4KKworIEJFSVNQSUVMOgorICAgICd2ZXJmb2xnZSBodW0nIGJlZ2lubnQgZGllIFZlcmZvbGd1bmcgZWluZXIgSHVtbWVsLiBXZW5uIGplZG9jaCBIdW1uaQorICAgIGVpbmdlbG9nZ3Qgc2VpbiBzb2xsdGUsIGlzdCBkaWUgRWluZ2FiZSBuaWNodCBlaW5kZXV0aWcgdW5kIGVzIHdpcmQKKyAgICBlaW5lIEZlaGxlcm1lbGR1bmcgYXVzZ2VnZWJlbi4gSW4gZGllc2VtIEZhbGwga29lbm50ZSBtYW4gZGllIEFuZ2FiZSAKKyAgICBkdXJjaCBIaW56dWZ1ZWdlbiBlaW5lcyBaZWljaGVucyBwcmFlemlzaWVyZW4sIGJlaXNwaWVsc3dlaXNlIAorICAgICd2ZXJmb2xnZSBodW1tJy4KKworIFNJRUhFIEFVQ0g6CisgICAgZ290bywgc25vb3AKKworIExFVFpURSBBZU5ERVJVTkc6CisgICAgVGh1LCAyMS4wNC4yMDE2IHZvbiBBcmF0aG9ybgpkaWZmIC0tZ2l0IGEvZG9jL21jbWQvdmlzIGIvZG9jL21jbWQvdmlzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmY5ZjNiOTIKLS0tIC9kZXYvbnVsbAorKysgYi9kb2MvbWNtZC92aXMKQEAgLTAsMCArMSwxOSBAQAorCit2aXMKKy0tLQorCisgTUFHSUVSS09NTUFORE86CisgICAgdmlzIFtlXQorCisgQVJHVU1FTlRFOgorICAgIFdpcmQgZGVyIFBhcmFtYXRlciC0ZWAgYW5nZWdlYmVuLCBlcmhhbHRlbiBkaWUgTWl0c3BpZWxlciBkaWUKKyAgICBFcndhcnRlbWVsZHVuZ2VuIHdpZSBiZWltIEVpbmxvZ2dlbi4KKworIEJFU0NIUkVJQlVORzoKKyAgICBGYWxscyBEdSB1bnNpY2h0YmFyIHdhcnN0LCB3aXJzdCBEdSBudW4gd2llZGVyIHNpY2h0YmFyLgorCisgU0lFSEUgQVVDSDoKKyAgICBpbnZpcworCisgTEVUWlRFIEFlTkRFUlVORzoKKyAgICBUaHUsIDI0LjA3LjE5OTcsIDA5OjAwOjAwIHZvbiBXYXJnb24KZGlmZiAtLWdpdCBhL2RvYy9tY21kL3phcCBiL2RvYy9tY21kL3phcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5iMGJmNTE1Ci0tLSAvZGV2L251bGwKKysrIGIvZG9jL21jbWQvemFwCkBAIC0wLDAgKzEsMjUgQEAKKworemFwCistLS0KKworIE1BR0lFUktPTU1BTkRPOgorICAgIHphcCA8bmFtZT4KKworIEFSR1VNRU5URToKKworICAgICA8bmFtZT4KKyAgICAgICAgTmFtZSBlaW5lcyBMZWJld2VzZW5zCisKKyBCRVNDSFJFSUJVTkc6CisgICAgRGFzIExlYmV3ZXNlbiA8bmFtZT4gd2lyZCBtaXQgZWluZW0gU2NobGFnIGdldG9ldGV0LiBEYWJlaSB3ZXJkZW4gZGllCisgICAgTWVsZHVuZ2VuIGF1cyBkZXIgUHJvcGVydHkgUF9aQVBfTVNHIGF1c2dlZ2ViZW4uCisKKyAgICBTcGllbGVyIGR1ZXJmZW4gbWl0IGRpZXNlbSBCZWZlaGwgbmljaHQgYmVlaW5mbHVzc3Qgd2VyZGVuIQorCisgICAgTWFnaWVyLUxlaHJsaW5nZW4gc3RlaHQgZGllc2VyIEJlZmVobCBub2NoIG5pY2h0IHp1ciBWZXJmdWVndW5nLgorCisgU0lFSEUgQVVDSDoKKyAgICB2ZXJ0cmFnLCB0b2V0ZQorCisgTEVUWlRFIEFlTkRFUlVORzoKKyAgICBUdWUsIDAyLjA5LjE5OTcsIDE2OjU1OjIwIHZvbiBXYXJnb24KZGlmZiAtLWdpdCBhL2RvYy9tY21kL3p3aW5nZSBiL2RvYy9tY21kL3p3aW5nZQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41ZjU3ZjczCi0tLSAvZGV2L251bGwKKysrIGIvZG9jL21jbWQvendpbmdlCkBAIC0wLDAgKzEsMjcgQEAKKworendpbmdlCistLS0tLS0KKworIE1BR0lFUktPTU1BTkRPOgorICAgIHp3aW5nZSA8bmFtZT4gW3p1XSA8a29tbWFuZG8+CisKKyBBUkdVTUVOVEU6CisKKyAgICAgPG5hbWU+CisgICAgICAgIE5hbWUgZWluZXMgTGViZXdlc2VucworICAgICA8a29tbWFuZG8+CisgICAgICAgIERpZSBhdXp1ZnVlaHJlbmRlIEFrdGlvbgorCisgQkVTQ0hSRUlCVU5HOgorICAgIERhcyBhbmdlZ2ViZW5lIExlYmV3ZXNlbiB3aXJkIGRhenUgZ2V6d3VuZ2VuLCBkaWUgYW5nZWdlYmVuZSBBa3Rpb24KKyAgICBhdXN6dWZ1ZWhyZW4uIEFsbGVyZGluZ3MgYmVoZXJyc2NoZW4gaW5zYmVzb25kZXJlIE5QQ3MgbmljaHQgYWxsZSBCZWZlaGxlLgorCisgICAgU3BpZWxlciBkdWVyZmVuIG1pdCBkaWVzZW0gQmVmZWhsIG5pY2h0IGJlZWluZmx1c3N0IHdlcmRlbiEKKworICAgIE1hZ2llci1MZWhybGluZ2VuIHN0ZWh0IGRpZXNlciBCZWZlaGwgbm9jaCBuaWNodCB6dXIgVmVyZnVlZ3VuZy4KKworIFNJRUhFIEFVQ0g6CisgICAgdmVydHJhZworCisgTEVUWlRFIEFlTkRFUlVORzoKKyAgICBUdWUsIDAyLjA5LjE5OTcsIDE2OjU1OjI0IHZvbiBXYXJnb24KZGlmZiAtLWdpdCBhL2RvYy9taXNzaW5nIGIvZG9jL21pc3NpbmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZWE2NWE5MgotLS0gL2Rldi9udWxsCisrKyBiL2RvYy9taXNzaW5nCkBAIC0wLDAgKzEsOCBAQAorRmVobGVuZGUgTWFucGFnZXMsIGRpZSBtYWwgZ2VzY2hyaWViZW4gd2VyZGVuIG11ZXNzdGVuOgorPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CisKKyogUF9NQUdJQ19SRVNJU1RBTkNFX09GRlNFVAorKiBQX0RFRlVFTF9MSU1JVF9GT09ELCBQX0RFRlVFTF9MSU1JVF9EUklOSworKiBQX0RFRlVFTF9USU1FX0ZPT0QsIFBfREVGVUVMX1RJTUVfRFJJTksKKyogUF9ERUZVRUxfQU1PVU5UX0ZPT0QsIFBfREVGVUVMX0FNT1VOVF9EUklOSworKiAKZGlmZiAtLWdpdCBhL2RvYy9vYmovZG9vcm1hc3RlciBiL2RvYy9vYmovZG9vcm1hc3RlcgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5jM2RmOTdiCi0tLSAvZGV2L251bGwKKysrIGIvZG9jL29iai9kb29ybWFzdGVyCkBAIC0wLDAgKzEsMjYgQEAKK0RlciBkb29ybWFzdGVyLmMgZGllbnQgYWxzIHplbnRyYWxlIFZlcndhbHR1bmdzc3RlbGxlIGZ1ZXIgZGllIFR1ZXJlbiBpbQorTW9yZ2VuR3JhdWVuLiBJbiBkZXIgUmVnZWwga29tbXQgbWFuIG1pdCBkaWVzZW0gT2JqZWt0IG5pY2h0IGluIEJlcnVlaHJ1bmcsCitkYSBkaWUgS29tbXVuaWthdGlvbiB1ZWJlciAvc3RkL3Jvb20vZG9vcnMuYyBsYWV1ZnQuCisKK0ZvbGdlbmRlIEZ1bmt0aW9uZW4gc3RlaGVuIHp1ciBFcnpldWd1bmcsIEFiZnJhZ2UgdW5kIE1hbmlwdWxhdGlvbiB2b24gVHVlcmVuCitiZXJlaXQ6CisKKyAqIE5ld0Rvb3IoKQorICAgICBUdWVyIGVpbmJhdWVuLiBXaXJkIGltIHVlYmxpY2hlcndlaXNlIGltIGNyZWF0ZSgpIGVpbmVzIFJhdW1zIGJlbnV0enQuCisKKyAqIFF1ZXJ5RG9vclN0YXR1cygpCisgICAgIFN0YXR1cyBlaW5lciBUdWVyIGFiZnJhZ2VuLgorCisgKiBTZXREb29yU3RhdHVzKCkKKyAgICAgU3RhdHVzIGVpbmVyIFR1ZXIgc2V0emVuLgorCisgKiBRdWVyeUFsbERvb3JzKCkKKyAgICAgR2lidCBlaW4gTWFwcGluZyBtaXQgYWxsZW4gVHVlcmVuIGltIE1HIHVuZCBkZXJlbiBadXN0YWVuZGVuIHp1cnVlY2suCisKKworU0lFSEUgQVVDSDoKKyAgICBOZXdEb29yKCksIFF1ZXJ5RG9vcktleSgpLCBRdWVyeURvb3JTdGF0dXMoKSwgU2V0RG9vclN0YXR1cygpLAorICAgIC9zdGQvcm9vbS9kb29ycy5jLCBHZXRQaGlvbGVuSW5mb3MoKSwgUXVlcnlBbGxEb29ycygpLCBQX0RPT1JfSU5GT1MKKworLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KK0xldHp0ZSBBZW5kZXJ1bmc6IERvbiwgMDguMDUuMjAxNCwgR2FieWxvbgpkaWZmIC0tZ2l0IGEvZG9jL29ic29sZXRlL2FkZF92ZXJiIGIvZG9jL29ic29sZXRlL2FkZF92ZXJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmNhNzE5MzMKLS0tIC9kZXYvbnVsbAorKysgYi9kb2Mvb2Jzb2xldGUvYWRkX3ZlcmIKQEAgLTAsMCArMSwyNyBAQAorCisgICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAgICAgKiAgQUNIVFVORzogRUZVTiBFWElTVElFUlQgTklDSFQgTUVIUiEgTklDSFQgVkVSV0VOREVOISAgKgorICAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisKK1NZTk9QU0lTOgorICAgICAgICB2b2lkIGFkZF92ZXJiKHN0cmluZyBzdHIpCisKK0RFU0NSSVBUSU9OOgorICAgICAgICBUaGlzIGZ1bmN0aW9uIGlzIGNvbm5lY3RlZCB0byB0aGUgYWRkX2FjdGlvbigpIGZ1bmN0aW9uLiBJdAorICAgICAgICB3aWxsIHNldCB1cCB0aGUgY29tbWFuZCBzdHIgdG8gdHJpZ2dlciBhIGNhbGwgdG8gdGhlIGZ1bmN0aW9uCisJc2V0IHVwIGJ5IHRoZSBwcmV2aW91cyBjYWxsIHRvIGFkZF9hY3Rpb24oKS4KKyAgICAgICAgCisgICAgICAgIFRoaXMgZnVuY3Rpb24gaXMgbm93IG9ic29sZXRlIGFzIHRoZSB2ZXJiIGNhbiBiZSBnaXZlbiBkaXJlY3RseQorCXdpdGggYWRkX2FjdGlvbigpLiBhZGRfdmVyYigpIHJlbWFpbnMgZm9yIGNvbXBhdGliaWxpdHkuCisKKwlbbWFyaW9uIFN1biBKYW4gMTkgMTk5MiBEb24ndCB1c2UgaXQuIFRoaXMgZmlsZSBpcyByZXRhaW5lZAorCWJlY2F1c2Ugb2Ygc29tZXdoYXQgbm9zdGFsZ2ljIHJlYXNvbnMuXQorCitISVNUT1JZCisgIFJlbW92ZWQgaW4gTERNdWQgMy4zIGFuZCBMUCAiMDMuMDIuMUAxNTAiLAorICBvYnNvbGV0ZWQgYnkgYWRkX2FjdGlvbigpLgorCitTRUUgQUxTTzoKKyAgICAgICAgYWRkX2FjdGlvbihFKSwgcXVlcnlfdmVyYihFKSwgYWRkX3h2ZXJiKEUpLCByZW1vdmVfYWN0aW9uKEUpCisKKzI5LjEwLjIwMDYgWmVzc3RyYQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2RvYy9vYnNvbGV0ZS9hZGRfeHZlcmIgYi9kb2Mvb2Jzb2xldGUvYWRkX3h2ZXJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmJjODFkYmIKLS0tIC9kZXYvbnVsbAorKysgYi9kb2Mvb2Jzb2xldGUvYWRkX3h2ZXJiCkBAIC0wLDAgKzEsMjggQEAKKworICAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisgICAgICogIEFDSFRVTkc6IEVGVU4gRVhJU1RJRVJUIE5JQ0hUIE1FSFIhIE5JQ0hUIFZFUldFTkRFTiEgICoKKyAgICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorCitTWU5PUFNJUworCXZvaWQgYWRkX3h2ZXJiKHN0cmluZyBzdHIpCisKK0RFU0NSSVBUSU9OCisJVGhpcyBmdW5jdGlvbiBpcyBjb25uZWN0ZWQgdG8gdGhlIGFkZF9hY3Rpb24oKSBmdW5jdGlvbi4gSXQKKwl3aWxsIHNldCB1cCB0aGUgY29tbWFuZCBzdHIgdG8gdHJpZ2dlciBhIGNhbGwgdG8gdGhlIGZ1bmN0aW9uCisJc2V0IHVwIGJ5IHRoZSBwcmV2aW91cyBjYWxsIHRvIGFkZF9hY3Rpb24oKS4KKwkKKwlhZGRfeHZlcmIoKSBkaWZmZXJzIGZyb20gYWRkX3ZlcmIoKSBpbiB0aGF0IG9ubHkgbGVhZGluZworCWNoYXJhY3RlcnMgb2YgdGhlIGlucHV0IGxpbmUgbXVzdCBtYXRjaCB3aXRoIHN0ci4gSXQgYmFzaWNhbGx5CisJaXMgdGhlIHNhbWUgYXMgc2V0dGluZyBmbGFnIGluIGFkZF9hY3Rpb24oKS4KKworCVttYXJpb24gU3VuIEphbiAxOSAxOTkyIERvbid0IHVzZSBpdC4gVGhpcyBmaWxlIGlzIHJldGFpbmVkCisJYmVjYXVzZSBvZiBzb21ld2hhdCBub3N0YWxnaWMgcmVhc29ucy5dCisKK0hJU1RPUlkKKyAgUmVtb3ZlZCBpbiBMRE11ZCAzLjMgYW5kIExQICIwMy4wMi4xQDE1MCIsCisgIG9ic29sZXRlZCBieSBhZGRfYWN0aW9uKCkuCisKK1NFRSBBTFNPCisJYWRkX2FjdGlvbihFKSwgcXVlcnlfdmVyYihFKSwgYWRkX3ZlcmIoRSkKKworMjkuMTAuMjAwNiBaZXNzdHJhClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZG9jL29ic29sZXRlL2FsbG9jYXRlX21hcHBpbmcgYi9kb2Mvb2Jzb2xldGUvYWxsb2NhdGVfbWFwcGluZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4yMmUxMjUyCi0tLSAvZGV2L251bGwKKysrIGIvZG9jL29ic29sZXRlL2FsbG9jYXRlX21hcHBpbmcKQEAgLTAsMCArMSwzMyBAQAorCisgICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAgICAgKiAgQUNIVFVORzogRUZVTiBFWElTVElFUlQgTklDSFQgTUVIUiEgTklDSFQgVkVSV0VOREVOISAgKgorICAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisKK1NZTk9QU0lTOgorCW1hcHBpbmcgbV9hbGxvY2F0ZShpbnQgc2l6ZSwgaW50IHdpZHRoKQorCitERVNDUklQVElPTjoKKwlSZXNlcnZlIG1lbW9yeSBmb3IgYSBtYXBwaW5nLgorCisJc2l6ZSBpcyB0aGUgbnVtYmVyIG9mIGVudHJpZXMgKGkuZS4ga2V5cykgdG8gcmVzZXJ2ZSwgd2lkdGggaXMKKwl0aGUgbnVtYmVyIG9mIGRhdGEgaXRlbXMgcGVyIGVudHJ5LiBJZiB0aGUgb3B0aW9uYWwgd2lkdGggaXMKKwlvbWl0dGVkLCAxIGlzIHVzZWQgYXMgZGVmYXVsdC4KKworCVRoaXMgaXMgdXNlZnVsIG9ubHkgd2hlbiB5b3UgYXJlIGdvaW5nIHRvIGNvbnN0cnVjdCBhIG1hcHBpbmcKKwl3aG9zZSBhcHByb3hpbWF0ZSBzaXplIHlvdSBrbm93IGJlZm9yZWhhbmQsIHRvIHNhdmUgb24gbWFsbG9jCisJb3ZlcmhlYWQuIElmIHlvdSBkb24ndCBmaWxsIGluIGRhdGEgZm9yIGFsbCB0aGUgYWxsb2NhdGVkCisJZWxlbWVudHMsIGFueSBsZWZ0b3ZlcnMgd2lsbCBiZSBmcmVlZCBhZnRlciB0aGUgY3VycmVudAorCWZ1bmN0aW9uIGV4ZWN1dGlvbiBlbmRlZC4gSXQgaXMgYWxzbyB1c2VmdWwgaWYgeW91IHdhbnQgdGhlCisJbWFwcGluZyB0byBoYXZlIGEgY2VydGFpbiB3aWR0aCBldmVuIGlmIHlvdSBkb24ndCBwcm92aWRlCisJYWxsIHRoZSBkYXRhIGl0ZW1zIGZvciB0aGUga2V5cyB5ZXQuCisKK0hJU1RPUlkKKyAgUmVuYW1lZCB0byAnbV9hbGxvY2F0ZSgpJyBpbiBMRE11ZCAzLjIuNiBhbmQgTFAgIjAzLjAyLjFAMTUwIi4KKyAgU2luY2UgTERNdWQgMy4yLjksIG5vdCBhdmFpbGFibGUgaWYgZHJpdmVyIGlzIGNvbXBpbGVkIHdpdGhvdXQKKyAgICBVU0VfREVQUkVDQVRFRC4KKyAgUmVtb3ZlZCBpbiBMRE11ZCAzLjMgYW5kIExQICIwMy4wMi4xQDE1MCIKKworU0VFIEFMU086CisJbWFwcGluZ3MoTFBDKSwgd2Fsa19tYXBwaW5nKEUpLCBnZXRfdHlwZV9pbmZvKEUpCisKKzI5LjEwLjIwMDYgWmVzc3RyYQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2RvYy9vYnNvbGV0ZS9hc3NvYyBiL2RvYy9vYnNvbGV0ZS9hc3NvYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5iZDVhOTQ1Ci0tLSAvZGV2L251bGwKKysrIGIvZG9jL29ic29sZXRlL2Fzc29jCkBAIC0wLDAgKzEsMzEgQEAKK09QVElPTkFMLCBWRVJBTFRFVAorU1lOT1BTSVMKKyAgICAgICAgaW50ICAgYXNzb2MobWl4ZWQga2V5LCBtaXhlZCAqa2V5cyk7CisgICAgICAgIG1peGVkIGFzc29jKG1peGVkIGtleSwgbWl4ZWQgKmFsaXN0IFssIG1peGVkIGZhaWxdKTsKKyAgICAgICAgbWl4ZWQgYXNzb2MobWl4ZWQga2V5LCBtaXhlZCAqa2V5cywgbWl4ZWQgKmRhdGEgWywgbWl4ZWQgZmFpbF0pOworCitCRVNDSFJFSUJVTkcKKyAgICAgICAgQWxsZSBkcmVpIEF1ZnJ1ZmUgc3VjaGVuIG5hY2ggZWluZW0gPGtleT4gaW4gZWluZW0gPGFsaXN0PiAoZWluZW0KKyAgICAgICAgQXJyYXkgdm9uIHp3ZWkgQXJyYXlzIGdsZWljaGVyIEdyb2Vzc2UpIG9kZXIgaW4gZWluZW0gZ2VvcmRuZXRlbgorICAgICAgICBBcnJheSA8a2V5cz4uIERlciBWZXJzdWNoLCBpbiBlaW5lbSBhbmRlcmVuIEtvbnN0cnVrdCB6dSBzdWNoZW4sCisgICAgICAgIGZ1ZWhydCB6dSBlaW5lbSB1bnZvcmhlcnNlaGJhcmVuIEVyZ2VibmlzLgorCisgICAgICAgIEtvbXBsZXhpdGFldDogTyggbGcobikgKSwgd29iZWkgPG4+IGRpZSBBbnphaGwgS2V5cyBpc3QuCisKKyAgICAgICAgMS4gIEZvcm06IEtleS1TdWNoZQorICAgICAgICAgICAgPGtleT4gd2lyZCBpbSBBcnJheSA8a2V5cz4gZ2VzdWNodC4gRGFzIFJlc3VsdGF0IGlzdCBkZXIgSW5kZXgsCisgICAgICAgICAgICBpbiBkZW0gPGtleT4gZ2VmdW5kZW4gd3VyZGUuIFdpcmQgPGtleT4gbmljaHQgZ2VmdW5kZW4sIGxpZWZlcnQKKyAgICAgICAgICAgIGFzc29jKCkgLTEuCisKKyAgICAgICAgMi4gIEZvcm06IFN1Y2hlIGluIEFsaXN0LgorICAgICAgICAgICAgPGtleT4gd2lyZCBpbiBkZXIgPGFsaXN0PiBnZXN1Y2h0LCBkYXMgUmVzdWx0YXQgc2luZCBkaWUgV2VydGUsCisgICAgICAgICAgICBkaWUgenUgPGtleT4gZ2Vob2VyZW4sIHdlbm4gPGtleT4gZ2VmdW5kZW4gd2lyZC4gV2VubiA8a2V5PiBuaWNodAorICAgICAgICAgICAgZ2VmdW5kZW4gd2lyZCwgd2lyZCAwIHp1cnVlY2sgZ2VsaWVmZXJ0IG9kZXIgPGZhaWw+LCBmYWxscworICAgICAgICAgICAgYW5nZWdlYmVuLgorCisgICAgICAgIERhbWl0IGRhcyBTaW5uIG1hY2h0LCBtdXNzIDxkYXRhPiBzbyBnZW9yZG5ldCBzZWluLCBkYXNzIGVzIHp1IDxrZXk+CisgICAgICAgIHBhc3N0LiBEaWVzZSBGb3JtIGRlciBTdWNoZSBpc3QgZGVzaGFsYiB2b3J3aWVnZW5kIGZ1ZXIKKyAgICAgICAgbXVsdGlkaW1lbnNpb25hbGUgQWxpc3RzIGdlZWlnbmV0LgorCitTSUVIRSBBVUNICisgICAgICAgIGFsaXN0cyhMUEMpLCBpbnNlcnRfYWxpc3QoRSksIG9yZGVyX2FsaXN0KEUpCmRpZmYgLS1naXQgYS9kb2Mvb2Jzb2xldGUvY29weV9tYXBwaW5nIGIvZG9jL29ic29sZXRlL2NvcHlfbWFwcGluZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5lYTI1ZWFiCi0tLSAvZGV2L251bGwKKysrIGIvZG9jL29ic29sZXRlL2NvcHlfbWFwcGluZwpAQCAtMCwwICsxLDM2IEBACisKKyAgICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorICAgICAqICBBQ0hUVU5HOiBFRlVOIEVYSVNUSUVSVCBOSUNIVCBNRUhSISBOSUNIVCBWRVJXRU5ERU4hICAqCisgICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKworU1lOT1BTSVM6CisJbWFwcGluZyBjb3B5KG1hcHBpbmcpCisKK0RFU0NSSVBUSU9OOgorICAgICAgICBDcmVhdGUgYSBzaGFsbG93IGNvcHkgb2YgPGFyZz4gYW5kIHJldHVybiBpdC4gRm9yIGFycmF5cyBhbmQgbWFwcGluZ3MKKyAgICAgICAgdGhpcyBtZWFucyB0aGF0IGEgbmV3IGFycmF5IG9yIG1hcHBpbmcgaXMgY3JlYXRlZCB3aXRoIGNvcGllcyBvZiB0aGUKKyAgICAgICAgb3JpZ2luYWwgY29udGVudC4gRW1iZWRkZWQgYXJyYXlzIGFuZCBtYXBwaW5ncyBhcmUgY29waWVkIGJ5IHJlZmVyZW5jZSEKKworRVhBTVBMRQorICAgICAgICBtaXhlZCAqYSwgKmI7CisKKyAgICAgICAgYSA9ICh7IDEsICh7IDIxLCAyMiB9KSB9KTsKKyAgICAgICAgYiA9IGNvcHkoYSk7CisgICAgICAgIGFbMF0gPSAtMTsgYVsxXVswXSA9IC0yMTsKKyAgICAgICAgIC0tPiBhIGlzIG5vdyAoeyAtMSwgKHsgLTIxLCAyMiB9KSB9KQorICAgICAgICAgICAgIGIgaXMgbm93ICh7ICAxLCAoeyAtMjEsIDIyIH0pIH0pCisKK1dBUk5JTkcKKwlLZWVwIGluIG1pbmQsIHRoYXQgYSBjb3B5IG9mIGEgbWFwcGluZywgdGhhdCBjb250YWlucyBhcnJheXMvbWFwcGluZ3MsCisJY29udGFpbnMgcmVmZXJlbmNlcyB0byB0aGVzZSBNYXBwaW5ncy9BcnJheXMsIG5vdCByZWFsIGNvcGllcy4gSWYgeW91CisJZG9uJ3QgdGFrZSBjYXJlLCB5b3UgY2FuIGEpIGNoYW5nZSB0aGUgb3JpZ2luYWwgbWFwcGluZ3Mgd2hpbGUgd29ya2luZworCW9uIHRoZSBjb3B5IGFuZCBiKSBjcmVhdGUgcmVjdXJzaXZlIG1hcHBpbmdzLCB0aGF0IGxlYWsgbWVtb3J5LgorCitISVNUT1JZCisgIFN1cGVyc2VlZGVkIGJ5IHRoZSBjb3B5KCkgZWZ1bi4KKyAgUmVtb3ZlZCBpbiBMRE11ZCAzLjMgYW5kIExQICIwMy4wMi4xQDE1MCIuCisKK1NFRSBBTFNPOgorCW1hcHBpbmdzKExQQykKKworMjYuIFNlcHRlbWJlciAyMDA2LCBaZXNzdHJhClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZG9jL29ic29sZXRlL2NyZWF0b3IgYi9kb2Mvb2Jzb2xldGUvY3JlYXRvcgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi40NGMzMjBlCi0tLSAvZGV2L251bGwKKysrIGIvZG9jL29ic29sZXRlL2NyZWF0b3IKQEAgLTAsMCArMSwyMiBAQAorCisgICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAgICAgKiAgQUNIVFVORzogRUZVTiBFWElTVElFUlQgTklDSFQgTUVIUiEgTklDSFQgVkVSV0VOREVOISAgKgorICAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisKK1NZTk9QU0lTCisgICAgICAgIHN0cmluZyBjcmVhdG9yKG9iamVjdCBvYikKKworREVTQ1JJUFRJT04KKyAgICAgICAgVGhpcyBmdW5jdGlvbnMgaXMgbm90IGF2YWlsYWJsZSBpbiBuYXRpdmUgbW9kZSwgd2hpY2ggdXNlcworICAgICAgICB1c2VyLWlkcyBpbnN0ZWFkLgorICAgICAgICBSZXR1cm5zIHRoZSBjcmVhdG9yIChpLmUuIHRoZSBuYW1lIG9mIHRoZSB3aXphcmQgb3IgZG9tYWluKSBvZgorICAgICAgICB0aGUgb2JqZWN0LiBEZWZhdWx0IGZvciBvYiBpcyB0aGlzX29iamVjdCgpLgorCitISVNUT1JZCisgICAgICAgIFNpbmNlIDMuMi4xQDQ3LCB0aGlzIGVmdW4gaXMgYW4gYWxpYXMgZm9yIGdldHVpZCgpLgorCitTRUUgQUxTTworICAgICAgICBnZXR1aWQoRSksIG5hdGl2ZShDKSwgdWlkcyhDKQorCitaZXNzdHJhLCAwNC4wMi4yMDA3CisKZGlmZiAtLWdpdCBhL2RvYy9vYnNvbGV0ZS9jcmVhdG9yX2ZpbGUgYi9kb2Mvb2Jzb2xldGUvY3JlYXRvcl9maWxlCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmM0ZmU2ZWYKLS0tIC9kZXYvbnVsbAorKysgYi9kb2Mvb2Jzb2xldGUvY3JlYXRvcl9maWxlCkBAIC0wLDAgKzEsMzIgQEAKKworICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAgICogQUNIVFVORzogV0lSRCBWT00gRFJJVkVSIE5JQ0hUIE1FSFIgR0VSVUZFTiEgTklDSFQgVkVSV0VOREVOISAqCisgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorCitTWU5PUFNJUworCXN0cmluZyBjcmVhdG9yX2ZpbGUobWl4ZWQgb2IpCisKK0RFU0NSSVBUSU9OCisJUmV0dXJuIHRoZSBuYW1lIG9mIHRoZSBjcmVhdG9yIG9mIGEgbmV3bHkgY3JlYXRlZCBvYmplY3QsIGkuZS4KKwl0aGUgbmFtZSBvZiB0aGUgdXNlciB0aGF0IGlzIHJlc3BvbnNpYmxlIGZvciB0aGUgTFBDIHNvdXJjZQorCWZpbGUgdGhlIG9iamVjdCB3YXMgbG9hZGVkIGZyb20uIElmIHRoZSBmdW5jdGlvbiByZXR1cm5zIDAsCisJdGhlIG9iamVjdCBjYW4ndCBiZSBsb2FkZWQgYW5kIGlzIGRlc3RydWN0ZWQgYWdhaW4KKwlpbW1lZGlhdGVseS4KKworCUluICFjb21wYXQgbW9kZSwgdGhlIHJldHVybmVkIHN0cmluZyBzZXJ2ZXMgYXMgdGhlIGluaXRpYWwgdWlkCisJKGBgY3VpZCcnKSBvZiB0aGUgb2JqZWN0LiBPYmplY3RzIHdob3NlIGN1aWQgaXMgdGhlCisJYmFja2JvbmUtaWQgd2lsbCB0aGVuIGdldCB0aGUgdWlkIG9mIHRoZSBjdXJyZW50bHkgYWN0aXZlIHVzZXIKKwlhcyB0aGVpciB1c2VyaWQgaW5zdGVhZC4KKworCVVuZGVyIGNvbXBhdCBtb2RlIHRoaXMgZnVuY3Rpb24gaXMgY2FsbGVkIGFzIHdlbGwuCisKKwlJZiB0aGlzIGZ1bmN0aW9uIGlzIG5vdCBwcm92aWRlZCBieSB0aGUgbWFzdGVyIG9iamVjdCwgbm8KKwlvdGhlciBvYmplY3QgY2FuIGJlIGxvYWRlZC4KKworSElTVE9SWQorCURyb3BwZWQgaW4gMy4yLjEsIHJlcGxhY2VkIGJ5IHRoZSBfVUlEIGRyaXZlciBob29rcy4KKworU0VFIEFMU08KKwl1aWRzKEMpLCBjcmVhdG9yKEUpCisKKzI5LjEwLjIwMDYgWmVzc3RyYQpkaWZmIC0tZ2l0IGEvZG9jL29ic29sZXRlL2RlZmluZV9pbmNsdWRlX2RpcnMgYi9kb2Mvb2Jzb2xldGUvZGVmaW5lX2luY2x1ZGVfZGlycwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi40NDM2MzA4Ci0tLSAvZGV2L251bGwKKysrIGIvZG9jL29ic29sZXRlL2RlZmluZV9pbmNsdWRlX2RpcnMKQEAgLTAsMCArMSwyNCBAQAorCisgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorICAgKiBBQ0hUVU5HOiBXSVJEIFZPTSBEUklWRVIgTklDSFQgTUVIUiBHRVJVRkVOISBOSUNIVCBWRVJXRU5ERU4hICoKKyAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisKK1NZTk9QU0lTCisJc3RyaW5nICpkZWZpbmVfaW5jbHVkZV9kaXJzKHZvaWQpCisKK0RFU0NSSVBUSU9OCisJUmV0dXJuIGFuIGFycmF5IG9mIHN0cmluZyBwYXR0ZXJucyBnaXZpbmcgdGhlIGFic29sdXQgcGF0aHMKKwl3aGVyZSB0byBzZWFyY2ggYW4gaW5jbHVkZSBmaWxlLiBUaGUgcGF0dGVybnMgaGF2ZSB0byBoYXZlIGEKKwklcyBhdCB0aGUgcGxhY2Ugd2hlcmUgdGhlIG5hbWUgZ2l2ZW4gaW4gdGhlICNpbmNsdWRlIHN0YXRlbWVudAorCWhhcyB0byBiZSBpbnNlcnRlZC4KKworRVhBTVBMRQorCWRlZmluZV9pbmNsdWRlX2RpcnMoKSB7IHJldHVybiAoeyAic3lzLyVzIiwgImxpYi8lcyIgfSk7IH0KKworSElTVE9SWQorCURyb3BwZWQgaW4gMy4yLjEsIHJlcGxhY2VkIGJ5IEhfSU5DTFVERV9ESVJTIGhvb2suCisKK1NFRSBBTFNPCisJbWFzdGVyKE0pCisKKzI5LjEwLjIwMDYgWmVzc3RyYQpkaWZmIC0tZ2l0IGEvZG9jL29ic29sZXRlL2VmdW4zMDggYi9kb2Mvb2Jzb2xldGUvZWZ1bjMwOApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi45ZWJiNDJkCi0tLSAvZGV2L251bGwKKysrIGIvZG9jL29ic29sZXRlL2VmdW4zMDgKQEAgLTAsMCArMSwyNyBAQAorCisgICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAgICAgKiAgQUNIVFVORzogRUZVTiBFWElTVElFUlQgTklDSFQgTUVIUiEgTklDSFQgVkVSV0VOREVOISAgKgorICAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisKK1NZTk9QU0lTCisJdm9pZCBlZnVuMzA4KG9iamVjdCBpdGVtLCBvYmplY3QgZW52KQorCitERVNDUklQVElPTgorCVRoZSBpdGVtIGlzIG1vdmVkIGludG8gaXRzIG5ldyBlbnZpcm9ubWVudCBlbnYsIHdoaWNoIG1heSBiZSAwLgorCVRoaXMgZWZ1biBpcyB0byBiZSB1c2VkIGluIHRoZSBtb3ZlX29iamVjdCgpIGhvb2ssIGFzIGl0IGRvZXMKKwlub3RoaW5nIGVsc2UgdGhhbiBtb3ZpbmcgdGhlIGl0ZW0gLSBubyBjYWxscyB0byBpbml0KCkgb3Igc3VjaC4KKworCURvbid0IHVzZSBpdCBpbiB5b3VyIG93biBvYmplY3RzIQorCitISVNUT1JZCisJSW50cm9kdWNlZCBpbiAzLjIuMUAxCisgIHJlbmFtZWQgdG8gJ3NldF9lbnZpcm9ubWVudCgpJyBpbiBMRE11ZCAzLjIuNiBhbmQgTFAgIjAzLjAyLjFAMTUwIi4KKyAgU2luY2UgTERNdWQgMy4yLjksIG5vdCBhdmFpbGFibGUgaWYgZHJpdmVyIGlzIGNvbXBpbGVkIHdpdGhvdXQKKyAgICBVU0VfREVQUkVDQVRFRC4KKyAgUmVtb3ZlZCBpbiBMRE11ZCAzLjMgYW5kIExQICIwMy4wMi4xQDE1MCIuCisKK1NFRSBBTFNPCisJcmVtb3ZlKEEpLCBpbml0KEEpLCBtb3ZlX29iamVjdChFKSwgdHJhbnNmZXIoRSksIGhvb2tzKEMpLAorCW5hdGl2ZShDKQorCisyOS4xMC4yMDA2IFplc3N0cmEKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9kb2Mvb2Jzb2xldGUvZXhjbHVkZV9hcnJheSBiL2RvYy9vYnNvbGV0ZS9leGNsdWRlX2FycmF5Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjk0NTdlMDMKLS0tIC9kZXYvbnVsbAorKysgYi9kb2Mvb2Jzb2xldGUvZXhjbHVkZV9hcnJheQpAQCAtMCwwICsxLDI3IEBACisKKyAgICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorICAgICAqICBBQ0hUVU5HOiBFRlVOIEVYSVNUSUVSVCBOSUNIVCBNRUhSISBOSUNIVCBWRVJXRU5ERU4hICAqCisgICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKworU1lOT1BTSVM6CisJbWl4ZWQgKmV4Y2x1ZGVfYXJyYXkobWl4ZWQgKmFyciwgaW50IGZyb20sIGludCB0bykKKworREVTQ1JJUFRJT046CisgIERlbGV0ZXMgYW4gc2VjdGlvbiBmcm9tIGFuIGFycmF5LgorCisgIFBsZWFzZSB1c2UgdGhlIHNsaWNpbmcgb3BlcmF0b3I6CisgIGFyciA9IGFyclswLi5mcm9tLTFdK2Fyclt0bysxLi48MV0KKyAgb3IgZXZlbiBiZXR0ZXI6CisgIGFycltmcm9tLi50b10gPSAoe30pOworCisgIFRoaXMgZWZ1biBpcyB0ZW1wb3JhcmlseSBhIHNpbXVsYXRlZCBlZnVuIHVudGlsIGlzIGZpbmFsbHkKKyAgZHJvcHBwZWQuCisKK0hJU1RPUlkKKyAgICAgICAgUmVtb3ZlZCBpbiBMRE11ZCAzLjMuCisKK1NFRSBBTFNPCisgICAgICAgIFtdKEUpCisKKzE2LjEyLjIwMDggWmVzc3RyYQorCmRpZmYgLS1naXQgYS9kb2Mvb2Jzb2xldGUvZXh0cmFjdCBiL2RvYy9vYnNvbGV0ZS9leHRyYWN0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmRlNDBlMDAKLS0tIC9kZXYvbnVsbAorKysgYi9kb2Mvb2Jzb2xldGUvZXh0cmFjdApAQCAtMCwwICsxLDI2IEBACisKKyAgICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorICAgICAqICBBQ0hUVU5HOiBFRlVOIEVYSVNUSUVSVCBOSUNIVCBNRUhSISBOSUNIVCBWRVJXRU5ERU4hICAqCisgICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKworU1lOT1BTSVMKKyAgICAgICAgc3RyaW5nIGV4dHJhY3Qoc3RyaW5nIHN0ciwgaW50IGZyb20sIGludCB0bykKKyAgICAgICAgc3RyaW5nIGV4dHJhY3Qoc3RyaW5nIHN0ciwgaW50IGZyb20pCisKK0RFU0NSSVBUSU9OCisJRE8gTk9UIFVTRSBUSElTIEVGVU4gQU5ZTU9SRSEgSVQgSEFTIEJFRU4gUkVNT1ZFRCBGUk9NIFRIRSBEUklWRVIuCisKKyAgICAgICAgRXh0cmFjdCBhIHN1YnN0cmluZyBmcm9tIGEgc3RyaW5nLgorICAgICAgICBUaGlzIGlzIHRoZSBvbGQgbm90YXRpb24gZm9yIHN0cltmcm9tLi50b10gYW5kIHN1cHBvcnRlZAorICAgICAgICBvbmx5IGZvciBoeXN0ZXJpY2FsIHJhaXNpbnMuCisgICAgICAgIAorICAgICAgICBJbiBMRE11ZCB0aGlzIGVmdW4gaXMgdGVtcG9yYXJpbHkgYSBzaW11bGF0ZWQgZWZ1biB1bnRpbCBpcyBmaW5hbGx5CisgICAgICAgIGRyb3BwcGVkLgorCitISVNUT1JZCisgICAgICAgIFJlbW92ZWQgaW4gTERNdWQgMy4zLgorCitTRUUgQUxTTworICAgICAgICBbXShFKQorCisxMS4xMS4yMDA2IFplc3N0cmEKZGlmZiAtLWdpdCBhL2RvYy9vYnNvbGV0ZS9maWxlX25hbWUgYi9kb2Mvb2Jzb2xldGUvZmlsZV9uYW1lCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjgxZjQyZGMKLS0tIC9kZXYvbnVsbAorKysgYi9kb2Mvb2Jzb2xldGUvZmlsZV9uYW1lCkBAIC0wLDAgKzEsMzYgQEAKKworICAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisgICAgICogIEFDSFRVTkc6IEVGVU4gRVhJU1RJRVJUIE5JQ0hUIE1FSFIhIE5JQ0hUIFZFUldFTkRFTiEgICoKKyAgICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorCitTWU5PUFNJUzoKKyAgc3RyaW5nIG9iamVjdF9uYW1lKCkKKyAgc3RyaW5nIG9iamVjdF9uYW1lKG9iamVjdCBvYikKKworREVTQ1JJUFRJT046CisgIEdldCB0aGUgZmlsZSBuYW1lIG9mIGFuIG9iamVjdCBvciBpZiBubyBhcmd1bWVudCBpcyBnaXZlbiBvZiB0aGUgY3VycmVudAorICBvYmplY3QuIElmIHRoZSBvYmplY3QgaXMgYSBjbG9uZWQgb2JqZWN0LCB0aGVuIGl0IHdpbGwgbm90IGhhdmUgYQorICBjb3JyZXNwb25kaW5nIGZpbGUgbmFtZSwgYnV0IHJhdGhlciBhIG5ldyBuYW1lIGJhc2VkIG9uIHRoZSBvcmlnaW5hbAorICBmaWxlIG5hbWUuCisgIFRoZSByZXR1cm5lZCBuYW1lIGFsd2F5cyBiZWdpbnMgd2l0aCAnLycgKGFic29sdXRlIHBhdGgpLAorCWV4Y2VwdCB3aGVuIHRoZSBwYXJzZXIgcnVucyBpbiBDT01QQVQgKC1vKSBtb2RlLgorCitFWEFNUExFUzoKKyAgZmluZF9vYmplY3Qob2JqZWN0X25hbWUob2IpKSA9PSBvYgorICBUaGlzIGlzIGd1YXJhbnRlZWQgdG8gYmUgdHJ1ZSBmb3IgYWxsIG9iamVjdHMgb2IgdGhhdCBhcmUgbm90CisgIGRlc3RydWN0ZWQuCisgIAorICBzaXplb2YoZXhwbG9kZShvYmplY3RfbmFtZShvYiksICIjIikpID09IDEKKyAgVGhpcyBpcyBhbHdheXMgdHJ1ZSBpZiBvYiBpcyBhIGJsdWUgcHJpbnQuCisKK0hJU1RPUlkKKyAgSW4gTERNdWQgMy4yLjYgcmVuYW1lZCB0byBvYmplY3RfbmFtZSgpLCB0aGlzIG9sZCBuYW1lIGlzCisgIGF2YWlsYWJsZSBhcyBhbGlhcy4KKyAgU2luY2UgTERNdWQgMy4yLjksIG5vdCBhdmFpbGFibGUgaWYgZHJpdmVyIGlzIGNvbXBpbGVkIHdpdGhvdXQKKyAgVVNFX0RFUFJFQ0FURUQuCisgIFJlbW92ZWQgaW4gTERNdWQgMy4zIGFuZCBMUCAiMDMuMDIuMUAxNTAiLgorCitTRUUgQUxTTzoKKyAgIGZpbmRfb2JqZWN0KEUpCisKKzI5LjEwLjIwMDYgWmVzc3RyYQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2RvYy9vYnNvbGV0ZS9maWx0ZXJfYXJyYXkgYi9kb2Mvb2Jzb2xldGUvZmlsdGVyX2FycmF5Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjc3MmNiMDMKLS0tIC9kZXYvbnVsbAorKysgYi9kb2Mvb2Jzb2xldGUvZmlsdGVyX2FycmF5CkBAIC0wLDAgKzEsMTUxIEBACisKKyAgICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorICAgICAqICBBQ0hUVU5HOiBFRlVOIEVYSVNUSUVSVCBOSUNIVCBNRUhSISBOSUNIVCBWRVJXRU5ERU4hICAqCisgICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKworZmlsdGVyX2FycmF5KEUpCisKK0ZVTktUSU9OOgorICAgICBtaXhlZCAqZmlsdGVyX2FycmF5KG1peGVkICphcnIsIHN0cmluZyBmdW4sIHN0cmluZ3xvYmplY3Qgb2IKKyAgICAgICAgICAgICAgICAgICAgICAgICBbLCBtaXhlZCBleHRyYSwgLi4uXSkKKyAgICAgbWl4ZWQgKmZpbHRlcl9hcnJheShtaXhlZCAqYXJyLCBjbG9zdXJlIGNsIFssIG1peGVkIGV4dHJhLCAuLi5dKQorICAgICBtaXhlZCAqZmlsdGVyX2FycmF5KG1peGVkICphcnIsIG1hcHBpbmcgbWFwKQorCitQQVJBTUVURVI6CisgICAgIGFycgktIHp1IGZpbHRlcm5kZXMgQXJyYXkKKyAgICAgZnVuL2NsCS0genUgcnVmZW5kZSBNZXRob2RlL0Nsb3N1cmUKKyAgICAgbWFwCS0gZmlsdGVybmRlcyBNYXBwaW5nCisgICAgIG9iCQktIE9iamVrdC9EYXRlaW5hbWUsIGFuIGRlbSBNZXRob2RlIGdlcnVmZW4gd2VyZGVuIHNvbGwKKyAgICAgZXh0cmEJLSB3ZWl0ZXJlIFBhcmFtZXRlciBmdWVyIE1ldGhvZGUvQ2xvc3VyZQorCitCRVNDSFJFSUJVTkc6CisgICAgIEZpbHRlcnQgZGllIEVsZW1lbnRlIGF1cyAnYXJyJyBkdXJjaCBkaWUgTWV0aG9kZSAnZnVuJywgZGllIENsb3N1cmUgJ2NsJworICAgICBvZGVyIGRhcyBNYXBwaW5nICdtYXAnIGluIGVpbiBuZXVlcyBBcnJheS4KKyAgICAgRnVlciBqZWRlcyBFbGVtZW50IGF1cyAnYXJyJyB3aXJkICdmdW4nIG9kZXIgJ2NsJyBtaXQgZGVtIEVsZW1lbnQgYWxzCisgICAgIGVyc3RlbSBQYXJhbWV0ZXIgW3VuZCBmb2xnZW5kIGRlbiBvcHRpb25hbGVuIEV4dHJhLVBhcmFtZXRlcm5dIGdlcnVmZW4KKyAgICAgYnp3LiAnbWFwJyBtaXQgZGVtIEVsZW1lbnQgaW5kaXppZXJ0LgorCisgICAgIFdlbm4gZGVyIEF1ZnJ1ZgorCW9iLT5mdW4oZWxlbWVudCBbLCBleHRyYTEsIGV4dHJhMiwgLi4uXSkgYnp3LgorCWZ1bmNhbGwoY2wsIGVsZW1lbnQgWywgZXh0cmExLCBleHRyYTIsIC4uLl0pCisgICAgIGFscyBSdWVja2dhYmV3ZXJ0ICE9MCB6dXJ1ZWNrZ2lidCBvZGVyIGRhcyBFbGVtZW50IGFscyBTY2hsdWVzc2VsIGltCisgICAgIE1hcHBpbmcgZW50aGFsdGVuIGlzdDoKKwltZW1iZXIobWFwLCBlbGVtZW50KSA9PSAxCisgICAgIGRhbm4gd2lyZCBkYXMgRWxlbWVudCBpbiBkYXMgbmV1ZSBBcnJheSBhdWZnZW5vbW1lbiwgc29uc3QgbmljaHQuCisKKworICAgICBWZXJ3ZW5kdW5nIHZvbiBNZXRob2RlbjoKKwlXZW5uIGJlaSBkZXIgQW5nYWJlIHZvbiAnZnVuJyBrZWluIE9iamVrdCAnb2InIGluIEZvcm0gZWluZXMgU3RyaW5ncworCW9kZXIgT2JqZWt0cyBhbmdlZ2ViZW4gd2lyZCwgd2lyZCB0aGlzX29iamVjdCgpIGFuZ2Vub21tZW4uCisKKyAgICAgVmVyd2VuZHVuZyB2b24gQ2xvc3VyZXM6CisJRXMga29lbm5lbiBzb3dvaGwgTGZ1bi1DbG9zdXJlcyBhbHMgYXVjaCBMYW1iZGEtQ2xvc3VyZXMgdmVyd2VuZGV0CisJd2VyZGVuLiBMZnVuLUNsb3N1cmVzIGtvZW5uZW4sIHdlbm4gaW0gc2VsYmVuIE9iamVrdCB2b3JoYW5kZW4gYXVjaAorCSdwcml2YXRlJyBvZGVyL3VuZCAnc3RhdGljJyBkZWtsYXJpZXJ0IHNlaW4sIG11ZXNzZW4gYWJlciB6dSBkZW0KKwlaZWl0cHVua3QgZGVyIFZlcndlbmR1bmcgYmVrYW5udCBzZWluIChGdW5rdGlvbnNwcm90b3R5cGVuIGJlbnV0emVuKS4KKworUlVlQ0tHQUJFV0VSVDoKKyAgICAgR2VmaWx0ZXJ0ZXMgQXJyYXkgbWl0IEZpbHRlcmJlZGluZ3VuZyBlcmZ1ZWxsZW5kZW4gRWxlbWVudGVuLgorCitCRU1FUktVTkdFTjoKKyAgICAgKDEpIEFjaHR1bmcsIGRpZSBFbGVtZW50ZSBpbiAnYXJyJyB3ZXJkZW4gbmljaHQgdGllZiBrb3BpZXJ0LCBzaW5kIHNpZQorICAgICBhbHNvIHNlbGJzdCBBcnJheXMgb2RlciBNYXBwaW5ncywgc28gZnVlaHJ0IGVpbmUgc3BhZXRlcmUgQWVuZGVydW5nIGltCisgICAgIFJ1ZWNrZ2FiZS1BcnJheXMgenVyIEFlbmRlcnVuZyBpbSBVcnNwcnVuZ3NhcnJheToKKworICAgICBpbnQgKmksICpqOworICAgICBpPSh7KHsxLDIsM30pLCh7NCw1LDZ9KX0pOworICAgICBqPWZpbHRlcl9hcnJheShpLCAjJ3NpemVvZik7CS8vIGZpbHRlcnQgbGVlcmUgQXJyYXlzIGhlcmF1cworICAgICBqWzBdWzBdPTg7CisKKyAgICAgZnVlaHJ0IHp1OiBpPT1qPT0oeyh7OCwyLDN9KSwoezQsNSw2fSl9KTsKKworICAgICAoMikgRGFzIEtvcGllcmVuIGluIGRhcyBSdWVja2dhYmVtYXBwaW5nIGVyZm9sZ3QgZnVlciBqZWRlcyBFbGVtZW50IG5hY2gKKyAgICAgQXVzZnVlaHJ1bmcgZGVyIEZpbHRlcm1ldGhvZGUuIEFlbmRlcnVuZ2VuIGRlciBXZXJ0ZSBpbSBBcnJheSBpbiBkaWVzZXIKKyAgICAgTWV0aG9kZSAoZ2xvYmFsZSBWYXJpYWJsZS9VZWJlcmdhYmUgYWxzIFJlZmVyZW56IGFuIGZpbHRlcl9hcnJheSkKKyAgICAgc2NobGFnZW4gc2ljaCBhbHNvIGltIFJ1ZWNrZ2FiZWFycmF5IG5pZWRlci4KKworQkVJU1BJRUw6CisgICAgICMjIyBGaWx0ZXJlIGFsbGUgTGViZXdlc2VuIGluIGVpbmVtIFJhdW0gaW4gZWluIEFycmF5ICMjIworICAgICBmaWx0ZXJfYXJyYXkoYWxsX2ludmVudG9yeSh0aGlzX29iamVjdCgpKSwjJ2xpdmluZyk7CisKKworICAgICAjIyMgRmlsdGVyZSBhbGxlIHRhdWJlbiBTcGllbGVyIGltIFJhdW0gaW4gZWluIEFycmF5ICMjIworICAgICBzdGF0aWMgaW50IGZpbHRlcl9pc2RlYWYob2JqZWN0IHdobykgeworICAgICAgIHJldHVybihsaXZpbmcod2hvKSAmJiB3aG8tPlF1ZXJ5UHJvcChQX0RFQUYpKTsKKyAgICAgfQorICAgICAuLi4KKyAgICAgZmlsdGVyX2FycmF5KGFsbF9pbnZlbnRvcnkodGhpc19vYmplY3QoKSksICMnZmlsdGVyX2lzZGVhZik7CisKKworICAgICAjIyMgRmlsdGVybiB2b24gSWRsZXJuICg+PTEgU2VrdW5kZSBpZGxlKSAjIyMKKyAgICAgLy8gRm9sZ2VuZCBpZGVudGlzY2hlIFJlc3VsdGF0ZSwgYWJlciBhbmRlcmUgQW5zYWV0emU6CisKKyAgICAgIzE6IG51dHp0IGRpZSBFZnVuIHF1ZXJ5X2lkbGUoKSBhbHMgTGZ1bi1DbG9zdXJlIChpZGVhbCBoaWVyKQorICAgICBpZGxlX3VzciA9IGZpbHRlcl9hcnJheSh1c2VycygpLCAjJ3F1ZXJ5X2lkbGUgKTsKKworICAgICAjMiwzOiBtaXQgRmlsdGVybWV0aG9kZQorICAgICBpbnQgY2hlY2tfaWZfaWRsZShvYmplY3QgdXNlcikgeworICAgICAgcmV0dXJuIHF1ZXJ5X2lkbGUodXNlcik7CisgICAgIH0KKyAgICAgICMyOiBmaWx0ZXJ0IG1pdHRlbHMgZGVyIExmdW4gaW0gc2VsYmVuIE9iamVrdCBkaWUgSWRsZXIgaW4gZGFzCisgICAgICAgICAgUnVlY2tnYWJlYXJyYXlzCisgICAgICBpZGxlX3VzciA9IGZpbHRlcl9hcnJheSh1c2VycygpLCAiY2hlY2tfaWZfaWRsZSIpOworICAgICAgaWRsZV91c3IgPSBmaWx0ZXJfYXJyYXkodXNlcnMoKSwgImNoZWNrX2lmX2lkbGUiLCB0aGlzX29iamVjdCgpKTsKKworICAgICAgIzM6IHJ1ZnQgZGllIExmdW4gY2hlY2tfaWZfaWRsZSgpIGFscyBMZnVuLUNsb3N1cmUgKEZ1bmt0aW9uc3BvaW50ZXIpCisgICAgICBpZGxlX3VzciA9IGZpbHRlcl9hcnJheSh1c2VycygpLCAjJ2NoZWNrX2lmX2lkbGUgKTsKKworICAgICAjNDogbnV0enQgZWluZSBMYW1iZGEtQ2xvc3VyZSAobGFuZ3NhbWVyLCBuaWNodCBmdWVyIGFsbGUgbGVzZXJsaWNoKQorICAgICBpZGxlX3VzciA9IGZpbHRlcl9hcnJheSh1c2VycygpLCBsYW1iZGEoKHsndX0pLCAoeyMncXVlcnlfaWRsZSwgJ3V9KSkpOworCisKKyAgICAgIyMjIEZpbHRlcm4gdm9uIElkbGVybiAoPj0yMCBTZWt1bmRlbiBpZGxlKSBtaXQgRXh0cmFwYXJhbWV0ZXIgIyMjCisgICAgIC8vIEZvbGdlbmQgaWRlbnRpc2NoZSBSZXN1bHRhdGUsIGFiZXIgYW5kZXJlIEFuc2FldHplOgorCisgICAgICMxOiBkaWUgRWZ1biBrb2VubmVuIHdpciBuaWNodCBtZWhyIGRpcmVrdCBudXR6ZW4sIHdlaWwgc2llCisgICAgICAgICBkaWVzZW4gUGFyYW1ldGVyIG5pY2h0IHVudGVyc3R1ZXR6dAorICAgICAvLyBpZGxlX3VzciA9IGZpbHRlcl9hcnJheSh1c2VycygpLCAjJ3F1ZXJ5X2lkbGUgKTsKKworICAgICAjMiwzOiBtaXQgRmlsdGVybWV0aG9kZSAuLi4gbWl0IG5ldWVtIFBhcmFtZXRlcgorICAgICBpbnQgY2hlY2tfaWZfaWRsZShvYmplY3QgdXNlciwgaW50IGxlbmd0aCkgeworICAgICAgcmV0dXJuIHF1ZXJ5X2lkbGUodXNlcik+bGVuZ3RoOworICAgICB9CisgICAgICAjMjogZmlsdGVydCBtaXR0ZWxzIGRlciBMZnVuIGltIHNlbGJlbiBPYmpla3QgZGllIElkbGVyIGluIGRhcworICAgICAgICAgIFJ1ZWNrZ2FiZWFycmF5cyAuLi4gbWl0IGRyaXR0ZW0gUGFyYW1ldGVyIQorICAgICAgaWRsZV91c3IgPSBmaWx0ZXJfYXJyYXkodXNlcnMoKSwgImNoZWNrX2lmX2lkbGUiLCB0aGlzX29iamVjdCgpLCAyMCk7CisKKyAgICAgICMzOiBydWZ0IGRpZSBMZnVuIGNoZWNrX2lmX2lkbGUoKSBhbHMgTGZ1bi1DbG9zdXJlIChGdW5rdGlvbnNwb2ludGVyKQorICAgICAgaWRsZV91c3IgPSBmaWx0ZXJfYXJyYXkodXNlcnMoKSwgIydjaGVja19pZl9pZGxlLCAyMCk7CisKKyAgICAgIzQ6IG51dHp0IGVpbmUgTGFtYmRhLUNsb3N1cmUgKGxhbmdzYW1lciwgbmljaHQgZnVlciBhbGxlIGxlc2VybGljaCkKKyAgICAgaWRsZV91c3IgPQorICAgICAgIGZpbHRlcl9hcnJheSh1c2VycygpLAorICAgICAgICAgbGFtYmRhKCh7J3UsICdsfSksICh7Iyc+LCh7IydxdWVyeV9pZGxlLCAndX0pLCdsfSkpLAorICAgICAgICAgMjApOworCitBZVFVSVZBTEVOWkNPREUgKG5pY2h0IGVtcGZvaGxlbiwgbnVyIHp1bSBWZXJzdGFlbmRuaXMhKToKKyAgICAgaW50IGk7CisgICAgIG1peGVkICpyZXQ7IG1peGVkICppbnB1dDsKKworICAgICByZXQ9YWxsb2NhdGUoMCk7CisgICAgIGk9c2l6ZW9mKGlucHV0KTsKKyAgICAgd2hpbGUoaS0tKQorICAgICAgIGlmKG9iLT5mdW4oaW5wdXRbaV0gWywgZXh0cmExLCBleHRyYTIsIC4uLl0pKQorICAgICAgIC8vIGlmKGZ1bmNhbGwoY2wsIGlucHV0W2ldIFssIGV4dHJhMSwgZXh0cmEyLCAuLi5dKSkKKyAgICAgICAvLyBpZihtZW1iZXIobWFwLCBpbnB1dFtpXSkpCisgICAgICAgICByZXQrPSh7aW5wdXRbaV19KTsKK0hJU1RPUlkKKyAgICBTaW5jZSBMRE11ZCAzLjIuNiBvYnNvbGV0ZWQgYnkgZWZ1biBmaWx0ZXIoKS4KKyAgICBTaW5jZSBMRE11ZCAzLjIuOSwgbm90IGF2YWlsYWJsZSBpZiBkcml2ZXIgaXMgY29tcGlsZWQgd2l0aG91dAorICAgICAgVVNFX0RFUFJFQ0FURUQuCisgICAgUmVtb3ZlZCBpbiBMRE11ZCAzLjMgYW5kIExQICIwMy4wMi4xQDE1MCIuCisKK1NJRUhFIEFVQ0g6CisgICAgIEFycmF5czoJCWZtYXBfYXJyYXkoRSkKKyAgICAgT2JqZWt0YXJyYXlzOglmaWx0ZXJfb2JqZWN0cyhFKSwgbWFwX29iamVjdHMoRSkKKyAgICAgTWFwcGluZ3M6CQlmaWx0ZXIoRSksIG1hcChFKQorCisgICAgIFNvbnN0aWdlczoJCXNvcnRfYXJyYXkoRSksIHVuaXF1ZV9hcnJheSgpCisJCQlhbGlzdCwgdHJhbnNwb3NlX2FycmF5KEUpCisKKzI5LjEwLjIwMDYgWmVzc3RyYQpkaWZmIC0tZ2l0IGEvZG9jL29ic29sZXRlL2ZpbHRlcl9hcnJheS5lbmcgYi9kb2Mvb2Jzb2xldGUvZmlsdGVyX2FycmF5LmVuZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi42NzM3OTI5Ci0tLSAvZGV2L251bGwKKysrIGIvZG9jL29ic29sZXRlL2ZpbHRlcl9hcnJheS5lbmcKQEAgLTAsMCArMSw2MCBAQAorCisgICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAgICAgKiAgQUNIVFVORzogRUZVTiBFWElTVElFUlQgTklDSFQgTUVIUiEgTklDSFQgVkVSV0VOREVOISAgKgorICAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisKK2ZpbHRlcl9hcnJheShFKQorU1lOT1BTSVMKKyAgICAgbWl4ZWQgKmZpbHRlcl9hcnJheShtaXhlZCAqYXJyLCBzdHJpbmcgZnVuLCBzdHJpbmd8b2JqZWN0IG9iCisgICAgICAgICAgICAgICAgICAgICAgICAgWywgbWl4ZWQgZXh0cmEsIC4uLl0pCisgICAgIG1peGVkICpmaWx0ZXJfYXJyYXkobWl4ZWQgKmFyciwgY2xvc3VyZSBjbCBbLCBtaXhlZCBleHRyYSwgLi4uXSkKKyAgICAgbWl4ZWQgKmZpbHRlcl9hcnJheShtaXhlZCAqYXJyLCBtYXBwaW5nIG1hcCBbLCBtaXhlZCBleHRyYSwgLi4uXSkKKworREVTQ1JJUFRJT04KKyAgICAgICAgUmV0dXJucyBhbiBhcnJheSBob2xkaW5nIHRoZSBpdGVtcyBvZiBhcnIgZmlsdGVyZWQgdGhyb3VnaAorICAgICAgICBvYi0+ZnVuKGVsZW1lbnQsIGV4dHJhLCAuLi4pLCB0aGUgY2xvc3VyZSBjbCwgb3IgdGhlIG1hcHBpbmcgbWFwLgorICAgICAgICBUaGUgZnVuY3Rpb24gJ2Z1bicgaW4gJ29iJyByZXNwLiB0aGUgY2xvc3VyZSAnY2wnIGlzIGNhbGxlZAorICAgICAgICBmb3IgZWFjaCBlbGVtZW50IGluIGFyciB3aXRoIHRoYXQgZWxlbWVudCBhcyBwYXJhbWV0ZXIuIFRoZQorICAgICAgICBleHRyYSBhbmQgZm9sbG93aW5nIHBhcmFtZXRlcnMgYXJlIGluIGVhY2ggY2FsbCBpZiBnaXZlbi4KKyAgICAgICAgVGhlIG1hcHBpbmcgJ21hcCcgaXMgbGlrZXdpc2UgaW5kZXhlZCBieSBlYWNoIGVsZW1lbnQuCisgICAgICAgIElmIG9iLT5mdW4oYXJyW2luZGV4XSwgZXh0cmEpIHJldHVybnMgIT0gMCByZXNwLgorICAgICAgICBtYXBbYXJyW2luZGV4XV0gZXhpc3RzLCB0aGUgZWxlbWVudCBpcyBpbmNsdWRlZCBpbiB0aGUKKyAgICAgICAgcmV0dXJuZWQgYXJyYXkuCisKKyAgICAgICAgSWYgYXJyIGlzIG5vdCBhbiBhcnJheSwgYW4gZXJyb3Igb2NjdXJzLgorCisgICAgICAgIFRoZSBleHRyYSBhcmd1bWVudChzKSBhcmUgb3B0aW9uYWwgYW5kIG11c3Qgbm90IGJlIHByb3RlY3RlZAorICAgICAgICByZWZlcmVuY2VzIGxpa2UgJihpWzBdKS4KKyAgICAgICAgSWYgPG9iPiBpcyBvbWl0dGVkLCBvciBuZWl0aGVyIGEgc3RyaW5nIG5vciBhbiBvYmplY3QsIGl0CisgICAgICAgIGRlZmF1bHRzIHRvIHRoaXNfb2JqZWN0KCkuCisKKyAgICAgICAgU2luY2UgMy4yLjFAMzYsIHRoZSBzZWNvbmQgYXJnIGNhbiBhbHNvIGJlIGEgbWFwcGluZy4gVGhlbgorICAgICAgICBvbmx5IHRoZSBlbGVtZW50cyBvZiB0aGUgYXJyYXkgd2hpY2ggYmVsb25nIHRvIHRoZSBtYXAgKGFzCisgICAgICAgIGtleXMpIHdpbGwgYmUgcmV0dXJuZWQgKGkuZS4gbWFwW2FycltpbmRleF1dICE9IDApLgorCitFWEFNUExFCisgICAgICAgIGludCBjaGVja19pZl9pZGxlKG9iamVjdCB1c2VyKSB7IHJldHVybiBxdWVyeV9pZGxlKHVzZXIpOyB9CisKKyAgICAgICAgLi4uCisKKyAgICAgICAgb2JqZWN0ICppZGxlX3VzZXJzOworCisgICAgICAgIGlkbGVfdXNlcnMgPSBmaWx0ZXJfYXJyYXkodXNlcnMoKSwgImNoZWNrX2lmX2lkbGUiKTsKKyAgICAgICAgLyogZXF1aXZhbGVudCBidXQgc21hbGxlciBhbmQgZmFzdGVyICovCisgICAgICAgIGlkbGVfdXNlcnMgPSBmaWx0ZXJfYXJyYXkodXNlcnMoKSwgIydxdWVyeV9pZGxlICk7CisKKyAgICAgICAgTm93IGlkbGVfdXNlcnMgY29udGFpbnMgYWxsIHVzZXJzIHRoYXQgaGF2ZSBiZWVuIGlkbGUgZm9yIG1vcmUKKyAgICAgICAgdGhhbiAxIHNlY29uZC4KKworSElTVE9SWQorICAgIFNpbmNlIExETXVkIDMuMi42IG9ic29sZXRlZCBieSBlZnVuIGZpbHRlcigpLgorICAgIFNpbmNlIExETXVkIDMuMi45LCBub3QgYXZhaWxhYmxlIGlmIGRyaXZlciBpcyBjb21waWxlZCB3aXRob3V0CisgICAgICBVU0VfREVQUkVDQVRFRC4KKyAgICBSZW1vdmVkIGluIExETXVkIDMuMyBhbmQgTFAgIjAzLjAyLjFAMTUwIi4KKworU0VFIEFMU086CisgICAgICAgIFNpbWlsYXIgZmlsdGVyOglmaWx0ZXJfYXJyYXkoRSksIGZpbHRlcl9vYmplY3QoRSksIGZpbHRlcihFKQorICAgICAgICBNYXBwaW5nOgltYXAoRSksIG1hcF9vYmplY3RzKEUpLCBtYXAoRSkKKyAgICAgICAgUmVsYXRlZDoJc29ydF9hcmF5KEUpLCB1bmlxdWVfYXJyYXkoRSkKKworMjkuMTAuMjAwNiBaZXNzdHJhCmRpZmYgLS1naXQgYS9kb2Mvb2Jzb2xldGUvZmlsdGVyX21hcHBpbmcgYi9kb2Mvb2Jzb2xldGUvZmlsdGVyX21hcHBpbmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYTcwYzcyNAotLS0gL2Rldi9udWxsCisrKyBiL2RvYy9vYnNvbGV0ZS9maWx0ZXJfbWFwcGluZwpAQCAtMCwwICsxLDEyNiBAQAorCisgICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAgICAgKiAgQUNIVFVORzogRUZVTiBFWElTVElFUlQgTklDSFQgTUVIUiEgTklDSFQgVkVSV0VOREVOISAgKgorICAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisKK2ZpbHRlcl9tYXBwaW5nKEUpCisKK0ZVTktUSU9OOgorICAgICBtYXBwaW5nIGZpbHRlcihtYXBwaW5nIG1hcCwgc3RyaW5nIGZ1biwgc3RyaW5nfG9iamVjdCBvYgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIFssIG1peGVkIGV4dHJhLCAuLi5dKQorICAgICBtYXBwaW5nIGZpbHRlcihtYXBwaW5nIG1hcCwgY2xvc3VyZSBjbCBbLCBtaXhlZCBleHRyYSwgLi4uXSkKKworUEFSQU1FVEVSOgorICAgICBtYXAJLSB6dSBmaWx0ZXJuZGVzIE1hcHBpbmcKKyAgICAgZnVuL2NsCS0genUgcnVmZW5kZSBNZXRob2RlL0Nsb3N1cmUKKyAgICAgb2IJCS0gT2JqZWt0L0RhdGVpbmFtZSwgYW4gZGVtIE1ldGhvZGUgZ2VydWZlbiB3ZXJkZW4gc29sbAorICAgICBleHRyYQktIHdlaXRlcmUgUGFyYW1ldGVyIGZ1ZXIgTWV0aG9kZS9DbG9zdXJlCisKK0JFU0NIUkVJQlVORzoKKyAgICAgRmlsdGVydCBkaWUgRWxlbWVudGUgKGpld2VpbHMgU2NobHVlc3NlbCkgYXVzICdtYXAnIGR1cmNoIGRpZQorICAgICBNZXRob2RlICdmdW4nIG9kZXIgZGllIENsb3N1cmUgJ2NsJyBpbiBlaW4gbmV1ZXMgTWFwcGluZy4KKyAgICAgRnVlciBqZWRlcyBFbGVtZW50IGF1cyAnbWFwJyB3aXJkICdmdW4nIG9kZXIgJ2NsJyBtaXQgZGVtIFNjaGx1ZXNzZWwgYWxzCisgICAgIGVyc3RlbSBQYXJhbWV0ZXIgW3VuZCBmb2xnZW5kIGRlbiBvcHRpb25hbGVuIEV4dHJhLVBhcmFtZXRlcm5dIGdlcnVmZW4uCisKKyAgICAgV2VubiBkZXIgQXVmcnVmCisJb2ItPmZ1bihlbGVtZW50IFssIGV4dHJhMSwgZXh0cmEyLCAuLi5dKSBiencuCisJZnVuY2FsbChjbCwgZWxlbWVudCBbLCBleHRyYTEsIGV4dHJhMiwgLi4uXSkKKyAgICAgYWxzIFJ1ZWNrZ2FiZXdlcnQgIT0wIHp1cnVlY2tnaWJ0IGRhbm4gd2lyZCBkZXIgU2NobHVlc3NlbCtXZXJ0ZSBpbiBkYXMKKyAgICAgbmV1ZSBBcnJheSBhdWZnZW5vbW1lbiwgc29uc3QgbmljaHQuCisKKyAgICAgV2VubiBhdWYgZGllIFdlcnRlIHp1Z2VncmlmZmVuIHdlcmRlbiBtdXNzLCBrYW5uIGRhcyBNYXBwaW5nICdtYXAnCisgICAgIHp1c2FldHpsaWNoIGFscyAnZXh0cmEnLVBhcmFtZXRlciB1ZWJlcmdlYmVuIHdlcmRlbi4gQWx0ZXJuYXRpdiBrYW5uIG1hbgorICAgICB3YWxrX21hcHBpbmcoKSBiZW51dHplbiB1bmQgZGFzIFJ1ZWNrZ2FiZW1hcHBpbmcgc2VsYnN0IGVyc3RlbGxlbi4KKworCisgICAgIFZlcndlbmR1bmcgdm9uIE1ldGhvZGVuOgorCVdlbm4gYmVpIGRlciBBbmdhYmUgdm9uICdmdW4nIGtlaW4gT2JqZWt0ICdvYicgaW4gRm9ybSBlaW5lcyBTdHJpbmdzCisJb2RlciBPYmpla3RzIGFuZ2VnZWJlbiB3aXJkLCB3aXJkIHRoaXNfb2JqZWN0KCkgYW5nZW5vbW1lbi4KKworICAgICBWZXJ3ZW5kdW5nIHZvbiBDbG9zdXJlczoKKwlFcyBrb2VubmVuIHNvd29obCBMZnVuLUNsb3N1cmVzIGFscyBhdWNoIExhbWJkYS1DbG9zdXJlcyB2ZXJ3ZW5kZXQKKwl3ZXJkZW4uIExmdW4tQ2xvc3VyZXMga29lbm5lbiwgd2VubiBpbSBzZWxiZW4gT2JqZWt0IHZvcmhhbmRlbiBhdWNoCisJJ3ByaXZhdGUnIG9kZXIvdW5kICdzdGF0aWMnIGRla2xhcmllcnQgc2VpbiwgbXVlc3NlbiBhYmVyIHp1IGRlbQorCVplaXRwdW5rdCBkZXIgVmVyd2VuZHVuZyBiZWthbm50IHNlaW4gKEZ1bmt0aW9uc3Byb3RvdHlwZW4gYmVudXR6ZW4pLgorCitSVWVDS0dBQkVXRVJUOgorICAgICBHZWZpbHRlcnRlcyBNYXBwaW5nIG1pdCBGaWx0ZXJiZWRpbmd1bmcgZXJmdWVsbGVuZGVuIEVsZW1lbnRlbi4KKworQkVNRVJLVU5HRU46CisgICAgICgxKSBBY2h0dW5nLCBkaWUgRWxlbWVudGUgaW4gJ21hcCcgd2VyZGVuIG5pY2h0IHRpZWYga29waWVydCwgc2luZCBzaWUKKyAgICAgYWxzbyBzZWxic3QgQXJyYXlzIG9kZXIgTWFwcGluZ3MsIHNvIGZ1ZWhydCBlaW5lIHNwYWV0ZXJlIEFlbmRlcnVuZyBpbQorICAgICBSdWVja2dhYmUtTWFwcGluZyB6dXIgQWVuZGVydW5nIGltIFVyc3BydW5nc21hcHBpbmc6CisKKyAgICAgbWFwcGluZyBtLG47CisgICAgIG09KFsxOih7MSwyfSksMDooezIsMyw0fSldKTsKKyAgICAgbj1maWx0ZXIobSwgIychKTsJCS8vIGZpbHRlcnQgYWxsZSBLZXlzICE9MCBoZXJhdXMKKyAgICAgblswXVswXT04OworCisgICAgIGZ1ZWhydCB6dTogbj0oWzA6KHs4LDMsNH0pXSkKKwkJbT0oWzA6KHs4LDMsNH0pLDE6KHsxLDJ9KV0pCisKKyAgICAgKDIpIERhcyBLb3BpZXJlbiBpbiBkYXMgUnVlY2tnYWJlbWFwcGluZyBlcmZvbGd0IGZ1ZXIgamVkZXMgRWxlbWVudCBuYWNoCisgICAgIEF1c2Z1ZWhydW5nIGRlciBGaWx0ZXJtZXRob2RlLiBBZW5kZXJ1bmdlbiBkZXIgV2VydGUgaW0gTWFwcGluZyBpbiBkaWVzZXIKKyAgICAgTWV0aG9kZSAoZ2xvYmFsZSBWYXJpYWJsZS9VZWJlcmdhYmUgYWxzIFJlZmVyZW56IGFuIGZpbHRlcikKKyAgICAgc2NobGFnZW4gc2ljaCBhbHNvIGltIFJ1ZWNrZ2FiZW1hcHBpbmcgbmllZGVyLgorCitCRUlTUElFTEU6CisgICAgICMjIyBlcmZ1bmRlbmUgTGlzdGUgbWl0IFNwaWVsZXJuIHNhZXViZXJuIC4uLiAjIyMKKyAgICAgbWFwcGluZyB4PShbIFsvaHVtYW46bGlhZmFyXTogIDIwLAorCQkgIFsvZHdhcmY6bWVzaXJpaV06IDUwLAorCQkgIFsvZWxmOnphcm5peWFdOiAgIDQwLAorCQkgIFsvZmVsaW5lOnR1cmJvXTogIDMwXSk7CisKKyAgICAgaW50IGlzX2JhZGd1eShvYmplY3Qgd2hvKSB7CisgICAgICBpZih3aG8tPkluRmlnaHQoKSkgcmV0dXJuIDE7CisgICAgICByZXR1cm4gMDsKKyAgICAgfQorCisgICAgIG1hcHBpbmcgcmVzdWx0PWZpbHRlcih4LCAjJ2lzX2JhZGd1eSk7CisgICAgIC8vICdyZXN1bHQnIGVudGhhZWx0IG51ciBub2NoIGthZW1wZmVuZGUgU3BpZWxlcgorCisgICAgICMjIyBlcmZ1bmRlbmUgTGlzdGUgdWViZXIgaWhyZSBXZXJ0ZSBzYWV1YmVybiAjIyMKKyAgICAgaW50IGlzX2JhZGd1eShvYmplY3Qgd2hvLCBtYXBwaW5nIG0pIHsKKyAgICAgIGlmKG1beF08MzApIHJldHVybiAxOworICAgICAgcmV0dXJuIDA7CisgICAgIH0KKworICAgICBtYXBwaW5nIHJlc3VsdD1maWx0ZXIoeCwgIydpc19iYWRndXksICZ4KTsgLy8gUmVmZXJlbnoKKyAgICAgLy8gJ3Jlc3VsdCcgZW50aGFlbHQgbnVyIFNwaWVsZXIgbWl0IFdlcnRlbiA+PSAzMAorCitBZVFVSVZBTEVOWkNPREUgKG5pY2h0IGVtcGZvaGxlbiwgbnVyIHp1bSBWZXJzdGFlbmRuaXMhKToKKyAgICAgaW50IGksIHdpZHRoOworICAgICBtYXBwaW5nIHJldDsgbWFwcGluZyBpbnB1dDsKKyAgICAgbWl4ZWQgKmluZGV4OworCisgICAgIHdpZHRoPWdldF90eXBlX2luZm8oaW5wdXQpWzFdOworICAgICByZXQ9bV9hbGxvY2F0ZSgwLCB3aWR0aCk7CisgICAgIGluZGV4PW1faW5kaWNlcyhpbnB1dCk7CisgICAgIGk9c2l6ZW9mKGluZGV4KTsKKyAgICAgd2hpbGUoaS0tKQorICAgICAgIGlmKG9iLT5mdW4oaW5kZXhbaV0gWywgZXh0cmExLCBleHRyYTIsIC4uLl0pKQorICAgICAgIC8vIGlmKGZ1bmNhbGwoY2wsIGluZGV4W2ldIFssIGV4dHJhMSwgZXh0cmEyLCAuLi5dKSkKKyAgICAgICB7CisgICAgICAgICBpbnQgajsKKyAgICAgICAgIGo9d2lkdGg7CisKKyAgICAgICAgIHdoaWxlKGotLSkKKyAgICAgICAgICAgcmV0W2luZGV4W2ldLGpdPWlucHV0W2luZGV4W2ldLGpdOworICAgICAgIH0KKworSElTVE9SWQorICAgIFNpbmNlIExETXVkIDMuMi42IG9ic29sZXRlZCBieSBlZnVuIGZpbHRlcl9pbmRpY2VzKCkuCisgICAgU2luY2UgTERNdWQgMy4yLjksIG5vdCBhdmFpbGFibGUgaWYgZHJpdmVyIGlzIGNvbXBpbGVkIHdpdGhvdXQKKyAgICAgIFVTRV9ERVBSRUNBVEVELgorICAgIFJlbW92ZWQgaW4gTERNdWQgMy4zIGFuZCBMUCAiMDMuMDIuMUAxNTAiLgorCitTSUVIRSBBVUNIOgorICAgICBBcnJheXM6CQlmaWx0ZXJfYXJyYXkoRSksIG1hcChFKQorICAgICBPYmpla3RhcnJheXM6CWZpbHRlcl9vYmplY3RzKEUpLCBtYXBfb2JqZWN0cyhFKQorICAgICBNYXBwaW5nczoJCW1hcChFKQorCisgICAgIFNvbnN0aWdlczoJCXdhbGtfbWFwcGluZyhFKSwgbV9jb250YWlucyhFKQorCQkJbWVtYmVyKCkKKwkJCW1faW5kaWNlcyhFKSwgbV92YWx1ZXMoRSkKKworMjkuMTAuMjAwNiBaZXNzdHJhCmRpZmYgLS1naXQgYS9kb2Mvb2Jzb2xldGUvZ2V0X3Jvb3RfdWlkIGIvZG9jL29ic29sZXRlL2dldF9yb290X3VpZApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5jMWRlMzI0Ci0tLSAvZGV2L251bGwKKysrIGIvZG9jL29ic29sZXRlL2dldF9yb290X3VpZApAQCAtMCwwICsxLDIwIEBACisKKyAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAgKiBBQ0hUVU5HOiBXSVJEIFZPTSBEUklWRVIgTklDSFQgTUVIUiBHRVJVRkVOISBOSUNIVCBWRVJXRU5ERU4hICoKKyAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKworU1lOT1BTSVMKKwlzdHJpbmcgZ2V0X3Jvb3RfdWlkKHZvaWQpCisKK0RFU0NSSVBUSU9OCisJUmV0dXJuIHRoZSBzdHJpbmcgdG8gYmUgdXNlZCBhcyByb290LXVpZC4KKwlVbmRlciAhbmF0aXZlLCB0aGUgZnVuY3Rpb24gaXMgZXhwZW5kYWJsZS4KKworSElTVE9SWQorCUluIDMuMi4xQDQwLCBnZXRfcm9vdF91aWQoKSB3YXMgcmVuYW1lZCB0byBnZXRfbWFzdGVyX3VpZCgpCisJYW5kIGdvdCBhIG5ldyBzZW1hbnRpYy4KKworU0VFIEFMU08KKwlnZXRfYmJfdWlkKE0pLCBnZXRfbWFzdGVyX3VpZChNKSwgdWlkcyhDKSwgY3JlYXRvcl9maWxlKE0pLCBjcmVhdG9yKEUpCisKKzI5LjEwLjIwMDYgWmVzc3RyYQpkaWZmIC0tZ2l0IGEvZG9jL29ic29sZXRlL2luaXRpYWxpc2F0aW9uIGIvZG9jL29ic29sZXRlL2luaXRpYWxpc2F0aW9uCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmUyNzAzNzYKLS0tIC9kZXYvbnVsbAorKysgYi9kb2Mvb2Jzb2xldGUvaW5pdGlhbGlzYXRpb24KQEAgLTAsMCArMSw0OCBAQAorT0JTT0xFVEUKK0NPTkNFUFQKKwlpbml0aWFsaXNhdGlvbgorCitERVNDUklQVElPTgorCVRoZXJlIGFyZSB0d28gZGlmZmVyZW50IGZsYXZvdXJzIG9mIGluaXRpYWxpc2F0aW9ucywKKwlzZWxlY3RhYmxlIGluIGNvbmZpZy5oIGF0IGRyaXZlciBjb21waWxlIHRpbWU6CisKKwlpKSAgI3VuZGVmIElOSVRJQUxJWkFUSU9OX0JZX19fSU5JVAorCS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCisJSW5pdGlhbGlzYXRpb24gaXMgZG9uZSBhdCBjb21waWxlIHRpbWUuIFRoaXMgaXMgZmFzdCBhbmQgY29zdHMKKwlubyBleHRyYSBjb2RlIGluIHRoZSBwcm9ncmFtLiAgQWxsb3dlZCBleHByZXNzaW9ucyBjdXJyZW50bHkKKwlpbmNsdWRlIGludGVnZXIgbGl0ZXJhbHMsIHN0cmluZyBsaXRlcmFscywgaW50ZWdlciBvcGVyYXRvcnMsCisJc3RyaW5nIGFkZGl0aW9uLCBicmFja2V0aW5nLCBhcnJheSBjb25zdHJ1Y3RvcnMsIHRoZSBlbXB0eQorCW1hcHBpbmcgYW5kIG9yZGVyX2FsaXN0KCkgLgorCVdoZW4gYW4gb2JqZWN0IHdpdGggaW5pdGlhbGlzZWQgdmFyaWFibGVzIGlzIGNsb25lZCBvcgorCWluaGVyaXRlZCwgYWxsIGluaXRpYWxpc2VkIHZhcmlhYmxlcyBhcmUgY29waWVkIGZyb20gdGhlCisJYmx1ZXByaW50LiAgQSBzcGVjaWFsIGFwcGxpY2F0aW9uIG9mIHRoaXMgZmVhdHVyZSBpcyB0byBoYXZlCisJYW4gaW5pdGlhbGlzZWQgbm9uLWVtcHR5IGFycmF5IG9yIGEgbWFwcGluZzsgaXQgd2lsbCBiZSBzaGFyZWQKKwlieSBhbGwgY2xvbmVzIG9yIGluaGVyaXRpbmcgb2JqZWN0cyB1bmxlc3MgYW4gYXNzaWdubWVudCB0bworCXRoZSB2YXJpYWJsZSAtIGFzIG9wcG9zZWQgdG8gYW4gYXNzaWdubWVudCB0byBhbiBlbGVtZW50IG9mCisJdGhlIGFycmF5L21hcHBpbmcgLSBpcyBkb25lIGluIGFsbCBjbG9uZXMgZXRjLiAgVG8gcHJldmVudAorCXVuYXV0aG9yaXNlZCBjaGVuZ2VzIGluIGluaXRpYWxpc2VkIGFycmF5cy9tYXBwaW5ncywgeW91IGNhbgorCWRlY2xhcmUgdGhlIHZhcmlhYmxlcyBhcyBgYHByaXZhdGUgc3RhdGljJycgb3IgdXNlIGEgbm9tYXNrCisJcmVzZXQvY3JlYXRlIHRoYXQgY2hlY2tzIGZvciB1bmRlc2lyZWQgaW5oZXJpdGFuY2UuCisKKwlpaSkgI2RlZmluZSBJTklUSUFMSVpBVElPTl9CWV9fX0lOSVQKKwktLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKKwlDcmVhdGVzIGEgZnVuY3Rpb24gbmFtZWQgX19JTklUKCkgZm9yIGFsbCB2YXJpYWJsZQorCWluaXRpYWxpc2F0aW9ucyBhbmQgZm9yIGNhbGxzIHRvIF9fSU5JVCgpIGluIGFsbCBpbmhlcml0ZWQKKwlvYmplY3RzLCBhbmQgcnVucyB0aGlzIGZ1bmN0aW9uIGF0IG9iamVjdCBjcmVhdGlvbiB0aW1lLgorCUFueSBlZnVuIGNhbiBiZSB1c2VkIGluIHRoZSBleHByZXNzaW9ucyBmb3IgdmFyaWFibGUKKwlpbml0aWFsaXNhdGlvbnMsIGV2ZW4gb25lcyB3aXRoIHNldmVyZSBzaWRlIGVmZmVjdHMsIGxpa2UKKwlkZXN0cnVjdCgpIG9yIHNodXRkb3duKCkgLiBUaGUgY29kZSBjcmVhdGVkIGZvciBfX0lOSVQoKSBpcyBhCisJbGl0dGxlIHdvcnNlIHRoYW4gYSBtZWRpdW0tc2tpbGxlZCBscGMtcHJvZ3JhbW1lciB3b3VsZAorCWdlbmVyYXRlLCBiZWNhdXNlIGl0IGlzIHNjYXR0ZXJlZCBhbGwgb3ZlciB0aGUgcHJvZ3JhbS4KKwlJdCBpcyBwb3NzaWJsZSAodGhvdWdoIGRpc2NvdXJhZ2VkKSB0byBvdmVybG9hZCBfX0lOSVQoKSB3aXRoCisJc2VsZndyaXR0ZW4gZnVuY3Rpb25zLgorCitISVNUT1JZCisgIFNpbmNlIExETXVkIDMuMywgb3JkZXJfYWxpc3QoKSBpcyBubyBsb25nZXIgYWNjZXB0ZWQgd2l0aG91dAorICAgIElOSVRJQUxJWkFUSU9OX0JZX19fSU5JVC4KKyAgTERNdWQgMy4zLjM3OCByZXBsYWNlZCB0aGlzIHN0YXRpYyBjaG9pY2Ugb2YgaW5pdGlhbGlzYXRpb24KKyAgICBtZXRob2RzIGJ5IGNvbXBpbGUtdGltZSBwcmFnbWFzLgorCisyOS4xMC4yMDA2IFplc3N0cmEKZGlmZiAtLWdpdCBhL2RvYy9vYnNvbGV0ZS9pbnRlcnNlY3RfYWxpc3QgYi9kb2Mvb2Jzb2xldGUvaW50ZXJzZWN0X2FsaXN0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjRiYmJjY2IKLS0tIC9kZXYvbnVsbAorKysgYi9kb2Mvb2Jzb2xldGUvaW50ZXJzZWN0X2FsaXN0CkBAIC0wLDAgKzEsMTQgQEAKK09QVElPTkFMCitTWU5PUFNJUworICAgICAgICBtaXhlZCAqIGludGVyc2VjdF9hbGlzdCAobWl4ZWQgKiBsaXN0MSwgbWl4ZWQgKiBsaXN0MikKKworREVTQ1JJUFRJT04KKyAgICAgICAgRG9lcyBhIGZhc3Qgc2V0IGludGVyc2VjdGlvbiBvbiBhbGlzdCBrZXkgdmVjdG9ycyAoTk9UIG9uIGZ1bGwgYWxpc3RzISkuCisgICAgICAgIFRoZSBvcGVyYXRvciAnJicgZG9lcyBzZXQgaW50ZXJzZWN0aW9uIG9uIGFycmF5cyBpbiBnZW5lcmFsLgorCitFWEFNUExFCisgICAgICAgIG5ld19saXN0ID0gaW50ZXJzZWN0X2FsaXN0KGxpc3QxLCBsaXN0Mik7CisKK1NFRSBBTFNPCisgICAgICAgIGZpbHRlcihFKSwgYXNzb2MoRSksIGluc2VydF9hbGlzdChFKSwgbWFwKEUpLAorICAgICAgICBtZW1iZXJfYXJyYXkoRSksIG9yZGVyX2FsaXN0KEUpLCBzb3J0X2FycmF5KEUpLCB1bmlxdWVfYXJyYXkoRSkKZGlmZiAtLWdpdCBhL2RvYy9vYnNvbGV0ZS9pc19jbG9uZSBiL2RvYy9vYnNvbGV0ZS9pc19jbG9uZQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5kMjViOWQ0Ci0tLSAvZGV2L251bGwKKysrIGIvZG9jL29ic29sZXRlL2lzX2Nsb25lCkBAIC0wLDAgKzEsNDEgQEAKKworICAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisgICAgICogIEFDSFRVTkc6IEVGVU4gRVhJU1RJRVJUIE5JQ0hUIE1FSFIhIE5JQ0hUIFZFUldFTkRFTiEgICoKKyAgICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorCitGVU5LVElPTjoKKwlpc19jbG9uZShtaXhlZCBvYikKKworQVJHVU1FTlRFOgorCW9iIC0gRGFzIHp1IHBydWVmZW5kZSBPYmpla3QKKworQkVTQ0hSRUlCVU5HOgorCWlzX2Nsb25lIHN0ZWxsdCBmZXN0LCBvYiBvYiBlaW4gZ2VjbG9udGVzIE9iamVrdCBpc3Qgb2RlciBuaWNodC4KKworUlVFQ0tHQUJFV0VSVDoKKwkxLCB3ZW5uIG9iIGVpbiBnZWNsb250ZXMgT2JqZWt0IGlzdCwgYW5zb25zdGVuIDAuCisKK0hJTldFSVM6CisgIERpZXMgaXN0IGVpbmUgU2ltdWwgRWZ1biwgZGllIGluendpc2NoZW4gdWViZXJmbHVzc2lnIGlzdCB1bmQgbnVyIGF1cworICBLb21wYXRpYmlsaXRhZXRzZ3J1ZW5kZW4gbm9jaCBleGlzdGllcnQuIEJpdHRlIGRpZSBFZnVuICdjbG9uZXAnIHZlcndlbmRlbiEKKworQkVJU1BJRUxFOgorCWluaGVyaXQgInN0ZC90aGluZyI7CisKKwkjaW5jbHVkZSA8cHJvcGVydGllcy5oPgorCisJY3JlYXRlKCkKKyAgICAgICAgeworICAgICAgICAgIGlmICghaXNfY2xvbmUodGhpc19vYmplY3QoKSkpIHsKKyAgICAgICAgICAgICAgc2V0X25leHRfcmVzZXQoLTEpOworICAgICAgICAgICAgICByZXR1cm47CisgICAgICAgICAgfQorCisgICAgICAgICAgOjogY3JlYXRlKCk7CisgICAgICAgICAgLi4uCisgICAgICAgIH0KKworc2llaGUgYXVjaDogY2xvbmVwCisKK1plc3N0cmEsIDA0LjAyLjIwMDcKKwpkaWZmIC0tZ2l0IGEvZG9jL29ic29sZXRlL21fc2l6ZW9mIGIvZG9jL29ic29sZXRlL21fc2l6ZW9mCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjIzMjZiNDcKLS0tIC9kZXYvbnVsbAorKysgYi9kb2Mvb2Jzb2xldGUvbV9zaXplb2YKQEAgLTAsMCArMSwyMSBAQAorCisgICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAgICAgKiAgQUNIVFVORzogRUZVTiBFWElTVElFUlQgTklDSFQgTUVIUiEgTklDSFQgVkVSV0VOREVOISAgKgorICAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisKK1NZTk9QU0lTOgorCWludCBzaXplb2YobWFwcGluZyBtYXApCisKK0RFU0NSSVBUSU9OOgorCVJldHVybiB0aGUgbnVtYmVyIG9mIGluZGljZXMgaW4gbWFwcGluZyAnbWFwJy4KKworSElTVE9SWQorICBTaW5jZSBMRE11ZCAzLjIuOSwgbm90IGF2YWlsYWJsZSBpZiBkcml2ZXIgaXMgY29tcGlsZWQgd2l0aG91dAorICAgIFVTRV9ERVBSRUNBVEVELgorICBSZW1vdmVkIGluIExETXVkIDMuMyBhbmQgTFAgIjAzLjAyLjFAMTUwIi4KKworU0VFIEFMU086CisJbWFwcGluZ3AoRSksIG1rbWFwcGluZyhFKSwgbV9pbmRpY2VzLChFKSBtX3ZhbHVlcyhFKSwKKwltX2RlbGV0ZShFKSwgd2lkdGhvZihFKQorCisyOS4xMC4yMDA2IFplc3N0cmEKZGlmZiAtLWdpdCBhL2RvYy9vYnNvbGV0ZS9tX3dpZHRoIGIvZG9jL29ic29sZXRlL21fd2lkdGgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYTZmYzdhNgotLS0gL2Rldi9udWxsCisrKyBiL2RvYy9vYnNvbGV0ZS9tX3dpZHRoCkBAIC0wLDAgKzEsMTUgQEAKKworICAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisgICAgICogIEFDSFRVTkc6IEVGVU4gRVhJU1RJRVJUIE5JQ0hUIE1FSFIhIE5JQ0hUIFZFUldFTkRFTiEgICoKKyAgICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorCitTWU5PUFNJUzoKKwlpbnQgd2lkdGhvZihtYXBwaW5nIG1hcCkKKworREVTQ1JJUFRJT046CisJUmV0dXJuIHRoZSBudW1iZXIgb2YgdmFsdWVzIHBlciBpbmRleCBpbiBtYXBwaW5nICdtYXAnLiBJdCBtZWFucworCXRoZSB3aWR0aCBvZiB0aGUgbWFwcGluZyAnbWFwJy4KKworU0VFIEFMU086CisJbWFwcGluZ3AoRSksIG1rbWFwcGluZyhFKSwgbV9pbmRpY2VzLChFKSBtX3ZhbHVlcyhFKSwKKwltX2RlbGV0ZShFKSwgc2l6ZW9mKEUpCmRpZmYgLS1naXQgYS9kb2Mvb2Jzb2xldGUvbWFwX2FycmF5IGIvZG9jL29ic29sZXRlL21hcF9hcnJheQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi40MTMyOWRiCi0tLSAvZGV2L251bGwKKysrIGIvZG9jL29ic29sZXRlL21hcF9hcnJheQpAQCAtMCwwICsxLDkwIEBACisKKyAgICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorICAgICAqICBBQ0hUVU5HOiBFRlVOIEVYSVNUSUVSVCBOSUNIVCBNRUhSISBOSUNIVCBWRVJXRU5ERU4hICAqCisgICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKworbWFwX2FycmF5KEUpCisKK0ZVTktUSU9OOgorICAgICBtaXhlZCAqbWFwKG1peGVkICphcnIsIHN0cmluZyBmdW4sIG9iamVjdCBvYiBbLCBtaXhlZCBleHRyYV0pCisgICAgIG1peGVkICptYXAobWl4ZWQgKmFyciwgY2xvc3VyZSBjbCBbLCBtaXhlZCBleHRyYV0pCisKK1BBUkFNRVRFUjoKKyAgICAgYXJyCS0genUgbWFwcGVuZGVzIEFycmF5CisgICAgIGZ1bi9jbAktIHp1IHJ1ZmVuZGUgTWV0aG9kZS9DbG9zdXJlCisgICAgIG9iCQktIE9iamVrdC9EYXRlaW5hbWUsIGFuIGRlbSBNZXRob2RlIGdlcnVmZW4gd2VyZGVuIHNvbGwKKyAgICAgZXh0cmEJLSB3ZWl0ZXJlIFBhcmFtZXRlciBmdWVyIE1ldGhvZGUvQ2xvc3VyZQorCitCRVNDSFJFSUJVTkc6CisgICAgIE1hcHBlZCBkaWUgRWxlbWVudGUgYXVzICdhcnInIGR1cmNoIGRpZSBNZXRob2RlICdmdW4nIG9kZXIgZGllIENsb3N1cmUgJ2NsJworICAgICBpbiBlaW4gbmV1ZXMgQXJyYXkuCisgICAgIEZ1ZXIgamVkZXMgRWxlbWVudCBhdXMgJ2Fycicgd2lyZCAnZnVuJyBvZGVyICdjbCcgbWl0IGRlbSBFbGVtZW50IGFscworICAgICBlcnN0ZW0gUGFyYW1ldGVyIFt1bmQgZm9sZ2VuZCBkZW4gb3B0aW9uYWxlbiBFeHRyYS1QYXJhbWV0ZXJuXSBnZXJ1ZmVuCisgICAgIGJ6dy4gJ21hcCcgbWl0IGRlbSBFbGVtZW50IGluZGl6aWVydC4KKworICAgICBEZXIgUnVlY2tnYWJld2VydCBkZXIgTWV0aG9kZS9DbG9zdXJlIHdpcmQgaW4gYW4gZGVyIEluZGV4cG9zaXRpb24gZGVzCisgICAgIEVsZW1lbnRlcyBpbiBkYXMgbmV1ZSBBcnJheSBlaW5nZXRyYWdlbi4KKworICAgICBWZXJ3ZW5kdW5nIHZvbiBNZXRob2RlbjoKKwlXZW5uIGJlaSBkZXIgQW5nYWJlIHZvbiAnZnVuJyBrZWluIE9iamVrdCAnb2InIGluIEZvcm0gZWluZXMgU3RyaW5ncworCW9kZXIgT2JqZWt0cyBhbmdlZ2ViZW4gd2lyZCwgd2lyZCB0aGlzX29iamVjdCgpIGFuZ2Vub21tZW4uCisKKyAgICAgVmVyd2VuZHVuZyB2b24gQ2xvc3VyZXM6CisJRXMga29lbm5lbiBzb3dvaGwgTGZ1bi1DbG9zdXJlcyBhbHMgYXVjaCBMYW1iZGEtQ2xvc3VyZXMgdmVyd2VuZGV0CisJd2VyZGVuLiBMZnVuLUNsb3N1cmVzIGtvZW5uZW4sIHdlbm4gaW0gc2VsYmVuIE9iamVrdCB2b3JoYW5kZW4gYXVjaAorCSdwcml2YXRlJyBvZGVyL3VuZCAnc3RhdGljJyBkZWtsYXJpZXJ0IHNlaW4sIG11ZXNzZW4gYWJlciB6dSBkZW0KKwlaZWl0cHVua3QgZGVyIFZlcndlbmR1bmcgYmVrYW5udCBzZWluIChGdW5rdGlvbnNwcm90b3R5cGVuIGJlbnV0emVuKS4KKworUlVlQ0tHQUJFV0VSVDoKKyAgICAgQXJyYXkgbWl0IFJ1ZWNrZ2FiZXdlcnRlbiBkZXIgTWV0aG9kZS9DbG9zdXJlLgorCitCRUlTUElFTEU6CisgICAgICMjIyBlcnNldHplIFN0cmluZ3MgZHVyY2ggaWhyZSBHcm9zc2NocmVpYnVuZyAjIyMKKyAgICAgbWFwKCh7ImFiYyIsImNkZSJ9KSwgIydjYXBpdGFsaXplKTsgPT0gKHsiQWJjIiwiQ2RlIn0pCisKKworICAgICAjIyMgZXJzZXR6ZSBpbiBlaW5lbSBTcGllbGVyb2JqZWt0YXJyYXkgZGllIE9iamVrdGUgZHVyY2ggaWhyZSBVSUQgIyMjCisgICAgIC8vIEZvbGdlbmQgaWRlbnRpc2NoZSBSZXN1bHRhdGUsIGFiZXIgYW5kZXJlIEFuc2FldHplOgorCisgICAgICMxOiBtaXQgZGVyIEVmdW4gZXR1aWQgZGlyZWt0IChpZGVhbCBoaWVyKQorICAgICBtYXAodXNlcnMoKSwgIydnZXR1aWQpOworCisgICAgICMyLDM6IG1pdCBNYXBtZXRob2RlCisgICAgIHN0cmluZyBtYWtlX3VpZChvYmplY3QgbykgeworICAgICAgcmV0dXJuIGdldHVpZChvKTsKKyAgICAgfQorICAgICAgIzI6IGFscyBMRnVuLUF1ZnJ1ZiBkZXIgTWFwbWV0aG9kZQorICAgICAgbWFwKHVzZXJzKCksICJtYWtlX3VpZCIpOworICAgICAgbWFwKHVzZXJzKCksICJtYWtlX3VpZCIsIHRoaXNfb2JqZWN0KCkpOworCisgICAgICAjMzogYWxzIExmdW4tQ2xvc3VyZS1BdWZydWYgZGVyIE1hcG1ldGhvZGUKKyAgICAgIG1hcCh1c2VycygpLCAjJ21ha2VfdWlkKTsKKworICAgICAjNDogbWl0IExhbWJkYS1DbG9zdXJlIChsYW5nc2FtZXIsIG5pY2h0IGZ1ZXIgYWxsZSBsZXNlcmxpY2gpCisgICAgIG1hcCh1c2VycygpLCBsYW1iZGEoKHsneH0pLCAoeyMnZ2V0dWlkLCAneH0pKSk7CisKK0FlUVVJVkFMRU5aQ09ERSAobmljaHQgZW1wZm9obGVuLCBudXIgenVtIFZlcnN0YWVuZG5pcyEpOgorICAgICBpbnQgaTsKKyAgICAgbWl4ZWQgKnJldDsgbWl4ZWQgKmlucHV0OworCisgICAgIGk9c2l6ZW9mKGlucHV0KTsKKyAgICAgcmV0PWFsbG9jYXRlKGkpOworICAgICB3aGlsZShpLS0pCisgICAgICAgcmV0W2ldPW9iLT5mdW4oaW5wdXRbaV0gWywgZXh0cmExLCBleHRyYTIsIC4uLl0pKTsKKyAgICAgICAvLyByZXRbaV09ZnVuY2FsbChjbCwgaW5wdXRbaV0gWywgZXh0cmExLCBleHRyYTIsIC4uLl0pOworCitISVNUT1JZCisgICAgU2luY2UgTERNdWQgMy4yLjYgb2Jzb2xldGVkIGJ5IG1hcCgpLgorICAgIFNpbmNlIExETXVkIDMuMi45LCBub3QgYXZhaWxhYmxlIGlmIGRyaXZlciBpcyBjb21waWxlZCB3aXRob3V0CisgICAgICBVU0VfREVQUkVDQVRFRC4KKyAgICBSZW1vdmVkIGluIExETXVkIDMuMyBhbmQgTFAgIjAzLjAyLjFAMTUwIi4KKworU0lFSEUgQVVDSDoKKyAgICAgQXJyYXlzOgkJZmlsdGVyX2FycmF5KEUpCisgICAgIE9iamVrdGFycmF5czoJZmlsdGVyX29iamVjdHMoRSksIG1hcF9vYmplY3RzKEUpCisgICAgIE1hcHBpbmdzOgkJZmlsdGVyKEUpLCBtYXAoRSkKKworICAgICBTb25zdGlnZXM6CQlzb3J0X2FycmF5KEUpLCB1bmlxdWVfYXJyYXkoKQorCQkJYWxpc3QsIHRyYW5zcG9zZV9hcnJheShFKQorCisyOS4xMC4yMDA2IFplc3N0cmEKZGlmZiAtLWdpdCBhL2RvYy9vYnNvbGV0ZS9tYXBfbWFwcGluZyBiL2RvYy9vYnNvbGV0ZS9tYXBfbWFwcGluZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4yMmM4NGMwCi0tLSAvZGV2L251bGwKKysrIGIvZG9jL29ic29sZXRlL21hcF9tYXBwaW5nCkBAIC0wLDAgKzEsODYgQEAKKworICAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisgICAgICogIEFDSFRVTkc6IEVGVU4gRVhJU1RJRVJUIE5JQ0hUIE1FSFIhIE5JQ0hUIFZFUldFTkRFTiEgICoKKyAgICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorCittYXBfbWFwcGluZyhFKQorCitGVU5LVElPTjoKKyAgICAgbWFwcGluZyBtYXAobWFwcGluZyBtLCBzdHJpbmcgZnVuLCBvYmplY3Qgb2IgWywgbWl4ZWQgZXh0cmFdKQorICAgICBtYXBwaW5nIG1hcChtYXBwaW5nIG0sIGNsb3N1cmUgY2wgWywgbWl4ZWQgZXh0cmFdKQorCitQQVJBTUVURVI6CisgICAgIGFycgktIHp1IG1hcHBlbmRlcyBBcnJheQorICAgICBmdW4vY2wJLSB6dSBydWZlbmRlIE1ldGhvZGUvQ2xvc3VyZQorICAgICBvYgkJLSBPYmpla3QvRGF0ZWluYW1lLCBhbiBkZW0gTWV0aG9kZSBnZXJ1ZmVuIHdlcmRlbiBzb2xsCisgICAgIGV4dHJhCS0gd2VpdGVyZSBQYXJhbWV0ZXIgZnVlciBNZXRob2RlL0Nsb3N1cmUKKworQkVTQ0hSRUlCVU5HOgorICAgICBNYXBwZWQgZGllIEVsZW1lbnRlIChqZXdlaWxzIFNjaGx1ZXNzZWwpIGF1cyAnbWFwJyBkdXJjaCBkaWUgTWV0aG9kZQorICAgICAnZnVuJyBvZGVyIGRpZSBDbG9zdXJlICdjbCcgaW4gZWluIG5ldWVzIE1hcHBpbmcuCisgICAgIEZ1ZXIgamVkZXMgRWxlbWVudCBhdXMgJ21hcCcgd2lyZCAnZnVuJyBvZGVyICdjbCcgbWl0IGRlbSBTY2hsdWVzc2VsIGFscworICAgICBlcnN0ZW0gUGFyYW1ldGVyIFt1bmQgZm9sZ2VuZCBkZW4gb3B0aW9uYWxlbiBFeHRyYS1QYXJhbWV0ZXJuXSBnZXJ1ZmVuLgorCisgICAgIERlciBSdWVja2dhYmV3ZXJ0IGRlciBNZXRob2RlL0Nsb3N1cmUgd2lyZCBpbiBmdWVyIGRlbiBTY2hsdWVzc2VsIGFscworICAgICBEYXRlbndlcnQgaW4gZGFzIG5ldWUgTWFwcGluZyBlaW5nZXRyYWdlbi4KKworICAgICBBQ0hUVU5HOiBBbGxlIGFuZGVyZW4gRGF0ZW4gYmVpIE1hcHBpbmcgbWl0IEJyZWl0ZT4xIHZlcmZhbGxlbiEKKworICAgICBWZXJ3ZW5kdW5nIHZvbiBNZXRob2RlbjoKKwlXZW5uIGJlaSBkZXIgQW5nYWJlIHZvbiAnZnVuJyBrZWluIE9iamVrdCAnb2InIGluIEZvcm0gZWluZXMgU3RyaW5ncworCW9kZXIgT2JqZWt0cyBhbmdlZ2ViZW4gd2lyZCwgd2lyZCB0aGlzX29iamVjdCgpIGFuZ2Vub21tZW4uCisKKyAgICAgVmVyd2VuZHVuZyB2b24gQ2xvc3VyZXM6CisJRXMga29lbm5lbiBzb3dvaGwgTGZ1bi1DbG9zdXJlcyBhbHMgYXVjaCBMYW1iZGEtQ2xvc3VyZXMgdmVyd2VuZGV0CisJd2VyZGVuLiBMZnVuLUNsb3N1cmVzIGtvZW5uZW4sIHdlbm4gaW0gc2VsYmVuIE9iamVrdCB2b3JoYW5kZW4gYXVjaAorCSdwcml2YXRlJyBvZGVyL3VuZCAnc3RhdGljJyBkZWtsYXJpZXJ0IHNlaW4sIG11ZXNzZW4gYWJlciB6dSBkZW0KKwlaZWl0cHVua3QgZGVyIFZlcndlbmR1bmcgYmVrYW5udCBzZWluIChGdW5rdGlvbnNwcm90b3R5cGVuIGJlbnV0emVuKS4KKworUlVlQ0tHQUJFV0VSVDoKKyAgICAgTWFwcGluZyBtaXQgU2NobHVlc3NlbDpSdWVja2dhYmV3ZXJ0ZW4gZGVyIE1ldGhvZGUvQ2xvc3VyZS4KKworQkVJU1BJRUxFOgorICAgICAvLyBlcnNldHplIGluIGVpbmVtIE1hcHBpbmcgZGllIERhdGVud2VydGUgZHVyY2ggZGFzIERvcHBlbHRlLAorICAgICAvLyBudXR6ZSBkYWJlaSBkaWUgRGF0ZW53ZXJ0ZSBkZXMgQWx0bWFwcGluZ3MgZHVyY2ggVWViZXJnYWJlIGFscworICAgICAvLyBleHRyYS1QYXJhbWV0ZXIKKworICAgICAvLyBBbm1lcmt1bmc6IERhcyBnZWh0IG1pdCB3YWxrX21hcHBpbmcoKSBlbGVnYW50ZXIhCisKKyAgICAgaW50IGRvX2RvdWJsZShzdHJpbmcga2V5LCBtYXBwaW5nIG0sIGludCBtdWx0KSB7CisgICAgICByZXR1cm4gbVtrZXldKm11bHQ7CisgICAgIH0KKworICAgICBtYXBwaW5nIHgsIHk7CisgICAgIHg9KFsiYSI6MiwgImIiOjNdKTsKKyAgICAgeT1tYXAoKFsiYSI6MiwgImIiOjNdKSwgIydkb19kb3VibGUsICZ4LCAzKTsKKworICAgICB5ID09IChbImEiOjYsImIiOjldKQorCitBZVFVSVZBTEVOWkNPREUgKG5pY2h0IGVtcGZvaGxlbiwgbnVyIHp1bSBWZXJzdGFlbmRuaXMhKToKKyAgICAgaW50IGk7CisgICAgIG1hcHBpbmcgcmV0OyBtYXBwaW5nIGlucHV0OworICAgICBtaXhlZCAqaW5kZXg7CisKKyAgICAgcmV0PW1fYWxsb2NhdGUoMCwgMSk7CisgICAgIGluZGV4PW1faW5kaWNlcyhpbnB1dCk7CisgICAgIGk9c2l6ZW9mKGluZGV4KTsKKyAgICAgd2hpbGUoaS0tKQorICAgICAgIHJldFtpbmRleFtpXV09b2ItPmZ1bihpbmRleFtpXSBbLCBleHRyYTEsIGV4dHJhMiwgLi4uXSkpCisgICAgICAgLy8gcmV0W2luZGV4W2ldXT1mdW5jYWxsKGNsLCBpbmRleFtpXSBbLCBleHRyYTEsIGV4dHJhMiwgLi4uXSk7CisKK0hJU1RPUlkKKyAgICBTaW5jZSBMRE11ZCAzLjIuNiBvYnNvbGV0ZWQgYnkgbWFwX2luZGljZXMoKS4KKyAgICBTaW5jZSBMRE11ZCAzLjIuOSwgbm90IGF2YWlsYWJsZSBpZiBkcml2ZXIgaXMgY29tcGlsZWQgd2l0aG91dAorICAgICAgVVNFX0RFUFJFQ0FURUQuCisgICAgUmVtb3ZlZCBpbiBMRE11ZCAzLjMgYW5kIExQICIwMy4wMi4xQDE1MCIuCisKK1NJRUhFIEFVQ0g6CisgICAgIEFycmF5czoJCWZpbHRlcl9hcnJheShFKSwgbWFwKEUpCisgICAgIE9iamVrdGFycmF5czoJZmlsdGVyX29iamVjdHMoRSksIG1hcF9vYmplY3RzKEUpCisgICAgIE1hcHBpbmdzOgkJZmlsdGVyKEUpCisKKyAgICAgU29uc3RpZ2VzOgkJd2Fsa19tYXBwaW5nKEUpLCBtX2NvbnRhaW5zKEUpCisJCQltZW1iZXIoKQorCQkJbV9pbmRpY2VzKEUpLCBtX3ZhbHVlcyhFKQorCisyOS4xMC4yMDA2IFplc3N0cmEKZGlmZiAtLWdpdCBhL2RvYy9vYnNvbGV0ZS9tYXBwaW5nX2NvbnRhaW5zIGIvZG9jL29ic29sZXRlL21hcHBpbmdfY29udGFpbnMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uODhkZjg5NwotLS0gL2Rldi9udWxsCisrKyBiL2RvYy9vYnNvbGV0ZS9tYXBwaW5nX2NvbnRhaW5zCkBAIC0wLDAgKzEsMjQgQEAKKworICAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisgICAgICogIEFDSFRVTkc6IEVGVU4gRVhJU1RJRVJUIE5JQ0hUIE1FSFIhIE5JQ0hUIFZFUldFTkRFTiEgICoKKyAgICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorCitTWU5PUFNJUzoKKwlpbnQgbV9jb250YWlucyhtaXhlZCAmZGF0YTEsIC4uLiwgJmRhdGFOLCBtYXAsIGtleSkKKworREVTQ1JJUFRJT046CisJSWYgdGhlIG1hcHBpbmcgY29udGFpbnMgdGhlIGtleSBtYXAsIHRoZSBjb3JyZXNwb25kaW5nIHZhbHVlcworCWFyZSBhc3NpZ25lZCB0byB0aGUgZGF0YSBhcmd1bWVudHMsIHdoaWNoIG1hc3NlZCBiZSBwYXNzZWQgYnkKKwlyZWZlcmVuY2UsIGFuZCAxIGlzIHJldHVybmVkLiBJZiBrZXkgaXMgbm90IGluIG1hcCwgMCBpcworCXJldHVybmVkIGFuZCB0aGUgZGF0YSBhcmdzIGFyZSBsZWZ0IHVuY2hhbmdlZC4KKworSElTVE9SWQorICBSZW5hbWVkIHRvICdtX2NvbnRhaW5zKCknIGluIExETXVkIDMuMi42LgorICBTaW5jZSBMRE11ZCAzLjIuOSwgbm90IGF2YWlsYWJsZSBpZiBkcml2ZXIgaXMgY29tcGlsZWQgd2l0aG91dAorICAgIFVTRV9ERVBSRUNBVEVELgorICBSZW1vdmVkIGluIExETXVkIDMuMyBhbmQgTFAgIjAzLjAyLjFAMTUwIi4KKworU0VFIEFMU086CisJbWFwcGluZ3MoTFBDKSwgbWVtYmVyKEUpCisKKzI5LjEwLjIwMDYgWmVzc3RyYQpkaWZmIC0tZ2l0IGEvZG9jL29ic29sZXRlL21lbWJlcl9hcnJheSBiL2RvYy9vYnNvbGV0ZS9tZW1iZXJfYXJyYXkKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMWI5NDhlNgotLS0gL2Rldi9udWxsCisrKyBiL2RvYy9vYnNvbGV0ZS9tZW1iZXJfYXJyYXkKQEAgLTAsMCArMSwzMCBAQAorCisgICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAgICAgKiAgQUNIVFVORzogRUZVTiBFWElTVElFUlQgTklDSFQgTUVIUiEgTklDSFQgVkVSV0VOREVOISAgKgorICAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisKK1NZTk9QU0lTOgorICAgIGludCBtZW1iZXJfYXJyYXkobWl4ZWQgaXRlbSwgbWl4ZWQgKmFycikKKyAgICBpbnQgbWVtYmVyX2FycmF5KG1peGVkIGl0ZW0sIHN0cmluZyBhcnIpCisKK0RFU0NSSVBUSU9OOgorICAgIERPIE5PVCBVU0UgVEhJUyBFRlVOIC0gSVQgSEFTIEJFRU4gUkVNT1ZFRCBGUk9NIFRIRSBEUklWRVIhCisgICAgUmV0dXJucyB0aGUgaW5kZXggb2YgdGhlIGZpcnN0IG9jY3VyZW5jZSBvZiBpdGVtIGluIGFycmF5IGFyciwKKyAgCW9yIG9jY3VyZW5jZSBvZiBhIGNoYXJhY3RlciBpbiBhIHN0cmluZy4gSWYgbm90IGZvdW5kLCB0aGVuIC0xCisgIAlpcyByZXR1cm5lZC4KKyAgICAgICAgCisgICAgSWYgeW91IHdhbnQgdG8gc2VhcmNoIHRocm91Z2ggYW4gYWxpc3QsIHVzZSBhc3NvYygpIGJlY2F1c2UKKyAgICBtZW1iZXJfYXJyYXkoKSBpcyBnb29kIGZvciB1bnNvcnRlZCBidXQgYXNzb2MoKSBpcyBmYXN0ZXIgZm9yCisgICAgc29ydGVkIGFycmF5cy4KKyAgICAgICAgCisgICAgSW4gTERNdWQgdGhpcyBlZnVuIGlzIHRlbXBvcmFyaWx5IGEgc2ltdWxhdGVkIGVmdW4gdW50aWwgaXMgZmluYWxseQorICAgIGRyb3BwcGVkLgorCitISVNUT1JZCisgICAgU3VwZXJzZWVkZWQgYnkgbWVtYmVyKCkuCisgICAgUmVtb3ZlZCBpbiBMRE11ZCAzLjMuCisKK1NFRSBBTFNPOgorICAgICAgICBhbGlzdHMoTFBDKSwgbWFwcGluZ3MoTFBDKSwgYXNzb2MoRSksIHNsaWNlX2FycmF5KEUpCisKKzExLjExLjIwMDYgWmVzc3RyYQpkaWZmIC0tZ2l0IGEvZG9jL29ic29sZXRlL29ic29sZXRlIGIvZG9jL29ic29sZXRlL29ic29sZXRlCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmY2ZTgwNWUKLS0tIC9kZXYvbnVsbAorKysgYi9kb2Mvb2Jzb2xldGUvb2Jzb2xldGUKQEAgLTAsMCArMSwxMiBAQAorTkFNRQorICAgIG9ic29sZXRlCisKK0RFU0NSSVBUSU9OCisgICAgVGhpcyBkaXJlY3RvcnkgY29udGFpbnMgZGVzY3JpcHRpb25zIGZvciBmZWF0dXJlcyByZW1vdmVkIGZyb20KKyAgICB0aGUgZ2FtZSBkcml2ZXIsIHNpbmNlIHRoZXkgY2FuIGNvbWUgaW4gaGFuZHkgd2hlbiByZXdvcmtpbmcKKyAgICBvbGQgTFBDIGNvZGUuCisKK1NFRSBBTFNPCisgICAgYXBwbGllZChBKSwgZWZ1bihFKSwgbWFzdGVyKE0pLCBjb25jZXB0cyhDKSwgbHBjKExQQyksIGRyaXZlcihEKQorCisyOS4xMC4yMDA2IFplc3N0cmEKZGlmZiAtLWdpdCBhL2RvYy9vYnNvbGV0ZS9vcmRlcl9hbGlzdCBiL2RvYy9vYnNvbGV0ZS9vcmRlcl9hbGlzdApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4zMmIxYzIwCi0tLSAvZGV2L251bGwKKysrIGIvZG9jL29ic29sZXRlL29yZGVyX2FsaXN0CkBAIC0wLDAgKzEsMzYgQEAKK1ZFUkFMVEVUCitTWU5PUFNJUworICAgICAgICBtaXhlZCAqb3JkZXJfYWxpc3QobWl4ZWQgKmtleXMsIG1peGVkICpkYXRhLCAuLi4pOworICAgICAgICBtaXhlZCAqb3JkZXJfYWxpc3QobWl4ZWQgKmxpc3QpOworCitCRVNDSFJFSUJVTkcKKyAgICAgICAgRGllc2UgRnVua3Rpb24gZXJ6ZXVndCBlaW5lIEFsaXN0LgorCisgICAgICAgIEdpYnQgbWFuIHp3ZWkgb2RlciBtZWhyIEFyZ3VtZW50ZSBhbiwgbXVzcyBkYXMgZXJzdGUgQXJndW1lbnQKKyAgICAgICAgZWluIEFycmF5IHZvbiBLZXlzIGVudGhhbHRlbiwgZGllIG5hY2hmb2xnZW5kZW4gQXJndW1lbnRlCisgICAgICAgIHNpbmQgQXJyYXlzIHZvbiBEYXRlbmVsZW1lbnRlbi4gQWxsZSA8ZGF0YT4gQXJndW1lbnRlIG11ZXNzZW4KKyAgICAgICAgZGllIGdsZWljaGUgR3JvZXNzZSAoYWxzbyBkaWUgZ2xlaWNoZSBBbnphaGwgRWxlbWVudGUpIHdpZSA8a2V5cz4KKyAgICAgICAgaGFiZW4uCisKKyAgICAgICAgR2lidCBtYW4gbnVyIGVpbiBBcmd1bWVudCA8bGlzdD4gYW4sIHNvIG11c3MgZXMgc2ljaCBkYWJlaSB1bSBlaW4KKyAgICAgICAgQXJyYXkgaGFuZGVsbiwgZGFzIGFscyBlcnN0ZSBFbGVtZW50IGVpbiBBcnJheSB2b24gS2V5cyB1bmQgYWxzCisgICAgICAgIHdlaXRlcmUgRWxlbWVudGUgQXJyYXlzIG1pdCBEYXRlbmVsZW1lbnRlbiBlbnRoYWVsdC4gQWxsZSBFbGVtZW50ZQorICAgICAgICB2b24gPGxpc3Q+IG11ZXNzZW4gZGllIGdsZWljaGUgR3JvZXNzZSBoYWJlbi4KKworICAgICAgICBvcmRlcl9hbGlzdCgpIGxpZWZlcnQgZWluIEFycmF5IHp1cnVlY2ssIGRhcyBkYXMgc29ydGllcnRlIDxrZXlzPgorICAgICAgICBBcnJheSB1bmQgZGllIGdsZWljaCBzb3J0aWVydGVuIDxkYXRhPiBBcnJheXMgZW50aGFlbHQuIEF1ZiBkaWUKKyAgICAgICAgPGRhdGE+IEFycmF5cyB3aXJkIGRpZSBnbGVpY2hlIFBlcm11dGF0aW9uIHdpZSBhdWYgZGFzIDxrZXk+IEFycmF5CisgICAgICAgIGFuZ2V3ZW5kZXQuCisKKyAgICAgICAgRGllIEtvbXBsZXhpdGFldCBpc3QgTyhuKmxnKG4pK24qbSksIHdvYmVpIG4gZGllIEFuemFobCBFbGVtZW50ZSBpbQorICAgICAgICA8a2V5cz4gQXJyYXkgZGFyc3RlbGx0LCBtIGRpZSBBbnphaGwgPGRhdGE+IEFycmF5cyArIDEuCisKKyAgICAgICAgRGllIERpbWVuc2lvbmVuIGRlciBBcnJheXMgd2VyZGVuIGdlZ2VudWViZXIgTElTUCBnZW5hdSB1bWdla2VocnQKKyAgICAgICAgdmVyd2VuZGV0LCB1bSBlaW4gc2NobmVsbGVyZXMgU3VjaGVuIHp1IGVybW9lZ2xpY2hlbi4KKworICAgICAgICBLZXlzIG11ZXNzZW4gdm9tIFR5cCBJbnRlZ2VyLCBTdHJpbmcgb2RlciBPYmplY3Qgc2Vpbi4gRGllIFR5cGVuCisgICAgICAgIGtvZW5uZW4gYXVjaCBnZW1pc2NodCBzZWluLgorCitTSUVIRSBBVUNICisgICAgICAgIGFsaXN0cyhMUEMpLCBtYXBwaW5ncyhMUEMpLCBpbnNlcnRfYWxpc3QoRSksIGFzc29jKEUpLAorICAgICAgICB0cmFuc3Bvc2VfYXJyYXkoRSkKZGlmZiAtLWdpdCBhL2RvYy9vYnNvbGV0ZS9wYXJzZV9jb21tYW5kIGIvZG9jL29ic29sZXRlL3BhcnNlX2NvbW1hbmQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMjAzOTE2MQotLS0gL2Rldi9udWxsCisrKyBiL2RvYy9vYnNvbGV0ZS9wYXJzZV9jb21tYW5kCkBAIC0wLDAgKzEsNzIgQEAKK2ludCBwYXJzZV9jb21tYW5kKHN0cmluZyBzdHIsIG1peGVkIHNvdXJjZSwgc3RyaW5nIHBhdHRlcm4sIHZhcjEsIHZhcjIgLi4uKTsKKworUGFyc2VzIGNvbW1hbmRzIGdpdmVuIGluICJzdHIiIGFnYWluc3QgdGhlIHBhdHRlcm4gaW4gInBhdHRlcm4iIGFuZAorcmV0dXJucyAxIGlmIGl0IG1hdGNoZXMuICJzb3VyY2UiIGlzIGVpdGhlciBhbiBvYmplY3Qgb3IgYW4gYXJyYXkgb2Ygb2JqZWN0cy4KK1RoaXMgaXMgZXNzZW50aWFsbHkgYSAnaG90dGVkJyBzc2NhbmYgYW5kIGl0IGhhcyBhIHNpbWlsYXIgc3ludGF4LCBhbHRob3VnaAorcGFyc2VfY29tbWFuZCB3b3JrcyBvbiB3b3JkIGJhc2lzIHdoZXJlIHNzY2FuZiB3b3JrcyBvbiBjaGFyYWN0ZXIgYmFzaXMuCisKKy5pcCBzdHIKK0dpdmVuIGNvbW1hbmQKKy5pcCBzb3VyY2UKK0VpdGhlciBhbiBhcnJheSBob2xkaW5nIHRoZSBhY2Nlc3NpYmxlIG9iamVjdHMsIG9yCithbiBvYmplY3QgZnJvbSB3aGljaCB0byByZWN1cnNlIGFuZCBjcmVhdGUKK3RoZSBsaXN0IG9mIGFjY2Vzc2libGUgb2JqZWN0cywgbm9ybWFsbHkKK29iID0gZW52aXJvbm1lbnQodGhpc19wbGF5ZXIoKSkgLgorCisuaXAgcGF0dGVybgorUGFyc2UgcGF0dGVybiBhcyBsaXN0IG9mIHdvcmRzIGFuZCBmb3JtYXRzOgorLm5mCisJCVN5bnRheDoKKwkJCSd3b3JkJyAJCW9ibGlnYXRvcnkgdGV4dCAoT25lIHdvcmQpCisJCQlbd29yZF0JCW9wdGlvbmFsIHRleHQgKE9uZSB3b3JkKQorCQkJLwkJQWx0ZXJuYXRpdmUgbWFya2VyCisJCQklbwkJU2luZ2xlIGl0ZW0sIG9iamVjdAorCQkJJWwJCVNpbmdsZSBsaXZpbmcgb2JqZWN0CisJCQklcwkJQW55IHRleHQgKG11bHRpcGxlIHdvcmRzKQorCQkJJXcgICAgICAgICAgICAgIEFueSB3b3JkCisJCQklcAkJUHJlcG9zaXRpb24KKwkJCSVpCQlBbnkgaXRlbXMKKwkJCSVkICAgICAgICAgICAgICBOdW1iZXIgMC0gb3IgdHgoMC05OSkKKy5maQorRXhhbXBsZSBzdHJpbmc6ICIgJ2dldCcgLyAndGFrZScgJWkgIiAuCitJdGVtcyBhcyBpbiAlbyBhbmQgJWkgY2FuIG9uIG1hbnkgZm9ybXMsIHNvbWUgZXhhbXBsZXM6CisubmYKKwkJCWFwcGxlLCB0d28gYXBwbGVzLCB0d2VudHlmaXJzdCBhcHBsZQorCQkJYXBwbGVzLCBhbGwgYXBwbGVzLCBhbGwgZ3JlZW4gYXBwbGVzLCBhbGwgZ3JlZW4gb25lcworLmZpCisKKy5pcCB2YXJOCitUaGlzIGlzIHRoZSBsaXN0IG9mIHJlc3VsdCB2YXJpYWJsZXMgYXMgaW4gc3NjYW5mLgorT25lIHZhcmlhYmxlIGlzIG5lZWRlZCBmb3IgZWFjaCAlXy4KK1RoZSByZXR1cm4gdHlwZXMgb2YgZGlmZmVyZW50ICVfIGlzOgorLm5mCisJJW8JUmV0dXJucyBhbiBvYmplY3QKKwklbAlSZXR1cm5zIGFuIG9iamVjdAorCSVzCVJldHVybnMgYSBzdHJpbmcgb2Ygd29yZHMKKwkldyAgICAgIFJldHVybnMgYSBzdHJpbmcgb2Ygb25lIHdvcmQKKwklcAlDYW4gb24gZW50cnkgaG9sZCBhIGxpc3Qgb2Ygd29yZCBpbiBhcnJheQorCQlvciBhbiBlbXB0eSB2YXJpYWJsZQorCQlSZXR1cm5zOgorCQkgICBpZiBlbXB0eSB2YXJpYWJsZTogYSBzdHJpbmcKKwkJICAgaWYgYXJyYXk6IGFycmF5WzBdPW1hdGNoZWQgd29yZAorCSVpCVJldHVybnMgYSBzcGVjaWFsIGFycmF5IG9uIHRoZSBmb3JtOgorCQlbMF0gPSAoaW50KSBnaXZlbiBudW1lcmljIHByZWZpeAorCQkgICAgICAgPTA6IGFsbCBvciBhIHBsdXJhbGZvcm0gZ2l2ZW4KKwkJICAgICAgID4wOiBudW1lcmFsIGdpdmVuOiB0d28sIHRocmVlLCBmb3VyLi4uCisJCSAgICAgICA8MDogb3JkZXIgZ2l2ZW46IHNlY29uZCwgdGhpcmQgLi4uCisJCVsxLi5uXSAob2JqZWN0KSBPYmplY3Rwb2ludGVycworCQkgICAgICAgQSBsaXN0IG9mIHRoZSBQT1NTSUJMRSBvYmplY3RzIHRoYXQgY2FuIG1hdGNoCisJCSAgICAgICB0aGUgZ2l2ZW4gJWkuIE5vIGNob29zaW5nIG9mIHRoaXJkIG9yIHN1Y2guCisJJWQgICAgICBSZXR1cm5zIGEgbnVtYmVyCisuZmkKKy5scAorRXhhbXBsZToKKworYT1wYXJzZV9jb21tYW5kKCJ0YWtlIGFwcGxlIixlbnZpcm9ubWVudCh0aGlzX3BsYXllcigpKSwKKwkgIiAnZ2V0JyAvICd0YWtlJyAlaSAiLGl0ZW1zKTsKKworSElTVE9SWQorICBMRE11ZCAzLjMuMjU4IGFuZCBMUCAiMDMuMDIuMUAxNTAiIHJlbW92ZWQgdGhlIGNvbXBhdC1tb2RlIAorICBwYXJzZV9jb21tYW5kKCkuCisKKzI5LjEwLjIwMDYgWmVzc3RyYQpkaWZmIC0tZ2l0IGEvZG9jL29ic29sZXRlL3F1ZXJ5X2ltcF9wb3J0IGIvZG9jL29ic29sZXRlL3F1ZXJ5X2ltcF9wb3J0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmI2YTdjM2QKLS0tIC9kZXYvbnVsbAorKysgYi9kb2Mvb2Jzb2xldGUvcXVlcnlfaW1wX3BvcnQKQEAgLTAsMCArMSwyMSBAQAorCisgICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAgICAgKiAgQUNIVFVORzogRUZVTiBFWElTVElFUlQgTklDSFQgTUVIUiEgTklDSFQgVkVSV0VOREVOISAgKgorICAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisKK1NZTk9QU0lTOgorCWludCBxdWVyeV91ZHBfcG9ydCh2b2lkKQorCitERVNDUklQVElPTjoKKwlSZXR1cm5zIHRoZSBwb3J0IG51bWJlciB0aGF0IGlzIHVzZWQgZm9yIHRoZSBpbnRlciBtdWQKKwlwcm90b2NvbC4KKworSElTVE9SWQorICBMRE11ZCAzLjIuOSByZW5hbWVkIHRoaXMgZWZ1biB0byBxdWVyeV91ZHBfcG9ydCgpLiBUaGlzIHZlcnNpb24KKyAgaXMgYXZhaWxhYmxlIGlmIHRoZSBkcml2ZXIgaXMgY29tcGlsZWQgd2l0aCBVU0VfREVQUkVDQVRFRC4KKyAgUmVtb3ZlZCBpbiBMRE11ZCAzLjMgYW5kIExQICIwMy4wMi4xQDE1MCIuCisKK1NFRSBBTFNPOgorCXNlbmRfdWRwKEUpLCByZWNlaXZlX3VkcChNKQorCisyOS4xMC4yMDA2IFplc3N0cmEKZGlmZiAtLWdpdCBhL2RvYy9vYnNvbGV0ZS9yZWNlaXZlX2ltcCBiL2RvYy9vYnNvbGV0ZS9yZWNlaXZlX2ltcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5iNDJlNzhmCi0tLSAvZGV2L251bGwKKysrIGIvZG9jL29ic29sZXRlL3JlY2VpdmVfaW1wCkBAIC0wLDAgKzEsMjUgQEAKKworICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorICAqIEFDSFRVTkc6IFdJUkQgVk9NIERSSVZFUiBOSUNIVCBNRUhSIEdFUlVGRU4hIE5JQ0hUIFZFUldFTkRFTiEgKgorICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorCitTWU5PUFNJUworCXZvaWQgcmVjZWl2ZV91ZHAoc3RyaW5nIGhvc3QsIHN0cmluZyBtc2csIGludCBob3N0cG9ydCkKKworREVTQ1JJUFRJT04KKwlIYW5kbGUgYSByZWNlaXZlZCBJTVAgbWVzc2FnZS4KKworCVRoaXMgZnVuY3Rpb24gaXMgY2FsbGVkIGZvciBldmVyeSBtZXNzYWdlIHJlY2VpdmVkIG9uIHRoZSBJTVAKKwlwb3J0LiBVc3VhbGx5IGl0IGlzIHBhc3NlZCBvbiB0byBzb21lIG9iamVjdCB0aGF0IGhhbmRsZXMKKwlpbnRlciBtdWQgY29tbXVuaWNhdGlvbnMuCisKK0hJU1RPUlkKKwlUaGUgJ2hvc3Rwb3J0JyBhcmd1bWVudCB3YXMgYWRkZWQgaW4gMy4yLjEuCisgIExETXVkIDMuMi45IHJlbmFtZWQgdGhpcyBtZXRob2QgdG8gcmVjZWl2ZV91ZHAoKTsgdGhpcyBvbGQgdmVyc2lvbgorICBpcyBzdXBwb3J0ZWQgaWYgdGhlIGRyaXZlciBpcyBjb21waWxlZCB3aXRoIFVTRV9ERVBSRUNBVEVELgorICBSZW1vdmVkIGluIExETXVkIDMuMyBhbmQgTFAgIjAzLjAyLjFAMTUwIi4KKworU0VFIEFMU08KKwlzZW5kX3VkcChFKSwgcXVlcnlfdWRwX3BvcnQoRSkKKworMjkuMTAuMjAwNiBaZXNzdHJhCmRpZmYgLS1naXQgYS9kb2Mvb2Jzb2xldGUvc2VuZF9pbXAgYi9kb2Mvb2Jzb2xldGUvc2VuZF9pbXAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYzBmOGU0MAotLS0gL2Rldi9udWxsCisrKyBiL2RvYy9vYnNvbGV0ZS9zZW5kX2ltcApAQCAtMCwwICsxLDIzIEBACisKKyAgICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorICAgICAqICBBQ0hUVU5HOiBFRlVOIEVYSVNUSUVSVCBOSUNIVCBNRUhSISBOSUNIVCBWRVJXRU5ERU4hICAqCisgICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKworU1lOT1BTSVM6CisJaW50IHNlbmRfdWRwKHN0cmluZyBob3N0LCBpbnQgcG9ydCwgc3RyaW5nIG1lc3NhZ2UpCisKK0RFU0NSSVBUSU9OOgorCVNlbmRzIFRoZSBtZXNzYWdlIGluIGFuIFVEUCBwYWNrZXQgdG8gdGhlIGdpdmVuIGhvc3QgYW5kIHBvcnQKKwludW1iZXIuIENhdXNlcyBhIHByaXZpbGVnZSB2aW9sYXRpb24uCisJUmV0dXJucyAxIG9uIHN1Y2Nlc3MsIDAgb24gZmFpbHVyZS4KKworSElTVE9SWQorICBMRE11ZCAzLjIuOSByZW5hbWVkIHRoaXMgZWZ1biB0byBzZW5kX3VkcCgpLCBhbmQgYWxzbyBjaGFuZ2VkIHRoZQorICBwcml2aWxlZ2UgdmlvbGF0aW9uIHN0cmluZyBhbmQgdGhlIGFwcGx5IG5hbWVzLiBUaGlzIG9sZCB2ZXJzaW9uCisgIGlzIGF2YWlsYWJsZSBpZiB0aGUgZHJpdmVyIGlzIGNvbXBpbGVkIHdpdGggVVNFX0RFUFJFQ0FURUQuCisgIFJlbW92ZWQgaW4gTERNdWQgMy4zIGFuZCBMUCAiMDMuMDIuMUAxNTAiLgorCitTRUUgQUxTTzoKKwlyZWNlaXZlX3VkcChNKQorCisyOS4xMC4yMDA2IFplc3N0cmEKZGlmZiAtLWdpdCBhL2RvYy9vYnNvbGV0ZS9zZXRfYXV0b19pbmNsdWRlX3N0cmluZyBiL2RvYy9vYnNvbGV0ZS9zZXRfYXV0b19pbmNsdWRlX3N0cmluZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41YTM4MjNkCi0tLSAvZGV2L251bGwKKysrIGIvZG9jL29ic29sZXRlL3NldF9hdXRvX2luY2x1ZGVfc3RyaW5nCkBAIC0wLDAgKzEsMjggQEAKKworICAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisgICAgICogIEFDSFRVTkc6IEVGVU4gRVhJU1RJRVJUIE5JQ0hUIE1FSFIhIE5JQ0hUIFZFUldFTkRFTiEgICoKKyAgICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorCitTWU5PUFNJUworICAgICAgICB2b2lkIHNldF9hdXRvX2luY2x1ZGVfc3RyaW5nIChzdHJpbmcgYXJnKQorCitERVNDUklQVElPTgorCisgICAgICAgIFRoZSBhcmcgd2lsbCBiZSBhdXRvbWF0aWNhbGx5IGluY2x1ZGVkIGludG8gZXZlcnkgY29tcGlsZWQgTFBDCisgICAgICAgIG9iamVjdC4gVGhpcyBpcyB1c2VmdWwgdG8gZW5mb3JjZSBnbG9iYWwgZGVmaW5pdGlvbnMsIGUuZy4KKyAgICAgICAgYGAjcHJhZ21hIGNvbWJpbmVfc3RyaW5ncycnIG9yIGBgI3ByYWdtYSBzdHJpY3RfdHlwZXMnJy4gIFRoZQorICAgICAgICBjYWxsaW5nIG9iamVjdCBuZWVkcyB0byBiZSBwcml2aWxlZ2VkIGJ5IHRoZSBtYXN0ZXIgb2JqZWN0LgorCisgICAgICAgIE5vdGUgdGhhdCB0aGUgYXV0by1pbmNsdWRlLXN0cmluZyBpcyBjbGVhcmVkIHdoZW4gdGhlIG1hc3RlcgorICAgICAgICBvYmplY3QgaXMgcmVsb2FkZWQuCisKK0hJU1RPUlkKKyAgICAgICAgTERNdWQgMy4yLjkgcmVwbGFjZWQgdGhpcyBlZnVuIHdpdGggZHJpdmVyIGhvb2sgSF9BVVRPX0lOQ0xVREUuCisgICAgICAgICAgVGhpcyBvbGQgdmVyc2lvbiBpcyBhdmFpbGFibGUgaWYgdGhlIGRyaXZlciBpcyBjb21waWxlZAorICAgICAgICAgIHdpdGggVVNFX0RFUFJFQ0FURUQuCisgICAgICAgIFJlbW92ZWQgaW4gTERNdWQgMy4zLgorCitTRUUgQUxTTworICAgICAgICBzZXRfZHJpdmVyX2hvb2soRSksIHByaXZpbGVnZV92aW9sYXRpb24oTSksIHByYWdtYShMUEMpLCBtYXN0ZXIoTSkKKworMjkuMTAuMjAwNiBaZXNzdHJhCmRpZmYgLS1naXQgYS9kb2Mvb2Jzb2xldGUvc2xpY2VfYXJyYXkgYi9kb2Mvb2Jzb2xldGUvc2xpY2VfYXJyYXkKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNjIwYmRjOQotLS0gL2Rldi9udWxsCisrKyBiL2RvYy9vYnNvbGV0ZS9zbGljZV9hcnJheQpAQCAtMCwwICsxLDI3IEBACisKKyAgICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorICAgICAqICBBQ0hUVU5HOiBFRlVOIEVYSVNUSUVSVCBOSUNIVCBNRUhSISBOSUNIVCBWRVJXRU5ERU4hICAqCisgICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKworU1lOT1BTSVMKKyAgICAgICAgbWl4ZWQgKnNsaWNlX2FycmF5KG1peGVkICphcnJheSwgaW50IGZyb20sIGludCB0bykKKworREVTQ1JJUFRJT04KKwlETyBOT1QgVVNFIFRISVMgRUZVTiBBTllNT1JFLiBJVCBIQVMgQkVFTiBSRU1PVkVEIEZST00gVEhFIERSSVZFUi4KKworICAgICAgICBSZXR1cm5zIGFuIGFycmF5IHRoYXQgaXMgYSBzbGljZSBvZiB0aGUgYXJyYXkgPGFycj4gZnJvbSB0aGUKKyAgICAgICAgaW5kZXggPGZyb20+IHRvIHRoZSBpbmRleCA8dG8+LgorCisgICAgICAgIFRoaXMgaXMgdGhlIG9sZCBub3RhdGlvbiBmb3IgYXJyW2Zyb20uLnRvXSBhbmQgc3VwcG9ydGVkCisgICAgICAgIG9ubHkgZm9yIGh5c3RlcmljYWwgcmFpc2lucy4KKworICAgICAgICBJbiBMRE11ZCB0aGlzIGVmdW4gaXMgdGVtcG9yYXJpbHkgYSBzaW11bGF0ZWQgZWZ1biB1bnRpbCBpcyBmaW5hbGx5CisgICAgICAgIGRyb3BwcGVkLgorCitISVNUT1JZCisgICAgICAgIFJlbW92ZWQgaW4gTERNdWQgMy4zLgorCitTRUUgQUxTTworICAgICAgICBbXShFKQorCisxMS4xMS4yMDA2IFplc3N0cmEKZGlmZiAtLWdpdCBhL2RvYy9wY21kLy5yZWFkbWUgYi9kb2MvcGNtZC8ucmVhZG1lCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjg4OTEzMjcKLS0tIC9kZXYvbnVsbAorKysgYi9kb2MvcGNtZC8ucmVhZG1lCkBAIC0wLDAgKzEsNCBAQAorSGllciBsaWVnZW4gSGlsZmVuIHp1IGRlbiBCZWZlaGxlbiwgdWViZXIgZGllIG1hbiBzY2hvbiBhbHMgbm9ybWFsZXIKK1NwaWVsZXIgdmVyZnVlZ3QuCitTZWhlci0gdW5kIE1hZ2llcmJlZmVobGUgc2luZCBhbmRlcm5vcnRzIGRva3VtZW50aWVydC4KKwpkaWZmIC0tZ2l0IGEvZG9jL3BjbWQvLnN5bm9ueW0gYi9kb2MvcGNtZC8uc3lub255bQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4wZDI1MDI1Ci0tLSAvZGV2L251bGwKKysrIGIvZG9jL3BjbWQvLnN5bm9ueW0KQEAgLTAsMCArMSw2NyBAQAorYWxpIGFsaWFzCithbnNpIHN0dHkKK2F1cyBhdXNnYWVuZ2UKK2F1c2dhbmcgYXVzZ2FlbmdlCitiZXRyYWNodGUgc2NoYXUKK2JldHIgc2NoYXUKK2JsaW5kIGdyYWZpaworYmxpbmRoZWl0IGdyYWZpaworZGlzY29ubmVjdCBzY2hsYWZlCitkdXJjaHN1Y2hlIHN1Y2hlCitlYmVuZSBlYmVuZW4KKy0gZWJlbmVuCis7IGVtb3RlCis6IGVtb3RlCitlcnphZWhsZSB0ZWlsZQorZXJ6YWVobCB0ZWlsZQorZmFyYmVuIHN0dHkKK2ZhcmJlIHN0dHkKK2ZsdWVzdGVyIGZsdWVzdGVyZQorZnJhZyBmcmFnZQorZ2Vtb3RlIGVtb3RlCitoaXN0IGhpc3RvcnkKK2hpc3RsZW4gaGlzdG9yeQoraGlzdG1pbiBoaXN0b3J5CiteIGhpc3RvcnkKKyYgaGlzdG9yeQoraWdub3JpZXIgaWdub3JpZXJlCitpIGludmVudHVyCitpbnYgaW52ZW50dXIKK2thbmFlbGUgZWJlbmVuCitrYW5hbCBlYmVuZW4KK2tlZXBhbGl2ZSB0ZWxuZXQKK2trd2hvIGtrd2VyCitrbGV0dGVyIGtsZXR0ZXJlCitrd2hvIGt3ZXIKK2xhc3Mgd2lyZgorbGVzZSBsaWVzCittZCBkZXRhaWwKK21ydWYgbXJ1ZmUKK3Bhc3N3ZCBwYXNzd29ydAorcGFzc3dvcmQgcGFzc3dvcnQKK3B1bmt0ZSBpbmZvCitxdWl0IGVuZGUKK3JmbHVlc3RlciByZmx1ZXN0ZXJlCityaWVjaCByaWVjaGUKK3JrbnVkZGVsIHJrbnVkZGxlCitydWYgcnVmZQorcndpbmsgcndpbmtlCitzYWcgc2FnZQorc2F2ZSBzcGVpY2hlcm4KK3NjaGxhZiBzY2hsYWZlCitzY2hudXBwZXJlIHJpZWNoZQorc2NobnVwcGVyIHJpZWNoZQorc2NvcmUgaW5mbworc3RlY2sgc3RlY2tlCitzdWNoIHN1Y2hlCit0ZXJtaW5hbCBzdHR5Cit0bSB0ZWlsZQordW5hbGkgdW5hbGlhcwordW50ZXJzdWNoZSBzY2hhdQordW50IHNjaGF1Cit2dDEwMCBzdHR5Cit3ZXJmZSB3aXJmCit3ZXJmIHdpcmYKK3dobyB3ZXIKK3ppZWggemllaGUKK3p1ZWNrIHp1ZWNrZQpkaWZmIC0tZ2l0IGEvZG9jL3BjbWQvYWR2ZXJiIGIvZG9jL3BjbWQvYWR2ZXJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjJkYjMwMDgKLS0tIC9kZXYvbnVsbAorKysgYi9kb2MvcGNtZC9hZHZlcmIKQEAgLTAsMCArMSw2NCBAQAorCithZHZlcmIKKy0tLS0tLQorCisgS09NTUFORE86CisgICAgYWR2ZXJiIDxhYms+IDx0ZXh0PgorICAgIGFkdmVyYiBbICMgfCAkIF0KKyAgICBhZHZlcmIgPyA8YWJrPgorICAgIGFkdmVyYiA8YWJrPgorCisgQVJHVU1FTlRFOgorCisgICAgIDxhYms+CisgICAgICAgIEVpbmUgQWJrdWVyenVuZyBmdWVyIGVpbiBBZHZlcmIKKyAgICAgPHRleHQ+CisgICAgICAgIERlciBUZXh0IGRlcyBBZHZlcmJzCisKKyBCRVNDSFJFSUJVTkc6CisKKyAgICBNaXQgQWR2ZXJiaWVuIGtvZW5uZW4gZWluaWdlIFZlcmJlbiBnZW5hdWVyIGJlc2NocmllYmVuIHdlcmRlbi4gU28KKyAgICBrYW5uIG1hbiBlaW5mYWNoIG51ciBsYWVjaGVsbiAobGFlY2hlbCksIGdsdWVja2xpY2ggbGFlY2hlbG4gKGxhZWNoZWwgCisgICAgZ2x1ZSkgb2RlciBzY3JvbGxlbiAobGFlY2hlbCBzdHJhIHVuZCBnbHVlIHVuZCBzdG9sIHVuZCB2ZXJzKS4gTWl0CisgICAgZWluZW0gLyBrYW5uIG1hbiBhbiBkYXMgVmVyYiBub2NoIGV0d2FzIGVpZ2VuZXMgZWluZnVlZ2VuIChqYW1tZXJlIAorICAgIGxhdXQgdW5kIC93aWUgZXMgbnVyIFphdWJlcmVyIGtvZW5uZW4pLgorCisgICAgTWl0IGRlbSBLb21tYW5kbyBhZHZlcmIga2FubiBtYW4gZGllIGRlZmluaWVydGVuIEFkdmVyYmllbiBhbnplaWdlbgorICAgIGxhc3NlbiBvZGVyIGF1Y2ggZWlnZW5lIEFkdmVyYmllbiBkZWZpbmllcmVuLiBEaWUgZWluemVsbmVuIEF1ZnJ1ZmUKKyAgICBoYWJlbiBmb2xnZW5kZSBGdW5rdGlvbjoKKworICAgIDEuIEVzIHdpcmQgZWluIG5ldWVzIEFkdmVyYiBtaXQgZGVyIEFia3Vlcnp1bmcgPGFiaz4genUgZGVtIFRleHQgPHRleHQ+CisgICAgICAgZGVmaW5pZXJ0LiBEaWUgQWJrdWVyenVuZyBrYW5uIGVpbmVuIGJpcyBzZWNocyBCdWNoc3RhYmVuIGxhbmcgc2Vpbi4KKworICAgIDIuIE9obmUgd2VpdGVyZSBQYXJhbWV0ZXIgd2lyZCBkaWUga29tcGxldHRlIEFkdmVyYmllbmxpc3RlIGFuZ2V6ZWlndC4KKyAgICAgICBgYWR2ZXJiICMnIHplaWd0IG51ciBkaWUgc2VsYnN0ZGVmaW5pZXJ0ZW4gQWR2ZXJiaWVuIGFuLCB3YWVocmVuZAorICAgICAgIGBhZHZlcmIgJCcgbnVyIGRpZSBTdGFuZGFyZGFkdmVyYmllbiBhbnplaWd0LgorCisgICAgMy4gRXMgd2lyZCBnZXBydWVmdCwgb2IgZXMgc2Nob24gZWluIEFkdmVyYiB6dSBkZXIgQWJrdWVyenVuZyA8YWJrPiBnaWJ0LgorCisgICAgNC4gRGFzIEFkdmVyYiBtaXQgZGVyIEFia3Vlcnp1bmcgPGFiaz4gd2lyZCBhdXMgZGVyIExpc3RlIGdlbG9lc2NodC4gRGllcworICAgICAgIGdlaHQgamVkb2NoIG51ciBtaXQgc2VsYnN0ZGVmaWluaWVydGVuIEFkdmVyYmllbiwgbmljaHQgbWl0IGRlbgorICAgICAgIFN0YW5kYXJkYWR2ZXJiaWVuIQorCisgQkVJU1BJRUxFOgorICAgIEVpbiBBZHZlcmIgYHJhdGxvcycgbWl0IGRlciBBYmt1ZXJ6dW5nIGByYXQnIHdpcmQgZ2VzY2hhZmZlbjoKKworICAgID4gYWR2ZXJiIHJhdCByYXRsb3MKKyAgICBPSywgbmV1ZXMgQWR2ZXJiICJyYXRsb3MiIG1pdCBkZXIgQWJrdWVyenVuZyAicmF0Ii4KKworICAgIFdpciBzZWhlbiBuYWNoLCB3aWUgYHJhdCcgZGVmaW5pZXJ0IGlzdDoKKworICAgID4gYWR2ZXJiID8gcmF0CisgICAgRGllIEFia3Vlcnp1bmcgcmF0IGdlaG9lcnQgenVtIEFkdmVyYjoKKyAgICByYXRsb3MKKworICAgIFdpciBsb2VzY2hlbiBlcyB3aWVkZXI6CisKKyAgICA+IGFkdmVyYiByYXQKKyAgICBPSywgQWR2ZXJiICJyYXRsb3MiIGdlbG9lc2NodC4KKworIFNJRUhFIEFVQ0g6CisgICAgdmVyYmVuLCBhZHZlcmJpZW4KKworIExFVFpURSBBZU5ERVJVTkc6CisgICAgVGh1LCAyOS4wMy4yMDA4LCAxMjowMDowMCB2b24gVmFuaW9uCmRpZmYgLS1naXQgYS9kb2MvcGNtZC9hbGlhcyBiL2RvYy9wY21kL2FsaWFzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjc0MjZmNWMKLS0tIC9kZXYvbnVsbAorKysgYi9kb2MvcGNtZC9hbGlhcwpAQCAtMCwwICsxLDEwMCBAQAorCithbGlhcworLS0tLS0KKworIEtPTU1BTkRPOgorICAgIGFsaWFzIDxhbGlhcz4gPGJlZmVobD4KKyAgICBhbGlhcyBbIC1hIF0gWyA8YWxpYXM+IHwgPGFiaz4qIF0KKworIEFSR1VNRU5URToKKworICAgICA8YWxpYXM+CisgICAgICAgIERlciBOYW1lIGRlcyBBbGlhcworICAgICA8YmVmZWhsPgorICAgICAgICBEZXIgVGV4dCwgZHVyY2ggZGVuIGRhcyBBbGlhcyBlcnNldHp0IHdpcmQKKyAgICAgPGFiaz4KKyAgICAgICAgRGllIEFia3Vlcnp1bmcgZWluZXMgQWxpYXMKKyAgICAgLWEKKyAgICAgICAgT3B0aW9uLCB1bSBBbGlhc2Ugc28gYXVzenVnZWJlbiwgd2llIG1hbiBzaWUgZGVmaW5pZXJ0CisKKyBCRVNDSFJFSUJVTkc6CisgICAgKFN0YXR0IGBhbGlhcycga2FubiBtYW4gYXVjaCBgYWxpJyB2ZXJ3ZW5kZW4hKQorCisgICAgTWl0IGRpZXNlbSBLb21tYW5kbyBrYW5uIG1hbiBzaWNoIEFia3Vlcnp1bmdlbiBmdWVyIG9mdCBiZW51dHp0ZSBCZWZlaGxlCisgICAgZXJzdGVsbGVuIHNvd2llIGRpZSBzY2hvbiBkZWZpbmllcnRlbiBBbGlhc2UgYW5zZWhlbi4KKworICAgIERlZmluaWVydCB3aXJkIGVpbiBBbGlhcyBtaXQgZGVtIGVyc3RlbiBkZXIgb2JpZ2VuIEtvbW1hbmRvcy4gPGFsaWFzPiBkYXJmCisgICAgZGFiZWkgbnVyIGVpbiBXb3J0IHVtZmFzc2VuLCB3YWVocmVuZCA8YmVmZWhsPiBiZWxpZWJpZyBsYW5nIHNlaW4gZGFyZi4KKworICAgIFdlbm4gRHUgdm9uIG51biBhbiBkYXMgQWxpYXMgZWluZ2lic3QsIHNvIGZ1ZWhyc3QgRHUgZGVuIGF1c2dlc2NocmllYmVuZW4KKyAgICBCZWZlaGwgd29ydHdvZXJ0bGljaCBhdXMuIERpZSBmb2xnZW5kZW4gV29ydGUgaW0gYXVzZ2VzY2hyaWViZW5lbiBCZWZlaGwKKyAgICBoYWJlbiBqZWRvY2ggZWluZSBiZXNvbmRlcmUgQmVkZXV0dW5nOgorCisgICAgICQqICAgICAgU3RlaHQgZnVlciBhbGxlcywgd2FzIGF1ZiBkYXMgQWxpYXMgZm9sZ3QuCisgICAgICQ8bj4gICAgU3RlaHQgZnVlciBkYXMgPG4+dGUgV29ydCBuYWNoIGRlbSBBbGlhcy4KKyAgICAgJDxuPiogICBTdGVodCBmdWVyIGFsbGUgV29ydGUgYWIgZGVtIDxuPnRlbiAoZWluc2NobGllc3NsaWNoKS4KKworICAgIE1pdCBkZW0gendlaXRlbiBkZXIgb2JpZ2VuIEtvbW1hbmRvcyBrYW5uc3QgRHUgRGlyIGRpZSBBbGlhc2UgYW56ZWlnZW4KKyAgICBsYXNzZW4uIE9obmUgUGFyYW1ldGVyIHdlcmRlbiBkYWJlaSBzYWVtdGxpY2hlIEFsaWFzZSBhbmdlemVpZ3QsIG1pdAorICAgIGBhbGlhcyA8YWxpYXM+JyB3aXJkIGRpZSBEZWZpbml0aW9uIHZvbiA8YWxpYXM+IGFuZ2V6ZWlndCwgdW5kIG1pdCBgYWxpYXMKKyAgICA8YWJrPionIHdlcmRlbiBhbGxlIEFsaWFzZSBnZXplaWd0LCBkaWUgbWl0IDxhYms+IGJlZ2lubmVuLgorCisgICAgTmltbXQgbWFuIGRpZSBPcHRpb24gLWEgaGluenUgKG51ciBzaW5udm9sbCwgd2VubiBtYW4gc2ljaCBBbGlhc2UgYW56ZWlnZW4KKyAgICBsYWVzc3QpLCBzbyB3ZXJkZW4gZGllIEFsaWFzZSBzbyBhbmdlemVpZ3QsIGRhc3MgZGVyIFRleHQgY3V0LWFuZC1wYXN0ZS0KKyAgICBmYWVoaWcgaXN0LCBkLmguIG1hbiBrYW5uIGRlbiBUZXh0IHNvIGFscyBCZWZlaGwgZWluZ2ViZW4sIHdpZSBlciBhdXMtCisgICAgZ2VnZWJlbiB3aXJkICh6LkIuIHVtIGVpbmVtIFp3ZWl0Y2hhcmFrdGVyIGFsaWFzZXMgZGVzIEVyc3RjaGFyYWt0ZXJzIHp1CisgICAgZ2ViZW4pLgorCisgICAgU29sbCBkYXMgWmVpY2hlbiAiJCIgb2RlciBkYXMgWmVpY2hlbiAiJiIgaW0gQWxpYXMgdm9ya29tbWVuICgiJiIgaXN0IGF1cworICAgIGhpc3RvcmlzY2hlbiBHcnVlbmRlbiBnZW5hdSB3aWUgIiQiIGJlbnV0emJhciksIHNvIG11c3MgZXMgbWl0IGVpbmVtIFwKKyAgICAiZ2VxdW90ZWQiIHdlcmRlbi4gU29sbCBlaW4gXCB2b3Jrb21tZW4sIG11c3MgYXVjaCBkaWVzZXIgZ2VxdW90ZWQgd2VyZGVuCisgICAgKFxcKS4KKworICAgIEJlZ2lubnQgZWluZSBCZWZlaGxzemVpbGUgbWl0IGVpbmVtICJcIiwgc28gd2VyZGVuIGRpZSBBbGlhc2UgbmljaHQKKyAgICBlcnNldHp0LiBXZW5uIG1hbiBhbHMgQWxpYXNuYW1lbiBlaW5lbiBhdWNoIHNvbnN0IGd1ZWx0aWdlbiBCZWZlaGwKKyAgICB2ZXJ3ZW5kZXQsIGthbm4gbWFuIGF1ZiBkaWVzZSBXZWlzZSBhdWYgZGVuIGVpZ2VudGxpY2hlbiBCZWZlaGwgenVncmVpZmVuLgorCisgQkVJU1BJRUxFOgorICAgIEVyc3QgbWFsIGVpbiBwYWFyIChtZWhyIG9kZXIgd2VuaWdlciBudWV0emxpY2hlKSBBbGlhc2UgYW5sZWdlbjoKKworICAgID4gYWxpYXMgdWwgdW50ZXJzdWNoZSBsZWljaGUKKyAgICA+IGFsaWFzIHRtaCB0ZWlsZSBoaWdobGFuZGVyIG1pdCAkKgorICAgID4gYWxpYXMgdG16IHRlaWxlIHpvb2sgbWl0ICQqCisgICAgPiBhbGlhcyB3ZWcgdGVpbGUgJDEgbWl0IEljaCBiaW4gamV0enQgd2VnLCBcJCB2ZXJkaWVuZW4hCisKKyAgICBXZW5uIG1hbiBzaWNoIGRpZSBBbGlhc2UgYW5zZWhlbiB3aWxsOgorCisgICAgPiBhbGlhcworICAgICB0bWggICAgPSB0ZWlsZSBoaWdobGFuZGVyIG1pdCAkKgorICAgICB1bCAgICAgPSB1bnRlcnN1Y2hlIGxlaWNoZQorICAgICB3ZWcgICAgPSB0ZWlsZSAkMSBtaXQgSWNoIGJpbiBqZXR6dCB3ZWcsIFwkIHZlcmRpZW5lbiEKKworICAgID4gYWxpYXMgd2VnCisgICAgIHdlZyAgICA9IHRlaWxlICQxIG1pdCBJY2ggYmluIGpldHp0IHdlZywgXCQgdmVyZGllbmVuIQorCisgICAgPiBhbGlhcyB0bSoKKyAgICAgdG1oICAgID0gdGVpbGUgaGlnaGxhbmRlciBtaXQgJCoKKyAgICAgdG16ICAgID0gdGVpbGUgem9vayBtaXQgJCoKKworICAgIFVuZCBmb2xnZW5kZXJtYXNzZW4gbGFzc2VuIHNpY2ggZGllIEFsaWFzZSBiZW51dHplbjoKKworICAgID4gdG1oIEhpIFNoZXJpZmYhCisgICAgRHUgdGVpbHN0IEhpZ2hsYW5kZXIgbWl0OiBIaSBTaGVyaWZmIQorCisgICAgPiB0bXogT2ggbWVpbiBHb3R0ISA6LSkKKyAgICBEdSB0ZWlsc3QgWm9vayBtaXQ6IE9oIG1laW4gR290dCEKKworICAgID4gd2VnIGJvaW5nCisgICAgRHUgdGVpbHN0IEJvaW5nIG1pdDogSWNoIGJpbiBqZXR6dCB3ZWcsICQgdmVyZGllbmVuIQorCisgICAgPiBcd2VnIEFyYmVpdGVuLi4uCisgICAgRHUgYmlzdCBqZXR6dCBhbHMgYWJ3ZXNlbmQgZ2VrZW5uemVpY2huZXQuCisKKyAgICBEYXMgbGV0enRlIEJlaXNwaWVsIHplaWd0LCB3aWUgbWFuIGFuIGVpbmVuIEJlZmVobCBrb21tdCwgZGVyIHZvbiBlaW5lbQorICAgIEFsaWFzICJ1ZWJlcmxhZGVuIiB3dXJkZS4KKworIFNJRUhFIEFVQ0g6CisgICAgdW5hbGlhcywgZXJzZXR6dW5nc2FuemVpZ2UKKworIExFVFpURSBBZU5ERVJVTkc6CisgICAgVGh1LCAxMS4wMy4xOTk5LCAxNTozMDowMCB2b24gSGlnaGxhbmRlcgpkaWZmIC0tZ2l0IGEvZG9jL3BjbWQvYW5ncmlmZnNtZWxkdW5nIGIvZG9jL3BjbWQvYW5ncmlmZnNtZWxkdW5nCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjVmN2NhNTQKLS0tIC9kZXYvbnVsbAorKysgYi9kb2MvcGNtZC9hbmdyaWZmc21lbGR1bmcKQEAgLTAsMCArMSw1NCBAQAorCithbmdyaWZmc21lbGR1bmcKKy0tLS0tLS0tLS0tLS0tLQorCisgS09NTUFORE86CisgICAgYW5ncmlmZnNtZWxkdW5nIGFuL2VpbiB8IGF1cworCisgQkVTQ0hSRUlCVU5HOgorICAgIFNjaGFsdGV0IGRpZSBBbnplaWdlIGRlciBBbmdyaWZmc21lbGR1bmc6CisgICAgPiBEdSBncmVpZnN0IFhZWiBtaXQgQUJDIGFuLgorICAgIGZ1ZXIgamVkZSBLYW1wZnJ1bmRlIGVpbiBvZGVyIGF1cy4KKyAgICAKKyAgICBJc3QgImFuZ3JpZmZzbWVsZHVuZyIgYXVzZ2VzY2hhbHRldCwgYmVrb21tdCBtYW4gbnVyIG5ldWUKKyAgICBBbmdyaWZmc21lbGR1bmdlbiAoekIgYmVpIFdhZmZlbndlY2hzZWxuKSB2b24gc2ljaCBhbmdlemVpZ3QuCisKKyAgICBJc3Qgc2llIGVpbmdlc2NoYWx0ZXQsIGJla29tbXQgbWFuIGluIGplZGVyIEthbXBmcnVuZGUgYXVjaAorICAgIGRpZSBlaWdlbmUgQW5ncmlmZnNtZWxkdW5nIGFuZ2V6ZWlndC4KKworIEJFSVNQSUVMOgorICAgID4gYW5ncmlmZnNtZWxkdW5nIGFuCisgICAgRHUgc2llaHN0IHNhZW10bGljaGUgQW5ncmlmZnNtZWxkdW5nZW4gdm9uIERpci4KKyAgICA+IHRvZXRlIGdyaWxsZQorICAgIE9rLgorICAgIER1IGdyZWlmc3QgZGllIEdyaWxsZSBtaXQgYmxvc3NlbiBIYWVuZGVuIGFuLiAgIDwtLQorICAgIER1IHRyaWZmc3QgZWluZSBHcmlsbGUgaGFydC4KKyAgICBEaWUgR3JpbGxlIGdyZWlmdCBEaWNoIGFuLgorICAgIEVpbmUgR3JpbGxlIGtpdHplbHQgRGljaCBhbSBCYXVjaC4KKyAgICBEdSBncmVpZnN0IGRpZSBHcmlsbGUgbWl0IGJsb3NzZW4gSGFlbmRlbiBhbi4gICA8LS0KKyAgICBEdSB0cmlmZnN0IGVpbmUgR3JpbGxlIGhhcnQuCisgICAgRGllIEdyaWxsZSBncmVpZnQgRGljaCBhbi4KKyAgICBFaW5lIEdyaWxsZSB2ZXJmZWhsdCBEaWNoLgorICAgIER1IGdyZWlmc3QgZGllIEdyaWxsZSBtaXQgYmxvc3NlbiBIYWVuZGVuIGFuLiAgIDwtLQorICAgIER1IHRyaWZmc3QgZWluZSBHcmlsbGUgc2VociBoYXJ0LgorCisgICAgPiBhbmdyaWZmc21lbGR1bmcgYXVzCisgICAgRHUgc2llaHN0IG51ciBuZXVlIEFuZ3JpZmZzbWVsZHVuZ2VuIHZvbiBEaXIuCisgICAgPiB0b2V0ZSBncmlsbGUKKyAgICBPay4KKyAgICBEdSBncmVpZnN0IGRpZSBHcmlsbGUgbWl0IGJsb3NzZW4gSGFlbmRlbiBhbi4gICA8LS0KKyAgICBEdSB0cmlmZnN0IGVpbmUgR3JpbGxlIGhhcnQuCisgICAgRGllIEdyaWxsZSBncmVpZnQgRGljaCBhbi4KKyAgICBFaW5lIEdyaWxsZSB2ZXJmZWhsdCBEaWNoLgorICAgIER1IHRyaWZmc3QgZWluZSBHcmlsbGUgaGFydC4KKyAgICBFaW5lIEdyaWxsZSB2ZXJmZWhsdCBEaWNoLgorICAgIER1IHRyaWZmc3QgZWluZSBHcmlsbGUgaGFydC4KKyAgICBFaW5lIEdyaWxsZSB2ZXJmZWhsdCBEaWNoLgorICAgIER1IHRyaWZmc3QgZWluZSBHcmlsbGUgaGFydC4KKyAgICA+IHp1ZWNrIGRvbGNoCisgICAgRHUgenVlY2tzdCBkZW4gVHJvbGxkb2xjaC4KKyAgICBEdSBncmVpZnN0IGRpZSBHcmlsbGUgbWl0IGRlbSBUcm9sbGRvbGNoIGFuLiAgICA8LS0KKyAgICBEdSBrcmF0enQgZWluZSBHcmlsbGUuCisKKyBMRVRaVEUgQWVOREVSVU5HOgorICAgIDEuU2VwdGVtYmVyIDIwMDggR2xvaW5zb24KZGlmZiAtLWdpdCBhL2RvYy9wY21kL2FudHdvcnRlIGIvZG9jL3BjbWQvYW50d29ydGUKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZDA4ZGMxNQotLS0gL2Rldi9udWxsCisrKyBiL2RvYy9wY21kL2FudHdvcnRlCkBAIC0wLDAgKzEsMjIgQEAKKworYW50d29ydGUKKy0tLS0tLS0tCisKKyBLT01NQU5ETzoKKyAgICBhbnR3b3J0ZSBbPHdlbT5dIDx3YXM+CisKKyBBUkdVTUVOVEU6CisKKyAgICAgPHdlbT4gKG9wdGlvbmFsKQorICAgICAgICBEYXMgTGViZXdlc2VuLCBkZW0gRHUgYW50d29ydGVuIHdpbGxzdAorICAgICA8d2FzPgorICAgICAgICBEaWUgQW50d29ydAorCisgQkVTQ0hSRUlCVU5HOgorICAgIE1hbiBiZWFudHdvcnRldCBlaW5lIEZyYWdlLgorCisgU0lFSEUgQVVDSDoKKyAgICBmcmFnZSwgc2FnZSwgZ2VzcHJhZWNoCisKKyBMRVRaVEUgQWVOREVSVU5HOgorICAgIFRodSwgMjQuMDcuMTk5NywgMDk6MDA6MDAgdm9uIFdhcmdvbgpkaWZmIC0tZ2l0IGEvZG9jL3BjbWQvYXVzZ2FlbmdlIGIvZG9jL3BjbWQvYXVzZ2FlbmdlCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmVkNTU3MzQKLS0tIC9kZXYvbnVsbAorKysgYi9kb2MvcGNtZC9hdXNnYWVuZ2UKQEAgLTAsMCArMSwyOCBAQAorCithdXNnYWVuZ2UKKy0tLS0tLS0tLQorCisgS09NTUFORE86CisgICAgYXVzZ2FlbmdlIFthdXRvXQorICAgIGF1c2dhbmcgW2F1dG9dCisgICAgYXVzIFthdXRvXQorCisgQVJHVU1FTlRFOgorCisgICAgIGF1dG8gKG9wdGlvbmFsKQorICAgICAgICBTY2hhbHRldCBhdXRvbWF0aXNjaGUgQXVzZ2FuZ3NhbnplaWdlIGF1cy9laW4KKworIEJFU0NIUkVJQlVORzoKKyAgICBNaXQgYGF1c2dhZW5nZScgd2VyZGVuIGFsbGUgdW5taXR0ZWxiYXIgc2ljaHRiYXJlbiBBdXNnYWVuZ2UgYXVzIGRlbSBSYXVtLAorICAgIGluIGRlbSBtYW4gc2ljaCBnZXJhZGUgYmVmaW5kZXQsIGF1c2dlZ2ViZW4uIERpZXNlciBCZWZlaGwgaXN0IHZvbiBOdXR6ZW4sCisgICAgd2VubiBtYW4gc2ljaCBkaWUgUmF1bWJlc2NocmVpYnVuZyBuaWNodCBkdXJjaGxlc2VuIHdpbGwuIE1pdCBgYXVzZ2FuZworICAgIGF1dG8nIHdlcmRlbiBkaWUgdW5taXR0ZWxiYXIgc2ljaHRiYXJlbiBBdXNnYWVuZ2UgYXV0b21hdGlzY2ggYXVzZ2VnZWJlbiwKKyAgICBlaW4gd2VpdGVyZXMgYGF1c2dhbmcgYXV0bycgc2NoYWx0ZXQgZGllIGF1dG9tYXRpc2NoZSBBbnplaWdlIHdpZWRlciBhYi4KKworICAgICpBYmVyKjogRXMgZ2lidCBSYWV1bWUsIGRpZSB2ZXJzdGVja3RlIEF1c2dhZW5nZSBoYWJlbiEKKworIFNJRUhFIEFVQ0g6CisgICAgc2NoYXUgKGFuKSwga3VyeiwgYmV3ZWd1bmcKKworIExFVFpURSBBZU5ERVJVTkc6CisgICAgVGh1LCAyNC4wNy4xOTk3LCAwOTowMDowMCB2b24gV2FyZ29uCmRpZmYgLS1naXQgYS9kb2MvcGNtZC9hdXNydWVzdHVuZyBiL2RvYy9wY21kL2F1c3J1ZXN0dW5nCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjZjNjIwZDIKLS0tIC9kZXYvbnVsbAorKysgYi9kb2MvcGNtZC9hdXNydWVzdHVuZwpAQCAtMCwwICsxLDIzIEBACisKK2F1c3J1ZXN0dW5nCistLS0tLS0tLQorCisgS09NTUFORE86CisgICAgYXVzcnVlc3R1bmcgWy1rXSBbZmFyYmVuXQorCisgQVJHVU1FTlRFOgorICAgIGZhcmJlbiAgLSAgc3RhcnRldCBkaWUgRmFyYmtvbmZpZ3VyYXRpb24uCisgICAgLWsgICAgICAtICBnaWJ0IGVpbmUgS3VyenZhcmlhbnRlIG9obmUgQVNDSUktR3JhZmlrIGF1cy4KKworIEJFU0NIUkVJQlVORzoKKyAgICBaZWlndCBlaW5lIGdyYXBoaXNjaGUgQXVzZ2FiZSBkZXIgZ2V0cmFnZW5lbiBBdXNydWVzdHVuZyBhbi4KKyAgICBNaXR0ZWxzIGRlcyBBcmd1bWVudHMgLWsgd2lyZCB1bmFiaGFlbmdpZyB2b24gJ2dyYWZpayBlaW4vYXVzJyBlaW5lCisgICAga3VlcnplcmUgVmVyc2lvbiBvaG5lIEFTQ0lJLUdyYWZpayBhbmdlemVpZ3QuCisgICAgRGllIEZhcmJrb25maWd1cmF0aW9uIGVybGF1YnQsIGRpZSBEYXJzdGVsbHVuZyBmdWVyIHVuZ2V3b2VobmxpY2gKKyAgICBlaW5nZXN0ZWxsdGUgdGVybWluYWxzIGFuenVwYXNzZW4uCisgICAgCisgU0lFSEUgQVVDSDoKKyAgICBiZWhhbHRlLCBpbnZlbnR1cgorCisgTEVUWlRFIEFlTkRFUlVORzoKKyAgICAxNC4wOC4yMDA5LCBaZXNzdHJhCmRpZmYgLS1naXQgYS9kb2MvcGNtZC9hdmF0YXIgYi9kb2MvcGNtZC9hdmF0YXIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNDliMGQxZgotLS0gL2Rldi9udWxsCisrKyBiL2RvYy9wY21kL2F2YXRhcgpAQCAtMCwwICsxLDQ1IEBACisKK2F2YXRhcgorLS0tLS0tLS0tCisKKyBLT01NQU5ETzoKKyAgICBhdmF0YXIgWzx1cmk+XQorCisgQVJHVU1FTlRFOgorCisgICAgIDx1cmk+IChvcHRpb25hbCkKKyAgICAgICAgRGllIG5ldWUgVVJJIHp1bSBBdmF0YXIKKworIEJFU0NIUkVJQlVORzoKKyAgICBTcGllbGVyIGtvZW5uZW4gc2ljaCBtaXQgZGllc2VtIEtvbW1hbmRvIGVpbmVuIGdyYXBoaXNjaGVuIEF2YXRhciAoZC5oLgorICAgIGVpbiBCaWxkKSBnZWJlbiwgd2VsY2hlbiBtYW5jaGUgQ2xpZW50cyBhbnplaWdlbiBrb2VubmVuLgorICAgIEhpZXJ6dSBzZXR6dCBkZXIgU3BpZWxlciBoaWVyIGVpbmUgVVJJLCB3ZWxjaGUgYXVmIGVpbiBCaWxkIGltIE5ldHoKKyAgICB2ZXJ3ZWlzdCwgd2VsY2hlcyBnZ2YuIHZvbSBDbGllbnQgYW5kZXJlciBTcGllbGVyIGhlcnVudGVyZ2VsYWRlbiB3aXJkLgorICAgIFNwaWVsZXIga29lbm5lbiBkaWVzZSBBdmF0YXItVVJJIG1pdCBkZW0gQmVmZWhsICdhdmF0YXInIGFuemVpZ2VuLAorICAgIGFlbmRlcm4gdW5kIGxvZXNjaGVuLgorICAgIElzdCBkYXMgQXJndW1lbnQgZGllc2VzIEJlZmVobHMgJ2tlaW5lJywgc28gd2lyZCBkaWUgQXZhdGFyLVVSSQorICAgIGdlbG9lc2NodC4KKworICAgIEF2YXRhci1VUklzIGFuZGVyZXIgU3BpZWxlciBsYXNzZW4gc2ljaCBtaXQgJ2ZpbmdlciAtYScgYXVzZ2ViZW4uCisKKyAgICBXaXJkIGVpbiBDaGFyYWt0ZXIgYXVmIGRlciBNRy1Ib21lcGFnZSBnZWZpbmdlcnQsIHdpcmQgZGFzIEJpbGRjaGVuIGdnZi4KKyAgICBlYmVuZmFsbHMgbWl0IGFuZ2V6ZWlndC4gSGllcnp1IG11c3MgYWxsZXJkaW5ncyBlaW5lIFVSTCBhbmdlZ2ViZW4gd2VyZGVuLAorICAgIHdlbGNoZSBtaXQgaHR0cDovLyBvZGVyIGh0dHBzOi8vIGJlZ2lubnQuCisgCisgQkVNRVJLVU5HRU46CisgICAgQXVmIGRlciBNRy1Ib21lcGFnZSB3ZXJkZW4gZGllIEJpbGRlciBpbW1lciBhdWYgZWluZSBIb2VoZSB2b24gMTUwIFBpeGVsbgorICAgIHNrYWxpZXJ0IChCcmVpdGUgZW50c3ByZWNoZW5kIHByb3BvcnRpb25hbCkuCisgICAgVW0gYW5kZXJlbiBTcGllbGVybiBuaWNodCB1bm5vZXRpZ2UgV2FydGV6ZWl0ZW4genUgYmVzY2h3ZXJlbiwgc29sbHRlIGRpZQorICAgIEdyb2Vzc2UgZGVzIEJpbGRlcyBuaWNodCB6dSByaWVzaWcgc2Vpbi4gQmlsZGVyIGltIEJlcmVpY2ggdm9uIDIwLTIwMGtCCisgICAgc29sbHRlbiB2b2VsbGlnIGF1c3JlaWNoZW4uCisKKyBCRUlTUElFTEU6CisgICAgYXZhdGFyIGh0dHA6Ly9tZy5tdWQuZGUvYXZhdGFycy96ZXNzdHJhLnBuZworICAgIGF2YXRhciBrZWluZQorCisgU0lFSEUgQVVDSDoKKyAgICBQZXJzb2VubGljaGUgRGV0YWlsczogZW1haWwsIHVybCwgaWNxLCBvcnQKKyAgICBTb25zdGlnZXM6ICAgICAgICAgICAgZmluZ2VyCisKKyBMRVRaVEUgQUVOREVSVU5HOgorICAgIDI1LjA4LjIwMTEsIFplc3N0cmEKZGlmZiAtLWdpdCBhL2RvYy9wY21kL2JlaGFsdGUgYi9kb2MvcGNtZC9iZWhhbHRlCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjIyNjRjMTkKLS0tIC9kZXYvbnVsbAorKysgYi9kb2MvcGNtZC9iZWhhbHRlCkBAIC0wLDAgKzEsMjkgQEAKKworYmVoYWx0ZQorLS0tLS0tLQorCisgS09NTUFORE86CisgICAgYmVoYWx0ZSBbWzxvYmpla3Q+XSBbYWxsZXNdIFtuaWNodHNdXQorCisgQVJHVU1FTlRFOgorCisgICAgIDxvYmpla3Q+CisgICAgICAgIGVpbiBPYmpla3QgaW4gRGVpbmVtIEludmVudGFyCisKKyAgICAgYWxsZXMvbmljaHRzCisgICAgICAgIHdpZSBlcyBkZXIgUGFyYW1ldGVyIHNjaG9uIHNhZ3QKKworIEJFU0NIUkVJQlVORzoKKyAgICBNYW4ga2FubiBtaXQgZGllc2VtIEJlZmVobCBHZWdlbnN0YWVuZGUgbWFya2llcmVuLCBzbyBkYXNzIHNpZSBiZWkKKyAgICBgdmVya2F1ZmUgYWxsZXMnIG5pY2h0IG1laHIgYXV0b21hdGlzY2ggdmVya2F1ZnQgd2VyZGVuLiBJc3QgZGVyCisgICAgYmV0cmVmZmVuZGUgR2VnZW5zdGFuZCBiZXJlaXRzIG1hcmtpZXJ0LCB3aXJkIGRpZSBNYXJraWVydW5nIGF1ZmdlaG9iZW4uCisgICAgU2FlbXRsaWNoZSBTYWNoZW4gbGFzc2VuIHNpY2ggbWl0IGBiZWhhbHRlIGFsbGVzJyBtYXJraWVyZW4sIG1pdAorICAgIGBiZWhhbHRlIG5pY2h0cycga2FubiBtYW4gc2FlbXRsaWNoZSBNYXJraWVydW5nZW4gYXVmaGViZW4uCisKKyAgICBPaG5lIEFyZ3VtZW50IGF1ZmdlcnVmZW4gemVpZ3QgZGVyIEJlZmVobCBhbGxlIG1hcmtpZXJ0ZW4gR2VnZW5zdGFlbmRlIGFuLgorCisgICAgQW5nZXpvZ2VuZSBSdWVzdHVuZ2VuIHVuZCBnZXp1ZWNrdGUgV2FmZmVuIHdlcmRlbiB1ZWJyaWdlbnMgYXV0b21hdGlzY2gKKyAgICBiZWhhbHRlbi4KKworIExFVFpURSBBZU5ERVJVTkc6CisgICAgVHVlLCAyNy4xMC4xOTk4LCAxNjowMDowMCB2b24gUmlrdXMKZGlmZiAtLWdpdCBhL2RvYy9wY21kL2J1ZyBiL2RvYy9wY21kL2J1ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5mNDQwYTkxCi0tLSAvZGV2L251bGwKKysrIGIvZG9jL3BjbWQvYnVnCkBAIC0wLDAgKzEsNjEgQEAKKworZmVobGVyCistLS0tLS0KKworS09NTUFORE86CisgICAgYnVnIDx0ZXh0PgorICAgIGJ1ZyA8b2JqZWt0Pjo8dGV4dD4KKyAgIAorQVJHVU1FTlRFOgorCisgICAgPHRleHQ+CisgICAgICAgIEVpbmUgTWl0dGVpbHVuZworICAgIDxvYmpla3Q+CisgICAgICAgIEVpbiBSZWZlcmVuem9iamVrdCwgZGFzIG5lYmVuIERpciBsaWVndCBvZGVyIGluIERlaW5lbSBJbnZlbnRhciBpc3QKKworQkVTQ0hSRUlCVU5HOgorICAgIE5vYm9keSdzIHBlcmZlY3QuIERpZXMgZ2lsdCBiZXNvbmRlcnMgZnVlciB1bnNlcmUgTWFnaWVyIDopCisKKyAgICBXZXIgdmllbCBwcm9ncmFtbWllcnQsIGthbm4gYXVjaCB2aWVsZSBGZWhsZXIgbWFjaGVuLiBEaWUgbWVpc3RlbiBGZWhsZXIKKyAgICB3ZXJkZW4gendhciBzY2hvbiBpbiBkZXIgVGVzdHBoYXNlIGdlZnVuZGVuIHVuZCBhdXNnZW1lcnp0LCBhYmVyIGVpbmlnZQorICAgIEZlaGxlciBibGVpYmVuIGJpcyB6dW0gQW5zY2hsdXNzIGVpbmVzIG5ldWVuIEdlYmlldGVzIG9kZXIgT2JqZWt0cworICAgIHVuZW50ZGVja3QuCisKKyAgICBXZW5uIER1IGVpbmVuIHNvbGNoZW4gRmVobGVyIGdlZnVuZGVuIGhhc3QsIHNlaSBlcywgd2VpbCBlaW4gJ0ZlaGxlciBpbQorICAgIFJhdW0tWmVpdC1HZWZ1ZWdlJyBhdWZnZXRyZXRlbiBpc3QsIHNlaSBlcywgd2VpbCBpcmdlbmR3ZWxjaGUgc2VsdHNhbWVuCisgICAgWmVpY2hlbiBpbiBkZXIgQmVzY2hyZWlidW5nIGVpbmVzIE9iamVrdGVzIGF1ZnRhdWNoZW4sIHNvIGthbm5zdCBEdSBkZW4KKyAgICBWZXJhbnR3b3J0bGljaGVuIG1pdCBkaWVzZW0gQmVmZWhsIGRhdm9uIHVudGVycmljaHRlbi4KKyAgICAoQW5tZXJrdW5nOiBGaVJaRyB3ZXJkZW4gYXVjaCBhdXRvbWF0aXNjaCBwcm90b2tvbGxpZXJ0IHVuZCB6dXN0YWVuZGlnZW4KKyAgICAgTWFnaWVybiB6dXIgVmVyZnVlZ3VuZyBnZXN0ZWxsdC4pCisKKyAgICBOaWNodCB6b2VnZXJuLCB3ZW5uIER1IGVpbmVuIEZlaGxlciBmaW5kZXN0LCBGZWhsZXJtaXR0ZWlsdW5nZW4gc2luZAorICAgICpzZWhyKiB3aWxsa29tbWVuIQorICAgIFNvbGx0ZXN0IER1IERpciBlaW5tYWwgbmljaHQgc2ljaGVyIHNlaW4sIG9iIGVzIHNpY2ggYmVpIGVpbmVtIGJlc3RpbW10ZW4KKyAgICBWZXJoYWx0ZW4gdW0gZWluZW4gRmVobGVyIGhhbmRlbHQgb2RlciBuaWNodCwgem9lZ2VyZSBuaWNodCwgYmVpIGRlbQorICAgIHp1c3RhZWRpZ2VuIE1hZ2llciBvZGVyIGF1Y2ggYmVpIFNwaWVsZXJuIHVuZCBhbmRlcmVuIGVpbmdlbG9nZ3RlbiBNYWdpZXJuCisgICAgenUgZnJhZ2VuLgorCisgICAgV2VubiBEdSBlaW5lbiBUeXBvIGFuIGVpbmVtIGJlc3RpbW10ZW4gT2JqZWt0IG9kZXIgTlBDIGVudGRlY2tzdCwga2FubnN0CisgICAgRHUgZGllc2VzL2RpZXNlbiBoaW50ZXIgZWluZW0gRG9wcGVscHVua3QgYW5nZWJlbiwgZGFtaXQgZGVyIGZ1ZXIgZGFzCisgICAgT2JqZWt0IHZlcmFudHdvcnRsaWNoZSBNYWdpZXIgZGllIE1lbGR1bmcgYmVrb21tdC4KKyAgICBXZW5uIGRhcyBPYmpla3QgbmljaHQgenUgZmluZGVuIGlzdCwgd2lyZCBkaWUgZ2FuemUgRWluZ2FiZSBhbHMKKyAgICBNZWxkdW5nIGF1ZmdlZmFzc3QuCisKKyAgICBFaW4gSGlud2VpcyBhdWYgZGllIFJlZ2VsbiBoaWVyIG5vY2g6IERhcyBWZXJzY2h3ZWlnZW4gdW5kIEF1c251dHplbiB2b24KKyAgICBGZWhsZXJuIGlzdCBhbmRlcmVuIFNwaWVsZXJuIGdlZ2VudWViZXIgdW5mYWlyLiBCaXR0ZSB1bnRlcmxhc3N0IGRhcywKKyAgICBzb25kZXJuIGJlcmljaHRldCBkaWUgRmVobGVyLiBCdWdhdXNudXR6dW5nIHp1IGVpZ2VuZW0gVm9ydGVpbCBvZGVyCisgICAgYW5kZXJlciBOYWNodGVpbCBpc3QgYW5zb25zdGVuIGR1cmNoYXVzIGVpbiBGYWxsIGZ1ZXIgU2hlcmlmZi4gOy0pCisKK0JFTUVSS1VORzoKKyAgICBEZXIgQmVmZWhsICdidWcnIGJlemllaHQgc2ljaCBiZWkgTmljaHRhbmdhYmUgZWluZXMgQmV6dWdzb2JqZWt0ZXMKKyAgICBhdWYgZGFzIGxldHp0ZSBiZXRyYWNodGV0ZSBPYmpla3QuIEhhc3QgRHUgYWxzbyBlaW4gT2JqZWt0IHVudGVyc3VjaHQsCisgICAgZGFubiB3aXJkIGRpZSBNZWxkdW5nIGZ1ZXIgZGllc2UgT2JqZWt0IGFiZ2VnZWJlbi4gSGFzdCBEdSBhYmVyIGRlbgorICAgIFJhdW0gdW50ZXJzdWNodCBvZGVyICdzY2hhdScgZWluZ2VnZWJlbiwgd2lyZCBkaWUgTWVsZHVuZyBmdWVyIERlaW5lbgorICAgIG1vbWVudGFuZW4gUmF1bSBhYmdlc2V0enQuCisKK1NJRUhFIEFVQ0g6CisgICAgdHlwbywgaWRlZSwgZGV0YWlsLCByZWdlbG4sIGJlenVnc29iamVrdAorCitMRVRaVEUgQWVOREVSVU5HOgorICAgIDEyLiBPa3QgMjAxMSBHbG9pbnNvbgorCmRpZmYgLS1naXQgYS9kb2MvcGNtZC9jaWNlcm9uZSBiL2RvYy9wY21kL2NpY2Vyb25lCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjkyMmViZGYKLS0tIC9kZXYvbnVsbAorKysgYi9kb2MvcGNtZC9jaWNlcm9uZQpAQCAtMCwwICsxLDQ5IEBACisKK2NpY2Vyb25lCistLS0tLS0tLQorCisgS09NTUFORE86CisgICAgY2ljZXJvbmUgWzx6dXN0YW5kPl0KKworCisgQVJHVU1FTlRFOgorCisgICAgPHp1c3RhbmQ+CisgICAgICAnZWluJywgJ2F1cycsICdzdGF0dXMnIG9kZXIgJ3phaGwnCisKKyBCRVNDSFJFSUJVTkc6CisgICAgTWl0IGRpZXNlbSBCZWZlaGwga2FubnN0IER1IERpY2ggc2VsYnN0IHp1IGVpbmVtIENpY2Vyb25lLCBlaW5lbQorICAgIFBmYWRmaW5kZXIsIEZyZW1kZW5mdWVocmVyIG9kZXIgTmV1bGluZ3NnZWhpbGZlbiBlcm5lbm5lbiBvZGVyCisgICAgRGljaCB3aWVkZXIgYWxzIHNvbGNoZXIgYWJtZWxkZW4uIER1IHdlaXN0IGRhbWl0IGRhbm4gZXhwbGl6aXQKKyAgICBkYXJhdWYgaGluLCBkYXNzIER1IGJlcmVpdCBiaXN0LCBOZXVsaW5nZW4gaGllciBpbSBNRyB6dSBoZWxmZW4uCisKKyAgICAnemFobCcgbWFjaHQgRGljaCB6dW0gQ2ljZXJvbmUsIGFsbGVyZGluZ3Mgd2lyc3QgRHUgbmV1ZW4gU3BpZWxlcm4gdW5kIGJlaQorICAgICJrd2VyIGNpY2Vyb25lIiBudXIgZGFubiBhbmdlemVpZ3QsIHdlbm4gRHUgd2VuaWdlciBhbHMgJ3phaGwnIE1pbnV0ZW4KKyAgICBpZGxlIGJpc3QuIFNvIG11c3MgbWFuIG5pY2h0IGRyYW4gZGVua2VuLCBkZW4gQ2ljZXJvbmVzdGF0dXMKKyAgICBleHBsaXppdCBhdXN6dXNjaGFsdGVuLCB3ZW5uIG1hbiBvZWZ0ZXIgbGFlbmdlcmVyZSBaZWl0IGlkbGUgaXN0LgorICAgICd6YWhsJyBtdXNzIG1pbi4gMSB1bmQgbWF4LiAxNDQwICgxIFRhZykgc2Vpbi4KKworICAgICdjaWNlcm9uZScgb2huZSBQYXJhbWV0ZXIgb2RlciBtaXQgZGVtIFBhcmFtZXRlciAnc3RhdHVzJyB6ZWlndAorICAgIERpciBkaWUgYWt0dWVsbGUgRWluc3RlbGx1bmcgYW4uCisKKyAgICBCZXZvciBEdSBEaWNoIGFsbGVyZGluZ3MgZGFyYXVmIGVpbmxhZXNzdCBzb2xsdGVzdCBEdSBkaWUKKyAgICBIaWxmZXNlaXRlIHp1IGNpY2Vyb25lcyBsZXNlbiwgZG9ydCB3ZXJkZW4gZGllIEF1ZmdhYmVuIGRlcgorICAgIENpY2Vyb25lcyBuYWVoZXIgc3BlemlmaXppZXJ0LgorCisgICAgQ2ljZXJvbmUga2FubnN0IER1IGFiIGVpbmVtIFNwaWVsZXJsZXZlbCB2b24gMjAgd2VyZGVuLgorCitCRUlTUElFTEU6CisgICAgY2ljZXJvbmUgZWluIC0+IER1IGJpc3QgcGVybWFuZW50IENpY2Vyb25lIChiaXMgRW5kZS9SZWJvb3QpCisgICAgY2ljZXJvbmUgYXVzIC0+IER1IGJpc3Qga2VpbiBDaWNlcm9uZQorICAgIGNpY2Vyb25lIDUgICAtPiBEdSBiaXN0IENpY2Vyb25lIHVuZCB3aXJzdCBudXIgYW5nZXplaWd0LCB3ZW5uIER1IHdlbmlnZXIKKyAgICAgICAgICAgICAgICAgICAgYWxzIDVtaW4gaWRsZSBiaXN0LgorCitCRU1FUktVTkdFTjoKKyAgICBCaXR0ZSBiZW51dHp0IGRpZSBaZWl0YW5nYWJlLCB3ZW5uIGlociBiZWltIElkbGVuIGRvY2ggZWhlciBuaWNodCBhdWYgZGVuCisgICAgTW9uaXRvciBzY2hhdXQvZXJyZWljaGJhciBzZWlkLiBJZGxlIENpY2Vyb25lcyBzaW5kIHdlbmlnIGhpbGZyZWljaC4KKworU0lFSEUgQVVDSDoKKyAgICBlaW5mdWVocnVuZywgY2ljZXJvbmVzCisKK0xFVFpURSBBZU5ERVJVTkc6CisgICAgMTEuIFNlcCAyMDEzIEdsb2luc29uCmRpZmYgLS1naXQgYS9kb2MvcGNtZC9kZXRhaWwgYi9kb2MvcGNtZC9kZXRhaWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZjY4NGQwYgotLS0gL2Rldi9udWxsCisrKyBiL2RvYy9wY21kL2RldGFpbApAQCAtMCwwICsxLDUyIEBACitkZXRhaWwKKy0tLS0tLQorCitLT01NQU5ETzoKKyAgICBkZXRhaWwgPHRleHQ+CisgICAgZGV0YWlsIDxvYmpla3Q+Ojx0ZXh0PgorICAgIG1kIDx0ZXh0PgorICAgIG1kIDxvYmpla3Q+Ojx0ZXh0PgorICAgCitBUkdVTUVOVEU6CisKKyAgICA8dGV4dD4KKyAgICAgICAgRWluZSBNaXR0ZWlsdW5nCisgICAgPG9iamVrdD4KKyAgICAgICAgRWluIFJlZmVyZW56b2JqZWt0LCBkYXMgbmViZW4gRGlyIGxpZWd0IG9kZXIgaW4gRGVpbmVtIEludmVudGFyIGlzdAorCitCRVNDSFJFSUJVTkc6CisgICAgRXMgc29sbCB0YXRzYWVjaGxpY2ggaW1tZXIgbm9jaCBwYXNzaWVyZW4sIGRhcyBkZXIgZWluIG9kZXIgYW5kZXJlCisgICAgZ2V3aXNzZW5oYWZ0ZSBGb3JzY2hlciwgZWluZW4gUmF1bSBvZGVyIGVpbiBPYmpla3QsIGV0YyB1bnRlcnN1Y2h0CisgICAgdW5kIGRhYmVpIHNvIGdydWVuZGxpY2ggdm9yZ2VodCwgZGFzIGlobSBkb2NoIHdpcmtsaWNoIGVpbiBEZXRhaWwKKyAgICBpbnMgQXVnZSBzcHJpbmd0LCB3ZWxjaGVzIE5JQ0hUIGJlc2NocmllYmVuIGlzdC4KKworICAgIERpZSBaZWl0ZW4sIGRhcyBNYWdpZXIgbWl0IHNvIGVpbmVyIG9mZmVua3VuZGlnZW4gVmVyZ2Vzc2xpY2hrZWl0IAorICAgIHVuZCBOYWNobGFlc3NpZ2tlaXQgdW5nZXNjaG9yZW4gZGF2b25rb21tZW4sIHNpbmQgYWJlciBlbnRndWVsdGlnIAorICAgIHZvcmJlaSEgRGVubiBESVIgaXN0IGVpbiBJbnN0cnVtZW50IGluIGRpZSBIYW5kIGdlbGVndCwgbWl0IGRlbSBEdQorICAgIGRpZXNlIE1hZ2llciAnZXJpbm5lcm4nIGthbm5zdC4KKworICAgIDxkZXRhaWwgdGV4dD4gc2V0enQgZWluZSBNZWxkdW5nIHVlYmVyIGVpbiBmZWhsZW5kZXMgRGV0YWlsIGluIAorICAgIGRhcyBlbnRzcHJlY2hlbmRlIExvZy1GaWxlIGRlcyB6dXN0YWVuZGlnZW4gTWFnaWVycy4KKworICAgIEJlaSA8dGV4dD4gc29sbHRlIGVzIHNpY2ggdW0gZWluZW4ga3VyemVuLCBrbmFwcGVuIEhpbndlaXMgaGFuZGVsbiwKKyAgICBkZXIgZXMgZGVtIE1hZ2llciBlcm1vZWdsaWNodCwgdWViZXIgZGllIE5vdHdlbmRpZ2tlaXQsIGRhcyBmZWhsZW5kZQorICAgIERldGFpbCB6dSBlcmdhZW56ZW4gc2NobmVsbCBlbnRzY2hlaWRlbiB6dSBrb2VubmVuLgorCisgICAgV2VubiBEdSBlaW4gRGV0YWlsIGFuIGJlc3RpbW10ZW4gT2JqZWt0IG9kZXIgTlBDIHZlcm1pc3N0LCBrYW5uc3QgRHUKKyAgICBkaWVzZXMvZGllc2VuIGhpbnRlciBlaW5lbSBEb3BwZWxwdW5rdCBhbmdlYmVuLCBkYW1pdCBkZXIgZnVlciBkYXMKKyAgICBPYmpla3QgdmVyYW50d29ydGxpY2hlIE1hZ2llciBkaWUgTWVsZHVuZyBiZWtvbW10LgorICAgIFdlbm4gZGFzIE9iamVrdCBuaWNodCB6dSBmaW5kZW4gaXN0LCB3aXJkIGRpZSBnYW56ZSBFaW5nYWJlIGFscworICAgIE1lbGR1bmcgYXVmZ2VmYXNzdC4KKworQkVNRVJLVU5HOgorICAgIERlciBCZWZlaGwgJ2RldGFpbCcgYmV6aWVodCBzaWNoIGJlaSBOaWNodGFuZ2FiZSBlaW5lcyBCZXp1Z3NvYmpla3RlcworICAgIGF1ZiBkYXMgbGV0enRlIGJldHJhY2h0ZXRlIE9iamVrdC4gSGFzdCBEdSBhbHNvIGVpbiBPYmpla3QgdW50ZXJzdWNodCwKKyAgICBkYW5uIHdpcmQgZGllIE1lbGR1bmcgZnVlciBkaWVzZSBPYmpla3QgYWJnZWdlYmVuLiBIYXN0IER1IGFiZXIgZGVuCisgICAgUmF1bSB1bnRlcnN1Y2h0IG9kZXIgJ3NjaGF1JyBlaW5nZWdlYmVuLCB3aXJkIGRpZSBNZWxkdW5nIGZ1ZXIgRGVpbmVuCisgICAgbW9tZW50YW5lbiBSYXVtIGFiZ2VzZXR6dC4KKworU0lFSEUgQVVDSDoKKyAgICB0eXBvLCBpZGVlLCBidWcsIGJlenVnc29iamVrdAorCitMRVRaVEUgQWVOREVSVU5HOgorICAgIDEyLiBPa3QgMjAxMSBHbG9pbnNvbgpkaWZmIC0tZ2l0IGEvZG9jL3BjbWQvZWJlbmVuIGIvZG9jL3BjbWQvZWJlbmVuCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmU3N2Y5NjYKLS0tIC9kZXYvbnVsbAorKysgYi9kb2MvcGNtZC9lYmVuZW4KQEAgLTAsMCArMSw4MSBAQAorCitEaWUgRWJlbmVuCis9PT09PT09PT09CisgICAgRGllIEViZW5lbiBzaW5kIGVpbmUgS29tbXVuaWthdGlvbnNmb3JtLCB3ZWxjaGUgZXMgZWluZW0gZXJtb2VnbGljaHQsCisgICAgZWluZSBVbnRlcmhhbHR1bmcgdWViZXIgd2VpdGUgU3RyZWNrZW4gaGlud2VnIG1pdCBtZWhyZXJlbiBQZXJzb25lbiB6dQorICAgIGZ1ZWhyZW4uIERpZXNlIEZvcm0gZGVyIFVudGVyaGFsdHVuZyBpc3QgZGVtIFJ1ZmVuIHZvcnp1emllaGVuLCBkYSBlcworICAgIGZ1ZXIgUGVyc29uZW4sIHdlbGNoZSBzaWNoIG5pY2h0IGF1ZiBkZXIgRWJlbmUgYmVmaW5kZW4sIGdlcmFldXNjaGxvcworICAgIGlzdC4KKworICAgIEJldHJldGVuIHVuZCBWZXJsYXNzZW46CisgICAgIC08bmFtZT4rCisgICAgICAgIEViZW5lIDxuYW1lPiBlaW5zY2hhbHRlbi4KKyAgICAgLTxuYW1lPi0KKyAgICAgICAgRWJlbmUgPG5hbWU+IGF1c3NjaGFsdGVuLgorICAgICBlYmVuZW4gbmV1IDxOYW1lPiA8VGV4dD4KKyAgICAgICAgRXJ6ZXVndCBlaW5lIG5ldWUgRWJlbmUgPE5hbWU+IG1pdCBkZXIgQmV6ZWljaHVuZyA8VGV4dD4uIERpZXNlcworICAgICAgICBLb21tYW5kbyBpc3QgZXJzdCBhYiBTdHVmZSA1IG1vZWdsaWNoIQorICAgICBlYmVuZW4gYW4KKyAgICAgICAgU2NoYWx0ZXQgZGllIHZvcmhlciBhdXNnZXNjaGFsdGV0ZW4gRWJlbmVuIGFuLgorICAgICAgICBJc3Qgdm9yaGVyIGtlaW4gYGViZW5lIGF1cycgZXJmb2xndCwgc28gd2VyZGVuIGFsbGUgbmljaHQKKyAgICAgICAgZWluZ2VzY2hhbHRldGVuIEViZW5lbiBlaW5nZXNjaGFsdGV0LgorICAgICBlYmVuZW4gYXVzCisgICAgICAgIFNjaGFsdGV0IGRpZSBFYmVuZW4gYXVzLgorCisgICAgUmVkZW4gYXVmIGVpbmVyIEViZW5lOgorICAgICAtPG5hbWU+JzxUZXh0PgorICAgICAtPG5hbWU+IDxUZXh0PgorICAgICAgICBTZW5kZXQgZGllIE1lbGR1bmcgPFRleHQ+IGF1ZiBkaWUgRWJlbmUKKyAgICAgLTxuYW1lPjo8VGV4dD4KKyAgICAgICAgU2VuZGV0IGRhcyBgZW1vdGUnIDxUZXh0PiBhdWYgZGllIEViZW5lCisgICAgIC08bmFtZT47PFRleHQ+CisgICAgICAgIEVyemV1Z3QgZWluIEdlbml0aXYtYGVtb3RlJworCisgICAgRWJlbmVubmFtZW46CisgICAgIE1hbiBrYW5uIGVpbmUgRWJlbmUgbWl0IGRlbSB2b2xsZW4gTmFtZW4gYW5zcHJlY2hlbjoKKyAgICAgICAgIi1hbmZhZW5nZXIgSGFsbG8hIiAgIG9kZXIgICAiLWFiZW50ZXVlciBIaWxmZSEiCisgICAgIGVzIHJlaWNodCBhYmVyIGF1Y2ggc2Nob24gZWluIGVpbmRldXRpZyB2b24gYW5kZXJlbiBFYmVuZW4gYWJncmVuemVuZGVyCisgICAgIFRlaWwgZGVzIE5hbWVuczoKKyAgICAgICAgIi1hbiBIYWxsbyEiICAgICAgICAgIG9kZXIgICAiLWFiIEhpbGZlISIKKworICAgICBHdWVsdGlnZSBOYW1lbiBzZXR6ZW4gc2ljaCB6dXNhbW1lbiBhdXMgZGVuIEJ1Y2hzdGFiZW4gYS16LCBBLVogc293aWUKKyAgICAgIyQlJkA8Pi0uIERhcyAjIGhhdCBkYWJlaSBlaW5lIFNvbmRlcmF1ZmdhYmU6IERhbWl0IHdpcmQgZGVyCisgICAgIGdsZWljaG5hbWlnZSBJUkMtQ2hhbm5lbCBlcnpldWd0IGJ6dy4gYmV0cmV0ZW4uCisKKyAgICBJbmZvcm1hdGlvbmVuIHVuZCBFYmVuZW5nZXNjaGljaHRlOgorICAgICAtPG5hbWU+PworICAgICAgICBBbGxlIFRlaWxuZWhtZXIgZGVyIEViZW5lIDxuYW1lPiBhbnplaWdlbi4KKyAgICAgLTxuYW1lPio8TGFlbmdlPgorICAgICAgICBEaWUgbGV0enRlbiA8TGFlbmdlPiBNZWxkdW5nZW4gZGVyIEViZW5lIDxuYW1lPiBhbnplaWdlbi4gV2lyZCBkaWUKKyAgICAgICAgTGFlbmdlIHdlZ2dlbGFzc2VuLCBpc3QgU3RhbmRhcmQgdW5kIE1heGltdW0gMjAwLgorICAgICAtPworICAgICAgICBBbGxlIHZlcmZ1ZWdiYXJlbiBFYmVuZW4gYW56ZWlnZW4uCisgICAgIC0hCisgICAgICAgIEFsbGUgZWluZ2VzY2hhbHRldGVuIEViZW5lbiBhbnplaWdlbi4KKyAgICAgZWJlbmVuIGJlc2NocmVpYnVuZyA8bmFtZT4gPFRleHQ+CisgICAgICAgIFZlcmFlbmRlcnQgZGllIEJlc2NocmVpYnVuZyBkZXIgRWJlbmUgPG5hbWU+LiBEaWVzIGZ1bmt0aW9uaWVydCBudXIsCisgICAgICAgIHdlbm4gbWFuIGRlciBNZWlzdGVyIGRlciBFYmVuZSBpc3QuCisKKyAgICBBYmt1ZXJ6dW5nZW4vQWxpYXMgZnVlciBFYmVuZW5uYW1lbjoKKyAgICAgRXMgZ2lidCBlaW5pZ2Ugdm9yZGVmaW5pZXJ0ZSBBbGlhc2UgZnVlciBFYmVuZW4gKHdpZSAtYSBmdWVyIC1hbGxnZW1laW4KKyAgICAgb2RlciAtYiBmdWVyIC1hYmVudGV1ZXIpLiBXZWl0ZXJlIGthbm4gbWFuIHNpY2ggc2VsYnN0IGRlZmluaWVyZW4sIHdlbm4KKyAgICAgRWJlbmVubmFtZW4genUgbGFuZyBvZGVyIG1pdCBTb25kZXJ6ZWljaGVuIHZlcnNlaGVuIHNpbmQ6CisKKyAgICAgZWJlbmVuIGFbYmt1ZXJ6dW5nXQorICAgICAgICBaZWlndCBhbGxlIGVpbmdlc3RlbGx0ZW4gQWJrdWVyenVuZ2VuIGFuLgorICAgICBlYmVuZW4gYVtia3Vlcnp1bmddIHNbdGFuZGFyZF0KKyAgICAgICAgU3RlbGx0IGRpZSBTdGFuZGFyZGFia3Vlcnp1bmdlbiBlaW4gdW5kIHplaWd0IGRpZXNlIGFuLgorICAgICBlYmVuZW4gPHh4Pj08TmFtZT4KKyAgICAgICAgU3RlbGx0IGRpZSBBYmt1ZXJ6dW5nIDx4eD4gZnVlciBkaWUgRWJlbmUgPE5hbWU+IGVpbi4gTGVlcnplaWNoZW4KKwlzaW5kICpuaWNodCogenVsYWVzc2lnIHZvciBvZGVyIGhpbnRlciBkZW0gR2xlaWNoaGVpdHN6ZWljaGVuICc9JyEKKyAgICAgZWJlbmVuIDx4eD49CisgICAgICAgIExvZXNjaHQgZGllIEFia3Vlcnp1bmcgPHh4PgorICAgICBlYmVuZW4gc3RhbmRhcmQgPE5hbWU+CisgICAgICAgIFNldHp0IGRpZSBFYmVuZSA8TmFtZT4gYWxzIFN0YW5kYXJkLgorCURhbWl0IHdpcmQgYXV0b21hdGlzY2ggYmVpICItIDxUZXh0PiIgYXVmIGRpZXNlciBFYmVuZSBnZXJlZGV0LgorCisgU0lFSEUgQVVDSDoKKyAgICBpcmMsIHNlbmRlcndpZWRlcmhvbHVuZworCisgTEVUWlRFIEFlTkRFUlVORzoKKyAgICAxLiBKdWxpIDIwMDYgRW5ub3gKZGlmZiAtLWdpdCBhL2RvYy9wY21kL2VtYWlsIGIvZG9jL3BjbWQvZW1haWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNGVjYjFkOQotLS0gL2Rldi9udWxsCisrKyBiL2RvYy9wY21kL2VtYWlsCkBAIC0wLDAgKzEsMjggQEAKKworZW1haWwKKy0tLS0tCisKKyBLT01NQU5ETzoKKyAgICBlbWFpbCBbPGFkcmVzc2U+XQorCisgQVJHVU1FTlRFOgorCisgICAgIDxhZHJlc3NlPiAob3B0aW9uYWwpCisgICAgICAgIERpZSBuZXVlIEFkcmVzc2UKKworIEJFU0NIUkVJQlVORzoKKyAgICBPaG5lIEFyZ3VtZW50ZSBnaWJ0IGBlbWFpbCcgZGllIGFrdHVlbGxlIEVNYWlsLUFkcmVzc2UgYXVzLiBNaXQgQXJndW1lbnQKKyAgICB3aXJkIHNpZSBhdWYgZGllIG5ldWUgQWRyZXNzZSBnZXNldHp0LgorCisgICAgSGlud2VpczogZWluZSBndWVsdGlnZSBFTWFpbC1BZHJlc3NlIGVybGVpY2h0ZXJ0IGVzIF9lcmhlYmxpY2hfIGltCisgICAgQmVkYXJmc2ZhbGwgZWluIG5ldWVzIFBhc3N3b3J0IGZ1ZXIgZGVuIENoYXJha3RlciB6dSBzZXR6ZW4uIEluIHZpZWxlbgorICAgIEZhZWxsZW4gaXN0IGRpZXMgb2huZSBFTWFpbC1BZHJlc3NlIG5pY2h0IG1vZWdsaWNoLgorCitTSUVIRSBBVUNIOgorICAgIEVpbnN0ZWxsdW5nZW46ICAgICAgICBlbWFpbGFuemVpZ2UKKyAgICBQZXJzb2VubGljaGUgRGV0YWlsczogZW1haWwsIHVybCwgaWNxLCBtZXNzZW5nZXIsIG9ydAorICAgIFNvbnN0aWdlczogICAgICAgICAgICBmaW5nZXIsIHdlciwga3dlcgorCitMRVRaVEUgQWVOREVSVU5HOgorICAgIDEyLjA5LjIwMTEsIFplc3N0cmEKKwpkaWZmIC0tZ2l0IGEvZG9jL3BjbWQvZW1haWxhbnplaWdlIGIvZG9jL3BjbWQvZW1haWxhbnplaWdlCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjAyZjUyYjIKLS0tIC9kZXYvbnVsbAorKysgYi9kb2MvcGNtZC9lbWFpbGFuemVpZ2UKQEAgLTAsMCArMSwyMiBAQAorS09NTUFORE86CisJZW1haWxhbnplaWdlIFtQZXJzb25lbmtyZWlzXQorCitBUkdVTUVOVEU6CisJW1BlcnNvbmVua3JlaXNdCisJICBEaWUgUGVyc29uZW4sIGRpZSBiZWltIGZpbmdlci1CZWZlaGwgRGVpbmUgRW1haWwgYW5nZXplaWd0CisJICBiZWtvbW1lbi4KKworQkVTQ0hSRUlCVU5HOgorCU1pdCBkaWVzZW0gQmVmZWhsIGthbm4gbWFuIGZlc3RsZWdlbiwgd2VsY2hlIFBlcnNvbmVuIGJlaW0KKwlmaW5nZXItQmVmZWhsIGRpZSBFTWFpbC1BZHJlc3NlIGFuZ2V6ZWlndCBiZWtvbW1lbiwgZGllIER1IG1pdAorCWRlbiBCZWZlaGwgImVtYWlsIiBvZGVyIGJlaW0gZXJzdGVuIExvZ2luIGFuZ2VnZWJlbiBoYXN0LgorCUFscyBPcHRpb25lbiBzdGVoZW4genVyIFZlcmZ1ZWd1bmc6IGFsbGUsIGZyZXVuZGUsIG5pZW1hbmQuCisJQWNodHVuZzogTWFnaWVyIGJla29tbWVuIGRpZSBFbWFpbC1BZHJlc3NlIGltbWVyIGFuZ2V6ZWlndCwKKwlhdWNoIGRhbm4sIHdlbm4gbWFuICJlbWFpbGFuemVpZ2UgbmllbWFuZCIgZWluZ2lidC4KKworU0lFSEUgQVVDSDoKKyAgICAgICAgUGVyc29lbmxpY2hlIERldGFpbHM6IGVtYWlsLCB1cmwsIGljcSwgbWVzc2VuZ2VyLCBvcnQKKyAgICAgICAgU29uc3RpZ2VzOiAgICAgICAgICAgIGZpbmdlcgorCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCitMYXN0IG1vZGlmaWVkOiBNb24gT2t0IDE2IDIwOjMyOjQ0IDIwMDAgYnkgU2lsdmFuYQpkaWZmIC0tZ2l0IGEvZG9jL3BjbWQvZW1vdGUgYi9kb2MvcGNtZC9lbW90ZQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5lMWRmNGVkCi0tLSAvZGV2L251bGwKKysrIGIvZG9jL3BjbWQvZW1vdGUKQEAgLTAsMCArMSw2NCBAQAorCitlbW90ZQorLS0tLS0KKworIEtPTU1BTkRPOgorICAgIGVtb3RlIDx0ZXh0MT5bIzxuYW1lPiM8dGV4dDI+WyM8dGV4dDM+XV0KKyAgICA6PHRleHQxPlsjPG5hbWU+Izx0ZXh0Mj5bIzx0ZXh0Mz5dXQorICAgIDs8dGV4dDE+WyM8bmFtZT4jPHRleHQyPlsjPHRleHQzPl1dCisKKyBBUkdVTUVOVEU6CisKKyAgICAgPHRleHQxPiwgPHRleHQyPiwgPHRleHQzPgorICAgICAgICBaZWljaGVua2V0dGVuCisgICAgIDxuYW1lPgorICAgICAgICBOYW1lIGVpbmVzIExlYmV3ZXNlbnMgaW0gZ2xlaWNoZW4gUmF1bSB3aWUgRHUKKworIEJFU0NIUkVJQlVORzoKKyAgICBHaWJ0IGRlbiBUZXh0IDx0ZXh0MT4gYW4gYWxsZSBpbSBSYXVtIGF1cy4gRGVpbiBOYW1lIHdpcmQgZGVtIFRleHQKKyAgICB2b3Jhbmdlc3RlbGx0LiBWZXJ3ZW5kZXQgbWFuIGRpZSBgOyctRm9ybSwgd2lyZCBEZWluIE5hbWUgaW0gR2VuaXRpdgorICAgIGdld2FlaGx0LgorCisgICAgV2VyZGVuIGVpbiBOYW1lIHVuZCB3ZWl0ZXJlcmUgVGV4dGUgYW5nZWdlYmVuLCBzbyB3aXJkIGFuIDxuYW1lPiBzdGF0dCBkZXMKKyAgICBlcnN0ZW4gVGV4dGVzIDx0ZXh0Mj4gYXVzZ2VnZWJlbiAoZWJlbmZhbGxzIG1pdCBEZWluZW0gTmFtZW4KKyAgICB2b3Jhbmdlc3RlbGx0KSB1bmQgYW4gRGljaCA8dGV4dDM+IChvaG5lIE5hbWVuKS4KKworICAgIERhcyBgZW1vdGUnLUtvbW1hbmRvIGJlaGVycnNjaHQgbWFuIHVlYnJpZ2VucyBlcnN0LCBuYWNoZGVtIG1hbiBkaWUKKyAgICBBbWFyeWxsaXMtUXVlc3QgZ2Vsb2VzdCBoYXQuCisKKyAgICBJc3QgbWFuIG51ciBlaW5mYWNoZXIgU3BpZWxlciAoYWxzbyB3ZWRlciBTZWhlciBub2NoIE1hZ2llciksIHNvIHdpcmQgYXVjaAorICAgIG5vY2ggZWluIGA+ICcgdm9yIE5hbWVuIHVuZCBUZXh0IGdlc2V0enQuCisKKyBCRUlTUElFTEU6CisgICAgQW5nZW5vbW1lbiwgV2FyZ29uIHVuZCBTYXBoaXMgc3RlaGVuIG1pdCBlaW5pZ2VuIGFuZGVyZW4gTGV1dGVuIHp1c2FtbWVuCisgICAgaW4gZWluZW0gUmF1bS4KKworICAgIEhpZXIgZWluIHBhYXIgRWluZ2FiZW4gdm9uIFdhcmdvbiBtaXQgZGVuIGVudHNwcmVjaGVuZGVuIEF1c2dhYmVuIGJlaSBkZW4KKyAgICBBbndlc2VuZGVuOgorCisgICAgPiA6bmllc3QuCisKKyAgICB8V2FyZ29uOnwgV2FyZ29uIG5pZXN0LgorICAgIHxTYXBoaXM6fCBXYXJnb24gbmllc3QuCisgICAgfGFuZGVyZTp8IFdhcmdvbiBuaWVzdC4KKworICAgID4gOmFlcmdlcnQgU2FwaGlzLiNzYXBoaXMjYWVyZ2VydCBEaWNoLgorCisgICAgfFdhcmdvbjp8IFdhcmdvbiBhZXJnZXJ0IFNhcGhpcy4KKyAgICB8U2FwaGlzOnwgV2FyZ29uIGFlcmdlcnQgRGljaC4KKyAgICB8YW5kZXJlOnwgV2FyZ29uIGFlcmdlcnQgU2FwaGlzLgorCisgICAgPiA6YWVyZ2VydCBTYXBoaXMuI3NhcGhpcyNhZXJnZXJ0IERpY2guI0R1IGFlcmdlcnN0IFNhcGhpcy4KKworICAgIHxXYXJnb246fCBEdSBhZXJnZXJzdCBTYXBoaXMuCisgICAgfFNhcGhpczp8IFdhcmdvbiBhZXJnZXJ0IERpY2guCisgICAgfGFuZGVyZTp8IFdhcmdvbiBhZXJnZXJ0IFNhcGhpcy4KKworICAgIFdpZSBtYW4gc2llaHQsIGxhc3NlbiBzaWNoIG1pdCBkZXIgbGV0enRlbiBGb3JtIHVuZCBkZW0gYWxpYXMtQmVmZWhsCisgICAgZWlnZW5lIEJlZmVobGUgaGVyc3RlbGxlbiAoYWxsZXJkaW5ncyBtdXNzIG1hbiBhdWYgQWR2ZXJiaWVuIHZlcnppY2h0ZW4pLgorCisgU0lFSEUgQVVDSDoKKyAgICB2ZXJiZW4sIChhYiBoaWVyIG51ciBmdWVyIFNlaGVyKSByZW1vdGUsIGVjaG8KKworIExFVFpURSBBZU5ERVJVTkc6CisgICAgVGh1LCAyNC4wNy4xOTk3LCAwOTowMDowMCB2b24gV2FyZ29uCmRpZmYgLS1naXQgYS9kb2MvcGNtZC9lbmRlIGIvZG9jL3BjbWQvZW5kZQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4wM2RjYzk5Ci0tLSAvZGV2L251bGwKKysrIGIvZG9jL3BjbWQvZW5kZQpAQCAtMCwwICsxLDI4IEBACisKK2VuZGUKKy0tLS0KKworIEtPTU1BTkRPOgorICAgIGVuZGUKKworIEFSR1VNRU5URToKKyAgICBrZWluZQorCisgQkVTQ0hSRUlCVU5HOgorICAgIE1hbiB2ZXJsYWVzc3QgZGFzIFNwaWVsIHNvZm9ydCB1bmQgYXVmIGRlciBTdGVsbGUgKHNpZWhlIGFiZXIgYXVjaCB1bnRlcgorICAgIEJFTUVSS1VOR0VOKS4gQWxsZSBHZWdlbnN0YWVuZGUgd2VyZGVuIGZhbGxlbiBnZWxhc3NlbiwgbnVyIGF1dG9sYWRlbmUKKyAgICBHZWdlbnN0YWVuZGUgKHouQi4gR2VsZCkgYmVoYWVsdHN0IER1IHVlYmVyIGRhcyBTcGllbGVuZGUgaGluYXVzLiBXZW5uIER1CisgICAgRGljaCB3aWVkZXIgZWlubG9nZ3N0LCBzdGFydGVzdCBEdSBhbiBEZWluZW0gbG9rYWxlbiBTdGFydHB1bmt0LgorCisgICAgRGVyIGFrdHVlbGxlIFNwaWVsc3RhbmQgd2lyZCB2b3IgZGVtIFZlcmxhc3NlbiBhdXRvbWF0aXNjaCBhYmdlc3BlaWNoZXJ0LgorCisgQkVNRVJLVU5HRU46CisgICAgRGEgZWluaWdlIExldXRlIGRpZXNlbiBCZWZlaGwgZ2VicmF1Y2h0ZW4sIHVtIHNpY2ggaW0gS2FtcGYgVm9ydGVpbGUgenUKKyAgICB2ZXJzY2hhZmZlbiwgZnVua3Rpb25pZXJ0IGRlciBgZW5kZSctQmVmZWhsIGVyc3QgendlaSBNaW51dGVuIG5hY2ggZGVyCisgICAgbGV0enRlbiBLYW1wZmhhbmRsdW5nLgorCisgU0lFSEUgQVVDSDoKKyAgICBzcGVpY2hlcm4sIHNjaGxhZmUgKGVpbikKKworIExFVFpURSBBZU5ERVJVTkc6CisgICAgVHVlLCAwMi4wOS4xOTk3LCAxNTowNTowMCB2b24gV2FyZ29uCmRpZmYgLS1naXQgYS9kb2MvcGNtZC9lbnRnaWZ0ZSBiL2RvYy9wY21kL2VudGdpZnRlCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmYzZWRmNjUKLS0tIC9kZXYvbnVsbAorKysgYi9kb2MvcGNtZC9lbnRnaWZ0ZQpAQCAtMCwwICsxLDI1IEBACisKK2VudGdpZnRlCistLS0tLS0tLQorCisgS09NTUFORE86CisgICAgZW50Z2lmdGUgWzx6aWVsPl0KKworIEFSR1VNRU5URToKKworICAgICA8emllbD4gKG9wdGlvbmFsKQorICAgICAgICBEYXMgenUgZW50Z2lmdGVuZGUgTGViZXdlc2VuLgorCisgQkVTQ0hSRUlCVU5HOgorICAgIEVpZ2VudGxpY2ggaXN0IGRpZXMgZWluZSBBbnJ1ZnVuZyBkZXMgSGVpbGlnZW4gT3JkZW5zLiBBbGxlcmRpbmdzIGtvZW5uZW4KKyAgICBhdWNoIEFuZ2Vob2VyaWdlIGFuZGVyZXIgR2lsZGVuIGRpZXNlIEFucnVmdW5nIGxlcm5lbiwgbmFjaGRlbSBzaWUgZGFzCisgICAgQWJlbnRldWVyICJWZXJoYWVuZ25pcyBkZXMgRHVlc3RlcndhbGRzIiBnZWxvZXN0IGhhYmVuLgorCisgICAgRmFsbHMgZGFzIDx6aWVsPiB2ZXJnaWZ0ZXQgaXN0LCBzbyB3aXJkIHNlaW5lIFZlcmdpZnR1bmcgZ2VsaW5kZXJ0IG9kZXIKKyAgICBnYXIgZ2VoZWlsdCAoamUgbmFjaCBHdWV0ZSBkZXIgQW5ydWZ1bmcpLiBPaG5lIEFuZ2FiZSB2b24gPHppZWw+IHdpcmQKKyAgICBkaWUgZWlnZW5lIFZlcmdpZnR1bmcgZ2VsaW5kZXJ0IG9kZXIgZ2VoZWlsdC4KKworICAgIERpZSBBbndlbmR1bmcgZGVyIEFucnVmdW5nIGtvc3RldCAzMCBNYWdpZXB1bmt0ZS4KKworIExFVFpURSBBRU5ERVJVTkc6CisgICAgRnJlLCAyNi4xMS4xOTk5LCAxNToxNjowMCB2b24gVGlsbHkKZGlmZiAtLWdpdCBhL2RvYy9wY21kL2Vyc2V0enVuZ3NhbnplaWdlIGIvZG9jL3BjbWQvZXJzZXR6dW5nc2FuemVpZ2UKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYzIxMzFlMgotLS0gL2Rldi9udWxsCisrKyBiL2RvYy9wY21kL2Vyc2V0enVuZ3NhbnplaWdlCkBAIC0wLDAgKzEsMzAgQEAKKworZXJzZXR6dW5nc2FuemVpZ2UKKy0tLS0tLS0tLS0tLS0tLS0tCisKKyBLT01NQU5ETzoKKyAgICBlcnNldHp1bmdzYW56ZWlnZSA8c3R1ZmU+CisKKyBBUkdVTUVOVEU6CisKKyAgICAgPHN0dWZlPgorICAgICAgICAwLCAxIG9kZXIgMgorCisgQkVTQ0hSRUlCVU5HOgorICAgIE1pdCBkaWVzZW0gQmVmZWhsIGthbm4gbWFuIHNpY2ggZGllIEVyc2V0enVuZ2VuIGJlaSBkZXIgQmVudXR6dW5nIHZvbgorICAgIEJlZmVobHNnZXNjaGljaHRlIHVuZCBBbGlhc2VuIGFuemVpZ2VuIGxhc3Nlbi4KKworICAgIGBlcnNldHp1bmdzYW56ZWlnZSAxJyB6ZWlndCBkYWJlaSBkaWUgRXJzZXR6dW5nZW4gZGVyIEhpc3RvcnkgYW4gdW5kCisgICAgYGVyc2V0enVuZ3NhbnplaWdlIDInIGRpZSBFcnNldHp1bmdlbiB2b24gSGlzdG9yeSB1bmQgQWxpYXNlbi4KKworICAgIE1pdCBgZXJzZXR6dW5nc2FuemVpZ2UgMCcgc2NoYWx0ZXQgbWFuIGRpZSBBbnplaWdlIHdpZWRlciBhYi4KKworICAgIERpZXNlciBCZWZlaGwgaXN0IGhhdXB0c2FlY2hsaWNoIGRhbm4gbnVldHpsaWNoLCB3ZW5uIG1hbiBzaWNoIGRhdm9uCisgICAgdWViZXJ6ZXVnZW4gd2lsbCwgb2IgZWluZSBhbnNjaGVpbmVuZCByaWNodGlnZSBTeW50YXggei5CLiB2b24gZWluZW0KKyAgICBsYWVuZ3N0IHZlcmdlc3NlbmVuIEFsaWFzIHZlcmh1bnp0IHdpcmQuCisKKyBTSUVIRSBBVUNIOgorICAgIGFsaWFzLCBoaXN0b3J5CisKKyBMRVRaVEUgQWVOREVSVU5HOgorICAgIFRodSwgMjQuMDcuMTk5NywgMDk6MDA6MDAgdm9uIFdhcmdvbgpkaWZmIC0tZ2l0IGEvZG9jL3BjbWQvZXJ3YXJ0ZSBiL2RvYy9wY21kL2Vyd2FydGUKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uN2E2NWI5NgotLS0gL2Rldi9udWxsCisrKyBiL2RvYy9wY21kL2Vyd2FydGUKQEAgLTAsMCArMSw1MiBAQAorS09NTUFORE86CisgICAgIGVyd2FydGUgWy11fDxTcGllbGVyPl0KKyAgICAgZXJ3YXJ0ZSBbPFNwaWVsZXI+XSB3ZWdlbiBbPEdydW5kPl0KKyAgICAgZXJ3YXJ0ZSBbYW58ZWlufGF1c10KKworQVJHVU1FTlRFOgorICAgICA8U3BpZWxlcj4KKyAgICAgICBIaWVyIHdpcmQgYW5nZWdlYmVuLCB3ZWxjaGVuIFNwaWVsZXIgbWFuIGVyd2FydGV0LgorICAgICA8R3J1bmQ+CisgICAgICAgKDEpIFRleHRtZWxkdW5nLCB3ZWxjaGUgYmVpbSBFaW5sb2dnZW4gZGVzIGVyd2FydGV0ZW4gU3BpZWxlcnMga29tbXQuCisgICAgICAgKDIpIEJlaSBBbmdhYmUgdm9uICduaWNodHMnIG9kZXIgJ2xvZXNjaGVuJyB3aXJkIDxHcnVuZD4gZ2Vsb2VzY2h0LgorICAgICAtdQorICAgICAgIFVudGVyIFZlcndlbmR1bmcgZGllc2VyIE9wdGlvbiB3ZXJkZW4gZGllIGVyd2FydGV0ZW4gU3BpZWxlcm5hbWVuCisgICAgICAgaW4gZGVyIGNocm9ub2xvZ2lzY2hlbiBSZWloZW5mb2xnZSBpaHJlcyBFaW50cmFncyBpbiBkZXIKKyAgICAgICBFcndhcnRlLUxpc3RlIGF1c2dlZ2ViZW4uIE9obmUgZGllc2UgT3B0aW9uIHdpcmQgZGllIExpc3RlCisgICAgICAgYWxwaGFiZXRpc2NoIGdlb3JkbmV0IHByYWVzZW50aWVydC4KKworQkVTQ0hSRUlCVU5HOgorICAgICBEaWUgQW5rdW5mdCB1bmQgZGFzIFdlZ2dlaGVuIGRlciBTcGllbGVyLCBkaWUgbWl0IGBFcndhcnRlIDxOYW1lPicKKyAgICAgbWFya2llcnQgd3VyZGVuLCB3ZXJkZW4gbWl0IGVpbmVyIE1lbGR1bmcgdW5kIGVpbmVtIFBpZXB0b24KKyAgICAgYmVzdGFldGlndC4KKyAgICAgYGVyd2FydGUnIG9obmUgQXJndW1lbnQgemVpZ3QgZGllIExpc3RlIGRlciB6dXIgWmVpdCBlcndhcnRldGVuCisgICAgIFNwaWVsZXIgaW4gYWxwaGFiZXRpc2NoZXIgUmVpaGVuZm9sZ2UgYW4uIERpZSBPcHRpb24gJy11JyBrYW5uIGRpZQorICAgICBMaXN0ZSBhdWNoIGluIGRlciBjaHJvbm9sb2dpc2NoZW4gUmVpaGVuZm9sZ2UgaWhyZXIgRWludHJhZWdlCisgICAgIGFuemVpZ2VuLgorICAgICBFaW4gZXJuZXV0ZXIgQXVmcnVmIHZvbiBgZXJ3YXJ0ZSA8U3BpZWxlcj4nIGVudGZlcm50IDxTcGllbGVyPgorICAgICB3aWVkZXIgYXVzIGRlciBMaXN0ZS4KKworICAgICBFcndhcnRldCBtYW4gZWluZW4gU3BpZWxlciBhdXMgZWluZW0gZ2FueiBiZXN0aW1tdGVuIEdydW5kLCB1bmQKKyAgICAgbW9lY2h0ZSBtYW4gYmVpIGRlc3NlbiBFaW5sb2dnZW4gYXVjaCBkYXJhbiBlcmlubmVydCB3ZXJkZW4sIHdhcyBtYW4KKyAgICAgdm9uIGlobSB3b2xsdGUsIHNvIGlzdCBgZXJ3YXJ0ZSA8U3BpZWxlcj4gd2VnZW4gPEdydW5kPicgbnVldHpsaWNoLgorICAgICBCZWltIEVpbmxvZ2dlbiBkZXMgU3BpZWxlcnMgPE5hbWU+IGVyc2NoZWludCBlaW5lIFRleHRtZWxkdW5nIG1pdAorICAgICBJbmhhbHQgPEdydW5kPi4KKyAgICAgTWl0IGBlcndhcnRlIHdlZ2VuJyBpc3QgZGllc2Ugc3BlemllbGxlIEVyd2FydGVsaXN0ZSBhYmZyYWdiYXIgdW5kCisgICAgIG1pdCBgZXJ3YXJ0ZSA8U3BpZWxlcj4gd2VnZW4nLCBvYiB1bmQgYXVzIHdlbGNoZW4gR3J1bmQgbWFuIFNwaWVsZXIKKyAgICAgPFNwaWVsZXI+IGVyd2FydGV0LiBXaXJkIGFscyA8R3J1bmQ+IGBuaWNodHMnIG9kZXIgYGxvZXNjaGVuJworICAgICBhbmdlZ2ViZW4sIGVudGZlcm50IG1hbiBkZW4gRWludHJhZyB3aWVkZXIuCisgICAgIFNwaWVsZXIga29lbm5lbiAxMCBUZXh0bWVsZHVuZ2VuIHNldHplbiwgU2VoZXIgMjAsIE1hZ2llciA0MCB1bmQKKyAgICAgRXJ6bWFnaWVyIDgwLgorICAgICBNaXQgJ2Vyd2FydGUgYXVzJyBrYW5uIG1hbiBFcndhcnRlLU1lbGR1bmdlbiB2b3J1ZWJlcmdlaGVuZAorICAgICBkZWFrdGl2aWVyZW4uICdlcndhcnRlIGVpbicgYnp3LiAnZXJ3YXJ0ZSBhbicgYWt0aXZpZXJ0IGVzIGRhbm4KKyAgICAgd2llZGVyLCBvaG5lIGRhc3MgZGllIExpc3RlIGRlciBFcndhcnRldGVuIHZlcmxvcmVuIGdlaHQuCisKK0JFTUVSS1VOR0VOOgorICAgICBEZXIgdm9uICdlcndhcnRlJyBlcnpldWd0ZSBQaWVwdG9uIGthbm4gc2ljaCBpbiBnZXdpc3NlbgorICAgICBSTC1VbWdlYnVuZ2VuIHJlY2h0IHN0b2VyZW5kIGF1c3dpcmtlbi4gRGFnZWdlbiBrYW5uIG1hbiBzaWNoIGplZG9jaAorICAgICBtaXR0ZWxzIGRlcyBLb21tYW5kb3MgJ3RvbiBBVVMnIHdlaHJlbi4KKworU0lFSEUgQVVDSDoKKyAgICAgdG9uLCBpbmZvcm0KKworNi5GZWIgMjAxNiBHbG9pbnNvbgpkaWZmIC0tZ2l0IGEvZG9jL3BjbWQvZXJ3aWRlcmUgYi9kb2MvcGNtZC9lcndpZGVyZQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4xNGNhZTM3Ci0tLSAvZGV2L251bGwKKysrIGIvZG9jL3BjbWQvZXJ3aWRlcmUKQEAgLTAsMCArMSwyOCBAQAorCitlcndpZGVyZQorLS0tLS0tLS0KKworIEtPTU1BTkRPOgorICAgIGVyd2lkZXJlIDx0ZXh0PgorCisgQVJHVU1FTlRFOgorCisgICAgIDx0ZXh0PgorICAgICAgICBEZXIgenUgZXJ3aWRlcm5kZSBUZXh0CisKKyBCRVNDSFJFSUJVTkc6CisgICAgV2VubiBEaXIgamVtYW5kIGV0d2FzIG1pdHRlaWx0LCBrYW5uc3QgRHUgbWl0IGRpZXNlbSBLb21tYW5kbyBkaXJla3QKKyAgICBkYXJhdWYgYW50d29ydGVuLCBvaG5lIGRlbiBOYW1lbiBkZXMgQWJzZW5kZXJzIGVpbmdlYmVuIHp1IG11ZXNzZW4uCisKKyAgICBBYmVyIGF1ZmdlcGFzc3Q6IER1IGVyd2lkZXJzdCB3aXJrbGljaCBudXIgZGllICpsZXR6dGUqIE1pdHRlaWx1bmchIFdlbm4KKyAgICBEdSBhbHNvIGRlbiB6dSBlcndpZGVybmRlbiBUZXh0IHNjaHJlaWJzdCwgdW5kIGplbWFuZCBhbmRlcmVzIHRlaWx0IERpciBpbgorICAgIGRlciBad2lzY2hlbnplaXQgYXVjaCBub2NoIGV0d2FzIG1pdCwgc28gYmVrb21tdCAqZXIqIGRpZSBBbnR3b3J0CisgICAgenVnZXNjaGlja3QhCisgICAgCisgICAgRGVyIGdsZWljaGUgRWZmZWt0IGthbm4gbWl0ICJ0ZWlsZSAsIG1pdCA8dGV4dD4iIGVyemllbHQgd2VyZGVuLgorCisgU0lFSEUgQVVDSDoKKyAgICB0ZWlsZSAobWl0KQorCisgTEVUWlRFIEFlTkRFUlVORzoKKyAgICBUaHUsIDA4LjAyLjIwMDcsIDE4OjIzOjAwIHZvbiBNdWFkaWIKZGlmZiAtLWdpdCBhL2RvYy9wY21kL2ZlaGxlciBiL2RvYy9wY21kL2ZlaGxlcgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi45OGE2Njc1Ci0tLSAvZGV2L251bGwKKysrIGIvZG9jL3BjbWQvZmVobGVyCkBAIC0wLDAgKzEsMzAgQEAKK2ZlaGxlcgorLS0tLS0tCisKK0tPTU1BTkRPOgorICAgIGZlaGxlcgorCitCRVNDSFJFSUJVTkc6CisgICAgV2VyIHZpZWwgcHJvZ3JhbW1pZXJ0LCBrYW5uIGF1Y2ggdmllbGUgRmVobGVyIG1hY2hlbi4gRGllIG1laXN0ZW4KKyAgICBQcm9ibGVtZSB3ZXJkZW4gendhciBzY2hvbiB2b3IgZGVtIEFuc2NobHVzcyBkZXMgbmV1ZW4gR2ViaWV0ZXMgb2RlcgorICAgIE9iamVrdGVzIGVudGRlY2t0LCBhYmVyIGVpbmlnZXMgYmxlaWJ0IGJpcyB6dW0gQW5zY2hsdXNzIHVuZW50ZGVja3QuCisgICAgTWFuY2hlIElkZWUgaXN0IGRlbSBNYWdpZXIgYXVjaCBuaWNodCBzbyBrbGFyLCB3aWUgZGVtIFNwaWVsZXIsIGRlcgorICAgIHNwYWV0ZXIgZWlubWFsIGR1cmNobGFldWZ0LgorCisgICAgWnVtIE1lbGRlbiBkaWVzZXIgRmVobGVyIGdpYnQgZXMgdmllciBLb21tYW5kb3MsIGRpZSBkdXJjaCBkYXMgS29tbWFuZG8KKyAgICAnZmVobGVyJyBnZWxpc3RldCB3ZXJkZW46CisgICAgKiAnYnVnJyAgICAtIE1lbGR1bmcgZWluZXMgRmVobGVycyAvIGVpbmVyIEZlaGxmdW5rdGlvbgorICAgICogJ3R5cG8nICAgLSBNZWxkdW5nIGVpbmVzIFRpcHBmZWhsZXIKKyAgICAqICdkZXRhaWwnIC0gVm9yc2NobGFlZ2UsIGVpbiBmZWhsZW5kZXMgRGV0YWlsIHp1IGVyZ2FlbnplbgorICAgICogJ2lkZWUnICAgLSBWb3JzY2hsYWVnZSBtaXQgSWRlZW4genVyIEVyd2VpdGVydW5nCisKK0JFTUVSS1VORzoKKyAgICBGcnVlaGVyIGhhdHRlIGRpZXNlcyBLb21tYW5kbyBkaWUgZ2xlaWNoZSBGdW5rdGlvbmFsaXRhZXQgd2llICdidWcnLAorICAgIHp1IHZpZWxlIFNwaWVsZXIgaGFiZW4gYWJlciBhbGwgZGllIHZlcnNjaGllZGVuZW4gRmVobGVyYXJ0ZW4gbnVyIGFscworICAgICdmZWhsZXInIGFiZ2VzZXR6dCwgZGFoZXIgd3VyZGUgZGFzIGdlYWVuZGVydC4KKworU0lFSEUgQVVDSDoKKyAgICBidWcsIHR5cG8sIGlkZWUsIGRldGFpbAorCitMRVRaVEUgQWVOREVSVU5HOgorICAgIDEyLiBPa3QgMjAxMSBHbG9pbnNvbgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2RvYy9wY21kL2ZpbmdlciBiL2RvYy9wY21kL2ZpbmdlcgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5iNWNlOTM2Ci0tLSAvZGV2L251bGwKKysrIGIvZG9jL3BjbWQvZmluZ2VyCkBAIC0wLDAgKzEsNTUgQEAKKworZmluZ2VyCistLS0tLS0KKworIEtPTU1BTkRPOgorICAgIGZpbmdlciBbLW5dIFstcF0gWy1zXSBbLXZdIFstYV0gPG5hbWU+IHwgPG5hbWU+QDxtdWQ+CisKKyBBUkdVTUVOVEU6CisKKyAgICAgPG5hbWU+CisgICAgICAgIE5hbWUgZWluZXMgU3BpZWxlcnMKKyAgICAgPG11ZD4KKyAgICAgICAgTmFtZSBlaW5lcyBNVURzIGF1cyBkZXIgYG11ZHMnLUxpc3RlCisKKyBCRVNDSFJFSUJVTkc6CisgICAgR2lidCBlaW4gcGFhciB6dXNhZXR6bGljaGUgSW5mb3JtYXRpb25lbiB1ZWJlciBkZW4gU3BpZWxlciA8bmFtZT4gYXVzLgorICAgIEhpZXJiZWkgaXN0IGVpbmVybGVpLCBvYiBkZXIgU3BpZWxlciBlaW5nZWxvZ2d0LCBuZXR6dG90IG9kZXIgYXVzZ2Vsb2dndAorICAgIGlzdC4KKworICAgIFNlaGVyIHVuZCBNYWdpZXIga29lbm5lbiBzaWNoIGVpbmUgLnBsYW4tRGF0ZWkgYW5sZWdlbiwgZGVyZW4gSW5oYWx0IHVudGVyCisgICAgZGVuIFNwaWVsZXJpbmZvcm1hdGlvbmVuIGF1c2dlZ2ViZW4gd2lyZC4gTWFuY2htYWwgbW9lY2h0ZSBtYW4gZGllc2UKKyAgICBqZWRvY2ggZ2FyIG5pY2h0IHNlaGVuLiBJbiBkaWVzZW0gRmFsbCBrYW5uIG1hbiBkaWUgQXVzZ2FiZSBkZXMgLnBsYW4gbWl0CisgICAgYC1uJyB1bnRlcmRydWVja2VuLgorCisgICAgTW9lY2h0ZSBtYW4gZGllIC5wbGFuLURhdGVpIGRlZmF1bHRtYWVzc2lnIHVudGVyZHJ1ZWNrZW4sIGthbm4gbWFuIHNpY2gKKyAgICBlaW4gQWxpYXMgZGVyIEZvcm0KKworICAgICdhbGlhcyBmaW5nZXIgZmluZ2VyIC1uICQqJworCisgICAgZXJzdGVsbGVuLgorCisgICAgTW9lY2h0ZSBtYW4gZGFubiB0cm90emRlbSBlaW5tYWwgZWluZW4gLnBsYW4gc2VoZW4sIGthbm4gbWFuIGRpZXMgbWl0IGRlcgorICAgIE9wdGlvbiBgLXAnIGJld2Vya3N0ZWxsaWdlbi4KKworICAgIE1pdCBkZW0gU2NoYWx0ZXIgJy1hJyBrYW5uIG1hbiBzaWNoIHp1c2FldHpsaWNoIHp1IGRlbiBhbmRlcmVuIEFuZ2FiZW4KKyAgICBhdWNoIGRpZSBBdmF0YXItVVJJIGRlcyBTcGllbGVycyBhbnplaWdlbiBsYXNzZW4gKG5hdHVlcmxpY2ggbnVyLCBzb2Zlcm4KKyAgICBlciBhdWNoIGVpbmUgZ2VzZXR6dCBoYXQpLgorCisgICAgR2lidCBtYW4gZGVuIFNjaGFsdGVyIGAtcycgYW4sIHNvIHdpcmQgZGFzIFZlcndhbmR0c2NoYWZ0c3ZlcmhhZWx0bmlzIGRlcworICAgIE1hZ2llcnMgYXVzZ2VnZWJlbi4KKworICAgIEltIEdlZ2Vuc2F0eiB6dSBTcGllbGVybiBzZWhlbiBNYWdpZXIgYXVjaCwgd2VubiBlaW4gTWFnaWVyIHp1bGV0enQKKyAgICB1bnNpY2h0YmFyIGFud2VzZW5kIHdhci4gVW0gZGllc2VzIFZlcmhhbHRlbiB6dSB1bnRlcmRydWVja2VuLCBpc3QgZGllCisgICAgT3B0aW9uIGAtdicgdm9yaGFuZGVuLgorCisgICAgSXN0IGRlciBTcGllbGVyIGFscyBhYndlc2VuZCBnZWtlbm56ZWljaG5ldCwgemVpZ3QgJ2ZpbmdlcicgZGllCisgICAgV2VnbWVsZHVuZyBkZXMgU3BpZWxlcnMgYW4uCisgICAgV2lsbCBtYW4gbnVyIHdpc3Nlbiwgb2IgZWluIFNwaWVsZXIgYWxzIGFid2VzZW5kIGdla2VubnplaWNobmV0IGlzdCwgCisgICAga2FubiBtYW4gZGVuIEJlZmVobCAnd2VnbWVsZHVuZycgYmVudXR6ZW4uCisKKyBTSUVIRSBBVUNIOgorICAgIGF2YXRhciwgZW1haWwsIHVybCwgbWVzc2VuZ2VyLCBpY3EsIG9ydCwgd2VnLCAod2VnbWVsZHVuZykKKworIExFVFpURSBBZU5ERVJVTkc6CisgICAgMjcuMDUuMjAxNSwgQm9pbmcKZGlmZiAtLWdpdCBhL2RvYy9wY21kL2ZsdWVzdGVyZSBiL2RvYy9wY21kL2ZsdWVzdGVyZQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi43ZTczZTRhCi0tLSAvZGV2L251bGwKKysrIGIvZG9jL3BjbWQvZmx1ZXN0ZXJlCkBAIC0wLDAgKzEsMjUgQEAKKworZmx1ZXN0ZXJlCistLS0tLS0tLS0KKworIEtPTU1BTkRPOgorICAgIGZsdWVzdGVyZSA8d2VtPiB6dSA8dGV4dD4KKworIEFSR1VNRU5URToKKworICAgICA8d2VtPgorICAgICAgICBEYXMgTGVid2VzZW4sIGRlbSBEdSBldHdhcyB6dWZsdWVzdGVybiB3aWxsc3QKKyAgICAgPHRleHQ+CisgICAgICAgIERlciB6dSBmbHVlc3Rlcm5kZSBUZXh0CisKKyBCRVNDSFJFSUJVTkc6CisgICAgR2lidCBlaW5lIE1pdHRlaWx1bmcgYW4gZGFzIGFuZ2VnZWJlbmUgTGViZXdlc2VuIChtZWlzdGVucyBlaW4gU3BpZWxlciksCisgICAgZGllIG5pZW1hbmQgYW5kZXJlcyBob2VyZW4ga2Fubi4gRGFzIExlYmV3ZXNlbiBtdXNzIHNpY2ggaW0gc2VsYmVuIFJhdW0KKyAgICBiZWZpbmRlbi4KKworIFNJRUhFIEFVQ0g6CisgICAgc2FnZSwgZnJhZ2UsIGFudHdvcnRlLCB0ZWlsZSAobWl0KSwgZ2VzcHJhZWNoLCBydWZlLCBlYmVuZW4sIHdlZywKKyAgICBpZ25vcmllcmUsIGtvYm9sZAorCisgTEVUWlRFIEFlTkRFUlVORzoKKyAgICBUaHUsIDI0LjA3LjE5OTcsIDA5OjAwOjAwIHZvbiBXYXJnb24KZGlmZiAtLWdpdCBhL2RvYy9wY21kL2ZyYWdlIGIvZG9jL3BjbWQvZnJhZ2UKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZGE5NjgxYgotLS0gL2Rldi9udWxsCisrKyBiL2RvYy9wY21kL2ZyYWdlCkBAIC0wLDAgKzEsMzEgQEAKKworZnJhZ2UKKy0tLS0tCisKKyBLT01NQU5ETzoKKyAgICBmcmFnZSA8bnBjPiBuYWNoIDx3YXM+CisgICAgZnJhZ2UgPHNwaWVsZXI+IDx3YXM+CisKKyBBUkdVTUVOVEU6CisKKyAgICAgPG5wYz4KKyAgICAgICAgRWluIE5QQywgdm9uIGRlbSBtYW4gZXR3YXMgd2lzc2VuIHdpbGwKKyAgICAgPHNwaWVsZXI+CisgICAgICAgIEVpbiBTcGllbGVyLCB2b24gZGVtIG1hbiBldHdhcyB3aXNzZW4gd2lsbAorICAgICA8d2FzPgorICAgICAgICBEaWUgRnJhZ2UgYW4gc2ljaAorCisgQkVTQ0hSRUlCVU5HOgorICAgIE1hbiBiZWZyYWd0IGVpbiBNb25zdGVyIG9kZXIgZWluZW4gU3BpZWxlciB1ZWJlciBpcmdlbmRldHdhcy4gTmljaHQgYWxsZQorICAgIE1vbnN0ZXIgaGFiZW4gYXVjaCBBbnR3b3J0ZW4gZWlucHJvZ3JhbW1pZXJ0IHVuZCBiZWkgU3BpZWxlcm4ga2FubiBtYW4KKyAgICBlcnN0IHJlY2h0IG5pY2h0IHdpc3Nlbiwgb2Igc2llIGFudHdvcnRlbi4KKworICAgIFdlbm4gZWluIE5QQyBhdWYgZWluZSBEZWluZXIgTWVpbnVuZyBuYWNoIHNpbm52b2xsZSBGcmFnZSBrZWluZSBzaW5udm9sbGUKKyAgICBBbnR3b3J0IHdlaXNzLCBrYW5uc3QgRHUgc2VpbmVtIFByb2dyYW1taWVyZXIgbWl0IGRlbSBpZGVlLUJlZmVobCBlaW5lbgorICAgIGtsZWluZW4gRGVua2Fuc3Rvc3MgZ2ViZW4uCisKKyBTSUVIRSBBVUNIOgorICAgIGFudHdvcnRlCisKKyBMRVRaVEUgQWVOREVSVU5HOgorICAgIFRodSwgMjQuMDcuMTk5NywgMDk6MDA6MDAgdm9uIFdhcmdvbgpkaWZmIC0tZ2l0IGEvZG9jL3BjbWQvZ2VzcHJhZWNoIGIvZG9jL3BjbWQvZ2VzcHJhZWNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmZjODc3YzgKLS0tIC9kZXYvbnVsbAorKysgYi9kb2MvcGNtZC9nZXNwcmFlY2gKQEAgLTAsMCArMSwyNSBAQAorCitnZXNwcmFlY2gKKy0tLS0tLS0tLQorCisgS09NTUFORE86CisgICAgZ2VzcHJhZWNoIAorCisgQVJHVU1FTlRFOgorICAgIDwtcz4gKG9wdGlvbmFsLCBhdWNoOiAtc3RpbGwsIC1zaWxlbnQgZ2VodCkKKworIEJFU0NIUkVJQlVORzoKKyAgICBBbGxlIHdlaXRlcmVuIEVpbmdhYmVuIHdlcmRlbiBnZW5hdXNvIHVubWl0dGVsYmFyIGFuIGFsbGUgU3BpZWxlciBpbQorICAgIHNlbGJlbiBSYXVtIHdlaXRlcmdlZ2ViZW4sIGFscyB3ZW5uIG1hbiBkZW4gc2FnZS1CZWZlaGwgYmVudXR6dCBoYWV0dGUuCisKKyAgICBXaXJkIGFscyBBcmd1bWVudCAnLXMnIChmdWVyIHN0aWxsL3NpbGVudCkgYW5nZWdlYmVuLCB3ZXJkZW4gRGVpbmUgRWluZ2FiZW4KKyAgICBuaWNodCBpbiBGb3JtIHZvbiAiRHUgc2Fnc3Q6IC4uLiIgRGlyIHNlbGJlciBhbmdlemVpZ3QuCisKKyAgICBOYWNoIEVpbmdhYmUgdm9uICIqKiIga29lbm5lbiB3aWVkZXIgYmVsaWViaWdlIEJlZmVobGUgZWluZ2VnZWJlbiB3ZXJkZW4uCisKKyBTSUVIRSBBVUNIOgorICAgIHNhZ2UsIGZyYWdlLCBhbnR3b3J0ZSwgZmx1ZXN0ZXJlLCB0ZWlsZSAobWl0KSwgcnVmZSwgZWJlbmVuLCB3ZWcsCisgICAgaWdub3JpZXJlLCBrb2JvbGQKKworIExFVFpURSBBZU5ERVJVTkc6CisgICAgMTAuMDguMjAwOSwgWmVzc3RyYQpkaWZmIC0tZ2l0IGEvZG9jL3BjbWQvZ2liIGIvZG9jL3BjbWQvZ2liCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmZmOGUzZjkKLS0tIC9kZXYvbnVsbAorKysgYi9kb2MvcGNtZC9naWIKQEAgLTAsMCArMSwyMyBAQAorZ2liCistLS0KKworIEtPTU1BTkRPOgorICAgIGdpYiA8emllbD4gPG9iamVrdD4KKworIEFSR1VNRU5URToKKworICAgIDxvYmpla3Q+CisgICAgICAgIERlciB3ZWd6dWdlYmVuZGUgR2VnZW5zdGFuZAorICAgIDx6aWVsPgorICAgICAgICBFaW4gU3BpZWxlciBvZGVyIE5QQyBpbSBnbGVpY2hlbiBSYXVtCisKKyBCRVNDSFJFSUJVTkc6CisgICAgRHUgZ2lic3QgZGVuIEdlZ2Vuc3RhbmQgPG9iamVrdD4gYW4gZGVuIFNwaWVsZXIgb2RlciBOUEMgPHppZWw+LiBNYW4KKyAgICBzb2xsdGUgc2ljaCBnZW5hdSB1ZWJlcmxlZ2VuLCB3ZW0gbWFuIHdhcyBnaWJ0LCBnZXJhZGUgTlBDcyBnZWJlbiB1bmdlcm4KKyAgICBTYWNoZW4gZWluZmFjaCB6dXJ1ZWNrLgorCisgU0lFSEUgQVVDSDoKKyAgICBuaW1tIFthdXNdLCBob2xlIChhdXMpCisKKyBMRVRaVEUgQWVOREVSVU5HOgorICAgIDE0LiBPa3QgMjAxMSBHbG9pbnNvbgpkaWZmIC0tZ2l0IGEvZG9jL3BjbWQvZ3JhZmlrIGIvZG9jL3BjbWQvZ3JhZmlrCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjMwNTg2MGQKLS0tIC9kZXYvbnVsbAorKysgYi9kb2MvcGNtZC9ncmFmaWsKQEAgLTAsMCArMSwyNCBAQAorCitncmFmaWsKKy0tLS0tLQorCisgS09NTUFORE86CisgICAgIGdyYWZpayBbZWlufGF1c10KKworIEJFU0NIUkVJQlVORzoKKyAgICAgTWl0ICJncmFmaWsgYXVzIiBrYW5uc3QgZHUgZGllIEFuemVpZ2Ugdm9uIEFTQ0lJLUdyYWZpa2VuIGZ1ZXIKKyAgICAgRGljaCB1bnRlcmRydWVja2VuLiBOYWNoIGRlbSBCZWZlaGwgImdyYWZpayBlaW4iIHdlcmRlbiBEaXIgc29sY2hlCisgICAgIEdyYWZpa2VuIHdpZWRlciBhbmdlemVpZ3QuCisgICAgIFJ1ZnN0IER1IGRlbiBCZWZlaGwgb2huZSBQYXJhbWV0ZXIgYXVmLCBkYW5uIHdpcmQgRGlyIGFuZ2V6ZWlndCwKKyAgICAgb2IgRHUgR3JhZmlrZW4gc2VoZW4gbW9lY2h0ZXN0IG9kZXIgbmljaHQuCisKKyAgICAgKioqIEFDSFRVTkcgKioqCisgICAgIERpZXNlciBCZWZlaGwgd3VyZGUgYW0gMTguIE9rdG9iZXIgMjAwNSBlaW5nZWZ1ZWhydC4gRGFoZXIKKyAgICAgaXN0IGRhdm9uIGF1c3p1Z2VoZW4sIGRhc3MgZGllIEVpbnN0ZWxsdW5nIGVyc3QgbmFjaCB1bmQgbmFjaAorICAgICBhbiBkZW4gamV3ZWlsaWdlbiBTdGVsbGVuIGltIE1vcmdlbkdyYXVlbiBiZXJ1ZWNrc2ljaHRpZ3Qgd2lyZC4KKyAgICAgV2VubiBEaXIgZWluZSBzb2xjaGUgU3RlbGxlIGF1ZmZhZWxsdCwgd28gZXMgbm9jaCBuaWNodCAKKyAgICAgYmVydWVja3NpY2h0aWd0IHdpcmQsIGRhbm4gc2NocmVpYmUgZG9jaCBiaXR0ZSBlaW5lIEUtTWFpbCBhbgorICAgICBab29rLCBFbm5veCBvZGVyIEJ1Z2ZpeAorICAgICAKKyBMRVRaRSBBRU5ERVJVTkc6CisgICAgIDIwMDktMDktMTAgdm9uIFpvb2sKZGlmZiAtLWdpdCBhL2RvYy9wY21kL2hpbGZlIGIvZG9jL3BjbWQvaGlsZmUKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZmZmYmZmYgotLS0gL2Rldi9udWxsCisrKyBiL2RvYy9wY21kL2hpbGZlCkBAIC0wLDAgKzEsNzkgQEAKKworaGlsZmUKKy0tLS0tCisKKyBLT01NQU5ETzoKKyAgICBoaWxmZSBbW2dpbGRlIDxnaWxkZW5uYW1lPl0gPHRoZW1hPl0KKworIEFSR1VNRU5URToKKworICAgICA8dGhlbWE+CisgICAgICAgIERhcyBUaGVtYSBvZGVyIEtvbW1hbmRvLCB6dSBkZW0gRHUgZWluZSBIaWxmZSBoYWJlbiBtb2VjaHRlc3QKKyAgICAgPGdpbGRlbm5hbWU+CisgICAgICAgIE5hbWUgZWluZXIgR2lsZGUgKGZ1ZXIgZ2lsZGVuc3BlemlmaXNjaGUgU2VpdGVuKQorCisgQkVTQ0hSRUlCVU5HOgorICAgIEdpYnQgSGlsZnNzZWl0ZW4gdWViZXIgZGllIEJlZmVobGUgdW5kIGVpbmlnZSBhbGxnZW1laW5lIFRoZW1lbiBhdXMuIE9obmUKKyAgICA8dGhlbWE+IHdpcmQgZWluZSBTZWl0ZSBtaXQgZGVuIFRoZW1lbiBnZXplaWd0LCB6dSBkZW5lbiBlcyBIaWxmc3NlaXRlbgorICAgIGdpYnQuCisKKyAgICBCZWkgSGlsZmVuIHp1IFphdWJlcnNwcnVlY2hlbiBnaWJ0IGVzIGVpbmUgQmVzb25kZXJoZWl0IHp1IGJlYWNodGVuOgorICAgIEVpbmlnZSBHaWxkZW4gaGFiZW4gWmF1YmVyc3BydWVjaGUgbWl0IGdsZWljaGVuIE5hbWVuLCBhYmVyIGV0d2FzCisgICAgdW50ZXJzY2hpZWRsaWNoZXIgV2lya3VuZywgdW50ZXJzY2hpZWRsaWNoZW4gS29zdGVuIG9kZXIgTGVybmJlZGluZ3VuZ2VuLgorICAgIERlc2hhbGIga2FubiBtYW4gbm9jaCBhbmdlYmVuLCB2b24gd2VsY2hlciBHaWxkZSBtYW4gZGllIGVudHNwcmVjaGVuZGUKKyAgICBIaWxmZXNlaXRlIGhhYmVuIG1vZWNodGUuIFN0YW5kYXJkbWFlc3NpZyBsYXNzZW4gc2ljaCBudXIgZGllIFNlaXRlbiBkZXIKKyAgICBHaWxkZSBlcnJlaWNoZW4sIGluIGRlciBtYW4gZ2VyYWRlIE1pdGdsaWVkIGlzdC4KKworICAgIEVzIGdpYnQgKG5vY2g/KSBuaWNodCB2b24gYWxsZW4gR2lsZGVuIEhpbGZlc2VpdGVuIHp1IGRlbiBlaW56ZWxuZW4KKyAgICBTcHJ1ZWNoZW4gdW5kIEZhZWhpZ2tlaXRlbi4gTW9tZW50YW4gc2luZCBkaWVzIG51ciBkaWUgQWJlbnRldXJlciwKKyAgICBCaWVyc2NodWV0dGxlciwgS2FyYXRla2EgdW5kIEtsZXJpa2VyLiBFcyB3aXJkIGplZG9jaCBhdWNoIGF1ZiBkZW4KKyAgICBqZXdlaWxpZ2VuIEdpbGRlbmhpbGZlc2VpdGVuIG5vY2ggZGFyYXVmIGhpbmdld2llc2VuLgorCisgU0NIUkVJQldFSVNFTjoKKyAgICBWaWVsZSBLb21tYW5kb3MgdmVyc3RlaGVuIG1laHJlcmUgdW50ZXJzY2hpZWRsaWNoZSBBdWZydWZlLiBBdXNzZXJkZW0gc2luZAorICAgIG1hbmNoZSBCZXN0YW5kdGVpbGUgZGVyIEVpbmdhYmV6ZWlsZSBmZXN0IHZvcmdlZ2ViZW4sIGFuZGVyZSBkYWdlZ2VuCisgICAgdmFyaWFiZWwuIFVtIG5pY2h0IGplZGVuIG1vZWdsaWNoZW4gQXVmcnVmIGluIGVpbmUgZWlnZW5lIFplaWxlIHBhY2tlbiB6dQorICAgIG11ZXNzZW4sIGdpYnQgZXMgZm9sZ2VuZGUgS29udmVudGlvbmVuIGluIGRlciBTY2hyZWlid2Vpc2UgZGVyCisgICAgS09NTUFORE8tWmVpbGU6CisKKyAgICAgZmVzdAorICAgICAgICBGZXN0ZSBCZXN0YW5kdGVpbGUsIGRpZSBhdWNoIGdlbmF1IHNvIGVpbmdlZ2ViZW4gd2VyZGVuLgorICAgICA8dmFyaWFiZWw+CisgICAgICAgIFZhcmlhYmxlIEJlc3RhbmR0ZWlsZS4gU2llIGdlYmVuIGFuLCB3YXMgZ2VuYXUgZGVyIEJlZmVobCBiZXdpcmtlbgorICAgICAgICBzb2xsLgorICAgICBbIE9wdGlvbmVuIF0KKyAgICAgICAgVGVpbGUgaW4gZWNraWdlbiBLbGFtbWVybiBzaW5kIG9wdGlvbmFsLgorICAgICBBbHRlciB8IE5hdGl2ZW4KKyAgICAgICAgQWx0ZXJuYXRpdmUgRm9ybXVsaWVydW5nZW4gd2VyZGVuIGR1cmNoIGVpbmVuIHNlbmtyZWNodGVuIFN0cmljaAorICAgICAgICB2b25laW5hbmRlciBnZXRyZW5udC4KKworICAgIEFscyBCZWlzcGllbCBtYWcgZGllIEtvbW1hbmRvemVpbGUgZGVyIGBoaWxmZSctQmVmZWhscyBzZWxic3QgaGVyaGFsdGVuOgorICAgIGhpbGZlIFtbZ2lsZGUgPGdpbGRlbm5hbWU+XSA8dGhlbWE+XQorCisgICAgQXVmZ2Vkcm9lc2VsdCB3dWVyZGUgZGFzIHNvIGF1c3NlaGVuOgorCisgICAgIGhpbGZlCisgICAgIGhpbGZlIDx0aGVtYT4KKyAgICAgaGlsZmUgZ2lsZGUgPGdpbGRlbm5hbWU+IDx0aGVtYT4KKworICAgIERpZSBhZXVzc2VyZW4gZWNraWdlbiBLbGFtbWVybiB6ZWlnZW4gYW4sIGRhc3Mgc2FlbXRsaWNoZSBQYXJhbWV0ZXIKKyAgICBvcHRpb25hbCBzaW5kIHVuZCB3ZWdnZWxhc3NlbiB3ZXJkZW4ga29lbm5lbi4gRGllcyBlbnRzcHJpY2h0IGRlbSBvYmVyZW4KKyAgICBBdWZydWYuCisKKyAgICBEaWUgaW5uZXJlbiBlY2tpZ2VuIEtsYW1tZXJuIHplaWdlbiBhbiwgZGFzcyBhdWNoIGRlciBHaWxkZW50ZWlsCisgICAgd2VnZ2VsYXNzZW4gd2VyZGVuIGthbm4uIE1hbiBlcmhhZWx0IGRhbm4gZWluZSBIaWxmZSB6dSBhbGxnZW1laW5lbiBUaGVtZW4KKyAgICAoZGVyIG1pdHRsZXJlIEF1ZnJ1ZikuIERhcyA8dGhlbWE+IHNlbGJzdCBpc3QgZGFiZWkgdmFyaWFiZWwuCisKKyAgICBEaWUgZHJpdHRlIFplaWxlIHNjaGxpZXNzbGljaCBiZXN0ZWh0IGF1cyBkZW0gZmVzdGVuIEJlc3RhbmR0ZWlsICJnaWxkZSIKKyAgICBzb3dpZSBkZW4gVmFyaWFibGVuIDxnaWxkZW5uYW1lPiB1bmQgPHRoZW1hPi4KKworICAgIEFuc3RlbGxlIGRlciBkb3BwZWx0ZW4gZWNraWdlbiBLbGFtbWVybiBoYWV0dGUgbWFuIGRhcyBHYW56ZSBhdWNoIGFscworICAgIEFsdGVybmF0aXZlIGZvcm11bGllcmVuIGtvZW5uZW46CisKKyAgICBoaWxmZSBbPHRoZW1hPiB8IGdpbGRlIDxnaWxkZW5uYW1lPiA8dGhlbWE+XQorCisgU0lFSEUgQVVDSDoKKyAgICBnaWxkZW4KKworIExFVFpURSBBZU5ERVJVTkc6CisgICAgVGh1LCAyNC4wNy4xOTk3LCAwOTowMDowMCB2b24gV2FyZ29uCmRpZmYgLS1naXQgYS9kb2MvcGNtZC9oaXN0b3J5IGIvZG9jL3BjbWQvaGlzdG9yeQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi43NTc0MzYzCi0tLSAvZGV2L251bGwKKysrIGIvZG9jL3BjbWQvaGlzdG9yeQpAQCAtMCwwICsxLDc1IEBACisKK2hpc3RvcnkKKy0tLS0tLS0KKworIEtPTU1BTkRPOgorICAgIGhpc3RvcnkgKG9kZXI6IGhpc3QpCisgICAgJjxucj4KKyAgICAmPHRleHQ+CisgICAgaGlzdGxlbiA8bj4KKyAgICBoaXN0bWluIDxuPgorICAgIF48ZmFsc2NoPl48cmljaHRpZz5eCisKKyBBUkdVTUVOVEU6CisKKyAgICAgPG5yPgorICAgICAgICBEaWUgTnVtbWVyIGVpbmVzIEJlZmVobHMgaW4gZGVyIEhpc3RvcnkKKyAgICAgPHRleHQ+CisgICAgICAgIERlciBBbmZhbmcgZWluZXMgQmVmZWhscyBpbiBkZXIgSGlzdG9yeQorICAgICA8bj4KKyAgICAgICAgRWluZSBaYWhsCisgICAgIDxmYWxzY2g+CisgICAgICAgIEZlaGxlcmhhZnRlciBUZXh0CisgICAgIDxyaWNodGlnPgorICAgICAgICBLb3JyaWdpZXJ0ZXIgVGV4dAorCisgQkVTQ0hSRUlCVU5HOgorICAgIERpZSBsZXR6dGVuIEJlZmVobGUsIGRpZSBEdSBlaW5nZWdlYmVuIGhhc3QsIHdlcmRlbiBnZXNwZWljaGVydC4gQXVmIGRpZXNlCisgICAgZ2VzcGVpY2hlcnRlbiBCZWZlaGxlIGthbm5zdCBEdSB6dWdyZWlmZW4sIG9obmUgc2llIGtvbXBsZXR0IG5ldSBlaW5nZWJlbgorICAgIHp1IG11ZXNzZW46CisKKyAgICBgJjxucj4nIGZ1ZWhydCBkZW4gQmVmZWhsIG1pdCBOdW1tZXIgPG5yPiBhdXMsIHNvd2VpdCBlciBzaWNoIG5vY2ggaW4gZGVyCisgICAgQmVmZWhsc2dlc2NoaWNodGUgYmVmaW5kZXQuIE1hbiBrYW5uIGplZG9jaCBhdWNoIG5lZ2F0aXZlIE51bW1lcm4KKyAgICB2ZXJ3ZW5kZW46IGAmLTAnIGZ1ZWhydCBkZW4gbGV0enRlbiBCZWZlaGwgbm9jaG1hbCBhdXMsIGAmLTEnIGRlbgorICAgIHZvcmxldHp0ZW4sIHVuZCBzbyB3ZWl0ZXIuCisKKyAgICBgJjx0ZXh0PicgZnVlaHJ0IGRlbiBsZXR6dGVuIEJlZmVobCBhdXMsIGRlciBtaXQgPHRleHQ+IGFuZmFlbmd0IChzb2Zlcm4KKyAgICB2b3JoYW5kZW4pLgorCisgICAgV2lyZCBlaW5lIGlkZW50aXNjaGUgQmVmZWhsc3plaWxlIG1laHJmYWNoIGhpbnRlcmVpbmFuZGVyIGFuZ2VnZWJlbiwgc28KKyAgICBlcnNjaGVpbnQgc2llIG51ciBudXIgZWluIGVpbnppZ2VzIE1hbCBpbiBkZXIgQmVmZWhsc2dlc2NoaWNodGUgKGF1Y2gsCisgICAgd2VubiBkaWUgV2llZGVyaG9sdW5nZW4gdWViZXIgYCYtMCcgZXJmb2xndGVuKS4KKworICAgIERpZSBrb21wbGV0dGUgQmVmZWhsc2dlc2NoaWNodGUga2FubnN0IER1IERpciBtaXQgYGhpc3RvcnknIChvZGVyCisgICAgYWJnZWt1ZXJ6dCBgaGlzdCcpIGFuemVpZ2VuIGxhc3Nlbi4gRGVyIGBoaXN0b3J5Jy1CZWZlaGwgc2VsYnN0IGVyc2NoZWludAorICAgIGplZG9jaCBuaWNodCBpbiBkZXIgR2VzY2hpY2h0ZS4KKworICAgIERpZSBMYWVuZ2UgZGVyIEJlZmVobHNnZXNjaGljaHRlIGJldHJhZWd0IHN0YW5kYXJkbWFlc3NpZyA0MCBCZWZlaGxlLCBkaWVzCisgICAga2FubiBtYW4gYWJlciBtaXQgZGVtIEJlZmVobCBgaGlzdGxlbiA8bj4nIGFlbmRlcm4uIERpZSB2b3JlaW5nZXN0ZWxsdGVuCisgICAgNDAgQmVmZWhsZSBiaWxkZW4gYWxsZXJkaW5ncyBkYXMgTWF4aW11bSwgd2VsY2hlcyBuaWNodCB1ZWJlcnNjaHJpdHRlbgorICAgIHdlcmRlbiBrYW5uLgorCisgICAgTm9ybWFsZXJ3ZWlzZSBsYW5kZXQgKmplZGVyKiBCZWZlaGwgaW4gZGVyIEJlZmVobHNnZXNjaGljaHRlLiBXaWxsIG1hbgorICAgIGFiZXIgei5CLiBkaWUgQmV3ZWd1bmdzYmVmZWhsZSBuaWNodCBpbiBkZXIgSGlzdG9yeSBoYWJlbiwgc28ga2FubiBtYW4gbWl0CisgICAgYGhpc3RtaW4gPG4+JyBmZXN0bGVnZW4sIGFiIHdlbGNoZXIgTGFlbmdlIGRpZSBCZWZlaGxlIGF1Zmdlbm9tbWVuIHdlcmRlbi4KKyAgICBNaXQgYGhpc3RtaW4gNCcgd2VyZGVuIGFsc28gbnVyIEJlZmVobHN6ZWlsZW4gbWl0IG1pbmRlc3RlbnMgdmllcgorICAgIEJ1Y2hzdGFiZW4gTGFlbmdlIGF1Zmdlbm9tbWVuLiBEaWVzIHN0ZWxsdCB1ZWJyaWdlbnMgZWluZSBzaW5udm9sbGUKKyAgICBHcm9lc3NlIGRhciwgZGEgYmVpIGt1ZXJ6ZXJlbiBaZWlsZW4gZGllIEVpbmdhYmUgZGVzICYtS29tbWFuZG9zIG1laHIKKyAgICBBdWZ3YW5kIGRhcnN0ZWxsdCBhbHMgZGllIE5ldWVpbmdhYmUgZGVzIEJlZmVobHMuCisKKyAgICBUaXBwZmVobGVyIGltIGxldHp0ZW4gZWluZ2VnZWJlbmVuIEJlZmVobCBsYXNzZW4gc2ljaCB3aWUgZm9sZ3QKKyAgICBrb3JyaWdpZXJlbjogYF48ZmFsc2NoPl48cmljaHRpZz5eJy4gRGFzIGxldHp0ZSBeIGthbm4gbWFuIGF1Y2ggd2VnbGFzc2VuLgorICAgIFp1bSBCZWlzcGllbDoKKworICAgID4gdG0ganBmIEhpIQorICAgIEtlaW4gc29sY2hlciBTcGllbGVyIQorICAgID4gXmpwZl5qb2YKKyAgICBEdSB0ZWlsc3QgSm9mIG1pdDogSGkhCisKKyAgICBIaWVyIGhhZXR0ZSB1ZWJyaWdlbnMgYXVjaCBgXnBebycgZ2VudWVndC4KKworIFNJRUhFIEFVQ0g6CisgICAgZXJzZXR6dW5nc2FuemVpZ2UsIGFsaWFzCisKKyBMRVRaVEUgQWVOREVSVU5HOgorICAgIFRodSwgMjQuMDcuMTk5NywgMDk6MDA6MDAgdm9uIFdhcmdvbgpkaWZmIC0tZ2l0IGEvZG9jL3BjbWQvaG9sZSBiL2RvYy9wY21kL2hvbGUKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNWI1NWU1ZAotLS0gL2Rldi9udWxsCisrKyBiL2RvYy9wY21kL2hvbGUKQEAgLTAsMCArMSwyMyBAQAorCitob2xlIChhdXMpCistLS0tLS0tLS0tCisKKyBLT01NQU5ETzoKKyAgICBob2xlIDxvYmpla3Q+IGF1cyA8YmVoYWVsdGVyPgorCisgQVJHVU1FTlRFOgorCisgICAgIDxvYmpla3Q+CisgICAgICAgIERlciBnZXd1ZW5zY2h0ZSBHZWdlbnN0YW5kCisgICAgIDxiZWhhZWx0ZXI+CisgICAgICAgIEVpbiBCZWhhZWx0ZXIKKworIEJFU0NIUkVJQlVORzoKKyAgICBNaXQgZGllc2VtIEtvbW1hbmRvIGthbm5zdCBEdSBHZWdlbnN0YWVuZGUgYXVzIEJlaGFlbHRlcm4gbmVobWVuLgorICAgIEFsbGVyZGluZ3MgbXVzcyBkZXIgQmVoYWVsdGVyIGRhenUgZ2VvZWZmbmV0IHNlaW4uCisKKyBTSUVIRSBBVUNIOgorICAgIHN0ZWNrZSwgbmltbSBbYXVzXQorCisgTEVUWlRFIEFlTkRFUlVORzoKKyAgICBUaHUsIDI0LjA3LjE5OTcsIDA5OjAwOjAwIHZvbiBXYXJnb24KZGlmZiAtLWdpdCBhL2RvYy9wY21kL2ljcSBiL2RvYy9wY21kL2ljcQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5mMjhiMGU0Ci0tLSAvZGV2L251bGwKKysrIGIvZG9jL3BjbWQvaWNxCkBAIC0wLDAgKzEsMjEgQEAKKworaWNxCistLS0KKworIEtPTU1BTkRPOgorICAgIGljcSBbPG51bW1lcj5dCisKKyBBUkdVTUVOVEU6CisKKyAgICAgPG51bW1lcj4gKG9wdGlvbmFsKQorICAgICAgICBEaWUgbmV1ZSBOdW1tZXIKKworIEJFU0NIUkVJQlVORzoKKyAgICBXZW5uIER1IGVpbmUgSUNRLU51bW1lciBoYXN0IGthbm5zdCBEdSBzaWUgbWl0IGRpZXNlbQorICAgIEtvbW1hbmRvIGVpbnRyYWdlbi4KKyAgICBPaG5lIDxudW1tZXI+IHdpcmQgZGllIGFrdHVlbGxlIE51bW1lciBhbmdlemVpZ3QsIGlzdCBzaWUgJ2tlaW5lJywKKyAgICBzbyB3aXJkIGRpZSBOdW1tZXIgZ2Vsb2VzY2h0LgorCisgU0lFSEUgQVVDSDoKKyAgICBQZXJzb2VubGljaGUgRGV0YWlsczogZW1haWwsIHVybCwgbWVzc2VuZ2VyLCBvcnQKKyAgICBTb25zdGlnZXM6ICAgICAgICAgICAgZmluZ2VyCmRpZmYgLS1naXQgYS9kb2MvcGNtZC9pZGVlIGIvZG9jL3BjbWQvaWRlZQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi40MTM0MmM2Ci0tLSAvZGV2L251bGwKKysrIGIvZG9jL3BjbWQvaWRlZQpAQCAtMCwwICsxLDQ1IEBACitpZGVlCistLS0tCisKK0tPTU1BTkRPOgorICAgIGlkZWUgPHRleHQ+CisgICAgaWRlZSA8b2JqZWt0Pjo8dGV4dD4KKworQVJHVU1FTlRFOgorCisgICAgPHRleHQ+CisgICAgICAgIEVpbmUgTWl0dGVpbHVuZworICAgIDxvYmpla3Q+CisgICAgICAgIEVpbiBSZWZlcmVuem9iamVrdCwgZGFzIG5lYmVuIERpciBsaWVndCBvZGVyIGluIERlaW5lbSBJbnZlbnRhciBpc3QKKworQkVTQ0hSRUlCVU5HOgorICAgIFNwZWljaGVydCBlaW5lIE1pdHRlaWx1bmcgdWViZXIgZWluZSBJZGVlLCB3aWUgbWFuIGRhcyBTcGllbCB2ZXJiZXNzZXJuCisgICAgb2RlciB2ZXJzY2hvZW5lcm4ga2Fubi4gQmVpc3BpZWxlIHdhZXJlbiB3ZWl0ZXJlIERldGFpbHMgaW4gUmFldW1lbiBvZGVyCisgICAgYW4gT2JqZWt0ZW47IFZvcnNjaGxhZWdlIHp1ciBWZXJiZXNzZXJ1bmcgZGVyIFN5bnRheCBhbiBiZXN0aW1tdGVuCisgICAgU3RlbGxlbjsgSWRlZW4sIHdpZSBtYW4gZGFzIEFtYmllbnRlIGVpbmVzIFJhdW1lcyBub2NoIHZlcmJlc3Nlcm4ga2Fubi4KKyAgICBEaWUgTWFnaWVyIHdlcmRlbiB2ZXJzdWNoZW4sIGFsbGUgTWl0dGVpbHVuZ2VuIGluIGRpZSBUYXQgdW16dXNldHplbiwKKyAgICBzb3dlaXQgc2llIGlobmVuIHNpbm52b2xsIGVyc2NoZWluZW4gOikKKworICAgIFdlbm4gRHUgZWluZW4gVGlwcGZlaGxlciBnZWZ1bmRlbiBoYXN0LCBzbyBrYW5uc3QgRHUgZGVuIFZlcmFudHdvcnRsaWNoZW4KKyAgICBtaXQgZGllc2VtIEJlZmVobCBkYXZvbiB1bnRlcnJpY2h0ZW4uCisgICAgQWxsZSBWb3JzY2hsYWVnZSBzaW5kICpoZXJ6bGljaCB3aWxsa29tbWVuKjsgem9lZ2VyZSBhbHNvIG5pY2h0LCB3ZW5uIER1CisgICAgZWluZSBndXRlIElkZWUgaGFzdCEKKworICAgIFdlbm4gRHUgZWluZSBJZGVlIGZ1ZXIgZWluIGJlc3RpbW10ZW4gT2JqZWt0IG9kZXIgTlBDIGhhc3QsIGthbm5zdCBEdQorICAgIGRpZXNlcy9kaWVzZW4gaGludGVyIGVpbmVtIERvcHBlbHB1bmt0IGFuZ2ViZW4sIGRhbWl0IGRlciBmdWVyIGRhcyBPYmpla3QKKyAgICB2ZXJhbnR3b3J0bGljaGUgTWFnaWVyIGRpZSBNZWxkdW5nIGJla29tbXQuCisgICAgV2VubiBkYXMgT2JqZWt0IG5pY2h0IHp1IGZpbmRlbiBpc3QsIHdpcmQgZGllIGdhbnplIEVpbmdhYmUgYWxzCisgICAgTWVsZHVuZyBhdWZnZWZhc3N0LgorCitCRU1FUktVTkc6CisgICAgRGVyIEJlZmVobCAnaWRlZScgYmV6aWVodCBzaWNoIGJlaSBOaWNodGFuZ2FiZSBlaW5lcyBCZXp1Z3NvYmpla3RlcworICAgIGF1ZiBkYXMgbGV0enRlIGJldHJhY2h0ZXRlIE9iamVrdC4gSGFzdCBEdSBhbHNvIGVpbiBPYmpla3QgdW50ZXJzdWNodCwKKyAgICBkYW5uIHdpcmQgZGllIE1lbGR1bmcgZnVlciBkaWVzZSBPYmpla3QgYWJnZWdlYmVuLiBIYXN0IER1IGFiZXIgZGVuCisgICAgUmF1bSB1bnRlcnN1Y2h0IG9kZXIgJ3NjaGF1JyBlaW5nZWdlYmVuLCB3aXJkIGRpZSBNZWxkdW5nIGZ1ZXIgRGVpbmVuCisgICAgbW9tZW50YW5lbiBSYXVtIGFiZ2VzZXR6dC4KKworU0lFSEUgQVVDSDoKKyAgICBidWcsIHR5cG8sIGRldGFpbCwgYmV6dWdzb2JqZWt0CisKK0xFVFpURSBBZU5ERVJVTkc6CisgICAgMTIuIE9rdCAyMDExIEdsb2luc29uCmRpZmYgLS1naXQgYS9kb2MvcGNtZC9pZGxlemVpdCBiL2RvYy9wY21kL2lkbGV6ZWl0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjlhNDU5ZWMKLS0tIC9kZXYvbnVsbAorKysgYi9kb2MvcGNtZC9pZGxlemVpdApAQCAtMCwwICsxLDE5IEBACisKK2lkbGV6ZWl0CistLS0tLS0tLQorCisgS09NTUFORE86CisgICAgaWRsZXplaXQgPG5hbWU+CisKKyBBUkdVTUVOVEU6CisKKyAgICAgPG5hbWU+CisgICAgICAgIE5hbWUgZWluZXMgU3BpZWxlcnMKKworIEJFU0NIUkVJQlVORzoKKyAgICBEaWVzZXIgQmVmZWhsIGdpYnQgZGllIFplaXQgYXVzLCBkaWUgZWluIFNwaWVsZXIgcGFzc2l2IGlzdC4KKyAgICBEYW5uIG11c3MgbWFuIG5pY2h0IGplZGVzIG1hbCBkZW4gU3BpZWxlciBmaW5nZXJuLCB3ZW5uIG1hbiB3aXNzZW4KKyAgICB3aWxsLCBvYiBlciBnZXJhZGUgYW5zcHJlY2hiYXIgaXN0IG9kZXIgbmljaHQuCisKKyBMRVRaVEUgQWVOREVSVU5HOgorICAgIE1pdCwgMjUuIEZlYiAyMDA0LCAxMjo0NjowMCB2b24gUmlrdXMKZGlmZiAtLWdpdCBhL2RvYy9wY21kL2lnbm9yaWVyZSBiL2RvYy9wY21kL2lnbm9yaWVyZQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44N2U5YjI3Ci0tLSAvZGV2L251bGwKKysrIGIvZG9jL3BjbWQvaWdub3JpZXJlCkBAIC0wLDAgKzEsMTM0IEBACisKK2lnbm9yaWVyZQorLS0tLS0tLS0tCisKKyBLT01NQU5ETzoKKyAgICBpZ25vcmllcmUgPHNwaWVsZXI+IHwgPHNwaWVsZXI+Ljxha3Rpb24+IHwgLjxha3Rpb24+CisgICAgaWdub3JpZXJlIDxzcGllbGVyPkA8bXVkPiB8IDxzcGllbGVyPkAgfCBAPG11ZD4KKyAgICBpZ25vcmllcmUgPHNwaWVsZXI+Ljxha3Rpb24+LjxlaW5zY2hyYWVua3VuZz4KKyAgICBpZ25vcmllcmUKKworIEFSR1VNRU5URToKKworICAgICA8YWt0aW9uPgorICAgICAgICBEaWUgenUgaWdub3JpZXJlbmRlIEFrdGlvbiAoS29tbWFuZG8pCisgICAgIDxzcGllbGVyPgorICAgICAgICBOYW1lIGRlcyB6dSBpZ25vcmllcmVuZGVuIFNwaWVsZXJzCisgICAgIDxtdWQ+CisgICAgICAgIE5hbWUgZWluZXMgTVVEcworICAgICA8ZWluc2NocmFlbmt1bmc+CisgICAgICAgIERpZXMga2FubiBkaWUgaWdub3JpZXJ0ZSBBa3Rpb24gbm9jaG1hbCBlaW5zY2hyYWVua2VuIChzLnUuKQorCisgQkVTQ0hSRUlCVU5HOgorICAgIFdlbm4gRGlyIGplbWFuZCBtYWVjaHRpZyBhdWYgZGllIE5lcnZlbiBnZWh0IG9kZXIgRGlyIGVpbmlnZSBBa3Rpb25lbgorICAgIG5pY2h0IGluIGRlbiBLcmFtIHBhc3Nlbiwga2FubnN0IER1IERpY2ggbWl0IGRpZXNlbSBLb21tYW5kbyB2b3IgZGVuCisgICAgQXVzd2lya3VuZ2VuIHNjaHVldHplbi4KKworICAgIEZvbGdlbmRlIE1vZWdsaWNoa2VpdGVuIGJlc3RlaGVuOgorCisgICAgICdpZ25vcmllcmUgPHNwaWVsZXI+JworICAgICAgICBTYWVtdGxpY2hlIE1lbGR1bmdlbiwgZGllIGRlciBTcGllbGVyIDxzcGllbGVyPiBlcnpldWd0LCB3ZXJkZW4KKyAgICAgICAgdW50ZXJkcnVlY2t0LiBEaWVzIGlzdCBlaW5lIHNlaHIgZHJhc3Rpc2NoZSBNYXNzbmFobWUhCisKKyAgICAgJ2lnbm9yaWVyZSAuPGFrdGlvbj4nCisgICAgICAgIEFsbGUgTWVsZHVuZ2VuLCBkaWUgPGFrdGlvbj4gZXJ6ZXVndCwgd2VyZGVuIHVudGVyZHJ1ZWNrdC4gRXMgd2lyZAorICAgICAgICBtZWlzdGVucyBqZWRvY2ggYXVmIGRpZSBnZW5hdWUgU2NocmVpYndlaXNlIGdlYWNodGV0IChBdXNuYWhtZW4gcy51Lik7CisgICAgICAgIHdlbm4gbWFuIGFsc28gbmllbWFscyBnZXdlY2t0IHdlcmRlbiB3aWxsLCBtdXNzIG1hbiBzb3dvaGwgYC53ZWNrZScKKyAgICAgICAgYWxzIGF1Y2ggYC53ZWNrJyBpZ25vcmllcmVuIQorCisgICAgICdpZ25vcmllcmUgPHNwaWVsZXI+Ljxha3Rpb24+JworICAgICAgICBFaW5lIEtvbWJpbmF0aW9uIGRlciBvYmlnZW4gTW9lZ2xpY2hrZWl0ZW46IERpZSBBa3Rpb24gPGFrdGlvbj4KKyAgICAgICAgd2lyZCBudXIgZGFubiBpZ25vcmllcnQsIHdlbm4gc2llIHZvbSBTcGllbGVyIDxzcGllbGVyPiBrb21tdC4gQW5kZXJlCisgICAgICAgIE1lbGR1bmdlbiB2b24gPHNwaWVsZXI+IHdlcmRlbiBqZWRvY2ggd2VpdGVyaGluIGFremVwdGllcnQuCisKKyAgICAgJ2lnbm9yaWVyZSA8c3BpZWxlcj4uZWJlbmVuLjxlYmVuZT4nCisgICAgICdpZ25vcmllcmUgPHNwaWVsZXI+LmViZW5lbicKKyAgICAgICAgU28ga2FubiBtYW4gZGllIEFldXNzZXJ1bmdlbiBlaW5lcyBTcGllbGVycyBhdWYgZWluZXIgYmVzdGltbXRlbiBFYmVuZQorICAgICAgICBvZGVyIGF1ZiBhbGxlbiBFYmVuZW4gaWdub3JpZXJlbiwgb2huZSBpaG4gZ2xlaWNoIGtvbXBsZXR0IHp1CisgICAgICAgIGlnbm9yaWVyZW4uCisgICAgICAgIEVpbiBCZWlzcGllbCB3YWVyZSAnaWdub3JpZXJlIHRpbGx5LmViZW5lbi5hbGxnZW1laW4nLiBEYW1pdCBiZWtvbW10CisgICAgICAgIG1hbiBudXIgZGllIEFldXNzZXJ1bmdlbiBhdWYgZGVyIEViZW5lIDxBbGxnZW1laW4+IG5pY2h0IG1pdCwgYWxsZQorICAgICAgICBhbmRlcmVuIHNjaG9uLgorICAgICAgICBCVFc6IGRhcyBmdW5rdGlvbmllcnQgenVyIFplaXQgbmljaHQgZnVlciBTcGllbGVyIGF1cyBhbmRlcmVuIE11ZHMuCisgICAgIAorICAgICAnaWdub3JpZXJlIDxzcGllbGVyPi5tYWlsJworICAgICAgICBJZ25vcmllcnQgUG9zdCAobXVkaW50ZXJuZSBNYWlsKSwgZGllIHZvbiA8c3BpZWxlcj4gYWJnZXNhbmR0IHd1cmRlLgorCisgICAgICdpZ25vcmllcmUgPHNwaWVsZXI+Lm5ld3MnCisgICAgICAgIElnbm9yaWVydCBNUEEtQXJ0aWtlbCB2b24gPHNwaWVsZXI+IGJlaSBubi4gKE5pY2h0IGJlaSBnZXppZWx0ZW0gTGVzZW4KKyAgICAgICAgdm9uIEFydGlrZWxuLikKKworICAgICAnaWdub3JpZXJlIDxzcGllbGVyPkA8bXVkPicKKyAgICAgICAgQWxsZSBNaXR0ZWlsdW5nZW4gZGVzIFNwaWVsZXJzIDxzcGllbGVyPiBhdXMgZGVtIE11ZCA8bXVkPiB3ZXJkZW4KKyAgICAgICAgYWJnZWJsb2NrdC4KKworICAgICAnaWdub3JpZXJlIDxzcGllbGVyPkAnCisgICAgICAgIERpZSBNaXR0ZWlsdW5nZW4gdm9uIGFsbGVuIFNwaWVsZXJuIG5hbWVucyA8c3BpZWxlcj4gaW4gYW5kZXJlbiBNdWRzCisgICAgICAgIHdlcmRlbiBhYmdlYmxvY2t0LiBEaWVzIGlzdCBlaW5lIHNlaHIgZHJhc3Rpc2NoZSBNYXNzbmFobWUsIGRpZSBtYW4KKyAgICAgICAgc2ljaCBndXQgdWViZXJsZWdlbiBzb2xsdGUuIFNjaGxpZXNzbGljaCBrb2VubmVuIHNpY2ggaGludGVyIGRlbQorICAgICAgICBnbGVpY2hlbiBOYW1lbiBpbiB1bnRlcnNjaGllZGxpY2hlbiBNdWRzIGF1Y2ggdW50ZXJzY2hpZWRsaWNoZSBMZXV0ZQorICAgICAgICB2ZXJiZXJnZW4hCisKKyAgICAgJ2lnbm9yaWVyZSBAPG11ZD4nCisgICAgICAgIEVzIHdlcmRlbiBzYWVtdGxpY2hlIE1pdHRlaWx1bmdlbiBhdXMgZGVtIE11ZCA8bXVkPiBpZ25vcmllcnQuIEF1Y2gKKyAgICAgICAgZGllcyBpc3QgZWluZSByZWNodCBkcmFzdGlzY2hlIE1hc3NuYWhtZSEKKworICAgICAnaWdub3JpZXJlJworICAgICAgICBEaWUgTGlzdGUgZGVyIGlnbm9yaWVydGVuIEFrdGlvbmVuIHVuZCBTcGllbGVyIHdpcmQgYW5nZXplaWd0LgorCisgICAgRm9sZ2VuZGUgQWt0aW9uZW4gZ2lidCBlcywgd2VsY2hlIGF1Y2ggYW5kZXJlIFNjaHJlaWJ3ZWlzZW4gdW1mYXNzZW46CisgICAgICBzYWdlIChzYWdlLCBzYWcsICcpLCBlbW90ZSAoZW1vdGVzLCByZW1vdGVzKSwgcnVmZSAocnVmZSwgcnVmKSwKKyAgICAgIHRlaWxlbWl0ICh0ZWlsZS1taXRzKSwgLi4uIChMaXN0ZSBub2NoIHVudm9sbHN0YWVuZGlnKQorCisgICAgV2lsbCBtYW4gZWluZW4gRWludHJhZyB3aWVkZXIgZW50ZmVybmVuLCBtdXNzIG1hbiBlaW5mYWNoIG5vY2ggZWlubWFsIGRhcworICAgIGVudHNwcmVjaGVuZGUgYGlnbm9yaWVyZSctS29tbWFuZG8gZWluZ2ViZW4uCisKKyAgICBOZWJlbiBLb21tdW5pa2F0aW9uc2tvbW1hbmRvcyB2b24gU3BpZWxlciB6dSBTcGllbGVyIGxhc3NlbiBzaWNoIGF1Y2ggbm9jaAorICAgIGZvbGdlbmRlIERpbmdlIGFid2VocmVuIChhbGxlbiBkaWVzZW4gRmFlbGxlbiBsYWVzc3Qgc2ljaCBlaW4gU3BpZWxlcm5hbWUKKyAgICB2b3JhbnN0ZWxsZW4sIHdlbm4gbWFuIGRhcyBudXIgYmVpIGVpbmVtIGJlc3RpbW10ZW4gU3BpZWxlciBpZ25vcmllcmVuCisgICAgd2lsbCk6CisKKyAgICAgU3BlbmRpZXJlbiBpbiBkZXIgS25laXBlCisKKyAgICAgICAgICogLnNwZW5kaWVyZQorICAgICAgICAgKiAuc3BlbmRpZXJlLmdldHJhZW5rZQorICAgICAgICAgKiAuc3BlbmRpZXJlLmFsa29ob2wKKyAgICAgICAgICogLnNwZW5kaWVyZS5lc3NlbgorCisgICAgIEdlZnVuZGVuIHdlcmRlbiBkdXJjaCBhbmRlcmUgU3BpZWxlcgorICAgICAKKyAgICAgICAgIEhpZXJtaXQgd2lyZCB2ZXJoaW5kZXJ0LCBkYXNzIGZyZW1kZSBTcGllbGVyIGRlbiBlaWdlbmVuCisgICAgICAgICBBdWZlbnRoYWx0c29ydCBlcm1pdHRlbG4ga29lbm5lbiAobm9jaCBuaWNodCB2b2xsc3RhZW5kaWcKKyAgICAgICAgIGltcGxlbWVudGllcnQpLgorICAgICAgICAgKiAuZmluZGUgKHNjaGxpZXNzdCBhbGxlIG5hY2hmb2xnZW5kZW4gZWluKQorICAgICAgICAgKiAuZmluZGUuZ2xhc3d1ZXJmZWwKKyAgICAgICAgICogLmZpbmRlLmZlbGRzdGVjaGVyCisKKyAgICAgVmVyc2NoaWVkZW5lcworCisgICAgICAgICAqIC5zaG91dAorICAgICAgICAgICBEaWUgQWt0aW9uICdzaG91dCcgaXN0IG5pY2h0IGRhcyBnbGVpY2hlIHdpZSAncnVmZScsIHNvbmRlcm4KKyAgICAgICAgICAgdW1mYXNzdCBNZWxkdW5nZW4gYXVzIGRlbiBSZWdpb25lbiwgd2llIGRpZSBBbmt1bmZ0IGRlciBIeWRyYSBvZGVyCisgICAgICAgICAgIGRhcyBMb2VzZW4gYmVzdGltbXRlciBRdWVzdHMuCisgICAgICAgICAqIC5tYXVzLjx2ZXJiPgorICAgICAgICAgKiAua251ZGRlbG1hdXMuPHZlcmI+CisgICAgICAgICAgIERpZXNlIGJlaWRlbiBpZ25vcmllcmVuIGRpZSBEaWRkbG1hdXMuCisKKyAgICAgTWVsZHVuZ2VuIGF1cyBkZW4gQXJlbmVuCisKKyAgICAgICAgICogLmFyZW5hIChhbGxlIHUuZy4pCisgICAgICAgICAqIC5hcmVuYS5zZWhlcndldHRiZXdlcmIgKFNlaGVyd2V0dGJld2VyYiBXdWVzdGVuYXJlbmEpCisgICAgICAgICAqIC5hcmVuYS5nbGFkaWF0b3IgKEhlcmF1c2ZvcmRlcnVuZyBHbGFkaWF0b3JlbikKKyAgICAgICAgICogLmFyZW5hLmR1ZWxsIChEdWVsbGF1ZmZvcmRlcnVuZ2VuIGRlciBXdWVzdGVuYXJlbmEpCisgICAgICAgICAqIC5hcmVuYS5mZWdlZmV1ZXIgKER1ZWxsYW5rdWVuZGlndW5nZW4gRmVnZWZldWVyKQorICAgICAgICAgKiAuYXJlbmEuZmVnZWZldWVyc2Nyb2xsIChLYW1wZnNjcm9sbCBGZWZlZmV1ZXIpCisgICAgICAgICAqIC5hcmVuYS5mZWdlZmV1ZXJkdWVsbCAoRHVlbGxhdWZmb3JkZXJ1bmdlbiBGZWdlZmV1ZXIpCisgICAgICAgICAqIC5hcmVuYS5zY2hsYWNodGZlbGQgKFNjaGxhY2h0ZmVsZCBpbSB2ZXJsLiBMYW5kKQorCisgU0lFSEUgQVVDSDoKKyAgICBzYWdlLCBmcmFnZSwgYW50d29ydGUsIGZsdWVzdGVyZSwgdGVpbGUgKG1pdCksIGdlc3ByYWVjaCwgcnVmZSwgZWJlbmVuLAorICAgIHdlZywga29ib2xkCisKKyBMRVRaVEUgQUVOREVSVU5HOgorICAgIDAyLjEwLjIwMTMsIFplc3N0cmEKKwpkaWZmIC0tZ2l0IGEvZG9jL3BjbWQvaW5mbyBiL2RvYy9wY21kL2luZm8KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYzY1YWM2YgotLS0gL2Rldi9udWxsCisrKyBiL2RvYy9wY21kL2luZm8KQEAgLTAsMCArMSwzMyBAQAorCitpbmZvCistLS0tCisKKyBLT01NQU5ETzoKKyAgICBpbmZvCisgICAgcHVua3RlCisKKyBCRVNDSFJFSUJVTkc6CisgICAgRGllc2UgS29tbWFuZG9zIGdlYmVuIGRpZSB3aWNodGlnc3RlbiBEYXRlbiB1ZWJlciBEZWluZW4gQ2hhcmFrdGVyIGF1cy4KKyAgICBEYXp1IGdlaG9lcmVuOgorCisgICAgICogRGVpbiB2b2xsZXIgTmFtZSBtaXQgUHJlc2F5IHVuZCBUaXRlbCwKKyAgICAgKiBEZWluZSBSYXNzZSwKKyAgICAgKiBEZWluZSBDaGFyYWt0ZXJlaW5zdGVsbHVuZywKKyAgICAgKiBrb2VycGVybGljaGUgQXR0cmlidXRlIHdpZSBHZXNjaGxlY2h0LCBHcm9lc3NlIHVuZCBHZXdpY2h0LAorICAgICAqIERlaW5lIFNwaWVsZXJzdHVmZSwKKyAgICAgKiBkaWUgR2lsZGUsIGRlciBEdSBhbmdlaG9lcnN0LCB1bmQgZGllIFN0dWZlIGRvcnQsCisgICAgICogRXJmYWhydW5ncy0gdW5kIEFiZW50ZXVlcnB1bmt0ZSwKKyAgICAgKiBEZWluZSBBdHRyaWJ1dGUsCisgICAgICogRGVpbmUga29lcnBlcmxpY2hlIHVuZCBnZWlzdGlnZSBWZXJmYXNzdW5nLAorICAgICAqIGdnZi4gVm9yc2ljaHRzbW9kdXMgdW5kIEZsdWNodHJpY2h0dW5nLAorICAgICAqIGRlciBHcmFkIERlaW5lciBLZW5udG5pcyBkZXMgTW9yZ2VuR3JhdWVuLAorICAgICAqIGdnZi4gVmVyZ2lmdHVuZ3NncmFkLCBBYndlc2VuaGVpdCB1bmQgRmVpbmRlIHNvd2llCisgICAgICogRGVpbiBBbHRlci4KKworICAgIGBpbmZvJyB6ZWlndCBhbGxlIGRpZXNlIERhdGVuIGFuLCB3YWVocmVuZCBgcHVua3RlJyBudXIgZGllIHdpY2h0aWdzdGVuCisgICAgRGF0ZW4gYW56ZWlndC4KKworIFNJRUhFIEFVQ0g6CisgICAga3VyemluZm8KKworMTIuIE1hciAyMDA2IEdsb2luc29uCmRpZmYgLS1naXQgYS9kb2MvcGNtZC9pbmZvcm0gYi9kb2MvcGNtZC9pbmZvcm0KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYjdjMDhkMAotLS0gL2Rldi9udWxsCisrKyBiL2RvYy9wY21kL2luZm9ybQpAQCAtMCwwICsxLDI5IEBACisKK2luZm9ybQorLS0tLS0tCisKKyBLT01NQU5ETzoKKyAgICBpbmZvcm0gWzx6dXN0YW5kPl0KKworIEFSR1VNRU5URToKKworICAgICA8enVzdGFuZD4KKyAgICAgICAgYGVpbicgb2RlciBgYXVzJworCisgQkVTQ0hSRUlCVU5HOgorICAgIE1pdCBkaWVzZW0gQmVmZWhsIGthbm5zdCBEdSBkZW4gSW5mb3JtYXRpb25zbW9kdXMgZWluLSBvZGVyIGF1c3NjaGFsdGVuLgorICAgIEhhc3QgRHUgZGVuIEluZm9ybWF0aW9uc21vZHVzIGVpbmdlc2NoYWx0ZXQsIHNvIHdpcnN0IER1IGltbWVyIHVlYmVyIGRhcworICAgIEVpbi0gdW5kIEF1c2xvZ2dlbiB2b24gU3BpZWxlcm4gaW5mb3JtaWVydC4KKworICAgIGBpbmZvcm0nIG9obmUgUGFyYW1ldGVyIHplaWd0IERpciBkZW4gYWt0dWVsbGVuIFp1c3RhbmQgZGVzCisgICAgSW5mb3JtYXRpb25zbW9kdXMgYW4uCisKKyBCRU1FUktVTkdFTjoKKyAgICBXZW5uIER1IG51ciB1ZWJlciBkYXMgRWluLSB1bmQgQXVzbG9nZ2VuIGJlc3RpbW10ZXIgU3BpZWxlciBpbmZvcm1pZXJ0CisgICAgd2VyZGVuIHdpbGxzdCwgc29sbHRlc3QgRHUgZGVuIGBlcndhcnRlJy1CZWZlaGwgYmVudXR6ZW4uCisKKyBTSUVIRSBBVUNIOgorICAgIGVyd2FydGUKKworIExFVFpURSBBZU5ERVJVTkc6CisgICAgVGh1LCAyNC4wNy4xOTk3LCAwOTowMDowMCB2b24gV2FyZ29uCmRpZmYgLS1naXQgYS9kb2MvcGNtZC9pbnZlbnR1ciBiL2RvYy9wY21kL2ludmVudHVyCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmQ5MTEzOGQKLS0tIC9kZXYvbnVsbAorKysgYi9kb2MvcGNtZC9pbnZlbnR1cgpAQCAtMCwwICsxLDQ5IEBACisKK2ludmVudHVyCistLS0tLS0tLQorCisgS09NTUFORE86CisgICAgaSBbPGZsYWdzPl0KKyAgICBpbnYgWzxmbGFncz5dCisgICAgaW52ZW50dXIgWzxmbGFncz5dCisKKyBBUkdVTUVOVEU6CisKKyAgICAgPGZsYWdzPgorICAgICAgICBGbGFncywgdW0gZGllIEFuemVpZ2UgenUga29uZmlndXJpZXJlbgorCisgQkVTQ0hSRUlCVU5HOgorICAgIEVzIHdpcmQgZWluZSBrdXJ6ZSBCZXNjaHJlaWJ1bmcgYWxsZXIgT2JqZWt0ZSBhdXNnZWdlYmVuLCBkaWUgRHUgYmVpIERpcgorICAgIHRyYWVnc3QuIE5vcm1hbGVyd2Vpc2Ugd2VyZGVuIGFsbGUgT2JqZWt0ZSBhbmdlemVpZ3QgdW5kIG5hY2ggV2FmZmVuLAorICAgIFJ1ZXN0dW5nZW4gdW5kIFZlcnNjaGllZGVuZXMgc29ydGllcnQuIERpZXMga2FubiBtYW4gYWxsZXJkaW5ncyBtaXQgZGVuCisgICAgPGZsYWdzPiBhZW5kZXJuOgorCisgICAgIC0xICBFaW5zcGFsdGlnZSBBdXNnYWJlCisgICAgICthICBOdXIgQXV0b2xvYWRlciBhbnplaWdlbgorICAgICAtYSAgS2VpbmUgQXV0b2xvYWRlciBhbnplaWdlbgorICAgICArYiAgTnVyIE9iamVrdGUgemVpZ2VuLCBkaWUgbWFuIGJlaSAidmVya2F1ZmUgYWxsZXMiIGJlaGFlbHQKKyAgICAgLWIgIEtlaW4gT2JqZWt0IHplaWdlbiwgZGFzIG1hbiBiZWkgInZlcmthdWZlIGFsbGVzIiBiZWhhZWx0CisgICAgIC1mICBJbnZlbnRhciBuaWNodCB1bnRlcnRlaWxlbiBvZGVyIGdsZWljaGUgT2JqZWt0ZSB6dXNhbW1lbmZhc3NlbgorICAgICArciAgTnVyIFJ1ZXN0dW5nZW4gYW56ZWlnZW4KKyAgICAgLXIgIEtlaW5lIFJ1ZXN0dW5nZW4gYW56ZWlnZW4KKyAgICAgLXMgIEF1c2dhYmUgYWxwaGFiZXRpc2NoIHNvcnRpZXJlbgorICAgICArdiAgQWxsZXMgemVpZ2VuLCB3YXMgbmljaHQgUnVlc3R1bmcgb2RlciBXYWZmZSBpc3QKKyAgICAgLXYgIEFsbGVzIHplaWdlbiwgd2FzIFJ1ZXN0dW5nIG9kZXIgV2FmZmUgaXN0CisgICAgICt3ICBOdXIgV2FmZmVuIGFuemVpZ2VuCisgICAgIC13ICBLZWluZSBXYWZmZW4gYW56ZWlnZW4KKworICAgIERpZSBBcmd1bWVudGUgc2luZCBhdWNoIGtvbWJpbmllcmJhci4KKworICAgIEJlaSBkZW4gRmxhZ3MgKy8tYSB1bmQgKy8tYiBpc3QgZm9sZ2VuZGVzIHp1IGJlYWNodGVuOiBLb21iaW5pZXJ0IG1hbiBzaWUKKyAgICBtaXQgZGVuIGFuZGVyZW4gRmxhZ3MsIHNvIGZpbmRldCBlaW5lIGxvZ2lzY2hlIFVORC1WZXJrdWVwZnVuZyBzdGF0dC4gTWl0CisKKyAgICBpbnYgK3IgK2EKKworICAgIHdlcmRlbiBhbHNvIG5pY2h0IGFsbGUgUnVlc3R1bmdlbiBzb3dpZSBhbGxlIEF1dG9sb2FkZXIgYW5nZXplaWd0LCBzb25kZXJuCisgICAgbnVyIGFsbGUgQXV0b2xvYWQtUnVlc3R1bmdlbi4KKworIFNJRUhFIEFVQ0g6CisgICAgYmVoYWx0ZSwgYXVzcnVlc3R1bmcKKworIExFVFpURSBBZU5ERVJVTkc6CisgICAgVHVlLCAyNy4wMi4yMDAxLCAxNzoyNTowMCB2b24gVGlhbWFrCmRpZmYgLS1naXQgYS9kb2MvcGNtZC9ra3dlciBiL2RvYy9wY21kL2trd2VyCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjIzYmJkNzAKLS0tIC9kZXYvbnVsbAorKysgYi9kb2MvcGNtZC9ra3dlcgpAQCAtMCwwICsxLDE5IEBACisKK2trd2VyCistLS0tLQorCisgS09NTUFORE86CisgICAga2t3ZXIKKworIEFSR1VNRU5URToKKyAgICBrZWluZQorCisgQkVTQ0hSRUlCVU5HOgorICAgIEVzIHdpcmQgZWluZSBhbHBoYWJldGlzY2ggc29ydGllcnRlIExpc3RlIG1pdCBkZW4gTmFtZW4gYWxsZXIgbW9tZW50YW4gaW0KKyAgICBNb3JnZW5HcmF1ZW4gZWluZ2Vsb2dndGVuIFNwaWVsZXIgYXVzZ2VnZWJlbi4KKworIFNJRUhFIEFVQ0g6CisgICAgd2VyLCBrd2VyCisKKyBMRVRaVEUgQWVOREVSVU5HOgorICAgIFRodSwgMjQuMDcuMTk5NywgMDk6MDA6MDAgdm9uIFdhcmdvbgpkaWZmIC0tZ2l0IGEvZG9jL3BjbWQva2xldHRlcmUgYi9kb2MvcGNtZC9rbGV0dGVyZQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi42N2QwNmE1Ci0tLSAvZGV2L251bGwKKysrIGIvZG9jL3BjbWQva2xldHRlcmUKQEAgLTAsMCArMSwyOSBAQAorCitrbGV0dGVyZQorLS0tLS0tLS0KKworIEtPTU1BTkRPOgorICAgIGtsZXR0ZXJlIGhvY2ggfCBydW50ZXIKKyAgICBrbGV0dGVyZSBhdXMgfCBhdWYgfCB1ZWJlciB8IGluIHwgYXVzIDxvYmpla3Q+CisKKyBBUkdVTUVOVEU6CisKKyAgICAgPG9iamVrdD4KKyAgICAgICAgRWluIEdlZ2Vuc3RhbmQKKworIEJFU0NIUkVJQlVORzoKKyAgICBEYXMgaXN0IGRlciBTdGFuZGFyZGJlZmVobCwgdW0gZWluIEhpbmRlcm5pcyB6dSB1ZWJlcndpbmRlbi4gTWFuY2htYWwKKyAgICByZWljaGVuIGFiZXIgYXVjaCBkaWUgbm9ybWFsZW4gUmljaHR1bmdzYmVmZWhsZSBhdXMuIE1hbmNoZSBIaW5kZXJuaXNzZQorICAgIHN0ZWxsZW4gZWluIFJhZXRzZWwgZGFyLCBkYXMgbWl0IHJhZmZpbmllcnRlcmVuIE1ldGhvZGVuIHVlYmVyd3VuZGVuCisgICAgd2VyZGVuIHdpbGwuCisKKyBCRU1FUktVTkc6CisgICAgV2VubiBpcmdlbmR3byBub2NoIGRlciBCZWZlaGwgYGtsZXR0ZXJlJyBpbiBhbmRlcmVyIFN5bnRheCBiZW5vZXRpZ3Qgd2lyZCwKKyAgICBiaXR0ZSBlaW5lIGBmZWhsZXInLU1lbGR1bmcgaGludGVybGFzc2VuLCBkYW1pdCBkaWUgTWFnaWVyIGVzIGV0d2FzCisgICAgbGVpY2h0ZXIgaGFiZW4sIGRpZSBCZWZlaGxlIHp1IHZlcmVpbmhlaXRsaWNoZW4uCisKKyBTSUVIRSBBVUNIOgorICAgIGJld2VndW5nLCBmZWhsZXIKKworIExFVFpURSBBZU5ERVJVTkc6CisgICAgVGh1LCAyNC4wNy4xOTk3LCAwOTowMDowMCB2b24gV2FyZ29uCmRpZmYgLS1naXQgYS9kb2MvcGNtZC9rbGluZ2VsdG9uIGIvZG9jL3BjbWQva2xpbmdlbHRvbgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5mODU1ZDJlCi0tLSAvZGV2L251bGwKKysrIGIvZG9jL3BjbWQva2xpbmdlbHRvbgpAQCAtMCwwICsxLDIzIEBACitLT01NQU5ETzoKKwlrbGluZ2VsdG9uIGF1cworICAgICAgICBrbGluZ2VsdG9uIDEuLjM2MDAgCisKK0FSR1VNRU5URToKKyAgICAgICAgICAgICAgICAgIDogYWt0dWVsbGVuIFN0YXR1cyBhbnplaWdlbiAgCisJICAxLi4zNjAwIDogS2xpbmdlbHRvbiBtYXhpbWFsIGFsbGVyIG4gU2VrdW5kZW4gCisJICBBVVMgICAgIDogS2xpbmdlbHRvbiBhdXNzY2hhbHRlbi4KKworQkVTQ0hSRUlCVU5HOgorICAgICAgICBVbSBNaXR0ZWlsdW5nZW4gaW0gU2Nyb2xsIG5pY2h0IHp1IHZlcnBhc3Nlbiwgd2lyZCBiZWkgZWluZ2VzY2hhbHRldGVtCisgICAgICAgIEtsaW5nZWx0b24gaW4gZGVuIHZvcmVpbmdlc3RlbGx0ZW4gWmVpdGludGVydmFsbGVuIGVpbiBUb25zaWduYWwgdm9tCisgICAgICAgIE11ZCBlcnpldWd0LiBEYXMgaXN0IGJlc29uZGVycyBmdWVyIGJsaW5kZSBTcGllbGVyIHZvbiBWb3J0ZWlsLCBkZW5lbgorICAgICAgICBzb25zdCBNaXR0ZWlsdW5nZW4gc2NobmVsbCBtYWwgdmVybG9yZW4gZ2VoZW4uCisgICAgICAgIERlciBUb24gd2lyZCBudXIgcHJvZHV6aWVydCwgd2VubiBtYW4gbWl0ICd0b24gZWluJyBkaWUgVG9uYXVzZ2FiZQorICAgICAgICBkZXMgTXVkcyBha3RpdmllcnQgaGF0LgorICAgICAgICBNaXR0ZWlsdW5nZW4gc2luZCBpbiBkaWVzZW0gWnVzYW1tZW5oYW5nICdzYWcnIHVuZCAndGVpbGUgbWl0Jy4KKyAKK1NJRUhFIEFVQ0g6CisJdGVpbGUgbWl0LCBzYWcsIGtsaW5nZWx0b24sIGdyYWZpayBhdXMsIHRvbiwga2VlcGFsaXZlCisKK0xFVFpURSBBRU5ERVJVTkc6CisgICAxNi4gTWFpIDIwMDcgIEVubm94CmRpZmYgLS1naXQgYS9kb2MvcGNtZC9rb2JvbGQgYi9kb2MvcGNtZC9rb2JvbGQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMDk3MTY1OAotLS0gL2Rldi9udWxsCisrKyBiL2RvYy9wY21kL2tvYm9sZApAQCAtMCwwICsxLDUxIEBACisKK2tvYm9sZAorLS0tLS0tCisKKyBLT01NQU5ETzoKKyAgICBrb2JvbGQgWzxzY2hhbHRlcj5dCisKKyBBUkdVTUVOVEU6CisKKyAgICAgPHNjaGFsdGVyPiAob3B0aW9uYWwpCisgICAgICAgIGBlaW4nIG9kZXIgYGF1cycKKworIEJFU0NIUkVJQlVORzoKKyAgICBEZXIgS29ib2xkIGhhdCBtZWhyZXJlIEZ1bmt0aW9uZW4sIGRpZSBtaXQgZGVtIFNwZWljaGVybiB2b24gTWl0dGVpbHVuZ2VuCisgICAgYmVpbSBCZWFyYmVpdGVuIG9kZXIgTGVzZW4gZWluZXMgVGV4dGVzIG9kZXIgYW5kZXJlcmUgQWt0aW9uZW4gaW4KKyAgICBadXNhbW1lbmhhbmcgc3RlaGVuLgorCisgICAgTWl0IGBrb2JvbGQgZWluJyBzY2hhbHRldCBtYW4gZGVuIEtvYm9sZCBzbyBlaW4sIGRhc3MgZXIgc2ljaCBqZWRlCisgICAgTWl0dGVpbHVuZyBtZXJrdCwgZGllIHdhZWhyZW5kIGVpbmVyIGRlciBvYmVuIGdlbmFubnRlbiBBa3Rpb25lbiBhbiBlaW5lbgorICAgIGdlc2VuZGV0IHd1cmRlLiBXZW5uIG1hbiBkYW1pdCBmZXJ0aWcgaXN0LCBrYW5uIGRhbm4gbWl0dGVscyBga29ib2xkJywKKyAgICBvaG5lIEFyZ3VtZW50ZSwgYWJnZXJ1ZmVuIHdlcmRlbiwgd2FzIGVyIHNpY2ggZ2VtZXJrdCBoYXQuIERhcyBzb2xsdGUgYWJlcgorICAgIGltIE5vcm1hbGZhbGwgbmljaHQgbm9ldGlnIHNlaW4sIGRhIHNpY2ggZGVyIEtvYm9sZCBhdXRvbWF0aXNjaCBtZWxkZXQuCisKKyAgICBKZWRlciBnZXNwZWljaGVydGVuIE1lbGR1bmcgaXN0IGRpZSBVaHJ6ZWl0IGRlcyBFbXBmYW5ncyBhbmdlaGFlbmd0LgorCisgICAgV3VlbnNjaHQgbWFuIGtlaW5lIHNvbGNoZSBSdWhlbWFzc25haG1lLCBrYW5uIG1hbiBkZW4gS29ib2xkIG1pdCBga29ib2xkCisgICAgYXVzJyB3aWVkZXIgYWJzY2hhbHRlbiB1bmQgamVkZSBNaXR0ZWlsdW5nLCBSdWZlIHVuZCBhbmRlcmUgTWVsZHVuZ2VuCisgICAgd2VyZGVuIGltbWVyIHNvZm9ydCB3ZWl0ZXJnZWxlaXRldC4KKworICAgIFN0YW5kYXJkbWFlc3NpZyBpc3QgZGVyIEtvYm9sZCBhdXNnZXNjaGFsdGV0LgorCisgICAgRGVyIEtvYm9sZCBrYW5uIHNpY2ggbWF4LiAyNTUgTWl0dGVpbHVuZ2VuIG1lcmtlbiwgc2luZCBkaWVzZQorICAgIHVlYmVyc2Nocml0dGVuLCBnZWhlbiBuZXVlcmUgTWl0dGVpbHVuZ2VuIHZlcmxvcmVuIQorCisgICAgQWJnZWJsb2NrdCB3ZXJkZW4gZm9sZ2VuZGUgTWVsZHVuZ2VuOgorICAgIG1ydWZlLCBFYmVuZW4sIE1pdHRlaWx1bmdlbiAoZXJ6YWVobGUsIHRlaWxlIG1pdCkKKworICAgIE5pY2h0IGFiZ2VibG9ja3Qgd2VyZGVuIGZvbGdlbmRlIE1lbGR1bmdlbjoKKyAgICBzYWdlLCBqZWdsaWNoZSBsb2thbGVuIEVtb3Rpb25lbiBzb3dpZSBzb25zdGlnZSBsb2thbGUgKGFsc28gaW0gc2VsYmVuCisgICAgUmF1bSkgZXJ6ZXVndGUgTWVsZHVuZ2VuLCBydWZlLCAuLi4KKworICAgICpNZXJrZSo6IERlciBLb2JvbGQgZnVua3Rpb25pZXJ0IG51ciwgd2VubiBtYW4gZWluZW4gVGV4dCBsaWVzdCB1bmQgbW9yZQorICAgIGJlbnV0enQgd2lyZCBvZGVyIHdlbm4gbWFuIGVpbmVuIFRleHQgZWRpdGllcnQgKHouQi4gYmVpbSBQb3N0c2NocmVpYmVuLAorICAgIEFydGlrZWxzY2hyZWliZW4pLgorCisgU0lFSEUgQVVDSDoKKyAgICBydWZlLCB0ZWlsZSAobWl0KSwgd2VnLCBlYmVuZW4KKworIExFVFpURSBBZU5ERVJVTkc6CisgICAgMDUuMTAuMjAxMywgWmVzc3RyYQorCmRpZmYgLS1naXQgYS9kb2MvcGNtZC9rdXJ6IGIvZG9jL3BjbWQva3VyegpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5iZTFkOTA3Ci0tLSAvZGV2L251bGwKKysrIGIvZG9jL3BjbWQva3VyegpAQCAtMCwwICsxLDIwIEBACisKK2t1cnoKKy0tLS0KKworIEtPTU1BTkRPOgorICAgIGt1cnoKKworIEFSR1VNRU5URToKKyAgICBrZWluZQorCisgQkVTQ0hSRUlCVU5HOgorICAgIFNjaGFsdGV0IGF1ZiBkZW4gIkt1cnoiLU1vZHVzIHVtLiBXZW5uIER1IERpY2ggaW0gS3Vyem1vZHVzIGJlZmluZGVzdCwKKyAgICBzaWVoc3QgRHUgbnVyIGVpbmUga3VyemUgQmVzY2hyZWlidW5nIGFsbGVyIFJhZXVtZS4gRnVlciBlaW5lIGxhZW5nZXJlCisgICAgQmVzY2hyZWlidW5nIGthbm5zdCBEdSBkYXMgS29tbWFuZG8gYHNjaGF1JyBiZW51dHplbi4KKworIFNJRUhFIEFVQ0g6CisgICAgbGFuZywgdWx0cmFrdXJ6LCBzY2hhdSwgYXVzZ2FlbmdlCisKKyBMRVRaVEUgQWVOREVSVU5HOgorICAgIFRodSwgMjQuMDcuMTk5NywgMDk6MDA6MDAgdm9uIFdhcmdvbgpkaWZmIC0tZ2l0IGEvZG9jL3BjbWQva3VyemluZm8gYi9kb2MvcGNtZC9rdXJ6aW5mbwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5hZjFmZTY4Ci0tLSAvZGV2L251bGwKKysrIGIvZG9jL3BjbWQva3VyemluZm8KQEAgLTAsMCArMSwxNyBAQAorCitrdXJ6aW5mbworLS0tLS0tLS0KKworIEtPTU1BTkRPOgorICAgIGt1cnppbmZvCisgICAga3VyemluZm8gLWsKKworIEJFU0NIUkVJQlVORzoKKyAgICBEaWVzZXMgS29tbWFuZG8gZ2lidCBEZWluZSBha3R1ZWxsZW4gTGViZW5zLSB1bmQgS29uemVudHJhdGlvbnNwdW5rdGUgYXVzLgorICAgICdrdXJ6aW5mbyAtaycgZ2lidCBlaW5lIHZlcmt1ZXJ6dGUgQW5nYWJlIG9obmUgQVNDSUktR3JhcGhpayBhdXMsIGdlbmF1c28gCisgICAgYWxzIGhhZXR0ZXN0IER1IGRlcmVuIEF1c2dhYmUgbWl0ICdncmFmaWsgYXVzJyBhYmdlc2NoYWx0ZXQuCisKKyBTSUVIRSBBVUNIOgorICAgIGluZm8gCQkKKworIDA5LjA4LjIwMDksIFplc3N0cmEKZGlmZiAtLWdpdCBhL2RvYy9wY21kL2t3ZXIgYi9kb2MvcGNtZC9rd2VyCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjdhZjllMGIKLS0tIC9kZXYvbnVsbAorKysgYi9kb2MvcGNtZC9rd2VyCkBAIC0wLDAgKzEsOTAgQEAKKwora3dlcgorLS0tLQorCisgS09NTUFORE86CisgICAga3dlciBbW2FsbGVdIFtpbiA8c3RhZHQ+XSBbcmVnaW9uIDxyZWdpb24+XSBbYmVpIDxzcGllbGVyPl0gW3NwaWVsZXJdCisgICAgICAgICBbc2VoZXJdIFttYWdpZXJdIFtlcnptYWdpZXJdIFtnb2V0dGVyXSBbbWVuc2NoXSBbendlcmddIFtlbGZdCisgICAgICAgICBbZmVsaW5lXSBbaG9iYml0XSBbcmVnaW9uc21pdGFyYmVpdGVyfG1pdGFyYmVpdGVyIDxyZWdpb24+XQorICAgICAgICAgW3JlZ2lvbnNtYWdpZXIgPHJlZ2lvbj5dIFt0ZXN0aWVzXSBbendlaXRpZXNdIFttYWdpZXJ6d2VpdGllc10KKyAgICAgICAgIFtlcndhcnRldGVdIFtnaWxkZSA8Z2lsZGU+XSBbZ2lsZGVubWFnaWVyIDxnaWxkZT5dCisJIFtmcm9zY2hdIFtpZGxlXSBbaWRsZXplaXQgPG1pbj5dIFtpY3FdIFtjaWNlcm9uZV0KKyAgICAgICAgIFt3d3d8dXJsXSBbc3NsfHN0dW5uZWxdIFt1bmR8b2RlcnxhdXNzZXJdIC4uLl0KKworIEFSR1VNRU5URToKKworICAgICA8c3RhZHQ+CisgICAgICAgIE5hbWUgZGVyIGdld3VlbnNjaHRlbiBTdGFkdCAoSGVya3VuZnQgZGVzIExvZ2luKQorICAgICA8cmVnaW9uPgorICAgICAgICBOYW1lIGRlciBnZXd1ZW5zY2h0ZW4gUmVnaW9uIChpbiBNb3JnZW5ncmF1ZW4pCisgICAgIDxzcGllbGVyPgorICAgICAgICBOYW1lIGVpbmVzIFNwaWVsZXJzCisgICAgIDxnaWxkZT4KKyAgICAgICAgTmFtZSBlaW5lciBHaWxkZQorCisgQkVTQ0hSRUlCVU5HOgorICAgIEVzIHdpcmQgZWluZSBrdXJ6ZSBMaXN0ZSBhbGxlciBpbiBNb3JnZW5HcmF1ZW4gYW53ZXNlbmRlbiBTcGllbGVyCisgICAgYXVzZ2VnZWJlbiwgZGFiZWkgd2VyZGVuIGVyd2FydGV0ZSBTcGllbGVyIG1pdCBlaW5lbSB2b3JnZXN0ZWxsdGVuCisgICAgIioiIG1hcmtpZXJ0LgorICAgIEJlaSBha3RpdmllcnRlbSBBTlNJIHNpbmQgTWFnaWVyIHVudGVyc3RyaWNoZW4sIGVyd2FydGV0ZSBTcGllbGVyCisgICAgaW4gcm90IHVuZCBGcm9lc2NoZSBpbiBncnVlbiBhbmdlemVpZ3QuCisgICAgCisKKyAgICBEaWUgQnVjaHN0YWJlbiBhbSBFbmRlIGJlZGV1dGVuOgorCisgICAgIFtzXSAgIFNwaWVsZXIKKyAgICAgW1NdICAgU2VoZXIKKworICAgICBbel0gICBad2VpdHNwaWVsZXIKKyAgICAgW1pdICAgWndlaXRzcGllbGVyIG1pdCBTZWhlcmxldmVsCisgICAgIFtuXSAgIHVuc2ljaHRiYXIgbWFya2llcnRlciBad2VpdHNwaWVsZXIKKyAgICAgW05dICAgdW5zaWNodGJhciBtYXJraWVydGVyIFp3ZWl0c3BpZWxlciBtaXQgU2VoZXJsZXZlbAorCisgICAgIFt0XSAgIFRlc3RzcGllbGVyCisgICAgIFtUXSAgIFRlc3RzcGllbGVyIG1pdCBTZWhlcmxldmVsCisKKyAgICAgW0xdICAgTWFnaWVybGVocmxpbmcKKyAgICAgW21dICAgVm9sbG1hZ2llciwgb2huZSBSZWdpb24KKyAgICAgW01dICAgVm9sbG1hZ2llciwgbWl0IFJlZ2lvbgorICAgICBbSF0gICBIaWxmc21hZ2llcgorICAgICBbUl0gICBSZWdpb25zY2hlZgorICAgICBbV10gICBXZWlzZXIKKyAgICAgW0VdICAgRXJ6bWFnaWVyCisgICAgIFtHXSAgIEdvdHQKKworICAgIERpZSBJbmZvcm1hdGlvbmVuIFtuXSB1bmQgW05dIHNvd2llIGRpZSBMaXN0ZSBkZXIgU1NMLU51dHplciBiZWtvbW1lbiAKKyAgICBudXIgTWFnaWVyLiBEaWUgZGlyZWt0ZSBBYmZyYWdlIGRlciBNYWdpZXJ6d2VpdGllcyBzdGVodCBudXIgCisgICAgRXJ6bWFnaWVybiB6dXIgVmVyZnVlZ3VuZy4KKworICAgIERpZSBJZGxlLVplaXQgaXN0IGFuIGVpbmVtIEJ1Y2hzdGFiZW4gdm9yIGRlbSBMZXZlbCB6dSBlcmtlbm5lbjoKKyAgIAorICAgICBbaV0gICA+IDIgTWludXRlbgorICAgICBbSV0gICA+IDEwIE1pbnV0ZW4KKyAgICAgW2pdICAgPiAzMCBNaW51dGVuCisgICAgIFtKXSAgID4gMTIwIE1pbnV0ZW4KKyAgIAorICAgICJJZGxlIiBiZWRldXRldCwgbGFlbmdlciBrZWluZSBUYXN0ZSB6dSBiZXRhZXRpZ2VuLgorCisgICAgIFt3XSAgIERlciBTcGllbGVyIGhhdCBlaW5lIFdFRy1NZWxkdW5nIGdlc2V0enQuCisKKyAgICBEaXJla3Qgdm9yIGRlciBJZGxlemVpdCBpc3QgenUgZXJrZW5uZW4sIG9iIGRlciBTcGllbGVyIGRlbgorICAgIEhhcmRjb3JlbW9kdXMgc3BpZWx0OgorICAgICBbY10gICBEZXIgU3BpZWxlciBzcGllbHQgSGFyZGNvcmUgdW5kIGlzdCBub2NoIGFtIExlYmVuLgorICAgICBbK10gICBEZXIgU3BpZWxlciBzcGllbHQgSGFyZGNvcmUgdW5kIGlzdCBiZXJlaXRzIHZlcnN0b3JiZW4uCisKKyAgICBNYW4ga2FubiBkaWUgQXVzZ2FiZSBhdWYgZ2V3aXNzZSBHcnVwcGVuIGVpbnNjaHJhZW5rZW4sIGRpZXNlIEdydXBwZW4KKyAgICBrb2VubmVuIG1pdCBgdW5kJywgYG9kZXInIHVuZCBgYXVzc2VyJyB2ZXJrbnVlcGZ0IHdlcmRlbi4gRGllcyBnZXNjaGllaHQKKyAgICBtaXQgTGlua3NrbGFtbWVydW5nIChhbHNvIGBhIG9kZXIgYiB1bmQgYycgd2lyZCBhbHMgYChhIG9kZXIgYikgdW5kIGMnCisgICAgaW50ZXJwcmV0aWVydCkuCisKKyBCRUlTUElFTEU6CisKKyAgICA+IGt3ZXIgYWxsZSBhdXNzZXIgZ29ldHRlcgorICAgID4ga3dlciBpbiBtdWVuc3RlciBvZGVyIGluIGtvZWxuIHVuZCBzZWhlcgorCisgU0lFSEUgQVVDSDoKKyAgICB3ZXIsIGtrd2VyLCBvcnQKKworIExFVFpURSBBZU5ERVJVTkc6CisgICAgMjAxNS0xMi0wMiwgQXJhdGhvcm4KKwpkaWZmIC0tZ2l0IGEvZG9jL3BjbWQvbGFuZyBiL2RvYy9wY21kL2xhbmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYjc1ZGViYQotLS0gL2Rldi9udWxsCisrKyBiL2RvYy9wY21kL2xhbmcKQEAgLTAsMCArMSwxOSBAQAorCitsYW5nCistLS0tCisKKyBLT01NQU5ETzoKKyAgICBsYW5nCisKKyBBUkdVTUVOVEU6CisgICAga2VpbmUKKworIEJFU0NIUkVJQlVORzoKKyAgICBTY2hhbHRldCBhdWYgZGVuICJMYW5nIi1Nb2R1cyB1bS4gSW0gTGFuZ21vZHVzIHNpZWhzdCBEdSBkaWUga29tcGxldHRlCisgICAgQmVzY2hyZWlidW5nIGRlciBSYWV1bWUsIGRpZSBEdSBiZXRyaXR0c3QuCisKKyBTSUVIRSBBVUNIOgorICAgIGt1cnosIHVsdHJha3Vyeiwgc2NoYXUsIGF1c2dhZW5nZQorCisgTEVUWlRFIEFlTkRFUlVORzoKKyAgICBUaHUsIDI0LjA3LjE5OTcsIDA5OjAwOjAwIHZvbiBXYXJnb24KZGlmZiAtLWdpdCBhL2RvYy9wY21kL2xhdXNjaGUgYi9kb2MvcGNtZC9sYXVzY2hlCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmRjZGU3NWUKLS0tIC9kZXYvbnVsbAorKysgYi9kb2MvcGNtZC9sYXVzY2hlCkBAIC0wLDAgKzEsMzIgQEAKKworbGF1c2NoKGUpIChhbikKKy0tLS0tLS0tLS0tLS0tCisKK0tPTU1BTkRPCisJbGF1c2NoKGUpCisJbGF1c2NoKGUpIDx3YXM+IFthbiA8b2JqZWt0PiB8IGFtIDxvYmpla3Q+XSBbaW4gbWlyIHwgaW0gcmF1bV0KKworQVJHVU1FTlRFCisJPG9iamVrdD4KKwkgIEVpbiBHZWdlbnN0YW5kIGJ6dy4gTGViZXdlc2VuLCBhbiBkZW0gbGF1c2NoZW4gd2lsbC4KKworQkVTQ0hSRUlCVU5HCisJYGxhdXNjaCcgYnp3LiBgbGF1c2NoZScgaXN0IGRhcyBhbGxnZW1laW5lIEtvbW1hbmRvLCB1bSBHZXJhZXVzY2hlCisJYW4gR2VnZW5zdGFlbmRlbiwgTGViZXdlc2VuIG9kZXIgaW4gUmFldW1lbiB3YWhyenVuZWhtZW4uIEhpZXJiZWkKKwlsYWVzc3QgYGxhdXNjaChlKScgb2huZSBBcmd1bWVudGUgZGVuIFNwaWVsZXIgZGllIEhhdXB0Z2VyYWV1c2NoZSBpbgorCWRlbSBSYXVtIHdhaHJuZWhtZW4sIGluIGRlbSBlciBzaWNoIGRlcnplaXQgYmVmaW5kZXQuIEFuIGFsbGVuCisJYW5kZXJlbiBHZWdlbnN0YWVuZGVuIGJ6dy4gTGViZXdlc2VuIGltIHNlbGJlbiBSYXVtIG9kZXIgaW0gZWlnZW5lbgorCUludmVudGFyIGthbm4gbWFuIG1pdCBgbGF1c2NoKGUpIChhbiknIGViZW5mYWxscyBHZXJhZXVzY2hlCisJd2Focm5laG1lbi4gTmljaHQgaW1tZXIga2FubiBtYW4gamVkb2NoIGV0d2FzIEJlc29uZGVyZXMgaG9lcmVuLgorCisJRGEgYmVpIE9iamVrdGVuIG1pdCBnbGVpY2hlbiBHZXJhZXVzY2hhcnRlbiB6dWVyc3QgYW4gaW0gUmF1bQorCWxpZWdlbmRlbiBPYmpla3QgZ2VsYXVzY2h0IHdpcmQsIGthbm4gbWFuIGFuIFNhY2hlbiwgZGllIG1hbiBiZWkKKwlzaWNoIHRyYWVndCwgYXVmIGFsbGUgRmFlbGxlIG1pdCBkZW0gWnVzYXR6IGBpbiBtaXInIGxhdXNjaGVuLgorCitTSUVIRSBBVUNIOgorICBiZXp1Z3NwdW5rdAorICBzY2hhdSwgcmllY2hlLCB0YXN0ZSwgbGllcworCitMRVRaVEUgQUVOREVSVU5HRU46CisgIDE4LjAxLjIwMTMsIFplc3N0cmEKKwpkaWZmIC0tZ2l0IGEvZG9jL3BjbWQvbGllcyBiL2RvYy9wY21kL2xpZXMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOTA0NWJlYgotLS0gL2Rldi9udWxsCisrKyBiL2RvYy9wY21kL2xpZXMKQEAgLTAsMCArMSw1MSBAQAorCitsaWVzCistLS0tCisKK0tPTU1BTkRPCisJbGllcyA8d2FzPiBbYW4gPG9iamVrdD4gfCBhbSA8b2JqZWt0Pl0gW2luIG1pciB8IGltIHJhdW1dCisKK0FSR1VNRU5URQorICA8d2FzPgorICAgIE5hbWUgZWluZXMgR2VnZW5zdGFuZGVzLCBMZWJld2VzZW5zIG9kZXIgRGV0YWlsLCB3ZWxjaGVzIG1hbiBsZXNlbiB3aWxsLgorCTxvYmpla3Q+CisJICBFaW4gR2VnZW5zdGFuZCBvZGVyIGVpbiBMZWJld2VzZW4sIGFuIGRlbSBtYW4gbGVzZW4gd2lsbC4KKworQkVTQ0hSRUlCVU5HCisgICdsaWVzJyBpc3QgZGFzIGFsbGdlbWVpbmUgS29tbWFuZG8sIHVtIGxlc2JhcmUgRGV0YWlscyBhbiBHZWdlbnN0YWVuZGVuLAorICBMZWJld2VzZW4gb2RlciBpbiBSYWV1bWVuICh6LkIuIGVpbiBTY2hpbGQgYW4gZWluZW0gUnVja3NhY2spIG9kZXIgYW4gc2ljaAorICBsZXNiYXJlIEdlZ2Vuc3RhZW5kZSAoei5CLiBlaW5lIFNjaHJpZnRyb2xsZSkgd2Focnp1bmVobWVuLgorCisgIERhIGJlaSBPYmpla3RlbiBtaXQgZ2xlaWNoZW4gbGVzYmFyZW4gRGV0YWlscyB6dWVyc3QgZGllIGltIFJhdW0gbGllZ2VuZGVuCisgIE9iamVrdGUgZ2VsZXNlbiB3ZXJkZW4sIGthbm4gbWFuIGFuIFNhY2hlbiwgZGllIG1hbiBiZWkgc2ljaCB0cmFlZ3QsIGF1ZgorICBhbGxlIEZhZWxsZSBtaXQgZGVtIFp1c2F0eiBgaW4gbWlyJyByaWVjaGVuLgorCisgIERhcyBLb21tYW5kbyBiZW51dHp0IGdnZi4gZGFzIGF1cyBkZW0gS29tbWFuZG8gJ3NjaGF1JyBiencuICd1bnRlcnN1Y2hlJworICBiZWthbm50ZSBCZXp1Z3NvYmpla3QuCisKK0JFSVNQSUVMRToKKyAgPiBsaWVzIHRhZmVsCisKKyAgPiBsaWVzIHRhZmVsIGluIHJhdW0KKworICA+IGxpZXMgd2lkbXVuZyBhbiBidWNoc3R1ZXR6ZW4gaW4gbWlyCisgIAorICA+IGxpZXMgc2NoaWxkIGFuIGJpZW5lIGluIHJhdW0KKworICA+IGxpZXMgYnVjaCBpbiBwYWtldAorCisgID4gdW50IHBha2V0CisgID4gbGllcyBpbmRleCBhbiBidWNoCisgIChMaWVndCBlaW4gQnVjaCBtaXQgbGVzYmFyZW0gRGV0YWlsICJpbmRleCIgaW0gUGFrZXQsIGxpZXN0IG1hbiBkaWVzZW4gbWl0CisgICBkZW0gendlaXRlbiBLb21tYW5kby4pCisKKyAgPiBsaWVzIGluZGV4IGFuIGJ1Y2ggaW4gcGFrZXQgaW4gcmF1bQorICAoTGllc3QgZGVuIEluZGV4IGVpbmVzIEJ1Y2hlcyBpbiBlaW5lbSBQYWtldCBpbSBSYXVtLikKKworU0lFSEUgQVVDSDoKKyAgYmV6dWdzcHVua3QKKyAgc2NoYXUsIHJpZWNoZSwgbGF1c2NoZSwgdGFzdGUKKworTEVUWlRFIEFFTkRFUlVOR0VOOgorICAxOC4wMS4yMDEzLCBaZXNzdHJhCisKZGlmZiAtLWdpdCBhL2RvYy9wY21kL21lc3NlbmdlciBiL2RvYy9wY21kL21lc3NlbmdlcgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi43OTEzOGVmCi0tLSAvZGV2L251bGwKKysrIGIvZG9jL3BjbWQvbWVzc2VuZ2VyCkBAIC0wLDAgKzEsMzcgQEAKKworbWVzc2VuZ2VyCistLS0tLS0tLS0KKworIEtPTU1BTkRPOgorICAgIG1lc3NlbmdlciBbPGlkPl0KKworIEFSR1VNRU5URToKKworICAgICA8aWQ+IChvcHRpb25hbCkKKyAgICAgICAgRGllIG5ldWUgTWVzc2VuZ2VyLUlECisKKyBCRVNDSFJFSUJVTkc6CisgICAgV2VubiBEdSBlaW5lbiBNZXNzZW5nZXItRGllbnN0IGJlbnV0enQsIHNvIGthbm5zdCBEdSBkb3J0CisgICAgRGVpbmUgSUQgZWludHJhZ2VuLiBFcyB3aXJkIGVpbmZhY2ggZGVyIFRleHQgZ2VzcGVpY2hlcnQsIGRlbgorICAgIER1IHVlYmVyZ2lic3QgdW5kIGRhbm4gYmVpbSBmaW5nZXItQmVmZWhsIGFuZ2V6ZWlndC4gRHUgc29sbHRlc3QKKyAgICBhbHNvIG1pdCBoaW56dXNjaHJlaWJlbiwgdW0gd2VsY2hlbiBEaWVuc3QgZXMgc2ljaCBoYW5kZWx0LiAKKworICAgIFdpcmQga2VpbiBQYXJhbWV0ZXIgdWViZXJnZWJlbiwgc28gd2lyZCBkZXIgYWt0dWVsbGUgRWludHJhZworICAgIGFuZ2V6ZWlndC4gR2lic3QgRHUgImtlaW5lIiBvZGVyICJsb2VzY2hlbiIgYW4sIHdpcmQgZGVyCisgICAgRWludHJhZyBnZWxvZXNjaHQuCisKKyAgICBIaW53ZWlzIHp1bSBadXNhbW1lbnNwaWVsIG1pdCBkZW0gQmVmZWhsIElDUS4gSGFzdCBEdSB6dWdsZWljaAorICAgIGF1Y2ggZWluZSBJQ1EtTnVtbWVyIGdlc2V0enQsIHNvIHdpcmQgZGllc2UgYXV0b21hdGlzY2ggaW0KKyAgICBGaW5nZXItQmVmZWhsIG1pdCBhbmdlZ2ViZW4uIAorCisgQkVJU1BJRUxFOgorCisgICAgbWVzc2VuZ2VyIElDUTogMTIzNCAgIAorICAgIG1lc3NlbmdlciBNU046IGZvb0BiYXIuY29tCisKKyBTSUVIRSBBVUNIOgorICAgIFBlcnNvZW5saWNoZSBEZXRhaWxzOiBlbWFpbCwgdXJsLCBpY3EsIG9ydAorICAgIFNvbnN0aWdlczogICAgICAgICAgICBmaW5nZXIKKworIExFVFpURSBBRU5ERVJVTkc6CisgICAgMjAwNi0wMS0wNSB2b24gWm9vay4KZGlmZiAtLWdpdCBhL2RvYy9wY21kL21ydWZlIGIvZG9jL3BjbWQvbXJ1ZmUKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uM2IxNjRjZQotLS0gL2Rldi9udWxsCisrKyBiL2RvYy9wY21kL21ydWZlCkBAIC0wLDAgKzEsMzcgQEAKKworbXJ1ZmUKKy0tLS0tCisKKyBLT01NQU5ETzoKKyAgICBtcnVmZSA8dGV4dD4KKworIEFSR1VNRU5URToKKworICAgICA8dGV4dD4KKyAgICAgICAgRGVyIFRleHQsIGRlciBhbiBkaWUgTWFnaWVyIGdlcnVmZW4gd2lyZAorCisgQkVTQ0hSRUlCVU5HOgorICAgIERpZSBNZWxkdW5nIDx0ZXh0PiB3aXJkIGFuIGFsbGUgZWluZ2Vsb2dndGVuIE1hZ2llciBhdXNnZWdlYmVuLgorCisgICAgRGllc2VyIEJlZmVobCBkYXJmIG51ciBpbiBOT1RGQUVMTEVOIHZlcndlbmRldCB3ZXJkZW4hISEKKworICAgIE5vdGZhZWxsZSBzaW5kIHouQi4gZmVobGVyaGFmdGUgUmFldW1lLCBhdXMgZGVuZW4gbWFuIG5pY2h0IG1laHIKKyAgICBoZXJhdXNrb21tdCwgby5hZS4gKCphYmVyKjogbmljaHQgamVkZXIgUmF1bSBvaG5lIHNpY2h0YmFyZSBBdXNnYWVuZ2UgaXN0CisgICAgZmVobGVyaGFmdCEpIE1hbiBzb2xsdGUgc2ljaCBlcnN0IHZlcmdld2lzc2Vybiwgb2IgbWFuIHdpcmtsaWNoCisgICAgZmVzdHN0ZWNrdC4KKworICAgIEtlaW4gTm90ZmFsbCBpc3Qgei5CLiBlaW4gbXJ1ZmUsIHdlbm4gbWFuIGVpbmVuIEJyaWVmIGFuIGVpbmVuIE1hZ2llcgorICAgIHp1c3RlbGxlbiB3aWxsLgorICAgIE1pc3NicmFldWNobGljaGUgQmVudXR6dW5nIGRpZXNlcyBCZWZlaGxzIHNvcmd0IGRhZnVlciwgZGFzcyBzaWNoIGRpZQorICAgIE1hZ2llciBhdWNoIGluIHdpcmtsaWNoZW4gTm90bGFnZW4gbmljaHQgbWVociB1bSBkYXMgZ2VgbXJ1ZmUnIGt1ZW1tZXJuLAorICAgIHNvbmRlcm4gc2ljaCBrb2VzdGxpY2ggdWViZXIgZGllIFNwaWVsZXIgYW11ZXNpZXJlbi4gRXMgbGllZ3QgYWxzbyBiZWkKKyAgICBldWNoLCB3aWUgZXJuc3QgaWhyIGdlbm9tbWVuIHdlcmRlbiBtb2VjaHRldC4KKworICAgIE1hZ2llciBzb2xsdGVuIGxpZWJlciBkaWUgTWFnaWVyZWJlbmUgdmVyd2VuZGVuICgtTWFnaWVyKykuCisKKyBTSUVIRSBBVUNIOgorICAgIHRlaWxlIChtaXQpLCBlYmVuZW4KKworIExFVFpURSBBZU5ERVJVTkc6CisgMTYuMDkuMjAwOCwgWmVzc3RyYQorCmRpZmYgLS1naXQgYS9kb2MvcGNtZC9tdWRzIGIvZG9jL3BjbWQvbXVkcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5mOWFhNjdlCi0tLSAvZGV2L251bGwKKysrIGIvZG9jL3BjbWQvbXVkcwpAQCAtMCwwICsxLDIwIEBACisKK211ZHMKKy0tLS0KKworIEtPTU1BTkRPOgorICAgIG11ZHMKKworIEFSR1VNRU5URToKKyAgICBrZWluZQorCisgQkVTQ0hSRUlCVU5HOgorICAgIEdpYnQgZWluZSBMaXN0ZSBkZXIgTVVEcyBhdXMsIG1pdCBkZW5lbiBEdSB2b24gaGllciBhdXMgS29udGFrdCBhdWZuZWhtZW4KKyAgICBrYW5uc3QuIERhenUgZ2Vob2VyZW4gei5CLiBkaWUgQWJmcmFnZSBkZXIgQW53ZXNlbmhlaXRzbGlzdGUsIGRhcworICAgIFZlcnNlbmRlbiB2b24gTWl0dGVpbHVuZ2VuIG9kZXIgZGllIEluZm9ybWF0aW9uIHVlYmVyIFNwaWVsZXIuCisKKyBTSUVIRSBBVUNIOgorICAgIHdlciwgdGVpbGUgKG1pdCksIGZpbmdlcgorCisgTEVUWlRFIEFlTkRFUlVORzoKKyAgICBUaHUsIDI0LjA3LjE5OTcsIDA5OjAwOjAwIHZvbiBXYXJnb24KZGlmZiAtLWdpdCBhL2RvYy9wY21kL25pbW0gYi9kb2MvcGNtZC9uaW1tCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjAzOWYwYTUKLS0tIC9kZXYvbnVsbAorKysgYi9kb2MvcGNtZC9uaW1tCkBAIC0wLDAgKzEsMzQgQEAKKworbmltbSBbYXVzXQorLS0tLS0tLS0tLQorCisgS09NTUFORE86CisgICAgbmltbSA8b2JqZWt0PiBbYXVzIDxiZWhhZWx0ZXI+XQorICAgIG5pbW0gYWxsZXMgW2F1cyA8YmVoYWVsdGVyPl0KKworIEFSR1VNRU5URToKKworICAgICA8b2JqZWt0PgorICAgICAgICBEZXIgenUgbmVobWVuZGUgR2VnZW5zdGFuZAorICAgICA8YmVoYWVsdGVyPiAob3B0aW9uYWwpCisgICAgICAgIERlciBCZWhhZWx0ZXIsIGluIGRlbSBzaWNoIGRhcyBPYmpla3QgZGVyIEJlZ2llcmRlIGJlZmluZGV0CisKKyBCRVNDSFJFSUJVTkc6CisgICAgTWFuIG5pbW10IGRlbiBHZWdlbnN0YW5kIDxvYmpla3Q+IHZvbSBCb2RlbiBhdWYgb2RlciBhdXMgZWluZW0gPGJlaGFlbHRlcj4KKyAgICBoZXJhdXMuCisKKyAgICBXYWVobHQgbWFuIGFscyA8b2JqZWt0PiBgYWxsZXMnLCBzbyBuaW1tdCBtYW4gYWxsZXMsIHdhcyBzaWNoIG5laG1lbgorICAgIGxhZXNzdCAoc293ZWl0IG1hbiBlcyBub2NoIHRyYWdlbiBrYW5uKS4KKworICAgIE1pdCAnbmltbSBiZWhhbHRlbmVzJyBrYW5uIG1hbiBhbGxlIEdlZ2Vuc3RhZW5kZSwgZGllIG1hbiBmcnVlaGVyCisgICAgZWlubWFsICJiZWhhbHRlbiIgKHMuICdiZWhhbHRlJykgaGF0LCBhdXMgZGVtIGFrdHVlbGxlbiBSYXVtIGF1Zm5laG1lbi4KKyAgICBTdGVodCBtYW4gaW4gZWluZW0gUmF1bSwgd28gbWFuIGdlc3RvcmJlbiBpc3QgdW5kIGxpZWd0IGRvcnQgZGVyIGVpZ2VuZQorICAgIEtyYW0gaW4gRm9ybSBlaW5lcyAiSGF1ZmVuIEtyZW1wZWxzIiwga2FubiBtYW4gbWl0dGVscyAnbmltbSBlaWdlbmVzJworICAgIGFsbGVzIGF1cyBkaWVzZW0gKHVuZCBudXIgZGllc2VtKSBIYXVmZW4gYXVmbmVobWVuLiBEaWVzZXMgc2NobGllc3N0CisgICAgdWVicmlnZW5zICduaW1tIGJlaGFsdGVuZXMnIGVpbi4KKworIFNJRUhFIEFVQ0g6CisgICAgc3RlY2tlIChpbiksIGhvbGUgKGF1cyksIHdpcmYgKHdlZyksIGJlaGFsdGUKKworIExFVFpURSBBZU5ERVJVTkc6CisgICAgMjQuMDUuMjAwNywgWmVzc3RyYQpkaWZmIC0tZ2l0IGEvZG9jL3BjbWQvb3J0IGIvZG9jL3BjbWQvb3J0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjQ3MjAwM2IKLS0tIC9kZXYvbnVsbAorKysgYi9kb2MvcGNtZC9vcnQKQEAgLTAsMCArMSwyNyBAQAorCitvcnQKKy0tLQorCisgS09NTUFORE86CisgICAgb3J0IFs8bmFtZT58bG9lc2NoZW5dCisKKyBBUkdVTUVOVEU6CisKKyAgICAgPG5hbWU+IChvcHRpb25hbCkKKyAgICAgICAgRGVyIG5ldWUgT3J0c25hbWUKKyAgICAgbG9lc2NoZW4gKG9wdGlvbmFsKQorICAgICAgICBMb2VzY2h0IGRlbiBnZXNldHp0ZW4gT3J0c25hbWVuIHdpZWRlcgorCisgQkVTQ0hSRUlCVU5HOgorICAgICBXZW5uIER1IGF1cyBlaW5lbSBPcnQga29tbXN0LCBkZXIgbmljaHQgYXV0b21hdGlzY2ggZXJrYW5udAorICAgICB3ZXJkZW4ga2Fubiwga2FubnN0IER1IG1pdCBkaWVzZW0gQmVmZWhsIGVpbnRyYWdlbiwgdm9uCisgICAgIHdvaGVyIER1IFdJUktMSUNIIGtvbW1zdC4KKyAgICAgRGllIEFuZ2FiZSB3aXJkIGxlZGlnbGljaCBhbHMgenVzYWV0emxpY2hlIEluZm9ybWF0aW9uIGJlaW0KKyAgICAgImZpbmdlciItQmVmZWhsIGFuZ2V6ZWlndCBzb3dpZSB3YWhsd2Vpc2UgYmVpICJ3ZXIiLgorICAgICBGYWxscyBEdSB6LkIuIGF1cyBGcmFua2Z1cnQgZWluZ2Vsb2dndCBiaXN0IHVuZCBhbHMgT3J0IE11ZW5jaGVuCisgICAgIGFuZ2lic3QsIHdpcnN0IER1IHNvd29obCBiZWkgImt3ZXIgaW4gZnJhbmtmdXJ0IiBhbHMgYXVjaCBiZWkKKyAgICAgImt3ZXIgaW4gbXVlbmNoZW4iIGdlZnVuZGVuLgorICAgICAKKyBTSUVIRSBBVUNIOgorICAgIFBlcnNvZW5saWNoZSBEZXRhaWxzOiBlbWFpbCwgdXJsLCBpY3EsIG1lc3NlbmdlcgorICAgIFNvbnN0aWdlczogICAgICAgICAgICBmaW5nZXIsIHdlciwga3dlcgpkaWZmIC0tZ2l0IGEvZG9jL3BjbWQvcGFzc3dvcnQgYi9kb2MvcGNtZC9wYXNzd29ydApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4xOTFiNWIyCi0tLSAvZGV2L251bGwKKysrIGIvZG9jL3BjbWQvcGFzc3dvcnQKQEAgLTAsMCArMSwyMCBAQAorCitwYXNzd29ydAorLS0tLS0tLS0KKworIEtPTU1BTkRPOgorICAgIHBhc3N3b3J0CisgICAgcGFzc3dvcmQKKyAgICBwYXNzd2QKKworIEFSR1VNRU5URToKKyAgICBrZWluZQorCisgQkVTQ0hSRUlCVU5HOgorICAgIEFlbmRlcnQgZGFzIFBhc3N3b3J0LiBadXIgU2ljaGVyaGVpdCBtdXNzIHp1ZXJzdCBkYXMgYWx0ZSBQYXNzd29ydAorICAgIGVpbmdlZ2ViZW4gd2VyZGVuLiBEYXJhdWZoaW4gd2lyZCBkYXMgbmV1ZSBQYXNzd29ydCB6d2VpbWFsIGVyZnJhZ3QuIERhcworICAgIFBhc3N3b3J0IHdpcmQgbnVyIGRhbm4gZ2VhZW5kZXJ0LCB3ZW5uIGRpZSBiZWlkZW4gRWluZ2FiZW4gZGVzIG5ldWVzCisgICAgUGFzc3dvcnRlcyB1ZWJlcmVpbnN0aW1tZW4uCisKKyBMRVRaVEUgQWVOREVSVU5HOgorICAgIFRodSwgMjQuMDcuMTk5NywgMDk6MDA6MDAgdm9uIFdhcmdvbgpkaWZmIC0tZ2l0IGEvZG9jL3BjbWQvcmVpc2UgYi9kb2MvcGNtZC9yZWlzZQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi42ZTQ2MWEzCi0tLSAvZGV2L251bGwKKysrIGIvZG9jL3BjbWQvcmVpc2UKQEAgLTAsMCArMSwxMDMgQEAKK0tPTU1BTkRPOgorICAgICAgICByZWlzZQorICAgICAgICByZWlzZSByb3V0ZQorICAgICAgICByZWlzZSBbbWl0IHRyYW5zcG9ydG1pdHRlbF0gbmFjaHx6dXx6dW18enVyfGluc3xhbnMgKHppZWxvcnQpCisgICAgICAgIHJlaXNlIGF1c3xuaWNodAorCitBUkdVTUVOVEU6CisgICAgICAgIDx0cmFuc3BvcnRtaXR0ZWw+ICAgICAgIEVpbiBUcmFuc3BvcnRtaXR0ZWwgRGVpbmVyIFdhaGwKKyAgICAgICAgPHppZWxvcnQ+ICAgICAgICAgICAgICAgRGVpbiBSZWlzZXppZWwKKworRlVOS1RJT046CisgICAgICAgV2VubiBEdSBEZWluIFJlaXNlemllbCAob2RlciBkYXMgVmVya2VocnNtaXR0ZWwpIGJlcmVpdHMKKyAgICAgICBrZW5uc3QsIGthbm5zdCBEdSBtaXQgZGllc2VtIEJlZmVobCBEZWluZSBSZWlzZSBlaW5mYWNoZXIKKyAgICAgICBnZXN0YWx0ZW4uCisgICAgICAgCisgICAgICAgQmVudXR6dCBEdSBkZW4gcmVpc2UtQmVmZWhsLCBzbyB3aXJzdCBEdSBhdXRvbWF0aXNjaCBlaW4KKyAgICAgICBUcmFuc3BvcnRtaXR0ZWwgYmV0cmV0ZW4gKGZhbGxzIGRpZXMgbW9lZ2xpY2ggaXN0KSB1bmQgZXMKKyAgICAgICBhbSBaaWVsb3J0IChmYWxscyBhbmdlZ2ViZW4pIGF1Y2ggd2llZGVyIHZlcmxhc3Nlbi4KKworICAgICAgIEZvbGdlbmRlIEFyZ3VtZW50ZSAvIEZ1bmt0aW9uZW4gd2VyZGVuIHVudGVyc3R1ZXR6dDoKKworcmVpc2UgCisgICAgICAgRGVpbmUgYWt0dWVsbGUgUmVpc2Vyb3V0ZSB3aXJkIGF1c2dlZ2ViZW4uIER1IGthbm5zdCBzaWUgbWl0CisgICAgICAgby5nLiBBcmd1bWVudGVuIGltbWVyIHdpZWRlciBhZW5kZXJuLgorCityZWlzZSByb3V0ZToKKyAgICAgICBEYW1pdCBrYW5uc3QgRHUgZmVzdHN0ZWxsZW4sIHdlbGNoZSBWZXJrZWhyc21pdHRlbCB2ZXJrZWhyZW4gCisgICAgICAgdW5kIHdlbGNoZSBSb3V0ZW4gc2llIGFuYmlldGVuLgorCityZWlzZSBtaXQgPHh4eD4gbmFjaHx6dXx6dW18enVyfGluc3xhbnMgPHp6ej46CisgICAgICAgRGllIHdvaGwgZ2VuYXVlc3RlIE1vZWdsaWNoa2VpdCwgZWluZSBSZWlzZXJvdXRlIGZlc3R6dWxlZ2VuLgorCisgICAgICAgeHh4IHN0ZWh0IGhpZXIgZnVlciBlaW5lIGVpbmRldXRpZ2UgS2VubnplaWNobnVuZyBkZXMgVHJhbnNwb3J0LQorICAgICAgIG1pdHRlbHMgKHouQi4gJ3BpcmF0ZW5zY2hpZmYnIHN0YXR0ICdzY2hpZmYnKS4KKworICAgICAgIHp6eiBiZW5lbm50IGRlbiBnZW5hdWVuIFppZWxvcnQgKHouQi4gJ3Nvbm5lbmluc2VsJyBzdGF0dCAnaW5zZWwnKS4KKworICAgICAgIFBhc3NlbiBtZWhyZXJlIFRyYW5zcG9ydGVyIChvZGVyIFppZWxvcnRlKSBhdWYgZGllIHZvbiBEaXIgCisgICAgICAgYW5nZWJlbmVuIE5hbWVuLCBzbyB3aXJkIGRlciBuYWVjaHN0bW9lZ2xpY2hlIFRyYW5zcG9ydGVyIHVuZAorICAgICAgIGRhcyBuYWVjaHN0Z2VsZWdlbmUgWmllbCBhdXNnZXdhZWhsdC4KKworICAgICAgIERpZSBCZXplaWNobnVuZyBmdWVyIDx6eno+IHJlYWdpZXJ0IHRlaWx3ZWlzZSBuaWNodCBhdWYgdW50ZXItCisgICAgICAgc2NoaWVkbGljaGUgU2NocmVpYndlaXNlbi4gQW0gYmVzdGVuLCBEdSBuaW1tc3QgaW1tZXIgZGllLCBkaWUgCisgICAgICAgYXVjaCBiZWkgJ3JlaXNlIHJvdXRlJyBhbmdlZ2ViZW4gd2lyZC4KKworcmVpc2UgbWl0IDx4eHg+OgorICAgICAgIEhpZXIgbGVnc3QgRHUgbnVyIGZlc3QsIFdPTUlUIER1IGZhaHJlbiB3aWxsc3QuIER1IGZhZWhyc3Qgc29sYW5nZQorICAgICAgIG1pdCB4eHgsIGJpcyBEdSBkZW4gVHJhbnNwb3J0ZXIgZWlnZW5oYWVuZGlnIHZlcmxhZXNzdCwgb2RlciBlaW5lbiAKKyAgICAgICBaaWVsb3J0IG1pdHRlbHMgJ3JlaXNlIG5hY2ggenp6JyBhbmdpYnN0LgorCityZWlzZSBuYWNoIDx6eno+OgorICAgICAgIEhpZXIgbGVnc3QgRHUgbnVyIGZlc3QsIFdPSElOIER1IGZhaHJlbiB3aWxsc3QuIERhcyBUcmFuc3BvcnRtaXR0ZWwKKyAgICAgICB3aXJkIGF1dG9tYXRpc2NoIGVybWl0dGVsdCwgd29iZWkgYW53ZXNlbmRlIFRyYW5zcG9ydGVyIG5hdHVlcmxpY2gKKyAgICAgICBiZXZvcnp1Z3Qgd2VyZGVuLgorCisgICAgICAgRGEgPHp6ej4gbmljaHQgaW1tZXIgYXVmIHVudGVyc2NoaWVkbGljaGUgU2NocmVpYndlaXNlbiByZWFnaWVydCwgCisgICAgICAgbmltbXN0IER1IGFtIGJlc3RlbiBkaWUgQmV6ZWljaG51bmcsIGRpZSBhdWNoIGJlaSAncmVpc2Ugcm91dGUnCisgICAgICAgYW5nZWdlYmVuIHdpcmQuCisKK3JlaXNlIGF1c3xuaWNodDoKKyAgICAgICBNaXQgZGllc2VtIEJlZmVobCBsb2VzY2hzdCBEdSBEZWluZSBSZWlzZXJvdXRlLiBEdSBtdXNzdCBkYXMKKyAgICAgICBnZXd1ZW5zY2h0ZSBUcmFuc3BvcnRtaXR0ZWwgZGFubiB3aWVkZXIgcGVyIEhhbmQgYmV0cmV0ZW4gdW5kIAorICAgICAgIHZlcmxhc3Nlbi4KKworQkVNRVJLVU5HRU46CisgICAgICAgRWluZSBmZXN0Z2VsZWd0ZSBSZWlzZXJvdXRlIGlzdCBudXIgZG9ydCB3aXJrc2FtLCB3byBEdSBzaWUgCisgICAgICAgZmVzdGdlbGVndCBoYXN0LiBOYWNoIGVyZm9sZ3JlaWNoZXIgUmVpc2Ugd2lyZCBzaWUgYXV0b21hdGlzY2ggCisgICAgICAgZ2Vsb2VzY2h0LCBhbnNvbnN0ZW4gYmxlaWJ0IHNpZSBiaXMgenVtIGV4cGxpeml0ZW4gTG9lc2NoZW4gCisgICAgICAgYmVzdGVoZW4uCisKKyAgICAgICBOaWNodCBqZWRlcyBUcmFuc3BvcnRtaXR0ZWwgLyBaaWVsIGthbm4gbWl0dGVscyAncmVpc2UnIGF1c2dlLQorICAgICAgIHdhZWhsdCB3ZXJkZW4uIEVzIGJlc3RlaHQga2VpbmVybGVpIEFuc3BydWNoIGRhcmF1ZiwgZGFzICdyZWlzZScKKyAgICAgICB1ZWJlcmFsbCB6dSBmdW5rdGlvbmllcmVuIGhhdC4KKworQkVJU1BJRUxFOgorICAgICAgIHJlaXNlIGlucyB2ZXJsb3JlbmUgbGFuZAorICAgICAgIAorICAgICAgIHJlaXNlIGFucyBlbmRlIGRlciB3ZWx0CisgICAgICAgcmVpc2UgenVtIGVuZGUgZGVyIHdlbHQKKyAgICAgICAKKyAgICAgICByZWlzZSBuYWNoIHBvcnQgdmFpbgorICAKKyAgICAgICBFaW5pZ2UgWmllbG9ydGUgc2luZCBhdWNoIHBlciBLdWVyemVsIHp1IGVycmVpY2hlbjoKKyAgICAgICAtIFZlcmxvcmVuZXMgTGFuZDogdmxhbmQKKyAgICAgICAtIFdlcndvbGZpbnNlbDogd3dpCisgICAgICAgLSBQb3J0IFZhaW46IHB2CisgICAgICAgLSBBa2hhciBOdGgndGFyOiB0aQorICAgICAgIC0gSW5zZWwgYW0gRW5kZSBkZXIgV2VsdDogZWR3LCBpYWVkdywgd2VsdGVuZGUKKyAgICAgICAtIEZldWVyaW5zZWw6IGZpCisgICAgICAgLSBNYWdpZWluc2VsOiBtaW5zZWwKKyAgICAgICAtIEluc2VsIGRlciBUb3RlbjogaWR0LCB0b3Rlbmluc2VsCisKKyAgICAgICBHZW5lcmVsbCBzb2xsdGVuIGRpZSBOYW1lbiBhbHMgUmVpc2V6aWVsZSB2ZXJ3ZW5kZXQgd2VyZGVuLCBkaWUKKyAgICAgICBhdWNoIGJlaSAncmVpc2Ugcm91dGUnIGFuZ2V6ZWlndCB3ZXJkZW4uIEdsZWljaGVzIGdpbHQgbmF0dWVybGljaAorICAgICAgIGF1Y2ggZnVlciBkaWUgTmFtZW4gZGVyIFRyYW5zcG9ydGVyLiBTbyBpc3QgZWluZSB6aWVsZ2VuYXVlIHVuZCAKKyAgICAgICBwZXJmZWt0ZSBSZWlzZSBzY2hvbiB2b3Jwcm9ncmFtbWllcnQuCisKKyAgICAgICBNaXQgZWluIGJpc3NjaGVuIEdlZHVsZCB1bmQgVGVzdGVuIHdpcnN0IER1IHNpY2hlciBzY2huZWxsIHJhdXMtCisgICAgICAgYmVrb21tZW4sIHdpZSBEdSB3ZWxjaGVtIEJlZmVobCBlaW5zZXR6ZW4gbXVzc3QgdW0gYW4gRGVpbiBaaWVsIAorICAgICAgIHp1IGdlbGFuZ2VuLgorICAgICAKK0xFVFpURSBBRU5ERVJVTkc6CisgICAgICAgMjAxNS1KYW4tMTgsIEFyYXRob3JuIApkaWZmIC0tZ2l0IGEvZG9jL3BjbWQvcmVwb3J0IGIvZG9jL3BjbWQvcmVwb3J0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjI0MGRkYzAKLS0tIC9kZXYvbnVsbAorKysgYi9kb2MvcGNtZC9yZXBvcnQKQEAgLTAsMCArMSw3NyBAQAorS09NTUFORE86CisgICAgICAgIHJlcG9ydCBbZWlufGF1c3x2b3JzaWNodF0KKworQVJHVU1FTlRFOgorICAgICAgICAobmljaHRzKSAgICAgIDogYWt0dWVsbGUgRWluc3RlbGx1bmcgYW56ZWlnZW4KKyAgICAgICAgYXVzICAgICAgICAgICA6IGFsbGUgZWluZ2VzY2hhbHRldGVuIFJlcG9ydC1Nb2RpIGF1c3NjaGFsdGVuCisgICAgICAgIGVpbiAgICAgICAgICAgOiBSZXBvcnQgdm9uIExQL0tQL0dpZnQgZWluc2NoYWx0ZW4KKyAgICAgICAgdm9yc2ljaHQgICAgICA6IFZvcnNpY2h0LVJlcG9ydCB6dXNhZXR6bGljaCBlaW5zY2hhbHRlbgorICAgICAgICAgICAgICAgICAgICAgICAgKG51ciBTZWhlcjogRmx1Y2h0cmljaHR1bmcgd2lyZCBhdWNoIGdlbWVsZGV0KQorICAgICAgICBzZW5kZW4gICAgICAgIDogUmVwb3J0IGpldHp0IHNvZm9ydCBtaXQgYWt0dWVsbGVuIEVpbnN0ZWxsdW5nZW4KKyAgICAgICAgICAgICAgICAgICAgICAgIHNlbmRlbgorCitCRVNDSFJFSUJVTkc6CisgICAgICAgIFdlbm4gZGVyIFJlcG9ydCBlaW5nZXNjaGFsdGV0IHdpcmQsIHdpcmQgYmVpIEFlbmRlcnVuZ2VuIGFuIGRlbiBMUAorICAgICAgICBkZXMgU3BpZWxlcnMgZWluZSBNZWxkdW5nIGFuIGRpZXNlbiBhdXNnZWdlYmVuLCBkaWUgZGVuIG5ldWVuIExQLVdlcnQKKyAgICAgICAgYmVpbmhhbHRldC4gRmFsbHMgZnJlaWdlc2NoYWx0ZXQgKHMudS4pLCBnaWx0IGRhcyBnbGVpY2hlIGZ1ZXIgCisgICAgICAgIEFlbmRlcnVuZ2VuIGFuIGRlbiBLUCB1bmQgYW0gR2lmdHN0YXR1cy4gSmVkZSBBZW5kZXJ1bmcgYW4gZWluZW0gCisgICAgICAgIGRpZXNlciBXZXJ0ZSBsb2VzdCBkaWUgQXVzZ2FiZSBhbGxlciBkcmVpIFdlcnRlIGdlbWVpbnNhbSBhdXMuCisgICAgICAgIEF1c3NjaGFsdGVuIGxhZXNzdCBzaWNoIGRlciBSZXBvcnQgbnVyIGtvbXBsZXR0IG1pdCAicmVwb3J0IGF1cyIuCisKKyAgICAgICAgV2VubiBkZXIgVm9yc2ljaHQtUmVwb3J0IGVpbmdlc2NoYWx0ZXQgaXN0LCB3aXJkIGluIGVpbmVyIHNlcGFyYXRlbgorICAgICAgICBaZWlsZSB6dXNhZXR6bGljaCBkaWUgVm9yc2ljaHQgc293aWUgYmVpIFNlaGVybiBkaWUgRmx1Y2h0cmljaHR1bmcKKyAgICAgICAgZ2VtZWxkZXQuIERpZSBBdXNnYWJlIGlzdCB1bmFiaGFlbmdpZyB2b24gZGVtIExQL0tQL0dpZnQtUmVwb3J0CisgICAgICAgIHVuZCBmaW5kZXQgd2llIGJlaSBkaWVzZW0gbnVyIGRhbm4gc3RhdHQsIHdlbm4gZWluZSBBZW5kZXJ1bmcgYW4KKyAgICAgICAgVm9yc2ljaHQgb2RlciBGbHVjaHRyaWNodHVuZyBlaW5nZXRyZXRlbiBpc3QsIGRhbm4gYWJlciB3ZXJkZW4gYmVpZGUKKyAgICAgICAgV2VydGUgZ2VtZWluc2FtIGF1c2dlZ2ViZW4uCisKKyAgICAgICAgInJlcG9ydCBzZW5kZW4iIGthbm4genVtIFRlc3RlbiB2ZXJ3ZW5kZXQgd2VyZGVuIG9kZXIgd2VubiBkZXIKKyAgICAgICAgQ2xpZW50IG5hY2ggZGVtIFZlcmJpbmRlbiBhbGxlIERhdGVuIGVpbm1hbCBicmF1Y2h0LiAoTnV0enQgbWFuCisgICAgICAgIEdNQ1AsIHdlcmRlbiBkaWUgRGF0ZW4gcGVyIEdNQ1AgZ2VzZW5kZXQuKSAKKworSElOV0VJU0U6CisgICAgICAgIC0gRGllIEFuemVpZ2UgZGVyIExQIGlzdCBzb2ZvcnQgbmFjaCBDaGFyYWt0ZXJlcnN0ZWxsdW5nIHZlcmZ1ZWdiYXIuCisgICAgICAgIC0gRGllIEFuemVpZ2UgZGVyIEtQIGlzdCBlcnN0IG5hY2ggQWJzY2hsdXNzIGRlciBRdWVzdCAiSGlsZiBkZW4gCisgICAgICAgICAgR25hcmZlbiIgdmVyZnVlZ2Jhci4gU29sYW5nZSBkaWVzIG5pY2h0IGRlciBGYWxsIGlzdCwgd2VyZGVuCisgICAgICAgICAgbmljaHQgZGllIEtQLCBzb25kZXJuIGRpZSBaZWljaGVuICMjIyBhbmdlemVpZ3QuCisgICAgICAgIC0gRGllIEFuemVpZ2UgZGVzIEdpZnRzdGF0dXMgaXN0IGVyc3QgbmFjaCBBYnNjaGx1c3MgZGVyIFF1ZXN0CisgICAgICAgICAgIkthdHplbmphbW1lciIgdmVyZnVlZ2Jhci4gU29sYW5nZSBkaWVzIG5pY2h0IGRlciBGYWxsIGlzdCwKKyAgICAgICAgICB3aXJkIGRlciBHaWZ0c3RhdHVzIGFscyAiKG5pY2h0IHZlcmZ1ZWdiYXIpIiBnZW1lbGRldC4KKyAgICAgICAgLSBEaWUgQW56ZWlnZSBkZXIgVm9yc2ljaHQgaXN0IGVyc3QgbmFjaCBBYnNjaGx1c3MgZGVyIFF1ZXN0IAorICAgICAgICAgICJTY2hyYXQga2FubiBuaWNodCBlaW5zY2hsYWZlbiIgdmVyZnVlZ2Jhci4gTWl0IEVycmVpY2hlbiBkZXMKKyAgICAgICAgICBTZWhlci1TdGF0dXMgemVpZ3QgZGllc2UgT3B0aW9uIHp1c2FldHpsaWNoIGRpZSBlaW5nZXN0ZWxsdGUKKyAgICAgICAgICBGbHVjaHRyaWNodHVuZyBhbi4gU2VoZXJuLCBkaWUgZGllc2UgUXVlc3QgbmljaHQgYWJnZXNjaGxvc3NlbgorICAgICAgICAgIGhhYmVuLCBzdGVodCBrZWluZXMgdm9uIGJlaWRlbiB6dXIgVmVyZnVlZ3VuZy4gU3BpZWxlcmNoYXJha3RlcmVuCisgICAgICAgICAgd2lyZCBkaWUgRmx1Y2h0cmljaHR1bmcgYmlzIHp1bSBFcnJlaWNoZW4gZGVzIFNlaGVyc3RhdHVzIGFscworICAgICAgICAgICIobmljaHQgdmVyZnVlZ2JhcikiIGdlbWVsZGV0LgorICAgICAgICAtIE5hY2ggZGVtIEJlc3RlaGVuIGVpbmVyIGRlciBnZW5hbm50ZW4gUXVlc3RzIG11c3MgZWluIGJlcmVpdHMKKyAgICAgICAgICBlaW5nZXNjaGFsdGV0ZXIgUmVwb3J0IGVpbm1hbCBhdXMtIHVuZCB3aWVkZXIgZWluZ2VzY2hhbHRldAorICAgICAgICAgIHdlcmRlbiwgdW0gZGllIEFlbmRlcnVuZyB6dSBha3RpdmllcmVuLgorICAgICAgICAtIERlciBWb3JzaWNodC1SZXBvcnQgbGFlc3N0IHNpY2ggYXVjaCBhbGxlaW5lIGJlbnV0emVuLCBqZWRvY2ggCisgICAgICAgICAgbXVlc3NlbiB6dXZvciBhbGxlIFJlcG9ydGZ1bmt0aW9uZW4gbWl0ICJyZXBvcnQgYXVzIiBhYmdlc2NoYWx0ZXQKKyAgICAgICAgICB3ZXJkZW4sIHVtIGRhbmFjaCBkZW4gVm9yc2ljaHQtUmVwb3J0IHNlcGFyYXQgZWluenVzY2hhbHRlbi4KKworQkVJU1BJRUxFOgorICAgICAgICBBbmdlbm9tbWVuLCBlaW4gU3BpZWxlciwgZGVyIHp1bmFlY2hzdCBtaXQgInJlcG9ydCBlaW4iIGRlbiBMUC0vS1AtCisgICAgICAgIHVuZCBHaWZ0LVJlcG9ydCBlaW5nZXNjaGFsdGV0IGhhdCB1bmQgZ2VyYWRlIGdlZ2VuIGVpbmUgZ2VmYWVocmxpY2hlCisgICAgICAgIFNwaW5uZSBrYWVtcGZ0LCBoYWJlIGJlcmVpdHMgZWluaWdlIFRyZWZmZXIgZXJsaXR0ZW4gdW5kIGF1Y2ggZWluaWdlCisgICAgICAgIEtQIGZ1ZXIgWmF1YmVyc3BydWVjaGUgYXVzZ2VnZWJlbiB1bmQgZGFoZXIgYWt0dWVsbCBudXIgbm9jaAorICAgICAgICAxNTQgTFAsIDE4NyBLUCB1bmQgc2VpIG5pY2h0IHZlcmdpZnRldC4gV2lyZCBlciBudW4gdm9uIGRlciBTcGlubmUKKyAgICAgICAgZ2ViaXNzZW4gdW5kIHZlcmdpZnRldCwgd2lyZCBkaWVzZSBSZXBvcnRtZWxkdW5nIGF1c2dlZ2ViZW46CisgICAgICAgICAgICBMUDogMTU0LCBLUDogMTg3LCBHaWZ0OiBsZWljaHQuCisgICAgICAgIFdlbm4gZGllIFNwaW5uZSBiZWkgZGllc2VtIEJpc3MgYWJlciBnbGVpY2ggYXVjaCBTY2hhZGVuIHZlcnVyc2FjaHQsCisgICAgICAgIHVuZCBkZXIgU3BpZWxlciA2IExQIHZlcmxpZXJ0LCB3dWVyZGUgc29mb3J0IGVpbiB3ZWl0ZXJlciBSZXBvcnQKKyAgICAgICAgYXVzZ2Vsb2VzdDoKKyAgICAgICAgICAgIExQOiAxNDgsIEtQOiAxODcsIEdpZnQ6IGxlaWNodC4KKyAgICAgICAgV2VubiBkZXIgU3BpZWxlciBqZWRvY2ggbmljaHQgZ2VybmUgcXVlc3RldCB1bmQgaWhtIGRhaGVyIG51ciBkZXIKKyAgICAgICAgTFAtUmVwb3J0IHp1ciBWZXJmdWVndW5nIHN0ZWh0LCB3dWVyZGUgbnVyIGVpbmUgZGVyIGJlaWRlbiBBZW5kZXJ1bmdlbgorICAgICAgICBnZW1lbGRldCwgbmFlbWxpY2ggZGllIExQLUFlbmRlcnVuZywgdW5kIHNvbWl0IGZvbGdlbmRlciBSZXBvcnQKKyAgICAgICAgYXVzZ2VnZWJlbjoKKyAgICAgICAgICAgIExQOiAxNDgsIEtQOiAjIyMsIEdpZnQ6IChuaWNodCB2ZXJmdWVnYmFyKS4KKworU0lFSEUgQVVDSDoKKyAgICAgICAgdm9yc2ljaHQsIGZsdWNodHJpY2h0dW5nLCBsZWJlbiwgaGVpbHVuZywga2FtcGYKKworTEVUWlRFIEFFTkRFUlVORzoKKyAgIDA5LjAxLjIwMTUsIFplc3N0cmEKKwpkaWZmIC0tZ2l0IGEvZG9jL3BjbWQvcmZsdWVzdGVyZSBiL2RvYy9wY21kL3JmbHVlc3RlcmUKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZTgyNDdhOAotLS0gL2Rldi9udWxsCisrKyBiL2RvYy9wY21kL3JmbHVlc3RlcmUKQEAgLTAsMCArMSwyNyBAQAorCityZmx1ZXN0ZXJlCistLS0tLS0tLS0KKworIEtPTU1BTkRPOgorICAgIHJmbHVlc3RlcmUgPHdlbT4genUgPHRleHQ+CisKKyBBUkdVTUVOVEU6CisKKyAgICAgPHdlbT4KKyAgICAgICAgRGFzIExlYndlc2VuLCBkZW0gRHUgYXVzIGRlciBGZXJuZSBldHdhcyB6dWZsdWVzdGVybiB3aWxsc3QKKyAgICAgPHRleHQ+CisgICAgICAgIERlciB6dSBmbHVlc3Rlcm5kZSBUZXh0CisKKyBCRVNDSFJFSUJVTkc6CisgICAgR2lidCBlaW5lIE1pdHRlaWx1bmcgYW4gZGFzIGFuZ2VnZWJlbmUgTGViZXdlc2VuIGF1cywgZGllIG5pZW1hbmQgYW5kZXJlcworICAgIGhvZXJlbiBrYW5uLiBEYXMgTGViZXdlc2VuIG11c3Mgc2ljaCBpbiBlaW5lbSBhbmRlcmVuIFJhdW0gYmVmaW5kZW4uCisgICAgRGllc2VyIEJlZmVobCBpc3QgZmFzdCBhZWhubGljaCB6dW0gJ3RlaWxlIChtaXQpJy1CZWZlaGwsIGFsbGVyZGluZ3Mga2FubgorICAgIGxldHp0ZXJlciBpbiBlaW5lciBUTS1IaXN0b3J5IGJlaW0gU2VuZGVyIHVuZC9vZGVyIEVtcGZhZW5nZXIgZ2VzcGVpY2hlcnQKKyAgICB3ZXJkZW4sIHdhZWhyZW5kIGRpZXMgYmVpICdyZmx1ZXN0ZXJlJyBuaWNodCBwYXNzaWVyZW4ga2Fubi4KKworIFNJRUhFIEFVQ0g6CisgICAgc2FnZSwgZnJhZ2UsIGFudHdvcnRlLCB0ZWlsZSAobWl0KSwgZ2VzcHJhZWNoLCBydWZlLCBlYmVuZW4sIHdlZywKKyAgICBpZ25vcmllcmUsIGtvYm9sZCwgdG1oaXN0CisKKyBMRVRaVEUgQWVOREVSVU5HOgorICAgIDEwLjA4LjIwMDgsIFplc3N0cmEKZGlmZiAtLWdpdCBhL2RvYy9wY21kL3JpZWNoZSBiL2RvYy9wY21kL3JpZWNoZQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi42MGM0YTgyCi0tLSAvZGV2L251bGwKKysrIGIvZG9jL3BjbWQvcmllY2hlCkBAIC0wLDAgKzEsMzIgQEAKKworcmllY2goZSkgKGFuKQorLS0tLS0tLS0tLS0tLS0KKworS09NTUFORE8KKwlyaWVjaChlKQorCXJpZWNoKGUpIDx3YXM+IFthbiA8b2JqZWt0PiB8IGFtIDxvYmpla3Q+XSBbaW4gbWlyIHwgaW0gcmF1bV0KKworQVJHVU1FTlRFCisJPG9iamVrdD4KKwkgIEVpbiBHZWdlbnN0YW5kIGJ6dy4gTGViZXdlc2VuLCBhbiBkZW0gcmllY2hlbiB3aWxsLgorCitCRVNDSFJFSUJVTkcKKwlgcmllY2gnIGJ6dy4gYHJpZWNoZScgaXN0IGRhcyBhbGxnZW1laW5lIEtvbW1hbmRvLCB1bSBHZXJ1ZWNoZQorCWFuIEdlZ2Vuc3RhZW5kZW4sIExlYmV3ZXNlbiBvZGVyIGluIFJhZXVtZW4gd2Focnp1bmVobWVuLiBIaWVyYmVpCisJbGFlc3N0IGByaWVjaChlKScgb2huZSBBcmd1bWVudGUgZGVuIFNwaWVsZXIgZGllIEhhdXB0Z2VydWVjaGUgaW4KKwlkZW0gUmF1bSB3YWhybmVobWVuLCBpbiBkZW0gZXIgc2ljaCBkZXJ6ZWl0IGJlZmluZGV0LiBBbiBhbGxlbgorCWFuZGVyZW4gR2VnZW5zdGFlbmRlbiBiencuIExlYmV3ZXNlbiBpbSBzZWxiZW4gUmF1bSBvZGVyIGltIGVpZ2VuZW4KKwlJbnZlbnRhciBrYW5uIG1hbiBtaXQgYHJpZWNoKGUpIChhbiknIGViZW5mYWxscyBHZXJ1ZWNoZQorCXdhaHJuZWhtZW4uIE5pY2h0IGltbWVyIGthbm4gbWFuIGplZG9jaCBldHdhcyBCZXNvbmRlcmVzIHJpZWNoZW4uCisKKwlEYSBiZWkgT2JqZWt0ZW4gbWl0IGdsZWljaGVuIEdlcnVjaHNhcnRlbiB6dWVyc3QgYW4gaW0gUmF1bQorCWxpZWdlbmRlbiBPYmpla3QgZ2Vyb2NoZW4gd2lyZCwga2FubiBtYW4gYW4gU2FjaGVuLCBkaWUgbWFuIGJlaQorCXNpY2ggdHJhZWd0LCBhdWYgYWxsZSBGYWVsbGUgbWl0IGRlbSBadXNhdHogYGluIG1pcicgcmllY2hlbi4KKworU0lFSEUgQVVDSDoKKyAgYmV6dWdzcHVua3QKKyAgc2NoYXUsIGxhdXNjaGUsIHRhc3RlLCBsaWVzCisKK0xFVFpURSBBRU5ERVJVTkdFTjoKKyAgMTguMDEuMjAxMywgWmVzc3RyYQorCmRpZmYgLS1naXQgYS9kb2MvcGNtZC9ya251ZGRsZSBiL2RvYy9wY21kL3JrbnVkZGxlCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjA0NmFlZTgKLS0tIC9kZXYvbnVsbAorKysgYi9kb2MvcGNtZC9ya251ZGRsZQpAQCAtMCwwICsxLDIxIEBACisKK3JrbnVkZGxlCistLS0tLS0tLQorCisgS09NTUFORE86CisgICAgcmtudWRkbGUgPG5hbWU+CisKKyBBUkdVTUVOVEU6CisKKyAgICAgPG5hbWU+CisgICAgICAgIEVpbiBTcGllbGVyLCBkZXIgbmljaHQgaW0gZ2xlaWNoZW4gUmF1bSBpc3QKKworIEJFU0NIUkVJQlVORzoKKyAgICBEdSBrbnVkZGVsc3QgZWluZW4gW2Jlc3RpbW10ZW5dIFNwaWVsZXIsIGRlciBzaWNoIG5pY2h0IGltIGdsZWljaGVuIFJhdW0KKyAgICBiZWZpbmRldCwgaW4gZGVtIER1IERpY2ggYXVmaGFlbHRzdC4KKworIFNJRUhFIEFVQ0g6CisgICAgdmVyYmVuLCByd2lua2UKKworIExFVFpURSBBZU5ERVJVTkc6CisgICAgVGh1LCAyNC4wNy4xOTk3LCAwOTowMDowMCB2b24gV2FyZ29uCmRpZmYgLS1naXQgYS9kb2MvcGNtZC9ydWZlIGIvZG9jL3BjbWQvcnVmZQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5hNWMxMjE3Ci0tLSAvZGV2L251bGwKKysrIGIvZG9jL3BjbWQvcnVmZQpAQCAtMCwwICsxLDI3IEBACisKK3J1ZmUKKy0tLS0KKworIEtPTU1BTkRPOgorICAgIHJ1ZmUgPHRleHQ+CisKKyBBUkdVTUVOVEU6CisKKyAgICAgPHRleHQ+CisgICAgICAgIERlciB6dSBydWZlbmRlIFRleHQKKworIEJFU0NIUkVJQlVORzoKKyAgICBEdSBydWZzdCBzbyBsYXV0IDx0ZXh0PiwgZGFzcyBtYW4gRGljaCBpbSBnYW56ZW4gTW9yZ2VuR3JhdWVuIGhvZXJlbiBrYW5uLgorICAgIERhIGRhcyBNb3JnZW5HcmF1ZW4gYWxsZXJkaW5ncyB6aWVtbGljaCBncm9zcyBpc3QsIHZlcmJyYXVjaHQgZWluIFJ1ZiBlaW4KKyAgICBnZXdpc3NlcyBNYXNzIGFuIGdlaXN0aWdlciBFbmVyZ2llIChzcHJpY2g6IE1hZ2llcHVua3RlbikuCisKKyAgICBSdWZlIHdlcmRlbiBpbSBhbGxnZW1laW5lbiBhbHMgc3RvZXJlbmQgZW1wZnVuZGVuOyBtYW4gc29sbHRlIGxpZWJlciBkaWUKKyAgICBFYmVuZW4gYmVudXR6ZW4uIERpZXNlIHNpbmQgbmFjaCBUaGVtZW4gZWluZ2V0ZWlsdCwgdW5kIGlocmUgTnV0enVuZyBpc3QKKyAgICBrb3N0ZW5sb3MuCisKKyBTSUVIRSBBVUNIOgorICAgIHNhZ2UsIGZyYWdlLCBhbnR3b3J0ZSwgZmx1ZXN0ZXJlLCB0ZWlsZSAobWl0KSwgZ2VzcHJhZWNoLCBlYmVuZW4sIG1ydWZlLAorICAgIHdlZywgaWdub3JpZXJlLCBrb2JvbGQKKworIExFVFpURSBBZU5ERVJVTkc6CisgICAgVGh1LCAyNC4wNy4xOTk3LCAwOTowMDowMCB2b24gV2FyZ29uCmRpZmYgLS1naXQgYS9kb2MvcGNtZC9yd2lua2UgYi9kb2MvcGNtZC9yd2lua2UKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZWE5YmYzMwotLS0gL2Rldi9udWxsCisrKyBiL2RvYy9wY21kL3J3aW5rZQpAQCAtMCwwICsxLDIxIEBACisKK3J3aW5rZQorLS0tLS0tCisKKyBLT01NQU5ETzoKKyAgICByd2lua2UgPG5hbWU+CisKKyBBUkdVTUVOVEU6CisKKyAgICAgPG5hbWU+CisgICAgICAgIEVpbiBTcGllbGVyLCBkZXIgbmljaHQgaW0gZ2xlaWNoZW4gUmF1bSBpc3QKKworIEJFU0NIUkVJQlVORzoKKyAgICBEdSB3aW5rc3QgZWluZW0gW2Jlc3RpbW10ZW5dIFNwaWVsZXIgenUsIGRlciBzaWNoIG5pY2h0IGltIGdsZWljaGVuIFJhdW0KKyAgICBiZWZpbmRldCwgaW4gZGVtIER1IERpY2ggYXVmaGFlbHRzdC4KKworIFNJRUhFIEFVQ0g6CisgICAgdmVyYmVuLCBya251ZGRsZQorCisgTEVUWlRFIEFlTkRFUlVORzoKKyAgICBUaHUsIDI0LjA3LjE5OTcsIDA5OjAwOjAwIHZvbiBXYXJnb24KZGlmZiAtLWdpdCBhL2RvYy9wY21kL3NhZ2UgYi9kb2MvcGNtZC9zYWdlCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmU4MTc3OWUKLS0tIC9kZXYvbnVsbAorKysgYi9kb2MvcGNtZC9zYWdlCkBAIC0wLDAgKzEsMjMgQEAKKworc2FnZQorLS0tLQorCisgS09NTUFORE86CisgICAgc2FnZSA8dGV4dD4KKworIEFSR1VNRU5URToKKworICAgICA8dGV4dD4KKyAgICAgICAgV2FzIG1hbiBzbyB6dSBzYWdlbiBoYXQKKworIEJFU0NIUkVJQlVORzoKKyAgICBEZXIgVGV4dCA8dGV4dD4gd2lyZCBhbiBhbGxlIFNwaWVsZXIgaW0gc2VsYmVuIFJhdW0gYXVzZ2VnZWJlbi4gVWViZXJsYW5nZQorICAgIFplaWxlbiB3ZXJkZW4gdW1nZWJyb2NoZW4sIHVuZCB2b3IgamVkZSBaZWlsZSB3aXJkIG5vY2gKKyAgICBgPERlaW5fTmFtZT4gc2FndDogJyBnZXNldHp0LgorCisgU0lFSEUgQVVDSDoKKyAgICBmcmFnZSwgYW50d29ydGUsIGZsdWVzdGVyZSwgdGVpbGUgKG1pdCksIGdlc3ByYWVjaCwgcnVmZSwgZWJlbmVuLCB3ZWcsCisgICAgaWdub3JpZXJlLCBrb2JvbGQsIGtsaW5nZWx0b24sIHNlbmRlcndpZWRlcmhvbHVuZworCisgTEVUWlRFIEFlTkRFUlVORzoKKyAgICAwMS4wNy4yMDA3IHZvbiBFbm5veApkaWZmIC0tZ2l0IGEvZG9jL3BjbWQvc2NoYXUgYi9kb2MvcGNtZC9zY2hhdQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5hN2E2ZjZkCi0tLSAvZGV2L251bGwKKysrIGIvZG9jL3BjbWQvc2NoYXUKQEAgLTAsMCArMSw3MiBAQAorCitzY2hhdSAoYW4pCistLS0tLS0tLS0tCisKKyBLT01NQU5ETzoKKyAgICBzY2hhdQorICAgIHNjaGF1IC1mIHwgZ2VuYXUKKyAgICBzY2hhdSAtayB8IGt1cnoKKyAgICBzY2hhdSBbLWZ8Z2VuYXVdIDx3YXM+IFthbiA8b2JqZWt0PiB8IGFtIDxvYmpla3Q+XSBbaW4gbWlyIHwgaW0gcmF1bV0gYW4KKyAgICB1bnRlcnN1Y2hlIDx3YXM+IFthbiA8b2JqZWt0PiB8IGFtIDxvYmpla3Q+XSBbaW4gbWlyIHwgaW0gcmF1bV0KKworIEFSR1VNRU5URToKKworICAgICA8d2FzPgorICAgICAgICBFaW4gR2VnZW5zdGFuZCBvZGVyIERldGFpbAorICAgICA8b2JqZWt0PgorICAgICAgICBFaW4gd2VpdGVyZXIgR2VnZW5zdGFuZCAoa2VpbiBEZXRhaWwpCisKKyBCRVNDSFJFSUJVTkc6CisgICAgKFN0YXR0IGB1bnRlcnN1Y2hlJyBrYW5uIG1hbiBhdWNoIGB1bnQnLCBgYmV0cmFjaHRlJyBvZGVyIGBiZXRyJworICAgIHZlcndlbmRlbi4pCisKKyAgICBgc2NoYXUnIGlzdCBkYXMgYWxsZ2VtZWluZSBLb21tYW5kbywgdW0gR2VnZW5zdGFlbmRlIHVuZCBSYWV1bWUgenUKKyAgICB1bnRlcnN1Y2hlbi4gYHNjaGF1JyBvaG5lIEFyZ3VtZW50ZSBnaWJ0IGVpbmUgQmVzY2hyZWlidW5nIGRlcyBSYXVtZXMsIGluCisgICAgZGVtIGRlciBTcGllbGVyIHNpY2ggYmVmaW5kZXQuIEFsbGUgYW5kZXJlbiBHZWdlbnN0YWVuZGUsIE1vbnN0ZXIgdW5kCisgICAgU3BpZWxlciBpbSBzZWxiZW4gUmF1bSBvZGVyIGltIGVpZ2VuZW4gSW52ZW50YXIga29lbm5lbiBtaXQgYHNjaGF1IChhbiknCisgICAgdW50ZXJzdWNodCB3ZXJkZW4uCisKKyAgICBgc2NoYXUnIG11c3MgYWJlciBuaWNodCB1bmJlZGluZ3QgYWxsZSBHZWhlaW1uaXNzZSBkZXMgR2VnZW5zdGFuZGVzCisgICAgdmVycmF0ZW4uCisKKyAgICBgdW50W2Vyc3VjaGVdJyBiencuIGBiZXRyW2FjaHRlXScgbWFjaHQgZ2VuYXUgZGFzc2VsYmUsIGlzdCBhYmVyIG1hbmNoZW4KKyAgICB2aWVsbGVpY2h0IGxpZWJlci4KKworICAgIERhIGJlaSBPYmpla3RlbiBtaXQgZ2xlaWNoZXIgQmVuZW5udW5nIHp1ZXJzdCBkYXMgaW0gUmF1bSBMaWVnZW5kZQorICAgIHVudGVyc3VjaHQgd2lyZCwga2FubiBtYW4gU2FjaGVuLCBkaWUgbWFuIGJlaSBzaWNoIHRyYWVndCwgYXVmIGFsbGUgRmFlbGxlCisgICAgbWl0IGRlbSBadXNhdHogYGluIG1pcicgdW50ZXJzdWNoZW4uCisKKyAgICBCZXRyYWNodGV0IG1hbiBlaW4gPG9iamVrdD4gaW0gUmF1bSwgc28gd2lyZCBlcyBhbHMgbmV1ZXIgQmV6dWdzcHVua3QgZnVlcgorICAgIHdlaXRlcmUgQmV0cmFjaHR1bmdlbiBnZW5vbW1lbi4gRC5oLiBtYW4ga2FubiBhbHMgbmFlY2hzdGVzIGVpbiBEZXRhaWwgYW4KKyAgICBkZW0gT2JqZWt0IGJldHJhY2h0ZW4sIG9obmUgZWluZ2ViZW4genUgbXVlc3NlbiBgdW50IDxkZXRhaWw+IGFuCisgICAgPG9iamVrdD4nLCBzb25kZXJuIGVzIHJlaWNodCBkYW5uIGB1bnQgPGRldGFpbD4nLiBXaXJkIGRhcyBEZXRhaWwgYW4gZGVtCisgICAgZWJlbiBiZXRyYWNodGV0ZW4gT2JqZWt0IG5pY2h0IGdlZnVuZGVuLCBzbyB3aXJkIGRlciBCZXp1Z3NwdW5rdCB3aWVkZXIKKyAgICBhdWYgZGllIFVtZ2VidW5nIHVuZCBkaWUgT2JqZWt0ZSBpbSBTcGllbGVyIGdlc2V0enQuCisgICAgCisgICAgRGllIE9wdGlvbiAnLWYnIGJ6dy4gJ2dlbmF1JyBzb3JndCBkYWZ1ZXIsIGRhc3MgZ2xlaWNoYXJ0aWdlIE9iamVrdGUKKyAgICBiZWkgZGVyIExhbmdiZXNjaHJlaWJ1bmcgZGVzIFJhdW1lcyBvZGVyIGRlciBCZXRyYWNodHVuZyBlaW5lcyBCZWhhZWx0ZXJzCisgICAgbmljaHQgenVzYW1tZW5nZWZhc3N0IHdlcmRlbi4gCisgICAgRGFzIGthbm4gbnVldHpsaWNoIHNlaW4sIHdlbm4gdmVyc2NoaWVkZW5lIE9iamVrdGUgbWl0IGdsZWljaGVyCisgICAgQmV6ZWljaG51bmcgKGJlaXNwaWVsc3dlaXNlIHZlcnNjaGllZGVuZSBTY2h3ZXJ0ZXIpIGltIFJhdW0gbGllZ2VuCisgICAgdW5kIG1hbiB3aXNzZW4gd2lsbCwgd2VsY2hlcyBkYXZvbiBtYW4gbWl0ICduaW1tIHNjaHdlcnQgMicgbnVuCisgICAgd2lya2xpY2ggbmltbXQuCisgICAgCisgICAgJ3NjaGF1IC1rJyBvZGVyICdzY2hhdSBrdXJ6JyBnZWJlbiBkaWUgS3VyemJlc2NocmVpYnVuZyBkZXIgYWt0dWVsbGVuCisgICAgVW1nZWJ1bmcgYXVzLCB3aWUgc2llIGF1Y2ggYmVpIEJld2VndW5nZW4gaW0gS3Vyei1Nb2R1cyBlcnNjaGVpbnQuCisKKyAgICAnc2NoYXUnIG9obmUgZWluIEFyZ3VtZW50IGxvZXNjaHQgZGFzIHNvZy4gQmV6dWdzb2JqZWt0LgorCisgQUNIVFVORzoKKyAgICBNYW5jaGUgUmFldW1lIGRlZmluaWVyZW4gaWhyIGVpZ2VuZXMgVmVyYjogYHVudGVyc3VjaGUnLiBIaWVyIGtvZW5uZW4KKyAgICBgdW50JyB1bmQgYHVudGVyc3VjaGUnIHp1ICp2ZXJzY2hpZWRlbmVuKiBFcmdlYm5pc3NlbiBmdWVocmVuLiBTb2xsdGUgZXVjaAorICAgIGRhcyBhdWZmYWxsZW4sIHNldHp0IGJpdHRlIG1pdCAiZmVobGVyIiBlaW5lbiBGZWhsZXIgaW4gZGllc2VtIFJhdW0gLyBhbgorICAgIGRlbSBPYmpla3QgYWIuCisKKyBTSUVIRSBBVUNIOgorICAgIGJlenVnc3B1bmt0CisgICAgcmllY2hlLCBsYXVzY2hlLCB0YXN0ZSwgbGllcworICAgIGt1cnosIGF1c2dhZW5nZQorCisgTEVUWlRFIEFlTkRFUlVORzoKKyAgIDIwLjAyLjIwMTMsIFplc3N0cmEKKwpkaWZmIC0tZ2l0IGEvZG9jL3BjbWQvc2NobGFmZSBiL2RvYy9wY21kL3NjaGxhZmUKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYzU1YzYzYwotLS0gL2Rldi9udWxsCisrKyBiL2RvYy9wY21kL3NjaGxhZmUKQEAgLTAsMCArMSwzNyBAQAorCitzY2hsYWZlIGVpbgorLS0tLS0tLS0tLS0KKworIEtPTU1BTkRPOgorICAgIHNjaGxhZmUgZWluCisKKyBBUkdVTUVOVEU6CisgICAga2VpbmUKKworIEJFU0NIUkVJQlVORzoKKyAgICBVbnRlcmJyaWNodCBkaWUgVmVyYmluZHVuZyB6dW0gU3BpZWwuIEFsbGUgR2VnZW5zdGFlbmRlLCBkaWUgbWFuIGJlaSBkZXIKKyAgICBFaW5nYWJlIGRlcyBLb21tYW5kb3MgYmVpIHNpY2ggaGF0LCBiZWhhZWx0IG1hbi4gQmVpbSBOZXUtRWlubG9nZ2VuIGtvbW10CisgICAgbWFuIG5vcm1hbGVyd2Vpc2UgYW4gZGVyIGdsZWljaGVuIFN0ZWxsZSBoZXJhdXMsIGFuIGRlciBtYW4gZGFzIFNwaWVsCisgICAgdmVybGFzc2VuIGhhdC4gVm9uIGRpZXNlciBSZWdlbCBrYW5uIGVzIGFiZXIgYXVjaCBBdXNuYWhtZW4gZ2ViZW4sIHZvbgorICAgIGRlbmVuIGRpZSB3aWNodGlnc3RlIGRpZSBTZWhlcmhhZXVzZXIgc2luZDogc2NobGFlZnQgbWFuIGluIGVpbmVtCisgICAgU2VoZXJoYXVzIGVpbiwgd2FjaHQgbWFuIHZvciBkZW0gSGF1cyB3aWVkZXIgYXVmIChBdXNuYWhtZSB2b24gZGVyCisgICAgQXVzbmFobWU6IGRlciBIYXVzYmVzaXR6ZXIgc2VsYnN0IGlzdCBkYXZvbiBuaWNodCBiZXRyb2ZmZW4pLgorICAgIEdydW5kIGZ1ZXIgZGllc2UgTWFzc25haG1lIGlzdCwgZGFzcyBTcGllbGVyIHNvIG5pY2h0IGJlYWJzaWNodGlndAorICAgIG9kZXIgdW5iZWFic2ljaHRpZ3QgaW0gU2VoZXJoYXVzIGVpbmdlc2NobG9zc2VuIHdlcmRlbiBrb2VubmVuLgorCisgICAgQUNIVFVORzogRmFsbHMgZGFzIFNwaWVsIGFic3R1ZXJ6dCBvZGVyIG5ldSBnZXN0YXJ0ZXQgd2lyZCwgdmVybGllcnQgbWFuCisgICAgYWxsZSBzZWluZSBHZWdlbnN0YWVuZGUgdW5kIHN0YXJ0ZXQgYmVpbSBFaW5sb2dnZW4gd2llZGVyIGFuIHNlaW5lbQorICAgIGxva2FsZW4gU3RhcnRwdW5rdCEKKyAgICAoSW4gZGVyIFJlZ2VsIGdpYnQgZXMgZGFubiBhYmVyIGVpbmUgKGtsZWluZSkgRW50c2NoYWVkaWd1bmcgZnVlciBkaWUKKyAgICB2ZXJsb3JlbmVuIEdlZ2Vuc3RhZW5kZSAob2huZSBHZXdhZWhyKS4gKQorCisgICAgQUNIVFVORzogQWJlbnRldWVyIGtvZW5uZW4gdW50ZXIgVW1zdGFlbmRlbiBuYWNoIGRlbSBXaWVkZXJhdWZ3YWNoZW4gbmljaHQKKyAgICBtZWhyIHdlaXRlcmdlc3BpZWx0IHdlcmRlbi4KKworICAgICAgICAgICAgICAgICAgICAgICAgICAgQkVOVVRaVU5HIEFVRiBFSUdFTkUgR0VGQUhSIQorCisgU0lFSEUgQVVDSDoKKyAgICBzcGVpY2hlcm4sIGVuZGUsIGtlZXBhbGl2ZQorCisgTEVUWlRFIEFlTkRFUlVORzoKKyAgICBTYXQsIDA0LjAxLjIwMDMsIDE0OjQ1OjAwIHZvbiBXYXJnb24KZGlmZiAtLWdpdCBhL2RvYy9wY21kL3NlbGJzdGxvZXNjaHVuZyBiL2RvYy9wY21kL3NlbGJzdGxvZXNjaHVuZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi42ODMyMDIzCi0tLSAvZGV2L251bGwKKysrIGIvZG9jL3BjbWQvc2VsYnN0bG9lc2NodW5nCkBAIC0wLDAgKzEsMjUgQEAKK0tPTU1BTkRPOgorCVNlbGJzdGxvZXNjaHVuZworCitBUkdVTUVOVEU6CisJa2VpbmUKKworQkVTQ0hSRUlCVU5HOgorCURlciBDaGFyYWt0ZXIgd2lyZCB1bndpZGVycnVmbGljaCBhdXMgZGVtIFNwaWVsIGVudGZlcm50LiBBdWNoIGV2dGwuCisJbm9jaCB2b3JoYW5kZW5lIEJyaWVmZSB3ZXJkZW4gZW50ZmVybnQuCisJV2VubiBtYW4gU2VoZXIgb2RlciBNYWdpZXIgaXN0LCB3aXJkIGRlciBOYW1lIGRlcyBDaGFyYWt0ZXJzCisJenVzYWV0emxpY2ggZ2ViYW5pc2h0LCBkYW1pdCBzaWNoIG5pY2h0IGF1cyBWZXJzZWhlbiBlaW4gTmV1bGluZyBtaXQKKwllaW5lbSBiZXJ1ZWhtdGVuIG9kZXIgYWJlciBhdWNoIGJlcnVlY2h0aWd0ZW4gTmFtZW4gZWlubG9nZ3QsIHdhcworCXNpY2hlciB6dSBlaW5pZ2VyIFZlcndpcnJ1bmcgZnVlaHJlbiB3dWVyZGUuCisJV2lsbCBtYW4gbnVyIGF1ZiBhYnNlaGJhcmUgKG9kZXIgYXVjaCB1bmFic2VoYmFyZSkgWmVpdCBuaWNodCBtZWhyIAorCXNwaWVsZW4sIHNvIHNvbGx0ZSBtYW4gYmVzc2VyIGRlbiBCZWZlaGwgJ1NwaWVscGF1c2UnIGJlbnV0emVuLgorCisJQWxzIGxldHp0ZW4gVm9yc2NobGFnOiBXZW5uIER1IERpY2ggenUgZGllc2VtIFNjaHJpdHQgZW50c2NobG9zc2VuIGhhc3QsCisJdWViZXJsZWdlIERpciwgb2IgRHUgZGVuIE1pdHNwaWVsZXJuLCBkaWUgRHUga2VubnN0LCBuaWNodCBub2NoIGVpbmUKKwlNaXR0ZWlsdW5nIHNjaGlja2VuIG1hZ3N0LCBzaWUga29lbm50ZW4gc2ljaCBzb25zdCBTb3JnZW4gbWFjaGVuLiAKKworU0lFSEUgQVVDSDoKKwlzcGllbGRhdWVyLCBzcGllbHBhdXNlLCBsb2VzY2hza3JpcHQKKworLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorTGV0enRlIEFlbmRlcnVuZzogMTQuMDIuMjAwNyB2b24gWmVzc3RyYQpkaWZmIC0tZ2l0IGEvZG9jL3BjbWQvc2VuZGVyd2llZGVyaG9sdW5nIGIvZG9jL3BjbWQvc2VuZGVyd2llZGVyaG9sdW5nCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjBhZGRmYTkKLS0tIC9kZXYvbnVsbAorKysgYi9kb2MvcGNtZC9zZW5kZXJ3aWVkZXJob2x1bmcKQEAgLTAsMCArMSwzMiBAQAorS09NTUFORE86CisJc2VuZGVyd2llZGVyaG9sdW5nIFs8U3RhdHVzPl0KKworQVJHVU1FTlRFOgorCTxTdGF0dXM+CisgICAgICAgICAgICAgOiBha3R1ZWxsZW4gU3RhdHVzIGFuemVpZ2VuICAKKwkgIEVJTjogU2VuZGVyd2llZGVyaG9sdW5nIGVpbnNjaGFsdGVuLgorCSAgQVVTOiBTZW5kZXJ3aWVkZXJob2x1bmcgYXVzc2NoYWx0ZW4uCisKK0JFU0NIUkVJQlVORzoKKyAgICAgICAgQmVpIGRlciBLb21tdW5pa2F0aW9uIHBlciB0ZWlsZSBtaXQgdW5kIHNhZyB3aXJkIGRlciBTZW5kZXIgdm9yIGRlbQorICAgICAgICBtaXRnZXRlaWx0ZW4gVGV4dCBkYXJnZXN0ZWxsdC4gQmlzaGVyIGVyZm9sZ3RlIGRhcyB2b3IgamVkZXIgWmVpbGUuCisgICAgICAgIE1pdCAnc2VuZGVyd2llZGVyaG9sdW5nIGF1cycgd2lyZCBkZXIgU2VuZGVyIG51ciBub2NoIGVpbm1hbCBkYXJnZS0KKyAgICAgICAgc3RlbGx0LiBFbnR3ZWRlciBhbSBBbmZhbmcgZGVyIFplaWxlLCB3ZW5uIGVzIG51ciBlaW5lIFplaWxlIGlucy0KKyAgICAgICAgZ2VzYW10IGlzdC4gT2RlciB2b3IgZGVtIFRleHQsIHdlbm4gZXMgbWVocmVyZSBaZWlsZW4gc2luZC4KKworQkVJU1BJRUw6CisgICAgICAgICAnc2VuZGVyd2llZGVyaG9sdW5nIGVpbicgKHN0YW5kYXJkKQorICAgICAgICAgRW5ub3ggdGVpbHQgRGlyIG1pdDogZGFzIGlzdCBlaW4KKyAgICAgICAgIEVubm94IHRlaWx0IERpciBtaXQ6IGxhZW5nZXJlciBCZWlzcGllbHRleHQKKyAgICAgICAgIEVubm94IHRlaWx0IERpciBtaXQ6IGZ1ZXIgJ3NlbmRlcndpZWRlcmhvbHVuZycKKworICAgICAgICAgJ3NlbmRlcndpZWRlcmhvbHVuZyBhdXMnCisgICAgICAgICBFbm5veCB0ZWlsdCBEaXIgbWl0OiAKKyAgICAgICAgICBkYXMgaXN0IGVpbiBsYWVuZ2VyZXIgQmVpc3BpZWx0ZXh0IAorICAgICAgICAgIGZ1ZXIgJ3NlbmRlcndpZWRlcmhvbHVuZycKKworU0lFSEUgQVVDSDoKKwl0ZWlsZSBtaXQsIHNhZ2UsIGtsaW5nZWx0b24sIGdyYWZpayBhdXMsIGViZW5lbgorCitMRVRaVEUgQUVOREVSVU5HOgorICAgMTYuIE1haSAyMDA3ICBFbm5veApkaWZmIC0tZ2l0IGEvZG9jL3BjbWQvc29ubmVuZmVobGVyIGIvZG9jL3BjbWQvc29ubmVuZmVobGVyCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmRkZDRjYmEKLS0tIC9kZXYvbnVsbAorKysgYi9kb2MvcGNtZC9zb25uZW5mZWhsZXIKQEAgLTAsMCArMSwyNSBAQAorc29ubmVuZmVobGVyCistLS0tLS0tLS0tLS0KKworS09NTUFORE86CisgICAgIHNvbm5lbmZlaGxlciA8dGV4dD4KKyAgIAorQVJHVU1FTlRFOgorICAgICA8dGV4dD4KKyAgICAgICAgRWluZSBNaXR0ZWlsdW5nCisKK0JFU0NIUkVJQlVORzoKKyAgICAgV2VubiBkdSBhbHMgRHVua2VsZWxmIG1laW5zdCwgZGFzcyBkaWUgU29ubmUgaW4gZGVtIChJbm5lbilyYXVtLAorICAgICBpbiBkZW0gZHUgZGljaCBnZXJhZGUgYmVmaW5kZXN0IG5pY2h0IGFuZ2VicmFjaHQgaXN0LCBkYW5uIHNldHoKKyAgICAgZG9jaCBiaXR0ZSBlaW5lIGt1cnplIE1lbGR1bmcgYWIuCisKKyAgICAgRGllc2UgRmVobGVyIHdlcmRlbiBhdXNzZXJoYWxiIGRlciBSZWdpb24gZ2VzYW1tZWx0IHVuZCBiZWFyYmVpdGV0LAorICAgICBlaW5lIHNlaHIgbGFuZ2UgQWJ3ZXNlbmhlaXQgZGVzIFJNcyBzb2xsdGUgZGljaCBhbHNvIG5pY2h0IGhpbmRlcm4KKyAgICAgZGVuIEZlaGxlciB6dSBtZWxkZW4uCisKK1NJRUhFIEFVQ0g6CisgICAgIHR5cG8sIGlkZWUsIGRldGFpbCwgZmVobGVyCisKK0xFVFpURSBBZU5ERVJVTkc6CisgICAgIDI2LiBTZXAgMjAxMCwgR2xvaW5zb24KKwpkaWZmIC0tZ2l0IGEvZG9jL3BjbWQvc3BlaWNoZXJuIGIvZG9jL3BjbWQvc3BlaWNoZXJuCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmUxMzFiZmUKLS0tIC9kZXYvbnVsbAorKysgYi9kb2MvcGNtZC9zcGVpY2hlcm4KQEAgLTAsMCArMSwyMyBAQAorCitzcGVpY2hlcm4KKy0tLS0tLS0tLQorCisgS09NTUFORE86CisgICAgc3BlaWNoZXJuCisKKyBBUkdVTUVOVEU6CisgICAga2VpbmUKKworIEJFU0NIUkVJQlVORzoKKyAgICBTaWNoZXJlIGFsbGUgRGF0ZW4sIGRpZSBEZWluZW4gQ2hhcmFrdGVyIGJldHJlZmZlbi4gRGllc2VzIEtvbW1hbmRvIHdpcmQKKyAgICBiZWltIEF1c2xvZ2dlbiB1bmQgcmVnZWxtYWVzc2lnIGF1dG9tYXRpc2NoIGR1cmNoZ2VmdWVocnQuIEVpZ2VudGxpY2ggaXN0CisgICAgZGllc2VzIEtvbW1hbmRvIG51ciBmdWVyIGJlc29uZGVycyBhZW5nc3RsaWNoZSBTcGllbGVyLCBhbGxlcmRpbmdzIGthbm4gZXMKKyAgICBiZWkgZWluZW0gQWJzdHVyeiBkZXMgU3BpZWxzIGF1Y2ggc2VociBzaW5udm9sbCBzZWluLgorCisgICAgRWluZSBSZXN0YXVyaWVydW5nIGZpbmRldCBudXIgc3RhdHQsIHdlbm4gRHUgRGljaCBpbnMgU3BpZWwgZWlubG9nZ3N0LgorCisgU0lFSEUgQVVDSDoKKyAgICBlbmRlLCBzY2hsYWZlIChlaW4pCisKKyBMRVRaVEUgQWVOREVSVU5HOgorICAgIFRodSwgMjQuMDcuMTk5NywgMDk6MDA6MDAgdm9uIFdhcmdvbgpkaWZmIC0tZ2l0IGEvZG9jL3BjbWQvc3BpZWxkYXVlciBiL2RvYy9wY21kL3NwaWVsZGF1ZXIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMDI2ODc1YgotLS0gL2Rldi9udWxsCisrKyBiL2RvYy9wY21kL3NwaWVsZGF1ZXIKQEAgLTAsMCArMSwzMiBAQAorS09NTUFORE86CisJU3BpZWxkYXVlciA8RGF1ZXI+IE1pbnV0ZVtuXSBmdWVyIDxBbnphaGw+IFRhZ1tlXQorCVNwaWVsZGF1ZXIgPERhdWVyPiBTdHVuZGVbbl0gZnVlciA8QW56YWhsPiBUYWdbZV0KKworQVJHVU1FTlRFOgorCTxEYXVlcj4KKwkgIERhdWVyIGRlciBTcGllbHplaXQgcHJvIFRhZyBpbiBNaW51dGVuIG9kZXIgU3R1bmRlbgorCTxBbnphaGw+CisJICBEYXVlciBkZXIgU3BpZWx6ZWl0YmVzY2hyYWVua3VuZyBpbiBUYWdlbgorCitCRVNDSFJFSUJVTkc6CisJV2VubiBtYW4gdW5iZWRpbmd0IGVpbm1hbCBlaW5lIE11ZHBhdXNlIGVpbmxlZ2VuIG11ZXNzdGUsIHdlaWwgbWFuCisJc2ljaCB1bSBSTC1EaW5nZSB3aWUgS2xhdXN1cmVuLCBEaXBsb21hcmJlaXRlbiB1bmQgYWVobmxpY2hlCisJTmViZW5zYWVjaGxpY2hrZWl0ZW4genUga3VlbW1lcm4gaGF0LCB1bmQgd2VubiBtYW4gZ2VuYXUgd2Vpc3MsIGRhc3MKKwltYW4gc2ljaCBhdXMgZWlnZW5lbSBXaWxsZW4gbmljaHQgdm9tIEVpbmxvZ2dlbiBmZXJuaGFsdGVuIGthbm4sIHNvCisJa2FubiBtYW4gc2ljaCBtaXQgJ1NwaWVscGF1c2UnIGVpbmUgWndhbmdzcGF1c2UgZ2VuZWhtaWdlbi4KKwlXZW5pZ2VyIGRyYXN0aXNjaCB3aXJrdCBkZXIgQmVmZWhsICdzcGllbGRhdWVyJy4gSGllcm1pdCBzY2hyYWVua3QKKwltYW4gZGllIHBybyBUYWcgenVyIFZlcmZ1ZWd1bmcgc3RlaGVuZGUgWmVpdCBpbSBNVUQgZWluLiBTb21pdCBrYW5uCisJbWFuIGplZGVuIFRhZyBub2NoIHNjaG5lbGwgc2VpbmUgTWFpbHMgbGVzZW4gb2RlciBrdXJ6IEZyZXVuZGUKKwliZWdydWVzc2VuLiBJc3QgZGllIGFuZ2VnZWJlbmUgWmVpdCB1bSwgc28gd2lyZCBtYW4gYXV0b21hdGlzY2ggYXVzCisJZGVtIE1VRCBnZXdvcmZlbiB1bmQga2FubiBzaWNoIGVyc3QgYW0gbmFlY2hzdGVuIFRhZyB3aWVkZXIKKwllaW5sb2dnZW4uIEdpYnQgbWFuIGFscyBBbnphaGwgZGVyIFRhZ2UgMCBlaW4sIHNvIHdpcmQgZGllCisJQmVzY2hyYWVua3VuZyBhYmdlc2NoYWx0ZXQuIERhIG1hbiBkYW1pdCBkaWUgQmVzY2hyYWVua3VuZyBqZWRlcnplaXQKKwl3aWVkZXIgYXVmaGViZW4ga2FubiwgZ2Vob2VydCBhbHNvIHRyb3R6ZGVtIHZpZWwgRGlzemlwbGluIGRhenUsCisJZGllc2UgZWluenVoYWx0ZW4uIERlciBhbmZhbmdzIGVyd2FlaG50ZSBCZWZlaGwgJ1NwaWVscGF1c2UnIGlzdAorCWFsc28gZGV1dGxpY2ggd2lya3VuZ3N2b2xsZXIuCisKK1NJRUhFIEFVQ0g6CisJU3BpZWxwYXVzZSwgU2VsYnN0bG9lc2NodW5nCisKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKzE1LjExLjIwMTUsIFplc3N0cmEKZGlmZiAtLWdpdCBhL2RvYy9wY21kL3NwaWVscGF1c2UgYi9kb2MvcGNtZC9zcGllbHBhdXNlCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjdhM2YxYWEKLS0tIC9kZXYvbnVsbAorKysgYi9kb2MvcGNtZC9zcGllbHBhdXNlCkBAIC0wLDAgKzEsMzQgQEAKK0tPTU1BTkRPOgorCVNwaWVscGF1c2UgPEFuemFobD4gVGFnW2VdCisJU3BpZWxwYXVzZSBiaXMgPERhdHVtPgorCitBUkdVTUVOVEU6CisJPEFuemFobD4KKwkgIERhdWVyIGRlciBTcGllbHBhdXNlIGluIFRhZ2VuCisJPERhdHVtPgorCSAgRGF0dW0sIGJpcyB6dSBkZW0gZGllIFNwaWVscGF1c2UgZ2VsdGVuIHNvbGwuCisJICBJbSBGb3JtYXQgdHQubW0uW2pqXQorCitCRVNDSFJFSUJVTkc6CisJV2VubiBtYW4gdW5iZWRpbmd0IGVpbm1hbCBlaW5lIE11ZHBhdXNlIGVpbmxlZ2VuIG11ZXNzdGUsIHdlaWwgbWFuCisJc2ljaCB1bSBSTC1EaW5nZSB3aWUgS2xhdXN1cmVuLCBEaXBsb21hcmJlaXRlbiB1bmQgYWVobmxpY2hlCisJTmViZW5zYWVjaGxpY2hrZWl0ZW4genUga3VlbW1lcm4gaGF0LCB1bmQgd2VubiBtYW4gZ2VuYXUgd2Vpc3MsIGRhc3MKKwltYW4gc2ljaCBhdXMgZWlnZW5lbSBXaWxsZW4gbmljaHQgdm9tIEVpbmxvZ2dlbiBmZXJuaGFsdGVuIGthbm4sIHNvCisJa2FubiBtYW4gc2ljaCBtaXQgZGllc2VtIEJlZmVobCBlaW5lIFp3YW5nc3BhdXNlIGdlbmVobWlnZW4uCisJRGVyIFRhZywgYW4gZGVtIG1hbiBzaWNoIHp1ciBTcGllbHBhdXNlIGVudHNjaGxpZXNzdCwgd2lyZCBpbiBkaWUKKwlMYWVuZ2UgZGVyIFBhdXNlIG1pdCBlaW5nZXNjaGxvc3Nlbi4gTWl0IGBTcGllbHBhdXNlIDEgVGFnJyBrYW5uIG1hbgorCXNpY2ggYWxzbyBhbSBuYWVjaHN0ZW4gVGFnIHdpZWRlciBlaW5sb2dnZW4uCisJV2VubiBtYW4gbmljaHQgd2Vpc3MsIHdpZSBsYW5nIGRpZSBTcGllbHBhdXNlIHNlaW4gc29sbCwga2FubiBtYW4KKwlhbHMgQW56YWhsIC0xIGFuZ2ViZW4uIFVtIHNpY2ggd2llZGVyIGVpbmxvZ2dlbiB6dSBrb2VubmVuLCBtdXNzIG1hbgorCWRhbm4gYWxsZXJkaW5ncyBlaW5lbSBHb3R0IG9kZXIgRXJ6bWFnaWVyIEJlc2NoZWlkIHNhZ2VuIChtaXQgSGlsZmUKKwllaW5lcyBHYXN0ZXMuIDspCisJRGllIFNwaWVscGF1c2UgdHJpdHQgbWl0IGRlbSBuYWVjaHN0ZW4gQXVzbG9nZ2VuIGluIEtyYWZ0LiBEYWJlaSBpc3QKKwllcyBlZ2FsLCBvYiBtYW4gc2ljaCBtaXQgJ0VuZGUnIG9kZXIgJ1NjaGxhZmUgZWluJyBhdXNsb2dndC4KKwlFbnRzY2hlaWRldCBtYW4gc2ljaCwgZG9jaCBrZWluZSBQYXVzZSBhbnRyZXRlbiB6dSB3b2xsZW4sIHNvIGthbm4KKwltYW4gZGllIEFrdGlvbiBtaXQgJ1NwaWVscGF1c2UgMCBUYWdlJyB3aWVkZXIgcnVlY2tnYWVuZ2lnIG1hY2hlbi4KKworU0lFSEUgQVVDSDoKKwlzcGllbGRhdWVyLCBzZWxic3Rsb2VzY2h1bmcsIGxvZXNjaHNrcmlwdAorCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCitMYXN0IG1vZGlmaWVkOiBNb24gT2t0IDE2IDIwOjMyOjQ0IDIwMDAgYnkgU2lsdmFuYQpkaWZmIC0tZ2l0IGEvZG9jL3BjbWQvc3BvdHRlIGIvZG9jL3BjbWQvc3BvdHRlCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmU3MGExY2QKLS0tIC9kZXYvbnVsbAorKysgYi9kb2MvcGNtZC9zcG90dGUKQEAgLTAsMCArMSwyMCBAQAorc3BvdHRlCistLS0tLS0KKworIEtPTU1BTkRPOgorICAgIHNwb3R0ZSA8dGV4dD4KKyAgICBzcG90dGUgOjxlbW90ZT4KKworIEFSR1VNRU5URToKKyAgICA8dGV4dD4KKyAgICAgICAgV2FzIG1hbiBzbyB1ZWJlciBzZWluZSBPcGZlciBsYWVzdGVybiBtb2VjaHRlLgorCisgQkVTQ0hSRUlCVU5HOgorICAgIE1pdCBkZW0gS29tbWFuZG8gInNwb3R0ZSIga2FubiBtYW4gYXVmIGRlbSBNb2VyZGVyLUthbmFsIHNlaW5lIEdlZnVlaGxlCisgICAgenVtIGdlcmFkZSBlcmxlZ3RlbiBNb25zdGVyIGF1c2RydWVja2VuLiBEYXMga2xhcHB0IG5hdHVlcmxpY2ggbnVyIGJlaQorICAgIHNlbGJzdCBlcmxlZ3RlbiBNb25zdGVybiB1bmQgYXVjaCBudXIgYWxzIGRpcmVrdGUgQW50d29ydCBhdWYgZGllIGxldHp0ZW4KKyAgICBXb3J0ZSBkZXMgTlBDcy4KKworIFNJRUhFIEFVQ0g6CisgICAgZWJlbmVuLCB0b2V0ZQorCmRpZmYgLS1naXQgYS9kb2MvcGNtZC9zcHJ1Y2hlcm11ZWR1bmcgYi9kb2MvcGNtZC9zcHJ1Y2hlcm11ZWR1bmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMDA0ZGVmMwotLS0gL2Rldi9udWxsCisrKyBiL2RvYy9wY21kL3NwcnVjaGVybXVlZHVuZwpAQCAtMCwwICsxLDQ0IEBACisKK3NwcnVjaGVybXVlZHVuZworLS0tLS0tLS0KKworS09NTUFORE86CisgICAgc3BydWNoZXJtdWVkdW5nIDxhbHQgfCBuZXUgfCBub3JtYWw+CisKK0FSR1VNRU5UOgorICAgIGFsdDogICAgc2NoYWx0ZXQgZGllIHVuZ2VuYXVlcmUgYWx0ZSBTcHJ1Y2hlcm11ZWR1bmcgZWluCisKKyAgICBuZXU6CisgICAgbm9ybWFsOiBzY2hhbHRldCBkaWUgbmV1ZSAobm9ybWFsZSkgU3BydWNoZXJtdWVkdW5nIGVpbgorCitCRVNDSFJFSUJVTkc6CisgICAgWmF1YmVyc3BydWVjaGUgKGltIHdlaXRlc3RlbiBTaW5uZSwgYWxzbyBhdWNoIHouQi4gd3VuZGVyIGJlaSBLbGVyaWtlcm4KKyAgICB1bmQgU29uZGVyYW5ncmlmZmUgYmVpIEthZW1wZmVybiBlcnp3aW5nZW4gaW4gZGVyIFJlZ2VsIGVpbmUga3VyemUKKyAgICAoRXJtdWVkdW5ncy0pUGF1c2UsIGJpcyBtYW4gZGVuIG5hZWNoc3RlbiBTcHJ1Y2ggc3ByZWNoZW4ga2Fubi4KKyAgICBEaWVzZSBQYXVzZW4gd2FyZW4gYXVjaCB0ZWNobmlzY2hlbiBHcnVlbmRlbiBmcnVlaGVyIGltbWVyIFZpZWxmYWNoZSB2b24KKyAgICAycyB1bmQga3VlcnplcmUgUGF1c2VuIGdhYiBlcyBuaWNodC4gQXVzc2VyZGVtIGJlZ2FubmVuIGRpZXNlIFBhdXNlbiBpbW1lcgorICAgIHp1bSBCZWdpbm4gZWluZXIgS2FtcGZydW5kZS4KKyAgICBTZWl0IGVpbmlnZXIgWmVpdCBzaW5kIGRpZXNlIFBhdXNlbiBncnVuZHNhZXR6bGljaCBzZWt1bmRlbmdlbmF1LiBFaW5pZ2UKKyAgICBTcGllbGVyIGZpbmRlbiBkaWVzIGplZG9jaCB6dSB1bmdld29obnQuIERpZXNlIGtvZW5uZW4gbWl0IGRpZXNlbSBCZWZlaGwKKyAgICBlaW5lbiBhbHRlcm5hdGl2ZW4gTW9kdXMgZnVlciBkaWUgU3BydWNoZXJtdWVkdW5nIGVpbnNjaGFsdGVuLCB3ZWxjaGVyIGRhcworICAgIGFsdGUgVmVyaGFsdGVuIHdlaXRnZWhlbmQgd2llZGVyaGVyc3RlbGx0LgorCisgICAgQWJlcjogYmVudXR6dCBtYW4gZGllIGFsdGUgU3BydWNoZXJtdWVkdW5nLCB3ZXJkZW4gYWxsZSBFcm11ZWR1bmdzcGF1c2VuCisgICAgICAgICAgYXVmIFZpZWxmYWNoZSB2b24gMnMgYXVmZ2VydW5kZXQsIGQuaC4gc2llIHdlcmRlbiBnZ2YuIGxhZW5nZXIuIERpZXMKKyAgICAgICAgICBnaWx0IGF1Y2ggZnVlciBldHdhaWdlIE1hbGkgKHouQi4gd2lyZCBhdXMgZWluZW0gTWFsdXMgdm9uIDFzIHUuVS4KKyAgICAgICAgICBlaW4gTWFsdXMgdm9uIDJzKSB1bmQgZXR3YWlnZSBCb25pIHNpbmQgb2Z0IHVud2lya3NhbSwgd2VpbCBzaWUgYXVmCisgICAgICAgICAgVmllbGZhY2hlIHZvbiAycyBhYmdlcnVuZGV0IHdlcmRlbiAoei5CLiAtMXMgYXVmIDApLgorICAgICAgICAgIEF1c3NlcmRlbSBzaW5kIFNwcnVlY2hlIGF1ZiBHcnVuZGxhZ2UgZGVyIHNla3VuZGVuZ2VuYXVlbgorICAgICAgICAgIEVybXVlZHVuZ3NwYXVzZW4gYmVyZWNobmV0L2JhbGFuY2llcnQuCisKK0JFTUVSS1VOR0VOOgorICAgIEthbm4gbmljaHQgaW0gS2FtcGYgb2RlciB2b3IgQWJsYXVmIHZvbiAzbWluIG5hY2ggZWluZW0gS2FtcGYgZ2VhZW5kZXJ0CisgICAgd2VyZGVuLgorCitCRUlTUElFTEU6CisgICAgc3BydWNoZXJtdWVkdW5nIGFsdCAtPiBFcm11ZWR1bmdzcGF1c2VuIHdlcmRlbiAycyBhdWZnZXJ1bmRldAorICAgIHNwcnVjaGVybXVlZHVuZyBuZXUgLT4gc2VrdW5kZW5nZW5hdWUgRXJtdWVkdW5nc3BhdXNlbgorCitMRVRaVEUgQWVOREVSVU5HOgorMjAxMC0wMy0wMiwgWmVzc3RyYQorCmRpZmYgLS1naXQgYS9kb2MvcGNtZC9zdGVja2UgYi9kb2MvcGNtZC9zdGVja2UKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZDJhMGNhMQotLS0gL2Rldi9udWxsCisrKyBiL2RvYy9wY21kL3N0ZWNrZQpAQCAtMCwwICsxLDMxIEBACisKK3N0ZWNrZQorLS0tLS0tCisKKyBLT01NQU5ETzoKKyAgICBzdGVja2UgPG9iamVrdD4gaW4gPGJlaGFlbHRlcj4KKyAgICBzdGVja2UgPHdhZmZlPiB3ZWcvenVydWVjaworCisgQVJHVU1FTlRFOgorCisgICAgIDxvYmpla3Q+CisgICAgICAgIEVpbiBiZWxpZWJpZ2VzIE9iamVrdCBpbiBEZWluZXIgUmVpY2h3ZWl0ZQorICAgICA8YmVoYWVsdGVyPgorICAgICAgICBFaW4gQmVoYWVsdGVyCisgICAgIDx3YWZmZT4KKyAgICAgICAgRGllIFdhZmZlLCBkaWUgRHUgZ2V6dWVja3QgaGFzdAorCisgQkVTQ0hSRUlCVU5HOgorICAgIGBzdGVja2UgKGluKScgaXN0IGRhcyBhbGxnZW1laW5lIEtvbW1hbmRvLCB1bSBHZWdlbnN0YWVuZGUgaW4gZWluZW0KKyAgICBCZWhhZWx0ZXIgenUgZGVwb25pZXJlbi4gQmVoYWVsdGVyIGtvZW5uZW4gbmljaHQgYWxsZXMgYXVmbmVobWVuLCBhYmVyCisgICAgbWVpc3QgaXN0IGVzIGxlaWNodGVyLCBzY2h3ZXJlIEdlZ2Vuc3RhZW5kZSBpbiBlaW5lbSBCZWhhZWx0ZXIgenUKKyAgICB0cmFuc3BvcnRpZXJlbi4KKworICAgIGBzdGVja2UgKHdlZyknIGlzdCBkYXMgYWxsZ2VtZWluZSBLb21tYW5kbywgdW0genVtIEthbXBmIGdlenVlY2t0ZSBXYWZmZW4KKyAgICB3aWVkZXIgYWJ6dWxlZ2VuLgorCisgU0lFSEUgQVVDSDoKKyAgICBuaW1tLCB6dWVja2UKKworIExFVFpURSBBZU5ERVJVTkc6CisgICAgVGh1LCAyNC4wNy4xOTk3LCAwOTowMDowMCB2b24gV2FyZ29uCmRpZmYgLS1naXQgYS9kb2MvcGNtZC9zdG9wIGIvZG9jL3BjbWQvc3RvcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44OWI2OGNkCi0tLSAvZGV2L251bGwKKysrIGIvZG9jL3BjbWQvc3RvcApAQCAtMCwwICsxLDIyIEBACisKK3N0b3AKKy0tLS0KKworIEtPTU1BTkRPOgorICAgIHN0b3AgWzxnZWduZXI+XQorCisgQVJHVU1FTlRFOgorCisgICAgIDxnZWduZXI+IChvcHRpb25hbCkKKyAgICAgICAgRWluZXIgRGVpbmVyIEdlZ25lcgorCisgQkVTQ0hSRUlCVU5HOgorICAgIER1IGhvZXJzdCBhdWYsIERlaW5lIEdlZ25lciAob2RlciBudXIgZGVuIEdlZ25lciA8Z2VnbmVyPikgenUgdmVyZm9sZ2VuLgorICAgIEFsbGVyZGluZ3Mga2FubiBtYW4gbmljaHQgYXVmaG9lcmVuLCB2ZXJmb2xndCB6dSB3ZXJkZW4uCisKKyBTSUVIRSBBVUNIOgorICAgICBWZXJ3YW5kdDogdG9ldGUKKyAgICAgQW5kZXJlczogIGthZW1wZmVuLCBoZWlsdW5nLCBsZWJlbiwgdG9kIAorCisgTEVUWlRFIEFlTkRFUlVORzoKKyAgICBUaHUsIDI0LjA3LjE5OTcsIDA5OjAwOjAwIHZvbiBXYXJnb24KZGlmZiAtLWdpdCBhL2RvYy9wY21kL3N0dHkgYi9kb2MvcGNtZC9zdHR5Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjZkNWQwYzQKLS0tIC9kZXYvbnVsbAorKysgYi9kb2MvcGNtZC9zdHR5CkBAIC0wLDAgKzEsNDQgQEAKKworc3R0eQorLS0tLQorCisgS09NTUFORE86CisgICAgc3R0eSBbPHR5cD5dCisgICAgc3R0eSByZXNldAorCisgQVJHVU1FTlRFOgorCisgICAgIDx0eXA+CisgICAgICAgIFRlcm1pbmFsdHlwOiBgZHVtYicsIGB2dDEwMCcgb2RlciBgYW5zaScKKworIEJFU0NIUkVJQlVORzoKKyAgICBNaXQgZGllc2VtIEtvbW1hbmRvIGthbm5zdCBEdSBlaW5zdGVsbGVuLCBhbiB3YXMgZnVlciBlaW5lbSBUZXJtaW5hbCBEdQorICAgIHNpdHp0LiBGb2xnZW5kZSBUeXBlbiB3ZXJkZW4gbW9tZW50YW4gdW50ZXJzdHVldHp0OgorCisgICAgIGBhbnNpJyAgICBkYXMgVGVybWluYWwgdmVyc3RlaHQgRmFyYmNvZGVzIHVuZCBIZXJ2b3JoZWJ1bmdlbiB3aWUKKyAgICAgICAgICAgICAgIEZldHRzY2hyaWZ0CisgICAgIGB2dDEwMCcgICBkYXMgVGVybWluYWwgaXN0IGVpbmZhcmJpZywga2VubnQgYWJlciBGZXR0c2NocmlmdCB1LmFlLgorICAgICBgZHVtYicgICAgZGFzIFRlcm1pbmFsIHZlcnN0ZWh0IGtlaW5lIEhlcnZvcmhlYnVuZ2VuCisKKyAgICBEZXIgVGVybWluYWx0eXAgd2lyZCB1LmEuIGJlaSBLb21tYW5kb3Mgd2llICJ3ZXIiIGJlbnV0enQgdW0gYmVzdGltbXRlCisgICAgV29lcnRlciBvZGVyIFBocmFzZW4gaGVydm9yenVoZWJlbi4KKworICAgIE5hY2ggZGVtIEVpbnN0ZWxsZW4gZGVzIFRlcm1pbmFsdHlwIHNvbGx0ZSBiZWkgYHZ0MTAwJyB1bmQgYGFuc2knIGVpbmUKKyAgICBBdXNnYWJlIGVyZm9sZ2VuLCB3ZWxjaGUgZGllIG1vZWdsaWNoZW4gVGV4dGF0dHJpYnV0ZSBvZGVyIEZhcmJlbgorICAgIGRhcnN0ZWxsdC4gQmVpIEFOU0kgd2lyZCBkYXMgR2FuemUgdm9uIGVpbmVtIGxlc2JhcmVuIFRleHQgZ2Vmb2xndC4gU29sbHRlCisgICAgYWxzbyBkZXIgZm9sZ2VuZGUgU2F0egorCisgICAgU29sbHRlIGRpZXNlciBUZXh0IGhpZXIgbmljaHQgcmljaHRpZyBsZXNiYXIgc2VpbiwgYmVudXR6ZQorICAgIGRhcyBLb21tYW5kbyBzdHR5IHJlc2V0IQorCisgICAgbmljaHQgZXJzY2hlaW5lbiBvZGVyIG51ciBzY2h3ZXIgbGVzYmFyIHNlaW4sIHNvbGx0ZSBtYW4gbWl0IHN0dHkgcmVzZXQKKyAgICBkaWUgRmFyYmVuIHdpZWRlcmhlcnN0ZWxsZW4gb2RlciBlaW4gYW5kZXJlcyBUZXJtaW5hbCBlaW5zdGVsbGVuLgorCisgQUNIVFVORzoKKyAgICBNYW5jaGUgVGVybWluYWxzIHNpbmQgdS5VLiBuaWNodCBnYW56IEFOU0kga29tcGF0aWJlbCwgd2FzIGRhenUgZnVlaHJ0LAorICAgIGRhc3MgZGllIEZhcmJlIG5pY2h0IGF1c2dlc2NoYWx0ZXQgd2lyZC4gU29sbHRlIHNvZXR3YXMgcGFzc2llcmVuIGJpdHRlCisgICAgZGFzIEtvbW1hbmRvIHN0dHkgcmVzZXQgYmVudXR6ZW4sIHdlbGNoZXMgZWluZW4gd2Vpc3NlbiBIaW50ZXJncnVuZCB1bmQKKyAgICBzY2h3YXJ6ZW4gVm9yZGVyZ3J1bmQgZWluc3RlbGx0LgorCisgTEVUWlRFIEFlTkRFUlVORzoKKyAgICBUaHUsIDI0LjA3LjE5OTcsIDA5OjAwOjAwIHZvbiBXYXJnb24KZGlmZiAtLWdpdCBhL2RvYy9wY21kL3N1Y2hlIGIvZG9jL3BjbWQvc3VjaGUKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZTQzNmM0NAotLS0gL2Rldi9udWxsCisrKyBiL2RvYy9wY21kL3N1Y2hlCkBAIC0wLDAgKzEsNDMgQEAKKworc3VjaGUKKy0tLS0tLS0tLS0KKworIEtPTU1BTkRPOgorICAgIHN1Y2hlIDx3YXM+CisgICAgc3VjaCAgPHdhcz4KKyAgICBkdXJjaHN1Y2hlIDx3YXM+CisKKyBBUkdVTUVOVEU6CisKKyAgICAgPHdhcz4KKyAgICAgICAgRWluIEdlZ2Vuc3RhbmQgb2RlciBEZXRhaWwKKworIEJFU0NIUkVJQlVORzoKKyAgICBOaWNodCBhbGxlIEdlaGVpbW5pc3NlIGRpZXNlciBXZWx0IG9mZmVuYmFyZW4gc2ljaCBhdWYgZGVuIGVyc3RlbiBCbGljay4KKyAgICBCZWkgZWluaWdlbiBtdXNzIG1laW4gZWluIHp3ZWl0ZXMgbWFsIGhpbnNjaGF1ZW4uIE1hbmNoZSBEaW5nZSB2ZXJiZXJnZW4gCisgICAgc2ljaCBhYmVyIGF1Y2ggZGllc2VtIGdlbmF1ZXJlbiBCbGljay4gR2VuYXUgRGFubiBpc3QgZGllc2VyIEJlZmVobCAKKyAgICBzaW5udm9sbC4KKworICAgIFNpY2hlciBiaXN0IER1IHNjaG9ubWFsIGF1ZiBlaW5lbSBXZWcgb2RlciBpbiBlaW5lbSBXYWxkIHVlYmVyIGVpbmVuIAorICAgIExhdWJoYXVmZW4gZ2VzdG9scGVydCB1bmQgaGFzdCBEaWNoIGdlZnJhZ3QsIHdlbGNoZSBTY2hhZXR6ZSBlciB3b2hsIAorICAgIGJpcmd0LiBFaW4gZ2V6aWVsdGVzICdzdWNoZSBsYXViJyBvZGVyICdkdXJjaHN1Y2hlIGxhdWInIGJyaW5ndCBkYSBzbworICAgIG1hbmNoIG51ZXR6bGljaGVzIHp1bSBWb3JzY2hlaW4uCisKKyBBQ0hUVU5HOgorICAgIExlaWRlciBpc3QgZGFzIFZlcmhhbHRlbiB2b24gJ3N1Y2gnLCAnc3VjaGUnIHVuZCAndW50ZXJzdWNoZScgamV3ZWlzIAorICAgIGFiaGFlbmdpZyB2b24gZGVyIEtyZWF0aXZpdGFldCBkZXMgcHJvZ3JhbW1pZXJlbmRlbiBNYWdpZXJzLiBBdWNoIHdlbm4gCisgICAgZGllIGRyZWkgQmVmZWhsZSBhZWhubGljaCBrbGluZ2VuLCBoZWlzc3QgZGFzIG5pY2h0LCBkYXNzIHNpZSBhdWNoIGRhcyAKKyAgICBnbGVpY2hlIG1hY2hlbi4gCisKKyAgICBNYW5jaG1hbCBmaW5kZXQgbWFuIGV0d2FzLCB3ZW5uIG1hbiAnZHVyY2hzdWNoZSBsYXViJyBtYWNodCwgd2FlaHJlbmQgCisgICAgJ3N1Y2hlIGxhdWInIG51ciBlaW4gbGFobWVzICdEdSBzdWNoc3QsIGZpbmRlc3QgYWJlciBuaWNodHMuJyB6dW0gCisgICAgVm9yc2NoZWluIGJyaW5ndC4KKworICAgIE9mdCBmaW5kZXQgbWFuIGFiZXIgaW4gZGVyIFJhdW1iZXNjaHJlaWJ1bmcgSGlud2Vpc2UsIHdlbGNoZXIgQmVncmlmZiAKKyAgICBoaWVyIHBhc3NlbmQgaXN0LgorCisgU0lFSEUgQVVDSDoKKyAgICByaWVjaGUsIGxhdXNjaGUsIHNjaGF1LCB1bnRlcnN1Y2hlCisKKyBMRVRaVEUgQWVOREVSVU5HOgorICAgIE1vbiwgMDEuMDguMjAwMiwgMTQ6MDA6MDAgdm9uIFZhbmlvbgpkaWZmIC0tZ2l0IGEvZG9jL3BjbWQvc3ludGF4c2FtbWx1bmcgYi9kb2MvcGNtZC9zeW50YXhzYW1tbHVuZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5lZDViZDk3Ci0tLSAvZGV2L251bGwKKysrIGIvZG9jL3BjbWQvc3ludGF4c2FtbWx1bmcKQEAgLTAsMCArMSw0NSBAQAorCitzeW50YXhzYW1tbHVuZworLS0tLS0tLS0tLS0tLQorCisgS09NTUFORE86CisgICAgc3ludGF4c2FtbWx1bmcgW2phIHwgbmVpbl0KKworIEFSR1VNRU5URToKKyAgICBuaWNodHMsIGphIG9kZXIgbmVpbgorCisgQkVTQ0hSRUlCVU5HOgorICAgIFVtIEJlZmVobGUgaW0gTUcgZmxleGlibGVyIHp1IG1hY2hlbiB1bmQgU3BpZWxlciB1bmQgTWFnaWVyIHp1IGVudGxhc3RlbiwKKyAgICBpbmRlbSBkYXMgU3BpZWwgYmVzc2VyIGRpZSBBYnNpY2h0IGRlcyBTcGllbGVycyBiZWkgZWluZW0gQmVmZWhsIGVya2VubnQsCisgICAgc2FtbWVsbiB3aXIgKGFub255bWUpIFN0YXRpc3Rpa2VuIHVlYmVyIEJlZmVobGUsIHdlbGNoZSB2b24gU3BpZWxlcm4KKyAgICBiZW51dHp0IHdlcmRlbiwgc29mZXJuIFNwaWVsZXIgZGFtaXQgZWludmVyc3RhbmRlbiBzaW5kLgorICAgIE1pdCBkaWVzZW0gQmVmZWhsIGthbm5zdCBEdSBhbHNvIG1pdGhlbGZlbiwgU3ludGF4ZW4gaW0gTUcgenUgdmVyYmVzc2Vybi4KKworICAgIFdlbm4gRHUgZWludmVyc3RhbmRlbiBiaXN0LCBzcGVpY2hlcm4gd2lyIGFub255bSAoZC5oLiBvaG5lIERlaW5lbgorICAgIENoYXJuYW1lbiksIHdlbGNoZSBEZWluZXIgQmVmZWhsZSBlcmZvbGdyZWljaCB1bmQgbmljaHQgZXJmb2xncmVpY2ggd2FyZW4uCisgICAgVWVibGljaGUgS29tbXVuaWthdGlvbnNiZWZlaGxlICh6LkIuIHNhZ2UsIHRlaWxlLW1pdCwgcmZsdWVzdGVyLCBlYmVuZW4sCisgICAgdGVhbXJ1ZmUsIG1ydWZlLCBydWZlKSB3ZXJkZW4gZGFiZWkgbmljaHQgZ2VzcGVpY2hlcnQuCisgICAgCisgICAgTWl0ICdzeW50YXhzYW1tbHVuZyBqYScga2FubnN0IER1IGRpZSBTcGVpY2hlcnVuZyBlaW5zY2hhbHRlbiwgbWl0CisgICAgJ3N5bnRheHNhbW1sdW5nIG5laW4nIGthbm5zdCBEdSBzaWUgYXVzc2NoYWx0ZW4uCisKKyAgICBEaWUgZ2VzYW1tZWx0ZW4gRGF0ZW4ga29lbm5lbiBudXIgdm9uIEVyem1hZ2llcm4gb2RlciBHb2V0dGVybiBlaW5nZXNlaGVuCisgICAgd2VyZGVuLiBBbGxlcmRpbmdzIGthbm4gZXMgc2VpbiwgZGFzcyBkaWVzZSBhbmRlcmVuIE1hZ2llcm4gQmVpc3BpZWxlIGF1cworICAgIGRlciBTYW1tbHVuZyB6ZWlnZW4sIHNvZmVybiBkYXMgQmVpc3BpZWwga2VpbmVuIFJ1ZWNrc2NobHVzcyBhdWYgZWluZW4KKyAgICBTcGllbGVyIHp1bGFlc3N0LgorCisgICAgVWVicmlnZW5zIHNpbmQgdm9yIGFsbGVtIEtvbW1hbmRvcyBiZWltIEZvcnNjaGVuIGludGVyZXNzYW50LCB3ZW5pZ2VyCisgICAgYmVpbSBNZXR6ZWxuLCBJZGVsbiwgQ2hhdHRlbiBldGMuIChLb21tdW5pa2F0aW9uIHMuby4pCisgICAgRGFoZXIgd2VyZGVuIHp1ciBaZWl0IG51ciBCZWZlaGxlIGVyZmFzc3QsIHdlbGNoZSBtZWhyIGFscyAyIFdvZXJ0ZXIKKyAgICBlbnRoYWx0ZW4uCisKKyAgICBFaW4gQmVpc3BpZWwsIHdhcyBnZXNwZWljaGVydCB3aXJkOgorICAgIEJlZmVobCAgICAgICAgICAgICAgICAgICB8R2VnZW5kfEVyZm9sZ3xBbnphaGx8RlAKKyAgICB1bnQgamVkZW4gendlaXRlbiB2b3JoYW5nfGViZW5lIHwwICAgICB8MSAgICAgfDAKKworICAgIEVyZm9sZyBpc3QgYWxsZXMsIHdhcyBrZWluIE5vdGlmeWZhaWwgYXVzbG9lc3QsIEFuemFobCwgd2llIG9mdCBkaWVzZSBTeW50YXgKKyAgICBzY2hvbm1hbCBiZW51dHp0IHd1cmRlIHVuZCBGUCwgb2IgZGllc2UgU3ludGF4IChpcmdlbmR3bykgZWluZW4gRlAgZ2VnZWJlbgorICAgIGhhdC4KKworIExFVFpURSBBZU5ERVJVTkc6CisgICAgMTguMDYuMjAxNiwgWmVzc3RyYQpkaWZmIC0tZ2l0IGEvZG9jL3BjbWQvdGFzdGUgYi9kb2MvcGNtZC90YXN0ZQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4yZDE3M2Y4Ci0tLSAvZGV2L251bGwKKysrIGIvZG9jL3BjbWQvdGFzdGUKQEAgLTAsMCArMSw0NyBAQAorCit0YXN0ZSAoYWIpCitiZXJ1ZWhyZQorLS0tLS0tLS0tLS0tLS0KKworS09NTUFORE8KKyAgICB0YXN0ZQorICAgIHRhc3RlIDx3YXM+IFthbiA8b2JqZWt0PiB8IGFtIDxvYmpla3Q+XSBbaW4gbWlyIHwgaW0gcmF1bV0gW2FiXQorICAgIGJlcnVlaHJlIDx3YXM+IFthbiA8b2JqZWt0PiB8IGFtIDxvYmpla3Q+XSBbaW4gbWlyIHwgaW0gcmF1bV0KKworQVJHVU1FTlRFCisgICAgPG9iamVrdD4KKyAgICAgIEVpbiBHZWdlbnN0YW5kIGJ6dy4gTGViZXdlc2VuLCBkYXMgbWFuIGFidGFzdGVuIHdpbGwuCisKK0JFU0NIUkVJQlVORworICAgICJ0YXN0ZSIgaXN0IGRhcyBhbGxnZW1laW5lIEtvbW1hbmRvLCB1bSAoYWIpdGFzdGJhcmUgRGV0YWlscyBhbgorICAgIEdlZ2Vuc3RhZW5kZW4sIExlYmV3ZXNlbiBvZGVyIGluIFJhZXVtZW4gd2Focnp1bmVobWVuLiBIaWVyYmVpCisgICAgbGFlc3N0ICJ0YXN0ZSIgb2huZSBBcmd1bWVudGUgZGVuIFNwaWVsZXIgdW5nZXppZWx0IGltIFJhdW0gcnVtdGFzdGVuLCBpbgorICAgIGRlbSBlciBzaWNoIGRlcnplaXQgYmVmaW5kZXRzLiBPYiBtYW4gaGllcmJlaSB1ZWJlcmhhdXB0IGlyZ2VuZHdhcworICAgIHdhaHJuaW1tdCwgaGFlbmd0IHZvbSBNYWdpZXIgZGVzIFJhdW1lcyBhYi4KKyAgICBBbiBhbGxlbiBhbmRlcmVuIEdlZ2Vuc3RhZW5kZW4gYnp3LiBMZWJld2VzZW4gaW0gc2VsYmVuIFJhdW0gb2RlciBpbQorICAgIGVpZ2VuZW4gSW52ZW50YXIga2FubiBtYW4gbWl0ICJ0YXN0ZSAoYW4pIiBlYmVuZmFsbHMgdGFzdGVuLiBOaWNodCBpbW1lcgorICAgIGthbm4gbWFuIGplZG9jaCBldHdhcyAoZXIpdGFzdGVuLgorCisgICAgRGEgYmVpIE9iamVrdGVuIG1pdCBnbGVpY2hlbiB0YXN0YmFyZW4vZnVlaGxiYXJlbiBEZXRhaWxzIHp1ZXJzdCBhbiBpbQorICAgIFJhdW0gbGllZ2VuZGUgT2JqZWt0ZSBhYmdldGFzdGV0IHdlcmRlbiwga2FubiBtYW4gYW4gU2FjaGVuLCBkaWUgbWFuIGJlaQorICAgIHNpY2ggdHJhZWd0LCBhdWYgYWxsZSBGYWVsbGUgbWl0IGRlbSBadXNhdHogImluIG1pciIgYWJ0YXN0ZW4uCisKKyAgICBFcnRhc3RiYXJlIERldGFpbHMgd3VyZGVuIGltIE1vcmdlbmdyYXVlbiBlcnN0IDIwMTAgc3RhbmRhcmRpc2llcnQuCisgICAgRXJ3YXJ0ZXQgbmljaHQsIGRhc3MgZXMgaW4gYWxsZW4gUmFldW1lbiAvIGFuIGFsbGVuIEdlZ2Vuc3RhZW5kZW4gdGFzdGJhcmUKKyAgICBEZXRhaWxzIGdpYnQgLSBzaWUgc2luZCBlaGVyIHNlbHRlbi4KKworQkVJU1BJRUxFCisgICAgdGFzdGUgYm9kZW4gYWIKKyAgICB0YXN0ZSBib2RlbiAoaWRlbnRpc2NoIHp1ICJ0YXN0ZSBib2RlbiBhYiIpCisKKyAgICB0YXN0ZSBydWNrc2FjayBpbiBtaXIgYWIKKyAgICB0YXN0ZSBiYXVtc3R1bXBmIGltIHJhdW0gYWIKKyAgICB0YXN0ZSBzY2huYWxsZSBhbiBydWNrc2FjayBpbiBtaXIgYWIKKworU0lFSEUgQVVDSDoKKyAgICBiZXp1Z3NwdW5rdAorICAgIHNjaGF1LCByaWVjaGUsIGxhdXNjaGUsIGxpZXMKKworTEVUWlRFIEFFTkRFUlVOR0VOOgorICAgIDEzLjAzLjIwMTYsIFplc3N0cmEKKwpkaWZmIC0tZ2l0IGEvZG9jL3BjbWQvdGVpbGUgYi9kb2MvcGNtZC90ZWlsZQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5iNWEwYzM2Ci0tLSAvZGV2L251bGwKKysrIGIvZG9jL3BjbWQvdGVpbGUKQEAgLTAsMCArMSw1NyBAQAorCit0ZWlsZSAobWl0KQorLS0tLS0tLS0tLS0KKworIEtPTU1BTkRPOgorICAgIHRlaWxlIDx3ZW0+IG1pdCA8dGV4dD4KKyAgICB0ZWlsZSAuWzxucj5dIG1pdCA8dGV4dD4KKyAgICB0ZWlsZSA8d2VtPkA8bXVkPiBtaXQgPHRleHQ+CisgICAgKEFia3Vlcnp1bmc6IHRtIDx3ZW0+IDx0ZXh0PikKKyAgICAKKyAgICBlcnphZWhsZSA8d2VtPiA8dGV4dD4KKyAgICBlcnphZWhsZSAuWzxucj5dIDx0ZXh0PgorICAgIGVyemFlaGxlIDx3ZW0+QDxtdWQ+IDx0ZXh0PgorCisgQVJHVU1FTlRFOgorCisgICAgIDx3ZW0+CisgICAgICAgIE5hbWUgZGVzIFNwaWVsZXJzLCBkZW0gRHUgZXR3YXMgZXJ6YWVobGVuIHdpbGxzdAorICAgICA8bnI+CisgICAgICAgIEVpbmUgTnVtbWVyIGluIGRlciBNaXR0ZWlsdW5nc2dlc2NoaWNodGUKKyAgICAgPG11ZD4KKyAgICAgICAgTmFtZSBlaW5lcyBNVURzIGF1cyBkZXIgYG11ZHMnLUxpc3RlCisgICAgIDx0ZXh0PgorICAgICAgICBEaWUgTWl0dGVpbHVuZyBzZWxic3QKKworIEJFU0NIUkVJQlVORzoKKyAgICBTZW5kZXQgZGVtIGFuZ2VnZWJlbmVuIFNwaWVsZXIgZWluZSBOYWNocmljaHQuIEVzIHNwaWVsdCBrZWluZSBSb2xsZSwgd28KKyAgICBlciBzaWNoIGltIFNwaWVsIGJlZmluZGV0LiBNaXR0ZWlsZW4gdmVyYnJhdWNodCAqa2VpbmUqIE1hZ2llcHVua3RlLgorCisgICAgTWl0IGB0ZWlsZSA8d2VtPkA8bXVkPiBtaXQgPHRleHQ+JyBrYW5uIG1hbiBhdWNoIFNwaWVsZXJuIGluIGFuZGVyZW4gTVVEcworICAgIGV0d2FzIG1pdHRlaWxlbi4gPG11ZD4gbXVzcyBuaWNodCBkZXIga29tcGxldHRlIE11ZG5hbWUgc2VpbjsgZXMgZ2VudWVndAorICAgIGF1Y2ggZWluZSBlaW5kZXV0aWdlIEFia3Vlcnp1bmcuCisKKyAgICBEYXMgS29tbWFuZG8gbWVya3Qgc2ljaCwgd2VtIER1IGFsbGVzIGV0d2FzIG1pdHRlaWxzdC4gTWl0IGB0bWhpc3QnIGthbm5zdAorICAgIER1IERpciBhbnNlaGVuLCB3ZW0gRHUgc2Nob24gYWxsZXMgZXR3YXMgbWl0Z2V0ZWlsdCBoYXN0LiBGdWVyIHdlaXRlcmUKKyAgICBNaXR0ZWlsdW5nZW4ga2FubnN0IER1IGFuc3RlbGxlIGRlcyBOYW1lbnMgYXVjaCBkaWUgTnVtbWVyIGFuZ2ViZW4sICphYmVyCisgICAgQWNodHVuZyEqIERpZSBMaXN0ZSB3aXJkIGRhbmFjaCB3aWVkZXIgbmV1IHNvcnRpZXJ0IQorCisgICAgQmVhcmJlaXRldCBkZXIgU3BpZWxlciBlaW5lbiBUZXh0IG9kZXIgbGllc3QgZXIgaXJnZW5kZXR3YXMsIHNvIHdlcmRlbgorICAgIE1pdHRlaWx1bmdlbiB1LlUuIGdlc3BlaWNoZXJ0IChkaWVzIHdpcmQgbWl0Z2V0ZWlsdCkuIERpZSBnZXNwZWljaGVydGVuCisgICAgTWl0dGVpbHVuZ2VuIGVyZmFlaHJ0IGRlciBhbmRlcmUgU3BpZWxlciwgd2VubiBlciBtaXQgZGVtIExlc2VuIG9kZXIKKyAgICBCZWFyYmVpdGVuIGZlcnRpZyBpc3QuCisKKyAgICBTb2Zlcm4gRHUgRGVpbmUgVGVpbGUtbWl0LUhpc3RvcnkgKHMuIHRtaGlzdCkgZWluZ2VzY2hhbHRldCBoYXN0LCB3ZXJkZW4KKyAgICBhdXMtIHVuZCBlaW5nZWhlbmRlIFRNcyBnZXNwZWljaGVydC4gSGF0IERlaW4gR2VzcHJhZWNoc3BhcnRuZXIgc2VpbmUKKyAgICBIaXN0b3J5IGVpbmdlc2NoYWx0ZXQsIHdpcmQgZWluIFRNLCB3YXMgRHUgaWhtIHNjaGlja3N0LCBiZWkgaWhtCisgICAgZ2VzcGVpY2hlcnQuIE1vZWNodGVzdCBEdSBkaWVzIG5pY2h0LCBrYW5uc3QgRHUgZGVuIEJlZmVobCAncmZsdWVzdGVyJworICAgIHZlcndlbmRlbiwgYmVpIHdlbGNoZW0gaW4ga2VpbmVtIEZhbGwgZGVyIEluaGFsdCBlaW5lcyBHZXNwcmFlY2hzCisgICAgZ2VzcGVpY2hlcnQgd2lyZC4KKworIFNJRUhFIEFVQ0g6CisgICAgZXJ3aWRlcmUsIHNhZ2UsIGZyYWdlLCBhbnR3b3J0ZSwgZmx1ZXN0ZXJlLCBnZXNwcmFlY2gsIHJ1ZmUsIGViZW5lbiwgd2VnLAorICAgIGlnbm9yaWVyZSwga29ib2xkLCBtdWRzLCBzZW5kZXJ3aWVkZXJob2x1bmcsIGtsaW5nZWx0b24sIHRtaGlzdCwKKyAgICByZmx1ZXN0ZXJlCisKKyBMRVRaVEUgQWVOREVSVU5HOgorICAgIDA5LjA4LjIwMDgsIFplc3N0cmEKZGlmZiAtLWdpdCBhL2RvYy9wY21kL3RlbG5lZ3MgYi9kb2MvcGNtZC90ZWxuZWdzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjVkZmNjNTcKLS0tIC9kZXYvbnVsbAorKysgYi9kb2MvcGNtZC90ZWxuZWdzCkBAIC0wLDAgKzEsMjIgQEAKK0tPTU1BTkRPOgorICAgICAgICB0ZWxuZWdzIFtlaW5zdGVsbHVuZ10KKworQVJHVU1FTlRFOgorICAgICAgICBlaW5zdGVsbHVuZworICAgICAgICAgICogZWluIC0gU2NoYWx0ZXQgZGllIEFuemVpZ2UgZWluCisgICAgICAgICAgKiBhdXMgLSBTY2hhbHRldCBkaWUgQW56ZWlnZSBhdXMKKworICAgICAgICAgIFdpcmQga2VpbiBBcmd1bWVudCBhbmdlZ2ViZW4sIHdpcmQgZGllIGFrdHVlbGxlIEVpbnN0ZWxsdW5nCisgICAgICAgICAgYW5nZXplaWd0LgorICAgIAorQkVTQ0hSRUlCVU5HOgorICAgICAgICAgIE1hbiBrYW5uIGZlc3RsZWdlbiwgb2IgbWFuIEFlbmRlcnVuZ2VuIGRlciBGZW5zdGVyZ3JvZXNzZQorICAgICAgICAgIGFuZ2V6ZWlndCBiZWtvbW1lbiB3aWxsIG9kZXIgbmljaHQuIERpZXMgc2V0enQgdm9yYXVzLCBkYXNzCisgICAgICAgICAgbWFuIGVpbiBUZWxuZXQgYmVudXR6dCwgZGFzIFRlbG5ldG5lZ290aWF0aW9ucyB1bnRlcnN0dWV0enQuCisKKworU0lFSEUgQVVDSDoKKyAgICAgICAgemVpbGVuLCB0ZWxuZXQKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KK0xhc3QgbW9kaWZpZWQ6IFN1biBOb3YgIDcgMjM6MDA6MDAgMTk5OSBieSBUaWFtYWsKKwpkaWZmIC0tZ2l0IGEvZG9jL3BjbWQvdGVsbmV0IGIvZG9jL3BjbWQvdGVsbmV0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjdlMTFhMmEKLS0tIC9kZXYvbnVsbAorKysgYi9kb2MvcGNtZC90ZWxuZXQKQEAgLTAsMCArMSwzNCBAQAorCit0ZWxuZXQKKy0tLS0tLQorCisgS09NTUFORE86CisgICAgdGVsbmV0IDxrb21tYW5kbz4gPGFyZ3VtZW50ZT4KKworIEFSR1VNRU5URToKKworICAgICA8a29tbWFuZG8+CisgICAgICAgIEVpbmVzIHZvbiBkZW4gdW50ZW4gYW5nZWJlbmVuIEtvbW1hbmRvcywgdW0gYmVzdGltbXRlIEFzcGVrdGUgZGVyCisgICAgICAgIEtvbW11bmlrYXRpb24gZGVzIE11ZHMgbWl0IGRlbSBDbGllbnQgZWluenVzdGVsbGVuLgorCisgICAgIDxhcmd1bWVudHM+CisgICAgICAgIEFyZ3VtZW50ZSBmdWVyIGRhcyBqZXdlaWxpZ2UgdGVsbmV0IEtvbW1hbmRvCisKKyBCRVNDSFJFSUJVTkc6CisgICAgRGllcyBpc3QgZWluIFNhbW1lbGtvbW1hbmRvLCB1bSBFaW5mbHVzcyBhdWYgZGllIEVpZ2Vuc2NoYWZ0ZW4gZGVyCisgICAgS29tbXVuaWthdGlvbiB2b20gTXVkIG1pdCBkZW0gQ2xpZW50IG5laG1lbiB6dSBrb2VubmVuIG9kZXIgc2ljaCBkaWVzZQorICAgIGFuemVpZ2VuIHp1IGxhc3Nlbi4KKyAgICBNb2VnbGljaGUgS29tbWFuZG9zIHNpbmQ6CisgICAgKiBrZWVwYWxpdmUKKyAgICAgIFN0ZWxsdCBlaW4sIGRhc3MgcmVnZWxtYWVzc2lnIERhdGVuIHZvbSBNRyB6dW0gQ2xpZW50IGdlc2NoaWNrdCB3ZXJkZW4sCisgICAgICBkYW1pdCBkaWUgVmVyYmluZHVuZyBhdWZyZWNodGVyaGFsdGVuIHdpcmQuCisgICAgICBGdWVyIERldGFpbHMgcy4gSGlsZmVzZWl0ZSB0ZWxuZXRfa2VlcGFsaXZlCisgICAgKiBydHRpbWUKKyAgICAgIEF1c2dhYmUgZGVyIGxldHp0ZW4gZ2VtZXNzZW5lbiAicm91bmQtdHJpcCB0aW1lIiB2b20gTUcgenVtIENsaWVudAorICAgICAgaW4gTWlrcm9zZWt1bmRlbiAoMXMgPT0gMTAwMDAwMCBNaWtyb3Nla3VuZGVuKQorCisgU0lFSEUgQVVDSDoKKyAgICB0ZWxuZWdzLCB0ZWxuZXQga2VlcGFsaXZlLCB0ZWxuZXQgZ21jcAorCisgTEVUWlRFIEFlTkRFUlVORzoKKyAgICAwMy4wMi4yMDEzLCBaZXNzdHJhCmRpZmYgLS1naXQgYS9kb2MvcGNtZC90ZWxuZXRfa2VlcGFsaXZlIGIvZG9jL3BjbWQvdGVsbmV0X2tlZXBhbGl2ZQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5lZWNiZmQ3Ci0tLSAvZGV2L251bGwKKysrIGIvZG9jL3BjbWQvdGVsbmV0X2tlZXBhbGl2ZQpAQCAtMCwwICsxLDQyIEBACisKK3RlbG5ldCBrZWVwYWxpdmUKKy0tLS0tLS0tLS0tLS0tLS0KKworIEtPTU1BTkRPOgorICAgIHRlbG5ldCBrZWVwYWxpdmUgPGVpbnxhdXM+CisKKyBBUkdVTUVOVEU6CisKKyAgICAgPGVpbj4KKyAgICAgICAgU2NoYWx0ZXQgZGFzIFRlbG5ldC1LZWVwLUFsaXZlIGVpbi4KKyAgICAgPGF1cz4KKyAgICAgICAgU2NoYWx0ZXQgZGFzIFRlbG5ldC1LZWVwLUFsaXZlIGF1cy4KKworIEJFU0NIUkVJQlVORzoKKyAgICBFaW5pZ2UgU3BpZWxlciB1bmQgTWFnaWVyIGhhYmVuIGltbWVyIG1hbCB3aWVkZXIgUHJvYmxlbWUsIGRhc3Mgc2llIGJlaQorICAgIGxhZW5nZXJlciBJbmFrdGl2aXRhZXQgcmF1c2ZsaWVnZW4sIHdlaWwgaXJnZW5kZWluIFJvdXRlciBpbSBOZXR6d2VyayBkaWUKKyAgICBpbmFrdGl2ZSBWZXJiaW5kdW5nIGFiYnJpY2h0IG9kZXIgd2VpbCBhdXMgYWVobmxpY2hlbiBHcnVlbmRlbiBkaWUgU1NMCisgICAgVmVyYmluZHVuZyB0ZXJtaW5pZXJ0IHdpcmQuIERhaGVyIGJlc2l0emVuIGRpZSBTcGllbGVyc2hlbGxzIGVpbgorICAgIGVpbnNjaGFsdGJhcmVzICdUZWxuZXQtS2VlcC1BbGl2ZScuCisKKyAgICBEaWVzZSBGdW5rdGlvbiBzY2hpY2t0IGFsbGUgNCBtaW4gRGF0ZW4gYW4gZXVyZSBDbGllbnRzLCBkaWUgZGllc2UKKyAgICBuaWNodCBhbnplaWdlbiwgYWJlciBpaHJlcnNlaXRzIGJlYW50d29ydGVuL2Jlc3RhZXRpZ2VuIChzb2Zlcm4gZGVyIENsaWVudAorICAgIGRpZXMgdW50ZXJzdHVldHp0KS4gU28gZ2lidCBlcyBpbiBkZXIgVmVyYmluZHVuZyB6dW0gTXVkIG1pbi4gYWxsZSA0IG1pbgorICAgIERhdGVudmVya2Voci4gRGFzIHNvbGx0ZSBWZXJiaW5kdW5nc2FiYnJ1ZWNoZW4gZHVyY2ggSW5ha3Rpdml0YWV0CisgICAgdm9yYmV1Z2VuLgorCisgICAgQml0dGUgc2NoYWx0ZXQgZGllc2UgRnVua3Rpb24gYWJlciBudXIgZWluLCB3ZW5uIGlociBzaWUgYnJhdWNodCwgZC5oLgorICAgIG9obmUgc2llIFByb2JsZW1lIG1pdCBWZXJiaW5kdW5nc2FiYnJ1ZWNoZW4gYmVpbSBJZGVsbiBoYWJ0LgorICAgIEhhYnQgaWhyIFZlcmJpbmR1bmdzYWJicnVlY2hlLCBvaG5lIElkbGUgenUgc2Vpbiwgd2lyZCBldWNoIGRpZXNlcworICAgIEtlZXAtQWxpdmUgbmljaHRzIGhlbGZlbi4KKworICAgIE9obmUgQXJndW1lbnRlIHdpcmQgZGVyIGFrdHVlbGxlIFp1c3RhbmQgYW5nZXplaWd0LgorCisgICAgSGlud2VpcyBmdWVyIE1hZ2llcjogTWFnaWVyIGltIE1hZ2llcm1vZHVzIChtc2NoYXUgZWluKSBrb21tZW4gbGVpZGVyCisgICAgbmljaHQgaW4gZGVuIEdlbnVzcyBkaWVzZXMgRmVhdHVyZXMsIHdlaWwgc2llIGtlaW5lbiBIZWFydGJlYXQgaGFiZW4uCisKKyBTSUVIRSBBVUNIOgorICAgIHRlbG5lZ3MsIHRlbG5ldCBnbWNwCisKKyBMRVRaVEUgQWVOREVSVU5HOgorICAgIDA4LjEyLjIwMTUsIFplc3N0cmEKZGlmZiAtLWdpdCBhL2RvYy9wY21kL3RpdGVsIGIvZG9jL3BjbWQvdGl0ZWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMDkyMTIwMgotLS0gL2Rldi9udWxsCisrKyBiL2RvYy9wY21kL3RpdGVsCkBAIC0wLDAgKzEsMzIgQEAKKwordGl0ZWwKKy0tLS0tCisKKyBLT01NQU5ETzoKKyAgICB0aXRlbCA8dGV4dD4KKyAgICB0aXRlbCAwCisKKyBBUkdVTUVOVEU6CisKKyAgICAgPHRleHQ+CisgICAgICAgIERlciBUaXRlbHRleHQuCisKKyBCRVNDSFJFSUJVTkc6CisgICAgRGVyIFRleHQgd2lyZCBhbHMgbmV1ZXIgVGl0ZWwgZ2VzZXR6dC4gRGFiZWkgc29sbHRlIGRlciBUaXRlbCBuaWNodCBtaXQKKyAgICBlaW5lbSBTcGllbGVydGl0ZWwgaWRlbnRpc2NoIG9kZXIgZWluZW0gc29sY2hlbiBzZWhyIGFlaG5saWNoIHNlaW4uIERlcgorICAgIHVlYmVyZ2ViZW5lIFRleHQgZGFyZiBlaW4gQmFja3NwYWNlIChcYikgYW0gQW5mYW5nIGVuaGFsdGVuLCB3ZW5uCisgICAgZGFyYXVmIGVpbiBLb21tYSAoLCkgb2RlciBlaW4gSG9jaGtvbW1hICgnKSBmb2xndC4KKworICAgIFdpcmQga2VpbiBBcmd1bWVudCB1ZWJlcmdlYmVuLCBzbyB3aXJkIGRlciBha3R1ZWxsZSBUaXRlbCBnZWxvZXNjaHQuCisKKyAgICBXaXJkIDAgYWxzIEFyZ3VtZW50IHVlYmVyZ2ViZW4sIHNvIHdpcmQgZGVyIFRpdGVsIGR1cmNoIGRlbiBha3R1ZWxsZW4KKyAgICBHaWxkZW50aXRlbCBlcnNldHp0LgorICAgIAorICAgIERhcyBLb21tYW5kbyBzdGVodCBTcGllbGVybiBhYiBMZXZlbCAyMSB6dXIgVmVyZnVlZ3VuZywgc29mZXJuIHNpZSBzaWNoCisgICAgaW4gZGVyIEZyYXRlcm5pdGFzIERvbm8gQXJjaG1hZ29ydW0gZGllc2UgRmFlaGlna2VpdCBiZWlicmluZ2VuIGxhc3Nlbi4KKworIFNJRUhFIEFVQ0g6CisgICAgc3R1ZmVuLCBwcmVzYXkgKFNlaGVya29tbWFuZG8pCisKKyBMRVRaVEUgQWVOREVSVU5HOgorICAgIEZyaSwgMjUuMDUuMjAwNywgMTk6NTc6MDAgLSBNaXJpbApkaWZmIC0tZ2l0IGEvZG9jL3BjbWQvdG1oaXN0IGIvZG9jL3BjbWQvdG1oaXN0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmQ1ZjZjZjYKLS0tIC9kZXYvbnVsbAorKysgYi9kb2MvcGNtZC90bWhpc3QKQEAgLTAsMCArMSwzOCBAQAorCit0bWhpc3QKKy0tLS0tLS0tLS0tCisKKyBLT01NQU5ETzoKKyAgICB0bWhpc3QKKyAgICB0bWhpc3QgYXVzCisgICAgdG1oaXN0IG5hbWVuCisgICAgdG1oaXN0IGVpbgorICAgIHRtaGlzdCA8c3BpZWxlcm5hbWU+CisgICAgdG1oaXN0IDxucj4KKworIEJFU0NIUkVJQlVORzoKKyAgICBPaG5lIEFyZ3VtZW50IHdpcmQgZGllIGFrdHVlbGxlIFRlaWxlLW1pdC1IaXN0b3J5IGF1c2dlZ2ViZW4uCisgICAgJ3RtaGlzdCBhdXMnIHNjaGFsdGV0IGRpZSBTcGVpY2hlcnVuZyBrb21wbGV0dCBhdXMsCisgICAgJ3RtaGlzdCBuYW1lbicgc3BlaWNoZXJ0IG51ciBkaWUgTmFtZW4gZGVyIEdlc3ByYWVjaHNwYXJ0bmVyIHVuZCBlaW5pZ2UKKyAgICBzdGF0aXN0aXNjaGUgRGF0ZW4uCisgICAgJ3RtaGlzdCBlaW4nIHNwZWljaGVydCBOYW1lbiBkZXIgR2VzcHJhZWNoc3BhcnRuZXIgc293aWUgZGllIEluaGFsdGUgZGVyCisgICAgR2VzcHJhZWNoZS4KKyAgICAndG1oaXN0IDxuYW1lPicgZ2lidCBkYXMgR2VzcHJhZWNoIG1pdCBkZW0gYW5nZWdlYmVuZW4gU3BpZWxlciB3aWVkZXIsCisgICAgc29mZXJuIHNvIGVpbiBHZXNwcmFlY2ggZXhpc3RpZXJ0IHVuZCBkZXIgSW5oYWx0IGdlc3BlaWNoZXJ0IHd1cmRlLgorICAgICd0bWhpc3QgPG5yPicgZ2lidCBkYXMgR2VzcHJhZWNoIG1pdCBkZXIgTnVtbWVyIDxucj4gaW4gZGVyIEhpc3RvcnkKKyAgICB3aWVkZXIuCisKKyAgICBEaWUgR2VzcHJhZWNoc2luaGFsdGUgd2VyZGVuIGJlaW0gQXVzbG9nZ2VuIG1pdHRlbHMgJ3NjaGxhZmUgZWluJworICAgIGlubmVyaGFsYiB2b24gY2EuIDRzIGdlbG9lc2NodCwgYmVpICdlbmRlJyBzb2ZvcnQuIEJyaWNodCBkaWUgVmVyYmluZHVuZworICAgIHp1bSBNb3JnZW5HcmF1ZW4gYWIsIHdlcmRlbiBkaWUgR2VzcHJhZWNoc2luaGFsdGUgbmFjaCAxNW1pbiBnZWxvZXNjaHQuCisgICAgRXMgd2VyZGVuIG1heC4gMjAgR2VzcHJhZWNoZSBtaXQgamV3ZWlscyBtYXguIDUwIE5hY2hyaWNodGVuIGdlc3BlaWNoZXJ0LgorCisgICAgQWxsZSBtaXQgZGVtIEJlZmVobCAncmZsdWVzdGVyJyBtaXRnZXRlaWx0ZW4gTWl0dGVpbHVuZ2VuIHdlcmRlbiBuaWNodAorICAgIGdlc3BlaWNoZXJ0LgorCisgU0lFSEUgQVVDSDoKKyAgICBlcndpZGVyZSwgc2FnZSwgZnJhZ2UsIGFudHdvcnRlLCBmbHVlc3RlcmUsIGdlc3ByYWVjaCwgcnVmZSwgZWJlbmVuLCB3ZWcsCisgICAgaWdub3JpZXJlLCBrb2JvbGQsIG11ZHMsIHNlbmRlcndpZWRlcmhvbHVuZywga2xpbmdlbHRvbiwgdGVpbGUsIHJmbHVlc3RlcmUKKworIExFVFpURSBBZU5ERVJVTkc6CisgICAgU2EsIDA5LjA4LjIwMDgsIFplc3N0cmEKZGlmZiAtLWdpdCBhL2RvYy9wY21kL3RvZXRlIGIvZG9jL3BjbWQvdG9ldGUKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNjg5M2FjNgotLS0gL2Rldi9udWxsCisrKyBiL2RvYy9wY21kL3RvZXRlCkBAIC0wLDAgKzEsMzIgQEAKKwordG9ldGUKKy0tLS0tCisKKyBLT01NQU5ETzoKKyAgICB0b2V0ZSA8bW9uc3Rlcj4KKyAgICB0b2V0ZSBhbGxlCisKKyBBUkdVTUVOVEU6CisKKyAgICAgPG1vbnN0ZXI+CisgICAgICAgIERlciB6dSB0b2V0ZW5kZSBHZWduZXIKKworIEJFU0NIUkVJQlVORzoKKyAgICBTdGFydGV0IGVpbmUgQXR0YWNrZSBhdWYgZGFzIGFuZ2VnZWJlbmUgTW9uc3Rlci4gRXMgbXVzcyBzaWNoIGltIHNlbGJlbgorICAgIFJhdW0gYmVmaW5kZW4uIEVzIGlzdCBtb2VnbGljaCwgYXVzIGVpbmVtIGxhdWZlbmRlbiBLYW1wZiBoZXJhdXMgenUKKyAgICBmbGllaGVuLiBXZW5uIG1hbiBkYXMgZmxpZWhlbmRlIE1vbnN0ZXIgZmFlbmd0LCBkYXJmIG1hbiBkZW4gZXJzdGVuIFNjaGxhZworICAgIGF1c2Z1ZWhyZW4gKHVtZ2VrZWhydCBnaWx0IGRhcyBhbGxlcmRpbmdzIGF1Y2ghKS4KKworICAgIEVzIGlzdCB6d2FyIGF1Y2ggbW9lZ2xpY2gsIGFuZGVyZSBTcGllbGVyIHp1IHRvZXRlbi4gRGllcyBpc3QgamVkb2NoIHVudGVyCisgICAgU3RyYWZlIGdlc3RlbGx0LCBlcyBzZWkgZGVubiwgZGVyIEthbXBmIGZpbmRldCBpbiBleHRyYSBkYWZ1ZXIKKyAgICB2b3JnZXNlaGVuZW4gR2ViaWV0ZW4gc3RhdHQuCisKKyAgICBNaXQgJ3RvZXRlIGFsbGUnIGdyZWlmdCBtYW4gQUxMRSBwb3RlbnRpZWxsZW4gR2VnbmVyIGltIFJhdW0gYW4sIG1hbgorICAgIHNvbGx0ZSBzaWNoIGFsc28gZ3V0IHVlYmVybGVnZW4sIHdvIG1hbiBkaWVzZXMgS29tbWFuZG8gZWluc2V0enQuCisKKyBTSUVIRSBBVUNIOgorICAgICBWZXJ3YW5kdDogc3RvcCwgYW5ncmlmZnNtZWxkdW5nCisgICAgIEFuZGVyZXM6ICBrYWVtcGZlbiwgaGVpbHVuZywgbGViZW4sIHRvZCAKKworIExFVFpURSBBZU5ERVJVTkc6CisgICAgTW9uLCAyNS4wOC4yMDAzLCAxNTozMDowMCB2b24gQm9pbmcKZGlmZiAtLWdpdCBhL2RvYy9wY21kL3RvbiBiL2RvYy9wY21kL3RvbgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5lNjExODllCi0tLSAvZGV2L251bGwKKysrIGIvZG9jL3BjbWQvdG9uCkBAIC0wLDAgKzEsMjYgQEAKK0tPTU1BTkRPOgorCXRvbiBbPFN0YXR1cz5dCisKK0FSR1VNRU5URToKKwk8U3RhdHVzPgorCSAgRUlOOiBUb24gZWluc2NoYWx0ZW4uCisJICBBVVM6IFRvbiBhdXNzY2hhbHRlbi4KKworQkVTQ0hSRUlCVU5HOgorCURpZSBtZWlzdGVuIFRlcm1pbmFscyBrb2VubmVuIGVpbmZhY2hlIFBpZXB0b2VuZSBlcmtsaW5nZW4gbGFzc2VuLAorCXdhcyBhdWNoIGFuIGVpbmlnZW4gU3RlbGxlbiBoaWVyIGltIE1VRCB6dW0gRWluc2F0eiBrb21tdC4KKwlHZW5hbm50IHNlaWVuIGhpZXJiZWkgdm9ycmFuZ2lnICdlcndhcnRlJyB1bmQgJ3dlY2tlJywgd2VsY2hlIGVpbmVuCisJR3Jvc3N0ZWlsIGRlciB6d2VpZmVsaGFmdGVuIEdlcmFldXNjaGt1bGlzc2UgYXVzbWFjaGVuLiBOdW4gaXN0IGVzCisJbmljaHQgaW1tZXIgZ3VlbnN0aWcsIGRpZSBzY2h3ZXIgYXJiZWl0ZW5kZW4gTWVuc2NoZW4gaW4gZWluZW0KKwlSZWNoZW56ZW50cnVtIG1pdCBvZmZlbnNpY2h0bGljaCBuaWNodCBzdHVkaWVuYmV6b2dlbmVuIFRvZW5lbiB6dQorCXN0b2VyZW4uIFdlciBuaWNodCBkaWUgTW9lZ2xpY2hrZWl0IGhhdCwgZGllc2Ugc3RvZXJlbmRlbiBMYXV0ZSBhbQorCUNvbXB1dGVyIGRpcmVrdCBhYnp1c2NoYWx0ZW4sIGRlbSBzZWkgbWl0IGRpZXNlbSBCZWZlaGwgZ2Vob2xmZW46CisJICAndG9uIEVJTicgLSBFcyB3ZXJkZW4gVG9lbmUgdm9tIE1VRCBlcnpldWd0IChTdGFuZGFyZCkuCisJICAndG9uIEFVUycgLSBFcyB3ZXJkZW4ga2VpbmUgVG9lbmUgdm9tIE1VRCBlcnpldWd0LgorCSd0b24nIG9obmUgUGFyYW1ldGVyIHplaWd0IGRlbiBha3R1ZWxsZW4gU3RhdHVzLgorCitTSUVIRSBBVUNIOgorCWVyd2FydGUsIHdlY2tlCisKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKzExLjExLjIwMDYgWmVzc3RyYQpkaWZmIC0tZ2l0IGEvZG9jL3BjbWQvdHJhZ2UgYi9kb2MvcGNtZC90cmFnZQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4yMmIxNzA0Ci0tLSAvZGV2L251bGwKKysrIGIvZG9jL3BjbWQvdHJhZ2UKQEAgLTAsMCArMSwyNCBAQAorCit0cmFnZQorLS0tLS0KKworIEtPTU1BTkRPOgorICAgIHRyYWdlIDxrbGVpZHVuZz4KKworIEFSR1VNRU5URToKKworICAgICA8a2xlaWR1bmc+CisgICAgICAgIERhcyBhbnp1bGVnZW5kZSBLbGVpZHVuZ3NzdHVlY2sKKworIEJFU0NIUkVJQlVORzoKKyAgICBgdHJhZ2UnIGlzdCBlaW4gS29tbWFuZG8gdW0gS2xlaWR1bmcgYW56dWxlZ2VuLiBSb2J1c3RlIEtsZWlkdW5nIGJpZXRldAorICAgIG51ciBkYW5uIFNjaHV0eiBnZWdlbiBBbmdyaWZmZSwgd2VubiBzaWUgYW5nZXpvZ2VuIHd1cmRlLgorCisgICAgTWFuIGthbm4gbm9ybWFsZXJ3ZWlzZSB2b24gamVkZXIgQXJ0IEtsZWlkdW5nIG51ciBlaW4gU3R1ZWNrIGdsZWljaHplaXRpZworICAgIHRyYWdlbiAoendlaSBIdWV0ZSB1ZWJlcmVpbmFuZGVyIHNhZWhlbiBqYSBhdWNoIGV0d2FzIGxhZWNoZXJsaWNoIGF1cy4uLikuCisKKyBTSUVIRSBBVUNIOgorICAgIHp1ZWNrZSwgemllaGUgKGFuL2F1cykKKworIExFVFpURSBBZU5ERVJVTkc6CisgICAgVGh1LCAyNC4wNy4xOTk3LCAwOTowMDowMCB2b24gV2FyZ29uCmRpZmYgLS1naXQgYS9kb2MvcGNtZC90dXRvcmlhbCBiL2RvYy9wY21kL3R1dG9yaWFsCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmExODdmOTYKLS0tIC9kZXYvbnVsbAorKysgYi9kb2MvcGNtZC90dXRvcmlhbApAQCAtMCwwICsxLDI4IEBACisKK3R1dG9yaWFsCistLS0tLS0tLQorCisgQkVTQ0hSRUlCVU5HOgorCisgICBJbSBTdGFydHJhdW0gamVkZXIgUmFzc2Uga2FubiBtYW4gbWl0IGRlbSBCZWZlaGwgJ3R1dG9yaWFsJyBkYXMKKyAgIE5ldXNwaWVsZXJ0dXRvcmlhbCBiZWdpbm5lbi4gSW0gVHV0b3JpYWwgYmVrb21tdCBtYW4gdm9uIGVpbmVtCisgICBhbHRlbiBTdGVpbmJlaXNzZXIgZGllIHdpY2h0aWdzdGVuIEZhZWhpZ2tlaXRlbiBmdWVyIGRhcyBVZWJlcmxlYmVuCisgICBpbSBNb3JnZW5HcmF1ZW4gYmVpZ2VicmFjaHQuCisKKyAgIEVzIHdlcmRlbjogQmV3ZWd1bmcsIFVudGVyc3VjaGVuLCBLb21tdW5pa2F0aW9uLCBBa3Rpb25lbiwgUXVlc3RzLAorICAgQmVudXR6dW5nIHZvbiBDb250YWluZXJuLCBMaWNodHF1ZWxsZW4sIEhhbmRlbCB1bmQgS2FtcGYgYmVoYW5kZWx0LgorCisgICBEYXMgVHV0b3JpYWwga2FubiBwZXIgJ3VlYmVyc3ByaW5nZSB0dXRvcmlhbCcgdmVybGFzc2VuIHdlcmRlbiwgc29iYWxkCisgICBEdSBkYXMgZXJzdGUgTWFsIGRlbSBTdGVpbmJlaXNzZXIgYmVnZWduZXQgYmlzdC4gRHUgaGFzdCBqZWRlcnplaXQgZGllIAorICAgTW9lZ2xpY2hrZWl0LCBlcyB3aWVkZXIgenUgYmVnaW5uZW4sIGluZGVtIER1IGRlbiBCZWZlaGwgJ3R1dG9yaWFsJyBpbgorICAgRGVpbmVtIFN0YXJ0cmF1bSBlaW5naWJzdC4KKworICAgRGllIEdlc2Nod2luZGlna2VpdCBkZXIgSW5mb3JtYXRpb25lbiBpbm5lcmhhbGIgZGVzIFR1dG9yaWFscyBpc3QKKyAgIG1pdHRlbHMgJ3NjaG5lbGxlcicsICdsYW5nc2FtZXInLCAncGF1c2UnLCAnd2VpdGVyJywgJ2FiYnJ1Y2gnIHVuZAorICAgJ25ldXN0YXJ0JyBzdGV1ZXJiYXIuICAKKworU0lFSEUgQVVDSDogZWluZnVlaHJ1bmcsIGNpY2Vyb25lcywgaGlsZmUKKworIExFVFpURSBBZU5ERVJVTkc6CisgICAwNy4wNS4yMDE2LCBBcmF0aG9ybgorCmRpZmYgLS1naXQgYS9kb2MvcGNtZC90eXBvIGIvZG9jL3BjbWQvdHlwbwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi42NDcwNDg5Ci0tLSAvZGV2L251bGwKKysrIGIvZG9jL3BjbWQvdHlwbwpAQCAtMCwwICsxLDQ4IEBACit0eXBvCistLS0tCisKK0tPTU1BTkRPOgorICAgIHR5cG8gPHRleHQ+CisgICAgdHlwbyA8b2JqZWt0Pjo8dGV4dD4KKworQVJHVU1FTlRFOgorCisgICAgPHRleHQ+CisgICAgICAgIEVpbmUgTWl0dGVpbHVuZworICAgIDxvYmpla3Q+CisgICAgICAgIEVpbiBSZWZlcmVuem9iamVrdCwgZGFzIG5lYmVuIERpciBsaWVndCBvZGVyIGluIERlaW5lbSBJbnZlbnRhciBpc3QKKworQkVTQ0hSRUlCVU5HOgorICAgIEluIGRlbiBCZXNjaHJlaWJ1bmdlbiB2b24gUmFldW1lbiB1bmQgT2JqZWt0ZW4ga29tbXQgZXMgaW1tZXIgd2llZGVyIG1hbAorICAgIHp1IFRpcHBmZWhsZXJuLCBkaWUgYXVjaCBkaWUgVGVzdHBoYXNlIGRlcyBPYmpla3Rlcy9HZWJpZXRlcyB1bmVya2FubnQKKyAgICB1ZWJlcnN0YW5kZW4gaGFiZW4uCisKKyAgICBXZW5uIER1IGVpbmVuIFRpcHBmZWhsZXIgZ2VmdW5kZW4gaGFzdCwgc28ga2FubnN0IER1IGRlbiBWZXJhbnR3b3J0bGljaGVuCisgICAgbWl0IGRpZXNlbSBCZWZlaGwgZGF2b24gdW50ZXJyaWNodGVuLgorCisgICAgRnVlciBkZW4gTWFnaWVyIGlzdCBlcyBzZWhyIGhpbGZyZWljaCwgd2VubiBEdSBiZWkgaW4gTWVsZHVuZyBhbmdpYnN0LAorICAgIHdvIGdlbmF1IGRlciBUaXBwZmVobGVyIHp1IGZpbmRlbiBpc3QgKGFsc28gei5CLCB3ZWxjaGVzIERldGFpbCBkZW4KKyAgICBGZWhsZXIgZW50aGFlbHQpLgorCisgICAgWm9lZ2VyZSBuaWNodCwgd2VubiBEdSBlaW5lbiBUaXBwZmVobGVyIGZpbmRlc3Q7IEZlaGxlcm1pdHRlaWx1bmdlbiBzaW5kCisgICAgKnNlaHIqIHdpbGxrb21tZW4hCisKKyAgICBXZW5uIER1IGVpbmVuIFR5cG8gYW4gZWluZW0gYmVzdGltbXRlbiBPYmpla3Qgb2RlciBOUEMgZW50ZGVja3N0LCBrYW5uc3QKKyAgICBEdSBkaWVzZXMvZGllc2VuIGhpbnRlciBlaW5lbSBEb3BwZWxwdW5rdCBhbmdlYmVuLCBkYW1pdCBkZXIgZnVlciBkYXMKKyAgICBPYmpla3QgdmVyYW50d29ydGxpY2hlIE1hZ2llciBkaWUgTWVsZHVuZyBiZWtvbW10LgorICAgIFdlbm4gZGFzIE9iamVrdCBuaWNodCB6dSBmaW5kZW4gaXN0LCB3aXJkIGRpZSBnYW56ZSBFaW5nYWJlIGFscworICAgIE1lbGR1bmcgYXVmZ2VmYXNzdC4KKworQkVNRVJLVU5HOgorICAgIERlciBCZWZlaGwgJ3R5cG8nIGJlemllaHQgc2ljaCBiZWkgTmljaHRhbmdhYmUgZWluZXMgQmV6dWdzb2JqZWt0cworICAgIGF1ZiBkYXMgbGV0enRlIGJldHJhY2h0ZXRlIE9iamVrdC4gSGFzdCBEdSBhbHNvIGVpbiBPYmpla3QgdW50ZXJzdWNodCwKKyAgICBkYW5uIHdpcmQgZGllIE1lbGR1bmcgZnVlciBkaWVzZSBPYmpla3QgYWJnZWdlYmVuLiBIYXN0IER1IGFiZXIgZGVuCisgICAgUmF1bSB1bnRlcnN1Y2h0IG9kZXIgJ3NjaGF1JyBlaW5nZWdlYmVuLCB3aXJkIGRpZSBNZWxkdW5nIGZ1ZXIgRGVpbmVuCisgICAgbW9tZW50YW5lbiBSYXVtIGFiZ2VzZXR6dC4KKworU0lFSEUgQVVDSDoKKyAgICBidWcsIGlkZWUsIGRldGFpbCwgYmV6dWdzb2JqZWt0CisKK0xFVFpURSBBZU5ERVJVTkc6CisgICAgMDMuMDYuMjAxMywgWmVzc3RyYQorCmRpZmYgLS1naXQgYS9kb2MvcGNtZC91aHJtZWxkdW5nIGIvZG9jL3BjbWQvdWhybWVsZHVuZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi42NWI0ZGNmCi0tLSAvZGV2L251bGwKKysrIGIvZG9jL3BjbWQvdWhybWVsZHVuZwpAQCAtMCwwICsxLDMzIEBACisKK3Vocm1lbGR1bmcKKy0tLS0tLS0tLS0KKworIEtPTU1BTkRPOgorICAgIHVocm1lbGR1bmcgWzxtZWxkdW5nPl0KKworIEFSR1VNRU5URToKKworICAgICA8bWVsZHVuZz4KKyAgICAgICAgRGVpbmUgZ2FueiBwZXJzb2VubGljaGUgVWhybWVsZHVuZworCisgQkVTQ0hSRUlCVU5HOgorICAgIE9obmUgQXJndW1lbnRlIHdpcmQgRGVpbmUgYWt0dWVsbGUgVWhybWVsZHVuZyBhbmdlemVpZ3QuCisKKyAgICBNaXQgZGVtIEFyZ3VtZW50IDxtZWxkdW5nPiBrYW5uIG1hbiBzaWNoIGVpbmUgZWlnZW5lIFVocm1lbGR1bmcgc2V0emVuLgorICAgIERlciBQbGF0emhhbHRlciBmdWVyIGRpZSBVaHJ6ZWl0IGluIGRlciBNZWxkdW5nIGlzdCBgJWQnLgorCisgICAgRXMgZGFyZiBudXIgKmVpbiogYCVkJyBpbiBkZXIgTWVsZHVuZyB2b3Jrb21tZW4hCisKKyAgICBNaXQgZGVtIEJlZmVobCAidWhybWVsZHVuZyAwIiBrYW5uc3QgRHUgRGVpbmUgVWhybWVsZHVuZyBhdWYgZGllCisgICAgU3RhbmRhcmRtZWxkdW5nIHp1cnVlY2tzZXR6ZW4uCisKKyBCRUlTUElFTEU6CisKKyAgICA+IHVocm1lbGR1bmcgU2Nob24gJWQgVWhyLCB1bmQgaW1tZXIgbm9jaCBpbSBNVUQuCisKKyAgICBEYXMgZ2lidCBkYW5uIHpCLiBhYmVuZHMgdW0gemVobjoKKworICAgIFNjaG9uIDIyIFVociwgdW5kIGltbWVyIG5vY2ggaW0gTVVELgorCisgTEVUWlRFIEFlTkRFUlVORzoKKyAgICBTYW0sIDA4LjAzLjIwMDgsIDEzOjA4OjAwIHZvbiBBcmF0aG9ybgpkaWZmIC0tZ2l0IGEvZG9jL3BjbWQvdWx0cmFrdXJ6IGIvZG9jL3BjbWQvdWx0cmFrdXJ6Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmY5OGJkYTcKLS0tIC9kZXYvbnVsbAorKysgYi9kb2MvcGNtZC91bHRyYWt1cnoKQEAgLTAsMCArMSwyMSBAQAorCit1bHRyYWt1cnoKKy0tLS0tLS0tLQorCisgS09NTUFORE86CisgICAgdWx0cmFrdXJ6CisKKyBBUkdVTUVOVEU6CisgICAga2VpbmUKKworIEJFU0NIUkVJQlVORzoKKyAgICBTY2hhbHRldCBhdWYgZGVuICJVbHRyYWt1cnoiLU1vZHVzIHVtLiBXZW5uIER1IERpY2ggaW4gZGllc2VtIE1vZHVzCisgICAgYmVmaW5kZXN0LCBzaWVoc3QgRHUgKmtlaW5lKiBSYXVtYmVzY2hyZWlidW5nIC0gbnVldHpsaWNoLCB3ZW5uIG1hbgorICAgIGFsdGJla2FubnRlIFBmYWRlIGFibGFldWZ0LiBNaXQgZGVuIEtvbW1hbmRvcyBgbGFuZycgdW5kIGBrdXJ6JyBrYW5uc3QgRHUKKyAgICBkaWVzZW4gTW9kdXMgd2llZGVyIGJlZW5kZW4uCisKKyBTSUVIRSBBVUNIOgorICAgIGxhbmcsIGt1cnosIHNjaGF1LCBhdXNnYWVuZ2UKKworIExFVFpURSBBZU5ERVJVTkc6CisgICAgVGh1LCAyNC4wNy4xOTk3LCAwOTowMDowMCB2b24gV2FyZ29uCmRpZmYgLS1naXQgYS9kb2MvcGNtZC91bmFsaWFzIGIvZG9jL3BjbWQvdW5hbGlhcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4yNjIxYzEzCi0tLSAvZGV2L251bGwKKysrIGIvZG9jL3BjbWQvdW5hbGlhcwpAQCAtMCwwICsxLDQ2IEBACisKK3VuYWxpYXMKKy0tLS0tLS0KKworIEtPTU1BTkRPOgorICAgIHVuYWxpYXMgPGFsaWFzPgorICAgIHVuYWxpYXMgPG11c3Rlcj4KKworIEFSR1VNRU5URToKKworICAgICA8YWxpYXM+CisgICAgICAgIERhcyB6dSBlbnRmZXJuZW5kZSBBbGlhcworICAgICA8bXVzdGVyPgorICAgICAgICBNdXN0ZXIsIGRhcyBkaWUgenUgZW50ZmVybmVuZGVuIEFsaWFzZSBiZXNjaHJlaWJ0CisgICAgICAgIChEYXMgTXVzdGVyIG11c3MgZWluIHNvZy4gJ3JlZ3VsYXIgZXhwcmVzc2lvbicgc2Vpbi4pCisKKyBCRVNDSFJFSUJVTkc6CisgICAgKFN0YXR0IGB1bmFsaWFzJyBrYW5uIG1hbiBhdWNoIGB1bmFsaScgdmVyd2VuZGVuISkKKworICAgIEVzIHdlcmRlbiBlaW4gb2RlciBtZWhyZXJlIEFsaWFzZSBnZWxvZXNjaHQuCisKKyAgICAqQWNodHVuZyEqIEVzIGVyZm9sZ3Qga2VpbmUgU2ljaGVyaGVpdHNhYmZyYWdlIQorCisgQkVJU1BJRUxFOgorICAgIEVpbiBlaW56ZWxuZXMgQWxpYXMgbG9lc2NoZW46CisKKyAgICA+IHVuYWxpYXMgd2VnCisKKyAgICBBbGxlICJ0bSItQWxpYXNlIGxvZXNjaGVuIChtYW4gYmVhY2h0ZSBkZW4gLiB2b3IgZGVtICopOgorCisgICAgPiB1bmFsaWFzIHRtLioKKworICAgIEFsbGUgQWxpYXNlIGxvZXNjaGVuLCBkaWUgYXVmIFppZmZlcm4gbGllZ2VuOgorCisgICAgPiB1bmFsaWFzIFswLTldCisKKyAgICBBbGxlIEFsaWFzZSBsb2VzY2hlbjoKKworICAgID4gdW5hbGlhcyAuKgorCisgU0lFSEUgQVVDSDoKKyAgICBhbGlhcworCisgTEVUWlRFIEFlTkRFUlVORzoKKyAgIDAyLjEwLjIwMTIsIFplc3N0cmEKKwpkaWZmIC0tZ2l0IGEvZG9jL3BjbWQvdXJsIGIvZG9jL3BjbWQvdXJsCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjViY2FkNDIKLS0tIC9kZXYvbnVsbAorKysgYi9kb2MvcGNtZC91cmwKQEAgLTAsMCArMSwzNCBAQAorCit1cmwKKy0tLQorCisgS09NTUFORE86CisgICAgdXJsIFs8YWRyZXNzZT5dCisKKyBBUkdVTUVOVEU6CisKKyAgICAgPGFkcmVzc2U+IChvcHRpb25hbCkKKyAgICAgICAgRGllIG5ldWUgQWRyZXNzZQorCisgQkVTQ0hSRUlCVU5HOgorICAgIFdlbm4gRHUgZWluZSBlaWdlbmUgSG9tZVBhZ2UgaW0gSW50ZXJuZXQgaGFzdCB1bmQgc2llIGZ1ZXIgRGVpbmUKKyAgICBNaXRzcGllbGVyIGVycmVpY2hiYXIgbWFjaGVuIHdpbGxzdCwgc28ga2FubnN0IER1IGRhcyBtaXQgZGllc2VtCisgICAgS29tbWFuZG8gdHVuLgorCisgICAgT2huZSA8YWRyZXNzZT4gd2lyZCBkaWUgYWt0dWVsbGUgQWRyZXNzZSBhbmdlemVpZ3QsIGlzdCBzaWUgJ2tlaW5lJywKKyAgICBzbyB3aXJkIGRpZSBBZHJlc3NlIGdlbG9lc2NodC4KKworICAgIEF1cyA8YWRyZXNzZT4gd2VyZGVuIHNhZW10bGljaGUgSFRNTC1UYWdzIGVudGZlcm50IQorCisgICAgWnUgZmluZGVuIHNpbmQgZGllc2UgSW5mb3JtYXRpb25lbjoKKworICAgICBodHRwOi8vbWcubXVkLmRlLworICAgICAtPiBJbmZvcm1hdGlvbgorICAgICAgICAtPiBPbmxpbmUKKworIFNJRUhFIEFVQ0g6CisgICAgUGVyc29lbmxpY2hlIERldGFpbHM6IGVtYWlsLCBpY3EsIG1lc3Nlbmdlciwgb3J0CisgICAgU29uc3RpZ2VzOiAgICAgICAgICAgIGZpbmdlcgorCisgTEVUWlRFIEFlTkRFUlVORzoKKyAgICBTdW4sIDA1LjA3LjE5OTcsIDE3OjAwOjAwIHZvbiBSaWt1cwpkaWZmIC0tZ2l0IGEvZG9jL3BjbWQvdmVyYmVuIGIvZG9jL3BjbWQvdmVyYmVuCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjhjY2RhNTgKLS0tIC9kZXYvbnVsbAorKysgYi9kb2MvcGNtZC92ZXJiZW4KQEAgLTAsMCArMSwyOSBAQAorCit2ZXJiZW4KKy0tLS0tLQorCisgS09NTUFORE86CisgICAgdmVyYmVuCisKKyBBUkdVTUVOVEU6CisgICAga2VpbmUKKworIEJFU0NIUkVJQlVORzoKKyAgICBNaXQgZGllc2VtIEJlZmVobCB3ZXJkZW4gYWxsZSBtb2VnbGljaGVuIFZlcmJlbiBkZXIgU2VlbGUgYW5nZXplaWd0LiBEaWVzZQorICAgIFZlcmJlbiBoYWJlbiBpbiBkZXIgUmVnZWwga2VpbmVuIHRpZWZlbiBTaW5uLCBzb25kZXJuIGRpZW5lbiBkYXp1LCBlaW5lCisgICAgZ2V3aXNzZSBTdGltbXVuZyB6dSB2ZXJicmVpdGVuLgorCisgICAgRGEgZGllcyBlaW5lIGdhbnplIE1lbmdlIGFuIFZlcmJlbiBzaW5kLCBkZXJlbiBGdW5rdGlvbiBtZWlzdCBlaCBhdWYgZGVyCisgICAgSGFuZCBsaWVndCwgZXhpc3RpZXJlbiBmdWVyIHNpZSBrZWluZSBzZXBhcmF0ZW4gSGlsZmVzZWl0ZW4uCisKKyAgICBFaW5lIGt1cnplIEhpbGZlIHp1IGplZGVtIFZlcmIga2FubnN0IER1IGplZG9jaCBqZWRlcnplaXQgbWl0IGA8dmVyYj4gLWgnCisgICAgZXJoYWx0ZW4uCisKKyAgICBPZnQgZ2VudXR6dGUgVmVyYmVuIHNpbmQ6IGBsYWNoZScsIGBsYWVjaGVsIFthbl0nLCBgZGFua2UnLCBgYXJnbCcsCisgICAgYGdyaW5zZScsIGB1bWFybWUnLCBgd3VzY2hlbCcsIC4uLgorCisgU0lFSEUgQVVDSDoKKyAgICBhZHZlcmIKKworIExFVFpURSBBZU5ERVJVTkc6CisgICAgVGh1LCAyNC4wNy4xOTk3LCAwOTowMDowMCB2b24gV2FyZ29uCmRpZmYgLS1naXQgYS9kb2MvcGNtZC92b3JzaWNodCBiL2RvYy9wY21kL3ZvcnNpY2h0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjQ3NDg0YWMKLS0tIC9kZXYvbnVsbAorKysgYi9kb2MvcGNtZC92b3JzaWNodApAQCAtMCwwICsxLDM1IEBACisKK3ZvcnNpY2h0CistLS0tLS0tLQorCisgS09NTUFORE86CisgICAgdm9yc2ljaHQgPGxwPgorCisgQVJHVU1FTlRFOgorCisgICAgIDxscD4KKyAgICAgICAgWmFobCB6d2lzY2hlbiAwIHVuZCBkZXIgbWF4LiBaYWhsIERlaW5lciBMZWJlbnNwdW5rdGUKKworIEJFU0NIUkVJQlVORzoKKyAgICBTY2hhbHRldCBkZW4gYFZvcnNpY2h0c21vZHVzJyBlaW4uIFdlbm4gRHUgRGljaCBpbSBWb3JzaWNodHNtb2R1cworICAgIGJlZmluZGVzdCwgcmVubmVuIERlaW5lIEJlaW5lIG1pdCBEaXIgZm9ydCwgc29iYWxkIERlaW5lIExlYmVuc3B1bmt0ZQorICAgIHVudGVyIGRlbiBhbmdlZ2ViZW5lbiBXZXJ0IGdlc3Vua2VuIHNpbmQsIHVuZCBEdSBtaXQgZGVtIG5hZWNoc3RlbiBTY2hsYWcKKyAgICBpbiBkZXIgbmFlY2hzdGVuIEthbXBmcnVuZGUgYW4gZGVyIFJlaWhlIGJpc3QuCisKKyAgICBEaWUgQmVncnVlc3N1bmdzc2NobGFlZ2UsIGRpZSBtYW4gZXZlbnR1ZWxsIGF1c3RlaWx0IG9kZXIgZWluc3RlY2t0LAorICAgIGZhbGxlbiAqbmljaHQqIGluIGVpbmUgS2FtcGZydW5kZS4gRW50c3ByZWNoZW5kIHdpcmQgZGVyIFZvcnNpY2h0c21vZHVzCisgICAgaGllciBhdWNoICpuaWNodCogYWt0aXYhCisKKyAgICBEZXIgRGVmYXVsdG1vZHVzIGlzdCBkZXIgUHJpbnotRWlzZW5oZXJ6LU1vZHVzIGB2b3JzaWNodCAwJy4KKworICAgIERlciBWb3JzaWNodHNtb2R1cyBmdW5rdGlvbmllcnQgbmljaHQgaW1tZXIuIEVyIGthbm4gRGljaCB6d2FyIHJldHRlbiwKKyAgICB3ZW5uIER1IGVpbmUgbGFuZ3NhbWUgVmVyYmluZHVuZyBvZGVyIG11ZWRlIEZpbmdlciBiZXNpdHp0LCBhYmVyIGVzIGthbm4KKyAgICBpbW1lciBwYXNzaWVyZW4sIGRhc3MgZWluIE1vbnN0ZXIgRGlyIG1laHIgTGViZW5zcHVua3RlIG5pbW10IGFscyBEdSBub2NoCisgICAgaGFzdC4gTWFuY2htYWwgZmluZGVuIERlaW5lIEJlaW5lIGF1Y2gga2VpbmVuIEZsdWNodHdlZy4KKworIFNJRUhFIEFVQ0g6CisgICAgdG9ldGUsIHJlcG9ydAorICAgIChudXIgU2VoZXIpOiBmbHVjaHRyaWNodHVuZworCisgTEVUWlRFIEFlTkRFUlVORzoKKyAgICBUaHUsIDI0LjA3LjE5OTcsIDA5OjAwOjAwIHZvbiBXYXJnb24KZGlmZiAtLWdpdCBhL2RvYy9wY21kL3dlY2tlIGIvZG9jL3BjbWQvd2Vja2UKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYjBjYTRlMAotLS0gL2Rldi9udWxsCisrKyBiL2RvYy9wY21kL3dlY2tlCkBAIC0wLDAgKzEsMjQgQEAKK0tPTU1BTkRPOgorCXdlY2tlIDxMZWJld2VzZW4+CisKK0FSR1VNRU5URToKKwk8TGViZXdlc2VuPgorCSAgSGllciBnaWJ0IG1hbiBkYXMgTGViZXdlc2VuIGFuLCBiZWkgd2VsY2hlbSBtYW4gc2ljaCBiZW1lcmtiYXIKKwkgIG1hY2hlbiBtb2VjaHRlLgorCitCRVNDSFJFSUJVTkc6CisJV2lsbCBtYW4gc2ljaCBiZWkgaW5zYmVzb25kZXJlIGhlcnVtbHVuZ2VybmRlbiAoYXVjaCBpZGVsbiBnZW5hbm50KQorCVNwaWVsZXJuIGJlbWVya2JhciBtYWNoZW4sIHNvIGthbm4gZWluZW0gZGllc2VzIEtvbW1hbmRvCisJd2VpdGVyaGVsZmVuLiBFcyBlcnpldWd0IGJlaW0genUgV2Vja2VuZGVuIG5lYnN0IGVpbmVtIGtsZWluZW4gVGV4dCwKKwl3ZXIgdmVyendlaWZlbHQgdW0gQXVmbWVya3NhbWtlaXQgcmluZ3QsIGF1Y2ggZWluZW4ga3VyemVuIFBpZXB0b24uCisKK0JFTUVSS1VOR0VOOgorCURpZXNlciBUb24ga2FubiBzaWNoIGluIGdld2lzc2VuIFJMLVVtZ2VidW5nZW4gcmVjaHQgc3RvZXJlbmQKKwlhdXN3aXJrZW4uIERlciB6dSBXZWNrZW5kZSBrYW5uIHNpY2ggamVkb2NoIGRhZ2VnZW4gbWl0IGRlbSBLb21tYW5kbworCSd0b24gQVVTJyB3ZWhyZW4uCisKK1NJRUhFIEFVQ0g6CisJdG9uCisKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKzExLjExLjIwMDYgWmVzc3RyYQpkaWZmIC0tZ2l0IGEvZG9jL3BjbWQvd2VnIGIvZG9jL3BjbWQvd2VnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjY0MjBmYmEKLS0tIC9kZXYvbnVsbAorKysgYi9kb2MvcGNtZC93ZWcKQEAgLTAsMCArMSwzMCBAQAorCit3ZWcKKy0tLQorCisgS09NTUFORE86CisgICAgd2VnIFs8dGV4dD5dCisKKyBBUkdVTUVOVEU6CisKKyAgICAgPHRleHQ+CisgICAgICAgIEVya2xhZXJ0IGRpZSBBYndlc2VuaGVpdAorCisgQkVTQ0hSRUlCVU5HOgorICAgIElzdCBtYW4gZWlubWFsIGZ1ZXIgbGFlbmdlcmUgWmVpdCBuaWNodCBhbndlc2VuZCB1bmQga2FubiBuaWNodCBhdWYKKyAgICBNaXR0ZWlsdW5nZW4gcmVhZ2llcmVuLCBzbyBrYW5uIG1hbiBkZW4gR3J1bmQgbWl0IGRpZXNlbSBLb21tYW5kbyBrdW5kIHVuZAorICAgIHp1IHdpc3NlbiB0dW4uCisKKyAgICBXZW5uIERpciBudW4gamVtYW5kIGV0d2FzIG1pdHRlaWx0LCBlcmhhZWx0IGVyIGRpZSBNZWxkdW5nCisKKyAgICA8bmFtZT4gaXN0IGdlcmFkZSBuaWNodCBkYTogPHRleHQ+CisKKyAgICB1bmQgYnJhdWNodCBzaWNoIG5pY2h0IHp1IHd1bmRlcm4sIHdpZXNvIGtlaW5lIEFudHdvcnQga29tbXQuCisKKyAgICBPaG5lIEFyZ3VtZW50IHdpcmQgZGllIEtlbm56ZWljaG51bmcgd2llZGVyIGF1ZmdlaG9iZW4uCisKKyBTSUVIRSBBVUNIOgorICAgIHRlaWxlIChtaXQpLCBlcnphZWhsZSwgd2VnbWVsZHVuZworCisgTEVUWlRFIEFlTkRFUlVORzoKKyAgICAyNS4gQXByIDIwMTEgR2xvaW5zb24KZGlmZiAtLWdpdCBhL2RvYy9wY21kL3dlZ21lbGR1bmcgYi9kb2MvcGNtZC93ZWdtZWxkdW5nCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjk0NjFlNjkKLS0tIC9kZXYvbnVsbAorKysgYi9kb2MvcGNtZC93ZWdtZWxkdW5nCkBAIC0wLDAgKzEsMTkgQEAKKword2VnbWVsZHVuZworLS0tLS0tCisKKyBLT01NQU5ETzoKKyAgICB3ZWdtZWxkdW5nIDxuYW1lPgorCisgQVJHVU1FTlRFOgorCisgICAgIDxuYW1lPgorICAgICAgICBOYW1lIGVpbmVzIFNwaWVsZXJzCisKKyBCRVNDSFJFSUJVTkc6CisgICAgRGllc2VyIEJlZmVobCBnaWJ0IGRpZSBXZWctTWVsZHVuZyBlaW5lcyBTcGllbGVyIGF1cywgd2VubiBkaWVzZXIgZWluZSAKKyAgICBoYXQuIERhbm4gbXVzcyBtYW4gbmljaHQgamVkZXMgbWFsIGRlbiBTcGllbGVyIGZpbmdlcm4sIHdlbm4gbWFuIHdpc3NlbgorICAgIHdpbGwsIG9iIGRlciBncmFkIHdlZyBpc3Qgb2RlciBuaWNodC4KKworIExFVFpURSBBZU5ERVJVTkc6CisgICAgU29uLCAxMS4gQXVnIDIwMDIsIDE5OjA3OjAwIHZvbiBWYW5pb24KZGlmZiAtLWdpdCBhL2RvYy9wY21kL3dlciBiL2RvYy9wY21kL3dlcgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41NzI1MGNlCi0tLSAvZGV2L251bGwKKysrIGIvZG9jL3BjbWQvd2VyCkBAIC0wLDAgKzEsNTEgQEAKKword2VyCistLS0KKworIEtPTU1BTkRPOgorICAgIHdlciBbPG11ZD58PG9wdGlvbj5dCisKKyBBUkdVTUVOVEU6CisKKyAgICAgPG11ZD4gKG9wdGlvbmFsKQorICAgICAgICBFaW4gTVVELU5hbWUgYXVzIGRlciBgbXVkcyctTGlzdGUKKworICAgIDxvcHRpb25lbj4gKG9wdGlvbmFsKQorICAgICAgICAtcyAgemVpZ3Qgc3RhdHQgZGVyIEdpbGRlIGRpZSBIZXJrdW5mdCBkZXMgTXVkZGVycyBhbgorICAgICAgICAtayAgS3VyemZvcm0gZGVyIExpc3RlOyBzdGF0dCBQcmVzYXkrVGl0ZWwgbnVyIE5hbWUsIGRhZnVlciBhYmVyCisgICAgICAgICAgICBHaWxkZSB1bmQgSGVya3VuZnQKKworIEJFU0NIUkVJQlVORzoKKyAgICBFcyB3aXJkIGFuZ2V6ZWlndCwgd2VyIHNpY2ggZ2VyYWRlIGltIE1vcmdlbkdyYXVlbiAob2RlciBhbHRlcm5hdGl2IGltIE1VRAorICAgIDxtdWQ+KSBiZWZpbmRldC4gRGFzIEZvcm1hdCBkZXIgTGlzdGUgZnJlbWRlciBNVURzIGhhZW5ndCBpbW1lciB2b24gZGVtCisgICAgamV3ZWlsaWdlbiBNVUQgYWI7IGluIGRlciBMaXN0ZSBkZXMgTW9yZ2VuR3JhdWVuIHdpcmQgamVkZXIgQW53ZXNlbmRlIHdpZQorICAgIGZvbGd0IGF1ZmdlZnVlaHJ0OgorCisgICAgW1hdIFByZXNheSBOYW1lIFRpdGVsIC0gUmFzc2UvR2lsZGUKKworICAgIERpZSBCdWNoc3RhYmVuIGluIGVja2lnZW4gS2xhbW1lcm4gYW0gQW5mYW5nIGJlZGV1dGVuOgorCisgICAgIFtzXSAgIFNwaWVsZXIKKyAgICAgW1NdICAgU2VoZXIKKyAgICAgW3pdICAgWndlaXRzcGllbGVyCisKKyAgICAgW3RdICAgVGVzdHNwaWVsZXIKKyAgICAgW1RdICAgVGVzdHNwaWVsZXIgbWl0IFNlaGVybGV2ZWwKKworICAgICBbTF0gICBNYWdpZXJsZWhybGluZworICAgICBbbV0gICBWb2xsbWFnaWVyLCBvaG5lIFJlZ2lvbgorICAgICBbTV0gICBWb2xsbWFnaWVyLCBtaXQgUmVnaW9uCisgICAgIFtIXSAgIEhpbGZzbWFnaWVyCisgICAgIFtSXSAgIFJlZ2lvbnNjaGVmCisgICAgIFtXXSAgIFdlaXNlcgorICAgICBbRV0gICBFcnptYWdpZXIKKyAgICAgW0ddICAgR290dAorCisgICAgRGllIExpc3RlIHdpcmQgaW4gZHJlaSBTY2hyaXR0ZW4gc29ydGllcnQgKHZvbiBncm9iIG5hY2ggZmVpbik6CisgICAgTWFnaWVybGV2ZWwgLT4gU3BpZWxlcmxldmVsIC0+IGFscGhhYmV0aXNjaC4KKworIFNJRUhFIEFVQ0g6CisgICAga3dlciwga2t3ZXIsIG11ZHMKKworIExFVFpURSBBZU5ERVJVTkc6CisgICAgV2VkLCAwNS4wNC4yMDAwLCAwMTowMDowMCB2b24gVGlhbWFrCmRpZmYgLS1naXQgYS9kb2MvcGNtZC93aXJmIGIvZG9jL3BjbWQvd2lyZgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi43MWU1NTVmCi0tLSAvZGV2L251bGwKKysrIGIvZG9jL3BjbWQvd2lyZgpAQCAtMCwwICsxLDI1IEBACisKK3dpcmYgKHdlZykKKy0tLS0tLS0tLS0KKworIEtPTU1BTkRPOgorICAgIHdpcmYgPG9iamVrdD4gd2VnCisgICAgd2lyZiBhbGxlcyB3ZWcKKyAgICBsYXNzIDxvYmpla3Q+IGZhbGxlbgorICAgIGxhc3MgYWxsZXMgZmFsbGVuCisKKyBBUkdVTUVOVEU6CisKKyAgICAgPG9iamVrdD4KKyAgICAgICAgRGFzIHdlZ3p1d2VyZmVuZGUgT2JqZWt0CisKKyBCRVNDSFJFSUJVTkc6CisgICAgTWl0IGRpZXNlbSBLb21tYW5kbyBrYW5uc3QgRHUgR2VnZW5zdGFlbmRlIGF1cyBEZWluZW0gQmVzaXR6IHdpZWRlcgorICAgIGxvc3dlcmRlbi4gQWxsZXJkaW5ncyBsYXNzZW4gc2ljaCBtYW5jaGUgR2VnZW5zdGFlbmRlIG5pY2h0IHNvIG9obmUKKyAgICB3ZWl0ZXJlcyB3ZWdsZWdlbiEKKworIFNJRUhFIEFVQ0g6CisgICAgc3RlY2tlIChpbiksIG5pbW0gW2F1c10KKworIExFVFpURSBBZU5ERVJVTkc6CisgICAgVGh1LCAyNC4wNy4xOTk3LCAwOTowMDowMCB2b24gV2FyZ29uCmRpZmYgLS1naXQgYS9kb2MvcGNtZC96ZWlsZW4gYi9kb2MvcGNtZC96ZWlsZW4KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZmM1NTk0MQotLS0gL2Rldi9udWxsCisrKyBiL2RvYy9wY21kL3plaWxlbgpAQCAtMCwwICsxLDQxIEBACisKK3plaWxlbgorLS0tLS0tCisKKyBLT01NQU5ETzoKKyAgICB6ZWlsZW4gWzx6YWhsPl0KKyAgICB6ZWlsZW4gYXV0b1sgLTx6YWhsPl0KKyAgICB6ZWlsZW4gYWJzW29sdXRdIHwgcmVsW2F0aXZdCisKKyBBUkdVTUVOVEU6CisKKyAgICAgPHphaGw+CisgICAgICAgIEVpbmUgZ2FuemUgWmFobCB6d2lzY2hlbiAwIHVuZCAxMDAKKworIEJFU0NIUkVJQlVORzoKKyAgICBIaWVybWl0IGthbm4gbWFuIGRpZSBBbnphaGwgZGVyIFplaWxlbiBlaW5zdGVsbGVuLCBuYWNoIGRlciBlaW4gYG1vcmUnCisgICAgKHouQi4gaW4gZGVyIFRvcGxpc3RlKSBhbmhhZWx0LgorCisgICAgQmVpIDAgaGFlbHQgZGFzIGBtb3JlJyBuaWNodCBhbi4KKworICAgIE1pdCBkZXIgRWluc3RlbGx1bmcgYGF1dG8nIHdpcmQgZGllIFplaWxlbnphaGwgYXV0b21hdGlzY2ggZXJtaXR0ZWx0LAorICAgIHNvZmVybiBEZWluIFRlbG5ldCBkaWVzIHVudGVyc3R1ZXR6dCAoc2llaGUgYXVjaCBgaGlsZmUgdGVsbmVncycpLgorICAgIFVtIG5hY2ggZGVtIGBtb3JlJyBub2NoIGV0d2FzIFBsYXR6IHp1IGhhYmVuLCBrYW5uIG1hbiB6LkIuIG1pdAorICAgIGB6ZWlsZW4gYXV0byAtMycgZGllIFplaWxlbnphaGwgYmVpIGF1dG9tYXRpc2NoZXIgRWluc3RlbGx1bmcgdmVya2xlaW5lcm4uCisKKyAgICBNaXQgYHplaWxlbicgd2lyZCBkZXIgZGVyemVpdGlnIGVpbmdlc3RlbGx0ZSBXZXJ0IGFuZ2V6ZWlndC4KKyAgICBEZWZhdWx0bWFlc3NpZyBpc3QgPHphaGw+IGF1ZiAyMCBnZXNldHp0LgorCisgICAgTm9ybWFsZXJ3ZWlzZSB3aXJkIGluIGRlciBQcm9tcHR6ZWlsZSBkZXMgYG1vcmUnIGVpbmUgcmVsYXRpdmUgQW5nYWJlCisgICAgZ2VtYWNodCwgd2lldmllbCBQcm96ZW50IGRlcyBUZXh0ZXMgbWFuIHNjaG9uIGdlc2VoZW4gaGF0LiBNaXQKKyAgICBgemVpbGVuIGFic29sdXQnIChhdWNoIGFscyBgemVpbGVuIGFicycgYWJrdWVyemJhcikga2FubiBtYW4gYXVmIGVpbmUKKyAgICBhbHRlcm5hdGl2ZSBEYXJzdGVsbHVuZyB1bXNjaGFsdGVuLiBEYWJlaSB3ZXJkZW4gZGllIE51bW1lciBkZXIgdW50ZXJzdGVuCisgICAgYW5nZXplaWd0ZW4gWmVpbGUgc293aWUgZGllIEdlc2FtdHplaWxlbnphaGwgZGVzIFRleHRlcyBhbmdlemVpZ3QuCisKKyAgICBNaXQgYHplaWxlbiByZWwnIGthbm4gbWFuIHdpZWRlciBhdWYgZGllIHJlbGF0aXZlIEFuemVpZ2UgenVydWVja3NjaGFsdGVuLgorCisgU0lFSEUgQVVDSDoKKyAgICB0ZWxuZWdzCisKKyBMRVRaVEUgQWVOREVSVU5HOgorICAgIFN1biwgMDcuMTEuMTk5OSwgMjM6MzA6MDAgdm9uIFRpYW1hawpkaWZmIC0tZ2l0IGEvZG9jL3BjbWQvemVpdCBiL2RvYy9wY21kL3plaXQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNzE5YzhmNgotLS0gL2Rldi9udWxsCisrKyBiL2RvYy9wY21kL3plaXQKQEAgLTAsMCArMSwxNyBAQAorCit6ZWl0CistLS0tCisKKyBLT01NQU5ETzoKKyAgICB6ZWl0CisKKyBBUkdVTUVOVEU6CisgICAga2VpbmUKKworIEJFU0NIUkVJQlVORzoKKyAgICBEaWUgYWt0dWVsbGUgVWhyemVpdCBzYW10IERhdHVtIHdpcmQgYXVzZ2VnZWJlbi4KKworIFFVRVJWRVJXRUlTRTogdWhybWVsZHVuZywgemVpdHpvbmUKKworIExFVFpURSBBZU5ERVJVTkc6CisgICAgU2F0IEp1bCAgNiAxNDowNDo0MiAyMDAyIHZvbiBCYW1iaS4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9kb2MvcGNtZC96ZWl0em9uZSBiL2RvYy9wY21kL3plaXR6b25lCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjYzMTY5NGIKLS0tIC9kZXYvbnVsbAorKysgYi9kb2MvcGNtZC96ZWl0em9uZQpAQCAtMCwwICsxLDQ1IEBACisKK3plaXR6b25lCistLS0tLS0tLS0tCisKKyBLT01NQU5ETzoKKyAgICB6ZWl0em9uZSBbPHplaXRkaWZmZXJlbno+XQorCisgQVJHVU1FTlRFOgorCisgICAgIDx6ZWl0ZGlmZmVyZW56PgorICAgICAgICBFbnR3ZWRlcjogRWluIGdhbnp6YWhsaWdlciBXZXJ0LCBkZXIgZGVuIFplaXR1bnRlcnNjaGllZCB6d2lzY2hlbgorICAgICAgICAgICAgICAgICAgRGVpbmVyIFplaXR6b25lIHVuZCBCZXJsaW4gaW4gU3R1bmRlbiBhbmdpYnQuCisgICAgICAgIE9kZXI6IFVUQyArLy1pICAgRGVpbmUgWmVpdHpvbmUgaW0gQmV6dWcgYXVmIGRpZSBrb29yZGluaWVydGUKKyAgICAgICAgICAgICAgICAgICAgICAgICBXZWx0emVpdCBVVEMuCisKKyBCRVNDSFJFSUJVTkc6CisgICAgT2huZSBBcmd1bWVudGUgd2lyZCBEZWluZSBha3R1ZWxsZSBaZWl0em9uZSBhbmdlemVpZ3QuCisKKyAgICBNaXQgZGVtIEFyZ3VtZW50IDx6ZWl0ZGlmZmVyZW56PiBrYW5uIG1hbiBkaWUgZWlnZW5lIFplaXR6b25lCisgICAgZWluc3RlbGxlbi4gRGllc2UgWmVpdGRpZmZlcmVueiB3aXJkIGJlaSBkZXIgc3R1ZW5kbGljaGVuIFVocm1lbGR1bmcKKyAgICB1bmQgYmVpbSBCZWZlaGwgKHVocil6ZWl0IGJlcnVlY2tzaWNodGlndC4KKworIEJFSVNQSUVMRToKKworICAgID4gemVpdHpvbmUgVVRDIDAKKyAgICAKKyAgICBTb2xsdGUgbWFuIGFuZ2ViZW4sIHdlbm4gbWFuIGluIExvbmRvbiB3b2hudC4KKyAgICAKKyAgICA+IHplaXR6b25lIFVUQyAtMTAKKyAgICAKKyAgICBTb2xsdGUgbWFuIGFuZ2ViZW4sIHdlbm4gbWFuIGF1ZiBIYXdhaWkgd29obnQuCisgICAgCisgICAgPiB6ZWl0em9uZSAwCisgICAgCisgICAgSXN0IGRpZSBTdGFuZGFyZC1FaW5zdGVsbHVuZyB1bmQgZW50c3ByaWNodCBkZXIgZ2xlaWNoZW4gWmVpdHpvbmUKKyAgICB3aWUgQmVybGluLgorIAorIEFOTUVSS1VOR0VOOgorICAgIERpZSBtaXQgInplaXR6b25lIiBhbmdlZ2ViZW5lbiBaZWl0em9uZW4gYmVydWVja3NpY2h0aWdlbiBrZWluZSBsb2thbGVuCisgICAgU29tbWVyemVpdGVuIC0gdW50ZXIgYW5kZXJlbSwgd2VpbCBkaWUgc2VociBsYWVuZGVyc3BlemlmaXNjaCBzaW5kLiBadWRlbQorICAgIHNpbmQga2VpbmUgaGFsYmVuIFN0dW5kZW4gWmVpdHVudGVyc2NoaWVkZSBiZXJ1ZWNrc2ljaHRpZ3QsIHdpZSBzaWUgaW4KKyAgICBlaW5pZ2VuIGF1c3RyYWxpc2NoZW4gVGVycml0b3JpZW4gdWVibGljaCBzaW5kLgorCisgTEVUWlRFIEFlTkRFUlVORzoKKyAgICBTYXQsIDMwLjA5LjIwMDAsIDIxOjAwOjAwIHZvbiBTaWx2YW5hCmRpZmYgLS1naXQgYS9kb2MvcGNtZC96aWVoZSBiL2RvYy9wY21kL3ppZWhlCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjZkNzY2ZTEKLS0tIC9kZXYvbnVsbAorKysgYi9kb2MvcGNtZC96aWVoZQpAQCAtMCwwICsxLDI5IEBACisKK3ppZWhlCistLS0tLQorCisgS09NTUFORE86CisgICAgemllaGUgPGtsZWlkdW5nPiBhbiB8IGF1cworICAgIHppZWhlIDx3YWZmZT4gaGVydm9yCisKKyBBUkdVTUVOVEU6CisKKyAgICAgPGtsZWlkdW5nPgorICAgICAgICBFaW4gS2xlaWR1bmdzc3R1ZWNrCisgICAgIDx3YWZmZT4KKyAgICAgICAgRWluZSBXYWZmZQorCisgQkVTQ0hSRUlCVU5HOgorICAgIGB6aWVoZSAoYW4vYXVzKScgaXN0IGRhcyBhbGxnZW1laW5lIEtvbW1hbmRvLCB1bSBLbGVpZHVuZyBhbi0gdW5kCisgICAgYWJ6dWxlZ2VuLiBSb2J1c3RlIEtsZWlkdW5nIGJpZXRldCBudXIgZGFubiBTY2h1dHogZ2VnZW4gQW5ncmlmZmUsIHdlbm4KKyAgICBzaWUgYW5nZXpvZ2VuIHd1cmRlLgorCisgICAgYHppZWhlIChoZXJ2b3IpJyBpc3QgZGFzIGFsbGdlbWVpbmUgS29tbWFuZG8sIHVtIGVpbmUgV2FmZmUgenVtIEthbXBmIGluCisgICAgZGllIEhhbmQgenUgbmVobWVuOyBudXIgd2VubiBkaWUgV2FmZmUgaGVydm9yZ2V6b2dlbiB3dXJkZSwgd2lyZCBzaWUgaW0KKyAgICBLYW1wZiB6dW0gQW5ncmlmZiBlaW5nZXNldHp0LgorCisgU0lFSEUgQVVDSDoKKyAgICB0cmFnZSwgenVlY2tlLCBzdGVja2UgKHdlZykKKworIExFVFpURSBBZU5ERVJVTkc6CisgICAgVGh1LCAyNC4wNy4xOTk3LCAwOTowMDowMCB2b24gV2FyZ29uCmRpZmYgLS1naXQgYS9kb2MvcGNtZC96dWVja2UgYi9kb2MvcGNtZC96dWVja2UKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMzExNDBlMgotLS0gL2Rldi9udWxsCisrKyBiL2RvYy9wY21kL3p1ZWNrZQpAQCAtMCwwICsxLDIzIEBACisKK3p1ZWNrZQorLS0tLS0tCisKKyBLT01NQU5ETzoKKyAgICB6dWVja2UgPHdhZmZlPgorCisgQVJHVU1FTlRFOgorCisgICAgIDx3YWZmZT4KKyAgICAgICAgRWluZSBXYWZmZQorCisgQkVTQ0hSRUlCVU5HOgorICAgIGB6dWVja2UnIGlzdCBkYXMgYWxsZ2VtZWluZSBLb21tYW5kbywgdW0gZWluZSBXYWZmZSB6dW0gS2FtcGYgaW4gZGllIEhhbmQKKyAgICB6dSBuZWhtZW47IG51ciB3ZW5uIGRpZSBXYWZmZSBnZXp1ZWNrdCB3dXJkZSwgd2lyZCBzaWUgaW0gS2FtcGYgenVtCisgICAgQW5ncmlmZiBlaW5nZXNldHp0LiBFcyBrYW5uIGltbWVyIG51ciBlaW5lIFdhZmZlIGltIEthbXBmIGVpbmdlc2V0enQKKyAgICB3ZXJkZW4uIFNjaHdlcmUgV2FmZmVuIGtvZW5uZW4gYXVjaCBiZWhpbmRlcm4uCisKKyBTSUVIRSBBVUNIOgorICAgIHppZWhlIChhbi9hdXMpLCBzdGVja2UgKHdlZy96dXJ1ZWNrKQorCisgTEVUWlRFIEFlTkRFUlVORzoKKyAgICBUaHUsIDI0LjA3LjE5OTcsIDA5OjAwOjAwIHZvbiBXYXJnb24KZGlmZiAtLWdpdCBhL2RvYy9wY21kL3p3ZWl0aWVtYXJraWVydW5nIGIvZG9jL3BjbWQvendlaXRpZW1hcmtpZXJ1bmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNGE5MDZkMwotLS0gL2Rldi9udWxsCisrKyBiL2RvYy9wY21kL3p3ZWl0aWVtYXJraWVydW5nCkBAIC0wLDAgKzEsMzAgQEAKK0tPTU1BTkRPOgorICAgICAgICBad2VpdGllbWFya2llcnVuZyBbU3RhdHVzXQorCitBUkdVTUVOVEU6CisgICAgICAgIFN0YXR1cworICAgICAgICAgIEhpZXIgZ2lidCBtYW4gYW4sIG9iIHVuZCB3aWUgU3BpZWxlciBqZW1hbmRlbiBhbHMgWndlaXRpZQorICAgICAgICAgIGVya2VubmVuOgorICAgICAgICAgICogdW5zaWNodGJhciAtIGtlaW4gU3BpZWxlciBzaWVodCwgb2IgbWFuIFp3ZWl0aWUgaXN0CisgICAgICAgICAgKiBzaWNodGJhciAgIC0gU3BpZWxlciBzaWVodCwgZGFzcyBtYW4gWndlaXRpZSBpc3QsIGFiZXIgbmljaHQKKyAgICAgICAgICAgICAgICAgICAgICAgICAgd2Vzc2VuIFp3ZWl0aWUgbWFuIGlzdAorICAgICAgICAgICogTmFtZSAgICAgICAtIGFsbGUgU3BpZWxlciBzZWhlbiwgd2Vzc2VuIFp3ZWl0aWUgbWFuIGlzdAorCitCRVNDSFJFSUJVTkc6CisgICAgICAgIEplZGVyIFNwaWVsZXIgaW0gTVVEIGlzdCB2ZXJwZmxpY2h0ZXQsIHNlaW5lIFp3ZWl0aWVzIHp1IG1hcmtpZXJlbiwKKyAgICAgICAgdW0gZGFtaXQgVmVyYW50d29ydGxpY2hrZWl0ZW4gYmVzc2VyIHp1b3JkbmVuIHp1IGtvZW5uZW4uCisgICAgICAgIEVzIGlzdCBqZWRvY2ggbmljaHQgbm9ldGlnLCBkYXNzIGFuZGVyZSBTcGllbGVyIGRpZXNlIEluZm9ybWF0aW9uCisgICAgICAgIGVyaGFsdGVuLCBkYSBkaWVzIG51ciBmdWVyIE1hZ2llciBpbnRlcmVzc2FudCBpc3QuIERpZXNlciBCZWZlaGwKKyAgICAgICAgZXJtb2VnbGljaHQgZXMgbnVuLCBkaWVzZSBJbmZvcm1hdGlvbiB2b3IgYW5kZXJlbiBTcGllbGVybiBnYW56IG9kZXIKKyAgICAgICAgYXVjaCBudXIgdGVpbHdlaXNlIHp1IHZlcmJlcmdlbi4KKyAgICAgICAgTWFuIGthbm4gYW5nZWJlbiwgb2IgbWFuIGFscyBad2VpdGllIGVya2FubnQgd2lyZCB1bmQgb2Igc29nYXIKKyAgICAgICAgZXJrYW5udCB3aXJkLCB3ZXNzZW4gWndlaXRpZSBtYW4gaXN0LgorICAgICAgICBEaWUgU3RhbmRhcmRlaW5zdGVsbHVuZyBpc3QgaGllcmJlaSwgZGFzcyBhbmRlcmUgU3BpZWxlciBlcmtlbm5lbiwKKyAgICAgICAgb2IgbWFuIFp3ZWl0aWUgaXN0LCBuaWNodCBqZWRvY2gsIHdlc3NlbiBad2VpdGllIG1hbiBpc3QuCisKK1NJRUhFIEFVQ0g6CisgICAgICAgIHJlZ2VsbiwgWndlaXRzcGllbGVyLCBUZXN0c3BpZWxlciwgTWFnaWVyCisKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KK0xhc3QgbW9kaWZpZWQ6IFNvbiwgMjcuIE9rdCAyMDAyLCAxMDowMDowMCwgVmFuaW9uCisKZGlmZiAtLWdpdCBhL2RvYy9wcm9wcy8uc3ZuLWNvbW1pdC50bXAuc3dwIGIvZG9jL3Byb3BzLy5zdm4tY29tbWl0LnRtcC5zd3AKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOTkzMWU3ZAotLS0gL2Rldi9udWxsCisrKyBiL2RvYy9wcm9wcy8uc3ZuLWNvbW1pdC50bXAuc3dwCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2RvYy9wcm9wcy8uc3lub255bSBiL2RvYy9wcm9wcy8uc3lub255bQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5iYzNiNzNhCi0tLSAvZGV2L251bGwKKysrIGIvZG9jL3Byb3BzLy5zeW5vbnltCkBAIC0wLDAgKzEsNTQgQEAKK2F1dG9hdHRhY2sgUF9BR0dSRVNTSVZFCitQX0FVVE9BVFRBQ0sgUF9BR0dSRVNTSVZFCitob2NoemVpdCBQX01BUlJJRUQKK1NJX1NLSUxMRlVOQyBza2lsbF9pbmZvX2xpc3RlCitTSV9DTE9TVVJFIHNraWxsX2luZm9fbGlzdGUKK1NJX1NLSUxMQUJJTElUWSBza2lsbF9pbmZvX2xpc3RlCitTSV9TS0lMTERBTUFHRV9UWVBFIHNraWxsX2luZm9fbGlzdGUKK1NJX1NLSUxMREFNQUdFX01TRyBza2lsbF9pbmZvX2xpc3RlCitTSV9TS0lMTERBTUFHRV9NU0cyIHNraWxsX2luZm9fbGlzdGUKK1NJX0lOSEVSSVQgc2tpbGxfaW5mb19saXN0ZQorU0lfRElGRklDVUxUWSBza2lsbF9pbmZvX2xpc3RlCitTSV9MQVNUTElHSFQgc2tpbGxfaW5mb19saXN0ZQorU0lfVEVTVEZMQUcgc2tpbGxfaW5mb19saXN0ZQorU0lfR1VJTEQgc2tpbGxfaW5mb19saXN0ZQorU0lfRU5FTVkgc2tpbGxfaW5mb19saXN0ZQorU0lfRlJJRU5EIHNraWxsX2luZm9fbGlzdGUKK1NJX01BR0lDX1RZUEUgc2tpbGxfaW5mb19saXN0ZQorU0lfTEFTVF9VU0Ugc2tpbGxfaW5mb19saXN0ZQorU0lfTEVBUk5fUFJPQiBza2lsbF9pbmZvX2xpc3RlCitTSV9TS0lMTERVUkFUSU9OIHNraWxsX2luZm9fbGlzdGUKK1NJX1NQRUxMQk9PSyBza2lsbF9pbmZvX2xpc3RlCitTTV9SQUNFIHNraWxsX2luZm9fbGlzdGUKK1NJX1NQRUxMQ09TVCBza2lsbF9pbmZvX2xpc3RlCitTSV9USU1FX01TRyBza2lsbF9pbmZvX2xpc3RlCitTSV9TUF9MT1dfTVNHIHNraWxsX2luZm9fbGlzdGUKK1NJX1BSRVBBUkVfTVNHIHNraWxsX2luZm9fbGlzdGUKK1NJX1BSRVBBUkVfQlVTWV9NU0cgc2tpbGxfaW5mb19saXN0ZQorU0lfUFJFUEFSRV9BQk9SVF9NU0cgc2tpbGxfaW5mb19saXN0ZQorU0lfTk9NQUdJQyBza2lsbF9pbmZvX2xpc3RlCitTSV9OT01BR0lDX01TRyBza2lsbF9pbmZvX2xpc3RlCitTSV9TUEVMTEZBVElHVUUgc2tpbGxfaW5mb19saXN0ZQorU0lfWF9TUEVMTEZBVElHVUUgc2tpbGxfaW5mb19saXN0ZQorU0lfU0tJTExMRUFSTiBza2lsbF9pbmZvX2xpc3RlCitTSV9MRUFSTl9BVFRSSUJVVEUgc2tpbGxfaW5mb19saXN0ZQorU0lfU0tJTExBUkcgc2tpbGxfaW5mb19saXN0ZQorU0lfU0tJTExSRVNUUl9VU0Ugc2tpbGxfaW5mb19saXN0ZQorU0lfU0tJTExSRVNUUl9MRUFSTiBza2lsbF9pbmZvX2xpc3RlCitTSV9TS0lMTElORk8gc2tpbGxfaW5mb19saXN0ZQorU0lfU0tJTExJTkZPX0xPTkcgc2tpbGxfaW5mb19saXN0ZQorU0lfU0tJTExEQU1BR0Ugc2tpbGxfaW5mb19saXN0ZQorU0lfU0tJTExEQU1BR0VfQllfUk9XIHNraWxsX2luZm9fbGlzdGUKK1NJX1NQRUxMIHNraWxsX2luZm9fbGlzdGUKK1NJX0NPTExBVEVSQUxfREFNQUdFIHNraWxsX2luZm9fbGlzdGUKK1NJX05VTUJFUl9FTkVNSUVTIHNraWxsX2luZm9fbGlzdGUKK1NJX05VTUJFUl9GUklFTkRTIHNraWxsX2luZm9fbGlzdGUKK1NJX0RJU1RBTkNFIHNraWxsX2luZm9fbGlzdGUKK1NJX1dJRFRIIHNraWxsX2luZm9fbGlzdGUKK1NJX0RFUFRIIHNraWxsX2luZm9fbGlzdGUKK1NJX1NLSUxMSEVBTCBza2lsbF9pbmZvX2xpc3RlCitTSV9VU1Igc2tpbGxfaW5mb19saXN0ZQorU0lfUFJFUEFSRV9USU1FIHNraWxsX2luZm9fbGlzdGUKK1NJX0FUVEFDS19CVVNZX01TRyBza2lsbF9pbmZvX2xpc3RlCitTSV9OT19BVFRBQ0tfQlVTWSBza2lsbF9pbmZvX2xpc3RlCitTSV9BVFRBQ0tfQlVTWV9BTU9VTlQgc2tpbGxfaW5mb19saXN0ZQpkaWZmIC0tZ2l0IGEvZG9jL3Byb3BzL1BfQUJJTElUSUVTIGIvZG9jL3Byb3BzL1BfQUJJTElUSUVTCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmI4MmEwZjYKLS0tIC9kZXYvbnVsbAorKysgYi9kb2MvcHJvcHMvUF9BQklMSVRJRVMKQEAgLTAsMCArMSw5IEBACitOQU1FOgorICAgIFBfQUJJTElUSUVTICAgICAgICAgICAgICAgICAgICJhYmlsaXRpZXMiICAgICAgICAgICAgICAgICAgIAorCitERUZJTklFUlQgSU46CisgICAgL3N5cy9saXZpbmcvYXR0cmlidXRlcy5oCisKK0JFU0NIUkVJQlVORzoKKyAgICAgKioqIE9CU09MRVQhICoqKgorICAgICBTaWVoZSBQX05FV1NLSUxMUy4KZGlmZiAtLWdpdCBhL2RvYy9wcm9wcy9QX0FDIGIvZG9jL3Byb3BzL1BfQUMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYzYyZDc4NgotLS0gL2Rldi9udWxsCisrKyBiL2RvYy9wcm9wcy9QX0FDCkBAIC0wLDAgKzEsMjggQEAKK1BfQUMKKworTkFNRToKKyAgICAgUF9BQyAiYWMiCisKK0RFRklOSUVSVCBJTjoKKyAgICAgPGFybW91ci5oPgorCitCRVNDSFJFSUJVTkc6CisgICAgIERpZXNlIFByb3BlcnR5IGJlc2NocmVpYnQgZGllIFJ1ZXN0dW5nc2tsYXNzZSAoZW5nbDogYXJtb3VyIGNsYXNzKSwKKyAgICAgYWxzbyBkZW4gU2NodXR6LCBkZW4gZGllIFJ1ZXN0dW5nIGRlbSBUcmFlZ2VyIHZlcmxlaWh0LiBKZSBob2VoZXIgZGVyCisgICAgIFdlcnQgKGFscyBaYWhsKSwgdW0gc28gYmVzc2VyIGlzdCBkaWUgUnVlc3R1bmcuIE5lZ2F0aXZlIFdlcnRlIGJld2lya2VuCisgICAgIG5lZ2F0aXZlbiBTY2h1dHosIGQuaC4gZGVyIFNjaGFkZW4gd2lyZCB2ZXJncm9lc3NlcnQgc3RhdHQgdmVycmluZ2VydC4KKworQkVNRVJLVU5HRU46CisgICAgIFF1ZXJ5LSB1bmQgU2V0bWV0aG9kZW4gYXVmIFBfQUMgc29sbHRlbiB1bmJlZGluZ3QgdmVybWllZGVuIHdlcmRlbi4gU2llCisgICAgIGZ1ZWhyZW4gaW4gZGVyIFJlZ2VsIHp1IG1hc3NpdmVuIElua29uc2lzdGVuemVuIGltIE1lY2hhbmlzbXVzIGRlcgorICAgICBSdWVzdHVuZ3NiZXNjaGFlZGlndW5nIHVuZCAtcmVwYXJhdHVyLgorICAgICBGdWVyIGplZGVuIFJ1ZXN0dW5nc3R5cCBpc3QgaW4gPGNvbWJhdC5oPiBlaW5lIE9iZXJncmVuemUgZGVmaW5pZXJ0LAorICAgICBkaWUgbWFuIG5pY2h0IHVlYmVyc2NocmVpdGVuIGRhcmYuCisgICAgIFJ1ZXN0dW5nZW4gdm9tIFR5cCBBVF9NSVNDIGhhYmVuIGltbWVyIEFDIDAgdW5kIHdlcmRlbiBtaXQga2VpbmVuIAorICAgICBob2VoZXJlbiBXZXJ0ZW4gZ2VuZW1pZ3QuCisKK1NJRUhFIEFVQ0g6CisgICAgIC9zdGQvYXJtb3VyLmMsIFBfREFNQUdFRCwgRGFtYWdlKCkgUF9UT1RBTF9BQworCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiswMi4xMC4yMDA3LCBaZXNzdHJhCmRpZmYgLS1naXQgYS9kb2MvcHJvcHMvUF9BQ0NFUFRfUEVBQ0UgYi9kb2MvcHJvcHMvUF9BQ0NFUFRfUEVBQ0UKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMDdiNjNhMAotLS0gL2Rldi9udWxsCisrKyBiL2RvYy9wcm9wcy9QX0FDQ0VQVF9QRUFDRQpAQCAtMCwwICsxLDE4IEBACitQUk9QRVJUWQorICAgICBQX0FDQ0VQVF9QRUFDRSAgICAgICAgICAgICAgICAgICAgICAgICAgICJhY2NlcHRfcGVhY2UiCisKK0RFRklOSUVSVCBJTiAKKwkvc3lzL2NvbWJhdC5oCisKK0JFU0NIUkVJQlVORworCU1pdHRlbHMgc2V0emVuIERpZXNlciBQcm9wIGxhc3NlbiBzaWNoIGxlaWNodCBOUENzIGJhdWVuLAorCWRpZSB2b24gamVkZW0genUgYmVmcmllZGVuIHNpbmQuIFdlbm4gZGllIFByb3BlcnR5ID09IDEgaXN0LAorCWlzdCBkZXIgTlBDIGltbWVyIHdpZWRlciBiZWZyaWVkYmFyLCBzb25zdCBmdWVocnQgZGVyIE5QQyBkYXMKKwl1ZWJsaWNoZSBWZXJoYWx0ZW4gYXVzLgorCitTSUVIRSBBVUNICisgIFF1ZXJ5UGFjaWZ5KCksCisgIFBfUEVBQ0VfSElTVE9SWQorCitMRVRaVEUgQUVOREVSVU5HCiswMS4wNS4yMDA4LCBaZXNzdHJhCmRpZmYgLS1naXQgYS9kb2MvcHJvcHMvUF9BQ0hBVFMgYi9kb2MvcHJvcHMvUF9BQ0hBVFMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNDA5NzYyMAotLS0gL2Rldi9udWxsCisrKyBiL2RvYy9wcm9wcy9QX0FDSEFUUwpAQCAtMCwwICsxLDggQEAKK05BTUU6CisgICAgUF9BQ0hBVFMgICAgICAgICAgICAgICAgICAgICAgImFjaGF0cyIgICAgICAgICAgICAgICAgICAgICAgCisKK0RFRklOSUVSVCBJTjoKKyAgICAvc3lzL3Byb3BlcnRpZXMuaAorCitCRVNDSFJFSUJVTkc6CisgICAgIENoYXRzLCBkaWUgZGFzIE1vbnN0ZXIgaW0gS2FtcGYgYXVzZ2lidC4KZGlmZiAtLWdpdCBhL2RvYy9wcm9wcy9QX0FDSEFUX0NIQU5DRSBiL2RvYy9wcm9wcy9QX0FDSEFUX0NIQU5DRQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi45Y2NkZjE2Ci0tLSAvZGV2L251bGwKKysrIGIvZG9jL3Byb3BzL1BfQUNIQVRfQ0hBTkNFCkBAIC0wLDAgKzEsOCBAQAorTkFNRToKKyAgICBQX0FDSEFUX0NIQU5DRSAgICAgICAgICAgICAgICAiYWNoYXRfY2hhbmNlIiAgICAgICAgICAgICAgICAKKworREVGSU5JRVJUIElOOgorICAgIC9zeXMvcHJvcGVydGllcy5oCisKK0JFU0NIUkVJQlVORzoKKyAgICAgV2FocnNjaGVpbmxpY2hrZWl0IGZ1ZXIgZGllIEF0dGFjay1DaGF0LUF1c2dhYmUuCmRpZmYgLS1naXQgYS9kb2MvcHJvcHMvUF9BQ1RVQUxfTk9USUZZX0ZBSUwgYi9kb2MvcHJvcHMvUF9BQ1RVQUxfTk9USUZZX0ZBSUwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNDM1YTY0NgotLS0gL2Rldi9udWxsCisrKyBiL2RvYy9wcm9wcy9QX0FDVFVBTF9OT1RJRllfRkFJTApAQCAtMCwwICsxLDI3IEBACisqKioqKioqKioqKioqKioqKioqKioqIFZFUkFMVEVURSBQUk9QRVJUWSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKK05BTUU6CisgICAgIFBfQUNUVUFMX05PVElGWV9GQUlMICAgICAgICAgICJhY3R1YWxfbm90aWZ5X2ZhaWwiICAgICAgICAgIAorCitERUZJTklFUlQgSU46CisgICAgIC9zeXMvcGxheWVyLmgKKworQUNIVFVORzoKKyAgICAgRGllc2UgUHJvcCB3aXJkIG5pY2h0IG1laHIgZ2VzZXR6dCAodW5kIGF1Y2ggbmljaHQgbWVociBhYmdlZnJhZ3QpLCBkYSBMRAorICAgICBlaW5lIGVmdW4gaGF0LCB1bSBkYXMgT2JqZWt0IHp1IGVybWl0dGVsbiwgd2FzIGFscyBsZXR6dGVzIGVpbgorICAgICBub3RpZnlfZmFpbCgpIGdlc2V0enQgaGF0LCBlaW4gU3BlaWNoZXJuIGltIFNwaWVsZXIgYWxzbyB2b2VsbGlnCisgICAgIHVlYmVyZmx1ZXNzaWcgaXN0LgorCitCRVNDSFJFSUJVTkc6CisgICAgIElzdCBpbSBTcGllbGVyb2JqZWt0ICBnZXNldHp0IHVuZCBlbnRoYWVsdCBkYXMgT2JqZWt0LCB3ZWxjaGVzIHp1bGV0enQKKyAgICAgZWluZSBGZWhsZXJtZWxkdW5nIG1pdCBub3RpZnlfZmFpbCgpL19ub3RpZnlfZmFpbCgpIGVyZm9sZ3JlaWNoCisgICAgIHdhZWhyZW5kIGRlcyBha3R1ZWxsZW4gS29tbWFuZG9zIGFiZ2VzcGVpY2hlcnQgaGF0LgorCitCRU1FUktVTkdFTjoKKyAgICAgRGllbnQgZGF6dSwgYmVpIF9ub3RpZnlfZmFpbCgpIHp1IHVlYmVycHJ1ZWZlbiwgb2Igc2Nob24gdm9yaGVyIGVpbmUKKyAgICAgRmVobGVybWVsZHVuZyBnZXNldHp0IHd1cmRlLgorCitTSUVIRSBBVUNIOgorICAgICBBZGRDbWQoKSwgYWRkX2FjdGlvbigpCisgICAgIG5vdGlmeV9mYWlsKCksIF9ub3RpZnlfZmFpbCgpCisKKzEwLjAzLjIwMDcsIFplc3N0cmEKZGlmZiAtLWdpdCBhL2RvYy9wcm9wcy9QX0FESkVDVElWRVMgYi9kb2MvcHJvcHMvUF9BREpFQ1RJVkVTCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjNiNDRhNGYKLS0tIC9kZXYvbnVsbAorKysgYi9kb2MvcHJvcHMvUF9BREpFQ1RJVkVTCkBAIC0wLDAgKzEsMjIgQEAKK1BfQURKRUNUSVZFUworCitOQU1FOgorICAgICBQX0FESkVDVElWRVMgImFkamVjdGl2ZXMiCisKK0RFRklOSUVSVCBJTjoKKyAgICAgPHRoaW5nL2Rlc2NyaXB0aW9uLmg+CisKK0JFU0NIUkVJQlVORzoKKyAgICAgSGllciBzdGVodCBlaW4gQXJyYXkgdm9uIFN0cmluZ3MsIHdlbGNoZSBkaWUgSWRlbnRpZml6aWVydW5nIGRlcworICAgICBPYmpla3RlcyBlcmdhZW56ZW4uIERpZSBWZXJ3YWx0dW5nIGVyZm9sZ3QgdWViZXIgZGllIEZ1bmt0aW9uZW4KKyAgICAgQWRkQWRqZWN0aXZlKCkgdW5kIFJlbW92ZUFkamVjdGl2ZSgpLgorCitCRU1FUktVTkdFTjoKKyAgICAgTWFuIHNvbGx0ZSBhbiBkaWVzZXIgUHJvcGVydHkgbmljaHQgInZvbiBIYW5kIiBoZXJ1bWZ1bW1lbG4sIHNvbmRlcm4KKyAgICAgaW1tZXIgZGllIHp1Z2Vob2VyaWdlbiBGdW5rdGlvbmVuIGJlbnV0emVuIQorCitTSUVIRSBBVUNIOgorICAgICAvc3RkL3RoaW5nL2Rlc2NyaXB0aW9uLmMsIEFkZEFkamVjdGl2ZSgpLCBSZW1vdmVBZGplY3RpdmUoKQorCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCitMYXN0IG1vZGlmaWVkOiBTdW4gTWF5IDE5IDIwOjIyOjI0IDE5OTYgYnkgV2FyZ29uCmRpZmYgLS1naXQgYS9kb2MvcHJvcHMvUF9BRVJJQUxfSEVMUEVSUyBiL2RvYy9wcm9wcy9QX0FFUklBTF9IRUxQRVJTCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjI2MDY4ODQKLS0tIC9kZXYvbnVsbAorKysgYi9kb2MvcHJvcHMvUF9BRVJJQUxfSEVMUEVSUwpAQCAtMCwwICsxLDQ1IEBACitQX0FFUklBTF9IRUxQRVJTCisKK05BTUU6CisgICAgIFBfQUVSSUFMX0hFTFBFUlMgImxpYl9wX2FlcmlhbF9oZWxwZXJzIgorCitERUZJTklFUlQgSU46CisgICAgIDxsaXZpbmcvaGVscGVycy5oPgorCitCRVNDSFJFSUJVTkc6CisgICAgIERpZXNlIFByb3BlcnR5IGthbm4gaW4gYWxsZW4gTGViZXdlc2VuIGFiZ2VmcmFndCB3ZXJkZW4sIHVtIGRpZSBPYmpla3RlCisgICAgIHp1IGVybWl0dGVsbiwgZGllIGZ1ZXIgZGllIFVudGVyc3R1ZXR6dW5nIGJlaW0gRmxpZWdlbi9TZWdlbG4gYmVpIGRpZXNlbSAKKyAgICAgTGViZXdlc2VuIHJlZ2lzdHJpZXJ0IGhhYmVuLiBEaWUgRGF0ZW4gd2VyZGVuIGFscyBNYXBwaW5nIGRlciBmb2xnZW5kZW4KKyAgICAgRm9ybSB6dXJ1ZWNrZ2VsaWVmZXJ0OgorICAgICAoWyBPYmpla3QgOiBSdWVja2dhYmV3ZXJ0IHZvbiBkZXNzZW4gQ2FsbGJhY2stTWV0aG9kZSBdKQorICAgICBFaW5lIEVybGFldXRlcnVuZyBkYXp1IGZpbmRldCBzaWNoIGluIGRlciBEb2t1bWVudGF0aW9uIHp1IAorICAgICBSZWdpc3RlckhlbHBlck9iamVjdCgpLgorCitCRU1FUktVTkdFTjoKKyAgICAgRGllc2UgUHJvcGVydHkga2FubiBudXIgYWJnZWZyYWd0IHdlcmRlbi4KKyAgICAgRXMgaXN0IGVyd3VlbnNjaHQsIGRhc3MgZW50c3ByZWNoZW5kZSwgbmV1IGdlc2NoYWZmZW5lIFN0ZWxsZW4gamVnbGljaGUgCisgICAgIEhlbGZlciBha3plcHRpZXJlbiwgZGVyZW4gQ2FsbGJhY2stTWV0aG9kZSA+MCB6dXJ1ZWNrZ2lidC4KKworQkVJU1BJRUw6CisgICAgIFVtIHp1IGVybWl0dGVsbiwgb2IgZGVyIFNwaWVsZXIgbWluZGVzdGVucyBlaW4gT2JqZWt0IGJlaSBzaWNoIGhhdCwgZGFzIAorICAgICBiZWltIEZsaWVnZW4gaGlsZnQsIHN1Y2h0IG1hbiBhbGxlIE9iamVrdGUgYXVzIGRlbSBNYXBwaW5nIGhlcmF1cywgZGllCisgICAgIGVpbmVuIFdlcnQgPjAgZWluZ2V0cmFnZW4gaGFiZW4gdW5kIHBydWVmdCBkZXJlbiBBbnphaGw6CisKKyAgICAgbWFwcGluZyBhZXJpYWwgPSB0aGlzX3BsYXllcigpLT5RdWVyeVByb3AoUF9BRVJJQUxfSEVMUEVSUyk7CisgICAgIG9iamVjdCogaGVscGVycyA9IGZpbHRlciggYWVyaWFsLCBmdW5jdGlvbiBpbnQgKG9iamVjdCBoKSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIChhZXJpYWxbaF0+MCk7IH0pOworICAgICBpZiAoIHNpemVvZihoZWxwZXJzKSApIHsKKyAgICAgICB0ZWxsX29iamVjdCh0aGlzX3BsYXllcigpLCAiRHUgZXJoZWJzdCBEaWNoIG1pdCBIaWxmZSAiKworICAgICAgICAgaGVscGVyc1swXS0+bmFtZShXRVNTRU4sMSkrIiBlbGVnYW50IGluIGRpZSBMdWVmdGUuXG4iKTsKKyAgICAgfQorICAgICBlbHNlIHsKKyAgICAgICB0ZWxsX29iamVjdCh0aGlzX3BsYXllcigpLCAiRHUgaGFzdCBuaWNodHMgenVtIEZsaWVnZW4gYmVpIERpci5cbiIpOworICAgICB9CisKK1NJRUhFIEFVQ0g6CisgICAgIE1ldGhvZGVuOiAgICBSZWdpc3RlckhlbHBlck9iamVjdChMKSwgVW5yZWdpc3RlckhlbHBlck9iamVjdChMKQorICAgICBQcm9wZXJ0aWVzOiAgUF9IRUxQRVJfT0JKRUNUUywgUF9BUVVBVElDX0hFTFBFUlMKKworLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorMTIuMDMuMjAxNiwgQXJhdGhvcm4KKwpkaWZmIC0tZ2l0IGEvZG9jL3Byb3BzL1BfQUdFIGIvZG9jL3Byb3BzL1BfQUdFCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmFkNjM4OGEKLS0tIC9kZXYvbnVsbAorKysgYi9kb2MvcHJvcHMvUF9BR0UKQEAgLTAsMCArMSw4IEBACitOQU1FOgorICAgIFBfQUdFICAgICAgICAgICAgICAgICAgICAgICAgICJhZ2UiICAgICAgICAgICAgICAgICAgICAgICAgIAorCitERUZJTklFUlQgSU46CisgICAgL3N5cy9saXZpbmcvbGlmZS5oCisKK0JFU0NIUkVJQlVORzoKKyAgICAgQWx0ZXIgZGVzIFNwaWVsZXJzIGluIEhlYXJ0LUJlYXRzICgxIEhCID09IDIgU2VrdW5kZW4pCmRpZmYgLS1naXQgYS9kb2MvcHJvcHMvUF9BR0dSRVNTSVZFIGIvZG9jL3Byb3BzL1BfQUdHUkVTU0lWRQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5iMTBkOTdlCi0tLSAvZGV2L251bGwKKysrIGIvZG9jL3Byb3BzL1BfQUdHUkVTU0lWRQpAQCAtMCwwICsxLDM5IEBACitOQU1FOgorICAgIFBfQUdHUkVTU0lWRSAgICAgICAgICAgICAgICAgICJhZ2dyZXNzaXZlIiAgICAgICAgICAgICAgICAgIAorCitERUZJTklFUlQgSU46CisgICAgL3N5cy9wcm9wZXJ0aWVzLmgKKworQkVTQ0hSRUlCVU5HOgorCUdlc2V0enQsIHdlbm4gZGFzIFdlc2VuIHZvbiBzaWNoIGF1cyBBbmdyaWZmZSBzdGFydGV0LgorCisJVWVibGljaGVyd2Vpc2UgbmltbXQgbWFuIGFscyBXZXJ0IDEsIG1hbiBrYW5uIGplZG9jaCBhdWNoCisJZWluZW4ga2xlaW5lcmVuIFdlcnQgbmVobWVuIHdlbm4gZXMgbnVyIG1pdCBlaW5lciBiZXN0aW1tdGVuCisJV2FocnNjaGVpbmxpY2hrZWl0IGF1dG9tYXRpc2NoIGFuZ3JlaWZlbiBzb2xsLgorCisJRGVyIFdlcnQgdm9uIFNwaWVsZXIgdW5kIE1vbnN0ZXIgd2lyZCBhZGRpZXJ0LCB1bSB6dSBlbnRzY2hlaWRlbiwKKwlvYiBlaW4gU3BpZWxlciBhbmdlZ3JpZmZlbiB3ZXJkZW4gc29sbCwJbWFuIGthbm4gUF9BR0dSRVNTSVZFCisJYWxzbyBhdWNoIGJlaSBTcGllbGVybiBzZXR6ZW4sIHNvIGRhc3Mgc2llIHZvbiBhbGxlbiBNb25zdGVybgorCWFuZ2VncmlmZmVuIHdlcmRlbi4KKworCUJlaSBNb25zdGVybiAodW5kIE5VUiBiZWkgZGllc2VuKSBrYW5uIG1hbiBoaWVyIGF1Y2ggZWluIE1hcHBpbmcKKwlhbmdlYmVuLCBkYXMgYWxzIEtleXMgTmFtZW4gdm9uIFByb3BlcnRpZXMgZGVzIFNwaWVsZXJzIGVudGhhZWx0CisJdW5kIGFscyBWYWx1ZXMgTWFwcGluZ3MsIGluIGRlbmVuIHN0ZWh0IHdlbGNoZXIgV2VydCBiZWkgd2VsY2hlbgorCVdlcnQgZnVlciBkaWUgUHJvcGVydHkgZ2Vub21tZW4gd2VyZGVuIHNvbGwgKEJlaXNwaWVsZSBmb2xnZW4pLgorCU1pdCBLZXkgMCBrYW5uIG1hbiBlaW5lbiBEZWZhdWx0LVdlcnQgKHNvd29obCBpbiBpbm5lcmVuIE1hcHBpbmdzCisJd2llIGF1Y2ggaW0gYWV1c3NlcmVuIE1hcHBpbmcpIGZlc3RsZWdlbi4gRGVmYXVsdC1XZXJ0ZSB3ZXJkZW4KKwlnZW5vbW1lbiwgZmFsbHMga2VpbmUgYW5kZXJlbiBnZXNldHp0IHNpbmQsIGFsc28gVm9yc2ljaHQgbWl0CisJMC1FaW50cmFlZ2VuIChUaXA6IDAuMCBpc3QgaW4gTFBDIHVuZ2xlaWNoIDApLgorCUJlaSBtZWhyZXJlbiBQcm9wZXJ0aWVzIHdlcmRlbiBhbGxlIGdlc2V0enRlbiBXZXJ0ZSBnZW1pdHRlbHQuCisKK0JFSVNQSUVMRToKKwlTZXRQcm9wKFBfQUdHUkVTU0lWRSwoW1BfUkFDRTooWyJad2VyZyI6MSwgIkVsZiI6MC4wLCAwOjAuNV0pXSkpCisJWndlcmdlIHdlcmRlbiBpbW1lciBhdXRvbWF0aXNjaCBhbmdlZ3JpZmZlbiwgRWxmZW4gbmllIHVuZAorCWFsbGUgYW5kZXJlbiBtaXQgNTAlIFdhaHJzY2hlaW5saWNoa2VpdC4KKwlNYW4gYmVhY2h0ZSwgZGFzcyBoaWVyIDAuMCBnZW5vbW1lbiB3ZXJkZW4gbXVzc3RlIGFuc3RlbGxlIHZvbiAwLAorCXdlaWwgc29uc3QgRWxmZW4gYXVjaCA1MCUgV2FocnNjaGVpbmxpY2hrZWl0IGJla29tbWVuIGhhZXR0ZW4uCisKKwlTZXRQcm9wKFBfQUdHUkVTU0lWRSwoW1BfUkFDRTooWyJad2VyZyI6MC4zXSksCisJICAgICAgICAgICAgICAgICAgICAgICBQX0dVSUxEOihbIkNoYW9zIjowLjddKV0pKQorCVp3ZXJnZSB3ZXJkZW4gbWl0IDMwJSBXYWhyc2NoZWlubGljaGtlaXQgYW5nZWdyaWZmZW4sCisJQ2hhb3RlbiBtaXQgNzAlIHVuZCBad2VyZy1DaGFvdGVuIG1pdCA1MCUuCmRpZmYgLS1naXQgYS9kb2MvcHJvcHMvUF9BTENPSE9MIGIvZG9jL3Byb3BzL1BfQUxDT0hPTApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi42MzAwNWI3Ci0tLSAvZGV2L251bGwKKysrIGIvZG9jL3Byb3BzL1BfQUxDT0hPTApAQCAtMCwwICsxLDIyIEBACitOQU1FOgorICAgICBQX0FMQ09IT0wJCQkiYWxjb2hvbCIKKworREVGSU5JRVJUIElOOgorICAgICAvc3lzL2xpdmluZy9saWZlLmgKKworQkVTQ0hSRUlCVU5HOgorCisgICAgIC0gTGViZXdlc2VuCisgICAgICAgTnVtZXJpc2NoZXIgV2VydCBmdWVyIGRlbiBHcmFkIGRlciBCZXRydW5rZW5oZWl0IGVpbmVzIExlYmV3ZXNlbnMuCisgICAgICAgRGVyIG1heGltYWxlIFdlcnQgc3RlaHQgaW4gUF9NQVhfQUxDT0hPTC4KKworICAgICAtIFNwZWlzZW4vS25laXBlbgorICAgICAgIE51bWVyaXNjaGVyIFdlcnQgZnVlciBkZW4gR3JhZCwgZGVuIGVpbmUgUG9ydGlvbiBkZXIgU3BlaXNlIGRlbgorICAgICAgIEtvbnN1bWVudGVuIGJldHJ1bmtlbiBtYWNodAorCitTSUVIRSBBVUNIOgorCVBfTUFYX0FMQ09IT0wsIFBfQUxDT0hPTF9ERUxBWSwgY29uc3VtZSwKKwlQX0ZPT0QsIFBfRFJJTkssIHdpei9mb29kLCAKKworLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCitMYXN0IG1vZGlmaWVkOiBUaHUgT2N0IDI4IDEyOjE1OjAwIDIwMTAgYnkgQ2FsZHJhClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZG9jL3Byb3BzL1BfQUxDT0hPTF9ERUxBWSBiL2RvYy9wcm9wcy9QX0FMQ09IT0xfREVMQVkKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNGM2ZDJjMQotLS0gL2Rldi9udWxsCisrKyBiL2RvYy9wcm9wcy9QX0FMQ09IT0xfREVMQVkKQEAgLTAsMCArMSwxMCBAQAorTkFNRToKKyAgICBQX0FMQ09IT0xfREVMQVkgICAgICAgICAgICAgICAgICJhbGNvaG9sX2RlbGF5IiAgICAgICAgICAgICAgICAgICAgIAorCitERUZJTklFUlQgSU46CisgICAgL3N5cy9saXZpbmcvbGlmZS5oCisKK0JFU0NIUkVJQlVORzoKKyAgICAgQW56YWhsIGRlciBoZWFydF9iZWF0cywgYmlzIFBfQUxDT0hPTCB1bSBlaW5lbiBQdW5rdCBzaW5rdC4KKyAgICAgQWVuZGVydW5nZW4gZGllc2VyIFByb3BlcnR5IGluIFNwaWVsZXJuIGJlZHVlcmZlbiBkZXIgCisgICAgIEdlbmVobWlndW5nIGRlcyBFTSBmdWVyIEJhbGFuY2UuCmRpZmYgLS1naXQgYS9kb2MvcHJvcHMvUF9BTENfRlVMTF9NU0cgYi9kb2MvcHJvcHMvUF9BTENfRlVMTF9NU0cKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYmQ4NGE4NgotLS0gL2Rldi9udWxsCisrKyBiL2RvYy9wcm9wcy9QX0FMQ19GVUxMX01TRwpAQCAtMCwwICsxLDI0IEBACitOQU1FOgorICAgICBQX0FMQ19GVUxMX01TRyAgICAgICAgICAgICAgICAic3RkX2Zvb2RfYWxjX2Z1bGxfbXNnIgorCitERUZJTklFUlQgSU46CisgICAgIDxzeXMvZm9vZC5oPgorCitCRVNDSFJFSUJVTkc6CisgICAgIE1lbGR1bmcgYW4gZGVuIEtvbnN1bWVudGVuLCB3ZW5uIEFsa29ob2wga29uc3VtaWVydCB3ZXJkZW4gc29sbCwKKyAgICAgb2J3b2hsIGRpZXNlciBuaWNodCBtZWhyIEFsa29ob2wgdmVydHJhZWd0LgorICAgICAKK0JFTUVSS1VOR0VOOgorICAgICBEaWVzZSBNZWxkdW5nIHdpcmQgdm9uIHJlcGxhY2VfcGVyc29uYWwgbWl0IGRlbiBBcmd1bWVudGVuOgorICAgICAxLiBTcGVpc2UKKyAgICAgMi4gS29uc3VtZW50CisgICAgIHZlcmFyYmVpdGV0LCBrYW5uIGFscyBlbnRzcHJlY2hlbmRlIFBsYXR6aGFsdGVyIGVudGhhbHRlbgorICAgICAKK0RFRkFVTFQ6CisgICAgICJTb3ZpZWwgQWxrb2hvbCB2ZXJ0cmFlZ3N0IER1IG5pY2h0IG1laHIuIgorCitTSUVIRSBBVUNIOgorICAgICBQX0FMQ09IT0wsIFBfTUFYX0FMQ09IT0wsIHdpei9mb29kLCByZXBsYWNlX3BlcnNvbmFsCisKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorTGFzdCBtb2RpZmllZDogVGh1IE9jdCAyOCAxMjoxNTowMCAyMDEwIGJ5IENhbGRyYQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2RvYy9wcm9wcy9QX0FMSUdOIGIvZG9jL3Byb3BzL1BfQUxJR04KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZjFkMzQ2NQotLS0gL2Rldi9udWxsCisrKyBiL2RvYy9wcm9wcy9QX0FMSUdOCkBAIC0wLDAgKzEsMTcgQEAKK05BTUU6CisgICAgUF9BTElHTiAgICAgICAgICAgICAgICAgICAgICAgImFsaWduIiAgICAgICAgICAgICAgICAgICAgICAgCisKK0RFRklOSUVSVCBJTjoKKyAgICAvc3lzL2xpdmluZy9saWZlLmgKKworQkVTQ0hSRUlCVU5HOgorICAgICBOdW1lcmlzY2hlciBXZXJ0IGZ1ZXIgR3V0LSBvZGVyIEJvZXNoZWl0IGRlcyBXZXNlbnMuCisKKyAgICAgS2FubiBXZXJ0ZSB2b24gLTEwMDAgKEJvZXNlIHdpZSBkZXIgVGV1ZmVsIGhvZWNoc3RwZXJzb2VubGljaCkKKyAgICAgYmlzICsxMDAwIChKZXN1cywgYmlzdCBEdSdzID8pIGFubmVobWVuLgorCisgICAgIFdlcnRlIGF1c3NlcmhhbGIgZGllc2VyIFNrYWxhIHdlcmRlbiB6d2FyIHRlaWx3ZWlzZSB2ZXJ3ZW5kZXQsCisgICAgIGRhcyBTZXR6ZW4gZGVyc2VsYmVuIHNvbGx0ZSBqZWRvY2ggVU5CRURJTkdUIHVudGVyYmxlaWJlbi4KKworLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorTGFzdCBtb2RpZmllZDogU2F0IEp1bCAxMiAxNzowMDowMCBieSBNYW5kcmFnb24KZGlmZiAtLWdpdCBhL2RvYy9wcm9wcy9QX0FMTE9XRURfU0hBRE9XIGIvZG9jL3Byb3BzL1BfQUxMT1dFRF9TSEFET1cKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMzk0ODJmZAotLS0gL2Rldi9udWxsCisrKyBiL2RvYy9wcm9wcy9QX0FMTE9XRURfU0hBRE9XCkBAIC0wLDAgKzEsMjQgQEAKK05BTUU6CisgICAgUF9BTExPV0VEX1NIQURPVyAgICAgICAgICAgICAgImFsbG93ZWRfc2hhZG93IgorCitERUZJTklFUlQgSU46CisgICAgL3N5cy9wbGF5ZXIvYmFzZS5oCisKK0JFU0NIUkVJQlVORzoKKworICAgICBOb3JtYWxlcndlaXNlIGtvZW5uZW4gbnVyIFNoYWRvd3MgYW4gU3BpZWxlciBnZWJ1bmRlbiB3ZXJkZW4sIGRpZSBpbiAKKyAgICAgL3N0ZC9wbGF5ZXIvc2hhZG93cy8gbGllZ2VuLiAKKyAgICAgCisgICAgIFp1IFRlc3R6d2Vja2VuIGthbm4gaW4gZGllc2VyIFByb3BlcnR5IGRlciBQZmFkIGVpbmVzIFNoYWRvd3MgZWluZ2V0cmFnZW4KKyAgICAgd2VyZGVuLiBEYW1pdCB3aXJkIGRpZSBvYmVuIGJlc2NocmllYmVuZSBSZWdlbCBmdWVyIGRpZXNlbiBTcGllbGVyIHVuZCAKKyAgICAgZGllc2VuIFNoYWRvdyBhdXNzZXIgS3JhZnQgZ2VzZXR6dC4KKworQkVNRVJLVU5HOiAKKworICAgICBEZXIgU3BpZWxlciBtdXNzIGVpbiBUZXN0c3BpZWxlciBzZWluLiBBbnNvbnN0ZW4gd2lyZCBkaWVzZSBQcm9wZXJ0eQorICAgICBpZ25vcmllcnQuCisKKyAgICAgRGllIFByb3BlcnR5IGlzdCBzZWN1cmVkIGdlc2V0enQuIERhcyBoZWlzc3QsIG51ciBFTSsga29lbm5lbgorICAgICBkaWVzZSBQcm9wZXJ0eSBzZXR6ZW4gdW5kIGxvZXNjaGVuLgorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCitMYXN0IG1vZGlmaWVkOiBTdW4gTWFyIDIxIDAwOjI3OjQ2IDIwMDQgYnkgVmFuaW9uCmRpZmYgLS1naXQgYS9kb2MvcHJvcHMvUF9BTU1VTklUSU9OIGIvZG9jL3Byb3BzL1BfQU1NVU5JVElPTgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5mODkwM2FmCi0tLSAvZGV2L251bGwKKysrIGIvZG9jL3Byb3BzL1BfQU1NVU5JVElPTgpAQCAtMCwwICsxLDQyIEBACitQX0FNTVVOSVRJT04KKworTkFNRToKKyAgICBQX0FNTVVOSVRJT04gICAgICJtdW5pdGlvbiIKKworREVGSU5JRVJUIElOOgorICAgIDxjb21iYXQuaD4KKworQkVTQ0hSRUlCVU5HOgorICAgIEVudGhhZWx0IGRpZSBmdWVyIGVpbmUgV2FmZmUgZ3VlbHRpZ2UgTXVuaXRpb24gYWxzIFN0cmluZy4gRGllCisgICAgTXVuaXRpb24gbXVzcyBkaWVzZW4gU3RyaW5nIGFscyBJRCBiZXNpdHplbi4KKworICAgIEZ1ZXIgZGllIE11bml0aW9uc29iamVrdGUgZ2lsdDoKKyAgICAqIGVzIGthbm4gZWluIFNraWxsIGFtIFNwaWVsZXIgZGVmaW5pZXJ0IHdlcmRlbiwgZGllc2VyIHdpcmt0IGRhbm4KKyAgICAgIHp1c2FldHpsaWNoIHp1bSBnZW5lcmVsbGVuIFNLX1NIT09ULVNraWxsLgorICAgICogc2llIGtvZW5uZW4gZWluZSBIaXRGdW5jIGJlc2l0enRlbiwgZGllIGJlaW0gU2NodXNzIGFiZ2VmcmFndCB3aXJkCisKK0JFTUVSS1VOR0VOOgorICAgIEJpdHRlIGRhcyAjZGVmaW5lIE1VTl9NSVNDKHgpIGJlbnV0emVuLiBNdW5pdGlvbiBzb2xsdGUgYXVjaCBpbW1lcgorICAgIGluIERldXRzY2ggdW5kIFBsdXJhbCBhbmdlZ2ViZW4gd2VyZGVuLCBkYSBQX0FNTVVOSVRJT04gZGlyZWt0CisgICAgZnVlciBBdXNnYWJlbiBhbiBkZW4gU3BpZWxlciBhdXNnZXdlcnRldCB3aXJkLgorCisgICAgTW9tZW50YW4gc2luZCB2aWVyIE11bml0aW9uc2FydGVuIGluIGRlciBjb21iYXQuaCB2b3JkZWZpbmllcnQ6CisgICAgTVVOX0FSUk9XLCBNVU5fU1RPTkUsIE1VTl9CT0xULCBNVU5fTUlTQworCitCRUlTUElFTEU6CisgICAgLy8gZnVlciBlaW4ga2xlaW5lcyBCbGFzcm9ociBpbSBCbGFzcm9ocgorICAgIFNldFByb3AoUF9BTU1VTklUSU9OLCBNVU5fTUlTQygiRXJic2VuIikpOworCisgICAgLy8gRW50c3ByZWNoZW5kIGluIGRlciBNdW5pdGlvbjoKKyAgICBBZGRJZChNVU5fTUlTQygiRXJic2VuIikpOworCitTSUVIRSBBVUNIOgorICAgIEdlbmVyZWxsOiAgUF9TSE9PVElOR19XQywgUF9TVFJFVENIX1RJTUUKKyAgICBNZXRob2RlbjogIEZpbmRSYW5nZWRUYXJnZXQoTCksIHNob290X2RhbShMKSwgY21kX3Nob290KEwpCisgICAgR2ViaWV0OiAgICBQX1JBTkdFLCBQX1NIT09USU5HX0FSRUEsIFBfVEFSR0VUX0FSRUEKKyAgICBXYWZmZW46ICAgIFBfV0VBUE9OX1RZUEUsIFBfV0MsIFBfRVFVSVBfVElNRSwgUF9OUl9IQU5EUworICAgIEthbXBmOiAgICAgQXR0YWNrKEwpLCBEZWZlbmQoTCksIFBfRElTQUJMRV9BVFRBQ0ssIFBfQVRUQUNLX0JVU1kKKyAgICBUZWFtOiAgICAgIFByZXNlbnRQb3NpdGlvbihMKQorICAgIFNvbnN0aWdlczogZmVybndhZmZlbgorCisyOS5KdWwgMjAxNCBHbG9pbnNvbgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2RvYy9wcm9wcy9QX0FNT1VOVCBiL2RvYy9wcm9wcy9QX0FNT1VOVApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5hNDRlNDVhCi0tLSAvZGV2L251bGwKKysrIGIvZG9jL3Byb3BzL1BfQU1PVU5UCkBAIC0wLDAgKzEsOCBAQAorTkFNRToKKyAgICBQX0FNT1VOVCAgICAgICAgICAgICAgICAgICAgICAiYW1vdW50IiAgICAgICAgICAgICAgICAgICAgICAKKworREVGSU5JRVJUIElOOgorICAgIC9zeXMvcHJvcGVydGllcy5oCisKK0JFU0NIUkVJQlVORzoKKyAgICAgQW56YWhsIGRlciBPYmpla3RlLCBmdWVyIGRpZSBkYXMgT2JqZWt0IHN0ZWh0LgpkaWZmIC0tZ2l0IGEvZG9jL3Byb3BzL1BfQVFVQVRJQ19IRUxQRVJTIGIvZG9jL3Byb3BzL1BfQVFVQVRJQ19IRUxQRVJTCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjMzYTA3YWIKLS0tIC9kZXYvbnVsbAorKysgYi9kb2MvcHJvcHMvUF9BUVVBVElDX0hFTFBFUlMKQEAgLTAsMCArMSw0NiBAQAorUF9BUVVBVElDX0hFTFBFUlMKKworTkFNRToKKyAgICAgUF9BUVVBVElDX0hFTFBFUlMgImxpYl9wX2FxdWF0aWNfaGVscGVycyIKKworREVGSU5JRVJUIElOOgorICAgICA8bGl2aW5nL2hlbHBlcnMuaD4KKworQkVTQ0hSRUlCVU5HOgorICAgICBEaWVzZSBQcm9wZXJ0eSBrYW5uIGluIGFsbGVuIExlYmV3ZXNlbiBhYmdlZnJhZ3Qgd2VyZGVuLCB1bSBkaWUgT2JqZWt0ZQorICAgICB6dSBlcm1pdHRlbG4sIGRpZSBmdWVyIGRpZSBVbnRlcnN0dWV0enVuZyBiZWltIFRhdWNoZW4gYmVpIGRpZXNlbSAKKyAgICAgTGViZXdlc2VuIHJlZ2lzdHJpZXJ0IGhhYmVuLiBEaWUgRGF0ZW4gd2VyZGVuIGFscyBNYXBwaW5nIGRlciBmb2xnZW5kZW4KKyAgICAgRm9ybSB6dXJ1ZWNrZ2VsaWVmZXJ0OgorICAgICAoWyBPYmpla3QgOiBSdWVja2dhYmV3ZXJ0IHZvbiBkZXNzZW4gQ2FsbGJhY2stTWV0aG9kZSBdKQorICAgICBFaW5lIEVybGFldXRlcnVuZyBkYXp1IGZpbmRldCBzaWNoIGluIGRlciBEb2t1bWVudGF0aW9uIHp1IAorICAgICBSZWdpc3RlckhlbHBlck9iamVjdCgpLgorCitCRU1FUktVTkdFTjoKKyAgICAgRGllc2UgUHJvcGVydHkga2FubiBudXIgYWJnZWZyYWd0IHdlcmRlbi4KKyAgICAgRXMgaXN0IGVyd3VlbnNjaHQsIGRhc3MgZW50c3ByZWNoZW5kZSwgbmV1IGdlc2NoYWZmZW5lIFN0ZWxsZW4gamVnbGljaGUgCisgICAgIEhlbGZlciBha3plcHRpZXJlbiwgZGVyZW4gQ2FsbGJhY2stTWV0aG9kZSA+MCB6dXJ1ZWNrZ2lidC4KKworQkVJU1BJRUw6CisgICAgIFVtIHp1IGVybWl0dGVsbiwgb2IgZGVyIFNwaWVsZXIgbWluZGVzdGVucyBlaW4gT2JqZWt0IGJlaSBzaWNoIGhhdCwgZGFzIAorICAgICBiZWltIFRhdWNoZW4gaGlsZnQsIHN1Y2h0IG1hbiBhbGxlIE9iamVrdGUgYXVzIGRlbSBNYXBwaW5nIGhlcmF1cywgZGllCisgICAgIGVpbmVuIFdlcnQgPjAgZWluZ2V0cmFnZW4gaGFiZW4gdW5kIHBydWVmdCBkZXJlbiBBbnphaGw6CisKKyAgICAgbWFwcGluZyBhcXVhdGljID0gdGhpc19wbGF5ZXIoKS0+UXVlcnlQcm9wKFBfQVFVQVRJQ19IRUxQRVJTKTsKKyAgICAgb2JqZWN0KiBoZWxwZXJzID0gZmlsdGVyKCBhcXVhdGljLCBmdW5jdGlvbiBpbnQgKG9iamVjdCBoKSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIChhcXVhdGljW2hdPjApOyB9KTsKKyAgICAgaWYgKCBzaXplb2YoaGVscGVycykgKSB7CisgICAgICAgdGVsbF9vYmplY3QodGhpc19wbGF5ZXIoKSwgIkR1IHN0dWVyenQgRGljaCBpbiBkaWUgRmx1dGVuIHVuZCAiCisgICAgICAgICAic3RlbGxzdCB1ZWJlcnJhc2NodCBmZXN0LCBkYXNzIER1IG1pdCBIaWxmZSAiKworICAgICAgICAgaGVscGVyc1swXS0+bmFtZShXRVNTRU4sMSkrIiBzb2dhciB1bnRlciBXYXNzZXIgYXRtZW4ga2FubnN0IVxuIik7CisgICAgIH0KKyAgICAgZWxzZSB7CisgICAgICAgdGVsbF9vYmplY3QodGhpc19wbGF5ZXIoKSwgIkR1IGhhc3QgbmljaHRzIHp1bSBUYXVjaGVuIGJlaSBEaXIuXG4iKTsKKyAgICAgfQorCitTSUVIRSBBVUNIOgorICAgICBNZXRob2RlbjogICAgUmVnaXN0ZXJIZWxwZXJPYmplY3QoTCksIFVucmVnaXN0ZXJIZWxwZXJPYmplY3QoTCkKKyAgICAgUHJvcGVydGllczogIFBfSEVMUEVSX09CSkVDVFMsIFBfQUVSSUFMX0hFTFBFUlMKKworLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorMDYuMDQuMjAxNiwgQXJhdGhvcm4KKwpkaWZmIC0tZ2l0IGEvZG9jL3Byb3BzL1BfQVJNT1VSUyBiL2RvYy9wcm9wcy9QX0FSTU9VUlMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMzE1NmJmNgotLS0gL2Rldi9udWxsCisrKyBiL2RvYy9wcm9wcy9QX0FSTU9VUlMKQEAgLTAsMCArMSwyNSBAQAorUF9BUk1PVVJTCisKK05BTUU6CisgICAgIFBfQVJNT1VSUyAgICAgICAgICAgICAgICAgICAgICJhcm1vdXJzIgorCitERUZJTklFUlQgSU46CisgICAgIDxsaXZpbmcvY29tYmF0Lmg+CisKK0JFU0NIUkVJQlVORzoKKyAgICAgQXJyYXkgbWl0IGRlbiBnZXRyYWdlbmVuIFNjaHV0emJla2xlaWR1bmdlbiBkZXMgTGViZXdlc2VuLgorCisgICAgIEJpdHRlIG5hY2ggTW9lZ2xpY2hrZWl0IGRhdm9uIGFic2VoZW4sIGRpZXNlIFByb3BlcnR5IHp1IGJlc2NocmVpYmVuLCBkYQorICAgICBlcyBoaWVyYmVpIHp1IElua29uc2lzdGVuemVuIGtvbW1lbiBrYW5uLgorICAgICAKKyAgICAgRmFsbHMgaWhyIGRpZSBSdWVzdHVuZ2VuIGRlcyBMZWJld2VzZW5zLCBnZ2YuIG1pdCBiZXN0aW10ZW4gS3JpdGVyaWVuLAorICAgICBlcm1pdHRlbG4gd29sbHQsIGJlbnV0enQgaGllcmZ1ZXIgYml0dGUgZGllIEZ1bmt0aW9uIEZpbHRlckFybW91cnMoKQorICAgICBzdGF0dCBzZWxiZXIgdWViZXIgZGllc2VzIEFycmF5IHp1IGxhdWZlbi4KKworU0lFSEUgQVVDSDoKKyAgICAgVmVyd2FuZHQ6CQlRdWVyeUFybW91ckJ5VHlwZShMKSwgUF9XRUFQT04sIEZpbHRlckNsb3RoaW5nKCksIAorICAgICAgICAgICAgICAgICAgRmlsdGVyQXJtb3VycygpCisgICAgIFJ1ZXN0dW5nZW46CVBfQUMsIFBfQVJNT1VSX1RZUEUsIFBfTlJfSEFORFMKKyAgICAgU29uc3RpZ2VzOgkJUF9FUVVJUF9USU1FLCBQX0xBU1RfVVNFCisKKzE0LjAzLjIwMDksIFplc3N0cmEKZGlmZiAtLWdpdCBhL2RvYy9wcm9wcy9QX0FSTU9VUl9UWVBFIGIvZG9jL3Byb3BzL1BfQVJNT1VSX1RZUEUKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMzU5NzhmMgotLS0gL2Rldi9udWxsCisrKyBiL2RvYy9wcm9wcy9QX0FSTU9VUl9UWVBFCkBAIC0wLDAgKzEsNDYgQEAKK1BfQVJNT1VSX1RZUEUKKworTkFNRToKKyAgICAgUF9BUk1PVVJfVFlQRSAiYXJtb3VyX3R5cGUiCisKK0RFRklOSUVSVCBJTjoKKyAgICAgPGFybW91ci5oPgorCitCRVNDSFJFSUJVTkc6CisgICAgIEluIGRpZXNlciBQcm9wZXJ0eSB3aXJkIGRlciBUeXAgZWluZXIgUnVlc3R1bmcgZmVzdGdlaGFsdGVuLiBNYW4gc29sbHRlCisgICAgIGhpZXIgbnVyIGRpZSBpbiA8Y29tYmF0Lmg+IGRlZmluaWVydGVuIEtvbnN0YW50ZW4gdmVyd2VuZGVuOgorCisgICAgICAgIEFUX0FNVUxFVCAgICAgQW11bGV0dAorICAgICAgICBBVF9BUk1PVVIgICAgIFJ1ZXN0dW5nCisgICAgICAgIEFUX0JFTFQgICAgICAgR3VlcnRlbAorICAgICAgICBBVF9CT09UICAgICAgIFNjaHVoZQorICAgICAgICBBVF9DTE9BSyAgICAgIFVtaGFuZworICAgICAgICBBVF9HTE9WRSAgICAgIEhhbmRzY2h1aGUKKyAgICAgICAgQVRfSEVMTUVUICAgICBIZWxtCisgICAgICAgIEFUX1FVSVZFUiAgICAgS29lY2hlcgorICAgICAgICBBVF9SSU5HICAgICAgIFJpbmcKKyAgICAgICAgQVRfU0hJRUxEICAgICBTY2hpbGQKKyAgICAgICAgQVRfVFJPVVNFUlMgICBIb3NlbgorICAgICAgICBBVF9NSVNDICAgICAgIFNvbnN0aWdlcworCisgICAgIERlciBSdWVzdHVuZ3N0eXAgQVRfTUlTQyBpc3Qgc2Nobm9lZGVtIFRhbmQgdW5kIGFuZGVyZW0gbnV0emxvc2VuCisgICAgIEtyYW0gdm9yYmVoYWx0ZW4uIEF1ZiBrZWluZW4gRmFsbCBkYXJmIGVpbmUgQVRfTUlTQy1SdWVzdHVuZyB1ZWJlcgorICAgICBlaW5lIEFDID4gMCB2ZXJmdWVnZW4gbm9jaCBpcmdlbmR3aWUga2FtcGZyZWxldmFudGUgQmVkZXV0dW5nIGJlLQorICAgICBzaXR6ZW4uIFJ1ZXN0dW5nZW4gZGVzIFR5cHMgQVRfTUlTQywgZGllIEtFSU5FIERlZmVuZEZ1bmMgYmVub2V0aWdlbiwKKyAgICAgbXVlc3NlbiBtaXR0ZWxzIC9zdGQvY2xvdGhpbmcgYWxzIGVpbmZhY2hlcyBLbGVpZHVuZ3NzdHVlY2sgcmVhbGlzaWVydAorICAgICB3ZXJkZW4uCisKK0JFTUVSS1VOR0VOOgorICAgICBEaWUgUF9BQyB3aXJkIGJlaSBBVF9NSVNDLVJ1ZXN0dW5nZW4gZ2FyIG5pY2h0IGVyc3QgYXVzZ2V3ZXJ0ZXQuCisgICAgIERlZmVuZEZ1bmNzIHdlcmRlbiB6d2FyIGF1c2dld2VydGV0LCBhYmVyIGJpdHRlIHVlYmVybGVndCBldWNoIGd1dCwgb2IKKyAgICAgaWhyIHNpZSBicmF1Y2h0IChSZWNoZW56ZWl0IGltIEthbXBmIGlzdCBrcml0aXNjaCEpIHVuZCBvYiBzaWUgc2VpdGVucyAKKyAgICAgZGVyIEJhbGFuY2UgaW4gZXVyZW0gRmFsbCBlcmxhdWJ0IHNpbmQuCisKK1NJRUhFIEFVQ0g6CisgICAgIFZlcndhbmR0OiAgICAgICAgICBRdWVyeUFybW91ckJ5VHlwZShMKSwgUF9XRUFQT04KKyAgICAgUnVlc3R1bmdlbjogICAgICAgIFBfQUMsIFBfTlJfSEFORFMgKFNjaGlsZGUpCisgICAgIFNvbnN0aWdlczogICAgICAgICBQX0VRVUlQX1RJTUUsIFBfTEFTVF9VU0UKKyAgICAgQ29kZTogICAgICAgICAgICAgIC9zdGQvYXJtb3VyLmMsIC9zdGQvY2xvdGhpbmcuYworICAgICBHaWxkZW5lcmdhZW56dW5nOiAgUF9HTE9WRV9GSU5HRVJMRVNTCisKKzI3LiBNYWkgMjAxNSwgQXJhdGhvcm4KZGlmZiAtLWdpdCBhL2RvYy9wcm9wcy9QX0FSUklWRU1TRyBiL2RvYy9wcm9wcy9QX0FSUklWRU1TRwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4wMmQ1NzU5Ci0tLSAvZGV2L251bGwKKysrIGIvZG9jL3Byb3BzL1BfQVJSSVZFTVNHCkBAIC0wLDAgKzEsOCBAQAorTkFNRToKKyAgICBQX0FSUklWRU1TRyAgICAgICAgICAgICAgICAgICAiYXJyaXZlbXNnIiAgICAgICAgICAgICAgICAgICAKKworREVGSU5JRVJUIElOOgorICAgIC9zeXMvdHJhbnNwb3J0LmgKKworQkVTQ0hSRUlCVU5HOgorICAgICBNZWxkdW5nLCB3ZW5uIGRlciBUcmFuc3BvcnRlciBhbmxlZ3QuCmRpZmYgLS1naXQgYS9kb2MvcHJvcHMvUF9BUlRJQ0xFIGIvZG9jL3Byb3BzL1BfQVJUSUNMRQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4xNTE3ODY1Ci0tLSAvZGV2L251bGwKKysrIGIvZG9jL3Byb3BzL1BfQVJUSUNMRQpAQCAtMCwwICsxLDE1IEBACitOQU1FOgorICAgIFBfQVJUSUNMRSAgICAgICAgICAgICAgICAgICAgICJhcnRpY2xlIiAgICAgICAgICAgICAgICAgICAgIAorCitERUZJTklFUlQgSU46CisgICAgL3N5cy90aGluZy9sYW5ndWFnZS5oCisKK0JFU0NIUkVJQlVORzoKKyAgICAgR2lidCBhbiwgb2IgaW4gZGVyIEJlc2NocmVpYnVuZyBlaW4gQXJ0aWtlbCBhdXNnZWdlYmVuIHdlcmRlbiBzb2xsCisgICAgIG9kZXIgbmljaHQuCisKKyAgICAgV2VubiBlaW4gQXJ0aWtlbCBhbmdlZ2ViZW4gd2VyZGVuIHNvbGwsIHNvIHdpcmQgMSBnZXNldHp0LCBzb25zdCAwLgorICAgICBEaWVzZSBQcm9wZXJ0eSBpc3QgYXVzIGhpc3RvcmlzY2hlbiBHcnVlbmRlbiBhdWYgMSB2b3JlaW5nZXN0ZWxsdAorICAgICB1bmQgaW50ZXJuIGludmVydGllcnQuIChkLmguLCBiZWltIEF1c2xlc2VuIHBlciBRdWVyeSBrb21tdCBhbHMgCisgICAgIEVyZ2VibmlzIGdlbmF1IGRhcyBmYWxzY2hlIGhlcmF1cykuIEJpdHRlIGJlYWNodGV0IGRhcyBiZWkgU2V0LSBiencuCisgICAgIFF1ZXJ5LUZ1bmt0aW9uZW4uClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZG9jL3Byb3BzL1BfQVRUQUNLX0JVU1kgYi9kb2MvcHJvcHMvUF9BVFRBQ0tfQlVTWQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5iNTVkYzViCi0tLSAvZGV2L251bGwKKysrIGIvZG9jL3Byb3BzL1BfQVRUQUNLX0JVU1kKQEAgLTAsMCArMSw0NCBAQAorTkFNRToKKyAgICBQX0FUVEFDS19CVVNZICAgICAgICAgICAgICAgICAiYXR0YWNrX2J1c3kiICAgICAgICAgICAgICAgICAKKworREVGSU5JRVJUIElOOgorICAgIC9zeXMvbGl2aW5nL2NvbWJhdC5oCisKK0JFU0NIUkVJQlVORzoKKyAgICBVZWJlciBkaWVzZSBQcm9wZXJ0eSBrYW5uIGZlc3RnZXN0ZWxsdCB3ZXJkZW4sIG9iIGVpbiBTcGllbGVyIG5vY2ggCisgICAgU3BlemlhbHdhZmZlbiAoekIgRmxhbW1lbmt1Z2VsKSBlaW5zZXR6ZW4ga2Fubi4KKyAgICAKKyAgICBJc3QgZGVyIFdlcnQgYmVpIEFiZnJhZ2UgdW5nbGVpY2ggMCwgZGFubiBkYXJmIGRlciBTcGllbGVyIGluIGRpZXNlcgorICAgIFJ1bmRlIGtlaW5lIEFrdGlvbiBtZWhyIGR1cmNoZnVlaHJlbi4gTWl0IFNldFByb3AoUF9BVFRBQ0tfQlVTWSwgMSkKKyAgICB3aXJkIGVpbmUgQWt0aW9uIHZlcmJyYXVjaHQuCisKKyAgICBJbnRlcm4gd2lyZCByZWxhdGl2IGZlaW4gZ2VyZWNobmV0LCBlaW4gU2V0UHJvcChQX0FUVEFDS19CVVNZLCB4KQorICAgIHdpcmQgaW4gZGFzIEFiemllaGVuIHZvbiB4KjEwMCBQdW5rdGVuIHVtZ2VyZWNobmV0LiBEZXIgV2VydCBmcmVpZXIKKyAgICBBa3Rpb25lbiBwcm8gUnVuZGUgYmVyZWNobmV0IHNpY2ggd2llIGZvbGd0OgorICAgIAorICAgIFNwaWVsZXI6IDEwMCArIFF1ZXJ5U2tpbGxBdHRyaWJ1dGUoU0FfU1BFRUQpCisgICAgU2VoZXI6ICAgU3BpZWxlciArIDIwMCArIFF1ZXJ5UHJvcChQX0xFVkVMKQorCisgICAgRGFzIE1heGltdW0gbGllZ3QgYmVpIDUwMC4KKyAgICBEYW1pdCBiZXRyYWVndCBkaWUgQW56YWhsIGRlciBtb2VnbGljaGVuIEFrdGlvbmVuIHBybyBSdW5kZTogV2VydC8xMDAsCisgICAgYWxzbyBtYXhpbWFsIDUgQWt0aW9uZW4gcHJvIFJ1bmRlLgorCisgICAgWmF1YmVyc3BydWVjaGUgemFlaGxlbiBpbSBOb3JtYWxmYWxsIGF1Y2ggYWxzIGVpbmUgQWt0aW9uLgorCitCRU1FUktVTkdFTjoKKyAgICBCZW51dHp0IG1hbiBQX0FUVEFDS19CVVNZIGZ1ZXIgZWluZSBzaWNoIG5pY2h0IHNvZm9ydCB2ZXJicmF1Y2hlbmRlCisgICAgU2FjaGUsIGthbm4gZWluIFNlaGVyIGRpZXNlcyBPYmpla3QgaW0gTm9ybWFsZmFsbCBkcmVpbWFsIHBybyBSdW5kZQorICAgIGJlbnV0emVuLiBXZW5uIHVuZ2V3b2xsdCwgbXVzcyBkYXMgdWViZXIgZWluZW4gWmVpdG1hcmtlciBzZWxic3QKKyAgICB2ZXJoaW5kZXJ0IHdlcmRlbi4KKyAgICAKK0JFSVNQSUVMRToKKyAgICAoQ29kZSBlaW5lcyBPYmpla3RlcyBpc3QgaW4KKyAgICAgL2RvYy9iZWlzcGllbGUvdGVzdG9iamVrdGUvYXR0YWNrX2J1c3lfc2Vuc2l0aXZlX3Rlc3RvYmouYykKKyAgICAvLyBlaW5mYWNoZXIgVGVzdCBhdWYgQVRUQUNLX0JVU1kgdW5kIGFuc2NobGllc3NlbmRlcyBTZXR6ZW4KKyAgICBpZiAodGhpc19wbGF5ZXIoKS0+UXVlcnlQcm9wKFBfQVRUQUNLX0JVU1kpKSB7CisgICAgICB3cml0ZSgiRHUgaGFzdCBkYWZ1ZXIgbW9tZW50YW4gZWluZmFjaCBuaWNodCBtZWhyIGRpZSBQdXN0ZS5cbiIpOworICAgICAgcmV0dXJuIDE7CisgICAgfQorICAgIHRoaXNfcGxheWVyKCktPlNldFByb3AoUF9BVFRBQ0tfQlVTWSwgMSk7CisKKzcuIE1hciAyMDExIEdsb2luc29uCmRpZmYgLS1naXQgYS9kb2MvcHJvcHMvUF9BVFRSSUJVVEVTIGIvZG9jL3Byb3BzL1BfQVRUUklCVVRFUwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4yOWRhOTExCi0tLSAvZGV2L251bGwKKysrIGIvZG9jL3Byb3BzL1BfQVRUUklCVVRFUwpAQCAtMCwwICsxLDU4IEBACitOQU1FOgorCVBfQVRUUklCVVRFUwkJCSJhdHRyaWJ1dGVzIgorCitERUZJTklFUlQgSU46CisJL3N5cy9saXZpbmcvYXR0cmlidXRlcy5oCisKK0JFU0NIUkVJQlVORzoKKwlEaWVzZSBQcm9wZXJ0eSBlbnRoYWVsdCBlaW4gTWFwcGluZyBtaXQgZGVuIEF0dHJpYnV0ZW4gZGVzCisJTGViZXdlc2Vucy4gRGllIFNjaGx1ZXNzZWwga2VubnplaWNobmVuIGhpZXJiZWkgZGFzIGpld2VpbGlnZQorCUF0dHJpYnV0LiBEaWUgdmVyc2NoaWVkZW5lbiBTdGFuZGFyZGF0dHJpYnV0ZSBmaW5kZXQgbWFuIGluCisJL3N5cy9saXZpbmcvYXR0cmlidXRlcy5oLCB3ZWxjaGUgZGVyemVpdCBmb2xnZW5kZSBNb2VnbGljaGtlaXRlbgorCWJpZXRlbjoJLSBBX1NUUiAoS3JhZnQpCisJCS0gQV9JTlQgKEludGVsbGlnZW56KQorCQktIEFfREVYIChHZXNjaGljaykKKwkJLSBBX0NPTiAoS29uc3RpdHV0aW9uKQorCVNpZSB3ZXJkZW4gYXV0b21hdGlzY2ggYW4gdmVyc2NoaWVkZW5lbiBTdGVsbGVuIGluIGRlciBNVURMaWIKKwlhdXNnZXdlcnRldCwgenVtIEJlaXNwaWVsIGJlc3RpbW10IEFfSU5UIGRpZSBtYXhpbWFsIG1vZWdsaWNoZW4KKwlLb256ZW50cmF0aW9uc3B1bmt0ZSB1bmQgQV9DT04gZGllIG1heGltYWwgbW9lZ2xpY2hlbiBMZWJlbnNwdW5rdGUuCisKK0JFTUVSS1VOR0VOOgorICAgICAgICBLZWluZSBlY2h0ZSBQcm9wZXJ0eSwgX3F1ZXJ5X2F0dHJpYnV0ZXMoKSB1bmQgX3NldF9hdHRyaWJ1dGVzKCkgc2luZCANCisgICAgICAgIGluIC9zdGQvbGl2aW5nL2F0dHJpYnV0ZXMuYyBpbXBsZW1lbnRpZXJ0LgorCisJRXMgYmlldGV0IHNpY2ggYW4sIHp1bSBFcmZyYWdlbiBkZXIgQXR0cmlidXR3ZXJ0ZSBkaWUgRnVua3Rpb24KKwlRdWVyeUF0dHJpYnV0ZSgpIHp1IG51dHplbiwgZGEgZXMgYXVjaCBtb2VnbGljaGUgT2Zmc2V0cyBnaWJ0LAorCXNvIGJlaXNwaWVsc3dlaXNlIHVlYmVyIGRpZSBQcm9wZXJ0aWVzIFBfQVRUUklCVVRFU19PRkZTRVRTIGJ6dy4KKwlQX0FUVFJJQlVURVNfTU9ESUZJRVIgaW0gTGViZXdlc2VuIHNlbGJzdCwgb2RlciBhdWNoIHVlYmVyCisJUF9YX0FUVFJfTU9EIGJ6dy4gUF9NX0FUVFJfTU9EIGluIE9iamVrdGVuIGltIExlYmV3ZXNlbi4KKwlLdXJ6ZnJpc3RpZ2UgemVpdC0gb2RlciBvYmpla3RnZWJ1bmRlbmUgQXR0cmlidXR2ZXJhZW5kZXJ1bmdlbgorCWtvZW5uZW4gdWViZXIgZGllIFByb3BlcnR5IFBfVElNRURfQVRUUl9NT0QgcmVhbGlzaWVydCB3ZXJkZW4uCisKKwlFcyBnaWJ0IGF1Y2ggemFobHJlaWNoZSBhbmRlcmUgRGllbnN0ZnVua3Rpb25lbiBmdWVyIGRpZXNlbiBzZWhyCisJYmFsYW5jZWtyaXRpc2NoZW4gQmVyZWljaCwgc2llaGUgdW50ZW4uCisKK0JFSVNQSUVMOgorCUVpbiBtb2VnbGljaGVzIEVyZ2VibmlzIGZ1ZXIgZWluZW4gZnJpc2NoZW4gTGV2ZWwgMSBTcGllbGVyIHdhZXJlOgorCSAgUXVlcnlQcm9wKFBfQVRUUklCVVRFUyk7CisJICBFcmdlYm5pczogKFsiaW50IjoxLCJjb24iOjEsInN0ciI6MSwiZGV4IjoxXSkKKwlIaW56dSBrb21tZW4gZXZlbnR1ZWxsIG1vZWdsaWNoZSBSYXNzZW5ib25pLCBkaWUgbWl0dGVscworCVBfQVRUUklCVVRFX09GRlNFVFMgcmVhbGlzaWVydCB3ZXJkZW4sIFp3ZXJnZSBzaW5kIGJlaXNwaWVsc3dlaXNlCisJcmVjaHQgc3Rhcms6CisJICBRdWVyeVByb3AoUF9BVFRSSUJVVEVTX09GRlNFVFMpOworCSAgRXJnZWJuaXM6IChbImludCI6MSwiY29uIjoxLCJzdHIiOjEsImRleCI6M10pCisJSmV0enQgYmVrYWVtZSBtYW4gKHNvZmVybiBrZWluZSB3ZWl0ZXJlbiBPZmZzZXRzIHJlYWxpc2llcnQgc2luZCkKKwltaXR0ZWxzIFF1ZXJ5QXR0cmlidXRlKCkgaW5zZ2VzYW10OgorCSAgUXVlcnlBdHRyaWJ1dGUoQV9ERVgpOworCSAgRXJnZWJuaXM6IDQKKworU0lFSEUgQVVDSDoKKwlRdWVyeUF0dHJpYnV0ZSgpLCBRdWVyeVJlYWxBdHRyaWJ1dGUoKSwgUXVlcnlBdHRyaWJ1dGVPZmZzZXQoKSwKKwlTZXRBdHRyaWJ1dGUoKSwgU2V0UmVhbEF0dHJpYnV0ZSgpLCBVcGRhdGVBdHRyaWJ1dGVzKCksCisJU2V0VGltZWRBdHRyTW9kaWZpZXIoKSwgUXVlcnlUaW1lZEF0dHJNb2RpZmllcigpLAorCURlbGV0ZVRpbWVkQXR0ck1vZGlmaWVyKCksCisJUF9BVFRSSUJVVEVTX09GRlNFVFMsIFBfQVRUUklCVVRFU19NT0RJRklFUixQX1RJTUVEX0FUVFJfTU9ELAorCVBfWF9BVFRSX01PRCwgUF9NX0FUVFJfTU9ELCAvc3RkL2xpdmluZy9hdHRyaWJ1dGVzLmMKKworLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorTGFzdCBtb2RpZmllZDogVHVlIEp1bCAyNyAyMDowMDoyMCAyMDA0IGJ5IE11YWRpYgpkaWZmIC0tZ2l0IGEvZG9jL3Byb3BzL1BfQVRUUklCVVRFU19NT0RJRklFUiBiL2RvYy9wcm9wcy9QX0FUVFJJQlVURVNfTU9ESUZJRVIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZjViYTUxMwotLS0gL2Rldi9udWxsCisrKyBiL2RvYy9wcm9wcy9QX0FUVFJJQlVURVNfTU9ESUZJRVIKQEAgLTAsMCArMSw1NiBAQAorTkFNRToKKyAgICBQX0FUVFJJQlVURVNfTU9ESUZJRVIgICAgICAgICAiYXR0cmlidXRlc19tb2RpZmllciIKKworREVGSU5JRVJUIElOOgorICAgIC9zeXMvbGl2aW5nL2F0dHJpYnV0ZXMuaAorCitCRVNDSFJFSUJVTkc6CisgICAgSW4gZGllc2VyIFByb3BlcnR5IHdlcmRlbiBBdHRyaWJ1dC1Nb2RpZmlrYXRvcmVuIGdlc3BlaWNoZXJ0LCBkaWUKKyAgICBsYWVuZ2VyZSBaZWl0IHdpcmtzYW0gc2VpbiBzb2xsZW4sIHRsdy4gYXVjaCB1ZWJlciBlaW5lbiBSZWJvb3QKKyAgICBoaW53ZWcuCisgICAgSW50ZXJuIHdlcmRlbiBkaWUgTW9kaWZpa2F0b3JlbiBpbiBlaW5lbSBNYXBwaW5nIGRlciBGb3JtCisKKyAgICAgICAgKFsgU2V0emVyLUtleSA6IChbIEFfeHkgOiBXZXJ0LCAuLi4gXSkgLCAuLi4gXSkKKworICAgIGdlc3BlaWNoZXJ0LiBEYXMgU2V0emVuIGZvbGcgaGluZ2VnZW4gaW4gZGVyIEZvcm0KKworICAgICAgICBzcGllbGVyLT5TZXRQcm9wKFBfQVRUUklCVVRFU19NT0RJRklFUiwgKFsgQV94eSA6IFdlcnQsIC4uLiBdKSk7CisgICAgb2RlcgorICAgICAgICBzcGllbGVyLT5TZXRQcm9wKFBfQVRUUklCVVRFU19NT0RJRklFUiwgKHsgU2V0emVyLUtleSwgKFsgLi4uIF0pIH0pKTsKKworICAgIEJlaSBkZXIgZXJzdGVuIFZhcmlhbnRlIHdpcmQgaGllcmJlaSBkZXIgRmlsZW5hbWUgZGVzIHNldHplbmRlbiBPYmpla3RlcworICAgIGFscyBTZXR6ZXItS2V5IGdlbm9tbWVuLgorICAgIEVzIGtvZW5uZW4gYWxzbyBkdXJjaGF1cyB2b24gbWVocmVyZW4gT2JqZWt0ZW4gTW9kaWZpZXIgZ2VzZXR6dCB3ZXJkZW4uCisgICAgQmVrYW5udGUgTW9kaWZpZXIgc2luZDoKKworICAgICAgICAjZGVhdGggICAgICBBdHRyaWJ1dC1BYnp1ZyBkdXJjaCBUb2Rlc2ZvbGdlbiAgICAgIChNdWRsaWIpCisgICAgICAgICNkcmFpbiAgICAgIFN0YXRhYnp1ZyBkdXJjaCBOUENzICAgICAgICAgICAgICAgICAgKFBhcmFjZWxzdXMpCisgICAgICAgICNmcm9zY2ggICAgIFN0YWVya2VuLUFienVnIGJlaSBGcm9lc2NoZW4gICAgICAgICAgKE11ZGxpYikKKworQkVNRVJLVU5HRU46CisgICAgS2VpbmUgZWNodGUgUHJvcGVydHksIF9xdWVyeV9hdHRyaWJ1dGVzX21vZGlmaWVyKCkgdW5kCisgICAgX3NldF9hdHRyaWJ1dGVzX21vZGlmaWVyKCkgc2luZCBpbiAvc3RkL2xpdmluZy9hdHRyaWJ1dGVzLmMKKyAgICBpbXBsZW1lbnRpZXJ0CisgICAgLSBTZXRQcm9wL1F1ZXJ5UHJvcCBudXR6ZW4hCisgICAgLSBXZW5uIGVpbiBNb2RpZmllciBuaWNodCBtZWhyIGdlYnJhY2h0IHdpcmQsIG5pY2h0IGRpZSBBdHRyaWJ1dHN3ZXJ0ZSBhdWYKKyAgICAgIDAgc2V0emVuLCBzb25kZXJuIGRlbiBnYW56ZW4gRWludHJhZyEgYWxzbzoKKyAgICAgIFNldFByb3AoUF9BVFRSSUJVVEVTX01PRElGSUVSLCAoW10pICk7CisgICAgICBvZGVyOiBTZXRQcm9wKFBfQVRUUklCVVRFU19NT0RJRklFUiwgMCApOyAKKyAgICAgIGFiZXIgbmljaHQ6IFNldFByb3AoUF9BVFRSSUJVVEVTX01PRElGSUVSLCAoW0FfU1RSOjBdKSk7CisKK0JFSVNQSUVMRToKKyAgICAvLyBlaW4gQm9udXMgLi4uICdlbmRlJy1mZXN0IChtdXNzIGFsc28gcGVyIHVpZCBnZXNpY2hlcnQgd2VyZGVuKQorICAgIHBsYXllci0+U2V0UHJvcChQX0FUVFJJQlVURVNfTU9ESUZJRVIsCisgICAgICAgICAgICAgICAgICAgICh7Imdfa2xlcnVzX3NlZ2VuIiwgKFtBX0NPTjo1LCBBX0lOVDo1XSl9KSk7CisgICAgLi4uCisgICAgcGxheWVyLT5TZXRQcm9wKFBfQVRUUklCVVRFU19NT0RJRklFUiwgKHsiZ19rbGVydXNfc2VnZW4iLCAwfSkpOworCitTSUVIRSBBVUNIOgorCVF1ZXJ5QXR0cmlidXRlKCksIFF1ZXJ5UmVhbEF0dHJpYnV0ZSgpLCBRdWVyeUF0dHJpYnV0ZU9mZnNldCgpLAorCVNldEF0dHJpYnV0ZSgpLCBTZXRSZWFsQXR0cmlidXRlKCksIFVwZGF0ZUF0dHJpYnV0ZXMoKSwKKwlTZXRUaW1lZEF0dHJNb2RpZmllcigpLCBRdWVyeVRpbWVkQXR0ck1vZGlmaWVyKCksCisJRGVsZXRlVGltZWRBdHRyTW9kaWZpZXIoKSwKKwlQX0FUVFJJQlVURVMsIFBfQVRUUklCVVRFU19PRkZTRVRTLCBQX1RJTUVEX0FUVFJfTU9ELAorCVBfWF9BVFRSX01PRCwgUF9NX0FUVFJfTU9ELCAvc3RkL2xpdmluZy9hdHRyaWJ1dGVzLmMKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KK0xhc3QgbW9kaWZpZWQ6IFR1ZSBKdWwgMjcgMjA6MDA6MjAgMjAwNCBieSBNdWFkaWIKZGlmZiAtLWdpdCBhL2RvYy9wcm9wcy9QX0FUVFJJQlVURVNfT0ZGU0VUUyBiL2RvYy9wcm9wcy9QX0FUVFJJQlVURVNfT0ZGU0VUUwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4zZWJlMmI3Ci0tLSAvZGV2L251bGwKKysrIGIvZG9jL3Byb3BzL1BfQVRUUklCVVRFU19PRkZTRVRTCkBAIC0wLDAgKzEsMjcgQEAKK05BTUU6CisJUF9BVFRSSUJVVEVTX09GRlNFVFMJCSJhdHRyaWJ1dGVzX29mZnNldHMiCisKK0RFRklOSUVSVCBJTjoKKwkvc3lzL2xpdmluZy9hdHRyaWJ1dGVzLmgKKworQkVTQ0hSRUlCVU5HOgorCURpZXNlIFByb3BlcnR5IGVudGhhZWx0IGVpbiBNYXBwaW5nIG1pdCBPZmZzZXRzLCBkaWUgenUgZGVuCisJQXR0cmlidXRlbiBlaW5lIExlYmV3ZXNlbnMgYWRkaWVydCB3ZXJkZW4uIERpZXNlIGtvZW5uZW4gYXVjaAorCW5lZ2F0aXYgc2VpbiEgUmVhbGlzaWVydCB3ZXJkZW4gZGFtaXQgYmVpc3BpZWxzd2Vpc2UgUmFzc2VuYm9uaS4KKwlFcyBnaWJ0IG5vY2ggd2VpdGVyZSBNb2VnbGljaGtlaXRlbiwgQXR0cmlidXRvZmZzZXRzIGFuenVnZWJlbi4KKwlGdWVyIHdlaXRlcmVzIHNpZWhlIFBfQVRUUklCVVRFUy4KKworQkVNS0VSVU5HRU46CisgICAgICAgIEtlaW5lIGVjaHRlIFByb3BlcnR5LCBfcXVlcnlfYXR0cmlidXRlc19vZmZzZXRzKCkgdW5kIA0KKyAgICAgICAgX3NldF9hdHRyaWJ1dGVzX29mZnNldHMoKSBzaW5kIGluIC9zdGQvbGl2aW5nL2F0dHJpYnV0ZXMuYyANCisgICAgICAgIGltcGxlbWVudGllcnQuCisKK1NJRUhFIEFVQ0g6CisJUXVlcnlBdHRyaWJ1dGUoKSwgUXVlcnlSZWFsQXR0cmlidXRlKCksIFF1ZXJ5QXR0cmlidXRlT2Zmc2V0KCksCisJU2V0QXR0cmlidXRlKCksIFNldFJlYWxBdHRyaWJ1dGUoKSwgVXBkYXRlQXR0cmlidXRlcygpLAorCVNldFRpbWVkQXR0ck1vZGlmaWVyKCksIFF1ZXJ5VGltZWRBdHRyTW9kaWZpZXIoKSwKKwlEZWxldGVUaW1lZEF0dHJNb2RpZmllcigpLAorCVBfQVRUUklCVVRFUywgUF9BVFRSSUJVVEVTX09GRlNFVFMsIFBfVElNRURfQVRUUl9NT0QsCisJUF9YX0FUVFJfTU9ELCBQX01fQVRUUl9NT0QsIC9zdGQvbGl2aW5nL2F0dHJpYnV0ZXMuYworLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorTGFzdCBtb2RpZmllZDogVHVlIEp1bCAyNyAyMDowMDoyMCAyMDA0IGJ5IE11YWRpYgpkaWZmIC0tZ2l0IGEvZG9jL3Byb3BzL1BfQVVUSF9JTkZPIGIvZG9jL3Byb3BzL1BfQVVUSF9JTkZPCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjVjYTY1YzUKLS0tIC9kZXYvbnVsbAorKysgYi9kb2MvcHJvcHMvUF9BVVRIX0lORk8KQEAgLTAsMCArMSw4IEBACitOQU1FOgorICAgIFBfQVVUSF9JTkZPICAgICAgICAgICAgICAgICAgICJhdXRoX2luZm8iICAgICAgICAgICAgICAgICAgIAorCitERUZJTklFUlQgSU46CisgICAgL3N5cy9wbGF5ZXIuaAorCitCRVNDSFJFSUJVTkc6CisgICAgIFVzZXJuYW1lIGRlcyBTcGllbGVycywgd2VubiBiZWkgaWhtIGVpbiBBVVRIRCBsYWV1ZnQKZGlmZiAtLWdpdCBhL2RvYy9wcm9wcy9QX0FVVE9MT0FEIGIvZG9jL3Byb3BzL1BfQVVUT0xPQUQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNmVhNjljOQotLS0gL2Rldi9udWxsCisrKyBiL2RvYy9wcm9wcy9QX0FVVE9MT0FECkBAIC0wLDAgKzEsMTUgQEAKK05BTUU6CisgICAgUF9BVVRPTE9BRCAgICAgICAgICAgICAgICAgICAgImF1dG9sb2FkIiAgICAgICAgICAgICAgICAgICAgCisKK0RFRklOSUVSVCBJTjoKKyAgICAvc3lzL3BsYXllci9iYXNlLmgKKworQkVTQ0hSRUlCVU5HOgorICAgICBNYXBwaW5nIG1pdCBkZXIgTWVuZ2UgZGVyIEF1dG9sb2Fkb2JqZWt0ZSB1bmQgZGVuIHp1Z2VoLgorICAgICBQcm9wZXJ0aWVzLgorCitCRU1FUktVTkdFTjoKKyAgICAgRnVua3Rpb25pZXJ0IG1vbWVudGFuIG5pY2h0LiBEaWUgTWV0aG9kZSB3dXJkZSBlbnRmZXJudC4gRG9rdSBibGVpYnQKKyAgICAgaGllciBiaXMgZGVyIEZhbGwgZ2VrbGFlcnQgaXN0LiAoU3RhbmQgMjcuQXVnIDIwMDYpCisKKzI3LkF1ZyAyMDA2IEdsb2luc29uCmRpZmYgLS1naXQgYS9kb2MvcHJvcHMvUF9BVVRPTE9BRE9CSiBiL2RvYy9wcm9wcy9QX0FVVE9MT0FET0JKCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjMyYjQzM2QKLS0tIC9kZXYvbnVsbAorKysgYi9kb2MvcHJvcHMvUF9BVVRPTE9BRE9CSgpAQCAtMCwwICsxLDExOSBAQAorTkFNRToKKyAgICBQX0FVVE9MT0FET0JKICAgICAgICAgICAgICAgICAiYXV0b2xvYWRvYmoiCisKK0RFRklOSUVSVCBJTjoKKyAgICAvc3lzL3BsYXllci9iYXNlLmgKKworQkVTQ0hSRUlCVU5HOgorICAgICBIaWVybWl0IGthbm4gcHJpbnppcGllbGwgYW5nZWdlYmVuIHdlcmRlbiBvYiBlaW4gT2JqZWt0IHVlYmVyIGRhcworICAgICBBdXNsb2dnZW4gZWluZXMgU3BpZWxlcnMgKFJlYm9vdC9lbmRlKSBiZWhhbHRlbiB3ZXJkZW4gc29sbC4KKworICAgICBBbHMgSW5oYWx0IGRlciBQcm9wZXJ0eSBrb2VubmVuIHBlcm1hbmVudGUgRWlnZW5zY2hhZnRlbiBkZXMgT2JqZWt0ZXMKKyAgICAgYW5nZWdlYmVuIHdlcmRlbi4KKyAgICAgQmVpbSBFaW5sb2dnZW4gd2lyZCBkYXMgT2JqZWt0IG5ldSBlcnpldWd0IHVuZCBQX0FVVE9MT0FET0JKIGF1ZiBkaWUKKyAgICAgZ2VzcGVpY2hlcnRlbiBXZXJ0ZSBnZXNldHp0LiBEaWUgV2VydGUgbXVlc3NlbiBhbGxlcmRpbmdzIHNlbGJzdAorICAgICB2ZXJ3YWx0ZXQgd2VyZGVuLgorCisgICAgIEJpdHRlIGdlaHQgbmljaHQgZGF2b24gYXVzLCBkYXNzIGVzIHdhZWhyZW5kIGRlcyBTZXR6ZW5zL0FiZnJhZ2VucyBkaWVzZXIKKyAgICAgUHJvcCBlaW5lbiB0aGlzX3BsYXllcigpIG9kZXIgZWluIHRoaXNfaW50ZXJhY3RpdmUoKSBnZWJlbiBtdXNzLgorICAgICBTcGV6aWVsbCBpc3QgdGhpc19pbnRlcmFjdGl2ZSgpIG5pY2h0ID09IC9zZWN1cmUvbG9naW4hCisgICAgIEViZW5mYWxscyBtdXNzIGRhcyBPYmpla3QgYmVpbSBTZXR6ZW4vQWJmcmFnZW4gbmljaHQgaW4gZWluZW0gU3BpZWxlcgorICAgICBzZWluLgorCitCRU1FUktVTkdFTjoKKyAgICAgQXV0b2xvYWRvYmpla3RlIHdlcmRlbiBiZWltIEF1c2xvZ2dlbiBuaWNodCBmYWxsZW5nZWxhc3NlbiEKKworQkVJU1BJRUxFOgorICAgICAjIyBWYXJpYW50ZSAxOiBzaW1wbGVzIE9iamVrdCwgYmxlaWJ0IGVpbmZhY2ggbnVyIGVyaGFsdGVuLAorICAgICAjIyAgICAgICAgICAgICBWYXJpYWJsZW4gd2VyZGVuIG5pY2h0IGdlc2ljaGVydCAjIworICAgICB2b2lkIGNyZWF0ZSgpIHsKKyAgICAgIC4uLgorICAgICAgU2V0UHJvcChQX0FVVE9MT0FET0JKLDEpOworICAgICAgLi4uCisgICAgIH0KKworCisgICAgICMjIFZhcmlhbnRlIDI6IFNwZWljaGVydW5nIG1laHJlcmVyIFZhcmlhYmxlbiB1ZWJlcgorICAgICAjIyAgICAgICAgICAgICBQX0FVVE9MT0FET0JKIChlbGVnYW50ZSBWZXJ3YWx0dW5nKQorCisgICAgIC8vIGVpbiBwYWFyICNkZWZpbmVzIGZ1ZXIgZGllIFBsYWV0emUgaW4gZGVyIFNwZWljaGVydmFyaWFibGVuCisgICAgICNkZWZpbmUgTVlfQUxfU0hPUlQgICAgMAorICAgICAjZGVmaW5lIE1ZX0FMX0FUVFJNICAgIDEKKyAgICAgI2RlZmluZSBNWV9BTF9PV05FUiAgICAyCisgICAgICNkZWZpbmUgTVlfQUxfREVTVFJVQ1QgMworCisgICAgIC8vIGRpZSBWYXJpYWJsZW4sIGRpZSBlcmhhbHRlbiBibGVpYmVuIHNvbGxlbgorICAgICBzdGF0aWMgb2JqZWN0IG93bmVyOworICAgICBzdGF0aWMgaW50IGRlc3RydWN0X3RpbWU7CisKKyAgICAgLy8gZGllc2UgaGllciB3aXJkIGdlcnVmZW4sIHdlbm4gZGVyIFNwaWVsZXIgZ2VzcGVpY2hlcnQgd2lyZCwKKyAgICAgLy8gd2lyIHBhY2tlbiBhbHNvIGFsbGUgYWt0dWVsbGVuIFZhcmlhYmxlbiBpbiBlaW5lIHVuZCBnZWJlbiBkaWUKKyAgICAgLy8genVtIFNwZWljaGVybiBoZXJhdXMgLi4uIHdpciBuZWhtZW4gaGllciBlaW4gQXJyYXkgKHN0YXR0CisgICAgIC8vIHpCIGVpbmVzIE1hcHBpbmdzKSwgd2VpbCBkYXMgYW0gd2VuaWdzdGVuIFBsYXR6IGJyYXVjaHQKKyAgICAgc3RhdGljIG1peGVkKiBfcXVlcnlfYXV0b2xvYWRvYmooKSB7CisgICAgICBtaXhlZCAqcmV0OworICAgICAgcmV0PWFsbG9jYXRlKDQpOworICAgICAgcmV0W01ZX0FMX1NIT1JUXSA9IFF1ZXJ5UHJvcChQX1NIT1JUKTsgICAgICAvLyBTSE9SVCBtZXJrZW4KKyAgICAgIHJldFtNWV9BTF9BVFRSTV0gPSBRdWVyeVByb3AoUF9NX0FUVFJfTU9EKTsgLy8gZWluZW4gTW9kaWZpa2F0b3IgbWVya2VuCisgICAgICByZXRbTVlfQUxfT1dORVJdID0gZ2V0dWlkKG93bmVyKTsgICAgICAgICAgIC8vIGFoLCBlaW4gQmVzaXR6ZXIhCisgICAgICByZXRbTVlfQUxfREVTVFJVQ1RdPWRlc3RydWN0X3RpbWUtdGltZSgpOyAgIC8vIHVuZCBlaW5lIExlYmVuc2RhdWVyIQorCisgICAgICByZXR1cm4gcmV0OworCisgICAgICAvKgorICAgICAgLy8gbm9ybWFsZXJ3ZWlzZSB3dWVyZGUgbWFuIGRhcyBlaW5mYWNoIHNvIHNjaHJlaWJlbjoKKyAgICAgIHJldHVybiAoKHtRdWVyeVByb3AoUF9TSE9SVCksCisgICAgICAgICAgICAgICAgUXVlcnlQcm9wKFBfTV9BVFRSX01PRCksCisgICAgICAgICAgICAgICAgZ2V0dWlkKG93bmVyKSwKKyAgICAgICAgICAgICAgICBkZXN0cnVjdF90aW1lLXRpbWUoKX0pKTsKKyAgICAgICovCisgICAgIH0KKworICAgICAvLyBkaWVzZSBoaWVyIHdpcmQgZ2VydWZlbiwgd2VubiBkYXMgT2JqZWt0IG5ldSBpbSBTcGllbGVyCisgICAgIC8vIGVyemV1Z3Qgd3VyZGUgKExvZ2luKSwgYWxzbyBwYWNrZW4gd2lyIGRhcyBTcGVpY2hlcmFycmF5IHdpZWRlcgorICAgICAvLyBhdXMgdW5kIGluIGFsbGUgZW50c3ByZWNoZW5kZW4gVmFyaWFibGVuCisgICAgIHN0YXRpYyBtaXhlZCogX3NldF9hdXRvbG9hZG9iaihtaXhlZCAqbmV3KSB7CisgICAgICAvLyB3ZW5uIGRhcyBGb3JtYXQgbmljaHQgbWl0IGRlbSBvYmVuIHVlYmVyZWluc3RpbW10IGlzdCB3YXMKKyAgICAgIC8vIHNjaGllZmdlbGF1ZmVuCisgICAgICBpZihwb2ludGVycChuZXcpICYmICFvd25lciAmJiBzaXplb2YobmV3KT40ICYmCisgICAgICAgICAob3duZXI9ZmluZF9wbGF5ZXIobmV3W01ZX0FMX09XTkVSXSkpKSB7CisgICAgICAgLy8gbG9zLCB6dXdlaXNlbiEKKworICAgICAgIFNldFByb3AoUF9TSE9SVCwgICAgICBuZXdbTVlfQUxfU0hPUlRdKTsKKyAgICAgICBTZXRQcm9wKFBfTV9BVFRSX01PRCwgbmV3W01ZX0FMX0FUVFJNXSk7CisgICAgICAgZGVzdHJ1Y3RfdGltZT0gICAgICAgIHRpbWUoKStuZXdbTVlfQUxfREVTVFJVQ1RdOworCisgICAgICAgY2FsbF9vdXQoIydyZW1vdmUsbmV3WzNdKTsKKyAgICAgIH0gZWxzZSBjYWxsX291dCgjJ3JlbW92ZSwwKTsKKworICAgICAgcmV0dXJuIG5ldzsKKyAgICAgfQorCisKKyAgICAgIyMgVmFyaWFudGUgMzogdW5kIGRhcyBnbGVpY2hlIG1pdCBTZXQvUXVlcnltZXRob2RlbiAjIworICAgICAvLyBQcm90b3R5cGVuIGZ1ZXIgU2V0IHVuZCBRdWVyeS1NZXRob2RlbiAtPiBtYW4gU2V0CisgICAgIHN0YXRpYyBtaXhlZCAqbXlfcXVlcnlfYXV0b2xvYWRvYmooKTsKKyAgICAgc3RhdGljIG1peGVkICpteV9zZXRfYXV0b2xvYWRvYmoobWl4ZWQgKm5ldyk7CisKKyAgICAgdm9pZCBjcmVhdGUoKSB7CisgICAgICAvLyBCaW5kZW4gZGVyIE1ldGhvZGVuCisgICAgICBTZXQoUF9BVVRPTE9BRE9CSiwgIydteV9xdWVyeV9hdXRvbG9hZG9iaiwgRl9RVUVSWV9NRVRIT0QpOworICAgICAgU2V0KFBfQVVUT0xPQURPQkosICMnbXlfc2V0X2F1dG9sb2Fkb2JqLCBGX1NFVF9NRVRIT0QpOworCisgICAgICAvLyBkaWUgd2VyZGVuIG51ciB2b24gbWlyIHZlcmFlbmRlcnQhCisgICAgICBTZXQoUF9BVVRPTE9BRE9CSiwgUFJPVEVDVEVELCBGX01PREVfQVMpOworICAgICAgLi4uCisgICAgIH0KKworICAgICBzdGF0aWMgbWl4ZWQgKm15X3F1ZXJ5X2F1dG9sb2Fkb2JqICgpIHsKKyAgICAgICAvLyBzLm8uCisgICAgIH0KKworICAgICBzdGF0aWMgbWl4ZWQgKm15X3NldF9hdXRvbG9hZG9iaiAobWl4ZWQgKm5ldykgeworICAgICAgIC8vIHMuby4KKyAgICAgfQorCitTSUVIRSBBVUNIOgorICAgICBQX0FVVE9MT0FELCBTZXRQcm9wCisKKzI0LkF1Zy4yMDA2IEdsb2luc29uQE1HCmRpZmYgLS1naXQgYS9kb2MvcHJvcHMvUF9BVkFUQVJfVVJJIGIvZG9jL3Byb3BzL1BfQVZBVEFSX1VSSQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4zMjc1Mzk5Ci0tLSAvZGV2L251bGwKKysrIGIvZG9jL3Byb3BzL1BfQVZBVEFSX1VSSQpAQCAtMCwwICsxLDIyIEBACitOQU1FOgorICAgIFBfQVZBVEFSX1VSSSAgICAgICAgICAgICAgICAgICAgInBfbGliX2F2YXRhcnVyaSIKKworREVGSU5JRVJUIElOOgorICAgIC9zeXMvbGl2aW5nL2Rlc2NyaXB0aW9uLmgKKworQkVTQ0hSRUlCVU5HOgorICAgIExlYmV3ZXNlbiBzcGVpY2hlcm4gaW4gZGVyIFByb3AgUF9BVkFUQVJfVVJJIGVpbmUgVVJJIChzdHJpbmcpLCB3ZWxjaGUgYXVmCisgICAgZWluIEJpbGQgaW0gTmV0eiB2ZXJ3ZWlzdCwgd2VsY2hlcyBlaW4gQ2xpZW50IGZ1ZXIgZGllc2VzIExlYmV3ZXNlbgorICAgIGFuemVpZ2VuIGthbm4uCisgICAgU3BpZWxlciBrb2VubmVuIGRpZXNlIEF2YXRhci1VUkkgbWl0IGRlbSBCZWZlaGwgJ2F2YXRhcicgYW56ZWlnZW4sCisgICAgYWVuZGVybiB1bmQgbG9lc2NoZW4uCisgICAgQXZhdGFyLVVSSXMgYW5kZXJlciBTcGllbGVyIGxhc3NlbiBzaWNoIG1pdCAnZmluZ2VyIC1hJyBhdXNnZWJlbi4KKworQkVNRVJLVU5HRU46CisgICAgRGllc2UgUHJvcGVydHkga2FubiBudXIgdm9tIFNwaWVsZXIgb2RlciBlaW5lbSBFTSBtb2RpZml6aWVydCB3ZXJkZW4uCisKK1NJRUhFIEFVQ0g6CisgICAgYXZhdGFyCisKK0xFVFpURVIgQUVOREVSVU5HOgorICAgIDAzLjkuMjAxMSwgWmVzc3RyYQpkaWZmIC0tZ2l0IGEvZG9jL3Byb3BzL1BfQVZFUkFHRV9TSVpFIGIvZG9jL3Byb3BzL1BfQVZFUkFHRV9TSVpFCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjRhNjEyMDgKLS0tIC9kZXYvbnVsbAorKysgYi9kb2MvcHJvcHMvUF9BVkVSQUdFX1NJWkUKQEAgLTAsMCArMSw4IEBACitOQU1FOgorICAgIFBfQVZFUkFHRV9TSVpFICAgICAgICAgICAgICAgICJhdmVyYWdlX3NpemUiICAgICAgICAgICAgICAgIAorCitERUZJTklFUlQgSU46CisgICAgL3N5cy9wbGF5ZXIvZGVzY3JpcHRpb24uaAorCitCRVNDSFJFSUJVTkc6CisgICAgIER1cmNoc2Nobml0dGxpY2hlIEdyb2Vzc2UgZWluZXMgV2VzZW5zIGRpZXNlciBSYXNzZSAoZGVyemVpdCBudXIgUGxheWVyKQpkaWZmIC0tZ2l0IGEvZG9jL3Byb3BzL1BfQVZFUkFHRV9XRUlHSFQgYi9kb2MvcHJvcHMvUF9BVkVSQUdFX1dFSUdIVApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4xODU1N2NjCi0tLSAvZGV2L251bGwKKysrIGIvZG9jL3Byb3BzL1BfQVZFUkFHRV9XRUlHSFQKQEAgLTAsMCArMSw4IEBACitOQU1FOgorICAgIFBfQVZFUkFHRV9XRUlHSFQgICAgICAgICAgICAgICAgImF2ZXJhZ2Vfd2VpZ2h0IgorCitERUZJTklFUlQgSU46CisgICAgL3N5cy9wbGF5ZXIvZGVzY3JpcHRpb24uaAorCitCRVNDSFJFSUJVTkc6CisgICAgIER1cmNoc2Nobml0dGxpY2hlIEdld2ljaHQgZWluZXMgV2VzZW5zIGRpZXNlciBSYXNzZSAoZGVyemVpdCBudXIgUGxheWVyKQpkaWZmIC0tZ2l0IGEvZG9jL3Byb3BzL1BfQVdBWSBiL2RvYy9wcm9wcy9QX0FXQVkKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYmEyYzkzOAotLS0gL2Rldi9udWxsCisrKyBiL2RvYy9wcm9wcy9QX0FXQVkKQEAgLTAsMCArMSw4IEBACitOQU1FOgorICAgIFBfQVdBWSAgICAgICAgICAgICAgICAgICAgICAgICJhd2F5IiAgICAgICAgICAgICAgICAgICAgICAgIAorCitERUZJTklFUlQgSU46CisgICAgL3N5cy9wcm9wZXJ0aWVzLmgKKworQkVTQ0hSRUlCVU5HOgorICAgICBTdHJpbmcgZGVyIGF1c2dlZ2ViZW4gd2lyZCwgd2VubiBtYW4gd2VnIGlzdCB1bmQgZWluZSBNaXR0ZWlsdW5nIGJla29tbXQuCmRpZmYgLS1naXQgYS9kb2MvcHJvcHMvUF9CQURfTVNHIGIvZG9jL3Byb3BzL1BfQkFEX01TRwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5lMDY3ZjJhCi0tLSAvZGV2L251bGwKKysrIGIvZG9jL3Byb3BzL1BfQkFEX01TRwpAQCAtMCwwICsxLDI3IEBACitOQU1FOgorICAgICBQX0JBRF9NU0cgICAgICAgICAgICAgICAgICAgICAic3RkX2Zvb2RfYmFkX21zZyIKKworREVGSU5JRVJUIElOOgorICAgICA8c3lzL2Zvb2QuaD4KKworQkVTQ0hSRUlCVU5HOgorICAgICBNZWxkdW5nLCB3ZW5uIGVpbmUgU3BlaXNlIGdlcmFkZSB2ZXJkaXJidC4KKyAgICAgQmVmaW5kZXQgc2ljaCBkaWUgU3BlaXNlIGluIGVpbmVtIFNwaWVsZXIsIGdlaHQgZGllIE1lbGR1bmcgYW4gZ2VuYXUKKyAgICAgZGllc2VuLCBsaWVndCBkaWUgU3BlaXNlIGltIFJhdW0sIGdlaHQgZGllIE1lbGR1bmcgYW4gYWxsZSBhbndlc2VuZGVuCisgICAgIFNwaWVsZXIuCisgICAgIAorQkVNRVJLVU5HRU46CisgICAgIERpZXNlIE1lbGR1bmcgd2lyZCB2b24gcmVwbGFjZV9wZXJzb25hbCBtaXQgZGVuIEFyZ3VtZW50ZW46CisgICAgIDEuIFNwZWlzZQorICAgICAyLiBLb25zdW1lbnQKKyAgICAgdmVyYXJiZWl0ZXQsIGthbm4gYWxzIGVudHNwcmVjaGVuZGUgUGxhdHpoYWx0ZXIgZW50aGFsdGVuCisgICAgIAorREVGQVVMVDoKKyAgICAgIkBXRVIxIHZlcmRpcmJ0LiIKKworU0lFSEUgQVVDSDoKKyAgICAgUF9MSUZFVElNRSwgUF9SRVNFVF9MSUZFVElNRSwgUF9OT19CQUQsCisgICAgIHdpei9mb29kLCByZXBsYWNlX3BlcnNvbmFsCisKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorTGFzdCBtb2RpZmllZDogVGh1IE9jdCAyOCAxMjoxNTowMCAyMDEwIGJ5IENhbGRyYQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2RvYy9wcm9wcy9QX0JMSU5EIGIvZG9jL3Byb3BzL1BfQkxJTkQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYTgwODE0YgotLS0gL2Rldi9udWxsCisrKyBiL2RvYy9wcm9wcy9QX0JMSU5ECkBAIC0wLDAgKzEsMzUgQEAKK05BTUU6CisgICAgUF9CTElORCAgICAgICAgICAgICAgICAgICAgICAgImJsaW5kIiAgICAgICAgICAgICAgICAgICAgICAgCisKK0RFRklOSUVSVCBJTjoKKyAgICAvc3lzL3BsYXllci92aWV3Y21kLmgKKworQkVTQ0hSRUlCVU5HOgorICAgIDEsIHdlbm4gZGVyIFNwaWVsZXIgYmxpbmQgaXN0IHVuZCBuaWNodHMgbWVociBzZWhlbiBrYW5uLgorCisgICAgV2lyZCB2b24gQ2Fubm90U2VlKCkgYmVpICdzY2hhdScgdW5kIEJldHJldGVuIHZvbiBSYWV1bWVuIAorICAgIHUuYWUuIGF1c2dld2VydGV0LgorCisgICAgUF9CTElORCBrYW5uIGF1Y2ggYXVmIGVpbmVuIFN0cmluZyBnZXNldHp0IHdlcmRlbiwgZGVyIAorICAgIGRhbm4gc3RhdHQgZGVzICdEdSBiaXN0IGJsaW5kJyBhdXNnZWdlYmVuIHdpcmQuCisKK0JFSVNQSUVMRToKKworICAgIHRoaXNfcGxheWVyKCktPlNldFByb3AoUF9CTElORCwxKTsKKworICAgIHRoaXNfcGxheWVyKCktPlNldFByb3AoUF9CTElORCwiRHUgaGFzdCBEaXIgdm9yaGluIHNvIHNjaG9lbiBkaWUgIgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICsiQXVnZW4gYXVzZ2VrcmF0enQgLi4uIGRlc3dlZ2VuICIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICArInNpZWhzdCBEdSBudW4gbmljaHRzIG1laHIuXG4iKTsgICAgCitCRU1FUktVTkdFTjoKKyAgICBVbSBoZXJhdXN6dWZpbmRlbiwgb2IgZWluIFNwaWVsZXIgZXR3YXMgc2VoZW4ga2FubiBvZGVyIG5pY2h0LAorICAgIHNvbGx0ZSBtYW4gbGllYmVyIGlmKHRoaXNfcGxheWVyKCktPkNhbm5vdFNlZSgpICE9IDApIHBydWVmZW4KKyAgICBzdGF0dCBpZih0aGlzX3BsYXllcigpLT5RdWVyeVByb3AoUF9CTElORCkpLgorCisgICAgRGVubiBDYW5ub3RTZWUoKSBiZXJ1ZWNrc2ljaHRpZ3QgYXVjaCBOYWNodHNpY2h0IChiencuIGhpZXIgCisgICAgZWluZSBuaWNodCBha3RpdmllcnRlKSB1bmQgZGllIExpY2h0bW9kaWZpa2F0b3Jlbi4KKworU0lFSEUgQVVDSDoKKyAgICBQX0xJR0hUX01PRElGSUVSLCBQX1BMQVlFUl9MSUdIVCwgQ2Fubm90U2VlCisKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KK0xldHp0ZSBBZW5kZXJ1bmc6IFNhIDAyLjExLjAyLCAwMDozMDowMCBVaHIsIHZvbiBUaWxseQpkaWZmIC0tZ2l0IGEvZG9jL3Byb3BzL1BfQk9EWSBiL2RvYy9wcm9wcy9QX0JPRFkKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uN2QwNDU4MQotLS0gL2Rldi9udWxsCisrKyBiL2RvYy9wcm9wcy9QX0JPRFkKQEAgLTAsMCArMSw5IEBACitOQU1FOgorICAgIFBfQk9EWSAgICAgICAgICAgICAgICAgICAgICAgICJib2R5IiAgICAgICAgICAgICAgICAgICAgICAgIAorCitERUZJTklFUlQgSU46CisgICAgL3N5cy9wcm9wZXJ0aWVzLmgKKworQkVTQ0hSRUlCVU5HOgorICAgICBOdW1lcmlzY2hlciBXZXJ0IGZ1ZXIgZGllIEFid2VocnN0YWVya2UgZGVzIGJsYW5rZW4gS29lcnBlcnMKKyAgICAgZGVzIFdlc2Vucy4KZGlmZiAtLWdpdCBhL2RvYy9wcm9wcy9QX0JSSUVGIGIvZG9jL3Byb3BzL1BfQlJJRUYKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMzNlZjQ4NgotLS0gL2Rldi9udWxsCisrKyBiL2RvYy9wcm9wcy9QX0JSSUVGCkBAIC0wLDAgKzEsOCBAQAorTkFNRToKKyAgICBQX0JSSUVGICAgICAgICAgICAgICAgICAgICAgICAiYnJpZWYiICAgICAgICAgICAgICAgICAgICAgICAKKworREVGSU5JRVJUIElOOgorICAgIC9zeXMvcGxheWVyL3ZpZXdjbWQuaAorCitCRVNDSFJFSUJVTkc6CisgICAgIElzdCBnZXNldHp0LCB3ZW5uIGRlciBTcGllbGVyIG51ciBkaWUgS3VyemJlc2NocmVpYnVuZyBzZWhlbiB3aWxsLgpkaWZmIC0tZ2l0IGEvZG9jL3Byb3BzL1BfQlVGRkVSIGIvZG9jL3Byb3BzL1BfQlVGRkVSCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjI2OGY3MTkKLS0tIC9kZXYvbnVsbAorKysgYi9kb2MvcHJvcHMvUF9CVUZGRVIKQEAgLTAsMCArMSw5IEBACitOQU1FOgorICAgIFBfQlVGRkVSICAgICAgICAgICAgICAgICAgICAgICJidWZmZXIiICAgICAgICAgICAgICAgICAgICAgIAorCitERUZJTklFUlQgSU46CisgICAgL3N5cy9wbGF5ZXIvY29tbS5oCisKK0JFU0NIUkVJQlVORzoKKyAgICBaZWlndCBhbiwgb2IgZGVyIEtvYm9sZCBkZXMgU3BpZWxlcnMgYWt0aXYgb2RlciBuaWNodCBha3RpdiBpc3QuCisKZGlmZiAtLWdpdCBhL2RvYy9wcm9wcy9QX0JVWV9PTkxZX1BMQU5UUyBiL2RvYy9wcm9wcy9QX0JVWV9PTkxZX1BMQU5UUwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi40Njc0N2M0Ci0tLSAvZGV2L251bGwKKysrIGIvZG9jL3Byb3BzL1BfQlVZX09OTFlfUExBTlRTCkBAIC0wLDAgKzEsMTUgQEAKK05BTUU6CisgICAgUF9CVVlfT05MWV9QTEFOVFMgICAgICAgICAgICAgICJsaWJfcF9idXlfb25seV9wbGFudHMiCisKK0RFRklOSUVSVCBJTjoKKyAgICAvc3lzL3Jvb20vZGVzY3JpcHRpb24uaAorCitCRVNDSFJFSUJVTkc6CisgICAgRGllc2UgUHJvcGVydHkga2FubiBhdWYgMSBnZXNldHp0IHdlcmRlbiwgd2VubiBlaW4gTGFkZW4gbnVyIEtyYWV1dGVyCisgICAgYW5rYXVmZW4gZGFyZi4gSGllcnp1IG11c3MgL3N0ZC9yb29tL2tyYWV1dGVybGFkZW4uYyBnZWVyYnQgd2VyZGVuLAorICAgIGRhIG51ciBkaWVzZXMgT2JqZWt0IGRpZSBQcm9wZXJ0eSBiZXJ1ZWNrc2ljaHRpZ3QuCisKK1NJRUhFIEFVQ0g6CisgICAgL3N0ZC9yb29tL2tyYWV1dGVybGFkZW4uYworLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorTGFzdCBtb2RpZmllZDogMDIuMDQuMjAxNSBBcmF0aG9ybiAKZGlmZiAtLWdpdCBhL2RvYy9wcm9wcy9QX0NBTExFRF9GUk9NX0lQIGIvZG9jL3Byb3BzL1BfQ0FMTEVEX0ZST01fSVAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZDk0MjdkMgotLS0gL2Rldi9udWxsCisrKyBiL2RvYy9wcm9wcy9QX0NBTExFRF9GUk9NX0lQCkBAIC0wLDAgKzEsOCBAQAorTkFNRToKKyAgICBQX0NBTExFRF9GUk9NX0lQICAgICAgICAgICAgICAiY2FsbGVkX2Zyb21faXAiICAgICAgICAgICAgICAKKworREVGSU5JRVJUIElOOgorICAgIC9zeXMvcHJvcGVydGllcy5oCisKK0JFU0NIUkVJQlVORzoKKyAgICAgTGV0enRlIElQLUFkciwgdm9uIGRlciBhdXMgc2ljaCBkZXIgU3BpZWxlciBlaW5nZWxvZ2d0IGhhdC4KZGlmZiAtLWdpdCBhL2RvYy9wcm9wcy9QX0NBTl9GTEFHUyBiL2RvYy9wcm9wcy9QX0NBTl9GTEFHUwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5iYTNlYjJhCi0tLSAvZGV2L251bGwKKysrIGIvZG9jL3Byb3BzL1BfQ0FOX0ZMQUdTCkBAIC0wLDAgKzEsOSBAQAorTkFNRToKKyAgICBQX0NBTl9GTEFHUyAgICAgICAgICAgICAgICAgICAiY2FuX2ZsYWdzIiAgICAgICAgICAgICAgICAgICAKKworREVGSU5JRVJUIElOOgorICAgIC9zeXMvcGxheWVyL2Nhbi5oCisKK0JFU0NIUkVJQlVORzoKKyAgICBGbGFncyBkaWUgYmVzdGltbXRlIEJlZmVobGUgZnJlaXNjaGFsdGVuOgorICAgIENBTl9FTU9URSwgQ0FOX0VDSE8sIENBTl9SRU1PVEUsIENBTl9QUkVTQVkKZGlmZiAtLWdpdCBhL2RvYy9wcm9wcy9QX0NBUF9OQU1FIGIvZG9jL3Byb3BzL1BfQ0FQX05BTUUKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uN2ZiZTQwOAotLS0gL2Rldi9udWxsCisrKyBiL2RvYy9wcm9wcy9QX0NBUF9OQU1FCkBAIC0wLDAgKzEsOSBAQAorTkFNRToKKyAgICBQX0NBUF9OQU1FICAgICAgICAgICAgICAgICAgICAiY2FwX25hbWUiICAgICAgICAgICAgICAgICAgICAKKworREVGSU5JRVJUIElOOgorICAgIC9zeXMvcHJvcGVydGllcy5oCisKK0JFU0NIUkVJQlVORzoKKyAgICAgTmFtZSBkZXMgU3BpZWxlcnMsIGRlciBkZWtsaW5pZXJ0IHVuZCBhdXNnZWdlbiB3aXJkLgorICAgICBOT1QgWUVUIElNUExFTUVOVEVELgpkaWZmIC0tZ2l0IGEvZG9jL3Byb3BzL1BfQ0FSUklFRF9WQUxVRSBiL2RvYy9wcm9wcy9QX0NBUlJJRURfVkFMVUUKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uN2RmOWI2MwotLS0gL2Rldi9udWxsCisrKyBiL2RvYy9wcm9wcy9QX0NBUlJJRURfVkFMVUUKQEAgLTAsMCArMSw4IEBACitOQU1FOgorICAgIFBfQ0FSUklFRF9WQUxVRSAgICAgICAgICAgICAgICJjYXJyaWVkIiAgICAgICAgICAgICAgICAgICAgIAorCitERUZJTklFUlQgSU46CisgICAgL3N5cy9wbGF5ZXIvYmFzZS5oCisKK0JFU0NIUkVJQlVORzoKKyAgICAgRW50c2NoYWVkaWd1bmcsIGRpZSBkZXIgU3BpZWxlciBiZWltIEVpbmxvZ2dlbiBlcmhhZWx0LgpkaWZmIC0tZ2l0IGEvZG9jL3Byb3BzL1BfQ0hBVFMgYi9kb2MvcHJvcHMvUF9DSEFUUwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi42MzNjZGVhCi0tLSAvZGV2L251bGwKKysrIGIvZG9jL3Byb3BzL1BfQ0hBVFMKQEAgLTAsMCArMSw4IEBACitOQU1FOgorICAgIFBfQ0hBVFMgICAgICAgICAgICAgICAgICAgICAgICJjaGF0cyIgICAgICAgICAgICAgICAgICAgICAgIAorCitERUZJTklFUlQgSU46CisgICAgL3N5cy9wcm9wZXJ0aWVzLmgKKworQkVTQ0hSRUlCVU5HOgorICAgICBBbGlzdCBtaXQgU3RyaW5ncywgZGllIGRhcyBNb25zdGVyIHp1ZmFlbGxpZyBhdXNnaWJ0LgpkaWZmIC0tZ2l0IGEvZG9jL3Byb3BzL1BfQ0hBVF9DSEFOQ0UgYi9kb2MvcHJvcHMvUF9DSEFUX0NIQU5DRQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5iNmFjZjA4Ci0tLSAvZGV2L251bGwKKysrIGIvZG9jL3Byb3BzL1BfQ0hBVF9DSEFOQ0UKQEAgLTAsMCArMSw4IEBACitOQU1FOgorICAgIFBfQ0hBVF9DSEFOQ0UgICAgICAgICAgICAgICAgICJjaGF0X2NoYW5jZSIgICAgICAgICAgICAgICAgIAorCitERUZJTklFUlQgSU46CisgICAgL3N5cy9wcm9wZXJ0aWVzLmgKKworQkVTQ0hSRUlCVU5HOgorICAgICBXYWhyc2NoZWlubGljaGtlaXQsIG1pdCBkZXIgZGllIENoYXRzIGF1c2dlZ2ViZW4gd2VyZGVuLgpkaWZmIC0tZ2l0IGEvZG9jL3Byb3BzL1BfQ0xBU1MgYi9kb2MvcHJvcHMvUF9DTEFTUwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5lMDc0Mzk0Ci0tLSAvZGV2L251bGwKKysrIGIvZG9jL3Byb3BzL1BfQ0xBU1MKQEAgLTAsMCArMSwxOSBAQAorUF9DTEFTUworTkFNRToKKyAgICAgUF9DTEFTUwkJCQkJCSJjbGFzcyIKKworREVGSU5JRVJUIElOOgorICAgICA8dGhpbmcvZGVzY3JpcHRpb24uaD4KKworQkVTQ0hSRUlCVU5HOgorICAgICBEaWUgS2xhc3NpZml6aWVydW5nIGVpbmVzIE9iamVrdGVzLCBzb3dlaXQgc2llIG5pY2h0IHNjaG9uIHVlYmVyIGRpZSAKKyAgICAgUmFzc2Ugb2RlciBkaWUgSURzIGRlcyBPYmpla3RlcyBlcmZvbGd0IGlzdC4gWnVtIFNldHplbiBkaWVzZXIgUHJvcGVydHkgCisgICAgIHNvbGx0ZSBtYW4gQWRkQ2xhc3MoKSBiZW51dHplbiwgenVyIEtsYXNzZW5hYmZyYWdlIHN0ZWh0IAorICAgICBpc19jbGFzc19tZW1iZXIoKSB6dXIgVmVyZnVlZ3VuZy4KKyAgICAgRGllIG1vZWdsaWNoZW4gS2xhc3NlbiBmaW5kZXQgbWFuIGluIC9zeXMvY2xhc3MuaAorCitTSUVIRSBBVUNIOgorICAgICBBZGRDbGFzcygpLCBSZW1vdmVDbGFzcygpLCBpc19jbGFzc19tZW1iZXIoKQorCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCitMYXN0IG1vZGlmaWVkOiBTdW4gTWF5IDE5IDIwOjMwOjA5IDE5OTYgYnkgV2FyZ29uCmRpZmYgLS1naXQgYS9kb2MvcHJvcHMvUF9DTE9DS01TRyBiL2RvYy9wcm9wcy9QX0NMT0NLTVNHCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjhiNzJkNjgKLS0tIC9kZXYvbnVsbAorKysgYi9kb2MvcHJvcHMvUF9DTE9DS01TRwpAQCAtMCwwICsxLDggQEAKK05BTUU6CisgICAgUF9DTE9DS01TRyAgICAgICAgICAgICAgICAgICAgImNsb2NrbXNnIiAgICAgICAgICAgICAgICAgICAgCisKK0RFRklOSUVSVCBJTjoKKyAgICAvc3lzL3Byb3BlcnRpZXMuaAorCitCRVNDSFJFSUJVTkc6CisgICAgIERpZSBNZWxkdW5nIHdpcmQgenVyIHZvbGxlbiBTdHVuZGUgYXVzZ2VnZWJlbgpkaWZmIC0tZ2l0IGEvZG9jL3Byb3BzL1BfQ0xPTkVSIGIvZG9jL3Byb3BzL1BfQ0xPTkVSCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjY1OWI2MTQKLS0tIC9kZXYvbnVsbAorKysgYi9kb2MvcHJvcHMvUF9DTE9ORVIKQEAgLTAsMCArMSwxMiBAQAorTkFNRToKKyAgICBQX0NMT05FUiAgICAgICAgICAgICAgICAgICAgICAiY2xvbmVyIiAgICAgICAgICAgICAgICAgICAgICAKKworREVGSU5JRVJUIElOOgorICAgIC9zeXMvcHJvcGVydGllcy5oCisKK0JFU0NIUkVJQlVORzoKKyAgICAgRW50aGFlbHQgZWluZW4gU3RyaW5nIG1pdCBkZW0gTmFtZW4gZGVzamVuaWdlbiwgZGVyIGRhcyBPYmpla3QgZ2VjbG9uZWQgCisgICAgIGhhdC4KKworU0lFSEUgQVVDSDoKKyAgICAgUF9DTE9ORV9USU1FCmRpZmYgLS1naXQgYS9kb2MvcHJvcHMvUF9DTE9ORV9NU0cgYi9kb2MvcHJvcHMvUF9DTE9ORV9NU0cKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZDljOTZhMgotLS0gL2Rldi9udWxsCisrKyBiL2RvYy9wcm9wcy9QX0NMT05FX01TRwpAQCAtMCwwICsxLDggQEAKK05BTUU6CisgICAgUF9DTE9ORV9NU0cgICAgICAgICAgICAgICAgICAgImNsb25lX21zZyIgICAgICAgICAgICAgICAgICAgCisKK0RFRklOSUVSVCBJTjoKKyAgICAvc3lzL3BsYXllci9iYXNlLmgKKworQkVTQ0hSRUlCVU5HOgorICAgICBNZWxkdW5nLCBkaWUgYmVpbSBDbG9uZW4gZWluZXMgT2JqIGF1c2dlZ2VnZW4gd2lyZCAobnVyIE1hZ2llcikKZGlmZiAtLWdpdCBhL2RvYy9wcm9wcy9QX0NMT05FX1RJTUUgYi9kb2MvcHJvcHMvUF9DTE9ORV9USU1FCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmE5MDQ4NDYKLS0tIC9kZXYvbnVsbAorKysgYi9kb2MvcHJvcHMvUF9DTE9ORV9USU1FCkBAIC0wLDAgKzEsMTQgQEAKK05BTUU6CisgICAgUF9DTE9ORV9USU1FICAgICAgICAgICAgICAgICAgICJjbG9uZV90aW1lIiAgICAgICAgICAgICAgICAgICAgICAKKworREVGSU5JRVJUIElOOgorICAgIC9zeXMvdGhpbmcvZGVzY3JpcHRpb24uaAorCitCRVNDSFJFSUJVTkc6CisgICAgIEVudGhhZWx0IGRpZSBDbG9uZS1UaW1lIGVpbmVzIE9iamVrdGVzLgorICAgICBIZXV0enV0YWdlIG9ic29sZXQsIGJpdHRlIHN0YXR0ZGVzc2VuIGxpZWJlciBkaWUgRWZ1biBvYmplY3RfdGltZSgpCisgICAgIGJlbnV0emVuLgorCitTSUVIRSBBVUNIOgorICAgICBWZXJ3YW5kdDogb2JqZWN0X3RpbWUoRSkKKyAgICAgQWVobmxpY2g6IHByb2dyYW1fdGltZShFKQpkaWZmIC0tZ2l0IGEvZG9jL3Byb3BzL1BfQ0xPVEhJTkcgYi9kb2MvcHJvcHMvUF9DTE9USElORwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi43OTNmMDk4Ci0tLSAvZGV2L251bGwKKysrIGIvZG9jL3Byb3BzL1BfQ0xPVEhJTkcKQEAgLTAsMCArMSwyMiBAQAorUF9DTE9USElOR1MKKworTkFNRToKKyAgICAgUF9DTE9USElORyAgICAgICAgICAgICAgICAgICAgICJzdGQ6Y2xvdGhpbmciCisKK0RFRklOSUVSVCBJTjoKKyAgICAgPGxpdmluZy9jbG90aGluZy5oPgorCitCRVNDSFJFSUJVTkc6CisgICAgIEFycmF5IG1pdCBkZXIgZ2V0cmFnZW5lbiBuaWNodC1zY2h1ZXR6ZW5kZW4gS2xlaWR1bmcgZGVzIExlYmV3ZXNlbi4KKyAgICAgCisgICAgIEZhbGxzIGlociBkaWUgS2xlaWR1bmcgZGVzIExlYmV3ZXNlbnMsIGdnZi4gbWl0IGJlc3RpbXRlbiBLcml0ZXJpZW4sCisgICAgIGVybWl0dGVsbiB3b2xsdCwgYmVudXR6dCBoaWVyZnVlciBiaXR0ZSBkaWUgRnVua3Rpb24gRmlsdGVyQ2xvdGhpbmcoKQorICAgICBzdGF0dCBzZWxiZXIgdWViZXIgZGllc2VzIEFycmF5IHp1IGxhdWZlbi4KKworICAgICBEaWVzZSBQcm9wZXJ0eSBrYW5uIG51ciB2b20gTGViZXdlc2VuIHNlbGJlciBiZXNjaHJpZWJlbiB3ZXJkZW4uCisgICAgIAorU0lFSEUgQVVDSDoKKyAgICAgVmVyd2FuZHQ6CQlRdWVyeUFybW91ckJ5VHlwZShMKSwgRmlsdGVyQ2xvdGhpbmcoKSwgRmlsdGVyQXJtb3VycygpCisgICAgICAgICAgICAgICAgICBXZWFyKCksIFVud2VhcigpLCBQX0FSTU9VUlMKKworMTQuMDMuMjAwOSwgWmVzc3RyYQpkaWZmIC0tZ2l0IGEvZG9jL3Byb3BzL1BfQ01TRyBiL2RvYy9wcm9wcy9QX0NNU0cKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOTAwMTcyMgotLS0gL2Rldi9udWxsCisrKyBiL2RvYy9wcm9wcy9QX0NNU0cKQEAgLTAsMCArMSw4IEBACitOQU1FOgorICAgIFBfQ01TRyAgICAgICAgICAgICAgICAgICAgICAgICJjbG9uZW1zZyIgICAgICAgICAgICAgICAgICAgIAorCitERUZJTklFUlQgSU46CisgICAgL3N5cy9wbGF5ZXIvYmFzZS5oCisKK0JFU0NIUkVJQlVORzoKKyAgICAgKioqIE9CU09MRVQhICoqKiBTaWVoZSBQX0NMT05FX01TRwpkaWZmIC0tZ2l0IGEvZG9jL3Byb3BzL1BfQ05UX1NUQVRVUyBiL2RvYy9wcm9wcy9QX0NOVF9TVEFUVVMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uY2Q5MjMyNAotLS0gL2Rldi9udWxsCisrKyBiL2RvYy9wcm9wcy9QX0NOVF9TVEFUVVMKQEAgLTAsMCArMSw5IEBACitOQU1FOgorICAgIFBfQ05UX1NUQVRVUyAgICAgICAgICAgICAgICAgICJjbnRfc3RhdHVzIiAgICAgICAgICAgICAgICAgIAorCitERUZJTklFUlQgSU46CisgICAgL3N5cy9jb250YWluZXIuaAorCitCRVNDSFJFSUJVTkc6CisgICAgIFN0YXR1cyBkZXMgQ29udGFpbmVycyAob2ZmZW4sIGdlc2NobG9zc2VuLCBhYmdlc2NobG9zc2VuKQorICAgICBzaWVoZSBhdWNoIC9zeXMvY29udGFpbmVyLmgKZGlmZiAtLWdpdCBhL2RvYy9wcm9wcy9QX0NPTUJBVENNRFMgYi9kb2MvcHJvcHMvUF9DT01CQVRDTURTCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmMyOWE2NWYKLS0tIC9kZXYvbnVsbAorKysgYi9kb2MvcHJvcHMvUF9DT01CQVRDTURTCkBAIC0wLDAgKzEsMzEgQEAKK05BTUU6CisgICAgUF9DT01CQVRDTURTICAgICAgICAgICAgICAgICAgImNvbWJhdGNtZHMiICAgICAgICAgICAgICAgICAgCisKK0RFRklOSUVSVCBJTjoKKyAgICAvc3lzL3Byb3BlcnRpZXMuaAorCitCRVNDSFJFSUJVTkc6CisgICAgIEZ1ZXIgZGVuIEthbXBmIGdlYnJhdWNoYmFyZSBCZWZlaGxlIHNwZXppZWxsZXIgT2JqZWt0ZSAoZGFtaXQgYXVjaAorICAgICBNb25zdGVyIHNpZSBhdXRvbWF0aXNjaCByaWNodGlnIGFud2VuZGVuIGtvZW5uZW4pCisgICAgIERlciBJbmhhbHQgdm9uIFBfQ09NQkFUQ01EUyBpc3QgZWluIE1hcHBpbmcsIGRlciBLZXkgaXN0IGRhcyBLb21tYW5kbywKKyAgICAgdW0gZGVuIEdlZ2Vuc3RhbmQgenUgYmVudXR6ZW4gKGFsc28gei5CLiAid2lyZiBmbGFtbWVua3VnZWwiKSwgdW5kIGRlcgorICAgICBWYWx1ZSBlaW4gd2VpdGVyZXMgTWFwcGluZyBtaXQgWnVzYXR6aW5mb3MgKGRlZmluaWVydCBpbiAvc3lzL2NvbWJhdC5oKS4KKyAgICAgRm9sZ2VuZGUgS2V5cyBzaW5kIGRlZmluaWVydDoKKyAgICAgLSBDX01JTiwgQ19BVkcsIENfTUFYOgorICAgICAgIG1pbmltYWxlciwgbWl0dGxlcmVyIHVuZCBtYXhpbWFsZXIgU2NoYWRlbiwgZGVuIGRhcworICAgICAgIE9iamVrdCBtYWNodC4gQWxsZSBBbmdhYmVuIGluIExFQkVOU1BVTktURU4sIGQuaC4gRGVmZW5kLUVpbmhlaXRlbi8xMC4KKyAgICAgICBCZWkgZWluZW0gQXVmcnVmIHdpZSAnZW5lbXktPkRlZmVuZCgyMDArcmFuZG9tKDIwMCksIC4uLiknIGlzdCBkYW5uCisgICAgICAgQ19NSU49MjAsIENfQVZHPTMwLCBDX01BWD00MC4KKyAgICAgLSBDX0RUWVBFUzoKKyAgICAgICBBcnJheSBtaXQgZGVtIFNjaGFkZW5zdHlwIG9kZXIgZGVuIFNjaGFkZW5zdHlwZW4uIEJlaW0gRWlzc3RhYgorICAgICAgIHd1ZXJkZSBkZXIgRWludHJhZyBkYW5uICdDX0RUWVBFUzooe0RUX0NPTER9KScgbGF1dGVuLgorICAgICAtIENfSEVBTDoKKyAgICAgICBTb2xsdGUgZGFzIEthbXBmb2JqZWt0IHVlYmVyIGRpZSBNb2VnbGljaGtlaXQgdmVyZnVlZ2VuLCBkZW4gQW53ZW5kZXIKKyAgICAgICBpcmdlbmR3aWUgenUgaGVpbGVuLCBzbyB3aXJkIGhpZXIgZGllIEhlaWx1bmcgaW4gTFAvTVAgZWluZ2V0cmFnZW4uCisgICAgICAgRGFzIGZ1bmt0aW9uaWVydCBhdWNoIGJlaSBPYmpla3RlbiwgZGllIG51ciBoZWlsZW4sIGFsc28gc29uc3QKKyAgICAgICBuaWNodHMgbWl0IEthbXBmIHp1IHR1biBoYWJlbi4KKyAgICAgICBJbSBMdXBpbmVudGFsIHouQi4gZ2lidCBlcyBQZmlyc2ljaGUsIGRpZSBiZWltIEVzc2VuIDVMUCBoZWlsZW4uIERhCisgICAgICAga2FubiBtYW4gZGFubiAnU2V0UHJvcChQX0NPTUJBVENNRFMsIChbImlzcyBwZmlyc2ljaCI6KFtDX0hFQUw6NV0pXSkpJworICAgICAgIGVpbnRyYWdlbi4KKyAgICAgRXMgc2luZCBhdWNoIG1laHJlcmUgS29tbWFuZG9zIG1vZWdsaWNoLCB6LkIuIGJlaSBPYmpla3RlbiwgZGllIHNvd29obAorICAgICBoZWlsZW4gYWxzIGF1Y2ggS2FtcGZ3aXJrdW5nIGhhYmVuLgpkaWZmIC0tZ2l0IGEvZG9jL3Byb3BzL1BfQ09NTUFORFMgYi9kb2MvcHJvcHMvUF9DT01NQU5EUwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41MjdkMWExCi0tLSAvZGV2L251bGwKKysrIGIvZG9jL3Byb3BzL1BfQ09NTUFORFMKQEAgLTAsMCArMSw0NyBAQAorUF9DT01NQU5EUworTkFNRToKKyAgICAgUF9DT01NQU5EUyAiY29tbWFuZHMiCisKK0RFRklOSUVSVCBJTjoKKyAgICAgPHRoaW5nL2NvbW1hbmRzLmg+CisKK0JFU0NIUkVJQlVORzoKKyAgICAgRGllc2UgUHJvcGVydHkgZW50aGFlbHQgZWluIE1hcHBpbmcgbWl0IGRlbiBCZWZlaGxlbiwgZGllIGRlbSBPYmpla3QKKyAgICAgenVnZW9yZG5ldCBzaW5kLgorCisgICAgIFNpZSBzb2xsdGUgbmljaHQgdm9uIEhhbmQgbWFuaXB1bGllcnQgd2VyZGVuLCBzb25kZXJuIG51ciB1ZWJlciBkaWUKKyAgICAgRnVua3Rpb25lbiBBZGRDbWQoKSB1bmQgUmVtb3ZlQ21kKCkuCisKKyAgICAgRGFzIE1hcHBpbmcgaGF0IGZvbGdlbmRlbiBBdWZiYXU6CisKKyAgICAgKFsgYmVmZWhsIDogKHtmdW5rdGlvbjEsLi4ufSk7CisgICAgICAgICAgICAgICAgICh7ZmxhZzEsLi4ufSk7CisgICAgICAgICAgICAgICAgICh7cmVnZWwxLC4uLn0pOworICAgICAgICAgICAgICAgICAoe2lkMSwgLi4ufSksCisgICAgICAgIC4uLiBdKQorCisgICAgIERpZSBFaW50cmFlZ2UgZW50c3ByZWNoZW4gZGVuIFBhcmFtZXRlcm4gZGVzIEFkZENtZCgpLUF1ZnJ1ZnMsIHNpbmQKKyAgICAgYWJlciBpbiBhbmRlcmVyIEZvcm0uIEFscyBCZWlzcGllbDoKKworICAgICBBZGRDbWQodmVyYixmdW4xLDEpOworICAgICBBZGRDbWQodmVyYitzeW4xYXxzeW4xYiZzeW4yYXxzeW4yYnxzeW4yYyxmdW4yLAorCSAgIGVycm9yMV9ub3RpZnl8ZXJyb3IyX25vdGlmeV5lcnJvcjJfd3JpdGUpOworICAgICAtLT4KKyAgICAgKFt2ZXJiOih7ZnVuMSxmdW4yfSk7CQkJCQkgIC8vIGZ1bnMKKwkgICAgKHsxLCh7ZXJyb3IxX25vdGlmeSwgZXJyb3IyX3dyaXRlXmVycm9yMl9zYXksIDF9KX0pOyAgLy8gZmxhZ3MKKyAgICAgICAgICAgICh7MCwoeyh7c3luMWEsc3luMWJ9KSwoe3N5bjJhLHN5bjJiLHN5bjJjfSl9KX0pOwkgIC8vIHJ1bGVzCisgICAgICAgICAgICAwXSkJCQkJCQkJICAvLyBJRHMKKworICAgICBBdWZnZXNjaGx1ZXNzZWx0IHNlaGVuIGRpZSBlaW56ZWxuZW4gQXJyYXlzIGZvbGdlbmRlcm1hc3NlbiBhdXM6CisKKyAgICAgUnVsZXM6ICh7PFJlZ2Vsc2F0eiBmdWVyIGZ1bjE+LCAoezwxLiBTeW5vbnltZ3J1cHBlPiwKKwkJCQkgICAgICAgPDIuIFN5bm9ueW1ncnVwcGUsIC4uLn0pLCAuLi59KQorICAgICBGbGFnczogKHs8RmxhZyBmdWVyIGZ1bjE+LCAoezxGZWhsZXJtZWxkdW5nIDEuIFN5bm9ueW1ncnVwcGU+LCAuLi4gLAorCQkJCSAgWywgSW5kZXggZnVlciB3cml0ZSBhbnN0YXR0IG5vdGlmeV9mYWlsXX0pLAorCSAgICAgIC4uLiB9KQorICAgICBJRHM6ICAgMCBvZGVyICh7PElEIGZ1ZXIgZnVuMT59KSBvZGVyICh7MCwgPElEIGZ1ZXIgZnVuMj59KSAuLi4KKworU0lFSEUgQVVDSDoKKyAgICAgL3N0ZC90aGluZy9jb21tYW5kcy5jLCBBZGRDbWQoKSwgUmVtb3ZlQ21kKCkKKworMDguRGV6LjIwMDMgR2xvaW5zb24KZGlmZiAtLWdpdCBhL2RvYy9wcm9wcy9QX0NPTVBJTEVSX1BBVEggYi9kb2MvcHJvcHMvUF9DT01QSUxFUl9QQVRICm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmVjZDI3NDMKLS0tIC9kZXYvbnVsbAorKysgYi9kb2MvcHJvcHMvUF9DT01QSUxFUl9QQVRICkBAIC0wLDAgKzEsMjEgQEAKK05BTUU6CisgICAgUF9DT01QSUxFUl9QQVRIICAgICAgICAgICAgICAgImNvbXBpbGVyX3BhdGgiICAgICAgICAgICAgICAgCisKK0RFRklOSUVSVCBJTjoKKyAgICAvc3lzL3ZfY29tcGlsZXIuaAorCitCRVNDSFJFSUJVTkc6CisgICAgRGlyZWN0b3J5IGluIGRlbSBlaW4gVmlydHVhbCBDb21waWxlciBPYmpla3RlIGVyemV1Z3QuCisgICAgTXVzcyBpbSB2aXJ0dWFsX2NvbXBpbGVyLmMgZ2VzZXR6dCB3ZXJkZW4uCisKKyAgICBEZXIgVmlydHVhbENvbXBpbGVyIG11c3MgbmljaHQgendpbmdlbmQgaW4gZGllc2VtIFZlcnplaWNobmlzCisgICAgbGllZ2VuLCB1bSB6dSBmdW5rdGlvbmllcmVuLCBzb2xsdGUgZXMgYWJlciwgdW0gZGllIFp1b3JkbnVuZyBkZXMgVkNzIHp1CisgICAgInNlaW5lbiIgT2JqZWt0ZW4genUgZXJsZWljaGVybi4KKworQkVJU1BJRUw6CisgICAgU2V0UHJvcChQX0NPTVBJTEVSX1BBVEgsIi9kL3JlZ2lvbi9tYWdpZXIvdmMvIik7CisKK1NJRUhFIEFVQ0g6CisgICAgUF9TVERfT0JKRUNULCB2aXJ0dWFsX2NvbXBpbGVyCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCitMZXR6dGUgQWVuZGVydW5nOiAyMy4xMC4yMDA3LCB2b24gWmVzc3RyYQpkaWZmIC0tZ2l0IGEvZG9jL3Byb3BzL1BfQ09OU1VNRV9NU0cgYi9kb2MvcHJvcHMvUF9DT05TVU1FX01TRwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44YjhhMDVhCi0tLSAvZGV2L251bGwKKysrIGIvZG9jL3Byb3BzL1BfQ09OU1VNRV9NU0cKQEAgLTAsMCArMSwyNCBAQAorTkFNRToKKyAgICAgUF9DT05TVU1FX01TRyAgICAgICAgICAgICAgICAgInN0ZF9mb29kX2NvbnN1bWVfbXNnIgorCitERUZJTklFUlQgSU46CisgICAgIDxzeXMvZm9vZC5oPgorCitCRVNDSFJFSUJVTkc6CisgICAgIE1lbGR1bmcgYW4gZGVuIFJhdW0gZXhrbHVzaXZlIEtvbnN1bWVudCwgd2VubiBlaW5lIFNwZWlzZSBrb25zdW1pZXJ0CisgICAgIHdpcmQuCisgICAgIAorQkVNRVJLVU5HRU46CisgICAgIERpZXNlIE1lbGR1bmcgd2lyZCB2b24gcmVwbGFjZV9wZXJzb25hbCBtaXQgZGVuIEFyZ3VtZW50ZW46CisgICAgIDEuIFNwZWlzZQorICAgICAyLiBLb25zdW1lbnQKKyAgICAgdmVyYXJiZWl0ZXQsIGthbm4gYWxzIGVudHNwcmVjaGVuZGUgUGxhdHpoYWx0ZXIgZW50aGFsdGVuCisgICAgIAorREVGQVVMVDoKKyAgICAgIkBXRVIyIGtvbnN1bWllcnQgQFdFTjEuIgorCitTSUVIRSBBVUNIOgorICAgICAvc3RkL2Zvb2QuYywgd2l6L2Zvb2QsIHJlcGxhY2VfcGVyc29uYWwKKworLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCitMYXN0IG1vZGlmaWVkOiBUaHUgT2N0IDI4IDEyOjE1OjAwIDIwMTAgYnkgQ2FsZHJhClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZG9jL3Byb3BzL1BfQ09OVEFJTkVSIGIvZG9jL3Byb3BzL1BfQ09OVEFJTkVSCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmVkMTVjYTUKLS0tIC9kZXYvbnVsbAorKysgYi9kb2MvcHJvcHMvUF9DT05UQUlORVIKQEAgLTAsMCArMSw4IEBACitOQU1FOgorICAgIFBfQ09OVEFJTkVSICAgICAgICAgICAgICAgICAgICJjb250YWluZXIiICAgICAgICAgICAgICAgICAgIAorCitERUZJTklFUlQgSU46CisgICAgL3N5cy9wcm9wZXJ0aWVzLmgKKworQkVTQ0hSRUlCVU5HOgorICAgICoqKiBLRUlORSBCRVNDSFJFSUJVTkcgVk9SSEFOREVOICoqKgpkaWZmIC0tZ2l0IGEvZG9jL3Byb3BzL1BfQ09OVEVOVFMgYi9kb2MvcHJvcHMvUF9DT05URU5UUwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4xMjEyZGE3Ci0tLSAvZGV2L251bGwKKysrIGIvZG9jL3Byb3BzL1BfQ09OVEVOVFMKQEAgLTAsMCArMSw4IEBACitOQU1FOgorICAgIFBfQ09OVEVOVFMgICAgICAgICAgICAgICAgICAgICJjb250ZW50cyIgICAgICAgICAgICAgICAgICAgIAorCitERUZJTklFUlQgSU46CisgICAgL3N5cy9jb250YWluZXIuaAorCitCRVNDSFJFSUJVTkc6CisgICAgICoqKiBPQlNPTEVUISAqKioKZGlmZiAtLWdpdCBhL2RvYy9wcm9wcy9QX0NPUlBTRSBiL2RvYy9wcm9wcy9QX0NPUlBTRQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5iY2IwYWI2Ci0tLSAvZGV2L251bGwKKysrIGIvZG9jL3Byb3BzL1BfQ09SUFNFCkBAIC0wLDAgKzEsMjUgQEAKK05BTUU6CisgICAgUF9DT1JQU0UJCSJjb3Jwc2UiCisKK0RFRklOSUVSVCBJTjoKKyAgICAvc3lzL3Byb3BlcnRpZXMuaAorCitCRVNDSFJFSUJVTkc6CisgICAgSGllciBrYW5uIG1hbiBhbmdlYmVuLCB3ZWxjaGUgQXJ0IHZvbiBMZWljaGUgYmVpbSBUb2QgZGVzIE5QQ3MKKyAgICBoaW50ZXJsYXNzZW4gd2lyZC4gRGFtaXQgZGllIExlaWNoZSBhdWYgZGVtIE1vZXJkZXItS2FuYWwgc2VuZGVuCisgICAga2FubiwgbXVzcyBkYXMgTGVpY2hlbi1PYmpla3QgL3N0ZC9jb3Jwc2Ugc2VpbiBvZGVyIGVyYmVuLgorCitCRUlTUElFTEU6CisgICAgRGllIHVlYmxpY2hlIFN0YW5kYXJkbGVpY2hlIGJlZmluZGV0IHNpY2ggdW50ZXIgIi9zdGQvY29ycHNlLmMiLAorICAgIHdlbGNoZXMgYXVjaCBkaWUgRGVmYXVsdGVpbnN0ZWxsdW5nIGZ1ZXIgZGllc2UgUHJvcGVydHkgZGFyc3RlbGx0OgorICAgICAgU2V0UHJvcChQX0NPUlBTRSwiL3N0ZC9jb3Jwc2UiKTsKKyAgICBNYW4ga29lbm50ZSBhYmVyIGF1Y2ggZWluZW4gWm9tYmllIGVudHN0ZWhlbiBsYXNzZW46CisgICAgICBTZXRQcm9wKFBfQ09SUFNFLFBBVEgoInpvbWJpZSIpKTsKKyAgICBQQVRIIGtlbm56ZWljaG5ldCBoaWVyYmVpIGRlbiBQZmFkLCB1bnRlciB3ZWxjaGVtICJ6b21iaWUuYyIgenUKKyAgICBmaW5kZW4gaXN0LgorCitTSUVIRSBBVUNIOgorICAgIFBfTk9DT1JQU0UsIFBfWkFQX01TRywgUF9ESUVfTVNHLCBQX01VUkRFUl9NU0csIFBfS0lMTF9NU0cKKworLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorTGFzdCBtb2RpZmllZDogTW9uIEFwciAwNyAxMTowMjowNiAyMDAzIGJ5IE1hbmRyYWdvbgpkaWZmIC0tZ2l0IGEvZG9jL3Byb3BzL1BfQ1VSUkVOVERJUiBiL2RvYy9wcm9wcy9QX0NVUlJFTlRESVIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uODdiYmQ1YwotLS0gL2Rldi9udWxsCisrKyBiL2RvYy9wcm9wcy9QX0NVUlJFTlRESVIKQEAgLTAsMCArMSwxNSBAQAorTkFNRToKKyAgICBQX0NVUlJFTlRESVIgICAgICAgICAgICAgICAgICAiY3VycmVudGRpciIKKworREVGSU5JRVJUIElOOgorICAgIC9zeXMvc2hlbGxzLmgKKworQkVTQ0hSRUlCVU5HOgorICAgIE1vbWVudGFuZXMgVmVyemVpY2huaXMgaW4gZGVtIGRlciBNYWdpZXIgaXN0LgorICAgIChudXIgZnVlciBNYWdpZXIgdm9uIEJlbGFuZykKKworU2llaGUgYXVjaDoKKyAgICBQX0NVUlJFTlRESVIKKworTGV0enRlIEFlbmRlcnVuZzoKKyAgICAwMy4wNi4yMDE1LCBCdWdmaXgKZGlmZiAtLWdpdCBhL2RvYy9wcm9wcy9QX0NVUlNFRCBiL2RvYy9wcm9wcy9QX0NVUlNFRApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5kOTQ4NmZlCi0tLSAvZGV2L251bGwKKysrIGIvZG9jL3Byb3BzL1BfQ1VSU0VECkBAIC0wLDAgKzEsMzUgQEAKK1BfQ1VSU0VECisKK05BTUU6CisgICAgIFBfQ1VSU0VEICJjdXJzZWQiCisKK0RFRklOSUVSVCBJTjoKKyAgICAgPHByb3BlcnRpZXMuaD4KKworQkVTQ0hSRUlCVU5HOgorICAgICBSdWVzdHVuZ2VuIHVuZCBXYWZmZW4sIGRpZSBzaWNoLCBlaW5tYWwgYW5nZXpvZ2VuIGJ6dy4gZ2V6dWVja3QsIG5pY2h0CisgICAgIHdpZWRlciBlbnRmZXJuZW4gbGFzc2VuIHNvbGxlbiwga2FubiBtYW4gdWViZXIgZGllc2UgUHJvcGVydHkKKyAgICAgcmVhbGlzaWVyZW4uIERpZSBXYWZmZSBvZGVyIFJ1ZXN0dW5nIGhhdCBkYW5uIGluIGRlciBSZWdlbCBuZWdhdGl2ZQorICAgICBBdXN3aXJrdW5nZW4gYXVmIGRlbiBUcmFlZ2VyLi4uCisKKyAgICAgU2V0enQgbWFuIGRpZXNlIFByb3BlcnR5IGF1ZiBlaW5lIFphaGwgdW5nbGVpY2ggMCwgc28gYmVrb21tdCBtYW4gYmVpCisgICAgIGRlbSBWZXJzdWNoLCBkZW4gdmVyZmx1Y2h0ZW4gR2VnZW5zdGFuZCBhdXN6dXppZWhlbiBiencuIHdlZ3p1c3RlY2tlbgorICAgICBlaW5lIERlZmF1bHRtZWxkdW5nLgorCisgICAgIFRyYWVndCBtYW4gZGFnZWdlbiBlaW5lbiBTdHJpbmcgZWluLCBzbyB3aXJkIGRpZXNlciBiZWltIFZlcnN1Y2gsIGRlbgorICAgICBHZWdlbnN0YW5kIGxvc3p1d2VyZGVuLCBhdXNnZWdlYmVuLgorCitCRU1FUktVTkdFTjoKKyAgICAgRGVyICdGbHVjaCcgd2lyZCBlcnN0IHdpcmtzYW0sIHdlbm4gZGFzIE9wZmVyIGRpZSBXYWZmZSB6dWVja3QgYnp3LiBkaWUKKyAgICAgUnVlc3R1bmcgYW56aWVodC4gSXN0IGRpZXMgZXJzdCBlaW5tYWwgZ2VzY2hlaGVuLCBoZWxmZW4gbnVyIG5vY2gKKyAgICAgWmF1YmVyc3BydWVjaGUgb2RlciBmbHVjaGJyZWNoZW5kZSBJbnN0aXR1dGlvbmVuLgorCisgICAgIE1vZWNodGUgbWFuLCBkYXNzIGRlciBHZWdlbnN0YW5kIGVudGZsdWNoYmFyIGlzdCwgZGFubiBzb2xsdGUgZXIgYXVjaAorICAgICBhbnNwcmVjaGJhciBzZWluIChndWVsdGlnZSBJRCwgbmljaHQgdW5zaWNodGJhciksIGRhIGRhcyBkdXJjaCBkZXJ6ZWl0aWdlCisgICAgIEVudGZsdWNobW9lZ2xpY2hrZWl0ZW4gdm9yYXVzZ2VzZXR6dCB3aXJkLgorCitTSUVIRSBBVUNIOgorICAgICAvc3RkL2FybW91ci5jLCAvc3RkL3dlYXBvbi5jCisKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KK0xhc3QgbW9kaWZpZWQ6IFN1biBNYXkgMTkgMTQ6NDU6MjggMTk5NiBieSBXYXJnb24KZGlmZiAtLWdpdCBhL2RvYy9wcm9wcy9QX0RBTUFHRUQgYi9kb2MvcHJvcHMvUF9EQU1BR0VECm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjY3MWUwZTAKLS0tIC9kZXYvbnVsbAorKysgYi9kb2MvcHJvcHMvUF9EQU1BR0VECkBAIC0wLDAgKzEsMjggQEAKK1BfREFNQUdFRAorCitOQU1FOgorICAgICBQX0RBTUFHRUQgIml0ZW1fZGFtYWdlZCIKKworREVGSU5JRVJUIElOOgorICAgICA8Y29tYmF0Lmg+CisKK0JFU0NIUkVJQlVORzoKKyAgICAgUnVlc3R1bmdlbiB1bmQgV2FmZmVuIGtvZW5uZW4gaW0gRWlmZXIgZGVzIEdlZmVjaHRzIGJlc2NoYWVkaWd0IHdlcmRlbi4KKyAgICAgRGVyIEdyYWQgZGVyIEJlc2NoYWVkaWd1bmcgc29sbHRlIGluIGRpZXNlciBQcm9wZXJ0eSBmZXN0Z2VoYWx0ZW4KKyAgICAgd2VyZGVuLgorCisgICAgIEJlaSBXYWZmZW4gZXJnaWJ0IHNpY2ggZGllIHVyc3BydWVuZ2xpY2hlIFdhZmZlbmtsYXNzZSBhdXMgZGVyIFN1bW1lCisgICAgIHZvbiBha3R1ZWxsZXIgV2FmZmVua2xhc3NlIHVuZCBkZW0gV2VydCB2b24gUF9EQU1BR0VEOgorICAgICBhbHRlcyBQX1dDID0gYWt0dWVsbGVzIFBfV0MgKyBQX0RBTUFHRUQuCisKKyAgICAgQW5hbG9nZXMgZ2lsdCBmdWVyIGRpZSBSdWVzdHVuZ3NrbGFzc2UgZWluZXIgYmVzY2hhZWRpZ3RlbiBSdWVzdHVuZzoKKyAgICAgYWx0ZXMgUF9BQyA9IGFrdHVlbGxlcyBQX0FDICsgUF9EQU1BR0VELgorCisgICAgIFBfREFNQUdFRCBiaXR0ZSBuaWVtYWxzIGRpcmVrdCBzZXR6ZW4sIHNvbmRlcm4gaW1tZXIgdWViZXIKKyAgICAgZGllIEZ1bmt0aW9uIERhbWFnZSgpIG1hbmlwdWxpZXJlbiEKKworU0lFSEUgQVVDSDoKKyAgICAgL3N0ZC9hcm1vdXIuYywgL3N0ZC93ZWFwb24uYywgVGFrZUZsYXcoKSwgUXVlcnlGbGF3KCksIERhbWFnZSgpCisKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKzAyLjEwLjIwMDcsIFplc3N0cmEKZGlmZiAtLWdpdCBhL2RvYy9wcm9wcy9QX0RBTUFHRV9NU0cgYi9kb2MvcHJvcHMvUF9EQU1BR0VfTVNHCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjg5MjNiMTkKLS0tIC9kZXYvbnVsbAorKysgYi9kb2MvcHJvcHMvUF9EQU1BR0VfTVNHCkBAIC0wLDAgKzEsNDcgQEAKK1BfREFNQUdFX01TRworCitOQU1FOgorICAgICBQX0RBTUFHRV9NU0cgICAgICAic3RkX3BfZGFtX21zZyIKKworREVGSU5JRVJUIElOOgorICAgICAvc3lzL2xpdmluZy9jb21iYXQuaAorCitCRVNDSFJFSUJVTkc6CisgICAgIEluIGRpZXNlciBQcm9wZXJ0eSBsYXNzZW4gc2ljaCBpbmRpdmlkdWVsbGUgVHJlZmZlci0vU2NoYWRlbnNtZWxkdW5nZW4KKyAgICAgZnVlciBkaWVzZXMgTGViZXdlc2VuIGZlc3RsZWdlbi4gU2llIHdlcmRlbiB2ZXJ3ZW5kZXQsIGZhbGxzIGJlaQorICAgICBlaW5nZWhlbmRlbSBTY2hhZGVuIGRlciBBdWZydWZlciB2b24gRGVmZW5kKCkgU2NoYWRlbnNtZWxkdW5nZW4gd3VlbnNjaHQKKyAgICAgKGQuaC4gU1BfU0hPV19EQU1BR0UgIT0gMCksIGplZG9jaCBrZWluZSBlaWdlbmVuIE1lbGR1bmdlbiB2b3JnaWJ0LgorCisgICAgIEVudGhhZWx0IGRpZXNlIFByb3BlcnR5IGtlaW4gQXJyYXksIHdlcmRlbiBnZ2YuIGRpZSBTdGFuZGFyZG1lbGR1bmdlbgorICAgICBhdXNnZWdlYmVuLgorCisgICAgIERhdGVuc3RydWt0dXIgZGVyIFByb3BlcnR5OgorICAgICAgICh7CisgICAgICAgICh7IGludCBscGhpdDEsIHN0cmluZyBtZXNzX21lLAorICAgICAgICAgICAgICAgICAgICAgICBzdHJpbmcgbWVzc19lbiwKKyAgICAgICAgICAgICAgICAgICAgICAgc3RyaW5nIG1lc3Nfcm9vbSB9KSwKKyAgICAgICAgKHsgbHBoaXQyLCBtZXNzX21lLCBtZXNzX2VuLCBtZXNzX3Jvb20gfSksCisgICAgICAgIC4uLgorICAgICAgICAoeyBscGhpdG4sIG1lc3NfbWUsIG1lc3NfZW4sIG1lc3Nfcm9vbSB9KSwKKyAgICAgICB9KQorICAgICAgIHdvYmVpIGxwaGl0MTxscGhpdDI8Li4uPGxwaGl0biBzZWluIG11c3MsIGQuaC4gZGFzIEFycmF5LQorICAgICAgIEFycmF5IGlzdCBhdWZzdGVpZ2VuZCBzb3J0aWVydC4KKworICAgICBJc3QgZWluIFRyZWZmZXIgeCBMUCBoYXJ0LCB3ZXJkZW4gZGllIE1lbGR1bmdlbiBkZXMgbHBoaXQtCisgICAgIEFycmF5cyBhdXNnZWdlYmVuLCBkZXNzZW4gV2VydCBhbSBuYWVjaHN0ZW4gdW50ZXIgZGVtIFNjaGFkZW4KKyAgICAgbGllZ3QuCisKKyAgICAgSW4gZGVuIE1lbGR1bmdlbiBtZXNzX21lIChhbiBkZW4gR2V0cm9mZmVuZW4pLCBtZXNzX2VuIChhbgorICAgICBkZW4gRmVpbmQpLCBtZXNzX3Jvb20gKGFuIGRpZSByZXN0bGljaGVuIFVtc3RlaGVuZGVuKSBrb2VubmVuCisgICAgIEVyc2F0enN0cmluZ3Mgd2llIGZvbGd0IHZlcndlbmRldCB3ZXJkZW46CisgICAgIEBXRVIxL0BXRVNTRU4xL0BXRU0xL0BXRU4xIC0gbmFtZShjYXN1cykgZGVzIEdldHJvZmZlbmVuIChUTykKKyAgICAgQFdFUjIvQFdFU1NFTjIvQFdFTTIvQFdFTjIgLSBuYW1lKGNhc3VzKSBkZXMgRmVpbmRlcyAoZW5lbXkpCisKK0JFSVNQSUVMOgorICAgICAKKworU0lFSEUgQVVDSDoKKyAgICAgRGVmZW5kKCkKKyAgICAgL3N0ZC9saXZpbmcvY29tYmF0LmMKKworMTUuMDkuMjAxMCwgWmVzc3RyYQpkaWZmIC0tZ2l0IGEvZG9jL3Byb3BzL1BfREFNX0RFU0MgYi9kb2MvcHJvcHMvUF9EQU1fREVTQwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41OTkzOGM3Ci0tLSAvZGV2L251bGwKKysrIGIvZG9jL3Byb3BzL1BfREFNX0RFU0MKQEAgLTAsMCArMSwzNSBAQAorUF9EQU1fREVTQworCitOQU1FOgorICAgICBQX0RBTV9ERVNDICJkYW1fZGVzYyIKKworREVGSU5JRVJUIElOOgorICAgICA8d2VhcG9uL2Rlc2NyaXB0aW9uLmg+CisKK0JFU0NIUkVJQlVORzoKKyAgICAgSW4gZGllc2VyIFByb3BlcnR5IGJlZmluZGV0IHNpY2ggZWluIFN0cmluZyBvZGVyIFN0cmluZy1BcnJheSwgZHVyY2ggCisgICAgIGRlbiBkaWUgTGFuZ2Jlc2NocmVpYnVuZyBlaW5lciBSdWVzdHVuZyBvZGVyIFdhZmZlIGVyZ2Flbnp0IHdpcmQsCisgICAgIHdlbm4gZGllc2UgQmVzY2hhZWRpZ3QgaXN0LgorCitCRU1FUktVTkdFTjoKKyAgICAgV2lyZCBlaW4gU3RyaW5nIGdlc2V0enQsIHNvIHdpcmQgZGllc2VyIGFuZ2V6ZWlndCwgd2VubiBkaWUgV2FmZmUKKyAgICAgbWVociBhbHMgZGllIEhhZWxmdGUgYmVzY2hhZWRpZ3QgaXN0LiBCZWkgZWluZW0gQXJyYXkgd2lyZCBkZXIKKyAgICAgVGV4dCBlbnRzcHJlY2hlbmQgZGVtIEdyYWQgZGVyIEJlc2NoYWVkaWd1bmcgYXVzZ2V3YWVobHQ7IGRhcyBBcnJheQorICAgICBtdXNzIGluIGRlciBSZWloZW5mb2xnZSB6dW5laG1lbmRlciBCZXNjaGFlZGlndW5nIHNvcnRpZXJ0IHNlaW4uCisgICAgIAorICAgICBCZWkgV2FmZmVuIGlzdCBQX0RBTV9ERVNDIGRlZmF1bHRtYWVzc2lnIGF1ZiBERkxUX0RBTV9ERVNDIGdlc2V0enQsCisgICAgIGJlaSBSdWVzdHVuZ2VuIGF1ZiAwLgorCitCRUlTUElFTEU6CisgICAgIFNldFByb3AoUF9EQU1fREVTQywiaXN0IGJlc2NoYWVkaWd0Iik7CisgICAgIFNldFByb3AoUF9EQU1fREVTQywoeworICAgICAgICAgImlzdCBldHdhcyBiZXNjaGFlZGlndCIsCisgICAgICAgICAiaXN0IGJlc2NoYWVkaWd0IiwKKyAgICAgICAgICJpc3QgYmVzY2hhZWRpZ3QiLAorICAgICAgICAgImlzdCBzZWhyIGJlc2NoYWVkaWd0In0pICk7CisKK1NJRUhFIEFVQ0g6CisgICAgIC9zdGQvd2VhcG9uL2Rlc2NyaXB0aW9uLmMKKworLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorTGFzdCBtb2RpZmllZDogTW9uIE9jdCAxNCAxNToyOTowMCAxOTk2IGJ5IFBhcmFjZWxzdXMKZGlmZiAtLWdpdCBhL2RvYy9wcm9wcy9QX0RBTV9UWVBFIGIvZG9jL3Byb3BzL1BfREFNX1RZUEUKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNTZmYjRiYgotLS0gL2Rldi9udWxsCisrKyBiL2RvYy9wcm9wcy9QX0RBTV9UWVBFCkBAIC0wLDAgKzEsMjIgQEAKK1BfREFNX1RZUEUKKworTkFNRToKKyAgICAgUF9EQU1fVFlQRSAiZGFtX3R5cGUiCisKK0RFRklOSUVSVCBJTjoKKyAgICAgPHdlYXBvbi5oPgorCitCRVNDSFJFSUJVTkc6CisgICAgIFdhcyBmdWVyIGVpbmUgQXJ0IHZvbiBTY2hhZGVuIHJpY2h0ZXQgZGllIFdhZmZlIGFuPyBIaWVyIGthbm4gbWFuIGVpbmVuCisgICAgIFN0cmluZyBvZGVyIGVpbiBBcnJheSB2b24gU3RyaW5ncyBhbmdlYmVuLCBqZSBuYWNoZGVtLCB3ZWxjaGUgRWZmZWt0ZQorICAgICBkaWUgV2FmZmUgYXVzbG9lc2VuIGthbm4uIE1hbiBzb2xsdGUgaGllciBudXIgZGllIGluIDxjb21iYXQuaD4KKyAgICAgZGVmaW5pZXJ0ZW4gU2NoYWRlbnN0eXBlbiB2ZXJ3ZW5kZW4uCisKKyAgICAgRnJhZ3QgbWFuIGRpZXNlIFByb3BlcnR5IGFiLCBiZWtvbW10IG1hbiB1ZWJyaWdlbnMgaW1tZXIgZWluIEFycmF5IHZvbgorICAgICBTdHJpbmdzIHp1cnVlY2suCisKK1NJRUhFIEFVQ0g6CisgICAgIC9zdGQvd2VhcG9uLmMKKworLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorTGFzdCBtb2RpZmllZDogU3VuIE1heSAxOSAxNToyMzo0MyAxOTk2IGJ5IFdhcmdvbgpkaWZmIC0tZ2l0IGEvZG9jL3Byb3BzL1BfREVBRFMgYi9kb2MvcHJvcHMvUF9ERUFEUwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5jYTQ0Y2Q3Ci0tLSAvZGV2L251bGwKKysrIGIvZG9jL3Byb3BzL1BfREVBRFMKQEAgLTAsMCArMSw5IEBACitOQU1FOgorICAgIFBfREVBRFMgICAgICAgICAgICAgICAgICAgICAgICJkZWFkcyIgICAgICAgICAgICAgICAgICAgICAgIAorCitERUZJTklFUlQgSU46CisgICAgL3N5cy9saXZpbmcvbGlmZS5oCisKK0JFU0NIUkVJQlVORzoKKyAgICAgQW56YWhsIGRlciBUb2RlIGRlcyBTcGllbGVycyBzZWl0IEVpbmZ1ZWhydW5nIGRpZXNlciBQcm9wZXJ0eSAoaXJnZW5kd2FubgorICAgICBpbSBEZXplbWJlciA5NCkKZGlmZiAtLWdpdCBhL2RvYy9wcm9wcy9QX0RFQUYgYi9kb2MvcHJvcHMvUF9ERUFGCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjg3NDVkZmQKLS0tIC9kZXYvbnVsbAorKysgYi9kb2MvcHJvcHMvUF9ERUFGCkBAIC0wLDAgKzEsMTAgQEAKK05BTUU6CisgICAgUF9ERUFGICAgICAgICAgICAgICAgICAgICAgICAgImRlYWYiICAgICAgICAgICAgICAgICAgICAgICAgCisKK0RFRklOSUVSVCBJTjoKKyAgICAvc3lzL3BsYXllci9jb21tLmgKKworQkVTQ0hSRUlCVU5HOgorICAgICBEZXIgU3BpZWxlciBpc3QgdGF1Yi4gRmFsbHMgaGllciBlaW4gU3RyaW5nIHN0ZWh0LCB3aXJkIGRpZXNlciBiZWkKKyAgICAgInRlaWxlIC4uLiBtaXQiIGFuIGRlbiBNaXR0ZWlsZW5kZW4gYXVzZ2VnZWJlbiwgYW5zb25zdGVuIGtvbW10IG51cgorICAgICAiU291bmRzbyBpc3QgbGVpZGVyIGdlcmFkZSB0YXViLlxuIgpkaWZmIC0tZ2l0IGEvZG9jL3Byb3BzL1BfREVBVEhfTVNHIGIvZG9jL3Byb3BzL1BfREVBVEhfTVNHCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjRlMDQ0YmYKLS0tIC9kZXYvbnVsbAorKysgYi9kb2MvcHJvcHMvUF9ERUFUSF9NU0cKQEAgLTAsMCArMSw0OCBAQAorREVGSU5JRVJUIElOOg0KKyAgICAgICAgL3N5cy9saXZpbmcvY29tYmF0LmgNCisNCitCRVNDSFJFSUJVTkc6DQorICAgICAgICBJbiBkaWVzZXIgUHJvcGVydHkga2FubiBtYW4gZWluIEFycmF5IGFibGVnZW4sIGRhcyBiZWltIFRvZCBlaW5lcw0KKyAgICAgICAgU3BpZWxlcnMgYXVzZ2V3ZXJ0ZXQgdW5kIGRlciBkYXJpbiBlbnRoYWx0ZW5lIFN0cmluZw0KKyAgICAgICAgYW5zY2hsaWVzc2VuZCBhdWYgZGVtIFRvZGVza2FuYWwgZ2VzZW5kZXQgd2lyZC4NCisgICAgICAgIERlciBBcnJheSBtdXNzIGZvbGdlbmRlbiBBdWZiYXUgaGFiZW46DQorDQorICAgICAgICAgIFNldFByb3AoIFBfREVBVEhfTVNHLCAoeyBUZXh0LCBGbGFnIH0pICkNCisgICAgICAgICAgDQorICAgICAgICBUZXh0OiBEZXIgVGV4dCBrYW5uIGJlbGllYmlnIGVpbmdlZ2ViZW4gd2VyZGUuIEFsbGVyZGluZ3MgZGFyZiANCisgICAgICAgICAgICAgIGVyIG5pY2h0IG1pdCBlaW5lbSAnXG4nIGFiZ2VzY2hsb3NzZW4gd2VyZGVuLg0KKyAgICAgICAgDQorICAgICAgICBGbGFnOiBIaWVyIGthbm4gbWFuIGRyZWkgQXJ0ZW4gdm9uIFNlbmRlbWV0aG9kZW4gd2FlaGxlbi4NCisgICAgICAgICAgICAgIDEuIE1TR19TQVkgICAgICBOb3JtYWxlcyBTZW5kZW4NCisgICAgICAgICAgICAgIDIuIE1TR19HRU1PVEUgICBHZW5pdGl2LUVtb3RlDQorICAgICAgICAgICAgICAzLiBNU0dfRU1PVEUgICAgRW1vdGUNCisNCisNCitCRUlTUElFTDoNCisgICAgICAgIERlciBTcGllbGVyIHNvbGwgZGlyZWt0IG5hY2ggc2VpbmVtIFRvZCBlaW5lIE1lbGR1bmcgYXVmIGRlbSANCisgICAgICAgIFRvZGVza2FuYWwgc2VuZGVuLg0KKyAgICAgICAgDQorICAgICAgICBOYWNocmljaHQgYXVmIGRlbSBUb2Rlcy1LYW5hbDoNCisJDQorICAgICAgICBbVG9kOlNwaWVsZXJdIEljaCB3aWxsIGtlaW5lIEJlbGVpZHNiZWt1bmR1bmdlbiENCisgICAgICAgIA0KKyAgICAgICAgdm9pZCBzcGllbGVyX3N0aXJidCgpDQorCXsNCisgICAgICAgICB0aGlzX3BsYXllcigpLT5TZXRQcm9wKCBQX0RFQVRIX01TRywgKHsgIkljaCB3aWxsIGtlaW5lICINCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIkJlbGVpZHNiZWt1bmR1bmdlbiEiLCBNU0dfU0FZfSkgKTsNCisgICAgICAgICB0aGlzX3BsYXllcigpLT5kaWUoKTsNCisgICAgICAgIH0NCisgICAgICAgIA0KKyAgICAgICAgTmFjaHJpY2h0IGF1ZiBkZW0gVG9kZXMtS2FuYWw6DQorCQ0KKyAgICAgICAgW1RvZDpTcGllbGVyIGxpZWJ0IGVzIHp1IHN0ZXJiZW4uXQ0KKyAgICAgICAgDQorICAgICAgICB2b2lkIHNwaWVsZXJfc3RpcmJ0KCkNCisgICAgICAgIHsNCisgICAgICAgICB0aGlzX3BsYXllcigpLT5TZXRQcm9wKCBQX0RFQVRIX01TRywgKHsgImxpZWJ0IGVzIHp1IHN0ZXJiZW4uIiwNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTVNHX0VNT1RFIH0pICk7DQorICAgICAgICAgdGhpc19wbGF5ZXIoKS0+ZGllKCk7DQorICAgICAgICB9DQorDQorU0lFSEUgQVVDSDoNCisgICAgICAgIFBfTVVSREVSX01TRywgUF9GT1JDRV9NVVJERVJfTVNHDQpkaWZmIC0tZ2l0IGEvZG9jL3Byb3BzL1BfREVBVEhfU1BPTlNPUkVEX0JZIGIvZG9jL3Byb3BzL1BfREVBVEhfU1BPTlNPUkVEX0JZCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjUyZDdkNDIKLS0tIC9kZXYvbnVsbAorKysgYi9kb2MvcHJvcHMvUF9ERUFUSF9TUE9OU09SRURfQlkKQEAgLTAsMCArMSwyNSBAQAorTkFNRToKKyAgICBQX0RFQVRIX1NQT05TT1JFRF9CWSAgICAgICAgICAicmVzcG9uc2libGVfd2l6YXJkX2Zvcl9kZWF0aCIKKworREVGSU5JRVJUIElOOgorICAgIC9zeXMvbGl2aW5nL2NvbWJhdC5oCisKK0JFU0NIUkVJQlVORzoKKyAgICBEaWVzZSBQcm9wZXJ0eSBoYXQgZnVlciBkZW4gU3BpZWx2ZXJsYXVmIGtlaW5lcmxlaSBCZWRldXR1bmcuCisgICAgRG9jaCBnaWJ0IGVzIE1hZ2llciwgZGllIGlocmVuIE5hbWVuIGdlcm4gaW4gL2xvZy9LSUxMUyBsZXNlbi4KKyAgICBXaXJkIGVpbiBTcGllbGVyIGR1cmNoIGVpbmVuIE5wYyBnZXRvZXRldCwgaXN0IG5vcm1hbGVyd2Vpc2UgZGVyCisgICAgTWFnaWVyIGZ1ZXIgZGVuIFRvZCB2ZXJhbnR3b3J0bGljaCwgaW4gZGVzc2VuIFZlcnplaWNobmlzIHNpY2ggCisgICAgZGFzIE1vbnN0ZXIgYmVmaW5kZXQuIAorICAgIERvY2ggZ2lidCBlcyBudW4gYXVjaCBkZW4gRmFsbCwgZGFzcyBzaWNoIGRhcyBNb25zdGVyIGluIGVpbmVtIAorICAgIFZlcnplaWNobmlzIC9hbGxlL21vbi8gYmVmaW5kZXQsIG9kZXIgZGVyIFNwaWVsZXIgZHVyY2ggZWluZQorICAgIEFrdGlvbiBpbSBSYXVtIG9kZXIgYW4gZWluZW0gT2JqZWt0IHN0aXJidC4KKworICAgIElzdCBpbiBlaW5lbSBzb2xjaGVuIE1vbnN0ZXIsIFJhdW0gb2RlciBPYmpla3QgZGllc2UgUHJvcGVydHkKKyAgICBnZXNldHp0LCB3aXJkIGRlciBkb3J0IGFuZ2ViZW5lIFN0cmluZyBhbiBkYXMgTG9nLUZpbGUgdWViZXItCisgICAgZ2ViZW4uCisKK0JFSVNQSUVMOgorICAgIFNldFByb3AoUF9ERUFUSF9TUE9OU09SRURfQlksInRpbGx5Iik7CisgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCitMYXN0IG1vZGlmaWVkOiBEb24gRmViIDE1IDE0OjAxOjAwIDIwMDEgdm9uIFRpbGx5CmRpZmYgLS1naXQgYS9kb2MvcHJvcHMvUF9ERUZBVUxUX0dVSUxEIGIvZG9jL3Byb3BzL1BfREVGQVVMVF9HVUlMRApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4yOGNhNGU2Ci0tLSAvZGV2L251bGwKKysrIGIvZG9jL3Byb3BzL1BfREVGQVVMVF9HVUlMRApAQCAtMCwwICsxLDI1IEBACitOQU1FOgorCVBfREVGQVVMVF9HVUlMRAkJCSJkZWZhdWx0X2d1aWxkIgorCitERUZJTklFUlQgSU46CisJL3N5cy9uZXdfc2tpbGxzLmgKKworQkVTQ0hSRUlCVU5HOgorCURpZXNlIFByb3BlcnR5IGVudGhhZWx0IGRlbiBOYW1lbiBkZXIgR2lsZGUsIHdlbGNoZXIgZGVyIFNwaWVsZXIKKwlzdGFuZGFyZG1hZXNzaWcgYW5nZWhvZXJ0LiBEZXIgTmFtZSB3aXJkIGhpZXJiZWkgaW4gRm9ybSBlaW5lcworCWtsZWluZ2VzY2hyaWViZW5lbiBTdHJpbmdzIGFuZ2VnZWJlbi4gSXN0IFBfR1VJTEQgZ2xlaWNoIE51bGwsIHNvCisJd2lyZCBiZWkgZGVyIEFiZnJhZ2Ugc2VsYmlnZXIgUHJvcGVydHkgaGllcmZ1ZXIgZGVyIEVpbnRyYWcgdm9uCisJUF9ERUZBVUxUX0dVSUxEIGVpbmdlc2V0enQuCisKK0JFTUVSS1VOR0VOOgorCU5hY2ggZGVtIGVyc3RlbiBFaW5sb2dnZW4gZGVzIFNwaWVsZXJzIHdpcmQgZWJlbmZhbGxzIGRpZXNlciBFaW50cmFnCisJZ2VudXR6dCwgdW0gZGllIEdpbGRlbnp1Z2Vob2VyaWdrZWl0IGZlc3R6dWxlZ2VuLiBEaWVzIGthbm4gZGF6dQorCWdlbnV0enQgd2VyZGVuLCB1bSBlaW5lIHJhc3NlbmFiaGFlbmdpZ2UgQmVzdGltbXVuZyBkZXIKKwlTdGFuZGFyZGdpbGRlIHp1IGdld2FlaHJsZWlzdGVuCisJIChGZWxpbmVuIC0+IEthdHplbmtyaWVnZXIsIGFuZGVyZSBSYXNzZW4gLT4gQWJlbnRldXJlcikuCisKK1NJRUhFIEFVQ0g6CisJUF9HVUlMRCwgUF9WSVNJQkxFX0dVSUxECisKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KK0xhc3QgbW9kaWZpZWQ6IFdlZCBKYW4gMTQgMTk6MTc6MDYgMTk5OCBieSBQYXRyeW4KZGlmZiAtLWdpdCBhL2RvYy9wcm9wcy9QX0RFRkFVTFRfTk9USUZZX0ZBSUwgYi9kb2MvcHJvcHMvUF9ERUZBVUxUX05PVElGWV9GQUlMCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjYxMWU4ZGYKLS0tIC9kZXYvbnVsbAorKysgYi9kb2MvcHJvcHMvUF9ERUZBVUxUX05PVElGWV9GQUlMCkBAIC0wLDAgKzEsOCBAQAorTkFNRToKKyAgICBQX0RFRkFVTFRfTk9USUZZX0ZBSUwgICAgICAgICAiZGVmYXVsdF9ub3RpZnlfZmFpbCIgICAgICAgICAKKworREVGSU5JRVJUIElOOgorICAgIC9zeXMvcGxheWVyLmgKKworQkVTQ0hSRUlCVU5HOgorICAgICBXZWxjaGUgRmVobGVybWVsZHVuZyBrb21tdCwgd2VubiBrZWluIE9iamVrdCBlaW4gbm90aWZ5X2ZhaWwgbWFjaHQ/CmRpZmYgLS1naXQgYS9kb2MvcHJvcHMvUF9ERUZFTkRFUlMgYi9kb2MvcHJvcHMvUF9ERUZFTkRFUlMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYjQ3MWQ0NQotLS0gL2Rldi9udWxsCisrKyBiL2RvYy9wcm9wcy9QX0RFRkVOREVSUwpAQCAtMCwwICsxLDMwIEBACitOQU1FOgorCVBfREVGRU5ERVJTCQkJImRlZmVuZGVycyIKKworREVGSU5JRVJUIElOOgorCS9zeXMvbmV3X3NraWxscy5oCisKK0JFU0NIUkVJQlVORzoKKwlEaWVzZSBQcm9wZXJ0eSB3aXJkIGluIExlYmV3ZXNlbiBnZXNldHp0LCB3ZWxjaGUgenVtIEJlaXNwaWVsIGR1cmNoCisJYW5kZXJlIExlYmV3ZXNlbiB2ZXJ0ZWlkaWd0IHdlcmRlbi4gRGllIFZlcnRlaWRpZ2VyIG11ZXNzZW4KKwluYXR1ZXJsaWNoIGJla2FubnQgc2VpbiwgZGFtaXQgc2llIHBlciBJbmZvcm1EZWZlbmQoKSB1ZWJlciBBbmdyaWZmZQorCWluZm9ybWllcnQgd2VyZGVuIHVuZCBwZXIgRGVmZW5kT3RoZXIoKSBpbiBkZW4gbGF1ZmVuZGVuIEFuZ3JpZmYKKwllaW5ncmVpZmVuIGtvZW5uZW4gKHp1bSBCZWlzcGllbCBTY2hhZWRlbiBhYndlaHJlbiBvZGVyIHVtd2FuZGVsbikuCisJRXMgbXVlc3NlbiBqZWRvY2ggbmljaHQgdW5iZWRpbmd0IExlYmV3ZXNlbiBvZGVyIGVjaHRlIFZlcnRlaWRpZ2VyCisJc2VpbiwgYXVjaCBiZWxpZWJpZ2UgT2JqZWt0ZSBrb2VubmVuIHVlYmVyIEFuZ3JpZmZlIGluZm9ybWllcnQKKwl3ZXJkZW4gdW5kIGluIGRpZXNlIGVpbmdyZWlmZW4uIEFsbGVyZGluZ3MgYmVzdGVodCBkaWUKKwlFaW5zY2hyYWVua3VuZywgZGFzcyBkaWVzZSBPYmpla3RlIGluIGRlciBnbGVpY2hlbiBVbWdlYnVuZyBzZWluCisJbXVlc3Nlbiwgd2llIGRhcyB6dSB2ZXJ0ZWlkaWdlbmRlIExlYmV3ZXNlbiBvZGVyIGltIHp1IHZlcnRlaWRpZ2VuZGVuCisJTGViZXdlc2VuIHNlbGJzdC4KKwlEaWUgT2JqZWt0ZSwgd2VsY2hlIGRpZXMgYmV0cmlmZnQsIHNpbmQgaW4gRm9ybSBlaW5lcyBBcnJheXMgaW4KKwlkZXIgUHJvcGVydHkgUF9ERUZFTkRFUlMgYWJnZWxlZ3QuCisJR2VzZXR6dCB1bmQgZ2Vsb2VzY2h0IHdlcmRlbiBzb2xsdGVuIGRpZSBFaW50cmFlZ2UgZGllc2VzIEFycmF5cworCWplZG9jaCBudXIgbWl0dGVscyBkZXIgZGFmdWVyIGJlcmVpdGdlc3RlbGx0ZW4gRnVua3Rpb25lbgorCUFkZERlZmVuZGVyKCkgdW5kIFJlbW92ZURlZmVuZGVyKCkuCisKK1NJRUhFIEFVQ0g6CisJQWRkRGVmZW5kZXIoKSwgUmVtb3ZlRGVmZW5kZXIoKSwgSW5mb3JtRGVmZW5kKCksIERlZmVuZE90aGVyKCksCisJL3N0ZC9saXZpbmcvY29tYmF0LmMKKworLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorTGFzdCBtb2RpZmllZDogMjEuMDkuMjAwNywgWmVzc3RyYQpkaWZmIC0tZ2l0IGEvZG9jL3Byb3BzL1BfREVGRU5EX0ZVTkMgYi9kb2MvcHJvcHMvUF9ERUZFTkRfRlVOQwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4wMmYxZThjCi0tLSAvZGV2L251bGwKKysrIGIvZG9jL3Byb3BzL1BfREVGRU5EX0ZVTkMKQEAgLTAsMCArMSwzMSBAQAorUF9ERUZFTkRfRlVOQworCitOQU1FOgorICAgICBQX0RFRkVORF9GVU5DICJkZWZlbmRfZnVuYyIKKworREVGSU5JRVJUIElOOgorICAgICA8YXJtb3VyLmg+CisKK0JFU0NIUkVJQlVORzoKKyAgICAgRmFsbHMgZWluIE9iamVrdCBlaW5lIERlZmVuZEZ1bmMoKSBmdWVyIGRpZSBSdWVzdHVuZyBkZWZpbmllcnQsIHNvIG11c3MKKyAgICAgZGllc2VzIE9iamVrdCBpbiBkaWVzZXIgUHJvcGVydHkgZWluZ2V0cmFnZW4gc2Vpbi4KKworICAgICBEaWUgQXVzd2VydHVuZyBkaWVzZXIgUHJvcGVydHkgZXJmb2xndCBpbiBRdWVyeURlZmVuZCgpLgorCitCRU1FUktVTkdFTjoKKyAgICAgMS4gRXMgZnVua3Rpb25pZXJ0IF9uaWNodF8gaGllciBlaW5lIENsb3N1cmUgcmVpbnp1c2NocmVpYmVuLgorICAgICAyLiBEaWVzZSBQcm9wIGxhZXNzdCBzaWNoIF9uaWNodF8gc2lubnZvbGwgbWl0IFNldCgpIHNldHplbiwgYWxzbyB6LkIuCisgICAgICAgIGtlaW5lIFF1ZXJ5LU1ldGhvZGVuIGhpZXIgcmVpbnp1c2NocmVpYmVuLgorICAgICAzLiBEZWZpbmllcmVuIHZvbiBfc2V0X2RlZmVuZF9mdW5jKCkgb2RlciBTZXQtTWV0aG9kZW4gdmlhIFNldCgpCisgICAgICAgIGZ1bmt0aW9uaWVydCBhdWNoIG5pY2h0LCB6dW1pbmRlc3QgbmljaHQgbWl0IGRlbSBnZXd1ZW5zY2h0ZW4KKyAgICAgICAgRXJnZWJuaXMuIDstKQorICAgICA0LiBCZWkgVmVyd2VuZHVuZyBiaXR0ZSBCYWxhbmNlLVJpY2h0bGluaWVuIGJlYWNodGVuIQorCitCRUlTUElFTEU6CisgICAgIFNpZWhlIGRhcyBCZWlzcGllbCB6dSBEZWZlbmRGdW5jKCkKKworU0lFSEUgQVVDSDoKKyAgICAgL3N0ZC9hcm1vdXIuYywgRGVmZW5kRnVuYygpLCBiYWxhbmNlLCBncmVuendlcnRlCisKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KK0xhc3QgbW9kaWZpZWQ6IFNhdCBNYXkgMTggMTU6MjY6MTcgMTk5NiBieSBXYXJnb24KZGlmZiAtLWdpdCBhL2RvYy9wcm9wcy9QX0RFRlVFTF9BTU9VTlRfRFJJTksgYi9kb2MvcHJvcHMvUF9ERUZVRUxfQU1PVU5UX0RSSU5LCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjU1OGUyNjEKLS0tIC9kZXYvbnVsbAorKysgYi9kb2MvcHJvcHMvUF9ERUZVRUxfQU1PVU5UX0RSSU5LCkBAIC0wLDAgKzEsMjAgQEAKK05BTUU6CisgICAgUF9ERUZVRUxfQU1PVU5UX0RSSU5LICAgICAgICAgICAgICAgICAgICAgICAgICAiZGVmdWVsX2Ftb3VudF9kcmluayIKKworREVGSU5JRVJUIElOOgorICAgIC9zeXMvZGVmdWVsLmgKKworQkVTQ0hSRUlCVU5HOgorICAgIEVudGhhZWx0IGRpZSByYXNzZW5hYmhhZW5naWdlIEVudHRhbmt2b3JnYWJlIGZ1ZXIgVHJpbmtlbi4KKyAgICAKK1NJRUhFIEFVQ0g6CisgICAgIEFlaG5saWNoOiAgUF9ERUZVRUxfVElNRV9GT09ELCBQX0RFRlVFTF9USU1FX0RSSU5LCisgICAgICAgICAgICAgICAgUF9ERUZVRUxfTElNSVRfRk9PRCwgUF9ERUZVRUxfTElNSVRfRFJJTkssCisgICAgICAgICAgICAgICAgUF9ERUZVRUxfQU1PVU5UX0ZPT0QKKyAgICAgTWV0aG9kZW46ICBkZWZ1ZWxfZHJpbmssIGRlZnVlbF9mb29kCisgICAgIFRhbmtlbjogICAgY29uc3VtZSwgZHJpbmtfYWxjb2hvbCwgZHJpbmtfc29mdCwgZWF0X2Zvb2QKKyAgICAgV2VpdGVyZTogICBQX0RSSU5LLCBQX0ZPT0QsIFBfQUxDT0hPTCwgUF9TUCwgUF9IUCwKKyAgICAgICAgICAgICAgICBQX0RFRlVFTF9USU1FX0ZPT0QsIFBfREVGVUVMX1RJTUVfRFJJTksKKyAgICAgS29uemVwdGU6ICBoZWlsdW5nLCBlbnR0YW5rZW4sIGZvb2QKKworOS4gQXVndXN0IDIwMTUgR2xvaW5zb24KZGlmZiAtLWdpdCBhL2RvYy9wcm9wcy9QX0RFRlVFTF9BTU9VTlRfRk9PRCBiL2RvYy9wcm9wcy9QX0RFRlVFTF9BTU9VTlRfRk9PRApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5hODU1NGJlCi0tLSAvZGV2L251bGwKKysrIGIvZG9jL3Byb3BzL1BfREVGVUVMX0FNT1VOVF9GT09ECkBAIC0wLDAgKzEsMjAgQEAKK05BTUU6CisgICAgUF9ERUZVRUxfQU1PVU5UX0ZPT0QgICAgICAgICAgICAgICAgICAgICAgICAgICJkZWZ1ZWxfYW1vdW50X2Zvb2QiCisKK0RFRklOSUVSVCBJTjoKKyAgICAvc3lzL2RlZnVlbC5oCisKK0JFU0NIUkVJQlVORzoKKyAgICBFbnRoYWVsdCBkaWUgcmFzc2VuYWJoYWVuZ2lnZSBFbnR0YW5rdm9yZ2FiZSBmdWVyIEVzc2VuLgorICAgIAorU0lFSEUgQVVDSDoKKyAgICAgQWVobmxpY2g6ICBQX0RFRlVFTF9USU1FX0ZPT0QsIFBfREVGVUVMX1RJTUVfRFJJTksKKyAgICAgICAgICAgICAgICBQX0RFRlVFTF9MSU1JVF9GT09ELCBQX0RFRlVFTF9MSU1JVF9EUklOSywKKyAgICAgICAgICAgICAgICBQX0RFRlVFTF9BTU9VTlRfRFJJTksKKyAgICAgTWV0aG9kZW46ICBkZWZ1ZWxfZHJpbmssIGRlZnVlbF9mb29kCisgICAgIFRhbmtlbjogICAgY29uc3VtZSwgZHJpbmtfYWxjb2hvbCwgZHJpbmtfc29mdCwgZWF0X2Zvb2QKKyAgICAgV2VpdGVyZTogICBQX0RSSU5LLCBQX0ZPT0QsIFBfQUxDT0hPTCwgUF9TUCwgUF9IUCwKKyAgICAgICAgICAgICAgICBQX0RFRlVFTF9USU1FX0ZPT0QsIFBfREVGVUVMX1RJTUVfRFJJTksKKyAgICAgS29uemVwdGU6ICBoZWlsdW5nLCBlbnR0YW5rZW4sIGZvb2QKKworOS4gQXVndXN0IDIwMTUgR2xvaW5zb24KZGlmZiAtLWdpdCBhL2RvYy9wcm9wcy9QX0RFRlVFTF9MSU1JVF9EUklOSyBiL2RvYy9wcm9wcy9QX0RFRlVFTF9MSU1JVF9EUklOSwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4wYTU5ZGY0Ci0tLSAvZGV2L251bGwKKysrIGIvZG9jL3Byb3BzL1BfREVGVUVMX0xJTUlUX0RSSU5LCkBAIC0wLDAgKzEsMjEgQEAKK05BTUU6CisgICAgUF9ERUZVRUxfTElNSVRfRFJJTksgICAgICAgICAgICAgICAgICAgICAgICAgICJkZWZ1ZWxfbGltaXRfZHJpbmsiCisKK0RFRklOSUVSVCBJTjoKKyAgICAvc3lzL2RlZnVlbC5oCisKK0JFU0NIUkVJQlVORzoKKyAgICBFbnRoYWVsdCBkaWUgcmFzc2VuYWJoYWVuZ2lnZSBtaW5pbWFsZSBNZW5nZSBhbiBUcmlua2VuLCBhYiBkZW0gZWluCisgICAgRW50dGFua3ZvcmdhbmcgZnVlciBkZW4gU3BpZWxlciBtb2VnbGljaCBpc3QuCisgICAgCitTSUVIRSBBVUNIOgorICAgICBBZWhubGljaDogIFBfREVGVUVMX1RJTUVfRk9PRCwgUF9ERUZVRUxfVElNRV9EUklOSworICAgICAgICAgICAgICAgIFBfREVGVUVMX0xJTUlUX0ZPT0QsCisgICAgICAgICAgICAgICAgUF9ERUZVRUxfQU1PVU5UX0ZPT0QsIFBfREVGVUVMX0FNT1VOVF9EUklOSworICAgICBNZXRob2RlbjogIGRlZnVlbF9kcmluaywgZGVmdWVsX2Zvb2QKKyAgICAgVGFua2VuOiAgICBjb25zdW1lLCBkcmlua19hbGNvaG9sLCBkcmlua19zb2Z0LCBlYXRfZm9vZAorICAgICBXZWl0ZXJlOiAgIFBfRFJJTkssIFBfRk9PRCwgUF9BTENPSE9MLCBQX1NQLCBQX0hQLAorICAgICAgICAgICAgICAgIFBfREVGVUVMX1RJTUVfRk9PRCwgUF9ERUZVRUxfVElNRV9EUklOSworICAgICBLb256ZXB0ZTogIGhlaWx1bmcsIGVudHRhbmtlbiwgZm9vZAorCis5LiBBdWd1c3QgMjAxNSBHbG9pbnNvbgpkaWZmIC0tZ2l0IGEvZG9jL3Byb3BzL1BfREVGVUVMX0xJTUlUX0ZPT0QgYi9kb2MvcHJvcHMvUF9ERUZVRUxfTElNSVRfRk9PRApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4yNmUzM2ZkCi0tLSAvZGV2L251bGwKKysrIGIvZG9jL3Byb3BzL1BfREVGVUVMX0xJTUlUX0ZPT0QKQEAgLTAsMCArMSwyMSBAQAorTkFNRToKKyAgICBQX0RFRlVFTF9MSU1JVF9GT09EICAgICAgICAgICAgICAgICAgICAgICAgICAiZGVmdWVsX2xpbWl0X2Zvb2QiCisKK0RFRklOSUVSVCBJTjoKKyAgICAvc3lzL2RlZnVlbC5oCisKK0JFU0NIUkVJQlVORzoKKyAgICBFbnRoYWVsdCBkaWUgcmFzc2VuYWJoYWVuZ2lnZSBtaW5pbWFsZSBNZW5nZSBhbiBFc3NlbiwgYWIgZGVtIGVpbgorICAgIEVudHRhbmt2b3JnYW5nIGZ1ZXIgZGVuIFNwaWVsZXIgbW9lZ2xpY2ggaXN0LgorICAgIAorU0lFSEUgQVVDSDoKKyAgICAgQWVobmxpY2g6ICBQX0RFRlVFTF9USU1FX0ZPT0QsIFBfREVGVUVMX1RJTUVfRFJJTksKKyAgICAgICAgICAgICAgICBQX0RFRlVFTF9MSU1JVF9EUklOSywKKyAgICAgICAgICAgICAgICBQX0RFRlVFTF9BTU9VTlRfRk9PRCwgUF9ERUZVRUxfQU1PVU5UX0RSSU5LCisgICAgIE1ldGhvZGVuOiAgZGVmdWVsX2RyaW5rLCBkZWZ1ZWxfZm9vZAorICAgICBUYW5rZW46ICAgIGNvbnN1bWUsIGRyaW5rX2FsY29ob2wsIGRyaW5rX3NvZnQsIGVhdF9mb29kCisgICAgIFdlaXRlcmU6ICAgUF9EUklOSywgUF9GT09ELCBQX0FMQ09IT0wsIFBfU1AsIFBfSFAsCisgICAgICAgICAgICAgICAgUF9ERUZVRUxfVElNRV9GT09ELCBQX0RFRlVFTF9USU1FX0RSSU5LCisgICAgIEtvbnplcHRlOiAgaGVpbHVuZywgZW50dGFua2VuLCBmb29kCisKKzkuIEF1Z3VzdCAyMDE1IEdsb2luc29uCmRpZmYgLS1naXQgYS9kb2MvcHJvcHMvUF9ERUZVRUxfVElNRV9EUklOSyBiL2RvYy9wcm9wcy9QX0RFRlVFTF9USU1FX0RSSU5LCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmRlNWVhZjAKLS0tIC9kZXYvbnVsbAorKysgYi9kb2MvcHJvcHMvUF9ERUZVRUxfVElNRV9EUklOSwpAQCAtMCwwICsxLDIxIEBACitOQU1FOgorICAgIFBfREVGVUVMX1RJTUVfRFJJTksgICAgICAgICAgICAgICAgICAgICAgICAgICJkZWZ1ZWxfdGltZV9kcmluayIKKworREVGSU5JRVJUIElOOgorICAgIC9zeXMvZGVmdWVsLmgKKworQkVTQ0hSRUlCVU5HOgorICAgIEVudGhhZWx0IGRpZSByYXNzZW5hYmhhZW5naWdlIG1pbmltYWxlIFplaXQgendpc2NoZW4gZWluemVsbmVuCisgICAgRW50dGFua3ZvcmdhZW5nZW4gZnVlciBUcmlua2VuIGVpbmVzIFNwaWVsZXJzLgorICAgIAorU0lFSEUgQVVDSDoKKyAgICAgQWVobmxpY2g6ICBQX0RFRlVFTF9USU1FX0ZPT0QsCisgICAgICAgICAgICAgICAgUF9ERUZVRUxfTElNSVRfRk9PRCwgUF9ERUZVRUxfTElNSVRfRFJJTkssCisgICAgICAgICAgICAgICAgUF9ERUZVRUxfQU1PVU5UX0ZPT0QsIFBfREVGVUVMX0FNT1VOVF9EUklOSworICAgICBNZXRob2RlbjogIGRlZnVlbF9kcmluaywgZGVmdWVsX2Zvb2QKKyAgICAgVGFua2VuOiAgICBjb25zdW1lLCBkcmlua19hbGNvaG9sLCBkcmlua19zb2Z0LCBlYXRfZm9vZAorICAgICBXZWl0ZXJlOiAgIFBfRFJJTkssIFBfRk9PRCwgUF9BTENPSE9MLCBQX1NQLCBQX0hQLAorICAgICAgICAgICAgICAgIFBfREVGVUVMX1RJTUVfRk9PRCwgUF9ERUZVRUxfVElNRV9EUklOSworICAgICBLb256ZXB0ZTogIGhlaWx1bmcsIGVudHRhbmtlbiwgZm9vZAorCis5LiBBdWd1c3QgMjAxNSBHbG9pbnNvbgpkaWZmIC0tZ2l0IGEvZG9jL3Byb3BzL1BfREVGVUVMX1RJTUVfRk9PRCBiL2RvYy9wcm9wcy9QX0RFRlVFTF9USU1FX0ZPT0QKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZDdiZGQ3OQotLS0gL2Rldi9udWxsCisrKyBiL2RvYy9wcm9wcy9QX0RFRlVFTF9USU1FX0ZPT0QKQEAgLTAsMCArMSwyMSBAQAorTkFNRToKKyAgICBQX0RFRlVFTF9USU1FX0ZPT0QgICAgICAgICAgICAgICAgICAgICAgICAgICJkZWZ1ZWxfdGltZV9mb29kIgorCitERUZJTklFUlQgSU46CisgICAgL3N5cy9kZWZ1ZWwuaAorCitCRVNDSFJFSUJVTkc6CisgICAgRW50aGFlbHQgZGllIHJhc3NlbmFiaGFlbmdpZ2UgbWluaW1hbGUgWmVpdCB6d2lzY2hlbiBlaW56ZWxuZW4KKyAgICBFbnR0YW5rdm9yZ2FlbmdlbiBmdWVyIEVzc2VuIGVpbmVzIFNwaWVsZXJzLgorICAgIAorU0lFSEUgQVVDSDoKKyAgICAgQWVobmxpY2g6ICBQX0RFRlVFTF9USU1FX0RSSU5LLAorICAgICAgICAgICAgICAgIFBfREVGVUVMX0xJTUlUX0ZPT0QsIFBfREVGVUVMX0xJTUlUX0RSSU5LLAorICAgICAgICAgICAgICAgIFBfREVGVUVMX0FNT1VOVF9GT09ELCBQX0RFRlVFTF9BTU9VTlRfRFJJTksKKyAgICAgTWV0aG9kZW46ICBkZWZ1ZWxfZHJpbmssIGRlZnVlbF9mb29kCisgICAgIFRhbmtlbjogICAgY29uc3VtZSwgZHJpbmtfYWxjb2hvbCwgZHJpbmtfc29mdCwgZWF0X2Zvb2QKKyAgICAgV2VpdGVyZTogICBQX0RSSU5LLCBQX0ZPT0QsIFBfQUxDT0hPTCwgUF9TUCwgUF9IUCwKKyAgICAgICAgICAgICAgICBQX0RFRlVFTF9USU1FX0ZPT0QsIFBfREVGVUVMX1RJTUVfRFJJTksKKyAgICAgS29uemVwdGU6ICBoZWlsdW5nLCBlbnR0YW5rZW4sIGZvb2QKKworOS4gQXVndXN0IDIwMTUgR2xvaW5zb24KZGlmZiAtLWdpdCBhL2RvYy9wcm9wcy9QX0RFUEFSVE1TRyBiL2RvYy9wcm9wcy9QX0RFUEFSVE1TRwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41MTVjOGJkCi0tLSAvZGV2L251bGwKKysrIGIvZG9jL3Byb3BzL1BfREVQQVJUTVNHCkBAIC0wLDAgKzEsOCBAQAorTkFNRToKKyAgICBQX0RFUEFSVE1TRyAgICAgICAgICAgICAgICAgICAiZGVwYXJ0bXNnIiAgICAgICAgICAgICAgICAgICAKKworREVGSU5JRVJUIElOOgorICAgIC9zeXMvdHJhbnNwb3J0LmgKKworQkVTQ0hSRUlCVU5HOgorICAgICBNZWxkdW5nLCBtaXQgZGVyIGVpbiBUcmFuc3BvcnRlciBhYmxlZ3QuCmRpZmYgLS1naXQgYS9kb2MvcHJvcHMvUF9ERVNDUklQVElPTiBiL2RvYy9wcm9wcy9QX0RFU0NSSVBUSU9OCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmQyNzVjYzcKLS0tIC9kZXYvbnVsbAorKysgYi9kb2MvcHJvcHMvUF9ERVNDUklQVElPTgpAQCAtMCwwICsxLDggQEAKK05BTUU6CisgICAgUF9ERVNDUklQVElPTiAgICAgICAgICAgICAgICAgImRlc2NyaXB0aW9uIiAgICAgICAgICAgICAgICAgCisKK0RFRklOSUVSVCBJTjoKKyAgICAvc3lzL3Byb3BlcnRpZXMuaAorCitCRVNDSFJFSUJVTkc6CisgICAgIEJlc2NocmVpYnVuZyBkZXMgU3BpZWxlcnMKZGlmZiAtLWdpdCBhL2RvYy9wcm9wcy9QX0RFU1RST1lfQkFEIGIvZG9jL3Byb3BzL1BfREVTVFJPWV9CQUQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZDU2M2FmOQotLS0gL2Rldi9udWxsCisrKyBiL2RvYy9wcm9wcy9QX0RFU1RST1lfQkFECkBAIC0wLDAgKzEsMjkgQEAKK05BTUU6CisgICAgIFBfREVTVFJPWV9CQUQgICAgICAgICAgICAgICAgICJzdGRfZm9vZF9kZXN0cm95X2JhZCIKKworREVGSU5JRVJUIElOOgorICAgICA8c3lzL2Zvb2QuaD4KKworQkVTQ0hSRUlCVU5HOgorICAgICBTcGVpY2hlcnQgZGVuIFdlcnQgZnVlciBkYXMgVmVyaGFsdGVuLCB3ZW5uIGVpbmUgU3BlaXNlIHZlcmRpcmJ0LgorICAgICBEaWVzZXMgVmVyaGFsdGVuIHdpcmQgaW4gbWFrZV9iYWQoKSB1bWdlc2V0enQuCisgICAgIAorICAgICBERVNUUk9ZX0JBRCAgIDogRGllIFNwZWlzZSB3aXJkIGJlaW0gVmVyZGVyYmVuIHplcnN0b2VydAorICAgICAgICAgICAgICAgICAgICAgYnp3LiBkZXIgQmVoYWVsdGVyIHdpcmQgZ2VsZWVydAorICAgICBERVNUUk9ZX05FVkVSIDogRGllIFNwZWlzZSB3aXJkIGJlaW0gVmVyZGVyYmVuIG5pY2h0IHplcnN0b2VydAorICAgICBwb3MuIEludGVnZXIgIDogQW56YWhsIGRlciBTZWt1bmRlbiwgZGllIHp3aXNjaGVuIFZlcmRlcmJlbgorICAgICAgICAgICAgICAgICAgICAgdW5kIFplcnN0b2VyZW4gZGVyIFNwZWlzZSBsaWVnZW4gc29sbGVuCisgICAgIAorQkVNRVJLVU5HRU46CisgICAgIElzdCBlaW4gcG9zaXRpdmVyIEludGVnZXItV2VydCBpbiBkaWVzZXIgUHJvcGVydHkgZ2VzcGVpY2hlcnQsIHdpcmQgbmFjaAorICAgICBBdXNmdWVocmVuIGRlciBNZXRob2RlIG1ha2VfYmFkKCkgbmFjaCBBYmxhdWYgZGVyIGFuZ2VnZWJlbmVuIFNla3VuZGVuCisgICAgIGVpbiB3ZWl0ZXJlciBSZXNldCBhdXNnZWxvZXN0LCBkZXIgbWFrZV9kZXN0cm95KCkgYXVmcnVmdC4KKyAgICAgCitERUZBVUxUOgorICAgICBJbml0aWFsIGlzdCBkaWVzZSBQcm9wZXJ0eSBhdWYgREVTVFJPWV9CQUQgZ2VzZXR6dC4KKworU0lFSEUgQVVDSDoKKyAgICAgL3N0ZC9mb29kLmMsIHdpei9mb29kCisKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorTGFzdCBtb2RpZmllZDogVGh1IE9jdCAyOCAxMjoxNTowMCAyMDEwIGJ5IENhbGRyYQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2RvYy9wcm9wcy9QX0RFU1RSVUNUX01TRyBiL2RvYy9wcm9wcy9QX0RFU1RSVUNUX01TRwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi40YjdlN2U5Ci0tLSAvZGV2L251bGwKKysrIGIvZG9jL3Byb3BzL1BfREVTVFJVQ1RfTVNHCkBAIC0wLDAgKzEsOCBAQAorTkFNRToKKyAgICBQX0RFU1RSVUNUX01TRyAgICAgICAgICAgICAgICAiZGVzdHJ1Y3RfbXNnIiAgICAgICAgICAgICAgICAKKworREVGSU5JRVJUIElOOgorICAgIC9zeXMvcGxheWVyL2Jhc2UuaAorCitCRVNDSFJFSUJVTkc6CisgICAgIE1lbGR1bmcsIGRpZSBiZWltIERlc3RydWN0ZW4gT2JqIGF1c2dlZ2VnZW4gd2lyZCAobnVyIE1hZ2llcikKZGlmZiAtLWdpdCBhL2RvYy9wcm9wcy9QX0RFVEFJTFMgYi9kb2MvcHJvcHMvUF9ERVRBSUxTCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmUyMzUxM2EKLS0tIC9kZXYvbnVsbAorKysgYi9kb2MvcHJvcHMvUF9ERVRBSUxTCkBAIC0wLDAgKzEsMjUgQEAKK05BTUU6CisgICAgUF9ERVRBSUxTICAgICAgICAgICAgImRldGFpbHMiCisKK0RFRklOSUVSVCBJTjoKKyAgICAvc3lzL3RoaW5nL2Rlc2NyaXB0aW9uLmgKKworQkVTQ0hSRUlCVU5HOgorICAgIERpZXNlIFByb3BlcnR5IGVudGhhZWx0IGVpbiBNYXBwaW5nLCBpbiBkZXIgRGV0YWlscyBpbSBPYmpla3QKKyAgICBkZWZpbmllcnQgd2VyZGVuIHVuZCBCZXNjaHJlaWJ1bmdlbiwgZGllIGF1c2dlZ2ViZW4gd2VyZGVuLCB3ZW5uIG1hbgorICAgIHNpY2ggZGllc2UgRGV0YWlscyBhbnNjaGF1dC4KKworQkVNRVJLVU5HRU46CisgICAgTWFuIGthbm4gZGllc2UgUHJvcGVydHkgbmljaHQgcGVyIFNldFByb3AoKSB2ZXJhZW5kZXJuLCBzb25kZXJuIG11c3MgZGllCisgICAgZW50c3ByZWNoZW5kZW4gRnVua3Rpb25lbiBudXR6ZW4uCisgICAgQWRkU3BlY2lhbERldGFpbCgpIHVuZCBSZW1vdmVTcGVjaWFsRGV0YWlsKCkgc29sbHRlbiBuaWNodCBtZWhyCisgICAgdmVyd2VuZGV0IHdlcmRlbi4KKworU0lFSEUgQVVDSDoKKyAgICBTZXR6ZW46ICAgIEFkZERldGFpbCgpCisgICAgTG9lc2NoZW46ICBSZW1vdmVEZXRhaWwoKQorICAgIEFlaG5saWNoOiAgUF9TUEVDSUFMX0RFVEFJTFMKKyAgICBWZXJhbHRldDogIEFkZFNwZWNpYWxEZXRhaWwoKSwgUmVtb3ZlU3BlY2lhbERldGFpbCgpCisgICAgU29uc3RpZ2VzOiBHZXREZXRhaWwoKSwgYnJlYWtfc3RyaW5nKCkKKworMjcuIEphbiAyMDEzIEdsb2luc29uCmRpZmYgLS1naXQgYS9kb2MvcHJvcHMvUF9ESUVfTVNHIGIvZG9jL3Byb3BzL1BfRElFX01TRwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi45OWYxZDdjCi0tLSAvZGV2L251bGwKKysrIGIvZG9jL3Byb3BzL1BfRElFX01TRwpAQCAtMCwwICsxLDQwIEBACitQX0RJRV9NU0cKKworTkFNRToKKyAgICAgUF9ESUVfTVNHCQkJImRpZV9tc2ciCisKK0RFRklOSUVSVCBJTjoKKyAgICAgL3N5cy9wcm9wZXJ0aWVzLmgKKworQkVTQ0hSRUlCVU5HOgorICAgICBJbiBkaWVzZXIgUHJvcGVydHkgdWViZXJnaWJ0IG1hbiBlaW5lbiBTdHJpbmcsIGRlciBhdXNnZWdlYmVuIHdpcmQsIHdlbm4KKyAgICAgZGFzIExlYmV3ZXNlbiBzdGlyYnQuIElzdCBkaWUgUHJvcGVydHkgbmljaHQgZ2VzZXR6dCwgc28gd2lyZCBhbHMgU3RyaW5nCisgICAgIGJlbnV0enQ6CisJIiBmYWVsbHQgdG90IHp1IEJvZGVuLlxuIi4KKworICAgICBEZXIgTmFtZSBkZXMgTGViZXdlc2VucyB3aXJkIGRlbSBTdHJpbmcgdm9yIGRlciBBdXNnYWJlIHZvcmFuZ2VzdGVsbHQuCisgICAgIERlciBTYXR6dW1icnVjaCBhbSBaZWlsZW5lbmRlIHVuZCBkYXMgTGVlcnplaWNoZW4gbmFjaCBkZW0gTmFtZW4gZGVzCisgICAgIExlYmV3ZXNlbnMgbXVzcyBtYW4gc2VsYnN0IGFuZ2VnZWJlbi4gRXMgc29sbHRlIGFsbGVyZGluZ3MgYmVhY2h0ZXQKKyAgICAgd2VyZGVuLCBkYXNzIGVpbiBMZWJld2VzZW4sIGRhcyBkdXJjaCBHaWZ0IGdldG9ldGV0IHdpcmQsIGVpbmUgc3BlemllbGxlCisgICAgIG5pY2h0IHp1IGJlZWluZmx1c3NlbmRlIE1lbGR1bmcgZXJoYWVsdC4gRXMgd2lyZCBkYW5uIGFscyBTdHJpbmcKKyAgICAgYmVudXR6dDoKKwkiIHdpcmQgdm9uIEdpZnQgaGlud2VnZ2VyYWZmdCB1bmQga2lwcHQgdW0uXG4iLgorCitCRUlTUElFTEU6CisgICAgIEJlaSBlaW5lbSBtaXRrYWVtcGZlbmRlbiBTY2hhdHRlbiB3YWVyZSBlcyBlaGVyIHVubG9naXNjaCwgd2VubiBuYWNoCisgICAgIGRlc3NlbiAnVG9kJyBlaW5lIExlaWNoZSB6dXJ1ZWNrYmxpZWJlLiBFaW5lIGxvZ2lzY2hlIEtvbnNlcXVlbnogd2FlcmUKKyAgICAgZm9sZ2VuZGUgTWVsZHVuZzoKKwlTZXRQcm9wKFBfRElFX01TRywiIGxvZXN0IHNpY2ggYXVmLlxuIik7CisJU2V0UHJvcChQX05PQ09SUFNFLDEpOworCisgICAgIERhbWl0IGRhbm4gYXVjaCB3aXJrbGljaCBrZWluZSBMZWljaGUgenVydWVja2JsZWlidCwgd2lyZCB6dXNhZXR6bGljaAorICAgICBkaWUgUHJvcGVydHkgUF9OT0NPUlBTRSBnZXNldHp0LgorCitTSUVIRSBBVUNIOgorICAgICBUb2Q6CQlkaWUoTCkKKyAgICAgVG9kZXNtZWxkdW5nZW46CVBfS0lMTF9OQU1FLCBQX0tJTExfTVNHLCBQX01VUkRFUl9NU0cKKwkJCVBfWkFQX01TRywgUF9FTkVNWV9ERUFUSF9TRVFVRU5DRQorICAgICBTb25zdGlnZXM6CQlQX0NPUlBTRSwgUF9OT0NPUlBTRSwgL3N0ZC9jb3Jwc2UuYworCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCitMYXN0IG1vZGlmaWVkOiBXZWQgSmFuIDE0IDE5OjE3OjA2IDE5OTggYnkgUGF0cnluCmRpZmYgLS1naXQgYS9kb2MvcHJvcHMvUF9ESVNBQkxFX0FUVEFDSyBiL2RvYy9wcm9wcy9QX0RJU0FCTEVfQVRUQUNLCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjI1ZTA1MWQKLS0tIC9kZXYvbnVsbAorKysgYi9kb2MvcHJvcHMvUF9ESVNBQkxFX0FUVEFDSwpAQCAtMCwwICsxLDQ2IEBACitOQU1FOgorICAgIFBfRElTQUJMRV9BVFRBQ0sgICAgICAgICAgICAgICJkaXNhYmxlX2F0dGFjayIgICAgICAgICAgICAgIAorCitERUZJTklFUlQgSU46CisgICAgL3N5cy9wcm9wZXJ0aWVzLmgKKworQkVTQ0hSRUlCVU5HOgorICAgIERhcyBMZWJld2VzZW4ga2FubiBuaWNodCBhbmdyZWlmZW4uIEJlaW0gU2V0emVuIGRlciBQcm9wZXJ0eSBpc3QgZXMKKyAgICB3aWNodGlnLCBTZXRQcm9wKCkgenUgYmVudXR6ZW4gdW5kIGRpZSBBbnphaGwgZGVyIEthbXBmcnVuZGVuIGFuenVnZWJlbiwKKyAgICBkaWUgZGFzIExlYmV3ZXNlbiBwYXJhbHlzaWVydCBzZWluIHNvbGwuCisKKyAgICBFaW4gbmVnYXRpdmVyIFdlcnQgaXN0IG5pY2h0IGd1ZWx0aWcuIEJlaSBtZWhyIGFscyAzMCBLYW1wZnJ1bmRlbiB3aXJkCisgICAgZGllIFBhcmFseXNlIGF1ZiAzMCBLYW1wZnJ1bmRlbiBnZWthcHB0LgorCisgICAgRnVlciBqZWRlIFBhcmFseXNlIGJla29tbXQgZWluIExpdmluZyBlaW5lIGViZW5zbyBsYW5nZSBTY2h1dHp6ZWl0IG5hY2gKKyAgICBkZXIgUGFyYWx5c2UgZ2V3YWVocnQuIFZlcnN1Y2h0IG1hbiwgdm9yIEFibGF1ZiBkZXIgUGFyYWx5c2UKKyAgICBQX0RJU0FCTEVfQVRUQUNLIGhvZWhlciB6dSBzZXR6ZW4gKG9kZXIgc2V0enQgbWFuIGlubmVyaGFsYiBkZXIgZm9sZ2VuZGVuCisgICAgU2NodXR6emVpdCBQX0RJU0FCTEVfQVRUQUNLIGF1ZiA+IDApLCB3aXJkIERJU0FCTEVfVE9PX0VBUkxZIHZvbiBTZXRQcm9wCisgICAgenVydWVjayBnZWdlYmVuLgorICAgIEVpbmUgUmVkdWt0aW9uIHZvbiBlaW5lbSBQX0RJU0FCTEVfQVRUQUNLIGlzdCBtb2VnbGljaCwgYWxsZXJkaW5ncworICAgIHJlZHV6aWVydCBkaWVzIF9uaWNodF8gZWluZSBlaW5tYWwgZ2VzZXR6dGUgU2NodXR6emVpdC4KKworICAgIEVpbmVuIEdlZ25lcixkZXIgbmllIHBhcmFseXNpZXJ0IHdlcmRlbiBrb2VubmVuIHNvbGwsIGthbm4gbWFuIGVpbmZhY2gKKyAgICBwZXIgCisKKyAgICBTZXQoUF9ESVNBQkxFX0FUVEFDSywgZnVuY3Rpb24gaW50ICgpIHtyZXR1cm4gMDt9LCBGX1NFVF9NRVRIT0QpOworCisgICAgZXJzdGVsbGVuLCBkYSBiZWkgZGllc2VtIGRlciBXZXJ0IHZvbiBQX0RJU0FCTEVfQVRUQUNLIG5pY2h0IG1laHIgbWl0CisgICAgZWluZW0gbm9ybWFsZW4gU2V0UHJvcCgpLUF1ZnJ1ZiBnZWFlbmRlcnQgd2VyZGVuIGthbm4uCisKK0JFSVNQSUVMRToKKyAgICAvLyBHZWduZXIgMTcgUnVuZGVuIGxhbmcgcGFyYWx5c2llcmVuLCBvaG5lIFJ1ZWNrc2ljaHQgYXVmIGZydWVoZXJlIFAuCisgICAgLy8gKGluIGRpZXNlbSBNb21lbnQgaXN0IGRhcyBMaXZpbmcgYmlzIHRpbWUoKSArIDQgKiAxNyB2b3IgbGFlbmdlcmVyCisgICAgLy8gIG9kZXIgZXJuZXV0ZXIgUGFyYWx5c2UgZ2VzY2h1ZXR6dCkKKyAgICBlbi0+U2V0UHJvcChQX0RJU0FCTEVfQVRUQUNLLCAxNyk7CisgICAgLy8gRGVyIEdlZ25lciBrYW5uIGpldHp0IGZ1ZXIgMzQgS2FtcGZydW5kZW4gbmljaHQgZXJuZXV0IHBhcmFseXNpZXJ0CisgICAgLy8gd2VyZGVuLgorICAgIC8vIFBhcmFseXNlIHJlZHV6aWVyZW4gYXVmIDEwIEthbXBmcnVuZGVuCisgICAgZW4tPlNldFByb3AoUF9ESVNBQkxFX0FUVEFDSywgMTApOworICAgIC8vIERpZSBTY2h1dHp6ZWl0IGlzdCBpbW1lciBub2NoIGJlaSAzNCBLYW1wZnJ1bmRlbiwgbmljaHQgYmVpIDIwLgorCitTSUVIRSBBVUNIOgorICAgIFBfTkVYVF9ESVNBQkxFX0FUVEFDSworCisxOS4wOC4yMDE0LCBaZXNzdHJhCisKZGlmZiAtLWdpdCBhL2RvYy9wcm9wcy9QX0RJU0FCTEVfQ09NTUFORFMgYi9kb2MvcHJvcHMvUF9ESVNBQkxFX0NPTU1BTkRTCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmYwMzE4ZTAKLS0tIC9kZXYvbnVsbAorKysgYi9kb2MvcHJvcHMvUF9ESVNBQkxFX0NPTU1BTkRTCkBAIC0wLDAgKzEsNzQgQEAKK1BfRElTQUJMRV9DT01NQU5EUworCitOQU1FOgorICAgICBQX0RJU0FCTEVfQ09NTUFORFMgICAgICAgICAgICAgInBfbGliX2Rpc2FibGVjb21tYW5kcyIKKworREVGSU5JRVJUIElOOgorICAgICAvc3lzL3BsYXllci9jb21tYW5kLmgKKworQkVTQ0hSRUlCVU5HOgorICAgIE1pdCBkaWVzZXIgUHJvcCBrYW5uIG1hbiB2ZXJoaW5kZXJuLCBkYXNzIEtvbW1hbmRvcyBlaW5lcyBTcGllbGVycworICAgIHZlcmFyYmVpdGV0IHdlcmRlbi4gRGllcyBpc3Qgei5CLiBpbiBTZXF1ZW56ZW4gbnVldHpsaWNoLCB3byBkZXIgU3BpZWxlcgorICAgIHJlaW4gcGFzc2l2IGtvbnN1bWllcmVuIHNvbGwuCisgICAgSW4gZGllc2UgUHJvcGVydHkgbXVzcyBlaW4gQXJyYXkgbWl0IDIgb2RlciAzIEVsZW1lbnRlbiBnZXNjaHJpZWJlbiAKKyAgICB3ZXJkZW46CisgICAgICAgMSkgRW5kemVpdHB1bmt0IGluIFNla3VuZGVuIHNlaXQgMS4xLjE5NzAgKGludCkKKyAgICAgICAyKSBNZWxkdW5nIChTdHJpbmcgb2RlciBDbG9zdXJlKQorICAgICAgIDMpIChvcHRpb25hbCkgQXJyYXkgdm9uIHRyb3R6ZGVtIGVybGF1YnRlbiBWZXJiZW4gKHN0cmluZyopCisgICAgICAgICAobnVyIGF1c2dld2VydGV0LCB3ZW5uIGRpZSBNZWxkdW5nIGVpbiBTdHJpbmcgaXN0KQorICAgIAorICAgIElzdCBkaWUgTWVsZHVuZyBlaW4gU3RyaW5nLCB3aXJkIGRpZXNlciBlaW5mYWNoIGJlaSBqZWRlbSBLb21tYW5kbyBzbyB3aWUKKyAgICBlciBpc3QgYW4gZGVuIFNwaWVsZXIgYXVzZ2VnZWJlbiB1bmQgZGFzIEtvbW1hbmRvIGFiZ2Vicm9jaGVuLgorICAgIElzdCBkaWUgTWVsZHVuZyBlaW5lIENsb3N1cmUgd2lyZCBkaWVzZSBiZWkgamVkZW0gS29tbWFuZG8gYXVmZ2VydWZlbiB1bmQKKyAgICBkYXMgS29tbWFuZG8gYWJnZWJyb2NoZW4sIHdlbm4gc2llIGVpbmVuIFJ1ZWNrZ2FiZXdlcnQgIT0gMCB6dXJ1ZWNrZ2lidC4KKyAgICBJbiBkaWVzZW0gRmFsbCBpc3QgZGllIGdlcnVmZW5lIEZ1bmt0aW9uIGRhZnVlciB2ZXJhbnR3b3J0bGljaCwgZ2VlaWduZXRlCisgICAgTWVsZHVuZ2VuIGFuIGRlbiBTcGllbGVyIGF1c3p1Z2ViZW4hCisgICAgRGVyIEZ1bmt0aW9uIHdpcmQgZGVyIHZvbSBTcGllbGVyIGVpbmdlYmVuZSBCZWZlaGwgKHN0cmluZykgYWxzIGVyc3RlcworICAgIEFyZ3VtZW50IHVlYmVyZ2ViZW4uIFp1IGRpZXNlbSBaZWl0cHVua3Qgd3VyZGUgYWxsZSBBbGlhc2Ugc2Nob24KKyAgICBhdXNnZXdlcnRldC4gRGllIEZ1bmt0aW9uIGthbm4gZGVuIEtvbW1hbmRvZ2ViZXIgdmlhIHRoaXNfcGxheWVyKCkKKyAgICBlcm1pdHRlbG4uCisgICAgRnVlciB3ZWl0ZXJlIEluZm9ybWF0aW9uZW4gc3RlaHQgYXVjaCBjb21tYW5kX3N0YWNrKCkgenVyIFZlcmZ1ZWd1bmcsCisgICAgYWxsZXJkaW5ncyBpc3QgZG9ydCBkaWUgQWxpYXMtRXJzZXR6dW5nIG5pY2h0IGJlcnVlY2tzaWNodGlndC4KKworICAgIERpZSBBdXNuYWhtZWxpc3RlIHdpcmQgbnVyIGZ1ZXIgc2ltcGxlIFN0cmluZ3MgYWxzIE1lbGR1bmcgYXVzZ2V3ZXJ0ZXQsCisgICAgd2lyZCBlaW5lIENsb3N1cmUgdmVyd2VuZGV0LCBrYW5uIGRpZXNlIGJlc3NlciBzZWxiZXIgZGllIEF1c25haG1lbgorICAgIGJlc3RpbW1lbi4KKyAgICAKKyAgICBGcmFndCBtYW4gZGllc2UgUHJvcCBhYiwgZXJoYWVsdCBtYW4gZWluIEFycmF5IG1pdCA0IEVsZW1lbnRlbjogc2V0emVuZGVzCisgICAgT2JqZWt0IChvYmplY3QpLCBBYmxhdWZ6ZWl0IChpbnQpLCBNZWxkdW5nIChTdHJpbmcgb2RlciBDbG9zdXJlKSB1bmQKKyAgICBMaXN0ZSB2b24gQXVzbmFobWVuIChzdHJpbmcqKS4KKworQkVNRVJLVU5HRU46CisgICAgMS4gRGllIFByb3Agd2lyZCBmdWVyIE1hZ2llciBtaXQgZWluZ2VzY2hhbHRldGVtIFBfV0FOVFNfVE9fTEVBUk4KKyAgICAgICBpZ25vcmllcnQuCisgICAgMi4gV2VubiBkYXMgT2JqZWt0IHplcnN0b2VydCB3aXJkLCB3YXMgZGllIFByb3AgZ2VzZXR6dCBoYXQsIHdpcmQgZGVyCisgICAgICAgRWludHJhZyB1bndpcmtzYW0uCisgICAgMy4gV2VubiBkaWVzZSBQcm9wIGdlc2V0enQgdW5kIG5pY2h0IGFiZ2VsYXVmZW4gaXN0LCBrYW5uIG51ciBkYXMgZ2xlaWNoZQorICAgICAgIE9iamVrdCBzaWUgbWl0IG5ldWVuIERhdGVuIHVlYmVyc2NocmVpYmVuLiBBbGxlIGFuZGVyZW4gT2JqZWt0ZSBrb2VubmVuCisgICAgICAgZGllIFByb3AgbnVyIGxvZXNjaGVuLiBEaWVzIHNvbGwgdmVyaGluZGVybiwgZGFzcyBNYWdpZXIgdW5hYnNpY2h0bGljaAorICAgICAgIGVpbmZhY2ggYW5kZXJlciBMZXV0ZSBFaW50cmFlZ2UgdWViZXJzY2hyZWliZW4uIERlbWVudHNwcmVjaGVuZDogTGFzc3QKKyAgICAgICBkaWUgRmluZ2VyIGRhdm9uLCB3ZW5uIGRpZSBzY2hvbiBnZXNldHp0IGlzdC4gOy0pCisgICAgNC4gRGllc2UgUHJvcCBkYXJmIF9hdXNzY2hsaWVzc2xpY2hfIG1pdCBTZXRQcm9wKCkgdW5kIFF1ZXJ5UHJvcCgpIGJlbnV0enQKKyAgICAgICB3ZXJkZW4sIFNldCgpIHVuZCBRdWVyeSgpIGZ1bmt0aW9uaWVyZW4gX25pY2h0Xy4KKyAgICA1LiBFcyBnaWJ0IGVpbmlnZSBWZXJiZW4sIGRpZSBOSUUgYmxvY2tpZXJ0IHdlcmRlbi4gWnVyIFplaXQgc2luZCBkaWVzCisgICAgICAgIm1ydWZlIiwgIm1zY2hhdSIsICJidWciLCAiaWRlZSIsICJ0eXBvIiB1bmQgImRldGFpbCIuCisgICAgNi4gQml0dGUgbmljaHQgbWlzc2JyYXVjaGVuLCBzcGV6aWVsbCBuaWNodCBkYXp1LCBkaWUgS29tbWFuZG9zIHZvbgorICAgICAgIFNwaWVsZXIgenUgdWViZXJ3YWNoZW4vbWl0enVzY2hyZWliZW4uIERhcyBTZXR6ZW4gZGllc2VyIFByb3Agd2lyZCAKKyAgICAgICBnZWxvZ2d0LgorCitCRUlTUElFTDoKKyAgIEluIGVpbmVtIFJhdW0gc3RhcnRldCBlaW5lIFNlcXVlbnosIGluIGRlciBkZXIgU3BpZWxlciBuaWNodHMgbWFjaGVuIHNvbGw6CisKKyAgIGlmICghcGwtPlF1ZXJ5UHJvcChQX0RJU0FCTEVfQ09NTUFORFMpKQorICAgICAgcGwtPlNldFByb3AoUF9ESVNBQkxFX0NPTU1BTkRTLAorICAgICAgICAgICAgKHsgdGltZSgpICsgMTIwLCAiRHUgYmlzdCB0aWVmIGluIERlaW5lbSBUcmF1bSBnZWZhbmdlbiFcbiIgfSkgKTsKKyAgIGVsc2UgLy8gLi4uIEZlaGxlcmJlaGFuZGx1bmcsIGZhbGxzIFByb3Agc2Nob24gZ2VzZXR6dCAuLi4KKyAgIAorICAgU29sbCBkaWUgUHJvcCBhdXMgaXJnZW5kZWluZW0gR3J1bmQgKHZvcnplaXRpZykgZ2Vsb2VzY2h0IHdlcmRlbjoKKyAgIHBsLT5TZXRQcm9wKFBfRElTQUJMRV9DT01NQU5EUywgMCk7CisKK1NJRUhFIEFVQ0g6CisgICAgIGNvbW1hbmQoKSwgcXVlcnlfY29tbWFuZCgpLCBjb21tYW5kX3N0YWNrKCksIG1vZGlmeV9jb21tYW5kKCksIAorICAgICB0aGlzX3BsYXllcigpCisKKzAxLjEyLjIwMTIsIFplc3N0cmEKZGlmZiAtLWdpdCBhL2RvYy9wcm9wcy9QX0RJU1RSSUJVVElPTiBiL2RvYy9wcm9wcy9QX0RJU1RSSUJVVElPTgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41MjljNTNlCi0tLSAvZGV2L251bGwKKysrIGIvZG9jL3Byb3BzL1BfRElTVFJJQlVUSU9OCkBAIC0wLDAgKzEsMTYgQEAKK05BTUU6DQorICAgICBQX0RJU1RSSUJVVElPTiAgICAgICAgICAgICAgICAic3RkX2Zvb2RfZGlzdHJpYnV0aW9uIg0KKw0KK0RFRklOSUVSVCBJTjoNCisgICAgIC9zeXMvZm9vZC5oDQorDQorQkVTQ0hSRUlCVU5HOg0KKyAgICAgVmVydGVpbHVuZyBkZXIgSGVpbHVuZyB1ZWJlciBtZWhyZXJlIEhlYXJ0YmVhdHMuDQorICAgICBEaWVzZXIgV2VydCB3aXJkIGltIGVudHJ5X2luZm8gYWxzIEhfRElTVFJJQlVUSU9OIGRlbSBjb25zdW1lKCkgaW0NCisgICAgIExpdmluZyB1ZWJlcmdlYmVuLg0KKyAgICAgDQorU0lFSEUgQVVDSDoNCisgICAgIGNvbnN1bWUNCisNCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCitMYXN0IG1vZGlmaWVkOiBUaHUgT2N0IDI4IDEyOjE1OjAwIDIwMTAgYnkgQ2FsZHJhClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZG9jL3Byb3BzL1BfRE1TRyBiL2RvYy9wcm9wcy9QX0RNU0cKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZjQzZmJiNAotLS0gL2Rldi9udWxsCisrKyBiL2RvYy9wcm9wcy9QX0RNU0cKQEAgLTAsMCArMSw4IEBACitOQU1FOgorICAgIFBfRE1TRyAgICAgICAgICAgICAgICAgICAgICAgICJkZXN0bXNnIiAgICAgICAgICAgICAgICAgICAgIAorCitERUZJTklFUlQgSU46CisgICAgL3N5cy9wbGF5ZXIvYmFzZS5oCisKK0JFU0NIUkVJQlVORzoKKyAgICAgKioqIE9CU09MRVQhICoqKiBTaWVoZSBQX0RFU1RSVUNUX01TRwpkaWZmIC0tZ2l0IGEvZG9jL3Byb3BzL1BfRE9NQUlOIGIvZG9jL3Byb3BzL1BfRE9NQUlOCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjgwZmQxZjcKLS0tIC9kZXYvbnVsbAorKysgYi9kb2MvcHJvcHMvUF9ET01BSU4KQEAgLTAsMCArMSwzMSBAQAorTkFNRToKKyAgICBQX0RPTUFJTiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAibGliX3BfZG9tYWluIgorCitERUZJTklFUlQgSU46CisgICAgL3N5cy9yb29tL2Rlc2NyaXB0aW9uLmgKKworQkVTQ0hSRUlCVU5HOgorICAgICBEaWVzZSBQcm9wZXJ0eSBlbnRoYWVsdCBkaWUgUmVnaW9uLCBpbiBkZXIgZWluIFJhdW0gbGllZ3QsIHNvZmVybiBlcgorICAgICBpbiAvZC8gbGllZ3QuCisKKyAgICAgRmFsbHMgZWluIFJhdW0gbmljaHQgaW4gL2QvIGxpZWd0LCBhYmVyIGVzIGVpZ2VudGxpY2ggZWluIEdlYmlldCBpc3QsCisgICAgIHdlbGNoZXMgZWluZGV1dGlnIGluIGVpbmVyIFJlZ2lvbiB6dWdlb3JkbmV0IGlzdCwga2FubiBkZXIgTWFnaWVyCisgICAgIGhpZXIgZ2V6aWVsdCBlaW5lbiBhbmRlcmVuIFdlcnQgc2V0emVuLgorICAgICAKKyAgICAgQml0dGUga2VpbmUgUmVnaW9uZW4gZmFlbHNjaGVuIQorCitCRUlTUElFTDoKKyAgICAgSW4gL2QvaW5zZWxuL3plc3N0cmEvdnVsa2Fud2VnL3Jvb20vcjEgbGllZmVydAorICAgICBRdWVyeVByb3AoUF9ET01BSU4pCisgICAgIGVpbiAiSW5zZWxuIiB6dXJ1ZWNrLgorCisgICAgIEluIGVpbmVtIFJhdW0gZGVyIENoYW9zZ2lsZGU6CisgICAgIFNldFByb3AoUF9ET01BSU4sICJQb2xhciIpOworICAgICBkYW1pdCBkZXIgUmF1bSBhbHMgUmF1bSBkZXIgUmVnaW9uIFBvbGFyIGFuZ2V6ZWlndCB3aXJkLgorCitTSUVIRSBBVUNIOgorICAgICBnbWNwCisKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKzIzLjAyLjIwMTMsIFplc3N0cmEKKwpkaWZmIC0tZ2l0IGEvZG9jL3Byb3BzL1BfRE9PUl9JTkZPUyBiL2RvYy9wcm9wcy9QX0RPT1JfSU5GT1MKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOGI1ZjcxYgotLS0gL2Rldi9udWxsCisrKyBiL2RvYy9wcm9wcy9QX0RPT1JfSU5GT1MKQEAgLTAsMCArMSw0NCBAQAorTkFNRToKKyAgICBQX0RPT1JfSU5GT1MgICAgICAgICAgICAgICAgICAiZG9vcl9pbmZvcyIKKworREVGSU5JRVJUIElOOgorICAgIC9zeXMvZG9vcnJvb20uaAorCitCRVNDSFJFSUJVTkc6CisgICAgTWFwcGluZyBtaXQgSW5mb3JtYXRpb25lbiB1ZWJlciBlaW5lIGltIFJhdW0gcGVyIE5ld0Rvb3IoKSBkZWZpbmllcnRlCisgICAgVHVlci4gRGllc2UgSW5mb3Mgd2VyZGVuIHVlYmVyIC9zdGQvcm9vbS9kb29ycy5jIGFuIGRlbiAvb2JqL2Rvb3JtYXN0ZXIuYworICAgIHdlaXRlcmdlZ2ViZW4gdW5kIGRlbSBSYXVtLCBkZXIgZGllIFR1ZXIgYmVzaXR6dCwgYWxzIFByb3BlcnR5IGdlc2V0enQuCisgICAgV2VyZGVuIG1laHJlcmUgVHVlcmVuIGluIGVpbmVtIFJhdW0gZWluZ2VidW5kZW4sIGVudGhhZWx0IGRhcyBNYXBwaW5nCisgICAgZW50c3ByZWNoZW5kIHZpZWxlIEVpbnRyYWVnZS4KKworICAgIERpZXNlcyBNYXBwaW5nIGRpZW50IHp1ciBpbnRlcm5lbiBWZXJ3YWx0dW5nIGRlciBUdWVyZW4gaW0KKyAgICAvb2JqL2Rvb3JtYXN0ZXIuYyB1bmQgc29sbHRlIG5pY2h0IHBlciBIYW5kIHZlcmFlbmRlcnQgd2VyZGVuIQorCisgICAgRGllIEVpbnRyYWVnZSBpbSBNYXBwaW5nIGhhYmVuIGZvbGdlbmRlIGtleXMgKGRlZmluaWVydCBpbgorICAgIC9zeXMvZG9vcnJvb20uaCk6CisKKyAgICBEX0RFU1QgOiBaaWVscmF1bSAoc3RyaW5nKQorICAgIERfQ01EUyA6IEJlZmVobChlKSwgdW0gZHVyY2ggZGllIFR1ZXIgenUgZ2VoZW4gKHN0cmluZyBvZGVyICpzdHJpbmcpCisgICAgRF9JRFMgIDogSURzIGRlciBUdWVyIChzdHJpbmcgb2RlciAqc3RyaW5nKQorICAgIERfRkxBR1MgOiBCZXNvbmRlcmUgRWlnZW5zY2hhZnRlbiBkZXIgVHVlciAoVHVlciBicmF1Y2h0IFNjaGx1ZXNzZWwgZXRjLikKKyAgICBEX0xPTkcgIDogTGFuZ2Jlc2NocmVpYnVuZyAoc3RyaW5nKQorICAgIERfU0hPUlQgOiBLdXJ6YmVzY2hyZWlidW5nIChzdHJpbmcpCisgICAgRF9OQU1FICA6IE5hbWUgKHN0cmluZyBvZGVyICpzdHJpbmcpCisgICAgRF9HRU5ERVIgIDogR2VzY2hsZWNodAorICAgIERfRlVOQyAgICA6IEZ1bmt0aW9uLCBkaWUgVk9SIGRlbSBEdXJjaHNjaHJlaXRlbiBkZXIgVHVlciBhdWZnZXJ1ZmVuIHdpcmQKKyAgICBEX01TR1MgICAgOiBCZXdlZ3VuZ3NtZWxkdW5nZW4KKyAgICBEX0ZVTkMyICAgOiBGdW5rdGlvbiwgZGllIE5BQ0ggZGVtIER1cmNoc2NocmVpdGVuIGRlciBUdWVyIGF1ZmdlcnVmZW4gd2lyZAorICAgIERfVEVTVEZVTkMgIDogRnVua3Rpb24gZGllIGltIFNhcnRyYXVtIHRlc3RldCwgb2IgZGllIFR1ZXIgZHVyY2hzY2hyaXR0ZW4KKyAgICAgICAgICAgICAgICAgIHdlcmRlbiBkYXJmCisgICAgRF9SRVNFVF9NU0cgOiBNZWxkdW5nZW4gYmVpbSBUdWVyLVJlc2V0CisgICAgRF9PUEVOX1dJVEhfTU9WRSA6IEZhbGxzIGdlc2V0enQsIHdpcmQgZGllIFR1ZXIgYXVjaCBtaXQgZGVtCisgICAgICAgICAgICAgICAgICAgICAgIEJld2VndW5nc2JlZmVobCBnZW9lZmZuZXQgdW5kIGR1cmNoc2Nocml0dGVuLCBmYWxscworICAgICAgICAgICAgICAgICAgICAgICBPZWZmbmVuIGVyZm9sZ3JlaWNoCisKKworU0lFSEUgQVVDSDoKKyAgICBOZXdEb29yKCksIFF1ZXJ5RG9vcktleSgpLCBRdWVyeURvb3JTdGF0dXMoKSwgU2V0RG9vclN0YXR1cygpLAorICAgIC9zdGQvcm9vbS9kb29ycy5jLCAvb2JqL2Rvb3JtYXN0ZXIuYywgR2V0UGhpb2xlbkluZm9zKCksIFF1ZXJ5QWxsRG9vcnMoKQorCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorTGV0enRlIEFlbmRlcnVuZzogRG9uLCAwOC4wNS4yMDE0LCBHYWJ5bG9uCmRpZmYgLS1naXQgYS9kb2MvcHJvcHMvUF9ET19ERVNUUlVDVCBiL2RvYy9wcm9wcy9QX0RPX0RFU1RSVUNUCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjdlOWEyMzAKLS0tIC9kZXYvbnVsbAorKysgYi9kb2MvcHJvcHMvUF9ET19ERVNUUlVDVApAQCAtMCwwICsxLDE3IEBACitOQU1FOgorICAgIFBfRE9fREVTVFJVQ1QgICAgICAgICAgICAgICAgICJkb19kZXN0cnVjdCIgICAgICAgICAgICAgICAgIAorCitERUZJTklFUlQgSU46CisgICAgL3N5cy9wcm9wZXJ0aWVzLmgKKworQkVTQ0hSRUlCVU5HOgorICAgICBGbGFnLCBvYiBzaWNoIGRpZSBMaWNodHF1ZWxsZSBhbSBFbmRlIGRlciBMZXVjaHR6ZWl0IHNlbGJzdAorICAgICB6ZXJzdG9lcnQuIAorCitTSUVIRSBBVUNIOgorICAgICBCYXNpc2tsYXNzZW46IC9zdGQvbGlnaHRzb3VyY2UuYworICAgICBQcm9wZXJ0aWVzOiBQX0ZVRUwsIFBfTElHSFRERVNDLCBQX0xJR0hUCisgICAgIE1ldGhvZGVuOiBBZGRGdWVsKEwpCisKK0xFVFpURSBBRU5ERVJVTkc6CisgICAgMjIuIERlei4gMjAxNSwgQXJhdGhvcm4KZGlmZiAtLWdpdCBhL2RvYy9wcm9wcy9QX0RSSU5LIGIvZG9jL3Byb3BzL1BfRFJJTksKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZjJmZTk4MgotLS0gL2Rldi9udWxsCisrKyBiL2RvYy9wcm9wcy9QX0RSSU5LCkBAIC0wLDAgKzEsMjUgQEAKK05BTUU6CisgICAgIFBfRFJJTksgICAgICAgICAgICAgICAgICAgICAgICJkcmluayIKKworREVGSU5JRVJUIElOOgorICAgICAvc3lzL2xpdmluZy9saWZlLmgKKworQkVTQ0hSRUlCVU5HOgorCisgICAgIC0gTGViZXdlc2VuCisgICAgICAgTnVtZXJpc2NoZXIgV2VydCBmdWVyIGRlbiBTYWV0dGlndW5nc2dyYWQgZWluZXMgTGViZXdlc2VucyBtaXQKKyAgICAgICBHZXRyYWVua2VuLiBEZXIgbWF4aW1hbGUgV2VydCBzdGVodCBpbiBQX01BWF9EUklOSy4KKworICAgICAtIFNwZWlzZW4vS25laXBlbgorICAgICAgIE51bWVyaXNjaGVyIFdlcnQgZnVlciBkZW4gU2FldHRpZ3VuZ3NncmFkIGVpbmVyIFBvcnRpb24gZWluZXMKKyAgICAgICBHZXRyYWVua2VzLiBJc3QgZGllc2UgUHJvcGVydHkgbmljaHQgZ2VzZXR6dCBvZGVyIHp1c2FldHpsaWNoCisgICAgICAgUF9GT09EIGdlc2V0enQsIGthbm4gbWFuIGRpZXNlIFNwZWlzZSBuaWNodCB0cmlua2VuLiBFaW5lCisgICAgICAgZnVua3Rpb25pZXJlbmRlIFNwZWlzZSBfbXVzc18gZW50d2VkZXIgUF9GT09EIG9kZXIgUF9EUklOSworICAgICAgIGdyb2Vzc2VyIDAgZ2VzZXR6dCBoYWJlbi4KKyAgICAgCitTSUVIRSBBVUNIOgorICAgICBQX01BWF9EUklOSywgUF9EUklOS19ERUxBWSwgY29uc3VtZQorICAgICBQX0ZPT0QsIFBfQUxDT0hPTCwgd2l6L2Zvb2QKKworLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCitMYXN0IG1vZGlmaWVkOiBUaHUgT2N0IDI4IDEyOjE1OjAwIDIwMTAgYnkgQ2FsZHJhClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZG9jL3Byb3BzL1BfRFJJTktfREVMQVkgYi9kb2MvcHJvcHMvUF9EUklOS19ERUxBWQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4wMTE4ODQzCi0tLSAvZGV2L251bGwKKysrIGIvZG9jL3Byb3BzL1BfRFJJTktfREVMQVkKQEAgLTAsMCArMSwxMCBAQAorTkFNRToKKyAgICBQX0RSSU5LX0RFTEFZICAgICAgICAgICAgICAgICAiZHJpbmtfZGVsYXkiICAgICAgICAgICAgICAgICAgICAgCisKK0RFRklOSUVSVCBJTjoKKyAgICAvc3lzL2xpdmluZy9saWZlLmgKKworQkVTQ0hSRUlCVU5HOgorICAgICBBbnphaGwgZGVyIGhlYXJ0X2JlYXRzLCBiaXMgUF9EUklOSyB1bSBlaW5lbiBQdW5rdCBzaW5rdC4KKyAgICAgQWVuZGVydW5nZW4gZGllc2VyIFByb3BlcnR5IGluIFNwaWVsZXJuIGJlZHVlcmZlbiBkZXIgCisgICAgIEdlbmVobWlndW5nIGRlcyBFTSBmdWVyIEJhbGFuY2UuCmRpZmYgLS1naXQgYS9kb2MvcHJvcHMvUF9EUklOS19GVUxMX01TRyBiL2RvYy9wcm9wcy9QX0RSSU5LX0ZVTExfTVNHCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjI5MDNhZjMKLS0tIC9kZXYvbnVsbAorKysgYi9kb2MvcHJvcHMvUF9EUklOS19GVUxMX01TRwpAQCAtMCwwICsxLDI0IEBACitOQU1FOgorICAgICBQX0RSSU5LX0ZVTExfTVNHICAgICAgICAgICAgICAic3RkX2Zvb2RfZHJpbmtfZnVsbF9tc2ciCisKK0RFRklOSUVSVCBJTjoKKyAgICAgPHN5cy9mb29kLmg+CisKK0JFU0NIUkVJQlVORzoKKyAgICAgTWVsZHVuZyBhbiBkZW4gS29uc3VtZW50ZW4sIHdlbm4gZWluIEdldHJhZW5rIGdldHJ1bmtlbiB3ZXJkZW4gc29sbCwKKyAgICAgb2J3b2hsIGRpZXNlciBuaWNodHMgbWVociB0cmlua2VuIGthbm4uCisgICAgIAorQkVNRVJLVU5HRU46CisgICAgIERpZXNlIE1lbGR1bmcgd2lyZCB2b24gcmVwbGFjZV9wZXJzb25hbCBtaXQgZGVuIEFyZ3VtZW50ZW46CisgICAgIDEuIFNwZWlzZQorICAgICAyLiBLb25zdW1lbnQKKyAgICAgdmVyYXJiZWl0ZXQsIGthbm4gYWxzIGVudHNwcmVjaGVuZGUgUGxhdHpoYWx0ZXIgZW50aGFsdGVuCisgICAgIAorREVGQVVMVDoKKyAgICAgIlNvIHZpZWwga2FubnN0IER1IGltIE1vbWVudCBuaWNodCB0cmlua2VuLiIKKworU0lFSEUgQVVDSDoKKyAgICAgUF9EUklOSywgUF9NQVhfRFJJTkssIHdpei9mb29kLCByZXBsYWNlX3BlcnNvbmFsCisKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorTGFzdCBtb2RpZmllZDogVGh1IE9jdCAyOCAxMjoxNTowMCAyMDEwIGJ5IENhbGRyYQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2RvYy9wcm9wcy9QX0RST1BfTVNHIGIvZG9jL3Byb3BzL1BfRFJPUF9NU0cKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNWE0YzlkNwotLS0gL2Rldi9udWxsCisrKyBiL2RvYy9wcm9wcy9QX0RST1BfTVNHCkBAIC0wLDAgKzEsNjIgQEAKK1BfRFJPUF9NU0cKK05BTUU6CisgICAgIFBfRFJPUF9NU0cJCQkJImRyb3BfbWVzc2FnZSIgCisKK0RFRklOSUVSVCBJTjoKKyAgICAgL3N5cy9saXZpbmcvcHV0X2FuZF9nZXQuaAorCitCRVNDSFJFSUJVTkc6CisgICAgIE1pdCBQX0RST1BfTVNHIGthbm4gbWFuIGRpZSBNZWxkdW5nLCBkaWUgbWFuIGJlaW0gQWJsZWdlbiBlaW5lcworICAgICBPYmpla3RlcyBiZWtvbW10LCBtb2RpZml6aWVyZW4uCisKKyAgICAgRm9sZ2VuZGUgV2VydGUgc2luZCBtb2VnbGljaDoKKwkKKyAgICAgbyAwCisgICAgICAgRXMgd2lyZCBlaW5lIFN0YW5kYXJkbWVsZHVuZyBhdXNnZWdlYmVuLiBEaWVzIGlzdCBWb3JlaW5zdGVsbHVuZy4gCisJICAKKyAgICAgbyBOT19QTkdfTVNHICAgICAgID09IC0xCisgICAgICAgRXMgd2lyZCBrZWluZXJsZWkgTWVsZHVuZyBhdXNnZWdlYmVuCisJICAKKyAgICAgbyBFaW4gQXJyYXkgYXVzIFN0cmluZ3MgCisgICAgICAgRGVyIGVyc3RlIFN0cmluZyB3aXJkIGFuIGRlbiBTcGllbGVyIGF1c2dlZ2ViZW4sIGRlciB6d2VpdGUgCisgICAgICAgKG9wdGlvbmFsZSkgYW4gZGVuIFJhdW0uIAorCSAgCisgICAgICAgRGllIFN0cmluZ3Mgd2VyZGVuIGR1cmNoIGRpZSBGdW5rdGlvbiByZXBsYWNlX3BlcnNvbmFsKCkgZ2VwYXJzdC4KKwlPYmpla3QxIC0gU3BpZWxlcgorICAgICAgICBPYmpla3QyIC0gZGFzIE9iamVrdCwgZGFzIGZhbGxlbmdlbGFzc2VuIHdpcmQKKwkgIAorICAgICAgIFdpcmQgZGVyIHp3ZWl0ZSBTdHJpbmcgbmljaHQgYW5nZWdlYmVuLCBlcmZvbGd0IGtlaW5lIE1lbGR1bmcgYW4KKyAgICAgICBkZW4gUmF1bS4KKwkJCQkKK0JFSVNQSUVMOgorICAgICB2b2lkIGNyZWF0ZSgpIHsKKyAgICAgIC4uLgorICAgICAgU2V0UHJvcCggUF9TSE9SVCwgIlVnYXJzIEhhbmRheHQiICk7CisgICAgICBTZXRQcm9wKCBQX0xPTkcsIGJyZWFrX3N0cmluZygKKyAgICAgICAiRGllc2VzIGlzdCBlaW5lIEthbXBmYXh0LCB3aWUgc2llIE9ya3Mgbm9ybWFsZXJ3ZWlzZSBiZW51dHplbi4gIgorICAgICAgICJEYSBEdSBaZWl0IGhhc3QsIHNpZSBEaXIgYW56dXNjaGF1ZW4sIGlzdCBkZXIgQmVzaXR6ZXIgd29obCAiCisgICAgICAgImJlcmVpdHMgYmVpIExhcnMuIiw3OCApKTsKKwkgIAorICAgICAgU2V0UHJvcCggUF9OQU1FLCAiQXh0IiApOworICAgICAgQWRkSWQoICh7ImhhbmRheHQiLCJheHQifSkgKTsKKyAgICAgIFNldFByb3AoIFBfR0VOREVSLCBGRU1BTEUgKTsKKwkgIAorICAgICAgU2V0UHJvcCggUF9EUk9QX01TRywgKHsKKyAgICAgICAiRHUgc2NobWVpc3N0IEBXRU4yIGhpbi4iLAorICAgICAgICJAV0VSMSBzY2htZWlzc3QgRGlyIEBXRU5VMiB2b3IgZGllIEZ1ZXNzZS5cbiJ9KSk7CisgICAgICAuLi4KKyAgICAgfQorCisgICAgIFdpbGwgVWdhciBzZWluZSBBeHQgYWJsZWdlbiB1bmQgZ2lidCAibGFzc2UgYXh0IGZhbGxlbiIgZWluLCB3ZXJkZW4gCisgICAgIGZvbGdlbmRlIE1lbGR1bmdlbiBhdXNnZWdlYmVuOgorCQorICAgICBVZ2FyOiAiRHUgc2NobWVpc3N0IGRpZSBBeHQgaGluLiIKKyAgICAgUmF1bTogIlVnYXIgc2NobWVpc3N0IERpciBlaW5lIEF4dCB2b3IgZGllIEZ1ZXNzZS4iCisJCitTSUVIRSBBVUNIOgorICAgICBBZWhubGljaGVzOiBQX1BJQ0tfTVNHLCBQX1BVVF9NU0csIFBfR0lWRV9NU0csIFBfV0VBUl9NU0csIFBfV0lFTERfTVNHCisgICAgIEZlaGxlcjogICAgIFBfVE9PX0hFQVZZX01TRywgUF9FTlZfVE9PX0hFQVZZX01TRywgUF9UT09fTUFOWV9NU0csCisgICAgICAgICAgICAgICAgIFBfTk9JTlNFUlRfTVNHLCBQX05PTEVBVkVfTVNHLCBQX05PRFJPUCwgUF9OT0dFVCAKKyAgICAgU29uc3RpZ2VzOiAgcmVwbGFjZV9wZXJzb25hbChFKSwgZHJvcF9vYmooTCksIC9zdGQvbGl2aW5nL3B1dF9hbmRfZ2V0LmMKKworMTQuIE1hZXJ6IDIwMDQgR2xvaW5zb24KZGlmZiAtLWdpdCBhL2RvYy9wcm9wcy9QX0VBUk1VRkZTIGIvZG9jL3Byb3BzL1BfRUFSTVVGRlMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOTdlNmIxYwotLS0gL2Rldi9udWxsCisrKyBiL2RvYy9wcm9wcy9QX0VBUk1VRkZTCkBAIC0wLDAgKzEsOSBAQAorTkFNRToKKyAgICBQX0VBUk1VRkZTICAgICAgICAgICAgICAgICAgICAiZWFybXVmZnMiICAgICAgICAgICAgICAgICAgICAKKworREVGSU5JRVJUIElOOgorICAgIC9zeXMvcHJvcGVydGllcy5oCisKK0JFU0NIUkVJQlVORzoKKyAgICAgU2hvdXRzIHZvbiBTcGllbGVybiB1bmQgTWFnaWVybiBtaXQgTWFnaWVybGV2ZWwgPCBlYXJtdWZmcyB3ZXJkZW4KKyAgICAgYWJnZWJsb2NrdCAoTnVyIGZ1ZXIgTWFnaWVyKS4KZGlmZiAtLWdpdCBhL2RvYy9wcm9wcy9QX0VBVEVSX01TRyBiL2RvYy9wcm9wcy9QX0VBVEVSX01TRwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi45OWFlNGQzCi0tLSAvZGV2L251bGwKKysrIGIvZG9jL3Byb3BzL1BfRUFURVJfTVNHCkBAIC0wLDAgKzEsMjMgQEAKK05BTUU6CisgICAgIFBfRUFURVJfTVNHICAgICAgICAgICAgICAgICAgICJzdGRfZm9vZF9lYXRlcl9tc2ciCisKK0RFRklOSUVSVCBJTjoKKyAgICAgPHN5cy9mb29kLmg+CisKK0JFU0NIUkVJQlVORzoKKyAgICAgTWVsZHVuZyBhbiBkZW4gS29uc3VtZW50ZW4sIHdlbm4gZWluZSBTcGVpc2Uga29uc3VtaWVydCB3aXJkLgorICAgICAKK0JFTUVSS1VOR0VOOgorICAgICBEaWVzZSBNZWxkdW5nIHdpcmQgdm9uIHJlcGxhY2VfcGVyc29uYWwgbWl0IGRlbiBBcmd1bWVudGVuOgorICAgICAxLiBTcGVpc2UKKyAgICAgMi4gS29uc3VtZW50CisgICAgIHZlcmFyYmVpdGV0LCBrYW5uIGFscyBlbnRzcHJlY2hlbmRlIFBsYXR6aGFsdGVyIGVudGhhbHRlbgorICAgICAKK0RFRkFVTFQ6CisgICAgICJEdSBrb25zdW1pZXJzdCBAV0VOMS4iCisKK1NJRUhFIEFVQ0g6CisgICAgIC9zdGQvZm9vZC5jLCB3aXovZm9vZCwgcmVwbGFjZV9wZXJzb25hbAorCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KK0xhc3QgbW9kaWZpZWQ6IFRodSBPY3QgMjggMTI6MTU6MDAgMjAxMCBieSBDYWxkcmEKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9kb2MvcHJvcHMvUF9FRkZFQ1RJVkVfQUMgYi9kb2MvcHJvcHMvUF9FRkZFQ1RJVkVfQUMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZmY3ZGQ1MwotLS0gL2Rldi9udWxsCisrKyBiL2RvYy9wcm9wcy9QX0VGRkVDVElWRV9BQwpAQCAtMCwwICsxLDg3IEBACitQX0VGRkVDVElWRV9BQworCitOQU1FOgorICAgICBQX0VGRkVDVElWRV9BQyAgICAgICJlZmZlY3RpdmVfYWMiCisKK0RFRklOSUVSVCBJTjoKKyAgICAgPGNvbWJhdC5oPgorCitCRVNDSFJFSUJVTkc6CisgICAgIERpZXNlIFByb3BlcnR5IGtvbW10IHNvd29obCBpbiBSdWVzdHVuZ2VuIGFscyBhdWNoIGluIFdhZmZlbiwgZGllCisgICAgIHNjaHVldHplbiBzb2xsZW4sIHp1bSBFaW5zYXR6LgorCisgICAgIEluIFJ1ZXN0dW5nZW4ga2FubiBoaWVyIGRlciBFZmZla3RpdndlcnQgZGVyIFJ1ZXN0dW5nc2tsYXNzZSB2ZXJtZXJrdAorICAgICB3ZXJkZW4sIHdlbm4gZGllc2Ugbm9jaCBkdXJjaCBlaW5lIERlZmVuZEZ1bmMoKSBtb2RpZml6aWVydCB3aXJkCisgICAgIChzb3dlaXQgc2ljaCBlaW4gc29sY2hlciBFZmZla3RpdndlcnQgYW5nZWJlbiBsYWVzc3QpLgorCisgICAgIEluIGVpbmlnZW4gR2lsZGVuIGtvZW5uZW4gV2FmZmVuIGF1Y2ggYWxzIFJ1ZXN0dW5nIGVpbmdlc2V0enQgd2VyZGVuCisgICAgICh6LkIuIGJlaW0gUGFyaWVyZW4gZWluZXMgQW5ncmlmZnMpLiBJbiBkaWVzZXIgUHJvcGVydHkga2FubiBtYW4gZGllCisgICAgIFJ1ZXN0dW5nc2tsYXNzZSBlaW50cmFnZW4sIGRpZSBkaWUgV2FmZmUgYmVpIHNvbGNoZW4gQWt0aW9uZW4gYXVmd2Vpc2VuCisgICAgIHNvbGwuIERhYmVpIGlzdCBtYW4gYW4gZGllIHVlYmxpY2hlbiBCZXNjaHJhZW5rdW5nZW4gZGVyCisgICAgIFJ1ZXN0dW5nc2tsYXNzZSBnZWJ1bmRlbiEgKHMuIC9zeXMvY29tYmF0LmgpCisKK0JFUk1FUktVTkdFTjoKKyAgICAgRGFzIEthZW1wZmVyc3BlbGxib29rIHZlcndlbmRldCBmdWVyIFBhcmFkZW4gZXRjLiBQX0VGRkVDVElWRV9BQyBhbnN0YXR0CisgICAgIFBfQUMsIHdlbm4gdmVyZnVlZ2Jhci4KKworQkVJU1BJRUxFOgorICAgICAqIERlZmVuZEZ1bmNzOiAKKyAgICAgICBEZXIgZG9wcGVsdGUgTWl0dGVsd2VydCBkZXIgRGVmZW5kRnVuYyB3aXJkIHp1ciBCYXNpcy1BQyBkYXp1YWRkaWVydCwKKyAgICAgICBkYSBzaWNoIGRlciAnU2NodXR6d2VydCA9IHJhbmRvbShCYXNpcy1BQykgKyBhYnNvbHV0KERlZmVuZEZ1bmMtV2VydCknCisgICAgICAgYmVyZWNobmV0LgorCisgICAgIC8vICMxIEVpbmUgUnVlc3R1bmcgbWl0IFBfQUMgdm9uIDM1IHVuZCByYW5kb21pc2llcnRlciBEZWZlbmRGdW5jCisgICAgICAgIFNldFByb3AoUF9BQywgMzUpOworICAgICAgICBTZXRQcm9wKFBfREVGRU5EX0ZVTkMsIHRoaXNfb2JqZWN0KCkpOworCisgICAgICAgIGludCBEZWZlbmRGdW5jKC4uLikgeworICAgICAgICAgIHJldHVybiByYW5kb20oMjApOyAgICAgICAgICAgICAgICAgICAgICAgLy8gTWl0dGVsd2VydDogMTAKKyAgICAgICAgfQorICAgICAgICAtPiBTZXRQcm9wKFBfRUZGRUNUSVZFX0FDLCA1NSk7ICAgICAgICAgICAgLy8gMzUgKyAyKjEwID0gNTUKKworICAgICAvLyAjMiBFaW5lIFJ1ZXN0dW5nIG1pdCBQX0FDIHZvbiAzNSB1bmQgdGVpbHJhbmRvbWlzaWVydGVyIERlZmVuZEZ1bmMKKyAgICAgICAgU2V0UHJvcChQX0FDLCAzNSk7CisgICAgICAgIFNldFByb3AoUF9ERUZFTkRfRlVOQywgdGhpc19vYmplY3QoKSk7CisKKyAgICAgICAgaW50IERlZmVuZEZ1bmMoLi4uKSB7CisgICAgICAgICAgcmV0dXJuIDIwICsgcmFuZG9tKDEwKTsgICAgICAgICAgICAgICAgICAvLyBNaXR0ZWx3ZXJ0OiAyMCArIDUKKyAgICAgICAgfQorICAgICAgICAtPiBTZXRQcm9wKFBfRUZGRUNUSVZFX0FDLCA4NSk7ICAgICAgICAgICAgLy8gMzUgKyAyKigyMCs1KSA9IDg1CisKKyAgICAgKiBTb25kZXJmdW5rdGlvbiBpbSBLb250ZXh0IGRlciBLYWVtcGZlcmdpbGRlOgorICAgICAgIEF1Y2ggd2VubiBkZXIgZWlnZW50bGljaGUgQUMtV2VydCBkdXJjaCBrZWluZSBEZWZlbmRGdW5jIG9BZQorICAgICAgIG1vZGlmaXppZXJ0IHdpcmQsIHNpbmQgYWJ3ZWljaGVuZGUgV2VydGUgaW4gUF9FRkZFQ1RJVkVfQUMgekIgaW4gZGVyCisgICAgICAgS2FlbXBmZXJnaWxkZSBmdWVyIFBhcmFkZW4gb2RlciBhZWhubGljaGVzIHNpbm52b2xsLiBNYXhpbWFsd2VydCBpc3QKKyAgICAgICBkYWZ1ZXIgZGVyIGRvcHBlbHRlIFdlcnQgZGVzIEJhc2lzLUFDLVdlcnRlcy4KKworICAgICAvLyAjMyBFaW4gc2Nob24gc2VociBndXRlcyBTY2hpbGQsIHdlbGNoZXMgYmVpIGRlciBTY2hpbGRwYXJhZGUgYWJlcgorICAgICAvLyAgICBub2NoIGJlc3NlciBzY2h1ZXR6ZW4gc29sbC4KKyAgICAgICAgU2V0UHJvcChQX0FSTU9VUl9UWVBFLCBBVF9TSElFTEQpOworICAgICAgICBTZXRQcm9wKFBfQUMsIDM4KTsKKyAgICAgICAgU2V0UHJvcChQX0VGRkVDVElWRV9BQywgNTUpOworCisgICAgIC8vICM0IEVpbiBzZWhyIGxhYmJyaWdlcyBTY2hpbGQgc2NodWV0enQgendhciBnZWdlbiBub3JtYWxlIFNjaGxhZWdlLAorICAgICAvLyAgICBpc3QgenVtIFBhcmllcmVuIGFiZXIgaXJnZW5kd2llIHVuZ2VlaWduZXQgd2VpbCB1bmtvbnRyb2xsaWVyYmFyLgorICAgICAgICBTZXRQcm9wKFBfQVJNT1VSX1RZUEUsIEFUX1NISUVMRCk7CisgICAgICAgIFNldFByb3AoUF9BQywgMzgpOworICAgICAgICBTZXRQcm9wKFBfRUZGRUNUSVZFX0FDLCAyMCk7CisKKyAgICAgKiBXYWZmZW46CisgICAgICAgUF9FRkZFQ1RJVkVfQUMgd2lyZCBpbSBLYWVtcGZlcnNwZWxsYm9vayBhbHMgQm9udXMgZGF6dWdlemFlaGx0ISBEYWhlcgorICAgICAgIHNvbGx0ZW4gZ3V0ZSBQYXJpZXJ3YWZmZW4gYXVjaCBlaW5lbiBuaWVkcmlnZXJlbiBQX1dDLVdlcnQgaGFiZW4uCisgICAgICAgUmVpbmUgUGFyaWVyd2FmZmVuIGR1ZXJmZW4gZGVuIG1heGltYWxlbiBBQy1XZXJ0IHZvbiBTY2hpbGRlbiBhbHMKKyAgICAgICBNYXhpbXVtIGdlc2V0enQgaGFiZW4gLSBkaWUgQmFsYW5jZSBrbGFlcnQgZ2dmLCBvYiBkYXMgYXVjaCBhdWYgZGVuCisgICAgICAgR2lsZGVucGFyaWVyd2VydCBhbndlbmRiYXIgaXN0LgorCisgICAgIC8vICM1IEVpbmUgbWFlc3NpZ2UgSGVsbGViYXJkZS9BeHR3YWZmZSBtaXQgUGFyaWVyaGFrZW4uCisgICAgICAgIFNldFByb3AoUF9XRUFQT05fVFlQRSwgV1RfQVhFKTsKKyAgICAgICAgU2V0UHJvcChQX1dDLCAxMDApOworICAgICAgICBTZXRQcm9wKFBfRUZGRUNUSVZFX0FDLCAyNSk7CisKK1NJRUhFIEFVQ0g6CisgICAgIFdhZmZlbjogICAgIFBfV0MsIFBfVE9UQUxfV0MsIFBfRUZGRUNUSVZFX1dDLCBIaXRGdW5jKCkKKyAgICAgUnVlc3R1bmdlbjogUF9BQywgUF9UT1RBTF9BQywgRGVmZW5kRnVuYygpCisgICAgIEZpbGVzOiAgICAgIC9zdGQvd2VhcG9uLmMsIC9zdGQvd2VhcG9uL2NvbWJhdC5jCisgICAgIEJhbGFuY2U6ICAgIHdhZmZlbiwgcnVlc3R1bmdlbiwgcHJvcGVydGllcywga2FlbXBmZXJib25pCisKKzYuIE5vdiAyMDExIEdsb2luc29uCmRpZmYgLS1naXQgYS9kb2MvcHJvcHMvUF9FRkZFQ1RJVkVfV0MgYi9kb2MvcHJvcHMvUF9FRkZFQ1RJVkVfV0MKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMDMyODYyOQotLS0gL2Rldi9udWxsCisrKyBiL2RvYy9wcm9wcy9QX0VGRkVDVElWRV9XQwpAQCAtMCwwICsxLDg2IEBACitQX0VGRkVDVElWRV9XQworCitOQU1FOgorICAgICBQX0VGRkVDVElWRV9XQyAgICAgImVmZmVjdGl2ZV93YyIKKworREVGSU5JRVJUIElOOgorICAgICA8Y29tYmF0Lmg+CisKK0JFU0NIUkVJQlVORzoKKyAgICAgRGllc2UgUHJvcGVydHkga29tbXQgc293b2hsIGluIFdhZmZlbiBhbHMgYXVjaCBSdWVzdHVuZ2VuLCBkaWUgU2NoYWRlbgorICAgICBtYWNoZW4gc29sbGVuLCB6dW0gRWluc2F0ei4KKworICAgICBGYWxscyBkaWUgU3RhZXJrZSBlaW5lciBXYWZmZSBub2NoIGR1cmNoIGVpbmUgSGl0RnVuYygpIG1vZGlmaXppZXJ0CisgICAgIHdpcmQsIHNvbGx0ZSBoaWVyIGRlciBFZmZla3RpdndlcnQgZGVyIFdhZmZlbmtsYXNzZSB2ZXJtZXJrdCB3ZXJkZW4sCisgICAgIHNvd2VpdCBlciBzaWNoIGFuZ2ViZW4gbGFlc3N0LgorICAgICBEaWVzZSBQcm9wZXJ0eSBkaWVudCB2b3IgYWxsZW0gZGF6dSwgZWluZSBXYWZmZSBtaXQgSGl0RnVuYygpIGtvcnJla3QKKyAgICAgZWluenVzY2hhZXR6ZW4uCisKKyAgICAgSW4gZWluaWdlbiBHaWxkZW4ga29lbm5lbiBSdWVzdHVuZ2VuIGF1Y2ggYWxzIFdhZmZlbiBlaW5nZXNldHp0IHdlcmRlbgorICAgICAoei5CLiBlaW4gUGFhciBTY2h1aGUgenVtIFRyZXRlbikuIEluIGRpZXNlciBQcm9wZXJ0eSBrYW5uIG1hbiBkaWUKKyAgICAgV2FmZmVua2xhc3NlIGVpbnRyYWdlbiwgZGllIGRpZSBSdWVzdHVuZyBiZWkgc29sY2hlbiBBa3Rpb25lbiBhdWZ3ZWlzZW4KKyAgICAgc29sbC4gRGFiZWkgaXN0IG1hbiBhbiBkaWUgdWVibGljaGVuIEJlc2NocmFlbmt1bmdlbiBkZXIgV2FmZmVua2xhc3NlCisgICAgIGdlYnVuZGVuISAocy4gL3N5cy9jb21iYXQuaCkKKyAgICAgRGVyIFJ1ZXN0dW5nIGthbm4gbWFuIGRhbm4gYXVjaCBlaW5lbiBTY2hhZGVuc3R5cCBtaXQgYXVmIGRlbiBXZWcKKyAgICAgZ2ViZW4uCisKK0JFTUVSS1VOR0VOOgorICAgICBEYXMgS2FlbXBmZXJzcGVsbGJvb2sgdmVyd2VuZGV0IGJlaSBSdWVzdHVuZ2VuIFBfQUMsIHdlbm4KKyAgICAgUF9FRkZFQ1RJVkVfV0MgbmljaHQgZ2VzZXR6dCBpc3QuCisKK0JFSVNQSUVMRToKKyAgICAgKiBIaXRGdW5jczoKKyAgICAgICBEZXIgZG9wcGVsdGUgTWl0dGVsd2VydCBkZXIgSGl0RnVuYyB3aXJkIHp1ciBCYXNpcy1XQyBkYXp1YWRkaWVydCwKKyAgICAgICBkYSBzaWNoIGRlciAnQW5ncmlmZnN3ZXJ0ID0gcmFuZG9tKEJhc2lzLVdDKSArIGFic29sdXQoSGl0RnVuYy1XZXJ0KScKKyAgICAgICBiZXJlY2huZXQuCisKKyAgICAgLy8gIzEgV2FmZmUgbWl0IEJhc2lzLVdDIDEyMCB1bmQgcmFuZG9taXNpZXJ0ZXIgSGl0RnVuYworICAgICAgICBTZXRQcm9wKFBfV0MsIDEyMCk7CisgICAgICAgIFNldFByb3AoUF9ISVRfRlVOQywgdGhpc19vYmplY3QoKSk7CisgICAgICAgCisgICAgICAgIGludCBIaXRGdW5jKC4uLikgeworICAgICAgICAgIHJldHVybiByYW5kb20oMzApOyAgICAgICAgICAgICAgICAgICAgICAgLy8gTWl0dGVsd2VydDogMTUKKyAgICAgICAgfQorICAgICAgICAtPiBTZXRQcm9wKFBfRUZGRUNUSVZFX1dDLCAxNTApOyAgICAgICAgICAgLy8gMTIwICsgMioxNSA9IDE1MAorICAgICAKKyAgICAgLy8gIzIgV2FmZmUgbWl0IEJhc2lzLVdDIDEyMCB1bmQgdGVpbHdlaXNlIGFic29sdXRlciBIaXRGdW5jCisgICAgICAgIFNldFByb3AoUF9XQywgMTIwKTsKKyAgICAgICAgU2V0UHJvcChQX0hJVF9GVU5DLCB0aGlzX29iamVjdCgpKTsKKyAgICAgICAKKyAgICAgICAgaW50IEhpdEZ1bmMoLi4uKSB7CisgICAgICAgICAgcmV0dXJuIDMwICsgcmFuZG9tKDEwKTsgICAgICAgICAgICAgICAgICAvLyBNaXR0ZWx3ZXJ0OiAzMCArIDUKKyAgICAgICAgfQorICAgICAgICAtPiBTZXRQcm9wKFBfRUZGRUNUSVZFX1dDLCAxOTApOyAgICAgICAgICAgLy8gMTIwICsgMiooMzArNSkgPSAxOTAKKworICAgICAqIFJ1ZXN0dW5nZW4gKHpCIEdpbGRlbm51dHp1bmcpOgorICAgICAgIERlciBNYXhpbWFsd2VydCBmdWVyIGRpZSBQX0VGRkVDVElWRV9XQyBiZWkgS2FlbXBmZXJuIGlzdCBkZXIgamV3ZWlscworICAgICAgIGRvcHBlbHRlIG1heGltYWxlIFBfQUMtV2VydC4gQW5nYWJlIGVpbmVzIFNjaGFkZW5zdHlwcyBpc3Qgc2lubnZvbGwuCisKKyAgICAgLy8gIzMgRWluIHBhYXIgU2NodWhlLCBtaXQgbWF4aW1hbGVtIFNjaGxhZy0vU2FldXJlc2NoYWRlbi4KKyAgICAgICAgU2V0UHJvcChQX0FSTU9VUl9UWVBFLCBBVF9CT09UKTsKKyAgICAgICAgU2V0UHJvcChQX0FDLCAyKTsKKyAgICAgICAgU2V0UHJvcChQX0RBTV9UWVBFLCAoe0RUX0JMVURHRU9OLERUX0FDSUR9KSk7CisgICAgICAgIC0+IFNldFByb3AoUF9FRkZFQ1RJVkVfV0MsIDEyKTsgIC8vIGhvZWNoc3Rtb2VnbGljaGVyIFdlcnQgYmVpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIFNjaHVoZW4sIGRhIGRlcmVuIG1heC4gUF9BQyA9IDYKKyAgICAgLy8gYWVxdWl2YWxlbnQgdW5kIHp1a3VuZnRzc2ljaGVyOgorICAgICAgICAtPiBTZXRQcm9wKFBfRUZGRUNUSVZFX1dDLCAyICogVkFMSURfQVJNT1VSX0NMQVNTW0FUX0JPT1RdKTsKKworICAgICAvLyAjNCBFaW4gU2NoaWxkIG1pdCBzcGl0emVtIERvcm4uIChTdGljaHNjaGFkZW4gYmVpbSBTY2hpbGRzdG9zcy4pCisgICAgICAgIFNldFByb3AoUF9BUk1PVVJfVFlQRSwgQVRfU0hJRUxEKTsKKyAgICAgICAgU2V0UHJvcChQX0FDLCA1KTsKKyAgICAgICAgU2V0UHJvcChQX0RBTV9UWVBFLCAoe0RUX1BJRVJDRX0pKTsKKyAgICAgICAgU2V0UHJvcChQX0VGRkVDVElWRV9XQywgNTUpOworCisgICAgIC8vICM1IEVpbiBHdW1taXNjaGlsZCBpc3Qgc2NobGVjaHQgZnVlciBBbmdyaWZmZS4gQk9JTkchCisgICAgICAgIFNldFByb3AoUF9BUk1PVVJfVFlQRSwgQVRfU0hJRUxEKTsKKyAgICAgICAgU2V0UHJvcChQX0FDLCAzMCk7CisgICAgICAgIFNldFByb3AoUF9EQU1fVFlQRSwgKHtEVF9CTFVER0VPTn0pKTsKKyAgICAgICAgU2V0UHJvcChQX0VGRkVDVElWRV9XQywgMTApOworCitTSUVIRSBBVUNIOgorICAgICBXYWZmZW46ICAgICBQX1dDLCBQX1RPVEFMX1dDLCBIaXRGdW5jKCkKKyAgICAgUnVlc3R1bmdlbjogUF9BQywgUF9UT1RBTF9BQywgUF9FRkZFQ1RJVkVfQUMsIERlZmVuZEZ1bmMoKQorICAgICBGaWxlczogICAgICAvc3RkL3dlYXBvbi5jLCAvc3RkL3dlYXBvbi9jb21iYXQuYworICAgICBCYWxhbmNlOiAgICB3YWZmZW4sIHJ1ZXN0dW5nZW4sIHByb3BlcnRpZXMsIGthZW1wZmVyYm9uaQorCis2LiBOb3YgMjAxMSBHbG9pbnNvbgpkaWZmIC0tZ2l0IGEvZG9jL3Byb3BzL1BfRU1QVFlfTVNHIGIvZG9jL3Byb3BzL1BfRU1QVFlfTVNHCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjcyNDhkOGUKLS0tIC9kZXYvbnVsbAorKysgYi9kb2MvcHJvcHMvUF9FTVBUWV9NU0cKQEAgLTAsMCArMSwyNCBAQAorTkFNRToKKyAgICAgUF9FTVBUWV9NU0cgICAgICAgICAgICAgICAgICAgInN0ZF9mb29kX2VhdGVyX21zZyIKKworREVGSU5JRVJUIElOOgorICAgICA8c3lzL2Zvb2QuaD4KKworQkVTQ0hSRUlCVU5HOgorICAgICBNZWxkdW5nIGFuIGRlbiBLb25zdW1lbnRlbiwgd2VubiB2ZXJzdWNodCB3aXJkLCBlaW5lIGF1ZmdlYnJhdWNodGUgU3BlaXNlCisgICAgIChhbHNvIGVpbmVuIGxlZXJlbiBCZWhhZWx0ZXIpIHp1IGtvbnN1bWllcmVuLgorICAgICAKK0JFTUVSS1VOR0VOOgorICAgICBEaWVzZSBNZWxkdW5nIHdpcmQgdm9uIHJlcGxhY2VfcGVyc29uYWwgbWl0IGRlbiBBcmd1bWVudGVuOgorICAgICAxLiBTcGVpc2UgKGFsc28gZGVuIGxlZXJlbiBCZWhhZWx0ZXIpCisgICAgIDIuIEtvbnN1bWVudAorICAgICB2ZXJhcmJlaXRldCwga2FubiBhbHMgZW50c3ByZWNoZW5kZSBQbGF0emhhbHRlciBlbnRoYWx0ZW4KKyAgICAgCitERUZBVUxUOgorICAgICAiQFdFUjEgaXN0IGJlcmVpdHMgbGVlci4iCisKK1NJRUhFIEFVQ0g6CisgICAgIC9zdGQvZm9vZC5jLCB3aXovZm9vZCwgcmVwbGFjZV9wZXJzb25hbAorCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KK0xhc3QgbW9kaWZpZWQ6IFRodSBPY3QgMjggMTI6MTU6MDAgMjAxMCBieSBDYWxkcmEKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9kb2MvcHJvcHMvUF9FTVBUWV9QUk9QUyBiL2RvYy9wcm9wcy9QX0VNUFRZX1BST1BTCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmE4MTU2ZDcKLS0tIC9kZXYvbnVsbAorKysgYi9kb2MvcHJvcHMvUF9FTVBUWV9QUk9QUwpAQCAtMCwwICsxLDMzIEBACitOQU1FOgorICAgICBQX0VNUFRZX1BST1BTICAgICAgICAgICAgICAgICAic3RkX2Zvb2RfZW1wdHlfcHJvcHMiCisKK0RFRklOSUVSVCBJTjoKKyAgICAgPHN5cy9mb29kLmg+CisKK0JFU0NIUkVJQlVORzoKKyAgICAgTWFwcGluZyBtaXQgUHJvcGVydGllcyBmdWVyIGRlbiBsZWVyZW4gQmVoYWVsdGVyLCBkZXIgdWVicmlnIGJsZWlidCx3ZW5uCisgICAgIGVpbmUgU3BlaXNlIGF1ZmdlYnJhdWNodCBpc3QuIEFsbGUgZW50aGFsdGVuZW4gUHJvcGVydGllcyB3ZXJkZW4gZ2VzZXR6dCwKKyAgICAgd2VubiBrZWluZSBQb3J0aW9uZW4gbWVociB2b3JoYW5kZW4gc2luZC4KKyAgICAgQmVyZWl0cyBpbiBkaWVzZW4gUHJvcGVydGllcyBlaW5nZXRyYWdlbmUgV2VydGUgd2VyZGVuIHVlYmVyc2NocmllYmVuIQorICAgICBXZW5uIGRpZXNlIFByb3BlcnR5IG5pY2h0IGdlc2V0enQgaXN0LCB3aXJkIGRpZSBTcGVpc2UgemVyc3RvZXJ0LCB3ZW5uCisgICAgIGFsbGUgUG9ydGlvbmVuIGF1ZmdlYnJhdWNodCBpc3QgLSBlcyBibGVpYnQgYWxzbyBrZWluIEJlaGFlbHRlciB6dXJ1ZWNrLgorICAgICBBY2h0dW5nOiBFcyB3ZXJkZW4ga2VpbmUgY2xvc3VyZXMgaW4gZGllc2VtIE1hcHBpbmcgdW50ZXJzdHVldHp0IQorICAgICAKK0JFTUVSS1VOR0VOOgorICAgICBCZWkgZGVyIEFiZnJhZ2Ugdm9uIFBfVkFMVUUgdW5kIFBfV0VJR0hUIGluIGRlciBTcGVpc2UsIHdlcmRlbiBkaWUgZGF6dQorICAgICBpbiBQX0VNUFRZX1BST1BTIGdlc3BlaWNoZXJ0ZW4gV2VydGUgdmVyd2VuZGV0LCB1bSBkYXMgR2V3aWNodC9XZXJ0IGRlcworICAgICBsZWVyZW4gQmVoYWVsdGVycyB6dW0gR2VzYW10d2VydCBkZXIgU3BlaXNlIHp1IGFkZGllcmVuLgorICAgICBNYW4ga2FubiBhbGxlIFByb3BlcnRpZXMgaW4gZGllc2VzIE1hcHBpbmcgZWludHJhZ2VuLCBkaWUgc2ljaCBpbiBkZXIKKyAgICAgU3BlaXNlIHBlciBTZXRQcm9wIHNldHplbiBsYXNzZW4uIFp1c2FldHpsaWNoIGthbm4gbWFuIEFycmF5cyBpbiBQX0lEUworICAgICB1bmQgUF9BREpFQ1RJVkVTIHNwZWljaGVybiwgZGllIHBlciBBZGQtTWV0aG9kZSBpbiBkZXIgU3BlaXNlCisgICAgIGhpbnp1Z2VmdWVndCB3ZXJkZW4sIG5hY2hkZW0gZGllIGltIGNyZWF0ZSgpIGRlciBTcGVpc2UgaGluenVnZWZ1ZWd0ZW4KKyAgICAgSWRzL0FkamVjdGl2ZXMgZG9ydCBlbnRmZXJudCB3dXJkZW4uCisgICAgIAorQkVJU1BJRUxFOgorICAgICBCZWlzcGllbGUgenVyIFZlcndlbmR1bmcgZmluZGV0IG1hbiB1bnRlciAvZG9jL2JlaXNwaWVsZS9mb29kCisKK1NJRUhFIEFVQ0g6CisgICAgIC9zdGQvZm9vZC5jLCB3aXovZm9vZAorCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KK0xhc3QgbW9kaWZpZWQ6IFRodSBPY3QgMjggMTI6MTU6MDAgMjAxMCBieSBDYWxkcmEKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9kb2MvcHJvcHMvUF9FTkFCTEVfSU5fQVRUQUNLX09VVCBiL2RvYy9wcm9wcy9QX0VOQUJMRV9JTl9BVFRBQ0tfT1VUCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmQ2MGE4MDcKLS0tIC9kZXYvbnVsbAorKysgYi9kb2MvcHJvcHMvUF9FTkFCTEVfSU5fQVRUQUNLX09VVApAQCAtMCwwICsxLDMzIEBACitOQU1FOgorCVBfRU5BQkxFX0lOX0FUVEFDS19PVVQJCSJlbmFibGVfaW5fYXR0YWNrX291dCIKKworREVGSU5JRVJUIElOOgorCS9zeXMvY29tYmF0LmgKKworQkVTQ0hSRUlCVU5HOgorCU5vcm1hbGVyd2Vpc2Ugd2lyZCBkaWUgYmVrYW5udGUgVGFrdGlrIFJlaW4tQW5ncmlmZi1SYXVzCisJc3RhbmRhcmRtYWVzc2lnIHVudGVyYnVuZGVuLCBkYW1pdCBOUENzIGF1Y2ggZWluZSBDaGFuY2UgaGFiZW4sIHNpY2gKKwl6dSB2ZXJ0ZWlkaWdlbi4gSGllcnp1IHdpcmQgZGVyIFNjaGFkZW4gaW5uZXJoYWxiIGRvX2RhbWFnZSgpCisJZHVyY2ggZWluZW4gV2VydCBnZXRlaWx0LCBkZXIgc2ljaCBhdXMgZGVyIFZlcndlaWxkYXVlciBkZXMKKwlBbmdyZWlmZXJzIGltIFJhdW0gZXJnaWJ0IChiaXMgenUgMyBTZWt1bmRlbikuCisJRGEgbWFuY2hlIE5QQ3Mgc28ga29uemVwdGlvbmllcnQgd3VyZGVuLCBkYXNzIG1hbiBzaWUgbnVyIG1pdCBkZXIKKwllcndhZWhudGVuIFRha3RpayB0b2V0ZW4ga2Fubiwga2FubiBtYW4gc2llIGF1Y2ggZXhwbGl6aXQgZXJsYXViZW4KKwkobWFuY2hlIE5QQ3MgdmVyd2VuZGVuIGF1Y2ggZWlnZW5lIE1ldGhvZGVuLCBkaWVzZSBUYWt0aWsgenUKKwkgdmVyYmlldGVuLCB1bmQgc2llIHdhZXJlIGRhbm4gZG9wcGVsdCBhYmdlZmFuZ2VuKS4KKwlIaWVyenUgc2V0enQgbWFuIGVpbmZhY2ggZGllIFByb3BlcnR5IFBfRU5BQkxFX0lOX0FUVEFDS19PVVQgaW0gTlBDLgorCitCRUlTUElFTDoKKwlEYXMgZm9sZ2VuZGUgQmVpc3BpZWwgZXJsYXVidCBlaW5mYWNoIG1hbCBkaWUgYW5nZXNwcm9jaGVuZSBUYWt0aWs6CisJICB2b2lkIGNyZWF0ZSgpCisJICB7IC4uLgorCSAgICBTZXRQcm9wKFBfRU5BQkxFX0lOX0FUVEFDS19PVVQsMSk7CisJICAgIC4uLgorCSAgfQorCUpldHp0IGthbm4gbWFuIGRlbiBOUEMgbWl0IFJlaW4tQW5ncmlmZi1SYXVzIGF1Y2ggd2lya3VuZ3N2b2xsCisJYmVrYWVtcGZlbi4KKworU0lFSEUgQVVDSDoKKwlkb19kYW1hZ2UoKSwgUF9MQVNUX01PVkUsIC9zdGQvbGl2aW5nL2xpZmUuYworCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorTGFzdCBtb2RpZmllZDogU2F0IEphbiAzMCAxMjo1MzowMCAxOTk5IGJ5IFBhdHJ5bgpkaWZmIC0tZ2l0IGEvZG9jL3Byb3BzL1BfRU5FTVlfREFNQUdFIGIvZG9jL3Byb3BzL1BfRU5FTVlfREFNQUdFCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjIxNjMzOWQKLS0tIC9kZXYvbnVsbAorKysgYi9kb2MvcHJvcHMvUF9FTkVNWV9EQU1BR0UKQEAgLTAsMCArMSwzMSBAQAorUF9FTkVNWV9EQU1BR0UKKworTkFNRToKKyAgICAgUF9FTkVNWV9EQU1BR0UgImVuZW15X2RhbWFnZSIKKworREVGSU5JRVJUIElOOgorICAgICA8bGl2aW5nL2xpZmUuaD4KKworQkVTQ0hSRUlCVU5HOgorICAgICBJbiBkaWVzZXIgUHJvcGVydHkgaXN0IHZlcm1lcmt0LCB3ZWxjaGVzIFdlc2VuIGRpZXNlbSBXZXNlbiB3aWV2aWVsCisgICAgIFNjaGFkZW4genVnZWZ1ZWd0IGhhdC4KKworICAgICBEaWUgUHJvcGVydHkgZW50aGFlbHQgZWluIE1hcHBpbmcsIGRhcyBkZW4gQW5ncmVpZmVybiBkZW4KKyAgICAgZXJyZWNodGVuIFNjaGFkZW4genVvcmRuZXQ6CisgICAgIChbIDxvYm5hbWUxPjogPGRhbWFnZT47IDxvd25lcj4sIC4uLiBdKQorCisgICAgICAgPG9ibmFtZTE+OiBOYW1lIGRlcyBPYmpla3RzLCBkYXMgZGVuIFNjaGFkZW4gdmVydXJzYWNodCBoYXQgKHN0cmluZyksCisgICAgICAgICAgICAgICAgICB6LkIuICIvbWFnaWVyOnplc3N0cmEiCisgICAgICAgPGRhbWFnZT4gOiBTY2hhZGVuc21lbmdlIChpbnQpCisgICAgICAgPG93bmVyPiAgOiB3ZW5uIGRhcyBzY2hhZGVuc3ZlcnVyc2FjaGVuZGUgV2VzZW4gZWluIE5QQyB3YXIvaXN0LAorICAgICAgICAgICAgICAgICAgd2VsY2hlcyBQX0hFTFBFUl9OUEMgZ2VzZXR6dCBoYXR0ZSB1bmQgc29taXQgZWluZW0gU3BpZWxlcgorICAgICAgICAgICAgICAgICAgaGlsZnQsIHN0ZWh0IGhpZXIgZGFzIE9iamVrdCBkZXMgamV3ZWlsaWdlbiBTcGllbGVycworICAgICAgICAgICAgICAgICAgKG9iamVjdCkKKworQkVNRVJLVU5HRU46CisgICAgIERpZXNlIFByb3BlcnR5IGxhZXNzdCBzaWNoIG51ciBhYmZyYWdlbiEKKworU0lFSEUgQVVDSDoKKyAgICAgUF9IRUxQRVJfTlBDCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisyNi4xMC4yMDA5LCBaZXNzdHJhCmRpZmYgLS1naXQgYS9kb2MvcHJvcHMvUF9FTkVNWV9ERUFUSF9TRVFVRU5DRSBiL2RvYy9wcm9wcy9QX0VORU1ZX0RFQVRIX1NFUVVFTkNFCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjI2MGQzMjUKLS0tIC9kZXYvbnVsbAorKysgYi9kb2MvcHJvcHMvUF9FTkVNWV9ERUFUSF9TRVFVRU5DRQpAQCAtMCwwICsxLDQ0IEBACitQX0VORU1ZX0RFQVRIX1NFUVVFTkNFCisKK05BTUU6CisgICAgIFBfRU5FTVlfREVBVEhfU0VRVUVOQ0UgICAgICAgICJlbmVteV9kZWF0aF9zZXF1ZW5jZSIKKworREVGSU5JRVJUIElOOgorICAgICAvc3lzL2xpdmluZy9jb21iYXQuaAorCitCRVNDSFJFSUJVTkc6CisgICAgIFVlYmVyIGRpZXNlIFByb3BlcnR5IGthbm4gRWluZmx1c3MgYXVmIGRpZSBUb2Rlc3NlcXVlbnogZWluZXMgZ2V0b2V0ZW4KKyAgICAgU3BpZWxlcnMgZ2Vub21tZW4gd2VyZGVuLiBTaWUgbXVzcyBpbSB0b2V0ZW5kZW4gT2JqZWt0LCBkLmguIGRlbQorICAgICBPYmpla3Qgd2VsY2hlcyBkaWUoKS9kb19kYW1hZ2UoKS9EZWZlbmQoKSBpbSBTcGllbGVyIGdlcnVmZW4gaGF0LAorICAgICBnZXNldHp0IHNlaW4uCisKKyAgICAgRXMgZ2lidCBmb2xnZW5kZSBndWVsdGlnZSBXZXJ0ZToKKyAgICAgLSBzdHJpbmc6IFBmYWQgenUgZWluZXIgZWlnZW5lbiBUb2Rlc3NlcXVlbnogaW0gZ3VlbHRpZ2VuIEZvcm1hdAorICAgICAtIG1peGVkKiAgRWluZSBUb2Rlc3NlcXVlbnogaW0gRm9ybWF0IGRlcyBUb2Rlc3JhdW1lczoKKyAgICAgICAgICAgICAgICh7PGludCBnZXNhbXRsYWVuZ2U+LAorICAgICAgICAgICAgICAgICAoWzxpbnQgaW5kZXgxPjogPHN0cmluZyB1bWdlYnJvY2hlbmUgTWVsZHVuZzE+LAorICAgICAgICAgICAgICAgICAgIDxpbnQgaW5kZXgyPjogPHN0cmluZyB1bWdlYnJvY2hlbmUgTWVsZHVuZzI+LAorICAgICAgICAgICAgICAgICAgIC4uLl0pCisgICAgICAgICAgICAgICB9KQorICAgICAtIG1hcHBpbmcgSW4gZGllIFN0YW5kYXJkLUxhcnMtVG9kZXNzZXF1ZW56IGVpbnp1ZnVlZ2VuZGUgWmVpbGVuOgorICAgICAgICAgICAgICAgKFs8aW50IHplaXRpbmRleD46IDxzdHJpbmcgdW1nZWJyb2NoZW5lciBUZXh0Pl0pCisKK0JFSVNQSUVMRToKKyAgICAgLy8gUGZhZCB6dSBlaW5lciBlaWdlbmVuIERTUQorICAgICBTZXRQcm9wKFBfRU5FTVlfREVBVEhfU0VRVUVOQ0UsICAiLi4uL3Bhc3NlbmRlX2RzcS50eHQiKTsKKworICAgICAvLyBlaWdlbmUgRFNRIGltIFRvZGVzcmF1bWZvcm1hdDoKKyAgICAgU2V0UHJvcChQX0VORU1ZX0RFQVRIX1NFUVVFTkNFLAorICAgICAgICAgICAgICh7IDIsIChbMTogIkRVIExFUk5TVCBBVVMgREVJTkVNIEZFSExFUi5cbiJdKX0pKTsKKworICAgICAvLyBFaW5mdWVnZW4gZWluZXIgTWVsZHVuZyAoZGVzIE5QQ3MpIGluIGRpZSBTdGFuZGFyZC1Ub2Rlc3NlcXVlbnoKKyAgICAgU2V0UHJvcChQX0VORU1ZX0RFQVRIX1NFUVVFTkNFLAorICAgICAgICAgICAgIChbNTogIkR1IGhvZXJzdCAiK25hbWUoV0VOKSsiIGhvZWhuaXNjaCBraWNoZXJuLlxuIl0pKTsKKworU0lFSEUgQVVDSDoKKyAgICAgVG9kOiAgICAgICAgICAgIGRpZShMKQorICAgICBUb2Rlc21lbGR1bmdlbjogUF9LSUxMX05BTUUsIFBfS0lMTF9NU0csIFBfRElFX01TRywgUF9NVVJERVJfTVNHCisgICAgICAgICAgICAgICAgICAgICBQX1pBUF9NU0csIFBfTkVYVF9ERUFUSF9TRVFVRU5DRQorICAgICBTb25zdGlnZXM6ICAgICAgUF9DT1JQU0UsIFBfTk9DT1JQU0UsIC9yb29tL2RlYXRoL2RlYXRoX3Jvb20uYworCisxMC4gTm92IDIwMTEgR2xvaW5zb24KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9kb2MvcHJvcHMvUF9FTlRFUkNNRFMgYi9kb2MvcHJvcHMvUF9FTlRFUkNNRFMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMGY3ZTNkOQotLS0gL2Rldi9udWxsCisrKyBiL2RvYy9wcm9wcy9QX0VOVEVSQ01EUwpAQCAtMCwwICsxLDMzIEBACitOQU1FOgorICAgIFBfRU5URVJDTURTICAgICAgICAgICAgICAgICAgICJsZWF2ZWNtZHMiICAgICAgICAgICAgICAgICAgIAorCitERUZJTklFUlQgSU46CisgICAgL3N5cy90cmFuc3BvcnQuaAorCitCRVNDSFJFSUJVTkc6CisgICAgRWluIEFycmF5IG1pdCBCZWZlaGxlbiwgZGllIHp1bSBCZXRyZXRlbiBkZXMgVHJhbnNwb3J0ZXJzIGZ1ZWhyZW4uIAorCitCRUlTUElFTDoKKyAgICBTZXRQcm9wKFBfRU5URVJDTURTLCh7ICJiZXRyZXRlIiwiYmV0cml0dCIgfSkgKTsKKworICAgIEdpYnQgZGVyIFNwaWVsZXIgbnVuICdiZXRyZXRlIHh4eCcgZWluLCBzbyBzb3JndCAvc3RkL3RyYW5zcG9ydC5jIAorICAgIGRhZnVlciwgZGFzIGRlciBTcGllbGVyIGF1Y2ggYXVmIG9kZXIgaW4gZGVuIFRyYW5zcG9ydGVyIGJld2VndCAKKyAgICB3aXJkLiBWb3JhdXNnZXNldHp0IG5hdHVlcmxpY2gsIGVyIGlzdCBhbiBlaW5lbSBIYWx0ZXB1bmt0IGFuZ2UtCisgICAgbGFuZ3QgdW5kIGVzIGlzdCBnZW51ZWdlbmQgUGxhdHogZG9ydC4KKworQkVNRVJLVU5HRU46CisgICAgVW0gL3N0ZC90cmFuc3BvcnQuYyBuaWNodCBhdWZ6dWJsYWVoZW4sIHdlcmRlbiB3ZWl0ZXJlIEFyZ3VtZW50ZSB3aWUKKyAgICBldHdhICdiZXRyZXRlIGRhc3xkaWV8ZGVuIHh4eCcgX25pY2h0XyB1bnRlcnN0dWV0enQhCisKKyAgICBIaWVyIG11c3MgZGVyIHZlcmFudHdvcnRsaWNoZSBNYWdpZXIgc2Nob24gZWluZSBlaWdlbmUgTG9lc3VuZyBmaW5kZW4KKyAgICB1bmQgaW4gc2VpbmVuIFRyYW5zcG9ydGVyIHNjaHJlaWJlbi4KKworICAgIFNvbGxlbiBLb21tYW5kb3MgenVtIEJldHJldGVuIFVORCBWZXJsYXNzZW4gZWluZXMgVHJhbnNwb3J0ZXJzIHZlci0KKyAgICB3ZW5kZXQgd2VyZGVuIGtvZW5uZW4sIG11ZXNzZW4gZGllc2UgaW4gUF9UUkFWRUxfQ01EUyBnZXNldHp0IHdlcmRlbi4KKworU0lFSEUgQVVDSDoKKyAgICBQX0xFQVZFRkFJTCwgUF9FTlRFUkZBSUwsIFBfTEVBVkVDTURTLCBQX1RSQVZFTF9DTURTLCB0cmFuc3BvcnRlciwKKworTEVUWlRFIEFFTkRFUlVORzoKKyAgICBEb24sIDI0LjAxLjIwMDIsIDEwOjE1OjA3aCB2b24gVGlsbHkKKyAgICAKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9kb2MvcHJvcHMvUF9FTlRFUkZBSUwgYi9kb2MvcHJvcHMvUF9FTlRFUkZBSUwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMmVjZDFlNgotLS0gL2Rldi9udWxsCisrKyBiL2RvYy9wcm9wcy9QX0VOVEVSRkFJTApAQCAtMCwwICsxLDI0IEBACitOQU1FOgorICAgIFBfRU5URVJGQUlMICAgICAgICAgICAgICAgICAgICJlbnRlcmZhaWwiICAgICAgICAgICAgICAgICAgIAorCitERUZJTklFUlQgSU46CisgICAgL3N5cy90cmFuc3BvcnQuaAorCitCRVNDSFJFSUJVTkc6CisgICAgIE1lbGR1bmcgYW4gZGVuIFNwaWVsZXIsIHdlbm4gZXIgZWluZW4gdm9sbGVuIFRyYW5zcG9ydGVyIGJldHJldGVuIAorICAgICB3aWxsLiBJc3QgZGllIFByb3BlcnRpZSBlaW4gQXJyYXksIHNvIHdpcmQgZGFzIGVyc3RlIEVsZW1lbnQgYWxzCisgICAgIE1lbGR1bmcgYW4gZGVuIFNwaWVsZXIsIGRhcyB6d2VpdGUgYWxzIE1lbGR1bmcgYW4gZGllIE1pdHNwaWVsZXIgCisgICAgIGltIFJhdW0gZ2VzY2hpY2t0LgorCitCRUlTUElFTDoKKyAgICAgU2V0UHJvcChQX0VOVEVSRkFJTCwiRG9ydCBpc3Qgd2lya2xpY2gga2VpbiBQbGF0eiBtZWhyIGZ1ZXIgRGljaCIpOworICAgICAKKyAgICAgU2V0UHJvcChQX0VOVEVSRkFJTCwgKHsgIkRvcnQgaXN0IHdpcmtsaWNoIGtlaW4gUGxhdHogbWVociBmdWVyIERpY2giLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAidmVyc3VjaHQsIGF1ZiBkaWUgS3V0c2NoZSB6dSBrbGV0dGVybiwgd2lyZCAiCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgKyJhYmVyIHdpZWRlciBoZXJ1bnRlcmdlc2NoaWNrdCIgfSkgKTsKKworU0lFSEUgQVVDSDoKKyAgICAgUF9FTlRFUk1TRywgUF9MRUFWRUZBSUwsIFBfTEVBVkVNU0csIHRyYW5zcG9ydGVyCisKK0xFVFpURSBBRU5ERVJVTkc6CisgICAgRG9uLCAyNC4wMS4yMDAyLCAxMDoxNTowN2ggdm9uIFRpbGx5CmRpZmYgLS1naXQgYS9kb2MvcHJvcHMvUF9FTlRFUk1TRyBiL2RvYy9wcm9wcy9QX0VOVEVSTVNHCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjJhMjEyOGUKLS0tIC9kZXYvbnVsbAorKysgYi9kb2MvcHJvcHMvUF9FTlRFUk1TRwpAQCAtMCwwICsxLDE4IEBACitOQU1FOgorICAgIFBfRU5URVJNU0cgICAgICAgICAgICAgICAgICAgICJlbnRlcm1zZyIgICAgICAgICAgICAgICAgICAgIAorCitERUZJTklFUlQgSU46CisgICAgL3N5cy90cmFuc3BvcnQuaAorCitCRVNDSFJFSUJVTkc6CisgICAgIEFycmF5IG1pdCB6d2VpIE1lbGR1bmdlbiwgZWluZSBmdWVyIGRlbiBSYXVtLCBkZW4gZGVyIFNwaWVsZXIKKyAgICAgdmVybGFlc3N0LCB1bmQgZWluZSBmdWVyIGRlbiBUcmFuc3BvcnRlciwgaW4gZGVuIGVyIGdlaHQuCisKK0JFSVNQSUVMOgorICAgICBTZXRQcm9wKFBfRU5URVJNU0csICh7ICJrbGV0dGVydCBpbiBkaWUgS3V0c2NoZSIsImtsZXR0ZXJ0IGhlcmVpbiIgfSkgKTsKKworU0lFSEUgQVVDSDoKKyAgICAgUF9FTlRFUkZBSUwsIFBfTEVBVkVGQUlMLCBQX0xFQVZFTVNHLCB0cmFuc3BvcnRlcgorCitMRVRaVEVSIEFFTkRFUlVORzoKKyAgICBEb24sIDI0LjAxLjIwMDIsIDEwOjE1OjA3aCB2b24gVGlsbHkKZGlmZiAtLWdpdCBhL2RvYy9wcm9wcy9QX0VOVl9NU0cgYi9kb2MvcHJvcHMvUF9FTlZfTVNHCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmIzOWUyYzEKLS0tIC9kZXYvbnVsbAorKysgYi9kb2MvcHJvcHMvUF9FTlZfTVNHCkBAIC0wLDAgKzEsMjYgQEAKK05BTUU6CisgICAgIFBfRU5WX01TRyAgICAgICAgICAgICAgICAgICAgICJzdGRfZm9vZF9lbnZfbXNnIgorCitERUZJTklFUlQgSU46CisgICAgIDxzeXMvZm9vZC5oPgorCitCRVNDSFJFSUJVTkc6CisgICAgIE1lbGR1bmcgYW4gZGVuIEtvbnN1bWVudGVuLCB3ZW5uIGVpbmUgU3BlaXNlIGtvbnN1bWllcnQgd2VyZGVuIHNvbGwsCisgICAgIGRpZSBuaWNodCBpbSBlaWdlbmVuIEludmVudG9yeSBsaWVndC4KKyAgICAgV2VubiBkaWVzZSBQcm9wZXJ0eSBsZWVyIGlzdCwga2FubiBtYW4gZGllIFNwZWlzZSBkYW5uIHNvZ2FyCisgICAgIGtvbnN1bWllcmVuIQorICAgICAKK0JFTUVSS1VOR0VOOgorICAgICBEaWVzZSBNZWxkdW5nIHdpcmQgdm9uIHJlcGxhY2VfcGVyc29uYWwgbWl0IGRlbiBBcmd1bWVudGVuOgorICAgICAxLiBTcGVpc2UKKyAgICAgMi4gS29uc3VtZW50CisgICAgIHZlcmFyYmVpdGV0LCBrYW5uIGFscyBlbnRzcHJlY2hlbmRlIFBsYXR6aGFsdGVyIGVudGhhbHRlbgorICAgICAKK0RFRkFVTFQ6CisgICAgICJWaWVsbGVpY2h0IHNvbGx0ZXN0IER1IEBXRU4xIHZvcmhlciBuZWhtZW4uIgorCitTSUVIRSBBVUNIOgorICAgICB3aXovZm9vZCwgcmVwbGFjZV9wZXJzb25hbAorCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KK0xhc3QgbW9kaWZpZWQ6IFRodSBPY3QgMjggMTI6MTU6MDAgMjAxMCBieSBDYWxkcmEKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9kb2MvcHJvcHMvUF9FTlZfVE9PX0hFQVZZX01TRyBiL2RvYy9wcm9wcy9QX0VOVl9UT09fSEVBVllfTVNHCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjhjNzNhYzEKLS0tIC9kZXYvbnVsbAorKysgYi9kb2MvcHJvcHMvUF9FTlZfVE9PX0hFQVZZX01TRwpAQCAtMCwwICsxLDMxIEBACitOQU1FOgorICAgIFBfRU5WX1RPT19IRUFWWV9NU0cgICAgICAgICAgICAgICAgICAgICAgImVudl90b29faGVhdnlfbXNnIiAgICAgICAgICAgICAgICAgICAgICAKKworREVGSU5JRVJUIElOOgorICAgIC9zeXMvdGhpbmcvbW92aW5nLmgKKworQkVTQ0hSRUlCVU5HOgorICAgICBEaWVzZSBQcm9wZXJ0eSBlbnRoYWVsdCBlaW5lIE1lbGR1bmcsIGRpZSBhdXNnZWdlYmVuIHdpcmQsIHdlbm4gamVtYW5kCisgICAgIHZlcnN1Y2h0LCBlaW4gT2JqZWt0IGluIGVpbmVuIEJlaGFlbHRlciB6dSBsZWdlbiwgdW5kIGRpZXNlciBkYW5uIGZ1ZXIKKyAgICAgc2VpbiBFbnZpcm9ubWVudCB6dSBzY2h3ZXIgd2lyZC4KKyAgICAgRGllIFByb3BlcnR5IGlzdCBpbSBCZWhhZWx0ZXIgenUgc2V0emVuLgorICAgICBJc3QgZGllc2UgUHJvcGVydHkgbmljaHQgb2RlciBhdWYgZWluZW4gbmljaHQtU3RyaW5nLVdlcnQgZ2VzZXR6dCwKKyAgICAgc28gd2lyZCBkaWUgU3RhbmRhcmRtZWxkdW5nIGF1c2dlZ2ViZW4uCisgICAgICgiPEJlaGFlbHRlcj4gd3VlcmRlIGRpciBkYW5uIHp1IHNjaHdlciB3ZXJkZW4uIikKKyAgICAgRGVyIFN0cmluZyBpbiBkZXIgUHJvcGVydHkgd2lyZCBub2NoIGR1cmNoIHJlcGxhY2VfcGVyc29uYWwoKQorICAgICB2ZXJhcmJlaXRldCwgZGFzIHp1IGJld2VnZW5kZSBPYmpla3Qgd2lyZCBhbHMgZXJzdGVzLCBkZXIgQmVoYWVsdGVyIGFscworICAgICB6d2VpdGVzIE9iamVrdCBhbmdlZ2ViZW4uIERhbmFjaCB3aXJkIGRlciBTdHJpbmcgYXVmIDc4IFplaWNoZW4KKyAgICAgdW1nZWJyb2NoZW4uCisgICAgIERhcyBTZXR6ZW4gZWluZXMgbGVlcmVuIFN0cmluZ3MgdW50ZXJkcnVlY2t0IGRpZSBBdXNnYWJlIGVpbmVyIE1lbGR1bmcKKyAgICAgZ2Fuei4KKworQkVJU1BJRUxFOgorICAgICBTZXRQcm9wKFBfRU5WX1RPT19IRUFWWV9NU0csICJNaXQgQFdFTTEga29lbm50ZXN0IGR1IGRlbiBSdWNrc2FjayBuaWNodCIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiIG1laHIgdHJhZ2VuLiIpOworCitTSUVIRSBBVUNIOgorICAgICBBZWhubGljaGVzOiBQX1RPT19IRUFWWV9NU0csIFBfVE9PX01BTllfTVNHLCBQX05PSU5TRVJUX01TRywKKyAgICAgICAgICAgICAgICAgUF9OT0xFQVZFX01TRywgUF9OT0RST1AsIFBfTk9HRVQgCisgICAgIEVyZm9sZzogICAgIFBfUElDS19NU0csIFBfRFJPUF9NU0csIFBfR0lWRV9NU0csIFBfUFVUX01TRywKKyAgICAgICAgICAgICAgICAgUF9XRUFSX01TRywgUF9XSUVMRF9NU0cKKyAgICAgU29uc3RpZ2VzOiAgcmVwbGFjZV9wZXJzb25hbChFKSwgL3N0ZC9saXZpbmcvcHV0X2FuZF9nZXQuYwpkaWZmIC0tZ2l0IGEvZG9jL3Byb3BzL1BfRVFVSVBfVElNRSBiL2RvYy9wcm9wcy9QX0VRVUlQX1RJTUUKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNzFiMmYzNQotLS0gL2Rldi9udWxsCisrKyBiL2RvYy9wcm9wcy9QX0VRVUlQX1RJTUUKQEAgLTAsMCArMSwyNiBAQAorUF9FUVVJUF9USU1FCisKK05BTUU6CisgICAgICBQX0VRVUlQX1RJTUUJCQkiZXF1aXBfdGltZSIKKworREVGSU5JRVJUIElOOgorICAgICAgL3N5cy9jb21iYXQuaAorCitCRVNDSFJFSUJVTkc6CisgICAgICBJbm5lcmhhbGIgdm9uIFdhZmZlbiB1bmQgUnVlc3R1bmdlbiB3aXJkIGluIGRpZXNlciBQcm9wZXJ0eQ0KKyAgICAgIHJlZ2lzdHJpZXJ0LCB3YW5uIGRpZXNlIHp1bGV0enQgZ2V6dWVja3QgYnp3LiBhbmdlem9nZW4gd3VyZGVuLgorICAgICAgSW5uZXJoYWxiIGRlciBGdW5rdGlvbmVuIHdpZWxkX21lKCkgaW4gJy9zdGQvd2VhcG9uL2NvbWJhdCcgYnp3Lg0KKyAgICAgIERvV2VhcigpIGluICcvc3RkL2FybW91ci9jb21iYXQnIHdpcmQgaGllcmJlaSBqZXdlaWxzIGZvbGdlbmRlIEFrdGlvbg0KKyAgICAgIGF1c2dlZnVlaHJ0OgorCVNldFByb3AoUF9FUVVJUF9USU1FLHRpbWUoKSk7CisKK1NJRUhFIEFVQ0g6CisgICAgICBWZXJ3YW5kdDoJCVBfTEFTVF9VU0UKKyAgICAgIFdhZmZlbjoJCVBfVU5XSUVMRF9USU1FCisJCQlEb1dpZWxkKCkKKyAgICAgIFJ1ZXN0dW5nZW46CURvV2VhcigpCisgICAgICBTb25zdGlnZXM6CXRpbWUoKQorCQkJL3N0ZC93ZWFwb24vY29tYmF0LmMsIC9zdGQvYXJtb3VyL2NvbWJhdC5jCisKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KK0xhc3QgbW9kaWZpZWQ6IFN1biBKdWwgMjYgMjM6NTk6MTIgMTk5OCBieSBQYXRyeW4KZGlmZiAtLWdpdCBhL2RvYy9wcm9wcy9QX0VWQUxfRkFDVE9SUyBiL2RvYy9wcm9wcy9QX0VWQUxfRkFDVE9SUwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4wNGU4ODFlCi0tLSAvZGV2L251bGwKKysrIGIvZG9jL3Byb3BzL1BfRVZBTF9GQUNUT1JTCkBAIC0wLDAgKzEsOCBAQAorTkFNRToKKyAgICBQX0VWQUxfRkFDVE9SUyAgICAgICAgICAgICAgICAiaW5wY19ldmFsX2ZhY3RvcnMiICAgICAgICAgICAKKworREVGSU5JRVJUIElOOgorICAgIC9zeXMvaW5wYy9ldmFsLmgKKworQkVTQ0hSRUlCVU5HOgorICAgICoqKiBLRUlORSBCRVNDSFJFSUJVTkcgVk9SSEFOREVOICoqKgpkaWZmIC0tZ2l0IGEvZG9jL3Byb3BzL1BfRVZBTF9PRkZTRVRTIGIvZG9jL3Byb3BzL1BfRVZBTF9PRkZTRVRTCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmQ4MmVmMzkKLS0tIC9kZXYvbnVsbAorKysgYi9kb2MvcHJvcHMvUF9FVkFMX09GRlNFVFMKQEAgLTAsMCArMSw4IEBACitOQU1FOgorICAgIFBfRVZBTF9PRkZTRVRTICAgICAgICAgICAgICAgICJpbnBjX2V2YWxfb2Zmc2V0cyIgICAgICAgICAgIAorCitERUZJTklFUlQgSU46CisgICAgL3N5cy9pbnBjL2V2YWwuaAorCitCRVNDSFJFSUJVTkc6CisgICAgKioqIEtFSU5FIEJFU0NIUkVJQlVORyBWT1JIQU5ERU4gKioqCmRpZmYgLS1naXQgYS9kb2MvcHJvcHMvUF9FWElUUyBiL2RvYy9wcm9wcy9QX0VYSVRTCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjNiMzg1NmYKLS0tIC9kZXYvbnVsbAorKysgYi9kb2MvcHJvcHMvUF9FWElUUwpAQCAtMCwwICsxLDkgQEAKK05BTUU6CisgICAgUF9FWElUUyAgICAgICAgICAgICAgICAgICAgICAgImV4aXRzIiAgICAgICAgICAgICAgICAgICAgICAgCisKK0RFRklOSUVSVCBJTjoKKyAgICAvc3lzL3Byb3BlcnRpZXMuaAorCitCRVNDSFJFSUJVTkc6CisgICAgIE1hcHBpbmcgYWxsZXIgdW5taXR0ZWxiYXIgc2ljaHRiYXJlbiBBdXNnYWVuZ2UgbWl0IHp1Z2Vob2VyaWdlbgorICAgICBOYWNoYmFycmFldW1lbi4gU29sbHRlIG51ciBtaXR0ZWxzIEFkZEV4aXQoKSBiZW51dHp0IHdlcmRlbi4KZGlmZiAtLWdpdCBhL2RvYy9wcm9wcy9QX0ZBTyBiL2RvYy9wcm9wcy9QX0ZBTwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi42MmYzM2UxCi0tLSAvZGV2L251bGwKKysrIGIvZG9jL3Byb3BzL1BfRkFPCkBAIC0wLDAgKzEsMTkgQEAKK1BfRkFPCisKK05BTUU6CisgICAgIFBfRkFPICAgICAgImZyYXRlcm5pdGFzZG9ub2FyY2htYWdvcnVtIgorCitERUZJTklFUlQgSU46CisgICAgIDxwbGF5ZXIvZmFvLmg+CisKK0JFU0NIUkVJQlVORzoKKyAgICAgRnJhdGVybml0YXMtcmVsZXZhbnRlIFByb3BlcnR5LgorCisgICAgIEdlbmF1ZSBJbmZvcm1hdGlvbmVuIHVuYmVrYW5udC4KKyAgICAgU2NocmVpYmVuZGVyIFp1Z3JpZmYgaXN0IG51ciBFTXMgb2RlciBkZW0gRkFPTUFTVEVSIChzLiBIZWFkZXJmaWxlKQorICAgICBtb2VnbGljaC4KKworU0lFSEUgQVVDSDoKKyAgICAgUF9GQU9fUE9SVEFMUworCisxLlNlcHRlbWJlciAyMDA4IEdsb2luc29uCmRpZmYgLS1naXQgYS9kb2MvcHJvcHMvUF9GQU9fUE9SVEFMUyBiL2RvYy9wcm9wcy9QX0ZBT19QT1JUQUxTCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjQ2NTc1MGEKLS0tIC9kZXYvbnVsbAorKysgYi9kb2MvcHJvcHMvUF9GQU9fUE9SVEFMUwpAQCAtMCwwICsxLDIyIEBACitQX0ZBT19QT1JUQUxTCisKK05BTUU6CisgICAgIFBfRkFPX1BPUlRBTFMgICAgICAiZnJhdGVybml0YXNkb25vYXJjaG1hZ29ydW1QT1JUQUxTIgorCitERUZJTklFUlQgSU46CisgICAgIDxwbGF5ZXIvZmFvLmg+CisKK0JFU0NIUkVJQlVORzoKKyAgICAgRnJhdGVybml0YXMtcmVsZXZhbnRlIFByb3BlcnR5LgorCisgICAgIEVudGhhZWx0IGVpbmUgQXJyYXkgbWl0IGVpbmVyIExpc3RlIGRlciB1ZWJlciBkaWUgRnJhdGVybml0YXMKKyAgICAgZ2VmdW5kZW5lbiB1bmQgYmVudXR6YmFyZW4gU2VoZXItUG9ydGFsZS4KKworICAgICBHZW5hdWUgSW5mb3JtYXRpb25lbiB1bmJla2FubnQuCisgICAgIFNjaHJlaWJlbmRlciBadWdyaWZmIGlzdCBudXIgRU1zIG9kZXIgZGVtIEZBT01BU1RFUiAocy4gSGVhZGVyZmlsZSkgCisgICAgIG1vZWdsaWNoLgorCitTSUVIRSBBVUNIOgorICAgICBQX0ZBT19QT1JUQUxTLCBQX1NFRVJET09SUworICAgICAKKzEuU2VwdGVtYmVyIDIwMDggR2xvaW5zb24KZGlmZiAtLWdpdCBhL2RvYy9wcm9wcy9QX0ZJU0ggYi9kb2MvcHJvcHMvUF9GSVNICm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmM2OTRjMDkKLS0tIC9kZXYvbnVsbAorKysgYi9kb2MvcHJvcHMvUF9GSVNICkBAIC0wLDAgKzEsNzUgQEAKK05BTUU6CisgICAgUF9GSVNIICAgICAgICAgICAgICAgICAgICAgICAgImZpc2giCisKK0RFRklOSUVSVCBJTjoKKyAgICAvc3lzL2Zpc2hpbmcuaAorCitCRVNDSFJFSUJVTkc6CisgICAgRW50aGFlbHQgRWluc3RlbGx1bmdlbiB6dSBhbGxlbSwgd2FzIG1pdCBGaXNjaGVuIHp1IHR1biBoYXQuIAorICAgIEthbm4gaW4gRmlzY2hlbiwgUmFldW1lbiB1bmQgS29lZGVybiBnZXNldHp0IHdlcmRlbi4gRGllIHZlcmZ1ZWdiYXJlbiAKKyAgICBPcHRpb25lbiB1bmQgRnVua3Rpb25zd2Vpc2VuIHNpbmQgaW4gZGVuIG5hY2hmb2xnZW5kZW4gQWJzY2huaXR0ZW4gCisgICAgYXVmZ2VmdWVocnQuCisKKyAgICBGaXNjaGU6CisgICAgKioqKioqKgorICAgIERpZSBQcm9wZXJ0eSBsZWd0IHp1c2FldHpsaWNoZSBFaWdlbnNjaGFmdGVuIGZlc3Q6CisKKyAgICAgIEZfTk9ST1RURU4KKyAgICAgICAgRmlzY2ggZmF1bHQgbmljaHQ7IGdnZi4gc29sbHRlIGhpZXIgYXVjaCBnbGVpY2ggRl9OT0hFQUwgZ2VzZXR6dCAKKyAgICAgICAgd2VyZGVuLCB3ZWlsIHNvbnN0IGVpbmUgdW52ZXJkZXJibGljaGUgdHJhZ2JhcmUgVGFua2UgZXJ6ZXVndCB3dWVyZGUuCisgICAgICBGX05PVEhVTkdSWQorICAgICAgICBGaXNjaCBmcmlzc3QgS29lZGVyIG51ciwgd2VubiBlciBhdWNoIHdpcmtsaWNoIG5hY2hoZXIgYW4gZGVyIEFuZ2VsCisgICAgICAgIGhhZW5ndC4gSXN0IGVyIHp1IHNjaHdlciBmdWVyIGRpZSBBbmdlbCB1bmQgcmVpc3N0IGFiLCBibGVpYnQgZGVyCisgICAgICAgIEtvZWRlciBlcmhhbHRlbi4KKyAgICAgIEZfUkVQTEFDRQorICAgICAgICBGaXNjaCBzb2xsIHNpY2ggYmVpbSBFbnRmZXJuZW4gdm9uIGRlciBBbmdlbCB2ZXJ3YW5kZWxuLiBIaWVyenUgaXN0CisgICAgICAgIGRpZSBGdW5rdGlvbiBSZXBsYWNlRmlzaCgpIGltIEZpc2NoIHp1IGRlZmluaWVyZW4sIGRpZSBzaWNoIHVtIGRpZQorICAgICAgICBWZXJ3YW5kbHVuZyBrdWVtbWVydCAoei5CLiBNb25zdGVyIGNsb25lbiB1bmQgRmlzY2ggemVyc3RvZXJlbjsgZWluCisgICAgICAgIEJlaXNwaWVsIGZpbmRldCBzaWNoIGluIC9kL2ViZW5lL2ZyYWdnbGUvYW5nZWwyL29iai9zYWVnZWZpc2NoLmMpLgorICAgICAgRl9OT0hFQUwKKyAgICAgICAgRmlzY2ggaGVpbHQgbmljaHQgYmVpIFZlcnplaHIKKworICAgIFJhdW0gKE9QVElPTkFMKToKKyAgICAqKioqKioqKioqKioqKioqCisgICAgTGVndCBkaWUgRmlzY2hkaWNodGUgZGVzIEdld2Flc3NlcnMgZmVzdC4gRGVyIGVpbmdlc3RlbGx0ZSBXZXJ0IHdpcmt0IAorICAgIHNpY2ggYXVmIGRpZSBXYXJ0ZXplaXQgYXVzLCBkaWUgZGVyIEFuZ2xlciB2ZXJicmluZ2VuIG11c3MsIGJpcyBlaW4gCisgICAgRmlzY2ggYW5iZWlzc3QuIEJlcmVjaG51bmcgaW0gRGV0YWlsIChhbGxlIFphaGxlbndlcnRlIGluIFNla3VuZGVuKToKKyAgICAtIEJhc2lzLVdhcnRlemVpdDogZGVsYXkgPSA4MAorICAgIC0gRGllIFdlcnRlIHZvbiBQX0ZJU0ggdm9uIFJhdW0gdW5kIEtvZWRlciB3ZXJkZW4gYWRkaWVydDoKKyAgICAgIHN1bW1lID0gcmF1bS0+UXVlcnlQcm9wKFBfRklTSCkgKyBrb2VkZXItPlF1ZXJ5UHJvcChQX0ZJU0gpCisgICAgICAtPiBwb3NpdGl2ZSBXZXJ0ZSAoQm9udXMpIHdlcmRlbiBhdWYgNjAgYmVncmVuenQgdW5kIG1pdCBadWZhbGxzLQorICAgICAgICAga29tcG9uZW50ZSB2b24gPGRlbGF5PiBhYmdlem9nZW46CisgICAgICAgICBkZWxheSAtPSByYW5kb20oc3VtbWUpCisgICAgICAtPiBuZWdhdGl2ZSBXZXJ0ZSAoTWFsdXMpIHdlcmRlbiBhdWYgLTMwMCBiZWdyZW56dCB1bmQgbWl0IFp1ZmFsbHMtCisgICAgICAgICBrb21wb25lbnRlIGF1ZiA8ZGVsYXk+IGF1Zmdlc2NobGFnZW46CisgICAgICAgICBkZWxheSArPSByYW5kb20oLXN1bW1lKQorCisgICAgWnVzYWV0emxpY2ggd2lyZCBlaW4gd2VpdGVyZXIgTWFsdXMgYXVmIGRpZSBXYXJ0ZXplaXQgZmFlbGxpZywgZmFsbHMgCisgICAgUF9XQVRFUiBpbiBkZXIgQW5nZWwgdW5kL29kZXIgUF9XQVRFUiBpbSBLb2VkZXIgbmljaHQgenVtIGFrdHVlbGxlbiAKKyAgICBHZXdhZXNzZXIgcGFzc2VuLiBEZXIgTWFsdXMgYmV0cmFlZ3QgamV3ZWlscyA2MCtyYW5kb20oNjApIFNla3VuZGVuLgorICAgIAorICAgIERlciBTdGFuZGFyZHdlcnQgZnVlciBQX0ZJU0ggaW0gUmF1bSBpc3QgMCB1bmQgYmVkZXV0ZXQgMTAwICUgQmVzdGFuZC4KKyAgICBQb3NpdGl2ZSBXZXJ0ZSBlcmhvZWhlbiBkaWUgRGljaHRlLCBuZWdhdGl2ZSBzZW5rZW4gc2llLiBQb3NpdGl2ZSBXZXJ0ZSAKKyAgICBzb2xsdGVuIG5pY2h0ID4xMDAgc2Vpbi4KKworICAgIFNvZmVybiBzaWNoIGRpZSBXZXJ0ZSBmdWVyIFBfRklTSCBpbiBkZW4gZW1wZm9obGVuZW4gR3JlbnplbiBiZXdlZ2VuLAorICAgIGtvZW5uZW4gQWJ6dWVnZSBmdWVyIGZhbHNjaGVzIEdld2Flc3NlciB1ZWJsaWNoZXJ3ZWlzZSBrYXVtIGR1cmNoCisgICAgQm9uaSBhdWYgQW5nZWwgb2RlciBLb2VkZXIga29tcGVuc2llcnQgd2VyZGVuLiBBdXNzZXJkZW0gaXN0IHp1CisgICAgYmVkZW5rZW4sIGRhc3MgZXMga2VpbmUgQm9uaSBmdWVyIHJpY2h0aWdlIEdld2Flc3NlcndhaGwgZ2lidC4KKyAKKworICAgIEtvZWRlciAoT1BUSU9OQUwpOgorICAgICoqKioqKioqKioqKioqKioqKgorICAgIEVpbiBLb2VkZXIga2FubiBtaXR0ZWxzIFBfRklTSCBkaWUgRmlzY2hkaWNodGUgbW9kaWZpemllcmVuLCB1bSBoaWVydWViZXIKKyAgICBlaW4gYmVzc2VyZXMgQmVpc3NlbiBkZXIgRmlzY2hlIHp1IHNpbXVsaWVyZW4gKHJlZHV6aWVydCBkaWUgV2FydGV6ZWl0CisgICAgYmVpbSBBbmdlbG4sIHNpZWhlIG9iZW4gdW50ZXIgIlJhdW0iKS4gV2VubiBhbHNvIGRlciBSYXVtIGVpbmVuIFdlcnQKKyAgICB2b24gLTEwMCBnZXNldHp0IGhhdCB1bmQgZGVyIEtvZWRlciArMTAwLCBlbnRzcHJpY2h0IGRpZSBGaXNjaGRpY2h0ZSBpbSAKKyAgICBHZXdhZXNzZXIgd2llZGVyIGRlbSBOb3JtYWx3ZXJ0LgorCitTSUVIRSBBVUNIOgorCisgICAgUHJvcGVydGllczogUF9XQVRFUgorICAgIE1ldGhvZGVuOiAgIEdldEFxdWFyaXVtKEwpCisKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorWnVsZXR6dCBnZWFlbmRlcnQ6IDIwMTQtQXVnLTIxLCBBcmF0aG9ybgpkaWZmIC0tZ2l0IGEvZG9jL3Byb3BzL1BfRkxBR1MgYi9kb2MvcHJvcHMvUF9GTEFHUwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4zYzU0YWVhCi0tLSAvZGV2L251bGwKKysrIGIvZG9jL3Byb3BzL1BfRkxBR1MKQEAgLTAsMCArMSw4IEBACitOQU1FOgorICAgIFBfRkxBR1MgICAgICAgICAgICAgICAgICAgICAgICJjYW5fZmxhZ3MiICAgICAgICAgICAgICAgICAgIAorCitERUZJTklFUlQgSU46CisgICAgL3N5cy9wbGF5ZXIvYmFzZS5oCisKK0JFU0NIUkVJQlVORzoKKyAgICAgRmxhZ3MgZGVzIFNwaWVsZXJzCmRpZmYgLS1naXQgYS9kb2MvcHJvcHMvUF9GT0xMT1dfU0lMRU5UIGIvZG9jL3Byb3BzL1BfRk9MTE9XX1NJTEVOVApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi43NjYyYWQxCi0tLSAvZGV2L251bGwKKysrIGIvZG9jL3Byb3BzL1BfRk9MTE9XX1NJTEVOVApAQCAtMCwwICsxLDkgQEAKK05BTUU6CisgICAgUF9GT0xMT1dfU0lMRU5UICAgICAgICAgICAgICAgImZvbGxvd19zaWxlbnQiICAgICAgICAgICAgICAgCisKK0RFRklOSUVSVCBJTjoKKyAgICAvc3lzL3BsYXllci9iYXNlLmgKKworQkVTQ0hSRUlCVU5HOgorICAgICBXZW5uIGRpZXNlIFByb3BlcnR5IDEgaXN0LCB3aXJkIGRlciBNT1ZFIHZvbSB2ZXJmb2xnZSBTaWxlbnQgYXVzZ2UtCisgICAgIGZ1ZWhydC4KZGlmZiAtLWdpdCBhL2RvYy9wcm9wcy9QX0ZPT0QgYi9kb2MvcHJvcHMvUF9GT09ECm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjc2OTY5NGYKLS0tIC9kZXYvbnVsbAorKysgYi9kb2MvcHJvcHMvUF9GT09ECkBAIC0wLDAgKzEsMjQgQEAKK05BTUU6CisgICAgIFBfRk9PRCAgICAgICAgICAgICAgICAgICAgICAgICJmb29kIgorCitERUZJTklFUlQgSU46CisgICAgIC9zeXMvbGl2aW5nL2xpZmUuaAorCitCRVNDSFJFSUJVTkc6CisKKyAgICAgLSBMZWJld2VzZW4KKyAgICAgICBOdW1lcmlzY2hlciBXZXJ0IGZ1ZXIgZGVuIFNhZXR0aWd1bmdzZ3JhZCBlaW5lcyBMZWJld2VzZW5zLgorICAgICAgIERlciBtYXhpbWFsZSBXZXJ0IHN0ZWh0IGluIFBfTUFYX0ZPT0QuCisKKyAgICAgLSBTcGVpc2VuL0tuZWlwZW4KKyAgICAgICBOdW1lcmlzY2hlciBXZXJ0IGZ1ZXIgZGVuIFNhZXR0aWd1bmdzZ3JhZCBlaW5lciBQb3J0aW9uIGVpbmVyCisgICAgICAgU3BlaXNlLiBJc3QgZGllc2UgUHJvcGVydHkgbmljaHQgZ2VzZXR6dCwga2FubiBtYW4gZGllc2UKKyAgICAgICBTcGVpc2UgbmljaHQgZXNzZW4uIEVpbmUgZnVua3Rpb25pZXJlbmRlIFNwZWlzZSBfbXVzc18gZW50d2VkZXIKKyAgICAgICBQX0ZPT0Qgb2RlciBQX0RSSU5LIGdyb2Vzc2VyIDAgZ2VzZXR6dCBoYWJlbi4KKworU0lFSEUgQVVDSDoKKyAgICAgUF9NQVhfRk9PRCwgUF9GT09EX0RFTEFZLCBjb25zdW1lLAorICAgICBQX0RSSU5LLCBQX0FMQ09IT0wsIHdpei9mb29kCisKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorTGFzdCBtb2RpZmllZDogVGh1IE9jdCAyOCAxMjoxNTowMCAyMDEwIGJ5IENhbGRyYQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2RvYy9wcm9wcy9QX0ZPT0RfREVMQVkgYi9kb2MvcHJvcHMvUF9GT09EX0RFTEFZCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjExY2NmNmUKLS0tIC9kZXYvbnVsbAorKysgYi9kb2MvcHJvcHMvUF9GT09EX0RFTEFZCkBAIC0wLDAgKzEsMTAgQEAKK05BTUU6CisgICAgUF9GT09EX0RFTEFZICAgICAgICAgICAgICAgICAiZm9vZF9kZWxheSIgICAgICAgICAgICAgICAgICAgICAKKworREVGSU5JRVJUIElOOgorICAgIC9zeXMvbGl2aW5nL2xpZmUuaAorCitCRVNDSFJFSUJVTkc6CisgICAgIEFuemFobCBkZXIgaGVhcnRfYmVhdHMsIGJpcyBQX0ZPT0QgdW0gZWluZW4gUHVua3Qgc2lua3QuCisgICAgIEFlbmRlcnVuZ2VuIGRpZXNlciBQcm9wZXJ0eSBpbiBTcGllbGVybiBiZWR1ZXJmZW4gZGVyIAorICAgICBHZW5laG1pZ3VuZyBkZXMgRU0gZnVlciBCYWxhbmNlLgpkaWZmIC0tZ2l0IGEvZG9jL3Byb3BzL1BfRk9PRF9GVUxMX01TRyBiL2RvYy9wcm9wcy9QX0ZPT0RfRlVMTF9NU0cKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYTMzMWVjNQotLS0gL2Rldi9udWxsCisrKyBiL2RvYy9wcm9wcy9QX0ZPT0RfRlVMTF9NU0cKQEAgLTAsMCArMSwyNCBAQAorTkFNRToKKyAgICAgUF9GT09EX0ZVTExfTVNHICAgICAgICAgICAgICAgInN0ZF9mb29kX2Z1bGxfbXNnIgorCitERUZJTklFUlQgSU46CisgICAgIDxzeXMvZm9vZC5oPgorCitCRVNDSFJFSUJVTkc6CisgICAgIE1lbGR1bmcgYW4gZGVuIEtvbnN1bWVudGVuLCB3ZW5uIGVpbmUgU3BlaXNlIGdlZ2Vzc2VuIHdlcmRlbiBzb2xsLAorICAgICBvYndvaGwgZGllc2VyIG5pY2h0cyBtZWhyIGVzc2VuIGthbm4uCisgICAgIAorQkVNRVJLVU5HRU46CisgICAgIERpZXNlIE1lbGR1bmcgd2lyZCB2b24gcmVwbGFjZV9wZXJzb25hbCBtaXQgZGVuIEFyZ3VtZW50ZW46CisgICAgIDEuIFNwZWlzZQorICAgICAyLiBLb25zdW1lbnQKKyAgICAgdmVyYXJiZWl0ZXQsIGthbm4gYWxzIGVudHNwcmVjaGVuZGUgUGxhdHpoYWx0ZXIgZW50aGFsdGVuCisgICAgIAorREVGQVVMVDoKKyAgICAgIkR1IGJpc3QgenUgc2F0dCwgZGFzIHNjaGFmZnN0IER1IG5pY2h0IG1laHIuIgorCitTSUVIRSBBVUNIOgorICAgICBQX0ZPT0QsIFBfTUFYX0ZPT0QsIHdpei9mb29kLCByZXBsYWNlX3BlcnNvbmFsCisKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorTGFzdCBtb2RpZmllZDogVGh1IE9jdCAyOCAxMjoxNTowMCAyMDEwIGJ5IENhbGRyYQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2RvYy9wcm9wcy9QX0ZPUkNFX01VUkRFUl9NU0cgYi9kb2MvcHJvcHMvUF9GT1JDRV9NVVJERVJfTVNHCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmNmMDE1N2MKLS0tIC9kZXYvbnVsbAorKysgYi9kb2MvcHJvcHMvUF9GT1JDRV9NVVJERVJfTVNHCkBAIC0wLDAgKzEsMzkgQEAKK05BTUU6CisJUF9GT1JDRV9NVVJERVJfTVNHCQkiZm9yY2VfbXVyZGVyX21zZyIKKworREVGSU5JRVJUIElOOgorCS9zeXMvcHJvcGVydGllcy5oCisKK0JFU0NIUkVJQlVORzoKKwlPYiBkZXIgVG9kIGVpbmVzIE5QQ3MgYXVmIGRlbSBNb2VyZGVyLUthbmFsIGVyc2NoZWludCwgaGFlbmd0IGRhdm9uCisJYWIsIHdpZSBvZnQgdW5kIHdlbGNoZSBBcnQgdm9uIE5QQ3MgaW4gZGVyIGxldHp0ZW4gWmVpdCBnZXRvZXRldAorCXd1cmRlbi4gWnVtIEJlaXNwaWVsIGlzdCBlcyBlaGVyIHNlbHRlbiwgZGFzcyBlaW4gc2Nod2FjaGVyIE5QQyBhdWYKKwlkZW0gS2FuYWwgZXJzY2hlaW50LCB3ZW5uIGt1ZXJ6bGljaCB2aWVsZSBzdGFya2UgTlBDcyBnZXRvZXRldAorCXd1cmRlbi4gTWl0dGVscyBkZXIgUHJvcGVydHkgUF9GT1JDRV9NVVJERVJfTVNHIGthbm4gbWFuIGF1ZiBkaWVzZQorCVJlZ2VsdW5nIEVpbmZsdXNzIG5laG1lbi4KKwlFaW4gV2VydCBncm9lc3NlciBOdWxsIGVyendpbmd0IGRpZSBNZWxkdW5nIGF1ZiBkZW0gTW9lcmRlci1LYW5hbCwKKwllaW4gV2VydCBrbGVpbmVyIE51bGwgdW50ZXJkcnVlY2t0IHNpZSBnZW5lcmVsbC4gTGV0enRlcmVzIGlzdAorCWluc2Jlc29uZGVyZSBmdWVyIGFsbHp1b2Z0IGdldG9ldGV0ZSBNb25zdGVyIHNpbm52b2xsLCB1bSBkZW4KKwlNb2VyZGVyLUthbmFsIG5pY2h0IHVlYmVybWFlc3NpZyB6dSBiZWxhc3Rlbi4gTWl0IGRlbSBFcnp3aW5nZW4gZGVyCisJTWVsZHVuZ2VuIHNvbGx0ZSBtYW4gc29taXQgdm9yc2ljaHRpZyBzZWluOiBXZW5pZ2VyIGlzdCBvZnRtYWxzCisJYmVzc2VyIGFscyB6dSB2aWVsIQorCURpZSBEZWZhdWx0ZWluc3RlbGx1bmcgdm9uIFBfRk9SQ0VfTVVSREVSX01TRyBpc3QgbmF0dWVybGljaCBOdWxsCisJdW5kIGZ1ZWhydCB6dXIgYmVyZWl0cyBiZXNjaHJpZWJlbmVuIG9wZmVyYWJoYWVuZ2lnZW4gTWVsZHVuZy4KKworQkVJU1BJRUxFOgorCUVpbiBncm9zc2VyIHN0YXJrZXIgTlBDLCBkZXIgZ2V0b2V0ZXQgd3VyZGUsIHNvbGx0ZSBzY2hvbiBlaW5lIHRvbGxlCisJTWVsZHVuZyBhdWYgZGVtIE1vZXJkZXItS2FuYWwgZXJ6ZXVnZW4uIEluIGRlciBQcm9wZXJ0eQorCVBfTVVSREVSX01TRyBrb2VubmVuIGhpZXJ6dSBhbHRlcm5hdGl2ZSBUZXh0ZSB6dSBkZW4gbm9ybWFsIHBlcgorCVp1ZmFsbCBhdXNnZXdhZWhsdGVuIGFuZ2VnZWJlbiB3ZXJkZW46CisJICBTZXRQcm9wKFBfTVVSREVSX01TRywKKyAgICAgICAgICAgICAgICAgICJOaWNodCBzY2hsZWNodCwgYWJlciBkYXMgc2NoYWZmdCBlaCBudXIgZWluZXIhIik7CisJICBTZXRQcm9wKFBfRk9SQ0VfTVVSREVSX01TRywxKTsKKwlad2FyIGlzdCBlcyBiZWkgZ3Jvc3NlbiBOUENzIGhpbnJlaWNoZW5kIHdhaHJzY2hlaW5saWNoLCBkYXNzIGVzCisJaW5mb2xnZSBkZXJlciBTdGFlcmtlIHp1ciBhdXRvbWF0aXNjaGVuIEF1c2dhYmUgZWluZXIgTW9lcmRlcm1lbGR1bmcKKwlrb21tdCwgYWJlciBtaXQgZGVyIGxldHp0ZW4gWmVpbGUgd3VyZGUgZGllcyBhYnNvbHV0IHNpY2hlcmdlc3RlbGx0LgorCitTSUVIRSBBVUNIOgorCVBfTVVSREVSX01TRywgUF9aQVBfTVNHLCBQX0tJTExfTVNHLCBQX0RJRV9NU0csIFBfQ09SUFNFLCBQX05PQ09SUFNFCisKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KK0xhc3QgbW9kaWZpZWQ6IFR1ZSBOb3YgMTAgMDI6MTU6MjYgMTk5OCBieSBQYXRyeW4KZGlmZiAtLWdpdCBhL2RvYy9wcm9wcy9QX0ZSRUVfSEFORFMgYi9kb2MvcHJvcHMvUF9GUkVFX0hBTkRTCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjYxNDNjYWQKLS0tIC9kZXYvbnVsbAorKysgYi9kb2MvcHJvcHMvUF9GUkVFX0hBTkRTCkBAIC0wLDAgKzEsMjIgQEAKK1BfRlJFRV9IQU5EUworTkFNRToKKyAgICBQX0ZSRUVfSEFORFMgICAgICAgICAgICAgICAgICAiZnJlZV9oYW5kcyIKKworREVGSU5JRVJUIElOOgorICAgIC9zeXMvbGl2aW5nL2NvbWJhdC5oCisKK0JFU0NIUkVJQlVORzoKKyAgICBBbnphaGwgZGVyIGZyZWllbiBIYWVuZGUuCisgICAgRWZmZWt0aXYgbnVyIGVpbiBkaWUgRGlmZmVyZW56IHZvbiBQX01BWF9IQU5EUyB1bmQgUF9VU0VEX0hBTkRTLgorCitCRU1FUktVTkdFTjoKKyAgICBLZWluZSBlY2h0ZSBQcm9wZXJ0eS4gRGllIE1ldGhvZGUgL3N0ZC9saXZpbmcvY29tYmF0OjpfcXVlcnlfZnJlZV9oYW5kcworICAgIHN0ZWxsdCBkaWUgRGF0ZW4genVzYW1tZW4uIE5pY2h0IHNldHplbiEKKworU0lFSEUgQVVDSDoKKyAgICBQX0hBTkRTLCBQX0hBTkRTX1VTRURfQlkKKyAgICBQX01BWF9IQU5EUywgUF9VU0VEX0hBTkRTCisgICAgVXNlSGFuZHMsIEZyZWVIYW5kcworICAgIC9zdGQvd2VhcG9uLmMsIC9zdGQvc3BlbGxib29rLmMKKworMS4gT2t0IDIwMTIsIEdsb2luc29uCmRpZmYgLS1naXQgYS9kb2MvcHJvcHMvUF9GUklFTkQgYi9kb2MvcHJvcHMvUF9GUklFTkQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZGVkMDgwYwotLS0gL2Rldi9udWxsCisrKyBiL2RvYy9wcm9wcy9QX0ZSSUVORApAQCAtMCwwICsxLDI0IEBACitOQU1FOgorCVBfRlJJRU5ECQkJImZyaWVuZCIKKworREVGSU5JRVJUIElOOgorCTxjb21iYXQuaD4KKworQkVTQ0hSRUlCVU5HOgorCVNldHp0IG1hbiBkaWVzZSBQcm9wZXJ0eSBpbiBlaW5lbSBOUEMgYXVmIGVpbmVuIFdlcnQgdW5nbGVpY2ggTnVsbCwKKwlzbyB3aXJkIGRlciBOUEMgYmVpIFphdWJlcnNwcnVlY2hlbiwgZGllIGF1ZiBiZXN0aW1tdGUgR3J1cHBlbgorCXdpcmtlbiwgZGVyIEdydXBwZSBkZXIgU3BpZWxlciB1bmQgbmljaHQgZGVyIEdydXBwZSBkZXIgTlBDcworCXp1Z2VvcmRuZXQuIEF1c3NlcmRlbSB3aXJkIGRlciBOUEMgYmVpIGVpbmVtICJ0b2V0ZSBhbGxlIiBuaWNodCBtaXQKKwlhbmdlZ3JpZmZlbi4KKwlXdXJkZSBkZXIgTlBDIGVpbmVtIFNwaWVsZXIgcGVyIEFzc29jTWVtYmVyKCkgenVnZW9yZG5ldCwgc28KKwliZWZpbmRldCBzaWNoIGRlciBOUEMgYXV0b21hdGlzY2ggaW0gamV3ZWlsaWdlbiBUZWFtIGRlcyBTcGllbGVycworCSAobW9lZ2xpY2hzdCBhdWNoIGluIGRlciBzZWxiZW4gS2FtcGZyZWloZSksIHVuZCBkaWUgUHJvcGVydHkgaGF0CisJZGFubiBhdXRvbWF0aXNjaCBkYXMgU3BpZWxlcm9iamVrdCBhbHMgV2VydC4KKwlEYSBkaWVzZXIgV2VydCBpbiBkaWVzZW0gRmFsbCBuYXR1ZXJsaWNoIHVuZ2xlaWNoIE51bGwgaXN0LCB3aXJkIGRlcgorCU5QQyBkYW5uIGF1Y2ggZGVyIEdydXBwZSBkZXIgU3BpZWxlciB6dWdlb3JkbmV0LgorCitTSUVIRSBBVUNIOgorCUZpbmRHcm91cCgpLCBBc3NvY01lbWJlcigpLCBQX1RFQU1fQVNTT0NfTUVNQkVSUywgL3N0ZC9saXZpbmcvdGVhbS5jCisKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KK0xhc3QgbW9kaWZpZWQ6IFR1ZSBEZWMgMjkgMTc6MDI6NTUgMTk5OCBieSBQYXRyeW4KZGlmZiAtLWdpdCBhL2RvYy9wcm9wcy9QX0ZST0cgYi9kb2MvcHJvcHMvUF9GUk9HCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjVmNjRlYWMKLS0tIC9kZXYvbnVsbAorKysgYi9kb2MvcHJvcHMvUF9GUk9HCkBAIC0wLDAgKzEsOCBAQAorTkFNRToKKyAgICBQX0ZST0cgICAgICAgICAgICAgICAgICAgICAgICAiZnJvZyIgICAgICAgICAgICAgICAgICAgICAgICAKKworREVGSU5JRVJUIElOOgorICAgIC9zeXMvbGl2aW5nL2xpZmUuaAorCitCRVNDSFJFSUJVTkc6CisgICAgIEdlc2V0enQsIHdlbm4gZGVyIFNwaWVsZXIgZWluIEZyb3NjaCBpc3QuCmRpZmYgLS1naXQgYS9kb2MvcHJvcHMvUF9GVUVMIGIvZG9jL3Byb3BzL1BfRlVFTApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44OTBjYTYwCi0tLSAvZGV2L251bGwKKysrIGIvZG9jL3Byb3BzL1BfRlVFTApAQCAtMCwwICsxLDI2IEBACitOQU1FOgorICAgIFBfRlVFTCAgICAgICAgICAgICAgICAgICAgICAgICJmdWVsIiAgICAgICAgICAgICAgICAgICAgICAgIAorCitERUZJTklFUlQgSU46CisgICAgL3N5cy9wcm9wZXJ0aWVzLmgKKworQkVTQ0hSRUlCVU5HOgorICAgICBOdW1lcmlzY2hlciBXZXJ0IGZ1ZXIgZGllIFplaXRkYXVlciwgZGllIGRpZSBMaWNodHF1ZWxsZSBub2NoCisgICAgIGxldWNodGVuIGthbm4uIFN0YW5kYXJkbWFlc3NpZyBpc3QgZGVyIFdlcnQgYXVmIDIwIGdlc2V0enQuCisKKyAgICAgU2V0enQgbWFuIGRpZSBQcm9wZXJ0eSBhdWYgZWluZW4gV2VydCwgZGVyIGdyb2Vzc2VyIGlzdCBhbHMgZGVyIHZvcmlnZQorICAgICBNYXhpbWFsd2VydCwgd2lyZCBkaWVzZXIgYXVmIGRlbiBuZXVlbiBXZXJ0IGVyaG9laHQuIEFlbmRlcnQgbWFuIGRlbgorICAgICBCcmVubnN0b2Zmdm9ycmF0IGRlciBMaWNodHF1ZWxsZSBoaW5nZWdlbiBtaXR0ZWxzIEFkZEZ1ZWwoKSwgc28gd2lyZAorICAgICBkZXIgV2VydCB2b24gUF9GVUVMIHVlYmVyIGRlbiBNYXhpbWFsd2VydCBoaW5hdXMgZXJob2VodC4KKworSElOV0VJUzoKKyAgICAgRnVlciBBZW5kZXJ1bmdlbiBhbiBkZXIgUHJvcGVydHkga2FubiBhdWNoIGRpZSBGdW5rdGlvbiBBZGRGdWVsKCkKKyAgICAgdmVyd2VuZGV0IHdlcmRlbi4gCisKK1NJRUhFIEFVQ0g6CisgICAgIEJhc2lza2xhc3NlbjogL3N0ZC9saWdodHNvdXJjZS5jCisgICAgIFByb3BlcnRpZXM6ICAgUF9MSUdIVERFU0MsIFBfRE9fREVTVFJVQ1QsIFBfTElHSFQKKyAgICAgTWV0aG9kZW46ICAgICBBZGRGdWVsKEwpCisKK0xFVFpURSBBRU5ERVJVTkc6CisgICAgMjIuIERlei4gMjAxNSwgQXJhdGhvcm4KZGlmZiAtLWdpdCBhL2RvYy9wcm9wcy9QX0ZVTkNfTVNHIGIvZG9jL3Byb3BzL1BfRlVOQ19NU0cKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYjRmOWQxZQotLS0gL2Rldi9udWxsCisrKyBiL2RvYy9wcm9wcy9QX0ZVTkNfTVNHCkBAIC0wLDAgKzEsMjEgQEAKK05BTUU6CisgICAgUF9GVU5DX01TRyAgICAgICAgICAgICAgICAgICAgImZ1bmNfbXNnIiAgICAgICAgICAgICAgICAgICAgCisKK0RFRklOSUVSVCBJTjoKKyAgICAvc3lzL3Jvb20vZGVzY3JpcHRpb24uaAorCitCRVNDSFJFSUJVTkc6CisgICAgIExpc3RlIG1pdCBGdW5rdGlvbmVuLCBkaWUgenVmYWVsbGlnIGltIFJhdW0gYXVmZ2VydWZlbiB3ZXJkZW4uCisKKyAgICAgSGllciBpc3QgbnVyIGVpbmUgenVyIHJ1ZmVuZGUgbG9rYWxlIE1ldGhvZGUgYWxzIFN0cmluZyBvZGVyIGVpbmUKKyAgICAgU2FtbWx1bmcgZGF2b24gYWxzIFN0cmluZ2FycmF5IGdlc3BlaWNoZXJ0LgorCitBTk1FUktVTkdFTjoKKyAgICAgQml0dGUgQWRkUm9vbU1lc3NhZ2UoKSB6dW0gSGluenVmdWVnZW4vVWViZXJzY2hyZWliZW4gYmVudXR6ZW4hCisKK1NJRUhFIEFVQ0g6CisgICAgIExGdW5zOiAgICBBZGRSb29tTWVzc2FnZSgpCisgICAgIFZlcndhbmR0OiB0ZWxsX3Jvb20oKSwgUmVjZWl2ZU1zZygpCisgICAgIFByb3BzOiAgICBQX1JPT01fTVNHLCBQX01TR19QUk9CCisKKzIuRmViIDIwMTYgR2xvaW5zb24KZGlmZiAtLWdpdCBhL2RvYy9wcm9wcy9QX0ZXX0FMV0FZU19SRUFEQUJMRSBiL2RvYy9wcm9wcy9QX0ZXX0FMV0FZU19SRUFEQUJMRQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4zMTcwMGVkCi0tLSAvZGV2L251bGwKKysrIGIvZG9jL3Byb3BzL1BfRldfQUxXQVlTX1JFQURBQkxFCkBAIC0wLDAgKzEsOCBAQAorTkFNRToKKyAgICBQX0ZXX0FMV0FZU19SRUFEQUJMRSAgICAgICAgICAiZndfYWx3YXlzX3JlYWRhYmxlIiAgICAgICAgICAKKworREVGSU5JRVJUIElOOgorICAgIC9zeXMvcHJvcGVydGllcy5oCisKK0JFU0NIUkVJQlVORzoKKyAgICAqKiogS0VJTkUgQkVTQ0hSRUlCVU5HIFZPUkhBTkRFTiAqKioKZGlmZiAtLWdpdCBhL2RvYy9wcm9wcy9QX0ZXX1VOREVSU1RBTkQgYi9kb2MvcHJvcHMvUF9GV19VTkRFUlNUQU5ECm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmZmOGY2ZTYKLS0tIC9kZXYvbnVsbAorKysgYi9kb2MvcHJvcHMvUF9GV19VTkRFUlNUQU5ECkBAIC0wLDAgKzEsOCBAQAorTkFNRToKKyAgICBQX0ZXX1VOREVSU1RBTkQgICAgICAgICAgICAgICAiZndfdW5kZXJzdGFuZCIgICAgICAgICAgICAgICAKKworREVGSU5JRVJUIElOOgorICAgIC9zeXMvcHJvcGVydGllcy5oCisKK0JFU0NIUkVJQlVORzoKKyAgICAqKiogS0VJTkUgQkVTQ0hSRUlCVU5HIFZPUkhBTkRFTiAqKioKZGlmZiAtLWdpdCBhL2RvYy9wcm9wcy9QX0dFTkRFUiBiL2RvYy9wcm9wcy9QX0dFTkRFUgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi45M2Y3M2RjCi0tLSAvZGV2L251bGwKKysrIGIvZG9jL3Byb3BzL1BfR0VOREVSCkBAIC0wLDAgKzEsOSBAQAorTkFNRToKKyAgICBQX0dFTkRFUiAgICAgICAgICAgICAgICAgICAgICAiZ2VuZGVyIiAgICAgICAgICAgICAgICAgICAgICAKKworREVGSU5JRVJUIElOOgorICAgIC9zeXMvdGhpbmcvbGFuZ3VhZ2UuaAorCitCRVNDSFJFSUJVTkc6CisgICAgIEdyYW1tYXRpa2FsaXNjaGVzIEdlc2NobGVjaHQgZGVzIE9iamVrdGVzOgorICAgICAoRGVmaW5pZXJ0IGluIGxhbmd1YWdlLmgpIE1BTEUsIEZFTUFMRSBvZGVyIE5FVVRFUgpkaWZmIC0tZ2l0IGEvZG9jL3Byb3BzL1BfR0hPU1QgYi9kb2MvcHJvcHMvUF9HSE9TVApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi45Y2JmMzA5Ci0tLSAvZGV2L251bGwKKysrIGIvZG9jL3Byb3BzL1BfR0hPU1QKQEAgLTAsMCArMSw4IEBACitOQU1FOgorICAgIFBfR0hPU1QgICAgICAgICAgICAgICAgICAgICAgICJnaG9zdCIgICAgICAgICAgICAgICAgICAgICAgIAorCitERUZJTklFUlQgSU46CisgICAgL3N5cy9saXZpbmcvbGlmZS5oCisKK0JFU0NIUkVJQlVORzoKKyAgICAgR2VzZXR6dCwgd2VubiBkZXIgU3BpZWxlciB0b3QgaXN0LgpkaWZmIC0tZ2l0IGEvZG9jL3Byb3BzL1BfR0lWRV9NU0cgYi9kb2MvcHJvcHMvUF9HSVZFX01TRwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5iZDZhNjI0Ci0tLSAvZGV2L251bGwKKysrIGIvZG9jL3Byb3BzL1BfR0lWRV9NU0cKQEAgLTAsMCArMSw2NSBAQAorUF9HSVZFX01TRworTkFNRToKKyAgICAgUF9HSVZFX01TRwkJCQkiZ2l2ZV9tZXNzYWdlIgorCitERUZJTklFUlQgSU46CisgICAgIC9zeXMvbGl2aW5nL3B1dF9hbmRfZ2V0LmgKKworQkVTQ0hSRUlCVU5HOgorICAgICBNaXQgUF9HSVZFX01TRyBrYW5uIG1hbiBkaWUgTWVsZHVuZywgZGllIG1hbiBiZWltIFVlYmVyZ2ViZW4gZWluZXMKKyAgICAgT2JqZWt0ZXMgYmVrb21tdCwgbW9kaWZpemllcmVuLgorCisgICAgIEZvbGdlbmRlIFdlcnRlIHNpbmQgbW9lZ2xpY2g6CisKKyAgICAgbyAwCisgICAgICAgRXMgd2lyZCBlaW5lIFN0YW5kYXJkbWVsZHVuZyBhdXNnZWdlYmVuLiBEaWVzIGlzdCBWb3JlaW5zdGVsbHVuZy4KKworICAgICBvIE5PX1BOR19NU0cJPT0gLTEKKyAgICAgICBFcyB3aXJkIGtlaW5lcmxlaSBNZWxkdW5nIGF1c2dlZ2ViZW4KKworICAgICBvIEVpbiBBcnJheSBhdXMgU3RyaW5ncworICAgICAgIERlciBlcnN0ZSBTdHJpbmcgd2lyZCBhbiBkZW4gU3BpZWxlciBhdXNnZWdlYmVuLCBkZXIgendlaXRlCisgICAgICAgKG9wdGlvbmFsZSkgYW4gZGVuIFJhdW0sIGRlciBkcml0dGUgKGViZW5mYWxscyBvcHRpb25hbGUpIGFuIGRlbgorICAgICAgIEVtcGZhZW5nZXIuCisKKyAgICAgICBEaWUgU3RyaW5ncyB3ZXJkZW4gZHVyY2ggZGllIEZ1bmt0aW9uIHJlcGxhY2VfcGVyc29uYWwoKSBnZXBhcnN0LgorCU9iamVrdDEgLSBTcGllbGVyCisgICAgICAgIE9iamVrdDIgLSBkYXMgT2JqZWt0LCBkYXMgdWViZXJnZWJlbiB3aXJkCisJT2JqZWt0MyAtIEVtcGZhZW5nZXIKKworICAgICAgIFdpcmQgZGVyIHp3ZWl0ZSBTdHJpbmcgbmljaHQgYW5nZWdlYmVuLCBlcmZvbGd0IGtlaW5lIE1lbGR1bmcgYW4gZGVuCisgICAgICAgUmF1bS4gQmVpbSBGZWhsZW4gZGVzIGRyaXR0ZW4gZ2lidCBlcyBrZWluZSBNZWxkdW5nIGFuIGRlbiBFbXBmYWVuZ2VyLgorCitCRUlTUElFTDoKKyAgICAgdm9pZCBjcmVhdGUoKSB7CisgICAgICAuLi4KKyAgICAgIFNldFByb3AoIFBfU0hPUlQsICJFdHdhcyBTYW5kIiApOworICAgICAgU2V0UHJvcCggUF9MT05HLCBicmVha19zdHJpbmcoCisJIkVpbiB3ZW5pZyBtYWdpc2NoZXIgU2FuZC4gU2VociBmZWlua3J1ZW1lbGlnLiIsNzggKSk7CisKKyAgICAgIFNldFByb3AoIFBfTkFNRSwgIlNhbmQiICk7CisgICAgICBBZGRJZCggKHsic2FuZCJ9KSApOworICAgICAgU2V0UHJvcCggUF9HRU5ERVIsIE1BTEUgKTsKKworICAgICAgU2V0UHJvcCggUF9HSVZFX01TRywgKHsKKyAgICAgICAiRHUgbGFlc3N0IEBXRU4yIGluIEBXRVNTRU4zIEhhZW5kZSByaWVzZWxuLiIsCisgICAgICAgIkBXRVIxIGxhZXNzdCBAV0VOVTIgaW4gQFdFU1NFTjMgSGFlbmRlIHJpZXNlbG4uIiwKKyAgICAgICAiQFdFUjEgbGFlc3N0IEBXRU5VMiBpbiBkZWluZSBIYWVuZGUgcmllc2Vsbi4ifSkpOworICAgICAgIC4uLgorICAgICAgfQorCisgICAgIERhcyBnYW56ZSBmdWVocnQgYmVpIFVnYXJzICJnaWIgc2FuZCBhbiBwZXRlciIgenUgZm9sZ2VuZGVuCisgICAgIE1lbGR1bmdlbjoKKworICAgICBVZ2FyOiAiRHUgbGFlc3N0IGRlbiBTYW5kIGluIFBldGVycyBIYWVuZGUgcmllc2Vsbi4iCisgICAgIFJhdW06ICJVZ2FyIGxhZXNzdCBTYW5kIGluIFBldGVycyBIYWVuZGUgcmllc2Vsbi4iCisgICAgIFBldGVyOiAiVWdhciBsYWVzc3QgU2FuZCBpbiBkZWluZSBIYWVuZGUgcmllc2Vsbi4iCisKK1NJRUhFIEFVQ0g6CisgICAgIEFlaG5saWNoZXM6IFBfRFJPUF9NU0csIFBfUFVUX01TRywgUF9QSUNLX01TRywgUF9TSE9XX01TRworICAgICBGZWhsZXI6ICAgICBQX1RPT19IRUFWWV9NU0csIFBfRU5WX1RPT19IRUFWWV9NU0csIFBfVE9PX01BTllfTVNHLAorICAgICAgICAgICAgICAgICBQX05PSU5TRVJUX01TRywgUF9OT0xFQVZFX01TRywgUF9OT0RST1AsIFBfTk9HRVQgCisgICAgIFNvbnN0aWdlczogIHJlcGxhY2VfcGVyc29uYWwoRSksIGdpdmUoTCksIGdpdmVfb2JqZWN0cyhMKSwKKwkJIGdpdmVfbm90aWZ5KEwpLCAvc3RkL2xpdmluZy9wdXRfYW5kX2dldC5jCisKKzE0LiBNYWVyeiAyMDA0IEdsb2luc29uCmRpZmYgLS1naXQgYS9kb2MvcHJvcHMvUF9HTE9CQUxfU0tJTExQUk9QUyBiL2RvYy9wcm9wcy9QX0dMT0JBTF9TS0lMTFBST1BTCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmZjMTJjMWUKLS0tIC9kZXYvbnVsbAorKysgYi9kb2MvcHJvcHMvUF9HTE9CQUxfU0tJTExQUk9QUwpAQCAtMCwwICsxLDI3IEBACitOQU1FOgorICAgIFBfR0xPQkFMX1NLSUxMUFJPUFMgICAgICAgICJzbV9nbG9iYWwiICAgICAgICAgICAgICAgICAgIAorCitERUZJTklFUlQgSU46CisgICAgL3N5cy9uZXdfc2tpbGxzLmgKKworQkVTQ0hSRUlCVU5HOgorICAgIERpZXNlIEdpbGRlbi0gdW5kIFNwZWxsYm9va3Byb3BlcnR5IGVudGhhZWx0IEVpZ2Vuc2NoYWZ0ZW4sIGRpZQorICAgIGFsbGUgU3BlbGxzIGVpbmVzIFNwZWxsYm9va3MgYnp3LiBhbGxlIFNraWxscyB1bmQgU3BlbGxzIGVpbmVyIEdpbGRlCisgICAgaGFiZW4gc29sbGVuLgorCitCRUlTUElFTEU6CisgICAgU2V0UHJvcChQX0dMT0JBTF9TS0lMTFBST1BTLAorICAgICAgKFtTSV9TS0lMTFJFU1RSX1VTRTogICAgIChbU1JfRlVOOiAjJ3NwZWxsVGVzdF0pLAorICAgICAgICBPRkZTRVQoU0lfU0tJTExMRUFSTik6ICMnbGVhcm5PZmZzZXQsCisgICAgICAgIE9GRlNFVChTSV9TUEVMTENPU1QpOiAgIydjb3N0T2Zmc2V0LAorICAgICAgICBGQUNUT1IoU0lfU1BFTExDT1NUKTogICMnY29zdEZhY3Rvcl0pKTsKKworU0lFSEUgQVVDSDoKKyAgICBHT2JqIFZlcndhbHRlbjogICBMZWFyblNraWxsLCBMZWFyblNwZWxsLCBJbml0aWFsU2tpbGxBYmlsaXR5CisgICAgKiBQcm9wZXJ0aWVzOiAgICAgUF9HVUlMRF9TS0lMTFMKKyAgICBTcGVsbGJvb2sgTGVybmVuOiBMZWFybiwgU3BlbGxTdWNjZXNzLCBFcmZvbGcsIE1pc3NlcmZvbGcKKyAgICAqIFZlcndhbHRlbjogICAgICBBZGRTcGVsbCwgUXVlcnlTcGVsbAorICAgICogUHJvcGVydGllczogICAgIFBfU0JfU1BFTExTCisgICAgU2tpbGxzOiAgICAgICAgICAgUF9ORVdTS0lMTFMsIHNwcnVjaGVybXVlZHVuZywgc2tpbGxfaW5mb19saXN0ZQorCiszLiBPa3QgMjAxMSBHbG9pbnNvbgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2RvYy9wcm9wcy9QX0dVQVJEIGIvZG9jL3Byb3BzL1BfR1VBUkQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZWJlYjk4OQotLS0gL2Rldi9udWxsCisrKyBiL2RvYy9wcm9wcy9QX0dVQVJECkBAIC0wLDAgKzEsNTAgQEAKK1BfR1VBUkQKK05BTUU6CisgICAgIFBfR1VBUkQJCQkJImd1YXJkIgorCitERUZJTklFUlQgSU46CisgICAgIC9zeXMvZ3VhcmQuaAorCitCRVNDSFJFSUJVTkc6CisgICAgIERpZXNlIFByb3BlcnR5IGdpYnQgYW4sIG9iIGVpbiBOUEMgYXVzIGVpbmVtIFJhdW0gZW50ZmVybnQgd2VyZGVuIGRhcmYKKyAgICAgb2RlciBuaWNodC4gQWJnZWZyYWd0IHdlcmRlbiBtdXNzIGRpZXMgdm9uIGRlbiBJdGVtcyBvZGVyIFNwZWxscywgZGllCisgICAgIGRlbiBOUEMgenUgZWluZXIgQmV3ZWd1bmcgendpbmdlbiB3b2xsZW4uIEVzIHdpcmQgbmljaHQgYXV0b21hdGlzY2gKKyAgICAgZGFyYXVmIGdlYWNodGV0IQorCisgICAgIEVudHNjaGVpZGVuZCBoaWVyYmVpIGlzdCBlaW4gaW4gZGVyIFByb3BlcnR5IGVudGhhbHRlbmUgKGdhbnp6YWhsaWdlcikKKyAgICAgWmFobGVud2VydCB6d2lzY2hlbiAwIHVuZCAxMDAsIGRlciBoaWVyYmVpIGRlbiBHcmFkIGRlcgorICAgICAnQmV3YWNodW5nc3N0YWVya2UnIGVpbmVzIE5QQ3MgYW5naWJ0LiBCZWkgMCBsYWVzc3Qgc2ljaCBkYXMgTGViZXdlc2VuCisgICAgIGltbWVyIHp1IGVpbmVyIEJld2VndW5nIHVlYmVycmVkZW4sIGJlaSAxMDAgdWViZXJoYXVwdCBuaWNodC4gRGF6d2lzY2hlbgorICAgICBnaWJ0IGVzIGRpZSBXYWhyc2NoZWlubGljaGtlaXQgZGFmdWVyIGFuLgorCitCRU1FUktVTkdFTjoKKyAgICAgLSBhbGxlIHZvbiAvc3RkL25wYyBhYmdlbGVpdGV0ZW4gTlBDcyBoYWJlbiBzdGFuZGFyZG1hZXNzaWcgUF9HVUFSRAorICAgICAgIGF1ZiAxMDAgZ2VzZXR6dCwgc2luZCBhbHNvIG5pY2h0IGZvcnRmdWVocmJhcgorICAgICAtIGJlaSBkZXIgRXJ6ZXVndW5nIHZvbiBOUENzIG1pdCBQX0dVQVJEIDwgMTAwIEFkZEl0ZW0oKSBtaXQgZGVtCisgICAgICAgUGFyYW1ldGVyIFJFRlJFU0hfTU9WRV9IT01FIHZlcndlbmRlbiwgZGFtaXQgc2llIGJlaSBlaW5lbSBSYXVtcmVzZXQKKyAgICAgICBnZWdlYmVuZW5mYWxscyBhbiBpaHJlbiBBdXNnYW5nc29ydCB6dXJ1ZWNra2VocmVuLiAKKyAgICAgLSBnaWxkZW5zcGV6aWZpc2NoZSB3ZWl0ZXJlIEFiZnJhZ2VuIGF1ZiBMZXZlbCBvQWUgYml0dGUgYmVpIEdpbGRlbi0KKyAgICAgICBtYWdpZXJuIGVyZnJhZ2VuCisKK0JFSVNQSUVMRToKKyAgICAgLy8gZWluIFRlc3QKKyAgICAgaWYocmFuZG9tKDEwMCk8PWxpdi0+UXVlcnlQcm9wKFBfR1VBUkQpKQorICAgICAgY2Fubm90TW92ZU5QQygpOyAvLyBOUEMgZGFyZiBuaWNodCBiZXdlZ3Qgd2VyZGVuIQorICAgICBlbHNlCisgICAgICBtb3ZlTlBDKCk7ICAgICAgIC8vIE5QQyBkYXJmIGJld2VndCB3ZXJkZW4KKworICAgICAvLyBlaW4gd2VnZnVlaHJiYXJlciBOUEMKKyAgICAgdm9pZCBjcmVhdGUoKSB7CisgICAgICA6OmNyZWF0ZSgpOworICAgICAgLi4uCisgICAgICBTZXRQcm9wKFBfR1VBUkQsNTApOworICAgICAgLi4uCisgICAgIH0KKyAgICAgLy8gbWl0IDUwJSBXYWhyc2NoZWlubGljaGtlaXQgKHBybyBWZXJzdWNoKSBsYWVzc3Qgc2ljaCBkZXIgTlBDIG51bgorICAgICAvLyBmb3J0ZnVlaHJlbgorCisKK1NJRUhFIEFVQ0g6CisgICAgIEFkZEl0ZW0oKQorCisxMy5BcHJpbCAyMDA0IEdsb2luc29uCmRpZmYgLS1naXQgYS9kb2MvcHJvcHMvUF9HVUlMRCBiL2RvYy9wcm9wcy9QX0dVSUxECm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmJjZmZiNGMKLS0tIC9kZXYvbnVsbAorKysgYi9kb2MvcHJvcHMvUF9HVUlMRApAQCAtMCwwICsxLDIyIEBACitQX0dVSUxECitOQU1FOgorICAgICBQX0dVSUxECQkJCSJndWlsZCIgICAgICAgICAgICAgICAgICAgICAgIAorCitERUZJTklFUlQgSU46CisgICAgIC9zeXMvcHJvcGVydGllcy5oCisKK0JFU0NIUkVJQlVORzoKKyAgICAgRGllc2UgUHJvcGVydHkgZW50aGFlbHQgZGVuIE5hbWVuIGRlciBHaWxkZSwgd2VsY2hlciBkYXMgTGViZXdlc2VuCisgICAgIGFuZ2Vob2VydC4gRGVyIE5hbWUgZGVyIEdpbGRlIGlzdCBoaWVyYmVpIGtsZWluZ2VzY2hyaWViZW4gYWxzIFN0cmluZworICAgICBkZWZpbmllcnQuCisKK0JFTUVSS1VOR0VOOgorICAgICBCZWkgU3BpZWxlcm4gaXN0IGRlciBXZXJ0IGRpZXNlciBQcm9wZXJ0eSBuaWVtYWxzIE51bGwsIGRlbm4gc2llCisgICAgIGdlaG9lcmVuIHN0YW5kYXJkbWFlc3NpZyBkZXIgaW4gUF9ERUZBVUxUX0dVSUxEIHN0ZWhlbmRlbiBHaWxkZSBhbi4KKyAgICAgVWViZXIgZGllIGdlc2V0enRlIFBfR1VJTEQgd2VyZGVuIGF1Y2ggYWt0aXZlIFNraWxscyBlcm1pdHRlbHQuCisKK1NJRUhFIEFVQ0g6CisgICAgIFBfREVGQVVMVF9HVUlMRCwgUF9WSVNJQkxFX0dVSUxECisgICAgIFBfR1VJTERfVElUTEUsIFBfU1VCR1VJTERfVElUTEUKKworMjYuIE1hZXJ6IDIwMDQgR2xvaW5zb24KZGlmZiAtLWdpdCBhL2RvYy9wcm9wcy9QX0dVSUxEX0RFQUNUSVZBVEVfU0tJTExTIGIvZG9jL3Byb3BzL1BfR1VJTERfREVBQ1RJVkFURV9TS0lMTFMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMDE5ZGEzMAotLS0gL2Rldi9udWxsCisrKyBiL2RvYy9wcm9wcy9QX0dVSUxEX0RFQUNUSVZBVEVfU0tJTExTCkBAIC0wLDAgKzEsMzggQEAKK1BST1BFUlRZOgorCisgIFBfR1VJTERfREVBQ1RJVkFURV9TS0lMTFMgICAgICJndWlsZF9kZWFjdGl2YXRlX3NraWxscyIKKworREVGSU5JRVJUIElOOiAKKworICBuZXdfc2tpbGxzLmgKKworQkVTQ0hSRUlCVU5HOgorCisgIERpZXNlIFByb3BlcnR5IGVybGF1YnQgZXMsIEdpbGRlbm1pdGdsaWVkZXJuIGRpZSBiZW51dHp1bmcgdm9uIEFOWS0KKyAgU2tpbGxzIHp1IHVudGVyc2FnZW4uIERpZXMgc2luZCBlaW5lcnNlaXRzIGRpZSBhbGxnZW1laW5lbiBXYWZmZW5za2lsbHMsCisgIGFuZGVyZXJzZWl0cyBrb2VubnRlIGRhcyBhdWNoIGRlciBlbnRnaWZ0ZS1TcHJ1Y2ggZGVyIER1ZXN0ZXJ3YWxkIC0KKyAgUXVlc3Qgc2Vpbi4KKworICBXZXJ0IGRpZXNlciBQcm9wZXJ0eSBpc3QgZWluIE1hcHBpbmcsIGRhcyBhbHMgS2V5cyBkaWUgZWluemVsbmVuCisgIFNraWxscyB1bmQgYWxzIFdlcnQgMSBlbnRoYWVsdCwgd2VubiBlaW4gU2tpbGwgZGVha3RpdmllcnQKKyAgd2VyZGVuIHNvbGwgdW5kIDAsIGZhbGxzIG5pY2h0LgorCisgIERpZXNlIFByb3BlcnR5IHdpcmQgbnVyIGJlaSBlaW5lbSBOZXVlcnpldWdlbiBkZXMgU3BpZWxlcnMgbmV1IAorICBhdXNnZWxlc2VuLCBkYSBlcyBzb25zdCB6dXZpZWwgUmVjaGVuemVpdCBrb3N0ZXQuCisKK0JFSVNQSUVMOgorCisgIEplZGUgR2lsZGUsIGRpZSBrZWluZSBXYWZmZW5za2lsbHMgYmVudXR6ZW4gc29sbCAob2RlciBzZWxic3Qgd2VsY2hlIGhhdCkKKyAgZW50aGFlbHQgZm9sZ2VuZGVuIEJlZmVobDoKKworICAgIFNldFByb3AoUF9HVUlMRF9ERUFDVElWQVRFX1NLSUxMUywKKyAgICAoW0ZJR0hUKFdUX1NXT1JEKToxLAorICAgIEZJR0hUKFdUX0FYRSk6MSwKKyAgICBGSUdIVChXVF9DTFVCKToxLAorICAgIEZJR0hUKFdUX1NQRUFSKToxLAorICAgIEZJR0hUKFdUX0tOSUZFKToxLAorICAgIEZJR0hUKFdUX1dISVApOjFdKSk7CisgICAgCitMRVRaVEUgQUVOREVSVU5HOiAKKworMjAwMy0wMS0zMCwgMTQ6MTUsIEh1bW5pCmRpZmYgLS1naXQgYS9kb2MvcHJvcHMvUF9HVUlMRF9ERUZBVUxUX1NQRUxMQk9PSyBiL2RvYy9wcm9wcy9QX0dVSUxEX0RFRkFVTFRfU1BFTExCT09LCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjlhZDkxNTAKLS0tIC9kZXYvbnVsbAorKysgYi9kb2MvcHJvcHMvUF9HVUlMRF9ERUZBVUxUX1NQRUxMQk9PSwpAQCAtMCwwICsxLDIzIEBACitOQU1FOgorCVBfR1VJTERfREVGQVVMVF9TUEVMTEJPT0sJImd1aWxkX3NiIiAgICAgICAgICAgICAgICAgICAgCisKK0RFRklOSUVSVCBJTjoKKwkvc3lzL25ld19za2lsbHMuaAorCitCRVNDSFJFSUJVTkc6CisJRGllc2UgR2lsZGVucHJvcGVydHkgZW50aGFlbHQgZGVuIE5hbWVuIGRlcyBTcGVsbGJvb2tzLCB3ZWxjaGVzCisJc3RhbmRhcmRtYWVzc2lnIHZvbiBkZXIgR2lsZGUgdmVyd2VuZGV0IHdpcmQuCisKK0JFTUVSS1VOR0VOOgorCUJlaSBTcGVsbHMga2FubiBzaWUgbWl0IFNJX1NQRUxMQk9PSyB1ZWJlcnNjaHJpZWJlbiB3ZXJkZW4uCisKK0JFSVNQSUVMRToKKwlCZWkgWmF1YmVyZXJuIHdhZXJlIGZvbGdlbmRlcyBkZW5rYmFyOgorCSAgU2V0UHJvcChQX0dVSUxEX0RFRkFVTFRfU1BFTExCT09LLCJtYWdpZV9zcCIpOworCURhcyBTcGVsbGJvb2sgaXN0IGhpZXJiZWkgdW50ZXIgIi9zcGVsbGJvb2tzL21hZ2llX3NwLmMiIHp1IGZpbmRlbi4KKworU0lFSEUgQVVDSDoKKwlQX0dVSUxECisKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KK0xhc3QgbW9kaWZpZWQ6IFdlZCBKYW4gMTQgMTk6MTc6MDYgMTk5OCBieSBQYXRyeW4KZGlmZiAtLWdpdCBhL2RvYy9wcm9wcy9QX0dVSUxEX0ZFTUFMRV9USVRMRVMgYi9kb2MvcHJvcHMvUF9HVUlMRF9GRU1BTEVfVElUTEVTCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmIxNTI4ZTkKLS0tIC9kZXYvbnVsbAorKysgYi9kb2MvcHJvcHMvUF9HVUlMRF9GRU1BTEVfVElUTEVTCkBAIC0wLDAgKzEsMjQgQEAKK05BTUU6CisJUF9HVUlMRF9GRU1BTEVfVElUTEVTCQkiZ3VpbGRfZmVtYWxlX3RpdGxlcyIgICAgICAgICAKKworREVGSU5JRVJUIElOOgorCS9zeXMvbmV3X3NraWxscy5oCisKK0JFU0NIUkVJQlVORzoKKwlEaWVzZSBHaWxkZW5wcm9wZXJ0eSBlbnRoYWVsdCBkaWUgU3R1ZmVuYmV6ZWljaG51bmdlbiBmdWVyCisJd2VpYmxpY2hlIEdpbGRlbm1pdGdsaWVkZXIuIEFscyBTY2hsdWVzc2VsIGRpZW5lbiBoaWVyYmVpIGRpZQorCUdpbGRlbnN0dWZlbiB1bmQgZGllIGVudHNwcmVjaGVuZGVuIEVpbnRyYWVnZSBzaW5kIGRhbm4gZGllIHp1cgorCVN0dWZlIGdlaG9lcmlnZW4gR2lsZGVudGl0ZWwuCisKK0JFSVNQSUVMRToKKwlFaW5lIFByb2dyYW1taWVyZXJnaWxkZSBrb2VubnRlIGZvbGdlbmRlIFN0dWZlbmJlemVpY2hudW5nZW4KKwliZWluaGFsdGVuOgorCSAgU2V0UHJvcChQX0dVSUxEX0ZFTUFMRV9USVRMRVMsKFsxOiJkaWUgQW5mYWVuZ2VyaW4iLAorCSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAyOiJkaWUgRm9ydGdlc2Nocml0dGVuZSIsCisJICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDM6ImRpZSBQcm9mZXNzaW9uZWxsZSA7KSJdKSk7CisKK1NJRUhFIEFVQ0g6CisJUF9HRU5ERVIsIFBfR1VJTERfTEVWRUwsIFBfR1VJTERfVElUTEUsIFBfR1VJTERfTUFMRV9USVRMRVMKKworLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorTGFzdCBtb2RpZmllZDogV2VkIEphbiAxNCAxOToxNzowNiAxOTk4IGJ5IFBhdHJ5bgpkaWZmIC0tZ2l0IGEvZG9jL3Byb3BzL1BfR1VJTERfTEVWRUwgYi9kb2MvcHJvcHMvUF9HVUlMRF9MRVZFTApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi40OTIwNDQ5Ci0tLSAvZGV2L251bGwKKysrIGIvZG9jL3Byb3BzL1BfR1VJTERfTEVWRUwKQEAgLTAsMCArMSwyMyBAQAorTkFNRToKKwlQX0dVSUxEX0xFVkVMCQkJImd1aWxkX2xldmVsIiAgICAgICAgICAgICAgICAgCisKK0RFRklOSUVSVCBJTjoKKwkvc3lzL25ld19za2lsbHMuaAorCitCRVNDSFJFSUJVTkc6CisJRGllc2UgUHJvcGVydHkgZW50aGFlbHQgZGllIEdpbGRlbnN0dWZlIGRlcyBMZWJld2VzZW5zLCB3ZWxjaGUgbmljaHQKKwl1bmJlZGluZ3Qgc2VpbmVyIFNwaWVsZXJzdHVmZSBlbnRzcHJpY2h0LgorCitCRU1FUktVTkdFTjoKKwlCZWkgbWFuY2hlbiBHaWxkZW4gZW50c3ByaWNodCBkaWUgR2lsZGVuc3R1ZmUgc3RhbmRhcmRtYWVzc2lnIGRlcgorCVNwaWVsZXJzdHVmZSAoQWJlbnRldXJlciwgS2F0emVua3JpZWdlcikuIEluIGRlciBQcm9wZXJ0eSBzZWxic3QKKwl3aXJkIGVpZ2VudGxpY2ggZWluIE1hcHBpbmcgZWluZ2V0cmFnZW4sIHdlbGNoZXMgZGllIEdpbGRlbm5hbWVuIGFscworCVNjaGx1ZXNzZWwgdW5kIGRpZSBkYXp1Z2Vob2VyaWdlIEdpbGRlbnN0dWZlIGFscyBFaW50cmFnIGVudGhhZWx0LgorCUJlaSBkZXIgQWJmcmFnZSBkZXIgUHJvcGVydHkgd2lyZCBqZWRvY2ggZGllIEdpbGRlIGJlcnVlY2tzaWNodGlndAorCXVuZCBkaWUgYWt0dWVsbGUgR2lsZGVuc3R1ZmUgenVydWVja2dlbGllZmVydC4KKworU0lFSEUgQVVDSDoKKwlQX0dVSUxELCBQX0dVSUxEX1RJVExFLCBQX0dVSUxEX01BTEVfVElUTEVTLCBQX0dVSUxEX0ZFTUFMRV9USVRMRVMKKworLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorTGFzdCBtb2RpZmllZDogV2VkIEphbiAxNCAxOToxNzowNiAxOTk4IGJ5IFBhdHJ5bgpkaWZmIC0tZ2l0IGEvZG9jL3Byb3BzL1BfR1VJTERfTEVWRUxTIGIvZG9jL3Byb3BzL1BfR1VJTERfTEVWRUxTCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjgwZDIyMzcKLS0tIC9kZXYvbnVsbAorKysgYi9kb2MvcHJvcHMvUF9HVUlMRF9MRVZFTFMKQEAgLTAsMCArMSwzNSBAQAorTkFNRToKKwlQX0dVSUxEX0xFVkVMUwkJCSJndWlsZF9sZXZlbHMiICAgICAgICAgICAgICAgIAorCitERUZJTklFUlQgSU46CisJL3N5cy9uZXdfc2tpbGxzLmgKKworQkVTQ0hSRUlCVU5HOgorCURpZXNlIEdpbGRlbnByb3BlcnR5IGVudGhhZWx0IGVpbiBNYXBwaW5nIG1pdCBkZW4KKwlTdHVmZW5iZXNjaHJhZW5rdW5nZW4gZnVlciBkaWUgamV3ZWlsaWdlbiBHaWxkZW5zdHVmZW4uIEFscworCVNjaGx1ZXNzZWwgZGllbnQgZGVyIGpld2VpbGlnZSBHaWxkZW5sZXZlbCB1bmQgZGllIGVudHNwcmVjaGVuZGVuCisJRWludHJhZWdlIHNpbmQgd2llZGVydW0gTWFwcGluZ3MsIGluIHdlbGNoZW4gZGllIEJlc2NocmFlbmt1bmdlbgorCWFuZ2VnZWJlbiBzaW5kLgorCitCRU1FUktVTkdFTjoKKwlEaWUgQmVzY2hyYWVua3VuZ2VuIGZ1ZXIgTGV2ZWwgMSBzb2xsdGVuIGF1Y2ggZnVlciBkaWUKKwlFaW50cml0dHNiZXNjaHJhZW5rdW5nZW4gZGVyIEdpbGRlIGdlbHRlbi4gTGV0enRlcmUga2FubiBtYW4gaW4gZGVyCisJUHJvcGVydHkgUF9HVUlMRF9SRVNUUklDVElPTlMgYW5nZWJlbi4KKworQkVJU1BJRUxFOgorCURhcyBmb2xnZW5kZSBCZWlzcGllbCB6ZWlndCBlaW4gcGFhciBtb2VnbGljaGUgQWJmcmFnZW46CisJICBzdHJpbmcgY2hlY2sob2JqZWN0IHBsKTsKKwkgIFNldFByb3AoUF9HVUlMRF9MRVZFTFMsKFsxOihbUF9MRVZFTDozLFBfUVA6MTAwLFNSX0ZVTjojJ2NoZWNrXSksCisJICAgICAgICAgICAgICAgICAgICAgICAgICAgMjooW0FfSU5UOjEwLFBfTEVWRUw6MjVdKSwKKwkgICAgICAgICAgICAgICAgICAgICAgICAgICAzOihbQV9JTlQ6MjAsUF9MRVZFTDo1MF0pXSkpOworCSAgc3RyaW5nIGNoZWNrKG9iamVjdCBwbCkKKwkgIHsgaWYocGwtPlF1ZXJ5UHJvcChQX01BTEUpKQorCSAgICAgIHJldHVybiAwOworCSAgICByZXR1cm4gIkZ1ZXIgRnJhdWVuIGlzdCBkYXMgbmljaHRzIVxuIjsKKwkgIH0KKworU0lFSEUgQVVDSDoKKwlQX0dVSUxEX0xFVkVMLCBQX0dVSUxEX1JFU1RSSUNUSU9OUywgL3N0ZC9yZXN0cmljdGlvbl9jaGVja2VyLmMKKworLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorTGFzdCBtb2RpZmllZDogV2VkIEphbiAxNCAxOToxNzowNiAxOTk4IGJ5IFBhdHJ5bgpkaWZmIC0tZ2l0IGEvZG9jL3Byb3BzL1BfR1VJTERfTUFMRV9USVRMRVMgYi9kb2MvcHJvcHMvUF9HVUlMRF9NQUxFX1RJVExFUwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4yN2UwNWE1Ci0tLSAvZGV2L251bGwKKysrIGIvZG9jL3Byb3BzL1BfR1VJTERfTUFMRV9USVRMRVMKQEAgLTAsMCArMSwyNCBAQAorTkFNRToKKwlQX0dVSUxEX01BTEVfVElUTEVTCQkiZ3VpbGRfbWFsZV90aXRsZXMiICAgICAgICAgICAKKworREVGSU5JRVJUIElOOgorCS9zeXMvbmV3X3NraWxscy5oCisKK0JFU0NIUkVJQlVORzoKKwlEaWVzZSBHaWxkZW5wcm9wZXJ0eSBlbnRoYWVsdCBkaWUgU3R1ZmVuYmV6ZWljaG51bmdlbiBmdWVyCisJbWFlbm5saWNoZSBHaWxkZW5taXRnbGllZGVyLiBBbHMgU2NobHVlc3NlbCBkaWVuZW4gaGllcmJlaSBkaWUKKwlHaWxkZW5zdHVmZW4gdW5kIGRpZSBlbnRzcHJlY2hlbmRlbiBFaW50cmFlZ2Ugc2luZCBkYW5uIGRpZSB6dXIKKwlTdHVmZSBnZWhvZXJpZ2VuIEdpbGRlbnRpdGVsLgorCitCRUlTUElFTEU6CisJRWluZSBQcm9ncmFtbWllcmVyZ2lsZGUga29lbm50ZSBmb2xnZW5kZSBTdHVmZW5iZXplaWNobnVuZ2VuCisJYmVpbmhhbHRlbjoKKwkgIFNldFByb3AoUF9HVUlMRF9NQUxFX1RJVExFUywoWzE6ImRlciBBbmZhZW5nZXIiLAorCSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMjoiZGVyIEZvcnRnZXNjaHJpdHRlbmUiLAorCSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMzoiZGVyIFByb2ZpIl0pKTsKKworU0lFSEUgQVVDSDoKKwlQX0dFTkRFUiwgUF9HSUxEX0xFVkVMLCBQX0dVSUxEX1RJVExFLCBQX0dVSUxEX0ZFTUFMRV9USVRMRVMKKworLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorTGFzdCBtb2RpZmllZDogV2VkIEphbiAxNCAxOToxNzowNiAxOTk4IGJ5IFBhdHJ5bgpkaWZmIC0tZ2l0IGEvZG9jL3Byb3BzL1BfR1VJTERfUFJFUEFSRUJMT0NLIGIvZG9jL3Byb3BzL1BfR1VJTERfUFJFUEFSRUJMT0NLCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmU0MjlhNDkKLS0tIC9kZXYvbnVsbAorKysgYi9kb2MvcHJvcHMvUF9HVUlMRF9QUkVQQVJFQkxPQ0sKQEAgLTAsMCArMSwzNyBAQAorUF9HVUlMRF9QUkVQQVJFQkxPQ0sgKGludCkKKworTkFNRToKKyAgUF9HVUlMRF9QUkVQQVJFQkxPQ0sgICAgICAgICAgICAgICAgICAgICAgICAgICAiZ3VpbGRfcHJlcGFyZWJsb2NrIiAKKworREVGSU5JRVJUIElOOgorICAvc3lzL25ld19za2lsbHMuaAorCitCRVNDSFJFSUJVTkc6CisgIERpZXNlIFByb3BlcnR5IGVudGhhZWx0IGRpZSBJbmZvcm1hdGlvbiwgb2IgZGFzIExlYmV3ZXNlbiBpbgorICBkZXIgS29uemVudHJhdGlvbnNwaGFzZSBlaW5lcyBTcGVsbHMgd2VpdGVya2FlbXBmdCBvZGVyIG9iCisgIGRpZSBBbmdyaWZmZSBkZXJ3ZWlsIGF1c2dlc2V0enQgd2VyZGVuLgorCitCRU1FUktVTkdFTjoKKyAgSW4gZGVyIFByb3BlcnR5IHNlbGJzdCB3aXJkIGVpZ2VudGxpY2ggZWluIE1hcHBpbmcgZWluZ2V0cmFnZW4sCisgIHdlbGNoZXMgZGllIEdpbGRlbm5hbWVuIGFscyBTY2hsdWVzc2VsIHVuZCBkYXMgZGF6dWdlaG9lcmlnZQorICBCbG9jay1GbGFnIGFscyBFaW50cmFnIGVudGhhZWx0LiBCZWkgZGVyIEFiZnJhZ2UgZGVyIFByb3BlcnR5IHdpcmQKKyAgamVkb2NoIGRpZSBHaWxkZSBiZXJ1ZWNrc2ljaHRpZ3QgdW5kIGRhcyBha3R1ZWxsZSBGbGFnCisgIHp1cnVlY2tnZWxpZWZlcnQuCisgIERlbWVudHNwcmVjaGVuZCBkYXMgZGllc2UgUHJvcCBuaWNodCBtaXQgU2V0KCkgbWFuaXB1bGllcnQgd2VyZGVuLCAKKyAgYml0dGUgYXVzc2NobGllc3NsaWNoZSBTZXRQcm9wKCkgdmVyd2VuZGVuLgorCitCRUlTUElFTEU6CisgIERpZSBQcm9wZXJ0eSBzb2xsdGUgbmF0dWVybGljaCBudXIgdm9uIGRlciBHaWxkZSBnZXNldHp0IHdlcmRlbgorICB1bmQgYXVjaCBudXIgYmVpIEdpbGRlbm1pdGdsaWVkZXJuCisKKyAgaWYgKCBJc0d1aWxkTWVtYmVyKHBsKSApCisgICAgcGwtPlNldFByb3AoUF9HVUlMRF9QUkVQQVJFQkxPQ0ssMSk7CisKKyAgUmVzdWx0YXQ6IEtlaW4gQXVzZnVlaHJlbiB2b24gQXR0YWNrKCksIHdlbm4gcGwgc2ljaCBhdWYgZWluZW4KKyAgWmF1YmVyc3BydWNoIGtvbnplbnRyaWVydC4KKworU0lFSEUgQVVDSDoKKyAgUF9QUkVQQVJFRF9TUEVMTAorCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisxOC4wMy4yMDA4LCBaZXNzdHJhCmRpZmYgLS1naXQgYS9kb2MvcHJvcHMvUF9HVUlMRF9SQVRJTkcgYi9kb2MvcHJvcHMvUF9HVUlMRF9SQVRJTkcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZGY1ODAwYQotLS0gL2Rldi9udWxsCisrKyBiL2RvYy9wcm9wcy9QX0dVSUxEX1JBVElORwpAQCAtMCwwICsxLDIyIEBACitOQU1FOgorCVBfR1VJTERfUkFUSU5HCQkJImd1aWxkX3JhdGluZyIgICAgICAgICAgICAgICAgCisKK0RFRklOSUVSVCBJTjoKKwkvc3lzL25ld19za2lsbHMuaAorCitCRVNDSFJFSUJVTkc6CisJSW4gZGllc2VyIFByb3BlcnR5IHdpcmQgZGllIEVpbnN0dWZ1bmcgZGVzIFNwaWVsZXJzIGlubmVyaGFsYgorCXNlaW5lciBHaWxkZSBmZXN0Z2VsZWd0LiBEZXIgZGFmdWVyIHp1IGVybWl0dGVsbmRlIFdlcnQgbXVzcyBpbgorCWVpbmVtIEJlcmVpY2ggdm9uIDAgYmlzIDEwMDAwIGxpZWdlbi4gV2llIHNpY2ggZGllIEVpbnN0dWZ1bmcKKwl6dXNhbW1lbnNldHp0LCBibGVpYnQgZGVyIGpld2VpbGlnZW4gR2lsZGUgdWViZXJsYXNzZW4uCisKK0JFTUVSS1VOR0VOOgorCURlciBXZXJ0IG11c3Mgdm9uIGRlciBHaWxkZSBlcm1pdHRlbHQgd2VyZGVuISBNZWlzdCBzZXR6dCBlciBzaWNoCisJYXVzIGRlbiBGYWVoaWdrZWl0ZW4gZGVzIE1pdGdsaWVkcyB6dXNhbW1lbiB1bmQgbWl0dW50ZXIgZmxpZXNzZW4KKwlhdWNoIEdpbGRlbnF1ZXN0cyBvZGVyIGFlaG5saWNoZXMgbWl0IGVpbi4KKworU0lFSEUgQVVDSDoKKyAgICBQX05FV1NLSUxMUywgR3VpbGRSYXRpbmcKKworLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorTGFzdCBtb2RpZmllZDogV2VkIEphbiAxNCAxOToxNzowNiAxOTk4IGJ5IFBhdHJ5bgpkaWZmIC0tZ2l0IGEvZG9jL3Byb3BzL1BfR1VJTERfUkVTVFJJQ1RJT05TIGIvZG9jL3Byb3BzL1BfR1VJTERfUkVTVFJJQ1RJT05TCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjhiYmFiYzEKLS0tIC9kZXYvbnVsbAorKysgYi9kb2MvcHJvcHMvUF9HVUlMRF9SRVNUUklDVElPTlMKQEAgLTAsMCArMSwzNyBAQAorTkFNRToKKyAgICBQX0dVSUxEX1JFU1RSSUNUSU9OUyAgICAgICAgImd1aWxkX3Jlc3QiICAgICAgICAgICAgICAgICAgCisKK0RFRklOSUVSVCBJTjoKKyAgICAvc3lzL25ld19za2lsbHMuaAorCitCRVNDSFJFSUJVTkc6CisgICAgRGllc2UgR2lsZGVucHJvcGVydHkgZW50aGFlbHQgZWluIE1hcHBpbmcgbWl0IGRlbgorICAgIEVpbnRyaXR0c2Jlc2NocmFlbmt1bmdlbiBmdWVyIGRpZSBqZXdlaWxpZ2UgR2lsZGUuCisKK0JFTUVSS1VOR0VOOgorICAgIEltIGFsbGdlbWVpbmVuIHNvbGx0ZSBkYXMgTWFwcGluZyBtaXQgZGVuIEVpbnRyaXR0c2Jlc2NocmFlbmt1bmdlbgorICAgIG1pdCBkZW4gQmVzY2hyYWVua3VuZ2VuIGZ1ZXIgTGV2ZWwgMSBpbSBNYXBwaW5nIHZvbiBQX0dVSUxEX0xFVkVMUworICAgIHVlYmVyZWluc3RpbW1lbi4KKworQkVJU1BJRUxFOgorICAgIEVpbiBwYWFyIG1vZWdsaWNoZSBBYmZyYWdlbiB3YWVyZW4gZm9sZ2VuZGU6CisgICAgc3RyaW5nIGNoZWNrKG9iamVjdCBwbCk7CisKKyAgICBTZXRQcm9wKFBfR1VJTERfUkVTVFJJQ1RJT05TLAorICAgICAgICAgICAgKFtQX0xFVkVMOjMsCisgICAgICAgICAgICAgIFBfUVA6MTAwLAorICAgICAgICAgICAgICBTUl9GVU46IydjaGVja10pKTsKKworICAgIHN0cmluZyBjaGVjayhvYmplY3QgcGwpIHsKKyAgICAgIGlmKHBsLT5RdWVyeVByb3AoUF9NQUxFKSkKKyAgICAgICAgcmV0dXJuIDA7CisgICAgICByZXR1cm4gIkZ1ZXIgRnJhdWVuIGlzdCBkYXMgbmljaHRzIVxuIjsKKyAgICB9CisKK1NJRUhFIEFVQ0g6CisgICAgR2lsZGVuZmt0LjoKKyAgICAqIEVpbi9BdXN0cml0dDogYmVpdHJldGVuLCBiZWlfb2Rlcl9hdXNfdHJldGVuLCBhdXN0cmV0ZW4KKyAgICAqIFNvbnN0aWdlczogICAgUF9HVUlMRF9MRVZFTFMKKyAgICBTb25zdGlnZXM6ICAgICAgL3N0ZC9yZXN0cmljdGlvbl9jaGVja2VyLmMKKworMy4gT2t0IDIwMTEgR2xvaW5zb24KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9kb2MvcHJvcHMvUF9HVUlMRF9TS0lMTFMgYi9kb2MvcHJvcHMvUF9HVUlMRF9TS0lMTFMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZDdlMzBhMgotLS0gL2Rldi9udWxsCisrKyBiL2RvYy9wcm9wcy9QX0dVSUxEX1NLSUxMUwpAQCAtMCwwICsxLDI0IEBACitQX0dVSUxEX1NLSUxMUworTkFNRToKKyAgICBQX0dVSUxEX1NLSUxMUyAgICAgICAgICAgICJndWlsZF9za2lsbHMiICAgICAgICAgICAgICAgIAorCitERUZJTklFUlQgSU46CisgICAgL3N5cy9uZXdfc2tpbGxzLmgKKworQkVTQ0hSRUlCVU5HOgorICAgIERpZXNlIEdpbGRlbnByb3BlcnR5IGVudGhhZWx0IGVpbiBNYXBwaW5nIG1pdCBhbGxlbiBTa2lsbHMgdW5kCisgICAgU3BlbGxzIGRlciBHaWxkZS4KKworQkVNRVJLVU5HRU46CisgICAgTWFuIHNvbGx0ZSBkaWVzZSBQcm9wZXJ0eSBzb2xsdGUgbmljaHQgcGVyIEhhbmQgdmVyYWVuZGVybiwgc29uZGVybgorICAgIGRpZSBGdW5rdGlvbmVuIEFkZFNraWxsKCkgYnp3LiBBZGRTcGVsbCgpIG51dHplbi4KKworU0lFSEUgQVVDSDoKKyAgICBHT2JqIFZlcndhbHRlbjogICBMZWFyblNraWxsLCBMZWFyblNwZWxsLCBJbml0aWFsU2tpbGxBYmlsaXR5CisgICAgKiBTb25zdGlnZXM6ICAgICAgR3VpbGRSYXRpbmcKKyAgICBTcGVsbGJvb2sgTGVybmVuOiBMZWFybiwgU3BlbGxTdWNjZXNzLCBFcmZvbGcsIE1pc3NlcmZvbGcKKyAgICAqIFZlcndhbHRlbjogICAgICBBZGRTcGVsbCwgUXVlcnlTcGVsbAorICAgICogUHJvcGVydGllczogICAgIFBfU0JfU1BFTExTLCBQX0dMT0JBTF9TS0lMTFBST1BTLCBQX0dVSUxEX1JBVElORworICAgIFNraWxsczogICAgICAgICAgIFBfTkVXU0tJTExTLCBzcHJ1Y2hlcm11ZWR1bmcsIHNraWxsX2luZm9fbGlzdGUKKworMy4gT2t0IDIwMTEgR2xvaW5zb24KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9kb2MvcHJvcHMvUF9HVUlMRF9USVRMRSBiL2RvYy9wcm9wcy9QX0dVSUxEX1RJVExFCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjQ1NTQzNDkKLS0tIC9kZXYvbnVsbAorKysgYi9kb2MvcHJvcHMvUF9HVUlMRF9USVRMRQpAQCAtMCwwICsxLDM3IEBACitQX0dVSUxEX1RJVExFCitOQU1FOgorICAgICBQX0dVSUxEX1RJVExFCQkJImd1aWxkX3RpdGxlIiAgICAgICAgICAgICAgICAgCisKK0RFRklOSUVSVCBJTjoKKyAgICAgL3N5cy9uZXdfc2tpbGxzLmgKKworQkVTQ0hSRUlCVU5HOgorICAgICBEaWVzZSBQcm9wZXJ0eSBlbnRoYWVsdCBkZW4gR2lsZGVudGl0ZWwgZGVzIExlYmV3ZXNlbnMsIHdlbGNoZXIgZGVyCisgICAgIEdpbGRlbnN0dWZlIGRlcyBMZWJld2VzZW5zIGVudHNwcmljaHQgdW5kIGplZG9jaCBudXIgYW5nZXplaWd0IHdpcmQsCisgICAgIHdlbm4gUF9USVRMRSBkZXMgTGViZXdlc2VucyBnbGVpY2ggTnVsbCBpc3QuCisKK0JFTUVSS1VOR0VOOgorICAgICBJbiBkZXIgUHJvcGVydHkgc2VsYnN0IHdpcmQgZWlnZW50bGljaCBlaW4gTWFwcGluZyBlaW5nZXRyYWdlbiwgd2VsY2hlcworICAgICBkaWUgR2lsZGVubmFtZW4gYWxzIFNjaGx1ZXNzZWwgdW5kIGRpZSBkYXp1Z2Vob2VyaWdlbiBHaWxkZW50aXRlbCBhbHMKKyAgICAgRWludHJhZyBlbnRoYWVsdC4gQmVpIGRlciBBYmZyYWdlIGRlciBQcm9wZXJ0eSB3aXJkIGplZG9jaCBkaWUgR2lsZGUKKyAgICAgYmVydWVja3NpY2h0aWd0IHVuZCBkZXIgYWt0dWVsbGUgR2lsZGVudGl0ZWwgenVydWVja2dlbGllZmVydC4KKworQkVJU1BJRUxFOgorCUZ1ZXIgZWluZSBQcm9ncmFtbWllcmVyZ2lsZGUgd2FlcmUgZm9sZ2VuZGVzIGRlbmtiYXI6CisJICBTZXRQcm9wKFBfR1VJTERfTUFMRV9USVRMRVMsKFsxOiJkZXIgQW5mYWVuZ2VyIiwKKwkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDI6ImRlciBGb3J0Z2VzY2hyaXR0ZW5lIiwKKwkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDM6ImRlciBQcm9maSJdKSk7CisJICBTZXRQcm9wKFBfR1VJTERfRkVNQUxFX1RJVExFUywoWzE6ImRpZSBBbmZhZW5nZXJpbiIsCisJICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDI6ImRpZSBGb3J0Z2VzY2hyaXR0ZW5lIiwKKwkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMzoiZGllIFByb2Zlc3Npb25lbGxlIl0pKTsKKwlFaW4gd2VpYmxpY2hlcyBHaWxkZW5taXRnbGllZCBtaXQgZGVyIGRyaXR0ZW4gR2lsZGVuc3R1ZmUgdW5kIG9obmUKKwlQX1RJVExFIHd1ZXJkZSBkYW5uIGRlbiBUaXRlbCAiZGllIFByb2Zlc3Npb25lbGxlIiB0cmFnZW4uIERhcyBoYXQKKwl6d2FyIG5pY2h0cyBtaXQgUHJvZ3JhbW1pZXJlcm4genUgdHVuLCBhYmVyIHdpZSBoZWlzc3QgZWlnZW50bGljaAorCWVpbiB3ZWlibGljaGVyICJQcm9maSI/ISA6KQorCitTSUVIRSBBVUNIOgorICAgICBQX1RJVExFLCBQX0dVSUxELCBQX0dVSUxEX0xFVkVMLAorICAgICBQX0dVSUxEX01BTEVfVElUTEVTLCBQX0dVSUxEX0ZFTUFMRV9USVRMRVMsCisgICAgIFBfU1VCR1VJTERfVElUTEUKKworMjYuIE1hZXJ6IDIwMDQgR2xvaW5zb24KZGlmZiAtLWdpdCBhL2RvYy9wcm9wcy9QX0hBTkRTIGIvZG9jL3Byb3BzL1BfSEFORFMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOWVkYTdjNQotLS0gL2Rldi9udWxsCisrKyBiL2RvYy9wcm9wcy9QX0hBTkRTCkBAIC0wLDAgKzEsNTcgQEAKK1BfSEFORFMKK05BTUU6CisgICAgIFBfSEFORFMgICAgICAgICAgICAgICAgICAgICJoYW5kcyIKKworREVGSU5JRVJUIElOOgorICAgICAvc3lzL2xpdmluZy9jb21iYXQuaAorCitCRVNDSFJFSUJVTkc6CisgICAgIERpZXNlIFByb3BlcnR5IGVudGhhZWx0IGVpbiBkcmVpZWxlbWVudGlnZXMgQXJyYXkgbWl0CisgICAgIGRlbiBmb2xnZW5kZW4gRWludHJhZWdlbjoKKyAgICAgMS4gRWxlbWVudDogU3RyaW5nIG1pdCBkZXIgTWVsZHVuZywgd2VubiBvaG5lIFdhZmZlbiBhbmdlZ3JpZmZlbgorICAgICAgICAgICAgICAgICB3aXJkLgorICAgICAyLiBFbGVtZW50OiBXYWZmZW5rbGFzc2UsIHdlbm4gb2huZSBXYWZmZW4gYW5nZWdyaWZmZW4gd2lyZC4KKyAgICAgMy4gRWxlbWVudDogQXJyYXkgbWl0IFNjaGFkZW5zYXJ0ZW4gKGZydWVoZXIgYXVjaDogU2NoYWRlbnNhcnQpCisKKyAgICAgZWltIFNldHplbiBkaWVzZXIgUHJvcGVydHkgd2lyZCBhdWNoIFBfVE9UQUxfV0MgbWl0IHZlcmFlbmRlcnQsCisgICAgIHdlbm4gZGFzIExlYmV3ZXNlbiBrZWluZSBXYWZmZSBnZXp1ZWNrdCBoYXQuIFN0ZWNrdCBkYXMgTGViZXdlc2VuCisgICAgIGVpbmUgZ2V6dWVja3RlIFdhZmZlIHdlZywgc28gd2lyZCBlYmVuZmFsbHMgUF9UT1RBTF9XQyBtaXQgZGVyCisgICAgIFdhZmZlbmtsYXNzZSBhdXMgUF9IQU5EUyBha3R1YWxpc2llcnQuIFp1ZWNrdCBkYXMgTGViZXdlc2VuIGVpbmUKKyAgICAgV2FmZmUsIHNvIHdpcmQgUF9UT1RBTF9XQyBtaXQgZGVyIFdhZmZlbmtsYXNzZSBkZXIgV2FmZmUgKFBfV0MpCisgICAgIHVlYmVyc2NocmllYmVuLiBEaWUgUHJvcGVydHkgUF9UT1RBTF9XQyBlbnRoYWVsdCBzb21pdCBpbW1lciBkaWUKKyAgICAgYWt0dWVsbGUgQW5ncmlmZnNzdGFlcmtlIGRlcyBMZWJld2VzZW4uCisKK0JFTUVSS1VOR0VOCisgICAgIEluIGFsdGVuIE9iamVrdGVuIGthbm4gZXMgdm9ya29tbWVuLCBkYXNzIGRhcyBkcml0dGUgRWxlbWVudCAoQW5nYWJlIGRlcworICAgICBTY2hhZGVuc3R5cHMpIGZlaGx0LiBEaWVzIGlzdCBlaW5lIEFsdGxhc3QsIGRpZSBBbmdhYmUgZGVzIFNjaGFkZW5zdHlwZXMKKyAgICAgaXN0IE5JQ0hUIG9wdGlvbmFsLikKKworQkVJU1BJRUw6CisgICAgIEVpbiBzdGFya2VyIFRhdXNlbmRmdWVzc2xlciBtaXQgU2NobGFnc2NoYWRlbjoKKworICAgICAgIFNldFByb3AoUF9IQU5EUywoeyIgbWl0IHRhdXNlbmQga2xlaW5lbiBGdWVzc2NoZW4iLDEwMDAsIAorICAgICAgICAgICAgICAgICAgICAgICAgICh7RFRfQkxVREdFT059KSB9KSk7CisKKworICAgICBFaW4gU2FldXJlZGVkYWVtb246CisgICAgICAgU2V0UHJvcChQX0hBTkRTLAorICAgICAgICAgKHsKKyAgICAgICAgICAgIiBtaXQgc2FldXJldHJpZWZlbmRlbiBLbGF1ZW4iLAorICAgICAgICAgICAyNTAsCisgICAgICAgICAgICh7RFRfUklQLCBEVF9BQ0lEfSkKKyAgICAgICAgIH0pCisgICAgICAgKTsKKworICAgICBIaWVyIHd1cmRlbiBnbGVpY2ggendlaSBTY2hhZGVuc2FydGVuIGFuZ2VnZWJlbiwgYWxzbyB3aXJkCisgICAgIE1pc2Noc2NoYWRlbiB2ZXJ1cnNhY2h0LiBNYW4gc29sbHRlIGVzIGplZG9jaCBuaWNodCB6dSBzZWhyCisgICAgIHVlYmVydHJlaWJlbiEgTWVociBhbHMgendlaSBvZGVyIGRyZWkgZ2xlaWNoemVpdGlnIHZlcndlbmRldGUKKyAgICAgU2NoYWRlbnNhcnRlbiBsYXNzZW4gc2ljaCBrYXVtIG1laHIgYmVncnVlbmRlbi4KKworU0lFSEUgQVVDSDoKKyAgICAgUF9IQU5EU19VU0VEX0JZCisgICAgIFBfTUFYX0hBTkRTLCBQX1VTRURfSEFORFMsIFBfRlJFRV9IQU5EUworICAgICBVc2VIYW5kcywgRnJlZUhhbmRzCisgICAgIFBfVE9UQUxfV0MsIFBfV0MKKyAgICAgL3N0ZC9saXZpbmcvY29tYmF0LmMsIC9zdGQvd2VhcG9uL2NvbWJhdC5jLCAvc3lzL2NvbWJhdC5oCisKKzIyLjAyLjIwMTQgWmVzc3RyYQpkaWZmIC0tZ2l0IGEvZG9jL3Byb3BzL1BfSEFORFNfVVNFRF9CWSBiL2RvYy9wcm9wcy9QX0hBTkRTX1VTRURfQlkKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZGQwZTVmZQotLS0gL2Rldi9udWxsCisrKyBiL2RvYy9wcm9wcy9QX0hBTkRTX1VTRURfQlkKQEAgLTAsMCArMSwyMSBAQAorUF9IQU5EU19VU0VEX0JZCitOQU1FOgorICAgICBQX0hBTkRTX1VTRURfQlkgICAgICAgICAgICJoYW5kc191c2VkX2J5IgorCitERUZJTklFUlQgSU46CisgICAgIC9zeXMvbGl2aW5nL2NvbWJhdC5oCisKK0JFU0NIUkVJQlVORzoKKyAgICAgRW50aGFlbHQgZWluZSBMaXN0ZSBtaXQgZGVuIE9iamVrdGVuLCBkaWUgZGVyemVpdCBkaWUgSGFlbmRlCisgICAgIGRlcyBMaXZpbmdzIGJlbGVnZW4uIERhYmVpIGtvZW5uZW4gT2JqZWt0ZSBtZWhybWFscyBhdWZ0YXVjaGVuLAorICAgICBqZSBuYWNoZGVtIHdpZSB2aWVsZSBIYWVuZGUgc2llIGJlbGVnZW4uCisKK0JFTUVSS1VOR0VOOgorICAgICBEYXJmIG51ciB1ZWJlciBVc2VIYW5kcygpIHVuZCBGcmVlSGFuZHMoKSBtYW5pcHVsaWVydCB3ZXJkZW4uCisKK1NJRUhFIEFVQ0g6CisgICAgIFBfSEFORFMKKyAgICAgUF9NQVhfSEFORFMsIFBfVVNFRF9IQU5EUywgUF9GUkVFX0hBTkRTCisgICAgIFVzZUhhbmRzLCBGcmVlSGFuZHMKKworMS5GZWIuMjAwNCBHbG9pbnNvbgpkaWZmIC0tZ2l0IGEvZG9jL3Byb3BzL1BfSEFSQk9VUiBiL2RvYy9wcm9wcy9QX0hBUkJPVVIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYzBlMTA0OAotLS0gL2Rldi9udWxsCisrKyBiL2RvYy9wcm9wcy9QX0hBUkJPVVIKQEAgLTAsMCArMSw2NiBAQAorTkFNRToKKyAgICBQX0hBUkJPVVIgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImhhcmJvdXJfbmFtZSIgICAgICAgICAgICAgICAgICAgCisKK0RFRklOSUVSVCBJTjoKKyAgICAvc3lzL3RyYW5zcG9ydC5oCisKK0JFU0NIUkVJQlVORzoKKyAgICBBcnJheSBtaXQgZWluZGV1dGlnZXIgQmV6ZWljaG51bmcgZGVzICdIYWZlbnMnCisKK0JFTUVSS1VOR0VOOgorICAgIERpZXNlIFByb3BlcnR5IHdpcmQgaW4gUmFldW1lbiBnZXNldHp0LCBkaWUgYWxzIEFubGVnZXIgZnVlciBUcmFuc3BvcnRlcgorICAgIGRpZW5lbiBzb2xsZW4uIFNpZSBlbnRoYWVsdCBlaW4gQXJyYXkgYXVzIHp3ZWkgRWxlbWVudGVuLCBlaW5lbSBTdHJpbmcKKyAgICB1bmQgZWluZW0gU3RyaW5nLUFycmF5LCB6dW0gQmVpc3BpZWw6CisKKyAgICAoeyAienVyIFNvbm5lbmluc2VsIiwgKHsic29ubmVuaW5zZWwifSkgfSkgb2RlciAKKyAgICAoeyAibmFjaCBUaXRpd3UiLCAoeyJ0aXRpd3UifSkgfSkKKworICAgIERhbWl0IGJla29tbXQgZGVyIFNwaWVsZXIgYmVpIGVpbmVyIEFiZnJhZ2Ugc2VpbmVyIFJlaXNlcm91dGUgbWl0dGVscworICAgICJyZWlzZSByb3V0ZSIgZWluZSBBdXNnYWJlIHdpZSAKKyAgICAgICdEdSByZWlzdCBtaXQgZGVtIEZsb3NzIG5hY2ggVGl0aXd1JyBvZGVyCisgICAgICAnRHUgcmVpc3QgbWl0IGRlbSBXYWwgenVyIFNvbm5lbmluc2VsJy4KKworICAgIERhcyB6d2VpdGUgRWxlbWVudCBkZXIgUHJvcGVydHkgZW50aGFlbHQgZWluZSBMaXN0ZSBkZXIgSURzLCBtaXQgZGVuZW4KKyAgICBzaWNoIGRlciBIYWZlbiBtaXQgZGVtIEJlZmVobCAicmVpc2UgbmFjaCA8SUQ+IiBhbnNwcmVjaGVuIGxhZXNzdC4gSW0KKyAgICBCZWlzcGllbCBvYmVuIHd1ZXJkZSBhbHNvICJyZWlzZSBuYWNoIHNvbm5lbmluc2VsIiB1bmQgCisgICAgInJlaXNlIG5hY2ggdGl0aXd1IiBha3plcHRpZXJ0IHdlcmRlbi4gRGVyIGVyc3RlIEVpbnRyYWcgaW4gZGllc2VyIElELQorICAgIExpc3RlIHdpcmQgaW4gZGVyIEF1c2dhYmUgZGVzIEJlZmVobHMgInJlaXNlIHJvdXRlIiB2ZXJ3ZW5kZXQsIHNvbGx0ZQorICAgIGFsc28gZGVuIEFubGVnZW9ydCBrb3JyZWt0IGJlemVpY2huZW4gdW5kIG5pY2h0IHouQi4gZWluZSBBYmt1ZXJ6dW5nCisgICAgZW50aGFsdGVuLgorICAgIEVzIGJpZXRldCBzaWNoIGFuLCBiZWkgYmVzdGltbXRlbiwgZGVrbGluaWVyYmFyZW4gQmV6ZWljaG51bmdlbiBhbGxlCisgICAgVmFyaWFudGVuIGVpbnp1dHJhZ2VuLCB6LkIuICJ2ZXJsb3JlbmVzIGxhbmQiIHVuZCB6dXNhZXR6bGljaAorICAgICJ2ZXJsb3JlbmUgbGFuZCIgdW5kICJ2ZXJsb3JlbmVuIGxhbmQiLCBkYW1pdCBhbGxlIFZhcmlhbnRlbiB2b24gCisgICAgInJlaXNlIG5hY2ggLi4uIiBmdW5rdGlvbmllcmVuLgorCisgICAgSXN0IGluIGVpbmVtIEhhZmVuIGRpZXNlIFByb3BlcnR5IG5pY2h0IGdlc2V0enQsIHNvIGJla29tbXQgZGVyIAorICAgIFNwaWVsZXIga2VpbmVybGVpIEhpbndlaXMgZGFyYXVmLCB3b2hpbiBpaG4gZWluIGJlc3RpbW10ZXIgVHJhbnMtCisgICAgcG9ydGVyIGJlZm9lcmRlcnQuIAorICAgIFN0YXR0ZGVzc2VuIGVyaGFlbHQgZXIgZGllIEJlemVpY2hudW5nICd1bmJla2FubnQnLgorCitISU5XRUlTRToKKyAgICBXaXJkIGRlciB6d2VpdGUgUGFyYW1ldGVyIGluIGRpZXNlciBQcm9wZXJ0eSwgZC5oLiBkaWUgTGlzdGUgZGVyIAorICAgIEFubGVnZXItSURzLCBuaWNodCBrb3JyZWt0IGdlc2V0enQsIGthbm4gZGFzIGRhenUgZnVlaHJlbiwgZGFzcyBTcGllbGVyCisgICAgZGVuIGhpZXIgYW5sZWdlbmRlbiBUcmFuc3BvcnRlciBuaWNodCBiZW51dHplbiBrb2VubmVuLCB3ZWlsIGVzCisgICAga2VpbmUgc2lubnZvbGxlIFN5bnRheCBnaWJ0LCB1bSBkZW4gZ2V3dWVuc2NodGVuIFppZWxoYWZlbiB6dSBmaW5kZW4uCisKKyAgICBadSBhY2h0ZW4gaXN0IGF1Y2ggZGFyYXVmLCBkYXMgZGVyIGVyc3RlIEVpbnRyYWcgdW52ZXJhZW5kZXJ0IGluIGVpbmVyIAorICAgIE1lbGR1bmcgYW4gZGVuIFNwaWVsZXIgYXVzZ2VnZWJlbiB3aXJkLCBkLmguIEdyb3NzLXVuZCBLbGVpbnNjaHJlaWJ1bmcKKyAgICBzb2xsdGUga29ycmVrdCBzZWluLgorCitISVNUT1JJRToKKyAgICBGcnVlaGVyIHdhciBkZXIgendlaXRlIEVpbnRyYWcgaW4gZGllc2VyIFByb3BlcnR5IGVpbiBlaW56ZWxuZXIgU3RyaW5nLgorICAgIEVzIGV4aXN0aWVydCBlaW5lIFNldE1ldGhvZGUgYXVmIGRpZXNlciBQcm9wZXJ0eSwgZGllIHNvbGNoZSBEYXRlbiBpbgorICAgIGFsdGVtIENvZGUgYXVmIGRpZSBuZXVlIERhdGVuc3RydWt0dXIgdW1iaWVndC4gRGllcyBmdWVocnQgZGF6dSwgZGFzcworICAgIGJlaSBzb2xjaGVuIE9iamVrdGVuIGRpZSBpbSBnZWxhZGVuZW4gUmF1bSBlbnRoYWx0ZW5lbiBEYXRlbiBuaWNodCBtaXQKKyAgICBkZW4gRGF0ZW4gaW0gRmlsZSB1ZWJlcmVpbnN0aW1tZW4uIERpZXMgbW9lZ2UgYWJlciBiaXR0ZSBuaWVtYW5kIAorICAgIHp1bSBBbmxhc3MgbmVobWVuLCBpbiBuZXVlbSBDb2RlIHZlcmFsdGV0ZSBEYXRlbiBpbiBkaWUgUHJvcGVydHkgenUgCisgICAgc2NocmVpYmVuIQorICAgIAorU0lFSEUgQVVDSDoKKyAgUHJvcGVydGllczogICAgIFBfTk9fVFJBVkVMSU5HLCBQX1RSQVZFTF9JTkZPCisgIEZ1bmt0aW9uZW46ICAgICBBZGRSb3V0ZShMKQorICBTcGllbGVyYmVmZWhsZTogcmVpc2UKKyAgd2VpdGVyZSBEb2t1OiAgIC9kL2luc2Vsbi9zY2hpZmZlL0hvd1RvCisKK0xFVFpURSBBRU5ERVJVTkc6CisyMDE1LUphbi0xOCwgQXJhdGhvcm4KZGlmZiAtLWdpdCBhL2RvYy9wcm9wcy9QX0hBVVNfRVJMQVVCVCBiL2RvYy9wcm9wcy9QX0hBVVNfRVJMQVVCVApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44YWM2NDk1Ci0tLSAvZGV2L251bGwKKysrIGIvZG9jL3Byb3BzL1BfSEFVU19FUkxBVUJUCkBAIC0wLDAgKzEsMjkgQEAKK05BTUU6CisgICAgUF9IQVVTX0VSTEFVQlQgICAgICAgICAgICAgICAgImhhdXNfZXJsYXVidCIgICAgICAgICAgICAgICAgCisKK0RFRklOSUVSVCBJTjoKKyAgICAvc3lzL3Jvb20vZGVzY3JpcHRpb24uaAorCitCRVNDSFJFSUJVTkc6CisgICAgIEhpZXIgZGFyZiBlaW4gU2VoZXJoYXVzIGFiZ2VzdGVsbHQgd2VyZGVuCisKK0JFTUVSS1VOR0VOOgorICAgICBEaWVzZSBQcm9wZXJ0eSBzb2xsdGUgbmljaHQgcGVyIGRlZmF1bHQgaW4gUmFldW1lbiBhdWYgZWluZW4gV2VydCA+IDAKKyAgICAgZ2VzZXR6dCB3ZXJkZW4gdW0gZWluZW0gV2lsZHd1Y2hzIGFuIFNlaGVyaGF1cygtcnVpbmVuKSB2b3J6dWJldWdlbi4KKyAgICAgQXVjaCBzZWkgZGFyYXVmIGdlYWNodGV0LCBkYXNzIGluIFJhZXVtZW4gZGllIFBfSU5ET09SUyBhdWYgZWluZW4gCisgICAgIFdlcnQgPiAwIGhhYmVuLCBwZXIgZGVmYXVsdCBuaWNodCBnZWJhdXQgd2VyZGVuIGthbm4uICAgICAKKyAgICAgSGllciBsaWViZXIgZGllIFByb3BlcnR5IHBlciBIYW5kIGF1ZiAxIHNldHplbiB1bmQgbmFjaCBkZW0gQXVmc3RlbGxlbgorICAgICBkZXMgSGF1c2VzIHdpZWRlciBsb2VzY2hlbi4KKyAgICAgIAorICAgICB4Y2FsbCAkaC0+U2V0UHJvcChQX0hBVVNfRVJMQVVCVCwxKTsKKworICAgICBBbmdlbWVya3Qgc2VpIG5vY2gsIGRhc3MgZGVyIE1hZ2llciBkZW0gZGVyIFJhdW0gZ2Vob2VydCB1ZWJlciBIYXVzYmF1CisgICAgIGVudHNjaGVpZGV0IHVuZCBuaWNodCBkZXIgUmVnaW9uc21hZ2llci4gSW4gamVkZW0gRmFsbCBSdWVja3NwcmFjaGUgCisgICAgIGhhbHRlbiBmYWxscyBkZXIgZW50c3ByZWNoZW5kZSBNYWdpZXIgenVtaW5kZXN0IGFiIHVuZCBhbiBhbndlc2VuZCBzZWluCisgICAgIHNvbGx0ZS4KKworICAgICBVbnRlciAvZG9jL2JlaXNwaWVsZS9taXNjIGxpZWd0IGVpbiBGaWxlLCBpbiBkZW0gZG9rdW1lbnRpZXJ0IGlzdCwKKyAgICAgd2llIG5hY2ggQWVuZGVydW5nZW4gYW0gU2VoZXJoYXVzIHp1IHZlcmZhaHJlbiBpc3QuCisKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KK0xhc3QgbW9kaWZpZWQ6IEZyaSBOb3YgMjYgMTU6NDE6NDcgMTk5OSBieSBUaWxseQpkaWZmIC0tZ2l0IGEvZG9jL3Byb3BzL1BfSEIgYi9kb2MvcHJvcHMvUF9IQgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5lZWUyZGNiCi0tLSAvZGV2L251bGwKKysrIGIvZG9jL3Byb3BzL1BfSEIKQEAgLTAsMCArMSw5IEBACitOQU1FOgorICAgIFBfSEIgICAgICAgICAgICAgICAgICAgICAgICAgICJoYiIgICAgICAgICAgICAgICAgICAgICAgICAgIAorCitERUZJTklFUlQgSU46CisgICAgL3N5cy9wcm9wZXJ0aWVzLmgKKworQkVTQ0hSRUlCVU5HOgorICAgICBEaWVzZSBQcm9wZXJ0eSB3aXJkIGdlc2V0enQsIHdlbm4gZGFzIE1vbnN0ZXIgaW1tZXIgZWluZW4KKyAgICAgaGVhcnRfYmVhdCBoYWJlbiBzb2xsLiAoVk9SU0lDSFQsIG51ciB3ZW5uIGVzIFdJUktMSUNIIHNlaW4gbXVzcyEpCmRpZmYgLS1naXQgYS9kb2MvcHJvcHMvUF9IRUFMIGIvZG9jL3Byb3BzL1BfSEVBTApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4yNDI4MDJmCi0tLSAvZGV2L251bGwKKysrIGIvZG9jL3Byb3BzL1BfSEVBTApAQCAtMCwwICsxLDMyIEBACitOQU1FOgorICAgICBQX0hFQUwgICAgICAgICAgICAgICAgICAgICAgICAiaGVhbCIgICAgICAgICAgICAgICAgICAgICAgICAKKworREVGSU5JRVJUIElOOgorICAgICAvc3lzL3Byb3BlcnRpZXMuaAorCitCRVNDSFJFSUJVTkc6CisgICAgIE51bWVyaXNjaGVyIFdlcnQsIGRlciBiZWltIFZlcnplaHIgZWluZXIgTGVpY2hlIHp1IGRlbiBMZWJlbnNwdW5rdGVuIAorICAgICBkZXNqZW5pZ2VuIGhpbnp1Z2V6YWVobHQgd2lyZCwgZGVyIGRpZSBMZWljaGUgaXNzdC4gRGVyIFdlcnQga2FubiBhdWNoIAorICAgICBuZWdhdGl2IHNlaW4uIEZhbGxzIGRpZSBMZWljaGUgZGVuIG1heGltYWxlbiBWZXJmYWxsc3p1c3RhbmQgZXJyZWljaHQgCisgICAgIGhhdCwgd2lyZCBkaWVzZXIgV2VydCBhdXRvbWF0aXNjaCBhdWYgLTQgZ2VzZXR6dCwgc29mZXJuIG5pY2h0IHNjaG9uCisgICAgIGVpbiBnZXJpbmdlcmVyIFdlcnQgZWluZ2V0cmFnZW4gaXN0LgorCisgICAgIFdlcnRlIHVudGVyIC00IHNpbmQgc2VociBzcGFyc2FtIHVuZCBudXIgaW4gYmVncnVlbmRldGVuIEVpbnplbGZhZWxsZW4KKyAgICAgenUgc2V0emVuLiBEaWUgUmVnaW9uc21hZ2llciB3ZXJkZW4gYXVmIHNpbm52b2xsZSBXZXJ0ZWJlcmVpY2hlIGluCisgICAgIGlocmVtIFp1c3RhZW5kaWdrZWl0c2JlcmVpY2ggYWNodGVuIHVuZCBnZ2YuIEdyZW56d2VydGUgZnVlciBpaHJlIAorICAgICBSZWdpb24gZmVzdGxlZ2VuLgorCisgICAgIERpZSBHaWxkZW4ga29lbm5lbiBQX0hFQUwgYWJmcmFnZW4gdW5kIGVpZ2VuZSwgZ3JvYmUgSW5mb3JtYXRpb25zdGV4dGUKKyAgICAgYXVzZ2ViZW4sIGRpZSBkZW4gU3BpZWxlciB1ZWJlciBkZW4genUgZXJ3YXJ0ZW5kZW4gRWZmZWt0IGJlaW0gRXNzZW4KKyAgICAgZWluZXIgTGVpY2hlIGluZm9ybWllcmVuLgorCisgICAgIFBvc2l0aXZlIFdlcnRlIHZvbiBQX0hFQUwgc2luZCBiZWkgZGVyIEhlaWx1bmdzYmFsYW5jZSBhbHMgSGVpbHN0ZWxsZQorICAgICB6dSBiZWFudHJhZ2VuLgorCisgICAgIEZ1ZXIgbmljaHQgYWxsenUgaGFydGUgTlBDcyBzb2xsdGUgUF9IRUFMIGF1ZiAwIGdlc2V0enQgc2Vpbi4gRGllc2VyCisgICAgIFdlcnQgaXN0IGdsZWljaHplaXRpZyBkZXIgU3RhbmRhcmR3ZXJ0LgorCitTSUVIRSBBVUNIOgorICAgICAvc3RkL2NvcnBzZSwgUXVlcnlIZWFsSW5mbygpCisgICAgIAorMzEuMDMuMjAwOCBBcmF0aG9ybgpkaWZmIC0tZ2l0IGEvZG9jL3Byb3BzL1BfSEVMUEVSX05QQyBiL2RvYy9wcm9wcy9QX0hFTFBFUl9OUEMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZWI3MWU0NwotLS0gL2Rldi9udWxsCisrKyBiL2RvYy9wcm9wcy9QX0hFTFBFUl9OUEMKQEAgLTAsMCArMSwzMCBAQAorUF9IRUxQRVJfTlBDCisKK05BTUU6CisgICAgIFBfSEVMUEVSX05QQyAgICAgICAgICAgICAic3RkOmhlbHBlcl9ucGMKKworREVGSU5JRVJUIElOOgorICAgICAvc3lzL2xpdmluZy9jb21iYXQuaAorCitCRVNDSFJFSUJVTkc6CisgICAgTWl0IGRpZXNlciBQcm9wIGxhZXNzdCBzaWNoIGhlcmF1c2ZpbmRlbiwgb2IgZWluIE5QQyBlaW5lbSBTcGllbGVyIGhpbGZ0CisgICAgYnp3LiB3ZWxjaGUgTlBDIGVpbmVtIFNwaWVsZXIgaGVsZmVuLgorICAgIFdpcmQgZGllc2UgUHJvcCBpbiBlaW5lbSBOUEMgYWJnZWZyYWd0LCBlbnRoYWVsdCBzaWUgZWluIEFycmF5IAorICAgICAgKHsgc3BpZWxlcm9iamVrdCwgZmxhZ3MgfSkgb2RlciAwLgorICAgIFdpcmQgZGllc2UgUHJvcCBpbiBlaW5lbSBTcGllbGVyIGFiZ2VmcmFndCwgZW50aGFlbHQgc2llIGVpbiBNYXBwaW5nCisgICAgICAoW25wY29iamVrdDE6IGZsYWdzMSwgbnBjLW9iamVrdDI6IGZsYWdzMl0pLgorCisgICAgPGZsYWdzPiBpc3QgZWluIEludGVnZXIsIGRlciBlaW5lIFJlaWhlIHZvbiB2ZXItb2Rlci10ZW4gS29uc3RhbnRlbiAocy4KKyAgICBSZWdpc3RlckhlbHBlck5QQykgZW50aGFsdGVuIGthbm4uCisKK0JFTUVSS1VOR0VOOgorICAgIERpZXNlIFByb3Agd2lyZCBhdXRvbWF0aXNjaCB2b24gUmVnaXN0ZXJIZWxwZXJOUEMoKSB1bmQKKyAgICBVbnJlZ2lzdGVySGVscGVyTlBDKCkgdmVyd2FsdGV0LiBCaXR0ZSBhZW5kZXJ0IHNpZSBuaWNodCBwZXIgSGFuZC4KKworQkVJU1BJRUw6CisgICAgcy4gUmVnaXN0ZXJIZWxwZXJOUEMoKS4KKworU0lFSEUgQVVDSDoKKyAgICAgUmVnaXN0ZXJIZWxwZXJOUEMoKSwgVW5yZWdpc3RlckhlbHBlck5QQygpCisKKzEwLjAzLjIwMDksIFplc3N0cmEKZGlmZiAtLWdpdCBhL2RvYy9wcm9wcy9QX0hFTFBFUl9PQkpFQ1RTIGIvZG9jL3Byb3BzL1BfSEVMUEVSX09CSkVDVFMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYmRmMDMxZAotLS0gL2Rldi9udWxsCisrKyBiL2RvYy9wcm9wcy9QX0hFTFBFUl9PQkpFQ1RTCkBAIC0wLDAgKzEsMjUgQEAKK1BfSEVMUEVSX09CSkVDVFMKKworTkFNRToKKyAgICAgUF9IRUxQRVJfT0JKRUNUUyAibGliX3BfaGVscGVyX29iamVjdHMiCisKK0RFRklOSUVSVCBJTjoKKyAgICAgPGxpdmluZy9oZWxwZXJzLmg+CisKK0JFU0NIUkVJQlVORzoKKyAgICAgRGllc2UgUHJvcGVydHkgZW50aGFlbHQgZWluZSBMaXN0ZSB2b24gSGlsZnNvYmpla3RlbiwgZGllIGRhcyBMZWJld2VzZW4sCisgICAgIGluIGRlbSBzaWUgZ2VzZXR6dCBpc3QsIGJlaSBiZXN0aW1tdGVuIEFrdGl2aXRhZXRlbiB3aWUgVGF1Y2hlbiBvZGVyCisgICAgIEZsaWVnZW4vU2VnZWxuIHVudGVyc3R1ZXR6dC4gRGllIFByb3BlcnR5IGVudGhhZWx0IGVpbiBNYXBwaW5nIGRlciBGb3JtCisgICAgIChbIEhFTFBFUl9UWVBFIDogKHsgQ2FsbGJhY2stQ2xvc3VyZXMgfSkgXSkuCisKK0JFTUVSS1VOR0VOOgorICAgICBFeHRlcm5lIE1hbmlwdWxhdGlvbmVuIGFuIGRpZXNlciBQcm9wZXJ0eSBiaXR0ZSB1bnRlcmxhc3NlbiwgenVtIEVpbi0KKyAgICAgdW5kIEF1c3RyYWdlbiB2b24gT2JqZWt0ZW4gZ2lidCBlcyBkaWUgdW50ZW4gYXVmZ2VmdWVocnRlbiBNZXRob2Rlbi4KKworU0lFSEUgQVVDSDoKKyAgICAgTWV0aG9kZW46ICAgIFJlZ2lzdGVySGVscGVyT2JqZWN0KEwpLCBVbnJlZ2lzdGVySGVscGVyT2JqZWN0KEwpCisgICAgIFByb3BlcnRpZXM6ICBQX0FFUklBTF9IRUxQRVJTLCBQX0FRVUFUSUNfSEVMUEVSUworCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisxOC4wMi4yMDEzLCBBcmF0aG9ybgorCmRpZmYgLS1naXQgYS9kb2MvcHJvcHMvUF9ISURFX0VYSVRTIGIvZG9jL3Byb3BzL1BfSElERV9FWElUUwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4wYzkyYTRhCi0tLSAvZGV2L251bGwKKysrIGIvZG9jL3Byb3BzL1BfSElERV9FWElUUwpAQCAtMCwwICsxLDM1IEBACitQX0hJREVfRVhJVFMKK05BTUU6CisgICAgIFBfSElERV9FWElUUyAgICAgICAgICAgICAgICAgICJoaWRlX2V4aXRzIgorCitERUZJTklFUlQgSU46CisgICAgIC9zeXMvcm9vbS9leGl0cy5oCisKK0JFU0NIUkVJQlVORzoKKyAgICAgSXN0IGRpZXNlIFByb3BlcnR5IGluIGVpbmVtIFJhdW0gYXVmIGVpbmVuIEludGVnZXJ3ZXJ0IHVuZ2xlaWNoIDAKKyAgICAgZ2VzZXR6dCwgd2VyZGVuIGVpbmVtIFNwaWVsZXIgZnVlciBkaWVzZW4gUmF1bSBrZWluZSBBdXNnYWVuZ2UgYW5nZXplaWd0LgorICAgICBBdWNoIGRlciBUZXh0ICJLZWluZSBzaWNodGJhcmVuIEF1c2dhZW5nZS4iIChvZGVyIHNvKSBrb21tdCBuaWNodC4KKyAgICAgQWx0ZXJuYXRpdiBrYW5uIG1hbiBhdWNoIGVpbiBhcnJheSB2b24gc3RyaW5ncyB1ZWJlcmdlYmVuLiBJbiBkaWVzZW0KKyAgICAgRmFsbCB3ZXJkZW4gYWxsIGRpZSBBdXNnYWVuZ2UgbmljaHQgYW5nZXplaWd0LCBkZXJlbiBJbmRleCBpbiBQX0VYSVRTCisgICAgIGluIGRlbSBhcnJheSB2b3Jrb21tdC4KKyAgICAgSW4gZGllc2VtIEZhbGwgd2lyZCBnZ2YuIGRlciBUZXh0ICJLZWluZSBzaWNodGJhcmVuIEF1c2dhZW5nZS4iCisgICAgIGF1c2dlZ2ViZW4uCisKK0JFSVNQSUVMOgorICAgICBBZGRFeGl0KCJyYXVzIiwgIi9nYW56L3dvL2FuZGVycyIpOworICAgICBBZGRFeGl0KCJ3ZWl0ZXIiLCAiL2luL2Rlci9uYWVoZSIpOworCisgICAgIC8vIEtFSU5FIEF1c2dhZW5nZSBhbnplaWdlbi4gTm9jaCBuaWNodCBtYWwsIGRhc3MgbWFuIGtlaW5lIHNpZWh0LgorICAgICBTZXRQcm9wKFBfSElERV9FWElUUywgMSk7CisKKyAgICAgLy8gRGVyIEF1c2dhbmcgd2VpdGVyIHdpcmQgbmljaHQgYW5nZXplaWd0LgorICAgICBTZXRQcm9wKFBfSElERV9FWElUUywgKHsid2VpdGVyIn0pICk7CisKKyAgICAgLy8gS2VpbmVuIEF1c2dhbmcgemVpZ2VuLCBhYmVyIGRlbiBUZXh0LCBkYXNzIGtlaW5lciBzaWNodGJhciwgYXVzZ2ViZW4uCisgICAgIFNldFByb3AoUF9ISURFX0VYSVRTLCAoeyJ3ZWl0ZXIiLCAicmF1cyJ9KSApOworCitTSUVIRSBBVUNIOgorICAgICBBZWhubGljaGVzOglQX1NIT1dfRVhJVFMKKyAgICAgU29uc3RpZ2VzOgkJQWRkRXhpdCgpLCBHZXRFeGl0cygpLCBpbnRfbG9uZygpLCBpbnRfc2hvcnQoKQorCisyNS4gQXByIDE5OTYgSGlnaGxhbmRlcgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2RvYy9wcm9wcy9QX0hJU1RNSU4gYi9kb2MvcHJvcHMvUF9ISVNUTUlOCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmU4NGQ5MGMKLS0tIC9kZXYvbnVsbAorKysgYi9kb2MvcHJvcHMvUF9ISVNUTUlOCkBAIC0wLDAgKzEsOCBAQAorTkFNRToKKyAgICBQX0hJU1RNSU4gICAgICAgICAgICAgICAgICAgICAiaGlzdG1pbiIgICAgICAgICAgICAgICAgICAgICAKKworREVGSU5JRVJUIElOOgorICAgIC9zeXMvcGxheWVyLmgKKworQkVTQ0hSRUlCVU5HOgorICAgICBNaW5pbWFsZSBMYWVuZ2UsIGRpZSBlaW5lIFplaWxlIGhhYmVuIG11c3MsIHVtIGluIGRpZSBIaXN0b3J5IHp1IGtvbW1lbgpkaWZmIC0tZ2l0IGEvZG9jL3Byb3BzL1BfSElUX0ZVTkMgYi9kb2MvcHJvcHMvUF9ISVRfRlVOQwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5jNWIzYjMxCi0tLSAvZGV2L251bGwKKysrIGIvZG9jL3Byb3BzL1BfSElUX0ZVTkMKQEAgLTAsMCArMSwyMiBAQAorUF9ISVRfRlVOQworCitOQU1FOgorICAgICBQX0hJVF9GVU5DICJoaXRfZnVuYyIKKworREVGSU5JRVJUIElOOgorICAgICA8d2VhcG9uLmg+CisKK0JFU0NIUkVJQlVORzoKKyAgICAgRmFsbHMgZWluIE9iamVrdCBlaW5lIEhpdEZ1bmMoKSBmdWVyIGRpZSBXYWZmZSBkZWZpbmllcnQsIHNvIG11c3MKKyAgICAgZGllc2VzIE9iamVrdCBpbiBkaWVzZXIgUHJvcGVydHkgZWluZ2V0cmFnZW4gd2VyZGVuLgorCisgICAgIERpZSBBdXN3ZXJ0dW5nIGRpZXNlciBQcm9wZXJ0eSBlcmZvbGd0IGluIFF1ZXJ5RGFtYWdlKCkuCisKK0JFSVNQSUVMRToKKyAgICAgU2llaGUgZGFzIEJlaXNwaWVsIHp1IEhpdEZ1bmMoKQorCitTSUVIRSBBVUNIOgorICAgICAvc3RkL3dlYXBvbi5jLCBIaXRGdW5jKCkKKworLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorTGFzdCBtb2RpZmllZDogU3VuIE1heSAxOSAxNTozNzozNSAxOTk2IGJ5IFdhcmdvbgpkaWZmIC0tZ2l0IGEvZG9jL3Byb3BzL1BfSE9NRVBBR0UgYi9kb2MvcHJvcHMvUF9IT01FUEFHRQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi43ZDkwNDM4Ci0tLSAvZGV2L251bGwKKysrIGIvZG9jL3Byb3BzL1BfSE9NRVBBR0UKQEAgLTAsMCArMSw4IEBACitOQU1FOgorICAgIFBfSE9NRVBBR0UgICAgICAgICAgICAgICAgICAgICJob21lcGFnZSIgICAgICAgICAgICAgICAgICAgIAorCitERUZJTklFUlQgSU46CisgICAgL3N5cy9wbGF5ZXIvYmFzZS5oCisKK0JFU0NIUkVJQlVORzoKKyAgICAgRGllIEhvbWVwYWdlIGVpbmVzIFNwaWVsZXJzIChtaXQgZGVtIEJlZmVobCAndXJsJyB6dSBzZXR6ZW4pLgpkaWZmIC0tZ2l0IGEvZG9jL3Byb3BzL1BfSFAgYi9kb2MvcHJvcHMvUF9IUApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5mMmFlYTc0Ci0tLSAvZGV2L251bGwKKysrIGIvZG9jL3Byb3BzL1BfSFAKQEAgLTAsMCArMSwyNSBAQAorTkFNRToKKyAgICBQX0hQICAgICAgICAgICAgICAgICAgICAgICAgICAiaHAiCisKK0RFRklOSUVSVCBJTjoKKyAgICAvc3lzL2xpdmluZy9saWZlLmgKKworQkVTQ0hSRUlCVU5HOgorCisgICAgIC0gTGViZXdlc2VuCisgICAgICAgQW56YWhsIGRlciBMZWJlbnNwdW5rdGUgZGVzIFdlc2Vucy4KKworICAgICAtIFNwZWlzZW4vS25laXBlbgorICAgICAgIEhlaWx3aXJrdW5nIGVpbmVyIFBvcnRpb24gZGVyIFNwZWlzZSBhdWYgZGllIExlYmVuc3B1bmt0ZQorICAgICAgIGRlcyBLb25zdW1lbnRlbgorCitTSUVIRSBBVUNIOgorICAgICBQcm9wczoJCVBfTUFYX0hQCisgICAgIFZlcmFlbmRlcnVuZzoJcmVkdWNlX2hpdF9wb2ludHMoKSwgcmVzdG9yZV9oaXRfcG9pbnRzKCkKKwkJCWRvX2RhbWFnZShMKSwgRGVmZW5kKEwpCisJCQlidWZmZXJfaHAoKQorICAgICBVZWJlcndhY2h1bmc6CUFkZEhwSG9vayhMKQorICAgICBTcGVpc2VuL0tuZWlwZW46ICAgc3RkL3B1Yiwgd2l6L2Zvb2QsIGNvbnN1bWUKKworLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCitMYXN0IG1vZGlmaWVkOiBUaHUgT2N0IDI4IDEyOjE1OjAwIDIwMTAgYnkgQ2FsZHJhClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZG9jL3Byb3BzL1BfSFBfREVMQVkgYi9kb2MvcHJvcHMvUF9IUF9ERUxBWQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5hODA3YWQ5Ci0tLSAvZGV2L251bGwKKysrIGIvZG9jL3Byb3BzL1BfSFBfREVMQVkKQEAgLTAsMCArMSwxMCBAQAorTkFNRToKKyAgICBQX0hQX0RFTEFZICAgICAgICAgICAgICAgICAiaHBfZGVsYXkiICAgICAgICAgICAgICAgICAgICAgCisKK0RFRklOSUVSVCBJTjoKKyAgICAvc3lzL2xpdmluZy9saWZlLmgKKworQkVTQ0hSRUlCVU5HOgorICAgICBBbnphaGwgZGVyIGhlYXJ0X2JlYXRzLCBiaXMgUF9IUCB1bSBlaW5lbiBQdW5rdCByZWdlbmVyaWVydC4KKyAgICAgQWVuZGVydW5nZW4gZGllc2VyIFByb3BlcnR5IGluIFNwaWVsZXJuIGJlZHVlcmZlbiBkZXIgCisgICAgIEdlbmVobWlndW5nIGRlcyBFTSBmdWVyIEJhbGFuY2UuCmRpZmYgLS1naXQgYS9kb2MvcHJvcHMvUF9IUF9IT09LUyBiL2RvYy9wcm9wcy9QX0hQX0hPT0tTCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjI4ZjFhMWUKLS0tIC9kZXYvbnVsbAorKysgYi9kb2MvcHJvcHMvUF9IUF9IT09LUwpAQCAtMCwwICsxLDE5IEBACitOQU1FOgorICAgIFBfSFBfSE9PS1MgICAgICAgICAgICAgICAgICAgICJocF9ob29rcyIgICAgICAgICAgICAgICAgICAgIAorCitERUZJTklFUlQgSU46CisgICAgL3N5cy9wcm9wZXJ0aWVzLmgKKworQkVTQ0hSRUlCVU5HOgorICAgICBXZWxjaGUgT2JqZWt0ZSBzb2xsZW4gYmVpIEhQLUFlbmRlcnVuZ2VuIGJlbmFjaHJpY2h0aWd0IHdlcmRlbj8KKyAgICAgRGllc2UgUHJvcGVydHkgYml0dGUgTklDSFQgbWFuaXB1bGllcmVuISBadW0gRWluLSB1bmQgQXVzdHJhZ2VuIHN0ZWhlbgorICAgICBoaWVyZnVlciBBZGRIcEhvb2soKSB1bmQgUmVtb3ZlSHBIb29rKCkgYmVyZWl0LgorCitCRU1FUktVTkdFTjoKKyAgICBEYXMgbmV1ZXJlIEhvb2tzeXN0ZW0gKHMuIE1hbnBhZ2Ugc3RkL2hvb2tzKSBzdGVsbHQgZWJlbmZhbGxzIEhvb2tzIHp1cgorICAgIFVlYmVyd2FjaHVuZyB2b24gUF9IUCBiZXJlaXQuCisKK1NJRUhFIEFVQ0g6CisgICAgQWRkSHBIb29rKCksIFJlbW92ZUhwSG9vaygpLAorICAgIE5vdGlmeUhwQ2hhbmdlKCkKKyAgICBzdGQvaG9va3MKZGlmZiAtLWdpdCBhL2RvYy9wcm9wcy9QX0hVTlRUSU1FIGIvZG9jL3Byb3BzL1BfSFVOVFRJTUUKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMzc3YWIxOAotLS0gL2Rldi9udWxsCisrKyBiL2RvYy9wcm9wcy9QX0hVTlRUSU1FCkBAIC0wLDAgKzEsMzUgQEAKK1BfSFVOVFRJTUUgKGludCkKKworTkFNRToKKyAgICAgUF9IVU5UVElNRQkJCQkJInBfbGliX2h1bnR0aW1lIgorCitERUZJTklFUlQgSU46CisgICAgIC9zeXMvbGl2aW5nL2NvbWJhdC5oCisKK0JFU0NIUkVJQlVORzoKKyAgICBNaXQgZGllc2VyIFByb3BlcnR5IGxhZXNzdCBzaWNoIGZlc3RsZWdlbiwgd2llIGxhbmdlIGVpbiBNb25zdGVyIGVpbmVuIAorICAgIEdlZ25lciB2ZXJmb2xndCAoYWxzbyBhdXRvbWF0aXNjaCBhbmdyZWlmdCksIG5hY2hkZW0gZGllc2VyIGdlZmxvaGVuIGlzdC4KKyAgICBEaWUgQW5nYWJlIGVyZm9sZ3QgaW4gU2VrdW5kZW4uCisgICAgRGllIFN0YW5kYXJkemVpdCBpc3QgNjAwcyAoMzAwIEhlYXJ0YmVhdHMpLgorCitCRU1FUktVTkdFTjoKKyAgICAxLiBXZW5uIGRlciBTdGFuZGFyZHdlcnQgYWt6ZXB0YWJlbCBpc3QsIGJpdHRlIGRpZSBQcm9wIGF1Y2ggbmljaHQgc2V0emVuLgorICAgIDIuIEVudGhhZWx0IGRpZSBQcm9wZXJ0eSBrZWluZW4gSW50ZWdlciBvZGVyIGlzdCBzaWUgPD0gMCwgd2lyZCBzaWUgCisgICAgICAgaWdub3JpZXJ0IHVuZCBkZXIgU3RhbmRhcmR3ZXJ0IHZvbiA2MDBzIHZlcndlbmRldC4KKyAgICAzLiBLYWVtcGZ0IG1hbiBtaXQgZWluZW0gTGViZW53ZXNlbiBtaXQgZWluZW0gZ3JvZXNzZXJlbiBXZXJ0IGFscyBtYW4gCisgICAgICAgc2VsYmVyIHVuZCBtYW4gc2VsYmVyIGhhdCBkYXMgVmVyZm9sZ2VuIGVpbmdlc3RlbGx0LCBkZXIgR2VnbmVyIGFiZXIgCisgICAgICAgbmljaHQsIHdpcmQgZGllc2VyIGJlaW0gUmVpbmtvbW1lbiBkZW4gS2FtcGYgbmV1IHN0YXJ0ZW4gKHVuZCBkZW4gCisgICAgICAgZXJzdGVuIFNjaGxhZyBoYWJlbikuCisKK0JFSVNQSUVMOgorICAgIEVpbiBOUEMgc29sbCBzaWNoIGVyc3QgZWluZSBTdHVuZGUgbmFjaCBGbHVjaHQgZGVzIEdlZ25lcnMgYmVydWhpZ2VuLgorICAgIHByb3RlY3RlZCB2b2lkIGNyZWF0ZSgpIHsKKyAgICAgIC4uLgorICAgICAgU2V0UHJvcChQX0hVTlRUSU1FLCAzNjAwKTsKKyAgICB9CisKK1NJRUhFIEFVQ0g6CisgICAgIEluc2VydFNpbmdsZUVuZW15LCBJbnNlcnRFbmVteQorICAgICAvc3RkL2xpdmluZy9jb21iYXQuYworCisxMy4wMy4yMDA4LCBaZXNzdHJhCmRpZmYgLS1naXQgYS9kb2MvcHJvcHMvUF9JRFMgYi9kb2MvcHJvcHMvUF9JRFMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMzExNDA3YgotLS0gL2Rldi9udWxsCisrKyBiL2RvYy9wcm9wcy9QX0lEUwpAQCAtMCwwICsxLDI1IEBACitQX0lEUworCitOQU1FOgorICAgICBQX0lEUyAiaWRzIgorCitERUZJTklFUlQgSU46CisgICAgIDx0aGluZy9kZXNjcmlwdGlvbi5oPgorCitCRVNDSFJFSUJVTkc6CisgICAgIEluIGRpZXNlciBQcm9wZXJ0eSBzdGVodCBlaW4gQXJyYXkgdm9uIGRlbiBTdHJpbmdzLCBtaXQgZGVuZW4gc2ljaCBkYXMKKyAgICAgT2JqZWt0IGFuc3ByZWNoZW4gbGFlc3N0LiBEaWUgVmVyd2FsdHVuZyBkaWVzZXIgUHJvcGVydHkgZXJmb2xndCB1ZWJlcgorICAgICBkaWUgRnVua3Rpb25lbiBBZGRJZCgpIHVuZCBSZW1vdmVJZCgpLgorCisgICAgIERlciBJbmhhbHQgZGllc2VyIFByb3BlcnR5IHdpcmQgdm9uIGRlbiBGdW5rdGlvbmVuIGlkKCkgdW5kIChpbmRpcmVrdCkKKyAgICAgcHJlc2VudCgpIGF1c2dld2VydGV0LgorCitCRU1FUktVTkdFTjoKKyAgICAgTWFuIHNvbGx0ZSBhbiBkaWVzZXIgUHJvcGVydHkgbmljaHQgInZvbiBIYW5kIiBoZXJ1bWZ1bW1lbG4sIHNvbmRlcm4KKyAgICAgaW1tZXIgZGllIHp1Z2Vob2VyaWdlbiBGdW5rdGlvbmVuIGJlbnV0emVuIQorCitTSUVIRSBBVUNIOgorICAgICAvc3RkL3RoaW5nL2Rlc2NyaXB0aW9uLmMsIEFkZElkKCksIFJlbW92ZUlkKCkKKworLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorTGFzdCBtb2RpZmllZDogU3VuIE1heSAxOSAyMDoxNzozNiAxOTk2IGJ5IFdhcmdvbgpkaWZmIC0tZ2l0IGEvZG9jL3Byb3BzL1BfSUdOT1JFIGIvZG9jL3Byb3BzL1BfSUdOT1JFCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmQ5NWZkMTQKLS0tIC9kZXYvbnVsbAorKysgYi9kb2MvcHJvcHMvUF9JR05PUkUKQEAgLTAsMCArMSwyMiBAQAorTkFNRToKKyAgICBQX0lHTk9SRSAgICAgICAgICAgICAgICAgICAgICAiaWdub3JlIgorCitERUZJTklFUlQgSU46CisgICAgL3N5cy9wbGF5ZXIvYmFzZS5oCisKK0JFU0NIUkVJQlVORzoKKyAgICBBcnJheSBtaXQgU3BpZWxlcm4sIEtvbW1hbmRvcywgQWt0aW9uZW4gdS5hZS4gZGllIGlnbm9yaWVydCB3ZXJkZW4uCisgICAgSW4gYWxsZXIgUmVnZWwgc29sbHRlIGRpZSBJZ25vcmllcmVwcnVlZnVuZyBkdXJjaCBBdWZydWYgdm9uIFRlc3RJZ25vcmUoKQorICAgIGltIFNwaWVsZXIgZXJmb2xnZW4gdW5kIG5pY2h0IHNlbGJlciBQX0lHTk9SRSBkdXJjaHN1Y2h0IHdlcmRlbi4KKworQkVNRVJLVU5HRU46CisgICAgRGllIERhdGVuIGluIGRpZXNlciBQcm9wZXJ0eSB3ZXJkZW4gaW50ZXJuIGFscyBNYXBwaW5nIGdlc3BlaWNoZXJ0LCBuaWNodAorICAgIGFscyBBcnJheSB2b24gU3RyaW5ncy4gQml0dGUgbmljaHQgbWl0IFNldC9RdWVyeSgpIGFuIGRpZXNlciBQcm9wZXJ0eQorICAgIGhlcnVtYmFzdGVsbi4KKworU0lFSEUgQVVDSDoKKyAgICBUZXN0SWdub3JlLCAvc3RkL3BsYXllci9jb21tLmMKKworLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorTGFzdCBtb2RpZmllZDogMDIuMTAuMjAxMSwgWmVzc3RyYQorCmRpZmYgLS1naXQgYS9kb2MvcHJvcHMvUF9JTkRPT1JTIGIvZG9jL3Byb3BzL1BfSU5ET09SUwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5jMWFiMDdhCi0tLSAvZGV2L251bGwKKysrIGIvZG9jL3Byb3BzL1BfSU5ET09SUwpAQCAtMCwwICsxLDMzIEBACitOQU1FOgorICAgICBQX0lORE9PUlMgICAgICAgICAgICAgICAgICAgICAiaW5kb29ycyIKKworREVGSU5JRVJUIElOOgorICAgICAvc3lzL3Jvb20vZGVzY3JpcHRpb24uaAorCitCRVNDSFJFSUJVTkc6CisgICAgIEdlc2V0enQsIHdlbm4gdm9uIGRlbSBSYXVtIGF1cyBkZXIgSGltbWVsIG5pY2h0IHNpY2h0YmFyIGlzdC4KKworICAgICBPYmpla3RlIG9kZXIgR2lsZGVuIHdlcnRlbiBkaWVzZSBQcm9wZXJ0eSB0ZWlsd2Vpc2UgYXVzLCBmdWVyCisgICAgIElubmVucmFldW1lIHNvbGx0ZSBzaWUgYWxzbyBzaW5udm9sbGVyd2Vpc2UgZ2VzZXR6dCB3ZXJkZW4uCisKKyAgICAgTGljaHQgd2lyZCBfbmljaHRfIGR1cmNoIFBfSU5ET09SUyBiZWVpbmZsdXNzdCwgbXVzcyBhbHNvCisgICAgIHNlbGJzdCBhbmdlcGFzc3Qgd2VyZGVuLgorCitCRUlTUElFTAorICAgICAvLyBFaW4gZHVua2xlciBJbm5lbnJhdW06CisgICAgIFNldFByb3AoUF9JTkRPT1JTLCAxKTsgICAgICAgICAgICAvLyBlaW4gSW5uZW5yYXVtIGxpZWd0IGlubmVuIDopCisgICAgIFNldFByb3AoUF9MSUdIVCwgMCk7ICAgICAgICAgICAgICAvLyBMaWNodCBhdWYgMAorCisgICAgIC8vIEVpbiByaWNodGlnIGhlbGxlciBBdXNzZW5yYXVtOgorICAgICBTZXRQcm9wKFBfSU5ET09SUywgMCk7CisgICAgIFNldFByb3AoUF9MSUdIVCwgMik7CisKKyAgICAgLy8gRWluIGhlbGxlciBBdXNzZW5yYXVtIG1pdCBNb25kbGljaHQgKGd1dCBmdWVyIERlbGZlbikKKyAgICAgU2V0UHJvcChQX0lORE9PUlMsIDApOworICAgICBTZXRQcm9wKFBfTElHSFQsIDEpOworICAgICBTZXRQcm9wKFBfTElHSFRfVFlQRSwgTFRfU1RBUlN8TFRfTU9PTik7CisKK1NJRUhFIEFVQ0gKKyAgICAgUF9MSUdIVCwgUF9MSUdIVF9BQlNPUlBUSU9OLCBQX0xJR0hUX1RZUEUKKworMjUuQXVnIDIwMDggR2xvaW5zb24KZGlmZiAtLWdpdCBhL2RvYy9wcm9wcy9QX0lORk8gYi9kb2MvcHJvcHMvUF9JTkZPCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjA2ZGFiZTYKLS0tIC9kZXYvbnVsbAorKysgYi9kb2MvcHJvcHMvUF9JTkZPCkBAIC0wLDAgKzEsMTggQEAKK1BfSU5GTworTkFNRToKKyAgICAgUF9JTkZPICAgICAgICAgICAgICAgICAgICAgICAgImluZm8iICAgICAgICAgICAgICAgICAgICAgICAgCisKK0RFRklOSUVSVCBJTjoKKyAgICAgL3N5cy9wcm9wZXJ0aWVzLmgKKworQkVTQ0hSRUlCVU5HOgorICAgICBHZWhlaW1lIEluZm9ybWF0aW9uLCBkaWUgZ2dmLiB1ZWJlciBlaW5lbiBaYXViZXJzcHJ1Y2gKKyAgICAgdm9uIFNwaWVsZXJuIGVybWl0dGVsdCB3ZXJkZW4ga2Fubi4KKyAgICAgCitCRUlTUElFTDoKKyAgICAgU2V0UHJvcChQX0lORk8sIkR1IGVyZ3J1ZW5kZXN0IGRhcyBHZWhlaW1uaXMuXG4iKQorCitTSUVIRSBBVUNIOgorICAgICBHZXRPd25lcihMKQorCisyNC4gQXByaWwgMjAwNiwgVmFuaW9uIApkaWZmIC0tZ2l0IGEvZG9jL3Byb3BzL1BfSU5GT1JNTUUgYi9kb2MvcHJvcHMvUF9JTkZPUk1NRQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi40NzM2OTMzCi0tLSAvZGV2L251bGwKKysrIGIvZG9jL3Byb3BzL1BfSU5GT1JNTUUKQEAgLTAsMCArMSwxNCBAQAorTkFNRToKKyAgICBQX0lORk9STU1FICAgICAgICAgICAgICAgICAgICAiaW5mb3JtbWUiICAgICAgICAgICAgICAgICAgICAKKworREVGSU5JRVJUIElOOgorICAgIC9zeXMvcHJvcGVydGllcy5oCisKK0JFU0NIUkVJQlVORzoKKyAgICBFbnRoYWVsdCBkYXMgRmxhZywgb2IgZGVyIFNwaWVsZXIgdWViZXIgZWluLS9hdXNsb2dnZW5kZSBTcGllbGVyCisgICAgaW5mb3JtaWVydCB3ZXJkZW4gd2lsbC4KKworU0lFSEUgQVVDSDoKKyAgICBTcGllbGVya29tbWFuZG86IGluZm9ybQorCis2LkZlYiAyMDE2IEdsb2luc29uCmRpZmYgLS1naXQgYS9kb2MvcHJvcHMvUF9JTlBDX0hPTUUgYi9kb2MvcHJvcHMvUF9JTlBDX0hPTUUKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMzFmZWEwYgotLS0gL2Rldi9udWxsCisrKyBiL2RvYy9wcm9wcy9QX0lOUENfSE9NRQpAQCAtMCwwICsxLDggQEAKK05BTUU6CisgICAgUF9JTlBDX0hPTUUgICAgICAgICAgICAgICAgICAgImlucGNfaG9tZSIgICAgICAgICAgICAgICAgICAgCisKK0RFRklOSUVSVCBJTjoKKyAgICAvc3lzL2lucGMvd2Fsa2luZy5oCisKK0JFU0NIUkVJQlVORzoKKyAgICAqKiogS0VJTkUgQkVTQ0hSRUlCVU5HIFZPUkhBTkRFTiAqKioKZGlmZiAtLWdpdCBhL2RvYy9wcm9wcy9QX0lOUENfTEFTVF9FTlZJUk9OTUVOVCBiL2RvYy9wcm9wcy9QX0lOUENfTEFTVF9FTlZJUk9OTUVOVApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4yYjc0MzdhCi0tLSAvZGV2L251bGwKKysrIGIvZG9jL3Byb3BzL1BfSU5QQ19MQVNUX0VOVklST05NRU5UCkBAIC0wLDAgKzEsOCBAQAorTkFNRToKKyAgICBQX0lOUENfTEFTVF9FTlZJUk9OTUVOVCAgICAgICAiaW5wY19sYXN0X2Vudmlyb25tZW50IiAgICAgICAKKworREVGSU5JRVJUIElOOgorICAgIC9zeXMvaW5wYy93YWxraW5nLmgKKworQkVTQ0hSRUlCVU5HOgorICAgICoqKiBLRUlORSBCRVNDSFJFSUJVTkcgVk9SSEFOREVOICoqKgpkaWZmIC0tZ2l0IGEvZG9jL3Byb3BzL1BfSU5QQ19MQVNUX1BMQVlFUl9DT05UQUNUIGIvZG9jL3Byb3BzL1BfSU5QQ19MQVNUX1BMQVlFUl9DT05UQUNUCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmYzMmNkMDIKLS0tIC9kZXYvbnVsbAorKysgYi9kb2MvcHJvcHMvUF9JTlBDX0xBU1RfUExBWUVSX0NPTlRBQ1QKQEAgLTAsMCArMSw4IEBACitOQU1FOgorICAgIFBfSU5QQ19MQVNUX1BMQVlFUl9DT05UQUNUICAgICJpbnBjX2xhc3RfcGxheWVyX2NvbnRhY3QiICAgIAorCitERUZJTklFUlQgSU46CisgICAgL3N5cy9pbnBjL3dhbGtpbmcuaAorCitCRVNDSFJFSUJVTkc6CisgICAgKioqIEtFSU5FIEJFU0NIUkVJQlVORyBWT1JIQU5ERU4gKioqCmRpZmYgLS1naXQgYS9kb2MvcHJvcHMvUF9JTlBDX1dBTEtfQVJFQSBiL2RvYy9wcm9wcy9QX0lOUENfV0FMS19BUkVBCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjNkN2RmYzYKLS0tIC9kZXYvbnVsbAorKysgYi9kb2MvcHJvcHMvUF9JTlBDX1dBTEtfQVJFQQpAQCAtMCwwICsxLDggQEAKK05BTUU6CisgICAgUF9JTlBDX1dBTEtfQVJFQSAgICAgICAgICAgICAgImlucGNfd2Fsa19hcmVhIiAgICAgICAgICAgICAgCisKK0RFRklOSUVSVCBJTjoKKyAgICAvc3lzL2lucGMvd2Fsa2luZy5oCisKK0JFU0NIUkVJQlVORzoKKyAgICAqKiogS0VJTkUgQkVTQ0hSRUlCVU5HIFZPUkhBTkRFTiAqKioKZGlmZiAtLWdpdCBhL2RvYy9wcm9wcy9QX0lOUENfV0FMS19ERUxBWVMgYi9kb2MvcHJvcHMvUF9JTlBDX1dBTEtfREVMQVlTCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmY1MTA3NjQKLS0tIC9kZXYvbnVsbAorKysgYi9kb2MvcHJvcHMvUF9JTlBDX1dBTEtfREVMQVlTCkBAIC0wLDAgKzEsOCBAQAorTkFNRToKKyAgICBQX0lOUENfV0FMS19ERUxBWVMgICAgICAgICAgICAiaW5wY193YWxrX2RlbGF5IiAgICAgICAgICAgICAKKworREVGSU5JRVJUIElOOgorICAgIC9zeXMvaW5wYy93YWxraW5nLmgKKworQkVTQ0hSRUlCVU5HOgorICAgICoqKiBLRUlORSBCRVNDSFJFSUJVTkcgVk9SSEFOREVOICoqKgpkaWZmIC0tZ2l0IGEvZG9jL3Byb3BzL1BfSU5QQ19XQUxLX0ZMQUdTIGIvZG9jL3Byb3BzL1BfSU5QQ19XQUxLX0ZMQUdTCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjNlODc0OWIKLS0tIC9kZXYvbnVsbAorKysgYi9kb2MvcHJvcHMvUF9JTlBDX1dBTEtfRkxBR1MKQEAgLTAsMCArMSw4IEBACitOQU1FOgorICAgIFBfSU5QQ19XQUxLX0ZMQUdTICAgICAgICAgICAgICJpbnBjX3dhbGtfZmxhZ3MiICAgICAgICAgICAgIAorCitERUZJTklFUlQgSU46CisgICAgL3N5cy9pbnBjL3dhbGtpbmcuaAorCitCRVNDSFJFSUJVTkc6CisgICAgKioqIEtFSU5FIEJFU0NIUkVJQlVORyBWT1JIQU5ERU4gKioqCmRpZmYgLS1naXQgYS9kb2MvcHJvcHMvUF9JTlBDX1dBTEtfTU9ERSBiL2RvYy9wcm9wcy9QX0lOUENfV0FMS19NT0RFCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjIyZGE5OWQKLS0tIC9kZXYvbnVsbAorKysgYi9kb2MvcHJvcHMvUF9JTlBDX1dBTEtfTU9ERQpAQCAtMCwwICsxLDggQEAKK05BTUU6CisgICAgUF9JTlBDX1dBTEtfTU9ERSAgICAgICAgICAgICAgImlucGNfd2Fsa19tb2RlIiAgICAgICAgICAgICAgCisKK0RFRklOSUVSVCBJTjoKKyAgICAvc3lzL2lucGMvd2Fsa2luZy5oCisKK0JFU0NIUkVJQlVORzoKKyAgICAqKiogS0VJTkUgQkVTQ0hSRUlCVU5HIFZPUkhBTkRFTiAqKioKZGlmZiAtLWdpdCBhL2RvYy9wcm9wcy9QX0lOUENfV0FMS19ST1VURSBiL2RvYy9wcm9wcy9QX0lOUENfV0FMS19ST1VURQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi40ZDExY2IxCi0tLSAvZGV2L251bGwKKysrIGIvZG9jL3Byb3BzL1BfSU5QQ19XQUxLX1JPVVRFCkBAIC0wLDAgKzEsOCBAQAorTkFNRToKKyAgICBQX0lOUENfV0FMS19ST1VURSAgICAgICAgICAgICAiaW5wY193YWxrX3JvdXRlIiAgICAgICAgICAgICAKKworREVGSU5JRVJUIElOOgorICAgIC9zeXMvaW5wYy93YWxraW5nLmgKKworQkVTQ0hSRUlCVU5HOgorICAgICoqKiBLRUlORSBCRVNDSFJFSUJVTkcgVk9SSEFOREVOICoqKgpkaWZmIC0tZ2l0IGEvZG9jL3Byb3BzL1BfSU5URVJNVUQgYi9kb2MvcHJvcHMvUF9JTlRFUk1VRApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi42ZDRiZDU5Ci0tLSAvZGV2L251bGwKKysrIGIvZG9jL3Byb3BzL1BfSU5URVJNVUQKQEAgLTAsMCArMSwxMyBAQAorTkFNRToKKyAgICBQX0lOVEVSTVVEICAgICAgICAgICAgICAgICAgICAiaW50ZXJtdWQiICAgICAgICAgICAgICAgICAgICAKKworREVGSU5JRVJUIElOOgorICAgIC9zeXMvcGxheWVyL2NvbW0uaAorCitCRVNDSFJFSUJVTkc6CisgICBEaWUgQmVkZXV0dW5nIGRpZXNlciBQcm9wZXJ0eSBpc3QgaW4gZGVuIHByYWVoaXN0b3Jpc2NoZW4gVW50aWVmZW4KKyAgIGRlciBNdWRsaWIgdmVybG9yZW5nZWdhbmdlbi4KKyAgIFdpcmQgbmljaHQgbWVociBiZW51dHp0LgorICAgTmljaHQgYmVudXR6ZW4uCisgICBJZ25vcmllcmVuLgorCmRpZmYgLS1naXQgYS9kb2MvcHJvcHMvUF9JTlRFUk5BTF9FWFRSQV9MT09LIGIvZG9jL3Byb3BzL1BfSU5URVJOQUxfRVhUUkFfTE9PSwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4xNjAxMjVkCi0tLSAvZGV2L251bGwKKysrIGIvZG9jL3Byb3BzL1BfSU5URVJOQUxfRVhUUkFfTE9PSwpAQCAtMCwwICsxLDM5IEBACitOQU1FOgorCVBfSU5URVJOQUxfRVhUUkFfTE9PSwkJCSJpbnRlcm5hbF9leHRyYWxvb2siCisKK0RFRklOSUVSVCBJTjoKKwkvc3lzL2xpdmluZy9kZXNjcmlwdGlvbi5oCisKK0JFU0NIUkVJQlVORzoKKwlEaWVzZSBQcm9wZXJ0eSBlbnRoYWVsdCBlaW4gTWFwcGluZywgaW4gZGVtIGFsbGUgZWluemVsbmVuCisgIEV4dHJhLUxvb2stRWludHJhZWdlIGRlcyBMaXZpbmdzIGVudGhhbHRlbiBzaW5kLiBEYWJlaSB3ZWRlbiBkaWUgRGF0ZW4gdm9uCisgIEFkZEV4dHJhTG9vaygpIHVuZCBSZW1vdmVFeHRyYUxvb2soKSB2ZXJ3YWx0ZXQuIEZyYWd0IG1hbiBkaWVzZSBQcm9wIG1pdAorICBRdWVyeVByb3AoKSBhYiwgZXJoYWVsdCBtYW4gZGllIEF1c2dhYmUgZGVyIGd1ZWx0aWdlbiBFeHRyYWxvb2tzIGRlcworICBMaXZpbmdzLiBCZWkgQWJmcmFnZSBwZXIgUXVlcnkoKSBlcmhhZWx0IG1hbiBlaW4gTWFwcGluZyBtaXQgYWxsZW4KKyAgRWludHJhZWdlbiB1bmQgZGVyZW4gRGF0ZW4uIEplZGVyIFdlcnQgaW0gTWFwcGluZyBpc3QgZXJuZXV0IGVpbiBNYXBwaW5nLCAKKyAgd2VsY2hlcyBmb2xnZW5kZSBLZXlzIGVudGhhbHRlbiBrYW5uOgorICAtICJ4bGxvb2siOiBTdHJpbmcsIGRlciBpbSBFeHRyYWxvb2sgZGVzIExpdmluZyBhbmdlemVpZ3Qgd2lyZC4KKyAgLSAieGxkdXJhdGlvbiI6IFplaXRzdGVtcGVsIChpbnQpLCBkZXIgYW5naWJ0LCB3aWUgbGFuZyBkZXIgRWludHJhZyBndWVsdGlnCisgICAgICAgICAgICAgICAgICBpc3QuIDAgPT0gIlVuZW5kbGljaCIsIG5lZ2F0aXZlIFphaGxlbiBiZXNhZ2VuLCBkYXNzIGRlcgorICAgICAgICAgICAgICAgICAgRWludHJhZyBudXIgYmlzIFJlYm9vdC9FbmRlIGd1ZWx0aWcgc2VpbiB1bmQgYWJzKHhsZHVyYXRpb24pCisgICAgICAgICAgICAgICAgICBpc3QgZGVyIFplaXRwdW5rdCBkZXMgRWludHJhZ2VzIGRpZXNlcyBFeHRyYWxvb2tzLgorICAtICJ4bGVuZGUiOiBTdHJpbmcsIGRlciBuYWNoIEFibGF1ZmVuIGFuIGRhcyBMaXZpbmcgYXVzZ2VnZWJlbiB3aXJkLgorICAtICJ4bGZ1biI6IEZ1bmt0aW9uLCBkaWUgZ2VydWZlbiB3aXJkIHVuZCBkZW4gU3RyaW5nIHp1cnVlY2tsaWVmZXJuIG11c3MsIAorICAgICAgICAgICAgIGRlciBhdXNnZWJlbiB3ZXJkZW4gc29sbC4KKyAgLSAieGxlbmRlZnVuIjogRnVua3Rpb24sIGRpZSBnZXJ1ZmVuIHdpcmQsIHdlbm4gZGVyIEVpbnRyYWcgYWJnZWxhdWZlbiBpc3QKKyAgICAgICAgICAgICAgICAgdW5kIGRlbiBTdHJpbmcgenVydWVja2xpZWZlcm4gbXVzcywgZGVyIGRhbm4gYW5zIExpdmluZworICAgICAgICAgICAgICAgICBhdXNnZWJlbiB3aXJkLgorICAtICJ4bG9iamVjdG5hbWUiOiBPYmpla3QsIGluIGRlbSBkaWUgby5hLiBGdW5rdGlvbmVuIGdlcnVmZW4gd2VyZGVuLgorCitCRU1FUktVTkc6CisgIERJRVNFIFBST1BFUlRZIEJJVFRFIE5JRU1BTFMgUEVSIEhBTkQgTUlUIFNldCgpL1NldFByb3AoKSBBRU5ERVJOIQorICBEaWUgRGF0ZW4gaW4gZGllc2VyIFByb3Agd2VyZGVuIHZvbSBMaXZpbmcgc2VsYmVyIHZlcndhbHRldC4gRXh0cmFsb29rcworICBrb2VubmVuIG1pdHRlbCBBZGRFeHRyYUxvb2soKSBlaW5nZXRyYWdlbiB1bmQgbWl0IFJlbW92ZUV4dHJhTG9vaygpIGVudGZlcm50CisgIHdlcmRlbi4KKworU0lFSEUgQVVDSDoKKyAgbG9uZygpLCAvc3RkL2xpdmluZy9kZXNjcmlwdGlvbi5jLCAvc3RkL3BsYXllci9iYXNlLmMKKyAgQWRkRXh0cmFMb29rKCksIFJlbW92ZUV4dHJhTG9vaygpCisKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKzEzLjA1LjIwMDcsIFplc3N0cmEKZGlmZiAtLWdpdCBhL2RvYy9wcm9wcy9QX0lOVF9MSUdIVCBiL2RvYy9wcm9wcy9QX0lOVF9MSUdIVApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4wNDUwNGE2Ci0tLSAvZGV2L251bGwKKysrIGIvZG9jL3Byb3BzL1BfSU5UX0xJR0hUCkBAIC0wLDAgKzEsMjAgQEAKK05BTUU6CisgICAgUF9JTlRfTElHSFQgICAgICAgICAgICAgICAgICAgICAgICJpbnRfbGlnaHQiCisKK0RFRklOSUVSVCBJTjoKKyAgICAvc3lzL3Byb3BlcnRpZXMuaAorCitCRVNDSFJFSUJVTkc6CisgICAgR2lidCBkZW4gTGljaHRsZXZlbCBhbiwgZGVyIF9pbl8gZWluZW0gT2JqZWt0IGlzdC4gRWluIEFiZnJhZ2VuIGRpZXNlcgorICAgIFByb3BlcnR5IGthbm4gei5CLiBpbiBSYWV1bWVuIHNpbm52b2xsIHNlaW4sIHdlbm4gZXMgei5CLiB1bSBkYXMKKyAgICBhdWZ3YWNoZW4gZWluZXIgRXVsZSBvZGVyIGVpbmVyIEZsZWRlcm1hdXMgZ2VodC4gWnVtIEFiZnJhZ2VuIG9iIGVpbgorICAgIFNwaWVsZXIgZXR3YXMgc2VoZW4ga2FubiwgYml0dGUgYXVmIGplZGVuIEZhbGwgUF9QTEFZRVJfTElHSFQgYmVudXR6ZW4hCisKKyAgICBCaXR0ZSBfbnVyXyB1ZWJlciBRdWVyeVByb3AgYXVmIGRpZXNlIFByb3BlcnR5IHp1Z3JlaWZlbiwKKyAgICBkYSBkYXMgTGljaHRsZXZlbCBnZ2YuIG5ldSBiZXJlY2huZXQgd2VyZGVuIG11c3MhCisKKyAgICBFaW4gZGlyZWt0ZXMgc2V0emVuIGRpZXNlciBQcm9wZXJ0eSBpc3QgTklDSFQgbW9lZ2xpY2gsIGhpZXJ6dSBiaXR0ZQorICAgIFBfTElHSFQgYmVudXR6ZW4hCisKK1NJRUhFIEFVQ0g6CisgICAgUF9MSUdIVCwgUF9UT1RBTF9MSUdIVCwgUF9QTEFZRVJfTElHSFQsIFBfTElHSFRfTU9ESUZJRVIsIENhbm5vdFNlZSgpCmRpZmYgLS1naXQgYS9kb2MvcHJvcHMvUF9JTlRfTE9ORyBiL2RvYy9wcm9wcy9QX0lOVF9MT05HCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjNlNTkyNDkKLS0tIC9kZXYvbnVsbAorKysgYi9kb2MvcHJvcHMvUF9JTlRfTE9ORwpAQCAtMCwwICsxLDMyIEBACitQX0lOVF9MT05HCitOQU1FOgorICAgICBQX0lOVF9MT05HICAgICAgICAgICAgICAgICAgICAiaW50X2xvbmciCisKK0RFRklOSUVSVCBJTjoKKyAgICAgL3N5cy9yb29tL2Rlc2NyaXB0aW9uLmgKKworQkVTQ0hSRUlCVU5HOgorICAgICBFbnRoYWVsdCBCZXNjaHJlaWJ1bmcsIGRpZSBtYW4gYmVrb21tdCwgd2VubiBtYW4gc2ljaCBpbiBkZW0KKyAgICAgQ29udGFpbmVyIChqZWRlciBSYXVtIGlzdCBlaW5lcikgdW1zY2hhdXQgYWxzIFN0cmluZy4KKworICAgICBEZXIgVGV4dCBzb2xsdGUgYmVyZWl0cyB1bWdlYnJvY2hlbiBzZWluLgorCisgICAgIERpZXNlIFByb3BlcnR5IGJlc3RpbW10IGRpZSBBbnNpY2h0IGRlcyBDb250YWluZXJzIHZvbiBpbm5lbi4KKyAgICAgRnVlciBkaWUgQXVzc2VuKGxhbmcpYW5zaWNodCBtdXNzIFBfTE9ORyBiZW51dHp0IHdlcmRlbi4KKworQkVNRVJLVU5HRU46CisgICAgIC0gQmVzY2hyZWlidW5nZW4gZnVlciBldHdhaWdlIFR1ZXJlbiBpbSBSYXVtIHdlcmRlbiBpbiBpbnRfbG9uZygpCisgICAgICAgaGluenVnZWZ1ZWd0LiAoRnJ1ZWhlciB3dXJkZSBkaWVzIGluIGVpbmVyIFF1ZXJ5bWV0aG9kZSBhdWYgZGllc2UgUHJvcAorICAgICAgIGdlbWFjaHQuKQorCitCRUlTUElFTEU6CisgICAgIFNldFByb3AoUF9JTlRfTE9ORywgYnJlYWtfc3RyaW5nKAorICAgICAgIkR1IHN0ZWhzdCBpbiBlaW5lbSB0b3RhbCBzcGFubmVuZGVuIFRlc3RyYXVtLiBTZWluZSBhYnNvbHV0ZSAiCisgICAgICAiTmljaHRpZ2tlaXQgZXJmdWVsbHQgZGljaCBtaXQgZWhyZnVlcmNodGlnZW0gR3JhdWVuLiIsNzgpKTsKKworU0lFSEUgQVVDSDoKKyAgICAgQWVobmxpY2hlczoJUF9JTlRfU0hPUlQKKyAgICAgU29uc3RpZ2VzOgkJaW50X2xvbmcoKSwgUF9MT05HCisJCQlwcm9jZXNzX3N0cmluZygpLCBicmVha19zdHJpbmcoKQorCiswNC4wNi4yMDA5LCBaZXNzdHJhCmRpZmYgLS1naXQgYS9kb2MvcHJvcHMvUF9JTlRfU0hPUlQgYi9kb2MvcHJvcHMvUF9JTlRfU0hPUlQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOWM2YTBhZgotLS0gL2Rldi9udWxsCisrKyBiL2RvYy9wcm9wcy9QX0lOVF9TSE9SVApAQCAtMCwwICsxLDM2IEBACitQX0lOVF9TSE9SVAorTkFNRToKKyAgICAgUF9JTlRfU0hPUlQJCQkiaW50X3Nob3J0IgorCitERUZJTklFUlQgSU46CisgICAgIC9zeXMvdGhpbmcvZGVzY3JpcHRpb24uaAorCitCRVNDSFJFSUJVTkc6CisgICAgIERpZXNlIFByb3BlcnR5IGVudGhhZWx0IGRpZSBJbm5lbi1LdXJ6YmVzY2hyZWlidW5nIGRlcyBDb250YWluZXJzCisgICAgIGFscyBTdHJpbmcgb2RlciBDbG9zdXJlIChtaXQgU3RyaW5nLVJ1ZWNrZ2FiZXdlcnQpLgorCisgICAgIENvbnRhaW5lciBzaW5kIGhpZXJiZWkgei5CLiBSYWV1bWUuCisgICAgIEFDSFRVTkc6IERpZSBLdXJ6YmVzY2hyZWlidW5nIHNvbGx0ZSBkYWJlaSB3ZWRlciBtaXQgZWluZW0KKwkgICAgICBTYXR6emVpY2hlbiBub2NoIG1pdCBlaW5lbSAiXG4iIGFiZ2VzY2hsb3NzZW4gc2VpbgorCSAgICAgIChkaWVzIHdpcmQgdm9uIGRlbiB6dXN0YWVuZGlnZW4gRnVua3Rpb25lbiBlcmxlZGlndCkuCisKKyAgICAgTWFuIHNvbGx0ZSBkaWUgUHJvcGVydHkgbmljaHQgYXVmIDAgc2V0emVuLgorCisgICAgIERpZXNlIFByb3BlcnR5IGJlc3RpbW10IGRpZSBBbnNpY2h0IGRlcyBDb250YWluZXJzIHZvbiBpbm5lbi4KKyAgICAgRnVlciBkaWUgQXVzc2VuKGt1cnopYW5zaWNodCBtdXNzIFBfU0hPUlQgYmVudXR6dCB3ZXJkZW4uCisKK0JFTUVSS1VOR0VOOgorICAgICAtIGludF9zaG9ydCgpIChiZWkgQmV3ZWd1bmcpIGZpbHRlcnQgUF9JTlRfU0hPUlQgZHVyY2ggcHJvY2Vzc19zdHJpbmcoKQorICAgICAgIC0+IGRhaGVyIHNpbmQgQ2xvc3VyZXMgbW9lZ2xpY2gKKworQkVJU1BJRUxFOgorICAgICAvLyBlaW4gR2FuZyBzaWVodCBuYXR1ZXJsaWNoIHNvIGF1cworICAgICBTZXRQcm9wKFBfSU5UX1NIT1JULCAiRWluIEdhbmciKTsKKworU0lFSEUgQVVDSDoKKyAgICAgQWVobmxpY2hlczoJUF9JTlRfTE9ORworICAgICBTb25zdGlnZXM6CQlpbnRfc2hvcnQoKSwgUF9TSE9SVAorCQkJcHJvY2Vzc19zdHJpbmcoKSwgYnJlYWtfc3RyaW5nKCkKKworLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorTGFzdCBtb2RpZmllZDogVGh1IE1heSAzMSAxNTozNDowNSAyMDAxIGJ5IFBhdHJ5bgpkaWZmIC0tZ2l0IGEvZG9jL3Byb3BzL1BfSU5WSVMgYi9kb2MvcHJvcHMvUF9JTlZJUwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi43MDIyZWEwCi0tLSAvZGV2L251bGwKKysrIGIvZG9jL3Byb3BzL1BfSU5WSVMKQEAgLTAsMCArMSw1MCBAQAorTkFNRToKKyAgICAgUF9JTlZJUyAgICAgICAgICAgICAgICAgICAgICAgImludmlzIiAgICAgICAgICAgICAgICAgICAgICAgCisKK0RFRklOSUVSVCBJTjoKKyAgICAgL3N5cy9wbGF5ZXIvYmFzZS5oCisKK0JFU0NIUkVJQlVORzoKKyAgICAgRGllIFByb3BlcnR5IFBfSU5WSVMgZGllbnQgZGF6dSwgT2JqZWt0ZSBhbHMgdW5zaWNodGJhciB6dSBrZW5uemVpY2huZW4uCisgICAgIEhpZXJiZWkgdmVyc3VjaHQgUF9JTlZJUyBkaWUgbW9lZ2xpY2hlbiBJbnRlcmFrdGlvbmVuIG1pdCBTcGllbGVybiB6dQorICAgICBtaW5pbWllcmVuIChpbSBHZWdlbnNhdHogenUgZWluZXIgZmVobGVuZGVuIFBfU0hPUlQsIHdlbGNoZSBkYXMgT2JqZWt0CisgICAgIG51ciBlaW5mYWNoIG5pY2h0LXNpY2h0YmFyIG1hY2h0KS4KKyAgICAgCisgICAgIE1hbiBzb2xsdGUgZHJlaSBBcnRlbiB2b24gdW5zaWNodGJhcmVuIE9iamVrdGVuIHVudGVyc2NoZWlkZW46CisKKyAgICAgLSBHZWdlbnN0YWVuZGUKKyAgICAgICBTZXR6dCBtYW4gUF9JTlZJUyBhdWYgZWluZSBaYWhsIHVuZ2xlaWNoIDAsIHdpcmQgZGVyIEdlZ2Vuc3RhbmQKKyAgICAgICB1bnNpY2h0YmFyIHVuZCBkZXIgTmFtZSB6dSAiZXR3YXMiLiBadXNhZXR6bGljaCBrb2VubmVuIFNwaWVsZXIgaWhuCisgICAgICAgbmljaHQgbWVociBhbnNwcmVjaGVuLCBkLmguIG5laG1lbiwgd2Vnd2VyZmVuLCB3ZWl0ZXJnZWJlbiBldGMuCisgICAgICAgKEJlaSBtYWdpZXItZWlnZW5lbiBLb21tYW5kb3MgaXN0IGRpZXMgZXZ0bC4gbmljaHQgdW1nZXNldHp0Li4uKQorICAgICAgIFNldHp0IG1hbiBQX1NIT1JUIGF1ZiAwLCB3aXJkIGRlciBHZWdlbnN0YW5kIG51ciBuaWNodCBtZWhyIGluCisgICAgICAgZGVyIEludmVudGFybGlzdGUgdm9uIEJlaGFlbHRlcm4vUmFldW1lbiBhbmdlemVpZ3QsIGVyIGJlaGFlbHQgYWJlcgorICAgICAgIHNlaW5lbiBOYW1lbiB1bmQgaXN0IGR1cmNoIFNwaWVsZXIgYW5zcHJlY2hiYXIsIHdlbm4gc2llIGVpbmUgSUQKKyAgICAgICBrZW5uZW4uCisKKyAgICAgLSBOUENzCisgICAgICAgQmVpIGdlc2V0enRlbSBQX0lOVklTIHdpcmQgZGVyIE5QQyB1bnNpY2h0YmFyIHVuZCBzZWluIE5hbWUgd2lyZCB6dQorICAgICAgICJKZW1hbmQiLiBadXNhZXR6bGljaCBrb2VubmVuIFNwaWVsZXIgaWhuIG5pY2h0IG1laHIgYW5zcHJlY2hlbiwgei5CLgorICAgICAgIHRvZXRlbiBvZGVyIGtudWRkZWxuLgorICAgICAgIChCZWkgbWFnaWVyLWVpZ2VuZW4gS29tbWFuZG9zIGlzdCBkaWVzIGV2dGwuIG5pY2h0IHVtZ2VzZXR6dC4uLikKKyAgICAgICBTZXR6dCBtYW4gUF9TSE9SVCBhdWYgMCwgd2lyZCBkZXIgTlBDIG51ciBuaWNodCBtZWhyIGluIGRlcgorICAgICAgIEludmVudGFybGlzdGUgdm9uIEJlaGFlbHRlcm4vUmFldW1lbiBhbmdlemVpZ3QsIGVyIGJlaGFlbHQgYWJlciBzZWluZW4KKyAgICAgICBOYW1lbiB1bmQgaXN0IGR1cmNoIFNwaWVsZXIgYW5zcHJlY2hiYXIsIHdlbm4gc2llIGVpbmUgSUQga2VubmVuLiBBdWNoCisgICAgICAgYW5ncmVpZmVuIHVuZCBrYWVtcGZlbiBpc3QgbW9lZ2xpY2guCisgICAgIAorICAgICAtIE1hZ2llcgorICAgICAgIE1hZ2llciBtYWNodCBtYW4gdW5zaWNodGJhciwgaW5kZW0gbWFuIGlobmVuIGRpZSBQcm9wZXJ0eSBQX0lOVklTIGF1ZgorICAgICAgIGVpbmVuIFdlcnQgPD4gMCBzZXR6dC4KKyAgICAgICAqICBTcGllbGVyIGR1ZXJmZW4gbmljaHQgdW5zaWNodGJhciBnZW1hY2h0IHdlcmRlbiEgICAgICAgICAgICAgICAqCisgICAgICAgKiAgV2lyZCBlaW4gTWFnaWVyIHVuc2ljaHRiYXIgZ2VtYWNodCwgbXVzcyBtYW4gaWhtIGRpZSBQcm9wZXJ0eQkgKgorICAgICAgICogIFBfSU5WSVMgYXVmIGRlbiBXZXJ0IHNldHplbiwgZGVuIGRpZSBQcm9wZXJ0eSBQX0FHRSB6dSBkaWVzZW0JICoKKyAgICAgICAqICBaZWl0cHVua3QgaGF0IChrZWluZSBGX1FVRVJZX01FVEhPRCAhKS4JCQkJICAgICAgICAgICAgICAgICAqCisgICAgICAgU2V0enQgbWFuIGRpZSBQcm9wZXJ0eSBhdWYgZGVuIFdlcnQgMSwgc28gZXJoYWVsdCBlaW4gU3BpZWxlciwKKyAgICAgICB3ZW5uIGVyIGRlbiBlbnRzcC4gTWFnaWVyIGZpbmdlcnQsIGRpZSBBdXNnYWJlOiBBbHRlcjogMDA6MDA6MDIsCisgICAgICAgd2FzIGdlbmF1c28gdmVycmFldGVyaXNjaCBpc3QsIHdpZSBlaW4gQWx0ZXIsIGRhc3MgYmVpIGVpbmVtCisgICAgICAgc2NoZWluYmFyIG5pY2h0IGVpbmdlbG9nZ3RlbiBNYWdpZXIgaW1tZXIgd2VpdGVyIGhvY2hnZXphZWhsdAorICAgICAgIHdpcmQuCisKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKzI3LjA1LjIwMTUsIFplc3N0cmEKKwpkaWZmIC0tZ2l0IGEvZG9jL3Byb3BzL1BfSVBfTkFNRSBiL2RvYy9wcm9wcy9QX0lQX05BTUUKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uN2I1MDNlYQotLS0gL2Rldi9udWxsCisrKyBiL2RvYy9wcm9wcy9QX0lQX05BTUUKQEAgLTAsMCArMSw4IEBACitOQU1FOgorICAgIFBfSVBfTkFNRSAgICAgICAgICAgICAgICAgICAgICJpcF9uYW1lIiAgICAgICAgICAgICAgICAgICAgIAorCitERUZJTklFUlQgSU46CisgICAgL3N5cy9wbGF5ZXIuaAorCitCRVNDSFJFSUJVTkc6CisgICAgIFJlY2huZXJuYW1lIGRlcyBJbnRlcmFjdGl2ZXMKZGlmZiAtLWdpdCBhL2RvYy9wcm9wcy9QX0lTX0FSVElMTEVSWSBiL2RvYy9wcm9wcy9QX0lTX0FSVElMTEVSWQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4wNTFiMjBmCi0tLSAvZGV2L251bGwKKysrIGIvZG9jL3Byb3BzL1BfSVNfQVJUSUxMRVJZCkBAIC0wLDAgKzEsMTUgQEAKK05BTUU6CisJUF9JU19BUlRJTExFUlkJCQkiYXJ0aWxsZXJ5IgorCitERUZJTklFUlQgSU46CisJL3N5cy9jb21iYXQuaAorCitCRVNDSFJFSUJVTkc6CisJSXMgZWluIE9iamVrdCBBcnRpbGxlcmllLCBzbyBtdXNzIGRpZXNlIFByb3BlcnR5CisJZ2VzZXR6dCBzZWluLiAoRGVyemVpdCBlaW5mYWNoIGF1ZiAxIHNldHplbi4pCisKK1NJRUhFIEFVQ0g6CisJYXJ0aWxsZXJpZQorCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCitMYXN0IG1vZGlmaWVkOiBTYW0sICA1LiBKdWwgMjAwMywgMjI6MDc6MTIgYnkgWm9vay4KZGlmZiAtLWdpdCBhL2RvYy9wcm9wcy9QX0lURU1TIGIvZG9jL3Byb3BzL1BfSVRFTVMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYWRkNDI1NQotLS0gL2Rldi9udWxsCisrKyBiL2RvYy9wcm9wcy9QX0lURU1TCkBAIC0wLDAgKzEsOSBAQAorTkFNRToKKyAgICBQX0lURU1TICAgICAgICAgICAgICAgICAgICAgICAiaXRlbXMiICAgICAgICAgICAgICAgICAgICAgICAKKworREVGSU5JRVJUIElOOgorICAgIC9zeXMvcHJvcGVydGllcy5oCisKK0JFU0NIUkVJQlVORzoKKyAgICAgRGVmaW5pdGlvbiB2b24gR2VnZW5zdGFlbmRlbiwgZGllIGluIGRlbSBSYXVtIGxpZWdlbiBzb2xsZW4uCisgICAgIEVya2xhZXJ1bmcgaW4gZWluZW0gRXh0cmFmaWxlLgpkaWZmIC0tZ2l0IGEvZG9jL3Byb3BzL1BfSV9IQVRFX0FMQ09IT0wgYi9kb2MvcHJvcHMvUF9JX0hBVEVfQUxDT0hPTApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5mNjBhMzhmCi0tLSAvZGV2L251bGwKKysrIGIvZG9jL3Byb3BzL1BfSV9IQVRFX0FMQ09IT0wKQEAgLTAsMCArMSwyMyBAQAorTkFNRToKKyAgICBQX0lfSEFURV9BTENPSE9MICAgICAgICAgICAgICAgICAgICAgICAgImlfaGF0ZV9hbGNvaG9sIgorCitERUZJTklFUlQgSU46CisgICAgL3N5cy9pbnBjL2Jvb3ppbmcuaAorCitCRVNDSFJFSUJVTkc6CisgICAgTnVtZXJpc2NoZXIgV2VydCwgZGVyIGRpZSBPYmVyZ3JlbnplIGFuIFBfQUxDT0hPTCBpbiBlaW5lbSBNb25zdGVyCisgICAgZGVmaW5pZXJ0LCB3ZWxjaGVyIGJlaW0gZWlnZW5zdGFlbmRpZ2VuIFRhbmtlbiBiZXJ1ZWNrc2ljaHRpZ3Qgd2lyZC4KKworQkVNRVJLVU5HOgorICAgIEdlaHQgZGVyIE5wYyAodW5kIG51ciBmdWVyIHNvbGNoZSBpc3QgZGllc2UgUHJvcCBnZWRhY2h0KSBlaWdlbi0KKyAgICBzdGFlbmRpZyB0YW5rZW4sIHdlcmRlbiB2b3IgZGVtIEJlc3RlbGxlbiBkaWUgR2V0cmFlbmtlIHVuZCBTcGVpc2VuCisgICAgYXVmIGlocmVuIEFsa29ob2xnZWhhbHQgZ2VwcnVlZnQgdW5kIG1pdCBkZW0gYWt0dWVsbGVuIFdlcnQgdm9uCisgICAgUF9BTENPSE9MIGltIFZlcmhhZWx0bmlzIHp1IFBfSV9IQVRFX0FMQ09IT0wgdmVyZ2xpY2hlbi4gTGFlZ2UgZGVyCisgICAgV2VydCBmdWVyIFBfQUxDT0hPTCBkYW5uIHVlYmVyIGRlbSB2b24gUF9JX0hBVEVfQUxDT0hPTCwgd2lyZCBkaWVzZXMKKyAgICBHZXRyYWVuayAoZGllc2UgU3BlaXNlKSBuaWNodCBiZXN0ZWxsdC4KKworU0lFSEUgQVVDSDoKKyAgICAgUF9BTENPSE9MLCBQX01BWF9BTENPSE9MCisKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KK0xhc3QgbW9kaWZpZWQ6IFNhbSBBcHIgMTQgMTI6MzU6MDAgMjAwMSBieSBUaWxseQpkaWZmIC0tZ2l0IGEvZG9jL3Byb3BzL1BfS0VFUEVSIGIvZG9jL3Byb3BzL1BfS0VFUEVSCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmMwMjc1YmEKLS0tIC9kZXYvbnVsbAorKysgYi9kb2MvcHJvcHMvUF9LRUVQRVIKQEAgLTAsMCArMSwxNCBAQAorTkFNRToKKyAgICBQX0tFRVBFUiAgICAgICAgICAgICAgICAgICAgICAgInNob3Bfa2VlcGVyIgorCitERUZJTklFUlQgSU46CisgICAgL3N5cy9wcm9wZXJ0aWVzLmgKKworQkVTQ0hSRUlCVU5HOgorICAgIEluIGRpZXNlIFByb3BlcnR5IGthbm4gbWFuIGluIEtuZWlwZW4gdW5kIExhZWRlbiBlaW5lbiBTdHJpbmcgc2NocmVpYmVuLgorICAgIERhbm4gd2lyZCB2b3IgZGVuIFRyYW5zYWt0aW9uZW4gZ2VwcnVlZnQsIG9iIGVpbiBOUEMgYW53ZXNlbmQgaXN0LAorICAgIGRlciBkaWVzZW4gU3RyaW5nIGFscyBJRCBoYXQuCisgICAgSXN0IGRlciBOUEMgbmljaHQgdm9yaGFuZGVuLCBrYW5uIG5pY2h0cyBnZS0gb2RlciB2ZXJrYXVmdCB3ZXJkZW4uCisKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KK0xhc3QgbW9kaWZpZWQ6IE1vbiBBdWcgMjMgMTQ6Mjk6MDAgMTk5OSBieSBQYXJhY2Vsc3VzClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZG9jL3Byb3BzL1BfS0VFUF9PTl9TRUxMIGIvZG9jL3Byb3BzL1BfS0VFUF9PTl9TRUxMCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjhhMjE0MDcKLS0tIC9kZXYvbnVsbAorKysgYi9kb2MvcHJvcHMvUF9LRUVQX09OX1NFTEwKQEAgLTAsMCArMSw4IEBACitOQU1FOgorICAgIFBfS0VFUF9PTl9TRUxMICAgICAgICAgICAgICAgICJrZWVwX29uX3NlbGwiICAgICAgICAgICAgICAgIAorCitERUZJTklFUlQgSU46CisgICAgL3N5cy9wcm9wZXJ0aWVzLmgKKworQkVTQ0hSRUlCVU5HOgorICAgICBCZWkgInZlcmthdWZlIGFsbGVzIiB3aXJkIGRhcyBPYmpla3QgYmVoYWx0ZW4uCmRpZmYgLS1naXQgYS9kb2MvcHJvcHMvUF9LSUxMRVIgYi9kb2MvcHJvcHMvUF9LSUxMRVIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uODNmNmIxOAotLS0gL2Rldi9udWxsCisrKyBiL2RvYy9wcm9wcy9QX0tJTExFUgpAQCAtMCwwICsxLDI3IEBACitOQU1FOgorICAgIFBfS0lMTEVSICAgICAgICAgICAgICAgICAgICAgICJraWxsZXIiICAgICAgICAgICAgICAgICAgICAgIAorCitERUZJTklFUlQgSU46CisgICAgL3N5cy9wcm9wZXJ0aWVzLmgKKworQkVTQ0hSRUlCVU5HOgorICAgRGllc2UgUHJvcGVydHkgZW50aGFlbHQgZGFzIE9iamVrdCwgd2VsY2hlcyBkYXMgTGViZXdlc2VuIGFscyBsZXR6dGVzCisgICBnZXRvZXRldCBoYXQuIFNpZSB3aXJkIHZvbiBkb19kYW1hZ2UoKSwgaGVhcnRfYmVhdCgpIChWZXJnaWZ0dW5nZW4pIHVuZAorICAgZGllKCkgKGJlaSBkaXJla3RlbiBBdWZydWZlbikgYXV0b21hdGlzY2ggZ2VzZXR6dC4gRWluIG1hbnVlbGxlcworICAgU2V0emVuIHZvciBBdWZydWYgdm9uIGRvX2RhbWFnZSgpIG9kZXIgZGllKCkgaGF0IGtlaW5lcmxlaSBXaXJrdW5nIQorICAgU2lubnZvbGxlcndlaXNlIGxpZXN0IG1hbiBkaWVzZSBQcm9wZXJ0eSBpbSBOb3RpZnlQbGF5ZXJEZWF0aCgpIGF1cywKKyAgIHNwYWV0ZXJlcyBBdXNsZXNlbiBpc3QgdW56dXZlcmxhZXNzaWcsIGRhIGRlciBLaWxsZXIgaW56d2lzY2hlbiB6ZXJzdG9lcnQKKyAgIHNlaW4ga29lbm50ZS4KKyAgIERpZXNlIFByb3BlcnR5IHNvbGx0ZSBfbmljaHRfIHBlciBIYW5kIGdlc2V0enQgd2VyZGVuLCBzY2hvbiBnYXIgbmljaHQKKyAgIHdhZWhyZW5kIGVpbmVzIE5vdGlmeVBsYXllckRlYXRoKCksIHdlaWwgZXMgZXZ0bC4gbm9jaCBhbmRlcmUgT2JqZWt0ZSBnaWJ0LAorICAgZGllIHNpY2ggZGFmdWVyIGludGVyZXNzaWVyZW4hCisKK0JFTUVSS1VOR0VOOgorICAgTm9ybWFsZXJ3ZWlzZSBzdGVodCBoaWVyIGVpbiBPYmpla3QgZHJpbiAocy5vLikuIEVzIGdpYnQgYWxsZXJkaW5ncyBlaW5lCisgICBBdXNuYWhtZTogU3RpcmJ0IGVpbiBMZWJld2VzZW4gYW4gR2lmdCwgZW50aGFlbHQgUF9LSUxMRVIgZGVuIFN0cmluZworICAgImdpZnQiLgorCitTSUVIRSBBVUNIOgorICAgZG9fZGFtYWdlKCkKKworMjkuMDguMjAwOCwgWmVzc3RyYQpkaWZmIC0tZ2l0IGEvZG9jL3Byb3BzL1BfS0lMTFMgYi9kb2MvcHJvcHMvUF9LSUxMUwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4zZGFlNzJkCi0tLSAvZGV2L251bGwKKysrIGIvZG9jL3Byb3BzL1BfS0lMTFMKQEAgLTAsMCArMSwxMCBAQAorTkFNRToKKyAgICBQX0tJTExTICAgICAgICAgICAgICAgICAgICAgICAicGxheWVya2lsbHMiICAgICAgICAgICAgICAgICAKKworREVGSU5JRVJUIElOOgorICAgIC9zeXMvcHJvcGVydGllcy5oCisKK0JFU0NIUkVJQlVORzoKKyAgICAgQW56YWhsIGRlciBTcGllbGVyLCBkaWUgZGllc2VyIFNwaWVsZXIgc2Nob24gZ2V0b2V0ZXQgaGF0LgorICAgICBVbmVybGF1YnRlIE1hbmlwdWxhdGlvbiBpc3QgZWluIFNDSFdFUkVTIFZFUkdFSEVOIGdlZ2VuCisgICAgIGRpZSBNdWRyZWdsZW4uCmRpZmYgLS1naXQgYS9kb2MvcHJvcHMvUF9LSUxMX01TRyBiL2RvYy9wcm9wcy9QX0tJTExfTVNHCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjBhOWUzYmIKLS0tIC9kZXYvbnVsbAorKysgYi9kb2MvcHJvcHMvUF9LSUxMX01TRwpAQCAtMCwwICsxLDgwIEBACitQX0tJTExfTVNHCisKK05BTUU6CisJUF9LSUxMX01TRwkJCSJraWxsX21zZyIKKworREVGSU5JRVJUIElOOgorCS9zeXMvcHJvcGVydGllcy5oCisKK0JFU0NIUkVJQlVORzoKKyAgICAgV2VubiBlaW4gU3BpZWxlciBnZXRvZXRldCB3aXJkLCBzbyBlcnNjaGVpbnQgZGF6dSBlaW5lIGt1cnplIEluZm9ybWF0aW9uCisgICAgIGF1ZiBkZW0gVG9kZXNrYW5hbC4gVW0gZGVtIHRvZXRlbmRlbiBPYmpla3QgenVzYWV0emxpY2ggZGllIE1vZWdsaWNoa2VpdAorICAgICB6dSBnZWJlbiwgbm9jaCBldHdhcyBtZWhyIGF1ZiBkaWVzZW0gS2FuYWwgYXVzenVnZWJlbiwga2FubiBtYW4gaW4KKyAgICAgZGllc2VyIFByb3BlcnR5IGVpbmVuIFN0cmluZyB1ZWJlcmdlYmVuLgorICAgICBOb2V0aWdlIFplaWxlbnVtYnJ1ZWNoZSB3ZXJkZW4gaGllcmJlaSBhdXRvbWF0aXNjaCBnZW5lcmllcnQuCisKKyAgICAgRXMgaXN0IGF1Y2ggbW9lZ2xpY2ggYW56dWdlYmVuLCBvYiBFbW90ZXMgdmVyd2VuZGV0IHdlcmRlbiB1bmQgb2IgZGFzCisgICAgIHRvZXRlbmRlIE9iamVrdCBlaW4gUGx1cmFsLU9iamVrdCBpc3QuIEhpZXJ6dSB1ZWJlcmdpYnQgbWFuIGVpbiBBcnJheQorICAgICBkZXIgR2VzdGFsdDoKKworCSh7S2lsbG1lc3NhZ2UsRW1vdGVzfSkgYnp3LiAoe0tpbGxtZXNzYWdlLEVtb3RlcyxQTFVSQUx9KQorCisgICAgIERlciBFaW50cmFnIDxLaWxsbWVzc2FnZT4gc3RlbGx0IGhpZXJiZWkgZGllIE1lbGR1bmcgc2VsYnN0IGRhciwgUExVUkFMCisgICAgIGdpYnQgYW4sIGRhc3MgZXMgc2ljaCB1bSBlaW4gUGx1cmFsLU9iamVrdCBoYW5kZWx0IHVuZCA8RW1vdGVzPiBrYW5uCisgICAgIGZvbGdlbmRlIFdlcnRlIGFubmVobWVuOgorCisJTVNHX1NBWSAgICAtIE1lbGR1bmcgd2lyZCBub3JtYWwgYXVzZ2VnZWJlbi4KKwlNU0dfRU1PVEUgIC0gTWVsZHVuZyBlcnNjaGVpbnQgYWxzIEVtb3RlLgorCU1TR19HRU1PVEUgLSBNZWxkdW5nIGVyc2NoZWludCBhbHMgR2VuaXRpdi1FbW90ZS4KKwlNU0dfRU1QVFkgIC0gTWVsZHVuZyBlcnNjaGVpbnQgb2huZSB6dXZvcmlnZSBBbmdhYmUgZGVzCisJICAgICAgICAgICAgICAgdG9ldGVuZGVuIE9iamVrdGVzLgorCisgICAgIE1vZWNodGUgbWFuIGRpZSBNZWxkdW5nIG5vY2ggZXR3YXMgInBlcnNvZW5saWNoZXIiIDstKSBnZXN0YWx0ZW4sIHNvCisgICAgIGthbm4gbWFuIGRlbiBQbGF0emhhbHRlciAlcyB2ZXJ3ZW5kZW4uIEFuIGRlc3NlbiBTdGVsbGUgd2lyZCBkYW5uIGRlcgorICAgICBOYW1lIGRlcyBWZXJibGljaGVuZW4gZWluZ2VzZXR6dC4KKworQkVJU1BJRUw6CisgICAgIEVpbiBuZXR0ZXMgQmVpc3BpZWwgaXN0IGRhcyBmb2xnZW5kZTogV2VubiBlaW4gU3BpZWxlciBzaWNoIGFscworICAgICBEcmFjaGVudG9ldGVyIGJld2VocnQgaGF0LCBzbyBrYW5uIGVyIHRyYWRpdGlvbmVsbCBpbiBzZWluZW0gQmx1dCBiYWRlbi4KKyAgICAgSGluIHVuZCB3aWVkZXIgaXN0IGplZG9jaCBhdWNoIGRlciBEcmFjaGUgZXJmb2xncmVpY2gsIGRlbSBtYW4gZWluZQorICAgICBsdXN0aWdlIFp1c2F0em1lbGR1bmcgZnVlciBkZW4gVG9kZXNrYW5hbCB1ZWJlcmdlYmVuIGthbm46CisKKyAgICAgdm9pZCBjcmVhdGUoKSB7CisgICAgICAgOjpjcmVhdGUoKTsKKyAgICAgICAuLi4KKyAgICAgICBTZXRQcm9wKFBfS0lMTF9NU0csIkpldHp0IGJhZGUgaWNoIG1hbCBpbiBERUlORU0gQmx1dCwgJXMhIik7CisgICAgICAgLi4uCisgICAgIH0KKworCisgICAgIEZhbGxzIGRlciAnS2lsbGVyJyBlaW4gUGx1cmFsLU9iamVrdCBvZGVyIC1OUEMgd2FyLCBrb2VubnRlIGVpbmUgTWVsZHVuZworICAgICBhdWNoIGZvbGdlbmRlcm1hc3NlbiBhdXNzZWhlbjoKKworICAgICBTZXRQcm9wKFBfS0lMTF9NU0csKHsiaGF1biBzaWNoIGpldHp0IGRpZSBIdWNrZSB2b2xsLiIsCisJCQkgIE1TR19FTU9URSwKKwkJCSAgUExVUkFMfSkpOworCisgICAgIHdvYmVpIFBfS0lMTF9OQU1FIGhpZXIgbmF0dWVybGljaCBhdWYgIkVpbmUgTWVuZ2UgT3JrcyIgb2RlcgorICAgICBkZXJnbGVpY2hlbiBnZXNldHp0IHNlaW4gc29sbHRlLiBBdWYgZGVtIEthbmFsIHdhZXJlIGRhbm4gZGllcyB6dQorICAgICBsZXNlbjoKKworCVtUb2Q6TGFyc10gRWluZSBNZW5nZSBPcmtzIGhhYmVuIGdlcmFkZSBPcmt0b2V0ZXIgdW1nZWJyYWNodC4KKwlbVG9kOkVpbmUgTWVuZ2UgT3JrcyBoYXVuIHNpY2ggamV0enQgZGllIEh1Y2tlIHZvbGwuXQorCisKKyAgICAgV2VpdGVyZXMgQmVpc3BpZWwuCisgICAgIE1hbiBoYWJlIGVpbmVuIE5QQywgZGVzc2VuIEtpbGxuYW1lIGFscyBQbHVyYWwgYXVmenVmYXNzZW4gaXN0LCBkZXIgYWJlcgorICAgICBrZWluZW4genVzYWV0bGljaGVuIFRleHQgYXVmIC1Ub2QgYnJpbmdlbiBzb2xsLgorCisgICAgIFNldFByb3AoUF9OQU1FLCAiRWluZSBIb3JkZSBHdW1taWJhZXJlbiIpOworICAgICBTZXRQcm9wKFBfS0lMTF9OQU1FLCAiVmllbGUga2xlaW5lIEd1bW1pYmFlcmVuIik7CisgICAgIFNldFByb3AoUF9LSUxMX01TRywgKHswLCAwLCAxfSkpOworCitTSUVIRSBBVUNIOgorICAgICBUb2Q6CQlkaWUoTCkKKyAgICAgVG9kZXNtZWxkdW5nZW46CVBfS0lMTF9OQU1FLCBQX0RJRV9NU0csIFBfTVVSREVSX01TRworCQkJUF9aQVBfTVNHLCBQX0VORU1ZX0RFQVRIX1NFUVVFTkNFCisgICAgIFNvbnN0aWdlczoJCVBfQ09SUFNFLCBQX05PQ09SUFNFLCAvcm9vbS9kZWF0aC9kZWF0aF9yb29tLmMKKworLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorTGFzdCBtb2RpZmllZDogV2VkIEF1ZyAyMSAxNDozNjowNCAyMDAyIGJ5IEJhbWJpCmRpZmYgLS1naXQgYS9kb2MvcHJvcHMvUF9LSUxMX05BTUUgYi9kb2MvcHJvcHMvUF9LSUxMX05BTUUKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uM2YyMTRhYgotLS0gL2Rldi9udWxsCisrKyBiL2RvYy9wcm9wcy9QX0tJTExfTkFNRQpAQCAtMCwwICsxLDQzIEBACitQX0tJTExfTkFNRQorCitOQU1FOgorICAgICBQX0tJTExfTkFNRQkJCSJraWxsX25hbWUiCisKK0RFRklOSUVSVCBJTjoKKyAgICAgL3N5cy9wcm9wZXJ0aWVzLmgKKworQkVTQ0hSRUlCVU5HOgorICAgICBXZW5uIGVpbiBTcGllbGVyIGdldG9ldGV0IHdpcmQsIHNvIGVyc2NoZWludCBlaW5lIGt1cnplIEluZm9ybWF0aW9uIGF1ZgorICAgICBkZW0gVG9kZXNrYW5hbC4gSW0gTm9ybWFsZmFsbCB3ZXJkZW4gZGllIEluZm9ybWF0aW9uZW4gYXVzIFBfTkFNRSwKKyAgICAgUF9BUlRJQ0xFIHVuZCBQX0dFTkRFUiBkZXMgdG9ldGVuZGVuIE9iamVrdGVzIHZlcndlbmRldCwgdW0gZWluZW4gTmFtZW4KKyAgICAgZnVlciBlYmVuIGRpZXNlcyBPYmpla3QgenUga3JlaWVyZW4uIE1hbmNobWFsIG1vZWNodGUgbWFuIGplZG9jaCBlaW5lbgorICAgICBkYXZvbiB1bmFiaGFlbmdpZ2VuIE5hbWVuIGRvcnQgc3RlaGVuIGhhYmVuLiBEYW5uIGtvbW10IGRpZSBQcm9wZXJ0eQorICAgICBQX0tJTExfTkFNRSB6dW0gRWluc2F0ei4KKyAgICAgTWFuIHNvbGx0ZSBiZWFjaHRlbiwgZGFzcyBkZXIgTmFtZSBkZXMgVG9ldGVuZGVuIG5pY2h0IHp1IGxhbmcgc2VpbgorICAgICBzb2xsdGUsIGRlbm4gb2J3b2hsIGJlaSBlaW5lciBUb2Rlc21lbGR1bmcgYXV0b21hdGlzY2ggdW1nZWJyb2NoZW4gd2lyZCwKKyAgICAga2FubiBlcyBkb2NoIHppZW1saWNoIHN0b2VyZW4uIFdlbm4gZGFzIHRvZXRlbmRlIE9iamVrdCBlaW4gUGx1cmFsLQorICAgICBPYmpla3QgaXN0LCBzbyBrYW5uIG1hbiBkaWVzIHp1c2FldHpsaWNoIGluIGRlciBQcm9wZXJ0eSBQX0tJTExfTVNHCisgICAgIGFuZ2ViZW4uCisKK0JFSVNQSUVMOgorICAgICBFaW5lIFdvbGtlLCBkaWUgd2FobHdlaXNlIHp3aXNjaGVuIHZlcnNjaGllZGVuZW4gWnVzdGFlbmRlbiBtdXRpZXJ0LAorICAgICBrb2VubnRlIG1hbCBlaW5lIEVpc3dvbGtlLCBtYWwgZWluZSBHaWZ0d29sa2Ugb2RlciBhdWNoIG1hbCBlaW5lCisgICAgIEZldWVyd29sa2Ugc2Vpbi4gRnVlciBkZW4gVG9kZXNrYW5hbCBzb2xsIGplZG9jaCBpbW1lciBlcnNjaGVpbmVuOgorICAgICAnW1RvZDpdIEVpbmUgbXV0aWVyZW5kZSBXb2xrZSBoYXQgZ2VyYWRlIDxTcGllbGVyPiB1bWdlYnJhY2h0LicKKworICAgICB2b2lkIGNyZWF0ZSgpCisgICAgIHsKKyAgICAgICA6OmNyZWF0ZSgpOworICAgICAgIC4uLgorICAgICAgIFNldFByb3AoUF9LSUxMX05BTUUsIkVpbmUgbXV0aWVyZW5kZSBXb2xrZSIpOworICAgICAgIC4uLgorICAgICB9CisKK1NJRUhFIEFVQ0g6CisgICAgIFRvZDoJCWRpZShMKQorICAgICBUb2Rlc21lbGR1bmdlbjoJUF9LSUxMX01TRywgUF9ESUVfTVNHLCBQX01VUkRFUl9NU0cKKwkJCVBfWkFQX01TRywgUF9FTkVNWV9ERUFUSF9TRVFVRU5DRQorICAgICBTb25zdGlnZXM6CQlQX0NPUlBTRSwgUF9OT0NPUlBTRSwgL3Jvb20vZGVhdGgvZGVhdGhfcm9vbS5jCisKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KK0xhc3QgbW9kaWZpZWQ6IFdlZCBKYW4gMTQgMTk6MTc6MDYgMTk5OCBieSBQYXRyeW4KZGlmZiAtLWdpdCBhL2RvYy9wcm9wcy9QX0tOT1dOX1BPVElPTlJPT01TIGIvZG9jL3Byb3BzL1BfS05PV05fUE9USU9OUk9PTVMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZjVhZGI5NwotLS0gL2Rldi9udWxsCisrKyBiL2RvYy9wcm9wcy9QX0tOT1dOX1BPVElPTlJPT01TCkBAIC0wLDAgKzEsMTkgQEAKK05BTUU6CisgICAgUF9LTk9XTl9QT1RJT05ST09NUyAgICAgICAgICAgICAgICAgImtub3duX3BvdGlvbnJvb21zIiAgICAgICAgICAgICAgICAgCisKK0RFRklOSUVSVCBJTjoKKyAgICAvc3lzL3BsYXllci9wb3Rpb24uaAorCitCRVNDSFJFSUJVTkc6CisgICAgQXJyYXkgbWl0IGRlbiBOdW1tZXJuIGRlciBSYWV1bWUsIGluIGRlbmVuIGRlciBTcGllbGVyIFphdWJlci0KKyAgICB0cmFlbmtlIGZpbmRlbiBrYW5uLiBEaWUgWnVvcmRudW5nIGRlciBSYWV1bWUgdW5kIE51bW1lcm4KKyAgICBnZXNjaGllaHQgaW0gUG90aW9ubWFzdGVyLgorCisgICAgTnVyIGxlc2JhcmUgX3F1ZXJ5IC0gUHJvcGVydHkuCisKK1NJRUhFIEFVQ0g6CisgICAgU29uc3RpZ2VzOiB6YXViZXJ0cmFlbmtlLCAvc2VjdXJlL3BvdGlvbm1hc3Rlci5jLCAvcm9vbS9vcmFrZWwuYworICAgIFZlcndhbmR0OiAgRmluZFBvdGlvbigpLCBBZGRLbm93blBvdGlvbigpLCBSZW1vdmVLbm93blBvdGlvbigpLCBJbkxpc3QoKQorICAgIFByb3BzOiAgICAgUF9QT1RJT05ST09NUworCis2LkZlYiAyMDE2IEdsb2luc29uCmRpZmYgLS1naXQgYS9kb2MvcHJvcHMvUF9MQVNURElSIGIvZG9jL3Byb3BzL1BfTEFTVERJUgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5lYWU5MDcxCi0tLSAvZGV2L251bGwKKysrIGIvZG9jL3Byb3BzL1BfTEFTVERJUgpAQCAtMCwwICsxLDE1IEBACitOQU1FOgorICAgIFBfTEFTVERJUiAgICAgICAgICAgICAgICAgICJwX2xpYl9sYXN0ZGlyIgorCitERUZJTklFUlQgSU46CisgICAgL3N5cy9zaGVsbHMuaAorCitCRVNDSFJFSUJVTkc6CisgICAgRGFzIGpld2VpbHMgbGV0enRlIFZlcnplaWNobmlzLCBpbiBkZW0gZGVyIE1hZ2llciB3YXIuCisgICAgKE51ciBmdWVyIE1hZ2llciB2b24gQmVsYW5nKQorCitTaWVoZSBhdWNoOgorICAgIFBfQ1VSUkVOVERJUgorCitMZXR6dGUgQWVuZGVydW5nOgorICAgIDAzLjA1LjIwMTYsIFplc3N0cmEKZGlmZiAtLWdpdCBhL2RvYy9wcm9wcy9QX0xBU1RfQ09NQkFUX1RJTUUgYi9kb2MvcHJvcHMvUF9MQVNUX0NPTUJBVF9USU1FCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmIzZGY5NmQKLS0tIC9kZXYvbnVsbAorKysgYi9kb2MvcHJvcHMvUF9MQVNUX0NPTUJBVF9USU1FCkBAIC0wLDAgKzEsMjMgQEAKK05BTUU6CisJUF9MQVNUX0NPTUJBVF9USU1FCQkibGFzdF9jb21iYXRfdGltZSIKKworREVGSU5JRVJUIElOOgorCS9zeXMvY29tYmF0LmgKKworQkVTQ0hSRUlCVU5HOgorCUluIGRpZXNlciBQcm9wZXJ0eSB3aXJkIGdlbmF1IGRpZSBaZWl0IGZlc3RnZWhhbHRlbiwgenUgZGVyIGVpbgorCUxlYmV3ZXNlbiB6dWxldHp0IGVpbmVuIEFuZ3JpZmYgYWJnZXdlaHJ0IG9kZXIgZWluZW4gQW5ncmlmZgorCWR1cmNoZ2VmdWVocnQgaGF0LiBEaWUgUHJvcGVydHkgZW50aGFlbHQgZGllc2UgSW5mb3JtYXRpb24gaGllcmJlaQorCWltbWVyIGluIEZvcm0gZWluZXMgSW50ZWdlcndlcnRlcy4KKwlEaWVzZXIgV2VydCBrb2VubnRlIHouQi4gd2ljaHRpZyBzZWluLCB3ZW5uIG1hbiB3aXNzZW4gbW9lY2h0ZSwgd2FubgorCWVpbiBMZWJld2VzZW4genVsZXR6dCBnZWthZW1wZnQgaGF0LiBFcyBpc3QgYmVpc3BpZWxzd2Vpc2UgbmljaHQKKwltb2VnbGljaCwgd2FlaHJlbmQgb2RlciBhdWNoIHVubWl0dGVsYmFyIG5hY2ggZWluZW0gS2FtcGYgZGVuIEJlZmVobAorCSdFbmRlJyB6dSBudXR6ZW4sIGRhIGRpZXMgenVyIEZsdWNodCBtaXNzYnJhdWNodCB3ZXJkZW4ga2Fubi4gRGFmdWVyCisJd2lyZCBkZXIgV2VydCBkZXIgUHJvcGVydHkgenV2b3IgYXVzZ2V3ZXJ0ZXQuCisKK1NJRUhFIEFVQ0g6CisJUF9MQVNUX0RBTVRJTUUsIFBfTEFTVF9EQU1BR0UsIFBfTEFTVF9EQU1UWVBFUywgQXR0YWNrKCksIERlZmVuZCgpLAorCS9zdGQvbGl2aW5nL2NvbWJhdC5jLCAvc3RkL2xpdmluZy9saWZlLmMKKworLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorTGFzdCBtb2RpZmllZDogV2VkIE1heSAyNiAxNjo0MzowMCAxOTk5IGJ5IFBhdHJ5bgpkaWZmIC0tZ2l0IGEvZG9jL3Byb3BzL1BfTEFTVF9DT01NQU5EX0VOViBiL2RvYy9wcm9wcy9QX0xBU1RfQ09NTUFORF9FTlYKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNTc2ZTM0ZAotLS0gL2Rldi9udWxsCisrKyBiL2RvYy9wcm9wcy9QX0xBU1RfQ09NTUFORF9FTlYKQEAgLTAsMCArMSwxNSBAQAorUF9MQVNUX0NPTU1BTkRfRU5WCitOQU1FOgorICAgIFBfTEFTVF9DT01NQU5EX0VOViAgICAgICAgICAgICJsYXN0X2NvbW1hbmRfZW52IiAgICAgICAgICAgIAorCitERUZJTklFUlQgSU46CisgICAgL3N5cy9wbGF5ZXIuaAorCitCRVNDSFJFSUJVTkc6CisgICAgIERlciBSYXVtLCBpbiBkZW0gZGFzIGxldHp0ZSBLb21tYW5kbyBlaW5nZWdlYmVuIHd1cmRlLgorCitCRU1FUktVTkdFTjoKKyAgICAgS2VpbmUgZWNodGUgUHJvcGVydHksIF9xdWVyeV9sYXN0X2NvbW1hbmRfZW52KCkgaXN0CisgICAgIGluIC9zdGQvcGxheWVycy9jb21tYW5kLmMgaW1wbGVtZW50aWVydC4KKworMTQuRmViLjIwMDQgR2xvaW5zb24KZGlmZiAtLWdpdCBhL2RvYy9wcm9wcy9QX0xBU1RfQ09OVEVOVF9DSEFOR0UgYi9kb2MvcHJvcHMvUF9MQVNUX0NPTlRFTlRfQ0hBTkdFCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjBmYTY0YmIKLS0tIC9kZXYvbnVsbAorKysgYi9kb2MvcHJvcHMvUF9MQVNUX0NPTlRFTlRfQ0hBTkdFCkBAIC0wLDAgKzEsMTYgQEAKK05BTUU6CisgICAgUF9MQVNUX0NPTlRFTlRfQ0hBTkdFICAgICAgICAgImxhc3RfY29udGVudF9jaGFuZ2UiICAgICAgICAgCisKK0RFRklOSUVSVCBJTjoKKyAgICAvc3lzL3Byb3BlcnRpZXMuaAorCitCRVNDSFJFSUJVTkc6CisgICAgIFdhbm4gd3VyZGUgenVtIGxldHp0ZW4gTWFsIHdhcyBpbnMgT2JqIGdlc3RvcGZ0IG9kZXIgcmF1c2dlbm9tbWVuPworICAgICBXaWNodGlnIGZ1ZXIgZGVuIFdlaWdodC1DYWNoZQorCitBTk1FUktVTkc6CisgICAgIERpZSBQcm9wZXJ0eSBrYW5uIG51ciB1ZWJlciBRdWVyeVByb3AoKSB1bmQgU2V0UHJvcCgpIGF1c2dlbGVzZW4gYnp3LgorICAgICBnZXNldHp0IHdlcmRlbi4gUXVlcnkoKSB1bmQgU2V0KCkgZnVua3Rpb25pZXJlbiAqbmljaHQqLgorCisgICAgIEF1c3NlcmRlbSBmdWVocnQgZWluIFNldHplbiBwZXIgU2V0UHJvcCgpIHp1IGVpbmVyIEVyaG9laHVuZyBkZXMgCisgICAgIFdlcnRlcyB1bSBlaW5zIC0gdW5hYmhhZW5naWcgdm9tIGdlc2V0enRlbiBXZXJ0LgpkaWZmIC0tZ2l0IGEvZG9jL3Byb3BzL1BfTEFTVF9EQU1BR0UgYi9kb2MvcHJvcHMvUF9MQVNUX0RBTUFHRQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44ZDYxOGIxCi0tLSAvZGV2L251bGwKKysrIGIvZG9jL3Byb3BzL1BfTEFTVF9EQU1BR0UKQEAgLTAsMCArMSwyMiBAQAorTkFNRToKKwlQX0xBU1RfREFNQUdFCQkJImxhc3RfZGFtYWdlIgorCitERUZJTklFUlQgSU46CisJL3N5cy9saXZpbmcvY29tYmF0LmgKKworQkVTQ0hSRUlCVU5HOgorCUluIGRpZXNlciBQcm9wZXJ0eSB3aXJkIGdlbmF1IGRpZSBTY2hhZGVuc3N0YWVya2UgZmVzdGdlaGFsdGVuLAorCXdlbGNoZSBlaW4gTGViZXdlc2VuIHp1bGV0enQgYWJiZWtvbW1lbiBoYXQuIERpZSBQcm9wZXJ0eSBlbnRoYWVsdAorCWRpZXNlIEluZm9ybWF0aW9uIGhpZXJiZWkgaW1tZXIgaW4gRm9ybSBlaW5lcyBJbnRlZ2Vyd2VydGVzLgorCUF1Y2ggZGllIFN0YWVya2UgZGVzIEdpZnRzY2hhZGVucyBkdXJjaCBkaWUgV2lya3VuZyBlaW5lciBWZXJnaWZ0dW5nCisJd2lyZCBoaWVyIGZlc3RnZWhhbHRlbi4KKwlEaWVzZXIgV2VydCBrb2VubnRlIHouQi4gd2ljaHRpZyBzZWluLCB3ZW5uIG1hbiB3aXNzZW4gbW9lY2h0ZSwKKwl3ZWxjaGUgU2NoYWRlbnNzdGFlcmtlIG5hY2ggRWlud2lya3VuZyB2b24gRGVmZW5kZXJuLCBSdWVzdHVuZywKKwlIb29rcyB1bmQgU2tpbGxzIHVlYnJpZ2dlYmxpZWJlbiBpc3QuCisKK1NJRUhFIEFVQ0g6CisJUF9MQVNUX0RBTVRJTUUsIFBfTEFTVF9EQU1UWVBFUywgRGVmZW5kKCksCisJL3N0ZC9saXZpbmcvY29tYmF0LmMsIC9zdGQvbGl2aW5nL2xpZmUuYworCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCitMYXN0IG1vZGlmaWVkOiBUdWUgSmFuIDI2IDEyOjM0OjI5IDE5OTkgYnkgUGF0cnluCmRpZmYgLS1naXQgYS9kb2MvcHJvcHMvUF9MQVNUX0RBTVRJTUUgYi9kb2MvcHJvcHMvUF9MQVNUX0RBTVRJTUUKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNzJmZmI1MQotLS0gL2Rldi9udWxsCisrKyBiL2RvYy9wcm9wcy9QX0xBU1RfREFNVElNRQpAQCAtMCwwICsxLDIyIEBACitOQU1FOgorCVBfTEFTVF9EQU1USU1FCQkJImxhc3RfZGFtdGltZSIKKworREVGSU5JRVJUIElOOgorCS9zeXMvbGl2aW5nL2NvbWJhdC5oCisKK0JFU0NIUkVJQlVORzoKKwlJbiBkaWVzZXIgUHJvcGVydHkgd2lyZCBnZW5hdSBkaWUgWmVpdCBmZXN0Z2VoYWx0ZW4sIHp1IGRlciBlaW4KKwlMZWJld2VzZW4genVsZXR6dCBlaW5lbiBTY2hhZGVuIGFiYmVrb21tZW4gaGF0LiBEaWUgUHJvcGVydHkKKwllbnRoYWVsdCBkaWVzZSBJbmZvcm1hdGlvbiBoaWVyYmVpIGltbWVyIGluIEZvcm0gZWluZXMKKwlJbnRlZ2Vyd2VydGVzLgorCUF1Y2ggZGVyIFplaXRwdW5rdCBkZXIgRWlud2lya3VuZyB2b24gR2lmdHNjaGFkZW4gZHVyY2ggZGllIFdpcmt1bmcKKwllaW5lciBWZXJnaWZ0dW5nIHdpcmQgaGllciBmZXN0Z2VoYWx0ZW4uCisJRGllc2VyIFdlcnQga29lbm50ZSB6LkIuIHdpY2h0aWcgc2Vpbiwgd2VubiBtYW4gd2lzc2VuIG1vZWNodGUsIHdhbm4KKwllaW4gTGViZXdlc2VuIHp1bGV0enQgdmVybGV0enQgd3VyZGUuCisKK1NJRUhFIEFVQ0g6CisJUF9MQVNUX0NPTUJBVF9USU1FLCBQX0xBU1RfREFNQUdFLCBQX0xBU1RfREFNVFlQRVMsIERlZmVuZCgpLAorCS9zdGQvbGl2aW5nL2NvbWJhdC5jLCAvc3RkL2xpdmluZy9saWZlLmMKKworLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorTGFzdCBtb2RpZmllZDogV2VkIE1heSAyNiAxNjo0NDozOCAxOTk5IGJ5IFBhdHJ5bgpkaWZmIC0tZ2l0IGEvZG9jL3Byb3BzL1BfTEFTVF9EQU1UWVBFUyBiL2RvYy9wcm9wcy9QX0xBU1RfREFNVFlQRVMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOWQ3YjA2MAotLS0gL2Rldi9udWxsCisrKyBiL2RvYy9wcm9wcy9QX0xBU1RfREFNVFlQRVMKQEAgLTAsMCArMSwyMSBAQAorTkFNRToKKwlQX0xBU1RfREFNVFlQRVMJCQkibGFzdF9kYW10eXBlcyIKKworREVGSU5JRVJUIElOOgorCS9zeXMvbGl2aW5nL2NvbWJhdC5oCisKK0JFU0NIUkVJQlVORzoKKwlJbiBkaWVzZXIgUHJvcGVydHkgd2VyZGVuIGdlbmF1IGRpZSBTY2hhZGVuc2FydGVuIGZlc3RnZWhhbHRlbiwKKwl3ZWxjaGUgZWluIExlYmV3ZXNlbiB6dWxldHp0IGFiYmVrb21tZW4gaGF0LiBEaWUgUHJvcGVydHkgZW50aGFlbHQKKwlkaWVzZSBJbmZvcm1hdGlvbiBoaWVyYmVpIGltbWVyIGluIEZvcm0gZWluZXMgQXJyYXlzLgorCUF1Y2ggZGVyIEdpZnRzY2hhZGVuIGR1cmNoIGRpZSBXaXJrdW5nIGVpbmVyIFZlcmdpZnR1bmcgd2lyZCBoaWVyCisJZmVzdGdlaGFsdGVuLgorCURpZXNlciBXZXJ0IGtvZW5udGUgei5CLiB3aWNodGlnIHNlaW4sIHdlbm4gbWFuIG5hY2ggZGVtIFRvZCBlaW5lcworCUxlYmV3ZXNlbnMgZmVzdHN0ZWxsZW4gbW9lY2h0ZSwgZHVyY2ggd2FzIGVzIHVtZ2Vrb21tZW4gaXN0LgorCitTSUVIRSBBVUNIOgorCVBfTEFTVF9EQU1BR0UsIFBfTEFTVF9EQU1USU1FLCBEZWZlbmQoKSwKKwkvc3RkL2xpdmluZy9jb21iYXQuYywgL3N0ZC9saXZpbmcvbGlmZS5jCisKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KK0xhc3QgbW9kaWZpZWQ6IFR1ZSBKYW4gMjYgMTI6MzQ6MjkgMTk5OSBieSBQYXRyeW4KZGlmZiAtLWdpdCBhL2RvYy9wcm9wcy9QX0xBU1RfREVBVEhfUFJPUFMgYi9kb2MvcHJvcHMvUF9MQVNUX0RFQVRIX1BST1BTCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjcxMmUwNGUKLS0tIC9kZXYvbnVsbAorKysgYi9kb2MvcHJvcHMvUF9MQVNUX0RFQVRIX1BST1BTCkBAIC0wLDAgKzEsMTggQEAKK05BTUU6CisgICAgUF9MQVNUX0RFQVRIX1BST1BTICAgICAgICAgICAgICAgICJsYXN0X2RlYXRoX3Byb3BzIgorCitERUZJTklFUlQgSU46CisgICAgL3N5cy9saXZpbmcvbGlmZS5oCisKK0JFU0NIUkVJQlVORzoKKyAgICAgRGllc2UgUHJvcGVydHkgZW50aGFlbHQgbmFjaCBkZW0gVG9kIGVpbmVzIFNwaWVsZXJzIGVpbiBNYXBwaW5nIG1pdCAKKyAgICAgZGVuIFdlcnRlIGFsbGVyIFByb3BlcnRpZXMsIGRpZSBpbSBkaWUoKSB6dXJ1ZWNrZ2VzZXR6dCB3ZXJkZW4uCisKKyAgICAgQXVmIGRpZXNlIFdlaXNlIGthbm4gZWluIE9iamVrdCBhdWNoIGltIE5vdGlmeVBsYXllckRlYXRoKCkgbm9jaCAKKyAgICAgYXVmIGRpZSBXZXJ0ZSB6dXJ1ZWNrZ3JlaWZlbiwgb2J3b2hsIHNpZSBiZXJlaXRzIGdlbG9lc2NodCBzaW5kLgorCisgICAgIEZvbGdlbmRlIFByb3BlcnRpZXMgd2VyZGVuIHNvIGdlc2ljaGVydDoKKyAgIAorICAgICBQX1BPSVNPTiwgUF9GUk9HLCBQX0FMQ09IT0wsIFBfRFJJTkssIFBfRk9PRCAsIFBfQkxJTkQsIFBfREVBRiwgCisgICAgIFBfTUFYX0hBTkRTLCBQX1BBUkEsIFBfTk9fUkVHRU5FUkFUSU9OICwgUF9IUCwgUF9TUCwgUF9MQVNUX0RFQVRIX1RJTUUKKwpkaWZmIC0tZ2l0IGEvZG9jL3Byb3BzL1BfTEFTVF9ERUFUSF9USU1FIGIvZG9jL3Byb3BzL1BfTEFTVF9ERUFUSF9USU1FCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjcxYmQ3ODcKLS0tIC9kZXYvbnVsbAorKysgYi9kb2MvcHJvcHMvUF9MQVNUX0RFQVRIX1RJTUUKQEAgLTAsMCArMSw4IEBACitOQU1FOgorICAgIFBfTEFTVF9ERUFUSF9USU1FICAgICAgICAgICAgICAgICJsYXN0X2RlYXRoX3RpbWUiCisKK0RFRklOSUVSVCBJTjoKKyAgICAvc3lzL2xpdmluZy9saWZlLmgKKworQkVTQ0hSRUlCVU5HOgorICAgICBEZXIgWmVpdHB1bmt0IGRlcyBsZXR6dGVuIFRvZGVzIGRlcyBTcGllbGVycy4KZGlmZiAtLWdpdCBhL2RvYy9wcm9wcy9QX0xBU1RfTE9HSU4gYi9kb2MvcHJvcHMvUF9MQVNUX0xPR0lOCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjkyODc2NTQKLS0tIC9kZXYvbnVsbAorKysgYi9kb2MvcHJvcHMvUF9MQVNUX0xPR0lOCkBAIC0wLDAgKzEsMTYgQEAKK05BTUU6CisgICAgUF9MQVNUX0xPR0lOICAgICAgICAgICAgICAgICAgImxhc3RfbG9naW4iICAgICAgICAgICAgICAgICAgCisKK0RFRklOSUVSVCBJTjoKKyAgICAvc3lzL3BsYXllci9iYXNlLmgKKworQkVTQ0hSRUlCVU5HOgorICAgICBaZWl0cHVua3QgZGVzIGxldHp0ZW4gTG9naW5zCisKK0JFTUVSS1VOR0VOOgorICAgICBHZWdlbiBhZXVzc2VyZSBBZW5kZXJ1bmcgdW5kIFNldC9RdWVyeU1ldGhvZGVuIGdlc2NodWV0enQuCisKK1NJRUhFIEFVQ0g6CisgICAgIFBfTEFTVF9MT0dPVVQsIHNhdmVfbWUKKworMjguIEphbiAyMDEzIEdsb2luc29uCmRpZmYgLS1naXQgYS9kb2MvcHJvcHMvUF9MQVNUX0xPR09VVCBiL2RvYy9wcm9wcy9QX0xBU1RfTE9HT1VUCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjI5NmFlOTIKLS0tIC9kZXYvbnVsbAorKysgYi9kb2MvcHJvcHMvUF9MQVNUX0xPR09VVApAQCAtMCwwICsxLDIwIEBACitOQU1FOgorICAgIFBfTEFTVF9MT0dPVVQgICAgICAgICAgICAgICAgICJsYXN0X2xvZ291dCIgICAgICAgICAgICAgICAgIAorCitERUZJTklFUlQgSU46CisgICAgL3N5cy9wbGF5ZXIvYmFzZS5oCisKK0JFU0NIUkVJQlVORzoKKyAgICAgWmVpdHB1bmt0IGRlcyBsZXR6dGVuIExvZ291dHMuIEFuaGFuZCBkaWVzZXIgWmVpdCB3ZXJkZW4gZGllIEZlaW5kZXMtCisgICAgIGxpc3RlbiB1bmQgaW4gQWJ3ZXNlbmhlaXQgZWluZ2VmdWVndGUgR2VnZW5zdGFlbmRlIGFrdHVhbGlzaWVydC4KKworICAgICBEaWVzZXMgRGF0dW0gd2lyZCBiZWkgTWFnaWVybiBuaWNodCBha3R1YWxpc2llcnQsIHdlbm4gc2llIHVuc2ljaHRiYXIKKyAgICAgc2luZC9zaWNoIHVuc2ljaHRiYXIgYXVzbG9nZ2VuLgorCitCRU1FUktVTkdFTjoKKyAgICAgR2VnZW4gYWV1c3NlcmUgQWVuZGVydW5nIHVuZCBTZXQvUXVlcnlNZXRob2RlbiBnZXNjaHVldHp0LgorCitTSUVIRSBBVUNIOgorICAgICBQX0xBU1RfTE9HSU4sIFBfSU5WSVMsIHNhdmVfbWUsIGluaXQsIFN0b3BIdW50Rm9yCisKKzI4LiBKYW4gMjAxMyBHbG9pbnNvbgpkaWZmIC0tZ2l0IGEvZG9jL3Byb3BzL1BfTEFTVF9NT1ZFIGIvZG9jL3Byb3BzL1BfTEFTVF9NT1ZFCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjZiMjAyYTIKLS0tIC9kZXYvbnVsbAorKysgYi9kb2MvcHJvcHMvUF9MQVNUX01PVkUKQEAgLTAsMCArMSwyMSBAQAorTkFNRToKKwlQX0xBU1RfTU9WRQkJCSJsYXN0X21vdmUiCisKK0RFRklOSUVSVCBJTjoKKwkvc3lzL3RoaW5nL21vdmluZy5oCisKK0JFU0NIUkVJQlVORzoKKwlJbiBkaWVzZXIgUHJvcGVydHkgd2lyZCBkaWUgWmVpdCBkZXIgbGV0enRlbiBCZXdlZ3VuZyBlaW5lcworCUxlYmV3ZXNlbnMgZmVzdGdlaGFsdGVuLiBTZWxic3RlcmtsYWVyZW5kIGlzdCBhdWNoIGRlciBkYXp1Z2Vob2VyaWdlCisJUXVlbGxjb2RlIGlubmVyaGFsYiBtb3ZlKCkgaW4gJy9zdGQvbGl2aW5nL21vdmluZy5jJzoKKwkgIFNldFByb3AoUF9MQVNUX01PVkUsdGltZSgpKTsKKwlXaWNodGlnIGlzdCBkaWVzZSBQcm9wZXJ0eSBpbnNiZXNvbmRlcmUgZnVlciBkaWUgVW50ZXJiaW5kdW5nIHZvbgorCVJlaW4tQW5ncmlmZi1SYXVzLVRha3Rpa2VuLiBEaWVzZXIgTW9kdXMgaXN0IHN0YW5kYXJkbWFlc3NpZyBpbiBqZWRlbQorCU5QQyBha3RpdmllcnQgdW5kIGthbm4gdWViZXIgZGllIFByb3BlcnR5IFBfRU5BQkxFX0lOX0FUVEFDS19PVVQKKwlhdXNnZXNjaGFsdGVuIHdlcmRlbi4KKworU0lFSEUgQVVDSDoKKwltb3ZlKCksIHRpbWUoKSwgUF9FTkFCTEVfSU5fQVRUQUNLX09VVCwgL3N0ZC9saXZpbmcvbW92aW5nLmMKKworLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KK0xhc3QgbW9kaWZpZWQ6IFNhdCBKYW4gMzAgMTI6NTM6MDAgMTk5OSBieSBQYXRyeW4KZGlmZiAtLWdpdCBhL2RvYy9wcm9wcy9QX0xBU1RfVVNFIGIvZG9jL3Byb3BzL1BfTEFTVF9VU0UKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNWNhODc1ZAotLS0gL2Rldi9udWxsCisrKyBiL2RvYy9wcm9wcy9QX0xBU1RfVVNFCkBAIC0wLDAgKzEsMjAgQEAKK1BfTEFTVF9VU0UKKworTkFNRToKKyAgICAgUF9MQVNUX1VTRSAibGFzdF91c2UiCisKK0RFRklOSUVSVCBJTjoKKyAgICAgPHByb3BlcnRpZXMuaD4KKworQkVTQ0hSRUlCVU5HOgorICAgICBEaWVzZSBQcm9wZXJ0eSB3aXJkIGluIFJ1ZXN0dW5nZW4gdW5kIFdhZmZlbiBkYXp1IGJlbnV0enQgdW0KKyAgICAgZmVzdHp1aGFsdGVuLCB3YW5uIGRpZSBSdWVzdHVuZy9XYWZmZSB6dWxldHp0IGltIEthbXBmIGJlbnV0enQKKyAgICAgd3VyZGUuCisKK1NJRUhFIEFVQ0g6CisgICAgIFJ1ZXN0dW5nZW46CVF1ZXJ5RGVmZW5kKEwpCisgICAgIFdhZmZlbjoJCVF1ZXJ5RGFtYWdlKEwpCisgICAgIFNvbnN0aWdlczoJCVBfRVFVSVBfVElNRSwgUF9VTldJRUxEX1RJTUUKKworLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorTGFzdCBtb2RpZmllZDogRnJpIEZlYiAwNiAxMDoxNTowMCAxOTk4IGJ5IFBhcmFjZWxzdXMKZGlmZiAtLWdpdCBhL2RvYy9wcm9wcy9QX0xBU1RfV0VBUl9BQ1RJT04gYi9kb2MvcHJvcHMvUF9MQVNUX1dFQVJfQUNUSU9OCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjFhNGQyMjQKLS0tIC9kZXYvbnVsbAorKysgYi9kb2MvcHJvcHMvUF9MQVNUX1dFQVJfQUNUSU9OCkBAIC0wLDAgKzEsMjQgQEAKK1BST1BFUlRZOgorCisJUF9MQVNUX1dFQVJfQUNUSU9OICAgICJsYXN0X3dlYXJfYWN0aW9uIgorCitERUZJTklFUlQgSU46IAorCisJL3N5cy9hcm1vdXIuaCAodW5kIGRhbWl0IGF1Y2ggaW4gcHJvcGVydGllcy5oKQorCitCRVNDSFJFSUJVTkc6CisKKwlEaWVzZSBQcm9wIGdpYnQgYW4sIHdlbGNoZSBBbi9BdXN6aWVoLUFrdGlvbiBlaW4gU3BpZWxlciB6dWxldHp0CisJZHVyY2hnZWZ1ZWhydCBoYXQuIFNpZSBpc3QgZWluIHp3ZWllbGVtZW50aWdlcyBBcnJheSwgd29iZWkgZGVyCisJZXJzdGUgRWludHJhZyBhbmdpYnQsIG9iIGRlciBTcGllbGVyIHNpY2ggYW4tIG9kZXIgYXVzZ2V6b2dlbgorCWhhdCAoV0FfV0VBUiwgV0FfVU5XRUFSLCBhdWNoIGluIGFybW91ci5oIGRlZmluaWVydCkgdW5kIGRlcgorCXp3ZWl0ZSBkZW4gWmVpdHB1bmt0LgorCisJRGllIFByb3BlcnR5IHdpcmQgKHVudGVyIGFuZGVyZW0/KSBkYWZ1ZXIgdmVyd2VuZGV0IGZlc3R6dXN0ZWxsZW4gb2IKKwlkZXIgU3BpZWxlciBpbiBkZXIgbGV0enRlbiBSdW5kZSBzY2hvbiBlaW5lbiBSdWVzdHVuZ3N3ZWNoc2VsCisJdm9yZ2Vub21tZW4gaGF0IHVuZCBlaW5lbiBlbnRnZWdlbmdlc2V0enRlbiB6dSB1bnRlcmJpbmRlbi4KKworTEVUWlRFIEFFTkRFUlVORzogCisKKzIwMDMtMDEtMjksIDE3OjMwIHZvbiBIdW1uaQorCmRpZmYgLS1naXQgYS9kb2MvcHJvcHMvUF9MQVNUX1hQIGIvZG9jL3Byb3BzL1BfTEFTVF9YUApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5lNWVlMDU1Ci0tLSAvZGV2L251bGwKKysrIGIvZG9jL3Byb3BzL1BfTEFTVF9YUApAQCAtMCwwICsxLDI3IEBACitOQU1FOgorICAgIFBfTEFTVF9YUCAgICAgICAgICAgICAgICAgICAgICAgICJsYXN0X3hwIgorCitERUZJTklFUlQgSU46CisgICAgL3N5cy9saXZpbmcvbGlmZS5oCisKK0JFU0NIUkVJQlVORzoKKyAgICBFaW4gQXJyYXkgdm9tIFR5cCAoeyBwZmFkLCB4cCB9KS4KKworICAgIERlciBFaW50cmFnICJwZmFkIiBnaWJ0IGRhcyBHZWJpZXQgYW4sIGluIGRlbSBlaW4gU3BpZWxlciB6dWxldHp0IFhQCisgICAgYmVrb21tZW4gaGF0LiBEYWJlaSB3aXJkIGF1cyAiL2QvZWJlbmUvbWFnaWVyL3Jvb20vcmF1bTEuYyIgZGFubgorICAgICIvZC9lYmVuZS9tYWdpZXIvcm9vbSIuCisKKyAgICBEZXIgV2VydCAieHAiIHplaWd0IGFuLCB3aWV2aWVsZSBYUCBkZXIgU3BpZWxlciBfaW4gZGllc2VtIEdlYmlldF8KKyAgICBnZXNhbW1lbHQgaGF0LiBTb2JhbGQgZXIgYXVjaCBudXIgZWluZW4gWFAgaW4gZWluZW0gYW5kZXJlbiBHZWJpZXQKKyAgICBiZWtvbW10LCB6ZWlndCBQX0xBU1RfWFAgbnVyIG5vY2ggZGllc2VuIG5ldSBlcmhhbHRlbmVuIFhQIGFuLgorCisgICAgRGVyIEFud2VuZHVuZ3N6d2VjayB3YWVyZSB6LkIuIGVpbmUgSGVpbHN0ZWxsZSwgZGllIG51ciBkYW5uIFdpcmt1bmcKKyAgICB6ZWlndCwgd2VubiBkZXIgU3BpZWxlciB3aXJrbGljaCBpbiBkZW0gYmV0cmVmZmVuZGVuIEdlYmlldCBnZW1ldHplbHQgaGF0CisgICAgdW5kIG5pY2h0IG51ciB6dW0gVGFua2VuIGhlcmdlcmFubnQgaXN0IG9kZXIgZWluZSBVbnRlcnNjaGVpZHVuZywgb2IKKyAgICBqZW1hbmQgbWV0emVsdCBvZGVyIG51ciB1ZWJ0ICh1ZWJlciBkaWUgWFApLgorCitTSUVIRSBBVUNIOgorICAgICBGdW5rdGlvbmVuOiAgQWRkRXhwKCkKKyAgICAgVmVyd2FuZHQ6ICAgIFBfTk9fWFAsIFBfWFAKKworMTQuRmViIDIwMDcgR2xvaW5zb24KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9kb2MvcHJvcHMvUF9MRUFWRUNNRFMgYi9kb2MvcHJvcHMvUF9MRUFWRUNNRFMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZTMxY2Y4YQotLS0gL2Rldi9udWxsCisrKyBiL2RvYy9wcm9wcy9QX0xFQVZFQ01EUwpAQCAtMCwwICsxLDMyIEBACitOQU1FOgorICAgIFBfTEVBVkVDTURTICAgICAgICAgICAgICAgICAgICJsZWF2ZWNtZHMiICAgICAgICAgICAgICAgICAgIAorCitERUZJTklFUlQgSU46CisgICAgL3N5cy90cmFuc3BvcnQuaAorCitCRVNDSFJFSUJVTkc6CisgICAgRWluIEFycmF5IG1pdCBCZWZlaGxlbiwgZGllIHp1bSBWZXJsYXNzZW4gZGVzIFRyYW5zcG9ydGVycyBmdWVocmVuLiAKKworQkVJU1BJRUw6CisgICAgU2V0UHJvcChQX0xFQVZFQ01EUywoeyAidmVybGFzcyIsInZlcmxhc3NlIiB9KSApOworCisgICAgR2lidCBkZXIgU3BpZWxlciBudW4gJ3Zlcmxhc3NlIHh4eCcgZWluLCBzbyBzb3JndCAvc3RkL3RyYW5zcG9ydC5jIAorICAgIGRhZnVlciwgZGFzIGRlciBTcGllbGVyIGF1Y2ggdm9uIG9kZXIgYXVzIGRlbSBUcmFuc3BvcnRlciBiZXdlZ3QgCisgICAgd2lyZC4gVm9yYXVzZ2VzZXR6dCBuYXR1ZXJsaWNoLCBlciBpc3QgYW4gZWluZW0gSGFsdGVwdW5rdCBhbmdlbGFuZ3QuCisKK0JFTUVSS1VOR0VOOgorICAgIFVtIC9zdGQvdHJhbnNwb3J0LmMgbmljaHQgYXVmenVibGFlaGVuLCB3ZXJkZW4gd2VpdGVyZSBBcmd1bWVudGUgd2llCisgICAgZXR3YSAndmVybGFzc2UgZGFzfGRpZXxkZW4geHh4JyBfbmljaHRfIHVudGVyc3R1ZXR6dCEKKworICAgIEhpZXIgbXVzcyBkZXIgdmVyYW50d29ydGxpY2hlIE1hZ2llciBzY2hvbiBlaW5lIGVpZ2VuZSBMb2VzdW5nIGZpbmRlbgorICAgIHVuZCBpbiBzZWluZW4gVHJhbnNwb3J0ZXIgc2NocmVpYmVuLgorCisgICAgU29sbGVuIEtvbW1hbmRvcyB6dW0gQmV0cmV0ZW4gVU5EIFZlcmxhc3NlbiBlaW5lcyBUcmFuc3BvcnRlcnMgdmVyLQorICAgIHdlbmRldCB3ZXJkZW4ga29lbm5lbiwgbXVlc3NlbiBkaWVzZSBpbiBQX1RSQVZFTF9DTURTIGdlc2V0enQgd2VyZGVuLgorCitTSUVIRSBBVUNIOgorICAgIFBfTEVBVkVGQUlMLCBQX0VOVEVSRkFJTCwgUF9FTlRFUkNNRFMsIFBfVFJBVkVMX0NNRFMsIHRyYW5zcG9ydGVyLAorCitMRVRaVEUgQUVOREVSVU5HOgorICAgIERvbiwgMjQuMDEuMjAwMiwgMTA6MTU6MDdoIHZvbiBUaWxseQorICAgIApcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2RvYy9wcm9wcy9QX0xFQVZFRkFJTCBiL2RvYy9wcm9wcy9QX0xFQVZFRkFJTApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5hNTRiNGExCi0tLSAvZGV2L251bGwKKysrIGIvZG9jL3Byb3BzL1BfTEVBVkVGQUlMCkBAIC0wLDAgKzEsMjYgQEAKK05BTUU6CisgICAgUF9MRUFWRUZBSUwgICAgICAgICAgICAgICAgICAgImxlYXZlZmFpbCIgICAgICAgICAgICAgICAgICAgCisKK0RFRklOSUVSVCBJTjoKKyAgICAvc3lzL3RyYW5zcG9ydC5oCisKK0JFU0NIUkVJQlVORzoKKyAgICAgTWVsZHVuZyBhbiBkZW4gU3BpZWxlciwgd2VubiBlciBhdXNzZXJoYWxiIGRlciBBbmxlZ2V6ZWl0ZW4gZWluZW4gCisgICAgIFRyYW5zcG9ydGVyIHZlcmxhc3NlbiB3aWxsLiBJc3QgZGllIFByb3BlcnRpZSBlaW4gQXJyYXksIHNvIHdpcmQgCisgICAgIGRhcyBlcnN0ZSBFbGVtZW50IGFscyBNZWxkdW5nIGFuIGRlbiBTcGllbGVyLCBkYXMgendlaXRlIGFscyAKKyAgICAgTWVsZHVuZyBhbiBkaWUgTWl0c3BpZWxlciBpbSBUcmFuc3BvcnRlciBnZXNjaGlja3QuIElzdCBkZXIgRWludHJhZworICAgICBkYWdlZ2VuIGVpbiBzaW1wbGVyIFN0cmluZywgc28gd2lyZCBkaWUgTWVsZHVuZyBudXIgYW4gZGVuIFNwaWVsZXIKKyAgICAgYXVzZ2VnZWJlbi4KKworQkVJU1BJRUw6CisgICAgIFNldFByb3AoUF9MRUFWRUZBSUwsICJEaWUgV2lsZGdhZW5zZSBmbGllZ2VuIHZpZWwgenUgaG9jaCIgKTsKKworICAgICBTZXRQcm9wKFBfTEVBVkVGQUlMLCAoeyAiRGllIFdpbGRnYWVuc2UgZmxpZWdlbiB2aWVsIHp1IGhvY2giLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAidmVyc3VjaHQsIHZvbSBSdWVja2VuIGRlciBXaWxkZ2FucyB6dSAiCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgKyJrbGV0dGVybiB1bmQgYmVzaW5udCBzaWNoIGRhbm4gZG9jaCIgfSkgKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCitTSUVIRSBBVUNIOgorICAgICBQX0xFQVZFTVNHLCBQX0VOVEVSTVNHLCBQX0VOVEVSRkFJTCwgdHJhbnNwb3J0ZXIKKworTEVUWlRFIEFFTkRFUlVORzoKKyAgICBEb24sIDI0LjAxLjIwMDIsIDEwOjE1OjA3aCB2b24gVGlsbHkKZGlmZiAtLWdpdCBhL2RvYy9wcm9wcy9QX0xFQVZFTVNHIGIvZG9jL3Byb3BzL1BfTEVBVkVNU0cKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNTkyYmJjNAotLS0gL2Rldi9udWxsCisrKyBiL2RvYy9wcm9wcy9QX0xFQVZFTVNHCkBAIC0wLDAgKzEsMTkgQEAKK05BTUU6CisgICAgUF9MRUFWRU1TRyAgICAgICAgICAgICAgICAgICAgImxlYXZlbXNnIiAgICAgICAgICAgICAgICAgICAgCisKK0RFRklOSUVSVCBJTjoKKyAgICAvc3lzL3RyYW5zcG9ydC5oCisKK0JFU0NIUkVJQlVORzoKKyAgICAgQXJyYXkgbWl0IHp3ZWkgTWVsZHVuZ2VuLiBEZXIgZXJzdGUgRWludHJhZyB3aXJkIGFuIGRlbiBUcmFuc3BvcnRlcgorICAgICBhdXNnZWdlYmVuLCBkZXIgendlaXRlIGFuIGRlbiBSYXVtIGluIGRlbiBkZXIgU3BpZWxlciBrb21tdC4KKworQkVJU1BJRUw6CisgICAgIFNldFByb3AoUF9MRUFWRU1TRywgKHsgImtsZXR0ZXJ0IHZvbSBSdWVja2VuIGRlciBXaWxkZ2FucyIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgImtvbW10IHZvbSBSdWVja2VuIGVpbmVyIFdpbGRnYW5zIGhlcnVudGVyIiB9KSApOworCitTSUVIRSBBVUNIOiAKKyAgICAgUF9FTlRFUk1TRywgUF9MRUFWRUZBSUwsIFBfRU5URVJGQUlMLCB0cmFuc3BvcnRlcgorCitMRVRaVEUgQUVOREVSVU5HOgorICAgIERvbiwgMjQuMDEuMjAwMiwgMTA6MTU6MDdoIHZvbiBUaWxseQpkaWZmIC0tZ2l0IGEvZG9jL3Byb3BzL1BfTEVQIGIvZG9jL3Byb3BzL1BfTEVQCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjc2MjhiMWMKLS0tIC9kZXYvbnVsbAorKysgYi9kb2MvcHJvcHMvUF9MRVAKQEAgLTAsMCArMSw5IEBACitOQU1FOgorICAgIFBfTEVQICAgICAgICAgICAgICAgICAgICAgICAgICJsZXAiICAgICAgICAgICAgICAgICAgICAgICAgIAorCitERUZJTklFUlQgSU46CisgICAgL3N5cy9wbGF5ZXIuaAorCitCRVNDSFJFSUJVTkc6CisgICAgIExldmVscHVua3RlIGVpbmVzIFNwaWVsZXJzCisgICAgIE5JQ0hUIFZPTiBIQU5EIFNFVFpFTiEhIQpkaWZmIC0tZ2l0IGEvZG9jL3Byb3BzL1BfTEVWRUwgYi9kb2MvcHJvcHMvUF9MRVZFTApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi40MGJlNWQwCi0tLSAvZGV2L251bGwKKysrIGIvZG9jL3Byb3BzL1BfTEVWRUwKQEAgLTAsMCArMSwzMyBAQAorTkFNRToKKyAgICBQX0xFVkVMICAgICAgICAgICAgICAgICAgICAgICAibGV2ZWwiICAgICAgICAgICAgICAgICAgICAgICAKKworREVGSU5JRVJUIElOOgorICAgIC9zeXMvbGl2aW5nL2Rlc2NyaXB0aW9uLmgKKworQkVTQ0hSRUlCVU5HOgorCisgICAgIFNwaWVsZXItTGV2ZWwgKCE9IE1hZ2llcmxldmVsKQorCisgICAgIEluIEtyYW5raGVpdHMtIChDTF9ESVNFQVNFKSB1bmQgR2lmdG9iamVrdGVuIChDTF9QT0lTT04pIGRydWVja3QgCisgICAgIFBfTEVWRUwgYXVzLCB3aWUgc2Nod2VyIGRpZSBLcmFua2hlaXQvZGFzIEdpZnQgaXN0LiBKZSBuYWNoZGVtLCB3aWUgCisgICAgIGhvY2ggb2RlciBuaWVkcmlnIGRlciBMZXZlbCBnZXNldHp0IHdpcmQsIG11c3Mgei5CLiBlaW4gS2xlcmlrZXIgbWVociAKKyAgICAgb2RlciB3ZW5pZ2VyIG9mdCBrdXJpZXJlbiwgdW0gIGVpbmUgKGdnZi4gc3R1ZmVud2Vpc2UpIEhlaWx1bmcgenUgCisgICAgIGJld2lya2VuLgorCisgICAgIEluIEZsdWNob2JqZWt0ZW4gKENMX0NVUlNFKSBnaWJ0IFBfTEVWRUwgZWJlbmZhbGxzIGRpZSBTY2h3ZXJlIGRlcworICAgICBGbHVjaGVzIGFuLCBqZWRvY2ggaXN0IGhpZXIgenUgYmVhY2h0ZW4sIGRhc3Mgei5CLiBLbGVyaWtlciBha3R1ZWxsCisgICAgIGtlaW5lIHN0dWZlbndlaXNlIFNjaHdhZWNodW5nIGJld2lya2VuIGtvZW5uZW4sIHNvbmRlcm4gZW50d2VkZXIgZGVuCisgICAgIEZsdWNoIGVudGZlcm5lbiBrb2VubmVuIG9kZXIga29tcGxldHQgc2NoZWl0ZXJuLiAKKyAgICAgRGVyIEZsdWNobGV2ZWwgaXN0IGhpZXIgZ3JvYiBhbHMgQ2hhbmNlIGRlcyBTY2hlaXRlcm5zIGluIGVpbmVtIAorICAgICBXZXJ0ZWJlcmVpY2ggdm9uIDEtMTAwIHp1IHNlaGVuLCB3YXMgYmVkZXV0ZXQsIGRhc3MgZWluIEZsdWNobGV2ZWwgCisgICAgIHZvbiAxMDAgYWxzIHBlcm1hbmVudGVyLCBuaWNodCBlbnRmZXJuYmFyZXIgRmx1Y2ggYW56dXNlaGVuIGlzdC4KKworICAgICBHZW5hdWVyZXMgaXN0IGluIGRlciBLbGVydXNnaWxkZSBuYWNoenVsZXNlbiBvZGVyIGJlaW0gR00gS2xlcnVzIHp1CisgICAgIGVyZnJhZ2VuLgorCitTSUVIRSBBVUNIOgorICAgICBQcm9wZXJ0aWVzOiAgUF9HVUlMRF9MRVZFTAorICAgICBBbGxnZW1laW5lczogL2RvYy93aXovZ2lmdCwgL2RvYy9oZWxwL2dpZnQKKyAgICAgRnVua3Rpb25lbjogIEFkZENsYXNzKEwpLCBpc19jbGFzc19tZW1iZXIoTCkKKworTGV0enRlIEFlbmRlcnVuZzogMjAxNS1GZWItMDIsIEFyYXRob3JuLgpkaWZmIC0tZ2l0IGEvZG9jL3Byb3BzL1BfTElGRVRJTUUgYi9kb2MvcHJvcHMvUF9MSUZFVElNRQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4yNTBjMjg3Ci0tLSAvZGV2L251bGwKKysrIGIvZG9jL3Byb3BzL1BfTElGRVRJTUUKQEAgLTAsMCArMSwzMCBAQAorTkFNRToNCisgICAgIFBfTElGRVRJTUUgICAgICAgICAgICAgICAgICAgICJzdGRfZm9vZF9saWZldGltZSINCisNCitERUZJTklFUlQgSU46DQorICAgICAvc3lzL2Zvb2QuaA0KKw0KK0JFU0NIUkVJQlVORzoNCisgICAgIFplaXQgaW4gU2VrdW5kZW4sIGRpZSBkaWUgU3BlaXNlIGhhbHRiYXIgaXN0Lg0KKyAgICAgTWl0IFNldHplbiBkaWVzZXIgUHJvcGVydHkgd2lyZCBkZXIgV2VydCBmdWVyIFBfUkVTRVRfTElGRVRJTUUgdW5kDQorICAgICBkb3J0IGdlc3BlaWNoZXJ0Lg0KKyAgICAgTmFjaCBkaWVzZXIgWmVpdCB3aXJkIGRpZXNlIFNwZWlzZSBzY2hsZWNodCB1bmQgamUgbmFjaCBLb25maWd1cmF0aW9uDQorICAgICBkZXIgU3BlaXNlIGV2ZW50dWVsbCB6ZXJzdG9lcnQuIFNpY2hlcmdlc3RlbGx0IHdpcmQgZGllcyBkdXJjaCBkZW4NCisgICAgIEF1ZnJ1ZiB2b24gcmVzZXQoKSBuYWNoIGRpZXNlciBBbnphaGwgU2VrdW5kZW4uDQorICAgICBNb2VjaHRlIG1hbiBlaW5lIFNwZWlzZSBoYWJlbiwgZGllIG5pZW1hbHMgdmVyZGlyYnQNCisgICAgIChnZW5laG1pZ3VuZ3NwZmxpY2h0aWchKSwgbnV0enQgbWFuIGRpZSBQcm9wZXJ0eSBQX05PX0JBRA0KKyAgICAgDQorQkVNRVJLVU5HRU46DQorICAgICBTb2JhbGQgZGVyIENvdW50ZG93biB6dW0gU2NobGVjaHR3ZXJkZW4gZGVyIFNwZWlzZSBsYWV1ZnQsIGFsc28gZWluDQorICAgICBTcGllbGVyIGRhbWl0IGluIEJlcnVlaHJ1bmcga2FtLCB6ZWlndCBTZXRQcm9wIGF1ZiBkaWVzZSBQcm9wZXJ0eSBrZWluZQ0KKyAgICAgV2lya3VuZyBtZWhyLg0KKw0KK0RFRkFVTFQ6DQorICAgICBPaG5lIFNldHplbiB2b24gUF9MSUZFVElNRSAsUF9SRVNFVF9MSUZFVElNRSB1bmQgUF9OT19CQUQgdmVyZGlyYnQgZGllDQorICAgICBTcGVpc2UgbmFjaCBlaW5lbSBSZXNldCwgYWxzbyB6d2lzY2hlbiAzMCB1bmQgNjAgTWludXRlbg0KKw0KK1NJRUhFIEFVQ0g6DQorICAgICB3aXovZm9vZCwgUF9SRVNFVF9MSUZFVElNRSwgUF9OT19CQUQNCisNCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCitMYXN0IG1vZGlmaWVkOiBUaHUgT2N0IDI4IDEyOjE1OjAwIDIwMTAgYnkgQ2FsZHJhClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZG9jL3Byb3BzL1BfTElHSFQgYi9kb2MvcHJvcHMvUF9MSUdIVApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4yNTFlOTI3Ci0tLSAvZGV2L251bGwKKysrIGIvZG9jL3Byb3BzL1BfTElHSFQKQEAgLTAsMCArMSw2MiBAQAorTkFNRToKKyAgICBQX0xJR0hUICAgICAgICAgICAgICAgICAgICAgICAibGlnaHQiCisKK0RFRklOSUVSVCBJTjoKKyAgICAvc3lzL3Byb3BlcnRpZXMuaAorCitCRVNDSFJFSUJVTkc6CisgICAgR2lidCBkZW4gTGljaHRsZXZlbCBlaW5lcyBPYmpla3RlcyBhbiwgZC5oLiB3aWUgaGVsbCBkYXMgT2JqZWt0IHZvbiBzaWNoCisgICAgYXVzIGxldWNodGV0LiBNb2VjaHRlIG1hbiBkZW4gZ2VzYW10ZW4gTGljaHRsZXZlbCBoYWJlbiBkZXIgdm9uIGVpbmVtCisgICAgT2JqZWt0IGF1c2dlaHQsIHNvIHNvbGx0ZSBtYW4gUF9UT1RBTF9MSUdIVCBuZWhtZW4sIGRhcyBkZW4gSW5oYWx0IGVpbmVzCisgICAgQ29udGFpbmVycyBkaXJla3QgbWl0IHZlcnJlY2huZXQuCisKKyAgICBCaXR0ZSBfbnVyXyB1ZWJlciBTZXRQcm9wIGJ6dy4gUXVlcnlQcm9wIHp1Z3JlaWZlbiwgZGEgZXMgZnVlciBkaWUKKyAgICBCZXJlY2hudW5nIHdpY2h0aWcgaXN0LCBkYXMgaW4gYWxsZW4gQ29udGFpbmVybiBQX0xBU1RfQ09OVEVOVF9DSEFOR0UKKyAgICBnZXNldHp0IHdpcmQgdW0gZWluIG5ldWJlcmVjaG5lbiBkZXMgTGljaHRsZXZlbHMgYXVzenVsb2VzZW4hCisKK0FOTUVSS1VORzoKKyAgICBVbSBlaW4gdW5nZWZhZWhyZXMgR2VmdWVobCBkYXZvbiB6dSBiZWtvbW1lbiB3YXMgZWluIExpY2h0bGV2ZWwgaW4KKyAgICBldHdhIGJlZGV1dGV0IGhpZXIgZWluaWdlIGFsbGdlbWVpbmUgQmVpc3BpZWxlIHZvbiBHZWdlbnN0YWVuZGVuLgorICAgIEdydW5kc2FldHpsaWNoIHNvbGx0ZW4gTGljaHRsZXZlbCA8MCB1bmQgPjIgbnVyIGluIFJ1ZWNrc3ByYWNoZSBtaXQgZGVtCisgICAgQmFsYW5jZXRlYW0gYmVudXR6dCB3ZXJkZW4uCisKKyAgICBMaWNodGxldmVsIC0xLCAgei5CLiBlaW4gc2Nod2FyemVyIFJpbmcsIHZvbiBkZW0gZWluZSBrbGVpbmUgZHVua2xlIEF1cmEKKyAgICAgICAgICAgICAgICAgICAgYXVzZ2VodCwgZGllIGRlbiBTcGllbGVyIHVtZ2lidC4KKyAgICBMaWNodGxldmVsICAwLCAgZGVyIEdlZ2Vuc3RhbmQgYmVlaW5mbHVzc3QgZGFzIExpY2h0IHVlYmVyaGF1cHQgbmljaHQKKyAgICBMaWNodGxldmVsICAxLCAgZGVyIFNwaWVsZXIgaGFlbHQgZWluZSBrbGVpbmUgTGljaHRxdWVsbGUgaW4gSGFlbmRlbiwKKyAgICAgICAgICAgICAgICAgICAgZGllc2VzIGthbm4gZWluIExldWNodHBmaXJzaWNoLCBlaW5lIEZhY2tlbCBvZGVyIGVpbgorICAgICAgICAgICAgICAgICAgICBGZXVlcnNjaHdlcnQgb2RlciBhZWhubGljaGVzIHNlaW4uCisgICAgTGljaHRsZXZlbCAgMiwgIGVpbmUgZXR3YXMgZ3JvZXNzZXJlIExpY2h0cXVlbGxlLCBkaWUgYWJlciBpbW1lciBub2NoCisgICAgICAgICAgICAgICAgICAgIG5pY2h0IGRlbiBSYXVtIGJlbGV1Y2h0ZXQgc29uZGVybiBsZWRpZ2xpY2ggZGVtIFNwaWVsZXIKKyAgICAgICAgICAgICAgICAgICAgZWluZW4gTGljaHRzY2hlaW4gZ2V3YWVocnQgbWl0IGRlbSBlciBzZWhlbiBrYW5uLgorICAgIExpY2h0bGV2ZWwgPjIsICBleHRyZW0gaGVsbGUgTGljaHRxdWVsbGVuLCBkaWUgZGVuIGdlc2FtdGVuIFJhdW0KKyAgICAgICAgICAgICAgICAgICAgYXVzbGV1Y2h0ZW4sIGluIGRlciBSZWdlbCB3b2hsIGVoZXIgbWFnaXNjaGVyIE5hdHVyLgorICAgICAgICAgICAgICAgICAgICBTb2xjaGUgTGljaHRxdWVsbGVuIHNvbGx0ZW4gc2ljaCBtaXQgZGVyIFplaXQKKyAgICAgICAgICAgICAgICAgICAgdmVyYnJhdWNoZW4sIGRlbSBTcGllbGVyIFNjaGFkZW4genVmdWVnZW4gb2RlcgorICAgICAgICAgICAgICAgICAgICBhZWhubGljaGVzLCBkYW1pdCBkaWUgU3BpZWxlciBuaWNodCBkZWZhdWx0bWFlc3NpZyBtaXQKKyAgICAgICAgICAgICAgICAgICAgZWluZXIgc29sY2hlbiBMaWNodHF1ZWxsZSBkdXJjaHMgTUcgemllaG4uCisKKyAgICBEYXJhdXMgZXJnZWJlbiBzaWNoIGRhbm4gZm9sZ2VuZGUgS29uc2VxdWVuemVuIGZ1ZXIgUmFldW1lOgorICAgIExpY2h0bGV2ZWwgID4xOiBEZXIgUmF1bSBpc3Qgc2VociBoZWxsIGVybGV1Y2h0ZXQgdW5kIGthbm4gdm9uIFNwaWVsZXJuCisgICAgICAgICAgICAgICAgICAgIG5pY2h0IG9kZXIgbnVyIHNlaHIgc2Nod2VyIGFiZ2VkdW5rZWx0IHdlcmRlbi4gRWluIFdlcnQKKyAgICAgICAgICAgICAgICAgICAgdm9uIDItMyBrYW5uIGludGVyZXNzYW50IHNlaW4sIHdlbm4gZGllIE5QQ3MgaW0gUmF1bQorICAgICAgICAgICAgICAgICAgICB1ZWJlciBrZWluZSBOYWNodHNpY2h0IHZlcmZ1ZWdlbi4gVWViZXIgZWluIEFiZHVua2VsbiBkZXMKKyAgICAgICAgICAgICAgICAgICAgUmF1bWVzIGthbm4gZGVyIFNwaWVsZXIgZGFubiBkb2NoIGRlbiBOYWNodGthbXBmIG51dHplbi4KKyAgICBMaWNodGxldmVsICAgMTogRGVyIFJhdW0gaXN0IGVybGV1Y2h0ZXQgdW5kIGRpZSBTcGllbGVyIGtvZW5uZW4gb2huZQorICAgICAgICAgICAgICAgICAgICB3ZWl0ZXJlIExpY2h0cXVlbGxlbiBzZWhlbi4uLgorICAgIExpY2h0bGV2ZWwgICAwOiBFaW4gZHVua2xlciBSYXVtIGluIGRlbSBtYW4gbWl0IGplZGVyIEZhY2tlbCBzZWhlbiBrYW5uLgorICAgIExpY2h0bGV2ZWwgIC0xOiBtYW4gYmVub2V0aWd0IHp3ZWkgZWluZmFjaGUgTGljaHRxdWVsbGVuIG9kZXIgTmFjaHRzaWNodAorICAgICAgICAgICAgICAgICAgICB1bSBpbiBkaWVzZW0gUmF1bSBldHdhcyBzZWhlbiB6dSBrb2VubmVuLgorICAgIExpY2h0bGV2ZWwgIC0yOiBNYW4gYmVub2V0aWd0IHNjaG9uIGVpbmUgYmVzb25kZXJlIExpY2h0cXVlbGxlIHVtIGluCisgICAgICAgICAgICAgICAgICAgIGRpZXNlbSBSYXVtIG5vY2ggZXR3YXMgc2VoZW4genUga29lbm5lbi4gU29sY2hlCisgICAgICAgICAgICAgICAgICAgIExpY2h0cXVlbGxlbiBzaW5kIG5pY2h0cyBmdWVyIEFuZmFlbmdlciBvZGVyIG1pdHRsZXJlCisgICAgICAgICAgICAgICAgICAgIFNwaWVsZXIgZGEgc2llIHNjaHdlciB6dSBiZXNjaGFmZmVuIHVuZCBpbiBkZXIgUmVnZWwKKyAgICAgICAgICAgICAgICAgICAgYXVjaCBlaW5pZ2UgSGFuZGljYXBzIGhhYmVuLgorICAgIExpY2h0bGV2ZWwgPC0yOiBEZXIgUmF1bSBpc3Qgd2lya2xpY2ggYWJzb2x1dCBzdG9ja2R1c3RlciB1bmQKKyAgICAgICAgICAgICAgICAgICAgTGljaHRxdWVsbGVuIGRpZSBzb2xjaCBlaW5lbiBSYXVtIGF1c2xldWNodGVuIGtvZW5uZW4sCisgICAgICAgICAgICAgICAgICAgIHNpbmQgYXVzc2Vyb3JkZW50bGljaCBzZWx0ZW4gdW5kIGhhYmVuIGltbWVyIGlocmUKKyAgICAgICAgICAgICAgICAgICAgVHVlY2tlbi4gRGllc2UgTGljaHRsZXZlbCBzb2xsdGVuIG51ciBtaXQgVm9yc2ljaHQKKyAgICAgICAgICAgICAgICAgICAgZ2Vub3NzZW4gd2VyZGVuLgorCitTSUVIRSBBVUNIOgorICAgIFBfVE9UQUxfTElHSFQsIFBfSU5UX0xJR0hULCBQX1BMQVlFUl9MSUdIVCwgUF9MSUdIVF9NT0RJRklFUiwgQ2Fubm90U2VlKCkKZGlmZiAtLWdpdCBhL2RvYy9wcm9wcy9QX0xJR0hUREVTQyBiL2RvYy9wcm9wcy9QX0xJR0hUREVTQwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41ODk4ZGI4Ci0tLSAvZGV2L251bGwKKysrIGIvZG9jL3Byb3BzL1BfTElHSFRERVNDCkBAIC0wLDAgKzEsMzQgQEAKK05BTUU6CisgICAgUF9MSUdIVERFU0MgICAgICAgICAgICAgICAgICAgImxpZ2h0ZGVzYyIgICAgICAgICAgICAgICAgICAgCisKK0RFRklOSUVSVCBJTjoKKyAgICAvc3lzL3Byb3BlcnRpZXMuaAorCitCRVNDSFJFSUJVTkc6CisgICAgU3RyaW5nIG9kZXIgQXJyYXkgdm9uIFN0cmluZ3MgbWl0IEFkamVrdGl2ZW4sIGRpZSBkYXMgTGV1Y2h0ZW4gZGVyIAorICAgIExpY2h0cXVlbGxlIGJlc2NocmVpYmVuICh6LkIuIGxldWNodGVuZCwgYnJlbm5lbmQsIGdsdWVoZW5kKS4KKyAgICBTdGFuZGFyZG1hZXNzaWcgaXN0IGRpZSBQcm9wZXJ0eSBhdWYgImJyZW5uZW5kIiBnZXNldHp0LgorCisgICAgV2VubiBlaW4gQXJyYXkgYW5nZWdlYmVuIHdpcmQsIHdlcmRlbiBkaWUgQmVzY2hyZWlidW5nZW4gcGFzc2VuZCBhdWYKKyAgICBkaWUgQmVubmRhdWVyIGF1ZmdldGVpbHQgdW5kIGRhcyB6dXIgYWt0dWVsbCBub2NoIHZvcmhhbmRlbmVuIFJlc3QtCisgICAgQnJlbm5kYXVlciBwYXNzZW5kZSBBZGpla3RpdiBhdXNnZWdlYmVuLiBEYXMgQXJyYXkgd2lyZCBkYWJlaSBydWVjay0KKyAgICBhZXJ0cyBkdXJjaGxhdWZlbiwgZC5oLiBmdWVyIGVpbmUgZnJpc2NoIGVudHp1ZW5kZXRlIExpY2h0cXVlbGxlIHdpcmQKKyAgICBkZXIgbGV0enRlIEVpbnRyYWcgZGVzIEFycmF5cyB2ZXJ3ZW5kZXQgKHMuIEJlaXNwaWVsZSkuCisKK0JFSVNQSUVMRToKKyAgICBFaW5lIGVpbmZhY2hlIE9lbGxhbXBlOgorCisgICAgU2V0UHJvcChQX0xJR0hUREVTQywgImFuZ2V6dWVuZGV0Iik7CisKKyAgICBFaW5lIEZhY2tlbCBtaXQgbWVocmVyZW4gQnJlbm5zdGFkaWVuIChhdXMgL2l0ZW1zL2ZhY2tlbC5jKToKKworICAgIFNldFByb3AoUF9MSUdIVERFU0MsICh7ImdsaW1tZW5kIiwiZmxhY2tlcm5kIiwibGVpY2h0IGZsYWNrZXJuZCIsCisgICAgICAgICAgICAgICAgICAgICAgICAgImJyZW5uZW5kIiwiaGVsbCBsb2Rlcm5kIiwiZnJpc2NoIGFuZ2V6dWVuZGV0In0pKTsKKworU0lFSEUgQVVDSDoKKyAgICBCYXNpc2tsYXNzZW46IC9zdGQvbGlnaHRzb3VyY2UuYworICAgIFByb3BlcnRpZXM6ICAgUF9GVUVMLCBQX0RPX0RFU1RSVUNULCBQX0xJR0hUCisgICAgTWV0aG9kZW46ICAgICBBZGRGdWVsKEwpCisKK0xFVFpURSBBRU5ERVJVTkc6CisgICAgMjIuIERlei4gMjAxNSwgQXJhdGhvcm4KZGlmZiAtLWdpdCBhL2RvYy9wcm9wcy9QX0xJR0hURUQgYi9kb2MvcHJvcHMvUF9MSUdIVEVECm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjkwMjliMDIKLS0tIC9kZXYvbnVsbAorKysgYi9kb2MvcHJvcHMvUF9MSUdIVEVECkBAIC0wLDAgKzEsOCBAQAorTkFNRToKKyAgICBQX0xJR0hURUQgICAgICAgICAgICAgICAgICAgICAibGlnaHRlZCIgICAgICAgICAgICAgICAgICAgICAKKworREVGSU5JRVJUIElOOgorICAgIC9zeXMvcHJvcGVydGllcy5oCisKK0JFU0NIUkVJQlVORzoKKyAgICAgRmxhZywgb2IgZGllIExpY2h0cXVlbGxlIGluIEJldHJpZWIgaXN0LgpkaWZmIC0tZ2l0IGEvZG9jL3Byb3BzL1BfTElHSFRfQUJTT1JQVElPTiBiL2RvYy9wcm9wcy9QX0xJR0hUX0FCU09SUFRJT04KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMjEzMTIwZgotLS0gL2Rldi9udWxsCisrKyBiL2RvYy9wcm9wcy9QX0xJR0hUX0FCU09SUFRJT04KQEAgLTAsMCArMSwxNSBAQAorTkFNRToKKyAgICBQX0xJR0hUX0FCU09SUFRJT04gICAgICAgICAgICAgICAgICAibGlnaHRfYWJzb3JwdGlvbiIKKworREVGSU5JRVJUIElOOgorICAgIC9zeXMvcm9vbS9kZXNjcmlwdGlvbi5oCisKK0JFU0NIUkVJQlVORzoKKyAgICBJbiBSYWV1bWVuIHZlcnRlaWx0IHNpY2ggYXVmZ3J1bmQgaWhyZXIgR3JvZXNzZSBkYXMgTGljaHQgdW5kIGdlcmFkZSBpbgorICAgIGdyb2Vzc2VyZW4gUmFldW1lbiBrYW5uIGVpbmUga2xlaW5lIEZhY2tlbCB1bnRlciBVbXN0YWVuZGVuIG5pY2h0IG1laHIKKyAgICBhdXNyZWljaGVuIGRlbiBnZXNhbXRlbiBSYXVtIGF1c3p1bGV1Y2h0ZW4uIEluIGRpZXNlbSBGYWxsIGthbm4gbWFuCisgICAgdWViZXIgZGllc2UgUHJvcGVydHkgZGFzIFZlcmhhbHRlbiBkZXMgTGljaHRzIHN0ZXVlcm4uCisgICAgRWluICJub3JtYWxlciIgZHVyY2hzY2huaXR0bGljaGVyIFJhdW0gaGF0IGhpZXIgZGVuIERlZmF1bHR3ZXJ0IDEuCisKK1NJRUhFIEFVQ0g6CisgICAgUF9UT1RBTF9MSUdIVCwgUF9JTlRfTElHSFQsIFBfUExBWUVSX0xJR0hULCBQX0xJR0hUX01PRElGSUVSLCBDYW5ub3RTZWUoKQpkaWZmIC0tZ2l0IGEvZG9jL3Byb3BzL1BfTElHSFRfTU9ESUZJRVIgYi9kb2MvcHJvcHMvUF9MSUdIVF9NT0RJRklFUgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4yNDA5Yzc5Ci0tLSAvZGV2L251bGwKKysrIGIvZG9jL3Byb3BzL1BfTElHSFRfTU9ESUZJRVIKQEAgLTAsMCArMSw0OSBAQAorTkFNRToKKyAgICBQX0xJR0hUX01PRElGSUVSICAgICAgICAgICAgICAgICAgICAgImxpZ2h0X21vZGlmaWVyIgorCitERUZJTklFUlQgSU46CisgICAgL3N5cy9wcm9wZXJ0aWVzLmgKKworQkVTQ0hSRUlCVU5HOgorICAgIFZlcmFlbmRlcnQgZGFzIExpY2h0bGV2ZWwgZGFzIHZvbiBlaW5lbSBMZWJld2VzZW4gd2Focmdlbm9tbWVuIHdpcmQuCisgICAgRGVyIFdlcnQgZGllc2VyIFByb3BlcnR5IHdpcmQgYWRkaXRpdiBpbiBQX1BMQVlFUl9MSUdIVCBiZXJ1ZWNrc2ljaHRpZ3QuCisgICAgRXMgaXN0IGhpZXJtaXQgei5CLiBtb2VnbGljaCBlaW5lIFNvbm5lbmJyaWxsZSB6dSBwcm9ncmFtbWllcmVuLCBkaWVzZQorICAgIHZlcmFlbmRlcnQgamEgbmljaHQgZGFzIHRhdHNhZWNobGljaGUgTGljaHRsZXZlbCwgc29uZGVybiB2ZXJkdW5rZWx0IG51cgorICAgIGRpZSBTaWNodC4KKworQU5NRVJLVU5HOgorICAgIERhbWl0IE5QQ3MgaW4gZGVyIExhZ2Ugc2luZCBzb2xjaGUgR2VnZW5zdGFlbmRlIHJpY2h0aWcgZWluenVzY2hhZXR6ZW4sCisgICAgc29sbHRlIGRpZXNlIFByb3BlcnR5IGluIGplZGVtIEdlZ2Vuc3RhbmQgZGVyIGVpbmVuIExpZ2h0LU1vZGlmaWVyIHNldHp0LAorICAgIGF1Y2ggZ2VzZXR6dCBzZWluLiBEYXMgdmVyYWVuZGVybiBkaWVzZXIgUHJvcGVydHkgaW4gU3BpZWxlcm4gZHVyY2ggTlBDcworICAgIG9kZXIgR2VnZW5zdGFlbmRlIGlzdCBzZWxic3R2ZXJzdGFlbmRsaWNoIGdlbmVobWlndW5nc3BmbGljaHRpZy4KKworQkVJU1BJRUxFOgorICAgICAgIC8vIEVpbiBOUEMgZGVyIGF1Y2ggaW4gcmVsYXRpdiBkdW5rbGVuIFJhZXVtZW4gbWl0IExpY2h0bGV2ZWwgLTIKKyAgICAgICAvLyBub2NoIHNlaGVuIGthbm4uLi4KKyAgICAgICBjcmVhdGVfZGVmYXVsdF9ucGMoMTApOworICAgICAgIFNldFByb3AoUF9MSUdIVF9NT0RJRklFUiwgMyk7CisKKyAgICAgICAvLyBFaW5lIFNvbm5lbmJyaWxsZSwgZGllIGRhcyBMaWNodGxldmVsIHVtIGVpbnMgc2Vua3QuCisKKyAgICAgICBjcmVhdGUoKQorICAgICAgIHsKKyAgICAgICAgICA6CisgICAgICAgICAgU2V0UHJvcChQX0FSTU9VUl9UWVBFLCBBVF9HTEFTU0VTKTsKKyAgICAgICAgICBTZXRQcm9wKFBfTElHSFRfTU9ESUZJRVIsIC0xKTsKKyAgICAgICAgICA6CisgICAgICAgfQorCisgICAgICAgLy8gQWNodHVuZzogRmFsbHMgcGwgUXVlcnktIG9kZXIgU2V0LU1ldGhvZGVuIGF1ZiBQX0xJR0hUX01PRElGSUVSIGhhdCwKKyAgICAgICAvLyB3aXJkIGRpZXNlIE1ldGhvZGUgaGllciBmdXJjaHRiYXIgc2NoaWVmIGdlaGVuIHVuZCBpbSBiZXN0ZW4gRmFsbAorICAgICAgIC8vIG5pY2h0cyB2ZXJhZW5kZXJuLiBJbiByZWFsZW4gT2JqZWt0ZW4gZW1wZmllaGx0IHNpY2ggenVtaW5kZXN0IGVpbmUKKyAgICAgICAvLyBQcnVlZnVuZyBpbSBWb3JmZWxkLCBvYiBlaW5lIFF1ZXJ5LS9TZXQtTWV0aG9kZSBnZXNldHp0IGlzdC4KKyAgICAgICBwcm90ZWN0ZWQgdm9pZCBJbmZvcm1XZWFyKG9iamVjdCBwbCwgaW50IHNpbGVudCwgaW50IGFsbCkgeworICAgICAgICAgICBwbC0+U2V0UHJvcChQX0xJR0hUX01PRElGSUVSLCBwbC0+UXVlcnlQcm9wKFBfTElHSFRfTU9ESUZJRVIpIC0xKTsKKyAgICAgICB9CisKKyAgICAgICBwcm90ZWN0ZWQgdm9pZCBJbmZvcm1VbndlYXIob2JqZWN0IHBsLCBpbnQgc2lsZW50LCBpbnQgYWxsKSB7CisgICAgICAgICAgIHBsLT5TZXRQcm9wKFBfTElHSFRfTU9ESUZJRVIsIHBsLT5RdWVyeVByb3AoUF9MSUdIVF9NT0RJRklFUikgKzEpOworICAgICAgIH0KKworU0lFSEUgQVVDSDoKKyAgICBQX1RPVEFMX0xJR0hULCBQX0lOVF9MSUdIVCwgUF9QTEFZRVJfTElHSFQsIFBfTElHSFRfTU9ESUZJRVIsIENhbm5vdFNlZSgpCmRpZmYgLS1naXQgYS9kb2MvcHJvcHMvUF9MSUdIVF9UUkFOU1BBUkVOQ1kgYi9kb2MvcHJvcHMvUF9MSUdIVF9UUkFOU1BBUkVOQ1kKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNGFmNDQxNQotLS0gL2Rldi9udWxsCisrKyBiL2RvYy9wcm9wcy9QX0xJR0hUX1RSQU5TUEFSRU5DWQpAQCAtMCwwICsxLDE0IEBACitOQU1FOgorICAgIFBfTElHSFRfVFJBTlNQQVJFTkNZICAgICAgICAgICAgICJsaWdodF90cmFuc3BhcmVuY3kiCisKK0RFRklOSUVSVCBJTjoKKyAgICAvc3lzL2NvbnRhaW5lci5oCisKK0JFU0NIUkVJQlVORzoKKyAgICBXaWV2aWVsIExpY2h0IHNjaGx1Y2t0IGVpbiBDb250YWluZXIsIGQuaC4gd2lldmllbCBMaWNodCBkcmluZ3QgYXVzCisgICAgZWluZW0gQmVoYWVsdGVyIG5vY2ggbmFjaCBkcmF1c3Nlbi4gQmVpIENvbnRhaW5lcm4gZGllIF9uaWNodF8KKyAgICB0cmFuc3BhcmVudCBzaW5kLCBsaWVmZXJ0IGVpbmUgX3F1ZXJ5X21ldGhvZCBoaWVyIGltbWVyIDk5OSB6dXJ1ZWNrLgorICAgIERlZmF1bHRtYWVzc2lnIHN0ZWh0IGRpZXNlIFByb3BlcnR5IGF1ZiAyLgorCitTSUVIRSBBVUNIOgorICAgIFBfVE9UQUxfTElHSFQsIFBfSU5UX0xJR0hULCBQX1BMQVlFUl9MSUdIVCwgUF9MSUdIVF9NT0RJRklFUiwgQ2Fubm90U2VlKCkKZGlmZiAtLWdpdCBhL2RvYy9wcm9wcy9QX0xJR0hUX1RZUEUgYi9kb2MvcHJvcHMvUF9MSUdIVF9UWVBFCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjA3MzIyZTAKLS0tIC9kZXYvbnVsbAorKysgYi9kb2MvcHJvcHMvUF9MSUdIVF9UWVBFCkBAIC0wLDAgKzEsNzUgQEAKK05BTUU6CisgICAgUF9MSUdIVF9UWVBFICAgICAgICAgICAgICAgICAgICAgICAibGlnaHRfdHlwZSIKKworREVGSU5JRVJUIElOOgorICAgIC9zeXMvdGhpbmcvZGVzY3JpcHRpb24uaAorCitCRVNDSFJFSUJVTkc6CisgICAgR2lidCBhbiwgd2FzIGZ1ZXIgZWluIExpY2h0IGluIGVpbmVtIE9iamVrdCB2b3JoZXJyc2NodC4gCisgICAgCisgICAgRXMgc2luZCB2ZXJzY2hpZWRlbmUgJ2F0b21hcmUnIExpY2h0dHlwZW4sIHZvcmRlZmluaWVydDoKKyAgICBMVF9NSVNDICAgICAgICAgVW5iZXN0aW1tdCwga2VpbmUgQW5nYWJlbi4KKworICAgIExUX1NVTiAgICAgICAgICBTb25uZW5saWNodC4KKyAgICBMVF9NT09OICAgICAgICAgTW9uZGxpY2h0IAorICAgIExUX1NUQVJTICAgICAgICBTdGVybmVubGljaHQuCisgICAgCisgICAgTFRfRElGRlVTRSAgICAgIEluZGlyZWt0ZXMgVGFnZXNsaWNodC4gKHouQi4gaW0gV2FsZCkKKworICAgIExUX0NBTkRMRSAgICAgICBLZXJ6ZW5saWNodC4KKyAgICBMVF9UT1JDSCAgICAgICAgRmFja2Vsc2NoZWluLgorICAgIExUX09QRU5fRklSRSAgICBTb25zdGlnZXMgb2ZmZW5lcyBGZXVlci4gKExhZ2VyZmV1ZXIgZXRjLikKKyAgICAKKyAgICBMVF9NQUdJQyAgICAgICAgSXJnZW5kZWluZSBtYWdpc2NoZSBMaWNodHF1ZWxsZS4KKworICAgIExUX0dMT1dJTkcgICAgICBFaW5lIHNlbGJzdGxldWNodGVuZGUgTGljaHRxdWVsbGUuCisKKyAgICBMVF9EQVJLTkVTUyAgICAgS2VpbiB3aXJrbGljaGVzIExpY2h0LCBhYmVyIGF1Y2ggRHVua2VsaGVpdCBzb2xsCisgICAgICAgICAgICAgICAgICAgIGV4cGxpeml0IGdlc2V0enQgd2VyZGVuIGtvZW5uZW4uCisKKyAgICBJbiBlaW5lbSBPYmpla3Qga29lbm5lbiBtZWhyZXJlIExpY2h0dHlwZW4gZ2VzZXR6dCB3ZXJkZW4uIERpZXMKKyAgICBnZXNjaGllaHQgZHVyY2ggbG9naXNjaGUgT2Rlci1WZXJrbnVlcGZ1bmdlbiwgc2llaGUgbWFuIG9wZXJhdG9ycy4KKworICAgIFdlbm4gaW4gZWluZW0gUmF1bSBtZWhyIGFscyBlaW4gTGljaHR0eXAgZ2VzZXR6dCBpc3QsIGJlZGV1dGV0IGRhcywgCisgICAgbm9ybWFsZXJ3ZWlzZSwgZGFzcyBtZWhyZXJlIExpY2h0cXVlbGxlbiB2ZXJzY2hpZWRlbmVuIFR5cHMgaW0gUmF1bSAKKyAgICBzaW5kLgorCisgICAgRXMgZ2lidCB6dWRlbSBub2NoIExpY2h0dHlwZW4sIGRpZSB6dXNhbW1lbmdlc2V0enQgc2luZDoKKworICAgIExUX0RBWUxJR0hUICAgIFRhZ2VzbGljaHQgKFNvbm5lL0RpZmZ1c2UpCisgICAgTFRfTkFUVVJBTCAgICAgTmF0dWVybGljaGVzIExpY2h0IChEYXlsaWdodC9TdGVybmUvTW9uZCkKKyAgICBMVF9BUlRJRklDSUFMICBLdWVuc3RsaWNoZXMgTGljaHQgKE1hZ2llL0ZldWVyL0dsdWVoZW4pCisgICAgTFRfRklSRSAgICAgICAgRmV1ZXIgKEtlcnplbi9GYWNrZWxuL29mZmVuZXMgRmV1ZXIpCisKK0JFSVNQSUVMRToKKyAgICBFaW4gT2JqZWt0IHNvbGwgZWluIGdlaGVpbW5pc3ZvbGxlcyBHbHVlaGVuIHZvbiBzaWNoIGdlYmVuOgorICAgIAorICAgIG9iamVrdC0+U2V0UHJvcCggUF9MSUdIVF9UWVBFLCBMVF9HTE9XSU5HICkKKworICAgIFNvbGwgZWluIFJhdW0gYmVzY2hyaWViZW4gd2VyZGVuLCBkZXIgZHVyY2ggU3Rlcm5lbmxpY2h0IGVyaGVsbHQgaXN0LAorICAgIGluIGRlbSBhYmVyIHp1c2FldHpsaWNoIG5vY2ggZWluIExhZ2VyZmV1ZXIgYnJlbm50LCBzaWVodCBkaWUgU3ludGF4CisgICAgZm9sZ2VuZGVybWFzc2VuIGF1czoKKyAgICAKKyAgICByYXVtLT5TZXRQcm9wKCBQX0xJR0hUX1RZUEUsIExUX1NUQVJTfExUX09QRU5fRklSRSApOworCisgICAgRWluZXIgYnJlbm5lbmRlbiBIb3NlIGthbm4gZGVyIExpY2h0dHlwIGZ1ZXIgb2ZmZW5lcyBGZXVlciBtaXRnZWdlYmVuIAorICAgIHdlcmRlbi4gRXMgbXVzcyBqZWRvY2ggbmljaHQgendpbmdlbmQgZGVyIExpY2h0dHlwIGZ1ZXIgbWFnaXNjaGUKKyAgICBMaWNodHF1ZWxsZW4gYmVudXR6dCB3ZXJkZW4uIEVzIGlzdCBrbGFyLCBkYXNzIGVzIGlyZ2VuZHdhcyBtaXQgTWFnaWUKKyAgICB6dSB0dW4gaGF0LCB3ZW5uIGJyZW5uZW5kZSBTcGllbGVyIGR1cmNoIGRpZSBHZWdlbmQgbGF1ZmVuLCBvaG5lIHp1IAorICAgIHNjaHJlaWVuLiBQX0xJR0hUX1RZUEUgc29sbHRlIGplZG9jaCBkYXMgZmFzc2JhcmUgTGljaHQgYmVzY2hyZWliZW4uCisgICAgTFRfTUFHSUMgaXN0IGFsc28gZWhlciBlaW5lIE5vdGxvZXN1bmcgZnVlciBMaWNodCwgZGVzc2VuIFVyc2FjaGUgbWFuCisgICAgbmljaHQgZXJrbGFlcmVuIGthbm4uCisKKworQU5NRVJLVU5HOgorICAgIFBfTElHSFRfVFlQRSBkaWVudCBhdXNzY2hsaWVzc2xpY2ggZGVyIEJlc2NocmVpYnVuZyBkZXMgTGljaHRlcywgZGFzIAorICAgIHZvcmhlcnJzY2h0LiBFcyBpc3QgbmljaHQgdmVyYnVuZGVuIG1pdCBkZW0gTGljaHRzeXN0ZW0sIHVuZCBzb2xsIGVzCisgICAgYXVjaCBuaWNodCB3ZXJkZW4uCisKKyAgICBEaWUgRW1wZmluZGxpY2hrZWl0IGRlciBEdW5rZWxlbGZlbiBnZWdlbiBTb25uZW5saWNodCB3aXJkIHVlYmVyIGRpZXNlCisgICAgUHJvcGVydHkgZ2VzdGV1ZXJ0LiBTb2xsIGVpbiBSYXVtIG1pdCAoUF9JTkRPT1JTPT0wKSBzbyBkdW5rZWwgc2VpbiwgZGFzcworICAgIHNpZSBuaWNodCBpbiBHZWZhaHIgc2luZCwgc29sbHRlbiBuaWNodCBMVF9NSVNDIG9kZXIgTFRfU1VOIGdlc2V0enQKKyAgICBzZWluLgorCitTSUVIRSBBVUNIOgorICAgIENoZWNrTGlnaHRUeXBlLCAvc3RkL3RoaW5nL2Rlc2NyaXB0aW9uLmgsIG9wZXJhdG9ycwpkaWZmIC0tZ2l0IGEvZG9jL3Byb3BzL1BfTElRVUlEIGIvZG9jL3Byb3BzL1BfTElRVUlECm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjE2MzFhOGUKLS0tIC9kZXYvbnVsbAorKysgYi9kb2MvcHJvcHMvUF9MSVFVSUQKQEAgLTAsMCArMSw4IEBACitOQU1FOgorICAgIFBfTElRVUlEICAgICAgICAgICAgICAgICAgICAgICJ3X21heF93YXNzZXJmdWVsbG1lbmdlIiAgICAgIAorCitERUZJTklFUlQgSU46CisgICAgL3N5cy9maXNoaW5nLmgKKworQkVTQ0hSRUlCVU5HOgorICAgICoqKiBLRUlORSBCRVNDSFJFSUJVTkcgVk9SSEFOREVOICoqKgpkaWZmIC0tZ2l0IGEvZG9jL3Byb3BzL1BfTE9DQUxDTURTIGIvZG9jL3Byb3BzL1BfTE9DQUxDTURTCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjVhN2I1MTUKLS0tIC9kZXYvbnVsbAorKysgYi9kb2MvcHJvcHMvUF9MT0NBTENNRFMKQEAgLTAsMCArMSwxMiBAQAorTkFNRToKKyAgICBQX0xPQ0FMQ01EUyAgICAgICAgICAgICAgICAgICAibG9jYWxjbWRzIiAgICAgICAgICAgICAgICAgICAKKworREVGSU5JRVJUIElOOgorICAgIC9zeXMvcHJvcGVydGllcy5oCisKK0JFU0NIUkVJQlVORzoKKyAgICBFaW4gQXJyYXkgdm9uIEFycmF5cyBhbGxlciBCZWZlaGxlIGRpZSBpbSBTcGllbGVyIHNlbGJzdCBkZWZpbmllcnQgc2luZC4KKyAgICAoeyAoeyAiYmVmZWhsIiwgImZ1bmt0aW9uIiwgZmxhZywgd2l6bGV2ZWwgfSkgfSkKKyAgICBXZW5uIGZsYWcgZ2VzZXR6dCBpc3Qgd2VyZGVuIG51ciBkaWUgZXJzdGVuIFplaWNoZW4gZGllIGF1Y2ggaW4gQmVmZWhsCisgICAgYW5nZWdlYmVuIHNpbmQgbWl0IGRlbSBWZXJiIHVlYmVycHJ1ZWZ0LiBTaWVoZSBhdWNoCisgICAgYWRkX2FjdGlvbigiZnVua3Rpb24iLCAiYmVmZWhsIiwgMSkgdW5kIEFkZENtZCgiYmVmZWhsIiwgImZ1bmt0aW9uIiwgMSkuCmRpZmYgLS1naXQgYS9kb2MvcHJvcHMvUF9MT0NBVElPTiBiL2RvYy9wcm9wcy9QX0xPQ0FUSU9OCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjk3MzQ0ZDgKLS0tIC9kZXYvbnVsbAorKysgYi9kb2MvcHJvcHMvUF9MT0NBVElPTgpAQCAtMCwwICsxLDE5IEBACitOQU1FOgorICAgIFBfTE9DQVRJT04gICAgICAgICAgICAgICAgICAgImxvY2F0aW9uIgorCitERUZJTklFUlQgSU46CisgICAgL3N5cy9wbGF5ZXIvYmFzZS5oCisKK0JFU0NIUkVJQlVORzoKKyAgICBIaWVyIGthbm4gZGVyIFNwaWVsZXIgbWl0IGRlbSBCZWZlaGwgIm9ydCIgZGVuIE9ydCBzZXR6ZW4sCisgICAgdm9uIGRlbSBlciBrb21tdCBiencuIHp1IGtvbW1lbiBnbGF1YnQgOykKKyAgICBVbSB3aWVkZXIgZGVuIGF1dG9tYXRpc2NoIGVybWl0dGVsdGVuIE9ydCBhbnp1emVpZ2VuLCBpc3QKKyAgICBQX0xPQ0FUSU9OIGF1ZiAwIHp1IHNldHplbi4KKyAgICAKK1NJRUhFIEFVQ0g6CisgICAgb3J0CisKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KK0xhc3QgbW9kaWZpZWQ6IFNhdCBKdWwgMDEgMjM6MTY6MDAgMjAwMCBieSBNdXBmZWwKKyAgICAKKyAgICAKZGlmZiAtLWdpdCBhL2RvYy9wcm9wcy9QX0xPR19JTkZPIGIvZG9jL3Byb3BzL1BfTE9HX0lORk8KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYjZiZDhkYwotLS0gL2Rldi9udWxsCisrKyBiL2RvYy9wcm9wcy9QX0xPR19JTkZPCkBAIC0wLDAgKzEsMzIgQEAKK05BTUU6CisgICAgUF9MT0dfSU5GTyAgICAgICAgICAgICAgICAgICAgImxvZ19pbmZvIiAgICAgICAgICAgICAgICAgICAgCisKK0RFRklOSUVSVCBJTjoKKyAgICAvc3lzL3Byb3BlcnRpZXMuaAorCitCRVNDSFJFSUJVTkc6CisgICAgIFdlbm4gZGllc2UgUHJvcGVydHkgZ2VzZXR6dCBpc3Qgd2lyZCBqZWRlIEZyYWdlLCBkaWUgZWluCisgICAgIE1vbnN0ZXIgbmljaHQgYmVhbnR3b3J0ZW4ga2FubiwgaW0gUmVwb3J0LUZpbGUgZGVzCisgICAgIHp1c3RhZW5kaWdlbiBNYWdpZXJzIGdlbG9nZ3QuCisKKyAgICAgRXMgaXN0IGplZG9jaCBhdWNoIG1vZWdsaWNoLCBkaXJla3QgZWluZW4gRmlsZW5hbWVuIGFuenVnZWJlbi4KKyAgICAgQmVpIGRpZXNlbiB3aXJkIGRhbm4gamVkb2NoIGF1dG9tYXRpc2NoIGVpbiAvbG9nLyB2b3JuZSBhbmdlaGFlbmd0LgorCitCRUlTUElFTEU6CisgICAgIFNldFByb3AoUF9MT0dfSU5GTywxKTsgICAgICAgICAgIC8vIEFsbGUgZmVobGVuZGVuIEluZm9zIGRpZXNlcworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBNb25zdGVycyB3ZXJkZW4gaW4gZGFzIFJlcG9ydC0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRmlsZSB1bnRlciAvbG9nL3JlcG9ydC8gZ2Vsb2d0LgorCisgICAgIFNldFByb3AoUF9MT0dfSU5GTywidGlsbHkvb3BhIik7IC8vIEFsbGUgZmVobGVuZGVuIEluZm9zIGRpZXNlcworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBNb25zdGVycyB3ZXJkZW4gaW4gZGFzIEZpbGUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbW9uc3RlciB1bnRlciAvbG9nL3RpbGx5LyBnZS0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbG9ndC4KK0JFTUVSS1VOR0VOOgorICAgICBCZWkgbmFjaHRyYWVnbGljaCBhbmdlc2NobG9zc2VuZW4gTW9uc3Rlcm4gZW1wZmllaGx0IHNpY2ggVmFyaWFudGUgCisgICAgIDIgZGVyIEJlaXNwaWVsZS4gRWluIG11ZWhzYW1lcyBTdWNoZW4gKHVuZCBMb2VzY2hlbikgZGVyIGZlaGxlbmRlbiAKKyAgICAgSW5mb3MgZGVzIE1vbnN0ZXJzIGltIFJlcG9ydC1GaWxlIGVydWVicmlndCBzaWNoIGRhbm4gbmFlbWxpY2guCisKK1NJRUhFIEFVQ0g6CisgICAgIFBfTE9HX0ZJTEUsIHdyaXRlX2ZpbGUoKSwgbG9nX2ZpbGUoKSwgQWRkSW5mbworCitMZXR6dGUgQWVuZGVydW5nOiAxMy4wOS4wNCBUaWxseUBNb3JnZW5HcmF1ZW4KZGlmZiAtLWdpdCBhL2RvYy9wcm9wcy9QX0xPTkcgYi9kb2MvcHJvcHMvUF9MT05HCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjA0YTM2NTkKLS0tIC9kZXYvbnVsbAorKysgYi9kb2MvcHJvcHMvUF9MT05HCkBAIC0wLDAgKzEsMjkgQEAKK1BfTE9ORworTkFNRToKKyAgICAgUF9MT05HCQkJCQkibG9uZyIKKworREVGSU5JRVJUIElOOgorICAgICA8dGhpbmcvZGVzY3JpcHRpb24uaD4KKworQkVTQ0hSRUlCVU5HOgorICAgICBEaWUgTGFuZ2Jlc2NocmVpYnVuZyBkZXMgT2JqZWt0ZXMgYWxzIFN0cmluZyBvZGVyIENsb3N1cmUgKGRpZXNlIG11c3MKKyAgICAgZWluZW4gU3RyaW5nIHp1cnVlY2tnZWJlbikuIERpZSBMYW5nYmVzY2hyZWlidW5nIHdpcmQgYmVpbSBVbnRlcnN1Y2hlbgorICAgICBkZXMgT2JqZWt0ZXMgYXVzZ2VnZWJlbi4gU2llIHNvbGx0ZSB1bWdlYnJvY2hlbiBzZWluLgorCisgICAgIERpZXNlIFByb3BlcnR5IGJlc3RpbW10IGRpZSBBbnNpY2h0IGRlcyBPYmpla3RlcyB2b24gYXVzc2VuLiBGdWVyIGRpZQorICAgICBJbm5lbihsYW5nKWFuc2ljaHQgdm9uIFJhZXVtZW4gbXVzcyBtYW4gUF9JTlRfTE9ORyBiZW51dHplbi4KKworQkVNRVJLVU5HRU46CisgICAgIC0gbG9uZygpICgidW50ZXJzdWNoZSIpIGZpbHRlcnQgUF9MT05HIGR1cmNoIHByb2Nlc3Nfc3RyaW5nKCkKKyAgICAgICAtPiBkYWhlciBzaW5kIENsb3N1cmVzIG1vZWdsaWNoCisKK0JFSVNQSUVMRToKKworICAgICBTZXRQcm9wKFBfTE9ORywgIkRpZXNlIEF4dCBpc3QgZWluZSBmdXJjaHRiYXJlIFdhZmZlIVxuIik7CisKK1NJRUhFIEFVQ0g6CisgICAgIEFlaG5saWNoZXM6CVBfU0hPUlQsIGxvbmcoKQorICAgICBTb25zdGlnZXM6CQlQX0lOVF9MT05HLCBwcm9jZXNzX3N0cmluZygpLCBicmVha19zdHJpbmcoKQorCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCitMYXN0IG1vZGlmaWVkOiBTdW4gTWF5IDE5IDIwOjEwOjE4IDE5OTYgYnkgV2FyZ29uCmRpZmYgLS1naXQgYS9kb2MvcHJvcHMvUF9MT05HX0VNUFRZIGIvZG9jL3Byb3BzL1BfTE9OR19FTVBUWQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4xYTljY2UyCi0tLSAvZGV2L251bGwKKysrIGIvZG9jL3Byb3BzL1BfTE9OR19FTVBUWQpAQCAtMCwwICsxLDggQEAKK05BTUU6CisgICAgUF9MT05HX0VNUFRZICAgICAgICAgICAgICAgICAgIndfbG9uZ2Rlc2NfZW1wdHkiICAgICAgICAgICAgCisKK0RFRklOSUVSVCBJTjoKKyAgICAvc3lzL2Zpc2hpbmcuaAorCitCRVNDSFJFSUJVTkc6CisgICAgKioqIEtFSU5FIEJFU0NIUkVJQlVORyBWT1JIQU5ERU4gKioqCmRpZmYgLS1naXQgYS9kb2MvcHJvcHMvUF9MT05HX0ZVTEwgYi9kb2MvcHJvcHMvUF9MT05HX0ZVTEwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uM2I5OTdmNgotLS0gL2Rldi9udWxsCisrKyBiL2RvYy9wcm9wcy9QX0xPTkdfRlVMTApAQCAtMCwwICsxLDggQEAKK05BTUU6CisgICAgUF9MT05HX0ZVTEwgICAgICAgICAgICAgICAgICAgIndfbG9uZ2Rlc2NfZnVsbCIgICAgICAgICAgICAgCisKK0RFRklOSUVSVCBJTjoKKyAgICAvc3lzL2Zpc2hpbmcuaAorCitCRVNDSFJFSUJVTkc6CisgICAgKioqIEtFSU5FIEJFU0NIUkVJQlVORyBWT1JIQU5ERU4gKioqCmRpZmYgLS1naXQgYS9kb2MvcHJvcHMvUF9NQUdJQyBiL2RvYy9wcm9wcy9QX01BR0lDCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmIzYTBiYjcKLS0tIC9kZXYvbnVsbAorKysgYi9kb2MvcHJvcHMvUF9NQUdJQwpAQCAtMCwwICsxLDggQEAKK05BTUU6CisgICAgUF9NQUdJQyAgICAgICAgICAgICAgICAgICAgICAgIm1hZ2ljIiAgICAgICAgICAgICAgICAgICAgICAgCisKK0RFRklOSUVSVCBJTjoKKyAgICAvc3lzL3Byb3BlcnRpZXMuaAorCitCRVNDSFJFSUJVTkc6CisgICAgIERpZXNlcyBPYmpla3QgaXN0IG1hZ2lzY2guCmRpZmYgLS1naXQgYS9kb2MvcHJvcHMvUF9NQUdJQ19SRVNJU1RBTkNFX09GRlNFVCBiL2RvYy9wcm9wcy9QX01BR0lDX1JFU0lTVEFOQ0VfT0ZGU0VUCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmU2MTIwYTgKLS0tIC9kZXYvbnVsbAorKysgYi9kb2MvcHJvcHMvUF9NQUdJQ19SRVNJU1RBTkNFX09GRlNFVApAQCAtMCwwICsxLDMzIEBACitOQU1FOgorICAgICBQX01BR0lDX1JFU0lTVEFOQ0VfT0ZGU0VUICAgICAgICAgICAgICAgICAgICAgIm1hZ19yZXNfb2Zmc2V0IiAgICAgICAgICAgICAgICAgICAgIAorCitERUZJTklFUlQgSU46CisgICAgIC9zeXMvbmV3X3NraWxscy5oCisKK0JFU0NIUkVJQlVORzoKKyAgICAgTWFwcGluZyBtaXQgZ2FuenphaGxpZ2VuIFByb3plbnR3ZXJ0ZW4gaW4gMC4wMSUtU2Nocml0dGVuCisgICAgICgwLTEwMDAwKSB6dXIgUmVzaXN0ZW56L0VtcGZpbmRsaWNoa2VpdCBnZWdlbiBiZXN0aW1tdGUKKyAgICAgTWFnaWVrbGFzc2VuLgorCisgICAgIERpZSBQcm9wZXJ0eSB3aXJkIGluIGRlciBNZXRob2RlIFNwZWxsRGVmZW5kKCkgYXVzZ2V3ZXJ0ZXQgdW5kCisgICAgIGZ1ZXIgZWluZW4gYXVmIGRlbiBOUEMvU3BpZWxlciBnZXNwcm9jaGVuZW4gU3BlbGwgd2VyZGVuIGRpZQorICAgICBXZXJ0ZSBmdWVyIGFsbCBkZXNzZW4gTWFnaWVrbGFzc2VuIGF1ZmFkZGllcnQuIERhaGVyIHNpbmQgYXVjaAorICAgICBuZWdhdGl2ZSBXZXJ0ZSBmdWVyIGVpbnplbG5lIE1hZ2lla2xhc3NlbiBzaW5udm9sbC4KKworICAgICBQX01BR0lDX1JFU0lTVEFOQ0VfT0ZGU0VUIHVuZCBTcGVsbERlZmVuZCB3ZXJkZW4gdm9uIGRlbiBTcGVsbGJvb2tzCisgICAgIGF1c2dld2VydGV0LiBEZXIgRWluZmx1c3MgaXN0IGRhaGVyIGFiaORuZ2lnIHZvbSBTcGVsbGJvb2suCisKK0JFSVNQSUVMRToKKyAgICAgLy8gR29ibGlucworICAgICBTZXRQcm9wKFBfTUFHSUNfUkVTSVNUQU5DRV9PRkZTRVQsCisgICAgICAgICAgICAgICAoW01UX0FOR1JJRkY6NjAwLCAgICAgICAgIC8vIDYlIFJlc2lzdGVueiBnZWdlbiBBbmdyaWZmCisJICAgICAgICAgTVRfSUxMVVNJT046NTAwLCAgICAgICAgLy8gNiUgUmVzaXN0ZW56IGdlZ2VuIElsbHVzaW9uZW4KKyAgICAgICAgICAgICAgICAgTVRfVkVSV0FORExVTkc6LTMwMCwgICAgLy8gMyUgRW1wZmluZGxpY2hrZWl0CisJCSBNVF9IRUxMU0lDSFQ6LTc1MCwgICAgICAvLyA3LjUlIEVtcGZpbmRsaWNoa2VpdAorCQkgTVRfQkVIRVJSU0NIVU5HOjI1MF0pKTsgLy8gMi41JSBSZXNpc3RlbnoKKworU0lFSEUgQVVDSDoKKyAgICAgVmVyd2FuZHQ6ICAgICBTcGVsbERlZmVuZAorICAgICBBZWhubGljaDogICAgIFBfTk9NQUdJQworCisyOS5EZXogMjAwNyBHbG9pbnNvbgpkaWZmIC0tZ2l0IGEvZG9jL3Byb3BzL1BfTUFJTEFERFIgYi9kb2MvcHJvcHMvUF9NQUlMQUREUgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5lMWI4NDlkCi0tLSAvZGV2L251bGwKKysrIGIvZG9jL3Byb3BzL1BfTUFJTEFERFIKQEAgLTAsMCArMSw4IEBACitOQU1FOgorICAgIFBfTUFJTEFERFIgICAgICAgICAgICAgICAgICAgICJtYWlsYWRkciIgICAgICAgICAgICAgICAgICAgIAorCitERUZJTklFUlQgSU46CisgICAgL3N5cy9wbGF5ZXIvYmFzZS5oCisKK0JFU0NIUkVJQlVORzoKKyAgICAgRU1haWxhZHJlc3NlIGRlcyBTcGllbGVycy4KZGlmZiAtLWdpdCBhL2RvYy9wcm9wcy9QX01BUF9SRVNUUklDVElPTlMgYi9kb2MvcHJvcHMvUF9NQVBfUkVTVFJJQ1RJT05TCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmZkNDIyYzAKLS0tIC9kZXYvbnVsbAorKysgYi9kb2MvcHJvcHMvUF9NQVBfUkVTVFJJQ1RJT05TCkBAIC0wLDAgKzEsMzkgQEAKK05BTUU6CisgICAgUF9NQVBfUkVTVFJJQ1RJT05TICAgICAgICAgICAgICAgICAgICAgICJsaWJfcF9tYXBfcmVzdHJpY3Rpb25zIgorCitERUZJTklFUlQgSU46CisgICAgL3N5cy9yb29tcy5oCisKK0JFU0NIUkVJQlVORzoKKyAgICAgTWl0IGRpZXNlciBQcm9wZXJ0eSBsYWVzc3Qgc2ljaCBiZWVpbmZsdXNzZW4sIHdlbGNoZSBJbmZvcm1hdGlvbmVuIHVlYmVyCisgICAgIGRlbiBSYXVtIGRhcyBNb3JnZW5ncmF1ZW4gZGVtIENsaWVudCB6dWtvbW1lbiBsYWVzc3QgKHp1ciBaZWl0IG51ciB2aWEKKyAgICAgR01DUCwgYWJlciBlcyBtYWcgaXJnZW5kd2FubiBhdWNoIGFuZGVyZSBXZWdlIGdlYmVuKS4KKyAgICAgQmVpc3BpZWxzd2Vpc2Ugc29sbGVuIHZpZWxsZWljaHQgaW4gZWluZW0gTGFieXJpbnRoIGtlaW5lIGVpbmRldXRpZ2VuCisgICAgIFJhdW0tSURzIHVlYmVybWl0dGVsdCB3ZXJkZW4uCisKKyAgICAgQWxzIFdlcnRlIGR1ZXJmZW4gYWxsZSBNUl8tS29uc3RhbnRlbiBhdXMgPHJvb21zLmg+IHZlcndlbmRldCB3ZXJkZW4uCisgICAgIERpZXNlIGR1ZXJmZW4gYXVjaCB2ZXItT0RFUi10IHdlcmRlbiwgd2VubiBtZWhyIGFscyBlaW5lIGRhdm9uIGdlbHRlbgorICAgICBzb2xsLgorCisgICAgIE1vZWdsaWNoZSBXZXJ0ZToKKyAgICAgICBNUl9OT1VJRCAtIHZlcmhpbmRlcnQsIGRhc3MgZGllIGVpbmRldXRpZ2UgUmF1bS1JRCB1ZWJlcnRyYWdlbiB3aXJkLgorICAgICAgIE1SX05PSU5GTyAtIHZlcmhpbmRlcnQsIGRhc3MgdWViZXJoYXVwdCBpcmdlbmRldHdhcyBhbiBkZW4gQ2xpZW50CisgICAgICAgICAgICAgICAgICAgdWViZXJtaXR0ZWx0IHdpcmQuIERhbWl0IGtyaWVndCBlciBnZ2YuIGF1Y2ggbmljaHQgbWl0LAorICAgICAgICAgICAgICAgICAgIGRhc3MgZXIgUmF1bSBnZXdlY2hzZWx0IHd1cmRlLiBJc3QgZnVlciBTZXF1ZW56cmFldW1lCisgICAgICAgICAgICAgICAgICAgZ2VkYWNodC4gQml0dGUgU0VIUiBzcGFyc2FtIGVpbnNldHplbi4KKworICAgICBEaWUgVmVyd2VuZHVuZyBkaWVzZXIgUHJvcGVydHkgc29sbHRlIGRlciBBdXNuYWhtZWZhbGwgc2VpbiEKKworQkVJU1BJRUw6CisgICAgIChpbiBlaW5lbSBSYXVtKQorICAgICBTZXRQcm9wKFBfTUFQX1JFU1RSSUNUSU9OUywgTVJfTk9VSUQpOworCisgICAgIE51biBiZWtvbW10IGRlciBDbGllbnQgendhciBkaWUgS3VyemJlc2NocmVpYnVuZyBkZXMgUmF1bXMsIGRpZSBSZWdpb24KKyAgICAgdW5kIGRpZSBzaWNodGJhcmVuIEF1c2dhZW5nZSwgYWJlciBrZWluZSBVSUQgbWVociB1ZWJlcm1pdHRlbHQuCisKK1NJRUhFIEFVQ0g6CisgICAgIGdtY3AKKworLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorMjMuMDIuMjAxMywgWmVzc3RyYQorCmRpZmYgLS1naXQgYS9kb2MvcHJvcHMvUF9NQVJSSUVEIGIvZG9jL3Byb3BzL1BfTUFSUklFRApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi43Njg0MDRlCi0tLSAvZGV2L251bGwKKysrIGIvZG9jL3Byb3BzL1BfTUFSUklFRApAQCAtMCwwICsxLDEyIEBACitOQU1FOgorICAgIFBfTUFSUklFRCAgICAgICAgICAgICAgICAgICAgICJtYXJyaWVkIiAgICAgICAgICAgICAgICAgICAgIAorCitERUZJTklFUlQgSU46CisgICAgL3N5cy9wcm9wZXJ0aWVzLmgKKworQkVTQ0hSRUlCVU5HOgorICAgICBFbnRoYWVsdCBlaW5lbiBTdHJpbmcgbWl0IGRlciB1aWQgZGVzIFBhcnRuZXJzCisgICAgIChzb2Zlcm4gdm9yaGFuZGVuKQorCitTSUVIRSBBVUNIOgorICAgICBzY2hlaWR1bmcKZGlmZiAtLWdpdCBhL2RvYy9wcm9wcy9QX01BVEVSSUFMIGIvZG9jL3Byb3BzL1BfTUFURVJJQUwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNWJlMWJlZgotLS0gL2Rldi9udWxsCisrKyBiL2RvYy9wcm9wcy9QX01BVEVSSUFMCkBAIC0wLDAgKzEsNzkgQEAKK1BfTUFURVJJQUwKK05BTUU6CisgICAgIFBfTUFURVJJQUwJCQkJCSJtYXRlcmlhbCIKKworREVGSU5JRVJUIElOOgorICAgICA8dGhpbmcvbWF0ZXJpYWwuaD4KKworQkVTQ0hSRUlCVU5HOgorICAgICBNYXBwaW5nIG1pdCBwcm96ZW50dWFsZW4gQW50ZWlsZW4gdm9uIE1hdGVyaWFsaWVuLCBhdXMgZGVuZW4gZWluIE9iamVrdCAKKyAgICAgYmVzdGVodC4KKworQkVNRVJLVU5HRU46CisgICAgIEJlaSBTZXRQcm9wIGthbm4gbWFuIHp1IFZlcmVpbmZhY2h1bmcgYXVjaCBlaW4gZWluemVsbmVzIE1hdGVyaWFsIG9kZXIgCisgICAgIGVpbiBBcnJheSBhdXMgTWF0ZXJpYWxpZW4gYW5nZWJlbi4gRGllIEFudGVpbGUgd2VyZGVuIGRhbm4gCisgICAgIGdsZWljaG1hZXNzaWcgdmVydGVpbHQuCisKK0JFSVNQSUVMRToKKyAgICAgLy8gMTAwJSBFaXMKKyAgICAgU2V0UHJvcChQX01BVEVSSUFMLCBNQVRfSUNFKTsKKyAgICAgLy8gUXVlcnlQcm9wKFBfTUFURVJJQUwpIC0+IChbTUFUX0lDRToxMDBdKQorCisgICAgIC8vIDUwJSBFaXMsIDUwJSBNaXNjLUhvbHoKKyAgICAgU2V0UHJvcChQX01BVEVSSUFMLCAoeyBNQVRfSUNFLCBNQVRfTUlTQ19XT09EIH0pKTsKKyAgICAgLy8gUXVlcnlQcm9wKFBfTUFURVJJQUwpIC0+IChbTUFUX0lDRTo1MCwgTUFUX01JU0NfV09PRDogNTBdKQorCisgICAgIC8vIDYwJSBFaXMsIDQwJSBNaXNjLUhvbHoKKyAgICAgU2V0UHJvcChQX01BVEVSSUFMLCAoWyBNQVRfSUNFOiA2MCwgTUFUX01JU0NfV09PRDogNDAgXSkpOworCisgICAgIC8vIDEwMCUgUGFwaWVyCisgICAgIFNldFByb3AoUF9NQVRFUklBTCwgTUFUX1BBUEVSKTsKKyAgICAgLy8gUXVlcnlQcm9wKFBfTUFURVJJQUwpIC0+IChbTUFUX1BBUEVSOjEwMF0pCisKKyAgICAgLy8gNTAlIFNpbGJlciwgNTAlIEdvbGQKKyAgICAgU2V0UHJvcChQX01BVEVSSUFMLCAoe01BVF9TSUxWRVIsIE1BVF9HT0xEfSkpCisgICAgIC8vIFF1ZXJ5UHJvcChQX01BVEVSSUFMKSAtPiAoW01BVF9TSUxWRVI6NTAsTUFUX0dPTEQ6NTBdKQorCisgICAgIC8vIGVpbiB3ZWlzZXIgU2NobWllZCwgZGVyIHdhcyBkYXJhdXMgbWFjaHQ6CisgICAgIGludCBpOworICAgICBzdHJpbmcgKm1hdCwgbW5hbWUsIG1ncm91cDsKKyAgICAgbWF0PW1faW5kaWNlcyhvYi0+UXVlcnlQcm9wKFBfTUFURVJJQUwpKTsKKyAgICAgaT1zaXplb2YobWF0KTsKKworICAgICB3cml0ZSgiRGVyIFNjaG1pZWQgc2FndDogIitvYi0+TmFtZShXRVIpKyIgYmVzdGVodCBhdXMgLi4uXG4iKTsKKyAgICAgd2hpbGUoaS0tKSB7CisgICAgICAvLyBkZW4gTmFtZW4gZXJrZW5uZW4vYXVzc3ByZWNoZW46CisgICAgICAvLyBNYXRlcmlhbGllbiB3ZXJkZW4gYWxsZ2VtZWluIGdhbnogc2NobGVjaHQgZXJrYW5udCAoenUgNSUpLCBhYmVyCisgICAgICAvLyBhbGxlcyBhdXMgTWV0YWxsIHdpcmQgenUgKzEwMCUgZ3V0IGVya2FubnQgLi4uCisgICAgICBtbmFtZT1NQVRFUklBTERCLT5NYXRlcmlhbE5hbWUobWF0W2ldLCBXRVIsCisJICAgICAoezUsIChbTUFURVJJQUxfU1lNTUVUUklDX1JFQ09HTklaQUJJTElUWToKKwkJCSh7TUFUR1JPVVBfTUVUQUwsIDEwMH0pXSl9KSk7CisKKyAgICAgIC8vIHVuZCBudXIgTWV0YWxsZSBhbmFseXNpZXJlbiAuLi4KKyAgICAgIGlmKE1BVEVSSUFMREItPk1hdGVyaWFsR3JvdXAoKFttYXRbaV06MTAwXSksTUFUR1JPVVBfTUVUQUwpPj0xMDApIHsKKyAgICAgICBpbnQgajsKKyAgICAgICBzdHJpbmcgKm1ncjsKKyAgICAgICBtZ3I9TUFURVJJQUxEQi0+R2V0TWF0TWVtYmVyc2hpcChtYXRbaV0pOworICAgICAgIGo9c2l6ZW9mKG1ncik7CisgICAgICAgbWdyb3VwPSIgZ2Vob2VydCB6dSAiOworICAgICAgIHdoaWxlKGotLSkgeworICAgICAgICBtZ3JvdXArPU1BVEVSSUFMREItPkdyb3VwTmFtZShtZ3Jbal0pOworICAgICAgICBpZihqPjApIG1ncm91cCs9IiwgIjsKKyAgICAgICB9CisgICAgICB9IGVsc2UgbWdyb3VwPSIga2VubmUgaWNoIG5pY2h0IjsKKyAgICAgIHByaW50ZigiJS0xMi4xMnM6ICVzXG4iLG1uYW1lLCBtZ3JvdXApOworICAgICB9CisKKworU0lFSEUgQVVDSDoKKyAgICAgS29uemVwdGU6CSAgbWF0ZXJpYWwsIG1hdGVyaWFsZXJrZW5udW5nCisgICAgIEdydW5kbGVnZW5kOiAvc3lzL3RoaW5nL21hdGVyaWFsLmgKKyAgICAgTWV0aG9kZW46ICAgIFF1ZXJ5TWF0ZXJpYWwoKSwgUXVlcnlNYXRlcmlhbEdyb3VwKCksIE1hdGVyaWFsTGlzdCgpLAorICAgICBMaXN0ZW46CSAgQWxsTWF0ZXJpYWxzKCksIEFsbEdyb3VwcygpLCBEdW1wKCkKKwkJICBtYXRlcmlhbGxpc3RlLCBtYXRlcmlhbGdydXBwZW4KKyAgICAgTWFzdGVyOgkgIEFkZE1hdGVyaWFsKCksIENvbnZNYXRlcmlhbExpc3QoKSwgTWF0ZXJpYWxHcm91cCgpLAorCQkgIEdyb3VwTmFtZSgpLCBNYXRlcmlhbE5hbWUoKSwKKwkJICBHZXRHcm91cE1lbWJlcnMoKSwgR2V0TWF0TWVtYmVyc2hpcCgpCisgICAgIFNvbnN0aWdlczoJICBQX01BVEVSSUFMX0tOT1dMRURHRQorCis3LiBNYWkgMjAwNCBHbG9pbnNvbgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2RvYy9wcm9wcy9QX01BVEVSSUFMX0tOT1dMRURHRSBiL2RvYy9wcm9wcy9QX01BVEVSSUFMX0tOT1dMRURHRQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5jOTU0MDgzCi0tLSAvZGV2L251bGwKKysrIGIvZG9jL3Byb3BzL1BfTUFURVJJQUxfS05PV0xFREdFCkBAIC0wLDAgKzEsMzkgQEAKK1BfTUFURVJJQUxfS05PV0xFREdFCitOQU1FOgorICAgICBQX01BVEVSSUFMX0tOT1dMRURHRQkJCQkibWF0ZXJpYWxfa25vd2xlZGdlIgorCitERUZJTklFUlQgSU46CisgICAgIDx0aGluZy9tYXRlcmlhbC5oPgorCitCRVNDSFJFSUJVTkc6CisgICAgIE1hcHBpbmcsIENsb3N1cmUgb2RlciBJbnRlZ2VyIG1pdCBSZWdlbG4genVyIE1hdGVyaWFsaWVuZXJrZW5udW5nLiBEaWUKKyAgICAgUmVnZWxuIHNpbmQgaW4gIm1hbiBtYXRlcmlhbGVya2VubnVuZyIgenUgbGVzZW4uCisKKyAgICAgRGllc2Ugd2VyZGVuIGJlaSBBbmdhYmUgZWluZXMgU3BpZWxlcm9iamVrdGVzIGluIE1hdGVyaWFsTGlzdCgpIG9kZXIKKyAgICAgTWF0ZXJpYWxOYW1lKCkgYW4gZGllc2VtIGFiZ2VmcmFndCB1bmQgaGF0IEVpbmZsdXNzIGRhcmF1Ziwgb2IgZWluCisgICAgIE1hdGVyaWFsIGdlbmF1LCBnZW5lcmVsbCBvZGVyIGdhciBuaWNodCBlcmthbm50IHdpcmQuCisKKyAgICAgSW4gZGVuIGVpbnplbG5lbiBSYXNzZW5zaGVsbHMgc2luZCBEZWZhdWx0d2VydGUgZGFmdWVyIGFuZ2VnZWJlbi4KKworCitCRUlTUElFTEU6CisgICAgIC8vIEVya2VubnVuZ3Nib251cyBhdWYgZGl2ZXJzZSBNYXRlcmlhbGdydXBwZW4gdW5kCisgICAgIC8vIEVya2VubnVuZ3Nib251cy8tbWFsdXMgYXVmIGJpb2xvZ2lzY2hlL25pY2h0YmlvbG9naXNjaGUgTWF0ZXJpYWxpZW4KKyAgICAgU2V0UHJvcChQX01BVEVSSUFMX0tOT1dMRURHRSwKKwkoW01BVEdST1VQX1dPT0Q6MjAsCisJICBNQVRHUk9VUF9NRVRBTDoyMCwKKwkgIE1BVEdST1VQX0VMRU1FTlRBTDoyMCwKKwkgIE1BVEdST1VQX0NMT1RIOjIwLAorCSAgTUFURVJJQUxfU1lNTUVUUklDX1JFQ09HTklaQUJJTElUWTogKHtNQVRHUk9VUF9CSU8sNX0pXSkpOworCitTSUVIRSBBVUNIOgorICAgICBLb256ZXB0ZToJICBtYXRlcmlhbCwgbWF0ZXJpYWxlcmtlbm51bmcKKyAgICAgR3J1bmRsZWdlbmQ6IFBfTUFURVJJQUwsIC9zeXMvdGhpbmcvbWF0ZXJpYWwuaAorICAgICBNZXRob2RlbjogICAgUXVlcnlNYXRlcmlhbCgpLCBRdWVyeU1hdGVyaWFsR3JvdXAoKSwgTWF0ZXJpYWxMaXN0KCksCisgICAgIExpc3RlbjoJICBBbGxNYXRlcmlhbHMoKSwgQWxsR3JvdXBzKCksIER1bXAoKQorCQkgIG1hdGVyaWFsbGlzdGUsIG1hdGVyaWFsZ3J1cHBlbgorICAgICBNYXN0ZXI6CSAgQWRkTWF0ZXJpYWwoKSwgQ29udk1hdGVyaWFsTGlzdCgpLCBNYXRlcmlhbEdyb3VwKCksCisJCSAgR3JvdXBOYW1lKCksIE1hdGVyaWFsTmFtZSgpLAorCQkgIEdldEdyb3VwTWVtYmVycygpLCBHZXRNYXRNZW1iZXJzaGlwKCkKKworNy4gTWFpIDIwMDQgR2xvaW5zb24KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9kb2MvcHJvcHMvUF9NQVhfQUxDT0hPTCBiL2RvYy9wcm9wcy9QX01BWF9BTENPSE9MCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjEwYTY0YzMKLS0tIC9kZXYvbnVsbAorKysgYi9kb2MvcHJvcHMvUF9NQVhfQUxDT0hPTApAQCAtMCwwICsxLDIxIEBACitOQU1FOgorCVBfTUFYX0FMQ09IT0wJCQkibWF4X2FsY29ob2wiCisKK0RFRklOSUVSVCBJTjoKKwkvc3lzL2xpdmluZy9saWZlLmgKKworQkVTQ0hSRUlCVU5HOgorCU51bWVyaXNjaGVyIFdlcnQgZnVlciBkZW4gbWF4aW1hbGVuIEdyYWQgZGVyIEJldHJ1bmtlbmhlaXQgZWluZXMKKwlMZWJld2VzZW5zLgorCitBTk1FUktVTkdFTjoKKwlEZXIgV2VydCB2b24gUF9NQVhfQUxDT0hPTCBpc3QgYmVpIGRlbiBlaW56ZWxuZW4gUmFzc2VuIHZlcnNjaGllZGVuLAorCWViZW5zbyB3aWUgZGVyIGZ1ZXIgUF9BTENPSE9MX0RFTEFZLiBEaWUgZ2VuYXVlbiBXZXJ0ZSBzdGVoZW4gaW4gZGVuCisJUmFzc2VuLVNoZWxscyAoL3N0ZC9zaGVsbHMpLgorCitTSUVIRSBBVUNIOgorCVBfQUxDT0hPTCwgUF9BTENPSE9MX0RFTEFZLCBkcmlua19hbGNvaG9sLAorCVBfTUFYX0ZPT0QsIFBfTUFYX0RSSU5LCisKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KK0xhc3QgbW9kaWZpZWQ6IFR1ZSBEZWMgMTggMTI6MTY6MTAgMjAwMSBieSBQYXRyeW4KZGlmZiAtLWdpdCBhL2RvYy9wcm9wcy9QX01BWF9EUklOSyBiL2RvYy9wcm9wcy9QX01BWF9EUklOSwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi45NDBlZGRjCi0tLSAvZGV2L251bGwKKysrIGIvZG9jL3Byb3BzL1BfTUFYX0RSSU5LCkBAIC0wLDAgKzEsMjEgQEAKK05BTUU6CisJUF9NQVhfRFJJTksJCQkibWF4X2RyaW5rIgorCitERUZJTklFUlQgSU46CisJL3N5cy9saXZpbmcvbGlmZS5oCisKK0JFU0NIUkVJQlVORzoKKwlOdW1lcmlzY2hlciBXZXJ0IGZ1ZXIgZGllIG1heGltYWxlIFNhZXR0aWd1bmcgZWluZXMgTGViZXdlc2VucyBtaXQKKwlHZXRyYWVua2VuLgorCitBTk1FUktVTkdFTjoKKwlEZXIgV2VydCB2b24gUF9NQVhfRFJJTksgaXN0IGJlaSBkZW4gZWluemVsbmVuIFJhc3NlbiB2ZXJzY2hpZWRlbiwKKwllYmVuc28gd2llIGRlciBmdWVyIFBfRFJJTktfREVMQVkuIERpZSBnZW5hdWVuIFdlcnRlIHN0ZWhlbiBpbiBkZW4KKwlSYXNzZW4tU2hlbGxzICgvc3RkL3NoZWxscykuCisKK1NJRUhFIEFVQ0g6CisJUF9EUklOSywgUF9EUklOS19ERUxBWSwgZHJpbmtfc29mdCwKKwlQX01BWF9GT09ELCBQX01BWF9BTENPSE9MCisKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KK0xhc3QgbW9kaWZpZWQ6IFR1ZSBEZWMgMTggMTI6MTY6MTAgMjAwMSBieSBQYXRyeW4KZGlmZiAtLWdpdCBhL2RvYy9wcm9wcy9QX01BWF9GT09EIGIvZG9jL3Byb3BzL1BfTUFYX0ZPT0QKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNWY0OWNmZQotLS0gL2Rldi9udWxsCisrKyBiL2RvYy9wcm9wcy9QX01BWF9GT09ECkBAIC0wLDAgKzEsMjAgQEAKK05BTUU6CisJUF9NQVhfRk9PRAkJCSJtYXhfZm9vZCIKKworREVGSU5JRVJUIElOOgorCS9zeXMvbGl2aW5nL2xpZmUuaAorCitCRVNDSFJFSUJVTkc6CisJTnVtZXJpc2NoZXIgV2VydCBmdWVyIGRpZSBtYXhpbWFsZSBTYWV0dGlndW5nIGVpbmVzIExlYmV3ZXNlbnMuCisKK0FOTUVSS1VOR0VOOgorCURlciBXZXJ0IHZvbiBQX01BWF9GT09EIGlzdCBiZWkgZGVuIGVpbnplbG5lbiBSYXNzZW4gdmVyc2NoaWVkZW4sIAorCWViZW5zbyB3aWUgZGVyIGZ1ZXIgUF9GT09EX0RFTEFZLiBEaWUgZ2VuYXVlbiBXZXJ0ZSBzdGVoZW4gaW4gZGVuCisJUmFzc2VuLVNoZWxscyAoL3N0ZC9zaGVsbHMpLgorCitTSUVIRSBBVUNIOgorCVBfRk9PRCwgUF9GT09EX0RFTEFZLCBlYXRfZm9vZCwKKwlQX01BWF9EUklOSywgUF9NQVhfQUxDT0hPTAorCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCitMYXN0IG1vZGlmaWVkOiBUdWUgRGVjIDE4IDEyOjE2OjEwIDIwMDEgYnkgUGF0cnluCmRpZmYgLS1naXQgYS9kb2MvcHJvcHMvUF9NQVhfSEFORFMgYi9kb2MvcHJvcHMvUF9NQVhfSEFORFMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOTZiMWFlOAotLS0gL2Rldi9udWxsCisrKyBiL2RvYy9wcm9wcy9QX01BWF9IQU5EUwpAQCAtMCwwICsxLDI3IEBACitQX01BWF9IQU5EUworTkFNRToKKyAgICAgUF9NQVhfSEFORFMgICAgICAgICAgICAgICAgICAgIm1heF9oYW5kcyIKKworREVGSU5JRVJUIElOOgorICAgICAvc3lzL2xpdmluZy9jb21iYXQuaAorCitCRVNDSFJFSUJVTkc6CisgICAgIEFuemFobCBkZXIgSGFlbmRlLCBkaWUgZWluIFdlc2VuIGhhdC4KKworQkVNRVJLVU5HRU46CisgICAgIEFuIGRpZXNlciBQcm9wZXJ0aWUgc29sbHRlIGJlaSBTcGllbGVybiBudXIgaW0gUmFobWVuIGRlcgorICAgICBHaWxkZW4gJ2dlc3BpZWx0JyB3ZXJkZW4uCisKKyAgICAgRnVlciBNYWdpZXIsIGRpZSBpbiBpaHJlbiBOcGMgZ2VybmUgYWxsZSBQcm9wZXJ0aWVzIHNldHplbiwKKyAgICAgZ2lsdCBmb2xnZW5kZXM6CisKKyAgICAgICAgICAgICAgICAgIFNldHp0IGRpZXNlIFByb3BlcnRpZSBOSUUgYXVmIDAgIQorCisgICAgIE9obmUgSGFlbmRlIHdpcmQga2VpbiBOcGMgaXJnZW5kZWluZW4gU3BpZWxlciBhbmdyZWlmZW4ga29lbm5lbi4KKworU0lFSEUgQVVDSDoKKyAgICAgUF9IQU5EUywgUF9IQU5EU19VU0VEX0JZCisgICAgIFBfVVNFRF9IQU5EUywgUF9GUkVFX0hBTkRTCisgICAgIFVzZUhhbmRzLCBGcmVlSGFuZHMKKworMS5GZWIuMjAwNCBHbG9pbnNvbgpkaWZmIC0tZ2l0IGEvZG9jL3Byb3BzL1BfTUFYX0hQIGIvZG9jL3Byb3BzL1BfTUFYX0hQCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjEzYTg0YzQKLS0tIC9kZXYvbnVsbAorKysgYi9kb2MvcHJvcHMvUF9NQVhfSFAKQEAgLTAsMCArMSwxNCBAQAorTkFNRToKKyAgICBQX01BWF9IUCAgICAgICAgICAgICAgICAgICAgICAibWF4X2hwIgorCitERUZJTklFUlQgSU46CisgICAgL3N5cy9saXZpbmcvbGlmZS5oCisKK0JFU0NIUkVJQlVORzoKKyAgICAgTWF4aW1hbGUgQW56YWhsIGRlciBMZWJlbnNwdW5rdGUuCisKK1NJRUhFIEFVQ0g6CisgICAgIFByb3BzOglQX0hQCisgICAgIFZlcndhbmR0OglVcGRhdGVBdHRyaWJ1dGVzKCkKKworMjEuQXByaWwgMjAwNiBHbG9pbnNvbgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2RvYy9wcm9wcy9QX01BWF9PQkpFQ1RTIGIvZG9jL3Byb3BzL1BfTUFYX09CSkVDVFMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYTc2ZjBkMQotLS0gL2Rldi9udWxsCisrKyBiL2RvYy9wcm9wcy9QX01BWF9PQkpFQ1RTCkBAIC0wLDAgKzEsMjIgQEAKK05BTUU6CisgICAgUF9NQVhfT0JKRUNUUyAgICAgICAgICAgICAgICAgICJtYXhfb2JqZWN0cyIgICAgICAgICAgICAgICAgICAKKworREVGSU5JRVJUIElOOgorICAgIC9zeXMvY29udGFpbmVyLmgKKworQkVTQ0hSRUlCVU5HOgorICAgICBNYXhpbWFsZSBBbnphaGwgYW4gT2JqZWt0ZW4sIGRpZSBpbiBlaW5lbiBDb250YWluZXIgcGFzc2VuLgorICAgICBQX01BWF9PQkpFQ1RTIHNvbGx0ZSBpbSBOb3JtZmFsbCB6d2lzY2hlbiAwIC0gMTAwIGxpZWdlbi4KKworQkVNRVJLVU5HRU46CisgICAgIFNvbGwgZXMgc2ljaCB1bSBlaW5lbiBoZXJhdXNyYWdlbmRlbiBDb250YWluZXIgaGFuZGVsbiwgZGVyIHp1bQorICAgICBCZWlzcGllbCBkYXMgR2V3aWNodCB1bSBtZWhyIGFscyA1MCUgcmVkdXppZXJ0LCBzb2xsdGUgUF9NQVhfT0JKRUNUUworICAgICBlaW5lbiBrbGVpbmVyZW4gV2VydCBoYWJlbi4gRGFzIFZlcmhhZWx0bmlzIHZvbiBQX01BWF9XRUlHSFQsCisgICAgIFBfV0VJR0hUX1BFUkNFTlQgdW5kIGRpZXNlciBQcm9wZXJ0eSBzb2xsdGUgc3RpbW1lbi4KKworQkVJU1BJRUxFOgorICAgICBBbHMgQmVpc3BpZWwgc29sbHRlIG1hbiBzaWNoIGRhcyBQb3N0cGFrZXQgYW5zZWhlbiB1bmQgc2ljaCBhbiBkZXNzZW4KKyAgICAgV2VydGVuIG9yaWVudGllcmVuICgvcC9zZXJ2aWNlL2xvY28vb2JqL3BhcmNlbCkuCisKK1NJRUhFIEFVQ0g6CisgICAgIFBfTUFYX1dFSUdIVCwgUF9XRUlHSFRfUEVSQ0VOVCwgUF9MSUdIVF9UUkFOU1BBUkVOQ1ksIGNvbnRhaW5lcgpkaWZmIC0tZ2l0IGEvZG9jL3Byb3BzL1BfTUFYX1BBU1NFTkdFUlMgYi9kb2MvcHJvcHMvUF9NQVhfUEFTU0VOR0VSUwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5iMGJjNmE1Ci0tLSAvZGV2L251bGwKKysrIGIvZG9jL3Byb3BzL1BfTUFYX1BBU1NFTkdFUlMKQEAgLTAsMCArMSw5IEBACitOQU1FOgorICAgIFBfTUFYX1BBU1NFTkdFUlMgICAgICAgICAgICAgICJtYXhwYXNzIiAgICAgICAgICAgICAgICAgICAgIAorCitERUZJTklFUlQgSU46CisgICAgL3N5cy90cmFuc3BvcnQuaAorCitCRVNDSFJFSUJVTkc6CisgICAgIE51bWVyaXNjaGVyIFdlcnQgZnVlciBkaWUgbWF4aW1hbGUgQW56YWhsIHZvbiBXZXNlbiBpbiBkZW0gVHJhbnNwb3J0ZXIuCisgICAgIDAgYmVkZXV0ZXQgdW5iZXNjaGFlbmt0ZSBTcGllbGVyemFobC4KZGlmZiAtLWdpdCBhL2RvYy9wcm9wcy9QX01BWF9QT0lTT04gYi9kb2MvcHJvcHMvUF9NQVhfUE9JU09OCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjM1YjhlOWIKLS0tIC9kZXYvbnVsbAorKysgYi9kb2MvcHJvcHMvUF9NQVhfUE9JU09OCkBAIC0wLDAgKzEsOCBAQAorTkFNRToKKyAgICBQX01BWF9QT0lTT04gICAgICAgICAgICAgICAgICAibWF4X3BvaXNvbiIgICAgICAgICAgICAgICAgICAKKworREVGSU5JRVJUIElOOgorICAgIC9zeXMvcHJvcGVydGllcy5oCisKK0JFU0NIUkVJQlVORzoKKyAgICAgTWF4aW1hbGUgVmVyZ2lmdHVuZwpkaWZmIC0tZ2l0IGEvZG9jL3Byb3BzL1BfTUFYX1NQIGIvZG9jL3Byb3BzL1BfTUFYX1NQCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjMwN2FhZjUKLS0tIC9kZXYvbnVsbAorKysgYi9kb2MvcHJvcHMvUF9NQVhfU1AKQEAgLTAsMCArMSwxNCBAQAorTkFNRToKKyAgICBQX01BWF9TUCAgICAgICAgICAgICAgICAgICAgICAibWF4X3NwIgorCitERUZJTklFUlQgSU46CisgICAgL3N5cy9saXZpbmcvbGlmZS5oCisKK0JFU0NIUkVJQlVORzoKKyAgICAgTWF4aW1hbGUgQW56YWhsIGRlciBNYWdpZXB1bmt0ZS4KKworU0lFSEUgQVVDSDoKKyAgICAgUHJvcHM6CVBfU1AKKyAgICAgVmVyd2FuZHQ6CVVwZGF0ZUF0dHJpYnV0ZXMoKQorCisyMS5BcHJpbCAyMDA2IEdsb2luc29uClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZG9jL3Byb3BzL1BfTUFYX1dFSUdIVCBiL2RvYy9wcm9wcy9QX01BWF9XRUlHSFQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uN2UyZjE2YgotLS0gL2Rldi9udWxsCisrKyBiL2RvYy9wcm9wcy9QX01BWF9XRUlHSFQKQEAgLTAsMCArMSwxOSBAQAorTkFNRToKKyAgICBQX01BWF9XRUlHSFQgICAgICAgICAgICAgICAgICAibWF4X3dlaWdodCIgICAgICAgICAgICAgICAgICAKKworREVGSU5JRVJUIElOOgorICAgIC9zeXMvY29udGFpbmVyLmgKKworQkVTQ0hSRUlCVU5HOgorICAgICBNYXhpbWFsZXMgR2V3aWNodCBpbiBHcmFtbSwgZGFzIGluIGRlbSBDb250YWluZXIgdmVyc3RhdXQgd2VyZGVuCisgICAgIGthbm4uCisKK0JFTUVSS1VOR0VOOgorICAgICBEYXMgVmVyaGFlbHRuaXMgdm9uIFBfV0VJR0hUX1BFUkNFTlQsIFBfTUFYX09CSkVDVFMgdW5kIGRpZXNlciBQcm9wZXJ0eQorICAgICBzb2xsdGUgc3RpbW1lbi4gRWluZSBmZXN0ZSBHcmVuemUgZ2lidCBlcyBuaWNodC4gQWxzIEJlaXNwaWVsIGthbm4gCisgICAgIGRhcyBQb3N0cGFrZXQgdm9uIExvY28gdW50ZXIgL3Avc2Vydml2ZS9sb2NvL29iaiBoZXJhbmdlem9nZW4gd2VyZGVuLgorICAgICBCZXNzZXJlIFdlcnRlIGFscyBpbiBkaWVzZW0gc29sbHRlIGVzIG5pY2h0LCB1bmQgd2VubiBkb2NoIG51ciBndXQgYmUtCisgICAgIGdydWVuZGV0LCBnZWJlbi4KKworU0lFSEUgQVVDSDoKKyAgICAgUF9XRUlHSFRfUEVSQ0VOVCwgUF9NQVhfT0JKRUNUUywgUF9MSUdIVF9UUkFOU1BBUkVOQ1ksIGNvbnRhaW5lcgpkaWZmIC0tZ2l0IGEvZG9jL3Byb3BzL1BfTUVTU0FHRV9CRUVQIGIvZG9jL3Byb3BzL1BfTUVTU0FHRV9CRUVQCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjllNDBmYTUKLS0tIC9kZXYvbnVsbAorKysgYi9kb2MvcHJvcHMvUF9NRVNTQUdFX0JFRVAKQEAgLTAsMCArMSwxOSBAQAorTkFNRToKKyAgICBQX01FU1NBR0VfQkVFUCAgICAgICAgICAgICAgICAgICAgICAgICJtZXNzYWdlX2JlZXAiCisKK0RFRklOSUVSVCBJTjoKKyAgICAvc3lzL3BsYXllci9jb21tLmgKKworQkVTQ0hSRUlCVU5HOgorICAgICBXZXJ0ZWJlcmVpY2g6IGludD0wLi4zNjAwIChTZWt1bmRlbikKKyAgICAgV2VubiBnZXNldHp0IHdpcmQgaW4gZGVyIEtvbW11bmlrYXRpb24gZGVzIFNwaWVsZXJzIGluIGRlbiBhbmdlZ2ViZW5lbgorICAgICBaZWl0cmFldW1lbiBlaW4gU2lnbmFsdG9uIGF1c2dlZ2ViZW4uIFdpcmQgaW4gcGxheWVyL2NvbW0uYyBpbiBjb21tX2JlZXAoKQorICAgICB2ZXJhcmJlaXRldC4KKyAgICAgQXVzZ2FiZSBlcmZvbGd0IG51ciwgd2VubiBQX1ZJU1VBTEJFTEwgbmljaHQgZ2VzZXR6dCBpc3QuCisgICAgIFdpcmQgaW0gU3BpZWxlcm9iamVrdCBnZXNwZWljaGVydCEKKworU0lFSEUgQVVDSDoKKyAgICAga2xpbmdlbHRvbiwgdG9uLCBQX1ZJU1VBTEJFTEwsIFBfTUVTU0FHRV9MQVNUX0JFRVAKKworTEVUWlRFIEFFTkRFUlVORzoKKyAgIDE2LiBNYWkgMjAwNyAgRW5ub3gKZGlmZiAtLWdpdCBhL2RvYy9wcm9wcy9QX01FU1NBR0VfUFJFUEVORCBiL2RvYy9wcm9wcy9QX01FU1NBR0VfUFJFUEVORApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5lZTQ0ZGRhCi0tLSAvZGV2L251bGwKKysrIGIvZG9jL3Byb3BzL1BfTUVTU0FHRV9QUkVQRU5ECkBAIC0wLDAgKzEsMTggQEAKK05BTUU6CisgICAgUF9NRVNTQUdFX1BSRVBFTkQgICAgICAgICAgICAgICAgICAgICAgICAibWVzc2FnZV9wcmVwZW5kIgorCitERUZJTklFUlQgSU46CisgICAgL3N5cy9wbGF5ZXIvY29tbS5oCisKK0JFU0NIUkVJQlVORzoKKyAgICAgV2VydGViZXJlaWNoOiBpbnQgPSAwLDEKKyAgICAgV2VubiB2b20gWmllbCBlaW5nZXNjaGFsdGV0LCB3aXJkIHZvbiB0ZWlsZSBtaXQgKF90ZWxsKSB1bmQgc2FnIChfY29tbXVuaWNhdGUpIGRhcyAKKyAgICAgQlNfUFJFUEVORF9JTkRFTlQgRmxhZyBmdWVyIGJyZWFrX3N0cmluZyBnZW51dHp0LCB1bSBkZW4gSW5kZW50IChTZW5kZXIpIGdnZi4KKyAgICAgdm9yIGRlbSBUZXh0YmxvY2sgYW56dXplaWdlbi4KKyAgICAgV2lyZCBpbSBTcGllbGVyb2JqZWt0IGdlc3BlaWNoZXJ0IQorCitTSUVIRSBBVUNIOgorICAgICBncmFmaWsgYXVzLCBicmVha19zdHJpbmcsIHNlbmRlcndpZWRlcmhvbHVuZworCitMRVRaVEUgQUVOREVSVU5HOgorICAgMTYuIE1haSAyMDA3ICBFbm5veApkaWZmIC0tZ2l0IGEvZG9jL3Byb3BzL1BfTUlOX1NUT0NLIGIvZG9jL3Byb3BzL1BfTUlOX1NUT0NLCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmQ4OTZmYjMKLS0tIC9kZXYvbnVsbAorKysgYi9kb2MvcHJvcHMvUF9NSU5fU1RPQ0sKQEAgLTAsMCArMSwzNyBAQAorTkFNRToKKwlQX01JTl9TVE9DSwkJCSJtaW5fc3RvY2siCisKK0RFRklOSUVSVCBJTjoKKwkvc3lzL2JhbmsuaAorCitCRVNDSFJFSUJVTkc6CisJUF9NSU5fU1RPQ0sgZW50aGFlbHQgZGllIEFuemFobCBhbiBPYmpla3RlbiwgZGllIGVpbiBMYWdlciBlaW5lcworCUxhZGVucyBtaW5pbWFsIGJlaGFlbHQuIFN0YW5kYXJkbWFlc3NpZyBlbnRzcHJpY2h0IGRpZXMgMjAgT2JqZWt0ZW4KKwl1bmQgc29sbHRlIGF1Y2ggbmljaHQgd2VzZW50bGljaCBlcmhvZWh0IHdlcmRlbi4gTnVyIGZ1ZXIKKwlBbmZhZW5nZXJnZWJpZXRlIHdhZXJlbiBXZXJ0ZSB6d2lzY2hlbiAyMCB1bmQgNjAgYWt6ZXB0YWJlbC4gSW4gZGllCisJQmVyZWNobnVuZyBkZXIgQW56YWhsIHZvbiBPYmpla3RlbiBnZWhlbiBrZWluZSBPYmpla3RlIGVpbiwgZGllIGltCisJTGFkZW4gbWl0dGVscyBBZGRGaXhlZE9iamVjdCgpIHN0YWVuZGlnIHZlcmZ1ZWdiYXIgZ2VtYWNodCB3b3JkZW4KKwlzaW5kIHVuZCBhdWNoIGtlaW5lIE9iamVrdGUsIGRpZSBwZXIgQWRkSXRlbSgpIGltIExhZ2VyIGhpbnp1Z2VmdWVndAorCXd1cmRlbiB1bmQgbmFjaCBqZWRlbSBSZXNldCBhdWZnZWZyaXNjaHQgd2VyZGVuLgorCUJlaSBqZWRlbSBSZXNldCB3aXJkIG51biBhdXMgU3BlaWNoZXItIHVuZCBMYWdncnVlbmRlbiBkYXMgTGFnZXIgdW0KKwllaW5lIGJlc3RpbW10ZSBQcm96ZW50emFobCBhbiBPYmpla3RlbiBkZXppbWllcnQuIEVudHNjaGVpZGVuZAorCWRhZnVlciBpc3QgZGVyIFdlcnQgaW4gZGVyIFByb3BlcnR5IFBfU1RPUkVfQ09OU1VNRS4KKwlCZWlkZSBoaWVyIGVyd2FlaG50ZW4gUHJvcGVydGllcyBzb2xsdGVuIHVlYmVyaWdlbnMgbnVyIG1pdHRlbHMKKwlRdWVyeVByb3AvU2V0UHJvcCBhdXNnZWxlc2VuIGJ6dy4gdmVyYWVuZGVydCB3ZXJkZW4uCisKK0JFSVNQSUVMOgorCUluICcvc3RkL3N0b3JlLmMnIGJlZmluZGV0IHNpY2ggYmVyZWl0cyBlaW4gZ3V0ZXMgQmVpc3BpZWwsIGRhIGRvcnQKKwlkZXIgU3RhbmRhcmR3ZXJ0IHZvbiAyMCBPYmpla3RlbiBiZXJlaXRnZXN0ZWxsdCB3aXJkOgorCSAgY3JlYXRlKCkKKwkgIHsgLi4uCisJICAgIFNldFByb3AoUF9NSU5fU1RPQ0ssMjApOworCSAgfQorCURpZXNlbiBXZXJ0IGthbm4gbWFuIGluIGVpbmVtIGRhdm9uIGFiZ2VsZWl0ZXRlbiBlaWdlbmVuIExhZ2VyCisJbmF0dWVybGljaCBhdWNoIHZlcmFlbmRlcm4uCisKK1NJRUhFIEFVQ0g6CisJUF9TVE9SRV9DT05TVU1FLCBTZXRTdG9yYWdlUm9vbSgpLCAvc3RkL3N0b3JlLmMsIC9zdGQvc2hvcC5jCisJQWRkSXRlbSgpLCBSZW1vdmVJdGVtKCksIEFkZEZpeGVkT2JqZWN0KCksIFJlbW92ZUZpeGVkT2JqZWN0KCkKKworLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorTGFzdCBtb2RpZmllZDogMTktSnVuLTIwMTUsIEFyYXRob3JuIApkaWZmIC0tZ2l0IGEvZG9jL3Byb3BzL1BfTU1TR0lOIGIvZG9jL3Byb3BzL1BfTU1TR0lOCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmNkOGU4NGUKLS0tIC9kZXYvbnVsbAorKysgYi9kb2MvcHJvcHMvUF9NTVNHSU4KQEAgLTAsMCArMSw5IEBACitOQU1FOgorICAgIFBfTU1TR0lOICAgICAgICAgICAgICAgICAgICAgICJtbXNnaW4iICAgICAgICAgICAgICAgICAgICAgIAorCitERUZJTklFUlQgSU46CisgICAgL3N5cy9wbGF5ZXIvbW92aW5nLmgKKworQkVTQ0hSRUlCVU5HOgorICAgICBTdHJpbmcgbWl0IGRlciBNZWxkdW5nLCBkaWUgYmVpbSBWZXJsYXNzZW4gZWluZXMgUmF1bWVzIG1pdCBNX1RQT1JUCisgICAgIGFuIGRpZSB1ZWJyaWdlbiBBbndlc2VuZGVuIGF1c2dlZ2ViZW4gd2lyZC4KZGlmZiAtLWdpdCBhL2RvYy9wcm9wcy9QX01NU0dPVVQgYi9kb2MvcHJvcHMvUF9NTVNHT1VUCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmRlZmQwOWYKLS0tIC9kZXYvbnVsbAorKysgYi9kb2MvcHJvcHMvUF9NTVNHT1VUCkBAIC0wLDAgKzEsOSBAQAorTkFNRToKKyAgICBQX01NU0dPVVQgICAgICAgICAgICAgICAgICAgICAibW1zZ291dCIgICAgICAgICAgICAgICAgICAgICAKKworREVGSU5JRVJUIElOOgorICAgIC9zeXMvcGxheWVyL21vdmluZy5oCisKK0JFU0NIUkVJQlVORzoKKyAgICAgU3RyaW5nIG1pdCBkZXIgTWVsZHVuZywgZGllIGJlaW0gQmV0cmV0ZW4gZWluZXMgUmF1bWVzIG1pdCBNX1RQT1JUCisgICAgIGFuIGRpZSB1ZWJyaWdlbiBBbndlc2VuZGVuIGF1c2dlZ2ViZW4gd2lyZC4KZGlmZiAtLWdpdCBhL2RvYy9wcm9wcy9QX01TR0lOIGIvZG9jL3Byb3BzL1BfTVNHSU4KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uY2YxNGE5MQotLS0gL2Rldi9udWxsCisrKyBiL2RvYy9wcm9wcy9QX01TR0lOCkBAIC0wLDAgKzEsOSBAQAorTkFNRToKKyAgICBQX01TR0lOICAgICAgICAgICAgICAgICAgICAgICAibXNnaW4iICAgICAgICAgICAgICAgICAgICAgICAKKworREVGSU5JRVJUIElOOgorICAgIC9zeXMvcGxheWVyL21vdmluZy5oCisKK0JFU0NIUkVJQlVORzoKKyAgICAgU3RyaW5nIG1pdCBkZXIgTWVsZHVuZywgZGllIGJlaW0gQmV0cmV0ZW4gZWluZXMgUmF1bWVzIG1pdCBNX0dPCisgICAgIGFuIGRpZSB1ZWJyaWdlbiBBbndlc2VuZGVuIGF1c2dlZ2ViZW4gd2lyZC4KZGlmZiAtLWdpdCBhL2RvYy9wcm9wcy9QX01TR09VVCBiL2RvYy9wcm9wcy9QX01TR09VVApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4wNTg3YWZiCi0tLSAvZGV2L251bGwKKysrIGIvZG9jL3Byb3BzL1BfTVNHT1VUCkBAIC0wLDAgKzEsOSBAQAorTkFNRToKKyAgICBQX01TR09VVCAgICAgICAgICAgICAgICAgICAgICAibXNnb3V0IiAgICAgICAgICAgICAgICAgICAgICAKKworREVGSU5JRVJUIElOOgorICAgIC9zeXMvcGxheWVyL21vdmluZy5oCisKK0JFU0NIUkVJQlVORzoKKyAgICAgU3RyaW5nIG1pdCBkZXIgTWVsZHVuZywgZGllIGJlaW0gVmVybGFzc2VuIGVpbmVzIFJhdW1lcyBtaXQgTV9HTworICAgICBhbiBkaWUgdWVicmlnZW4gQW53ZXNlbmRlbiBhdXNnZWdlYmVuIHdpcmQuCmRpZmYgLS1naXQgYS9kb2MvcHJvcHMvUF9NU0dfUFJPQiBiL2RvYy9wcm9wcy9QX01TR19QUk9CCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmQ1MjAwNjcKLS0tIC9kZXYvbnVsbAorKysgYi9kb2MvcHJvcHMvUF9NU0dfUFJPQgpAQCAtMCwwICsxLDE5IEBACitOQU1FOgorICAgIFBfTVNHX1BST0IgICAgICAgICAgICAgICAgICAgICJtc2dfcHJvYiIgICAgICAgICAgICAgICAgICAgIAorCitERUZJTklFUlQgSU46CisgICAgL3N5cy9yb29tL2Rlc2NyaXB0aW9uLmgKKworQkVTQ0hSRUlCVU5HOgorICAgICBQYXJhbWV0ZXIgZnVlciBkaWUgV2FydGV6ZWl0IGluIFNla3VuZGVuIGJpcyB6dXIgbmFlY2hzdGVuIEF1c2dhYmUKKyAgICAgZWluZXIgUmF1bW5hY2hyaWNodC4KKyAgICAgV2lyZCBpbiBBZGRSb29tTWVzc2FnZSgpIGV4cGxpeml0IG1pdGdlc2V0enQuIEtvZW5udGUgbmF0dWVybGljaCB2b24KKyAgICAgZWluZXIgTmFjaHJpY2h0ZW5tZXRob2RlIGF1Y2ggcmVnZWxtYWVzc2lnIGdlYWVuZGVydCB3ZXJkZW4sIHVtCisgICAgIG1laHIgWnVmYWxsIGluIGRpZSBJbnRlcnZhbGxlIHp1IGJyaW5nZW4uCisKK1NJRUhFIEFVQ0g6CisgICAgIExGdW5zOiAgICBBZGRSb29tTWVzc2FnZSgpCisgICAgIFByb3BzOiAgICBQX1JPT01fTVNHLCBQX01TR19QUk9CCisgICAgIFZlcndhbmR0OiBjYWxsX291dCgpCisKKzIuRmViIDIwMTYgR2xvaW5zb24KZGlmZiAtLWdpdCBhL2RvYy9wcm9wcy9QX01VRF9ORVdCSUUgYi9kb2MvcHJvcHMvUF9NVURfTkVXQklFCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmJlYmI3N2YKLS0tIC9kZXYvbnVsbAorKysgYi9kb2MvcHJvcHMvUF9NVURfTkVXQklFCkBAIC0wLDAgKzEsMTcgQEAKK05BTUU6CisgICAgUF9NVURfTkVXQklFICAgICAgICAgICAgICAgICAgICAgICJfbGliX211ZF9uZXdiaWUiIAorCitERUZJTklFUlQgSU46CisgICAgL3N5cy9wbGF5ZXIvYmFzZS5oCisKK0JFU0NIUkVJQlVORzoKKyAgICBEZXIgU3BpZWxlciBoYXQgYmVpIEVyc3RlbGx1bmcgZGVzIENoYXJha3RlcnMgYW5nZWdlYmVuLCBub2NoIG5pZSBpbiBlaW5lbQorICAgIE11ZCBnZXNwaWVsdCB6dSBoYWJlbi4gSW4gZGllc2VtIEZhbGwgZW50aGFlbHQgZGllIFByb3BlcnR5IGRlbgorICAgIFplaXRzdGVtcGVsIGRlciBDaGFyYWt0ZXJlcnN0ZWxsdW5nLgorCisgICAgQUNIVFVORzogRGllc2UgUHJvcCB3aXJkIG5pY2h0IGdlc3BlaWNoZXJ0LCBkLmguIG5hY2hkZW0gZWluIHNvbGNoZXIKKyAgICBTcGllbGVyICJlbmRlIiBnZW1hY2h0IGhhdCBvZGVyIGVpbiBSZWJvb3QgZXJmb2xndGUsIGlzdCBkaWVzZSBJbmZvcm1hdGlvbgorICAgIHZlcmxvcmVuLgorCitTSUVIRSBBVUNIOgorCmRpZmYgLS1naXQgYS9kb2MvcHJvcHMvUF9NVVJERVJfTVNHIGIvZG9jL3Byb3BzL1BfTVVSREVSX01TRwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44NWJiZjgxCi0tLSAvZGV2L251bGwKKysrIGIvZG9jL3Byb3BzL1BfTVVSREVSX01TRwpAQCAtMCwwICsxLDYzIEBACitQX01VUkRFUl9NU0cKKworTkFNRToKKyAgICAgUF9NVVJERVJfTVNHCQkJIm11cmRlcl9tc2ciCisKK0RFRklOSUVSVCBJTjoKKyAgICAgL3N5cy9wcm9wZXJ0aWVzLmgKKworQkVTQ0hSRUlCVU5HOgorICAgICBJbiBkaWVzZXIgUHJvcGVydHkga2FubiBtYW4gZWluZW4gU3RyaW5nIG9kZXIgZWluZSBDbG9zdXJlIGFibGVnZW4KKyAgICAgZGVzc2VuIFdlcnQgYnp3LiBkZXJlbiBSZXN1bHRhdCBiZWltIFRvZCBkZXMgTlBDcyBhdWYgZGVtCisgICAgIE1vZXJkZXItS2FuYWwgZXJzY2hlaW50LgorICAgICBOb3JtYWxlcndlaXNlIGlzdCBkaWUgUHJvcGVydHkgbmljaHQgZ2VzZXR6dCwgd29yYXVmaGluIHp1ZmFlbGxpZworICAgICBlaW5lIE1lbGR1bmcgZ2VuZXJpZXJ0IHdpcmQuCisKKyAgICAgT2IgZGVyIFRvZCBlaW5lcyBOUENzIGF1ZiBkZW0gTW9lcmRlci1LYW5hbCBlcnNjaGVpbnQsIGhhZW5ndCBkYXZvbiBhYiwKKyAgICAgd2llIG9mdCB1bmQgd2VsY2hlIEFydCB2b24gTlBDcyBpbiBkZXIgbGV0enRlbiBaZWl0IGdldG9ldGV0IHd1cmRlbi4gWnVtCisgICAgIEJlaXNwaWVsIGlzdCBlcyBlaGVyIHNlbHRlbiwgZGFzcyBlaW4gc2Nod2FjaGVyIE5QQyBhdWYgZGVtIEthbmFsCisgICAgIGVyc2NoZWludCwgd2VubiBrdWVyemxpY2ggdmllbGUgc3RhcmtlIE5QQ3MgZ2V0b2V0ZXQgd3VyZGVuLiBBbGxlcmRpbmdzCisgICAgIGthbm4gbWFuIGF1ZiBkaWVzZSBSZWdlbHVuZyBtaXR0ZWxzIGRlciBQcm9wZXJ0eSBQX0ZPUkNFX01VUkRFUl9NU0cKKyAgICAgRWluZmx1c3MgbmVobWVuLgorCisgICAgIFdpcmQgaW4gZWluZW4gU3RyaW5nIGRlciBQbGF0emhhbHRlciAlcyBlaW5nZWZ1ZWd0LCBzbyBlcnNjaGVpbnQgYW4gZGVyCisgICAgIFN0ZWxsZSBzcGFldGVyIGRlciBOYW1lIGRlcyBNb2VyZGVycy4KKworQkVJU1BJRUxFOgorICAgICAvLyBadW0gQmVpc3BpZWwga29lbm50ZSBtYW4gamEgYmVpIGVpbmVyIFJhdHRlLCBkaWUgZ2V0b2V0ZXQgd2lyZCwKKyAgICAgLy8gZm9sZ2VuZGVzIGF1ZiBkZW0gTW9lcmRlci1LYW5hbCBhdXNnZWJlbiBsYXNzZW46CisgICAgIFNldFByb3AoUF9NVVJERVJfTVNHLAorICAgICAgICJSYXR0ZW4gYWxsZXIgTVVEcywgdmVyZWluaWd0IGV1Y2ggZ2VnZW4gJXMhIik7CisKKworICAgICAvLyBVbSBhdWNoIG1hbCBlaW5lIENsb3N1cmUgenUgemVpZ2VuOiBkaWUgUmF0dGUga/ZubnRlIGF1Y2ggaWhyZQorICAgICAvLyBNZWxkdW5nIGVyc3QgYmVpIGlocmVtIFRvZCBlcnN0ZWxsZW4gbGFzc2VuOgorICAgICBwcml2YXRlIHN0cmluZyBtb2VyZGVyX21lbGR1bmcoKSB7CisgICAgICAgcmV0dXJuICh7IkFjaHdlaCEiLCAiQXUhIiwgIldlaWEhIn0pW3JhbmRvbSgzKV07CisgICAgIH0KKworICAgICBTZXRQcm9wKFBfTVVSREVSX01TRywgIydtb2VyZGVyX21lbGR1bmcpOworCitCRU1FUktVTkdFTjoKKyAgICAgLSBQX05PQ09SUFNFOgorICAgICAgIElzdCBpbiBkZW0gTnBjIGRpZSBQcm9wZXJ0eSBQX05PQ09SUFNFIGdlc2V0enQsIHNvIHdpcmQgZGllCisgICAgICAgTW9lcmRlcm1lbGR1bmcgbmljaHQgYXVmIGRlbSBLYW5hbCBnZXNlbmRldCwgZGEgZGllc2UgQXVzZ2FiZSB1ZWJlcgorICAgICAgIC9zdGQvY29ycHNlIGxhZXVmdC4KKyAgICAgICBXaWxsIG1hbiBkZW5ub2NoIGVpbmUgTWVsZHVuZywgc28gc29sbHRlIG1hbiAvc3RkL2NvcnBzZSBpbSBkaWUoKQorICAgICAgIHNlbGJzdCBjbG9uZW4sIGRhcmFuIElkZW50aWZ5KHRoaXNfb2JqZWN0KCkpIHJ1ZmVuIHVuZCBkYXMgZ2VjbG9udGUKKyAgICAgICBPYmpla3Qgd2llZGVyIGVudHNvcmdlbi4KKworICAgICAtIENsb3N1cmVzOgorICAgICAgIENsb3N1cmVzIGJpZXRlbiBzaWNoIGFuLCB3ZW5uIGVpbiB6ZW50cmFsZXMgT2JqZWt0IGb8ciBtZWhyZXJlIE5QQ3MKKyAgICAgICBiZXN0aW1tdGUgTW9lcmRlcm1lbGR1bmdlbiBnZW5lcmllcmVuIHNvbGwuIERhbm4gbXVzcyBudXIgbm9jaCBiZWkKKyAgICAgICBkZW4gTlBDcyBkaWUgQ2xvc3VyZSwgZGllIGF1ZiBkaWUgZXJzdGVsbGVuZGUgTWV0aG9kZSB6ZWlndCBnZXNldHp0CisgICAgICAgd2VyZGVuLgorCitTSUVIRSBBVUNIOgorICAgICBUb2Q6CQlkaWUoTCkKKyAgICAgVmVyd2FuZHQ6CQlQX0ZPUkNFX01VUkRFUl9NU0cKKyAgICAgVG9kZXNtZWxkdW5nZW46CVBfS0lMTF9OQU1FLCBQX0tJTExfTVNHLCBQX0RJRV9NU0cKKwkJCVBfWkFQX01TRywgUF9FTkVNWV9ERUFUSF9TRVFVRU5DRQorICAgICBTb25zdGlnZXM6CQlQX0NPUlBTRSwgUF9OT0NPUlBTRSwgL3N0ZC9jb3Jwc2UuYworCiszMC4gTWFpIDIwMDYsIEdsb2luc29uClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZG9jL3Byb3BzL1BfTV9BVFRSX01PRCBiL2RvYy9wcm9wcy9QX01fQVRUUl9NT0QKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOGE3OTcxNwotLS0gL2Rldi9udWxsCisrKyBiL2RvYy9wcm9wcy9QX01fQVRUUl9NT0QKQEAgLTAsMCArMSw0MiBAQAorTkFNRToKKyAgICBQX01fQVRUUl9NT0QgICAgICAgICAgICAgICAgICAibWFnaWNfYXR0cmlidXRlc19tb2RpZmllciIKKworREVGSU5JRVJUIElOOgorICAgIC9zeXMvbGl2aW5nL2F0dHJpYnV0ZXMuaAorCitCRVNDSFJFSUJVTkc6CisgICAgTWFwcGluZywgZGFzIGRpZSBBdHRyaWJ1dGUgZGVzIFNwaWVsZXJzIHZlcmFlbmRlcnQsIGRlciBkaWVzZSBSdWVzdHVuZworICAgIGJ6dy4gV2FmZmUgdHJhZWd0IGJ6dy4gYmVudXR6dC4KKworICAgIFp1IGJlYWNodGVuOgorICAgIFBfTV9BVFRSX01PRCBrYW5uIHByb2JsZW1sb3MgZHVyY2ggZWluIFNldFByb3AoKSBnZXNldHp0IHdlcmRlbi4gRXMgd2lyZAorICAgIG51ciBkYW5uIGJlcnVlY2tzaWNodGlndCwgd2VubiBkaWUgUnVlc3R1bmcvV2FmZmUgZ2V0cmFnZW4vYmVudXR6dCB3aXJkLgorICAgIEJlaW0gVHJhZ2VuL0F1c3ppZWhlbi9adWVja2VuL1dlZ3N0ZWNrZW4gd2lyZCBpbSBTcGllbGVyIGF1dG9tYXRpc2NoCisgICAgVXBkYXRlQXR0cmlidXRlcygpIGF1ZmdlcnVmZW4uCisKKyAgICBGdWVyIEtyYW5raGVpdGVuIGV0Yy4gb2RlciBPYmpla3RlLCBkZXJlbiAqQmVzaXR6KiBhbGxlaW4gc2Nob24gZGllCisgICAgQXR0cmlidXRlIHZlcmFlbmRlcm4gc29sbGVuLCB2ZXJ3ZW5kZXQgbWFuIGJlc3NlciBQX1hfQVRUUl9NT0QuCisKKyAgICBQX1hfQVRUUl9NT0QgdW5kIFBfTV9BVFRSX01PRCBkdWVyZmVuIGVpbmVuIGdlbWVpbnNhbWVuIGt1bXVsaWVydGVuCisgICAgcG9zaXRpdmVuIEdyZW56d2VydCBuaWNodCB1ZWJlcnNjaHJlaXRlbi4gRGllc2VyIEdyZW56d2VydCwKKyAgICBDVU1VTEFUSVZFX0FUVFJfTElNSVQsIGlzdCBpbiAvc3lzL2xpdmluZy9hdHRyaWJ1dGVzLmggZGVmaW5pZXJ0LgorCitCRU1FUktVTkdFTjoKKyAgICBEaWUgV2VydGUgc29sbHRlbiBtb2VnbGljaHN0IG5pY2h0IGR5bmFtaXNjaCBnZWFlbmRlcnQgd2VyZGVuLgorICAgIFdlbm4gZG9jaCwgbXVzcyBtaXQgVGVzdExpbWl0VmlvbGF0aW9uKCkgYW0gU3BpZWxlciBhdWYgVmFsaWRpdGFldAorICAgIGdlcHJ1ZWZ0IHVuZCBnZ2YuIG1pdCBVcGRhdGVBdHRyaWJ1dGVzKCkgYW4gaWhtIHVwZ2VkYXRldCB3ZXJkZW4uCisKK0JFSVNQSUVMRToKKyAgICAvLyBEZW0gU3BpZWxlciwgZGVyIGRhcyBPYmpla3QgYmVudXR6dCwgd2lyZCAyIHZvbiBBX0lOVCBhYmdlem9nZW4gdW5kCisgICAgLy8gZGFmdWVyIDEgYXVmIEFfU1RSIGF1ZmFkZGllcnQuCisgICAgU2V0UHJvcChQX01fQVRUUl9NT0QsIChbQV9JTlQ6LTIsIEFfU1RSOjFdKSApOworCitTSUVIRSBBVUNIOgorICAgIFF1ZXJ5QXR0cmlidXRlKCksIFF1ZXJ5UmVhbEF0dHJpYnV0ZSgpLCBRdWVyeUF0dHJpYnV0ZU9mZnNldCgpLAorICAgIFNldEF0dHJpYnV0ZSgpLCBTZXRSZWFsQXR0cmlidXRlKCksIFVwZGF0ZUF0dHJpYnV0ZXMoKSwKKyAgICBTZXRUaW1lZEF0dHJNb2RpZmllcigpLCBRdWVyeVRpbWVkQXR0ck1vZGlmaWVyKCksCisgICAgRGVsZXRlVGltZWRBdHRyTW9kaWZpZXIoKSwKKyAgICBQX1hfSEVBTFRIX01PRCwgUF9NX0hFQUxUSF9NT0QsIFBfQVRUUklCVVRFUywgUF9BVFRSSUJVVEVTX09GRlNFVFMsCisgICAgUF9USU1FRF9BVFRSX01PRCwgUF9YX0FUVFJfTU9ELCBQX01fQVRUUl9NT0QsIC9zdGQvbGl2aW5nL2F0dHJpYnV0ZXMuYworCiswMi4wMi4yMDE2LCBHbG9pbnNvbgpkaWZmIC0tZ2l0IGEvZG9jL3Byb3BzL1BfTV9IRUFMVEhfTU9EIGIvZG9jL3Byb3BzL1BfTV9IRUFMVEhfTU9ECm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmE0Yzg5ZTYKLS0tIC9kZXYvbnVsbAorKysgYi9kb2MvcHJvcHMvUF9NX0hFQUxUSF9NT0QKQEAgLTAsMCArMSw0MCBAQAorTkFNRToKKyAgICAgUF9NX0hFQUxUSF9NT0QgICAgICAgICAgICAgICAgICAibWFnaWNfaGVhbHRoX21vZGlmaWVyIgorCitERUZJTklFUlQgSU46CisgICAgIC9zeXMvbGl2aW5nL2F0dHJpYnV0ZXMuaAorCitCRVNDSFJFSUJVTkc6CisgICAgIE1hcHBpbmcsIG1pdCBkZW0gZGllIG1heGltYWxlbiBMZWJlbnNwdW5rdGUgdW5kIE1hZ2llcHVua3RlIGVpbmVzIAorICAgICBTcGllbGVycyB2ZXJhZW5kZXJ0IHdlcmRlbiwgZGVyIGRpZXNlIFJ1ZXN0dW5nL1dhZmZlIHRyYWVndC9iZW51dHp0LiBJbSAKKyAgICAgR2VnZW5zYXR6IHp1IFBfTV9BVFRSX01PRCBlcmZvbGd0IGhpZXIgamVkb2NoIGtlaW5lIEJsb2NrYWRlLgorCisgICAgIFp1IGJlYWNodGVuOiBQX01fSEVBTFRIX01PRCBrYW5uIHByb2JsZW1sb3MgZHVyY2ggZWluIFNldFByb3AoKSBnZXNldHp0IAorICAgICB3ZXJkZW4sIGVzIHdpcmQgbnVyIGJlcnVlY2tzaWNodGlndCwgd2VubiBkaWUgUnVlc3R1bmcvV2FmZmUgCisgICAgIGdldHJhZ2VuL2JlbnV0enQgd2lyZC4gQmVpbSB0cmFnZW4vYXVzemllaGVuL3p1ZWNrZW4vd2Vnc3RlY2tlbiB3aXJkIGltIAorICAgICBTcGllbGVyIGF1dG9tYXRpc2NoIFVwZGF0ZUF0dHJpYnV0ZXMoKSBhdWZnZXJ1ZmVuLgorCisgICAgIEZ1ZXIgS3JhbmtoZWl0ZW4gZXRjLiB2ZXJ3ZW5kZXQgbWFuIGJlc3NlciBkaWUgUHJvcGVydHkgUF9YX0hFQUxUSF9NT0QuCisKKyAgICAgQml0dGUgYmVhY2h0ZW46IERpZSBwb3NpdGl2ZW4gTW9kaWZpZXIgd2VyZGVuIG5pY2h0IG1laHIgMToxIGF1ZiBkaWUKKyAgICAgTGViZW5zLSB1bmQgTWFnaWVwdW5rdGUgZHJhdWZhZGRpZXJ0LiBTdGF0dGRlc3NlbiB3aXJkIG51ciBub2NoIGVpbiAKKyAgICAgZ2V3aXNzZXIgVGVpbCBkb3J0IGhpbnp1YWRkaWVydCwgZGVyIG1pdCBncm9lc3NlcmVyIE1lbmdlIHZvbiBQdW5rdGVuCisgICAgIHp1bmltbXQsIHVuZCBpbSB1bnRlcmVuIEJlcmVpY2ggZ3JvYiBkZW0gV2VydCBlbnRzcHJpY2h0LiBEYXMgCisgICAgIHRoZW9yZXRpc2NoZSBNYXhpbXVtIGlzdCBpbnNnZXNhbXQgMTQ5LgorCitCRU1FUktVTkdFTjoKKyAgICAgRGllIFdlcnRlIHNvbGx0ZW4gbW9lZ2xpY2hzdCBuaWNodCBkeW5hbWlzY2ggZ2VhZW5kZXJ0IHdlcmRlbi4KKyAgICAgV2VubiBkb2NoLCBtdXNzIG1pdCBUZXN0TGltaXRWaW9sYXRpb24oKSBhbSBTcGllbGVyIGF1ZiBWYWxpZGl0YWV0IAorICAgICBnZXBydWVmdCB3ZXJkZW4gdW5kIG1pdCBVcGRhdGVBdHRyaWJ1dGVzKCkgYW4gaWhtIGdnZi4gdXBnZWRhdGV0LgorCitCRUlTUElFTDoKKyAgICAgU2V0UHJvcChQX01fSEVBTFRIX01PRCwoW1BfSFA6NSxQX1NQOi01XSkpOworICAgICAvLyBEZW0gU3BpZWxlciwgZGVyIGRhcyBPYmpla3QgYmVudXR6dCwgd2lyZCBQX01BWF9IUCB1bSA1IGVyaG9laHQgdW5kCisgICAgIC8vIFBfTUFYX1NQIHVtIDUgZXJuaWVkcmlndC4KKworU0lFSEUgQVVDSDoKKyAgICAgUF9YX0hFQUxUSF9NT0QsIFBfWF9BVFRSX01PRCwgUF9NX0FUVFJfTU9ELCBiYWxhbmNlCisKK0xFVFpURSBBZU5ERVJVTkc6CisgICAgRnJlLDExLjA1LjIwMDcsIDAwOjIwIHZvbiBIdW1uaQorCmRpZmYgLS1naXQgYS9kb2MvcHJvcHMvUF9OQU1FIGIvZG9jL3Byb3BzL1BfTkFNRQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5mNjA5Y2VhCi0tLSAvZGV2L251bGwKKysrIGIvZG9jL3Byb3BzL1BfTkFNRQpAQCAtMCwwICsxLDY1IEBACitQX05BTUUKKworTkFNRToKKyAgICAgUF9OQU1FICJuYW1lIgorCitERUZJTklFUlQgSU46CisgICAgIDx0aGluZy9kZXNjcmlwdGlvbi5oPgorCitCRVNDSFJFSUJVTkc6CisgICAgIEluIGRpZXNlciBQcm9wZXJ0eSB3aXJkIGRlciBOYW1lIGVpbmVzIE9iamVrdGVzIHZlcm1lcmt0LiBXZW5uIGRlciBOYW1lCisgICAgIHJlZ2VsbWFlc3NpZyBkZWtsaW5pZXJ0IHdpcmQsIHJlaWNodCBlaW4gZWluZmFjaGVyIFN0cmluZy4gV2lyZCBkZXIKKyAgICAgTmFtZSB1bnJlZ2VsbWFlc3NpZyBkZWtsaW5pZXJ0LCBzbyBrYW5uIG1hbiBlaW4gQXJyYXkgdm9uIHZpZXIgU3RyaW5ncworICAgICBtaXQgZGVtIE5hbWVuIGltIE5vbWluYXRpdiwgR2VuaXRpdiwgRGF0aXYgdW5kIEFra3VzYXRpdiAoaW4gZGllc2VyCisgICAgIFJlaWhlbmZvbGdlKSBhbmdlYmVuLgorCisgICAgIERpZSBGdW5rdGlvbiBuYW1lKCkgYmVoYW5kZWx0IHJlY2h0IHZpZWxlIFNvbmRlcmZhZWxsZTsgbWFuIHNvbGx0ZSBkZW4KKyAgICAgTmFtZW4gYWxzbyBlcnN0IGVpbm1hbCBpbiBkZXIgRm9ybSBlaW5lcyBlaW56ZWxuZW4gU3RyaW5ncyBwcnVlZmVuLgorCisgICAgIEVpbmUgU29uZGVycm9sbGUgbmVobWVuIFVuaXQtT2JqZWt0ZSBlaW46IEhpZXIga2FubiBtYW4gZWluZW4gTmFtZW4KKyAgICAgZnVlciBkZW4gU2luZ3VsYXIgdW5kIGVpbmVuIE5hbWVuIGZ1ZXIgZGVuIFBsdXJhbCB2ZXJnZWJlbi4KKworICAgICBTZXR6dCBtYW4gUF9OQU1FIGVpbmVzIFVuaXQtT2JqZWt0cyBhdWYgZWluZW4gZWluZmFjaGVuIFN0cmluZywgc28gd2lyZAorICAgICBkaWVzZXIgYWxzIE5hbWUgc293b2hsIGltIFNpbmd1bGFyIGFscyBhdWNoIGltIFBsdXJhbCB2ZXJ3ZW5kZXQuCisKKyAgICAgVWViZXJnaWJ0IG1hbiBlaW4gQXJyYXkgdm9uIFN0cmluZ3MsIHNvIHdpcmQgZGVyIGVyc3RlIEVpbnRyYWcgZnVlciBkZW4KKyAgICAgU2luZ3VsYXIgdW5kIGRlciB6d2VpdGUgRWludHJhZyBmdWVyIGRlbiBQbHVyYWwgYmVudXR6dC4KKworICAgICBCZWkgVW5pdC1PYmpla3RlbiBpc3QgZXMgbmljaHQgbW9lZ2xpY2gsIGF1Y2ggbm9jaCB6d2lzY2hlbiBkZW4KKyAgICAgdmVyc2NoaWVkZW5lbiBGYWVsbGVuIHp1IHVudGVyc2NoZWlkZW4uCisKK0JFTUVSS1VOR0VOOgorICAgICBEaWVzZSBQcm9wZXJ0eSBzb2xsdGUgbnVyIGRlbiByZWluZW4gTmFtZW4gZW50aGFsdGVuOyB3aWxsIG1hbiBkZW0KKyAgICAgTmFtZW4gbm9jaCBBZGpla3RpdmUgdm9yYW5zdGVsbGVuLCBzbyBzb2xsdGUgbWFuIGRpZXMgbWl0IFBfTkFNRV9BREoKKyAgICAgYmV3ZXJrc3RlbGxpZ2VuLCBhbHNvIHN0YXR0CisKKyAgICAgU2V0UHJvcChQX05BTUUsICh7ICJhbHRlciBIdXQiLCAiYWx0ZW4gSHV0cyIsCisgICAgICAgICAgICAgICAgICAgICAgICAiYWx0ZW4gSHV0IiwgImFsdGVuIEh1dCIgfSkgKTsKKworICAgICBiZXNzZXIKKworICAgICBTZXRQcm9wKFBfTkFNRSwgIkh1dCIpOworICAgICBTZXRQcm9wKFBfTkFNRV9BREosICJhbHQiKTsKKworICAgICBCZWkgTGViZXdlc2VuIHdpcmQgbG93ZXJfY2FzZShQX05BTUUpIChiZWkgQXJyYXlzIGRhcyBlcnN0ZSBFbGVtZW50IAorICAgICBkYXJhdXMpIGF1dG9tYXRpc2NoIGFscyBMaXZpbmdOYW1lIGdlc2V0enQuCisKK0JFSVNQSUVMRToKKyAgICAgRWluIHJlZ2VsbWFlc3NpZyBkZWtsaW5pZXJiYXJlciBOYW1lOgorCisgICAgIFNldFByb3AoUF9OQU1FLCAiQXJrc2hhdCIpOworCisgICAgIEhpZXIgZWluIEJlaXNwaWVsIGZ1ZXIgZWluZW4gdW5yZWdlbG1hZXNzaWcgZGVrbGluaWVyYmFyZW4gTmFtZW46CisKKyAgICAgU2V0UHJvcChQX05BTUUsICh7ICJEcmFjaGUiLCAiRHJhY2hlbiIsICJEcmFjaGVuIiwgIkRyYWNoZW4iIH0pKTsKKworICAgICBVbmQgc2NobGllc3NsaWNoIGRlciBOYW1lIGVpbmVzIGFsbHNlaXRzIGJla2FubnRlbiBVbml0LU9iamVrdGVzOgorCisgICAgIFNldFByb3AoUF9OQU1FLCAoeyAiTXVlbnplIiwgIk11ZW56ZW4iIH0pKTsKKworU0lFSEUgQVVDSDoKKyAgICAgL3N0ZC90aGluZy9kZXNjcmlwdGlvbi5jLCBuYW1lKCksIFBfTkFNRV9BREosIHNldF9saXZpbmdfbmFtZSgpLAorICAgICBmaW5kX2xpdmluZygpLCBmaW5kX2xpdmluZ3MoKQorCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCitMYXN0IG1vZGlmaWVkOiAxOS4gT2t0LiAyMDE1LCBBcmF0aG9ybi4gCmRpZmYgLS1naXQgYS9kb2MvcHJvcHMvUF9OQU1FX0FESiBiL2RvYy9wcm9wcy9QX05BTUVfQURKCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjJiZjE1ZTYKLS0tIC9kZXYvbnVsbAorKysgYi9kb2MvcHJvcHMvUF9OQU1FX0FESgpAQCAtMCwwICsxLDU1IEBACitQX05BTUVfQURKCisKK05BTUU6CisgICAgIFBfTkFNRV9BREogIm5hbWVfYWRqIgorCitERUZJTklFUlQgSU46CisgICAgIDx0aGluZy9kZXNjcmlwdGlvbi5oPgorCitCRVNDSFJFSUJVTkc6CisgICAgIERpZXNlIFByb3BlcnR5IGVudGhhZWx0IGVpbiBvZGVyIG1laHJlcmUgQWRqZWt0aXZlIGluIEZvcm0gZWluZXMgQXJyYXlzCisgICAgIHZvbiBTdHJpbmdzLiBFcyBpc3QgbnVyIGRlciBXb3J0c3RhbW0gYW56dWdlYmVuISBEaWUgQWRqZWt0aXZlIHdlcmRlbgorICAgICB2b24gZGVyIEZ1bmt0aW9uIG5hbWUoKSBkZWtsaW5pZXJ0IHVuZCB2b3IgZGVuIE5hbWVuIGdlc2V0enQsIHdpcmtlbgorICAgICBhbHNvIGFscyBBdWZ6YWVobHVuZyB2b24gQWRqZWt0aXZlbiB2b3IgZGVtIE5hbWVuLgorCisgICAgIERpZSBoaWVyIGFuZ2VnZWJlbmVuIEFkamVrdGl2ZSBkaWVuZW4gbnVyIHp1ciBBdXNnYWJlISBTb2xsIHNpY2ggZGFzCisgICAgIE9iamVrdCBhdWNoIHVlYmVyIEFkamVrdGl2ZSBhbnNwcmVjaGVuIGxhc3NlbiwgbXVzcyBtYW4gZGllc2UgbWl0CisgICAgIEFkZEFkamVjdGl2ZSgpIHVlYmVyZ2ViZW4uCisKKyAgICAgU29sbCBkYXMgT2JqZWt0IG51ciBlaW4gZWluemVsbmVzIE5hbWVuc2FkamVrdGl2IGJlc2l0emVuLCBrYW5uIG1hbiBkZW0KKyAgICAgU2V0UHJvcCgpLUF1ZnJ1ZiBhdWNoIGVpbmVuIFN0cmluZyB1ZWJlcmdlYmVuOyBnZXNwZWljaGVydCB3aXJkIGRpZQorICAgICBQcm9wZXJ0eSBhYmVyIGluIGplZGVtIEZhbGwgYWxzIEFycmF5LgorCisgICAgIFdlbm4gZWluIEFkamVrdGl2IHVucmVnZWxtYWVzc2lnIGlzdCwga2FubiBtYW4gZGllIHZpZXIgRmFlbGxlIGF1Y2gKKyAgICAgYWxzIEFycmF5IHVlYmVyZ2ViZW4uIE1hbiBtdXNzIGRhbm4gYWJlciBBcnJheXMgc2NoYWNodGVsbiwgZGFtaXQgdm9uIGRlbgorICAgICBtZWhyZmFjaGVuIEFkamVrdGl2ZW4gdW50ZXJzY2hpZWRlbiB3ZXJkZW4ga2Fubi4KKwkKK0JFSVNQSUVMRToKKyAgICAgU2V0UHJvcChQX05BTUUsICJIdXQiKTsKKyAgICAgU2V0UHJvcChQX05BTUVfQURKLCAiYWx0Iik7CisKKyAgICAgbmFtZShXRVNTRU4sMSkgICAgICA9PiAiZGVzIGFsdGVuIEh1dHMiCisKKworICAgICAvLyBad2VpIEFkamVrdGl2ZSwgZ2xlaWNocmFuZ2lnIHp1IFN1YnN0YW50aXYKKyAgICAgU2V0UHJvcChQX05BTUVfQURKLCAoeyJhbHQiLCAiZ2FtbWVsaWcifSkpOworCisgICAgIG5hbWUoV0VTU0VOLDEpICAgICAgPT4gImRlcyBhbHRlbiwgZ2FtbWVsaWdlbiBIdXRzIgorCisKKyAgICAgLy8gWndlaSBBZGpla3RpdmUsIGVyc3RlcyBpc3QgQXR0cmlidXQgenUgendlaXRlbQorICAgICBmYWxzY2g6ICBTZXRQcm9wKFBfTkFNRV9BREosICh7ImdydWVuIiwgImdlc3RyZWlmdCJ9KSk7CisgICAgICAgICAgICAgIG5hbWUoV0VTU0VOLDEpICAgICAgPT4gImRlcyBncnVlbmVuLCBnZXN0cmVpZnRlbiBIdXRzIgorICAgICByaWNodGlnOiBTZXRQcm9wKFBfTkFNRV9BREosICh7ImdydWVuIGdlc3RyZWlmdCJ9KSk7CisgICAgICAgICAgICAgIG5hbWUoV0VTU0VOLDEpICAgICAgPT4gImRlcyBncnVlbiBnZXN0cmVpZnRlbiBIdXRzIgorCisgICAgIC8vIFVucmVnZWxtYWVzc2lnZXMgQWRqZWt0aXYKKyAgICAgU2V0UHJvcCggUF9OQU1FX0FESiwoeyh7InJvc2EiLCJyb3NhIiwicm9zYSIsInJvc2EifSl9KTsKKyAgICAgICAgICAgICAgbmFtZShXRVNTRU4sMSkgICAgICAgICA9PiAiZGVzIHJvc2EgSHV0cyIKKyAgICAgLy8gT2huZSBpbm5lcmVzIEFycmF5IGhhZXR0ZSBtYW4gNCBtYWwgcm9zYSBhbHMgQWRqZWt0aXYKKyAgICAgLy8gPT4gImRlcyByb3NhZW4sIHJvc2Flbiwgcm9zYWVuLCByb3NhZW4gSHV0cyIKKworU0lFSEUgQVVDSDoKKyAgICAgL3N0ZC90aGluZy9kZXNjcmlwdGlvbi5jLCBuYW1lKCksIFBfTkFNRSwgRGVjbEFkaigpCisKKzIzLkFwcmlsIDIwMDcgUnVtYXRhCmRpZmYgLS1naXQgYS9kb2MvcHJvcHMvUF9ORUVERURfUVAgYi9kb2MvcHJvcHMvUF9ORUVERURfUVAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZTM4ZjllYgotLS0gL2Rldi9udWxsCisrKyBiL2RvYy9wcm9wcy9QX05FRURFRF9RUApAQCAtMCwwICsxLDE1IEBACitOQU1FOgorICAgIFBfTkVFREVEX1FQICAgICAgICAgICAgICAgICAgICJuZWVkZWRfcXAiICAgICAgICAgICAgICAgICAgIAorCitERUZJTklFUlQgSU46CisgICAgL3N5cy9wbGF5ZXIvYmFzZS5oCisKK0JFU0NIUkVJQlVORzoKKyAgICAgQVBzLCBkaWUgbWFuIGZ1ZXIgZGVuIFNlaGVyc3RhdHVzIGJyYXVjaHQKKworICAgICBEaWVzZSBQcm9wZXJ0eSBpc3QgbWl0dGxlcndlaWxlIG9ic29sZXQuIERpZQorICAgICBha3R1ZWxsIGdlbHRlbmRlbiBTZWhlci1BbmZvcmRlcnVuZ2VuIHN0ZWhlbiBpbgorICAgICAvc2VjdXJlL2xlcG1hc3Rlci5oCisKK0xFVFpURSBBRU5ERVJVTkc6CisgICAgIDIwMDYtMDktMzAsIFpvb2suClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZG9jL3Byb3BzL1BfTkVUREVBRF9FTlYgYi9kb2MvcHJvcHMvUF9ORVRERUFEX0VOVgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5iMmQ2MzE3Ci0tLSAvZGV2L251bGwKKysrIGIvZG9jL3Byb3BzL1BfTkVUREVBRF9FTlYKQEAgLTAsMCArMSwyNCBAQAorTkFNRToKKyAgICBQX05FVERFQURfRU5WICAgICAgICAgICAgICAgICAgIm5ldGRlYWRfZW52IgorCitERUZJTklFUlQgSU46CisgICAgL3N5cy9wbGF5ZXIvYmFzZS5oCisKK0JFU0NIUkVJQlVORzoKKyAgICBEaWVzZSBQcm9wZXJ0eSBrYW5uIGluIG5ldHp0b3RlbiBTcGllbGVybiBhYmdlZnJhZ3Qgd2VyZGVuLAorCQl1bSBoZXJhdXN6dWZpbmRlbiwgaW4gd2VsY2hlbSBSYXVtIHNpZSBuZXR6dG90IGdld29yZGVuIHNpbmQuCisKKwkJRXMgd2lyZCBkZXIgc2VsYmUgV2VydCB6dXJ1ZWNrZ2VnZWJlbiwgZGVuIGRpZSBNdWRsaWIgYmVudXR6ZW4KKwkJd3VlcmRlLCB1bSBkaWUgU3BpZWxlciBiZWltIHJlY29ubmVjdCB3aWVkZXIgYW4gZGVuIHJpY2h0aWdlbgorCQlvcnQgenUgYnJpbmdlbi4gRGFzIGlzdCBub3JtYWxlcndlaXNlIGRhcyBSYXVtb2JqZWt0IG9kZXIgZGVyCisJCURhdGVpbmFtZSBkZXMgUmF1bXMgKHp1bSBCZWlzcGllbCBzbyBkaWVzZXIgZWluIGNsb25lIHdhcikuCisKKwkJQmVpIG5pY2h0IG5ldHp0b3RlbiBTcGllbGVybiB3aXJkIDAgenVydWVja2dlZ2ViZW4uCisKK0JFTUVSS1VOR0VOOgorICAgIERpZXNlIFByb3BlcnR5IGlzdCByZWFkLW9ubHkuCisKK1NJRUhFIEFVQ0g6CisgICAgUF9ORVRERUFEX0lORk8KKworMjAwOS0wOC0wNCBSdW1hdGEKZGlmZiAtLWdpdCBhL2RvYy9wcm9wcy9QX05FVERFQURfSU5GTyBiL2RvYy9wcm9wcy9QX05FVERFQURfSU5GTwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44M2MzNmZkCi0tLSAvZGV2L251bGwKKysrIGIvZG9jL3Byb3BzL1BfTkVUREVBRF9JTkZPCkBAIC0wLDAgKzEsOTEgQEAKK05BTUU6CisgICAgUF9ORVRERUFEX0lORk8gICAgICAgICAgICAgICAgIm5ldGRlYWRfaW5mbyIgICAgICAgICAgICAgICAgCisKK0RFRklOSUVSVCBJTjoKKyAgICAvc3lzL3BsYXllci5oCisKK0JFU0NIUkVJQlVORzoKKyAgICAgV2lyZCBpbSBSYXVtIFggZ2VzZXR6dCB1bmQgd2lya3QgbnVyLCBmYWxscyBkaWVzZXIgUmF1bSBlaW4gJyMnIGltCisgICAgIG9iamVjdF9uYW1lKCkgaGF0IChub3JtYWxlIENsb25lcywgekIgIi9yb29tL3ZvaWQjMTAxNTMwMTgiKS4KKyAgICAgCisgICAgIEJlaSBFaW5zY2hsYWZlbiBlaW5lcyBTcGllbGVycyBpbiBkaWVzZW0gUmF1bSB3ZXJkZW4gZGllIFdlcnRlIGF1cworICAgICBkZXIgUHJvcGVydHkgaW0gU3BpZWxlciBnZXNwZWljaGVydCAoTmV0enRvdGVuaW5mb3JtYXRpb25lbikuCisKKyAgICAgSXN0IGJlaW0gQXVmd2FjaGVuIGRlcyBTcGllbGVycyBkYXMgUmF1bW9iamVrdCBYIHplcnN0b2VydCB3b3JkZW4sIGRhbm4KKyAgICAgd2lyZCBiZWkgZGVyIEJsdWVwcmludCB2b24gWCBwZXIgU2V0UHJvcCgpIGRpZSBnZXNwZWljaGVydGUgSW5mb3JtYXRpb24KKyAgICAgZ2VzZXR6dC4gRGVyIFJ1ZWNrZ2FiZXdlcnQgZGVzIFNldFByb3Agd2lyZCBhbHMgUGZhZCB6dSBlaW5lbSBBdXN3ZWljaC0KKyAgICAgQXVmd2FjaC1SYXVtIGludGVycHJldGllcnQgdW5kIGRlciBTcGllbGVyIHdpcmQgaW4gZGVtIEZhbGwgZG9ydGhpbgorICAgICBiZXdlZ3QuCisKK0JFTUVSS1VOR0VOOgorICAgICBadW0gQ2xvbmVuIHZvbiBSYWV1bWVuIHNvbGx0ZW4gVmlydHVhbCBDb21waWxlciBiZW51dHp0IHdlcmRlbjoKKyAgICAgV2lyZCBpbiBkZW4gZXJ6ZXVndGVuIE9iamVrdG5hbWVuIEtFSU4gJyMnIHZlcndlbmRldCwgZGFubiBpc3QgZGllc2UKKyAgICAgUHJvcGVydHkgbmljaHQgc2lubnZvbGwgdW5kIHdpcmQgbmljaHQgdmVyd2VuZGV0LiBFaW4gb3JkZW50bGljaGVyCisgICAgIFZDIGthbm4gQmV3ZWdlbiBlaW5lcyBTcGllbGVycyBpbiBkZXNzZW4gYWx0ZW4sIG5pY2h0IG1laHIgZXhpc3RpZXJlbmRlbgorICAgICBSYXVtIG9kZXIgZWluZW4gRXJzYXR6cmF1bSBiZWltIEF1ZndhY2hlbiBzZWxic3QgbG9lc2VuLgorCitCRUlTUElFTEU6CisgICAgIC8vICMxOiBnZWNsb250ZXIgUmF1bSBtaXQgQXVzd2VpY2gtQXVmd2FjaHJhdW06IEtsZXJ1cy1HaWxkZQorICAgICAjaW5jbHVkZSA8cHJvcGVydGllcy5oPgorICAgICBpbmhlcml0ICIvc3RkL3Jvb20iOworICAgICAKKyAgICAgdm9pZCBjcmVhdGUoKSB7CisgICAgICAgOjpjcmVhdGUoKTsKKworICAgICAgIFNldFByb3AoUF9ORVRERUFEX0lORk8sICIvZ2lsZGVuL2tsZXJ1cyIpOworICAgICAgIFNldFByb3AoUF9MSUdIVCwgMSk7CisgICAgIH0KKyAgICAgCisgICAgIC8vICMyOiBrb21wbGV4ZXJlciBCZWlzcGllbHJhdW0gZnVlciBQX05FVERFQURfSU5GTy1GdW5rdGlvbmFsaXRhZXQKKyAgICAgLy8gU2llaGUgYXVjaDogL2RvYy9iZWlzcGllbGUvdGVzdG9iamVrdGUvbmV0ZGVhZF9pbmZvX3Rlc3RyYXVtLmMKKyAgICAgI2luY2x1ZGUgPHByb3BlcnRpZXMuaD4KKyAgICAgaW5oZXJpdCAiL3N0ZC9yb29tIjsKKworICAgICB2b2lkIGNyZWF0ZSgpIHsKKyAgICAgICA6OmNyZWF0ZSgpOworCisgICAgICAgaWYgKGNsb25lcCh0aGlzX29iamVjdCgpKSkKKyAgICAgICAgIC8vIHNldHplIEluZm9ybWF0aW9uZW4sIGRpZSBpbSBOZXR6dG90ZW4gZ2VzcGVpY2hlcnQgd2VyZGVuIHNvbGxlbgorICAgICAgICAgU2V0KFBfTkVUREVBRF9JTkZPLCByYW5kb20oNSkpOworICAgICAgIGVsc2UKKyAgICAgICAgIC8vIEJsdWVwcmludDogaGllciBrYW5uIG1hbiB6dSBlaW5lbSBDbG9uZXJhdW0gZ2VoZW4KKyAgICAgICAgIEFkZEV4aXQoImNsb25lcmF1bSIsICMnY3JlYXRlX3Jvb20pOworCisgICAgICAgLy8gU2V0LU1ldGhvZCwgdW0gZGllIEluZm9ybWF0aW9uZW4gYXVzIFBfTkVUREVBRF9JTkZPIGJlaW0gQXVmd2FjaGVuCisgICAgICAgLy8gaW4gZGVyIEJsdWVwcmludCBhdXN3ZXJ0ZW4genUga29lbm5lbgorICAgICAgIFNldChQX05FVERFQURfSU5GTywgIydjcmVhdGVfZGVzdGlueSwgRl9TRVRfTUVUSE9EKTsKKyAgICAgICBTZXRQcm9wKFBfTElHSFQsIDEpOworICAgICB9CisgICAgIAorICAgICAvLyBSYXVtIGVudGZlcm5lbiwgbm9ybWFsZXJ3ZWlzZSBzbyBLRUlORSBHVVRFIElERUUhCisgICAgIHZvaWQgQmVjb21lc05ldERlYWQob2JqZWN0IHBsKSB7CisgICAgICAgY2FsbF9vdXQoIydyZW1vdmUsIDMwKTsKKyAgICAgfQorCisgICAgIC8vIGVyemV1Z2UgZWluZW4gQ2xvbmVyYXVtIHVuZCBiZXdlZ2UgZGVuIFNwaWVsZXIgZGFoaW4KKyAgICAgaW50IGNyZWF0ZV9yb29tKHN0cmluZyBkaXIpIHsKKyAgICAgICBvYmplY3QgZGVzdCA9IGNsb25lX29iamVjdChvYmplY3RfbmFtZSh0aGlzX29iamVjdCgpKSk7CisgICAgICAgdGhpc19wbGF5ZXIoKS0+bW92ZShkZXN0LCBNX05PQ0hFQ0spOworICAgICAgIHJldHVybiAxOworICAgICB9CisgICAgIAorICAgICAvLyBTZXQtTWV0aG9kIGZ1ZXIgUF9ORVRERUFEX0lORk86IGdpYnQgUGZhZCB6dXJ1ZWNrCisgICAgIC8vIGJlbnV0emUgZGllIEluZm9ybWF0aW9uZW4gYXVzIGRlbSBqZXR6dCBhdWZ3YWNoZW5kZW4gTmV0enRvdGVuLCB1bQorICAgICAvLyBlaW5lbiBhbHRlcm5hdGl2ZW4gQXVmd2FjaHJhdW0genUgZXJtaXR0ZWxuLCBkYSBkZXIgRWluc2NobGFmcmF1bQorICAgICAvLyB6ZXJzdG9lcnQgaXN0CisgICAgIHN0cmluZyBjcmVhdGVfZGVzdGlueShtaXhlZCB2YWwpIHsKKyAgICAgICBpZiAoaW50cCh2YWwpKSB7CisgICAgICAgICBzd2l0Y2ggKHZhbCkgeworICAgICAgICAgICBjYXNlIDA6CisgICAgICAgICAgICAgcmV0dXJuICIvZC9lYmVuZS9yb29tL1BvcnRWYWluL3BvX2hhZjEiOworICAgICAgICAgICBjYXNlIDE6CisgICAgICAgICAgICAgcmV0dXJuICIvZ2lsZGVuL2tsZXJ1cyI7CisgICAgICAgICAgIGNhc2UgMjoKKyAgICAgICAgICAgICByZXR1cm4gIi9naWxkZW4va2FyYXRlIjsKKyAgICAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgIH0KKyAgICAgICAgIHJldHVybiAiL2QvZWJlbmUvcm9vbS93YWxkd2VnNCI7CisgICAgICAgfQorICAgICB9CisKKzIuIEphbiAyMDEyIEdsb2luc29uCmRpZmYgLS1naXQgYS9kb2MvcHJvcHMvUF9ORVZFUkRST1AgYi9kb2MvcHJvcHMvUF9ORVZFUkRST1AKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uODAzNjRjZQotLS0gL2Rldi9udWxsCisrKyBiL2RvYy9wcm9wcy9QX05FVkVSRFJPUApAQCAtMCwwICsxLDI5IEBACitOQU1FOgorCVBfTkVWRVJEUk9QCQkJIm5ldmVyZHJvcCIKKworREVGSU5JRVJUIElOOgorCS9zeXMvdGhpbmcvbW92aW5nLmgKKworQkVTQ0hSRUlCVU5HOgorCU9iamVrdGUsIHdlbGNoZSBkaWVzZSBQcm9wZXJ0eSBnZXNldHp0IGhhYmVuLCB3ZXJkZW4gYmVpbSBUb2QgZWluZXMKKwlMZWJld2VzZW5zIG5pY2h0IGF1dG9tYXRpc2NoIGluIGRpZSBMZWljaGUgb2RlciBpbiBkZW4gdW1nZWJlbmRlbgorCVJhdW0gKHouQi4gYmVpIGJlaSBnZXNldHp0ZW0gUF9OT0NPUlBTRSkgdHJhbnNwb3J0aWVydC4KKworQkVNRVJLVU5HRU46CisJU29sbCBkYXMgT2JqZWt0IHZvbSBMZWJld2VzZW4gbmljaHQgd2VnZ2VsZWd0IHdlcmRlbiBrb2VubmVuLCBzbyBpc3QKKwlkaWUgUHJvcGVydHkgUF9OT0RST1AgenUgdmVyd2VuZGVuLgorCUJlaWRlIFByb3BlcnRpZXMgenVzYW1tZW4gc3RlbGxlbiBzaWNoZXIsIGRhc3MgZWluIE9iamVrdCBuaWNodAorCXdlaXRlcmdlZ2ViZW4gd2VyZGVuIGthbm4uCisKK0JFSVNQSUVMRToKKwlFaW5lIGRhdWVyaGFmdGUgQmVsb2hudW5nLCBkaWUgYXVjaCBiZWltIFRvZCBkZXMgU3BpZWxlcnMgYmVpIGlobQorCXZlcmJsZWliZW4gc29sbCwgc2V0enQgZGFzIHNvOgorCSAgU2V0UHJvcChQX05FVkVSRFJPUCwxKTsKKwlTb2xsZW4gYXVjaCBSZWJvb3RzIHVlYmVyc3RhbmRlbiB3ZXJkZW4sIGlzdCB6dXNhZXR6bGljaAorCVBfQVVUT0xPQURPQkogenUgc2V0emVuLgorCitTSUVIRSBBVUNIOgorCVBfTk9EUk9QLCBQX05PR0VULCBQX05PQ09SUFNFLCBQX0FVVE9MT0FET0JKLCAvc3RkL2xpdmluZy9saWZlLmMKKworLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorTGFzdCBtb2RpZmllZDogVGh1IEp1biAxNCAyMjoyNjoyOSAyMDAxIGJ5IFBhdHJ5bgpkaWZmIC0tZ2l0IGEvZG9jL3Byb3BzL1BfTkVWRVJfQ0xFQU4gYi9kb2MvcHJvcHMvUF9ORVZFUl9DTEVBTgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41YTg0ODIwCi0tLSAvZGV2L251bGwKKysrIGIvZG9jL3Byb3BzL1BfTkVWRVJfQ0xFQU4KQEAgLTAsMCArMSwzNSBAQAorTkFNRToKKwlQX05FVkVSX0NMRUFOCQkJIiBuZXZlciBjbGVhbiAiICAgICAgICAgICAgICAgICAgIAorCitERUZJTklFUlQgSU46CisJL3N5cy9yb29tcy5oCisKK0JFU0NIUkVJQlVORzoKKwlOb3JtYWxlcndlaXNlIHdpcmQgZWluIFJhdW0gbmFjaCAyIFJlc2V0cyB6ZXJzdG9lcnQsIHdlbm4gZXIgd2FlcmVuZAorCWRpZXNlciBaZWl0IHZvbiBrZWluZW0gTGViZXdlc2VuIGJldHJldGVuIHd1cmRlIHVuZCB3ZW5uCisJa2VpbmUgUkVGUkVTSF9OT05FLSBvZGVyIFJFRlJFU0hfREVTVFJVQ1QtT2JqZWt0ZSBleGlzdGllcmVuLCBkaWUKKwluaWNodCBtZWhyIGltIFJhdW0gdm9yaGFuZGVuIHNpbmQuCisJTWl0IGRpZXNlciBQcm9wZXJ0eSBrYW5uIG1hbiBkZW4gc29nZW5hbm50ZW4gQ2xlYW4tVXAgdW50ZXJiaW5kZW4uCisKK0JFSVNQSUVMOgorCURlciBmb2xnZW5kZSBSYXVtIHdpcmQgbmljaHQgbWVociB6ZXJzdG9lcnQsIHdlbm4gZXIgZWlubWFsIGdlbGFkZW4KKwl3dXJkZToKKwkgICNpbmNsdWRlIDxwcm9wZXJ0aWVzLmg+CisJICAvLyAjaW5jbHVkZSA8cm9vbXMuaD4gLi4uIHdpcmQgc2Nob24gdm9uIHByb3BlcnRpZXMuaCBpbmNsdWRlZCEKKwkgIGluaGVyaXQgInN0ZC9yb29tIjsKKwkgIHZvaWQgY3JlYXRlKCkKKwkgIHsgOjpjcmVhdGUoKTsKKwkgICAgU2V0UHJvcChQX1NIT1JULCJFaW4gdG9sbGVyIFJhdW0iKTsKKwkgICAgLi4uCisJICAgIFNldFByb3AoUF9ORVZFUl9DTEVBTiwxKTsKKwkgICAgLi4uCisJICB9CisJTWFuIHNvbGx0ZSBkaWUgQW53ZW5kdW5nIG5pY2h0IHVlYmVydHJlaWJlbiEgV2ljaHRpZyBpc3QgZGllc2UKKwlGdW5rdGlvbiB6dW0gQmVpc3BpZWwgZnVlciBSYWV1bWUsIGRpZSBnbGVpY2h6ZWl0aWcgTWFzdGVyb2JqZWt0ZQorCWRhcnN0ZWxsZW4uCisKK1NJRUhFIEFVQ0g6CisJL3N0ZC9yb29tLmMKKworLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorTGFzdCBtb2RpZmllZDogV2VkIEZlYiAgMyAwMDo1NDozMiAxOTk5IGJ5IFBhdHJ5bgpkaWZmIC0tZ2l0IGEvZG9jL3Byb3BzL1BfTkVXU0tJTExTIGIvZG9jL3Byb3BzL1BfTkVXU0tJTExTCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjY2YmExZmYKLS0tIC9kZXYvbnVsbAorKysgYi9kb2MvcHJvcHMvUF9ORVdTS0lMTFMKQEAgLTAsMCArMSwyMCBAQAorTkFNRToKKwlQX05FV1NLSUxMUwkJCSJuZXdza2lsbHMiICAgICAgICAgICAgICAgICAgIAorCitERUZJTklFUlQgSU46CisJL3N5cy9uZXdfc2tpbGxzLmgKKworQkVTQ0hSRUlCVU5HOgorCUluIGRpZXNlciBQcm9wZXJ0eSBzaW5kIHNhZW10bGljaGUgU2tpbGxzIHVuZCBTcGVsbHMgdmVybWVya3QsIGRpZQorCWRhcyBMZWJld2VzZW4ga2VubnQuCisKK0JFTUVSS1VOR0VOOgorCU1hbiBzb2xsdGUgZGllc2UgUHJvcGVydHkgbmljaHQgcGVyIEhhbmQgdmVyYWVuZGVybiwgc29uZGVybiBkaWUKKwlGdW5rdGlvbmVuIHZvbiAiL3N0ZC9saXZpbmcvc2tpbGxzLmMiIG51dHplbi4KKworU0lFSEUgQVVDSDoKKwlNb2RpZnlTa2lsbCgpLCBMZWFyblNraWxsKCksIFVzZVNraWxsKCksIC9zdGQvbGl2aW5nL3NraWxscy5jLAorCVBfR1VJTERfU0tJTExTLCBQX1NCX1NQRUxMUworCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCitMYXN0IG1vZGlmaWVkOiBXZWQgSmFuIDE0IDE5OjE3OjA2IDE5OTggYnkgUGF0cnluCmRpZmYgLS1naXQgYS9kb2MvcHJvcHMvUF9ORVhUX0RFQVRIX1NFUVVFTkNFIGIvZG9jL3Byb3BzL1BfTkVYVF9ERUFUSF9TRVFVRU5DRQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi40YWU3ZTdhCi0tLSAvZGV2L251bGwKKysrIGIvZG9jL3Byb3BzL1BfTkVYVF9ERUFUSF9TRVFVRU5DRQpAQCAtMCwwICsxLDQ4IEBACitQX05FWFRfREVBVEhfU0VRVUVOQ0UKKworTkFNRToKKyAgICAgUF9ORVhUX0RFQVRIX1NFUVVFTkNFICAgICAgICAgInBfbGliX25leHRfZGVhdGhfc2VxdWVuY2UiCisKK0RFRklOSUVSVCBJTjoKKyAgICAgL3N5cy9saXZpbmcvY29tYmF0LmgKKworQkVTQ0hSRUlCVU5HOgorICAgICBJbSBTcGllbGVyIGthbm4gZGFtaXQgZGVzc2VuIGVpZ2VuZSBUb2Rlc3NlcXVlbnogZnVlciBkZW4gbmFlY2hzdGVuCisgICAgIFRvZCBmZXN0Z2VsZWd0IHdlcmRlbi4gTmFjaCBlaW5lbSBUb2QgKGVnYWwgd2VsY2hlIFRvZGVzc2VxdWVuegorICAgICBnZXdhZWhsdCB3dXJkZSkgd2lyZCBkaWUgUHJvcGVydHkgZ2Vsb2VzY2h0IHVuZCBtdWVzc3RlIG5ldSBnZXNldHp0CisgICAgIHdlcmRlbi4KKworICAgICBFcyBnaWJ0IGZvbGdlbmRlIGd1ZWx0aWdlIFdlcnRlOgorICAgICAtIHN0cmluZzogUGZhZCB6dSBlaW5lciBlaWdlbmVuIFRvZGVzc2VxdWVueiBpbSBndWVsdGlnZW4gRm9ybWF0CisgICAgIC0gbWl4ZWQqICBFaW5lIFRvZGVzc2VxdWVueiBpbSBGb3JtYXQgZGVzIFRvZGVzcmF1bWVzOgorICAgICAgICAgICAgICAgKHs8aW50IGdlc2FtdGxhZW5nZT4sCisgICAgICAgICAgICAgICAgIChbPGludCBpbmRleDE+OiA8c3RyaW5nIHVtZ2Vicm9jaGVuZSBNZWxkdW5nMT4sCisgICAgICAgICAgICAgICAgICAgPGludCBpbmRleDI+OiA8c3RyaW5nIHVtZ2Vicm9jaGVuZSBNZWxkdW5nMj4sCisgICAgICAgICAgICAgICAgICAgLi4uXSkKKyAgICAgICAgICAgICAgIH0pCisgICAgIC0gbWFwcGluZyBJbiBkaWUgU3RhbmRhcmQtTGFycy1Ub2Rlc3NlcXVlbnogZWluenVmdWVnZW5kZSBaZWlsZW46CisgICAgICAgICAgICAgICAoWzxpbnQgemVpdGluZGV4PjogPHN0cmluZyB1bWdlYnJvY2hlbmVyIFRleHQ+XSkKKworQkVNRVJLVU5HRU46CisgICAgIEVpbmUgVG9kZXNzZXF1ZW56IGVpbmVzIEdlZ25lcnMsIGZlc3RnZWxlZ3QgdWViZXIKKyAgICAgUF9FTkVNWV9ERUFUSF9TRVFVRU5DRSBoYXQgVm9ycmFuZyB2b3IgZGllc2VyIFByb3BlcnR5LgorCitCRUlTUElFTEU6CisgICAgIC8vIFBmYWQgenUgZWluZXIgZWlnZW5lbiBEU1EKKyAgICAgU2V0UHJvcChQX05FWFRfREVBVEhfU0VRVUVOQ0UsICAiLi4uL3Bhc3NlbmRlX2RzcS50eHQiKTsKKworICAgICAvLyBlaWdlbmUgRFNRIGltIFRvZGVzcmF1bWZvcm1hdDoKKyAgICAgU2V0UHJvcChQX05FWFRfREVBVEhfU0VRVUVOQ0UsCisgICAgICAgICAgICAgKHsgMiwgKFsxOiAiRGVyIFRvZCBlbnRsYWVzc3QgZGljaCBlaWxpZy5cbiJdKX0pKTsKKworICAgICAvLyBFaW5mdWVnZW4gZWluZXIgTWVsZHVuZyBpbiBkaWUgU3RhbmRhcmQtVG9kZXNzZXF1ZW56CisgICAgIFNldFByb3AoUF9ORVhUX0RFQVRIX1NFUVVFTkNFLAorICAgICAgICAgICAgIChbNTogIkR1IGZ1ZWhsc3QgZGljaCBldHdhcyBkYWVtbGljaC5cbiJdKSk7CisKK1NJRUhFIEFVQ0g6CisgICAgIFRvZDogICAgICAgICAgICBkaWUoTCkKKyAgICAgVG9kZXNtZWxkdW5nZW46IFBfS0lMTF9OQU1FLCBQX0tJTExfTVNHLCBQX0RJRV9NU0csIFBfTVVSREVSX01TRworICAgICAgICAgICAgICAgICAgICAgUF9aQVBfTVNHLCBQX0VORU1ZX0RFQVRIX1NFUVVFTkNFCisgICAgIFNvbnN0aWdlczogICAgICBQX0NPUlBTRSwgUF9OT0NPUlBTRSwgL3Jvb20vZGVhdGgvZGVhdGhfcm9vbS5jCisKKzEwLiBOb3YgMjAxMSBHbG9pbnNvbgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2RvYy9wcm9wcy9QX05FWFRfRElTQUJMRV9BVFRBQ0sgYi9kb2MvcHJvcHMvUF9ORVhUX0RJU0FCTEVfQVRUQUNLCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjcwMTlhYzYKLS0tIC9kZXYvbnVsbAorKysgYi9kb2MvcHJvcHMvUF9ORVhUX0RJU0FCTEVfQVRUQUNLCkBAIC0wLDAgKzEsMzEgQEAKK1BST1BFUlRZCisgIFBfTkVYVF9ESVNBQkxFX0FUVEFDSyAgICAibmV4dF9kaWFibGVfYXR0YWNrIgorCitERUZJTklFUlQgSU4gCisgIGNvbWJhdC5oCisKK0JFU0NIUkVJQlVORworICBEaWVzZSBQcm9wZXJ0eSBnaWJ0IGFuLCB3YW5uIGRlciBOUEMgZGFzIG5hZWNoc3RlIE1hbCBwYXJhbHlzaWVydAorICB3ZXJkZW4ga2Fubi4gVWVibGljaGVyd2Vpc2Ugd2lyZCBzaWUgYXV0b21hdGlzY2ggYmVpbSBTZXR6ZW4KKyAgdm9uIFBfRElTQUJMRV9BVFRBQ0sgZ2VzZXR6dC4gU2llIGdpYnQgZWluZW4gWmVpdHB1bmt0IHdpZQorICBkaWUgRnVua3Rpb24gdGltZSgpIGFuLCBhbiBkZW0genVtIGVyc3RlbiBNYWwgd2llZGVyIFBhcmFseXNlCisgIG1vZWdsaWNoIGlzdC4KKworICBXaWxsIG1hbiBlaW5lbiBOUEMgc2NocmVpYmVuLCBkZXIgaW1tZXIgcGFyYWx5c2llcmJhciBpc3QgdW5kIG5pY2h0IGVyc3QKKyAgbmFjaCBlaW5lciBnZXdpc3NlbiBXYXJ0ZXplaXQgbmFjaCBkZXIgbGV0enRlbiBQYXJhbHlzZSwgbGFlc3N0IHNpY2ggZGllcworICBkdXJjaCBlaW5lIFNldC1NZXRob2RlIGF1ZiBQX05FWFRfRElTQUJMRV9BVFRBQ0sgZXJyZWljaGVuOgorICAgIAorICBTZXQoUF9ORVhUX0RJU0FCTEVfQVRUQUNLLCBmdW5jdGlvbiBpbnQgKCkge3JldHVybiAwO30sIEZfU0VUX01FVEhPRCk7CisKKyAgRGllc2UgU2V0LU1ldGhvZGUgdmVyaGluZGVydCBkYXMgU2V0emVuIHZvbiBQX05FWFRfRElTQUJMRV9BVFRBQ0sgbWl0dGVscworICBlaW5lcyBTZXRQcm9wLUF1ZnJ1ZmVzLgorCitCRU1FUktVTkdFTjoKKyAgRGllIFplaXQgenVtIFNjaHV0eiB2b3IgZXJuZXV0ZXIgUGFyYWx5c2UgZXhpc3RpZXJ0IGFic2ljaHRsaWNoLiBCaXR0ZQorICB3YWVndCBzb3JnZmFlbHRpZyBhYiwgYmV2b3IgaWhyIGRpZXNlIFByb3BlcnR5IGFuIEdlZ25lcm4vU3BpZWxlcm4KKyAgbWFuaXB1bGllcnQuCisKK1NJRUhFIEFVQ0g6CisgIFBfRElTQUJMRV9BVFRBQ0sKKworMjEuSnVsIDIwMTQgR2xvaW5zb24KZGlmZiAtLWdpdCBhL2RvYy9wcm9wcy9QX05PQlVZIGIvZG9jL3Byb3BzL1BfTk9CVVkKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNTYxYmJiYQotLS0gL2Rldi9udWxsCisrKyBiL2RvYy9wcm9wcy9QX05PQlVZCkBAIC0wLDAgKzEsMTAgQEAKK05BTUU6CisgICAgUF9OT0JVWSAgICAgICAgICAgICAgICAgICAgICAgIm5vYnV5IiAgICAgICAgICAgICAgICAgICAgICAgCisKK0RFRklOSUVSVCBJTjoKKyAgICAvc3lzL3Byb3BlcnRpZXMuaAorCitCRVNDSFJFSUJVTkc6CisgICAgIFdlbm4gZGllc2UgUHJvcGVydHkgZ2VzZXR6dCBpc3QsIHdpcmQgZGFzIE9iamVrdCBuYWNoIGVpbmVtCisgICAgIFZlcmthdWYgaW0gTGFkZW4gemVyc3RvZXJ0LCBkYW1pdCBlcyBuaWNodCB3aWVkZXIgdm9uIGVpbmVtIFNwaWVsZXIKKyAgICAgZ2VrYXVmdCB3ZXJkZW4ga2Fubi4KZGlmZiAtLWdpdCBhL2RvYy9wcm9wcy9QX05PQ09SUFNFIGIvZG9jL3Byb3BzL1BfTk9DT1JQU0UKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNzk5MzkxYQotLS0gL2Rldi9udWxsCisrKyBiL2RvYy9wcm9wcy9QX05PQ09SUFNFCkBAIC0wLDAgKzEsMzAgQEAKK05BTUU6CisJUF9OT0NPUlBTRQkJCSJub2NvcnBzZSIKKworREVGSU5JRVJUIElOOgorCS9zeXMvcHJvcGVydGllcy5oCisKK0JFU0NIUkVJQlVORzoKKwlEaWVzZSBQcm9wZXJ0eSBpc3QgZ2VzZXR6dCwgd2VubiBpbSBUb2Rlc2ZhbGwga2VpbiBMZWljaG5hbQorCWF1dG9tYXRpc2NoIGVyemV1Z3Qgd2VyZGVuIHNvbGwuCisKK0JFTUVSS1VOR0VOOgorCUluIGRpZXNlbSBGYWxsIHdpcmQgZGllIFByb3BlcnR5IFBfQ09SUFNFIGlnbm9yaWVydCwgbWl0IGRlciBtYW4KKwllaW4gc3BlemllbGxlcyBMZWljaGVub2JqZWt0IGFuZ2ViZW4ga2Fubiwgc29mZXJuIG5pY2h0IGRpZQorCVN0YW5kYXJkbGVpY2hlICIvc3RkL2NvcnBzZS5jIiB2ZXJ3ZW5kZXQgd2VyZGVuIHNvbGwuCisJRGEgZGllIE1vZXJkZXJtZWxkdW5nZW4gdWViZXIgZWJlbmRpZXNlIE9iamVrdCBsYXVmZW4sIHdlcmRlbgorCWhpZXJiZWkgYXVjaCBrZWluZSBhdXNnZWdlYmVuLgorCitCRUlTUElFTEU6CisJRGFzIExlYmV3ZXNlbiBzb2xsIGtlaW5lIExlaWNoZSBoaW50ZXJsYXNzZW4sIHdlaWwgZXMgenUgU3RhdWIKKwl6ZXJmYWVsbHQ6CisJICBTZXRQcm9wKFBfRElFX01TRywiIHplcmZhZWxsdCB6dSBTdGF1YiFcbiIpOworCSAgU2V0UHJvcChQX05PQ09SUFNFLDEpCisJRXMgd3VyZGUgYXVjaCBnbGVpY2ggZGllIFN0ZXJiZW1lbGR1bmcgZGVtZW50c3ByZWNoZW5kIGdlc2V0enQuCisKK1NJRUhFIEFVQ0g6CisJUF9DT1JQU0UsIFBfWkFQX01TRywgUF9ESUVfTVNHLCBQX01VUkRFUl9NU0csIFBfS0lMTF9NU0csCisJUF9ORVZFUkRST1AsIC9zdGQvY29ycHNlLmMKKworLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorTGFzdCBtb2RpZmllZDogVGh1IEp1biAxNCAyMjoyNjoyOSAyMDAxIGJ5IFBhdHJ5bgpkaWZmIC0tZ2l0IGEvZG9jL3Byb3BzL1BfTk9EUklOS19NU0cgYi9kb2MvcHJvcHMvUF9OT0RSSU5LX01TRwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4zZjg0N2M3Ci0tLSAvZGV2L251bGwKKysrIGIvZG9jL3Byb3BzL1BfTk9EUklOS19NU0cKQEAgLTAsMCArMSwyNSBAQAorTkFNRToKKyAgICAgUF9OT0RSSU5LX01TRyAgICAgICAgICAgICAgICAgInN0ZF9mb29kX25vZHJpbmtfbXNnIgorCitERUZJTklFUlQgSU46CisgICAgIDxzeXMvZm9vZC5oPgorCitCRVNDSFJFSUJVTkc6CisgICAgIE1lbGR1bmcgYW4gZGVuIEtvbnN1bWVudGVuLCB3ZW5uIHZlcnN1Y2h0IHdpcmQsIGVpbiBOaWNodC1HZXRyYWVuaworICAgICB6dSB0cmlua2VuLiBTb2JhbGQgZWluZSBTcGVpc2UgZWluZW4gV2VydCBpbiBQX0ZPT0Qgc2V0enQsIGdpbHQgZXMgYWxzCisgICAgIE5pY2h0LUdldHJhZW5rLgorICAgICAKK0JFTUVSS1VOR0VOOgorICAgICBEaWVzZSBNZWxkdW5nIHdpcmQgdm9uIHJlcGxhY2VfcGVyc29uYWwgbWl0IGRlbiBBcmd1bWVudGVuOgorICAgICAxLiBTcGVpc2UKKyAgICAgMi4gS29uc3VtZW50CisgICAgIHZlcmFyYmVpdGV0LCBrYW5uIGFscyBlbnRzcHJlY2hlbmRlIFBsYXR6aGFsdGVyIGVudGhhbHRlbgorICAgICAKK0RFRkFVTFQ6CisgICAgICJAV0VOMSBrYW5uIG1hbiBuaWNodCB0cmlua2VuISIKKworU0lFSEUgQVVDSDoKKyAgICAgUF9GT09ELCBQX0RSSU5LLCB3aXovZm9vZCwgcmVwbGFjZV9wZXJzb25hbAorCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KK0xhc3QgbW9kaWZpZWQ6IFRodSBPY3QgMjggMTI6MTU6MDAgMjAxMCBieSBDYWxkcmEKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9kb2MvcHJvcHMvUF9OT0RST1AgYi9kb2MvcHJvcHMvUF9OT0RST1AKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMzdlYjViNQotLS0gL2Rldi9udWxsCisrKyBiL2RvYy9wcm9wcy9QX05PRFJPUApAQCAtMCwwICsxLDM5IEBACitOQU1FOgorCVBfTk9EUk9QCQkJIm5vZHJvcCIgICAgICAgICAgICAgICAgICAgICAgCisKK0RFRklOSUVSVCBJTjoKKwkvc3lzL3RoaW5nL21vdmluZy5oCisKK0JFU0NIUkVJQlVORzoKKwlJc3QgZGllc2UgUHJvcGVydHkgaW4gZWluZW0gT2JqZWt0IGdlc2V0enQsIHNvIGthbm4gZWluIExlYmV3ZXNlbgorCWRhcyBPYmpla3QgbmljaHQgd2VnbGVnZW4uCisJQWxzIFN0YW5kYXJkbWVsZHVuZyBrb21tdCBpbiBkaWVzZW0gRmFsbCBiZWlzcGllbHN3ZWlzZToKKwkgIER1IGthbm5zdCA8T2JqZWt0bmFtZT4gbmljaHQgd2Vnd2VyZmVuIQorCSAgRHUga2FubnN0IDxPYmpla3RuYW1lPiBuaWNodCB3ZWdnZWJlbi4KKwlNYW4ga2FubiBhdWNoIGVpbmUgYWx0ZXJuYXRpdmUgTWVsZHVuZyBhbmdlYmVuLCB3b2JlaSBzZWxic3RhZW5kaWcKKwlhdWYgZWluZW4ga29ycmVrdGVuIFplaWxlbnVtYnJ1Y2ggenUgYWNodGVuIGlzdC4KKworQkVNRVJLVU5HRU46CisJU29sbCBlaW4gT2JqZWt0IGJlaW0gVG9kIGRlcyBMZWJld2VzZW5zIG9kZXIgYmVpIEVuZGUgZWluZXMgU3BpZWxlcnMKKwluaWNodCBpbiBkZXIgTGVpY2hlIGJ6dy4gaW0gUmF1bSB6dXJ1ZWNrZ2VsYXNzZW4gd2VyZGVuLCBzbyBpc3QKKwlkaWUgUHJvcGVydHkgUF9ORVZFUkRST1AgenUgbnV0emVuLgorCUJlaWRlIFByb3BlcnRpZXMgenVzYW1tZW4gc3RlbGxlbiBzaWNoZXIsIGRhc3MgZWluIE9iamVrdCBuaWNodAorCXdlaXRlcmdlZ2ViZW4gd2VyZGVuIGthbm4uCisKK0JFSVNQSUVMRToKKwlFaW4gc2Nod2VyIHp1IGVya2FlbXBmZW5kZXIgRG9sY2gga29lbm50ZSBmb2xnZW5kZXMgYmVpbmhhbHRlbiwKKwl1bSBuaWNodCB3ZWl0ZXJnZWdlYmVuIHdlcmRlbiB6dSBrb2VubmVuOgorCSAgU2V0UHJvcChQX05PRFJPUCwxKTsKKwlJbmZvcm1hdGl2ZXIgamVkb2NoIGlzdCBlaW5lIGVpZ2VuZSBNZWxkdW5nOgorCSAgU2V0UHJvcChQX05PRFJPUCwKKwkgIkRlbiBEb2xjaCBoYXN0IER1IERpciBoYXJ0IGVya2FlbXBmdCwgbmljaHQgd2Vnd2VyZmVuIVxuIik7CisKK1NJRUhFIEFVQ0g6CisgICAgIEFlaG5saWNoZXM6IFBfTk9HRVQsIFBfTkVWRVJEUk9QLCBQX1RPT19IRUFWWV9NU0csIFBfRU5WX1RPT19IRUFWWV9NU0csCisgICAgICAgICAgICAgICAgIFBfVE9PX01BTllfTVNHLCBQX05PSU5TRVJUX01TRywgUF9OT0xFQVZFX01TRywgIAorICAgICBFcmZvbGc6ICAgICBQX1BJQ0tfTVNHLCBQX0RST1BfTVNHLCBQX0dJVkVfTVNHLCBQX1BVVF9NU0csCisgICAgICAgICAgICAgICAgIFBfV0VBUl9NU0csIFBfV0lFTERfTVNHCisgICAgIFNvbnN0aWdlczogIHJlcGxhY2VfcGVyc29uYWwoRSksIC9zdGQvbGl2aW5nL3B1dF9hbmRfZ2V0LmMKKworLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorTGFzdCBtb2RpZmllZDogVGh1IEp1biAxNCAyMjoyNjoyOSAyMDAxIGJ5IFBhdHJ5bgpkaWZmIC0tZ2l0IGEvZG9jL3Byb3BzL1BfTk9GT09EX01TRyBiL2RvYy9wcm9wcy9QX05PRk9PRF9NU0cKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYzM2N2I3YwotLS0gL2Rldi9udWxsCisrKyBiL2RvYy9wcm9wcy9QX05PRk9PRF9NU0cKQEAgLTAsMCArMSwyNSBAQAorTkFNRToKKyAgICAgUF9OT0ZPT0RfTVNHICAgICAgICAgICAgICAgICAgInN0ZF9mb29kX25vZm9vZF9tc2ciCisKK0RFRklOSUVSVCBJTjoKKyAgICAgPHN5cy9mb29kLmg+CisKK0JFU0NIUkVJQlVORzoKKyAgICAgTWVsZHVuZyBhbiBkZW4gS29uc3VtZW50ZW4sIHdlbm4gdmVyc3VjaHQgd2lyZCwgZWluIEdldHJhZW5rIHp1IGVzc2VuLgorICAgICBTb2JhbGQgZWluZSBTcGVpc2Uga2VpbmVuIFdlcnQgaW4gUF9GT09EIHVuZCBlaW5lbiBXZXJ0IGluIFBfRFJJTksKKyAgICAgc2V0enQsIGdpbHQgZXMgYWxzIEdldHJhZW5rLgorICAgICAKK0JFTUVSS1VOR0VOOgorICAgICBEaWVzZSBNZWxkdW5nIHdpcmQgdm9uIHJlcGxhY2VfcGVyc29uYWwgbWl0IGRlbiBBcmd1bWVudGVuOgorICAgICAxLiBTcGVpc2UKKyAgICAgMi4gS29uc3VtZW50CisgICAgIHZlcmFyYmVpdGV0LCBrYW5uIGFscyBlbnRzcHJlY2hlbmRlIFBsYXR6aGFsdGVyIGVudGhhbHRlbgorICAgICAKK0RFRkFVTFQ6CisgICAgICJAV0VOMSBrYW5uIG1hbiBuaWNodCBlc3NlbiEiCisKK1NJRUhFIEFVQ0g6CisgICAgIFBfRk9PRCwgUF9EUklOSywgd2l6L2Zvb2QsIHJlcGxhY2VfcGVyc29uYWwKKworLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCitMYXN0IG1vZGlmaWVkOiBUaHUgT2N0IDI4IDEyOjE1OjAwIDIwMTAgYnkgQ2FsZHJhClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZG9jL3Byb3BzL1BfTk9HRVQgYi9kb2MvcHJvcHMvUF9OT0dFVApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5hZjNlZDFkCi0tLSAvZGV2L251bGwKKysrIGIvZG9jL3Byb3BzL1BfTk9HRVQKQEAgLTAsMCArMSwzMSBAQAorTkFNRToKKwlQX05PR0VUCQkJCSJub2dldCIKKworREVGSU5JRVJUIElOOgorCS9zeXMvdGhpbmcvbW92aW5nLmgKKworQkVTQ0hSRUlCVU5HOgorCUlzdCBkaWVzZSBQcm9wZXJ0eSBpbiBlaW5lbSBPYmpla3QgZ2VzZXR6dCwgc28ga2FubiBlaW4gTGViZXdlc2VuCisJZGFzIE9iamVrdCBuaWNodCBuZWhtZW4uCisJQWxzIFN0YW5kYXJkbWVsZHVuZyBrb21tdCBpbiBkaWVzZW0gRmFsbCBiZWlzcGllbHN3ZWlzZToKKwkgIER1IGthbm5zdCA8T2JqZWt0bmFtZT4gbmljaHQgbmVobWVuLgorCSAgRHUga2FubnN0IDxPYmpla3RuYW1lPiBzbyBuaXJnZW5kd28gcmVpbnN0ZWNrZW4uCisJTWFuIGthbm4gYXVjaCBlaW5lIGFsdGVybmF0aXZlIE1lbGR1bmcgYW5nZWJlbiwgd29iZWkgc2VsYnN0YWVuZGlnCisJYXVmIGVpbmVuIGtvcnJla3RlbiBaZWlsZW51bWJydWNoIHp1IGFjaHRlbiBpc3QuCisKK0JFSVNQSUVMRToKKwlFaW4gT2JqZWt0LCB3ZWxjaGVzIGZlc3QgaW0gUmF1bSB2ZXJhbmtlcnQgaXN0LCBrYW5uIG5hdHVlcmxpY2gKKwluaWNodCBlbnRmZXJudCB3ZXJkZW4sIHouQi4gZWluIGFuZ2VidW5kZW5lcyBTZWlsOgorCSAgU2V0UHJvcChQX05PR0VULCJEYXMgU2VpbCBpc3QgZmVzdCBhbSBCYXVtIHZlcmtub3RldCFcbiIpOworCUluIGVpbmVtIEtvbW1hbmRvIHp1bSBMb3Nrbm90ZW4ga29lbm50ZSBtYW4gZGllIFByb3BlcnR5IGRhbm4KKwlsb2VzY2hlbiwgdW0gZWluIFdlZ25laG1lbiB6dSBlcm1vZWdsaWNoZW4uCisKK1NJRUhFIEFVQ0g6CisgICAgIEFlaG5saWNoZXM6IFBfTk9EUk9QLCBQX1RPT19IRUFWWV9NU0csIFBfRU5WX1RPT19IRUFWWV9NU0csCisgICAgICAgICAgICAgICAgIFBfVE9PX01BTllfTVNHLCBQX05PSU5TRVJUX01TRywgUF9OT0xFQVZFX01TRyAKKyAgICAgRXJmb2xnOiAgICAgUF9QSUNLX01TRywgUF9EUk9QX01TRywgUF9HSVZFX01TRywgUF9QVVRfTVNHLAorICAgICAgICAgICAgICAgICBQX1dFQVJfTVNHLCBQX1dJRUxEX01TRworICAgICBTb25zdGlnZXM6ICByZXBsYWNlX3BlcnNvbmFsKEUpLCAvc3RkL2xpdmluZy9wdXRfYW5kX2dldC5jCisKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KK0xhc3QgbW9kaWZpZWQ6IFRodSBKdW4gMTQgMjI6MjY6MjkgMjAwMSBieSBQYXRyeW4KZGlmZiAtLWdpdCBhL2RvYy9wcm9wcy9QX05PSU5TRVJUX01TRyBiL2RvYy9wcm9wcy9QX05PSU5TRVJUX01TRwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5hNzk5OTRlCi0tLSAvZGV2L251bGwKKysrIGIvZG9jL3Byb3BzL1BfTk9JTlNFUlRfTVNHCkBAIC0wLDAgKzEsNDYgQEAKK05BTUU6CisgICAgUF9OT0lOU0VSVF9NU0cgICAgICAgICAgICAgICAgICAgICAgIm5vaW5zZXJ0X21zZyIgICAgICAgICAgICAgICAgICAgICAgCisKK0RFRklOSUVSVCBJTjoKKyAgICAvc3lzL3RoaW5nL21vdmluZy5oCisKK0JFU0NIUkVJQlVORzoKKyAgICAgRGllc2UgUHJvcGVydHkgZW50aGFlbHQgZWluZSBNZWxkdW5nLCBkaWUgYXVzZ2VnZWJlbiB3aXJkLCB3ZW5uCisgICAgIGplbWFuZCB2ZXJzdWNodCwgZWluIE9iamVrdCBpbiBlaW5lbiBCZWhhZWx0ZXIgenUgYmV3ZWdlbiB1bmQgZGVyCisgICAgIEJlaGFlbHRlciBkaWVzZXMgaW0gUHJldmVudEluc2VydCgpIHZlcmhpbmRlcnQuCisgICAgIERpZSBQcm9wZXJ0eSBpc3QgaW0gWmllbGJlaGFlbHRlciB6dSBzZXR6ZW4uCisgICAgIElzdCBkaWVzZSBQcm9wZXJ0eSBuaWNodCBvZGVyIGF1ZiBlaW5lbiBuaWNodC1TdHJpbmctV2VydCBnZXNldHp0LAorICAgICBzbyB3aXJkIGRpZSBTdGFuZGFyZG1lbGR1bmcgYXVzZ2VnZWJlbi4KKyAgICAgKCI8T2JqZWt0PiBrYW5uc3QgRHUgZG9ydCBuaWNodCBoaW5laW5zdGVja2VuLiIpCisgICAgIERlciBTdHJpbmcgaW4gZGVyIFByb3BlcnR5IHdpcmQgbm9jaCBkdXJjaCByZXBsYWNlX3BlcnNvbmFsKCkKKyAgICAgdmVyYXJiZWl0ZXQsIGRhcyB6dSBiZXdlZ2VuZGUgT2JqZWt0IHdpcmQgYWxzIGVyc3RlcywgZGVyIFppZWxiZWhhZWx0ZXIKKyAgICAgYWxzIHp3ZWl0ZXMgT2JqZWt0IGFuZ2VnZWJlbi4gRGFuYWNoIHdpcmQgZGVyIFN0cmluZyBhdWYgNzggWmVpY2hlbgorICAgICB1bWdlYnJvY2hlbi4KKyAgICAgRGFzIFNldHplbiBlaW5lcyBsZWVyZW4gU3RyaW5ncyB1bnRlcmRydWVja3QgZGllIEF1c2dhYmUgZWluZXIgTWVsZHVuZworICAgICBnYW56LgorCitCRUlTUElFTEU6CisgICAgIDEuIEVpbiBLb2NodG9wZiBsYWVzc3QgaW0gUHJldmVudEluc2VydCBudXIgYmVzdGltbXRlIE9iamVrdGUgenUsIGRpZSB6dQorICAgICBlaW5lciBTdXBwZSBnZWhvZXJlbi4gRnVlciBlaW5lIHBhc3NlbmRlIE1lbGR1bmcgd2lyZCBpbSBUb3BmIGpldHp0IGRpZQorICAgICBQcm9wZXJ0eSBnZXNldHp0OgorICAgICBTZXRQcm9wKFBfTk9JTlNFUlRfTVNHLCAiRHUga2FubnN0IEBXRU4xIG5pY2h0IGluIGRlbiBLb2NodG9wZiB0dW4sIGRhIgorCSAgICAgICAgICAgICAgICAgICAgICIgZ2Vob2VyZW4gZG9jaCBudXIgU3VwcGVuenV0YXRlbiByZWluISIpOworICAgICBXZW5uIGplbWFuZCBqZXR6dCB2ZXJzdWNodCwgZWluZSBNdWVuemUgcmVpbnp1c3RlY2tlbiwgZGFubiB3dWVyZGUKKyAgICAgZm9sZ2VuZGUgTWVsZHVuZyBlcnNjaGVpbmVuOgorCUR1IGthbm5zdCBkaWUgTXVlbnplIG5pY2h0IGluIGRlbiBLb2NodG9wZiB0dW4sIGRhIGdlaG9lcmVuIGRvY2ggbnVyCisJU3VwcGVuenV0YXRlbiByZWluIQorCisgICAgIDIuIEVpbiBSdWNrc2FjayBzb2xsIGluIGVpbmVyIGJlc3RpbW10ZW4gUmVpaGVuZm9sZ2UgZ2VwYWNrdCB3ZXJkZW4sIGRhenUKKyAgICAga2FubiBpbSBQcmV2ZW50SW5zZXJ0IGRpZSBNZWxkdW5nIGplIG5hY2ggQmVkYXJmIGdlc2V0enQgd2VyZGVuOgorICAgICBpZiAoPG9iamVrdCBub2NoIG5pY2h0IGFuIGRlciBSZWloZT4pCisJU2V0UHJvcChQX05PSU5TRVJUX01TRywgIkBXRU4xIHNvbGx0ZXN0IGR1IGVyc3Qgc3BhZXRlciBlaW5wYWNrZW4uIik7CisgICAgIGVsc2UgaWYgKDxvYmpla3Qgc2Nob24gaW0gUnVja3NhY2s+KQorCVNldFByb3AoUF9OT0lOU0VSVF9NU0csICJBYmVyIEBXRVIxIGlzdCBkb2NoIHNjaG9uIGVpbmdlcGFja3QhIik7CisgICAgIGVsc2UgLi4uCisKK1NJRUhFIEFVQ0g6CisgICAgIEFlaG5saWNoZXM6IFBfVE9PX0hFQVZZX01TRywgUF9FTlZfVE9PX0hFQVZZX01TRywgUF9UT09fTUFOWV9NU0csCisgICAgICAgICAgICAgICAgIFBfTk9MRUFWRV9NU0csIFBfTk9EUk9QLCBQX05PR0VUIAorICAgICBFcmZvbGc6ICAgICBQX1BJQ0tfTVNHLCBQX0RST1BfTVNHLCBQX0dJVkVfTVNHLCBQX1BVVF9NU0csCisgICAgICAgICAgICAgICAgIFBfV0VBUl9NU0csIFBfV0lFTERfTVNHCisgICAgIFNvbnN0aWdlczogIHJlcGxhY2VfcGVyc29uYWwoRSksIC9zdGQvbGl2aW5nL3B1dF9hbmRfZ2V0LmMKZGlmZiAtLWdpdCBhL2RvYy9wcm9wcy9QX05PTEVBVkVfTVNHIGIvZG9jL3Byb3BzL1BfTk9MRUFWRV9NU0cKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYzFhZDBmMQotLS0gL2Rldi9udWxsCisrKyBiL2RvYy9wcm9wcy9QX05PTEVBVkVfTVNHCkBAIC0wLDAgKzEsMzMgQEAKK05BTUU6CisgICAgUF9OT0xFQVZFX01TRyAgICAgICAgICAgICAgICAgICAgICAibm9sZWF2ZV9tc2ciICAgICAgICAgICAgICAgICAgICAgIAorCitERUZJTklFUlQgSU46CisgICAgL3N5cy90aGluZy9tb3ZpbmcuaAorCitCRVNDSFJFSUJVTkc6CisgICAgIERpZXNlIFByb3BlcnR5IGVudGhhZWx0IGVpbmUgTWVsZHVuZywgZGllIGF1c2dlZ2ViZW4gd2lyZCwgd2VubgorICAgICBqZW1hbmQgdmVyc3VjaHQsIGVpbiBPYmpla3QgYXVzIGVpbmVtIEJlaGFlbHRlciB6dSBlbnRmZXJuZW4gdW5kIGRlcgorICAgICBCZWhhZWx0ZXIgZGllc2VzIGltIFByZXZlbnRMZWF2ZSgpIHZlcmhpbmRlcnQuCisgICAgIERpZSBQcm9wZXJ0eSBpc3QgaW0gdmVyaGluZGVybmRlbiBCZWhhZWx0ZXIgenUgc2V0emVuLgorICAgICBJc3QgZGllc2UgUHJvcGVydHkgbmljaHQgb2RlciBhdWYgZWluZW4gbmljaHQtU3RyaW5nLVdlcnQgZ2VzZXR6dCwKKyAgICAgc28gd2lyZCBkaWUgU3RhbmRhcmRtZWxkdW5nIGF1c2dlZ2ViZW4uCisgICAgICgiRHUga2FubnN0IDxPYmpla3Q+IG5pY2h0IG5laG1lbi4iKQorICAgICBEZXIgU3RyaW5nIGluIGRlciBQcm9wZXJ0eSB3aXJkIG5vY2ggZHVyY2ggcmVwbGFjZV9wZXJzb25hbCgpCisgICAgIHZlcmFyYmVpdGV0LCBkYXMgenUgYmV3ZWdlbmRlIE9iamVrdCB3aXJkIGFscyBlcnN0ZXMsIGRlciB2ZXJoaW5kZXJuZGUKKyAgICAgQmVoYWVsdGVyIGFscyB6d2VpdGVzIE9iamVrdCBhbmdlZ2ViZW4uIERhbmFjaCB3aXJkIGRlciBTdHJpbmcgYXVmIDc4CisgICAgIFplaWNoZW4gdW1nZWJyb2NoZW4uCisgICAgIERhcyBTZXR6ZW4gZWluZXMgbGVlcmVuIFN0cmluZ3MgdW50ZXJkcnVlY2t0IGRpZSBBdXNnYWJlIGVpbmVyIE1lbGR1bmcKKyAgICAgZ2Fuei4KKworQkVJU1BJRUxFOgorICAgICBOdXIgQmllcnNjaPx0dGxlciBzb2xsZW4gZWluZSBCaWVyZmxhc2NoZSBhdXMgZWluZW0gS2FzdGVuIG5laG1lbgorICAgICBrb2VubmVuLCBuZWJlbiBlaW5lciBlbnRzcHJlY2hlbmRlbiBCZWhhbmRsdW5nIGltIFByZXZlbnRMZWF2ZSBzZXR6dCBtYW4KKyAgICAgZGF6dSBkaWUgUHJvcGVydHk6CisgICAgIFNldFByb3AoUF9OT0xFQVZFX01TRywgIk51ciBCaWVyc2NodWV0dGxlciBkdWVyZmVuIGRhcyEiKTsKKworU0lFSEUgQVVDSDoKKyAgICAgQWVobmxpY2hlczogUF9UT09fSEVBVllfTVNHLCBQX0VOVl9UT09fSEVBVllfTVNHLCBQX1RPT19NQU5ZX01TRywKKyAgICAgICAgICAgICAgICAgUF9OT0lOU0VSVF9NU0csIFBfTk9EUk9QLCBQX05PR0VUIAorICAgICBFcmZvbGc6ICAgICBQX1BJQ0tfTVNHLCBQX0RST1BfTVNHLCBQX0dJVkVfTVNHLCBQX1BVVF9NU0csCisgICAgICAgICAgICAgICAgIFBfV0VBUl9NU0csIFBfV0lFTERfTVNHCisgICAgIFNvbnN0aWdlczogIHJlcGxhY2VfcGVyc29uYWwoRSksIC9zdGQvbGl2aW5nL3B1dF9hbmRfZ2V0LmMKZGlmZiAtLWdpdCBhL2RvYy9wcm9wcy9QX05PTUFHSUMgYi9kb2MvcHJvcHMvUF9OT01BR0lDCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmJkZWU3ZjcKLS0tIC9kZXYvbnVsbAorKysgYi9kb2MvcHJvcHMvUF9OT01BR0lDCkBAIC0wLDAgKzEsMjEgQEAKK05BTUU6CisgICAgUF9OT01BR0lDICAgICAgICAgICAgICAgICAgICAgIm5vbWFnaWMiICAgICAgICAgICAgICAgICAgICAgCisKK0RFRklOSUVSVCBJTjoKKyAgICAvc3lzL3Byb3BlcnRpZXMuaAorCitCRVNDSFJFSUJVTkc6CisgICAgIEFuZ2FiZSBpbiBQcm96ZW50LCBtaXQgd2VsY2hlciBXYWhyc2NoZWlubGljaGtlaXQgTWFnaWUgZmVobHNjaGxhZWd0LgorICAgICAKKyAgICAgRnVlciBlaW5lbiBSYXVtIGlzdCBlcyBlaW5lIGdlbmVyZWxsZSBBdXNzYWdlLCB3aWUgd2FocnNjaGVpbmxpY2ggZWluCisgICAgIFNwZWxsIGluIGlobSBmZWhsc2NobGFlZ3QuIEJlaSBOUEMgemVpZ3QgZXMgYW4sIHdpZSB3YWhyc2NoZWlubGljaAorICAgICBlaW4gYXVmIGlobiBnZXNwcm9jaGVuZXIgU3BlbGwgZmVobHNjaGxhZWd0LgorCitCRUlTUElFTDoKKyAgICAgLy8gaW4gZWluZW0gUmF1bSBrZWluZSBTcGVsbHMgenVsYXNzZW4KKyAgICAgU2V0UHJvcChQX05PTUFHSUMsIDEwMCkKKworU0lFSEUgQVVDSDoKKyAgICAgQWVobmxpY2g6ICAgICBQX01BR0lDX1JFU0lTVEFOQ0VfT0ZGU0VULCBTcGVsbERlZmVuZAorCisyOS5EZXogMjAwNyBHbG9pbnNvbgpkaWZmIC0tZ2l0IGEvZG9jL3Byb3BzL1BfTk9TRUxMIGIvZG9jL3Byb3BzL1BfTk9TRUxMCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjQ4YjBkZGIKLS0tIC9kZXYvbnVsbAorKysgYi9kb2MvcHJvcHMvUF9OT1NFTEwKQEAgLTAsMCArMSwzMyBAQAorTkFNRToKKyAgICBQX05PU0VMTCAgICAgICAgICAgICAgICAgICAgICAibm9zZWxsIgorCitERUZJTklFUlQgSU46CisgICAgL3N5cy9wcm9wZXJ0aWVzLmgKKworQkVTQ0hSRUlCVU5HOgorICAgICBXZW5uIGRpZXNlIFByb3BlcnR5IGdlc2V0enQgaXN0LCBrYW5uIGRhcyBPYmpla3QgbmljaHQgaW4gZWluZW0KKyAgICAgTGFkZW4gdmVya2F1ZnQgd2VyZGVuLgorICAgICBHaWJ0IG1hbiBpbiBkZXIgUHJvcGVydHkgZWluZW4gU3RyaW5nIGFuLCB3aXJkIGRpZXNlciBhdXNnZWdlYmVuLAorICAgICBhbnNvbnN0ZW4gZXJmb2xndCBlaW5lIE1lbGR1bmcgIkR1IGthbm5zdCA8TkFNRT4gbmljaHQgdmVya2F1ZmVuISIKKworICAgICBEaWVzZSBNZWxkdW5nIGJlaW5oYWx0ZXQgYXVjaCBkZW4gTmFtZW4gZGVzIGluIFBfTkFNRSBlaW5nZS0KKyAgICAgdHJhZ2VuZW4gQmVzaXR6ZXIgZGVzIExhZGVucy4gSXN0IGRpZXMgbmljaHQgZ2VzZXR6dCwgd2lyZCBwZXIKKyAgICAgZGVmYXVsdCAnRGVyIEhhZW5kbGVyJyBhdXNnZWdlYmVuLgorCitCRUlTUElFTDoKKyAgICAgU2V0UHJvcChQX05PU0VMTCwiRGVuIFNjaHJvdHQgYmVoYWVsdHN0IER1IGxpZWJlciBzZWxiZXIuIik7CisKKyAgICAgPT0+IEFwdSBzYWd0OiBEZW4gU2Nocm90dCBiZWhhZWx0c3QgRHUgbGllYmVyIHNlbGJlci4KKyAgICAgPT0+IERlciBIYWVuZGxlciBzYWd0OiBEZW4gU2Nocm90dCBiZWhhZWx0c3QgRHUgbGllYmVyIHNlbGJlci4KKworICAgICBTZXRQcm9wKFBfTk9TRUxMLDEpOworCisgICAgID09PiBBcHUgc2FndDogRHUga2FubnN0IDxuYW1lPiBuaWNodCB2ZXJrYXVmZW4hCisgICAgID09PiBEZXIgSGFlbmRsZXIgc2FndDogRHUga2FubnN0IDxuYW1lPiBuaWNodCB2ZXJrYXVmZW4hCisKK1NJRUhFIEFVQ0g6CisgICAgIFBfTk9CVVksIFBfTk9EUk9QLCBQX0tFRVBFUgorCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiswMy4wOS4yMDEwLCBaZXNzdHJhCisKZGlmZiAtLWdpdCBhL2RvYy9wcm9wcy9QX05PX0FTQ0lJX0FSVCBiL2RvYy9wcm9wcy9QX05PX0FTQ0lJX0FSVApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi45YjQwY2RlCi0tLSAvZGV2L251bGwKKysrIGIvZG9jL3Byb3BzL1BfTk9fQVNDSUlfQVJUCkBAIC0wLDAgKzEsMjAgQEAKK05BTUU6CisgICAgUF9OT19BU0NJSV9BUlQgICAgICAgICAgICAgICAgICAgIm5vX2FzY2lpX2FydCIKKworCitERUZJTklFUlQgSU46CisgICAgL3N5cy9wbGF5ZXIvYmFzZS5oCisKK0JFU0NIUkVJQlVORzoKKyAgICBEaWVzZSBQcm9wZXJ0eSBrYW5uIGRlciBTcGllbGVyIG1pdCBkZW0gQmVmZWhsICJncmFmaWsgYXVzIiBhdWYKKyAgICAxIHNldHplbi4gRGFtaXQgemVpZ3QgZXIgYW4sIGRhc3MgZXIga2VpbmUgQVNDSUkgQXJ0IHNlaGVuIG1vZWNodGUuCisKKyAgICBXZXIgQVNDSUktQXJ0IGVpbnNldHp0LCBzb2xsdGUgYW4gZGllc2VuIFN0ZWxsZW4gZGllIFByb3BlcnR5IAorICAgIGFiZnJhZ2VuIHVuZCB0ZXh0bGljaGUgVW1zY2hyZWlidW5nZW4gb2RlciBBbHRlcm5hdGl2bG9lc3VuZ2VuCisgICAgZWluYmF1ZW4uCisgICAgCitTSUVIRSBBVUNIOgorICAgIGdyYWZpaworCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgICAgTGV0enRlIEFlbmRlcnVuZzogMjAwNS0xMC0xOCwgWm9vay4gICAKZGlmZiAtLWdpdCBhL2RvYy9wcm9wcy9QX05PX0FUVEFDSyBiL2RvYy9wcm9wcy9QX05PX0FUVEFDSwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4wZjM5MTgwCi0tLSAvZGV2L251bGwKKysrIGIvZG9jL3Byb3BzL1BfTk9fQVRUQUNLCkBAIC0wLDAgKzEsODIgQEAKK1BfTk9fQVRUQUNLCisKK05BTUU6CisgICAgIFBfTk9fQVRUQUNLICJub19hdHRhY2siCisKK0RFRklOSUVSVCBJTjoKKyAgICAgPGxpdmluZy9jb21iYXQuaD4KKworQkVTQ0hSRUlCVU5HOgorICAgICBXZW5uIGVpbiBOUEMgbmljaHQgYW5ncmVpZmJhciBzZWluIHNvbGwgKHdlaWwgZXIgenVtIEJlaXNwaWVsIGluIGVpbmVyCisgICAgIEdpbGRlIG9kZXIgZWluZXIgUXVlc3QgSW5mb3JtYXRpb25lbiB2ZXJtaXR0ZWx0IG9kZXIgYWVobmxpY2hlbiksIHNvbGx0ZQorICAgICBtYW4gZGllc2UgUHJvcGVydHkgYXVmIGVpbmVuIFdlcnQgdW5nbGVpY2ggTnVsbCBzZXR6ZW4uIFNpZSB3aXJkIGltbWVyCisgICAgIGFiZ2VmcmFndCwgd2VubiBlcm1pdHRlbHQgd2lyZCwgb2IgZWluIExlYmV3ZXNlbiBwcmluemlwaWVsbCBhbmdyZWlmYmFyCisgICAgIGlzdC4gRC5oLiBhdWNoLCBkYXNzIG5hY2ggQWJmcmFnZW4gdm9uIFBfTk9fQVRUQUNLIF9uaWNodF8gaW1tZXIgZWluCisgICAgIEthbXBmIGdlc3RhcnRldCB3aXJkIHVuZCBkYXNzIG1hbiBkYWJlaSBfbmljaHRfIGltIEthbXBmIHNlaW4gbXVzcyEKKworICAgICBHaWJ0IG1hbiBoaWVyIGVpbmVuIFN0cmluZyBhbiAobWl0IGVpbmVtIFNhdHp6ZWljaGVuIHVuZCAiXG4iIGFiZ2UtCisgICAgIHNjaGxvc3NlbiksIHdpcmQgZGllc2VyIGJlaSBkaXJla3RlbiBBbmdyaWZmZW4gYXVzZ2VnZWJlbi4gQmVpIGFuZGVyZW4KKyAgICAgRGF0ZW50eXBlbiB3aXJkIGVpbmUgRGVmYXVsdG1lbGR1bmcgYXVzZ2VnZWJlbi4gRGllIERlZmF1bHRtZWxkdW5nCisgICAgIGxhdXRldDogIjxOYW1lPiBsYWVzc3Qgc2ljaCBuaWNodCBhbmdyZWlmZW4hXG4iCisKKyAgICAgTWl0IGRpcmVrdGVuIEFuZ3JpZmZlbiBzaW5kICd0b2V0ZSA8bmFtZT4nIHVuZCBBbmdyaWZmc3phdWJlciBnZW1laW50CisgICAgIChiencuIGFsbGVzLCB3YXMgbGl2aW5nL2xpZmU6OktpbGwoKSwgc3BlbGxib29rOjpUcnlBdHRhY2tTcGVsbCgpLAorICAgICBzcGVsbGJvb2s6OlRyeURlZmF1bHRBdHRhY2tTcGVsbCgpIHVuZCBzcGVsbGJvb2s6OkZpbmRFbmVteVZpY3RpbSgpCisgICAgIGF1ZnJ1ZnQpLgorCitBQ0hUVU5HOgorCisgIDEpIFp1bSBUaGVtYSBRdWVyeU1ldGhvZGVuIGF1ZiBQX05PX0FUVEFDSworICAgICBHcnVuZHNhZXR6bGljaCBsZWd0IG1hbiBlbnR3ZWRlciBlaW5lIFF1ZXJ5LU1ldGhvZGUgYXVmIFBfTk9fQVRUQUNLOgorICAgICAgICBTZXQoUF9OT19BVFRBQ0ssICMnbXlfbm9fYXR0YWNrLCBGX1FVRVJZX01FVEhPRCk7CisgICAgIG9kZXIgZGVmaW5pZXJ0IGVpbmUgRnVua3Rpb24gX3F1ZXJ5X25vX2F0dGFjaygpIGltIE5QQy4KKworICAgICBXaWUgbXVzcyBudW4gZWluZSBzb2xjaGUgRnVua3Rpb24gYXVzc2VoZW4/IFouQi46CisgICAgIAorICAgICBpbnR8c3RyaW5nIG15X25vX2F0dGFjaygpIHsKKyAgICAgICBpZiAoIW9iamVjdHAodGhpc19wbGF5ZXIoKSkpIHJldHVybiAwOworICAgICAgIGlmIChvcGZlcj09Z2V0dWlkKHRoaXNfcGxheWVyKCkpIHx8IHRoaXNfcGxheWVyKCk9PXRoaXNfb2JqZWN0KCkpCisgICAgICAgICByZXR1cm4oMCk7CisgICAgICAgcmV0dXJuKDEpOyAvL25pY2h0IGFuZ3JlaWZiYXIKKyAgICAgfQorCisgICAgIERpZXNlIEZ1bmt0aW9uIG1hY2h0IGRlbiBOUEMgbnVuIG51ciBmdWVyIGRlbiBTcGllbGVyICdvcGZlcicgYW5ncmVpZmJhci4KKyAgICAgU3RhdHRkZXNzZW4ga2FubiBuYXR1ZXJsaWNoIGF1Y2ggamVkZSBhbmRlcmUgQmVkaW5ndW5nIGdlbnV0enQgd2VyZGVuLgorCisgICAgIEFiZXIgd2FydW0gZGllIHp3ZWl0ZSBCZWRpbmd1bmcsIHRoaXNfcGxheWVyKCk9PXRoaXNfb2JqZWN0KCk/CisgICAgIFdhcnVtIHNvbGx0ZSBkZXIgTlBDIHNpY2ggc2VsYmVyIGFuZ3JlaWZlbiBkdWVyZmVuPworCisgICAgIERhcyBsaWVndCBhbiBmb2xnZW5kZW4gMiBEaW5nZW46CisKKyAgICAgMS4gS2FlbXBmZXIga3JpZWdlbiBiZWkgZWluZ2VzY2hhbHRldGVtIEZva3VzIFByb2JsZW1lLCB3ZW5uIG1hbiBkYXMgCisgICAgIG5pY2h0IG1hY2h0LiBEYXMgbGllZ3QgYW4gZm9sZ2VuZGVtOiBXZW5uIGRlciBOUEMgYW5ncmVpZnQsIHJ1ZnQgZXIgCisgICAgIG5hdHVlcmxpY2ggRGVmZW5kKCkgaW0gU3BpZWxlciBhdWYuIERpZXNlcyBzY2hhdXQgbmFjaCwgb2IgZGVyIFNwaWVsZXIgCisgICAgIGRlbiBTa2lsbCBTS19NQUdJQ0FMX0RFRkVOU0UgaGF0LiBEaWVzZXIgaXN0IGJlaSBLYWVtcGZlcm4gZGFzIFBhcmllcmVuLgorICAgICBEaWVzZXMgc2NoYXV0IG5hY2gsIG9iIGRlciBGb2t1cyBha3RpdiBpc3QsIHdlbm4gamEsIHdpcmQgZGVtIAorICAgICBnZSdmb2t1cyd0ZSBHZWduZXIgYmVzb25kZXJzIGd1dCBhdXNnZXdpY2hlbi4gWnUgZGllc2VtIFp3ZWNrIHdpcmQgZGllIAorICAgICBMaXN0ZSBkZXIgRmVpbmQgaW0gUmF1bSBlcnN0ZWxsdCBtaXQgUHJlc2VudEVuZW1pZXMoKSBhYmdlcnVmZW4uIERpZXNlcyAKKyAgICAgZnJhZ3QgYWJlciBpbiBhbGxlbiAocG90ZW50aWVsbGVuKSBHZWduZXJuIFBfTk9fQVRUQUNLIGFiIHVuZCBiZWVuZGV0IAorICAgICBkZW4gS2FtcGYgbWl0IGFsbGVuIEdlZ25lcm4sIGRpZSBuaWNodCBhbmdyZWlmYmFyIHNpbmQuIEJlaSBkaWVzZXIgCisgICAgIEFiZnJhZ2UgaXN0IGplZG9jaCBUUD09TlBDLCB3ZWlsIGRlciBqYSBhbmdyZWlmdC4gV2VubiBlciBudW4gMSAKKyAgICAgenVydWVja2dpYnQsIHdpcmQgZGVyIEthbXBmIGFuIGRlciBTdGVsbGUgYmVlbmRldC4gCisKKyAgICAgMi4gV2VubiBkZXIgTlBDIGRlbiBTcGllbGVyIGFuZ3JlaWZ0LCB3aXJkIGltIFNwaWVsZXIgSW5zZXJ0RW5lbXkoTlBDKQorICAgICBhdWZnZXJ1ZmVuLiBBdWNoIGRpZXNlbSBGYWxsIGZpbmRldCBkaWUgQWJmcmFnZSB2b24gUF9OT19BVFRBQ0sgc3RhdHQsIAorICAgICBkYSBJbnNlcnRFbmVteSgpIGphIGVyc3RtYWwgcmF1c2ZpbmRlbiBtdXNzLCBvYiBkZXIgR2VnbmVyIGFuZ3JlaWZiYXIgCisgICAgIGlzdCwgYmV2b3IgZXIgaW4gZGllIEZlaW5kbGlzdGUgZWluZ2V0cmFnZW4gd2lyZC4gRGEgZGVyIE5QQyBkZW4gCisgICAgIEFuZ3JpZmYgYmVnaW5udCwgaXN0IFRQIGRlciBOUEMuIFdlbm4gZGllIFF1ZXJ5LU1ldGhvZGUgYXVmIFBfTk9fQVRUQUNLCisgICAgIGhpZXIgYWJicmljaHQsIHdpcmQgZGVyIE5QQyBuaWNodCBpbiBkaWUgRmVpbmRsaXN0ZSBkZXMgU3BpZWxlcnMgCisgICAgIGVpbmdldHJhZ2VuLiBEYW5uIGJla2FlbXBmdCBkZXIgTlBDIGRlbiBTcGllbGVyLCBhYmVyIGRlciBTcGllbGVyIG5pY2h0CisgICAgIGRlbiBOUEMuCisKKworICAyKSBQX05PX0FUVEFDSyBkZXMgTlBDIHdpcmQgei5CLiBiZWltIEthbXBmIGVpbmVzIEthZW1wZmVycyBtaXQgZGVtIE5QQyAKKyAgICAgcHJvIEthbXBmcnVuZGUgdW0gZGllIDEwbWFsIGFiZ2VydWZlbi4gV2VubiBkZXIgS2FlbXBmZXIgbnVyIGVpbmUgCisgICAgIEF0dGFja2UgbWFjaHQuIFdlbm4gZXIgbm9jaCBTb25kZXJhdHRhY2tlbiBtYWNoZW4sIFNwZWxscyBhdXNmdWVocnQsIAorICAgICBldGMuIHdpcmQgZGFzIG5vY2ggbWVoci4gRC5oLiB3YXMgYXVjaCBpbW1lciBpaHIgaW4gZGVyIFF1ZXJ5LU1ldGhvZGUgCisgICAgIGltIE5QQyBtYWNodDogCisgICAgIEVzIHNvbGx0ZSBzY2huZWxsIHNlaW4sIGplZGVyIFRpY2sgYW4gUmVjaGVuemVpdCB6YWVobHQgaGllciB4ZmFjaCEKKworCitMRVRaVEUgQUVOREVSVU5HOgorMDkuMTEuMjAxNSwgQXJhdGhvcm4KZGlmZiAtLWdpdCBhL2RvYy9wcm9wcy9QX05PX0JBRCBiL2RvYy9wcm9wcy9QX05PX0JBRApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi42MGRmMWU3Ci0tLSAvZGV2L251bGwKKysrIGIvZG9jL3Byb3BzL1BfTk9fQkFECkBAIC0wLDAgKzEsMjMgQEAKK05BTUU6CisgICAgIFBfTk9fQkFEICAgICAgICAgICAgICAgICAgICAgICJzdGRfZm9vZF9ub19iYWQiCisKK0RFRklOSUVSVCBJTjoKKyAgICAgPHN5cy9mb29kLmg+CisKK0JFU0NIUkVJQlVORzoKKyAgICAgRmxhZywgb2IgZGllIFNwZWlzZSBld2lnIGhhbHRiYXIgaXN0LgorICAgICAwOiBTcGVpc2UgdmVyZGlyYnQgbmFjaCBkZXIgQW56YWhsIFNla3VuZGVuLCBkaWUgaW4gUF9MSUZFVElNRQorICAgICAgICBhbmdlZ2ViZW4gaXN0IGJ6dy4gbmFjaCBlaW5lbSBSZXNldAorICAgICAxOiBTcGVpc2UgdmVyZGlyYnQgbmljaHQKKyAgICAgCisgICAgIEFDSFRVTkc6IERpZXNlIFByb3BlcnR5IGRhcmYgbnVyIGluIEFic3ByYWNoZSBtaXQgZGVyIEJhbGFuY2UKKyAgICAgICAgICAgICAgZ2VhZW5kZXJ0IHdlcmRlbi4KKyAgICAgCitERUZBVUxUOgorICAgICBJbml0aWFsIGlzdCBkaWVzZSBQcm9wZXJ0eSBhdWYgMCBnZXNldHp0LgorCitTSUVIRSBBVUNIOgorICAgICAvc3RkL2Zvb2QuYywgd2l6L2Zvb2QKKworLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCitMYXN0IG1vZGlmaWVkOiBUaHUgT2N0IDI4IDEyOjE1OjAwIDIwMTAgYnkgQ2FsZHJhClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZG9jL3Byb3BzL1BfTk9fR0xPQkFMX0FUVEFDSyBiL2RvYy9wcm9wcy9QX05PX0dMT0JBTF9BVFRBQ0sKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMDFkZjRlOQotLS0gL2Rldi9udWxsCisrKyBiL2RvYy9wcm9wcy9QX05PX0dMT0JBTF9BVFRBQ0sKQEAgLTAsMCArMSwyMCBAQAorUF9OT19HTE9CQUxfQVRUQUNLCisKK05BTUU6CisgICAgIFBfTk9fR0xPQkFMX0FUVEFDSyAibm9fZ2xvYmFsX2F0dGFjayIKKworREVGSU5JRVJUIElOOgorICAgICA8Y29tYmF0Lmg+CisKK0JFU0NIUkVJQlVORzoKKyAgICAgU2V0enQgbWFuIGRpZXNlIFByb3BlcnR5IGluIGVpbmVtIE5QQyBhdWYgZWluZW4gV2VydCB1bmdsZWljaCAwLCBzbworICAgICB3aXJkIGRlciBOUEMgYmVpIGVpbmVtICJ0b2V0ZSBhbGxlIiBuaWNodCBhbmdlZ3JpZmZlbi4KKworICAgICBEYW1pdCBrYW5uIG1hbiB6Qi4gTlBDcywgZGllIGRlbSBlaWdlbmVuIFNjaHV0eiBkaWVuZW4gKGFscyBGb2xnZSB2b24KKyAgICAgWmF1YmVyc3BydWVjaGVuIG8uYWUuKSB2b3IgdmVyc2VoZW50bGljaGVuIEFuZ3JpZmZlbiBzY2h1ZXR6ZW4uCisKK1NJRUhFIEFVQ0g6CisgICAgIC9zdGQvbnBjLmMsIFBfRlJJRU5ECisKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KK0xhc3QgbW9kaWZpZWQ6IFNhdCBNYXkgMTggMTU6MjY6MjggMTk5NiBieSBXYXJnb24KZGlmZiAtLWdpdCBhL2RvYy9wcm9wcy9QX05PX1BBUkFfVFJBTlMgYi9kb2MvcHJvcHMvUF9OT19QQVJBX1RSQU5TCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjU3OGMyNDUKLS0tIC9kZXYvbnVsbAorKysgYi9kb2MvcHJvcHMvUF9OT19QQVJBX1RSQU5TCkBAIC0wLDAgKzEsMTUgQEAKK05BTUU6CisJUF9OT19QQVJBX1RSQU5TCQkJCSJub19wYXJhX3RyYW5zIgorCitERUZJTklFUlQgSU46CisJL3N5cy9wcm9wZXJ0aWVzLmgKKworQkVTQ0hSRUlCVU5HOgorCVdlbm4gaW4gZWluZW0gUmF1bSBkaWVzZSBQcm9wZXJ0eSBnZXNldHp0IGlzdCwgZGFyZiBkb3J0IGtlaW4KKwlXZWNoc2VsIGluIG9kZXIgYXVzIGRlciBQYXJhbGVsbHdlbHQgZXJmb2xnZW4uIE9iamVrdGUgZGllIHNvCisJZWluZW4gV2VjaHNlbCBlcm1vZWdsaWNoZW4gc2luZCBkYWZ1ZXIgdmVyYW50d29ydGxpY2ggZGllc2UKKwlQcm9wZXJ0eSBhYnp1ZnJhZ2VuLgorCitTSUVIRSBBVUNIOgorCVBfTk9fVFBPUlQKKwpkaWZmIC0tZ2l0IGEvZG9jL3Byb3BzL1BfTk9fUExBWUVSUyBiL2RvYy9wcm9wcy9QX05PX1BMQVlFUlMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMDYyYjkxNQotLS0gL2Rldi9udWxsCisrKyBiL2RvYy9wcm9wcy9QX05PX1BMQVlFUlMKQEAgLTAsMCArMSwzNyBAQAorTkFNRToKKyAgICBQX05PX1BMQVlFUlMgICAgICAgICAgICAgICAgICAgICAibm9fcGxheWVycyIgICAgICAgICAgICAgICAgICAgICAKKworREVGSU5JRVJUIElOOgorICAgIC9zeXMvcm9vbXMuaAorCitCRVNDSFJFSUJVTkc6CisgICAgV2VubiBpbiBlaW5lbSBSYXVtIGRpZSBQcm9wZXJ0eSBQX05PX1BMQVlFUlMgYXVmIGVpbmVuIFdlcnQgIT0gMCBnZXNldHp0CisgICAgaXN0LCBrYW5uIGRpZXNlciB2b24gU3BpZWxlcm4gYXVmIG5vcm1hbGVtIFdlZ2UgbmljaHQgbWVociBiZXRyZXRlbiB3ZXJkZW4uCisgICAgTWFnaWVyIHVuZCBUZXN0c3BpZWxlcigqKSBrb2VubmVuIGRlbiBSYXVtIGJldHJldGVuOyBTcGllbGVyIG11ZXNzZW4gbWl0CisgICAgTV9OT0NIRUNLIGhpbmVpbmJld2VndCB3ZXJkZW4uCisKKyAgICBBdWYgZGllc2UgV2Vpc2Uga29lbm5lbiBHZWJpZXRlLCBkaWUgbm9jaCBuaWNodCBvZmZpemllbGwgYW5nZXNjaGxvc3NlbgorICAgIHNpbmQsIHZvciAndW5iZWFic2ljaHRpZ3RlbScgQmV0cmV0ZW4gZHVyY2ggU3BpZWxlciBnZXNjaHVldHp0IHdlcmRlbi4KKworICAgIE1vZWNodGUgbWFuIHp1IGVpbmVtIHNjaG9uIGFuZ2VzY2hsb3NzZW5lbiBHZWJpZXQgbmFjaHRyYWVnbGljaCBlaW5lCisgICAgUGFyYWxsZWx3ZWx0IGVpbmJhdWVuLCBzbyBzb2xsdGUgUF9OT19QTEFZRVJTICpkcmluZ2VuZCogaW4gZGVuCisgICAgUGFyYWxsZWx3ZWx0cmFldW1lbiBnZXNldHp0IHdlcmRlbiwgYmlzIGRpZSBQYXJhbGxlbHdlbHQgYXVzZHJ1ZWNrbGljaAorICAgIGZ1ZXIgU3BpZWxlciBmcmVpZ2VnZWJlbiB3aXJkLiBBbmRlcm5mYWxscyBzaW5kIGFsbGUgUGFyYWxsZWx3ZWx0cmFldW1lLAorICAgIHp1IGRlbmVuIGFuZ2VzY2hsb3NzZW5lIE5vcm1hbHdlbHRyYWV1bWUgbWl0IGdsZWljaGVtIEZpbGVuYW1lbiBleGlzdGllcmVuLAorICAgIGF1dG9tYXRpc2NoIGR1cmNoIFNwaWVsZXIgZXJyZWljaGJhciEKKworICAgICgqKSBBdXNzY2hsaWVzc2xpY2ggVGVzdHNwaWVsZXIsIGRpZSBhdWYgZGVuIE5hbWVuIGVpbmVzIGV4aXN0aWVyZW5kZW4KKyAgICBNYWdpZXJzIG1hcmtpZXJ0IHNpbmQsIGtvZW5uZW4gJ2dlc2NodWV0enRlJyBSYWV1bWUgYmV0cmV0ZW4uCisgICAgR2lsZGVudGVzdGllcyB3ZXJkZW4gd2llIFNwaWVsZXIgYmVoYW5kZWx0LgorCitBTk1FUktVTkc6CisgICAgSW0gR2VnZW5zYXR6IHp1IEJld2VndW5nZW4gdm9uIExpdmluZ3Mgd2lyZCBiZWkgZGVyIEJld2VndW5nIHZvbiBHZWdlbi0KKyAgICBzdGFlbmRlbiBQX05PX1BMQVlFUlMgbnVyIGJlaW0gV2VjaHNlbCBkZXIgV2VsdCBhdXNnZXdlcnRldCwgdW0gei5CLiB6dQorICAgIHZlcmhpbmRlcm4sIGRhc3MgQnVtZXJhbmdzIGluIG5vY2ggbmljaHQgYW5nZXNjaGxvc3NlbmUgR2ViaWV0ZSBmbGllZ2VuLgorCisgICAgTW9lY2h0ZSBtYW4gaW4gc2VpbmVtIGVpZ2VuZW4gR2ViaWV0IG1pdCBCdW1lcmFuZ3Mgby5hZS4gdGVzdGVuLCBtdXNzCisgICAgaW4gZGllc2VuIFBfVEVTVFBMQVlFUiBnZXNldHp0IHNlaW4uIERhcyBpc3QgendhciBlaGVyIGVpbiBNaXNzYnJhdWNoCisgICAgZGVyIFByb3BlcnR5LCBhYmVyIGVpbiBVbWtvbXBpZXJlbiB2b20gV2VyZmVyIHdhciBhdWYgRGF1ZXIgenUgdGV1ZXIuIDstKQorCitTSUVIRSBBVUNIOgorICAgIFBfUEFSQSwgbW92ZQpkaWZmIC0tZ2l0IGEvZG9jL3Byb3BzL1BfTk9fUkVHRU5FUkFUSU9OIGIvZG9jL3Byb3BzL1BfTk9fUkVHRU5FUkFUSU9OCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmI4ZGVhOGMKLS0tIC9kZXYvbnVsbAorKysgYi9kb2MvcHJvcHMvUF9OT19SRUdFTkVSQVRJT04KQEAgLTAsMCArMSwzNCBAQAorUF9OT19SRUdFTkVSQVRJT04KKworTkFNRToKKyAgICAgUF9OT19SRUdFTkVSQVRJT04gICAgIm5vX3JlZ2VuZXJhdGlvbiIKKworREVGSU5JRVJUIElOOgorICAgICA8bGl2aW5nL2xpZmUuaD4gdW5kIDxoZWFsdGguaD4KKworQkVTQ0hSRUlCVU5HOgorICAgICBEdXJjaCBkYXMgU2V0emVuIGRpZXNlciBQcm9wZXJ0eSBrYW5uIG1hbiB2ZXJoaW5kZXJuLCBkYXMgZWluIExlYmV3ZXNlbgorICAgICBzaWNoIHJlZ2VuZXJpZXJ0LgorICAgICBFcyBnaWJ0IHNpZWJlbiBtb2VnbGljaGUgV2VydGUsIGRpZSBtYW4gZHVyY2ggdmVyb2Rlcm4ga29tYmluaWVyZW4KKyAgICAga2FubjoKKyAgICAgTk9fUkVHX0hQICAgICAgICA6IGVzIHdlcmRlbiBrZWluZSBIUCByZWdlbmVyaWVydAorICAgICBOT19SRUdfQlVGRkVSX0hQIDogZXMgd2VyZGVuIGJlaW0gInRhbmtlbiIga2VpbmUgSFAgcmVnZW5lcmllcnQKKyAgICAgTk9fUkVHX1NQICAgICAgICA6IGVzIHdlcmRlbiBrZWluZSBTUCByZWdlbmVyaWVydAorICAgICBOT19SRUdfQlVGRkVSX1NQIDogZXMgd2VyZGVuIGJlaW0gInRhbmtlbiIga2VpbmUgU1AgcmVnZW5lcmllcnQKKyAgICAgTk9fUkVHX0FMQ09IT0wgICA6IGRlciBBbGtvaG9sc3BpZWdlbCB3aXJkIG5pY2h0IGdlc2Vua3QKKyAgICAgTk9fUkVHX0RSSU5LICAgICA6IGRlciBGbHVlc3NpZ2tlaXRzc3BpZWdlbCB3aXJkIG5pY2h0IGdlc2Vua3QKKyAgICAgTk9fUkVHX0ZPT0QgICAgICA6IGRlciBOYWhydW5nc3NwaWVnZWwgd2lyZCBuaWNodCBnZXNlbmt0CisgICAgIHNvd2llIGRpZSBLb25zdGFudGUgTk9fUkVHLCBkaWUgZWluZSBLb21iaW5hdGlvbiBhbGxlciBtb2VnbGljaGVuCisgICAgIFdlcnRlIGRhcnN0ZWxsdCAocXVhc2kgZGFzIGdyb2Vzc3Rtb2VnbGljaGUgVWViZWwgOykuCisKK0JFSVNQSUVMRToKKyAgICAgRGllc2VzIExlYmV3ZXNlbiBoZWlsdCBudXIgYmVpbSAidGFua2VuIiBpbiBkZXIgS25laXBlLCBhbnNvbnN0ZW4KKyAgICAgbmljaHQ6CisgICAgIAorICAgICBTZXRQcm9wKCBQX05PX1JFR0VORVJBVElPTiwgTk9fUkVHX0hQfE5PX1JFR19TUCApOworCitTSUVIRSBBVUNIOgorICAgICAvc3RkL2xpdmluZy9saWZlLmMKKworLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorTGFzdCBtb2RpZmllZDogMTQtMDUtMjAwMSBieSBNdXBmZWwKZGlmZiAtLWdpdCBhL2RvYy9wcm9wcy9QX05PX1NDT1JFIGIvZG9jL3Byb3BzL1BfTk9fU0NPUkUKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNmM0YTJkMgotLS0gL2Rldi9udWxsCisrKyBiL2RvYy9wcm9wcy9QX05PX1NDT1JFCkBAIC0wLDAgKzEsNTEgQEAKK05BTUU6CisgICAgIFBfTk9fU0NPUkUgICAgICAgICAgICAgICAibm9fc2NvcmUiCisKK0RFRklOSUVSVCBJTjoKKyAgICAgL3NlY3VyZS9zY29yZW1hc3Rlci5oCisKK0JFU0NIUkVJQlVORzoKKyAgICAgRGllIFByb3BlcnR5IHN0ZWxsdCBlaW4gRmxhZyBpbm5lcmhhbGIgdm9uIExlYmV3ZXNlbiBkYXIsIHdlbGNoZXMKKyAgICAgc3RhbmRhcmRtYWVzc2lnIG5pY2h0IGdlc2V0enQgaXN0LiBJbiBkaWVzZW0gRmFsbCB3ZXJkZW4KKyAgICAgRXJzdGtpbGxzdHVmZW5wdW5rdGUgYW4gZGVuIEFuZ3JlaWZlciB2ZXJnZWJlbiwgc29mZXJuIGVyIGVpbiBPcGZlcgorICAgICB0b2V0ZXQuCisKKyAgICAgSW5uZXJoYWxiIGVpbmVzIFRlYW1zIGtvZW5uZW4gRXJzdGtpbGxzdHVmZW5wdW5rdGUgYXVjaCBhbgorICAgICBNaXRnbGllZGVyIHZlcmdlYmVuIHdlcmRlbiwgZGllIGRhcyBMZWJld2VzZW4gbmljaHQgc2VsYnN0IGdldG9ldGV0CisgICAgIGhhYmVuLiBWb3JhdXNzZXR6dW5nIGhpZXJmdWVyIGlzdCwgZGFzcyBkZXJqZW5pZ2UsIGRlciBkZW4gbGV0enRlbgorICAgICBTY2hsYWcgYXVzZnVlaHJ0ZSwgZGVuIEtpbGwgc2Nob24gaGF0LiBEYW5hY2ggd2VyZGVuIE1pdGdsaWVkZXIgZGVzCisgICAgIFRlYW1zIGdlc3VjaHQsIHdlbGNoZSBkZW4gS2lsbCBub2NoIG5pY2h0IGhhYmVuIHVuZCBpbiBkZXIgRm9ybWF0aW9uCisgICAgIG1vZWdsaWNoc3Qgd2VpdCB2b3JuZSBzdGVoZW4uCisKKyAgICAgTWl0IGRlciBnZXNldHp0ZW4gUHJvcGVydHkgUF9OT19TQ09SRSBpbSBPcGZlciBlcnJlaWNodCBtYW4gbnVuLAorICAgICBkYXNzIGRpZXNlIEd1dHNjaHJpZnQgZnVlciBkZW4vZGllIEFuZ3JlaWZlciB1bnRlcmJ1bmRlbiB3aXJkLgorCitCRUlTUElFTDoKKyAgICAgRm9sZ2VuZGVybWFzc2VuIHVudGVyYmluZGV0IG1hbiBkaWUgVmVyZ2FiZSB2b24KKyAgICAgRXJzdGtpbGxzdHVmZW5wdW5rdGVuIGZ1ZXIgZGVuIFRvZCBlaW5lcyBOUEMnczoKKworICAgICAgIGluY2x1ZGUgIi9zZWN1cmUvc2NvcmVtYXN0ZXIuaCIKKyAgICAgICBpbmhlcml0ICJzdGQvbnBjIjsKKyAgICAgICB2b2lkIGNyZWF0ZSgpIHsKKyAgICAgICAgIDo6Y3JlYXRlKCk7CisgICAgICAgICAuLi4KKyAgICAgICAgIFNldFByb3AoUF9OT19TQ09SRSwxKTsKKyAgICAgICB9CisKKyAgICAgRGFtaXQga2FubiBQX1hQIGVpbmVuIFdlcnQgaGFiZW4sIGRlciBlaWdlbnRsaWNoIHp1bSBhdXRvbWF0aXNjaGVuCisgICAgIEVpbnRyYWdlbiB2b24gRXJzdGtpbGxzdHVmZW5wdW5rdGVuIGZ1ZXIgZWluIExlYmV3ZXNlbiBmdWVocnQsIHVuZAorICAgICB0cm90emRlbSB3aXJkIGRpZXNlciBFaW50cmFnIG5pY2h0IHZvcmdlbm9tbWVuLgorICAgICBTaW5udm9sbCBpc3QgZGllcyBpbnNiZXNvbmRlcmUgYmVpIExlYmV3ZXNlbiwgZGllIG5pY2h0IGplZGVyCisgICAgIFNwaWVsZXIgZXJyZWljaGVuIGthbm4gKG1hbiBtb2VjaHRlIGRvY2ggZWluZSBnZXdpc3NlCisgICAgIENoYW5jZW5nbGVpY2hoZWl0IGZ1ZXIgZGFzIEVycmVpY2hlbiB2b24gU3R1ZmVucHVua3RlbiBiaWV0ZW4pLgorCitCRU1FUktVTkdFTjoKKyAgICAgQXVjaCBkaWUgVmVyZ2FiZSB2b24gRXJmYWhydW5nc3B1bmt0ZW4ga2FubiBleHBsaXppdCB1bnRlcmJ1bmRlbgorICAgICB3ZXJkZW4uIEhpZXJmdWVyIGdpYnQgZXMgZGllIGFlaG5saWNoIGdlYXJ0ZXRlIFByb3BlcnR5IFBfTk9fWFAuCisKK1NJRUhFIEFVQ0g6CisgICAgIEZ1bmt0aW9uZW46ICBHaXZlS2lsbFNjb3JlKCksIGRvX2RhbWFnZSgpCisgICAgIFZlcndhbmR0OiAgICBQX05PX1hQCisgICAgIFNvbnN0aWdlczogICBQX1hQCisKKzE0LkZlYiAyMDA3IEdsb2luc29uCmRpZmYgLS1naXQgYS9kb2MvcHJvcHMvUF9OT19TVERfRFJJTksgYi9kb2MvcHJvcHMvUF9OT19TVERfRFJJTksKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYTkxZTkyZAotLS0gL2Rldi9udWxsCisrKyBiL2RvYy9wcm9wcy9QX05PX1NURF9EUklOSwpAQCAtMCwwICsxLDE5IEBACitOQU1FOgorCVBfTk9fU1REX0RSSU5LCQkJIm5vX3N0ZF9kcmluayIKKworREVGSU5JRVJUIElOOgorCS9zeXMvcHViLmgKKworQkVTQ0hSRUlCVU5HOgorICAgICAgICBEdXJjaCBzZXR6ZW4gZGllc2VyIFByb3BlcnR5IGluIGVpbmVyIEtuZWlwZSBzb3JndCBtYW4gZGFmdWVyLCBkYXNzIAorICAgICAgICAiU3RhbmRhcmQtRHJpbmtzIiAoei5CLiBHbHVlaHdlaW4gaW0gRGV6ZW1iZXIpIG5pY2h0IGluIGRhcyBNZW51ZQorICAgICAgICBkZXIgS25laXBlIGF1Zmdlbm9tbWVuIHdlcmRlbi4KKworQkVNRVJLVU5HRU46CisgICAgICAgIEtlaW5lLgorCitTSUVIRSBBVUNIOgorCS9zdGQvcm9vbS9wdWIuYworCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCitMYXN0IG1vZGlmaWVkOiBTYXQgTWFyIDA0IDIyOjQyOjAwIDIwMDAgYnkgUGFyYWNlbHN1cwpkaWZmIC0tZ2l0IGEvZG9jL3Byb3BzL1BfTk9fVFBPUlQgYi9kb2MvcHJvcHMvUF9OT19UUE9SVApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi40MDM1MGU1Ci0tLSAvZGV2L251bGwKKysrIGIvZG9jL3Byb3BzL1BfTk9fVFBPUlQKQEAgLTAsMCArMSwxNSBAQAorTkFNRToKKyAgICBQX05PX1RQT1JUICAgICAgICAgICAgICAgICAgICAidHBvcnQiICAgICAgICAgICAgICAgICAgICAgICAKKworREVGSU5JRVJUIElOOgorICAgIC9zeXMvcHJvcGVydGllcy5oCisKK0JFU0NIUkVJQlVORzoKKyAgICAgS2FubiBmb2xnZW5kZSBXZXJ0ZSBhbm5uZWhtZW4gKGRlZmluaWVydCBpbiBtb3ZpbmcuaCk6CisgICAgIE5PX1RQT1JUX0lOCT0gTWFuIGthbm4gbmljaHQgaW4gZGVuIFJhdW0gaGluZWluIHRlbGVwb3J0aWVyZW4uCisgICAgIE5PX1RQT1JUX09VVCA9IE1hbiBrYW5uIG5pY2h0IGF1cyBkZW0gUmF1bSBoaW5hdXMgdGVsZXBvcnRpZXJlbi4KKyAgICAgTk9fVFBPUlQJPSBXZWRlciBub2NoLgorCitTSUVIRSBBVUNIOgorCVBfTk9fUEFSQV9UUkFOUworCmRpZmYgLS1naXQgYS9kb2MvcHJvcHMvUF9OT19UUkFWRUxJTkcgYi9kb2MvcHJvcHMvUF9OT19UUkFWRUxJTkcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNjE0MjViYwotLS0gL2Rldi9udWxsCisrKyBiL2RvYy9wcm9wcy9QX05PX1RSQVZFTElORwpAQCAtMCwwICsxLDI1IEBACitOQU1FOgorICAgIFBfTk9fVFJBVkVMSU5HICAgICAgICAgICAgICAgICAgICJub190cmF2ZWxpbmciICAgICAgICAgICAgICAgICAgIAorCitERUZJTklFUlQgSU46CisgICAgL3N5cy90cmFuc3BvcnQuaAorCitCRVNDSFJFSUJVTkc6CisgICAgSGllciBzdGVodCBkZXIgYWxsZ2VtZWluZSByZWlzZS1CZWZlaGwgbmljaHQgenVyIFZlcmZ1ZWd1bmcuCisKK0JFTUVSS1VOR0VOOgorICAgIFBfTk9fVFJBVkVMSU5HIHdpcmQgaW4gVHJhbnNwb3J0ZXJuIGdlc2V0enQgd2VubiBTcGllbGVyIGlobiAKKyAgICBuaWNodCBtZWhyICdhdXRvbWF0aXNjaCcgbWl0dGVscyBkZXMgJ3JlaXNlJy1CZWZlaGxzIGJldHJldGVuCisgICAga29lbm5lbiBzb2xsZW4uCisKKyAgICBTaWUgYmVrb21tZW4gaW4gZGVtIFRyYW5zcG9ydGVyIHVuZCBpbiBkZW4gWmllbHJhZXVtZW4gYXVjaCAKKyAgICBrZWluZXJsZWkgSGlud2Vpc2UgZGFyYXVmLCB3b2hpbiBzaWUgZXZ0bC4gcmVpc2VuIGtvZW5udGVuLgorICAgIAorICAgIFN0YW5kYXJkbWFlc3NpZyBpc3QgUF9OT19UUkFWRUxJTkcgbmF0dWVybGljaCAwLgorCitTSUVIRSBBVUNIOgorICAgIHJlaXNlCisKK0xFVFpURVIgQUVOREVSVU5HOgorICAgIERvbiwgMjQuMDEuMjAwMiwgMTA6MTU6MDdoIHZvbiBUaWxseQorICAgIApcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2RvYy9wcm9wcy9QX05PX1hQIGIvZG9jL3Byb3BzL1BfTk9fWFAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZjEyZmU4ZAotLS0gL2Rldi9udWxsCisrKyBiL2RvYy9wcm9wcy9QX05PX1hQCkBAIC0wLDAgKzEsNDMgQEAKK05BTUU6CisgICAgIFBfTk9fWFAgICAgICAgICAgICAgICAgICAgICJub194cCIKKworREVGSU5JRVJUIElOOgorICAgICAvc3lzL2xpdmluZy9saWZlLmgKKworQkVTQ0hSRUlCVU5HOgorICAgICBJbSBOb3JtYWxmYWxsIGJla29tbXQgbWFuIGltIEthbXBmIGdlZ2VuIGVpbmVuIEdlZ25lciBmdWVyIFRyZWZmZXIKKyAgICAgdW5kIGJlaW0gVG9ldGVuIGVpbmUgWFAtR3V0c2NocmlmdC4KKworICAgICBJc3QgUF9OT19YUCBnZXNldHp0LCBzbyBlcmjkbHQgbWFuIGtlaW5lcmxlaSBYUC1HdXRzY2hyaWZ0ZW4KKyAgICAgZvxyIGRlbiBLYW1wZiBvZGVyIGRlbiBUb2QgZGVzIE5QQ3MuCisKK0JFSVNQSUVMOgorICAgICBGb2xnZW5kZXJtYXNzZW4gdW50ZXJiaW5kZXQgbWFuIGRpZSBWZXJnYWJlIHZvbiBFcmZhaHJ1bmdzcHVua3RlCisgICAgIGZ1ZXIgZGVuIEFuZ3JpZmYgZWluZXMgTlBDJ3M6CisKKyAgICAgICBpbmNsdWRlICIvc3lzL2xpdmluZy9saWZlLmgiCisgICAgICAgaW5oZXJpdCAic3RkL25wYyI7CisgICAgICAgdm9pZCBjcmVhdGUoKSB7CisgICAgICAgICA6OmNyZWF0ZSgpOworICAgICAgICAgLi4uCisgICAgICAgICBTZXRQcm9wKFBfTk9fWFAsMSk7CisgICAgICAgfQorCisgICAgIERhbWl0IGthbm4gUF9YUCB0cm90emRlbSBlaW5lbiBXZXJ0IGltIE5QQyBoYWJlbiwgZGVyCisgICAgIEVyc3RraWxsc3R1ZmVucHVua3RlIGZ1ZXIgTGViZXdlc2VuIGF1dG9tYXRpc2NoIGVpbnRyYWVndCEKKworICAgICBBdWNoIGZ1ZXIgZGFzIGt1cnp6ZWl0aWdlIFVudGVyYmluZGVuIGRlciBWZXJnYWJlIHZvbgorICAgICBFcmZhaHJ1bmdzcHVua3RlbiBpc3QgZGllc2UgUHJvcGVydHkgc2lubnZvbGxlciwgYWxzIFBfWFAgaW0gTlBDCisgICAgIGF1ZiAwIHp1IHNldHplbi4KKworQkVNRVJLVU5HRU46CisgICAgIEF1Y2ggZGllIFZlcmdhYmUgdm9uIEVyc3RraWxsc3R1ZmVucHVua3RlbiBrYW5uIGV4cGxpeml0IHVudGVyYnVuZGVuCisgICAgIHdlcmRlbi4gSGllcmZ1ZXIgZ2lidCBlcyBkaWUgYWVobmxpY2ggZ2VhcnRldGUgUHJvcGVydHkgUF9OT19TQ09SRS4KKworU0lFSEUgQVVDSDoKKyAgICAgRnVua3Rpb25lbjogIEFkZEV4cCgpLCBEaXN0cmlidXRlRXhwKCksIGRvX2RhbWFnZSgpCisgICAgIFByb3BlcnRpZXM6ICBQX1hQLCBQX0xBU1RfWFAKKyAgICAgVmVyd2FuZHQ6ICAgIFBfTk9fU0NPUkUKKyAgICAgU29uc3RpZ2VzOiAgIFBfVE9UQUxfV0MsIGNyZWF0ZV9kZWZhdWx0X25wYygpCisKKzE0LkZlYiAyMDA3IEdsb2luc29uClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZG9jL3Byb3BzL1BfTlBDIGIvZG9jL3Byb3BzL1BfTlBDCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjY5ZDEyNzAKLS0tIC9kZXYvbnVsbAorKysgYi9kb2MvcHJvcHMvUF9OUEMKQEAgLTAsMCArMSw4IEBACitOQU1FOgorICAgIFBfTlBDICAgICAgICAgICAgICAgICAgICAgICAgICJpc19ucGMiICAgICAgICAgICAgICAgICAgICAgIAorCitERUZJTklFUlQgSU46CisgICAgL3N5cy9wcm9wZXJ0aWVzLmgKKworQkVTQ0hSRUlCVU5HOgorICAgICBHZXNldHp0IGJlaSBNb25zdGVybi4KZGlmZiAtLWdpdCBhL2RvYy9wcm9wcy9QX05QQ19GQVNUSEVBTCBiL2RvYy9wcm9wcy9QX05QQ19GQVNUSEVBTApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4zZjU4OGI5Ci0tLSAvZGV2L251bGwKKysrIGIvZG9jL3Byb3BzL1BfTlBDX0ZBU1RIRUFMCkBAIC0wLDAgKzEsMjEgQEAKK05BTUU6CisJUF9OUENfRkFTVEhFQUwJCQkibnBjX2Zhc3RoZWFsIgorCitERUZJTklFUlQgSU46CisJL3N5cy9wdWIuaAorCitCRVNDSFJFSUJVTkc6CisgICAgICAgIER1cmNoIHNldHplbiBkaWVzZXIgUHJvcGVydHkgaW4gZWluZXIgS25laXBlIHNvcmd0IG1hbiBkYWZ1ZXIsIGRhc3MgCisgICAgICAgIGJlaSBOUENzLCBkaWUgZG9ydCAidGFua2VuIiwgZGllIExlYmVucy0gdW5kIEtvbnplbnRyYXRpb25zcHVua3RlCisgICAgICAgIGRpcmVrdCBlcmhvZWh0IHdlcmRlbiB1bmQgbmljaHQsIHdpZSBiZWkgdW5nZXNldHp0ZXIgUHJvcGVydHksIGluCisgICAgICAgIGRpZSBqZXcuIEJ1ZmZlciBnZXNjaHJpZWJlbiB3ZXJkZW4uCisKK0JFTUVSS1VOR0VOOgorICAgICAgICBEaWUgQmVudXR6dW5nIGRpZXNlciBQcm9wZXJ0eSBzb2xsdGUgbmljaHQgdW5iZWRpbmd0IHp1bSBTdGFuZGFyZAorICAgICAgICB3ZXJkZW4uCisKK1NJRUhFIEFVQ0g6CisJL3N0ZC9yb29tL3B1Yi5jCisKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KK0xhc3QgbW9kaWZpZWQ6IFdlZCBTZXAgMjkgMTM6NTg6MDAgMTk5OSBieSBQYXJhY2Vsc3VzCmRpZmYgLS1naXQgYS9kb2MvcHJvcHMvUF9OUl9IQU5EUyBiL2RvYy9wcm9wcy9QX05SX0hBTkRTCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmIwODI3YTkKLS0tIC9kZXYvbnVsbAorKysgYi9kb2MvcHJvcHMvUF9OUl9IQU5EUwpAQCAtMCwwICsxLDMxIEBACitQX05SX0hBTkRTCitOQU1FOgorICAgICBQX05SX0hBTkRTICJucl9oYW5kcyIKKworREVGSU5JRVJUIElOOgorICAgICA8d2VhcG9uLmg+CisKK0JFU0NIUkVJQlVORzoKKyAgICAgV2lldmllbGUgSGFlbmRlIG11c3MgbWFuIGZyZWkgaGFiZW4sIHVtIGRpZSBXYWZmZSB6dWVja2VuIG9kZXIgZGVuCisgICAgIFNjaGlsZCB0cmFnZW4genUga29lbm5lbj8KKyAgICAgRGllc2VyIFdlcnQgbXVzcyBtaW5kZXN0ZW5zIDEgYmV0cmFnZW4hCisKKyAgICAgU29sbGVuIFNwaWVsZXIgZGllIFdhZmZlIGJlbnV0emVuIGtvZW5uZW4sIHNvIHNpbmQgaGllciBudXIgZGllIFdlcnRlIDEKKyAgICAgdW5kIDIgbW9lZ2xpY2guIEZhbGxzIGRpZSBXYWZmZSBudXIgdm9uIE1vbnN0ZXJuIGJlbnV0emJhciBzZWluIHNvbGwsCisgICAgIGthbm4gbWFuIGhpZXIgYXVjaCBob2VoZXJlIFdlcnRlIGVpbnRyYWdlbiAoZGF6dSBtdXNzIG1hbiBiZWltIE1vbnN0ZXIKKyAgICAgUF9NQVhfSEFORFMgZW50c3ByZWNoZW5kIGhvY2ggc2V0emVuKS4gQWxzIEJlaXNwaWVsIHNlaSBoaWVyIG51ciBkYXMKKyAgICAgdmllcmhhZW5kaWdlIFNjaHdlcnQgYXVzIGRlbSBGcmllZGhvZiBnZW5hbm50LgorCisgICAgIERlZmF1bHRtYWVzc2lnIHNpbmQgYWxsZSBXYWZmZW4gWndlaWhhZW5kZXIuCisKKyAgICAgRGllc2UgUHJvcGVydHkga2FubiBhdWNoIGJlaSBaYXViZXJuIGJlbnV0enQgd2VyZGVuLCBiZWkgZGVuZW4gbWFuIGVpbmUKKyAgICAgb2RlciBtZWhyZXJlIEhhZW5kZSBmcmVpIGhhYmVuIG11c3MuCisKK1NJRUhFIEFVQ0g6CisgICAgIFBfSEFORFMsIFBfSEFORFNfVVNFRF9CWQorICAgICBQX01BWF9IQU5EUywgUF9VU0VEX0hBTkRTLCBQX0ZSRUVfSEFORFMKKyAgICAgVXNlSGFuZHMsIEZyZWVIYW5kcworICAgICAvc3RkL3dlYXBvbi5jLCAvc3RkL3NwZWxsYm9vay5jCisKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KK0xhc3QgbW9kaWZpZWQ6IFN1biBNYXkgMTkgMTU6MDA6MDIgMTk5NiBieSBXYXJnb24KZGlmZiAtLWdpdCBhL2RvYy9wcm9wcy9QX09SQUtFTCBiL2RvYy9wcm9wcy9QX09SQUtFTApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5jZjM4M2RhCi0tLSAvZGV2L251bGwKKysrIGIvZG9jL3Byb3BzL1BfT1JBS0VMCkBAIC0wLDAgKzEsOSBAQAorTkFNRToKKyAgICBQX09SQUtFTCAgICAgICAgICAgICAgICAgICAgICAib3Jha2VsIiAgICAgICAgICAgICAgICAgICAgICAKKworREVGSU5JRVJUIElOOgorICAgIC9zeXMvcHJvcGVydGllcy5oCisKK0JFU0NIUkVJQlVORzoKKyAgICAgV2VubiBkaWVzZSBQcm9wZXJ0eSBnZXNldHp0IGlzdCwga2FubiBkZXIgV2FuZGVyZXIgaW4gZGllc2VuCisgICAgIFJhdW0gaGluZWluLgpkaWZmIC0tZ2l0IGEvZG9jL3Byb3BzL1BfT1JJR19GSUxFX05BTUUgYi9kb2MvcHJvcHMvUF9PUklHX0ZJTEVfTkFNRQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4yMDY0MzYwCi0tLSAvZGV2L251bGwKKysrIGIvZG9jL3Byb3BzL1BfT1JJR19GSUxFX05BTUUKQEAgLTAsMCArMSw4IEBACitOQU1FOgorICAgIFBfT1JJR19GSUxFX05BTUUgICAgICAgICAgICAgICAgIm9yaWdpbmFsX29iamVjdF9uYW1lIiAgICAgICAgICAgICAgIAorCitERUZJTklFUlQgSU46CisgICAgL3N5cy9wcm9wZXJ0aWVzLmgKKworQkVTQ0hSRUlCVU5HOgorICAgICBJbiBlaW5lciBMZWljaGUgZGVyIEZpbGVuYW1lIGRlcyBHZXN0b3JiZW5lbi4KZGlmZiAtLWdpdCBhL2RvYy9wcm9wcy9QX09SSUdfTkFNRSBiL2RvYy9wcm9wcy9QX09SSUdfTkFNRQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi45NmE1ZDczCi0tLSAvZGV2L251bGwKKysrIGIvZG9jL3Byb3BzL1BfT1JJR19OQU1FCkBAIC0wLDAgKzEsOCBAQAorTkFNRToKKyAgICBQX09SSUdfTkFNRSAgICAgICAgICAgICAgICAgICAib3JpZ2luYWxfbmFtZSIgICAgICAgICAgICAgICAKKworREVGSU5JRVJUIElOOgorICAgIC9zeXMvcHJvcGVydGllcy5oCisKK0JFU0NIUkVJQlVORzoKKyAgICAgSW4gZWluZXIgTGVpY2hlIGRlciBOYW1lIGRlcyBHZXN0b3JiZW5lbi4gKG5hbWUoUkFXKSkKZGlmZiAtLWdpdCBhL2RvYy9wcm9wcy9QX1BBUkEgYi9kb2MvcHJvcHMvUF9QQVJBCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjg3Y2M5MmIKLS0tIC9kZXYvbnVsbAorKysgYi9kb2MvcHJvcHMvUF9QQVJBCkBAIC0wLDAgKzEsNTQgQEAKK05BTUU6CisgICAgUF9QQVJBICAgICAgICAgICAgICAgICAgICAgICAgInBhcmEiICAgICAgICAgICAgICAgICAgICAgICAgCisKK0RFRklOSUVSVCBJTjoKKyAgICAvc3lzL3Byb3BlcnRpZXMuaAorCitCRVNDSFJFSUJVTkc6CisgICAgTnVtbWVyIGRlciBQYXJhbGxlbHdlbHQsIGluIGRlciBzaWNoIGVpbiBTcGllbGVyIGJlZmluZGV0LgorCisgICAgSXN0IGRpZSBQcm9wZXJ0eSBQX1BBUkEgYXVmIE51bGwgZ2VzZXR6dCwgc28gYmVmaW5kZXQgc2ljaCBkZXIgU3BpZWxlciBpbgorICAgIGRlciAnTm9ybWFsd2VsdCcuIEdpYnQgZXMgYmVpIGVpbmVyIEJld2VndW5nIGRpZXNlcyBTcGllbGVycyBtZWhyZXJlCisgICAgbW9lZ2xpY2hlIFppZWxyYWV1bWUgbWl0IGlkZW50aXNjaGVtIE5hbWVuIGFiZXIgdW50ZXJzY2hpZWRsaWNoZW4gRW5kdW5nZW4KKyAgICAnbmFtZS5jJywgJ25hbWVeMS5jJywgJ25hbWVeMi5jJyBldGMuLCBzbyB3aXJkIGRlciBTcGllbGVyIGluIGRlbiBSYXVtCisgICAgJ25hbWUuYycgYmV3ZWd0LiAKKworICAgIFdpcmQgZGllIFByb3BlcnR5IFBfUEFSQSBhdWYgZWluZW4gV2VydCBuPjAgZ2VzZXR6dCwgc28gbGFuZGV0IGRlciBTcGllbGVyCisgICAgYmVpIGVpbmVyIEJld2VndW5nIGltIFJhdW0gJ25hbWVebi5jJy4gSXN0IGtlaW4gUmF1bSBtaXQgZW50c3ByZWNoZW5kZXIKKyAgICBFbmR1bmcgdm9yaGFuZGVuLCB3aXJkIGRlciBTcGllbGVyIHN0YXR0ZGVzc2VuIGluIGRlbiBOb3JtYWx3ZWx0cmF1bQorICAgIGJld2VndC4KKworICAgIERpZXNlIFByb3Aga2FubiBhdWNoIGluIGVpbmVtIFZpcnR1YWwgQ29tcGlsZXIgZ2VzZXR6dCB3ZXJkZW4uIEluIGRpZXNlbQorICAgIEZhbGwgc2NocmFlbmt0IHNpZSBkaWUgRGltZW5zaW9uZW4gZWluLCBpbiBkZW5lbiBkZXIgVkMgT2JqZWt0ZSBlcnpldWd0LgorICAgIERpZSBQcm9wIGthbm4gZWluZSBlaW56ZWxuZSBaaWZmZXIgKEludCkgb2RlciBlaW4gQXJyYXkgdm9uIEludHMgCisgICAgYXVmbmVobWVuLCBkYW5uIGlzdCBkZXIgVkMgZnVlciBhbGxlIGFuZ2VnZWJlbiBEaW1lbnNpb25lbiB6dXN0YWVuZGlnLiAKKyAgICBFaW4gbGVlcmVzIEFycmF5IGVybGF1YnQgZ2FyIGtlaW5lIFBhcmEtT2JqZWt0ZS4KKworQU5NRVJLVU5HOgorICAgIERpZSBFbmR1bmcgJ14wJyBrZW5uemVpY2huZXQgX25pY2h0XyBkaWUgTm9ybWFsd2VsdC4gU28gbGFuZ2Uga2VpbiBBdXNnYW5nCisgICAgZXhwbGl6aXQgYXVmIGRlbiBSYXVtICduYW1lXjAuYycgdmVyd2Vpc3QsIHdpcmQga2VpbiBTcGllbGVyIGRlbiBSYXVtCisgICAgYmV0cmV0ZW4ga29lbm5lbi4gRGVzaGFsYiBrYW5uIG1hbiBkaWUgRW5kdW5nICdeMCcgei5CLiBkYXp1IGJlbnV0emVuLCB1bQorICAgIGVpZ2VuZSBTdGFuZGFyZHJhZXVtZSBmdWVyIGVpbiBHZWJpZXQgenUgc2NocmVpYmVuLCBkaWUgZGFubiBzb3dvaGwgdm9uCisgICAgZGVuIE5vcm1hbC0gYWxzIGF1Y2ggdm9uIGRlbiBQYXJhbGxlbHdlbHRyYWV1bWVuIGluaGVyaXRldCB3ZXJkZW4uCisKKyAgICBSYWV1bWUgbWl0IEVuZHVuZ2VuICdebi5jJywgYmVpIGRlbmVuICduJyBrZWluZSBwb3NpdGl2ZSBnYW56ZSBaYWhsIGlzdCwKKyAgICB3ZXJkZW4gbmljaHQgYmVhY2h0ZXQuCisKKyAgICBGdWVyIGRpZSBFbnRzY2hlaWR1bmcsIGluIHdlbGNoZW0gUmF1bSBlaW4gU3BpZWxlciBpbiBBYmhhZW5naWdrZWl0IHZvbgorICAgIFBfUEFSQSBsYW5kZXQsIGlzdCBkaWUgRnVua3Rpb24gbW92ZSgpIHp1c3RhZW5kaWcuIEFscyBNYWdpZXIgbXVzcyBtYW4gc2ljaAorICAgIGRhcnVtIG5pY2h0IGdlc29uZGVydCBrdWVtbWVybi4gRGFzIGhlaXNzdCBhYmVyIGF1Y2gsIGRhc3MgYmVpbSBBbnNjaGx1c3MKKyAgICBlaW5lcyBOb3JtYWx3ZWx0cmF1bWVzIGF1dG9tYXRpc2NoIGFsbGUgaW4gZGVtIFZlcnplaWNobmlzIG1pdCBnbGVpY2hlbQorICAgIE5hbWVuIHZvcmhhbmRlbmVuIFBhcmFsbGVsd2VsdHJhZXVtZSBtaXQgYW5nZXNjaGxvc3NlbiB3ZXJkZW4uCisKKyAgICBTb2xsZW4gZWluemVsbmUgUGFyYWxsZWx3ZWx0cmFldW1lIG5vY2ggbmljaHQgYW5nZXNjaGxvc3NlbiB3ZXJkZW4sIHNvIG11c3MKKyAgICBpbiBpaG5lbiBkaWUgUHJvcGVydHkgUF9OT19QTEFZRVJTIGdlc2V0enQgd2VyZGVuLiBEaWVzZSBSYWV1bWUgc2luZCBkYW5uCisgICAgbnVyIGR1cmNoIE1hZ2llciB1bmQgVGVzdHNwaWVsZXIgenUgYmV0cmV0ZW4gKHVuZCB6dSB0ZXN0ZW4pLgorCisgICAgSW4gUGFyYXdlbHRyYWV1bWVuIGxpZWZlcnQgUF9QQVJBICduJyB6dXJ1ZWNrLgorICAgIE1hbiBrYW5uIGFsc28gei5CLiBpbiBOUENzIGVpbmZhY2ggdWViZXIgZW52aXJvbm1lbnQoKS0+UXVlcnlQcm9wKFBfUEFSQSkgCisgICAgYWJmcmFnZW4sIGluIHdlbGNoZXIgUGFyYXdlbHQgc2ljaCBkaWVzZXIgZ2VyYWRlIGJlZmluZGV0LgorCitTSUVIRSBBVUNIOgorICAgIFBfTk9fUExBWUVSUywgbW92ZSwgcGFyYXJhZXVtZQorICAgIAorMjUuSmFuIDIwMTUgR2xvaW5zb24KZGlmZiAtLWdpdCBhL2RvYy9wcm9wcy9QX1BBUlJZIGIvZG9jL3Byb3BzL1BfUEFSUlkKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMDM1NTBkZgotLS0gL2Rldi9udWxsCisrKyBiL2RvYy9wcm9wcy9QX1BBUlJZCkBAIC0wLDAgKzEsMzEgQEAKK1BfUEFSUlkKKworTkFNRToKKyAgICAgUF9QQVJSWSAicGFycnkiCisKK0RFRklOSUVSVCBJTjoKKyAgICAgPGNvbWJhdC5oPgorCitCRVNDSFJFSUJVTkc6CisgICAgIERpZXNlIFByb3BlcnR5IGxlZ3QgZmVzdCwgaW53aWVmZXJuIGVpbmUgV2FmZmUgYWxzIFBhcmllcndhZmZlCisgICAgIGdlbnV0enQgd2VyZGVuIGthbm4uIE1vZWdsaWNoZSBXZXJ0ZToKKworICAgICAgICAgUEFSUllfTk9UICAgICBFaW5lIHJlaW5lIEFuZ3JpZmZzd2FmZmUgb2huZSBQYXJpZXJmdW5rdGlvbi4KKworICAgICAgICAgUEFSUllfVE9PICAgICBFaW5lIGtvbWJpbmllcnRlIEFuZ3JpZmZzLSB1bmQgUGFyaWVyd2FmZmUuCisKKyAgICAgICAgIFBBUlJZX09OTFkgICAgRWluZSByZWluZSBQYXJpZXJ3YWZmZS4gRGllc2Uga2FubiB6dXNhZXR6bGljaAorICAgICAgICAgICAgICAgICAgICAgICB6dSBlaW5lciBub3JtYWxlbiBXYWZmZSBnZXp1ZWNrdCB3ZXJkZW4uCisKKyAgICAgTWFuIHNvbGx0ZSBudXIgZGllIGluIDxjb21iYXQuaD4gZGVmaW5pZXJ0ZW4gS29uc3RhbnRlbiB2ZXJ3ZW5kZW4uCisKK0JFTUVSS1VOR0VOOgorICAgICBEdXJjaCBkaWVzZSBQcm9wZXJ0aWUgbGFlc3N0IHNpY2ggX2tlaW5fIFBhcmFkZS1Cb251cyBmdWVyIFRydmVzIAorICAgICBzZXR6ZW4hIEFsbGUgR2lsZGVuIGhhYmVuIGV0d2FzIGRhdm9uLiBWb3IgVmVyd2VuZHVuZyBiaXR0ZSBtaXQKKyAgICAgZGVyIE9iamVrdC1CYWxhbmNlIGFic3ByZWNoZW4uCisKK1NJRUhFIEFVQ0g6CisgICAgIC9zdGQvd2VhcG9uL2NvbWJhdC5jCisKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KK0xhc3QgbW9kaWZpZWQ6IFNhdCBKdW4gMDEgMTM6Mjg6NDUgMjAwMSBieSBUaWxseQpkaWZmIC0tZ2l0IGEvZG9jL3Byb3BzL1BfUEFSUllfV0VBUE9OIGIvZG9jL3Byb3BzL1BfUEFSUllfV0VBUE9OCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmM4NzNiZmIKLS0tIC9kZXYvbnVsbAorKysgYi9kb2MvcHJvcHMvUF9QQVJSWV9XRUFQT04KQEAgLTAsMCArMSwxNyBAQAorUF9QQVJSWV9XRUFQT04KKworTkFNRToKKyAgICAgUF9QQVJSWV9XRUFQT04gInBhcnJ5X3dlYXBvbiIKKworREVGSU5JRVJUIElOOgorICAgICA8Y29tYmF0Lmg+CisKK0JFU0NIUkVJQlVORzoKKyAgICAgRGllc2UgUHJvcGVydHkgZ2lidCBhbiwgd2VsY2hlIFBhcmllcndhZmZlIGVpbiBTcGllbGVyIGRlcnplaXQKKyAgICAgZ2V6dWVja3QgaGF0LgorCitTSUVIRSBBVUNIOgorICAgICAvc3RkL3dlYXBvbi9jb21iYXQuYywgL3N0ZC9saXZpbmcvY29tYmF0LmMKKworLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorTGFzdCBtb2RpZmllZDogU2F0IEp1biAyNiAxNToyMzowMCAxOTk5IGJ5IFBhcmFjZWxzdXMKZGlmZiAtLWdpdCBhL2RvYy9wcm9wcy9QX1BFQUNFX0hJU1RPUlkgYi9kb2MvcHJvcHMvUF9QRUFDRV9ISVNUT1JZCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmYzY2IyZDIKLS0tIC9kZXYvbnVsbAorKysgYi9kb2MvcHJvcHMvUF9QRUFDRV9ISVNUT1JZCkBAIC0wLDAgKzEsNDIgQEAKK1BfUEVBQ0VfSElTVE9SWQorCitOQU1FOgorICAgICBQX1BFQUNFX0hJU1RPUlkgICAgICAiX3BlYWNlX2hpc3RvcnkiCisKK0RFRklOSUVSVCBJTjoKKyAgICAgL3N5cy9saXZpbmcvY29tYmF0LmgKKworQkVTQ0hSRUlCVU5HOgorICAgIEluIGRpZXNlciBQcm9wIHdpcmQgbmFjaCBHaWxkZW4gZ2V0cmVubnQgZ2VzcGVpY2hldCwgd2llIG9mdCBkYXMgTGViZXdlc2VuCisgICAgaW4gbGV0enRlciBaZWl0IGJlZnJpZWRldCB3b3JkZW4gaXN0LiBEaWVzZSBJbmZvcm1hdGlvbiBnZWh0IGluIGRpZQorICAgIENoYW5jZSBhdWYgZWluZSB6dWt1ZW5mdGlnZSBCZWZyaWVkdW5nIGVpbi4KKyAgICBEaWUgWmFlaGxlciB3ZXJkZW4gaW0gRHVyY2hzY2huaXR0IGFsbGUgMjcwMHMgdW0gMi0zIHJlZHV6aWVydC4KKyAgICBEaWUgRGF0ZW5zdHJ1a3R1ciBpc3QgZWluIEFycmF5LCB3ZWxjaGVzIGVpbmVuIFplaXRzdGVtcGVsIGFscyBlcnN0ZXMKKyAgICBFbGVtZW50IHVuZCBlaW4gTWFwcGluZyBhbHMgendlaXRlcyBlbnRoYWVsdC4gRGFzIE1hcHBpbmcgZW50aGFlbHQgdW50ZXIKKyAgICBkZW4gR2lsZGVubmFtZW4gYWxzIEtleXMgZGVuIGdhbnp6YWhsaWdlbiBaYWVobGVyIGVyZm9sZ3JlaWNoZXIKKyAgICBCZWZyaWVkdW5nZW4gdm9uIFNwaWVsZXJuIGRpZXNlciBHaWxkZS4KKworQkVNRVJLVU5HRU46CisgICAgKiBEaWVzZSBQcm9wZXJ0eSBzb2xsdGUgbmllbWFscyBkaXJla3QgZ2VhZW5kZXJ0IHdlcmRlbi4gQml0dGUgZ3JlaWZ0IGFsc28KKyAgICAgIG51ciBsZXNlbmQgZGFyYXVmIHp1LiBTb2xsdGUgaGllcm1pdCBTY2hpbmRsdWRlciBnZXRyaWViZW4gd2VyZGVuLAorICAgICAgd2VyZGVuIGRpZSBEYXRlbiB2b3IgZXh0ZXJuZXIgQWVuZGVydW5nIGdlc2NodWV0enQuCisgICAgKiBEaWUgRGF0ZW5zdHJ1a3R1ciBpbiBkaWVzZXIgUHJvcCBrYW5uIGluIFp1a3VuZnQgdS5VLiBnZWFlbmRlcnQgd2VyZGVuLgorICAgICAgRGFoZXIgYWVuZGVydCBzaWUgYW0gYmVzdGVuIGF1Y2ggbmljaHQgaW0gZWlnZW5lbiBOUEMgb2RlciBzZWlkIGRhcmF1ZgorICAgICAgZ2VmYXNzdCwgaXJnZW5kd2FubiBIYW5kIGFubGVnZW4genUgbXVlc3Nlbi4KKyAgICAqIERpZSBBa3R1YWxpc2llcnVuZyAoYXVjaCBkaWUgUmVkdWt0aW9uKSBmaW5kZXQgaW0gWnVnZSBlaW5lcworICAgICAgUXVlcnlQYWNpZnkoKSBzdGF0dCwgbmljaHQgaW0gUmVzZXQgZGVzIExlYmV3ZXNlbnMuCisKK0JFSVNQSUVMOgorICAgIEluIFBfUEVBQ0VfSElTVE9SWSBzdGVodDoKKyAgICAoezEyMDk2NTQ1OTcsIChbInphdWJlcmVyIjogMywgImtsZXJ1cyI6IDRdKSB9KQorICAgIEJlaSBkZXIgQmVyZWNobnVuZyBkZXIgbmFlY2hzdGVuIEJlZnJpZWRlLUNoYW5jZSBnZWhlbiBiZWkgWmF1YmVyZXJuIGFsc28KKyAgICAzIGVyZm9sZ3JlaWNoZSBWZXJzdWNoZSwgYmVpIEtsZXJpa2VybiA0IGVyZm9sZ3JlaWNoZSBWZXJzdWNoZSBlaW4uCisgICAgRGVyIFplaXR3ZXJ0IGFuIGVyc3RlciBTdGVsbGUgZGVzIEFycmF5cyB3aXJkIGRlciBiZWkgZGVyIEJlcmVjaG51bmcgZGVyCisgICAgbmFlY2hzdGVuIFJlZHVrdGlvbiBkZXIgWmFlaGxlciBiZXJ1ZWNrc2ljaHRpZ3QuIChHZW5hdWVzOiBzLiBjb21iYXQuYykKKworU0lFSEUgQVVDSDoKKyAgICAgUF9QRUFDRV9BQ0NFUFQKKyAgICAgUXVlcnlQYWNpZnkoKQorICAgICAvc3RkL2xpdmluZy9jb21iYXQuYworCiswMS4wNS4yMDA4LCBaZXNzdHJhCmRpZmYgLS1naXQgYS9kb2MvcHJvcHMvUF9QRVJNX1NUUklORyBiL2RvYy9wcm9wcy9QX1BFUk1fU1RSSU5HCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmQ3OTA0YjcKLS0tIC9kZXYvbnVsbAorKysgYi9kb2MvcHJvcHMvUF9QRVJNX1NUUklORwpAQCAtMCwwICsxLDExIEBACitOQU1FOgorICAgIFBfUEVSTV9TVFJJTkcgICAgICAgICAgICAgICAgICJwZXJtX3N0cmluZyIgICAgICAgICAgICAgICAgIAorCitERUZJTklFUlQgSU46CisgICAgL3N5cy9wbGF5ZXIvY29tbS5oCisKK0JFU0NIUkVJQlVORzoKKyAgICAgRnVlciBTcHJhY2hmbHVlY2hlLCBQcm9wZXJ0eSBpc3QgaW0gU3BpZWxlci1PYmpla3QgenUgc2V0emVuLiBJbiBkZW0KKyAgICAgT2JqZWt0LCBkYXMgaW4gUF9QRVJNX1NUUklORyBnZXNwZWljaGVydCBpc3QsIHdpcmQgYmVpIFNwcmFjaGJlZmVobGVuCisgICAgIHBlcm11dGF0ZV9zdHJpbmcoc3RyKSBhdWZnZXJ1ZmVuIHVuZCBkZXIgenVydWVja2dlZ2ViZW5lIFN0cmluZyAKKyAgICAgc3RhdHRkZXNzZW4gYXVzZ2VnZWJlbi4KZGlmZiAtLWdpdCBhL2RvYy9wcm9wcy9QX1BJQ0tfTVNHIGIvZG9jL3Byb3BzL1BfUElDS19NU0cKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZjc3ZDUwOAotLS0gL2Rldi9udWxsCisrKyBiL2RvYy9wcm9wcy9QX1BJQ0tfTVNHCkBAIC0wLDAgKzEsNjAgQEAKK1BfUElDS19NU0cKK05BTUU6CisgICAgIFBfUElDS19NU0cJCQkJInBpY2tfbWVzc2FnZSIKKworREVGSU5JRVJUIElOOgorICAgICAvc3lzL2xpdmluZy9wdXRfYW5kX2dldC5oCisKK0JFU0NIUkVJQlVORzoKKyAgICAgTWl0IFBfUElDS19NU0cga2FubiBtYW4gZGllIE1lbGR1bmcsIGRpZSBtYW4gYmVpbSBBdWZuZWhtZW4gZWluZXMKKyAgICAgT2JqZWt0ZXMgYmVrb21tdCwgbW9kaWZpemllcmVuLgorCisgICAgIEZvbGdlbmRlIFdlcnRlIHNpbmQgbW9lZ2xpY2g6CisKKyAgICAgbyAwCisgICAgICAgRXMgd2lyZCBlaW5lIFN0YW5kYXJkbWVsZHVuZyBhdXNnZWdlYmVuLiBEaWVzIGlzdCBWb3JlaW5zdGVsbHVuZy4KKworICAgICBvIE5PX1BOR19NU0cgICAgICAgPT0gLTEKKyAgICAgICBFcyB3aXJkIGtlaW5lcmxlaSBNZWxkdW5nIGF1c2dlZ2ViZW4KKworICAgICBvIEVpbiBBcnJheSBhdXMgU3RyaW5ncworICAgICAgIERlciBlcnN0ZSBTdHJpbmcgd2lyZCBhbiBkZW4gU3BpZWxlciBhdXNnZWdlYmVuLCBkZXIgendlaXRlCisgICAgICAgKG9wdGlvbmFsZSkgYW4gZGVuIFJhdW0uCisKKyAgICAgICBEaWUgU3RyaW5ncyB3ZXJkZW4gZHVyY2ggZGllIEZ1bmt0aW9uIHJlcGxhY2VfcGVyc29uYWwoKSBnZXBhcnN0LgorCU9iamVrdDEgLSBTcGllbGVyCisgICAgICAgIE9iamVrdDIgLSBkYXMgT2JqZWt0LCBkYXMgZ2Vub21tZW4gd2lyZAorCisgICAgICAgV2lyZCBkZXIgendlaXRlIFN0cmluZyBuaWNodCBhbmdlZ2ViZW4sIGVyZm9sZ3Qga2VpbmUgTWVsZHVuZyBhbiBkZW4KKyAgICAgICBSYXVtLgorCitCRUlTUElFTDoKKyAgICAgdm9pZCBjcmVhdGUoKSB7CisgICAgICAuLi4KKyAgICAgIFNldFByb3AoIFBfU0hPUlQsICJFdHdhcyBTYW5kIiApOworICAgICAgU2V0UHJvcCggUF9MT05HLCBicmVha19zdHJpbmcoCisgICAgICAgIkVpbiB3ZW5pZyBtYWdpc2NoZXIgU2FuZC4gU2VociBmZWlua3J1ZW1lbGlnLiIsNzggKSk7CisKKyAgICAgIFNldFByb3AoIFBfTkFNRSwgIlNhbmQiICk7CisgICAgICBBZGRJZCggKHsic2FuZCJ9KSApOworICAgICAgU2V0UHJvcCggUF9HRU5ERVIsIE1BTEUgKTsKKworICAgICAgU2V0UHJvcCggUF9QSUNLX01TRywgKHsKKyAgICAgICAiRHUgc2NoYXVmZWxzdCBAV0VOMiBpbiBkZWluZSBIYW5kLiIsCisgICAgICAgIkBXRVIxIHNjaGF1ZmVsdCBAV0VOMiBpbiBlaW5lIEhhbmQuIn0pKTsKKyAgICAgIC4uLgorICAgICB9CisKKyAgICAgRGFzIGdhbnplIGZ1ZWhydCBiZWkgVWdhcnMgIm5pbW0gc2FuZCIgenUgZm9sZ2VuZGVuCisgICAgIE1lbGR1bmdlbjoKKworICAgICBVZ2FyOiAiRHUgc2NoYXVmZWxzdCBkZW4gU2FuZCBpbiBkZWluZSBIYW5kLiIKKyAgICAgUmF1bTogIlVnYXIgc2NoYXVmZWx0IGRlbiBTYW5kIGluIGVpbmUgSGFuZC4iCisKK1NJRUhFIEFVQ0g6CisgICAgIEFlaG5saWNoZXM6IFBfRFJPUF9NU0csIFBfUFVUX01TRywgUF9HSVZFX01TRywgUF9XRUFSX01TRywgUF9XSUVMRF9NU0cKKyAgICAgRmVobGVyOiAgICAgUF9UT09fSEVBVllfTVNHLCBQX0VOVl9UT09fSEVBVllfTVNHLCBQX1RPT19NQU5ZX01TRywKKyAgICAgICAgICAgICAgICAgUF9OT0lOU0VSVF9NU0csIFBfTk9MRUFWRV9NU0csIFBfTk9EUk9QLCBQX05PR0VUIAorICAgICBTb25zdGlnZXM6ICByZXBsYWNlX3BlcnNvbmFsKEUpLCBwaWNrX29iaihMKSwgL3N0ZC9saXZpbmcvcHV0X2FuZF9nZXQuYworCisxNC4gTWFlcnogMjAwNCBHbG9pbnNvbgpkaWZmIC0tZ2l0IGEvZG9jL3Byb3BzL1BfUElMRV9OQU1FIGIvZG9jL3Byb3BzL1BfUElMRV9OQU1FCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmU1NGRjNzIKLS0tIC9kZXYvbnVsbAorKysgYi9kb2MvcHJvcHMvUF9QSUxFX05BTUUKQEAgLTAsMCArMSw5IEBACitOQU1FOgorICAgIFBfUElMRV9OQU1FICAgICAgICAgICAgICAgICAgICJmaWxlX25hbWUiICAgICAgICAgICAgICAgCisKK0RFRklOSUVSVCBJTjoKKyAgICAvc3lzL2NvbnRhaW5lci9wcm9wZXJ0aWVzLmgKKworQkVTQ0hSRUlCVU5HOgorICAgICBJbiBlaW5lciBMZWljaGUgZGVyIE5hbWUgZGVzIEdlc3RvcmJlbmVuIGltIERhdGl2LiAobmFtZShXRU0pKQorICAgICBXaXJkIHZvbSBIYXVmZW4gYmVub2V0aWd0LgpkaWZmIC0tZ2l0IGEvZG9jL3Byb3BzL1BfUExBWUVSX0xJR0hUIGIvZG9jL3Byb3BzL1BfUExBWUVSX0xJR0hUCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmRkZDU5YjUKLS0tIC9kZXYvbnVsbAorKysgYi9kb2MvcHJvcHMvUF9QTEFZRVJfTElHSFQKQEAgLTAsMCArMSwyOCBAQAorTkFNRToKKyAgICBQX1BMQVlFUl9MSUdIVCAgICAgICAgICAgICAgICAgICAgICAgInBsYXllcl9saWdodCIKKworREVGSU5JRVJUIElOOgorICAgIC9zeXMvcHJvcGVydGllcy5oCisKK0JFU0NIUkVJQlVORzoKKyAgICBHaWJ0IGRlbiBMaWNodGxldmVsIGFuLCBtaXQgZGVtIGVpbiBMZWJld2VzZW4gc2llaHQsIGVpbiBBYmZyYWdlbiBkaWVzZXIKKyAgICBQcm9wZXJ0eSBrYW5uIHouQi4gc2lubnZvbGwgc2VpbiB3ZW5uIG1hbiBhYmZyYWdlbiB3aWxsIG9iIGVpbiBTcGllbGVyCisgICAgZ2VudWcgTGljaHQgZGFiZWkgaGF0IHVtIGVpbiBiZXN0aW1tdGVzIERldGFpbCB1bnRlcnN1Y2hlbiB6dSBrb2VubmVuLgorCisgICAgQml0dGUgX251cl8gdWViZXIgUXVlcnlQcm9wIGF1ZiBkaWVzZSBQcm9wZXJ0eSB6dWdyZWlmZW4sCisgICAgZGEgZGFzIExpY2h0bGV2ZWwgZ2dmLiBuZXUgYmVyZWNobmV0IHdlcmRlbiBtdXNzIQorCisgICAgRWluIGRpcmVrdGVzIHNldHplbiBkaWVzZXIgUHJvcGVydHkgaXN0IE5JQ0hUIG1vZWdsaWNoLiBFcyBpc3QgamVkb2NoCisgICAgbW9lZ2xpY2ggZW50d2VkZXIgZWluZSBDbG9zdXJlIHp1IGJlbnV0emVuIG9kZXIgZGVuIFdlcnQgdWViZXIgZWluZW4KKyAgICBQX0xJR0hUX01PRElGSUVSIHp1IHZlcmFlbmRlcm4uCisKKyAgICBVbSB6dSBlcnJlaWNoZW4sIGRhcyBlaW4gTlBDIE5hY2h0c2ljaHQgYmVrb21tdCwgZ2lidCBlcyBudW4gMyBWYXJpYW50ZW4uCisgICAgLSBlaW5lIGNsb3N1cmU6CisgICAgICAgIFNldChQX1BMQVlFUl9MSUdIVCwgZnVuY3Rpb24gaW50ICgpIHtyZXR1cm4gMTt9ICwgRl9RVUVSWV9NRVRIT0QpIAorICAgICAgZGllc2VzIGJlZGV1dGV0LCBkYXNzIGRlciBOUEMgaW4gamVkZXIgRHVua2VsaGVpdCBwZXJmZWt0IHNlaGVuIGthbm4uCisgICAgLSBkYXMgc2V0emVuIHZvbiBlaW5lbSBQX0xJR0hUX01PRElGSUVSCisgICAgLSBkYXMgYmVudXR6ZW4gZGVzIHN0ZHNraWxscy4gSGllcnp1IHNjaHJlaWJ0IG1hbiBpbiBkYXMgY3JlYXRlKCkgZGVzCisgICAgICBOUENzIGVpbmZhY2ggZWluOiBNb2RpZnlTa2lsbChTS19OSUdIVFZJU0lPTiwgMTAwMDApOworCitTSUVIRSBBVUNIOgorICAgIFBfTElHSFRfTU9ESUZJRVIsIFBfTElHSFQsIFBfVE9UQUxfTElHSFQsIFBfSU5UX0xJR0hULCBDYW5ub3RTZWUoKQpkaWZmIC0tZ2l0IGEvZG9jL3Byb3BzL1BfUExVUkFMIGIvZG9jL3Byb3BzL1BfUExVUkFMCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjBhNWUzYTUKLS0tIC9kZXYvbnVsbAorKysgYi9kb2MvcHJvcHMvUF9QTFVSQUwKQEAgLTAsMCArMSwzOSBAQAorTkFNRToKKyAgICBQX1BMVVJBTCAgICAgICAgICAgICAgICAgICAgICAicGx1cmFsIgorCitERUZJTklFUlQgSU46CisgICAgL3N5cy90aGluZy9sYW5ndWFnZS5oCisKK0JFU0NIUkVJQlVORzoKKyAgICBNaXQgSGlsZmUgdm9uIFBfUExVUkFMIGtvZW5uZW4gYXVjaCBuaWNodCBVbml0IE9iamVrdGUgYWxzIFBsdXJhbG9iamVrdGUKKyAgICBtYXJraWVydCB3ZXJkZW4uIEJlaSBlaW5lbSBXZXJ0ID4gMSB3aXJkIGRlciBXZXJ0IGF1c3NlcmRlbSBhdWNoIG5vY2ggaW4KKyAgICBkZW4gTmFtZW4gZWluZ2VmdWVndC4gU29sbHRlIG1hbiBpbiBlaWdlbmVtIENvZGUgenVsYXNzZW4gd29sbGVuLCBkYXMKKyAgICBldHdhcyBtaXQgYmVzdGltbXRlbiBPYmpla3RlbiBnZXNjaGllaHQsIGRhbm4gc29sbHRlIG1hbiBkaWUgVmVyYmVuCisgICAgZW50c3ByZWNoZW4ga29uanVnaWVyZW4uCisKK0JFTUVSS1VOR0VOOgorICAgIFdpcmt0IG5pY2h0IGF1ZiBUb2Rlc21lbGR1bmdlbiAtPiBzaWVoZSBkYWZ1ZXIgUF9LSUxMX01TRworCitCRUlTUElFTEU6CisgICAgU2V0UHJvcChQX05BTUUsICJTdGllZmVsIik7IFNldFByb3AoUF9QTFVSQUwsIDIpOworICAgIG5hbWUoV0VSLCAxKSAtPiAiZGllIHp3ZWkgU3RpZWZlbCIKKworICAgIFNldFByb3AoUF9OQU1FLCAiU3RpZWZlbCIpOyBTZXRQcm9wKFBfUExVUkFMLCAxKTsKKyAgICBuYW1lKFdFUiwgMSkgLT4gImRpZSBTdGllZmVsIgorCisgICAgLy8gRWluIEJlaXNwaWVsIGZ1ZXIgZGFzIGtvbmp1Z2llcmVuIHZvbiBWZXJiZW4KKyAgICBzdGF0aWMgaW50IGNtZF9vcGZlcihzdHJpbmcgc3RyKQorICAgIHsKKyAgICAgICBpbnQgaTsKKyAgICAgICBvYmplY3QgKm9iczsKKyAgICAgICBub3RpZnlfZmFpbCgiV2FzIG1vZWNodGVzdCBEdSBvcGZlcm4/XG4iKTsKKyAgICAgICBpZiAoIXN0ciB8fCAhc2l6ZW9mKG9icz1QTC0+ZmluZF9vYnMoc3RyKSkpIHJldHVybiAwOworICAgICAgIGZvciAoaT1zaXplb2Yob2JzKS0xOyBpPj0wOyBpLS0pCisgICAgICAgICAgaWYgKG9ic1tpXS0+UXVlcnlQcm9wKFBfVkFMVUUpPD0wKQorICAgICAgICAgICAgd3JpdGUob2JzW2ldLT5OYW1lKFdFUikrIiAiCisgICAgICAgICAgICAgICAgICsob2ItPlF1ZXJ5UHJvcChQX1BMVVJBTCkgPyAic2luZCIgOiAiaXN0IikKKyAgICAgICAgICAgICAgICAgKyIgZG9jaCBnYXIgbmljaHRzIHdlcnQuXG4iKTsKKyAgICAgICAgICBlbHNlIG9ic1tpXS0+cmVtb3ZlKCk7CisgICAgfQorCisyNi4gSnVuaSAyMDA0IEdsb2luc29uCmRpZmYgLS1naXQgYS9kb2MvcHJvcHMvUF9QT0lTT04gYi9kb2MvcHJvcHMvUF9QT0lTT04KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMmI3ZWE3YgotLS0gL2Rldi9udWxsCisrKyBiL2RvYy9wcm9wcy9QX1BPSVNPTgpAQCAtMCwwICsxLDggQEAKK05BTUU6CisgICAgUF9QT0lTT04gICAgICAgICAgICAgICAgICAgICAgInBvaXNvbiIgICAgICAgICAgICAgICAgICAgICAgCisKK0RFRklOSUVSVCBJTjoKKyAgICAvc3lzL3Byb3BlcnRpZXMuaAorCitCRVNDSFJFSUJVTkc6CisgICAgIFdpZSBzdGFyayB3aXIgdmVyZ2lmdGV0IHNpbmQgKDAtMTEpCmRpZmYgLS1naXQgYS9kb2MvcHJvcHMvUF9QT0lTT05fREVMQVkgYi9kb2MvcHJvcHMvUF9QT0lTT05fREVMQVkKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYWJhNTdjNgotLS0gL2Rldi9udWxsCisrKyBiL2RvYy9wcm9wcy9QX1BPSVNPTl9ERUxBWQpAQCAtMCwwICsxLDEzIEBACitOQU1FOgorICAgIFBfUE9JU09OX0RFTEFZICAgICAgICAgICAgICAgICAgICAgInBvaXNvbl9kZWxheSIgICAgICAgICAgICAgICAgICAgICAKKworREVGSU5JRVJUIElOOgorICAgIC9zeXMvbGl2aW5nL2xpZmUuaAorCitCRVNDSFJFSUJVTkc6CisgICAgIEFuemFobCBkZXIgaGVhcnRfYmVhdHMgbmFjaCBkZW5lbiBzaWNoIGRpZSBHaWZ0d2lya3VuZyBlcm5ldXQgCisgICAgIHplaWd0LiBKZSBrbGVpbmVyIGRlciBXZXJ0LCBkZXN0byBlbXBmaW5kbGljaGVyIGlzdCBkYXMgTGViZXdlc2VuCisgICAgIGdlZ2VuIEdpZnQuCisgICAgIEFlbmRlcnVuZ2VuIGRpZXNlciBQcm9wZXJ0eSBpbiBTcGllbGVybiBiZWR1ZXJmZW4gZGVyIEdlbmVobWlndW5nCisgICAgIGRlcyBFTXMgZnVlciBCYWxhbmNlLgorICAgICAKZGlmZiAtLWdpdCBhL2RvYy9wcm9wcy9QX1BPUlRJT05TIGIvZG9jL3Byb3BzL1BfUE9SVElPTlMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uY2IxMzRlNgotLS0gL2Rldi9udWxsCisrKyBiL2RvYy9wcm9wcy9QX1BPUlRJT05TCkBAIC0wLDAgKzEsMjEgQEAKK05BTUU6CisgICAgIFBfUE9SVElPTlMgICAgICAgICAgICAgICAgICAgICJzdGRfZm9vZF9wb3J0aW9ucyIKKworREVGSU5JRVJUIElOOgorICAgICA8c3lzL2Zvb2QuaD4KKworQkVTQ0hSRUlCVU5HOgorICAgICBJbiBkaWVzZXIgUHJvcGVydHkgc3RlaHQgZGllIEFuemFobCBkZXIgUG9ydGlvbmVuIGVpbmVyIFNwZWlzZS4KKyAgICAgRXMgZHVlcmZlbiBudXIgV2VydGUgPiAtMSBnZXNldHp0IHdlcmRlbi4gSXN0IGRpZXNlIFByb3BlcnR5IDAsCisgICAgIHdpcmQgZGllIFNwZWlzZSBhbHMgbGVlciBiencuIHZlcmJyYXVjaHQgYW5nZXNlaGVuIHVuZCBrYW5uIG5pY2h0CisgICAgIGtvbnN1bWllcnQgd2VyZGVuLgorICAgICAKK0RFRkFVTFQ6CisgICAgIEluaXRpYWwgaXN0IGRpZXNlIFByb3BlcnR5IGF1ZiAxIGdlc2V0enQsIGRpZSBTcGVpc2UgaXN0IGFsc28gbWl0CisgICAgIGVpbmVtIEJpc3Nlbi9TY2hsdWNrIHZlcmJyYXVjaHQgYnp3LiBsZWVyLgorCitTSUVIRSBBVUNIOgorICAgICAvc3RkL2Zvb2QuYywgd2l6L2Zvb2QKKworLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCitMYXN0IG1vZGlmaWVkOiBUaHUgT2N0IDI4IDEyOjE1OjAwIDIwMTAgYnkgQ2FsZHJhClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZG9jL3Byb3BzL1BfUE9TVCBiL2RvYy9wcm9wcy9QX1BPU1QKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNTNhNmY3NAotLS0gL2Rldi9udWxsCisrKyBiL2RvYy9wcm9wcy9QX1BPU1QKQEAgLTAsMCArMSw2NCBAQAorTkFNRToKKwlQX1BPU1QJCQkJIlBvc3QiCisKK0RFRklOSUVSVCBJTjoKKwkvbWFpbC9wb3N0LmgKKworQkVTQ0hSRUlCVU5HOgorCUluIGRpZXNlciBQcm9wZXJ0eSBsYWVzc3Qgc2ljaCBkaWUgVmVyc2VuZGVlcmxhdWJuaXMgdm9uIFBha2V0ZW4KKwlyZWdlbG4uIEhpZXJiZWkgZ2lidCBlcyB6dW0gZWluZW4gZGllIHBvc3RsYWdlcm5kZW4gUGFrZXRlLCBkaWUgbWFuCisJaW4gZWluZXIgUG9zdCBhYmhvbGVuIG11c3MsIHVuZCBlcyBnaWJ0IGRpZSBzb2dlbmFubnRlbgorCUt1cmllcnBha2V0ZSwgd2VsY2hlIGRpcmVrdCB1bmQgdW5taXR0ZWxiYXIgenVnZXN0ZWxsdCB3ZXJkZW4uCisJTmljaHQgaW1tZXIgaXN0IGVzIGVyd3VlbnNjaHQsIGRhc3MgUGFrZXRlIGF1cyBkZXIgRmVybmUgaW4gZWluZW4KKwlSYXVtIGdlc2NoaWNrdCB3ZXJkZW4gZHVlcmZlbi4gRGllcyBkdWVyZnRlIGluc2Jlc29uZGVyZSBpbm5lcmhhbGIKKwl2b24gR2ViaWV0ZW4gaW50ZXJlc3NhbnQgc2VpbiwgaW4gd2VsY2hlIG1hbiBudXIgYmVzY2hyYWVua3QgdmllbGUKKwlPYmpla3RlIG1pdGZ1ZWhyZW4ga2Fubi4gTWl0IGRpZXNlciBQcm9wZXJ0eSBudW4gaXN0IGVzIGxlaWNodAorCW1vZWdsaWNoLCBkaWVzIHp1IHZlcmJpZXRlbi4gTWFuIGthbm4gYXVjaCBpbiBkZW4gT2JqZWt0ZW4gc2VsYnN0CisJYW5nZWJlbiwgb2IgZGllc2UgcGVyIHBvc3RsYWdlcm5kZW0gUGFrZXQgYnp3LiBLdXJpZXJwYWtldAorCXZlcnNjaGlja3Qgd2VyZGVuIGR1ZXJmZW4uIERpZXMgZHVlcmZ0ZSB6dW0gQmVpc3BpZWwgYmVpIEtvbXBvbmVudGVuCisJZnVlciBTcGVsbHMgb2RlciBmdWVyIFVuaXF1ZS1PYmpla3RlIGludGVyZXNzYW50IHNlaW4uCisJRm9sZ2VuZGUgV2VydGUgc2luZCBtb2VnbGljaCwgd29iZWkgaW4gUmFldW1lbiB1bmQgT2JqZWt0ZW4KKwlTdGFuZGFyZG1hZXNzaWcgUFBfREVGQVVMVCBnZW51dHp0IHdpcmQ6CisKKwkgIFBQX0ZPUkJJRERFTgkJLTIJLy8gYXVmIGplZGVuIEZhbGwgdmVyYm90ZW4KKwkgIFBQX05PX0VYUFJFU1MJCS0xCS8vIEt1cmllcnBha2V0ZSB2ZXJib3RlbgorCSAgUFBfREVGQVVMVAkJIDAJLy8gRGVmYXVsdAorCSAgUFBfTk9STUFMX0FMTE9XRUQJIDEJLy8gcG9zdGxhZ2VybmRlIFBha2V0ZSBlcmxhdWJ0CisJICBQUF9BTExPV0VECQkgMgkvLyBhdWYgamVkZW4gRmFsbCBlcmxhdWJ0CisKKwlSYWV1bWUsIGRpZSB2b24gL3N0ZC9wb3N0LmMgYWJnZWxlaXRldCB3dXJkZW4sIG51dHplbiBhbHMgU3RhbmRhcmQKKwluYXR1ZXJsaWNoIFBQX0FMTE9XRUQuCisKK0JFSVNQSUVMOgorCVVtIEt1cmllcnBha2V0ZSBmdWVyIGVpbmVuIFJhdW0genUgdmVyYmlldGVuLCBudXR6dCBtYW4gZGllCisJRnVua3Rpb25hbGl0YWV0IGRpZXNlciBQcm9wZXJ0eSBmb2xnZW5kZXJtYXNzZW46CisKKwkgIGluY2x1ZGUgIi9tYWlsL3Bvc3QuaCIKKwkgIC4uLgorCSAgdm9pZCBjcmVhdGUoKQorCSAgeyA6OmNyZWF0ZSgpOworCSAgICAuLi4KKwkgICAgU2V0UHJvcChQX1BPU1QsUFBfTk9fRVhQUkVTUyk7CisJICAgIC4uLgorCSAgfQorCisJT2JqZWt0ZSBzZWxic3Qga29lbm50ZSBtYW4gZm9sZ2VuZGVybWFzc2VuIGF1cyBQYWtldGVuIHZlcmJhbm5lbiwKKwl3ZWxjaGUgdmVyc2VuZGV0IHdlcmRlbiBzb2xsZW46CisKKwkgIGluY2x1ZGUgIi9tYWlsL3Bvc3QuaCIKKwkgIC4uLgorCSAgdm9pZCBjcmVhdGUoKQorCSAgeyA6OmNyZWF0ZSgpOworCSAgICAuLi4KKwkgICAgU2V0UHJvcChQX1BPU1QsUFBfRk9SQklEREVOKTsKKwkgICAgLi4uCisJICB9CisKKwlJbiBsZXR6dGVyZW0gRmFsbCBmdW5rdGlvbmllcmVuIGltIEdlZ2Vuc2F0eiB6dW0gZXJzdGVuIEJlaXNwaWVsCisJYXVjaCBrZWluZSBwb3N0bGFnZXJuZGVuIFBha2V0ZSBtZWhyLgorCitTSUVIRSBBVUNIOgorCS9zdGQvcG9zdC5jLCAvc3RkL21haWxjYWJpbi5jLCAvcC9zZXJ2aWNlL2xvY28vc3RkL21haWxjYWJpbi5jCisKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KK0xhc3QgbW9kaWZpZWQ6IFN1biBTZXAgIDYgMTk6MzQ6MzcgMTk5OCBieSBQYXRyeW4KZGlmZiAtLWdpdCBhL2RvYy9wcm9wcy9QX1BPVElPTlJPT01TIGIvZG9jL3Byb3BzL1BfUE9USU9OUk9PTVMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNTgyMGJlMgotLS0gL2Rldi9udWxsCisrKyBiL2RvYy9wcm9wcy9QX1BPVElPTlJPT01TCkBAIC0wLDAgKzEsMTkgQEAKK05BTUU6CisgICAgUF9QT1RJT05ST09NUyAgICAgICAgICAgICAgICAgInBvdGlvbnJvb21zIiAgICAgICAgICAgICAgICAgCisKK0RFRklOSUVSVCBJTjoKKyAgICAvc3lzL3BsYXllci9wb3Rpb24uaAorCitCRVNDSFJFSUJVTkc6CisgICAgQXJyYXkgbWl0IGRlbiBOdW1tZXJuIGRlciBSYWV1bWUsIGluIGRlbmVuIGRlciBTcGllbGVyIG5vY2ggWmF1YmVyLQorICAgIHRyYWVua2UgaGF0LiBEaWUgRnJlaXNjaGFsdHVuZyBhbHMgYmVrYW5udCBnZXNjaGllaHQgaW0gT3Jha2VsLgorICAgIERpZSBadW9yZG51bmcgZGVyIFJhZXVtZSB1bmQgTnVtbWVybiBnZXNjaGllaHQgaW0gUG90aW9ubWFzdGVyLgorCisgICAgTnVyIGxlc2JhcmUgX3F1ZXJ5IC0gUHJvcGVydHkuCisKK1NJRUhFIEFVQ0g6CisgICAgU29uc3RpZ2VzOiB6YXViZXJ0cmFlbmtlLCAvc2VjdXJlL3BvdGlvbm1hc3Rlci5jLCAvcm9vbS9vcmFrZWwuYworICAgIFZlcndhbmR0OiAgRmluZFBvdGlvbigpLCBBZGRLbm93blBvdGlvbigpLCBSZW1vdmVLbm93blBvdGlvbigpLCBJbkxpc3QoKQorICAgIFByb3BzOiAgICAgUF9LTk9XTl9QT1RJT05ST09NUworCis2LkZlYiAyMDE2IEdsb2luc29uCmRpZmYgLS1naXQgYS9kb2MvcHJvcHMvUF9QUkFZX1JPT00gYi9kb2MvcHJvcHMvUF9QUkFZX1JPT00KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uM2M4ZjlmZgotLS0gL2Rldi9udWxsCisrKyBiL2RvYy9wcm9wcy9QX1BSQVlfUk9PTQpAQCAtMCwwICsxLDM2IEBACitOQU1FOgorICAgIFBfUFJBWV9ST09NICAgICAgICAgICAgICAgICAgICAgICJfbGliX3BfcHJheV9yb29tIiAgICAgICAgICAgICAgICAgIAorCitERUZJTklFUlQgSU46CisgICAgL3N5cy9wbGF5ZXIvYmFzZS5oCisKK0JFU0NIUkVJQlVORzoKKyAgICBEaWVzIGlzdCBkZXIgUmF1bSwgaW4gZGVuIGRlciBTcGllbGVyIG5hY2ggZGVtIEVuZGUgZGVyIFRvZGVzc2VxdWVuegorICAgIGJld2VndCB3aXJkLCBkLmguIGVpbiBSYXVtLCB3byBlciBiZXRlbiBrYW5uLCB1bSBlaW5lbiBuZXVlbiBLb2VycGVyIHp1CisgICAgZXJoYWx0ZW4uCisgICAgRGVyIFJhdW0gbXVzcyBhbHMgU3RyaW5nIGFuZ2VnZWJlbiB3ZXJkZW4gKGtlaW4gT2JqZWt0KS4KKworICAgIERpZXNlIFByb3BlcnR5IHdpcmQgaW0gU3BpZWxlciByZWJvb3RmZXN0IGdlc3BlaWNoZXJ0LgorCisgICAgRGVyIGpld2VpbHMgZ3VlbHRpZ2UgQmV0cmF1bSB3aXJkIGltIFNwaWVsZXIgbWl0dGVscyBRdWVyeVByYXlSb29tKCkKKyAgICBlcm1pdHRlbHQuIEplZGUgUmFzc2UgaGF0IGVpbmVuIERlZmF1bHQgZnVlciBkaWVzZSBGdW5rdGlvbi4gV2lyZCBkaWUKKyAgICBQcm9wZXJ0eSBhdWYgMCBkZ2VzZXR6dCwgd2lyZCBkaWVzZXIgRGVmYXVsdCB3aWVkZXJoZXJnZXN0ZWxsdC4KKworICAgIFZvbiBlaW5lciBVZWJlcmxhZ2VydW5nIG1pdHRlbHMgUXVlcnktIG9kZXIgZ2FyIFNldG1ldGhvZGVuIHdpcmQKKyAgICBhYmdlcmF0ZW4uIEViZW5zbyBsYXNzdCBiaXR0ZSBkaWUgTW9kdXNiaXRzIHVudmVyYWVuZGVydC4KKworICAgIFZvciBlaW5lciBBZW5kZXJ1bmcgZGllc2VyIFByb3BlcnR5IHNvbGx0ZSBnZXBydWVmdCB3ZXJkZW4sIG9iIHNpZSAwIGlzdC4KKyAgICBXZW5uIG5pY2h0LCBzb2xsdGUgdm9uIGVpbmVtIFNldHplbiBkZXIgUHJvcGVydHkgYWJnZXNlaGVuIHdlcmRlbiwgZGEgZGFubgorICAgIHNjaG9uIGplbWFuZCBhbmRlcnMgZGVuIEJldHJhdW0gZGVzIFNwaWVsZXJzIGdlYWVuZGVydCBoYXQuIChHbGVpY2hlcyBnaWx0CisgICAgZnVlcnMgTG9lc2NoZW4uKSBCaXR0ZSBuaWVtYWxzIGRlbiBJbmhhbHQgZGVyIFByb3BlcnR5IHdvYW5kZXJzIHNwZWljaGVybgorICAgIHVuZCBzcGFldGVyIHp1cnVlY2tzY2hyZWliZW4uCisKKyAgICBFaW5lIGRhdWVyaGFmdGUgQWVuZGVydW5nIGRlcyBCZXRyYXVtcyBkZXMgU3BpZWxlcnMgbXVzcyBtaXQgZGVtIEVNCisgICAgUmFzc2VuIHVuZCBkZW0gRU0gR2lsZGVuIGFiZ2VzdGltbXQgd2VyZGVuLgorCitTSUVIRSBBVUNICisgICAgUXVlcnlQcmF5Um9vbSgpLCBTZXREZWZhdWx0UHJheVJvb20oKQorCitMRVRaVEUgQWVOREVSVU5HOgorMjEuMDUuMjAxMywgWmVzc3RyYQorCmRpZmYgLS1naXQgYS9kb2MvcHJvcHMvUF9QUkVGRVJFRF9FTkVNWSBiL2RvYy9wcm9wcy9QX1BSRUZFUkVEX0VORU1ZCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmVlZDU4ZTYKLS0tIC9kZXYvbnVsbAorKysgYi9kb2MvcHJvcHMvUF9QUkVGRVJFRF9FTkVNWQpAQCAtMCwwICsxLDI2IEBACitOQU1FOgorCVBfUFJFRkVSRURfRU5FTVkJCSJwcmVmX2VuZW15IgorCitERUZJTklFUlQgSU46CisJL3N5cy9saXZpbmcvY29tYmF0LmgKKworQkVTQ0hSRUlCVU5HOgorCURpZXNlIFByb3BlcnR5IGVudGhhZWx0IGVpbiBBcnJheSBtaXQgZm9sZ2VuZGVuIEVpbnRyYWVnZW46CisJICBFaW50cmFnIDE6ICAgICAgSW50ZWdlcndlcnQgendpc2NoZW4gMCB1bmQgMTAwLCB3ZWxjaGVyIGRpZQorCSAgICAgICAgICAgICAgICAgIFdhaHJzY2hlaW5saWNoa2VpdCBkYWZ1ZXIgYW5naWJ0LCBkYXNzIGVpbgorCSAgICAgICAgICAgICAgICAgIExlYmV3ZXNlbiBiZXZvcnp1Z3QgYmVpIGVpbmVtIEFuZ3JpZmYgZ2V3YWVobHQKKwkgICAgICAgICAgICAgICAgICB3ZXJkZW4gc29sbC4KKwkgIEVpbnRyYWVnZSBhYiAyOiBMZWJld2VzZW4sIGF1cyB3ZWxjaGVuIHBlciBadWZhbGwgZWluZXMKKwkgICAgICAgICAgICAgICAgICBhdXNnZXdhZWhsdCB3aXJkLCB3ZWxjaGVzIGJlaW0gYWt0dWVsbGVuIEFuZ3JpZmYKKwkgICAgICAgICAgICAgICAgICBiZXZvcnp1Z3Qgd2lyZC4KKwlFcyBpc3QgenUgYmVhY2h0ZW4sIGRhc3Mgc29sY2ggZWluIGJldm9yenVndGVzIE9wZmVyIG5hdHVlcmxpY2ggYXVjaAorCXdpcmtsaWNoIEdlZ25lciBzZWluIG11c3MgdW5kIGF1Y2ggaW0gc2VsYmVuIFJhdW0genUgc3RlaGVuIGhhdCwgd2llCisJZGVyIEFuZ3JlaWZlci4gSXN0IGRpZXMgbmljaHQgZGVyIEZhbGwsIHdpcmQgZGFubiBkb2NoIGlyZ2VuZGVpbgorCWFuZGVyZXIgR2VnbmVyIGF1cyBkaWVzZW0gUmF1bSBnZW5vbW1lbi4KKworU0lFSEUgQVVDSDoKKwlRdWVyeVByZWZlcmVkRW5lbXkoKSwgSXNFbmVteSgpLCBTZWxlY3RFbmVteSgpLCBBdHRhY2soKSwKKwkvc3RkL2xpdmluZy9jb21iYXQuYywgL3N0ZC9saXZpbmcvbGlmZS5jCisKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KK0xhc3QgbW9kaWZpZWQ6IFdlZCBNYXkgMjYgMTY6NDQ6MzggMTk5OSBieSBQYXRyeW4KZGlmZiAtLWdpdCBhL2RvYy9wcm9wcy9QX1BSRVNBWSBiL2RvYy9wcm9wcy9QX1BSRVNBWQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5jNWVjMmQyCi0tLSAvZGV2L251bGwKKysrIGIvZG9jL3Byb3BzL1BfUFJFU0FZCkBAIC0wLDAgKzEsOSBAQAorTkFNRToKKyAgICBQX1BSRVNBWSAgICAgICAgICAgICAgICAgICAgICAicHJlc2F5IiAgICAgICAgICAgICAgICAgICAgICAKKworREVGSU5JRVJUIElOOgorICAgIC9zeXMvcGxheWVyL2Rlc2NyaXB0aW9uLmgKKworQkVTQ0hSRUlCVU5HOgorICAgICBQcmVzYXkgZGVzIFNwaWVsZXJzLiBFcnNjaGVpbnQgdm9yIGRlbSBOYW1lbiBpbiBLdXJ6L0xhbmdiZXNjaHJlaWJ1bmcuCisgICAgIEVyc2NoZWludCBhdWNoIGluIG5hbWUoKSwgYWxzbyBpbiBzYWcsIHJ1ZiwgdGVpbGUgbWl0IHVzdy4KZGlmZiAtLWdpdCBhL2RvYy9wcm9wcy9QX1BSRVZFTlRfUElMRSBiL2RvYy9wcm9wcy9QX1BSRVZFTlRfUElMRQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4zOWRkZjE0Ci0tLSAvZGV2L251bGwKKysrIGIvZG9jL3Byb3BzL1BfUFJFVkVOVF9QSUxFCkBAIC0wLDAgKzEsMjIgQEAKK05BTUU6CisgICAgUF9QUkVWRU5UX1BJTEUgICAgICAgICAgICAgICAgICAgInByZXZlbnRfcGlsZSIKKworREVGSU5JRVJUIElOOgorICAgIC9zeXMvY29udGFpbmVyL3Byb3BlcnRpZXMuaAorCitCRVNDSFJFSUJVTkc6CisgICAgV2VubiBpbiBlaW5lbSBSYXVtIGRpZXNlIFByb3BlcnR5IGdlc2V0enQgaXN0LCBlbmRldCBkYXMgVmVyd2VzZW4gZWluZXIKKyAgICBMZWljaGUgZGFtaXQsIGRhc3MgaWhyIEludmVudGFyIGluIGRlbSBSYXVtIHZlcnRlaWx0IHdpcmQuIElzdCBkaWVzZQorICAgIFByb3BlcnR5IG5pY2h0IGdlc2V0enQsIGVudHN0ZWh0IGVpbiAiSGF1ZmVuIiwgZGVyIGRhcyBJbnZlbnRhcgorICAgIGVudGhhZWx0LgorCisgICAgRGllc2UgUHJvcGVydHkgc29sbHRlIG51ciBpbiBBdXNuYWhtZWZhZWxsZW4gYmVudXR6dCB3ZXJkZW4hCisKKyAgICBEaWVzZSBQcm9wZXJ0eSBpc3Qgdm9yIGFsbGVtIGZ1ZXIgIlN0b3JlLVJvb21zIiBnZWRhY2h0LCBpbiBkZW5lbiBkaWUKKyAgICBNYWdpZXIgZGllIExlaWNoZSBlaW5lcyBTcGllbGVyIGFibGVnZW4gdW5kIGluIGRlbmVuIG5hY2hoZXIgZGllCisgICAgZ2VzYW1tZWx0ZW4gU2FjaGVuIHZvbiBlaW5lciBhbmRlcmVuIFN0ZWxsZSBhdXMgZ2VzdWNodCB3ZXJkZW4uIEluCisgICAgZGllc2VtIEZhbGwgd3VlcmRlbiBTcGllbGVyIHNvbnN0IGRpZSBNb2VnbGljaGtlaXQgaGFiZW4sIGVpbmVuIEhhdWZlbgorICAgIGFscyBHYW56ZXMgenUgYmVrb21tZW4sIGRhcyBzb2xsIGFiZXIgKk5JRSogcGFzc2llcmVuLgorCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCitMYXN0IG1vZGlmaWVkOiBUdWUgTWF5IDE1IDEzOjU2OjE4IENFU1QgMjAwNyBieSBSdW1hdGEKZGlmZiAtLWdpdCBhL2RvYy9wcm9wcy9QX1BSRV9JTkZPIGIvZG9jL3Byb3BzL1BfUFJFX0lORk8KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNDhmMWQ5ZQotLS0gL2Rldi9udWxsCisrKyBiL2RvYy9wcm9wcy9QX1BSRV9JTkZPCkBAIC0wLDAgKzEsNTUgQEAKK05BTUU6CisgICAgICAgIFBfUFJFX0lORk8gICAgICAgICAgICAgICAgICAgICAgICAibnBjX3ByZV9pbmZvIgorCitERUZJTklFUlQgSU46CisgICAgICAgIC9zeXMvbnBjLmgKKworQkVTQ0hSRUlCVU5HOgorICAgICAgICBJc3QgZGllIFByb3BlcnR5IGluIGVpbmVtIE5QQyBkZWZpbmllcnQsIHNvIHdpcmQgaWhyIEVyZ2VibmlzCisgICAgICAgIGF1c2dld2VydGV0LCBiZXZvciBlaW5lIEZyYWdlIGFuIGRhcyBJbmZvc3lzdGVtIHVlYmVyZ2ViZW4gd2lyZC4KKyAgICAgICAgCisgICAgICAgIE1vZWdsaWNoZSBXZXJ0ZToKKyAgICAgICAgLSBudW1lcmlzY2hlciBXZXJ0IHVuZ2xlaWNoIDAKKyAgICAgICAgICA9PiBkZXIgTlBDIGdpYnQgX2tlaW5lcmxlaV8gQW50d29ydCwgZGllIEZyYWdlIGZ1ZWhydCBzb3p1c2FnZW4KKyAgICAgICAgICAgICBpbnMgTGVlcmUKKworICAgICAgICAtIFN0cmluZ3dlcnQKKyAgICAgICAgICA9PiB3aXJkIGFscyBSdWVja2dhYmUgYW4gZGVuIEZyYWdlbmRlbiBhdXNnZWdlYmVuLCB1bXN0ZWhlbmRlIAorICAgICAgICAgICAgIFBlcnNvbmVuIGJla29tbWVuIGRlbiBUZXh0OgorICAgICAgICAgICAgIlhZIGlzdCBuaWNodCBnZXdpbGx0LCBTcGllbGVyIFlaIHp1IGFudHdvcnRlbiIuCisgICAgICAgICAgICBEZXIgRnJhZ2VuZGUgc2VsYnN0IGJla29tbXQgYmVpIGFuZ2VnZWJlbmVtIFN0cmluZ3dlcnQ6CisgICAgICAgICAgICAiWFkgIiArIFN0cmluZ3dlcnQuCisKKyAgICAgICAgLSBDbG9zdXJlCisgICAgICAgICAgPT4gZGllIEFudHdvcnQgYnp3LiBSZWFrdGlvbiBkZXMgTlBDcyBvYmxpZWd0IGdhbnogZGVyIAorICAgICAgICAgICAgIGFuZ2VnZWJlbmVuIENsb3N1cmUuIERpZXNlIG11c3MgZGFiZWkgZWluZW4gU3RyaW5nIG9kZXIgCisgICAgICAgICAgICAgR2FuenphaGxlbi1XZXJ0IHp1cnVlY2tnZWJlbgorCitCRUlTUElFTDoKKyAgICAgICAgRWluIE5QQyBkZXIgbWFuY2htYWwgaGVydW1yZW5udCwgdW0gei5CLiBlaW5lIEF1ZmdhYmUgenUgdmVycmljaHRlbiwKKyAgICAgICAga29lbm50ZSBzbyBsYW5nZSBDaGF0cyBhYnNjaGFsdGVuLCB6LkIuCisKKyAgICAgICAgICBTZXRQcm9wKFBfQ0hBVF9DSEFOQ0UsMCk7IC8vIE5QQyBsYXRzY2h0IGxvcworICAgICAgICAKKyAgICAgICAgVW5kIGVpbmUgV2VpbGUgc3BhZXRlcjoKKyAgICAgICAgCisgICAgICAgICAgU2V0UHJvcChQX0NIQVRfQ0hBTkNFLDUpOyAvLyBOUEMgcnVodCB3aWVkZXIsIHF1YXNzZWx0IHJ1bQorICAgICAgICAKKyAgICAgICAgV2FlaHJlbmQgZGVzIEhlcnVtbGF1ZmVucywgYWxzbyB3ZW5uIGVyIG5pY2h0IGF1dG9tYXRpc2NoIHNjaHdhdHp0LAorICAgICAgICBzb2xsIGVyIGF1Y2gga2VpbmVybGVpIEZyYWdlbiBiZWFudHdvcnRlbjoKKyAgICAgICAgICAKKyAgICAgICAgICBTZXQoUF9QUkVfSU5GTywgZnVuY3Rpb24gbWl4ZWQgKCkgeworICAgICAgICAgICAgcmV0dXJuIChRdWVyeVByb3AoUF9DSEFUX0NIQU5DRSkgPyAwIDogCisgICAgICAgICAgICAgICJoYXQgZ2VyYWRlIGtlaW5lIFplaXQgZnVlciBEaWNoLiIpOyAKKyAgICAgICAgICAgIH0sIEZfUVVFUllfTUVUSE9EKTsKKworSElOV0VJU0U6CisgICAgICAgIEJpdHRlIGJlYWNodGVuLCBkYXNzIGRlciBpbnRlcm5lIE5hbWUgZGVyIFByb3BlcnR5ICJucGNfcHJlX2luZm8iIAorICAgICAgICBpc3QgdW5kIHNvbWl0IG51ciBkYXMgVWViZXJzY2hyZWliZW4gdm9uIF9xdWVyeV9ucGNfcHJlX2luZm8oKSAKKyAgICAgICAgZnVua3Rpb25pZXJ0LiAKKworU0lFSEUgQVVDSDoKKyAgICAgICAgQWRkSW5mbygpLCAvc3RkL25wYy9pbmZvLmMKKworLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorTGFzdCBtb2RpZmllZDogMDEuMDMuMjAxNiBieSBBcmF0aG9ybgpkaWZmIC0tZ2l0IGEvZG9jL3Byb3BzL1BfUFJPTVBUIGIvZG9jL3Byb3BzL1BfUFJPTVBUCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmIzODAyMTUKLS0tIC9kZXYvbnVsbAorKysgYi9kb2MvcHJvcHMvUF9QUk9NUFQKQEAgLTAsMCArMSw4IEBACitOQU1FOgorICAgIFBfUFJPTVBUICAgICAgICAgICAgICAgICAgICAgICJwcm9tcHQiICAgICAgICAgICAgICAgICAgICAgIAorCitERUZJTklFUlQgSU46CisgICAgL3N5cy9wbGF5ZXIvYmFzZS5oCisKK0JFU0NIUkVJQlVORzoKKyAgICAgRGFzIFByb21wdCAoTnVyIGZ1ZXIgTWFnaWVyKS4KZGlmZiAtLWdpdCBhL2RvYy9wcm9wcy9QX1BVQl9OT1RfT05fTUVOVSBiL2RvYy9wcm9wcy9QX1BVQl9OT1RfT05fTUVOVQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4wNzAyOWIwCi0tLSAvZGV2L251bGwKKysrIGIvZG9jL3Byb3BzL1BfUFVCX05PVF9PTl9NRU5VCkBAIC0wLDAgKzEsMjEgQEAKK05BTUU6CisJUF9QVUJfTk9UX09OX01FTlUJCQkicHViX25vdF9vbl9tZW51IgorCitERUZJTklFUlQgSU46CisJL3N5cy9wdWIuaAorCitCRVNDSFJFSUJVTkc6CisgICAgICAgIEluIGRpZXNlIFByb3BlcnR5IGthbm4gbWFuIGVpbmVuIFN0cmluZyBzY2hyZWliZW4sIGRlciBhdXNnZWdlYmVuCisgICAgICAgIHdpcmQsIHdlbm4gZGVyIFNwaWVsZXIgZXR3YXMgYmVzdGVsbHQsIHdhcyBlcyBpbiBkZXIgS25laXBlIG5pY2h0CisgICAgICAgIGdpYnQuCisKK0JFTUVSS1VOR0VOOgorICAgICAgICBEaWUgU3RhbmRhcmRtZWxkdW5nIGlzdDoKKyAgICAgICAgIlR1dCBtaXIgbGVpZCwgZGFzIGZ1ZWhyZW4gd2lyIG5pY2h0ISBXaXIgc2luZCBlaW4gYW5zdGFlbmRpZ2VzCisgICAgICAgICBMb2thbCFcbiIKKworU0lFSEUgQVVDSDoKKwkvc3RkL3Jvb20vcHViLmMKKworLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorTGFzdCBtb2RpZmllZDogU2F0IE1hciAwNCAyMjo0NjowMCAyMDAwIGJ5IFBhcmFjZWxzdXMKZGlmZiAtLWdpdCBhL2RvYy9wcm9wcy9QX1BVQl9OT19LRUVQRVIgYi9kb2MvcHJvcHMvUF9QVUJfTk9fS0VFUEVSCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjhmNGMyNmUKLS0tIC9kZXYvbnVsbAorKysgYi9kb2MvcHJvcHMvUF9QVUJfTk9fS0VFUEVSCkBAIC0wLDAgKzEsMTkgQEAKK05BTUU6CisJUF9QVUJfTk9fS0VFUEVSCQkJCSJwdWJfbm9fa2VlcGVyIgorCitERUZJTklFUlQgSU46CisJL3N5cy9wdWIuaAorCitCRVNDSFJFSUJVTkc6CisgICAgICAgIEluIGRpZXNlIFByb3BlcnR5IGthbm4gbWFuIGVpbmVuIFN0cmluZyBzY2hyZWliZW4sIGRlciBhdXNnZWdlYmVuCisgICAgICAgIHdpcmQsIHdlbm4gZGVyIGluIFBfS0VFUEVSIGVpbmdldHJhZ2VuZSBOUEMgbmljaHQgYW53ZXNlbmQgaXN0LgorCitCRU1FUktVTkdFTjoKKyAgICAgICAgRGllIFN0YW5kYXJkbWVsZHVuZyBpc3Q6CisgICAgICAgICJFcyBpc3QgbmllbWFuZCBhbndlc2VuZCwgZGVyIERpY2ggYmVkaWVuZW4ga29lbm50ZS5cbiIKKworU0lFSEUgQVVDSDoKKwkvc3RkL3Jvb20vcHViLmMKKworLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorTGFzdCBtb2RpZmllZDogU29uIEFwciAxMSAxOToyODowMCAyMDEwIGJ5IENhbGRyYQpkaWZmIC0tZ2l0IGEvZG9jL3Byb3BzL1BfUFVCX05PX01PTkVZIGIvZG9jL3Byb3BzL1BfUFVCX05PX01PTkVZCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjlmZjI5M2EKLS0tIC9kZXYvbnVsbAorKysgYi9kb2MvcHJvcHMvUF9QVUJfTk9fTU9ORVkKQEAgLTAsMCArMSwyMSBAQAorTkFNRToKKwlQX1BVQl9OT19NT05FWQkJCQkicHViX25vX21vbmV5IgorCitERUZJTklFUlQgSU46CisJL3N5cy9wdWIuaAorCitCRVNDSFJFSUJVTkc6CisgICAgICAgIEluIGRpZXNlIFByb3BlcnR5IGthbm4gbWFuIGVpbmVuIFN0cmluZyBzY2hyZWliZW4sIGRlciBhdXNnZWdlYmVuCisgICAgICAgIHdpcmQsIHdlbm4gZGVyIFNwaWVsZXIgbmljaHQgdWViZXIgZ2VudWcgR2VsZCB2ZXJmdWVndCwgdW0gZGFzCisgICAgICAgIGdld3VlbnNjaHRlIEdlcmljaHQgenUgYmV6YWhsZW4uCisgICAgICAgIEZ1ZXIgZGVuIFByZWlzIGthbm4gbWFuIGVpbiAlZCBhbHMgUGxhdHpoYWx0ZXIgZWluZnVlZ2VuLgorCitCRU1FUktVTkdFTjoKKyAgICAgICAgRGllIFN0YW5kYXJkbWVsZHVuZyBpc3Q6CisgICAgICAgICJEYXMga29zdGV0ICVkIEdvbGRzdHVlY2tlLCB1bmQgRHUgaGFzdCBuaWNodCBzbyB2aWVsIVxuIgorCitTSUVIRSBBVUNIOgorCS9zdGQvcm9vbS9wdWIuYworCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCitMYXN0IG1vZGlmaWVkOiBTYXQgTWFyIDA0IDIyOjQ4OjAwIDIwMDAgYnkgUGFyYWNlbHN1cwpkaWZmIC0tZ2l0IGEvZG9jL3Byb3BzL1BfUFVCX1VOQVZBSUxBQkxFIGIvZG9jL3Byb3BzL1BfUFVCX1VOQVZBSUxBQkxFCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjEzYWFhNGYKLS0tIC9kZXYvbnVsbAorKysgYi9kb2MvcHJvcHMvUF9QVUJfVU5BVkFJTEFCTEUKQEAgLTAsMCArMSwyMCBAQAorTkFNRToKKwlQX1BVQl9VTkFWQUlMQUJMRQkJCSJwdWJfdW5hdmFpbGFibGUiCisKK0RFRklOSUVSVCBJTjoKKwkvc3lzL3B1Yi5oCisKK0JFU0NIUkVJQlVORzoKKyAgICAgICAgSW4gZGllc2UgUHJvcGVydHkga2FubiBtYW4gZWluZW4gU3RyaW5nIHNjaHJlaWJlbiwgZGVyIGF1c2dlZ2ViZW4KKyAgICAgICAgd2lyZCwgd2VubiBpbiBlaW5lciBLbmVpcGUgZWluIEdldHJhZW5rIG9kZXIgZWluZSBTcGVpc2UgbmljaHQgbWVocgorICAgICAgICB2b3JyYWV0aWcgaXN0LgorCitCRU1FUktVTkdFTjoKKyAgICAgICAgRGllIFN0YW5kYXJkbWVsZHVuZyBpc3Q6CisgICAgICAgICJEYXZvbiBpc3QgbGVpZGVyIG5pY2h0cyBtZWhyIGRhLlxuIgorCitTSUVIRSBBVUNIOgorCS9zdGQvcm9vbS9wdWIuYworCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCitMYXN0IG1vZGlmaWVkOiBTYXQgTWFyIDA0IDIyOjQ0OjAwIDIwMDAgYnkgUGFyYWNlbHN1cwpkaWZmIC0tZ2l0IGEvZG9jL3Byb3BzL1BfUFVSU1VFUlMgYi9kb2MvcHJvcHMvUF9QVVJTVUVSUwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5jMzViZmUyCi0tLSAvZGV2L251bGwKKysrIGIvZG9jL3Byb3BzL1BfUFVSU1VFUlMKQEAgLTAsMCArMSwxNCBAQAorTkFNRToKKyAgICBQX1BVUlNVRVJTICAgICAgICAgICAgICAgICAgICAicHVyc3VlcnMiICAgICAgICAgICAgICAgICAgICAKKworREVGSU5JRVJUIElOOgorICAgIC9zeXMvbGl2aW5nL21vdmluZy5oCisKK0JFU0NIUkVJQlVORzoKKyAgICAgRW50aGFlbHQgVmVyZm9sZ2VyIC0gbmljaHQgdm9uIEhhbmQgbWFuaXB1bGllcmVuIQorCitTSUVIRSBBVUNIOgorICAgICBBZGRQdXJzdWVyKEwpLCBSZW1vdmVQdXJzdWVyKEwpCisKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisxNi4wNi4yMDE2LCBBcmF0aG9ybgpkaWZmIC0tZ2l0IGEvZG9jL3Byb3BzL1BfUFVUX01TRyBiL2RvYy9wcm9wcy9QX1BVVF9NU0cKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNWY2Y2FlZgotLS0gL2Rldi9udWxsCisrKyBiL2RvYy9wcm9wcy9QX1BVVF9NU0cKQEAgLTAsMCArMSw2MiBAQAorUF9QVVRfTVNHCitOQU1FOgorICAgICBQX1BVVF9NU0cJCQkJInB1dF9tZXNzYWdlIgorCitERUZJTklFUlQgSU46CisgICAgIC9zeXMvbGl2aW5nL3B1dF9hbmRfZ2V0LmgKKworQkVTQ0hSRUlCVU5HOgorCisgICAgIE1pdCBQX1BVVF9NU0cga2FubiBtYW4gZGllIE1lbGR1bmcsIGRpZSBtYW4gYmVpbSBIaW5laW5zdGVja2VuIGVpbmVzCisgICAgIE9iamVrdGVzIGluIGVpbmVuIENvbnRhaW5lciBiZWtvbW10LCBtb2RpZml6aWVyZW4uCisKKyAgICAgRm9sZ2VuZGUgV2VydGUgc2luZCBtb2VnbGljaDoKKworICAgICBvIDAKKyAgICAgICBFcyB3aXJkIGVpbmUgU3RhbmRhcmRtZWxkdW5nIGF1c2dlZ2ViZW4uIERpZXMgaXN0IFZvcmVpbnN0ZWxsdW5nLgorCisgICAgIG8gTk9fUE5HX01TRwk9PSAtMQorICAgICAgIEVzIHdpcmQga2VpbmVybGVpIE1lbGR1bmcgYXVzZ2VnZWJlbgorCisgICAgIG8gRWluIEFycmF5IGF1cyBTdHJpbmdzCisgICAgICAgRGVyIGVyc3RlIFN0cmluZyB3aXJkIGFuIGRlbiBTcGllbGVyIGF1c2dlZ2ViZW4sIGRlciB6d2VpdGUKKyAgICAgICAob3B0aW9uYWxlKSBhbiBkZW4gUmF1bS4KKworICAgICAgIERpZSBTdHJpbmdzIHdlcmRlbiBkdXJjaCBkaWUgRnVua3Rpb24gcmVwbGFjZV9wZXJzb25hbCgpIGdlcGFyc3QuCisJT2JqZWt0MSAtIFNwaWVsZXIKKyAgICAgICAgT2JqZWt0MiAtIGRhcyBPYmpla3QsIGRhcyBpcmdlbmR3b2hpbiBnZXN0ZWNrdCB3aXJkCisJT2JqZWt0MyAtIGRlciBDb250YWluZXIKKworICAgICAgIFdpcmQgZGVyIHp3ZWl0ZSBTdHJpbmcgbmljaHQgYW5nZWdlYmVuLCBlcmZvbGd0IGtlaW5lIE1lbGR1bmcgYW4gZGVuCisgICAgICAgUmF1bS4KKworQkVJU1BJRUw6CisgICAgIHZvaWQgY3JlYXRlKCkgeworICAgICAgLi4uCisgICAgICBTZXRQcm9wKCBQX1NIT1JULCAiRXR3YXMgU2FuZCIgKTsKKyAgICAgIFNldFByb3AoIFBfTE9ORywgYnJlYWtfc3RyaW5nKAorICAgICAgICJFaW4gd2VuaWcgbWFnaXNjaGVyIFNhbmQuIFNlaHIgZmVpbmtydWVtZWxpZy4iLDc4ICkpOworCisgICAgICBTZXRQcm9wKCBQX05BTUUsICJTYW5kIiApOworICAgICAgQWRkSWQoICh7InNhbmQifSkgKTsKKyAgICAgIFNldFByb3AoIFBfR0VOREVSLCBNQUxFICk7CisKKyAgICAgIFNldFByb3AoIFBfUFVUX01TRywgKHsKKyAgICAgICAiRHUgbGFlc3N0IEBXRU4yIGluIEBXRU5VMyByaWVzZWxuLiIsCisgICAgICAgIkBXRVIxIGxhZXNzdCBAV0VOMiBpbiBAV0VOVTMgcmllc2Vsbi4ifSkpOworICAgICAgLi4uCisgICAgIH0KKworICAgICBEYXMgZ2FuemUgZnVlaHJ0IGJlaSBVZ2FycyAic3RlY2tlIHNhbmQgaW4gcGFrZXQiIHp1IGZvbGdlbmRlbgorICAgICBNZWxkdW5nZW46CisKKyAgICAgVWdhcjogIkR1IGxhZXNzdCBkZW4gU2FuZCBpbiBlaW4gUGFrZXQgcmllc2Vsbi4iCisgICAgIFJhdW06ICJVZ2FyIGxhZXNzdCBkZW4gU2FuZCBpbiBlaW4gUGFrZXQgcmllc2Vsbi4iCisKK1NJRUhFIEFVQ0g6CisgICAgIEFlaG5saWNoZXM6IFBfUElDS19NU0csIFBfRFJPUF9NU0csIFBfR0lWRV9NU0csIFBfV0VBUl9NU0csIFBfV0lFTERfTVNHCisgICAgIEZlaGxlcjogICAgIFBfVE9PX0hFQVZZX01TRywgUF9FTlZfVE9PX0hFQVZZX01TRywgUF9UT09fTUFOWV9NU0csCisgICAgICAgICAgICAgICAgIFBfTk9JTlNFUlRfTVNHLCBQX05PTEVBVkVfTVNHLCBQX05PRFJPUCwgUF9OT0dFVCAKKyAgICAgU29uc3RpZ2VzOiAgcmVwbGFjZV9wZXJzb25hbChFKSwgcHV0X29iaihMKSwgL3N0ZC9saXZpbmcvcHV0X2FuZF9nZXQuYworCisxNC4gTWFlcnogMjAwNCBHbG9pbnNvbgpkaWZmIC0tZ2l0IGEvZG9jL3Byb3BzL1BfUVAgYi9kb2MvcHJvcHMvUF9RUApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4wOGZiNWE0Ci0tLSAvZGV2L251bGwKKysrIGIvZG9jL3Byb3BzL1BfUVAKQEAgLTAsMCArMSwxMyBAQAorTkFNRToKKyAgICBQX1FQICAgICAgICAgICAgICAgICAgICAgICAgICAicXVlc3Rwb2ludHMiICAgICAgICAgICAgICAgICAKKworREVGSU5JRVJUIElOOgorICAgIC9zeXMvcGxheWVyL3F1ZXN0LmgKKworQkVTQ0hSRUlCVU5HOgorICAgICBBbnphaGwgZGVyIFF1ZXN0cHVua3RlLCBkaWUgZWluIFNwaWVsZXIgaGF0LgorCitISU5XRUlTOgorICAgICBOdXIgQWJmcmFnZW4gZGVyIFByb3BlcnR5IG1pdCBRdWVyeVByb3AoKSBsaWVmZXJ0IGRlbiBrb3JyZWt0ZW4gV2VydCwKKyAgICAgZGEgZWluZSBRdWVybWV0aG9kZSBmdWVyIGRpZSBBdXNsaWVmZXJ1bmcgZGVyIERhdGVuIHNvcmd0LiBRdWVyeSgpCisgICAgIG9kZXIgZ2FyIFF1ZXJ5UHJvcGVydGllcygpIGVudGhhbHRlbiB1LlUuIGVpbmVuIHZlcmFsdGV0ZW4gV2VydC4KZGlmZiAtLWdpdCBhL2RvYy9wcm9wcy9QX1FVQUxJVFkgYi9kb2MvcHJvcHMvUF9RVUFMSVRZCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjNhNDExOGMKLS0tIC9kZXYvbnVsbAorKysgYi9kb2MvcHJvcHMvUF9RVUFMSVRZCkBAIC0wLDAgKzEsMzggQEAKK1BfUVVBTElUWQorCitOQU1FOgorICAgICBQX1FVQUxJVFkgInF1YWxpdHkiCisKK0RFRklOSUVSVCBJTjoKKyAgICAgPGNvbWJhdC5oPgorCitCRVNDSFJFSUJVTkc6CisgICAgIFJ1ZXN0dW5nZW4gdW5kIFdhZmZlbiBrb2VubmVuIGltIEVpZmVyIGRlcyBHZWZlY2h0cyBiZXNjaGFlZGlndCB3ZXJkZW4uCisgICAgIFNldHp0IG1hbiBkaWUgUHJvcGVydHkgUF9RVUFMSVRZIGF1ZiBlaW5lbiBXZXJ0IG4gKG4+MCksIHNvIHdpcmQKKyAgICAgZWluZSBXYWZmZSAoUnVlc3R1bmcpIGJlaSBqZWRlbSBuLXRlbiBTY2hsYWcgKFRyZWZmZXIpIGJlc2NoYWVkaWd0LAorICAgICBkLmguIFBfV0MgKFBfQUMpIHdpcmQgdW0gMSBlcm5pZWRyaWd0IHVuZCBQX0RBTUFHRUQgdW0gMSBlcmhvZWh0LgorCitCRUlTUElFTDoKKyAgICAgaW5oZXJpdCAiL3N0ZC93ZWFwb24iOworCisgICAgIC4uLgorICAgICAjaW5jbHVkZSA8Y29tYmF0Lmg+CisKKyAgICAgY3JlYXRlKCkKKyAgICAgeworICAgICAgIC4uLgorICAgICAgIFNldFByb3AoUF9RVUFMSVRZLDIwMCk7CisgICAgICAgLi4uCisgICAgIH0KKworICAgICBEaWVzZSBXYWZmZSB3dWVyZGUgYmVpIGplZGVtIDIwMC4gU2NobGFnIGV0d2FzIGJlc2NoYWVkaWd0LgorCitCRU1FUktVTkc6CisgICAgIERlZmF1bHRtYWVzc2lnIGlzdCBQX1FVQUxJVFkgYXVmIDAgZ2VzZXR6dCwgZC5oLiBkaWUgZW50c3ByLgorICAgICBXYWZmZS9SdWVzdHVuZyB3aXJkIG5pY2h0IGJlc2NoYWVkaWd0LgorCitTSUVIRSBBVUNIOgorICAgICAvc3RkL2FybW91ci5jLCAvc3RkL3dlYXBvbi5jLCBUYWtlRmxhdygpLCBRdWVyeUZsYXcoKSwgRGFtYWdlKCkKKworLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorTGFzdCBtb2RpZmllZDogVGh1IE1heSAyMiAxMDo0MjozOSAxOTk3IGJ5IFBhcmFjZWxzdXMKZGlmZiAtLWdpdCBhL2RvYy9wcm9wcy9QX1FVRVNUUyBiL2RvYy9wcm9wcy9QX1FVRVNUUwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi40NDZlYTkwCi0tLSAvZGV2L251bGwKKysrIGIvZG9jL3Byb3BzL1BfUVVFU1RTCkBAIC0wLDAgKzEsOCBAQAorTkFNRToKKyAgICBQX1FVRVNUUyAgICAgICAgICAgICAgICAgICAgICAicXVlc3RzIiAgICAgICAgICAgICAgICAgICAgICAKKworREVGSU5JRVJUIElOOgorICAgIC9zeXMvcGxheWVyL3F1ZXN0LmgKKworQkVTQ0hSRUlCVU5HOgorICAgICBMaXN0ZSBkZXIgZ2Vsb2VzdGVuIFF1ZXN0cy4KZGlmZiAtLWdpdCBhL2RvYy9wcm9wcy9QX1FVRVNUX0lURU0gYi9kb2MvcHJvcHMvUF9RVUVTVF9JVEVNCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmU0ZWViYjUKLS0tIC9kZXYvbnVsbAorKysgYi9kb2MvcHJvcHMvUF9RVUVTVF9JVEVNCkBAIC0wLDAgKzEsNDYgQEAKK05BTUU6CisJUF9RVUVTVF9JVEVNCQkJCSJxdWVzdF9pdGVtIiAKKworREVGSU5JRVJUIElOOgorCS9zeXMvcXVlc3RfaXRlbXMuaAorCitCRVNDSFJFSUJVTkc6CisgICAgICAgIERpZXNlIFByb3BlcnR5IGdpYnQgYW4sIG9iIGVzIHNpY2ggYmVpIGRlbSBPYmpla3QgdW0gZWluIFF1ZXN0LQorCXJlbGV2YW50ZXMgT2JqZWt0IGhhbmRlbHQuCisJCitCRUlTUElFTDoKKyAgICAgICAgRWluIFNjaHdlcnQgKE5vdHVuZykga29lbm50ZSBmb2xnZW5kZXJtYXNzZW4gZGVmaW5pZXJ0IHNlaW46CisKKwljcmVhdGUoKQorCXsKKwkgIDo6Y3JlYXRlKCkgOworCSAgU2V0UHJvcChQX1NIT1JULCAiTm90dW5nIGRhcyBuZWlkbGljaGUgU2Nod2VydCIpIDsKKwkgIFNldFByb3AoUF9MT05HLCAiRGFzIGF1cyBzZWluZW4gVHJ1ZW1tZXJuIG5ldSBnZXNjaG1pZWRldGUgU2Nod2VydCAiIAorCSAgICAgICAgICAgICAgICAgICJOb3R1bmcuXG4iKTsKKworCSAgU2V0UHJvcChQX05BTUUsICJOb3R1bmciKTsKKwkgIFNldFByb3AoUF9HRU5ERVIsIE5FVVRFUik7CisJICBTZXRQcm9wKFBfQVJUSUNMRSwwKTsKKwkgIEFkZElkKCh7Im5vdHVuZyIsInNjaHdlcnQiLCJOb3R1bmciLCAiXG5Ob3R1bmcifSkpOworCQorCSAgU2V0UHJvcChQX1dFQVBPTl9UWVBFLCBXVF9TV09SRCk7CisJICBTZXRQcm9wKFBfREFNX1RZUEUsIERUX0JMVURHRU9OKTsKKworCSAgU2V0UHJvcChQX1FVRVNUX0lURU0sUUlfT0JKKTsKKwkgIC4uLgorCX0KKwkgICAgCisJQW5kZXJlIE1hZ2llciBrb2VubmVuIG51biBhdWYgTm90dW5nIFJ1ZWNrc2ljaHQgbmVobWVuLCB1bmQgenVtCisJQmVpc3BpZWwgZGF2b24gYWJzZWhlbiwgZXMgYmVpIGVpbmVtIE5QQy1TcGVsbCB6dSBkZXN0cnVjdGVuLgorCitCRU1FUktVTkdFTjoKKyAgICAgICAgQWxsZSBxdWVzdHJlbGV2YW50ZW4gT2JqZWt0ZSBzb2xsdGVuIGF1ZiBkaWVzZSBXZWlzZSBtYXJraWVydCB3ZXJkZW4uCisJCisJUXVlc3RyZWxldmFudGUgT2JqZWt0ZSBhbmRlcmVyIE1hZ2llciBzb2xsdGVuIGltbWVyIG1pdCBWb3JzaWNodCAKKwliZWhhbmRlbHQgd2VyZGVuLgorCitTSUVIRSBBVUNIOgorCSIvc3lzL3F1ZXN0X2l0ZW1zLmgiCisKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KK0xhc3QgbW9kaWZpZWQ6IFRodSBKdWwgMTAgMDc6MDg6MzIgMjAwMyBieSBWYW5pb24KZGlmZiAtLWdpdCBhL2RvYy9wcm9wcy9QX1JBQ0UgYi9kb2MvcHJvcHMvUF9SQUNFCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjdlZDc3Y2QKLS0tIC9kZXYvbnVsbAorKysgYi9kb2MvcHJvcHMvUF9SQUNFCkBAIC0wLDAgKzEsMzAgQEAKK05BTUU6CisJUF9SQUNFCQkJCSJyYWNlIgorCitERUZJTklFUlQgSU46CisJL3N5cy9saXZpbmcvZGVzY3JpcHRpb24uaAorCitCRVNDSFJFSUJVTkc6CisJRGllIFJhc3NlIGVpbmVzIExlYmV3ZXNlbnMga2FubiB1ZWJlciBkaWVzZSBQcm9wZXJ0eSBlcm1pdHRlbHQgYnp3LgorCWdlc2V0enQgd2VyZGVuLiBFcyBlbXBmaWVobHQgc2ljaCBoaWVyYmVpLCBSYXNzZW4gbnVyIGluIEZvcm0gdm9uCisJZ3Jvc3NnZXNjaHJpZWJlbmVuIFN0cmluZ3MgenUgc2V0emVuLiBMZWljaGVuIGVyaGFsdGVuIG1pdHRlbHMKKwlkaWVzZXIgUHJvcGVydHkgYXV0b21hdGlzY2ggZGllIFJhc3NlIGRlciBMZWJld2VzZW4sIGF1cyBkZW5lbiBzaWUKKwloZXJ2b3JnZWdhbmdlbiBzaW5kLgorCURlciBTaW5uIGRlcyBHYW56ZW4gbGllZ3QgZGFyaW4sIGRhcyBTcGllbCBkaWZmZXJlbnppZXJ0ZXIgenUKKwlnZXN0YWx0ZW4gdW5kIGF1ZiBSYXNzZW5zcGV6aWZpa2EgZWluenVnZWhlbi4gWnVtIEJlaXNwaWVsIGtvZW5uZW4KKwlFbGZlbiB3ZW5pZ2VyIEFsa29ob2wgdmVydHJhZ2VuIGFscyBad2VyZ2UsIHdhcyBpbiAnL3N0ZC9wdWInCisJYmVydWVja3NpY2h0aWd0IHd1cmRlLgorCitCRUlTUElFTDoKKwl2b2lkIGNyZWF0ZSgpCisJeyA6OmNyZWF0ZSgpOworCSAgLy8gRGVmaW5pdGlvbmVuCisJICBTZXRQcm9wKFBfUkFDRSwiT3JrIik7CisJICAvLyB3ZWl0ZXJlIERlZmluaXRpb25lbgorCX0KKworU0lFSEUgQVVDSDoKKwkvc3RkL25wYy5jLCAvc3RkL3B1Yi5jCisKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KK0xhc3QgbW9kaWZpZWQ6IE1vbiBTZXAgMTUgMjE6MTU6NDkgMjAwMyBieSBWYW5pb24KZGlmZiAtLWdpdCBhL2RvYy9wcm9wcy9QX1JBQ0VTVFJJTkcgYi9kb2MvcHJvcHMvUF9SQUNFU1RSSU5HCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmI3NWY0NmIKLS0tIC9kZXYvbnVsbAorKysgYi9kb2MvcHJvcHMvUF9SQUNFU1RSSU5HCkBAIC0wLDAgKzEsOSBAQAorTkFNRToKKyAgICBQX1JBQ0VTVFJJTkcgICAgICAgICAgICAgICAgICAicmFjZXN0cmluZyIgICAgICAgICAgICAgICAgICAKKworREVGSU5JRVJUIElOOgorICAgIC9zeXMvcHJvcGVydGllcy5oCisKK0JFU0NIUkVJQlVORzoKKyAgICAgR2lidCBlaW5lIGRlbSBHZXNjaGxlY2h0IGFuZ2VwYXNzdGUgQmVzY2hyZWlidW5nIGRlciBSYXNzZSB6dXJ1ZWNrCisgICAgICgiWndlcmciIG9kZXIgIlp3ZXJnaW4iIGV0Yy4pCmRpZmYgLS1naXQgYS9kb2MvcHJvcHMvUF9SQUNFX0RFU0NSSVBUSU9OIGIvZG9jL3Byb3BzL1BfUkFDRV9ERVNDUklQVElPTgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41YjJlYmZiCi0tLSAvZGV2L251bGwKKysrIGIvZG9jL3Byb3BzL1BfUkFDRV9ERVNDUklQVElPTgpAQCAtMCwwICsxLDggQEAKK05BTUU6CisgICAgUF9SQUNFX0RFU0NSSVBUSU9OICAgICAgICAgICAgInJhY2VkZXNjciIgICAgICAgICAgICAgICAgICAgCisKK0RFRklOSUVSVCBJTjoKKyAgICAvc3lzL3Byb3BlcnRpZXMuaAorCitCRVNDSFJFSUJVTkc6CisgICAgIEJlc2NocmVpYnVuZyBkZXIgVm9yL05hY2h0ZWlsZSBlaW5lciBSYXNzZS4KZGlmZiAtLWdpdCBhL2RvYy9wcm9wcy9QX1JBTkdFIGIvZG9jL3Byb3BzL1BfUkFOR0UKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMzdhOThiNwotLS0gL2Rldi9udWxsCisrKyBiL2RvYy9wcm9wcy9QX1JBTkdFCkBAIC0wLDAgKzEsMjYgQEAKK1BfUkFOR0UKKworTkFNRToKKyAgICBQX1JBTkdFICAgICAicmFuZ2UiCisKK0RFRklOSUVSVCBJTjoKKyAgICA8Y29tYmF0Lmg+CisKK0JFU0NIUkVJQlVORzoKKyAgICBMZWd0IGRpZSBSZWljaHdlaXRlIGVpbmVyIFNjaHVzc3dhZmZlIGZlc3QuIElzdCBlaW4gU2NodWV0emUgaW4gZWluZW0KKyAgICBSYXVtIG1pdCBndWVsdGlnZW0gUF9UQVJHRVRfQVJFQSAoYW5kZXJlIFJhdW0pIG9kZXIgZW52aXJvbm1lbnQoKSB1bmQKKyAgICBpc3QgZnVlciBkaWVzZW4gUmF1bSBQX1NIT09USU5HX0FSRUEgZmVzdGdlbGVndCwgZGFubiBrYW5uIGVyIG1pdCBzZWluZXIKKyAgICBTY2h1c3N3YWZmZSBpbiBkaWVzZW4gYW5kZXJlbiBSYXVtIHNjaGll32VuLCB3ZW5uIGRpZSBQX1JBTkdFIGdyb2Vzc2VyCisgICAgYWxzIFBfU0hPT1RJTkdfQVJFQSBpc3QuCisKK0JFSVNQSUVMRToKKyAgICAvLyBMYW5nYm9nZW4gbWl0IDEwMCBSZWljaHdlaXRlCisgICAgU2V0UHJvcChQX1JBTkdFLCAxMDApOworCitTSUVIRSBBVUNIOgorICAgIEdlbmVyZWxsOiAgUF9BTU1VTklUSU9OLCBQX1NIT09USU5HX1dDLCBQX1NUUkVUQ0hfVElNRQorICAgIE1ldGhvZGVuOiAgRmluZFJhbmdlZFRhcmdldChMKSwgc2hvb3RfZGFtKEwpLCBjbWRfc2hvb3QoTCkKKyAgICBHZWJpZXQ6ICAgIFBfU0hPT1RJTkdfQVJFQSwgUF9UQVJHRVRfQVJFQQorICAgIFNvbnN0aWdlczogZmVybndhZmZlbgorCisyOS5KdWwgMjAxNCBHbG9pbnNvbgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2RvYy9wcm9wcy9QX1JFQURfREVUQUlMUyBiL2RvYy9wcm9wcy9QX1JFQURfREVUQUlMUwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4wMzVhMmNjCi0tLSAvZGV2L251bGwKKysrIGIvZG9jL3Byb3BzL1BfUkVBRF9ERVRBSUxTCkBAIC0wLDAgKzEsMjEgQEAKK05BTUU6CisgICAgUF9SRUFEX0RFVEFJTFMgICAgICAgICAgICAgICAgInJlYWRfZGV0YWlscyIgICAgICAgICAgICAgICAgCisKK0RFRklOSUVSVCBJTjoKKyAgICAvc3lzL3RoaW5nL2Rlc2NyaXB0aW9uLmgKKworQkVTQ0hSRUlCVU5HOgorICAgIE1hcHBpbmcgbWl0IGRlbiBEYXRlbiBkZXIgRGV0YWlscywgZGllIGR1cmNoIExlc2VuIGVybWl0dGVsdCB3ZXJkZW4KKyAgICBrb2VubmVuLgorCitCRU1FUktVTkdFTjoKKyAgICBCaXR0ZSBudXIgbWl0IGRlbiBlbnRzcHJlY2hlbmRlbiBNZXRob2RlbiB2ZXJhZW5kZXJuIQorCitTSUVIRSBBVUNIOgorICAgIFNldHplbjogICAgQWRkUmVhZERldGFpbCgpCisgICAgTG9lc2NoZW46ICBSZW1vdmVSZWFkRGV0YWlsKCkKKyAgICBBZWhubGljaDogIEFkZERldGFpbCgpLCBQX0RFVEFJTFMKKyAgICBWZXJhbHRldDogIFBfUkVBRF9NU0cKKyAgICBTb25zdGlnZXM6IEdldERldGFpbCgpLCBicmVha19zdHJpbmcoKQorCisyNy4gSmFuIDIwMTMgR2xvaW5zb24KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9kb2MvcHJvcHMvUF9SRUFEX05FV1MgYi9kb2MvcHJvcHMvUF9SRUFEX05FV1MKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYjY0YTI1MgotLS0gL2Rldi9udWxsCisrKyBiL2RvYy9wcm9wcy9QX1JFQURfTkVXUwpAQCAtMCwwICsxLDggQEAKK05BTUU6CisgICAgUF9SRUFEX05FV1MgICAgICAgICAgICAgICAgICAgInJlYWRfbmV3cyIgICAgICAgICAgICAgICAgICAgCisKK0RFRklOSUVSVCBJTjoKKyAgICAvc3lzL3BsYXllci9iYXNlLmgKKworQkVTQ0hSRUlCVU5HOgorICAgICBXZWxjaGUgQXJ0aWtlbCBiZXJlaXRzIGdlbGVzZW4gd3VyZGUgKGZydWVoZXI6IGluIGRlciBNUEEpCmRpZmYgLS1naXQgYS9kb2MvcHJvcHMvUF9SRUFMX1JBQ0UgYi9kb2MvcHJvcHMvUF9SRUFMX1JBQ0UKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uODgyNzlhNgotLS0gL2Rldi9udWxsCisrKyBiL2RvYy9wcm9wcy9QX1JFQUxfUkFDRQpAQCAtMCwwICsxLDcyIEBACitOQU1FOgorCVBfUkVBTF9SQUNFCQkJCSJyZWFsX3JhY2UiCisKK0RFRklOSUVSVCBJTjoKKwkvc3lzL2xpdmluZy9kZXNjcmlwdGlvbi5oCisKK0JFU0NIUkVJQlVORzoKKyAgICAgICAgRGllc2UgUHJvcGVydHkgZW50aGFlbHQgZGllIFJhc3NlIGRlcyBMaXZpbmdzLiBTaWUgZGFyZiBuaWNodCBkdXJjaCAKKwlTaGFkb3dzIHVlYmVyc2NocmllYmVuIHdlcmRlbi4KKwkKKwlXaXJrbGljaCBpbnRlcmVzc2FudCBpc3Qgc2llLCB3ZW5uIGVpbiBTcGllbGVyIHNpY2ggdGFybnQuIERvcnQga2FubgorCW1hbiBtaXQgZGllc2VyIFByb3BlcnR5IHRyb3R6IFRhcm51bmcgZmVzdHN0ZWxsZW4sIHdlbGNoZSBSYXNzZSBkZXIKKwlTcGllbGVyIGhhdC4KKworCUJlaSBOUEMgZW50aGFlbHQgc2llIGRlbiBnbGVpY2hlbiBXZXJ0IHdpZSBQX1JBQ0UuIFdlbm4gUF9SRUFMX1JBQ0UKKwlhbGxlcmRpbmdzIGdlc2V0enQgd2lyZCwga2FubiBtYW4gZGFtaXQgZWluZW4gZ2V0YXJudGVuIE5QQyBzaW11LQorCWxpZXJlbiwgZGEgZGFubiBQX1JBQ0UgdW5kIFBfUkVBTF9SQUNFIHZvbmVpbmFuZGVyIGFid2VpY2hlbi4KKwkKK0JFSVNQSUVMOgorICAgICAgICBFaW4gWndlcmcgbWFnIFp3ZXJnZW5icm90LCBmdWVyIEVsZmVuIGlzdCBlcyBnaWZ0aWcuIFNlbGJzdCB3ZW5uIGRlcgorCUVsZiBzaWNoIGFscyBad2VyZyB0YXJudCwgd2lyZCBpaG0gZHVyY2ggbGVtYmFzIHNpY2hlciB1ZWJlbCB3ZXJkZW46CisKKyAgICAgICAgaW50IGZ1dHRlcihzdHJpbmcgYXJnKQorICAgICAgICB7CisgICAgICAgICAgbm90aWZ5X2ZhaWwoIldhcyB3aWxsc3QgRHUgZXNzZW4/XG4iKTsKKyAgICAgICAgICBpZighYXJnIHx8ICFpZChhcmcpKSByZXR1cm4gMDsKKworICAgICAgICAgIG5vdGlmeV9mYWlsKCJEdSBrYW5uc3QgbmljaHRzIG1laHIgZXNzZW4uXG4iKTsKKyAgICAgICAgICBpZighdGhpc19wbGF5ZXIoKS0+ZWF0X2Zvb2QoNTUpKSByZXR1cm4gMDsKKworICAgICAgICAgIHdyaXRlKCJEdSBpc3N0IGVpbiBTdHVlY2sgWndlZ2VuYnJvdC4gRHUgdmVyc3VjaHN0IGVzIHp1bWluZGVzdCFcbiIpOworICAgICAgICAgIHNheShzcHJpbnRmKCIlcyBiZWlzc3QgaW4gZWluIFN0dWVjayBad2VyZ2VuYnJvdC4gWmFobnNjaG1lcnohISFcbiIsCisgICAgICAgICAgICAgIHRoaXNfcGxheWVyKCktPk5hbWUoKSkpOworCisKKyAgICAgICAgICBzd2l0Y2goIHRoaXNfcGxheWVyKCktPlF1ZXJ5UHJvcChQX1JFQUxfUkFDRSkgKQorICAgICAgICAgIHsKKyAgICAgICAgICBjYXNlICJad2VyZyI6CisJICAgIGlmICgodGhpc19wbGF5ZXIoKS0+UXVlcnlQcm9wKFBfUkFDRSkpIT0iWndlcmciKQorCSAgICAgIHdyaXRlKCJadXIgVGFybnVuZyBzcHVja3N0IER1IGV0d2FzIHZvbiBkZW0gQnJvdCBhdXMhXG4iKTsgCisgICAgICAgICAgICB0aGlzX3BsYXllcigpLT5idWZmZXJfaHAoMTAwLDEwKTsKKyAgICAgICAgICAgIHRoaXNfcGxheWVyKCktPmJ1ZmZlcl9zcCgxMDAsMTApOworICAgICAgICAgICAgYnJlYWs7CisKKyAgICAgICAgICBjYXNlICJFbGYiOgorCSAgICB3cml0ZSgiRGFzIFp3ZXJnZW5icm90IGJyZW5udCB3aWUgRmV1ZXIgYXVmIERlaW5lciBadW5nZSEiKTsKKwkgICAgLy8gR2V0YXJudD8KKwkgICAgaWYgKCh0aGlzX3BsYXllcigpLT5RdWVyeVByb3AoUF9SQUNFKSkhPSJFbGYiKQorCSAgICAgIHdyaXRlKCIgRGVpbmUgVGFybnVuZyBudXR6dCBEaXIgZGEgd2VuaWcuXG4iCisgICAgICAgICAgICBlbHNlIHdyaXRlKCJcbiIpOworICAgICAgICAgICAgdGhpc19wbGF5ZXIoKS0+cmVzdG9yZV9zcGVsbF9wb2ludHMoLTEwMCk7CisgICAgICAgICAgICB0aGlzX3BsYXllcigpLT5kb19kYW1hZ2UoMTAwLHRoaXNfb2JqZWN0KCkpOworICAgICAgICAgICAgYnJlYWs7CisKKyAgICAgICAgICBkZWZhdWx0OgorCSAgICB3cml0ZSgiRHUgYmVrb21tc3QgbnVyIHdlbmlnIGRhdm9uIGhlcnVudGVyLi5cbiIpOworICAgICAgICAgICAgdGhpc19wbGF5ZXIoKS0+YnVmZmVyX2hwKDEwLDEpOworICAgICAgICAgICAgdGhpc19wbGF5ZXIoKS0+YnVmZmVyX3NwKDEwLDIpOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgfQorICAKKyAgICAgICAgICByZW1vdmUoKTsKKyAgCisgICAgICAgICAgcmV0dXJuIDE7CisgICAgICAgIH0KKworCQorU0lFSEUgQVVDSDoKKwkvc3RkL2xpdmluZy9kZXNjcmlwdGlvbi5jLCAvc3lzL2xpdmluZy9kZXNjcmlwdGlvbi5oLCBQX1JBQ0UKKworLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorTGFzdCBtb2RpZmllZDogTW9uIFNlcCAxNSAyMToxNTo0OSAyMDAzIGJ5IFZhbmlvbgpkaWZmIC0tZ2l0IGEvZG9jL3Byb3BzL1BfUkVGRVJFTkNFX09CSkVDVCBiL2RvYy9wcm9wcy9QX1JFRkVSRU5DRV9PQkpFQ1QKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZTJhNjQwNQotLS0gL2Rldi9udWxsCisrKyBiL2RvYy9wcm9wcy9QX1JFRkVSRU5DRV9PQkpFQ1QKQEAgLTAsMCArMSwyNyBAQAorUF9SRUZFUkVOQ0VfT0JKRUNUCitOQU1FOgorICAgICBQX1JFRkVSRU5DRV9PQkpFQ1QgICAgICAgICAgICAicmVmZXJlbmNlX29iamVjdCIKKworREVGSU5JRVJUIElOOgorICAgICAvc3lzL3BsYXllci9kZXNjcmlwdGlvbi5oCisKK0JFU0NIUkVJQlVORzoKKyAgICAgSW4gZGllc2VyIFByb3BlcnRpZSB3aXJkIGRhcyBha3R1ZWxsZSBCZXp1Z3NvYmpla3QgZWluZXMgU3BpZWxlcnMgCisgICAgIGdlc3BlaWNoZXJ0LiBVbnRlcnN1Y2h0IGRlciBTcGllbGVyIGVpbiBNb25zdGVyLCBzbyBpc3QgZGllcyBkYXMgCisgICAgIE1vbnN0ZXJvYmpla3QsIHVudGVyc3VjaHQgZGVyIFNwaWVsZXIgc2ljaCBzZWxiZXIsIGlzdCBlcyBkYXMgCisgICAgIFNwaWVsZXJvYmpla3QuCisKKyAgICAgRGVyIEluaGFsdCBkaWVzZXIgUHJvcGVydGllIGJlc3RlaHQgYWxzbyBpbW1lciBhdXMgZGVtIHp1bGV0enQgCisgICAgIGJldHJhY2h0ZXRlbiBPYmpla3QuIFNlaSBlcyBlaW4gUmF1bSwgZWluZSBSdWVzdHVuZywgZWluIE1vbnN0ZXIgb2RlciAKKyAgICAgd2FzIGF1Y2ggaW1tZXIuIEJld2VndW5nc2JlZmVobGUgdW5kIGFuZGVyZSBLb21tYW5kb3Mgd2VyZGVuIG5pY2h0IAorICAgICBiZXJ1ZWNrc2ljaHRpZ3QuCisKKyAgICAgRWluemlnIHdlbm4gZGVyIFNwaWVsZXIgJ3NjaGF1JyB0aXBwdCwgd2lyZCBkZXIgSW5oYWx0IGRlciBQcm9wZXJ0aWUgCisgICAgIGdlbG9lc2NodCB1bmQgYmV0cmFlZ3QgMC4KKworU0lFSEUgQVVDSDoKKyAgICAgU29uc3RpZ2VzOgkJUF9JTlRfTE9ORywgUF9MT05HLCBQX1NIT1JUCisJCQlpbnRfbG9uZygpLCBsb25nKCksIHNob3J0KCksIG1ha2VfaW52bGlzdCgpCisKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KK0xldHp0ZSBBZW5kZXJ1bmc6IDI5LjA2LjAyLCAyMzo1MDowMCBoLCB2b24gVGlsbHkKZGlmZiAtLWdpdCBhL2RvYy9wcm9wcy9QX1JFSkVDVCBiL2RvYy9wcm9wcy9QX1JFSkVDVApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi40YWYwN2YzCi0tLSAvZGV2L251bGwKKysrIGIvZG9jL3Byb3BzL1BfUkVKRUNUCkBAIC0wLDAgKzEsNTEgQEAKK05BTUU6CisJUF9SRUpFQ1QJCQkicmVqZWN0IgorCitERUZJTklFUlQgSU46CisJL3N5cy9wcm9wZXJ0aWVzLmgKKworQkVTQ0hSRUlCVU5HOgorCURpZXNlIFByb3BlcnR5IHplaWd0IHN0YW5kYXJkbWFlc3NpZyBudXIgaW4gTlBDcyBlaW5lIFdpcmt1bmcuIE1pdAorCWlociBsYWVzc3Qgc2ljaCBzZWhyIGVpbmZhY2ggZWluc3RlbGxlbiwgd2llIHNpY2ggZWluIHNvbGNoZXIgTlBDCisJZ2VnZW51ZWJlciBHZWdlbnN0YWVuZGVuIHZlcmhhbHRlbiBzb2xsLCB3ZWxjaGUgaWhtIHp1Z2VzdGVja3QKKwl3ZXJkZW4uIEhpZXJiZWkgYmVzdGVodCBkaWUgUHJvcGVydHkgYXVzIDIgRWxlbWVudGVuLCB3ZWxjaGUKKwliZXN0aW1tdCwgd2FzIGRlciBOUEMgbWl0IERpbmdlbiB0dWVuIHNvbGwsIGRpZSBpaG0gZ2VnZWJlbiB3ZXJkZW4uCisJU3RhbmRhcmRtYWVzc2lnIGJlaGFlbHQgZGVyIE5QQyBkaWUgU2FjaGVuIGVpbmZhY2guCisJRm9sZ2VuZGUgTW9lZ2xpY2hrZWl0ZW4gZ2lidCBlcyBhdXNzZXJkZW06CisJICAxLiBBcnJheWVsZW1lbnQ6IEFydCBkZXIgSGFuZGx1bmcuIChhdXMgIi9zeXMvbW92aW5nLmgiKQorCSAgICBSRUpFQ1RfR0lWRTogRGVyIE5QQyBnaWJ0IGRhcyBPYmpla3QgenVydWVjay4KKwkgICAgUkVKRUNUX0RST1A6IERlciBOUEMgbGFlc3N0IGRhcyBPYmpla3QgZmFsbGVuLgorCSAgICBSRUpFQ1RfS0VFUDogRGVyIE5QQyBiZWhhZWx0IGRhcyBPYmpla3QgZG9jaC4KKwkgICAgUkVKRUNUX0xJR0hUX01PRElGSUVSOiBEZXIgTlBDIG5pbW10IGtlaW5lIEdlZ2Vuc3RhZW5kZSBhbiwgZGllCisJICAgICAgc2VpbiBMaWNodGxldmVsIHZlcmFlbmRlcm4gdW5kIGRhbWl0IEVpbmZsdXNzIGF1ZiBzZWluCisJICAgICAgS2FtcGZ2ZXJoYWx0ZW4gaGFiZW4ga29lbm50ZW4uCisJICAyLiBBcnJheWVsZW1lbnQ6IE1lbGR1bmcsIG1pdCB3ZWxjaGVyIGRlciBOUEMgZGllIEhhbmRsdW5nCisJICAgICAgICAgICAgICAgICAgIGtvbW1lbnRpZXJ0LgorCSAgICBEZXIgTWVsZHVuZyB3aXJkIG5pY2h0cyBhdXRvbWF0aXNjaCB2b3Jhbmdlc3RlbGx0IHVuZCBlaW4KKwkgICAgYWJzY2hsaWVzc2VuZGVyIFplaWxlbnVtYnJ1Y2ggaXN0IGViZW5mYWxscyBzZWxic3RhZW5kaWcKKwkgICAgdm9yenVuZWhtZW4uIE1pdCBlaW5lbSBMZWVyc3RyaW5nIGlzdCBzb21pdCBhdWNoIGdhciBrZWluZQorCSAgICBSdWVja21lbGR1bmcgbW9lZ2xpY2guCisKK0JFSVNQSUVMOgorCURlciBOUEMgc2NobWVpc3N0IGFsbGUgaWhtIGdlZ2ViZW5lbiBHZWdlbnN0YWVuZGUgZWluZmFjaCB3ZWc6CisJICB2b2lkIGNyZWF0ZSgpCisJICB7IDo6Y3JlYXRlKCk7CisJICAgIC4uLgorCSAgICBTZXRQcm9wKFBfUkVKRUNULCh7UkVKRUNUX0dJVkUsCisJICAgIE5hbWUoV0VSKSsiIG11cm1lbHQ6IFdhcyBzb2xsIGljaCBkZW5uIGRhbWl0PyFcbiJ9KSk7CisJICAgIC4uLgorCSAgfQorCU1hbmNobWFsIGlzdCBkYXMgcmVjaHQgbnVldHpsaWNoLCB6LkIuIGthbm4gbWFuIHNvIGVpZ2VudGxpY2ggc2Nod2VyCisJenUgdG9ldGVuZGUgTlBDcyBkYWdlZ2VuIHNjaHVldHplbiwgZGFzcyBtYW4gaWhuZW4gYW5nZXp1ZW5kZXRlcworCUR5bmFtaXQgb2RlciBhZWhubGljaGVzIHVlYmVycmVpY2h0LgorCitCRU1FUktVTkdFTjoKKwlJbm5lcmhhbGIgdm9uIE5QQ3MgaXN0IGRpZSBGdW5rdGlvbiBnaXZlX25vdGlmeSgpIGZ1ZXIgZGllCisJYXV0b21hdGlzY2hlIEF1c3dlcnR1bmcgZGllc2VyIFByb3BlcnR5IHZlcmFudHdvcnRsaWNoOyBkYXMgc29sbHRlCisJbWFuIGluc2Jlc29uZGVyZSBiZWltIFVlYmVyc2NocmVpYmVuIGRpZXNlciBGdW5rdGlvbiBiZWFjaHRlbiEKKworU0lFSEUgQVVDSDoKKwlnaXZlX25vdGlmeSgpLCAvc3RkL25wYy9wdXRfYW5kX2dldC5jCisKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCitMYXN0IG1vZGlmaWVkOiBNb24gQXByIDIzIDE2OjU0OjA3IDIwMDEgYnkgUGF0cnluCmRpZmYgLS1naXQgYS9kb2MvcHJvcHMvUF9SRU1PVkVfRlVOQyBiL2RvYy9wcm9wcy9QX1JFTU9WRV9GVU5DCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjJkNDMxZmEKLS0tIC9kZXYvbnVsbAorKysgYi9kb2MvcHJvcHMvUF9SRU1PVkVfRlVOQwpAQCAtMCwwICsxLDI1IEBACitQX1JFTU9WRV9GVU5DCisKK05BTUU6CisgICAgIFBfUkVNT1ZFX0ZVTkMgInJlbW92ZV9mdW5jIgorCitERUZJTklFUlQgSU46CisgICAgIDxhcm1vdXIuaD4KKworQkVTQ0hSRUlCVU5HOgorICAgICBGYWxscyBlaW4gT2JqZWt0IGVpbmUgUmVtb3ZlRnVuYygpIGZ1ZXIgZGllIFJ1ZXN0dW5nIG9kZXIgS2xlaWR1bmcgCisgICAgIGRlZmluaWVydCwgc28gbXVzcyBkaWVzZXMgT2JqZWt0IGluIGRpZXNlciBQcm9wZXJ0eSBlaW5nZXRyYWdlbiBzZWluLgorCisgICAgIERpZSBBdXN3ZXJ0dW5nIGRpZXNlciBQcm9wZXJ0eSBlcmZvbGd0IGltIExhdWZlIGRlcyBEb1Vud2VhcigpIGluCisgICAgIGRlciBuaWNodC1vZWZmZW50bGljaGVuIEZ1bmt0aW9uZW4gX2NoZWNrX3Vud2Vhcl9yZXN0cmljdGlvbnMoKS4KKworQkVJU1BJRUxFOgorICAgICBTaWVoZSBkYXMgQmVpc3BpZWwgenUgUmVtb3ZlRnVuYygpCisKK1NJRUhFIEFVQ0g6CisgICAgIC9zdGQvYXJtb3VyLmMsIC9zdGQvY2xvdGhpbmcuYywgY2xvdGhpbmcsIGFybW91cnMKKyAgICAgUmVtb3ZlRnVuYygpCisKKworTGV0enRlIEFlbmRlcnVuZzoKKzE1LjAyLjIwMDksIFplc3N0cmEKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9kb2MvcHJvcHMvUF9SRU1PVkVfTVNHIGIvZG9jL3Byb3BzL1BfUkVNT1ZFX01TRwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi45ZWIxZDhkCi0tLSAvZGV2L251bGwKKysrIGIvZG9jL3Byb3BzL1BfUkVNT1ZFX01TRwpAQCAtMCwwICsxLDI4IEBACitOQU1FOgorICAgICBQX1JFTU9WRV9NU0cgICAgICAgICAgICAgICAgICAic3RkX2Zvb2RfcmVtb3ZlX21zZyIKKworREVGSU5JRVJUIElOOgorICAgICA8c3lzL2Zvb2QuaD4KKworQkVTQ0hSRUlCVU5HOgorICAgICBNZWxkdW5nLCB3ZW5uIGVpbmUgdmVyZG9yYmVuZSBTcGVpc2UgZ2VyYWRlIHZlcm5pY2h0ZXQgd2lyZC4KKyAgICAgRGllc2UgTWVsZHVuZyBlcnNjaGVpbnQgbnVyLCB3ZW5uIGluIFBfREVTVFJPWV9CQUQgZWluIHBvc2l0aXZlcgorICAgICBJbnRlZ2VyLVdlcnQgZ2VzZXR6dCBpc3QuCisgICAgIEJlZmluZGV0IHNpY2ggZGllIFNwZWlzZSBpbiBlaW5lbSBTcGllbGVyLCBnZWh0IGRpZSBNZWxkdW5nIGFuIGdlbmF1CisgICAgIGRpZXNlbiwgbGllZ3QgZGllIFNwZWlzZSBpbSBSYXVtLCBnZWh0IGRpZSBNZWxkdW5nIGFuIGFsbGUgYW53ZXNlbmRlbgorICAgICBTcGllbGVyLgorICAgICAKK0JFTUVSS1VOR0VOOgorICAgICBEaWVzZSBNZWxkdW5nIHdpcmQgdm9uIHJlcGxhY2VfcGVyc29uYWwgbWl0IGRlbiBBcmd1bWVudGVuOgorICAgICAxLiBTcGVpc2UKKyAgICAgMi4gS29uc3VtZW50CisgICAgIHZlcmFyYmVpdGV0LCBrYW5uIGFscyBlbnRzcHJlY2hlbmRlIFBsYXR6aGFsdGVyIGVudGhhbHRlbgorICAgICAKK0RFRkFVTFQ6CisgICAgICJAV0VSMSB6ZXJmYWVsbHQgenUgU3RhdWIuIgorCitTSUVIRSBBVUNIOgorICAgICBQX0RFU1RST1lfQkFELCB3aXovZm9vZCwgcmVwbGFjZV9wZXJzb25hbAorCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KK0xhc3QgbW9kaWZpZWQ6IFRodSBPY3QgMjggMTI6MTU6MDAgMjAxMCBieSBDYWxkcmEKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9kb2MvcHJvcHMvUF9SRVNFVF9MSUZFVElNRSBiL2RvYy9wcm9wcy9QX1JFU0VUX0xJRkVUSU1FCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjM3OGNmMGMKLS0tIC9kZXYvbnVsbAorKysgYi9kb2MvcHJvcHMvUF9SRVNFVF9MSUZFVElNRQpAQCAtMCwwICsxLDMxIEBACitOQU1FOg0KKyAgICAgUF9SRVNFVF9MSUZFVElNRSAgICAgICAgICAgICAgInN0ZF9mb29kX2xpZmV0aW1lX3Jlc2V0Ig0KKw0KK0RFRklOSUVSVCBJTjoNCisgICAgIC9zeXMvZm9vZC5oDQorDQorQkVTQ0hSRUlCVU5HOg0KKyAgICAgWmVpdCBpbiBSZXNldHMsIGRpZSBkaWUgU3BlaXNlIGhhbHRiYXIgaXN0Lg0KKyAgICAgSmVkZXIgZWluemVsbmUgUmVzZXQgd2lyZCBpbiBzZWluZXIgTGFlbmdlIHp1ZmFlbGxpZyBmZXN0Z2VsZWd0IHVuZA0KKyAgICAgenUgZWluZXIgR2VzYW10YW56YWhsIHZvbiBTZWt1bmRlbiB6dXNhbW1lbmdlZmFzc3QuIERpZXNlIFplaXQgaW4NCisgICAgIFNla3VuZGVuIHdpcmQgZGFubiBpbiBQX0xJRkVUSU1FIGdlc3BlaWNoZXJ0Lg0KKyAgICAgTmFjaCBkaWVzZXIgWmVpdCB3aXJkIGRpZXNlIFNwZWlzZSBzY2hsZWNodCB1bmQgamUgbmFjaCBLb25maWd1cmF0aW9uDQorICAgICBkZXIgU3BlaXNlIGV2ZW50dWVsbCB6ZXJzdG9lcnQuIFNpY2hlcmdlc3RlbGx0IHdpcmQgZGllcyBkdXJjaCBkZW4NCisgICAgIEF1ZnJ1ZiB2b24gcmVzZXQoKSBuYWNoIGRpZXNlciBBbnphaGwgIlJlc2V0cyIuDQorICAgICBNb2VjaHRlIG1hbiBlaW5lIFNwZWlzZSBoYWJlbiwgZGllIG5pZW1hbHMgdmVyZGlyYnQNCisgICAgIChnZW5laG1pZ3VuZ3NwZmxpY2h0aWchKSwgbnV0enQgbWFuIGRpZSBQcm9wZXJ0eSBQX05PX0JBRA0KKyAgICAgDQorQkVNRVJLVU5HRU46DQorICAgICBTb2JhbGQgZGVyIENvdW50ZG93biB6dW0gU2NobGVjaHR3ZXJkZW4gZGVyIFNwZWlzZSBsYWV1ZnQsIGFsc28gZWluDQorICAgICBTcGllbGVyIGRhbWl0IGluIEJlcnVlaHJ1bmcga2FtLCB6ZWlndCBTZXRQcm9wIGF1ZiBkaWVzZSBQcm9wZXJ0eSBrZWluZQ0KKyAgICAgV2lya3VuZyBtZWhyLg0KKw0KK0RFRkFVTFQ6DQorICAgICBPaG5lIFNldHplbiB2b24gUF9MSUZFVElNRSAsUF9SRVNFVF9MSUZFVElNRSB1bmQgUF9OT19CQUQgdmVyZGlyYnQgZGllDQorICAgICBTcGVpc2UgbmFjaCBlaW5lbSBSZXNldCwgYWxzbyB6d2lzY2hlbiAzMCB1bmQgNjAgTWludXRlbg0KKw0KK1NJRUhFIEFVQ0g6DQorICAgICB3aXovZm9vZCwgUF9MSUZFVElNRSwgUF9OT19CQUQNCisNCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCitMYXN0IG1vZGlmaWVkOiBUaHUgT2N0IDI4IDEyOjE1OjAwIDIwMTAgYnkgQ2FsZHJhClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZG9jL3Byb3BzL1BfUkVTSVNUQU5DRSBiL2RvYy9wcm9wcy9QX1JFU0lTVEFOQ0UKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZmYzZGU3NAotLS0gL2Rldi9udWxsCisrKyBiL2RvYy9wcm9wcy9QX1JFU0lTVEFOQ0UKQEAgLTAsMCArMSwzNyBAQAorUF9SRVNJU1RBTkNFCitOQU1FOgorICAgICBQX1JFU0lTVEFOQ0UgICAgICAgICAgICAgICAgICAicmVzaXN0YW5jZSIKKworREVGSU5JRVJUIElOOgorICAgICAvc3lzL2xpdmluZy9jb21iYXQuaAorCitXSUNIVElHOgorICAgICBESUVTRSBQUk9QRVJUWSBJU1QgVkVSQUxURVQhIEJJVFRFIFBfUkVTSVNUQU5DRV9TVFJFTkdUSFMKKyAgICAgVkVSV0VOREVOISBBVUNIIEZVTktUSU9OSUVSVCBTZXQoKSBOSUNIVCBXSUUgRVMgU09MTFRFLgorCitCRVNDSFJFSUJVTkc6CisgICAgIEhpZXJtaXQga29lbm5lbiBkaWUgUmVzaXN0ZW56ZW4gZWluZXMgTGViZXdlc2VucyBzZWhyIGVpbmZhY2ggZ2VzZXR6dAorICAgICB3ZXJkZW4uIEVzIGthbm4gZWluIEFycmF5IG1pdCBTY2hhZGVuc2FydGVuIGdlc2V0enQgd2VyZGVuLCBqZWRlcgorICAgICBFaW50cmFnIGVpbmVzIFNjaGFkZW5zIHZlcmRvcHBlbHQgZGllIFJlc2lzdGVueiBnZWdlbiBkaWVzZW4uCisKK0JFTUVSS1VOR0VOOgorICAgICAtIFBfUkVTSVNUQU5DRV9TVFJFTkdUSFMgc3BpZWdlbHQgZGllc2UgRWludHJhZWdlIGhpZXIgd2llZGVyCisgICAgIC0gdW0gZ2VuYXVlcmUgV2VydGUgYW56dWdlYmVuIGVpbmVuIEFkZFJlc2lzdGFuY2VNb2RpZmllcigpIG9kZXIKKyAgICAgICBQX1JFU0lTVEFOQ0VfU1RSRU5HVEhTIGJlbnV0emVuLgorICAgICAtIFBfUkVTSVNUQU5DRSBrYW5uIHVuZCB3aXJkIG5pY2h0IGF1cyBQX1JFU0lTVEFOQ0VfU1RSRU5HVEhTCisgICAgICAgdXBnZWRhdGV0CisKK0JFSVNQSUVMRToKKyAgICAgLy8gZWluIE5QQyBtaXQgaGFsYmllcnRlciBGZXVlcmVtcGZpbmRsaWNoa2VpdCB1bmQKKyAgICAgLy8gZ2V2aWVydGVsdGVyIFdpbmRlbXBmaW5kbGljaGtlaXQKKyAgICAgU2V0UHJvcChQX1JFU0lTVEFOQ0UsICh7RFRfRklSRSwgRFRfQUlSLCBEVF9BSVJ9KSk7CisKK1NJRUhFIEFVQ0g6CisgICAgIHNpbXBsZSBSZXNpc3Rlbno6CVBfUkVTSVNUQU5DRQorICAgICBNb2RpZmlrYXRvcmVuOglBZGRSZXNpc3RhbmNlTW9kaWZpZXIsIFJlbW92ZVJlc2lzdGFuY2VNb2RpZmllcigpLAorCQkJUF9SRVNJU1RBTkNFX01PRElGSUVSCisgICAgIEhhdXB0bWFwcGluZzoJUF9SRVNJU1RBTkNFX1NUUkVOR1RIUworICAgICBCZXJlY2hudW5nOglDaGVja1Jlc2lzdGFuY2UoKSwgVXBkYXRlUmVzaXN0YW5jZVN0cmVuZ3RocygpCisgICAgIGFuZGVyZXM6CQliYWxhbmNlLCAvc3RkL2FybW91ci9jb21iYXQuYywgL3N0ZC9saXZpbmcvY29tYmF0LmMKKworMS5EZXogMjAwNCwgR2xvaW5zb24KZGlmZiAtLWdpdCBhL2RvYy9wcm9wcy9QX1JFU0lTVEFOQ0VfTU9ESUZJRVIgYi9kb2MvcHJvcHMvUF9SRVNJU1RBTkNFX01PRElGSUVSCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjBhMDUzOGUKLS0tIC9kZXYvbnVsbAorKysgYi9kb2MvcHJvcHMvUF9SRVNJU1RBTkNFX01PRElGSUVSCkBAIC0wLDAgKzEsMjYgQEAKK05BTUU6CisgICAgIFBfUkVTSVNUQU5DRV9NT0RJRklFUiAgICAgICAgICAgICAicnN0cjptb2QiCisKK0RFRklOSUVSVCBJTjoKKyAgICAgL3N5cy9saXZpbmcvY29tYmF0LmgKKworQkVTQ0hSRUlCVU5HOgorICAgICBIaWVyIHdlcmRlbiBkaWUgUmVzaXN0ZW56bW9kaWZpa2F0b3JlbiBpbiBlaW5lbSBNYXBwaW5nIGFiZ2VzcGVpY2hlcnQuCisKKyAgICAgRm9ybWF0OgorCisgICAgIChbIm1lIjo8QXVmYWRkaXRpb24gYWxsZXIgUmVzaXN0ZW56L0VtcGZpbmRsaWNoa2VpdHNtb2RpZmlrYXRpb25lbj47MCwKKyAgICAgICAiPE9iamVrdG5hbWU+IzxTY2hsdWVzc2VsPiI6PFJlc2lzdGVuem1hcHBpbmc+OzxPYmpla3JlZmVyZW56PiwKKyAgICAgICAuLi5dKQorCitCRU1FUktVTkdFTjoKKyAgICAgTnVyIHVlYmVyIEFkZFJlc2lzdGFuY2VNb2RpZmllcigpLCBSZW1vdmVSZXNpc3RhbmNlTW9kaWZpZXIoKSBhZW5kZXJuIQorCitTSUVIRSBBVUNIOgorICAgICBNb2RpZmlrYXRvcmVuOglBZGRSZXNpc3RhbmNlTW9kaWZpZXIsIFJlbW92ZVJlc2lzdGFuY2VNb2RpZmllcigpCisgICAgIHNpbXBsZSBSZXNpc3Rlbno6CVBfUkVTSVNUQU5DRSwgUF9WVUxORVJBQklMSVRZCisgICAgIEhhdXB0bWFwcGluZzoJUF9SRVNJU1RBTkNFX1NUUkVOR1RIUworICAgICBCZXJlY2hudW5nOglDaGVja1Jlc2lzdGFuY2UoKSwgVXBkYXRlUmVzaXN0YW5jZVN0cmVuZ3RocygpCisgICAgIGFuZGVyZXM6CQliYWxhbmNlLCAvc3RkL2FybW91ci9jb21iYXQuYywgL3N0ZC9saXZpbmcvY29tYmF0LmMKKworMjkuQXByIDIwMDIsIEdsb2luc29uQE1HCmRpZmYgLS1naXQgYS9kb2MvcHJvcHMvUF9SRVNJU1RBTkNFX1NUUkVOR1RIUyBiL2RvYy9wcm9wcy9QX1JFU0lTVEFOQ0VfU1RSRU5HVEhTCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmVkMjRkMmQKLS0tIC9kZXYvbnVsbAorKysgYi9kb2MvcHJvcHMvUF9SRVNJU1RBTkNFX1NUUkVOR1RIUwpAQCAtMCwwICsxLDkyIEBACitOQU1FOgorICAgICBQX1JFU0lTVEFOQ0VfU1RSRU5HVEhTICAgICAicmVzaXN0YW5jZV9zdHJlbmd0aHMiCisKK0RFRklOSUVSVCBJTjoKKyAgICAgL3N5cy9saXZpbmcvY29tYmF0LmgKKworQkVTQ0hSRUlCVU5HOgorICAgICBMZWJld2VzZW46CisKKyAgICAgTWFwcGluZyBtaXQgU2NoYWRlbnNhcnRlbiwgZ2VnZW4gZGllIGRhcyBMZWJld2VzZW4gcmVzaXN0ZW50IG9kZXIKKyAgICAgYW5mYWVsbGlnIGlzdC4gRHVyY2ggZWluZSBfcXVlcnlfbWV0aG9kIHdlcmRlbiBhbGxlIGV4aXN0aWVyZW5kZW4KKyAgICAgUmVzaXN0ZW56ZW4gaGllciB6dXNhbW1lbmdlZmFzc3QuCisKKyAgICAgRGllIFN0YWVya2UgZGVyIFJlc2lzdGVueiBvZGVyIEFuZmFlbGxpZ2tlaXQgd2lyZCBudW1lcmlzY2ggYXVzLQorICAgICBnZWRydWVja3Q6CisgICAgIC0gUmVzaXN0ZW56ZW4gZ2VoZW4gYmlzIHZvbiAwIGJpcyAtMS4wIChhYnNvbHV0ZSBSZXNpc3RlbnopCisgICAgICAgLSAtMC41ID09IGhhbGJpZXJ0ZXIgU2NoYWRlbiwgLTAuNzUgPT0gZ2V2aWVydGVsdGVyIFNjaGFkZW4KKyAgICAgICAtPiBpbiAlIGRlcyAiYXVmZ2VoYWx0ZW5lbiIgU2NoYWRlbnMgaW50ZXJwcmV0aWVyYmFyCisgICAgIC0gRW1wZmluZGxpY2hrZWl0ZW4gZ2VoZW4gdm9uIDAgYmlzIE1BWF9JTlQKKyAgICAgICAtICAxLjAgPT0gdmVyZG9wcGVsdGVyIFNjaGFkZW4sIDMuMCA9PSB2ZXJ2aWVyZmFjaHRlciBTY2hhZGVuCisgICAgICAgLT4gYWxzIEZha3RvciAoeCsxLjApIGludGVycHJldGllcmJhcgorCisgICAgIFJ1ZXN0dW5nZW46CisKKyAgICAgTWFwcGluZyBtaXQgUHJvemVudHdlcnRlbiBkZXIgTWF4aW1hbHdlcnRlIGZ1ZXIgUnVlc3R1bmdlbiBkZXMKKyAgICAgZW50c3ByZWNoZW5kZW4gVHlwcy4gRGFiZWkgc2luZCBwb3NpdGl2ZSBXZXJ0ZSBSZXNpc3RlbnplbiB1bmQKKyAgICAgbmVnYXRpdmUgRW1wZmluZGxpY2hrZWl0ZW4uIERhYmVpIGR1ZXJmZW4gZGllIFByb3plbnR3ZXJ0ZSBudXIKKyAgICAgaW0gQmVyZWljaCB2b24gKzEwMCBiaXMgLTgwMCAoLTEwMDAgPyEpIGxpZWdlbi4KKworICAgICBCZWkgUnVlc3R1bmdlbiBpc3QgZXMgZGFtaXQgdW5ub2V0aWcsIFJlc2lzdGVuemVuIG1pdHRlbHMKKyAgICAgQWRkUmVzaXN0YW5jZU1vZGlmaWVyKCkgaW0gVHJhZWdlciB6dSBzZXR6ZW4sIGRhIGRpZXMgYmVyZWl0cworICAgICBpbiAvc3RkL2FybW91ciBhdXRvbWF0aXNjaCBnZW1hY2h0IHdpcmQuIERlciBTY2hsdWVzc2VsIGZ1ZXIKKyAgICAgZGVuIEVpbnRyYWcgaXN0IGRhYmVpIFBfQVJNT1VSX1RZUEUuCisKKyAgICAgRGllIE1heGltYWx3ZXJ0ZSBzaW5kIGRlcnplaXQ6CisgICAgICBBVF9DTE9BSywgQVRfUklORywgQVRfQU1VTEVUOiBtYXggMTAlIFJlc2lzdGVuegorICAgICAgQVRfU0hJRUxELCBBVF9BUk1PVVI6ICBtYXggMTUlIFJlc2lzdGVuegorICAgICAgYWxsZSBhbmRlcmVuOiAgIG1heCA1JSBSZXNpc3RlbnoKKworQkVNRVJLVU5HRU46CisgICAgIFJ1ZXN0dW5nZW46CisgICAgICogZGllIFByb3BlcnR5IG11c3MgX25hY2hfIFBfQVJNT1VSX1RZUEUgZ2VzZXR6dCB3ZXJkZW4gKF9zZXQtTWV0aG9kKQorCisgICAgIExlYmV3ZXNlbjoKKyAgICAgKiAtMS4wIGJlZGV1dGV0IGJlcmVpdHMgYWJzb2x1dGUgUmVzaXN0ZW56LCBiZWkga2xlaW5lcmVuIFdlcnRlbiB3ZXJkZW4KKyAgICAgICBkaWUgYW5kZXJlbiBTY2hhZGVuc2FudGVpbGUgaW0gS2FtcGYgdS5VLiBuaWNodCBtZWhyIHdpZSBnZXd1ZW5zY2h0CisgICAgICAgYmlsYW56aWVydC4gQml0dGUgZGFoZXIgZHJhdWYgdmVyemljaHRlbi4gOy0pCisgICAgICogQWVuZGVydW5nZW4gYW4gUF9SRVNJU1RBTkNFIHVuZCBQX1ZVTE5FUkFCSUxJVFkgd2VyZGVuIGRpcmVrdCBpbiAKKyAgICAgICBQX1JFU0lTVEFOQ0VfU1RSRU5HVEhTIGdlc3BlaWNoZXJ0OgorICAgICAgIC0+IGRhaGVyIG5pZW1hbHMgaW0gTmFjaGhpbmVpbiBiZWkgZnJlbWRlbiBOUENzIFBfUkVTSVNUQU5DRV9TVFJFTkdUSFMKKyAgICAgICAgICBtYW5pcHVsaWVyZW4sIGRhZnVlciBnaWJ0IGVzIEFkZFJlc2lzdGFuY2VNb2RpZmllcgorICAgICAqIFF1ZXJ5UHJvcChQX1JFU0lTVEFOQ0VfU1RSRU5HVEhTKSBlbnRoYWVsdCBkaWUgZ2VzYW10ZW4gUmVzaXN0ZW56ZW4KKyAgICAgICBQX1JFU0lTVEFOQ0UsIFBfVlVMTkVSQUJJTElUWSwgUF9SRVNJU1RBTkNFX01PRElGSUVSIChfcXVlcnktTWV0aG9kKQorCisgICAgIERpZSBXZXJ0ZSBpbiBQX1JFU0lTVEFOQ0VfU1RSRU5HVEhTIHNvbGx0ZW4gbnVyIGluIEF1c25haG1lZmFlbGxlbiBvZGVyCisgICAgIGd1dCBiZWdydWVuZGV0IGRlbiBIb2VjaHN0d2VydCBoYWJlbi4gRWluIEVpc3dlc2VuIGthbm4gendhciBzZWhyCisgICAgIHJlc2lzdGVudCBnZWdlbiBLYWVsdGVzY2hhZGVuIHNlaW4sIHNvbGx0ZSBhYmVyIHp1IGdsZWljaGVtIFRlaWwgYXVjaAorICAgICBhbmZhZWxsaWcgYXVmIEZldWVyc2NoYWRlbiBzZWluLgorCisgICAgIEF1ZiBkaWVzZXIgUHJvcGVydHkgbGllZ3QgZWluZSBRdWVyeW1ldGhvZGUsIHdlbGNoZSBlaW5lIEtvcGllIGRlcgorICAgICBEYXRlbiB6dXJ1ZWNrbGllZmVydC4KKworQkVJU1BJRUxFOgorICAgICAvLyBlaW4gRWlzdHJvbGwKKyAgICAgU2V0UHJvcChQX1JFU0lTVEFOQ0VfU1RSRU5HVEhTLChbRFRfRklSRTowLjUsRFRfQ09MRDotMC41LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBEVF9NQUdJQzowLjFdKSk7CisKKyAgICAgRmV1ZXJhbmdyaWZmZSB3ZXJkZW4gbWl0IDEuNSBtdWx0aXBsaXppZXJ0LCBtYWdpc2NoZSBtaXQgMS4xIHVuZAorICAgICBkZXIgU2NoYWRlbnN3ZXJ0IHZvbiBLYWVsdGVhbmdyaWZmZW4gd2lyZCBoYWxiaWVydC4gWnVtIEJlaXNwaWVsCisgICAgIHd1ZXJkZQorICAgICBEZWZlbmQoMTAwLCAoe0RUX0ZJUkUsRFRfTUFHSUN9KSwgLi4uKQorICAgICBlaW5lbiBTY2hhZGVuIHZvbiAxMzAgc3RhdHQgZGVuIG5vcm1hbGVuIDEwMCB2ZXJ1cnNhY2hlbi4KKworCisgICAgIC8vIGVpbmUgRWlzcnVlc3R1bmcKKyAgICAgU2V0UHJvcChQX1JFU0lTVEFOQ0VfU1RSRU5HVEhTLCAoW0RUX0NPTEQ6NTAsIERUX0ZJUkU6LTEwMF0pKTsKKworICAgICBEaWVzZXMgS2V0dGVuaGVtZCBzY2h1ZXR6dCBudW4gbWl0IDUwJSBkZXMgTWF4aW1hbHdlcnRlcyBnZWdlbgorICAgICBLYWVsdGUgKGFsc28gMC41KjE1JT03LDUlIFJlc2lzdGVueikgdW5kIG1hY2h0IG1pdCBkZW0gTWF4aW1hbC0KKyAgICAgd2VydCBhbmZhZWxsaWcgZ2VnZW4gRmV1ZXIgKDEqMTUlPTE1JSBFbXBmaW5kbGljaGtlaXQpLgorCisgICAgICEgZGVyIENvZGUgc3ByaWNodCB6dXNhZXR6bGljaCB2b24KKyAgICAgICBFbXBmaW5kbGljaGtlaXQ9KEVtcGZpbmRsaWNoa2VpdC80KSo1IC0+IDE1LzQqNT0xOC43NSUgIQorCitTSUVIRSBBVUNIOgorICAgICBzaW1wbGUgUmVzaXN0ZW56OiBQX1JFU0lTVEFOQ0UsIFBfVlVMTkVSQUJJTElUWQorICAgICBNb2RpZmlrYXRvcmVuOiBBZGRSZXNpc3RhbmNlTW9kaWZpZXIsIFJlbW92ZVJlc2lzdGFuY2VNb2RpZmllcigpLAorICAgICBQX1JFU0lTVEFOQ0VfTU9ESUZJRVIKKyAgICAgQmVyZWNobnVuZzogQ2hlY2tSZXNpc3RhbmNlKCksIFVwZGF0ZVJlc2lzdGFuY2VTdHJlbmd0aHMoKQorICAgICBhbmRlcmVzOiAgYmFsYW5jZSwgL3N0ZC9hcm1vdXIvY29tYmF0LmMsIC9zdGQvbGl2aW5nL2NvbWJhdC5jCisKKzYuRmViIDIwMTYgR2xvaW5zb24KZGlmZiAtLWdpdCBhL2RvYy9wcm9wcy9QX1JFU1RSSUNUSU9OUyBiL2RvYy9wcm9wcy9QX1JFU1RSSUNUSU9OUwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4zNDg5MGZmCi0tLSAvZGV2L251bGwKKysrIGIvZG9jL3Byb3BzL1BfUkVTVFJJQ1RJT05TCkBAIC0wLDAgKzEsMTQwIEBACitOQU1FOgorICAgIFBfUkVTVFJJQ1RJT05TICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAicmVzdHJpY3Rpb25zIgorCitERUZJTklFUlQgSU46CisgICAgL3N5cy9jb21iYXQuaAorICAgIChEaWUgU1JfKi1QYXJhbWV0ZXIgc2luZCBpbiAvc3lzL25ld19za2lsbHMuaCBkZWZpbmllcnQuKQorCitCRVNDSFJFSUJVTkc6CisgICAgRW50aGFlbHQgZWluIG1hcHBpbmcgbWl0IGRlbiB6dSBwcnVlZmVuZGVuIEVpbnNjaHJhZW5rdW5nZW4uCisKKyAgICBJbiBkaWVzZXIgUHJvcGVydHkgbGFzc2VuIHNpY2ggUmVzdHJpa3Rpb25lbiBzZXR6ZW4sIGRpZSB2b3IgZGVtCisgICAgWnVlY2tlbiBlaW5lciBXYWZmZSAvIEFuemllaGVuIGVpbmVyIFJ1ZXN0dW5nIG9kZXIgS2xlaWR1bmcgZ2VwcnVlZnQKKyAgICB3ZXJkZW4gdW5kIGRpZXMgZ2VnZWJlbmZhbGxzIHZlcmhpbmRlcm4sIG9obmUgZ2xlaWNoIGF1ZiBlaW5lIGV2dGwuCisgICAgdm9yaGFuZGVuZSBXaWVsZEZ1bmMgLyBXZWFyRnVuYyB6dXp1Z3JlaWZlbi4KKworICAgIERpZSBBdXN3ZXJ0dW5nIGVyZm9sZ3QgdWViZXIgZGVuIEF1ZnJ1ZiB2b24gY2hlY2tfcmVzdHJpY3Rpb25zKCkKKyAgICBpbiAvc3RkL3Jlc3RyaWN0aW9uX2NoZWNrZXIuYworCisgICAgRm9sZ2VuZGUgS2V5cyB3ZXJkZW4gaW4gZGVtIE1hcHBpbmcgYXVzZ2V3ZXJ0ZXQ6CisKKyAgICBQX0xFVkVMCisgICAgICBNaW5kZXN0c3R1ZmUsIGRpZSBkYXMgTGViZXdlc2VuIGJlc2l0emVuIG11c3MsIHVtIGRpZSBBa3Rpb24KKyAgICAgIGF1c3p1ZnVlaHJlbi4KKyAgICBQX0dVSUxEX0xFVkVMCisgICAgICBHaWxkZW5sZXZlbCwgZGFzIGRhcyBMZWJld2VzZW4gbWluZGVzdGVucyBlcnJlaWNodCBoYWJlbiBtdXNzLCB1bSBkaWUKKyAgICAgIEFrdGlvbiBhdXN6dWZ1ZWhyZW4uCisgICAgU1JfU0VFUgorICAgICAgSXN0IGdlc2V0enQsIHdlbm4gZGFzIExlYmV3ZXNlbiBTZWhlciBzZWluIG11c3MuCisgICAgICBBdXN3ZXJ0dW5nIG51ciBmdWVyIEludGVyYWN0aXZlcywgTlNDIGlnbm9yaWVyZW4gZGFzIEZsYWcuCisgICAgUF9YUAorICAgICAgTWluZGVzdG1lbmdlIGFuIEVyZmFocnVuZ3NwdW5rdGVuLCBkaWUgZWluIExlYmV3ZXNlbiBiZXNpdHplbiBtdXNzLAorICAgICAgdW0gZGllIEFrdGlvbiBhdXN6dWZ1ZWhyZW4uCisgICAgUF9RUAorICAgICAgTWluZGVzdG1lbmdlIGFuIEFiZW50ZXVlcnB1bmt0ZW4sIGRpZSBkYXMgTGViZXdlc2VuIGhhYmVuIG11c3MuCisgICAgUF9BTENPSE9MCisgICAgICBNZW5nZSBhbiBBbGtvaG9sLCB1bnRlciBkZXIgZGVyIEFsa29ob2xzcGllZ2VsIGRlcyBMZWJld2VzZW4gbGllZ2VuCisgICAgICBtdXNzLCB1bSBkaWUgQWt0aW9uIG5vY2ggYXVzZnVlaHJlbiB6dSBrb2VubmVuLgorICAgIFBfRFJJTksKKyAgICAgIE1lbmdlIGFuIEZsdWVzc2lna2VpdCwgdW50ZXIgZGVyIGRlciBGbHVlc3NpZ2tlaXRzc3BpZWdlbCBkZXMKKyAgICAgIExlYmV3ZXNlbiBsaWVnZW4gbXVzcywgdW0gZGllIEFrdGlvbiBub2NoIGF1c2Z1ZWhyZW4genUga29lbm5lbi4KKyAgICBQX0ZPT0QKKyAgICAgIEJlaW5oYWx0ZXQgZGllIE1lbmdlIGFuIE5haHJ1bmcsIHVudGVyIGRlciBkZXIgTmFocnVuZ3NzcGllZ2VsIGRlcworICAgICAgU3BpZWxlcnMgbGllZ2VuIG11c3MsIHVtIGRpZSBBa3Rpb24gbm9jaCBhdXNmdWVocmVuIHp1IGtvZW5uZW4uCisgICAgUF9ERUFGCisgICAgICBJc3QgZ2VzZXR6dCwgZmFsbHMgZGVyIFNwaWVsZXIgbmljaHQgdGF1YiBzZWluIGRhcmYuCisgICAgUF9GUk9HCisgICAgICBJc3QgZ2VzZXR6dCwgZmFsbHMgZGVyIFNwaWVsZXIga2VpbiBGcm9zY2ggc2VpbiBkYXJmLgorICAgIFBfQkxJTkQKKyAgICAgIElzdCBnZXNldHp0LCBmYWxscyBkZXIgU3BpZWxlciBuaWNodCBibGluZCBzZWluIGRhcmYuCisgICAgICBBY2h0dW5nOiBkYXMgaXN0IG5pY2h0IGdsZWljaGJlZGV1dGVuZCBtaXQgZGVtIFVtc3RhbmQsIGRhc3MgZXIgZXZ0bC4KKyAgICAgIG5pY2h0cyBtZWhyIHNlaGVuIGthbm4uIEF1Y2ggYW5kZXJlIEdydWVuZGUgKHp1bSBCZWlzcGllbCBEdW5rZWxoZWl0KQorICAgICAga29lbm5lbiBiZXdpcmtlbiwgZGFzcyBlaW4gU3BpZWxlciBuaWNodHMgbWVociBzaWVodC4KKyAgICBBX0lOVCwgQV9ERVgsIEFfQ09OLCBBX1NUUgorICAgICAgSmV3ZWlsaWdlIE1pbmRlc3Rob2VoZSBlaW5lcyBBdHRyaWJ1dCwgdW0gZWluZSBBa3Rpb24gYXVzZnVlaHJlbiB6dQorICAgICAga29lbm5lbi4KKyAgICBTUl9CQUQsIFNSX0dPT0QKKyAgICAgIEdpYnQgYW4sIHdpZSBbbWluaW1hbF0gYm9lc2UgYnp3LiB3aWUgW21heGltYWxdIGd1dCBlaW4gQ2hhcmFrdGVyIHNlaW4KKyAgICAgIGRhcmYsIHVtIGVpbmUgQWt0aW9uIGF1c2Z1ZWhyZW4genUga29lbm5lbi4KKyAgICBTUl9NSU5fU0laRSwgU1JfTUFYX1NJWkUKKyAgICAgIEdpYnQgZGllIG1pbmltYWxlLCBiencuIGRpZSBtYXhpbWFsZSBHcm9lc3NlIGFuLCBkaWUgZWluIENoYXJha3RlcgorICAgICAgbWF4aW1hbCBoYWJlbiBkYXJmLCB1bSBlaW5lIEFrdGlvbiBhdXNmdWVocmVuIHp1IGtvZW5uZW4uCisgICAgU1JfRlJFRV9IQU5EUworICAgICAgR2lidCBhbiwgd2lldmllbGUgZnJlaWUgSGFlbmRlIGVpbiBDaGFyYWt0ZXIgZnVlciBkaWVzZSBBa3Rpb24KKyAgICAgIGJlc2l0emVuIG11c3MuCisgICAgU1JfRVhDTFVERV9SQUNFCisgICAgICBNaXRnbGllZGVyIGFsbGVyIGluIGRpZXNlciBMaXN0ZSBhdWZnZWZ1ZWhydGVuIFJhc3NlbiBrb2VubmVuCisgICAgICBkaWVzZSBBa3Rpb24gbmljaHQgYXVzZnVlaHJlbi4KKyAgICBTUl9JTkNMVURFX1JBQ0UKKyAgICAgIE1pdGdsaWVkZXIgYWxsZXIgTklDSFQgaW4gZGllc2VyIExpc3RlIGF1ZmdlZnVlaHJ0ZW4gUmFzc2VuIGtvZW5uZW4KKyAgICAgIGRpZXNlIEFrdGlvbiBuaWNodCBhdXNmdWVocmVuLgorICAgIFNNX1JBQ0UKKyAgICAgIEhpZXIga2FubiBwcm8gUmFzc2UgZWluIE1hcHBpbmcgbWl0IGJlc29uZGVyZW4gKG51cikgZnVlciBkaWVzZSBSYXNzZQorICAgICAgZ2VsdGVuZGVuIEVpbnNjaHJhZW5rdW5nZW4gdm9yZ2Vub21tZW4gd2VyZGVuLiBBbHMgS2V5cyBzaW5kIGRpZQorICAgICAgaW4gZGllc2VyIE1hbnBhZ2UgYmVzY2hyaWViZW5lbiBLZXlzIGVybGF1YnQsIHdvYmVpIFNNX1JBQ0UgbmljaHQKKyAgICAgIHJla3Vyc2l2IGF1c2dld2VydGV0IHdpcmQuCisgICAgICBEZXIgUmFzc2VubmFtZSBpc3QgZ3Jvc3MgZ2VzY2hyaWViZW4gdW5kICIqIiBzdGVodCBmdWVyIGFsbGUgUmFzc2VuLgorICAgIFNSX0VYQ0xVREVfR1VJTEQKKyAgICBTUl9JTkNMVURFX0dVSUxECisgICAgICBEaWVzZSBiZWlkZW4gS2V5cyB2ZXJoYWx0ZW4gc2ljaCB3aWUgU1JfKl9SQUNFLCBudXIgZGFzcyBoaWVyIEdpbGRlbgorICAgICAgZ2VuYW5udCB3ZXJkZW4uCisgICAgU1JfRlVOCisgICAgICBIaWVyIGthbm4gZWluZSBGdW5rdGlvbiBpbiB2ZXJzY2hpZWRlbmVuIEZvcm1lbiB6dW0gUHJ1ZWZlbiBkZXIKKyAgICAgIFJlc3RyaWt0aW9uZW4gYW5nZWdlYmVuIHdlcmRlbiwgc2llaGUgZXhlY3V0ZV9hbnl0aGluZygpLgorICAgICAgRGFzIGthbm4gbnVldHpsaWNoIHNlaW4sIHVtIGFuZGVyZSBSZXN0cmlrdGlvbmVuIHp1IHBydWVmZW4sCisgICAgICB3aWUgZGFzIEJlc3RlaGVuIHZvbiBNaW5pcXVlc3RzIG9kZXIgYW5kZXJlIEZhZWhpZ2tlaXRlbi9GbGFncy4KKyAgICAgIElzdCBkZXIgVGVzdCBuaWNodCBiZXN0YW5kZW4sIGdpYnQgZGllIEZ1bmt0aW9uIGVpbmVuIFN0cmluZyB6dXJ1ZWNrLgorICAgIFNSX1BST1AKKyAgICAgIEhpZXIga2FubiBlaW4gTWFwcGluZyBtaXQgUHJvcGVydGllcyB1bmQgenVnZWhvZXJpZ2VuIFdlcnRlbiBhbmdlZ2ViZW4KKyAgICAgIHdlcmRlbiwgZGllIGpld2VpbHMgYXVmIElkZW50aXRhZXQgZ2VwcnVlZnQgd2VyZGVuLiBadXNhZXR6bGljaCBzb2xsdGUKKyAgICAgIGVpbmUgTWVsZHVuZyBhbmdlZ2ViZW4gd2VyZGVuLCBkaWUgYWxzIEZlaGxlcm1lbGR1bmcgYXVzZ2VnZWJlbiB3aXJkLAorICAgICAgd2VubiBkZXIgU3BpZWxlciBkaWUgQmVkaW5ndW5nIG5pY2h0IGVyZnVlbGx0LiBFcyBzb2xsdGUgaW1tZXIgZWluZQorICAgICAgcGFzc2VuZGUgTWVsZHVuZyBmdWVyIGRlbiBTcGllbGVyIGVpbmdlYmF1dCB3ZXJkZW4uIEJlaXNwaWVsOgorICAgICAgKFsgU1JfUFJPUDogKFtQX0FVU0dBTkdfRU5UREVDS1Q6IDE7ICJEZWluIFNjaHdlcnQgZmx1ZXN0ZXJ0ICIKKyAgICAgICAgICAidmVyYWVyZ2VydDogSWNoIHdlcmRlIERpciBlcnN0IGRhbm4genUgRGllbnN0ZW4gc2Vpbiwgd2VubiBEdSAiCisgICAgICAgICAgIkRpY2ggYWxzIHd1ZXJkaWcgZXJ3aWVzZW4gaGFzdCEiXSkgXSkKKyAgICAgIEF1ZmdydW5kIGRlciBNZWxkdW5nIHdpcmQgZW1wZm9obGVuLCBTUl9QUk9QIG5pY2h0IGluIFJlc3RyaWt0aW9uZW4gCisgICAgICBlaW56dXNldHplbiwgZGllIG1hc3NlbndlaXNlIGluIFNhdmVmaWxlcyBsYW5kZW4gKHouQi4gCisgICAgICBTcGllbGVyc2F2ZWZpbGVzKS4KKyAgICBTUl9RVUVTVAorICAgICAgSGllciBrYW5uIGVpbiBTdHJpbmctQXJyYXkgbWl0IGRlbiBOYW1lbiAoS2V5cykgZGVyIFF1ZXN0KHMpIGFuZ2VnZWJlbgorICAgICAgd2VyZGVuLCBkaWUgZGVyIFNwaWVsZXIgYmVzdGFuZGVuIGhhYmVuIG11c3MsIHVtIGRpZSBBa3Rpb24gYXVzZnVlaHJlbgorICAgICAgenUga29lbm5lbi4KKyAgICBTUl9NSU5JUVVFU1QKKyAgICAgIEhpZXIga2FubiBlbnR3ZWRlciBlaW4gU3RyaW5nLUFycmF5IG1pdCBkZW4gTGFkZW5hbWVuIGRlciB2ZXJnZWJlbmRlbgorICAgICAgT2JqZWt0ZSBvZGVyIGVpbiBJbnQtQXJyYXkgbWl0IGRlbiBJbmRleC1OdW1tZXJuIChJRHMpIGRlcgorICAgICAgTWluaXF1ZXN0KHMpIChlbXBmb2hsZW4hKSBhbmdlZ2ViZW4gd2VyZGVuLCBkaWUgZGVyIFNwaWVsZXIgYmVzdGFuZGVuCisgICAgICBoYWJlbiBtdXNzLCB1bSBkaWUgQWt0aW9uIGF1c2Z1ZWhyZW4genUga29lbm5lbi4KKworCisKK0JFTUVSS1VOR0VOOgorICAgIERpZXNlIFByb3BlcnR5IGVpZ25ldCBzaWNoIGhlcnZvcnJhZ2VuZCBkYWZ1ZXIsIGVpbmlnZSBHcnVuZGJlZGluZ3VuZ2VuCisgICAgZnVlciBkYXMgTnV0emVuIGRlciBXYWZmZSAvIFJ1ZXN0dW5nIC8gS2xlaWR1bmcgenUgc3RlbGxlbiBvaG5lIGdsZWljaAorICAgIGVpbmUgV2llbGQtIG9kZXIgV2VhckZ1bmMgc2V0emVuIHVuZCBhdXN3ZXJ0ZW4genUgbXVlc3Nlbi4KKworICAgIERlbmtiYXIgd2FlcmUgZGVyIEVpbnNhdHogYmVpIGhvY2h3ZXJ0aWdlbiBXYWZmZW4gLyBSdWVzdHVuZ2VuIC8gS2xlaWR1bmcsCisgICAgei5CLiBhdXMgZGVyIFBhcmEtV2VsdCBvZGVyIHNvbGNoZW4sIGRpZSBzaWNoIG5haCBhbSBMaW1pdCBkZXIgZ2VsdGVuZGVuCisgICAgR3Jlbnp3ZXJ0ZSBmdWVyIFBfV0MgLyBQX0FDIGJld2VnZW4gb2RlciBzb2dhciAobmFjaCBHZW5laG1pZ3VuZyBkdXJjaAorICAgIGRpZSBCYWxhbmNlKSBkYXJ1ZWJlci4KKworQkVJU1BJRUw6CisgICAgTWluZGVzdHN0dWZlIDI1OiBTZXRQcm9wKFBfUkVTVFJJQ1RJT05TLChbUF9MRVZFTDoyNV0pKTsKKyAgICBLZWluZSBNZW5zY2hlbjogIFNldFByb3AoUF9SRVNUUklDVElPTlMsKFtTUl9FWENMVURFX1JBQ0U6KHsiTWVuc2NoIn0pXSkpOworICAgIEFsaWdubWVudCA+NDk5OiAgU2V0UHJvcChQX1JFU1RSSUNUSU9OUywoW1NSX0dPT0Q6NTAwXSkpOworCisgICAgS29tcGxleGVyZXMgQmVpc3BpZWwKKworICAgIFF1ZXN0ICJEaWFtb25kIENsdWIiIGJlc3RhbmRlbiwgbWFnaWVyZWlnZW5lIFByb3BlcnR5IFBfQVVTR0FOR19HRUZVTkRFTgorICAgIG11c3MgZ2VzZXR6dCBzZWluLCBTdHVmZSAxMCwgbmljaHQgdGF1YiwgbWF4LiA0NSBGb29kOgorICAgIFNldFByb3AoUF9SRVNUUklDVElPTlMsIChbIFBfTEVWRUw6IDEwLCBQX0RFQUY6IDEsIFBfRk9PRDogNDUsCisgICAgICBTUl9QUk9QOiAoW1BfQVVTR0FOR19HRUZVTkRFTjoxXSksIFNSX1FVRVNUOih7IkRpYW1vbmQgQ2x1YiJ9KSBdKSk7CisKK1NJRUhFIEFVQ0g6CisgICAgY2hlY2tfcmVzdHJpY3Rpb25zKEwpCisgICAgV2llbGRGdW5jKEwpLCBXZWFyRnVuYyhMKSwgUmVtb3ZlRnVuYyhMKSwgVW53aWVsZEZ1bmMoTCksCisgICAgUF9XSUVMRF9GVU5DLCBQX1dFQVJfRlVOQywgUF9SRU1PVkVfRlVOQywgUF9VTldJRUxEX0ZVTkMKKyAgICAvc3RkL2FybW91ci93ZWFyLmMsIC9zdGQvd2VhcG9uL2NvbWJhdC5jLCBjbG90aGluZywgYXJtb3Vycywgd2VhcG9uCisKK0xFVFpURSBBZU5ERVJVTkc6CiswMy4gSmFudWFyIDIwMTQsIEFyYXRob3JuCmRpZmYgLS1naXQgYS9kb2MvcHJvcHMvUF9ST09NX01TRyBiL2RvYy9wcm9wcy9QX1JPT01fTVNHCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmMzMzI0ZjIKLS0tIC9kZXYvbnVsbAorKysgYi9kb2MvcHJvcHMvUF9ST09NX01TRwpAQCAtMCwwICsxLDIwIEBACitOQU1FOgorICAgIFBfUk9PTV9NU0cgICAgICAgICAgICAgICAgICAgICJyb29tX21zZyIgICAgICAgICAgICAgICAgICAgIAorCitERUZJTklFUlQgSU46CisgICAgL3N5cy9yb29tL2Rlc2NyaXB0aW9uLmgKKworQkVTQ0hSRUlCVU5HOgorICAgICBMaXN0ZSBtaXQgTWVsZHVuZ2VuLCBkaWUgenVmYWVsbGlnIGltIFJhdW0gYXVzZ2VnZWJlbiB3ZXJkZW4uCisKKyAgICAgSGllciBzaW5kIG51ciBkaWUgVGV4dG1lbGR1bmdlbiBhbHMgU3RyaW5nLUFycmF5IGdlc3BlaWNoZXJ0LgorCitBTk1FUktVTkdFTjoKKyAgICAgQml0dGUgQWRkUm9vbU1lc3NhZ2UoKSB6dW0gSGluenVmdWVnZW4vVWViZXJzY2hyZWliZW4gYmVudXR6ZW4hCisKK1NJRUhFIEFVQ0g6CisgICAgIExGdW5zOiAgICBBZGRSb29tTWVzc2FnZSgpCisgICAgIFZlcndhbmR0OiB0ZWxsX3Jvb20oKSwgUmVjZWl2ZU1zZygpCisgICAgIFByb3BzOiAgICBQX0ZVTkNfTVNHLCBQX01TR19QUk9CCisKKzIuRmViIDIwMTYgR2xvaW5zb24KZGlmZiAtLWdpdCBhL2RvYy9wcm9wcy9QX1JPT01fVFlQRSBiL2RvYy9wcm9wcy9QX1JPT01fVFlQRQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5kOWRkNzQ2Ci0tLSAvZGV2L251bGwKKysrIGIvZG9jL3Byb3BzL1BfUk9PTV9UWVBFCkBAIC0wLDAgKzEsMjMgQEAKK05BTUU6CisgICAgUF9ST09NX1RZUEUgICAgICAgICAgICAgICAgICAgICAgICJyb29tX3R5cGUiICAgICAgICAgICAgICAgICAgICAgICAKKworREVGSU5JRVJUIElOOgorICAgIC9zeXMvcm9vbXMuaAorCitCRVNDSFJFSUJVTkc6CisgICAgSW4gUF9ST09NX1RZUEUgd2lyZCBkaWUgQXJ0IGRlcyBSYXVtZXMgZHVyY2ggZW50c3ByZWNoZW5kZSBGbGFncworICAgIGJlc2NocmllYmVuLgorCisgICAgQmlzaGVyIHVudGVyc3R1ZXR6dCB3ZXJkZW46CisgICAgICAgIC0gUlRfU0hPUCAgICAgICBmdWVyIFJhZXVtZSwgZGllIC9zdGQvcm9vbS9zaG9wIGluaGVyaXRlbgorICAgICAgICAtIFJUX1BVQiAgICAgICAgZnVlciBSYWV1bWUsIGRpZSAvc3RkL3Jvb20vcHViIGluaGVyaXRlbgorCitCRUlTUElFTDoKKyAgICBXZW5uIGVpbiBOUEMgYWJmcmFnZW4gbW9lY2h0ZSwgb2IgZXIgc2ljaCBpbiBlaW5lciBLbmVpcGUgYXVmaGFlbHQgKHVtCisgICAgc2VsYnN0c3RhZW5kaWcgdGFua2VuIHp1IGtvZW5uZW4pIGtvZW5udGUgZWluZSBBYmZyYWdlIHouQi4gc28gYXVzc2VoZW46CisKKyAgICAgICAgaWYgKCBlbnZpcm9ubWVudCgpICYmCisgICAgICAgICAgICAgZW52aXJvbm1lbnQoKS0+UXVlcnlQcm9wKFBfUk9PTV9UWVBFKSAmIFJUX1BVQiApeworCisgICAgICAgICAgICAuLi4gdGFua2VuIC4uLgorICAgICAgICB9CmRpZmYgLS1naXQgYS9kb2MvcHJvcHMvUF9TQl9TUEVMTFMgYi9kb2MvcHJvcHMvUF9TQl9TUEVMTFMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uODRhYTcyMwotLS0gL2Rldi9udWxsCisrKyBiL2RvYy9wcm9wcy9QX1NCX1NQRUxMUwpAQCAtMCwwICsxLDIzIEBACitOQU1FOgorICAgIFBfU0JfU1BFTExTICAgICAgICAgICAgInNiX3NwZWxscyIgICAgICAgICAgICAgICAgICAgCisKK0RFRklOSUVSVCBJTjoKKyAgICAvc3lzL25ld19za2lsbHMuaAorCitCRVNDSFJFSUJVTkc6CisgICAgSW4gZGllc2VyIFNwZWxsYm9va3Byb3BlcnR5IHNpbmQgc2FlbXRsaWNoZSBTcHJ1ZWNoZSBkZXMgU3BlbGxib29rcworICAgIHZlcm1lcmt0LiBWZXJhZW5kZXJ0IHdpcmQgc2llIGR1cmNoIEFkZFNwZWxsKCkuCisKK0JFTUVSS1VOR0VOOgorICAgIE1hbiBzb2xsdGUgZGllc2UgUHJvcGVydHkgbmljaHQgcGVyIEhhbmQgdmVyYWVuZGVybiwgc29uZGVybiBkaWUKKyAgICBGdW5rdGlvbiBBZGRTcGVsbCgpIG51dHplbi4KKworU0lFSEUgQVVDSDoKKyAgICBHT2JqIFZlcndhbHRlbjogICBMZWFyblNraWxsLCBMZWFyblNwZWxsLCBJbml0aWFsU2tpbGxBYmlsaXR5CisgICAgKiBQcm9wZXJ0aWVzOiAgICAgUF9HVUlMRF9TS0lMTFMKKyAgICBTcGVsbGJvb2sgTGVybmVuOiBMZWFybiwgU3BlbGxTdWNjZXNzLCBFcmZvbGcsIE1pc3NlcmZvbGcKKyAgICAqIFZlcndhbHRlbjogICAgICBBZGRTcGVsbCwgUXVlcnlTcGVsbAorICAgICogUHJvcGVydGllczogICAgIFBfR0xPQkFMX1NLSUxMUFJPUFMKKyAgICBTa2lsbHM6ICAgICAgICAgICBQX05FV1NLSUxMUywgc3BydWNoZXJtdWVkdW5nLCBza2lsbF9pbmZvX2xpc3RlCisKK0xhc3QgbW9kaWZpZWQ6IFdlZCBKYW4gMTQgMTk6MTc6MDYgMTk5OCBieSBQYXRyeW4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9kb2MvcHJvcHMvUF9TQ1JFRU5TSVpFIGIvZG9jL3Byb3BzL1BfU0NSRUVOU0laRQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5mYzlkZDE1Ci0tLSAvZGV2L251bGwKKysrIGIvZG9jL3Byb3BzL1BfU0NSRUVOU0laRQpAQCAtMCwwICsxLDggQEAKK05BTUU6CisgICAgUF9TQ1JFRU5TSVpFICAgICAgICAgICAgICAgICAgInNjcmVlbnNpemUiICAgICAgICAgICAgICAgICAgCisKK0RFRklOSUVSVCBJTjoKKyAgICAvc3lzL3BsYXllci9iYXNlLmgKKworQkVTQ0hSRUlCVU5HOgorICAgICBCaWxkc2NoaXJtZ3JvZXNzZSBpbiBaZWlsZW4gKGZ1ZXIgTW9yZSkKZGlmZiAtLWdpdCBhL2RvYy9wcm9wcy9QX1NFQ09ORCBiL2RvYy9wcm9wcy9QX1NFQ09ORApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi40YWE4MzVhCi0tLSAvZGV2L251bGwKKysrIGIvZG9jL3Byb3BzL1BfU0VDT05ECkBAIC0wLDAgKzEsMjEgQEAKK05BTUU6CisgICAgUF9TRUNPTkQgICAgICAgICAgICAgICAgICAgICAgInNlY29uZCIgICAgICAgICAgICAgICAgICAgICAgCisKK0RFRklOSUVSVCBJTjoKKyAgICAvc3lzL3BsYXllci9iYXNlLmgKKworQkVTQ0hSRUlCVU5HOgorICAgICBXZW5uIGRpZXNlIFByb3AgZ2VzZXR6dCBpc3QsIGlzdCBkZXIgU3BpZWxlciBlaW4gWndlaXRpZS4gSW5oYWx0IGRlcgorICAgICBQcm9wIGlzdCBlaW4gU3RyaW5nIG1pdCBkZW0gKGxvd2VyY2FzZSkgTmFtZW4gZGVzIEVyc3RpZXMuCisKK0JFSVNQSUVMOgorICAgICBpZiAodGhpc19wbGF5ZXIoKS0+UXVlcnlQcm9wKFBfU0VDT05EKT09Im5vdHN0cm9tIikgeworICAgICAgIHRlbGxfb2JqZWN0KHRoaXNfcGxheWVyKCksICJOaWNodCBhbGxlcyBhdWZlc3NlbiFcbiIpOworICAgICB9CisKK1NJRUhFIEFVQ0g6CisgICAgIFByb3BlcnRpZXM6IFBfU0VDT05EX01BUksKKyAgICAgU29uc3RpZ2VzOiAgL3NlY3VyZS96d2VpdGllcy5jCisKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KK0xhc3QgbW9kaWZpZWQ6IDE4LUp1bi0yMDE1LCBBcmF0aG9ybi4KZGlmZiAtLWdpdCBhL2RvYy9wcm9wcy9QX1NFQ09ORF9NQVJLIGIvZG9jL3Byb3BzL1BfU0VDT05EX01BUksKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYzFjMGM0MgotLS0gL2Rldi9udWxsCisrKyBiL2RvYy9wcm9wcy9QX1NFQ09ORF9NQVJLCkBAIC0wLDAgKzEsMTggQEAKK05BTUU6CisgICAgUF9TRUNPTkRfTUFSSyAgICAgICAgICAgICAgICAgInNlY29uZF9tYXJrIgorCitERUZJTklFUlQgSU46CisgICAgL3N5cy9wbGF5ZXIvYmFzZS5oCisKK0JFU0NIUkVJQlVORzoKKyAgICAgR2lidCBhbiwgd2llIG1pdCBkZXIgWndlaXRpZS1NYXJraWVydW5nIGVpbmVzIFNwaWVsZXJzIHVtZ2VnYW5nZW4gd2lyZC4KKworICAgICAtMSAgJ3Vuc2ljaHRiYXJlJyBNYXJraWVydW5nOyBpbSB3ZXIva3dlciB3aXJkIGJlaSBkaWVzZW0gWndlaXRpZSBzCisgICAgICAgICBvZGVyIFMgYW5nZXplaWd0LgorCisgICAgICAwICAnc2ljaHRiYXJlJyBNYXJraWVydW5nOyBpbSB3ZXIva3dlciB3aXJkIGJlaSBkaWVzZW0gWndlaXRpZSB6IG9kZXIKKyAgICAgICAgIFogYW5nZXplaWd0LiBEZXIgTmFtZSBkZXMgRXJzdGllcyBpc3QgYmVpbSBGaW5nZXJuIGplZG9jaCBudXIKKyAgICAgICAgIGZ1ZXIgTWFnaWVyIHNpY2h0YmFyLgorCisgICAgICAxICBNYXJraWVydW5nICdzaWNodGJhciArIE5hbWUnOyB3aWUgMCwgbnVyIGRhc3MgYmVpbSBGaW5nZXJuIGFsbGUKKyAgICAgICAgIFNwaWVsZXIgZGVuIE5hbWVuIGRlcyBFcnN0aWVzIHNlaGVuIGtvZW5uZW4uCmRpZmYgLS1naXQgYS9kb2MvcHJvcHMvUF9TRUVSRE9PUlMgYi9kb2MvcHJvcHMvUF9TRUVSRE9PUlMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOGZmYjg1MgotLS0gL2Rldi9udWxsCisrKyBiL2RvYy9wcm9wcy9QX1NFRVJET09SUwpAQCAtMCwwICsxLDI2IEBACitQX1NFRVJET09SUworCitOQU1FOgorICAgICBQX1NFRVJET09SUyAgICAgICJyd19zZWhlcnRvcmUiCisKK0RFRklOSUVSVCBJTjoKKyAgICAgL2Qvc2VoZXIvcG9ydGFsZS9zZWhlcnRvci5oCisKK0JFU0NIUkVJQlVORzoKKyAgICAgU2VoZXJ0b3ItcmVsZXZhbnRlIFByb3BlcnR5LgorCisgICAgIEVudGhhZWx0IGVpbiBNYXBwaW5nIG1pdCBkZW4gV2VydGVwYWFyZW4KKyAgICAgKFsgU2VoZXItUG9ydGFsLU51bW1lcjogeCBdKQorICAgICBtaXQgeCAhPSAwIGZ1ZXIgZW50ZGVja3RlIFRvcmUuCisgICAgIAorICAgICAwIGhhdCBlaW4gU29uZGVydmVyaGFsdGVuIGZ1ZXIgbW9iaWxlIFRvcmUuCisKK0JFTUVSS1VORzoKKyAgICAgQXVmIGdhciBrZWluZW4gRmFsbCBpbiBTcGllbGVybiBtYW5pcHVsaWVyZW4hIFVuZCBiaXR0ZSBkYXMgZW50aGFsdGVuZQorICAgICBNYXBwaW5nIG5pY2h0IHZvbiBlaW5lbSBTcGllbGVyIGFiZnJhZ2VuIHVuZCBQX1NFRVJET09SUyBpbiBlaW5lbQorICAgICBUZXN0c3BpZWxlciB6dXdlaXNlbiEKKyAgICAgCitTSUVIRSBBVUNIOgorICAgICBQX0ZBT19QT1JUQUxTCisgICAgIAorMS5TZXB0ZW1iZXIgMjAwOCBHbG9pbnNvbgpkaWZmIC0tZ2l0IGEvZG9jL3Byb3BzL1BfU0VFUkRPT1JfQUxMT1dFRCBiL2RvYy9wcm9wcy9QX1NFRVJET09SX0FMTE9XRUQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYjgyMjVlMwotLS0gL2Rldi9udWxsCisrKyBiL2RvYy9wcm9wcy9QX1NFRVJET09SX0FMTE9XRUQKQEAgLTAsMCArMSwxNSBAQAorTkFNRToKKyAgICBQX1NFRVJET09SX0FMTE9XRUQJCSJyd19zZWhlcnRvcl9lcmxhdWJ0IiAgICAgICAgICAgICAgICAgICAgICAgICAgCisKK0RFRklOSUVSVCBJTjoKKyAgICAvZC9zZWhlci9wb3J0YWxlL3NlaGVydG9yLmgKKworQkVTQ0hSRUlCVU5HOgorICAgICBEaWVzZSBQcm9wZXJ0eSBtdXNzIGluIGVpbmVtIFJhdW0gZ2VzZXR6dCBzZWluLCBzb2xsCisgICAgIGVpbiBTZWhlciBkb3J0IGVpbiBtb2JpbGVzIFNlaGVydG9yIGFic3RlbGxlbiBkdWVyZmVuLgorICAgICBadXNhZXR6bGljaCBkYXJmIGRlciBSYXVtIG5pY2h0IGluIFBBUkEgbGllZ2VuIHVuZCBtdXNzCisgICAgIGFscyBlaWdlbmVzIEZpbGUgZXhpc3RpZXJlbi4KKyAgICAgRXMgaXN0IGRhcmF1ZiB6dSBhY2h0ZW4sIFNlaGVydG9yZSBuaWNodCBpbiBRdWVzdGdlYmlldGVuLAorICAgICBkaXJla3QgYW4gVGFua2VuIG9kZXIgYWVobmxpY2hlbiBQbGFldHplbiB6dSBlcmxhdWJlbi4KKyAgICAgRXMgZ2lsdCBkaWUgRWluc2NoYWV0enVuZyBkZXMgZnVlciBkZW4gUmF1bSBWZXJhbnR3b3J0bGljaGVuLgorCmRpZmYgLS1naXQgYS9kb2MvcHJvcHMvUF9TRU5TSVRJVkUgYi9kb2MvcHJvcHMvUF9TRU5TSVRJVkUKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMjNkMWZlZQotLS0gL2Rldi9udWxsCisrKyBiL2RvYy9wcm9wcy9QX1NFTlNJVElWRQpAQCAtMCwwICsxLDEyNSBAQAorUF9TRU5TSVRJVkUKK05BTUU6CisgICAgIFBfU0VOU0lUSVZFICAgICAgICAgICAgICAgICAgICJzZW5zaXRpdmUiCisKK0RFRklOSUVSVCBJTjoKKyAgICAgL3N5cy90aGluZy9tb3ZpbmcuaAorCitCRVNDSFJFSUJVTkc6CisgICAgIERpZXNlIFByb3BlcnR5IGthbm4gaW4gT2JqZWt0ZW4gZ2VzZXR6dCB3ZXJkZW4sIGRpZSBhdWYgYmVzdGltbXRlCisgICAgIFNjaGFkZW5zYXJ0ZW4gZW1wZmluZGxpY2ggcmVhZ2llcmVuIHNvbGxlbi4gTW9lZ2xpY2hlIEFud2VuZHVuZ3NmYWVsbGU6CisgICAgIC0gRGFzIExlYmV3ZXNlbiwgaW4gZGVzc2VuIEludmVudGFyIHNpY2ggZWluIE9iamVrdCBiZWZpbmRldCwgZXJsZWlkZXQKKyAgICAgICBlaW5lbiBBbmdyaWZmIG1pdCBkZXIgZnJhZ2xpY2hlbiBTY2hhZGVuc2FydCAoQmVpc3BpZWw6IGVpbmUgCisgICAgICAgUHVzdGVibHVtZSwgZGllIGJlaSBBbmdyaWZmIG1pdCBMdWZ0c2NoYWRlbiBhdXNlaW5hbmRlcmZhZWxsdCkuCisgICAgIC0gWndlaSBPYmpla3RlIHRyZWZmZW4gaW0gZ2xlaWNoZW4gRW52aXJvbm1lbnQgYXVmZWluYW5kZXIsIHdvYmVpCisgICAgICAgZWluZXMgZW1wZmluZGxpY2ggYXVmIGVpbmUgU2NoYWRlbnNhcnQgcmVhZ2llcnQsIHVuZCBkYXMgendlaXRlIGRpZXNlCisgICAgICAgU2NoYWRlbnNhcnQgbWl0YnJpbmd0LCBkLmguIGRpZSBFbXBmaW5kbGljaGtlaXQgYXVzbG9lc2VuIGthbm4uCisgICAgICAgKEJlaXNwaWVsOiBlaW4gZmV1ZXJlbXBmaW5kbGljaGVyIFBvc3RzYWNrIHdpcmQgYW5nZXNlbmd0LCB3ZW5uIGVpbmUKKyAgICAgICAgYnJlbm5lbmRlIEZhY2tlbCBpbnMgZ2xlaWNoZSBJbnZlbnRhciBrb21tdC4pCisgICAgICAgRGFzIEF1c2xvZXNlbiBkaWVzZXIgRW1wZmluZGxpY2hrZWl0IGlzdCB1bmFiaGFlbmdpZyBkYXZvbiwgd2VsY2hlcyAKKyAgICAgICBPYmpla3QgenVlcnN0IGRhIHdhci4KKworICAgICBEaWUgUHJvcGVydHkgZW50aGFlbHQgZWluIEFycmF5IGF1cyBBcnJheXM6CisgICAgICAgKHs8c2Vuc3Byb3BzXzE+LCA8c2Vuc3Byb3BzXzI+LCAuLi4sIDxzZW5zcHJvcHNfbj59KQorICAgICAKKyAgICAgd29iZWkgamVkZXIgRWludHJhZyA8c2Vuc3Byb3BzPiBqZXdlaWxzIGZvbGdlbmRlIFN0cnVrdHVyIGhhdDoKKyAgICAgICAoe3N0cmluZyBsaXN0X2tleSwgc3RyaW5nIGRhbXR5cGUsIGludCB0cmVzaG9sZCwgbWl4ZWQgb3B0aW9ucyB9KQorICAgICAKKyAgICAgRGllIEVpbnRyYWVnZSBoYWJlbiBkYWJlaSBmb2xnZW5kZSBCZWRldXR1bmc6CisgICAgIAorICAgICBsaXN0X2tleTogS2FubiBlaW5lbiB2b24gZm9sZ2VuZGVuIGRyZWkgV2VydGVuIGFubmVobWVuIAorICAgICAgICAgIDEpIFNFTlNJVElWRV9JTlZFTlRPUlksIHBhc3NpdmUgRWlnZW5zY2hhZnQ7IHplaWd0IGFuLCBkYXNzIGRhcworICAgICAgICAgICAgIE9iamVrdCBlbXBmaW5kbGljaCBhdWYgYWt0aXZlIE9iamVrdGUgcmVhZ2llcnQsIGRpZSBpbiBkYXMKKyAgICAgICAgICAgICBJbnZlbnRvcnkgZGVzIENvbnRhaW5lcnMgaGluZWluYmV3ZWd0IHdlcmRlbgorICAgICAgICAgIDIpIFNFTlNJVElWRV9BVFRBQ0ssIHBhc3NpdmUgRWlnZW5zY2hhZnQ7IHplaWd0IGFuLCBkYXNzIGRhcyAKKyAgICAgICAgICAgICBPYmpla3QgZW1wZmluZGxpY2ggYXVmIGFldXNzZXJlIEVpbmZsdWVzc2UgYnp3LiBBbmdyaWZmZSAKKyAgICAgICAgICAgICBhdWYgZWluIExlYmV3ZXNlbiByZWFnaWVydCwgaW4gZGVzc2VuIEludmVudGFyIGVzIHNpY2ggYmVmaW5kZXQKKyAgICAgICAgICAzKSBTRU5TSVRJVkVfSU5WRU5UT1JZX1RSSUdHRVIsIGFrdGl2ZSBFaWdlbnNjaGFmdDsgemVpZ3QgYW4sIGRhc3MKKyAgICAgICAgICAgICBkYXMgT2JqZWt0IGVpbmUgQXVzc3RyYWhsdW5nIGF1ZiBhbmRlcmUgT2JqZWt0ZSBpbSBJbnZlbnRhcgorICAgICAgICAgICAgIGhhdC4gV2lyZCBhdXNnZWxvZXN0LCB3ZW5uIGRhcyBPYmpla3QgaW5zIEludmVudGFyIGhpbmVpbmJld2VndAorICAgICAgICAgICAgIHdpcmQuCisgICAgIGRhbXR5cGU6IGVpbmUgU2NoYWRlbnNhcnQgKERUX0ZJUkUsIERUX1dBVEVSLCAuLi4pCisgICAgIHRyZXNob2xkOiBoYXQgendlaSBCZWRldXR1bmdlbiBhYmhhZW5naWcgdm9uIGRlbSBXZXJ0IGluIGxpc3Rfa2V5OgorICAgICAgICAgIDEpIEZ1ZXIgT2JqZWt0ZSBtaXQgU0VOU0lUSVZFX0lOVkVOVE9SWSBvZGVyIFNFTlNJVElWRV9BVFRDSyBpc3QKKyAgICAgICAgICAgICBkaWVzIGRlciBTY2hhZGVuc3dlcnQsIGFiIGRlbSBkYXMgT2JqZWt0IGJlbmFjaHJpY2h0aWd0IHdlcmRlbiAKKyAgICAgICAgICAgICBzb2xsLgorICAgICAgICAgICAgIEhpZXIgd2lyZCBlaW4gV2VydCBpbiAiRGVmZW5kLUVpbmhlaXRlbiIgZXJ3YXJ0ZXQsIGQuaC4gZGFzCisgICAgICAgICAgICAgWmVobmZhY2hlIGRlc3Nlbiwgd2FzIGFtIEVuZGUgaW4gTFAgYWJnZXpvZ2VuIHd1ZXJkZS4KKyAgICAgICAgICAyKSBGdWVyIE9iamVrdGUgbWl0IFNFTlNJVElWRV9JTlZFTlRPUllfVFJJR0dFUiBpc3QgZGllcyBkZXIgCisgICAgICAgICAgICAgU2NoYWRlbnN3ZXJ0LCBtaXQgZGVtIGRhcyBPYmpla3QgYW5kZXJlIGJlcmVpdHMgaW0gSW52ZW50YXIKKyAgICAgICAgICAgICBkZXMgQ29udGFpbmVycyBiZWZpbmRsaWNoZSBPYmpla3RlIGJlZWluZmx1c3N0LCBkaWUgZWluZSAKKyAgICAgICAgICAgICBlbnRzcHJlY2hlbmRlIEVtcGZpbmRsaWNoa2VpdCBnZXNldHp0IGhhYmVuCisgICAgIG9wdGlvbnM6IE9wdGlvbmFsZSBEYXRlbiwgZGllIGRlciBwcm9ncmFtbWllcmVuZGUgTWFnaWVyIHNlbGJzdAorICAgICAgICAgICAgZGVmaW5pZXJlbiBrYW5uLiBXZXJkZW4gYW4gZGllIGluIGRlbiBiZXRyb2ZmZW5lbiBPYmpla3RlbgorICAgICAgICAgICAgYXVmZ2VydWZlbmVuIEZ1bmt0aW9uZW4gZHVyY2hnZXJlaWNodC4KKworICAgICBFaW4gU0VOU0lUSVZFX0FUVEFDSy1PYmpla3QsIGRlc3NlbiBUcmlnZ2VyLUJlZGluZ3VuZ2VuIGVyZnVlbGx0IHNpbmQsCisgICAgIHdpcmQgZHVyY2ggZm9sZ2VuZGVuIEZ1bmt0aW9uc2F1ZnJ1ZiBkYXJ1ZWJlciBpbmZvcm1pZXJ0OgorICAgICAgIHRyaWdnZXJfc2Vuc2l0aXZlX2F0dGFjayhvYmplY3QgZW5lbXksIHN0cmluZyBkYW10eXBlLCBpbnQgZGFtYWdlLAorICAgICAgICAgICAgICAgICBtaXhlZCBzcGVsbCwgbWl4ZWQgb3B0aW9ucykKKyAgICAgCisgICAgIEVpbiBTRU5TSVRJVkVfSU5WRU5UT1JZLU9iamVrdCwgZGVzc2VuIFRyaWdnZXItQmVkaW5ndW5nZW4gZXJmdWVsbHQgc2luZCwKKyAgICAgd2lyZCBkdXJjaCBmb2xnZW5kZW4gRnVua3Rpb25zYXVmcnVmIGRhcnVlYmVyIGluZm9ybWllcnQ6CisgICAgICAgdHJpZ2dlcl9zZW5zaXRpdmVfaW52KG9iamVjdCB3aG9kaWQsIHN0cmluZyBkYW10eXBlLCBpbnQgdGhyZXNob2xkLAorICAgICAgICAgICAgICAgICBtaXhlZCBvcHRpb25zLCBtaXhlZCBvcHRpb25zKQorCisgICAgIERpZSBiZWlkZW4gRnVua3Rpb25lbiBtdWVzc2VuIHNlbGJzdCBnZS0vdWViZXJzY2hyaWViZW4gd2VyZGVuLgorCitCRU1FUktVTkdFTjoKKyAgICAgMS4gUF9TRU5TSVRJVkUtT2JqZWt0ZSBrb3N0ZW4gUmVjaGVuemVpdCBiZWkgamVkZW0gQW5ncmlmZiBvZGVyIGplZGVtCisgICAgICAgIG1vdmUoKSAtIGRhaGVyIGJpdHRlIHNwYXJzYW0gdmVyd2VuZGVuCisgICAgIDIuIElzdCBQX1NFTlNJVElWRSBuaWNodCBzdGF0aXNjaCwgc29uZGVybiB3aXJkIGVzIHNpdHVhdGlvbnNhYmhhZW5naWcgCisgICAgICAgIGdlYWVuZGVydCwgbXVzcyBtYW4gZGFzIGVudmlyb25tZW50KCkgamV3ZWlscyBzZWxic3QgdWViZXIgc2VpbmUgCisgICAgICAgIG5ldWUgRW1wZmluZGxpY2hrZWl0IGJlbmFjaHJpY2h0aWdlbi4gRGllcyBnZXNjaGllaHQgbWl0IGRlbiAKKyAgICAgICAgRnVua3Rpb25lbiBSZW1vdmVTZW5zaXRpdmVPYmplY3QoKSBiencuSW5zZXJ0U2Vuc2l0aXZlT2JqZWN0KCksIAorICAgICAgICBzaWVoZSBkZXJlbiBNYW5wYWdlcy4KKworQkVJU1BJRUw6CisgICAgIEJlaXNwaWVsIDE6CisgICAgIEJlaXNwaWVsY29kZSBlaW5lcyBPYmpla3RlcyBtaXQgU0VOU0lUSVZFX0FUVEFDSyB1bmQgU0VOU0lUSVZFX0lOVkVOVE9SWQorICAgICBzaWVoZSBoaWVyOiAvZG9jL2JlaXNwaWVsZS90ZXN0b2JqZWt0ZS9hdHRhY2tfYnVzeV9zZW5zaXRpdmVfdGVzdG9iai5jCisKKyAgICAgQmVpc3BpZWwgMjoKKyAgICAgRWluIEVpc3phcGZlbiwgZGVyIGJlaSBGZXVlcmFuZ3JpZmZlbiBvZGVyIGJlaSBoZWlzc2VuIEdlZ2Vuc3RhZW5kZW4gaW0KKyAgICAgZ2VtZWluc2FtZW4gRW52aXJvbm1lbnQgemVyc2NobWVsemVuIHNvbGw6CisKKyAgICAgdm9pZCBjcmVhdGUoKSB7CisgICAgICAgU2V0UHJvcCggUF9TRU5TSVRJVkUsICh7ICh7U0VOU0lUSVZFX0FUVEFDSywgICAgIERUX0ZJUkUsIDEwMH0pLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHtTRU5TSVRJVkVfSU5WRU5UT1JZLCBEVF9GSVJFLCAxMDB9KSB9KSApOworICAgICAgIFsuLi5dCisgICAgIH0KKworICAgICB2YXJhcmdzIHZvaWQgdHJpZ2dlcl9zZW5zaXRpdmVfYXR0YWNrKCkgeworICAgICAgIHJlbW92ZSgpOworICAgICB9CisKKyAgICAgdmFyYXJncyB2b2lkIHRyaWdnZXJfc2Vuc2l0aXZlX2ludigpIHsKKyAgICAgICBjYWxsX291dCgicmVtb3ZlIiwwKTsgIC8vIHZlcnpvZWdlcnQsIHdlZ2VuIG1vdmUoKQorICAgICB9CisKKyAgICAgdmFyYXJncyBpbnQgcmVtb3ZlKGludCBzaWxlbnQpIHsKKyAgICAgICBpZighc2lsZW50KSB7CisgICAgICAgICBvYmplY3Qgcm9vbSA9IGFsbF9lbnZpcm9ubWVudCh0aGlzX29iamVjdCgpKVs8MV07CisgICAgICAgICB0ZWxsX3Jvb20ocm9vbSwgTmFtZSgpKyIgemVyc2NobWlsenQuXG4iKTsKKyAgICAgICB9CisgICAgICAgcmV0dXJuIDo6cmVtb3ZlKCk7CisgICAgIH0KKworICAgICAtIHdpcmQgZWluZSBGYWNrZWwgbWl0CisgICAgICAgU2V0UHJvcChQX1NFTlNJVElWRSwoeyh7U0VOU0lUSVZFX0lOVkVOVE9SWV9UUklHR0VSLERUX0ZJUkUsMjUwfSl9KSkKKyAgICAgICBpbiBkYXMgZ2xlaWNoZSBlbnZpcm9ubWVudCgpIHdpZSBkaWVzZXIgWmFwZmVuIGJld2VndCB3aXJkLCBsb2VzdAorICAgICAgIGRpZXNlIGltIFphcGZlbiB0cmlnZ2VyX3NlbnNpdGl2ZV9pbnYoKSBhdXMKKyAgICAgLSB3aXJkIGVpbiBBbmdyaWZmIG1pdCBEVF9GSVJFIHVuZCBpbml0aWFsZW0gU2NoYWRlbiA+IDEwMCBhdWYgZGFzCisgICAgICAgZW52aXJvbm1lbnQoKSB2ZXJ1ZWJ0LCBsb2VzdCBkaWVzIGltIFphcGZlbiB0cmlnZ2VyX3NlbnNpdGl2ZV9hdHRhY2soKQorICAgICAgIGF1cworCitTSUVIRSBBVUNIOgorICAgICBQcm9wZXJ0aWVzOiBQX1NFTlNJVElWRV9BVFRBQ0ssIFBfU0VOU0lUSVZFX0lOVkVOVE9SWSwKKyAgICAgICAgICAgICAgICAgUF9TRU5TSVRJVkVfSU5WRU5UT1JZX1RSSUdHRVIKKyAgICAgRnVua3Rpb25lbjogSW5zZXJ0U2Vuc2l0aXZlT2JqZWN0KEwpLCBSZW1vdmVTZW5zaXRpdmVPYmplY3QoTCksCisgICAgICAgICAgICAgICAgIENoZWNrU2Vuc2l0aXZlQXR0YWNrKEwpLCBEZWZlbmQoKSwgCisgICAgICAgICAgICAgICAgIGluc2VydF9zZW5zaXRpdmVfaW52KEwpLCBpbnNlcnRfc2Vuc2l0aXZlX2ludl90cmlnZ2VyKEwpLAorICAgICAgICAgICAgICAgICB0cmlnZ2VyX3NlbnNpdGl2ZV9pbnYoTCksIHRyaWdnZXJfc2Vuc2l0aXZlX2F0dGFjayhMKQorICAgICBEZWZpbmVzOiAgICAvc3lzL3NlbnNpdGl2ZS5oCisKK0xldHp0ZSBBZW5kZXJ1bmc6IDEwLiBKYW51YXIgMjAxNSwgQXJhdGhvcm4KZGlmZiAtLWdpdCBhL2RvYy9wcm9wcy9QX1NFTlNJVElWRV9BVFRBQ0sgYi9kb2MvcHJvcHMvUF9TRU5TSVRJVkVfQVRUQUNLCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmIxNTg2ZWIKLS0tIC9kZXYvbnVsbAorKysgYi9kb2MvcHJvcHMvUF9TRU5TSVRJVkVfQVRUQUNLCkBAIC0wLDAgKzEsMjQgQEAKK1BfU0VOU0lUSVZFX0FUVEFDSworTkFNRToKKyAgICBQX1NFTlNJVElWRV9BVFRBQ0sgICAgICAgICAgICAic2Vuc2l0aXZlX2F0dGFjayIKKworREVGSU5JRVJUIElOOgorICAgIC9zeXMvc2Vuc2l0aXZlLmgKKworQkVTQ0hSRUlCVU5HOgorICAgIEhpZXIgc3RlaHQgZGllIExpc3RlIGRlciB6dSBpbmZvcm1pZXJlbmRlbiBPYmpla3RlLCBkaWUgcG90ZW50aWVsbAorICAgIGF1ZiBlaW5lbiBBbmdyaWZmIHJlYWdpZXJlbiBrb2VubnRlbi4KKyAgICBXaXJkIHZvbiBJbnNlcnRTZW5zaXRpdmVPYmplY3QoKSB1bmQgUmVtb3ZlU2Vuc2l0aXZlT2JqZWN0KCkKKyAgICBnZXNjaHJpZWJlbiB1bmQgaW4gQ2hlY2tTZW5zaXRpdmVBdHRhY2soKSBhdXNnZXdlcnRldC4KKworQkVNRVJLVU5HRU46CisgICAgTmljaHQgc2VsYnN0IHZlcmFlbmRlcm4gLSBiaXR0ZSBQX1NFTlNJVElWRSBmdWVyIEVpbnRyYWVnZSBiZW51dHplbi4KKworU0lFSEUgQVVDSDoKKyAgICAgUF9TRU5TSVRJVkUKKyAgICAgSW5zZXJ0U2Vuc2l0aXZlT2JqZWN0LCBSZW1vdmVTZW5zaXRpdmVPYmplY3QKKyAgICAgaW5zZXJ0X3NlbnNpdGl2ZV9pbnZfdHJpZ2dlciwgaW5zZXJ0X3NlbnNpdGl2ZV9pbnYKKyAgICAgUF9TRU5TSVRJVkVfSU5WRU5UT1JZX1RSSUdHRVIsIFBfU0VOU0lUSVZFX0lOVkVOVE9SWQorICAgICBDaGVja1NlbnNpdGl2ZUF0dGFjaworCisyNS5BcHIuMjAwMSwgR2xvaW5zb25ATUcKZGlmZiAtLWdpdCBhL2RvYy9wcm9wcy9QX1NFTlNJVElWRV9JTlZFTlRPUlkgYi9kb2MvcHJvcHMvUF9TRU5TSVRJVkVfSU5WRU5UT1JZCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjFlNzU0MjMKLS0tIC9kZXYvbnVsbAorKysgYi9kb2MvcHJvcHMvUF9TRU5TSVRJVkVfSU5WRU5UT1JZCkBAIC0wLDAgKzEsMjQgQEAKK05BTUU6CisgICAgUF9TRU5TSVRJVkVfSU5WRU5UT1JZICAgICAgICAgInNlbnNpdGl2ZV9pbnYiCisKK0RFRklOSUVSVCBJTjoKKyAgICAvc3lzL3NlbnNpdGl2ZS5oCisKK0JFU0NIUkVJQlVORzoKKyAgICBIaWVyIHN0ZWh0IGRpZSBMaXN0ZSBkZXIgenUgaW5mb3JtaWVyZW5kZW4gT2JqZWt0ZSwgZGllIHBvdGVudGllbGwKKyAgICBhdWYgZWluIGFuZGVyZXMgT2JqZWt0IG1pdCBnZXNldHp0ZW0gUF9TRU5TSVRJVkVfSU5WRU5UT1JZX1RSSUdHRVIKKyAgICByZWFnaWVyZW4ga29lbm50ZW4uCisgICAgV2lyZCB2b24gSW5zZXJ0U2Vuc2l0aXZlT2JqZWN0KCkgdW5kIFJlbW92ZVNlbnNpdGl2ZU9iamVjdCgpCisgICAgZ2VzY2hyaWViZW4uCisKK0JFTUVSS1VOR0VOOgorICAgIE5pY2h0IHNlbGJzdCB2ZXJhZW5kZXJuIC0gYml0dGUgUF9TRU5TSVRJVkUgZnVlciBFaW50cmFlZ2UgYmVudXR6ZW4uCisKK1NJRUhFIEFVQ0g6CisgICAgIFBfU0VOU0lUSVZFCisgICAgIEluc2VydFNlbnNpdGl2ZU9iamVjdCwgUmVtb3ZlU2Vuc2l0aXZlT2JqZWN0CisgICAgIGluc2VydF9zZW5zaXRpdmVfaW52X3RyaWdnZXIsIGluc2VydF9zZW5zaXRpdmVfaW52CisgICAgIFBfU0VOU0lUSVZFX0lOVkVOVE9SWV9UUklHR0VSLCBQX1NFTlNJVElWRV9BVFRBQ0sKKyAgICAgQ2hlY2tTZW5zaXRpdmVBdHRhY2sKKworMjUuQXByLjIwMDEsIEdsb2luc29uQE1HCmRpZmYgLS1naXQgYS9kb2MvcHJvcHMvUF9TRU5TSVRJVkVfSU5WRU5UT1JZX1RSSUdHRVIgYi9kb2MvcHJvcHMvUF9TRU5TSVRJVkVfSU5WRU5UT1JZX1RSSUdHRVIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZGY2ZmVhZQotLS0gL2Rldi9udWxsCisrKyBiL2RvYy9wcm9wcy9QX1NFTlNJVElWRV9JTlZFTlRPUllfVFJJR0dFUgpAQCAtMCwwICsxLDI0IEBACitQX1NFTlNJVElWRV9JTlZFTlRPUllfVFJJR0dFUgorTkFNRToKKyAgICBQX1NFTlNJVElWRV9JTlZFTlRPUllfVFJJR0dFUiAic2Vuc2l0aXZlX2ludl90cmlnZ2VyIgorCitERUZJTklFUlQgSU46CisgICAgL3N5cy9zZW5zaXRpdmUuaAorCitCRVNDSFJFSUJVTkc6CisgICAgSGllciBzdGVodCBkaWUgTGlzdGUgZGVyIGFrdGl2ZW4gT2JqZWt0ZSwgZGllIGVpbmUgcG90ZW50aWVsbGUKKyAgICAiQXVzc3RyYWhsdW5nIiBhdWYgYW5kZXJlIE9iamVrdGUgaGFiZW4uCisgICAgV2lyZCB2b24gSW5zZXJ0U2Vuc2l0aXZlT2JqZWN0KCkgdW5kIFJlbW92ZVNlbnNpdGl2ZU9iamVjdCgpCisgICAgZ2VzY2hyaWViZW4uCisKK0JFTUVSS1VOR0VOOgorICAgIE5pY2h0IHNlbGJzdCB2ZXJhZW5kZXJuIC0gYml0dGUgUF9TRU5TSVRJVkUgZnVlciBFaW50cmFlZ2UgYmVudXR6ZW4uCisKK1NJRUhFIEFVQ0g6CisgICAgIFBfU0VOU0lUSVZFCisgICAgIEluc2VydFNlbnNpdGl2ZU9iamVjdCwgUmVtb3ZlU2Vuc2l0aXZlT2JqZWN0CisgICAgIGluc2VydF9zZW5zaXRpdmVfaW52X3RyaWdnZXIsIGluc2VydF9zZW5zaXRpdmVfaW52CisgICAgIFBfU0VOU0lUSVZFX0FUVEFDSywgUF9TRU5TSVRJVkVfSU5WRU5UT1JZCisgICAgIENoZWNrU2Vuc2l0aXZlQXR0YWNrCisKKzI1LkFwci4yMDAxLCBHbG9pbnNvbkBNRwpkaWZmIC0tZ2l0IGEvZG9jL3Byb3BzL1BfU0hPT1RJTkdfQVJFQSBiL2RvYy9wcm9wcy9QX1NIT09USU5HX0FSRUEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNzcwNTY0ZgotLS0gL2Rldi9udWxsCisrKyBiL2RvYy9wcm9wcy9QX1NIT09USU5HX0FSRUEKQEAgLTAsMCArMSwyNCBAQAorUF9TSE9PVElOR19BUkVBCisKK05BTUU6CisgICAgUF9TSE9PVElOR19BUkVBICAgICAic2hvb3RpbmdfYXJlYSIKKworREVGSU5JRVJUIElOOgorICAgIDxjb21iYXQuaD4KKworQkVTQ0hSRUlCVU5HOgorICAgIExlZ3QgZGllICdHcm9lc3NlJyBlaW5lcyBSYXVtZXMgZmVzdC4gRWluIFNjaHVldHplIGthbm4gbWl0IHNlaW5lcgorICAgIEZlcm5rYW1wZndhZmZlIG51ciBkYW5uIGF1cyBkaWVzZW0gUmF1bSBpbiBlaW5lbiBhbmRlcmVuIFJhdW0gc2NoaWVzc2VuLAorICAgIHdlbm4gZGllIFBfUkFOR0Ugc2VpbmVyIFdhZmZlIG1pbmRlc3RlbnMgZ2xlaWNoIGlzdC4KKworICAgIEVycmVpY2hiYXJlIFJhZXVtZSBzaW5kIGVudHdlZGVyIGRhcyBlbnZpcm9ubWVudCgpIG9kZXIgZGVyIGluCisgICAgUF9TSE9PVElOR19BUkVBIGZlc3RnZWxlZ3RlIFJhdW0uCisKK1NJRUhFIEFVQ0g6CisgICAgR2VuZXJlbGw6ICBQX0FNTVVOSVRJT04sIFBfU0hPT1RJTkdfV0MsIFBfU1RSRVRDSF9USU1FCisgICAgTWV0aG9kZW46ICBGaW5kUmFuZ2VkVGFyZ2V0KEwpLCBzaG9vdF9kYW0oTCksIGNtZF9zaG9vdChMKQorICAgIEdlYmlldDogICAgUF9SQU5HRSwgUF9UQVJHRVRfQVJFQQorICAgIFJhZXVtZTogICAgUF9ORVZFUl9DTEVBTgorICAgIFNvbnN0aWdlczogZmVybndhZmZlbgorCisyOS5KdWwgMjAxNCBHbG9pbnNvbgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2RvYy9wcm9wcy9QX1NIT09USU5HX1dDIGIvZG9jL3Byb3BzL1BfU0hPT1RJTkdfV0MKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMzVjYTIxNQotLS0gL2Rldi9udWxsCisrKyBiL2RvYy9wcm9wcy9QX1NIT09USU5HX1dDCkBAIC0wLDAgKzEsMzEgQEAKK1BfU0hPT1RJTkdfV0MKKworTkFNRToKKyAgICBQX1NIT09USU5HX1dDICAgICAic2hvb3Rpbmdfd2MiCisKK0RFRklOSUVSVCBJTjoKKyAgICA8Y29tYmF0Lmg+CisKK0JFU0NIUkVJQlVORzoKKyAgICBMZWd0IGluIGVpbmVyIEZlcm5rYW1wZndhZmZlIFVORCBpaHJlciBNdW5pdGlvbiBkaWUgV2FmZmVuc3RhZXJrZSBmZXN0LgorICAgIEJlaSBlaW5lbSBTY2h1c3Mgd2lyZCBkaWUgU3VtbWUga29tYmluaWVydCBtaXQgZGVyIEdlc2NoaWNrbGljaGtlaXQKKyAgICB6dXIgQmVyZWNobnVuZyBkZXIgQW5ncmlmZnN0YWVya2UgYmVudXR6dC4KKworQkVJU1BJRUxFOgorICAgIFNldFByb3AoUF9TSE9PVElOR19XQywgNzApOyAgICAgLy8gTGFuZ2JvZ2VuCisgICAgU2V0UHJvcChQX1NIT09USU5HX1dDLCA1MCk7ICAgICAvLyBLdXJ6Ym9nZW4KKworICAgIFNldFByb3AoUF9TSE9PVElOR19XQywgNDApOyAgICAgLy8gQmFtYnVzcGZlaWwKKyAgICBTZXRQcm9wKFBfU0hPT1RJTkdfV0MsIDYwKTsgICAgIC8vIEFsdW1pbml1bXBmZWlsCisKKyAgICAvLyBTbyBoYWV0dGVuIExhbmdib2dlbiBtaXQgQWx1bWluaXVtcGZlaWwgZWluZSBQX1NIT09USU5HX1dDIHZvbiA3MCs2MC4KKworU0lFSEUgQVVDSDoKKyAgICBHZW5lcmVsbDogIFBfQU1NVU5JVElPTiwgUF9TVFJFVENIX1RJTUUKKyAgICBNZXRob2RlbjogIEZpbmRSYW5nZWRUYXJnZXQoTCksIHNob290X2RhbShMKSwgY21kX3Nob290KEwpCisgICAgR2ViaWV0OiAgICBQX1JBTkdFLCBQX1NIT09USU5HX0FSRUEsIFBfVEFSR0VUX0FSRUEKKyAgICBXYWZmZW46ICAgIFBfV0VBUE9OX1RZUEUsIFBfV0MsIFBfRVFVSVBfVElNRSwgUF9OUl9IQU5EUworICAgIEthbXBmOiAgICAgQXR0YWNrKEwpLCBEZWZlbmQoTCksIFBfRElTQUJMRV9BVFRBQ0ssIFBfQVRUQUNLX0JVU1kKKyAgICBTb25zdGlnZXM6IGZlcm53YWZmZW4KKworMjkuSnVsIDIwMTQgR2xvaW5zb24KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9kb2MvcHJvcHMvUF9TSE9SVCBiL2RvYy9wcm9wcy9QX1NIT1JUCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmI2NTAyZDQKLS0tIC9kZXYvbnVsbAorKysgYi9kb2MvcHJvcHMvUF9TSE9SVApAQCAtMCwwICsxLDQxIEBACitQX1NIT1JUCitOQU1FOgorICAgICBQX1NIT1JUCQkJCSJzaG9ydCIKKworREVGSU5JRVJUIElOOgorICAgICAvc3lzL3RoaW5nL2Rlc2NyaXB0aW9uLmgKKworQkVTQ0hSRUlCVU5HOgorICAgICBEaWVzZSBQcm9wZXJ0eSBlbnRoYWVsdCBkaWUgS3VyemJlc2NocmVpYnVuZyBkZXMgT2JqZWt0ZXMgYWxzIFN0cmluZyAKKyAgICAgb2RlciBDbG9zdXJlIChkaWVzZSBtdXNzIGVpbmVuIFN0cmluZyB6dXJ1ZWNrZ2ViZW4pLgorCisgICAgIEFDSFRVTkc6IERpZSBLdXJ6YmVzY2hyZWlidW5nIHNvbGx0ZSBkYWJlaSB3ZWRlciBtaXQgZWluZW0KKwkgICAgICBTYXR6emVpY2hlbiBub2NoIG1pdCBlaW5lbSAiXG4iIGFiZ2VzY2hsb3NzZW4gc2VpbgorCSAgICAgIChkaWVzIHdpcmQgdm9uIGRlbiB6dXN0YWVuZGlnZW4gRnVua3Rpb25lbiBlcmxlZGlndCkuCisKKyAgICAgU2V0enQgbWFuIGRpZXNlIFByb3BlcnR5IGF1ZiAwLCBzbyBpc3QgZGFzIE9iamVrdCB1bnNpY2h0YmFyLCBhbGxlcmRpbmdzCisgICAgIGFuc3ByZWNoYmFyLCB3ZW5uIGRlciBTcGllbGVyIGVpbmUgSUQgZGVzIE9iamVrdGVzIGtlbm50LiBELmguIE9iamVrdGUKKyAgICAga29lbm5lbiBtaXRnZW5vbW1lbiwgd2VnZ2V3b3JmZW4gb2RlciBnZ2YuIGF1Y2ggYW5nZWdyaWZmZW4gd2VyZGVuLiBXaWxsCisgICAgIG1hbiBkaWVzIG5pY2h0LCBzb2xsdGUgbWFuIGRhcyBPYmpla3QgbWl0IFBfSU5WSVMgdW5zaWNodGJhciBtYWNoZW4uCisKKyAgICAgRGllc2UgUHJvcGVydHkgYmVzdGltbXQgZGllIEFuc2ljaHQgZGVzIE9iamVrdGVzIHZvbiBhdXNzZW4uIEZ1ZXIgZGllCisgICAgIElubmVuKGt1cnopYW5zaWNodCB2b24gUmFldW1lbiBtdXNzIG1hbiBQX0lOVF9MT05HIGJlbnV0emVuLgorCitCRU1FUktVTkdFTjoKKyAgICAgRGllIEZ1bmt0aW9uLCBkaWUgZGllIEt1cnpiZXNjaHJlaWJ1bmcgYXVzZ2lidCAoc2hvcnQoKSksIGZpbHRlcnQgUF9TSE9SVAorICAgICBkdXJjaCBwcm9jZXNzX3N0cmluZygpLiBWb24gZGVyIE51dHp1bmcgZGllc2VzIEZlYXR1cmVzIHdpcmQgaW4gbmV1ZW0KKyAgICAgQ29kZSBhYmdlcmF0ZW4uCisgICAgIFNvbGwgZWluZSBkeW4uIEt1cnpiZXNjaHJlaWJ1bmcgZ2VzY2hhZmZlbiB3ZXJkZW4sIGJpdHRlIGVpbmUKKyAgICAgRl9RVUVSWV9NRVRIT0QgZWluc2V0emVuIG9kZXIgc2hvcnQoKSBwYXNzZW5kIHVlYmVyc2NocmVpYmVuLgorCitCRUlTUElFTEU6CisgICAgIC8vIGVpbmUgQXh0IHNpZWh0IG5hdHVlcmxpY2ggc28gYXVzOgorICAgICBTZXRQcm9wKFBfU0hPUlQsICJFaW5lIEF4dCIpOworCitTSUVIRSBBVUNIOgorICAgICBBZWhubGljaGVzOglQX0xPTkcsIHNob3J0KCkKKyAgICAgU29uc3RpZ2VzOgkJUF9JTlRfU0hPUlQsIHByb2Nlc3Nfc3RyaW5nKCkKKworLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorMjcuMDUuMjAxNSwgWmVzc3RyYQorCmRpZmYgLS1naXQgYS9kb2MvcHJvcHMvUF9TSE9SVF9DV0QgYi9kb2MvcHJvcHMvUF9TSE9SVF9DV0QKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYTYzNDNhZQotLS0gL2Rldi9udWxsCisrKyBiL2RvYy9wcm9wcy9QX1NIT1JUX0NXRApAQCAtMCwwICsxLDggQEAKK05BTUU6CisgICAgUF9TSE9SVF9DV0QgICAgICAgICAgICAgICAgICAgInNob3J0X2N3ZCIgICAgICAgICAgICAgICAgICAgCisKK0RFRklOSUVSVCBJTjoKKyAgICAvc3lzL3NoZWxscy5oCisKK0JFU0NIUkVJQlVORzoKKyAgICAgLnJlYWRtZSBiZWkgY2QgYXVzZ2ViZW4gb2RlciBuaWNodApkaWZmIC0tZ2l0IGEvZG9jL3Byb3BzL1BfU0hPV0VNQUlMIGIvZG9jL3Byb3BzL1BfU0hPV0VNQUlMCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjgyZDEzNDgKLS0tIC9kZXYvbnVsbAorKysgYi9kb2MvcHJvcHMvUF9TSE9XRU1BSUwKQEAgLTAsMCArMSwxMCBAQAorTkFNRToKKyAgICAgUF9TSE9XRU1BSUwgICAgICAgICAgICAgICAgICAgICAgICAic2hvd2VtYWlsIgorCitERUZJTklFUlQgSU46CisgICAgIC9zeXMvcGxheWVyL2Jhc2UuaAorCitCRVNDSFJFSUJVTkc6CisgICAgIEVpbnRyYWcsIHdlciBkaWUgRS1NYWlsIGltICJmaW5nZXIiIHp1IHNlaGVuIGJla29tbWVuIHNvbGw6CisgICAgIDAsICJhbGxlIiwgImZyZXVuZGUiCisgICAgIEthbm4gZHVyY2ggImVtYWlsYW56ZWlnZSIgKC9zdGQvcGxheWVyL2Jhc2UuYykgZ2VhZW5kZXJ0IHdlcmRlbi4KZGlmZiAtLWdpdCBhL2RvYy9wcm9wcy9QX1NIT1dfQUxJQVNfUFJPQ0VTU0lORyBiL2RvYy9wcm9wcy9QX1NIT1dfQUxJQVNfUFJPQ0VTU0lORwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5jYjQ5Y2Y4Ci0tLSAvZGV2L251bGwKKysrIGIvZG9jL3Byb3BzL1BfU0hPV19BTElBU19QUk9DRVNTSU5HCkBAIC0wLDAgKzEsOCBAQAorTkFNRToKKyAgICBQX1NIT1dfQUxJQVNfUFJPQ0VTU0lORyAgICAgICAic2hvd19hbGlhc19wcm9jZXNzaW5nIiAgICAgICAKKworREVGSU5JRVJUIElOOgorICAgIC9zeXMvcGxheWVyLmgKKworQkVTQ0hSRUlCVU5HOgorICAgICBBcmJlaXQgZGVzIFBhcnNlcnMgYmVvYmFjaHRlbiAoZGVidWdnaW5nKQpkaWZmIC0tZ2l0IGEvZG9jL3Byb3BzL1BfU0hPV19FWElUUyBiL2RvYy9wcm9wcy9QX1NIT1dfRVhJVFMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOWM4ZDg3YgotLS0gL2Rldi9udWxsCisrKyBiL2RvYy9wcm9wcy9QX1NIT1dfRVhJVFMKQEAgLTAsMCArMSwxNSBAQAorTkFNRToKKyAgICBQX1NIT1dfRVhJVFMgICAgICAgICAgICAgICAgICAic2hvd19leGl0cyIKKworREVGSU5JRVJUIElOOgorICAgIC9zeXMvcGxheWVyL2Jhc2UuaAorCitCRVNDSFJFSUJVTkc6CisgICAgIEltIFNwaWVsZXIgZ2VzZXR6dCwgd2VubiBkZXIgU3BpZWxlciBkaWUgb2ZmZW5zaWNodGxpY2hlbiBBdXNnYWVuZ2UKKyAgICAgaW1tZXIgYXV0b21hdGlzY2ggc2VoZW4gd2lsbC4KKworU0lFSEUgQVVDSDoKKyAgICAgQWVobmxpY2hlczoJUF9ISURFX0VYSVRTCisgICAgIFNvbnN0aWdlczoJCUFkZEV4aXQoKSwgR2V0RXhpdHMoKSwgaW50X2xvbmcoKSwgaW50X3Nob3J0KCkKKworMTEuIE1haSAyMDA0IEdsb2luc29uClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZG9jL3Byb3BzL1BfU0hPV19JTlYgYi9kb2MvcHJvcHMvUF9TSE9XX0lOVgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi43M2EyZmZlCi0tLSAvZGV2L251bGwKKysrIGIvZG9jL3Byb3BzL1BfU0hPV19JTlYKQEAgLTAsMCArMSwxOSBAQAorUF9TSE9XX0lOVgorCitOQU1FOgorICAgICBQX1NIT1dfSU5WICJzaG93X2ludiIKKworREVGSU5JRVJUIElOOgorICAgICA8dGhpbmcvZGVzY3JpcHRpb24uaD4KKworQkVTQ0hSRUlCVU5HOgorICAgICBXZW5uIGRpZXNlIFByb3BlcnR5IGF1ZiBlaW5lbiBXZXJ0IHVuZ2xlaWNoIDAgZ2VzZXR6dCBpc3QsIHdpcmQgZGFzCisgICAgIE9iamVrdCwgc293ZWl0IGVzIHNpY2ggaW4gZWluZW0gU3BpZWxlciBiZWZpbmRldCwgaW4gZGVzc2VuCisgICAgIExhbmdiZXNjaHJlaWJ1bmcgYW5nZXplaWd0LiBadXIgQW56ZWlnZSB3aXJkIGRlciBOYW1lIGRlcyBPYmpla3RlcworICAgICB2ZXJ3ZW5kZXQuCisKK1NJRUhFIEFVQ0g6CisgICAgIC9zdGQvdGhpbmcvZGVzY3JpcHRpb24uYworCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCitMYXN0IG1vZGlmaWVkOiBTdW4gTWF5IDE5IDIwOjM2OjA1IDE5OTYgYnkgV2FyZ29uCmRpZmYgLS1naXQgYS9kb2MvcHJvcHMvUF9TSE9XX01TRyBiL2RvYy9wcm9wcy9QX1NIT1dfTVNHCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjg4NDExNTQKLS0tIC9kZXYvbnVsbAorKysgYi9kb2MvcHJvcHMvUF9TSE9XX01TRwpAQCAtMCwwICsxLDUxIEBACitQX1NIT1dfTVNHCitOQU1FOgorICAgIFBfU0hPV19NU0cgICAgICAgICAgICAgICAgICAgICAgICAgICJzaG93X21lc3NhZ2UiCisKK0RFRklOSUVSVCBJTjoKKyAgICAvc3lzL2xpdmluZy9wdXRfYW5kX2dldC5oCisKK0JFU0NIUkVJQlVORzoKKyAgICBNaXQgUF9TSE9XX01TRyBrYW5uIG1hbiBkaWUgTWVsZHVuZ2VuLCBkaWUgYmVpbSBWb3J6ZWlnZW4gZWluZXMgT2JqZWt0ZXMKKyAgICBhdXNnZWdlYmVuIHdlcmRlbiwgbW9kaWZpemllcmVuLgorCisgICAgRm9sZ2VuZGUgV2VydGUgc2luZCBtb2VnbGljaDoKKworICAgIG8gMAorICAgICAgRXMgd2lyZCBlaW5lIFN0YW5kYXJkbWVsZHVuZyBhdXNnZWdlYmVuLiBEaWVzIGlzdCBWb3JlaW5zdGVsbHVuZy4KKworICAgIG8gTk9fUE5HX01TRyAgICAgICAgPT0gLTEKKyAgICAgIEVzIHdpcmQga2VpbmVybGVpIE1lbGR1bmcgYXVzZ2VnZWJlbgorCisgICAgbyBFaW4gQXJyYXkgYXVzIFN0cmluZ3MKKyAgICAgIERlciBlcnN0ZSBTdHJpbmcgd2lyZCBhbiBkZW4gU3BpZWxlciBhdXNnZWdlYmVuLCBkZXIgendlaXRlCisgICAgICAob3B0aW9uYWxlKSBhbiBkZW4gUmF1bSwgZGVyIGRyaXR0ZSAoZWJlbmZhbGxzIG9wdGlvbmFsZSkgYW4gZGVuCisgICAgICBFbXBmYWVuZ2VyLgorCisgICAgICBEaWUgU3RyaW5ncyB3ZXJkZW4gZHVyY2ggZGllIEZ1bmt0aW9uIHJlcGxhY2VfcGVyc29uYWwoKSBnZXBhcnN0LgorICAgICAgICBPYmpla3QxIC0gU3BpZWxlcgorICAgICAgICBPYmpla3QyIC0gZGFzIE9iamVrdCwgZGFzIHVlYmVyZ2ViZW4gd2lyZAorICAgICAgICBPYmpla3QzIC0gRW1wZmFlbmdlcgorCisgICAgICBXaXJkIGRlciB6d2VpdGUgU3RyaW5nIG5pY2h0IGFuZ2VnZWJlbiwgZXJmb2xndCBrZWluZSBNZWxkdW5nIGFuIGRlbgorICAgICAgUmF1bS4gQmVpbSBGZWhsZW4gZGVzIGRyaXR0ZW4gZ2lidCBlcyBrZWluZSBNZWxkdW5nIGFuIGRlbiBFbXBmYWVuZ2VyLgorCitCRUlTUElFTDoKKyAgICBTZXRQcm9wKFBfU0hPV19NU0csICh7CisgICAgICAiRHUgaGFlbHRzdCBAV0VNMyBAV0VOMiB1bnRlciBkaWUgTmFzZS4iLAorICAgICAgIkBXRVIxIGhhZWx0IEBXRU0zIEBXRU5VMiB1bnRlciBkaWUgTmFzZS4iLAorICAgICAgIkBXRVIxIGhhZWx0IERpciBAV0VOVTIgdW50ZXIgZGllIE5hc2UuIgorICAgIH0pKTsKKworICAgIERhcyBmdWVocnQgYmVpIFVnYXJzICJ6ZWlnIHBldGVyIG1lZGFpbGxlIiB6dSBmb2xnZW5kZW4gTWVsZHVuZ2VuOgorCisgICAgVWdhcjogIkR1IGhhZWx0c3QgUGV0ZXIgZGllIE1lZGFpbGxlIHVudGVyIGRpZSBOYXNlLiIKKyAgICBSYXVtOiAiVWdhciBoYWVsdCBQZXRlciBlaW5lIE1lZGFpbGxlIHVudGVyIGRpZSBOYXNlLiIKKyAgICBQZXRlcjogIlVnYXIgaGFlbHQgRGlyIGVpbmUgTWVkYWlsbGUgdW50ZXIgZGllIE5hc2UuIgorCitTSUVIRSBBVUNIOgorICAgICBBZWhubGljaGVzOiBQX0RST1BfTVNHLCBQX1BVVF9NU0csIFBfUElDS19NU0csIFBfR0lWRV9NU0cKKyAgICAgU29uc3RpZ2VzOiAgcmVwbGFjZV9wZXJzb25hbChFKSwgc2hvdyhMKSwgc2hvd19vYmplY3RzKEwpLAorICAgICAgICAgICAgICAgICBzaG93X25vdGlmeShMKSwgL3N0ZC9saXZpbmcvcHV0X2FuZF9nZXQuYworCiszLiBKdW5pIDIwMDggQW15bnRob3IKZGlmZiAtLWdpdCBhL2RvYy9wcm9wcy9QX1NJQkxJTkdTIGIvZG9jL3Byb3BzL1BfU0lCTElOR1MKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMTVkMDk3NwotLS0gL2Rldi9udWxsCisrKyBiL2RvYy9wcm9wcy9QX1NJQkxJTkdTCkBAIC0wLDAgKzEsOSBAQAorTkFNRToKKyAgICBQX1NJQkxJTkdTICAgICAgICAgICAgICAgICAgICAgInNpYmxpbmdzIiAgICAgICAgICAgICAgICAgICAgIAorCitERUZJTklFUlQgSU46CisgICAgL3N5cy9wbGF5ZXIvYmFzZS5oCisKK0JFU0NIUkVJQlVORzoKKyAgICAgRW50aGFlbHQgZWluZW4gU3RyaW5nIG1pdCBkZW4gQmx1dHNicnVlZGVybiBlaW5lcyBTcGllbGVycworICAgICAoc29mZXJuIHZvcmhhbmRlbikuCmRpZmYgLS1naXQgYS9kb2MvcHJvcHMvUF9TSVpFIGIvZG9jL3Byb3BzL1BfU0laRQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5iNWZkYjcyCi0tLSAvZGV2L251bGwKKysrIGIvZG9jL3Byb3BzL1BfU0laRQpAQCAtMCwwICsxLDMxIEBACitOQU1FOgorICAgIFBfU0laRSAgICAgICAgICAgICAgICAgICAgICAgICJzaXplIiAgICAgICAgICAgICAgICAgICAgICAgIAorCitERUZJTklFUlQgSU46CisgICAgL3N5cy9wcm9wZXJ0aWVzLmgKKworQkVTQ0hSRUlCVU5HOgorICAgICBHcm9lc3NlIGRlcyBMZWJld2VzZW5zIGJ6dy4gTGFlbmdlIGRlciBXYWZmZSAoaW4gY20pLgorCisgICAgIFdpcmQga2VpbmUgV2FmZmVubGFlbmdlIGV4cGxpeml0IGFuZ2VnZWJlbiwgc28gc2luZCBkaWUgRGVmYXVsdHdlcnRlCisgICAgIGZ1ZXIgZGllIGVudHNwcmVjaGVuZGVuIFdhZmZlbnR5cGVuIGZvbGdlbmRlOgorCisgICAgCVdUX1NXT1JEICA6IDEwMAorICAgIAlXVF9BWEUgICAgOiAgODAKKyAgICAJV1RfQ0xVQiAgIDogIDgwCisgICAgCVdUX1NQRUFSICA6IDE4MAorICAgIAlXVF9LTklGRSAgOiAgMjAKKyAgICAJV1RfV0hJUCAgIDogMjAwCisgICAgCVdUX1NUQUZGICA6IDE1MAorCitCRU1FUktVTkdFTjoKKyAgICAgMS4gVWViZXJ0cmVpYnQgZXMgYml0dGUgbWl0IGRlciBHcm9lc3NlIG5pY2h0LCBhdWNoIHNlaHIgZ3Jvc3NlIE5QQ3MgCisgICAgICAgIHNvbGx0ZW4gbmljaHQgdWViZXIgMTAwMDAwMCBsaWVnZW4uIFNvbnN0IGtyaWVndCBkaWUgS2FyYXRlZ2lsZGUgCisgICAgICAgIFByb2JsZW1lLgorICAgICAyLiBOZWdhdGl2ZSBXZXJ0ZSBmdWVyIFBfU0laRSBzaW5kIG5pY2h0IG1vZWdsaWNoLCBkYSBkaWVzIHp1bSBlaW5lbgorICAgICAgICB2b2VsbGlnIHVuc2lubmlnIGlzdCB1bmQgenVtIGFuZGVyZW4gZXZ0bC4genUgUHJvYmxlbWVuIG1pdCBXYWZmZW4KKyAgICAgICAgZnVlaHJ0LCBkaWUgU2NoYWRlbiBpbiBBYmhhZW5naWdrZWl0IHZvbiBQX1NJWkUgbWFjaGVuIHVuZCBzaWNoCisgICAgICAgIGRhcmF1ZiB2ZXJsYXNzZW4sIGRhc3MgbnVyIHBvc2l0aXZlIFdlcnRlIHZvcmtvbW1lbi4KKworTEVUWlRFIEFFTkRFUlVORzoKKyAgICAyMDA2LTA5LTI5LCB2b24gWmVzc3RyYQpkaWZmIC0tZ2l0IGEvZG9jL3Byb3BzL1BfU0tJTExTIGIvZG9jL3Byb3BzL1BfU0tJTExTCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjAyYTc2YzcKLS0tIC9kZXYvbnVsbAorKysgYi9kb2MvcHJvcHMvUF9TS0lMTFMKQEAgLTAsMCArMSwxNSBAQAorTkFNRToKKwlQX1NLSUxMUwkJCSJza2lsbHMiICAgICAgICAgICAgICAgICAgICAgIAorCitERUZJTklFUlQgSU46CisJL3N5cy9wbGF5ZXIvc2tpbGxzLmgKKworQkVTQ0hSRUlCVU5HOgorCURpZXNlIFByb3BlcnR5IHNvbGx0ZSBuaWNodCBtZWhyIHZlcndlbmRldCB3ZXJkZW4uIFNpZSB3dXJkZQorCXZvbGxzdGFlbmRpZyBkdXJjaCBQX05FV1NLSUxMUyBlcnNldHp0LgorCitTSUVIRSBBVUNIOgorCVBfTkVXX1NLSUxMUworCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCitMYXN0IG1vZGlmaWVkOiBXZWQgSmFuIDE0IDE5OjE3OjA2IDE5OTggYnkgUGF0cnluCmRpZmYgLS1naXQgYS9kb2MvcHJvcHMvUF9TS0lMTF9BVFRSSUJVVEVTIGIvZG9jL3Byb3BzL1BfU0tJTExfQVRUUklCVVRFUwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi42ZWI1Yjk3Ci0tLSAvZGV2L251bGwKKysrIGIvZG9jL3Byb3BzL1BfU0tJTExfQVRUUklCVVRFUwpAQCAtMCwwICsxLDUwIEBACitOQU1FOgorICAgIFBfU0tJTExfQVRUUklCVVRFUyAgICAgICAgInNraWxsX2F0dHIiCisKK0RFRklOSUVSVCBJTjoKKyAgICAvc3lzL2xpdmluZy9za2lsbF9hdHRyaWJ1dGVzLmgKKworQkVTQ0hSRUlCVU5HOgorICAgIEluIGRpZXNlciBQcm9wIHN0ZWhlbiBhbGxlIG5pY2h0LXBlcm1hbmVudGVuIE1vZGlmaWthdG9yZW4gZGVyCisgICAgU2tpbGwtQXR0cmlidXRlLgorICAgIERpZSBEYXRlbnN0cnVrdHVyIGlzdCBlaW4gTWFwcGluZyBtaXQgZGVuIFNBLU5hbWVuIGFscyBTY2hsdWVzc2VsIHVuZAorICAgIGpld2VpbHMgZHJlaSBXZXJ0ZW4gcHJvIFNjaGx1ZXNzZWwuCisgICAgRGVyIGVyc3RlIFdlcnQgaXN0IGVpbiBBcnJheSBtaXQgZHJlaSBXZXJ0ZW46IGRlciBTdW1tZSBkZXIgc3RhdC4KKyAgICBNb2RpZmllciwgZGVtIFplaXRwdW5rdCBhbiBkZW0gZGllcyBTdW1tZSB1bmd1ZWx0aWcgd2lyZCB1bmQgZGVyCisgICAgR2VzYW10emFobCBha3RpdmVyIE1vZGlmaWthdG9yZW4uCisgICAgRGVyIHp3ZWl0ZSBXZXJ0IGVudGhhZWx0IGVpbiBNYXBwaW5nIG1pdCBhbGxlbiBzdGF0aXNjaGVuIE1vZGlmaWthdG9yZW4KKyAgICB1bmQgZGVuIE9iamVrdGVuIGRpZXNlciBNb2RzIGFscyBTY2hsdWVzc2VsLiBEaWUgYmVpZGVuIFdlcnRlIGRpZXNlcworICAgIE1hcHBpbmdzIHNpbmQgZGVyIFdlcnQgZGVzIE1vZGlmaWthdG9ycyAoaW50KSB1bmQgZGllIEFibGF1ZnplaXQgKGludCkuCisgICAgRGVyIGRyaXR0ZSBXZXJ0IGVudGhhZWx0IGVpbiBNYXBwaW5nIG1pdCBhbGxlbiBkeW5hbWlzY2hlbgorICAgIE1vZGlmaWthdG9yZW4gdW5kIGRlbiBPYmpla3RlbiBkaWVzZXIgTW9kcyBhbHMgU2NobHVlc3NlbC4gRGllIGJlaWRlbgorICAgIFdlcnRlIGRpZXNlcyBNYXBwaW5ncyBzaW5kIGRpZSB6dSBydWZlbmRlIENsb3N1cmUgKGNsb3N1cmUpIHVuZCBkaWUKKyAgICBBYmxhdWZ6ZWl0IGRlcyBNb2RzIChpbnQpLgorCisgICAgKFsgU0FfQVRUUjogKHtTdW1tZV9TdGF0X01vZGlmaWVyLCBaZWl0cHVua3QsIEFuemFobE1vZGlmaWVyLCB9KTsKKyAgICAgICAgICAgICAgICAoWyBvYjE6dmFsdWU7ZHVyYXRpb24sCisgICAgICAgICAgICAgICAgICAgb2IyOnZhbHVlO2R1cmF0aW9uLCAuLi5dKTsgIC8vIHN0YXQuIE1vZGlmaWVyCisgICAgICAgICAgICAgICAgKFsgb2IxOmNsb3N1cmU7ZHVyYXRpb24sCisgICAgICAgICAgICAgICAgICAgb2IyOmNsb3N1cmU7ZHVyYXRpb24sIC4uLl0pICAgICAvLyBkeW4uIE1vZGlmaWVyCisgICAgICAgICAgICAgICAgLAorICAgICAgIFNBX0FUVFIyOiAoey4uLn0pOyAoW10pOyAoW10pLAorICAgICAgIFNBX0FUVFIzOiAoey4uLn0pOyAoW10pOyAoW10pLAorICAgIF0pCisKK0JFTUVSS1VOR0VOOgorICAgIERpZXNlIFByb3BlcnR5IGRhcmYgQVVGIEdBUiBLRUlORU4gRkFMTCBwZXIgSGFuZCBtYW5pcHVsaWVydCB3ZXJkZW4sCisgICAgZGFmdWVyIGdpYnQgZXMgZGllIEZ1bmt0aW9uZW4gTW9kaWZ5U2tpbGxBdHRyaWJ1dGUoKSB1bmQKKyAgICBSZW1vdmVTa2lsbEF0dHJpYnV0ZU1vZGlmaWVyKCkuCisgICAgWnVtIEF1c2xlc2VuIHN0ZWhlbiBRdWVyeVNraWxsQXR0cmlidXRlKCkgdW5kCisgICAgUXVlcnlTa2lsbEF0dHJpYnV0ZU1vZGlmaWVyKCkgenVyIFZlcmZ1ZWd1bmcuCisKK1NJRUhFIEFVQ0g6CisgICAgU2tpbGxzIExlcm5lbjogIExlYXJuU2tpbGwsIE1vZGlmeVNraWxsLCBMaW1pdEFiaWxpdHkKKyAgICAqIE51dHp1bmc6ICAgICAgVXNlU3BlbGwsIFVzZVNraWxsCisgICAgKiBBYmZyYWdlbjogICAgIFF1ZXJ5U2tpbGwsIFF1ZXJ5U2tpbGxBYmlsaXR5CisgICAgKiBNb2RpZmlrYXRpb246IE1vZGlmeVNraWxsQXR0cmlidXRlLCBRdWVyeVNraWxsQXR0cmlidXRlLAorICAgICAgICAgICAgICAgICAgICBRdWVyeVNraWxsQXR0cmlidXRlTW9kaWZpZXIsIFJlbW92ZVNraWxsQXR0cmlidXRlTW9kaWZpZXIKKyAgICAgICogUHJvcGVydGllczogUF9TS0lMTF9BVFRSSUJVVEVTLCBQX1NLSUxMX0FUVFJJQlVURV9PRkZTRVRTCisgICAgKiBzb25zdGlnOiAgICAgIHNwcnVjaGVybXVlZHVuZywgc2tpbGxfaW5mb19saXN0ZQorICAgICogUHJvcGVydGllczogICBQX05FV1NLSUxMUworCisxMy4wOS4yMDA4LCBaZXNzdHJhClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZG9jL3Byb3BzL1BfU0tJTExfQVRUUklCVVRFX09GRlNFVFMgYi9kb2MvcHJvcHMvUF9TS0lMTF9BVFRSSUJVVEVfT0ZGU0VUUwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4yNTY4Zjc2Ci0tLSAvZGV2L251bGwKKysrIGIvZG9jL3Byb3BzL1BfU0tJTExfQVRUUklCVVRFX09GRlNFVFMKQEAgLTAsMCArMSwzMiBAQAorTkFNRToKKyAgICBQX1NLSUxMX0FUVFJJQlVURV9PRkZTRVRTICAgICAgICJza2lsbF9hdHRyX29mZnNldHMiICAgICAgICAgICAgICAgICAgICAgICAgCisKK0RFRklOSUVSVCBJTjoKKyAgICAvc3lzL2xpdmluZy9za2lsbF9hdHRyaWJ1dGVzLmgKKworQkVTSFJFSUJVTkc6CisKKyAgICBEZXIgV2VydCBkZXIgUHJvcGVydHkgaXN0IGVpbiBNYXBwaW5nOiAoW0F0dHJpYnV0bmFtZTogV2VydF0pCisgICAgSW4gZGllc2VyIFByb3BlcnR5IHN0ZWhlbiBwZXJtYW5lbnRlIEFid2VpY2h1bmdlbiBkZXIgU2tpbGxhdHRyaWJ1dGUKKyAgICB2b20gU3RhbmRhcmR3ZXJ0IDEwMC4KKworICAgIFp1IGRlbiBNb2VnbGljaGVuIEF0dHJpYnV0d2VydGVuLCBzaWVoZSBQX1NLSUxMX0FUVFJJQlVURVMuCisKKyAgICBEaWUgV2VydGUgZHVlcmZlbiB6d2lzY2hlbiAxMCB1bmQgMTAwMCBsaWVnZW4uCisKK0JFTUVSS1VORzoKKyAgICBEaWVzZSBQcm9wZXJ0eSBzb2xsdGUgQVVGIEdBUiBLRUlORU4gRkFMTCBpbiBlaW5lbSBTcGllbGVyIGdlc2V0enQKKyAgICB3ZXJkZW4sIG9obmUgUnVlY2tzcHJhY2hlbiBtaXQgYWxsZXJob2VjaHN0ZW4gU3RlbGxlbiEKKworU0lFSEUgQVVDSDoKKyAgICBTa2lsbHMgTGVybmVuOiAgTGVhcm5Ta2lsbCwgTW9kaWZ5U2tpbGwsIExpbWl0QWJpbGl0eQorICAgICogTnV0enVuZzogICAgICBVc2VTcGVsbCwgVXNlU2tpbGwKKyAgICAqIEFiZnJhZ2VuOiAgICAgUXVlcnlTa2lsbCwgUXVlcnlTa2lsbEFiaWxpdHkKKyAgICAqIE1vZGlmaWthdGlvbjogTW9kaWZ5U2tpbGxBdHRyaWJ1dGUsIFF1ZXJ5U2tpbGxBdHRyaWJ1dGUsCisgICAgICAgICAgICAgICAgICAgIFF1ZXJ5U2tpbGxBdHRyaWJ1dGVNb2RpZmllciwgUmVtb3ZlU2tpbGxBdHRyaWJ1dGVNb2RpZmllcgorICAgICAgKiBQcm9wZXJ0aWVzOiBQX1NLSUxMX0FUVFJJQlVURVMsIFBfU0tJTExfQVRUUklCVVRFX09GRlNFVFMKKyAgICAqIHNvbnN0aWc6ICAgICAgc3BydWNoZXJtdWVkdW5nLCBza2lsbF9pbmZvX2xpc3RlCisgICAgKiBQcm9wZXJ0aWVzOiAgIFBfTkVXU0tJTExTCisKKzMxLjEyLjIwMTMsIFplc3N0cmEKKwpkaWZmIC0tZ2l0IGEvZG9jL3Byb3BzL1BfU01FTExTIGIvZG9jL3Byb3BzL1BfU01FTExTCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmI1MTBjZTEKLS0tIC9kZXYvbnVsbAorKysgYi9kb2MvcHJvcHMvUF9TTUVMTFMKQEAgLTAsMCArMSwyNCBAQAorTkFNRToKKyAgICBQX1NNRUxMUyAgICAgICAgICAgICJzbWVsbF9kZXRhaWxzIgorCitERUZJTklFUlQgSU46CisgICAgL3N5cy90aGluZy9kZXNjcmlwdGlvbi5oCisKK0JFU0NIUkVJQlVORzoKKyAgICBEaWVzZSBQcm9wZXJ0eSBlbnRzcHJpY2h0IGRlbSBQX0RFVEFJTFMgZnVlciBTdGFuZGFyZGRldGFpbHMsCisgICAgbnVyIHdlcmRlbiBoaWVyaW4gR2VydWVjaGUgZ2VzcGVpY2hlcnQ6CisgICAgRGllc2UgUHJvcGVydHkgZW50aGFlbHQgZWluIE1hcHBpbmcsIGluIGRlciBEZXRhaWxzIGltIE9iamVrdAorICAgIGRlZmluaWVydCB3ZXJkZW4gdW5kIEJlc2NocmVpYnVuZ2VuLCBkaWUgYXVzZ2VnZWJlbiB3ZXJkZW4sIHdlbm4gbWFuCisgICAgc2ljaCBkaWVzZSBEZXRhaWxzIGFuc2NoYXV0LgorCitCRU1FUktVTkdFTjoKKyAgICBNYW4gc29sbHRlIGRpZXNlIFByb3BlcnR5IG5pY2h0IHBlciBIYW5kIHZlcmFlbmRlcm4sIHNvbmRlcm4gZGllCisgICAgRnVua3Rpb25lbiBudXR6ZW4uCisKK1NJRUhFIEFVQ0g6CisgICAgU2V0emVuOiAgICBBZGRTbWVsbHMoKQorICAgIExvZXNjaGVuOiAgUmVtb3ZlU21lbGxzKCkKKyAgICBBZWhubGljaDogIEFkZERldGFpbCgpLCBQX0RFVEFJTFMKKyAgICBTb25zdGlnZXM6IEdldERldGFpbCgpLCBicmVha19zdHJpbmcoKQorCisyNy4gSmFuIDIwMTMgR2xvaW5zb24KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9kb2MvcHJvcHMvUF9TTk9PUEZMQUdTIGIvZG9jL3Byb3BzL1BfU05PT1BGTEFHUwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi40YzQ3ZTM5Ci0tLSAvZGV2L251bGwKKysrIGIvZG9jL3Byb3BzL1BfU05PT1BGTEFHUwpAQCAtMCwwICsxLDggQEAKK05BTUU6CisgICAgUF9TTk9PUEZMQUdTICAgICAgICAgICAgICAgICAgInNub29wZmxhZ3MiICAgICAgICAgICAgICAgICAgCisKK0RFRklOSUVSVCBJTjoKKyAgICAvc3lzL3Nub29waW5nLmgKKworQkVTQ0hSRUlCVU5HOgorICAgICoqKiBLRUlORSBCRVNDSFJFSUJVTkcgVk9SSEFOREVOICoqKgpkaWZmIC0tZ2l0IGEvZG9jL3Byb3BzL1BfU09VTkRTIGIvZG9jL3Byb3BzL1BfU09VTkRTCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjliOWEzNTAKLS0tIC9kZXYvbnVsbAorKysgYi9kb2MvcHJvcHMvUF9TT1VORFMKQEAgLTAsMCArMSwyNCBAQAorTkFNRToKKyAgICBQX1NPVU5EUyAgICAgICAgICAgICJzb3VuZF9kZXRhaWxzIgorCitERUZJTklFUlQgSU46CisgICAgL3N5cy90aGluZy9kZXNjcmlwdGlvbi5oCisKK0JFU0NIUkVJQlVORzoKKyAgICBEaWVzZSBQcm9wZXJ0eSBlbnRzcHJpY2h0IGRlbSBQX0RFVEFJTFMgZnVlciBTdGFuZGFyZGRldGFpbHMsICAgCisgICAgbnVyIHdlcmRlbiBoaWVyaW4gR2VyYXVlc2NoZSBnZXNwZWljaGVydDoKKyAgICBEaWVzZSBQcm9wZXJ0eSBlbnRoYWVsdCBlaW4gTWFwcGluZywgaW4gZGVyIERldGFpbHMgaW0gT2JqZWt0CisgICAgZGVmaW5pZXJ0IHdlcmRlbiB1bmQgQmVzY2hyZWlidW5nZW4sIGRpZSBhdXNnZWdlYmVuIHdlcmRlbiwgd2VubiBtYW4KKyAgICBzaWNoIGRpZXNlIERldGFpbHMgYW5zY2hhdXQuCisKK0JFTUVSS1VOR0VOOgorICAgIE1hbiBzb2xsdGUgZGllc2UgUHJvcGVydHkgbmljaHQgcGVyIEhhbmQgdmVyYWVuZGVybiwgc29uZGVybiBkaWUKKyAgICBGdW5rdGlvbmVuIG51dHplbi4KKworU0lFSEUgQVVDSDoKKyAgICBTZXR6ZW46ICAgIEFkZFNvdW5kcygpCisgICAgTG9lc2NoZW46ICBSZW1vdmVTb3VuZHMoKQorICAgIEFlaG5saWNoOiAgQWRkRGV0YWlsKCksIFBfREVUQUlMUworICAgIFNvbnN0aWdlczogR2V0RGV0YWlsKCksIGJyZWFrX3N0cmluZygpCisKKzI3LiBKYW4gMjAxMyBHbG9pbnNvbgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2RvYy9wcm9wcy9QX1NQIGIvZG9jL3Byb3BzL1BfU1AKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMDJiYWI2NQotLS0gL2Rldi9udWxsCisrKyBiL2RvYy9wcm9wcy9QX1NQCkBAIC0wLDAgKzEsMjMgQEAKK05BTUU6CisgICAgUF9TUCAgICAgICAgICAgICAgICAgICAgICAgICAgInNwIgorCitERUZJTklFUlQgSU46CisgICAgL3N5cy9saXZpbmcvbGlmZS5oCisKK0JFU0NIUkVJQlVORzoKKworICAgICAtIExlYmV3ZXNlbgorICAgICAgIEFuemFobCBkZXIgS29uemVudHJhdGlvbnNwdW5rdGUgZGVzIFdlc2Vucy4KKworICAgICAtIFNwZWlzZW4vS25laXBlbgorICAgICAgIEhlaWx3aXJrdW5nIGVpbmVyIFBvcnRpb24gZGVyIFNwZWlzZSBhdWYgZGllIEtvbnplbnRyYXRpb25zcHVua3RlCisgICAgICAgZGVzIEtvbnN1bWVudGVuCisKK1NJRUhFIEFVQ0g6CisgICAgIFByb3BzOgkJUF9NQVhfU1AKKyAgICAgVmVyYWVuZGVydW5nOglyZWR1Y2Vfc3BlbGxfcG9pbnRzKCksIHJlc3RvcmVfc3BlbGxfcG9pbnRzKCkKKwkJCWJ1ZmZlcl9zcCgpCisgICAgIFNwZWlzZW4vS25laXBlbjogICBzdGQvcHViLCB3aXovZm9vZCwgY29uc3VtZQorCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KK0xhc3QgbW9kaWZpZWQ6IFRodSBPY3QgMjggMTI6MTU6MDAgMjAxMCBieSBDYWxkcmEKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9kb2MvcHJvcHMvUF9TUEVDSUFMX0RFVEFJTFMgYi9kb2MvcHJvcHMvUF9TUEVDSUFMX0RFVEFJTFMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMmViMjEyMwotLS0gL2Rldi9udWxsCisrKyBiL2RvYy9wcm9wcy9QX1NQRUNJQUxfREVUQUlMUwpAQCAtMCwwICsxLDIzIEBACitOQU1FOgorICAgIFBfU1BFQ0lBTF9ERVRBSUxTICAgICAgICAgICAgICJzcGVjaWFsX2RldGFpbHMiICAgICAgICAgICAgIAorCitERUZJTklFUlQgSU46CisgICAgL3N5cy90aGluZy9kZXNjcmlwdGlvbi5oCisKK0JFU0NIUkVJQlVORzoKKyAgICBNYXBwaW5nIHZvbiBEZXRhaWxzLCBkaWUgYmVpbSBBbnNjaGF1ZW4gZWluZSBGdW5rdGlvbiBzdGFydGVuLgorCitCRU1FUktVTkdFTjoKKyAgICBEaWVzIGlzdCBrZWluZSAiZWNodGUiIFByb3BlcnR5LiBEaWUgRGF0ZW4gd2VyZGVuIGJlaSBkZXIgQWJmcmFnZSBpbiBlaW5lcgorICAgIFF1ZXJ5bWV0aG9kZSBkeW5hbWlzY2ggYXVzIFBfREVUQUlMUyBleHRyYWhpZXJ0LiBEZW1lbnRzcHJlY2hlbmQKKyAgICBmdW5rdGlvbmllcnQgZXMgYXVjaCBuaWNodCwgaGllciBlaW5lIFF1ZXJ5LSBvZGVyIFNldG1ldGhvZGUgdm9uIGF1c3NlbgorICAgIGRyYXVmIHp1IGxlZ2VuLgorCitTSUVIRSBBVUNIOgorICAgIFNldHplbjogICAgQWRkRGV0YWlsKCkKKyAgICBMb2VzY2hlbjogIFJlbW92ZURldGFpbCgpCisgICAgRGF0ZW46ICAgICBQX0RFVEFJTFMKKyAgICBWZXJhbHRldDogIEFkZFNwZWNpYWxEZXRhaWwoKSwgUmVtb3ZlU3BlY2lhbERldGFpbCgpCisgICAgU29uc3RpZ2VzOiBHZXREZXRhaWwoKSwgYnJlYWtfc3RyaW5nKCkKKworMjcuIEphbiAyMDEzIEdsb2luc29uClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZG9jL3Byb3BzL1BfU1BFQ0lBTF9FWElUUyBiL2RvYy9wcm9wcy9QX1NQRUNJQUxfRVhJVFMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMTkxNDM2NgotLS0gL2Rldi9udWxsCisrKyBiL2RvYy9wcm9wcy9QX1NQRUNJQUxfRVhJVFMKQEAgLTAsMCArMSw5IEBACitOQU1FOgorICAgIFBfU1BFQ0lBTF9FWElUUyAgICAgICAgICAgICAgICJzcGVjaWFsX2V4aXRzIiAgICAgICAgICAgICAgIAorCitERUZJTklFUlQgSU46CisgICAgL3N5cy9wcm9wZXJ0aWVzLmgKKworQkVTQ0hSRUlCVU5HOgorICAgICBEaXRvLCBhYmVyIGFuc3RhdHQgZGVzIE5hY2hiYXJyYXVtcyB3aXJkIGVpbmUgRnVua3Rpb24gKGltIFJhdW0pCisgICAgIGFuZ2VnZWJlbSwgZGllIGJlaSBFaW5nYWJlIGRlciBSaWNodHVuZyBhdXNnZWZ1ZWhydCB3aXJkLgpkaWZmIC0tZ2l0IGEvZG9jL3Byb3BzL1BfU1BFTExSQVRFIGIvZG9jL3Byb3BzL1BfU1BFTExSQVRFCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjE2NzJhMzMKLS0tIC9kZXYvbnVsbAorKysgYi9kb2MvcHJvcHMvUF9TUEVMTFJBVEUKQEAgLTAsMCArMSw4IEBACitOQU1FOgorICAgIFBfU1BFTExSQVRFICAgICAgICAgICAgICAgICAgICJzcGVsbHJhdGUiICAgICAgICAgICAgICAgICAgIAorCitERUZJTklFUlQgSU46CisgICAgL3N5cy9wcm9wZXJ0aWVzLmgKKworQkVTQ0hSRUlCVU5HOgorICAgICBOUEMtU3BlbGxyYXRlIChpbiAlKQpkaWZmIC0tZ2l0IGEvZG9jL3Byb3BzL1BfU1BFTExTIGIvZG9jL3Byb3BzL1BfU1BFTExTCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjE3MTEyZmIKLS0tIC9kZXYvbnVsbAorKysgYi9kb2MvcHJvcHMvUF9TUEVMTFMKQEAgLTAsMCArMSw4IEBACitOQU1FOgorICAgIFBfU1BFTExTICAgICAgICAgICAgICAgICAgICAgICJzcGVsbHMiICAgICAgICAgICAgICAgICAgICAgIAorCitERUZJTklFUlQgSU46CisgICAgL3N5cy9wcm9wZXJ0aWVzLmgKKworQkVTQ0hSRUlCVU5HOgorICAgICBOUEMtU3BlbGxzCmRpZmYgLS1naXQgYS9kb2MvcHJvcHMvUF9TUF9ERUxBWSBiL2RvYy9wcm9wcy9QX1NQX0RFTEFZCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjg0ZjYzNzIKLS0tIC9kZXYvbnVsbAorKysgYi9kb2MvcHJvcHMvUF9TUF9ERUxBWQpAQCAtMCwwICsxLDEwIEBACitOQU1FOgorICAgIFBfU1BfREVMQVkgICAgICAgICAgICAgICAgICJzcF9kZWxheSIgICAgICAgICAgICAgICAgICAgICAKKworREVGSU5JRVJUIElOOgorICAgIC9zeXMvbGl2aW5nL2xpZmUuaAorCitCRVNDSFJFSUJVTkc6CisgICAgIEFuemFobCBkZXIgaGVhcnRfYmVhdHMsIGJpcyBkaWUgTWFnaWVwdW5rdGUgdW0gZWluZW4gUHVua3Qgc3RlaWdlbi4KKyAgICAgQWVuZGVydW5nZW4gZGllc2VyIFByb3BlcnR5IGluIFNwaWVsZXJuIGJlZHVlcmZlbiBkZXIgCisgICAgIEdlbmVobWlndW5nIGRlcyBFTSBmdWVyIEJhbGFuY2UuCmRpZmYgLS1naXQgYS9kb2MvcHJvcHMvUF9TVEFSVF9IT01FIGIvZG9jL3Byb3BzL1BfU1RBUlRfSE9NRQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4yNWZmZjJjCi0tLSAvZGV2L251bGwKKysrIGIvZG9jL3Byb3BzL1BfU1RBUlRfSE9NRQpAQCAtMCwwICsxLDggQEAKK05BTUU6CisgICAgUF9TVEFSVF9IT01FICAgICAgICAgICAgICAgICAgInN0YXJ0X2hvbWUiICAgICAgICAgICAgICAgICAgCisKK0RFRklOSUVSVCBJTjoKKyAgICAvc3lzL3BsYXllci9iYXNlLmgKKworQkVTQ0hSRUlCVU5HOgorICAgICBSYXVtLCBpbiBkZW0gZGVyIFNwaWVsZXIgbmFjaCBkZW0gRWlubG9nZ2VuIGxhbmRlbiBzb2xsCmRpZmYgLS1naXQgYS9kb2MvcHJvcHMvUF9TVERfT0JKRUNUIGIvZG9jL3Byb3BzL1BfU1REX09CSkVDVApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44N2UyMWRhCi0tLSAvZGV2L251bGwKKysrIGIvZG9jL3Byb3BzL1BfU1REX09CSkVDVApAQCAtMCwwICsxLDM4IEBACitOQU1FOgorICAgIFBfU1REX09CSkVDVCAgICAgICAgICAgICAgICAgICJzdGRfb2JqZWN0IiAgICAgICAgICAgICAgICAgIAorCitERUZJTklFUlQgSU46CisgICAgL3N5cy92X2NvbXBpbGVyLmgKKworQkVTQ0hSRUlCVU5HOgorICAgRW50aGFlbHQgZGVuIE5hbWVuIGVpbmVzIEZpbGVzIHdlbGNoZXMgYWxzIFN0YW5kYXJkLU9iamVrdCBmdWVyIGRlbiAKKyAgIFZpcnR1YWwgQ29tcGlsZXIgZ2VsdGVuIHNvbGwuCisKKyAgIEluIGRpZXNlbSBGaWxlIHdlcmRlbiBkYXMgZ2VuZXJlbGxlIEF1c3NlaGVuLCBBdXNnYWVuZ2UsIEZ1bmt0aW9uZW4KKyAgIHVzdy4gZGVyIFZDLWdlbmVyaWVydGVuIFJhZXVtZSAvIE9iamVrdGUgZmVzdGdlbGVndC4KKworICAgRGllc2VzIEZpbGUgaXN0IGVpbiAnbm9ybWFsZXMnIC5jIC0gRmlsZSwgd2VsY2hlcyBnZWNsb250IHdpcmQgdW5kCisgICBhbnNjaGxpZXNzZW5kIHVtYmVuYW5udCB3aXJkLgorICAgCisgICBHYW56IHdpY2h0aWc6IEZhbGxzIGV1ZXIgU3RhbmRhcmRvYmpla3QgKGRpcmVrdCBvZGVyIGluZGlyZWt0KSB2b24KKyAgIC9zdGQvcm9vbS5jIGVyYnQsIHNvbGx0ZXQgaWhyIGRhcmF1ZiBhY2h0ZW4sIGRhc3MgZXVlciBPYmpla3QgYXVzc2VyIGRlbQorICAgY3JlYXRlKCkgbm9jaCBlaW5lIHdlaXRlcmUgKGJlbGllYmlnZSkgRnVua3Rpb24gaGF0LiAgCisgICBBbnNvbnN0ZW4gd3VlcmRlIGRhcyBQcm9ncmFtbSBldXJlcyBTdGFuZGFyZG9iamVrdHMgYXV0b21hdGlzY2ggZHVyY2gKKyAgIC9zdGQvcm9vbS5jIGVyc2V0enQsIHdhcyBpbiBkZXIgUmVnZWwgenUgc2Nod2VyIHp1IGZpbmRlbmVuIEJ1Z3MgZnVlaHJ0LgorCitCRUlTUElFTDoKKyAgIChjcmVhdGUgZWluZXMgVkNzKQorICAgcHJvdGVjdGVkIHZvaWQgY3JlYXRlKCkgeworICAgICAuLi4KKyAgICAgU2V0UHJvcChQX1NURF9PQkpFQ1QsIi9kL3JlZ2lvbi9tYWdpZXIvdmMvc3RkX3JhdW0iKTsKKyAgICAgLi4uCisgICB9CisKKyAgIFdhcyBpbiBkaWVzZW0gc3RkX3JhdW0uYyBudW4gc3RlaHQsIHdpcmQgaW4gamVkZW0gVkMtQ2xvbmUKKyAgIHZlcmZ1ZWdiYXIuIFNlaSBlcyBEZXRhaWxzLCBHZXJ1ZWNoZSwgYXVjaCBPYmpla3RlIGRpZSBwZXIgCisgICBBZGRJdGVtIGVpbmdlYnVuZGVuIHNpbmQsIC4uLgorCitTSUVIRSBBVUNIOgorICAgUF9DT01QSUxFUl9QQVRILCB2aXJ0dWFsX2NvbXBpbGVyCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorTGV0enRlIEFlbmRlcnVuZzogMjIuMTAuMDcgdm9uIFplc3N0cmEKZGlmZiAtLWdpdCBhL2RvYy9wcm9wcy9QX1NUT1JFX0NPTlNVTUUgYi9kb2MvcHJvcHMvUF9TVE9SRV9DT05TVU1FCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjdiNjU2NDEKLS0tIC9kZXYvbnVsbAorKysgYi9kb2MvcHJvcHMvUF9TVE9SRV9DT05TVU1FCkBAIC0wLDAgKzEsNTEgQEAKK05BTUU6CisJUF9TVE9SRV9DT05TVU1FCQkJInN0b3JlX2NvbnN1bWUiCisKK0RFRklOSUVSVCBJTjoKKwkvc3lzL2JhbmsuaAorCitCRVNDSFJFSUJVTkc6CisJRGllc2UgUHJvcGVydHkgaXN0IGVudHNjaGVpZGVuZCBkYWZ1ZXIsIHdpZXZpZWwgUHJvemVudCBhbiBPYmpla3RlbgorCWJlaSBqZWRlbSBSZXNldCBpbiBlaW5lbSBMYWdlciBlaW5lcyBMYWRlbnMgdmVybmljaHRldCB3ZXJkZW4uIERpZXMKKwlnZXNjaGllaHQgYXVzIFNwZWljaGVyLSB1bmQgTGFnZ3J1ZW5kZW4uIEVzIHZlcmJsZWlidCBkYWJlaSBqZWRvY2gKKwllaW5lIEdydW5kbWVuZ2UgYW4gT2JqZWt0ZW4sIGRlcmVuIEFuemFobCBpbiBkZXIgUHJvcGVydHkKKwlQX01JTl9TVE9DSyBmZXN0Z2VoYWx0ZW4gaXN0LiBTdGFuZGFyZHdlcnQgZnVlciBQX1NUT1JFX0NPTlNVTUUgaXN0CisJaGllcmJlaSAzMCUsIGFiZXIgaW4gb2Z0IGJlbnV0enRlbiBMYWVkZW4ga2FubiBtYW4gZG9ydCBydWhpZyBlaW5lbgorCWhvZWhlcmVuIFdlcnQgZWludHJhZ2VuLiBFcmxhdWJ0IHNpbmQgV2VydGUgendpc2NoZW4gMCUgdW5kIDEwMCUuCisJQXVmZ2VyYWV1bXQgd2VyZGVuIGplZG9jaCBrZWluZSBPYmpla3RlLCBkaWUgbWl0dGVscyBBZGRJdGVtKCkgaW0KKwlMYWdlciBlaW5nZWJ1bmRlbiB3dXJkZW4uIE1pdHRlbHMgZGVyIExhZGVuZnVua3Rpb24gQWRkRml4ZWRPYmplY3QoKQorCWFscyBzdGFlbmRpZyB2ZXJmdWVnYmFyIG1hcmtpZXJ0ZSBPYmpla3RlIHdlcmRlbiBuYXR1ZXJsaWNoIGF1Y2gKKwluaWNodCBiZXJ1ZWNrc2ljaHRpZ3QuCisJQmVpZGUgaGllciBlcndhZWhudGVuIFByb3BlcnRpZXMgc29sbHRlbiB1ZWJlcmlnZW5zIG51ciBtaXR0ZWxzCisJUXVlcnlQcm9wL1NldFByb3AgYXVzZ2VsZXNlbiBiencuIHZlcmFlbmRlcnQgd2VyZGVuLgorCitCRUlTUElFTDoKKwlFaW4gZWlnZW5lciBoYWV1ZmlnIGJlbnV0enRlciBMYWRlbiBrb2VubnRlIGVpbiBMYWdlciBpbiBmb2xnZW5kZXIKKwlGb3JtIGVyaGFsdGVuOgorCSAgLy8gbXlTdG9yZQorCSAgI2luY2x1ZGUgPGJhbmsuaD4KKwkgIGluaGVyaXQgInN0ZC9zdG9yZSI7CisJICB2b2lkIGNyZWF0ZSgpCisJICB7IDo6Y3JlYXRlKCk7CisJICAgIFNldFByb3AoUF9TVE9SRV9DT05TVU1FLDkwKTsKKwkgICAgLy8ga2VpbmUgd2VpdGVyZW4gQmVzY2hyZWlidW5nZW4sIFNwaWVsZXIgc29sbGVuIGRhIGRyaW4KKwkgICAgLy8gc2NobGllc3NsaWNoIG5pY2h0IHJ1bXd1c2VsbgorCSAgfQorCVVtIGRhcyBMYWdlciBkZW0gTGFkZW4genV6dXdlaXNlbiwgbnV0enQgbWFuIGZvbGdlbmRlczoKKwkgIC8vIG15U2hvcAorCSAgaW5oZXJpdCAic3RkL2xhZGVuIjsKKwkgIHZvaWQgY3JlYXRlKCkKKwkgIHsgOjpjcmVhdGUoKTsKKwkgICAgU2V0U3RvcmFnZVJvb20oInBmYWQvbXlTdG9yZSIpOworCSAgICAvLyBCZXNjaHJlaWJ1bmdlbiBmb2xnZW4KKwkgICAgLi4uCisJICB9CisJRXMgd2VyZGVuIGhpZXJiZWkgd2FlaHJlbmQgamVkZXMgTGFnZXItUmVzZXRzIDkwJSBkZXIgaW0gTGFnZXIKKwliZWZpbmRsaWNoZW4gT2JqZWt0ZSB2ZXJuaWNodGV0LgorCitTSUVIRSBBVUNIOgorCVBfTUlOX1NUT0NLLCBTZXRTdG9yYWdlUm9vbSgpLCAvc3RkL3N0b3JlLmMsIC9zdGQvc2hvcC5jCisJQWRkSXRlbSgpLCBSZW1vdmVJdGVtKCksIEFkZEZpeGVkT2JqZWN0KCksIFJlbW92ZUZpeGVkT2JqZWN0KCkKKworLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorTGFzdCBtb2RpZmllZDogMTktSnVuLTIwMTUsIEFyYXRob3JuIApkaWZmIC0tZ2l0IGEvZG9jL3Byb3BzL1BfU1RSRVRDSF9USU1FIGIvZG9jL3Byb3BzL1BfU1RSRVRDSF9USU1FCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmRmZWY0ZjEKLS0tIC9kZXYvbnVsbAorKysgYi9kb2MvcHJvcHMvUF9TVFJFVENIX1RJTUUKQEAgLTAsMCArMSwyMCBAQAorUF9TVFJFVENIX1RJTUUKKworTkFNRToKKyAgICBQX1NUUkVUQ0hfVElNRSAgICAgInN0cmV0Y2hfdGltZSIKKworREVGSU5JRVJUIElOOgorICAgIDxjb21iYXQuaD4KKworQkVTQ0hSRUlCVU5HOgorICAgIEVudGhhZWx0IGRpZSBaZWl0IGluIFJ1bmRlbiAoMnMpLCBkaWUgbWFuIGJyYXVjaHQsIHVtIGVpbmUgRmVybndhZmZlIHp1CisgICAgc3Bhbm5lbi9iZW51dHplbi4gWmFlaGx0IHNlaXQgZGVtIGxldHp0ZW4gU2NodXNzIG9kZXIgZGVyIFplaXQgZGVzCisgICAgWnVlY2tlbnMgKFBfRVFVSVBfVElNRSkuCisKK1NJRUhFIEFVQ0g6CisgICAgR2VuZXJlbGw6ICBQX0FNTVVOSVRJT04sIFBfU0hPT1RJTkdfV0MKKyAgICBNZXRob2RlbjogIEZpbmRSYW5nZWRUYXJnZXQoTCksIHNob290X2RhbShMKSwgY21kX3Nob290KEwpCisgICAgR2ViaWV0OiAgICBQX1JBTkdFLCBQX1NIT09USU5HX0FSRUEsIFBfVEFSR0VUX0FSRUEKKyAgICBTb25zdGlnZXM6IGZlcm53YWZmZW4KKworMjkuSnVsIDIwMTQgR2xvaW5zb24KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9kb2MvcHJvcHMvUF9TVUJHVUlMRF9USVRMRSBiL2RvYy9wcm9wcy9QX1NVQkdVSUxEX1RJVExFCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjU4YTU5ZDUKLS0tIC9kZXYvbnVsbAorKysgYi9kb2MvcHJvcHMvUF9TVUJHVUlMRF9USVRMRQpAQCAtMCwwICsxLDIwIEBACitQX1NVQkdVSUxEX1RJVExFCitOQU1FOgorICAgICBQX1NVQkdVSUxEX1RJVExFCQkic3ViZ3VpbGRfdGl0bGUiICAgICAgICAgICAgICAgICAgICAgICAKKworREVGSU5JRVJUIElOOgorICAgICAvc3lzL25ld19za2lsbHMuaAorCitCRVNDSFJFSUJVTkc6CisgICAgIERpZXNlIFByb3BlcnR5IGVudGhhZWx0IGV2ZW50dWVsbGUgWnVzYXR6dGl0ZWwgZWluZXMgU3BpZWxlcnMsIGRlbiBlcgorICAgICBpbm5lcmhhbGIgZWluZXIgR2lsZGUgdHJhZWd0LiBEYXMga2FubiB6LkIuIGVpbiBDbGFuIHNlaW4sIGVpbiBad2VpZyBvZGVyCisgICAgIGVpbmZhY2ggbnVyIGRlciBHaWxkZW5yYW5nLgorCitCRU1FUktVTkdFTjoKKyAgICAgSW5oYWx0IGRlciBQcm9wZXJ0eSBrYW5uIDAgc2VpbiBvZGVyIGVpbiBTdHJpbmcuICBFaW4gWnVzYXR6dGl0ZWwga2FubgorICAgICBtaXR0ZWxzIFBfVklTSUJMRV9TVUJHVUlMRF9USVRMRSB2b3JnZXRhZXVzY2h0IHdlcmRlbi4KKworU0lFSEUgQVVDSDoKKyAgICAgUF9HVUlMRF9USVRMRSwgUF9WSVNJQkxFX1NVQkdVSUxEX1RJVExFCisKKzI2LiBNYWVyeiAyMDA0IEdsb2luc29uCmRpZmYgLS1naXQgYS9kb2MvcHJvcHMvUF9UQVJHRVRfQVJFQSBiL2RvYy9wcm9wcy9QX1RBUkdFVF9BUkVBCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjlkMmNlYzkKLS0tIC9kZXYvbnVsbAorKysgYi9kb2MvcHJvcHMvUF9UQVJHRVRfQVJFQQpAQCAtMCwwICsxLDc1IEBACitQX1RBUkdFVF9BUkVBCisKK05BTUU6CisgICAgUF9UQVJHRVRfQVJFQSAgICAgInRhcmdldF9hcmVhIgorCitERUZJTklFUlQgSU46CisgICAgPGNvbWJhdC5oPgorCitCRVNDSFJFSUJVTkc6CisgICAgS2FubiBpbiBlaW5lbSBSYXVtIGdlc2V0enQgd2VyZGVuLCB1bSBlaW5lbiBhbmRlcmVuLCB2b24gZG9ydCBhdXMgbWl0CisgICAgRmVybmthbXBmd2FmZmVuIGJlc2NoaWVzc2JhcmVuIFJhdW0gYWxzIE9iamVrdCBvZGVyIE9iamVrdG5hbWVuICh6dQorICAgIGVpbmVtIGdlbGFkZW5lbiBPYmpla3QpIGZlc3R6dWxlZ2VuLgorCitCRU1FUktVTkdFTjoKKyAgICBFaW4gU2NodWV0emUga2FubiBudXIgaW4gZGVuIGFuZGVyZW4gUmF1bSBzY2hpZXNzZW4sIHdlbm4gZGllIFBfUkFOR0UKKyAgICBzZWluZXIgV2FmZmUgbWluZGVzdCBnbGVpY2ggZGVyIFBfU0hPT1RJTkdfQVJFQSBkZXMgUmF1bXMgKG5pY2h0IGRlcworICAgIFppZWxyYXVtcykgaXN0LgorCisgICAgSWRlYWxlcndlaXNlIHNvbGx0ZSBpbiBtaXQgUF9UQVJHRVRfQVJFQSBhbmdlZ2ViZW5lbiBSYWV1bWVuIGF1Y2gKKyAgICBQX05FVkVSX0NMRUFOIGdlc2V0enQgc2Vpbi4KKworQkVJU1BJRUxFOgorICAgIC8vICMxIEVpbiBCYXVtLVJhdW0gKC9zdGQvcm9vbSkKKyAgICB2b2lkIGNyZWF0ZSgpIHsKKyAgICAgIDo6Y3JlYXRlKCk7CisgICAgICBTZXRQcm9wKFBfSU5UX1NIT1JULCAiQXVmIGVpbmVtIEJhdW0iKTsKKyAgICAgIFNldFByb3AoUF9JTlRfTE9ORywgYnJlYWtfc3RyaW5nKCJEdSBob2Nrc3QgYXVmIGVpbmVtIEJhdW0gdW5kIGthbm5zdCAiCisgICAgICAgICJhdWYgZGllIExpY2h0dW5nIHVudGVyIERpciBzZWhlbi5cbiIpOworCisgICAgICBBZGRFeGl0KCJ1bnRlbiIsIFJBRVVNRSgibGljaHR1bmciKSk7CisKKyAgICAgIFNldFByb3AoUF9UQVJHRVRfQVJFQSwgUkFFVU1FKCJsaWNodHVuZyIpKTsgIC8vIExpY2h0dW5nIGJlc2NoaWVzc2JhcgorICAgICAgU2V0UHJvcChQX1NIT09USU5HX0FSRUEsIDE1KTsgICAgICAgICAgICAgICAgLy8gMTUgRW50ZmVybnVuZworICAgIH0KKworICAgIC8vICMyIEVpbiBFbGVmYW50ZW4tVHJhbnNwb3J0ZXIgKC9zdGQvdHJhbnNwb3J0KQorICAgIC8vIEVyIHRyYW1wZWx0IGR1cmNoIG1laHJlcmUgUmFldW1lIGR1cmNoIHVuZCBkZXIgU2NodWV0emUga2FubiB2b20KKyAgICAvLyBSdWVja2VuIGRlcyBFbGVmYW50ZW4gYXVzIGF1ZiBHZWduZXIgZHJhdXNzZW4gc2NoaWVzc2VuLgorICAgIHZvaWQgY3JlYXRlKCkgeworICAgICAgOjpjcmVhdGUoKTsKKyAgICAgIFNldFByb3AoUF9OQU1FLCAiS2FtcGZlbGVmYW50Iik7CisgICAgICBBZGRJZCgoeyJlbGVmYW50IiwgImthbXBmZWxlZmFudCIpfSk7CisgICAgICBTZXRQcm9wKFBfR0VOREVSLCBNQUxFKTsKKyAgICAgIFNldFByb3AoUF9TSE9SVCwgIkVpbiBLYW1wZmVsZWZhbnQiKTsKKyAgICAgIFNldFByb3AoUF9JTlRfU0hPUlQsICJBdWYgZWluZW0gS2FtcGZlbGVmYW50ZW4iKTsKKyAgICAgIC8vIFBfTE9ORywgUF9JTlRfTE9ORworCisgICAgICBTZXRQcm9wKFBfRU5URVJDTURTLCAoeyJrbGV0dGVyIiwgImVya2xldHRlciJ9KSk7CisgICAgICBTZXRQcm9wKFBfTEVBVkVDTURTLCAoeyJ2ZXJsYXNzIiwgInZlcmxhc3NlIn0pKTsKKworICAgICAgU2V0UHJvcChQX0FSUklWRU1TRywgKHsiRGVyIEVsZWZhbnQgdHJhbXBlbHQgaW4gZWluZW4gUmF1bS5cbiIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJFaW4gS2FtcGZlbGVmYW50IHRyYW1wZWx0IGhlcmVpbi5cbiJ9KSk7CisgICAgICBTZXRQcm9wKFBfREVQQVJUTVNHLCAoeyJEZXIgRWxlZmFudCB0cmFtcGVsdCB3ZWl0ZXIuXG4iLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiRGVyIEthbXBmZWxlZmFudCB0cmFtcGVsdCB3ZWl0ZXIuXG4ifSkpOworCisgICAgICBTZXRQcm9wKFBfU0hPT1RJTkdfQVJFQSwgOCk7IC8vIHdlaXRlciBhbHMgOCBzb2xsdGUgbWFuIHNjaGllc3NlbgorCisgICAgICBBZGRSb3V0ZShSQUVVTUUoInNjaGxhY2h0ZmVsZCIpLCAyMCtyYW5kb20oMTApLCA2LCAiU2NobGFjaHRmZWxkIik7CisgICAgICBBZGRSb3V0ZShSQUVVTUUoImJ1cmd0b3IiKSwgMjArcmFuZG9tKDEwKSwgNiwgIkJ1cmd0b3IiKTsKKyAgICAgIEFkZFJvdXRlKFJBRVVNRSgiYnVyZ2hvZiIpLCAyMCtyYW5kb20oMTApLCA2LCAiQnVyZ2hvZiIpOworICAgICAgQWRkUm91dGUoUkFFVU1FKCJoYWxsZSIpLCAyMCtyYW5kb20oMTApLCA2LCAiSGFsbGUiKTsKKyAgICAgIEFkZFJvdXRlKFJBRVVNRSgiYnJlc2NoZSIpLCAyMCtyYW5kb20oMTApLCA2LCAiQnJlc2NoZSIpOworICAgICAgLy8gLi4uCisKKyAgICAgIFN0YXJ0KCk7CisgICAgfQorCitTSUVIRSBBVUNIOgorICAgIEdlbmVyZWxsOiAgUF9BTU1VTklUSU9OLCBQX1NIT09USU5HX1dDLCBQX1NUUkVUQ0hfVElNRQorICAgIE1ldGhvZGVuOiAgRmluZFJhbmdlZFRhcmdldChMKSwgc2hvb3RfZGFtKEwpLCBjbWRfc2hvb3QoTCkKKyAgICBHZWJpZXQ6ICAgIFBfUkFOR0UsIFBfU0hPT1RJTkdfQVJFQQorICAgIFJhZXVtZTogICAgUF9ORVZFUl9DTEVBTgorICAgIFNvbnN0aWdlczogZmVybndhZmZlbgorCisyOS5KdWwgMjAxNCBHbG9pbnNvbgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2RvYy9wcm9wcy9QX1RFQU0gYi9kb2MvcHJvcHMvUF9URUFNCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmYwMzEwOWQKLS0tIC9kZXYvbnVsbAorKysgYi9kb2MvcHJvcHMvUF9URUFNCkBAIC0wLDAgKzEsMjQgQEAKK05BTUU6CisJUF9URUFNICAgICAgICAgICAgICAgICAgICAgICAgICJ0ZWFtIgorCitERUZJTklFUlQgSU46CisJL3N5cy9saXZpbmcvdGVhbS5oCisKK0JFU0NIUkVJQlVORzoKKwlMaWVmZXJ0IGRhcyBUZWFtb2JqZWt0LCBmYWxscyBTcGllbGVyIGluIGVpbmVtIFRlYW0gaXN0LCBzb25zdCAwLgorCitTSUVIRSBBVUNIOgorICAgICAgICBVZWJlcnNpY2h0OiB0ZWFta2FtcGYKKyAgICAgICAgUHJvcGVydGllczogUF9BU1NPQ19NRU1CRVJTLCBQX1RFQU1fQVRUQUNLX0NNRCwgUF9URUFNX0FVVE9GT0xMT1csCisgICAgICAgICAgICAgICAgICAgIFBfVEVBTV9DT0xPUlMsIFBfVEVBTV9MRUFERVIsIFBfVEVBTV9ORVdNRU1CRVIsCisgICAgICAgICAgICAgICAgICAgIFBfVEVBTV9XQU5URURfUk9XLCBQX1RFQU1fV0lNUFlfUk9XCisgICAgICAgIEJld2VndW5nOiAgIElzVGVhbU1vdmUsIFRlYW1GbGVlCisgICAgICAgIE1pdGdsaWVkZXI6IElzVGVhbUxlYWRlciwgVGVhbU1lbWJlcnMKKyAgICAgICAgS2FtcGY6ICAgICAgRGVBc3NvY01lbWJlciwgSW5zZXJ0RW5lbXlUZWFtLCBTZWxlY3ROZWFyRW5lbXksCisgICAgICAgICAgICAgICAgICAgIFNlbGVjdEZhckVuZW15CisgICAgICAgIFBvc2l0aW9uZW46IFByZXNlbnRQb3NpdGlvbiwgUHJlc2VudFJvd3MsIFByZXNlbnRFbmVteVJvd3MsCisgICAgICAgICAgICAgICAgICAgIFByZXNlbnRUZWFtUG9zaXRpb24sIFN3YXBSb3dzCisgICAgICAgIFNvbnN0aWdlczogIFRlYW1QcmVmaXgsIHRlYW1rYW1wZl9pbnRlcm4KKworLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorTGFzdCBtb2RpZmllZDogMTYtMDgtMjAxMCwgR2FieWxvbgpkaWZmIC0tZ2l0IGEvZG9jL3Byb3BzL1BfVEVBTV9BU1NPQ19NRU1CRVJTIGIvZG9jL3Byb3BzL1BfVEVBTV9BU1NPQ19NRU1CRVJTCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmM0Zjk1YjgKLS0tIC9kZXYvbnVsbAorKysgYi9kb2MvcHJvcHMvUF9URUFNX0FTU09DX01FTUJFUlMKQEAgLTAsMCArMSwzMCBAQAorTkFNRToKKwlQX1RFQU1fQVNTT0NfTUVNQkVSUyAgICAgICAgICAgInRlYW1fYXNzb2NfbWVtYmVycyIKKworREVGSU5JRVJUIElOOgorCS9zeXMvbGl2aW5nL3RlYW0uaAorCitCRVNDSFJFSUJVTkc6CisJQXJyYXkgbWl0IGRlbiB6dWdlb3JkbmV0ZW4gTlBDcyBkZXMgU3BpZWxlcnMgYnp3LiBkZXIgU3BpZWxlciwKKwlkZW0gZGllc2VyIE5QQyB6dWdlb3JkbmV0IGlzdC4KKwladWdlb3JkbmV0ZSBOUENzIHNpbmQgYXV0b21hdGlzY2ggaW0gVGVhbSBkZXMgU3BpZWxlcnMuCisKK0JFTUVSS1VORzoKKwlEZXIgWnVncmlmZiBhdWYgZGllc2UgUHJvcGVydHkgc29sbHRlIHVlYmVyIEFzc29jTWVtYmVyKCkKKwliencuIERlQXNzb2NNZW1iZXIoKSBlcmZvbGdlbi4KKworU0lFSEUgQVVDSDoKKyAgICAgICAgVWViZXJzaWNodDogdGVhbWthbXBmCisgICAgICAgIFByb3BlcnRpZXM6IFBfVEVBTSwgUF9URUFNX0FUVEFDS19DTUQsIFBfVEVBTV9BVVRPRk9MTE9XLAorICAgICAgICAgICAgICAgICAgICBQX1RFQU1fQ09MT1JTLCBQX1RFQU1fTEVBREVSLCBQX1RFQU1fTkVXTUVNQkVSLAorICAgICAgICAgICAgICAgICAgICBQX1RFQU1fV0FOVEVEX1JPVywgUF9URUFNX1dJTVBZX1JPVworICAgICAgICBCZXdlZ3VuZzogICBJc1RlYW1Nb3ZlLCBUZWFtRmxlZQorICAgICAgICBNaXRnbGllZGVyOiBJc1RlYW1MZWFkZXIsIFRlYW1NZW1iZXJzCisgICAgICAgIEthbXBmOiAgICAgIERlQXNzb2NNZW1iZXIsIEluc2VydEVuZW15VGVhbSwgU2VsZWN0TmVhckVuZW15LAorICAgICAgICAgICAgICAgICAgICBTZWxlY3RGYXJFbmVteQorICAgICAgICBQb3NpdGlvbmVuOiBQcmVzZW50UG9zaXRpb24sIFByZXNlbnRSb3dzLCBQcmVzZW50RW5lbXlSb3dzLAorICAgICAgICAgICAgICAgICAgICBQcmVzZW50VGVhbVBvc2l0aW9uLCBTd2FwUm93cworICAgICAgICBTb25zdGlnZXM6ICBUZWFtUHJlZml4LCB0ZWFta2FtcGZfaW50ZXJuCisKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KK0xhc3QgbW9kaWZpZWQ6IDE2LTA4LTIwMTAsIEdhYnlsb24KZGlmZiAtLWdpdCBhL2RvYy9wcm9wcy9QX1RFQU1fQVRUQUNLX0NNRCBiL2RvYy9wcm9wcy9QX1RFQU1fQVRUQUNLX0NNRApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4zZjc3MzQ5Ci0tLSAvZGV2L251bGwKKysrIGIvZG9jL3Byb3BzL1BfVEVBTV9BVFRBQ0tfQ01ECkBAIC0wLDAgKzEsMjQgQEAKK05BTUU6CisJUF9URUFNX0FUVEFDS19DTUQgICAgICAgICAgICAgICJ0ZWFtX2F0dGFja19jbWQiCisKK0RFRklOSUVSVCBJTjoKKwkvc3lzL2xpdmluZy90ZWFtLmgKKworQkVTQ0hSRUlCVU5HOgorCUFuZ3JpZmZzYmVmZWhsIGRlcyBTcGllbGVycywgbmljaHQgc2V0emJhci4KKworU0lFSEUgQVVDSDoKKyAgICAgICAgVWViZXJzaWNodDogdGVhbWthbXBmCisgICAgICAgIFByb3BlcnRpZXM6IFBfVEVBTSwgUF9BU1NPQ19NRU1CRVJTLCBQX1RFQU1fQVVUT0ZPTExPVywKKyAgICAgICAgICAgICAgICAgICAgUF9URUFNX0NPTE9SUywgUF9URUFNX0xFQURFUiwgUF9URUFNX05FV01FTUJFUiwKKyAgICAgICAgICAgICAgICAgICAgUF9URUFNX1dBTlRFRF9ST1csIFBfVEVBTV9XSU1QWV9ST1cKKyAgICAgICAgQmV3ZWd1bmc6ICAgSXNUZWFtTW92ZSwgVGVhbUZsZWUKKyAgICAgICAgTWl0Z2xpZWRlcjogSXNUZWFtTGVhZGVyLCBUZWFtTWVtYmVycworICAgICAgICBLYW1wZjogICAgICBEZUFzc29jTWVtYmVyLCBJbnNlcnRFbmVteVRlYW0sIFNlbGVjdE5lYXJFbmVteSwKKyAgICAgICAgICAgICAgICAgICAgU2VsZWN0RmFyRW5lbXkKKyAgICAgICAgUG9zaXRpb25lbjogUHJlc2VudFBvc2l0aW9uLCBQcmVzZW50Um93cywgUHJlc2VudEVuZW15Um93cywKKyAgICAgICAgICAgICAgICAgICAgUHJlc2VudFRlYW1Qb3NpdGlvbiwgU3dhcFJvd3MKKyAgICAgICAgU29uc3RpZ2VzOiAgVGVhbVByZWZpeCwgdGVhbWthbXBmX2ludGVybgorCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCitMYXN0IG1vZGlmaWVkOiAxNi0wOC0yMDEwLCBHYWJ5bG9uCmRpZmYgLS1naXQgYS9kb2MvcHJvcHMvUF9URUFNX0FVVE9GT0xMT1cgYi9kb2MvcHJvcHMvUF9URUFNX0FVVE9GT0xMT1cKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNDViZTUwZgotLS0gL2Rldi9udWxsCisrKyBiL2RvYy9wcm9wcy9QX1RFQU1fQVVUT0ZPTExPVwpAQCAtMCwwICsxLDI0IEBACitOQU1FOgorCVBfVEVBTV9BVVRPRk9MTE9XICAgICAgICAgICAgICAidGVhbV9hdXRvZm9sbG93IgorCitERUZJTklFUlQgSU46CisJL3N5cy9saXZpbmcvdGVhbS5oCisKK0JFU0NIUkVJQlVORzoKKwlGb2xnZXd1bnNjaCBkZXMgU3BpZWxlcnMsIG5pY2h0IHNldHpiYXIuCisKK1NJRUhFIEFVQ0g6CisgICAgICAgIFVlYmVyc2ljaHQ6IHRlYW1rYW1wZgorICAgICAgICBQcm9wZXJ0aWVzOiBQX1RFQU0sIFBfQVNTT0NfTUVNQkVSUywgUF9URUFNX0FUVEFDS19DTUQsCisgICAgICAgICAgICAgICAgICAgIFBfVEVBTV9DT0xPUlMsIFBfVEVBTV9MRUFERVIsIFBfVEVBTV9ORVdNRU1CRVIsCisgICAgICAgICAgICAgICAgICAgIFBfVEVBTV9XQU5URURfUk9XLCBQX1RFQU1fV0lNUFlfUk9XCisgICAgICAgIEJld2VndW5nOiAgIElzVGVhbU1vdmUsIFRlYW1GbGVlCisgICAgICAgIE1pdGdsaWVkZXI6IElzVGVhbUxlYWRlciwgVGVhbU1lbWJlcnMKKyAgICAgICAgS2FtcGY6ICAgICAgRGVBc3NvY01lbWJlciwgSW5zZXJ0RW5lbXlUZWFtLCBTZWxlY3ROZWFyRW5lbXksCisgICAgICAgICAgICAgICAgICAgIFNlbGVjdEZhckVuZW15CisgICAgICAgIFBvc2l0aW9uZW46IFByZXNlbnRQb3NpdGlvbiwgUHJlc2VudFJvd3MsIFByZXNlbnRFbmVteVJvd3MsCisgICAgICAgICAgICAgICAgICAgIFByZXNlbnRUZWFtUG9zaXRpb24sIFN3YXBSb3dzCisgICAgICAgIFNvbnN0aWdlczogIFRlYW1QcmVmaXgsIHRlYW1rYW1wZl9pbnRlcm4KKworLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorTGFzdCBtb2RpZmllZDogMTYtMDgtMjAxMCwgR2FieWxvbgpkaWZmIC0tZ2l0IGEvZG9jL3Byb3BzL1BfVEVBTV9DT0xPUlMgYi9kb2MvcHJvcHMvUF9URUFNX0NPTE9SUwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5kMjM4MTVkCi0tLSAvZGV2L251bGwKKysrIGIvZG9jL3Byb3BzL1BfVEVBTV9DT0xPUlMKQEAgLTAsMCArMSwyNSBAQAorTkFNRToKKwlQX1RFQU1fQ09MT1JTICAgICAgICAgICAgICAgICAgInRlYW1fY29sb3JzIgorCitERUZJTklFUlQgSU46CisJL3N5cy9saXZpbmcvdGVhbS5oCisKK0JFU0NIUkVJQlVORzoKKwlHcmVuendlcnRlIGZ1ZXIgZmFyYmlnZSBBbnplaWdlIGltIFRlYW1pbmZvLgorCUFycmF5IG1pdCA0IFdlcnRlbjogKHsgbHBfcm90LCBscF9nZWxiLCBzcF9yb3QsIHNwX2dlbGIgfSkKKworU0lFSEUgQVVDSDoKKyAgICAgICAgVWViZXJzaWNodDogdGVhbWthbXBmCisgICAgICAgIFByb3BlcnRpZXM6IFBfVEVBTSwgUF9BU1NPQ19NRU1CRVJTLCBQX1RFQU1fQVRUQUNLX0NNRCwKKyAgICAgICAgICAgICAgICAgICAgUF9URUFNX0FVVE9GT0xMT1csIFBfVEVBTV9MRUFERVIsIFBfVEVBTV9ORVdNRU1CRVIsCisgICAgICAgICAgICAgICAgICAgIFBfVEVBTV9XQU5URURfUk9XLCBQX1RFQU1fV0lNUFlfUk9XCisgICAgICAgIEJld2VndW5nOiAgIElzVGVhbU1vdmUsIFRlYW1GbGVlCisgICAgICAgIE1pdGdsaWVkZXI6IElzVGVhbUxlYWRlciwgVGVhbU1lbWJlcnMKKyAgICAgICAgS2FtcGY6ICAgICAgRGVBc3NvY01lbWJlciwgSW5zZXJ0RW5lbXlUZWFtLCBTZWxlY3ROZWFyRW5lbXksCisgICAgICAgICAgICAgICAgICAgIFNlbGVjdEZhckVuZW15CisgICAgICAgIFBvc2l0aW9uZW46IFByZXNlbnRQb3NpdGlvbiwgUHJlc2VudFJvd3MsIFByZXNlbnRFbmVteVJvd3MsCisgICAgICAgICAgICAgICAgICAgIFByZXNlbnRUZWFtUG9zaXRpb24sIFN3YXBSb3dzCisgICAgICAgIFNvbnN0aWdlczogIFRlYW1QcmVmaXgsIHRlYW1rYW1wZl9pbnRlcm4KKworLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorTGFzdCBtb2RpZmllZDogMTYtMDgtMjAxMCwgR2FieWxvbgpkaWZmIC0tZ2l0IGEvZG9jL3Byb3BzL1BfVEVBTV9MRUFERVIgYi9kb2MvcHJvcHMvUF9URUFNX0xFQURFUgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5hMTIzYzM3Ci0tLSAvZGV2L251bGwKKysrIGIvZG9jL3Byb3BzL1BfVEVBTV9MRUFERVIKQEAgLTAsMCArMSwyNCBAQAorTkFNRToKKwlQX1RFQU1fTEVBREVSICAgICAgICAgICAgICAgICAgInRlYW1fbGVhZGVyIgorCitERUZJTklFUlQgSU46CisJL3N5cy9saXZpbmcvdGVhbS5oCisKK0JFU0NIUkVJQlVORzoKKwlMaWVmZXJ0IGRhcyBUZWFtb2JqZWt0LCBmYWxscyBTcGllbGVyIEFuZnVlaHJlciBlaW5lcyBUZWFtcyBpc3QuCisKK1NJRUhFIEFVQ0g6CisgICAgICAgIFVlYmVyc2ljaHQ6IHRlYW1rYW1wZgorICAgICAgICBQcm9wZXJ0aWVzOiBQX1RFQU0sIFBfQVNTT0NfTUVNQkVSUywgUF9URUFNX0FUVEFDS19DTUQsCisgICAgICAgICAgICAgICAgICAgIFBfVEVBTV9BVVRPRk9MTE9XLCBQX1RFQU1fQ09MT1JTLCBQX1RFQU1fTkVXTUVNQkVSLAorICAgICAgICAgICAgICAgICAgICBQX1RFQU1fV0FOVEVEX1JPVywgUF9URUFNX1dJTVBZX1JPVworICAgICAgICBCZXdlZ3VuZzogICBJc1RlYW1Nb3ZlLCBUZWFtRmxlZQorICAgICAgICBNaXRnbGllZGVyOiBJc1RlYW1MZWFkZXIsIFRlYW1NZW1iZXJzCisgICAgICAgIEthbXBmOiAgICAgIERlQXNzb2NNZW1iZXIsIEluc2VydEVuZW15VGVhbSwgU2VsZWN0TmVhckVuZW15LAorICAgICAgICAgICAgICAgICAgICBTZWxlY3RGYXJFbmVteQorICAgICAgICBQb3NpdGlvbmVuOiBQcmVzZW50UG9zaXRpb24sIFByZXNlbnRSb3dzLCBQcmVzZW50RW5lbXlSb3dzLAorICAgICAgICAgICAgICAgICAgICBQcmVzZW50VGVhbVBvc2l0aW9uLCBTd2FwUm93cworICAgICAgICBTb25zdGlnZXM6ICBUZWFtUHJlZml4LCB0ZWFta2FtcGZfaW50ZXJuCisKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KK0xhc3QgbW9kaWZpZWQ6IDE2LTA4LTIwMTAsIEdhYnlsb24KZGlmZiAtLWdpdCBhL2RvYy9wcm9wcy9QX1RFQU1fTkVXTUVNQkVSIGIvZG9jL3Byb3BzL1BfVEVBTV9ORVdNRU1CRVIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZjUwNmM1YgotLS0gL2Rldi9udWxsCisrKyBiL2RvYy9wcm9wcy9QX1RFQU1fTkVXTUVNQkVSCkBAIC0wLDAgKzEsMjUgQEAKK05BTUU6CisJUF9URUFNX05FV01FTUJFUiAgICAgICAgICAgICAgICJwb3RlbnRpYWxfdGVhbV9tZW1iZXIiCisKK0RFRklOSUVSVCBJTjoKKwkvc3lzL2xpdmluZy90ZWFtLmgKKworQkVTQ0hSRUlCVU5HOgorCUVudGhhZWx0IGRhcyBPYmpla3QgZGVzIFRlYW1sZWFkZXJzLCBzb2JhbGQgZWluIFNwaWVsZXIgdW0KKwlUZWFtYXVmbmFobWUgZ2ViZXRlbiBoYXQsIHNvbnN0IDAuCisKK1NJRUhFIEFVQ0g6CisgICAgICAgIFVlYmVyc2ljaHQ6IHRlYW1rYW1wZgorICAgICAgICBQcm9wZXJ0aWVzOiBQX1RFQU0sIFBfQVNTT0NfTUVNQkVSUywgUF9URUFNX0FUVEFDS19DTUQsCisgICAgICAgICAgICAgICAgICAgIFBfVEVBTV9BVVRPRk9MTE9XLCBQX1RFQU1fQ09MT1JTLCBQX1RFQU1fTEVBREVSLAorICAgICAgICAgICAgICAgICAgICBQX1RFQU1fV0FOVEVEX1JPVywgUF9URUFNX1dJTVBZX1JPVworICAgICAgICBCZXdlZ3VuZzogICBJc1RlYW1Nb3ZlLCBUZWFtRmxlZQorICAgICAgICBNaXRnbGllZGVyOiBJc1RlYW1MZWFkZXIsIFRlYW1NZW1iZXJzCisgICAgICAgIEthbXBmOiAgICAgIERlQXNzb2NNZW1iZXIsIEluc2VydEVuZW15VGVhbSwgU2VsZWN0TmVhckVuZW15LAorICAgICAgICAgICAgICAgICAgICBTZWxlY3RGYXJFbmVteQorICAgICAgICBQb3NpdGlvbmVuOiBQcmVzZW50UG9zaXRpb24sIFByZXNlbnRSb3dzLCBQcmVzZW50RW5lbXlSb3dzLAorICAgICAgICAgICAgICAgICAgICBQcmVzZW50VGVhbVBvc2l0aW9uLCBTd2FwUm93cworICAgICAgICBTb25zdGlnZXM6ICBUZWFtUHJlZml4LCB0ZWFta2FtcGZfaW50ZXJuCisKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KK0xhc3QgbW9kaWZpZWQ6IDE2LTA4LTIwMTAsIEdhYnlsb24KZGlmZiAtLWdpdCBhL2RvYy9wcm9wcy9QX1RFQU1fV0FOVEVEX1JPVyBiL2RvYy9wcm9wcy9QX1RFQU1fV0FOVEVEX1JPVwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi43Y2QzYzM2Ci0tLSAvZGV2L251bGwKKysrIGIvZG9jL3Byb3BzL1BfVEVBTV9XQU5URURfUk9XCkBAIC0wLDAgKzEsMjQgQEAKK05BTUU6CisJUF9URUFNX1dBTlRFRF9ST1cgICAgICAgICAgICAgICJ0ZWFtX3dhbnRlZF9yb3ciCisKK0RFRklOSUVSVCBJTjoKKwkvc3lzL2xpdmluZy90ZWFtLmgKKworQkVTQ0hSRUlCVU5HOgorCUdld3VlbnNjaHRlIFJlaWhlIGRlcyBTcGllbGVycyAodm9uIDEgYmlzIE1BWF9URUFNUk9XUykKKworU0lFSEUgQVVDSDoKKyAgICAgICAgVWViZXJzaWNodDogdGVhbWthbXBmCisgICAgICAgIFByb3BlcnRpZXM6IFBfQVNTT0NfTUVNQkVSUywgUF9URUFNX0FUVEFDS19DTUQsIFBfVEVBTV9BVVRPRk9MTE9XLAorICAgICAgICAgICAgICAgICAgICBQX1RFQU1fQ09MT1JTLCBQX1RFQU1fTEVBREVSLCBQX1RFQU1fTkVXTUVNQkVSLAorICAgICAgICAgICAgICAgICAgICBQX1RFQU1fV0lNUFlfUk9XCisgICAgICAgIEJld2VndW5nOiAgIElzVGVhbU1vdmUsIFRlYW1GbGVlCisgICAgICAgIE1pdGdsaWVkZXI6IElzVGVhbUxlYWRlciwgVGVhbU1lbWJlcnMKKyAgICAgICAgS2FtcGY6ICAgICAgRGVBc3NvY01lbWJlciwgSW5zZXJ0RW5lbXlUZWFtLCBTZWxlY3ROZWFyRW5lbXksCisgICAgICAgICAgICAgICAgICAgIFNlbGVjdEZhckVuZW15CisgICAgICAgIFBvc2l0aW9uZW46IFByZXNlbnRQb3NpdGlvbiwgUHJlc2VudFJvd3MsIFByZXNlbnRFbmVteVJvd3MsCisgICAgICAgICAgICAgICAgICAgIFByZXNlbnRUZWFtUG9zaXRpb24sIFN3YXBSb3dzCisgICAgICAgIFNvbnN0aWdlczogIFRlYW1QcmVmaXgsIHRlYW1rYW1wZl9pbnRlcm4KKworLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorTGFzdCBtb2RpZmllZDogMTYtMDgtMjAxMCwgR2FieWxvbgpkaWZmIC0tZ2l0IGEvZG9jL3Byb3BzL1BfVEVBTV9XSU1QWV9ST1cgYi9kb2MvcHJvcHMvUF9URUFNX1dJTVBZX1JPVwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5hODMyMjU1Ci0tLSAvZGV2L251bGwKKysrIGIvZG9jL3Byb3BzL1BfVEVBTV9XSU1QWV9ST1cKQEAgLTAsMCArMSwyOCBAQAorTkFNRToKKwlQX1RFQU1fV0lNUFlfUk9XICAgICAgICAgICAgICAgInRlYW1fd2ltcHlfcm93IgorCitERUZJTklFUlQgSU46CisJL3N5cy9saXZpbmcvdGVhbS5oCisKK0JFU0NIUkVJQlVORzoKKwlGbHVjaHRyZWloZSBkZXMgU3BpZWxlcnMsIHZvbiAxIGJpcyBNQVhfVEVBTVJPV1MuCisKK0JFTUVSS1VORzoKKwlXZW5uIGRpZSBGbHVjaHRyZWloZSA8PTEgaXN0LCBpc3QgZGllIEZsdWNodCBpbiBlaW5lIGhpbnRlcmUgUmVpaGUKKwlkZWFrdGl2aWVydC4KKworU0lFSEUgQVVDSDoKKyAgICAgICAgVWViZXJzaWNodDogdGVhbWthbXBmCisgICAgICAgIFByb3BlcnRpZXM6IFBfQVNTT0NfTUVNQkVSUywgUF9URUFNX0FUVEFDS19DTUQsIFBfVEVBTV9BVVRPRk9MTE9XLAorICAgICAgICAgICAgICAgICAgICBQX1RFQU1fQ09MT1JTLCBQX1RFQU1fTEVBREVSLCBQX1RFQU1fTkVXTUVNQkVSLAorICAgICAgICAgICAgICAgICAgICBQX1RFQU1fV0FOVEVEX1JPVworICAgICAgICBCZXdlZ3VuZzogICBJc1RlYW1Nb3ZlLCBUZWFtRmxlZQorICAgICAgICBNaXRnbGllZGVyOiBJc1RlYW1MZWFkZXIsIFRlYW1NZW1iZXJzCisgICAgICAgIEthbXBmOiAgICAgIERlQXNzb2NNZW1iZXIsIEluc2VydEVuZW15VGVhbSwgU2VsZWN0TmVhckVuZW15LAorICAgICAgICAgICAgICAgICAgICBTZWxlY3RGYXJFbmVteQorICAgICAgICBQb3NpdGlvbmVuOiBQcmVzZW50UG9zaXRpb24sIFByZXNlbnRSb3dzLCBQcmVzZW50RW5lbXlSb3dzLAorICAgICAgICAgICAgICAgICAgICBQcmVzZW50VGVhbVBvc2l0aW9uLCBTd2FwUm93cworICAgICAgICBTb25zdGlnZXM6ICBUZWFtUHJlZml4LCB0ZWFta2FtcGZfaW50ZXJuCisKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KK0xhc3QgbW9kaWZpZWQ6IDE2LTA4LTIwMTAsIEdhYnlsb24KZGlmZiAtLWdpdCBhL2RvYy9wcm9wcy9QX1RFTE5FVF9SVFRJTUUgYi9kb2MvcHJvcHMvUF9URUxORVRfUlRUSU1FCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmZjMzAwMTEKLS0tIC9kZXYvbnVsbAorKysgYi9kb2MvcHJvcHMvUF9URUxORVRfUlRUSU1FCkBAIC0wLDAgKzEsMjUgQEAKK05BTUU6CisgICAgUF9URUxORVRfUlRUSU1FICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJwX2xpYl90ZWxuZXRfcnR0aW1lIgorCitERUZJTklFUlQgSU46CisgICAgL3NlY3VyZS90ZWxuZXRuZWcuaAorCitCRVNDSFJFSUJVTkc6CisgICAgSW4gZGllc2VyIFByb3BlcnRpZXMgc3RlaHQgZGllIGxldHp0ZSBnZW1lc3NlbmUgJ3JvdW5kLXRyaXAnIFplaXQKKyAgICAoaW4gTWlrcm9zZWt1bmRlbikgZWluZXIgJ1RlbG5ldCB0aW1pbmcgbWFyaycgdm9tIE1VRCB6dW0gQ2xpZW50IHVuZAorICAgIHp1cnVlY2suCisKKyAgICBWb3JhdXNzZXR6dW5nIGhpZXJmdWVyIGlzdCBhbGxlcmRpbmdzLCBkYXNzIGRhcyBUZWxuZXQgZGVzIFNwaWVsZXJzCisgICAgVGVsbmV0bmVnb3RpYXRpb25zIHVudGVyc3R1ZXR6dCB1bmQgJ3RlbG5ldCBrZWVwYWxpdmUnIGVpbmdlc2NoYWx0ZXQKKyAgICBpc3QsIGFuc29uc3RlbiBibGVpYnQgZGllc2UgUHJvcGVydHkgMC4KKyAgICBEaWUgbWVpc3RlbiBUZWxuZXRzL0NsaWVudHMgYW50d29ydGVuIHp1bWluZGVzdCBlaW5lIEFibGVobnVuZyBhdWYKKyAgICBkaWUgJ3RpbWluZyBtYXJrcycsIHNvIGRhc3MgdHJvdHpkZW0gZWluZSBaZWl0IGJlc3RpbW10IHdlcmRlbiBrYW5uLgorCisgICAgRGllIFByb3Aga2FubiBuaWNodCBnZXNldHp0IHdlcmRlbiBiencuIGVzIGhhdCBrZWluZW4gRWZmZWt0LgorCitTSUVIRSBBVUNIOgorICAgIFBfVFRZX0NPTFMsIFBfVFRZX1JPV1MsIFBfVFRZX1NIT1csIFBfVFRZLCBQX1RUWV9UWVBFCisKK0xFVFpURSBBZU5ERVJVTkc6CisgICAgMDMuMDIuMjAxMywgWmVzc3RyYQorCmRpZmYgLS1naXQgYS9kb2MvcHJvcHMvUF9URVNUUExBWUVSIGIvZG9jL3Byb3BzL1BfVEVTVFBMQVlFUgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi42ZjY0YWRlCi0tLSAvZGV2L251bGwKKysrIGIvZG9jL3Byb3BzL1BfVEVTVFBMQVlFUgpAQCAtMCwwICsxLDI5IEBACitOQU1FOgorICAgIFBfVEVTVFBMQVlFUiAgICAgICAgICAgICAgICAgICJ0ZXN0cGxheWVyIiAgICAgICAgICAgICAgICAgIAorCitERUZJTklFUlQgSU46CisgICAgL3N5cy9wbGF5ZXIvYmFzZS5oCisKK0JFU0NIUkVJQlVORzoKKyAgICAgR2VzZXR6dCwgd2VubiBkZXIgU3BpZWxlciBlaW4gVGVzdHNwaWVsZXIgaXN0LiBFbnRoYWVsdCBkaWUgVUlEIGRlcworICAgICBNYWdpZXJzLCBkZW0gZGllc2VyIFRlc3RpZSAobW9tZW50YW4pIGdlaG9lcnQuCisgICAgIAorICAgICBCZWkgVGVzdHNwaWVsZXJuIGR1ZXJmZW4gU2tpbGxzIGdlYWVuZGVydCB3ZXJkZW4sIHNpZSBkdWVyZmVuIGdlemFwcHQKKyAgICAgd2VyZGVuIHVuZCAtIGlocmUgZWlnZW50bGljaGUgQXVmZ2FiZSAtIG5pY2h0IGFuZ2VzY2hsb3NzZW5lIEdlYmlldGUKKyAgICAgdGVzdGVuLgorCisgICAgIEFVU05BSE1FTjogR2lsZGVudGVzdGllcyBkdWVyZmVuIG51ciBzZWhyIGVpbmdlc2NocmFlbmt0IG1hbmlwdWxpZXJ0CisgICAgICAgICAgICAgICAgd2VyZGVuIHdlcmRlbiwgZGEgc2llIGltIGdhbnplbiBNdWQgcnVtbGF1ZmVuIGtvZW5uZW4sCisgICAgICAgICAgICAgICAgU3BpZWxlcmtvbnRha3QgaGFiZW4gdW5kIG5hY2ggQWJzY2hsdXNzIGRlciBUZXN0cyBnZ2YuIHNvZ2FyCisgICAgICAgICAgICAgICAgZGllIFRlc3RpZW1hcmtpZXJ1bmcgZW50ZmVybnQgd2VyZGVuIGthbm4uCisgICAgICAgICAgICAgICAgCisgICAgIEZ1ZXIgU3BpZWxlcnRlc3RpZXMsIGRpZSB2b24gZWluZW0gU3BpZWxlciBrb250cm9sbGllcnQgd2VyZGVuLCBnZWx0ZW4KKyAgICAgdGVpbHdlaXNlIGJlc29uZGVyZSBSZWdlbG4sIHMuICdzcGllbGVydGVzdGllcycuCisKK0JFTUVSS1VOR0VOOiAKKyAgICAgUF9URVNUUExBWUVSIGthbm4gbnVyIHBlciBTZXRQcm9wKCkgZ2VzZXR6dCB3ZXJkZW4gdW5kIGRhcyBhdWNoIG51ciBlaW4KKyAgICAgTWFsISBHZWxvZXNjaHQgd2VyZGVuIGthbm4gZGFzIEZsYWcgbnVyIHZvbiBFTSsuCisKK1pVTEVUWlQgR0VBZU5ERVJUOgorMDUuMDEuMjAxMCwgWmVzc3RyYQorCmRpZmYgLS1naXQgYS9kb2MvcHJvcHMvUF9USU1FRF9BVFRSX01PRCBiL2RvYy9wcm9wcy9QX1RJTUVEX0FUVFJfTU9ECm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjExNzVjNTAKLS0tIC9kZXYvbnVsbAorKysgYi9kb2MvcHJvcHMvUF9USU1FRF9BVFRSX01PRApAQCAtMCwwICsxLDU5IEBACitOQU1FOgorICAgIFBfVElNRURfQVRUUl9NT0QgICAgICAgICAidGltZWRfYXR0cl9tb2QiCisKK0RFRklOSUVSVCBJTjoKKyAgICAvc3lzL2xpdmluZy9hdHRyaWJ1dGVzLmgKKworQkVTQ0hSRUlCVU5HOgorICAgIEluIGRpZXNlciBQcm9wZXJ0eSB3ZXJkZW4gQXR0cmlidXQtTW9kaWZpa2F0b3JlbiBnZXNwZWljaGVydCwgZGllCisgICAgbmljaHQgdWViZXIgbGFlbmdlcmUgWmVpdCB3aXJrc2FtIHNlaW4gc29sbGVuLgorICAgIERpZSBXaXJrc2Fta2VpdCBkZXIgTW9kaWZpa2F0b3JlbiBrYW5uIGFuIFplaXQgdW5kIE9iamVrdGUKKyAgICBnZWJ1bmRlbiB3ZXJkZW4uCisKKyAgICBJbnRlcm4gd2VyZGVuIGRpZSBNb2RpZmlrYXRvcmVuIGluIGVpbmVyIERhdGVuc3RydWt0dXIgZGVyIEZvcm0KKworICAgICh7CisgICAgICAgKHsgQWJsYXVmemVpdGVuIH0pLAorICAgICAgIChbIEtleSA6IEFibGF1Zm9iamVrdCBdKSwKKyAgICAgICAoWyBLZXkgOiAoWyBNYXBwaW5nIG1pdCBkZW4gTW9kaWZpa2F0b3JlbiBdKTsKKyAgICAgICAgIEFibGF1ZnplaXQgOyBBYmxhdWZvYmpla3QgOyBOYWNocmljaHRlbmVtcGZhZW5nZXIKKyAgICAgICBdKQorICAgIH0pCisKKyAgICBnZXNwZWljaGVydCBtaXQ6CisgICAgKiBBYmxhdWZ6ZWl0ZW46ICBaZWl0IGluIFNla3VuZGVuIHNlaXQgMS4gSmFuIDE5NzAsIDAuMDowIEdNVAorICAgICogQWJsYXVmb2JqZWt0ZTogT2JqZWt0ZSwgYW4gZGVyZW4gRXhpc3RlbnogZGllIEF0dHJpYnV0LQorICAgICAgICAgICAgICAgICAgICAgdmVyYWVuZGVydW5nZW4gZ2VidW5kZW4gc2luZAorICAgICogTmFjaHJpY2h0ZW5lbXBmYWVuZ2VyOgorICAgICAgT2JqZWt0ZS9LbGFzc2VuLCB3ZWxjaGUgdWViZXIgYWJnZWxhdWZlbmUgQXR0cmlidXR2ZXJhZW5kZXJ1bmcKKyAgICAgIGR1cmNoIGRlbiBBdWZydWYgdm9uICJOb3RpZnlUaW1lZEF0dHJNb2RFeHBpcmVkIiAobWl0IGtleSBhbHMKKyAgICAgIEFyZ3VtZW50KSBiZW5hY2hyaWNodGlndCB3ZXJkZW4uCisKKyAgICBEYXMgU2V0emVuIGRlciBXZXJ0ZSBlcmZvbGd0IE5VUiB1ZWJlciBkaWUgTWV0aG9kZW4gU2V0VGltZWRBdHRyTW9kaWZpZXIKKyAgICB1bmQgRGVsZXRlVGltZWRBdHRyTW9kaWZpZXIuCisKKyAgICBEaWUgRGF0ZW4genUgZWluZW0gS2V5IGtvZW5uZW4gdWViZXIgUXVlcnlUaW1lZEF0dHJNb2RpZmllciBhYmdlZnJhZ3QKKyAgICB3ZXJkZW4uIERpZSBBYmZyYWdlIG1pdHRlbHMgUXVlcnlQcm9wIGxpZWZlcnQgZWluZSBLb3BpZSBkZXIgZ3VlbHRpZ2VuCisgICAgRGF0ZW5zdHJ1a3R1ciwgZGllIHBlciBRdWVyeSBuaWNodCAoc2llaGUgQmVtZXJrdW5nZW4pLgorCisgICAgRGllIEJlZGluZ3VuZ2VuIGZ1ZXIgZGllIHVlYmVyIFBfVElNRURfQVRUUl9NT0QgZ2VzZXR6dGVuCisgICAgQXR0cmlidXR2ZXJhZW5kZXJ1bmdlbiB3ZXJkZW4gaW0gSGVhcnRiZWF0IGluIGRlciBGdW5rdGlvbgorICAgIGF0dHJpYnV0ZV9oYiB1ZWJlcnBydWVmdC4gRWluZSB2ZXJtaW5kZXJ0ZSBGdW5rdGlvbmFsaXRhZXQgaW0KKyAgICBGYWxsZSB2b24gTWFnaWVybiBpc3Qgc29taXQga2VpbiBGZWhsZXJmYWxsLgorCitCRU1FUktVTkdFTjoKKyAgICBLZWluZSBlY2h0ZSBQcm9wZXJ0eS4gRGllIE1ldGhvZGUgX3F1ZXJ5X3RpbWVkX2F0dHJfbW9kKCkgaW4KKyAgICAvc3RkL2xpdmluZy9hdHRyaWJ1dGVzLmMgc3RlbGx0IGRpZSBEYXRlbiB6dXNhbW1lbi4KKworICAgIEFDSFRVTkc6IEJpdHRlIG51ciBkaWUgYmVyZWl0Z2VzdGVsbHRlbiBNZXRob2RlbiB6dXIgTWFuaXB1bGF0aW9uCisgICAgICAgICAgICAgYmVudXR6ZW4hIFNldHplbiBhbHMgUHJvcGVydHkgaGF0IGtlaW5lbiBFZmZla3QuCisKK1NJRUhFIEFVQ0g6CisgICAgUXVlcnlBdHRyaWJ1dGUoKSwgUXVlcnlSZWFsQXR0cmlidXRlKCksIFF1ZXJ5QXR0cmlidXRlT2Zmc2V0KCksCisgICAgU2V0QXR0cmlidXRlKCksIFNldFJlYWxBdHRyaWJ1dGUoKSwgVXBkYXRlQXR0cmlidXRlcygpLAorICAgIFNldFRpbWVkQXR0ck1vZGlmaWVyKCksIFF1ZXJ5VGltZWRBdHRyTW9kaWZpZXIoKSwKKyAgICBEZWxldGVUaW1lZEF0dHJNb2RpZmllcigpLAorICAgIFBfQVRUUklCVVRFUywgUF9BVFRSSUJVVEVTX09GRlNFVFMsIFBfQVRUUklCVVRFU19NT0RJRklFUiwKKyAgICBQX1hfQVRUUl9NT0QsIFBfTV9BVFRSX01PRCwgL3N0ZC9saXZpbmcvYXR0cmlidXRlcy5jCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCitMYXN0IG1vZGlmaWVkOiBUdWUgSnVsIDI3IDIwOjAwOjIwIDIwMDQgYnkgTXVhZGliCmRpZmYgLS1naXQgYS9kb2MvcHJvcHMvUF9USU1FWk9ORSBiL2RvYy9wcm9wcy9QX1RJTUVaT05FCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjgyNDNkMDcKLS0tIC9kZXYvbnVsbAorKysgYi9kb2MvcHJvcHMvUF9USU1FWk9ORQpAQCAtMCwwICsxLDEwIEBACitOQU1FOgorICAgIFBfVElNRVpPTkUgICAgICAgICAgICAgICAgICJ0aW1lem9uZSIKKworREVGSU5JRVJUIElOOgorICAgIC9zeXMvcGxheWVyL2Jhc2UuaAorCitCRVNDSFJFSUJVTkc6CisgICAgIEVpbiBJbnRlZ2VyLVdlcnQsIGRlciBiZWkgZGVyIFVocnplaXRtZWxkdW5nIHVuZCBiZWltIEJlZmVobAorICAgICAiKHVocil6ZWl0IiBiZXJ1ZWNrc2ljaHRpZyB3aXJkLiBHaWJ0IGRpZSBBbnphaGwgZGVyIFN0dW5kZW4KKyAgICAgWmVpdGFid2VpY2h1bmcgdm9uIEJlcmxpbmVyIFplaXQgYW4uCmRpZmYgLS1naXQgYS9kb2MvcHJvcHMvUF9USVRMRSBiL2RvYy9wcm9wcy9QX1RJVExFCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjQ5YWZkNTcKLS0tIC9kZXYvbnVsbAorKysgYi9kb2MvcHJvcHMvUF9USVRMRQpAQCAtMCwwICsxLDggQEAKK05BTUU6CisgICAgUF9USVRMRSAgICAgICAgICAgICAgICAgICAgICAgInRpdGxlIiAgICAgICAgICAgICAgICAgICAgICAgCisKK0RFRklOSUVSVCBJTjoKKyAgICAvc3lzL3BsYXllci9kZXNjcmlwdGlvbi5oCisKK0JFU0NIUkVJQlVORzoKKyAgICAgVGl0ZWwgZGVzIFNwaWVsZXJzLiBFcnNjaGVpbnQgaGludGVyIGRlbSBOYW1lbiBpbiBLdXJ6L0xhbmdiZXNjaHJlaWJ1bmcuCmRpZmYgLS1naXQgYS9kb2MvcHJvcHMvUF9UT09fSEVBVllfTVNHIGIvZG9jL3Byb3BzL1BfVE9PX0hFQVZZX01TRwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4yN2VmMzE1Ci0tLSAvZGV2L251bGwKKysrIGIvZG9jL3Byb3BzL1BfVE9PX0hFQVZZX01TRwpAQCAtMCwwICsxLDMxIEBACitOQU1FOgorICAgIFBfVE9PX0hFQVZZX01TRyAgICAgICAgICAgICAgICAgICAgICAidG9vX2hlYXZ5X21zZyIgICAgICAgICAgICAgICAgICAgICAgCisKK0RFRklOSUVSVCBJTjoKKyAgICAvc3lzL3RoaW5nL21vdmluZy5oCisKK0JFU0NIUkVJQlVORzoKKyAgICAgRGllc2UgUHJvcGVydHkgZW50aGFlbHQgZWluZSBNZWxkdW5nLCBkaWUgYXVzZ2VnZWJlbiB3aXJkLCB3ZW5uIGplbWFuZAorICAgICB2ZXJzdWNodCwgZWluIE9iamVrdCBpbiBlaW5lbiBCZWhhZWx0ZXIgenUgbGVnZW4sIGZ1ZXIgZGVuIGRpZXNlcyBPYmpla3QKKyAgICAgenUgc2Nod2VyIGlzdC4KKyAgICAgRGllIFByb3BlcnR5IGlzdCBpbSBCZWhhZWx0ZXIgenUgc2V0emVuLgorICAgICBJc3QgZGllc2UgUHJvcGVydHkgbmljaHQgb2RlciBhdWYgZWluZW4gbmljaHQtU3RyaW5nLVdlcnQgZ2VzZXR6dCwKKyAgICAgc28gd2lyZCBkaWUgU3RhbmRhcmRtZWxkdW5nIGF1c2dlZ2ViZW4uCisgICAgICgiPE9iamVrdD4gcGFzc3QgaW4gPEJlaGFlbHRlcj4gbmljaHQgbWVociByZWluLiIpCisgICAgIERlciBTdHJpbmcgaW4gZGVyIFByb3BlcnR5IHdpcmQgbm9jaCBkdXJjaCByZXBsYWNlX3BlcnNvbmFsKCkKKyAgICAgdmVyYXJiZWl0ZXQsIGRhcyB6dSBiZXdlZ2VuZGUgT2JqZWt0IHdpcmQgYWxzIGVyc3RlcywgZGVyIEJlaGFlbHRlciBhbHMKKyAgICAgendlaXRlcyBPYmpla3QgYW5nZWdlYmVuLiBEYW5hY2ggd2lyZCBkZXIgU3RyaW5nIGF1ZiA3OCBaZWljaGVuCisgICAgIHVtZ2Vicm9jaGVuLgorICAgICBEYXMgU2V0emVuIGVpbmVzIGxlZXJlbiBTdHJpbmdzIHVudGVyZHJ1ZWNrdCBkaWUgQXVzZ2FiZSBlaW5lciBNZWxkdW5nCisgICAgIGdhbnouCisKK0JFSVNQSUVMRToKKyAgICAgU2V0UHJvcChQX1RPT19IRUFWWV9NU0csICJXZW5uIGR1IEBXRU4xIG5vY2ggaW4gZGVuIEJldXRlbCBzdGVja2VuIgorCQkJICAgICAgIiB3dWVyZGVzdCwgd3VlcmRlIGVyIHJlaXNzZW4uIik7CisKK1NJRUhFIEFVQ0g6CisgICAgIEFlaG5saWNoZXM6IFBfRU5WX1RPT19IRUFWWV9NU0csIFBfVE9PX01BTllfTVNHLCBQX05PSU5TRVJUX01TRywKKyAgICAgICAgICAgICAgICAgUF9OT0xFQVZFX01TRywgUF9OT0RST1AsIFBfTk9HRVQgCisgICAgIEVyZm9sZzogICAgIFBfUElDS19NU0csIFBfRFJPUF9NU0csIFBfR0lWRV9NU0csIFBfUFVUX01TRywKKyAgICAgICAgICAgICAgICAgUF9XRUFSX01TRywgUF9XSUVMRF9NU0cKKyAgICAgU29uc3RpZ2VzOiAgcmVwbGFjZV9wZXJzb25hbChFKSwgL3N0ZC9saXZpbmcvcHV0X2FuZF9nZXQuYwpkaWZmIC0tZ2l0IGEvZG9jL3Byb3BzL1BfVE9PX01BTllfTVNHIGIvZG9jL3Byb3BzL1BfVE9PX01BTllfTVNHCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmUyM2NlMzIKLS0tIC9kZXYvbnVsbAorKysgYi9kb2MvcHJvcHMvUF9UT09fTUFOWV9NU0cKQEAgLTAsMCArMSwzMSBAQAorTkFNRToKKyAgICBQX1RPT19NQU5ZX01TRyAgICAgICAgICAgICAgICAgICAgICAidG9vX21hbnlfbXNnIiAgICAgICAgICAgICAgICAgICAgICAKKworREVGSU5JRVJUIElOOgorICAgIC9zeXMvdGhpbmcvbW92aW5nLmgKKworQkVTQ0hSRUlCVU5HOgorICAgICBEaWVzZSBQcm9wZXJ0eSBlbnRoYWVsdCBlaW5lIE1lbGR1bmcsIGRpZSBhdXNnZWdlYmVuIHdpcmQsIHdlbm4gamVtYW5kCisgICAgIHZlcnN1Y2h0LCBlaW4gT2JqZWt0IGluIGVpbmVuIEJlaGFlbHRlciB6dSBsZWdlbiwgZGVyIHNjaG9uIGRpZSBtYXhpbWFsZQorICAgICBBbnphaGwgYW4gT2JqZWt0ZW4gZW50aGFlbHQuCisgICAgIERpZSBQcm9wZXJ0eSBpc3QgaW0gQmVoYWVsdGVyIHp1IHNldHplbi4KKyAgICAgSXN0IGRpZXNlIFByb3BlcnR5IG5pY2h0IG9kZXIgYXVmIGVpbmVuIG5pY2h0LVN0cmluZy1XZXJ0IGdlc2V0enQsCisgICAgIHNvIHdpcmQgZGllIFN0YW5kYXJkbWVsZHVuZyBhdXNnZWdlYmVuLgorICAgICAoIkRhZnVlciBpc3QgbmljaHQgbWVociBnZW51ZyBQbGF0eiBpbiA8QmVoYWVsdGVyPi4iKQorICAgICBEZXIgU3RyaW5nIGluIGRlciBQcm9wZXJ0eSB3aXJkIG5vY2ggZHVyY2ggcmVwbGFjZV9wZXJzb25hbCgpCisgICAgIHZlcmFyYmVpdGV0LCBkYXMgenUgYmV3ZWdlbmRlIE9iamVrdCB3aXJkIGFscyBlcnN0ZXMsIGRlciBCZWhhZWx0ZXIgYWxzCisgICAgIHp3ZWl0ZXMgT2JqZWt0IGFuZ2VnZWJlbi4gRGFuYWNoIHdpcmQgZGVyIFN0cmluZyBhdWYgNzggWmVpY2hlbgorICAgICB1bWdlYnJvY2hlbi4KKyAgICAgRGFzIFNldHplbiBlaW5lcyBsZWVyZW4gU3RyaW5ncyB1bnRlcmRydWVja3QgZGllIEF1c2dhYmUgZWluZXIgTWVsZHVuZworICAgICBnYW56LgorCitCRUlTUElFTEU6CisgICAgIFNldFByb3AoUF9UT09fTUFOWV9NU0csICJBYmVyIGRlciBLb3JiIGhhdCBkb2NoIG51ciBkcmVpIEZhZWNoZXIsIGRpZSIKKwkJCSAgICAgIiBzaW5kIGFsbGUgc2Nob24gdm9sbC4iKTsKKworU0lFSEUgQVVDSDoKKyAgICAgQWVobmxpY2hlczogUF9UT09fSEVBVllfTVNHLCBQX0VOVl9UT09fSEVBVllfTVNHLCBQX05PSU5TRVJUX01TRywKKyAgICAgICAgICAgICAgICAgUF9OT0xFQVZFX01TRywgUF9OT0RST1AsIFBfTk9HRVQgCisgICAgIEVyZm9sZzogICAgIFBfUElDS19NU0csIFBfRFJPUF9NU0csIFBfR0lWRV9NU0csIFBfUFVUX01TRywKKyAgICAgICAgICAgICAgICAgUF9XRUFSX01TRywgUF9XSUVMRF9NU0cKKyAgICAgU29uc3RpZ2VzOiAgcmVwbGFjZV9wZXJzb25hbChFKSwgL3N0ZC9saXZpbmcvcHV0X2FuZF9nZXQuYwpkaWZmIC0tZ2l0IGEvZG9jL3Byb3BzL1BfVE9UQUxfQUMgYi9kb2MvcHJvcHMvUF9UT1RBTF9BQwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4yMjJjZmZhCi0tLSAvZGV2L251bGwKKysrIGIvZG9jL3Byb3BzL1BfVE9UQUxfQUMKQEAgLTAsMCArMSwyMyBAQAorTkFNRToKKyAgICBQX1RPVEFMX0FDICAgICAgICAgICAgICAgICAgICAidG90YWxfYWMiICAgICAgICAgICAgICAgICAgICAKKworREVGSU5JRVJUIElOOgorICAgIC9zeXMvbGl2aW5nL2NvbWJhdC5oCisKK0JFU0NIUkVJQlVORzoKKyAgICAgTnVtZXJpc2NoZXIgV2VydCBkZXIgQWJ3ZWhyc3RhZXJrZSBkZXMgV2VzZW5zLgorICAgICBEaWVzZXIgd2lyZCBkdXJjaCBBdWZhZGRpZXJlbiBkZXIgUF9BQyBhbGxlciBnZXRyYWdlbmVuIFJ1ZXN0dW5nZW4KKyAgICAgYmVzdGltbXQuIEF1cyBkaWVzZW0gR3J1bmQgaXN0IGRhcyBBYmZyYWdlbiBkaWVzZXIgUHJvcGVydHkgemllbWxpY2gKKyAgICAgdGV1ZXIuIEZhbGxzIGRhcyBFcmdlYm5pcyBtZWhyZmFjaCBrdXJ6IGhpbnRlcmVpbmFuZGVyIGdlYnJhdWNodCB3aXJkLAorICAgICBzb2xsdGUgZGllIFByb3BlcnR5IGF1ZiBqZWRlbiBGYWxsIG51ciBlaW5tYWwgYWJnZWZyYWd0IHVuZCBkZXIgV2VydAorICAgICBnZXNwZWljaGVydCB3ZXJkZW4uCisKK0JFTUVSS1VOR0VOOgorICAgIEF1ZiBkaWVzZSBQcm9wZXJ0eSBzb2xsdGUgbmljaHQgbWl0dGVscyBRdWVyeSgpIG9kZXIgU2V0KCkgenVnZWdyaWZmZW4KKyAgICB3ZXJkZW4sIGRhcyBTZXR6ZW4gdm9uIFF1ZXJ5LSBvZGVyIFNldG1ldGhvZGVuIGJpdHRlIGF1ZiBqZWRlbiBGYWxsCisgICAgdW50ZXJsYXNzZW4uCisKK1NJRUhFIEFVQ0g6CisgICAgUF9BQworCiswNS4wOS4yMDA4LCBaZXNzdHJhCmRpZmYgLS1naXQgYS9kb2MvcHJvcHMvUF9UT1RBTF9MSUdIVCBiL2RvYy9wcm9wcy9QX1RPVEFMX0xJR0hUCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjQxMDA2ZDIKLS0tIC9kZXYvbnVsbAorKysgYi9kb2MvcHJvcHMvUF9UT1RBTF9MSUdIVApAQCAtMCwwICsxLDIzIEBACitOQU1FOgorICAgIFBfVE9UQUxfTElHSFQgICAgICAgICAgICAgICAgICJ0b3RhbF9saWdodCIKKworREVGSU5JRVJUIElOOgorICAgIC9zeXMvcHJvcGVydGllcy5oCisKK0JFU0NIUkVJQlVORzoKKyAgICBHaWJ0IGRhcyBMaWNodGxldmVsIGFuLCBkYXMgdm9uIGVpbmVtIE9iamVrdCBhdXNnZWh0LiBIaWVyenUgd2lyZCBkYXMKKyAgICBlaWdlbmUgTGljaHRsZXZlbCBQX0xJR0hUIG1pdCBkZW0gZ2VzYW10ZW4gSW5oYWx0IGVpbmVzIENvbnRhaW5lcnMKKyAgICB2ZXJyZWNobmV0LgorCisgICAgQml0dGUgX251cl8gdWViZXIgUXVlcnlQcm9wIGF1ZiBkaWVzZSBQcm9wZXJ0eSB6dWdyZWlmZW4sCisgICAgZGEgZGFzIExpY2h0bGV2ZWwgZ2dmLiBuZXUgYmVyZWNobmV0IHdlcmRlbiBtdXNzIQorCisgICAgRWluIGRpcmVrdGVzIHNldHplbiBkaWVzZXIgUHJvcGVydHkgaXN0IE5JQ0hUIG1vZWdsaWNoLCBoaWVyenUgYml0dGUKKyAgICBQX0xJR0hUIGJlbnV0emVuIQorCitCRU1FUktVTkdFTjoKKyAgICBEYXMgaXN0IGRpZSBWT04gZWluZW0gT2JqZWt0IGF1c2dlaGVuZGUgTGljaHRzdGFlcmtlLiBGdWVyIGRhcyBJTiBlaW5lbQorICAgIFJhdW0gaGVycnNjaGVuZGUgTGljaHQgYml0dGUgUF9JTlRfTElHSFQgYWJmcmFnZW4hCisKK1NJRUhFIEFVQ0g6CisgICAgUF9MSUdIVCwgUF9JTlRfTElHSFQsIFBfUExBWUVSX0xJR0hULCBQX0xJR0hUX01PRElGSUVSLCBDYW5ub3RTZWUoKQpkaWZmIC0tZ2l0IGEvZG9jL3Byb3BzL1BfVE9UQUxfT0JKRUNUUyBiL2RvYy9wcm9wcy9QX1RPVEFMX09CSkVDVFMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNWYwMTU2NwotLS0gL2Rldi9udWxsCisrKyBiL2RvYy9wcm9wcy9QX1RPVEFMX09CSkVDVFMKQEAgLTAsMCArMSwxNiBAQAorTkFNRToKKyAgICBQX1RPVEFMX09CSkVDVFMgICAgICAgICAgICAgICAgInRvdGFsX29iamVjdHMiICAgICAgICAgICAgICAgIAorCitERUZJTklFUlQgSU46CisgICAgL3N5cy9jb250YWluZXIuaAorCitCRVNDSFJFSUJVTkc6CisgICAgIEFuemFobCBkZXIgT2JqZWt0ZSBpbSBDb250YWluZXIuIERpZXNlIFByb3BlcnR5IGthbm4gbWFuIG51ciBhYmZyYWdlbiEKKyAgICAgRXMgd2VyZGVuIG51ciBPYmpla3RlIGdlemFlaGx0LCBkZXJlbiBNZXRob2RlIHNob3J0KCkgZWluZW4KKyAgICAgV2VydCAhPSAwIHp1cnVlY2tnaWJ0LiBJbnNvZmVybiBrb2VubmVuIFNwaWVsZXJuIGJlbGllYmlnCisgICAgIHZpZWxlIHVuc2ljaHRiYXJlIE9iamVrdGUgZ2VnZWJlbiB3ZXJkZW4gb2huZSBzaWUgenUgYmVoaW5kZXJuLgorCitTSUVIRSBBVUNIOgorICAgICBQX01BWF9PQkpFQ1RTCisKKzI2LkphbiAyMDA1IEdsb2luc29uCmRpZmYgLS1naXQgYS9kb2MvcHJvcHMvUF9UT1RBTF9XQyBiL2RvYy9wcm9wcy9QX1RPVEFMX1dDCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjM1ZWY0YTkKLS0tIC9kZXYvbnVsbAorKysgYi9kb2MvcHJvcHMvUF9UT1RBTF9XQwpAQCAtMCwwICsxLDI3IEBACitOQU1FOgorCVBfVE9UQUxfV0MJCQkidG90YWxfd2MiCisKK0RFRklOSUVSVCBJTjoKKwkvc3lzL3Byb3BlcnRpZXMuaAorCitCRVNDSFJFSUJVTkc6CisJSW4gZGllc2VyIFByb3BlcnR5IHdpcmQgZGVyIG51bWVyaXNjaGUgV2VydCBkZXIgQW5ncmlmZnNzdGFlcmtlCisJZWluZXMgTGViZXdlc2VucyByZWdpc3RyaWVydC4KKyAgSGllcnp1IHdlcmRlbiBkaWUgUF9XQyB2b24gUF9XRUFQT04gYnp3LiBQX0hBTkRTIHNvd2llIGRpZSBLcmFmdCBkZXMKKyAgTGViZXdlc2VucyBiZXJ1ZWNrc2ljaHRpZ3QuCisJTmljaHQgZWluZ2VyZWNobmV0IGluIGRpZSBBbmdyaWZmc3N0YWVya2Ugc2luZCBuYXR1ZXJsaWNoIEV4dHJhc3BlbGxzIHVuZAorICAtc2tpbGxzIGRlcyBBbmdyZWlmZXJzLgorICBCcmF1Y2h0IG1hbiBkZW4gV2VydCBtZWhyZmFjaCBrdXJ6IGhpbnRlcmVpbmFuZGVyLCBzb2xsdGUgbWFuIGRpZSBQcm9wIGFiZXIKKyAgbnVyIGVpbm1hbCBhYmZyYWdlbiB1bmQgZGVuIFdlcnQgc3BlaWNoZXJuIChzb2Zlcm4gc2ljaCBpbiBkZXIgWndpc2NoZW56ZWl0CisgIG5pY2h0cyBhbiBkZXIgV2FmZmUsIGRlbiBIYW5kcyBvZGVyIGRlbiBBdHRyaWJ1dGVuIGRlcyBMZWJlbndlc2VucyBhZW5kZXJ0KS4KKworQkVNRVJLVU5HRU46CisgIEF1ZiBkaWVzZSBQcm9wZXJ0eSBzb2xsdGUgbmljaHQgbWl0dGVscyBRdWVyeSgpIG9kZXIgU2V0KCkgenVnZWdyaWZmZW4gCisgIHdlcmRlbiwgZGFzIFNldHplbiB2b24gUXVlcnktIG9kZXIgU2V0bWV0aG9kZW4gYml0dGUgYXVmIGplZGVuIEZhbGwgCisgIHVudGVybGFzc2VuLgorCitTSUVIRSBBVUNIOgorCVBfSEFORFMsIFBfV0MsIFBfWFAKKworLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorMDUuMDkuMjAwOCwgWmVzc3RyYQpkaWZmIC0tZ2l0IGEvZG9jL3Byb3BzL1BfVE9UQUxfV0VJR0hUIGIvZG9jL3Byb3BzL1BfVE9UQUxfV0VJR0hUCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjJiNjJkYjEKLS0tIC9kZXYvbnVsbAorKysgYi9kb2MvcHJvcHMvUF9UT1RBTF9XRUlHSFQKQEAgLTAsMCArMSw4IEBACitOQU1FOgorICAgIFBfVE9UQUxfV0VJR0hUICAgICAgICAgICAgICAgICJ0b3RhbF93ZWlnaHQiICAgICAgICAgICAgICAgIAorCitERUZJTklFUlQgSU46CisgICAgL3N5cy90aGluZy9yZXN0cmljdGlvbnMuaAorCitCRVNDSFJFSUJVTkc6CisgICAgIEdld2ljaHQgaW5jbC4gSW5oYWx0IGluIEdyYW1tLiBQX1dFSUdIVF9QRVJDRU5UIHdpcmQgYmVydWVja3NpY2h0aWd0LgpkaWZmIC0tZ2l0IGEvZG9jL3Byb3BzL1BfVE9VQ0hfREVUQUlMUyBiL2RvYy9wcm9wcy9QX1RPVUNIX0RFVEFJTFMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZDA2NzBmNgotLS0gL2Rldi9udWxsCisrKyBiL2RvYy9wcm9wcy9QX1RPVUNIX0RFVEFJTFMKQEAgLTAsMCArMSwyNCBAQAorTkFNRToKKyAgICBQX1RPVUNIX0RFVEFJTFMgICAgICAgICAgICAidG91Y2hfZGV0YWlscyIKKworREVGSU5JRVJUIElOOgorICAgIC9zeXMvdGhpbmcvZGVzY3JpcHRpb24uaAorCitCRVNDSFJFSUJVTkc6CisgICAgRGllc2UgUHJvcGVydHkgZW50c3ByaWNodCBkZW0gUF9ERVRBSUxTIGZ1ZXIgU3RhbmRhcmRkZXRhaWxzLAorICAgIG51ciB3ZXJkZW4gaGllcmluIEdlcnVlY2hlIGdlc3BlaWNoZXJ0OgorICAgIERpZXNlIFByb3BlcnR5IGVudGhhZWx0IGVpbiBNYXBwaW5nLCBpbiBkZXIgRGV0YWlscyBpbSBPYmpla3QKKyAgICBkZWZpbmllcnQgd2VyZGVuIHVuZCBCZXNjaHJlaWJ1bmdlbiwgZGllIGF1c2dlZ2ViZW4gd2VyZGVuLCB3ZW5uIG1hbgorICAgIHNpY2ggZGllc2UgRGV0YWlscyBhbnNjaGF1dC4KKworQkVNRVJLVU5HRU46CisgICAgTWFuIHNvbGx0ZSBkaWVzZSBQcm9wZXJ0eSBuaWNodCBwZXIgSGFuZCB2ZXJhZW5kZXJuLCBzb25kZXJuIGRpZQorICAgIEZ1bmt0aW9uZW4gbnV0emVuLgorCitTSUVIRSBBVUNIOgorICAgIFNldHplbjogICAgQWRkVG91Y2hEZXRhaWwoKQorICAgIExvZXNjaGVuOiAgUmVtb3ZlVG91Y2hEZXRhaWwoKQorICAgIEFlaG5saWNoOiAgQWRkRGV0YWlsKCksIFBfREVUQUlMUworICAgIFNvbnN0aWdlczogR2V0RGV0YWlsKCksIGJyZWFrX3N0cmluZygpCisKKzI3LiBKYW4gMjAxMyBHbG9pbnNvbgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2RvYy9wcm9wcy9QX1RQT1JUX0NPU1RfSU4gYi9kb2MvcHJvcHMvUF9UUE9SVF9DT1NUX0lOCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmQxNWU5NDgKLS0tIC9kZXYvbnVsbAorKysgYi9kb2MvcHJvcHMvUF9UUE9SVF9DT1NUX0lOCkBAIC0wLDAgKzEsOSBAQAorTkFNRToKKyAgICBQX1RQT1JUX0NPU1RfSU4gICAgICAgICAgICAgICAidHBvcnRfY29zdF9pbiIgICAgICAgICAgICAgICAKKworREVGSU5JRVJUIElOOgorICAgIC9zeXMvcHJvcGVydGllcy5oCisKK0JFU0NIUkVJQlVORzoKKyAgICAgSW4gZWluZW0gUmF1bSBtaXQgU2VoZXJ0b3I6IEtvc3RlbmFudGVpbCwgdW0gc2ljaCBpbiBkZW4gUmF1bSB6dQorICAgICB0ZWxlcG9ydGllcmVuCmRpZmYgLS1naXQgYS9kb2MvcHJvcHMvUF9UUE9SVF9DT1NUX09VVCBiL2RvYy9wcm9wcy9QX1RQT1JUX0NPU1RfT1VUCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjM2OWEzNWQKLS0tIC9kZXYvbnVsbAorKysgYi9kb2MvcHJvcHMvUF9UUE9SVF9DT1NUX09VVApAQCAtMCwwICsxLDkgQEAKK05BTUU6CisgICAgUF9UUE9SVF9DT1NUX09VVCAgICAgICAgICAgICAgInRwb3J0X2Nvc3Rfb3V0IiAgICAgICAgICAgICAgCisKK0RFRklOSUVSVCBJTjoKKyAgICAvc3lzL3Byb3BlcnRpZXMuaAorCitCRVNDSFJFSUJVTkc6CisgICAgIEluIGVpbmVtIFJhdW0gbWl0IFNlaGVydG9yOiBLb3N0ZW5hbnRlaWwsIHNpY2ggYXVzIGRlbSBSYXVtIGhlcmF1cworICAgICB6dSB0ZWxlcG9ydGllcmVuCmRpZmYgLS1naXQgYS9kb2MvcHJvcHMvUF9UUkFOS19GSU5ERU4gYi9kb2MvcHJvcHMvUF9UUkFOS19GSU5ERU4KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOGRiMjM2NQotLS0gL2Rldi9udWxsCisrKyBiL2RvYy9wcm9wcy9QX1RSQU5LX0ZJTkRFTgpAQCAtMCwwICsxLDkgQEAKK05BTUU6CisgICAgUF9UUkFOS19GSU5ERU4gICAgICAgICAgICAgICAgInRyYW5rX2ZpbmRlbiIgICAgICAgICAgICAgICAgCisKK0RFRklOSUVSVCBJTjoKKyAgICAvc3lzL3BsYXllci9wb3Rpb24uaAorCitCRVNDSFJFSUJVTkc6CisgICAgIFdlbm4gZGllIFByb3BlcnR5IGF1ZiAxIHN0ZWh0IGthbm4gaW1tZXIgZWluIFphdWJlcnRyYW5rIGdlZnVuZGVuCisgICAgIHdlcmRlbiwgYXVjaCB3ZW5uIGVyIG5pY2h0IGluIGRlciBMaXN0ZSBkZXMgU3BpZWxlcnMgc3RlaHQuCmRpZmYgLS1naXQgYS9kb2MvcHJvcHMvUF9UUkFOU1BBUkVOVCBiL2RvYy9wcm9wcy9QX1RSQU5TUEFSRU5UCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmEwODFiMDAKLS0tIC9kZXYvbnVsbAorKysgYi9kb2MvcHJvcHMvUF9UUkFOU1BBUkVOVApAQCAtMCwwICsxLDI5IEBACitQX1RSQU5TUEFSRU5UCitOQU1FOgorICAgICBQX1RSQU5TUEFSRU5UICAgICAgICAgICAgICAgICAidHJhbnNwYXJlbnQiCisKK0RFRklOSUVSVCBJTjoKKyAgICAgL3N5cy9jb250YWluZXIuaAorCitCRVNDSFJFSUJVTkc6CisgICAgIGlzdCAhPSAwLCB3ZW5uIGluIGVpbmVuIENvbnRhaW5lciBoaW5laW4gKG9mZmVuKSBvZGVyIGF1cyBlaW5lbSAKKyAgICAgaGluYXVzZ2VzY2hhdXQgd2VyZGVuIGthbm4uCisKKyAgICAgU2NoYXV0IG1hbiBhdXMgZWluZW0gaGluYXVzLCBlcmhhZWx0IGRlciBTcGllbGVyIG5vcm1hbGVyd2Vpc2UgZGllIAorICAgICBNZWxkdW5nICdBdXNzZXJoYWxiIHNpZWhzdCBEdTonLiBEaWVzZSBrYW5uIGplZG9jaCBkdXJjaCBlaW5lIGVpZ2VuZSwgCisgICAgIHN0aW1taWdlcmUgIE1lbGR1bmcgZXJzZXR6dCB3ZXJkZW4sIHdlbm4gaW4gUF9UUkFOU1BBUkVOVCBlaW4gU3RyaW5nIAorICAgICBtaXQgZGllc2VyIE1lbGR1bmcgYW5nZWdlYmVuIHdpcmQuCisKK0JFSVNQSUVMOgorICAgICBTZXRQcm9wKFBfVFJBTlNQQVJFTlQsMSk7IC0+IG5vcm1hbGUgTWVsZHVuZworCisgICAgIFNldFByb3AoUF9UUkFOU1BBUkVOVCwiVm9tIFJ1ZWNrZW4gZGVzIFBmZXJkZXMgYXVzIHNpZWhzdCBEdTpcbiIpOworCisgICAgIERpZXNlIE1lbGR1bmcgaXN0IG5hdHVlcmxpY2ggbnVyIGRhbm4gc2lubnZvbGwsIHdlbm4gZXMgc2ljaAorICAgICBhdWNoIHRhdHNhZWNobGljaCB1bSBlaW4gUGZlcmQgaGFuZGVsdCA6LSkKKworU0lFSEUgQVVDSDoKKyAgICAgaW50X2xvbmcoKQorCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCitMYXN0IG1vZGlmaWVkOiBNb24gSnVsIDE4IDI0OjAwOjAwIDIwMDEgYnkgVGlsbHkKZGlmZiAtLWdpdCBhL2RvYy9wcm9wcy9QX1RSQVZFTF9DTURTIGIvZG9jL3Byb3BzL1BfVFJBVkVMX0NNRFMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMzJmNmY2NQotLS0gL2Rldi9udWxsCisrKyBiL2RvYy9wcm9wcy9QX1RSQVZFTF9DTURTCkBAIC0wLDAgKzEsMzggQEAKK05BTUU6CisgICAgUF9UUkFWRUxfQ01EUyAgICAgICAgICAgICAgICAgICAidHJhdmVsX2NtZHMiICAgICAgICAgICAgICAgICAgIAorCitERUZJTklFUlQgSU46CisgICAgL3N5cy90cmFuc3BvcnQuaAorCitCRVNDSFJFSUJVTkc6CisgICAgRWluIEFycmF5IG1pdCBCZWZlaGxlbiwgZGllIHp1bSBWZXJsYXNzZW4gVU5EIEJldHJldGVuIGRlcyBUcmFucy0KKyAgICBwb3J0ZXJzIGZ1ZWhyZW4uIAorCitCRUlTUElFTDoKKyAgICB2b2lkIGNyZWF0ZSgpCisgICAgeworICAgICAgOjpjcmVhdGUoKTsKKworICAgICAgU2V0UHJvcChQX1RSQVZFTF9DTURTLCh7ICJzdGVpZyIsInN0ZWlnZSIgfSkgKTsKKworICAgIH0KKworICAgIEFscyBQYXJhbWV0ZXIgd2VyZGVuIGhpZXIgYXVzc2NobGllc3NsaWNoICdhdWYsaW4nIHVuZCAndm9uLGF1cycKKyAgICB2ZXJhcmJlaXRldC4KKworICAgIHN0ZWlnZSBhdWZ8aW4gIDx4eHg+ICAgIGZ1ZWhydCBhbHNvIHp1bSBCZXRyZXRlbiBkZXMgVHJhbnNwb3J0ZXJzLAorICAgIHN0ZWlnZSB2b258YXVzIDx4eHg+ICAgIGRhZ2VnZW4gZnVlaHJ0IHp1bSBWZXJsYXNzZW4gZGVzc2VsYmVuLgorCitCRU1FUktVTkdFTjoKKyAgICBVbSAvc3RkL3RyYW5zcG9ydC5jIG5pY2h0IGF1Znp1YmxhZWhlbiwgd2VyZGVuIHdlaXRlcmUgUGFyYW1ldGVyIHdpZQorICAgIGV0d2EgJ3N0ZWlnZSBhdWZ8aW4gZGFzfGRpZXxkZW4geHh4JyBfbmljaHRfIHVudGVyc3R1ZXR6dCEKKworICAgIEhpZXIgbXVzcyBkZXIgdmVyYW50d29ydGxpY2hlIE1hZ2llciBzY2hvbiBlaW5lIGVpZ2VuZSBMb2VzdW5nIGZpbmRlbgorICAgIHVuZCBpbiBzZWluZW4gVHJhbnNwb3J0ZXIgc2NocmVpYmVuLgorCitTSUVIRSBBVUNIOgorICAgIFBfTEVBVkVGQUlMLCBQX0VOVEVSRkFJTCwgUF9FTlRFUkNNRFMsIFBfTEVBVkVDTURTLCB0cmFuc3BvcnRlciwKKworTEVUWlRFUiBBRU5ERVJVTkc6CisgICAgRG9uLCAyNC4wMS4yMDAyLCAxMDoxNTowN2ggdm9uIFRpbGx5CisgICAgClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZG9jL3Byb3BzL1BfVFJBVkVMX0lORk8gYi9kb2MvcHJvcHMvUF9UUkFWRUxfSU5GTwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5iM2E1MDJlCi0tLSAvZGV2L251bGwKKysrIGIvZG9jL3Byb3BzL1BfVFJBVkVMX0lORk8KQEAgLTAsMCArMSwzMSBAQAorTkFNRToKKyAgICBQX1RSQVZFTF9JTkZPICAgICAgICAgICAgICAgICAidHJhdmVsX2luZm8iCisKK0RFRklOSUVSVCBJTjoKKyAgICAvc3lzL3RyYW5zcG9ydC5oCisKK0JFU0NIUkVJQlVORzoKKyAgICBBcnJheSBtaXQgSW5mb3JtYXRpb25lbiB6dXIgdm9tIFNwaWVsZXIgZ2V3dWVuc2NodGVuIFJlaXNlcm91dGUuCisKKyAgICBbMF0gICAgICAgIERlciBSYXVtIChvYmplY3QpLCBpbiBkZW0gZGllIFJlaXNlcm91dGUgbW9tZW50YW4gCisgICAgICAgICAgICAgICAnYWt0aXYnIGlzdC4gTnVyIGhpZXIgd2lyZCBzaWUgYmVydWVja3NpY2h0aWd0LgorCisgICAgWzFdICAgICAgICBEYXMgZ2V3dWVuc2NodGUgVHJhbnNwb3J0bWl0dGVsIChvYmplY3QpIGZhbGxzIAorICAgICAgICAgICAgICAgZ2V3YWVobHQuIEFuc29uc3RlbiAwLgorCisgICAgWzJdICAgICAgICBEZXIgZ2V3dWVuc2NodGUgWmllbG9ydCAoc3RyaW5nKSBvZGVyIDAgKHppZWxsb3MpLgorCisgICAgWzNdICAgICAgICBEZXIgZ2V3dWVuc2NodGUgWmllbG9ydCBhbHMgUmljaHR1bmcgKHN0cmluZyksIGZhbGxzCisgICAgICAgICAgICAgICBnZXdhZWhsdCAoei5CLiAnenVyIEZldWVyaW5zZWwnKS4gU29uc3QgMC4gV2lyZCBhdXMKKyAgICAgICAgICAgICAgIFBfSEFSQk9VUiBkZXMgWmllbHJhdW1lcyBhdXNnZWxlc2VuLgorCitCRU1FUktVTkdFTjoKKyAgICBEaWVzZSBQcm9wZXJ0eSB3aXJkIHZvbiAvc3RkL3RyYW5zcG9ydC5jIHNvd2llIHN0ZC9wbGF5ZXIvdHJhdmVsLmMKKyAgICB2ZXJ3ZW5kZXQsIHVuZCBzb2xsdGUgTklDSFQgdm9uIGFuZGVyZW4gT2JqZWt0ZW4gb2RlciBwZXIgSGFuZCAKKyAgICB2ZXJhZW5kZXJ0IHdlcmRlbiEKKworU0lFSEUgQVVDSDoKKyAgICAvc3RkL3RyYW5zcG9ydC5jLCAvc3RkL3BsYXllci90cmF2ZWwuYywgcmVpc2UKKworTEVUWlRFUiBBRU5ERVJVTkc6CisgICAgRG9uLCAyNC4wMS4yMDAyLCAxMDoxNTowN2ggdm9uIFRpbGx5CmRpZmYgLS1naXQgYS9kb2MvcHJvcHMvUF9UUkFZIGIvZG9jL3Byb3BzL1BfVFJBWQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4zNGM5ZDkwCi0tLSAvZGV2L251bGwKKysrIGIvZG9jL3Byb3BzL1BfVFJBWQpAQCAtMCwwICsxLDggQEAKK05BTUU6CisgICAgUF9UUkFZICAgICAgICAgICAgICAgICAgICAgICAgInRyYXkiICAgICAgICAgICAgICAgICAgICAgICAgCisKK0RFRklOSUVSVCBJTjoKKyAgICAvc3lzL3Byb3BlcnRpZXMuaAorCitCRVNDSFJFSUJVTkc6CisgICAgKioqIEtFSU5FIEJFU0NIUkVJQlVORyBWT1JIQU5ERU4gKioqCmRpZmYgLS1naXQgYS9kb2MvcHJvcHMvUF9UVFkgYi9kb2MvcHJvcHMvUF9UVFkKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOWU0YWRlZAotLS0gL2Rldi9udWxsCisrKyBiL2RvYy9wcm9wcy9QX1RUWQpAQCAtMCwwICsxLDI4IEBACitOQU1FOgorICAgIFBfVFRZICAgICAgICAgICAgICAgICAgICAgICAgICJ0dHkiCisKK0RFRklOSUVSVCBJTjoKKyAgICAvc2VjdXJlL3RlbG5ldG5lZy5oCisKK0JFU0NIUkVJQlVORzoKKyAgICAgTmFtZSBkZXIgVGVybWluYWxlbXVsYXRpb24sIGRpZSBkZXIgU3BpZWxlciBudXR6dC4KKyAgICAgRXMgZXhpc3RpZXJlbiBiaXNoZXIgImR1bWIiLCAidnQxMDAiIHVuZCAiYW5zaSIuCisKKwkKK0FOTUVSS1VORzoKKyAgICAgRmFyYmVuIGR1ZXJmZW4gYXVzc2NobGllc3NsaWNoIGJlaSBQX1RUWT09ImFuc2kiIGJlbnV0enQgd2VyZGVuLgorICAgICBCZWkgbmljaHQgZmFyYmZhZWhpZ2VuIFRlcm1pbmFscyBrb2VubmVuIEFOU0ktQ29kZXMgZGllIGdlc2FtdGUKKyAgICAgQXVzZ2FiZSB6ZXJzY2hpZXNzZW4hCisKKyAgICAgRGllIEF0dHJpYnV0ZSBmZXR0LCB1bnRlcnN0cmljaGVuLCBibGlua2VuZCB1bmQgaW52ZXJzIGtvZW5uZW4gYXVjaAorICAgICBzY2hvbiB2b24gdnQxMDAtVGVybWluYWxzIGRhcmdlc3RlbGx0IHdlcmRlbi4gQWJlciBuaWNodCB1ZWJlcmFsbAorICAgICBzaW5kIGFsbGUgQXR0cmlidXRlL0ZhcmJlbiBpbXBsZW1lbnRpZXJ0LgorCisgICAgIEJlaSBhbGxlbiBBTlNJLUNvZGVzIHNpbmQgZHJlaSBTYWNoZW4genUgYmVhY2h0ZW46CisgICAgIAorICAgICAgICAxKSBTcGFyc2FtIGJlbnV0emVuISBBdWZnZXp3dW5nZW5lIEhlcnZvcmhlYnVuZ2VuIGtvZW5uZW4KKwkgICBTcGllbGVyIGdhbnogc2NobmVsbCBuZXJ2ZW4uCisKKwkyKSBOaWNodCBqZWRlciBiZW51dHp0IGRpZXNlbGJlIEhpbnRlcmdydW5kZmFyYmUhCisKKwkzKSBTcGFyc2FtIGJlbnV0emVuISBCZXNlciBub2NoOiBudXIgaW0gTm90ZmFsbCEKZGlmZiAtLWdpdCBhL2RvYy9wcm9wcy9QX1RUWV9DT0xTIGIvZG9jL3Byb3BzL1BfVFRZX0NPTFMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMTcxNmEzMwotLS0gL2Rldi9udWxsCisrKyBiL2RvYy9wcm9wcy9QX1RUWV9DT0xTCkBAIC0wLDAgKzEsMjIgQEAKK05BTUU6CisgICAgUF9UVFlfQ09MUyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAidHR5X2NvbHMiCisKK0RFRklOSUVSVCBJTjoKKyAgICAvc2VjdXJlL3RlbG5ldG5lZy5oCisKK0JFU0NIUkVJQlVORzoKKyAgICBJbiBkaWVzZXIgUHJvcGVydGllcyBzdGVodCBkaWUgQW56YWhsIGRlciBTcGFsdGVuLCBkaWUgZGFzIAorICAgIFRlcm1pbmFsZmVuc3RlciBkZXMgU3BpZWxlcnMgZGVyemVpdCBoYXQuCisKKyAgICBWb3JhdXNzZXR6dW5nIGhpZXJmdWVyIGlzdCBhbGxlcmRpbmdzLCBkYXNzIGRhcyBUZWxuZXQgZGVzIFNwaWVsZXJzCisgICAgVGVsbmV0bmVnb3RpYXRpb25zIHVudGVyc3R1ZXR6dCwgYW5zb25zdGVuIGJsZWlidCBkaWVzZSBQcm9wZXJ0eQorICAgIGxlZXIuCisgICAgRGFzIFNldHplbiBkZXIgUHJvcGVydHkgYWVuZGVydCBkaWUgRmVuc3Rlcmdyb2Vzc2UgZGVzIFNwaWVsZXJzCisgICAgbmF0dWVybGljaCBuaWNodC4KKworU0lFSEUgQVVDSDoKKyAgICBQX1RUWV9ST1dTLCBQX1RUWV9UWVBFLCBQX1RUWV9TSE9XCisKK0xFVFpURSBBZU5ERVJVTkc6CisgICAgU2F0LCAwNi4wMi4xOTk5LCAxNDowMDowMCB2b24gUGFyYWNlbHN1cworCmRpZmYgLS1naXQgYS9kb2MvcHJvcHMvUF9UVFlfUk9XUyBiL2RvYy9wcm9wcy9QX1RUWV9ST1dTCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjEyOTRkOWIKLS0tIC9kZXYvbnVsbAorKysgYi9kb2MvcHJvcHMvUF9UVFlfUk9XUwpAQCAtMCwwICsxLDIyIEBACitOQU1FOgorICAgIFBfVFRZX1JPV1MgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInR0eV9yb3dzIgorCitERUZJTklFUlQgSU46CisgICAgL3NlY3VyZS90ZWxuZXRuZWcuaAorCitCRVNDSFJFSUJVTkc6CisgICAgSW4gZGllc2VyIFByb3BlcnRpZXMgc3RlaHQgZGllIEFuemFobCBkZXIgWmVpbGVuLCBkaWUgZGFzCisgICAgVGVybWluYWxmZW5zdGVyIGRlcyBTcGllbGVycyBkZXJ6ZWl0IGhhdC4KKworICAgIFZvcmF1c3NldHp1bmcgaGllcmZ1ZXIgaXN0IGFsbGVyZGluZ3MsIGRhc3MgZGFzIFRlbG5ldCBkZXMgU3BpZWxlcnMKKyAgICBUZWxuZXRuZWdvdGlhdGlvbnMgdW50ZXJzdHVldHp0LCBhbnNvbnN0ZW4gYmxlaWJ0IGRpZXNlIFByb3BlcnR5CisgICAgbGVlci4KKyAgICBEYXMgU2V0emVuIGRlciBQcm9wZXJ0eSBhZW5kZXJ0IGRpZSBGZW5zdGVyZ3JvZXNzZSBkZXMgU3BpZWxlcnMKKyAgICBuYXR1ZXJsaWNoIG5pY2h0LgorCitTSUVIRSBBVUNIOgorICAgIFBfVFRZX0NPTFMsIFBfVFRZX1RZUEUsIFBfVFRZX1NIT1cKKworTEVUWlRFIEFlTkRFUlVORzoKKyAgICBTYXQsIDA2LjAyLjE5OTksIDE0OjAwOjAwIHZvbiBQYXJhY2Vsc3VzCisKZGlmZiAtLWdpdCBhL2RvYy9wcm9wcy9QX1RUWV9TSE9XIGIvZG9jL3Byb3BzL1BfVFRZX1NIT1cKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZjcyNzQzMwotLS0gL2Rldi9udWxsCisrKyBiL2RvYy9wcm9wcy9QX1RUWV9TSE9XCkBAIC0wLDAgKzEsMTcgQEAKK05BTUU6CisgICAgUF9UVFlfU0hPVyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAidHR5X3Nob3ciCisKK0RFRklOSUVSVCBJTjoKKyAgICAvc2VjdXJlL3RlbG5ldG5lZy5oCisKK0JFU0NIUkVJQlVORzoKKyAgICBCZWkgVGVsbmV0cywgZGllIFRlbG5ldG5lZ290aWF0aW9ucyB1bnRlcnN0dWV0emVuLCB3aXJkIGVpbmUgQWVuZGVydW5nCisgICAgZGVyIEZlbnN0ZXJncm9lc3NlIGRlbSBTcGllbGVyb2JqZWt0IG1pdGdldGVpbHQuIFN0ZWh0IGluIFBfVFRZX1NIT1cKKyAgICBlaW4gV2VydCB1bmdsZWljaCBOdWxsLCB3aXJkIGRlbSBTcGllbGVyIGRpZXNlIEFlbmRlcnVuZyBtaXRnZXRlaWx0LgorCitTSUVIRSBBVUNIOgorICAgIFBfVFRZX1JPV1MsIFBfVFRZX0NPTFMsIFBfVFRZX1RZUEUsIHRlbG5lZ3MKKworTEVUWlRFIEFlTkRFUlVORzoKKyAgICBTYXQsIDA2LjAyLjE5OTksIDE0OjAwOjAwIHZvbiBQYXJhY2Vsc3VzCisKZGlmZiAtLWdpdCBhL2RvYy9wcm9wcy9QX1RUWV9UWVBFIGIvZG9jL3Byb3BzL1BfVFRZX1RZUEUKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNjkzNWIyMwotLS0gL2Rldi9udWxsCisrKyBiL2RvYy9wcm9wcy9QX1RUWV9UWVBFCkBAIC0wLDAgKzEsMjMgQEAKK05BTUU6CisgICAgUF9UVFlfVFlQRSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAidHR5X3R5cGUiCisKK0RFRklOSUVSVCBJTjoKKyAgICAvc2VjdXJlL3RlbG5ldG5lZy5oCisKK0JFU0NIUkVJQlVORzoKKyAgICBJbiBkaWVzZXIgUHJvcGVydGllcyBzdGVodCBkZXIgVGVybWluYWx0eXAsIGRlbiBlaW4gU3BpZWxlciBsb2thbCBhdWYKKyAgICBzZWluZW0gUmVjaG5lciB2ZXJ3ZW5kZXQuCisKKyAgICBWb3JhdXNzZXR6dW5nIGhpZXJmdWVyIGlzdCBhbGxlcmRpbmdzLCBkYXNzIGRhcyBUZWxuZXQgZGVzIFNwaWVsZXJzCisgICAgVGVsbmV0bmVnb3RpYXRpb25zIHVudGVyc3R1ZXR6dCwgYW5zb25zdGVuIGJsZWlidCBkaWVzZSBQcm9wZXJ0eQorICAgIGxlZXIuIERpZSBtZWlzdGVuIFRlbG5ldHMvQ2xpZW50cyBnZWJlbiBpaHJlbiBUZXJtaW5hbHR5cCBhbGxlcmRpbmdzCisgICAgbmljaHQgcHJlaXMuCisgICAgRGFzIFNldHplbiBkZXIgUHJvcGVydHkgYWVuZGVydCBkZW4gVGVybWluYWx0eXAgZGVzIFNwaWVsZXJzCisgICAgbmF0dWVybGljaCBuaWNodC4KKworU0lFSEUgQVVDSDoKKyAgICBQX1RUWV9DT0xTLCBQX1RUWV9ST1dTLCBQX1RUWV9TSE9XCisKK0xFVFpURSBBZU5ERVJVTkc6CisgICAgU2F0LCAwNi4wMi4xOTk5LCAxNDowMDowMCB2b24gUGFyYWNlbHN1cworCmRpZmYgLS1naXQgYS9kb2MvcHJvcHMvUF9VTklUX0RFQ0FZX0ZMQUdTIGIvZG9jL3Byb3BzL1BfVU5JVF9ERUNBWV9GTEFHUwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5mOTI0ZmY3Ci0tLSAvZGV2L251bGwKKysrIGIvZG9jL3Byb3BzL1BfVU5JVF9ERUNBWV9GTEFHUwpAQCAtMCwwICsxLDcwIEBACitQX1VOSVRfREVDQVlfRkxBR1MKKworTkFNRToKKyAgICAgUF9VTklUX0RFQ0FZX0ZMQUdTCQkJCQkidW5pdF9kZWNheV9mbGFncyIKKworREVGSU5JRVJUIElOOgorICAgICAvc3lzL3VuaXQuaAorCitCRVNDSFJFSUJVTkc6CisgICAgIE1pdCBkaWVzZXIgUHJvcCBrYW5uIGRhcyBaZXJmYWxsc3ZlcmhhbHRlbiBnZXN0ZXVlcnQgd2VyZGVuLCBlbnR3ZWRlcgorICAgICBmdWVyIGFsbGUgQ2xvbmVzIGR1cmNoIFNldHplbiBpbiBkZXIgQmx1ZXByaW50IG9kZXIgZnVlciBlaW56ZWxuZSBDbG9uZXMuCisKKyAgICAgSW4gZGllc2VyIFByb3Aga29lbm5lbiBtb21lbnRhbiA0IEZsYWdzIGdlc2V0enQgd2VyZGVuOgorICAgICAtIE5PX0RFQ0FZOiAKKyAgICAgICAgICBaZXJmYWxsIGlzdCBhYmdlc2NoYWx0ZXQuCisgICAgIC0gTk9fREVDQVlfVU5USUxfTU9WRTogCisgICAgICAgICAgRGVyIFplcmZhbGwgaXN0IHNvbGFuZ2UgYXVzZ2VzZXR6dCwgYmlzIGRpZXNlcyBPYmpla3QgaW4gZWluIGFuZGVyZXMKKyAgICAgICAgICBFbnYgYmV3ZWd0IHdpcmQuIFNldHp0IGFsc28gZWluIE5QQyBiZWltIEFkZEl0ZW0oKSBkaWVzZSBQcm9wLAorICAgICAgICAgIHplcmZhZWxsdCBzZWluZSBVbml0IG5pY2h0LCBiaXMgc2llIGJld2VndCB3dXJkZSAoTGVpY2hlLCBTcGllbGVyCisgICAgICAgICAgZXRjLikuIEhpZXJiZWkgemFlaGx0IGRhcyBtb3ZlKCkgbmljaHQsIHdlbm4gZGFzIE9iamVrdCBub2NoIGtlaW4KKyAgICAgICAgICBFbnYgaGF0dGUsIGVzIHphZWhsZW4gbnVyIE1vdmVzIHZvbiBlaW5lbSBFbnYgaW4gZWluIGFuZGVyZXMgRW52LgorICAgICAgICAgIERpZXNlcyBGbGFnIHNvbGx0ZSBudXIgaW4gQ2xvbmVzIGdlc2V0enQgd2VyZGVuLgorICAgICAtIElOQUNDVVJBVEVfREVDQVkKKyAgICAgICAgICBTb2xsZW4gei5iLiA0NS4zNCBFaW5oZWl0ZW4gemVyZmFsbGVuLCB3aXJkIGRlciBSZXN0IHZvbiAwLjM0CisgICAgICAgICAgbm9ybWFsZXJ3ZWlzZSBhbHMgV2FocnNjaGVpbmxpY2hrZWl0IGF1ZmdlZmFzc3QsIGRhc3MgZWluZQorICAgICAgICAgIHp1c2FldHpsaWNoZSBFaW5oZWl0IHplcmZhZWxsdC4gRGllc2VzIEZsYWcgc29yZ3QgZGFmdWVyLCBkYXNzCisgICAgICAgICAgZGllc2VyIFJlc3Qgd2VnZ2V3b3JmZW4gd2lyZCB1bmQgZWluZmFjaCA0NSBFaW5oZWl0ZW4gemVyZmFsbGVuLgorICAgICAgICAgIEdsZWljaHplaXRpZyB3aXJkIGJlaSBkaWVzZW0gRmxhZyBhYmVyIF9pbW1lciBtaW5fIDEgRWluaGVpdAorICAgICAgICAgIHplcnN0b2VydCEKKyAgICAgLSBBQlNPTFVURV9ERUNBWQorICAgICAgICAgIFBfVU5JVF9ERUNBWV9RVU9UQSB3aXJkIG5pY2h0IGFscyBwcm96ZW50dWFsZXIgQW50ZWlsIGF1ZmdlZmFzc3QsCisgICAgICAgICAgc29uZGVybiBhbHMgYWJzb2x1dGUgWmFobCwgZC5oLiBlcyB6ZXJmYWxsZW4gaW1tZXIgZWluZmFjaAorICAgICAgICAgIFBfVU5JVF9ERUNBWV9RVU9UQSBFaW5oZWl0ZW4uCisKKyAgICAgRGllc2UgRmxhZ3Mga29lbm5lbiB6LkIuIGdlbnV0enQgd2VyZGVuLCBkZW4gWmVyZmFsbCBmdWVyIGVpbnplbG5lCisgICAgIE9iamVrdGUgdGVtcG9yYWVyIG9kZXIgZGF1ZXJoYWZ0IGFienVzY2hhbHRlbiwgYXVjaCB3ZW5uIGFsbGUgYW5kZXJlbgorICAgICBDbG9uZXMgd2VpdGVyemVyZmFsbGVuLgorCisgICAgIERpZXNlIFByb3Aga2FubiBpbiBkZXIgQmx1ZXByaW50IGdlc2V0enQgd2VyZGVuLiBJbiBkaWVzZW0gRmFsbCB3aXJkCisgICAgIGFsbGVyZGluZ3MgTk9fREVDQVlfVU5USUxfTU9WRSBpZ25vcmllcnQsIHdlaWwgZGllIEJQIGphIG5pZSBiZXdlZ3QKKyAgICAgd3VlcmRlLiBOT19ERUNBWSBpbiBkZXIgQlAgc2NoYWx0ZXQgZGVuIFplcmZhbGxzcHJvemVzcyAodGVtcG9yYWVyKSBmdWVyCisgICAgIGFsbGUgQ2xvbmVzIGF1cy4gSXN0IG5pZSBlaW4gWmVyZmFsbCBnZXd1ZW5zY2h0LCBzb2xsdGUgaW4gZGVyIEJsdWVwcmludAorICAgICBhYmVyIGJlc3NlciBQX1VOSVRfREVDQVlfSU5URVJWQUwgYXVmIDAgZ2VzZXR6dCB3ZXJkZW4hCisKKyAgICAgSXN0IGRpZSBQcm9wIGluIGVpbmVtIGVpbnplbG5lbiBDbG9uZSBuaWNodCBleHBsaXppdCBnZXNldHp0LAorICAgICBsaWVmZXJ0IGVpbiBrbG9uLT5RdWVyeVByb3AoUF9VTklUX0RFQ0FZX0ZMQUdTKSBkZW4gaW4gZGVyIEJsdWVwcmludAorICAgICBlaW5nZXN0ZWxsdGVuIFdlcnQgenVydWVjay4KKyAgICAgCitCRU1FUktVTkdFTjoKKyAgICAgKiBTZXR6dCBtYW4gZGllc2UgUHJvcCBpbiBlaW5lbSBDbG9uZSBhdWYgMCwgd2lyZCBkZXIgV2VydCBhdXMgZGVyCisgICAgICAgQmx1ZXByaW50IHp1cnVlY2tnZWJlbi4gSGllcmJlaSB3aXJkIGFsbGVyZGluZ3MgZWluIE5PX0RFQ0FZX1VOVElMX01PVkUKKyAgICAgICBhdXNnZWZpbHRlcnQsIGRhIGRpZXMgZGVuIFplcmZhbGwgZnVlciBhbGxlIE9iamVrdGUgZGF1ZXJoYWZ0IHN0b3BwZW4KKyAgICAgICB3dWVyZGUsIHdlaWwgQlBzIG5pY2h0IGJld2VndCB3ZXJkZW4uCisgICAgICogRGllIEZsYWdzIGtvZW5uZW4gInZlcm9kZXJ0IiB3ZXJkZW46CisgICAgICAgU2V0UHJvcChQX1VOSVRfREVDQVlfRkxBR1MsIE5PX0RFQ0FZX1VOVElMX01PVkUgfCBBQlNPTFVURV9ERUNBWSk7CisKK0JFSVNQSUVMOgorICAgICAvLyBEaWVzZXIgTlBDIGhhdCB0b2xsZSBQZmVpbGUsIGRpZSBzb2xsZW4gYWJlciBuaWNodCB6ZXJmYWxsZW4sIHNvbGFuZ2UKKyAgICAgLy8gc2llIGltIEludmVudGFyIGRlcyBOUENzIHNpbmQ6CisgICAgIEFkZEl0ZW0oIi9kL3RvbGxlcmVnaW9uL3RvbGxlcm1hZ2llci9vYmovcGZlaWxlIiwgUkVGUkVTSF9OT05FLAorICAgICAgICAgKFsgUF9BTU9VTlQ6IDUwK3JhbmRvbSg1MCksCisgICAgICAgICAgICBQX1VOSVRfREVDQVlfRkxBR1M6IE5PX0RFQ0FZX1VOVElMX01PVkUgXSkgKTsKKworU0lFSEUgQVVDSDoKKyAgICAgdW5pdAorICAgICBQX1VOSVRfREVDQVlfSU5URVJWQUwsIFBfVU5JVF9ERUNBWV9RVU9UQSwgUF9VTklUX0RFQ0FZX01JTgorICAgICBEb0RlY2F5LCBEb0RlY2F5TWVzc2FnZQorICAgICAvc3RkL3VuaXQuYworCisxNC4xMC4yMDA3LCBaZXNzdHJhCmRpZmYgLS1naXQgYS9kb2MvcHJvcHMvUF9VTklUX0RFQ0FZX0lOVEVSVkFMIGIvZG9jL3Byb3BzL1BfVU5JVF9ERUNBWV9JTlRFUlZBTApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi45MzE1NGNkCi0tLSAvZGV2L251bGwKKysrIGIvZG9jL3Byb3BzL1BfVU5JVF9ERUNBWV9JTlRFUlZBTApAQCAtMCwwICsxLDM3IEBACitQX1VOSVRfREVDQVlfSU5URVJWQUwKKworTkFNRToKKyAgICAgUF9VTklUX0RFQ0FZX0lOVEVSVkFMCQkJCQkidW5pdF9kZWNheV9pbnRlcnZhbCIKKworREVGSU5JRVJUIElOOgorICAgICAvc3lzL3VuaXQuaAorCitCRVNDSFJFSUJVTkc6CisgICAgIERpZXNlIFByb3AgYmVzdGltbXQsIHdpZSBvZnQgZWluIFplcmZhbGwgZGVyIGVudHNwcmVjaGVuZGVuIFVuaXRvYmpla3RlCisgICAgIGR1cmNoZ2VmdWVocnQgd2lyZC4gRGFzIEludGVydmFsbCBpc3QgaW4gU2VrdW5kZW4gYW56dWdlYmVuIChpbnQpLgorICAgICBEaWUgUHJvcCBtdXNzIGluIGRlciBCbHVlcHJpbnQgZGVyIGVudHNwcmVjaGVuZGVuIFVuaXRvYmpla3RlIGdlc2V0enQKKyAgICAgd2VyZGVuLCBpbiBDbG9uZXMga2FubiBzaWUgbmljaHQgZ2VzZXR6dCB3ZXJkZW4uCisgICAgIERpZSBCbHVlcHJpbnQgcmVzZXR0ZXQgZGFubiBpbiBkaWVzZW0gSW50ZXJ2YWxsIHVuZCBydWZ0IGluIGFsbGVuIGlocmVuCisgICAgIENsb25lcyAodW5kIGRlbmVuIGFsdGVyIFZlcnNpb25lbiBkZXIgZ2xlaWNoZW4gQlAhKSBEb0RlY2F5KCkgYXVmLAorICAgICB3b3JhdWZoaW4gZGllIENsb25lcyBkZW4gWmVyZmFsbCBkdXJjaGZ1ZWhyZW4uCisgICAgIElzdCBkaWUgUHJvcCBpbiBkZXIgQmx1ZXByaW50IG5pY2h0IGdlc2V0enQsIGVyZm9sZ3Qga2VpbiBaZXJmYWxsLgorCitCRU1FUktVTkdFTjoKKyAgICAgKiBJc3QgZGllIEJsdWVwcmludCBuaWNodCBnZWxhZGVuLCBlcmZvbGd0IGtlaW4gWmVyZmFsbCBkZXIgQ2xvbmVzLgorICAgICAqIEVpbiBTZXR6ZW4gZGllc2VyIFByb3AgYmVpbmhhbHRldCBpbW1lciBhdWNoIGVpbmVuIEF1ZnJ1ZiB2b24KKyAgICAgICBzZXRfbmV4dF9yZXNldCgpIGF1ZiBkYXMgZW5zcHJlY2hlbmRlIEludGVydmFsbC4KKyAgICAgKiBEaWUgUHJvcCBrYW5uIGluIGRlbiBDbG9uZXMgYWJnZWZyYWd0IHdlcmRlbiB1bmQgbGllZmVydCBkYXMgaW4gZGVyCisgICAgICAgQmx1ZXByaW50IGVpbmdlc3RlbGx0ZSBJbnRlcnZhbGwuCisgICAgICogVm9uIGVpbmVyIE1hbmlwdWxhdGlvbiBwZXIgU2V0KCkgd2lyZCBkcmluZ2VuZCBhYmdlcmF0ZW4uCisgICAgICogRGllIFByb3Aga2FubiBudXIgdm9tIE9iamVrdCBzZWxiZXIsIHZvbSBQcm9ncmFtbWllcmVyIGRlcyBPYmpla3RzLCB2b20KKyAgICAgICBSTSBkZXIgZW50c3ByZWNoZW5kZW4gUmVnaW9uLCB2b24gZWluZW0gV2Vpc2VuIG9kZXIgdm9uIGVpbmVtIE9iamVrdAorICAgICAgIGdlc2V0enQgd2VyZGVuLCB3ZWxjaGVzIGRpZSBnbGVpY2hlIFVJRCBoYXQuCisKK0JFSVNQSUVMOgorCitTSUVIRSBBVUNIOgorICAgICB1bml0CisgICAgIFBfVU5JVF9ERUNBWV9RVU9UQSwgUF9VTklUX0RFQ0FZX0ZMQUdTLCBQX1VOSVRfREVDQVlfTUlOCisgICAgIERvRGVjYXkoKSwgRG9EZWNheU1lc3NhZ2UoKQorCisxMy4xMC4yMDA3LCBaZXNzdHJhCmRpZmYgLS1naXQgYS9kb2MvcHJvcHMvUF9VTklUX0RFQ0FZX01JTiBiL2RvYy9wcm9wcy9QX1VOSVRfREVDQVlfTUlOCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjc5ZjljODAKLS0tIC9kZXYvbnVsbAorKysgYi9kb2MvcHJvcHMvUF9VTklUX0RFQ0FZX01JTgpAQCAtMCwwICsxLDUxIEBACitQX1VOSVRfREVDQVlfTUlOCisKK05BTUU6CisgICAgIFBfVU5JVF9ERUNBWV9NSU4JCQkJCSAgICAgICAgICAgICAgICAgICAgInVuaXRfZGVjYXlfbWluIgorCitERUZJTklFUlQgSU46CisgICAgIC9zeXMvdW5pdC5oCisKK0JFU0NIUkVJQlVORzoKKyAgICAgRGllc2UgUHJvcCBiZXN0aW1tdCwgd2lldmllbGUgRWluaGVpdGVuIGRlciBVbml0b2JqZWt0ZW4gbWluZGVzdGVucworICAgICB1ZWJyaWcgYmxlaWJlbiBzb2xsZW4uIAorICAgICBGYWVsbHQgZGllIE1lbmdlIGVpbmVzIFVuaXRvYmpla3RzIHVudGVyIGRpZXNlbiBXZXJ0LCB6ZXJmYWVsbHQgZGllc2UKKyAgICAgVW5pdCBzb2xhbmdlIG5pY2h0IHdlaXRlciwgYmlzIGRlciBXZXJ0IHdpZWRlciB1ZWJlcnNjaHJpdHRlbiB3aXJkLgorICAgICBEaWUgUHJvcCBrYW5uIGluIGRlciBCbHVlcHJpbnQgdW5kIGluIGRlbiBlaW56ZWxuZW4gQ2xvbmVzIGdlc2V0enQKKyAgICAgd2VyZGVuLgorICAgICBJc3QgZGllIFByb3AgaW4gZWluZW0gZWluemVsbmVuIENsb25lIG5pY2h0IGV4cGxpeml0IGdlc2V0enQsCisgICAgIGxpZWZlcnQgZWluIFF1ZXJ5UHJvcChQX1VOSVRfREVDQVlfTUlOKSBkZW4gaW4gZGVyIEJsdWVwcmludAorICAgICBlaW5nZXN0ZWxsdGVuIFdlcnQgenVydWVjayB1bmQgZGllIFVuaXQgemVyZmFlbGx0IGJpcyB6dSBkaWVzZXIKKyAgICAgTWluZGVzdG1lbmdlLi4KKyAgICAgRC5oLiBtYW4gc29sbHRlIGRpZXNlIFByb3AgaW4gZGVyIEJsdWVwcmludCBzZXR6ZW4gdW5kIGluIGVpbnplbG5lbgorICAgICBDbG9uZXMgbnVyIHNvd2VpdCBkaWVzZSBhYndlaWNoZW5kZSBXZXJ0ZSBoYWJlbiBzb2xsZW4uCisgICAgIEVzIHNpbmQgbnVyIFdlcnRlIHp3aXNjaGVuIDAgdW5kIDEwMCB6dWxhZXNzaWcuIEF1ZiBkaWVzZSBBcnQgbGFlc3N0IHNpY2gKKyAgICAgZGllIG1pbmlkZXN0ZW5zIHVlYnJpZyBibGVpYmVuZGUgTWVuZ2UgYWxsZXIgQ2xvbmVzIGR1cmNoIEFlbmRlcm4gZWluZXIKKyAgICAgUHJvcCBpbiBkZXIgQmx1ZXByaW50IGFlbmRlcm4uCisKK0JFTUVSS1VOR0VOOgorICAgICAqIFNldHp0IG1hbiBkaWVzZSBQcm9wIGluIGVpbmVtIENsb25lIGF1ZiAwLCB3aXJkIGRlciBXZXJ0IGF1cyBlcgorICAgICAgIEJsdWVwcmludCB6dW0gWmVyZmFsbCBiZW51dHp0LgorICAgICAqIFdpbGwgbWFuIGZ1ZXIgZWluIGJlc3RpbW10ZXMgVW5pdG9iamVrdCBrZWluIE1pbmltdW0gaGFiZW4sIGFsc28gZGFzcworICAgICAgIGRpZXNlcyBPYmpla3QgemVyZmFlbGx0LCBiaXMgbmljaHRzIG1laHIgZGEgaXN0LCBkaWUgQmx1ZXByaW50IGhhdCBhYmVyCisgICAgICAgZWluZW4gTWluaW1hbHdlcnQgZ2VzZXR6dCwgc29sbHRlIGRpZXNlIFByb3AgaW0gYmV0cmVmZmVuZGVuIE9iamVrdCBhdWYKKyAgICAgICAtMSBnZXNldHp0IHdlcmRlbi4KKyAgICAgKiBEaWVzZSBQcm9wIHNvbGx0ZSB2b3JzaWNodGlnIGFuZ2V3YW5kdCB3ZXJkZW4sIGRhIFNwaWVsZXIgc28gZGVuCisgICAgICAgWmVyZmFsbCB2b24gVW5pdHMgc3RvcHBlbiBrb2VubmVuLCBpbmRlbSBzaWUgZGllIFVuaXRzIGVudHNwcmVjaGVuZAorICAgICAgIGF1ZnRlaWxlbiwgc28gZGFzcyBqZWRlcyBFaW56ZWxvYmpla3QgdW50ZXIgZGVtIE1pbmltdW0gbGllZ3QuCisKK0JFSVNQSUVMOgorICAgICAvLyBlcyBzb2xsIG1pbi4gMSBFaW5oZWl0IHVlYnJpZyBibGVpYmVuLgorICAgICBTZXRQcm9wKFBfVU5JVF9ERUNBWV9NSU4sIDEpOworCisgICAgIC8vIGRpZSBCbHVlcHJpbnQgaGF0IGVpbiBNaW5pbXVtIHZvbiAxMCBnZXNldHp0LCBkaWVzZXIgQ2xvbmUgc29sbAorICAgICAvLyBhYmVyIHplcmZhbGxlbiwgYmlzIG5peCBtZWhyIGRhIGlzdC4KKyAgICAga2xvbi0+U2V0UHJvcChQX1VOSVRfREVDQVlfTUlOLCAtMSk7CisKK1NJRUhFIEFVQ0g6CisgICAgIHVuaXQKKyAgICAgUF9VTklUX0RFQ0FZX0lOVEVSVkFMLCBQX1VOSVRfREVDQVlfRkxBR1MsIFBfVU5JVF9ERUNBWV9RVU9UQQorICAgICBEb0RlY2F5LCBEb0RlY2F5TWVzc2FnZQorICAgICAvc3RkL3VuaXQuYworCisxNC4xMC4yMDA3LCBaZXNzdHJhCmRpZmYgLS1naXQgYS9kb2MvcHJvcHMvUF9VTklUX0RFQ0FZX1FVT1RBIGIvZG9jL3Byb3BzL1BfVU5JVF9ERUNBWV9RVU9UQQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi45MTQ0NTY0Ci0tLSAvZGV2L251bGwKKysrIGIvZG9jL3Byb3BzL1BfVU5JVF9ERUNBWV9RVU9UQQpAQCAtMCwwICsxLDQ1IEBACitQX1VOSVRfREVDQVlfUVVPVEEgKGludCkKKworTkFNRToKKyAgICAgUF9VTklUX0RFQ0FZX1FVT1RBCQkJCQkidW5pdF9kZWNheV9xdW90YSIKKworREVGSU5JRVJUIElOOgorICAgICAvc3lzL3VuaXQuaAorCitCRVNDSFJFSUJVTkc6CisgICAgIERpZXNlIFByb3AgYmVzdGltbXQsIHdlbGNoZXIgQW50ZWlsIGRlciBlaW56ZWxuZW4gVW5pdG9iamVrdGUgcHJvIFplcmZhbGwKKyAgICAgemVyc3RvZXJ0IHdpcmQuIERpZXNlciBBbnRlaWwgd2lyZCBhbHMgZ2FuemUgWmFobCB6d2lzY2hlbiAwIHVuZCAxMDAwMAorICAgICBhdXNnZWRydWVja3QuIDEgZW50c3ByaWNodCBlaW5lbSBaZXJmYWxsIHZvbiAwLjAxJSwgMTAwMDAgZW50c3ByaWNodAorICAgICAxMDAlLgorICAgICBNb21lbnRhbiBzaW5kIGtlaW5lIFdlcnRlIDwgMCB6dWxhZXNzaWcsIGRpZSBlaW5lbSBadXdhY2hzIGVudHNwcmVjaGVuZAorICAgICB3dXJkZW4uCisKKyAgICAgRmFsbHMgZGFzIEZsYWcgQUJTT0xVVEVfREVDQVkgKHMuIFBfVU5JVF9ERUNBWV9GTEFHUykgZ2VzZXR6dCBpc3QsIHN0ZWh0CisgICAgIGRpZSBaYWhsIGluIGRpZXNlciBQcm9wIGZ1ZXIgZGllIGFic29sdXRlIEFuemFobCBhbiB6dSB6ZXJzdG9lcmVuZGVuCisgICAgIEVpbmhlaXRlbi4KKworICAgICBEaWUgUHJvcCBrYW5uIGluIGRlciBCbHVlcHJpbnQgdW5kIGluIGRlbiBlaW56ZWxuZW4gQ2xvbmVzIGdlc2V0enQKKyAgICAgd2VyZGVuLgorICAgICBJc3QgZGllIFByb3AgaW4gZWluZW0gZWluemVsbmVuIENsb25lIG5pY2h0IGV4cGxpeml0IGdlc2V0enQsCisgICAgIGxpZWZlcnQgZWluIFF1ZXJ5UHJvcChQX1VOSVRfREVDQVlfUVVPVEEpIGRlbiBpbiBkZXIgQmx1ZXByaW50CisgICAgIGVpbmdlc3RlbGx0ZW4gV2VydCB6dXJ1ZWNrIHVuZCBkaWUgVW5pdCB6ZXJmYWVsbHQgenUgZGllc2VtIEFudGVpbC4KKyAgICAgRC5oLiBtYW4gc29sbHRlIGRpZXNlIFByb3AgaW4gZGVyIEJsdWVwcmludCBzZXR6ZW4gdW5kIGluIGVpbnplbG5lbgorICAgICBDbG9uZXMgbnVyIHNvd2VpdCBkaWVzZSBhYndlaWNoZW5kZSBaZXJmYWxsc3JhdGVuIGhhYmVuIHNvbGxlbi4KKworQkVNRVJLVU5HRU46CisgICAgICogU2V0enQgbWFuIGRpZXNlIFByb3AgaW4gZWluZW0gQ2xvbmUgYXVmIDAsIHdpcmQgZGVyIFdlcnQgYXVzIGVyCisgICAgICAgQmx1ZXByaW50IHp1bSBaZXJmYWxsIGJlbnV0enQuCisgICAgICogV2lsbCBtYW4gZGVuIFplcmZhbGwgZnVlciBlaW4gYmVzdGltbXRlcyBVbml0b2JqZWt0IGFic2NoYWx0ZW4sIHNvbGx0ZQorICAgICAgIG1hbiBQX1VOSVRfREVDQVlfRkxBR1MgYmVudXR6ZW4uCisKK0JFSVNQSUVMOgorICAgICAvLyBwcm8gWmVyZmFsbHNpbnRlcnZhbGwgc29sbGVuIDEyJSB6ZXJmYWxsZW4uCisgICAgIFNldFByb3AoUF9VTklUX0RFQ0FZX1FVT1RBLCAxMjAwKTsKKworU0lFSEUgQVVDSDoKKyAgICAgdW5pdAorICAgICBQX1VOSVRfREVDQVlfSU5URVJWQUwsIFBfVU5JVF9ERUNBWV9GTEFHUywgUF9VTklUX0RFQ0FZX01JTgorICAgICBEb0RlY2F5LCBEb0RlY2F5TWVzc2FnZQorICAgICAvc3RkL3VuaXQuYworCisxNC4wMy4yMDA4LCBaZXNzdHJhCmRpZmYgLS1naXQgYS9kb2MvcHJvcHMvUF9VTldFQVJfTVNHIGIvZG9jL3Byb3BzL1BfVU5XRUFSX01TRwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4xZWUwZDgwCi0tLSAvZGV2L251bGwKKysrIGIvZG9jL3Byb3BzL1BfVU5XRUFSX01TRwpAQCAtMCwwICsxLDU2IEBACitQX1VOV0VBUl9NU0cKK05BTUU6CisgICAgIFBfVU5XRUFSX01TRyAgICAgICAgICAgICAgICAgICAgICAgInVud2Vhcl9tc2ciICAgICAKKworREVGSU5JRVJUIElOOgorICAgICAvc3lzL2FybW91ci5oCisKK0JFU0NIUkVJQlVORzoKKyAgICAgWndlaXRlaWxpZ2VzIEFycmF5IG1pdCBNZWxkdW5nZW4sIGRpZSBiZWltIEF1c3ppZWhlbiBlaW5lciBSdWVzdHVuZyAKKyAgICAgb2RlciBLbGVpZHVuZyBhbiBkZW4gU3BpZWxlciB1bmQgZGllIFVtZ2VidW5nIGF1c2dlZ2ViZW4gd2VyZGVuLgorICAgICBEZXIgZXJzdGUgRWludHJhZyBnZWh0IGFuIGRlbiBTcGllbGVyLCBkZXIgendlaXRlIEVpbnRyYWcgYW4gZGllCisgICAgIFVtZ2VidW5nLiBaZWlsZW51bWJydWVjaGUgd2VyZGVuIGF1dG9tYXRpc2NoIGdlbWFjaHQsIGV4aXN0aWVyZW5kZQorICAgICBqZWRvY2ggYmVydWVja3NpY2h0aWd0LgorCisgICAgIFBsYXR6aGFsdGVyIGZ1ZXIgU3BpZWxlciBpc3QgQFdFeHh4MSwgZnVlciBkaWUgV2FmZmUgQFdFeHh4MiAoc2llaGUKKyAgICAgbWFuIHJlcGxhY2VfcGVyc29uYWwoKSkuCisKKyAgICAgW1dlZ2VuIEFid2FlcnRza29tcGF0aWJpbGl0YWV0IGlzdCBhdWNoIG5vY2ggZGVyIFBsYXR6aGFsdGVyICVzCisgICAgICBtb2VnbGljaCwgd29iZWkgaW4gZGVyIGVpZ2VuZW4gTWVsZHVuZyAlcyBmdWVyIGRlbiBXYWZmZW5uYW1lbiBzdGVodCwKKyAgICAgIGluIGRlciBhbiBkZW4gUmF1bSBkYXMgZXJzdGUgJXMgZnVlciBkZW4gU3BpZWxlcm5hbWVuLCBkYXMgendlaXRlIGZ1ZXIKKyAgICAgIGRlbiBXYWZmZW5uYW1lbi5dCisKK0JFSVNQSUVMRToKKyAgICBTZXRQcm9wKFBfTkFNRSwgIk1hbnRlbCIpOworICAgIFNldFByb3AoUF9VTldFQVJfTVNHLAorICAgICAoeyJEdSByZWlzc3QgRGlyIEBXRU4yIHZvbSBMZWliLiIsCisgICAgICAgIkBXRVIxIHJlaXNzdCBzaWNoIEBXRU5VMiB2b20gTGVpYi4iIH0pKTsKKworICAgIC0+IGJlaW0gQXVzemllaGVuIGR1cmNoIFVyazoKKyAgICAgICBVcmsgYmVrb21tdDogRHUgcmVpc3N0IGRpciBkZW4gTWFudGVsIHZvbSBMZWliLgorICAgICAgIERlciBSYXVtOiAgICBVcmsgcmVpc3N0IHNpY2ggZWluZW4gTWFudGVsIHZvbSBMZWliLgorCisgICAgU2V0UHJvcChQX1VOV0VBUl9NU0csCisgICAgICh7IkRpciB3aXJkIGZ1cmNodGJhciB3YXJtLiBTbyBlaW5lIEhpdHplIGFiZXIgYXVjaC4gU2NobmVsbCAiCisgICAgICAgInNjaGx1ZXBmc3QgRHUgYXVzIERlaW5lciBkaWNrZW4gUnVlc3R1bmcuIEFhYWFoLCB3YXMgZnVlciAiCisgICAgICAgImVpbmUgV29obHRhdC4iLAorICAgICAgICJAV0VNMSBzY2hlaW50IHBsb2V0emxpY2ggd2FybSB6dSB3ZXJkZW4uIFNjaG5lbGwgc2NobHVlcGZ0ICIKKyAgICAgICAiQFdFUlFQMSBhdXMgQFdFTVFQUEZTMSBkaWNrZW4gUnVlc3R1bmcuIER1IGhvZmZzdCBpbnN0YWVuZGlnLCAiCisgICAgICAgImRhcyBlcyBub2NoIGV0d2FzIHdhZXJtZXIgd2lyZCAuLi4gIn0pKTsKKworICAgIC0+IGJlaW0gQXVzemllaGVuIGR1cmNoIFVyazoKKyAgICAgICBVcmsgYmVrb21tdDogRGlyIHdpcmQgZnVyY2h0YmFyIHdhcm0uIFNvIGVpbmUgSGl0emUgYWJlciBhdWNoLgorCQkgICAgU2NobmVsbCBzY2hsdWVwZnN0IER1IGF1cyBEZWluZXIgZGlja2VuIFJ1ZXN0dW5nLgorCQkgICAgQWFhYWgsIHdhcyBmdWVyIGVpbmUgV29obHRhdC4KKyAgICAgICBEZXIgUmF1bTogICAgVXJrIHNjaGVpbnQgcGxvZXR6bGljaCB3YXJtIHp1IHdlcmRlbi4gU2NobmVsbAorCQkgICAgc2NobHVlcGZ0IGVyIGF1cyBzZWluZXIgZGlja2VuIFJ1ZXN0dW5nLiBEdSBob2Zmc3QKKwkJICAgIGluc3RhZW5kaWcsIGRhcyBlcyBub2NoIGV0d2FzIHdhZXJtZXIgd2lyZCAuLi4KK1NJRUhFIEFVQ0g6CisgICAgIEFlaG5saWNoZXM6IFBfV0VBUl9NU0csIFBfV0lFTERfTVNHLCBQX1VOV0lFTERfTVNHCisgICAgICAgICAgICAgICAgIFBfRFJPUF9NU0csIFBfUFVUX01TRywgUF9HSVZFX01TRywgUF9QSUNLX01TRworICAgICBGdW5rdGlvbmVuOiBXZWFyRnVuYywgVW53ZWFyRnVuYworICAgICBTb25zdGlnZXM6ICByZXBsYWNlX3BlcnNvbmFsKEUpLCAvc3RkL2FybW91ci93ZWFyLmMsIGFybW91cnMKKyAgICAgICAgICAgICAgICAgY2xvdGhpbmcsIC9zdGQvY2xvdGhpbmcud2Vhci5jCisKK0xFVFpURSBBZU5ERVJVTkc6CisxNS4wMi4yMDA5LCBaZXNzdHJhClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZG9jL3Byb3BzL1BfVU5XSUVMRF9GVU5DIGIvZG9jL3Byb3BzL1BfVU5XSUVMRF9GVU5DCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmRhMGZhN2MKLS0tIC9kZXYvbnVsbAorKysgYi9kb2MvcHJvcHMvUF9VTldJRUxEX0ZVTkMKQEAgLTAsMCArMSwxOSBAQAorUF9VTldJRUxEX0ZVTkMKKworTkFNRToKKyAgICAgUF9VTldJRUxEX0ZVTkMgInVud2llbGRfZnVuYyIKKworREVGSU5JRVJUIElOOgorICAgICA8d2VhcG9uLmg+CisKK0JFU0NIUkVJQlVORzoKKyAgICAgRmFsbHMgZWluIE9iamVrdCBlaW5lIFVud2llbGRGdW5jKCkgZnVlciBkaWUgV2FmZmUgZGVmaW5pZXJ0LCBzbyBtdXNzCisgICAgIGRpZXNlcyBPYmpla3QgaW4gZGllc2VyIFByb3BlcnR5IGVpbmdldHJhZ2VuIHdlcmRlbi4KKworICAgICBEaWUgQXVzd2VydHVuZyBkaWVzZXIgUHJvcGVydHkgZXJmb2xndCBpbiBEb1Vud2llbGQoKS4KKworU0lFSEUgQVVDSDoKKyAgICAgL3N0ZC93ZWFwb24uYywgVW53aWVsZEZ1bmMoKQorCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCitMYXN0IG1vZGlmaWVkOiBTdW4gTWF5IDE5IDE1OjQ0OjA4IDE5OTYgYnkgV2FyZ29uCmRpZmYgLS1naXQgYS9kb2MvcHJvcHMvUF9VTldJRUxEX01TRyBiL2RvYy9wcm9wcy9QX1VOV0lFTERfTVNHCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjQ5YTY0NjYKLS0tIC9kZXYvbnVsbAorKysgYi9kb2MvcHJvcHMvUF9VTldJRUxEX01TRwpAQCAtMCwwICsxLDU5IEBACitQX1VOV0lFTERfTVNHCitOQU1FOgorICAgICBQX1VOV0lFTERfTVNHICAgICAgICAgICAgICAgICAgICAgICAidW53aWVsZF9tc2ciICAgICAgICAgICAgICAgICAgICAgICAKKworREVGSU5JRVJUIElOOgorICAgICAvc3lzL3dlYXBvbi5oCisKK0JFU0NIUkVJQlVORzoKKyAgICAgWndlaXRlaWxpZ2VzIEFycmF5IG1pdCBNZWxkdW5nZW4sIGRpZSBiZWltIFdlZ3N0ZWNrZW4gZWluZXIgCisgICAgIFdhZmZlIGFuIGRlbiBTcGllbGVyIHVuZCBkaWUgVW1nZWJ1bmcgYXVzZ2VnZWJlbiB3ZXJkZW4uCisKKyAgICAgRGVyIGVyc3RlIEVpbnRyYWcgZ2VodCBhbiBkZW4gU3BpZWxlciwgZGVyIHp3ZWl0ZSBFaW50cmFnIGFuIGRpZQorICAgICBVbWdlYnVuZy4gIFplaWxlbnVtYnJ1ZWNoZSB3ZXJkZW4gYXV0b21hdGlzY2ggZ2VtYWNodCwgZXhpc3RpZXJlbmRlCisgICAgIGplZG9jaCBiZXJ1ZWNrc2ljaHRpZ3QuCisKKyAgICAgUGxhdHpoYWx0ZXIgZnVlciBTcGllbGVyIGlzdCBAV0V4eHgxLCBmdWVyIGRpZSBXYWZmZSBAV0V4eHgyIChzaWVoZQorICAgICBtYW4gcmVwbGFjZV9wZXJzb25hbCgpKS4KKworICAgICBbV2VnZW4gQWJ3YWVydHNrb21wYXRpYmlsaXRhZXQgaXN0IGF1Y2ggbm9jaCBkZXIgUGxhdHpoYWx0ZXIgJXMKKyAgICAgIG1vZWdsaWNoLCB3b2JlaSBpbiBkZXIgZWlnZW5lbiBNZWxkdW5nICVzIGZ1ZXIgZGVuIFdhZmZlbm5hbWVuIHN0ZWh0LAorICAgICAgaW4gZGVyIGFuIGRlbiBSYXVtIGRhcyBlcnN0ZSAlcyBmdWVyIGRlbiBTcGllbGVybmFtZW4sIGRhcyB6d2VpdGUgZnVlcgorICAgICAgZGVuIFdhZmZlbm5hbWVuLl0KKworQkVJU1BJRUxFOgorICAgIFNldFByb3AoUF9OQU1FLCAiU3RyZWl0a29sYmVuIik7CisgICAgU2V0UHJvcChQX1VOV0lFTERfTVNHLAorICAgICAoeyAiRHUgc3RlY2tzdCBAV0VOMiB6dXJ1ZWNrIHVuZCBhdG1lc3QgZXJzdG1hbCB0aWVmIGR1cmNoLiIsIAorICAgICAgICAiQFdFUjEgc3RlY2t0IEBXRU5VMiB6dXJ1ZWNrIHVuZCBhdG1ldCBlcnN0bWFsIHRpZWYgZHVyY2guIiB9KSk7CisKKyAgICAtPiBiZWltIFdlZ3N0ZWNrZW4gZHVyY2ggVXJrOgorICAgICAgIFVyayBiZWtvbW10OiBEdSBzdGVja3N0IGRlbiBTdHJlaXRrb2xiZW4genVydWVjayB1bmQgYXRtZXN0IGVyc3RtYWwKKwkJICAgIHRpZWYgZHVyY2guCisgICAgICAgRGVyIFJhdW06ICAgIFVyayBzdGVja3QgZWluZW4gU3RyZWl0a29sYmVuIHp1cnVlY2sgdW5kIGF0bWV0IGVyc3RtYWwKKwkJICAgIHRpZWYgZHVyY2guCisKKyAgICBTZXRQcm9wKFBfVU5XSUVMRF9NU0csCisgICAgICh7IkR1IHN0ZWNrc3QgZGllIHNjaHdlcmUgS2V1bGUgenVydWVjay4gWnVmYWVsbGlnIGxhbmRldCBzaWUgIgorICAgICAgICJkYWJlaSBhdWYgRGVpbmVtIEZ1c3MuIExhdXQgc2NocmVpZW5kIGh1bXBlbHN0IER1IGluIGRlciAiCisgICAgICAgIkdlZ2VuZCBoZXJ1bS4iLAorICAgICAgICJAV0VSMSBzdGVja3QgZWluZSBzY2h3ZXJlIEtldWxlIHp1cnVlY2suIER1bW1lcndlaXNlIGxhbmRldCBkaWVzZSAiCisgICAgICAgImRpcmVrdCBhdWYgZGVtIGVpZ2VuZW4gRnVzcy4gQXVhLCBkYXMgdGF0IHNpY2hlciB3ZWggLi4uIG5pY2h0ICIKKyAgICAgICAidW1zb25zdCBodW1wZWx0IEBXRVJRUDEgamV0enQgc2NocmVpZW5kIGR1cmNoIGRpZSBHZWdlbmQuIn0pKTsKKworICAgIC0+IGJlaW0gV2Vnc3RlY2tlbiBkdXJjaCBVcms6CisgICAgICAgVXJrIGJla29tbXQ6IER1IHN0ZWNrc3QgZGllIHNjaHdlcmUgS2V1bGUgenVydWVjay4gWnVmYWVsbGlnIGxhbmRldAorCQkgICAgc2llIGRhYmVpIGF1ZiBEZWluZW0gRnVzcy4gTGF1dCBzY2hyZWllbmQgaHVtcGVsc3QgRHUgaW4KKwkJICAgIGRlciBHZWdlbmQgaGVydW0uCisgICAgICAgRGVyIFJhdW06ICAgIFVyayBzdGVja3QgZWluZSBzY2h3ZXJlIEtldWxlIHp1cnVlY2suIER1bW1lcndlaXNlCisJCSAgICBsYW5kZXQgZGllc2UgZGlyZWt0IGF1ZiBkZW0gZWlnZW5lbiBGdXNzLiBBdWEsIGRhcyB0YXQKKyAgICAgICAgICAgICAgICAgICAgc2ljaGVyIHdlaCAuLi4gbmljaHQgdW1zb25zdCBodW1wZWx0IGVyIGpldHp0IHNjaHJlaWVuZAorICAgICAgICAgICAgICAgICAgICBkdXJjaCBkaWUgR2VnZW5kLgorCitTSUVIRSBBVUNIOgorICAgICBBZWhubGljaGVzOiBQX1dJRUxEX01TRywgUF9XRUFSX01TRywgUF9VTldFQVJfTVNHCisgICAgICAgICAgICAgICAgIFBfRFJPUF9NU0csIFBfUFVUX01TRywgUF9HSVZFX01TRywgUF9QSUNLX01TRworICAgICBGdW5rdGlvbmVuOiBVbndpZWxkRnVuYywgV2llbGRGdW5jCisgICAgIFNvbnN0aWdlczogIHJlcGxhY2VfcGVyc29uYWwoRSksIC9zdGQvd2VhcG9uL2NvbWJhdC5jCisKKzI5LiBNYWVyeiAyMDA0IEdsb2luc29uCmRpZmYgLS1naXQgYS9kb2MvcHJvcHMvUF9VTldJRUxEX1RJTUUgYi9kb2MvcHJvcHMvUF9VTldJRUxEX1RJTUUKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNDMxMjhkNAotLS0gL2Rldi9udWxsCisrKyBiL2RvYy9wcm9wcy9QX1VOV0lFTERfVElNRQpAQCAtMCwwICsxLDE5IEBACitQX1VOV0lFTERfVElNRQorCitOQU1FOgorICAgICAgUF9VTldJRUxEX1RJTUUJCQkidW53aWVsZF90aW1lIgorCitERUZJTklFUlQgSU46CisgICAgICAvc3lzL3dlYXBvbi5oDQorCitCRVNDSFJFSUJVTkc6CisgICAgICBFbnRoYWVsdCBkZW4gWmVpdHB1bmt0IHp1IGRlbSBlaW4gTGl2aW5nIGVpbmUgV2FmZmUgd2VnZ2VzdGVja3QgaGF0IHVuZA0KKyAgICAgIGlzdCBpbSBMaXZpbmcgZ2VzZXR6dC4NCisKK1NJRUhFIEFVQ0g6DQorICAgICAgVmVyd2FuZHQ6CQlQX1dFQVBPTiwgUF9XSUVMREVELCBEb1Vud2llbGQoKQ0KKwkJCVBfTEFTVF9VU0UKKyAgICAgIFNvbnN0aWdlczoJUF9FUVVJUF9USU1FDQorCQkJdGltZSgpCisKKzEwLkZlYiAyMDA1IEdsb2luc29uDQpkaWZmIC0tZ2l0IGEvZG9jL3Byb3BzL1BfVVNFRF9IQU5EUyBiL2RvYy9wcm9wcy9QX1VTRURfSEFORFMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNDU2ZDMyYwotLS0gL2Rldi9udWxsCisrKyBiL2RvYy9wcm9wcy9QX1VTRURfSEFORFMKQEAgLTAsMCArMSwyMSBAQAorUF9VU0VEX0hBTkRTCitOQU1FOgorICAgIFBfVVNFRF9IQU5EUyAgICAgICAgICAgICAgICAgICJ1c2VkX2hhbmRzIgorCitERUZJTklFUlQgSU46CisgICAgL3N5cy9saXZpbmcvY29tYmF0LmgKKworQkVTQ0hSRUlCVU5HOgorICAgIEFuemFobCBkZXIgSGFlbmRlIGluIEJlbnV0enVuZy4KKyAgICBFZmZla3RpdiBudXIgZWluIHNpemVvZihQX0hBTkRTX1VTRURfQlkpLgorCitCRU1FUktVTkdFTjoKKyAgICBLZWluZSBlY2h0ZSBQcm9wZXJ0eS4gRGllIE1ldGhvZGUgL3N0ZC9saXZpbmcvY29tYmF0OjpfcXVlcnlfdXNlZF9oYW5kcworICAgIHN0ZWxsdCBkaWUgRGF0ZW4genVzYW1tZW4uIE5pY2h0IHNldHplbiEKKworU0lFSEUgQVVDSDoKKyAgICBQX0hBTkRTLCBQX0hBTkRTX1VTRURfQlkKKyAgICBQX01BWF9IQU5EUywgUF9GUkVFX0hBTkRTCisgICAgVXNlSGFuZHMsIEZyZWVIYW5kcworCisxLiBPa3QgMjAxMiwgR2xvaW5zb24KZGlmZiAtLWdpdCBhL2RvYy9wcm9wcy9QX1ZBTElEX0dVSUxEUyBiL2RvYy9wcm9wcy9QX1ZBTElEX0dVSUxEUwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4yNzM0YWQ5Ci0tLSAvZGV2L251bGwKKysrIGIvZG9jL3Byb3BzL1BfVkFMSURfR1VJTERTCkBAIC0wLDAgKzEsMjMgQEAKK05BTUU6CisJUF9WQUxJRF9HVUlMRFMJCQkidmFsaWRfZ3VpbGRzIiAgICAgICAgICAgICAgICAKKworREVGSU5JRVJUIElOOgorCS9zeXMvbmV3X3NraWxscy5oCisKK0JFU0NIUkVJQlVORzoKKwlEaWVzZSBQcm9wZXJ0eSBlbnRoYWVsdCBkaWUgenVnZWxhc3NlbmVuIEdpbGRlbiBpbiBGb3JtIHZvbgorCWtsZWluZ2VzY2hyaWViZW5lbiBHaWxkZW5uYW1lbiwgd2VsY2hlIGluIGVpbmVtIEFycmF5CisJenVzYW1tZW5nZWZhc3N0IHNpbmQuIFNpZSBpc3QgbnVyIGZ1ZXIgZGVuIEdpbGRlbm1hc3RlciBzZWxic3Qgdm9uCisJQmVkZXV0dW5nLgorCitCRUlTUElFTEU6CisJQWJmcmFnZSBkZXIgenVnZWxhc3NlbmVuIEdpbGRlbjoKKwkgIGZpbmRfb2JqZWN0KCIvb2JqL2dpbGRlbm1hc3RlciIpLT5RdWVyeVByb3AoUF9WQUxJRF9HVUlMRFMpCisJRGFzIGVyZ2lidCB6dW0gQmVpc3BpZWw6CisgICAgICAgICAgKHsiYWJlbnRldXJlciIsInphdWJlcmVyIiwia2xlcnVzIiwia2FlbXBmZXIifSkKKworU0lFSEUgQVVDSDoKKwlQX0dVSUxELCAvb2JqL2dpbGRlbm1hc3Rlci5jCisKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KK0xhc3QgbW9kaWZpZWQ6IFdlZCBKYW4gMTQgMTk6MTc6MDYgMTk5OCBieSBQYXRyeW4KZGlmZiAtLWdpdCBhL2RvYy9wcm9wcy9QX1ZBTFVFIGIvZG9jL3Byb3BzL1BfVkFMVUUKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZDliNTk2MQotLS0gL2Rldi9udWxsCisrKyBiL2RvYy9wcm9wcy9QX1ZBTFVFCkBAIC0wLDAgKzEsMjYgQEAKK05BTUU6CisgICAgUF9WQUxVRSAgICAgICAgICAgICAgICAgICAgICAgInZhbHVlIiAgICAgICAgICAgICAgICAgICAgICAgCisKK0RFRklOSUVSVCBJTjoKKyAgICAvc3lzL3Byb3BlcnRpZXMuaAorCitCRVNDSFJFSUJVTkc6CisKKyAgICAgLSBPYmpla3RlCisgICAgICAgV2VydCBkZXMgT2JqZWt0ZXMgaW4gR29sZG11ZW56ZW4uIERpZXNlbiBXZXJ0IGVyaGFlbHQgbWFuIGJlaW0KKyAgICAgICBWZXJrYXVmLiBLYXVmZW4ga29zdGV0IGVpbiBWaWVsZmFjaGVzIGhpZXJ2b24uCisKKyAgICAgLSBTcGVpc2VuL0tuZWlwZW4KKyAgICAgICBXZXJ0IGVpbmVyIFBvcnRpb24gZGVyIFNwZWlzZS4KKyAgICAgICAKK0JFTUVSS1VOR0VOOgorICAgICBJbiB0cmFnYmFyZW4gU3BlaXNlbiAoZXJiZW4gdm9uIC9zdGQvZm9vZCkgc2V0enQgbWFuIG1pdCBTZXRQcm9wCisgICAgIGRlbiBXZXJ0IF9laW5lcl8gUG9ydGlvbi4gUGVyIFF1ZXJ5UHJvcCBlcmhhZWx0IG1hbiBhYmVyIGRlbiBHZXNhbXQtCisgICAgIHdlcnQgZGVyIFNwZWlzZSBpbmNsdXNpdmUgZGVzIGV2ZW50dWVsbCB2b3JoYW5kZW5lbiBCZWhhZWx0ZXJzLiBEZXIKKyAgICAgV2VydCBkZXMgQmVoYWVsdGVycyB3aXJkIGRhYmVpIGF1cyBQX0VNUFRZX1BST1BTW1BfVkFMVUVdIGdlbGVzZW4uCisgICAgIAorU0lFSEUgQVVDSDoKKyAgICAgU3BlaXNlbjogc3RkL3B1Yiwgd2l6L2Zvb2QsIFBfRU1QVFlfUFJPUFMKKworLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCitMYXN0IG1vZGlmaWVkOiBUaHUgT2N0IDI4IDEyOjE1OjAwIDIwMTAgYnkgQ2FsZHJhClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZG9jL3Byb3BzL1BfVkFMVUVfUEVSX1VOSVQgYi9kb2MvcHJvcHMvUF9WQUxVRV9QRVJfVU5JVApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5kYTc3OWM1Ci0tLSAvZGV2L251bGwKKysrIGIvZG9jL3Byb3BzL1BfVkFMVUVfUEVSX1VOSVQKQEAgLTAsMCArMSwxNCBAQAorTkFNRToKKyAgICBQX1ZBTFVFX1BFUl9VTklUICAgICAgICAgICAgICAidmFsdWVfcGVyX3VuaXQiICAgICAgICAgICAgICAKKworREVGSU5JRVJUIElOOgorICAgIC9zeXMvcHJvcGVydGllcy5oCisKK0JFU0NIUkVJQlVORzoKKyAgICAgV2VydCBpbiBHb2xkc3R1ZWNrZW4gcHJvIFVudGVyZWluaGVpdC4KKworQkVNRVJLVU5HRU46CisgICAgIERlcHJlY2F0ZWQuIEJpdHRlIFNldENvaW5zUGVyVW5pdHMoKSAoVV9DUFUpIGJlbnV0emVuLgorCisyNS5BdWcgMjAxNSBHbG9pbnNvbgorCmRpZmYgLS1naXQgYS9kb2MvcHJvcHMvUF9WQVJJQUJMRVMgYi9kb2MvcHJvcHMvUF9WQVJJQUJMRVMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNWU3ZmI1YwotLS0gL2Rldi9udWxsCisrKyBiL2RvYy9wcm9wcy9QX1ZBUklBQkxFUwpAQCAtMCwwICsxLDE2IEBACisKK05BTUU6CisgICAgUF9WQVJJQUJMRVMgInZhcmlhYmxlcyIgICAgICAgICAgICAgICAgIAorCitERUZJTklFUlQgSU46CisgICAgL3N5cy9tYWdpZXIuaAorCitCRVNDSFJFSUJVTkc6CisJCisgICAgIEludGVybmUgVmFyaWFibGUgZGVyIE1hZ2llcnNoZWxsIGluIGRlbSBkaWUgbWl0IGRlbSAnU2V0Jy1CZWZlaGwKKyAgICAgZ2VzZXR6dGVuIFZhcmlhYmxlbiBnZXNwZWljaGVydCB3ZXJkZW4uCisgICAgIAorICAgICBOSUNIVCBWT04gSEFORCBWRVJBRU5ERVJOISBJTU1FUiAnU0VUJyBWRVJXRU5ERU4hCisKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KK0xldHp0ZSBBZW5kZXJ1bmc6IDEzLjAyLjIwMDMgMjI6MDA6MDAgdm9uIE1hbmRyYWdvbgpkaWZmIC0tZ2l0IGEvZG9jL3Byb3BzL1BfVklTSUJMRV9HVUlMRCBiL2RvYy9wcm9wcy9QX1ZJU0lCTEVfR1VJTEQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZGYyNjdiNQotLS0gL2Rldi9udWxsCisrKyBiL2RvYy9wcm9wcy9QX1ZJU0lCTEVfR1VJTEQKQEAgLTAsMCArMSwyNSBAQAorUF9WSVNJQkxFX0dVSUxECitOQU1FOgorICAgICBQX1ZJU0lCTEVfR1VJTEQJCQkidmlzaWJsZV9ndWlsZCIgICAgICAgICAgICAgICAgICAgICAgIAorCitERUZJTklFUlQgSU46CisgICAgIC9zeXMvcHJvcGVydGllcy5oCisKK0JFU0NIUkVJQlVORzoKKyAgICAgRGllc2UgUHJvcGVydHkgZW50aGFlbHQgZGllIHNpY2h0YmFyZSBHaWxkZSBkZXMgTGViZXdlc2VucyBpbiBGb3JtIGVpbmVzCisgICAgIGtsZWluZ2VzY2hyaWViZW5lbiBTdHJpbmdzLCBhbHNvIGRpZSBHaWxkZSwgZGllIGJlaSBTcGllbGVybiB6dW0KKyAgICAgQmVpc3BpZWwgYmVpICdrd2VyJyBvZGVyICdmaW5nZXInIGFuZ2V6ZWlndCB3aXJkLiBTbyBrYW5uIG1hbiBmcmVtZGUKKyAgICAgR2lsZGVuIHRlc3RlbiB1bmQgdHJvdHpkZW0gbmFjaCBhdXNzZW4gaGluIGluIGRlciBnbGVpY2hlbiBHaWxkZSB3aWUKKyAgICAgenV2b3IgYmxlaWJlbi4KKworQkVJU1BJRUw6CisgICAgIFdlbm4gbWFuIGdlcm5lIG5hY2ggYXVzc2VuIGhpbiBaYXViZXJlciBibGVpYmVuIG1vZWNodGU6CisJICBwbC0+U2V0UHJvcChQX1ZJU0lCTEVfR1VJTEQsInphdWJlcmVyIik7CisgICAgIE5hY2ggYXVzc2VuIGhpbiBibGVpYnQgbWFuIGpldHp0IGF1Y2ggWmF1YmVyZXIsIHdlbm4gUF9HVUlMRCBlaW5lCisgICAgIGFuZGVyZSBHaWxkZSBhbmdpYnQuCisKK1NJRUhFIEFVQ0g6CisgICAgIFBfR1VJTEQsIFBfREVGQVVMVF9HVUlMRAorCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCitMYXN0IG1vZGlmaWVkOiBXZWQgSmFuIDE0IDE5OjE3OjA2IDE5OTggYnkgUGF0cnluCmRpZmYgLS1naXQgYS9kb2MvcHJvcHMvUF9WSVNJQkxFX1NVQkdVSUxEX1RJVExFIGIvZG9jL3Byb3BzL1BfVklTSUJMRV9TVUJHVUlMRF9USVRMRQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5lMzk4ZjAyCi0tLSAvZGV2L251bGwKKysrIGIvZG9jL3Byb3BzL1BfVklTSUJMRV9TVUJHVUlMRF9USVRMRQpAQCAtMCwwICsxLDIxIEBACitQX1ZJU0lCTEVfU1VCR1VJTERfVElUTEUKK05BTUU6CisgICAgIFBfVklTSUJMRV9TVUJHVUlMRF9USVRMRQkJInZpc2libGVfc3ViZ3VpbGRfdGl0bGUiICAgICAgICAgICAgICAgICAgICAgICAKK0RFRklOSUVSVCBJTjoKKyAgICAgL3N5cy9uZXdfc2tpbGxzLmgKKworQkVTQ0hSRUlCVU5HOgorICAgICBEaWVzZSBQcm9wZXJ0eSBkaWVudCBkYXp1LCBhbHMgTWFnaWVyIGVpbmVuIFp1c2F0enRpdGVsIGlubmVyaGFsYiBlaW5lcgorICAgICBHaWxkZSB2b3J6dXRhZXVzY2hlbiwgb2huZSBkZW4gdGF0c2FlY2hsaWNoZW4gUF9TVUJHVUlMRF9USVRMRSB6dQorICAgICBhZW5kZXJuLgorCitCRU1FUktVTkdFTjoKKyAgICAgSW5oYWx0IGRlciBQcm9wZXJ0eSBrYW5uIDAgc2VpbiBvZGVyIGVpbiBTdHJpbmcuCisgICAgIFdlbm4gZGVyIEluaGFsdCAwIGlzdCwgd2lyZCBiZWkgUXVlcnlQcm9wIGRlciBQX1NVQkdVSUxEX1RJVExFCisgICAgIGR1cmNoZ2VyZWljaHQuCisKK1NJRUhFIEFVQ0g6CisgICAgIFBfR1VJTERfVElUTEUsIFBfU1VCR1VJTERfVElUTEUKKworLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorTGFzdCBtb2RpZmllZDogTW9uIEF1ZyAxMyAyMToyMDowMCAyMDAxIGJ5IE5hY2h0d2luZApkaWZmIC0tZ2l0IGEvZG9jL3Byb3BzL1BfVklTVUFMQkVMTCBiL2RvYy9wcm9wcy9QX1ZJU1VBTEJFTEwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMTllODUxOQotLS0gL2Rldi9udWxsCisrKyBiL2RvYy9wcm9wcy9QX1ZJU1VBTEJFTEwKQEAgLTAsMCArMSwzNyBAQAorTkFNRToKKwlQX1ZJU1VBTEJFTEwJCQkidmlzdWFsYmVsbCIKKworREVGSU5JRVJUIElOOgorCS9zeXMvcHJvcGVydGllcy5oCisKK0JFU0NIUkVJQlVORzoKKwlEaWUgUHJvcGVydHkgc3RlbGx0IGVpbiBGbGFnIGlubmVyaGFsYiB2b24gU3BpZWxlcm4gZGFyLCB3ZWxjaGVzCisJc3RhbmRhcmRtYWVzc2lnIG5pY2h0IGdlc2V0enQgaXN0LiBJbiBkaWVzZW0gRmFsbCB3ZXJkZW4gVG9lbmUsCisJd2VsY2hlIGlubmVyaGFsYiBlaW5pZ2VyIEZ1bmt0aW9uZW4gZXJ6ZXVndCB3ZXJkZW4sIGF1Y2ggd2lya2xpY2ggYW4KKwlkZW4gU3BpZWxlciBnZXNjaGlja3QuCisJU2V0enQgbWFuIGRpZSBQcm9wZXJ0eSwgc28gZXJoYWVsdCBkZXIgU3BpZWxlciBrZWluZSBUb2VuZSBtZWhyLgorCitCRUlTUElFTDoKKwlQaWVwdG9lbmUgd2VyZGVuIGR1cmNoIGRlbiBBU0NJSS1Db2RlIDB4NyBwcmFlc2VudGllcnQuIEF1c2dlYmVuCisJa2FubiBtYW4gZGllc2VuIGZvbGdlbmRlcm1hc3NlbjoKKwkgIGlmKCFJU19XSVpBUkQoY2FzdGVyKSYmIXZpY3RpbS0+UXVlcnlQcm9wKFBfVklTVUFMQkVMTCkpCisJICAgIHRlbGxfb2JqZWN0KHZpY3RpbSxzcHJpbnRmKCIlYyIsNykpOworCURhcyB3YWVyZSBiZWlzcGllbHN3ZWlzZSBlaW4gQ29kZXN0dWVjayBhdXMgZWluZW0gUGllcHNwZWxsLiA6KQorCURhcyBPcGZlciBiZWtvbW10IGRlbiBQaWVwdG9uIGhpZXJiZWkgbnVyIGFiLCB3ZW5uIGRlciBDYXN0ZXIgZWluCisJTWFnaWVyIGlzdCBvZGVyIGRhcyBTcGllbGVyb3BmZXIgZGllIFByb3BlcnR5IFBfVklTVUFMQkVMTCBnZXNldHp0CisJaGF0IChrYW5uIG1pdCBLb21tYW5kbyAndG9uJyB2b20gU3BpZWxlciBiZWVpbmZsdXNzdCB3ZXJkZW4pLgorCitCRU1FUktVTkdFTjoKKyAgQWNodHVuZzogUF9WSVNVQUxCRUxMIHN0ZWh0IGF1ZiAxLCB3ZW5uIGRlciBTcGllbGVyIF9rZWluZV8gUGllcHN0b2VuZQorCWhvZXJlbiB3aWxsIQorCURpZSBGdW5rdGlvbmFsaXRhZXQgZGllc2VyIFByb3BlcnR5IHdpcmt0IG51ciBzb3dlaXQsIHdpZSBzaWUgYXVjaAorCXZvbiB0b25lcnpldWdlbmRlbiBCZWZlaGxlbiBzZWxic3QgdW50ZXJzdHVldHp0IHdpcmQuIEVzIGlzdCBkYXJhdWYKKwl6dSBhY2h0ZW4sIGRhc3MgUF9WSVNVQUxCRUxMIHp1IGRpZXNlbSBad2VjayBncnVuZHNhZXR6bGljaAorCWF1c2dld2VydGV0IHdpcmQhIEVpbmUgQXVzbmFobWUgc2VpIGhpZXJiZWkgenVnZWxhc3NlbjogTWFnaWVyCisJa29lbm5lbiBTcGllbGVybiBncnVuZHNhZXR6bGljaCBUb2VuZSB6dXNlbmRlbi4KKworU0lFSEUgQVVDSDoKKwl0b24sIHdlY2tlLCBlcndhcnRlLCBQX1dBSVRGT1IsIC9zdGQvcGxheWVyL2Jhc2UuYworCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCitMYXN0IG1vZGlmaWVkOiAwNy4wMi4yMDA3IGJ5IFplc3N0cmEKZGlmZiAtLWdpdCBhL2RvYy9wcm9wcy9QX1ZVTE5FUkFCSUxJVFkgYi9kb2MvcHJvcHMvUF9WVUxORVJBQklMSVRZCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjdlMWM2NzYKLS0tIC9kZXYvbnVsbAorKysgYi9kb2MvcHJvcHMvUF9WVUxORVJBQklMSVRZCkBAIC0wLDAgKzEsMzcgQEAKK05BTUU6CisgICAgIFBfVlVMTkVSQUJJTElUWSAgICAgICAgICAgICAgICJ2dWxuZXJhYmlsaXR5IgorCitERUZJTklFUlQgSU46CisgICAgIC9zeXMvbGl2aW5nL2NvbWJhdC5oCisKK1dJQ0hUSUc6CisgICAgIERJRVNFIFBST1BFUlRZIElTVCBWRVJBTFRFVCEgQklUVEUgUF9SRVNJU1RBTkNFX1NUUkVOR1RIUworICAgICBWRVJXRU5ERU4hIEFVQ0ggRlVOS1RJT05JRVJUIFNldCgpIE5JQ0hUIFdJRSBFUyBTT0xMVEUuCisKK0JFU0NIUkVJQlVORzoKKyAgICAgSGllcm1pdCBrb2VubmVuIGRpZSBFbXBmaW5kbGljaGtlaXRlbiBlaW5lcyBMZWJld2VzZW5zIGRlZmluaWVydAorICAgICB3ZXJkZW4uIEVzIGthbm4gZWluIEFycmF5IG1pdCBTY2hhZGVuc2FydGVuIGdlc2V0enQgd2VyZGVuLCBqZWRlcgorICAgICBFaW50cmFnIGVpbmVzIFNjaGFkZW5zIHZlcmRvcHBlbHQgZGllIEVtcGZpbmRsaWNoa2VpdCBnZWdlbgorICAgICBkaWVzZW4uCisKK0JFTUVSS1VOR0VOOgorICAgICAtIFBfUkVTSVNUQU5DRV9TVFJFTkdUSFMgc3BpZWdlbHQgZGllIEVpbnRyYWVnZSBoaWVyIHdpZWRlcgorICAgICAtIHVtIGdlbmF1ZXJlIFdlcnRlIGFuenVnZWJlbiBlaW5lbiBBZGRSZXNpc3RhbmNlTW9kaWZpZXIoKSBvZGVyCisgICAgICAgUF9SRVNJU1RBTkNFX1NUUkVOR1RIUyBiZW51dHplbi4KKyAgICAgLSBQX1ZVTE5FUkFCSUxJVFkga2FubiB1bmQgd2lyZCBuaWNodCBhdXMgUF9SRVNJU1RBTkNFX1NUUkVOR1RIUworICAgICAgIHVwZ2VkYXRldAorCitCRUlTUElFTEU6CisgICAgIC8vIGVpbiBOUEMgbWl0IHZlcmRvcHBlbHRlciBFaXNlbXBmaW5kbGljaGtlaXQgdW5kCisgICAgIC8vIHZlcnZpZXJmYWNodGVyIFdhc3NlcmVtcGZpbmRsaWNoa2VpdAorICAgICBTZXRQcm9wKFBfVlVMTkVSQUJJTElUWSwgKHtEVF9DT0xELCBEVF9XQVRFUiwgRFRfV0FURVJ9KSk7CisKK1NJRUhFIEFVQ0g6CisgICAgIHNpbXBsZSBSZXNpc3Rlbno6CVBfUkVTSVNUQU5DRQorICAgICBIYXVwdG1hcHBpbmc6CVBfUkVTSVNUQU5DRV9TVFJFTkdUSFMKKyAgICAgTW9kaWZpa2F0b3JlbjoJQWRkUmVzaXN0YW5jZU1vZGlmaWVyLCBSZW1vdmVSZXNpc3RhbmNlTW9kaWZpZXIoKSwKKwkJCVBfUkVTSVNUQU5DRV9NT0RJRklFUgorICAgICBCZXJlY2hudW5nOglDaGVja1Jlc2lzdGFuY2UoKSwgVXBkYXRlUmVzaXN0YW5jZVN0cmVuZ3RocygpCisgICAgIGFuZGVyZXM6CQliYWxhbmNlLCAvc3RkL2FybW91ci9jb21iYXQuYywgL3N0ZC9saXZpbmcvY29tYmF0LmMKKworMS5EZXogMjAwNCwgR2xvaW5zb24KZGlmZiAtLWdpdCBhL2RvYy9wcm9wcy9QX1dBSVRGT1IgYi9kb2MvcHJvcHMvUF9XQUlURk9SCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmE4Y2Y4ZWUKLS0tIC9kZXYvbnVsbAorKysgYi9kb2MvcHJvcHMvUF9XQUlURk9SCkBAIC0wLDAgKzEsMTQgQEAKK05BTUU6CisgICAgIFBfV0FJVEZPUiAgICAgICAgICAgICAgICAgICAgICJ3YWl0Zm9yIiAgICAgICAgICAgICAgICAgICAgIAorCitERUZJTklFUlQgSU46CisgICAgIC9zeXMvcGxheWVyL2Jhc2UuaAorCitCRVNDSFJFSUJVTkc6CisgICAgIERpZSBFcndhcnRlLUxpc3RlLiBFaW4gQXJyYXkgbWl0IGRlbiBOYW1lbiBkZXIgRXJ3YXJ0ZXRlbi4KKworU0lFSEUgQVVDSDoKKyAgICAgZXJ3YXJ0ZQorICAgICBQX1dBSVRGT1JfUkVBU09OLCBQX1dBSVRGT1JfRkxBR1MKKworMTYuIEZlYiAyMDA4IEdsb2luc29uCmRpZmYgLS1naXQgYS9kb2MvcHJvcHMvUF9XQUlURk9SX0ZMQUdTIGIvZG9jL3Byb3BzL1BfV0FJVEZPUl9GTEFHUwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5mMTM3ZGQxCi0tLSAvZGV2L251bGwKKysrIGIvZG9jL3Byb3BzL1BfV0FJVEZPUl9GTEFHUwpAQCAtMCwwICsxLDE3IEBACitQX1dBSVRGT1JfRkxBR1MKK05BTUU6CisgICAgIFBfV0FJVEZPUl9GTEFHUyAgICAgICAgICAgICAgICAgICJ3YWl0Zm9yX2ZsYWdzIiAgICAgICAgICAgICAgICAgICAgIAorCitERUZJTklFUlQgSU46CisgICAgIC9zeXMvcGxheWVyL2Jhc2UuaAorCitCRVNDSFJFSUJVTkc6CisgICAgIEVpbiBJbnQuIEJpc2hlciBiZWthbm50ZSBGbGFnczoKKyAgICAgCisgICAgIDB4MDEgLSAiZXJ3YXJ0ZSBhdXMiCisKK1NJRUhFIEFVQ0g6CisgICAgIGVyd2FydGUKKyAgICAgUF9XQUlURk9SLCBQX1dBSVRGT1JfUkVBU09OCisKKzE2LiBGZWIgMjAwOCBHbG9pbnNvbgpkaWZmIC0tZ2l0IGEvZG9jL3Byb3BzL1BfV0FJVEZPUl9SRUFTT04gYi9kb2MvcHJvcHMvUF9XQUlURk9SX1JFQVNPTgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5iMTljODIxCi0tLSAvZGV2L251bGwKKysrIGIvZG9jL3Byb3BzL1BfV0FJVEZPUl9SRUFTT04KQEAgLTAsMCArMSwxOCBAQAorUF9XQUlURk9SX1JFQVNPTgorTkFNRToKKyAgICAgUF9XQUlURk9SX1JFQVNPTiAgICAgICAgICAgICAgICAgICJ3YWl0Zm9yX3JlYXNvbiIgICAgICAgICAgICAgICAgICAgICAKKworREVGSU5JRVJUIElOOgorICAgICAvc3lzL3BsYXllci9iYXNlLmgKKworQkVTQ0hSRUlCVU5HOgorICAgICBFaW4gTWFwcGluZyBtaXQgZGVuIEVyd2FydGV0ZW4gYWxzIFNjaGx1ZXNzZWwgdW5kIGVpbmVtIEdydW5kIGFscworICAgICBLZXksIHpCOgorICAgICAKKyAgICAgKFsiWm9vayI6Im11aCBtdWgiXSkKKworU0lFSEUgQVVDSDoKKyAgICAgZXJ3YXJ0ZSAoZXJ3YXJ0ZSA8d2VuPiB3ZWdlbiA8d2FzPikKKyAgICAgUF9XQUlURk9SLCBQX1dBSVRGT1JfRkxBR1MKKworMTYuIEZlYiAyMDA4IEdsb2luc29uCmRpZmYgLS1naXQgYS9kb2MvcHJvcHMvUF9XQU5UU19UT19MRUFSTiBiL2RvYy9wcm9wcy9QX1dBTlRTX1RPX0xFQVJOCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmExNTUzYmQKLS0tIC9kZXYvbnVsbAorKysgYi9kb2MvcHJvcHMvUF9XQU5UU19UT19MRUFSTgpAQCAtMCwwICsxLDEyIEBACitOQU1FOgorICAgIFBfV0FOVFNfVE9fTEVBUk4gICAgICAgICAgICAgICJ3YW50c190b19sZWFybiIgICAgICAgICAgICAgIAorCitERUZJTklFUlQgSU46CisgICAgL3N5cy9wbGF5ZXIvYmFzZS5oCisKK0JFU0NIUkVJQlVORzoKKyAgICAgR2VzZXR6dCwgd2VubiBkZXIgTWFnaWVyIGRpZSBGaWxlbmFtZW4gc2VoZW4gd2lsbC4KKyAgICAgKE51ciBmdWVyIE1hZ2llcikuIFdpcmQgZGllc2UgUHJvcGVydHkgYXVmIDAgZ2VzZXR6dCwgZ2VoZW4gYXVjaAorICAgICBlaW5pZ2UgYW5kZXJlIERpbmdlIG5pY2h0IG1laHIgLSB2ZXJmb2xnZSB6Qi4gRWlnZW50bGljaCBzb2xsdGVuCisgICAgIGRhbm4gYXVjaCBkaWUgTWFnaWVyYmVmZWhsZSB3aWUgImdvdG8iIHVzdyB1bnRlcmJ1bmRlbiB3ZXJkZW4gLQorICAgICBkYXMga29tbXQgdmllbGxlaWNodCBub2NoLgpkaWZmIC0tZ2l0IGEvZG9jL3Byb3BzL1BfV0FURVIgYi9kb2MvcHJvcHMvUF9XQVRFUgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi42YmU0ZmU2Ci0tLSAvZGV2L251bGwKKysrIGIvZG9jL3Byb3BzL1BfV0FURVIKQEAgLTAsMCArMSwxMTAgQEAKK05BTUU6CisgICAgUF9XQVRFUiAgICAgICAgICAgICAgICAgICAgICAgIndhdGVyIiAgICAgICAgICAgICAgICAgICAgICAgCisKK0RFRklOSUVSVCBJTjoKKyAgICAvc3lzL2Zpc2hpbmcuaAorCitCRVNDSFJFSUJVTkc6CisgICAgRW50aGFlbHQgZGVuIEdld2Flc3NlcnR5cC4gS2FubiBpbiBSYWV1bWVuLCBBbmdlbG4gdW5kIFdhc3NlcmJlaGFlbHRlcm4KKyAgICB2ZXJ3ZW5kZXQgd2VyZGVuLiBEaWUgdmVyZnVlZ2JhcmVuIE9wdGlvbmVuIHVuZCBGdW5rdGlvbnN3ZWlzZW4gc2luZCBpbiAKKyAgICBkZW4gbmFjaGZvbGdlbmRlbiBBYnNjaG5pdHRlbiBhdWZnZWZ1ZWhydC4KKworICAgIFJhdW06CisgICAgKioqKioKKyAgICAgIExlZ3QgZGVuIFR5cCBkZXMgR2V3YWVzc2VycyBmZXN0LCBkYXMgZXMgaW4gZGllc2VtIFJhdW0gZ2lidC4gVm9uCisgICAgICBkaWVzZW0gVHlwIGhhZW5ndCBhYiwgd2VsY2hlIEFydGVuIHZvbiBGaXNjaGVuIGVzIGhpZXIgc3RhbmRhcmRtYWVzc2lnCisgICAgICBnaWJ0IHVuZCB3ZWxjaGUgQXJ0ZW4gdm9uIEFuZ2VsbiB2ZXJ3ZW5kZXQgd2VyZGVuIGtvZW5uZW4uIAorICAgICAgCisgICAgICBCZWlzcGllbDoKKworICAgICAgU2V0UHJvcChQX1dBVEVSLCBXX0hBUkJPUik7CisgICAgICAKKyAgICAgIEZvbGdlbmRlCisgICAgICBUeXBlbiBzdGVoZW4genVyIFZlcmZ1ZWd1bmcsIHZvbiBkZW5lbiBpbiBSYWV1bWVuIG51ciBlaW5lciBnZXNldHp0CisgICAgICB3ZXJkZW4gZGFyZjoKKworICAgICAgU2Fsendhc3NlcjoKKyAgICAgICAgV19CRUFDSCAgIFN0cmFuZDogU2Nob2xsZSwgRmx1bmRlciwgUm9jaGVuLCBTZWV6dW5nZSwgS2F0emVuaGFpCisgICAgICAgIFdfSEFSQk9SICBIYWZlbjogRG9yc2NoLCBSb2NoZW4sIFNlZXp1bmdlLCBIZXJpbmcsIEthdHplbmhhaQorICAgICAgICBXX09DRUFOICAgT3plYW4vTWVlcjogSGFpLCBUaHVuZmlzY2gsIEthYmVsamF1LCBTY2h3ZXJ0ZmlzY2gsIFNlZWhhc2UsCisgICAgICAgICAgICAgICAgICBTZWV0ZXVmZWwsIFNlZXdvbGYKKworICAgICAgU3Vlc3N3YXNzZXI6CisgICAgICAgIFdfUklWRVIgICBGbHVzczogUGlyYW5oYSwgTGFjaHMsIEZvcmVsbGUsIEJhY2hzYWlibGluZworICAgICAgICBXX1BPT0wgICAgVGVpY2g6IFN0aWNobGluZywgR29sZGZpc2NoLCBTY2hsZWksIEthcnBmZW4sIEdvbGRvcmZlCisgICAgICAgIFdfTEFLRSAgICBTZWU6IEthcnBmZW4sIEJhcnNjaCwgSGVjaHQsIFNlZXNhaWJsaW5nCisgICAgICAgIFdfUk9DSyAgICBCZXJnYmFjaDogTGFjaHMsIEZvcmVsbGUsIEJhY2hzYWlibGluZworICAgICAgICBXX1NUUkVBTSAgQmFjaDogU3RpY2hsaW5nLCBCYWNoZm9yZWxsZSwgTmV1YXVnZSwgQmFjaHNhaWJsaW5nCisKKyAgICAgIFNvbnN0aWdlOgorICAgICAgICBXX1VTRVIgICAgd2VubiBkaWVzZXIgR2V3YWVzc2VydHlwIGdlc2V0enQgd2lyZCwgTVVTUyBkZXIgUmF1bSAKKyAgICAgICAgICAgICAgICAgIHp1c2FldHpsaWNoIGRpZSBGdW5rdGlvbiBHZXRBcXVhcml1bSgpIGRlZmluaWVyZW4sIGRpZQorICAgICAgICAgICAgICAgICAgZWluZSBMaXN0ZSBkZXIgaGllciBmYW5nYmFyZW4gRmlzY2hlIHp1cnVlY2tnZWJlbiBtdXNzLgorICAgICAgICAgICAgICAgICAgQmVpc3BpZWw6CisKKyAgICAgICAgICAgICAgICAgIHN0cmluZyogR2V0QXF1YXJpdW0oKXsgCisgICAgICAgICAgICAgICAgICAgIHJldHVybiAoeyIvZC9lYmVuZS9mcmFnZ2xlL2FuZ2VsL2Zpc2NoIn0pOyAKKyAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgV19ERUFEICAgIExlYmxvc2VzIFdhc3Nlci4gRW50aGFlbHQga2VpbmUgRmlzY2hlLCBtYW4ga2FubgorICAgICAgICAgICAgICAgICAgYWJlciBkaWUgU3RhbmRhcmRmbGFzY2hlIGZ1ZWxsZW4uCisKKyAgICAgICAgV19PVEhFUiAgIDEwMjQgICAvLyBGbGFzY2hlIGVudGhhZWx0IEZsdWVzc2lna2VpdCE9V2Fzc2VyCisKKworICAgIEFuZ2VsOgorICAgICoqKioqKgorICAgICAgQW5nZWxuIHNpbmQgdWVibGljaGVyd2Vpc2UgYXVmIGJlc3RpbW10ZSBBbndlbmR1bmdzYmVyZWljaGUgYXVzZ2VsZWd0LgorICAgICAgT2IgZWluZSBBbmdlbCBpbiBlaW5lbSBHZXdhZXNzZXIgYmVudXR6dCB3ZXJkZW4ga2FubiwgaGFlbmd0IGRhdm9uIGFiLAorICAgICAgb2IgUF9XQVRFUiBpbiBkZXIgQW5nZWwgZGVuIEdld2Flc3NlcnR5cCBkZXMgUmF1bWVzIGVudGhhZWx0LiBWb24gZGVuCisgICAgICBvYmVuIGdlbmFubnRlbiBUeXBlbiBrb2VubmVuIG1laHJlcmUgdmVyLU9ERVItdCBnZXNldHp0IHdlcmRlbi4KKyAgICAgIFZlcndlbmR1bmcgZWluZXIgZnVlciBkYXMgb2VydGxpY2hlIEdld2Flc3NlciB1bmdlZWlnbmV0ZW4gQW5nZWwgZnVlaHJ0CisgICAgICB6dSBlaW5lciB1bSA2MCtyYW5kb20oNjApIFNla3VuZGVuIHZlcmxhZW5nZXJ0ZW4gV2FydGV6ZWl0IGJlaW0gQW5nZWxuLgorICAgICAgCisgICAgICBCZWlzcGllbDogU2V0enQgbWFuIGRlbiBHZXdhZXNzZXJ0eXAgbWl0IAorCisgICAgICAgIFNldFByb3AoUF9XQVRFUiwgV19IQVJCT1J8V19PQ0VBTik7CisKKyAgICAgIHNjaGFsdGV0IGRhcyBkaWUgQW5nZWwgc293b2hsIGZ1ZXIgSGFlZmVuLCBhbHMgYXVjaCBmdWVyIG9mZmVuZSBNZWVyZQorICAgICAgKE96ZWFuZSkgZnJlaS4KKworICAgICAgRm9sZ2VuZGUga29tYmluaWVydGUgR2V3YWVzc2VydHlwZW4gc2luZCBmdWVyIGVpbmZhY2hlIEFuZ2VsbiAKKyAgICAgIHZvcmRlZmluaWVydDoKKworICAgICAgS3VyemUgU3RhbmRhcmRhbmdlbG46CisgICAgICAgIFdfU0hPUlQgV19IQVJCT1J8V19SSVZFUnxXX1BPT0x8V19MQUtFfFdfUk9DS3xXX1VTRVJ8V19PQ0VBTnxXX1NUUkVBTQorICAgICAgU3BlemllbGxlIFN0cmFuZHJ1dGVuOgorICAgICAgICBXX0xPTkcgIFdfQkVBQ0h8V19VU0VSCisgICAgICBmdW5rdGlvbmllcnQgaW4gYWxsZW4gU2Fsemdld2Flc3Nlcm46CisgICAgICAgIFdfU0FMVCAgV19IQVJCT1J8V19PQ0VBTnxXX0JFQUNICisgICAgICBmdW5rdGlvbmllcnQgaW4gYWxsZW4gU3Vlc3NnZXdhZXNzZXJuOgorICAgICAgICBXX1NXRUVUIFdfUklWRVJ8V19QT09MfFdfTEFLRXxXX1JPQ0t8V19TVFJFQU0KKworICAgICAgSGlud2VpczogV19ERUFEIGlzdCBpbiBkaWVzZW4gS29tYmluYXRpb25lbiBuaWNodCBlbnRoYWx0ZW4sIGRhIGVzCisgICAgICBpbiBzb2xjaGVuIEdld2Flc3Nlcm4gb2huZWhpbiBrZWluZSBGaXNjaGUgZ2lidC4KKyAgICAgIERpZSBLb21iaS1UeXBlbiBlbnRoYWx0ZW4gV19VU0VSLCB1bSBiZWkgZW50c3ByZWNoZW5kZW4gR2V3YWVzc2VybgorICAgICAgenUgdmVybWVpZGVuLCBkYXNzIGVzIGRvcnQgc3RhbmRhcmRtYWVzc2lnIGVpbmVuIE1hbHVzIGF1ZiBkaWUgCisgICAgICBXYXJ0ZXplaXQgZ2lidC4gU3RhbmRhcmR3ZXJ0IGZ1ZXIgUF9XQVRFUiBpbiBBbmdlbG4gaXN0IGViZW5mYWxscyAKKyAgICAgIFdfVVNFUi4KKworICAgIEtvZWRlcjoKKyAgICAqKioqKioqCisgICAgICBBdWNoIEtvZWRlciBrb2VubmVuIGZ1ZXIgZGllIFZlcndlbmR1bmcgaW4gYmVzdGltbXRlbiBHZXdhZXNzZXJuIGJlc3NlcgorICAgICAgZ2VlaWduZXQgc2VpbiBhbHMgaW4gYW5kZXJlbiwgei5CLiBlaW5lIFNlZXNjaG5lY2tlIGZ1ZXIgU2Fsendhc3NlciwKKyAgICAgIGVpbiBNZWhsd3VybSBoaW5nZWdlbiBmdWVyIFN1ZXNzd2Fzc2VyLiBHZXNldHp0IHdpcmQgUF9XQVRFUiBoaWVyZnVlcgorICAgICAgYXVmIGRpZSBvYmVuIGF1ZmdlZnVlaHJ0ZW4gV2VydGUuCisgICAgICBWZXJ3ZW5kdW5nIGVpbmVzIHVuZ2VlaWduZXRlbiBLb2VkZXJzIGZ1ZWhydCB6dSBlaW5lciB1bSA2MCtyYW5kb20oNjApCisgICAgICBTZWt1bmRlbiBsYWVuZ2VyZW4gV2FydGV6ZWl0IGJlaW0gQW5nZWxuLgorCisgICAgV2Fzc2VyYmVoYWVsdGVyOgorICAgICoqKioqKioqKioqKioqKioKKyAgICAgIERpZSBQcm9wZXJ0eSBnaWJ0IGFuLCBvYiBkZXIgQmVoYWVsdGVyIFdhc3NlciBlbnRoYWVsdCBvZGVyIG5pY2h0LgorICAgICAgRGVyIFdlcnQgc29sbHRlIGltbWVyIGF1ZiBkZW4gVHlwIGplbmVzIEdld2Flc3NlcnMgZ2VzZXR6dCBzZWluLCBhdXMKKyAgICAgIGRlbSBkZXIgQmVoYWVsdGVyIGF1ZmdlZnVlbGx0IHd1cmRlLgorCitTSUVIRSBBVUNIOgorCisgICAgUHJvcGVydGllczogUF9GSVNICisgICAgTWV0aG9kZW46ICAgR2V0QXF1YXJpdW0oTCkKKworLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCitadWxldHp0IGdlYWVuZGVydDogMjAxNC1BdWctMjEsIEFyYXRob3JuCmRpZmYgLS1naXQgYS9kb2MvcHJvcHMvUF9XQyBiL2RvYy9wcm9wcy9QX1dDCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjA0MmRlM2QKLS0tIC9kZXYvbnVsbAorKysgYi9kb2MvcHJvcHMvUF9XQwpAQCAtMCwwICsxLDM3IEBACitOQU1FOgorCVBfV0MJCQkJIndjIgorCitERUZJTklFUlQgSU46CisJL3N5cy93ZWFwb24uaAorCitCRVNDSFJFSUJVTkc6CisJRGllIFdhZmZlbmtsYXNzZSAoZW5nbDogd2VhcG9uIGNsYXNzKSwgYWxzbyBkaWUgU3RhZXJrZSBkZXIgV2FmZmUsCisJc3RlbGx0IGVpbmVuIG51bWVyaXNjaGVuIFdlcnQgZGFyLCBkZXIgdW1zbyBncm9lc3NlciBpc3QsIGRlc3RvIG1laHIKKwlTY2hhZGVuIGVpbmUgV2FmZmUgaW0gS2FtcGYgYW5yaWNodGV0LiBCZWltIFp1ZWNrZW4gb2RlciBXZWdzdGVja2VuCisJZWluZXIgV2FmZmUgZHVyY2ggZWluIExlYmV3ZXNlbiB3aXJkIGlubmVyaGFsYiBkZXMgTGViZXdlc2VucyBhdWNoCisJZGllIFByb3BlcnR5IFBfVE9UQUxfV0MgYWt0dWFsaXNpZXJ0LCB3ZWxjaGUgc29taXQgaW1tZXIgZGllCisJYWt0dWVsbGUgQW5ncmlmZnNzdGFlcmtlIGVudGhhZWx0LiBCZWltIFp1ZWNrZW4gZXJoYWVsdCBzaWUgaGllcmJlaQorCWRpZSBXYWZmZW5rbGFzc2UgZGVyIFdhZmZlIHVuZCBiZWltIFdlZ3N0ZWNrZW4gZGllIEFuZ3JpZmZzc3RhZXJrZQorCWF1cyBkZXIgUHJvcGVydHkgUF9IQU5EUyAoS2FlbXBmZW4gbWl0IGJsb3NzZW4gSGFlbmRlbikuCisJRGllIFdhZmZlbmtsYXNzZSB2b24gZWluaGFlbmRpZ2VuIFdhZmZlbiBzb2xsdGUgMTUwIG5pY2h0CisJdWViZXJzY2hyZWl0ZW4sIGRpZSBPYmVyZ3JlbnplIGZ1ZXIgendlaWhhZW5kaWdlIFdhZmZlbiBsaWVndCBiZWkKKwkyMDAuIEF1c25haG1lbiB2b24gZGllc2VyIFJlZ2VsIGJlZHVlcmZlbiBkZXIgQWJzcHJhY2hlIG1pdCBkZW0KKwlFcnptYWdpZXIgZnVlciBSdWVzdHVuZ2VuLCBXYWZmZW4gdW5kIE1vbnN0ZXIhCisJTmVnYXRpdmUgV2VydGUgYmV3aXJrZW4ga2VpbmVuIFNjaGFkZW4sIGFsbGVyZGluZ3MgYXVjaCBrZWluZQorCUhlaWx1bmcuCisKK0JFTUVSS1VOR0VOOgorCVF1ZXJ5LSB1bmQgU2V0bWV0aG9kZW4gYXVmIFBfV0Mgc29sbHRlbiB1bmJlZGluZ3QgdmVybWllZGVuIHdlcmRlbi4gU2llCisJZnVlaHJlbiBpbiBkZXIgUmVnZWwgenUgbWFzc2l2ZW4gSW5rb25zaXN0ZW56ZW4gaW0gTWVjaGFuaXNtdXMgZGVyIAorCVJ1ZXN0dW5nc2Jlc2NoYWVkaWd1bmcgdW5kIC1yZXBhcmF0dXIuCisJQXVjaCBtaXQgZWluZXIgSGl0RnVuYygpIGR1ZXJmZW4gZGllIE9iZXJncmVuemVuIG5pY2h0IG9obmUKKwlBYnNwcmFjaGUgdWViZXJzY2hyaXR0ZW4gd2VyZGVuISBBdXNzZXJkZW0gaXN0IGVzIHJhdHNhbSwgZGllCisJenVzYWV0emxpY2hlbiBLYW1wZmVpZ2Vuc2NoYWZ0ZW4gaW4gUF9FRkZFQ1RJVkVfV0MgZ2Vzb25kZXJ0CisJYW56dWdlYmVuLgorCitTSUVIRSBBVUNIOgorCS9zdGQvd2VhcG9uLmMsIC9zdGQvd2VhcG9uL2NvbWJhdC5jCisJUF9EQU1BR0VELCBQX0VGRkVDVElWRV9XQywgUF9XRUFQT05fVFlQRQorCURhbWFnZSgpCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiswMi4xMC4yMDA3LCBaZXNzdHJhCmRpZmYgLS1naXQgYS9kb2MvcHJvcHMvUF9XRUFQT04gYi9kb2MvcHJvcHMvUF9XRUFQT04KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNWIxODU0YwotLS0gL2Rldi9udWxsCisrKyBiL2RvYy9wcm9wcy9QX1dFQVBPTgpAQCAtMCwwICsxLDE3IEBACitQX1dFQVBPTgorCitOQU1FOgorICAgICBQX1dFQVBPTiAgICAgICAgICAgICAgICAgICAgICAid2VhcG9uIgorCitERUZJTklFUlQgSU46CisgICAgIC9zeXMvcHJvcGVydGllcy5oCisKK0JFU0NIUkVJQlVORzoKKyAgICAgIE1vbWVudGFuIGdlenVlY2t0ZSBXYWZmZS4gSW0gTGl2aW5nIGdlc2V0enQuCisKK1NJRUhFIEFVQ0g6CisgICAgICBWZXJ3YW5kdDoJCVBfQVJNT1VSUworICAgICAgV2FmZmVuOgkJUF9XQywgUF9XRUFQT05fVFlQRSwgUF9EQU1fVFlQRSwgUF9OUl9IQU5EUywgUF9QQVJSWQorICAgICAgU29uc3RpZ2VzOglQX1VOV0lFTERfVElNRSwgUF9FUVVJUF9USU1FLCBQX0xBU1RfVVNFCisKKzEwLkZlYiAyMDA1IEdsb2luc29uCmRpZmYgLS1naXQgYS9kb2MvcHJvcHMvUF9XRUFQT05fVEVBQ0hFUiBiL2RvYy9wcm9wcy9QX1dFQVBPTl9URUFDSEVSCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjkxM2NmZTcKLS0tIC9kZXYvbnVsbAorKysgYi9kb2MvcHJvcHMvUF9XRUFQT05fVEVBQ0hFUgpAQCAtMCwwICsxLDIwIEBACitQX1dFQVBPTl9URUFDSEVSICAgIndlYXBvbl90ZWFjaGVyIgorLS0tLS0tLS0tLS0tLS0tLQorCitERUZJTklFUlQgSU46CistLS0tLS0tLS0tLS0tCisKK2NvbWJhdC5oCisKK0JFU0NIUkVJQlVORworLS0tLS0tLS0tLS0tCisKK0RpZXNlIFByb3BlcnR5IHdpcmQgaW4gZWluZW0gQXp1YmkgZ2VzZXR6dCAoenVyIFplaXQgbnVyIGZ1ZXIgZGllIAorS2FlbXBmZXItR2lsZGUpLCBkZXIgc2VsYnN0IHVlYmVyIGRpZSBhbGxnZW1laW5lbiBXYWZmZW5za2lsbHMKK3ZlcmZ1ZWd0LgorCitJbiBkaWVzZSBQcm9wZXJ0eSB3aXJkIGRlciBOYW1lIGVpbmVzIEthZW1wZmVyZ2lsZGVuLUF1c2JpbGRlcnMKK2VpbmdldHJhZ2VuLgorCitVbnRlciBBbmxlaXR1bmcgZGVzIEF1c2JpbGRlcnMgbGVybnQgZGVyIEF6dWJpIGRhbm4gZXR3YXMgc2NobmVsbGVyCitkaWUgYWxsZ2VtZWluZW4gV2FmZmVuc2tpbGxzLgpkaWZmIC0tZ2l0IGEvZG9jL3Byb3BzL1BfV0VBUE9OX1RZUEUgYi9kb2MvcHJvcHMvUF9XRUFQT05fVFlQRQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4wNmYzYzBiCi0tLSAvZGV2L251bGwKKysrIGIvZG9jL3Byb3BzL1BfV0VBUE9OX1RZUEUKQEAgLTAsMCArMSwzMSBAQAorUF9XRUFQT05fVFlQRQorCitOQU1FOgorICAgICBQX1dFQVBPTl9UWVBFICJ3ZWFwb25fdHlwZSIKKworREVGSU5JRVJUIElOOgorICAgICA8d2VhcG9uLmg+CisKK0JFU0NIUkVJQlVORzoKKyAgICAgVW0gd2FzIGZ1ZXIgZWluZSBXYWZmZSBoYW5kZWx0IGVzIHNpY2g/IEVzIHN0ZWhlbiB2ZXJzY2hpZWRlbmUKKyAgICAgVHlwZW4genVyIEF1c3dhaGwuIE1hbiBzb2xsdGUgaGllciBudXIgZGllIGluIDxjb21iYXQuaD4gZGVmaW5pZXJ0ZW4KKyAgICAgS29uc3RhbnRlbiB2ZXJ3ZW5kZW46CisKKyAgICAgICAgV1RfQU1NVSAgICAgICAgICAgTXVuaXRpb24gZnVlciBGZXJua2FtcGZ3YWZmZW4KKyAgICAgICAgV1RfQVhFICAgICAgICAgICAgQXh0CisgICAgICAgIFdUX0NMVUIgICAgICAgICAgIEtldWxlCisgICAgICAgIFdUX0hBTkRTICAgICAgICAgIGJsb3NzZSBIYWVuZGUKKyAgICAgICAgV1RfS05JRkUgICAgICAgICAgTWVzc2VyLCBEb2xjaAorICAgICAgICBXVF9SQU5HRURfV0VBUE9OICBGZXJua2FtcGZ3YWZmZQorICAgICAgICBXVF9TUEVBUiAgICAgICAgICBTcGVlcgorICAgICAgICBXVF9TVEFGRiAgICAgICAgICBLYW1wZnN0YWIKKyAgICAgICAgV1RfU1dPUkQgICAgICAgICAgU2Nod2VydAorICAgICAgICBXVF9XSElQICAgICAgICAgICBQZWl0c2NoZQorICAgICAgICBXVF9NSVNDICAgICAgICAgICBTb25zdGlnZXMKKworICAgIERlciBXYWZmZW50eXAgV1RfTUlTQyBpc3Qgc2Nobm9lZGVtIFRhbmQgdW5kIG51dHpsb3NlbSBLcmFtIHZvcmJlaGFsdGVuLgorICAgIFdhZmZlbiBkaWVzZXMgVHlwcyBkdWVyZmVuIGtlaW5lIFBfV0MgPiAwIGJlc2l0emVuIG9kZXIga2FtcGZyZWxldmFudGUKKyAgICBCZWRldXR1bmcgaGFiZW4uCisKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KK0xldHp0ZSBBZW5kZXJ1bmc6IDI3LiBNYWkgMjAxNSwgQXJhdGhvcm4uCmRpZmYgLS1naXQgYS9kb2MvcHJvcHMvUF9XRUFSX0ZVTkMgYi9kb2MvcHJvcHMvUF9XRUFSX0ZVTkMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZWRjOWJjYwotLS0gL2Rldi9udWxsCisrKyBiL2RvYy9wcm9wcy9QX1dFQVJfRlVOQwpAQCAtMCwwICsxLDI0IEBACitQX1dFQVJfRlVOQworCitOQU1FOgorICAgICBQX1dFQVJfRlVOQyAid2Vhcl9mdW5jIgorCitERUZJTklFUlQgSU46CisgICAgIDxhcm1vdXIuaD4KKworQkVTQ0hSRUlCVU5HOgorICAgICBGYWxscyBlaW4gT2JqZWt0IGVpbmUgV2VhckZ1bmMoKSBmdWVyIGRpZSBSdWVzdHVuZyAvIEtsZWlkdW5nIGRlZmluaWVydCwgCisgICAgIHNvIG11c3MgZGllc2VzIE9iamVrdCBpbiBkaWVzZXIgUHJvcGVydHkgZWluZ2V0cmFnZW4gc2Vpbi4KKworICAgICBEaWUgQXVzd2VydHVuZyBkaWVzZXIgUHJvcGVydHkgZXJmb2xndCBpbiBMYXVmZSBlaW5lcyBEb1dlYXIoKSBpbiBkZXIKKyAgICAgbmljaHQtb2VmZmVudGxpY2hlbiBGdW5rdGlvbiBfY2hlY2tfd2Vhcl9yZXN0cmljdGlvbnMoKS4uCisKK0JFSVNQSUVMRToKKyAgICAgU2llaGUgZGFzIEJlaXNwaWVsIHp1IFdlYXJGdW5jKCkKKworU0lFSEUgQVVDSDoKKyAgICAgYXJtb3VycywgY2xvdGhpbmcsIC9zdGQvY2xvdGhpbmcvd2Vhci5jLCAvc3RkL2FybW91ci93ZWFyLmMKKyAgICAgV2VhckZ1bmMoKSwgSW5mb3JtV2VhcigpCisKK0xFVFpURSBBZU5ERVJVTkc6CisxNS4wMi4yMDA5LCBaZXNzdHJhClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZG9jL3Byb3BzL1BfV0VBUl9NU0cgYi9kb2MvcHJvcHMvUF9XRUFSX01TRwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4zMTQwN2ZhCi0tLSAvZGV2L251bGwKKysrIGIvZG9jL3Byb3BzL1BfV0VBUl9NU0cKQEAgLTAsMCArMSw2MSBAQAorUF9XRUFSX01TRworTkFNRToKKyAgICBQX1dFQVJfTVNHICAgICAgICAgICAgICAgICAgICAgICAid2Vhcl9tc2ciICAgICAgICAgICAgICAgICAgICAgICAKKworREVGSU5JRVJUIElOOgorICAgIC9zeXMvYXJtb3VyLmgKKworQkVTQ0hSRUlCVU5HOgorICAgICBad2VpdGVpbGlnZXMgQXJyYXkgbWl0IE1lbGR1bmdlbiwgZGllIGJlaW0gQW56aWVoZW4gZWluZXIgUnVlc3R1bmcgb2RlcgorICAgICBLbGVpZHVuZyBhbiBkZW4gU3BpZWxlciB1bmQgZGllIFVtZ2VidW5nIGF1c2dlZ2ViZW4gd2VyZGVuLgorICAgICBEZXIgZXJzdGUgRWludHJhZyBnZWh0IGFuIGRlbiBTcGllbGVyLCBkZXIgendlaXRlIEVpbnRyYWcgYW4gZGllCisgICAgIFVtZ2VidW5nLiBaZWlsZW51bWJydWVjaGUgd2VyZGVuIGF1dG9tYXRpc2NoIGdlbWFjaHQsIGV4aXN0aWVyZW5kZQorICAgICBqZWRvY2ggYmVydWVja3NpY2h0aWd0LgorCisgICAgIFBsYXR6aGFsdGVyIGZ1ZXIgU3BpZWxlciBpc3QgQFdFeHh4MSwgZnVlciBkaWUgV2FmZmUgQFdFeHh4MiAoc2llaGUKKyAgICAgbWFuIHJlcGxhY2VfcGVyc29uYWwoKSkuCisKKyAgICAgW1dlZ2VuIEFid2FlcnRza29tcGF0aWJpbGl0YWV0IGlzdCBhdWNoIG5vY2ggZGVyIFBsYXR6aGFsdGVyICVzCisgICAgICBtb2VnbGljaCwgd29iZWkgaW4gZGVyIGVpZ2VuZW4gTWVsZHVuZyAlcyBmdWVyIGRlbiBXYWZmZW5uYW1lbiBzdGVodCwKKyAgICAgIGluIGRlciBhbiBkZW4gUmF1bSBkYXMgZXJzdGUgJXMgZnVlciBkZW4gU3BpZWxlcm5hbWVuLCBkYXMgendlaXRlIGZ1ZXIKKyAgICAgIGRlbiBXYWZmZW5uYW1lbi5dCisKK0JFSVNQSUVMRToKKyAgICBTZXRQcm9wKFBfTkFNRSwgIkhlbG0iKTsKKyAgICBTZXRQcm9wKFBfV0VBUl9NU0csCisgICAgICh7IkR1IHN0dWVscHN0IGRpZSBAV0VOMiB1ZWJlci4iLCAKKyAgICAgICAiQFdFUjEgc3R1ZWxwdCBzaWNoIEBXRU5VMiB1ZWJlci4ifSkpOworCisgICAgLT4gYmVpbSBBbnppZWhlIGR1cmNoIFVyazoKKyAgICAgICBVcmsgYmVrb21tdDogRHUgc3R1ZWxwc3QgZGlyIGRlbiBIZWxtIHVlYmVyLgorICAgICAgIERlciBSYXVtOiAgICBVcmsgc3R1ZWxwdCBzaWNoIGVpbmVuIEhlbG0gdWViZXIuCisKKyAgICBTZXRQcm9wKFBfV0VBUl9NU0csCisgICAgICh7IkFscyBEdSBEaXIgZGVuIGxhbmdlbiBNYW50ZWwgdWViZXJ6aWVoc3QsIHN0ZWNrc3QgRHUgZXJzdG1hbCAiCisgICAgICAgIm1pdCBEZWluZW0gZGlja2VuIFNjaGFlZGVsIGZlc3QuIERvY2ggbmFjaCBlaW5lbSBrcmFlZnRpZ2VuICIKKyAgICAgICAiUnVjayBiaXN0IER1IGVuZGxpY2ggZHVyY2ggdW5kIHNpZWhzdCB3aWVkZXIgZXR3YXMuIiwKKyAgICAgICAiQFdFUjEgemllaHQgc2ljaCBlaW5lbiBsYW5nZW4gTWFudGVsIHVlYmVyIHVuZCBibGVpYnQgIgorICAgICAgICJwcm9tcHQgbWl0IGRlbSBkaWNrZW4gU2NoYWVkZWwgc3RlY2tlbi4gRG9jaCBuYWNoIGVpbmVtICIKKyAgICAgICAia3JhZWZ0aWdlbiBSdWNrIGthbm4gQFdFUlFQMSB3aWVkZXIgZXR3YXMgc2VoZW4gdW5kIGdyaW5zdCBEaWNoICIKKyAgICAgICAidmVybGVnZW4gYW4uIn0pKTsKKworICAgIC0+IGJlaW0gQW56aWVoZW4gZHVyY2ggVXJrOgorICAgICAgIFVyayBiZWtvbW10OiBBbHMgRHUgRGlyIGRlbiBsYW5nZW4gTWFudGVsIHVlYmVyemllaHN0LCBzdGVja3N0IER1CisJCSAgICBlcnN0bWFsIG1pdCBEZWluZW0gZGlja2VuIFNjaGFlZGVsIGZlc3QuIERvY2ggbmFjaCBlaW5lbQorCQkgICAga3JhZWZ0aWdlbiBSdWNrIGJpc3QgRHUgZW5kbGljaCBkdXJjaCB1bmQgc2llaHN0IHdpZWRlcgorCQkgICAgZXR3YXMuCisKKyAgICAgICBEZXIgUmF1bTogICAgVXJrIHppZWh0IHNpY2ggZWluZW4gbGFuZ2VuIE1hbnRlbCB1ZWJlciB1bmQgYmxlaWJ0CisJCSAgICBwcm9tcHQgbWl0IGRlbSBkaWNrZW4gU2NoYWVkZWwgc3RlY2tlbi4gRG9jaCBuYWNoCisJCSAgICBlaW5lbSBrcmFlZnRpZ2VuIFJ1Y2sga2FubiBlciB3aWVkZXIgZXR3YXMgc2VoZW4gdW5kCisJCSAgICBncmluc3QgRGljaCB2ZXJsZWdlbiBhbi4KKworU0lFSEUgQVVDSDoKKyAgICAgQWVobmxpY2hlczogUF9VTldFQVJfTVNHLCBQX1dJRUxEX01TRywgUF9VTldJRUxEX01TRworICAgICAgICAgICAgICAgICBQX0RST1BfTVNHLCBQX1BVVF9NU0csIFBfR0lWRV9NU0csIFBfUElDS19NU0cKKyAgICAgRnVua3Rpb25lbjogV2VhckZ1bmMsIFVud2VhckZ1bmMsIEluZm9ybVdlYXIoKQorICAgICBTb25zdGlnZXM6ICByZXBsYWNlX3BlcnNvbmFsKEUpLCBjbG90aGluZywgL3N0ZC9jbG90aGluZy93ZWFyLmMKKyAgICAgICAgICAgICAgICAgYXJtb3VyLCAvc3RkL2FybW91ci93ZWFyLmMKKworTEVUWlRFIEFlTkRFUlVORzoKKzE1LjAyLjIwMDkKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9kb2MvcHJvcHMvUF9XRUlHSFQgYi9kb2MvcHJvcHMvUF9XRUlHSFQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMjJhZjVmMAotLS0gL2Rldi9udWxsCisrKyBiL2RvYy9wcm9wcy9QX1dFSUdIVApAQCAtMCwwICsxLDI2IEBACitOQU1FOgorICAgIFBfV0VJR0hUICAgICAgICAgICAgICAgICAgICAgICJ3ZWlnaHQiICAgICAgICAgICAgICAgICAgICAgIAorCitERUZJTklFUlQgSU46CisgICAgL3N5cy90aGluZy9yZXN0cmljdGlvbnMuaAorCitCRVNDSFJFSUJVTkc6CisKKyAgICAgLSBPYmpla3RlCisgICAgICAgRGFzIEdld2ljaHQgZWluZXMgT2JqZXRlcyBpbiBHcmFtbS4KKworICAgICAtIFNwZWlzZW4KKyAgICAgICBHZXdpY2h0IGVpbmVyIFBvcnRpb24gZGVyIFNwZWlzZS4KKyAgICAgICAKK0JFTUVSS1VOR0VOOgorICAgICBJbiB0cmFnYmFyZW4gU3BlaXNlbiAoZXJiZW4gdm9uIC9zdGQvZm9vZCkgc2V0enQgbWFuIG1pdCBTZXRQcm9wCisgICAgIGRhcyBHZXdpY2h0IF9laW5lcl8gUG9ydGlvbi4gUGVyIFF1ZXJ5UHJvcCBlcmhhZWx0IG1hbiBhYmVyIGRhcworICAgICBHZXNhbXRnZXdpY2h0IGRlciBTcGVpc2UgaW5jbHVzaXZlIGRlcyBldmVudHVlbGwgdm9yaGFuZGVuZW4gQmVoYWVsdGVycy4KKyAgICAgRGFzIEdld2ljaHQgZGVzIEJlaGFlbHRlcnMgd2lyZCBkYWJlaSBhdXMgUF9FTVBUWV9QUk9QU1tQX1dFSUdIVF0KKyAgICAgZ2VsZXNlbi4KKyAgICAgCitTSUVIRSBBVUNIOgorICAgICBTcGVpc2VuOiB3aXovZm9vZCwgUF9FTVBUWV9QUk9QUworCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KK0xhc3QgbW9kaWZpZWQ6IFRodSBPY3QgMjggMTI6MTU6MDAgMjAxMCBieSBDYWxkcmEKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9kb2MvcHJvcHMvUF9XRUlHSFRfUEVSQ0VOVCBiL2RvYy9wcm9wcy9QX1dFSUdIVF9QRVJDRU5UCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjdiYjFhZDMKLS0tIC9kZXYvbnVsbAorKysgYi9kb2MvcHJvcHMvUF9XRUlHSFRfUEVSQ0VOVApAQCAtMCwwICsxLDI1IEBACitOQU1FOgorICAgIFBfV0VJR0hUX1BFUkNFTlQgICAgICAgICAgICAgICJ3ZWlnaHRfcGVyY2VudCIgICAgICAgICAgICAgIAorCitERUZJTklFUlQgSU46CisgICAgL3N5cy9wcm9wZXJ0aWVzLmgKKworQkVTQ0hSRUlCVU5HOgorICAgICBEaWVzZSBQcm9wZXJ0eSBnaWJ0IGFuLCB3aWV2aWVsIFByb3plbnQgZGVzIEdld2ljaHRzIGRlcyBJbmhhbHRlcworICAgICAibmFjaCBhdXNzZW4iIHdpZWRlcmdlZ2ViZW4gd2VyZGVuLgorCitCRU1FUktVTkdFTjoKKyAgICAgQWxsZSBXZXJ0ZSBkaWUgPCA1MCUgbGllZ2VuIHNvbGx0ZW4gc2VociBndXQgYmVncnVlbmRldCB1bmQgbWl0IFZvci0KKyAgICAgc2ljaHQgdmVyd2VuZGV0IHdlcmRlbi4gSGllciBrb2VubnRlbiBkYW5uIHp1bSBCZWlzcGllbCBQX01BWF9PQkpFQ1RTCisgICAgIGF1ZiBlaW5lbiBrbGVpbmVuIFdlcnQgYmVncmVuenQgd2VyZGVuLgorCisgICAgIENvbnRhaW5lciBkaWUgaGllciBlaW5lbiBXZXJ0IHVlYmVyIGRlbSBkZXMgUG9zdHBha2V0cyBoYWJlbiwgc29sbHRlbgorICAgICBhdWNoIHNjaHdlciB6dSBlcnJlaWNoZW4gc2Vpbi4gQXVmIGplZGVuIEZhbGwgbWl0IGRlbSBSZWdpb25zbWFnaWVyCisgICAgIGJlc3ByZWNoZW4hCisKK0JFSVNQSUVMRToKKyAgICAgVW0gc2ljaCB6dSBvcmllbnRpZXJlbiBrYW5uIGRhcyBQb3N0cGFrZXQgdm9uIExvY28gYWxzIEJlaXNwaWVsIGhpbi0KKyAgICAgenVnZXpvZ2VuIHdlcmRlbiAoL3Avc2VydmljZS9sb2NvL29iai9wYXJjZWwpLgorCitTSUVIRSBBVUNIOgorICAgICBQX01BWF9PQkpFQ1RTLCBQX01BWF9XRUlHSFQsIFBfTElHSFRfVFJBTlNQQVJFTkNZLCBjb250YWluZXIKZGlmZiAtLWdpdCBhL2RvYy9wcm9wcy9QX1dFSUdIVF9QRVJfVU5JVCBiL2RvYy9wcm9wcy9QX1dFSUdIVF9QRVJfVU5JVApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4yNzk2YjdiCi0tLSAvZGV2L251bGwKKysrIGIvZG9jL3Byb3BzL1BfV0VJR0hUX1BFUl9VTklUCkBAIC0wLDAgKzEsMTMgQEAKK05BTUU6CisgICAgUF9XRUlHSFRfUEVSX1VOSVQgICAgICAgICAgICAgIndlaWdodF9wZXJfdW5pdCIgICAgICAgICAgICAgCisKK0RFRklOSUVSVCBJTjoKKyAgICAvc3lzL3Byb3BlcnRpZXMuaAorCitCRVNDSFJFSUJVTkc6CisgICAgIEdld2ljaHQgaW4gR3JhbW0gcHJvIFVudGVyZWluaGVpdC4KKworQkVNRVJLVU5HRU46CisgICAgIERlcHJlY2F0ZWQuIEJpdHRlIFNldEdyYW1zUGVyVW5pdHMoKSAoVV9HUFUpIGJlbnV0emVuLgorCisyNS5BdWcgMjAxNSBHbG9pbnNvbgpkaWZmIC0tZ2l0IGEvZG9jL3Byb3BzL1BfV0lFTERFRCBiL2RvYy9wcm9wcy9QX1dJRUxERUQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYmNlODU4MAotLS0gL2Rldi9udWxsCisrKyBiL2RvYy9wcm9wcy9QX1dJRUxERUQKQEAgLTAsMCArMSwyMSBAQAorUF9XSUVMREVECisKK05BTUU6CisgICAgIFBfV0lFTERFRCAid2llbGRlZCIKKworREVGSU5JRVJUIElOOgorICAgICA8d2VhcG9uLmg+CisKK0JFU0NIUkVJQlVORzoKKyAgICAgSXN0IGRpZXNlIFByb3BlcnR5IGdlc2V0enQsIGRhbm4gaXN0IGRpZSBXYWZmZSBnZXJhZGUgZ2V6dWVja3QuIERlcgorICAgICBUcmFlZ2VyIGlzdCBpbiBkZXIgUHJvcGVydHkgdmVybWVya3QuCisKK0JFTUVSS1VOR0VOOgorICAgICBEaWVzZSBQcm9wZXJ0eSBsYWVzc3Qgc2ljaCBudXIgYWJmcmFnZW4hCisKK1NJRUhFIEFVQ0g6CisgICAgIC9zdGQvd2VhcG9uLmMKKyAgICAgUF9XRUFQT04KKworLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorTGFzdCBtb2RpZmllZDogMjAxNS1KdWwtMTEsIEFyYXRob3JuIApkaWZmIC0tZ2l0IGEvZG9jL3Byb3BzL1BfV0lFTERfRlVOQyBiL2RvYy9wcm9wcy9QX1dJRUxEX0ZVTkMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZmFjNDgxYgotLS0gL2Rldi9udWxsCisrKyBiL2RvYy9wcm9wcy9QX1dJRUxEX0ZVTkMKQEAgLTAsMCArMSwyMiBAQAorUF9XSUVMRF9GVU5DCisKK05BTUU6CisgICAgIFBfV0lFTERfRlVOQyAid2llbGRfZnVuYyIKKworREVGSU5JRVJUIElOOgorICAgICA8d2VhcG9uLmg+CisKK0JFU0NIUkVJQlVORzoKKyAgICAgRmFsbHMgZWluIE9iamVrdCBlaW5lIFdpZWxkRnVuYygpIGZ1ZXIgZGllIFdhZmZlIGRlZmluaWVydCwgc28gbXVzcworICAgICBkaWVzZXMgT2JqZWt0IGluIGRpZXNlciBQcm9wZXJ0eSBlaW5nZXRyYWdlbiB3ZXJkZW4uCisKKyAgICAgRGllIEF1c3dlcnR1bmcgZGllc2VyIFByb3BlcnR5IGVyZm9sZ3QgaW4gd2llbGRfbWUoKS4KKworQkVJU1BJRUxFOgorICAgICBTaWVoZSBkYXMgQmVpc3BpZWwgenUgV2llbGRGdW5jKCkKKworU0lFSEUgQVVDSDoKKyAgICAgL3N0ZC93ZWFwb24uYywgV2llbGRGdW5jKCkKKworLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorTGFzdCBtb2RpZmllZDogU3VuIE1heSAxOSAxNTo0MDowMiAxOTk2IGJ5IFdhcmdvbgpkaWZmIC0tZ2l0IGEvZG9jL3Byb3BzL1BfV0lFTERfTVNHIGIvZG9jL3Byb3BzL1BfV0lFTERfTVNHCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjM1N2EzMDQKLS0tIC9kZXYvbnVsbAorKysgYi9kb2MvcHJvcHMvUF9XSUVMRF9NU0cKQEAgLTAsMCArMSw1NyBAQAorUF9XSUVMRF9NU0cKK05BTUU6CisgICAgIFBfV0lFTERfTVNHICAgICAgICAgICAgICAgICAgICAgICAid2llbGRfbXNnIiAKKworREVGSU5JRVJUIElOOgorICAgICAvc3lzL3dlYXBvbi5oCisKK0JFU0NIUkVJQlVORzoKKworICAgICBad2VpdGVpbGlnZXMgQXJyYXkgbWl0IE1lbGR1bmdlbiwgZGllIGJlaW0gWnVlY2tlbiBlaW5lciBXYWZmZSBhbiBkZW4KKyAgICAgU3BpZWxlciB1bmQgZGllIFVtZ2VidW5nIGF1c2dlZ2ViZW4gd2VyZGVuLgorICAgICBEZXIgZXJzdGUgRWludHJhZyBnZWh0IGFuIGRlbiBTcGllbGVyLCBkZXIgendlaXRlIEVpbnRyYWcgYW4gZGllCisgICAgIFVtZ2VidW5nLiAgWmVpbGVudW1icnVlY2hlIHdlcmRlbiBhdXRvbWF0aXNjaCBnZW1hY2h0LCBleGlzdGllcmVuZGUKKyAgICAgamVkb2NoIGJlcnVlY2tzaWNodGlndC4KKworICAgICBQbGF0emhhbHRlciBmdWVyIFNwaWVsZXIgaXN0IEBXRXh4eDEsIGZ1ZXIgZGllIFdhZmZlIEBXRXh4eDIgKHNpZWhlCisgICAgIG1hbiByZXBsYWNlX3BlcnNvbmFsKCkpLgorCisgICAgIFtXZWdlbiBBYndhZXJ0c2tvbXBhdGliaWxpdGFldCBpc3QgYXVjaCBub2NoIGRlciBQbGF0emhhbHRlciAlcworICAgICAgbW9lZ2xpY2gsIHdvYmVpIGluIGRlciBlaWdlbmVuIE1lbGR1bmcgJXMgZnVlciBkZW4gV2FmZmVubmFtZW4gc3RlaHQsCisgICAgICBpbiBkZXIgYW4gZGVuIFJhdW0gZGFzIGVyc3RlICVzIGZ1ZXIgZGVuIFNwaWVsZXJuYW1lbiwgZGFzIHp3ZWl0ZSBmdWVyCisgICAgICBkZW4gV2FmZmVubmFtZW4uXQorCitCRUlTUElFTEU6CisgICAgU2V0UHJvcChQX05BTUUsICJTdHJlaXRrb2xiZW4iKTsKKyAgICBTZXRQcm9wKFBfV0lFTERfTVNHLAorICAgICAoeyJEdSB6dWVja3N0IEBXRU4yIHVuZCBzdG9lc3N0IGVpbmVuIG1hcmtlcnNjaHVldHRlcm5kZW4gU2NocmVpIGF1cy4iLCAKKyAgICAgICAiQFdFUjEgenVlY2t0IEBXRU5VMiB1bmQgc3RvZXNzdCBlaW5lbiBtYXJrZXJzY2h1ZXR0ZXJuZGVuIFNjaHJlaSAiCisgICAgICAgImF1cy4iIH0pKTsKKworICAgIC0+IGJlaW0gWnVlY2tlbiBkdXJjaCBVcms6CisgICAgICAgVXJrIGJla29tbXQ6IER1IHp1ZWNrc3QgZGVuIFN0cmVpdGtvbGJlbiB1bmQgc3RvZXNzdCBlaW5lbgorCQkgICAgbWFya2Vyc2NodWV0dGVybmRlbiBTY2hyZWkgYXVzLgorICAgICAgIERlciBSYXVtOiAgICBVcmsgenVlY2t0IGVpbmVuIFN0cmVpdGtvbGJlbiB1bmQgc3RvZXNzdCBlaW5lbgorCQkgICAgbWFya2Vyc2NodWV0dGVybmRlbiBTY2hyZWkgYXVzLgorCisgICAgU2V0UHJvcChQX1dJRUxEX01TRywKKyAgICAgKHsiRHUgenVlY2tzdCBkZW4ga2xvYmlnZW4gU3RyZWl0a29sYmVuIHVuZCBmdWNodGVsc3QgZGFtaXQgIgorICAgICAgICJ3aWxkIHZvciBEZWluZXIgTmFzZSBoZXJ1bS4iLAorICAgICAgICJAV0VSMSB6dWVja3QgZWluZW4ga2xvYmlnZW4gU3RyZWl0a29sYmVuIHVuZCBmdWNodGVsdCAiCisgICAgICAgImRhbWl0IHdpbGQgdm9yIGRlciBlaWdlbmVuIE5hc2UgaGVydW0uIEhvZmZlbnRsaWNoIHZlcmxldHp0ICIKKyAgICAgICAiQFdFUlFQMSBzaWNoIGRhYmVpIG5pY2h0IC4uLiJ9KSk7CisKKyAgICAtPiBiZWltIFp1ZWNrZW4gZHVyY2ggVXJrOgorICAgICAgIFVyayBiZWtvbW10OiBEdSB6dWVja3N0IGRlbiBrbG9iaWdlbiBTdHJlaXRrb2xiZW4gdW5kIGZ1Y2h0ZWxzdAorICAgICAgICAgICAgICAgICAgICBkYW1pdCB3aWxkIHZvciBEZWluZXIgTmFzZSBoZXJ1bS4KKyAgICAgICBEZXIgUmF1bTogICAgVXJrIHp1ZWNrdCBlaW5lbiBrbG9iaWdlbiBTdHJlaXRrb2xiZW4gdW5kIGZ1Y2h0ZWx0CisJCSAgICBkYW1pdCB3aWxkIHZvciBkZXIgZWlnZW5lbiBOYXNlIGhlcnVtLiBIb2ZmZW50bGljaAorICAgICAgICAgICAgICAgICAgICB2ZXJsZXR6dCBlciBzaWNoIGRhYmVpIG5pY2h0IC4uLgorCitTSUVIRSBBVUNIOgorICAgICBBZWhubGljaGVzOiBQX1VOV0lFTERfTVNHLCBQX1dFQVJfTVNHLCBQX1VOV0VBUl9NU0cKKyAgICAgICAgICAgICAgICAgUF9EUk9QX01TRywgUF9QVVRfTVNHLCBQX0dJVkVfTVNHLCBQX1BJQ0tfTVNHCisgICAgIEZ1bmt0aW9uZW46IFVud2llbGRGdW5jLCBXaWVsZEZ1bmMKKyAgICAgU29uc3RpZ2VzOiAgcmVwbGFjZV9wZXJzb25hbChFKSwgL3N0ZC93ZWFwb24vY29tYmF0LmMKKworMjkuIE1hZXJ6IDIwMDQgR2xvaW5zb24KZGlmZiAtLWdpdCBhL2RvYy9wcm9wcy9QX1dJTVBZIGIvZG9jL3Byb3BzL1BfV0lNUFkKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOTc2MzNmYQotLS0gL2Rldi9udWxsCisrKyBiL2RvYy9wcm9wcy9QX1dJTVBZCkBAIC0wLDAgKzEsMTUgQEAKK05BTUU6CisgICAgUF9XSU1QWSAgICAgICAgICAgICAgICAgICAgICAgIndpbXB5IiAgICAgICAgICAgICAgICAgICAgICAgCisKK0RFRklOSUVSVCBJTjoKKyAgICAvc3lzL3Byb3BlcnRpZXMuaAorCitCRVNDSFJFSUJVTkc6CisgICAgIE51bWVyaXNjaGVyIFdlcnQuIERhcyBMZWJld2VzZW4gZmxpZWh0LCB3ZW5uIGRpZSBMZWJlbnNwdW5rdGUKKyAgICAgdW50ZXIgZGllc2VuIFdlcnQgc2lua2VuLgorCitTSUVIRSBBVUNIOgorICAgICBQX1dJTVBZX0RJUkVDVElPTgorCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCitMZXR6dGUgQWVuZGVydW5nOiBNb24gRmViIDEyIDE3OjUwOjQ3IDIwMDEgdm9uIFRpbGx5CmRpZmYgLS1naXQgYS9kb2MvcHJvcHMvUF9XSU1QWV9ESVJFQ1RJT04gYi9kb2MvcHJvcHMvUF9XSU1QWV9ESVJFQ1RJT04KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNTdkMmYwMQotLS0gL2Rldi9udWxsCisrKyBiL2RvYy9wcm9wcy9QX1dJTVBZX0RJUkVDVElPTgpAQCAtMCwwICsxLDIyIEBACitOQU1FOgorICAgIFBfV0lNUFlfRElSRUNUSU9OICAgICAgICAgICAgICJ3aW1weV9kaXIiICAgICAgICAgICAgICAgICAgIAorCitERUZJTklFUlQgSU46CisgICAgL3N5cy9wcm9wZXJ0aWVzLmgKKworQkVTQ0hSRUlCVU5HOgorICAgICBGbHVjaHRyaWNodHVuZyBlaW5lcyBTcGllbGVycyBvZGVyIE5QQ3MKKworQkVNRVJLVU5HRU46CisgICAgIERpZSBGbHVjaHRyaWNodHVuZyBrYW5uIG5pY2h0IG51ciBlaW4gQXVzZ2FuZyAoc3VlZGVuLCBvc3RlbiwgLi4uKQorICAgICBzZWluLCBzb25kZXJuIGF1Y2ggZWluIEtvbW1hbmRvLCB3ZWxjaGVzIGRlciBTcGllbGVyIGJlaW0gQW5zY2hsYWdlbgorICAgICBhdXNmdWVocnQgKHouYi4gPGtsZXR0ZXIgc2VpbCBob2NoPiBvZGVyIDxydWZlIEVsZW5kZXIgTWlzdCE+KS4KKworICAgICBBdXNnZWZ1ZWhydCB3aXJkIGRpZSBGbHVjaHRyaWNodHVuZyBwZXIgY29tbWFuZCgpLCB3ZW5uIGRpZSBMUCBkZXMgCisgICAgIExlYmV3ZXNlbnMgdW50ZXIgZGllIG1pdCA8dm9yc2ljaHQ+IGFuZ2VnZWJlIExQLUdyZW56ZSBzaW5rdC4KKworU0lFSEUgQVVDSDoKKyAgICAgUF9XSU1QWQorCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCitMZXR6dGUgQWVuZGVydW5nOiBNb24gRmViIDEyIDE3OjQ2OjQ3IDIwMDEgdm9uIFRpbGx5CmRpZmYgLS1naXQgYS9kb2MvcHJvcHMvUF9XSVpfREVCVUcgYi9kb2MvcHJvcHMvUF9XSVpfREVCVUcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uY2Y3YWMyMQotLS0gL2Rldi9udWxsCisrKyBiL2RvYy9wcm9wcy9QX1dJWl9ERUJVRwpAQCAtMCwwICsxLDIwIEBACitOQU1FOgorICAgIFBfV0laX0RFQlVHICAgICAgICAgICAgICAgICAgICAic3RkX3Bfd2l6ZGVidWciCisKK0RFRklOSUVSVCBJTjoKKyAgICAvc3lzL3BsYXllci9jb21tLmgKKworQkVTQ0hSRUlCVU5HOgorICAgICBHZXNldHp0LCB3ZW5uIGRlciBNYWdpZXIgKG9kZXIgZWluIFRlc3RzcGllbGVyKSBEZWJ1Z21lbGR1bmdlbiB3YWhybmVobWVuCisgICAgIG1vZWNodGUuCisgICAgIERlYnVnbWVsZHVuZ2VuIHNpbmQgTmFjaHJpY2h0ZW4sIGRpZSBtaXQgZGVtIFR5cCBNVF9ERUJVRyBhbiBSZWNlaXZlTXNnKCkKKyAgICAgdWViZXJnZWJlbiB3ZXJkZW4uCisgICAgIAorICAgICBEaWUgV2VydGUgdm9uIFBfV0laX0RFQlVHIHNpbmQgenVyIFplaXQgMCBvZGVyIDEsIGRhcyBrYW5uIHNpY2ggYWJlcgorICAgICBqZWRlcnplaXQgYWVuZGVybi4KKyAgICAgTWFnaWVyIGFlbmRlcm4gZGllc2UgUHJvcCBiaXR0ZSB1ZWJlciAibXNjaGF1Ii4KKworU0lFSEUgQVVDSDoKKyAgICAgbXNjaGF1CisgICAgIFBfV0FOVFNfVE9fTEVBUk4KKwpkaWZmIC0tZ2l0IGEvZG9jL3Byb3BzL1BfV09STiBiL2RvYy9wcm9wcy9QX1dPUk4KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uN2FmZDAzZQotLS0gL2Rldi9udWxsCisrKyBiL2RvYy9wcm9wcy9QX1dPUk4KQEAgLTAsMCArMSw0MCBAQAorUF9XT1JOCisKK05BTUU6CisgICAgIFBfV09STiAid29ybiIKKworREVGSU5JRVJUIElOOgorICAgICA8YXJtb3VyLmg+CisKK0JFU0NIUkVJQlVORzoKKyAgICAgTWl0dGVscyBkaWVzZXIgUHJvcGVydHkgbGFlc3N0IHNpY2ggZXJtaXR0ZWxuLCBvYiBlaW5lIFJ1ZXN0dW5nIGJ6dy4gCisgICAgIEtsZWlkdW5nIGRlcnplaXQgZ2V0cmFnZW4gd2lyZCB1bmQgd2VubiBqYSwgdm9uIHdlbS4KKworICAgICBFbnR3ZWRlciBlbnRoYWVsdCBkaWUgUHJvcGVydHkgZGVuIFdlcnQgMCwgb2RlciBzaWUgZW50aGFlbHQgZGVuCisgICAgIFRyYWVnZXIgZGVyIFJ1ZXN0dW5nIC8gS2xlaWR1bmcgKGFscyBPYmpla3QpLgorCitCRU1FUktVTkdFTjoKKyAgICAgRGllc2UgUHJvcGVydHkgbGFlc3N0IHNpY2ggbnVyIGFiZnJhZ2VuIQorCitCRUlTUElFTEU6CisgICAgIEVpbmUgRGVmZW5kRnVuYygpIGtvZW5udGUgZGVtIFRyYWVnZXIgZGVyIFJ1ZXN0dW5nIHdpZSBmb2xndCBldHdhcworICAgICBtaXR0ZWlsZW46CisKKyAgICAgLy8gRGllIFJ1ZXN0dW5nIGdpYnQgU2NodXR6IGdlZ2VuIEZldWVyCisgICAgIGludCBEZWZlbmRGdW5jKHN0cmluZyAqZHR5cCwgbWl4ZWQgc3BlbGwsIG9iamVjdCBlbmVteSkKKyAgICAgeworICAgICAgIGlmIChtZW1iZXIoZHR5cCwgRFRfRklSRSkgIT0gLTEpIHsKKyAgICAgICAgIC8vIFBfV09STiBpc3QgYXVmIGplZGVuIEZhbGwgZ2VzZXR6dCwgZGEgc29uc3QgZGllCisgICAgICAgICAvLyBEZWZlbmRGdW5jIHVlYmVyaGF1cHQgbmljaHQgYXVmZ2VydWZlbiB3dWVyZGUhCisgICAgICAgICB0ZWxsX29iamVjdChRdWVyeVByb3AoUF9XT1JOKSwKKyAgICAgICAgICAgIkRpZSBGbGFtbWVuIHp1ZW5nZWxuIG51ciBsZWljaHQgdWViZXIgZGllIFJ1ZXN0dW5nLlxuIik7CisgICAgICAgICByZXR1cm4gMTA7CisgICAgICAgfQorICAgICAgIHJldHVybiAwOworICAgICB9CisKK1NJRUhFIEFVQ0g6CisgICAgIGNsb3RoaW5nLCAvc3RkL2Nsb3RoaW5nLmMsIGFybW91ciwgL3N0ZC9hcm1vdXIuYworCitMRVRaVEUgQWVOREVSVU5HOgorMTUuMDIuMjAwOSwgWmVzc3RyYQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2RvYy9wcm9wcy9QX1hQIGIvZG9jL3Byb3BzL1BfWFAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMDk3ZWM2NQotLS0gL2Rldi9udWxsCisrKyBiL2RvYy9wcm9wcy9QX1hQCkBAIC0wLDAgKzEsNTkgQEAKK05BTUU6CisgICAgIFBfWFAgICAgICAgICAgICAgICAgICAgICJ4cCIKKworREVGSU5JRVJUIElOOgorICAgICAvc3lzL2xpdmluZy9saWZlLmgKKworQkVTQ0hSRUlCVU5HOgorICAgICBEaWVzZSBQcm9wZXJ0eSBlbnRoYWVsdCBkaWUgQW56YWhsIGRlciBFcmZhaHJ1bmdzcHVua3RlLCBkaWUgZWluCisgICAgIExlYmV3ZXNlbiBlcnJlaWNodCBoYXQuIERpZXMgZ2VzY2hpZWh0IGluc2Jlc29uZGVyZSBkdXJjaAorICAgICBLYW1wZmhhbmRsdW5nZW4sIHdvYmVpIGVzIHNvd29obCBmdWVyIEVpbnplbHNjaGxhZWdlIGFscyBhdWNoIGZ1ZXIKKyAgICAgZGFzIFRvZXRlbiBlaW5lcyBPcGZlcnMgUHVua3RlIGdpYnQuCisKKyAgICAgQmVpIGVpbnplbG5lbiBTY2hsYWVnZW4gaXN0IGRpZSBWZXJnYWJlIHZvbiBFcmZhaHJ1bmdzcHVua3RlbiBkYXZvbgorICAgICBhYmhhZW5naWcsIHdpZSBzdGFyayBtYW4gZGFzIE9wZmVyIGdldHJvZmZlbiBoYXQsIHVuZCB3ZWxjaGUKKyAgICAgR2VzYW10d2FmZmVua2xhc3NlIGVzIGhhdCAoZGFtYWdlKlBfVE9UQUxfV0MvMTApLgorCisgICAgIEJlaW0gVG9kZXNzY2hsYWcgZXJoYWVsdCBtYW4genVzYWV0emxpY2ggZGllIEVyZmFocnVuZ3NwdW5rdGUgZGVzCisgICAgIE9wZmVycyBnZXRlaWx0IGR1cmNoIDEwMCAoUF9YUC8xMDApLiBEaWVzZXIgV2VydCB3aXJkIGFsbGVyZGluZ3MKKyAgICAgZ2VnZWJlbmVuZmFsbHMgYXVmIGVpbiBUZWFtIGF1ZmdldGVpbHQsIHNvZmVybiBkZXIgQW5ncmVpZmVyIHNpY2ggaW4KKyAgICAgZWluZW0gc29sY2hpZ2VuIGJlZmluZGV0LgorCitCRUlTUElFTDoKKyAgICAgTlBDJ3MgZ2lidCBtYW4gaW0gYWxsZ2VtZWluZW4gZWluZW4gbGV2ZWxhYmhhZW5naWdlbiBTb2NrZWx3ZXJ0IGFuCisgICAgIEVyZmFocnVuZ3NwdW5rdGVuIG1pdCwgZGEgc2llIG5pY2h0IGFsbHp1b2Z0IHNlbGJzdCBHZWduZXIgdG9ldGVuCisgICAgIHVuZCBzb21pdCBrYXVtIGRpZSBNb2VnbGljaGtlaXQgaGFiZW4sIGRpZXNlIFB1bmt0ZSBzZWxic3QKKyAgICAgYW56dXNhbW1lbG4uIFRyb3R6ZGVtIHNvbGxlbiBzaWUgamEgZGVtIFNwaWVsZXIgZWluZSBnZXdpc3NlIEFuemFobAorICAgICBhbiBFcmZhaHJ1bmdzcHVua3RlbiBsaWVmZXJuLCB3ZW5uIHNpZSBnZXRvZXRldCB3ZXJkZW46CisKKyAgICAgICBpbmNsdWRlICIvc3lzL2xpdmluZy9saWZlLmgiCisgICAgICAgaW5oZXJpdCAic3RkL25wYyI7CisgICAgICAgdm9pZCBjcmVhdGUoKSB7CisgICAgICAgICAuLi4KKyAgICAgICAgIFNldFByb3AoUF9YUCwyNTAwMDAwMCk7CisgICAgICAgfQorCisgICAgIEJlaW0gVG9ldGVuIGdpYnQgZXMgbnVuIDI1LjAwMC4wMDAvMTAwID0gMjUwLjAwMCBFcmZhaHJ1bmdzcHVua3RlLgorICAgICBEYW1pdCB3aXJkIGRlciBOUEMgc29nYXIgYXV0b21hdGlzY2ggZnVlciBkaWUgVmVyZ2FiZSB2b24KKyAgICAgRXJzdGtpbGxzdHVmZW5wdW5rdGVuIHZvcmdlc2VoZW4uCisKKyAgICAgRGllIEZ1bmt0aW9uIGNyZWF0ZV9kZWZhdWx0X25wYygpIHNldHp0IFBfWFAgdW5kIGFuZGVyZSBFaWdlbnNjaGFmdGVuCisgICAgIGF1ZiBnZWVpZ25ldGUgV2VydGUuCisKK0JFTUVSS1VOR0VOOgorICAgICBEaWUgVmVyZ2FiZSB2b24gRXJzdGtpbGxzdHVmZW5wdW5rdGVuIGthbm4gbWFuIHVlYmVyIGRpZSBQcm9wZXJ0eQorICAgICBQX05PX1NDT1JFIHVudGVyYmluZGVuLCBkaWUgVmVyZ2FiZSB2b24gRXJmYWhydW5nc3B1bmt0ZW4gdWViZXIKKyAgICAgUF9OT19YUC4gQXV0b21hdGlzY2ggd2VyZGVuIExlYmV3ZXNlbiBmdWVyIEVyc3RraWxsc3R1ZmVucHVua3RlCisgICAgIHZvcmdlc2VoZW4sIHNvZmVybiBzaWUgZWluZSBkZXIgZm9sZ2VuZGVuIEdyZW56ZW4gdWViZXJzY2hyaXR0ZW4KKyAgICAgaGFiZW46CisgICAgICAgU0NPUkVfTE9XX01BUks6ICAyMDAwMDAgKDEgU3R1ZmVucHVua3QpCisgICAgICAgU0NPUkVfSElHSF9NQVJLOiA2MDAwMDAgKDIgU3R1ZmVucHVua3RlKQorICAgICBEZWZpbmllcnQgc2luZCBkaWUgS29uc3RhbnRlbiBpbiAiL3NlY3VyZS9zY29yZW1hc3Rlci5oIi4KKworU0lFSEUgQVVDSDoKKyAgICAgRnVua3Rpb25lbjogIEFkZEV4cCgpLCBkb19kYW1hZ2UoKQorICAgICBWZXJ3YW5kdDogICAgUF9OT19YUCwgUF9MQVNUX1hQCisgICAgIFNvbnN0aWdlczogICBQX05PX1NDT1JFLCBjcmVhdGVfZGVmYXVsdF9ucGMoKQorICAgICAgICAgICAgICAgICAgUF9UT1RBTF9XQworCisxNC5GZWIgMjAwNyBHbG9pbnNvbgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2RvYy9wcm9wcy9QX1hfQVRUUl9NT0QgYi9kb2MvcHJvcHMvUF9YX0FUVFJfTU9ECm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmM2YThiZGEKLS0tIC9kZXYvbnVsbAorKysgYi9kb2MvcHJvcHMvUF9YX0FUVFJfTU9ECkBAIC0wLDAgKzEsNDYgQEAKK05BTUU6CisgICAgUF9YX0FUVFJfTU9EICAgICAgICAgICAgICAgICAgImV4dGVybl9hdHRyaWJ1dGVzX21vZGlmaWVyIgorCitERUZJTklFUlQgSU46CisgICAgL3N5cy9saXZpbmcvYXR0cmlidXRlcy5oCisKK0JFU0NIUkVJQlVORzoKKyAgICBNYXBwaW5nLCBkYXMgZGllIEF0dHJpYnV0ZSBkZXMgU3BpZWxlcnMgdmVyYWVuZGVydCwgZGVyIGRhcyBPYmpla3QgYmVpCisgICAgc2ljaCBoYXQuCisKKyAgICBadSBiZWFjaHRlbjoKKyAgICBEaWVzZSBQcm9wZXJ0eSBiaXR0ZSBfYXVzc2NobGllc3NsaWNoXyBtaXQgU2V0UHJvcCBhZW5kZXJuLCB3ZWlsIGRhbWl0CisgICAgZ2xlaWNoemVpdGlnIFVwZGF0ZUF0dHJpYnV0ZXMoKSBpbSBMZWJld2VzZW4gYXVmZ2VydWZlbiB1bmQgZ2dmLiBkYXMKKyAgICBPYmpla3QgYWxzIFN0YXRtb2RpZml6aWVyZXIgcmVnaXN0cmllcnQgd2lyZC4KKworICAgIERpZXNlIFByb3BlcnR5IGlzdCBmdWVyIEtyYW5raGVpdGVuLCBGbHVlY2hlIGV0Yy4gZ2VkYWNodC4gQmVpCisgICAgV2FmZmVuL1J1ZXN0dW5nZW4sIGRpZSBkaWUgQXR0cmlidXRlIGJlZWluZmx1c3NlbiBzb2xsZW4sIHZlcndlbmRldAorICAgIG1hbiBiZXNzZXIgUF9NX0FUVFJfTU9ELgorCisgICAgUF9YX0FUVFJfTU9EIHVuZCBQX01fQVRUUl9NT0QgZHVlcmZlbiBlaW5lbiBnZW1laW5zYW1lbiBrdW11bGllcnRlbgorICAgIHBvc2l0aXZlbiBHcmVuendlcnQgbmljaHQgdWViZXJzY2hyZWl0ZW4uIERpZXNlciBHcmVuendlcnQsCisgICAgQ1VNVUxBVElWRV9BVFRSX0xJTUlULCBpc3QgaW4gL3N5cy9saXZpbmcvYXR0cmlidXRlcy5oIGRlZmluaWVydC4KKworQkVNRVJLVU5HRU46CisgICAgRGllIE1ldGhvZGUgL3N0ZC90aGluZy9yZXN0cmljdGlvbnM6Ol9zZXRfZXh0ZXJuX2F0dHJpYnV0ZXNfbW9kaWZpZXIoKQorICAgIGJlbmFjaHJpY2h0aWd0IHRyYWdlbmRlIExpdmluZ3MgdWViZXIgQWVuZGVydW5nZW4uCisgICAgQml0dGUgYmVpbSAiTG9lc2NoZW4iIGRlciBQcm9wIG5pY2h0IGRlbiBXZXJ0IGRlcyBqZXcuIEF0dHJpYnV0ZXMgaW0KKyAgICB1ZWJlcmdlYmVuZW4gTWFwcGluZyBhbHMgMCB1ZWJlcmdlYmVuLCBzb25kZXJuIGRhcyBLZXkvV2VydGUtUGFhciBnYW56CisgICAgZW50ZmVybmVuIHVuZCBiencuIGVpbiBsZWVyZXMgTWFwcGluZyBvZGVyIDAgdWViZXJnZWJlbi4KKworQkVJU1BJRUw6CisgICAgLy8gRGVtIExlYmV3ZXNlbiwgZGFzIGRhcyBPYmpla3QgYmVpIHNpY2ggaGF0LCB3aXJkIDIgdm9uIEFfSU5UIGFiZ2V6b2dlbgorICAgIFNldFByb3AoUF9YX0FUVFJfTU9ELChbQV9JTlQ6LTJdKSk7CisKKyAgICAvLyBTdGF0cyB3aWVkZXJoZXJzdGVsbGVuOgorICAgIFNldFByb3AoUF9YX0FUVFJfTU9ELChbXSkpOworCitTSUVIRSBBVUNIOgorICAgIFF1ZXJ5QXR0cmlidXRlKCksIFF1ZXJ5UmVhbEF0dHJpYnV0ZSgpLCBRdWVyeUF0dHJpYnV0ZU9mZnNldCgpLAorICAgIFNldEF0dHJpYnV0ZSgpLCBTZXRSZWFsQXR0cmlidXRlKCksIFVwZGF0ZUF0dHJpYnV0ZXMoKSwKKyAgICBTZXRUaW1lZEF0dHJNb2RpZmllcigpLCBRdWVyeVRpbWVkQXR0ck1vZGlmaWVyKCksCisgICAgRGVsZXRlVGltZWRBdHRyTW9kaWZpZXIoKSwKKyAgICBQX1hfSEVBTFRIX01PRCwgUF9NX0hFQUxUSF9NT0QsIFBfQVRUUklCVVRFUywgUF9BVFRSSUJVVEVTX09GRlNFVFMsCisgICAgUF9USU1FRF9BVFRSX01PRCwgUF9NX0FUVFJfTU9ELCBQX01fQVRUUl9NT0QsIC9zdGQvbGl2aW5nL2F0dHJpYnV0ZXMuYworCiswMi4wMi4yMDE2LCBHbG9pbnNvbgpkaWZmIC0tZ2l0IGEvZG9jL3Byb3BzL1BfWF9IRUFMVEhfTU9EIGIvZG9jL3Byb3BzL1BfWF9IRUFMVEhfTU9ECm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmQ3OGQyYmYKLS0tIC9kZXYvbnVsbAorKysgYi9kb2MvcHJvcHMvUF9YX0hFQUxUSF9NT0QKQEAgLTAsMCArMSwzNiBAQAorTkFNRToKKyAgICBQX1hfSEVBTFRIX01PRCAgICAgICAgICAgICAgICAgICJleHRlcm5faGVhbHRoX21vZGlmaWVyIgorCitERUZJTklFUlQgSU46CisgICAgL3N5cy9saXZpbmcvYXR0cmlidXRlcy5oCisKK0JFU0NIUkVJQlVORzoKKyAgICBNYXBwaW5nLCBtaXQgZGVtIGRpZSBtYXhpbWFsZW4gTGViZW5zcHVua3RlIHVuZCBNYWdpZXB1bmt0ZSBlaW5lcworICAgIFNwaWVsZXJzIHZlcmFlbmRlcnQgd2VyZGVuLCBkZXIgZGllc2VzIE9iamVrdCBiZWkgc2ljaCB0cmFlZ3QuCisKKyAgICBadSBiZWFjaHRlbjogRGllc2UgUHJvcGVydHkgYml0dGUgX2F1c3NjaGxpZXNzbGljaF8gbWl0IFNldFByb3AKKyAgICBhZW5kZXJuLCB3ZWlsIGRhbWl0IGdsZWljaHplaXRpZyBVcGRhdGVBdHRyaWJ1dGVzKCkgaW0KKyAgICBMZWJld2VzZW4gYXVmZ2VydWZlbiB1bmQgZ2dmLiBkYXMgT2JqZWt0IGFscyBTdGF0bW9kaWZpemllcmVyIAorICAgIHJlZ2lzdHJpZXJ0IHdpcmQuCisKKyAgICBCZWkgUnVlc3R1bmdlbi9XYWZmZW4sIGRpZSBkaWVzZSBXaXJrdW5nIGVudGZhbHRlbiBzb2xsZW4sIHZlcndlbmRldAorICAgIG1hbiBiZXNzZXIgUF9NX0hFQUxUSF9NT0QuCisKK0JFTUVSS1VOR0VOOgorICAgIEJpdHRlIGJlaSAiTG9lc2NoZW4iIGRlciBQcm9wIG5pY2h0IGRlbiBXZXJ0IGRlcyBqZXcuIEF0dHJpYnV0ZXMgaW0gCisgICAgdWViZXJnZWJlbmVuIE1hcHBpbmcgYWxzIDAgdWViZXJnZWJlbiwgc29uZGVybiBkYXMgS2V5L1dlcnRlLVBhYXIgZ2FueiAKKyAgICBlbnRmZXJuZW4gdW5kIGdnZi4gZWluIGxlZXJlcyBNYXBwaW5nIG9kZXIgMCB1ZWJlcmdlYmVuLgorCitCRUlTUElFTDoKKyAgICAvLyBEZW0gU3BpZWxlciwgZGVyIGRhcyBPYmpla3QgYmVpIHNpY2ggdHJhZWd0LCB3aXJkIFBfTUFYX0hQIHVtIDUKKyAgICAvLyBlcmhvZWh0IHVuZCBQX01BWF9TUCB1bSA1IGVybmllZHJpZ3QuCisgICAgU2V0UHJvcChQX1hfSEVBTFRIX01PRCwoW1BfSFA6NSxQX1NQOi01XSkpOworICAgIC8vIFN0YXRzIHdpZWRlcmhlcnN0ZWxsZW46CisgICAgU2V0UHJvcChQX1hfSEVBTFRIX01PRCwoW10pOworCitTSUVIRSBBVUNIOgorICAgIFBfTV9IRUFMVEhfTU9ELCBQX1hfQVRUUl9NT0QsIFBfTV9BVFRSX01PRCwgYmFsYW5jZQorCitMRVRaVEUgQWVOREVSVU5HOgorICAgIFNhdCwgMDYuMDIuMTk5OSwgMTQ6MDA6MDAgdm9uIFBhcmFjZWxzdXMKKwpkaWZmIC0tZ2l0IGEvZG9jL3Byb3BzL1BfWkFQX01TRyBiL2RvYy9wcm9wcy9QX1pBUF9NU0cKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZmJhYmZmNAotLS0gL2Rldi9udWxsCisrKyBiL2RvYy9wcm9wcy9QX1pBUF9NU0cKQEAgLTAsMCArMSwyOCBAQAorUF9aQVBfTVNHCisKK05BTUU6CisgICAgICBQX1pBUF9NU0cJCQkiemFwX21zZyIKKworREVGSU5JRVJUIElOOgorICAgICAgL3N5cy9wcm9wZXJ0aWVzLmgKKworQkVTQ0hSRUlCVU5HOgorICAgICAgRGllIFByb3BlcnR5IGVudGhhZWx0IGVpbiBkcmVpZWxlbWVudGlnZXMgQXJyYXkgbWl0IGRlbiBmb2xnZW5kZW4NCisgICAgICBFaW50cmFlZ2VuOgorCSAgMS4pIE1lbGR1bmcsIGRpZSBkZXIgTWFnaWVyIGJlaW0gWmFwcGVuIGJla29tbXQuCisJICAyLikgTWVsZHVuZywgZGllIGRpZSBTcGllbGVyIGltIFJhdW0gYmVpbSBaYXBwZW4gYmVrb21tZW4uCisJICAzLikgTWVsZHVuZywgZGllIGRhcyBPcGZlciBiZWltIFphcHBlbiBiZWtvbW10LgorCisgICAgICBNaXQgQEB3ZXJAQCwgQEB3ZXNzZW5AQCwgLi4uIGthbm4gZGVyIE5hbWUgZGVzIE9wZmVycyB1bmQgbWl0IEBAaWNoQEANCisgICAgICBkZXIgTmFtZSBkZXMgTWFnaWVycyBpbiBkaWUgTWVsZHVuZyBlaW5nZXdvYmVuIHdlcmRlbi4KKworICAgICAgRGllIFByb3BlcnR5IGlzdCBpbiBNYWdpZXJuIGdlc2V0enQgdW5kIGdpbHQgbnVyIGRvcnQuCisKK1NJRUhFIEFVQ0g6CisgICAgIFRvZDoJCWRpZShMKQorICAgICBUb2Rlc21lbGR1bmdlbjoJUF9LSUxMX05BTUUsIFBfS0lMTF9NU0csIFBfRElFX01TRywgUF9NVVJERVJfTVNHCisJCQlQX0VORU1ZX0RFQVRIX1NFUVVFTkNFCisgICAgIFNvbnN0aWdlczoJCVBfQ09SUFNFLCBQX05PQ09SUFNFLCAvcm9vbS9kZWF0aC9kZWF0aF9yb29tLmMKKworLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorTGFzdCBtb2RpZmllZDogV2VkIEphbiAxNCAxOToxNzowNiAxOTk4IGJ5IFBhdHJ5bgpkaWZmIC0tZ2l0IGEvZG9jL3Byb3BzL1VfUkVRIGIvZG9jL3Byb3BzL1VfUkVRCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmNiMzk1ZGIKLS0tIC9kZXYvbnVsbAorKysgYi9kb2MvcHJvcHMvVV9SRVEKQEAgLTAsMCArMSw2MyBAQAorTkFNRToKKyAgICBVX1JFUSAgICAgICAgICAgICAgICAgICAgICAgICAidV9yZXEiCisKK0RFRklOSUVSVCBJTjoKKyAgICAvc3lzL3VuaXQuaAorCitCRVNDSFJFSUJVTkc6CisgICAgIERpZSBQcm9wIGthbm4gaW4gVW5pdG9iamVrdGVuIGdlc2V0enQgd2VyZGVuLgorICAgICBTaWUgZ2lidCBkaWUgQW56YWhsIGRlciBFaW5oZWl0ZW4gYW4sIGRpZSBhbiBkZXIgVW5pdCBtYW5pcHVsaWVydCB3ZXJkZW4KKyAgICAgc29sbGVuLCBmYWxscyBtaXQgd2VuaWdlciBhbHMgUF9BTU9VTlQgdW1nZWdlZ2FuZ2VuIHdlcmRlbiBzb2xsLgorICAgICAKKyAgICAgRGllIFByb3Agd2lyZCBhdXRvbWF0aXNjaCBnZXNldHp0LCB3ZW5uIGlkKCkgYW4gZWluZW0gVW5pdG9iamVrdCBnZXJ1ZmVuCisgICAgIHdpcmQgdW5kIGRpZSBJRCBncnVuZHNhZXR6bGljaCB6dXRyZWZmZW5kIGlzdCwgZGllIGF1cyBkZXIgSUQgZXJtaXR0ZWx0ZQorICAgICBaYWhsIGFiZXIga2xlaW5lciBhbHMgUF9BTU9VTlQgaXN0LgorICAgICBTaWUga2FubiBhdWNoIG1hbnVlbGwgbWl0dGVsIFNldFByb3AoKSAoYWJlciBuaWNodCBTZXQoKSkgZ2VzZXR6dCB3ZXJkZW4uCisKKyAgICAgVV9SRVEgd2lyZCBiZWltIEJld2VnZW4gdW5kIFplcnN0b2VyZW4sIGJlaSBFcm1pdHRsdW5nIHZvbiBXZXJ0IHVuZAorICAgICBHZXdpY2h0IGJlcnVlY2tzaWNodGlndC4KKworICAgICBVX1JFUSB3aXJkIHZvbSBVbml0b2JqZWt0IGF1dG9tYXRpc2NoIHdpZWRlciBhdWYgUF9BTU9VTlQgZ2VzZXR6dCwgd2VubgorICAgICBzaWNoIHF1ZXJ5X3ZlcmIoKSBvZGVyIGRlYnVnX2luZm8oRElORk9fRVZBTF9OVU1CRVIpIHZlcmFlbmRlcnQgaGFiZW4uCisgICAgIChESU5GT19FVkFMX05VTUJFUiBpc3QgZWluZSBaYWhsLCBkaWUgc2ljaCBqZWRlc21hbCBlcmhvZWh0LCB3ZW5uIGRlcgorICAgICAgRHJpdmVyIGVpbmUgbmV1ZSBCZXJlY2hudW5nL0F1c2Z1ZWhydW5nIGJlZ2lubnQuIERpZXNlIE51bW1lciB3aXJkIGZ1ZXIKKyAgICAgIGplZGVuIHZvbSBkcml2ZXIgaW5pdGlpZXJ0ZW4gQXVmcnVmIHZvbiBMUEMtQ29kZSBlcmhvZWh0LCB6LkIuIGJlaSBqZWRlbQorICAgICAgS29tbWFuZG8sIGNhbGxfb3V0LCBoZWFydF9iZWF0IGV0Yy4gRGV0YWlscyBzLiBkZWJ1Z19pbmZvKCkuKQorCisgICAgIEViZW5zbyB3aXJkIFVfUkVRIGJlaSBkZXIgVmVyZWluaWd1bmcgbWl0IGVpbmVtIGFuZGVyZW4gKGdsZWljaGVuKQorICAgICBPYmpla3QgYXVmIFBfQU1PVU5UIGRlcyB2ZXJlaW5pZ3RlbiBPYmpla3RlcyBnZXNldHp0LgorCisKK0JVR1MKKyAgICBWaWVsZS4gRGllcyBpc3QgZWluIHVlYmxlciBIYWNrLiBHZWh0IGFiZXIgbmljaHQgb2huZS4KKyAgICBEaWVzZSBQcm9wIHdhciBlbmRsb3MgbGFuZyBnYXIgbmljaHQgZG9rdW1lbnRpZXJ0LiBIaWVyIGJlc2NocmllYmVuIGlzdAorICAgIGRhcyBWZXJoYWx0ZW4sIHdhcyB6dXIgWmVpdCB2b3JsaWVndC4gRGllcyBtYWcgdW50ZXJzY2hpZWRsaWNoIHp1IGRlbQorICAgIGlyZ2VuZHdhbm4gaW50ZW5kaWVydGVuIHNlaW4uCisKKworQkVJU1BJRUxFCisgICAgb2JqZWN0IG8gPSBjbG9uZV9vYmplY3QoInVuaXRvYmpla3QiKTsKKyAgICBvLT5TZXRQcm9wKFBfQU1PVU5ULCAxMDApOyAgIC8vIGFiIGpldHp0IGhhdCBvIDEwMCBFaW5oZWl0ZW4uCisgICAgby0+bW92ZShucGMsIE1fR0VUKTsgICAgICAgICAvLyBvYiBtaXQgMTAwIEVpbmhlaXRlbiB3aXJkIGJld2VndAorICAgIG8tPlNldFByb3AoVV9SRVEsIDUwKTsKKyAgICBvLT5tb3ZlKGFuZGVyZXJucGMsIE1fR0lWRSk7IC8vIDUwIEVpbmhlaXRlbiB3ZXJkZW4gYmV3ZWd0LCA1MCB2ZXJibGVpYmVuCisgICAgKFRlY2huaXNjaDogZGFzIE9iamVrdCB3aXJkIGF1ZiA1MCBFaW5oZWl0ZW4gZ2VhZW5kZXJ0LCBiZXdlZ3QgdW5kIGluIGRlcgorICAgICBhbHRlbiBVbWdlYnVuZyB3aXJkIGVpbiBuZXVlcyBPYmpla3QgbWl0IDUwIEVpbmhlaXRlbiBlcnpldWd0LikKKworICAgIG8tPlNldFByb3AoVV9SRVEsIDQyKTsKKyAgICBvLT5yZW1vdmUoMSk7ICAgICAgICAgICAgICAgLy8gNDIgRWluaGVpdGVuIHZvbiBkZW4gNTAgd2VyZGVuIHplcnN0b2VydC4KKyAgICAoVGVjaG5pc2NoOiBQX0FNT1VOVCB3aXJkIGVpbmZhY2ggdW0gVV9SRVEgcmVkdXppZXJ0LikKKworICAgICMgZ2liIDE4IG11ZW56ZW4gYW4gYmx1cHAKKyAgICBIaWVyYmVpIHdpcmQgb2ItPmlkKCIxOCBtdWVuemVuIikgZ2VydWZlbiwgd2FzIFVfUkVRIGltIEdlbGRvYmpla3QgYXVmIDE4CisgICAgc2V0enQuIEJlaSBkZXIgQmV3ZWd1bmcgYmVrb21tdCBibHVwcCBkYWhlciBkYXMgT2JqZWt0IG1pdCBQX0FNT1VOVD09MTgKKyAgICB1bmQgZGVyIFJlc3Qgd2lyZCBpbSBBYmdlYmVuZGVuIG5ldSBlcnpldWd0LgorICAgICMgZ2liIGdlbGQgYW4gZmx1YmJlbAorICAgIERhcyBVX1JFUSBhdXMgZGVtIHZlcmhlcmlnZW4gS29tbWFuZG8gaXN0IGpldHp0IG5pY2h0IG1laHIgZ3VlbHRpZy4gWndhcgorICAgIGlzdCBlcyBkYXMgZ2xlaWNoZSBLb21tYW5kb3ZlcmIsIGFiZXIgRElORk9fRVZBTF9OVU1CRVIgaXN0IGpldHp0CisgICAgYW5kZXJzLgorCisKK1pVTEVUWlQgR0VBZU5ERVJUOgorMTYuMDEuMjAxNSwgWmVzc3RyYQorCmRpZmYgLS1naXQgYS9kb2MvcHJvcHMvZ2lsZGVucHJvcHMvLnN5bm9ueW0gYi9kb2MvcHJvcHMvZ2lsZGVucHJvcHMvLnN5bm9ueW0KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMTc2MDdkOAotLS0gL2Rldi9udWxsCisrKyBiL2RvYy9wcm9wcy9naWxkZW5wcm9wcy8uc3lub255bQpAQCAtMCwwICsxLDkgQEAKK0tfQlJBV0xJTkdfRFQga2FlbXBmZXJib25pCitLX0JSQVdMSU5HX01TRyBrYWVtcGZlcmJvbmkKK0tfQlJBV0xJTkdfV0Mga2FlbXBmZXJib25pCitLX0NSSVRJQ0FMX0hJVCBrYWVtcGZlcmJvbmkKK0tfRElTVFJBQ1RJTkdfV0VBUE9OIGthZW1wZmVyYm9uaQorS19LTyBrYWVtcGZlcmJvbmkKK0tfTk9fSE9OSU5HIGthZW1wZmVyYm9uaQorS19USFJPV0lOR19XRUFQT04ga2FlbXBmZXJib25pCitLX1dFQVBPTl9TSEFUVEVSIGthZW1wZmVyYm9uaQpkaWZmIC0tZ2l0IGEvZG9jL3Byb3BzL2dpbGRlbnByb3BzL1BfR0xPVkVfRklOR0VSTEVTUyBiL2RvYy9wcm9wcy9naWxkZW5wcm9wcy9QX0dMT1ZFX0ZJTkdFUkxFU1MKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNjRmYWVjNgotLS0gL2Rldi9udWxsCisrKyBiL2RvYy9wcm9wcy9naWxkZW5wcm9wcy9QX0dMT1ZFX0ZJTkdFUkxFU1MKQEAgLTAsMCArMSwxNiBAQAorUF9HTE9WRV9GSU5HRVJMRVNTCisKK05BTUU6CisgICAgIFBfR0xPVkVfRklOR0VSTEVTUyAgICAgICAgICAgICAgICAgICAgICJmaW5nZXJmcmVpZV9oYW5kc2NodWhlIgorCitERUZJTklFUlQgSU46CisgICAgIC9wL2thdHplbmtyaWVnZXIva2tyaWVnZXIuaAorCitCRVNDSFJFSUJVTkc6CisgICAgIFNvIGdla2VubnplaWNobmV0ZSBIYW5kc2NodWhlIHNpbmQgZmluZ2VybG9zIHVuZCBrb2VubmVuCisgICAgIHdhZWhyZW5kICJrcmFsbGVuc2NobGFnIiBnZXRyYWdlbiB3ZXJkZW4uCisKK1NJRUhFIEFVQ0g6CisgICAgIFZlcndhbmR0OglQX0FSTU9VUl9UWVBFLCBBVF9HTE9WRQorCisxMC5Pa3QgMjAwNiBHbG9pbnNvbgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2RvYy9wcm9wcy9naWxkZW5wcm9wcy9QX1pfQVVUT1NISUVMRCBiL2RvYy9wcm9wcy9naWxkZW5wcm9wcy9QX1pfQVVUT1NISUVMRApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5mNjliOWFkCi0tLSAvZGV2L251bGwKKysrIGIvZG9jL3Byb3BzL2dpbGRlbnByb3BzL1BfWl9BVVRPU0hJRUxECkBAIC0wLDAgKzEsMjYgQEAKK1BfWl9BVVRPU0hJRUxECisKK05BTUU6CisgICAgIFBfWl9BVVRPU0hJRUxECQkJCSJ6X2F1dG9zaGllbGQiCisKK0RFRklOSUVSVCBJTjoKKyAgICAgL3AvemF1YmVyZXIvd2l6bnBjLmgKKworQkVTQ0hSRUlCVU5HOgorICAgICBNaXQgZGllc2VyIFByb3BlcnR5ICBrYW5uIG1hbiBlaW5lbiBhdXRvbWF0aXNjaGVuIAorICAgICBTY2h1dHp6YXViZXIgaW4gWmF1YmVyZXItTlBDcyBlaW5zdGVsbGVuLCBkZXNzZW4gCisgICAgIFZvcmhhbmRlbnNlaW4gZGFubiBpbiBqZWRlciBLYW1wZnJ1bmRlIHVlYmVycHJ1ZWZ0CisgICAgIHdpcmQsIHouQi4gInNjaHV0eiIsInNjaHV0emh1ZWxsZSIsInphdWJlcnNjaGlsZCIuCisKK0JFTUVSS1VOR0VOOgorICAgICAiemF1YmVyc2NoaWxkIiBpc3QgZWluIE1hZ2lzdGVyc3BydWNoIHVuZCBrYW5uIG51ciBpbiAKKyAgICAgYmVzdGltbXRlbiBaZWl0YWJzdGFlbmRlbiBiZW51dHp0IHdlcmRlbi4gV2VyIGFsc28gYWxzCisgICAgIEF1dG9zaGllbGQgbnVyIFphdWJlcnNjaGlsZCBiZW51dHp0LCBibG9ja2llcnQgZGFtaXQKKyAgICAgYWxsZSBhbmRlcmVuIFNwZWxscywgc29sYW5nZSBkZXIgTWFnaXN0ZXJzcHJ1Y2ggbmljaHQKKyAgICAgZ2VzcHJvY2hlbiB3ZXJkZW4ga2Fubi4KKyAgICAgQWJoaWxmZTogX3F1ZXJ5X25leHRfbWFzdGVyX3NwZWxsX3RpbWUoKSAgcmV0dXJuIDA7IH0KKworU0lFSEUgQVVDSDoKKyAgICAgL3AvemF1YmVyZXIvdGV4dC93aXpucGMuZG9rdQorCisyMS5Pa3QgMjAwNiBDaGFnYWxsCmRpZmYgLS1naXQgYS9kb2MvcHJvcHMvZ2lsZGVucHJvcHMvUF9aX0lORk8gYi9kb2MvcHJvcHMvZ2lsZGVucHJvcHMvUF9aX0lORk8KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZDgyZDM4YQotLS0gL2Rldi9udWxsCisrKyBiL2RvYy9wcm9wcy9naWxkZW5wcm9wcy9QX1pfSU5GTwpAQCAtMCwwICsxLDUzIEBACitQX1pfSU5GTworCitOQU1FOgorICAgICBQX1pfSU5GTwkJCQkJCSJ6X2luZm8iCisKK0RFRklOSUVSVCBJTjoKKyAgICAgL3AvemF1YmVyZXIvd2l6bnBjLmgKKworQkVTQ0hSRUlCVU5HOgorICAgICBEaWVzZSBQcm9wZXJ0eSBtdXNzIGdlc2V0enQgd2VyZGVuLCB3ZW5uIG1hbiBkZW4KKyAgICAgWmF1YmVyZXJnaWxkZW4tU3RhbmRhcmQtTlBDIG51dHp0LiBTaWUgc2V0enQgZGllCisgICAgIEdydW5kZWluc3RlbGx1bmdlbiBkZXMgTlBDcyB1bmQgZ2VuZXJpZXJ0IGRhcyAKKyAgICAgTmV3c2tpbGxzLU1hcHBpbmcuIAorCisgICAgIERpZSBQcm9wZXJ0eSBpc3Qgd2llIGZvbGd0IGF1ZmdlYmF1dDoKKworICAgICAqIE1JTiAobWluaW1hbGUgU2tpbGxhYmlsaXR5IGltIEJlcmVpY2ggdm9uIDAgLSAxMDAwMCkKKyAgICAgKiBNQVggKG1heGltYWxlIFNraWxsYWJpbGl0eSBpbSBCZXJlaWNoIHZvbiAwIC0gMTAwMDApCisgICAgICogTEVWIChHaWxkZW5sZXZlbCkKKyAgICAgKiBaV0VJRyAoR2lsZGVuendlaWcpCisKKworQkVNRVJLVU5HRU46CisgICAgIEZ1ZXIgZGllIEFyZ3VtZW50ZSBMRVYgdW5kIFpXRUlHIHN0ZWhlbiBmb2xnZW5kZSBBdXN3YWhsLQorICAgICBtb2VnbGljaGtlaXRlbiB6dXIgVmVyZnVlZ3VuZy4KKworICAgICBMRVY6CisgICAgICAgIFpfQU5GQUVOR0VSCTAKKwlaX0xFSFJMSU5HCTEKKwlaX01FSVNURVIJMgorCVpfRVJaTUVJU1RFUgkzCisKKyAgICAgWldFSUc6CisgICAgICAgIFpaV19BTkdSSUZGCQkgIDEKKwlaWldfQUJXRUhSCQkgIDIKKwlaWldfSUxMVVNJT04JCSAgNAorCVpaV19CRUhFUlJTQ0hVTkcJICA4CisJWlpXX0hFTExTSUNIVAkJIDE2CisJWlpXX1ZFUldBTkRMVU5HCQkgMzIKKwlaWldfU0NIV0FSWgkJIDY0CUlOQUtUSVYKKwlaWldfV0VJU1MJCTEyOAorCVpaV19BTExFCQk1MTEKKworQkVJU1BJRUw6CisgICAgIFNldFByb3AoUF9aX0lORk8sICh7OTAwMCwgOTUwMCwgWl9FUlpNRUlTVEVSLCBaWldfQU5HUklGRnxaWldfQUJXRUhSfSkpOworICAgICBlcnpldWd0IGVpbmVuIEVyem1hZ2lzdGVyLVBDLCBkZXIgYWxsZSBMZWhybGluZ3MtIHNvd2llIGRpZSBNYWdpc3RlciB1bmQKKyAgICAgRXJ6bWFnaXN0ZXItU3BydWVjaGUgQW5ncmlmZiB1bmQgQWJ3ZWhyIG1pdCA5MC05NSUgYmVoZXJyc2NodC4KKworCitTSUVIRSBBVUNIOgorICAgICAvcC96YXViZXJlci90ZXh0L3dpem5wYy5kb2t1CisKKzIxLk9rdCAyMDA2IENoYWdhbGwKZGlmZiAtLWdpdCBhL2RvYy9wcm9wcy9naWxkZW5wcm9wcy9QX1pfTk9fTUFURVJJQUwgYi9kb2MvcHJvcHMvZ2lsZGVucHJvcHMvUF9aX05PX01BVEVSSUFMCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjRiMDQwYTAKLS0tIC9kZXYvbnVsbAorKysgYi9kb2MvcHJvcHMvZ2lsZGVucHJvcHMvUF9aX05PX01BVEVSSUFMCkBAIC0wLDAgKzEsMTggQEAKK1BfWl9OT19NQVRFUklBTAorCitOQU1FOgorICAgICBQX1pfTk9fTUFURVJJQUwgICAgICAgICAgICAgICAgICAgICAibnBjX2JyYXVjaHRfa2VpbmVfa21wIgorCitERUZJTklFUlQgSU46CisgICAgIC9wL3phdWJlcmVyL3phdWJlcmVyLmgKKworQkVTQ0hSRUlCVU5HOgorICAgICBTZXR6dCBtYW4gZGllc2UgUHJvcGVydHkgaW4gZWluZW0gTlBDLCBzbyBiZW5vZXRpZ3QgZXIgZnVlciBkaWUKKyAgICAgU3BydWVjaGUgZGVyIFphdWJlcmVyZ2lsZGUga2VpbmUgS29tcG9uZW50ZW4uCisKK0JFTUVSS1VOR0VOOgorICAgICBOSUVNQUxTIGRpZXNlIFByb3BlcnR5IGVpbmZhY2ggc28gaW4gZWluZW0gU3BpZWxlciBzZXR6ZW4uCisKK1NJRUhFIEFVQ0g6CisKKzIxLk9rdCAyMDA2IENoYWdhbGwKZGlmZiAtLWdpdCBhL2RvYy9wcm9wcy9naWxkZW5wcm9wcy9QX1pfTk9fTk9DT05OIGIvZG9jL3Byb3BzL2dpbGRlbnByb3BzL1BfWl9OT19OT0NPTk4KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMzMyZGQxNAotLS0gL2Rldi9udWxsCisrKyBiL2RvYy9wcm9wcy9naWxkZW5wcm9wcy9QX1pfTk9fTk9DT05OCkBAIC0wLDAgKzEsMjIgQEAKK1BfWl9OT19OT0NPTgorCitOQU1FOgorICAgICBQX1pfTk9fTk9DT04JCQkJCSJub19ub2NvbiIKKworREVGSU5JRVJUIElOOgorICAgICAvcC96YXViZXJlci93aXpucGMuaAorCitCRVNDSFJFSUJVTkc6CisgICAgIERlciBTdGFuZGFyZHphdWJlcmVyZ2lsZGVubnBjIHNldHp0IFNJX05PX0NPTlNFUVVFTkNFUywgZGFtaXQKKyAgICAgZGllIEdpbGRlbnBjcyBuaWNodCBkZW4gbmVnYXRpdmVuIEF1c3dpcmt1bmdlbiBiZWltIE1pc3NsaW5nZW4KKyAgICAgZGVyIFNwcnVlY2hlIGdlc2NodWV0enQgc2luZC4gU2V0enQgbWFuIGRpZXNlIFByb3BlcnR5IHZvcgorICAgICBQX1pfSU5GTyBhdWYgMCwgd2lyZCBkYXMgRmxhZyBuaWNodCBnZXNldHp0LgorCisKK0JFTUVSS1VOR0VOOgorICAgICBNdXNzIHZvciBQX1pfSU5GTyBnZXNldHp0IHdlcmRlbiwgZGFtaXQgZXMgd2lya3NhbSBpc3QuCisKK1NJRUhFIEFVQ0g6CisgICAgIC9wL3phdWJlcmVyL3RleHQvd2l6bnBjLmRva3UsIFBfWl9JTkZPCisKKzIxLk9rdCAyMDA2IENoYWdhbGwKZGlmZiAtLWdpdCBhL2RvYy9wcm9wcy9naWxkZW5wcm9wcy9QX1pfTk9fU1BFTExfU1VQUE9SVCBiL2RvYy9wcm9wcy9naWxkZW5wcm9wcy9QX1pfTk9fU1BFTExfU1VQUE9SVApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi40YTFhYjI4Ci0tLSAvZGV2L251bGwKKysrIGIvZG9jL3Byb3BzL2dpbGRlbnByb3BzL1BfWl9OT19TUEVMTF9TVVBQT1JUCkBAIC0wLDAgKzEsMjUgQEAKK1BfWl9OT19TUEVMTF9TVVBQT1JUCisKK05BTUU6CisgICAgIFBfWl9OT19TUEVMTF9TVVBQT1JUCSJ6YXViZXJlcl9ydWVzdHVuZ191bnRlcnN0dWV0enRfbm9jaF9uaWNodCIKKworREVGSU5JRVJUIElOOgorICAgICAvcC96YXViZXJlci96YXViZXJlci5oCisKK0JFU0NIUkVJQlVORzoKKyAgICAgTm9ybWFsZXJ3ZWlzZSB1bnRlcnN0dWV0enQgZWluZSBSdWVzdHVuZyBkZW4gWmF1YmVyZXIsIHNvYmFsZCBzaWUgaW0KKyAgICAgZW50c3ByZWNoZW5kZW4gUnVlc3R1bmdzbWFzdGVyIGVpbmdldHJhZ2VuIGlzdC4gTW9lY2h0ZSBtYW4gYWxsZXJkaW5ncworICAgICBkaWUgVW50ZXJzdHVldHp1bmcgYW4gYmVzdGltbXRlIEJlZGluZ3VuZ2VuIGtudWVwZmVuLCB6LkIuIGRhcyBsb2VzZW4KKyAgICAgZWluZXIgTWluaXF1ZXN0LCBzbyBrYW5uIG1hbiBkaWVzZSBQcm9wZXJ0eSBhdWYgMSBzZXR6ZW4uIERpZSBSdWVzdHVuZworICAgICB1bnRlcnN0dWV0enQgZGFubiBuaWNodC4gVW0gZGllIFVudGVyc3R1ZXR6dW5nIHdpZWRlciB6dSBha3RpdmllcmVuLAorICAgICBzZXR6dCBtYW4gZGllIFByb3BlcnR5IHdpZWRlciBhdWYgMC4KKworQkVNRVJLVU5HRU46CisgICAgIE5JRU1BTFMgZGllc2UgUHJvcGVydHkgZWluZmFjaCBzbyBpbiBmcmVtZGVuIFphdWJlcmVycnVlc3R1bmdlbiAKKyAgICAgc2V0emVuLiBTb2xsdGUgZGVyIEdpbGRlbm1hZ2llciBlcmZhaHJlbiwgZGFzcyB6LkIuIGVpbiBOUEMKKyAgICAgZWluZmFjaCBzbyBkaWUgVW50ZXJzdHVldHp1bmcgZGVyIFJ1ZXN0dW5nZW4gYXVzc2NoYWx0ZXQsIHdpcmQKKyAgICAgZGllc2UgUHJvcGVydHkgd2llZGVyIGRlYWt0aXZpZXJ0LgorCitTSUVIRSBBVUNIOgorCisyMS5Pa3QgMjAwNiBDaGFnYWxsCmRpZmYgLS1naXQgYS9kb2MvcHJvcHMvZ2lsZGVucHJvcHMva2FlbXBmZXJib25pIGIvZG9jL3Byb3BzL2dpbGRlbnByb3BzL2thZW1wZmVyYm9uaQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41MGU0YmU1Ci0tLSAvZGV2L251bGwKKysrIGIvZG9jL3Byb3BzL2dpbGRlbnByb3BzL2thZW1wZmVyYm9uaQpAQCAtMCwwICsxLDI2NCBAQAorCitLYWVtcGZlcmJvbmkgdW5kIGRlcmVuIEltcGxlbWVudGF0aW9uCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK0JlaSBkZW4gS2FlbXBmZXJuIGdpYnQgZXMgZWluaWdlIFByb3BlcnRpZXMsIGRpZSwgaW4gV2FmZmVuIG9kZXIgUnVlc3R1bmdlbgorZ2VzZXR6dCwgZGVyIEthbXBmdmVybGF1ZiBlaW5lcyBTcGllbGVycyBlcmhlYmxpY2ggYmVlaW5mbHVzc2VuIGtvZW5uZW4uCisKK1p1IGJlYWNodGVuIGlzdCwgZGFzcyBkaWUgQWJuYWhtZSB2b24gV2FmZmVuIG9kZXIgUnVlc3R1bmdlbiBtaXQgS2FlbXBmZXJib25pCithbGxlaW4gZGVyIEJhbGFuY2Ugb2JsaWVndC4gRGVyIEdpbGRlbm1hZ2llciBkZXIgS2FlbXBmZXIgc3RlaHQgYWJlciBnZXJuZQorbWl0IFJhdCB1bmQgVGF0IHp1ciBTZWl0ZS4KKworCitBYnNjaG5pdHQgQQorLS0tLS0tLS0tLS0KKworSW4gV2FmZmVuIGtvZW5uZW4gbmFjaGZvbGdlbmRlLCBpbiAvcC9rYWVtcGZlci9rYWVtcGZlci5oIGRlZmluaWVydGVuLAorUHJvcGVydGllcyBnZXNldHp0IHdlcmRlbi4gRGllIG1laXN0ZW4gZGF2b24gZnVuZ2llcmVuIGFscyAnQm9uaScgdW5kIHdlcmRlbgorZGVtIFNwaWVsZXIgYXVjaCBtaXR0ZWxzICdzY2hhZXR6IDx3YWZmZT4nIGFuZ2V6ZWlndDoKKworCisxIFdhZmZlbnNjaGxhZ2JvbnVzIC0gS19CUkFXTElOR19XQyAoSU5UKSAtICJrX2JyYXdsaW5nX3djIgorCisgIFdlbm4gZGllIFdhZmZlIGVpbmUgenVzYWV0emxpY2ggZ2VmYWVocmxpY2hlIFN0ZWxsZSBiZXNpdHp0IC0gei5CLiBlaW5lbgorICBoYXJ0ZW4gRG9ybiBhbSBTdGllbGVuZGUsIGVpbmUgU3BpdHplIGFtIFJ1ZWNrZW4gZWluZXIgQXh0a2xpbmdlLCBaYWNrZW4KKyAgYW0gRG9sY2hncmlmZiAtIGthbm4gbWFuIGRlciBXYWZmZSBlaW5lbiBXYWZmZW5zY2hsYWdib251cyBnZWJlbi4KKyAgRGllcyBiZWRldXRldCwgZGFzcyBkZXIgV2FmZmVuc2NobGFnIHVtIGVpbiBwYWFyIFByb3plbnRlIHZlcnN0YWVya3Qgd2lyZCwKKyAgZGEgZGVyIFNwaWVsZXIgbmF0dWVybGljaCB2ZXJzdWNodCwgaW1tZXIgZ2VuYXUgbWl0IGRpZXNlbSAnZmVhdHVyZScKKyAgZGVuIFdhZmZlbnNjaGxhZyBhdXN6dWZ1ZWhyZW4gKGRlciBXYWZmZW5zY2hsYWcgaXN0IGt1cnogZ2VzYWd0IGVpbgorICB1bmVyd2FydGV0ZXIgU2NobGFnLCBkZXIgbmljaHQgbWl0IGRlbSAnbm9ybWFsZW4nIFdhZmZlbmVuZGUgYXVzZ2VmdWVocnQKKyAgd2lyZCwgZGVyIEdlZ25lciB3aXJkIGRhZHVyY2ggdWViZXJyYXNjaHQgLT4gbWVociBTY2hhZGVuKS4KKyAgRGEgc29sY2ggZWluICdmZWF0dXJlJyBkb2NoIHJlY2h0IGF1ZmZhZWxsaWcgaXN0LCBzb2xsdGUgZXMgaW4gZGVyCisgIExhbmdiZXNjaHJlaWJ1bmcgZGVyIFdhZmZlIGF1ZiBqZWRlbiBGYWxsIGVyd2FlaG50IHdlcmRlbi4KKworICBJbnRlcmVzc2FudCB6dSB3aXNzZW4gd2FlcmUgbm9jaCwgZGFzcyBad2VpaGFuZHdhZmZlbiBlaW5lbiBnZW5lcmVsbGVuCisgIHp1c2FldHpsaWNoZW4gQm9udXMgYXVmIGRlbiBXYWZmZW5zY2hsYWcgYmVrb21tZW4gdW5kIGRhc3MgZXMgZWluZQorICBBYnN0dWZ1bmcgZ2lidCwgbmFjaCBkZXIgZGllIFdhZmZlbmdhdHR1bmdlbiBkaWUgSG9laGUgZGVzIEJhc2lzd2VydGVzCisgIGdlc2V0enQgYmVrb21tZW4sIHdvYmVpIFNwZWVyZSBkZW4gaG9lY2hzdGVuIHVuZCBNZXNzZXIgZGVuIG5pZWRyaWdzdGVuCisgIGJlc2l0emVuOgorCisgIFNwZWVyZSAtIEthbXBmc3RhZWJlIC0gQWV4dGUgLSBLZXVsZW4gLSBTY2h3ZXJ0ZXIgLSBNZXNzZXIKKworICBEZXIgbWF4LiBCb251cyBmdWVyIGRpZXNlIFByb3BlcnR5IGJldHJhZWd0IDMwLCB3b2JlaSAxLTEwIC0+IGdlcmluZ2VyCisgIEJvbnVzLCAxMS0yMCAtPiBndXRlciBCb251cywgMjEtMzAgLT4gc2VociBndXRlciBCb251cy4KKworICBCaXR0ZSBiZWFjaHRlbjogZWluIFp3ZWloYW5kLVNwZWVyIG1pdCBtYXguIFBfV0MgdW5kIG1heC4gS19CUkFXTElOR19XQworICBoYXV0IGVudHNwcmVjaGVuZCBndXQgcmVpbiB1bmQgc29sbHRlIG51ciBzY2h3ZXIgenUgZXJnYXR0ZXJuIHNlaW4sIGJ6dy4KKyAgbm9jaCBhbmRlcmUgQXVmbGFnZW4gaGFiZW4gKGdnZi4gdW5pcXVlLCBwZXJzb25hbGlzaWVydCwgZXRjLikKKworCisyIFdhZmZlbnNjaGxhZ3NjaGFkZW4gLSBLX0JSQVdMSU5HX0RUIChTVFJJTkcpIC0gImtfYnJhd2xpbmdfZHQiCisKKyAgV2VubiBkaWUgV2FmZmUsIG1pdCBkZXIgZGVyIEthZW1wZmVyIGVpbmVuIFdhZmZlbnNjaGxhZyBhdXNmdWVocnQsIGVpbgorICAnZmVhdHVyZScgaGF0LCBtaXQgZGVtIGVyIGRpZXNlbiBTY2hsYWcgYXVzZnVlaHJ0LCBrYW5uIGRpZXNlcyAnZmVhdHVyZScKKyAgZWluZW4gYW5kZXJlbiBXYWZmZW5zY2hsYWdzY2hhZGVuIGJlc2l0emVuLiBaLkIuIGthbm4gZWluIFNjaHdlcnQsIHdlbGNoZXMKKyAgbm9ybWFsZXJ3ZWlzZSBEVF9TTEFTSCBtYWNodCwgYmVzb25kZXJzIGxhbmdlIHVuZCBzcGl0emUgUGFyaWVyc3RhbmdlbgorICBiZXNpdHplbiwgZGllIHZpZWxsZWljaHQgYXVjaCBub2NoIHZlcmdpZnRldCBzaW5kLiBEYW5uIGthbm4gZGVyIE1hZ2llcgorICAoe0RUX1BJRVJDRSxEVF9QT0lTT059KSBzZXR6ZW4sIHNvIGRhc3MgYmVpbSBXYWZmZW5zY2hsYWcgaW1tZXIgZWluCisgIE1pc2Noc2NoYWRlbiBhdXMgU3RpY2hlIHVuZCBHaWZ0IGVyZm9sZ3QuCisKKworMyBXYWZmZW5zY2hsYWdzbWVsZHVuZyAtIEtfQlJBV0xJTkdfTVNHIChTVFJJTkcvU1RSSU5HKikgLSBrX2JyYXdsaW5nX21zZyIKKworICBJbiBkaWVzZSBQcm9wZXJ0eSBrYW5uIG1hbiBoaW5laW5zY2hyZWliZW4sIG1pdCB3ZWxjaGVtIFRlaWwgZGVyIFdhZmZlCisgIGRlciBXYWZmZW5zY2hsYWcgYXVzZ2VmdWVocnQgd2lyZC4gQW5nZW5vbW1lbiwgZXMgYmlldGV0IHNpY2ggYW4sIG1pdAorICBlaW5lciBXYWZmZSBzdGV0cyBkZW4gV2FmZmVuc2NobGFnIG1pdCBlaW5lbSBncm9zc2VuIEtuYXVmIGFtIEdyaWZmCisgIGF1c3p1ZnVlaHJlbiwgd2lyZCBzY2hsaWNodCB1bmQgZWluZmFjaCAibWl0IGVpbmVtIGdyb3NzZW4gS25hdWYgYW0KKyAgR3JpZmYgZGVyIFNjaGxhY2h0YXh0IiBpbiBkaWUgUHJvcGVydHkgZ2VzZXR6dC4KKyAgU29sbHRlIHNpY2ggYmVpIGRlciBQcm9ncmFtbWllcnVuZyBlcmdlYmVuLCBkYXNzIGVzIHNpY2ggYW5iaWV0ZXQsIGRlcgorICBXYWZmZSBtZWhyIGFscyBudXIgZWluZSBndWVuc3RpZ2UgU3RlbGxlIGFuenVkaWNodGVuIG1pdCBkZXIgbWFuIGRlbgorICBXYWZmZW5zY2hsYWcgYXVzZnVlaHJlbiBrYW5uLCBzbyBzZXR6dCBtYW4gZWluIEFycmF5LCB6LkIuICh7Im1pdCBlaW5lbQorICBncm9zc2VuIEtuYXVmIGFtIEdyaWZmIGRlciBTY2hsYWNodGF4dCIsIm1pdCBkZXIgYnJlaXRlbiBTZWl0ZSBkZXIgIgorICAiU2NobGFjaHRheHRrbGluZ2UifSkuIEluc2dlc2FtdCBpc3QgZGFyYXVmIHp1IGFjaHRlbiwgZGFzcyBkaWUgTWVsZHVuZ2VuCisgICd2b2xsc3RhbmRpZycgc2luZC4gRGFzIEFycmF5IGthbm4gYmVsaWViaWdlIEdyb2Vzc2UgYW5uZWhtZW4sIGVzIHdpcmQKKyAgZGFubiB6dWZhZWxsaWcgZWluZSBNZWxkdW5nIGJlaW0gU2NobGFnIGF1c2dlc3VjaHQuCisKKyAgRXMgZW1wZmllaGx0IHNpY2gsIGplZGUgV2FmZmUgbWl0IGRpZXNlciBQcm9wZXJ0eSB6dSBzY2htdWVja2VuLCBkaWUKKyAgS19CUkFXTElOR19XQyBnZXNldHp0IGhhYmVuLCBkYSBkaWUgV2FmZmVuc2NobGFnbWVsZHVuZ2VuIGRhbWl0IGltIEthbXBmCisgICdpbmRpdmlkdWFsaXNpZXJ0JyB3ZXJkZW4uIEluIGRlciBQcmF4aXMgd2lyZCBlcyBqZWRvY2ggZGFyYW4gc2NoZWl0ZXJuLAorICBkYXNzIGVzIHZpZWwgenUgdmllbGUgYWx0ZSBXYWZmZW4gZ2lidCwgZGllIGtlaW5lciBtZWhyIGFuZmFzc2VuIG1vZWNodGUuCisgIERhaGVyIHdpcmQgYXVmIFN0YW5kYXJkbWVsZHVuZ2VuIHp1cnVlY2tnZWdyaWZmZW4sIHNvbGx0ZSBkaWVzZSBQcm9wZXJ0eQorICBuaWNodCBnZXNldHp0IHNlaW4uCisKKworNCBXYWZmZW5icnVjaGJvbnVzIC0gS19XRUFQT05fU0hBVFRFUiAoSU5UKSAtICJrX3dlYXBvbl9zaGF0dGVyIgorCisgIFdhZmZlbiwgZGllIGJlc29uZGVycyBmdWVyIGRlbiBXYWZmZW5icnVjaCBrb25zdHJ1aWVydCB3dXJkZW4sIGtvZW5uZW4KKyAgZWluZW4gQm9udXMgZWluYnJpbmdlbiwgZGVyIGluIGRpZXNlciBQcm9wZXJ0eSBhbmdlZ2ViZW4gd2lyZC4gTmF0dWVybGljaAorICBlaWduZW4gc2ljaCBkaWUgdmVyc2NoaWVkZW5lbiBXYWZmZW50eXBlbiB3aWVkZXIgdW50ZXJzY2hpZWRsaWNoIGd1dCBmdWVyCisgIGVpbmVuIFdhZmZlbmJydWNoOiBLZXVsZW4gKG1laXN0IGF1ZmdydW5kIGlocmVzIEdld2ljaHRzKSBhbSBiZXN0ZW4sIE1lc3NlcgorICBhbSBzY2hsZWNodGVzdGVuLCBhbGxlIGFuZGVyZW4gZGF6d2lzY2hlbiAoQXh0IC0gU2Nod2VydCAtIFN0YWIgLSBTcGVlcikuCisgIERhYmVpIGtyaWVnZW4gYWxsZSBXYWZmZW4sIGRpZSB1LmEuIFNjaGxhZ3NjaGFkZW4gdmVydXJzYWNoZW4sIG5vY2htYWwKKyAgZWluZW4ga2xlaW5lbiBCb251cyBvYmVuZHJhdWYuCisKKyAgRGVyIG1heC4gQm9udXMgZnVlciBkaWVzZSBQcm9wZXJ0eSBiZXRyYWVndCA1MCwgd29iZWkgMS0xMCAtPiBnZXJpbmdlcgorICBCb251cywgMTEtMzAgLT4gZ3V0ZXIgQm9udXMsIDMxLTUwIC0+IHNlaHIgZ3V0ZXIgQm9udXMuCisKKyAgQmVpIGd1dCBnZWx1bmdlbmVtIFdhZmZlbmJydWNoIHdpcmQgZGllIFdhZmZlIGRlcyBHZWduZXJzIGJlc2NoYWVkaWd0LCB3ZW5uCisgIGRpZSBUZWNobmlrIHNlaHIgZ3V0IGdlbGluZ3QsIGthbm4gZXMgYXVjaCBzZWluLCBkYXNzIGRlbSBHZWduZXIgZGllIFdhZmZlCisgIGF1cyBkZXIgSGFuZCBnZXNjaGxhZ2VuIHdpcmQgKGRlciBTcGllbGVyIGthbm4gc2llIGFsbGVyZGluZ3MgbmljaHQKKyAgYXVmaGViZW4gdW5kIGRlciBOUEMgenVlY2t0IHNpZSBuYWNoIGVpbiBwYWFyIEthbXBmcnVuZGVuIHdpZWRlcikuCisKKworNSBCb251cyBmdWVyIEZpbnRlL1dhZmZlbnRyaWNrIC0gS19ESVNUUkFDVElOR19XRUFQT04gKElOVCkgLQorICAia19kaXN0cmFjdGluZ193ZWFwb24iCisKKyAgV2FmZmVuLCBkaWUgZnVlciBkZW4gR2VnbmVyIGF1ZmdydW5kIGlocmVyIEJhdXdlaXNlIGJlc29uZGVycyBpcnJpdGllcmVuZAorICBzZWluIGtvZW5uZW4sIGtvZW5uZW4gZWluZW4gQm9udXMgZnVlciBGaW50ZSB1bmQgV2FmZmVudHJpY2sgaGFiZW4uIERhYmVpCisgIHdpcmQgZGVyIEdlZ25lciBiZWkgZWluZXIgRmludGUgYnp3LiBlaW5lbSBXYWZmZW50cmljayBOT0NIIG1laHIgdmVyd2lycnQsCisgIGFscyBlciBlcyBvaG5laGluIHNjaG9uIG51ciBkdXJjaCBkaWUgYW5nZXdhbmR0ZSBUZWNobmlrIHdpcmQuCisgIEVpbiBndXRlcyBCZWlzcGllbCBoaWVyZnVlciBpc3Qgei5CLiBkZXIgS3JpZWdzaGFtc3RlcjogZWluIEhhbXN0ZXIsIGRlcgorICBhdWYgZWluZW0gSG9senN0YWIgYXVmZ2VzcGllc3N0IGlzdCwgc29sbHRlIGZ1ZXIgZGVuIEdlZ25lciBzY2hvbiBTRUhSCisgIGlycml0aWVyZW5kIHNlaW4gOykuCisgIERpZSBXYWZmZW5nYXR0dW5nIGhhdCBudXIgd2VuaWcgRWluZmx1c3MgYXVmIEZpbnRlL1dhZmZlbnRyaWNrLgorCisgIERlciBtYXguIEJvbnVzIGZ1ZXIgZGllc2UgUHJvcGVydHkgYmV0cmFlZ3QgNTAsIHdvYmVpIDEtMTAgLT4gZ2VyaW5nZXIKKyAgQm9udXMsIDExLTMwIC0+IGd1dGVyIEJvbnVzLCAzMS01MCAtPiBzZWhyIGd1dGVyIEJvbnVzLgorCisKKzYgVG9kZXNzdG9zc2JvbnVzIC0gS19DUklUSUNBTF9ISVQgKElOVCkgLSAia19jcml0aWNhbF9oaXQiCisKKyAgTWFuIHN0ZWxsZSBzaWNoIGVpbmUgV2FmZmUgbWl0IGJlc29uZGVycyBzcGl0emVyLCBsYW5nZXIgS2xpbmdlIHZvciBvZGVyCisgIGVpbmUgbWFnaXNjaGUgV2FmZmUsIGRpZSBkZW0gZ2VzY2h3YWVjaHRlbiBHZWduZXIgZGllIFNlZWxlIGVudHJlaXNzdC4KKyAgRGllc2UgRWlnZW5zY2hhZnRlbiB2ZXJsZWloZW4gZGVtIFNwaWVsZXIgYmVpbSBUb2Rlc3N0b3NzIGVpbmVuCisgIGVudHNwcmVjaGVuZGVuIEJvbnVzIHZvbiBiaXMgenUgMTAwJS4KKworICBFcyBpc3QgbW9lZ2xpY2gsIGRhc3MgZWluIHVuZCBkYXNzZWxiZSAnZmVhdHVyZScgc293b2hsIGRlbSBXYWZmZW5zY2hsYWcKKyAgYWxzIGF1Y2ggZGVtIFRvZGVzc3Rvc3MgZGVuIEJvbnVzIHN0ZWxsdCwgei5CLiB6d2VpIEhpZWJrbGluZ2VuIGF1ZiBkZW0KKyAgS2xpbmdlbnJ1ZWNrZW4gZWluZXIgZ3Jvc3NlbiBBeHQuIEF1Y2ggZGllcyBzb2xsdGUgbWFuIGRldXRsaWNoIGF1cyBkZXIKKyAgTGFuZ2Jlc2NocmVpYnVuZyBoZXJhdXNsZXNlbiBrb2VubmVuLgorCisgIERlciBtYXguIEJvbnVzIGZ1ZXIgZGllc2UgUHJvcGVydHkgYmV0cmFlZ3QgMTAwLCB3b2JlaSAxMDAgZWluZSBWZXJkb3BwbHVuZworICBkZXIgUF9XQyBiZWltIFRvZGVzc3Rvc3MgYmVkZXV0ZXQhCisgIEFuc29uc3RlbiBiZWRldXRldCAxLTIwIC0+IGdlcmluZ2VyIEJvbnVzLCAyMS02MCAtPiBndXRlciBCb251cywKKyAgNjEtMTAwIC0+IHNlaHIgZ3V0ZXIgQm9udXMuCisKKworNyBXYWZmZW53dXJmYm9udXMgLSBLX1RIUk9XSU5HX1dFQVBPTiAoSU5UKSAtICJrX3Rocm93aW5nX3dlYXBvbiIKKworICBXZW5uIGVpbmUgV2FmZmUgYmVzb25kZXJzIGd1dCB6dW0gV2VyZmVuIGdlZWlnbmV0IGlzdCwgei5CLiBlaW4gV3VyZmRvbGNoLAorICBkYW5uIGthbm4gZGllc2UgUHJvcGVydHkgZ2VzZXR6dCB3ZXJkZW4uIE5hdHVlcmxpY2ggaXN0IGRlciBHcnVuZHdlcnQgd2llZGVyCisgIHZvbiBkZXIgV2FmZmVuZ2F0dHVuZyBhYmhhZW5naWcuIEVzIGdpbHQsIGRhc3MgbWFuIE1lc3NlciB1bmQgU3BlZXJlCisgIGdydW5kc2FldHpsaWNoIGFtIGJlc3RlbiB3ZXJmZW4gLSB1bmQgZGFiZWkgZ3V0IFNjaGFkZW4gbWFjaGVuIC0ga2FubiwgYW0KKyAgc2NobGVjaHRlc3RlbiBzY2huZWlkZW4gS2V1bGVuIHVuZCBLYW1wZnN0YWViZSBhYi4KKworICBEZXIgbWF4LiBCb251cyBmdWVyIGRpZXNlIFByb3BlcnR5IGJldHJhZWd0IDUwLCB3b2JlaSAxLTIwIC0+IGdlcmluZ2VyCisgIEJvbnVzLCAyMS00MCAtPiBndXRlciBCb251cywgMzEtNTAgLT4gc2VociBndXRlciBCb251cy4KKworICBadSBiZWFjaHRlbiBpc3QgaGllcmJlaSwgZGFzcyBlaW4gc2VociBob2hlciBCb251cyBudXIgYmVpIFdhZmZlbiBtaXQgZXR3YXMKKyAgZ2VyaW5nZXJlciBQX1dDIHZlcmdlYmVuIHdlcmRlbiBzb2xsdGUuIEVpbiByZWluZXMgV3VyZm1lc3NlciBpc3QgbnVubWFsIGltCisgIG5vcm1hbGVuIEthbXBmIG5pY2h0IGRpZSBnZWZhZWhybGljaHN0ZSBhbGxlciBXYWZmZW4gKHNwZXppZWxsCisgIGF1c2JhbGFuY2llcnQsIGtlaW5lbiByaWNodGlnZW4gR3JpZmYsIGV0Yy4pLgorICBOYXR1ZXJsaWNoIGthbm4gZXMgZWluZW4gV3VyZnNwZWVyIG1pdCBtYXguIFBfV0MgdW5kIHNlaHIgaG9oZW0KKyAgV2FmZmVud3VyZmJvbnVzIGdlYmVuLCBhbGxlcmRpbmdzIG1pdCBkZW4gdWVibGljaCBob2hlbiBSZXN0cmlrdGlvbmVuLgorCisKKzggS08tU2NobGFnLUJvbnVzIC0gS19LTyAoSU5UKSAtICJrX2tvIgorCisgIFdhZmZlbiwgZGllIGJlc29uZGVycyBmdWVyIGVpbmVuIEtPLVNjaGxhZyBnZWVpZ25ldCBzaW5kLCBrb2VubmVuIGVpbmVuCisgIEJvbnVzIG1pdCBkaWVzZXIgUHJvcGVydHkgYmVrb21tZW4uIEVpbmUgZW50c3ByZWNoZW5kZSBXYWZmZSBrb2VubnRlIHouQi4KKyAgZWluIGxlZGVydW13aWNrZWx0ZXIgUHJ1ZWdlbCBzZWluLCBkZW5uIG1hbiB3aWxsIGRlbiBHZWduZXIgamEgbnVyIEtPCisgIHNjaGxhZ2VuIHVuZCBuaWNodCBnbGVpY2ggdG9ldGVuLgorCisgIERlciBtYXguIEJvbnVzIGZ1ZXIgZGllc2UgUHJvcGVydHkgYmV0cmFlZ3QgNTAsIHdvYmVpIDEtMjAgLT4gZ2VyaW5nZXIKKyAgQm9udXMsIDIxLTMwIC0+IGd1dGVyIEJvbnVzLCAzMS01MCAtPiBzZWhyIGd1dGVyIEJvbnVzLgorCisKKzkgS2VpbiBXYWZmZW5zY2hhZXJmZW4gLSBLX05PX0hPTklORyAoSU5UKSAtICJrX25vX2hvbmluZyIKKworICBXZW5uIGVpbmUgV2FmZmUgYXVzIGlyZ2VuZGVpbmVtIEdydW5kIG5pY2h0IGdlc2NoYWVyZnQgd2VyZGVuIGthbm4gb2RlcgorICBkYXJmLCBtdXNzIG1hbiBkaWVzZSBQcm9wZXJ0eSBhdWYgMSBzZXR6ZW4uCisgIEVpbmUgRXJrbGFlcnVuZyBkYWZ1ZXIgc29sbHRlIGluIGRlciBQX0xPTkcgYnp3LiBQX0lORk8gZXJmb2xnZW4uCisKKworQWJzY2huaXR0IEIKKy0tLS0tLS0tLS0tCisKK0RpZSBiZWlkZW4gUHJvcGVydGllcywgUF9FRkZFQ1RJVkVfQUMgdW5kIFBfRUZGRUNUSVZFX1dDLCB3ZWxjaGUgaW4KKzxjb21iYXQuaD4gZGVmaW5pZXJ0IHNpbmQsIHNpbmQgZWlnZW50bGljaCBudXIgZGF6dSBkYSwgdW0gUnVlc3R1bmdlbiB1bmQKK1dhZmZlbiwgZGllIGVpbmUgRGVmZW5kRnVuYygpIGJ6dy4gSGl0RnVuYygpIGJlc2l0emVuLCBrb3JyZWt0IHZvbSBTcGllbGVyCitlaW5zY2hhZXR6ZW4gbGFzc2VuIHp1IGtvZW5ubmVuLgorCitEYXMgS2FlbXBmZXJzcGVsbGJvb2sgdmVyd2VuZGV0IGRpZXNlIFByb3BlcnRpZXMgZGFydWViZXJoaW5hdXMgd2llIGZvbGd0OgorCisKKzEgU2NodXR6Ym9uaSBpbiBXYWZmZW4gLSBQX0VGRkVDVElWRV9BQyAoSU5UKSAtICJlZmZlY3RpdmVfYWMiCisKKyAgSXN0IGRpZXNlIFByb3BlcnR5IGluIGVpbmVyIFdhZmZlIGdlc2V0enQsIGdlaHQgZGFzIEthZW1wZmVyc3BlbGxib29rCisgIGRhdm9uIGF1cywgZGFzcyBkaWVzZSBXYWZmZSBtZWhyIG9kZXIgd2VuaWdlciBkaWUgRmFlaGlna2VpdCBiZXNpdHp0LAorICBhdWNoIHdpZSBlaW5lIFJ1ZXN0dW5nIHNjaHVldHplbiB6dSBrb2VubmVuLiBEYSBtYW4gZWluZSBXYWZmZSBhYmVyIG5pY2h0CisgIGFuemllaGVuLCBzb25kZXJuIG51ciB2b3Igc2ljaCBoZXJ0cmFnZW4ga2Fubiwga2FubiBhdWNoIGRlciBtYXguCisgIFJ1ZXN0dW5nc3NjaHV0eiBlaW5lciBXYWZmZSBudXIgZ2xlaWNoIGRlbSBtYXguIFJ1ZXN0dW5nc3NjaHV0eiBlaW5lcworICBTY2hpbGRlcyBlbnRzcHJlY2hlbi4KKyAgRWluZSBnZXNldHp0ZSBQX0VGRkVDVElWRV9BQyBpbiBlaW5lciBXYWZmZSB3aXJkIGRlbSBTcGllbGVyIGFscyBtZWhyCisgIG9kZXIgd2VuaWdlciBndXRlICdQYXJhZGV3YWZmZScgaW0gJ3NjaGFldHonIGFuZ2V6ZWlndCB1bmQgZ2VodCBzb3dvaGwgYmVpCisgIGRlciBXYWZmZW5wYXJhZGUgYWxzIGF1Y2ggYmVpbSBCbG9jayBhbHMgQm9udXMgbWl0IGVpbi4KKworICBaLkIuIGtvZW5udGUgZWluIGxlaWNodGVzIFNjaHdlcnQsIHdhcyBhdWZncnVuZCBzZWluZXIgQmF1d2Vpc2UgbWVociBmdWVyCisgIGRlbiBkZWZlbnNpdmVuIEthbXBmIGF1c2dlbGVndCBpc3QgKGV4dHJhbGFuZ2UgUGFyaWVyc3RhbmdlbiwgdmVyc3RhZXJrdGVyCisgIEhhbmRzY2h1dHogaW0gR3JpZmZiZXJlaWNoLCAuLi4pIHdpZSBlaW4gbWFlc3NpZ2VzIFNjaGlsZCB3aXJrZW4uIERpZQorICBWb3J0ZWlsZSBsaWVnZW4gYXVmIGRlciBIYW5kOiBkZXIgU3BpZWxlciBiZWtvbW10IHZlcnN0YWVya3RlbiBTY2h1dHosCisgIGthbm4gYWJlciB3ZWl0ZXJoaW4gZWluZSBad2VpaGFuZHdhZmZlIGZ1ZWhyZW4uCisKKyAgRGVyIG1heC4gQm9udXMgZnVlciBkaWVzZSBQcm9wZXJ0eSBiZXRyYWVndCA0MCwgd29iZWkgMS0yMCAtPiBnZXJpbmdlcgorICBCb251cywgMjEtMzAgLT4gZ3V0ZXIgQm9udXMsIDMxLTQwIC0+IHNlaHIgZ3V0ZXIgQm9udXMuCisKKyAgWnUgYmVhY2h0ZW4gaXN0IGhpZXIsIGRhc3Mgc2VociBndXRlIFBhcmllcndhZmZlbiBtaXQgUF9FRkZFQ1RJVkVfQUMgPiAzMAorICBtb2VnbGljaHN0IGRldXRsaWNoIHVudGVyIGRlciBtYXguIFdDIGxpZWdlbiBzb2xsdGVuLgorCisgIEFubWVya3VuZ2VuOgorICBFaW5lIGdlc2V0enRlIFBfRUZGRUNUSVZFX0FDIGluIGVpbmVtIFNjaGlsZCBrYW5uIGRlbiBCb251cyBmdWVyIGRpZQorICBTY2hpbGRwYXJhZGUgbmFjaCBvYmVuIG9kZXIgdW50ZW4gYmVlaW5mbHVzc2VuLiBNb2VjaHRlIG1hbiBlaW4gU2NoaWxkCisgIGhlcnN0ZWxsZW4sIHdlbGNoZXMgc3BlemllbGwgYmVpIGRlciBTY2hpbGRwYXJhZGUgZGVyIEthZW1wZmVyIGJlc3NlcgorICBhbHMgJ25vcm1hbCcgc2NodWV0enQsIHNvbGx0ZSBtYW4gaGllciBlaW5lbiBXZXJ0IGVpbnRyYWdlbiwgZGVyIGRldXRsaWNoCisgIGdyb2Vzc2VyIGFscyBkaWUgUF9BQyBkZXMgU2NoaWxkZXMgaXN0LgorCisgIEVpbmUgZ2VzZXR6dGUgUF9FRkZFQ1RJVkVfQUMgaW4gZWluZXIgYW5kZXJlbiBSdWVzdHVuZyBoYXQgbnVyIGRlbiBOdXR6ZW4sCisgIGF1ZiBkZXJlbiBlcmhvZWh0ZW4gKHVuZCBuaWNodCBzb2ZvcnQgc2ljaHRiYXJlbikgVmVydGVpZGlndW5nc3dlcnQKKyAgaGluenV3ZWlzZW4sIGRlciBkdXJjaCBlaW5lIERlZmVuZEZ1bmMoKSByZWFsaXNpZXJ0IHdpcmQuCisKKworMiBBbmdyaWZmc2JvbmkgaW4gUnVlc3R1bmdlbiAtIFBfRUZGRUNUSVZFX1dDIChJTlQpIC0gImVmZmVjdGl2ZV93YyIKKworICBGdWVyIGRpZSBLYWVtcGZlciBrb2VubmVuIGZvbGdlbmRlIFJ1ZXN0dW5nc3R5cGVuIG1vZGlmaXppZXJ0IHdlcmRlbjoKKyAgQVRfVFJPVVNFUlMgKEhvc2VuKSwgQVRfSEVMTUVUIChLb3BmYmVkZWNrdW5nKSwgQVRfQk9PVCAoRnVzc2tsZWlkdW5nKSwKKyAgQVRfQVJNT1VSIChLb2VycGVycnVlc3R1bmcpLCBBVF9TSElFTEQgKFNjaGlsZGUpLgorICBJc3QgaW4gZWluZXIgZGllc2VyIFR5cGVuIFBfRUZGRUNUSVZFX1dDIGdlc2V0enQsIHNvIG1hY2h0IGRpZXNlIFJ1ZXN0dW5nCisgIGJlaSBlaW5lbSBBbmdyaWZmIG1pdCBlaW5lciBTcGV6aWFsYXR0YWNrZSAoS25pZXN0b3NzLCBLb3Bmc3Rvc3MsIEZ1c3N0cml0dCwKKyAgRWxsYm9nZW5zY2hsYWcgdW5kIFNjaGlsZHN0b3NzKSBlbnRzcHJlY2hlbmQgbWVociBiencuIHdlbmlnZXIgU2NoYWRlbiBhbHMKKyAgb2huZSBkaWVzZSBQcm9wZXJ0eS4gRWluZSBlbnRzcHJlY2hlbmRlIEJlZ3J1ZW5kdW5nIGZ1ZXIgZWluZSBWZXJzdGFlcmt1bmcKKyAgb2RlciBTY2h3YWVjaHVuZyBzb2xsdGUgYXVjaCBoaWVyIGZ1ZXIgZGVuIFNwaWVsZXIgb2ZmZW5zaWNodGxpY2ggc2VpbgorICAoRG9ybmVuIGFtIFNjaGlsZCwgdmVyc3RhZXJrdGVyIEtuaWViZXJlaWNoLCBaYWNrZW4gYW0gSGVsbSwgZXRjLikuCisKKyAgV2VubiBtYW4gZGVyIFJ1ZXN0dW5nIGVpbmVuIEJvbnVzIGdlYmVuIG1vZWNodGUsIG11c3MgbWFuIGRhcmF1ZiBhY2h0ZW4sCisgIGRhc3MgUF9FRkZFQ1RJVkVfV0MgaG9laGVyIGlzdCBhbHMgZGllIFBfQUMgZGVyIFJ1ZXN0dW5nISBTb2xsdGUKKyAgUF9FRkZFQ1RJVkVfV0MgbmllZHJpZ2VyIGFscyBQX0FDIHNlaW4sIHdpcmQgZGVubm9jaCBQX0VGRkVDVElWRV9XQyBhbHMKKyAgQW5ncmlmZnN3ZXJ0IGdlbm9tbWVuLiBEaWVzIHN0ZWxsdCBuYXR1ZXJsaWNoIGVpbmUgU2Nod2FlY2h1bmcgZGVyCisgIFNwZXppYWxhdHRhY2tlIGRhci4gTW9lZ2xpY2hlcndlaXNlIGlzdCBhYmVyIGdlbmF1IGRhcyBnZXdvbGx0LCB3ZW5uIGVpbmUKKyAgUnVlc3R1bmcsIGRpZSBzZWhyIGd1dCBzY2h1ZXR6dCwgbnVyIGdlcmluZ2VuIEthZW1wZmVyYm9udXMgYXVmd2Vpc2VuIHNvbGwuCisKKyAgQmVpc3BpZWw6IGVpbiBTY2hpbGQgYXVzIEhhcnRndW1taSBrYW5uIHJlY2h0IGd1dCBTY2hsYWVnZSBhbGxlciBBcnQKKyAgYWJmYW5nZW4gKC0+IFBfQUMgMzUpLiBXaWxsIGRlciBLYWVtcGZlciBqZWRvY2ggZWluZW4gU2NoaWxkc3Rvc3MgZGFtaXQKKyAgbWFjaGVuLCBmZWhsdCBpaG0gYXVmZ3J1bmQgZGVyIEJlc2NoYWZmZW5oZWl0IGRpZSBXdWNodCwgZWhlciBkYWVtcGZ0IGVzCisgIGRlbiBTY2hpbGRzdG9zcyBub2NoIGVpbiB3ZW5pZyAoLT4gUF9FRkZFQ1RJVkVfV0MgMjUpLgorCisgIERlciBNYXhpbWFsd2VydCBmdWVyIGRpZSBQX0VGRkVDVElWRV9XQyBiZWkgS2FlbXBmZXJuIGlzdCBkZXIgamV3ZWlscworICBkb3BwZWx0ZSBtYXhpbWFsZSBQX0FDLVdlcnQgKHMuICdtYW4gcnVlc3R1bmdlbicpLgorCisgIERpZSBBbmdhYmUgZWluZXMgU2NoYWRlbnN0eXBzIChQX0RBTV9UWVBFKSBpbiBlaW5lciBSdWVzdHVuZyBrYW5uIGRhbm4KKyAgc2lubnZvbGwgc2Vpbiwgd2VubiBiZWkgZGVyIFNwZXppYWxhdHRhY2tlIGVpbiBzcGV6aWVsbGVyIFNjaGFkZW4gZ2VtYWNodAorICB3ZXJkZW4gc29sbC4gQmVpc3BpZWxzd2Vpc2Ugc29sbHRlbiBGbGFtbWVuc3RpZWZlbCBsb2dpc2NoZXJ3ZWlzZSBEVF9GSVJFCisgIHVuZCBEVF9CTFVER0VPTiBvZGVyIERUX1BJRVJDRSBiZWkgZWluZW0gS2FtcGZ0cml0dCB2ZXJ1cnNhY2hlbi4gRXMgTVVTUworICAobG9naXNjaGVyd2Vpc2UpIG1pbmRlc3RlbnMgZWluIHBoeXNpa2FsaXNjaGVyIFNjaGFkZW5zdHlwIGVudGhhbHRlbiBzZWluLgorICBXaXJkIGtlaW4gU2NoYWRlbnN0eXAgYW5nZWdlYmVuLCB3aXJkIGF1ZiBTdGFuZGFyZHR5cGVuIHp1cnVlY2tnZWdyaWZmZW4uCisKKworU0lFSEUgQVVDSDoKKyAgICAgV2FmZmVuOiAgICAgUF9XQywgUF9UT1RBTF9XQywgUF9FRkZFQ1RJVkVfV0MsIEhpdEZ1bmMoKQorICAgICBSdWVzdHVuZ2VuOiBQX0FDLCBQX1RPVEFMX0FDLCBQX0VGRkVDVElWRV9BQywgRGVmZW5kRnVuYygpCisgICAgIEZpbGVzOiAgICAgIC9zdGQvd2VhcG9uLmMsIC9zdGQvd2VhcG9uL2NvbWJhdC5jCisgICAgIEJhbGFuY2U6ICAgIHdhZmZlbiwgcnVlc3R1bmdlbiwgcHJvcGVydGllcworCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorMjYuMTAuMjAxMiwgR2FieWxvbgpkaWZmIC0tZ2l0IGEvZG9jL3Byb3BzL29ic29sZXRlL1BfQkFMQU5DRURfV0VBUE9OIGIvZG9jL3Byb3BzL29ic29sZXRlL1BfQkFMQU5DRURfV0VBUE9OCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmU3ODVmMmMKLS0tIC9kZXYvbnVsbAorKysgYi9kb2MvcHJvcHMvb2Jzb2xldGUvUF9CQUxBTkNFRF9XRUFQT04KQEAgLTAsMCArMSwzNSBAQAorKioqKioqKioqKioqKioqKioqKioqIFVOR0VOVVRaVEUgUFJPUEVSVFkgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyogRGllc2UgUHJvcGVydHkgd2lyZCB2b24gZGVyIE11ZGxpYiBOSUNIVCBhdXNnZXdlcnRldCB1bmQga2FubiAgICAgICAqCisqIGFscyB2ZXJhbHRldCBnZWx0ZW4uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKgorKiBNb21lbnRhbiBpc3QgYXVjaCBrZWluZSBHaWxkZSBiZWthbm50LCBkaWUgbWVociBtYWNodCwgYWxzIHNpZSAgICAgICoKKyogYXVzenVnZWJlbi4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqCisqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorTkFNRToKKyAgICAgICAgUF9CQUxBTkNFRF9XRUFQT04gICJiYWxhbmNlZF93ZWFwb24iCisKK0RFRklOSUVSVCBJTjoKKyAgICAgICAgL3N5cy93ZWFwb24uaAorCitCRVNDSFJFSUJVTkc6CisgICAgICAgIERpZSBQcm9wZXJ0eSBnaWJ0IGFuLCBvYiBlaW5lIFdhZmZlIGF1c2JhbGFuY2llcnQgaXN0IG9kZXIgbmljaHQuCisgICAgICAgIERpZSBiZWlkZW4gbW9lZ2xpY2hlbiBXZXJ0ZSBzaW5kIGxvZ2lzY2hlcndlaXNlOgorCisgICAgICAgICAgICAgICAgV1BfQkFMQU5DRUQgICAgICAgYmFsYW5jaWVydAorICAgICAgICAgICAgICAgIFdQX1VOQkFMQU5DRUQgICAgIHVuYmFsYW5jaWVydAorCisgICAgICAgIERpZSBXUF8qIHNpbmQgZWJlbmZhbGxzIGluIDx3ZWFwb24uaD4gZGVmaW5pZXJ0LgorCitCRUlTUElFTEU6CisgICAgICAgIGEpIEVpbmUgYXVzYmFsYW5jaWVydGUgV2FmZmUgaXN0IHouQi4gZWluIEthbXBmc3RhYi4KKworICAgICAgICAgICAgU2V0UHJvcChQX0JBTEFOQ0VEX1dFQVBPTixXUF9CQUxBTkNFRCk7CisKKyAgICAgICAgYikgRWluZSBuaWNodCBhdXNiYWxhbmNpZXJ0ZSBXYWZmZSBpc3Qgei5CLiBlaW5lIEtldWxlLgorCisgICAgICAgICAgICBTZXRQcm9wKFBfQkFMQU5DRURfV0VBUE9OLFdQX1VOQkFMQU5DRUQpOworCitTSUVIRSBBVUNIOgorICAgICAgICBQX1RFQ0hOSVFVRSwgL3N0ZC93ZWFwb24vY29tYmF0LmMKKworTEVUWlRFIEFlTkRFUlVORzoKKzE1LjAyLjIwMDksIFplc3N0cmEKZGlmZiAtLWdpdCBhL2RvYy9wcm9wcy9vYnNvbGV0ZS9QX0RFRkFVTFRfSU5GTyBiL2RvYy9wcm9wcy9vYnNvbGV0ZS9QX0RFRkFVTFRfSU5GTwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44MTQ5MjhjCi0tLSAvZGV2L251bGwKKysrIGIvZG9jL3Byb3BzL29ic29sZXRlL1BfREVGQVVMVF9JTkZPCkBAIC0wLDAgKzEsMjggQEAKKyoqKioqKioqKioqKioqKioqKioqKiBWRVJBTFRFVEUgUFJPUEVSVFkgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisqIERpZXNlIFByb3BlcnR5IGlzdCB2ZXJhbHRldC4gQml0dGUgbmljaHQgbWVociBpbiBuZXVlbSBDb2RlIG51dHplbi4gKgorKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKworTkFNRToKKyAgICBQX0RFRkFVTFRfSU5GTyAgICAgICAgICAgICAgICAiZGVmYXVsdF9pbmZvIgorCitERUZJTklFUlQgSU46CisgICAgL3N5cy9wcm9wZXJ0aWVzLmgKKworQkVTQ0hSRUlCVU5HOgorICAgIERlZmF1bHQtQW50d29ydCBlaW5lcyBOcGMsIHdlbm4gZXIgYXVmIGRhcyBTY2hsdWVzc2Vsd29ydCBkdXJjaCBkZW4KKyAgICBTcGllbGVyIGtlaW4gQWRkSW5mbyBwYXJhdCBoYXQuCisKK0JFTUVSS1VORzoKKyAgICBEaWVzZSBQcm9wZXJ0eSBzb2xsdGUgbmljaHQgbWVociBiZW51dHp0IHdlcmRlbi4gU3RhdHRkZXNzZW4gYml0dGUKKyAgICBBZGRJbmZvKERFRkFVTFRfSU5GTywuLi4pIHZlcndlbmRlbi4KKyAgICBEZW0gaW4gZGllc2VyIFByb3AgYW5nZWdlYmVuIFN0cmluZyB3aXJkIGltbWVyIGRlciBOYW1lIGRlcyBOcGMKKyAgICB2b3JhdXNnZXN0ZWxsdC4gV2lsbCBtYW4gZGllcyB2ZXJoaW5kZXJuLCBtdXNzIG1hbiBzaWUgdWViZXJzY2hyZWliZW4uCisKK0JFSVNQSUVMOgorICAgIFNldFByb3AoUF9ERUZBVUxUX0lORk8sImJvaHJ0IGdlbGFuZ3dlaWx0IGluIGRlciBOYXNlLlxuIik7CisKK1NJRUhFIEFVQ0g6CisgICAgQWRkSW5mbworCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisxNy4wOC4yMDEwLCBaZXNzdHJhCmRpZmYgLS1naXQgYS9kb2MvcHJvcHMvb2Jzb2xldGUvUF9FWFRSQV9MT09LIGIvZG9jL3Byb3BzL29ic29sZXRlL1BfRVhUUkFfTE9PSwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4zNzc3YTI1Ci0tLSAvZGV2L251bGwKKysrIGIvZG9jL3Byb3BzL29ic29sZXRlL1BfRVhUUkFfTE9PSwpAQCAtMCwwICsxLDM1IEBACisqKioqKioqKioqKioqKioqKioqKiogVkVSQUxURVRFIFBST1BFUlRZICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorKiBEaWVzZSBQcm9wZXJ0eSBpc3QgdmVyYWx0ZXQuIEJpdHRlIGJlbnV0enQgc2llIE5JQ0hUIG1laHIsIHNvbmRlcm4gICoKKyogc3RhdHRkZXNzZGVuIEFkZEV4dHJhTG9vaygpLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqCisqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorCitOQU1FOgorCVBfRVhUUkFfTE9PSwkJCSJleHRyYWxvb2siCisKK0RFRklOSUVSVCBJTjoKKwkvc3lzL2xpdmluZy9kZXNjcmlwdGlvbi5oCisKK0JFU0NIUkVJQlVORzoKKwlEaWVzZSBQcm9wZXJ0eSBlbnRoYWVsdCBlaW5lbiBTdHJpbmcuIFNpZSB3aXJkIGVudHdlZGVyIGluIExlYmV3ZXNlbgorCWRpcmVrdCBvZGVyIGluIE9iamVrdGVuIGdlc2V0enQgd2lyZCwgZGllIGltIEJlc2l0eiB2b24gTGViZXdlc2VuCisJc2VpbiBrb2VubmVuLgorCURpZXNlIFN0cmluZ3MgZXJzY2hlaW5lbiBkYW5uIHp1c2FldHpsaWNoIGluIGRlciBMYW5nYmVzY2hyZWlidW5nCisJZGVzIExlYmV3ZXNlbnMgYnp3LiBkZXMgQmVzaXR6ZXJzICh3ZW5uIGRhcyBPYmpla3Qgc2ljaCBkaXJla3QgaW0KKwkgTGViZXdlc2VuIGJlZmluZGV0LCBqZWRvY2ggbmljaHQgaW4gZWluZW0gQmVoYWVsdGVyIGltIExlYmV3ZXNlbikuCisJRnVlciBkZW4gWmVpbGVudW1icnVjaCBtdXNzIG1hbiBzZWxic3Qgc29yZ2VuLgorCitCRUlTUElFTDoKKwlFaW4gU3BpZWxlciBoYXQgZWluZSBQZmVpZmUgaW0gTXVuZC4gSW4gZGllc2VyIFBmZWlmZSBzZXR6dCBtYW4gei5CLgorCWluIGRlciBGdW5rdGlvbiB6dW0gUGZlaWZlIFJhdWNoZW4gZm9sZ2VuZGVzOgorCSAgU2V0UHJvcChQX0VYVFJBX0xPT0ssYnJlYWtfc3RyaW5nKAorCSB0aGlzX3BsYXllcigpLT5OYW1lKFdFUikrIiBpc3QgZ2FueiB1bW5lYmVsdC4iLDc4KTsKKworQkVNRVJLVU5HOgorICBCSVRURSBOSUNIVCBNRUhSIEJFTlVUWkVOIQorCitTSUVIRSBBVUNIOgorCWxvbmcoKSwgL3N0ZC9saXZpbmcvZGVzY3JpcHRpb24uYywgL3N0ZC9wbGF5ZXIvYmFzZS5jCisgIEFkZEV4dHJhTG9vaygpLCBSZW1vdmVFeHRyYUxvb2soKQorCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisxMy4wNS4yMDA3LCBaZXNzdHJhCmRpZmYgLS1naXQgYS9kb2MvcHJvcHMvb2Jzb2xldGUvUF9MQVNUX0tJTExFUiBiL2RvYy9wcm9wcy9vYnNvbGV0ZS9QX0xBU1RfS0lMTEVSCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjI3ZWVhOGYKLS0tIC9kZXYvbnVsbAorKysgYi9kb2MvcHJvcHMvb2Jzb2xldGUvUF9MQVNUX0tJTExFUgpAQCAtMCwwICsxLDIwIEBACisqKioqKioqKioqKioqKioqKioqKiogVkVSQUxURVRFIFBST1BFUlRZICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorKiBEaWVzZSBQcm9wZXJ0eSBpc3QgdmVyYWx0ZXQgdW5kIHdpcmQgYmFsZCBhdXMgZGVyIE11ZGxpYiBlbnRmZXJudC4gICoKKyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisKK05BTUU6CisgICAgUF9MQVNUX0tJTExFUiAgICAgICAgICAgICAgICAgImxhc3Rfa2lsbGVyIiAgICAgICAgICAgICAgICAgCisKK0RFRklOSUVSVCBJTjoKKyAgICAvc3lzL3BsYXllci5oCisKK0JFU0NIUkVJQlVORzoKKyAgICAgTGV0enRlciBNb2VyZGVzIGRlcyBXZXNlbnMuCisgICAgIERpZXNlIFByb3BlcnR5IHd1cmRlIG51ciBpbiBTcGllbGVybiBnZXNldHp0IHVuZCBhdWNoIGRhbm4gbmljaHQgaW1tZXIuCisgICAgIEJpdHRlIHN0YXR0ZGVzc2VuIFBfS0lMTEVSIGFiZnJhZ2VuLCB3ZWxjaGUgaW4gTlBDIHVuZCBTcGllbGVybiBnZXNldHp0CisgICAgIHdpcmQuCisKK1NJRUhFIEFVQ0g6CisgICAgUF9LSUxMRVIsIGRpZSgpCisKKzA1LjA5LjIwMDgsIFplc3N0cmEKZGlmZiAtLWdpdCBhL2RvYy9wcm9wcy9vYnNvbGV0ZS9QX0xBU1RfUEVBQ0VfVElNRSBiL2RvYy9wcm9wcy9vYnNvbGV0ZS9QX0xBU1RfUEVBQ0VfVElNRQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi43NjIyMzNlCi0tLSAvZGV2L251bGwKKysrIGIvZG9jL3Byb3BzL29ic29sZXRlL1BfTEFTVF9QRUFDRV9USU1FCkBAIC0wLDAgKzEsMjcgQEAKKyoqKioqKioqKioqKioqKioqKioqKiBWRVJBTFRFVEUgUFJPUEVSVFkgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisqIERpZXNlIFByb3BlcnR5IGlzdCB2ZXJhbHRldCB1bmQgd2lyZCBiYWxkIGF1cyBkZXIgTXVkbGliIGVudGZlcm50LiAgKgorKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKK1BST1BFUlRZCisKKwlQX0xBU1RfUEVBQ0VfVElNRQkibGFzdF9wZWFjZV90aW1lIgorCitERUZJTklFUlQgSU4KKworCS9zdGQvbGl2aW5nL2NvbWJhdC5jCisKK0JFU0NIUkVJQlVORworCisJRGllc2UgUHJvcGVydHkgZ2lidCBhbiwgd2FubiB6dWxldHp0IHZlcnN1Y2h0IHd1cmRlLCBlaW5lbiBOUEMgenUKKwliZWZyaWVkZW4uIEJpdHRlIG5hY2ggTW9lZ2xpY2hrZWl0IG51ciBsZXNlbmQgdmVyd2VuZGVuLiBEZXMgd2VpdGVyZW4KKwl3aXJkIHNpZSBudXIgaW0gdWVibGljaGVuIFZlcmhhbHRlbiB2b24gUXVlcnlQYWNpZnkgZ2VzZXR6dCwgdW5kIG51cgorCWRhbm4sIHdlbm4gUF9BQ0NFUFRfUEVBQ0UgbmljaHQgZ2VzZXR6dCBpc3QuCisKK1NJRUhFIEFVQ0gKKworCVF1ZXJ5UGFjaWZ5LCBQX0FDQ0VQVF9QRUFDRQorCitMRVRaVEUgQUVOREVSVU5HCisKKwkyMDA0LTAzLTE3LCAxNDozMCB2b24gSHVtbmkKKwkKKwpkaWZmIC0tZ2l0IGEvZG9jL3Byb3BzL29ic29sZXRlL1BfTE9HX0ZJTEUgYi9kb2MvcHJvcHMvb2Jzb2xldGUvUF9MT0dfRklMRQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4xZWFmZTQwCi0tLSAvZGV2L251bGwKKysrIGIvZG9jL3Byb3BzL29ic29sZXRlL1BfTE9HX0ZJTEUKQEAgLTAsMCArMSw0NSBAQAorKioqKioqKioqKioqKioqKioqKioqIFZFUkFMVEVURSBQUk9QRVJUWSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyogRGllc2UgUHJvcGVydHkgd2lyZCBuaWNodCBtZWhyIGF1c2dld2VydGV0LiAgICAgICAgICAgICAgICAgICAgICAgICAqCisqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorTkFNRToKKyAgICBQX0xPR19GSUxFICAgICAgICAgICAgICAgICAgICJsb2dfZmlsZSIKKworREVGSU5JRVJUIElOOgorICAgIC9zeXMvdGhpbmcvcHJvcGVydGllcy5oCisKK0JFU0NIUkVJQlVORzoKKyAgICBFbnRoYWVsdCBlaW5lbiBTdHJpbmcgYXVmIGVpbmVuIEZpbGVuYW1lbi4gCisKKyAgICBXZXJkZW4genUgZGVtIE9iamVrdCAoUmF1bSwgTW9uc3RlciwgLi4uKSBGZWhsZXJtZWxkdW5nZW4gYWJnZXNldHp0LCAKKyAgICB3ZXJkZW4gZGllc2UgaW4gZGFzIGFuZ2VnZWJlbmUgRmlsZSB1bWdlbGVpdGV0LiBEaWUgRWludHJhZ3VuZyBpbgorICAgIGRpZSBwZXIgRGVmYXVsdCBmdWVyIEZlaGxlcm1lbGR1bmdlbiB2b3JnZXNlaGVuZW4gRGF0ZWllbiBlcmZvbGd0CisgICAgbmljaHQuCisKK0JFTUVSS1VOR0VOOgorICAgIFBfTE9HX0ZJTEUgd2lyZCBhdXNnZXdlcnRldCB3aWUgbG9nX2ZpbGUoKS4KKworICAgIERhcyBoZWlzc3QsIGVzIHdpcmQgQVVGIEpFREVOIEZBTEwgbmFjaCAvbG9nIGdlc2NocmllYmVuIQorCisgICAgRGlyZWt0IGluIC9sb2cga2FubiBOSUNIVCBnZXNjaHJpZWJlbiB3ZXJkZW4sIGVzIG11c3MgYWxzbyBlaW4gCisgICAgVW50ZXJ2ZXJ6ZWljaG5pcyBtaXQgRXVyZW0gTWFnaWVybmFtZW4gdm9yaGFuZGVuIHNlaW4uCisKK0JFSVNQSUVMRToKKyAgICBTZXRQcm9wKFBfTE9HX0ZJTEUsInRpbGx5X2xvZyIpOyAgICAgICAgICAvLyBGQUxTQ0gsIGVzIHd1ZXJkZSB2ZXJzdWNodCwgCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGFzIEZpbGUgL2xvZy90aWxseV9sb2cgCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYW56dWxlZ2VuCisgICAgU2V0UHJvcChQX0xPR19GSUxFLCIvbG9nL3RpbGx5X2xvZyIpOyAgICAgLy8gRkFMU0NILCBlcyB3dWVyZGUgdmVyc3VjaHQsIAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRhcyBGaWxlIC9sb2cvbG9nL3RpbGx5X2xvZworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFuenVsZWdlbgorICAgIFNldFByb3AoUF9MT0dfRklMRSwiL2QvZWJlbmUvdGlsbHlfbG9nIik7IC8vIEZBTFNDSCwgcy5vLgorCisgICAgU2V0UHJvcChQX0xPR19GSUxFLCJ0aWxseS90aWxseV9sb2ciKTsgICAgLy8gUklDSFRJRyEKKworICAgIEltIGxldHp0ZW4gQmVpc3BpZWwgd2VyZGVuIGFsbGUgRWludHJhZWdlIGluIGRhcyBGaWxlIHRpbGx5X2xvZyBnZS0KKyAgICBzY2hyaWViZW4sIGRhcyBzaWNoIGltIFZlcnplaWNobmlzIC9sb2cvdGlsbHkvIGJlZmluZGV0LgorCisgICAgRGFzIFVudGVydmVyemVpY2huaXMgL3RpbGx5IGluIC9sb2cgbXVzcyB6dXZvciBhbmdlbGVndCB3ZXJkZW4uCisKK1NJRUhFIEFVQ0g6CisgICAgUF9MT0dfSU5GTywgd3JpdGVfZmlsZSgpLCBsb2dfZmlsZSgpLAorCitMZXR6dGUgQWVuZGVydW5nOiAxMy4wOS4wNCBUaWxseUBNb3JnZW5HcmF1ZW4KZGlmZiAtLWdpdCBhL2RvYy9wcm9wcy9vYnNvbGV0ZS9QX05FWFRfU1BFTExfVElNRSBiL2RvYy9wcm9wcy9vYnNvbGV0ZS9QX05FWFRfU1BFTExfVElNRQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi40NzQyNDU2Ci0tLSAvZGV2L251bGwKKysrIGIvZG9jL3Byb3BzL29ic29sZXRlL1BfTkVYVF9TUEVMTF9USU1FCkBAIC0wLDAgKzEsMzAgQEAKKyoqKioqKioqKioqKioqKioqKioqKiBWRVJBTFRFVEUgUFJPUEVSVFkgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisqIERpZXNlIFByb3BlcnR5IGlzdCB2ZXJhbHRldC4gQml0dGUgbmljaHQgbWVociBpbiBuZXVlbSBDb2RlIG51dHplbi4gKgorKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKworTkFNRToKKyAgICBQX05FWFRfU1BFTExfVElNRSAgICAgICAgICAgICAibmV4dF9zcGVsbCIKKworREVGSU5JRVJUIElOOgorICAgIC9zeXMvbmV3X3NraWxscy5oCisKK0JFU0NIUkVJQlVORzoKKyAgICBXYW5uIGthbm4gZGFzIG5hZWNoc3RlIE1hbCBnZXphdWJlcnQgd2VyZGVuPworICAgIERpZXMgaXN0IGVpbmUgZ2xvYmFsZSBTcHJ1Y2hlcm11ZWR1bmcvLVNwZXJyZS4KKyAgICBGbGV4aWJsZXJlIFNwZXJyZW4ga29lbm5lbiBtaXR0ZWxzIFNldFNwZWxsRmF0aWd1ZS9DaGVja1NwZWxsRmF0aWd1ZSgpCisgICAgdmVyd2FsdGV0IHdlcmRlbi4KKworICAgIERpZXNlIFByb3BlcnR5IGlzdCBrZWluZSBlY2h0ZSBQcm9wZXJ0eSwgc29uZGVybiBsaWVmZXJ0IG51ciBkYXMKKyAgICBFcmdlYm5pcyB2b24gdm9uIENoZWNrU3BlbGxGYXRpZ3VlKCkgenVydWVjayBiencuIHJ1ZnQgYmVpbSBTZXR6ZW4KKyAgICBTZXRTcGVsbEZhdGlndWUoPHNwcnVjaHNwZXJyZT4sIDApIGF1Zi4KKyAgICBEaWVzZSBQcm9wIHNvbGx0ZSBfbmljaHRfIG1pdHRlbHMgUXVlcnktIG9kZXIgU2V0bWV0aG9kZW4gbWFudXB1bGllcnQKKyAgICB3ZXJkZW4sIGRhIHNvbnN0IElua29uc2lzdGVuemVuIHp1bSBFcmdlYm5pcyB2b24gQ2hlY2tTcGVsbEZhdGlndWUoKQorICAgIGF1ZnRyZXRlbi4KKworU0lFSEUgQVVDSDoKKyAgICBTZXRTcGVsbEZhdGlndWUoTCksIENoZWNrU3BlbGxGYXRpZ3VlKEwpCisgICAgc3BydWNoZXJtdWVkdW5nCisKK1pVTEVUWlQgR0VBZU5ERVJUOgorMTQuMDMuMjAxMCwgWmVzc3RyYQorCmRpZmYgLS1naXQgYS9kb2MvcHJvcHMvb2Jzb2xldGUvUF9SRUFEX01TRyBiL2RvYy9wcm9wcy9vYnNvbGV0ZS9QX1JFQURfTVNHCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjVjNzlmZGMKLS0tIC9kZXYvbnVsbAorKysgYi9kb2MvcHJvcHMvb2Jzb2xldGUvUF9SRUFEX01TRwpAQCAtMCwwICsxLDMyIEBACisqKioqKioqKioqKioqKioqKioqKiogVkVSQUxURVRFIFBST1BFUlRZICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorKiBEaWVzZSBQcm9wZXJ0eSBpc3QgdmVyYWx0ZXQuIEJpdHRlIG5pY2h0IG1laHIgaW4gbmV1ZW0gQ29kZSBudXR6ZW4uICoKKyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCitOQU1FOgorICAgIFBfUkVBRF9NU0cgICAgICAgICAgICAgICAgInJlYWRfbXNnIiAgICAgICAgICAgICAgICAKKworREVGSU5JRVJUIElOOgorICAgIC9zeXMvcHJvcGVydGllcy5oCisKK0JFU0NIUkVJQlVORzoKKyAgICBEaWVzZSBQcm9wZXJ0eSBpc3QgdmVyYWx0ZXQuIElocmUgRnVua3Rpb24gd2lyZCB2b24KKyAgICBBZGRSZWFkRGV0YWlsKFNFTlNFX0RFRkFVTFQsIC4uLikgdWViZXJub21tZW4uCisgICAgCisgICAgSGllciBrb2VubmVuIEluZm9ybWF0aW9uZW4gZ2VzcGVpY2hlcnQgd2VyZGVuLCBkaWUgYmVpbSBMZXNlbgorICAgIGRlcyBPYmpla3RlcyBhdXNnZWdlYmVuIHdlcmRlbi4KKyAgICAgCisgICAgRnVlciBkYXMgSWRlbnRpZml6aWVyZW4gZGVzIHp1IGxlc2VuZGVuIE9iamVrdGVzIHdpcmQgZGVyIGdsZWljaGUKKyAgICBNZWNoYW5pc211cyBiZW51dHp0IHdpZSBmdWVyIGxlc2JhcmUgdW5kIGFuZGVyZSBEZXRhaWxzLgorCisgICAgRGllIEJlbnV0enVuZyB2b24gcHJvY2Vzc19zdHJpbmcoKSBpc3QgaW4gZGllc2VyIFByb3AgbmljaHQgbWVociBlcmxhdWJ0LgorCitCRUlTUElFTDoKKyAgICBBZGRJZCgoeyJyb2xsZSIsICJzY2hyaWZ0cm9sbGUifSkpOworICAgIFNldFByb3AoUF9SRUFEX01TRywKKyAgICAgICAiRHUgb2VmZm5lc3QgZGllIFJvbGxlIHVuZCBsaWVzdDogTE9SRU0gSVBTVU0gLi4uXG4iKTsKKyAgICAgCitTSUVIRSBBVUNIOgorICAgIERldGFpbHM6ICAgQWRkUmVhZERldGFpbCgpLCBSZW1vdmVSZWFkRGV0YWlsKCksIFBfUkVBRF9ERVRBSUxTCisgICAgU29uc3RpZ2VzOiBicmVha19zdHJpbmcoKQorCiswOS4xMi4yMDEyLCBaZXNzdHJhCisKZGlmZiAtLWdpdCBhL2RvYy9wcm9wcy9vYnNvbGV0ZS9QX1RFQ0hOSVFVRSBiL2RvYy9wcm9wcy9vYnNvbGV0ZS9QX1RFQ0hOSVFVRQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4xNjU3MDI3Ci0tLSAvZGV2L251bGwKKysrIGIvZG9jL3Byb3BzL29ic29sZXRlL1BfVEVDSE5JUVVFCkBAIC0wLDAgKzEsNDQgQEAKKyoqKioqKioqKioqKioqKioqKioqKiBVTkdFTlVUWlRFIFBST1BFUlRZICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisqIERpZXNlIFByb3BlcnR5IHdpcmQgdm9uIGRlciBNdWRsaWIgTklDSFQgYXVzZ2V3ZXJ0ZXQgdW5kIGthbm4gICAgICAgKgorKiBhbHMgdmVyYWx0ZXQgZ2VsdGVuLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoKKyogTW9tZW50YW4gaXN0IGF1Y2gga2VpbmUgR2lsZGUgYmVrYW5udCwgZGllIG1laHIgbWFjaHQsIGFscyBzaWUgICAgICAqCisqIGF1c3p1Z2ViZW4uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKgorKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKK05BTUU6CisJUF9URUNITklRVUUJCQkJInRlY2huaXF1ZSIKKworREVGSU5JRVJUIElOOgorCS9zeXMvd2VhcG9uLmgKKworQkVTQ0hSRUlCVU5HOgorICAgICAgICBEaWUgVGVjaG5payhlbiksIG1pdCBkZW5lbiBlaW5lIFdhZmZlIGltIEthbXBmIGVpbmdlc2V0enQgd2VyZGVuCisgICAgICAgIGthbm4uIEZvbGdlbmRlIFRlY2huaWtlbiBzdGVoZW4genVyIFZlcmZ1ZWd1bmc6CisKKyAgICAgICAgICAgICAgICBUUV9TVFJPS0UgICAgICAgU3RyZWljaHRlY2huaWsKKyAgICAgICAgICAgICAgICBUUV9USFJBU0ggICAgICAgU2NobGFndGVjaG5paworICAgICAgICAgICAgICAgIFRRX1RIUlVTVCAgICAgICBTdG9zc3RlY2huaWsKKyAgICAgICAgICAgICAgICBUUV9XSElQICAgICAgICAgUGVpdHNjaHRlY2huaWsKKworICAgICAgICBEaWUgVGVjaG5pa2VuIHNpbmQgZWJlbmZhbGxzIGluIDx3ZWFwb24uaD4gZGVmaW5pZXJ0IHVuZCBhdWYgZGVyCisgICAgICAgIG1hbi1wYWdlICd0ZWNobmlrZW4nIG5hZWhlciBlcmxhZXV0ZXJ0LgorCitCRU1FUktVTkdFTjoKKyAgICAgICAgTWFuIGthbm4gZWluZXIgV2FmZmUgZWluZSBvZGVyIG1laHJlcmUgVGVjaG5pa2VuIHp1d2Vpc2VuLgorCitCRUlTUElFTEU6CisgICAgICAgIGEpIEVpbmUgV2FmZmUsIGRpZSBudXIgbWl0IGVpbmVyIFBlaXRzY2h0ZWNobmlrIGVpbmdlc2V0enQgd2lyZCwKKyAgICAgICAgICAgYWxzbyB0eXBpc2NoZXJ3ZWlzZSBlaW5lIFBlaXRzY2hlLCBhYmVyIGF1Y2ggZWluIE1vcmdlbnN0ZXJuOgorCisgICAgICAgICAgICBTZXRQcm9wKFBfVEVDSE5JUVVFLFRRX1dISVApOworCisgICAgICAgIGIpIEVpbmUgV2FmZmUsIGRpZSBzb3dvaGwgbWl0IGRlciBTY2hsYWctIGFscyBhdWNoIGRlciBTdG9zc3RlY2huaWsKKyAgICAgICAgICAgZWluZ2VzZXR6dCB3aXJkLCBhbHNvIHouQi4gZWluZSBIZWxsZWJhcmRlOgorCisgICAgICAgICAgICBTZXRQcm9wKFBfVEVDSE5JUVVFLCh7VFFfVEhSQVNILFRRX1RIUlVTVH0pKTsKKworU0lFSEUgQVVDSDoKKyAgICAgICAgdGVjaG5pa2VuLCBQX0JBTEFOQ0VEX1dFQVBPTiwgL3N0ZC93ZWFwb24vY29tYmF0LmMKKworTEVUWlRFIEFlTkRFUlVORzoKKzE1LjAyLjIwMDksIFplc3N0cmEKKwpkaWZmIC0tZ2l0IGEvZG9jL3Byb3BzL29ic29sZXRlL1BfVE1QX0FUVEFDS19IT09LIGIvZG9jL3Byb3BzL29ic29sZXRlL1BfVE1QX0FUVEFDS19IT09LCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmJkYzgxNTIKLS0tIC9kZXYvbnVsbAorKysgYi9kb2MvcHJvcHMvb2Jzb2xldGUvUF9UTVBfQVRUQUNLX0hPT0sKQEAgLTAsMCArMSw3MyBAQAorKioqKioqKioqKioqKioqKioqKioqIFZFUkFMVEVURSBQUk9QRVJUWSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyogRGllc2UgUHJvcGVydHkgaXN0IHZlcmFsdGV0LiBCaXR0ZSBuaWNodCBtZWhyIGluIG5ldWVtIENvZGUgbnV0emVuLiAqCisqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorUF9UTVBfQVRUQUNLX0hPT0sKKworTkFNRToKKyAgICBQX1RNUF9BVFRBQ0tfSE9PSyAgICAgICAgICAgICAiYXR0YWNrX2hvb2siCisKK0RFRklOSUVSVCBJTjoKKyAgICAvc3lzL25ld19za2lsbHMuaAorCitCRVNDSFJFSUJVTkc6CisgICAgIE1pdHRlbHMgZGllc2VyIFByb3BlcnR5IGtvZW5uZW4gZGllIEF0dGFja2VuIGVpbmVzIExpdmluZ3MgZ2dmLgorICAgICBhYmdlYnJvY2hlbiB3ZXJkZW4gbm9jaCBiZXZvciBXYWZmZW4gb2RlciBTa2lsbHMgenVtIGF1c2dld2VydGV0CisgICAgIHd1cmRlbi4KKworICAgICBFcyB3aXJkIGFuIGRlbSBMaXZpbmcgZGllIFByb3BlcnR5IGFscyBtaW5kZXN0ZW5zIDMtZWxlbWVudGlnZXMgQXJyYXk6CisgICAgICh7emVpdHB1bmt0LCBvYmpla3QsIG1ldGhvZGUsIC4uLn0pCisgICAgIGdlc2V0enQgdW5kIGRpZSBNZXRob2RlICdtZXRob2RlJyB3aXJkIGRhbm4gd2FlaHJlbmQgZGVzIEF0dGFjaygpIGRlcworICAgICBMZWJld2VzZW5zIGluICdvYmpla3QnIGF1ZmdlcnVmZW4sIHNvbGFuZ2UgdGltZSgpPCd6ZWl0cHVua3QnLgorCisgICAgIERlciBNZXRob2RlIHdpcmQgYWxzIFBhcmFtZXRlciBkZXIgR2VnbmVyIHVlYmVyZ2ViZW4uCisKKyAgICAgR2lidCBkaWUgTWV0aG9kZSAwIGFscyBSdWVja2dhYmV3ZXJ0IHp1cnVlY2ssIHdpcmQgZGllIEF0dGFja2Ugc29mb3J0CisgICAgIGtvbW1lbnRhcmxvcyBhYmdlYnJvY2hlbi4KKworQkVNRVJLVU5HRU46CisgICAgIC0gQml0dGUgZGFzIG5ldWVyZSBIb29rc3lzdGVtIChzLiBNYW5wYWdlIHN0ZC9ob29rcykgYmVudXR6ZW4uCisgICAgIC0gZmFsbHMgZGllIFplaXQgYWJnZWxhdWZlbiBvZGVyIGRhcyBPYmpla3QgemVyc3RvZXJ0IGlzdCwgd2lyZCBkaWUKKyAgICAgICBQcm9wZXJ0eSBhdWYgMCBnZXNldHp0CisgICAgIC0gdm9yIGRlbSBTZXR6ZW4gaW1tZXIgYXVmIGRpZSBFeGlzdGVueiBlaW5lcyBndWVsdGlnZW4gSG9va3MKKyAgICAgICBwcnVlZmVuLCBlaW5mYWNoZXMgVWViZXJzY2hyZWliZW4gZnVlaHJ0IGVpbmVyc2VpdHMgenUgRmVobGVybgorICAgICAgIGltIENvZGUgYW5kZXJlciB1bmQgaXN0IGFuZGVyZXJzZWl0cyB1bmZhaXIgZ2VnZW51ZWJlciBpaG5lbgorCitCRUlTUElFTEU6CisgICAgICoqKiBkZXIgU3BpZWxlciBlcmhhZWx0IGVpbmUgVmVyd3VuZHVuZywgZGllIGlobiBtYW5jaG1hbCBiZWhpbmRlcnQgKioqCisgICAgIGlmKCFwb2ludGVycCh0bXA9VFAtPlF1ZXJ5UHJvcChQX1RNUF9BVFRBQ0tfSE9PSykpIHx8CisgICAgICAgIHNpemVvZih0bXApPDMgfHwgdG1wWzBdPD10aW1lKCkpIHsKKyAgICAgICBUUC0+U2V0UHJvcChQX1RNUF9BVFRBQ0tfSE9PSywKKwkJICAgKHt0aW1lKCkrMzYwMCwgdGhpc19vYmplY3QoKSwgInRlc3RfaHVydCJ9KSk7CisgICAgIC4uLgorCisgICAgIC8vIGRpZSBlbnRzcHJlY2hlbmRlIE1ldGhvZGUsIGRpZSBiZWkgamVkZW0gQW5ncmlmZiB1ZWJlciBBdHRhY2soKQorICAgICAvLyBnZXJ1ZmVuIHdpcmQgLi4uCisgICAgIGludCB0ZXN0X2h1cnQob2JqZWN0IGVuZW15KSB7CisKKyAgICAgICAvLyBtaXQgMTAlIENoYW5jZSBnZW5lcmVsbCB1bmQgMjAlIENoYW5jZSBiZWkgZ3JvZXNzZXJlbiBHZWduZXJuCisgICAgICAgLy8gYnJpY2h0IGRlciBBbmdyaWZmIGFiIC4uLiBwcmV2aW91c19vYmplY3QoKSBpc3QgbmF0dWVybGljaAorICAgICAgIC8vIGRlciBBbmdyZWlmZXIKKyAgICAgICBpZighcmFuZG9tKDEwKSB8fAorICAgICAgICAgIChlbmVteS0+UXVlcnlQcm9wKFBfU0laRSk+cHJldmlvdXNfb2JqZWN0KCktPlF1ZXJ5UHJvcChQX1NJWkUpICYmCisgICAgICAgICAgICFyYW5kb20oNSkpIHsKKworICAgICAgICAgIHRlbGxfb2JqZWN0KHByZXZpb3VzX29iamVjdCgpLAorICAgICAgICAgICAgIkRlaW5lIFd1bmRlIHNjaG1lcnp0IGRpY2ggenUgc2VociB1bSBhbnp1Z3JlaWZlbi5cbiIpOworICAgICAgICAgIHRlbGxfcm9vbShlbnZpcm9ubWVudChwcmV2aW91c19vYmplY3QoKSksCisgICAgICAgICAgICBwcmV2aW91c19vYmplY3QoKS0+TmFtZShXRVIsMSkrIiB6dWNrdCB2b3IgU2NobWVyemVuIHp1c2FtbWVuLlxuIiwKKyAgICAgICAgICAgICh7cHJldmlvdXNfb2JqZWN0KCl9KSk7CisgICAgICAgICAgcmV0dXJuIDA7CisgICAgICAgfQorCisgICAgICAgLy8gYW5zb25zdGVuIGdlaHQgZGVyIEFuZ3JpZmYgd2VpdGVyCisgICAgICAgcmV0dXJuIDE7CisgICAgIH0KKworU0lFSEUgQVVDSDoKKyAgICAgQW5ncmlmZjoJQXR0YWNrKEwpCisgICAgIFNjaHV0ejogICAgRGVmZW5kKEwpCisgICAgIFZlcndhbmR0OiAgSW50ZXJuYWxNb2RpZnlBdHRhY2soTCksIFBfVE1QX0FUVEFDS19NT0QJCisgICAgIEhvb2tzOglQX1RNUF9ESUVfSE9PSywgUF9UTVBfTU9WRV9IT09LLCBQX1RNUF9ERUZFTkRfSE9PSworICAgICBuZXVlIEhvb2tzOiBzdGQvaG9va3MKKworMDguMTIuMjAwOCwgWmVzc3RyYQpkaWZmIC0tZ2l0IGEvZG9jL3Byb3BzL29ic29sZXRlL1BfVE1QX0FUVEFDS19NT0QgYi9kb2MvcHJvcHMvb2Jzb2xldGUvUF9UTVBfQVRUQUNLX01PRApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4zNDkxYzBjCi0tLSAvZGV2L251bGwKKysrIGIvZG9jL3Byb3BzL29ic29sZXRlL1BfVE1QX0FUVEFDS19NT0QKQEAgLTAsMCArMSwxMTIgQEAKKyoqKioqKioqKioqKioqKioqKioqKiBWRVJBTFRFVEUgUFJPUEVSVFkgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisqIERpZXNlIFByb3BlcnR5IGlzdCB2ZXJhbHRldC4gQml0dGUgbmljaHQgbWVociBpbiBuZXVlbSBDb2RlIG51dHplbi4gKgorKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKK1BfVE1QX0FUVEFDS19NT0QKKworTkFNRToKKyAgICAgUF9UTVBfQVRUQUNLX01PRCAgICAgICAgICAgICAgImF0dGFja19tb2QiCisKK0RFRklOSUVSVCBJTjoKKyAgICAgL3N5cy9uZXdfc2tpbGxzLmgKKworQkVTQ0hSRUlCVU5HOgorICAgICBNaXR0ZWxzIGRpZXNlciBQcm9wZXJ0eSBrb2VubmVuIGRpZSBBdHRhY2tlbiBlaW5lcyBMaXZpbmdzIHRlbXBvcmFlcgorICAgICB2ZXJhZW5kZXJ0IHdlcmRlbi4KKworICAgICBFcyB3aXJkIGFuIGRlbSBMaXZpbmcgZGllIFByb3BlcnR5IGFscyBtaW5kZXN0ZW5zIDMtZWxlbWVudGlnZXMgQXJyYXkKKyAgICAgKHt6ZWl0cHVua3QsIG9iamVrdCwgbWV0aG9kZSwgLi4ufSkKKyAgICAgZ2VzZXR6dCB1bmQgZGllIE1ldGhvZGUgJ21ldGhvZGUnIHdpcmQgZGFubiB3YWVocmVuZCBkZXMgQXR0YWNrKCkgZGVzCisgICAgIExlYmV3ZXNlbnMgaW4gJ29iamVrdCcgYXVmZ2VydWZlbiwgc29sYW5nZSB0aW1lKCk8J3plaXRwdW5rdCcuCisKKyAgICAgRGVyIE1ldGhvZGUgd2lyZCBiZWltIEF1ZnJ1ZiBlaW4gS29waWUgZGVzIE1hcHBpbmdzIHVlYmVyZ2ViZW4sIGluIGRlbQorICAgICBkaWUgYmlzaGVyaWdlbiBXZXJ0ZSBkZXMgQW5ncmlmZmVzIHZlcm1lcmt0IHNpbmQuCisgICAgIEF1ZmJhdSB2b24gTWFwcGluZyAnYWluZm8nOgorICAgICAoWyBTSV9FTkVNWSA6ICAgICAgICAgICBvYmplY3QgQW5ncmVpZmVyLAkJCSgtPiBEZWZlbmQpCisgICAgICAgIFNJX1NQRUxMIDogICAgICAgICAgIDAvMS9hcnJheSBTcGVsbHBhcmFtZXRlciwJCSgtPiBEZWZlbmQpCisgICAgICAgIFBfV0VBUE9OIDogICAgICAgICAgIC0gb2RlciBXYWZmZSwKKyAgICAgICAgU0lfU0tJTExEQU1BR0VfTVNHOiAgc3RyaW5nIEFuZ3JpZmZzbWVsZHVuZ3NlbmRlIGFuIFJhdW0sCisgICAgICAgIFNJX1NLSUxMREFNQUdFX01TRzI6IHN0cmluZyBBbmdyaWZmc21lbGR1bmdzZW5kZSBhbiBLYWVtcGZlbmRlLAorICAgICAgICBTSV9TS0lMTERBTUFHRTogICAgICBpbnQgU2NoYWRlbiBpbiBaZWhudGVsIEhQIChTa2lsbHMgYmlzIGF1ZiBSYXNzZQorCQkJICAgICBkcmluISkJCQkJKC0+IERlZmVuZCksCisgICAgICAgIFNJX1NLSUxMREFNQUdFX1RZUEU6IHN0cmluZy9zdHJpbmcqIFNjaGFkZW5zdHlwZW4sCSgtPiBEZWZlbmQpCisgICAgICAgIFBfV0VBUE9OX1RZUEU6ICAgICAgIHN0cmluZyBXYWZmZW50eXAgKGNvbWJhdC5oKSwKKyAgICAgICAgUF9XQzoJCSAgICAgLSBvZGVyIGludCBXQyBkZXIgV2FmZmUvSGFuZCwKKyAgICAgICAgUF9OUl9IQU5EUzoJICAgICAtIG9kZXIgaW50IEhhbmRzIGRlciBXYWZmZS9IYW5kLAorICAgICBdKTsKKworICAgICBHaWJ0IGRpZSBNZXRob2RlOgorICAgICAtIDAgb2RlciBrZWluIE1hcHBpbmcgenVydWVjaywgZnVlaHJ0IGRhcyB6dW0gQWJicnVjaCBkZXIgQXR0YWNrZQorICAgICAgIC0+IGRhIGluendpc2NoZW4gV2FmZmVuIGFiZ2VmcmFndCB3dXJkZW4sIGtvZW5uZW4gc2Nob24gTWVsZHVuZ2VuCisgICAgICAgICAgdm9uIGRpZXNlbiBhdXNnZWdlYmVuIHdvcmRlbiBzZWluCisgICAgIC0gZWluIGxlZXJlcyBNYXBwaW5nICggKFtdKSApIHp1cnVlY2ssIGZ1ZWhydCBkYXMgenUga2VpbmVyIE1vZGlmaWthdGlvbgorICAgICAtIGVpbiBNYXBwaW5nIG1pdCB2ZXJhZW5kZXJ0ZW4gV2VydGVuIHp1cnVlY2ssIHdlcmRlbiBkaWVzZSBpbiBkYXMKKyAgICAgICBBbmdyaWZmc21hcHBpbmcga29waWVydAorICAgICAgIERpZSBnZWFlbmRlcnRlbiBXZXJ0ZSB3ZXJkZW4gdGVpbHdlaXNlIHZvbiBTa2lsbFJlc1RyYW5zZmVyKCkgaW4KKyAgICAgICBkZW4gZWlnZW50bGljaGVuIEFuZ3JpZmYgdWViZXJub21tZW4uCisKK0JFTUVSS1VOR0VOOgorICAgICAtIGZhbGxzIGRpZSBaZWl0IGFiZ2VsYXVmZW4gb2RlciBkYXMgT2JqZWt0IHplcnN0b2VydCBpc3QsIHdpcmQgZGllCisgICAgICAgUHJvcGVydHkgYXVmIDAgZ2VzZXR6dAorICAgICAtIHZvciBkZW0gU2V0emVuIGltbWVyIGF1ZiBkaWUgRXhpc3RlbnogZWluZXMgZ3VlbHRpZ2VuIE1vZGlmaWVycworICAgICAgIHBydWVmZW4sIGVpbmZhY2hlcyBVZWJlcnNjaHJlaWJlbiBmdWVocnQgZWluZXJzZWl0cyB6dSBGZWhsZXJuCisgICAgICAgaW0gQ29kZSBhbmRlcmVyIHVuZCBpc3QgYW5kZXJlcnNlaXRzIHVuZmFpciBnZWdlbnVlYmVyIGlobmVuCisKK0JFSVNQSUVMRToKKyAgICAgKioqIGVpbiBiZXNvbmRlciBoZWlzc2VyIFNlZ2VuIG1vZGlmaXppZXJ0IGRpZSBBdHRhY2tlbiBkZXMgU3BpZWxlcnMgKioqCisgICAgIGludCBhY3Rpb25fc2VnZW4oKSB7CisgICAgICAgLi4uCisgICAgICAgbWl4ZWQgKnRtcDsKKworICAgICAgIC8vIHBydWVmZW4sIG9iIG5pY2h0IGVpbiBhbmRlcmVyIE1vZGlmaWVyIGV4aXN0aWVydAorICAgICAgIGlmKCFwb2ludGVycCh0bXA9VFAtPlF1ZXJ5UHJvcChQX1RNUF9BVFRBQ0tfTU9EKSkgfHwKKyAgICAgICAgICBzaXplb2YodG1wKTwzIHx8IHRtcFswXTw9dGltZSgpKSB7CisKKyAgICAgICAgIG9iamVjdCB3aWVsZDsKKyAgICAgICAgIHdpZWxkPVRQLT5RdWVyeVByb3AoUF9XRUFQT04pOworCisgICAgICAgICB3cml0ZShicmVha19zdHJpbmcoCisgICAgICAgICAgICJEZXIgUHJpZXN0ZXIgZGVyIEZsYW1tZSB3ZWlodCAiKworICAgICAgICAgICAod2llbGQ/d2llbGQtPm5hbWUoV0VOLDEpOiJkZWluZSBIYWVuZGUiKSsiLiIsIDc4KSk7CisKKyAgICAgICAgIC8vIHNldHplbiBkZXMgTW9kaWZpZXJzIC4uIDMwLTQwIFNla3VuZGVuIGd1ZWx0aWcKKyAgICAgICAgIFRQLT5TZXRQcm9wKFBfVE1QX0FUVEFDS19NT0QsCisJICAgICAgICAgICAgICAoe3RpbWUoKSszMCtyYW5kb20oMTApLCB0aGlzX29iamVjdCgpLCAibW9kZnVuIn0pKTsKKyAgICAgICAgfSBlbHNlIC4uLgorICAgICAgICAuLi4KKyAgICAgIHJldHVybiAxOworICAgICB9CisKKyAgICAgLy8gZGllIGVpZ2VudGxpY2ggTWV0aG9kZSwgZGllIHdhZWhyZW5kIGRlcyBBbmdyaWZmcyBnZXJ1ZmVuIHdpcmQKKyAgICAgbWFwcGluZyBtb2RmdW4obWFwcGluZyBhaW5mbykgeworICAgICAgIG1hcHBpbmcgcmV0OworCisgICAgICAgLy8gUmV0dXJud2VydCBpc3QgaW1tZXIgZWluIE1hcHBpbmcsIGRhbWl0IGRpZSBBdHRhY2tlIHdlaXRlcmdlaHQKKyAgICAgICByZXQ9bV9hbGxvY2F0ZSgwLDEpOworCisgICAgICAgLy8gbWFnaXNjaGUgV2FmZmVuIG9kZXIgU3BydWVjaGUgd2VyZGVuIG5pY2h0IHZlcmJlc3NlcnQKKyAgICAgICBpZihhaW5mb1tQX1dFQVBPTl9UWVBFXSE9V1RfTUFHSUMpIHsKKyAgICAgICAgIC8vIHNvbnN0IFZlcmJlc3NlcnVuZ2VuIC4uLiBGZXVlciBhZGRpZXJlbiAuLi4KKyAgICAgICAgIHJldFtTSV9TS0lMTERBTUFHRV9UWVBFXT0oYWluZm9bU0lfU0tJTExEQU1BR0VfVFlQRV18fCh7fSkpKworCQkJCSh7RFRfRklSRX0pOworCSAvLyAuLi4gdW5kIGJlaSBXYWZmZSBNZWxkdW5nZW4gYW5wYXNzZW4KKyAgICAgICAgIGlmKGFpbmZvW1BfV0VBUE9OXSkgeworICAgICAgICAgICByZXRbU0lfU0tJTExEQU1BR0VfTVNHXT0KKyAgICAgICAgICAgICAiIG1pdCBzZW5nZW5kZW0gIithaW5mb1tQX1dFQVBPTl0tPm5hbWUoUkFXKTsKKyAgICAgICAgICAgcmV0W1NJX1NLSUxMREFNQUdFX01TRzJdPQorICAgICAgICAgICAgICIgbWl0IHNlbmdlbmRlbSAiK2FpbmZvW1BfV0VBUE9OXS0+bmFtZShSQVcpOworICAgICAgICAgfQorICAgICAgIH0KKworICAgICAgIHJldHVybiByZXQ7CisgICAgIH0KKworU0lFSEUgQVVDSDoKKyAgICAgQW5ncmlmZjoJQXR0YWNrKEwpCisgICAgIFNjaHV0ejogICAgRGVmZW5kKEwpCisgICAgIFZlcndhbmR0OiAgSW50ZXJuYWxNb2RpZnlBdHRhY2soTCkKKwkJUF9UTVBfQVRUQUNLX0hPT0sKKwkJUF9UTVBfREVGRU5EX0hPT0sKKyAgICAgU29uc3RpZ2VzOiBTa2lsbFJlc1RyYW5zZmVyKEwpCisgICAgIEhvb2tzOglQX1RNUF9ESUVfSE9PSywgUF9UTVBfTU9WRV9IT09LCisKKzEwLkZlYiAyMDA1IEdsb2luc29uCmRpZmYgLS1naXQgYS9kb2MvcHJvcHMvb2Jzb2xldGUvUF9UTVBfREVGRU5EX0hPT0sgYi9kb2MvcHJvcHMvb2Jzb2xldGUvUF9UTVBfREVGRU5EX0hPT0sKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOTg2ZTYzYQotLS0gL2Rldi9udWxsCisrKyBiL2RvYy9wcm9wcy9vYnNvbGV0ZS9QX1RNUF9ERUZFTkRfSE9PSwpAQCAtMCwwICsxLDExMCBAQAorKioqKioqKioqKioqKioqKioqKioqIFZFUkFMVEVURSBQUk9QRVJUWSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyogRGllc2UgUHJvcGVydHkgaXN0IHZlcmFsdGV0LiBCaXR0ZSBuaWNodCBtZWhyIGluIG5ldWVtIENvZGUgbnV0emVuLiAqCisqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorUF9UTVBfREVGRU5EX0hPT0sKKworTkFNRToKKyAgICAgUF9UTVBfREVGRU5EX0hPT0sgICAgICAgICAgICAgImRlZmVuZF9ob29rIgorCitERUZJTklFUlQgSU46CisgICAgIC9zeXMvbmV3X3NraWxscy5oCisKK0JFU0NIUkVJQlVORzoKKyAgICAgTWl0dGVscyBkaWVzZXIgUHJvcGVydHkga29lbm5lbiBkaWUgQWJ3ZWhyZW4gZWluZXMgTGl2aW5ncyB0ZW1wb3JhZXIKKyAgICAgdmVyYWVuZGVydCB3ZXJkZW4uCisKKyAgICAgRXMgd2lyZCBhbiBkZW0gTGl2aW5nIGRpZSBQcm9wZXJ0eSBhbHMgbWluZGVzdGVucyAzLWVsZW1lbnRpZ2VzIEFycmF5CisgICAgICh7emVpdHB1bmt0LCBvYmpla3QsIG1ldGhvZGUsIC4uLn0pCisgICAgIGdlc2V0enQgdW5kIGRpZSBNZXRob2RlICdtZXRob2RlJyB3aXJkIGRhbm4gd2FlaHJlbmQgZGVzIERlZmVuZCgpIGRlcworICAgICBMZWJld2VzZW5zIGluICdvYmpla3QnIGF1ZmdlcnVmZW4sIHNvbGFuZ2UgdGltZSgpPCd6ZWl0cHVua3QnLgorCisgICAgIERlciBNZXRob2RlIHdlcmRlbiBkaWUgUGFyYW1ldGVyIGRlciBEZWZlbmQoKSB1ZWJlcmdlYmVuOgorICAgICBpbnQgZGFtLCBtaXhlZCBkYW1fdHlwZSwgbWl4ZWQgc3BlbGwsIG9iamVjdCBlbmVteQorICAgICAtIHNwZWxsIGlzdCBkZWZpbml0aXYgZWluIE1hcHBpbmcgLSBlaW4gYW4gRGVmZW5kKCkgdWViZXJnZWJlbmVyCisgICAgICAgaW50LVdlcnQgd3VyZGUgYWVxdWl2YWxlbnQgdW1nZXNldHp0LgorICAgICAtIGRhbV90eXBlIGlzdCBkZWZpbml0aXYgZWluIEFycmF5IHZvbiBTY2hhZGVuc3dlcnRlbiBvZGVyIGVpbmVtIFdlcnQKKworICAgICBadWRlbSBmaW5kZXQgZGVyIEF1ZnJ1ZiBkZXIgTWV0aG9kZSBuYWNoIGRlbSBBYmFyYmVpdGVuIGRlciBQX0RFRkVOREVSUworICAgICBzdGF0dCwgZGllc2Uga29lbm5lbiBhbHNvIHdlaXRlcmUgTW9kaWZpa2F0aW9uZW4gdm9yZ2Vub21tZW4gaGFiZW4uCisKKyAgICAgR2lidCBkaWUgRnVua3Rpb246CisgICAgIC0gMCB6dXJ1ZWNrLCB3aXJkIERlZmVuZCgpIGFiZ2Vicm9jaGVuICh1bmQgZGFtaXQgZGVyIFNjaGFkZW4gdm9lbGxpZworICAgICAgIGFiZ2VmYW5nZW4pIC0gbnVyIG5vY2ggZGllIEZsdWNodCB3aXJkIGdlcHJ1ZWZ0CisgICAgIC0gZWluIDMtZWxlbWVudGlnZXMgQXJyYXkgKHtzY2hhZGVuLCBzY2hhZGVuc3R5cGVuLCBzcGVsbH0pIHp1cnVlY2ssCisgICAgICAgd2VyZGVuIGRpZXNlIFdlcnRlIGluIGRlciBEZWZlbmQoKSBhbiBTdGVsbGUgZGVyIHVlYmVyZ2ViZW5lbiBXZXJ0ZQorICAgICAgIHZlcndlbmRldAorICAgICAtIHdlZGVyIG5vY2ggenVydWVjaywgd2lyZCBkYXMgRXJnZWJuaXMgaWdub3JpZXJ0IHVuZCBkaWUgRGVmZW5kIGxhZXVmdAorICAgICAgIHJlZ3VsYWVyIHdlaXRlcgorCitCRU1FUktVTkdFTjoKKyAgICAgLSBCaXR0ZSBkYXMgbmV1ZXJlIEhvb2tzeXN0ZW0gKHMuIE1hbnBhZ2Ugc3RkL2hvb2tzKSBiZW51dHplbi4KKyAgICAgLSBmYWxscyBkaWUgWmVpdCBhYmdlbGF1ZmVuIG9kZXIgZGFzIE9iamVrdCB6ZXJzdG9lcnQgaXN0LCB3aXJkIGRpZQorICAgICAgIFByb3BlcnR5IGF1ZiAwIGdlc2V0enQKKyAgICAgLSB2b3IgZGVtIFNldHplbiBpbW1lciBhdWYgZGllIEV4aXN0ZW56IGVpbmVzIGd1ZWx0aWdlbiBIb29rcworICAgICAgIHBydWVmZW4sIGVpbmZhY2hlcyBVZWJlcnNjaHJlaWJlbiBmdWVocnQgZWluZXJzZWl0cyB6dSBGZWhsZXJuCisgICAgICAgaW0gQ29kZSBhbmRlcmVyIHVuZCBpc3QgYW5kZXJlcnNlaXRzIHVuZmFpciBnZWdlbnVlYmVyIGlobmVuCisKK0JFSVNQSUVMOgorICAgICAqKiogZWluIGdydWVuZXIgU2NodXR6emF1YmVyICoqKgorICAgICAvLyBTZXR6ZW4gZGVyIFByb3AKKyAgICAgLi4uCisgICAgIHRtcD1UUC0+UXVlcnlQcm9wKFBfVE1QX0RFRkVORF9IT09LKTsKKworICAgICAvLyBlaW4gZXR3YXMgYXVzZnVlaHJsaWNoZXIgQ2hlY2ssIG9iIHdpciB1ZWJlcnNjaHJlaWJlbiBrb2VubmVuLAorICAgICAvLyBFeGlzdGVueiAmJiBHdWVsdGlna2VpdAorICAgICBpZihwb2ludGVycCh0bXApICYmIHNpemVvZih0bXApICYmIGludHAodG1wWzBdKSAmJiAodGltZSgpPHRtcFswXSkpCisgICAgICB3cml0ZSgiRGVyIFphdWJlciBrbGFwcHQgbmljaHQhXG4iKTsKKyAgICAgZWxzZSB7CisgICAgICAvLyBkZXIgWmF1YmVyIGdpbHQgZWluZSBTdHVuZGUKKyAgICAgIFRQLT5TZXRQcm9wKFBfVE1QX0RFRkVORF9IT09LLCh7dGltZSgpKzM2MDAsVE8sImFid2VocmZ1biIpOworICAgICAgd3JpdGUoIkVpbiBaYXViZXIgbGVndCBzaWNoIGF1ZiBkaWNoLlxuIik7CisgICAgIH0KKyAgICAgLi4uCisKKyAgICAgLy8gZGllIGdlcnVmZW5lIE1ldGhvZGUKKyAgICAgbWl4ZWQgYWJ3ZWhyZnVuKGludCBkYW0sIHN0cmluZyogZGFtX3R5cGUsIG1hcHBpbmcgc3BlbGwsIG9iamVjdCBlbikgeworICAgICAgLy8ga2VpbmUgcmVrdXJzaXZlbiBTY2hhZWRlbiBhYmZhbmdlbiAuLi4gbWluZGVzdGVucyBlaW4gbWFnaXNjaGVyCisgICAgICAvLyBtdXNzIGF1Y2ggZGFiZWkgc2VpbgorICAgICAgaWYoKCFtYXBwaW5ncChzcGVsbCkgfHwgIXNwZWxsW1NQX1JFQ1VSU0lWRV0pICYmCisgICAgICAgICBzaXplb2YoZmlsdGVyKGRhbV90eXBlLE1BR0lDQUxfREFNQUdFX1RZUEVTKSkpIHsKKworICAgICAgIC8vIG1pdCAxMCUgV2hrZWl0IHNjaHVldHp0IGRlciBaYXViZXIgdG90YWwKKyAgICAgICBpZighcmFuZG9tKDEwKSkgeworICAgICAgICB0ZWxsX29iamVjdChwcmV2aW91c19vYmplY3QoKSwKKyAgICAgICAgICAiRGVpbiBaYXViZXIgZ2xlaXNzdCBydW5kIHVtIGRpY2ggZ3J1ZW4gYXVmLlxuIik7CisgICAgICAgIHRlbGxfcm9vbShlbnZpcm9ubWVudChwcmV2aW91c19vYmplY3QoKSksIGJyZWFrX3N0cmluZygKKyAgICAgICAgICBwcmV2aW91c19vYmplY3QoKS0+TmFtZShXRVNTRU4pKyIgSGF1dCBnbGVpc3N0IHJ1bmQgdW0gIisKKyAgICAgICAgICBwcmV2aW91c19vYmplY3QoKS0+UXVlcnlQcm9ub3VuKFdFTikrIiBncnVlbiBhdWYuIiw3OCksCisgICAgICAgICAgKHtwcmV2aW91c19vYmplY3QoKX0pKTsKKworICAgICAgICAvLyBtYW5jaG1hbCBnZWh0IGRlciBaYXViZXIgZGFiZWkgZW5kZ3VlbHRpZyBrYXB1dHQKKyAgICAgICAgaWYoIXJhbmRvbSgxMCkpIHByZXZpb3VzX29iamVjdCgpLT5TZXRQcm9wKFBfVE1QX0RFRkVORF9IT09LLCAwKTsKKworICAgICAgICByZXR1cm4gMDsJCQkvLyB2b2xsZXMgQWJmYW5nZW4gZGVzIEFuZ3JpZmZzCisgICAgICAgfQorCisgICAgICAgLy8gZGVyIFphdWJlciBzY2h1ZXR6dCBhdWYgamVkZW4gRmFsbCBpbW1lciBlaW4gYmlzY2hlbgorICAgICAgIHRlbGxfb2JqZWN0KHByZXZpb3VzX29iamVjdCgpLAorICAgICAgICAgIkRlaW4gWmF1YmVyIGZsYWNrZXJ0IHJ1bmQgdW0gZGljaCBncnVlbiBhdWYuXG4iKTsKKyAgICAgICB0ZWxsX3Jvb20oZW52aXJvbm1lbnQocHJldmlvdXNfb2JqZWN0KCkpLCBicmVha19zdHJpbmcoCisgICAgICAgICBwcmV2aW91c19vYmplY3QoKS0+TmFtZShXRVNTRU4pKyIgSGF1dCBmbGFja2VydCBydW5kIHVtICIrCisgICAgICAgICBwcmV2aW91c19vYmplY3QoKS0+UXVlcnlQcm9ub3VuKFdFTikrIiBncnVlbiBhdWYuIiw3OCksCisgICAgICAgICAoe3ByZXZpb3VzX29iamVjdCgpfSkpOworICAgICAgIGRhbT0oNytyYW5kb20oMikpKmRhbS8xMDsJLy8gU2NoYWRlbiByZWR1emllcmVuCisKKyAgICAgICByZXR1cm4oKHtkYW0sIGRhbV90eXBlLCBzcGVsbH0pKTsKKyAgICAgIH0KKworICAgICAgLy8gZGVyIFphdWJlciBzY2h1ZXR6dCBkYW5uIGdhciBuaWNodCAuLi4KKyAgICAgIHJldHVybiAxOworICAgICB9CisKK1NJRUhFIEFVQ0g6CisgICAgIEFuZ3JpZmY6CUF0dGFjayhMKQorICAgICBTY2h1dHo6ICAgIERlZmVuZChMKQorICAgICBWZXJ3YW5kdDoJSW50ZXJuYWxNb2RpZnlEZWZlbmQoTCksIFBfVE1QX0FUVEFDS19NT0QKKyAgICAgSG9va3M6CVBfVE1QX0RJRV9IT09LLCBQX1RNUF9NT1ZFX0hPT0ssIFBfVE1QX0FUVEFDS19IT09LCisgICAgIG5ldWUgSG9va3M6IHN0ZC9ob29rcworCiswOC4xMi4yMDA4LCBaZXNzdHJhCisKZGlmZiAtLWdpdCBhL2RvYy9wcm9wcy9vYnNvbGV0ZS9QX1RNUF9ESUVfSE9PSyBiL2RvYy9wcm9wcy9vYnNvbGV0ZS9QX1RNUF9ESUVfSE9PSwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5jZDE4OTE3Ci0tLSAvZGV2L251bGwKKysrIGIvZG9jL3Byb3BzL29ic29sZXRlL1BfVE1QX0RJRV9IT09LCkBAIC0wLDAgKzEsNzAgQEAKKyoqKioqKioqKioqKioqKioqKioqKiBWRVJBTFRFVEUgUFJPUEVSVFkgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisqIERpZXNlIFByb3BlcnR5IGlzdCB2ZXJhbHRldC4gQml0dGUgbmljaHQgbWVociBpbiBuZXVlbSBDb2RlIG51dHplbi4gKgorKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKK1BfVE1QX0RJRV9IT09LCisKK05BTUU6CisgICAgUF9UTVBfRElFX0hPT0sgICAgICAgICAgICAgICAgImRpZV9ob29rIgorCitERUZJTklFUlQgSU46CisgICAgL3N5cy9uZXdfc2tpbGxzLmgKKworQkVTQ0hSRUlCVU5HOgorICAgICBNaXR0ZWxzIGRpZXNlciBQcm9wZXJ0eSBrYW5uIGRlciBUb2QgZWluZXMgTGl2aW5ncyBhYmdld2VuZGV0IHdlcmRlbi4KKworICAgICBFcyB3aXJkIGFuIGRlbSBMaXZpbmcgZGllIFByb3BlcnR5IGFscyBtaW5kZXN0ZW5zIDMtZWxlbWVudGlnZXMgQXJyYXkKKyAgICAgKHt6ZWl0cHVua3QsIG9iamVrdCwgbWV0aG9kZSwgLi4ufSkKKyAgICAgZ2VzZXR6dCB1bmQgZGllIE1ldGhvZGUgJ21ldGhvZGUnIHdpcmQgZGFubiB3YWVocmVuZCBkZXMgZGllKCkgZGVzCisgICAgIExlYmV3ZXNlbnMgaW4gJ29iamVrdCcgYXVmZ2VydWZlbiwgc29sYW5nZSB0aW1lKCk8J3plaXRwdW5rdCcuCisgICAgIEJlaSBHZWlzdGVybiB3aXJkIGRlciBIb29rIG5pY2h0IGdlcnVmZW4uCisKKyAgICAgRGVyIE1ldGhvZGUgd2lyZCBlaW4gaW50IHVlYmVyZ2ViZW4sIG9iIGRhcyBMaXZpbmcgT3BmZXIgdm9uIEdpZnQKKyAgICAgKFBfUE9JU09OKSB3YXIuCisKKyAgICAgR2lidCBkaWUgRnVua3Rpb24gZWluZW4gV2VydCAhPSAwIHp1cnVlY2ssIHdpcmQgZGllKCkgc29mb3J0IGFiZ2Vicm9jaGVuCisgICAgIHVuZCBkYXMgTGl2aW5nIHN0aXJidCBuaWNodC4KKworQkVNRVJLVU5HRU46CisgICAgLSBCaXR0ZSBkYXMgbmV1ZXJlIEhvb2tzeXN0ZW0gKHMuIE1hbnBhZ2Ugc3RkL2hvb2tzKSBiZW51dHplbi4KKyAgICAtIGZhbGxzIGRpZSBaZWl0IGFiZ2VsYXVmZW4gb2RlciBkYXMgT2JqZWt0IHplcnN0b2VydCBpc3QsIHdpcmQgZGllCisgICAgICBQcm9wZXJ0eSBhdWYgMCBnZXNldHp0CisgICAgLSB2b3IgZGVtIFNldHplbiBpbW1lciBhdWYgZGllIEV4aXN0ZW56IGVpbmVzIGd1ZWx0aWdlbiBIb29rcworICAgICAgcHJ1ZWZlbiwgZWluZmFjaGVzIFVlYmVyc2NocmVpYmVuIGZ1ZWhydCBlaW5lcnNlaXRzIHp1IEZlaGxlcm4KKyAgICAgIGltIENvZGUgYW5kZXJlciB1bmQgaXN0IGFuZGVyZXJzZWl0cyB1bmZhaXIgZ2VnZW51ZWJlciBpaG5lbgorCitCRUlTUElFTEU6CisgICAgICoqKiBlaW4gYmVzb25kZXJlciBHaWZ0c2NodXR6IC4uIHdpcmt0IGJlaW0gVG9kICoqKgorICAgICAvLyBwcnVlZmVuLCBvYiBuaWNodCBlaW4gYW5kZXJlciBNb2RpZmllciBleGlzdGllcnQKKyAgICAgaWYoIXBvaW50ZXJwKHRtcD1UUC0+UXVlcnlQcm9wKFBfVE1QX0RJRV9IT09LKSkgfHwKKyAgICAgICAgc2l6ZW9mKHRtcCk8MyB8fCB0bXBbMF08PXRpbWUoKSkgeworICAgICAgIFRQLT5TZXRQcm9wKFBfVE1QX0RJRV9IT09LLAorCSAgICAgICAgICAgKHt0aW1lKCkrMTIwK3JhbmRvbSgxMCksIHRoaXNfb2JqZWN0KCksICJwcmV2ZW50X2RpZSJ9KSk7CisKKyAgICAgLy8gZGllIGdlcnVmZW5lIE1ldGhvZGUKKyAgICAgaW50IHByZXZlbnRfZGllKGludCBwb2lzb24pIHsKKyAgICAgICBpbnQgcmV0OworCisgICAgICAgaWYocG9pc29uKSB7CisgICAgICAgICB0ZWxsX29iamVjdChwcmV2aW91c19vYmplY3QoKSwKKyAgICAgICAgICAgIkVpbiBaYXViZXIgcmVpbmlndCBpbSBNb21lbnQgZGVzIFRvZGVzIGRlaW4gQmx1dCFcbiIpOworICAgICAgICAgdGVsbF9vYmplY3QoZW52aXJvbm1lbnQocHJldmlvdXNfb2JqZWN0KCkpLAorICAgICAgICAgICBwcmV2aW91c19vYmplY3QoKS0+TmFtZShXRVIsMSkrIiB3aXJkIHZvbiBMaWNodGVybiB1bWh1ZWxsdC5cbiIsCisgICAgICAgICAgICh7cHJldmlvdXNfb2JqZWN0KCl9KSk7CisKKyAgICAgICAgIHJldD0xOworICAgICAgIH0KKworICAgICAgIC8vIHdpciBoZWxmZW4gbnVyIGVpbm1hbCAuLi4gdW5kIGVpbiBUb2QgdmVybmljaHRldCBkaWUgSGlsZmUgYXVjaAorICAgICAgIHByZXZpb3VzX29iamVjdCgpLT5TZXRQcm9wKFBfVE1QX0RJRV9IT09LLCAwKTsKKworICAgICAgIHJldHVybiByZXQ7CisgICAgIH0KKworU0lFSEUgQVVDSDoKKyAgICAgVG9kOglkaWUoTCkKKyAgICAgU29uc3RpZ2VzOiBQX1BPSVNPTiwgUF9LSUxMUywgUF9HSE9TVAorICAgICBIb29rczoJUF9UTVBfTU9WRV9IT09LLCBQX1RNUF9BVFRBQ0tfSE9PSywgUF9UTVBfREVGRU5EX0hPT0sKKyAgICAgbmV1ZSBIb29rczogc3RkL2hvb2tzCisKKzA4LjEyLjIwMDgsIFplc3N0cmEKKwpkaWZmIC0tZ2l0IGEvZG9jL3Byb3BzL29ic29sZXRlL1BfVE1QX01PVkVfSE9PSyBiL2RvYy9wcm9wcy9vYnNvbGV0ZS9QX1RNUF9NT1ZFX0hPT0sKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYzI4YTA2NwotLS0gL2Rldi9udWxsCisrKyBiL2RvYy9wcm9wcy9vYnNvbGV0ZS9QX1RNUF9NT1ZFX0hPT0sKQEAgLTAsMCArMSw0MiBAQAorKioqKioqKioqKioqKioqKioqKioqIFZFUkFMVEVURSBQUk9QRVJUWSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyogRGllc2UgUHJvcGVydHkgaXN0IHZlcmFsdGV0LiBCaXR0ZSBuaWNodCBtZWhyIGluIG5ldWVtIENvZGUgbnV0emVuLiAqCisqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorTkFNRToKKyAgICBQX1RNUF9NT1ZFX0hPT0sgICAgICAgICAgICAgIm1vdmVfaG9vayIKKworREVGSU5JRVJUIElOOgorICAgIC9zeXMvbmV3X3NraWxscy5oCisKK0JFU0NIUkVJQlVORzoKKyAgICBNaW5kZXN0ZW5zIDMtZWxlbWVudGlnZXMgQXJyYXkgKHt6ZWl0cHVua3QsIG9iamVrdCwgZnVua3Rpb24sIC4uLn0pLgorICAgIERpZSBGdW5rdGlvbiB3aXJkIGltICdvYmpla3QnIG1pdCBkZW4gZ2xlaWNoZW4gUGFyYW1ldGVybiB3aWUgbW92ZSgpCisgICAgbmFjaCBkZXIgQWJmcmFnZSBhdWYgUF9OT19UUE9SVCBhdWZnZXJ1ZmVuLCB3ZW5uIGRlciAnemVpdHB1bmt0JworICAgIG5vY2ggbmljaHQgdWViZXJzY2hyaXR0ZW4gaXN0LiBXZW5uIGRpZSBGdW5rdGlvbiBldHdhcyBhbmRlcmVzIGFscyBlaW4KKyAgICA1LWVsZW1lbnRpZ2VzIEFycmF5ICh7ZGVzdCwgbWV0aG9kcywgZGlyZWN0aW9uLCB0ZXh0b3V0LCB0ZXh0aW59KQorICAgIG9kZXIgLTEgenVydWVja2dpYnQsIHdpcmQgbW92ZSgpIG5vcm1hbCBhdXNnZWZ1ZWhydCwgYW5zb25zdGVuIHdlcmRlbiBkaWUKKyAgICA1IG1vdmUtUGFyYW1ldGVyIGR1cmNoIGRpZSBBcnJheS1FaW50cmFlZ2UgZXJzZXR6dCBiencuIHdpcmQgYmVpIGVpbmVtCisgICAgUnVlY2tnYWJld2VydCB2b24gLTEgZGFzIG1vdmUoKSBhYmdlYnJvY2hlbi4gSW4gbGV0enRlcmVtIEZhbGwgaXN0CisgICAgZGllIEZ1bmt0aW9uIGRhZnVlciB2ZXJhbnR3b3J0bGljaCwgZWluZSBlbnRzcHIuIE1lbGR1bmcgYW4gZGVuCisgICAgU3BpZWxlciBhdXN6dWdlYmVuIQorCitISU5XRUlTOgorICAgIEZhbGxzIG1hbiBlaW5lbSBTcGllbGVyIGVpbmVuIE1vdmUtSG9vayBzZXR6dCwgaXN0IGVzIHJhdHNhbSwgaW0KKyAgICBNb3ZlLUhvb2sgenUgcHJ1ZWZlbiwgb2IgZGFzIFNwaWVsZXJvYmpla3QgbmFjaCBBYmFyYmVpdHVuZyBkZXIgSG9vay0KKyAgICBGdW5rdGlvbiBub2NoIGxlYnQuIEFuc29uc3RlbiB3aXJkIGVpbiBkb3BwZWx0ZXMgbW92ZSgpIGF1c2dlZnVlaHJ0OgorICAgIGluIGRlbiBUb2Rlc3JhdW0gdW5kIGRpcmVrdCB3aWVkZXIgenVydWVjayB6dXIgTGVpY2hlLgorCitCRU1FUktVTkdFTjoKKyAgICAgLSBCaXR0ZSBkYXMgbmV1ZXJlIEhvb2tzeXN0ZW0gKHMuIE1hbnBhZ2Ugc3RkL2hvb2tzKSBiZW51dHplbi4KKyAgICAgLSBmYWxscyBkaWUgWmVpdCBhYmdlbGF1ZmVuIG9kZXIgZGFzIE9iamVrdCB6ZXJzdG9lcnQgaXN0LCB3aXJkIGRpZQorICAgICAgIFByb3BlcnR5IGF1ZiAwIGdlc2V0enQKKyAgICAgLSB2b3IgZGVtIFNldHplbiBpbW1lciBhdWYgZGllIEV4aXN0ZW56IGVpbmVzIGd1ZWx0aWdlbiBIb29rcworICAgICAgIHBydWVmZW4sIGVpbmZhY2hlcyBVZWJlcnNjaHJlaWJlbiBmdWVocnQgZWluZXJzZWl0cyB6dSBGZWhsZXJuCisgICAgICAgaW0gQ29kZSBhbmRlcmVyIHVuZCBpc3QgYW5kZXJlcnNlaXRzIHVuZmFpciBnZWdlbnVlYmVyIGlobmVuCisKK1NJRUhFIEFVQ0g6CisgICAgIEJld2VndW5nOgltb3ZlKEwpLCBOb3RpZnlNb3ZlKCksIFByZXZlbnRNb3ZlKCkKKyAgICAgSG9va3M6CVBfVE1QX0RJRV9IT09LLCBQX1RNUF9ERUZFTkRfSE9PSywgUF9UTVBfQVRUQUNLX0hPT0sKKyAgICAgbmV1ZSBIb29rczogc3RkL2hvb2tzCisKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKzA4LjEyLjIwMDgsIFplc3N0cmEKZGlmZiAtLWdpdCBhL2RvYy9wcm9wcy9za2lsbF9pbmZvX2xpc3RlIGIvZG9jL3Byb3BzL3NraWxsX2luZm9fbGlzdGUKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMDExZjYxNgotLS0gL2Rldi9udWxsCisrKyBiL2RvYy9wcm9wcy9za2lsbF9pbmZvX2xpc3RlCkBAIC0wLDAgKzEsMzE1IEBACitTSV8qCitERUZJTklFUlQgSU46CisgICAgL3N5cy9uZXdza2lsbHMuaAorCitCRVNDSFJFSUJVTkc6CisgICAgRGllIGZvbGdlbmRlIExpc3RlIGRlciBTSS1UeXBlbiBpc3QgZ3JvYiBuYWNoIEd1ZWx0aWdrZWl0IGZ1ZXIgU2tpbGxzCisgICAgdW5kIFNwZWxscyBzb3J0aWVydC4KKyAgICAKKyAgICBBbndlbmR1bmdzb3J0ZSBkZXIgU0lfLVdlcnRlIHNpbmQ6CisgICAgLSAvc3RkL2xpdmluZy9jb21iYXQgdW5kIHZvbiBkb3J0IGdlcnVmZW5lIFNraWxscyAoS2FtcGYpCisgICAgLSAvc3RkL2dpbGRlbl9vYiB1bmQgaW4gR2lsZGVuIGxlcm5iYXJlIFNwZWxscy9Ta2lsbHMKKyAgICAtIC9zdGQvc3BlbGxib29rIHVuZCB2b24gU3BlbGxib29rcyBhdXNnZWZ1ZWhydGUgU3BlbGxzCisgICAgLSAvc3RkL2xpdmluZy9saWZlIHVuZCB2b24gZG9ydCBnZXJ1ZmVuZSBTa2lsbHMgKEFsa29ob2wpCisgICAgLSAvc3RkL3NoZWxscy8qIHVuZCBlbnRzcHJlY2hlbmRlIFJhc3NlbnNraWxscworCisgICAgSW0gU2tpbGxzeXN0ZW0gdW50ZXIgL3N0ZC9saXZpbmcvc2tpbGxzIHdpcmQgdm9yIGF1ZiBJbmZvcm1hdGlvbmVuCisgICAgYXVzIGRlbSBUZWlsICMxIFJ1ZWNrc2ljaHQgZ2Vub21tZW4uIEVpbmlnZSBkaWVzZXIgV2VydGUKKyAgICB3ZXJkZW4gYXVjaCBwZXJtYW5lbnQgaW0gU3BpZWxlciBnZXNwZWljaGVydCAod2llIHpCIGRpZQorICAgIFNJX1NLSUxMQUJJTElUWSkuCisKK0FLVFVFTExFIExJU1RFOiAoNS4gT2t0b2JlciAyMDExKQorICMxIFNraWxscyB1bmQgU3BlbGxzOgorICAgIFNJX1NLSUxMRlVOQzogc3RyaW5nCisgICAgIEJlaW5oYWx0ZXQgZGVuIE5hbWVuIGRlciBNZXRob2RlLCBkaWUgZGllIGVpZ2VudGxpY2hlIEZ1bmt0aW9uYWxpdGFldAorICAgICBkZXMgU2tpbGxzL1NwZWxscyBpbXBsZW1lbnRpZXJ0LgorICAgICBGYWxscyBuaWNodCBhbmdlZ2ViZW4sIHdpcmQgYmVpIFNwZWxscyBkdXJjaCBVc2VTcGVsbCgpIGRhcyBWZXJiLCBkYXMKKyAgICAgZGVyIFNwaWVsZXIgZWluZ2VnZWJlbiBoYXQsIGFscyBTcGVsbC1NZXRob2Rlbm5hbWUgYW5nZW5vbW1lbi4KKyAgICAgSW0gR2lsZGVub2JqZWt0IGthbm4gaGllciBhYndlaWNoZW5kIHZvbiBTcGVsbC1OYW1lbiBzdGVoZW4sIHdpZSBkaWUKKyAgICAgU3BlbGxmdW5rdGlvbiBpbSBTcGVsbGJvb2sgaGVpc3N0LgorCisgICAgU0lfQ0xPU1VSRTogY2xvc3VyZQorICAgICBPcHRpbWllcnQgZGVuIFp1Z3JpZmYgZnVlciBkZW4gaW50ZXJuZW4gR2VicmF1Y2gsIGluZGVtIGRpZSBnZWZ1bmRlbmUKKyAgICAgU3BlbGwvU2tpbGxmdW5rdGlvbiBkYXJpbiBkaXJla3QgZ2VzcGVpY2hlcnQgd2lyZCB1bmQgc28gbGFuZ2UgZ3VlbHRpZworICAgICBpc3QsIGJpcyBkYXMvZGllIE9iamVrdChlKS9DbG9zdXJlKHMpIHplcnN0b2VydCBzaW5kLgorICAgICBLYW5uIHRoZW9yZXRpc2NoIGF1Y2ggZnVlciBleHRlcm5lIFNraWxscyBkdXJjaCAoQXV0b2xvYWQtKU9iamVrdGUKKyAgICAgYmVudXR6dCB3ZXJkZW4uCisKKyAgICBTSV9TS0lMTEFCSUxJVFk6IGludAorICAgICBGYWVoaWdrZWl0LCBkZW4gU3BlbGwvU2tpbGwgenUgYmVudXR6ZW4uIE5vcm1hbCBpc3Qgdm9uCisgICAgIC1NQVhfQUJJTElUWSBiaXMgTUFYX0FCSUxJVFkuCisKKyAgICBTSV9TS0lMTERBTUFHRV9UWVBFOiBzdHJpbmcqCisgICAgIEFydCBkZXMgU2NoYWRlbnMgZWluZXMgQW5ncmlmZnM6IHNpZWhlIFNjaGFkZW5zdHlwZW4gaW4gL3N5cy9jb21iYXQuaAorCisgICAgU0lfU0tJTExEQU1BR0VfTVNHOiBzdHJpbmcKKyAgICAgTWVsZHVuZyBhbnN0YXR0IGRlciBXYWZmZSBvZGVyIEhhZW5kZS1NZWxkdW5nLgorICAgIFNJX1NLSUxMREFNQUdFX01TRzI6IHN0cmluZworICAgICBNZWxkdW5nIGFuc3RhdHQgZGVyIFdhZmZlIG9kZXIgSGFlbmRlLU1lbGR1bmcgZnVlciBkZW4gUmF1bS4KKworICAgIFNJX0lOSEVSSVQ6IHN0cmluZworICAgICBFbnRoYWVsdCBkZW4gTmFtZW4gZGVzIFNraWxscy9TcGVsbHMsIHZvbiBkZW0gZ2VlcmJ0IHdpcmQuIERhcworICAgICBiZWRldXRldCBlaW5lcnNlaXRzLCBkYXMgTGVhcm5Ta2lsbCgpIGF1Y2ggZGllc2VuIHVlYmVyZ2VvcmRuZXRlbgorICAgICBTa2lsbCBiZWVpbmZsdXNzdCB1bmQgYW5kZXJlcnNlaXRzLCBkYXNzIGJlaSBTa2lsbHMgYXVjaCBkaWVzZXIKKyAgICAgdWViZXJnZW9yZG5ldGUgU2tpbGwgaW0gUmFobWVuIGVpbmVyIFNraWxsLUFud2VuZHVuZyBnZXJ1ZmVuIHdpcmQuCisKKyAgICBTSV9ESUZGSUNVTFRZOiBpbnQgLyBbU3BlbGxzOiBtaXhlZF0KKyAgICAgU2Nod2llcmlna2VpdCBlaW5lcyBTa2lsbHMvU3BlbGxzLiBCZWVpbmZsdXNzdCBkaWUgamV3ZWlscyBvYmVyZW4KKyAgICAgU2NocmFua2VuIGZ1ZXIgZGFzIExlcm5lbiBlaW5lcyBTa2lsbHMvU3BlbGxzIGluIEFiaGFlbmdpZ2tlaXQgCisgICAgIHZvbiBTcGllbGVybGV2ZWwuCisgICAgIFdlbm4gaW4gZWluZW0gU3BlbGwtSW5mby1NYXBwaW5nIGtlaW4gV2VydCBzdGVodCB3aXJkIGJlaSBTcGVsbHMKKyAgICAgYXV0b21hdGlzY2ggU0lfU1BFTExDT1NUIGdlbm9tbWVuLCBkZXIgV2VydCBpbSBTcGVsbC1JbmZvLU1hcHBpbmcKKyAgICAgZ2VodCBiZWltIExlcm5lbiBhYmVyIGltbWVyIHZvciBQYXJhbWV0ZXJuLgorICAgIEZBQ1RPUihTSV9ESUZGSUNVTFRZKTogaW50IC8gbWl4ZWQKKyAgICBPRkZTRVQoU0lfRElGRklDVUxUWSk6IGludCAvIG1peGVkCisgICAgIE51ciBmdWVyIFNwZWxsYm9va3MvU3BlbGxzLiBEZXIgbWl4ZWQtUGFyYW1ldGVyIGthbm4gRnVua3Rpb25lbgorICAgICBlbnRoYWx0ZW4uIFNpZWhlIHVudGVuIGJlaSBTSV9TUEVMTENPU1QuCisKKyAgICBTSV9MQVNUTElHSFQ6IGludAorICAgICBaZWl0cHVua3QsIGJpcyB3YW5uIGRlciBTdGFuZGFyZHNraWxscyBTS19OSUdIVFZJU0lPTiBkZW4gU3BpZWxlcgorICAgICBzZWhlbiBsYWVzc3QuCisKKyAgICBTSV9URVNURkxBRzogaW50CisgICAgIFdlbm4gZ2VzZXR6dCwgZGFubiBzb2xsIGRlciBTa2lsbCBuaWNodCBnZW51dHp0LCBzb25kZXJuIG51ciBnZXRlc3RldAorICAgICB3ZXJkZW4sIG9iIGVyIGVyZm9sZ3JlaWNoIHdhZXJlLiBFbnRzcHJpY2h0IGFsc28gaW4gZXR3YSBkZW0gQXVmcnVmCisgICAgIHZvbiBTcGVsbFN1Y2Nlc3MoKSBpbiBTcGVsbGJvb2tzLCB3aXJkIGFiZXIgYmVpIFVzZVNraWxsKCkgYWxzCisgICAgIFNraWxsLVBhcmFtZXRlciB1ZWJlcmdlYmVuLgorICAgICBEZXIgU2tpbGwgbXVzcyBlbnRzcHJlY2hlbmQgaW1wbGVtZW50aWVydCBzZWluIQorCisgICAgU0lfR1VJTEQ6IHN0cmluZworICAgICBBbmdhYmUgZGVyIEdpbGRlLCBhdXMgZGVyIGRlciBTa2lsbCBzdGFtbXQuIFNpbm52b2xsLCB3ZW5uIGRlciBTa2lsbAorICAgICBuaWNodCBhdXMgZGVyIGFrdHVlbGxlbiBQX0dVSUxEIHN0YW1tdC4gRnVlciBnZW5lcmVsbGUgU2tpbGxzL1NwZWxscworICAgICB6QiB3YWVyZSBkYXMgIkFOWSIuCisgICAgIEdpbHQgbmljaHQgZnVlciBTcGVsbHMhCisKKyAgICBTSV9FTkVNWTogb2JqZWN0CisgICAgIEFrdHVlbGxlcyBGZWluZGVzb2JqZWt0LCB3aXJkIGJlaSBTa2lsbC1BbndlbmR1bmcgYXVzIGRlbSBLYW1wZiBoZXJhdXMKKyAgICAgdm9uIHN0ZC9saXZpbmcvY29tYmF0LmMgYW4gZGVuIFNraWxsIHVlYmVyZ2ViZW4uCisgICAgIEJlaXNwaWVsOiBTdGFuZGFyZHdhZmZlbnNraWxscywgU0tfTUFHSUNfREVGRU5TRSwgU0tfTUFHSUNfQVRUQUNLLAorICAgICAgICAgICAgICAgU0tfVFdPSEFOREVELCBTS19TUEVMTF9ERUZFTkQsIFNLX0lORk9STV9ERUZFTkQgdW5kCisgICAgICAgICAgICAgICBTS19ERUZFTkRfT1RIRVIuCisKKyAgICBTSV9GUklFTkQ6IG9iamVjdAorICAgICBadSB2ZXJ0ZWlkaWdlbmRlcyBGcmV1bmRlc29iamVrdCwgd2lyZCBiZWkgU2tpbGwtQW53ZW5kdW5nIGF1cyBkZW0KKyAgICAgS2FtcGYgaGVyYXVzIHZvbiBzdGQvbGl2aW5nL2NvbWJhdC5jIGFuIGRlbiBTa2lsbCB1ZWJlcmdlYmVuLgorICAgICBCZWlzcGllbGU6IFNLX0lORk9STV9ERUZFTkQgdW5kIFNLX0RFRkVORF9PVEhFUi4KKworICAgIFNJX01BR0lDX1RZUEU6IHN0cmluZyoKKyAgICAgRW50aGFlbHQgZWluIEFycmF5IGRlciBNYWdpZXR5cGVuLCBkaWUgenVtIEVpbnNhdHoga29tbWVuLiBEaWUgQW5nYWJlCisgICAgIGdlc2NoaWVodCB6QiBpbSBTcGVsbGJvb2sgdW5kIGJlZWluZmx1c3N0IFNwZWxsRGVmZW5kKCkuCisKKyAgICBTSV9MQVNUX1VTRTogaW50IChldmVudHVlbGwgb2Jzb2xldCkKKyAgICAgTGV0enRlIE51dHp1bmcgZGVzIFNraWxscy4KKyAgICAKKyAgICBTSV9MRUFSTl9QUk9COiBpbnQgKGV2ZW50dWVsbCBvYnNvbGV0KQorICAgICBMZXJud2FocnNjaGVpbmxpY2hrZWl0LgorCisgICAgU0lfU0tJTExEVVJBVElPTjogaW50CisgICAgIERhdWVyIGRlcyBTa2lsbHMvU3BlbGxzLiBNb21lbnRhbiBuaWNodCBhbGx6dSB2ZXJicmVpdGV0IGluIE51dHp1bmcuCisKKyAjMiBudXIgZnVlciBTcGVsbHM6CisgICAgU0lfU1BFTExCT09LOiBzdHJpbmcKKyAgICAgS2FubiBkaXJla3QgZGFzIGVudGhhbHRlbmRlIFNwZWxsYm9vayBmdWVyIGVpbmVuIFNwZWxsIGVudGhhbHRlbi4KKworICAgIFNNX1JBQ0U6IG1hcHBpbmcKKyAgICAgIE1hcHBpbmcsIGRhcyBhbHMgS2V5IGRpZSBSYXNzZSB1bmQgYWxzIFZhbHVlIGVpbiBNYXBwaW5nIFgKKyAgICAgIGVudGhhZWx0LiBEaWVzZXMgTWFwcGluZyBYIHdpcmQgZGlyZWt0IHp1IHNpbmZvIGhpbnp1Z2VmdWVndCB1bmQKKyAgICAgIHVlYmVyc2NocmVpYnQgZGFtaXQgYmVpIEJlZGFyZiBEZWZhdWx0d2VydGUgZHVyY2ggcmFzc2Vuc3BlemlmaXNjaGUKKyAgICAgIFdlcnRlLgorCisgICAgU0lfU1BFTExDT1NUOiBpbnQgLyBtaXhlZAorICAgIEZBQ1RPUihTSV9TUEVMTENPU1QpOiBpbnQgLyBtaXhlZAorICAgIE9GRlNFVChTSV9TUEVMTENPU1QpOiBpbnQgLyBtaXhlZAorICAgICBCZWluaGFsdGV0IGRpZSBXZXJ0ZSwgZGllIGZ1ZXIgZGllIEJlcmVjaG51bmcgZGVyIFNwZWxsa29zdGVuCisgICAgIHp1c3RhZW5kaWcgc2luZC4KKyAgICAgRGFiZWkgZ2lsdDogUmVhbGtvc3RlbiA9IE9GRlNFVChDT1NUKSArIChDT1NUICogRkFDVE9SKENPU1QpKS8xMDAKKyAgICAgRGllIGVpbnplbG5lbiBFaW50cmFlZ2Uga29lbm5lbiBhbnN0YXR0IGVpbmVzIGZpeGVuIFdlcnRlcyBhdWNoIGRlbgorICAgICBWZXJ3ZWlzIGF1Y2ggZWluZSBGdW5rdGlvbiBpbiBGb3JtIHZvbiBDbG9zdXJlL01ldGhvZGVubmFtZS9BcnJheSBtaXQKKyAgICAgT2JqZWt0L09iamVrdG5hbWUgdW5kIE1ldGhvZGVubmFtZSBlbnRoYWx0ZW4uIFNpZWhlIGRhenUgYXVjaAorICAgICBleGVjdXRlX2FueXRoaW5nKCkuCisKKyAgICBTSV9USU1FX01TRzogc3RyaW5nCisgICAgIE1lbGR1bmcsIGRpZSBkZW0gU3BpZWxlciBtaXR0ZWlsdCwgZGFzcyBlciBub2NoIG5pY2h0IHdpZWRlciBlaW5lbgorICAgICBTcGVsbCBjYXN0ZW4ga2Fubi4gRmFsbHMgZGllc2VyIEVpbnRyYWcgbmljaHQgZ2VzZXR6dCBpc3QsIHdpcmQKKyAgICAgZWluIFN0YW5kYXJkdGV4dCBhdXNnZWdlYmVuLgorCisgICAgU0lfU1BfTE9XX01TRzogc3RyaW5nCisgICAgIE1lbGR1bmcsIGRpZSBkZW0gU3BpZWxlciBtaXR0ZWlsdCwgZGFzcyBlciB6dSB3ZW5pZ2UKKyAgICAgS29uemVudHJhdGlvbnNwdW5rdGUgYmVzaXR6dCwgdW0gZGVuIFNwZWxsIHp1IGNhc3Rlbi4gRmFsbHMgZGllc2VyCisgICAgIEVpbnRyYWcgbmljaHQgZ2VzZXR6dCBpc3QsIHdpcmQgZWluIFN0YW5kYXJkdGV4dCBhdXNnZWdlYmVuLgorCisgICAgU0lfUFJFUEFSRV9NU0c6IHN0cmluZworICAgICBNZWxkdW5nLCBkaWUgZGVtIFNwaWVsZXIgYXVzZ2VnZWJlbiB3ZXJkZW4gc29sbCwgd2VubiBlciBlaW5lbiBTcGVsbAorICAgICB2b3JiZXJlaXRldC4gQW5zb25zdGVuIHdpcmQgZWluIFN0YW5kYXJkdGV4dCBhdXNnZWdlYmVuLgorCisgICAgU0lfUFJFUEFSRV9CVVNZX01TRzogc3RyaW5nCisgICAgIE1lbGR1bmcsIGRpZSBkZW0gU3BpZWxlciBhdXNnZWdlYmVuIHdlcmRlbiBzb2xsLCB3ZW5uIGVyIHNjaG9uIGRpZXNlbgorICAgICBTcGVsbCB2b3JiZXJlaXRldC4gQW5zb25zdGVuIHdpcmQgZWluIFN0YW5kYXJkdGV4dCBhdXNnZWdlYmVuLgorCisgICAgU0lfUFJFUEFSRV9BQk9SVF9NU0c6IHN0cmluZworICAgICBNZWxkdW5nLCBkaWUgZGVtIFNwaWVsZXIgYXVzZ2VnZWJlbiB3ZXJkZW4gc29sbCwgd2VubiBlciBkaWUKKyAgICAgVm9yYmVyZWl0dW5nIGRpZXNlcyBTcGVsbHMgZHVyY2ggZWluZW4gYW5kZXJlbiBTcGVsbCB1bnRlcmJyaWNodC4KKyAgICAgQW5zb25zdGVuIHdpcmQgZWluIFN0YW5kYXJkdGV4dCBhdXNnZWdlYmVuLgorCisgICAgU0lfTk9NQUdJQzogaW50CisgICAgIFdlcnQgendpc2NoZW4gMCB1bmQgMTAwIChvZGVyIG1laHIpLCBkZXIgZ2VnZW4gZGllIFBfTk9NQUdJQy1XaXJrdW5nCisgICAgIGVpbmVzIFJhdW1lcyB3aXJrdC4KKyAgICAgSmUgaG9laGVyIGRlciBXZXJ0IGlzdCwgZGVzdG8gdW53YWhyc2NoZWlubGljaGVyIGlzdCBlcywgZGFzcyBlaW4KKyAgICAgUmF1bSBkZW4gU3BlbGwgZHVyY2ggQW50aW1hZ2llIHN0b2VydC4gRWluIFJhdW0gc29sbHRlIG51ciBXZXJ0ZQorICAgICB6d2lzY2hlbiAwIHVuZCAxMDAgZ2VzZXR6dCBoYWJlbi4gSXN0IGRlciBXZXJ0IGRlcyBSYXVtcyBncm9lc3NlcgorICAgICBhbHMgZGVyIGhpZXIgYW5nZWdlYmVuLCBkYW5uIGJsb2NraWVydCBlciBNYWdpZSBtaXQgZWluZXIgZ2V3aXNzZW4KKyAgICAgZWJlbiBzZWluZXIgYW5nZWdlYmVuZW4gV2FocnNjaGVpbmxpY2hrZWl0LgorCisgICAgU0lfTk9NQUdJQ19NU0c6IHN0cmluZworICAgICBNZWxkdW5nLCBkaWUgYmVpIEZlaGxzY2hsYWcgZHVyY2ggUF9OT01BR0lDIGRlcyBSYXVtZXMgYXVzZ2VnZWJlbgorICAgICB3aXJkLiBBbnNvbnN0ZW4gd2lyZCBlaW4gU3RhbmRhcmR0ZXh0IGF1c2dlZ2ViZW4uCisgICAgICAKKyAgICBTSV9TUEVMTEZBVElHVUU6IGludCAvIG1peGVkCisgICAgRkFDVE9SKFNJX1NQRUxMRkFUSUdVRSk6IGludCAvIG1peGVkCisgICAgT0ZGU0VUKFNJX1NQRUxMRkFUSUdVRSk6IGludCAvIG1peGVkCisgICAgIFdlcnRlLCBkaWUgZnVlciBkaWUgQmVyZWNobnVuZyBkZXIgV2llZGVyLUNhc3QtWmVpdCBiZW51dHp0IHdlcmRlbi4KKyAgICAgRGllIEJlcmVjaG51bmcgdW5kIGRpZSBtb2VnbGljaGVuIEFuZ2FiZW4gKENsb3N1cmUgZXRjLikgc2luZAorICAgICBpZGVudGlzY2ggenUgU0lfU1BFTExDT1NULgorICAgICBEYXMgU3BlbGxib29rIGdpYnQgYmVpIE5pY2h0LVdpZWRlci1CZXJlaXRzY2hhZnQgU0lfVElNRV9NU0cgYXVzLgorCisgICAgU0lfWF9TUEVMTEZBVElHVUU6IG1hcHBpbmcgbWl0IChbc3RyaW5nIGtleTogaW50IHZhbF0pCisgICAgIFdlcnRlLCBkaWUgZnVlciBkaWUgQmVyZWNobnVuZyBkZXIgV2llZGVyLUNhc3QtWmVpdCBiZW51dHp0IHdlcmRlbi4KKyAgICAgU3BlbGxib29rLUNhc3RlbjogTWFwcGluZyB3aXJkIGR1cmNoIEF1ZnJ1ZiB2b24gQ2hlY2tTcGVsbEZhdGlndWUoPGtleT4pCisgICAgIGFtIENhc3RlciBnZWZpbHRlcnQuIE51ciB3ZW5uIGRhcyByZXN1bHRpZXJlbmRlIE1hcHBpbmcgbGVlciBpc3QgKGtlaW4KKyAgICAgPGtleT4gaGF0IGVpbmVuIGd1ZWx0aWdlbiBGYXRpZ3VlLUVpbnRyYWcpLCBpc3QgU3BlbGwgY2FzdGJhciwgc29uc3QKKyAgICAgQXVzZ2FiZSB2b24gU0lfVElNRV9NU0cuCisgICAgIE5hY2ggU3BlbGxib29rLUNhc3RlbjogU2V0emVuIGRlciBGYXRpZ3VlIGZ1ZXIgYWxsZSA8dmFsPiA+IDAgbWl0IDxrZXk+LgorCisgICAgU0lfU0tJTExMRUFSTjogaW50IC8gbWl4ZWQKKyAgICBGQUNUT1IoU0lfU0tJTExMRUFSTik6IGludCAvIG1peGVkCisgICAgT0ZGU0VUKFNJX1NLSUxMTEVBUk4pOiBpbnQgLyBtaXhlZAorICAgICBXZXJ0ZSwgZGllIGZ1ZXIgZGllIEJlcmVjaG51bmcgZGVyIExlcm5nZXNjaHdpbmRpZ2tlaXQgYmVudXR6dAorICAgICB3ZXJkZW4sIG5vcm1hbGVyd2Vpc2UgcHJvIEFfSU5ULzIgamUgMC4wMSUgKGFsc28gMSB2b24gTUFYX0FCSUxJVFkpLgorICAgICBEaWUgQmVyZWNobnVuZyB1bmQgZGllIG1vZWdsaWNoZW4gQW5nYWJlbiAoQ2xvc3VyZSBldGMuKSBzaW5kCisgICAgIGlkZW50aXNjaCB6dSBTSV9TUEVMTENPU1QuCisKKyAgICBTSV9MRUFSTl9BVFRSSUJVVEU6IG1hcHBpbmcKKyAgICAgTWFwcGluZywgd2VsY2hlcyBkaWUgQXR0cmlidXRlLCBuYWNoIGRlbmVuIGdlbGVybnQgd2VyZGVuIHNvbGwKKyAgICAgYWxzIEtleXMgZW50aGFlbHQuIERlciBWYWx1ZSBsZWd0IGRpZSBHZXdpY2h0dW5nIGZlc3QsIGRlbm4gYmVpCisgICAgIG1laHJlcmVuIEF0dHJpYnV0ZW4gd2lyZCBlaW4gTWl0dGVsd2VydCBnZWJpbGRldC4KKyAgICAgRGVyIE5vcm1hbGZhbGwgZW50c3ByYWVjaGUgKFtBX0lOVDogMV0pIGZ1ZXIgU0lfTEVBUk5fQVRUUklCVVRFLgorCisgICAgU0lfTk9fTEVBUk4KKyAgICAgV2VubiBtYW4gKHRlbXBvcmFlciEpIG5pY2h0IHdpbGwsIGRhc3MgZGllc2VyIFNraWxsIGdlbGVybnQgd2lyZC4KKyAgICAgTXVzcyB2b24gZGVuIFNwZWxsYm9va3MgYmVhY2h0ZXQgd2VyZGVuLgorICAgICBTb2xsdGUgbmllbWFscyBpbSBTcGllbGVyIGFiZ2VzcGVpY2hlcnQgd2VyZGVuLiBPZGVyIHBlcm1hbmVudCBpbgorICAgICBHaWxkZS9TcGVsbGJvb2sgZ2VzZXR6dCBzZWluLiBTb25kZXJuIGltIExhdWZlIGVpbmVzciBOdXR6dW5nIGluIGRlcgorICAgICBqZXcuIEtvcGllIHZvbiBzaW5mbyBnZXNldHp0IHdlcmRlbiwgZGllIGdlcmFkZSBnZW51dHp0IHdpcmQuCisgICAgCisgICAgIFNJX1NLSUxMQVJHOiBzdHJpbmcKKyAgICAgQmVpbmhhbHRldCBkZW4gVGV4dCwgZGVuIGRlciBTcGllbGVyIG5hY2ggZGVtIFNwZWxsa29tbWFuZG8gZWluZ2VnZWJlbgorICAgICBoYXQuIFouQi4gc3R1ZW5kZSBiZWkgImtyYWxsZW5zY2hsYWcgb3JrIDIiIGRlciBUZXh0ICJvcmsgMiIgaW0KKyAgICAgUGFyYW1ldGVyLgorCisgICAgU0lfU0tJTExSRVNUUl9VU0U6IG1peGVkCisgICAgIEVpbnNjaHJhZW5rdW5nZW4gZnVlciBkYXMgTnV0emVuIGRlcyBTcGVsbHMuCisgICAgIFdpcmQgbm9ybWFsZXJ3ZWlzZSBkaXJla3QgaW0gU3BlbGxib29rIGZ1ZXIgZGVuIFNwZWxsIGVpbmdldHJhZ2VuLgorICAgICBEaWUgZWluemVsbmVuIE1vZWdsaWNoa2VpdGVuIHdlcmRlbiBpbiBkZXIgbWFucGFnZSB6dQorICAgICAiY2hlY2tfcmVzdHJpY3Rpb25zIiBlcmxhZXV0ZXJ0LgorICAgICAKKyAgICBTSV9TS0lMTFJFU1RSX0xFQVJOOiBtaXhlZAorICAgICBFaW5zY2hyYWVua3VuZ2VuIGZ1ZXIgZGFzIExlcm5lbiBkZXMgU3BlbGxzLgorICAgICBXaXJkIG5vcm1hbGVyd2Vpc2UgZGlyZWt0IGltIEdpbGRlbm9iamVrdCBmdWVyIGRlbiBTcGVsbAorICAgICBlaW5nZXRyYWdlbi4KKyAgICAgRGllIGVpbnplbG5lbiBNb2VnbGljaGtlaXRlbiB3ZXJkZW4gaW4gZGVyIG1hbnBhZ2UgenUKKyAgICAgImNoZWNrX3Jlc3RyaWN0aW9ucyIgZXJsYWV1dGVydC4KKworICAgIFNJX1NLSUxMSU5GTzogc3RyaW5nCisgICAgU0lfU0tJTExJTkZPX0xPTkc6IHN0cmluZworICAgICBCZXNjaHJlaWJ1bmcgZGVzIFNwZWxscy4gV2lyZCBpbSBHaWxkZW5vYmpla3QgZWluZ2V0cmFnZW4gdW5kCisgICAgIFNJX1NLSUxMSU5GTyB3aXJkIHZvbiBTa2lsbExpc3RlIGFuZ2V6ZWlndC4KKworICAgIFNJX1NLSUxMREFNQUdFOiBpbnQgLyBtaXhlZAorICAgIEZBQ1RPUihTSV9TS0lMTERBTUFHRSk6IGludCAvIG1peGVkCisgICAgT0ZGU0VUKFNJX1NLSUxMREFNQUdFKTogaW50IC8gbWl4ZWQKKyAgICAgV2VydGUsIGRpZSBmdWVyIGRpZSBTY2hhZGVuc2hvZWhlbmJlcmVjaG51bmcgZGVzIFNwZWxscyBiZW51dHp0CisgICAgIHdlcmRlbiAocmFuZG9tIHVlYmVyIGRlbiBHZXNhbXR3ZXJ0IG5vcm1hbGVyd2Vpc2UpLgorICAgICBEaWUgQmVyZWNobnVuZyB1bmQgZGllIG1vZWdsaWNoZW4gQW5nYWJlbiAoQ2xvc3VyZSBldGMuKSBzaW5kCisgICAgIGlkZW50aXNjaCB6dSBTSV9TUEVMTENPU1QuCisKKyAgICBTSV9TS0lMTERBTUFHRV9CWV9ST1cKKyAgICAgRWluIE1hcHBpbmcgbWl0IEJvbmkgZnVlciBkZW4gQW5ncmlmZiBhdXMgYmVzdGltbXRlbiBLYW1wZnJlaWhlbi4KKyAgICAgRnVua3Rpb25pZXJ0IG51ciBiZWkgVmVyd2VuZHVuZyB2b24gVHJ5RGVmYXVsdEF0dGFja1NwZWxsLVNwZWxscworICAgICBhdXMgZGVtIFNwZWxsYm9vay4KKyAgICAgRGVyIEtleSBzdGVodCBmdWVyIGVpbmUgYmVzdGltbXRlIFJlaWhlLCBzZWluIFdlcnQgZnVlciBkZW4KKyAgICAgcmFuZG9taXNpZXJ0ZW4gQm9udXMgZnVlciBMZWJld2VzZW4sIGRpZSBhdXMgZGllc2VyIFJlaWhlIGNhc3Rlbi4KKyAgICBPRkZTRVQoU0lfU0tJTExEQU1BR0VfQllfUk9XKQorICAgICBFaW4gTWFwcGluZyBtaXQgZml4ZW0gV2VydCBmdWVyIFJvdy1Cb25pIGltIEthbXBmLgorCisgICAgIEJlaXNwaWVsOiBBZGRTcGVsbCgiZmV1ZXJiYWxsIiwgMjAsCisgICAgICAgICAgICAgICAgICAgICAgICAoW1NJX1NLSUxMREFNQUdFOjUwLAorICAgICAgICAgICAgICAgICAgICAgICAgICBPRkZTRVQoU0lfU0tJTExEQU1BR0UpOjEwMCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgU0lfU0tJTExEQU1BR0VfQllfUk9XOihbMjo0MCwzOjIwfSksCisgICAgICAgICAgICAgICAgICAgICAgICAgIE9GRlNFVChTSV9TS0lMTERBTUFHRV9CWV9ST1cpOihbMjoyMF0pLCAuLi4KKyAgICAgZ2lidAorICAgICAgUmVpaGUgMTogcmFuZG9tKDUwKSsxMDA7CisgICAgICBSZWloZSAyOiByYW5kb20oNTApKzEwMCtyYW5kb20oNDApKzIwCisgICAgICBSZWloZSAzOiByYW5kb20oNTApKzEwMCtyYW5kb20oMjApCisgICAgIEFDSFRVTkc6IEhpZXIgZ2lsdCBuaWNodCBkaWUgc2VsYmUgU3RydWt0dXIgd2llIGJlaSBTSV9TUEVMTENPU1QhCisKKyAgICBTSV9TUEVMTDogbWFwcGluZworICAgICBEaWVzZXIgRWludHJhZyBlbnRoYWVsdCB2ZXJzY2hpZWRlbmUgVW50ZXJ3ZXJ0ZSwgZGllIGRlbiBTcGVsbAorICAgICBnZXJhZGUgZnVlciBBbmdyaWZmcy1TcGVsbHMgZ2VuYXVlciBiZXNjaHJlaWJlbi4gU2llaGUgRGVmZW5kKCkKKyAgICAgZnVlciBlaW5lIEJlc2NocmVpYnVuZyBkZXIgdmVyc2NoaWVkZW5lbiBFaW50cmFlZ2UgKGRpZSBzbyBhdWNoCisgICAgIGluIGRhcyBTcGVsbGJvb2sgdWViZXJub21tZW4gd2VyZGVuIGtvZW5uZW4pLgorCisgICAgU0lfQ09MTEFURVJBTF9EQU1BR0U6IGludAorICAgICBIaWVybWl0IGthbm4gbWFuIGVpbmVuIFByb3plbnR3ZXJ0IHZvbiBTSV9TS0lMTERBTUFHRSAoaW5rbHVzaXZlCisgICAgIE9mZnNldHMgdW5kIEZhY3RvcikgZnVlciBLb2xsYXRlcmFsc2NoYWRlbiBhbiBGcmV1bmRlbiBpbSBkZWZpbmllcnRlbgorICAgICBCZXJlaWNoIGVpbmVzIEZsYWVjaGVuc3BlbGxzIChUcnlHbG9iYWxBdHRhY2tTcGVsbCgpKSBhbmdlYmVuLgorICAgICAxMCBiZWRldXRldCBiZWkgT0ZGU0VUKFNJX1NLSUxMREFNQUdFKT0xMDAgekIgMTAlIHZvbiAxMDAgPSAxMCA9IDEgTFAKKyAgICAgYW4gbWl0IHJlZHVjZV9oaXRfcG9pbnRzKCkgdmVydXJzYWNodGVtIFNjaGFkZW4uCisgICAgCisgICAgU0lfTlVNQkVSX0VORU1JRVMsIFNJX05VTUJFUl9GUklFTkRTOiBpbnQKKyAgICAgV2lyZCB2b24gVHJ5R2xvYmFsQXR0YWNrU3BlbGwoKSBpbSBTcGVsbCBnZXNldHp0IHVuZCBlbnRoYWVsdCBkaWUKKyAgICAgQW56YWhsIGRlciBpbSBhbmdlZ2ViZW5lbiBCZXJlaWNoIGJlZmluZGxpY2hlbiBGZWluZGUgdW5kIEZyZXVuZGUuCisgICAgIElzdCBkZW1lbnRzcHJlY2hlbmQgdm9uIGluZm9ybWF0aXZlbSBOdXR6ZW4gZnVlciBkZW4gQW5nZWdyaWZmZW5lbgorICAgICB1bmQgZGFzIFNwZWxsYm9vayBOQUNIIEF1ZnJ1ZiB2b24gVHJ5R2xvYmFsQXR0YWNrU3BlbGwoKS4KKyAgICAKKyAgICBTSV9ESVNUQU5DRSwgU0lfV0lEVEgsIFNJX0RFUFRIOiBpbnQKKyAgICAgTGltaXRpZXJ0IGRpZSBFbnRmZXJudW5nLCBUaWVmZW4gdW5kIEJyZWl0ZSBkZXIgV2lya3VuZyBlaW5lcworICAgICBUcnlHbG9iYWxBdHRhY2tTcGVsbCgpCisKKyAgICBTSV9TS0lMTEhFQUw6IGludAorICAgICBLb252ZW50aW9uIGZ1ZXIgU3BlbGxzIGltIFNwZWxsYm9vaywgZG9ydCBkZW4gSGVpbHdlcnQgenUgaGludGVybGVnZW4sCisgICAgIGhhdCBrZWluZSBBdXN3aXJrdW5nZW4gdW50ZXIgL3N0ZC8uCisKKyAgICBTSV9VU1I6IG1peGVkCisgICAgIEZ1ZXIgc2VsYnN0IGRlZmluaWVydGUgSW5mb3MsIHNwZWxsYm9va2FiaGFlbmdpZy4KKworICAgIFNJX1BSRVBBUkVfVElNRTogaW50CisgICAgIERhdWVyIGRlciBaZWl0IGZ1ZXIgenUgcHJhZXBhcmllcmVuZGUgU3BlbGxzLgorCisgICAgU0lfQVRUQUNLX0JVU1lfTVNHOiBzdHJpbmcKKyAgICAgTWVsZHVuZywgZGllIGRlbSBTcGllbGVyIG1pdHRlaWx0LCBkYXNzIGVyIHNjaG9uIHp1IGJlc2NoYWVmdGlndAorICAgICBtaXQgZWluZW0gQW5ncmlmZiBpc3QsIHVtIGVpbmVuIFNwZWxsIHp1IGNhc3Rlbi4gRmFsbHMgZGllc2VyCisgICAgIEVpbnRyYWcgbmljaHQgZ2VzZXR6dCBpc3QsIHdpcmQgIGVpbiBTdGFuZGFyZHRleHQgYXVzZ2VnZWJlbi4KKworICAgIFNJX05PX0FUVEFDS19CVVNZOiBpbnQKKyAgICAgRW50aGFlbHQgYWxzIEZsYWcgTk9fQVRUQUNLX0JVU1lfUVVFUlkgd2VubiBkZXIgU3BlbGwgTklDSFQgd2llCisgICAgIGVpbmUgU3BlemlhbHdhZmZlIGRpZSBBa3Rpb25lbiBlaW5zY2hyYWVua3QuIFNpZWhlIFBfQVRUQUNLX0JVU1kuCisKKyAgICBTSV9BVFRBQ0tfQlVTWV9BTU9VTlQ6IGludAorICAgICBNZW5nZSBkZXMgUF9BVFRBQ0tfQlVTWSBmdWVyIGRpZXNlbiBTcGVsbC4gRmFsbHMgZGllc2VyIFdlcnQgbmljaHQKKyAgICAgZ2VzZXR6dCBpc3QsIGFiZXIgYXVjaCBTSV9OT19BVFRBQ0tfQlVTWSBuaWNodCBtaXQKKyAgICAgTk9fQVRUQUNLX0JVU1lfUVVFUlkgYXVzZ2V6ZWljaG5ldCBpc3Qgd2lyZCAxIGFuZ2Vub21tZW4uCisKK1NJRUhFIEFVQ0g6CisgICAgU2tpbGxzIExlcm5lbjogIExlYXJuU2tpbGwsIE1vZGlmeVNraWxsLCBMaW1pdEFiaWxpdHkKKyAgICAqIE51dHp1bmc6ICAgICAgVXNlU3BlbGwsIFVzZVNraWxsCisgICAgKiBBYmZyYWdlbjogICAgIFF1ZXJ5U2tpbGwsIFF1ZXJ5U2tpbGxBYmlsaXR5CisgICAgKiBNb2RpZmlrYXRpb246IE1vZGlmeVNraWxsQXR0cmlidXRlLCBRdWVyeVNraWxsQXR0cmlidXRlLAorICAgICAgICAgICAgICAgICAgICBRdWVyeVNraWxsQXR0cmlidXRlTW9kaWZpZXIsIFJlbW92ZVNraWxsQXR0cmlidXRlTW9kaWZpZXIKKyAgICAgICogUHJvcGVydGllczogUF9TS0lMTF9BVFRSSUJVVEVTLCBQX1NLSUxMX0FUVFJJQlVURV9PRkZTRVRTCisgICAgKiBzb25zdGlnOiAgICAgIHNwcnVjaGVybXVlZHVuZworICAgICogUHJvcGVydGllczogICBQX05FV1NLSUxMUworICAgIFNwZWxsYm9vazogICAgICBVc2VTcGVsbCwgTGVhcm4sIFNwZWxsU3VjY2VzcworICAgIEdpbGRlbjogICAgICAgICBnaWxkZW4tZG9rdQorICAgIEthbXBmOiAgICAgICAgICBEZWZlbmQKKworNy4gTm92IDIwMTIgR2xvaW5zb24KZGlmZiAtLWdpdCBhL2RvYy9wcm9wcy9zdm4tY29tbWl0LnRtcCBiL2RvYy9wcm9wcy9zdm4tY29tbWl0LnRtcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4yNGZmZTc2Ci0tLSAvZGV2L251bGwKKysrIGIvZG9jL3Byb3BzL3N2bi1jb21taXQudG1wCkBAIC0wLDAgKzEsNiBAQAorCistLVRoaXMgbGluZSwgYW5kIHRob3NlIGJlbG93LCB3aWxsIGJlIGlnbm9yZWQtLQorCitNICAgIFBfRlVFTAorTSAgICBQX0xJR0hUREVTQworTSAgICBQX0RPX0RFU1RSVUNUCmRpZmYgLS1naXQgYS9kb2Mvc2NtZC8ucmVhZG1lIGIvZG9jL3NjbWQvLnJlYWRtZQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5iNGQ2OWNhCi0tLSAvZGV2L251bGwKKysrIGIvZG9jL3NjbWQvLnJlYWRtZQpAQCAtMCwwICsxLDYgQEAKK0hpZXIgYmVmaW5kZW4gc2ljaCBkaWUgSGlsZmVzZWl0ZW4sIGRpZSBmdWVyIFNlaGVyIGludGVyZXNzYW50IHNpbmQ6CisKKyAqIEJlc2NocmVpYnVuZyBkZXIgbmV1ZW4gQmVmZWhsZQorICogYWxsZ2VtZWluZSBJbmZvcm1hdGlvbmVuIHp1bSBCYXUgZWluZXMgU2VoZXJoYXVzZXMKKyAqIEJlc2NocmVpYnVuZyBkZXIgQmVmZWhsZSwgZGllIGRpZSBTZWhlcmhhZXVzZXIgenVyIFZlcmZ1ZWd1bmcgc3RlbGxlbgorCmRpZmYgLS1naXQgYS9kb2Mvc2NtZC8uc3lub255bSBiL2RvYy9zY21kLy5zeW5vbnltCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjI1NmUzYjcKLS0tIC9kZXYvbnVsbAorKysgYi9kb2Mvc2NtZC8uc3lub255bQpAQCAtMCwwICsxLDMgQEAKK3I6IHJlbW90ZQorcjsgcmVtb3RlCisKZGlmZiAtLWdpdCBhL2RvYy9zY21kL2FlbmRlcmUgYi9kb2Mvc2NtZC9hZW5kZXJlCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmUyNDQ3ZWYKLS0tIC9kZXYvbnVsbAorKysgYi9kb2Mvc2NtZC9hZW5kZXJlCkBAIC0wLDAgKzEsNTIgQEAKKworYWVuZGVyZQorLS0tLS0tLQorCisgU0VIRVJIQVVTS09NTUFORE86CisgICAgYWVuZGVyZSA8aGF1cz4gbGFuZworICAgIGFlbmRlcmUgZGV0YWlsIDxkZXQ+CisgICAgYWVuZGVyZSBsZXNiYXJlcyBkZXRhaWwgPGRldD4KKyAgICBhZW5kZXJlIGJlZmVobCA8YmVmPgorICAgIGFlbmRlcmUgPHRydWhlPgorICAgIGFlbmRlcmUgbWVsZHVuZ2VuCisKKyBBUkdVTUVOVEU6CisKKyAgICAgPGhhdXM+CisgICAgICAgIGVpbmUgZ3VlbHRpZ2UgQmV6ZWljaG51bmcgZGVzIEhhdXNlcy4gR3VlbHRpZ2UgQmV6ZWljaG51bmdlbiBzaW5kCisgICAgICAgIGlubmVyaGFsYiBkZXMgSGF1c2VzICJoYXVzIiB1bmQgInJhdW0iLCBhdXNzZXJoYWxiIGRlcyBIYXVzZXMgZGllCisgICAgICAgIEJlZ3JpZmZlLCBtaXQgZGVuZW4gc2ljaCBkYXMgSGF1cyBhbnNwcmVjaGVuIGxhZXNzdC4KKyAgICAgPGRldD4KKyAgICAgICAgTmFtZSBkZXMgenUgYWVuZGVybmRlbiAobGVzYmFyZW4pIERldGFpbHMuIEVzIGthbm4gaW1tZXIgbnVyIGVpbgorICAgICAgICAobGVzYmFyZXMpIERldGFpbCBnbGVpY2h6ZWl0aWcgZ2VhZW5kZXJ0IHdlcmRlbiEKKyAgICAgPGJlZj4KKyAgICAgICAgTmFtZSBkZXMgenUgYWVuZGVybmRlbiBCZWZlaGxzIChWZXJiICsgUGFyYW1ldGVyKQorICAgICA8dHJ1aGU+CisgICAgICAgIGVpbmUgZ3VlbHRpZ2UgQmV6ZWljaG51bmcgZGVyIFRydWhlLgorCisgQkVTQ0hSRUlCVU5HOgorICAgIE1pdCBkaWVzZW0gQmVmZWhsIGlzdCBlcyBtb2VnbGljaCwgc2Nob24gdm9yaGFuZGVuZSBCZXNjaHJlaWJ1bmdlbiB6dQorICAgIGFlbmRlcm4uIERpZXMgaXN0IHp1bSBCZWlzcGllbCBub2V0aWcsIHdlbm4gbWFuIChvZGVyIGVpbiBTcGllbGVyKSBlaW5lbgorICAgIFRpcHBmZWhsZXIgZ2VmdW5kZW4gaGF0LCBvZGVyIHdlbm4gbWFuIGVpbmUgQmVzY2hyZWlidW5nIG5vY2ggZWluIHdlbmlnCisgICAgZXJ3ZWl0ZXJuIG1vZWNodGUuCisKKyAgICBCZWkgenUgYWVuZGVybmRlbiAobGVzYmFyZW4pIERldGFpbHMgdW5kIEJlZmVobGVuIHdlcmRlbiBhbGxlIG1laHJmYWNoCisgICAgYXVmdHJldGVuZGVuIFRleHRlIGdsZWljaHplaXRpZyBnZWFlbmRlcnQgKGQuaC4gd2VubiBtYW4gZGllIERldGFpbHMKKyAgICAid2FuZCIgdW5kICJ3YWVuZGUiIG1pdCBkZW4gZ2xlaWNoZW4gQmVzY2hyZWlidW5nZW4gdmVyc2VoZW4gaGF0LCB3aXJkIGJlaQorICAgIGFlbmRlcmUgZGV0YWlsIHdhbmQgYXVjaCBkZXIgVGV4dCB2b24gIndhZW5kZSIgZ2VhZW5kZXJ0KS4KKworICAgIEdlYWVuZGVydCB3ZXJkZW4ga29lbm5lbiBkaWUgTGFuZ2Jlc2NocmVpYnVuZ2VuIGRlcyBIYXVzZXMgKGlubmVuIHVuZAorICAgIGF1c3NlbiksIGRpZSBMYW5nYmVzY2hyZWlidW5nIGRlciBUcnVoZSwgRGV0YWlscywgbGVzYmFyZSBEZXRhaWxzLCBCZWZlaGxlCisgICAgc293aWUgZGllIExpc3RlIGRlciBSdWVja21lbGR1bmdlbiB2b24gU3BpZWxlcm4gKGFsc28gdHlwbywgZmVobGVyIHVuZAorICAgIGlkZWUpLiBEYXMgaXN0IHJlY2h0IG51ZXR6bGljaCwgZGFtaXQgbWFuIGRpZSBNZWxkdW5nZW4sIGRpZSBtYW4gc2Nob24KKyAgICBhYmdlYXJiZWl0ZXQgaGF0LCB3aWVkZXIgbG9zIHdpcmQuCisKKyAgICBEZXIgenUgYWVuZGVybmRlIFRleHQgd2lyZCBpbiBkZW4gRWRpdG9yIGdlbGFkZW4gdW5kIGthbm4gd2llIGdld29obnQKKyAgICBiZWFyYmVpdGV0IHdlcmRlbi4gRGVyIEN1cnNvciBiZWZpbmRldCBzaWNoIGRhYmVpIHp1IEJlZ2lubiBnYW56IGFtIEVuZGUKKyAgICBkZXMgVGV4dGVzLgorCisgU0lFSEUgQVVDSDoKKyAgICBiZXNjaHJlaWJlLCBiZWZlaGwsIGxvZXNjaGUsIGtvcGllcmUsIG1lbGR1bmdlbiwgdWViZXJzaWNodCwgbm90aXoKKworIExFVFpURSBBZU5ERVJVTkc6CisgICAgVGh1LCAyNC4wNy4xOTk3LCAwOTowMDowMCB2b24gV2FyZ29uCmRpZmYgLS1naXQgYS9kb2Mvc2NtZC9hdXNnYW5nIGIvZG9jL3NjbWQvYXVzZ2FuZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4yYjk1MGQ2Ci0tLSAvZGV2L251bGwKKysrIGIvZG9jL3NjbWQvYXVzZ2FuZwpAQCAtMCwwICsxLDUzIEBACisKK2F1c2dhbmcKKy0tLS0tLS0KKworIFNFSEVSSEFVU0tPTU1BTkRPOgorICAgIGF1c2dhbmcgPHJpY2h0dW5nPiA8bnI+CisgICAgYXVzZ2FuZyA8cmljaHR1bmc+IDxuYW1lPiA8bnI+CisKKyBBUkdVTUVOVEU6CisKKyAgICAgPHJpY2h0dW5nPgorICAgICAgICBSaWNodHVuZyBkZXMgZ2V3dWVuc2NodGVuIEF1c2dhbmdzLiBFcyBzaW5kIG51ciBkaWUgYWNodAorICAgICAgICBIaW1tZWxzcmljaHR1bmdlbiBzb3dpZSAib2JlbiIgdW5kICJ1bnRlbiIgZXJsYXVidC4gRGllIFJpY2h0dW5nIG11c3MKKyAgICAgICAgYXVzZ2VzY2hyaWViZW4gd2VyZGVuLCBkLmguIGVzIG11c3MgaGVpc3NlbiBhdXNnYW5nIHN1ZWR3ZXN0ZW4gMiBzdGF0dAorICAgICAgICBhdXNnYW5nIHN3IDIhCisgICAgIDxucj4KKyAgICAgICAgTnVtbWVyIGRlcyBaaWVscmF1bWVzLCB6dSBkZW0gZGVyIEF1c2dhbmcgZ2VoZW4gc29sbC4KKyAgICAgPG5hbWU+CisgICAgICAgIE5hbWUgZGVzIFNlaGVycywgenUgZGVzc2VuIEhhdXMgZGVyIEF1c2dhbmcgZnVlaHJlbiBzb2xsLiBEaWVzIGlzdAorICAgICAgICBuaWNodCBvaG5lIHdlaXRlcmVzIG1vZWdsaWNoLCBzLnUuIQorCisgQkVTQ0hSRUlCVU5HOgorICAgIE1pdCBkaWVzZW0gQmVmZWhsIGthbm4gbWFuIGRlbSBSYXVtLCBpbiBkZW0gbWFuIGdlcmFkZSBzdGVodCwgZWluZW4KKyAgICB3ZWl0ZXJlbiBBdXNnYW5nIGhpbnp1ZnVlZ2VuLiBJbSBaaWVscmF1bSBlbnRzdGVodCBkYWJlaSBhdXRvbWF0aXNjaCBlaW4KKyAgICBBdXNnYW5nIGluIGRpZSBSdWVja3JpY2h0dW5nLgorCisgICAgRXMgc2luZCBmb2xnZW5kZSBSZWdlbG4genUgYmVhY2h0ZW46CisKKyAgICAgKiBlcyBkYXJmIGluIGRpZXNlbSBSYXVtIG5vY2gga2VpbmVuIEF1c2dhbmcgaW4gZGllIFppZWxyaWNodHVuZyBnZWJlbiEKKyAgICAgKiBlcyBkYXJmIGltIFppZWxyYXVtIG5vY2gga2VpbmVuIEF1c2dhbmcgaW4gZGllIFJ1ZWNrcmljaHR1bmcgZ2ViZW4gKGRpZQorICAgICAgIFJ1ZWNrcmljaHR1bmcgZXJoYWVsdCBtYW4sIHdlbm4gbWFuIGluIGRlciBIaW5yaWNodHVuZyAib3N0ZW4iIHVuZAorICAgICAgICJ3ZXN0ZW4iLCAibm9yZGVuIiB1bmQgInN1ZWRlbiIgc293aWUgIm9iZW4iIHVuZCAidW50ZW4iIGpld2VpbHMKKyAgICAgICBnZWdlbmVpbmFuZGVyIGF1c3RhdXNjaHQpIQorICAgICAqIHdlbm4gZGVyIEF1c2dhbmcgaW5zIGVpZ2VuZSBIYXVzIGdlaHQsIGRhcmYgPG5yPiBuaWNodCBkaWUgTnVtbWVyIGRlcworICAgICAgIFJhdW1lcyBzZWluLCBpbiBkZW0gbWFuIGdlcmFkZSBzdGVodCEKKyAgICAgKiBlcyBtdXNzIGluIGRlbSBIYXVzIG5hdHVlcmxpY2ggc2Nob24gZWluIFJhdW0gbWl0IGRlciBOdW1tZXIgPG5yPgorICAgICAgIGV4aXN0aWVyZW4hCisKKyAgICBXaWxsIG1hbiBzZWluIEhhdXMgbWl0IGVpbmVtIGFuZGVyZW4gSGF1cyB2ZXJiaW5kZW4sIHNvIGlzdCB6dXNhZXR6bGljaAorICAgIGZvbGdlbmRlcyB6dSBiZWFjaHRlbjoKKworICAgICAqIGRhcyBaaWVsaGF1cyBtdXNzIHNpY2ggaW0gZ2xlaWNoZW4gUmF1bSBiZWZpbmRlbiB3aWUgZGFzIGVpZ2VuZSBIYXVzIQorICAgICAqIGRlciBCZXNpdHplciBkZXMgWmllbGhhdXNlcyBoYXQgRGlyIG1pdCBlcmxhdWJlIGRlbiBadWdyaWZmIGF1ZiBzZWluCisgICAgICAgSGF1cyBnZXdhZWhydCEKKworICAgIERpZSBOdW1tZXIgZGVzIFJhdW1lcywgaW4gZGVtIER1IHN0ZWhzdCwgd2lyZCBiZWkgZGVtIEtvbW1hbmRvIHVlYmVyc2ljaHQKKyAgICBtaXQgYXVzZ2VnZWJlbiAod2VubiBEdSB1ZWJlciBtZWhyIGFscyBlaW5lbiBSYXVtIHZlcmZ1ZWdzdCkuCisKKyBTSUVIRSBBVUNIOgorICAgIHNwZXJyZSwgdWViZXJzaWNodAorCisgTEVUWlRFIEFlTkRFUlVORzoKKyAgICBUaHUsIDI0LjA3LjE5OTcsIDA5OjAwOjAwIHZvbiBXYXJnb24KZGlmZiAtLWdpdCBhL2RvYy9zY21kL2JlZmVobCBiL2RvYy9zY21kL2JlZmVobApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi40Zjk5YjNjCi0tLSAvZGV2L251bGwKKysrIGIvZG9jL3NjbWQvYmVmZWhsCkBAIC0wLDAgKzEsMjA3IEBACisKK2JlZmVobAorLS0tLS0tCisKKyBTRUhFUkhBVVNLT01NQU5ETzoKKyAgICBiZXNjaHJlaWJlIGJlZmVobCA8YmVmPgorCisgQVJHVU1FTlRFOgorCisgICAgIDxiZWY+CisgICAgICAgIExpc3RlIGRlciB6dSBiZXNjaHJlaWJlbmRlbiBCZWZlaGxlLiBCZWkgbWVocmVyZW4gQmVmZWhsZW4gbXVlc3NlbgorICAgICAgICBkaWVzZSBkdXJjaCBLb21tYXRhIHZvbmVpbmFuZGVyIGdldHJlbm50IHNlaW4uIEVzIGR1ZXJmZW4gbnVyIFZlcmJlbgorICAgICAgICBhbmdlZ2ViZW4gd2VyZGVuLCBvaG5lIFBhcmFtZXRlciEKKworIEJFU0NIUkVJQlVORzoKKyAgICBCZWdpbm50IG1pdCBkZXIgQmVzY2hyZWlidW5nIGRlcyBCZWZlaGxlcyA8YmVmPiAob2RlciBtZWhyZXJlLCBmYWxscyBlcworICAgIHNpY2ggYmVpIDxiZWY+IHVtIGVpbmUgTGlzdGUgdm9uIFZlcmJlbiBoYW5kZWx0KS4KKworICAgIERpZSBTdGFuZGFyZC1IYXVza29tbWFuZG9zIChiZXNjaHJlaWJlLCBsb2VzY2hlLCBldGMuKSBkdWVyZmVuIE5JQ0hUCisgICAgYmVzY2hyaWViZW4gd2VyZGVuISBFaW56aWdlIEF1c25haG1lbjogIm9lZmZuZSIsICJzY2hsaWVzc2UiIHVuZAorICAgICJzY2hsaWVzcyIuCisKKyAgICBBdXNnYW5nc2JlZmVobGUgKEhpbW1lbHNyaWNodHVuZ2VuLCAib2JlbiIsICJ1bnRlbiIgdW5kICJyYXVzIikga29lbm5lbgorICAgIGJlc2NocmllYmVuIHdlcmRlbjsgYWJlciBudXIgZGFubiwgd2VubiBlcyBhdWNoIGVpbmVuIGVudHNwcmVjaGVuZGVuCisgICAgQXVzZ2FuZyBnaWJ0LiBTcGVycnQgbWFuIGhpbnRlcmhlciBlaW5lbiBBdXNnYW5nLCB6dSBkZW0gZXMgZWluZW4gQmVmZWhsCisgICAgZ2lidCwgc28gd2lyZCBkZXIgQmVmZWhsIHdpZWRlciBnZWxvZXNjaHQhCisKKyAgICBBbnNjaGxpZXNzZW5kIHdpcmQgbWFuIG5hY2ggZGVuIFBhcmFtZXRlcm4gZnVlciBkZW4gQmVmZWhsIGdlZnJhZ3QuIEF1Y2gKKyAgICBoaWVyIGtvZW5uZW4gbWVocmVyZSBQYXJhbWV0ZXIgZHVyY2ggS29tbWF0YSB2b25laW5hbmRlciBnZXRyZW5udCB3ZXJkZW47CisgICAgYXVzc2VyZGVtIGthbm4gbWFuIGhpZXIgbWVocmVyZSBXb2VydGVyIGJlbnV0emVuIChzaWVoZSBkYXp1IGF1Y2ggZGFzCisgICAgQmVpc3BpZWwgdW50ZW4pLiBNYW4ga2FubiBhbGxlcmRpbmdzIGF1Y2ggZ2FueiBhdWYgUGFyYW1ldGVyIHZlcnppY2h0ZW4KKyAgICB1bmQgZWluZmFjaCA8UkVUVVJOPiBkcnVlY2tlbi4KKworICAgIFNjaGxpZXNzbGljaCB3aXJkIG1hbiBuYWNoIGRlbSBUZXh0IGdlZnJhZ3QsIGRlciBhbHMgUmVha3Rpb24gYXVmIGRlbgorICAgIEJlZmVobCBhdXNnZWdlYmVuIHdlcmRlbiBzb2xsLiBEYXp1IHN0ZWh0IHdpZWRlciBkZXIgRWRpdG9yIHp1cgorICAgIFZlcmZ1ZWd1bmcuIE1hbiBnaWJ0IGluIGVpbmVtIFJ1dHNjaCBzb3dvaGwgZGVuIFRleHQgZnVlciBkZW5qZW5pZ2VuIGVpbiwKKyAgICBkZXIgZGVuIEJlZmVobCBhdXNmdWVocnQsIGFscyBhdWNoIGRlbiBUZXh0IGZ1ZXIgZGllIExldXRlLCBkaWUgc2ljaCBpbQorICAgIGdsZWljaGVuIFJhdW0gYmVmaW5kZW4uIERpZSBUZXh0ZSB3ZXJkZW4gZHVyY2ggZWluZSBaZWlsZSBtaXQgZWluZW0gQEAKKyAgICB2b25laW5hbmRlciBnZXRyZW5udC4KKworICAgIEluIGRlbiBUZXh0ZW4gc2luZCB2ZXJzY2hpZWRlbmUgUGxhdHpoYWx0ZXIgbW9lZ2xpY2gsIHVtIGluIGRlbiBlaW56ZWxuZW4KKyAgICBCZWZlaGxlbiBkaWZmZXJlbnppZXJ0ZXJlIEFrdGlvbmVuIHp1enVsYXNzZW46CisKKyAgICAgKiBEZXIgTmFtZSBkZXMvZGVyIEF1c2Z1ZWhyZW5kZW4gbGFlc3N0IHNpY2ggbWl0IEBXRVIsIEBXRVNTRU4sIEBXRU0gdW5kCisgICAgICAgQFdFTiBlaW5iYXVlbiAoamV3ZWlscyBpbSBlbnRzcHJlY2hlbmRlbiBGYWxsKS4KKyAgICAgKiBQZXJzb25hbHByb25vbWluYSBzaW5kIG1pdCBAUFdFUiwgLi4uIG1vZWdsaWNoLiBFcyBpc3QgZGFiZWkgamVkb2NoIHp1CisgICAgICAgYmVhY2h0ZW4sIGRhc3Mgc2llICprbGVpbmdlc2NocmllYmVuKiBlaW5nZWZ1ZWd0IHdlcmRlbiEgTWFuIHNvbGx0ZSBzaWUKKyAgICAgICBhbHNvIG5pY2h0IHVuYmVkaW5ndCBhbSBTYXR6YW5mYW5nIGJlbnV0emVuLgorICAgICAqIFBvc3Nlc3NpdnByb25vbWluYTogRGFzIGlzdCBldHdhcyBrb21wbGl6aWVydGVyLCBkZW5uIGhpZXIgbXVlc3NlbiBub2NoCisgICAgICAgR2VzY2hsZWNodCB1bmQgQW56YWhsIGRlcyBPYmpla3RlcyBhbmdlZ2ViZW4gd2VyZGVuLCBhdWYgZGFzIHNpY2ggZGFzCisgICAgICAgUG9zc2Vzc2l2cHJvbm9tZW4gYmV6aWVodC4gRGVyIEF1ZmJhdSBkZXMgUGxhdHpoYWx0ZXJzOgorICAgICAgIEBCLCBnZWZvbGd0IHZvbiBNLCBGIG9kZXIgTiBmdWVyIGRhcyBHZXNjaGxlY2h0IGRlcyBCZXp1Z3NvYmpla3RlcworICAgICAgIChNYXNrdWxpbnVtLCBGZW1pbmludW0gb2RlciBOZXV0cnVtKSwgUyBvZGVyIFAgZnVlciBkaWUgQW56YWhsCisgICAgICAgKFNpbmd1bGFyIG9kZXIgUGx1cmFsKSB1bmQgc2NobGllc3NsaWNoIFdFUiwgV0VTU0VOLCBXRU0gb2RlciBXRU4gZnVlcgorICAgICAgIGRlbiBGYWxsIGRlcyBQcm9ub21lbnMgYW4gc2ljaC4KKyAgICAgICBEYXMgZnVlaHJ0IGRhbm4genUgS29uc3RydWt0aW9uZW4gd2llIEBCTVNXRVIgb2RlciBAQkZQV0VOLiBBbSBiZXN0ZW4sCisgICAgICAgbWFuIHByb2JpZXJ0IGVzIGVpbmZhY2ggbWFsIGF1cyAoc2llaGUgYWJlciBhdWNoIGRpZSBCZWlzcGllbGUpLgorICAgICAgIEF1Y2ggaGllciBnaWx0IHVlYnJpZ2VucyB3aWVkZXI6IERpZSBQcm9ub21pbmEgd2VyZGVuIGtsZWluZ2VzY2hyaWViZW4KKyAgICAgICBlaW5nZWZ1ZWd0IQorCisgICAgV2VpdGVyZSBNb2VnbGljaGtlaXRlbiBzaW5kIHJhc3Nlbi0sIG5hbWVucy0gdW5kIGdlc2NobGVjaHRzc3BlemlmaXNjaGUKKyAgICBBdXNnYWJlbi4KKyAKKyAgICBBbHMgVHJlbm5lciBkaWVuZW4gQEcgZnVlciBnZXNjaGxlY2h0c3NwZXppZmlzY2hlIEF1c2dhYmVuIHVuZCBAUkUgKGZ1ZXIKKyAgICBFbGZlbiksIEBSSCAoZnVlciBIb2JiaXRzKSwgQFJNIChmdWVyIE1lbnNjaGVuKSwgQFJaIChmdWVyIFp3ZXJnZSksIAorICAgIEBSRiAoZnVlciBGZWxpbmVuKSwgQFJEIChmdWVyIER1bmtlbGVsZmVuKSBzb3dpZSBAUkcgKGZ1ZXIgR29ibGlucykgZnVlciAKKyAgICByYXNzZW5zcGV6aWZpc2NoZSBBdXNnYWJlbi4KKworICAgIEFscyBzcGV6aWVsbGUgIlJhc3NlIiBnaWJ0IGVzIGRhcnVlYmVyaGluYXVzIG5vY2ggQFJBIGZ1ZXIgQXVzZ2FiZW4sIGRpZQorICAgIG51ciBkaWUgU3BpZWxlciBnZWhlbiwgZGllIGltIEhhdXMgYmVzb25kZXJlIFJlY2h0ZSBoYWJlbiAoc2llaGUgZXJsYXViZSkuCisKKyAgICBEYXJ1ZWJlcmhpbmF1cyBrYW5uIG1hbiBBdXNnYWJlbiBmdWVyIGJlc3RpbW10ZSBTcGllbGVyIHZvcnNlaGVuLiBEZXIKKyAgICBUcmVubmVyIGhpZXJmdWVyIGlzdCBATkFNRTpzcGllbGVyLCB3b2JlaSAnc3BpZWxlcicgZnVlciBkZW4gTmFtZW4gZGVzCisgICAgZW50c3ByZWNoZW5kZW4gU3BpZWxlcnMgc3RlaHQuCisKKyAgICBBZWhubGljaCB3aWUgYmVpIGRlciBUcmVubnVuZyB6d2lzY2hlbiBkZW0gVGV4dCBmdWVyIGRlbiBBdXNmdWVocmVuZGVuIHVuZAorICAgIGRlbSBUZXh0IGZ1ZXIgZGllIFVtc3RlaGVuZGVuIG11ZXNzZW4gZGllIFRyZW5uZXIgaW4gZWluZXIgRXh0cmF6ZWlsZQorICAgIHN0ZWhlbi4KKworICAgIEJlaSBARyB3aXJkIGRlciBUZXh0IHVlYmVyIGRlbSBUcmVubmVyIGJlaSBtYWVubmxpY2hlbiB1bmQgZGVyIFRleHQgdW50ZXIKKyAgICBkZW0gVHJlbm5lciBiZWkgd2VpYmxpY2hlbiBCZWZlaGxzYXVzZnVlaHJlcm4gYXVzZ2VnZWJlbi4KKworICAgIEJlaSBkZW4gUmFzc2VuLSB1bmQgTmFtZW5zdHJlbm5lcm4gd2lyZCBkZXIgVGV4dCB1bnRlcmhhbGIgZGVzIFRyZW5uZXJzCisgICAgYXVzZ2VnZWJlbiwgZGVyIGRlciBSYXNzZSBiencuIGRlbSBOYW1lbiBkZXMgQXVzZnVlaHJlbmRlbiBlbnRzcHJpY2h0LgorCisgICAgV2VubiBmdWVyIGVpbmUgUmFzc2Uga2VpbiBlaWdlbmVyIFRleHQgYW5nZWdlYmVuIGlzdCwgd2lyZCBkZXIgVGV4dCB2b3IKKyAgICBkZW0gZXJzdGVuIFJhc3Nlbi0gYnp3LiBOYW1lbnN0cmVubmVyIGF1c2dlZ2ViZW4gKHVuZCB3ZW5uIGdhciBrZWluCisgICAgUmFzc2VudHJlbm5lciBhbmdlZ2ViZW4gd3VyZGUsIHdpcmQgZGVyIFRleHQgZnVlciBhbGxlIFJhc3NlbgorICAgIGF1c2dlZ2ViZW4gOykKKworICAgIElubmVyaGFsYiBkZXIgcmFzc2Vuc3BlemlmaXNjaGVuIFRleHRlIGthbm4gd2llZGVyIG1pdCBARworICAgIGdlc2NobGVjaHRzc3BlemlmaXNjaCB1bnRlcnNjaGllZGVuIHdlcmRlbi4KKworICAgIFVtIGVpbmUgZXR3YXMgYW5kZXJlIE1lbGR1bmcgYWxzICJXaWUgYml0dGU/IiB6dSBiZWtvbW1lbiwgd2VubiBlaW4gQmVmZWhsCisgICAgbWl0IGVpbmVtIHVuZ3VlbHRpZ2VuIFBhcmFtZXRlciBlaW5nZWdlYmVuIHd1cmRlLCBrYW5uIG1hbiBkZW4gc3BlemllbGxlbgorICAgIFBhcmFtZXRlciBAbmZAIGFuZ2ViZW4uIEluIGRlbiBUZXh0IGthbm4gZGVyIHVuZ3VlbHRpZ2UgUGFyYW1ldGVyIG1pdCBkZW0KKyAgICBQbGF0emhhbHRlciBAUEFSQSBpbnRlZ3JpZXJ0IHdlcmRlbi4KKworICAgIFdlbm4gZGllIFVtc3RlaGVuZGVuIGtlaW5lIE1lbGR1bmcgYmVrb21tZW4gc29sbGVuLCBrYW5uIG1hbiBkZW4gQEAgdW5kCisgICAgZGVuIHp3ZWl0ZW4gVGV4dCBlaW5mYWNoIHdlZ2xhc3Nlbi4KKworIEJFSVNQSUVMRToKKyAgICBadW5hZWNoc3QgZWluIGdhbnogZWluZmFjaGVyIFRleHQ6CisKKyAgICAgIGJlc2NocmVpYmUgYmVmZWhsIGRydWVjaywgZHJ1ZWNrZQorICAgICAgPT4gQml0dGUgUGFyYW1ldGVyIGVpbmdlYmVuLgorICAgICAgXWtub3BmLCBhdWYga25vcGYKKyAgICAgID0+IEJpdHRlIFRleHQgZWluZ2ViZW4sIGRlciBmdWVyIGRpZXNlbiBCZWZlaGwgYXVzZ2VnZWJlbiB3ZXJkZW4gc29sbC4KKyAgICAgIF1EdSBkcnVlY2tzdCBhdWYgZGVuIEtub3BmLCBhYmVyIG5pY2h0cyBwYXNzaWVydC4KKyAgICAgIF0uCisKKyAgICAoV2VubiBqZW1hbmQgbnVuICJkcnVlY2tlIGtub3BmIiBlaW5naWJ0LCBlcmhhZWx0IGVyIGRpZSBNZWxkdW5nICJEdQorICAgIGRydWVja3N0IGF1ZiBkZW4gS25vcGYsIGFiZXIgbmljaHRzIHBhc3NpZXJ0LiIgQW5kZXJlIFNwaWVsZXIsIGRpZSBzaWNoIGltCisgICAgZ2xlaWNoZW4gUmF1bSBhdWZoYWx0ZW4sIGJla29tbWVuIGtlaW5lIE1lbGR1bmcpCisKKyAgICBKZXR6dCBlaW4gQmVmZWhsIG1pdCBBdXNnYWJlIGFuIGRpZSBVbXN0ZWhlbmRlbjoKKworICAgICAgYmVzY2hyZWliZSBiZWZlaGwgemllaCwgemllaGUKKyAgICAgID0+IEJpdHRlIFBhcmFtZXRlciBlaW5nZWJlbi4KKyAgICAgIF1mYWRlbiwgYW4gZmFkZW4KKyAgICAgID0+IEJpdHRlIFRleHQgZWluZ2ViZW4sIGRlciBmdWVyIGRpZXNlbiBCZWZlaGwgYXVzZ2VnZWJlbiB3ZXJkZW4gc29sbC4KKyAgICAgIF1EdSB6aWVoc3QgYW4gZGVtIEZhZGVuLiBFcyBnaWJ0IGVpbmVuIGxhdXRlbiBLbmFsbCwgdW5kIER1IHNpZWhzdCBudXIKKyAgICAgIF1ub2NoIHdpcmJlbG5kZSBQdW5rdGUuCisgICAgICBdQEAKKyAgICAgIF1FcyBnaWJ0IGVpbmVuIGxhdXRlbiBLbmFsbCwgdW5kIGRpZSBLb25mZXR0aWthbm9uZSBodWVsbHQgQFdFTiBpbgorICAgICAgXWVpbmUgd2lyYmVsbmRlIEtvbmZldHRpd29sa2UuCisgICAgICBdLgorCisgICAgKFdlbm4gV2FyZ29uIGFuIGRlbSBGYWRlbiB6aWVodCwgYmVrb21tdCBlciBkaWUgb2JlcmUgTWVsZHVuZywgdW5kIGRpZQorICAgIFVtc3RlaGVuZGVuIGJla29tbWVuICJFcyBnaWJ0IGVpbmVuIGxhdXRlbiBLbmFsbCwgdW5kIGRpZSBLb25mZXR0aWthbm9uZQorICAgIGh1ZWxsdCBXYXJnb24gaW4gZWluZSB3aXJiZWxuZGUgS29uZmV0dGl3b2xrZS4iKQorCisgICAgSGllciBqZXR6dCBlaW4gQmVpc3BpZWwgbWl0IEdlc2NobGVjaHRlcnRyZW5udW5nOgorCisgICAgICBiZXNjaHJlaWJlIGJlZmVobCBzY2hhdQorICAgICAgPT4gQml0dGUgUGFyYW1ldGVyIGVpbmdlYmVuLgorICAgICAgXWluIHNwaWVnZWwKKyAgICAgID0+IEJpdHRlIFRleHQgZWluZ2ViZW4uLi4KKyAgICAgIF1IbSwgRHUgbXVlc3N0ZXN0IERpY2ggbWFsIHdpZWRlciByYXNpZXJlbi4KKyAgICAgIF1ARworICAgICAgXURlaW4gTWFrZVVwIGlzdCB6aWVtbGljaCB2ZXJzY2htaWVydC4KKyAgICAgIF0uCisKKyAgICAoU2NoYXV0IGVpbiBTcGllbGVyIGluIGRlbiBTcGllZ2VsLCB3aXJkIGVyIGF1ZiBzZWluZSBSYXN1ciBoaW5nZXdpZXNlbjsKKyAgICBlaW5lIFNwaWVsZXJpbiBkYWdlZ2VuIGF1ZiBpaHIgTWFrZVVwLikKKworICAgIEV0d2FzIGtvbXBsZXhlcjogUmFzc2VudHJlbm5lciB1bmQgUG9zc2Vzc2l2cHJvbm9tZW46CisKKyAgICAgIGJlc2NocmVpYmUgYmVmZWhsIHNjaGF1CisgICAgICA9PiBCaXR0ZSBQYXJhbWV0ZXIgZWluZ2ViZW4uCisgICAgICBdYXVmIHRpc2NoCisgICAgICA9PiBCaXR0ZSBUZXh0IGVpbmdlYmVuLi4uCisgICAgICBdRHUgc2llaHN0IGVpbmVuIEhhdWZlbiBQYXBpZXJlIGF1ZiBkZW0gVGlzY2ggbGllZ2VuLgorICAgICAgXUBSWgorICAgICAgXURlciBUaXNjaCBpc3QgenUgaG9jaCBmdWVyIERpY2guCisgICAgICBdQEAKKyAgICAgIF1AV0VSIHVudGVyc3VjaHQgZGVuIFRpc2NoLgorICAgICAgXUBSWgorICAgICAgXUBXRVIgdmVyc3VjaHQgdmVyendlaWZlbHQsIGVpbmVuIEJsaWNrIGF1ZiBkZW4gVGlzY2ggenUgd2VyZmVuLAorICAgICAgXWFiZXIgQEJNU1dFUiBrbGVpbmVyIEtvZXJwZXJiYXUgbGFlc3N0IGRhcyBuaWNodCB6dS4KKyAgICAgIF0uCisKKyAgICAoS2VpbmUgQ2hhbmNlIGZ1ZXIgWndlcmdlISA7KSBAQk1TV0VSIHdpcmQgYmVpIG1hZW5ubGljaGVuIFp3ZXJnZW4gZHVyY2gKKyAgICAic2VpbiIgdW5kIGJlaSB3ZWlibGljaGVuIFp3ZXJnZW4gZHVyY2ggImlociIgZXJzZXR6dC4pCisKKyAgICBEYXMgZ2xlaWNoZSBCZWlzcGllbCB3aWUgZ2VyYWRlLCBkaWVzbWFsIGplZG9jaCB6dXNhZXR6bGljaCBtaXQgc3BlemllbGxlbgorICAgIFRleHRlbiBmdWVyIFdhcmdvbiB1bmQgU2FwaGlzOgorCisgICAgICBiZXNjaHJlaWJlIGJlZmVobCBzY2hhdQorICAgICAgPT4gQml0dGUgUGFyYW1ldGVyIGVpbmdlYmVuLgorICAgICAgXWF1ZiB0aXNjaAorICAgICAgPT4gQml0dGUgVGV4dCBlaW5nZWJlbi4uLgorICAgICAgXUR1IHNpZWhzdCBlaW5lbiBIYXVmZW4gUGFwaWVyZSBhdWYgZGVtIFRpc2NoIGxpZWdlbi4KKyAgICAgIF1ATkFNRTpXYXJnb24KKyAgICAgIF1FaW4gSGF1ZmVuIFBhcGllci4gU2NoYWZmIGRvY2ggbWFsIHdpZWRlciBPcmRudW5nIQorICAgICAgXUBOQU1FOlNhcGhpcworICAgICAgXUVpbiBIYXVmZW4gUGFwaWVyLiBTYWcgRGVpbmVtIENoZWYgbWFsLCBlciBzb2xsIGhpZXIgd2llZGVyIE9yZG51bmcKKyAgICAgIF1zY2hhZmZlbiEKKyAgICAgIF1AUloKKyAgICAgIF1EZXIgVGlzY2ggaXN0IHp1IGhvY2ggZnVlciBEaWNoLgorICAgICAgXUBACisgICAgICBdQFdFUiB1bnRlcnN1Y2h0IGRlbiBUaXNjaC4KKyAgICAgIF1ATkFNRTpXYXJnb24KKyAgICAgIF1XYXJnb24gdW50ZXJzdWNodCBkZW4gVGlzY2ggdW5kIHNldWZ6dC4KKyAgICAgIF1AUloKKyAgICAgIF1AV0VSIHZlcnN1Y2h0IHZlcnp3ZWlmZWx0LCBlaW5lbiBCbGljayBhdWYgZGVuIFRpc2NoIHp1IHdlcmZlbiwKKyAgICAgIF1hYmVyIEBCTVNXRVIga2xlaW5lciBLb2VycGVyYmF1IGxhZXNzdCBkYXMgbmljaHQgenUuCisgICAgICBdLgorCisgICAgVW5kIHp1bSBTY2hsdXNzIGVpbiBCZWlzcGllbCBmdWVyIGVpbiBnZWFlbmRlcnRlcyAiV2llIGJpdHRlPyIKKworICAgICAgYmVzY2hyZWliZSBiZWZlaGwgZHJ1ZWNrLGRydWVja2UKKyAgICAgID0+IEJpdHRlIFBhcmFtZXRlciBlaW5nZWJlbi4KKyAgICAgIF1AbmZACisgICAgICA9PiBCaXR0ZSBUZXh0IGVpbmdlYmVuLi4uCisgICAgICBdV2llc28gd2lsbHN0IER1IGRlbm4gQFBBUkEgZHJ1ZWNrZW4/CisgICAgICBdLgorCisgICAgKFdlbm4gbWFuIGpldHp0IHpCLiAiZHJ1ZWNrZSBoYW5kIiBlaW5naWJ0LCB1bmQgZGllc2VyIEJlZmVobCBub2NoIG5pY2h0CisgICAgYmVzY2hyaWViZW4gd3VyZGUsIGtvbW10IGFscyBNZWxkdW5nOiAiV2llc28gd2lsbHN0IER1IGRlbm4gSGFuZAorICAgIGRydWVja2VuPyIpCisKKyBTSUVIRSBBVUNIOgorICAgIGFlbmRlcmUsIGJlc2NocmVpYmUKKworIExFVFpURSBBZU5ERVJVTkc6CisgICAgU3VuLCAwMy4xMi4yMDAwLCAxODozMDowMCB2b24gV2FyZ29uCmRpZmYgLS1naXQgYS9kb2Mvc2NtZC9iZXNjaHJlaWJlIGIvZG9jL3NjbWQvYmVzY2hyZWliZQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4xMmNkMDAwCi0tLSAvZGV2L251bGwKKysrIGIvZG9jL3NjbWQvYmVzY2hyZWliZQpAQCAtMCwwICsxLDE5NSBAQAorCitiZXNjaHJlaWJlCistLS0tLS0tLS0tCisKKyBTRUhFUkhBVVNLT01NQU5ETzoKKyAgICBiZXNjaHJlaWJlIDxoYXVzPiBsYW5nCisgICAgYmVzY2hyZWliZSA8aGF1cz4ga3VyegorICAgIGJlc2NocmVpYmUgZGV0YWlsIDxkZXQ+CisgICAgYmVzY2hyZWliZSBsZXNiYXJlcyBkZXRhaWwgPGRldD4KKyAgICBiZXNjaHJlaWJlIGJlZmVobCA8YmVmPiAtIFNpZWhlIGJlZmVobCEKKyAgICBiZXNjaHJlaWJlIGhhdXN0dWVyCisgICAgYmVzY2hyZWliZSB0dWVyenVzdGFuZAorICAgIGJlc2NocmVpYmUgdHJ1aGUKKworIEFSR1VNRU5URToKKworICAgICA8aGF1cz4KKyAgICAgICAgZWluZSBndWVsdGlnZSBCZXplaWNobnVuZyBkZXMgSGF1c2VzLiBHdWVsdGlnZSBCZXplaWNobnVuZ2VuIHNpbmQKKyAgICAgICAgaW5uZXJoYWxiIGRlcyBIYXVzZXMgImhhdXMiIHVuZCAicmF1bSIsIGF1c3NlcmhhbGIgZGVzIEhhdXNlcyBkaWUKKyAgICAgICAgQmVncmlmZmUsIG1pdCBkZW5lbiBzaWNoIGRhcyBIYXVzIGFuc3ByZWNoZW4gbGFlc3N0LgorICAgICA8ZGV0PgorICAgICAgICBMaXN0ZSBkZXIgenUgYmVzY2hyZWliZW5kZW4gKGxlc2JhcmVuKSBEZXRhaWxzLiBCZWkgbWVocmVyZW4gRGV0YWlscworICAgICAgICBtdWVzc2VuIGRpZXNlIGR1cmNoIEtvbW1hdGEgdm9uZWluYW5kZXIgZ2V0cmVubnQgc2VpbiEKKworIEJFU0NIUkVJQlVORzoKKyAgICBEaWVzZXMgS29tbWFuZG8gZGllbnQgenVyIGFsbGdlbWVpbmVuIEJlc2NocmVpYnVuZyBkZXMgSGF1c2VzLiBWb24gZGVuCisgICAgbW9lZ2xpY2hlbiBBbndlbmR1bmdlbiBpc3QgYmVzY2hyZWliZSBoYXVzdHVlciBudXIgZHJhdXNzZW4gZXJsYXVidC4KKyAgICBiZXNjaHJlaWJlIDxoYXVzPiBsYW5nIGlzdCBzb3dvaGwgaW5uZW4gYWxzIGF1Y2ggYXVzc2VuIGJlbnV0emJhcjsgYWxsZQorICAgIGFuZGVyZW4gQW53ZW5kdW5nZW4gZ2VsdGVuIG51ciBpbm5lcmhhbGIgZGVzIEhhdXNlcy4KKworICAgIE5hY2ggRWluZ2FiZSBkZXMgS29tbWFuZG9zIGJlZmluZGV0IG1hbiBzaWNoIGJlaSBkZW4gbWVpc3RlbiBBcnRlbiBpbiBkZW0KKyAgICBzZWxiZW4gRWRpdG9yLCB3aWUgbWFuIGlobiBhdWNoIHZvbiBkZXIgUG9zdCBvZGVyIGRlciBaZWl0dW5nIGdld29obnQgaXN0LgorICAgIE1hbiBoYXQgYWxzbyBhdWNoIGhpZXIgZGllIE1vZWdsaWNoa2VpdCwgc2ljaCBtaXQgIn5oIiBlaW5lIEhpbGZlc2VpdGUgZGVzCisgICAgRWRpdG9ycyBtaXQgYWxsZW4gbW9lZ2xpY2hlbiBLb21tYW5kb3MgYW56ZWlnZW4genUgbGFzc2VuLgorCisgICAgRmFsbHMgZXMgdm9ya29tbWVuIHNvbGx0ZSwgZGFzcyB3YWVocmVuZCBkZXIgQmVzY2hyZWlidW5nIGRpZSBWZXJiaW5kdW5nCisgICAgenVtIE1VRCB6dXNhbW1lbmJyaWNodCwgc3BlcnJ0IGRlciBFZGl0b3IhIEluIGRpZXNlbSBGYWxsIGthbm4gbWFuIG1pdAorICAgICJ+ciIgZGllIHVudGVyYnJvY2hlbmUgQmVzY2hyZWlidW5nIHdpZWRlciBhdWZuZWhtZW4uIChEYXMgfnIgbXVzcyBhbHMKKyAgICBCZWZlaGwgaW0gSGF1cyBhbmdlZ2ViZW4gd2VyZGVuISkKKworICAgIEhpZXIgbnVuIGRpZSBNb2VnbGljaGtlaXRlbiB6dXIgQmVzY2hyZWlidW5nOgorCisgICAgIGJlc2NocmVpYmUgPGhhdXM+IGxhbmcKKyAgICAgICAgSGllcm1pdCB3aXJkIGRpZSBMYW5nYmVzY2hyZWlidW5nIGRlcyBIYXVzZXMgYmVnb25uZW4uIEVzIGdpYnQgendlaQorICAgICAgICBGYWVsbGU6IEJlZmluZGV0IG1hbiBzaWNoIGlubmVyaGFsYiBkZXMgSGF1c2VzLCBzbyBnaWJ0IG1hbiBqZXR6dCBkZW4KKyAgICAgICAgVGV4dCBlaW4sIGRlbiBtYW4gYmVpbSBCZXRyZXRlbiBkZXMgSGF1c2VzIChiZWkgZWluZ2VzY2hhbHRldGVtCisgICAgICAgIExhbmctTW9kdXMpIHVuZCBiZWkgZWluZW0gc2NoYXUgaW0gSGF1cyBiZWtvbW10LiBCZWZpbmRldCBtYW4gc2ljaAorICAgICAgICBhdXNzZXJoYWxiIGRlcyBIYXVzZXMsIHNvIGdpYnQgbWFuIGpldHp0IGRlbiBUZXh0IGVpbiwgZGVuIG1hbiBiZWltCisgICAgICAgIFVudGVyc3VjaGVuIGRlcyBIYXVzZXMgYmVrb21tdC4gQW4gZGVuIFRleHQgZnVlciBkaWUKKyAgICAgICAgQXVzc2VuYmVzY2hyZWlidW5nIHdpcmQgaW1tZXIgZWluZSBaZWlsZSBtaXQgZGVtIGFrdHVlbGxlbiBadXN0YW5kIGRlcgorICAgICAgICBIYXVzdHVlciBhbmdlaGFlbmd0LgorCisgICAgIGJlc2NocmVpYmUgPGhhdXM+IGt1cnoKKyAgICAgICAgQmVnaW5udCBkaWUgRWluZ2FiZSBkZXIgS3VyemJlc2NocmVpYnVuZyBkZXMgSGF1c2VzLiBEaWVzIGlzdCBkZXIKKyAgICAgICAgVGV4dCwgZGVuIG1hbiBtaXQgZWluZ2VzY2hhbHRldGVtIEt1cnotTW9kdXMgYmVpbSBCZXRyZXRlbiBkZXMgSGF1c2VzCisgICAgICAgIGJla29tbXQuCisKKyAgICAgICAgRGllIEt1cnpiZXNjaHJlaWJ1bmcga2FubiBudXIgaW0gSW5uZXJlbiBkZXMgSGF1c2VzIGdlYWVuZGVydCB3ZXJkZW4uCisgICAgICAgIFNpZSBkYXJmIG5pY2h0IGxhZW5nZXIgc2VpbiBhbHMgZWluZSBaZWlsZSEKKworICAgICAgICBXZW5uIERlaW4gSGF1cyBhdWNoIHZvbiBhdXNzZW4gYW5kZXJzIGF1c3NlaGVuIHNvbGwsIHdlbmRlIERpY2ggYml0dGUKKyAgICAgICAgYW4gV2FyZ29uLgorCisgICAgIGJlc2NocmVpYmUgZGV0YWlsIDxkZXQ+CisgICAgICAgIEJlZ2lubnQgZGllIEJlc2NocmVpYnVuZyBkZXMgRGV0YWlscyA8ZGV0Pi4gQWxzIERldGFpbHMgc29sbHRlbgorICAgICAgICBtb2VnbGljaHN0IGFsbGUgU3Vic3RhbnRpdmUgYmVzY2hyaWViZW4gd2VyZGVuLCBkaWUgaW4gZGVyCisgICAgICAgIExhbmdiZXNjaHJlaWJ1bmcgZGVzIEhhdXNpbm5lcmVuIHVuZCBpbiBkZW4gYW5kZXJlbiBEZXRhaWxzIHZvcmtvbW1lbgorICAgICAgICAobmF0dWVybGljaCBudXIsIHNvd2VpdCBkYXMgc2lubnZvbGwgaXN0KS4gRGVuIFRleHQgZGVyIERldGFpbHMKKyAgICAgICAgYmVrb21tdCBtYW4gYmVpIGRlbSBLb21tYW5kbyAidW50ZXJzdWNoZSA8ZGV0PiIgYXVzZ2VnZWJlbi4KKworICAgICBiZXNjaHJlaWJlIGxlc2JhcmVzIGRldGFpbCA8ZGV0PgorICAgICAgICBCZWdpbm50IGRpZSBCZXNjaHJlaWJ1bmcgZWluZXMgbGVzYmFyZW4gRGV0YWlscy4gRGVyIFRleHQgd2lyZCBiZWkgZGVtCisgICAgICAgIEtvbW1hbmRvICJsaWVzIDxkZXQ+IiBhdXNnZWdlYmVuLgorCisgICAgIGJlc2NocmVpYmUgYmVmZWhsIDxiZWY+CisgICAgICAgIERhIGRpZXMgbWl0dGxlcndlaWxlIHJlY2h0IGtvbXBsZXggZ2V3b3JkZW4gaXN0LCBnaWJ0IGVzIGVpbmUKKyAgICAgICAgRXh0cmFoaWxmZXNlaXRlLiBEdSBlcnJlaWNoc3Qgc2llIG1pdCAiaGlsZmUgYmVmZWhsIi4KKworICAgICBiZXNjaHJlaWJlIGhhdXN0dWVyCisgICAgICAgIEVybGF1YnQgZGllIEJlc2NocmVpYnVuZyBkZXIgSGF1c3R1ZXIuIEhpZXIgaXN0IG51ciBlaW5lIFplaWxlCisgICAgICAgIGVybGF1YnQuIERpZXNlIFplaWxlIHdpcmQgYW4gZGllIExhbmdiZXNjaHJlaWJ1bmcgZGVzIEhhdXNlcyB2b24KKyAgICAgICAgYXVzc2VuIGFuZ2VoYWVuZ3QuIFdlbm4gZG9ydCBrZWluZSBIYXVzdHVlciBlcnNjaGVpbmVuIHNvbGwgKHdhcyB6Qi4KKyAgICAgICAgYmVpIGVpbmVtIFNlZSBvZGVyIGVpbmVyIEhvZWhsZSB3ZW5pZyBTaW5uIG1hY2h0KSwga2FubiBtYW4gaGllciBtaXQKKyAgICAgICAgZWluZW0gTGVlcnN0cmluZyAoZGlyZWt0IDxSRVRVUk4+IGRydWVja2VuKSBkaWUgVHVlciB1bnNpY2h0YmFyCisgICAgICAgIG1hY2hlbi4KKworICAgICAgICBNaXQgZGVtIFBsYXR6aGFsdGVyICVzIHdpcmQgZGVyIGFrdHVlbGxlIFp1c3RhbmQgZGVyIEhhdXN0dWVyIGluIGRpZQorICAgICAgICBCZXNjaHJlaWJ1bmcgZWluZ2ViYXV0IChpbiBkZXIgRm9ybSAiZ2VvZWZmbmV0IiwgImdlc2NobG9zc2VuIiBvZGVyCisgICAgICAgICJhYmdlc2NobG9zc2VuIikuCisKKyAgICAgYmVzY2hyZWliZSB0dWVyenVzdGFuZAorICAgICAgICBBdWNoIGRlbiBadXN0YW5kIGRlciBIYXVzdHVlciAoZ2VvZWZmbmV0LCBnZXNjaGxvc3NlbiwgYWJnZXNjaGxvc3NlbikKKyAgICAgICAga2FubiBtYW4gaW4gZWlnZW5lIFdvcnRlIGZhc3Nlbi4KKworICAgICAgICBEaWUgWnVzdGFlbmRlIG11ZXNzZW4gaW4gZGVyIG9iZW4gYW5nZWdlYmVuZW4gUmVpaGVuZm9sZ2UgZWluZ2VnZWJlbgorICAgICAgICB3ZXJkZW4sIHVuZCB6d2FyIGluIEVJTkVSIFplaWxlLCBkdXJjaCBLb21tYXRhIGdldHJlbm50IQorICAgICAgICBFcyBtdWVzc2VuIGltbWVyIEFMTEUgZHJlaSBadXN0YWVuZGUgYW5nZWdlYmVuIHdlcmRlbiEKKyAgICAgICAgTWFuIHNvbGx0ZSBuYWNoIE1vZWdsaWNoa2VpdCBudXIgZWluIFdvcnQgcHJvIFp1c3RhbmQgdmVyd2VuZGVuIQorCisgICAgIGJlc2NocmVpYmUgdHJ1aGUKKyAgICAgICAgQmVnaW5udCBkaWUgQmVzY2hyZWlidW5nIGRlciBUcnVoZS4gSW0gR2VnZW5zYXR6IHp1IGRlbiBhbmRlcmVuCisgICAgICAgIEJlc2NocmVpYnVuZ2VuIGVyZm9sZ3QgZGllIEJlc2NocmVpYnVuZyBkZXIgVHJ1aGUgaW4gbWVocmVyZW4KKyAgICAgICAgU2Nocml0dGVuLiBXaWxsIG1hbiBkaWUgamV3ZWlsaWdlbiBWb3JnYWJlbiBuaWNodCBhZW5kZXJuLCBzbyBnZW51ZWd0CisgICAgICAgIGVzLCA8UkVUVVJOPiB6dSBkcnVlY2tlbi4KKworICAgICAgICBadWVyc3Qgd2lyZCBtYW4gbmFjaCBkZW0gR2VzY2hsZWNodCBkZXIgVHJ1aGUgZ2VmcmFndC4gSGllciBtdXNzIG1hbgorICAgICAgICBkZW4gcGFzc2VuZGVuIEJ1Y2hzdGFiZW4gYW5nZWJlbiAobSBmdWVyIG1hZW5ubGljaCwgdyBmdWVyIHdlaWJsaWNoCisgICAgICAgIG9kZXIgcyBmdWVyIHNhZWNobGljaCkuCisKKyAgICAgICAgTnVuIHdpcnN0IER1IG5hY2ggZGVtIE5hbWVuIGdlZnJhZ3QsIGRlciB6dW0gQmVpc3BpZWwgYmVpbSBPZWZmbmVuCisgICAgICAgIG9kZXIgU2NobGllc3NlbiBkZXIgVHJ1aGUgYXVzZ2VnZWJlbiB3aXJkLiBGYWxscyBkZXIgTmFtZQorICAgICAgICB1bnJlZ2VsbWFlc3NpZyBkZWtsaW5pZXJ0IHdpcmQsIG11ZXNzZW4gYWxsZSB2aWVyIEZhZWxsZSBpbiBkZXIKKyAgICAgICAgUmVpaGVuZm9sZ2UgTm9taW5hdGl2LCBHZW5pdGl2LCBEYXRpdiwgQWtrdXNhdGl2LCBkdXJjaCBLb21tYXRhCisgICAgICAgIGdldHJlbm50LCBlaW5nZWdlYmVuIHdlcmRlbi4KKworICAgICAgICBTY2hsaWVzc2xpY2gga2FubnN0IER1IG5vY2ggQWRqZWt0aXZlIGFuZ2ViZW4sIGRpZSB6dXNhbW1lbiBtaXQgZGVtCisgICAgICAgIE5hbWVuIGF1c2dlZ2ViZW4gd2VyZGVuLgorCisgICAgICAgIEF1cyBkZW4gYmlzaGVyIGVpbmdlZ2ViZW5lbiBEYXRlbiB3aXJkIG51biBkaWUgS3VyemJlc2NocmVpYnVuZyBkZXIKKyAgICAgICAgVHJ1aGUgZXJzdGVsbHQuIEVudHNwcmljaHQgc2llIG5pY2h0IERlaW5lbiBWb3JzdGVsbHVuZ2VuLCBnZWxhbmdzdCBEdQorICAgICAgICB3aWVkZXIgaW4gZGllIEdlc2NobGVjaHRzYWJmcmFnZS4KKworICAgICAgICBBbnNvbnN0ZW4gd2lyZCBudW4gbmFjaCBkZW4gSURzIGdlZnJhZ3QsIG1pdCBkZW5lbiBzaWNoIGRpZSBUcnVoZQorICAgICAgICBhbnNwcmVjaGVuIGxhc3NlbiBzb2xsLiBNZWhyZXJlIElEcyBtdWVzc2VuIG1pdCBLb21tYXRhIHZvbmVpbmFuZGVyCisgICAgICAgIGdldHJlbm50IHdlcmRlbi4gRXMga29lbm5lbiBhdWNoIElEcyB2ZXJ3ZW5kZXQgd2VyZGVuLCBkaWUgYXVzCisgICAgICAgIG1laHJlcmVuIFdvcnRlcm4gYmVzdGVoZW4uIERpZSBWb3JnYWJlbiBrb2VubmVuIHdpZWRlciBtaXQgPFJFVFVSTj4KKyAgICAgICAgdWViZXJub21tZW4gd2VyZGVuLgorICAgICAgICBEYSBlaW5pZ2UgU3BlemlhbGlzdGVuIGVzIGltbWVyIHdpZWRlciBzY2hhZmZ0ZW4sIGhpZXIgc2Nob24gZGllCisgICAgICAgIExhbmdiZXNjaHJlaWJ1bmcgZWluenVnZWJlbiAodW5kIHNvbWl0IGhpbnRlcmhlciBkaWUgVHJ1aGUgbmljaHQgbWVocgorICAgICAgICBhbnNwcmVjaGVuIGtvbm50ZW4pLCBsYWVzc3Qgc2ljaCBkaWUgVHJ1aGUgZnVlciBkZW4KKyAgICAgICAgYGJlc2NocmVpYmUnLUJlZmVobCBpbW1lciBhbHMgYHRydWhlJyBhbnNwcmVjaGVuLiBadW0gQW5zZWhlbiwgT2VmZm5lbgorICAgICAgICBldGMuIG11c3MgbWFuIGFsbGVyZGluZ3MgZGllIGhpZXIgYW5nZWdlYmVuZW4gSURzIHZlcndlbmRlbi4KKworICAgICAgICBOdW4gZXJmb2xndCBkaWUgTGFuZ2Jlc2NocmVpYnVuZyBkZXIgVHJ1aGUuIEJlaSBkaWVzZXIgc3RlaHQgd2llZGVyCisgICAgICAgIGRlciBFZGl0b3IgenVyIFZlcmZ1ZWd1bmcuIEJlaSBBYmJydWNoIG9kZXIgZWluZW0gTGVlcnN0cmluZyB3aXJkIGRpZQorICAgICAgICBhbHRlIExhbmdiZXNjaHJlaWJ1bmcgbmljaHQgZ2VhZW5kZXJ0LgorCisgICAgICAgIFp1bSBndXRlbiBTY2hsdXNzIGthbm4gbWFuIGF1Y2ggbm9jaCBkYXMgTWF0ZXJpYWwgZGVyIFRydWhlIGFlbmRlcm4uCisgICAgICAgIEltIEhhdXB0bWVudWUga2FubiBtYW4gZWluZSBNYXRlcmlhbGdydXBwZSB3YWVobGVuLCB1bmQgZG9ydCBkYW5uIGRhcworICAgICAgICBnZXd1ZW5zY2h0ZSBNYXRlcmlhbC4KKworICAgICAgICBEaWUgQmVzY2hyZWlidW5nIGRlciBUcnVoZSBrYW5uIG5hdHVlcmxpY2ggbnVyIGdlYWVuZGVydCB3ZXJkZW4sIHdlbm4KKyAgICAgICAgbWFuIGltIGdsZWljaGVuIFJhdW0gc3RlaHQgd2llIGRpZSBUcnVoZS4gOy0pCisKKyBCRUlTUElFTEU6CisgICAgRWluIGxlc2JhcmVzIERldGFpbCB3aXJkIGJlc2NocmllYmVuOgorCisgICAgICBiZXNjaHJlaWJlIGxlc2JhcmVzIGRldGFpbCB6ZXR0ZWwsIG5vdGl6CisgICAgICA9PiBCaXR0ZSBCZXNjaHJlaWJ1bmcgZnVlciAnemV0dGVsLCBub3RpeicgZWluZ2ViZW4uCisgICAgICBdQmluIGdlcmFkZSBtZXR6ZWxuLiBCbHV0c2F1Z2Vyc2Nod2VydGVyIGJpdHRlIGFuIGRlciBQZm9ydGUKKyAgICAgIF1hYmdlYmVuLgorICAgICAgXS4KKworICAgIERpZSBUcnVoZSBzb2xsIGluIGVpbmUga2xlaW5lIEtpc3RlIGF1cyBIb2x6IHVtZ2V3YW5kZWx0IHdlcmRlbjoKKworICAgICAgYmVzY2hyZWliZSB0cnVoZQorICAgICAgPT4gQmVzY2hyZWlidW5nIGRlciBUcnVoZQorICAgICAgPT4gV2VubiBkaWUgVm9yZ2FiZW4gbmljaHQgZ2VhZW5kZXJ0IHdlcmRlbiBzb2xsZW4sIGVpbmZhY2ggd2VpdGVyCisgICAgICA9PiBtaXQgPFJFVFVSTj4uCisKKyAgICAgID0+R2VzY2hsZWNodCAobSwgdywgcyk6IFt3XQorICAgICAgXXcKKyAgICAgID0+IERhcyBHZXNjaGxlY2h0IGlzdCBqZXR6dCB3ZWlibGljaC4KKyAgICAgID0+IE51biBtdXNzdCBEdSBkZW4gTmFtZW4gZWluZ2ViZW4uIC4uLgorICAgICAgPT4gTmFtZTogW1RydWhlXQorICAgICAgXUtpc3RlLCBLaXN0ZSwgS2lzdGUsIEtpc3RlCisgICAgICA9PiBEZXIgTmFtZSBpc3QgamV0enQgJ0tpc3RlLCBLaXN0ZSwgS2lzdGUsIEtpc3RlJworICAgICAgPT4gRHUga2FubnN0IGpldHp0IG5vY2ggTmFtZW5zYWRqZWt0aXZlIGFuZ2ViZW4uIC4uLgorICAgICAgPT4gTmFtZW5zYWRqZWt0aXZlOiBbXQorICAgICAgXWtsZWluCisgICAgICA9PiBOYW1lbnNhZGpla3RpdmUgbGF1dGVuIGtsZWluLgorICAgICAgPT4gRGllIEt1cnpiZXNjaHJlaWJ1bmcgbGF1dGV0IGRhbWl0OgorICAgICAgPT4gRWluZSBrbGVpbmUgS2lzdGUgKGdlc2NobG9zc2VuKS4KKyAgICAgID0+IEZhbGxzIGRhcyBFcmdlYm5pcyBuaWNodCBEZWluZW4gLi4uCisgICAgICA9PiBTdGltbXQgZGllIEt1cnpiZXNjaHJlaWJ1bmcgc28/IChqL24pCisgICAgICBdagorCisgICAgICA9PklEcyAoZHVyY2ggS29tbWF0YSBnZXRyZW5udCk6CisgICAgICA9Plt0cnVoZSxob2x6dHJ1aGVdCisgICAgICBda2lzdGUKKyAgICAgID0+IE9LLCBJRHMgbGF1dGVuICdraXN0ZScKKworICAgICAgPT4gQml0dGUgTGFuZ2Jlc2NocmVpYnVuZyBhbmdlYmVuLi4uCisgICAgICBdSW4gZGllc2VyIEtpc3RlIGxhZ2VydCBXYXJnb24gd2ljaHRpZ2UgRGluZ2UuCisgICAgICBdLgorCisgICAgICA9PiBCaXR0ZSBkYXMgTWF0ZXJpYWwgZGVyIEtpc3RlIGJldGltbWVuOgorICAgICAgLi4uCisKKyBTSUVIRSBBVUNIOgorICAgIGVkaXRvciwKKyAgICBhZW5kZXJlLCBiZWZlaGwsIGxvZXNjaGUsIGtvcGllcmUsIG1lbGR1bmdlbiwgdWViZXJzaWNodCwgbm90aXosIGxpY2h0CisKKyBMRVRaVEUgQWVOREVSVU5HOgorICAgIFRodSwgMjUuMDkuMTk5NywgMTc6NDA6MzAgdm9uIFdhcmdvbgpkaWZmIC0tZ2l0IGEvZG9jL3NjbWQvZWNobyBiL2RvYy9zY21kL2VjaG8KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMjJiNjI5NAotLS0gL2Rldi9udWxsCisrKyBiL2RvYy9zY21kL2VjaG8KQEAgLTAsMCArMSwzNCBAQAorCitlY2hvCistLS0tCisKKyBTRUhFUktPTU1BTkRPOgorICAgIGVjaG8gPHRleHQ+CisKKyBBUkdVTUVOVEU6CisKKyAgICAgPHRleHQ+CisgICAgICAgIGVpbiBiZWxpZWJpZ2VyIFRleHQKKworIEJFU0NIUkVJQlVORzoKKyAgICBEZXIgVGV4dCA8dGV4dD4gd2lyZCBhbiBhbGxlIFNwaWVsZXIgaW0gc2VsYmVuIFJhdW0gZ2VzZW5kZXQuCisKKyAgICBCZWkgU2VoZXJuIHZlcmJyYXVjaHQgZGllc2VzIEtvbW1hbmRvIDUwIE1hZ2llcHVua3RlLiBGdWVyIE1hZ2llciBpc3QgZXMKKyAgICBrb3N0ZW5sb3MuCisKKyAgICBBQ0hUVU5HOiBEaWUgQmVudXR6dW5nIGRpZXNlcyBCZWZlaGxzIHdpcmQgZ2Vsb2dndCEgRC5oLiBkYXNzIGVyIG5pY2h0CisgICAgenVyIEJlbnV0enVuZyBnZWVpZ25ldCBpc3QsIHdlbm4gbWFuIG5pY2h0IG1vZWNodGUsIGRhc3MgZGVyIGdlc2VuZGV0ZQorICAgIFRleHQgdm9uIE1hZ2llcm4gbmFjaGdlbGVzZW4gd2VyZGVuIGthbm4uIERpZXMgaXN0IGF1ZmdydW5kIHZvbiBNaXNzYnJhdWNoCisgICAgbGVpZGVyIG5vdHdlbmRpZy4gSW4gZGllc2VtIFp1c2FtbWVuaGFuZyBzZWkgYXVjaCBub2NobWFsIGRhcmF1ZiAKKyAgICBoaW5nZXdpZXNlbiwgZGFzcyBFY2hvcyBpbiBmcmVtZGVtIE5hbWVuIG5pY2h0IGVybGF1YnQgc2luZCB1bmQgbWl0CisgICAgZGVtIEVudHp1ZyBkZXIgZWNoby1GYWVoaWdrZWl0IChwbHVzIChyKWVtb3RlIGFscyBCb251cykgZ2VhaG5kZXQKKyAgICB3ZXJkZW4ga29lbm5lbi4KKworQkVNRVJLVU5HRU46CisgICAgRGllIEZhZWhpZ2tlaXQgd2lyZCBlcnN0IG5hY2ggZGVyIExvZXN1bmcgZGVzIFF1ZXN0ICJIaWxmIGRlbQorICAgIEFyY2hpdGVrdGVuLiIgZnJlaWdlc2NoYWx0ZXQuCisKKyBTSUVIRSBBVUNIOgorICAgIHNhZywgZW1vdGUKKworMS4gTWFlcnogMjAxMyBHbG9pbnNvbgpkaWZmIC0tZ2l0IGEvZG9jL3NjbWQvZXJsYXViZSBiL2RvYy9zY21kL2VybGF1YmUKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMWUyOTE2YQotLS0gL2Rldi9udWxsCisrKyBiL2RvYy9zY21kL2VybGF1YmUKQEAgLTAsMCArMSwzMSBAQAorCitlcmxhdWJlCistLS0tLS0tCisKKyBTRUhFUkhBVVNLT01NQU5ETzoKKyAgICBlcmxhdWJlIDxuYW1lPgorCisgQVJHVU1FTlRFOgorCisgICAgIDxuYW1lPgorICAgICAgICBFaW4gb2RlciBtZWhyZXJlIE5hbWVuIChkdXJjaCBLb21tYXRhIGdldHJlbm50KS4KKworIEJFU0NIUkVJQlVORzoKKyAgICBEZXIgU3BpZWxlciA8bmFtZT4gZXJoYWVsdCBkaWUgRXJsYXVibmlzLCBEZWluIEhhdXMgYXVmLSB1bmQgYWJzY2hsaWVzc2VuCisgICAgenUgZHVlcmZlbi4gV2VpdGVyaGluIGRhcmYgZGllc2VyIFNwaWVsZXIgYXVjaCBkaWUgVHJ1aGUgaW4gRGVpbmVtIEhhdXMKKyAgICBvZWZmbmVuLgorCisgICAgQXVjaCB3ZW5uIGVpbiBOYWNoYmFyIHNlaW4gSGF1cyBtaXQgRGVpbmVtIHZlcmJpbmRlbiB3aWxsLCBtdXNzIGlobSBkYXMKKyAgICBtaXQgZGllc2VtIEtvbW1hbmRvIGVybGF1YnQgd2VyZGVuLgorCisgICAgRGllc2VyIEJlZmVobCBmdW5rdGlvbmllcnQgbnVyIGltIEVpbmdhbmdzcmF1bSBkZXMgSGF1c2VzLCB1bmQgZGllIExpc3RlCisgICAgZGVyIExldXRlIG1pdCBlcnRlaWx0ZXIgRXJsYXVibmlzIHdpcmQgYXVjaCBudXIgaW0gRWluZ2FuZ3NyYXVtIGJlaSBkZW0KKyAgICBCZWZlaGwgdWViZXJzaWNodCBtaXQgYXVzZ2VnZWJlbjsgZGllIExpc3RlIGdpbHQgYmVpIEF1c2dhZW5nZW4gamVkb2NoCisgICAgZnVlciBkYXMgZ2VzYW10ZSBIYXVzIChtYW4ga2FubiBhbHNvIG5pY2h0IHNlbGVrdGl2IFJhZXVtZSB6dXIgVmVyYmluZHVuZworICAgIGZyZWlnZWJlbikuCisKKyBTSUVIRSBBVUNIOgorICAgIHZlcmJpZXRlLCB1ZWJlcnNpY2h0LCBhdXNnYW5nCisKKyBMRVRaVEUgQWVOREVSVU5HOgorICAgIFRodSwgMjQuMDcuMTk5NywgMDk6MDA6MDAgdm9uIFdhcmdvbgpkaWZmIC0tZ2l0IGEvZG9jL3NjbWQvZXh0cmFsb29rIGIvZG9jL3NjbWQvZXh0cmFsb29rCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjI2MGY4ZWMKLS0tIC9kZXYvbnVsbAorKysgYi9kb2Mvc2NtZC9leHRyYWxvb2sKQEAgLTAsMCArMSwyOSBAQAorCitleHRyYWxvb2sKKy0tLS0tLS0tLQorCisgU0VIRVJLT01NQU5ETzoKKyAgICBleHRyYWxvb2sgPHRleHQ+CisKKyBBUkdVTUVOVEU6CisKKyAgICAgPHRleHQ+CisgICAgICAgIERpZSBCZXNjaHJlaWJ1bmcuCisKKyBCRVNDSFJFSUJVTkc6CisgICAgTWl0IGRpZXNlbSBCZWZlaGwga2FubnN0IER1IERlaW5lIEJlc2NocmVpYnVuZyB1bSB6dXNhZXR6bGljaGVuIFRleHQKKyAgICBlcndlaXRlcm4uCisKKyAgICBEZXIgVGV4dCBlcnNjaGVpbnQgbmFjaCBEZWluZXIgbm9ybWFsZW4gTGFuZ2Jlc2NocmVpYnVuZyB1bmQgdm9yIGRlcgorICAgIEF1Zmxpc3R1bmcgRGVpbmVzIEludmVudGFycy4KKworICAgIEdpYnN0IER1IGFscyA8dGV4dD4gbnVyIGVpbiAnPycgYW4sIHdpcmQgRGlyIGVpbiBha3R1ZWxsZXIgRXh0cmFsb29rCisgICAgYXVzZ2VnZWJlbi4KKyAgICBMYWVzc3QgRHUgPHRleHQ+IGdhbnogd2VnLCBvZWZmbmV0IHNpY2ggZWluIEVkaXRvciwgaW4gZGVtIER1IERlaW5lbiBuZXVlbgorICAgIEV4dHJhbG9vayBlaW5nZWJlbiBrYW5uc3QuCisKKyBTSUVIRSBBVUNIOgorICAgIHVudGVyc3VjaGUKKworIExFVFpURSBBZU5ERVJVTkc6CisgICAgVGh1LCAyNC4wNy4xOTk3LCAwOTowMDowMCB2b24gV2FyZ29uCmRpZmYgLS1naXQgYS9kb2Mvc2NtZC9mZWhsZXJtZWxkdW5nIGIvZG9jL3NjbWQvZmVobGVybWVsZHVuZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi42Nzg1ZTBlCi0tLSAvZGV2L251bGwKKysrIGIvZG9jL3NjbWQvZmVobGVybWVsZHVuZwpAQCAtMCwwICsxLDIwIEBACisKK2ZlaGxlcm1lbGR1bmcKKy0tLS0tLS0tLS0tLS0KKworIFNFSEVSS09NTUFORE86CisgICAgZmVobGVybWVsZHVuZyBbPHRleHQ+XQorCisgQVJHVU1FTlRFOgorCisgICAgIDx0ZXh0PgorICAgICAgICBUZXh0IGRlciBuZXVlbiBGZWhsZXJtZWxkdW5nIChvcHRpb25hbCkKKworIEJFU0NIUkVJQlVORzoKKyAgICBNaXQgZGllc2VtIEJlZmVobCBrYW5uc3QgRHUgRGlyIGVpbmUgbmV1ZSBGZWhsZXJtZWxkdW5nIGFuc3RlbGxlIGRlcworICAgIHVlYmxpY2hlbiAiV2llIGJpdHRlPyIgc2V0emVuLgorCisgICAgTGFlc3N0IER1IDx0ZXh0PiB3ZWcsIHdpcmQgd2llZGVyIGF1ZiAiV2llIGJpdHRlPyIgenVydWVja2dlc2NoYWx0ZXQuCisKKyBMRVRaVEUgQWVOREVSVU5HOgorICAgIFRodSwgMjQuMDcuMTk5NywgMDk6MDA6MDAgdm9uIFdhcmdvbgpkaWZmIC0tZ2l0IGEvZG9jL3NjbWQvZmx1Y2h0cmljaHR1bmcgYi9kb2Mvc2NtZC9mbHVjaHRyaWNodHVuZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4zYjlhNTY1Ci0tLSAvZGV2L251bGwKKysrIGIvZG9jL3NjbWQvZmx1Y2h0cmljaHR1bmcKQEAgLTAsMCArMSw0MCBAQAorCitmbHVjaHRyaWNodHVuZworLS0tLS0tLS0tLS0tLS0KKworIFNFSEVSS09NTUFORE86CisgICAgZmx1Y2h0cmljaHR1bmcgPGJlZmVobD4KKworIEFSR1VNRU5URToKKworICAgICA8YmVmZWhsPgorICAgICAgICBEZXIgQmVmZWhsIGZ1ZXIgZGllIGJldm9yenVndGUgRmx1Y2h0cmljaHR1bmcuCisKKyBCRVNDSFJFSUJVTkc6CisgICAgU2V0enQgZGllIGJldm9yenVndGUgRmx1Y2h0cmljaHR1bmcgZnVlciBkZW4gVm9yc2ljaHRzbW9kdXMuCisKKyAgICBEaWVzZSBSaWNodHVuZyB3aXJkIGJlaSBkZXIgRmx1Y2h0IG1pdCBlaW5lciBnZXdpc3NlbiBXYWhyc2NoZWlubGljaGtlaXQKKyAgICBhbHMgZXJzdGVzIGF1c3Byb2JpZXJ0LCBmYWxscyBtb2VnbGljaC4gRGllIFdhaHJzY2hlaW5saWNoa2VpdCBiZXRyYWVndAorICAgIDYwJSBiZWkgU3R1ZmUgMzAgdW5kIG5pbW10IG1pdCBqZWRlciB3ZWl0ZXJlbiBTdHVmZSB1bSBjYS4gMSwzIFByb3plbnQtCisgICAgcHVua3RlIHp1LgorCisgICAgRmFsbHMgZGllIEZsdWNodCBpbiBkaWVzZSBSaWNodHVuZyBuaWNodCBnZWxpbmd0LCB3ZXJkZW4gZGllIGFuZGVyZW4KKyAgICBSaWNodHVuZ2VuIHdpZSBiaXNoZXIgYXVzcHJvYmllcnQuCisKKyBCRUlTUElFTEU6CisgICAgV2VubiBtYW4gYmV2b3J6dWd0IG5hY2ggT3N0ZW4gZmxpZWhlbiB3aWxsOgorCisgICAgPiBmbHVjaHRyaWNodHVuZyBvc3RlbgorICAgICAgICBvZGVyCisgICAgPiBmbHVjaHRyaWNodHVuZyBvCisKKyAgICBXZW5uIG1hbiAidHJhZGl0aW9uZWxsIiBmbHVlY2h0ZW4gd2lsbCwgZGllcyBhYmVyIGtvbW1lbnRpZXJlbiBtb2VjaHRlLAorICAgIGthbm4gbWFuIGF1Y2ggZm9sZ2VuZGVzIG5laG1lbjoKKworICAgID4gZmx1Y2h0cmljaHR1bmcgc2FnIE9oLCBzaGl0IQorCisgU0lFSEUgQVVDSDoKKyAgICB2b3JzaWNodCwgcmVwb3J0CisKKyBMRVRaVEUgQWVOREVSVU5HOgorICAgIE1pdCwgMDcuMDEuMjAwNCwgIHZvbiBSaWt1cwpkaWZmIC0tZ2l0IGEvZG9jL3NjbWQvaGF1c2JhdSBiL2RvYy9zY21kL2hhdXNiYXUKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZWFlMDRmNwotLS0gL2Rldi9udWxsCisrKyBiL2RvYy9zY21kL2hhdXNiYXUKQEAgLTAsMCArMSw0MCBAQAorCitBbGxnZW1laW5lcyB6dW0gSGF1c2JhdQorPT09PT09PT09PT09PT09PT09PT09PT0KKworIEFMTEdFTUVJTjoKKyAgICBVbSBlaW4gSGF1cyB6dSBiYXVlbiwgbXVzcyBtYW4gc2ljaCBpbiBkaWUgRmlsaWFsZSBkZXIgTW9yZ2VuR3JhdWVuLUJhbmsKKyAgICAoRGVyIEJhbmsgaW4gSWhyZW0gUnVlY2tlbikgYmVnZWJlbiB1bmQgYW0gQW50cmFnc2NoYWx0ZXIgZWluZW4KKyAgICBCYXVzcGFydmVydHJhZyBlcndlcmJlbi4gSGF0IG1hbiBkaWVzZW4gdW50ZXJ6ZWljaG5ldCAoZWJlbmZhbGxzIGFtCisgICAgQW50cmFnc2NoYWx0ZXIpLCBrYW5uIG1hbiBzaWNoIGFuIGRpZSBGaW5hbnppZXJ1bmcgc2VpbmVzIEhhdXNlcyBiZWdlYmVuLgorICAgIEFsbGVzIHdlaXRlcmUgaGllcnp1IGlzdCBpbSBWZXJ0cmFnIGJlc2NocmllYmVuLgorCisgICAgU29sbHRlc3QgRHUgZXMgRGlyIGRhbm4gZG9jaCBub2NoIGVpbm1hbCBhbmRlcnMgdWViZXJsZWdlbiwga2FubnN0IER1IGRlbgorICAgIFZlcnRyYWcgamVkZXJ6ZWl0IHplcnJlaXNzZW4uIFNjaG9uIGVpbmdlemFobHRlIFJhdGVuIHNpbmQgYWxsZXJkaW5ncworICAgIHVud2lkZXJydWZsaWNoIHZlcmxvcmVuIQorCisgICAgSGFzdCBEdSBkaWUgRmluYW56aWVydW5nc3BoYXNlIGhpbnRlciBEaWNoIGdlYnJhY2h0LCBrYW5uc3QgRHUgRGlyIGFtCisgICAgQXVzZ2FiZXNjaGFsdGVyIGVpbiBJbnN0YW50aGF1cyBhYmhvbGVuLiBEYW5uIGthbm5zdCBEdSBEaWNoIGF1ZiBkaWUgU3VjaGUKKyAgICBuYWNoIGVpbmVtIGdlZWlnbmV0ZW4gQmF1cGxhdHogbWFjaGVuLiBEYXMgd2VpdGVyZSBWb3JnZWhlbiBpc3QgbWl0ICJoaWxmZQorICAgIGluc3RhbnRoYXVzIiBlcmZhaHJiYXIuCisKKyAgICBTb2xsIGRhcyBIYXVzIHNwYWV0ZXIgdW0gbmV1ZSBSYWV1bWUgZXJ3ZWl0ZXJ0IHdlcmRlbiwgbXVzc3QgRHUgRGljaAorICAgIHdpZWRlciB6dW0gQW50cmFnc2NoYWx0ZXIgYmVnZWJlbi4gTnVuIG11c3N0IER1IGplZG9jaCBlaW5lbiBBdXNiYXV2ZXJ0cmFnCisgICAgYmVhbnRyYWdlbi4gRGFzIFNwYXJlbiBlcmZvbGd0IGF1ZiBkaWUgZ2xlaWNoZSBXZWlzZSB3aWUgYmVpbSBIYXVzYmF1LAorICAgIGFsbGVyZGluZ3Mgd2lyZCBkZXIgQXVzYmF1IG5hY2ggQXVmYnJpbmdlbiBkZXIgU3VtbWUgb2huZSBlaWdlbmVzIFp1dHVuCisgICAgdm9yZ2Vub21tZW4gKGVzIGdpYnQgYWxzbyBrZWluZW4gSW5zdGFudHJhdW0pLgorCisgICAgTWFuIGthbm4gbmV1biB3ZWl0ZXJlIFJhZXVtZSBkYXp1a2F1ZmVuLCBzbyBkYXNzIG1hbiBtYXhpbWFsIHVlYmVyIGVpbgorICAgIDEwLVppbW1lci1IYXVzIHZlcmZ1ZWdlbiBrYW5uLgorCisgICAgRXMgaXN0IGFsbGVyZGluZ3MgYXVjaCBtb2VnbGljaCwgc2VpbiBIYXVzIG1pdCBlaW5lbSBOYWNoYmFyaGF1cyB6dQorICAgIHZlcmJpbmRlbiAobmF0dWVybGljaCBudXIgaW4gZ2VnZW5zZWl0aWdlbSBFaW52ZXJzdGFlbmRuaXMpLiBOYWVoZXJlcworICAgIGhpZXJ6dSBlcmZhZWhydCBtYW4gbWl0ICJoaWxmZSBhdXNnYW5nIi4KKworIFNJRUhFIEFVQ0g6CisgICAgaW5zdGFudGhhdXMsIHNlaGVyaGF1cywKKyAgICBhZW5kZXJlLCBhdXNnYW5nLCBiZXNjaHJlaWJlLCBlcmxhdWJlLCBrb3BpZXJlLCBsaWNodCwgbG9lc2NoZSwgbWVsZHVuZ2VuLAorICAgIG5vdGl6LCBzY2hpZWJlLCBzcGVycmUsIHNwaW9uLCB1ZWJlcnNpY2h0LCB2ZXJiaWV0ZSwgd2VyZmUKKworIExFVFpURSBBZU5ERVJVTkc6CisgICAgVGh1LCAyNC4wNy4xOTk3LCAwOTowMDowMCB2b24gV2FyZ29uCmRpZmYgLS1naXQgYS9kb2Mvc2NtZC9pbnN0YW50aGF1cyBiL2RvYy9zY21kL2luc3RhbnRoYXVzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmUzZDJmMmIKLS0tIC9kZXYvbnVsbAorKysgYi9kb2Mvc2NtZC9pbnN0YW50aGF1cwpAQCAtMCwwICsxLDMxIEBACisKK0FsbGdlbWVpbmVzIHp1bSBJbnN0YW50aGF1cworPT09PT09PT09PT09PT09PT09PT09PT09PT09CisKKyBBTExHRU1FSU46CisgICAgRGFzIEluc3RhbnRoYXVzIGlzdCBkaWUgS2VpbXplbGxlIERlaW5lcyBTZWhlcmhhdXNlcy4gV2VubiBEdSBtZWluc3QsIGVpbmUKKyAgICBnZWVpZ25ldGUgU3RlbGxlIGdlZnVuZGVuIHp1IGhhYmVuLCBrYW5uc3QgRHUgZXMgZmFsbGVubGFzc2VuIHVuZCBnaWVzc2VuLAorICAgIGRhbWl0IGVzIHp1IGVpbmVtIHJpY2h0aWdlbiBIYXVzIHdpcmQuCisKKyAgICBXZW5uIGRpZSBTdGVsbGUgbmljaHQgYWxzIEJhdXBsYXR6IGdla2VubnplaWNobmV0IGlzdCwgYmVrb21tc3QgRHUgZWluZQorICAgIE1lbGR1bmcsIGFuIHdlbGNoZW4gTWFnaWVyIER1IERpY2ggd2VuZGVuIGthbm5zdC4gRGllc2VyIGVudHNjaGVpZGV0IGRhbm4sCisgICAgb2IgRHUgZG9ydCBiYXVlbiBkYXJmc3Qgb2RlciBvYiBEdSBEaXIgYmVzc2VyIGVpbmUgYW5kZXJlIFN0ZWxsZSBzdWNoZW4KKyAgICBzb2xsdGVzdC4KKworIEtPTU1BTkRPUzoKKyAgICBEYXMgSW5zdGFudGhhdXMgc3RlbGx0IGZvbGdlbmRlIHp3ZWkgQmVmZWhsZSB6dXIgVmVyZnVlZ3VuZzoKKworICAgICBsYXNzIGhhdXMgZmFsbGVuCisgICAgICAgIER1IGxhZXNzdCBkYXMgSGF1cyBmYWxsZW4uIERhcyBnZWh0IGFsbGVyZGluZ3MgbnVyICJkcmF1c3NlbiIgdW5kIG51ciwKKyAgICAgICAgd2VubiBEZWluZSBVbWdlYnVuZyBhbHMgQmF1cGxhdHogZ2VrZW5uemVpY2huZXQgaXN0LiBEdSBrYW5uc3QgZXMKKyAgICAgICAgcHJvYmVoYWxiZXIgZmFsbGVubGFzc2VuLCB1bSBoZXJhdXN6dWZpbmRlbiwgYW4gd2VuIER1IERpY2ggZnVlciBkaWUKKyAgICAgICAgS2VubnplaWNobnVuZyB3ZW5kZW4gbXVzc3QuCisgICAgIGdpZXNzZSBoYXVzCisgICAgICAgIFdlbm4gRHUgZGFzIEhhdXMgZXJmb2xncmVpY2ggYWJnZXN0ZWxsdCBoYXN0LCBrYW5uc3QgRHUgZXMgZHVyY2ggZGFzCisgICAgICAgIEdpZXNzZW4genUgZWluZW0gInJpY2h0aWdlbiIgSGF1cyBlcndlY2tlbi4KKworIFNJRUhFIEFVQ0g6CisgICAgaGF1c2JhdSwgc2VoZXJoYXVzLCByZWdpb25lbgorCisgTEVUWlRFIEFlTkRFUlVORzoKKyAgICBUaHUsIDI0LjA3LjE5OTcsIDA5OjAwOjAwIHZvbiBXYXJnb24KZGlmZiAtLWdpdCBhL2RvYy9zY21kL2tvcGllcmUgYi9kb2Mvc2NtZC9rb3BpZXJlCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmMxNjc3ODAKLS0tIC9kZXYvbnVsbAorKysgYi9kb2Mvc2NtZC9rb3BpZXJlCkBAIC0wLDAgKzEsNzIgQEAKKwora29waWVyZQorLS0tLS0tLQorCisgU0VIRVJIQVVTS09NTUFORE86CisgICAga29waWVyZSBkZXRhaWwgPGRldDE+IG5hY2ggPGRldDI+CisgICAga29waWVyZSBsZXNiYXJlcyBkZXRhaWwgPGRldDE+IG5hY2ggPGRldDI+CisgICAga29waWVyZSBiZWZlaGwgPGJlZjE+IG5hY2ggPGJlZjI+CisgICAga29waWVyZSBiZWZlaGwgPGJlZjE+IDxwYXJhMT4gbmFjaCA8YmVmMj4KKyAgICBrb3BpZXJlIGJlZmVobCA8YmVmMT4gPHBhcmExPiBuYWNoIDxiZWYyPiA8cGFyYTI+CisKKyBBUkdVTUVOVEU6CisKKyAgICAgPGRldDE+CisgICAgICAgIChsZXNiYXJlcykgRGV0YWlsLCBkZXNzZW4gVGV4dCBrb3BpZXJ0IHdlcmRlbiBzb2xsCisgICAgIDxkZXQyPgorICAgICAgICBMaXN0ZSBkZXIgenUga29waWVyZW5kZW4gKGxlc2JhcmVuKSBEZXRhaWxzLiBCZWkgbWVocmVyZW4gRGV0YWlscworICAgICAgICBtdWVzc2VuIGRpZXNlIGR1cmNoIEtvbW1hdGEgdm9uZWluYW5kZXIgZ2V0cmVubnQgc2VpbiEKKyAgICAgPGJlZjE+CisgICAgICAgIFp1IGtvcGllcmVuZGVyIEJlZmVobC4gRGllcyBkYXJmIG51ciBlaW4gZWluemVsbmVzIFZlcmIgc2VpbiEKKyAgICAgPGJlZjI+CisgICAgICAgIFZlcmIgb2RlciBMaXN0ZSB2b24gVmVyYmVuIGZ1ZXIgZGVuIFppZWxiZWZlaGwuCisgICAgIDxwYXJhMT4KKyAgICAgICAgUGFyYW1ldGVyLCBkaWUgZGVuIHp1IGtvcGllcmVuZGVuIEJlZmVobCBnZW5hdWVyIGFuZ2ViZW4uCisgICAgIDxwYXJhMj4KKyAgICAgICAgUGFyYW1ldGVyLCBkaWUgZGVuIFppZWxiZWZlaGwgZ2VuYXVlciBhbmdlYmVuLgorCisgQkVTQ0hSRUlCVU5HOgorCisgICAgIGtvcGllcmUgZGV0YWlsIDxkZXQxPiBuYWNoIDxkZXQyPgorICAgICBrb3BpZXJlIGxlc2JhcmVzIGRldGFpbCA8ZGV0MT4gbmFjaCA8ZGV0Mj4KKyAgICAgICAgRGllc2VyIEJlZmVobCBiZXNjaHJlaWJ0IGRhcyAobGVzYmFyZSkgRGV0YWlsIDxkZXQyPiBtaXQgZGVtIFRleHQgdm9uCisgICAgICAgIDxkZXQxPi4gU2VociBudWV0emxpY2gsIHdlbm4gbWFuIG5hY2h0cmFlZ2xpY2ggZWluIERldGFpbCBtaXQgZWluZW0KKyAgICAgICAgd2VpdGVyZW4gTmFtZW4gYW5zcHJlY2hiYXIgbWFjaGVuIHdpbGwgdW5kIGtlaW5lIEx1c3QgaGF0LCBkZW4gVGV4dAorICAgICAgICBub2NobWFsIHp1IHRpcHBlbi4KKworICAgICBrb3BpZXJlIGJlZmVobCA8YmVmMT4gbmFjaCA8YmVmMj4KKyAgICAgICAgS29waWVydCBkZW4gQmVmZWhsIDxiZWYxPiB6dSBkZW0gQmVmZWhsIDxiZWYyPiBtaXQgYWxsZW4gUGFyYW1ldGVybi4KKyAgICAgICAgV2VubiBlcyA8YmVmMj4gc2Nob24gZ2FiLCBzbyB3aXJkIGRlc3NlbiBQYXJhbWV0ZXJsaXN0ZSB1bSBuZXVlCisgICAgICAgIFBhcmFtZXRlciBlcmdhZW56dC4KKworICAgICBrb3BpZXJlIGJlZmVobCA8YmVmMT4gPHBhcmExPiBuYWNoIDxiZWYyPgorICAgICAgICBLb3BpZXJ0IG51ciBkZW4gYW5nZWdlYmVuZW4gUGFyYW1ldGVyIHZvbiA8YmVmMT4gbmFjaCA8YmVmMj4uCisKKyAgICAga29waWVyZSBiZWZlaGwgPGJlZjE+IDxwYXJhMT4gbmFjaCA8YmVmMj4gPHBhcmEyPgorICAgICAgICBXaWUgb2JlbiwgYWxsZXJkaW5ncyBrYW5uIGRlciBQYXJhbWV0ZXIgYXVjaCBnZWFlbmRlcnQgd2VyZGVuLgorCisgQkVJU1BJRUxFOgorICAgIERhcyBEZXRhaWwgIndhbmQiIHNvbGwgc2ljaCBhdWNoIGFscyAid2FlbmRlIiBhbnNwcmVjaGVuIGxhc3NlbjoKKworICAgID4ga29waWVyZSBkZXRhaWwgd2FuZCBuYWNoIHdhZW5kZQorCisgICAgQWxsZSAiZHJ1ZWNrIi1CZWZlaGxlIHNvbGxlbiBzaWNoIGF1Y2ggbWl0ICJkcnVlY2tlIiBhbnNwcmVjaGVuIGxhc3NlbjoKKworICAgID4ga29waWVyZSBiZWZlaGwgZHJ1ZWNrIG5hY2ggZHJ1ZWNrZQorCisgICAgU3RhdHQgImRydWVja2UgaGViZWwiIHNvbGwgbWFuIGpldHp0IGF1Y2ggInppZWhlIGhlYmVsIiB2ZXJ3ZW5kZW4ga29lbm5lbi4KKyAgICAiZHJ1ZWNrZSBrbm9wZiIgc29sbCBqZWRvY2ggbmljaHQgZHVyY2ggInppZWhlIGtub3BmIiBlcmdhZW56dCB3ZXJkZW46CisKKyAgICA+IGtvcGllcmUgYmVmZWhsIGRydWVja2UgaGViZWwgbmFjaCB6aWVoZQorICAgICAgICBvZGVyCisgICAgPiBrb3BpZXJlIGJlZmVobCBkcnVlY2tlIGhlYmVsIG5hY2ggemllaGUgaGViZWwKKworICAgIERlciBUZXh0IHZvbiAiZHJ1ZWNrZSBoZWJlbCIgd2lyZCBqZXR6dCBhdWNoIGJlaSAiemllaGUgZmFkZW4iIGF1c2dlZ2ViZW46CisKKyAgICA+IGtvcGllcmUgYmVmZWhsIGRydWVja2UgaGViZWwgbmFjaCB6aWVoZSBmYWRlbgorCisgU0lFSEUgQVVDSDoKKyAgICBhZW5kZXJlLCBiZXNjaHJlaWJlLCBsb2VzY2hlLCB1ZWJlcnNpY2h0CisKKyBMRVRaVEUgQWVOREVSVU5HOgorICAgIFRodSwgMjQuMDcuMTk5NywgMDk6MDA6MDAgdm9uIFdhcmdvbgpkaWZmIC0tZ2l0IGEvZG9jL3NjbWQvbGljaHQgYi9kb2Mvc2NtZC9saWNodApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5lM2M1NzZiCi0tLSAvZGV2L251bGwKKysrIGIvZG9jL3NjbWQvbGljaHQKQEAgLTAsMCArMSwyMCBAQAorCitsaWNodAorLS0tLS0KKworIFNFSEVSSEFVU0tPTU1BTkRPOgorICAgIGxpY2h0IGFuIHwgYXVzCisKKyBCRVNDSFJFSUJVTkc6CisgICAgImxpY2h0IGF1cyIgdmVyZHVua2VsdCBkZW4gUmF1bS4gRGFiZWkgd2lyZCBkZXIgTGljaHRsZXZlbCBkZXMgUmF1bWVzIHNvCisgICAgZ2VzZXR6dCwgZGFzcyBkZXIgR2VzYW10bGljaHRsZXZlbCAoYmVyZWNobmV0IHNpY2ggYXVzIGRlbSBkZXMgUmF1bWVzIHVuZAorICAgIGRlbSBhbGxlciBhbndlc2VuZGVuIExpY2h0cXVlbGxlbikgZ2VyYWRlIDAgZXJnaWJ0LgorCisgICAgImxpY2h0IGFuIiBtYWNodCBnZXJhZGUgZGFzIEdlZ2VudGVpbDogZGVyIExpY2h0bGV2ZWwgZGVzIFJhdW1lcyB3aXJkIHNvCisgICAgZ2VzZXR6dCwgZGFzcyBkZXIgUmF1bSBnZXJhZGUgZWluZW4gR2VzYW10bGljaHRsZXZlbCB2b24gMSBoYXQuCisKKyBTSUVIRSBBVUNIOgorICAgIGJlc2NocmVpYmUKKworIExFVFpURSBBZU5ERVJVTkc6CisgICAgVGh1LCAyNC4wNy4xOTk3LCAwOTowMDowMCB2b24gV2FyZ29uCmRpZmYgLS1naXQgYS9kb2Mvc2NtZC9sb2VzY2hlIGIvZG9jL3NjbWQvbG9lc2NoZQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5jNzBiMDYzCi0tLSAvZGV2L251bGwKKysrIGIvZG9jL3NjbWQvbG9lc2NoZQpAQCAtMCwwICsxLDY0IEBACisKK2xvZXNjaGUKKy0tLS0tLS0KKworIFNFSEVSSEFVU0tPTU1BTkRPOgorICAgIGxvZXNjaGUgZGV0YWlsIDxkZXQ+CisgICAgbG9lc2NoZSBsZXNiYXJlcyBkZXRhaWwgPGRldD4KKyAgICBsb2VzY2hlIGJlZmVobCA8YmVmPgorICAgIGxvZXNjaGUgYWxsZXMKKyAgICBsb2VzY2hlIGFsbGUgPHdhcz4KKworIEFSR1VNRU5URToKKworICAgICA8ZGV0PgorICAgICAgICBMaXN0ZSBkZXIgenUgbG9lc2NoZW5kZW4gKGxlc2JhcmVuKSBEZXRhaWxzLgorICAgICA8YmVmPgorICAgICAgICBMaXN0ZSBkZXIgenUgbG9lc2NoZW5kZW4gQmVmZWhsZS4KKyAgICAgPHdhcz4KKyAgICAgICAgYGJlZmVobGUnLCBgZGV0YWlscycgb2RlciBgbGVzYmFyZSBkZXRhaWxzJworCisgQkVTQ0hSRUlCVU5HOgorICAgIERpZXNlciBCZWZlaGwgZGllbnQgenVtIExvZXNjaGVuIHZvbiBEZXRhaWxzIHVuZCBCZWZlaGxlbi4gRGllIGVpbnplbG5lbgorICAgIEFud2VuZHVuZ2VuOgorCisgICAgIGxvZXNjaGUgZGV0YWlsIDxkZXQ+CisgICAgIGxvZXNjaGUgbGVzYmFyZXMgZGV0YWlsIDxkZXQ+CisgICAgICAgIExvZXNjaHQgZGFzIChsZXNiYXJlKSBEZXRhaWwgPGRldD4uIEVzIGtvZW5uZW4gYXVjaCBtZWhyZXJlIChsZXNiYXJlKQorICAgICAgICBEZXRhaWxzIGF1ZiBlaW5tYWwgZ2Vsb2VzY2h0IHdlcmRlbjsgbWFuIG11c3Mgc2llIGRhbm4gbWl0IEtvbW1hdGEKKyAgICAgICAgdm9uZWluYW5kZXIgdHJlbm5lbi4KKworICAgICBsb2VzY2hlIGJlZmVobCA8YmVmPgorICAgICAgICBMb2VzY2h0IGRlbiBCZWZlaGwgPGJlZj4uIFdlbm4gZXMgc2ljaCBiZWkgPGJlZj4gdW0gZWluIGVpbmZhY2hlcyBWZXJiCisgICAgICAgIGhhbmRlbHQsIHdlcmRlbiBhbGxlIEJlZmVobGUgenUgZGllc2VtIFZlcmIgZ2Vsb2VzY2h0LiBIYW5kZWx0IGVzIHNpY2gKKyAgICAgICAgdW0gZWluIFZlcmIgbWl0IFBhcmFtZXRlciwgc28gd2lyZCBudXIgZGllc2VyIGdhbnogc3BlemllbGxlIEJlZmVobAorICAgICAgICBnZWxvZXNjaHQuCisKKyAgICAgbG9lc2NoZSBhbGxlcworICAgICAgICBFcyB3ZXJkZW4gQUxMRSBEZXRhaWxzLCBsZXNiYXJlbiBEZXRhaWxzIHVuZCBCZWZlaGxlIGF1ZiBlaW5lbiBTY2hsYWcKKyAgICAgICAgZ2Vsb2VzY2h0LiBEYXp1IG11c3MgbWFuIG5vY2ggZGllIG5hY2hmb2xnZW5kZSBTaWNoZXJoZWl0c2FiZnJhZ2UgbWl0CisgICAgICAgIGBqYScgYmVhbnR3b3J0ZW4uCisKKyAgICAgbG9lc2NoZSBhbGxlIFtiZWZlaGxlfGRldGFpbHN8bGVzYmFyZW4gZGV0YWlsc10KKyAgICAgICAgRXMgd2VyZGVuIGFsbGUgQmVzY2hyZWlidW5nZW4gZGVyIGpld2VpbGlnZW4gU3BhcnRlIGdlbG9lc2NodC4gQXVjaAorICAgICAgICBoaWVyIGdpYnQgZXMgZWluZSBTaWNoZXJoZWl0c2FiZnJhZ2UsIGRpZSBtaXQgYGphJyBiZWFudHdvcnRldCB3ZXJkZW4KKyAgICAgICAgbXVzcy4KKworIEJFSVNQSUVMRToKKyAgICBEaWUgRGV0YWlscyBgd2FuZCcgdW5kIGB3YWVuZGUnIHNvbGxlbiBnZWxvZXNjaHQgd2VyZGVuOgorCisgICAgPiBsb2VzY2hlIGRldGFpbCB3YW5kLCB3YWVuZGUKKworICAgIEFsbGUgZHJ1ZWNrZS1CZWZlaGxlIHNvbGxlbiBnZWxvZXNjaHQgd2VyZGVuOgorCisgICAgPiBsb2VzY2hlIGJlZmVobCBkcnVlY2tlCisKKyAgICBOdXIgZGllIEJlZmVobGUgZHJ1ZWNrZSBrbm9wZiB1bmQgZHJ1ZWNrZSBwbGF0dGUgc29sbGVuIGdlbG9lc2NodCB3ZXJkZW46CisKKyAgICA+IGxvZXNjaGUgYmVmZWhsIGRydWVja2Uga25vcGYsIGRydWVja2UgcGxhdHRlCisKKyBTSUVIRSBBVUNIOgorICAgIGFlbmRlcmUsIGJlc2NocmVpYmUKKworIExFVFpURSBBZU5ERVJVTkc6CisgICAgVGh1LCAyNC4wNy4xOTk3LCAwOTowMDowMCB2b24gV2FyZ29uCmRpZmYgLS1naXQgYS9kb2Mvc2NtZC9tZWxkdW5nZW4gYi9kb2Mvc2NtZC9tZWxkdW5nZW4KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uODEyZmY3MgotLS0gL2Rldi9udWxsCisrKyBiL2RvYy9zY21kL21lbGR1bmdlbgpAQCAtMCwwICsxLDI4IEBACisKK21lbGR1bmdlbgorLS0tLS0tLS0tCisKKyBTRUhFUkhBVVNLT01NQU5ETzoKKyAgICBtZWxkdW5nZW4KKyAgICBtZWxkdW5nZW4gPG5yPgorICAgIG1lbGR1bmdlbiBoaWVyCisKKyBBUkdVTUVOVEU6CisKKyAgICAgPG5yPgorICAgICAgICBFaW5lIFJhdW1udW1tZXIgRGVpbmVzIEhhdXNlcworCisgQkVTQ0hSRUlCVU5HOgorICAgICJtZWxkdW5nZW4iIGdpYnQgZGllIGVpbmdlZ2FuZ2VuZW4gUnVlY2ttZWxkdW5nZW4gdm9uIFNwaWVsZXJuIGluIERlaW5lbQorICAgIEhhdXMgYXVzIChhbHNvIFR5cG8tLCBJZGVlLSB1bmQgRmVobGVybWVsZHVuZ2VuKS4KKworICAgICJtZWxkdW5nZW4gPG5yPiIgZ2lidCBudXIgZGllIE1lbGR1bmdlbiBhdXMgUmF1bSA8bnI+IGF1cy4KKworICAgICJtZWxkdW5nZW4gaGllciIgZ2lidCBudXIgZGllIE1lbGR1bmdlbiBhdXMgZGVtIFJhdW0gYXVzLCBpbiBkZW0gRHUgZ2VyYWRlCisgICAgc3RlaHN0LgorCisgU0lFSEUgQVVDSDoKKyAgICBhZW5kZXJlLCBiZXNjaHJlaWJlCisKKyBMRVRaVEUgQWVOREVSVU5HOgorICAgIFRodSwgMjQuMDcuMTk5NywgMDk6MDA6MDAgdm9uIFdhcmdvbgpkaWZmIC0tZ2l0IGEvZG9jL3NjbWQvbm90aXogYi9kb2Mvc2NtZC9ub3RpegpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4yMzBjZTBlCi0tLSAvZGV2L251bGwKKysrIGIvZG9jL3NjbWQvbm90aXoKQEAgLTAsMCArMSwzMSBAQAorCitub3RpegorLS0tLS0KKworIFNFSEVSSEFVU0tPTU1BTkRPOgorICAgIG5vdGl6IDx0ZXh0PgorCisgQVJHVU1FTlRFOgorCisgICAgIDx0ZXh0PgorICAgICAgICBFaW5lIGt1cnplIE1pdHRlaWx1bmcKKworIEJFU0NIUkVJQlVORzoKKyAgICBNaXQgZGllc2VtIEJlZmVobCBrYW5uc3QgRHUgZWluZSBrdXJ6ZSBOb3RpeiBhbiBkZXIgSGF1c3R1ZXIgYW5icmluZ2VuLgorICAgIEF1cyBkaWVzZW0gR3J1bmQgZnVua3Rpb25pZXJ0IGRpZXNlciBCZWZlaCBhdWNoIG51ciBhdXNzZW4hCisKKyAgICBPaG5lIFBhcmFtZXRlciB3aXJkIGRpZSBha3R1ZWxsZSBOb3RpeiBnZWxvZXNjaHQuCisKKyAgICBEaWUgTm90aXogd2lyZCBpbiBkZXIgRm9ybQorCisgICAgQW4gZGVyIFR1ZXIgYmVmaW5kZXQgc2ljaCBlaW5lIE5vdGl6OiAnPHRleHQ+Jy4KKworICAgIGFuIGRpZSBMYW5nYmVzY2hyZWlidW5nIGRlcyBIYXVzZXMgYW5nZWhhZW5ndC4KKworICAgIERpZSBOb3RpeiB3aXJkIHVlYnJpZ2VucyBuaWNodCBtaXQgZ2VzcGVpY2hlcnQuCisKKyBTSUVIRSBBVUNIOgorICAgIGJlc2NocmVpYmUKKworIExFVFpURSBBZU5ERVJVTkc6CisgICAgVGh1LCAyNC4wNy4xOTk3LCAwOTowMDowMCB2b24gV2FyZ29uCmRpZmYgLS1naXQgYS9kb2Mvc2NtZC9wcmVzYXkgYi9kb2Mvc2NtZC9wcmVzYXkKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYzcyZmYyMQotLS0gL2Rldi9udWxsCisrKyBiL2RvYy9zY21kL3ByZXNheQpAQCAtMCwwICsxLDI2IEBACisKK3ByZXNheQorLS0tLS0tCisKKyBTRUhFUktPTU1BTkRPOgorICAgIHByZXNheSA8dGV4dD4KKworIEFSR1VNRU5URToKKworICAgICA8dGV4dD4KKyAgICAgICAgRGVyIFRleHQgZnVlciBkYXMgUHJlc2F5LgorCisgQkVTQ0hSRUlCVU5HOgorICAgIERhcyBQcmVzYXkgd2lyZCBpbiBkZXIgS3VyemJlc2NocmVpYnVuZyBkZXMgQ2hhcmFrdGVycyB2b3IgZGVuIE5hbWVuCisgICAgZ2VzZXR6dC4KKworICAgIGBwcmVzYXknIG9obmUgPHRleHQ+IGxvZXNjaHQgZGFzIG1vbWVudGFuIGdlc2V0enRlIFByZXNheS4KKworICAgIE1hZ2llciBrb2VubmVuIGVycmVpY2hlbiwgZGFzcyBpaHIgUHJlc2F5IGF1Y2ggYmVpIGRlbgorICAgIEtvbW11bmlrYXRpb25zYmVmZWhsZW4gbWl0IGF1c2dlZ2ViZW4gd2lyZC4KKworIFNJRUhFIEFVQ0g6CisgICAgdGl0ZWwsIHNob3dwcmVzYXkgKG51ciBNYWdpZXIpCisKKyBMRVRaVEUgQWVOREVSVU5HOgorICAgIFRodSwgMjQuMDcuMTk5NywgMDk6MDA6MDAgdm9uIFdhcmdvbgpkaWZmIC0tZ2l0IGEvZG9jL3NjbWQvcmVtb3RlIGIvZG9jL3NjbWQvcmVtb3RlCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjcwMTMyOGIKLS0tIC9kZXYvbnVsbAorKysgYi9kb2Mvc2NtZC9yZW1vdGUKQEAgLTAsMCArMSw1MyBAQAorCityZW1vdGUKKy0tLS0tLQorCisgU0VIRVJLT01NQU5ETyAoZXJzdCBuYWNoIEJlc3RlaGVuIGRlciBLcmlzdGFsbGt1Z2VscXVlc3QgdmVyZnVlZ2Jhcik6CisgICAgcmVtb3RlIDxzcGllbGVyPiA8dGV4dD4KKyAgICByOiA8c3BpZWxlcj4gPHRleHQ+CisgICAgcjsgPHNwaWVsZXI+IDx0ZXh0PgorCisgQVJHVU1FTlRFOgorCisgICAgIDxzcGllbGVyPgorICAgICAgICBOYW1lIGRlcyBaaWVscy4KKyAgICAgPHRleHQ+CisgICAgICAgIEVpbiBiZWxpZWJpZ2VyIFRleHQuCisKKyBCRVNDSFJFSUJVTkc6CisgICAgRGVyIFRleHQgPHRleHQ+IHdpcmQgYW4gZGVuIFNwaWVsZXIgPHNwaWVsZXI+IGF1c2dlZ2ViZW4uIERlbSBUZXh0IHdpcmQKKyAgICBkYWJlaSBkZXIgZWlnZW5lIE5hbWUgdm9yYW5nZXN0ZWxsdCwgdW5kIHp3YXIgYmVpIGByZW1vdGUnIHVuZCBgcjonIGltCisgICAgTm9taW5hdGl2IHVuZCBiZWkgYHI7JyBpbSBHZW5pdGl2LgorCisgICAgRGllIEF1c2dhYmUgZXJmb2xndCBpbiBmb2xnZW5kZXIgRm9ybToKKworICAgIDxlaWdlbmVyIE5hbWU+IHRleHQgYXVzIGRlciBGZXJuZS4KKworICAgIERhcyAiYXVzIGRlciBGZXJuZSIgbGFlc3N0IHNpY2ggZHVyY2ggZGVuIFBsYXR6aGFsdGVyICMgYXVjaCBhbiBiZWxpZWJpZ2VyCisgICAgU3RlbGxlIGluIDx0ZXh0PiBlaW5iYXVlbi4KKworICAgIFdlbm4gbWFuIHN0YXR0IGRlcyAiYXVzIGRlciBGZXJuZSIgbGllYmVyIGVpbiAiaW4gZGVyIEZlcm5lIiBoYWJlbiBtb2VjaHRlLAorICAgIHNvIGthbm4gbWFuIGRlbiBQbGF0emhhbHRlciBeIHZlcndlbmRlbi4KKworICAgIEZhbGxzIG1hbiBkZW4gUGxhdHpoYWx0ZXIgc2VsYmVyIGF1c2dlYmVuIG1vZWNodGUsIGthbm4gbWFuIGlobiBlaW5mYWNoCisgICAgdmVyZG9wcGVsbi4gQXVzICMjIHdpcmQgZGFubiAjIHVuZCBhdXMgXl4gd2lyZCBeLgorCisgQkVJU1BJRUxFOgorICAgIFdlbm4gV2FyZ29uIG1pdCBzZWluZW0gVGVzdGVyIFNhcGhpcyB1bnp1ZnJpZWRlbiBpc3QsIGtvbW10IGVzIGFiIHVuZCBhbgorICAgIHp1IGZvbGdlbmRlbiB1bnNjaG9lbmVuIFN6ZW5lbjoKKworICAgIFdhcmdvbnMgRWluZ2FiZW46CisgICAgPiByOyBzYXBoaXMgWm9ybiB0cmlmZnQgRGljaAorICAgID4gcjogc2FwaGlzIGdpYnQgRGlyICMgZWluZW4gVHJpdHQKKyAgICA+IHI6IHNhcGhpcyBhZXJnZXJ0IHNpY2ggXiB1ZWJlciBEaWNoCisKKyAgICBVbmQgZGllIEF1c2dhYmVuIGJlaSBTYXBoaXM6CisgICAgPiBXYXJnb25zIFpvcm4gdHJpZmZ0IERpY2ggYXVzIGRlciBGZXJuZS4KKyAgICA+IFdhcmdvbiBnaWJ0IERpciBhdXMgZGVyIEZlcm5lIGVpbmVuIFRyaXR0LgorICAgID4gV2FyZ29uIGFlcmdlcnQgc2ljaCBpbiBkZXIgRmVybmUgdWViZXIgRGljaC4KKworIFNJRUhFIEFVQ0g6CisgICAgZW1vdGUsIGVjaG8sIHZlcmJlbgorCisgTEVUWlRFIEFlTkRFUlVORzoKKyAgICBNb24sIDAyLjA3LjIwMDEsIDE5OjAwOjAwIHZvbiBUaWFtYWsKZGlmZiAtLWdpdCBhL2RvYy9zY21kL3JldmlldyBiL2RvYy9zY21kL3JldmlldwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5mYTMxNjY1Ci0tLSAvZGV2L251bGwKKysrIGIvZG9jL3NjbWQvcmV2aWV3CkBAIC0wLDAgKzEsMjQgQEAKKworcmV2aWV3CistLS0tLS0KKworIFNFSEVSS09NTUFORE86CisgICAgcmV2aWV3CisKKyBBUkdVTUVOVEU6CisgICAga2VpbmUKKworIEJFU0NIUkVJQlVORzoKKyAgICBFcyB3ZXJkZW4gZGllIE1lbGR1bmdlbiBhdXNnZWdlYmVuLCBkaWUgQW53ZXNlbmRlIGVyaGFsdGVuLCB3ZW5uIER1IGVpbmVuCisgICAgUmF1bSBiZXRyaXR0c3Qgb2RlciB2ZXJsYWVzc3QsIHNvd2llIGRpZSBNZWxkdW5nZW4sIHdlbm4gRHUgZWluZW4gR2VnbmVyCisgICAgbWl0IGJsb3NzZW4gSGFlbmRlbiBhbmdyZWlmc3QuCisKKyAgICBCZWkgTWFnaWVybiB3ZXJkZW4gYXVzc2VyZGVtIG5vY2ggZGllIE1lbGR1bmdlbiBhbmdlemVpZ3QsIGRpZSB2b24gZGVuCisgICAgQmVmZWhsZW4gY2xvbmUgdW5kIGRlc3RydWN0IGF1c2dlZ2ViZW4gd2VyZGVuLgorCisgU0lFSEUgQVVDSDoKKyAgICBzZXRtaW4sIHNldG1vdXQsIHNldG1taW4sIHNldG1tb3V0LCBzZXRoYW5kcworICAgIE51ciBNYWdpZXI6IHNldGNtc2csIHNldGRtc2cKKworIExFVFpURSBBZU5ERVJVTkc6CisgICAgVGh1LCAyNC4wNy4xOTk3LCAwOTowMDowMCB2b24gV2FyZ29uCmRpZmYgLS1naXQgYS9kb2Mvc2NtZC9zY2hpZWJlIGIvZG9jL3NjbWQvc2NoaWViZQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5hYzg5MWFhCi0tLSAvZGV2L251bGwKKysrIGIvZG9jL3NjbWQvc2NoaWViZQpAQCAtMCwwICsxLDI3IEBACisKK3NjaGllYmUKKy0tLS0tLS0KKworIFNFSEVSSEFVU0tPTU1BTkRPOgorICAgIHNjaGllYmUgPHRydWhlPiBuYWNoIDxyaWNodHVuZz4KKworIEFSR1VNRU5URToKKworICAgICA8dHJ1aGU+CisgICAgICAgIEVpbiBndWVsdGlnZXIgQmV6ZWljaG5lciBkZXIgVHJ1aGUKKyAgICAgPHJpY2h0dW5nPgorICAgICAgICBEaWUgUmljaHR1bmcsIGluIGRpZSBkaWUgVHJ1aGUgZ2VzY2hvYmVuIHdlcmRlbiBzb2xsLgorCisgQkVTQ0hSRUlCVU5HOgorICAgIE1pdCBkaWVzZW0gQmVmZWhsIGthbm4gbWFuIHNlaW5lIFRydWhlIGlubmVyaGFsYiBzZWluZXMgSGF1c2VzIGZyZWkKKyAgICB2ZXJzY2hpZWJlbi4KKworICAgIERlciBaaWVscmF1bSBtdXNzIHp1bSBlaWdlbmVuIEhhdXMgZ2Vob2VyZW47IGF1Y2ggd2VubiBtYW4gZWluCisgICAgYmVuYWNoYmFydGVzIFNlaGVyaGF1cyBtaXRudXR6dCwga2FubiBkaWUgVHJ1aGUgZG9ydCBuaWNodCBoaW5nZXNjaG9iZW4KKyAgICB3ZXJkZW4hCisKKyBTSUVIRSBBVUNIOgorICAgIGJlc2NocmVpYmUKKworIExFVFpURSBBZU5ERVJVTkc6CisgICAgVGh1LCAyNC4wNy4xOTk3LCAwOTowMDowMCB2b24gV2FyZ29uCmRpZmYgLS1naXQgYS9kb2Mvc2NtZC9zZWhlcmhhdXMgYi9kb2Mvc2NtZC9zZWhlcmhhdXMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNTYxMDYwNwotLS0gL2Rldi9udWxsCisrKyBiL2RvYy9zY21kL3NlaGVyaGF1cwpAQCAtMCwwICsxLDU4IEBACisKK0FsbGdlbWVpbmVzIHp1IFNlaGVyaGFldXNlcm4KKz09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKworIEFMTEdFTUVJTjoKKyAgICBEaWUgZWlnZW5lbiB2aWVyIFdhZW5kZSEgV2VyIHRyYWV1bXQgbmljaHQgZGF2b24/IEVpbmUgSW5zZWwgZGVyCisgICAgUHJpdmF0c3BoYWVyZSBpbiBkZXIgbGFlcm1lbmRlbiBPZWZmZW50bGljaGtlaXQgZGVzIE1vcmdlbkdyYXVlbiwgZ2FuegorICAgIG5hY2ggZWlnZW5lbSBHZXNjaG1hY2sgZWlucmljaHQtIHVuZCBhdXNiYXViYXIhCisKKyAgICBVbmQgd2VyIGhhdCBzaWNoIG5pY2h0IHNjaG9uIGltbWVyIGVpbm1hbCBnZXd1ZW5zY2h0LCBzaWNoIG1pdCBgZW5kZScKKyAgICBhdXNsb2dnZW4genUgZHVlcmZlbiwgb2huZSBBbmdzdCB1bSBzZWluZSBBdXNydWVzdHVuZyB6dSBoYWJlbj8KKworICAgIEVpbiB3ZWl0ZXJlciBWb3J0ZWlsOiBOYWNoIGRlbSBBdXNsb2dnZW4gKGFsc28gcGVyIGBlbmRlJyBvZGVyIG5hY2ggZWluZW0KKyAgICBSZWJvb3QpIGJldHJpdHQgbWFuIGJlaW0gbmFlY2hzdGVuIEVpbmxvZ2dlbiBkYXMgU3BpZWwgaW4gZGVuIGVpZ2VuZW4gdmllcgorICAgIFdhZW5kZW4gdW5kIG5pY2h0IG1laHIgYW0gU3RhcnRwdW5rdCBzZWluZXIgUmFzc2UuCisKKyBTUEVaSUVMTEVTOgorICAgIEltIEVpbmdhbmdzcmF1bSBkZXMgSGF1c2VzIGJlZmluZGV0IHNpY2ggZWluZSBUcnVoZSwgaW4gZGVyIG1hbiB3aWNodGlnZQorICAgIEdlZ2Vuc3RhZW5kZSBhdWZiZXdhaHJlbiBrYW5uLCBvaG5lIGJlZnVlcmNodGVuIHp1IG11ZXNzZW4sIGRhc3Mgc2llIHZvbgorICAgIHp1ZmFlbGxpZyB2b3JiZWlzY2hhdWVuZGVuIFNwaWVsZXJuIGVudHdlbmRldCB3ZXJkZW4uIE1hbiBzb2xsdGUKKyAgICBhbGxlcmRpbmdzIG5pY2h0IHZlcmdlc3NlbiwgZGllIFRydWhlIGF1Y2ggd2llZGVyIHp1IHNjaGxpZXNzZW4sIG5hY2hkZW0KKyAgICBtYW4gU2FjaGVuIGhpbmVpbmdlbGVndCBoYXQuLi4gO14pCisKKyAgICBTb3dvaGwgR2VnZW5zdGFlbmRlIGluIGRlciBnZXNjaGxvc3NlbmVuIFRydWhlIHdpZSBhdWNoIGltIGFiZ2VzY2hsb3NzZW5lbgorICAgIEhhdXMgc2luZCB6d2FyIHZvciBmcmVtZGVtIFp1Z3JpZmYgZ2VzY2h1ZXR6dCwgYWJlciBuYWNoIGVpbmVtIFJlYm9vdCB3aWUKKyAgICB1ZWJsaWNoIHZlcmxvcmVuICh1bmQgd2llIG1hbiBsZWljaHQgZWluc2VoZW4ga2FubiwgZ2lidCBlcyBkYWZ1ZXIgYXVjaAorICAgIEtFSU5FIEVudHNjaGFlZGlndW5nISkuCisKKyAgICBFcndpcmJ0IG1hbiBpbSBMYXVmZSBkZXIgWmVpdCB3ZWl0ZXJlIFJhZXVtZSwgdW0gc2VpbiBIYXVzIGF1c3p1YmF1ZW4sIHNvCisgICAgd2lyZCBkaWUgTnVtZXJpZXJ1bmcgZGVyIFJhZXVtZSB3aWNodGlnOgorICAgIERlciBFaW5nYW5nc3JhdW0gaGF0IGRpZSBOdW1tZXIgMCwgZGllIHdlaXRlcmVuIFJhZXVtZSBzaW5kIGZvcnRsYXVmZW5kCisgICAgdm9uIDEgYmlzIDkgZHVyY2hudW1lcmllcnQuCisgICAgRGllIE51bW1lciBkZXMgUmF1bWVzLCBpbiBkZW0gbWFuIHNpY2ggZ2VyYWRlIGJlZmluZGV0LCB3aXJkIGJlaSBkZW0KKyAgICBCZWZlaGwgYHVlYmVyc2ljaHQnIGFuZ2V6ZWlndC4KKworICAgIFdlbm4gbWFuIGRhcyBIYXVzIGFiZ2VzY2hsb3NzZW4gaGF0LCBrYW5uIGVzIG5pZW1hbmQgbWVociBiZXRyZXRlbi4gRXMgaXN0CisgICAgYWxsZXJkaW5ncyBOSUNIVCBtb2VnbGljaCwgamVtYW5kZW4gaW0gSGF1cyBlaW56dXNwZXJyZW4hCisKKyAgICBCZXNjaHJlaWJ1bmdlbiBldGMuIHNpbmQgbnVyIGltICplaWdlbmVuKiBIYXVzIG1vZWdsaWNoISBEaWUgZWluemlnZQorICAgIEFlbmRlcnVuZywgZGllIG1hbiBhbiBlaW5lbSBhbmRlcmVuIEhhdXMgdm9ybmVobWVuIGthbm4sIGlzdCBkYXMgU2NoYWZmZW4KKyAgICBlaW5lciBWZXJiaW5kdW5nIChzaWVoZSBkYXp1IGRhcyBgYXVzZ2FuZyctS29tbWFuZG8pLgorCisgICAgVHlwby0gdW5kIElkZWVtZWxkdW5nZW4sIGRpZSBpbiBEZWluZW0gSGF1cyB2b24gYW5kZXJlbiBTcGllbGVybiBhYmdlc2V0enQKKyAgICB3ZXJkZW4sIGxhbmRlbiBpbiBlaW5lciBSZXBvcnRkYXRlaSwgZGllIER1IG1pdCBkZW0gQmVmZWhsIGBtZWxkdW5nZW4nCisgICAgYW5zZWhlbiB1bmQgbWl0IGRlbSBgYWVuZGVyZSctQmVmZWhsIGJlYXJiZWl0ZW4ga2FubnN0LgorCisgICAgSmVkZXIgUmF1bSBkZXMgU2VoZXJoYXVzZXMgZGFyZiBtYXhpbWFsIDEwMCBlaW56ZWxuZSBPYmpla3RlIGJlaW5oYWx0ZW4uCisgICAgRGFiZWkgZ2lidCBlcyB6d2VpIFVudGVyc2NoZWlkdW5nZW46CisgICAgICAgMzQ1IE11ZW56ZW4uICAgICAgICAgLS0+IERhcyBpc3QgZWluIE9iamVrdC4KKyAgICAgICBFaW4gVGl0YW5yaW5nLiAoNCkgICAtLT4gRGFzIHNpbmQgNCBPYmpla3RlLgorCisgU0lFSEUgQVVDSDoKKyAgICBhZW5kZXJlLCBhdXNnYW5nLCBiZXNjaHJlaWJlLCBlcmxhdWJlLCBoYXVzYmF1LCBpbnN0YW50aGF1cywga29waWVyZSwKKyAgICBsaWNodCwgbG9lc2NoZSwgbWVsZHVuZ2VuLCBub3Rpeiwgc2NoaWViZSwgc3BlcnJlLCBzcGlvbiwgdWViZXJzaWNodCwKKyAgICB2ZXJiaWV0ZSwgd2VyZmUKKworIExFVFpURSBBZU5ERVJVTkc6CisgICAgVGh1LCAyMS4wNy4xOTk3LCAyMDowMDowMCB2b24gWm9vay4KZGlmZiAtLWdpdCBhL2RvYy9zY21kL3NldGhhbmRzIGIvZG9jL3NjbWQvc2V0aGFuZHMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYmNjNjJmYgotLS0gL2Rldi9udWxsCisrKyBiL2RvYy9zY21kL3NldGhhbmRzCkBAIC0wLDAgKzEsMjUgQEAKKworc2V0aGFuZHMKKy0tLS0tLS0tCisKKyBTRUhFUktPTU1BTkRPOgorICAgIHNldGhhbmRzIDx0ZXh0PgorCisgQVJHVU1FTlRFOgorCisgICAgIDx0ZXh0PgorICAgICAgICBEZXIgVGV4dCwgZGVyIGJlaW0gS2FlbXBmZW4gbWl0ICJkZW4gYmxvc3NlbiBIYWVuZGVuIiBlcnNjaGVpbmVuIHNvbGwuCisKKyBCRVNDSFJFSUJVTkc6CisgICAgTm9ybWFsZXJ3ZWlzZSBlcnNjaGVpbnQgYmVpbSBLYWVtcGZlbiBvaG5lIFdhZmZlbiBlaW5lIE1lbGR1bmc6CisKKyAgICA+ICBEdSBncmVpZnN0IDxHZWduZXI+IG1pdCBibG9zc2VuIEhhZW5kZW4gYW4uCisgICAgICAgICAgICAgICAgICAgICAgICAgICBePT09PT09PT09PT09PT09PT1eCisKKyAgICBEaWVzZW4gVGV4dCBrYW5uIG1hbiBkdXJjaCA8dGV4dD4gZXJzZXR6ZW4uCisKKyBTSUVIRSBBVUNIOgorICAgIHJldmlldworCisgTEVUWlRFIEFlTkRFUlVORzoKKyAgICBUaHUsIDI0LjA3LjE5OTcsIDA5OjAwOjAwIHZvbiBXYXJnb24KZGlmZiAtLWdpdCBhL2RvYy9zY21kL3NldG1pbiBiL2RvYy9zY21kL3NldG1pbgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi42OWY4N2EwCi0tLSAvZGV2L251bGwKKysrIGIvZG9jL3NjbWQvc2V0bWluCkBAIC0wLDAgKzEsMjQgQEAKKworc2V0bWluCistLS0tLS0KKworIFNFSEVSS09NTUFORE86CisgICAgc2V0bWluIFs8dGV4dD5dCisKKyBBUkdVTUVOVEU6CisKKyAgICAgPHRleHQ+IChvcHRpb25hbCkKKyAgICAgICAgRGllIG5ldWUgRWluZ2FuZ3NtZWxkdW5nLgorCisgQkVTQ0hSRUlCVU5HOgorICAgIE1pdCBkaWVzZW0gS29tbWFuZG8ga2FubiBkaWUgTWVsZHVuZyBkZWZpbmllcnQgd2VyZGVuLCBkaWUgYW5kZXJlIFNwaWVsZXIKKyAgICBzZWhlbiwgd2VubiBtYW4gaW4gZGVuIFJhdW0gaGluZWluZ2VodC4gRGFiZWkgd2lyZCBkZW0gVGV4dCA8dGV4dD4gbm9jaAorICAgIERlaW4gTmFtZSB2b3Jhbmdlc3RlbGx0LgorCisgICAgT2huZSA8dGV4dD4gd2lyZCB3aWVkZXIgZGllIERlZmF1bHRtZWxkdW5nIGFrdGl2LgorCisgU0lFSEUgQVVDSDoKKyAgICBzZXRtb3V0LCBzZXRtbWluLCBzZXRtbW91dCwgcmV2aWV3CisKKyBMRVRaVEUgQWVOREVSVU5HOgorICAgIFRodSwgMjQuMDcuMTk5NywgMDk6MDA6MDAgdm9uIFdhcmdvbgpkaWZmIC0tZ2l0IGEvZG9jL3NjbWQvc2V0bW1pbiBiL2RvYy9zY21kL3NldG1taW4KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNDA4MTQxYwotLS0gL2Rldi9udWxsCisrKyBiL2RvYy9zY21kL3NldG1taW4KQEAgLTAsMCArMSwyNCBAQAorCitzZXRtbWluCistLS0tLS0tCisKKyBTRUhFUktPTU1BTkRPOgorICAgIHNldG1taW4gWzx0ZXh0Pl0KKworIEFSR1VNRU5URToKKworICAgICA8dGV4dD4gKG9wdGlvbmFsKQorICAgICAgICBEaWUgbmV1ZSBFaW5nYW5nc21lbGR1bmcuCisKKyBCRVNDSFJFSUJVTkc6CisgICAgTWl0IGRpZXNlbSBLb21tYW5kbyBrYW5uIGRpZSBNZWxkdW5nIGRlZmluaWVydCB3ZXJkZW4sIGRpZSBhbmRlcmUgU3BpZWxlcgorICAgIHNlaGVuLCB3ZW5uIG1hbiBpbiBkZW4gUmF1bSB0ZWxlcG9ydGllcnQgd2lyZC4gRGFiZWkgd2lyZCBkZW0gVGV4dCA8dGV4dD4KKyAgICBub2NoIERlaW4gTmFtZSB2b3Jhbmdlc3RlbGx0LgorCisgICAgT2huZSA8dGV4dD4gd2lyZCBhdWYgZGllIERlZmF1bHRtZWxkdW5nIHp1cnVlY2tnZXNjaGFsdGV0LgorCisgU0lFSEUgQVVDSDoKKyAgICBzZXRtaW4sIHNldG1vdXQsIHNldG1tb3V0LCByZXZpZXcKKworIExFVFpURSBBZU5ERVJVTkc6CisgICAgVGh1LCAyNC4wNy4xOTk3LCAwOTowMDowMCB2b24gV2FyZ29uCmRpZmYgLS1naXQgYS9kb2Mvc2NtZC9zZXRtbW91dCBiL2RvYy9zY21kL3NldG1tb3V0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjlmYTE1NjcKLS0tIC9kZXYvbnVsbAorKysgYi9kb2Mvc2NtZC9zZXRtbW91dApAQCAtMCwwICsxLDI0IEBACisKK3NldG1tb3V0CistLS0tLS0tLQorCisgU0VIRVJLT01NQU5ETzoKKyAgICBzZXRtbW91dCBbPHRleHQ+XQorCisgQVJHVU1FTlRFOgorCisgICAgIDx0ZXh0PiAob3B0aW9uYWwpCisgICAgICAgIERpZSBuZXVlIEF1c2dhbmdzbWVsZHVuZy4KKworIEJFU0NIUkVJQlVORzoKKyAgICBNaXQgZGllc2VtIEtvbW1hbmRvIGthbm4gZGllIE1lbGR1bmcgZGVmaW5pZXJ0IHdlcmRlbiwgZGllIGFuZGVyZSBTcGllbGVyCisgICAgc2VoZW4sIHdlbm4gbWFuIGF1cyBkZW0gUmF1bSB0ZWxlcG9ydGllcnQgd2lyZC4gRGFiZWkgd2lyZCBkZW0gVGV4dCA8dGV4dD4KKyAgICBub2NoIERlaW4gTmFtZSB2b3Jhbmdlc3RlbGx0LgorCisgICAgTGFlc3N0IG1hbiA8dGV4dD4gd2VnLCB3aXJkIHdpZWRlciBkaWUgRGVmYXVsdG1lbGR1bmcgdmVyd2VuZGV0LgorCisgU0lFSEUgQVVDSDoKKyAgICBzZXRtb3V0LCBzZXRtbWluLCBzZXRtaW4sIHJldmlldworCisgTEVUWlRFIEFlTkRFUlVORzoKKyAgICBUaHUsIDI0LjA3LjE5OTcsIDA5OjAwOjAwIHZvbiBXYXJnb24KZGlmZiAtLWdpdCBhL2RvYy9zY21kL3NldG1vdXQgYi9kb2Mvc2NtZC9zZXRtb3V0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmJlNzYxNGEKLS0tIC9kZXYvbnVsbAorKysgYi9kb2Mvc2NtZC9zZXRtb3V0CkBAIC0wLDAgKzEsMjcgQEAKKworc2V0bW91dAorLS0tLS0tLQorCisgU0VIRVJLT01NQU5ETzoKKyAgICBzZXRtb3V0IFs8dGV4dD5dCisKKyBBUkdVTUVOVEU6CisKKyAgICAgPHRleHQ+IChvcHRpb25hbCkKKyAgICAgICAgRGllIG5ldWUgQXVzZ2FuZ3NtZWxkdW5nLgorCisgQkVTQ0hSRUlCVU5HOgorICAgIE1pdCBkaWVzZW0gS29tbWFuZG8ga2FubiBkaWUgTWVsZHVuZyBkZWZpbmllcnQgd2VyZGVuLCBkaWUgYW5kZXJlIFNwaWVsZXIKKyAgICBzZWhlbiwgd2VubiBtYW4gYXVzIGRlbSBSYXVtIGhlcmF1c2dlaHQuIERhYmVpIHdpcmQgZGVtIFRleHQgPHRleHQ+IG5vY2gKKyAgICBEZWluIE5hbWUgdm9yYW5nZXN0ZWxsdC4KKworICAgIEVudGhhZWx0IDx0ZXh0PiBlaW4gIywgc28gd2lyZCBkaWVzZXMgWmVpY2hlbiBpbiBkZXIgTWVsZHVuZyBkdXJjaCBkaWUKKyAgICBqZXdlaWxpZ2UgUmljaHR1bmcgZXJzZXR6dC4KKworICAgIE9obmUgPHRleHQ+IHdpcmQgd2llZGVyIGRpZSBEZWZhdWx0bWVsZHVuZyB2ZXJ3ZW5kZXQuCisKKyBTSUVIRSBBVUNIOgorICAgIHNldG1tb3V0LCBzZXRtaW4sIHNldG1taW4sIHJldmlldworCisgTEVUWlRFIEFlTkRFUlVORzoKKyAgICBUaHUsIDI0LjA3LjE5OTcsIDA5OjAwOjAwIHZvbiBXYXJnb24KZGlmZiAtLWdpdCBhL2RvYy9zY21kL3NwZXJyZSBiL2RvYy9zY21kL3NwZXJyZQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44MDQ1MTJjCi0tLSAvZGV2L251bGwKKysrIGIvZG9jL3NjbWQvc3BlcnJlCkBAIC0wLDAgKzEsMjIgQEAKKworc3BlcnJlCistLS0tLS0KKworIFNFSEVSSEFVU0tPTU1BTkRPOgorICAgIHNwZXJyZSA8cmljaHR1bmc+CisKKyBBUkdVTUVOVEU6CisKKyAgICAgPHJpY2h0dW5nPgorICAgICAgICBFaW5lIGRlciBhY2h0IEhpbW1lbHNyaWNodHVuZ2VuLCAib2JlbiIgb2RlciAidW50ZW4iLgorCisgQkVTQ0hSRUlCVU5HOgorICAgIERlciBBdXNnYW5nLCBkZXIgaW4gZGllIGFuZ2VnZWJlbmUgUmljaHR1bmcgZnVlaHJ0LCB3aXJkIGVudGZlcm50LiBEZXIKKyAgICBlbnRzcHJlY2hlbmRlIEF1c2dhbmcgdm9tIFppZWxyYXVtIHp1cnVlY2sgdmVyc2Nod2luZGV0IGRhYmVpIGF1dG9tYXRpc2NoCisgICAgbWl0LgorCisgU0lFSEUgQVVDSDoKKyAgICBhdXNnYW5nLCB1ZWJlcnNpY2h0CisKKyBMRVRaVEUgQWVOREVSVU5HOgorICAgIFRodSwgMjQuMDcuMTk5NywgMDk6MDA6MDAgdm9uIFdhcmdvbgpkaWZmIC0tZ2l0IGEvZG9jL3NjbWQvc3Bpb24gYi9kb2Mvc2NtZC9zcGlvbgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4xMzkwZTc3Ci0tLSAvZGV2L251bGwKKysrIGIvZG9jL3NjbWQvc3Bpb24KQEAgLTAsMCArMSwyMiBAQAorCitzcGlvbgorLS0tLS0KKworIFNFSEVSSEFVU0tPTU1BTkRPOgorICAgIHNwaW9uCisKKyBBUkdVTUVOVEU6CisgICAga2VpbmUKKworIEJFU0NIUkVJQlVORzoKKyAgICBEZXIgVHVlcnNwaW9uOiBEaWVzZXMgS29tbWFuZG8gemVpZ3QsIHdlciBvZGVyIHdhcyBzaWNoIHZvciBEZWluZXIKKyAgICBIYXVzdHVlciB0dW1tZWx0LiBSZWNodCBudWV0emxpY2gsIHdlbm4gamVtYW5kIGFua2xvcGZ0IHVuZCBtYW4gc2ljaAorICAgIHZlcmdld2lzc2VybiB3aWxsLCBvYiBtYW4gaWhuIGF1Y2ggZWlubGFzc2VuIHdpbGwuCisKKyAgICBEaWVzZXMgS29tbWFuZG8gaXN0IG51ciBpbSBFaW5nYW5nc3JhdW0gdmVyZnVlZ2Jhci4KKworIFNJRUhFIEFVQ0g6CisgICAgc2VoZXJoYXVzCisKKyBMRVRaVEUgQWVOREVSVU5HOgorICAgIFRodSwgMjQuMDcuMTk5NywgMDk6MDA6MDAgdm9uIFdhcmdvbgpkaWZmIC0tZ2l0IGEvZG9jL3NjbWQvdGl0ZWwgYi9kb2Mvc2NtZC90aXRlbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5mZjAwNTExCi0tLSAvZGV2L251bGwKKysrIGIvZG9jL3NjbWQvdGl0ZWwKQEAgLTAsMCArMSwyOSBAQAorCit0aXRlbAorLS0tLS0KKworIFNFSEVSS09NTUFORE86CisgICAgdGl0ZWwgPHRleHQ+CisgICAgdGl0ZWwgMAorCisgQVJHVU1FTlRFOgorCisgICAgIDx0ZXh0PgorICAgICAgICBEZXIgVGl0ZWx0ZXh0LgorCisgQkVTQ0hSRUlCVU5HOgorICAgIERlciBUZXh0IHdpcmQgYWxzIG5ldWVyIFRpdGVsIGdlc2V0enQuIERhYmVpIHNvbGx0ZSBkZXIgVGl0ZWwgbmljaHQgbWl0CisgICAgZWluZW0gU3BpZWxlcnRpdGVsIGlkZW50aXNjaCBvZGVyIGVpbmVtIHNvbGNoZW4gc2VociBhZWhubGljaCBzZWluLiBEZXIKKyAgICB1ZWJlcmdlYmVuZSBUZXh0IGRhcmYgZWluIEJhY2tzcGFjZSAoXGIpIGFtIEFuZmFuZyBlbmhhbHRlbiwgd2VubgorICAgIGRhcmF1ZiBlaW4gS29tbWEgKCwpIG9kZXIgZWluIEhvY2hrb21tYSAoJykgZm9sZ3QuCisKKyAgICBXaXJkIGtlaW4gQXJndW1lbnQgdWViZXJnZWJlbiwgc28gd2lyZCBkZXIgYWt0dWVsbGUgVGl0ZWwgZ2Vsb2VzY2h0LgorCisgICAgV2lyZCAwIGFscyBBcmd1bWVudCB1ZWJlcmdlYmVuLCBzbyB3aXJkIGRlciBUaXRlbCBkdXJjaCBkZW4gYWt0dWVsbGVuCisgICAgR2lsZGVudGl0ZWwgZXJzZXR6dC4KKworIFNJRUhFIEFVQ0g6CisgICAgc3R1ZmVuLCBwcmVzYXkKKworIExFVFpURSBBZU5ERVJVTkc6CisgICAgU2F0LCAzMC4wOS4yMDAwLCAwMTozNDowMCB2b24gQmllcmNoZW4KZGlmZiAtLWdpdCBhL2RvYy9zY21kL3VlYmVyc2ljaHQgYi9kb2Mvc2NtZC91ZWJlcnNpY2h0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjZlMzAwNjMKLS0tIC9kZXYvbnVsbAorKysgYi9kb2Mvc2NtZC91ZWJlcnNpY2h0CkBAIC0wLDAgKzEsMjUgQEAKKwordWViZXJzaWNodAorLS0tLS0tLS0tLQorCisgU0VIRVJIQVVTS09NTUFORE86CisgICAgdWViZXJzaWNodAorCisgQVJHVU1FTlRFOgorICAgIHVlYmVyc2ljaHQgW2VybGF1YnRdCisKKyBCRVNDSFJFSUJVTkc6CisgICAgRGllc2VzIEtvbW1hbmRvIHplaWd0LCBpbiB3ZWxjaGVtIFJhdW0gc2VpbmVzIEhhdXNlcyBtYW4gc2ljaCBnZXJhZGUKKyAgICBiZWZpbmRldCwgd2VsY2hlIERldGFpbHMgdW5kIGxlc2JhcmVuIERldGFpbHMgbWFuIGhpZXIgYmVzY2hyaWViZW4gaGF0LAorICAgIHVuZCB3ZWxjaGUgQXVzZ2FlbmdlIHdvaGluIGZ1ZWhyZW4uCisKKyAgICBTdGVodCBtYW4gaW0gRWluZ2FuZ3NyYXVtIHNlaW5lcyBIYXVzZXMsIHdpcmQgenVzYWV0emxpY2ggZGllIExpc3RlCisgICAgZGVyamVuaWdlbiBMZXV0ZSBhdXNnZWdlYmVuLCBkaWUgZGFzIEhhdXMgdW5kIGRpZSBUcnVoZSBvZWZmbmVuIGJ6dy4KKyAgICAoYWIpc2NobGllc3NlbiBkdWVyZmVuLiBHaWJ0IG1hbiBpbSBFaW5nYW5nc3JhdW0gZGVuIFBhcmFtZXRlciAiZXJsYXVidCIKKyAgICBhbiwgd2lyZCBudXIgZGllc2UgTGlzdGUgYXVzZ2VnZWJlbi4KKworIFNJRUhFIEFVQ0g6CisgICAgYmVzY2hyZWliZSwgbG9lc2NoZSwga29waWVyZSwgYXVzZ2FuZywgc3BlcnJlLCBlcmxhdWJlLCB2ZXJiaWV0ZQorCisgTEVUWlRFIEFlTkRFUlVORzoKKyAgICBUaHUsIDI0LjA3LjE5OTcsIDA5OjAwOjAwIHZvbiBXYXJnb24KZGlmZiAtLWdpdCBhL2RvYy9zY21kL3ZlcmJpZXRlIGIvZG9jL3NjbWQvdmVyYmlldGUKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYTdlODhjNAotLS0gL2Rldi9udWxsCisrKyBiL2RvYy9zY21kL3ZlcmJpZXRlCkBAIC0wLDAgKzEsMjMgQEAKKwordmVyYmlldGUKKy0tLS0tLS0tCisKKyBTRUhFUkhBVVNLT01NQU5ETzoKKyAgICB2ZXJiaWV0ZSA8bmFtZT4KKworIEFSR1VNRU5URToKKworICAgICA8bmFtZT4KKyAgICAgICAgRWluIG9kZXIgbWVocmVyZSBOYW1lKG4pIChkdXJjaCBLb21tYXRhIGdldHJlbm50KS4KKworIEJFU0NIUkVJQlVORzoKKyAgICBEZW0gU3BpZWxlciA8bmFtZT4gd2lyZCBkaWUgRXJsYXVibmlzLCBEZWluIEhhdXMgYXVmLSB1bmQgYWJzY2hsaWVzc2VuCisgICAgc293aWUgZGllIFRydWhlIG9lZmZuZW4genUgZHVlcmZlbiwgd2llZGVyIGVudHpvZ2VuLgorCisgICAgRGllc2VyIEJlZmVobCBpc3QgbnVyIGltIEVpbmdhbmdzcmF1bSBkZXMgSGF1c2VzIHZlcmZ1ZWdiYXIhCisKKyBTSUVIRSBBVUNIOgorICAgIGVybGF1YmUsIHVlYmVyc2ljaHQKKworIExFVFpURSBBZU5ERVJVTkc6CisgICAgVGh1LCAyNC4wNy4xOTk3LCAwOTowMDowMCB2b24gV2FyZ29uCmRpZmYgLS1naXQgYS9kb2Mvc2NtZC93ZXJmZSBiL2RvYy9zY21kL3dlcmZlCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjE1NDA0MWQKLS0tIC9kZXYvbnVsbAorKysgYi9kb2Mvc2NtZC93ZXJmZQpAQCAtMCwwICsxLDMzIEBACisKK3dlcmZlCistLS0tLQorCisgU0VIRVJIQVVTS09NTUFORE86CisgICAgd2VyZmUgPHdhcz4gcmF1cworICAgIHdlcmZlIGFsbGUgcmF1cworICAgIHdlcmZlIGFsbGVzIHJhdXMKKworIEFSR1VNRU5URToKKworICAgICA8d2FzPgorICAgICAgICBEYXMgYXVzIGRlbSBIYXVzIHp1IHdlcmZlbmRlIE9iamVrdC4KKworIEJFU0NIUkVJQlVORzoKKyAgICBXZW5uIERpciBpbiBEZWluZW0gSGF1cyBqZW1hbmQgZnVlcmNodGVybGljaCBhdWYgZGllIE5lcnZlbiBnZWh0LCBrYW5uc3QKKyAgICBEdSBpaG4gbWl0IGRpZXNlbSBLb21tYW5kbyB2b3IgZGllIEhhdXN0dWVyIGtvbXBsaW1lbnRpZXJlbi4KKworICAgIEZhbGxzIERpciBhbGxlIEFud2VzZW5kZW4gYXVmIGRpZSBOZXJ2ZW4gZ2VoZW4sIGthbm5zdCBEdSBzaWUgYXVjaCBhbGxlCisgICAgYXVmIGVpbmVuIFNjaGxhZyBlbnRzb3JnZW4uCisKKyAgICBEaWUgZHJpdHRlIEFsdGVybmF0aXZlIGRhZ2VnZW4gZGllbnQgZGF6dSwgc2FlbXRsaWNoZSBsZWJsb3NlbgorICAgIEdlZ2Vuc3RhZW5kZSBhdXMgZGVtIEhhdXMgenUgd2VyZmVuIChvYndvaGwgZGFzIEFubGVnZW4gd2lsZGVyIE11ZWxsa2lwcGVuCisgICAgdm9yIGRlbSBIYXVzIG5pY2h0IGdlcmFkZSB6dW0gZ3V0ZW4gVG9uIGdlaG9lcnQgOykKKworICAgIERhcyBLb21tYW5kbyB3aXJrdCB1ZWJyaWdlbnMgbnVyIGluIGRlbSBSYXVtLCBpbiBkZW0gZXMgYW5nZXdlbmRldCB3aXJkLAorICAgIHVuZCBuaWNodCBldHdhIGltIGdhbnplbiBIYXVzLgorCisgU0lFSEUgQVVDSDoKKyAgICBzZWhlcmhhdXMKKworIExFVFpURSBBZU5ERVJVTkc6CisgICAgVGh1LCAyNC4wNy4xOTk3LCAwOTowMDowMCB2b24gV2FyZ29uCmRpZmYgLS1naXQgYS9kb2Mvc2VmdW4vQ291bnRVcCBiL2RvYy9zZWZ1bi9Db3VudFVwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjU1MTU3ODAKLS0tIC9kZXYvbnVsbAorKysgYi9kb2Mvc2VmdW4vQ291bnRVcApAQCAtMCwwICsxLDI1IEBACitGVU5LVElPTjoKKwlwdWJsaWMgdmFyYXJncyBzdHJpbmcgQ291bnRVcCggc3RyaW5nICpzLCBzdHJpbmcgc2VwLCBzdHJpbmcgbGFzdHNlcCApOworCitBUkdVTUVOVEU6CisJKnMKKwkgIEFycmF5IHZvbiBTdHJpbmdzIG1pdCBXb2VydGVybi4KKyAgc2VwCisgICAgU3RyaW5nLCBkZXIgendpc2NoZW4gZGVuIFdvZXJ0ZW4gaW4gZGVyIEF1ZnphZWhsdW5nIGVpbmdlZnVlZ3Qgd2lyZC4KKyAgICBTdGFuZGFyZDogIiwgIgorICBsYXN0c2VwCisgICAgU3RyaW5nLCBkZXIgendpc2NoZW4gZGVtIHZvcmxldHp0ZW4gdW5kIGxldHp0ZW4gRWxlbWVudCBlaW5nZWZ1ZWd0IHdpcmQuCisgICAgU3RhbmRhcmQ6ICIgdW5kICIKKworQkVTQ0hSRUlCVU5HOgorCURpZSBXb2VydGVyIFdvcnRfMSBiaXMgV29ydF9uIGF1cyBkZW0gU3RyaW5nYXJheSB3ZXJkZW4gYWxzCisJQXVmemFlaGx1bmcgaW4gZGVyIEZvcm0KKwkgIFdvcnRfMTxzZXA+V29ydF8yLCAuLi4gV29ydF9uLTE8bGFzdHNlcD5Xb3J0X24KKwl6dXNhbW1lbmdlc2V0enQuIE1pdCBTdGFuZGFyZHdlcnRlbiBhbHNvOgorCSAgV29ydF8xLCBXb3J0XzIsIC4uLiBXb3J0X24tMSB1bmQgV29ydF9uCisKK1JVZUNLR0FCRVdFUlQ6CisJU3RyaW5nIGFscyBBdWZ6YWVobHVuZyBkZXIgZWluemVsbmVuIFdvZXJ0ZXIuCisKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKzE1LjAzLjIwMDgsIFplc3N0cmEKZGlmZiAtLWdpdCBhL2RvYy9zZWZ1bi9fbm90aWZ5X2ZhaWwgYi9kb2Mvc2VmdW4vX25vdGlmeV9mYWlsCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjg0YWE0ZGUKLS0tIC9kZXYvbnVsbAorKysgYi9kb2Mvc2VmdW4vX25vdGlmeV9mYWlsCkBAIC0wLDAgKzEsMTggQEAKK3NpbXVsX2VmdW46Ol9ub3RpZnlfZmFpbChFKQorRlVOS1RJT046CisgICAgIHZvaWQgX25vdGlmeV9mYWlsKHN0cmluZyBzdHIpCisKK0FSR1VNRU5URToKKyAgICAgc3RyCisJdW1nZWJyb2NoZW5lciBGZWhsZXJtZWxkdW5nc3N0cmluZworCitCRVNDSFJFSUJVTkc6CisgICAgIElkZW50aXNjaGVzIFZlcmhhbHRlbiB6dSBub3RpZnlfZmFpbChFKSwgYmlzIGRhcmF1ZiwgZGFzcyBiZWkgYmVyZWl0cworICAgICBnZXNldHp0ZXIgRmVobGVybWVsZHVuZyBfa2VpbmVfIG5ldWUgRmVobGVybWVsZHVuZyBnZXNldHp0IHdpcmQuCisKK1NJRUhFIEFVQ0g6CisgICAgIG5vdGlmeV9mYWlsKEUpLCBQX0FDVFVBTF9OT1RJRllfRkFJTAorICAgICBhZGRfYWN0aW9uKEUpLCBBZGRDbWQoTCksIEFkZEFjdGlvbihMKSwKKyAgICAgcXVlcnlfdmVyYihFKQorCisyNCBNYWVyeiAyMDA0IEdsb2luc29uCmRpZmYgLS1naXQgYS9kb2Mvc2VmdW4vYnJlYWtfc3RyaW5nIGIvZG9jL3NlZnVuL2JyZWFrX3N0cmluZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41MmQ0ZDdiCi0tLSAvZGV2L251bGwKKysrIGIvZG9jL3NlZnVuL2JyZWFrX3N0cmluZwpAQCAtMCwwICsxLDkwIEBACitGVU5LVElPTjoKKyAgICBzdHJpbmcgYnJlYWtfc3RyaW5nKHN0cmluZyBzdHIpCisgICAgc3RyaW5nIGJyZWFrX3N0cmluZyhzdHJpbmcgc3RyLCBpbnQgd2lkdGgpCisgICAgc3RyaW5nIGJyZWFrX3N0cmluZyhzdHJpbmcgc3RyLCBpbnQgd2lkdGgsIHN0cmluZyBpbmRlbnQpCisgICAgc3RyaW5nIGJyZWFrX3N0cmluZyhzdHJpbmcgc3RyLCBpbnQgd2lkdGgsIGludCBzcGFjZSkKKyAgICBzdHJpbmcgYnJlYWtfc3RyaW5nKHN0cmluZyBzdHIsIGludCB3aWR0aCwgc3RyaW5nIGluZGVudCwgaW50IGZsYWdzKQorICAgIHN0cmluZyBicmVha19zdHJpbmcoc3RyaW5nIHN0ciwgaW50IHdpZHRoLCBpbnQgc3BhY2UsIGludCBmbGFncykKKworQVJHVU1FTlRFOgorICAgIHN0ciAgICAtIHVtenVicmVjaGVuZGVyIFN0cmluZworICAgIHdpZHRoICAtIG9wdGlvbmFsOiBtYXhpbWFsZSBaZWlsZW5sYWVuZ2UgKGRlZmF1bHQgNzgpCisgICAgaW5kZW50IC0gb3B0aW9uYWw6IFN0cmluZywgZGVyIHZvciBqZWRlciB1bWdlYnJvY2hlbmVuIFplaWxlIGVyc2NoZWludAorICAgIHNwYWNlICAtIG9wdGlvbmFsOiBBbnphaGwgZGVyIExlZXJ6ZWljaGVuIHZvciBqZWRlciB1bWdlYnJvY2hlbmVuIFplaWxlCisgICAgZmxhZ3MgIC0gb3B0aW9uYWw6IGhpZXJtaXQgbGFlc3N0IHNpY2ggZGFzIFZlcmhhbHRlbiB2b24gYnJlYWtfc3RyaW5nKCkKKyAgICAgICAgICAgICBhZW5kZXJuOyBtb2VnbGljaGUgRmxhZ3Mgc2llaGUgUHVua3QgJ0Jlc2NocmVpYnVuZycKKworQkVTQ0hSRUlCVU5HOgorICAgIEluIGRlciBlcnN0ZW4gRm9ybSB3aXJkIGRlciBTdHJpbmcgJ3N0cicgZHVyY2ggRWluZnVlZ2VuIHZvbiAiXG4iIHNvIHVtLQorICAgIGdlYnJvY2hlbiwgZGFzcyBiZWkgZWluZXIgYW5zY2hsaWVzc2VuZGVuIEF1c2dhYmUga2VpbmUgWmVpbGUgbGFlbmdlcgorICAgIGFscyAnd2lkdGgnIFplaWNoZW4gaXN0LiBFdmVudHVlbGwgc2Nob24gaW4gJ3N0cicgdm9yaGFuZGVuZSAiXG4iIHdlcmRlbgorICAgIGRhYmVpIHZvcmhlciBlbnRmZXJudC4KKworICAgIEdpYnQgbWFuIHp1c2FldHpsaWNoIG5vY2ggZWluZW4gU3RyaW5nICdpbmRlbnQnIGFuLCBzbyB3aXJkIGRpZXNlciB2b3IKKyAgICBqZWRlIGRlciB1bWdlYnJvY2hlbmVuIFplaWxlbiBnZXNldHp0LgorCisgICAgQW5hbG9nIHdpcmQgYmVpIGRlciBBbmdhYmUgZGVyIFphaGwgJ3NwYWNlJyBlaW4gU3RyaW5nIG1pdCAnc3BhY2UnIExlZXItCisgICAgemVpY2hlbiB2b3IgamVkZSB1bWdlYnJvY2hlbmUgWmVpbGUgZ2VzZXR6dC4KKworICAgIFp1c2FldHpsaWNoIGdpYnQgZXMgZm9sZ2VuZGUgb3B0aW9uYWxlIEZsYWdzLCBkaWUgbWFuIGJlbGllYmlnIGtvbWJpbmllcmVuCisgICAga2FubjoKKworICAgICAgICBCU19MRUFWRV9NWV9MRlMgIC0gIHNjaG9uIGltIFRleHQgdm9yaGFuZGVuZSAiXG4iIHdlcmRlbiBiZWliZWhhbHRlbgorICAgICAgICBCU19TSU5HTEVfU1BBQ0UgIC0gIGRvcHBlbHRlIExlZXJ6ZWljaGVuIHNvd2llIExlZXJ6ZWljaGVuIG5hY2ggWmVpbGVuLQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVtYnJ1ZWNoZW4gd2VyZGVuIGVudGZlcm50CisgICAgICAgIEJTX0JMT0NLICAgICAgICAgLSAgZGVyIFRleHQgd2lyZCBpbSBCbG9ja3NhdHogZm9ybWF0aWVydAorICAgICAgICBCU19OT19QQVJJTkRFTlQgIC0gIGJlaSBCbG9ja3NhdHogbWl0IHZvcmdlZ2ViZW5lbiBaZWlsZW51bWJydWVjaGVuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgKEJTX0JMT0NLfEJTX0xFQVZFX01ZX0xGUykgd2VyZGVuIFplaWxlbiBuYWNoICJcbiIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBub3JtYWxlcndlaXNlIG1pdCBlaW5lbSBMZWVyemVpY2hlbiBiZWdvbm5lbi4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBVbSBkYXMgRWluZnVlZ2VuIGRlcyBmdWVocmVuZGVuIExlZXJ6ZWljaGVucyB6dQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVudGVyZHJ1ZWNrZW4sIG11c3MgQlNfTk9fUEFSSU5ERU5UIGFuZ2VnZWJlbiB3ZXJkZW4KKyAgICAgICAgQlNfSU5ERU5UX09OQ0UgICAtICBkaWUgZXJzdGUgWmVpbGUgZGVzIFRleHRlcyB3aXJkIG1pdCB2b3Jhbmdlc3RlbGx0ZW0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAnaW5kZW50JyBhdXNnZWdlYmVuOyBhbGxlIGZvbGdlbmRlbiBaZWlsZW4gYmVrb21tZW4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBlaW5lbiBMZWVyc3RyaW5nIHZvcmFuZ2VzdGVsbHQKKyAgICAgICAgQlNfUFJFUEVORF9JTkRFTlQgLSBkZXIgSWRlbnQgd2lyZCBkZW0gVGV4dCB2b3Jhbmdlc3RlbGx0IHNvZmVybiBkZXIgCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgSW5kZW50ICsgVGV4dCBsYWVuZ2VyIGFscyBlaW5lIFplaWxlIGlzdC4gRGVyIFRleHQKKwkJCSAgICB3aXJkIHVtIGVpbiBMZWVyemVpY2hlbiBlaW5nZXJ1ZWNrdCwgd2FzIG1pdHRlbHMKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBCU19OT19QQVJJTkRFTlQgdmVyaGluZGVydCB3ZXJkZW4ga2Fubi4KKworUlVFQ0tHQUJFV0VSVDoKKyAgICBEZXIgdW1nZWJyb2NoZW5lIFRleHQuCisKKyAgICBMYXVmemVpdC1GZWhsZXIsIHdlbm4gZGVyIEluZGVudCBsYWVuZ2VyIGlzdCBhbHMgZGllIHZvcmdlZ2ViZW5lIEJyZWl0ZS4KKworQkVJU1BJRUxFOgorICAgIHdyaXRlKGJyZWFrX3N0cmluZygiRGllcyBpc3QgZWluIGxhZW5nZXJlciBUZXh0LiBOdXIgc28gYWxzIEJlaXNwaWVsLiIsMjcpKTsKKworICAgICAgICA9PiBEaWVzIGlzdCBlaW4gbGFlbmdlcmVyCisgICAgICAgICAgIFRleHQuIE51ciBzbyBhbHMgQmVpc3BpZWwuCisKKyAgICB3cml0ZShicmVha19zdHJpbmcoIk1pdCBpbmRlbnQgc2llaHQgZGFzIHNvIGF1cyIsIDMwLCAiV2FyZ29uIHNhZ3Q6ICIpKTsKKworICAgICAgICA9PiBXYXJnb24gc2FndDogTWl0IGluZGVudCBzaWVodAorICAgICAgICAgICBXYXJnb24gc2FndDogZGFzIHNvIGF1cworCisgICAgd3JpdGUoYnJlYWtfc3RyaW5nKCJNaXQgaW5kZW50IHNpZWh0IGRhcyBzbyBhdXMiLCAzMCwgIldhcmdvbiBzYWd0OiAiLAorICAgICAgICAgICAgICAgICAgICAgICAgQlNfSU5ERU5UX09OQ0UpKTsKKworICAgICAgICA9PiBXYXJnb24gc2FndDogTWl0IGluZGVudCBzaWVodAorICAgICAgICAgICAgICAgICAgICAgICAgZGFzIHNvIGF1cworCisgICAgd3JpdGUoYnJlYWtfc3RyaW5nKCJNaXQgTGVlcnplaWNoZW4gc2llaHQgZGFzIHNvIGF1cyIsIDMwLCAyKSk7CisKKyAgICAgICAgPT4gICBNaXQgTGVlcnplaWNoZW4gc2llaHQgZGFzIHNvCisgICAgICAgICAgICAgYXVzLi4uCisKKyAgICB3cml0ZShicmVha19zdHJpbmcoIkljaCB3aWxsIGVzXG5hYmVyIHZvcmZvcm1hdGllcnQhIiw2MCwKKyAgICAgICAgICAgICAgICAgICAgICAgICJXYXJnb24gc2FndDogIiwgQlNfTEVBVkVfTVlfTEZTKSk7CisKKyAgICAgICAgPT4gV2FyZ29uIHNhZ3Q6IEljaCB3aWxsIGVzCisgICAgICAgICAgIFdhcmdvbiBzYWd0OiBhYmVyIHZvcmZvcm1hdGllcnQhCisKKyAgICB3cml0ZShicmVha19zdHJpbmcoIkljaCB3aWxsIGVzXG5hYmVyIHZvcmZvcm1hdGllcnQhIiwzMCwKKyAgICAgICAgICAgICAgICAgICAgICAgICJXYXJnb24gc2FndDogIiwgQlNfUFJFUEVORF9JTkRFTlQpKTsKKworICAgICAgICA9PiBXYXJnb24gc2FndDoKKyAgICAgICAgICAgIEljaCB3aWxsIGVzIGFiZXIgCisgICAgICAgICAgICB2b3Jmb3JtYXRpZXJ0IQorCitTSUVIRSBBVUNIOgorICAgIHNlbmRlcndpZWRlcmhvbHVuZwpkaWZmIC0tZ2l0IGEvZG9jL3NlZnVuL2Jyb2tlbl9jb3VudF9iaXRzIGIvZG9jL3NlZnVuL2Jyb2tlbl9jb3VudF9iaXRzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjA5ZTU2YjgKLS0tIC9kZXYvbnVsbAorKysgYi9kb2Mvc2VmdW4vYnJva2VuX2NvdW50X2JpdHMKQEAgLTAsMCArMSwyOSBAQAorU1lOT1BTSVMKKyAgICAgICAgaW50IGNvdW50X2JpdHMgKHN0cmluZyBzdHIpCisKK0RFU1RSSVBUSU9OCisgICAgICAgIENvdW50IHRoZSBudW1iZXIgb2Ygc2V0IGJpdHMgaW4gYml0c3RyaW5nIDxzdHI+IGFuZCByZXR1cm4gdGhlIG51bWJlcgorICAgICAgICBhcyByZXN1bHQuCisKK05PVEUKKwlCaXRzdHJpbmdzIHN0b3JlIDYgQml0cyBwZXIgQ2hhcmFjdGVyLiBDb25zZXF1ZW50bHksIHRoZSBmdW5jdGlvbnMgZm9yCisJbWFuaXB1bGF0aW5nIGJpdHN0cmluZ3MgKHNlZSBiZWxvdykgZG8gZ2VuZXJhbGx5IG5vdCB3b3JrIG9uIG1vc3QKKwlzdHJpbmdzLiBBbiBleGNlcHRpb24gaXMgdGhpcyAocyllZnVuLiBJdCBhY2NlcHRzIHN0cmluZ3Mgd2hpY2ggYXJlCisJbm90IGNvcnJlY3QgYml0c3RyaW5ncyAobGlrZSBnZXR1aWQoUEwpKSwgQlVUOiBJdCBkb2VzIE5PVCB3b3JrCisJY29ycmVjdGx5IG9uIHRoZW0hIFRoZSByZXN1bHRzIGFyZSBOT1QgdGhlIGNvcnJlY3QgbnVtYmVyIG9mIGJpdHMhCisJQWRkaXRpb25hbGx5LCBjb3VudF9iaXRzKCkgaW4gTERNdWQgcmVqZWN0cyBzdWNoIHN0cmluZ3Mgd2l0aCBhbiBlcnJvcgorCWluc3RlYWQgb2YgcmV0dXJuaW5nIGZhbHNlIHJlc3VsdHMsIGFzIGFsbCB0aGUgb3RoZXIgZnVuY3Rpb25zIGZvcgorCWJpdHN0cmluZ3MgZG8gYXMgd2VsbC4KKworRVhBTVBMRVMKKyAgICAgICAgc3RyaW5nIHM7CisKKyAgICAgICAgcyA9IHNldF9iaXQoIiIsIDMpOyBzID0gc2V0X2JpdChzLCAxNSk7CisKKyAgICAgICAgY291bnRfYml0cyhzKSAtLT4gcmV0dXJucyAyCisKK1NFRSBBTFNPCisgICAgICAgIGNsZWFyX2JpdChFKSwgc2V0X2JpdChFKSwgdGVzdF9iaXQoRSksIG5leHRfYml0KEUpLCBsYXN0X2JpdChFKSwKKyAgICAgICAgb3JfYml0cyhFKSwgeG9yX2JpdHMoRSksIGludmVydF9iaXRzKEUpLCBjb3B5X2JpdHMoRSkKKworMTkuMTIuMjAwNiwgWmVzc3RyYQpkaWZmIC0tZ2l0IGEvZG9jL3NlZnVuL2NpbmRlbnQgYi9kb2Mvc2VmdW4vY2luZGVudApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi43MjExOWIzCi0tLSAvZGV2L251bGwKKysrIGIvZG9jL3NlZnVuL2NpbmRlbnQKQEAgLTAsMCArMSw5IEBACitTWU5PUFNJUzoKKyAgICAgICAgaW50IGNpbmRlbnQoc3RyaW5nIGZpbGUpCisKK0RFU0NSSVBUSU9OOgorICAgICAgICBJbmRlbnQgYSBmaWxlIHVzaW5nIGFuIExQQy1lbmhhbmNlZCB2ZXJzaW9uIG9mIHRoZSBHTlUgaW5kZW50CisJcHJvZ3JhbSwgd2hpY2ggaXMgbW9kZWxsZWQgYWZ0ZXIgdGhlIEJlcmtlbGV5IGluZGVudCgxKS4KKworU0VFIEFMU086CisJZWQoRSkKZGlmZiAtLWdpdCBhL2RvYy9zZWZ1bi9kZWJ1Z19pbmZvIGIvZG9jL3NlZnVuL2RlYnVnX2luZm8KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMTg3NDdiMAotLS0gL2Rldi9udWxsCisrKyBiL2RvYy9zZWZ1bi9kZWJ1Z19pbmZvCkBAIC0wLDAgKzEsNDkwIEBACitERVBSRUNBVEVECitTWU5PUFNJUworICAgICAgICAjaW5jbHVkZSA8ZGVidWdfaW5mby5oPgorCisgICAgICAgIG1peGVkIGRlYnVnX2luZm8oaW50IGZsYWcpCisgICAgICAgIG1peGVkIGRlYnVnX2luZm8oaW50IGZsYWcsIG1peGVkIGFyZykKKyAgICAgICAgbWl4ZWQgZGVidWdfaW5mbyhpbnQgZmxhZywgbWl4ZWQgYXJnMiwgbWl4ZWQgYXJnMykKKworQkVTQ0hSRUlCVU5HCisgICAgICAgIFNhbW1lbHQgZW50c3ByZWNoZW5kIGRlbiBBbmdhYmVuIGluIDxmbGFnPiBnZXdpc3NlIGludGVyZSBEZWJ1Z2luZm9zCisgICAgICAgIGRlcyBUcmVpYmVycy4gPGZsYWc+IGthbm4gZGFiZWkgZm9sZ2VuZGUgaW4gZGVidWdfaW5mby5oIGRlZmluaWVydGUKKyAgICAgICAgV2VydGUgZW50aGFsdGVuOgorCisgICAgICAgIERJTkZPX09CSkVDVCAgICgwKTogQW5nZXplaWd0IHdlcmRlbiBJbmZvcm1hdGlvbmVuIHp1bSBpbiA8YXJnPgorICAgICAgICAgICAgc3BlemlmaXppZXJ0ZW4gT2JqZWt0LCB6dW0gQmVpc3BpZWwgaGVhcnRfYmVhdCwKKyAgICAgICAgICAgIGVuYWJsZV9jb21tYW5kcyBldGMuIERpZSBGdW5rdGlvbiBsaWVmZXJ0IDAgenVydWVjay4KKworICAgICAgICBESU5GT19NRU1PUlkgICAoMSk6IEFuZ2V6ZWlndCB3ZXJkZW4gSW5mb3JtYXRpb25lbiB6dQorICAgICAgICAgICAgU3BlaWNoZXJiZWxlZ3VuZyB1bmQgLWF1c251dHp1bmcgZGVzIGluIDxhcmc+IHNwZXppZml6aWVydGVuCisgICAgICAgICAgICBPYmpla3RzLCB6dW0gQmVpc3BpZWwgQW56YWhsIFN0cmluZ3MsIFZhcmlhYmxlbiwgZ2VlcmJ0ZSBGaWxlcywKKyAgICAgICAgICAgIE9iamVrdGdyb2Vzc2UgZXRjLiBEaWUgRnVua3Rpb24gbGllZmVydCAwIHp1cnVlY2suCisKKyAgICAgICAgRElORk9fT0JKTElTVCAgKDIpOiBkZWJ1Z19pbmZvKCkgbGllZmVydCBPYmpla3RlIGF1cyBkZXIgZ2xvYmFsZW4KKyAgICAgICAgICAgIE9iamVrdGxpc3RlLiBXZW5uIDxhcmcyPiBuaWNodCBhbmdlZ2ViZW4gd2lyZCwgd2lyZCBkYXMgZXJzdGUKKyAgICAgICAgICAgIEVsZW1lbnQgYXVzIGRlciBPYmpla3RsaXN0ZSBnZWxpZXJmZXJ0LCB3ZW5uIDxhcmcyPiBlaW5lIFphaGwgbgorICAgICAgICAgICAgaXN0LCBkYXMgbi10ZSBFbGVtZW50LiBJc3QgPGFyZzI+IGVpbiBPYmpla3QsIHdlcmRlbiBkaWUKKyAgICAgICAgICAgIG5hY2hmb2xnZW5kZW4gT2JqZWt0ZSBpbiBkZXIgT2JqZWt0bGlzdGUgenVydWVjayBnZWxpZWZlcnQuCisgICAgICAgICAgICBEYXMgb3B0aW9uYWxlIEFyZ3VtZW50IDxhcmczPiBiZXplaWNobmV0IGRpZSBBbnphaGwgenVydWVjaworICAgICAgICAgICAgZ2VsaWVmZXJ0ZXIgT2JqZWt0ZS4gV2VubiA8YXJnMz4gMCBpc3QsIHdpcmQgZWluIGVpbnplbG5lcworICAgICAgICAgICAgT2JqZWt0IHp1cnVlY2sgZ2VsaWVmZXJ0LiBXZW5uIDxhcmczPiBlaW5lIFphaGwgbSBlbnRoYWVsdCwgd2lyZAorICAgICAgICAgICAgZWluIEFycmF5IG1pdCBob2VjaHN0ZW5zIG0gRWxlbWVudGVuIHp1cnVlY2sgZ2VsaWVmZXJ0LiBBdWYKKyAgICAgICAgICAgIGRpZXNlIFdlaXNlIGthbm4gZWluIEFycmF5IG1pdCBzYWVtdGxpY2hlbiBPYmpla3RlbiBpbSBTcGllbAorICAgICAgICAgICAgZXJ6ZXVndCB3ZXJkZW4sIHdlbm4gZnVlciA8YXJnMz4gX19JTlRfTUFYX18gZ2VzZXR6dCB3aXJkIChlaW5lCisgICAgICAgICAgICBlbnRzcHJlY2hlbmRlIG1heGltYWxlIEFycmF5Z3JvZXNzZSB2b3JhdXNnZXNldHp0KS4KKworICAgICAgICBESU5GT19NQUxMT0MgICAoMyk6IEVudHNwcmljaGVuZCBkZXIgRWluZ2FiZSBkZXMgJ21hbGxvYyctS29tbWFuZG9zLgorICAgICAgICAgICAgRXMgbXVlc3NlbiBrZWluZSB3ZWl0ZXJlbiBBcmd1bWVudGUgYW5nZWdlYmVuIHdlcmRlbi4KKworICAgICAgICBESU5GT19TVEFUVVMgICAoNCk6IEFuZ2V6ZWlndCB3aXJkIGRpZSBTdGF0dXNpbmZvcm1hdGlvbiBkZXMgRHJpdmVycy4KKyAgICAgICAgICAgIE9wdGlvbmFsIGthbm4gZGFzIEFyZ3VtZW50IDxhcmc+IGRpZSBXZXJ0ZSAwLCAidGFibGVzIiwgInN3YXAiLAorICAgICAgICAgICAgIm1hbGxvYyIgb2RlciBhbmRlcmUgdm9tIERyaXZlciBha3plcHRpZXJ0ZSBBcmd1bWVudGUgZW50aGFsdGVuLgorICAgICAgICAgICAgRGFzIFJlc3VsdGF0IGlzdCBlaW4gZHJ1Y2tiYXJlciBTdHJpbmcsIGRlciBkaWUgU3RhdHVzaW5mb3JtYXRpb24KKyAgICAgICAgICAgIGVudGhhZWx0LCBvZGVyIDAsIHdlbm4gZWluIHVuZ3VlbHRpZ2VzIEFyZ3VtZW50IGFuZ2VnZWJlbiB3dXJkZS4KKworICAgICAgICBESU5GT19EVU1QICAgICAoNSk6IERpZSBkdXJjaCA8YXJnMj4gYW5nZWZvcmRlcnRlIEluZm9ybWF0aW9uIHdpcmQKKyAgICAgICAgICAgIGluIGVpbiBGaWxlIGdlc2NocmllYmVuLCBkYXMgbWFuIG1pdCA8YXJnMz4gYW5nZWJlbiBrYW5uLiBXaXJkCisgICAgICAgICAgICA8YXJnMz4gbmljaHQgYW5nZWdlYmVuLCB3aXJkIGVpbmUgU3RhbmRhcmRkYXRlaSB2ZXJ3ZW5kZXQuCisgICAgICAgICAgICBkZWJ1Z19pbmZvKCkgdWViZXJwcnVlZnQgbWl0dGVscyBtYXN0ZXItPnZhbGlkX3dyaXRlKCksIG9iIGVzCisgICAgICAgICAgICBkYXMgRmlsZSBzY2hyZWliZW4ga2Fubi4gRmFsbHMgYmVyZWl0cyBlaW5lIGVudHNwcmVjaGVuZGUgRGF0ZWkKKyAgICAgICAgICAgIGV4aXN0aWVydCwgd2lyZCBkaWVzZSB1ZWJlcnNjaHJpZWJlbi4gRGllIEZ1bmt0aW9uIGxpZWZlcnQgMQorICAgICAgICAgICAgYmVpIEVyZm9sZywgMCBzb25zdC4KKworICAgICAgICAgICAgPGFyZzI+ID09ICJvYmplY3RzIjogbGllZmVydCBJbmZvcm1hdGlvbmVuIHVlYmVyIGFsbGUgT2JqZWt0ZSBpbQorICAgICAgICAgICAgICAgIFNwaWVsIHVuZCBzY2hyZWlidCBkaWVzZSBzdGFuZGFyZG1hZXNzaWcgaW4gZGllIERhdGVpCisgICAgICAgICAgICAgICAgL09CSl9EVU1QLCBkZW0gdmFsaWRfd3JpdGUoKSB3aXJkICdvYmpkdW1wJyB1ZWJlcmdlYmVuLgorICAgICAgICAgICAgICAgIERpZSBEYXRlaSBlbnRoYWVsdCBmdWVyIGplZGVzIE9iamVrdCBlaW5lIFplaWxlLCBpbiBkZXIKKyAgICAgICAgICAgICAgICBqZXdlaWxzIGZvbGdlbmRlIEluZm9ybWF0aW9uZW4gYXVmZ2VsaXN0ZXQgc2luZDoKKyAgICAgICAgICAgICAgICAgIC0gTmFtZSBkZXMgT2JqZWt0cyAob2JqZWN0X25hbWUpCisgICAgICAgICAgICAgICAgICAtIEdyb2Vzc2UgaW0gU3BlaWNoZXIsIGdlbWVpbnNhbWVyIGdlbnV0enRlciBTcGVpY2hlciBudXIKKyAgICAgICAgICAgICAgICAgICAgZWlubWFsIGdlemFlaGx0CisgICAgICAgICAgICAgICAgICAtIEdyb2Vzc2UgaW0gU3BlaWNoZXIsIHdlbm4gZXMga2VpbmUgZ2VtZWluc2FtIGdlbnV0enRlCisgICAgICAgICAgICAgICAgICAgIERhdGVuIGdlYmVuIHd1ZXJkZQorICAgICAgICAgICAgICAgICAgLSBBbnphaGwgUmVmZXJlbnplbgorICAgICAgICAgICAgICAgICAgLSAnSEInLCB3ZW5uIGRhcyBPYmpla3QgZWluZW4gaGVhcnRfYmVhdCBoYXQsIHNvbnN0IG5pY2h0cy4KKyAgICAgICAgICAgICAgICAgIC0gZGVyIE5hbWUgZGVyIFVtZ2VidW5nIG9kZXIgJy0tJywgd2VubiBkYXMgT2JqZWt0IGtlaW5lCisgICAgICAgICAgICAgICAgICAgIFVtZ2VidW5nIGhhdAorICAgICAgICAgICAgICAgICAgLSBpbiBLbGFtbWVybiBkaWUgQW56YWhsIGRlciBkdXJjaCBkYXMgT2JqZWt0IHZlcnVyc2FjaHRlbgorICAgICAgICAgICAgICAgICAgICBWZXJhcmJlaXR1bmdzc2Nocml0dGVuIChleGVjdXRpb24gdGlja3MpCisgICAgICAgICAgICAgICAgICAtIGRlciBTd2FwLVN0YXR1czoKKyAgICAgICAgICAgICAgICAgICAgICA+IG5pY2h0cywgd2VubiBkYXMgT2JqZWt0IG5pY2h0IGdlc3dhcHQgd3VyZGUKKyAgICAgICAgICAgICAgICAgICAgICA+ICdQUk9HIFNXQVBQRUQnLCB3ZW5uIG51ciBkYXMgUHJvZ3JhbW0gZ2Vzd2FwdCB3dXJkZQorICAgICAgICAgICAgICAgICAgICAgID4gJ1ZBUiBTV0FQUEVEJywgd2VubiBudXIgZGllIFZhcmlhYmxlbiBnZXN3YXB0IHd1cmRlbgorICAgICAgICAgICAgICAgICAgICAgID4gJ1NXQVBQRUQnLCB3ZW5uIGJlaWRlIGdlc3dhcHQgd3VyZGVuCisgICAgICAgICAgICAgICAgICAtIGRpZSBaZWl0LCB6dSBkZXIgZGFzIE9iamVrdCBnZWxhZGVuIHd1cmRlLgorCisgICAgICAgICAgICA8YXJnMj4gPT0gImRlc3RydWN0ZWQiOiBsaWVmZXJ0IEluZm9ybWF0aW9uZW4gdWViZXIgYWxsZQorICAgICAgICAgICAgICAgIHplcnN0b2VydGVuIE9iamVrdGUgdW5kIHNjaHJlaWJ0IGRpZXNlIHN0YW5kYXJkbWFlc3NpZyBpbgorICAgICAgICAgICAgICAgIGRpZSBEYXRlaSAvREVTVF9PQkpfRFVNUCwgZGVtIHZhbGlkX3dyaXRlKCkgd2lyZCAnb2JqZHVtcCcKKyAgICAgICAgICAgICAgICB1ZWJlcmdlYmVuLiBEaWUgRGF0ZWkgZW50aGFlbHQgZnVlciBqZWRlcyBPYmpla3QgZWluZSBaZWlsZSwKKyAgICAgICAgICAgICAgICBpbiBkZXIgamV3ZWlscyBmb2xnZW5kZSBJbmZvcm1hdGlvbmVuIGF1ZmdlbGlzdGV0IHNpbmQ6CisgICAgICAgICAgICAgICAgICAtIE5hbWUgZGVzIE9iamVrdHMgKG9iamVjdF9uYW1lKQorICAgICAgICAgICAgICAgICAgLSBBbnphaGwgZGVyIFJlZmVyZW56ZW4KKyAgICAgICAgICAgICAgICAgIC0gJ05FVycsIHdlbm4gZGFzIE9iamVrdCBpbiBkaWVzZW0gVmVyYXJiZWl0dW5nc3p5a2x1cworICAgICAgICAgICAgICAgICAgICB6ZXJzdG9lcnQgd3VyZGUsIG5pY2h0cyB3ZW5uIGVzIGJlcmVpdHMgZnJ1ZWhyZSB6ZXJzdG9lcnQKKyAgICAgICAgICAgICAgICAgICAgd29yZGVuIHdhci4KKworICAgICAgICAgICAgPGFyZzI+ID09ICJvcGNvZGVzIjogbGllZmVydCBOdXR6dW5nc2luZm9ybWF0aW9uZW4gdWViZXIgZGllCisgICAgICAgICAgICAgICAgb3Bjb2Rlcy4gU3RhbmRhcmRtYWVzc2lnIHdpcmQgaW4gZGllIERhdGVpIC9PUENfRFVNUAorICAgICAgICAgICAgICAgIGdlc2NocmllYmVuLiB2YWxpZF93cml0ZSgpIHdpcmQgJ29wY2R1bXAnIHVlYmVyZ2ViZW4uCisKKyAgICAgICAgICAgIDxhcmcyPiA9PSAibWVtb3J5IjogbGllZmVydCBlaW5lIExpc3RlIGFsbGVyIGFsbG9raWVydGVuCisgICAgICAgICAgICAgICAgU3BlaWNoZXJibG9lY2tlLgorICAgICAgICAgICAgICAgIFN0YW5kYXJkbWFlc3NpZyB3aXJkIGluIGRpZSBEYXRlaSAvTUVNT1JZX0RVTVAgZ2VzY2hyaWViZW47CisgICAgICAgICAgICAgICAgdmFsaWRfd3JpdGUoKSB3aXJkICdtZW1kdW1wJyB1ZWJlcmdlYmVuLiAgRXhpc3RpZXJ0IGRpZQorICAgICAgICAgICAgICAgIERhdGVpIGJlcmVpdHMsIHdlcmRlbiBkaWUgbmV1ZW4gRGF0ZW4gYW5nZWhhZW5ndC4KKyAgICAgICAgICAgICAgICBXZW5uIGRlciBBbGxva2F0b3IgZWluZW4gU3BlaWNoZXJhYnp1ZyBuaWNodCB1bnRlcnN0dWV0enQsCisgICAgICAgICAgICAgICAgd2lyZCBrZWluZSBEYXRlaSBnZXNjaHJpZWJlbiB1bmQgaW1tZXIgMCB6dXJ1ZWNrZ2VnZWJlbi4KKyAgICAgICAgICAgICAgICBEaWVzZSBGdW5rdGlvbiBpc3QgYW0gbnVldHpsaWNoc3RlbiB3ZW5uIGRlciBBbGxva2F0b3IKKyAgICAgICAgICAgICAgICBtaXQgTUFMTE9DX1RSQUNFIHVuZCBNQUxMT0NfTFBDX1RSQUNFIGtvbXBpbGllcnQKKyAgICAgICAgICAgICAgICB3dXJkZS4KKworCisgICAgICAgIERJTkZPX0RBVEEgICAgKDYpOiBMaWVmZXJ0IFJvaGRhdGVuIHVlYmVyIGdld2lzc2UsIGR1cmNoIDxhcmcyPgorICAgICAgICAgICAgc3BlemlmaXppZXJ0ZSBBc3Bla3RlIGRlcyBUcmVpYmVycy4gRGFzIFJlc3VsdGF0IGRlciBGdW5rdGlvbiBpc3QKKyAgICAgICAgICAgIGVpbiBBcnJheSBtaXQgZGVyIEluZm9ybWF0aW9uIG9kZXIgMCwgZmFsbHMgPGFyZzI+IGtlaW5lbgorICAgICAgICAgICAgZ3VlbHRpZ2VuIFdlcnQgZW50aGFsdGVuIGhhdC4KKyAgICAgICAgICAgIElzdCA8YXJnMz4gZWluZSBaYWhsLCBkaWUga2xlaW5lciBpc3QgYWxzIGRpZSBBbnphaGwgRWxlbWVudGUgaW0KKyAgICAgICAgICAgIFJlc3VsdGF0LUFycmF5LCBsaWVmZXJ0IGRpZSBGdW5rdGlvbiBudXIgZGFzIGVudHNwcmVjaGVuZGUKKyAgICAgICAgICAgIEVsZW1lbnQgenVydWVjay4KKyAgICAgICAgICAgIFp1bGFlc3NpZ2UgV2VydGUgZnVlciA8YXJnMj4gc2luZDogRElEX1NUQVRVUywgRElEX1NXQVAgdW5kCisgICAgICAgICAgICBESURfTUFMTE9DLgorCisgICAgICAgICAgICA8YXJnMj4gPT0gRElEX1NUQVRVUyAoMCk6IExpZWZlcnQgZGllICJzdGF0dXMiIHVuZCAic3RhdHVzIHRhYmxlIgorICAgICAgICAgICAgICAgIEluZm9ybWF0aW9uLiBGb2xnZW5kZSBJbmRpemVzIHNpbmQgZGVmaW5pZXJ0OgorICAgICAgICAgICAgICAgICAgLSBpbnQgRElEX1NUX0JPT1RfVElNRQorICAgICAgICAgICAgICAgICAgICAgICAgZGllIFplaXQgKHRpbWUoKSksIHp1IGRlciBkYXMgTXVkIGdlc3RhcnRldCB3dXJkZQorICAgICAgICAgICAgICAgICAgLSBpbnQgRElEX1NUX0FDVElPTlMKKyAgICAgICAgICAgICAgICAgIC0gaW50IERJRF9TVF9BQ1RJT05TX1NJWkUKKyAgICAgICAgICAgICAgICAgICAgICAgIGRpZSBBbnphaGwgdW5kIEdyb2Vzc2UgaW0gU3BlaWNoZXIgZGVyIGFsbG96aWVydGVuCisgICAgICAgICAgICAgICAgICAgICAgICBBY3Rpb25zLgorICAgICAgICAgICAgICAgICAgLSBpbnQgRElEX1NUX1NIQURPV1MKKyAgICAgICAgICAgICAgICAgIC0gaW50IERJRF9TVF9TSEFET1dTX1NJWkUKKyAgICAgICAgICAgICAgICAgICAgICAgIEFuemFobCB1bmQgR3JvZXNzZSBpbSBTcGVpY2hlciBhbGxlciBhbGxvemllcnRlbgorICAgICAgICAgICAgICAgICAgICAgICAgU2hhZG93cy4KKyAgICAgICAgICAgICAgICAgIC0gaW50IERJRF9TVF9PQkpFQ1RTCisgICAgICAgICAgICAgICAgICAtIGludCBESURfU1RfT0JKRUNUU19TSVpFCisgICAgICAgICAgICAgICAgICAgICAgICBBbnphaGwgdW5kIEdyb2Vzc2UgaW0gU3BlaWNoZXIgYWxsZXIgT2JqZWt0ZS4KKyAgICAgICAgICAgICAgICAgIC0gaW50IERJRF9TVF9PQkpFQ1RTX1NXQVBQRUQKKyAgICAgICAgICAgICAgICAgIC0gaW50IERJRF9TVF9PQkpFQ1RTX1NXQVBfU0laRQorICAgICAgICAgICAgICAgICAgICAgICAgQW56YWhsIHVuZCBHcm9lc3NlIGltIFNwZWljaGVyIGRlciBnZXN3YXB0ZW4KKyAgICAgICAgICAgICAgICAgICAgICAgIFZhcmlhYmxlbmJsb2Vja2UgZGVyIE9iamVrdGUKKyAgICAgICAgICAgICAgICAgIC0gaW50IERJRF9TVF9PQkpFQ1RTX0xJU1QKKyAgICAgICAgICAgICAgICAgICAgICAgIEFuemFobCBPYmpla3RlIGluIGRlciBPYmpla3RsaXN0ZQorICAgICAgICAgICAgICAgICAgLSBpbnQgRElEX1NUX09CSkVDVFNfTkVXTFlfREVTVAorICAgICAgICAgICAgICAgICAgICAgICAgQW56YWhsIGRlciBmcmlzY2ggemVyc3RvZXJ0ZW4gT2JqZWt0ZSAoZC5oLiBPYmpla3RlLAorICAgICAgICAgICAgICAgICAgICAgICAgZGllIGluIGRpZXNlbSBWZXJhcmJlaXR1bmdzenlrbHVzIHplcnN0b2VydCB3dXJkZW4pCisgICAgICAgICAgICAgICAgICAtIGludCBESURfU1RfT0JKRUNUU19ERVNUUlVDVEVECisgICAgICAgICAgICAgICAgICAgICAgICBBbnphaGwgZGVyIHplcnN0b2VydGVuLCBhYmVyIG5vY2ggaW1tZXIgcmVmZXJlbnppZXJ0ZW4KKyAgICAgICAgICAgICAgICAgICAgICAgIE9iamVrdGUsIG9obmUgZGllIHVudGVyIERJRF9TVF9PQkpFQ1RTX05FV0xZX0RFU1QKKyAgICAgICAgICAgICAgICAgICAgICAgIGJlcmVpdHMgZ2V6YWVobHRlbi4KKyAgICAgICAgICAgICAgICAgIC0gaW50IERJRF9TVF9PQkpFQ1RTX1BST0NFU1NFRAorICAgICAgICAgICAgICAgICAgICAgICAgQW56YWhsIGRlciBnZWxpc3RldGVuIE9iamVrdGUsIGRpZSBpbSBsZXR6dGVuCisgICAgICAgICAgICAgICAgICAgICAgICBWZXJhcmJlaXR1bmdzenlrbHVzIHZlcmFyYmVpdGV0IHd1cmRlbi4KKyAgICAgICAgICAgICAgICAgIC0gZmxvYXQgRElEX1NUX09CSkVDVFNfQVZHX1BST0MKKyAgICAgICAgICAgICAgICAgICAgICAgIER1cmNoc2Nobml0dGxpY2hlciBBbnRlaWwgZGVyIHBybyBaeWtsdXMgdmVyYXJiZWl0ZXRlbgorICAgICAgICAgICAgICAgICAgICAgICAgT2JqZWt0ZSwgYXVzZ2VkcnVlY2t0IGluIFByb3plbnQgKDAgLi4gMS4wKQorICAgICAgICAgICAgICAgICAgLSBpbnQgRElEX1NUX09UQUJMRQorICAgICAgICAgICAgICAgICAgICAgICAgQW56YWhsIGVpbmdldHJhZ2VuZXIgT2JqZWt0ZSBpbiBkZXIgT2JqZWt0dGFiZWxsZQorICAgICAgICAgICAgICAgICAgLSBpbnQgRElEX1NUX09UQUJMRV9TTE9UUworICAgICAgICAgICAgICAgICAgICAgICAgQW56YWhsIHZvbiBIYXNocGxhZXR6ZW4sIGRpZSB2b24gamVkZXIgT2JqZWt0dGFiZWxsZQorICAgICAgICAgICAgICAgICAgICAgICAgYmVyZWl0Z2VzdGVsbHQgd2VyZGVuCisgICAgICAgICAgICAgICAgICAtIGludCBESURfU1RfT1RBQkxFX1NJWkUKKyAgICAgICAgICAgICAgICAgICAgICAgIER1cmNoIGRpZSBPYmpla3R0YWJlbGxlIGJlbGVndGVyIFNwZWljaGVyCisgICAgICAgICAgICAgICAgICAtIGludCBESURfU1RfSEJFQVRfT0JKUworICAgICAgICAgICAgICAgICAgICAgICAgQW56YWhsIE9iamVrdGUgbWl0IGVpbmVtIGhlYXJ0X2JlYXQoKQorICAgICAgICAgICAgICAgICAgLSBpbnQgRElEX1NUX0hCRUFUX0NBTExTCisgICAgICAgICAgICAgICAgICAgICAgICBBbnphaGwgYWt0aXZlciBoZWFydF9iZWF0KCkgWnlrbGVuIGJpc2hlciAoZC5oLgorICAgICAgICAgICAgICAgICAgICAgICAgWnlrbGVuLCBpbiBkZW5lbiBtaW5kZXN0ZW5zIGVpbmUgaGVhcnRfYmVhdCgpIEZ1bmt0aW9uCisgICAgICAgICAgICAgICAgICAgICAgICBhdWZnZXJ1ZmVuIHd1cmRlKQorICAgICAgICAgICAgICAgICAgLSBpbnQgRElEX1NUX0hCRUFUX0NBTExTX1RPVEFMCisgICAgICAgICAgICAgICAgICAgICAgICBHZXNhbXR6YWhsIHZvbiBoZWFydF9iZWF0KCkgWnlrbGVuIGJpc2hlci4KKyAgICAgICAgICAgICAgICAgIC0gaW50IERJRF9TVF9IQkVBVF9TTE9UUworICAgICAgICAgICAgICAgICAgLSBpbnQgRElEX1NUX0hCRUFUX1NJWkUKKyAgICAgICAgICAgICAgICAgICAgICAgIEFuemFobCB1bmQgR3JvZXNzZSBhbGxlciBhbGxvemllcnRlbiBFaW50cmFlZ2UgaW4gZGVyCisgICAgICAgICAgICAgICAgICAgICAgICBoZWFydF9iZWF0KCkgVGFiZWxsZS4KKyAgICAgICAgICAgICAgICAgIC0gaW50IERJRF9TVF9IQkVBVF9QUk9DRVNTRUQKKyAgICAgICAgICAgICAgICAgICAgICAgIEFuemFobCBoZWFydF9iZWF0KClzIGltIGxldHp0ZW4gWnlrbHVzCisgICAgICAgICAgICAgICAgICAtIGZsb2F0IERJRF9TVF9IQkVBVF9BVkdfUFJPQworICAgICAgICAgICAgICAgICAgICAgICAgRHVyY2hzY2huaXR0bGljaGVyIEFudGVpbCBkZXIgcHJvIFp5a2x1cyBhdWZnZXJ1ZmVuZW4KKyAgICAgICAgICAgICAgICAgICAgICAgIGhlYXJ0X2JlYXQoKXMsIGF1c2dlZHJ1ZWNrdCBpbiBQcm96ZW50ICgwIC4uIDEuMCkKKyAgICAgICAgICAgICAgICAgIC0gaW50IERJRF9TVF9DQUxMT1VUUworICAgICAgICAgICAgICAgICAgICAgICAgQW56YWhsIHVuZCBHcm9lc3NlIGFsbGVyIGxhdWZlbmRlbiBjYWxsX291dCgpcworICAgICAgICAgICAgICAgICAgLSBpbnQgRElEX1NUX0FSUkFZUworICAgICAgICAgICAgICAgICAgLSBpbnQgRElEX1NUX0FSUkFZU19TSVpFCisgICAgICAgICAgICAgICAgICAgICAgICBBbnphaGwgdW5kIEdyb2Vzc2UgYWxsZXIgQXJyYXlzCisgICAgICAgICAgICAgICAgICAtIGludCBESURfU1RfTUFQUElOR1MKKyAgICAgICAgICAgICAgICAgIC0gaW50IERJRF9TVF9NQVBQSU5HU19TSVpFCisgICAgICAgICAgICAgICAgICAgICAgICBBbnphaGwgdW5kIEdyb2Vzc2UgYWxsZXIgTWFwcGluZ3MKKyAgICAgICAgICAgICAgICAgIC0gaW50IERJRF9TVF9QUk9HUworICAgICAgICAgICAgICAgICAgLSBpbnQgRElEX1NUX1BST0dTX1NJWkUKKyAgICAgICAgICAgICAgICAgICAgICAgIEFuemFobCB1bmQgR3JvZXNzZSBhbGxlciBQcm9ncmFtbWUKKyAgICAgICAgICAgICAgICAgIC0gaW50IERJRF9TVF9QUk9HU19TV0FQUEVECisgICAgICAgICAgICAgICAgICAtIGludCBESURfU1RfUFJPR1NfU1dBUF9TSVpFCisgICAgICAgICAgICAgICAgICAgICAgICBBbnphaGwgdW5kIEdyb2Vzc2UgZGVyIGdlc3dhcHRlbiBQcm9ncmFtbWUKKyAgICAgICAgICAgICAgICAgIC0gaW50IERJRF9TVF9VU0VSX1JFU0VSVkUKKyAgICAgICAgICAgICAgICAgIC0gaW50IERJRF9TVF9NQVNURVJfUkVTRVJWRQorICAgICAgICAgICAgICAgICAgLSBpbnQgRElEX1NUX1NZU1RFTV9SRVNFUlZFCisgICAgICAgICAgICAgICAgICAgICAgICBNb21lbnRhbmUgR3JvZXNzZSBkZXIgZHJlaSBTcGVpY2hlcnJlc2VydmVuCisgICAgICAgICAgICAgICAgICAtIGludCBESURfU1RfQUREX01FU1NBR0UKKyAgICAgICAgICAgICAgICAgIC0gaW50IERJRF9TVF9QQUNLRVRTCisgICAgICAgICAgICAgICAgICAtIGludCBESURfU1RfUEFDS0VUX1NJWkUKKyAgICAgICAgICAgICAgICAgICAgICAgIEFuemFobCBBdWZydWZlIHZvbiBhZGRfbWVzc2FnZSgpLCBBbnphaGwgdW5kIEdyb2Vzc2UKKyAgICAgICAgICAgICAgICAgICAgICAgIGRlciB2ZXJzZW5kZXRlbiBQYWtldGUuCisgICAgICAgICAgICAgICAgICAgICAgICBXZW5uIGRlciBEcml2ZXIgbmljaHQgbWl0IENPTU1fU1RBVCBrb21waWxpZXJ0IHd1cmRlLAorICAgICAgICAgICAgICAgICAgICAgICAgbGllZmVybiBhbGxlIGRyZWkgV2VydGUgaW1tZXIgLTEgenVydWVjay4KKyAgICAgICAgICAgICAgICAgIC0gaW50IERJRF9TVF9BUFBMWQorICAgICAgICAgICAgICAgICAgLSBpbnQgRElEX1NUX0FQUExZX0hJVFMKKyAgICAgICAgICAgICAgICAgICAgICAgIEFuemFobCBBdWZydWZlbiB2b24gYXBwbHlfbG93KCksIHVuZCB3aWUgdmllbGUgZGF2b24KKyAgICAgICAgICAgICAgICAgICAgICAgIENhY2hlLVRyZWZmZXIgd2FyZW4uIFdlbm4gZGVyIERyaXZlciBuaWNodCBtaXQKKyAgICAgICAgICAgICAgICAgICAgICAgIEFQUExZX0NBQ0hFX1NUQVQga29tcGlsaWVydCB3dXJkZSwgbGllZmVybiBiZWlkZQorICAgICAgICAgICAgICAgICAgICAgICAgV2VydGUgaW1tZXIgLTEuCisgICAgICAgICAgICAgICAgICAtIGludCBESURfU1RfU1RSSU5HUworICAgICAgICAgICAgICAgICAgLSBpbnQgRElEX1NUX1NUUklOR19TSVpFCisgICAgICAgICAgICAgICAgICAgICAgICBBbnphaGwgdW50ZXJzY2hpZWRsaWNoZXIgU3RyaW5ncyBpbiBkZXIgU3RyaW5ndGFiZWxsZSwKKyAgICAgICAgICAgICAgICAgICAgICAgIHNvd2llIGlocmUgR3JvZXNzZQorICAgICAgICAgICAgICAgICAgLSBpbnQgRElEX1NUX1NUUl9UQUJMRV9TSVpFCisgICAgICAgICAgICAgICAgICAgICAgICBHcm9lc3NlIGRlciBTdHJpbmcgVGFiZWxsZQorICAgICAgICAgICAgICAgICAgLSBpbnQgRElEX1NUX1NUUl9SRVEKKyAgICAgICAgICAgICAgICAgIC0gaW50IERJRF9TVF9TVFJfUkVRX1NJWkUKKyAgICAgICAgICAgICAgICAgICAgICAgIEdlc2FtdGUgQW56YWhsIHZvbiBTdHJpbmcgQWxsb2thdGlvbmVuLCB1bmQgaWhyZQorICAgICAgICAgICAgICAgICAgICAgICAgR3JvZXNzZQorICAgICAgICAgICAgICAgICAgLSBpbnQgRElEX1NUX1NUUl9TRUFSQ0hFUworICAgICAgICAgICAgICAgICAgLSBpbnQgRElEX1NUX1NUUl9TRUFSQ0hfTEVOCisgICAgICAgICAgICAgICAgICAgICAgICBBbnphaGwgU3VjaHZvcmdhZW5nZSBpbiBkZXIgU3RyaW5ndGFiZWxsZSB1bmQgZGllCisgICAgICAgICAgICAgICAgICAgICAgICBHZXNhbXRsYWVuZ2UgZGVzIFN1Y2hzdHJpbmdzCisgICAgICAgICAgICAgICAgICAtIGludCBESURfU1RfU1RSX0ZPVU5ECisgICAgICAgICAgICAgICAgICAgICAgICBBbnphaGwgZXJmb2xncmVpY2hlciBTdWNodm9yZ2FlbmdlCisgICAgICAgICAgICAgICAgICAtIGludCBESURfU1RfU1RSX0VOVFJJRVMKKyAgICAgICAgICAgICAgICAgICAgICAgIEFuemFobCBFaW50cmFlZ2UgKEhhc2ggS2V0dGVuKSBpbiBkZXIgU3RyaW5nIFRhYmVsbGUKKyAgICAgICAgICAgICAgICAgIC0gaW50IERJRF9TVF9TVFJfQURERUQKKyAgICAgICAgICAgICAgICAgICAgICAgIEFuemFobCB6dXIgU3RyaW5nIFRhYmVsbGUgYmlzaGVyIGhpbnp1Z2VmdWVndGVyCisgICAgICAgICAgICAgICAgICAgICAgICBTdHJpbmdzCisgICAgICAgICAgICAgICAgICAtIGludCBESURfU1RfU1RSX0RFTEVURUQKKyAgICAgICAgICAgICAgICAgICAgICAgIEFuemFobCBhdXMgZGVyIFN0cmluZyBUYWJlbGxlIGJpc2hlciBnZWxvZXNjaHRlcgorICAgICAgICAgICAgICAgICAgICAgICAgU3RyaW5ncworICAgICAgICAgICAgICAgICAgLSBpbnQgRElEX1NUX1NUUl9DT0xMSVNJT05TCisgICAgICAgICAgICAgICAgICAgICAgICBBbnphaGwgenUgZWluZXIgZXhpc3RpZXJlbmRlbiBIYXNoIEtldHRlIGhpbnp1Z2VmdWVndGUKKyAgICAgICAgICAgICAgICAgICAgICAgIFN0cmluZ3MKKyAgICAgICAgICAgICAgICAgIC0gaW50IERJRF9TVF9SWF9DQUNIRUQKKyAgICAgICAgICAgICAgICAgICAgICAgIEFuemFobCBnZWNhY2hldGVyIHJlZ3VsYWVyZXIgQXVzZHJ1ZWNrZSAocmVndWxhcgorICAgICAgICAgICAgICAgICAgICAgICAgZXhwcmVzc2lvbnMpCisgICAgICAgICAgICAgICAgICAtIGludCBESURfU1RfUlhfVEFCTEUKKyAgICAgICAgICAgICAgICAgIC0gaW50IERJRF9TVF9SWF9UQUJMRV9TSVpFCisgICAgICAgICAgICAgICAgICAgICAgICBBbnphaGwgUGxhZXR6ZSBpbiBkZXIgUmVnZXhwIENhY2hlIFRhYmVsbGUgdW5kCisgICAgICAgICAgICAgICAgICAgICAgICBTcGVpY2hlcmJlZGFyZiBkZXIgZ2VjYWNoZXRlbiBBdXNkcnVlY2tlCisgICAgICAgICAgICAgICAgICAtIGludCBESURfU1RfUlhfUkVRVUVTVFMKKyAgICAgICAgICAgICAgICAgICAgICAgIEFuemFobCBBbmZyYWdlbiBmdWVyIG5ldWUgcmVnZXhwcworICAgICAgICAgICAgICAgICAgLSBpbnQgRElEX1NUX1JYX1JFUV9GT1VORAorICAgICAgICAgICAgICAgICAgICAgICAgQW56YWhsIGdlZnVuZGVuZXIgcmVnZXhwcyBpbiBkZXIgcmVnZXhwIENhY2hlIFRhYmVsbGUKKyAgICAgICAgICAgICAgICAgIC0gaW50IERJRF9TVF9SWF9SRVFfQ09MTAorICAgICAgICAgICAgICAgICAgICAgICAgQW56YWhsIGFuZ2VmcmFndGVyIHJlZ2V4cHMsIGRpZSBtaXQgZWluZXIgYmVzdGVoZW5kZW4KKyAgICAgICAgICAgICAgICAgICAgICAgIHJlZ2V4cCBrb2xsaWRpZXJ0ZW4KKyAgICAgICAgICAgICAgICAgIC0gaW50IERJRF9TVF9NQl9GSUxFCisgICAgICAgICAgICAgICAgICAgICAgICBEaWUgR3JvZXNzZSBkZXMgJ0ZpbGUnIFNwZWljaGVycHVmZmVycworICAgICAgICAgICAgICAgICAgLSBpbnQgRElEX1NUX01CX1NXQVAKKyAgICAgICAgICAgICAgICAgICAgICAgIERpZSBHcm9lc3NlIGRlcyAnU3dhcCcgU3BlaWNoZXJwdWZmZXJzCisKKyAgICAgICAgICAgIDxhcmcyPiA9PSBESURfU1dBUCAoMSk6IExpZWZlcnQgInN0YXR1cyBzd2FwIi1JbmZvcm1hdGlvbjoKKyAgICAgICAgICAgICAgICAgIC0gaW50IERJRF9TV19QUk9HUworICAgICAgICAgICAgICAgICAgLSBpbnQgRElEX1NXX1BST0dfU0laRQorICAgICAgICAgICAgICAgICAgICAgICAgQW56YWhsIHVuZCBHcm9lc3NlIGRlciBnZXN3YXBwdGVuIFByb2dyYW1tYmxvZWNrZQorICAgICAgICAgICAgICAgICAgLSBpbnQgRElEX1NXX1BST0dfVU5TV0FQUEVECisgICAgICAgICAgICAgICAgICAtIGludCBESURfU1dfUFJPR19VX1NJWkUKKyAgICAgICAgICAgICAgICAgICAgICAgIEFuemFobCB1bmQgR3JvZXNzZSBkZXIgbmljaHQgZ2Vzd2FwcHRlbiBCbG9lY2tlCisgICAgICAgICAgICAgICAgICAtIGludCBESURfU1dfVkFSUworICAgICAgICAgICAgICAgICAgLSBpbnQgRElEX1NXX1ZBUl9TSVpFCisgICAgICAgICAgICAgICAgICAgICAgICBBbnphaGwgdW5kIEdyb2Vzc2UgZGVyIGdlc3dhcHB0ZW4gVmFyaWFibGVuYmxvZWNrZQorICAgICAgICAgICAgICAgICAgLSBpbnQgRElEX1NXX0ZSRUUKKyAgICAgICAgICAgICAgICAgIC0gaW50IERJRF9TV19GUkVFX1NJWkUKKyAgICAgICAgICAgICAgICAgICAgICAgIEFuemFobCB1bmQgR3JvZXNzZSBkZXIgZnJlaWVuIEJsb2Vja2UgaW4gZGVyCisgICAgICAgICAgICAgICAgICAgICAgICBBdXNsYWdlcnVuZ3NkYXRlaQorICAgICAgICAgICAgICAgICAgLSBpbnQgRElEX1NXX0ZJTEVfU0laRQorICAgICAgICAgICAgICAgICAgICAgICAgR3JvZXNzZSBkZXIgQXVzbGFnZXJ1bmdzZGF0ZWkKKyAgICAgICAgICAgICAgICAgIC0gaW50IERJRF9TV19SRVVTRUQKKyAgICAgICAgICAgICAgICAgICAgICAgIEdlc2FtdGVyIHdpZWRlcnZlcndlbmRldGVyIFNwZWljaGVycGxhdHogaW4gZGVyCisgICAgICAgICAgICAgICAgICAgICAgICBBdXNsYWdlcnVuZ3NkYXRlaQorICAgICAgICAgICAgICAgICAgLSBpbnQgRElEX1NXX1NFQVJDSEVTCisgICAgICAgICAgICAgICAgICAtIGludCBESURfU1dfU0VBUkNIX0xFTgorICAgICAgICAgICAgICAgICAgICAgICAgQW56YWhsIHVuZCBHZXNhbXRsYWVuZ2UgZGVyIFN1Y2h2b3JnYWVuZ2UgbmFjaAorICAgICAgICAgICAgICAgICAgICAgICAgd2llZGVydmVyd2VuZGJhcmVuIEJsb2Vja2VuIGluIGRlciBBdXNsYWdlcnVuZ3NkYXRlaQorICAgICAgICAgICAgICAgICAgLSBpbnQgRElEX1NXX0ZfU0VBUkNIRVMKKyAgICAgICAgICAgICAgICAgIC0gaW50IERJRF9TV19GX1NFQVJDSF9MRU4KKyAgICAgICAgICAgICAgICAgICAgICAgIEFuemFobCB1bmQgR2VzYW10bGFlbmdlIGRlciBTdWNodm9yZ2FlbmdlIG5hY2ggZWluZW0KKyAgICAgICAgICAgICAgICAgICAgICAgIEJsb2NrLCBkZXIgZnJlaSBnZW1hY2h0IHdlcmRlbiBrYW5uLgorICAgICAgICAgICAgICAgICAgLSBpbnQgRElEX1NXX0NPTVBBQ1QKKyAgICAgICAgICAgICAgICAgICAgICAgIFRSVUUgd2VubiBkZXIgU3dhcHBlciBpbSBDb21wYWN0LU1vZHVzIGxhZXVmdAorICAgICAgICAgICAgICAgICAgLSBpbnQgRElEX1NXX1JFQ1lDTEVfRlJFRQorICAgICAgICAgICAgICAgICAgICAgICAgVFJVRSB3ZW5uIGRlciBTd2FwcGVyIGdlcmFkZSBlaW5lbiBmcmVpZW4gQmxvY2sKKyAgICAgICAgICAgICAgICAgICAgICAgIHdpZWRlcnZlcndlbmRldAorCisgICAgICAgICAgICA8YXJnMj4gPT0gRElEX01FTU9SWSAoMik6IExpZWZlcnQgZGllICJzdGF0dXMgbWFsbG9jIi1JbmZvcm1hdGlvbjoKKyAgICAgICAgICAgICAgICAgIC0gc3RyaW5nIERJRF9NRU1fTkFNRQorICAgICAgICAgICAgICAgICAgICAgICAgRGVyIE5hbWUgZGVzIEFsbG9rYXRvcnM6ICJzeXNtYWxsb2MiLCAic21hbGxvYyIsCisgICAgICAgICAgICAgICAgICAgICAgICAic2xhYmFsbG9jIgorICAgICAgICAgICAgICAgICAgLSBpbnQgRElEX01FTV9TQlJLCisgICAgICAgICAgICAgICAgICAtIGludCBESURfTUVNX1NCUktfU0laRQorICAgICAgICAgICAgICAgICAgICAgICAgQW56YWhsIHVuZCBHcm9lc3NlIGRlciBTcGVpY2hlcmJsb2Vja2UsIGRpZSB2b20KKyAgICAgICAgICAgICAgICAgICAgICAgIEJldHJpZWJzc3lzdGVtIGFuZ2Vmb3JkZXJ0IHd1cmRlbiAoc21hbGxvYywgc2xhYmFsbG9jKQorICAgICAgICAgICAgICAgICAgLSBpbnQgRElEX01FTV9MQVJHRQorICAgICAgICAgICAgICAgICAgLSBpbnQgRElEX01FTV9MQVJHRV9TSVpFCisgICAgICAgICAgICAgICAgICAtIGludCBESURfTUVNX0xGUkVFCisgICAgICAgICAgICAgICAgICAtIGludCBESURfTUVNX0xGUkVFX1NJWkUKKyAgICAgICAgICAgICAgICAgICAgICAgIEFuemFobCB1bmQgR3JvZXNzZSBkZXIgZ3Jvc3NlbiBhbGxvemllcnRlbiBiencuCisgICAgICAgICAgICAgICAgICAgICAgICBmcmVpZW4gQmxvZWNrZSAoc21hbGxvYywgc2xhYmFsbG9jKQorICAgICAgICAgICAgICAgICAgLSBpbnQgRElEX01FTV9MV0FTVEVECisgICAgICAgICAgICAgICAgICAtIGludCBESURfTUVNX0xXQVNURURfU0laRQorICAgICAgICAgICAgICAgICAgICAgICAgQW56YWhsIHVuZCBHcm9lc3NlIGRlciB1bmJyYXVjaGJhcmVuIGdyb3NzZW4KKyAgICAgICAgICAgICAgICAgICAgICAgIFNwZWljaGVyZnJhZ21lbnRlIChzbWFsbG9jLCBzbGFiYWxsb2MpCisgICAgICAgICAgICAgICAgICAtIGludCBESURfTUVNX0NIVU5LCisgICAgICAgICAgICAgICAgICAtIGludCBESURfTUVNX0NIVU5LX1NJWkUKKyAgICAgICAgICAgICAgICAgICAgICAgIEFuemFobCB1bmQgR3JvZXNzZSBrbGVpbmVyIFNwZWljaGVyYmxvZWNrZSAoY2h1bmsKKyAgICAgICAgICAgICAgICAgICAgICAgIGJsb2Nrczsgc21hbGxvYywgc2xhYmFsbG9jKQorICAgICAgICAgICAgICAgICAgLSBpbnQgRElEX01FTV9TTUFMTAorICAgICAgICAgICAgICAgICAgLSBpbnQgRElEX01FTV9TTUFMTF9TSVpFCisgICAgICAgICAgICAgICAgICAtIGludCBESURfTUVNX1NGUkVFCisgICAgICAgICAgICAgICAgICAtIGludCBESURfTUVNX1NGUkVFX1NJWkUKKyAgICAgICAgICAgICAgICAgICAgICAgIEFuemFobCB1bmQgZ3JvZXNzZSBkZXIgYWxsb3ppZXJ0ZW4gYnp3LiBmcmVpZW4KKyAgICAgICAgICAgICAgICAgICAgICAgIGtsZWluZW4gU3BlaWNoZXJibG9lY2tlIChzbWFsbG9jLCBzbGFiYWxsb2MpCisgICAgICAgICAgICAgICAgICAtIGludCBESURfTUVNX1NXQVNURUQKKyAgICAgICAgICAgICAgICAgIC0gaW50IERJRF9NRU1fU1dBU1RFRF9TSVpFCisgICAgICAgICAgICAgICAgICAgICAgICBBbnphaGwgdW5kIEdyb2Vzc2UgZGVyIHVuYnJhdWNoYmFyIGtsZWluZW4KKyAgICAgICAgICAgICAgICAgICAgICAgIFNwZWljaGVyZnJhZ21lbnRlIChzbWFsbG9jLCBzbGFiYWxsb2MpCisgICAgICAgICAgICAgICAgICAtIGludCBESURfTUVNX01JTkNfQ0FMTFMKKyAgICAgICAgICAgICAgICAgIC0gaW50IERJRF9NRU1fTUlOQ19TVUNDRVNTCisgICAgICAgICAgICAgICAgICAtIGludCBESURfTUVNX01JTkNfU0laRQorICAgICAgICAgICAgICAgICAgICAgICAgQW56YWhsIEF1ZnJ1ZmUgdm9uIG1hbGxvY19pbmNyZW1lbnQoKSwgQW56YWhsIGRlcgorICAgICAgICAgICAgICAgICAgICAgICAgZXJmb2xncmVpY2hlbiBBdWZydWZlIHVuZCBkaWUgR3JvZXNzZSBkZXMgYXVmIGRpZXNlCisgICAgICAgICAgICAgICAgICAgICAgICBBcnQgYWxsb3ppZXJ0ZW4gU3BlaWNoZXJzIChzbWFsbG9jLCBzbGFiYWxsb2MpCisgICAgICAgICAgICAgICAgICAtIGludCBESURfTUVNX1BFUk0KKyAgICAgICAgICAgICAgICAgIC0gaW50IERJRF9NRU1fUEVSTV9TSVpFCisgICAgICAgICAgICAgICAgICAgICAgICBBbnphaGwgdW5kIEdyb2Vzc2UgcGVybWFuZW50ZXIgKG5vbi1HQ2FibGUpCisgICAgICAgICAgICAgICAgICAgICAgICBBbGxva2F0aW9uZW4gKHNtYWxsb2MsIHNsYWJhbGxvYykKKyAgICAgICAgICAgICAgICAgIC0gaW50IERJRF9NRU1fQ0xJQgorICAgICAgICAgICAgICAgICAgLSBpbnQgRElEX01FTV9DTElCX1NJWkUKKyAgICAgICAgICAgICAgICAgICAgICAgIEFuemFobCB1bmQgR3JvZXNzZSBkZXIgQWxsb2thdGlvbmVuIGR1cmNoIENsaWIKKyAgICAgICAgICAgICAgICAgICAgICAgIEZ1bmt0aW9uZW4gKG51ciBzbWFsbG9jLCBzbGFiYWxsb2MgbWl0IFNCUktfT0spCisgICAgICAgICAgICAgICAgICAtIGludCBESURfTUVNX09WRVJIRUFECisgICAgICAgICAgICAgICAgICAgICAgICBPdmVyaGVhZCBmdWVyIGplZGUgQWxsb2thdGlvbiAoc21hbGxvYywgc2xhYmFsbG9jKQorICAgICAgICAgICAgICAgICAgLSBpbnQgRElEX01FTV9BTExPQ0FURUQKKyAgICAgICAgICAgICAgICAgICAgICAgIERlciBTcGVpY2hlciwgZGVyIGR1cmNoIGRpZSBTcGVpY2hlcnZlcndhbHR1bmcKKyAgICAgICAgICAgICAgICAgICAgICAgIGFsbG96aWVydCB3dXJkZSwgaW5rbHVzaXZlIGRlbiBPdmVyaGVhZCBmdWVyIGRpZQorICAgICAgICAgICAgICAgICAgICAgICAgU3BlaWNoZXJ2ZXJ3YWx0dW5nIChzbWFsbG9jLCBzbGFiYWxsb2MpCisgICAgICAgICAgICAgICAgICAtIGludCBESURfTUVNX1VTRUQKKyAgICAgICAgICAgICAgICAgICAgICAgIERlciBTcGVpY2hlciwgZGVyIGR1cmNoIGRlbiBEcml2ZXIgYmVsZWd0IGlzdCwgb2huZQorICAgICAgICAgICAgICAgICAgICAgICAgZGVuIGR1cmNoIGRpZSBTcGVpY2hlcnZlcndhbHR1bmcgYmVsZWd0ZW4gU3BlaWNoZXIKKyAgICAgICAgICAgICAgICAgICAgICAgIChzbWFsbG9jLCBzbGFiYWxsb2MpCisgICAgICAgICAgICAgICAgICAtIGludCBESURfTUVNX1RPVEFMX1VOVVNFRAorICAgICAgICAgICAgICAgICAgICAgICAgRGVyIFNwZWljaGVyLCBkZXIgdm9tIFN5c3RlbSB6dXIgVmVyZnVlZ3VuZyBnZXN0ZWxsdCwKKyAgICAgICAgICAgICAgICAgICAgICAgIGFiZXIgdm9tIFRyZWliZXIgbmljaHQgYmVub2V0aWd0IHdpcmQuCisgICAgICAgICAgICAgICAgICAtIGludCBESURfTUVNX0FWTF9OT0RFUyAgICAgICAgICAoc21hbGxvYywgc2xhYmFsbG9jKQorICAgICAgICAgICAgICAgICAgICAgICAgQW56YWhsIGRlciBBVkwtS25vdGVuLCBkaWUgenVyIFZlcndhbHR1bmcgZGVyCisgICAgICAgICAgICAgICAgICAgICAgICBmcmVpZW4gZ3Jvc3NlbiBTcGVpY2hlcmJsb2Vja2UgdmVyd2VuZGV0IHdlcmRlbgorICAgICAgICAgICAgICAgICAgICAgICAgKG51ciBzbWFsbG9jKS4gRGllc2VyIFdlcnQga2FubiBpbiBadWt1bmZ0CisgICAgICAgICAgICAgICAgICAgICAgICB3aWVkZXIgdmVyc2Nod2luZGVuLgorICAgICAgICAgICAgICAgICAgLSBtaXhlZCAqIERJRF9NRU1fRVhUX1NUQVRJU1RJQ1MgKHNtYWxsb2MsIHNsYWJhbGxvYykKKyAgICAgICAgICAgICAgICAgICAgICAgIERldGFpbGxpZXJ0ZSBTdGF0aXN0aWtlbiBkZXMgQWxsb2thdG9ycyBzb2Zlcm4KKyAgICAgICAgICAgICAgICAgICAgICAgIGRpZXNlIGFrdGl2aWVydCB3dXJkZW47IDAgYW5kZXJlbmZhbGxzLgorCisgICAgICAgICAgICAgICAgICAgICAgICBEaWVzZXIgV2VydCBrYW5uIGluIFp1a3VuZnQgd2llZGVyIHZlcnNjaHdpbmRlbi4KKworICAgICAgICAgICAgICAgICAgICAgICAgRGFzIEFycmF5IGVudGhhZWx0IE5VTSsyIEVpbnRyYWVnZSwgd29iZWkgTlVNCisgICAgICAgICAgICAgICAgICAgICAgICBBbnphaGwgZGVyIHZlcnNjaGllZGVuZW4gJ2tsZWluZW4nCisgICAgICAgICAgICAgICAgICAgICAgICBCbG9ja2dyb2Vzc2VuIGlzdC4gRWludHJhZyBbTlVNXSBiZXNjaHJlaWJ0CisgICAgICAgICAgICAgICAgICAgICAgICBkaWUgdWViZXJncm9zc2VuICdrbGVpbmVuJyBCbG9lY2tlLCBFaW50cmFnCisgICAgICAgICAgICAgICAgICAgICAgICBbTlVNKzFdIGJlc2NocmVpYnQgc3VtbWFyaXNjaCBkaWUgJ2dyb3NzZW4nCisgICAgICAgICAgICAgICAgICAgICAgICBCbG9lY2tlLiBKZWRlciBFaW50cmFnIGlzdCBlaW4gQXJyYXkgbWl0CisgICAgICAgICAgICAgICAgICAgICAgICBkaWVzZW4gRmVsZGVybjoKKworICAgICAgICAgICAgICAgICAgICAgICAgaW50IERJRF9NRU1fRVNfTUFYX0FMTE9DOgorICAgICAgICAgICAgICAgICAgICAgICAgICBNYXhpbWFsZSBBbnphaGwgYWxsb2tpZXJ0ZXIgQmxvZWNrZSBkaWVzZXIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgR3JvZXNzZS4KKworICAgICAgICAgICAgICAgICAgICAgICAgaW50IERJRF9NRU1fRVNfQ1VSX0FMTE9DOgorICAgICAgICAgICAgICAgICAgICAgICAgICBEZXJ6ZWl0aWdlIEFuemFobCBhbGxva2llcnRlciBCbG9lY2tlIGRpZXNlcgorICAgICAgICAgICAgICAgICAgICAgICAgICBHcm9lc3NlLgorICAgICAgICAgICAgICAgICAgICAgICAgICBDdXJyZW50IG51bWJlciBvZiBhbGxvY2F0ZWQgYmxvY2tzIG9mIHRoaXMgc2l6ZS4KKworICAgICAgICAgICAgICAgICAgICAgICAgaW50IERJRF9NRU1fRVNfTUFYX0ZSRUU6CisgICAgICAgICAgICAgICAgICAgICAgICAgIE1heGltYWxlIEFuemFobCBmcmVpZXIgQmxvZWNrZSBkaWVzZXIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgR3JvZXNzZS4KKworICAgICAgICAgICAgICAgICAgICAgICAgaW50IERJRF9NRU1fRVNfQ1VSX0ZSRUU6CisgICAgICAgICAgICAgICAgICAgICAgICAgIERlcnplaXRpZ2UgQW56YWhsIGZyZWllciBCbG9lY2tlIGRpZXNlcgorICAgICAgICAgICAgICAgICAgICAgICAgICBHcm9lc3NlLgorCisgICAgICAgICAgICAgICAgICAgICAgICBmbG9hdCBESURfTUVNX0VTX0FWR19YQUxMT0M6CisgICAgICAgICAgICAgICAgICAgICAgICAgIER1cmNoc2Nobml0dGxpY2hlIFphaGwgdm9uIEFsbG9rYXRpb25lbiBwcm8KKyAgICAgICAgICAgICAgICAgICAgICAgICAgU2VrdW5kZS4KKworICAgICAgICAgICAgICAgICAgICAgICAgZmxvYXQgRElEX01FTV9FU19BVkdfWEZSRUU6CisgICAgICAgICAgICAgICAgICAgICAgICAgIER1cmNoc2Nobml0dGxpY2hlIFphaGwgdm9uIERlYWxsb2thdGlvbmVuIHBybworICAgICAgICAgICAgICAgICAgICAgICAgICBTZWt1bmRlLgorCisgICAgICAgICAgICAgICAgICAgICAgRGllIER1cmNoc2Nobml0dHNzdGF0aXN0aWtlbiBzY2hsaWVzc2VuIGludGVybmUKKyAgICAgICAgICAgICAgICAgICAgICBVbXNvcnRpZXJ1bmdlbiBkZXIgQmxvY2tsaXN0ZW4gbmljaHQgZWluLgorCisKKyAgICAgICAgRElORk9fVFJBQ0UgICAgKDcpOiBMaWVmZXJ0IGRpZSAndHJhY2UnIEluZm9ybWF0aW9uIGF1cyBkZW0KKyAgICAgICAgICAgIENhbGwgU3RhY2sgZW50c3ByZWNoZW5kIGRlciBTcGV6aWZpa2F0aW9uIGluIDxhcmcyPi4gRGFzIFJlc3VsdGF0CisgICAgICAgICAgICBpc3QgZW50d2VkZXIgZWluIEFycmF5IChkZXNzZW4gRm9ybWF0IG5hY2hzdGVoZW5kIGVybGFldXRlcnQgaXN0KQorICAgICAgICAgICAgb2RlciBlaW4gZHJ1Y2tiYXJlciBTdHJpbmcuIFdpcmQgPGFyZzI+IHdlZ2dlbGFzZW4gZW50c3ByaWNodAorICAgICAgICAgICAgZGllcyBESVRfQ1VSUkVOVC4KKworICAgICAgICAgICAgPGFyZzI+ID09IERJVF9DVVJSRU5UICgwKTogTW9tZW50YW5lciBDYWxsIFRyYWNlCisgICAgICAgICAgICAgICAgICAgPT0gRElUX0VSUk9SICAgKDEpOiBMZXR6dGVyIEZlaGxlciBUcmFjZSAoY2F1Z2h0IG9kZXIKKyAgICAgICAgICAgICAgICAgICAgICAgIHVuY2F1Z2h0KQorICAgICAgICAgICAgICAgICAgID09IERJVF9VTkNBVUdIVF9FUlJPUiAoMik6IExldHplciBGZWhsZXIgVHJhY2UsIGRlciBuaWNodAorICAgICAgICAgICAgICAgICAgICAgICAgZ2VmYW5nZW4gd2VyZGVuIGtvbm50ZSAodW5jYXVnaHQpCisKKyAgICAgICAgICAgIERpZSBJbmZvcm1hdGlvbiB3aXJkIGluIEZvcm0gZWluZXMgQXJyYXkgdWViZXJnZWJlbi4KKworICAgICAgICAgICAgRGllIEZlaGxlcnRyYWNlcyB3ZXJkZW4gbnVyIGdlYWVuZGVydCwgd2VubiBlaW4gZW50c3ByZWNoZW5kZXIKKyAgICAgICAgICAgIEZlaGxlciBhdWZ0cml0dDsgYXVzc2VyZGVtIHdlcmRlbiBzaWUgYmVpIGVpbmVtIEdDIChHYXJiYWdlCisgICAgICAgICAgICBDb2xsZWN0aW9uKSBnZWxvZXNjaHQuIE5hY2ggZWluZW0gRmVobGVyLCBkZXIgbmljaHQgZ2VmYW5nZW4KKyAgICAgICAgICAgIHdlcmRlbiBrb25udGUgKHVuY2F1Z2h0IGVycm9yKSwgd2Vpc2VuIGJlaWRlIFRyYWNlcyBhdWYgZGFzCisgICAgICAgICAgICBnbGVpY2hlIEFycmF5LCBzb2Rhc3MgZGVyID09LU9wZXJhdG9yIGdpbHQuCisKKyAgICAgICAgICAgIFdlbm4gZGFzIEFycmF5IG1laHIgYWxzIGVpbiBFbGVtZW50IGVudGhhZWx0LCBpc3QgZGFzIGVyc3RlCisgICAgICAgICAgICBFbGVtZW50IDAgb2RlciBkZXIgTmFtZSBkZXMgT2JqZWt0cywgZGVzc2VuIGhlYXJ0X2JlYXQoKSBkZW4KKyAgICAgICAgICAgIGxhdWZlbmRlbiBaeWtsdXMgYmVnb25uZW4gaGF0OyBhbGxlIG5hY2hmb2xnZW5kZW4gRWxlbWVudGUKKyAgICAgICAgICAgIGJlemVpY2huZW4gZGVuIENhbGwgU3RhY2ssIGJlZ2lubmVuIG1pdCBkZXIgaG9lY2hzdGVuCisgICAgICAgICAgICBhdWZnZXJ1ZmVuZW4gRnVua3Rpb24uCisKKyAgICAgICAgICAgIEFsbGUgRWludHJhZWdlIGltIEFycmF5IHNpbmQgd2llZGVydW0gQXJyYXlzIG1pdCBmb2xnZW5kZW4KKyAgICAgICAgICAgIEVsZW1lbnRlbjoKKyAgICAgICAgICAgICAgLSBpbnRbVFJBQ0VfVFlQRV06IERlciBUeXAgZGVyIGF1ZnJ1ZmVuZGVuIEZ1bmt0aW9uCisgICAgICAgICAgICAgICAgICAgIFRSQUNFX1RZUEVfU1lNQk9MICgwKTogZWluIEZ1bmt0aW9uc3N5bWJvbCAoc29sbHRlIG5pY2h0CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdm9ya29tbWVuKQorICAgICAgICAgICAgICAgICAgICBUUkFDRV9UWVBFX1NFRlVOICAoMSk6IGVpbmUgc2ltdWwtZWZ1bgorICAgICAgICAgICAgICAgICAgICBUUkFDRV9UWVBFX0VGVU4gICAoMik6IGVpbmUgRWZ1biBDbG9zdXJlCisgICAgICAgICAgICAgICAgICAgIFRSQUNFX1RZUEVfTEFNQkRBICgzKTogZWluZSBsYW1iZGEgQ2xvc3VyZQorICAgICAgICAgICAgICAgICAgICBUUkFDRV9UWVBFX0xGVU4gICAoNCk6IGVpbmUgbm9ybWFsZSBMZnVuCisgICAgICAgICAgICAgIC0gaW50W1RSQUNFX05BTUVdCisgICAgICAgICAgICAgICAgICAgIF9UWVBFX0VGVU4gICAgOiBlbnR3ZWRlciBkZXIgTmFtZSBkZXIgRnVua3Rpb24gb2RlciBkZXIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIENvZGUgZWluZXIgT3BlcmF0b3ItQ2xvc3VyZQorICAgICAgICAgICAgICAgICAgICBfVFlQRV9MQU1CREEgIDogZGllIG51bWVyaXNjaGUgTGFtYmRhLUlECisgICAgICAgICAgICAgICAgICAgIF9UWVBFX0xGVU4gICAgOiBkZXIgTmFtZSBkZXIgTGZ1bgorICAgICAgICAgICAgICAtIHN0cmluZ1tUUkFDRV9QUk9HUkFNXTogIERlciBOYW1lIGRlcyBQcm9ncmFtbXMgbWl0IGRlbSBDb2RlCisgICAgICAgICAgICAgIC0gc3RyaW5nW1RSQUNFX09CSkVDVF06ICAgRGVyIE5hbWUgZGVzIE9iamVrdHMsIGZ1ZXIgZGFzIGRlcgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIENvZGUgYXVzZ2VmdWVocnQgd3VyZGUKKyAgICAgICAgICAgICAgLSBpbnRbVFJBQ0VfTE9DXToKKyAgICAgICAgICAgICAgICAgICAgX1RZUEVfTEFNQkRBICA6IERlciBPZmZzZXQgZGVzIFByb2dyYW1tcyBzZWl0IEJlZ2lubiBkZXMKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIENsb3N1cmUtQ29kZXMKKyAgICAgICAgICAgICAgICAgICAgX1RZUEVfTEZVTiAgICA6IERpZSBaZWlsZW5udW1tZXIuCisKKyAgICAgICAgICAgIDxhcmcyPiA9PSBESVRfU1RSX0NVUlJFTlQgKDMpOiBMaWVmZXJ0IEluZm9ybWF0aW9uZW4gdWViZXIgZGVuCisgICAgICAgICAgICAgICAgbW9tZW50YW5lbiBDYWxsIFRyYWNlIGFscyBkcnVja2JhcmVyIFN0cmluZy4KKworICAgICAgICAgICAgPGFyZzI+ID09IERJVF9DVVJSRU5UX0RFUFRIICg0KTogTGllZmVydCBkaWUgWmFobCBkZXIgRnJhbWVzIGF1ZgorICAgICAgICAgICAgICAgIGRlbSBDb250cm9sIFN0YWNrIChSZWt1cnNpb25zdGllZmUpLgorCisgICAgICAgIERJTkZPX0VWQUxfTlVNQkVSICg4KTogZ2lidCBkaWUgTnVtbWVyIGRlciBha3R1ZWxsZW4gQmVyZWNobnVuZworICAgICAgICAgICAgenVydWVjay4gRGllc2UgTnVtbWVyIHdpcmQgZnVlciBqZWRlbiB2b20gZHJpdmVyIGluaXRpaWVydGVuCisgICAgICAgICAgICBBdWZydWYgdm9uIExQQy1Db2RlIGVyaG9laHQsIGFsc28gYmVpIEF1ZnJ1ZiB2b246CisgICAgICAgICAgICAgIC0gS29tbWFuZG9zIChkaWUgcGVyIGFkZF9hY3Rpb24gaGluenVnZWZ1ZWd0IHd1cmRlbikKKyAgICAgICAgICAgICAgLSBoZWFydF9iZWF0LCByZXNldCwgY2xlYW5fdXAKKyAgICAgICAgICAgICAgLSBBdWZydWZlIGR1cmNoIGNhbGxfb3V0IG9kZXIgaW5wdXRfdG8KKyAgICAgICAgICAgICAgLSBtYXN0ZXIgYXBwbGllcywgZGllIGF1ZiBleHRlcm5lIEVyZWlnbmlzc2UgenVydWVja2dlaGVuCisgICAgICAgICAgICAgIC0gZHJpdmVyIGhvb2tzIGdlbmF1c28KKyAgICAgICAgICAgICAgLSBSdWVja3J1ZmVuIHZvbiBzZW5kX2VycQorICAgICAgICAgICAgICAtIGxvZ29uIGluIGludGVyYWt0aXZlbiBPYmpla3RlbgorCisgICAgICAgICAgIERpZXNlciBaYWVobGVyIGthbm4gei5CLiBiZW51dHp0IHdlcmRlbiwgdW0genUgdmVyaGluZGVybiwgZGFzcworICAgICAgICAgICBiZXN0aW1tdGUgQWt0aW9uZW4gbWVocmZhY2ggaW5uZXJoYWxiIGVpbmVzIGhlYXJ0X2JlYXQoKQorICAgICAgICAgICBhdXNnZWZ1ZWhydCB3ZXJkZW4uIEVpbmUgYW5kZXJlIEFud2VuZHVuZ3Ntb2VnbGljaGtlaXQgc2luZAorICAgICAgICAgICBaZWl0c3RlbXBlbCB6dXIgU29ydGllcnVuZyB6dXIgU29ydGllcnVuZyB2b24gRXJlaWduaXNzZW4uCisKKyAgICAgICAgICAgRXMgaXN0IHp1IGJlYWNodGVuLCBkYXNzIGRlciBaYWVobGVyIHVlYmVybGF1ZmVuIGthbm4sIGluc2Jlc29uZGVyZQorICAgICAgICAgICBhdWYgMzItYml0LVN5c3RlbWVuLiBFciBrYW5uIGRlbXp1Zm9sZ2UgYXVjaCBuZWdhdGl2IHdlcmRlbi4KKworCitHRVNDSElDSFRFCisgICAgICAgIFNlaXQgMy4yLjcgbGllZmVydCBESU5GT19TVEFUVVMgZGllIEluZm9ybWF0aW9uIHp1cnVlY2ssIGFuc3RhdHQgc2llCisgICAgICAgICAgICBudXIgYXVzenVnZWJlbi4KKyAgICAgICAgRElORk9fRFVNUCB3dXJkZSBpbiAzLjIuNyBlaW5nZWZ1ZWhydC4KKyAgICAgICAgTERNdWQgMy4yLjggZnVlZ3RlIGRpZSBEYXRlbmdyb2Vzc2UgZGVzIE9iamVrdHMgenVtIFJlc3VsdGF0IHZvbgorICAgICAgICAgICAgRElORk9fTUVNT1JZIGhpbnp1LCBhdXNzZXJkZW0gZGllIERJTkZPX0RBVEEgQWJmcmFnZSB1bmQgZGllCisgICAgICAgICAgICB2ZXJzY2hpZWRlbmVuIERJRF9NRU1fV0FTVEVEIFN0YXRpc3Rpa2VuLgorICAgICAgICBMRE11ZCAzLjIuOSBmdWVndGUgRElORk9fVFJBQ0UsIGRhcyBJbmRpemllcnVuZ3MtRmVhdHVyZSB2b24KKyAgICAgICAgICAgIERJTkZPX0RBVEEsIGRlbiAnZGVzdHJ1Y3RlZCctRElORk9fRFVNUCwgZGllIERJRF9NRU1fQ0xJQiosCisgICAgICAgICAgICBkaWUgRElEX01FTV9QRVJNKiwgYXVzc2VyZGVtIERJRF9TVF9PQkpFQ1RTX05FV0xZX0RFU1QsCisgICAgICAgICAgICBESURfU1RfT0JKRUNUU19ERVNULCBESURfTUVNX09WRVJIRUFELCBESURfTUVNX0FMTE9DQVRFRCwKKyAgICAgICAgICAgIERJRF9NRU1fVVNFRCwgRElEX01FTV9UT1RBTF9VTlVTRUQsIERJRF9TVF9IQkVBVF9DQUxMU19UT1RBTAorICAgICAgICAgICAgdW5kIGRpZSBmb3VuZCAvIGFkZGVkIC8gY29sbGlzaW9uIFN0cmluZ3N0YXRpc3Rpa2VuLgorICAgICAgICBMRE11ZCAzLjIuMTAgZnVlZ3RlIGRpZSBFcnpldWd1bmdzemVpdCB6dSBESU5GT19EVU1QOiJvYmplY3RzIiBoaW56dSwKKyAgICAgICAgICAgIGVudGZlcm50ZSBESURfTUVNX1VOVVNFRCBhdXMgRElORk9fREFUQTpESURfTUVNT1JZLCBmdWVndGUKKyAgICAgICAgICAgIERJTkZPX0RBVEE6RElEX1NUQVRVUyBESURfU1RfQk9PVF9USU1FLCBESURfU1RfTUJfRklMRSB1bmQKKyAgICAgICAgICAgIERJRF9TVF9NQl9TV0FQIGhpbnp1IHVuZCBlbnRmZXJudGUgRElEX1NUX0NBTExPVVRfU0xPVFMgZGFyYXVzLAorICAgICAgICAgICAgZnVlZ3RlIGRhcyBkcml0dGUgQXJndW1lbnQgenUgRElORk9fT0JKTElTVCBoaW56dSwgdW5kIHZlcmFlbmRlcnRlCisgICAgICAgICAgICBkaWUgQmVkZXV0dW5nIHZvbiBESURfU1RfQ0FMTE9VVF9TSVpFIHVuZCBESURfU1RfSEJFQVRfU0laRQorICAgICAgICAgICAgYnp3LiBfU0xPVFMuCisgICAgICAgIExETXVkIDMuMy41MzMgZnVlZ3RlIERJRF9NRU1fQVZMX05PREVTIHp1IERJTkZPX0RBVEE6RElEX01FTU9SWQorICAgICAgICAgICAgaGluenUuCisgICAgICAgIExETXVkIDMuMy42MDMgZnVlZ3RlIERJRF9NRU1fRVhUX1NUQVRJU1RJQ1MgenUgRElORk9fREFUQTpESURfTUVNT1JZCisgICAgICAgICAgICBoaW56dS4KKyAgICAgICAgTERNdWQgMy4zLjcxOCBmdWVndGUgRElUX0NVUlJFTlRfREVQVEggdG8gRElORk9fVFJBQ0UgaGluenUuCisgICAgICAgIExETXVkIDMuMy43MTkgZnVlZ3RlIERJTkZPX0VWQUxfTlVNQkVSIGhpbnp1LgorCitTSUVIRSBBVUNICisgICAgICAgIHRyYWNlKEUpLCB0cmFjZXByZWZpeChFKSwgbWFsbG9jKEQpLCBzdGF0dXMoRCksIGR1bXBhbGxvYmooRCkKZGlmZiAtLWdpdCBhL2RvYy9zZWZ1bi9kZWVwX3ByZXNlbnQgYi9kb2Mvc2VmdW4vZGVlcF9wcmVzZW50Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjc4YzA5ODMKLS0tIC9kZXYvbnVsbAorKysgYi9kb2Mvc2VmdW4vZGVlcF9wcmVzZW50CkBAIC0wLDAgKzEsMjEgQEAKK0ZVTktUSU9OOgorICAgICAgICBvYmplY3QgZGVlcF9wcmVzZW50KHN0cmluZyB3aGF0KQorICAgICAgICBvYmplY3QgZGVlcF9wcmVzZW50KG9iamVjdCB3aGF0KQorICAgICAgICBvYmplY3QgZGVlcF9wcmVzZW50KHN0cmluZyB3aGF0LCBvYmplY3Qgb2IpCisgICAgICAgIG9iamVjdCBkZWVwX3ByZXNlbnQob2JqZWN0IHdoYXQsIG9iamVjdCBvYikKKworQVJHVU1FTlRFOgorICAgICAgICB3aGF0IC0gT2JqZWt0IG9kZXIgSUQgZGVzIE9iamVrdGVzLCBuYWNoIGRlbSBnZXN1Y2h0IHdlcmRlbiBzb2xsCisgICAgICAgIG9iIC0gT2JqZWt0LCBpbiBkZW0gZ2VzdWNodCB3ZXJkZW4gc29sbAorCitCRVNDSFJFSUJVTkc6CisgICAgICAgIGRlZXBfcHJlc2VudCgpIHN1Y2h0IGluIHRoaXNfb2JqZWN0KCkgKG9kZXIgaW4gb2IsIGZhbGxzIGFuZ2VnZWJlbikKKyAgICAgICAgbmFjaCBkZW0gT2JqZWt0IHdoYXQgb2RlciBlaW5lbSBPYmpla3QsIGRhcyBhdWYgd2hhdCBhbnNwcmljaHQuCisgICAgICAgIEltIEdlZ2Vuc2F0eiB6dSBwcmVzZW50KCkgd2lyZCBhYmVyIGRhcyBrb21wbGV0dGUgSW52ZW50b3J5IGJlcnVlY2stCisgICAgICAgIHNpY2h0aWd0IChhbHNvIHpCLiBhdWNoIGRlciBJbmhhbHQgdm9uIEJldXRlbG4pLgorCitSVUVDS0dBQkVXRVJUOgorICAgICAgICBkYXMgZ2VmdW5kZW5lIE9iamVrdCBvZGVyIDAKKworU0lFSEUgQVVDSDoKKyAgICAgICAgcHJlc2VudChFKQpkaWZmIC0tZ2l0IGEvZG9jL3NlZnVuL2R0aW1lIGIvZG9jL3NlZnVuL2R0aW1lCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjY2MjQ2NDIKLS0tIC9kZXYvbnVsbAorKysgYi9kb2Mvc2VmdW4vZHRpbWUKQEAgLTAsMCArMSwyNCBAQAorRlVOS1RJT046CisJc3RyaW5nIGR0aW1lKGludCB0aW1lKQorCitBUkdVTUVOVEU6CisJdGltZSAtIFVtenV3YW5kZWxuZGVzIERhdHVtIGluIFNla3VuZGVuIHNlaXQgMS4xLjE5NzAsIDA6MDowaAorCitCRVNDSFJFSUJVTkc6CisJV2FuZGVsdCBkYXMgRGF0dW0gdGltZSBpbiBlaW5lbiBkZXV0c2Noc3ByYWNoaWdlbiBTdHJpbmcgZGVyIEZvcm0KKwkiPHd0YWc+LCA8dGFnPi4gPG1vbj4gPGphaHI+LCA8c3RkPjo8bWluPjo8c2VrPiIgdW0uCisKK1JVRUNLR0FCRVdFUlQ6CisJRGVyIFN0cmluZyBtaXQgZGVtIHVtZ2V3YW5kZWx0ZW4gRGF0dW0uCisKK0JFTUVSS1VOR0VOOgorCUFscyB0aW1lIHdpcmQgbWVpc3RlbnMgZGFzIEVyZ2VibmlzIHZvbiB0aW1lKCkgYmVudXR6dC4KKyAgc3RyZnRpbWUoKSBzdGVsbHQgZWluZSB3ZXNlbnRsaWNoIGZsZXhpYmxlcmUgTW9lZ2xpY2hrZWl0IGRlciBBdXNnYWJlIHZvbgorICBaZWl0ZW4gZGFyLgorCitCRUlTUElFTEU6CisJZGF0dW0gPSBkdGltZSh0aW1lKCkpOworICAgICAgICA9PiBkYXR1bSA9ICJNb24sICA2LiBNYXIgMTk5NCwgMTU6MDA6MDgiCisKK1NJRUhFIEFVQ0g6CisJY3RpbWUoRSksIHN0cmZ0aW1lKEUpLCB0aW1lKEUpCmRpZmYgLS1naXQgYS9kb2Mvc2VmdW4vZHVtcF9uZXRkZWFkIGIvZG9jL3NlZnVuL2R1bXBfbmV0ZGVhZApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5jNzNiMmMwCi0tLSAvZGV2L251bGwKKysrIGIvZG9jL3NlZnVuL2R1bXBfbmV0ZGVhZApAQCAtMCwwICsxLDEzIEBACitGVU5LVElPTjoKKyAgICAgICAgc3RyaW5nICpkdW1wX25ldGRlYWQoKQorCitCRVNDSFJFSUJVTkc6CisgICAgICAgIEdpYnQgZWluIEFycmF5IG1pdCBkZW4gTmFtZW4gYWxsZXIgenVyIFplaXQgbmV0enRvdGVuIFNwaWVsZXIKKyAgICAgICAgenVydWVjay4KKworUlVFQ0tHQUJFV0VSVDoKKyAgICAgICAgRWluIFN0cmluZ2FycmF5IG1pdCBkZW4gTmFtZW4gZGVyIG5ldHp0b3RlbiBTcGllbGVyLgorICAgICAgICBnaWJ0LgorCitTSUVIRSBBVUNIOgorICAgICAgICBmaW5kX25ldGRlYWQoRSkKZGlmZiAtLWdpdCBhL2RvYy9zZWZ1bi9lbmFibGVfY29tbWFuZHMgYi9kb2Mvc2VmdW4vZW5hYmxlX2NvbW1hbmRzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjY1MDhiNWYKLS0tIC9kZXYvbnVsbAorKysgYi9kb2Mvc2VmdW4vZW5hYmxlX2NvbW1hbmRzCkBAIC0wLDAgKzEsMjYgQEAKK1NZTk9QU0lTCisgICAgICAgIHZvaWQgZW5hYmxlX2NvbW1hbmRzKCk7CisKK0JFU0NIUkVJQlVORworICAgICAgICBFcmxhdWJ0IGRlbSBPYmpla3QsIEtvbW1hbmRvcyB6dSB2ZXJ3ZW5kZW4sIGRpZSBub3JtYWxlcndlaXNlIFVzZXJuCisgICAgICAgIHp1Z2FlbmdsaWNoIHNpbmQuIERlciBBdWZydWYgbWFya2llcnQgZGFzIE9iamVrdCBhbHMgImxpdmluZyIuIERpZXMKKyAgICAgICAgd2lyZCBmdWVyIFNwaWVsZXIgdW5kIGFsbGUgdm9uIC9zdGQvbnBjIGFiZ2VsZWl0ZXRlbiBPYmpla3RlCisgICAgICAgIGJlcmVpdHMgdm9uIGRlciBNdWRsaWIgZXJsZWRpZ3QgdW5kIHNvbGx0ZSBuaWNodCBub2NobWFscyBnZW1hY2h0CisgICAgICAgIHdlcmRlbi4KKworICAgICAgICBEaWVzZSBGdW5rdGlvbiBkYXJmIG5pY2h0IGF1c3NlcmhhbGIgdm9uIGNyZWF0ZSgpIChvZGVyIHJlc2V0KDApIGltCisgICAgICAgIENvbXBhdC1Nb2R1cykgYXVmZ2VydWZlbiB3ZXJkZW4sIHdlaWwgZGVyIEtvbW1hbmRvZ2ViZXIgYXVmIGRpZXNlcworICAgICAgICBPYmpla3QgZ2VzZXR6dCB3aXJkLgorCitCRUlTUElFTAorICAgICAgICB2b2lkIGNyZWF0ZSgpCisgICAgICAgIHsKKyAgICAgICAgICAgIGVuYWJsZV9jb21tYW5kcygpOworICAgICAgICAgICAgLi4uCisgICAgICAgIH0KKworICAgICAgICBEaWVzIG1hcmtpZXJ0IGRhcyBPYmpla3QgYWxzICJsaXZpbmciLgorCitTSUVIRSBBVUNICisgICAgICAgIGNvbW1hbmQoRSksIGxpdmluZyhFKSwgZGlzYWJsZV9jb21tYW5kcyhFKSwgbmF0aXZlKEMpLCBob29rcyhDKQorICAgICAgICBzZXRfbGl2aW5nX25hbWUoRSkKZGlmZiAtLWdpdCBhL2RvYy9zZWZ1bi9maWxlX3RpbWUgYi9kb2Mvc2VmdW4vZmlsZV90aW1lCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjZjMjRiYWEKLS0tIC9kZXYvbnVsbAorKysgYi9kb2Mvc2VmdW4vZmlsZV90aW1lCkBAIC0wLDAgKzEsNSBAQAorRlVOS1RJT046CisJaW50IGZpbGVfdGltZShzdHJpbmcgZmlsZW5hbWUpOworCitMaWVmZXJ0IGRlbiBaZWl0cHVua3QgZGVyIGxldHp0ZW4gTW9kaWZpa2F0aW9uIGRlcyBGaWxlcyBpbiBTZWt1bmRlbiBzZWl0CitkZW0gMS4xLjE5NzAsIDA6MDAuIEthbm4gcGVyIGN0aW1lKCkgaW4gZWluIGxlc2JhcmVzIEZvcm1hdCBnZWJyYWNodCB3ZXJkZW4uCmRpZmYgLS1naXQgYS9kb2Mvc2VmdW4vZmluZF9saXZpbmcgYi9kb2Mvc2VmdW4vZmluZF9saXZpbmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMTA2ZGQ2MwotLS0gL2Rldi9udWxsCisrKyBiL2RvYy9zZWZ1bi9maW5kX2xpdmluZwpAQCAtMCwwICsxLDIyIEBACitTWU5PUFNJUzoKKyAgICAgICAgb2JqZWN0IGZpbmRfbGl2aW5nKHN0cmluZyBzdHIpCisKK0JFU0NIUkVJQlVORzoKKyAgICAgICAgRmluZGV0IGRhcyBlcnN0ZSAibGViZW5kZSIgT2JqZWt0LCB3ZWxjaGVzIHBlciBzZXRfbGl2aW5nX25hbWUoKSBkZW4KKyAgICAgICAgTmFtZW4gPHN0cj4gc2V0enRlLgorICAgICAgICAKKyAgICAgICAgRGFzIE9iamVrdCBtdXNzIGF1c3NlcmRlbSBwZXIgZW5hYmxlX2NvbW1hbmRzKCkgYWxzIExlYmV3ZXNlbgorICAgICAgICBtYXJraWVydCB3b3JkZW4gc2Vpbi4gRGllcyBpc3QgZnVlciBhbGxlIHZvbiAvc3RkL25wYyBlcmJlbmRlbiBOUENzCisgICAgICAgIF9hdXRvbWF0aXNjaF8gZGVyIEZhbGwgdW5kIHNvbGx0ZSBkYWhlciBuaWNodCBub2NobWFsIGV4cGxpeml0IGdlbWFjaHQKKyAgICAgICAgd2VyZGVuLgorCitCRUlTUElFTDoKKyAgICAgICAgb2JqZWN0IG9iOworICAgICAgICBvYiA9IGZpbmRfbGl2aW5nKCJQdWJsaWMgRW5lbXkiKTsKKworU0lFSEUgQVVDSDoKKyAgICAgICAgZmluZF9wbGF5ZXIoRSksIGVuYWJsZV9jb21tYW5kcyhFKSwgc2V0X2xpdmluZ19uYW1lKEUpCisKK0xFVFpURSBBZU5ERVJVTkc6CiswOS4xMC4yMDExLCBaZXNzdHJhCisKZGlmZiAtLWdpdCBhL2RvYy9zZWZ1bi9maW5kX2xpdmluZ3MgYi9kb2Mvc2VmdW4vZmluZF9saXZpbmdzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmNjOTIyOGYKLS0tIC9kZXYvbnVsbAorKysgYi9kb2Mvc2VmdW4vZmluZF9saXZpbmdzCkBAIC0wLDAgKzEsMjQgQEAKK0ZVTktUSU9OOgorICAgICAgICBvYmplY3QgKmZpbmRfbGl2aW5ncyhzdHJpbmcgbmFtZSkKKworQVJHVU1FTlRFOgorICAgICAgICBuYW1lIC0gZGVyIGxpdmluZ19uYW1lIGRlciBnZXN1Y2h0ZW4gTGViZXdlc2VuCisKK0JFU0NIUkVJQlVORzoKKyAgICAgICAgRGllc2UgRnVua3Rpb24gbGllZmVydCBlaW4gQXJyYXkgbWl0IGFsbGVuIExlYmV3ZXNlbiwgZGllIGRlbiBnbGVpY2hlbgorICAgICAgICBsaXZpbmdfbmFtZSBoYWJlbi4KKworUlVFQ0tHQUJFV0VSVDoKKyAgICAgICAgQXJyYXkgbWl0IGRlbiBMZWJld2VzZW4gb2RlciAwLCB3ZW5uIGVzIGtlaW4gTGViZXdlc2VuIGRpZXNlbiBOYW1lbnMKKyAgICAgICAgZ2lidC4KKworQkVJU1BJRUxFOgorICAgICAgICBvYiA9IGZpbmRfbGl2aW5ncygiaGVya3VsZXMiKTsKKyAgICAgICAgPT4gb2IgPSAoeyBbL2h1bWFuOmhlcmt1bGVzXSwgCisgICAgICAgICAgICAgICAgICAgWy9kL2luc2Vsbi93YXJnb24vbHVmdHNjaGxvc3MvbW9uL2hlcmt1bGVzXSB9KQorCitTSUVIRSBBVUNIOgorICAgICAgICBmaW5kX2xpdmluZyhFKSwgc2V0X2xpdmluZ19uYW1lKEUpLCBmaW5kX3BsYXllcihFKSwgZmluZF9uZXRkZWFkKEUpCisKK0xFVFpURSBBRU5ERVJVTkc6CisxOS4gT2t0LiAyMDE1LCBBcmF0aG9ybgpkaWZmIC0tZ2l0IGEvZG9jL3NlZnVuL2ZpbmRfbmV0ZGVhZCBiL2RvYy9zZWZ1bi9maW5kX25ldGRlYWQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZDQ0ZWU5ZQotLS0gL2Rldi9udWxsCisrKyBiL2RvYy9zZWZ1bi9maW5kX25ldGRlYWQKQEAgLTAsMCArMSwyNSBAQAorRlVOS1RJT046CisgICAgICAgIG9iamVjdCBmaW5kX25ldGRlYWQoc3RyaW5nIG5hbWUpCisKK0FSR1VNRU5URToKKyAgICAgICAgbmFtZSAtIE5hbWUgZGVzIGdlc3VjaHRlbiBTcGllbGVycworCitCRVNDSFJFSUJVTkc6CisgICAgICAgIEZhbGxzIGRlciBTcGllbGVyIG5hbWUgbmV0enRvdCBpc3QsIGxpZWZlcnQgZGllc2UgRnVua3Rpb24gZGFzIFNwaWVsZXItCisgICAgICAgIG9iamVrdCB6dXJ1ZWNrLgorCisgICAgICAgIEFremVwdGllcnQgYXVjaCBkaWUgVVVJRCBzdGF0dCBlaW5lciBVSUQuIEluIGRpZXNlbSBGYWxsIGVyZm9sZ3QgYWJlcgorICAgICAgICBudXIgZWluZSBQcnVlZnVuZywgb2IgZGllIFVJRCBkZXMgZ2VmdW5kZW5lbiBTcGllbGVycyB6dXIgYW5nZWdlYmVuZW4KKyAgICAgICAgVVVJRCBwYXNzdCAoZC5oLiAiam9mXy0xIiB3dWVyZGUgZGFubiBnZ2YuIGF1Y2ggZGFzIFNwaWVsZXJvYmpla3QgSm9mCisgICAgICAgIHp1cnVlY2tsaWVmZXJuLCB3ZW5uIGRhcyBkaWUgVVVJRCAiSm9mXzEyMzQiIGhhdCkuCisKKworUlVFQ0tHQUJFV0VSVDoKKyAgICAgICAgRGVyIG5ldHp0b3RlIFNwaWVsZXIgb2RlciAwLCBmYWxscyBlcyBrZWluZW4gTmV0enRvdGVuIGRpZXNlbiBOYW1lbnMKKyAgICAgICAgZ2lidC4KKworU0lFSEUgQVVDSDoKKyAgICAgICAgZmluZF9saXZpbmcoRSksIGZpbmRfcGxheWVyKEUpCisKK0xFVFpUIEFlTkRFUlVORzoKKzA2LjAxLjIwMDksIFplc3N0cmEKZGlmZiAtLWdpdCBhL2RvYy9zZWZ1bi9maW5kX3BsYXllciBiL2RvYy9zZWZ1bi9maW5kX3BsYXllcgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41N2M4NWYzCi0tLSAvZGV2L251bGwKKysrIGIvZG9jL3NlZnVuL2ZpbmRfcGxheWVyCkBAIC0wLDAgKzEsNDIgQEAKK0ZVTktUSU9OOgorICAgICAgICBvYmplY3QgZmluZF9wbGF5ZXIoc3RyaW5nIHVpZCkKKworQkVTQ0hSRUlCVU5HOgorICAgICAgICBGaW5kZXQgZGVuIFNwaWVsZXIgbWl0IGRlbSBOYW1lbiBiencuIGRlciBVc2VyLUlEIDx1aWQ+LgorICAgICAgICAKKyAgICAgICAgQWt6ZXB0aWVydCBhdWNoIGRpZSBVVUlEIHN0YXR0IGVpbmVyIFVJRC4gSW4gZGllc2VtIEZhbGwgZXJmb2xndCBhYmVyCisgICAgICAgIG51ciBlaW5lIFBydWVmdW5nLCBvYiBkaWUgVUlEIGRlcyBnZWZ1bmRlbmVuIFNwaWVsZXJzIHp1ciBhbmdlZ2ViZW5lbgorICAgICAgICBVVUlEIHBhc3N0IChkLmguICJqb2ZfLTEiIHd1ZXJkZSBkYW5uIGdnZi4gYXVjaCBkYXMgU3BpZWxlcm9iamVrdCBKb2YKKyAgICAgICAgenVydWVja2xpZWZlcm4sIHdlbm4gZGFzIGRpZSBVVUlEICJKb2ZfMTIzNCIgaGF0KS4KKworICAgICAgICBSdWVja2dhYmV3ZXJ0IGlzdCBkYXMgU3BpZWxlcm9iamVrdCAod2VubiBTcGllbGVyIGFud2VzZW5kKSwKKyAgICAgICAgYW5zb25zdGVuIDAuCisKK0JFSVNQSUVMOgorCisgICAgICAgIG9iamVjdCBvYjsKKyAgICAgICAgb2IgPSBmaW5kX3BsYXllcigiZGVlcHRob3VnaHQiKTsKKworICAgICAgICBpZihvYikKKyAgICAgICAgICB0ZWxsX29iamVjdChvYiwiVGFjaCBEdSFcbiIpOworCisgICAgICAgIG9kZXIgYXVjaCAKKworICAgICAgICBpZihvYiA9IGZpbmRfcGxheWVyKCJkZWVwdGhvdWdodCIpKQorICAgICAgICAgIHRlbGxfb2JqZWN0KG9iLCJUYWNoIER1IVxuIik7CisKK0FOTUVSS1VOR0VOOgorCisgICAgICAgIFZpYSBmaW5kX3BsYXllcigpIHdlcmRlbiBhdWNoIHVuc2ljaHRiYXJlIE1hZ2llciBnZWZ1bmRlbi4gSW4gCisgICAgICAgIE9iamVrdGVuLCBkaWUgZnVlciBTcGllbGVyIGdlZGFjaHQgc2luZCwgbXVzcyBkaWVzIGRhbm4gZXh0cmEKKyAgICAgICAgcGVyIEFiZnJhZ2UgYXVmIGlmKG9iLT5RdWVyeVByb3AoUF9JTlZJUykpIGdldGVzdGV0IHdlcmRlbi4KKworICAgICAgICBOZXR6dG90ZSBTcGllbGVyIHVuZCBNb25zdGVyIHdlcmRlbiBuaWNodCBnZWZ1bmRlbiBkYSBmaW5kX3BsYXllcgorICAgICAgICBkZW4gTmFtZW4gYXVzIHNldF9saXZpbmdfbmFtZSgpIHZlcndlbmRldCwgZGVyIGluIHBsYXllci5jIGdlLQorICAgICAgICBzZXR6dCB3aXJkLgorICAgICAgICAKK1NJRUhFIEFVQ0g6CisgICAgICAgIGZpbmRfbGl2aW5nKEUpLCBzZXRfbGl2aW5nX25hbWUoRSksIGZpbmRfb2JqZWN0KEUpLCBmaW5kX25ldGRlYWQoRSkKKworLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorTGV0enRlIEFlbmRlcnVuZzogMDYuMDEuMjAwOSwgWmVzc3RyYSAKZGlmZiAtLWdpdCBhL2RvYy9zZWZ1bi9nZXR1dWlkIGIvZG9jL3NlZnVuL2dldHV1aWQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNWIzNDM0MwotLS0gL2Rldi9udWxsCisrKyBiL2RvYy9zZWZ1bi9nZXR1dWlkCkBAIC0wLDAgKzEsMTcgQEAKK1NZTk9QU0lTOgorICAgIHN0cmluZyBnZXR1dWlkKG9iamVjdCBvYikKKworREVTQ1JJUFRJT046CisgICAgTGllZmVydCBlaW5lIGVpbmRldXRpZ2UgKGdldCB1bmlxdWUgdWlkKSBVSUQgZnVlciBlaW5lbiBTcGllbGVyLgorICAgIFdpcmQgenVzYW1tZW5nZXNldHp0IGF1cyBkZXIgVUlEIGRlcyBTcGllbGVycyB1bmQgc2VpbmVtCisgICAgRXJzdGxvZ2luLURhdHVtLgorCisgICAgTmFjaCBlaW5lciBTZWxic3Rsb2VzY2h1bmcgdW5kIG5ldWVtIExvZ2luIGVyaGFlbHQgZGVyIFNwaWVsZXIgZWluZQorICAgIG5ldWUgVVVJRCwgYmVpIGVpbmVyIFJlc3RhdXJpZXJ1bmcgYmVoYWVsdCBlciBzZWluZSBhbHRlIFVVSUQuCisKKyAgICBXZW5uIGRpZSBGdW5rdGlvbiBvaG5lIFBhcmFtZXRlciBhdWZnZXJ1ZmVuIHdpcmQsIHdpcmQgcGVyIERlZmF1bHQKKyAgICB0aGlzX29iamVjdCgpIGdlbm9tbWVuLgorICAgIAorCitTRUUgQUxTTzoKKyAgICAgICAgZ2V0dWlkKEUpCmRpZmYgLS1naXQgYS9kb2Mvc2VmdW4vaXNvMmFzY2lpIGIvZG9jL3NlZnVuL2lzbzJhc2NpaQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5mZTc3NTdhCi0tLSAvZGV2L251bGwKKysrIGIvZG9jL3NlZnVuL2lzbzJhc2NpaQpAQCAtMCwwICsxLDE3IEBACitGVU5LVElPTjoKKwlwdWJsaWMgc3RyaW5nIGlzbzJhc2NpaSggc3RyaW5nIHN0ciApOworCitBUkdVTUVOVEU6CisJc3RyCisJICBTdHJpbmcsIGluIHdlbGNoZW0gWmVpY2hlbiBlcnNldHp0IHdlcmRlbiBzb2xsZW4uCisKK0JFU0NIUkVJQlVORzoKKwlJbiBkZW0gU3RyaW5nIHdlcmRlbiBhbGxlIE5pY2h0LUFTQ0lJLVplaWNoZW4gZHVyY2ggQVNDSUktWmVpY2hlbgorCWVyc2V0enQsIHVuZCB6d2FyIFVtbGF1dGUgaW4gZGVyIGJla2FubnRlbiBGb3JtIHVuZCBhbGxlIGFuZGVyZW4KKwlkdXJjaCBlaW4gRnJhZ2V6ZWljaGVuLgorCitSVWVDS0dBQkVXRVJUOgorCVN0cmluZyBtaXQgQVNDSUktWmVpY2hlbi4KKworLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorTGFzdCBtb2RpZmllZDogRnJpIEp1bCAgNiAxOTozNjowOSAyMDAxIGJ5IFBhdHJ5bgpkaWZmIC0tZ2l0IGEvZG9jL3NlZnVuL2xvZ19maWxlIGIvZG9jL3NlZnVuL2xvZ19maWxlCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmNmN2UwM2IKLS0tIC9kZXYvbnVsbAorKysgYi9kb2Mvc2VmdW4vbG9nX2ZpbGUKQEAgLTAsMCArMSwzMSBAQAorRlVOS1RJT046CisJaW50IGxvZ19maWxlKHN0cmluZyBmaWxlLCBzdHJpbmcgdGV4dCkKKyAgaW50IGxvZ19maWxlKHN0cmluZyBmaWxlLCBzdHJpbmcgdGV4dCwgaW50IHNpemVfdG9fYnJlYWspCisKK0FSR1VNRU5URToKKwlmaWxlIC0gTmFtZSBkZXIgRGF0ZWksIGluIGRpZSBnZXNjaHJpZWJlbiB3ZXJkZW4gc29sbAorCXRleHQgLSBEZXIgVGV4dCwgZGVyIGdlc2NocmllYmVuIHdlcmRlbiBzb2xsCisJc2l6ZV90b19icmVhayAtIEdyb2Vzc2UsIGFiIGRlciBlaW4gbmV1ZXMgRmlsZSBiZWdvbm5lbiB3aXJkIChvcHRpb25hbCkKKworQkVTQ0hSRUlCVU5HOgorCWxvZ19maWxlIHNjaHJlaWJ0IGRlbiBUZXh0IHRleHQgaW4gZGllIERhdGVpIC9sb2cvZmlsZS4KKworUlVFQ0tHQUJFV0VSVDoKKwkxIGJlaSBFcmZvbGcgb2RlciAwLCBmYWxscyBlaW4gRmVobGVyIGJlaW0gU2NocmVpYmVuIGF1ZnRyYXQuCisKK0JFTUVSS1VOR0VOOgorCVdlbm4gZGllIEdyb2Vzc2Ugdm9uIGZpbGUgdm9yIGRlbSBTY2hyZWliZW4gNTAwMDAgQnl0ZXMgdWViZXJzY2hyZWl0ZXQsCisJd2lyZCBzaWUgaW4gZmlsZS5vbGQgdW1iZW5hbm50LiBFaW5lIHNjaG9uIHZvcmhhbmRlbmUgRGF0ZWkgZmlsZS5vbGQKKwl3aXJkIGRhYmVpIGdlbG9lc2NodC4gRGVyIFRleHQgd2lyZCBuYWNoIGRlbSBVbWJlbmVubmVuIGdlc2NocmllYmVuLgorCVdpcmQgJ3NpemVfdG9fYnJlYWsnIGFuZ2VnZWJlbiB1bmQgaXN0IGRpZXMgPiAwLCB3aXJkIGRpZXNlciBXZXJ0IChpbiAKKwlCeXRlcykgc3RhdHQgZGVyIDUwMDAwIEJ5dGVzIHp1bSBSb3RpZXJlbiBkZXMgTG9nZmlsZXMgYmVudXR6dC4KKworQkVJU1BJRUxFOgorCWxvZ19maWxlKCAicmVwb3J0L3dhcmdvbi5yZXAiLCAiVFlQTyB2b24gYmxhIGluIGJsdWJiOlxudGVzdFxuIik7CisJSW4gL2xvZy9yZXBvcnQvd2FyZ29uLnJlcCBmaW5kZSBpY2ggbnVuIGRpZSBuZXVlc3RlIFR5cG9tZWxkdW5nLi4uIDspCisKK1NJRUhFIEFVQ0g6CisJd3JpdGVfZmlsZShFKQorCiswOS4wNi4yMDE0LCBaZXNzdHJhCisKZGlmZiAtLWdpdCBhL2RvYy9zZWZ1bi9sb3dlcmNoYXIgYi9kb2Mvc2VmdW4vbG93ZXJjaGFyCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjBlYzYyYmYKLS0tIC9kZXYvbnVsbAorKysgYi9kb2Mvc2VmdW4vbG93ZXJjaGFyCkBAIC0wLDAgKzEsMjAgQEAKK0ZVTktUSU9OOgorCWludCBsb3dlcmNoYXIoaW50IGNoYXIpCisKK0FSR1VNRU5URToKKwljaGFyIC0gRGFzIHVtenV3YW5kZWxuZGUgWmVpY2hlbgorCitCRVNDSFJFSUJVTkc6CisJV2VubiBjaGFyIGVpbiBHcm9zc2J1Y2hzdGFiZSBpc3QsIHNvIHdpcmQgZXMgaW4gZWluZW4gS2xlaW5idWNoc3RhYmVuCisJdW1nZXdhbmRlbHQuIEFuZGVyZSBaZWljaGVuIHdlcmRlbiB2b24gZGllc2VyIEZ1bmt0aW9uIG5pY2h0IGJlZWluLQorICAgICAgICBmbHVzc3QuCisKK1JVRUNLR0FCRVdFUlQ6CisJRGFzIHVtZ2V3YW5kZWx0ZSBaZWljaGVuLgorCitCRUlTUElFTEU6CisJcHJpbnRmKCIlY1xuIiwgbG93ZXJjaGFyKCdBJykpOyA9PiBhCisJcHJpbnRmKCIlY1xuIiwgbG93ZXJjaGFyKCcxJykpOyA9PiAxCisKK1NJRUhFIEFVQ0g6CisJbG93ZXJfY2FzZShFKSwgbG93ZXJzdHJpbmcoRSksIHVwcGVyc3RyaW5nKEUpLCBjYXBpdGFsaXplKEUpCmRpZmYgLS1naXQgYS9kb2Mvc2VmdW4vbG93ZXJzdHJpbmcgYi9kb2Mvc2VmdW4vbG93ZXJzdHJpbmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMzA3NDhmYwotLS0gL2Rldi9udWxsCisrKyBiL2RvYy9zZWZ1bi9sb3dlcnN0cmluZwpAQCAtMCwwICsxLDIwIEBACitGVU5LVElPTjoKKwlzdHJpbmcgbG93ZXJzdHJpbmcoc3RyaW5nIHN0cikKKworQVJHVU1FTlRFOgorCXN0ciAtIERlciB1bXp1d2FuZGVsbmRlIFN0cmluZy4KKworQkVTQ0hSRUlCVU5HOgorCUFsbGUgR3Jvc3NidWNoc3RhYmVuIGluIHN0ciB3ZXJkZW4gaW4gS2xlaW5idWNoc3RhYmVuIHVtZ2V3YW5kZWx0LgorCitSVUVDS0dBQkVXRVJUOgorCURlciB1bWdld2FuZGVsdGUgU3RyaW5nLgorCitCRU1FUktVTkdFTjoKKwlsb3dlcnN0cmluZyBpc3QgbWl0IGxvd2VyX2Nhc2UgaWRlbnRpc2NoIQorCitCRUlTUElFTEU6CisJcyA9IGxvd2Vyc3RyaW5nKCJTbywgTWNMYXVkLi4uXG4iKTsgPT4gcyA9ICJzbywgbWNsYXVkLi4uXG4iCisKK1NJRUhFIEFVQ0g6CisJbG93ZXJfY2FzZShFKSwgbG93ZXJjaGFyKEUpLCB1cHBlcnN0cmluZyhFKSwgY2FwaXRhbGl6ZShFKQpkaWZmIC0tZ2l0IGEvZG9jL3NlZnVuL21fY29weV9kZWxldGUgYi9kb2Mvc2VmdW4vbV9jb3B5X2RlbGV0ZQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5jYjFjOTdiCi0tLSAvZGV2L251bGwKKysrIGIvZG9jL3NlZnVuL21fY29weV9kZWxldGUKQEAgLTAsMCArMSw0MyBAQAorRlVOS1RJT046CisJbWFwcGluZyBtX2NvcHlfZGVsZXRlKG1hcHBpbmcgbWFwLCBtaXhlZCBrZXkpCisKK0FSR1VNRU5URToKKwltYXAgLSBkYXMgTWFwcGluZywgYXVzIGRlbSBnZWxvZXNjaHQgd2VyZGVuIHNvbGwuCisJa2V5IC0gZGVyIHp1IGxvZXNjaGVuZGUgRWludHJhZworCitCRVNDSFJFSUJVTkc6CisJQXVzIGRlbSBNYXBwaW5nIG1hcCB3aXJkIGRlciBFaW50cmFnIGtleSBnZWxvZXNjaHQgKHdlbm4gZXIgaW4gbWFwIHZvci0KKwloYW5kZW4gaXN0KS4gbWFwIHdpcmQgZGFiZWkgbmljaHQgdmVyYWVuZGVydC4KKworUlVFQ0tHQUJFV0VSVDoKKwlFaW5lIChmbGFjaGUgISkgS29waWUgdm9uIG1hcCBvaG5lIGRlbiBFaW50cmFnIGtleSwgZC5oLiBlbnRoYWx0ZW5lCisJTWFwcGluZ3MvQXJyYXlzIHdlcmRlbiBuaWNodCBrb3BpZXJ0LgorCitCRU1FUktVTkdFTjoKKwlEYXMgdXJzcHJ1ZW5nbGljaGUgTWFwcGluZyB3aXJkIGJlaSBkaWVzZXIgT3BlcmF0aW9uIG5pY2h0IHZlcmFlbmRlcnQhCisJV2VubiBtYW4gbnVyIGVpbmVuIFdlcnQgYXVzIGRlbSBNYXBwaW5nIGxvZXNjaGVuIHdpbGwgdW5kIGRpZSBLb3BpZSBuaWNodAorCWJyYXVjaHQsIGJpZXRldCBzaWNoIGVmdW46Om1fZGVsZXRlKG1hcHBpbmcsa2V5KSBzZWhyIGFuLCBkYSBkaWUgRXJzdGVsbHVuZworICBlaW5lciBLb3BpZSBzZWhyIGF1ZndlbmRpZyBzZWluIGthbm4uCisKK0JFSVNQSUVMRToKKwltYXBwaW5nIG0xLCBtMjsKKworICAgICAgICBtMSA9IChbICJhIjoxLCAiYiI6MiwgImMiOjMgXSk7CisKKyAgICAgICAgbTIgPSBtX2NvcHlfZGVsZXRlKG0xLCAiYiIpOworICAgICAgICAgICA9PiBtMSA9IChbICJhIjoxLCAiYiI6MiwgImMiOjMgXSkKKwkgICAgICBtMiA9IChbICJhIjoxLCAiYyI6MyBdKQorCisgICAgICAgIG1fY29weV9kZWxldGUobTEsICJhIik7CisgICAgICAgICAgID0+IChlcyBoYXQgc2ljaCBuaWNodHMgZ2VhZW5kZXJ0KQorCisgICAgICAgIG0xID0gbV9jb3B5X2RlbGV0ZShtMSwgImEiKTsKKyAgICAgICAgICAgPT4gbTEgPSAoWyAiYiI6MiwgImMiOjMgXSkKKworICAgICAgICBJbSBsZXR6dGVuIEZhbGwgc29sbHRlIGFiZXIgYmVzc2VyIGVmdW46Om1fZGVsZXRlKG0xLCAiYSIpIGJlbnV0enQgCisgICAgICAgIHdlcmRlbiwgZGEgYW5zb25zdGVuIGRhcyBNYXBwaW5nIHVubm9ldGlnIGtvcGllcnQgd2lyZCB1bmQgUmVjaGVuLQorICAgICAgICBsZWlzdHVuZyBmcmlzc3QuIAorCitTSUVIRSBBVUNIOgorICBlZnVuOjptX2RlbGV0ZShFKSwgbWFwcGluZ3AoRSksIG1rbWFwcGluZyhFKSwgbV9pbmRpY2VzLChFKSBtX3ZhbHVlcyhFKSwKKyAgc2l6ZW9mKEUpLCB3aWR0aG9mKEUpCmRpZmYgLS1naXQgYS9kb2Mvc2VmdW4vbWF0Y2hfbGl2aW5nIGIvZG9jL3NlZnVuL21hdGNoX2xpdmluZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi40NDgwMWE4Ci0tLSAvZGV2L251bGwKKysrIGIvZG9jL3NlZnVuL21hdGNoX2xpdmluZwpAQCAtMCwwICsxLDMwIEBACittYXRjaF9saXZpbmcoc2VmdW4pCitGVU5LVElPTjoKKyAgICAgdmFyYXJncyBtaXhlZCBtYXRjaF9saXZpbmcoIHN0cmluZyBzdHIsIGludCBwbGF5ZXJzX29ubHksCisJCQkJIHN0cmluZyAqZXhjbHVkZSkKKworQVJHVU1FTlRFOgorICAgICBzdHJpbmcgc3RyCQktIEt1ZXJ6ZWwsIG5hY2ggZGVtIGRpZSBsaXZpbmdfbmFtZXMgZHVyY2hzdWNodAorCQkJICB3ZXJkZW4gc29sbAorICAgICBpbnQgcGxheWVyc19vbmx5CS0gMSwgdW0gbnVyIFNwaWVsZXIgKEludGVyYWN0aXZlcykgenUgc3VjaGVuCisgICAgIHN0cmluZyAqZXhsdWRlCS0gd2VsY2hlIE5hbWVuIHNvbGxlbiBpZ25vcmllcnQgd2VyZGVuCisKKworQkVTQ0hSRUlCVU5HOgorICAgICBTdWNodCBhbGxlIExlYmV3ZXNlbiwgZGVyZW4gTmFtZW4gbWl0IHN0ciBiZWdpbm5lbi4KKworUlVFQ0tHQUJFV0VSVDoKKyAgICAgRWluIFN0cmluZywgZmFsbHMgZXMgZWluIExlYmV3ZXNlbiBtaXQgZGVtIE5hbWVuIHN0ciBnaWJ0IChkZXIgTmFtZQorICAgICBtdXNzIGdlbmF1IHBhc3NlbikuCisgICAgIC0xLCB3ZW5uIGVzIG1laHJlcmUgTGViZXdlc2VuIGdpYnQsIGRlcmVuIE5hbWVuIG1pdCBzdHIgYmVnaW5uZW4uCisgICAgIC0yLCB3ZW5uIGVzIGtlaW4gTGViZXdlc2VuIGdpYnQsIGRlc3NlbiBOYW1lIG1pdCBzdHIgYmVnaW5udC4KKworQkVJU1BJRUxFOgorICAgICBtYXRjaF9saXZpbmcoIndhcmdvbiIpOyA9PiAid2FyZ29uIiwgd2VubiBXYXJnb24gZWluZ2Vsb2dndCBpc3QuCisgICAgIG1hdGNoX2xpdmluZygid2FyIik7ICAgID0+ICJ3YXJnb24iLCB3ZW5uIGVzIGtlaW4gYW5kZXJlcyBMZWJld2VzZW4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ2lidCwgZGVzc2VuIE5hbWUgbWl0ICJ3YXIiIGJlZ2lubnQuCisKK1NJRUhFIEFVQ0g6CisgICAgIGZpbmRfbGl2aW5nKEUpLCBmaW5kX3BsYXllcihFKSwgZmluZF9uZXRkZWFkKEUpCisKKzI3LiBNYWkgMjAwNCBHbG9pbnNvbgpkaWZmIC0tZ2l0IGEvZG9jL3NlZnVuL21kNSBiL2RvYy9zZWZ1bi9tZDUKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMWU2NTA5MAotLS0gL2Rldi9udWxsCisrKyBiL2RvYy9zZWZ1bi9tZDUKQEAgLTAsMCArMSwzMCBAQAorREVQUkVDQVRFRAorU1lOT1BTSVMKKyAgICAgICAgc3RyaW5nIG1kNSAoc3RyaW5nIGFyZyBbICwgaW50IGl0ZXJhdGlvbnMgXSApCisgICAgICAgIHN0cmluZyBtZDUgKGludCAqICBhcmcgWyAsIGludCBpdGVyYXRpb25zIF0gKQorCitCRVNDSFJFSUJVTkcKKyAgICAgICAgQmVyZWNobmV0IGRlbiBNRDUtSGFzaHdlcnQgdm9uIDxhcmc+LgorICAgICAgICBEYXMgQXJndW1lbnQga2FubiBlaW4gU3RyaW5nLCBvZGVyIGVpbiBBcnJheSB2b24gWmFobGVuIHNlaW4gKHZvbgorICAgICAgICB3ZWxjaGVuIG51ciBkYXMgdW50ZXJzdGUgQnl0ZSBiZXRyYWNodGVkIHdpcmQpLgorCisgICAgICAgIERhcyBFcmdlYm5pcyB3aXJkIGFscyAzMi1zdGVsbGlnZXIgSGV4YWRlemltYWx3ZXJ0IGdlbGllZmVydC4KKworICAgICAgICBJc3QgZGFzIDxpdGVyYXRpb25zPiBBcmd1bWVudCBlaW5lIFphaGwgZ3JvZXNzZXIgMCwgYmVyZWNobmV0IGRlcgorICAgICAgICBEcml2ZXIgZGVuIERpZ2VzdCBtaXQgZGllc2UgQW56YWhsIGFuIFdpZWRlcmhvbHVuZ2VuLiBGZWhsdCBkaWUKKyAgICAgICAgQW5nYWJlLCBmdWVocnQgZGVyIERyaXZlciBkaWUgRGlnZXN0LUJlcmVjaG51bmcgZWlubWFsIGF1cy4KKworQkVJU1BJRUwKKyAgICAgICAgc3RyaW5nIHM7CisKKyAgICAgICAgcyA9IG1kNSgiSGFsbG8iKTsKKyAgICAgICAgcyA9IG1kNSggKHsgJ0gnLCAnZScsICdsJywgJ2wnLCAnbycgfSkgKQorICAgICAgICBzID0gbWQ1KCAoeyAnSCcsICdlJywgJ2wnLCAnbCcsICdvJyB9KSwgMiApCisKK0FFTkRFUlVOR0VOCisgICAgICAgIEVpbmdlZnVlaHJ0IGluIExETXVkIDMuMi45CisgICAgICAgIExETXVkIDMuMi4xMiBmdWVocnRlIFphZWhsZW5hcnJheXMgYWxzIEFyZ3VtZW50IGVpbiwgYWxzbyBhdWNoCisgICAgICAgICAgZGllIEFuemFobCBkZXIgV2llZGVyaG9sdW5nZW4uCisKK1NJRUhFIEFVQ0gKKyAgICAgICAgY3J5cHQoRSksIG1kNV9jcnlwdChFKSwgc2hhMShFKSwgaGFzaChFKSwgaG1hYyhFKQpkaWZmIC0tZ2l0IGEvZG9jL3NlZnVuL21rZGlycCBiL2RvYy9zZWZ1bi9ta2RpcnAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYTA1ZDRlNgotLS0gL2Rldi9udWxsCisrKyBiL2RvYy9zZWZ1bi9ta2RpcnAKQEAgLTAsMCArMSwyMSBAQAorRlVOS1RJT046CisgICAgICAgIGludCBta2RpcnAoc3RyaW5nIGRpcikKKworQVJHVU1FTlRFOgorICAgICAgICBkaXIgLSBOYW1lIGRlcyB6dSBlcnN0ZWxsZW5kZW4gVmVyemVpY2huaXNzZXMgKGFic29sdXQpCisKK0JFU0NIUkVJQlVORzoKKyAgICAgICAgRXJ6ZXVndCBkYXMgVmVyemVpY2huaXMgPGRpcj4uIERpZXMgbXVzcyBhbHMgYWJzLiBQZmFkIGFuZ2VnZWJlbgorICAgICAgICB3ZXJkZW4uCisgICAgICAgIFdlbm4gbm9ldGlnLCB3aXJkIGRpZSBnYW56ZSBWZXJ6ZWljaG5pc2hpZXJhcmNoaWUgcmVrdXJzaXYgZXJzdGVsbHQuCisgICAgICAgIAorUlVFQ0tHQUJFV0VSVDoKKyAgICAgICAgMCAtIFZlcnplaWNobmlzIGtvbm50ZSBuaWNodCBlcnN0ZWxsdCB3ZXJkZW4KKyAgICAgICAgMSAtIFZlcnplaWNobmlzIHd1cmRlIGVyc3RlbGx0IG9kZXIgZXhpc3RpZXJ0ZSBiZXJlaXRzCisKK1NJRUhFIEFVQ0g6CisgICAgICAgIG1rZGlyKEUpCisKK0xFVFpUIEFlTkRFUlVORzoKKzI2LjAxLjIwMTMsIFplc3N0cmEKKwpkaWZmIC0tZ2l0IGEvZG9jL3NlZnVuL25vdGlmeV9mYWlsIGIvZG9jL3NlZnVuL25vdGlmeV9mYWlsCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjE5NzAzNjcKLS0tIC9kZXYvbnVsbAorKysgYi9kb2Mvc2VmdW4vbm90aWZ5X2ZhaWwKQEAgLTAsMCArMSw4NSBAQAorRlVOS1RJT046CisgICAgICNpbmNsdWRlIDxub3RpZnlfZmFpbC5oPgorCisgICAgIHZhcmFyZ3Mgdm9pZCBub3RpZnlfZmFpbChzdHJpbmcgc3RyLCBpbnQgcHJpbykKKyAgICAgdmFyYXJncyB2b2lkIG5vdGlmeV9mYWlsKGNsb3N1cmUgY2wsIGludCBwcmlvKQorCitBUkdVTUVOVEU6CisgICAgIHN0ciAgIE1lbGR1bmcgZGllIGFuIGRlbiBTcGllbGVyIGFuc3RhdHQgZGVzICdXaWUgYml0dGUnIGF1c2dlZ2ViZW4KKyAgICAgICAgICAgd2VyZGVuIHNvbGwKKyAgICAgY2wgICAgQ2xvc3VyZSwgZGllIGJlaSBGZWhsc2NobGFnIGF1c2dlZnVlaHJ0IHdlcmRlbiBzb2xsCisgICAgIHByaW8gIFByaW9yaXRhZXQgZGllc2VzIE9iamVrdHMgYmVpIGRpZXNlbSBTZXR6ZW4gZGVyIE1lbGR1bmcKKworQkVTQ0hSRUlCVU5HOgorICAgICBNZXJrdCBzaWNoIGRlbiBhbmdlZ2ViZW5lbiBzdHIgdW5kIGdpYnQgaWhuIGltIEZhbGxlIGVpbmVyIGlua29ycmVrdGVuCisgICAgIEVpbmdhYmUgZGVzIFNwaWVsZXJzIGFuc3RhdHQgZWluZXMgJ1dpZSBiaXR0ZScgYXVzLgorCisgICAgIEdlZGFjaHQgaXN0IG5vdGlmeV9mYWlsLCB1bSBkZW0gU3BpZWxlciBlaW5lIGJlc3NlcmUgSGlsZmVzdGVsbHVuZworICAgICBiZWkgS29tbWFuZG9zIC8gRWluZ2FiZW4genUgZ2ViZW4sIHVtIGlobiB1LlUuIGF1ZiBkaWUgcmljaHRpZ2UKKyAgICAgU3ludGF4IGhpbnp1d2Vpc2VuLgorCisgICAgIFdpcmQgbm90aWZ5X2ZhaWwgbWVocmZhY2ggKGR1cmNoIHZlcnNjaGllZGVuZSBPYmpla3RlIG8uYWUuKSBhdWYtCisgICAgIGdlcnVmZW4sIHdpcmQgZGVyIGxldHp0ZSBlcmZvbGdyZWljaGUgQXVmcnVmIGdld2VydGV0LiBFaW5lIE1lbGR1bmcgd2lyZAorICAgICBkYW5uIHRhdHNhZWNobGljaCBnZXNldHp0LCB3ZW5uIGRpZSBQcmlvcml0YWV0IGRpZXNlcyBPYmpla3RzIGdsZWljaAorICAgICBncm9zcyBvZGVyIGdyb2Vzc2VyIGlzdCBhbHMgZGllIFByaW9yaXRhZXQgZGVzIE9iamVrdHMsIHdhcyBkYXMgYmlzaGVyCisgICAgIGd1ZWx0aWdlIG5vdGlmeV9mYWlsKCkgZ2VzZXR6dCBoYXQuIEZvbGdlbmRlIFByaW9yaXRhZXRlbiBzaW5kCisgICAgIHZvcmRlZmluaWVydCB1bmQgd2VyZGVuIGF1dG9tYXRpc2NoIGVybWl0dGVsdDoKKyAgICAgTkZfTkxfT1dOICAgIDEwMCAgICAgICAgIC8vIGVpZ2VuZXMgT2JqZWt0IChzb3VsKSB1ZWJlcnNjaHJlaWJ0IGthdW0gd2FzCisgICAgIE5GX05MX1RISU5HICAxMDAwMDAKKyAgICAgTkZfTkxfUk9PTSAgIDEwMDAwMDAgICAgIC8vIFJhZXVtZSB1ZWJlcnNjaHJlaWJlbiBzb25zdGlnZW4gS3JhbXMKKyAgICAgTkZfTkxfTElWSU5HIDEwMDAwMDAwICAgIC8vIExlYmV3ZXNlbiB1ZWJlcnNjaHJlaWJlbiBhdWNoIFJhZXVtZQorICAgICAyIHdlaXRlcmUgdm9yZGVmaW5pZXJ0ZSBrb2VubmVuIHZvbiBNYWdpZXIgYW5nZWdlYmVuIHdlcmRlbjoKKyAgICAgTkZfTkxfTk9ORSAgIC0xICAgICAgICAgIC8vIHdpcmQgdm9uIGFsbGVtIHVlYmVyc2NocmllYmVuCisgICAgIE5GX05MX01BWCAgICBfX0lOVF9NQVhfXyAvLyBob2VjaHN0ZSBQcmlvcml0YWV0LCB1ZWJlcnNjaHJlaWJ0IGFsbGVzCisKKyAgICAgV2lyZCBlaW5lIENsb3N1cmUgYWxzIEFyZ3VtZW50IGdlZ2ViZW4sIHdpcmQgc2llIGltIEZlaGxlcmZhbGwKKyAgICAgKGFsc28gZXJzdCB3ZW5uIGVpbiBLb21tYW5kbyBlbmRndWVsdGlnIGZlaGxnZXNjaGxhZ2VuIGhhdCkKKyAgICAgYXVzZ2VmdWVocnQgdW5kIGhhdCBkaWUgRmVobGVybWVsZHVuZyBhbHMgUmVzdWx0YXQKKyAgICAgenVydWVja3p1Z2ViZW4uIERpZSBDbG9zdXJlIGVyaGFlbHQgYWxzIEFyZ3VtZW50IGRlbgorICAgICBvcmlnaW5hbGVuIEJlZmVobHNnZWJlcjsgaW4gZGVyIFJlZ2VsIGRpZXMgaXN0IHRoaXNfcGxheWVyKCksCisgICAgIHdhcyBhYmVyIHZvbSBNT0RJRllfQ01EIGhvb2sgZ2VhZW5kZXJ0IHdlcmRlbiBrYW5uLgorCisgICAgIG5vdGlmeV9mYWlsKCkgZXJrZW5udCB2ZXJzY2hhY2h0ZWx0ZSBLb21tYW5kb3MgKHNpZWhlIEVmdW4KKyAgICAgY29tbWFuZCgpKSwgdW5kIGVpbiBub3RpZnlfZmFpbCgpIGluIGVpbmVtIFVudGVya29tbWFuZG8KKyAgICAgaGF0IGtlaW5lbiBFaW5mbHVzcyBhdWYgZGFzIHVlYmVyZ2VvcmRuZXRlIEtvbW1hbmRvLgorCitCRU1FUktVTkdFTjoKKyAgICAgLSBzb2xhbmdlIG1hbiBzaWNoIG5pY2h0IGFic29sdXQgc2ljaGVyIGlzdCwgZGFzcyBlaW4gYmVzdGltbXRlcyBPYmpla3QKKyAgICAgICBtaXQgZGVtIEtvbW1hbmRvIGdlbWVpbnQgaXN0IChJZGVudGlmaWthdGlvbiB1ZWJlciBpZCgpKSwgc29sbHRlIG1hbgorICAgICAgIC0gbm90aWZ5X2ZhaWwoc3RyKTsgcmV0dXJuIDA7CisgICAgICAgbnV0emVuIGFuc3RhdHQgbWl0CisgICAgICAgLSB3cml0ZShzdHIpIHJldHVybiAxOworICAgICAgIGRpZSBLb21tYW5kb2F1c3dlcnR1bmcgYWJ6dWJyZWNoZW4gKHVuZCBhbmRlcmVuIE9iamVrdGVuIGRpZSBDaGFuY2UKKyAgICAgICB6dSBuZWhtZW4gZGFzIEtvbW1hbmRvIHp1IGVyZnVlbGxlbikKKyAgICAgLSBLb21tYW5kb3Mgd2VyZGVuIHVlYnJpZ2VucyBvZnQgZXJzdCB2b20gYmV0cmV0ZW5lbiBSYXVtLCBkYW5uIHZvbiBkZW4KKyAgICAgICBPYmpla3RlbiBhYmdlYXJiZWl0ZXQgKGplIG5hY2hkZW0gd2FubiBkaWVzZSBkYXp1a2FtZW4pCisgICAgIC0gZGllIFByaW9yaXRhZXQgd2lyZCBtb21lbnRhbiBuaWNodCBnZXNwZWljaGVydCwgc2llIGlzdCBudXIgYmVpbSBTZXR6ZW4KKyAgICAgICByZWxldmFudC4gV2lsbCBzcGFldGVyIGVpbiBhbmRlcmVzIE9iamVrdCBlaW5lIE1lbGR1bmcgc2V0emVuLCB3aXJkCisgICAgICAgZnVlciBkYXMgZWlnZW5lIE9iamVrdCBkaWUgU3RhbmRhcmRwcmlvcml0YWV0IGVybWl0dGVsdCwgYXVjaCB3ZW5uIG1hbgorICAgICAgIGVpbmUgYW5kZXJlIGhpZXIgdWViZXJnZWJlbiBoYXQKKyAgICAgLSBEaWUgTkZfTkxfKiBzaW5kIGluIC9zeXMvbm90aWZ5X2ZhaWwuaCBkZWZuaWVydC4KKworQkVJU1BJRUxFOgorICAgICBFaW4gUmF1bSBlcndhcnRldCBkaWUga29ycmVrdGUgRWluZ2FiZSB2b24gJ2lzcyBzdXBwZSc6CisKKyAgICAgaW50IGlzc19jbWQoc3RyaW5nIHN0cil7CisgICAgICAgLy8genUgQW5mYW5nIGRlciBGdW5rdGlvbiBkYXMgbm90aWZ5X2ZhaWwgZGVmaW5pZXJlbgorICAgICAgIG5vdGlmeV9mYWlsKCJNb2VjaHRlc3QgRHUgdmllbGxlaWNodCB2b24gZGVyIFN1cHBlIGVzc2VuP1xuIik7CisKKyAgICAgICAvLyBTcGllbGVyIGhhdCBudXIgJ2lzcycgb2huZSBQYXJhbWV0ZXIgZWluZ2VnZWJlbiBvZGVyIGVpbmVuIGFuZGVyZW4KKyAgICAgICAvLyBQYXJhbWV0ZXIgYW5nZWdlYmVuIC4uLiBBYmJydWNoIQorICAgICAgIC8vIEZhbGxzIGtlaW4gd2VpdGVyZXMgT2JqZWt0IGRhcyBLb21tYW5kbyBlcmZ1ZWxsdCBvZGVyIGRhcworICAgICAgIC8vIG5vdGlmeV9mYWlsKCkgbWl0IGVpbmVyIGVpZ2VuZW4gTWVsZHVuZyB1ZWJlcnNjaHJlaWJ0LCB3aXJkIG9iaWdlCisgICAgICAgLy8gTWVsZHVuZyBhbiBkZW4gU3BpZWxlciBhdXNnZWdlYmVuLgorCisgICAgICAgaWYoIXN0ciB8fCBzdHIhPSJzdXBwZSIpIHJldHVybiAwOworICAgICAgIC8vIGFiIGhpZXIgaXN0IGRpZSBFaW5nYWJlIGRhbm4gd2lya2xpY2ggJ3N1cHBlJyB1bmQgZGllIEZ1bmt0aW9uCisgICAgICAgLy8ga2FubiBiZWxpZWJpZyBmb3J0Z2VmdWVocnQgd2VyZGVuCisgICAgICAgLi4uCisgICAgICAgcmV0dXJuICAgMTsKKworU0lFSEUgQVVDSDoKKyAgICAgYWRkX2FjdGlvbihFKSwgQWRkQ21kKEwpLCBBZGRBY3Rpb24oTCksCisgICAgIHF1ZXJ5X3ZlcmIoRSksIHF1ZXJ5X25vdGlmeV9mYWlsKEUpCisKKzguQXVnIDIwMDcgR2xvaW5zb24KZGlmZiAtLWdpdCBhL2RvYy9zZWZ1bi9vYmplY3RfaW5mbyBiL2RvYy9zZWZ1bi9vYmplY3RfaW5mbwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4zOTQ1NjUxCi0tLSAvZGV2L251bGwKKysrIGIvZG9jL3NlZnVuL29iamVjdF9pbmZvCkBAIC0wLDAgKzEsMTI5IEBACitERVBSRUNBVEVECitTWU5PUFNJUworICAgICAgICAjaW5jbHVkZSA8b2JqZWN0aW5mby5oPgorCisgICAgICAgIG1peGVkICogb2JqZWN0X2luZm8ob2JqZWN0IG9iLCBpbnQgd2hhdCkKKyAgICAgICAgbWl4ZWQgKiBvYmplY3RfaW5mbyhvYmplY3Qgb2IsIGludCB3aGF0LCBpbnQgaW5kZXgpCisKK0RFU0NSSVBUSU9OCisgICAgICAgIFJldHVybnMgc29tZSBpbnRlcm5hbCBpbmZvcm1hdGlvbiBhYm91dCBvYmplY3QgPG9iPiwgY29sbGVjdGVkCisgICAgICAgIGluIGFuIGFycmF5LiBBcmd1bWVudCA8d2hhdD4gZGV0ZXJtaW5lcyB3aGljaCBpbmZvcm1hdGlvbiBpcworICAgICAgICByZXR1cm5lZC4KKworICAgICAgICBUaGUgcmVzdWx0IGlzIHVzdWFsbHkgYW4gYXJyYXkuIEhvd2V2ZXIsIGlmIDxpbmRleD4gaXMgc3BlY2lmaWVkLAorICAgICAgICB0aGUgcmVzdWx0IGlzIHRoZSB2YWx1ZSBmcm9tIHBvc2l0aW9uIDxpbmRleD4gb2YgdGhlIGFycmF5IHdoaWNoCisgICAgICAgIHdvdWxkIGhhdmUgYmVlbiByZXR1cm5lZCBub3JtYWxseS4KKworICAgICAgICBUaGUgcG9zc2libGUgdmFsdWVzIG9mIDx3aGF0PiwgYW5kIHRoZSBpbmRpY2VzIG9mIHRoZSByZXR1cm5lZAorICAgICAgICBhcnJheXMgYXJlIGRlZmluZWQgaW4gdGhlIGluY2x1ZGUgZmlsZSA8b2JqZWN0aW5mby5oPiwgYW5kIG1heQorICAgICAgICBjaGFuZ2UgaW4gZnV0dXJlIHZlcnNpb25zIG9mIHRoZSBkcml2ZXIhCisKKworICAgICAgICA8d2hhdD4gPT0gT0lORk9fQkFTSUM6CisKKyAgICAgICAgICBUaGlzIGNhbGwgcmV0dXJucyBiYXNpYyBpbmZvcm1hdGlvbiBhYm91dCA8b2I+OgorCisgICAgICAgICAgaW50IFtPSUJfSEVBUlRfQkVBVF06ICAgICAgIDEgaWYgPG9iPiBoYXMgYSBoZWFydF9iZWF0LCAwIGVsc2UuCisgICAgICAgICAgaW50IFtPSUJfSVNfV0laQVJEXTogICAgICAgIDEgaWYgPG9iPiBoYXMgdGhlIHdpemFyZCBmbGFnIHNldCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAwIGVsc2UuCisgICAgICAgICAgICBUaGlzIGVudHJ5IGlzIGFsd2F5cyAwIHdoZW4gc2V0X2lzX3dpemFyZCgpIGlzIG5vdCBhdmFpbGFibGUuCisgICAgICAgICAgaW50IFtPSUJfRU5BQkxFX0NPTU1BTkRTXTogIDEgaWYgPG9iPiBjYW4gZ2l2ZSBjb21tYW5kcywgMCBlbHNlLgorICAgICAgICAgIGludCBbT0lCX0NMT05FXTogICAgICAgICAgICAxIGlmIDxvYj4gaXMgYSBjbG9uZSwgMCBlbHNlLgorICAgICAgICAgIGludCBbT0lCX0RFU1RSVUNURURdOiAgICAgICAxIGlmIDxvYj4gaXMgZGVzdHJ1Y3RlZCwgMCBlbHNlLgorICAgICAgICAgIGludCBbT0lCX1NXQVBQRURdOiAgICAgICAgICAxIGlmIDxvYj4gaXMgc3dhcHBlZCwgMCBlbHNlLgorICAgICAgICAgIGludCBbT0lCX09OQ0VfSU5URVJBQ1RJVkVdOiAxIGlmIDxvYj4gd2FzIG9uY2UgaW50ZXJhY3RpdmUsIDAgZWxzZS4KKyAgICAgICAgICBpbnQgW09JQl9SRVNFVF9TVEFURV06ICAgICAgMSBpZiA8b2I+IGlzIChzdGlsbCkgcmVzZXQsIDAgZWxzZS4KKyAgICAgICAgICBpbnQgW09JQl9XSUxMX0NMRUFOX1VQXTogICAgMSBpZiA8b2I+IHdpbGwgY2FsbCBjbGVhbl91cCgpLCAwIGVsc2UuCisgICAgICAgICAgaW50IFtPSUJfTEFNQkRBX1JFRkVSRU5DRURdOiAxIGlmIDxvYj4gaGFzIGxhbWJkYXMsIDAgZWxzZS4KKyAgICAgICAgICBpbnQgW09JQl9TSEFET1ddOiAgICAgICAgICAgMSBpZiA8b2I+IGhhcyBhIHNoYWRvdyBzdHJ1Y3R1cmUgdGllZAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRvIGl0LCAwIGlmIG5vdC4KKyAgICAgICAgICBpbnQgW09JQl9SRVBMQUNFRF06ICAgICAgICAgMSBpZiB0aGUgcHJvZ3JhbSBmb3IgPG9iPiB3YXMgcmVwbGFjZWQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDAgZWxzZS4KKyAgICAgICAgICBpbnQgW09JQl9ORVhUX1JFU0VUXTogICB0aW1lIG9mIHRoZSBuZXh0IHJlc2V0CisgICAgICAgICAgaW50IFtPSUJfVElNRV9PRl9SRUZdOiAgdGltZSBvZiB0aGUgbGFzdCBjYWxsIHRvIDxvYj4KKyAgICAgICAgICBpbnQgW09JQl9ORVhUX0NMRUFOVVBdOiB0aW1lIG9mIHRoZSBuZXh0IGRhdGEgY2xlYW51cAorICAgICAgICAgIGludCBbT0lCX1JFRl06ICAgICAgICAgIG51bWJlciBvZiByZWZlcmVuY2VzIHRvIDxvYj4KKyAgICAgICAgICBpbnQgW09JQl9HSUdBVElDS1NdIGFuZCBbT0lCX1RJQ0tTXTogdG9nZXRoZXIsIHRoZXNlIG51bWJlcnMKKyAgICAgICAgICAgIGdpdmUgdGhlIGFjY3VtdWxhdGVkIGV2YWx1YXRpb24gY29zdCBzcGVuZCBpbiA8b2I+CisgICAgICAgICAgaW50IFtPSUJfU1dBUF9OVU1dOiAgICAgdGhlIHN3YXAgbnVtYmVyIGZvciA8b2I+cyBwcm9ncmFtLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9yIC0xIGlmIG5vdCBzd2FwcGVkLgorICAgICAgICAgIGludCBbT0lCX1BST0dfU1dBUFBFRF06IDEgaWYgPG9iPidzIHByb2dyYW0gaXMgc3dhcHBlZCwgMCBlbHNlLgorICAgICAgICAgIGludCBbT0lCX1ZBUl9TV0FQUEVEXTogIDEgaWYgPG9iPidzIHZhcmlhYmxlcyBhcmUgc3dhcHBlZCwgMCBlbHNlLgorICAgICAgICAgIGludCBbT0lCX05BTUVdOiAgICAgICAgIDxvYj4ncyBvYmplY3QgbmFtZS4KKyAgICAgICAgICBpbnQgW09JQl9MT0FEX05BTUVdOiAgICA8b2I+J3MgbG9hZCBuYW1lLgorICAgICAgICAgIG9iamVjdCBbT0lCX05FWFRfQUxMXTogIG5leHQgb2JqZWN0IGluIHRoZSBvYmplY3QgbGlzdC4KKyAgICAgICAgICBvYmplY3QgW09JQl9QUkVWX0FMTF06ICBwcmV2aW91cyBvYmplY3QgaW4gdGhlIG9iamVjdCBsaXN0LgorCisKKyAgICAgICAgPHdoYXQ+ID09IE9JTkZPX1BPU0lUSU9OOgorCisgICAgICAgICAgVGhpcyBjYWxsIHJldHVybnMgaW5mb3JtYXRpb24gYWJvdXQgPG9iPidzIHBvc2l0aW9uIGluIHRoZQorICAgICAgICAgIGdsb2JhbCBsaXN0IG9mIG9iamVjdHM6CisKKyAgICAgICAgICBvYmplY3QgW09JUF9ORVhUXTogbmV4dCBvYmplY3QgaW4gdGhlIG9iamVjdCBsaXN0LgorICAgICAgICAgIG9iamVjdCBbT0lQX1BSRVZdOiBwcmV2aW91cyBvYmplY3QgaW4gdGhlIG9iamVjdCBsaXN0LgorICAgICAgICAgIGludCAgICBbT0lQX1BPU106ICBwb3NpdGlvbiBvZiA8b2I+IGluIGxpc3QsIGNvdW50aW5nIGZyb20gMCB1cC4KKworICAgICAgICAgIFRoaXMgY2FsbCBjYW4gYmUgZXhwZW5zaXZlIGluIGNvbXB1dGluZyB0aW1lLgorCisKKyAgICAgICAgPHdoYXQ+ID09IE9JTkZPX01FTU9SWToKKworICAgICAgICAgIFRoaXMgY2FsbCByZXR1cm5zIGluZm9ybWF0aW9uIGFib3V0IHRoZSBwcm9ncmFtIDxvYj4gdXNlczoKKworICAgICAgICAgIGludCAgICBbT0lNX1JFRl06ICAgICAgICAgICAgbnVtYmVyIG9mIHJlZmVyZW5jZXMgdG8gdGhlIHByb2dyYW0uCisgICAgICAgICAgc3RyaW5nIFtPSU1fTkFNRV06ICAgICAgICAgICBuYW1lIG9mIHByb2dyYW0uCisgICAgICAgICAgaW50ICAgIFtPSU1fUFJPR19TSVpFXTogICAgICBzaXplIG9mIHRoZSBwcm9ncmFtLgorICAgICAgICAgIGludCAgICBbT0lNX05VTV9GVU5DVElPTlNdOiAgbnVtYmVyIG9mIGZ1bmN0aW9ucyBpbiB0aGUgcHJvZ3JhbS4KKyAgICAgICAgICBpbnQgICAgW09JTV9TSVpFX0ZVTkNUSU9OU106IHNpemUgbmVlZGVkIGZvciB0aGUgZnVuY3Rpb24gc3RydWN0cy4KKyAgICAgICAgICBpbnQgICAgW09JTV9OVU1fVkFSSUFCTEVTXTogIG51bWJlciBvZiB2YXJpYWJsZXMgaW4gdGhlIHByb2dyYW0uCisgICAgICAgICAgaW50ICAgIFtPSU1fU0laRV9WQVJJQUJMRVNdOiBzaXplIG5lZWRlZCBmb3IgdGhlIHZhcmlhYmxlIHN0cnVjdHMuCisgICAgICAgICAgaW50ICAgIFtPSU1fTlVNX1NUUklOR1NdOiAgICBudW1iZXIgb2Ygc3RyaW5ncyBpbiB0aGUgcHJvZ3JhbS4KKyAgICAgICAgICBpbnQgICAgW09JTV9TSVpFX1NUUklOR1NdOiAgIHNpemUgbmVlZGVkIGZvciB0aGUgc3RyaW5nIHBvaW50ZXJzLgorICAgICAgICAgIGludCAgICBbT0lNX1NJWkVfU1RSSU5HU19EQVRBXTogc2l6ZSBuZWVkZWQgZm9yIHRoZSBzdHJpbmcgZGF0YSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNjYWxlZCBkb3duIGFjY29yZGluZyB0byB0aGUgZXh0ZW5kIG9mCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkYXRhIHNoYXJpbmcuCisgICAgICAgICAgaW50ICAgIFtPSU1fU0laRV9TVFJJTkdTX1RPVEFMXTogdW5tb2RpZmllZCBzaXplIG5lZWRlZCBmb3IgdGhlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJpbmcgZGF0YS4KKyAgICAgICAgICBpbnQgICAgW09JTV9OVU1fSU5DTFVERVNdOiAgIG51bWJlciBvZiBpbmNsdWRlZCBmaWxlcyBpbiB0aGUgcHJvZ3JhbS4KKyAgICAgICAgICBpbnQgICAgW09JTV9OVU1fSU5IRVJJVEVEXTogIG51bWJlciBvZiBpbmhlcml0ZWQgcHJvZ3JhbXMuCisgICAgICAgICAgaW50ICAgIFtPSU1fU0laRV9JTkhFUklURURdOiBzaXplIG5lZWRlZCBmb3IgdGhlIGluaGVyaXQgc3RydWN0cy4KKyAgICAgICAgICBpbnQgICAgW09JTV9UT1RBTF9TSVpFXTogICAgIHRvdGFsIHNpemUgb2YgdGhlIHByb2dyYW0uCisgICAgICAgICAgaW50ICAgIFtPSU1fREFUQV9TSVpFXTogICAgICB0b3RhbCBzaXplIG9mIHRoZSB2YWx1ZXMgaGVsZCBpbiB0aGUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9iamVjdCdzIHZhcmlhYmxlcywgc2NhbGVkIGRvd24KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFjY29yZGluZyB0byB0aGUgZXh0ZW5kIG9mIGRhdGEKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNoYXJpbmcuCisgICAgICAgICAgaW50ICAgIFtPSU1fREFUQV9TSVpFX1RPVEFMXTogdW5tb2RpZmllZCB0b3RhbCBzaXplIG9mIHRoZSB2YWx1ZXMKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhlbGQgaW4gdGhlIG9iamVjdCdzIHZhcmlhYmxlcworICAgICAgICAgIGludCAgICBbT0lNX05PX0lOSEVSSVRdOiAgICAgMSBpZiB0aGUgcHJvZ3JhbSBjYW4ndCBiZSBpbmhlcml0ZWQuCisgICAgICAgICAgaW50ICAgIFtPSU1fTk9fQ0xPTkVdOiAgICAgICAxIGlmIHRoZSBwcm9ncmFtL2JsdWVwcmludCBjYW4ndCBiZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xvbmVkLgorICAgICAgICAgIGludCAgICBbT0lNX05PX1NIQURPV106ICAgICAgMSBpZiB0aGUgcHJvZ3JhbSdzIGZ1bmN0aW9ucyBjYW4ndCBiZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2hhZG93ZWQuCisgICAgICAgICAgaW50ICAgIFtPSU1fU0hBUkVfVkFSSUFCTEVTXTogIDEgaWYgY2xvbmVzIG9mIHRoaXMgcHJvZ3JhbSBzaGFyZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhlaXIgaW5pdGlhbCB2YXJpYWJsZSB2YWx1ZXMgd2l0aAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhlIGJsdWVwcmludC4KKworICAgICAgICAgIFRoaXMgY2FsbCBzd2FwcyBpbiB0aGUgcHJvZ3JhbSBpZiBuZWNlc3NhcnkuCisgICAgICAgICAgTm90ZSB0aGF0IHRoZSBPSU1fU0laRV94eHggZW50cmllcyBvbmx5IGdpdmUgdGhlIHNpemUgc3BlbnQgb24KKyAgICAgICAgICB0aGUgc3RydWN0dXJlcyBhbmQgcG9pbnRlcnMsIG5vdCB0aGUgc2l6ZSBvZiB0aGUgdmFyaWFibGUgZGF0YSwKKyAgICAgICAgICBmdW5jdGlvbiBjb2RlLCBhbmQgc3RyaW5ncyB0aGVtc2VsdmVzLgorCitISVNUT1JZCisgICAgICAgIEludHJvZHVjZWQgaW4gTERNdWQgMy4yLjYuCisgICAgICAgIENoYW5nZXMgaW4gTERNdWQgMy4yLjc6CisgICAgICAgICAgLSBuZXcgYmFzaWMgcmVzdWx0IE9JQl9SRVBMQUNFRC4KKyAgICAgICAgICAtIGJhc2ljIHJlc3VsdCBPSUJfSVNfV0laQVJEIGlzIGFsd2F5cyAwIGlmIHNldF9pc193aXphcmQoKQorICAgICAgICAgICAgICBpcyBub3QgYXZhaWxhYmxlLgorICAgICAgICAgIC0gYmFzaWMgcmVzdWx0IE9JQl9BUFBST1ZFRCBpcyBnb25lLgorICAgICAgICBMRE11ZCAzLjIuOCBhZGRlZCBPSU1fREFUQV9TSVpFIHRvIHRoZSByZXN1bHQgb2YgT0lORk9fTUVNT1JZLgorICAgICAgICBMRE11ZCAzLjIuOSBhZGRlZCB0aGUgaW5kZXggbWVjaGFuaXNtLCBPSU1fTlVNX0lOQ0xVREVTLAorICAgICAgICAgIE9JTV9OT19JTkhFUklULCBPSU1fTk9fU0hBRE9XLCBPSU1fTk9fQ0xPTkUsIE9JTV9TSVpFX1NUUklOR1NfREFUQSwKKyAgICAgICAgICBPSU1fU0laRV9TVFJJTkdTX1RPVEFMLCBhbmQgT0lNX0RBVEFfU0laRV9UT1RBTCB0byB0aGUgcmVzdWx0CisgICAgICAgICAgb2YgT0lORk9fTUVNT1JZLgorICAgICAgICBMRE11ZCAzLjMuMzc4IGFkZGVkIHRoZSBPSU1fU0hBUkVfVkFSSUFCTEVTIHRvIHRoZSByZXN1bHQKKyAgICAgICAgICBvZiBPSU5GT19NRU1PUlkuCisgICAgICAgIExETXVkIDMuMy42NTQgYWRkZWQgdGhlIE9JQl9ORVhUX0NMRUFOVVAgdG8gdGhlIHJlc3VsdCBvZiBPSU5GT19CQVNJQy4KKworU0VFIEFMU08KKyAgICAgICAgZGVidWdfaW5mbyhFKQpkaWZmIC0tZ2l0IGEvZG9jL3NlZnVuL29ic29sZXRlL2V4Y2x1ZGVfYWxpc3QgYi9kb2Mvc2VmdW4vb2Jzb2xldGUvZXhjbHVkZV9hbGlzdApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5hOTY3YTE0Ci0tLSAvZGV2L251bGwKKysrIGIvZG9jL3NlZnVuL29ic29sZXRlL2V4Y2x1ZGVfYWxpc3QKQEAgLTAsMCArMSw0IEBACitTWU5PUFNJUzoKKwltaXhlZCAqZXhjbHVkZV9hbGlzdChpbnQgaSwgbWl4ZWQgKmFsaXN0KQorCitSZW1vdmUgZWxlbWVudCBpIGZyb20gYWxpc3QuCmRpZmYgLS1naXQgYS9kb2Mvc2VmdW4vb2Jzb2xldGUvcmVtb3ZlX2FsaXN0IGIvZG9jL3NlZnVuL29ic29sZXRlL3JlbW92ZV9hbGlzdApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5jZjliYzYxCi0tLSAvZGV2L251bGwKKysrIGIvZG9jL3NlZnVuL29ic29sZXRlL3JlbW92ZV9hbGlzdApAQCAtMCwwICsxLDMgQEAKK21peGVkICpyZW1vdmVfYWxpc3QobWl4ZWQga2V5LCBtaXhlZCAqYWxpc3QpCisKK1JlbW92ZXMgZWxlbWVudCBhc3NvY2lhdGVkIGJ5IGtleSBrZXkgZnJvbSBhbGlzdC4KZGlmZiAtLWdpdCBhL2RvYy9zZWZ1bi9vbGRfZXhwbG9kZSBiL2RvYy9zZWZ1bi9vbGRfZXhwbG9kZQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi42YjEzZDhlCi0tLSAvZGV2L251bGwKKysrIGIvZG9jL3NlZnVuL29sZF9leHBsb2RlCkBAIC0wLDAgKzEsMjggQEAKK0ZVTktUSU9OOgorCXN0cmluZyAqb2xkX2V4cGxvZGUoc3RyaW5nIHN0ciwgc3RyaW5nIGRlbCkKKworQVJHVU1FTlRFOgorCXN0ciAtIERlciBTdHJpbmcsIGRlciBhdWZnZXNwYWx0ZXQgd2VyZGVuIHNvbGwuCisJZGVsIC0gRGVyIFN0cmluZywgbmFjaCBkZW0gc3RyIGF1Zmdlc3BhbHRlbiB3ZXJkZW4gc29sbC4KKworQkVTQ0hSRUlCVU5HOgorCUR1cmNoIEF1c3NjaG5laWRlbiB2b24gZGVsIHdpcmQgZGVyIFN0cmluZyBzdHIgaW4gZWluIEFycmF5IHZvbiBTdHJpbmdzCisJemVybGVndC4gRGllc2VzIEFycmF5IHdpcmQgYW5zY2hsaWVzc2VuZCB6dXJ1Y2tnZWdlYmVuLgorCitSVUVDS0dBQkVXRVJUOgorCURhcyBBcnJheSBtaXQgZGVuIEJlc3RhbmR0ZWlsZW4gZGVyIFplcmxlZ3VuZy4KKworQkVNRVJLVU5HRU46CisJRGFzIFZlcmhhbHRlbiB2b24gb2xkX2V4cGxvZGUoKSBlbnRzcHJpY2h0IGRlbSBkZW0gZXhwbG9kZSgpLVZlcmhhbHRlbiwKKwlkYXMgaW4gL2RvYy9lZnVuL2V4cGxvZGUgYWxzICJhbHRlcyIgVmVyaGFsdGVuIGJlemVpY2huZXQgd2lyZCwgZC5oLgorCUxlZXJzdHJpbmdzIGFuIEFuZmFuZyB1bmQgRW5kZSBkZXMgemVybGVndGVuIFN0cmluZ3Mgd2VyZGVuIGVudGZlcm50IQorCitCRUlTUElFTEU6CisJc3RycyA9IGV4cGxvZGUoICJuaW1tIGFsbGVzIiwgIiAiKTsgPT4gc3RycyA9ICh7ICJuaW1tIiwgImFsbGVzIiB9KQorCXN0cnMgPSBleHBsb2RlKCAiYWJjIiwgImFiYyIgKTsgICAgID0+IHN0cnMgPSAoeyB9KQorCXN0cnMgPSBleHBsb2RlKCAiZWluIHRlc3QiLCAiIiApOyAgID0+IHN0cnMgPSAoeyAiZWluIHRlc3QiIH0pCisJc3RycyA9IGV4cGxvZGUoICJhIGIiLCAiYSIpOyAgICAgICAgPT4gc3RycyA9ICh7ICIgYiIgfSk7CisKK1NJRUhFIEFVQ0g6CisJZXhwbG9kZShFKSwgbmV3X2V4cGxvZGUoRSksIGVmdW46OmV4cGxvZGUoRSksIHNzY2FuZihFKQorICAgICAgICBpbXBsb2RlKEUpLCByZWdleHBsb2RlKEUpCmRpZmYgLS1naXQgYS9kb2Mvc2VmdW4vcHJvY2Vzc19jYWxsIGIvZG9jL3NlZnVuL3Byb2Nlc3NfY2FsbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5jMDBhMDM5Ci0tLSAvZGV2L251bGwKKysrIGIvZG9jL3NlZnVuL3Byb2Nlc3NfY2FsbApAQCAtMCwwICsxLDIxIEBACitzaW11bF9lZnVuOjpwcm9jZXNzX2NhbGwoRSkKK0ZVTktUSU9OOgorICAgICBpbnQgcHJvY2Vzc19jYWxsKCkKKworQkVTQ0hSRUlCVU5HOgorICAgICBHaWJ0IHp1cnVlY2ssIG9iIGRpZSBBdXNmdWVocnVuZyB6dW0gZGVyemVpdGlnZW4gWmVpdHB1bmt0IGR1cmNoCisgICAgIHByb2Nlc3Nfc3RyaW5nKCkgYXVzZ2VydWZlbiB3dXJkZS4KKworQkVJU1BJRUxFOgorICAgICBwcm9jZXNzX3N0cmluZygiQEBjdXJyZW50X2xvbmdAQCIpOworICAgICAuLi4KKyAgICAgc3RyaW5nIGN1cnJlbnRfbG9uZygpIHsKKyAgICAgIGlmKHByb2Nlc3NfY2FsbCgpKQorICAgICAgIHJldHVybigiRGllc2VyIFN0cmluZyB3dXJkZSBkdXJjaCBlaW4gcHJvY2Vzc19zdHJpbmcgZWluZ2VmdWVndC4iKTsKKyAgICAgIGVsc2UgcmV0dXJuKCJEdSBoYXN0IGRpZSBGdW5rdGlvbiBkaXJla3QgZ2VydWZlbiEiKTsKKyAgICAgfQorCitTSUVIRSBBVUNIOgorICAgICBub3RpZnlfZmFpbChFKSwgcHJvY2Vzc19zdHJpbmcoRSksIHJlcGxhY2VfcGVyc29uYWwoRSkKKworMjguIE1hZXJ6IDIwMDQgR2xvaW5zb24KZGlmZiAtLWdpdCBhL2RvYy9zZWZ1bi9wcm9jZXNzX3N0cmluZyBiL2RvYy9zZWZ1bi9wcm9jZXNzX3N0cmluZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi43NWM5MjkwCi0tLSAvZGV2L251bGwKKysrIGIvZG9jL3NlZnVuL3Byb2Nlc3Nfc3RyaW5nCkBAIC0wLDAgKzEsNTcgQEAKK3Byb2Nlc3Nfc3RyaW5nKEUpCitGVU5LVElPTjoKKyAgICAgc3RyaW5nIHByb2Nlc3Nfc3RyaW5nKHN0cmluZyBzdHIpCisgICAgIHN0cmluZyBwcm9jZXNzX3N0cmluZyhjbG9zdXJlIGNsKQorCitCRVNDSFJFSUJVTkc6CisgICAgIER1cmNoc3VjaHQgZGVuIFN0cmluZyBzdHIgbmFjaCBWb3Jrb21tbmlzc2VuIHZvbiBTdWJzdHJpbmdzLCBkaWUgIldlcnQKKyAgICAgZHVyY2ggRnVua3Rpb25zYXVmcnVmIHp1IGVyc2V0emVuIiBhbmRldXRlbi4gRGllIEZvcm0gaXN0OiBAQCwgZ2Vmb2xndAorICAgICBkdXJjaCBlaW5lbiBpbXBsaXppdGVuIEZ1bmt0aW9uc2F1ZnJ1Zi4KKworICAgICBEZXIgenUgZXJzZXR6ZW5kZW4gU3Vic3RyaW5nIGhhdCBkaWUgRm9ybToKKyAgICAgQEBmdW5jdGlvbls6ZmlsZW5hbWVdW3xhcmd1bWVudDF8YXJndW1lbnQyXUBACisKKyAgICAgRGllIGVudHNwcmVjaGVuZGUgRnVua3Rpb24gbXVzcyBlaW5lbiBTdHJpbmcgenVydWVja2dlYmVuLCBvZGVyIGRlcgorICAgICBwcm9jZXNzX3N0cmluZygpIHVlYmVyZ2ViZW5lIFN0cmluZyBzdHIgd2lyZCBuaWNodCBtb2RpZml6aWVydC4KKworICAgICBwcm9jZXNzX3N0cmluZygpIGFyYmVpdGV0IG5pY2h0IHJla3Vyc2l2LCBvYmplY3RfbmFtZSB1bmQgYXJndW1lbnQgc2luZAorICAgICBvcHRpb25hbGUgV2VydGUuCisKKyAgICAgRmFsbHMgZWluZSBDbG9zdXJlIGFuZ2VnZWJlbiB3dXJkZSwgd2lyZCBkaWVzZSBsZWRpZ2xpY2ggZ2VydWZlbgorICAgICB1bmQgbmljaHQgZ2VmaWx0ZXJ0LgorCitBTk1FUktVTkdFTjoKKyAgICAgLSBEaWUgRnVua3Rpb24sIGRpZSBnZXJ1ZmVuIHdlcmRlbiBzb2xsLCBfbXVzc18gbWl0IGVpbmVtIEJ1Y2hzdGFiZW4KKwkJICAgYW5mYW5nZW4sICdfJyBpc3QgbmljaHQgbW9lZ2xpY2ghCisgICAgIC0gZm9sZ2VuZGVzIFByb3BlcnRpZXMgdW5kIERldGFpbHMgd2VyZGVuIGJlaSBkZXIgQWJmcmFnZSB1ZWJlcgorICAgICAgIHByb2Nlc3Nfc3RyaW5nKCkgZ2VmaWx0ZXJ0OgorICAgICAgIFBfTE9ORywgUF9TSE9SVCwgUF9SRUFEX01TRywgQWRkUmVhZERldGFpbCgpLURldGFpbHMgdW5kIE5QQy1DaGF0cworICAgICAgIFBfSU5UX0xPTkcgdWViZXIgaW50X2xvbmcoKSwgUF9JTlRfU0hPUlQgdWViZXIgaW50X3Nob3J0KCkKKyAgICAgLSBkaWUgTnV0enVuZyBrYW5uIHp1IFNpY2hlcmhlaXRzcHJvYmxlbWVuIGZ1ZWhyZW4sIHNpZWhlIGF1Y2gKKyAgICAgICBwcm9jZXNzX2NhbGwoKQorCitCRUlTUElFTDoKKyAgICAgLy8ga29tcGxldHRlIEVyc2V0enVuZyAuLi4KKyAgICAgU2V0UHJvcChQX0xPTkcsIkBAY3VycmVudF9sb25nQEAiKTsKKyAgICAgLi4uCisgICAgIHN0cmluZyBjdXJyZW50X2xvbmcoKSB7CisgICAgICBpZih4KSByZXR1cm4oYnJlYWtfc3RyaW5nKCJEaWUgQmVzY2hyZWlidW5nLiIpKTsKKyAgICAgIGVsc2UgcmV0dXJuKGJyZWFrX3N0cmluZygiRGllIGFuZGVyZSBCZXNjaHJlaWJ1bmcuIikpOworICAgICB9CisKKyAgICAgLT4gYmVpIEFiZnJhZ2U6ICJEaWUgQmVzY2hyZWlidW5nLiIgb2RlciAiRGllIGFuZGVyZSBCZXNjaHJlaWJ1bmcuIgorCisKKyAgICAgLy8gVGVpbGVyc2V0enVuZworICAgICBTZXRQcm9wKFBfU0hPUlQsICJFaW4gQEBmYXJiZW5mdW58aHVlYnNjaEBAIERpbmciKTsKKyAgICAgLi4uCisgICAgIHN0cmluZyBmYXJiZW5mdW4oc3RyaW5nIHN0cikgeworICAgICAgcmV0dXJuKHN0cisiICIrImdlbGJlcyIpOworICAgICB9CisKKyAgICAgLT4gYmVpIEFiZnJhZ2U6ICJFaW4gaHVlYnNjaCBnZWxiZXMgRGluZy4iCisKK1NJRUhFIEFVQ0g6CisgICAgIG5vdGlmeV9mYWlsKEUpLCBwcm9jZXNzX2NhbGwoRSksIHJlcGxhY2VfcGVyc29uYWwoRSkKKworMjIuIE5vdi4gMjAwNiBBcmF0aG9ybgpkaWZmIC0tZ2l0IGEvZG9jL3NlZnVuL3F1ZXJ5X2VkaXRpbmcgYi9kb2Mvc2VmdW4vcXVlcnlfZWRpdGluZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4wMTBjOThlCi0tLSAvZGV2L251bGwKKysrIGIvZG9jL3NlZnVuL3F1ZXJ5X2VkaXRpbmcKQEAgLTAsMCArMSwxMyBAQAorREVQUkVDQVRFRAorU1lOT1BTSVMKKyAgICAgICAgbWl4ZWQgcXVlcnlfZWRpdGluZyhvYmplY3Qgb2IpOworCitCRVNDSFJFSUJVTkcKKyAgICAgICAgTGllZmVydCAxLCB3ZW5uIDxvYj4gaW50ZXJha3RpdiBpc3QgKGRhcyBoZWlzc3QsIGVzIGdpYnQgZWluZW4gcmVhbGVuCisgICAgICAgIEJlbnV0emVyIG1pdCBlaW5lciBTb2NrZXR2ZXJiaW5kdW5nIHp1bSBNdWQpIHVuZCBnZXJhZGUgbWl0IGVkKCkgZWluZQorICAgICAgICBEYXRlaSBiZWFyYmVpdGV0LiBXZW5uIGVkKCkgbWl0IGVpbmVtIEZ1bmt0aW9uc25hbWVuIGFscyB6d2VpdGVzCisgICAgICAgIEFyZ3VtZW50IGF1ZmdlcnVmZW4gd2lyZCwgd2lyZCBkYXMgT2JqZWt0LCBhdXMgZGVtIGVkKCkgYXVmZ2VydWZlbgorICAgICAgICB3dXJkZSwgZ2VsaWVmZXJ0LCBzb25zdCAwLgorCitTSUVIRSBBVUNICisgICAgICAgIGVkKEUpCmRpZmYgLS1naXQgYS9kb2Mvc2VmdW4vcXVlcnlfaWRsZSBiL2RvYy9zZWZ1bi9xdWVyeV9pZGxlCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjdjMGEwYTUKLS0tIC9kZXYvbnVsbAorKysgYi9kb2Mvc2VmdW4vcXVlcnlfaWRsZQpAQCAtMCwwICsxLDggQEAKK1NZTk9QU0lTCisgICAgICAgIGludCBxdWVyeV9pZGxlKG9iamVjdCBvYik7CisKK0JFU0NIUkVJQlVORworICAgICAgICBHaWJ0IGFuLCBzZWl0IHdpZSB2aWVsZW4gU2VrdW5kZW4gZWluIFBsYXllciBPYmpla3QgPG9iPiBpZGxlIGlzdC4KKworU0lFSEUgQVVDSAorICAgICAgICBpbnRlcmFjdGl2ZShFKQpkaWZmIC0tZ2l0IGEvZG9jL3NlZnVuL3F1ZXJ5X2lucHV0X3BlbmRpbmcgYi9kb2Mvc2VmdW4vcXVlcnlfaW5wdXRfcGVuZGluZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44MDMzY2VjCi0tLSAvZGV2L251bGwKKysrIGIvZG9jL3NlZnVuL3F1ZXJ5X2lucHV0X3BlbmRpbmcKQEAgLTAsMCArMSwxMSBAQAorREVQUkVDQVRFRAorU1lOT1BTSVMKKyAgICAgICAgb2JqZWN0IHF1ZXJ5X2lucHV0X3BlbmRpbmcob2JqZWN0IG9iKTsKKworQkVTQ0hSRUlCVU5HCisgICAgICAgIFdlbm4gPG9iPiBpbnRlcmFrdGl2IHVuZCBlaW4gaW5wdXRfdG8oKSBoYWVuZ2lnIGlzdCwgc28gbGllZmVydCBkaWUKKyAgICAgICAgRWZ1biBkYXMgT2JqZWt0IHp1cnVlY2ssIHdlbGNoZXMgZGVuIGlucHV0X3RvKCkgYXVmZ2VyZnVlbiBoYXQuIElzdAorICAgICAgICBrZWluIGlucHV0X3RvKCkgaGFlbmdpZywgbGllZmVydCBkaWUgRnVua3Rpb24gMC4KKworU0lFSEUgQVVDSAorICAgICAgICBpbnB1dF90byhFKSwgZmluZF9pbnB1dF90byhFKSwgaW5wdXRfdG9faW5mbyhFKSwgcmVtb3ZlX2lucHV0X3RvKEUpCmRpZmYgLS1naXQgYS9kb2Mvc2VmdW4vcXVlcnlfaXBfbmFtZSBiL2RvYy9zZWZ1bi9xdWVyeV9pcF9uYW1lCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmQxNjI5OGYKLS0tIC9kZXYvbnVsbAorKysgYi9kb2Mvc2VmdW4vcXVlcnlfaXBfbmFtZQpAQCAtMCwwICsxLDEyIEBACitHRVNDSFVFVFpUCitTWU5PUFNJUworICAgICAgICBzdHJpbmcgcXVlcnlfaXBfbmFtZShvYmplY3Qgb2IpOworCitCRVNDSFJFSUJVTkcKKyAgICAgICAgTGllZmVydCBkZW4gSVAtTmFtZW4gZGVzIFVzZXJzIDxvYj4gb2RlciBkZXMgYWt0dWVsbGVuIEJlbnV0emVycywgd2VubgorICAgICAgICA8b2I+IG5pY2h0IGFuZ2VnZWJlbiB3dXJkZS4gRGVyIElQLU5hbWUgd2lyZCBkdXJjaCBkZW4gYXN5bmNocm9uZW4KKyAgICAgICAgUHJvemVzcyBobmFtZSBlcm1pdHRlbHQuIFdlbm4gZGVyIElQLU5hbWUgbmljaHQgZXJtaXR0ZWx0IHdlcmRlbiBrYW5uLAorICAgICAgICBsaWVmZXJ0IHF1ZXJ5X2lwX25hbWUoKSBkaWUgSVAtTnVtbWVyIHp1cnVlY2suCisKK1NJRUhFIEFVQ0gKKyAgICAgICAgcXVlcnlfaXBfbnVtYmVyKEUpCmRpZmYgLS1naXQgYS9kb2Mvc2VmdW4vcXVlcnlfaXBfbnVtYmVyIGIvZG9jL3NlZnVuL3F1ZXJ5X2lwX251bWJlcgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5hNDYyYWJhCi0tLSAvZGV2L251bGwKKysrIGIvZG9jL3NlZnVuL3F1ZXJ5X2lwX251bWJlcgpAQCAtMCwwICsxLDI0IEBACitHRVNDSFVFVFpUCitTWU5PUFNJUworICAgICAgICBzdHJpbmcgcXVlcnlfaXBfbnVtYmVyKG9iamVjdCBvYik7CisgICAgICAgIHN0cmluZyBxdWVyeV9pcF9udW1iZXIobWl4ZWQgJiBvYik7CisKK0JFU0NIUkVJQlVORworICAgICAgICBMaWVmZXJ0IGRpZSBJUC1OdW1tZXIgZGVzIEJlbnV0emVycyA8b2I+IG9kZXIgZGVzIGFrdHVlbGxlbiBCZW51dHplcnMsCisgICAgICAgIHdlbm4gPG9iPiBuaWNodCBhbmdlZ2ViZW4gd3VyZGUuCisKKyAgICAgICAgV2VubiA8b2I+IGFscyBSZWZlcmVueiBhbmdlZ2ViZW4gd2lyZCAoZGFubiBtdXNzIGVzIGVpbiBndWVsdGlnZXMKKyAgICAgICAgT2JqZWt0IHNlaW4pLCB3aXJkIGRpZXNlcyBiZWkgZGVyIEF1c2dhYmUgYXVmIGRpZSBzdHJ1Y3Qgc29ja2FkZHJfaW4KKyAgICAgICAgZ2VzZXR6dC4gc3RydWN0IHNvY2thZGRyX2luIGlzdCBlaW4gSW50ZWdlci1BcnJheSwgbWl0IGVpbmVtIEludGVnZXIKKyAgICAgICAgcHJvIEFkcmVzc2J5dGU6CisKKyAgICAgICAgICAgIG9iWzAgLi4gMV0gOiBzaW5fZmFtaWx5CisgICAgICAgICAgICBvYlsyIC4uIDNdIDogc2luX3BvcnQKKyAgICAgICAgICAgIG9iWzQgLi4gN10gOiBzaW5fYWRkcgorICAgICAgICAgICAgb2JbOCAuLjE1XSA6IG5pY2h0IGRlZmluaWVydC4KKworQUVOREVSVU5HRU4KKyAgICAgICAgRGllIFJ1ZWNrZ2FiZSB2b24gc3RydWN0IHNvY2thZGRyX2luIHd1cmRlIGluIDMuMi4xQDgxIGVpbmdlZnVlaHJ0LgorCitTSUVIRSBBVUNICisgICAgICAgIHF1ZXJ5X2lwX25hbWUoRSkKZGlmZiAtLWdpdCBhL2RvYy9zZWZ1bi9xdWVyeV9saW1pdHMgYi9kb2Mvc2VmdW4vcXVlcnlfbGltaXRzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjk1NDU3N2EKLS0tIC9kZXYvbnVsbAorKysgYi9kb2Mvc2VmdW4vcXVlcnlfbGltaXRzCkBAIC0wLDAgKzEsNTYgQEAKK0RFUFJFQ0FURUQKK1NZTk9QU0lTCisgICAgICAgICNpbmNsdWRlIDxzeXMvcnRsaW1pdHMuaD4KKworICAgICAgICBpbnQgKnF1ZXJ5X2xpbWl0cygpOworICAgICAgICBpbnQgKnF1ZXJ5X2xpbWl0cyhpbnQgZGVmYXVsdCk7CisKK0JFU0NIUkVJQlVORworICAgICAgICBMaWVmZXJ0IGVpbiBBcnJheSBtaXQgZGVuIG1vbWVudGFuIGd1ZWx0aWdlbiBMYXVmemVpdCBMaW1pdGVuIGJ6dy4KKyAgICAgICAgZGllIHN0YW5kYXJkbWFlc3NpZ2VuIExhdWZ6ZWl0IExpbWl0ZW4sIHdlbm4gPGRlZmF1bHQ+IHdhaHIgaXN0LgorICAgICAgICBEaWUgRWludHJhZWdlIGltIGdlbGllZmVydGVuIEFycmF5IGJlZGV1dGVuOgorCisgICAgICAgIGludFtMSU1JVF9FVkFMXTogICAgICAgIGRpZSBtYXhpbWFsZW4gRXZhbCBLb3N0ZW4KKyAgICAgICAgaW50W0xJTUlUX0FSUkFZXTogICAgICAgZGllIG1heGltYWxlIEFuemFobCBBcnJheSBFaW50cmFlZ2UKKyAgICAgICAgaW50W0xJTUlUX01BUFBJTkddOiAgICAgZGllIG1heGltYWxlIEFuemFobCBNYXBwaW5nIEVpbnRyYWVnZQorICAgICAgICBpbnRbTElNSVRfQllURV06ICAgICAgICBkaWUgbWF4aW1hbGUgQW56YWhsIEJ5dGVzLCBkaWUgbWl0IHJlYWRfYnl0ZXMoKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvd3JpdGVfYnl0ZXMoKSBiZWFyYmVpdGV0IHdlcmRlbiBrb2VubmVuCisgICAgICAgIGludFtMSU1JVF9GSUxFXTogICAgICAgIGRpZSBtYXhpbWFsZSBBbnphaGwgQnl0ZXMsIGRpZSBtaXQgcmVhZF9maWxlKCkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgL3dyaXRlX2ZpbGUoKSBiZWFyYmVpdGV0IHdlcmRlbiBrb2VubmVuCisgICAgICAgIGludFtMSU1JVF9DQUxMT1VUU106ICAgIGRpZSBtYXhpbWFsZSBBbnphaGwgZ2xlaWNoemVpdGlnZXIgY2FsbF9vdXQoKXMKKyAgICAgICAgaW50W0xJTUlUX0NPU1RdOiAgICAgICAgd2llIGRpZSBha3R1ZWxsZW4gS29zdGVuIGVpbnp1cmVjaG5lbiBzaW5kCisKKyAgICAgICAgQXVzc2VyIGZ1ZXIgTElNSVRfQ09TVCBlaW4gTGltaXQgdm9uICcwJyAoYXVjaCBMSU1JVF9VTkxJTUlURUQpCisgICAgICAgIGJlZGV1dGV0ICdrZWluZSBMaW1pdCcuCisKKyAgICAgICAgTElNSVRfQ09TVCBoYXQgZGllc2UgQmVkZXV0dW5nZW46CisgICAgICAgICAgCisgICAgICAgICAgd2VydCA+IDA6IE1heGltYWwgPHdlcnQ+IGZ1ZXIgYWxzIEtvc3RlbiBmdWVyIGRpZSBha3R1ZWxsZSBBdXNmdWVocnVuZworICAgICAgICAgICAgICAgICAgICB2ZXJ3ZW5kZXQsIHVuZ2VhY2h0ZXQgd2llIGxhbmdlIHNpZSB0YXRzYWVjaGxpY2ggZGF1ZXJ0LgorICAgICAgICAgICAgICAgPSAwOiBpc3QgZGllIGRlcnplaXRlIExJTUlUX0VWQUwgZ3JvZXNzZXIgYWxzIGRpZSB2b3JoZXJpZ2UKKyAgICAgICAgICAgICAgICAgICAgTElNSVRfRVZBTCwga29zdGV0IGRpZSBha3R1ZWxsZSBBdXNmdWVocnVuZyBudXIgMTAKKyAgICAgICAgICAgICAgICAgICAgVGlja3M7IGFuZGVybmZhbGxzIHdlcmRlbiBkaWUgZ2VzYW10ZW4gS29zdGVuIGFuZ2VyZWNobmV0LgorICAgICAgICAgICAgICAgIDwgMDogKC13ZXJ0KSUgZGVyIGFrdHVlbGxlbiBBdXNmdWVocnVuZ3Nrb3N0ZW4gd2VyZGVuCisgICAgICAgICAgICAgICAgICAgICBhbmdlcmVjaG5ldC4KKworQkVNRVJLVU5HRU46CisgICAgICAgICJBa3R1ZWxsZSBLb3N0ZW4iIGJlaSBMSU1JVF9DT1NUIGhhdCBpbSBGYWxsZSBkZXIgQmVudXR6dW5nIHZvbgorICAgICAgICBsaW1pdGVkKCkgZGllIEJlZGV1dHVuZyB2b24gImltIGxpbWl0ZWQgdmVyYnJhdWNodGUgS29zdGVuIiwgc3RldWVydAorICAgICAgICBhbHNvLCB3aWV2aWVsIGRlciBpbSBEdXJjaGxhdWZlbiBkZXIgRnVua3Rpb24gaW0gbGltaXRlZCgpCisgICAgICAgIHZlcmJyYXVjaHRlbiBUaWNrcyBtaXQgZGVtIEVuZGUgdm9uIGxpbWl0ZWQoKSBhbmdlem9nZW4gd2lyZC4KKworQkVJU1BJRUxFCisgICAgICAgIHF1ZXJ5X2xpbWl0cygpCisgICAgICAgIC0tPiBsaWVmZXJ0IGRpZSBtb21lbnRhbiBndWVsdGlnZW4gTGF1ZnplaXQgTGltaXRlbi4KKyAgICAgICAgcXVlcnlfbGltaXRzKDEpCisgICAgICAgIC0tPiBsaWVmZXJ0IGRpZSBzdGFuZGFyZG1hZXNzaWdlbiBMYXVmemVpdCBMaW1pdGVuLgorCitBRU5ERVJVTkdFTgorICAgICAgICBFaW5nZWZ1ZWhydCBpbiBMRE11ZCAzLjIuNy4KKyAgICAgICAgTElNSVRfQ0FMTE9VVFMgd3VyZGUgaW4gTERNdWQgMy4yLjkgZWluZ2VmdWVocnQuCisKK1NJRUhFIEFVQ0gKKyAgICAgICAgbGltaXRlZChFKSwgc2V0X2xpbWl0cyhFKQorCisxNi4wNS4yMDA3LCBaZXNzdHJhCisKZGlmZiAtLWdpdCBhL2RvYy9zZWZ1bi9xdWVyeV9tdWRfcG9ydCBiL2RvYy9zZWZ1bi9xdWVyeV9tdWRfcG9ydApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4yZTVjNmQyCi0tLSAvZGV2L251bGwKKysrIGIvZG9jL3NlZnVuL3F1ZXJ5X211ZF9wb3J0CkBAIC0wLDAgKzEsMjMgQEAKK0RFUFJFQ0FURUQKK1NZTk9QU0lTCisgICAgICAgIGludCBxdWVyeV9tdWRfcG9ydCh2b2lkKQorICAgICAgICBpbnQgcXVlcnlfbXVkX3BvcnQob2JqZWN0IHVzZXIpCisgICAgICAgIGludCBxdWVyeV9tdWRfcG9ydChpbnQgbnVtKQorCitERVNDUklQVElPTgorICAgICAgICBSZXR1cm5zIHRoZSBwb3J0IG51bWJlciB0aGUgcGFyc2VyIHVzZXMgZm9yIHVzZXIgY29ubmVjdGlvbnMuCisKKyAgICAgICAgSWYgbm8gYXJndW1lbnQgaXMgZ2l2ZW4sIHRoZSBwb3J0IGZvciB0aGlzX3BsYXllcigpIGlzCisgICAgICAgIHJldHVybmVkLiBJZiB0aGlzX3BsYXllcigpIGlzIG5vdCBleGlzdGluZyBvciBub3QgaW50ZXJhY3RpdmUsCisgICAgICAgIHRoZSBmaXJzdCBwb3J0IG51bWJlciBvcGVuIGZvciBjb25uZWN0aW9ucyBpcyByZXR1cm5lZC4KKworICAgICAgICBJZiBhbiB1c2VyIG9iamVjdCBpcyBnaXZlbiwgdGhlIHBvcnQgdXNlZCBmb3IgaXRzIGNvbm5lY3Rpb24KKyAgICAgICAgaXMgcmV0dXJuZWQuCisgICAgICAgIElmIGEgcG9zaXRpdmUgbnVtYmVyIGlzIGdpdmVuLCB0aGUgPG51bT50aCBwb3J0IG51bWJlciB0aGUKKyAgICAgICAgcGFyc2VyIHVzZXMgZm9yIGNvbm5lY3Rpb25zIGlzIHJldHVybmVkIChnaXZlbiB0aGF0IHRoZXJlIGFyZQorICAgICAgICB0aGF0IG1hbnkgcG9ydHMpLgorICAgICAgICBJZiAtMSBpcyBnaXZlbiwgdGhlIG51bWJlciBvZiBwb3J0cyBvcGVuIGZvciBjb25uZWN0aW9ucyBpcworICAgICAgICByZXR1cm5lZC4KKworU0VFIEFMU08KKyAgICAgICAgcXVlcnlfdWRwX3BvcnQoRSkKZGlmZiAtLWdpdCBhL2RvYy9zZWZ1bi9xdWVyeV9uZXh0X3Jlc2V0IGIvZG9jL3NlZnVuL3F1ZXJ5X25leHRfcmVzZXQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMDNiYmQ3ZQotLS0gL2Rldi9udWxsCisrKyBiL2RvYy9zZWZ1bi9xdWVyeV9uZXh0X3Jlc2V0CkBAIC0wLDAgKzEsMjcgQEAKK3NpbXVsX2VmdW46OnF1ZXJ5X25leHRfcmVzZXQoRSkKK0ZVTktUSU9OOgorICAgICB2YXJhcmdzIGludCBxdWVyeV9uZXh0X3Jlc2V0KG9iamVjdCBvYikKKworQVJHVU1FTlRFOgorICAgICBvYiAtIGRhcyBpbnRlcmVzc2llcmVuZGUgT2JqZWt0OyB3ZW5uIG5pY2h0IGFuZ2VnZWJlbiwgd2lyZCAKKyAgICAgICAgICB0aGlzX29iamVjdCgpIHZlcndlbmRldAorCitCRVNDSFJFSUJVTkc6CisgICAgIERpZXNlIHNlZnVuIGdpYnQgZGVuIFplaXRwdW5rdCBkZXMgbmFlY2hzdGVuIFJlc2V0cyBkZXMgT2JqZWt0ZXMgb2IgCisgICAgIHp1cnVlY2suIERpZSBBbmdhYmUgZXJmb2xndCBpbiBTZWt1bmRlbiwgZGllIHNlaXQgZGVtIDAxLiBKYW51YXIgMTk3MCAKKyAgICAgMDA6MDA6MDAgR01UIHZlcnN0cmljaGVuIHNpbmQsIGFuYWxvZyB6dSB0aW1lKCkuCisKKyAgICAgSW4gZGVyIFJlZ2VsIGVyZm9sZ3QgZGVyIFJlc2V0IGltIG5hZWNoc3RlbiBCYWNrZW5kLVp5a2x1cyBuYWNoIGRlbSAKKyAgICAgRmFlbGxpZ2tlaXRzemVpdHB1bmt0LCAgZC5oLiBtb21lbnRhbiBpbiBkZW4gbmFjaGZvbGdlbmRlbiAycy4KKyAgICAgQWxsZXJkaW5ncyBrYW5uIGRpZXMgYXVjaCBtYWwgbmVuIFp5a2x1cyBsYWVuZ2VyIGRhdWVybiAoNHMpLCB3ZW5uIGRlcgorICAgICBEcml2ZXIgdmllbCB6dSB0dW4gaGF0LgorCitCRU1FUktVTkdFTjoKKyAgICAgRGllc2Ugc2VmdW4gaXN0IG9iamVjdF9pbmZvKCktQWJmcmFnZW4gdm9yenV6aWVoZW4sIGRhIGRpZSBQYXJhbWV0ZXIgdW5kCisgICAgIFJ1ZWNrZ2FiZXdlcnRlIHZvbiBvYmplY3RfaW5mbygpIGJlaSB2ZXJzY2hpZWRlbmVuIEdhbWVkcml2ZXJ2ZXJzaW9uZW4KKyAgICAgdmFyaWllcmVuIGtvZW5uZW4uCisKK1NJRUhFIEFVQ0g6CisgICAgIGNhbGxfb3V0KEUpLCBvYmplY3RfaW5mbyhFKSwgcmVzZXQoTCksIHNldF9uZXh0X3Jlc2V0KEUpLCB0aW1lKEUpCisKKzI4LjA3LjIwMTQgQXJhdGhvcm4KZGlmZiAtLWdpdCBhL2RvYy9zZWZ1bi9xdWVyeV9vbmNlX2ludGVyYWN0aXZlIGIvZG9jL3NlZnVuL3F1ZXJ5X29uY2VfaW50ZXJhY3RpdmUKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYzc5NDIyMwotLS0gL2Rldi9udWxsCisrKyBiL2RvYy9zZWZ1bi9xdWVyeV9vbmNlX2ludGVyYWN0aXZlCkBAIC0wLDAgKzEsOCBAQAorU1lOT1BTSVMKKyAgICAgICAgaW50IHF1ZXJ5X29uY2VfaW50ZXJhY3RpdmUob2JqZWN0IG9iaik7CisKK0JFU0NIUkVJQlVORworICAgICAgICBXYWhyLCB3ZW5uIDxvYmo+IGludGVyYWt0aXYgaXN0IG9kZXIgZGllcyBlaW5tYWwgd2FyLgorCitTSUVIRSBBVUNICisgICAgICAgIHJlbW92ZV9pbnRlcmFjdGl2ZShFKQpkaWZmIC0tZ2l0IGEvZG9jL3NlZnVuL3F1ZXJ5X3NoYWRvd2luZyBiL2RvYy9zZWZ1bi9xdWVyeV9zaGFkb3dpbmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uM2NlNWQ2YQotLS0gL2Rldi9udWxsCisrKyBiL2RvYy9zZWZ1bi9xdWVyeV9zaGFkb3dpbmcKQEAgLTAsMCArMSwxOCBAQAorREVQUkVDQVRFRAorcXVlcnlfc2hhZG93aW5nKEUpCitGVU5LVElPTjoKKyAgICAgb2JqZWN0IHF1ZXJ5X3NoYWRvd2luZyhvYmplY3Qgb2JqKQorCitCRVNDSFJFSUJVTkc6CisgICAgIERpZSBGdW5rdGlvbiBnaWJ0IGRhcyBkZXJ6ZWl0IHZvbSBPYmpla3QgPG9iaj4gYmVzY2hhdHRldGUgT2JqZWt0CisgICAgIHZpY3RpbSBvZGVyIDAgenVydWVjay4KKworQkVJU1BJRUxFOgorICAgICAvLyBCIGJlc2NoYXR0ZXQgQQorICAgICBxdWVyeV9zaGFkb3dpbmcoZmluZF9vYmplY3QoQikpID09IEEKKworU0lFSEUgQVVDSDoKKyAgICAgR2VuZXJlbGw6CSAgICAgc2hhZG93KEUpLCB1bnNoYWRvdyhFKQorICAgICBSZWNodGU6CSAgICAgcXVlcnlfYWxsb3dfc2hhZG93KE0pLCBxdWVyeV9wcmV2ZW50X3NoYWRvdyhMKQorCisyMy4wMi4yMDE2LCBaZXNzdHJhClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZG9jL3NlZnVuL3F1ZXJ5X3Nub29wIGIvZG9jL3NlZnVuL3F1ZXJ5X3Nub29wCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjRkYTg4MzgKLS0tIC9kZXYvbnVsbAorKysgYi9kb2Mvc2VmdW4vcXVlcnlfc25vb3AKQEAgLTAsMCArMSwxMCBAQAorREVQUkVDQVRFRAorU1lOT1BTSVMKKyAgICAgICAgb2JqZWN0IHF1ZXJ5X3Nub29wKG9iamVjdCB2aWN0aW0pCisKK0RFU0NSSVBUSU9OCisgICAgICAgIFJldHVybnMgdGhlIHVzZXIgd2hvIGN1cnJlbnRseSBzbm9vcHMgdmljdGltLiBUaGUgY2FsbGluZworICAgICAgICBvYmplY3QgbXVzdCBiZSBwcml2aWxlZ2VkIGJ5IHRoZSBtYXN0ZXIgb2JqZWN0LgorCitTRUUgQUxTTworICAgICAgICBzbm9vcChFKQpkaWZmIC0tZ2l0IGEvZG9jL3NlZnVuL3F1ZXJ5X3dpel9ncnAgYi9kb2Mvc2VmdW4vcXVlcnlfd2l6X2dycApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5jNDVjZmUxCi0tLSAvZGV2L251bGwKKysrIGIvZG9jL3NlZnVuL3F1ZXJ5X3dpel9ncnAKQEAgLTAsMCArMSwxNSBAQAorRlVOS1RJT046CisgICAgICAgIHF1ZXJ5X3dpel9ncnAoc3RyaW5nIHdpeikKKyAgICAgICAgcXVlcnlfd2l6X2dycChvYmplY3Qgd2l6KQorCitBUkdVTUVOVEU6CisgICAgICAgIHdpeiAtIFNwaWVsZXIsIGRlc3NlbiBNYWdpZXJsZXZlbGdydXBwZSBlcm1pdHRlbHQgd2VyZGVuIHNvbGwKKworQkVTQ0hSRUlCVU5HOgorICAgICAgICBEaWVzZSBGdW5rdGlvbiBlcm1pdHRlbHQgZGllIE1hZ2llcmdydXBwZSwgZGVyIGRlciBTcGllbGVyIHdpeiBhbmdlaG9lcnQuCisKK1JVRUNLR0FCRVdFUlQ6CisgICAgICAgIERpZSBNYWdpZXJsZXZlbGdydXBwZSBkZXMgU3BpZWxlcnMuCisKK1NJRUhFIEFVQ0g6CisgICAgICAgIC9zZWN1cmUvd2l6bGV2ZWxzLmgKZGlmZiAtLWdpdCBhL2RvYy9zZWZ1bi9xdWVyeV93aXpfbGV2ZWwgYi9kb2Mvc2VmdW4vcXVlcnlfd2l6X2xldmVsCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjAzZTg5Y2IKLS0tIC9kZXYvbnVsbAorKysgYi9kb2Mvc2VmdW4vcXVlcnlfd2l6X2xldmVsCkBAIC0wLDAgKzEsNDMgQEAKK0ZVTktUSU9OOgorCWludCBxdWVyeV93aXpfbGV2ZWwob2JqZWN0IG9iKQorCWludCBxdWVyeV93aXpfbGV2ZWwoc3RyaW5nIG9iKQorCitBUkdVTUVOVEU6CisJb2IgLSBEZXIgU3BpZWxlci9kYXMgT2JqZWt0LCBkZXNzZW4gTWFnaWVybGV2ZWwgZXJtaXR0ZWx0IHdlcmRlbiBzb2xsLgorICAgICAgIEVzIGthbm4gYXVjaCBlaW5lIFVJRCAoei5CLiAiemVzc3RyYSIsICJkLmluc2Vsbi56ZXNzdHJhIikgYWxzIFN0cmluZworICAgICAgIHVlYmVyZ2ViZW4gd2VyZGVuLgorCitCRVNDSFJFSUJVTkc6CisJcXVlcnlfd2l6X2xldmVsKCkgbGllZmVydCBkZW4gTWFnaWVybGV2ZWwgZGVzIE9iamVrdHMgb2IgenVydWVjay4KKwlOb3JtYWxlIFNwaWVsZXIgaGFiZW4gZWluZW4gTWFnaWVybGV2ZWwgdm9uIDAsIFNlaGVyIG5vcm1hbGVyd2Vpc2UKKyAgZWluZW4gdm9uIDEgKGF1ZiBqZWRlbiBGYWxsIDwgMTApLgorICBPYmpla3RlIGJla29tbWVuIGZvbGdlbmRlIExldmVsOgorICAvZC8gICAgICAgICAgIC0gMjUKKyAgL3AvICAgICAgICAgICAtIDIxCisgIC9vYmovICAgICAgICAgLSAwCisgIC9zdGQvICAgICAgICAgLSAwCisgIC9naWxkZW4vICAgICAgLSAzMAorICAvc3BlbGxib29rcy8gIC0gMzAKKyAgL3BsYXllcnMvICAgICAtIGVudHNwcmVjaGVuZCBNYWdpZXIsIDIwIC0gMTExCisgIC9zZWN1cmUvICAgICAgLSAxMDAKKworUlVFQ0tHQUJFV0VSVDoKKwlEZXIgTWFnaWVybGV2ZWwgZGVzIFNwaWVsZXJzL09iamVrdHMuCisKK0JFTUVSS1VOR0VOOgorCVdpcmQgYWxzIFBhcmFtZXRlciBlaW4gU3RyaW5nIG1pdCBlaW5lbSBTcGllbGVybmFtZW4gdWViZXJnZWJlbiwgc28gCisJa2FubiBhdWNoIGRlciBNYWdpZXJsZXZlbCBlaW5lcyBuaWNodCBlaW5nZWxvZ2d0ZW4gU3BpZWxlcnMgaGVyYXVzLQorCWdlZnVuZGVuIHdlcmRlbi4KKworQkVJU1BJRUxFOgorCWx2ID0gcXVlcnlfd2l6X2xldmVsKGZpbmRfcGxheWVyKCJqb2YiKSkKKwkgICA9PiBsdiA9IDExMSwgZmFsbHMgSm9mIGVpbmdlbG9nZ3QgaXN0LgorCWx2ID0gcXVlcnlfd2l6X2xldmVsKCJqb2YiKQorICAgICAgICAgICA9PiBsdiA9IDExMSBpbiBqZWRlbSBGYWxsLgorCitTSUVIRSBBVUNIOgorCS9zZWN1cmUvd2l6bGV2ZWxzLmgKKworTEVUWlRFIEFlTkRFUlVORzoKKzE1LjEwLjIwMDcsIFplc3N0cmEKKwpkaWZmIC0tZ2l0IGEvZG9jL3NlZnVuL3JlcGxhY2VfcGVyc29uYWwgYi9kb2Mvc2VmdW4vcmVwbGFjZV9wZXJzb25hbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4yYTE4ZGM3Ci0tLSAvZGV2L251bGwKKysrIGIvZG9jL3NlZnVuL3JlcGxhY2VfcGVyc29uYWwKQEAgLTAsMCArMSw4NCBAQAorRlVOS1RJT046CisgICAgIHZhcmFyZ3Mgc3RyaW5nIHJlcGxhY2VfcGVyc29uYWwoc3RyaW5nIHN0ciwgbWl4ZWQgKm9icyBbLCBpbnQgY2Fwc10pOworCitERUZJTklFUlQgSU46CisgICAgIC9zZWN1cmUvc2ltdWxfZWZ1bi5jCisKK0FSR1VNRU5URToKKyAgICAgc3RyICAgIC0genUgYmVhcmJlaXRlbmRlciBTdHJpbmcKKyAgICAgb2JzICAgIC0gTGlzdGUgdm9uIE9iamVrdDEsIE9iamVrdDIsIC4uLiwgT2JqZWt0OQorICAgICAgICAgICAgICAoT2JqZWt0ZSBvZGVyIFN0cmluZ3MpCisgICAgIGNhcHMgICAtIDEgZnVlciBHcm9zc3NjaHJlaWJ1bmcgZGVzIEVyc2V0enRlbiBuYWNoIFNhdHplbmRlbiAoLiw/LCEsIikKKyAgICAgICAgICAgICAgMCBzb25zdAorCitCRVNDSFJFSUJVTkc6CisgICAgIEVyc2V0enQgaW4gU3RyaW5ncworICAgICBAV0VSeCwgQFdFU1NFTngsIEBXRU14LCBAV0VOeCBkdXJjaAorICAgICAgICBPYmplY3R4LT5uYW1lKDxjYXN1cz4sIDEpOworICAgICBAV0VSVXgsIEBXRVNTRU5VeCwgQFdFTVV4LCBAV0VOVXggZHVyY2gKKyAgICAgICAgT2JqZWN0eC0+bmFtZSg8Y2FzdXM+KTsKKyAgICAgQFdFUlFQeCwgQFdFU1NFTlFQeCwgQFdFTVFQeCwgQFdFTlFQeCBkdXJjaAorICAgICAgICBPYmplY3R4LT5RdWVyeVByb25vdW4oPGNhc3VzPik7CisgICAgIEBXRVJRQXgsIEBXRVNTRU5RQXgsIEBXRU1RQXgsIEBXRU5RQXggZHVyY2gKKyAgICAgICAgT2JqZWN0eC0+UXVlcnlBcnRpY2xlKDxjYXN1cz4sIDEsIDEpOworICAgICBAV0VSUVBQR054LCBAV0VTU0VOUVBQR054LCBAV0VNUVBQR054LCBAV0VOUVBQR054IGR1cmNoCisgICAgICAgIE9iamVjdHgtPlF1ZXJ5UG9zc1Byb25vdW4oPGdlbmRlcj4sIDxjYXN1cz4sIDxudW1iZXI+KTsKKyAgICAgb2RlciBkZW4gZW50c3ByZWNoZW5kZW4gU3RyaW5nIGJlaSAiT2JqZWt0eCIuICAgICAgICAgICAgCisKK0JFTUVSS1VOR0VOOgorICAgICB4IHN0ZWh0IGZ1ZXIgZGllIFBvc2l0aW9uIGRlcyBPYmpla3RzL1N0cmluZ3MgaW4gKm9icywgYmVnaW5uZW5kIGJlaSAxLgorICAgICAKKyAgICAgQmVzb25kZXJoZWl0ZW4gYmVpbSBQb3NzZXNzaXZwcm9ub21lbiAoQFdFUlFQUEdOeCk6CisgICAgIEcgbXVzcyBkdXJjaCBkYXMgR2VzY2hsZWNodCAoTSwgRiBvZGVyIE4pIHVuZCBOIGR1cmNoIGRlbiBOdW1lcnVzIChTIAorICAgICBvZGVyIFApIGVyc2V0enQgd2VyZGVuLiAKKyAgICAgQWxsZSBBbmdhYmVuLCBhdWNoIGRlciBDQVNVUywgYmV6aWVoZW4gc2ljaCBkYWJlaSBhdWYgZGFzIE9iamVrdCwgd2VsY2hlcworICAgICBiZXNlc3NlbiB3aXJkLCBuaWNodCBhdWYgZGVuIEJlc2l0emVyISBEaWVzZXIgaXN0IGJlcmVpdHMgZHVyY2ggeCAKKyAgICAgYmVzdGltbXQuCisgICAgIAorUlVlQ0tHQUJFV0VSVDoKKyAgICAgZHVyY2hlcnNldHp0ZXIgU3RyaW5nIAorICAgICAKK0JlaXNwaWVsZToKKworICAgICByZXBsYWNlX3BlcnNvbmFsKCJAV0VSMSIsICh7ZmluZF9wbGF5ZXIoImdsb2luc29uIil9KSkKKyAgICAgPT0gIkdsb2luc29uIgorICAgICAKKyAgICAgcmVwbGFjZV9wZXJzb25hbCgiQFdFTVFQMSIsICh7ZmluZF9wbGF5ZXIoImdsb2luc29uIil9KSkKKyAgICAgPT0gImlobSIgICAgIAorICAgICAKKyAgICAgLy8gdW5iZXN0aW1tdGVyIHVuZCBiZXN0aW1tdGVyIEFydGlrZWw6CisgICAgIHJlcGxhY2VfcGVyc29uYWwoIkBXRVIxIHp1ZWNrdCBAV0VOVTIgdW5kIHZlcmhhdXQgQFdFTjMuIiwgCisgICAgICAgICAgICAgICAgICAgICAgKHtmaW5kX3BsYXllcigiZ2xvaW5zb24iKSwKKyAgICAgICAgICAgICAgICAgICAgICAgIGZpbmRfb2JqZWN0KCIvb2JqL21wYSIpLCAKKyAgICAgICAgICAgICAgICAgICAgICAgIGZpbmRfb2JqZWN0KCIvb2JqL3dhbmRlcmVyIil9KSkKKyAgICAgPT0gIkdsb2luc29uIHp1ZWNrdCBlaW5lIFplaXR1bmcgdW5kIHZlcmhhdXQgZGVuIFdhbmRlcmVyLiIKKyAgICAgCisgICAgIC8vIEJlaW0gUG9zc2Vzc2l2cHJvbm9tZW4gYmV6aWVoZW4gc2ljaCBXRU4sIEYgdW5kIFAgKEFra3VzYXRpdiwKKyAgICAgLy8gRmVtaW5pbnVtLCBQbHVyYWwpIGF1ZiBkaWUgVGFzY2hlbiwgbmljaHQgYXVmIEtlc3NhOgorICAgICByZXBsYWNlX3BlcnNvbmFsKCJAV0VSMSBzdGVja3QgQFdFU1NFTjIgVHVybnNjaHVoZSBpbiBAV0VOUVBQRlAxICIKKyAgICAgICAgICAgICAgICAgICAgICAiVGFzY2hlbi4iLCAKKyAgICAgICAgICAgICAgICAgICAgICAoe2ZpbmRfcGxheWVyKCJrZXNzYSIpLCAKKyAgICAgICAgICAgICAgICAgICAgICAgIGZpbmRfcGxheWVyKCJnbG9pbnNvbiIpfSkpCisgICAgID09ICJLZXNzYSBzdGVja3QgR2xvaW5zb25zIFR1cm5zY2h1aGUgaW4gaWhyZSBUYXNjaGVuLiIKKworICAgICAvLyBFaW4gQmVpc3BpZWwgbWl0IGxhZW5nZXJlbSAqb2JzOgorICAgICByZXBsYWNlX3BlcnNvbmFsKCJAV0VSMSB6aWVodCBAV0VOUVBQTVAxIG5ldWVuIFR1cm5zY2h1aGUgYW4uIEBXRVIyIGlzdCAiCisgICAgICAgICAgICAgICAgICAgICAgInNvIGJlZWluZHJ1Y2t0LCBkYXNzIEBXRVJRUDIgQFdFTVFQMSBAV0VOVTMgYXVmIGRpZSAiCisgICAgICAgICAgICAgICAgICAgICAgIkBXRU40IGhhdXQgdW5kIGRpZSBTY2h1aGUgaW4gQFdFTVFQUEZTMiBUYXNjaGUgIgorICAgICAgICAgICAgICAgICAgICAgICJ2ZXJzY2h3aW5kZW4gbGFlc3N0LiBAV0VSVTUgc2NoYXV0IHp1IHVuZCBraWNoZXJ0ICIKKyAgICAgICAgICAgICAgICAgICAgICAiaXJyZS4gV2VubiBkYXMgQFdFUjYgZ2VzZWhlbiBoYWV0dGUhIiwKKyAgICAgICAgICAgICAgICAgICAgICAoe2ZpbmRfcGxheWVyKCJnbG9pbnNvbiIpLCAKKyAgICAgICAgICAgICAgICAgICAgICAgIGZpbmRfcGxheWVyKCJrZXNzYSIpLAorICAgICAgICAgICAgICAgICAgICAgICAgZmluZF9vYmplY3QoIi9vYmovbXBhIiksICAgICAgICAgICAgICAgICAgICAgICAgCisgICAgICAgICAgICAgICAgICAgICAgICAiQmlybmUiLAorICAgICAgICAgICAgICAgICAgICAgICAgZmluZF9vYmplY3QoIi9vYmovd2FuZGVyZXIiKSwKKyAgICAgICAgICAgICAgICAgICAgICAgIGZpbmRfbmV0ZGVhZCgiam9mIil9KSwxKQorICAgICA9PSAiR2xvaW5zb24gemllaHQgc2VpbmUgbmV1ZW4gVHVybnNjaHVoZSBhbi4gS2Vzc2EgaXN0IHNvIGJlZWluZHJ1Y2t0LCAiCisgICAgICAgICJkYXNzIHNpZSBpaG0gZWluZSBaZWl0dW5nIGF1ZiBkaWUgQmlybmUgaGF1dCB1bmQgZGllIFNjaHVoZSBpbiBpaHJlciAiCisgICAgICAgICJUYXNjaGUgdmVyc2Nod2luZGVuIGxhZXNzdC4gRWluIFdhbmRlcmVyIHNjaGF1dCB6dSB1bmQga2ljaGVydCAiCisgICAgICAgICJpcnJlLiBXZW5uIGRhcyBKb2YgZ2VzZWhlbiBoYWV0dGUhIgorCitTSUVIRSBBVUNIOgorICAgICBBZGRDbWQoTCkKKworMDUuIFNlcHRlbWJlciAyMDE1LCBBcmF0aG9ybgpkaWZmIC0tZ2l0IGEvZG9jL3NlZnVuL3NhdmVfb2JqZWN0IGIvZG9jL3NlZnVuL3NhdmVfb2JqZWN0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmIxNzQzYjEKLS0tIC9kZXYvbnVsbAorKysgYi9kb2Mvc2VmdW4vc2F2ZV9vYmplY3QKQEAgLTAsMCArMSwxOSBAQAorU1lOT1BTSVMKKyAgICAgICAgbWl4ZWQgc2F2ZV9vYmplY3Qoc3RyaW5nIG5hbWUpOworCitCRVNDSFJFSUJVTkcKKyAgICAgICAgRGllc2UgU2ltdWwtRWZ1biB1bnRlcnNjaGVpZGV0IHNpY2ggaW4gZWluaWdlbiBEZXRhaWxzIHZvbiBkZXIKKyAgICAgICAgRHJpdmVyLUVmdW4gc2F2ZV9vYmplY3QoKSAocy4gYXVjaCBkb3J0ISBXaWNodGlnISkuCisgICAgICAgIDEuIGRpZXNlIHNlZnVuIHNwZWljaGVydCBhdWNoIGRpZSBtaXQgRl9TQVZFIG1hcmtpZXJ0ZW4gUHJvcGVydGllcworICAgICAgICBlaW5lcyBPYmpla3RlcyBhYiAod2FzIGRpZSBlZnVuIGRlcyBEcml2ZXIgbmljaHQgdHV0ISkuCisgICAgICAgIDIuIGRhcyBGb3JtYXQsIGluIGRlbSBnZXNwZWljaGVydCB3aXJkLCBrYW5uIGJlaSBkZXIgc2VmdW4gbmljaHQKKyAgICAgICAgYXVzZ2V3YWVobHQgd2VyZGVuIChpc3QgYWJlciBhdWNoIG5pY2h0IG5vZXRpZyEpLCBzb25kZXJuIGVpbgorICAgICAgICBtdWRsaWItd2VpdGVyIFN0YW5kYXJkIHdpcmQgYmVudXR6dC4KKyAgICAgICAgMy4gd2lsbCBtYW4gbmljaHQgaW4gZWluZW0gRmlsZSBzcGVpY2hlcm4sIHNvbmRlcm4gZGFzLCB3YXMgaW0gRmlsZQorICAgICAgICBzdGVoZW4gd3VyZGUsIGFscyBTdHJpbmcgenVydWVja2hhYmVuLCBtdXNzIG1hbiAwIGFscyAnbmFtZScKKyAgICAgICAgdWViZXJnZWJlbi4KKworU0lFSEUgQVVDSAorICAgICAgICBzYXZlX29iamVjdChFKSwgcmVzdG9yZV9vYmplY3QoRSksIHNhdmVfdmFsdWUoRSkKKzAzLjA4LjIwMDcsIFplc3N0cmEKKwpkaWZmIC0tZ2l0IGEvZG9jL3NlZnVuL3NlbmRfcm9vbSBiL2RvYy9zZWZ1bi9zZW5kX3Jvb20KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMjRiMDVmYQotLS0gL2Rldi9udWxsCisrKyBiL2RvYy9zZWZ1bi9zZW5kX3Jvb20KQEAgLTAsMCArMSwzMCBAQAorRlVOS1RJT046Cit2YXJhcmdzIHZvaWQgc2VuZF9yb29tKG9iamVjdHxzdHJpbmcgcm9vbSwgc3RyaW5nIG1zZywgaW50IG1zZ190eXBlLAorICAgICAgICAgICAgICAgICAgICAgICBzdHJpbmcgbXNnX2FjdGlvbiwgc3RyaW5nIG1zZ19wcmVmaXgsCisgICAgICAgICAgICAgICAgICAgICAgIG9iamVjdCAqZXhjbHVkZSwgb2JqZWN0IG9yaWdpbikKKworQkVTQ0hSRUlCVU5HOgorICAgICAgICBTZW5kZXQgbXNnIGFuIGFsbGUgT2JqZWt0ZSBpbiByb29tIGR1cmNoIEF1ZnJ1ZiB2b24gUmVjZWl2ZU1zZygpIG1pdAorICAgICAgICBkZW4gdWViZXJnZWJlbmVuIEFyZ3VtZW50ZW4uCisgICAgICAgIFp1ciBCZWRldXR1bmcgZGVyIEFyZ3VtZW50ZSBzaWVoZSBNYW5wYWdlIHZvbiBSZWNlaXZlTXNnKCkuCisKKyAgICAgICAgV2VubiBkYXMgUmF1bW9iamVrdCBtaXQgc2VpbmVtIE5hbWVuIGFuZ2VnZWJlbiBpc3QsIHdpcmQgZGFzIE9iamVrdAorICAgICAgICB1bnRlciBkaWVzZW0gTmFtZW4gZ2VzdWNodCB1bmQgdW5kIGdlbGFkZW4sIGZhbGxzIG5vdHdlbmRpZy4KKworICAgICAgICBNaXQgZGVtIEFycmF5IDwqZXhjbHVkZT4ga2FubiBtYW4gdmVyaGluZGVybiwgZGFzcyBkaWUgTmFjaHJpY2h0IGFuCisgICAgICAgIGRpZSBkYXJpbiBlbnRoYWx0ZW5lbiBPYmpla3RlIGdlc2VuZGV0IHdpcmQuCisgICAgICAgIERhcyBpc3Qgc2lubnZvbGwsIHdlbm4gekIgZWluIFNwaWVsZXIgQXVzbG9lc2VyIGVpbmVyIE1lbGR1bmcgaXN0CisgICAgICAgIHVuZCBkaWVzZSBzZWxic3QgbmljaHQgZXJoYWx0ZW4gc29sbC4KKworICAgICAgICBvcmlnaW4gZ2lidCBhbiwgd2VsY2hlcyBPYmpla3QgZGllIE1lbGR1bmcgYXVzbG9lc3QgKG11c3MgbmljaHQgZGFzCisgICAgICAgIHNlbmRlbmRlIE9iamVrdCBzZWxiZXIpIHVuZCB3aXJkIHZvciBhbGxlbSBmdWVyIGRpZSBJZ25vcmllcmVwcnVlZnVuZworICAgICAgICB2ZXJ3ZW5kZXQuIERlZmF1bHQgaXN0IGRhcyBzZW5kZW5kZSBPYmpla3QuCisKKyAgICAgICAgTGV0enRlbmRsaWNoIGlzdCBkaWUgc2VmdW4gdmVyZ2xlaWNoYmFyIHp1IHRlbGxfcm9vbSgpLgorCitTSUVIRSBBVUNICisgICAgICAgIFJlY2VpdmVNc2coTCkKKyAgICAgICAgdGVsbF9vYmplY3QoRSksIHRlbGxfcm9vbShFKSwgc2F5KEUpLCB3cml0ZShFKQorCisxMy4wMy4yMDE2LCBaZXNzdHJhCisKZGlmZiAtLWdpdCBhL2RvYy9zZWZ1bi9zZXRfaGVhcnRfYmVhdCBiL2RvYy9zZWZ1bi9zZXRfaGVhcnRfYmVhdApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44Mzc3NTllCi0tLSAvZGV2L251bGwKKysrIGIvZG9jL3NlZnVuL3NldF9oZWFydF9iZWF0CkBAIC0wLDAgKzEsMjMgQEAKK1NZTk9QU0lTCisgICAgICAgIGludCBzZXRfaGVhcnRfYmVhdChpbnQgZmxhZyk7CisKK0JFU0NIUkVJQlVORworICAgICAgICBTY2hhbHRldCBkZW4gSGVhcnRiZWF0IGVpbiAoMSkgb2RlciBhdXMgKDApLiBEZXIgVHJlaWJlciB3ZW5kZXQgZGllCisgICAgICAgIExmdW4gaGVhcnRfYmVhdCgpIGF1ZiBkYXMgYWt0dWVsbGUgT2JqZWt0IGFsbGUgX19IRUFSVEJFQVRfSU5URVJWQUxfXworICAgICAgICBTZWt1bmRlbiBhbiwgd2VubiBkZXIgSGVhcnRiZWF0IGVpbmdlc2NoYWx0ZXQgaXN0LiBFaW4gU2hhZG93CisgICAgICAgIGF1ZiBkZXIgTGZ1biB3aXJkIGlnbm9yaWVydC4KKyAgICAgICAgCisgICAgICAgIERlciBIZWFydGJlYXQgc29sbHRlIGltbWVyIGF1c2dlc2NoYWx0ZXQgd2VyZGVuLCB3ZW5uIGVyIG5pY2h0CisgICAgICAgIGdlYnJhdWNodCB3aXJkLiBEYXMgcmVkdXppZXJ0IGRpZSBTeXN0ZW1hdXNsYXN0dW5nLgorCisgICAgICAgIExpZWZlcnQgJzEnIGJlaSBFcmZvbGcsICcwJyBiZWkgRmVobGVyLgorCisgICAgICAgIERhcyBBYnNjaGFsdGVuIGVpbmVzIGJlcmVpdHMgYWJnZXNjaGFsdGV0ZW4gSGVhcnRiZWF0cyAodW5kIHVtZ2VrZWhydAorICAgICAgICBkYXMgRWluc2NoYWx0ZW4gZWluZXMgYmVyZWl0cyBlaW5nZXNjaGFsdGV0ZW4gSGVhcnRiZWF0cykgemFlaGx0CisgICAgICAgIGFscyBGZWhsZXIuCisKK0JFTUVSS1VOR0VOCisgICAgICAgIF9fSEVBUlRCRUFUX0lOVEVSVkFMX18gaXN0IGluIE1HID0gMiBTZWt1bmRlbgorCitTSUVIRSBBVUNICisgICAgICAgIGhlYXJ0X2JlYXQoQSksIGNhbGxfb3V0KEUpCmRpZmYgLS1naXQgYS9kb2Mvc2VmdW4vc2V0X2xpZ2h0IGIvZG9jL3NlZnVuL3NldF9saWdodApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi42MjM5MGM0Ci0tLSAvZGV2L251bGwKKysrIGIvZG9jL3NlZnVuL3NldF9saWdodApAQCAtMCwwICsxLDE3IEBACitTWU5PUFNJUzoKKyAgICAgICAgaW50IHNldF9saWdodChpbnQgbikKKworREVTQ1JJUFRJT046CisgICAgICAgIEFuIG9iamVjdCBpcyBieSBkZWZhdWx0IGRhcmsuIEl0IGNhbiBiZSBzZXQgdG8gbm90IGRhcmsgYnkKKyAgICAgICAgY2FsbGluZyBzZXRfbGlnaHQoMSkuIFRoZSBlbnZpcm9ubWVudCB3aWxsIHRoZW4gYWxzbyBnZXQgdGhpcworICAgICAgICBsaWdodC4gVGhlIHJldHVybmVkIHZhbHVlIGlzIHRoZSB0b3RhbCBudW1iZXIgb2YgbGlnaHRzIGluCisgICAgICAgIHRoaXMgcm9vbS4gU28gaWYgeW91IGNhbGwgc2V0X2xpZ2h0KDApIGl0IHdpbGwgcmV0dXJuIHRoZQorICAgICAgICBsaWdodCBsZXZlbCBvZiB0aGUgY3VycmVudCBvYmplY3QuCisgICAgICAgIAorICAgICAgICBOb3RlIHRoYXQgdGhlIHZhbHVlIG9mIHRoZSBhcmd1bWVudCBpcyBhZGRlZCB0byB0aGUgbGlnaHQgb2YKKyAgICAgICAgdGhlIGN1cnJlbnQgb2JqZWN0LgorCitCVUdTOgorCVRoaXMgaGFuZGxpbmcgb2YgbGlnaHQgYnkgdGhlIHBhcnNlciBpcyBpbmFwcHJvcHJpYXRlIGZvciBtb3N0CisJcHVycG9zZXM6IElmIHlvdSBwdXQgYSBidXJuaW5nIGNhbmRsZSBpbnRvIGEgc2FmZSwgdGhlIHNhZmUKKwl3aWxsIHN0YXJ0IHRvIGVtaXQgbGlnaHQuCmRpZmYgLS1naXQgYS9kb2Mvc2VmdW4vc2V0X2xpdmluZ19uYW1lIGIvZG9jL3NlZnVuL3NldF9saXZpbmdfbmFtZQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4zNjBhM2NlCi0tLSAvZGV2L251bGwKKysrIGIvZG9jL3NlZnVuL3NldF9saXZpbmdfbmFtZQpAQCAtMCwwICsxLDI1IEBACitTWU5PUFNJUzoKKyAgICAgICAgdm9pZCBzZXRfbGl2aW5nX25hbWUoc3RyaW5nIG5hbWUpCisKK0JFU0NIUkVJQlVORzoKKyAgICAgICAgU2V0enQgZWluZW4gIkxlYmV3ZXNlbm5hbWVuIiBmdWVyIGRhcyBPYmpla3QsIGluZGVtIE5hbWUgdW5kIE9iamVrdCBpbgorICAgICAgICBlaW5lIFRhYmVsbGUgZWluZ2V0cmFnZW4gd2VyZGVuLCB3ZWxjaGUgdm9uIGZpbmRfbGl2aW5nKCkgZHVyY2hzdWNodCAKKyAgICAgICAgd2lyZC4gTmFjaCBTZXR6ZW4gZGVzIE5hbWVucyBrYW5uIGRhcyBPYmpla3QgcGVyIGZpbmRfbGl2aW5nKCkgCisgICAgICAgIGdlZnVuZGVuIHdlcmRlbi4KKworICAgICAgICBEYXMgT2JqZWt0IG11c3MgYXVzc2VyZGVtIHBlciBlbmFibGVfY29tbWFuZHMoKSBhbHMgTGViZXdlc2VuCisgICAgICAgIG1hcmtpZXJ0IHdvcmRlbiBzZWluLiBEaWVzIGlzdCBmdWVyIGFsbGUgdm9uIC9zdGQvbnBjIGVyYmVuZGVuIE5QQ3MKKyAgICAgICAgX2F1dG9tYXRpc2NoXyBkZXIgRmFsbCB1bmQgc29sbHRlIGRhaGVyIG5pY2h0IG5vY2htYWwgZXhwbGl6aXQgZ2VtYWNodAorICAgICAgICB3ZXJkZW4uCisKKyAgICAgICAgQWxsZSB2b24gL3N0ZC9ucGMgZXJiZW5kZW4gTlBDcyBzZXR6ZW4gZWJlbmZhbGxzIGF1dG9tYXRpc2NoIGVpbmVuCisgICAgICAgIExpdmluZ05hbWUsIGRlciBsb3dlcl9jYXNlKFBfTkFNRSkgZW50c3ByaWNodC4KKworICAgICAgICBFaW4gT2JqZWt0IGthbm4gbnVyIGVpbmVuIE5hbWVuIGhhYmVuLCBtaXQgZGVtIGVzIHBlciBmaW5kX2xpdmluZygpCisgICAgICAgIGdlc3VjaHQgd2VyZGVuIGthbm4uCisKK1NJRUhFIEFVQ0g6CisgICAgICAgIGZpbmRfbGl2aW5nKEUpLCBmaW5kX2xpdmluZ3MoRSksIGZpbmRfcGxheWVyKEUpLCBlbmFibGVfY29tbWFuZHMoRSkKKworTEVUWlRFIEFlTkRFUk5HOgorMTkuMTAuMjAxNSwgQXJhdGhvcm4KZGlmZiAtLWdpdCBhL2RvYy9zZWZ1bi9zZXRfb2JqZWN0X2hlYXJ0X2JlYXQgYi9kb2Mvc2VmdW4vc2V0X29iamVjdF9oZWFydF9iZWF0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmE3YmE0ZWYKLS0tIC9kZXYvbnVsbAorKysgYi9kb2Mvc2VmdW4vc2V0X29iamVjdF9oZWFydF9iZWF0CkBAIC0wLDAgKzEsMTUgQEAKK0ZVTktUSU9OOgorICAgICAgICBpbnQgc2V0X29iamVjdF9oZWFydF9iZWF0KG9iamVjdCBvYiwgaW50IG9uKQorCitBUkdVTUVOVEU6CisgICAgICAgIG9iIC0gT2JqZWt0LCBkZXNzZW4gaGVhcnRfYmVhdCB2ZXJhZW5kZXJ0IHdlcmRlbiBzb2xsCisgICAgICAgIG9uIC0gU29sbCBkZXIgaGVhcnRfYmVhdCBlaW4tIG9kZXIgYXVzZ2VzY2hhbHRldCB3ZXJkZW4/CisKK0JFU0NIUkVJQlVORzoKKyAgICAgICAgRGVyIGhlYXJ0X2JlYXQgZGVzIE9iamVrdGVzIHdpcmQgZWluLSAob249MSkgb2RlciBhdXMtIChvbj0wKSBnZXNjaGFsdGV0LgorCitSVUVDS0dBQkVXRVJUOgorICAgICAgICAxLCB3ZW5uIGRhcyBTZXR6ZW4gZ2VrbGFwcHQgaGF0LCBhbnNvbnN0ZW4gMC4KKworU0lFSEUgQVVDSDoKKyAgICAgICAgc2V0X2hlYXJ0X2JlYXQoRSksIGhlYXJ0X2JlYXQoTCksIGNhbGxfb3V0KEUpCmRpZmYgLS1naXQgYS9kb2Mvc2VmdW4vc2hhMSBiL2RvYy9zZWZ1bi9zaGExCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjAwYmI2Y2MKLS0tIC9kZXYvbnVsbAorKysgYi9kb2Mvc2VmdW4vc2hhMQpAQCAtMCwwICsxLDIyIEBACitERVBSRUNBVEVECitTWU5PUFNJUworICAgICAgICBzdHJpbmcgc2hhMSAoc3RyaW5nIGFyZykKKyAgICAgICAgc3RyaW5nIHNoYTEgKGludCAqICBhcmcpCisKK0JFU0NIUkVJQlVORworICAgICAgICBCZXJlY2huZXQgZGVuIFNIQTEtSGFzaHdlcnQgdm9uIDxhcmc+LgorICAgICAgICBEYXMgQXJndW1lbnQga2FubiBlaW4gU3RyaW5nLCBvZGVyIGVpbiBBcnJheSB2b24gWmFobGVuIHNlaW4gKHZvbgorICAgICAgICB3ZWxjaGVuIG51ciBkYXMgdW50ZXJzdGUgQnl0ZSBiZXRyYWNodGVkIHdpcmQpLgorCitCRUlTUElFTAorICAgICAgICBzdHJpbmcgczsKKworICAgICAgICBzID0gc2hhMSgiSGVsbG8iKTsKKyAgICAgICAgcyA9IHNoYTEoICh7ICdIJywgJ2UnLCAnbCcsICdsJywgJ28nIH0pCisKK0hJU1RPUlkKKyAgICAgICAgRWluZ2VmdWVocnQgaW4gTERNdWQgMy4zLjUyMy4KKyAgICAgICAgTERNdWQgMy4zLjcxMiBmdWVocnRlIFphZWhsZW5hcnJheXMgYWxzIEFyZ3VtZW50IGVpbi4KKworU0lFSEUgQVVDSAorICAgICAgICBjcnlwdChFKSwgbWQ1KEUpCmRpZmYgLS1naXQgYS9kb2Mvc2VmdW4vc2hhZG93IGIvZG9jL3NlZnVuL3NoYWRvdwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi45MzA5ZGVhCi0tLSAvZGV2L251bGwKKysrIGIvZG9jL3NlZnVuL3NoYWRvdwpAQCAtMCwwICsxLDE0MyBAQAorRlVOS1RJT046CisgICAgIG9iamVjdCBzaGFkb3cob2JqZWN0IG9iLCBpbnQgZmxhZykKKworQVJHVU1FTlRFOgorICAgICBvYmplY3Qgb2IJCS0gZGFzIHZvbSBzaGFkb3cgYmV0cm9mZmVuZSBPYmpla3QKKyAgICAgaW50IGZsYWcJCS0gMCBmdWVyIGVpbmUgU2hhZG93LUV4aXN0ZW56YWJmcmFnZQorICAgICAgICAgICAgICAgICAgICAgIDEgZnVlciBTaGFkb3cgZHVyY2ggcHJldmlvdXNfb2JqZWN0KCkKKworQkVTQ0hSRUlCVU5HOgorICAgICBXZW5uIDxmbGFnPiBuaWNodCAwIGlzdCwgd2lyZCBkYXMgYWt0dWVsbGUgT2JqZWt0IGRlbSBPYmpla3Qgb2JqCisgICAgIGFscyBTaGFkb3cgdWViZXJnZXdvcmZlbi4gQmVpIEVyZm9sZyB3aXJkIGRhcyBnZXNoYWRvd3RlIE9iamVrdAorICAgICB6dXJ1ZWNrZ2VnZWJlbiwgc29uc3QgMC4KKyAgICAgV2VubiA8ZmxhZz4gMCBpc3QsIHdpcmQgZW50d2VkZXIgMCBvZGVyIGRhcyBnZXNoYWRvd3RlIE9iamVrdAorICAgICB6dXJ1ZWNrIGdlZ2ViZW4uCisKKyAgICAgV2VubiBlaW4gT2JqZWt0IEEgZWluIE9iamVrdCBCIGJlc2NoYXR0ZXQsIHdlcmRlbiBhbGxlIGNhbGxfb3RoZXIoKSBmdWVyCisgICAgIEIgYXVmIEEgdW1nZWxlaXRldC4gV2VubiBkaWUgYW4gQiBnZXJ1ZmVuZSBGdW5rdGlvbiBpbiBBIGV4aXN0aWVydCwgc28KKyAgICAgd2lyZCBzaWUgaW4gQSBnZXJ1ZmVuLCBiZWkgTmljaHRleGlzdGVueiBpbiBCLgorICAgICBBIGlzdCBkYXMgZWluemlnZSBPYmpla3QsIHdlbGNoZSBkaWUgYmVzY2hhdHRldGVuIEZ1bmt0aW9uZW4gbWl0IAorICAgICBjYWxsX290aGVyKCkgaW4gQiBhdWZydWZlbiBrYW5uLCBzZWxic3QgQiBrYW5uIG5pY2h0IHBlciBjYWxsX290aGVyKCkgCisgICAgIGRpZXNlIEZ1bmt0aW9uIHJ1ZmVuLgorICAgICBBbGxlIGludGVybiB2ZXJ3ZW5kZXRlbiBGdW5rdGlvbmVuIGFyYmVpdGVuIGplZG9jaCB3ZWl0ZXJoaW4gbm9ybWFsLgorCisgICAgIERhcyBhdWZydWZlbmRlIE9iamVrdCBtdXNzIHZvbSBNYXN0ZXItT2JqZWt0IGRpZSBFcmxhdWJuaXMgaGFiZW4sCisgICAgIGFscyBTaGFkb3cgenUgd2lya2VuLgorCisgICAgIEVzIGdpYnQgZm9sZ2VuZGUgS3JpdGVyaWVuIGZ1ZXIgZWluZSBlcmZvbGdyZWljaGUgQmVzY2hhdHR1bmc6CisgICAgIC0gZGFzIHp1IGJlc2NoYXR0ZW5kZSBPYmpla3Qgb2I6CisgICAgICAgLSBpc3Qgd2VkZXIgZWluIGFjY2Vzc19yaWdodHMtT2JqZWt0IG5vY2ggZWluIFJPT1QtT2JqZWt0CisgICAgICAgLSBnaWJ0IGJlaW0gQXVmcnVmIHZvbiBxdWVyeV9wcmV2ZW50X3NoYWRvdyhiZXNjaGF0dGVyKSBlaW5lIDAKKyAgICAgICAgIHp1cnVlY2sKKyAgICAgICAtIGJlc2NoYXR0ZXQgc2VsYnN0IG5pZW1hbmRlbgorICAgICAgIC0gaGF0IGtlaW4gJyNwcmFnbWEgbm9fc2hhZG93JyBnZXNldHp0CisgICAgIC0gZGVyIEJlc2NoYXR0ZXI6CisgICAgICAgLSB3aXJkIG5pY2h0IHNlbGJzdCAoZGlyZWt0KSBiZXNjaGF0dGV0CisgICAgICAgLSBiZXNjaGF0dGV0IG5vY2ggbmllbWFuZGVuIChzb25zdCBmb2xndCBkaXJla3RlciBBYmJydWNoKQorICAgICAgIC0gaGF0IGtlaW4gZW52aXJvbm1lbnQoKQorICAgICAgIC0gZGVmaW5pZXJ0L2Jlc2NoYXR0ZXQga2VpbmUgTWV0aG9kZSwgZGllIGltIGJlc2NoYXR0ZXRlbiBPYmpla3Qgb2IgCisgICAgICAgICBhbHMgbm9tYXNrIGRlZmluaWVydCBpc3QKKworICAgICBCZXNjaGF0dGV0IG1hbiBlaW4gT2JqZWt0IEEgbWl0IGVpbmVtIE9iamVrdCBCIHVuZCBkYW5uIGRhcyBPYmpla3QgQQorICAgICB6dXNhZXR6bGljaCBtaXQgZWluZW0gT2JqZWt0IEMsIHNvIHdpcmQgZWluZSBCZXNjaGF0dHVuZ3NoaWVyYXJjaGllCisgICAgIGVyc3RlbGx0OgorCisgICAgIEIgbWFjaHQgc2hhZG93KEEsIDEpCisgICAgIEItPkEKKyAgICAgQyBtYWNodCBzaGFkb3coQSwgMSkKKyAgICAgQy0+Qi0+QQorCitCRUlTUElFTEU6CisgICAgIC8vIHdlbm46IEIgYmVzY2hhdHRldCBBLCBkYW5uCisgICAgIHNoYWRvdyhmaW5kX29iamVjdChBKSwgMCkgPT0gQgorCisKKyAgICAgLy8gMyBPYmpla3RlIGJlc2NoYXR0ZW4gaW4gSGllcmFyY2hpZSAobGllZ3QgYXVjaCBpbSBQZmFkKQorICAgICAtLS0gYWEuYyAtLS0KKyAgICAgdm9pZCBmdW4oKSB7CisgICAgICAgICBwcmludGYoIiVPIFthXSBmdW4oKVxuIiwgdGhpc19vYmplY3QoKSk7CisgICAgIH0KKworICAgICB2b2lkIGZ1bjMoKSB7CisgICAgICAgICBwcmludGYoIiVPIFthXSBmdW4zKClcbiIsIHRoaXNfb2JqZWN0KCkpOworICAgICB9CisKKyAgICAgLS0tIGJiLmMgLS0tCisgICAgIGludCBmdW4oKSB7CisgICAgICAgICBwcmludGYoIiVPIFtiXSBmdW4oKVxuIiwgdGhpc19vYmplY3QoKSk7CisgICAgICAgICBmaW5kX29iamVjdCgiL2RvYy9iZWlzcGllbGUvc2hhZG93L2FhIiktPmZ1bigpOworICAgICB9CisKKyAgICAgdm9pZCBmdW4yKCkgeworICAgICAgICAgcHJpbnRmKCIlTyBbYl0gZnVuMigpXG4iLCB0aGlzX29iamVjdCgpKTsKKyAgICAgICAgIGZpbmRfb2JqZWN0KCIvZG9jL2JlaXNwaWVsZS9zaGFkb3cvYWEiKS0+ZnVuMygpOworICAgICAgICAgdGhpc19vYmplY3QoKS0+ZnVuMygpOworICAgICB9CisKKyAgICAgdm9pZCBkb19zaGFkb3cob2JqZWN0IHRhcmdldCkgeyBzaGFkb3codGFyZ2V0LCAxKTsgfQorCisgICAgIC0tLSBjYy5jIC0tLQorICAgICBpbnQgZnVuKCkgeworICAgICAgICAgcHJpbnRmKCIlTyBbY10gZnVuKClcbiIsIHRoaXNfb2JqZWN0KCkpOworICAgICAgICAgZmluZF9vYmplY3QoIi9kb2MvYmVpc3BpZWxlL3NoYWRvdy9hYSIpLT5mdW4oKTsKKyAgICAgfQorCisgICAgIHZvaWQgZnVuMygpIHsKKyAgICAgICAgIHByaW50ZigiJU8gW2NdIGZ1bjMoKVxuIiwgdGhpc19vYmplY3QoKSk7CisgICAgIH0KKworICAgICB2b2lkIGRvX3NoYWRvdyhvYmplY3QgdGFyZ2V0KSB7IHNoYWRvdyh0YXJnZXQsIDEpOyB9CisKKyAgICAgLy8gZGFyYXVmIGFyYmVpdGVuZGVyIENvZGUKKworICAgICBvYmplY3QgYSwgYiwgYzsKKworICAgICBkZXN0cnVjdCgiL2RvYy9iZWlzcGllbGUvc2hhZG93L2FhIik7CisgICAgIGEgPSBsb2FkX29iamVjdCgiL2RvYy9iZWlzcGllbGUvc2hhZG93L2FhIik7CisgICAgIGRlc3RydWN0KCIvZG9jL2JlaXNwaWVsZS9zaGFkb3cvYmIiKTsKKyAgICAgYiA9IGxvYWRfb2JqZWN0KCIvZG9jL2JlaXNwaWVsZS9zaGFkb3cvYmIiKTsKKyAgICAgZGVzdHJ1Y3QoIi9kb2MvYmVpc3BpZWxlL3NoYWRvdy9jYyIpOworICAgICBjID0gbG9hZF9vYmplY3QoIi9kb2MvYmVpc3BpZWxlL3NoYWRvdy9jYyIpOworCisgICAgIGItPmRvX3NoYWRvdyhhKTsKKyAgICAgYy0+ZG9fc2hhZG93KGEpOworICAgICBwcmludGYoIi0tLSBhLT5mdW4oKSAtLS1cbiIpOworICAgICBhLT5mdW4oKTsKKyAgICAgcHJpbnRmKCItLS0gYi0+ZnVuKCkgLS0tXG4iKTsKKyAgICAgYi0+ZnVuKCk7CisgICAgIHByaW50ZigiLS0tIGMtPmZ1bigpIC0tLVxuIik7CisgICAgIGMtPmZ1bigpOworICAgICBwcmludGYoIi0tLSBiLT5mdW4yKCkgLS0tXG4iKTsKKyAgICAgYi0+ZnVuMigpOworCisgICAgIC8vIC4uLiB1bmQgc2VpbmUgQXVzZ2FiZToKKworICAgICAtLS0gYS0+ZnVuKCkgLS0tCisgICAgIC9kb2MvYmVpc3BpZWxlL3NoYWRvdy9jYyBbY10gZnVuKCkKKyAgICAgL2RvYy9iZWlzcGllbGUvc2hhZG93L2JiIFtiXSBmdW4oKQorICAgICAvZG9jL2JlaXNwaWVsZS9zaGFkb3cvYWEgW2FdIGZ1bigpCisgICAgIC0tLSBiLT5mdW4oKSAtLS0KKyAgICAgL2RvYy9iZWlzcGllbGUvc2hhZG93L2NjIFtjXSBmdW4oKQorICAgICAvZG9jL2JlaXNwaWVsZS9zaGFkb3cvYmIgW2JdIGZ1bigpCisgICAgIC9kb2MvYmVpc3BpZWxlL3NoYWRvdy9hYSBbYV0gZnVuKCkKKyAgICAgLS0tIGMtPmZ1bigpIC0tLQorICAgICAvZG9jL2JlaXNwaWVsZS9zaGFkb3cvY2MgW2NdIGZ1bigpCisgICAgIC9kb2MvYmVpc3BpZWxlL3NoYWRvdy9iYiBbYl0gZnVuKCkKKyAgICAgL2RvYy9iZWlzcGllbGUvc2hhZG93L2FhIFthXSBmdW4oKQorICAgICAtLS0gYi0+ZnVuMigpIC0tLQorICAgICAvZG9jL2JlaXNwaWVsZS9zaGFkb3cvYmIgW2JdIGZ1bjIoKQorICAgICAvZG9jL2JlaXNwaWVsZS9zaGFkb3cvYWEgW2FdIGZ1bjMoKQorICAgICAvZG9jL2JlaXNwaWVsZS9zaGFkb3cvY2MgW2NdIGZ1bjMoKQorCisgICAgIC8vIERlciBlcnN0ZSBBdWZydWYgdm9uIGI6OmZ1bjIoKSBpbiBhIGZpbmRldCBzb2ZvcnQgYTo6ZnVuMygpISBEZXIKKyAgICAgLy8gRHJpdmVyIG5pbW10IGFuLCBkYXNzIGFsbGUgU2hhZG93cyBhYiBjIGJlaSBSdWZlbiB2b24gYiBuYWNoIGEKKyAgICAgLy8gc2Nob24gaWhyZSBDaGFuY2UgaGF0dGVuLgorICAgICAvLyBEZXIgendlaXRlIEF1ZnJ1ZiBhbGxlcmRpbmdzIGlzdCBhdWYgYiB1bmQgd2lyZCBiZWltIER1cmNoZ2ViZW4KKyAgICAgLy8gYW4gYSB2b24gYyB1ZWJlcm5vbW1lbi4KKworU0lFSEUgQVVDSDoKKyAgICAgR2VuZXJlbGw6CSAgICAgc2hhZG93KEUpCisgICAgIFJlY2h0ZToJICAgICBxdWVyeV9hbGxvd19zaGFkb3coTSksIHF1ZXJ5X3ByZXZlbnRfc2hhZG93KEwpCisgICAgIEluZm9ybWF0aW9uZW46ICBxdWVyeV9zaGFkb3dpbmcoRSkKKworOC5BdWcgMjAwNyBHbG9pbnNvbgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2RvYy9zZWZ1bi9zaG91dCBiL2RvYy9zZWZ1bi9zaG91dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5lYWQyNjZmCi0tLSAvZGV2L251bGwKKysrIGIvZG9jL3NlZnVuL3Nob3V0CkBAIC0wLDAgKzEsNjkgQEAKK0ZVTktUSU9OOgorICAgICB2YXJhcmdzIHZvaWQgc2hvdXQoIHN0cmluZyB0ZXh0LCBtaXhlZCB3aGVyZSApCisKK0RFRklOSUVSVCBJTjoKKyAgICAgL3NlY3VyZS9zaW11bF9lZnVuLmMKKworQVJHVU1FTlRFOgorICAgICB0ZXh0CisgICAgICAgICAgRGVyIFRleHQsIGRlciBhdXNnZWdlYmVuIHdlcmRlbiBzb2xsCisKKyAgICAgd2hlcmUgW29wdGlvbmFsXQorICAgICAgICAgIFdvIHNvbGwgbWFuIGRlbiBUZXh0IHVlYmVyYWxsIGhvZXJlbiBrb2VubmVuPworCitCRVNDSFJFSUJVTkc6CisgICAgIERlciBUZXh0ICd0ZXh0JyB3aXJkIGFuIGFsbGUgU3BpZWxlciBpbiBlaW5lbSBHZWJpZXQgYXVzZ2VnZWJlbi4KKyAgICAgV2lyZCBkZXIgUGFyYW1ldGVyICd3aGVyZScgd2VnZ2VsYXNzZW4gYnp3LiBpc3QgZXIgbnVsbCwgc28gZ2VodCBkZXIKKyAgICAgVGV4dCBhbiBhbGxlIFNwaWVsZXIgaW0gTXVkLiBEYXMgY2F0Y2hfdGVsbCgpIHZvbiBOUENzIHdpcmQgbmljaHQKKyAgICAgYXVzZ2Vsb2VzdC4KKworICAgICBJc3QgJ3doZXJlJyBlaW5lIFphaGwgIT0gMCwgc28gd2lyZCBkZXIgVGV4dCBudXIgYW4gU3BpZWxlciBhdXNnZWdlYmVuLAorICAgICBkaWUgc2ljaCBpbSBzZWxiZW4gR2ViaWV0IGF1ZmhhbHRlbiB3aWUgdGhpc19wbGF5ZXIoKS4gRGFiZWkgd2lyZCBkaWUKKyAgICAgWnVnZWhvZXJpZ2tlaXQgenVtIHNlbGJlbiBHZWJpZXQgYW4gZGVuIGVyc3RlbiB6d2VpIEViZW5lbiBkZXMgUGZhZGVzCisgICAgIGRlciBSYWV1bWUgZmVzdGdlbWFjaHQuIEJlZmluZGV0IHNpY2ggdGhpc19wbGF5ZXIoKSB6LkIuIGluCisgICAgICIvZC9lYmVuZS9pcmdlbmR3byIsIHNvIGdlaHQgZGVyIFRleHQgYW4gYWxsZSBTcGllbGVyLCBkZXJlbiBBdWZlbnRoYWx0cy0KKyAgICAgb3J0ZSBpbiAiL2QvZWJlbmUvKiIgbGllZ2VuLgorCisgICAgIEZ1ZXIgJ3doZXJlJyBrYW5uIGF1Y2ggZGlyZWt0IGVpbiBQZmFkIGFuZ2VnZWJlbiB3ZXJkZW4uIFNvIHd1ZXJkZSBlaW4KKyAgICAgJ3Nob3V0KCB0eHQsICIvcGxheWVycy8iICknIGFuIGFsbGUgU3BpZWxlciBnZWhlbiwgZGllIHNpY2ggaW4KKyAgICAgKGVpZ2VudGxpY2ggbmljaHQgZXJ3dWVuc2NodGVuKSBSYWV1bWVuIGluIC9wbGF5ZXJzLyogYmVmaW5kZW4uCisKKyAgICAgVW0gbWl0IGVpbmVtIEF1ZnJ1ZiBnbGVpY2ggbWVocmVyZSBQZmFkZSBhYnp1ZGVja2VuLCBrYW5uIGF1Y2ggZWluIEFycmF5CisgICAgIHZvbiBTdHJpbmdzIHVlYmVyZ2ViZW4gd2VyZGVuLiBBbGxlIFBmYWRlIHdlcmRlbiBhbHMgJ3JlZ3VsYXIgZXhwcmVzc2lvbicKKyAgICAgaW50ZXJwcmV0aWVydC4gRGFkdXJjaCBpc3QgZXMgbW9lZ2xpY2gsIGRpZSBaaWVscmFldW1lIGF1ZiBlaW5mYWNoZSBBcnQKKyAgICAgc2VociBnZW5hdSBlaW56dXNjaHJhZW5rZW4uCisKKyAgICAgSElOV0VJUzogQml0dGUgdWViZXJsZWcgdm9yIGplZGVtIHNob3V0KCkgZ2VuYXUsIG9iIGVzIHdpcmtsaWNoIG5vZXRpZworICAgICBpc3QsIGRhc3MgX2plZGVyXyBldHdhcyBkYXZvbiBtaXRiZWtvbW10IG9kZXIgb2IgZXMgbmljaHQgdmllbGxlaWNodAorICAgICBzaW5udm9sbGVyIGlzdCwgZGFzIFppZWxnZWJpZXQgZXR3YXMgZWluenVzY2hyYWVua2VuLiBJbSBad2VpZmVsc2ZhbGwKKyAgICAgc29sbHRlIGRlciB6dXN0YWVuZGlnZSBSTSBhdWZwYXNzZW4sIGRhc3MgZGllIFNwaWVsZXIgbmljaHQgZHVyY2ggYWxsenUKKyAgICAgemFobHJlaWNoZSBzaG91dHMgYmVsYWVzdGlndCB3ZXJkZW4uCisKK1JVZUNLR0FCRVdFUlQ6CisgICAgIGtlaW5lcgorCitCRUlTUElFTEU6CisgICAgIHNob3V0KCAiRHUgc3B1ZXJzdCwgd2llIGVpbiBaaXR0ZXJuIGR1cmNoIGRhcyBNb3JnZW5HcmF1ZW4gZ2VodC5cbiIgKTsKKyAgICAgICAgRGVyIGFsbHNlaXRzIGJla2FubnRlIFRleHQgd2lyZCBhbiBhbGxlIFNwaWVsZXIgaW0gTUcgYXVzZ2VnZWJlbi4KKworICAgICBzaG91dCggIkR1IGhvZXJzdCBlaW5lIGdld2FsdGlnZSBFeHBsb3Npb24uXG4iLCAxICk7CisgICAgICAgIFZvbiBkZXIgRXhwbG9zaW9uIGJla29tbWVuIGFsbGUgU3BpZWxlciBpbiBkZXJzZWxiZW4gR2VnZW5kIGV0d2FzIG1pdCwKKyAgICAgICAgYWJlciBuaWNodCBhbSBhbmRlcmVuIEVuZGUgZGVzIE11ZHMuCisKKyAgICAgc2hvdXQoICJJcmdlbmR3byBpc3QgZWluIEJhdW0gdW1nZWZhbGxlbi5cbiIsICIvZC92bGFuZC8iICk7CisgICAgICAgIC4uLiBnaWJ0IGVpbmUgTWVsZHVuZyBhdXMsIGRpZSBrZWluZW4gd2lya2xpY2ggaW50ZXJlc3NpZXJ0LiBBYmVyIGVzCisgICAgICAgIHRyaWZmdCBlaCBudXIgTGV1dGUgaW4gZWluZW0gdW53aWNodGlnZW4gVGVpbCBkZXMgTW9yZ2VuR3JhdWVuLiA7LSkKKworICAgICBzaG91dCggIkF1ZndhY2hlbiBEdSBJZGxlciFcbiIsICIvcGxheWVycy8uKi93b3Jrcm9vbSIgKTsKKyAgICAgICAgTWl0IEhpbGZlIHZvbiByZWd1bGFyIGV4cHJlc3Npb25zIGthbm4gbWFuIHJlY2h0IGVpbmZhY2ggei5CLiBhbGxlCisgICAgICAgIFdvcmtyb29tcyBhdWYgZWlubWFsIGFkcmVzc2llcmVuLgorCisgICAgIHNob3V0KCAiSGFsbG9vb29vbywgRWNob29vb29vIVxuIiwgKHsgIi9kL2dlYmlyZ2UvIiwgIi9kL2ViZW5lLyIgfSkgKTsKKyAgICAgICAgV2VubiBkZXIgU3BpZWxlciBob2NoIG9iZW4gYXVmIGRlbSBCZXJnIGxhdXQgZ2VudWcgcnVmdCwgaG9lcnQgbWFuCisgICAgICAgIGlobiBhdWNoIG5vY2ggd2VpdCBpbiBkZXIgRWJlbmUuCisKK1NJRUhFIEFVQ0g6CisgICAgIHdyaXRlKCksIHNheSgpLCB0ZWxsX29iamVjdCgpLCB0ZWxsX3Jvb20oKSwgcmVnZXhwKCkKKworLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorTGFzdCBtb2RpZmllZDogU3VuIE5vdiAyOCAwMzowMDowMCAxOTk5IGJ5IFRpYW1hawpkaWZmIC0tZ2l0IGEvZG9jL3NlZnVuL3RpbWUyc3RyaW5nIGIvZG9jL3NlZnVuL3RpbWUyc3RyaW5nCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjRkYWU3MTkKLS0tIC9kZXYvbnVsbAorKysgYi9kb2Mvc2VmdW4vdGltZTJzdHJpbmcKQEAgLTAsMCArMSw1MyBAQAorRlVOS1RJT046CisJc3RyaW5nIHRpbWUyc3RyaW5nKCBzdHJpbmcgZm9ybWF0LCBpbnQgdGltZSApCisJCitBUkdVTUVOVEU6CisJZm9ybWF0OiBTdHJpbmcsIGRlciBkYXMgRm9ybWF0IGRlciBaZWl0YXVzZ2FiZSBmZXN0bGVndC4KKwl0aW1lOiBFaW5lIEFuemFobCB2b24gU2VrdW5kZW4sIGRpZSBhdXNnZWdlYmVuIHdlcmRlbiBzb2xsLgorCitFUkdFQk5JUzoKKwlaZWl0IGluIFN0cmluZy1Gb3JtLgorCitCRVNDSFJFSUJVTkc6CisJRGVyIEZvcm1hdHN0cmluZyB3aXJkIHp1cnVlY2tnZWdlYmVuLCB3b2JlaSBiZXN0aW1tdGUgRXJzZXR6dW5ncy0KKwlzeW1ib2xlIGR1cmNoIHBhc3NlbmRlIERhdGVuLCBkaWUgYXVzIGRlciBaZWl0IGJlcmVjaG5ldCB3ZXJkZW4sCisJZXJzZXR6dCB3ZXJkZW4uIERpZSBFcnNldHp1bmdzc3ltYm9sZSBmdW5rdGlvbmllcmVuIGFlaG5saWNoCisJZGVuZW4gYXVzICdwcmludGYnIGJla2FubnRlbiBTeW1ib2xlbi4gSW5zYmVzb25kZXJlIGthbm4gZWluZQorCUZlbGRicmVpdGUgbWl0IGFuZ2VnZWJlbiB3ZXJkZW4uCisKKwlGb2xnZW5kZSBFcnNldHp1bmdzc3ltYm9sZSBzaW5kIGVybGF1YnQ6CisJJSUJd2lyZCBkdXJjaCBlaW4gUHJvemVudCAoJSkgZXJzZXR6dC4KKwklbiwgJXcsICVkLCAlaCwgJW0sICVzCisJCSAgd2VyZGVuIGR1cmNoIGRpZSBBbnphaGwgZGVyIE1vbmF0ZSwgV29jaGVuLCBUYWdlLCBTdHVuZGVuLCBNaW51dGVuIG9kZXIKKyAgICAgIFNla3VuZGVuIGVyc2V0enQuIERpZSBGdW5rdGlvbiBlcmtlbm50LCB3ZWxjaGVzIGRpZSBncm9lc3N0ZSBiZW51dHp0ZQorCQkgIFplaXRlaW5oZWl0IGlzdCB1bmQgcmVjaG5ldCBkaWUga2VpbmVyZW4gc28gdW0sIGRhc3Mgc2llIHp3aXNjaGVuIDAgdW5kCisgICAgICBqZXdlaWxpZ2VuIE1heGltdW0gZGVyIFplaXRlaW5oZWl0IGxpZWdlbiAoNTksIDIzIGV0Yy4pIGxpZWdlbi4KKyAJJU4Jd2lyZCBkdXJjaCBkaWUgV29ydGUgJ1dvY2hlJyBvZGVyICdXb2NoZW4nIGVyc2V0enQsCisgICAgICBqZSBuYWNoZGVtIHdlbGNoZW4gV2VydGQgJW4gaGFldHRlLgorIAklVwl3aXJkIGR1cmNoIGRpZSBXb3J0ZSAnV29jaGUnIG9kZXIgJ1dvY2hlbicgZXJzZXR6dCwKKwkJICBqZSBuYWNoZGVtIHdlbGNoZW4gV2VydCAldyBoYWV0dGUuCisJJUQJd2lyZCBkdXJjaCBkaWUgV29ydGUgJ1RhZycgb2RlciAnVGFnZScgZXJzZXR6dCwKKwkJICBqZSBuYWNoZGVtIHdlbGNoZW4gV2VydCAlZCBoYWV0dGUuCisJJUgsJU0sJVMKKwkJICB3ZXJkZW4gZHVyY2ggZGllIFdvcnRlICdTdHVuZGUobiknLCAnTWludXRlKG4pJyBiencuICdTZWt1bmRlKG4pJworICAgICAgZXJzZXR6dC4KKwklWAl3aXJkIGR1cmNoIGRpZSBncm9lc3N0ZSBaZWl0ZWluaGVpdCBlcnNldHp0LCBkaWUgbmljaHQgTnVsbCBpc3QuIFdlbm4KKyAgICAgIGJlaSAlWCBkaWUgRmVsZGJyZWl0ZSAwIGFuZ2VnZWJlbiB3aXJkIChhbHNvICUwWCksIGRhbm4gd2lyZCBuaWNodCBkZXIKKyAgICAgIGF1c2dlc2NocmllYmVuZSBOYW1lLCBzb25kZXIgZWluZSBBYmt1ZXJ6dW5nIGZ1ZXIgZGllIFplaXRlaW5oZWl0CisgICAgICBhdXNnZWdlYmVuLiAoRGFzIHNpbmQgZGFubiAnZCcsJ2gnLCdtJyBvZGVyICdzJy4pCisJJXgJd2lyZCBkdXJjaCBkZW4gbnVtZXJpc2NoZW4gV2VydCBkaWVzZXIgWmVpdGVpbmhlaXQKKwkJICBlcnNldHp0LgorCQkJCitCRUlTUElFTEU6CisJdGltZTJzdHJpbmcoICIlbSAlTSIsIDYwICkgLT4gIjEgTWludXRlIgorCXRpbWUyc3RyaW5nKCAiJW0gJU0iLCAxMjAgKSAtPiAiMiBNaW51dGVuIgorCXRpbWUyc3RyaW5nKCAiJXMgJVMiLCAxMjUgKSAtPiAiMTI1IFNla3VuZGVuIgorCXRpbWUyc3RyaW5nKCAiJW0gJU0gdW5kICVzICVTIiApIC0+ICIyIE1pbnV0ZW4gdW5kIDUgU2VrdW5kZW4iCisJdGltZTJzdHJpbmcoICIlZDolMDJoOiUwMm06JTAycyIsIDEwMDAwICkgLT4gIjA6MDI6NDY6NDAiCisJdGltZTJzdHJpbmcoICIleCAlWCIsIDM2MDAgKSAtPiAiMSBTdHVuZGUiCisJdGltZTJzdHJpbmcoICIleCAlMFgiLCAzNjAwICkgLT4gIjEgaCIKKwl0aW1lMnN0cmluZyggIiV4ICVYIiwgMzYwMDAwICkgLT4gIjQgVGFnZSIKKwl0aW1lMnN0cmluZyggIiV4ICUwWCIsIDM2MDAwMCApIC0+ICI0IGQiCisKK1NJRUhFIEFVQ0g6CisJc3ByaW50ZihFKQpkaWZmIC0tZ2l0IGEvZG9jL3NlZnVuL3VwZGF0ZV9hY3Rpb25zIGIvZG9jL3NlZnVuL3VwZGF0ZV9hY3Rpb25zCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmIyOGNmOWYKLS0tIC9kZXYvbnVsbAorKysgYi9kb2Mvc2VmdW4vdXBkYXRlX2FjdGlvbnMKQEAgLTAsMCArMSwzOCBAQAorRlVOS1RJT046CisgICAgICAgIHZvaWQgdXBkYXRlX2FjdGlvbnMoKQorCitBUkdVTUVOVEU6CisgICAgICAgIGtlaW5lCisKK0JFU0NIUkVJQlVORzoKKyAgICAgICAgRmFsbHMgZWluZSBBa3Rpb24gZWluIGFkZF9hY3Rpb24oKSBhdXNnZWxvZXN0IGhhdCwgd2VyZGVuIG1pdCBkaWVzZXIKKyAgICAgICAgRnVua3Rpb24gZGllIG5ldWVuIEJlZmVobGUgYmVpIGFsbGVuIExlYmV3ZXNlbiBpbSBhdWZydWZlbmRlbiBPYmpla3QKKyAgICAgICAgYnp3LiBpbiBkZXIgVW1nZWJ1bmcgZGVzIGF1ZnJ1ZmVuZGVuIE9iamVrdGVzIGFrdGl2LgorCitSVUVDS0dBQkVXRVJUOgorICAgICAgICBrZWluZXIKKworQkVNRVJLVU5HRU46CisgICAgICAgIERpZXNlIEZ1bmt0aW9uIHdpcmQgZWlnZW50bGljaCBudXIgYmVub2V0aWd0LCB3ZW5uIG1hbiBtaXQgYWRkX2FjdGlvbigpCisgICAgICAgIGFuc3RlbGxlIHZvbiBBZGRDbWQoKSBhcmJlaXRldCAoekIuIGJlaSBPYmpla3RlbiwgZGllIG5pY2h0CisgICAgICAgIC9zdGQvdGhpbmcvY29tbWFuZHMgaW5oZXJpdGVuKS4KKworQkVJU1BJRUxFOgorICAgICAgICAvKiBOb3JtYWxlcndlaXNlIHNvbGx0ZSBtYW4gZXMgU08gZ2VyYWRlIG5pY2h0IG1hY2hlbi4gU3RhdHRkZXNzZW4KKyAgICAgICAgICogc29sbHRlIGRpZSAia2xldHRlciItRnVua3Rpb24gcHJ1ZWZlbiwgb2IgZGllIEx1a2UgZ2VvZWZmbmV0IGlzdCwgCisgICAgICAgICAqIHVuZCBzaWNoIGltIEZlaGxlcmZhbGwgYmVzY2h3ZXJlbi4KKyAgICAgICAgICogU28gYWJlciBkaWVudCBlcyBhbHMgc2Nob2VuZXMgQmVpc3BpZWwgZnVlciB1cGRhdGVfYWN0aW9ucygpIDspCisgICAgICAgICAqLworICAgICAgICBpbnQgb2VmZm5lKHN0cmluZyBzdHIpCisgICAgICAgIHsKKyAgICAgICAgICBpZiggc3RyID09ICJsdWtlIiApIHsKKyAgICAgICAgICAgIHdyaXRlKCAiRHUgb2VmZm5lc3QgZGllIEx1a2UuIER1IGthbm5zdCBqZXR6dCBuYWNoIHVudGVuIGtsZXR0ZXJuLlxuIik7CisgICAgICAgICAgICBhZGRfYWN0aW9uKCJrbGV0dGVyIiwgImtsZXR0ZXIiLCAxKTsKKyAgICAgICAgICAgIHVwZGF0ZV9hY3Rpb25zKCk7CisgICAgICAgICAgICByZXR1cm4gMTsKKyAgICAgICAgICB9CisgICAgICAgICAgcmV0dXJuIDA7CisgICAgICAgIH0KKworU0lFSEUgQVVDSDoKKyAgYWRkX2FjdGlvbihFKSwgQWRkQ21kKEwpLCBSZW1vdmVDbWQoTCkKZGlmZiAtLWdpdCBhL2RvYy9zZWZ1bi91cHBlcnN0cmluZyBiL2RvYy9zZWZ1bi91cHBlcnN0cmluZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi42NjVlZDE2Ci0tLSAvZGV2L251bGwKKysrIGIvZG9jL3NlZnVuL3VwcGVyc3RyaW5nCkBAIC0wLDAgKzEsMTcgQEAKK0ZVTktUSU9OOgorCXN0cmluZyB1cHBlcnN0cmluZyhzdHJpbmcgc3RyKQorCitBUkdVTUVOVEU6CisJc3RyIC0gRGVyIHVtenV3YW5kZWxuZGUgU3RyaW5nLgorCitCRVNDSFJFSUJVTkc6CisJQWxsZSBLbGVpbmJ1Y2hzdGFiZW4gaW4gc3RyIHdlcmRlbiBpbiBHcm9zc2J1Y2hzdGFiZW4gdW1nZXdhbmRlbHQuCisKK1JVRUNLR0FCRVdFUlQ6CisJRGVyIHVtZ2V3YW5kZWx0ZSBTdHJpbmcuCisKK0JFSVNQSUVMRToKKwlzID0gdXBwZXJzdHJpbmcoICJOYSwgU3RlcmJsaWNoZXIhXG4iKSA9PiBzID0gIk5BLCBTVEVSQkxJQ0hFUiFcbiIKKworU0lFSEUgQVVDSDoKKwlsb3dlcnN0cmluZyhFKSwgbG93ZXJfY2FzZShFKSwgY2FwaXRhbGl6ZShFKQpkaWZmIC0tZ2l0IGEvZG9jL3NlZnVuL3VwdGltZSBiL2RvYy9zZWZ1bi91cHRpbWUKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZWU3YTUzNgotLS0gL2Rldi9udWxsCisrKyBiL2RvYy9zZWZ1bi91cHRpbWUKQEAgLTAsMCArMSwxNiBAQAorRlVOS1RJT046CisgICAgICAgIHN0cmluZyB1cHRpbWUoKQorCitBUkdVTUVOVEU6CisgICAgICAgIGtlaW5lCisKK0JFU0NIUkVJQlVORzoKKyAgICAgICAgTGllZmVydCBkaWUgYWt0dWVsbGUgVXB0aW1lIGRlcyBNb3JnZW5HcmF1ZW5zLgorCitSVUVDS0dBQkVXRVJUOgorICAgICAgICBEaWUgVXB0aW1lIGFscyBaZWl0c3RyaW5nLgorCitCRUlTUElFTEU6CisgICAgICAgIHV0ID0gdXB0aW1lKCkgPT4gdXQgPSAiMTQgVGFnZSwgOSBTdHVuZGVuLCAzIE1pbnV0ZW4gdW5kIDcgU2VrdW5kZW4uIgorCitTSUVIRSBBVUNIOgpkaWZmIC0tZ2l0IGEvZG9jL3NlZnVuL3dpemxpc3QgYi9kb2Mvc2VmdW4vd2l6bGlzdApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5hMmJhN2JkCi0tLSAvZGV2L251bGwKKysrIGIvZG9jL3NlZnVuL3dpemxpc3QKQEAgLTAsMCArMSw2NiBAQAorU1lOT1BTSVM6CisgIHZhcmFyZ3Mgdm9pZCB3aXpsaXN0KHN0cmluZyBuYW1lLCBpbnQgc29ydGtleSApIAkKKworREVTQ1JJUFRJT046CisgIHdpemxpc3QoKSBsaWVmZXJ0IGVpbmUgTGlzdGUgbWl0IHZlcnNjaGllZGVuZW4gVmVyYnJhdWNoc2RhdGVuIAorCXp1IE1hZ2llcm4uIEVzIHdlcmRlbiBkYWJlaSBub3JtYWxlcndlaXNlIDIxIEVpbnRyYWVnZSBhdXNnZWdlYmVuOgorICAxMCB2b3IgPG5hbWU+LCA8bmFtZT4gc2VsYnN0IHVuZCAxMCBuYWNoIDxuYW1lPi4KKworICBEaWUgTGlzdGUgaXN0IGRhYmVpIGZvbGdlbmRlcm1hc3NlbiBhdWZnZWJhdXQ6CisKKwkxLiBXTF9OQU1FCisJICAgR2VzYW1tZWx0IHdlcmRlbiBkaWUgRGF0ZW4gcHJvIFVJRC4gSGllcmJlaSB6YWVobHQgYWJlciBqZWRlIEVVSUQsIG5pY2h0CisgICAgIG51ciBkaWUgdm9uIE1hZ2llcm4uCisgICAgIERhcyBoZWlzc3QsIE9iamVrdGUgdW50ZXIgL2QvcG9sYXIvdmFuaW9uL2Vpc3BhbGFzdAorCSAgIHdlcmRlbiBuaWNodCB1bnRlciAidmFuaW9uIiBzb25kZXJuIHVudGVyICJkLnBvbGFyLnZhbmlvbiIKKwkgICBhYmdlcmVjaG5ldC4KKworCTIuIFdMX0NPTU1BTkRTCisgICAgIEFuemFobCBkZXIgZGllc2VtIE9iamVrdCB6dWdlb3JkbmV0ZW4gY29tbWFuZHMuCisKKwkzLiBXTF9DT01NQU5EUyAqIDEwMCAvIHRvdGFsX2NtZCAKKyAgICAgUHJvemVudHVhbGVyIEFudGVpbCBhbiBkZW4gZ2VzYW10IHZlcmJyYXVjaHRlbiBjb21tYW5kcy4KKworCTQuIFdMX0NPU1QgKGxpbmtzIGluIGRlciBlY2tpZ2VuIEtsYW1tZXIpCisgICAgIEFuemFobCBkZXIgdmVyYnJhdWNodGVuIGV2YWwgdGlja3MuIERpZXMgaXN0IHplaXRsaWNoIGdld2ljaHRldCwgZC5oLgorICAgICBuaW1tdCBpbSBMYXVmIGRlciBaZWl0IGFiLCB3ZW5uIG5pY2h0cyBtZWhyIGRhenUga29tbXQuCisKKyAgNS4gV0xfVE9UQUxfR0lHQUNPU1QgKHJlY2h0cyBpbiBkZXIgZWNraWdlbiBLbGFtbWVyKQorICAgICBBbnphaGwgZGVyIGluc2dlc2FtdCB2ZXJicmF1Y2h0ZW4gZXZhbCB0aWNrcyBpbiBHaWdhLVRpY2tzLgorICAgICBOaWNodCB6ZWl0bGljaCBnZXdpY2h0ZXQuCisKKwk2LiBXTF9IRUFSVF9CRUFUUworICAgICBBbnphaGwgZGVyIGF1c2dlbG9lc3RlbiBoZWFydCBiZWF0cy4KKyAgCisgIDcuIFdMX0FSUkFZX1RPVEFMCisKKyAgOC4gV0xfTUFQUElOR19UT1RBTAorCitQQVJBTUVURVJTOiAKKyAgV2lyZCBuYW1lIGFuZ2VnZWJlbiwgd2lyZCBlcnp3dW5nZW4sIGRhc3MgZGllIGVyd2FlaG50ZSBFVUlEIG1pdAorICBpbiBkZXIgTGlzdGUgZGFyZ2VzdGVsbHQgd2lyZC4gV2lyZCBuYW1lIG5pY2h0IGFuZ2VnZWJlbiwgd2lyZCBlcworICBhdXRvbWF0aXNjaCBhdWYgdGhpc19wbGF5ZXIoKS0+cXVlcnlfcmVhbF9uYW1lKCkgZ2VzZXR6dC4KKworICBXaXJkIGFscyBuYW1lICJUT1AxMDAiIGFuZ2VnZWJlbiwgd2lyZCBkaWUgVG9wLTEwMC1MaXN0ZSBhdXNnZWdlYmVuLgorCisgIFdpcmQgYWxzIG5hbWUgIkFMTCIgYW5nZWdlYmVuLCB3aXJkIGRpZSB2b2xsc3RhZW5kaWdlIExpc3RlIGF1cy0KKyAgZ2VnZWJlbi4KKworICBEdXJjaCBBbmdhYmUgdm9uIHNvcnRrZXkga2FubiBkaWUgTGlzdGUgbmFjaCBlaW5lciBkZXIgU3BhbHRlbiAKKyAgc29ydGllcnQgd2VyZGVuLiBHdWVsdGlnZSBXZXJ0ZSBzaW5kIGRpZSBpbiAvc3lzL3dpemxpc3QuaCBhbmdlLQorICBnZWJlbmVuIERlZmluZXMuCisJCitFWEFNUExFOiAKKyAgPiB4ZXZhbCB3aXpsaXN0KCJ2YW5pb24iLCBXTF9IRUFSVF9CRUFUUykKKyAgICAgIEVyendpbmd0IFZhbmlvbnMgRWludHJhZyBpbiBkZXIgTGlzdGUgdW5kIHNvcnRpZXJ0IGRpZSBMaXN0ZSBhbmhhbmQKKyAgICAgIGRlciBkdXJjaCBkaWUgRVVJRHMgYXVzZ2VmdWVocnRlbiBoZWFydCBiZWF0cy4KKworICA+IHhldmFsIHdpemxpc3QoIkFMTCIsIFdMX0VWQUxfQ09TVCkKKyAgICAgIFplaWd0IGRpZSBrb21wbGV0dGUgTGlzdGUgbmFjaCBldmFsIHRpY2tzLVZlcmJhdWNoIHNvcnRpZXJ0IGFuLgorCitTRUUgQUxTTzoKKyAgICAgIHdpemxpc3RfaW5mbyhFKQorCitMQVNUIFVQREFURUQ6CisgIDA5LjA1LjIwMTUsIFplc3N0cmEKKwpkaWZmIC0tZ2l0IGEvZG9jL3NlZnVuL3dpemxpc3RfaW5mbyBiL2RvYy9zZWZ1bi93aXpsaXN0X2luZm8KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMmE1YzEyNwotLS0gL2Rldi9udWxsCisrKyBiL2RvYy9zZWZ1bi93aXpsaXN0X2luZm8KQEAgLTAsMCArMSwzOSBAQAorR0VTQ0hVRVRaVAorU1lOT1BTSVMKKyAgICAgICAgI2luY2x1ZGUgPHN5cy93aXpsaXN0Lmg+CisKKyAgICAgICAgKm1peGVkIHdpemxpc3RfaW5mbygpOworCitCRVNDSFJFSUJVTkcKKyAgICAgICAgTGllZmVydCBlaW4gQXJyYXkgbWl0IEVpbnRyYWVnZW4gYXVzIGRlciBXaXpsaXN0IChkZXIgaW50ZXJuZW4KKyAgICAgICAgTWFnaWVybGlzdGUpLiBEaWUgQmVudXR6dW5nIG11c3MgZHVyY2ggZGFzIE1hc3Rlcm9iamVrdCBlcmxhdWJ0CisgICAgICAgIHdlcmRlbi4KKworICAgICAgICBEYXMgUmVzdWx0YXQgaXN0IGVpbiBBcnJheSBtaXQgZWluZW0gRWludHJhZyBmdWVyIGplZGVuIE1hZ2llciAodWlkKS4KKyAgICAgICAgSmVkZXIgRWludHJhZyBlbnRoYWVsdCB3aWVkZXJ1bSBlaW4gQXJyYXkgbWl0IGZvbGdlbmRlbiBFbGVtZW50ZW46CisKKyAgICAgICAgICAgIHN0cmluZyAgd1tXTF9OQU1FXSAgICAgICAgICBOYW1lIGRlcyBNYWdpZXJzCisgICAgICAgICAgICBpbnQgd1tXTF9DT01NQU5EU10gICAgICAgICAgR2V3aWNodGV0ZSBBbnphaGwgS29tbWFuZGksIGRpZSB2b24KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPYmpla3RlbiBkaWVzZXMgR290dGVzIGF1c2dlZnVlaHJ0CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd3VyZGVuCisgICAgICAgICAgICBpbnQgd1tXTF9DT1NURV0gICAgICAgICAgICAgR2V3aWNodGV0ZSBTdW1tZSBkZXIgRXZhbC1Lb3N0ZW4KKyAgICAgICAgICAgIGludCB3W1dMX0dJR0FDT1NUXSAgICAgICAgICBHZXdpY2h0ZXRlIFN1bW1lIGRlciBFdmFsLUtvc3RlbgorICAgICAgICAgICAgaW50IFdbV0xfVE9UQUxfQ09TVF0gICAgICAgIFRvdGFsZSBTdW1tZSBkZXIgRXZhbC1Lb3N0ZW4KKyAgICAgICAgICAgIGludCB3W1dMX1RPVEFMX0dJR0FDT1NUXSAgICBUb3RhbGUgU3VtbWUgZGVyIEV2YWwtS29zdGVuCisgICAgICAgICAgICBpbnQgd1tXTF9IRUFSVF9CRUFUXSAgICAgICAgR2V3aWNodGV0ZSBBbnphaGwgZGVyIGhlYXRfYmVhdCgpcworICAgICAgICAgICAgaW50IHdbV0xfQ0FMTF9PVVRdICAgICAgICAgIFJlc2VydmllcnQgZnVlciBjYWxsX291dCgpcworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChiaXNoZXIgbmljaHQgaW1wbGVtZW50aWVydCkKKyAgICAgICAgICAgIGludCB3W1dMX0FSUkFZX1RPVEFMXSAgICAgICBUb3RhbGUgR3JvZXNzZSBhbGxlciBBcnJheXMgaW4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBFbGVtZW50ZW4KKyAgICAgICAgICAgIG1peGVkIHdbV0xfRVhUUkFdICAgICAgICAgICBEaWUgZWlnZW50bGljaGUgV2l6bGlzdC1JbmZvCisKKyAgICAgICAgRGllICJnZXdpY2h0ZXRlbiIgV2VydGUgdmVyZmFsbGVuIHBybyBTdHVuZGUgdW0gMTAlLgorCitBRU5ERVJVTkdFTgorICAgICAgICBMRE11ZCAzLjIuMTAgdHJlbm50ZSBkYXMgYWx0ZSBXTF9FVkFMX0NPU1QgaW4gV0xfQ09TVCB1bmQgV0xfR0lHQUNPU1QsCisgICAgICAgIHVtIGxhZW5nZXJlbiBVcHRpbWVzIGdlcmVjaHQgenUgd2VyZGVuLiBBdXNzZXJkZW0gd3VyZGUKKyAgICAgICAgV0xfVE9UQUxfQ09TVCB1bmQgV0xfVE9UQUxfR0lHQUNPU1QgZWluZ2VmdWVocnQuCisKK1NJRUhFIEFVQ0gKKyAgICAgICAgcHJpdmlsZWdlX3Zpb2xhdGlvbihNKSwgc2V0X2V4dHJhX3dpemluZm9fc2l6ZShFKSwKKyAgICAgICAgZ2V0X2V4dHJhX3dpemluZm8oRSksIHNldF9leHRyYV93aXppbmZvKEUpCmRpZmYgLS1naXQgYS9kb2Mvc3RkLy5zeW5vbnltIGIvZG9jL3N0ZC8uc3lub255bQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41MDhlZTMyCi0tLSAvZGV2L251bGwKKysrIGIvZG9jL3N0ZC8uc3lub255bQpAQCAtMCwwICsxLDkgQEAKK2FybW91cnMgYXJtb3VyCitydWVzdHVuZyBhcm1vdXIKK3J1ZXN0dW5nZW4gYXJtb3VyCit3ZWFwb25zIHdlYXBvbgord2FmZmVuIHdlYXBvbgord2FmZmUgd2VhcG9uCit1bml0cyB1bml0Cit2YyB2aXJ0dWFsX2NvbXBpbGVyCityaW5nYnVmZmVyIHV0aWwKZGlmZiAtLWdpdCBhL2RvYy9zdGQvYXJtb3VyIGIvZG9jL3N0ZC9hcm1vdXIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOTcyMWNmYwotLS0gL2Rldi9udWxsCisrKyBiL2RvYy9zdGQvYXJtb3VyCkBAIC0wLDAgKzEsODcgQEAKKyBTVEFOREFSREtMQVNTRToKKwkiL3N0ZC9hcm1vdXIiCisgCisgQkVOVVRaVU5HOgorICAgICAgICBpbmhlcml0ICIvc3RkL2FybW91ciI7CisgCisgICAgICAgICNpbmNsdWRlIDxwcm9wZXJ0aWVzLmg+CisgICAgICAgICNpbmNsdWRlIDxjb21iYXQuaD4KKworIFBST1BFUlRJRVM6CisgICAgIEdydW5kbGVnZW5kOgorCVBfQUMJCXNldHpiYXI6IFJ1ZXN0dW5nc2tsYXNzZSA9PSBTY2h1dHoKKwlQX0FSTU9VUl9UWVBFCXNldHpiYXI6IFJ1ZXN0dW5nc3R5cAorCisgICAgIEJlc29uZGVyZSBBdHRyaWJ1dGUgdW5kIEFuZm9yZGVydW5nZW4gZnVlciBUcmFlZ2VyOgorCVBfUkVTVFJJQ1RJT05TCXNldHpiYXI6IEFuZm9yZGVydW5nZW4gYW4gVHJhZWdlcgorCVBfTV9BVFRSX01PRAlzZXR6YmFyOiBBdHRyaWJ1dG1vZGlmaWthdG9yIGZ1ZXIgVHJhZWdlcgorCVBfUkVTSVNUQU5DRV9TVFJFTkdUSFMKKwkJCXNldHpiYXI6IFJlc2lzdGVuem1vZGlmaWthdG9yIGZ1ZXIgVHJhZWdlcgorCVBfTlJfSEFORFMJc2V0emJhcjogbm90d2VuZGlnZSBIYW5kYW56YWhsICh6QiBTY2hpbGRlKQorCVBfQ1VSU0VECXNldHpiYXI6IFZlcmZsdWNodW5nIChuaWNodCBhdXN6aWVoYmFyKQorCisgICAgIE1lbGR1bmdlbiB1bmQgWmVpdHB1bmt0ZToKKwlQX0VRVUlQX1RJTUUJZW50aGFlbHQgZGVuIFplaXRwdW5rdCBkZXMgQW56aWVoZW5zCisJUF9MQVNUX1VTRQllbnRoYWVsdCBkZW4gWmVpdHB1bmt0IGRlcyBsZXR6dGVuIFRyZWZmZXJzCisJUF9XT1JOCQllbnRoYWVsdCBkZW4gVHJhZWdlcgorCVBfV0VBUl9NU0cJc2V0emJhcjogZWlnZW5lIEFuemllaG1lbGR1bmdlbgorCVBfVU5XRUFSX01TRwlzZXR6YmFyOiBlaWdlbmUgQXVzemllaG1lbGR1bmdlbgorCisgICAgIER5bmFtaXNjaGVzIFZlcmhhbHRlbiBpbiBLYW1wZiB1bmQgYmVpbSBBbnppZWhlbjoKKwlQX1dFQVJfRlVOQwlzZXR6YmFyOiBPYmpla3QgbWl0IEFuemllaGZ1bmt0aW9uICJXZWFyRnVuYygpIgorCVBfUkVNT1ZFX0ZVTkMJc2V0emJhcjogT2JqZWt0IG1pdCBBdXN6aWVoZnVua3Rpb24gIlJlbW92ZUZ1bmMoKSIKKwlQX0RFRkVORF9GVU5DCXNldHpiYXI6IE9iamVrdCBtaXQgRGVmZW5zaXZmdW5rdGlvbiAiRGVmZW5kRnVuYygpIgorCisgICAgIFp1c2FldHpsaWNoZSBFaWdlbnNjaGFmdGVuOgorCVBfREFNQUdFRAllbnRoYWVsdCBkZW4gQXVzbWFzcyBkZXMgU2NoYWRlbnMgYW4gV2FmZmUKKwlQX1FVQUxJVFkJc2V0emJhcjogUXVhbGl05HQvSGFsdGJhcmtlaXQgZGVyIFdhZmZlCisJUF9FRkZFQ1RJVkVfQUMJc2V0emJhcjogZmFsbHMgRGVmZW5kRnVuYyBBQyBuaWNodCBzaWNoYmFyIGFlbmRlcnQKKwlQX0RBTV9UWVBFCXNldHpiYXI6IGludGVyZXNzYW50IGJlaSBLYWVtcGZlcmFuZ3JpZmZlbgorCisgICAgIFp1c2FldHpsaWNoIHNpbmQgYWxsZSBQcm9wZXJ0aWVzIGF1cyAvc3RkL3RoaW5nIHZlcmZ1ZWdiYXIsIGFsc28KKyAgICAgYml0dGUgYXVjaCBmb2xnZW5kZSBzZXR6ZW46CisJUF9NQVRFUklBTAlzZXR6YmFyOiBadXNhbW1lbnNldHp1bmcKKwlQX1NJWkUJCXNldHpiYXI6IEdyb2Vzc2UKKwlQX1dFSUdIVAlzZXR6YmFyOiBHZXdpY2h0CisKKyBNQUtST1M6CisgICAgIEd1ZWx0aWdlIFJ1ZXN0dW5nc3R5cGVuIChkZWZpbmllcnQgaW4gIi9zeXMvY29tYmF0LmgiKS4KKyAKKyBFUkxBRVVURVJVTkc6CisgICAgIEJhc2lza2xhc3NlIGZ1ZXIgYWxsZSBSdWVzdHVuZ2VuIGltIFNwaWVsLiBTaWUgaXN0IHZvbiAiL3N0ZC9jbG90aGluZyIKKyAgICAgYWJnZWxlaXRldCB1bmQgZW50aGFlbHQgYWxsZSB6dXNhZXR6bGljaGUgRnVua3Rpb25hbGl0YWV0CisgICAgIGZ1ZXIgZGVuIEthbXBmLgorCisgICAgIFZvciBkZXIgUHJvZ3JhbW1pZXJ1bmcgdm9uIFJ1ZXN0dW5nZW4gc29sbHRlIC9kb2MvTUcvd2FmZmVuX3dlcnRlCisgICAgIGdlbGVzZW4gd2VyZGVuLiBEaWUgUmVnZWxuIGRhcmluIHNpbmQgdmVyYmluZGxpY2ggdW5kIHNvbGx0ZW4gbnVyCisgICAgIGluIEF1c25haG1lZmFlbGxlbiB1bmQgbWl0IEFic3ByYWNoZSBtaXQgZGVtIEVyem1hZ2llciBmdWVyIAorICAgICBXYWZmZW4vUnVlc3R1bmdlbi9Nb25zdGVyIHVlYmVyc2Nocml0dGVuIHdlcmRlbi4KKyAgICAgR2VyYWRlIGluIERlZmVuZEZ1bmNzIHNvbGx0ZSBhdWYgZGllIGtvcnJla3RlIEJlaGFuZGx1bmcgZGVyCisgICAgIHVlYmVyZ2ViZW5lbiBTcGVsbGZsYWdzIGdlYWNodGV0IHdlcmRlbiAtIGluc2Jlc29uZGVyZSBTUF9SRUNVUlNJVkUKKyAgICAgdW5kIFNQX05PX0FDVElWRV9ERUZFTlNFLgorCisgICAgIERpZSBNYXhpbWFsd2VydGUgdW5kIFdlcnRlIGZ1ZXIgWmVyc3RvZXJ1bmcgYmVpIFZlcmthdWYgc2luZAorICAgICAvc3lzL2NvbWJhdC5oIHp1IGVudG5laG1lbjogVkFMSURfQVJNT1VSX0NMQVNTL0tFRVBfQVJNT1VSX0NMQVNTLgorCisgVkVSRVJCVU5HU0JBVU06CisgICAgIFsvc3RkL2FybW91cl0KKyAgICAgLi4uLi4gWy9zdGQvdGhpbmcvcHJvcGVydGllc10KKyAgICAgLi4uLi4gWy9zdGQvdGhpbmcvbGFuZ3VhZ2VdCisgICAgIC4uLi4uIFsvc3RkL3RoaW5nL2NvbW1hbmRzXQorICAgICAuLi4uLiBbL3N0ZC90aGluZy9yZXN0cmljdGlvbnNdCisgICAgIC4uLi4uIFsvc3RkL3RoaW5nL2VudmNoa10KKyAgICAgLi4uLi4gWy9zdGQvYXJtb3VyL2Rlc2NyaXB0aW9uXQorICAgICAuLi4uLi4uLi4uIFsvc3RkL2Nsb3RoaW5nL2Rlc2NyaXB0aW9uXQorICAgICAuLi4uLi4uLi4uLi4uLiBbL3N0ZC90aGluZy9kZXNjcmlwdGlvbl0KKyAgICAgLi4uLi4gWy9zdGQvYXJtb3VyL3dlYXJdCisgICAgIC4uLi4uLi4uLi4gWy9zdGQvY2xvdGhpbmcvd2Vhcl0KKyAgICAgLi4uLi4gWy9zdGQvY2xvdGhpbmcvbW92aW5nXQorICAgICAuLi4uLi4uLi4uIFsvc3RkL3RoaW5nL21vdmluZ10KKyAgICAgLi4uLi4gWy9zdGQvYXJtb3VyL2NvbWJhdF0KKworIFNJRUhFIEFVQ0g6CisgICAgIFBfQVJNT1VSUywgUF9MQVNUX1dFQVJfQUNUSU9OLCBQX1RPVEFMX0FDCisgICAgIEF0dGFjaygpLCBEZWZlbmQoKSwgL2RvYy93aXovcnVlc3R1bmdlbiwgYmFsYW5jZQorCiswMy4wOC4yMDA3LCBaZXNzdHJhCisKZGlmZiAtLWdpdCBhL2RvYy9zdGQvY2xvdGhpbmcgYi9kb2Mvc3RkL2Nsb3RoaW5nCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjkxY2NiNTUKLS0tIC9kZXYvbnVsbAorKysgYi9kb2Mvc3RkL2Nsb3RoaW5nCkBAIC0wLDAgKzEsNzcgQEAKKyBTVEFOREFSREtMQVNTRToKKwkiL3N0ZC9jbG90aGluZyIKKyAKKyBCRU5VVFpVTkc6CisgICAgICAgIGluaGVyaXQgIi9zdGQvY2xvdGhpbmciOworIAorICAgICAgICAjaW5jbHVkZSA8cHJvcGVydGllcy5oPgorICAgICAgICAjaW5jbHVkZSA8Y2xvdGhpbmcuaD4KKworIFBST1BFUlRJRVM6CisKKyAgICAgQmVzb25kZXJlIEF0dHJpYnV0ZSB1bmQgQW5mb3JkZXJ1bmdlbiBmdWVyIFRyYWVnZXI6CisJUF9SRVNUUklDVElPTlMJc2V0emJhcjogQW5mb3JkZXJ1bmdlbiBhbiBUcmFlZ2VyCisJUF9DVVJTRUQJc2V0emJhcjogVmVyZmx1Y2h1bmcgKG5pY2h0IGF1c3ppZWhiYXIpCisKKyAgICAgTWVsZHVuZ2VuIHVuZCBaZWl0cHVua3RlOgorCVBfRVFVSVBfVElNRQllbnRoYWVsdCBkZW4gWmVpdHB1bmt0IGRlcyBBbnppZWhlbnMKKwlQX1dPUk4JCWVudGhhZWx0IGRlbiBUcmFlZ2VyCisJUF9XRUFSX01TRwlzZXR6YmFyOiBlaWdlbmUgQW56aWVobWVsZHVuZ2VuCisJUF9VTldFQVJfTVNHCXNldHpiYXI6IGVpZ2VuZSBBdXN6aWVobWVsZHVuZ2VuCisKKyAgICAgRHluYW1pc2NoZXMgVmVyaGFsdGVuIGluIEthbXBmIHVuZCBiZWltIEFuemllaGVuOgorCVBfV0VBUl9GVU5DCXNldHpiYXI6IE9iamVrdCBtaXQgQW56aWVoZnVua3Rpb24gIldlYXJGdW5jKCkiCisJUF9SRU1PVkVfRlVOQwlzZXR6YmFyOiBPYmpla3QgbWl0IEF1c3ppZWhmdW5rdGlvbiAiUmVtb3ZlRnVuYygpIgorCisgICAgIFp1c2FldHpsaWNoIHNpbmQgYWxsZSBQcm9wZXJ0aWVzIGF1cyAvc3RkL3RoaW5nIHZlcmZ1ZWdiYXIsIGFsc28KKyAgICAgYml0dGUgYXVjaCBmb2xnZW5kZSBzZXR6ZW46CisJUF9NQVRFUklBTAlzZXR6YmFyOiBadXNhbW1lbnNldHp1bmcKKwlQX1NJWkUJCXNldHpiYXI6IEdyb2Vzc2UKKwlQX1dFSUdIVAlzZXR6YmFyOiBHZXdpY2h0CisKKyAKKyBFUkxBRVVURVJVTkc6CisgICAgIEJhc2lza2xhc3NlIGZ1ZXIgYWxsZSBLbGVpZHVuZ2VuIGltIFNwaWVsLiBTaWUgaXN0IHZvbiAiL3N0ZC90aGluZyIKKyAgICAgYWJnZWxlaXRldC4KKyAgICAgS2xlaWR1bmcgYmVsZWd0IG5pZW1hbHMgZWluZW4gUnVlc3R1bmdzc2xvdCB1bmQgaXN0IG51ciBmdWVyIEtyYW0KKyAgICAgZ2VkYWNodCwgZGVyIGtlaW5lIGthbXBmcmVsZXZhbnRlIEZ1bmt0aW9uYWxpdGFldCBiZWVpbmhhbHRldC4KKyAgICAgTW9tZW50YW4gaXN0IGRpZSBBbnphaGwgYW4gS2xlaWR1bmdzc3R1ZWNrZW4sIGRpZSBlaW4gU3BpZWxlciBhbnppZWhlbgorICAgICBrYW5uLCBuaWNodCBiZWdyZW56dC4KKyAgICAgS2xlaWR1bmcgc2luZCBpbSBQcmluemlwIFJ1ZXN0dW5nZW4gb2huZSBhbGxlIGluIGRlbiBSdWVzdHVuZ2VuCisgICAgIGVudGhhbHRlbmUga2FtcGZyZWxldmFudGUgRnVua3Rpb25hbGl0YWV0LgorICAgICAoQlRXOiBLbGVpZHVuZ2VuIGtvZW5uZW4gYWxsZXJkaW5ncywgc29mZXJuIHVuYmVkaW5ndCBub3R3ZW5kaWcsIG1pdHRlbHMKKyAgICAgIFBfU0VOU0lUSVZFLCBQX1NFTlNJVElWRV9BVFRBQ0ssIGV0Yy4gYXVjaCBpbmRpcmVrdCBhbSBLYW1wZiB0ZWlsbmVobWVuLAorICAgICAgaW4gZGVtIFNpbm5lLCBkYXNzIHNpZSBhdWYgZWluZ2VoZW5kZW4gU2NoYWRlbiByZWFnaWVyZW4uIEhpZXJiZWkgZGFyZgorICAgICAgYWxsZXJkaW5ncyBpbiBrZWluZW0gRmFsbCBpbiBkZW4gS2FtcGZ2ZXJsYXVmIGVpbmdlZ3JpZmZlbiB3ZXJkZW4uKQorCisgICAgIFNwZXppZWxsZSBQcm9wZXJ0aWVzOgorICAgICBTZXRQcm9wKFBfV0VBUl9GVU5DLCBvYikKKwlTZXR6dCBkYXMgT2JqZWt0LCBpbiBkZW0gZGllIEZ1bmt0aW9uIFdlYXJGdW5jKCkgZGVmaW5pZXJ0CisJd2lyZC4gV2VhckZ1bmMoKSB3aXJkIGJlaW0gVmVyc3VjaCBkaWUgS2xlaWR1bmcgYW56dXppZWhlbgorCWF1ZmdlcnVmZW4sIGdpYnQgc2llIDAgenVydWVjayBzbyBzY2hlaXRlcnQgZGVyIFZlcnN1Y2guCisgICAgIFNldFByb3AoUF9SRU1PVkVfRlVOQywgb2IpCisJU2V0enQgZGFzIE9iamVrdCwgaW4gZGVtIGRpZSBGdW5rdGlvbiBSZW1vdmVGdW5jKCkgZGVmaW5pZXJ0CisJaXN0LiBEaWUgRnVua3Rpb24gd2lyZCBiZWltIFZlcnN1Y2ggZGllIEtsZWlkdW5nIGF1c3p1emllaGVuCisJYXVmZ2VydWZlbiwgZ2lidCBzaWUgMCB6dXJ1ZWNrLCBzbyBzY2hlaXRlcnQgZGVyIFZlcnN1Y2guCisKKworIFZFUkVSQlVOR1NCQVVNOgorICAgICBbL3N0ZC9jbG90aGluZ10KKyAgICAgLi4uLi4gWy9zdGQvdGhpbmcvcHJvcGVydGllc10KKyAgICAgLi4uLi4gWy9zdGQvdGhpbmcvbGFuZ3VhZ2VdCisgICAgIC4uLi4uIFsvc3RkL3RoaW5nL2NvbW1hbmRzXQorICAgICAuLi4uLiBbL3N0ZC90aGluZy9yZXN0cmljdGlvbnNdCisgICAgIC4uLi4uIFsvc3RkL3RoaW5nL2VudmNoa10KKyAgICAgLi4uLi4gWy9zdGQvY2xvdGhpbmcvZGVzY3JpcHRpb25dCisgICAgIC4uLi4uLi4uLi4gWy9zdGQvdGhpbmcvZGVzY3JpcHRpb25dCisgICAgIC4uLi4uIFsvc3RkL2Nsb3RoaW5nL21vdmluZ10KKyAgICAgLi4uLi4uLi4uLiBbL3N0ZC90aGluZy9tb3ZpbmddCisgICAgIC4uLi4uIFsvc3RkL2Nsb3RoaW5nL3dlYXJdCisKKyBTSUVIRSBBVUNIOgorICAgICBhcm1vdXJzLAorICAgICBGaWx0ZXJDbG90aGluZywgRmlsdGVyQXJtb3VycywgV2VhcigpLCBVbndlYXIoKSwgV2VhckFybW91cigpLAorICAgICBXZWFyQ2xvdGhpbmcoKSwgVW53ZWFyQXJtb3VyKCksIFVud2VhckNsb3RoaW5nKCkgCisKKzE1LjAyLjIwMDksIFplc3N0cmEKKwpkaWZmIC0tZ2l0IGEvZG9jL3N0ZC9jb250YWluZXIgYi9kb2Mvc3RkL2NvbnRhaW5lcgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi42NjcwNzhhCi0tLSAvZGV2L251bGwKKysrIGIvZG9jL3N0ZC9jb250YWluZXIKQEAgLTAsMCArMSw0OSBAQAorT0JKRUNUOgorCWNvbnRhaW5lciAKKworCitERVNDUklQVElPTjoKKwlBIGNvaW50YWluZXIgaXMgYSBzcGVjaWFsIG9iamVjdCB3aGljaCBjYW4gY29udGFpbiBvdGhlciBvYmplY3RzLgorCUl0IHByb3ZpZGVzIHRoZSBzYW1lIGZ1bmN0aW9ucyBhcyB0aGUgdGhpbmcoUykgY2xhc3MsIGJ1dCBhZGRzCisJc29tZSBmdW5jdGlvbnMgZm9yIHRoZSBoYW5kbGluZyBvZiBjb250ZW50cy4gSXQgZGVmaW5lcyBzb21lCisJcHJvcGVydGllcyByZWxhdGVkIHRvIHdoYXQgYW5kIGhvdyBtdWNoIGlzIGNvbnRhaW5lZCBpbiBpdC4KKworCVRoZSBmb2xsb3dpbmcgYWRkaXRpb25hbCBwcm9wZXJ0aWVzIGFyZSBkZWZpbmVkIGZvciBhIGNvbnRhaW5lcjoKKwlQX01BWF9XRUlHSFQsIFBfV0VJR0hUX0NPTlRFTlRTCisKKwlOb3RlIHRoYXQgdGhlIHdlaWdodCBvZiBhIGNvbnRhaW5lciBpcyBoYW5kbGVkIGVzcGVjaWFsbHk6CisJU2V0UHJvcChQX1dFSUdIVCx3ZWlnaHQpIHNldHMgdGhlIHdlaWdodCBvZiB0aGUgY29udGFpbmVyCisJd2l0aG91dCBjb250ZW50cywgd2hpbGUgUXVlcnlQcm9wKFBfV0VJR0hUKSByZXR1cm5zIHRoZSB0b3RhbAorCXdlaWdodCBvZiB0aGUgY29udGFpbmVyIHBsdXMgY29udGVudHMuCisKKwlGb3Igbm93LCB5b3UgbWF5IHVzZSB0aGUgZm9sbG93aW5nIGZ1bmN0aW9uIHRvIGFkZCBvciByZW1vdmUKKwl3ZWlnaHQgZnJvbSB0aGUgY29udGFpbmVyLgorCisJQWRkV2VpZ2h0KHdlaWdodCkKKwkgIEFkZHMgPHdlaWdodD4gdG8gdGhlIGNvbnRhaW5lci4gSWYgaXRzIE9LLCAxIGlzIHJldHVybmVkLAorCSAgb3RoZXJ3aXNlIDAuIE9ubHkgaWYgdGhlIHdlaWdodCBmaXRzIGludG8gdGhlIGNvbnRhaW5lciwgdGhlCisJICB3ZWlnaHQgaXMgYWRqdXN0ZWQuCisKKwlNYXlBZGRXZWlnaHQod2VpZ2h0KQorCSAgTGlrZSBBZGRXZWlnaHQsIGJ1dCBpZiB0aGUgd2VpZ2h0IGZpdHMgaW5zaWRlIHRoZSBjb250YWluZXIsCisJICB0aGUgdG90YWwgd2VpZ2h0IGlzIE5PVCB1cGRhdGVkLiBZb3UgbWF5IHVzZSB0aGlzIGZ1bmN0aW9uIHRvCisJICB0ZXN0IGlmIGFuIG9iamVjdCBmaXRzIGludG8gYSBjb250YWluZXIuCisKKwlOT1RFOiBDdXJyZW50bHksIHRoZXNlIGZ1bmN0aW9ucyBtYXkgYmUgY2FsbGVkIGZyb20gb3V0c2lkZS4KKwlJbiBhIGFsdGVyIHN0YWdlLCBtb3ZlbWVudCBvZiBvYmplY3RzIHdpbGwgYmUgZG9uZSBieSBjYWxsaW5nCisJdGhlIG1vdmUoKSBmdW5jdGlvbiBpbiB0aGUgb2JqZWN0IHRvIGJlIG1vdmVkLiBUaGUgbW92ZSgpCisJZnVuY3Rpb24gb2YgdGhhdCBvYmplY3Qgd2lsbCB0aGVuIGNhbGwgKE1heSlBZGRXZWlnaHQoKSBpdHNlbGYKKwl0byBkZXRlcm1pbmUgaWYgaXQgbWF5IGVudGVyIHRoZSBjb250YWluZXIuCisKKworSU5IRVJJVEFOQ0UgVFJFRToKKwljb250YWluZXIKKwkgIHwtdGhpbmcvbW92aW5nCisJICB8LXRoaW5nL3Byb3BlcnRpZXMKKwkgIHwtY29udGFpbmVyL2Rlc2NyaXB0aW9uCisJICB8ICAgYC10aGluZy9kZXNjcmlwdGlvbgorCSAgYC1jb250YWluZXIvcmVzdHJpY3Rpb25zCisKKworU0VFIEFMU086CisJdGhpbmcoUykKZGlmZiAtLWdpdCBhL2RvYy9zdGQvY29ycHNlIGIvZG9jL3N0ZC9jb3Jwc2UKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZDRlMmQ0NwotLS0gL2Rldi9udWxsCisrKyBiL2RvYy9zdGQvY29ycHNlCkBAIC0wLDAgKzEsNzYgQEAKK09CSkVLVDoKKyAgICAgIGNvcnBzZQorCisKK1NZTk9QU0lTOgorICAgICAgaW5oZXJpdCAic3RkL2NvcnBzZSI7CisKKworQkVTQ0hSRUlCVU5HOgorICAgICAgRGllIFN0YW5kYXJkbGVpY2hlIGlzdCBlaW4gc3BlemllbGxlciBDb250YWluZXIuIEVyIGJlaW5oYWx0ZXQgZGllCisgICAgICB6dXJ1ZWNrZ2VsYXNzZW5lIEF1c3J1ZXN0dW5nIGdlc3RvcmJlbmVyIE5QQ3MgdW5kIFNwaWVsZXIuCisgICAgICBEaWUgU3RhbmRhcmRsZWljaGUgdmVyZmF1bHQgbWl0IGRlciBaZWl0IHVuZCBzdGVsbHQgZWluIHBhYXIKKyAgICAgIEZ1bmt0aW9uYWxpdGFldGVuIHp1ciBWZXJmdWVndW5nLCBuYWVtbGljaCBkYXMgRXNzZW4gZGVyIExlaWNoZQorICAgICAgdW5kIGRhcyBWZXJzcG90dGVuIGF1ZiBkZW0gTW9lcmRlcmthbmFsLgorICAgICAgRGllIEZ1bmt0aW9uCisgICAgICAgIHZvaWQgSWRlbnRpZnkoIG9iamVjdCBvYiApOworICAgICAgd2lyZCBpbSBkaWUoKSBlaW5lcyBMaXZpbmdzIGF1ZmdlcnVmZW4sIGRhbWl0IGRpZSBMZWljaGUgSW5mb3JtYXRpb25lbgorICAgICAgYXVzIGRlbSBMaXZpbmcgYXVzbGVzZW4ga2FubiwgZWhlIGRpZXNlciBlbmRndWVsdGlnIHN0aXJidC4gU2NocmVpYnQKKyAgICAgIG1hbiBlaW5lIGVpZ2VuZSBMZWljaGUsIGRhbm4gaXN0IGRpZXMgZGllIGdlZWlnbmV0ZSBNb2VnbGljaGtlaXQsIGRlcgorICAgICAgTGVpY2hlIEluZm9ybWF0aW9uZW4genVrb21tZW4genUgbGFzc2VuLgorCisKK0JFSVNQSUVMRToKKyAgICAgIC8vIEVpbmUgZWlnZW5lIExlaWNoZS4KKyAgICAgICNpbmhlcml0ICJzdGQvY29ycHNlIjsKKworICAgICAgdm9pZCBjcmVhdGUoKQorICAgICAgeworICAgICAgICA6OmNyZWF0ZSgpOworICAgICAgICAvLyBJcmdlbmR3YXMgZWlnZW5lcy4uLgorICAgICAgfQorCisgICAgICAvKgorICAgICAgICogRGllc2VyIEZ1bmt0aW9uIHdpcmQgZGVyIGdldG9ldGV0ZSBMaXZpbmcgdWViZXJnZWJlbi4KKyAgICAgICAqLworICAgICAgdm9pZCBJZGVudGlmeShvYmplY3Qgb2IpCisgICAgICB7CisgICAgICAgIDo6SWRlbnRpZnkob2IpOworICAgICAgICBpZiAob2IpCisgICAgICAgIHsKKyAgICAgICAgICBvYi0+UXVlcnlQcm9wKCJtZWluZV90b2xsZV9wcm9wZXJ0eSIpOworICAgICAgICB9CisgICAgICB9CisKKyAgICAgIC8qCisgICAgICAgKiBEYXMgaXN0IGRpZSBm/HIgImlzcyBsZWljaGUiIGF1ZmdlcnVmZW5lIEZ1bmt0aW9uLgorICAgICAgICovCisgICAgICBpbnQgbWFtcGYoIHN0cmluZyBzdHIgKQorICAgICAgeworICAgICAgICBub3RpZnlfZmFpbCgiV2FzIHdpbGxzdCBEdSBlc3Nlbj9cbiIpOworICAgICAgICBpZiAoIXN0ciB8fCAhaWQoc3RyKSApIHJldHVybiAwOworICAgICAgICB0ZWxsX29iamVjdCh0aGlzX3BsYXllcigpLCAiRGllc2UgTGVpY2hlIGthbm4gbWFuIG5pY2h0IGVzc2VuLlxuIik7CisgICAgICAgIHJldHVybiAxOworICAgICAgfQorCisKKworQkVNRVJLVU5HOgorICAgICAgTWFuIGthbm4gZWlnZW5lIExlaWNoZW4gc2NocmVpYmVuLCBkaWUgdm9uIGRlciBTdGFuZGFyZGxlaWNoZSBlcmJlbgorICAgICAgb2RlciBhdWNoIG5pY2h0LiBNYW4gc29sbHRlIGRhbm4gYWJlciBkaWUgaW0gZGllKCkgYXVmZ2VydWZlbmVuCisgICAgICBGdW5rdGlvbmVuIGltcGxlbWVudGllcmVuOgorICAgICAgICBjb3Jwc2UtPklkZW50aWZ5KG9iamVjdCBvYik7CisJY29ycHNlLT5TZXRQcm9wKCoqKik7IC8vIEZ1ZXIgUF9IRUFMCisJY29ycHNlLT5tb3ZlKCoqKik7IC8vIFVtIHNpZSBpbnMgZW52aXJvbm1lbnQoKSBkZXMgVG90ZW4genUgYmVrb21tZW4uCisgICAgICBEaWUgTGVpY2hlIHNvbGx0ZSwgbXVzcyBhYmVyIGtlaW4gQ29udGFpbmVyIHNlaW4sIGRhbWl0IGRpZSBBdXNydWVzdHVuZworICAgICAgaGluZWluYmV3ZWd0IHdlcmRlbiBrYW5uLgorICAgICAgV2VubiBtYW4gbmljaHQgdm9uIGRlciBTdGFuZGFyZGxlaWNoZSBlcmJ0LCBrb21tdCBzaWUgbmljaHQgYXVmIC1Nb2VyZGVyCisgICAgICB1bmQgbWFuIGthbm4gc2llIG5pY2h0IHZlcnNwb3R0ZW4uIERhbWl0IGRpZXMgZ2VodCwgbXVzcyAoISkgbWFuIHZvbiBkZXIKKyAgICAgIFN0YW5kYXJkbGVpY2hlIGVyYmVuLgorCitTSUVIRSBBVUNIOgorICAgICAgUF9OT0NPUlBTRSwgUF9DT1JQU0UsIFBfSEVBTCwgUXVlcnlIZWFsSW5mbygpCisKKworLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorTGV0enRlIEFlbmRlcnVuZzogMzEuMDMuMjAwOCwgQXJhdGhvcm4KZGlmZiAtLWdpdCBhL2RvYy9zdGQvaG9va3MgYi9kb2Mvc3RkL2hvb2tzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmRlMzA4YmQKLS0tIC9kZXYvbnVsbAorKysgYi9kb2Mvc3RkL2hvb2tzCkBAIC0wLDAgKzEsMjc4IEBACitEYXMgbmV1ZSBIb29rc3lzdGVtCisoSW1wbGVtZW50aWVydW5nIHZvbiBNdWFkaWIsIHVlYmVyYXJiZWl0ZXQgdm9uIFplc3N0cmEpCisKK0VJTkxFSVRVTkcKKz09PT09PT09PT0KK0RhcyBuZXVlIEhvb2tzeXN0ZW0gYmF1dCBuaWNodCBtZWhyIGF1ZiBkZXIgRWludHJhZ3VuZyBlaW5lcyBIb29rcyBpbiBlaW5lcgorUHJvcGVydHkgYXVmLiBEYWR1cmNoIHdpcmQgZXMgbW9lZ2xpY2gsIGRhc3MgbmljaHQgbnVyIGVpbiBPYmpla3Qgc2ljaCBhbHMKK0hvb2sgZWludHJhZWd0LgorCitFcyBnaWJ0IHZlcnNjaGllZGVuZW4gQXJ0ZW4gdm9uIEhvb2tzLCBkaWUgbWFuIGVpbnRyYWdlbiBrYW5uOgorKiBMaXN0ZW5lciAoSF9MSVNURU5FUikKKyAgICAgICAgICAgIGRpZXNlIEhvb2tzIHdlcmRlbiB1ZWJlciBlaW4gRXJlaWduaXMgbnVyIGluZm9ybWllcnQsCisgICAgICAgICAgICBrb2VubmVuIGFiZXIgbmljaHQgZWluZ3JlaWZlbiBvZGVyIGFlbmRlcm4uCisgICAgICAgICAgICBtYXguIEFuemFobDogNQorKiBEYXRhLU1vZGlmaWVyIChIX0RBVEFfTU9ESUZJQ0FUT1IpCisgICAgICAgICAgICBkaWVzZSBIb29rcyBkdWVyZmVuIGRpZSBEYXRlbiBlaW5lcyBFcmVpZ25pc3NlcyBhZW5kZXJuLgorICAgICAgICAgICAgbWF4LiBBbnphaGw6IDMKKyogSG9vay1Nb2RpZmllciAoSF9IT09LX01PRElGSUNBVE9SKQorICAgICAgICAgICAgZGllc2UgSG9va3MgZHVlcmZlbiBkaWUgRGF0ZW4gZGVzIEVyZWlnbmlzc2VzIGFlbmRlcm4gdW5kCisgICAgICAgICAgICB6dXNhZXR6bGljaCBkYXMgRXJlaWduaXMgYXVjaCBhYmJyZWNoZW4uCisgICAgICAgICAgICBtYXguIEFuemFobDogMgorKiBTdXJ2ZXlvciAoSF9IT09LX1NVUlZFWU9SKQorICAgICAgICAgICAgZGllc2UgSG9va3MgZHVlcmZlbiBhbGxlcyBvYmVuIGJlc2NocmllYmVuZS4gWnVzYWV0emxpY2ggd2VyZGVuCisgICAgICAgICAgICBzaWUgYWJlciBhdWNoIGdlZnJhZ3QsIHdlbm4gYW5kZXJlIE9iamVrdGUgZWluZW4gSG9vayBlaW50cmFnZW4KKyAgICAgICAgICAgIHdvbGxlbiwgZWluZW4gSG9vayBhYmJyZWNoZW4gd29sbGVuIG9kZXIgRGF0ZW4gYWVuZGVybiB3b2xsZW4uCisgICAgICAgICAgICBPZGVyIGFuZGVyczogU3VydmV5b3Job29rcyBlbnRzY2hlaWRlbiwgd2FzIGFuZGVyZSBkdWVyZmVuLgorICAgICAgICAgICAgS2VpbiBub3JtYWxlcyBPYmpla3RlIHNvbGx0ZSBkaWVzZSBBcnQgdm9uIEhvb2sgZWludHJhZ2VuLiBEZXIgUk0KKyAgICAgICAgICAgIG11c3MgZGllIFZlcndlbmR1bmcgZWluZXMgU3VydmV5b3JzIGdlbmVobWlnZW4uCisgICAgICAgICAgICBtYXguIEFuemFobDogMQorCitBdXNzZXJkZW0gbGFzc2VuIHNpY2ggSG9va3Mgbm9jaCBtaXQgdW50ZXJzY2hpZWRsaWNoZXIgUHJpb3JpdGFldCBlaW50cmFnZW4sCit3ZWxjaGUgZGFubiBpbiBkZXIgZW50c3ByZWNoZW5kZW4gUmVpaGVuZm9sZ2UgYWJnZWFyYmVpdGV0IHdlcmRlbi4gV2VubiBlaW4KK25ldWVyIEhvb2sgZWluZ2V0cmFnZW4gd2lyZCwgYWJlciBlaWdlbnRsaWNoIGRpZSBtYXguIEFuemFobCBzY2hvbiBlcnJlaWNodAord2lyZCwgd2lyZCBkZXIgS29uc3VtZW50IG1pdCBkZXIgbmllZHJpZ3N0ZW4gUHJpb3JpdGFldCBnZWxvZXNjaHQuIEluIGRpZXNlbQorRmFsbCB3aXJkIGRpZSBzdXBlcnNlZWRlZEhvb2soKSBpbSB2ZXJkcmFlbmd0ZW4gS29uc3VtZW50ZW4gZ2VydWZlbi4KKworVW0gZGFzIG5ldWUgSG9vay1TeXN0ZW0genUgcmVhbGlzaWVyZW4sIGdpYnQgZXMgendlaSB3ZXNlbnRsaWNoZSBLbGFzc2VuLgorRGllIE9iamVrdGUsIGRpZSBkaWUgRWludHJhZ3VuZyB2b24gSG9va3MgZXJsYXViZW4sIGVyYmVuIGhpZXJ6dSB2b24KK2hvb2tfcHJvdmlkZXIuIE9iamVrdGUsIGRpZSBlaW5lbiBTdXJ2ZXlvci1Ib29rIGVpbnRyYWdlbiB3b2xsZW4sIHNvbGx0ZW4gdm9uCitkZXIgS2xhc3NlIGhvb2tfc3VydmV5b3IgZXJiZW4uIE9iamVrdGUgbWl0IG5vcm1hbGVuIEhvb2tzIGJyYXVjaGVuIG5pY2h0cyB6dQorZXJiZW4uCisKKworV2VsY2hlIEhvb2tzIGdpYnQgZXMgenVyIFplaXQgaW4gZGVyIEJhc2lzLU11ZGxpYj8KKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKyogSF9IT09LX01PVkUKKyAgQmVpIEJld2VndW5nIGVpbmVzIE9iamVrdGVzIGF1c2dlbG9lc3QuIEthbm4gQmV3ZWd1bmcgYmVlaW5mbHVzc2VuIG9kZXIKKyAgYWJicmVjaGVuLgorKiBIX0hPT0tfRElFCisgIEJlaW0gVG9kIGVpbmVzIExlYmV3ZXNlbnMgYXVzZ2Vsb2VzdC4gS2FubiBkZW4gVG9kIGFiYnJlY2hlbiBvZGVyCisgIDxwb2lzb25kZWF0aD4gYWJhZW5kZXJuLgorKiBIX0hPT0tfREVGRU5ECisgIEltIERlZmVuZCgpIGVpbmVzIExlYmVud2VzZW5zIGF1c2dlbG9lc3QuIEthbm4gZGFzIERlZmVuZCgpIGFiYnJlY2hlbiB1bmQKKyAgRGF0ZW4gZGVzIERlZmVuZCgpIGFlbmRlcm4uCisqIEhfSE9PS19BVFRBQ0sKKyAgSW0gQXR0YWNrKCkgZWluZXMgTGViZW53ZXNlbnMgYXVzZ2Vsb2VzdC4gS2FubiBkYXMgQXR0YWNrKCkgYWJicmVjaGVuLgorKiBIX0hPT0tfSFAKKyAgQmVpIFZlcmFlbmRlcnVuZyBkZXIgSFAgKExQKSBlaW5lcyBMZWJld2VzZW5zIGdlcnVmZW4uIChadXIgWmVpdCBrZWluZQorICBEYXRlbnZlcmFlbmRlcnVuZyBtb2VnbGljaCkKKyogSF9IT09LX1NQCisgIEJlaSBWZXJhZW5kZXJ1bmcgZGVyIFNQIChLUCkgZWluZXMgTGViZXdlc2VucyBnZXJ1ZmVuLiAoWnVyIFplaXQga2VpbmUKKyAgRGF0ZW52ZXJhZW5kZXJ1bmcgbW9lZ2xpY2gpCisqIEhfSE9PS19BVFRBQ0tfTU9ECisgIFdpcmQgaW0gQXR0YWNrKCkgYXVzZ2Vsb2VzdCwgbmFjaGRlbSBkaWUgZnVlciBkZW4gQW5ncmlmZiB3aWNodGlnZW4gRGF0ZW4KKyAgZXJtaXR0ZWx0IHVuZCBiZXJlY2huZXQgd3VyZGVuLiBEaWVzZSBrb2VubmVuIGRhbm4gdm9tIEhvb2tvbnN1bWVudGVuCisgIG5vY2htYWwgZ2VhZW5kZXJ0IHdlcmRlbi4gQXVjaCBlaW4gQWJicnVjaCBkZXMgQXR0YWNrKCkgaXN0IGhpZXIgbm9jaAorICBtb2VnbGljaC4KKyogSF9IT09LX0FMQ09IT0wKKyAgQmVpIFZlcmFlbmRlcnVuZyB2b24gUF9BTENPSE9MIGltIExlYmV3ZXNlbnMgZ2VydWZlbi4KKyogSF9IT09LX0ZPT0QKKyAgQmVpIFZlcmFlbmRlcnVuZyB2b24gUF9GT09EIGltIExlYmV3ZXNlbnMgZ2VydWZlbi4KKyogSF9IT09LX0RSSU5LCisgIEJlaSBWZXJhZW5kZXJ1bmcgdm9uIFBfRFJJTksgaW0gTGViZXdlc2VucyBnZXJ1ZmVuLgorKiBIX0hPT0tfUE9JU09OCisgIEJlaSBWZXJhZW5kZXJ1bmcgdm9uIFBfUE9JU09OIGltIExlYmV3ZXNlbnMgZ2VydWZlbi4KKyogSF9IT09LX0NPTlNVTUUKKyAgQmVpbSBLb25zdW1pZXJlbiB2b24gU3BlaXNlbiB1bmQgR2V0cmFlbmtlbiBpbiBLbmVpcGVuIGltIExlYmV3ZXNlbnMKKyAgZ2VydWZlbi4KKyogSF9IT09LX1RFQU1ST1dDSEFOR0UKKyAgQmVpIFRlYW1yZWloZW53ZWNoc2VsIHZvbSBMZWJld2VzZW4gYXVzZ2Vsb2VzdC4KKyogSF9IT09LX0lOU0VSVAorICBXaXJkIHZvbiBTcGllbGVyb2JqZWt0ZW4gYXVzZ2Vsb2VzdCwgd2VubiBlaW4gT2JqZWt0IGlucyBTcGllbGVyaW52ZW50YXIKKyAgYmV3ZWd0IHdpcmQuIChLZWluZSBEYXRlbnZlcmFlbmRlcnVuZyBtb2VnbGljaCkKKyogSF9IT09LX0VYSVRfVVNFCisgIFdpcmQgdm9uIGVpbmVtIFJhdW0gYXVzZ2Vsb2VzdCwgd2VubiBlaW4gTGViZXdlc2VuIGVpbmVuIEF1c2dhbmcgYmVudXR6dC4KKyAgQWJicnVjaCB1bmQgQWVuZGVydW5nIGRlciBEYXRlbiBkZXMgQXVzZ2FuZ3MgbW9lZ2xpY2guCisKK0hPT0stS09OU1VNRU5URU4KKz09PT09PT09PT09PT09PT0KK0RlciBIb29rLVByb3ZpZGVyIHJ1ZnQgYmVpIEF1c2xvZXNlbiBkZXMgSG9va3MgaW4gYWxsZW4gS29uc3VtZW50ZW4gZWluZQorYmVzdGltbXRlIE1ldGhvZGUgYXVmLiBXZW5uIGJlaSBkZXIgUmVnaXN0cmllcnVuZyBlaW5lcyBPYmpla3RzIGtlaW5lIENsb3N1cmUKK2FuZ2ViZW4gd3VyZGUsIGRpZSBpbiBkaWVzZW0gRmFsbCBnZXJ1ZmVuIHdlcmRlbiwgd2lyZCBzdGFuZGFyZG1hZXNzaWcgZGllCitsZnVuIEhvb2tDYWxsYmFjaygpIGdlcnVmZW4gKGdpYnQgbWFuIGVpbmUgQ2xvc3VyZSBhbiwgYmVrb21tdCBzaWUgZGllCitnbGVpY2hlbiBBcmd1bWVudGUgdW5kIGVzIHdlcmRlbiBkaWUgYmVzY2hyaWViZW5lbiBSdWVja2dhYmV3ZXJ0ZSBlcndhcnRldCk6CisgICogbWl4ZWQgSG9va0NhbGxiYWNrKG9iamVjdCBob29rU291cmNlLCBpbnQgaG9va2lkLCBtaXhlZCBob29rRGF0YSkKKyAgRGllc2UgTWV0aG9kZSB3aXJkIGluIGplZGVtIEhvb2stS29uc3VtZW50ZW4gZWluZXMgSG9vay1Qcm92aWRlcnMKKyAgYXVmZ2VydWZlbiwgc29sYW5nZSBkaWUgVmVyYXJiZWl0dW5nIG5pY2h0IHZvcmhlciBhYmdlYnJvY2hlbiB3dXJkZS4KKyAgRGllIFJlaWhlbmZvbGdlIGRlciBBYmFyYmVpdHVuZyB3aXJkIG5hY2ggTGlzdGUgKFN1cnZleW9yLAorICBIb29rLU1vZGlmaWthdG9yLCBEYXRhLU1vZGlmaWthdG9yLCBMaXN0ZW5lcikgdW5kIGRvcnQgbmFjaCBQcmlvcml0YWV0CisgIGR1cmNoZ2VmdWVocnQuCisgIEVpbiBTdXJ2ZXlvci1Ib29rIGthbm4gdmVyaGluZGVybiwgZGFzcyBIb29rcyBiZXN0aW1tdGUgQWVuZGVydW5nZW4KKyAgZHVyY2hmdWVocmVuLgorCisgIFJ1ZWNrZ2FiZXdlcnQgaXN0IGVpbiBBcnJheSwgZGFzIGRpZSBmb2xnZW5kZW4gV2VydGUgYmVpbmhhbHRldC4KKworICBIX1JFVENPREUgR2lidCBhbiwgd2VsY2hlciBIb29rLVR5cCB2ZXJ3ZW5kZXQgd3VyZGUuCisgICAgICBIX05PX01PRCA9PiBOaWNodHMgd3VyZGUgdmVyYWVuZGVydC4KKyAgICAgIEhfQUxURVJFRCA9PiBEYXRlbiB3dXJkZW4gdmVyYWVuZGVydC4KKyAgICAgIEhfQ0FOQ0VMTEVEID0+IEhvb2stS2V0dGUgc29sbCBhYmdlYnJvY2hlbiB3ZXJkZW4uCisgICAgICAgICAgICAgICAgICA9PiBBdXNzZXJkZW0gc29sbCBkaWUgSG9vay1hdXNsb2VzZW5kZSBTdGVsbGUKKyAgICAgICAgICAgICAgICAgICAgIGFiZ2Vicm9jaGVuIHdlcmRlbi4gWi5CLiB3aXJkIGRhcyBEZWZlbmQoKQorICAgICAgICAgICAgICAgICAgICAgYWJnZWJyb2NoZW4sIHdlbm4gZWluIEhfSE9PS19ERUZFTkQKKyAgICAgICAgICAgICAgICAgICAgIG1pdCBjYW5jZWxsZWQgYmVhbnR3b3J0ZXQgd2lyZC4KKyAgSF9SRVREQVRBIEdpYnQgZGllIChldnRsLiBnZWFlbmRlcnRlbikgRGF0ZW4gYW4uCisgICAgICBtaXhlZC1PYmpla3QsIGRhcyB3aWUgZGVyIFBhcmFtZXRlciBob29rRGF0YSBhdWZnZWJhdXQgaXN0LgorCitFaW4gT2JqZWt0IGRhcmYgc2ljaCBtZWhyZmFjaCBmdWVyIGRlbiBnbGVpY2hlbiBIb29rIHJlZ2lzdHJpZXJlbi4gQWxsZXJkaW5ncworaXN0IGZ1ZXIgamVkZSBSZWdpc3RyaWVydW5nIGVpbmUgYW5kZXJlIENsb3N1cmUgbm9ldGlnLgorCisgICogdm9pZCBzdXBlcnNlZWRlZEhvb2soaW50IGhvb2tpZCwgb2JqZWN0IGhvb2twcm92aWRlcikKKyAgICBXaXJkIGdlcnVmZW4sIHdlbm4gZGVyIEtvbnN1bWVudCB2b24gZWluZW0gYW5kZXJlbiBtaXQgaG9laGVyZXIgUHJpb3JpdGFldAorICAgIHZlcmRyYWVuZ3Qgd3VyZGUuCisKKworSE9PSy1QUk9WSURFUgorPT09PT09PT09PT09PQorICBEZXIgSG9vay1Qcm92aWRlciBiaWV0ZXQgZWluZSBNZW5nZSB2b24gTWV0aG9kZW4gYW4sIGRpZSBlaW5lIEtvbmZpZ3VyYXRpb24KKyAgZXJtb2VnbGljaGVuIHVuZCBkaWUgRWludHJhZ3VuZyB2b24gSG9vay1Lb25zdW1lbnRlbiBlcmxhdWJlbi4gSW0KKyAgTm9ybWFsZmFsbCBzb2xsdGUgZXIgZ2VlcmJ0IHVuZCBuaWNodCBtb2RpZml6aWVydCB3ZXJkZW4gKGF1c3NlciBuYXR1ZXJsaWNoLAorICBkaWUgdm9tIE9iamVrdGUgYmVyZWl0Z2VzdGVsbHRlbiBIb29rcyBlaW56dXRyYWdlbikuCisKKyAgKiBpbnQqIEhMaXN0SG9va3MoKTsKKyAgRGllc2UgTWV0aG9kZSBsaWVmZXJ0IGVpbmUgTGlzdGUgdm9uIEhvb2t0eXBlbiwgZnVlciBkaWUgZGFzIE9iamVrdAorICBFaW50cmFndW5nZW4gYW5uaW1tdC4gSGllciBrb2VubnRlIGJlaXNwaWVsc3dlaXNlIGVpbmUgTGlzdGUgbWl0IGRlbgorICBFaW50cmFlZ2VuIGZ1ZXIgQXR0YWNrLSwgRGVmZW5kLSB1bmQgTW92ZS1Ib29rcyBzdGVoZW4uCisKKworICAqIHByb3RlY3RlZCB2b2lkIG9mZmVySG9vayhpbnQgaG9va2lkLCBpbnQgb2ZmZXJzdGF0ZSk7CisgIERpZXNlIE1ldGhvZGUgZGllbnQgZGF6dSwgZWluZW4gYmVzdGltbXRlbiBIb29rICh6LkIuIEhfSE9PS19NT1ZFKQorICBhbnp1YmlldGVuLiBOdXIgSG9va3MsIGRpZSBoaWVybWl0IGFuZ2Vib3RlbiB3dXJkZW4sIHN0ZWhlbiB6dXIKKyAgUmVnaXN0cmllcnVuZyB6dXIgVmVyZnVlZ3VuZy4KKyAgJ29mZmVyc3RhdGUnOiAwIChuaWNodCB2ZXJmdWVnYmFyKSwgMSAodmVyZnVlZ2Jhci9hbmdlYm90ZW4pCisKKworICAqIGludCBIUmVnaXN0ZXJUb0hvb2soaW50IGhvb2tpZCwgbWl4ZWQgY29uc3VtZXIsIGludCBob29rcHJpbywKKyAgICAgICAgICAgICAgICAgICAgICAgaW50IGNvbnN1bWVydHlwZSwgaW50IHRpbWVJblNlY29uZHMpOworICBSZWdpc3RyaWVydCBlaW4gT2JqZWt0IG9kZXIgZWluZSBDbG9zdXJlIGFscyBIb29rLUtvbnN1bWVudC4KKyAgUGFyYW1ldGVyOgorICAnaG9va2lkJyAgICAgICAgZ2lidCBkZW4gSG9vay1UeXAgYW4sIHouQi4gZGVuIERlZmVuZC1Ib29rLgorICAgICAgICAgICAgICAgICAgTWFuIGthbm4gc2ljaCBudXIgZnVlciBIb29rdHlwZW4gZWludHJhZ2VuLCBkaWUgZGllIE1ldGhvZGUKKyAgICAgICAgICAgICAgICAgIEhMaXN0SG9va3MoKSBhbmdlYm90ZW4gaGF0LgorICAnY29uc3VtZXInICAgICAgV2VubiBlaW4gT2JqZWt0LCB3aXJkIGRhcyBPYmpla3QgZWluZ2V0cmFnZW4gdW5kIHNwYWV0ZXIKKyAgICAgICAgICAgICAgICAgIEhvb2tDYWxsYmFjaygpIGdlcnVmZW4uCisgICAgICAgICAgICAgICAgICBXZW5uIGVpbmUgQ2xvc3VyZSwgd2lyZCBkYXMgT2JqZWt0IGRlciBDbG9zdXJlIGVpbmdldHJhZ2VuCisgICAgICAgICAgICAgICAgICB1bmQgc3BhZXRlciBkaWVzZSBDbG9zdXJlIGdlcnVmZW4uCisgICdob29rcHJpbycgICAgICBHaWJ0IGRpZSBQcmlvcml0YWV0IGFuLCBtaXQgZGVyIGRlciBIb29rIGxhdWZlbiBzb2xsLgorICAgICAgICAgICAgICAgICAgRGllc2UgQW5nYWJlIGJlc3RpbW10IGRpZSBSZWloZW5mb2xnZSwgaW4gZGVyIGRpZSBIb29rcworICAgICAgICAgICAgICAgICAgaW4gZGVyIExpc3RlIGRlciBIb29rcyBlaW5nZXRyYWdlbiB3ZXJkZW4uIERpZSBQcmlvcml0YWV0CisgICAgICAgICAgICAgICAgICBpc3QgSF9IT09LX0xJQlBSSU8oeCksIEhfSE9PS19HVUlMRFBSSU8oeCkgb2RlcgorICAgICAgICAgICAgICAgICAgSF9IT09LX09USEVSUFJJTyh4KS4geCBkYXJmIDAsIDEgb2RlciAyIHNlaW4gKGplIG5pZWRyaWdlciwKKyAgICAgICAgICAgICAgICAgIGRlc3RvIGhvZWhlciBkaWUgUHJpb3JpdGFldCkuCisgICdjb25zdW1lcnR5cGUnICBHaWJ0IGFuLCB1bSB3ZWxjaGUgQXJ0IHZvbiBIb29rIGVzIHNpY2ggaGFuZGVsdC4KKyAgICAgICAgICAgICAgICAgIEVzIGdpYnQgdmllciBmZXN0Z2VsZWd0ZW4gVHlwZW4sIGRpZSBmdWVyIGFsbGUgSG9va3MKKyAgICAgICAgICAgICAgICAgIGV4aXN0aWVyZW4ga29lbm5lbi4gRGllIE1ldGhvZGUgSENvbnN1bWVyVHlwZUlzQWxsb3dlZCgpCisgICAgICAgICAgICAgICAgICBnaWJ0IEF1ZnNjaGx1c3MgZGFydWViZXIsIHdlbGNoZSBIb29rLVR5cGVuIGV4aXN0aWVyZW4uCisgICAgICAgICAgICAgICAgICBEaWUgSG9vay1UeXBlbiBzaW5kIGluIGhvb2suaCBkZWZpbmllcnQuCisgICd0aW1lSW5TZWNvbmRzJyBnaWJ0IGRpZSBMYXVmemVpdCBkZXMgSG9va3MgYW4uIEZhbGxzIDAgZWluZ2V0cmFnZW4gd2lyZCwKKyAgICAgICAgICAgICAgICAgIGxhZXVmdCBkZXIgSG9vayBld2lnLgorICBSdWVja2dhYmV3ZXJ0ZToKKyAgICAxIC0gUmVnaXN0cmllcnVuZyBlcmZvbGdyZWljaAorICA8PTAgLSBSZWdpc3RyaWVydW5nIGZlaGxnZXNjaGxhZ2VuOgorICAgICAgICAtMSA6IEhvb2sgdW5iZWthbm50CisgICAgICAgIC0yIDogY29uc3VtZXIgaXN0IGtlaW5lIGNsb3N1cmUgdW5kIGVzIGtvbm50ZSBrZWluIENhbGxiYWNrIGF1ZgorICAgICAgICAgICAgIEhvb2tDYWxsYmFjayBpbSBjb25zdW1lciBlcnN0ZWxsdCB3ZXJkZW4uCisgICAgICAgIC0zIDogY29uc3VtZXIgaXN0IGJlcmVpdHMgcmVnaXN0cmllcnQKKyAgICAgICAgLTQgOiBjb25zdW1lcnR5cCBpc3QgbmljaHQgZXJsYXVidAorICAgICAgICAtNSA6IGhvb2twcmlvIGlzdCBuaWNodCBlcmxhdWJ0CisgICAgICAgIC02IDogU3VydmV5b3IgaGF0IFJlZ2lzdHJpZXJ1bmcgbmljaHQgZXJsYXVidAorICAgICAgICAtNyA6IHp1dmllbGUgSG9va3MgcmVnaXN0cmllcnQgLyBrZWluIEhvb2tlaW50cmFnIGZyZWkKKworICAqIGludCBIVW5yZWdpc3RlckZyb21Ib29rKGludCBob29raWQsIG1peGVkIGNvbnN1bWVyKTsKKyAgSGVidCBkaWUgUmVnaXN0cmllcnVuZyB2b24gPGNvbnN1bWVyPiBmdWVyIGVpbmVuIGJlc3RpbW10ZW4gSG9vay1UeXAgd2llZGVyCisgIGF1Zi4KKyAgUGFyYW1ldGVyOgorICAnaG9va2lkJyAgICBEaWUgS2VubnVuZyBkZXMgSG9vay1UeXBzLCB6LkIuIGRpZSBLZW5udW5nIGRlcyBBdHRhY2stSG9va3MuCisgICdjb25zdW1lcicgIERhcyBPYmpla3Qgb2RlciBkaWUgQ2xvc3VyZSwgZGllL2RhcyBuaWNodCBtZWhyIHJlZ2lzdHJpZXJ0IHNlaW4KKyAgICAgICAgICAgICAgc29sbC4gQmVpIGVpbmVyIENsb3N1cmUgd2lyZCBnZW5hdSBkaWVzZSBhdXNnZXRyYWdlbi4gQmVpIGRlcgorICAgICAgICAgICAgICBBbmdhYmUgZWluZXMgT2JqZWt0cyB3aXJkIHZlcnN1Y2h0LCBkaWUgQ2xvc3VyZSBhdWYKKyAgICAgICAgICAgICAgSG9va0NhbGxiYWNrKCkgaW4gZGllc2VtIE9iamVrdCBhdXN6dXRyYWdlbi4KKyAgUnVlY2tnYWJld2VydGU6CisgIDAgLSAnY29uc3VtZXInIG5pY2h0IGFscyBLb25zdW1lbnQgZ2VmdW5kZW4KKyAgMSAtIEF1c3RyYWdlbiBlcmZvbGdyZWljaAorCisgICogaW50IEhDb25zdW1lclR5cGVJc0FsbG93ZWQoaW50IHR5cGUsIG9iamVjdCBjb25zdW1lcik7CisgIERpZXNlIE1ldGhvZGUgbGllZmVydCAxIHp1cnVlY2ssIHdlbm4gZWluIGJlc3RpbW10ZXIgS29uc3VtZW50ZW4tVHlwCisgIChmdWVyIGRpZXNlbiBLb25zdW1lbnRlbikgZXJsYXVidCB3aXJkLgorICBEaWUgU3RhbmRhcmRtZXRob2RlIGxpZWZlcnQgaW1tZXIgMSAodHJ1ZSkgenVydWVjay4gRXJiZW5kZSBPYmpla3RlCisgIGtvZW5uZW4gZGllc2UgTWV0aG9kZSB1ZWJlcnNjaHJlaWJlbiwgd2VubiBzaWUgbmljaHQgYWxsZSBIb29rdHlwZW4KKyAgYW5iaWV0ZW4uCisKKworICAqIGludCBIUHJpb3JpdHlJc0FsbG93ZWQoaW50IHByaW8sIG9iamVjdCBjb25zdW1lcik7CisgIERpZXNlIE1ldGhvZGUgZ2lidCBhbiwgb2IgZWluZSBiZXN0aW1tdGUgUHJpb3JpdGFldCAoZnVlciBkZW4gYW5nZWdlYmVuZW4KKyAgS29uc3VtZW50ZW4pIGVybGF1YnQgaXN0LiBEaWUgU3RhbmRhcmRtZXRob2RlIGxpZWZlcnQgaW1tZXIgMSAodHJ1ZSkKKyAgenVydWVjay4gRXJiZW5kZSBPYmpla3RlIGtvZW5uZW4gZGllc2UgTWV0aG9kZSB1ZWJlcnNjaHJlaWJlbiwgd2VubgorICBzaWUgZGllIHZlcmZ1ZWdiYXJlbiBIb29rLVByaW9yaXRhZXRlbiBlaW5zY2hyYWVua2VuIHdvbGxlbi4KKworCisgICogaW50IEhJc0hvb2tDb25zdW1lcihpbnQgaG9va2lkLCBtaXhlZCBjb25zdW1lcik7CisgIElzdCA8Y29uc3VtZXI+IGVpbiBPYmpla3QsIGxpZWZlcnQgZGllIE1ldGhvZGUgZGllIEFuemFobCwgd2llIG9mdCBkaWVzZXMKKyAgT2JqZWt0IChtaXQgdmVyc2NoaWVkZW5lbiBDbG9zdXJlcykgZnVlciBkZW4gSG9vayA8aG9va2lkPiBlaW5nZXRyYWdlbiBpc3QuCisgIElzdCA8Y29uc3VtZXI+IGVpbmUgQ2xvc3VyZSwgbGllZmVydCBkaWVzZSBNZXRob2RlIDEsIHdlbm4gZGllc2UKKyAgQ2xvc3VyZSBmdWVyIGRlbiBIb29rIDxob29raWQ+IGVpbmdldHJhZ2VuIGlzdC4KKworCisgICogcHJvdGVjdGVkIG1hcHBpbmcgSENvcHlIb29rTWFwcGluZygpOworICBEaWVzZSBNZXRob2RlIGxpZWZlcnQgZWluZSBLb3BpZSBkZXMgSG9vay1NYXBwaW5ncy4KKyAgQUNIVFVORzogZGllc2UgRGF0ZW4gc29sbHRlbiBkYXMgT2JqZWt0IE5JRU1BTFMgdmVybGFzc2VuLiAoQXVzc2VyIGZ1ZXIKKyAgICAgICAgICAgRGVidWd6d2Vja2UpCisKKworCitIT09LLVNVUlZFWU9SCis9PT09PT09PT09PT09CisgIE9iamVrdGUgbWl0IFN1cnZleW9yaG9va3MgbXVlc3NlbiBlaW5lIE1lbmdlIHZvbiBNZXRob2RlbiBkZWZpbmllcmVuLCBkaWUKKyAgZGVyIEhvb2twcm92aWRlciBhdWZydWZ0OgorCisgICogc3RhdHVzIEhvb2tSZWdpc3RyYXRpb25DYWxsYmFjaygKKyAgICAgICAgICAgICAgICBvYmplY3QgcmVnaXN0cmluZ09iamVjdCwKKyAgICAgICAgICAgICAgICBpbnQgaG9va2lkLAorICAgICAgICAgICAgICAgIG9iamVjdCBob29rU291cmNlLAorICAgICAgICAgICAgICAgIGludCByZWdpc3RyaW5nT2JqZWN0c1ByaW9yaXR5LAorICAgICAgICAgICAgICAgIGludCByZWdpc3RyaW5nT2JqZWN0c1R5cGUpCisgIERpZXNlIE1ldGhvZGUgd2lyZCB2b20gSG9vay1Qcm92aWRlciBhdWZnZXJ1ZmVuLCB3ZW5uIGRlciBIb29rLUtvbnN1bWVudAorICBhbHMgU3VydmV5b3IgZWluZ2V0cmFnZW4gaXN0IHVuZCBlaW4gd2VpdGVyZXIgSG9vayBlaW5nZXRyYWdlbiB3ZXJkZW4gc29sbC4KKyAgR2lidCBkaWVzZSBNZXRob2RlIDAgenVydWVjaywgZGFubiB2ZXJiaWV0ZXQgZGVyIEtvbnN1bWVudCwgZGFzcyBkZXIKKyAgYW5kZXJlIEtvbnN1bWVudCBhbHMgSG9vayBlaW5nZXRyYWdlbiB3aXJkLgorCisgICogaW50IEhvb2tDYW5jZWxBbGxvd2FuY2VDYWxsYmFjaygKKyAgICAgICAgICAgICAgICBvYmplY3QgY2FuY2VsbGluZ09iamVjdCwKKyAgICAgICAgICAgICAgICBpbnQgaG9va2lkLAorICAgICAgICAgICAgICAgIG9iamVjdCBob29rU291cmNlLAorICAgICAgICAgICAgICAgIGludCBjYW5jZWxsaW5nT2JqZWN0c1ByaW9yaXR5LAorICAgICAgICAgICAgICAgIG1peGVkIGhvb2tEYXRhKQorICBEaWVzZSBNZXRob2RlIHdpcmQgYXVmZ2VydWZlbiwgdW0gaGVyYXVzenVmaW5kZW4sIG9iIGVpbiBiZXN0aW1tdGVyCisgIGFuZGVyZXIgSG9vayBkaWUgQXVzZnVlaHJ1bmcgZGVyIEhvb2stS2V0dGUgdW50ZXJicmVjaGVuIGRhcmYuCisgIE51ciBIb29rcyBpbSBCZXJlaWNoIEhfSE9PS19NT0RJRklDQVRPUiB3ZXJkZW4gZGVyIE1ldGhvZGUgdWViZXJnZWJlbi4KKworICAqIGludCBIb29rTW9kaWZpY2F0aW9uQWxsb3dhbmNlQ2FsbGJhY2soCisgICAgICAgICAgICAgICAgb2JqZWN0IG1vZGlmeWluZ09iamVjdCwKKyAgICAgICAgICAgICAgICBpbnQgaG9va2lkLAorICAgICAgICAgICAgICAgIG9iamVjdCBob29rU291cmNlLAorICAgICAgICAgICAgICAgIGludCBtb2RpZnlpbmdPYmplY3RzUHJpb3JpdHksCisgICAgICAgICAgICAgICAgbWl4ZWQgaG9va0RhdGEpCisgIERpZXNlIE1ldGhvZGUgd2lyZCBhdWZnZXJ1ZmVuLCB1bSBoZXJhdXN6dWZpbmRlbiwgb2IgZWluIGJlc3RpbW10ZXIKKyAgYW5kZXJlciBIb29rIGRpZSBEYXRlbiBkZXMgSG9va3MgdmVyYWVuZGVybiBkYXJmIG9kZXIgbmljaHQuCisgIEVzIHdlcmRlbiBkaWUgSG9va3MgaW4gZGVuIEJlcmVpY2hlbiBIX0hPT0tfTU9ESUZJQ0FUT1IgdW5kCisgIEhfREFUQV9NT0RJRklDQVRPUiAoaW4gZGllc2VyIFJlaWhlbmZvbGdlKSBhdWZnZXJ1ZmVuLgorCisKK1dBUyBLT1NURVQgREFTPworICBEYXMgQXVzbG9lc2VuIGVpbmVzIEhvb2tzIHBlciBIb29rRmxvdygpIGtvc3RldCAxMTEgVGlja3MgdW5kIGNhLiA3IHVzLCB3ZW5uCisgIGVzIGdhciBrZWluZW4gZ2lidCwgZGVyIGRyYXVmIGxhdXNjaHQgKHNvenVzYWdlbiBGaXhrb3N0ZW4pLgorICBQcm8gSF9MSVNURU5FUiBrb21tZW4gZGFubiAzMSBUaWNrcyB1bmQgY2EuIDIgdXMgZGF6dS4KKworICBHaWJ0cyBlaW5lbiBTdXJ2ZXlvci1Ib29rIChkZXIgd2lyZCBkYW5uIGdlZnJhZ3QsIG9iIGFuZGVyZSBPYmpla3RlIGRpZQorICBEYXRlbiBkZXMgSG9va3MgYWVuZGVybiBvZGVyIGRpZSBIb29rdmVyYXJiZWl0dW5nIGFiYnJlY2hlbiBkdWVyZmVuKToKKyAgRml4a29zdGVuOiAxNTUgVGlja3MsIDExIHVzLgorICBQbHVzIHBybyBEYXRhLU1vZGlmaWVyOgorICAxMDYgVGlja3MsIDUuNiB1cworICBQbHVzIHBybyBIb29rLU1vZGlmaWVyLCBkZXIgYWJlciBudXIgRGF0ZW4gYWVuZGVydDoKKyAgMTEyIFRpY2tzLCA2LjQgdXMKKyAgVW5kIGVpbiBIb29rLU1vZGlmaWVyLCBkZXIgZGVuIEhvb2sgYWJicmljaHQ6CisgIDc2IFRpY2tzLCA0IHVzCisKKyAgKE1hY2h0IGRlciBTdXJ2ZXlvciBuYXR1ZXJsaWNoIGlyZ2VuZHdhcyBhbmRlcmVzIGFscyAncmV0dXJuIDE7Jywgd2lyZHMKKyAgbmF0dWVybGljaCBlbnRzcHJlY2hlbmQgdGV1cmVyLikKKwpkaWZmIC0tZ2l0IGEvZG9jL3N0ZC9saXZpbmcgYi9kb2Mvc3RkL2xpdmluZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44OWQ0N2JkCi0tLSAvZGV2L251bGwKKysrIGIvZG9jL3N0ZC9saXZpbmcKQEAgLTAsMCArMSwxMjAgQEAKKworT0JKRUNUOgorCWxpdmluZyAKKworCitTWU5PUFNJUzoKKwlpbmhlcml0ICJzdGQvbGl2aW5nIjsKKworCSNpbmNsdWRlIDxwcm9wZXJ0aWVzLmg+CisJI2luY2x1ZGUgPGxpdmluZy5oPgorCisKK0RFU0NSSVBUSU9OOgorCVRoaXMgaXMgdGhlIGdlbmVyaWMgbGl2aW5nIG9iamVjdCB3aGljaCAnbGl2ZXMnLCBjYW4gbW92ZSwKKwljYW4gZmlnaHQuCisKKwlJdCBoYXMgYSBudW1iZXIgb2YgJ3N0YXRzJywgYWxzbyBjYWxsZWQgJ2F0dHJpYnV0ZXMnIGluCisJdGhlIG5ldyBzeXN0ZW0uIFRoZXNlIGluY2x1ZGUgdGhlIGZvcm1lciBzdGF0cyAKKwlzdHJlbmd0aCwgZGV4dGVyaXR5LCBpbnRlbGxpZ2VuY2UgYW5kIGNvbnN0aXR1dGlvbi4KKwlUaGVzZSBhdHRyaWJ1dGVzIGRldGVybWluZSB0aGUgbGlmZSBmdW5jdGlvbnMgYW5kCisJdmFyaWFibGVzIGxpa2UgaGl0cG9pbnRzIGFuZCBzcGVsbHBvaW50cywgYnV0IGFsc28gdGhlCisJYWJpbGl0eSB0byBwZXJmb3JtIGNlcnRhaW4gYWN0aW9ucyBsaWtlIHNwZWxsY2FzdGluZyBvcgorCXN3b3JkZmlnaHRpbmcuIEF0dHJpYnV0cyBhcmUgaW1wbGVtZW50ZWQgYXMgYSBwcm9wZXJ0eQorCVBfQVRUUklCVVRFUy4gQXR0cmlidXRlcyBjYW4gYmUgc2V0IGJ5IHVzaW5nIHRoZSBmdW5jdGlvbnMKKworCVNldEF0dHJpYnV0ZShzdHJpbmcgYXR0cmlidXRlLCBpbnQgdmFsdWUpCisJICBTZXRzIDxhdHRyaWJ1dGU+IHRvIDx2YWx1ZT4uIENlcnRhaW4gcmVzdHJpY3Rpb25zIG1pZ2h0CisJICBleGlzdCwgYW5kIHRoZSByZXF1ZXN0ZWQgYXR0cmlidXRlIG1pZ2h0IG5vdCBiZSBzZXQuCisJICBBdHRyaWJ1dGVzIGFyZSBpbnRlZ2VyIHZhbHVlcywgYW5kIGFyZSBpbiB0aGUgcmFuZ2UKKwkgIG9mIDEgKHZlcnkgYmFkKSB0byAyMCAoZXhjZWxsZW50IGFuZCBoaWdoZXN0IHBvc3NpYmxlCisJICBmb3IgYSBub3JtYWwgaHVtYW4pLgorCisJaW50IFF1ZXJ5QXR0cmlidXRlKHN0cmluZyBhdHRyaWJ1dGUpCisJICBSZXR1cm5zIHZhbHVlIG9mIDxhdHRyaWJ1dGU+CisKKwlBYmlsaXRpZXMuIEEgbGl2aW5nIGNyZWF0dXJlIG1heSBoYXZlIHNwZWNpYWwgYWJpbGl0aWVzCisJdG8gcGVyZm9ybSBjZXJ0YWluIGFjdGlvbnMuIFRoZXNlIG1heSBiZSB2ZXJ5IGRpZmZlcmVudAorCXR5cGVzIG9mIGFjdGlvbnMsIGxpa2UgZmlnaHRpbmcgd2l0aCBhIHN3b3JkLCBjYXN0aW5nCisJYSBmaXJlYmFsbCBvciBjbGltYmluZyB1cCBhIHRyZWUuIEFiaWxpdGllcyBhcmUKKwlpbXBsZW1lbnRlZCBhcyB0aGUgUF9BQklMSVRJRVMgcHJvcGVydHkuIEFuIGFiaWxpdHkgbWF5CisJYmUgYWNjb21wYW5pZWQgYnkgYW4gb2JqZWN0IHdoaWNoIG1heSBkZWZpbmUgc3BlY2lhbAorCWFjdGlvbnMgYW5kIHdoaWNoIHVzZXMgdGhlIHZhbHVlcyBvZiBQX0FCSUxJVEVTLCBmb3IgCisJZXhhbXBsZSBhIHNwZWxsYm9vayB3aWxsIHN0b3JlIHNwZWxsIGxldmVscyB0aGVyZSBvcgorCWEgd2VhcG9uIHVzZXMgYSB3ZWFwb24gYWJpbGl0eSAoc2tpbGwpLiBUaGUgYWJpbGl0aWVzCisJY2FuIGJlIG1hbmlwdWxhdGVkOgorCisJU2V0QWJpbGl0eShzdHJpbmcgYWJpbGl0eSwgaW50IHZhbHVlKQorCSAgU2V0cyA8YWJpbGl0eT4gdG8gPHZhbHVlPi4KKworCWludCBRdWVyeUFiaWxpdHkoc3RyaW5nIGFiaWxpdHkpCisJICBBc2sgdGhlIHZhbHVlIG9mIDxhYmlsaXR5Pi4KKworCUVxdWlwbWVudC4gV2VhcG9uY2xhc3MgYW5kIGFybW91cmNsYXNzIGFyZSBkZWZpbmVkLiBVbmxlc3MKKwlhIHdlYXBvbiBpcyB1c2VkLCB0aGUgd2MgaXMgMC4gVW5sZXNzIGFuIGFybW91ciBpcyB1c2VkLAorCXRoZSBhYyBpcyAwLiAoUF9XQyBhbmQgUF9BQykKKworCUxpdmUgdmFyaWFibGVzLiBBIGxpdmluZyBjcmVhdHVyZSBoYXMgc2V2ZXJhbCBuZWVkcyBqdXN0CisJYmVjYXVzZSBpdCBpcyBhbGl2ZS4gVGhlIGNvbXBsZXggbGlmZSBmdW5jdGlvbnMgYXJlCisJcmVkdWNjZWQgdG8gc29tZSBjcnVjaWFsIGZhY3RvcnMuCisKKwlQX0hQCisJICBUaGVzZSBhcmUgbWFpbmx5IGRldGVybWluZWQgYnkgdGhlIGNvbnN0aXR1dGlvbiBhbmQgZ2l2ZQorCSAgdGhlIGFiaWxpdHkgb2YgdGhlIGJvZHkgdG8gYWJzb3JiIGRhbWFnZS4gSWYgdGhlCisJICBoaXRwb2ludHMgZ28gYmVsb3cgemVybywgdGhlIGNyZWF0dXJlIGlzIGRlYWQuCisKKwlQX1NQCisJICBTcGVsbHBvaW50cyAoc29tZXRpbWVzIGNhbGxlZCBtYW5hKSBkZXNjcmliZSB0aGUgbWFnaWNhbAorCSAgKHNwaXJpdHVhbCkgY2FwYWJpbGl0eSBvZiB0aGUgY3JlYXR1cmUuIEl0IGlzIG1haW5seQorCSAgZGV0ZXJtaW5lZCBieSBJbnRlbGxpZ2VuY2UgYW5kIFdpc2RvbS4gSXQgaXMgdXAgdG8gdGhlCisJICBjcmVhdHVyZSBob3cgZ29vZCBpdCB1c2VzIHRoZSBzcGVsbHBvaW50IHJlc291cmNlLgorCSAgU3BlbGxwb2ludHMgd2lsbCBnbyBkb3duIHdoZW4gc3VwZXJuYXR1cmFsIGFjdGlvbnMgYXJlCisJICBwZXJmb3JtZWQgYnkgdGhlIGNyZWF0dXJlLgorCisJUF9NQVhfU1AsIFBfTUFYX0hQCisJICBSZWFkb25seSB2YXJpYWJsZSB3aGljaCBhcmUgY29tcHV0ZWQgZnJvbSBhdHRyaWJ1dGVzLgorCisJUF9GT09ELCBQX0RSSU5LLCBQX0FMQ09IT0wsIChQX1BPSVNPTikKKwkgIFRoZXNlIHRocmVlIHZhcmlhYmxlcyBkZXNjcmliZSBodW5nZXIsIHRoaXJzdCBhbmQKKwkgIGludG94aWNhdGlvbiBieSBhbGNvaG9sLiBUaGUgbWF4IGlzIGRlcGVuZGVudCBvbiB0aGUKKwkgIGNvbnN0aXR1dGlvbiBvZiB0aGUgbGl2aW5nLCBhbmQgb2YgdGhlIHdlaWdodC4KKwkgIFRoZXNlIHZhcmlhYmxlcyBhdXRvbWF0aWNhbGx5IGRlY3JlYXNlIHdpdGggdGltZS4KKwkgIFdoZW4gZm9vZCBvciBkcmluayBnb2VzIGJlbG93IHplcm8sIHRoZSBjcmVhdHVyZQorCSAgc3VmZmVycyBodW5nZXIgb3IgdGhpcnN0IGFuZCB3aWxsIGxvc2UgaGl0cG9pbnRzLgorCisJUF9NQVhfRk9PRCwgUF9NQVhfRFJJTkssIFBfTUFYX0FMQ09IT0wKKwkgIFJlYWRvbmx5IHZhcmlhYmxlcyB3aGljaCBhcmUgY29tcHV0ZWQgZnJvbSBhdHRyaWJ1dGVzLgorCisJUF9XRUlHSFQsIFBfU0laRQorCSAgVGhlc2UgdmFyaWFibGVzIGRlc2NyaWJlIHRoZSBwaHlzaWNhbCBwcm9wb3J0aW9ucyBvZgorCSAgdGhlIGNyZWF0dXJlcyBib2R5LiBCb3RoIHZhcmlhYmxlcyBhcmUgc3RhbmRhcmQgcHJvcGVydGllcworCSAgYW5kIGFyZSBhbHNvIHVzZWQgaW4gbm9ybWFsIG9iamVjdHMuCisKKwlQX01BWF9XRUlHSFQgCisJICBUaGlzIGlzIGEgcmVhZG9ubHkgdmFyaWFibGUgd2hpY2ggZGVzY3JpYmVzIGhvdyBtdWNoCisJICBhIGxpdmluZyBjcmVhdHVyZSBtYXkgY2FycnkgYXJvdW5kLgorCisJUF9HRU5ERVIKKwkgIFRoaXMgaXMgb2J2aW91cy4gR2VuZGVyIG1heSBiZSBNQUxFLCBGRU1BTEUgb3IgTkVVVEVSLAorCSAgYXMgZGVmaW5lZCBpbiA8bGl2aW5nLmg+LiBQbGF5ZXIgZ2VuZGVyIG1heSBiZSBvbmx5CisJICBNQUxFIG9yIEZFTUFMRS4KKworCVBfUkFDRQorCSAgQSBzdHJpbmcgd2hpY2ggZGVmaW5lcyB0aGUgcmFjZS4KKworCVBfQUxJR05NRU5UCisJICBUaGUgYWxpZ25tZW50IG9mIHRoZSBsaXZpbmcsIHJhbmdpbmcgZnJPCisKKwlQX0FHRQorCSAgVGhlIGFnZSBvZiB0aGUgbGl2aW5nIGNyZWF0dXJlIGluIHNlY29uZHMKKwkKKworSU5IRVJJVEFOQ0UgVFJFRToKKwlsaXZpbmcKKwkgIHwtdGhpbmcvbW92aW5nCisJICB8LXRoaW5nL3Byb3BlcnRpZXMKKwkgIGAtdGhpbmcvZGVzY3JpcHRpb24KKworCitTRUUgQUxTTzoKKwlwcm9wZXJ0aWVzKEMpLCB1bml0cyhDKQpkaWZmIC0tZ2l0IGEvZG9jL3N0ZC9vYnNvbGV0ZS9kb29yIGIvZG9jL3N0ZC9vYnNvbGV0ZS9kb29yCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjE1YmFkMzAKLS0tIC9kZXYvbnVsbAorKysgYi9kb2Mvc3RkL29ic29sZXRlL2Rvb3IKQEAgLTAsMCArMSwyMiBAQAorKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorKioqKioqKioqKioqKioqKioqKioqKioqKiBWRVJBTFRFVEUgTEZVTiAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorKioqKioqKioqKioqKioqKioqKioqKioqKiBETyBOT1QgVVNFISAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorCitCSVRURSBTVEFUVCBERVIgRlVOS1RJT04gRG9vcigpIElNTUVSICBOZXdEb29yKCkgQkVOVVRaRU4uCisKKwlBZGREb29yKHN0cmluZyBjb21tYW5kLCBzdHJpbmcgcm9vbWZpbGUsIHN0cmluZyBkb29ybmFtZSwKKwkJc3RyaW5nIGRvb3JkZXNjLCBzdHJpbmcga2V5bmFtZSwgaW50IHN0YXR1cykKKwkgIENyZWF0ZXMgYSBkb29yIHdoaWNoIGxlYWRzIGluIGRpcmVjdGlvbiA8Y29tbWFuZD4gdG8gdGhlCisJICByb29tIDxyb29tZmlsZT4uIFRoZSBkb29yIGhhcyB0aGUgc2hvcnQgZGVzY3JpcHRpb24KKwkgIDxkb29ybmFtZT4gYW5kIHRoZSBsb25nIGRlc2NyaXB0aW9uIDxkb29yZGVzYz4sIHdoZW4geW91CisJICBsb29rIGF0IGl0LiBJZiBhIGRvb3Igd2l0aCB0aGUgc2FtZSA8ZG9vcm5hbWU+IGV4aXN0cyBpbgorCSAgdGhlIG90aGVyIHJvb20sIHRoZSBvcGVuL2Nsb3NlL2xvY2tlZCBzdGF0dXMgd2lsbCBiZQorCSAgdGhlIHNhbWUgaW4gYm90aCByb29tcyBhdCBhbGwgdGltZS4gRG9vcnMgYXJlIGxvY2tlZCBvbgorCSAgcmVzZXQoKSBpZiBrZXluYW1lIGlzIG5vdCAwLiBJZiA8a2V5bmFtZT4gaXMgZ2l2ZW4sIHRoZQorCSAgZG9vciBpcyBsb2NrZWQgYW5kIGNhbiBiZSBvcGVuZWQgb25seSB3aXRoIGEga2V5IHdoaWNoCisJICBtYXRjaGVzIDxrZXluYW1lPiB3aXRoIGl0cyBpZCgpLiA8c3RhdHVzPiBjYW4gYmUgc2V0CisJICB0byBhbiBpbml0aWFsIHZhbHVlIG9mIERPT1JfU1RBVFVTX09QRU4sIERPT1JfU1RBVFVTX0NMT1NFRAorCSAgb3IgRE9PUl9TVEFUVVNfTE9DS0VELiBUaGVzZSBzdGF0dXMgY29kZXMgYXJlIGRlZmluZWQgaW4KKwkgIDxkb29ycy5oPi4KKwpkaWZmIC0tZ2l0IGEvZG9jL3N0ZC9wdWIgYi9kb2Mvc3RkL3B1YgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4yMTU0NGE3Ci0tLSAvZGV2L251bGwKKysrIGIvZG9jL3N0ZC9wdWIKQEAgLTAsMCArMSw5NSBAQAorVW0gZGllIEZ1bmt0aW9uYWxpdGFldCBlaW5lciBLbmVpcGUgbnV0emVuIHp1IGtvZW5uZW4sIG11c3MgZGVyIFJhdW0gZWluZQorZGVyIGZvbGdlbmRlbiBEYXRlaWVuIGltcG9ydGllcmVuOgorCisnL3N0ZC9wdWIuYycgICAgICAgICAtIGRpZSBLb21wbGV0dGxvZXN1bmcgaW5jbHVzaXZlIGRlciBBYmhhZW5naWdrZWl0IHp1CisgICAgICAgICAgICAgICAgICAgICAgICcvc3RkL3Jvb20nCisKKycvc3RkL3Jvb20vcHViLmMnICAgIC0gZGllIE1pbmRlc3Rsb2VzdW5nLCBiZWkgZGVyIG1hbiBzZWxic3QgZGllIEFiaGFlbmdpZy0KKyAgICAgICAgICAgICAgICAgICAgICAga2VpdCB6dSBlaW5lbSBSYXVtIGRlZmluaWVyZW4gbXVzcworCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KK0VpbmUgWnVzYW1tZW5mYXNzdW5nIGRlciBQdWItUHJvcGVydGllcyAoZnVlciBnZW5hdWVyZXMgc2llaGUgbWFucGFnZXMpCithdXMgJy9zeXMvcHViLmgnCisKK1BfTlBDX0ZBU1RIRUFMICAgICAgIC0gTlBDcyB0YW5rZW4gaGllciBhdWYgZGllICJzY2huZWxsZSIgQXJ0CisKK1BfTk9fU1REX0RSSU5LICAgICAgIC0gRGVyIFB1YiBzb2xsIGtlaW5lIFN0YW5kYXJkLUdldHJhZW5rZSBhbmJpZXRlbgorCitQX1BVQl9VTkFWQUlMQUJMRSAgICAtIE1lbGR1bmcsIHdlbm4gZXR3YXMgbmljaHQgbWVociB2b3JoYW5kZW4gaXN0CisKK1BfUFVCX05PVF9PTl9NRU5VICAgIC0gTWVsZHVuZywgd2VubiBldHdhcyBuaWNodCBpbSBNZW51ZSBzdGVodAorCitQX1BVQl9OT19NT05FWSAgICAgICAtIE1lbGR1bmcsIHdlbm4gU3BpZWxlciBuaWNodCBnZW51ZyBHZWxkIGhhdAorCitQX1BVQl9OT19LRUVQRVIgICAgICAtIE1lbGR1bmcsIHdlbm4gZGVyIFBfS0VFUEVSIG5pY2h0IGFud2VzZW5kIGlzdAorCithdXMgJy9zeXMvcm9vbS9kZXNjcmlwdGlvbi5oJworCitQX0tFRVBFUiAgICAgICAgICAgICAtIElkIGRlcyBLbmVpcGVuaW5oYWJlcnMsIGRlciBhbndlc2VuZCBzZWluIG11c3MsIAorICAgICAgICAgICAgICAgICAgICAgICBkYW1pdCBkaWUgS25laXBlIGdlbnV0enQgd2VyZGVuIGthbm4KKworLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCitNZXRob2RlbiB6dXIgTWFuaXB1bGF0aW9uIGRlcyBNZW51ZXMgKGZ1ZXIgZ2VuYXVlcmVzIHNpZWhlIG1hbnBhZ2VzKQorCitBZGRUb01lbnUgICAgICAgICAgICAtIGZ1ZWd0IGVpbmVuIEVpbnRyYWcgenVtIE1lbnVlIGhpbnp1CisKK1JlbW92ZUZyb21NZW51ICAgICAgIC0gZW50ZmVybnQgZWluZW4gRWludHJhZyBhdXMgZGVtIE1lbnVlCisKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorQWJsYXVmIHVuZCBNYW5pcHVsYXRpb25zbW9lZ2xpY2hrZWl0ZW4gaW4gZWluZXIgS25laXBlCisKK1d1bnNjaCB3dXJkZSB1ZWJlciAna2F1ZmUnLCAnYmVzdGVsbGUnIG9kZXIgJ3NwZW5kaWVyZScgYWJnZWdlYmVuOgorCitzZWFyY2hfd2hhdCgpICAgICAgICAtIHBydWVmdCwgZGFzcyBuaWNodCBtZWhyZXJlIFd1ZW5zY2hlIGF1ZiBlaW5tYWwKKyAgICAgICAgICAgICAgICAgICAgICAgZ2VhZXVzc2VydCB3ZXJkZW4gdW5kIHJ1ZnQgY29uc3VtZV9zb21ldGhpbmcoKSBhdWYKKworY29uc3VtZV9zb21ldGhpbmcoKSAgLSBwcnVlZnQgZGllIEFud2VzZW5oZWl0IGRlciBiZXRlaWxpZ3RlbiBQZXJzb25lbgorICAgICAgICAgICAgICAgICAgICAgLSBwcnVlZnQgZGllIEFud2VzZW5oZWl0IGRlcyBLbmVpcGVuYmVzaXR6ZXJzCisgICAgICAgICAgICAgICAgICAgICAtIHBydWVmdCBkYXMgSWdub3JpZXJlbiBiZWltIFNwZW5kaWVyZW4KKyAgICAgICAgICAgICAgICAgICAgIC0gcHJ1ZWZ0IGRpZSBWZXJmdWVnYmFya2VpdCB2b24gZ2VudWVnZW5kIEdlbGQgYmVpbQorICAgICAgICAgICAgICAgICAgICAgICBCZXN0ZWxsZXIgKCBjaGVja19zb2x2ZW5jeSgpICkKKyAgICAgICAgICAgICAgICAgICAgIC0gcHJ1ZWZ0IGRpZSBWZXJmdWVnYmFya2VpdCBkZXMgR2V3dWVuc2NodGVuCisgICAgICAgICAgICAgICAgICAgICAgICggQ2hlY2tBdmFpbGFiaWxpdHkoKSApCisgICAgICAgICAgICAgICAgICAgICAtIHBydWVmdCwgb2IgZGVyIEVtcGZhZW5nZXIgaW4gZGVyIExhZ2UgaXN0LCBkYXMKKyAgICAgICAgICAgICAgICAgICAgICAgQmVzdGVsbHRlIHp1IGtvbnN1bWllcmVuCisgICAgICAgICAgICAgICAgICAgICAgICggdWViZXIgZW1wZmFlbmdlci0+Y29uc3VtZSh0ZXN0b25seSkgKQorCisgICAgICAgICAgICAgICAgICAgICAtIGZ1ZWhydCBkaWUgQmV6YWhsdW5nIGR1cmNoICggZG9fcGF5KCkgKQorICAgICAgICAgICAgICAgICAgICAgLSBmdWVocnQgZGllIFZlcmdhYmUgdm9uIEZQcyBkdXJjaCAoIEdpdmVFUCgpICkKKyAgICAgICAgICAgICAgICAgICAgIC0gZW50bmltbXQgZGFzIEJlc3RlbGx0ZSBhdXMgZGVyIE1lbmdlIGRlcyBBbmdlYm90ZXMKKyAgICAgICAgICAgICAgICAgICAgICAgKCBEZWNyZWFzZUF2YWlsaWJpbGl0eSgpICkKKyAgICAgICAgICAgICAgICAgICAgIC0gcHJ1ZWZ0LCBvYiBlaW5lIFZlcnpvZWdlcnVuZyBkZXIgTGllZmVydW5nIGVyZm9sZ2VuCisgICAgICAgICAgICAgICAgICAgICAgIHNvbGwgdW5kIHVlYmVyZ2lidCBpbSBOZWdhdGl2ZmFsbCBnbGVpY2ggYW4KKyAgICAgICAgICAgICAgICAgICAgICAgZG9fZGVsaXZlcigpCisgICAgICAgICAgICAgICAgICAgICAtIEF1c2dhYmUgZGVyIE1lbGR1bmdlbiB6dXIgQmVzdGVsbHVuZworICAgICAgICAgICAgICAgICAgICAgLSB2ZXJ6b2VnZXJ0ZXIgQXVmcnVmIHZvbiBkb19kZWxpdmVyKCkKKyAgICAgICAgICAgICAgICAgICAgIAorZG9fZGVsaXZlcigpICAgICAgICAgLSBwcnVlZnQgbm9jaG1hbCBkaWUgQW53ZXNlbmhlaXQgZGVzIEVtcGZhZW5nZXJzCisgICAgICAgICAgICAgICAgICAgICAtIHBydWVmdCwgb2IgSGVpbHVuZyBlcmxhdWJ0IGlzdCAodWViZXIgUHVibWFzdGVyKQorICAgICAgICAgICAgICAgICAgICAgLSBwcnVlZnQgUF9OUENfRkFTVEhFQUwgdW5kIGtvcnJpZ2llcnQgZGllIEFuZ2FiZW4sIGRpZQorICAgICAgICAgICAgICAgICAgICAgICBhdXMgZGVtIE1lbnVlZWludHJhZyBrb21tZW4KKyAgICAgICAgICAgICAgICAgICAgIC0gZnVlaHJ0IGRhcyBLb25zdW1pZXJlbiBiZWltIEVtcGZhZW5nZXIgZHVyY2gKKyAgICAgICAgICAgICAgICAgICAgICAgKCBlbXBmYWVuZ2VyLT5jb25zdW1lKCkgKQorICAgICAgICAgICAgICAgICAgICAgLSBBdXNnYWJlIGRlciBNZWxkdW5nIHp1bSBLb25zdW1pZXJlbgorCitwdWJfaW5pdCgpICAgICAgICAgICAtIE1vZWdsaWNoa2VpdCBmdWVyIE1hZ2llciwgZGllIFdlcnRlIGRlciBhbmdlYm90ZW5lbgorICAgICAgICAgICAgICAgICAgICAgICBTcGVpc2VuIHVuZCBHZXRyYWVua2UgenUgdWViZXJwcnVlZmVuCisgICAgICAgICAgICAgICAgICAgICAtIGVyd2VpdGVydGUgTW9lZ2xpY2hrZWl0ZW4genVtIFBydWVmZW4gdm9uIGtvcnJla3RlbgorICAgICAgICAgICAgICAgICAgICAgICBNZW51ZWVpbnRyYWVnZW4gYmlldGV0IGRhcyBQdWItVG9vbAorICAgICAgICAgICAgICAgICAgICAgICAoICcvb2JqL3Rvb2xzL3B1YnRvb2wuYycgKQorCitIaW53ZWlzOiBVbSBkaWVzZSBQcnVlZnVuZ2VuIHVuZCBBa3Rpb25lbiBzaWNoZXIgenUgZ2V3YWVocmxlaXN0ZW4sIHNvbGx0ZQorICAgICAgICAgbWFuIGNvbnN1bWVfc29tZXRoaW5nIG9kZXIgZG9fZGVsaXZlciBOSUNIVCB1ZWJlcnNjaHJlaWJlbiEKKyAgICAgICAgIERhcyBmdWVocnQgYmVpIEFlbmRlcnVuZ2VuIG1pdCBncm9zc2VyIFdhaHJzY2hlaW5saWNoa2VpdCB6dQorICAgICAgICAgUHJvYmxlbWVuIQorICAgICAgICAgVWViZXJzY2hyZWlidCBiZXNzZXIgZGllIE1ldGhvZGVuLCBkaWUgZGllIEZ1bmt0aW9uYWxpdGFldAorICAgICAgICAgYmVpbmhhbHRldCwgZGllIGlociB3aXJrbGljaCBhbnBhc3NlbiB3b2xsdC4KKyAgICAgICAgIEZhbGxzIGRhcyBuaWNodCBnZWh0LCBzcHJlY2h0IGxpZWJlciBtaXQgZWluZW0gUk0rLCBvYiBlaW5lIExvZXN1bmcKKyAgICAgICAgIGRhZnVlciBnZWZ1bmRlbiB3ZXJkZW4ga2Fubi4gRGVyIFN0YW5kYXJkLVB1YiB3dXJkZSBpbiBkZXIKKyAgICAgICAgIFZlcmdhbmdlbmhlaXQgc28gaW1tZXIgbW9kdWxhcmVyIHVuZCBiZXNzZXIuCisKKworU0lFSEUgQVVDSDogQWRkVG9NZW51LCBSZW1vdmVGcm9tTWVudSwgY29uc3VtZSwgUXVlcnlNb25leSwgQWRkTW9uZXkgCisKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorTGFzdCBtb2RpZmllZDogU29uIEFwciAxMSAxOToyODowMCAyMDEwIGJ5IENhbGRyYQpkaWZmIC0tZ2l0IGEvZG9jL3N0ZC9yYW5kb20gYi9kb2Mvc3RkL3JhbmRvbQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi40ODkyMTRkCi0tLSAvZGV2L251bGwKKysrIGIvZG9jL3N0ZC9yYW5kb20KQEAgLTAsMCArMSw3MSBAQAorRXMgZ2lidCBpbSBNRyB6d2VpIFF1ZWxsZW4gdm9uIFBzZXVkby1adWZhbGxzemFobGVuLgorCisxKSByYW5kb20oKQorICBEaWVzZSBlZnVuIGxpZWZlcnQgZWluZSBadWZhbGxzemFobCBhdXMgZGVtIFBzZXVkby1adWZhbGxzemFobGVuZ2VuZXJhdG9yCisgIChQUk5HKSBkZXMgRHJpdmVycy4gKHMuIE1hbnBhZ2UpLgorICBXZW5uIGtlaW5lIGJlc29uZGVyZW4gR3J1ZW5kZW4gdm9ybGllZ2VuLCBzb2xsdGUgaW1tZXIgZGllc2UgdmVyd2VuZGV0CisgIHdlcmRlbi4KKworCisyKSAvc3RkL3V0aWwvcmFuZC1nbGZzci5jCisgIEZhbGxzIGplbWFuZCBhdXMgaXJnZW5kZWluZW0gR3J1bmQgZWluZSBTZXF1ZW56IHZvbiBQc2V1ZG8tWnVmYWxsc3phaGxlbgorICBicmF1Y2h0LCBkaWUgc3BhZXRlciByZXByb2R1emllcmJhciBzZWluIHNvbGwgKGQuaC4gZGVyIFNlZWQgbXVzcworICBrb25maWd1cmllcmJhciBzZWluKSwgZ2lidCBlcyB1bnRlciAvc3RkL3V0aWwvcmFuZC1nbGZzci5jIGVpbmVuIHNpbXBsZW4sCisgIG5pY2h0IGFsbHp1IGd1dGVuIHVuZCBzZWhyIGluZWZmaXppZW50ZW4gUHNldWRvLVp1ZmFsbHN6YWhsZW5nZW5lcmF0b3IuCisKK0ludGVyZmFjZToKKyogcHVibGljIHZhcmFyZ3Mgdm9pZCBpbml0KGludCBzZWVkLCBpbnQgbmV3cCkKKyAgU2V0enQgZGFzIFNlZWQgKHVuZCBkYXMgRXJ6ZXVndW5nc3BvbHlub20sIHdlbm4gZ2V3dWVuc2NodCwgd292b24gaWNoCisgIGFiZXIgYWJyYXRlbiB3dWVyZGUpLiBEZXIgU2VlZCBkYXJmIG5pY2h0IDAgc2Vpbi4KKyogcHVibGljIHZvaWQgSW5pdFdpdGhVVUlEKHN0cmluZyB1dWlkKQorICBCZXJlY2huZXQgZWluZW4gU2VlZCBhdXMgZGVyIHV1aWQgdW5kIGluaXRpYWxpc2llcnQgZGVuIFBSTkcgZGFtaXQgKHVuZCBkZW0KKyAgRGVmYXVsdC1Qb2x5bm9tKS4KKyogcHVibGljIGludCBuZXh0Yml0KCkKKyAgTGllZmVydCBlaW4genVmYWVsbGlnZXMgQml0IChhbHNvIDAgb2RlciAxKS4KKyogcHVibGljIGludCBuZXh0Yml0cyhpbnQgY291bnQpCisgIExpZWZlcnQgPGNvdW50PiBCaXRzIChtYXggNjQpIGluIGVpbmVtIGludC4KKyogcHVibGljIGludCByYW5kb20oaW50IG4pCisgIExpZWZlcnQgZWluZSBadWZhbGxzemFobCB6d2lzY2hlbiAwIHVuZCBuLTEsIGluIHdlbGNoZXIgMzIgYml0cyBhbiAKKyAgUHNldWRvenVmYWxsIHN0ZWNrZW4uCisgIERhcyBTZWVkIHZvbiBkZXIgQmx1ZXByaW50IHdpcmQgdmVybXV0bGljaCBzdGFlbmRpZyB2ZXJhZW5kZXJ0IChkLmguCisgIHZlcmxhc3N0IGV1Y2ggbmljaHQgZHJhdWYsIGRhc3MgZXMga29uc3RhbnQgYmxlaWJ0KSwgd29sbHQgaWhyIGVpbmUKKyAgJ3ByaXZhdGUnIEluc3RhbnogbWl0IGV1cmVtIFNlZWQsIGNsb250IGRhcyBPYmpla3QgKGFiZXIgdmVybGllcnQgZGVuIENsb25lCisgIG5pY2h0KS4KKworICBVbmQgdW0gZXMgbm9jaG1hbCB6dSBzYWdlbjoKKyAgRGllIElNSE8gZWluemlnZSBzaW5udm9sbGUgQW53ZW5kdW5nIGlzdCwgd2VubiBtYW4gYXVzIGlyZ2VuZGVpbmVtIEdydW5kCisgIGRhcyBzZWVkIHNlbGJlciB3YWVobGVuIG11c3MsIGRhbWl0IG1hbiBkaWUgU2VxdWVueiB2b24gUHNldWRvenVmYWxsIGltbWVyCisgIHdpZWRlciByZXByb2R1emllcmVuIGthbm4uCisgIEluIGFsbGVuIGFuZGVyZW4gRmFlbGxlbiBuZWhtdCBiZXNzZXIgZGFzIHJhbmRvbSgpIHZvbSBEcml2ZXIuCisKK0RlciBQUk5HIGJlbnV0enQgZWluIExpbmVhciBGZWVkYmFjayBTaGlmdCBSZWdpc3RlciAoaW4gR2Fsb2lzLVZhcmlhbnRlKS4gRGllCitQZXJpb2RlbmxhZW5nZSBkZXMgcGVyIERlZmF1bHQgYmVudXR6dGVuIEVyemV1Z25nc3BvbHlub21zIGlzdCAyXjMyIC0gMSwgZC5oLgorbmFjaCA0Mjk0OTY3Mjk1IEJpdHMgd2llZGVyaG9sdCBzaWNoIGRpZSBTZXF1ZW56LgorRGFzIERlZmF1bHQtUG9seW5vbSBpc3Q6Cit4XjMyICsgeF4zMSArIHheMjggKyB4XjI3ICsgeF4yNCArIHheMjMgKyB4XjIwICsgeF4xOSArIHheMTYgKyB4XjE1ICsgeF4xMgorICAgICArIHheMTEgKyB4XjggKyB4XjcgKyB4XjUgKyB4XjMgKyAxCisoWmFobGVud2VydDogMHgxOTk5OTk5YTgpCisKK1dlciBlaW4gYW5kZXJlcyBQb2x5bm9tIHdpbGwsIGthbm4gZGFzIHBlciBpbml0KCkga29uZmlndXJpZXJlbiwgc29sbHRlIHNpY2gKK2FiZXIgc2NobGF1IG1hY2hlbiwgd2VsY2hlIHNpbm52b2xsIG51dHpiYXIgc2luZC4KKworCitFaW4gcGFhciBzdGF0aXN0aXNjaGUgRGF0ZW4gZWluZXMgU3Ryb21zIHZvbiA0MDk2MCBCaXRzOgorVmFsdWUgQ2hhciBPY2N1cnJlbmNlcyBGcmFjdGlvbgorICAwICAgICAgICAgICAgMjA0NzQgICAwLjQ5OTg1NAorICAxICAgICAgICAgICAgMjA0ODYgICAwLjUwMDE0NgorCitUb3RhbDogICAgICAgICA0MDk2MCAgIDEuMDAwMDAwCisKK0VudHJvcHkgPSAxLjAwMDAwMCBiaXRzIHBlciBiaXQuCisKK09wdGltdW0gY29tcHJlc3Npb24gd291bGQgcmVkdWNlIHRoZSBzaXplCitvZiB0aGlzIDQwOTYwIGJpdCBmaWxlIGJ5IDAgcGVyY2VudC4KKworQ2hpIHNxdWFyZSBkaXN0cmlidXRpb24gZm9yIDQwOTYwIHNhbXBsZXMgaXMgMC4wMCwgYW5kIHJhbmRvbWx5Cit3b3VsZCBleGNlZWQgdGhpcyB2YWx1ZSA5NS4yNyBwZXJjZW50IG9mIHRoZSB0aW1lcy4KKworQXJpdGhtZXRpYyBtZWFuIHZhbHVlIG9mIGRhdGEgYml0cyBpcyAwLjUwMDEgKDAuNSA9IHJhbmRvbSkuCitNb250ZSBDYXJsbyB2YWx1ZSBmb3IgUGkgaXMgMy4xMDkwMjY5NjQgKGVycm9yIDEuMDQgcGVyY2VudCkuCitTZXJpYWwgY29ycmVsYXRpb24gY29lZmZpY2llbnQgaXMgLTAuMDA4Mzk5ICh0b3RhbGx5IHVuY29ycmVsYXRlZCA9IDAuMCkuCisKZGlmZiAtLWdpdCBhL2RvYy9zdGQvcm9vbSBiL2RvYy9zdGQvcm9vbQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi45NGU1NzVmCi0tLSAvZGV2L251bGwKKysrIGIvZG9jL3N0ZC9yb29tCkBAIC0wLDAgKzEsMTQzIEBACitTVEFOREFSRE9CSkVLVCBGVUVSIFJBRVVNRToKKworQkVOVVRaVU5HOgorICAgICAgaW5oZXJpdCAiL3N0ZC9yb29tIjsKKyAgICAgIAorICAgICAgI2luY2x1ZGUgPHByb3BlcnRpZXMuaD4KKyAgICAgICNpbmNsdWRlIDxyb29tcy5oPiAgICAgICAgICAgIC8vIEZ1ZXIgQWRkSXRlbSgpIHVuZCBOZXdEb29yKCkKKworQkVTQ0hSRUlCVU5HOgorICAgICAgRWluIFJhdW0gaXN0IGVpbiBPYmpla3QsIGRhcyB2b24gU3BpZWxlcm4gb2RlciBhbmRlcmVuIExlYmV3ZXNlbgorICAgICAgYmV0cmV0ZW4gd2VyZGVuIGthbm4uIEVyIGhhdCBMYW5nLSB1bmQgS3VyemJlc2NocmVpYnVuZ2VuIHZvbgorICAgICAgaW5uZW4gdW5kIGF1c3NlbiAoenVtIEJlaXNwaWVsIFNjaGlmZmUgb2RlciBhZWhubGljaGUgUmFldW1lIGluCisgICAgICBSYWV1bWVuKSwgZGllIHNpY2ggZGVyIFNwaWVsZXIgamUgbmFjaCBzZWluZW4gQmVkdWVyZm5pc3NlbgorICAgICAgYW56ZWlnZW4gbGFzc2VuIGthbm4gKGt1cnovbGFuZy1Nb2R1cykuCisKKyAgIFByb3BlcnRpZXM6CisKKyAgICAgIFBfSU5UX1NIT1JUCisgICAgICAgICAgICBLdXJ6YmVzY2hyZWlidW5nIGlubmVyaGFsYiBkZXMgUmF1bWVzCisgICAgICBQX0lOVF9MT05HCisgICAgICAgICAgICBMYW5nYmVzY2hyZWlidW5nIGlubmVyaGFsYiBkZXMgUmF1bWVzCisgICAgICBQX1NIT1JUCisgICAgICAgICAgICBLdXJ6YmVzY2hyZWlidW5nIHZvbiBhdXNzZW4gKG51ciBub2V0aWcsIHdlbm4gbWFuIGRlbiBSYXVtCisgICAgICAgICAgICBhdWNoIHdpcmtsaWNoIHZvbiBhdXNzZW4gc2VoZW4ga2FubikKKyAgICAgIFBfTE9ORworICAgICAgICAgICAgTGFuZ2Jlc2NocmVpYnVuZyB2b24gYXVzc2VuIChzaWVoZSBQX1NIT1JUKQorICAgICAgVW0gU2l0dWF0aW9uc2Jlem9nZW5lIEJlc2NocmVpYnVuZ2VuIHp1IGJla29tbWVuLCBrYW5uIG1hbiAKKyAgICAgIFF1ZXJ5bWV0aG9kZW4gYXVmIGRpZSBqZXdlaWxpZ2VuIFByb3BlcnRpZXMgc2V0emVuLCBzaWVoZSBEb2t1bWVudGF0aW9uCisgICAgICB6dSBTZXQoKS4KKworICAgICAgUF9MSUdIVAorICAgICAgICAgICAgTGljaHRsZXZlbCBkZXMgUmF1bXMgKDAgZHVua2VsLCAxIGhlbGwpCisgICAgICBQX0xJR0hUX1RZUEUKKyAgICAgICAgICAgIExpY2h0YXJ0LCBtaXQgZGVyIGRlciBSYXVtIGJlbGV1Y2h0ZXQgaXN0LCB6QiBMVF9TVU5MSUdIVAorICAgICAgUF9JTkRPT1JTCisgICAgICAgICAgICBXZW5uIGVzIHNpY2ggdW0gZWluZW4gQXVzc2VucmF1bSBoYW5kZWx0LCAwLiAxIGZ1ZXIgSW5uZW5yYWV1bWUuCisgICAgICBQX1RSQU5TUEFSRU5UCisgICAgICAgICAgICBJc3QgdW5nbGVpY2ggMCwgd2VubiBtYW4gaW4gZGVuIFJhdW0gdm9uIGF1c3NlbiByZWluc2NoYXVlbgorICAgICAgICAgICAga2Fubiwgb2RlciB2b24gaW5uZW4gbmFjaCBhdXNzZW4KKyAgICAgIFBfTk9fVFBPUlQKKyAgICAgICAgICAgIFp1bSB2ZXJoaW5kZXJuIHZvbiBUZWxlcG9ydHZlcnN1Y2hlbiBpbiBvZGVyIGF1cyBkZW0gUmF1bQorICAgICAgUF9OT01BR0lDCisgICAgICAgICAgICBJbSBSYXVtIGthbm4gbmljaHQgZ2V6YXViZXJ0IHdlcmRlbi4KKyAgUF9XQVRFUgorICAgIEltIFJhdW0ga2FubiBnZWFuZ2VsdCB3ZXJkZW4sIHVuZCBtYW4ga2FubiBnZ2YuIHNvZ2FyIEZpc2NoZSBmYW5nZW4uCisKKyAgIEZ1bmt0aW9uZW46CisKKyAgQWRkRXhpdChzdHJpbmd8c3RyaW5nKiBrbW5kLCBzdHJpbmcgemllbHJhdW0pCisgICAgICAgICAgICA8a21uZD4ga2FubiBlaW4gU3RyaW5nIHNlaW4gb2RlciBlaW5lIExpc3RlIHZvbiBTdHJpbmdzCisgICAgICAgICAgICBtaXQgZGVuIEtvbW1hbmRvcyBtaXQgZGVuZW4gZGVyIFNwaWVsZXIgaW4gPHppZWxyYXVtPgorICAgICAgICAgICAgbGFuZGVuIHNvbGwuCisgICAgICBSZW1vdmVFeGl0KHN0cmluZ3xzdHJpbmcqIGttbmQpCisgICAgICAgICAgICA8a21uZD4gaXN0IGVpbiBTdHJpbmcgb2RlciBlaW5lIExpc3RlIHZvbiBTdHJpbmdzLCBkZXJlbgorICAgICAgICAgICAgQXVzZ2FlbmdlIGVudGZlcm50IHdlcmRlbiBzb2xsZW4uIERhYmVpIG11c3MgbWFuIGV0d2FzIHZvci0KKyAgICAgICAgICAgIHNpY2h0aWcgc2VpbiwgZGEgZWluIFNwaWVsZXIsIGRlciB6dW0gWmVpdHB1bmt0IGRlcyBBdWZydWZzCisgICAgICAgICAgICBpbSBSYXVtIGlzdCwgZGllIEFrdGlvbiBmdWVyIHNpY2ggbm9jaCBkZWZpbmllcnQgaGF0LgorICAgICAgICAgICAgQWxzbzogTnVyIGJlbnV0emVuLCB3ZW5uIG1hbiB3ZWlzcywgd2FzIG1hbiB0dXQhCisgICAgICBBZGRTcGVjaWFsRXhpdChzdHJpbmd8c3RyaW5nKiBrbW5kLCBzdHJpbmcgZnVua3Rpb24pCisgICAgICAgICAgICA8ZnVua3Rpb24+IHdpcmQgYXVmZ2VydWZlbiwgd2VubiBkZXIgU3BpZWxlciBkYXMgS29tbWFuZG8KKyAgICAgICAgICAgIDxrbW5kPiB0aXBwdCAob2RlciBlaW5zIGRlciBLb21tYW5kb3MsIHdlbm4gPGttbmQ+IGVpbmUKKyAgICAgICAgICAgIExpc3RlIGlzdCkuIE51ZXR6bGljaCB6dW0gQmVpc3BpZWwgdW0gZWluZW4gU3BpZWxlciBudXIKKyAgICAgICAgICAgIGR1cmNoenVsYXNzZW4sIHdlbm4gZWluIFdhZWNodGVyIG5pY2h0IGRhIGlzdC4KKyAgICAgICAgICAgIFBfQUVSSUFMX0hFTFBFUlMvUF9BUVVBVElDX0hFTFBFUlMKKyAgICAgICAgICAgICAgU29sbHRlIGVzIGdld3VlbnNjaHQgc2VpbiwgZGFzcyBiZXN0aW1tdGUgUmFldW1lIHouQi4gbnVyIAorICAgICAgICAgICAgICBmbGllZ2VuZCBlcnJlaWNodCB3ZXJkZW4ga29lbm5lbiwgb2RlciBkYXNzIG1hbiBmdWVyIGVpbmVuIAorICAgICAgICAgICAgICBiZXN0aW1tdGVuIEF1c2dhbmcgdGF1Y2hlbiBrb2VubmVuIG11c3MsIHNpbmQgZGllc2UgCisgICAgICAgICAgICAgIFByb3BlcnRpZXMgaGlsZnJlaWNoLCBkaWUgaW0gU3BpZWxlcm9iamVrdCBkZWZpbmllcnQgc2luZCAKKyAgICAgICAgICAgICAgdW5kIGRpZSBkb3J0IGFrdHVlbGwgcmVnaXN0cmllcnRlbiBIaWxmc29iamVrdGUgZnVlcnMgCisgICAgICAgICAgICAgIEZsaWVnZW4vU2VnZWxuIHVuZCBUYXVjaGVuIGVudGhhbHRlbi4KKyAgICAgIFJlbW92ZVNwZWNpYWxFeGl0KHN0cmluZ3xzdHJpbmcqIGttbmQpCisgICAgICAgICAgICBzaWVoZSBSZW1vdmVFeGl0KCkKKyAgICAgIE5ld0Rvb3IoKQorICAgICAgICAgICAgRnVlZ3QgZGVtIFJhdW0gZWluZSBUdWVyIGhpbnp1LCBkaWUgaW4gZWluZW4gendlaXRlbiBSYXVtIGZ1ZWhydCwKKyAgICAgICAgICAgIHVuZCBkaWUgZGVyIFNwaWVsZXIgKGdnZi4gbWl0IGVpbmVtIFNjaGx1ZXNzZWwpIG9lZmZuZW4gdW5kIAorICAgICAgICAgICAgc2NobGllc3NlbiBrYW5uLgorICAgICAgCisgICAgICBVbSBSYWV1bWUgaW50ZXJlc3NhbnRlciB6dSBtYWNoZW4sIGthbm4gbWFuIGlobmVuIERldGFpbHMsIGRpZSAKKyAgICAgIHZvbSBTcGllbGVyIGFuZ2VzY2hhdXQgd2VyZGVuIGtvZW5uZW4sIGVpbmJhdWVuOgorCisgICAgICBBZGREZXRhaWwoc3RyaW5nfHN0cmluZyoga2V5cywgc3RyaW5nIGRlc2NyKQorICAgICAgICAgICAgRWluZSBCZXNjaHJlaWJ1bmcgdm9uIERldGFpbHMsIGRpZSB2b20gU3BpZWxlciBhbmdlc2NoYXV0CisgICAgICAgICAgICB3ZXJkZW4ga29lbm5lbiB3aXJkIGRlbSBSYXVtIGdlZ2ViZW4uIDxrZXlzPiBrYW5uIGVpbgorICAgICAgICAgICAgU3RyaW5nIHNlaW4gb2RlciBlaW5lIExpc3RlIHZvbiBTdHJpbmdzLiA8ZGVzY3I+IGlzdAorICAgICAgICAgICAgZGllIEJlc2NocmVpYnVuZywgZGllIGRlciBTcGllbGVyIGVyaGFlbHQuCisgICAgICBSZW1vdmVEZXRhaWwoc3RyaW5nfHN0cmluZyoga2V5cykKKyAgICAgICAgICAgIEVudGZlcm50IGVpbiBEZXRhaWwgYXVzIGVpbmVtIFJhdW0uIDxrZXlzPiBrYW5uIGVpbiBTdHJpbmcKKyAgICAgICAgICAgIHNlaW4gb2RlciBlaW5lIExpc3RlIHZvbiBTdHJpbmdzLgorICAgICAgQWRkU3BlY2lhbERldGFpbChzdHJpbmd8c3RyaW5nKiBrZXlzLCBzdHJpbmcgZnVuY3Rpb24pCisgICAgICAgICAgICBJbSBQcmluemlwIHdpZSBBZGREZXRhaWwoKSwgbnVyIHdpcmQgYWxzIHp3ZWl0ZXMgQXJndW1lbnQKKyAgICAgICAgICAgIGtlaW4gZmVzdGVyIFN0cmluZyBhbmdlZ2ViZW4sIHNvbmRlcm4gZWluZSBGdW5rdGlvbiwgZGllCisgICAgICAgICAgICBlaW5lbiBTdHJpbmcgenVydWVja2dlYmVuIG11c3MuIERhbWl0IGthbm4gbWFuIHZhcmlhYmxlCisgICAgICAgICAgICBEZXRhaWxzIHByb2dyYW1taWVyZW4uCisgICAgICBSZW1vdmVTcGVjaWFsRGV0YWlsKHN0cmluZ3xzdHJpbmcqIGtleXMpCisgICAgICAgICAgICBzaWVoZSBSZW1vdmVEZXRhaWwoKQorICAgICAgQWRkUmVhZERldGFpbChzdHJpbmd8c3RyaW5nKiBrZXlzLCBzdHJpbmcgZGVzYykKKyAgICAgICAgICAgIDxkZXNjPiB3aXJkIGF1c2dlZ2ViZW4sIHdlbm4gZWluIFNwaWVsZXIgZGVuIDxrZXk+IGxpZXN0LgorICAgICAgICAgICAgPGtleXM+IGthbm4gd2llZGVyIGVpbiBTdHJpbmcgb2RlciBlaW5lIExpc3RlIHZvbiBTdHJpbmdzCisgICAgICAgICAgICBzZWluLgorICAgICAgUmVtb3ZlUmVhZERldGFpbChzdHJpbmd8c3RyaW5nKiBrZXlzKQorICAgICAgICAgICAgc2llaGUgUmVtb3ZlRGV0YWlsKCkKKyAgICAgIEFkZFJvb21NZXNzYWdlKHN0cmluZyogbXNnLCBpbnQgcHJvYiwgc3RyaW5nfG1peGVkICpmdW5jKQorICAgICAgICAgICAgQWxsZSA8cHJvYj4gU2VrdW5kZW4gd2lyZCBhdXMgZWluZXIgTGlzdGUgdm9uIE1lbGR1bmdlbgorICAgICAgICAgICAgKDxtc2c+KSB6dWZhZWxsaWcgZWluZSBhdXNnZXN1Y2h0LCBkaWUgZGFubiBpbSBSYXVtIGVyLQorICAgICAgICAgICAgc2NoZWludC4gV2VubiBkYXMgQXJndW1lbnQgPGZ1bmM+IGFuZ2VnZWJlbiBpc3QsIHdpcmQKKyAgICAgICAgICAgIGVpbmUgRnVua3Rpb24gZGllc2VuIE5hbWVucyBhdWZnZXJ1ZmVuLCBkZXIgZGVyIEluZGV4CisgICAgICAgICAgICBkZXIgYXVzZ2VnZWJlbmVuIE1lbGR1bmcgYWxzIEFyZ3VtZW50IHVlYmVyZ2ViZW4gd2lyZC4KKyAgICAgICAgICAgIEZ1bmMgZGFyZiBhdWNoIGVpbmVuIEFycmF5IHZvbiBGdW5rdGlvbmVuIGVudGhhbHRlbi4KKworICAgICAgQWRkQ21kKHN0cmluZ3xzdHJpbmcqIGNtZCwgc3RyaW5nIGZ1bmMsIGludCBmbGFnKQorICAgICAgICAgICAgSW0gUmF1bSB3aXJkIGJlaW0gS29tbWFuZG8gPGNtZD4gKG9kZXIgZWluZW0gZGVyIEtvbW1hbmRvcykKKyAgICAgICAgICAgIGRpZSBGdW5rdGlvbiA8ZnVuYz4gYXVmZ2VydWZlbi4gPGZ1bmM+IG11c3MgMSB6dXJ1ZWNrLQorICAgICAgICAgICAgZ2ViZW4sIHdlbm4gZGllIEZ1bmt0aW9uIGRpZSBLb21iaW5hdGlvbiBhdXMgS29tbWFuZG8KKyAgICAgICAgICAgIHVuZCBBcmd1bWVudGVuIGFremVwdGllcnQsIGFuc29uc3RlbiAwLiBBbGxlcyB3YXMgZWluCisgICAgICAgICAgICBTcGllbGVyIGhpbnRlciA8Y21kPiBub2NoIGFuZ2lidCwgd2lyZCBkZXIgRnVua3Rpb24gYWxzCisgICAgICAgICAgICBBcmd1bWVudCB1ZWJlcmdlYmVuLiBXZW5uIDxmbGFnPiBnZXNldHp0IGlzdCwgd2lyZCBqZWRlcworICAgICAgICAgICAgS29tbWFuZG8sIGRhcyBtaXQgPGNtZD4gYmVnaW5udCBha3plcHRpZXJ0LgorICAgICAgUmVtb3ZlQ21kKHN0cmluZ3xzdHJpbmcqIGNtZCkKKyAgICAgICAgICAgIEVudGZlcm50IGVpbiBLb21tYW5kbyBhdXMgZGVtIFJhdW0uCisgICAgICAgICAgICBBQ0hUVU5HOiBCZWkgU3BpZWxlcm4sIGRpZSB6dW0gWmVpdHB1bmt0IGRlcyBGdW5rdGlvbnMtCisgICAgICAgICAgICBhdWZydWZzIG5vY2ggaW0gUmF1bSBzaW5kLCBpc3QgZGFzIEtvbW1hbmRvIG5vY2ggZGVmaW5pZXJ0LgorICAgICAgICAgICAgQWxzbzogTnVyIGJlbnV0emVuLCB3ZW5uIG1hbiBnZW5hdSB3ZWlzcywgd2FzIG1hbiB0dXQuCisKKyAgICAgIEFkZEl0ZW0oc3RyaW5nIGZpbGVuYW1lLCBpbnQgcmVmcmVzaCkKKyAgICAgICAgICAgIEVpbiBPYmpla3QgbWl0IFBmYWQgPGZpbGVuYW1lPiB3aXJkIGVyemV1Z3QgdW5kIGluIGRlbgorICAgICAgICAgICAgUmF1bSBiZXdlZ3QsIGRhYmVpIGdpYnQgZXMgdmllciB2ZXJzY2hpZWRlbmUgTW9kaSwgZGllCisgICAgICAgICAgICB1ZWJlciBkYXMgQXJndW1lbnQgPHJlZnJlc2g+IGFuZ2VnZWJlbiB3ZXJkZW46CisgICAgICAgICAgICBSRUZSRVNIX05PTkU6IERhcyBPYmpla3Qgd2lyZCBudXIgYmVpbSBhbGxlcmVyc3RlbiBtYWwKKyAgICAgICAgICAgICAgICAgIGVyemV1Z3QsIHVuZCBkYW5uIG5pZSB3aWVkZXIgKGVyc3QgYmVpbSByZWJvb3QpCisgICAgICAgICAgICBSRUZSRVNIX0RFU1RSVUNUOiBFaW4gbmV1ZXMgT2JqZWt0IHdpcmQgZXJzdCBlcnpldWd0LCAKKyAgICAgICAgICAgICAgICAgIHdlbm4gZGFzIGFsdGUgemVyc3RvZXJ0IGlzdC4gU28ga2FubiBtYW4gc2ljaGVyCisgICAgICAgICAgICAgICAgICBnZWhlbiwgZGFzcyBudXIgZWluIEV4ZW1wbGFyIGltIFNwaWVsIGlzdC4KKyAgICAgICAgICAgIFJFRlJFU0hfUkVNT1ZFOiBCZWltIHJlc2V0IHdpcmQgZWluIG5ldWVzIE9iamVrdCBlcnpldWd0LAorICAgICAgICAgICAgICAgICAgd2VubiBzaWNoIGRhcyBhbHRlIG5pY2h0IG1laHIgaW0gUmF1bSBiZWZpbmRldC4KKyAgICAgICAgICAgIFJFRlJFU0hfQUxXQVlTOiBCZWkgamVkZW0gcmVzZXQgd2lyZCBlaW4gbmV1ZXMgT2JqZWt0IAorICAgICAgICAgICAgICAgICAgZXJ6ZXVndC4gVk9SU0lDSFQ6IEthbm4genUgcmllc2lnZW4gTWVuZ2VuIHZvbgorICAgICAgICAgICAgICAgICAgT2JqZWt0ZW4gZnVlaHJlbiwgd2VubiBlaW4gUmF1bSBsYW5nZSBuaWNodCBiZS0KKyAgICAgICAgICAgICAgICAgIHN1Y2h0IHdpcmQuCisgICAgICAgICAgICBEaWUgS29uc3RhbnRlbiBSRUZSRVNIXyogc2luZCBpbiA8cm9vbXMuaD4gZGVmaW5pZXJ0LgorCisgICAgICBBdWYgZGllIFByb3BlcnRpZXMgUF9FWElUUywgUF9TUEVDSUFMX0VYSVRTLCBQX0RFVEFJTFMsIAorICAgICAgUF9TUEVDSUFMX0RFVEFJTFMsIFBfUkVBRF9ERVRBSUxTLCBQX0NPTU1BTkRTIHVuZCBQX0lURU1TCisgICAgICBzb2xsdGUgTklDSFQgZGlyZWt0IHp1Z2VncmlmZmVuIHdlcmRlbi4KZGlmZiAtLWdpdCBhL2RvYy9zdGQvcm9vbS5kb2t1IGIvZG9jL3N0ZC9yb29tLmRva3UKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZTE3NzRjNgotLS0gL2Rldi9udWxsCisrKyBiL2RvYy9zdGQvcm9vbS5kb2t1CkBAIC0wLDAgKzEsMTMyIEBACitTVEFOREFSRE9CSkVLVCBGVUVSIFJBRVVNRToKKworQkVOVVRaVU5HOgorCWluaGVyaXQgInN0ZC9yb29tIjsKKwkKKwkjaW5jbHVkZSA8cHJvcGVydGllcy5oPgorCSNpbmNsdWRlIDxyb29tcy5oPgkJLy8gRnVlciBBZGRJdGVtKCkgdW5kIE5ld0Rvb3IoKQorCitCRVNDSFJFSUJVTkc6CisJRWluIFJhdW0gaXN0IGVpbiBPYmpla3QsIGRhc3Mgdm9uIFNwaWVsZXJuIG9kZXIgYW5kZXJlbiBMZWJld2VzZW4KKwliZXRyZXRlbiB3ZXJkZW4ga2Fubi4gRXIgaGF0IExhbmctIHVuZCBLdXJ6YmVzY2hycmVpYnVuZ2VuIHZvbgorCWlubmVuIHVuZCBhdXNzZW4gKHp1bSBCZWlzcGllbCBTY2hpZmZlIG9kZXIgYWVobmxpY2hlIFJhZXVtZSBpbgorCVJhZXVtZW4pLCBkaWUgc2ljaCBkZXIgU3BpZWxlciBqZSBuYWNoIHNlaW5lbiBCZWR1ZXJmdG5pc3NlbgorCWFuemVpZ2VuIGxhc3NlbiBrYW5uIChrdXJ6L2xhbmctTW9kdXMpLgorCisgICBQcm9wZXJ0aWVzOgorCisJUF9JTlRfU0hPUlQKKwkJS3VyemJlc2NocmVpYnVuZyBpbm5lcmhhbGIgZGVzIFJhdW1lcworCVBfSU5UX0xPTkcKKwkJTGFuZ2Jlc2NocmVpYnVuZyBpbm5lcmhhbGIgZGVzIFJhdW1lcworCVBfU0hPUlQKKwkJS3VyemJlc2NocmllYnVuZyB2b24gYXVzc2VuIChudXIgbm9ldGlnLCB3ZW5uIG1hbiBkZW4gUmF1bQorCQlhdWNoIHdpcmtsaWNoIHZvbiBhdXNzZW4gc2VoZW4ga2FubikKKwlQX0xPTkcKKwkJTGFuZ2Jlc2NocmVpYnVuZyB2b24gYXVzc2VuIChzaWVoZSBQX1NIT1JUKQorCVVtIFNpdHVhdGlvbnNiZXpvZ2VuZSBCZXNjaHJlaWJ1bmdlbiB6dSBiZWtvbW1lbiwga2FubiBtYW4gCisJaW50X3Nob3J0KCksIGludF9sb25nKCksIHNob3J0KCksIGxvbmcoKSB1ZWJlcnNjaHJlaWJlbiwgb2RlcgorCWRlbiBwcm9jZXNzX3N0cmluZyBNZWNoYW5pc211cyB2ZXJ3ZW5kZW4gKHNpZWhlIGVudHNwcmVjaGVuZGUKKwlEb2t1bWVudGF0aW9uKQorCisJUF9MSUdIVAorCQlMaWNodGxldmVsIGRlcyBSYXVtcyAoMCBkdW5rZWwsIDEgaGVsbCkKKwlQX0lORE9PUlMKKwkJMSBXZW5uIGRlciBSYXVtIG5pY2h0IGltIEZyZWllbiBpc3QKKwlQX1RSQU5TUEFSRU5UCisJCUlzdCB1bmdsZWljaCAwLCB3ZW5uIG1hbiBpbiBkZW4gUmF1bSB2b24gYXVzc2VuIHJlaW5zY2hhdWVuCisJCWthbm4sIG9kZXIgdm9uIGlubmVuIG5hY2ggYXVzc2VuCisJUF9OT19UUE9SVAorCQladW0gdmVyaGluZGVybiB2b24gVGVsZXBvcnR2ZXJzdWNoZW4gaW4gb2RlciBhdXMgZGVtIFJhdW0KKwkJKHNpZWhlIGF1Y2ggL2RvYy9wcm9wZXJ0aWVzLmgpCisJUF9OT01BR0lDCisJCUltIFJhdW0ga2FubiBuaWNodCBnZXphdWJlcnQgd2VyZGVuLgorCisgICBGdW5rdGlvbmVuOgorCUFkZEV4aXQoc3RyaW5nfHN0cmluZyoga21uZCwgc3RyaW5nIHppZWxyYXVtKQorCQk8a21uZD4ga2FubiBlaW4gU3RyaW5nIHNlaW4gb2RlciBlaW5lIExpc3RlIHZvbiBTdHJpbmdzCisJCW1pdCBkZW4gS29tbWFuZG9zIG1pdCBkZW5lbiBkZXIgU3BpZWxlciBpbiA8emllbHJhdW0+CisJCWxhbmRlbiBzb2xsLgorCVJlbW92ZUV4aXQoc3RyaW5nfHN0cmluZyoga21uZCkKKwkJPGttbmQ+IGlzdCBlaW4gU3RyaW5nIG9kZXIgZWluZSBMaXN0ZSB2b24gU3RyaW5ncywgZGVyZW4KKwkJQXVzZ2FlbmdlIGVudGZlcm50IHdlcmRlbiBzb2xsZW4uIERhYmVpIG11c3MgbWFuIGV0d2FzIHZvci0KKwkJc2ljaHRpZyBzZWluLCBkYSBlaW4gU3BpZWxlciwgZGVyIHp1bSBaZWl0cHVua3QgZGVzIEF1ZnJ1ZnMKKwkJaW0gUmF1bSBpc3QsIGRpZSBBa3Rpb24gZnVlciBzaWNoIG5vY2ggZGVmaW5pZXJ0IGhhdC4KKwkJQWxzbzogTnVyIGJlbnV0emVuLCB3ZW5uIG1hbiB3ZWlzcywgd2FzIG1hbiB0dXQhCisJQWRkU3BlY2lhbEV4aXQoc3RyaW5nfHN0cmluZyoga21uZCwgc3RyaW5nIGZ1bmt0aW9uKQorCQk8ZnVua3Rpb24+IHdpcmQgYXVmZ2VydWZlbiwgd2VubiBkZXIgU3BpZWxlciBkYXMgS29tbWFuZG8KKwkJPGttbmQ+IHRpcHB0IChvZGVyIGVpbnMgZGVyIEtvbW1hbmRvcywgd2VubiA8a21uZD4gZWluZQorCQlMaXN0ZSBpc3QpLiBOdWV0emxpY2ggenVtIEJlaXNwaWVsIHVtIGVpbmVuIFNwaWVsZXIgbnVyCisJCWR1cmNoenVsYXNzZW4sIHdlbm4gZWluIFdhZWNodGVyIG5pY2h0IGRhIGlzdC4KKwlSZW1vdmVTcGVjaWFsRXhpdChzdHJpbmd8c3RyaW5nKiBrbW5kKQorCQlzaWVoZSBSZW1vdmVFeGl0KCkKKwlOZXdEb29yKCkKKwkJc2llaGUgL2RvYy9zdGQvZG9vcgorCQorCVVtIFJhZXVtZSBpbnRlcmVzc2FudGVyIHp1IG1hY2hlbiwga2FubiBtYW4gaWhuZW4gRGV0YWlscywgZGllIAorCXZvbSBTcGllbGVyIGFuZ2VzY2hhdXQgd2VyZGVuIGtvZW5uZW4sIGVpbmJhdWVuOgorCisJQWRkRGV0YWlsKHN0cmluZ3xzdHJpbmcqIGtleXMsIHN0cmluZyBkZXNjcikKKwkJRWluZSBCZXNjaHJlaWJ1bmcgdm9uIERldGFpbHMsIGRpZSB2b20gU3BpZWxlciBhbmdlc2NoYXV0CisJCXdlcmRlbiBrb2VubmVuIHdpcmQgZGVtIFJhdW0gZ2VnZWJlbi4gPGtleXM+IGthbm4gZWluCisJCVN0cmluZyBzZWluIG9kZXIgZWluZSBMaXN0ZSB2b24gU3RyaW5ncy4gPGRlc2NyPiBpc3QKKwkJZGllIEJlc2NocmVpYnVuZywgZGllIGRlciBTcGllbGVyIGVyaGFlbHQuCisJUmVtb3ZlRGV0YWlsKHN0cmluZ3xzdHJpbmcqIGtleXMpCisJCUVudGZlcm50IGVpbiBEZXRhaWwgYXVzIGVpbmVtIFJhdW0uIDxrZXlzPiBrYW5uIGVpbiBTdHJpbmcKKwkJc2VpbiBvZGVyIGVpbmUgTGlzdGUgdm9uIFN0cmluZ3MuCisJQWRkU3BlY2lhbERldGFpbChzdHJpbmd8c3RyaW5nKiBrZXlzLCBzdHJpbmcgZnVuY3Rpb24pCisJCUltIFByaW56aXAgd2llIEFkZERldGFpbCgpLCBudXIgd2lyZCBhbHMgendlaXRlcyBBcmd1bWVudAorCQlrZWluIGZlc3RlciBTdHJpbmcgYW5nZWdlYmVuLCBzb25kZXIgZWluZSBGdW5rdGlvbiwgZGllCisJCWVpbmVuIFN0cmluZyB6dXJ1ZWNrZ2ViZW4gbXVzcy4gRGFtaXQga2FubiBtYW4gdmFyaWFibGUKKwkJRGV0YWlscyBwcm9ncmFtbWllcmVuLgorCVJlbW92ZVNwZWNpYWxEZXRhaWwoc3RyaW5nfHN0cmluZyoga2V5cykKKwkJc2llaGUgUmVtb3ZlRGV0YWlsKCkKKwlBZGRSZWFkRGV0YWlsKHN0cmluZ3xzdHJpbmcqIGtleXMsIHN0cmluZyBkZXNjKQorCQk8ZGVzYz4gd2lyZCBhdXNnZWdlYmVuLCB3ZW5uIGVpbiBTcGllbGVyIGRlbiA8a2V5PiBsaWVzdC4KKwkJPGtleXM+IGthbm4gd2llZGVyIGVpbiBTdHJpbmcgb2RlciBlaW5lIExpc3RlIHZvbiBTdHJpbmdzCisJCXNlaW4uCisJUmVtb3ZlUmVhZERldGFpbChzdHJpbmd8c3RyaW5nKiBrZXlzKQorCQlzaWVoZSBSZW1vdmVEZXRhaWwoKQorCUFkZFJvb21NZXNzYWdlKHN0cmluZyogbXNnLCBpbnQgcHJvYiwgc3RyaW5nfHN0cmluZyAqZnVuYykKKwkJQWxsZSA8cHJvYj4gU2VrdW5kZW4gd2lyZCBhdXMgZWluZXIgTGlzdGUgdm9uIE1lbGR1bmdlbgorCQkoPG1zZz4pIHp1ZmFlbGxpZyBlaW5lIGF1c2dlc3VjaHQsIGRpZSBkYW5uIGltIFJhdW0gZXItCisJCXNjaGVpbnQuIFdlbm4gZGFzIEFyZ3VtZW50IDxmdW5jPiBhbmdlZ2ViZW4gaXN0LCB3aXJkCisJCWVpbmUgRnVua3Rpb24gZGllc2VuIE5hbWVucyBhdWZnZXJ1ZmVuLCBkZXIgZGVyIEluZGV4CisJCWRlciBhdXNnZWdlYmVuZW4gTWVsZHVuZyBhbHMgQXJndW1lbnQgdWViZXJnZWJlbiB3aXJkLgorCQlmdW5jIGRhcmYgYXVjaCBlaW5lbiBBcnJheSB2b24gRnVua3Rpb25lbiBlbnRoYWx0ZW4uIEVzIHdpcmQKKwkJZGFubiB6dWZhZWxsaWcgZWluZSBhdXNnZXdhZWhsdC4KKworCUFkZENtZChzdHJpbmd8c3RyaW5nKiBjbWQsIHN0cmluZyBmdW5jLCBpbnQgZmxhZykKKwkJSW0gUmF1bSB3aXJkIGJlaW0gS29tbWFuZG8gPGNtZD4gKG9kZXIgZWluZW0gZGVyIEtvbW1hbmRvcykKKwkJZGllIEZ1bmt0aW9uIDxmdW5jPiBhdWZnZXJ1ZmVuLiA8ZnVuYz4gbXVzcyAxIHp1cnVlY2stCisJCWdlYmVuLCB3ZW5uIGRpZSBGdW5rdGlvbiBkaWUgS29tYmluYXRpb24gYXVzIEtvbW1hbmRvCisJCXVuZCBBcmd1bWVudGVuIGFremVwdGllcnQsIGFuc29uc3RlbiAwLiBBbGxlcyB3YXMgZWluCisJCVNwaWVsZXIgaGludGVyIDxjbWQ+IG5vY2ggYW5naWJ0LCB3aXJkIGRlciBGdW5rdGlvbiBhbHMKKwkJQXJndW1lbnQgdWViZXJnZWJlbi4gV2VubiA8ZmxhZz4gZ2VzZXR6dCBpc3QsIHdpcmQgamVkZXMKKwkJS29tbWFuZG8sIGRhcyBtaXQgPGNtZD4gYmVnaW5udCBha3plcHRpZXJ0LgorCVJlbW92ZUNtZChzdHJpbmd8c3RyaW5nKiBjbWQpCisJCUVudGZlcm50IGVpbiBLb21tYW5kbyBhdXMgZGVtIFJhdW0uCisJCUFDSFRVTkc6IEJlaSBTcGllbGVybiwgZGllIHp1bSBaZWl0cHVua3QgZGVzIEZ1bmt0aW9ucy0KKwkJYXVmcnVmcyBub2NoIGltIFJhdW0gc2luZCwgaXN0IGRhcyBLb21tYW5kbyBub2NoIGRlZmluaWVydC4KKwkJQWxzbzogTnVyIGJlbnV0emVuLCB3ZW5uIG1hbiBnZW5hdSB3ZWlzcywgd2FzIG1hbiB0dXQuCisKKwlBZGRJdGVtKHN0cmluZyBmaWxlbmFtZSwgaW50IHJlZnJlc2gpCisJCUVpbiBPYmpla3QgbWl0IFBmYWQgPGZpbGVuYW1lPiB3aXJkIGVyemV1Z3QgdW5kIGluIGRlbgorCQlSYXVtIGJld2VndCwgZGFiZWkgZ2lidCBlcyB2aWVyIHZlcnNjaGllZGVuZSBNb2RpLCBkaWUKKwkJdWViZXIgZGFzIEFyZ3VtZW50IDxyZWZyZXNoPiBhbmdlZ2ViZW4gd2VyZGVuOgorCQlSRUZSRVNIX05PTkU6IERhcyBPYmpla3Qgd2lyZCBudXIgYmVpbSBhbGxlcmVyc3RlbiBtYWwKKwkJCWVyemV1Z3QsIHVuZCBkYW5uIG5pZSB3aWVkZXIgKGVyc3QgYmVpbSByZWJvb3QpCisJCVJFRlJFU0hfREVTVFJVQ1Q6IEVpbiBuZXVlcyBPYmpla3Qgd2lyZCBlcnN0IGVyemV1Z3QsIAorCQkJd2VubiBkYXMgYWx0ZSB6ZXJzdG9lcnQgaXN0LiBTbyBrYW5uIG1hbiBzaWNoZXIKKwkJCWdlaGVuLCBkYXNzIG51ciBlaW4gRXhlbXBsYXIgaW0gU3BpZWwgaXN0LgorCQlSRUZSRVNIX1JFTU9WRTogQmVpbSByZXNldCB3aXJkIGVpbiBuZXVlcyBPYmpla3QgZXJ6ZXVndCwKKwkJCXdlbm4gc2ljaCBkYXMgYWx0ZSBuaWNodCBtZWhyIGltIFJhdW0gYmVmaW5kZXQuCisJCVJFRlJFU0hfQUxXQVlTOiBCZWkgamVkZW0gcmVzZXQgd2lyZCBlaW4gbmV1ZXMgT2JqZWt0IAorCQkJZXJ6ZXVndC4gVk9SU0lDSFQ6IEthbm4genUgcmllc2lnZW4gTWVuZ2VuIHZvbgorCQkJT2JqZWt0ZW4gZnVlaHJlbiwgd2VubiBlaW4gUmF1bSBsYW5nZSBuaWNodCBiZS0KKwkJCXN1Y2h0IHdpcmQuCisJCURpZSBLb25zdGFudGVuIFJFRlJFU0hfKiBzaW5kIGluIDxyb29tcy5oPiBkZWZpbmllcnQuCisKKwlBdWYgZGllIFByb3BlcnRpZXMgUF9FWElUUywgUF9TUEVDSUFMX0VYSVRTLCBQX0RFVEFJTFMsIAorCVBfU1BFQ0lBTF9ERVRBSUxTLCBQX1JFQURfREVUQUlMUywgUF9DT01NQU5EUyB1bmQgUF9JVEVNUworCXNvbGx0ZSBOSUNIVCBkaXJla3QgenVnZWdyaWZmZW4gd2VyZGVuLgpkaWZmIC0tZ2l0IGEvZG9jL3N0ZC9zY2hsdWVzc2VsIGIvZG9jL3N0ZC9zY2hsdWVzc2VsCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjVhMjNkYjIKLS0tIC9kZXYvbnVsbAorKysgYi9kb2Mvc3RkL3NjaGx1ZXNzZWwKQEAgLTAsMCArMSwyNCBAQAorU1RBTkRBUkRPQkpFS1QgRlVFUiBTQ0hMVUVTU0VMOgorCitCRU5VVFpVTkcKKwlpbmhlcml0ICIvZC91bnRlcndlbHQvc3RkL3NjaGx1ZXNzZWwiCisKK0JFU0NIUkVJQlVORyAgIAorCUR1IGVyemV1Z3N0IGVpbmVuIFNjaGx1ZXNzZWwgZGVyIG51ciBhdWYgZWluZSBiZXN0aW1tdGUgVHVlcgorCXBhc3N0LgorCisgICAgRnVua3Rpb25lbjoKKworCWNyZWF0ZSgpOgorCQlzZXR6dCBlaW4gcGFhciBEZWZhdWx0d2VydGUuCisKKwlTZXREb29yS2V5KCBzdHJpbmcgc3RyKToKKwkJZ2lidCBkZW4gU2NobHVlc3NlbCBlaW5lIHNwZXppZWxsZSBCZXNjaHJlaWJ1bmcsIGRpZSAKKwkJYXVmIGRpZSBUdWVyIHBhc3NlbiBtdXNzLgorCisJUXVlcnlEb29yS2V5KCkKKwkJZnJhZ3QgZGVuIHN0cmluZyBkZXMgU2NobHVlc3NlbHMgYWIuCisKK1NJRUhFIEFVQ0g6CisJdHVlcgorCmRpZmYgLS1naXQgYS9kb2Mvc3RkL3NlcXVlbmNlciBiL2RvYy9zdGQvc2VxdWVuY2VyCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmQ5YjE3YTMKLS0tIC9kZXYvbnVsbAorKysgYi9kb2Mvc3RkL3NlcXVlbmNlcgpAQCAtMCwwICsxLDU4IEBACitWZXJzaW9uIDIuMCBkZXMgU2VxdWVuY2VycyB2b24gRG9uIFJ1bWF0YSAyLjcuOTMKKworTWFuY2htYWwgc29sbCBlaW4gTlBDIChNb25zdGVyKSBlaW5lIFNlcmllIHZvbiBUYWV0aWdrZWl0ZW4KK2hpbnRlcmVpbmFuZGVyIHdlZyBhdXNnZWZ1ZXJodCB3ZXJkZW4uIERpZXNlcyBrYW5uIG1hbgorbWl0IGRpZXNlbSBNdWR1bCByZWxhdGl2IGVpbmZhY2ggcmVhbGlzaWVyZW4uCisKK0ZvbGdlbmRlIEVyZWlnbmlzc2Uga29lbm5lbiBlaW5lIFNlcXVlbnogYXVzbG9lc2VuOgorCisJVGVsbEV2ZW50OiBFcyB3aXJkIGV0d2FzIGluIGRlbSBSYXVtLCBpbiBkZW0gZGVyIG5wYyBzaWNoCisJCWJlZmluZGV0LCBnZXNhZ3QuCisJR2l2ZUV2ZW50OiBFcyB3aXJkIGRlbSBucGMgZXR3YXMgZ2VnZWJlbi4KKworV2VpdGVyZSBFcmVpZ25pc3NlIGtvZW5uZW4gZHVyY2ggZGVuIEJlZmVobCBMb2FkKCkgc2VsYmVyCitwcm9ncmFtbWllcnQgd2VyZGVuLgorCitXaWUgc2llaHQgZWluIFByb2dyYW1tIGF1cz8KKworCUVpbiBQcm9ncmFtbSBpc3QgZWluZSBMaXN0ZSB2b24gQmVmZWhsZW4uCisJSmVkZXIgQmVmZWhsIGlzdCBlaW5lIExpc3RlLCBiZXN0ZWhlbmQgYXVzIGVpbmVtIEtvbW1hbmRvCisJdW5kIGVpbmVyIFphaGwuCisJRGFzIEtvbW1lbmRvIHdpcmQgYWVobmxpY2ggZGVyIEJlZmVobGUsIGRpZSBlaW4gU3BpZWxlciBlaW4tCisJZ2lidCBhdXNnZWZ1ZWhydC4KKwlWb3JzaWNodDogTlBDcyBrb2VubmVuIG51ciBlaW5lbiBUZWlsIGRlciBCZWZlaGxlLCBkaWUgZWluCisJU3BpZWxlciBrYW5uLCBkYWZ1ZXIgYWJlciBpbW1lciAnZWNobycgdW5kICdlbW90ZScuCisJRGllIFphaGwgZ2lidCBkaWUgQW56YWhsIGRlciBTZWt1bmRlbiBhbiwgaW4gZGVyIGRlciBuYWVjaHN0ZQorCUJlZmVobCBhdXNnZWZ1ZWhydCB3aXJkLgorCitGb2xnZW5kZSBGdW5rdGlvbmVuIHNpbmQgaW0gTW9kdWwgaW1wbGVtZW50aWVydDoKKworCVZvcmJlcmVpdGVuIHZvbiBGdW5rdGlvbmVuLCBkaWUgZWluZSBTZXF1ZW56IGF1c2xvZXNlbjoKKworCVJlZ2lzdGVyVGVsbCggZnVua3Rpb24sIHByb2dyYW1tICkKKwkJV2VubiBkZW0gbnBjIGV0d2FzIGdlc2FndCB3aXJkLCBzbyB3aXJkIGRpZSBnZXNhZ3RlIE1lbGR1bmcKKwkJYW4gZGllIEZ1bmt0aW9uIHVlYmVyZ2ViZW4uIEdpYnQgZGllIEZ1bmt0aW9uZW4gbmljaHQgMAorCQl6dXJ1ZWNrLCB3aXJkIGRhcyBQcm9ncmFtbSBnZXN0YXJ0ZXQuCisJCQorCVJlZ2lzdGVyR2l2ZSggZnVua3Rpb24sIHByb2dyYW1tICkKKwkJV2lyZCBkZW0gbnBjIGV0d2FzIGdlZ2ViZW4sIHNvIHdpcmQgZGFzIE9iamVrdCBhbiBkaWUKKwkJRnVua3Rpb24gdWViZXJnZWJlbi4gR2lidCBkaWUgRnVua3Rpb24gbmljaHQgMCB6dXJ1ZWNrLCBzbworCQl3aXJkIGRhcyBQcm9ncmFtbSBnZXN0YXJ0ZXQuCisKKwlMb2FkKCBwcm9ncmFtbSApCisJCVN0YXJ0ZSBkYXMgYW5nZWdlYmVuZSBQcm9ncmFtbS4KKworQW5lZGVydW5nZW4gYW4gYmVzdGVoZW5kZW4gU3RkLUZ1bmt0aW9uZW46CisKKwlnaXZlX25vdGlmeSgpIGdpYnQgZWluZSAxIHp1cnVlY2ssIHdlbm4gZGFzIE9iamVrdCBha3plcHRpZXJ0CisJCXd1cmRlLiAoRXMgbXVzcyAtIGZhbGxzIGdld3VlbnNjaHQgLSBkYW5uIHZvbiBIYW5kIHp1cnVlY2gtCisJCWdlZ2ViZW4gd2VyZGVuLiAoZ2l2ZV9vYmoob2IsdGhpc19wbGF5ZXIoKSkpIGluIGRpZXNlcgorCQlGdW5rdGlvbi4KKworCU1pdHRlbHMgYWRkX2FjdGlvbigpIGthbm4gbWFuIGltIGNyZWF0ZSgpIGRlcyBOUENzIGVpZ2VuZQorCVZlcmJlbiBmdWVyIGRlbiBOUEMgZWluZnVlaHJlbi4KKworRXMga2FubiBpbW1lciBudXIgZWluZSBGdW5rdGlvbiAoZWdhbCBvYiB2aWEgVGVsbCwgR2l2ZSBvZGVyIExvYWQpIGFuZ2VtZWxkZXQKK3NlaW4uIEVzIGthbm4gaW1tZXIgbnVyIGVpbiBQcm9ncmFtbSBnbGVpY2h6ZWl0aWcgbGF1ZmVuLgorCitJZGVlbiB1bmQgQnVncmVwb3J0cyBhbiBSdW1hdGEKZGlmZiAtLWdpdCBhL2RvYy9zdGQvdGhpbmcgYi9kb2Mvc3RkL3RoaW5nCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjQ0NWI0NjIKLS0tIC9kZXYvbnVsbAorKysgYi9kb2Mvc3RkL3RoaW5nCkBAIC0wLDAgKzEsMjA1IEBACitTVEFOREFSRCBLTEFTU0U6CisJIi9zdGQvdGhpbmciIAorCitCRU5VVFpVTkc6CisJaW5oZXJpdCAiL3N0ZC90aGluZyI7CisKKwkjaW5jbHVkZSA8dGhpbmcuaD4KKwkjaW5jbHVkZSA8cHJvcGVydGllcy5oPgorCitQUk9QRVJUSUVTOgorCTx0aGluZy9jb21tYW5kcz4KKwkJUF9DT01NQU5EUwktLSBCZWZlaGxlIGFzc296aWllcnQgbWl0IGRlbSBPYmpla3QKKwk8dGhpbmcvZGVzY3JpcHRpb24+CisJCVBfTkFNRQkJLS0gTmFtZQorCQlQX05BTUVfQURKCS0tIE5hbWVuc2FkamVrdGl2CisJCVBfU0hPUlQJCS0tIEt1cnpiZXNjaHJlaWJ1bmcKKwkJUF9MT05HCQktLSBMYW5nYmVzY2hyZWlidW5nCisJCVBfSURTCQktLSBJZGVudGlmaWthdG9yZW4gKEZlbGQgdm9uIFplaWNoZW5rZXR0ZW4pCisJCVBfQURKRUNUSVZFUwktLSBBZGpla3RpdmUgenVyIEJlc2NocmVpYnVuZworCTx0aGluZy9sYW5ndWFnZT4KKwkJUF9BUlRJQ0xFCS0tIEFydGlrZWwgZGVzIE9iamVrdHMKKwkJUF9HRU5ERVIJLS0gR2VzY2hsZWNodCBkZXMgT2JqZWt0cworCTx0aGluZy9tb3Zpbmc+CisJCVBfTk9EUk9QCS0tIEthbm4gbmljaHQgZmFsbGVuZ2VsYXNzZW4gd2VyZGVuCisJCVBfTk9HRVQJCS0tIEthbm4gbmljaHQgZ2Vub21tZW4gd2VyZGVuCisJPHRoaW5nL3Byb3BlcnRpZXM+CisJCVBfVUlECQktLSBVc2VyIElECisJCVBfRVVJRAkJLS0gRWZmZWt0aXZlIFVzZXIgSUQKKwk8dGhpbmcvcmVzdHJpY3Rpb25zPgorCQlQX1dFSUdIVAktLSBHZXdpY2h0IGRlcyBPYmpla3RzCisJCVBfVE9UQUxfV0VJR0hUCS0tIEdld2ljaHQgaW5rbHVzaXZlIGRlcyBJbmhhbHRzCisJCitNQUtST1M6CisJPHRoaW5nL3Byb3BlcnRpZXM+CisJCUZfVkFMVUUJCS0tIFByb3BlcnR5d2VydAorCQlGX01PREUJCS0tIFByb3BlcnR5bW9kdXMgdW1zY2hhbHRlbgorCQlGX01PREVfQVMJLS0gUHJvcGVydHltb2R1cyBzZXR6ZW4KKwkJRl9NT0RFX0FECS0tIFByb3BlcnR5bW9kdXMgbG9lc2NoZW4KKwkJICBTQVZFCQkgIC0tIFByb3BlcnR5IHdpcmQgZ2VzcGVpY2hlcnQKKwkJICBQUk9URUNURUQJICAtLSBQcm9wZXJ0eSBpcyBnZXNjaHVldHp0CisJCSAgU0VDVVJFRAkgIC0tIFByb3BlcnR5IGthbm4gbmllIG1laHIgZ2VhZW5kZXJ0IHdlcmRlbgorCQkgIE5PU0VUTUVUSE9ECSAgLS0gUHJvcGVydHkgYmVzaXR6dCBrZWluZSBTZXR6ZnVua3Rpb24KKwkJRl9TRVRfTUVUSE9ECS0tIEZ1bmt0aW9uIHp1bSBzZXR6ZW4gZGVyIFByb3BlcnR5CisJCUZfUVVFUllfTUVUSE9ECS0tIEZ1bmt0aW9uIHp1bSBsZXNlbiBkZXIgUHJvcGVydHkKKwk8dGhpbmcvbGFuZ3VhZ2U+CisJCU1BTEUsIEZFTUFMRSwgTkVVVEVSIAktLSBHZXNjaGxlY2h0ZXIKKwkJV0VSLCBXRVNTRU4sIFdFTSwgV0VOIAktLSBGYWxsCisJCVJBVyAJCQktLSBmdWVyIE5hbWVuIG9obmUgQXJ0aWtlbAorCQlTSU5HVUxBUiwgUExVUkFMIAktLSBaZWl0ZW4KKwkKK0ZVTktUSU9ORU46CisJIi9zdGQvdGhpbmcvY29tbWFuZHMiOgorCQl2YXJhcmdzIHZvaWQgQWRkQ21kKG1peGVkIGNtZCwgbWl4ZWQgZnVuYywgaW50IGZsYWcpOworCQl2YXJhcmdzIHZvaWQgUmVtb3ZlQ21kKG1peGVkIGNtZCk7CisJIi9zdGQvdGhpbmcvZGVzY3JpcHRpb24iOgorCQl2YXJhcmdzIGludCBpZChzdHJpbmcgc3RyLCBpbnQgbHZsKTsKKwkJdm9pZCBBZGRJZChtaXhlZCBzdHIpOworCQl2b2lkIEFkZEFkamVjdGl2ZShtaXhlZCBzdHIpOworCQlzdHJpbmcgbmFtZShpbnQgY2FzdXMsaW50IGRlbW9uKTsKKwkiL3N0ZC90aGluZy9sYW5ndWFnZSI6CisJCXZhcmFyZ3Mgc3RyaW5nIFF1ZXJ5QXJ0aWNsZShpbnQgY2FzdXMsIGludCBkZW0sIGludCBmb3JjZSk7CisJCXZhcmFyZ3MgaW50IFN1Z2dlc3RBcnRpY2xlKHN0cmluZyBpZCk7CisJCXZhcmFyZ3Mgc3RyaW5nIFF1ZXJ5UG9zc1Byb25vdW4obWl4ZWQgd2hhdCwgaW50IGNhc3VzLCAKKwkJICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgbnVtYmVyKTsKKwkJc3RyaW5nIFF1ZXJ5UHJvbm91bihpbnQgY2FzdXMpOworCQl2YXJhcmdzIHN0cmluZyBRdWVyeUR1KGludCBjYXN1cyxpbnQgZ2VuZGVyLCBpbnQgemFobCk7CisJCXN0cmluZyBRdWVyeUdlbmRlclN0cmluZygpOworCQl2YXJhcmdzIHN0cmluZyBEZWNsQWRqKHN0cmluZyBhZGosIGludCBjYXN1cywgaW50IGRlbW9uKTsKKwkiL3N0ZC90aGluZy9wcm9wZXJ0aWVzIjoKKwkJdmFyYXJncyBtaXhlZCBTZXQoc3RyaW5nIG5hbWUsIG1peGVkIFZhbHVlLCBpbnQgVHlwZSk7IAorCQl2YXJhcmdzIG1peGVkIFF1ZXJ5KHN0cmluZyBuYW1lLCBpbnQgVHlwZSk7CisJCW1peGVkIFNldFByb3Aoc3RyaW5nIG5hbWUsIG1peGVkIFZhbHVlKTsKKwkJbWl4ZWQgUXVlcnlQcm9wKHN0cmluZyBuYW1lKTsKKwkJdm9pZCBTZXRQcm9wZXJ0aWVzKG1hcHBpbmcgcHJvcHMpOworCQltYXBwaW5nIFF1ZXJ5UHJvcGVydGllcygpOworCSIvc3RkL3RoaW5nL21vdmluZyI6CisJCWludCBtb3ZlKG1peGVkIGRlc3QsaW50IG1ldGhvZCk7CisJCXZhcmFyZ3MgaW50IHJlbW92ZSgpOworCitFUkxBRVVURVJVTkc6CisJIi9zdGQvdGhpbmciIGlzdCBlaW5lIGdlbmVyZWxsZSBLbGFzc2UgZnVlciBPYmpla3RlIGFsbGVyIEFydC4KKwlFcyBiaWV0ZXQgZ2VuZXJlbGxlIEZ1bmt0aW9uYWxpdGFldCB6dXIgRXJzdGVsbHVuZyB2b24gbmV1ZW4KKwlLbGFzc2VuIHVuZCBPYmpla3Rlbi4gU2llIGthbm4gbWl0dGVscyBkZXIgenVyIFZlcmZ1ZWd1bmcKKwlzdGVoZW5kZW4gRnVua3Rpb25lbiBrb25maWd1cmllcnQgd2VyZGVuOgorCisJKiogIi9zdGQvdGhpbmcvY29tbWFuZHMiOgorCXZhcmFyZ3Mgdm9pZCBBZGRDbWQobWl4ZWQgY21kLCBtaXhlZCBmdW5jLCBpbnQgZmxhZyk7CisJICBVbSBkZW0gT2JqZWt0IGRpZSBNb2VnbGljaGtlaXQgenUgZ2ViZW4sIGF1ZiBCZWZlaGxlIHp1IHJlYWdpZXJlbiwKKwkgIGthbm4gbWl0IEFkZENtZCgpIEtvbW1hbmRvcyBkZWZpbmllcnQgd2VyZGVuLCBkaWUgZWluZSBiZXN0aW1tdGUKKwkgIEZ1bmt0aW9uIChmdW5jKSBhdWZydWZlbi4gZmxhZyBlbnRzY2hlaWRldCBkYXJ1ZWJlciwgb2IgZGFzIEtvbW1hbmRvCisJICAoY21kKSBhYmdla3Vlcnp0IHdlcmRlbiBrYW5uIChmbGFnID0gMSkgb2RlciBuaWNodCAoZmxhZyA9IDApLgorCisJdmFyYXJncyB2b2lkIFJlbW92ZUNtZChtaXhlZCBjbWQpOworCSAgTWFuIGthbm4gZGllIEtvbW1hbmRvcyBqZWRlcnplaXQgd2llZGVyIG1pdCBkZXIgRnVua3Rpb24gUmVtb3ZlQ21kKCkKKwkgIGVudGZlcm5lbi4KKworCSoqICIvc3RkL3RoaW5nL2Rlc2NyaXB0aW9uIjoKKwl2YXJhcmdzIGludCBpZChzdHJpbmcgc3RyLCBpbnQgbHZsKTsKKwkgIERpZSBGdW5rdGlvbiBpZCgpIGJlaGFuZGVsdCBkaWUgSWRlbnRpZmlrYXRvcmVuIGVpbmVzIE9iamVrdGVzLCAKKwkgIHdlbGNoZSBpbiBkZXIgUHJvcGVydHkgUF9JRFMgZ2VzcGVpY2hlcnQgc2luZC4gSmVkZXNtYWwsIHdlbm4gZWluCisJICBPYmpla3QgZHVyY2ggS29tbWFuZG9zIHdpZSAibmltbSIsICJsYXNzIGZhbGxlbiIgZXRjIHJlZmVyZW56aWVydAorCSAgd2VyZGVuIHNvbGwsIHdpcmQgaWQoKSBtaXQgZGVtIE5hbWVuIGRlcyBPYmpla3RlcyBhdWZnZXJ1ZmVuLiBEYWJlaQorCSAgd2VyZGVuIGRhbm4gZGllIEVsZW1lbnRlIHZvbiBQX0lEUyBtaXQgc3RyIHZlcmdsaWNoZW4gdW5kIGRhcyBFcmdlYi0KKwkgIG5pcyAoV0FIUi9GQUxTQ0ggPT0gMS8wKSB6dXJ1ZWNrZ2VnZWJlbi4gbHZsIGlzdCBmdWVyIGRpZSBCZWhhbmRsdW5nCisJICB2b24gTGViZXdlc2VuIG5vdHdlbmRpZywgc2llaGUgbGl2aW5nLgorCQorCXZvaWQgQWRkSWQobWl4ZWQgc3RyKTsKKwkgIE1pdHRlbHMgZGllc2VyIEZ1bmt0aW9uIGthbm4gZWluIG9kZXIgbWVocmVyZSBuZXVlIElkZW50aWZpa2F0b3JlbgorCSAgZGVyIExpc3RlIGRlciBiZXN0ZWhlbmRlbiwgU3RhbmRhcmQgaXN0ICJkaW5nIiwgaGluenVnZWZ1ZWd0IHdlcmRlbi4KKworCXZvaWQgQWRkQWRqZWN0aXZlKG1peGVkIHN0cik7CisJICBVbSBkZW4gT2JqZWt0ZW4gZGllIE1vZWdsaWNoa2VpdCB6dSBnZWJlbiwgc2ljaCBiZXNzZXIgenUgYmVzY2hyZWliZW4KKwkgIG9kZXIgenVyIGJlc3NlcmVuIElkZW50aWZpemllcnVuZywga2FubiBtYW4gbWl0IEFkZEFkamVjdGl2ZSgpIGRlbQorCSAgT2JqZWt0IG5hZWhlciBiZXNjaHJlaWJlbmRlIEFkamVrdGl2ZSBoaW56dWZ1ZWdlbi4gRGllc2Ugc2luZCBpbgorCSAgUF9BREpFQ1RJVkVTIGdlc3BlaWNoZXJ0LgorCisJc3RyaW5nIG5hbWUoaW50IGNhc3VzLGludCBkZW1vbik7CisJICBEaWVzZSBGdW5rdGlvbiBsaWVmZXJ0IGRlbiBOYW1lbiBkZXMgT2JqZWt0ZXMgbWl0IGFsbGVuIHp1c2FldHpsaWNoZW4KKwkgIEF0dHJpYnV0ZW4gaW0gZ2V3dWVuc2NodGVuIEZhbGwgKGNhc3VzKSwgZGVtb25zdHJhdGl2IChkZW1vbiA9IDEpIAorCSAgb2RlciBuaWNodCBkZW1vbnN0cmF0aXYgKGRlbW9uID0gMCkuCisKKwkqKiAiL3N0ZC90aGluZy9sYW5ndWFnZSI6CisJdmFyYXJncyBzdHJpbmcgUXVlcnlBcnRpY2xlKGludCBjYXN1cywgaW50IGRlbSwgaW50IGZvcmNlKTsKKwkgIEFydGlrZWwgaW0gcGFzc2VuZGVuIEZhbGwgc293aWUgZGVtb25zdC4gYnp3IHVuZGVtb25zdC4genVydWVjay0KKwkgIGdlYmVuLiBmb3JjZSB1ZWJlcnNjaHJlaWJ0IGRhcyBTZXRBcnRpY2xlLUZsYWcuCisKKwl2YXJhcmdzIGludCBTdWdnZXN0QXJ0aWNsZShzdHJpbmcgaWQpOworCSAgRW1wZmVobGUgZWluZW4gQXJ0aWtlbCBmdWVyIGRhcyBPYmpla3QsIGdldGVzdGV0IHdpcmQsIG9iIGF1c3NlcgorCSAgZGllc2VtIE9iamVrdCBzaWNoIGVpbiBhbmRlcmVzIE9iamVrdCBtaXQgZGVyIGlkIGltIHNlbGJlbgorCSAgUmF1bSBiZWZpbmRldC4KKworCXZhcmFyZ3Mgc3RyaW5nIFF1ZXJ5UG9zc1Byb25vdW4obWl4ZWQgd2hhdCwgaW50IGNhc3VzLCBpbnQgbnVtYmVyKTsKKwkgIEdpYiBlaW4gUHJvbm9tZW4genVydWVjaywgZGFzIGF1c2RydWVja3QsIGRhcyBlaW4gT2JqZWt0IGRpZXNlbQorCSAgT2JqZWt0IGdlaG9lcnQuIERhYmVpIGlzdCB3aGF0IGRhcyBHZXNjaGxlY2h0IGRlcyBPYmpla3Rlcy4KKworCXN0cmluZyBRdWVyeVByb25vdW4oIGNhc3VzICk7CisJICBFci9TaWUvRXMgdS5hZS4genVydWVja2dlYmVuLgorCisJdmFyYXJncyBzdHJpbmcgUXVlcnlEdShpbnQgY2FzdXMsaW50IGdlbmRlciwgaW50IHphaGwpOworCSAgRHUgaW0gcGFzc2VuZGVuIEZhbGwgenVydWVja2dlYmVuIChzaWVoZSBRdWVyeUFydGljbGUoKSkuCisKKwlzdHJpbmcgUXVlcnlHZW5kZXJTdHJpbmcoKTsKKwkgIEdpYnQgZGFzIEdlc2NobGVjaHQgaW4gV29ydGVuIHp1cnVlY2suCisKKwl2YXJhcmdzIHN0cmluZyBEZWNsQWRqKHN0cmluZyBhZGosIGludCBjYXN1cywgaW50IGRlbW9uKTsgCisJICBEZWtsaW5pZXJlIEFkamVrdGl2ZSBhZGogbWl0IENhc3VzIGNhc3VzLgorCisJKiogIi9zdGQvdGhpbmcvcHJvcGVydGllcyI6CisJdmFyYXJncyBtaXhlZCBTZXQoc3RyaW5nIG5hbWUsIG1peGVkIFZhbHVlLCBpbnQgVHlwZSk7IAorCSAgU2V0emUgZWluZW4gV2VydCBlaW5lciBQcm9wZXJ0eSBkaXJla3QsIHdvYmVpIGRlciBUeXAgZGVzIFdlcnRlcworCSAgKFZhbHVlKSBkdXJjaCBGX1ZBTFVFLCBGX01PREUsIEZfU0VUX01FVEhPRCwgRl9RVUVSWV9NRVRIT0QgKFR5cGUpCisJICBhbmdlZ2ViZW4gd2lyZC4gCisJICBGX1ZBTFVFIC0tIGRhcmYgZWluIGJlbGllYmlnZXIgV2VydCBzZWluCisJICBGX01PREUgIC0tIG11c3MgZWluZSBaYWhsIHNlaW4gKFNBVkUsIFBST1RFQ1RFRCwgU0VDVVJFRCwgCisJICAgICAgICAgICAgIE5PU0VUTUVUSE9EKQorCSAgRl9TRVRfTUVUSE9ELCBGX1FVRVJZX01FVEhPRCAtLSAwIG9kZXIgZWluZSBDbG9zdXJlCisKKwl2YXJhcmdzIG1peGVkIFF1ZXJ5KHN0cmluZyBuYW1lLCBpbnQgVHlwZSk7CisJICBMaWVzIGRlbiBXZXJ0IGVpbmVyIFByb3BlcnR5IGF1cy4gRGFiZWkgZ2lidCBUeXBlIGFuLCB3ZWxjaGVuIFdlcnQKKwkgIChGX1ZBTFVFLCBGX01PREUsIEZfU0VUX01FVEhPRCwgRl9RVUVSWV9NRVRIT0QpIG1hbiBhdXNsZXNlbiB3aWxsLgorCisJbWl4ZWQgU2V0UHJvcChzdHJpbmcgbmFtZSwgbWl4ZWQgVmFsdWUpOworCSAgU2V0emUgZGVuIFdlcnQgZWluZXIgUHJvcGVydHkuIERhYmVpIHdpcmQsIGZhbGxzIHZvcmhhbmRlbiwgZGVyIFdlcnQKKwkgIG5vY2ggZHVyY2ggZGllIEZfU0VUX01FVEhPRCBiZWhhbmRlbHQgKHouQi4gVHlwdWViZXJwcnVlZnVuZykuCisJICBEaWVzIHNvbGx0ZSBkaWUgU3RhbmRhcmRtZXRob2RlIHp1bSBTZXR6ZW4gZWluZXIgUHJvcGVydHkgc2VpbiEKKyAgCisJbWl4ZWQgUXVlcnlQcm9wKHN0cmluZyBuYW1lKTsKKwkgIExpZXMgZGVuIFdlcnQgZWluZXIgUHJvcGVydHksIHdvYmVpIGRlciBlaWdlbnRsaWNoZSBXZXJ0IGR1cmNoIGRpZSwKKwkgIGZhbGxzIHZvcmhhbmRlbiwgRl9RVUVSWV9NRVRIT0QgYmVoYW5kZWx0IHdpcmQuIEFscyBCZWlzcGllbCBkaWVudAorCSAgaGllciBkaWUgQmVoYW5kbHVuZyBkZXMgR2VzYW10Z2V3aWNodHMsIHdlbGNoZXMgZHVyY2ggQWJmcmFnZW4gdm9uCisJICBQX1RPVEFMX1dFSUdIVCBhdXNnZWxlc2VuIHdlcmRlbiBrYW5uOyBoaWVyYmVpIGVycmVjaG5ldCBkaWUgCisJICBGX1FVRVJZX01FVEhPRCB2b24gUCtfVE9UQUxfV0VJR0hUIGVyc3QgZGFzIHRvdGFsZSBHZXdpY2h0LgorCSAgRGllcyBzb2xsdGUgZGllIFN0YW5kYXJkbWV0aG9kZSBzZWluIHVtIGVpbmUgUHJvcGVydHkgYXVzenVsZXNlbiEKKworCXZvaWQgU2V0UHJvcGVydGllcyhtYXBwaW5nIHByb3BzKTsKKwkgIERpZXNlIEZ1bmt0aW9uIGthbm4gZGllIGluIHByb3BzIGdlc3BlaWNoZXJ0ZW4gUHJvcGVydGllcyBpbSBPYmpla3QKKwkgIHVudGVyYnJpbmdlbi4gRGFiZWkgd2VyZGVuIHNjaG9uIHZvcmhlciBhbHMgUFJPVEVDVEVEIG9kZXIgU0VDVVJFRAorCSAgZ2VrZW5uemVpY2huZXRlIFByb3BlcnRpZXMgTklDSFQgdWViZXJzY2hyaWViZW4uCisKKwltYXBwaW5nIFF1ZXJ5UHJvcGVydGllcygpOworCSAgTGllZmVydCBlaW4gbWFwcGluZywgd2VsY2hlcyB2b24gU2V0UHJvcGVydGllcygpIGJlaGFuZGVsdCB3ZXJkZW4KKwkgIGthbm4uCisKKwkqKiAiL3N0ZC90aGluZy9tb3ZpbmciOgorCWludCBtb3ZlKG1peGVkIGRlc3QsaW50IG1ldGhvZCk7CisJICBKZWRlc21hbCwgd2VubiBlaW4gT2JqZWt0IGJld2VndCB3ZXJkZW4gc29sbCwgd2lyZCBkaWUgRnVua3Rpb24KKwkgIG1vdmUoKSBhdWZnZXJ1ZmVuLCB3ZWxjaGUgZGFubiBkYXMgZWlnZW50bGljaGUgQmV3ZWdlbiBhdXNmdWVocnQuCisJICBEYXp1IG11c3MgZGVyIEZ1bmt0aW9uIGVpbiBaaWVsIChkZXN0KSBhbHMgWmVpY2hlbmtldHRlIG9kZXIgYWxzCisJICBPYmpla3QgdW5kIGVpbmUgTWV0aG9kZSBkZXIgQmV3ZWd1bmcgdWViZXJnZWJlbiB3ZXJkZW4uCisJCisJdmFyYXJncyBpbnQgcmVtb3ZlKCk7CisJICBXaXJkIGVpbiBPYmpla3QgemVyc3RvZXJ0LCB3aXJkIGRpZSBGdW5rdGlvbiByZW1vdmUoKSBhdWZnZXJ1ZmVuLgorCSAgUnVlY2tnYWJld2VydCAxIGJlZGV1dGV0IEVyZm9sZyB1bmQgMCBNaXNzZXJmb2xnIGRlciBaZXJzdG9lcnVuZy4KKworVkVSRVJCVU5HU0JBVU06CisJdGhpbmcKKwkgIHwtdGhpbmcvY29tbWFuZHMKKwkgIHwtdGhpbmcvZGVzY3JpcHRpb24KKwkgIHwtdGhpbmcvbGFuZ3VhZ2UKKwkgIHwtdGhpbmcvbW92aW5nCisJICB8LXRoaW5nL3Byb3BlcnRpZXMKKwkgIGAtdGhpbmcvcmVzdHJpY3Rpb25zCisKK1NJRUhFIEFVQ0g6CisJcHJvcGVydGllcywgY2xvc3VyZXMgCmRpZmYgLS1naXQgYS9kb2Mvc3RkL3RyYW5zcG9ydCBiL2RvYy9zdGQvdHJhbnNwb3J0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjMwMDBjOTcKLS0tIC9kZXYvbnVsbAorKysgYi9kb2Mvc3RkL3RyYW5zcG9ydApAQCAtMCwwICsxLDI2NCBAQAorPiBGVU5LVElPTlNXRUlTRSBWT04gVFJBTlNQT1JURVJOIDwKK1ZlcnNpb24gMS4wICgwNC4wNS4xOTkzKSB2b24gUnVtYXRhCis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorCisKK0lOSEFMVDoKKz09PT09PQorCisJMS4JQWxsZ2VtZWluZXMKKwkyLglQcm9wZXJ0aWVzCisJMy4JSGFsdGVzdGVsbGVuCisJNC4JU3RldWVydW5nCisJNS4JQmV0cmV0ZW4gdW5kIHZlcmxhc3NlbgorCTYuCUV4dHJhcworCTcuCUtvbW1hbmRvcyBpbiBUcm5hc3BvcnRlcm4KKworCisxLiBBTExHRU1FSU5FUworPT09PT09PT09PT09PT0KKworCUVpbiBUcmFuc3BvcnRlciBpc3QgZWluIFJhdW0gbWl0IGJlc29uZGVyZW4gRWlnZW5zY2hhZnRlbi4KKwlXYWVocmVuZCBub3JtYWxlIFJhdW1lIG1pdGVpbm5kZXIgc3RhcnIgdmVyYnVuZGVuIHNpbmQsCisJa2FubiBkaWVzZXIgUmF1bSBzZWluZSBWZXJiaW5kdW5nIHp1IGFuZGVyZW4gUmFldW1lbiBtaXQKKwlkZXIgWmVpdCBhZW5kZXJuLgorCisJSmVkZXIgVHJhbnNwb3J0ZXIgYmVzaXR6dCBlaW5lbiAnS3VycycgZGVuIGVyIGFiZmFlaHJ0OyBuYWNoIGRlcgorCWxldHp0ZW4gJ0hhbHRlc3RlbGxlJyBiZWdpbm50IGRlciBLdXJzIHdpZWRlciB2b24gVm9ybmUuCisJV2lsbCBtYW4gZWluZW4gS3VycyBzZXR6ZW4sIGRlciBlbnRsYW5nIGVpbmVyIFN0cmVja2UgaGluLQorCXVuZCB6dXJ1ZWNrIGZ1ZWhydCwgc28gbXVzcyBtYW4gamVkZSBIYWx0ZXN0ZWxsZSBlaW5tYWwgZnVlcgorCWRlbiBIaW53ZWcgdW5kIGVpbm1hbCBmdWVyIGRlbiBSdWVja3dlZyBlaW5mdWVnZW4uCisKKwlFaW4gQmVpc3BpZWwsIHdpZSBtYW4gZWluZW4gc29sY2hlbiBUcmFuc3BvcnRlciBwcm9ncmFtbWllcnQsCisJaXN0IGluIC9kb2MvYmVpc3BpZWxlL3dvbGtlLmMgenUgc2VoZW4gKHVuZCB6dSBsYWRlbiA6LSkuCisKKzIuIFBST1BFUlRJRVMKKz09PT09PT09PT09PT0KKworCVBfRU5URVJNU0cKKwkJQXJyYXkgbWl0IHp3ZWkgTWVsZHVuZ2VuIGluIGRlciBBcnQgdm9uIG1zZ2luIHVuZAorCQltc2dvdXQuICBEaWUgZXJzdGUgTWVsZHVuZyBpc3QgZnVlciBkZW4gUmF1bSwgZGVuIGRlcgorCQlTcGllbGVyIHZlcmxhZXNzdCwgdW5kIGRpZSB6d2VpdGUgZnVlciBkZW4gVHJhbnNwb3J0ZXIsCisJCWluIGRlbiBlciBnZWh0LgorCisJUF9MRUFWRU1TRworCQlBcnJheSBtaXQgendlaSBNZWxkdW5nZW4sIGVpbmUgZnVlciBkZW4gVHJhbnNwb3J0ZXIsIGRlbgorCQllciB2ZXJsYWVzc3QsIHVuZCBlaW5lIGZ1ZXIgZGVuIFJhdW0sIGluIGRlbiBlciBrb21tdC4KKworCVBfRU5URVJGQUlMCisJCU1lbGR1bmcgYW4gZWluIFdlc2VuLCB3ZW5uIGRlbiB2b2xsZW4gVHJhbnNwb3J0ZXIKKwkJYmV0cmV0ZW4gd2lsbC4gSXN0IGRpZSBQcm9wLiBlaW4gQXJyYXksIHNvIHdpcmQgZGFzIGVyc3RlCisJCUVsZW1lbnQgYWxzIE1lbGR1bmcgYW4gZGFzIFdlc2VuLCBkYXMgendlaXRlIGFscyBNZWxkdW5nCisJCWFuIGRpZSBNaXRzcGllbGVyIGltIFJhdW0gZ2VzY2hpY2t0LiBJc3QgZGllIFByb3BlcnR5CisJCWVpbmUgQ2xvc3VyZSwgd2lyZCBkaWVzZSBhdXNnZWZ1ZWhydCwgd2VubiBlaW4gU3BpZWxlcgorCQl2ZXJnZWJsaWNoIHZlcnN1Y2h0LCBkZW4gVHJhbnNwb3J0ZXIgenUgYmV0cmV0ZW4uCisKKwlQX0xFQVZFRkFJTAorCQlNZWxkdW5nIGFuIGVpbiBXZXNlbiwgd2VubiBlcyBhdXNzZXJoYWxiIGRlciBBbmxlZ2V6ZWl0ZW4KKwkJZGVuIFRyYW5zcG9ydGVyIHZlcmxhc3NlbiB3aWxsLiBJc3QgZGllIFByb3AuIGVpbiBBcnJheSwKKwkJc28gd2lyZCBkYXMgZXJzdGUgRWxlbWVudCBhbHMgTWVsZHVuZyBhbiBkYXMgV2VzZW4sIGRhcworCQl6d2VpdGUgYWxzIE1lbGR1bmcgYW4gZGllIE1pdHNwaWVsZXIgaW0gVHJhbnNwb3J0ZXIKKwkJZ2VzY2hpY2t0LiBJc3QgZGllIFByb3BlcnR5IGVpbmUgQ2xvc3VyZSwgd2lyZCBkaWVzZQorCQlhdXNnZWZ1ZWhydCwgd2VubiBlaW4gU3BpZWxlciB2ZXJnZWJsaWNoIHZlcnN1Y2h0LCBkZW4KKwkJVHJhbnNwb3J0ZXIgenUgdmVybGFzc2VuLgorCisJUF9BUlJJVkVNU0cKKwkJRWluIEFycmF5IG1pdCB6d2VpIE1lbGR1bmdlbi4gRGFzIGVyc3RlIEVsZW1lbnQgaXN0IGRpZQorCQlNZWxkdW5nLCBkaWUgZGllIFdlc2VuIGltIFRyYW5zcG9ydGVyIGJla29tbWVuLiBEaWUKKwkJendlaXRlIE1lbGR1bmcgaXN0IGZ1ZXIgZGllIFdlc2VuIGluIGRlbSBSYXVtLCBhbiBkZW0KKwkJZGVyIFRyYW5zcG9ydGVyIGFubGVndC4gCisKKwlQX0RFUEFSVE1TRworCQlEaXRvIGZ1ZXIgZGFzIEFibGVnZW4uCisKKwlQX01BWF9QQVNTRU5HRVJTCisJCU51bWVyaXNjaGVyIFdlcnQgZnVlciBkaWUgbWF4aW1hbGUgQW56YWhsIHZvbiBXZXNlbiwgZGllCisJCXNpY2ggaW4gZGVtIFRyYW5zcG9ydGVyIGF1ZmhhbHRlbiBkdWVyZmVuLgorCQkwIGJlZGV1dGV0IHVuYmVzY2hhZW5rdGUgU3BpZWxlcnphaGwuCisKKworMy4gSEFMVEVTVEVMTEVOCis9PT09PT09PT09PT09PT0KKworCUVzIGdpYnQgMyBTb3J0ZW4gdm9uIEhhbHRlc3RlbGxlbjoKKworCTEuKSBSYWV1bWUgYWxzIEhhbHRlc3RlbGxlbi4KKworCUZVTktUSU9OOgorCQorCQlBZGRSb3V0ZSggcmF1bSwgdmVyd2VpbCwgbmV4dCApOworCQlvZGVyCisJCUFkZFJvdXRlKCByYXVtLCB2ZXJ3ZWlsLCBuZXh0LCBjb2RlICk7CisKKwlQQVJBTUVURVI6CisKKwkJcmF1bQktIFJhdW0sIGFuIGRlbSBkZXIgVHJhbnNwb3J0ZXIgaGFsdGVuIHNvbGwuCisJCXZlcndlaWwJLSBaZWl0IGluIFNla3VuZGVuLCBkaWUgZGVyIFRyYW5zcG9ydGVyIGluIGRlbQorCQkJICBSYXVtIHZlcmJsZWlidCwgYmlzIGVyIHdlaXRlcmZhZWhydC4KKwkJbmV4dAktIFplaXQgaW4gU2VrdW5kZW4gYmlzIHp1ciBuYWVjaHN0ZW4gSGFsdGUtCisJCQkgIHN0ZWxsZS4KKworCQljb2RlCS0gVGV4dCwgZGVyIHZvbiBkZXIgRnVua3Rpb24gUXVlcnlBcnJpdmVkCisJCQkgIHp1cnVlY2tnZWdlYmVuIHdpcmQsIHdlbm4gZGVyIFRyYW5zcG9ydGVyCisJCQkgIGFuIGRpZXNlciBIYWx0ZXN0ZWxsZSBhbmdlbGVndCBoYXQuCisJCQkgIFdpcmQgZGllc2VyIFBhcmFtZXRlciBuaWNodCBhbmdlZ2ViZW4sIHdpcmQKKwkJCSAgZWluIGxlZXJlciBTdHJpbmcgYWxzIGNvZGUgZ2VzZXR6dC4KKworCTIuKSBNZWxkdW5nZW4gYWxzIEhhbHRlc3RlbGxlbi4KKworCUZVTktUSU9OOgorCisJICAgICAgQWRkTXNnKCB0ZXh0LCBuZXh0ICk7CisKKwlQQVJBTUVURVI6CisKKwkJdGV4dAktIFRleHQsIGRlciBNZWxkdW5nLCBkaWUgaW4gZGVtIFRyYW5zcG9ydGVyCisJCQkgIGF1c2dlZ2ViZW4gd2lyZC4KKwkJbmV4dAktIFplaXQgaW4gU2VrdW5kZW4gYmlzIHp1ciBuYWVjaHN0ZW4gSGFsdGUtCisJCQkgIHN0ZWxsZS4KKworCTMuKSBGdW5rdGlvbnNhdWZydWZlIGFscyBIYWx0ZXN0ZWxsZW4uCisKKwlGVU5LVElPTjoKKworCQlBZGRGdW4oIGZ1biwgbmV4dCApOworCisJUEFSQU1FVEVSOgorCisJCWZ1bgktIE5hbWUgZWluZXIgRnVua3Rpb24sIGRpZSBpbSBUcmFuc3BvcnRlcgorCQkJICBhdWZnZXJ1ZmVuIHdpcmQuCisJCW5leHQJLSBaZWl0IGluIFNla3VuZGVuIGJpcyB6dXIgbmFlY2hzdGVuIEhhbHRlLQorCQkJICBzdGVsbGUuCisKKzQuIFNURVVFUlVORworPT09PT09PT09PT09CisKKwlGVU5LVElPTgorCisJCVN0YXJ0KCk7CisJCW9kZXIKKwkJU3RhcnQobnVtbWVyKTsKKworCUJFU0NIUkVJQlVORzoKKworCQlEZXIgVHJhbnNwb3J0ZXIgc29sbCBzb2ZvcnQgYW4gZGVyIEhhbHRlc3RlbGxlIG1pdAorCQlkZXIgYW5nZWdlYmVuZW4gTnVtbWVyIChrZWluZSBOdW1tZXIgaGVpc3N0IGFuIGRlciBlcnN0ZW4pCisJCWFubGVnZW4gdW5kIHZvbiBkYSBhYiBzZWluZW4gS3VycyBmYWhyZW4uCisKKwlGVU5LVElPTjoKKworCQlIYWx0KCk7CisKKwlCRVNDSFJFSUJVTkc6CisKKwkJSGFsdGUgZGllIEZhaHJ0IGFuLiBEZXIgVHJhbnNwb3J0ZXIgYmxlaWJ0IHN0ZWhlbiwgd28KKwkJZXIgaXN0LgorCisKKzUuIEJFVFJFVEVOIFVORCBWRVJMQVNTRU4KKz09PT09PT09PT09PT09PT09PT09PT09PT0KKworCURlciBUcmFuc3BvcnRlciBoYXQga2VpbmUgVmVyYmVuIHByb2dyYW1taWVydCwgbWl0IGRlbmVuIG1hbgorCWRlbiBUcmFuc3BvcnRlciBiZXRyZXRlbiBvZGVyIHZlcmxhc3NlbiBrYW5uLgorCURhZnVlciBtdWVzc2VuIG1pdCBBZGRDbWQoKSBWZXJiZW4gZWluZ2VmdWVocnQgd2VyZGVuLCBkaWUKKwlhdWYgc2VsYnN0Z2VzY2hyaWViZW5lIEZ1bmt0aW9uZW4genVncmVpZmVuLgorCisJRlVOS1RJT046CisKKwkJRW50ZXIoKTsKKworCUJFU0NIUkVJQlVORzoKKworCQlUZXN0ZSwgb2IgZnVlciBkdW4gYWt0dWVsbGVuIFNwaWVsZXIgKHRoaXNfcGxheWVyKCkpCisJCW5vY2ggUGxhdHogaW0gVHJhbnNwb3J0ZXIgaXN0IHVuZCBvYiBlciBzaWNoIGF1c3NlcmhhbGIKKwkJZGVzIFRyYW5zcG9ydGVycyBiZWZpbmRldC4gV2VubiBqYSwgYmV3ZWdlIGlobiBpbiBkZW4KKwkJVHJhbnNwb3J0ZXIuIFdlbm4gZGVyIFRyYW5zcG9ydGVyIGVpbmUgUmVha3Rpb24gKEJld2VnZW4gZGVzCisJCVNwaWVsZXJzIG9kZXIgVWViZXJsYXVmKSwgc28gZ2liIGVpbmUgMSB6dXJ1ZWNrIHNvbnN0IGVpbmUgMC4KKworCQlXZW5uIGRlciBUcmFuc3BvcnRlciBuaWNodCBkYSAoYWxzbyB1bnNpY2h0YmFyKSBpc3QsIHR1ZSBmdWVyCisJCWRpZSBTcGllbGVyIGF1c3NlcmhhbGIgZGVzIFRyYW5zcG9ydGVycyBzbywKKwkJYWxzIG9iIGRhcyBWZXJiIG5pY2h0IGRlZmluaWVydCB3dXJkZS4KKworCQlEaWVzZXIgV2VydCBrYW5uIGltIGFsbGdlbWVpbmVuIGRpcmVrdCBhbHMgcmV0dXJud2VydCBiZW51dHp0CisJCXdlcmRlbi4KKworCUZVTktUSU9OOgorCisJCUxlYXZlKCk7CisKKwlCRVNDSFJFSUJVTkc6CisKKwkJV2VubiBkZXIgTW9tZW50YW5lIFNwaWVsZXIgbmljaHQgaW0gVHJhbnNwb3J0ZXIgaXN0LCBzbyBnaWIKKwkJZWluZSBGZWhsZXJtZWxkdW5nIGF1cy4gQW5kZXJlbmZhbGxzIHRlc3RlLCBvYiBkZXIKKwkJVHJhbnNwb3J0ZXIgYW4gZWluZW4gUmF1bSBhbmdlbGVndCBoYXQuIFdlbm4gbmVpbiwgZ2ViZQorCQlkaWUgTEVBVkVGQUlMIE1lbGR1bmcgYXVzOyB1bmQgd2VubiBhbGxlcyBvayBpc3QsIHNvCisJCWJld2VnZSBkZW4gU3BpZWxlciBhdXMgZGVtIFRyYW5zcG9ydGVyLgorCis2LiBFWFRSQVMKKz09PT09PT09PQorCisJRlVOS1RJT046CisKKwkJUXVlcnlBcnJpdmVkKCk7CisKKwlCRVNDSFJFSUJVTkc6CisKKwkJR2ViZSBkZW4gQ29kZSBkZXMgUmF1bWVzIHp1cnVlY2ssIGFuIGRlbSBkZXIgVHJhbnNwb3J0ZXIKKwkJZ2VyYWRlIGFubGllZ3QuIEhhdCBkZXIgUmF1bSBrZWluZW4gQ29kZSwgZ2ViZSBlaW5lbgorCQlMZWVyc3RyaW5nIHp1cnVlY2suIExpZWd0IGRlciBUcmFuc3BvcnRlciBhbiBrZWluZW0gUmF1bQorCQlhbiwgc28gZ2ViZSAwIHp1cnVlY2suCisKKwkJRGllc2UgRnVua3Rpb24gYmlldGV0IHNpY2ggYW4gdW0gbWl0dGVscyBwcm9jZXNzX3N0cmluZworCQlkaWUgQW5rdW5mdHMtIHVuZCBBYmZhaHJ0c21lbGR1bmdlbiBhYndlY2hzbHVuZ3NyZWljaAorCQl6dSBnZXN0YWx0ZW4uCisKKwlGVU5LVElPTjoKKworCQlRdWVyeVBhc3NlbmdlcnMoKSwKKworCUJFU0NIUkVJQlVORzoKKworCQlHZWJlIGVpbmUgTGlzdGUgbWl0IGFsbGVuIExlYmV3ZXNlbiwgZGllIHNpY2ggYXVmL2luIGRlbQorCQlUcmFuc3BvcnRlciBiZWZpbmRlbiwgenVydWVjay4KKworCUZVTktUSU9OOgorCisJCVJlbW92ZVJvdXRlKCk7CisKKwlCRVNDSFJFSUJVTkc6CisKKwkJSGFsdGUgZGVuIFRyYW5zcG9ydGVyIGFuIHVuZCBsb2VzY2hlIGRlc3NlbiBLdXJzLgorCis3LiBLT01NQU5ET1MgSU4gVFJBTlNQT1JURVJOCis9PT09PT09PT09PT09PT09PT09PT09PT09PT09CisKKwlEYSBzaWNoIGRlciBUcmFuc3BvcnRlciBpbiBkZW0gUmF1bSBiZWZpbmRldCwgaW4gZGVtIGVyIGFuZ2VsZWd0CisJaGF0LCBzaW5kIGFsbGUgS29tbWFuZG9zIGRlcyBUcmFuc3BvcnRlcnMgYXVjaCBkb3J0IHZlcmZ1ZWdiYXIuCisJU2VsYnN0IHdlbm4gZGVyIFRyYW5zcG9ydGVyIGFiZ2VsZWd0IGhhdCwgc3RlaHQgZXIgbm9jaCBpbW1lcgorCXVuc2ljaHRiYXIgZG9ydCBoZXJ1bS4KKworCURlc2hhYmwgbXVzcyBpbiBkZW4gS29tbWFuZG9zIHZvcnNvcmdlIGdydHJvZmZlbiB3ZXJkZW4sIGRhc3MgbnVyCisJZGllIHJpY2h0aWdlbiBTcGllbGVyIChkaWUgZHJpbm5lbiB1bmQgZGllIGRyYXVzc2VuKSBkaWUgcmljaHRpZ2VuCisJS29tbWFuZG9zIGF1c2Z1ZWhyZW4ga29lbm5lbi4KKworCUtPTU1BTkRPUyBGVUVSIFNQSUVMRVIgQVVTU0VSSEFMQjoKKworCQlFcyBtdXNzIGFiZ2V0ZXN0ZXQgd2VyZGVuLCBvYiBkZXIgU3BpZWxlciBuaWNodCBpbQorCQlUcmFuc3BvcnRlciBpc3QsIHVuZCBvYiBkZXIgVHJhbnNwb3J0ZXIgYW5nZWxlZ3QgaGF0LgorCisJCWlmKCBlbnZpcm9ubWVudCh0aGlzX3BsYXllcigpKT09dGhpc19vYmplY3QoKSAKKwkJCXx8ICFRdWVyeUFycml2ZWQoKSApIHJldHVybiAwOworCisJS09NTUFORE9TIEZVRVIgU1BJRUxFUiBJTk5FUkhBTEI6CisKKwkJQWJ0ZXN0ZW4sIG9iIGRlciBTcGllbGVyIHdpcmtsaWNoIGltIFRyYW5zcG9ydCBpc3QuCisKKwkJaWYoIGVudmlyb25tZW50KHRoaXNfcGxheWVyKCkpIT10aGlzX29iamVjdCgpICkKKwkJCXJldHVybiAwOworCisJCVZvcnNpY2h0IGF1Y2ggYmVpIEFkZEV4aXRzIGlubmVyaGFsYiBkZXMgVHJhbnNwb3J0ZXJzLAorCQlhYmVyIGRhcmFuIGFyYmlldGUgaWNoIG5vY2guLi4gOi0pCisKKwlEaWUgRnVua3Rpb25lbiBFbnRlcigpIHVuZCBMZWF2ZSgpIGhhYmVuIGRpZXNlIEZ1bmt0aW9uYWxpdGFldAorCWVpbmdlYmF1dC4KKwpkaWZmIC0tZ2l0IGEvZG9jL3N0ZC90dWVyIGIvZG9jL3N0ZC90dWVyCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjQ4OWZkODQKLS0tIC9kZXYvbnVsbAorKysgYi9kb2Mvc3RkL3R1ZXIKQEAgLTAsMCArMSw0MiBAQAorU1RBTkRBUkRPQkpFS1QgRlVFUiBUVUVSRU46CisKK0JFTlRVWlVORzoKKwlpbmhlcml0ICJzdGQvdHVlciI7CisKKwkjaW5jbHVkZSA8dHVlci5jPgorCQorQkVTQ0hSRUlCVU5HOgorCUJhc2lza2xhc3NlIGZ1ZXIgYWxsZSBUdWVyZW4gaW0gU3BpZWwuIFNpZSBpc3Qgdm9uIC9zdGQvdGhpbmcKKwlhYmdlbGVpdGV0LgorCisgICAgRnVua3Rpb25lbjoKKworCUFkZERvb3IyKCBzdHJpbiBzaG9ydCwKKwkJICBzdHJpbmcgbG9uZywKKwkJICBtaXhlZCBpZCwKKwkJICBtaXhlZCBkZXN0LAorCQkgIHN0cmluZyBjb20sCisJCSAgaW50IGZsYWdzLAorCQkgIHN0cmluZyBrZXksCisJCSAgc3RyaW5nIGZ1bmMsCisJCSAgb2JqZWN0IG9iaiApCisKKwkJRXJ6ZXVndCBlaW5lIG5ldWUgVHVlciwgd29iZWkgZGllIFBhcmFtZXRlciBmb2xnZW5kZXMgYW5nZWJlbjoKKworCQlzaG9ydCAJPSBLdXJ6YmVzY2hyZWlidW5nIGRlciBUdWVyCisJCWxvbmcJPSBBdXNmdWVocmxpY2hlIEJlc2NocmVpYnVuZyBkZXIgVHVlcgorCQlpZAk9IE5hbWVbbl0gZGVyIFR1ZXIKKwkJZGVzdAk9IEtvbW1hbmRvIHp1bSBEdXJjaHNjaHJlaXRlbiBkZXIgVHVlciwgei5CLiAnbm9yZGVuJworCisJCU9wdGlvbmFsZSBQYXJhbWV0ZXI6CisKKwkJZmxhZ3MJPSBGbGFncyBhdXMgdHVlci5oCisJCWtleQk9IFN0cmluZywgZGVyIGltIFNjaGx1ZXNzZWwgZGVmaW5pZXJ0IHNlaW4gbXVzcywgZGFtaXQKKwkJCSAgZXIgJ3Bhc3N0Jy4KKwkJZnVuYwk9IEZ1bmt0aW9uIGRpZSBiZWltIER1cmNoc2NocmVpdGVuIGRlciBUdWVyIGluIG9iagorCQkJICBhdWZnZXJ1ZmVuIHdlcmRlbiBzb2xsLgorCQlvYmoJPSBPYmpla3QgaW4gZGVtIGZ1bmMgYXVmZ2VydWZlbiB3ZXJkZW4gc29sbC4KKworU0lFSEUgQVVDSDoKKwlzY2hsdWVzc2VsCisKZGlmZiAtLWdpdCBhL2RvYy9zdGQvdW5pdCBiL2RvYy9zdGQvdW5pdApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4zYzc1MDU5Ci0tLSAvZGV2L251bGwKKysrIGIvZG9jL3N0ZC91bml0CkBAIC0wLDAgKzEsMTAyIEBACitVbml0cworCitERUZJTklFUlQgSU46IAorICAgICAgICAvc3RkL3VuaXQuYworCitCRVNDSFJFSUJVTkc6CisgICAgICAgIERhcyBVbml0LU9iamVrdCBrYW5uIGRhenUgdmVyd2VuZGV0IHdlcmRlbiwgdW0gZ3JvZXNzZXJlIE1lbmdlbgorICAgICAgICBlaW5lcyBPYmpla3RlcyAtIHdpZSBNdWVuemVuIC0genUgZXJ6ZXVnZW4uCisKKyAgICAgICAgRGFzIGdydW5kbGVnZW5kZSBLb256ZXB0IGlzdCwgZGFzIFVuaXQtT2JqZWt0ZSBuaWNodCBtZWhyIG51ciAKKyAgICAgICAgdWViZXIgaWhyZSBOYW1lbiwgc29uZGVybiBhdWNoIHVlYmVyIGlocmUgTWVuZ2UgYW5nZXNwcm9jaGVuIAorICAgICAgICB3ZXJkZW4ga2Fubi4KKworICAgICAgICBTbyB3aXJkIGRhcyBpZCgpIGRlciBNdWVuemVuIG5pY2h0IG51ciAnbXVlbnplbicgc29uZGVybiBhdWNoIAorICAgICAgICAnMyBtdWVuemVuJyB2ZXJzdGVoZW4gdW5kIGF1c3dlcnRlbiBrb2VubmVuLgorCisgICAgICAgIG1vdmUoKSBrYW5uIFRlaWxlIGRlcyBnYW56ZW4gVW5pdC1PYmpla3RzIGJld2VnZW4sIGVpbiBuZXVlcgorICAgICAgICBDbG9uZSB3aXJkIGVyemV1Z3QgdW5kIGRpZXNlbSBkZXIgdmVyYmxlaWJlbmRlIFJlc3QgZGVyIE1lbmdlCisgICAgICAgIHp1Z2V3aWVzZW4uIE5hY2ggZXJmb2xncmVpY2hlbSBtb3ZlKCkgc2NoYXV0IGRhcyBVbml0LU9iamVrdCBhbQorICAgICAgICBaaWVsb3J0LCBvYiBkb3J0IGV2dGwuIGJlcmVpdHMgVW5pdHMgZGVzIGdsZWljaGVuIFR5cHMgdm9yaGFuZGVuCisgICAgICAgIHNpbmQgdW5kIHZlcmVpbmlndCBzaWNoIGdnZi4gbWl0IGlobmVuLCBpbiBkZW0gZGFzIGFsdGUgVW5pdC0KKyAgICAgICAgT2JqZWt0IHplcnN0b2VydCB3aXJkLgorCisgICAgICAgIFVuaXQtT2JqZWt0ZSB3ZXJkZW4gaW4gZWluaWdlbiBEaW5nZXIgYW5kZXJzIHByb2dyYW1taWVydCwgZGF6dQorICAgICAgICBnZWhvZXJ0IGZvbGdlbmRlczoKKworICAgICAgICBQX1NIT1JUICAgICAgICAgICAgICAgICBFUyBXSVJEIEtFSU5FIFBfU0hPUlQgR0VTRVRaVCEKKworICAgICAgICBQX0FNT1VOVCAgICAgICAgICAgICAgICBEaWUgTWVuZ2UgZGVzIFVuaXQtT2JqZWt0cyAndm9uIEhhdXMgYXVzJywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYWxzbyBiZWltIENsb25lbiAoZGFoZXIgbWVpc3RlbnMgMSkKKworICAgICAgICBQX05BTUUgICAgICAgICAgICAgICAgICBCZWkgVW5pdC1PYmpla3RlbiBrYW5uIGhpZXIgZWluIFN0cmluZy1BcnJheQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbiBkZXIgRm9ybSAoeyBTSU5HVUxBUl9OQU1FLFBMVVJBTF9OQU1FIH0pCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFuZ2VnZWJlbiB3ZXJkZW4KKworICAgICAgICBTZXRDb2luc1BlclVuaXRzICAgICAgICBXaWV2aWVsIGlzdCBlaW5lIGJlc3RpbW10ZSBNZW5nZSB3ZXJ0CisgICAgICAgIE5JQ0hUIFBfVkFMVUUKKworICAgICAgICBTZXRHcmFtc1BlclVuaXRzICAgICAgICBXaWV2aWVsIHdpZWd0IGVpbmUgYmVzdGltbXRlIE1lbmdlCisgICAgICAgIE5JQ0hUIFBfV0VJR0hUCisKKyAgICAgICAgQWRkU2luZ3VsYXJJZAkJU3RyaW5nLUFycmF5IG1pdCBkZW4gU2luZ3VsYXItSURzIAorICAgICAgICBBZGRQbHVyYWxJZAkJU3RyaW5nLUFycmF5IG1pdCBkZW4gUGx1cmFsLUlEcworCisgICAgICAgIHp1c2FldHpsaWNoIGtvZW5uZW4gbmF0dWVybGljaCBJRHMgcGVyIEFkZElkIHZlcmdlYmVuIHdlcmRlbgorCisgICAgICAgIFdlaXRlcmhpbiB2ZXJmdWVnZW4gVW5pdC1PYmpla3RlIHVlYmVyIGRpZSBNb2VnbGljaGtlaXQgZWluZXMKKyAgICAgICAgYXV0b21hdGlzY2hlbiBaZXJmYWxscy4gRGllc2VyIGlzdCBzdGV1ZXJiYXIgdWViZXIgZGllIFByb3BzCisgICAgICAgIFBfVU5JVF9ERUNBWV9JTlRFUlZBTCwgUF9VTklUX0RFQ0FZX1FVT1RBLCBQX1VOSVRfREVDQVlfRkxBR1MsCisgICAgICAgIFBfVU5JVF9ERUNBWV9NSU4uIEhpZXJiZWkgd2lyZCBkZXIgWmVyZmFsbCB2b24gZGVyIEJsdWVwcmludCBkZXMKKyAgICAgICAgVW5pdC1PYmpla3RlcyBnZXN0ZXVlcnQsIHdhcyBhbHMgWmVyZmFsbHNtYXN0ZXIgZnVuZ2llcnQsIHdlaWwgQ2xvbmVzCisgICAgICAgIG5pY2h0IHVuYmVkaW5ndCBpbW1lciBuZW4gUmVzZXQgaGFiZW4gbXVlc3Nlbi4gRGllIGVudHNwcmVjaGVuZGVuCisgICAgICAgIFByb3BzIHNvbGx0ZW4gZGFoZXIgaW4gZGVyIEJsdWVwcmludCBrb25maWd1cmllcnQgd2VyZGVuLiAocy4gTWFucGFnZXMgCisgICAgICAgIHVuZCBCZWlzcGllbCkKKworQkVJU1BJRUxFOgorICAgICAgICBXaXIgYmFzdGVsbiB1bnMgZWluIGdhbnogZWluZmFjaGVzIFVuaXQtT2JqZWt0OgorCisgICAgICAgIGluaGVyaXQgIi9zdGQvdW5pdCI7CisKKyAgICAgICAgcHJvdGVjdGVkIHZvaWQgY3JlYXRlKCkKKyAgICAgICAgeworICAgICAgICAgIGlmKCFjbG9uZXAodGhpc19vYmplY3QoKSkpIHsKKyAgICAgICAgICAgICAgc2V0X25leHRfcmVzZXQoLTEpOworICAgICAgICAgICAgICByZXR1cm47CisgICAgICAgICAgfQorICAgICAgICAgIDo6Y3JlYXRlKCk7CisgICAgICAgICAgU2V0UHJvcChQX0xPTkcsIkRhcyBpc3QgZGllIGtsZWluZSBMZWljaGUgZWluZXIgQW1laXNlLlxuIik7CisgICAgICAgICAgU2V0UHJvcChQX05BTUUsKHsgIkFtZWlzZW5sZWljaGUiLCJBbWVpc2VubGVpY2hlbiIgfSkpOworICAgICAgICAgIFNldFByb3AoUF9BTU9VTlQsMSk7ICAgICAgIC8vIGVzIGhhbmRlbHQgc2ljaCB1bSAxIGVpbnppZ2VzIE9iamVrdAorICAgICAgICAgIFNldENvaW5zUGVyVW5pdHMoMjAsMTApOyAgIC8vIDEwIE9iamVrdGUgc2luZCAyMCBNdWVuemVuIHdlcnQKKyAgICAgICAgICBTZXRHcmFtc1BlclVuaXRzKDEsMTApOyAgICAvLyAxMCBPYmpla3RlIHdpZWdlbiAxIEdyYW1tCisgICAgICAgICAgCisgICAgICAgICAgQWRkU2luZ3VsYXJJZCggKHsgImxlaWNoZSIsImFtZWlzZW5sZWljaGUiIH0pICk7CisgICAgICAgICAgQWRkUGx1cmFsSWQoICh7ICJsZWljaGVuIiwiYW1laXNlbmxlaWNoZW4iIH0pICk7CisgICAgICAgICAgCisgICAgICAgICAgQWRkSWQoIlxuLU1laW5lQW1laXNlbmxlaWNoZSIpOworICAgICAgICB9CisKKyAgICAgICAgV2lyIGJhc3RlbG4gbnVuIGVpbiBVbml0b2JqZWt0LCB3YXMgemVyZmFsbGVuIHNvbGw6CisgICAgICAgIGluaGVyaXQgIi9zdGQvdW5pdCI7CisgICAgICAgIHByb3RlY3RlZCB2b2lkIGNyZWF0ZSgpIHsKKyAgICAgICAgICAgIC8vIEtvbmZpZyBzLm8uIC4uLgorICAgICAgICAgICAgaWYgKCFjbG9uZXAoKSkgeworICAgICAgICAgICAgICAvLyBaZXJmYWxsIGFsbGUgM2gKKyAgICAgICAgICAgICAgU2V0UHJvcChQX1VOSVRfREVDQVlfSU5URVJWQUwsIDMqMzYwMCk7CisgICAgICAgICAgICAgIC8vIGVzIHplcmZhbGxlbiBqZXdlaWxzIDEwJQorICAgICAgICAgICAgICBTZXRQcm9wKFBfVU5JVF9ERUNBWV9RVU9UQSwgMTAwMCk7CisgICAgICAgICAgICAgIC8vIGVzIHNvbGxlbiBtaW4uIDEwIEVpbmhlaXRlbiBqZXdlaWxzIHVlYnJpZ2JsZWliZW4KKyAgICAgICAgICAgICAgU2V0UHJvcChQX1VOSVRfREVDQVlfTUlOLCAxMCk7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKworU0lFSEUgQVVDSDoKKyAgICAgICAgUF9BTU9VTlQsIFBfTkFNRSwgUF9VTklUX0RFQ0FZX0lOVEVSVkFMLCBQX1VOSVRfREVDQVlfUVVPVEEsIAorICAgICAgICBQX1VOSVRfREVDQVlfTUlOLCBQX1VOSVRfREVDQVlfRkxBR1MKKyAgICAgICAgRG9EZWNheSgpLCBkb0RlY2F5TWVzc2FnZSgpLCBTZXRHcmFtc1BlclVuaXRzKCksIFNldENvaW5zUGVyVW5pdHMoKSwgCisgICAgICAgIEFkZFNpbmd1bGFySWQoKSwgQWRkUGx1cmFsSWQoKSwgUXVlcnlDb2luc1BlclVuaXRzKCksCisgICAgICAgIFF1ZXJ5R3JhbXNQZXJVbml0cygpCisgICAgICAgIC9zdGQvdW5pdC5jCisKKzE0LjEwLjIwMDcsIFplc3N0cmEKZGlmZiAtLWdpdCBhL2RvYy9zdGQvdXRpbCBiL2RvYy9zdGQvdXRpbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44YmYzNTI3Ci0tLSAvZGV2L251bGwKKysrIGIvZG9jL3N0ZC91dGlsCkBAIC0wLDAgKzEsMzQgQEAKK0RFRklOSUVSVCBJTjogCisgICAgIC9zdGQvKi5jCisKK0JFU0NIUkVJQlVORzoKKyAgICAgRGllc2UgTWFuZ2VwYWdlIGJlc2NocmVpYnQga2VpbiBFaW56ZWxvYmpla3QsIHNvbmRlcm4gZWluZSBTYW1tbHVuZyB2b24KKyAgICAgUHJvZ3JhbW1lbi4KKyAgICAgSW0gVmVyemVpY2huaXMgL3N0ZC91dGlsLyBsaWVnZW4gbWVocmVyZSBIZWxmZXJrbGFzc2VuLCBkaWUgRnVua3Rpb25lbgorICAgICBiZXJlaXRzdGVsbGVuLCBkaWUgbmljaHQgbnVyIGVpbmVtIE9iamVrdCB2ZXJ3ZW5kZXQgd2VyZGVuLgorCisgICAgIE1vbWVudGFuIHNpbmQgZGllczoKKyAgICAgZXhlY3V0ZXIuYyAgIC0gc3RlbGx0IGVpbmUgRnVua3RvbiBleGVjdXRlX2FueXRoaW5nKCkgYmVyZXQuCisgICAgIGlucHV0LmMgICAgICAtIHN0ZWxsdCBlaW5lIEZ1bnRpb24gaW50cHV0KCkgYmVyZWl0LCB3ZWxjaGUgaW5wdHVfdG8oKQorICAgICAgICAgICAgICAgICAgICBrYXBzZWx0LgorICAgICBwYWdlci5jICAgICAgLSBTdGVsbHQgZGllIEZ1bmt0aW9uIE1vcmUoKSB1bmQgaWhyZSBIZWxmZXIgYmVyZWl0LgorICAgICByaW5nYnVmZmVyLmMgLSBTdGVsbHQgZWluZW4gUmluZ3B1ZmZlciB1bmQgZGllIG5vdHdlbmRpZ2VuIFZlcndhbHR1bmdzLQorICAgICAgICAgICAgICAgICAgICBmdW5rdGlvbmVuIGJlcmVpdC4KKworICAgICBSaW5nYnVmZmVyLmM6CisgICAgIC0tLS0tLS0tLS0tLQorICAgICBEaWVzIGlzdCBlaW4gUHVmZmVyIChBcnJheSkgZWluZXIgYmVzdGltbXRlbiBHcm9lc3NlLiBTb2JhbGQgZXIgdm9sbCBpc3QKKyAgICAgd2lyZCBhdXRvbWF0aXNjaCBkaWUgamV3ZWlscyBhZWx0ZXN0ZW4gRGF0ZW4gdWViZXJzY2hyaWViZW4sIHNvYmFsZCBldHdhcworICAgICBuZXVlcyBoaW5laW5nZXNjaHJpZWJlbiB3aXJkLiBFaW4gUmluZ3B1ZmZlciBtaXQgZWluZXIgR3JvZXNzZSB2b24gMzAKKyAgICAgc3BlaWNoZXJ0IGFsc28gZGllIGxldHp0ZW4gMzAgaGluZWluZ2VzY2hyaWViZW5lbiBPYmpla3RlLgorICAgICAqIENyZWF0ZVJpbmdCdWZmZXIoKTogZXJzdGVsbHQgZWluZW4gbmV1ZW4gUmluZ3B1ZmZlci4KKyAgICAgKiBSZXNpemVSaW5nQnVmZmVyKCk6IGFlbmRlcnQgZGllIEdyb2Vzc2UgZWluZXMgUmluZ3B1ZmZlcnMuCisgICAgICogUmluZ0J1ZmZlclB1dCgpOiBzY2hyZWlidCBlaW4gbmV1ZXMgRGF0dW0gaW4gZGVuIFB1ZmZlci4KKyAgICAgKiBSaW5nQnVmZmVyR2V0KCk6IGxpZWZlcnQgZGllIERhdGVuIGRlcyBSaW5ncHVmZmVycyB6dXJ1ZWNrLgorCitTSUVIRSBBVUNIOgorICAgICBDcmVhdGVSaW5nQnVmZmVyLCBSZXNpemVSaW5nQnVmZmVyLCBSaW5nQnVmZmVyUHV0LCBSaW5nQnVmZmVyR2V0CisKK0xFVFpURSBBZU5ERVJVTkc6CisyMy4wNS4yMDA4LCBaZXNzdHJhCisKZGlmZiAtLWdpdCBhL2RvYy9zdGQvdmVyZXJidW5nc2JhZXVtZSBiL2RvYy9zdGQvdmVyZXJidW5nc2JhZXVtZQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4yZGYyMWNjCi0tLSAvZGV2L251bGwKKysrIGIvZG9jL3N0ZC92ZXJlcmJ1bmdzYmFldW1lCkBAIC0wLDAgKzEsMjkzIEBACisKKyAgVmVyZXJidW5nc2JhZXVtZSBkZXIgQmFzaXMtTVVEbGliCisgID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorCitFaW5mYWNoZSBHZWdlbnN0YWVuZGUKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCitEaWUgZWluZmFjaHN0ZW4gT2JqZWt0ZSBkZXIgQmFzaXMtTXVkTGliLiBEaWUgTW9kdWxlLCBkaWUgdm9uIHRoaW5nLmMKK2dlZXJidCB3ZXJkZW4sIGVudGhhbHRlbiBkaWUgd2ljaHRpZ3N0ZW4gRnVua3Rpb25lbiB1bmQgdHJldGVuIGF1Y2ggaW4KK2RlbiBhbmRlcmVuIFN0YW5kYXJkb2JqZWt0ZW4gaW1tZXIgd2llZGVyIGF1Zi4KKworRGEgZGllIEF1c2dhYmUgZGVzIE5hbWVucyBlaW5lcyBPYmpla3RlcyAoZGllc2VyIHdpcmQgaW4gZGVuCitkZXNjcmlwdGlvbi1Nb2R1bGVuIGRlZmluaWVydCkgaW1tZXIgbWl0IGVpbmVyIERla2xpbmF0aW9uIHZlcmJ1bmRlbiBpc3QsCitmaW5kZXQgbWFuIGluIGplZGVtIE9iamVrdCwgd2VsY2hlcyBlaW4gZGVzY3JpcHRpb24uYyBlcmJ0LCBhdWNoCit0aGluZy9sYW5ndWFnZS4KKwordGhpbmcKKyAgfC0gdGhpbmcvcHJvcGVydGllcyAgICB8IFZlcndhbHR1bmdzZnVua3Rpb25lbiBkZXMgUHJvcGVydHktU3lzdGVtcworICB8LSB0aGluZy9kZXNjcmlwdGlvbiAgIHwgQXVzc2VoZW4sIE5hbWUsIElEcyBkZXMgT2JqZWt0ZXMKKyAgfC0gdGhpbmcvbW92aW5nICAgICAgICB8IEJld2VnZW4gdW5kIFplcnN0b2VyZW4gZGVzIE9iamVrdGVzCisgIHwtIHRoaW5nL2xhbmd1YWdlICAgICAgfCBEZWtsaW5hdGlvbiB2b24gTmFtZW4sIEFkamVrdGl2ZW4gZXRjLjsgUHJvbm9taW5hCisgIHwtIHRoaW5nL2NvbW1hbmRzICAgICAgfCB2b20gT2JqZWt0IGRlZmluaWVydGUgS29tbWFuZG9zCisgIGAtIHRoaW5nL3Jlc3RyaWN0aW9ucyAgfCBHZXdpY2h0OiBzdGFuZGFyZG1hZXNzaWcgMUtnCisKKworUnVlc3R1bmdlbgorLS0tLS0tLS0tLQorCitCaXMgYXVmIHRoaW5nL3Jlc3RyaWN0aW9ucy5jIHZlcmZ1ZWd0IGFybW91ci5jIHVlYmVyIHNhZW10bGljaGUgRnVua3Rpb25hbGl0YWV0CitkaWUgYXVjaCB0aGluZy5jIHp1ciBWZXJmdWVndW5nIHN0ZWxsdC4gWnVzYWV0emxpY2ggZ2lidCBlcyBub2NoIGVpbiBNb2R1bCwKK3dlbGNoZXMgZGllIFJ1ZXN0dW5nIGVyc3QgenVyIFJ1ZXN0dW5nIG1hY2h0OiBhcm1vdXIvY29tYmF0LmMKKworYXJtb3VyICAgICAgICAgICAgICAgICAgfCBldnRsLiBlaW4gIihhbmdlem9nZW4iKSBhbiBLdXJ6YmVzY2hyZWlidW5nIGhhZW5nZW4KKyAgfC0gdGhpbmcvcHJvcGVydGllcyAgIHwgQXVjaCBSdWVzdHVuZ2VuIGhhYmVuIEVpZ2Vuc2NoYWZ0ZW4KKyAgfC0gdGhpbmcvZGVzY3JpcHRpb24gIHwgQXVzc2VoZW4sIE5hbWUsIElEcyBkZXIgUnVlc3R1bmcKKyAgfC0gdGhpbmcvY29tbWFuZHMgICAgIHwgS29tbWFuZG9zIHNpbmQgYXVjaCBtb2VnbGljaAorICB8LSBhcm1vdXIvbW92aW5nICAgICAgfCBCZWltIEJld2VnZW4vWmVyc3RvZXJlbjogUnVlc3R1bmcgYXVzemllaGVuLi4uCisgIHwgICAgYC0gdGhpbmcvbW92aW5nICB8IC4uLnVuZCBkYW5uIGVyc3QgQmV3ZWdlbi9aZXJzdG9lcmVuCisgIHwtIGFybW91ci9jb21iYXQgICAgICB8IFJ1ZXN0dW5nc2tsYXNzZS8tdHlwLCBLYW1wZmZ1bmt0aW9uCisgIGAtIHRoaW5nL2xhbmd1YWdlICAgICB8IHVuZCBub2NoIHdhcyB6dW0gZGVrbGluaWVyZW4uCisKKworV2FmZmVuCistLS0tLS0KKworV2llIFJ1ZXN0dW5nZW4sIHVudGVyc2NoZWlkZW4gc2ljaCBXYWZmZW4gdm9uIGVpbmZhY2hlbiBHZWdlbnN0YWVuZGVuIGltCit3ZXNlbnRsaWNoZW4gbnVyIGR1cmNoIGRpZSBLYW1wZmZ1bmt0aW9uZW4uCisKK3dlYXBvbiAgICAgICAgICAgICAgICAgIHwgZXZ0bC4gZWluICIoZ2V6dWVja3QpIiBhbiBLdXJ6YmVzY2hyZWlidW5nIGhhZW5nZW4KKyAgfC0gd2VhcG9uL21vdmluZyAgICAgIHwgV2FmZmUgYmVpbSBCZXdlZ2VuL1plcnN0b2VyZW4gZXJzdCB3ZWdzdGVja2VuLi4uCisgIHwgICAgYC0gdGhpbmcvbW92aW5nICB8IC4uLnVuZCBkYW5uIGVyc3QgYmV3ZWdlbi96ZXJzdG9lcmVuCisgIHwtIHRoaW5nIChzLm8uKSAgICAgICB8IEFuc29uc3RlbiBhbGxlIHRoaW5nLUVpZ2Vuc2NoYWZ0ZW4KKyAgYC0gd2VhcG9uL2NvbWJhdCAgICAgIHwgV2FmZmVua2xhc3NlLy1hcnQsIFNjaGFkZW5zdHlwLCBLYW1wZmZ1bmt0aW9uCisKKworTGljaHRxdWVsbGVuCistLS0tLS0tLS0tLS0KKworTGljaHRxdWVsbGVuIHNpbmQgKGltIFNpbm5lIGRlciBNdWRMaWIpIG5vcm1hbGUgR2VnZW5zdGFlbmRlLCBkaWUgenVzYWV0emxpY2gKK2RpZSBFaWdlbnNjaGFmdCBoYWJlbiwgZGFzcyBzaWUgbGV1Y2h0ZW4ga29lbm5lbiAodW5kIGF1Y2ggdmVyYnJlbm5lbiBrb2VubmVuKS4KKworbGlnaHRzb3VyY2UgICAgICAgfCBBbGxlcywgd2FzIHp1bSBMZXVjaHRlbiBub2V0aWcgaXN0CisgIGAtIHRoaW5nIChzLm8uKSB8IGFuc29uc3RlbiBlaW4gZ2FueiBub3JtYWxlciBHZWdlbnN0YW5kCisKKwordW5pdC1PYmpla3RlCistLS0tLS0tLS0tLS0KKwordW5pdC1PYmpla3RlIHNpbmQgR2VnZW5zdGFlbmRlLCBiZWkgZGVuZW4gZXMgc2lubnZvbGwgaXN0LCBkYXNzIGVpbiBlaW56ZWxuZXMKK09iamVrdCBlaW5lIGdld2lzc2UgQW56YWhsIHZvbiBnbGVpY2hhcnRpZ2VuIE9iamVrdGVuIHJlcHJhZXNlbnRpZXJ0LiBEYXMKK2Jlc3RlIEJlaXNwaWVsIGhpZXJmdWVyIGlzdCBkYXMgbGllYmUgR2VsZDogc3RhdHQgMTAwMCBlaW56ZWxuZXIgTXVlbnplbiBpbQorSW52ZW50b3J5IHp1IGhhYmVuLCBoYXQgbWFuIG51ciBlaW4gZWluemlnZXMgR2VsZG9iamVrdCwgZGFzIGVpbmVyIE1lbmdlIHZvbgorMTAwMCBNdWVuemVuIGVudHNwcmljaHQgKGRpZSBiZWkgS2F1Zi0vVmVya2F1ZnNha3Rpb25lbiB1bSBlaW5lIGVudHNwcmVjaGVuZGUKK01lbmdlIGVybmllZHJpZ3Qgb2RlciBlcmhvZWh0IHdpcmQpLgorSGllcmR1cmNoIHdpcmQgYSkgZGllIFVlYmVyc2ljaHRsaWNoa2VpdCBlcmhvZWh0IHVuZCBiKSBuYXR1ZXJsaWNoIG1hc3NpZworU3BlaWNoZXIgZ2VzcGFydC4KKwordW5pdCAgICAgICAgICAgICAgIHwgYWxsZSB1bml0LUVpZ2Vuc2NoYWZ0ZW4gKEdld2ljaHQsIE1lbmdlLCBCZXdlZ2VuLCAuLi4pCisgIGAtIHRoaW5nIChzLm8uKSAgfCBhbnNvbnN0ZW4gc2luZCBlcyBub3JtYWxlIEdlZ2Vuc3RhZW5kZQorCisKK1NwZWxsYm9va3MKKy0tLS0tLS0tLS0KKworRnVlciBHaWxkZW5wcm9ncmFtbWllcmVyIGlzdCBkaWVzIGRhcyBHcnVuZG9iamVrdCBmdWVyIGRhcyBaYXViZXJ2ZXJ6ZWljaG5pcworZGVyIEdpbGRlLgorQUNIVFVORzogT2J3b2hsIHRoaW5nLmMgZ2VlcmJ0IHdpcmQsIGlzdCBkYXMgU3BlbGxib29rIG5pY2h0IHp1bSBjbG9uZW4gdW5kCisidW50ZXIgZGVuIEFybSBrbGVtbWVuIiBnZWRhY2h0ISBWaWVsbWVociBzdGVsbHQgdGhpbmcuYyBoaWVyIGltIHdlc2VudGxpY2hlbiAKK251ciBkYXMgUHJvcGVydHktIHVuZCBkYXMgU3ByYWNobW9kdWwgenVyIFZlcmZ1ZWd1bmchCisKK3NwZWxsYm9vayAgICAgICAgICAgICAgICB8IEFsbGdlbWVpbmUgRnVua3Rpb25lbiBmdWVyIFphdWJlcnNwcnVlY2hlCisgIHwtIHRoaW5nIChzLm8uKSAgICAgICAgfCBoaWVyIG51ciB3Zy4gUHJvcGVydGllcyB1bmQgRGVrbGluYXRpb25lbgorICBgLSByZXN0cmljdGlvbl9jaGVja2VyIHwgZnVlciBFaW5zY2hyYWVua3VuZ2VuIGJlaW0gWmF1YmVybgorCisKK0JlaGFlbHRlcgorLS0tLS0tLS0tCisKK0RpZSBiaXNoZXIgYmVzY2hyaWViZW5lbiBPYmpla3RlIGthbm4gbWFuIHp3YXIgbWl0IHNpY2ggaGVydW10cmFnZW4gKGF1c3NlcgorU3BlbGxib29rcyksIGFiZXIgbWFuIGthbm4gbmljaHRzIGhpbmVpbnN0ZWNrZW4uIEhpZXJ6dSBzaW5kIGVpbmlnZSB3ZWl0ZXJlCitGdW5rdGlvbmVuIG5vZXRpZywgZGllIGNvbnRhaW5lci5jIHp1ciBWZXJmdWVndW5nIHN0ZWxsdC4KK0ltIHdlc2VudGxpY2hlbiBzaW5kIGRhcyBpbiBjb250YWluZXIvcmVzdHJpY3Rpb25zLmMgRnVua3Rpb25lbiB6dW0gQXVzLQord2FlaGxlbiB2b24gT2JqZWt0ZW4gaW0gQmVoYWVsdGVyLCB6dW0gVGVzdGVuLCBvYiBkZXIgQmVoYWVsdGVyIG5vY2ggd2VpdGVyZQorT2JqZWt0ZSBhdWZuZWhtZW4ga2FubiAoZ2V3aWNodHNhYmhhZW5naWcpIHVuZCB6dXIgRXJtaXR0bHVuZyBkZXMgR2VzYW10LQorZ2V3aWNodHMgZGVzIEJlaGFlbHRlcnMuCitJbiBjb250YWluZXIvZGVzY3JpcHRpb24uYyB3aXJkIGRlciBJbmhhbHQgZGVzIEJlaGFlbHRlcnMgaW4gZWluZSBCZXNjaHJlaWJ1bmcKK3VtZ2V3YW5kZWx0LgorCitjb250YWluZXIKKyAgfC0gdGhpbmcvcHJvcGVydGllcyAgICAgICAgfCBEQVMgemVudHJhbGUgTW9kdWwuLi4KKyAgfC0gdGhpbmcvbW92aW5nICAgICAgICAgICAgfCBCZXdlZ2VuL1plcnN0b2VyZW4gZGVzIEJlaGFlbHRlcnMKKyAgfC0gdGhpbmcvY29tbWFuZHMgICAgICAgICAgfCBLb21tYW5kb3Mgc2luZCBtb2VnbGljaAorICB8LSBjb250YWluZXIvZGVzY3JpcHRpb24gICB8IEJlc2NocmVpYnVuZyBkZXMgSW5oYWx0cworICB8ICAgIGAtIHRoaW5nL2Rlc2NyaXB0aW9uICB8IExhbmctIHVuZCBLdXJ6YmVzY2hyZWlidW5nCisgIHwtIHRoaW5nL2xhbmd1YWdlICAgICAgICAgIHwgRGVrbGluYXRpb25zbW9kdWwKKyAgYC0gY29udGFpbmVyL3Jlc3RyaWN0aW9ucyAgfCBHZXNhbXRnZXdpY2h0LCBPYmpla3RhdXN3YWhsCisgICAgICAgYC0gdGhpbmcvcmVzdHJpY3Rpb25zIHwgU3RhbmRhcmRnZXdpY2h0OiAxS2cKKworTGVpY2hlbgorLS0tLS0tLQorCitMZWljaGVuIHNpbmQgQmVoYWVsdGVyIG1pdCBkZXIgenVzYWV0emxpY2hlbiBFaWdlbnNjaGFmdCwgZGFzcyBzaWUgbWl0IGRlcgorWmVpdCB6ZXJmYWxsZW4uIEF1c3NlcmRlbSBnZWJlbiBzaWUgZ2dmLiBub2NoIGVpbmUgTWVsZHVuZyB1ZWJlciBkZW4KK01vZXJkZXJrYW5hbCBhdXMKKworY29ycHNlICAgICAgICAgICAgICAgIHwgWmVyZmFsbGVuLCBNb2VyZGVybWVsZHVuZworICBgLSBjb250YWluZXIgKHMuby4pIHwgc29uc3Qgbm9ybWFsZXIgQmVoYWVsdGVyCisKKworUmFldW1lIHVuZCBpaHJlIEFia29lbW1saW5nZQorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCitSYWV1bWUgc2luZCBwcmluemlwaWVsbCBCZWhhZWx0ZXIgbWl0IExhbmctIHVuZCBLdXJ6YmVzY2hyZWlidW5nIHZvbiBJTk5FTgordW5kIHdlaXRlcmVuIHVudGVyc3VjaGJhcmVuIERldGFpbHMgKGF1Y2ggbGVzYmFyZSBEZXRhaWxzKSBzb3dpZQorQXVzZ2FlbmdlbiB1bmQgZGVyIE1vZWdsaWNoa2VpdCB2b3JkZWZpbmllcnRlIE9iamVrdGUgaW0gUmF1bSB6dSBwbGF6aWVyZW4uCisKK3Jvb20KKyAgfC0gdGhpbmcvcHJvcGVydGllcyAgICAgfCBFaWdlbnNjaGFmdGVuIGRlcyBSYXVtZXMKKyAgfC0gdGhpbmcvbGFuZ3VhZ2UgICAgICAgfCBkYXMgb2JsaWdhdG9yaXNjaGUgU3ByYWNobW9kdWwKKyAgfC0gcm9vbS9tb3ZpbmcgICAgICAgICAgfCBudXIgWmVyc3RvZXJlbjsgS0VJTighKSBCZXdlZ2VuCisgIHwtIHJvb20vcmVzdHJpY3Rpb25zICAgIHwgUmFldW1lIHdlcmRlbiBuaWUgdm9sbAorICB8ICAgIGAtIGNvbnRhaW5lci9yZXN0cmljdGlvbnMgIHwgc29uc3QgZGllIGdsZWljaGUgRnVua3Rpb25hbGl0YWV0IHdpZQorICB8CSAgICBgLSB0aGluZy9yZXN0cmljdGlvbnMgfCBiZWltIG5vcm1hbGVuIEJlaGFlbHRlcgorICB8LSByb29tL2Rlc2NyaXB0aW9uICAgICB8IFJhdW1iZXNjaHJlaWJ1bmcsIERldGFpbHMsIGV0Yy4KKyAgfCAgICBgLSBjb250YWluZXIvZGVzY3JpcHRpb24gICB8IEJlc2NocmVpYnVuZyBkZXMgSW5oYWx0cworICB8CSAgICBgLSB0aGluZy9kZXNjcmlwdGlvbiAgfCBCZXNjaHJlaWJ1bmcgdm9uIGF1c3NlbiAoc2VsdGVuIHNpY2h0YmFyKQorICB8LSByb29tL2V4aXRzICAgICAgICAgICB8IFZlcndhbHR1bmcgZGVyIEF1c2dhZW5nZQorICB8LSByb29tL2NvbW1hbmRzICAgICAgICB8IG5vdGlmeV9mYWlsKClzIGZ1ZXIgImxpZXMiLCAic3VjaGUiLCAic3VjaCIKKyAgfCAgICBgLSB0aGluZy9jb21tYW5kcyAgfCBzb25zdCBub3JtYWxlIEtvbW1hbmRvYmVoYW5kbHVuZworICB8LSByb29tL2l0ZW1zICAgICAgICAgICB8IFZlcndhbHR1bmcgdm9uIE9iamVrdGVuLCBkaWUgaW0gUmF1bSBzZWluIHNvbGxlbgorICBgLSByb29tL2Rvb3JzICAgICAgICAgICB8IFR1ZXJlbiAoYmVzb25kZXJlIEF1c2dhZW5nZSkKKworCitEaWUgS25laXBlIGVyd2VpdGVydCBkZW4gU3RhbmRhcmRyYXVtIHVtIEZ1bmt0aW9uZW4genVyIERlZmluaXRpb24gZGVyCitTcGVpc2VuIHVuZCBHZXRyYWVua2Ugc293aWUgdW0gQmVmZWhsZSB6dW0gQmVzdGVsbGVuIHVuZCBBdXNnZWJlbi4KKworcHViCisgIGAtIHJvb20gKHMuby4pCisKKworQXVjaCBkZXIgTGFkZW4gYmF1dCBkaXJla3QgYXVmIGRlbSBTdGFuZGFyZHJhdW0gYXVmLiBIaWVyIHdlcmRlbiBub2NoIGRpZQordWVibGljaGVuIEVpbi0gdW5kIFZlcmthdWZzYmVmZWhsZSB6dXIgVmVyZnVlZ3VuZyBnZXN0ZWxsdC4KK0plZGVyIExhZGVuIGJlbm9ldGlndCB6dXNhZXR6bGljaCBlaW5lbiBTcGVpY2hlciwgaW4gZGVtIHZlcmthdWZ0ZSBPYmpla3RlCitnZWxhZ2VydCB3ZXJkZW4uIFdlbm4gZGVyIExhZGVuIHNjaG9uIGJlaW0gZXJzdGVuIEJldHJldGVuIHVlYmVyIGVpbgorZ2V3aXNzZXMgV2FyZW5zb3J0aW1lbnQgdmVyZnVlZ2VuIHNvbGwsIGthbm4gbWFuIGRpZSBtaXQgQWRkSXRlbSgpLUF1ZnJ1ZmVuCitpbSBTcGVpY2hlciBiZXdlcmtzdGVsbGlnZW4uCisKK2xhZGVuCisgIGAtIHJvb20gKHMuby4pCisKK3N0b3JlCisgIHwtIHRoaW5nL3Byb3BlcnRpZXMgIHwgbm9ldGlnIGZ1ZXIgcm9vbS9pdGVtcy5jCisgIGAtIHJvb20vaXRlbXMgICAgICAgIHwgdm9yZGVmaW5pZXJ0ZSBPYmpla3RlIGltIFNwZWljaGVyCisKKworRGllIFBvc3QgaXN0IHZvbiBkZXIgUHJvZ3JhbW1pZXJ1bmcgaGVyIGdlbmF1IHNvIHp1IGJlaGFuZGVsbiB3aWUgZWluCitub3JtYWxlciBSYXVtLiBEaWUgUG9zdGthYmluZW4gd2VyZGVuIGF1dG9tYXRpc2NoIHp1ciBWZXJmdWVndW5nIGdlc3RlbGx0OworbWFuIGJyYXVjaHQgc2ljaCBpbiBkZXIgSGluc2ljaHQgdW0gbmljaHRzIHp1IGt1ZW1tZXJuLgorCitwb3N0CisgIGAtICguLi4pIHJvb20KKworCitTY2hpZmZlIHVuZCBhZWhubGljaGUgVHJhbnNwb3J0ZXIgd2VyZGVuIGR1cmNoICJiZXdlZ2xpY2hlIiBSYWV1bWUgcmVhbGlzaWVydC4KK1NvIGhhdCBtYW4gYWxsZSBCZXNjaHJlaWJ1bmdzbW9lZ2xpY2hrZWl0ZW4gZWluZXMgUmF1bWVzIHp1ciBWZXJmdWVndW5nIHVuZAora2FubiAod2llIGJlaSBkZXIgSm9sbGUgZ2VzY2hlaGVuKSBBdXNnYWVuZ2UgaW4gd2VpdGVyZSBSYXVtZSBkZXMgVHJhbnNwb3J0ZXJzCitsZWdlbiAoZGllc2Ugc2luZCBub3JtYWxlIFJhZXVtZSwgS0VJTkUgVHJhbnNwb3J0ZXIhKS4KK0Rlc3dlaXRlcmVuIHNpbmQgVHJhbnNwb3J0ZXIgZGllIGVpbnppZ2VuIChTdGFuZGFyZC0pUmF1bWUsIGJlaSBkZW5lbiBtYW4KK2F1Y2ggZGllIGFldXNzZXJlIExhbmctIHVuZCBLdXJ6YmVzY2hyZWlidW5nIHp1IHNlaGVuIGJla29tbXQsIHdlaWwgbWFuCituaWNodCBudXIgaW4gZWluZW0gVHJhbnNwb3J0ZXIgc2VpbiBrYW5uLCBzb25kZXJuIGF1Y2ggZGFuZWJlbiBzdGVoZW4ga2Fubi4KKwordHJhbnNwb3J0ICAgICAgICAgfCBGdW5rdGlvbmVuIHp1ciBGZXN0bGVndW5nIGRlciBSb3V0ZSwgQW4tIHVuZCBBYmxlZ2VuCisgIHwtIHJvb20gKHMuby4pICB8IGRpZSBub3JtYWxlbiBSYXVtZnVua3Rpb25lbgorICBgLSB0aGluZy9tb3ZpbmcgfCB1bmQgaGllciBzdGVja3QgZGllIEJld2VnbGljaGtlaXQKKworCitHaWxkZW4KKy0tLS0tLQorCitHaWxkZW4gZ2lidCBlcyBpbiB6d2VpIEF1c2Z1ZWhydW5nZW46IGVpbm1hbCBhbHMgZWluZmFjaGVzIEdpbGRlbm9iamVrdCwgZGFubgorYWJlciBhdWNoIGFscyBHaWxkZW5yYXVtICh3aWUgekIuIGRpZSBBYmVudGV1cmVyZ2lsZGUpLgorV2FlaHJlbmQgZGFzIEdpbGRlbm9iamVrdCAoZ2lsZGVuX29iKSBGdW5rdGlvbmVuIHp1bSBMZXJuZW4gdm9uIEZhZWhpZ2tlaXRlbgordW5kIFphdWJlcnNwcnVlY2hlbiwgZGVtIEdpbGRlbmVpbi0gdW5kIC1hdXN0cml0dCBzb3dpZSB6dW0gZ2lsZGVuaW50ZXJuZW4KK0F1ZnN0aWVnIHp1ciBWZXJmdWVndW5nIHN0ZWxsdCAod2FzIHpCLiBhdWNoIHZvbiBlaW5lbSBOUEMgYXVzZ2V1ZWJ0IHdlcmRlbgora29lbm50ZSksIHZlcmZ1ZWd0IGRlciBHaWxkZW5yYXVtIHp1c2FldHpsaWNoIG5vY2ggdWViZXIgRnVua3Rpb25lbiB6dW0KK25vcm1hbGVuIFN0dWZlbmF1ZnN0aWVnIGF1ZmdydW5kIHZvbiBBYmVudGV1ZXItIHVuZCBFcmZhaHJ1bmdzcHVua3RlbiwgZGllCitRdWVzdGxpc3RlIHVuZCBkaWUgS29zdGVuYWJmcmFnZS4KKworZ2lsZGVuX29iICAgICAgICAgICAgICAgIHwgRWluLS9BdXN0cml0dCwgTGVybmVuLCBHaWxkZW5hdWZzdGllZworICBgLSByZXN0cmljdGlvbl9jaGVja2VyIHwgQmVzY2hyYWVua3VuZ2VuIGJlaSBvYmlnZW4gQWt0aW9uZW4KKworZ2lsZGVuX3Jvb20KKyAgfC0gZ2lsZGUgICAgICAgICAgICAgICB8IFN0dWZlbmF1ZnN0aWVnLCBRdWVzdGxpc3RlLCBLb3N0ZW4KKyAgfCAgICBgLSByb29tIChzLm8uKSAgICB8IG5vcm1hbGUgUmF1bWZ1bmt0aW9uZW4KKyAgYC0gZ2lsZGVuX29iIChzLm8uKSAgICB8IEdpbGRlbmF1ZnN0aWVnIGV0Yy4KKworTlBDcworLS0tLQorCitEYXMgT3BmZXIuIFp1bWluZGVzdCBtZWlzdGVucy4uLgorCitucGMKKyAgfC0gdGhpbmcvcHJvcGVydGllcyAgICAgICAgICAgIHwgRWlnZW5zY2hhZnRlbiBkZXMgTlBDCisgIHwtIGxpdmluZy9kZXNjcmlwdGlvbiAgICAgICAgICB8IEF1c2dhYmUgZGVzIEdlc3VuZGhlaXRzenVzdGFuZGVzLi4uCisgIHwgICAgYC0gY29udGFpbmVyL2Rlc2NyaXB0aW9uICB8IC4uLnp1c2FldHpsaWNoIHp1IHNlaW5lbSBJbmhhbHQuLi4KKyAgfAkgICAgYC0gdGhpbmcvZGVzY3JpcHRpb24gfCAuLi51bmQgc2VpbmVyIEJlc2NocmVpYnVuZworICB8LSBsaXZpbmcvbGlmZSAgICAgICAgICAgICAgICAgfCBEaWUgTGViZW5zZnVua3Rpb25lbiwgRXNzZW4sIFRyaW5rZW4sIEdpZnQKKyAgfC0gbGl2aW5nL2F0dHJpYnV0ZXMgICAgICAgICAgIHwgRGllIFZlcndhbHR1bmcgZGVyIFN0YXRzCisgIHwtIGxpdmluZy9tb3ZpbmcgICAgICAgICAgICAgICB8IEJld2VnZW4gdm9uIExlYmV3ZXNlbgorICB8LSBsaXZpbmcvc2tpbGxzICAgICAgICAgICAgICAgfCBGdW5rdGlvbmVuIGZ1ZXIgRmFlaGlna2VpdGVuIHVuZCBTcHJ1ZWNoZQorICB8ICAgIGAtIGxpdmluZy9zdGRfc2tpbGxzICAgICAgfCB1bmQgZWluaWdlIFN0YW5kYXJkZmFlaGlna2VpdGVuCisgIHwtIG5wYy9jb21iYXQgICAgICAgICAgICAgICAgICB8IE5QQy1zcGV6aWZpc2NoZSBLYW1wZmZ1bmt0aW9uZW4KKyAgfCAgICBgLSBsaXZpbmcvY29tYmF0ICAgICAgICAgIHwgZGVyIEthbXBmIGFuIHNpY2gKKyAgfC0gbnBjL2NoYXQgICAgICAgICAgICAgICAgICAgIHwgU3BydWVjaGUgYSBsYSBBbmR5CisgIHwtIG5wYy9jb21tICAgICAgICAgICAgICAgICAgICB8IEJhc2lza29tbXVuaWthdGlvbjogInNhZyIsICJlY2hvIiwgImVtb3RlIgorICB8LSBjb250YWluZXIvcmVzdHJpY3Rpb25zICAgICAgfCB3aWUgYmVpIEJlaGFlbHRlcm4KKyAgfCAgICBgLSB0aGluZy9yZXN0cmljdGlvbnMKKyAgfC0gdGhpbmcvbGFuZ3VhZ2UgICAgICAgICAgICAgIHwgb2JsaWdhdG9yaXNjaC4uLgorICB8LSBucGMvaW5mbyAgICAgICAgICAgICAgICAgICAgfCBBbnR3b3J0ZW4gYXVmIEZyYWdlbgorICB8LSBucGMvcHV0X2FuZF9nZXQgICAgICAgICAgICAgfCBSZWFrdGlvbiBhdWYgZXJoYWx0ZW5lIEdlZ2Vuc3RhZW5kZQorICB8ICAgIGAtIGxpdmluZy9wdXRfYW5kX2dldCAgICAgfCBHZWJlbiB1bmQgTmVobWVuIHZvbiBPYmpla3RlbgorICBgLSBucGMvZ3VhcmQgICAgICAgICAgICAgICAgICAgfCBmdWVyIFdhY2gtTlBDcworCitEZXIgaW50ZWxsaWdlbnRlIE5QQyBiZWZpbmRldCBzaWNoIG5vY2ggaW4gZGVyIEVudHdpY2tsdW5nLgorCitpbnBjCisgIHwtIG5wYyAocy5vLikgIHwgRXJzdCBtYWwgZWluIGdhbnogbm9ybWFsZXIgTlBDLi4uCisgIHwtIGlucGMvbm9iYW5rIHwgLi4uZGVyIGdlZ2VuIEJhbmt6d2VpdGlzIHZvcmdlaGVuIGthbm4uLi4KKyAgfCAgICBgLSBwbGF5ZXIvbW9uZXloYW5kbGVyIHwgLi4udW5kIHNlbGJzdCBHZWxkIG1pdHNjaGxlcHB0OyAuLi4KKyAgfC0gc2VsZWN0ICAgICAgfCAuLi5kaWUgYmVzdGUgQXVzcnVlc3R1bmcgZXJrZW5udCB1bmQgYXVjaCBiZW51dHp0Li4uCisgIGAtIGJvb3ppbmcgICAgIHwgLi4udW5kIGluIGRlciBLbmVpcGUgZGllIGJlc3RlIEhlaWxtb2VnbGljaGtlaXQgZmluZGV0IQorCisKK1NwaWVsZXItIHVuZCBNYWdpZXJzaGVsbAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK3NoZWxscy9tYWdpZXIgICAgICAgICAgICAgICAgICB8IEhpZXIgYXVjaCBub2NoIFNwaWVsZXJzaGVsbHM6CisgIHwtIHBsYXllci9iYXNlICAgICAgICAgICAgICAgfCBFaW5sb2dnZW4sIEdydW5kZnVua3Rpb25lbgorICB8ICAgIHwtIHBsYXllci9yZXN0cmljdGlvbnMgIHwgTWF4aW1hbGUgWnVsYWR1bmcgKFN0YWVya2UpLCBJbnNlcnRIb29rcworICB8ICAgIHwgICAgYC0gY29udGFpbmVyL3Jlc3RyaWN0aW9ucyAgIHwgTWF4aW1hbGdld2ljaHQsIFp1bGFkdW5nc3Rlc3QKKyAgfCAgICB8CSBgLSB0aGluZy9yZXN0cmljdGlvbnMgIHwgRGVmYXVsdGdld2ljaHQKKyAgfCAgICB8LSBsaXZpbmcvYXR0cmlidXRlcyAgICB8IFN0YXRzCisgIHwgICAgfC0gbGl2aW5nL2NvbWJhdCAgICAgICAgfCBLYW1wZmZ1bmt0aW9uZW4KKyAgfCAgICB8LSBsaXZpbmcvcHV0X2FuZF9nZXQgICB8IE5laG1lbiB1bmQgR2ViZW4gdm9uIE9iamVrdGVuCisgIHwgICAgfC0gdGhpbmcvcHJvcGVydGllcyAgICAgfCBEQVMgemVudHJhbGUgTW9kdWwuLi4KKyAgfCAgICB8LSB0aGluZy9sYW5ndWFnZSAgICAgICB8IERla2xpbmF0aW9uZW4KKyAgfCAgICB8LSBwbGF5ZXIvZGVzY3JpcHRpb24gICB8IFdhZmZlL1J1ZXN0dW5nZW4gYXVzZ2ViZW4KKyAgfCAgICB8ICAgIGAtIGxpdmluZy9kZXNjcmlwdGlvbiAgICAgICAgICAgfCBHZXN1bmRoZWl0c3p1c3RhbmQgYW56ZWlnZW4KKyAgfCAgICB8CSBgLSBjb250YWluZXIvZGVzY3JpcHRpb24gICB8IEVybWl0dGx1bmcgZGVzIEluaGFsdHMKKyAgfCAgICB8CSAgICAgIGAtIHRoaW5nL2Rlc2NyaXB0aW9uICB8IEt1cnotIHVuZCBMYW5nYmVzY2hyZWlidW5nOyBJRHMKKyAgfCAgICB8LSBwbGF5ZXIvbW92aW5nICAgICAgICB8IEJld2VnZW4vWmVyc3RvZXJlbjogWnVzYXR6Y2hlY2tzCisgIHwgICAgfCAgICBgLSBsaXZpbmcvbW92aW5nICAgfCBCZXdlZ2VuL1plcnN0b2VyZW4gdm9uIExlYmV3ZXNlbgorICB8ICAgIHwtIHBsYXllci9saWZlICAgICAgICAgIHwgWnVzYXR6Y2hlY2tzIGJlaSBMZWJlbnNmdW5rdGlvbmVuCisgIHwgICAgfCAgICBgLSBsaXZpbmcvbGlmZSAgICAgfCBhbGxnZW1laW5lIExlYmVuc2Z1bmt0aW9uZW4KKyAgfCAgICB8LSBwbGF5ZXIvY29tbSAgICAgICAgICB8IGFsbGdlbWVpbmUgS29tbXVuaWthdGlvbgorICB8ICAgIHwgICAgYC0gcGxheWVyL2NoYW5uZWwgIHwgS29tbXVuaWthdGlvbiB1ZWJlciBkaWUgS2FuYWVsZQorICB8ICAgIHwtIHBsYXllci9tb25leWhhbmRsZXIgIHwgR2VsZHZlcndhbHR1bmcgKGF1Y2ggZnVlciBOUENzIGdlZWlnbmV0KQorICB8ICAgIHwtIHBsYXllci9jb21tYW5kICAgICAgIHwgQWxpYXNlLCBIaXN0b3J5LCBQYXJzZXIKKyAgfCAgICB8LSBsaXZpbmcvc2tpbGxzICAgICAgICB8IGFsbGcuIEZhZWhpZ2tlaXRzZnVua3Rpb25lbgorICB8ICAgIHwgICAgYC0gbGl2aW5nL3N0ZF9za2lsbHMgfCBTdGFuZGFyZGZhZWhpZ2tlaXRlbgorICB8ICAgIHwtIHBsYXllci9xdWVzdHMgICAgICAgIHwgVmVyd2FsdHVuZyBnZWxvZXN0ZXIgQWJlbnRldWVyCisgIHwgICAgfC0gcGxheWVyL3BvdGlvbiAgICAgICAgfCBWZXJ3YWx0dW5nIGdlZnVuZGVuZXIgWmF1YmVydHJhZW5rZQorICB8ICAgIHwtIHBsYXllci9zb3VsICAgICAgICAgIHwgU2VlbGVua29tbWFuZG9zIChoaWxmZSB2ZXJiZW4gOykKKyAgfCAgICB8LSBwbGF5ZXIvdmlld2NtZCAgICAgICB8IFVudGVyc3VjaGVuIGV0Yy4KKyAgfCAgICB8LSBtb3JlICAgICAgICAgICAgICAgICB8IE1vcmUoKSBmdWVyIGxhbmdlIFRleHRlCisgIHwgICAgYC0gdXNlcl9maWx0ZXIgICAgICAgICAgfCBIaWxmc21vZHVsIGZ1ZXIgImt3ZXIgaW4gbXVlbnN0ZXIiIGV0Yy4KKyAgfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IEFiIGhpZXI6IE1hZ2llcnNoZWxsCisgIHwtIHNoZWxscy9maWxlc3lzL2ZpbGVzeXMgICAgICAgICB8IGFsbGdlbWVpbmVzIE1vZHVsIHp1ciBEYXRlaWJlaGFuZGx1bmcKKyAgfCAgICB8LSBzaGVsbHMvZmlsZXN5cy9tYW51YWwgICAgIHwgZGVyICJoaWxmZSItQmVmZWhsIGRlciBNYWdpZXIKKyAgfCAgICB8LSBzaGVsbHMvZmlsZXN5cy9wcmltaXRpdmVzIHwgbG93LWxldmVsLVJvdXRpbmVuCisgIHwgICAgfC0gc2hlbGxzL2ZpbGVzeXMvYXN5bmNocm9uICB8IHp1ciBWZXJtZWlkdW5nIHZvbiBMYWdzCisgIHwgICAgYC0gc2hlbGxzL2ZpbGVzeXMvbWFrZSAgICAgICB8IGtvbWZvcnRhYmxlcyB1cGRhdGVuIHZvbiBPYmpla3RlbgorICBgLSBwbGF5ZXIvb2JqZWN0cyAgICAgICAgICAgICAgICAgfCBPYmpla3RlIGNsb25lbiwgdXBkYXRlbiwgemVyc3RvZXJlbgpkaWZmIC0tZ2l0IGEvZG9jL3N0ZC92aXJ0dWFsX2NvbXBpbGVyIGIvZG9jL3N0ZC92aXJ0dWFsX2NvbXBpbGVyCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmFjOGVjM2QKLS0tIC9kZXYvbnVsbAorKysgYi9kb2Mvc3RkL3ZpcnR1YWxfY29tcGlsZXIKQEAgLTAsMCArMSw4MiBAQAorV2FzIHNpbmQgJ3ZpcnR1ZWxsZSBPYmpla3RlJz8KKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09CitWaXJ0dWVsbGUgT2JqZWt0ZSBzaW5kIE9iamVrdGUgZnVlciBkaWUgZXMga2VpbmUgZXhwbGl6aXRlIFF1ZWxsZGF0ZWkgZ2lidC4KK0Fuc29uc3RlbiBzaW5kIGRpZSBPYmpla3RlIChmYXN0KSBnZW5hdXNvIHdpZSBhbGxlIGFuZGVyZW4gYXVjaC4KKworV2FzIG1hY2h0IGVpbiBWaXJ0dWFsIENvbXBpbGVyPworPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorV2VubiBkZXIgRHJpdmVyIGVpbiBPYmpla3QgIi9wZmFkL29iamVrdCIgbGFkZW4gc29sbCwgZ3Vja3QgZXIgZXJzdG1hbCBuYWNoLAorb2IgZXMgc28gZWluIEZpbGUgKC9wZmFkL29iamVrdC5jKSBhdWYgZGVyIFBsYXR0ZSBnaWJ0LiBXZW5uIGphLCBsYWVkdCBlciBlcworZ2FueiBub3JtYWwuIFdlbm4gbmljaHQsIHBhc3NpZXJ0IGZvbGdlbmRlczoKKworMS4gRGVyIERyaXZlciBmcmFndCBkZW4gTWFzdGVyIGRlciBNdWRsaWIgbmFjaCBkZW0gT2JqZWt0LgorMi4gRGVyIE1hc3RlciBndWNrdCBpbSBWZXJ6ZWljaG5pcyAiL3BmYWQvIiBuYWNoLCBvYiBlcyBlaW4gdmlydHVhbF9jb21waWxlci5jCisgICBkb3J0IGdpYnQuIFdlbm4gamEsIHdpcmQgZGllc2VzIHZpcnR1YWxfY29tcGlsZXIuYyBnZWZyYWd0LCBvYiBlcyBzaWNoIAorICAgZGFmdWVyIHp1c3RhZW5kaWcgZnVlaGx0LCBlaW4gT2JqZWt0IG1pdCBkZW0gTmFtZW4gIi9wZmFkL29iamVrdCIgenUgCisgICBlcnpldWdlbi4KKzMuIFdlbm4gc2ljaCBkZXIgVkMgZnVlciB6dXN0YWVuZGlnIGZ1ZWhsdCwgY2xvbnQgZXIgZWluIE9iamVrdCAoei5CLiBzZWluCisgICBTdGFuZGFyZG9iamVrdCwgInN0ZG9iLmMiKSwga29uZmlndXJpZXJ0IGVzIGV2dGwuIG5vY2ggZWluIGJpc3NjaGVuIHVuZCAKKyAgIGdpYnQgZXMgYW4gZGVuIE1hc3RlciB6dXJ1ZWNrLiBEYXMgZXJ6ZXVndGUgT2JqZWt0IGhlaXNzdCBhbiBkaWVzZXIgU3RlbGxlCisgICB6LkIuICIvcGZhZC9zdGRvYiM0MiIgKHdlaWwgZXMgZWluIENsb24gdm9uICIvcGZhZC9zdGRvYiIgaXN0KS4KKzQuIERlciBNYXN0ZXIgZ2lidCBkaWVzZXMgZXJ6ZXVndGUgT2JqZWt0IGFuIGRlbiBEcml2ZXIgenVydWVjay4KKzUuIERlciBEcml2ZXIgYmVuZW5udCBkYXMgdm9tIE1hc3RlciBlcmhhbHRlbmUgT2JqZWt0ICIvcGZhZC9zdGRvYiM0MiIgdW0gaW4KKyAgIGRhcyBnZXd1ZW5zY2h0ZSBPYmpla3QgIi9wZmFkL29iamVrdCIuIFZvbiBkaWVzZW0gTW9tZW50IGFuIGlzdCBlcywgYWxzIG9iCisgICBlcyBlaW4gRmlsZSAiL3BmYWQvb2JqZWt0LmMiIGdhZWJlLCB3YXMgZGllc2VzIE9iamVrdCBkZWZpbmllcnQuCisKK0RhcyBpc3QgZ3J1bmRzYWV0emxpY2ggZGFzLCB3YXMgZWluIFZDIG1hY2h0LgorCitXYXMgbWFjaHQgZGVyIFZDIGluIC9zdGQvPworPT09PT09PT09PT09PT09PT09PT09PT09PT0KK0Vyc3RtYWwgZGFzIG9iZW4gYmVzY2hyaWViZW5lLiBGdWVyIHdlbGNoZW4gUGZhZCBzaWNoIGRpZXNlciBWQyB6dXN0YWVuZGlnCitmdWVobHQgdW5kIHdlbGNoZXMgT2JqZWt0IGVyIGpld2VpbHMgY2xvbmVuIHNvbGwsIHdpcmQgcGVyIFBfQ09NUElMRVJfUEFUSCB1bmQKK1BfU1REX09CSkVDVCBrb25maWd1cmllcnQuCitadXNhZXR6bGljaCBmdWVocnQgZXIgYmVzYWd0ZSBMaXN0ZSBzZWluZXIgZXJ6ZXVndGVuIE9iamVrdGUsIGRhbWl0IGJlaSBlaW5lbQorJ2xzJyBhdWYgZGFzIFZlcnplaWNobmlzIGRpZXNlIE9iamVrdGUgbWl0IGFuZ2V6ZWlndCB3ZXJkZW4uCitXZWl0ZXJoaW4gemVyc3RvZXJ0IGVyIGFsbGUgZGllc2UgT2JqZWt0ZSBpbiBzZWluZW0gZWlnZW5lbiBSZW1vdmUuCitBdXNzZXJkZW0gaGF0IGVyIDIgRnVua3Rpb25lbiwgbWl0IGRlbmVuIGVyIGVudHNjaGVpZGVuIGthbm4sIG9iIGVyIGZ1ZXIgZWluCitiZXN0aW1tdGVzIGFuZ2VmcmFndGVzIE9iamVrdCB6dXN0YWVuZGlnIGlzdCwgVmFsaWRhdGUoKSB1bmQKK1F1ZXJ5VmFsaWRPYmplY3QoKSB1bmQgZWluZSBGdW5rdGlvbiBDdXN0b21pemVPYmplY3QoKSwgZGllIGVpbmVtIGZyaXNjaAorZ2VjbG9udGVuIE9iamVrdCBzYWdlbiBrYW5uLCB3ZWxjaGVuIE5hbWVuIGVzIHNwYWV0ZXIgZWlubWFsIGhhYmVuIHNvbGwgKHMuCitqZXdlaWxpZ2UgTWFuYXBhZ2VzKS4KKworV2llIGJhdXQgbWFuIHNpY2ggc2VpbmVuIGVpZ2VuZW4gVkM/Cis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KK1NhZ2VuIHdpciwgaWhyIHdvbGx0IGVpbmVuIFZDIGJhdWVuLCBkZXIgamVkZW0gU3BpZWxlciBzZWluZW4gZWlnZW5lbiBSYXVtCitnaWJ0LCBkYW1pdCBqZWRlciBTcGllbGVyIGluIGRpZXNlbSBSYXVtIGVpbiBNb25zdGVyIGFsbGVpbiBlcmxlZ2VuIG11c3MsCitvaG5lIGRhc3MgYW5kZXJlIFNwaWVsZXIgbWl0IGRyaW4gc2luZC4KK0Rhbm4gYnJhdWNodCBpaHIgenVlcnN0IG1hbCBlaW5lbiBSYXVtLCBkZXIgZGllIFZvcmxhZ2UgZnVlciBhbGxlIFZDLVJhZXVtZQorc2VpbiBzb2xsLCB6LkIuIHN0ZF9hcmVuYS5jLiBEaWVzZW4gbGVndCBpaHIgaW4gZGFzIFZlcnplaWNobmlzLCB3byBkZXIgVkMgaGluCitzb2xsLCB6LkIuIC9kL3JlZ2lvbi9tYWdpZXIvdmMvLgorSW4gZGllc2VtIFZlcnplaWNobmlzIGxlZ3QgaWhyIG51biBlaW4gRmlsZSB2aXJ0dWFsX2NvbXBpbGVyLmMgYW4sIHdlbGNoZXMKKy9zdGQvdmlydHVhbC92X2NvbXBpbGVyIGVyYnQuCitJbSBjcmVhdGUoKSBzZXR6dCBpaHIgbnVuIFBfQ09NUElMRVJfUEFUSCBhdWYgIi9kL3JlZ2lvbi9tYWdpZXIvdmMvIiB1bmQKK1BfU1REX09CSkVDVCBhdWYgIi9kL3JlZ2lvbi9tYWdpZXIvdmMvc3RkX2FyZW5hIi4KK1NvbGwgZXVlciBWQyBrZWluZSBQYXJhLVJhZXVtZSBlcnpldWdlbiwgc2V0enQgaWhyIFBfUEFSQSBhdWYgKHt9KS4KK1NvZGFubiBtdWVzc3QgaWhyIGVpbiBWYWxpZGF0ZSgpIGZvcm11bGllcmVuIChzLiBNYW5wYWdlKSwgd2VsY2hlcyBwcnVlZnQsIG9iCitlaW4gc3BhZXRlciBnZXd1ZW5zY2h0ZXMgT2JqZWt0IGRlbiByaWNodGlnZW4gTmFtZW4gKG9obmUgUGZhZCkgaGF0LCB6LkIuCisnYXJlbmF8c3BpZWxlcm5hbWUnIHVuZCBpbiBkaWVzZW0gRmFsbCBnZW5hdSBkaWVzZW4gTmFtZW4genVydWVja2xpZWZlcnQgdW5kCitpbiBhbmRlcmVuIEZhZWxsZW4gMC4KK0RhcyB3YXJzLiBadW1pbmRlc3QgaW4gZGllc2VtIGVpbmZhY2hlbiBGYWxsIHNlaWQgaWhyIGltIHdlc2VudGxpY2hlbiBmZXJ0aWcuCitJaHIga29lbm50IGVpbmVuIFNwaWVsZXIgbnVuIG1pdAorICBwbC0+bW92ZSgiL2QvcmVnaW9uL21hZ2llci92Yy9hcmVuYXxzcGllbGVybmFtZSIsTV9HTykKK2luICdzZWluZW4nIHBlcnNvZW5saWNoZW4gUmF1bSBiZXdlZ2VuLgorCitCaXR0ZSBiZWFjaHRldCBhbGxlcmRpbmdzIG5vY2ggZGllIEhpbndlaXNlIHVuZCBCZXNjaHJlaWJ1bmdlbiBpbiBkZW4gTWFucGFnZXMKK3p1IGRlbiBlaW56ZWxuZW4gRnVua3Rpb25lbiB1bmQgUHJvcGVydGllcy4KKworCitCZWlzcGllbGU6Cis9PT09PT09PT09CisxLiAvZG9jL2JlaXNwaWVsZS92aXJ0dWFsL3plc3N0cmEvdmlydHVhbF9jb21waWxlci5jCisgICBWQywgZGVyIGplZGVtIFNwaWVsZXIgZWluZW4gZWlnZW5lbiBSYXVtIGdpYnQuIERhIGhpZXIgZGVyIEluaGFsdCBhbGxlcgorICAgUmFldW1lIGdsZWljaCBpc3QgKGFsbGUgU3BpZWxlciBzb2xsZW4gZ2xlaWNoZSBCZWRpbmd1bmdlbiBoYWJlbiksIGlzdAorICAga2VpbmUgS29uZmlndXJpZXJ1bmcgbWl0IEhpbGZlIHZvbiBDdXN0b21pemVPYmplY3QoKSBub2V0aWcuCisKKzIuIC9kb2MvYmVpc3BpZWxlL3ZpcnR1YWwvaGF0ZS92cl9jb21waWxlci5jCisgICBEaWVzIGlzdCBlaW4gQmVpc3BpZWwgZnVlciBlaW5lbiBzZWhyIGFsbGdlbWVpbmVuIFZDLCBkZXIgZXMgCisgICBlcmxhdWJ0IGFuenVnZWJlbiBpbiB3ZWxjaGVtIEJlcmVpY2ggc2ljaCBkaWUgeCB1bmQgeSBLb29yZGluYXRlbiBiZWZpbmRlbgorICAgdW5kIGRhbm4gUmFldW1lIGVyemV1Z3QsIHdlbGNoZSBBdXNnYWVuZ2UgaW4gYWxsZSB2aWVyIEhpbW1lbHNyaWNodHVuZ2VuIAorICAgaGFiZW4uCisKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisyNy4xMC4yMDA3LCBaZXNzdHJhCmRpZmYgLS1naXQgYS9kb2Mvc3RkL3dlYXBvbiBiL2RvYy9zdGQvd2VhcG9uCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjM4OTRjMDIKLS0tIC9kZXYvbnVsbAorKysgYi9kb2Mvc3RkL3dlYXBvbgpAQCAtMCwwICsxLDc4IEBACisgU1RBTkRBUkRLTEFTU0U6CisJIi9zdGQvd2VhcG9uIgorCisgQkVOVVRaVU5HOgorICAgICAgICBpbmhlcml0ICJzdGQvd2VhcG9uIjsKKworCSNpbmNsdWRlIDxwcm9wZXJ0aWVzLmg+CisJI2luY2x1ZGUgPGNvbWJhdC5oPgorCisgUFJPUEVSVElFUzoKKyAgICAgR3J1bmRsZWdlbmQ6CisgICAgICAgIFBfV0MJCXNldHpiYXI6IFdhZmZlbmtsYXNzZSA9PSBBbmdyaWZmc3N0YWVya2UKKwlQX1dFQVBPTl9UWVBFCXNldHpiYXI6IFdhZmZlbnR5cAorCVBfREFNX1RZUEUJc2V0emJhcjogU2NoYWRlbnN0eXBlbgorCVBfTlJfSEFORFMJc2V0emJhcjogQW56YWhsIGJlbm9ldGlndGVyIEhhZW5kZQorCisgICAgIEJlc29uZGVyZSBBdHRyaWJ1dGUgdW5kIEFuZm9yZGVydW5nZW4gZnVlciBUcmFlZ2VyOgorCVBfUkVTVFJJQ1RJT05TCXNldHpiYXI6IEFuZm9yZGVydW5nZW4gYW4gVHJhZWdlcgorCVBfTV9BVFRSX01PRAlzZXR6YmFyOiBBdHRyaWJ1dG1vZGlmaWthdG9yIGZ1ZXIgVHJhZWdlcgorCVBfQ1VSU0VECXNldHpiYXI6IFZlcmZsdWNodW5nIChuaWNodCB3ZWdzdGVja2JhcikKKwlQX1BBUlJZCQlzZXR6YmFyOiBQYXJpZXJ3YWZmZSA/CisJUF9BQwkJc2V0emJhcjogU2NodXR6ZmFrdG9yIGVpbmVyIFBhcmllcndhZmZlCisKKyAgICAgTWVsZHVuZ2VuIHVuZCBaZWl0cHVua3RlOgorCVBfRVFVSVBfVElNRQllbnRoYWVsdCBkZW4gWmVpdHB1bmt0IGRlcyBBbnppZWhlbnMKKwlQX0xBU1RfVVNFCWVudGhhZWx0IGRlbiBaZWl0cHVua3QgZGVzIGxldHp0ZW4gQW5ncmlmZnMgZGFtaXQKKwlQX1dJRUxERUQJZW50aGFlbHQgZGVuIFRyYWVnZXIKKwlQX1dJRUxEX01TRwlzZXR6YmFyOiBlaWdlbmUgWnVlY2ttZWxkdW5nCisJUF9VTldJRUxEX01TRwlzZXR6YmFyOiBlaWdlbmUgV2Vnc3RlY2ttZWxkdW5nCisKKyAgICAgRHluYW1pc2NoZXMgVmVyaGFsdGVuIGluIEthbXBmIHVuZCBiZWltIEFuemllaGVuOgorCVBfV0lFTERfRlVOQwlzZXR6YmFyOiBPYmpla3QgbWl0IFp1ZWNrZnVua3Rpb24gIldpZWxkRnVuYygpIgorCVBfVU5XSUVMRF9GVU5DCXNldHpiYXI6IE9iamVrdCBtaXQgV2Vnc3RlY2tmdW5rdGlvbiAiVW53aWVsZEZ1bmMoKSIKKwlQX0hJVF9GVU5DCXNldHpiYXI6IE9iamVrdCBtaXQgQW5ncmlmZnNmdW5rdGlvbiAiSGl0RnVuYygpIgorCisgICAgIFp1c2FldHpsaWNoZSBFaWdlbnNjaGFmdGVuOgorCVBfREFNQUdFRAllbnRoYWVsdCBkZW4gQXVzbWFzcyBkZXMgU2NoYWRlbnMgYW4gV2FmZmUKKwlQX1FVQUxJVFkJc2V0emJhcjogUXVhbGl05HQvSGFsdGJhcmtlaXQgZGVyIFdhZmZlCisJUF9FRkZFQ1RJVkVfQUMJc2V0emJhcjogZmFsbHMgSGl0RnVuYyBXQyBuaWNodCBzaWNoYmFyIGFlbmRlcnQKKwlQX0VGRkVDVElWRV9XQwlzZXR6YmFyOiBmYWxscyBQYXJpZXJlbiBBQyBuaWNodCBzaWNoYmFyIGFlbmRlcnQKKworICAgICBadXNhZXR6bGljaCBzaW5kIGFsbGUgUHJvcGVydGllcyBhdXMgL3N0ZC90aGluZyB2ZXJmdWVnYmFyLCBhbHNvCisgICAgIGJpdHRlIGF1Y2ggZm9sZ2VuZGUgc2V0emVuOgorCVBfTUFURVJJQUwJc2V0emJhcjogWnVzYW1tZW5zZXR6dW5nCisJUF9TSVpFCQlzZXR6YmFyOiBHcm9lc3NlCisJUF9XRUlHSFQJc2V0emJhcjogR2V3aWNodAorCisgTUFLUk9TOgorICAgICBHdWVsdGlnZSBXYWZmZW4tIHVuZCBTY2hhZGVuc3R5cGVuIChkZWZpbmllcnQgaW4gIi9zeXMvY29tYmF0LmgiKS4KKworIEJFU0NIUkVJQlVORzoKKyAgICAgQmFzaXNrbGFzc2UgZnVlciBhbGxlIFdhZmZlbiBpbSBTcGllbC4gU2llIGlzdCB2b24gL3N0ZC90aGluZworICAgICBhYmdlbGVpdGV0IHVuZCBlbnRoYWVsdCBhbGxlIHp1c2FldHpsaWNoZSBGdW5rdGlvbmFsaXRhZXQKKyAgICAgZnVlciBkZW4gS2FtcGYuCisKKyAgICAgVm9yIGRlciBQcm9ncmFtbWllcnVuZyB2b24gV2FmZmVuIHNvbGx0ZSAvZG9jL3dpei93YWZmZW4KKyAgICAgZ2VsZXNlbiB3ZXJkZW4uIERpZSBSZWdlbG4gZGFyaW4gc2luZCB2ZXJiaW5kbGljaCB1bmQgc29sbHRlbiBudXIKKyAgICAgaW4gQXVzbmFobWVmYWVsbGVuIHVuZCBtaXQgQWJzcHJhY2hlIG1pdCBkZW0gRXJ6bWFnaWVyIGZ1ZXIgCisgICAgIFdhZmZlbi9SdWVzdHVuZ2VuL01vbnN0ZXIgdWViZXJzY2hyaXR0ZW4gd2VyZGVuLgorCisgVkVSRVJCVU5HU0JBVU06CisgICAgIFsvc3RkL3dlYXBvbl0KKyAgICAgLi4uLi4gWy9zdGQvdGhpbmcvcHJvcGVydGllc10KKyAgICAgLi4uLi4gWy9zdGQvdGhpbmcvbGFuZ3VhZ2VdCisgICAgIC4uLi4uIFsvc3RkL3RoaW5nL2NvbW1hbmRzXQorICAgICAuLi4uLiBbL3N0ZC90aGluZy9yZXN0cmljdGlvbnNdCisgICAgIC4uLi4uIFsvc3RkL3dlYXBvbi9tb3ZpbmddCisgICAgIC4uLi4uLi4uLi4gWy9zdGQvdGhpbmcvbW92aW5nXQorICAgICAuLi4uLiBbL3N0ZC93ZWFwb24vZGVzY3JpcHRpb25dCisgICAgIC4uLi4uLi4uLi4gWy9zdGQvdGhpbmcvZGVzY3JpcHRpb25dCisgICAgIC4uLi4uIFsvc3RkL3dlYXBvbi9jb21iYXRdCisKKworIFNJRUhFIEFVQ0g6CisgICAgIFBfV0VBUE9OLCBQX1BBUlJZX1dFQVBPTiwgUF9UT1RBTF9XQywgUF9UT1RBTF9BQywgUF9VTldJRUxEX1RJTUUKKyAgICAgQXR0YWNrKCksIERlZmVuZCgpLCAvZG9jL3dpei93YWZmZW4KKworIDIwIE1hZXJ6IDIwMDQgR2xvaW5zb24KZGlmZiAtLWdpdCBhL2RvYy93aXovLnJlYWRtZSBiL2RvYy93aXovLnJlYWRtZQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi40MGQwNDljCi0tLSAvZGV2L251bGwKKysrIGIvZG9jL3dpei8ucmVhZG1lCkBAIC0wLDAgKzEsMiBAQAorSGllciBzaW5kIGFsbGdlbWVpbmUgVGhlbWVuIHVuZCBSZWdlbHVuZ2VuIGZ1ZXIgTWFnaWVyIGJlc2NocmllYmVuLgorCmRpZmYgLS1naXQgYS9kb2Mvd2l6Ly5zeW5vbnltIGIvZG9jL3dpei8uc3lub255bQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi42Yzk1MjNmCi0tLSAvZGV2L251bGwKKysrIGIvZG9jL3dpei8uc3lub255bQpAQCAtMCwwICsxLDE3IEBACitzcG9uc29yIGJlZm9lcmRlcnVuZ2VuCitzcG9uc29yaW5nIGJlZm9lcmRlcnVuZ2VuCitiZWZvZXJkZXJ1bmcgYmVmb2VyZGVydW5nZW4KK25wYyBucGNzCittYXRlcmlhbGllbiBtYXRlcmlhbAorZmx1ZWNoZSBnaWZ0CitmbHVjaCBnaWZ0CitnaWZ0ZSBnaWZ0Cit2ZXJnaWZ0dW5nIGdpZnQKK2tyYW5raGVpdCBnaWZ0CitrcmFua2hlaXRlbiBnaWZ0Cithcm1vdXIgcnVlc3R1bmdlbgorYXJtb3VycyBydWVzdHVuZ2VuCitydWVzdHVuZyBydWVzdHVuZ2VuCit3ZWFwb24gd2FmZmVuCit3ZWFwb25zIHdhZmZlbgord2FmZmUgd2FmZmVuCmRpZmYgLS1naXQgYS9kb2Mvd2l6L2FuZmFlbmdlciBiL2RvYy93aXovYW5mYWVuZ2VyCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmQyNDA5MDkKLS0tIC9kZXYvbnVsbAorKysgYi9kb2Mvd2l6L2FuZmFlbmdlcgpAQCAtMCwwICsxLDExNiBAQAorQW5mYWVuZ2VyZ2ViaWV0ZQorCitWaWVsbGVpY2h0IGVydWVicmlndCBlcyBzaWNoLCBlaW5lbiBsYWVuZ2xpY2hlbiBMZWl0ZmFkZW4genUgc2NocmVpYmVuLAord2VpbCBkaWVzIGVpZ2VudGxpY2ggR2ViaWV0ZSB3aWUgdmllbGUgYW5kZXJlIHNlaW4gc29sbHRlbjoKK2F1c3JlaWNoZW5kIGJlc2NocmllYmVuLCBsb2dpc2NoIGR1cmNoZGFjaHQsIGJhbGFuY2llcnQsIHdhcyBOUEMgdW5kCitPYmpla3RlIHdpZSBXYWZmZW4gdW5kIFJ1ZXN0dW5nZW4gYmV0cmlmZnQsIGt1cnp1bSwgZXMgbXVzcyBTcGFzcyBmdWVyCitTcGllbGVyIG1hY2hlbi4KKworRWluaWdlcyB1bnRlcnNjaGVpZGV0IGFiZXIgZWluIHNvbGNoZXMgR2ViaWV0IHZvbiBhbmRlcmVuLCBkZW5uIHdpZSBkZXIKK05hbWUgc2Nob24gc2FndCwgc29sbHRlIG1hbiBkb3J0IGVoZXIgaGF1cHRzYWVjaGxpY2ggQW5mYWVuZ2VyIChlaW5tYWwKK3dpbGxrdWVybGljaCBhbHMgU3BpZWxzdHVmZSAxLTUgYmV6ZWljaG5ldCkgZXJ3YXJ0ZW4uCisKKzEuIEVycmVpY2hiYXJrZWl0CitWaWVsZSBBbmZhZW5nZXJnZWJpZXRlIGJlZmluZGVuIHNpY2ggbmF0dWVybGljaCBpbiB1bm1pdHRlbGJhcmVyIE5hZWhlCitlaW5lciBSYXNzZSwgei5CLiBkaWUgSG9jaGViZW5lIGJlaSBkZW4gWndlcmdlbiwgZGVyIFBhcmsgZGVyIEZyZXVuZGUKK2JlaSBkZW4gRWxmZW4gb2RlciBkZXIga2xlaW5lIERzY2h1bmdlbCBpbSBOVyB2b24gS2F0em1hbmR1LiBIaWVyYmVpCitpc3QgZGllIE5hZWhlIGZ1ZXIgZWluZSBSYXNzZSBnZWdlYmVuLCBzbyBkYXNzIHp1bWluZGVzdCBkaWUga2xlaW5lbgorU3BpZWxlciBkaWVzZXIgUmFzc2UgZGFzIEdlYmlldCBsZWljaHQgZXJyZWljaGVuIGtvZW5uZW4uIE5hdHVlcmxpY2gKK2lzdCBlcyBmdWVyIGFuZGVyZSBSYXNzZW4gbmljaHQgdW5iZWRpbmd0IGVpbmZhY2gsIGVpbmlnZSB3ZWl0IGVudGZlcm50CitnZWxlZ2VuZSBBbmZhZW5nZXJnZWJpZXRlIHp1IGVycmVpY2hlbiwgb2huZSBEdXR6ZW5kZSB2b24gUmFldW1lbiB6dQorZHVyY2hsYXVmZW4uCitNYW4ga2FubiBhdWNoIG5pY2h0IHNvZm9ydCBkYXZvbiBhdXNnZWhlbiwgZGFzcyBzaWNoIGVpbiBBbmZhZW5nZXIgdm9uCitBbmZhbmcgYW4gZWluZSBLYXJ0ZSBmdWVyIFdlZ2UgYW5sZWd0LiBJbnNvZmVybiBpc3QgZXMgc2lubnZvbGwsIHdlbm4KK2VzIEFuZmFlbmdlcmdlYmlldGUgaW4gdW5taXR0ZWxiYXJlciBOYWVoZSB6dSBkZW4gU3RhcnRwdW5rdGVuIGRlcgorUmFzc2VuIGdpYnQuIERpZSBrb2VubmVuIGRhbm4gZW50d2VkZXIgdW50ZXIgZGVtIEViZW5lbnBmYWQgb2RlciBhdWNoCit1bnRlciAvZC9hbmZhZW5nZXIgc3RlaGVuLgorQWxsZ2VtZWluIHp1Z2FlbmdsaWNoZSBBbmZhZW5nZXJnZWJpZXRlIHNvbGx0ZW4genVtaW5kZXN0IG9obmUgZ3Jvc3NlbgorQXVmd2FuZCB2b20gU3RhcnRwdW5rdCBkZXIgUmFzc2VuIGF1cyB6dSBlcnJlaWNoZW4gc2Vpbi4gRGFzIGtvZW5udGUKK2R1cmNoIHNwZXppZWxsZSBIaWxmc21pdHRlbCBnZXNjaGVoZW4sIGR1cmNoIE5QQywgZGllIGVpbmVuIGRlbiBXZWcKK2RvcnRoaW4gd2Vpc2VuICh2aWVsbGVpY2h0IGR1cmNoIFVlYmVyYXJiZWl0dW5nIHZvbiBiZXN0ZWhlbmRlbiBGaWxlcykKK29kZXIgZHVyY2ggdGVsZXBvcnRpZXJlbmRlIE9iamVrdGUsIGRpZSBudXIgZnVlciBBbmZhZW5nZXIgYmVudXR6YmFyCitzaW5kLiBaaWVsIGlzdCBlcyBuaWNodCwgZGVuIFNwaWVsZXJuIGRhcyBMYXVmZW4gdW5kIHNlbGJzdHN0YWVuZGlnZQorRXJrdW5kZW4gYWJ6dW5laG1lbiwgc29uZGVybiBudXIgZGllIEdlZmFociwgc2ljaCB1ZWJlciBsYWVuZ2VyZQorU3RyZWNrZW4gaGluIHp1ICJ2ZXJmcmFuc2VuIi4KKworMi4gQmVrYW5udGhlaXRzZ3JhZAorRGllc2VtIFB1bmt0IHNvbGx0ZSBtYW4gZWluIHdlbmlnIFplaXQgd2lkbWVuLiBBbSBlaW5mYWNoc3RlbiBpc3QgZGllCitCZWthbm50aGVpdCB6dSBlcnJlaWNoZW4sIHdlbm4gaW0gR2ViaWV0IGVpbmUgUXVlc3Qgc3BpZWx0LCBkYSBkYW5uCitmcnVlaGVyIG9kZXIgc3BhZXRlciB6d2FuZ3NsYWV1ZmlnIGVpbmUgRnJhZ2UgZ2VzdGVsbHQgd2lyZC4gSXN0IGVzCitlaW5lIE1pbmlxdWVzdCwga29lbm50ZSBlaW5lIEVyZm9sZ3NtZWxkdW5nIHVlYmVyIGRpZSBFYmVuZSBBbmZhZW5nZXIKK2ZsaW1tZXJuIHN0YXR0IHVlYmVyIGRpZSBFYmVuZSBBYmVudGV1ZXIuIFdlbm4gZXMgcGFzc3QsIGtvZW5udGVuCithdWNoIGRpdmVyc2UgTlBDIG1pdCBJbmZvcm1hdGlvbmVuIHZlcnNvcmd0IHdlcmRlbiwgb2RlciBhbmRlcmUgT2JqZWt0ZSwKK2RpZSBtYW4gYW4gcHJvbWluZW50ZXIgU3RlbGxlIHBsYXppZXJ0IChOb3RpemVuLCBCdWVjaGVyLCBBdWZ6ZWljaG51bmdlbgorb2RlciBhZWhubGljaGVzKS4KKworMy4gTlBDCitBdWNoIHdlbm4gZXMgbnVyICJrbGVpbmUiIE5QQyBzaW5kLCBrYW5uIG1hbiBpbiBzaWUgbWluZGVzdGVucyBzbyB2aWVsCitFbmVyZ2llIGZ1ZXIgSW5mb3JtYXRpb25lbiwgVmVyaGFsdGVuIHVuZCBEZXRhaWxzIHN0ZWNrZW4gd2llIGZ1ZXIKKyJncm9zc2UiLiBTaWUgc29sbHRlbiBrZWluZXNmYWxscyBhZ2dyZXNzaXYgc2Vpbi4gSG9oZXIgQm9keSAofiA+NzApCitvZGVyIGhvaGUgSGFuZHMgKH4gPjEwMCkgc2luZCB6dSB2ZXJtZWlkZW4sIGRhIG1hbiBhbHMgQW5mYWVuZ2VyIG5vY2gKK2tlaW4gR2VmdWVobCBkYWZ1ZXIgaGF0LCB3YXMgZGllIFNjaGFkZW5zbWVsZHVuZ2VuICJoYXJ0IiwgImtyYWNoZW5kZQorS25vY2hlbiIgb2RlciAia2l0emVsdCBEaWNoIiBpbiBldHdhIGFuIFNjaGFkZW4gbWFjaGVuLiBEZW1lbnRzcHJlY2hlbmQKK3dhZXJlIGVzIGF1Y2ggc2lubnZvbGwsIGRpZSBOUEMgenUgc2NocmVpYmVuLiBCZWRyb2hsaWNoIGF1c3NlaGVuZGUKK0RyYWNoZW4sIGRpZSBpbW1lciB2ZXJmZWhsZW4sIHNpbmQgZWlnZW50bGljaCBlYmVuc28gd2VuaWcgcGxhdXNpYmVsCit3aWUga2xlaW5lIEFtZWlzZW4sIGRpZSBlaW5lbiBtaXQgZGVyIFNhZXVyZSBpbW1lciBzZWhyIGhhcnQgdHJlZmZlbi4KK0ltIFp3ZWlmZWwgZWluZmFjaCBlaW5lbiBMdmwgMSBUZXN0c3BpZWxlciBhbmxlZ2VuIHVuZCBhdXNwcm9iaWVyZW4sCittYWwgZ2FueiBvaG5lIFdhZmZlICh3aWUga29tbWUgaWNoIGFscyAibmFja3RlciIgTmV1bGluZyBhbiBtZWluZSBlcnN0ZQorV2FmZmU/KSwgbWFsIG1pdCBlaW5lciBzY2h3YWNoZW4sIG1hbCBtaXQgZWluZXIgZXR3YXMgYmVzc2VyZW4gV2FmZmUuCitBbHMgQXVzbmFobWUgZGFyZiBoaWVyIGdlcm5lIGF1Y2ggbWFsIGVpbiBlaWdlbnRsaWNoIHNjaHdhY2hlciBOUEMKK0tpbGxzdHVmZW5wdW5rdGUgKEtpbGxzdHVwc2UpIHZlcmdlYmVuLgorCis0LiBDbGVhbmluZyBVcAorSG9mZmVudGxpY2ggYmVzdWNoZW4gZGFubiBhdWNoIHZpZWxlIGRhcyBHZWJpZXQuIEV2ZW50dWVsbCBlbXBmaWVobHQgZXMKK3NpY2ggZGFubiAod2llIGJlaSB2aWVsZW4gYW5kZXJlbiBHZWJpZXRlbiBhYmVyIGF1Y2gpIHp1IHVlYmVybGVnZW4sCit3YXMgcGFzc2llcnQsIHdlbm4gZWluZSBVbnphaGwgZ2VzY2hyaWViZW5lciBPYmpla3RlLCBkaWUgdmllbGUgZGFubgorZG9jaCBuaWNodCBnZWJyYXVjaGVuL21pdG5laG1lbiwgaW0gUmF1bSBoZXJ1bWxpZWd0LiBCZWkgUnVlc3R1bmdlbiB1bmQKK1dhZmZlbiBzaW5kIGRpZSBBcmd1bWVudGUgQ0xPTkVfV0lFTEQgdW5kIENMT05FX1dFQVIgaW4gZGVyIEZ1bmt0aW9uCitBZGRJdGVtIHZvcnRlaWxoYWZ0LCBiZWkgYW5kZXJlbiBPYmpla3RlbiBrb2VubnRlIG1hbiBpbiBkZXJlbiBSZXNldAorbmFjaHNlaGVuLCBvYiBzaWUgbGFlbmdlcmUgWmVpdCBpbiBlaW5lbSBSYXVtIGRlcyBHZWJpZXRzIG9kZXIgaW0gR2ViaWV0CitzZWxic3QgImhlcnVtZ2FtbWVsbiIuIEVzIGJsZWlidCB6d2FyIHp1IGhvZmZlbiwgZGFzcyBzaWUgaXJnZW5kd2FubgorZGVtIEF1c3N3YXBwZW4gZGVzIFJhdW1lcyBhbmhlaW1mYWxsZW4sIGFiZXIgZXMgc2llaHQgaW0gYWxsZ2VtZWluZW4KK25pY2h0IHNjaG9lbiBhdXMsIHdlbm4gT2JqZWt0ZSBvZGVyIGdhciBxdWVzdC0vbWluaXF1ZXN0cmVsZXZhbnRlIFRlaWxlCitzaWNoIGluIGVpbmVtIG9kZXIgbWVocmVyZW4gUmFldW1lbiBzdGFwZWxuLgorCis1LiBaVHMKK1NpZSBoZWxmZW4sIGRhcyBHZWJpZXQgYmVrYW5udGVyIHp1IG1hY2hlbiAoc2llaGUgUHVua3QgMiksIHNvbGx0ZW4KK2FiZXIgZWluZmFjaCB6dSBmaW5kZW4gc2VpbiAoRGV0YWlsLCBlaW5mYWNoZXIgQmVmZWhsKSB1bmQgbmljaHQgZ2xlaWNoCitlaW5lIGdhbnplIE1pbmlxdWVzdCBiZWluaGFsdGVuLgorCis2LiBVbnRlcnN0dWV0enVuZyB2b24gd2ljaHRpZ2VuIFN0YW5kYXJkaXRlbXMKK0RhenUgZ2Vob2VyZW4gaW1tZXIgbm9jaCBTZWlsLCBGYWNrZWwgb2RlciBTY2hhdWZlbC4gRXZlbnR1ZWxsIGJyYXVjaHQKK21hbiBzaWUgZnVlciBkaWUgZWluZSBvZGVyIGFuZGVyZSBBdWZnYWJlLCBpaHJlIEJlbnV0enVuZyB1bmQgZGllIGRhbWl0Cit2ZXJidW5kZW5lIFN5bnRheCBzb2xsdGUgZGVtIEFuZmFlbmdlciBkYW5hY2ggZ2VsYWV1ZmlnIHNlaW4uCisKKzcuIFVudGVyc3R1ZXR6dW5nIHZvbiB3ZWl0IHZlcmJyZWl0ZXRlbiBCZWZlaGxlbgorRGF6dSB6YWVobGVuICJvZWZmbmUiLCAibmltbSIsICJzdWNoZS9kdXJjaHN1Y2hlIiwgInNjaGxpZXNzZSIsIGV0Yy4sCithbHNvIGRhcywgd2FzIGluIHZpZWxlbiBRdWVzdHMgYXVjaCBtaXR1bnRlciBnZWZyYWd0IGlzdC4KKworOC4gVmllbGZhbHQgaW4gZGVtLCB3YXMgbWFuICJ0dW4iIGthbm4sIGVpbmZhY2hlIFVtc2V0enVuZworTWFuIGtvZW5udGUgZGllc2VuIFB1bmt0IGF1Y2ggdW50ZXIgImVpbmZhY2hlciBDb2RlIGZ1ZXIgQW5mYWVuZ2VyIgorenVzYW1tZW5mYXNzZW4sIGRhcyBnaW5nZSBhYmVyIG1hbmNobWFsIHp1IHdlaXQuIFdpY2h0aWcgaW4gZGllc2VtCitadXNhbW1lbmhhbmcgaXN0IGF1Y2gsIGRlbSBBbmZhZW5nZXIgc3BpZWxlcmlzY2ggaW0gVGV4dCwgZHVyY2ggRGV0YWlscworb2RlciBJbmZvcyB2b24gTlBDIGRpZSBTeW50YXhlbiwgd2VubiBzaWUgZGVubiBlaW5tYWwgYWJzZWl0cyBkZXIgc28KK3VlYmxpY2hlbiBLb21tYW5kb3Mgc2luZCwgZWluIHdlbmlnIGluIGRlbiBNdW5kIHp1IGxlZ2VuOgorKFNwaWVsZXIgd2Vpc3MsIGRhc3MgaW4gZGllc2VtIFJhdW0gZWluIFpUIGZ1ZXIgaWhuIGlzdCwgZXMgaGF0IHdhcyBtaXQKK2RlbSBCYXVtIHp1IHR1biwgdm9yIGRlbSBlciBzdGVodCkKKyJ1bnQgYmF1bSIgLT4KKyJEZXIgQmF1bSBpc3QgcmVjaHQgYmVlaW5kcnVja2VuZCB1bmQgaG9jaC4gRGVubm9jaCBrb2VubnRlc3QgRHUgb2huZQorIHdlaXRlcmVzIGF1ZiBpaG4ga2xldHRlcm4uIiAtPgorImtsZXR0ZXIgYXVmIGJhdW0vYmF1bSBob2NoIiAtPgorRXJmb2xnCisKKzkuIEJlbG9obnVuZ2VuCitTaWUgZHVlcmZlbiBydWhpZyBncm9zc3p1ZWdpZyBzZWluOiBaVHMgKFphdWJlcnRyYWVua2UpLCBGUCAoRm9yc2NoZXItCitwdW5rdGUpLCBFSyAoRXJzdGtpbGxzL0tpbGxzdHVwc2UpLCBBUCAoQWJlbnRldWVycHVua3RlL1F1ZXN0cHVua3RlKQordW5kIE1RUCAoTWluaXF1ZXN0cHVua3RlKSBzaW5kIHdvaGwgZG9zaWVydCB1bmQgYWJ3ZWNoc2x1bmdzcmVpY2ggenUKK3ZlcnRlaWxlbiB1bmQgc29sbGVuIGRlbSBTcGllbGVyIGhlbGZlbiwgZGVuIGFuZmFuZ3MgbGFuZ2VuIFdlZyBiaXMKK3p1bSBuYWVjaHN0ZW4gTGV2ZWwgenUgdmVya3Vlcnplbi4KKworV2llIHVlYmVyaGF1cHQgaGlsZnQgZWluZSBndXRlIERva3VtZW50YXRpb24gYXVjaCBlaW5lbSBBbmZhZW5nZXIgdW50ZXIKK2RlbiBNYWdpZXJuLCBzZWxic3Qgc2NobmVsbCBlaW5lIGVpZ2VuZSBSZWZlcmVuenNhbW1sdW5nIGZ1ZXIgZWluZmFjaGUKK0RpbmdlIGluIExQQyB6dSBlcnN0ZWxsZW4uIE1hbiBrb2VubnRlIGFsc28gc2FnZW4sIHdpZSBkZXIgU3BpZWxlciBpbQorQW5mYWVuZ2VyZ2ViaWV0IHdhZWNoc3QgYXVjaCBkZXIgTWFnaWVyLCBkZXIgZXMgZ2VzY2hyaWViZW4gaGF0LgorCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorTGFzdCBtb2RpZmllZDogVHVlIE1hciAyMSAwMTo0NjozNSAyMDA2IGJ5IEFyawpkaWZmIC0tZ2l0IGEvZG9jL3dpei9hbmdyaWZmIGIvZG9jL3dpei9hbmdyaWZmCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmExZWU3YjgKLS0tIC9kZXYvbnVsbAorKysgYi9kb2Mvd2l6L2FuZ3JpZmYKQEAgLTAsMCArMSwxOCBAQAorLS0tLS0tLS1BbmdyZWlmZXIKK0F0dGFjaygpCisJSG9sdCBkaWUgV2FmZmUgZGVzIFNwaWVsZXJzLgorCUJlcmVjaG5ldCBkZW4gQW5ncmlmZnN0eXAgdW5kIGdpYnQgZGllCisJQW5ncmlmZnNtZWxkdW5nIGF1cy4KKworCUF1ZnJ1ZiB2b246CisKKy0tLS0tLS0tVmVydGVpZGlnZXIgICAgIAorRGVmZW5kKCBocCwgdHlwICkKKwlHaWJ0IGRpZSBWZXJ0ZWlkaWd1bmdzbWVsZHVuZyBhdXMuCisJQmVyZWNobmV0IGRpZSBBbnphaGwgZGVyIEhQIGRpZSBhYmdlem9nZW4gd2lyZC4KKworCUF1ZnJ1ZiB2b246CisKK2RvX2RhbWFnZSggaHAgKQorCisJQmVyZWNobmVuIGRlciBIUC4gR2VnZWJlbmVuZmFsbHMgc3RlcmJlbiBldGMuCmRpZmYgLS1naXQgYS9kb2Mvd2l6L2FydGlsbGVyaWUgYi9kb2Mvd2l6L2FydGlsbGVyaWUKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMzQ5Y2VjNAotLS0gL2Rldi9udWxsCisrKyBiL2RvYy93aXovYXJ0aWxsZXJpZQpAQCAtMCwwICsxLDYxIEBACitSZWdlbG4gZnVlciBBcnRpbGxlcmllLU9iamVrdGUKKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorCisxLiBEZWZpbml0aW9uIHZvbiBBcnRpbGxlcmllCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK1VudGVyIGRlbSBCZWdyaWZmICJBcnRpbGxlcmllIiBmYXNzdCBtYW4gYWxsZSBPYmpla3RlIHp1c2FtbWVuLCBkaWUKK3p1c2FldHpsaWNoIHp1IGRlbiB2b3JoYW5kZW5lbiBHaWxkZW5mYWVoaWdrZWl0ZW4gZHVyY2ggZWluIHZvbQorU3BpZWxlciBpbml0aWllcnRlcyBLb21tYW5kbyBkaXJla3QgU2NoYWRlbiBhbiBlaW5lbSBvZGVyIG1laHJlcmVuCitHZWduZXJuIHZlcnVyc2FjaGVuLgorCitXYWZmZW4gdW5kIFJ1ZXN0dW5nZW4sIHdlbGNoZSBwZXIgS29tbWFuZG8gU2NoYWRlbiB2ZXJ1cnNhY2hlbiAoei4gQi4KK0Vpc3N0YWIsIFJpbmcgdm9tIFNjaGxhbW1kcmFjaGVuKSwgZmFsbGVuIHVudGVyIGRpZXNlCitEZWZpbml0aW9uLiBXYWZmZW4gdW5kIFJ1ZXN0dW5nZW4sIGRpZSAidm9uIHNpY2ggYXVzIiAodWVibGljaGVyd2Vpc2UKK3BlciBIaXQtL0RlZmVuZEZ1bmMpIFNjaGFkZW4gdmVydXJzYWNoZW4gKHouIEIuIFRvZGVzZHJhY2hlbnBhbnplciwKK0dvYmxpbnJpbmcpLCBmYWxsZW4gbmljaHQgdW50ZXIgZGllc2UgRGVmaW5pdGlvbiwgc2luZCBhYmVyIG5hdHVlcmxpY2gKK25hY2ggd2llIHZvciBnZW5laG1pZ3VuZ3NwZmxpY2h0aWcuCisKKzIuIEJhc2lzYW5mb3JkZXJ1bmdlbgorLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgCitTb2xjaGUgQXJ0aWxsZXJpZSBtdXNzIGZvbGdlbmRlbiBBbmZvcmRlcnVuZ2VuIGdlbnVlZ2VuOgorCisgYS4gQXJ0aWxsZXJpZSBfbXVzc18gUF9BVFRBQ0tfQlVTWSBiZWFjaHRlbiAoc2V0emVuL2FiZnJhZ2VuKS4KKyBiLiBBcnRpbGxlcmllIF9tdXNzXyBiZWkgVmVyd2VuZHVuZyBLb256ZW50cmF0aW9uc3B1bmt0ZSAKKyAgICB2ZXJicmF1Y2hlbi4KKyBjLiBBcnRpbGxlcmllIGRhcmYgbmljaHQgKGJ6dy4gbnVyIGJlZ3Jlbnp0KSBnZWhvcnRldCB3ZXJkZW4KKyAgICBrb2VubmVuLgorIGQuIEFydGlsbGVyaWUgZGFyZiBiZWkgUGFyYWx5c2UgbmljaHQgYW5nZXdlbmRldCB3ZXJkZW4ga29lbm5lbgorICAgIChQX0RJU0FCTEVfQVRUQUNLKS4KKyBlLiBBcnRpbGxlcmllIG11c3MgZHVyY2ggU2V0emVuIGRlciBQcm9wZXJ0eSBQX0lTX0FSVElMTEVSWSAKKyAgICBnZWtlbm56ZWljaG5ldCBzZWluLiAKKyBmLiBBcnRpbGxlcmllLCBkaWUgTXVuaXRpb24gYmVudXR6dCBvZGVyIHNlbGJzdCBNdW5pdGlvbiBpc3QgKHdpZSB6LkIuCisgICAgV3VyZnN0ZXJuZSksIG11c3MgZGFzIFVuaXRvYmpla3QgdW5kIGRlbiBkb3J0aWdlbiBNZWNoYW5pc211cyB6dW0KKyAgICBaZXJmYWxsIHZvbiBPYmpla3RlbiBudXR6ZW4uIERhYmVpIHNpbmQgUF9VTklUX0RFQ0FZX0lOVEVSVkFMIHVuZAorICAgIFBfVU5JVF9ERUNBWV9RVU9UQSBzbyB6dSBzZXR6ZW4sIGRhc3MgZGllIE11bml0aW9uIGVpbmUgSGFsYndlcnRzemVpdAorICAgIHp3aXNjaGVuIDUgdW5kIDEwICBUYWdlbiBoYXQsIGRlciBpaHJlciBWZXJmdWVnYmFya2VpdCBhbmdlbWVzc2VuCisgICAgaXN0LiBEaWVzIGxhZXNzdCBzaWNoIGR1cmNoIGdlZWlnbmV0ZXMgRWluc3RlbGxlbiBkZXMKKyAgICBQcm96ZW50c2F0emVzIHVuZC9vZGVyIGRlciBSZXNldHplaXQgZXJyZWljaGVuLgorCisgICAgQmVpc3BpZWxlOgorICAgIFNldHp0IG1hbiBwPTElIFplcmZhbGwgcHJvIFJlc2V0IGFuLCBkYW5uIG11c3MgZGVyIFJlc2V0CisgICAgZnVlciBlaW5lIEhhbGJ3ZXJ0c3plaXQgdm9uIDUgVGFnZW4gZGFubiAKKyAgICB0PWxuKDAuNSkvbG4oMCw5OSkqNSoyNCozNjAwIHMgZGF1ZXJuLCBkYXMgc2luZCA2MjI0IHMuCisKKyAgICBNb2VjaHRlIG1hbiBsaWViZXIgZGVuIG5vcm1hbGVuIFJlc2V0LCBkZXIgaW0gTWl0dGVsIDQ1IG1pbiwgZC5oLiAxNjAKKyAgICBSZXNldHMgaW4gNSBUYWdlbiBiZXRyYWVndCwgc28gZXJoYWVsdCBtYW4gZm9sZ2VuZGVuIFByb3plbnRzYXR6OgorICAgIHAgPSAxLTAsNV4oMS8xNjApIGQuaC4gY2EuIDAsNDMlLgorCitEZXRhaWxzIHdlcmRlbiBmYWxsd2Vpc2UgZW50c2NoaWVkZW4uCisKKworMy4gSW5rcmFmdHJldGVuCistLS0tLS0tLS0tLS0tLS0KKworRGllc2UgUmVnZWxuIHRyZXRlbiBhbSA1LiBBdWd1c3QgMjAwMyBpbiBLcmFmdC4KK1JldmlzaW9uIGFtIDUuIEFwcmlsIDIwMDgKK1JldmlzaW9uIGFtIDcuIEFwcmlsIDIwMTEKKworLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KK0xldHp0ZSBBZW5kZXJ1bmc6IFNhbSwgIDcuIEFwcmlsIDIwMTEgdm9uIEh1bW5pCmRpZmYgLS1naXQgYS9kb2Mvd2l6L2F1dG9sb2FkIGIvZG9jL3dpei9hdXRvbG9hZApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5mM2NkNDQ0Ci0tLSAvZGV2L251bGwKKysrIGIvZG9jL3dpei9hdXRvbG9hZApAQCAtMCwwICsxLDMyIEBACitBVVRPX0xPQURJTkc6CisJUnVtYXRhIDI2LjA4LjkyCisKKwlERVIgTkVVRSBBVVRPTE9BRC1NRUNIQU5JU01VUworCitGVU5LVElPTkVOOgorCXZvaWQgU2V0UHJvcCggUF9BVVRPTE9BRE9CSiwgbWl4ZWQgd2VydCApOworCW1peGVkIFF1ZXJ5UHJvcCggUF9BVVRPTE9BRE9CSiApOworCitFUkxBRVVURVJVTkc6CisJRXMgZ2lidCBqZXR6dCBlaW5lIFByb3BlcnR5IFBfQVVUT0xPQURPQkosIGRpZSBqZWRlcyBPYmpla3QKKwlzZXR6ZW4ga2Fubi4gSXN0IGRlciBXZXJ0IGRpZXNlciBQcm9wZXJ0eSBuaWNodCAwLCBzbyBnaWx0CisJZGFzIE9iamVrdCBhbHMgQXV0b2xvYWRpbmctT2JqZWt0LiAKKwlXSUNIVElHOiBBdWNoIFdlcnRlIHdpZSAiIiBvZGVyICh7IH0pIHNpbmQgbmljaHQgMC4KKworCU1pdCBkZXIgRnVua3Rpb24gUXVlcnlQcm9wKCBQX0FVVE9MT0FET0JKICkga2FubiBkaWVzZXIgV2VydAorCWFiZ2VmcmFndCB3ZXJkZW4uCisKK0JFTUVSS1VOR0VOOgorCURpZSBQcm9wZXJ0eSBQX0FVVE9MT0FET0JKIHNvbGx0ZSBuaWNodCBtaXQgZGVyCisJUHJvcGVydHkgUF9BVVRPX0xPQUQgdmVyd2VjaHNlbHQgd2VyZGVuLiBEaWVzZSBzcGVpY2hlcnQKKwlkaWUgQXV0b2xvYWQtSW5mb3JtYXRpb25lbiBpbSBTcGllbGVyLgorCisJRGllIFByb3BlcnR5IFBfQVVUT0xPQURPQkoga2FubiBzZWxic3R2ZXJzdGFlbmRsaWNoIGF1Y2ggYWxzCisJQnVpbHQtaW4tUHJvcGVydHkgaW1wbGVtZW50aWVydCB3ZXJkZW4uCisKK0JFSVNQSUVMOgorCUVpbiBlaW5mYWNoZXMgQmVpc3BpZWwgc3RlaHQgaW4gKioqCisJRWluIGxlaXN0dW5nc2ZhZWhpZ2VzIEJlaXNwaWVsIHN0ZWh0IGluIC9vYmovdG9vbHMvbXVzY2hlbC5jCisKK1NJRUhFIEFVQ0g6CisJImRvYy9NRy9wcm9wZXJ0aWVzIgpkaWZmIC0tZ2l0IGEvZG9jL3dpei9iYWxhbmNlIGIvZG9jL3dpei9iYWxhbmNlCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmVmZWEwNTAKLS0tIC9kZXYvbnVsbAorKysgYi9kb2Mvd2l6L2JhbGFuY2UKQEAgLTAsMCArMSw3OCBAQAorQmV1cnRlaWx1bmcgdW5kIEdlbmVobWlndW5nIHZvbiBXYWZmZW4gdW5kIFJ1ZXN0dW5nZW4gaW0gTUcKKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CisKKyAgICAKKyAgICBXYXMgYmVkZXV0ZXQgQmFsYW5jZSBpbSBNb3JnZW5ncmF1ZW4/IERpZSBCYWxhbmNlIChiencuIGlociBGZWhsZW4pCisgICAgd2lyZCB2b3IgYWxsZW0gZGFubiB3YWhyZ2Vub21tZW4sIHdlbm4gU3BpZWxlciBzaWNoIGdlbGFuZ3dlaWx0IGR1cmNoCisgICAgR2ViaWV0ZSB6YXBwZW4sIGRpZSB2b3IgendlaSBvZGVyIGRyZWkgSmFocmVuIG5vY2ggYWxzIGFuc3BydWNoc3ZvbGwKKyAgICBnYWx0ZW4sIG9kZXIgd2VubiBlaW4gTWFnaWVyIGZlc3RzdGVsbGVuIG11c3MsIGRhc3Mgc2VpbiBzY2hvZW5lcyAKKyAgICBSaWVzZW5tb25zdGVyIG5pY2h0bWFsIGRhenUga29tbXQsIHNlaW5lIGF1c2dlZmVpbHRlbiBaYXViZXJzcHJ1ZWNoZQorICAgIGFuenV3ZW5kZW4sIHdlaWwgZXMgbmFjaCBkdXJjaHNjaG5pdHRsaWNoIHp3ZWllaW5oYWxiIFJ1bmRlbiBzY2hvbgorICAgIHRvdCBpc3QuIEZlaGxlbnR3aWNrbHVuZ2VuIGRpZXNlciBBcnQgenUgdmVyaGluZGVybiBpc3QgQXVmZ2FiZSBkZXIgCisgICAgQmFsYW5jZS4gU2llIHN0ZWxsdCB1bml2ZXJzZWxsZSBHcmVuendlcnRlIHVuZCBNYXNzdGFlYmUsIGRpZSBhbHMKKyAgICBnZW1laW5zYW1lciBOZW5uZXIgZnVlciBhbGxlIE1hZ2llciBpbiBkaWVzZW0gTXVkIGVpbmUgZ2V3aXNzZSAKKyAgICBBdXNnZXdvZ2VuaGVpdCBnYXJhbnRpZXJlbi4gQW5oYW5kIGRpZXNlciBXZXJ0ZSBrYW5uIGplZGVyIE1hZ2llciBhdWYKKyAgICBkZXIgZWluZW4gU2VpdGUgZWluc2NoYWV0emVuLCB3aWUgYmVnZWhydCBlaW4gbmV1ZXMgT2JqZWt0IHNlaW4gd2lyZCwKKyAgICB1bmQgYXVmIGRlciBhbmRlcmVuIHdlaXNzIGVyIHVuZ2VmYWVociwgd2FzIGF1ZiBzZWluZSBhcm1lbiBNb25zdGVyCisgICAgenVrb21tZW4gd2lyZCwgd2VubiBTcGllbGVyIG1pdCBkZW4gT2JqZWt0ZW4gYW5kZXJlciBNYWdpZXIgYW5ncmVpZmVuLgorICAgIAorICAgIERpZXNlIEF1ZmdhYmUgenUgYmV3YWVsdGlnZW4ga2FubiBqZWRvY2ggaW4gZWluZW0gc28gcmllc2lnZW4gTXVkIGtlaW5lIAorICAgIEluc3RhbnogYWxsZWluIGxlaXN0ZW4uIEVpbiBncm9zc2UgVmVyYW50d29ydHVuZyBsYXN0ZXQgYXVjaCBhdWYgZGVuIAorICAgIFJlZ2lvbnNtYWdpZXJuLCBkaWUgaW5uZXJoYWxiIGlocmVzIFZlcmFudHdvcnR1bmdzYmVyZWljaHMgZGFmdWVyIFNvcmdlCisgICAgdHJhZ2VuIHNvbGx0ZW4sIGRhc3MgYXVzc2VyZ2V3b2VobmxpY2hlIE9iamVrdGUgaW4gR2ViaWV0ZW4gbmljaHQgenUKKyAgICBnZWhhZXVmdCBhdWZ0cmV0ZW4gdW5kIG5pY2h0IHp1IGxlaWNodCB6dSBlcnJlaWNoZW4gc2luZC4KKworICAgIFdpZSBsYWV1ZnQgbnVuIGVpbmUgR2VuZWhtaWd1bmcgZHVyY2ggZGllIEJhbGFuY2UgYWI/IAorICAgIFp1YWxsZXJlcnN0IHNvbGx0ZSBzaWNoIGVpbiBNYWdpZXIgdWViZXIgZGVuIGFrdHVlbGxlbiBTdGFuZCBkZXIgQmFsYW5jZS0KKyAgICByZWdlbG4gaW5mb3JtaWVyZW4uIFp1bSBlaW5lbiB3ZWlzcyBlciBkYW5uIHNvZm9ydCwgd2VsY2hlIElkZWVuIG9obmVoaW4KKyAgICBrZWluZSBDaGFuY2UgYXVmIEdlbmVobWlndW5nIGhhYmVuLCB6dW0gYW5kZXJlbiBpbnNwaXJpZXJlbiB2aWVsbGVpY2h0IAorICAgIHNvZ2FyIGRpZSB6YWhscmVpY2hlbiBIaW53ZWlzZSB1bmQgdGVjaG5pc2NoZW4gRGV0YWlscyBkYXMgZWluIG9kZXIgCisgICAgYW5kZXJlIE9iamVrdC4gQWxzIG5hZWNoc3RlcyBzdGVodCBlaW5lIGtyaXRpc2NoZSBQcnVlZnVuZyBkZXIgZWlnZW5lbgorICAgIElkZWVuIGFuLiBCcmF1Y2h0IGRhcyBNdWQgd2lya2xpY2ggZGVuIDEzMi4gUGFuemVyLCBkZXIgZ2VnZW4gRmV1ZXIKKyAgICBzY2h1ZXR6dD8gR2lidCBlcyBuaWNodCBpcmdlbmR3byBvaG5laGluIHNjaG9uIGVpbmUgV2FmZmUgZGllc2VzIFR5cHMKKyAgICBtaXQgZmFzdCBpZGVudGlzY2hlbiBXZXJ0ZW4/IEFkZGllcnQgc2ljaCBkaWUgV2lya3VuZyBlaW5lcyBnZXBsYW50ZW4KKyAgICBLYW1wZm9iamVrdHMgdmllbGxlaWNodCBpcmdlbmR3aWUgbWl0IHZvcmhhbmRlbmVuIE9iamVrdGVuPyBEaWVzZSB1bmQKKyAgICBhZWhubGljaGUgRnJhZ2VuIGZydWVoIHp1IGtsYWVyZW4ga2FubiBzcGFldGVyIHZpZWwgRnJ1c3QgdmVybWVpZGVuLiBEYXMKKyAgICBCYWxhbmNldGVhbSBrYW5uIGF1Y2ggenUgZGllc2VtIFplaXRwdW5rdCBzY2hvbiBlaW4gQW5zcHJlY2hwYXJ0bmVyIHNlaW4sCisgICAgZGEgc2VpbmUgTWl0Z2xpZWRlciBlaW5lbiBndXRlbiBVZWJlcmJsaWNrIHVlYmVyIGRpZSBtZWlzdGVuIGhlcmF1cy0KKyAgICByYWdlbmRlbiBPYmpla3RlIGltIE11ZCBoYWJlbiB1bmQgZ2VybmUgYWxzIEJlcmF0ZXIgenVyIFZlcmZ1ZWd1bmcgCisgICAgc3RlaGVuLiBEaWUgTWFnaWVyIGRlcyBUZWFtcyBrb2VubmVuIG5hdHVlcmxpY2ggYXVjaCB6dSBwcm9ncmFtbWllci0KKyAgICB0ZWNobmlzY2hlbiBGcmFnZW4gZGVuIGVpbmVuIG9kZXIgYW5kZXJlbiBUaXAgZ2ViZW4uCisKKyAgICBTaW5kIGRpZSBPYmpla3RlIGRhbm4gcHJvZ3JhbW1pZXJ0IHVuZCBpc3QgYXVjaCBkZXIgUmVnaW9uc21hZ2llciBtaXQKKyAgICBpaG5lbiBlaW52ZXJzdGFuZGVuLCB3aXJkIHNjaGxpZXNzbGljaCBkZXIgQW50cmFnIGdlc3RlbGx0LiAoUGVyCisgICAgIm1haWwgYmFsYW5jZSIpLiBEZXIgQW50cmFnIHNvbGx0ZSBmb2xnZW5kZW4gSW5mb3JtYXRpb25lbiBlbnRoYWx0ZW46CisKKyAgICAtIE5hbWUgZGVzIE9iamVrdHMKKyAgICAtIFZvbGxzdGFlbmRpZ2VyIEZpbGVuYW1lCisgICAgLSBBbGxlIHJlbGV2YW50ZW4gV2VydGU6IEFDIGJ6dy4gV0MsIFBfTlJfSEFORFMsIEdld2ljaHQsIFdlcnQsIC4uLgorICAgIC0gRGVmZW5kL0hpdEZ1bmNzLCBpbiBGb3JtIGVpbmVyIHByYWV6aXNlbiBCZXNjaHJlaWJ1bmcgZGVyIAorICAgICAgRnVua3Rpb25zd2Vpc2UgdW5kIGRlcyBXZXJ0ZWJlcmVpY2hzLgorICAgIC0gQWxsZSBzb25zdGlnZW4gSW5mb3JtYXRpb25lbiB1ZWJlciBFaWdlbnNjaGFmdGVuLCBkaWUgZGVuIEthbXBmIAorICAgICAgYmVlaW5mbHVzc2VuIG9kZXIgZGVtIFNwaWVsZXIgdm9uIE51dHplbiBzaW5kCisgICAgLSBGdW5kb3J0IHVuZCBzdWJqZWt0aXZlIEVpbnNjaGFldHp1bmcgZGVzIEF1ZndhbmRzLCB1bSBkaWVzZW4gCisgICAgICBHZWdlbnN0YW5kIHp1IGVyZWljaGVuLgorCisgICAgRGllIEdlbmVobWlndW5nIGVyZm9sZ3QgZGFubiBwZXIgbWFpbCwgZXMgc2VpIGRlbm4gZXMgZ2lidCBiZWdydWVuZGV0ZQorICAgIEVpbndhZW5kZS4gSW4gZGllc2VtIEZhbGwga29tbXQgZGllIEdlbmVobWlndW5nIG1pdCBsZWljaHQgZ2VhZW5kZXJ0ZW4KKyAgICBXZXJ0ZW4gb2RlciBzb2dhciBlaW5lIEFibGVobnVuZy4gSW0gbGV0enRlcmVuIEZhbGwgc3RlaHQgZXMgZGVtIE1hZ2llcgorICAgIG5hdHVlcmxpY2ggZnJlaSwgZGFzIE9iamVrdCB6dSB2ZXJhZW5kZXJuIHVuZCBuZXUgenUgYmVhbnRyYWdlbi4KKyAgICBOb3JtYWxlcndlaXNlIGVyZ2lidCBzaWNoIGRhbm4gYXVjaCBzY2huZWxsIGltIHBlcnNvZW5saWNoZW4gR2VzcHJhZWNoCisgICAgbWl0IE1pdGdsaWVkZXJuIGRlciBCYWxhbmNlLCB3byBkYXMgUHJvYmxlbSBnZW5hdSBsaWVndCB1bmQgd2VsY2hlIAorICAgIEFsdGVybmF0aXZlbiBlcyBnaWJ0LiAKKworICAgIEFuenVtZXJrZW4gYmxlaWJ0IG5vY2gsIGRhc3MgT2JqZWt0ZSwgZGllIG5hY2ggZGVyIEdlbmVobWlndW5nIG5vY2ggaW4KKyAgICBpcmdlbmRlaW5lciBXZWlzZSBwb3NpdGl2IHZlcmFlbmRlcnQgd2VyZGVuLCBuYXR1ZXJsaWNoIG5ldSBnZW5laG1pZ3QKKyAgICB3ZXJkZW4gbXVlc3Nlbi4gQmVpIGtsZWluZXJlbiBBZW5kZXJ1bmdlbiAoR2V3aWNodCBvLmFlLikgcmVpY2h0CisgICAgdW50ZXIgVW1zdGFlbmRlbiBlaW5lIGluZm9ybWVsbGUgQW5mcmFnZSBiZWltIEJhbGFuY2V0ZWFtLgorCisgU0lFSEUgQVVDSAorCisgICAgIGJhbGFuY2VhbnRyYWcsIHJ1ZXN0dW5nZW4sIHdhZmZlbiwgZmVybndhZmZlbiwgdW5pcXVlcywgbnBjcywgb2JqZWN0cywKKyAgICAgYXR0cmlidXRzdmVyYWVuZGVydW5nZW4sIHJlc2lzdGVuemVuLCBrYW1wZm9iamVrdGUsIGdyZW56d2VydGUsCisgICAgIG5hY2h0ZWlsZQorCisKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIExFVFpURSBBRU5ERVJVTkc6CisgICAgU29uLCAxOC4xMC4yMDA1LCAxODo1NDowMCB2b24gTWlyaWwKZGlmZiAtLWdpdCBhL2RvYy93aXovYmFsYW5jZWFudHJhZyBiL2RvYy93aXovYmFsYW5jZWFudHJhZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi42MTI0NjQwCi0tLSAvZGV2L251bGwKKysrIGIvZG9jL3dpei9iYWxhbmNlYW50cmFnCkBAIC0wLDAgKzEsMTMzIEBACitIaWxmZSB6dSBCYWxhbmNlYW50cmFlZ2VuCis9PT09PT09PT09PT09PT09PT09PT09PT09CisKK1VtIGRpZSBBcmJlaXQgZGVyIEJhbGFuY2UgenUgZXJsZWljaHRlcm4gdW5kIGRhbWl0IGRpZSBXYXJ0ZXplaXQgZnVlciBkaWUKK01hZ2llciB6dSB2ZXJrdWVyemVuLCBnaWJ0IGVzIGVpbmlnZSBEaW5nZSB6dSBiZWFjaHRlbi4gRGFzIEdhbnplIGxpZXN0IHNpY2gKK2F1ZiBkZW4gZXJzdGVuIEJsaWNrIHNlaHIgYnVlcm9rcmF0aXNjaCwgaXN0IGVzIGFiZXIgbmljaHQuIERpZSBBbmxlaXR1bmcgc29sbAorbnVyIHNvIGF1c2Z1ZWhybGljaCB3aWUgbW9lZ2xpY2ggc2VpbiwgdW0gTWlzc3ZlcnN0YWVuZG5pc3NlbiB2b3J6dWJldWdlbi4KK1p1ZXJzdCBlaW5tYWwgZ2lidCBlcyBncnVuZHNhZXR6bGljaCB6d2VpIEFydGVuIHZvbiBBbnRyYWVnZW46CisKKzEuIEVpbmUgVm9yYWJhbmZyYWdlCisKK1ZpZWxlIE1hZ2llciBzY2hldWVuIGRpZSBBcmJlaXQsIGVpbiBPYmpla3QgenUgcHJvZ3JhbW1pZXJlbiwgZGFzIGFuc2NobGllc3NlbmQKK25pY2h0IHZvbiBkZXIgQmFsYW5jZSBnZW5laG1pZ3Qgd2lyZC4gRGFzIGlzdCB2ZXJzdGFlbmRsaWNoIHVuZCBWb3JhYmFuZnJhZ2VuCit3ZXJkZW4gbmljaHQgbWluZGVyIGJlYWNodGV0IGFscyBrb25rcmV0ZSBBbnRyYWVnZS4gVHJvdHpkZW0gc29sbHRlIG1hbiBzbyBlaW5lCitBbmZyYWdlIHNvcmdmYWVsdGlnIGZvcm11bGllcmVuLiBTaWUgc29sbHRlIGRhcyBQcm9ibGVtIGtsYXIgdW1yZWlzc2VuIHVuZAorbW9lZ2xpY2hzdCBlaW5kZXV0aWcgc2Vpbi4gQXVjaCBlaW4gSGlud2VpcyBkYXJhdWYsIHdvIGRlciBNYWdpZXIgUHJvYmxlbWUgbWl0CitkZXIgQmFsYW5jaWVydW5nIGVyd2FydGV0IHVuZCBpbiB3ZWxjaGVtIFdlcnRlYmVyZWljaCBldmVudHVlbGxlIFphaGxlbgorZXJ3YXJ0ZXQgd2VyZGVuLCBzb2xsdGUgbmljaHQgdmVyZ2Vzc2VuIHdlcmRlbi4KKworRWluZSBBbnR3b3J0IGF1ZiBlaW5lIFZvcmFiYW5mcmFnZSBpc3QgYWxsZXJkaW5ncyBrZWluZSBHZW5laG1pZ3VuZyBlaW5lcworT2JqZWt0cy4gRXMgaXN0IGxlZGlnbGljaCBhbHMgSW5mb3JtYXRpb24genUgc2VoZW4sIG9iIGRpZSBCYWxhbmNlbWl0Z2xpZWRlciAKK3NvIGVpbiBPYmpla3QgdWViZXJoYXVwdCBmdWVyIGdlbmVobWlndW5nZmFlaGlnIGhhbHRlbiwgZ2VnZWJlbmVuZmFsbHMgbWl0CithbmdlcGFzc3RlbiBXZXJ0ZW4gb2RlciBsZWljaHQgdmVyYWVuZGVydGVuIEVpZ2Vuc2NoYWZ0ZW4uIE1pdCBlaW5lciBBbnR3b3J0CithdWYgZWluZSBWb3JhYmFuZnJhZ2Ugd29sbGVuIHdpciBkZW0gV3Vuc2NoIGRlciBNYWdpZXIgZW50c3ByZWNoZW4sIHp1CitlcmZhaHJlbiwgb2IgZXMgc2ljaCBsb2hudCwgQXJiZWl0IGluIGRhcyBPYmpla3QgenUgaW52ZXN0aWVyZW4sIGJpbmRlbmQgaXN0CitzbyBlaW5lIEFudHdvcnQgYWxsZXJkaW5ncyBuaWNodC4KKworMi4gRWluIEFudHJhZworCitIaWVyIGdlaHQgZXMgdW0gZGllIEZlc3RzY2hyZWlidW5nIGFsbGVyIGthbXBmcmVsZXZhbnRlbiBFaWdlbnNjaGFmdGVuLAordHJvdHpkZW0gc29sbHRlbiBhbGxlIEVpZ2Vuc2NoYWZ0ZW4sIGRpZSBFaW5mbHVzcyBhdWYgZGFzIFNwaWVsZ2VzY2hlaGVuIGhhYmVuLAorbWl0IGFuZ2VnZWJlbiB3ZXJkZW4sIGF1Y2ggd2VubiBkaWUgT2JqZWt0YmFsYW5jZSBuaWNodCBkaXJla3QgZnVlciBkaWVzZQorRWlnZW5zY2hhZnQgenVzdGFlbmRpZyBpc3QuIEVpbmUgV2FmZmUsIGRpZSBkZW4gVHJhZWdlciBhYiB1bmQgenUgaGVpbHQsCittdXNzIGF1Y2ggYmVpIGRlciBIZWlsdW5nc2JhbGFuY2UgYmVhbnRyYWd0IHdlcmRlbiwgdHJvdHpkZW0gZGFyZiBkaWVzZQorRWlnZW5zY2hhZnQgbmljaHQgdm9yIGRlciBPYmpla3RiYWxhbmNlIHZlcnNjaHdpZWdlbiB3ZXJkZW4uIEFsbGUgV2VydGUKK3NvbGx0ZW4gdGFiZWxsYXJpc2NoIGF1ZmdlZnVlaHJ0IHdlcmRlbi4gRWluZSBVZWJlcnNpY2h0LCB1ZWJlciBkaWUgdm9uIGRlcgorQmFsYW5jZSBiZW5vZXRpZ3RlbiBXZXJ0ZToKKworS3VyemJlc2NocmVpYnVuZzogICAgICAgIFBfU0hPUlQKK1BmYWRhbmdhYmU6ICAgICAgICAgICAgICBtb21lbnRhbiB1bmQgbmFjaCBBbnNjaGx1c3MKK1R5cCBkZXMgT2JqZWt0OiAgICAgICAgICBTY2h3ZXJ0LCBIb3NlLCBSaW5nLi4uCitXYWZmZW4vUnVlc3R1bmdza2xhc3NlOiAgUF9XQywgUF9BQworU2NoYWRlbnNhcnQ6ICAgICAgICAgICAgIFBfREFNX1RZUEUKK0Jlbm9ldGlndGUgSGFlbmRlOiAgICAgICBQX05SX0hBTkRTCitXZXJ0OiAgICAgICAgICAgICAgICAgICAgUF9WQUxVRQorR2V3aWNodDogICAgICAgICAgICAgICAgIFBfV0VJR0hUCitIaXRGdW5jOiAgICAgICAgICAgICAgICAgTWl0IEVybGFldXRlcnVuZyBkZXIgVW1zdGFlbmRlLAorICAgICAgICAgICAgICAgICAgICAgICAgIEJlZ3J1ZW5kdW5nIHVuZCBXZXJ0ZS9XYWhyc2NoZWlubGljaGtlaXRlbgorQW5kZXJlIEJvbmk6ICAgICAgICAgICAgIEthZW1wZmVyLCBaYXViZXJlciwgSGVpbHVuZ2VuLCBSZXNpc3RlbnplbgorICAgICAgICAgICAgICAgICAgICAgICAgIGV2dGwgbWl0IHJvbGxlbnNwLiBCZWdydWVuZHVuZworUmVzdHJpa3Rpb25lbjogICAgICAgICAgIFBfUkVTVFJJQ1RJT05TLCBQYXJhbHlzZSwgWmVpdGJlc2NocmFlbmt1bmdlbiAKKworRWluZSBCZWdydWVuZHVuZyBzb2xsdGUgZGllIEVpZ2Vuc2NoYWZ0IHJvbGxlbnNwaWVsdGVjaG5pc2NoIGVpbmJldHRlbiB1bmQKK25pY2h0IGJlc2NocmVpYmVuLCB3YXJ1bSBkYXMgTUcgZGllc2UgRWlnZW5zY2hhZnQgaW4gZWluZW0gT2JqZWt0IHVuYmVkaW5ndAorbm9jaCBicmF1Y2h0LiBXZWl0ZXJoaW4gc29sbHRlIG1hbiBkaWUgRXJyZWljaGJhcmtlaXQga3VyeiB1bXJlaXNzZW4gdW5kIGRpZQorSGFldWZpZ2tlaXQsIG1pdCBkZXIgZGFzIE9iamVrdCBhbiBTcGllbGVyIGdlbGFuZ3QuIEF1Y2ggaGllcmJlaSBnaWx0LCBkYXNzCittYW4gZGFzIE9iamVrdCBtb2VnbGljaHN0IGt1cnosIGFiZXIgZWluZGV1dGlnIGJlc2NocmVpYnQuCisKK0RpZSBHZW5laG1pZ3VuZyBvZGVyIEFibGVobnVuZyBlaW5lcyBBbnRyYWdzIGR1cmNoIGRpZSBPYmpla3RiYWxhbmNlIGlzdAorYmluZGVuZC4gRWlnZW5zY2hhZnRlbiwgZGllIGluIGRlciBBbnR3b3J0IGF1ZmdlZnVlaHJ0IHNpbmQsIHNpbmQKK2Zlc3RnZXNjaHJpZWJlbiB1bmQgYmVkdWVyZmVuIGJlaSBBZW5kZXJ1bmcgZWluZXMgTmV1YW50cmFnZXMgKGRhcyBnZWh0IGluCitkZXIgUmVnZWwgcmVjaHQgc2NobmVsbCwgd2VubiBkZXIgTWFnaWVyIG5pY2h0IGRhcyBPYmpla3Qga29tcGxldHQgdW1rcmVtcGVsdCkuCitTb2xsdGVuIG5pY2h0IGZlc3RnZXNjaHJpZWJlbmUgRWlnZW5zY2hhZnRlbiwgZGllIGRhcyBTcGllbGdlc2NoZWhlbgorYmVlaW5mbHVzc2VuIChkaWUgZXMgZWlnZW50bGljaCBuaWNodCBnZWJlbiBzb2xsdGUpLCBnZWFlbmRlcnQgd2VyZGVuLCBtdXNzIGRpZQorQmFsYW5jZSBpbmZvcm1pZXJ0IHdlcmRlbi4gQmVpIGplZ2xpY2hlbSBNYWlsdmVya2VociB6dSBlaW5lbSBPYmpla3QsIHNvbGx0ZQorZGllIGJ0b3AgTnVtbWVyIGFuZ2VnZWJlbiB3ZXJkZW4sIGRpZSBpbiBkZXIgZXJzdGVuIE1haWwgenUgZGVtIE9iamVrdAorYW5nZWdlYmVuIHNlaW4gc29sbHRlLiBJc3QgZGllcyBuaWNodCBkZXIgRmFsbCwgZXJmcmFnZSBkaWVzZSBOdW1tZXIgYml0dGUgYmVpCitlaW5lbSBkZXIgVGVhbW1pdGdsaWVkZXIuIE5hY2ggR2VuZWhtaWd1bmcgZGVzIE9iamVrdGVzLCBzb2xsdGUgZGllc2UgTnVtbWVyCithdWNoIGluIGRlbiBLb3BmIGRlciBEYXRlaShlbikgZ2VzY2hyaWViZW4gd2VyZGVuLgorCitCZWkgZWluZW0gQW50cmFnIGtvbW10IGVzIGltbWVyIHdpZWRlciB6dSBNaXN2ZXJzdGFlbmRuaXNzZW4gb2RlcgorWndlaWRldXRpZ2tlaXRlbi4gRGFoZXIgaXN0IGVzIGRpZSBSZWdlbCwgZGFzcyBub2NoIG1hbCBuYWNoZ2VmcmFndCB3aXJkLAord2llIGRlbm4gZ2VuYXUgZXR3YXMgYWJsYXVmZW4gb2RlciBpbXBsZW1lbnRpZXJ0IHdlcmRlbiBzb2xsLiBFaW5lIHNjaG5lbGxlCitCZWFudHdvcnR1bmcgZGllc2VyIEZyYWdlbiBiZXNjaGxldW5pZ3QgbmF0dWVybGljaCBhdWNoIGRlbgorR2VuZWhtaWd1bmdzcHJvemVzcy4gTWlzc2ZhbGxlbiBkZW0gQmFsYW5jZXRlYW0gZWluemVsbmUgRWlnZW5zY2hhZnRlbiwKK0ltcGxlbWVudGllcnVuZ2VuIG9kZXIgV2VydGUsIHdlcmRlbiBoYWV1ZmlnIFZvcnNjaGxhZWdlIGdlbWFjaHQsIGRpZSBkaWUKK0FremVwdGFueiBlaW5lcyBPYmpla3RlcyBkdXJjaCBkaWUgQmFsYW5jZSBlbnRzY2hlaWRlbmQgdmVyYmVzc2Vybi4gRGllCitNaXRnbGllZGVyIGJlbXVlaGVuIHNpY2gsIGRlbiBHZW5laG1pZ3VuZ3Nwcm96ZXNzIHNvIHJlaWJ1bmdzbG9zIHVuZAora29uZmxpa3Rhcm0gd2llIG1vZWdsaWNoIGFibGF1ZmVuIHp1IGxhc3Nlbi4gU29sY2hlIEFlbmRlcnVuZ3N2b3JzY2hsYWdlIHNpbmQKK3dlZGVyIEJlbGVocnVuZ2VuIG5vY2ggYm9lc2UgZ2VtZWludCwgc29uZGVybiBzb2xsZW4gZGF6dSBkaWVuZW4gZGllCitCYWxhbmNpZXJ1bmcgenUgdmVyZWluZmFjaGVuLCB6dSBiZXNjaGxldW5pZ2VuIHVuZCBCZWRlbmtlbiB2b24KK0JhbGFuY2VtaXRnbGllZGVybiBlbnRnZWdlbnp1a29tbWVuLgorCitadW0gU2NobHVzcyBub2NoIGVpbiBBbnRyYWcsIHdpZSBlciBhdXNzaWVoZW4ga29lbm50ZToKKworQW50cmFnIGZ1ZXIgZWluIFp3ZWloYW5kc2Nod2VydAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCitOYW1lOiBEZXIgUGVyZm9yYXRvcgorUGZhZDogL2QvcmVnaW9uL21hZ2llci9nZWJpZXQvb2JqL3BlcmZvcmF0b3IuYworICAgICAgL2QvcmVnaW9uL21hZ2llci9nZWJpZXQvb2JqL2xvY2guYworUF9XRUFQT05fVFlQRTogIFdUX1NXT1JECitQX1dDOiAgICAgICAgICAgMjAwCitQX05SX0hBTkRTOiAgICAgMgorUF9WQUxVRTogICAgICAgIDE1MDAwCitQX1dFSUdIVDogICAgICAgMTUwMAorUF9EQU1fVFlQRTogICAgICh7RFRfUElFUkNFLCBEVF9VTkhPTFl9KQorSGl0RnVuYzogICAgICAgIHVudGVyIFVtc3RhZW5kZW4gcmFuZG9tKDUwKQorS19CUkFXTElOR19XQzogIDI1CitLX0NSSVRJQ0FMX0hJVDogODAKKworUHNldWRvLVVuaXF1ZTogRXMgZ2lidCAxMCBTdHVlY2ssIHdpcmQgZWluIEVsZnRlcyBnZWJyYXVjaHQsIHdpcmQKK2RhcyBtaXQgZGVyIGFlbHRlc3RlbiBDbG9uZXplaXQgemVyc3RvZXJ0LgorCitSZXN0cmlrdGlvbmVuOiBNaW5pUXVlc3QsIFNlaGVyLCBCZXRlaWxpZ3VuZyBiZWltIEVybWV0emVsbgorCitCZXNjaHJlaWJ1bmc6IERlciBQZXJmb3JhdG9yIHBlcmZvcmllcnQgZGVuIEdlZ25lci4gSXN0IG5vY2gga2VpbiBMb2NoCitpbiBkZW0gR2VnbmVyLCB3aXJkIGVpbnMgcmVpbmdlcGlla3QgdW5kIG1hY2h0IGRhYmVpIHp1c2FldHpsaWNoIHJhbmRvbSg1MCkKK1NjaGFkZW4uIERhbmFjaCBpc3QgZWluIExvY2ggaW0gR2VnbmVyIHVuZCBlciB2ZXJsaWVydCBqZWRlIFJ1bmRlIDEwICsKK3JhbmRvbSgxMCkgSFAgZHVyY2ggQmx1dHZlcmx1c3QgcGVyIHJlZHVjZV9oaXRfcG9pbnRzKCkgZnVlciAxMCBSdW5kZW4uCitJc3QgZGVyIFRyYWVnZXIgZGVzIFNjaHdlcnRzIG5vY2ggaW0gUmF1bSwgYmVrb21tdCBlciBkaWVzZW4gU2NoYWRlbgorZ3V0Z2VzY2hyaWViZW4sIHdlaWwgZGFzIFNjaHdlcnQgZGFzIEJsdXQgdHJpbmt0LiBJc3QgZGFzIExvY2ggd2VnLCBnaWJ0IGVzCitrZWluIHdlaXRlcmVzLgorCitEYXMgU2Nod2VydCBoYXQgZWluIHNjaHdlcmVzLCBtaXQgRG9ybmVuIHZlcnNlaGVuZXMgSGVmdCAoQlJBV0xJTkdfV0MpIHVuZAoraXN0IHJhc2llcm1lc3NlcnNjaGFyZiwgc28gZGFzcyBlcyBzaWNoIGZ1ZXIgZWluZW4gVG9kZXNzdG9zcyBndXQgZWlnbmV0LgorRGFzIFNjaHdlcnQgaGF0IGVpbmVuIEZsdWNoLCBkZXIgZXMgYmx1dGR1cnN0aWcgbWFjaHQgdW5kIERUX1VOSE9MWSBlcmtsYWVydC4KKworVW0gZGFzIFNjaHdlcnQgenUgYmVrb21tZW4sIGJyYXVjaHQgbWFuIGVpbmUgTWluaXF1ZXN0LCBkaWUgY2EgMjAgQVAgZ2ViZW4KK3d1ZXJkZS4gQW0gRW5kZSBrb21tdCBtYW4gYW4gZWluZW4gRW5kZ2VnbmVyLCBkZW4gbWFuIGltIFRlYW0gaGF1ZW4gbXVzcywKK2FsbGUgTWl0Z2xpZWRlciBtdWVzc2VuIGRpZSBNaW5pcXVlc3QgZ2VyYWRlIG1hY2hlbi4gWnVlY2tlbiBrYW5uIGRhcyBTY2h3ZXJ0CitudXIgamVtYW5kLCBkZXIgZGllIE1pbmlxdWVzdCBzY2hvbiBoYXQgdW5kIG1pbmRlc3RlbnMgMjAlIGRlcyBTY2hhZGVucyBnZW1hY2h0CitoYXQuIFZvbiBkZW0gU2Nod2VydCBnaWJ0IGVzIGltbWVyIG51ciAxMCBTdHVlY2ssIGRhcyBhZWx0ZXN0ZSB3aXJkIGJlaW0KK2Nsb25lbiBkZXMgTlBDIHplcnN0b2VydCB1bmQgZWluIE5ldWVzIGVyc2NoYWZmZW4uCisKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKKyBTSUVIRSBBVUNICisKKyBydWVzdHVuZ2VuLCB3YWZmZW4sIGZlcm53YWZmZW4sIHVuaXF1ZXMsIG5wY3MsIG9iamVjdHMsIGJhbGFuY2UKKyBhdHRyaWJ1dHN2ZXJhZW5kZXJ1bmdlbiwgcmVzaXN0ZW56ZW4sIGthbXBmb2JqZWt0ZSwgZ3Jlbnp3ZXJ0ZSwgbmFjaHRlaWxlCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KK2xldHplIEFlbmRlcnVuZzogMTguMTAuMjAwNSAyMzo0MSAtIE1pcmlsCmRpZmYgLS1naXQgYS9kb2Mvd2l6L2JlZm9lcmRlcnVuZ2VuIGIvZG9jL3dpei9iZWZvZXJkZXJ1bmdlbgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5mNjgwYzA4Ci0tLSAvZGV2L251bGwKKysrIGIvZG9jL3dpei9iZWZvZXJkZXJ1bmdlbgpAQCAtMCwwICsxLDY2IEBACitFaW5lIGtsZWluZSBVZWJlcnNpY2h0IHVlYmVyIGRpZSBCZWZvZXJkZXJ1bmdzcG9saXRpayBpbSBNRworLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworIExldmVsIDEgLT4gMTU6CisgICAgIFdBTk46CisgICAgICAgIE1hbiBtdXNzIFNlaGVyIHNlaW4uIChzLiBhdWNoICJoaWxmZSBtYWdpZXIiKQorICAgICBXRVI6CisgICAgICAgIDI2KyAoc2llaGUgYXVjaCAiaGlsZmUgdmVydHJhZyIpCisgICAgIFJFQ0hURToKKyAgICAgICAgRWluZ2VzY2hyYWVua3RlIExlc2VyZWNodGUgYXVmIGRlciBMaWIuCisKKyBMZXZlbCAxNSAtPiAyMDoKKyAgICAgV0FOTjoKKyAgICAgICAgTWluZGVzdGVucyBlaW5lIFdvY2hlIHNlaXQgZGVtIEFuc3RpZWcgYXVmIDE1LCBkYW1pdAorICAgICAgICBFaW5zcHJ1ZWNoZSBnZWdlbiBkZW4gQ2hhcmFrdGVyIG5pY2h0IHVlYmVyZ2FuZ2VuIHdlcmRlbi4KKyAgICAgICAgS29uemVwdCBmdWVyIEdTCisgICAgIFdFUjoKKyAgICAgICAgUHJpbnppcGllbGwgNjYrCisgICAgICAgIE5vcm1hbGVyd2Vpc2UgYWJlciBFTSBHZXNlbGxlbnN0dWVja2UgdW5kIFpvb2sKKyAgICAgUkVDSFRFOgorICAgICAgICBMZXNlcmVjaHRlIGF1ZiBhbGxnZW1laW5lIFZlcnplaWNobmlzc2UsIGVpZ2VuZXMgVmVyemVpY2huaXMsIENsb25lbi4KKworIF9BbHRlcm5hdGl2XyBnaWJ0IGVzIHdlaXRlcmUgTW9lZ2xpY2hrZWl0OgorIExldmVsIDAgLT4gMjA6CisgICAgIFdBTk46CisgICAgICAgIE1hbiBtdXNzIGVpbmVuIFNlaGVyIGFscyBFcnN0aWUgdW5kIGVpbiB2b24gZGVuIEVNcyBnZW5laG1pZ3RlcworICAgICAgICBLb256ZXB0IGZ1ZXIgZWluIEdTIGhhYmVuLiBEZXN3ZWl0ZXJlbiB2ZXJwZmxpY2h0ZXQgbWFuIHNpY2gsIGRhcworICAgICAgICBHUyBpbm5lcmhhbGIgdm9uIDYgTW9uYXRlbiBmZXJ0aWd6dXN0ZWxsZW4uIChzLiAiaGlsZmUgbWFnaWVyIikKKyAgICAgV0VSOgorICAgICAgICBFTXMgKHNpZWhlIGF1Y2ggImhpbGZlIHZlcnRyYWciKQorICAgICBSRUNIVEU6CisgICAgICAgIEVpbmdlc2NocmFlbmt0ZSBMZXNlcmVjaHRlIGF1ZiBkZXIgTGliLgorCisKKyBMZXZlbCAyMCAtPiAyMToKKyAgICAgV0FOTjoKKyAgICAgICAgbmFjaCBHUy1BYm5haG1lCisgICAgIFdFUjoKKyAgICAgICAgRU0gZnVlciBHZXNlbGxlbnN0dWVja2UuCisgICAgIFJFQ0hURToKKyAgICAgICAgTm9ybWFsZSBMZXNlcmVjaHRlLgorCisgTGV2ZWwgMjEgLT4gMjU6CisgICAgIFdBTk46CisgICAgICAgIE1hZ2llciBoYXQgZXR3YXMgZnVlciBlaW5lIFJlZ2lvbiBnZXByb2dndCwgd2FzIGFuZ2VzY2hsb3NzZW4KKyAgICAgICAgd3VyZGUvd2lyZC4KKyAgICAgV0VSOgorICAgICAgICA0NQorICAgICBSRUNIVEU6CisgICAgICAgIFNjaHJlaWJyZWNodGUgaW4gZGVyIERvbWFpbi4gVmVyZ2FiZSBkdXJjaCB6dXN0YWVuZGlnZW4gUk0uCisKKyBMZXZlbCAyNSAtPiAyNis6CisgICAgIFdBTk46CisgICAgICAgIE1hZ2llciB3aXJkIGZ1ZXIgZmFlaGlnIHVuZCBzZWxic3RzdGFlbmRpZyBnZWhhbHRlbi4KKyAgICAgV0VSOgorICAgICAgICA0NQorICAgICBSRUNIVEU6CisgICAgICAgIEthbm4gbnVuIHNlbGJzdCBTcGllbGVyIHNwb25zb3Jlbi4KKyAKKyBWb3JzaWNodDogZGllc2VzIERva3VtZW50IGlzdCBpbSBzdGV0aWdlbiBXYW5kZWwgdW5kIHN0ZWxsdCBudXIgZGllCisgYWxsZ2VtZWluZSBQb2xpdGlrIGRhciAtIHNpY2ggZHJhdWYgYmVydWZlbiBnaWx0IG5pY2h0LgorCitTSUVIRSBBVUNIOgorICAgICBlcnptYWdpZXIsIGJhbGFuY2UKKworMjcuMTAuMjAwOSwgWmVzc3RyYQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2RvYy93aXovYmVuZW5udW5nIGIvZG9jL3dpei9iZW5lbm51bmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZmU5NGViYwotLS0gL2Rldi9udWxsCisrKyBiL2RvYy93aXovYmVuZW5udW5nCkBAIC0wLDAgKzEsMTU4IEBACitBVVRPUiAgIE1HLCBkZW4gMjIuMDguOTIsIERvbiBSdW1hdGEKKwlUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgTW9yZ2VuZ3JhdWVuLU11ZGxpYiBmcm9tIEpvZiBhbmQgUnVtYXRhCisKK1ZFUlNJT04gMS4xCisKK0FLVFVBTElTSUVSVDogTUcsIGRlbiAxNC4xMC45MywgQ2hyaXMKK1VFQkVSQVJCRUlURVQ6IGFtIDI0LjA4Ljk0IHZvbiBWaXBlcgorCitUSEVNQSAgIEJFTkVOTlVORyBWT04gT0JKRUtURU4gSU0gTW9yZ2VuR3JhdWVuCisKK0lOSEFMVDoKKwlJLiAgICAgIEVpbmxlaXR1bmcKKwlJSS4gICAgIEZ1bmt0aW9uZW4sIGRpZSBhbGxlIE9iamVrdGUgYmVzaXR6ZW4gbXVlc3NlbgorCUlJSS4gICAgVW50ZXJzdHVldHp1bmcgZGVyIEZ1bmt0aW9uZW4gZHVyY2ggZGllIE1HX211ZGxpYgorCUlWLiAgICAgQmVuZW5udW5nIHZvbiBSYWV1bWVuCisJVi4gICAgICBCZW5lbm51bmcgdm9uIE1vbnN0ZXJuCisKK0kuICAgICAgRUlOTEVJVFVORworCisJSmVkZXMgT2JqZWt0IGluIGRlciBNdWRsaWIgbXVzcyBhdWYgZm9sZ2VuZGUgV2Vpc2VuIGlkZW50aWZpemllcnQKKwl3ZXJkZW4ga29lbm5lbjoKKworCTEuKSAgICAgRXMgbXVzcyBlaW5lbiBOYW1lbiBoYWJlbiwgZGVyIGlubmVyaGFsYiBlaW5lcyBTYXR6ZXMgZGFzCisJCU9iamVrdCBiZXplaWNobmVuIGthbm4uCisKKwkyLikgICAgIEVzIG11c3MgZWluZSBLdXJ6YmVzY2hyZWlidW5nIGJlc2l0emVuLgorCisJMy4pICAgICBFcyBtdXNzIGVpbmUgYXVzZnVlaHJsaWNoZSBCZXNjaHJlaWJ1bmcgYmVzaXR6ZW4uCisKKwk0LikgICAgIEVzIG11c3MgZWluZSBNZW5nZSB2b24gU3lub255bWVuIGtlbm5lbiwgbWl0IGRlbmVuIGVpbgorCQlTcGllbGVyIGRhcyBPYmpla3QgImFuc3ByZWNoZW4iIGthbm4uCisKK0lJLiAgICAgRlVOS1RJT05FTiwgRElFIEFMTEUgT0JKRUtURSBCRVNJVFpFTiBNVUVTU0VOCisKKwlKZWRlcyBPYmpla3QgaW0gTW9yZ2VuR3JhdWVuIHNvbGx0ZSBmb2xnZW5kZSBGdW5rdGlvbmVuIAorCWltcGxlbWVudGllcnQgaGFiZW46CisKKwkxLikgICAgIG5hbWUoIGZhbGwsIGRlbSApCisKKwlEaWVzZSBGdW5rdGlvbiBzb2xsIGRlbiBOYW1lbiBkZXMgT2JqZWt0ZXMgaW0gamV3ZWlsaWdlbgorCUZhbGwgbWl0IEFydGlrZWwgKHdlbm4gZXMgZWluZW4gYmVzaXR6dCkgenVydWVja2dlYmVuLCBzbworCWRhc3MgZGVyIFJ1ZWNrZ2FiZXdlcnQgaW4gZWluZW4gU2F0eiBlaW5nZWFyYmVpdGV0IHdlcmRlbgorCWthbm4uCisKKwkiZmFsbCIgZGllbnQgenVyIERla2xpbmF0aW9uIGRlcyBPYmpla3RuYW1lbnMuCisKKwkiZGVtIiBiZXN0aW1tdCwgd2VsY2hlIEFydGlrZWwgYmVudXR6dCB3ZXJkZW4gc29sbGVuLgorCU1vZWdsaWNoZSBXZXJ0ZSBmdWVyICJkZW0iOgorCisJMCAgICAgICBCZW51dHplIHVuYmVzdGltbXRlIEFydGlrZWwuCisJCisJMSAgICAgICBCZW51dHplIGJlc3RpbW10ZSBBcnRpa2VsLgorCQorCTIgICAgICAgQmVudXR6ZSBiZXN0aW1tdGUgQXJ0aWtlbCwgd2VubiBzaWNoIG1pdCBkZW0gT2JqZWt0CisJCWtlaW4gZ2xlaWNoYXJ0aWdlcyBPYmpla3QgaW0gc2VsYmVuIFJhdW0gYmVmaW5kZXQsCisJCXNvbnN0IGJlbnV0emUgZWluZW4gdW5iZXN0aW1tdGVuLgorCisJCVN0YXR0IGRlciAyIGthbm4gYXVjaCBlaW4gU3RyaW5nIHVlYmVyZ2ViZW4gd2VyZGVuLgorCQlJbiBkaWVzZW0gRmFsbCB3aXJkIGdldGVzdGV0LCBvYiBzaWNoIGVpbiBPYmpla3QgbWl0CisJCWRlbSBTdHJpbmcgYWxzIGlkIGltIHNlbGJlbiBSYXVtIGJlZmluZGV0LgorCisJMi4pICAgICBzaG9ydCgpCisKKwlEaWVzZSBGdW5rdGlvbiBsaWVmZXJ0IGVpbmUgQmVzY2hyZWlidW5nLCBkaWUgYXVzZ2VnZWJlbgorCXdpcmQsIHdlbm4gZGVyIFJhdW0sIGluIGRlbSBkYXMgT2JqZWt0IHNpY2ggYmVmaW5kZXQsCisJYmV0cmFjaHRldCB3aXJkLgorCisJMy4pICAgICBsb25nKCkKKworCURpZXNlIEZ1bmt0aW9uIGxpZWZlcnQgZWluZSBCZXNjaHJlaWJ1bmcsIGRpZSBhdXNnZWdlYmVuCisJd2lyZCwgd2VubiBkYXMgT2JqZWt0IGFuZ2VzY2hhdXQgd2lyZC4gSW0gVW50ZXJzY2hpZWQgenVyCisJMi40LjUgTXVkbGliIHdpcmQgZGllIEJlc2NocmVpYnVuZyBqZWRvY2ggbmljaHQgYXVzZ2VnZWJlbiwKKwlzb25kZXJuIGFscyByZXR1cm4tV2VydCB6dXJ1ZWNrZ2VnZWJlbi4KKworCTQuKSAgICAgaWQoIHN0ciApCisKKwlEaWVzZSBGdW5rdGlvbiBzb2xsIDEgenVydWVja2dlYmVuLCB3ZW5uIHN0ciBlaW5lIFplaWNoZW4tCisJZm9sZ2UgaXN0LCBkaWUgZGFzIE9iamVrdCBiZXplaWNobmVuIGtvZW5udGUuIERpZXNlIFplaWNoZW4tCisJZm9sZ2Ugd2lyZCBpbiBrbGVpbmVuIEJ1Y2hzdGFiZW4gdWViZXJnZWJlbi4KKworCTUuKSAgICAgX3F1ZXJ5X2ludmlzKCkKKworCVdlbm4gZWluIE9iamVrdCB1bnNpY2h0YmFyIGlzdCwgc29sbCBlcyBiZWltIEF1ZnJ1ZiBkaWVzZXIKKwlGdW5rdGlvbiAxIHp1cnVlY2tnZWJlbi4gU2ljaHRiYXJlIE9iamVrdGUgYnJhdWNoZW4gZGllc2UKKwlGdW5rdGlvbiBuaWNodCB6dSBpbXBsZW1lbnRpZXJlbi4KKworSUlJLiAgICBVTlRFUlNUVUVUWlVORyBERVIgRlVOS1RJT05FTiBEVVJDSCBESUUgTUdfTVVETElCCisKKwlXZW5uIGVpbiBlaWdlbmVzIE9iamVrdCBhdXMgZGVuIFN0YW5kYXJkb2JqZWt0ZW4gYWJnZWxlaXRldAorCXdpcmQsIHNpbmQgYWxsZSBkaWVzZSBGdW5rdGlvbmVuIGJlcmVpdHMgZmVydGlnIGRlZmluaWVydC4KKwlFcyBtdWVzc2VuIGJlaW0gRXJ6ZXVnZW4gZGVyIE9iamVrdGUgbnVyIG5vY2ggZGllIGVudHNwcmVjaGVuZGVuCisJV2VydGUgbWl0Z2V0ZWlsdCB3ZXJkZW4uIERpZXNlcyBnZXNjaGllaHQgbWl0IGZvbGdlbmRlbiBGdW5rLQorCXRpb25lbiwgZGllIGFtIGJlc3RlbiBpbSBjcmVhdGUoKSBhdWZnZXJ1ZmVuIHdlcmRlbi4KKworCTEuKSAgICAgU2V0UHJvcCggUF9OQU1FLCBzdHJpbmcgKTsKKworCUluIG5hbWUoKSB3aXJkIGRlciB1ZWJlcmdlYmVuZSBTdHJpbmcgZGVrbGluaWVydCB1bmQgYXV0b21hdGlzY2gKKwltaXQgQXJ0aWtlbG4gdmVyc2VoZW4uICBEaWVzZSBGdW5rdGlvbiBiZWRlbmt0IGF1Y2ggRmFlbGxlLCBhbiAKKwlkaWUgaWhyIHdhaHJzY2hlaW5saWNoIG5pZSBnZWRhY2h0IGhhYnQuIERlciBHZW5pdGl2IHZvbiBkZXIgCisJTGFobWUgaXN0IHouQi4gZGVzIExhaG1lbiEgQXVjaCBmdWVyIGFuZGVyZSBGYWVsbGUgYmlldGV0IGRpZXNlIAorCUZ1bmt0aW9uIG1hZWNodGlnZSBVbnRlcnN0dWV0enVuZy4KKworCVdlbm4gZGVyIFN0cmluZyBuaWNodCBtaXQgQXJ0aWtlbG4gdmVyc2VoZW4gd2VyZGVuIHNvbGwsIHNvIGthbm4KKwltYW4gZGFzIG1pdHRlbHMgZGVyIEZ1bmt0aW9uICJTZXRQcm9wKFBfQVJUSUNMRSwgMCApIiBlcnJlaWNoZW4uCisKKwlEYW1pdCBkaWUgRnVua3Rpb24gbmFtZSgpIHVlYmVyaGF1cHQgZGVuIHJpY2h0aWdlbiBBcnRpa2VsIAorCWF1c3dhZWhsZW4ga2FubiwgbXVzcyBtYW4gbWl0ICJTZXRQcm9wKCBQX0dFTkRFUiwgZ2VuZGVyKSIgZGFzCisJR2VjaGxlY2h0IGRlcyBPYmpla3RlcyBiZWthbm50IG1hY2hlbi4gQWxzIGdlbmRlciBrYW5uIG1hbiAKKwlNQUxFIG9kZXIgMSwgRkVNQUxFIG9kZXIgMiB1bmQgTkVVVEVSIG9kZXIgMCB2ZXJ3ZW5kZW4uCisKKwlJc3QgZGFzIE9iamVrdCB1bnNpY2h0YmFyLCBzbyBkYXJmIHN0cmluZyB0cm90emRlbSBuaWNodCAwIHNlaW47CisJc3RhdHRkZXNzZW4gaXN0ICJTZXRQcm9wKCBQX0lOVklTLCAxICkiIGF1Znp1cnVmZW4uIChEaWUgWmVpbGUKKwkiI2luY2x1ZGUgPHByb3BlcnRpZXMuaD4iIG5pY2h0IHZlcmdlc3Nlbi4gOi0pKQorCisJRGEgZGllc2VzIFZlcmZhaHJlbiBzZWhyIGZlaGxlcmFuZmFlbGxpZyBpc3QsIGlzdCBmdWVyIGRlbiBOYW1lbgorCWVpbiBBcnJheSB2b24gTmFtZW4genVnZWxhc3Nlbiwgc28gZGFzcyBmdWVyIGplZGVuIEZhbGwgZWluIFdvcnQKKwl1ZWJlcmdlYmVuIHdlcmRlbiBrYW5uLiBCZWlzcGllbC46CisJU2V0UHJvcCggUF9OQU1FLCAoeyAiTWVuc2NoIiwgIk1lbnNjaGVuIiwgIk1lbnNjaGVuIiwgIk1lbnNjaGVuIiB9KSApOworCisJMi4pICAgICBTZXRQcm9wKCBQX1NIT1JULCBzdHJpbmcgKQorCQorCUluIHNob3J0KCkgd2lyZCBkZXIgdWViZXJnZWJlbmUgU3RyaW5nIGF1c2dlZ2ViZW4uIE1pdHRlbHMgZGVzCisJcHJvY2Vzc19zdHJpbmctTWVjaGFuaXNtdXMgKHNpZWhlIC9kb2MvZWZ1bi9wcm9jZXNzX3N0cmluZykKKwlrb2VubmVuIGF1Y2ggdmFyaWJhbGUgVGVpbGUgaW4gZGVtIFN0cmluZyB2b3Jrb21tZW4uCisJc3RyaW5nIGJyYXVjaHQgZnVlciB1bnNpY2h0YmFyZSBPYmpla3RlIG5pY2h0IGF1ZiAwIGdlc2V0enQKKwl3ZXJkZW4uCisKKwkzLikgICAgIFNldFByb3AoIFBfTE9ORywgc3RyaW5nICkKKworCURpdG8uCisKKwk0LikgICAgIEFkZElkKCBzdHJpbmcgKTsKKworCU5laG1lIGRlbiBTdHJpbmcgaW4gZGllIE1lbmdlIGRlciBaZWljaGVua2V0dGVuIGF1ZiwgYXVmIGRpZSBkaWUKKwllaW5nZWJhdXRlIGlkLUZ1bmt0aW9uIG1pdCAxIGFudHdvcnRlbiBzb2xsLgorCisJNS4pICAgICBFcyByZWljaHQsIFNldFByb3AoIFBfSU5WSVMsIDEgKSBhdWZ6dXJ1ZmVuLCB3ZW5uIGRhcworCU9iamVrdCB1bnNpY2h0YmFyIHdpcmQsIHVuZCBTZXRQcm9wKCBQX0lOVklTLCAwICksIHdlbm4gZXMgd2llZGVyCisJc2ljaHRiYXIgd2lyZC4KKworSVYuICAgICBCRU5FTk5VTkcgVk9OIFJBRVVNRU4KKworCUJlaSBSYWV1bWVuIHdpcmQgZGllIGxvbmcoKSBiencuIHNob3J0KCktQmVzY2hyZWlidW5nIG51ciBkYW5uCisJYmVudXR6dCwgd2VubiBkZXIgUmF1bSAqdm9uIGF1c3NlbiogYW5nZXNjaGF1dCB3aXJkLiBGdWVyIGVpbmUKKwlCZXNjaHJlaWJ1bmcgZGVzIFJhdW1lbiB2b24gaW5uZW4gc2luZCBmb2xnZW5kZSBGdW5rdGlvbmVuCisJYmVyZWl0Z2VzdGVsbHQ6CisKKwkxLikgICAgIFNldFByb3AoIFBfSU5UX1NIT1JULCBzdHJpbmcgKTsKKworCUdlYmUgZWluZSBCZXNjaHJlaWJ1bmcgZGVzIFJhdW1lcyBmdWVyIGRlbiAia3VyeiItTW9kdXMgYXVzLgorCisJMi4pICAgICBTZXRQcm9wKCBQX0lOVF9MT05HLCBzdHJpbmcgKTsKKworCUdlYmUgZWluZSBhdXNmdWVocmxpY2hlIEJlc2NocmVpYnVuZyBkZXMgUmF1bWVzIHp1cnVlY2suCisKK1YuICAgICAgQkVORU5OVU5HIFZPTiBNT05TVEVSTgorCisJU2llaGUgb2JlbiB1bnRlciAvZG9jL01HL0JBTklTSC4KZGlmZiAtLWdpdCBhL2RvYy93aXovY2FsbGVkX2J5X3BsYXllciBiL2RvYy93aXovY2FsbGVkX2J5X3BsYXllcgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44OTdmNTQ2Ci0tLSAvZGV2L251bGwKKysrIGIvZG9jL3dpei9jYWxsZWRfYnlfcGxheWVyCkBAIC0wLDAgKzEsOCBAQAordm9pZCBCZWNvbWVzTmV0RGVhZChvYmplY3QgcGxheWVyKSB3aXJkIGltIFJhdW0gYXVmZ2VydWZlbiwgd2VubiBkb3J0IGVpbgorCVNwaWVsZXIgbmV0enRvdCB3aXJkLiBwbGF5ZXIgaXN0IGRlciBTcGllbGVyLgorCit2b2lkIFBsYXllclF1aXQob2JqZWN0IHBsYXllcikgd2lyZCBpbSBSYXVtIGF1ZmdlcnVmZW4sIHdlbm4gZGFyaW4gZWluCisJU3BpZWxlciBxdWl0dGV0LgorCit2b2lkIGV4aXQoKSB3aXJkIGltIFJhdW0gYXVmZ2VydWZlbiwgd2VubiBlaW4gTGViZXdlc2VuIHJhdXNnZW1vdmVkIHdpcmQuCisJRGFzIExlYmV3ZXNlbiBpc3QgcHJldmlvdXNfb2JqZWN0KCkKZGlmZiAtLWdpdCBhL2RvYy93aXovZW50dGFua2VuIGIvZG9jL3dpei9lbnR0YW5rZW4KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOWE0N2Q0NwotLS0gL2Rldi9udWxsCisrKyBiL2RvYy93aXovZW50dGFua2VuCkBAIC0wLDAgKzEsOTkgQEAKK0VudHRhbmtlbgorPT09PT09PT09CisKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHZW5lcmVsbGVzOgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoqKioqKioqKioKKworQUxMRSBFbnR0YW5rLU1vZWdsaWNoa2VpdGVuIE1VRVNTRU4gb3J0c2FiaGFlbmlnIHNlaW4uCitBdXNuYWhtZW4gS0FOTiBlcyBmdWVyIFF1ZXN0YmVsb2hudW5nZW4gZ2ViZW4uCisKK1RvaWxldHRlbgorLS0tLS0tLS0tCitUb2lsZXR0ZW4gcnVmZW4gZGllIE1ldGhvZGVuICJkZWZ1ZWxfZHJpbmsiIGJ6dy4gImRlZnVlbF9mb29kIiBpbSBTcGllbGVyIGF1Zi4KK0VzIHdlcmRlbiBrZWluZSBQYXJhbWV0ZXIgdWViZXJnZWJlbi4gUnVlY2tnYWJld2VydGUgc2luZCBlbnR3ZWRlciBkaWUgRmVobGVyCitOT19ERUZVRUwsIHdlbm4gbWFuIG5pY2h0cyB6dSBFbnR0YW5rZW4gaGF0LCBERUZVRUxfVE9PX0xPVywgd2VubiBtYW4gbmljaHQKK2dlbnVnIGltIE1hZ2VuL0JsYXNlIGhhdCwgREVGVUVMX1RPT19TT09OLCB3ZW5uIG1hbiBub2NoIG5pY2h0Cit3aWVkZXIgZW50dGFua2VuIGRhcmYsIE9ERVIgZGVyIGVudHRhbmt0ZSBXZXJ0LgorQmVpc3BpZWwgaGllcnp1IHNpZWhlICJtYW4gZGVmdWVsX2Zvb2QiLgorCitNYW4gZGFyZiBEQU5OIGVudHRhbmtlbiwgd2VubiBtYW4gbWluZGVzdGVucyBkZW4gRnVlbGx3ZXJ0IFBfREVGVUVMX0xJTUlUX0ZPT0QKK2J6dy4gUF9ERUZVRUxfTElNSVRfRFJJTksgaGF0IHVuZCBkYXMgbGV0enRlIEVudHRhbmtlbiBtaW5kZXN0ZW5zCitQX0RFRlVFTF9USU1FX0ZPT0QgYnp3LiBQX0RFRlVFTF9USU1FX0RSSU5LIGhlciBpc3QuCitJc3QgZGllcyBkZXIgRmFsbCwga2FubiBtYW4gUF9EUklOSy9GT09EKlBfREVGVUVMX0FNT1VOVF9EUklOSy9GT09EIGVudHRhbmtlbiwKK3dvYmVpIGRpZXMgenVyIEhhZWxmdGUgdWViZXIgZWluIFJhbmRvbSBnZWdsYWV0dGV0IHdpcmQuCisKK1dlciByZWd1bGFlciB1ZWJlciAiZGVmdWVsX2RyaW5rIiBlbnR0YW5rdCwgZW50dGFua3QgYXVjaCBhdXRvbWF0aXNjaCBlaW5lCitnZXdpc3NlIE1lbmdlIGFuIEFsa29ob2wuIERpZXNlIE1lbmdlIGlzdCB2b24gZGVyIGVudHRhbmt0ZW4gTWVuZ2UsIHZvbiBkZW0KK2ltIEtvZXJwZXIgc2ljaCBiZWZpbmRlbmVuIEFsa29ob2wgdW5kIHZvbSBHZXdpY2h0IGRlcyBTcGllbGVycyBhYmhhZW5naWcuCisKK0FsbGUgZ2VuYW5udGVuIFByb3BzIHNpbmQgcmFzc2VuYWJoYWVuZ2lnLgorRGllIEJlcmVjaG51bmdlbiBzaW5kIGdla2Fwc2VsdCBpbiAiZGVmdWVsX2Zvb2QvZHJpbmsiLgorCitBbmRlcmUgT2JqZWt0ZQorLS0tLS0tLS0tLS0tLS0KKworSGllciBiaWV0ZXQgc2ljaCBhbiwgZGllIHplaXRsaWNoZSBOdXR6dW5nIGRlciBFbnR0YW5rZSBzcGllbGVyYmV6b2dlbiAKK21pdHRlbHMgZGVyIE1ldGhvZGUgIGNoZWNrX2FuZF91cGRhdGVfdGltZWRfa2V5IHp1IHN0ZXVlcm4uIERhYmVpIHNvbGx0ZQorZGVyIHplaXRsaWNoZSBBYnN0YW5kIG5pY2h0IHp1IGtuYXBwIHNlaW4sIGluIGRlciBSZWdlbCBpbSBCZXJlaWNoIHZvbiAKK2NhLiBlaW5lciBTdHVuZGUuIERlciBlaWdlbnRsaWNoZSBFbnR0YW5rdm9yZ2FuZyBpbSBTcGllbGVyIGdlc2NoaWVodCAKK21pdHRlbHMgZWF0X2Zvb2QsIGRyaW5rX3NvZnQgb2RlciBkcmlua19hbGNvaG9sIGR1cmNoIFVlYmVyZ2FiZSBuZWdhdGl2ZXIgCitXZXJ0ZS4gRGVyIEJldHJhZyBkaWVzZXMgV2VydGVzIHNvbGx0ZSBkZXIgRXJyZWljaGJhcmtlaXQgYW5nZW1lc3NlbiBzZWluLAorZC5oLiBsZWljaHRlciBlcnJlaWNoYmFyZSBFbnR0YW5rZW4gc29sbHRlbiBhdWNoIG5pY2h0IHp1IHZpZWwgZW50dGFua2VuLAord2VubiBzaWUgZGVuIFNwaWVsZXIga29tcGxldHQgZW50dGFua2VuIHNvbGxlbiwgbXVlc3NlbiBzaWUgZW50c3ByZWNoZW5kCitzY2h3ZXIgenUgZXJyZWljaGVuIHNlaW4uCitEYSBkaWUgRW50dGFua2VuIG9ydHNhYmhhZW5naWcgc2luZCB1bmQgaW4gZGVyIFJlZ2VsIGVyc3QgZXJmb3JzY2h0IAord2VyZGVuIG11ZXNzZW4sIGlzdCBlaW5lIHdlaXRlcmUgQmVncmVuenVuZyBtb21lbnRhbiBuaWNodCB2b3JnZXNlaGVuLiAKKworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU3BlemlmaXNjaGVzOgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKioqKioqKioqKioqCisKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KK1Jhc3NlbmJlc2NocmVpYnVuZ2VuIGZ1ZXIgQmVyZWNobnVuZ2VuIGluICJkZWZ1ZWxfZm9vZC9kcmluayI6CistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK01FTlNDSEVOCitzaW5kIHdpZSBpbW1lciBuaWNodHMgQmVzb25kZXJlcyB1bmQgZGVmaW5pZXJlbiBkYXMgYWJzb2x1dGUgTWl0dGVsbWFzcy4KKworWldFUkdFCitrb2VubmVuIG1laHIgaW4gQmxhc2UgdW5kIE1hZ2VuIGhhYmVuIHVuZCBrb2VubmVuIGF1Y2ggc28gcmljaHRpZyBhYmxhZGVuLgorRGFmdWVyIG11ZXNzZW4gc2llIGxhZW5nZXIgd2FydGVuLCBiaXMgZXMgc2ljaCBsb2hudCwgenUgZW50dGFua2VuLgorCitFTEZFTgorc2luZCBpbmtvbnRpbmVudCB1bmQgS2xlaW5tZW5nZW5nZWJlci4KKworRFVOS0VMRUxGRU4KK3NpbmQgdm9uIGRlbiBXZXJ0ZW4gaGVyIGluIGV0d2Egd2llIEVsZmVuLgorCitIT0JCSVRTCitrb2VubmVuIGVzc2VuIGJpcyB6dW0gVW1mYWxsZW4uIFNpZSBsYWRlbiBkYW5uIHJpY2h0aWcgYWIsIG11ZXNzZW4gYWJlciBhdWNoCitlbnRzcHJlY2hlbmQgd2FydGVuLgorCitGRUxJTkVOCitzaW5kIGRlbiBNZW5zY2hlbiBhZWhubGljaC4KKworT1JLUworc2luZCBhdWNoIG5pY2h0cyBCZXNvbmRlcmVzLiAKKworV2VyIGRpZSBnZW5hdWVuIFdlcnRlIGVpbnNlaGVuIG1vZWNodGUsIG1vZWdlIGluIGRlbiBzaGVsbHMgbmFjaGd1Y2tlbi4KKworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBMb2dpc2NoZXM6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoqKioqKioqKgorCitKZWRlICghKSBNb2VnbGljaGtlaXQgenVyIEVudHRhbmt1bmcsIG11c3MgZGVtIHp1c3RhZW5kaWdlbiBNYWdpZXIKK2Z1ZXIgSGVpbHVuZ3MtQmFsYW5jZSBnZW1lbGRldCB1bmQgdm9uIGRpZXNlbSBnZW5laG1pZ3Qgd2VyZGVuLiBXZXIKK2RpZXNlbiBQb3N0ZW4gbW9tZW50YW4gaW5uZWhhdCwga2FubiBkZW0gTWFpbEFsaWFzICJoZWlsdW5nc19iYWxhbmNlIgorZW50bm9tbWVuIHdlcmRlbi4KKworU2llaGUgYXVjaDoKKy0tLS0tLS0tLS0KKyAgICAgVGFua2VuOiAgICBjb25zdW1lLCBkcmlua19hbGNvaG9sLCBlYXRfZm9vZCwgZHJpbmtfc29mdAorICAgICBIZWlsdW5nOiAgIGhlYWxfc2VsZiwgcmVzdG9yZV9zcGVsbF9wb2ludHMsIHJlc3RvcmVfaGl0X3BvaW50cywgCisgICAgICAgICAgICAgICAgYnVmZmVyX2hwLCBidWZmZXJfc3AKKyAgICAgVGltaW5nOiAgICBjaGVja19hbmRfdXBkYXRlX3RpbWVkX2tleQorICAgICBFbnR0YW5rZW46IGRlZnVlbF9kcmluaywgZGVmdWVsX2Zvb2QKKyAgICAgUHJvcHM6ICAgICBQX0RSSU5LLCBQX0ZPT0QsIFBfQUxDT0hPTCwgUF9TUCwgUF9IUCwKKyAgICAgICAgICAgICAgICBQX0RFRlVFTF9USU1FX0RSSU5LCisgICAgIEtvbnplcHRlOiAgaGVpbHVuZywgZm9vZAorCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCitMYXN0IG1vZGlmaWVkOiAwMi4xMS4yMDA1IC0gTWlyaWwKZGlmZiAtLWdpdCBhL2RvYy93aXovZmFtaWxpZW4gYi9kb2Mvd2l6L2ZhbWlsaWVuCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjM5YmY4MzEKLS0tIC9kZXYvbnVsbAorKysgYi9kb2Mvd2l6L2ZhbWlsaWVuCkBAIC0wLDAgKzEsMjQgQEAKK0VpbmUgRmFtaWxpZSB1bWZhc3N0IGRlbiBFcnN0aWUgdW5kIGFsbGUgWndlaXRpZXMsIHNwcmljaCBhbGxlIGRpZXNlIGhhYmVuIGRlbgorZ2xlaWNoZW4gIkZhbWlsaWVubmFtZW4iLiBEaWVzZXIgTmFtZSBpc3QgaW4gZGVyIFJlZ2VsIGRpZSBVVUlEIGRlcyBFcnN0aWVzCitkaWVzZXIgRmFtaWxpZS4gRmFsbHMgYWJlciBkZXIgRXJzdGllIHNpY2ggYWVuZGVybiBzb2xsdGUgKHouQi4gTWFnaWVyd2VyZHVuZworZWluZXMgWndlaXRpZXMpIHVuZCBzaWNoIGRlciBGYW1pbGllbm5hbWUgbmljaHQgYWVuZGVybiBzb2xsLCBkYW5uIGtvZW5uZW4KK3dpciBkZW4gTmFtZW4gZGllc2VyIEZhbWlsaWUgYmVpYmVoYWx0ZW4gKGQuaC4gYWx0ZXIgRXJzdGllKS4KKworV2lsbCBtYW4gd2lzc2VuLCB3ZWxjaGVyIEZhbWlsaWUgZWluIENoYXIgYW5nZWhvZXJ0IChlZ2FsLCBvYiBFcnN0aWUgb2RlcgorWndlaXRpZSksIGRhbm4gZ2VodCBkYXMgbWl0OgorIyB4Y2FsbCAvc2VjdXJlL3p3ZWl0aWVzLT5RdWVyeUZhbWlsaWUocGxheWVyX29iamVjdCkKKworRGVzIFdlaXRlcmVuIGxpZWZlcnQgZGllc2VzIE9iamVrdCBhdWNoIG5vY2ggenUgamVkZW0gWndlaXRpZSBkZW4gRXJzdGllIHVuZAorenUgamVkZW0gRXJzdGllIGRpZSBMaXN0ZSBhbGxlciBiZWthbm50ZW4gWndlaXRpZXM6CisjIHhjYWxsIC9zZWN1cmUvendlaXRpZXMtPlF1ZXJ5RXJzdGllTmFtZShwbGF5ZXJfb2JqZWN0KQorIyB4Y2FsbCAvc2VjdXJlL3p3ZWl0aWVzLT5RdWVyeUVyc3RpZVVVSUQocGxheWVyX29iamVjdCkKKyMgeGNhbGwgL3NlY3VyZS96d2VpdGllcy0+UXVlcnlad2VpdGllcyhwbGF5ZXJfb2JqZWN0KQorCitEZXIgRGF0ZW5iZXN0YW5kIGlzdCAobm9jaCkgbmljaHQgdm9sbHN0YWVuZGlnLCBkYWhlciBmZWhsZW4gZGEgbm9jaCB2aWVsZQorQ2hhcnMuIERpZSB3ZXJkZW4gYWJlciBpbiBhYnNlaGJhcmVyIFplaXQgZG9ydCBuYWNoZ2V0cmFnZW4uCisKK0RpZSBGYW1pbGllIHdpcmQgaW4gWnVrdW5mdCBnZW51dHp0LCB1bSBEaW5nZSB6dSBwZXJzb25hbGlzaWVyZW4sIHdlbGNoZSBmdWVyCitkZW4gU3BpZWxlciwgYWJlciBuaWNodCBmdWVyIGRlbiBDaGFyIGluZGl2aWR1ZWxsIHNlaW4gc29sbGVuLiBTcHJpY2g6CitwZXJzb25hbGlzaWVydCBtYW4gaXJnZW5kd2FzIHVlYmVyIGRpZSBGYW1pbGllLCBrb2VubmVuIGFsbGUgQ2hhcnMgZGllc2VyCitGYW1pbGllIGRhcyBpcmdlbmR3YXMgbnV0emVuLgorCmRpZmYgLS1naXQgYS9kb2Mvd2l6L2ZlaGxlcnRldWZlbCBiL2RvYy93aXovZmVobGVydGV1ZmVsCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjdiMGI5MTYKLS0tIC9kZXYvbnVsbAorKysgYi9kb2Mvd2l6L2ZlaGxlcnRldWZlbApAQCAtMCwwICsxLDE4MSBAQAorRGVyIEZlaGxlcnRldWZlbAorPT09PT09PT09PT09PT09PQorCitkaWUgTXVkbGliIHNwZWljaGVydCBkaWUgYXVmZ2V0cmV0ZW5lbiBGZWhsZXIgdW5kIFdhcm51bmdlbi4gRGFiZWkgd2VyZGVuIAorZm9sZ2VuZGUgRGF0ZW4gbWl0Z2VzcGVpY2hlcnQ6CistIFplaXQgKGVyc3RlcyBNYWwsIHp1bGV0enQpCistIEluIHdlbGNoZW0gT2JqZWt0IHVuZCB3ZWxjaGVtIFByb2dyYW1tIGRlciBGZWhsZXIgd2FyCistIFplaWxlbnIuCistIEZlaGxlcm1lbGR1bmcKKy0gT2JqZWt0LCBkZXNzZW4gSGVhcnRiZWF0LCBkZW4gRmVobGVyIGF1c2xvZXN0ZQorLSB0aGlzX2ludGVyYWN0aXZlKCkgYnp3LiB0aGlzX3BsYXllcigpCistIGRlbiBCZWZlaGwsIGRlbiBUSSBlaW5nZWdlYmVuIGhhdAorLSBkYXMgRW52aXJvbm1lbnQgdm9uIFRJIG9kZXIgVFAKKy0gd2llIG9mdCBkZXIgRmVobGVyIHNjaG9uIGF1ZnRyYXQKKy0gZGVyIEJhY2t0cmFjZQorLSBvYiBkZXIgRmVobGVyIGluIGVpbmVtIGNhdGNoKCkgYXVmdHJhdAorCitadXNhZXR6bGljaCB3ZXJkZW4gdm9uIFNwaWVsZXJuIHBlciAiYnVnIiwgImZlaGxlciIgb2RlciAic29ubmVuZmVobGVyIgorZ2VtZWxkZXRlIEZlaGxlciBnZXNwZWljaGVydC4KKworRGVyIEZlaGxlcnRldWZlbCBkaWVudCBudW4gZGF6dSwgc2ljaCBkaWVzZSBJbmZvcyBkYXJzdGVsbGVuIHp1IGxhc3Nlbi4gTmFjaCAKK2RlbSBDbG9uZW4gdm9uIC9vYmovdG9vbHMvZmVobGVydGV1ZmVsIGhhYnQgaWhyIGZvbGdlbmRlIE1vZWdsaWNoa2VpdGVuOgorCistIGZlaGxlcmxpc3RlIDxhdXN3YWhsIHMuIEtvbW1hbmRvIGZlaGxlcm1vZHVzPgorICBEaWVzZXIgQmVmZWhsIHN0ZWxsdCBldWNoIGVpbmUgTGlzdGUgYWxsZXIgYmVrYW5udGVuIEZlaGxlciBkYXIsIGRpZSB1bnRlcgorICBlaW5lciBVSUQgYXVmdHJhdGVuLCBmdWVyIGRpZSBpaHIgenVzdGFlbmRpZyBzZWlkICh6LkIuICJ6ZXNzdHJhIiwgCisgICJkLmluc2Vsbi56ZXNzdHJhIiwgIkdVSUxELm1hZ2llcnBhY2siLCBzLiBhdWNoIFF1ZXJ5VUlEc0ZvcldpemFyZCgpKS4gRGllCisgIExpc3RlIHVtZmFzc3QgZGllIGVpbmRldXRpZ2UgRmVobGVyLUlELCBkZW4gTGFkZW5hbWVuIGRlcyBmZWhsZXJhdXNsb2VzZW5kZW4KKyAgT2JqZWt0cyB1bmQgZGllIFVJRC4KKyAgSmUgbmFjaCBBcmd1bWVudCB3ZXJkZW4gZGl2LiBGZWhsZXIgb2RlciBXYXJudW5nZW4gYXVzZ2VnZWJlbi4gV2lyZCBrZWlucyAKKyAgdm9uIGJlaWRlbiBhbmdlZ2ViZW4sIHdpcmQgamUgbmFjaCBFaW5zdGVsbHVuZyB2b24gJ2ZlaGxlcm1vZHVzJyBhdWZnZWxpc3RldC4KKworLSBmZWhsZXJhYmZyYWdlIDxpZD4KKyAgSGllcm1pdCBsYXNzZW4gc2ljaCBkaWUgRGV0YWlsLUluZm9ybWF0aW9uZW4genUgPGlkPiBhbnplaWdlbi4gPGlkPiBiZWtvbW10CisgIGlociBlbnR3ZWRlciBhdXMgImZlaGxlcmxpc3RlIiBvZGVyIHZvbiAtZGVidWcvLWVudHdpY2tsdW5nLy13YXJudW5nZW4sIGRvcnQKKyAgd2VyZGVuIGRpZXNlIElEcyBtaXQgYXVzZ2VnZWJlbi4gT2huZSBBbmdhYmUgZGVyIDxpZD4gd2lyZCBkZXIgbGV0enRlCisgIGJldHJhY2h0ZXRlIEZlaGxlciBhdXNnZWdlYmVuLgorICBOZWJlbiBkZXIgbnVtZXJpc2NoZW4gSUQgaXN0IGhpZXJiZWkgYXVjaCBkaWUgSGFzaC1JRCBtb2VnbGljaC4KKyAgRXMga2FubiBhdWNoIGRlciBMYWRlbmFtZSBlaW5lcyBPYmpla3RzIGFuZ2VnZWJlbiB3ZXJkZW4sIGRhbm4gd2VyZGVuIGFsbGUKKyAgenUgZGllc2VtIE9iamVrdCBnZWhvZXJlbmRlbiBFaW50cmFlZ2UgYXVmIGVpbm1hbCBhbmdlemVpZ3QsIHouQi4KKyAgICBmZWhsZXJhYmZyYWdlIC9kL3VudGVyd2VsdC9yYWV1bWUvd2FsZDMKKyAgRGVyIExhZGVuYW1lIG11c3MgbWl0IGVpbmVtIC8gYmVnaW5uZW4uCisKKy0gZmVobGVybG9lc2NoZW4gPGlkPgorICBGZWhsZXIgbWl0IGRlciBJRCA8aWQ+IHp1bSBMb2VzY2hlbiBtYXJraWVyZW4gKHouQi4gd2VubiBnZWZpeHQpLiBEaWUgCisgIGVpZ2VudGxpY2ggTG9lc2NodW5nIGZpbmRldCBpbm5lcmhhbGIgdm9uIDI0aCBzdGF0dC4gRGllIEZlaGxlciB3ZXJkZW4gbmFjaCAKKyAgZGllc2VtIEJlZmVobCBuaWNodCBtZWhyIGluIGRlciBGZWhsZXJsaXN0ZSBhbmdlemVpZ3QuIE9obmUgQW5nYWJlIGRlciA8aWQ+CisgIHdpcmQgZGVyIGxldHp0ZSBiZW51dHp0ZSBGZWhsZXIgZ2Vsb2VzY2h0LgorICBXaWVkZXJob2x0IG1hbiBkZW4gQmVmZWhsLCB3aXJkIGRpZSBMb2VzY2htYXJraWVydW5nIHdpZWRlciBlbnRmZXJudC4KKyAgRXMga2FubiBhdWNoIGRlciBMYWRlbmFtZSBlaW5lcyBPYmpla3RzIGFuZ2VnZWJlbiB3ZXJkZW4sIGRhbm4gd2VyZGVuIGFsbGUKKyAgenUgZGllc2VtIE9iamVrdCBnZWhvZXJlbmRlbiBFaW50cmFlZ2UgYXVmIGVpbm1hbCBnZWxvZXNjaHQsIHouQi4KKyAgICBmZWhsZXJsb2VzY2hlbiBkL3VudGVyd2VsdC9yYWV1bWUvd2FsZDMKKworLSBmZWhsZXJlaW5nYWJlIDxvYmpla3Q+CisgIEhpZXJtaXQgbGFlc3N0IHNpY2ggcGVyIEhhbmQgZWluIEVpbnRyYWcgZnVlciBkYXMgYW5nZWdlYmVuZSBPYmpla3QgaW0KKyAgRmVobGVydGV1ZmVsIGVyc3RlbGxlbi4gRGFzIE9iamVrdCBrYW5uIG1pdCBlaW5lciBzZWluZXIgSURzIG9kZXIgc2VpbmVtCisgIHZvbGxzdGFlbmRpZ2VuIE9iamVrdG5hbWVuIGFuZ2VnZWJlbiB3ZXJkZW4uIFdpcmQga2VpbiBPYmpla3QgYW5nZWdlYmVuLAorICB3aXJkIGRpZSBVbWdlYnVuZyBkZXMgTWFnaWVycyBhbHMgT2JqZWt0IGdlbnV0enQuIEJzcDoKKyAgICBmZWhsZXJlaW5nYWJlIHNlaWwKKyAgICBmZWhsZXJlaW5nYWViIC9vYmovc2VpbCM1NjM1CisKKy0gZmVobGVycmVmcmVzaAorICBEZXIgRmVobGVydGV1ZmVsIGhhdCBlaW5lbiBad2lzY2hlbnNwZWljaGVyIGZ1ZXIgZGllIEZlaGxlcmxpc3RlLiBEaWVzZXIgCisgIEJlZmVobCBsb2VzY2h0IGRpZXNlbiBad2lzY2hlbnNwZWljaGVyIHVuZCBob2x0IGRpZSBGZWhsZXJsaXN0ZSBuZXUuCisKKy0gZmVobGVyZmlsdGVyCisgIEhpZXJtaXQgbGFlc3N0IHNpY2ggZWluIEZpbHRlciBmdWVyIFVJRHMgZWluc3RlbGxlbi4gKHMudS4pIElzdCBlciBha3RpdiwgCisgIHdlcmRlbiBwZXIgJ2ZlaGxlcmxpc3RlJyBrZWluZSBGZWhsZXIgbWVociBhbmdlemVpZ3QsIGRpZSBpbSBGaWx0ZXIKKyAgZWluZ2V0cmFnZW4gd3VyZGVuLgorCistIGZlaGxlcm1vZHVzIDxmZWhsZXJ8d2FybnVuZ2VuPgorICBFaW5zdGVsbGVuLCB3ZWxjaGUgQXJ0ZW4gdm9uIEVpbnRyYWVnZW4gaW0gRmVobGVydGV1ZmVsIHZvbSBLb21tYW5kbworICAnZmVobGVybGlzdGUnIGF1c2dlZ2ViZW4gd2VyZGVuIHNvbGw6CisgICAgbGF1ZnplaXRmZWhsZXI6IExhdWZ6ZWl0ZmVobGVyIHdlcmRlbiBhdXNnZWdlYmVuICgtZGVidWcsIC1lbnR3aWNrbHVuZykKKyAgICBsYXVmemVpdHdhcm51bmdlbjogTGF1ZnplaXR3YXJudW5nZW4gd2VyZGVuIGF1c2dlZ2ViZW4gKC13YXJudW5nZW4pCisgICAgbGFkZXplaXRmZWhsZXI6IEZlaGxlciBiZWltIExhZGVuIGVpbmVzIE9iamVrdHMgd2VyZGVuIGF1c2dlZ2ViZW4gIAorICAgIGxhZGV6ZWl0d2FybnVuZ2VuOiBXYXJudW5nZW4gYmVpbSBMYWRlbiBlaW5lcyBPYmpla3RzIHdlcmRlbiBhdXNnZWdlYmVuCisgICAgZmVobGVyaGlud2Vpc2U6IEZlaGxlciwgZGllIFNwaWVsZXIvTWFnaWVyIGFiZ2VzZXR6dCBoYWJlbgorICAgIGlkZWVuOiBJZGVlbiwgZGllIFNwaWVsZXIvTWFnaWVyIGFiZ2VzZXR6dCBoYWJlbgorICAgIHR5cG9zOiBUeXBvcywgZGllIFNwaWVsZXIvTWFnaWVyIGFiZ2VzZXR6dCBoYWJlbgorICAgIG1kOiBGZWhsZW5kZSBEZXRhaWxzLCBkaWUgU3BpZWxlci9NYWdpZXIgYWJnZXNldHp0IGhhYmVuCisgICAgZmVobGVyOiBhbGxlIG1vZWdsaWNoZW4gRmVobGVyIHdlcmRlbiBhdXNnZWdlYmVuCisgICAgd2FybnVuZ2VuOiBhbGxlIG1vZWdsaWNoZW4gV2FybnVuZ2VuIHdlcmRlbiBhdXNnZWdlYmVuCisgICAgYWxsZTogYWxsZSBGZWhsZXIgKyBXYXJudW5nZW4gd2VyZGVuIGF1c2dlZ2ViZW4KKyAgICAKKyAgICBPaG5lIEFyZ3VtZW50OiBha3R1ZWxsZW4gTW9kdXMgYXVzZ2ViZW4uCisKKy0gZmVobGVybW9uaXRvcgorICBIaWVybWl0IGxhc3NlbiBzaWNoIFVJRHMgYW5nZWJlbiwgZGllIG1hbiB6dXNhZXR6bGljaCB6dSBkZW4gZWlnZW5lbgorICBhdWNoIG5vY2ggYmVvYmFjaHRlbiB3aWxsLgorICBIaWVyYmVpIHNpbmQgYXVjaCBlaW5pZ2UgVUlELUFsaWFzZSBtb2VnbGljaCwgei5CLiAnbWFnaWVyJywgJ3JlZ2lvbicsIAorICAncC5zZXJ2aWNlJywgJ3AnIG9kZXIgJ2dpbGRlJy4KKyAgQlRXOiBuYWNoIEFlbmRlcnVuZyBkaWVzZXIgTGlzdGUgc29sbHRlIG1hbiAiZmVobGVycmVmcmVzaCIgYXVmcnVmZW4uCisKKy0gZmxvY2sgPGlkPiA8YmVtZXJrdW5nPgorICBTbyBtYXJraWVydGUgRmVobGVyIHdlcmRlbiBuaWNodCBtZWhyIGF1dG9tYXRpc2NoIChuYWNoIDMxIFRhZ2VuIG9obmUKKyAgQWVuZGVydW5nKSBnZWxvZXNjaHQuIEFCRVI6IFNvbGNoZXJhcnQgZ2VzcGVycnRlIEZlaGxlciB3ZXJkZW4gbW9tZW50YW4KKyAgX25pZW1hbHNfIGF1dG9tYXRpc2NoIGdlbG9lc2NodCwgZGVzaGFsYiBkZW5rdCBiaXR0ZSBkYXJhbiwgc2llIGVudHdlZGVyCisgIHNlbGJlciB6dSBsb2VzY2hlbiBvZGVyIHNpZSB3aWVkZXIgZnJlaXp1Z2ViZW4sIHdlbm4gaWhyIHNpZSBuaWNodCBtZWhyCisgIGJyYXVjaHQuCisKKy0gZnVubG9jayA8aWQ+IDxiZW1lcmt1bmc+CisgIEdpYnQgZGVuIEZlaGxlciB3aWVkZXIgenVtIGF1dG9tYXRpc2NoZW4gTG9lc2NoZW4gZnJlaS4KKworLSBmZml4IDxpZD4gPGJlbWVya3VuZyB6dW0gZml4PgorICBGZWhsZXIgd2lyZCBhbHMgImdlZml4dCIgbWFya2llcnQgdW5kIGVpbmUgTWFpbCBhbiBhbGxlIGZ1ZXIgZGFzIGJ1Z2dlbmRlCisgIE9iamVrdGUgenVzdGFlbmRpZ2VuIE1hZ2llciBnZXNjaGlja3QgKHNvd2VpdCBiZWthbm50KS4gQW5zY2hsaWVzc2VuZCAKKyAgd2VyZGVuIGRpZSBGZWhsZXIgdm9tIEZlaGxlcnRldWZlbCBuaWNodCBtZWhyIGFuZ2V6ZWlndC4KKyAgSW0gRmFsbGUgdm9uIGR1cmNoIFNwaWVsZXIgYmVyaWNodGV0ZW4gRmVobGVybiB3aXJkIGRlbSBqZXdlaWxpZ2VuIFNwaWVsZXIKKyAgYmVpbSBGaXhlbiBlYmVuZmFsbHMgZWluZSBNYWlsIGdlc2NoaWNrdC4KKyAgQWxzIGdlZml4dCBtYXJraWVydGUgRmVobGVyIHdlcmRlbiBuYWNoIGVpbmlnZXIgWmVpdCBnZWxvZXNjaHQuCisgIEVzIGVtcGZpZWhsdCBzaWNoIGZ1ZXIgZWlnZW5lIEZlaGxlciwgZGllc2UgbmFjaCBCZWhlYmVuIGVpbmZhY2ggenUKKyAgTG9lc2NoZW4sIHdlbm4gbWFuIGtlaW5lIE1haWwgdWViZXIgZGVuIEZlaGxlciBlcmhhbHRlbiBtb2VjaHRlLgorCistIGZ1bmZpeCA8aWQ+IDxiZW1lcmt1bmcgd2FydW0gZGVyIEJ1Z2ZpeCBzY2hlaXNzZSB3YXIgOyk+CisgIFdlbm4gaWhyIGJpcyB6dSBkZXIgIkFyY2hpdmllcnVuZyIgZ2VmaXh0ZXIgRmVobGVyIGZlc3RzdGVsbHQsIGRhc3MgaWhyIGRlbiAKKyAgRmVobGVyIHdvaGwgZG9jaCBuaWNodCBnZWZpeHQgaGFidCwga29lbm50IGlociBkYXMgd2llZGVyIHJ1ZWNrZ2FlbmdpZyAKKyAgbWFjaGVuLgorCistIGZub3RpeiA8aWQ+IDxiZW1lcmt1bmc+CisgIFdlbm4gZXVjaCBhbiBzbyBlaW5lbSBGZWhsZXIgd2FzIGF1ZmZhZWxsdCBvZGVyIGlociBlaW5lIElkZWUgaGFidCwga29lbm50IGlocgorICBkYXMgc28gYWxzbyAidmVyZXdpZ2VuIi4gTm90aXplbiBrYW5uIGplZGVyIE1hZ2llciBhbiBGZWhsZXIgZHJhbmhhZW5nZW4sCisgIGRhZnVlciBicmF1Y2h0IG1hbiBrZWluZSBiZXNvbmRlcmVuIChTY2hyZWliKVJlY2h0ZS4gRGllIE5vdGl6ZW4gd2VyZGVuIHZvbQorICBGZWhsZXJ0ZXVmZWwgYXVzZ2VnZWJlbiB1bmQgc3RlaGVuIGF1Y2ggaW0gQ0hBTkdFTE9HLgorICBBbm1lcmt1bmc6IEVzIGdpYnQgKGFic2ljaHRsaWNoKSBrZWluZSBNb2VnbGljaGtlaXQsIE5vdGl6ZW4gd2llZGVyIHp1CisgIGxvZXNjaGVuLgorCistIGZ1ZWJlcnRyYWdlIDxpZD4gPG5ld3VpZD4gPGJlbWVya3VuZz4KKyAgV2VubiBpaHIgZWluZW4gRmVobGVyIGhhYnQsIGZ1ZXIgZGVuIGlociBuaWNodCB6dXN0YWVuZGlnIHNlaWQsIHdlaWwgZGVyCisgIFVyc3BydW5nIGRlcyBGZWhsZXJzIG5pY2h0IGluIGVpbmVtIGV1cmVyIEZpbGVzIGxpZWd0LCBrb2VubnQgaWhyIGRpZXNlbgorICBGZWhsZXIgYW4gZWluZSBhbmRlcmUgVUlEIG1pdCBlaW5lciBCZW1lcmt1bmcgdWViZXJ0cmFnZW4uIERhbmFjaCBpc3QgZGVyCisgIE1hZ2llciB2b24gPG5ld3VpZD4genVzdGFlbmRpZyB1bmQgaGF0IFNjaHJlaWJyZWNodGUgYXVmIGRlbiBGZWhsZXIuCisgIDxuZXd1aWQ+IGthbm4gei5CLiBzb3dhcyB3aWUgJ2QuaW5zZWxuLnplc3N0cmEnIG9kZXIgJ3plc3N0cmEnIHNlaW4uIExpZWd0CisgIGRlciBGZWhsZXIgaW4gZWluZW0gT2JqZWt0IGluIC9kLywgc29sbHRldCBpaHIgYXVmIGplZGVuIEZhbGwKKyAgZC5yZWdpb24ubWFnaWVyIGJlbnV0emVuLCBkYW1pdCBnZ2YuIGRlciBSTSBkZXIgUmVnaW9uIGF1Y2ggenVzdGFlbmRpZyB3aXJkLgorCitVSUQtRmlsdGVyOgorICBhKSBmZWhsZXJmaWx0ZXIgYW4KKyAgICAgU2NoYWx0ZXQgZGVuIEZpbHRlciBlaW4KKyAgYikgZmVobGVyZmlsdGVyIGF1cworICAgICBzY2hhbHRldCBkZW4gRmlsdGVyIGF1cworICBjKSBmZWhsZXJmaWx0ZXIgYWxsZQorICAgICBzY2hhbHRldCBkZW4gRmlsdGVyIGVpbiBfdW5kXyBzY2hyZWlidCBhbGxlIFVJRHMsIGZ1ZXIgZGllIG1hbiB6dXN0YWVuZGlnCisgICAgIGlzdCwgaW4gZGVuIEZpbHRlciwgZXMgd2lyZCBkYW5uIG5pY2h0cyBtZWhyIGFuZ2V6ZWlndC4KKyAgZCkgZmVobGVyZmlsdGVyIGtlaW5lCisgICAgIHNjaGFsdGV0IGRlbiBGaWx0ZXIgZWluIF91bmRfIGxvZXNjaHQgZGVuIEZpbHRlciwgZC5oLiBlcyB3aXJkIHRyb3R6ZGVtCisgICAgIGVyc3RtYWwgbm9jaCBuaXggZ2VmaWx0ZXJ0Li4KKyAgZSkgZmVobGVyZmlsdGVyICt6ZXNzdHJhICtkLmluc2Vsbi56ZXNzdHJhIC1kLmViZW5lLnplc3N0cmEKKyAgICAgRnVlZ3QgInplc3N0cmEiIHVuZCAiZC5pbnNlbG4uemVzc3RyYSIgZGVuIGFrdHVlbGxlbiBGaWx0ZXJlaW5zdGVsbHVuZ2VuCisgICAgIGhpbnp1IHVuZCBsb2VzY2h0ICJkLmViZW5lLnplc3N0cmEiIGF1cyBkZW0gRmlsdGVyLgorICAgICBCZWxpZWJpZ2UgS29tYmluYXRpb25lbiBtb2VnbGljaC4gT2huZSAtIG9kZXIgKyBhbSBBbmZhbmcgd2lyZCBqZXdlaWxzCisgICAgIGludmVydGllcnQsIGFsc28gaGluenVnZWZ1ZWd0LCB3ZW5uIG5vY2ggbmljaHQgZHJpbiB1bmQgZW50ZmVybnQsIHdlbm4KKyAgICAgc2Nob24gaW4gZGVyIExpc3RlLgorCitGZWhsZXItTW9uaXRvcjoKKyAgYSkgZmVobGVybW9uaXRvciBrZWluZQorICAgICBMb2VzY2h0IGFsbGUgYmVvYmFjaHRldGVuIFVJRHMKKyAgYikgZmVobGVybW9uaXRvciArYXRhbXVyIC1kLnBvbGFyLmF0YW11cgorICAgICBGdWVndCAiYXRhbXVyIiBkZXIgQmVvYmFjaHR1bmdzbGlzdGUgaGluenUgdW5kIGVudGZlcm50ICJkLnBvbGFyLmF0YW11ciIuCisgICAgIEJlbGllYmlnZSBLb21iaW5hdGlvbmVuIG1vZWdsaWNoLiBPaG5lIC0gb2RlciArIGFtIEFuZmFuZyB3aXJkIGpld2VpbHMKKyAgICAgaW52ZXJ0aWVydCwgYWxzbyBoaW56dWdlZnVlZ3QsIHdlbm4gbm9jaCBuaWNodCBkcmluIHVuZCBlbnRmZXJudCwgd2VubgorICAgICBzY2hvbiBpbiBkZXIgTGlzdGUuCisKK1p1Z3JpZmZzcmVjaHRlOgorICAtIExlc2VuIHVuZCBBbmhhZW5nZW4gKE5vdGl6ZW4sIExvZXNjaHNwZXJyZW4pIGRhcmYgamVkZXIgTWFnaWVyCisgIC0gTG9lc2NoZW4sIEZpeGVuIHVuZCBVSUQgbmV1IHp1b3JkbmVuIGR1ZXJmZW4gZnVlciBkaWUgVUlEIHp1c3RhZW5kaWdlIE1hZ2llcgorICAtIEZpeGVzIHp1cnVlY2t6aWVoZW4gZGFyZiBqZWRlciBNYWdpZXIgKHNvbGFuZ2UgaXNzdWUgbmljaHQgZXhwaXJlZCkKKyAgLSBFTSsgZHVlcmZlbiBhbGxlcworCitSYW5kYmVtZXJrdW5nOgorICBNb2VjaHRlIG1hbiBuaWNodCwgZGFzcyB2b20gTWFnaWVyIHNlbGJzdCBhdXNnZWxvZXN0ZSBGZWhsZXIgaW4gL3BsYXllcnMvCisgIHByb3Rva29sbGllcnQgd2VyZGVuLCBrYW5uIGRlciBNYWdpZXIgX2luIHNpY2hfIGRpZSBQcm9wIFBfRE9OVF9MT0dfRVJST1JTCisgIChhdXMgL3NlY3VyZS9lcnJvcmQuaCkgYXVmIDEgc2V0emVuLgorICBBQ0hUVU5HOiBkYXMgYmVkZXV0ZXQsIGRhc3MgdWViZXIgRmVobGVyIGtlaW5lIEluZm9ybWF0aW9uZW4gbWVocgorICB2b3JsaWVnZW4sIGRpZSBiZWltIEZpeGVuIGhlbGZlbiBrb2VubmVuLiBCZWRlbmt0IGRhcyBiaXR0ZSwgd2VubiBpaHIgZGllCisgIFByb3Agc2V0enQuCisgCisKK1NJRUhFIEFVQ0g6CisgUXVlcnlVSURzRm9yV2l6YXJkKCksIFF1ZXJ5V2l6YXJkRm9yVUlEKCkKKwpkaWZmIC0tZ2l0IGEvZG9jL3dpei9mZXJua2FtcGZ3YWZmZW4gYi9kb2Mvd2l6L2Zlcm5rYW1wZndhZmZlbgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5mOGRkMjg1Ci0tLSAvZGV2L251bGwKKysrIGIvZG9jL3dpei9mZXJua2FtcGZ3YWZmZW4KQEAgLTAsMCArMSwxMjggQEAKK1p1c2FtbWVuZmFzc3VuZyB6dSBGZXJua2FtcGZ3YWZmZW4KKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKworICBTY2h1c3N3YWZmZToKKyAgPT09PT09PT09PT09CisgICAgU3RhbmRhcmRvYmpla3Q6IC9zdGQvcmFuZ2VkX3dlYXBvbi5jCisKKyAgICBQX1dDOiAgICAgICAgICAgZ2lidCBkZW4gU2NoYWRlbiBpbSBOYWhrYW1wZiBhbiAod2VubiBtYW4gZGFtaXQgYXVmIGVpbmVuCisgICAgICAgICAgICAgICAgICAgIEdlZ25lciBlaW5wcnVlZ2VsdC4gRGVmYXVsdCAzMC4KKyAgICBQX1FVQUxJVFk6ICAgICAgbnVyIGJlaW0gTmFoa2FtcGYgcmVsZXZhbnQuIERlZmF1bHQgMTAwLgorICAgIFBfTlJfSEFORFM6ICAgICBCb2VnZW4gdW5kIEFybWJydWVzdGUgc2luZCBpbiBqZWRlbSBGYWxsIHp3ZWloYWVuZGlnLgorICAgIFBfU0hPT1RJTkdfV0M6ICBEaWUgQmFzaXMtV2FmZmVua2xhc3NlIGRlciBGZXJud2FmZmUuCisgICAgUF9SQU5HRTogICAgICAgIFJlaWNod2VpdGUgZGVyIFdhZmZlLiBEZWZhdWx0IDUwLgorICAgIFBfU1RSRVRDSF9USU1FOiBBbnphaGwgZGVyIFJ1bmRlbiwgZGllIHp1bSBMYWRlbi9TcGFubmVuIGRlciBXYWZmZQorICAgICAgICAgICAgICAgICAgICBiZW5vZXRpZ3Qgd2VyZGVuLiBEZWZhdWx0IDEuCisgICAgUF9BTU1VTklUSU9OOiAgIEJlbm9ldGlndGVyIE11bml0aW9uc3R5cC4KKworICAgIEVpbmUgSGl0RnVuYyB3aXJrdCBzaWNoIGF1ZiBkaWUgUF9XQyBhdXMsIG5pY2h0IGF1ZiBQX1NIT09USU5HX1dDIQorCisgICAgTWV0aG9kZW46CisgICAgc3RhdGljIGludCBjbWRfc2hvb3Qoc3RyaW5nIHN0cik7CisgICAgKiBCZWZlaGxzYXVzd2VydHVuZyB1bmQgU2NodXNzdm9yYmVyZWl0dW5nLCB3aXJkIGR1cmNoCisgICAgICBBZGRDbWQoICh7InNjaGllc3MiLCAic2NoaWVzc2UifSksICJjbWRfc2hvb3QiKTsKKyAgICAgIHZlcmtudWVwZnQKKworICAgIHN0YXRpYyBpbnQgc2hvb3RfZGFtKG1hcHBpbmcgc2hvb3QpOworICAgICogU2NoYWRlbnNlcm1pdHRsdW5nCisKKyAgICBzdGF0aWMgc3RyaW5nIEZpbmRSYW5nZWRUYXJnZXQoc3RyaW5nIHN0ciwgbWFwcGluZyBzaG9vdCk7CisgICAgKiBHZWduZXJlcm1pdHRsdW5nCisKKyAgTXVuaXRpb246CisgID09PT09PT09PQorICAgIFN0YW5kYXJkb2JqZWt0OiBOdXR6dW5nIHZvbiAvc3RkL3VuaXQgaXN0IGVtcGZvaGxlbgorCisgICAgUF9TSE9PVElOR19XQzogbGVndCBkaWUgTXVuaXRpb25zc3RhZXJrZSBmZXN0CisgICAgUF9EQU1fVFlQRTogICAgbGVndCBkaWUgU2NoYWRlbnNhcnQgZGVzIFNjaHVzc2FuZ3JpZmZzIGZlc3QKKworICAgIEVpbmUgSGl0RnVuYyBpbiBkZXIgTXVuaXRpb24gd2lya3Qgc2ljaCBhdWYgUF9TSE9PVElOR19XQyBhdXMhCisKKyAgQWxsZ2VtZWluZXM6CisgID09PT09PT09PT09PQorICAgIEluIGRlciBXYWZmZSBsZWd0IG1hbiB1ZWJlciBQX0FNTVVOSVRJT04gZmVzdCwgd2VsY2hlIEFydCBNdW5pdGlvbgorICAgIGRhbWl0IHZlcnNjaG9zc2VuIHdlcmRlbiBrYW5uLiBJbiBkZXIgTXVuaXRpb24gbXVzcyBkaWVzZSBNdW5pdGlvbgorICAgIGF1Y2ggYWxzIElEIGdlc2V0enQgd2VyZGVuLgorCisgICAgVWViZXIgUF9TVFJFVENIX1RJTUUgbGVndCBtYW4gZmVzdCwgYWxsZSB3aWV2aWVsIFJ1bmRlbiBkaWUKKyAgICBGZXJua2FtcGZ3YWZmZSBhYmdlZmV1ZXJ0IHdlcmRlbiBrYW5uIChkZWZhdWx0OiAxKS4KKworICAgIERlciB2ZXJ1cnNhY2h0ZSBTY2hhZGVuIHdpcmQgYXVzIGRlciBTdGFlcmtlIGRlciBGZXJua2FtcGZ3YWZmZQorICAgIHVuZCBkZXIgU3RhZXJrZSBkZXIgTXVuaXRpb24gYmVzdGltbXQuIEluIGJlaWRlbiB3aXJkIGRpZXNlIGluIGRlcgorICAgIFByb3BlcnR5IFBfU0hPT1RJTkdfV0MgYW5nZWdlYmVuLgorCisgICAgWnVzYWV0emxpY2gga2FubiBtYW4gaW4gUF9SQU5HRSBkaWUgUmVpY2h3ZWl0ZSBkZXIgRmVybmthbXBmd2FmZmUKKyAgICBmZXN0bGVnZW4uIEhhdCBtYW4gZWluZW4gUmF1bSBBLCBkZXIgc2ljaCBpbm5lcmhhbGIgZWluZXMgYW5kZXJlbgorICAgIFJhdW1lcyBiZWZpbmRldCAoei5CLiBUcmFuc3BvcnRlciksIHNvIGthbm4gbWFuIG1pdHRlbHMgUF9TSE9PVElOR19BUkVBCisgICAgZGVzc2VuICdHcm9lc3NlJyBmZXN0bGVnZW4uIE1pdCBlaW5lciBXYWZmZSwgZGVyZW4gUF9SQU5HRSBtaW5kZXN0ZW5zCisgICAgZ2xlaWNoIGRpZXNlbSBaYWhsZW53ZXJ0IGlzdCwga2FubiBhdXMgZGllc2VtIFJhdW0gaGVyYXVzIGdlc2Nob3NzZW4KKyAgICB3ZXJkZW4uCisgICAgQWx0ZXJuYXRpdiBrYW5uIG1hbiBpbiBBIGVpbmVuIGFuZGVyZW4gUmF1bSBCKWluIGRpZSBQcm9wZXJ0eQorICAgIFBfVEFSR0VUX0FSRUEgc2NocmVpYmVuLgorCitCRUlTUElFTDoKKyAgICAvLyAjMSBzaWVoZSBhdWNoIC9kb2MvYmVpc3BpZWxlL2Zlcm53YWZmZW4gZnVlciBsYWRiYXJlbiBDb2RlCisKKyAgICAvLyAjMiBlaW5lIGVpbmZhY2hlLCBhYmVyIGd1dGUgU2NobGV1ZGVyCisgICAgaW5oZXJpdCAiL3N0ZC9yYW5nZWRfd2VhcG9uIjsKKworICAgIHZvaWQgY3JlYXRlKCkgeworICAgICAgaWYgKCFjbG9uZXAodGhpc19vYmplY3QoKSkpIHJldHVybjsKKyAgICAgIDo6Y3JlYXRlKCk7CisKKyAgICAgIFNldFByb3AoUF9TSE9SVCwgIkVpbmUgU2NobGV1ZGVyIik7CisgICAgICBTZXRQcm9wKFBfSU5GTywKKyAgICAgICAgIkRpZSBTeW50YXggbGF1dGV0OiBzY2hsZXVkZXIgPGdlc2Nob3NzPiBhdWYgPHppZWw+XG4iKTsKKyAgICAgIC8vIHNvbnN0aWdlIE9iamVrdHByb3BzIC4uLgorCisgICAgICBSZW1vdmVDbWQoKHsic2NoaWVzcyIsICJzY2hpZXNzZSJ9KSk7IC8vIGVudGZlcm5lIERlZmF1bHQtS29tbWFuZG8KKyAgICAgIEFkZENtZCgoeyJzY2hsZXVkZXIiLCAic2NobGV1ZGVyZSJ9KSwgIydjbWRfc2hvb3QpOworCisgICAgICBTZXRQcm9wKFBfV0MsIDEwKTsgICAgICAgICAgLy8gZWluZSBTY2hsZXVkZXIgaXN0IGVyc3RtYWwgaGFybWxvcworICAgICAgU2V0UHJvcChQX0RBTV9UWVBFLCBEVF9XSElQKTsKKworICAgICAgU2V0UHJvcChQX1NIT09USU5HX1dDLCA5MCk7IC8vIHppZW1saWNoIGd1dGUgU2NobGV1ZGVyCisgICAgICBTZXRQcm9wKFBfTlJfSEFORFMsIDEpOyAgICAgLy8gZWluaGFlbmRpZworICAgICAgU2V0UHJvcChQX1dFQVBPTl9UWVBFLCBXVF9SQU5HRURfV0VBUE9OKTsKKyAgICAgIFNldFByb3AoUF9BTU1VTklUSU9OLCBNVU5fU1RPTkUpOworICAgICAgU2V0UHJvcChQX1NUUkVUQ0hfVElNRSwgMSk7CisgICAgICBTZXRQcm9wKFBfUkFOR0UsIDMwKTsgICAgICAgLy8gMzAgd2VpdCBrYW5uIG1hbiBkYW1pdCBudXIgc2NobGV1ZGVybgorICAgIH0KKworICAgIC8vICMzIHBhc3NlbmRlIE11bml0aW9uCisgICAgaW5oZXJpdCAiL3N0ZC91bml0IjsKKworICAgIHZvaWQgY3JlYXRlKCkgeworICAgICAgaWYgKCFjbG9uZXAodGhpc19vYmplY3QoKSkpIHJldHVybjsKKyAgICAgIDo6Y3JlYXRlKCk7CisKKyAgICAgIFNldFByb3AoUF9OQU1FLCAoeyJTY2hsZXVkZXJzdGVpbiIsICJTY2hsZXVkZXJzdGVpbmUifSkgKTsKKyAgICAgIFNldFByb3AoUF9MT05HLCBicmVha19zdHJpbmcoCisgICAgICAgICJIZXJ2b3JyYWdlbmQgZ2Vmb3JtdGUgU2NobGV1ZGVyc3RlaW5lIGF1cyBNdXJtZWxuaXQuIiwgNzgpKTsKKyAgICAgIFNldFByb3AoUF9HRU5ERVIsIE1BTEUpOworICAgICAgU2V0UHJvcChQX0FNT1VOVCwgMSk7CisgICAgICBTZXRQcm9wKFBfU0hPT1RJTkdfV0MsIDUwKTsKKyAgICAgIFNldFByb3AoUF9EQU1fVFlQRSwgKHtEVF9CTFVER0VPTn0pKTsKKyAgICAgIFNldFByb3AoUF9XRUFQT05fVFlQRSwgV1RfQU1NVSk7CisgICAgICBTZXRQcm9wKFBfTUFURVJJQUwsIE1BVF9TVE9ORSk7CisKKyAgICAgIFNldEdyYW1zUGVyVW5pdHMoNjAsMSk7CisgICAgICBTZXRDb2luc1BlclVuaXRzKDI1LDEpOworCisgICAgICBBZGRJZChNVU5fU1RPTkUpOworICAgICAgQWRkU2luZ3VsYXJJZCgoeyJzdGVpbiIsICJzY2hsZXVkZXJzdGVpbiJ9KSk7CisgICAgICBBZGRQbHVyYWxJZCgoeyJzdGVpbmUiLCAic2NobGV1ZGVyc3RlaW5lIn0pKTsKKyAgICAgIEFkZENsYXNzKENMX0FNTVVOSVRJT04pOworICAgIH0KKworU0lFSEUgQVVDSDoKKyAgICBHZW5lcmVsbDogIFBfU0hPT1RJTkdfV0MsIFBfU1RSRVRDSF9USU1FLCBQX0FNTVVOSVRJT04KKyAgICBNZXRob2RlbjogIEZpbmRSYW5nZWRUYXJnZXQoTCksIHNob290X2RhbShMKQorICAgIEdlYmlldDogICAgUF9SQU5HRSwgUF9TSE9PVElOR19BUkVBLCBQX1RBUkdFVF9BUkVBCisgICAgV2FmZmVuOiAgICBQX1dFQVBPTl9UWVBFLCBQX1dDLCBQX0VRVUlQX1RJTUUsIFBfTlJfSEFORFMKKyAgICBLYW1wZjogICAgIEF0dGFjayhMKSwgRGVmZW5kKEwpLCBQX0RJU0FCTEVfQVRUQUNLLCBQX0FUVEFDS19CVVNZCisgICAgVGVhbTogICAgICBQcmVzZW50UG9zaXRpb24oTCkKKyAgICBTb25zdGlnZXM6IFBfTk9HRVQKKyAgICBCYWxhbmNlOiAgIGZlcm53YWZmZW4sIHdhZmZlbiwgYmFsYW5jZQorCisyOS5KdWwgMjAxNCBHbG9pbnNvbgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2RvYy93aXovZmVybndhZmZlbiBiL2RvYy93aXovZmVybndhZmZlbgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi45NDdjNTE3Ci0tLSAvZGV2L251bGwKKysrIGIvZG9jL3dpei9mZXJud2FmZmVuCkBAIC0wLDAgKzEsMTE4IEBACisKKyBGRVJOV0FGRkVOCisKKyAgYS4gQWxsZ2VtZWluZXMKKyAgICAgRmVybndhZmZlbiBzaW5kIGVpbmUgcmVsYXRpdiBuZXVlIEVyZ2Flbnp1bmcgenVtIEthbXBmc3lzdGVtIGRpZXNlcyBNdWRzLCAKKyAgICAgZGllIG1pdCBkZXIgRWluZnVlaHJ1bmcgZGVzIFRlYW1rYW1wZmVzIGVyc3QgbW9lZ2xpY2ggd3VyZGUuCisgICAgIFNjaG9uIGJpc2hlciBnYWIgZXMgZWluemVsbmUgRmVybndhZmZlbiAoei5CLiBSb2JpbnMgQm9nZW4pLCBkaWUgYWJlcgorICAgICBJbnNlbGxvZXN1bmdlbiB1bmQgU29uZGVyZmFlbGxlIHdhcmVuLiBEYXMgbmV1ZSBTdGFuZGFyZG9iamVrdCBmdWVyIAorICAgICBGZXJud2FmZmVuIGlzdCBudW4gL3N0ZC9yYW5nZWRfd2VhcG9uLmMsIGRhcyBkaWUgbm9ldGlnZSBGdW5rdGlvbmFsaXRhZXQgCisgICAgIGJpZXRldCB1bmQgbGVpY2h0IHVlYmVyIFByb3BlcnRpZXMgenUga29uZmlndXJpZXJlbiBpc3QuIE1pdCBGZXJud2FmZmVuIAorICAgICBzaW5kIHVlYnJpZ2VucyBhdXNuYWhtc2xvcyBXYWZmZW4gZ2VtZWludCwgZGllIE11bml0aW9uIGJlbm9ldGlnZW4sIAorICAgICBuaWNodCBldHdhIFNwZWVyZSBvZGVyIGRlcmdsZWljaGVuLgorCisgICoqIEJpc2hlciBzaW5kIGFsbGUgRmVybndhZmZlbiBhdXNuYWhtc2xvcyBnZW5laG1pZ3VuZ3NwZmxpY2h0aWcsIGRhcyAgKioKKyAgKiogZ2lsdCBhdWNoIGZ1ZXIgamVnbGljaGUgTXVuaXRpb24uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKgorICAgICAKKyAgYi4gUHJvcGVydGllcworICAgICBQX1dDCisgICAgICAgIFZvcnNpY2h0IG1pdCBkaWVzZXIgUHJvcGVydHkuIEJlaSBGZXJud2FmZmVuIGdpYnQgc2llIF9udXJfIGRlbgorICAgICAgICBTY2hhZGVuIGJlaSBad2Vja2VudGZyZW1kdW5nIGRlciBXYWZmZSBhbHMgS251ZXBwZWwgYW4uIAorICAgICAgICBEZW1lbnRzcHJlY2hlbmQgaXN0IGRpZXNlciBXZXJ0IGV4dHJlbSBuaWVkcmlnIHp1IGhhbHRlbi4KKyAgICAgICAgU3RhbmRhcmR3ZXJ0IGlzdCBoaWVyIDMwLCBkZXIgYXVjaCBudXIgaW4gQXVzbmFobWVmYWVsbGVuIAorICAgICAgICB1ZWJlcnNjaHJpdHRlbiB3ZXJkZW4gc29sbHRlLiBLYXVtIGVpbmUgQXJtYnJ1c3Qgb2RlciBlaW4gQm9nZW4gCisgICAgICAgIHRhdWd0IG51bm1hbCBhbHMgZ3Jvc3NhcnRpZ2UgTmFoa2FtcGZ3YWZmZS4KKworICAgICBQX1FVQUxJVFkKKyAgICAgICAgV2lyZCBudXIgYmVpbSBOYWhrYW1wZiBtaXQgZGVyIFdhZmZlIGJlYWNodGV0LiBTdGFuZGFyZG1hZXNzaWcgYXVmCisgICAgICAgIDEwMCBnZXNldHp0LCBkYSBCb2VnZW4gdW5kIEFybWJydWVzdGUgbGVpY2h0IGJlc2NoYWVkaWd0IHdlcmRlbiwKKyAgICAgICAgd2VubiBtYW4gZGFtaXQgYXVmIGplbWFuZGVuIGVpbnBydWVnZWx0LgorCisgICAgIFBfSElUX0ZVTkMgCisgICAgICAgIEhpdEZ1bmMgZnVlciBkZW4gX05haGthbXBmXy4gSGF0IGJlaW0gU2NodXNzIG1pdCBkZXIgV2FmZmUga2VpbmVuCisgICAgICAgIEVpbmZsdXNzLiAKKyAgICAgICAgICAgICAgICAKKyAgICAgUF9OUl9IQU5EUworICAgICAgICBCb2VnZW4gdW5kIEFybWJydWVzdGUgc2luZCBpbiBqZWRlbSBGYWxsIHp3ZWloYWVuZGlnLiBFaW5oYWVuZGlnZQorICAgICAgICBGZXJud2FmZmVuIHNpbmQgYWJlciBkZW5rYmFyIChTY2hsaW5nZW4genVtIFNjaGxldWRlcm4ga2xlaW5lciAKKyAgICAgICAgU3RlaW5lIHouQi4pCisgICAgICAgIAorICAgICBQX1NIT09USU5HX1dDCisgICAgICAgIERpZSBCYXNpcy1XYWZmZW5rbGFzc2UgZGVyIEZlcm53YWZmZS4gWnUgaWhyIHdpcmQgZGllIFdhZmZlbmtsYXNzZQorICAgICAgICBkZXIgTXVuaXRpb24gYWRkaWVydCwgdW0gZGVuIGVuZGd1ZWx0aWdlbiBBbmdyaWZmc3dlcnQgYmVpbSBTY2h1c3MKKyAgICAgICAgenUgYmVyZWNobmVuLgorICAgICAKKyAgICAgUF9SQU5HRSAKKyAgICAgICAgUmVpY2h3ZWl0ZSBkZXIgV2FmZmUgaW4gTWV0ZXJuLiBXaWNodGlnLCB3ZW5uIGF1cyBDb250YWluZXJuIAorICAgICAgICAoV2FjaHR1ZXJtZW4sIFNjaGlmZmVuLCBldGMuKSBuYWNoIGF1c3NlbiBnZXNjaG9zc2VuIHdpcmQuCisgICAgICAgIERhbWl0IGRhcyBmdW5rdGlvbmllcnQsIG11c3MgZGllc2VyIFdlcnQgaG9laGVyIHNlaW4gYWxzIGRlcgorICAgICAgICBpbSBDb250YWluZXIgZGVmaW5pZXJ0ZSAoc3RlaHQgZG9ydCBpbiBkZXIgUF9TSE9PVElOR19BUkVBKS4KKyAgICAKKyAgICAgUF9TVFJFVENIX1RJTUUKKyAgICAgICAgQW56YWhsIGRlciBSdW5kZW4sIGRpZSB6dW0gTGFkZW4vU3Bhbm5lbiBkZXIgV2FmZmUgYmVub2V0aWd0CisgICAgICAgIHdlcmRlbi4gMSBpc3QgaGllciBkZXIgU3RhbmRhcmR3ZXJ0LCBkYXMgYmVkZXV0ZXQsIGVzIGthbm4gamVkZQorICAgICAgICBSdW5kZSBnZXNjaG9zc2VuIHdlcmRlbi4KKyAgICAgCisgICAgIFBfQU1NVU5JVElPTgorICAgICAgICBCZW5vZXRpZ3RlciBNdW5pdGlvbnN0eXAuIEhpZXIgaXN0IGVpbmUgZGVyIG1vZWdsaWNoZW4gS29uc3RhbnRlbgorICAgICAgICAoTVVOXyopIGVpbnp1c2V0emVuICh6LkIuIE1VTl9BUlJPVyBmdWVyIEJvZWdlbikuCisgICAgIAorICAgICBQX05PR0VUCisgICAgICAgIEhhdCBiZWkgRmVybndhZmZlbiBlaW5lIHp1c2FldHpsaWNoZSBCZWRldXR1bmcuIFdlbm4gZ2VzZXR6dCwgbXVzcworICAgICAgICBkaWUgV2FmZmVuIG5pY2h0IGdlenVlY2t0IHdlcmRlbiwgdW0gc2llIGFiZmV1ZXJuIHp1IGtvZW5uZW4uIERhcworICAgICAgICBpc3Qgei5CLiBmdWVyIEthdGFwdWx0ZSBnZWRhY2h0LCBkaWUgaW0gUmF1bSBzdGVoZW4uCisgICAgICAgIAorICAgICBGdWVyIGRpZSBNdW5pdGlvbiBnaWJ0IGVzIGtlaW4gU3RhbmRhcmRvYmpla3QuIFdpY2h0aWcgaXN0IG51ciwgZGFzcyAKKyAgICAgZGllIGVudHNwcmVjaGVuZGVuIFByb3BlcnRpZXMgZ2VzZXR6dCBzaW5kLiBOb3JtYWxlcndlaXNlIHNvbGx0ZSBkaWUgCisgICAgIE11bml0aW9uIG5hdHVlcmxpY2ggZWluZSBVbml0IHNlaW4sIGFiZXIgYXVjaCBFaW56ZWxvYmpla3RlIChlaW4KKyAgICAgYmVzb25kZXJlciBQZmVpbCBvZGVyIGVpbiBncm9zc2VyIFN0ZWluIGZ1ZXIgZWluIEthdGFwdWx0KSBzaW5kIAorICAgICBtb2VnbGljaC4KKworICAgICBQcm9wZXJ0aWVzIGZ1ZXIgZGllIE11bml0aW9uIHNpbmQ6CisgICAgIAorICAgICBQX1NIT09USU5HX1dDCisgICAgICAgIERpZSBXYWZmZW5rbGFzc2UgZGVyIE11bml0aW9uLiBXaXJkIHp1ciBXQyBkZXIgV2FmZmUgYWRkaWVydC4KKyAgICAgICAgCisgICAgIFBfREFNX1RZUEUKKyAgICAgICAgU2NoYWRlbnN0eXAgZGVyIE11bml0aW9uLiBTb2xsdGUgbm9ybWFsZXJ3ZWlzZSBEVF9QSUVSQ0UgZnVlciAKKyAgICAgICAgUGZlaWxlIGFsbGVyIEFydCB1bmQgRFRfQkxVREdFT04gZnVlciBzdHVtcGZlIE11bml0aW9uIHdpZSBTdGVpbmUKKyAgICAgICAgc2Vpbi4gTWFnaXNjaGUgU2NoYWRlbnNhcnRlbiBzaW5kIGFiZXIgbmF0dWVybGljaCBtb2VnbGljaC4KKyAgICAgICAgCisgICAgIFBfSElUX0ZVTkMKKyAgICAgICAgSGl0RnVuYywgZGllIGJlaW0gU2NodXNzIG1pdCBkZXIgTXVuaXRpb24gYmVudXR6dCB3aXJkLgorICAgICAgICAKKyAgICAgQXVzc2VyZGVtIG11c3MgaW4gZGVyIE11bml0aW9uIG1pdHRlbHMgQWRkSWQoKSBkZXIgZW50c3ByZWNoZW5kZQorICAgICBNdW5pdGlvbnN0eXAgZ2VzZXR6dCB3ZXJkZW4sIHouQi4gTVVOX0FSUk9XLgorCisgIGMuIFNwZXppYWx3YWZmZW4vRmVybndhZmZlbiBtaXQgU29uZGVyZnVua3Rpb25lbgorICAKKyAgICAgU2llaGUgSGlud2Vpc2UgenUgZW50c3ByZWNoZW5kZW4gTmFoa2FtcGZ3YWZmZW4uCisgICAgIAorICBkLiBHZW5laG1pZ3VuZ3NncmVuemVuCisgICAgIEFsbGUgV2FmZmVuIGRpZXNlciBBcnQgc2luZCBncnVuZHNhZXR6bGljaCBnZW5laG1pZ3VuZ3NwZmxpY2h0aWcuCisgICAgIEZvbGdlbmRlIFdlcnRlIHNvbGx0ZW4gYWxsZXJkaW5ncyBPYmVyZ3JlbnplbiBkYXJzdGVsbGVuLCBkaWUKKyAgICAgaW0gTm9ybWFsZmFsbCBuaWNodCB6dSBVZWJlcnNjaHJlaXRlbiBzaW5kOgorICAgICAKKyAgICAgV2FmZmUga2FubiBqZWRlIFJ1bmRlIGFiZ2VmZXVlcnQgd2VyZGVuOiAgUF9TSE9PVElOR19XQyAxMDAKKyAgICAgV2FmZmUgYnJhdWNodCBlaW5lIExhZGV6ZWl0ICAgICAgICAgICAgOiAgUF9TSE9PVElOR19XQyAxMzAKKyAgICAgCisgICAgIERpZSBPYmVyZ3JlbnplIGZ1ZXIgTXVuaXRpb24gbGllZ3QgYmVpIDogIFBfU0hPT1RJTkdfV0MgNjAuCisKKyAgZS4gTmFjaGJlbWVya3VuZworICAgICBTZWlkIGJpdHRlIHZvcnNpY2h0aWcgbWl0IFBfU0hPT1RJTkdfQVJFQSBpbiBSYWV1bWVuL0NvbnRhaW5lcm4uIAorICAgICBCaXNoZXIgaXN0IGRpZXNlcyBTY2hpZXNzZW4gdm9uIFJhdW0genUgUmF1bSB3ZWl0ZXN0Z2VoZW5kIHVuZ2V0ZXN0ZXQsCisgICAgIHVuZCBlcyBpc3QgbmljaHQga2xhciwgd2VsY2hlIFByb2JsZW1lIGRhcyB2ZXJ1cnNhY2hlbiBrYW5uLiBXZW5uIAorICAgICBldmVudHVlbGxlIFppZWxlIGtlaW5lIE1vZWdsaWNoa2VpdCBoYWJlbiwgc2ljaCB6dSB3ZWhyZW4gb2RlciAKKyAgICAgd2VnenVsYXVmZW4sIGlzdCBzY2huZWxsIGplZ2xpY2hlIEJhbGFuY2UgZGFoaW4uIERpZSBSZWdpb25zbWFnaWVyCisgICAgIGhhYmVuIGJlaSBBYm5haG1lIHZvbiBHZWJpZXRlbiBkYXJhdWYgenUgYWNodGVuLCBkYXNzIGRpZXNlIFByb3BlcnR5CisgICAgIG51ciBpbiB3ZW5pZ2VuLCBndXQgYmVncnVlbmRldGVuIFJhZXVtZW4gZ2VzZXR6dCB3aXJkLgorICAKKyBTSUVIRSBBVUNICisKKyAgICAgYmFsYW5jZSwgcnVlc3R1bmdlbiwgd2FmZmVuLCB1bmlxdWVzLCBucGNzLCBncmVuendlcnRlLAorICAgICBhdHRyaWJ1dHN2ZXJhZW5kZXJ1bmdlbiwgcmVzaXN0ZW56ZW4sIGthbXBmb2JqZWt0ZSwKKyAgICAgZmVybmthbXBmd2FmZmVuCisKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIExFVFpURSBBZU5ERVJVTkc6CisgICAgRG9uLCAxMC4wOC4yMDAwLCAyMjozMDowMCB2b24gUGFyYWNlbHN1cwpkaWZmIC0tZ2l0IGEvZG9jL3dpei9mb29kIGIvZG9jL3dpei9mb29kCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjY5OGUzZjYKLS0tIC9kZXYvbnVsbAorKysgYi9kb2Mvd2l6L2Zvb2QKQEAgLTAsMCArMSwyMjMgQEAKK0ZPT0QsIERSSU5LICYgQUxDT0hPTAorPT09PT09PT09PT09PT09PT09PT09CisKKyAgICBFcyB3aXJkIGVtcGZvaGxlbiwgamVkZSB0cmFnYmFyZSBIZWlsdW5nIHVlYmVyICIvc3RkL2Zvb2QiCisgICAgenUgaW1wbGVtZW50aWVyZW4uIEhpZXIgYnJhdWNodCBtYW4gbnVyIHdlbmlnZSBQcm9wZXJ0aWVzIHNldHplbiwgdW0KKyAgICBzaWNoZXJ6dWdlaGVuLCBkYXNzIGRpZSBIZWlsdW5nIGtvcnJla3QgdmVybGFldWZ0LgorCisgICAgQml0dGUgYmVpIGRlciBSZWFsaXNpZXJ1bmcgdm9uIHRyYWdiYXJlbiBUYW5rZW4gSU1NRVIgbWl0IGRlciBCYWxhbmNlCisgICAgc3ByZWNoZW4uIERpZSBIZWlsdW5nIHVudGVybGllZ3QgZ2VuYXVlciBLb250cm9sbGUuIEV3aWcgaGFsdGJhcmUgU3BlaXNlbgorICAgIHNpbmQgc293aWVzbyBnZW5laG1pZ3VuZ3NwZmxpY2h0aWcgdW5kIG51ciBtaXQgZ3V0ZXIgQmVncnVlbmR1bmcgdW5kCisgICAgc3RyZW5nZW4gQXVmbGFnZW4gZXJsYXVidC4KKworRkVBVFVSRVM6CisgICAgVW50ZXJzdHVldHp0IHdpcmQgZGFzIEtvbnN1bWllcmVuIHZvbiBTcGVpc2VuIHBlciBFc3NlbiBvZGVyIFRyaW5rZW4gYXVjaAorICAgIGluIG1laHJlcmVuIFBvcnRpb25lbi4gRGllIFNwZWlzZW4gdmVyZGVyYmVuIHVuZCB3ZXJkZW4gdmVybmljaHRldC4KKyAgICBFcyBzaW5kIExlYmVuc21pdHRlbCBtaXQgQmVoYWVsdGVyIG1vZWdsaWNoLCBzbyBkYXNzIGRpZXNlciBsZWVyCisgICAgenVydWVja2JsZWlidCwgd2VubiBkZXIgSW5oYWx0IGdlZ2Vzc2VuIG9kZXIgdmVybmljaHRldCB3dXJkZS4KKyAgICBEaWUgV2lya3VuZyB2b24gU3BlaXNlbiBrYW5uIG5lYmVuIGRlciBadWZ1ZWhydW5nIHZvbiBMZWJlbnMtIHVuZCBLb256ZW4tCisgICAgdHJhdGlvbnNwdW5rdGVuIGVyd2VpdGVydCB3ZXJkZW4uIERpZSBXaXJrdW5nIHZlcmRvcmJlbmVyIFNwZWlzZW4ga2FubiAKKyAgICBnZXRyZW5udCBkZWZpbmllcnQgd2VyZGVuLgorICAgIFdlcnQgdW5kIEdld2ljaHQgZGVyIFNwZWlzZSB3ZXJkZW4gaW4gQWJoYWVuZ2lna2VpdCBkZXIgUmVzdG1lbmdlbiBpbW1lcgorICAgIGtvcnJla3QgYmVyZWNobmV0LgorCitSRUFMSVNJRVJVTkc6CisgICAgRGllIFJlYWxpc2llcnVuZyBkZXIgVGltZXIgbGFldWZ0IHVlYmVyIGRpZSBSZXNldHMgZGVyIFNwZWlzZS4gQ2FsbG91dHMKKyAgICB3ZXJkZW4gbGVkaWdsaWNoIHZlcndlbmRldCwgdW0gZGVuIEF1ZnJ1ZiBkZXMgUmVzZXRzIHp1IGdhcmFudGllcmVuLgorICAgIEVzIHdpcmQgYXVjaCBnZXBydWVmdCwgZGFzcyBkZXIgQXVmcnVmIGRlciBSZXNldHMgcGVyIEhhbmQgbmljaHRzCisgICAgZHVyY2hlaW5hbmRlciBicmluZ3QuCisKKyAgICBEZXMgV2VpdGVyZW4gaXN0IHNpY2hlcmdlc3RlbGx0LCBkYXNzIGRlciBTcGllbGVyIG5pY2h0IG1pdCBGdXR0ZXIgaW4KKyAgICBCZXJ1ZWhydW5nIGtvbW10LCBkZXNzZW4gVGltZXIgenVtIFZlcmRlcmJlbiBpbml0aWFsaXNpZXJ0IGlzdC4KKworICAgIERhcyBLb256ZXB0IGlzdCBkZW0gSGVpbHVuZ3Nrb256ZXB0IGRlciBLbmVpcGVuIGFuZ2VwYXNzdCB3b3JkZW4uCisgICAgRGVtIGVudHNwcmVjaGVuZCBzaW5kIGRpZSBQcm9wZXJ0aWVzIHNlaHIgYWVobmxpY2guCisKK1BST1BFUlRJRVM6CisKKyAgICAgIFBfUE9SVElPTlMgOiBBbnphaGwgZGVyIFBvcnRpb25lbiAod2llIG9mdCBrYW5uIG1hbiBhYmJlaXNzZW4gLyAKKyAgICAgICAgICAgICAgICAgICBlaW5lbiBTY2hsdWNrIG5laG1lbikKKworICAgICAgICAgIFBfRk9PRCA6IEZ1ZWxsZ3JhZCBkZXIgU3BlaXNlIHBybyBQb3J0aW9uLCBtdXNzIGdlc2V0enQgc2Vpbiwgd2VubgorICAgICAgICAgICAgICAgICAgIFBfRFJJTksgbmljaHQgZ2VzZXR6dCBpc3QKKyAgICAgICAgIFBfRFJJTksgOiBGdWVsbGdyYWQgZGVyIEZsdWVzc2lna2VpdCBwcm8gUG9ydGlvbiwgbXVzcyBnZXNldHp0IHNlaW4sCisgICAgICAgICAgICAgICAgICAgd2VubiBQX0ZPT0QgbmljaHQgZ2VzZXR6dCBpc3QKKyAgICAgICBQX0FMQ09IT0wgOiBBbGtvaG9sbGV2ZWwgcHJvIFBvcnRpb24gCisKKyAgICAgICAgUF9XRUlHSFQgOiBHZXdpY2h0IHBybyBQb3J0aW9uIChiZWkgUXVlcnlQcm9wKFBfV0VJR0hUKSB3aXJkIGRhcworICAgICAgICAgICAgICAgICAgIGtvbXBsZXR0ZSBHZXdpY2h0IGFsbGVyIFBvcnRpb25lbiArIGV2ZW50dWVsbCBCZWhhZWx0ZXIgCisgICAgICAgICAgICAgICAgICAgenVydWVja2dlZ2ViZW4pCisgICAgICAgICBQX1ZBTFVFIDogV2VydCBwcm8gUG9ydGlvbiAgKGJlaSBRdWVyeVByb3AoUF9WQUxVRSkgd2lyZCBkZXIKKyAgICAgICAgICAgICAgICAgICBrb21wbGV0dGUgV2VydCBhbGxlciBQb3J0aW9uZW4gKyBldmVudHVlbGwgQmVoYWVsdGVyIAorICAgICAgICAgICAgICAgICAgIHp1cnVlY2tnZWdlYmVuKQorCisgICAgICAgICAgICBQX0hQIDogQW56YWhsIGRlciBMUCwgZGllIHByb3AgUG9ydGlvbiBnZWhlaWx0L2dlc2Nod2FlY2h0IHdlcmRlbgorICAgICAgICAgICAgUF9TUCA6IEFuemFobCBkZXIgS1AsIGRpZSBwcm9wIFBvcnRpb24gZ2VoZWlsdC9nZXNjaHdhZWNodCB3ZXJkZW4KKyAgUF9ESVNUUklCVVRJT04gOiBWZXJ0ZWlsdW5nIGRlciBIZWlsdW5nIGF1ZiBkaWUgSGVhcnRiZWF0cworICAgICAgICAgICAgICAgICAgIChzaWVoZSBIaWxmZSB6dSBIX0RJU1RSSUJVVElPTiBpbiBjb25zdW1lKQorCisgICAgICBQX0xJRkVUSU1FIDogWmVpdCBpbiBTZWt1bmRlbiwgYmlzIGRpZSBTcGVpc2UgdmVyZGlyYnQgKD4wKQorICAgICAgICAgICAgICAgICAgIFphZWhsdCBhYiBkZXIgZXJzdGVuIEluYmVzaXR6bmFobWUgZHVyY2ggZWluZW4gU3BpZWxlcgorUF9SRVNFVF9MSUZFVElNRSA6IFplaXQgaW4gUmVzZXRzLCBiaXMgZGllIFNwZWlzZSB2ZXJkaXJidCAoPjApCisgICAgICAgICAgICAgICAgICAgRGllIExhZW5nZSBkZXIgZWluemVsbmVuIFJlc2V0cyB3aXJkIHdpZSB1ZWJsaWNoIGJlcmVjaG5ldAorICAgICAgICAgICAgICAgICAgIHVuZCBQX0xJRkVUSU1FIGVudHNwcmVjaGVuZCBhdWYgZHVyY2hzY2huaXR0bGljaAorICAgICAgICAgICAgICAgICAgIFBfUkVTRVRfTElGRVRJTUUgKiA0NSAqIDYwIGdlc2V0enQuCisgICAgICAgICAgICAgICAgICAgKGV4aXN0aWVydCwgZGEgYmlzaGVyIG1laXN0ZW5zIGluIFJlc2V0cyBnZXJlY2huZXQgd3VyZGUpCisgICAgICAgICAgICAgICAgICAgU29sbHRlIHNpbm52b2xsZXJ3ZWlzZSBudXIgYWxzIFNldFByb3AoUF9SRVNFVF9MSUZFVElNRSkKKyAgICAgICAgICAgICAgICAgICB2ZXJ3ZW5kZXQgd2VyZGVuLCBrYW5uIGFiZXIgYXVjaCBhYmdlZnJhZ3Qgd2VyZGVuCisKKyAgIFBfRU1QVFlfUFJPUFMgOiBNYXBwaW5nIG1pdCBXZXJ0ZW4gZGVzIEJlaGFlbHRlcnMKKyAgICAgICAgICAgICAgICAgICBBbGxlIGhpZXIgYW5nZWdlYmVuZW4gV2VydGUgKGF1c3NlciBQX1BPUlRJT05TKSB3ZXJkZW4KKyAgICAgICAgICAgICAgICAgICBpbiBkZXIgU3BlaXNlIGdlc2V0enQsIHdlbm4gZGllIGxldHp0ZSBQb3J0aW9uIGtvbnN1bWllcnQKKyAgICAgICAgICAgICAgICAgICB3dXJkZS4gV2VubiBkaWVzZSBQcm9wIGxlZXIgaXN0LCB3aXJkIGRhcyBPYmpla3QgemVyc3RvZXJ0LAorICAgICAgICAgICAgICAgICAgIHdlbm4ga2VpbmUgUG9ydGlvbmVuIG1laHIgZGEgc2luZC4KKyAgICAgICAgICAgICAgICAgICBBY2h0dW5nOiBlcyB3ZXJkZW4ga2VpbmUgY2xvc3VyZXMgdW50ZXJzdHVldHp0ISAKKyAgICAgICAgICAgUF9JRFMgOiAgIFdlcnQgaW4gUF9FTVBUWV9QUk9QUworICAgICAgICAgICAgICAgICAgICAgTGlzdGUgZGVyIElEcyBkZXMgbGVlcmVuIEJlaGFlbHRlcnMKKyAgICAgICAgICAgICAgICAgICAgIEFjaHR1bmc6IGVzIHdlcmRlbiBrZWluZSBjbG9zdXJlcyB1bnRlcnN0dWV0enQhCisgICAgUF9BREpFQ1RJVkVTIDogICBXZXJ0IGluIFBfRU1QVFlfUFJPUFMKKyAgICAgICAgICAgICAgICAgICAgIExpc3RlIGRlciBBZGpla3RpdmUgZGVzIGxlZXJlbiBCZWhhZWx0ZXJzCisgICAgICAgICAgICAgICAgICAgICBBY2h0dW5nOiBlcyB3ZXJkZW4ga2VpbmUgY2xvc3VyZXMgdW50ZXJzdHVldHp0IQorICAgICAgICAgUF9WQUxVRSA6ICAgV2VydCBpbiBQX0VNUFRZX1BST1BTCisgICAgICAgICAgICAgICAgICAgICBXZXJ0IGRlcyBsZWVyZW4gQmVoYWVsdGVycworICAgICAgICBQX1dFSUdIVCA6ICAgV2VydCBpbiBQX0VNUFRZX1BST1BTCisgICAgICAgICAgICAgICAgICAgICBHZXdpY2h0IGRlcyBsZWVyZW4gQmVoYWVsdGVycworCisgICAgICAgIFBfTk9fQkFEIDogRmxhZywgb2IgZGllIFNwZWlzZSB2ZXJkZXJiZW4ga2FubgorICAgICAgICAgICAgICAgICAgIERhcmYgbnVyIGluIEFic3ByYWNoZSBtaXQgZGVyIEJhbGFuY2UgYXVmIDEgZ2VzZXR6dCB3ZXJkZW4hCisKKyAgIFBfREVTVFJPWV9CQUQgOiBXZXJ0LCB3YXMgYmVpbSBWZXJkZXJiZW4gbWl0IGRlbSBPYmplY3QgcGFzc2llcnQKKyAgICAgICAgICAgICAgICAgICBERVNUUk9ZX0JBRCAgID0gRGllIFNwZWlzZSB3aXJkIGJlaW0gVmVyZGVyYmVuIHplcnN0b2VydAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBiencuIGRlciBCZWhhZWx0ZXIgd2lyZCBnZWxlZXJ0IChkZWZhdWx0KQorICAgICAgICAgICAgICAgICAgIERFU1RST1lfTkVWRVIgPSBEaWUgU3BlaXNlIHdpcmQgYmVpbSBWZXJkZXJiZW4gbmljaHQKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgemVyc3RvZXJ0CisgICAgICAgICAgICAgICAgICAgcG9zLiBpbnRlZ2VyICA9IEFuemFobCBkZXIgU2VrdW5kZW4sIGRpZSB6d2lzY2hlbiBWZXJkZXJiZW4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5kIFplcnN0b2VyZW4gZGVyIFNwZWlzZSBsaWVnZW4gc29sbGVuCisKK01FU1NBR0VTOiAoZHVyY2hsYXVmZW4gcmVwbGFjZV9wZXJzb25hbCgpIHVuZCBrb2VubmVuIHNvbWl0IFBsYXR6aGFsdGVyCisgICAgICAgICAgZnVlciBTcGVpc2UgKDEuIEFyZ3VtZW50KSB1bmQgS29uc3VtZW50ICgyLiBBcmd1bWVudCkgZW50aGFsdGVuKQorCisgICBQX0NPTlNVTUVfTVNHIDogZnVlciBkZW4gUmF1bSwgd2VubiBrb25zdW1pZXJ0IHdpcmQKKyAgICAgUF9FQVRFUl9NU0cgOiBhbiBkZW4gS29uc3VtZW50ZW4KKyAgICAgUF9FTVBUWV9NU0cgOiB3ZW5uIGxlZXJlIEJlaGFlbHRlciBrb25zdW1pZXJ0IHdlcmRlbgorICAgIFBfTk9GT09EX01TRyA6IHdlbm4gR2V0cmFlbmtlIGdlZ2Vzc2VuIHdlcmRlbgorICAgUF9OT0RSSU5LX01TRyA6IHdlbm4gRnV0dGVyIGdldHJ1bmtlbiB3aXJkCisgICAgICAgUF9CQURfTVNHIDogd2VubiBTcGVpc2VuIHZlcmRlcmJlbgorICAgIFBfUkVNT1ZFX01TRyA6IHdlbm4gU3BlaXNlbiB2ZXJuaWNodGV0IHdlcmRlbgorICAgICAgICAgICAgICAgICAgIChudXIgd2VubiBzaWUgbmljaHQgYmVpbSBWZXJkZXJiZW4gdmVybmljaHRldCB3ZXJkZW4pCisgICAgICAgUF9FTlZfTVNHIDogd2VubiBpbSBSYXVtIGxpZWdlbmRlIFNwZWlzZW4ga29uc3VtaWVydCB3ZXJkZW4KKyAgICAgICAgICAgICAgICAgICAoaXN0IGRpZXNlIFByb3AgbGVlciwgZ2VodCBkYXMgc29nYXIhKQorIFBfRk9PRF9GVUxMX01TRyA6IHdlbm4gbWFuIG5peCBtZWhyIGVzc2VuIGthbm4KK1BfRFJJTktfRlVMTF9NU0cgOiB3ZW5uIG1hbiBuaXggbWVociB0cmlua2VuIGthbm4KKyAgUF9BTENfRlVMTF9NU0cgOiB3ZW5uIG1hbiBrZWluZW4gQWxrb2hvbCBtZWhyIHZlcnRyYWVndAorCitNRVRIT0RFTjoKKyAgICAgICAgICAgICBjb25zdW1lIDogd2lyZCBiZWltIEtvbnN1bWllcmVuIGF1ZmdlcnVmZW4sIHdlbm4ga2xhciBpc3QsCisgICAgICAgICAgICAgICAgICAgICAgIGRhc3Mgd2FzIHp1bSBLb25zdW1pZXJlbiBkYSBpc3QuCisgICAgICAgICAgICAgICAgICAgICAgIGdpYnQgZGFzIEVyZ2VibmlzIHZvbiB0cnlfY29uc3VtZSgpIHp1cnVlY2sKKyAgICAgICAgIHRyeV9jb25zdW1lIDogYmVyZWl0ZXQgZGllIERhdGVuIGF1ZiB1bmQgZnVlaHJ0IGxpdmluZy0+Y29uc3VtZSgpIGF1cworICAgICAgICAgICAgICAgICAgICAgICBrYW5uIHp1ciBQcnVlZnVuZyBtaXQgdGVzdG9ubHktRmxhZyBhdWZnZXJ1ZmVuIHdlcmRlbgorICAgICAgICAgICAgICAgICAgICAgICBnaWJ0IGRhcyBFcmdlYm5pcyB2b24gbGl2aW5nLT5jb25zdW1lKCkgenVydWVjaworICAgICBzdWNjZXNzX2NvbnN1bWUgOiB3aXJkIHZvbiBjb25zdW1lKCkgYXVmZ2VydWZlbiwgd2VubiBLb25zdW1pZXJlbiBrbGFwcHQKKyAgICAgICAgICAgICAgICAgICAgICAgZ2lidCBkaWUgTWVsZHVuZ2VuIHp1bSBLb25zdW1pZXJlbiBhdXMKKyAgICAgIGZhaWxlZF9jb25zdW1lIDogd2lyZCBhdWZnZXJ1ZmVuLCB3ZW5uIEtvbnN1bWllcmVuIG5pY2h0IGtsYXBwdAorICAgICAgICAgICAgICAgICAgICAgICBnaWJ0IGRlbiBHcnVuZCBmdWVyIGRlbiBGZWhsc2NobGFnIGF1cworICAgICAgICAgICAgICAgICAgICAgICAoamUgbmFjaCBFcmdlYm5pcyB2b24gbGl2aW5nLT5jb25zdW1lKCkpCisgICAgICAgICAgICAgICAgICAgICAgIAorICAgICAgICAgY29uc3VtZV9iYWQgOiBBZW5kZXJ0IGRpZSBEYXRlbiBmdWVyIGxpdmluZy0+Y29uc3VtZSgpLCB3ZW5uIGVpbmUKKyAgICAgICAgICAgICAgICAgICAgICAgdmVyZG9yYmVuZSBTcGVpc2Uga29uc3VtaWVydCB3aXJkCisgICAgICAgICAgICAgICAgICAgICAgIFN0YW5kYXJkOiBIZWlsdW5nIHdpcmt0IG5pY2h0LCBWZXJnaWZ0dW5nICsxCisgICAgICAgICAgICBtYWtlX2JhZCA6IHdpcmQgYXVmZ2VydWZlbiwgd2VubiBkaWUgU3BlaXNlIGdlcmFkZSB2ZXJkaXJidAorICAgICAgICAgICAgICAgICAgICAgICBHaWJ0IGRpZSBNZWxkdW5nZW4gYmVpbSBWZXJkZXJiZW4gYXVzCisgICAgICAgICAgICAgICAgICAgICAgIFZlcm5pY2h0ZXQgZGFzIE9iamVrdCwgd2VubiBkYXMgZ2V3b2xsdCBpc3QgCisgICAgICAgICAgICAgICAgICAgICAgIERpZSBNZXRob2RlIHdpcmQgYXVjaCBhdWZnZXJ1ZmVuLCB3ZW5uIG51ciBub2NoIGRlcgorICAgICAgICAgICAgICAgICAgICAgICBCZWhhZWx0ZXIgZXhpc3RpZXJ0ISBBbHNvIGRlbiBUZXN0IGlzX25vdF9lbXB0eSgpIG5pY2h0CisgICAgICAgICAgICAgICAgICAgICAgIHZlcmdlc3NlbiEKKyAgICAgICAgbWFrZV9kZXN0cm95IDogd2lyZCBhdWZnZXJ1ZmVuLCB3ZW5uIGRpZSBTcGVpc2UgYmVyZWl0cyB2ZXJkb3JiZW4gaXN0CisgICAgICAgICAgICAgICAgICAgICAgIHVuZCBkaWUgWmVpdCBhdXMgUF9ERVNUUk9ZX0JBRCBhYmdlbGF1ZmVuIGlzdC4KKyAgICAgICAgICAgICAgICAgICAgICAgR2lidCBkaWUgTWVsZHVuZyB6dW0gWmVyc3RvZXJlbiBhdXMgdW5kIHJ1ZnQKKyAgICAgICAgICAgICAgICAgICAgICAgbWFrZV9lbXB0eSBhdXMsIHVtIGRpZSBTcGVpc2UgYnp3LiBkZW4gSW5oYWx0IGRlcworICAgICAgICAgICAgICAgICAgICAgICBCZWhhZWx0ZXJzIHp1IHplcnN0b2VyZW4uIEF1c3NlcmRlbSB3aXJkIGRlciBSZXNldAorICAgICAgICAgICAgICAgICAgICAgICBhYmdlc2NoYWx0ZXQuCisgICAgICAgICAgICAgICAgICAgICAgIERpZSBNZXRob2RlIHdpcmQgYXVjaCBhdWZnZXJ1ZmVuLCB3ZW5uIG51ciBub2NoIGRlcgorICAgICAgICAgICAgICAgICAgICAgICBCZWhhZWx0ZXIgZXhpc3RpZXJ0ISBBbHNvIGRlbiBUZXN0IGlzX25vdF9lbXB0eSgpIG5pY2h0CisgICAgICAgICAgICAgICAgICAgICAgIHZlcmdlc3NlbiEKKyAgICAgICAgICAgICAgICAgICAgICAgCisgICAgICAgICAgbWFrZV9lbXB0eSA6IHdpcmQgYXVmZ2VydWZlbiwgd2VubiBkaWUgbGV0enRlIFBvcnRpb24ga29uc3VtaWVydCB3aXJkCisgICAgICAgICAgICAgICAgICAgICAgIE1hY2h0IGF1cyBlaW5lbSB2b2xsZW4gQmVoYWVsdGVyIGVpbmVuIGxlZXJlbiBvZGVyCisgICAgICAgICAgICAgICAgICAgICAgIHZlcm5pY2h0ZXQgZGFzIE9iamVrdC4gRGVyIEJlaGFlbHRlciB2ZXJkaXJidCBhbHNvIGltCisgICAgICAgICAgICAgICAgICAgICAgIE5vcm1hbGZhbGwgbmljaHQhCisKKyAgICAgICAgICAgICAgICBpbml0IDogU3RhcnRldCBkZW4gVGltZXIgenVtIFZlcmRlcmJlbiBkZXIgU3BlaXNlCisgICAgICAgICAgICAgICAgICAgICAgIChzdGFydF9saWZldGltZSgpKSwgd2VubiBzaWNoIGRhcyBPYmpla3QgaW4gZWluZW0KKyAgICAgICAgICAgICAgICAgICAgICAgU3BpZWxlciBiZWZpbmRldC4KKyAgICAgICAgICAgICAgICAgICAgICAgUHJ1ZWZ0LCBvYiBMYXVmemVpdGVuIGZlaGxlcmhhZnRlcndlaXNlIG5pY2h0IGJlZW5kZXQKKyAgICAgICAgICAgICAgICAgICAgICAgd3VyZGVuIHVuZCBob2x0IGVzIGRhbm4gbmFjaAorICAgICAgICAgIE5vdGlmeU1vdmUgOiBTdGFydGV0IGRlbiBUaW1lciB6dW0gVmVyZGVyYmVuIGRlciBTcGVpc2UKKyAgICAgICAgICAgICAgICAgICAgICAgKHN0YXJ0X2xpZmV0aW1lKCkpIGF1Y2gsIHdlbm4gZGllIFNwZWlzZSBpbiBlaW5lbgorICAgICAgICAgICAgICAgICAgICAgICBTcGllbGVyIGJld2VndCB3aXJkLCBvaG5lIGRhc3MgaW5pdCgpIGF1ZmdlcnVmZW4KKyAgICAgICAgICAgICAgICAgICAgICAgd3VyZGUuCisgICAgICAgICAgICAgICByZXNldCA6IHdpcmQgZnVlciAzIFNpdHVhdGlvbmVuIHZlcndlbmRldDoKKyAgICAgICAgICAgICAgICAgICAgICAgMTogRGFzIEZ1dHRlciB3dXJkZSBiZXdlZ3QsIGRlciBUaW1lciBhYmVyIG5vY2ggbmljaHQgCisgICAgICAgICAgICAgICAgICAgICAgICAgIGluaXRpYWxpc2llcnQgLT4gZXMgd2lyZCBnZXBydWVmdCwgb2IgZGVyIFRpbWVyCisgICAgICAgICAgICAgICAgICAgICAgICAgIGdlc3RhcnRldCB3ZXJkZW4gbXVzcy4KKyAgICAgICAgICAgICAgICAgICAgICAgMjogRGVyIFRpbWVyIGlzdCBhYmdlbGF1ZmVuIC0+CisgICAgICAgICAgICAgICAgICAgICAgICAgIGxhZXNzdCBkaWUgU3BlaXNlIHZlcmRlcmJlbiB1bmQgdmVybmljaHRldCBzaWUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgZ2VnZWJlbmVuZmFsbHMKKyAgICAgICAgICAgICAgICAgICAgICAgMzogRGVyIFRpbWVyIG5hY2ggZGVtIFZlcmRlcmJlbiBpc3QgYWJnZWxhdWZlbiAtPgorICAgICAgICAgICAgICAgICAgICAgICAgICB2ZXJuaWNodGV0IGRpZSBTcGVpc2UKKyAgICAgICAgICAgICAgICAgICAgICAgRXMgd2lyZCBpbW1lciBnZXBydWVmdCwgb2IgZGllIFJlc2V0cyB6ZWl0Z2VyZWNodAorCQkgICAgICAgYXVmZ2VydWZlbiB3dXJkZW4gdW5kIGRpZSBBa3Rpb25lbiBuaWNodCB6dXIgZmFsc2NoZW4KKwkJICAgICAgIFplaXQgcGFzc2llcmVuCisKKyAgICAgICAgaXNfbm90X2VtcHR5IDogRmxhZywgb2Igbm9jaCBQb3J0aW9uZW4gdm9yaGFuZGVuIHNpbmQKKyAgICAgICAgaXNfZHJpbmthYmxlIDogRmxhZywgb2IgU3BlaXNlIHRyaW5rYmFyIGlzdAorICAgICAgICAgICAgICAgICAgICAgICAobnVyIHdlbm4gUF9EUklOSyBnZXNldHp0IHVuZCBQX0ZPT0QgTklDSFQgZ2VzZXR6dCBpc3QpCisgICAgICAgICAgaXNfZWF0YWJsZSA6IEZsYWcgb2IgU3BlaXNlIGVzc2JhciBpc3QKKyAgICAgICAgICAgICAgICAgICAgICAgKHdlbm4gUF9GT09EIGdlc2V0enQgKFBfRFJJTksgaXN0IGVnYWwpKQorICAgICAgICAgICAgICBpc19iYWQgOiBGbGFnLCBvYiBTcGVpc2UgdmVyZG9yYmVuIGlzdAorCitnZXRfY3VycmVudF9saWZldGltZSA6IFplaXQgaW4gU2VrdW5kZW4sIHdpZSBsYW5nZSBkZXIgVGltZXIgenVtIFZlcmRlcmJlbgorICAgICAgICAgICAgICAgICAgICAgICBsYWV1ZnQgKGlzdCBpbW1lciAwLCB3ZW5uIFBfTk9fQkFEIGdlc2V0enQgaXN0KQorICAgICAgc3RhcnRfbGlmZXRpbWUgOiBzdGFydGV0IGRlbiBUaW1lciB6dW0gVmVyZGVyYmVuIGRlciBTcGVpc2UgZmFsbHMga2VpbmUKKyAgICAgICAgICAgICAgICAgICAgICAgR3J1ZW5kZSBkYWdlZ2VuIHNwcmVjaGVuLCB3aXJkIGludGVybiBhdWZnZXJ1ZmVuLCBrYW5uCisgICAgICAgICAgICAgICAgICAgICAgIGFiZXIgaW4gc3BlemllbGxlbiBTaXR1YXRpb25lbiBhdWNoIG1hbnVlbGwgYXVmZ2VydWZlbgorICAgICAgICAgICAgICAgICAgICAgICB3ZXJkZW4gKHNpZWhlIG9iZW4gdW50ZXIgUkVBTElTSUVSVU5HKQorICAgICAgICAgICAgIG1lc3NhZ2UgOiBlcyB3ZXJkZW4gTWVsZHVuZ2VuIHp1IFN0YXR1c2FlbmRlcnVuZ2VuIHZlcmFyYmVpdGV0CisgICAgICAgICAgICAgICAgICAgICAgIHVuZCBrb3JyZWt0IGF1c2dlZ2ViZW4uIEVzIHdpcmQgZGVyIE5hbWUgZGVyIGF1c3p1LQorICAgICAgICAgICAgICAgICAgICAgICBnZWJlbmVuIFByb3BlcnR5IHVlYmVyZ2ViZW4uCisgICAgICAgICAgICAgICAgICAgICAgIEVzIHdlcmRlbiBhbGxlIG5vdHdlbmRpZ2VuIEVyc2V0enVuZ2VuIHBlcgorICAgICAgICAgICAgICAgICAgICAgICByZXBsYWNlX3BlcnNvbmFsIGdlbWFjaHQgdW5kIGdlcHJ1ZWZ0LCBvYiBkZW0gQmVzaXR6ZXIKKyAgICAgICAgICAgICAgICAgICAgICAgb2RlciBkZW0gUmF1bSBkaWUgTWVsZHVuZyBhdXNnZWdlYmVuIHdlcmRlbiBtdXNzLgorICAgICAgICAgICAgICAgICAgICAgICBIaWVydWViZXIgc29sbHRlbiBudXIgTWVsZHVuZ2VuIGF1c2dlZ2ViZW4gd2VyZGVuLCBkaWUKKyAgICAgICAgICAgICAgICAgICAgICAgZHVyY2ggQWVuZGVydW5nZW4gYW4gZGVyIFNwZWlzZSBpbSBSZXNldCBhdXNnZWxvZXN0CisgICAgICAgICAgICAgICAgICAgICAgIHdlcmRlbiwgYWxzbyBpbSByZXNldCBzZWxic3QgdW5kIGluIGRlbiBtYWtlXyotTWV0aG9kZW4uCisKKworU1RBTkRBUkQ6CisgICAgV2VubiBtYW4gbmljaHRzIGluIHNlaW5lbSBGdXR0ZXIgdWViZXJzY2hyZWlidCwgZGFubiBoYXQgZXMKKyAgICBmb2xnZW5kZXMgU3RhbmRhcmR2ZXJoYWx0ZW4uCisgICAgRXMgbXVzcyBpbW1lciBQX0ZPT0Qgb2RlciBQX0RSSU5LIGV4cGxpeml0IGdyb2Vzc2VyIDAgZ2VzZXR6dCB3ZXJkZW4sCisgICAgc29uc3QgbGFlc3N0IHNpY2ggZGFzIExlYmVuc21pdHRlbCBuaWNodCBrb25zdW1pZXJlbiEKKworICAgIC0gSGFsdGJhcmtlaXQ6IDEgUmVzZXQgKDMwICsgcmFuZG9tKDMwKSBNaW51dGVuKQorICAgIC0gZGVyIEFibGF1ZiBkZXIgSGFsdGJhcmtlaXQgc3RhcnRldCwgc29iYWxkIGVpbiBTcGllbGVyIGRpZSBTcGVpc2UgbmltbXQKKyAgICAtIFdlbm4gZGllIFNwZWlzZSBzY2hsZWNodCB3aXJkLCB3aXJkIHNpZSB6ZXJzdG9lcnQKKyAgICAtIERpZSBTcGVpc2UgaGF0IGtlaW5lbiBCZWhhZWx0ZXIKKyAgICAtIEVzIGdpYnQgbnVyIGVpbmVuIFNjaGx1Y2svQmlzc2VuLCBkYW5uIGlzdCBkaWUgU3BlaXNlIHdlZworICAgIC0gR2V3aWNodDogNTAgR3JhbW0gLyBXZXJ0OiAxMCBNdWVuemVuCisgICAgLSBNYW4gaGVpbHQgd2VkZXIgTFAgbm9jaCBLUAorICAgIC0gTWFuIHd1ZXJkZSBhbnNvbnN0ZW4gNSBMUC9LUCBwcm8gSGVhcnRiZWF0IGhlaWxlbgorICAgIC0gTWFuIGthbm4gZGllIFNwZWlzZSBudXIga29uc3VtaWVyZW4sIHdlbm4gbWFuIHNpZSBpbiBkZXIgSGFuZCBoYWVsdAorICAgIC0gV2VubiBtYW4gZGllIHZlcmRvcmJlbmUgU3BlaXNlIGtvbnN1bWllcmVuIGtvZW5udGUsIHd1ZXJkZSBtYW4gbmljaHQKKyAgICAgIGhlaWxlbiBzb25kZXJuIHZlcmdpZnRldCB3ZXJkZW4gKFBfUE9JU09OKzEpCisKK0JFSVNQSUVMRToKKyAgICBCZWlzcGllbGUgenUgdHJhZ2JhcmVuIFNwZWlzZW4gdW5kIEdldHJhZW5rZW4ga2FubiBtYW4gdW50ZXIKKyAgICBkb2MvYmVpc3BpZWxlL2Zvb2QvIG5hY2hzY2hhdWVuCisKK1NJRUhFIEFVQ0g6CisgICAgY29uc3VtZSwgd2l6L2hlaWx1bmcsIAorCitMRVRaVEUgQWVOREVSVU5HOgorICAgIDI1LjA5LjIwMTAsIENhbGRyYQpkaWZmIC0tZ2l0IGEvZG9jL3dpei9mb3JzY2hlcnB1bmt0ZSBiL2RvYy93aXovZm9yc2NoZXJwdW5rdGUKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYTdmODRkMQotLS0gL2Rldi9udWxsCisrKyBiL2RvYy93aXovZm9yc2NoZXJwdW5rdGUKQEAgLTAsMCArMSw2NSBAQAorCitGb3JzY2hlcnB1bmt0ZQorPT09PT09PT09PT09PT0KKworIEZPUlNDSEVSUFVOS1RFOgorICAgIERhbWl0IGRpZSBTcGllbGVyIGJlaW0gRXJrdW5kZW4gbmV1ZXIgR2ViaWV0ZSBhdWNoIGFuIE9ydHNrZW5udG5pcworICAgIGdld2lubmVuLCBtdWVzc2VuIGFuIGJlc3RpbW10ZW4gU3RlbGxlbiBGb3JzY2hlcnB1bmt0ZSAoRlApIHZlcmdlYmVuCisgICAgd2VyZGVuLiBEYXp1IGlzdCBpbiBkZW4gbWVpc3RlbiBGYWVsbGVuIGtlaW5lIEFlbmRlcnVuZyBhbiBkZW4gT2JqZWt0ZW4KKyAgICBzZWxic3Qgbm9ldGlnLCBkaWUgUHVua3RlIG11ZXNzZW4gamVkb2NoIHZvbiBlaW5lbSBFcnptYWdpZXIgaW4gZGllCisgICAgRlAtTGlzdGUgZWluZ2V0cmFnZW4gd2VyZGVuLgorCisgICAgRElFIEZPUlNDSEVSUFVOS1RFIE1VRVNTRU4gRUlOR0VUUkFHRU4gV0VSREVOLCBCRVZPUiBEQVMgR0VCSUVUIERFTgorICAgIFNQSUVMRVJOIFpVR0FFTkdMSUNIIEdFTUFDSFQgV0lSRCEKKworICAgIERpZSBUZXN0cGhhc2UgaXN0IGVpbmUgZ3V0ZSBHZWxlZ2VuaGVpdCwgc2ljaCBkYXJ1ZWJlciBHZWRhbmtlbiB6dSBtYWNoZW4sCisgICAgd28gd2VsY2hlIEZQIHZlcmdlYmVuIHdlcmRlbiBrb2VubnRlbi4KKworICAgIEZ1ZXIgZGFzIEVpbnRyYWdlbiBkZXIgRm9yc2NoZXJwdW5rdGUgaXN0IGRlcnplaXQgTWlyaWwgenVzdGFlbmRpZy4KKworIFdBUyBGVWVSIEZQIEtBTk4gSUNIIFZFUkdFQkVOPworICAgIEZvbGdlbmRlIFR5cGVuIHZvbiBGb3JzY2hlcnB1bmt0ZW4gc3RlaGVuIHp1ciBWZXJmdWVndW5nOgorCisgICAgICogRGV0YWlscy4gRGFydW50ZXIgZmFsbGVuIGF1Y2ggU3BlY2lhbERldGFpbHMuCisgICAgICogUmVhZERldGFpbHMuCisgICAgICogU291bmRzIHVuZCBTbWVsbHMuCisgICAgICogS29tbWFuZG9zLCBzb3dlaXQgc2llIG1pdCBBZGRDbWQoKSBhbmdlbWVsZGV0IHdlcmRlbi4KKyAgICAgICBLb21tYW5kb3MsIGRpZSBtaXQgYWRkX2FjdGlvbigpIGFuZ2VtZWxkZXQgd2VyZGVuLCBrb2VubmVuIGF1cworICAgICAgIHRlY2huaXNjaGVuIEdydWVuZGVuIG5pY2h0IGJlcnVlY2tzaWNodGlndCB3ZXJkZW4uCisgICAgICAgS29tbWFuZG9zLCBkaWUgYWxzIEZQcyBlaW5nZXRyYWdlbiBzaW5kLCBnZWJlbiBnZW5hdSBkYW5uIGRlbgorICAgICAgIEZQLCB3ZW5uIDEgenVydWVja2dlZ2ViZW4gd2lyZC4KKyAgICAgKiBBdXNnYWVuZ2UgYmVpIFJhZXVtZW4uIERhcnVudGVyIGZhbGxlbiBhdWNoIFNwZWNpYWxFeGl0cy4KKyAgICAgKiBJbmZvcyBiZWkgTlBDcy4gRGFzIERlZmF1bHRpbmZvIGxhZXNzdCBzaWNoIGFsbGVyZGluZ3MgbmljaHQgb2huZQorICAgICAgIHdlaXRlcmVzIHZlcndlbmRlbi4KKyAgICAgKiBHZXRyYWVua2UgdW5kIFNwZWlzZW4gaW4gS25laXBlbi4KKyAgICAgKiBCZXNvbmRlcmUgQWt0aW9uZW4gc2luZCBhdWNoIG1vZWdsaWNoLCBkYXp1IG11c3MgamVkb2NoIG5vY2ggZXR3YXMgYW0KKyAgICAgICBDb2RlIGhpbnp1Z2VmdWVndCB3ZXJkZW4uIERpZXNlIEFydCB2b24gRm9yc2NoZXJwdW5rdGVuIHNvbGx0ZSBtYW4gbmFjaAorICAgICAgIE1vZWdsaWNoa2VpdCBtZWlkZW4uCisKKyAgICBQcm8gT2JqZWt0IGxhZXNzdCBzaWNoIG51ciBlaW4gRlAgdmVyZ2ViZW4uIERpZSBGUC1EaWNodGUgc29sbHRlIGV0d2EgYmVpCisgICAgZWluZW0gRlAgcHJvIHplaG4gUmFldW1lIGxpZWdlbi4KKworICAgIEluIFF1ZXN0Z2ViaWV0ZW4gc29sbHRlbiBkaWUgRlAgTklDSFQgZnVlciBEZXRhaWxzIG9kZXIgQWt0aW9uZW4gdmVyZ2ViZW4KKyAgICB3ZXJkZW4sIGRpZSBlaW5lbiBkaXJla3QgaW4gZGVyIFF1ZXN0IHdlaXRlcmJyaW5nZW4sIHNvbmRlcm4gZWhlciBmdWVyCisgICAgc29sY2hlLCBkaWUgenUgZGVuIGVudHNjaGVpZGVuZW4gU3RlbGxlbiBmdWVocmVuLiBEYW1pdCB3ZXJkZW4gU3BpZWxlciwKKyAgICBkaWUgc2ljaCBhbGxlcyBnZW5hdSBhbnNlaGVuLCBiZWxvaG50LCB3b2hpbmdlZ2VuIEtvbXBsZXR0bG9lc2VyLCBkaWUgbnVyCisgICAgZGFzIG5vZXRpZ3N0ZSBlaW5nZWJlbiwgbGVlciBhdXNnZWhlbi4KKworIFdJRSBTQUcgSUNIUyBNRUlORU0gRVJaTUFHSUVSPworICAgIFVtIGRpZSBGUCBlaW50cmFnZW4genUga29lbm5lbiwgYnJhdWNoZW4gZGllIEVyem1hZ2llciBlaW5lIExpc3RlIG1pdCBkZW4KKyAgICBub2V0aWdlbiBJbmZvcm1hdGlvbmVuLiBadSBkZW4gbm9ldGlnZW4gSW5mb3JtYXRpb25lbiBnZWhvZXJlbjoKKworICAgICAqIGRlciBEYXRlaW5hbWUgZGVzIE9iamVrdGVzCisgICAgICogZGllIEFydCBkZXMgRlAKKyAgICAgKiBkaWUgU2NobHVlc3NlbHdvZXJ0ZXIsIG1pdCBkZW5lbiBkZXIgRlAgYW5nZXNwcm9jaGVuIHdlcmRlbiBzb2xsCisKKyAgICBEaWUgU2NobHVlc3NlbHdvZXJ0ZXIgc2luZCBub3JtYWxlcndlaXNlIGRpZSBTY2hsdWVzc2VsLCBkaWUgYmVpIGRlbgorICAgIGpld2VpbGlnZW4gQWRkWFhYKCktQXVmcnVmZW4gaW0gT2JqZWt0IGFuZ2VnZWJlbiB3ZXJkZW4uCisKKyAgICBCZWlzcGllbDoKKworICAgIC9wbGF5ZXJzL3dhcmdvbi93b3Jrcm9vbTogZGV0YWlsIHdhbmQsIHdhZW5kZQorICAgIC9wbGF5ZXJzL3dhcmdvbi9tb24vZXJyb2w6IGluZm8gZHJhY2hlbgorCisgTEVUWlRFIEFlTkRFUlVORzoKKwlUaHUsIDIwMTMtMDQtMDQgdm9uIEh1bW5pCmRpZmYgLS1naXQgYS9kb2Mvd2l6L2Z0cCBiL2RvYy93aXovZnRwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmJjYTRjNWEKLS0tIC9kZXYvbnVsbAorKysgYi9kb2Mvd2l6L2Z0cApAQCAtMCwwICsxLDQxIEBACitGVFAtWnVnYW5nIGZ1ZXIgTWFnaWVyIChaZXNzdHJhLCAxMi4gRGV6IDIwMTAsIDIzOjE3OjUyKToKK09rLCB3aWUgaW4gYmVrYW5udG1hY2h1bmdlbiBnZXNjaHJpZWJlbiwgd2FyZW4gdW5zZXJlICh1bmQgZGllIGFuZGVyZXIgTXVkcykKK1ZlcnN1Y2hlIGJpc2xhbmcgZXJmb2xnbG9zLCBkYXMgbW9kX211ZC1Nb2R1bCBmdWVyIGRlbiBwcm9mdHBkIHdpZWRlciBhbnMKK0xhdWZlbiB6dSBicmluZ2VuIHVuZCBpY2ggaGFiZSBhbHMgWndpc2NoZW5sb2VzdW5nIHp1bWluZGVzdCBlcnN0bWFsIHdhcworYW5kZXJlcyBnZWJhdXQuCisKK0FsbGVyZGluZ3Mga2FubiBkaWUgYWt0dWVsbGUgTG9lc3VuZyBuaWNodCAnbGl2ZScgYmVpbSBEYXRlaXp1Z3JpZmYgZGFzIE11ZAorZnJhZ2VuLCBvYiBkZXIgVXNlciBkYXMgYXVjaCBkYXJmLiBEYWhlciBzaW5kIGFsbGUgTWFnaWVyIGxlaWRlciBlcnN0bWFsIGF1ZgoraWhyIEhvbWV2ZXJ6ZWljaG5pcyBiZXNjaHJhZW5rdCAtIGRvcnQgZHVlcmZlbiBzaWUgbmF0dWVybGljaCBhbGxlcyBzY2hyZWliZW4KK3VuZCBsZXNlbi4gVm9uIGRvcnQvZG9ydGhpbiBtdXNzIG1hbiBkYW5uIGltIE11ZCBtaXQgY3AvbXYgYXJiZWl0ZW4uCisKK1dlciBzZWluZW4gRlRQLVp1Z2FuZyBha3RpdmllcmVuIHdpbGwsIG11c3MgLSBiaXMgaWNoIGRhcyBpbiBkaWUgTWFnaWVyc2hlbGwKK2VpbmdlYmF1dCBoYWJlIC0gZm9sZ2VuZGUgendlaSBTY2hyaXR0ZSBkdXJjaGZ1ZWhyZW46CisxKSB4ZXZhbCBtYXN0ZXIoKS0+dXBkYXRlX2Z0cF9hY2Nlc3MoZ2V0dWlkKHRoaXNfaW50ZXJhY3RpdmUoKSksIDEpCisgICAoRGVha3RpdmllcmVuIG1pdCB1cGRhdGVfZnRwX2FjY2VzcyhnZXR1aWQodGhpc19pbnRlcmFjdGl2ZSgpKSwgMCkKKzIpIG1pdCBwYXNzd2QgZWluIG5ldWVzIFBXIHNldHplbgorMykgYmlzIHp1ciBuYWVjaHN0ZW4gdm9sbGVuIFN0dW5kZSB3YXJ0ZW4KKworU2Nocml0dCAyKSBpc3QgbGVpZGVyIHp3aW5nZW5kIG5vZXRpZywgZGEgd2lyIGRhcyBQVyBuaWNodCBpbSBLbGFydGV4dAorc3BlaWNoZXJuIHVuZCBwdXJlLWZ0cGQgdW5zZXJlIHZlcnNjaGx1ZXNzZWx0ZW4vZ2VoYXNodGVuIFBhc3N3b2VydGVyIG5pY2h0Cit2ZXJzdGVodC4gRGVzd2VnZW4gbXVlc3NlbiB3aXIgZnVlciBGVFAgZGFzIFBXIGFuZGVycyBzcGVpY2hlcm4sIHdhcyB3aXIgbnVyCitiZWltIE5ldXNldHplbiBlaW5lcyBQV3Mga29lbm5lbi4KKworSWNoIG1vZWNodGUgZXVjaCBub2NoIHVtIGVpbnMgYml0dGVuOiBXZW5uIGlociB3YXMgcGVyIEZUUCBoaW4tIHVuZAoraGVyc2NoaWVidCwgd2FzIGRhbm4gd2VpdGVyICh6LkIuIG5hY2ggL2QpIHZlcnNjaG9iZW4gd2lyZCAob2RlciB2b24gZG9ydCBpaHIKK2V1ZXIgSG9tZXZlcnplaWNobmlzKTogbG9lc2NodCBiaXR0ZSBkZW4gS3JhbSBhdXMgZXVyZW0gL3BsYXllcnMvPG1hZ2llcj4KK3dpZWRlciwgZGVubiBhKSBnZWh0IGRhcyBhbGxlcyBzb25zdCB1ZWJlcmZsdWVzc2lnIGlucyBCYWNrdXAgdW5kIGIpIHdpcmQgZGllCitVZWJlcnNpY2h0IGRldXRsaWNoIHNjaGxlY2h0ZXIsIHdlbm4gbWFuIHggS29waWVuIGRlcyBnbGVpY2hlbiBLcmFtcyBpbSBNdWQKK3ZlcnRlaWx0IGhhdC4KKworQlRXOiBEaWVzZXIgRlRQLVp1Z2FuZyB3aXJkIGRlYWt0aXZpZXJ0LCBmYWxscyBzaWNoIGVpbiBNYWdpZXIgbGFlbmdlciBhbHMgMgorV29jaGVuIG5pY2h0IGltIE11ZCBlaW5sb2dndCwgZGFubiBtdWVzc3QgaWhyIGRpZSBQcm96ZWR1ciBkYSBvYmVuCit3aWVkZXJob2xlbi4KKworU29ycnkgZnVlciBkaWUgVW5hbm5laG1saWNoa2VpdGVuLCBhYmVyIHNvIGlzdHMgZXJzdG1hbCBiZXNzZXIgYWxzIGdhciBuaXguCitGYWxscyB3aWRlciBFcndhcnRlbiBqZW1hbmQgYmVpbSBtb2RfbXVkIGF1c2hlbGZlbiBtYWcsIGlzdCBlciB1ZWJyaWdlbnMKK2hlcnpsaWNoIHdpbGxrb21tZW4uCisKK1plc3N0cmEKK1N0YW5kOiBGZWJydWFyIDIwMTEKKwpkaWZmIC0tZ2l0IGEvZG9jL3dpei9naWZ0IGIvZG9jL3dpei9naWZ0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmEyYzRkOWUKLS0tIC9kZXYvbnVsbAorKysgYi9kb2Mvd2l6L2dpZnQKQEAgLTAsMCArMSwxMzIgQEAKK0tyYW5raGVpdGVuLCBHaWZ0ZSB1bmQgRmx1ZWNoZQorPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CisKKyAgICAgRWlubWFsIGFiZ2VzZWhlbiB2b20gZWluZmFjaGVuIFNldHplbiB2b24gUF9QT0lTT04gaW0gU3BpZWxlciBsYXNzZW4gDQorICAgICBzaWNoIEdpZnRlIHVuZCBLcmFua2hlaXRlbiBhdWNoIGFscyBPYmpla3RlIGF1c3Byb2dyYW1taWVyZW4sIGRpZSBkZW0gDQorICAgICBTcGllbGVyIGluIG1laHIgb2RlciB3ZW5pZ2VyIHJlZ2VsbWFlc3NpZ2VuIEFic3RhZW5kZW4gTGViZW5zcHVua3RlIA0KKyAgICAgYWJ6aWVoZW4uIEF1Y2ggRmx1ZWNoZSBrb2VubmVuIG5pY2h0IG51ciBhbHMgUF9DVVJTRUQgaW4gV2FmZmVuIHVuZCANCisgICAgIFJ1ZXN0dW5nZW4sIHNvbmRlcm4gYXVjaCBhbHMgT2JqZWt0ZSB2b3JsaWVnZW4sIHVuZCBkZW0gU3BpZWxlciBkYXMgDQorICAgICBMZWJlbiBzY2h3ZXJtYWNoZW4KKworICAgICBVbSBlaW4gT2JqZWt0IGFscyBHaWZ0IHp1IGtlbm56ZWljaG5lbiwgd2lyZCBkaWUgS2xhc3NlIENMX1BPSVNPTiANCisgICAgIGdlc2V0enQsIGZ1ZXIgZWluZSBLcmFua2hlaXQgaXN0IENMX0RJU0VBU0UgdW5kIGZ1ZXIgZWluZW4gRmx1Y2ggDQorICAgICBDTF9DVVJTRSB6dSBzZXR6ZW4gKG1pdCBBZGRDbGFzcywgc2llaGUgZG9ydCkuIFp1c2FldHpsaWNoIHdpcmQgZGllIA0KKyAgICAgU2Nod2VyZSBkZXIgRXJrcmFua3VuZyBiencuIFZlcmdpZnR1bmcgaW4gZGVyIFByb3BlcnR5IFBfTEVWRUwgDQorICAgICBhYmdlbGVndCwgd29iZWkgUF9MRVZFTCBlaW5lbiBXZXJ0IHp3aXNjaGVuIDEgdW5kIDEwMCBoYWJlbiBzb2xsdGUuIA0KKyAgICAgTWl0Z2xpZWRlciBkZXIgS2xlcmlrZXJnaWxkZSB1bmQgYW5kZXJlIEhlaWxlciBrb2VubmVuIGRhbm4gamUgbmFjaCANCisgICAgIFBfTEVWRUwgZGVuIGJldHJvZmZlbmVuIFNwaWVsZXIgbWVociBvZGVyIHdlbmlnZXIgZ3V0IGhlaWxlbi4gKEtsZXJpa2VyIA0KKyAgICAga29lbm5lbiBDTF9QT0lTT04tVmVyZ2lmdHVuZ2VuIGhlaWxlbiwgZWluaWdlIEhlaWxlciBqZWRvY2ggbmljaHQuKQorCisgICAgIEVpbmUgZWluZGV1dGlnZSBVbnRlcnNjaGVpZHVuZyB6d2lzY2hlbiBHaWZ0ZW4sIEtyYW5raGVpdGVuIHVuZCANCisgICAgIEZsdWVjaGVuIHp1IHRyZWZmZW4sIGlzdCBzY2h3ZXIsIGRlbm4gZGllIEdyZW56ZW4gdmVyc2Nod2ltbWVuLiANCisgICAgIFRyb3R6ZGVtIGhpZXIgZWluZSBncm9iZSBLbGFzc2lmaXppZXJ1bmc6CisKKyAgICAgR2lmdGUgOiBicmluZ3QgZGVyIFNwaWVsZXIgc2ljaCBtZWlzdCBzZWxic3QgYmVpIChpbiBkZW0gZXIgei5CLgorICAgICAgICAgICAgIGVpbmVuIGdpZnRpZ2VuIFBpbHogaXNzdCkuIE9mdCBhdWNoIHNpbmQgZGllIFN0ZWxsZW4sIHdvCisgICAgICAgICAgICAgZWluIFNwaWVsZXIgc2ljaCB2ZXJnaWZ0ZW4ga2FubiwgaXJnZW5kd2llIGdla2VubnplaWNobmV0LAorICAgICAgICAgICAgIHNvIGRhc3MgZWluZSBWZXJnaWZ0dW5nIHVtZ2FuZ2VuIHdlcmRlbiBrYW5uLgorCisgICAgICAgICAgICAgQmVpIEdpZnRlbiB3aXJkIGR1cmNoIGRhcyBIZWlsZW4gZGVyIExldmVsIGRlcyBHaWZ0b2JqZWt0cworICAgICAgICAgICAgIGFiaGFlbmdpZyB2b20gRXJmb2xnIGdlc2Vua3QuIElzdCBkZXIgTGV2ZWwgPD0gMCwgd2lyZCBkYXMKKyAgICAgICAgICAgICBPYmpla3Qgdm9tIEtsZXJpa2VyLVNwZWxsYm9vayBlbnRmZXJudC4gSGVpbGVyIHNvbGx0ZW4gZGFzCisgICAgICAgICAgICAgYWVobmxpY2ggbWFjaGVuLiBMb2dpc2NoIHdhZXJlIGVzIGRhaGVyLCBkZW4gU2NoYWRlbiwgZGVuIGRhcworICAgICAgICAgICAgIE9iamVrdCBtYWNodCwgdm9tIG1vbWVudGFuZW4gTGV2ZWwgYWJoYWVuZ2lnIHp1IG1hY2hlbi4KKworICAgICBLcmFua2hlaXQ6IHdlcmRlbiBkZW0gU3BpZWxlciBkdXJjaCBGcmVtZGVpbndpcmt1bmcgYmVpZ2VicmFjaHQsIGF1Y2gKKyAgICAgICAgICAgICBkdXJjaCBBbnN0ZWNrdW5nIGJlaSBlaW5lbSBhbmRlcmVuIFNwaWVsZXIgb2RlciBOUEMuCisgICAgICAgICAgICAgQmVpIGFuc3RlY2tlbmRlbiBLcmFua2hlaXRlbiBpc3QgYXVmIGRpZSBBbnN0ZWNrcmF0ZSB6dSBhY2h0ZW4KKyAgICAgICAgICAgICB1bmQgZGFyYXVmLCBkYXNzIGRpZSBLcmFua2hlaXQgbWl0IGRlciBaZWl0IGF1Y2ggd2llZGVyCisgICAgICAgICAgICAgYXVzc3RpcmJ0LiBBbHNvIGVudHdlZGVyIGJlaSBqZWRlciBHZW5lcmF0aW9uIGRlciBLcmFua2hlaXQKKyAgICAgICAgICAgICBkYXMgQW5zdGVja3VuZ3NyaXNpa28gc2Vua2VuIG9kZXIgZWlubWFsIGluZml6aWVydGUgU3BpZWxlcgorICAgICAgICAgICAgIGltbXVuaXNpZXJlbi4gRXMgc29sbHRlbiBzaWNoIDIgaWRlbG5kZSBTcGllbGVyIG5pY2h0IGltbWVyCisgICAgICAgICAgICAgd2llZGVyIGdlZ2Vuc2VpdGlnIGJpcyBpbiBhbGxlIGV3aWcgYW5zdGVja2VuIGtvZW5uZW4uIEF1Y2gKKyAgICAgICAgICAgICBpc3QgZGFyYXVmIHp1IGFjaHRlbiwgZGFzcyBOZXR6dG90ZSBuaWNodCBhbmdlc3RlY2t0IHdlcmRlbgorICAgICAgICAgICAgIGtvZW5uZW4gYnp3LiBOZXR6dG90ZSBuaWVtYW5kZW4gYW5zdGVja2VuLCBkYSBzaWNoIHNvbnN0IGRpZQorICAgICAgICAgICAgIEtyYW5raGVpdCBpbSBOZXR6dG90ZW5yYXVtIHZlcmJyZWl0ZW4ga2Fubi4KKworICAgICAgICAgICAgIERhcyBIZWlsZW4gZ2VzY2hpZWh0IGltIEtsZXJpa2VyLVNwZWxsYm9vayB3aWUgYmVpIEdpZnQuCisKKyAgICAgRmx1ZWNoZTogd2VyZGVuIHdpZSBLcmFua2hlaXRlbiBkdXJjaCBGcmVtZGVpbndpcmt1bmcgYmVpZ2VicmFjaHQKKyAgICAgICAgICAgICAoZGVyIFNwaWVsZXIgd2lyZCBoYWx0IHZlcmZsdWNodCkuIEF1c3NlcmRlbSBpc3QgZGllIFdpcmt1bmcgDQorICAgICAgICAgICAgIHZvbiBGbHVlY2hlbiBvZnQgbmljaHQgYXVmIGVpbmZhY2hlcyBBYnppZWhlbiB2b24gTGViZW5zcHVua3RlbiANCisgICAgICAgICAgICAgYmVzY2hyYWVua3QsIHNvbmRlcm4gZGVyIFNwaWVsZXIga2FubiB6LkIuIG5pY2h0IG1laHIgcmljaHRpZyANCisgICAgICAgICAgICAgc3ByZWNoZW4gKFNwcmFjaGZsdWNoIHVlYmVyIFBfUEVSTV9TVFJJTkcpLCBpc3QgaW4gZGVyIEJld2VndW5nIA0KKyAgICAgICAgICAgICBlaW5nZXNjaHJhZW5rdCBvZGVyIGdyZWlmdCB3YWhsbG9zIE5QQ3MgYW4uCisKKyAgICAgICAgICAgICBIaWVyIGlzdCBkYXMgRW50Zmx1Y2hlbiBkdXJjaCBlaW5lbiBLbGVyaWtlciBhbmRlcnMuIEZpbmRldAorICAgICAgICAgICAgIGRhcyBTcGVsbGJvb2sgZWluIENMX0NVUlNFLU9iamVrdCBpbSBJbnYgZGVzIFNwaWVsZXJzLCB3aXJkCisgICAgICAgICAgICAgZ2VnZW4gZGFzIExldmVsIGRlcyBPYmpla3QgZ2V3dWVyZmVsdC4gQmVpIEVyZm9sZyB3aXJkIGRhcworICAgICAgICAgICAgIE9iamVrdCBlbnRmZXJudCwgYmVpIE1pc3NlcmZvbGcgcGFzc2llcnQgbmljaHRzIQorCisgICAgICAgICAgICAgQWxzIEFuaGFsdHNwdW5rdGUgZnVlciBkZW4gTGV2ZWw6CisgICAgICAgICAgICAgLSA8IExldmVsIDEwIHNpbmQgZWluZmFjaCB6dSBlbnRmbHVjaGUKKyAgICAgICAgICAgICAtIDEwIC0gMjAgc2luZCBmdWVyIGtsZWluZSBLbGVyaWtlciBzY2hvbiBlbm9ybSBzY2h3aWVyaWcKKyAgICAgICAgICAgICAgIGZ1ZXIgbWF4LiBLbGVyaWtlciBndXQgenUgZW50Zmx1Y2hlbi4KKyAgICAgICAgICAgICAtIHVlYmVyIDIwIGdlbGluZ3QgZXMgYXVjaCBlaW5lbSBtYXguIEtsZXJpa2VyIG5pY2h0IGltbWVyCisgICAgICAgICAgICAgICBiZWltIGVyc3RlbiBtYWwuCisgICAgICAgICAgICAgLSBhYiAzMCBtdXNzIGRlciBtYXguIEtsZXJpa2VyIHNjaG9uIG1hbCB0YW5rZW4gZ2VoZW4KKyAgICAgICAgICAgICAtIFVlYmVyIExldmVsIDQwIGxpZWd0IGRpZSBDaGFuY2Ugc2Nob24gaW0gUHJvbWlsbGViZXJlaWNoISEhCisgICAgICAgICAgICAgLSBMZXZlbCAxMDAgbGFlc3N0IHNpY2ggdWViZXJoYXVwdCBuaWNodCBtZWhyIGVudGZsdWNoZW4uCisKKyAgICAgICAgICAgICBXaWxsIG1hbiBkZW0gU3BpZWxlciBhbHNvIGVpbmUgcmVlbGxlICh1bmQgbmljaHQgbnVyIA0KKyAgICAgICAgICAgICBtYXRoZW1hdGlzY2hlKSBDaGFuY2UgbGFzc2VuLCBzb2xsdGUgZGVyIEZsdWNobGV2ZWwgdW50ZXIgNDAgDQorICAgICAgICAgICAgIGJsZWliZW4uCisKKyAgICAgRGFzIFNjaGFkZW5zb2JqZWt0IHNlbGJzdCBpc3QgdW5zaWNodGJhciwgbWVpc3QgYXV0b2xvYWQgdW5kIGxvZXN0IGRpZSANCisgICAgIFNjaGFkZW5zZnVua3Rpb24gdWViZXIgQ2FsbG91dHMgYXVzLgorCisgQkVJU1BJRUw6CisgICAgIEhpZXIgZWluIEJlaXNwaWVsIGZ1ZXIgZWluZW4gR2lmdHBpbHogKGdlZnVuZGVuIGJlaSBTaWx2YW5hLCBpbgorICAgICAvZC9kc2NodW5nZWwvc2lsdmFuYS93ZWcvb2JqL3BpbHouYyk6CisgICAgIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAgICAgI3ByYWdtYSBzdHJvbmdfdHlwZXMKKyAgICAgI2luY2x1ZGUgIi4uL3BmYWQuaCIKKworICAgICBpbmhlcml0ICIvc3RkL3RoaW5nIjsKKworICAgICB2b2lkIGNyZWF0ZSgpIHsKKyAgICAgICBpZighY2xvbmVwKFRPKSkgeworICAgICAgICAgICBzZXRfbmV4dF9yZXNldCgtMSk7CisgICAgICAgICAgIHJldHVybjsKKyAgICAgICB9CisgICAgICAgOjpjcmVhdGUoKTsKKworICAgICAgIFNldFByb3AoUF9TSE9SVCwwKTsKKyAgICAgICBTZXRQcm9wKFBfSU5WSVMsMSk7CisgICAgICAgU2V0UHJvcChQX0xPTkcsMCk7CisgICAgICAgU2V0UHJvcChQX05PRFJPUCwxKTsKKyAgICAgICBTZXRQcm9wKFBfTkVWRVJEUk9QLDEpOworICAgICAgIFNldFByb3AoUF9BVVRPTE9BRE9CSiwxKTsKKyAgICAgICBTZXRQcm9wKFBfV0VJR0hULDApOworICAgICAgIFNldFByb3AoUF9OQU1FLCJQaWx6dmVyZ2lmdHVuZyIpOworICAgICAgIFNldFByb3AoUF9LSUxMX05BTUUsIkVpbmUgUGlsenZlcmdpZnR1bmciKTsKKyAgICAgICBTZXRQcm9wKFBfR0VOREVSLEZFTUFMRSk7CisgICAgICAgU2V0UHJvcChQX0FSVElDTEUsMSk7CisgICAgICAgU2V0UHJvcChQX0xFVkVMLDEwKTsKKyAgICAgICBjYWxsX291dCgibmV4dF9zdGVwIiwyKTsKKyAgICAgICBBZGRDbGFzcyhDTF9QT0lTT04pOworICAgICB9CisKKyAgICAgdm9pZCBuZXh0X3N0ZXAoKTsKKworICAgICB2b2lkIG5leHRfc3RlcCgpIHsKKyAgICAgICBvYmplY3QgcGw7CisgICAgICAgaWYoIShwbD1UT0UpIHx8ICFxdWVyeV9vbmNlX2ludGVyYWN0aXZlKHBsKSB8fAorICAgICAgICAgIHBsLT5RdWVyeVByb3AoUF9HSE9TVCkpeworICAgICAgICAgcmVtb3ZlKCk7CisgICAgICAgICByZXR1cm4gOworICAgICAgIH0KKyAgICAgICBjYWxsX291dCgjJ25leHRfc3RlcCAsNSk7CisgICAgICAgaWYoIWludGVyYWN0aXZlKHBsKSkgcmV0dXJuOworICAgICAgIHRlbGxfb2JqZWN0KHBsLAorICAgICAgIAkJICAgIkRlaW4gQmF1Y2ggc2NobWVyenQuIER1IHdpbmRlc3QgRGljaCBpbiBLcmFlbXBmZW4uXG4iKTsKKyAgICAgICBpZihFTlYocGwpKSB0ZWxsX3Jvb20oRU5WKHBsKSwKKyAgICAgICAgcGwtPk5hbWUoKSsiIHdpbmRldCBzaWNoIHZvciBTY2htZXJ6ZW4gYW0gQm9kZW4uXG4iLCh7IHBsIH0pKTsKKyAgICAgICBwbC0+ZG9fZGFtYWdlKFF1ZXJ5UHJvcChQX0xFVkVMKSoyICsgcmFuZG9tKDEwKSxUTyk7CisgICAgIH0KKworIFNJRUhFIEFVQ0g6CisgICAgUF9QT0lTT04sIFBfQ1VSU0VELCBQX1BFUk1fU1RSSU5HCisKKyBMRVRaVEUgQWVOREVSVU5HOgorICAgMTEuMDguMjAwNywgWmVzc3RyYQpkaWZmIC0tZ2l0IGEvZG9jL3dpei9naWxkZW4tZG9rdSBiL2RvYy93aXovZ2lsZGVuLWRva3UKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMDhlM2FhNwotLS0gL2Rldi9udWxsCisrKyBiL2RvYy93aXovZ2lsZGVuLWRva3UKQEAgLTAsMCArMSw0OTYgQEAKK0dpbGRlbiAKKyoqKioqKioKKworR2lsZGVuIHNpbmQgZGF6dSBkYSwgU3BpZWxlcm4gYmVzb25kZXJlIEZhZWhpZ2tlaXRlbiB6dSB2ZXJsZWloZW4uIERpZXMKK2tvZW5uZW4gWmF1YmVyc3BydWVjaGUgKFNwZWxscykgc2VpbiwgZXMga2FubiBhYmVyIGF1Y2ggYW5kZXJlIEZhZWhpZ2tlaXRlbgorKFNraWxscykgZ2ViZW4uIEFscyBTcGVsbCBnaWx0IGplZGUgRmFlaGlna2VpdCwgZGllIGVpbiBTcGllbGVyIG1pdCBlaW5lbQorQmVmZWhsIGRpcmVrdCBhdWZydWZlbiBtdXNzLiBEYW1pdCBhdWNoIGFuZGVyZSBHaWxkZW4gZGllIGdsZWljaGVuCitaYXViZXJzcHJ1ZWNoZSB2ZXJ3ZW5kZW4ga29lbm5lbiwgbXVlc3NlbiBkaWUgU3BydWVjaGUgaW4gZWlnZW5lbgorU3BlbGxib29rcyBhYmdlbGVndCB3ZXJkZW4uIEVpbmUgR2lsZGUga2FubiBTcHJ1ZWNoZSBhdXMgYmVsaWViaWdlbgorU3BlbGxib29rcyB2ZXJ3ZW5kZW4gdW5kIGRpZXNlIGdnZi4gbGVpY2h0IG1vZGlmaXppZXJlbi4gCisKK0dpbGRlbm9iamVrdCAKKz09PT09PT09PT09PT0KKworRWluZSBHaWxkZSBtdXNzIGVpbiBPYmpla3QgaGFiZW4sIGJlaSBkZW0gZGVyIFNwaWVsZXIgZGVyIEdpbGRlIGJlaXRyZXRlbgorYnp3LiBhdXN0cmV0ZW4gdW5kIGRpZSBGYWVoaWdrZWl0ZW4gZGVyIEdpbGRlIGVyd2VyYmVuIGthbm4uIEdld29laG5saWNoCitpc3QgZGllcyBlaW4gUmF1bSwgZGVyICIvc3RkL2dpbGRlbl9yb29tIiBpbmhlcml0ZXQsIGVzIGthbm4gYWJlciBhdWNoIGVpbgorYW5kZXJlcyBPYmpla3Qgc2VpbiwgZnVlciBkaWVzZW4gRmFsbCBpc3QgIi9zdGQvZ2lsZGVuX29iIiB2b3JnZXNlaGVuLiAKKworRGllIEJlaXRyaXR0c2JlZGluZ3VuZ2VuIGZ1ZXIgZGllIEdpbGRlIHdlcmRlbiBpbiBGb3JtIGVpbmVzIAorUmVzdHJpY3Rpb24tTWFwcGluZ3MgaW4gZGVyIFByb3BlcnR5IFBfR0lMREVOX1JFU1RSSUNUSU9OUworYWJnZWxlZ3QuIAorCitEYXMgU3BlbGxib29rLCBpbiBkZW0gZGllIFNwZWxscyBkZXIgR2lsZGUgc3RlaGVuLCBtdXNzIGluCitQX0dVSUxEX0RFRkFVTFRfU1BFTExCT09LIGdlbmFubnQgc2Vpbi4gRXMgd2lyZCBhdXRvbWF0aXNjaAorIi9zcGVsbGJvb2tzLyIgdm9ybmUgYW4gZGVuIE5hbWVuIGFuZ2VmdWVndC4gRGllIFNwZWxscywgZGllIGF1cyBkaWVzZW0KK1NwZWxsYm9vayB2ZXJ3ZW5kZXQgd2VyZGVuIHNvbGxlbiwga29lbm5lbiBkYW5uIGVpbmZhY2ggbWl0CitBZGRTcGVsbChuYW1lKSBhdXNnZXdhZWhsdCB3ZXJkZW4uIFdlbm4gZWluIFNwcnVjaCBtb2RpZml6aWVydCB3ZXJkZW4KK3NvbGwgc28ga2FubiBlaW4gTWFwcGluZyBtaXQgenVzYWV0emxpY2hlbiBJbmZvcm1hdGlvbmVuIGFscyB6d2VpdGVzCitBcmd1bWVudCBhbmdlZ2ViZW4gd2VyZGVuLiBJbiBkaWVzZW0ga2FubiBtYW4gZGFubiBhdWNoIGVpbiBhbmRlcmVzCitTcGVsbGJvb2sgYWxzIGRhcyBEZWZhdWx0LVNwZWxsYm9vayBtaXQgKFtTSV9TUEVMTEJPT0s6bmFtZV0pCithbmdlYmVuLiBJbiBQX0dMT0JBTF9TS0lMTFBST1BTIGthbm4gZWluIE1hcHBpbmcgYW5nZWdlYmVuCit3ZXJkZW4sIGRhcyBhbGxlIFNwZWxscyB1bmQgU2tpbGxzIG1vZGlmaXppZXJ0LiBQX0dMT0JBTF9TS0lMTFBST1BTCit1bmQgUF9HSUxERU5fREVGQVVMVF9TUEVMTEJPT0sgbXVlc3NlbiB1ZWJyaWdlbnMgZ2VzZXR6dAord2VyZGVuIGJldm9yIG1pdCBBZGRTcGVsbC9Ta2lsbCBTcGVsbHMgb2RlciBTa2lsbHMgaGluenVnZWZ1ZWd0IHdlcmRlbi4gCisKK0Z1ZXIgYW5kZXJlIEZhZWhpZ2tlaXRlbiBzaW5kIEFkZFNraWxsIHVuZCBMZWFyblNraWxsIHZvcmdlc2VoZW4uCitMZWFyblNraWxsIHdpcmQgaW0gR2VnZW5zYXR6IHp1IExlYXJuU3BlbGwgamVkb2NoIG5pY2h0IGF1dG9tYXRpc2NoIHZvbQorL3N0ZC9naWxkZW5fcm9vbSBtaXQgImxlcm5lIiBhdWZnZXJ1ZmVuLCB3ZWlsIGkuQS4gZGllc2UgRmFlaGlna2VpdGVuIGF1ZgorYW5kZXJlIEFydCBlcndvcmJlbiB3ZXJkZW4sIHouQi4gYmVpbSBHaWxkZW5laW50cml0dCBvZGVyIGR1cmNoCitUcmFpbmluZ3NzdHVuZGVuLiBNaXQgTGVhcm5Ta2lsbCBrYW5uIG1hbiBudXIgc29sY2hlIEZhZWhpZ2tlaXRlbgorZXJ3ZXJiZW4sIGRpZSBtaXQgQWRkU2tpbGwgYW5nZWZ1ZWd0IHd1cmRlbi4gCisKK1NraWxscyB3ZXJkZW4gdWVibGljaGVyd2Vpc2UgZHVyY2ggZGVuIEF1ZnJ1ZiB2b24gVXNlU2tpbGwgaW0gU3BpZWxlcgordmVyd2VuZGV0LiBXZW5uIGRlciBTcGllbGVyIGluIGVpbmVyIEdpbGRlIGlzdCB1bmQgZWluZSBGdW5rdGlvbiB1bnRlcgorU0lfU0tJTExGVU5DIHp1IGZpbmRlbiBpc3QsIHNvIHdpcmQgZGllc2UgaW0gR2lsZGVub2JqZWt0IGF1ZmdlcnVmZW4sCitzb25zdCB3aXJkIHZlcnN1Y2h0IFN0ZFNraWxsX05hbWUgaW0gU3BpZWxlciBhdWZ6dXJ1ZmVuLiBXZW5uIGF1Y2ggZGFzCitmZWhsc2NobGFlZ3Qgd2lyZCBudXIgZGVyIFdlcnQgdW50ZXIgU0lfQUJJTElUWSB6dXJ1ZWNrZ2VnZWJlbi4gCisKK0VzIHN0ZWhlbiBmb2xnZW5kZSBGdW5rdGlvbmVuIHp1ciBCZW51dHp1bmcgenVyIFZlcmZ1ZWd1bmc6IAorCisgbyBRdWVyeVNwZWxsKG5hbWUpCisgICBMaWVmZXJ0IGRpZSBJbmZvcm1hdGlvbmVuIHp1IGRpZXNlbSBTcGVsbCAKKyBvIFF1ZXJ5U2tpbGwobmFtZSkKKyAgIExpZWZlcnQgZGllIEluZm9ybWF0aW9uZW4genUgZGllc2VyIEZhZWhpZ2tlaXQgCisgbyBBZGRTcGVsbChuYW1lLGluZm8pCisgICBTcGVsbCB3aXJkIGhpbnp1Z2VmdWVndCAKKyBvIEFkZFNraWxsKG5hbWUsaW5mbykKKyAgIEZhZWhpZ2tlaXQgd2lyZCB6dWdlZnVlZ3QgCisgbyBMZWFyblNwZWxsKG5hbWUpCisgICBTcGllbGVyIGxlcm50IGRlbiBhbmdlZ2ViZW5lbiBTcGVsbCwgZmFsbHMgbW9lZ2xpY2guIExpc3RlIGRlciBTcGVsbHMKKyAgIHdpcmQgYXVzZ2VnZWJlbiwgZmFsbHMga2VpbmVyIGFuZ2VnZWJlbiBpc3QuIAorIG8gTGVhcm5Ta2lsbChuYW1lKQorICAgU3BpZWxlciBlcndpcmJ0IGRpZXNlIEZhZWhpZ2tlaXQsIGZhbGxzIG1vZWdsaWNoLiBMaXN0ZSBhbGxlcgorICAgRmFlaGlna2VpdGVuIHdpcmQgYXVzZ2VnZWJlbiwgZmFsbHMga2VpbmUgYW5nZWdlYmVuIGlzdC4gCisgbyBHaWxkZW5OYW1lKCkKKyAgIExpZWZlcnQgZGVuIE5hbWVuIGRpZXNlciBHaWxkZS4gCisgbyBJbml0aWFsU2tpbGxBYmlsaXR5KGluZm8sc3BpZWxlcikKKyAgIFJlY2huZXQgZGVuIEFuZmFuZ3N3ZXJ0IGZ1ZXIgU0lfU0tJTExBQklMSVRZIGF1cy4gCisgbyBTa2lsbExpc3RlKHgpCisgICBFcyB3aXJkIGFuZ2V6ZWlndCwgd2VsY2hlIFNwZWxscy9Ta2lsbHMgZGVyIFNwaWVsZXIgbGVybmVuIGthbm4uCisgICBEYWJlaSBiZWRldXRldCB4OiAKKyAgICBvIDE6IE51ciBTcGVsbHMgYW56ZWlnZW4gCisgICAgbyAyOiBOdXIgU2tpbGxzIGFuemVpZ2VuIAorICAgIG8gMzogQmVpZGVzIGFuemVpZ2VuIAorCitWb24gZGllc2VuIEZ1bmt0aW9uZW4gc3RlaGVuIGluIC9zdGQvZ2lsZGVuX3Jvb20gYXV0b21hdGlzY2gKK2JlaV9vZGVyX2F1c3RyZXRlbiB1bmQgTGVhcm5TcGVsbCBkZW0gU3BpZWxlciB6dXIgVmVyZnVlZ3VuZy4gCisKK1NwZWxsYm9vayAKKz09PT09PT09PT0KKworU3BlbGxib29rcyBzdGVsbGVuIGRpZSBTcGVsbHMgenVyIFZlcmZ1ZWd1bmcsIGRpZSBTcGllbGVyIG9kZXIgTW9uc3RlcgordmVyd2VuZGVuIGtvZW5uZW4uIEFsbGUgU3BlbGxib29rcyBzb2xsdGVuIC9zdGQvc3BlbGxib29rIGluaGVyaXRlbi4gSW4gZGVyCitlaW5mYWNoc3RlbiBGb3JtIGthbm4gZWluIFNwZWxsIHdpZSBmb2xndCBoaW56dWdlZnVlZ3Qgd2VyZGVuOiAKK0FkZFNwZWxsKHZlcmIsa29zdGVuLGxldmVsKQorRGFiZWkgaXN0ICJ2ZXJiIiBzb3dvaGwgZGVyIE5hbWUgZGVzIFZlcmJzLCBtaXQgZGVtIGRlciBTcHJ1Y2gKK2F1ZmdlcnVmZW4gd2VyZGVuIHNvbGwsIHdpZSBhdWNoIGRlciBOYW1lIGRlciBGdW5rdGlvbiwgZGllIGRhYmVpCithdWZnZXJ1ZmVuIHdpcmQuICJrb3N0ZW4iIHNpbmQgZGllIE1hZ2llcHVua3RlLCBkaWUgZnVlciBkZW4gU3BydWNoCitiZW5vZXRpZ3Qgd2VyZGVuIHVuZCAibGV2ZWwiIGlzdCBkZXIgU3BpZWxlcmxldmVsLCBkZXIgbm9ldGlnIGlzdCwgdW0gZGllc2VuCitTcHJ1Y2ggenUgbGVybmVuLiAKKworSW4gZGVyIGZsZXhpYmxlcmVuIEZvcm0gd2VyZGVuIFNwZWxscyBtaXQgCitBZGRTcGVsbCh2ZXJiLGtvc3RlbixpbmZvKQoraGluenVnZWZ1ZWd0LiBEYWJlaSBpc3QgImluZm8iIGVpbiBNYXBwaW5nLCBpbiBkZW0gYWxsZSBhbmRlcmVuIAorU3BlbGwtSW5mb3JtYXRpb25lbiBzdGVoZW4uIERhYmVpIGthbm4gei5CLiBlaW5lIGFuZGVyZSBGdW5rdGlvbiBhbHMgZGFzCitWZXJiIGFscyBFaW50cmFnIAorU0lfU0tJTExGVU5DOm5hbWUKK2FuZ2VnZWJlbiB3ZXJkZW4uIFdlbm4genVtIExlcm5lbiBlaW5lIGJlc3RpbW10ZSBTdHVmZSBlcmZvcmRlcmxpY2ggaXN0CitzbyBtdXNzIAorU0lfU0tJTExSRVNUUl9MRUFSTjooW1BfTEVWRUw6bGV2ZWxdKQorZWluZ2V0cmFnZW4gc2Vpbi4gRXMgc29sbHRlbiBhbGxlIFdlcnRlLCB2b24gZGVuZW4gZWluIFNwZWxsIGFiaGFlbmd0LCBpbiBkZW0KK01hcHBpbmcgZWluZ2V0cmFnZW4gc2Vpbi4gRGFkdXJjaCBoYWJlbiBHaWxkZW4gZGllIE1vZWdsaWNoa2VpdCwgU3BlbGxzCittaXQgT2Zmc2V0cyB1bmQgRmFrdG9yZW4genUgbW9kaWZpemllcmVuLiAKKworSW4gUF9HTE9CQUxfU0tJTExQUk9QUyBrYW5uIGVpbiBNYXBwaW5nIHN0ZWhlbiwgZGFzcyBiZWkgamVkZW0KK1NwZWxsIHp1bSBJbmZvIGFkZGllcnQgd2lyZC4gRGllc2VzIHNvbGx0ZSBnZXNldHp0IHdlcmRlbiwgYmV2b3IgZGllIFNwZWxscworbWl0IEFkZFNwZWxsIGhpbnp1Z2VmdWVndCB3ZXJkZW4uIAorCitEaWUgQmVudXR6dW5nIHZvbiBTcGVsbHMgbGFldWZ0IHdpZSBmb2xndCBhYjogCisKKyBvIFp1ZXJzdCB3aXJkIHVlYmVycHJ1ZWZ0LCBvYiBkZXIgU3BpZWxlciBkZW4gU3BydWNoIHZlcndlbmRlbiBkYXJmLgorICAgRGF6dSB3aXJkIGRpZSBGdW5rdGlvbiBDYW5UcnlTcGVsbCBhdWZnZXJ1ZmVuLiBEaWVzZSBwcnVlZnQKKyAgIG5vcm1hbGVyd2Vpc2UsIG9iIGRlciBTcGllbGVyIGtlaW4gR2Vpc3QgaXN0IHVuZCBvYiBlciBkaWUKKyAgIEVpbnNjaHJhZW5rdW5nZW4gZXJmdWVsbHQsIGRpZSBhbHMgU0lfU0tJTExSRVNUUl9VU0UKKyAgIGFuZ2VnZWJlbiBzaW5kLiAKKyBvIEFscyBuYWVjaHN0ZXMgd2lyZCBnZXBydWVmdCwgb2IgZGVyIFNwaWVsZXIgbm9jaCBnZW51ZyBNYWdpZXB1bmt0ZQorICAgaGF0LiBEaWVzZSBzdGVoZW4gaW0gTWFwcGluZyB1bnRlciBTSV9TUEVMTENPU1QuIAorIG8gQWxzIGxldHp0ZXMgd2lyZCBnZXBydWVmdCwgb2IgZGVyIFNwaWVsZXIgbm9jaCBlcnNjaG9lcGZ0IGlzdCB2b24KKyAgIHNlaW5lbSBsZXR6dGVuIFNwcnVjaC4gCisgbyBOdW4gd2lyZCBkaWUgZWlnZW50bGljaGUgRnVua3Rpb24gZGVzIFNwZWxscyBhdWZnZXJ1ZmVuLCB3ZW5uIGVzIGRpZQorICAgVW1nZWJ1bmcgenVsYWVzc3QuIERpZSBGdW5rdGlvbiBtdXNzIGVpbmVuIHBvc2l0aXZlbiBXZXJ0CisgICB6dXJ1ZWNrZ2ViZW4sIHdlbm4gZGVyIFNwcnVjaCBnZWx1bmdlbiBpc3QsIHVuZCBlaW5lbiBuZWdhdGl2ZW4sCisgICB3ZW5uIGVyIG1pc3NsdW5nZW4gaXN0LiBGYWxscyBkZXIgU3BydWNoIGF1cyBpcmdlbmQgZWluZW0gR3J1bmQKKyAgIG5pY2h0IGFud2VuZGJhciBpc3Qgc29sbCAwIHp1cnVlY2tnZWdlYmVuIHdlcmRlbi4gCisgbyBCZWkgRXJmb2xnIG9kZXIgTWlzc2VyZm9sZyB3ZXJkZW4gZGllIE1hZ2llcHVua3RlIGFiZ2V6b2dlbiB1bmQKKyAgIGRlciBTcGllbGVyIGlzdCBmdWVyIGRpZSBuYWVjaHN0ZSBaZWl0IGVyc2Nob2VwZnQuIERpZSBaZWl0c3Bhbm5lIGlzdAorICAgaW0gTWFwcGluZyB1bnRlciBTSV9TUEVMTEZBVElHVUUgenUgZmluZGVuLiAKKyBvIEJlaSBFcmZvbGcgd2lyZCBkaWUgRnVua3Rpb24gIkVyZm9sZyIgYXVmZ2VydWZlbiwgYmVpIE1pc3NlcmZvbGcKKyAgIGRpZSBGdW5rdGlvbiAiTWlzc2VyZm9sZyIgCisgbyBEaWUgRnVua3Rpb24gIk1pc3NlcmZvbGciIHJ1ZnQgbm9ybWFsZXJ3ZWlzZSBkaWUgRnVua3Rpb24gIkxlYXJuIgorICAgYXVmLCBkYW1pdCBkZXIgU3BpZWxlciBhdXMgc2VpbmVuIEZlaGxlcm4gbGVybnQuIAorCitEaWUgZWlnZW50bGljaGUgU3BlbGxmdW5rdGlvbiBzb2xsdGUsIGZhbGxzIGRlciBTcGVsbCBhbndlbmRiYXIgaXN0LCBtaXQKK1NwZWxsU3VjY2VzcyBwcnVlZmVuLCBvYiBlciBlcmZvbGdyZWljaCBpc3Qgb2RlciBuaWNodC4gRGFiZWkgZ2VsdGVuIFdlcnRlCitncm9lc3NlciBOdWxsIGFscyBFcmZvbGcuIEluIGRlciBTcGVsbGZ1bmt0aW9uIHNvbGx0ZW4sIGZhbGxzIG1vZWdsaWNoLCAKK1NraWxsQXR0cmlidXRlIGRlcyBTcGllbGVycyBzb3dpZSBGYWt0b3JlbiB1bmQgT2Zmc2V0cyBiZXJ1ZWNrc2ljaHRpZ3QKK3dlcmRlbi4gRnVlciBiZWlkZXMgc3RlaGVuIGVpbmZhY2ggenUgaGFuZGhhYmVuZGUgRnVua3Rpb25lbiB6dXIKK1ZlcmZ1ZWd1bmcuIERpZXMgaXN0IHp3YXIgZXR3YXMgbWVociBBcmJlaXQsIGRhZnVlciBnZXNjaGVoZW4gZGFubiBEaW5nZQord2llIEludGVyYWt0aW9uZW4gendpc2NoZW4gZGVuIFNwZWxscyBmYXN0IGF1dG9tYXRpc2NoLiAKKworRm9sZ2VuZGUgRnVua3Rpb25lbiBzdGVsbHQgZGFzIFN0YW5kYXJkLVNwZWxsYm9vayB6dXIgVmVyZnVlZ3VuZzogCisKKyBvIFF1ZXJ5U3BlbGwobmFtZSkKKyAgIExpZWZlcnQgSW5mb3JtYXRpb25zLU1hcHBpbmcgenUgZGllc2VtIFNwZWxsLiAKKyBvIEFkZFNwZWxsKG5hbWUsa29zdGVuLGluZm8pCisgICBGdWVndCBTcGVsbCBtaXQgYW5nZWdlYmVuZW4gS29zdGVuIHVuZCBkZW0KKyAgIEluZm9ybWF0aW9ucy1NYXBwaW5nIGlucyBTcGVsbGJvb2sgZWluLiAKKyBvIFRyeUF0dGFja1NwZWxsKG9wZmVyLHNjaGFkZW4sdHlwZW4saXNfc3BlbGwsY2FzdGVyLGluZm8pCisgICBWZXJzdWNodCBkZW4gQW5ncmlmZnMtU3BydWNoIGF1ZiBkZW4gR2VnbmVyIGFuenV3ZW5kZW4uIERpZQorICAgbWl0dGxlcmVuIDQgV2VydGUgc2luZCBkaWUsIGRpZSBhdWNoIGJlaSBEZWZlbmQgdWViZXJnZWJlbiB3ZXJkZW4uCisgICBEYWJlaSB3aXJkIGRpZSBBYndlaHJmYWVoaWdrZWl0IGRlcyBHZWduZXJzIGdlZ2VuIE1hZ2llIHVuZCBkYXMKKyAgIFNraWxsLUF0dHJpYnV0IFNBX0RBTUFHRSBhdXRvbWF0aXNjaCBiZXJ1ZWNrc2ljaHRpZ3QuIAorIG8gVHJ5RGVmYXVsdEF0dGFja1NwZWxsKG9wZmVyLGNhc3RlcixpbmZvLGlzX3NwZWxsKQorICAgV2llIFRyeUF0dGFja1NwZWxsLCBudXIgd2VyZGVuIFNjaGFkZW4gdW5kIFNjaGFkZW5zdHlwZW4KKyAgIGF1dG9tYXRpc2NoIGF1cyBkZW0gSW5mb3JtYXRpb25zLU1hcHBpbmcgZW50bm9tbWVuLiBCZWkgYmVpZGVuCisgICBGdW5rdGlvbmVuIHNvbGx0ZSBhbHMgaXNfc3BlbGwgdWVicmlnZW5zIGVpbiBTdHJpbmcgc3RlaGVuLCB6LkIuCisgICAiRmV1ZXJiYWxsIiwgZGFtaXQgZXMgbGVpY2h0ZXIgbW9lZ2xpY2ggaXN0LCBNb25zdGVyIHp1IHNjaHJlaWJlbiwgZGllCisgICBhdWYgZGllc2UgcmVhZ2llcmVuLiAKKyBvIFNwZWxsU3VjY2VzcyhjYXN0ZXIsaW5mbykKKyAgIEVybWl0dGVsdCwgb2IgZGVyIFNwZWxsIGZ1bmt0aW9uaWVydCBvZGVyIGZlaGxzY2hsYWVndC4gRGFiZWkgd2lyZAorICAgYXVjaCBlaW5lIGV2dGwuIHZvcmhhbmRlbmUgU3BlbGxjYXN0aW5nLUZhZWhpZ2tlaXQgKFNLX0NBU1RJTkcpCisgICBiZXJ1ZWNrc2ljaHRpZ3QuIE9obmUgU3BlbGxjYXN0aW5nLUZhZWhpZ2tlaXQgbGllZ3QgZGFzIEVyZ2VibmlzCisgICB6d2lzY2hlbiAtTUFYX0FCSUxJVFkgdW5kICtNQVhfQUJJTElUWSwgbWl0IGRpZXNlcgorICAgRmFlaGlna2VpdCBrb2VubmVuIGRpZSBXZXJ0ZSB6d2lzY2hlbiAtMipNQVhfQUJJTElUWSB1bmQKKyAgICsyKk1BWF9BQklMSVRZIGxpZWdlbi4gV2VydGUga2xlaW5lciBvZGVyIGdsZWljaCBOdWxsIHNvbGxlbgorICAgYWxzIEZlaGxzY2hsYWcgaW50ZXJwcmV0aWVydCB3ZXJkZW4uIAorICAgV2VyIHdpbGwsIGthbm4gV2VydGUgdWViZXIgK01BWF9BQklMSVRZIGFscyBiZXNvbmRlcnMgZ3V0CisgICBnZWx1bmdlbmUgU3BlbGxzIGludGVycHJldGllcmVuIHVuZCBiZWkgV2VydGVuIHVudGVyCisgICAtTUFYX0FCSUxJVFkgdW5hbmdlbmVobWUgV2lya3VuZ2VuIGF1c2xvZXNlbiwgei5CLiBrYW5uCisgICBzaWNoIGRlciBTcGVsbCBkYW5uIGdlZ2VuIGRlbiBTcGllbGVyIHJpY2h0ZW4uLi4gCisgICBXZW5uIGVpbiBTcGllbGVyIGRpZSBTcGVsbGNhc3RpbmctRmFlaGlna2VpdCBoYXQgdW5kIGVpbiBTcHJ1Y2gKKyAgIGJlc29uZGVycyBndXQgZ2VsaW5ndCwgc28gZnJldXQgZXIgc2ljaCB1bmQgdmVyYmVzc2VydCBkaWVzZQorICAgRmFlaGlna2VpdC4gCisgbyBDYW5UcnlTcGVsbChjYXN0ZXIsaW5mbykKKyAgIEVybWl0dGVsdCwgb2IgZGVyIFNwaWVsZXIgZGVuIFNwcnVjaCBhbndlbmRlbiBkYXJmLiBOb3JtYWxlcndlaXNlCisgICBpc3QgZGllc2UgZGVyIEZhbGwsIHdlbm4gZXIga2VpbiBHZWlzdCBpc3QgdW5kIGRpZSBCZWRpbmd1bmdlbgorICAgZXJmdWVsbHQsIGRpZSB1bnRlciBTSV9TS0lMTFJFU1RSX1VTRSBpbSBNYXBwaW5nIGVpbmdldHJhZ2VuCisgICBzaW5kLiAKKyBvIExlYXJuKGNhc3RlcixzcGVsbCxpbmZvKQorICAgRGllc2UgRnVua3Rpb24gd2lyZCBub3JtYWxlcndlaXNlIGJlaSBNaXNzZXJmb2xnIGF1ZmdlcnVmZW4sCisgICBkYW1pdCBkZXIgU3BpZWxlciBhdXMgc2VpbmVuIEZlaGxlcm4gbGVybnQuIERhYmVpIHdpcmQKKyAgIHVlYmxpY2hlcndlaXNlIGRpZSBJbnRlbGxpZ2VueiBkZXMgU3BpZWxlcnMgYmVydWVja3NpY2h0aWd0LiBGdWVyIGplIDIKKyAgIFN0dWZlbiBBX0lOVCBiZWtvbW10IGRlciBTcGllbGVyIFNJX1NLSUxMTEVBUk4gaGluenUuIAorCisgICBNb2VjaHRlIG1hbiBlaW4gYW5kZXJlcyBBdHRyaWJ1dCB6dW0gbGVybmVuIHZlcndlbmRlbiBrYW5uIG1hbiBkaWVzCisgICBpbiBGb3JtIGVpbmVzIE1hcHBpbmdzIGluIFNJX0xFQVJOX0FUVFJJQlVURSB0dW4uCisKKyAgIFNJX0xFQVJOX0FUVFJJQlVURTooW0FfU1RSOjFdKSBtYWNodCBkYXMgTGVybmVuIHJlaW4gc3RhZXJrZWFiaGFlbmdpZywKKyAgIFNJX0xFQVJOX0FUVFJJQlVURTooW0FfU1RSOjEsQV9JTlQ6Ml0pIGJpbGRldCBkZW4gZ2V3aWNodGV0ZW4gTWl0dGVsd2VydAorICAgdm9uIFNUUiB1bmQgendlaWZhY2hlciBJTlQuICAKKworIG8gRXJmb2xnKGNhc3RlcixzcGVsbCxpbmZvKQorICAgRGllc2UgRnVua3Rpb24gd2lyZCBiZWkgRXJmb2xnIGF1ZmdlcnVmZW4uIAorIG8gTWlzc2VyZm9sZyAoY2FzdGVyLHNwZWxsLGluZm8pCisgICBEaWVzZSBGdW5rdGlvbiB3aXJkIGJlaSBNaXNzZXJmb2xnIGF1ZmdlcnVmZW4uIAorIG8gRmluZFZpY3RpbSh3ZW4sc3BpZWxlcixtc2cpCisgICAid2VuIiB3aXJkIGluIGRlciBVbWdlYnVuZyBkZXMgU3BpZWxlcnMgZ2VzdWNodC4gRmFsbHMgZGllc2UKKyAgIFZhcmlhYmxlIE51bGwgaXN0IHdpcmQgenVmYWVsbGlnIGVpbiBGZWluZCBhdXNnZXdhZWhsdC4gRmFsbHMKKyAgIG5pZW1hbmQgZ2VmdW5kZW4gd2lyZCwgc28gd2lyZCAibXNnIiBhdXNnZWdlYmVuLiAKKyBvIEZpbmRMaXZpbmdWaWN0aW0od2VuLHNwaWVsZXIsbXNnKQorICAgV2llIEZpbmRWaWN0aW0sIG51ciB3aXJkIHp1c2FldHpsaWNoIHVlYmVycHJ1ZWZ0LCBvYiBlcyBlaW4KKyAgIExlYmV3ZXNlbiBpc3QuIAorIG8gRmluZEVuZW15VmljdGltKHdlbixzcGllbGVyLG1zZykKKyAgIFdpZSBGaW5kTGl2aW5nVmljdGltLCBudXIgZGVyIFNwaWVsZXIgc2VsYnN0IHdpcmQgYXVzZ2Vub21tZW4KKyAgIHVuZCB3ZW5uIGVzIHZvcmhlciBub2NoIGtlaW4gRmVpbmQgd2FyLCBzbyB3aXJkIEtpbGwgYXVmZ2VydWZlbgorICAgZGFtaXQgZXMgaGludGVyaGVyIGdhcmFudGllcnQgZWluZXIgaXN0LiAKKyBvIEZpbmRHcm91cChzcGllbGVyLHdlbikKKyAgIEJlaSBTcGllbGVybiBmaW5kZXQgZGllIEZ1bmt0aW9uIGFsbGUgTW9uc3RlciBpbSBSYXVtLCB3ZW5uICJ3ZW4iCisgICBuZWdhdGl2IGlzdCwgYWxsZSBTcGllbGVyIHdlbm4gIndlbiIgcG9zaXRpdiBpc3QgdW5kIGFsbGUgTGViZXdlc2VuCisgICB3ZW5uICJ3ZW4iIE51bGwgaXN0LiBCZWkgTW9uc3Rlcm4gaXN0IGVzIGdlbmF1IHVtZ2VrZWhydC4gRXMgc29sbHRlCisgICBqZWRvY2ggRmluZEdyb3VwUCBtaXQgMTAwJSB2ZXJ3ZW5kZXQgd2VyZGVuLiAKKyBvIEZpbmRHcm91cE4oc3BpZWxlcix3ZW4sbikKKyAgIFdpZSBGaW5kR3JvdXAsIGplZG9jaCBtYXhpbWFsIG4gUGVyc29uZW4uIERhcyBTa2lsbC1BdHRyaWJ1dAorICAgU0FfRVhURU5TSU9OIHdpcmQgYXV0b21hdGlzY2ggYmVydWVja3NpY2h0aWd0LiAKKyBvIEZpbmRHcm91cFAoc3BpZWxlcix3ZW4scHJvemVudCkKKyAgIFdpZSBGaW5kR3JvdXAsIGplZG9jaCBqZWRlIFBlcnNvbiBtaXQgZGVyIGFuZ2VnZWJlbmVuCisgICBXYWhyc2NoZWlubGljaGtlaXQuIERhcyBTa2lsbC1BdHRyaWJ1dCBTQV9FWFRFTlNJT04gd2lyZAorICAgYXV0b21hdGlzY2ggYmVydWVja3NpY2h0aWd0LiAKKworTmV1ZSBGdW5rdGlvbmVuIGltIExpdmluZyAKKz09PT09PT09PT09PT09PT09PT09PT09PT09CisKKyBvIFF1ZXJ5U2tpbGxBdHRyaWJ1dGUobmFtZSkKKyAgIEhpZXJtaXQga2FubiBkYXMgU2tpbGwtQXR0cmlidXQgbWl0IGRlbSBhbmdlZ2ViZW5lbiBOYW1lbgorICAgYWJnZWZyYWd0IHdlcmRlbi4gCisgbyBTZXRTa2lsbEF0dHJpYnV0ZShjYXN0ZXIsbmFtZSx3ZXJ0LGRhdWVyLGZ1bmMpCisgICBIaWVybWl0IGthbm4gZGFzIGFuZ2VnZWJlbmUgU2tpbGwtQXR0cmlidXQgdm9tIGNhc3RlciBmdWVyIGRpZQorICAgYW5nZWdlYmVuZSBEYXVlciBhdWYgZWluZW4gV2VydCBnZXNldHp0IHdlcmRlbi4gRXMga2FubiBlaW5lCisgICBGdW5rdGlvbiBhbmdlZ2ViZW4gd2VyZGVuLCBkaWUgZGVuIFdlcnQgc3RhdHQgZGVzc2VuIGxpZWZlcm4gc29sbC4gCisgbyBRdWVyeVNraWxsKG5hbWUpCisgICBEaWVzIGxpZWZlcnQgZGllIHNwaWVsZXJzcGV6aWZpc2NoZW4gU2tpbGwtSW5mb3JtYXRpb25lbi4gCisgbyBRdWVyeVNraWxsQWJpbGl0eShuYW1lKQorICAgRGllcyBsaWVmZXJ0IHZvbiBkZW4gU2tpbGwtSW5mb3JtYXRpb25lbiBudXIgU0lfQUJJTElUWS4gCisgbyBNb2RpZnlTa2lsbChuYW1lLGluZm8sZGlmZikKKyAgIE1vZGlmaXppZXJ0IGRpZSBTa2lsbC1JbmZvcm1hdGlvbmVuLiBXZW5uICJpbmZvIiBlaW4gTWFwcGluZyBpc3QsCisgICBzbyB3aXJkIGVzIHp1IGRlbSBhbHRlbiBNYXBwaW5nICJhZGRpZXJ0IiAoYWxzbyBkaWUgYW5nZWdlYmVuZW4KKyAgIFdlcnRlIGdlYWVuZGVydCksIHdlbm4gbnVyIGVpbiBXZXJ0IGFuZ2VnZWJlbiBpc3QsIHdpcmQKKyAgIGFuZ2Vub21tZW4gZGFzcyBlcyBzaWNoIGRhYmVpIHVtIFNJX0FCSUxJVFkgaGFuZGVsdC4gCisgbyBMZWFyblNraWxsKG5hbWUsYWRkLGRpZmYpCisgICBBZGRpZXJ0IGRlbiBhbmdlZ2ViZW5lbiBXZXJ0IHp1IFNJX0FCSUxJVFkuIERhYmVpIGlzdCAiZGlmZiIgZGVyCisgICBTY2h3aWVyaWdrZWl0c2dyYWQgdm9uIGRpZXNlbSBTcGVsbC9Ta2lsbC4gRHVyY2ggZGVuCisgICBTY2h3aWVyaWdrZWl0c2dyYWQgU0lfQUJJTElUWSBhYmhhZW5naWcgdm9tIExldmVsIGJlZ3Jlbnp0LiAKKyBvIFVzZVNwZWxsKGFyZyxzcGVsbCkKKyAgIERhcyBMZWJld2VzZW4gYmVudXR6dCBkZW4gU3BlbGwgbWl0IGRlbiBhbmdlZ2ViZW5lbiBBcmd1bWVudGVuLgorICAgV2VubiBrZWluIFNwZWxsIGFuZ2VnZWJlbiBpc3QsIHNvIHdpcmQgcXVlcnlfdmVyYigpIHZlcndlbmRldC4gCisgbyBVc2VTa2lsbChza2lsbCxhcmcpCisgICBEYXMgTGViZXdlc2VuIGJlbnV0enQgZGllIEZhZWhpZ2tlaXQuIAorCitOZXVlIFByb3BlcnRpZXMvRnVua3Rpb25lbiBpbiBMaXZpbmcvQ29tYmF0IAorPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKworRWluaWdlIFNwcnVlY2hlIGVyZm9yZGVybiBlcywgZGFzIFZlcmhhbHRlbiBiZWkgQXR0YWNrIHVuZCBEZWZlbmQgemllbWxpY2gKK3dlaXRyZWljaGVuZCB6dSBhZW5kZXJuLiBEYWZ1ZXIgd3VyZGVuIGZvbGdlbmRlIFByb3BlcnRpZXMgdW5kCitGdW5rdGlvbmVuIGVpbmdlYmF1dDogCisKKyBvIFBfVE1QX0FUVEFDS19IT09LCisgICBIaWVyIGthbm4gZWluIEFycmF5IGRlciBGb3JtICh7RW5kemVpdHB1bmt0LE9iamVrdCxGdW5rdGlvbn0pCisgICBzdGVoZW4uIFNvbGFuZ2UgZGVyIEVuZHplaXRwdW5rdCBub2NoIG5pY2h0IHVlYmVyc2Nocml0dGVuIHd1cmRlCisgICB1bmQgZGFzIGFuZ2VnZWJlbmUgT2JqZWt0IGV4aXN0aWVydCwgd2lyZCBhbnN0ZWxsZSB2b24gQXR0YWNrIGRpZQorICAgRnVua3Rpb24gaW4gZGVtIE9iamVrdCBhdWZnZXJ1ZmVuLiBXZW5uIGRpZSBGdW5rdGlvbiAwIGxpZWZlcnQKKyAgIHdpcmQgZGVyIFJlc3Qgdm9uIEF0dGFjayBuaWNodCBtZWhyIGF1c2dlZnVlaHJ0LiAKKyBvIFBfVE1QX0RFRkVORF9IT09LCisgICBXaWUgUF9BVFRBQ0tfSE9PSywgbnVyIG1pdCBEZWZlbmQuIERhbWl0IHNpbmQgei5CLgorICAgU3BydWVjaGUgbW9lZ2xpY2gsIGRpZSBmdWVyIGt1cnplIFplaXQgZWluZSBtYWdpc2NoZSBTY2h1dHpodWVsbGUKKyAgIGVyc2NoYWZmZW4uIFdlbm4gZGllIEZ1bmt0aW9uIDAgbGllZmVydCB3aXJkIGRlciBSZXN0IHZvbiBEZWZlbmQKKyAgIG5pY2h0IG1laHIgYXVzZ2VmdWVocnQuIFdlbm4gZXMgZWluIEFycmF5IGRlciBGb3JtCisgICAoe2RhbWFnZSxkdCxpc19zcGVsbH0pIGVyZ2lidCB3aXJkIGVzIHdpZSBiZWkgRGVmZW5kT3RoZXIKKyAgIGludGVycHJldGllcnQuIAorIG8gUF9ERUZFTkRFUlMKKyAgIExpc3RlIHZvbiBMZWJld2VzZW4sIGRpZSBtaXQgSW5mb3JtRGVmZW5kKGVuZW15KSBpbmZvcm1pZXJ0CisgICB3ZXJkZW4gc29sbGVuLCBzb2JhbGQgZWluIG5ldWVyIEZlaW5kIGhpbnp1a29tbXQuIEJlaSBlaW5lbQorICAgenVmYWVsbGlnIGF1c2dld2FlaGx0ZW0gTGViZXdlc2VuIGF1cyBkaWVzZXIgTGlzdGUgd2lyZCBhdXNzZXJkZW0KKyAgIERlZmVuZE90aGVyIG1pdCBkZW4gQXJndW1lbnRlbiB2b24gRGVmZW5kIGF1ZmdlcnVmZW4uIAorIG8gQWRkRGVmZW5kZXIoZnJpZW5kKQorICAgRnVlZ3QgTGViZXdlc2VuIGluIFBfREVGRU5ERVJTIGVpbiwgd2VubiBlcyBub2NoIG5pY2h0IGluIGRlcgorICAgTGlzdGUgaXN0LiAKKyBvIEluZm9ybURlZmVuZChlbmVteSkKKyAgIFNpZWhlIG9iZW4uIAorIG8gRGVmZW5kT3RoZXIoZGFtLGR0LGlzX3NwZWxsLGVuZW15KQorICAgTWl0IGRpZXNlciBGdW5rdGlvbiBrYW5uIG1hbiBMZWJld2VzZW4gZXJzY2hhZmZlbiwgZGllIFNjaGFkZW4KKyAgIHZvbiBhbmRlcmVuIGFid2VuZGVuIG9kZXIgbW9kaWZpemllcmVuLiBXZW5uIGRpZXNlIEZ1bmt0aW9uIGVpbgorICAgQXJyYXkgKHtkYW0sZHQsaXNfc3BlbGx9KSB6dXJ1ZWNrZ2lidCBzbyB3ZXJkZW4gYmVpIGRlbSB6dQorICAgdmVydGVpZGlnZW5kZW4gTGViZXdlc2VuIGRpZXNlIFdlcnRlIGdlbm9tbWVuIGFuc3RlbGxlIGRlciBhbHRlbi4KKyAgIE1hbiBrYW5uIGFsc28gei5CLiBlaW4gTW9uc3RlciBlcnNjaGFmZmVuLCBkYXMgZWluCisgICBmZXVlcmVtcGZpbmRsaWNoZXMgYW5kZXJlcyBNb25zdGVyIHZlcnRlaWRpZ3QsIGluZGVtIGVzIHouQi4KKyAgIEZldWVyYmFlbGxlIGluIEVpc2hhZ2VsIHZlcndhbmRlbHQuIAorCitTdGFuZGFyZC1Ta2lsbHMgCis9PT09PT09PT09PT09PT09CisKK0ZvbGdlbmRlIEZhZWhpZ2tlaXRlbiB3ZXJkZW4gc2Nob24gYmVydWVja3NpY2h0aWd0IHVuZCBzaW5kIGF1Y2gKK3ZvcmRlZmluaWVydC4gV2VubiBzaWUgdW52ZXJhZW5kZXJ0IHVlYmVybm9tbWVuIHdlcmRlbiBzb2xsZW4gbXVzcyBudXIKK1NJX0FCSUxJVFkgZ2VzZXR6dCB3ZXJkZW4uIAorCisgbyBTS19TV09SREZJR0hUSU5HCisgICBTY2h3ZXJ0a2FtcGYuIEJpcyB6dSAzMytBX1NUUitBX0RFWCBBdWZzY2hsYWcgYmVpCisgICBTY2h3ZXJ0ZXJuLCB3ZW5uIGplbWFuZCBkaWVzZSBGYWVoaWdrZWl0IHp1IDEwMCUgaGF0LiAKKyBvIFNLX1dFQVBPTkxFU1MKKyAgIEthbXBmIG1pdCBibG9zc2VuIEhhZW5kZW4uIEJpcyB6dSAxMDArQV9TVFIrMypBX0RFWAorICAgQXVmc2NobGFnLiAKKyBvIFNLX1RXT0hBTkRFRAorICAgS2FtcGYgbWl0IHp3ZWloYWVuZGlnZW4gV2FmZmVuLiBCaXMgenUgMzMrQV9TVFIgQXVmc2NobGFnLiAKKyBvIFNLX05JR0hUVklTSU9OCisgICBXZXIgZGllc2UgRmFlaGlna2VpdCB6dSAxMDAlIGhhdCBicmF1Y2h0IDIwIFNla3VuZGVuIHBybworICAgZmVobGVuZGVtIExpY2h0bGV2ZWwgdW0gc2ljaCBhbiBkaWUgRHVua2VsaGVpdCB6dSBnZXdvZWhuZW4uIAorIG8gU0tfQk9PWkUKKyAgIE1pdCAxMDAlIGRpZXNlciBGYWVoaWdrZWl0IHdpcmQgYmVpIGplZGVtIGFsa29ob2xpc2NoZW4gR2V0cmFlbmsKKyAgIDgwJSB2b20gQWxrb2hvbGdlaGFsdCBhYmdlem9nZW4uIAorCitGb2xnZW5kZSBGYWVoaWdrZWl0ZW4gd2VyZGVuIGJlcnVlY2tzaWNodGlndCwgc2luZCBhYmVyIG5pY2h0IHZvcmRlZmluaWVydDogCisKKyBvIFNLX01BR0lDX0FUVEFDSworICAgV2VubiBkaWVzZSBGYWVoaWdrZWl0IHZvcmhhbmRlbiBpc3QsIHdpcmQgZGllIEZ1bmt0aW9uIHVudGVyCisgICBTSV9TS0lMTEZVTkMgaW0gR2lsZGVub2JqZWt0IGF1ZmdlcnVmZW4sIGZhbGxzIGRlciBTcGllbGVyIHNvbnN0CisgICBtaXQgYmxvc3NlbiBIYWVuZGVuIGFuZ3JlaWZlbiB3dWVyZGUuIFdlbm4gZGFiZWkgZWluIE1hcHBpbmcKKyAgIHp1cnVlY2tnZWdlYmVuIHdpcmQsIHNvIHdlcmRlbiBkaWUgV2VydGUgdm9uCisgICBTSV9TS0lMTERBTUFHRSwgU0lfU0tJTExEQU1BR0VfVFlQRSB1bmQKKyAgIFNJX1NLSUxMREFNQUdFX01TRyBnZW5vbW1lbiBhbnN0ZWxsZSBkZXIgV2VydGUgaW4KKyAgIFBfSEFORFMuIAorIG8gU0tfTUFHSUNfREVGRU5TRQorICAgV2VubiBoaWVyIHVudGVyIFNJX1NLSUxMRlVOQyBlaW5lIEZ1bmt0aW9uIGVpbmdldHJhZ2VuIGlzdCwgc28KKyAgIHdpcmQgc2llIGJlaSBEZWZlbmQgaW0gR2lsZGVub2JqZWt0IGF1ZmdlcnVmZW4gdW5kIGJla29tbXQgaW0KKyAgIEluZm9ybWF0aW9ucy1NYXBwaW5nIFNJX1NLSUxMREFNQUdFLAorICAgU0lfU0tJTExEQU1BR0VfVFlQRSB1bmQgU0lfU1BFTEwgdWViZXJnZWJlbi4gV2VubiBzaWUKKyAgIGVpbiBNYXBwaW5nIHp1cnVlY2tnaWJ0IHdlcmRlbiBoaWVyYXVzIFNJX1NLSUxMREFNQUdFIHVuZAorICAgU0lfU0tJTExEQU1BR0VfVFlQRSBlbnRub21tZW4gdW5kIGVyc2V0emVuIGRpZSBhbHRlbgorICAgV2VydGUgdm9uICJkYW0iIHVuZCAiZGFtX3R5cGUiLiAKKyBvIEZJR0hUKFdhZmZlbnR5cCkKKyAgIEZhbGxzIGRpZXNlIEZhZWhpZ2tlaXQgdm9yaGFuZGVuIGlzdCB3aXJkIGRlciBlbnRzcHJlY2hlbmRlbgorICAgRnVua3Rpb24gaW4gU0lfU0tJTExEQU1BR0UgZGVyIGJpc2hlcmlnZSBTY2hhZGVuIHVlYmVyZ2ViZW4uCisgICBGYWxscyBzaWUgZWluIE1hcHBpbmcgenVydWVja2xpZWZlcnQgd2lyZCBhbiBkaWVzZXIgU3RlbGxlIGF1Y2ggZGVyCisgICBuZXVlIFNjaGFkZW4gZXJ3YXJ0ZXQuIAorIG8gU0tfRklHSFQKKyAgIFdpZSBGaWdodChXYWZmZW50eXApLCBudXIgd2lyZCBkaWVzZSBGYWVoaWdrZWl0LCBmYWxscyB2b3JoYW5kZW4sCisgICBiZWkgamVkZXIgV2FmZmUgYmVudXR6dCB1bmQga2FubiBhdWNoIHp1c2FldHpsaWNoIGFuZGVyZSBXZXJ0ZSBmdWVyCisgICBTSV9TS0lMTERBTUFHRV9UWVBFIGVyZ2ViZW4uIFdhZmZlIHVuZCBXYWZmZW50eXAgd2VyZGVuCisgICB1ZWJyaWdlbnMgaW4gU0lfV0VBUE9OIHVuZCBTSV9XRUFQT05fVFlQRSB1ZWJlcmdlYmVuLiAKKyBvIFNLX0NBU1RJTkcKKyAgIFNwZWxsY2FzdGluZy4gRGllIFdhaHJzY2hlaW5saWNoa2VpdCwgZGFzcyBkZXIgU3BlbGwgZ2VsaW5ndCwgc3RlaWd0CisgICBiZWkgMTAwJSBkaWVzZXIgRmFlaGlna2VpdCBhdWYgZGFzIERvcHBlbHRlLiBOdXIgbWl0IGRpZXNlcgorICAgRmFlaGlna2VpdCBpc3QgZXMgbW9lZ2xpY2gsIHVlYmVyIGRpZSBNYXhpbWFsZ3JlbnplbiB6dSBrb21tZW4sCisgICBzbyBkYXNzIGRhbm4gYXVjaCBTcGVsbHMgYmVzb25kZXJzIGd1dCBnZWxpbmdlbiBrb2VubmVuLiAKKworVGVtcG9yYWVyZSBQcm9wZXJ0eS1BZW5kZXJ1bmdlbiAKKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CisKK09mdCBtdWVzc2VuIFNwZWxscyBpcmdlbmR3byBQcm9wZXJ0aWVzIGZ1ZXIga3VyemUgWmVpdCB2ZXJhZW5kZXJuLCB3aWUKK3ouQi4gUF9MSUdIVCBvZGVyIFBfTk9NQUdJQyBpbiBSYWV1bWVuLiBGdWVyIGRpZXNlbiBad2VjayBrYW5uCittYW4gaW4gL29iai90bXBfcHJvcF9tYXN0ZXIgZGllIEZ1bmt0aW9uIFNldFRtcFByb3AgYXVmcnVmZW4uIERpZXNlCitGdW5rdGlvbiBlcndhcnRldCBkYXMgT2JqZWt0LCBpbiBkZW0gZGllIFByb3BlcnR5IHp1IHNldHplbiBpc3QsIGRlbiBOYW1lbgorZGVyIFByb3BlcnR5LCBkZW4gemVpdHdlaWxpZ2VuIFdlcnQgdW5kIGRlbiBaZWl0cHVua3QsIGJpcyB6dSBkZW0gZGllc2UKK0FlbmRlcnVuZyBnZWx0ZW4gc29sbC4gCisKK1NraWxsIEluZm9ybWF0aW9uZW4gCisrKysrKysrKysrKysrKysrKysrKworCitJbiBkZW4gSW5mb3JtYXRpb25zbWFwcGluZ3MgenUgZGVuIFNwZWxscy9Ta2lsbHMgc29sbHRlbiBhbGxlICh6dXNhZXR6bGljaCkKK25vZXRpZ2VuIEluZm9ybWF0aW9uZW4gc3RlaGVuLCBkZW5uIG51ciB3ZW5uIHouQi4gZWluIEZldWVyYmFsbCBpbiBlaW5lbQorU3BlbGxib29rIGFscyBTY2hhZGVuIDMwMCBlaW5nZXRyYWdlbiBoYXQgdW5kIGRpZXNlbiBXZXJ0IGRlbSBNYXBwaW5nCitlbnRuaW1tdCwga2FubiBlaW5lIGFuZGVyZSBHaWxkZSBkaWVzZW4gU3BydWNoIHJlY3ljbGVuIHVuZCBtaXQgU2NoYWRlbgorNDAwIGFuYmlldGVuLCBuYXR1ZXJsaWNoIHNvbGx0ZSBlciBkYW5uIGF1Y2ggaW4gZGVyIEdpbGRlIG1laHIga29zdGVuLiAKKworU0lFSEUgQVVDSDogc2tpbGxfaW5mb19saXN0ZQorCitGYWt0b3JlbiB1bmQgT2Zmc2V0cyAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCitNYW4ga2FubiBpbiBkZW0gSW5mb3JtYXRpb25zLU1hcHBpbmcgenUgamVkZW0gbnVtZXJpc2NoZW4gV2VydAorIk5hbWUiIG5vY2ggendlaSB6dXNhZXR6bGljaGUgV2VydGUgRkFDVE9SKCJOYW1lIikgdW5kCitPRkZTRVQoIk5hbWUiKSBlaW50cmFnZW4gdW5kIGRpZXNlIFdlcnRlIGF1dG9tYXRpc2NoIHp1ciBlaWdlbnRsaWNoZW4KK1dlcnRiZXN0aW1tdW5nIGJlcnVlY2tzaWNodGlnZW4uIE1pdCBmb2xnZW5kZW4gRnVua3Rpb25lbiBzb2xsdGUgbWFuCitpbSBTcGVsbGJvb2sgZGVtIE1hcHBpbmcgV2VydGUgZW50bmVobWVuOiAKKworIG8gR2V0VmFsdWUobmFtZSxtYXAsc3BpZWxlcikgCisgbyBHZXRPZmZzZXQobmFtZSxtYXAsc3BpZWxlcikKKyAgIE9GRlNFVChuYW1lKS4gCisgbyBHZXRGYWN0b3IobmFtZSxtYXAsc3BpZWxlcikKKyAgIEVyZ2lidCBGQUNUT1IobmFtZSksIGZhbGxzIHVuZ2xlaWNoIE51bGwsIHNvbnN0IDEwMC4gCisgbyBHZXRGVmFsdWUobmFtZSxtYXAsc3BpZWxlcikKKyAgIEVyZ2lidCAoV2VydCpGYWt0b3IpLzEwMC4gCisgbyBHZXRWYWx1ZU8obmFtZSxtYXAsc3BpZWxlcikKKyAgIEVyZ2lidCBXZXJ0K09mZnNldC4gCisgbyBHZXRGVmFsdWVPKG5hbWUsbWFwLHNwaWVsZXIpCisgICBFcmdpYnQgKFdlcnQqRmFrdG9yKS8xMDArT2Zmc2V0LiAKKworTmFjaCBNb2VnbGljaGtlaXQgc29sbHRlIG1hbiBkYXZvbiBpbSBTcGVsbGJvb2sgR2V0RlZhbHVlTyBiZW51dHplbiwKK3dlbm4gZXMgYW5nZWJyYWNodCBpc3QuIEF1ZiBqZWRlbiBGYWxsIHNvbGx0ZW4gdm9uIGRlbiBkcmVpIFdlcnRlbgorbW9lZ2xpY2h0IHZpZWxlIGF1ZiBlaW5lIGFuZ2VtZXNzZW5lIFdlaXNlIGJlcnVlY2tzaWNodGlndCB3ZXJkZW4sIGRlbm4KK2RhZHVyY2ggYmVrb21tdCBkYXMgR2lsZGVub2JqZWt0IGZlaW5lcmUgS29udHJvbGxtb2VnbGljaGtlaXRlbiwgd2VubgorZWluIFNwcnVjaCBtb2RpZml6aWVydCB3ZXJkZW4gc29sbC4gRXMgaXN0IGRhbm4gZnVlciBkaWUgR2lsZGUgYWV1c3NlcnN0CitlaW5mYWNoIGZlc3R6dWxlZ2VuLCBkYXNzIHouQi4gWndlcmdlIGJlaSBhbGxlbiBBbmdyaWZmc3NwcnVlY2hlbiAyMCUKK21laHIgU2NoYWRlbiB2ZXJ1cnNhY2hlbiB1bmQgYmVpbSBGZXVlcmJhbGwgRWxmZW4gZWluZW4gaG9laGVyZW4KK2dhcmFudGllcnRlbiBXZXJ0IGhpbnp1YmVrb21tZW4uIAorCitGdW5rdGlvbmVuIAorLS0tLS0tLS0tLS0KKworV2VubiBlaW4gU3BlbGxib29rIGVpbmUgZGVyIG9iZW4gYW5nZXNwcm9jaGVuZW4gRnVua3Rpb25lbiBiZW51dHosIHVtCitlaW5lbiBudW1lcmlzY2hlbiBXZXJ0IHp1IGVybWl0dGVsbiB1bmQgYW5zdGVsbGUgZGVzIFdlcnRlcyBzdGVodCBldHdhcywKK2RhcyBhbHMgRnVua3Rpb24gaW50ZXJwcnRpZXJ0IHdlcmRlbiBrYW5uLCBzbyB3aXJkIGRpZXNlIEZ1bmt0aW9uCithdXNnZXdlcnRldCB1bmQgZGFzIEVyZ2VibmlzIGFscyBXZXJ0IGdlbm9tbWVuLiBBbHMgRnVua3Rpb24KK2ludGVycHJldGllcnQgd2VyZGVuIGthbm46IAorCisgbyBFaW5lIENsb3N1cmUgCisgbyBFaW4gQXJyYXkgKHtvYmpla3QsZnVua3Rpb25zbmFtZX0pIG9kZXIgKHtvYmpla3RuYW1lLGZ1bmt0aW9uc25hbWV9KSAKKyBvIEVpbiBGdW5rdGlvbnNuYW1lLiBIaWVyYmVpIHNvbGx0ZSBtYW4gc2ljaCBqZWRvY2ggZGFydWViZXIgaW0KKyAgIGtsYXJlbiBzZWluLCBpbiB3ZWxjaGVtIE9iamVrdCB2ZXJzdWNodCB3aXJkIGRpZSBGdW5rdGlvbgorICAgYXVmenVydWZlbi4gVWVibGljaGVyd2Vpc2UgZ2VzY2hpZWh0IGRpZXMgaW0gU3BlbGxib29rLCBqZWRvY2gKKyAgIHdlcmRlbiBTSV9ESUZGSUNVTFRZLCBTSV9TS0lMTExFQVJOIHVuZCBTSV9TUEVMTENPU1QKKyAgIGF1Y2ggYmVpbSBMZXJuZW4gYmVub2V0aWd0IHVuZCBkaWVzIGdlc2NoaWVodCB2b20gR2lsZGVub2JqZWt0CisgICBhdXMuIFdlbm4gYmVpIGRpZXNlbiAzIEVpbnRyYWVnZW4gZWluZSBGdW5rdGlvbiBkZW4gV2VydCBsaWVmZXJuCisgICBzb2xsLCBzbyBtdXNzIHNpZSBpbiBlaW5lIGRlciBkcmVpIGFuZGVyZW4gRm9ybWVuIGVpbmdldHJhZ2VuIHdlcmRlbiwKKyAgIGRhbWl0IGRhcyByaWNodGlnZSBPYmpla3QgZXJtaXR0ZWx0IHdlcmRlbiBrYW5uLiAKKworU0lFSEUgQVVDSDogZXhlY3V0ZV9hbnl0aGluZworICAgCitGdWVyIG5pY2h0LW51bWVyaXNjaGUgV2VydGUga2FubiBtYW4gR2V0RGF0YSB2ZXJ3ZW5kZW4uIERhYmVpIHdlcmRlbgoramVkb2NoIG51ciBjbG9zdXJlcyBhdXRvbWF0aXNjaCBhdXNnZXdlcnRldC4gCisKK1NraWxsIEF0dHJpYnV0ZSAKKysrKysrKysrKysrKysrKysKKworU2tpbGwtQXR0cmlidXRlIHNpbmQgQXR0cmlidXRlLCBkaWUgYWxsZSBhbmRlcmVuIFNraWxscyBiZWVpbmZsdXNzZW4ga29lbm5lbi4KK05vcm1hbGVyd2Vpc2Ugc2luZCBhbGxlIFNraWxsLUF0dHJpYnV0ZSAxMDAlLCBzaWUga29lbm5lbiBqZWRvY2ggZnVlcgora3VyemUgWmVpdCBhdWYgYW5kZXJlIFdlcnRlIHp3aXNjaGVuIDEwJSB1bmQgMTAwMCUgZ2VzZXR6dCB3ZXJkZW4uIEJlaQorZGVyIEFiZnJhZ2UgZGVyIEF0dHJpYnV0ZSB3ZXJkZW4gMyBXZXJ0ZSBiZXJ1ZWNrc2ljaHRpZ3Q6IAorCisgbyBXZXJ0LCBkZXIgdm9tIExlYmV3ZXNlbiBzZWxic3QgZ2VzZXR6dCB3dXJkZS4gCisgbyBXZXJ0LCBkZXIgdm9uIGVpbmVtIGFuZGVyZW4gdW50ZXIgMTAwJSBnZXNldHp0IHd1cmRlLiBXZW5uCisgICBtZWhyZXJlIGFuZGVyZSBMZWJld2VzZW4gZGVuIFdlcnQgdW50ZXIgMTAwJSBnZXNldHp0IGhhYmVuIHNvCisgICBnaWx0IGRpZSBBZW5kZXJ1bmcgdm9uIGRlbSBtaXQgZGVtIGhvZWNoc3RlbiBMZXZlbC4gRWluZSBzb2xjaGUKKyAgIEFlbmRlcnVuZyB3aXJkIHVlYmxpY2hlcndlaXNlIHZvbiBlaW5lbSBHZWduZXIgdmVyYW5sYXNzdC4gCisgbyBXZXJ0LCBkZXIgdm9uIGVpbmVtIGFuZGVyZW4gdWViZXIgMTAwJSBnZXNldHp0IHd1cmRlLiBBdWNoIGhpZXIKKyAgIGdpbHQgZGllIEFlbmRlcnVuZyB2b24gZGVtIExlYmV3ZXNlbiBtaXQgZGVtIGhvZWNoc3RlbiBMZXZlbC4gCisKK1dlbm4gei5CLiBlaW4gU3BpZWxlciBzZWluZSBHZXNjaHdpbmRpZ2tlaXQgZnVlciB6d2VpIE1pbnV0ZW4gYXVmIDIwMCUKK3VuZCBlaW4gTW9uc3RlciBzaWUgZnVlciBlaW5lIE1pbnV0ZSBhdWYgMjUlIHNldHp0LCBzbyBpc3Qgc2llIGVpbmUgTWludXRlCitsYW5nIDUwJSB1bmQgZGllIG5hZWNoc3RlIE1pbnV0ZSAyMDAlIGJldm9yIHNpZSB3aWVkZXIgYXVmIDEwMCUgZ2VzZXR6dAord2lyZC4gCisKK1NJRUhFIEFVQ0g6IE1vZGlmeVNraWxsQXR0cmlidXRlCisKK1Jlc3RyaWN0aW9uIE1hcHBpbmdzIAorKysrKysrKysrKysrKysrKysrKysrCisKK01pdCBSZXN0cmljdGlvbiBNYXBwaW5ncyBrb2VubmVuIEVpbnNjaHJhZW5rdW5nZW4gYXVlc3NlcnN0IGVpbmZhY2gKK2FuZ2VnZWJlbiB3ZXJkZW4uIEluIGRlbSBNYXBwaW5nIHdpcmQgZWluZmFjaCBudXIgYW5nZWdlYmVuLCB3YXMgZHVyY2gKK3dlbGNoZW4gV2VydCBlaW5nZXNjaHJhZW5rdCB3ZXJkZW4gc29sbC4gV2VubiB6LkIuIG1pbmRlc3RlbnMgTGV2ZWwgMTUKK3VuZCBJbnRlbGxpZ2VueiAxMCB2ZXJsYW5ndCB3aXJkLCBzbyBpc3QgZGFzIE1hcHBpbmcKKyhbUF9MRVZFTDoxNSxBX0lOVDoxMF0pLiBGb2xnZW5kZSBFaW5zY2hyYWVua3VuZ2VuIGtvZW5uZW4gdmVybGFuZ3QKK3dlcmRlbjogCisKK1NJRUhFIEFVQ0g6IGNoZWNrX3Jlc3RyaWN0aW9ucworCitFaW5zY2hyYWVua3VuZ2VuIHdlcmRlbiBtaXQgY2hlY2tfcmVzdHJpY3Rpb25zKHNwaWVsZXIsbWFwcGluZykKK3VlYmVycHJ1ZWZ0LiBEaWUgRnVua3Rpb24gbGllZmVydCAwIHp1cnVlY2sgd2VubiBkZXIgU3BpZWxlciBhbGxlCitFaW5zY2hyYWVua3VuZ2VuIGVyZnVlbGx0IHVuZCBlaW5lbiBTdHJpbmcgbWl0IGRlciBCZWdydWVuZHVuZywgZmFsbHMgZWluZQorRWluc2NocmFlbmt1bmcgbmljaHQgZXJmdWVsbHQgaXN0LiAKKworUHJvZ3JhbW1pZXJyaWNodGxpbmllbiAKKz09PT09PT09PT09PT09PT09PT09PT09CisKKyBvIEluIFNwZWxsYm9va3MgbW9lZ2xpY2hzdCBvZnQgRmFrdG9yZW4gdW5kIE9mZnNldHMgYmVydWVja3NpY2h0aWdlbi4gCisgbyBEaWUgU2tpbGwtQXR0cmlidXRlIGJlcnVlY2tzaWNodGlnZW4sIGZhbGxzIG1vZWdsaWNoLiAKKyBvIEFsbGVzIFNwZWxscyBtdWVzc2VuIGVpbmUgVmVyem9lZ2VydW5nc3plaXQgaGFiZW4sIGluIGRlciBrZWluCisgICB3ZWl0ZXJlciBTcGVsbCBhbndlbmRiYXIgaXN0LiBIaWVydm9uIGthbm4gZXMgQXVzbmFobWVuIGdlYmVuLCB3ZW5uCisgICBkYXMgR2lsZGVua29uemVwdCBlcyBhbmRlcnMgdm9yc2llaHQgKHouQi4gYmVpIGRlbiBLYWVtcGZlcm4pIG9kZXIKKyAgIHNvbnN0IHJlZ3VsaWVydC4KKyBvIEtvc3Rlbmxvc2UgU3BlbGxzIHNvbGx0ZSBlcyBuaWNodCBnZWJlbi4gRmFsbHMgZG9jaCwgZGFubiBudXIgbWl0IHNlaHIKKyAgIGhvaGVyIFZlcnpvZWdlcnVuZ3N6ZWl0LCBzb25zdCBsYXNzZW4gZGllIExldXRlIG51ciBpaHIgRnJvbnRlbmQKKyAgIHNwaWVsZW4uIAorIG8gSmVkZXIgU2tpbGwgc29sbHRlIGVpbmUgbGV2ZWxhYmhhZW5naWdlIG1heGltYWxlIEZhZWhpZ2tlaXQgaGFiZW4uCisgICBELmguLCB3ZW5uIFNJX0RJRkZJQ1VMVFkgZ2VzZXR6dCBpc3Qgc29sbHRlIGRlciBXZXJ0IGdyb2Vzc2VyIGFscworICAgLTEwMCBzZWluLiAKKyBvIFNwZWxscyBkdWVyZmVuIG5pY2h0IE1vbnN0ZXIgYmVsaWViaWcgaG9oZXIgU3RhZXJrZSBlaW5mYWNoCisgICB1bWhhdWVuLiBFcyBzb2xsdGUgbnVyIGJpcyB6dSBlaW5lciBNYXhpbWFsc3RhZXJrZSBtb2VnbGljaCBzZWluLiAKKyBvIERlciBTY2hhZGVuLCBkZW4gZWluIFNwcnVjaCBiZXdpcmt0LCBkYXJmIHZvbiBkZXIgU3RhZXJrZSBuaWNodAorICAgZ3JvZXNzZXIgc2VpbiwgYWxzIGRlciwgZGVuIGVpbmUgV2FmZmUgbWl0IFdDIDI1KlNQIGJld2lya2VuCisgICB3dWVyZGUuIEF1Y2ggaGllciBzb2xsdGUgbWFuIGVpbiB3ZW5pZyBnZXN1bmRlbiBNZW5zY2hlbnZlcnN0YW5kCisgICBzcGllbGVuIGxhc3NlbiAtIGVzIGtvbW10IGF1Y2ggaW1tZXIgZHJhdWYgYW4sIG9iIGVpbiBBbmdyaWZmCisgICBtYWdpc2NoIGlzdCBvZGVyIHBoeXNpa2FsaXNjaC4KKyBvIERpZSBIZWlsdW5nIHNvbGx0ZSBuaWNodCBkaWUgZGFmdWVyIG5vZXRpZ2VuIFNQIHVlYmVyc2NocmVpdGVuLiAKKyAgIEF1c25haG1lbiBmdWVyIGV4cGxpeml0ZSBIZWlsZ2lsZGVuIChLbGVydXMpIGthbm4gZXMgZ2ViZW4uCisKK0F1c3dpcmt1bmcgdm9uIFNJX0RJRkZJQ1VMVFkgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCitGb2xnZW5kZSBNYXhpbWFsd2VydGUgc2luZCBmdWVyIFNJX0FCSUxJVFkgYmVpIGRlbiBhbmdlZ2ViZW5lbiBMZXZlbG4KK21vZWdsaWNoLCB3ZW5uIFNJX0RJRkZJQ1VMVFkgYXVmIGRlbiBXZXJ0IGluIGRlciBsaW5rZW4gU3BhbHRlIGdlc2V0enQKK2lzdC4gCisKK1NJRUhFIEFVQ0g6IExpbWl0QWJpbGl0eSBvZGVyIC9zdGQvbGl2aW5nL3NraWxsczo6TGltaXRBYmlsaXR5CisKKzUuIE9rdCAyMDExIEdsb2luc29uCisgCmRpZmYgLS1naXQgYS9kb2Mvd2l6L2dpdCBiL2RvYy93aXovZ2l0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjcyMDBmZjMKLS0tIC9kZXYvbnVsbAorKysgYi9kb2Mvd2l6L2dpdApAQCAtMCwwICsxLDIzIEBACitOdXR6dW5nIHZvbiBHaXQgaW0gTW9yZ2VuR3JhdWVuCis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CisKK1dhcyBpc3QgR2l0PworICBHaXQgaXN0IGVpbmUgU29mdHdhcmUgenVyICh2ZXJ0ZWlsdGVuKSBWZXJzaW9uc3ZlcndhbHR1bmcgdm9uIERhdGVpZW4uCisgIChodHRwOi8vZ2l0LXNjbS5jb20vLCBodHRwOi8vZGUud2lraXBlZGlhLm9yZy93aWtpL0dpdCkKKyAgRnVlciBXaW5kb3dzIGdpYnQgZXMgZWluIFBha2V0LCB3ZWxjaGVzIGF1Y2ggZGllIEludGVncmF0aW9uIGluIGRlbiBFeHBsb3JlcgorICBhbmJpZXRldDoKKyAgaHR0cHM6Ly9jb2RlLmdvb2dsZS5jb20vcC9naXRleHRlbnNpb25zLworCisKK1NJRUhFIEFVQ0gKKyAgZ2l0LXJlcG9zaXRvcmllczogUmVwb3NpdG9yeS1WZXJ3YWx0dW5nIGltIE11ZAorICBnaXQtaG93dG86IFdpZSBnaXQgYmVudXR6dCB3aXJkCisgIGdpdC13b3JrZmxvdzogRWluIHNpbXBsZXMgQmVpc3BpZWwgZWluZXMgQXJiZWl0c2ZsdXNzZXMgbWl0IEdpdAorICBnaXQta29vcGVyYXRpb246IEVyd2VpdGVydW5nIGZ1ZXIgRm9ydGdlc2Nocml0dGVuZSB6dSBnaXQtd29ya2Zsb3cKKyAgZ2l0LXN5bmM6IFdpZSBkaWUgU3luY2hyb25pc2llcnVuZyB6dy4gZ2l0LVJlcG9zIHVuZCBNdWRsaWIgYWJsYWV1ZnQKKyAgZ2l0LWZhcTogaGFldWZpZyBnZXN0ZWxsdGUgRnJhZ2VuL1Byb2JsZW1lCisgIGdpdC1saW5rczogVmVyd2Vpc2UgaW5zIFdXVworCitMRVRaVEUgQWVOREVSVU5HOgorICAyNS4wMy4yMDExLCBaZXNzdHJhCisKZGlmZiAtLWdpdCBhL2RvYy93aXovZ2l0LWV4Y2x1ZGUgYi9kb2Mvd2l6L2dpdC1leGNsdWRlCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjQzOWI1ZGIKLS0tIC9kZXYvbnVsbAorKysgYi9kb2Mvd2l6L2dpdC1leGNsdWRlCkBAIC0wLDAgKzEsMjcgQEAKK0JlaW0gSW1wb3J0IHZvbiBWZXJ6ZWljaG5pc3NlbiBhdXMgZGVtIE11ZCBpbiBlaW4gZ2l0IFJlcG9zaXRvcnkgdW5kIGJlaSBkZXIKK1N5bmNocm9uaXNpZXJ1bmcgendpc2NoZW4gUmVwb3NpdG9yaWVzIHVuZCBNdWRsaWIgd2VyZGVuIGRpZSBmb2xnZW5kZW4KK1ZlcnplaWNobmlzc2UgdW5kIERhdGVpZW4ga29tcGxldHQgaWdub3JpZXJ0LgorCisjIGZ1ZXIgZGl2LiBTQ01zIGJlbnV0enRlIFZlcnplaWNobmlzc2UKKy0gLnN2bi8KKy0gLmdpdC8KKy0gLmdpdGlnbm9yZQorLSBDVlMvCisjIFNhdmVmaWxlcworLSAqLm8KKyMgbG9ncyBhbmQgcmVwIGZpbGVzCistICoubG9nCistIGxvZy8KKy0gKi5yZXAKKy0gKi5lcnIKKyMgYmFja3VwcyBvZiBlZGl0b3JzCistICp+CistICouc3dwCisjIHRoaXMgc2hvdWxkIGFscyBuZXZlciBiZSBpbXBvcnRlZCAtIG1hcmtzIGEgZGlyZWN0b3J5IHRvIGJlIGltcG9ydGVkLgorLSBnaXQtbXVkLWltcG9ydAorIyBrZWluZSBnZXBhY2t0ZW4gQXJjaGl2ZQorLSAqLmd6CistICouYnoyCistICouemlwCistICoudGFyCisKZGlmZiAtLWdpdCBhL2RvYy93aXovZ2l0LWZhcSBiL2RvYy93aXovZ2l0LWZhcQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi43ZWQ0ODI2Ci0tLSAvZGV2L251bGwKKysrIGIvZG9jL3dpei9naXQtZmFxCkBAIC0wLDAgKzEsODMgQEAKK0hhZXVmaWcgZ2VzdGVsbHRlIEZyYWdlbiB6dW0gVGhlbWEgR2l0IGltIE1vcmdlbmdyYXVlbgorPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CisKKyogV2FzIG11c3MgaWNoIG1hY2hlbiwgZGFtaXQgbWVpbiBHaXQtUmVwbyBhdXRvbWF0aXNjaCBtaXQgZGVtIE1HCisqIHN5bmNocm9uaXNpZXJ0IHdpcmQ/CisgIEVpbmUgU3luY2hyb25pc2F0aW9uIGZpbmRldCBhdXRvbWF0aXNjaCBzdGF0dCwgd2VubiBtYW4gZWluZW4gSW1wb3J0IGVpbmVzCisgIFZlcnplaWNobmlzc2VzIGF1cyBkZW0gTXVkIGR1cmNoZnVlaHJ0LgorICBNYWNodCBtYW4gZGllcyBuaWNodCwgc29uZGVybiBlcnN0ZWxsdCBzaWNoIHVuYWJoYWVuZ2lnIHZvbSBNdWQgZGFzIFJlcG8sCisgIG11c3MgbWFuIHNpY2ggYW4gZWluZW4gRXJ6bWFnaWVyIG1pdCBTaGVsbHp1Z2FuZyB3ZW5kZW4uCisKKyogQXVmbmFobWUgYWxzIFJlZ2lvbnNtaXRhcmJlaXRlci9SZWdpb25zbWFnaWVyL1dlaXNlci9FcnptYWdpZXIvR290dAorICBEaWVzIGlzdCB6dXJ6ZWl0IG51ciBkdXJjaCBlaW5lbiBFTSBtb2VnbGljaC4KKworKiBXaWUgYmVudXR6ZSBpY2ggR2l0IHVudGVyIFdpbmRvd3M/CisgIEdpdEh1YiBoYXQgZWluZSBBbmxlaXR1bmcgZnVlciBtc3lzZ2l0LCB3ZWxjaGUgaW0gd2VzZW50bGljaGVuIGF1Y2ggZnVlcnMgTUcKKyAgYnJhdWNoYmFyIGlzdDoKKyAgaHR0cDovL2hlbHAuZ2l0aHViLmNvbS93aW4tc2V0LXVwLWdpdC8KKyAgRWluZSB3ZWl0ZXJlIE1vZWdsaWNoa2VpdCBpc3QgaGllciBhbmdlYmVuOgorICBodHRwOi8vcm9nZXJkdWRsZXIuZ2l0aHViLmlvL2dpdC1ndWlkZS8KKyAgRWluaWdlIGluIEZyYWdlIGtvbW1lbmRlIEdpdC1QYWtldGUgc2luZCBoaWVyIGt1cnogdm9yZ2VzdGVsbHQ6CisgIGh0dHA6Ly93d3cubWFrZXVzZW9mLmNvbS90YWcvNS13aW5kb3dzLWdpdC1jbGllbnRzLWdpdC1qb2IvCisgIEVpbmUgQW5sZWl0dW5nIGZ1ZXIgZGllIE51dHp1bmcgdm9uIFB1dHR5IGFscyBTU0gtQ2xpZW50IHVudGVyIFdpbmRvd3MKKyAgZmluZGV0IHNpY2ggaW4gY29udHJpYi9wdXR0eS5ta2QgYXVmIGh0dHBzOi8vZ2l0aHViLmNvbS9zaXRhcmFtYy9naXRvbGl0ZS8KKworKiBXaWUga2FubiBpY2ggbWlyIGRpZSBHZXNjaGljaHRlIG1laW5lcyBSZXBvcyBncmFwaGlzY2ggYW56ZWlnZW4gbGFzc2VuPworICBEYSBnaWJ0IGVzIHZlcnNjaGllZGVuZSBMb2VzdW5nZW4sIHZvciBhbGxlbSBhdWNoIGFiaGFlbmdpZyB2b20KKyAgQmV0cmllYnNzeXN0ZW0uIEF1ZiBhbGxlbiBnZWh0IHZlcm11dGxpY2ggJ2dpdGsnIHVuZCAnZ2l0IGd1aScuCisgIEF1ZiBNYWNPUyBnaWJ0IGVzIGF1Y2ggJ0dpdFgnLgorCisqIEthbm4gbWFuIEFlbmRlcnVuZ2VuL0RpZmZzLyBmYXJiaWcgbWFya2llcnQgYW56ZWlnZW4/CisgID4gZ2l0IGxvZyAtcCAtLWNvbG9yLXdvcmRzCisgIEFsdGVybmF0aXYga2FubiBtYW4gLmdpdC9jb25maWcgZm9sZ2VuZGUgUGFyYW1ldGVyIHNldHplbjoKKyAgW2NvbG9yXQorICAJY29sb3IuZGlmZj1hdXRvCisJY29sb3IuZ3JlcD1hdXRvCisJY29sb3Iuc3RhdHVzPWF1dG8KKworICBXZW5uIG1hbiBlcyBnZW5lcmVsbCBidW50IGhhYmVuIHdpbGwsIHNldHp0IG1hbiBlaW5mYWNoCisgIFtjb2xvcl0KKyAgCWNvbG9yLnVpPWF1dG8KKworICBpbiBkaWUgS29uZmlndXJhdGlvbnNkYXRlaS4KKworKiBXYXJ1bSBzb2xsIGljaCBkZW5uIGRpZSBjb2xvci1FaW5zdGVsbHVuZ2VuIGF1ZiBhdXRvIHVuZCBuaWNodCB0cnVlIHNldHplbj8KKyAgRGVyIFdlcnQgYXV0byBiZXdpcmt0LCBkYXNzIGdpdCBudXIgZGFubiBkaWUgQXVzZ2FiZW4gZWluZmFlcmJ0LCB3ZW5uIGRpZXNlCisgIG5hY2ggU1RET1VUIGdlaGVuLiBBbnNvbnN0ZW4gYmVrb21tdCBtYW4gZGVuIEFTQ0lJLWtvZGllcnRlbiBGYXJic3RyaW5nIGluCisgIGRpZSBBdXNnYWJlZGF0ZWkgZ2VzY2hyaWViZW4uCisKKyogV2llIGthbm4gaWNoIGVpbmUgUmVwb3NpdG9yeSBsb2VzY2hlbj8KKyAgWnVyIFplaXQgaXN0IGRpZXMgbnVyIGR1cmNoIGVpbmVuIEVNIG1pdCBTaGVsbHp1Z2FuZyBhdWYgZGVtIE1HLVJlY2huZXIKKyAgbW9lZ2xpY2guCisKKyogS2FubiBpY2ggYW4gZWluZW0gR2ViaWV0LCBmdWVyIGRhcyBpY2gga2VpbmVuIFNjaHJlaWJ6dWdyaWZmIGhhYmUsIGhlbGZlbgorKiBlaW5lbiBCdWcgenUgZml4ZW4/CisgIEphIC0gc29mZXJuIER1IExlc2VyZWNodGUgYXVmIGRhcyBSZXBvc2l0b3J5IGhhc3QuIER1IGthbm5zdCBkYXMgUmVwbyBkYW5uCisgIGZvcmtlbiwgZC5oLiBlaW5lIEtvcGllIGVyc3RlbGxlbi4gRGllIGJlc3RlIE1ldGhvZGUgaGllcmZ1ZXIgaXN0CisgID4gc3NoIGdpdEBtZy5tdWQuZGUgZm9yayBkL2dlYmlyZ2Uvem9vay93YWxkIHBsYXllcnMvemVzc3RyYS9wdWJsaWMvendhbGQKKyAgSGllcmJlaSB3aXJkIGVpbiBDbG9uZSBkZXMgUmVwb3MgZXJzdGVsbHQgdW5kIHNpY2ggZ2VtZXJrdCwgd2VsY2hlcyBkYXMKKyAgT3JpZ2luYWwgd2FyLiBJbiBEZWluZW0gUmVwbyBrYW5uc3QgRHUgbnVuIGVpbmVuIEJ1Z2ZpeCBtYWNoZW4uIEJpc3QgRHUKKyAgZmVydGlnLCBzYWdzdCBEdSBkZW0gR2ViaWV0c21hZ2llciAob2RlciBlaW5lbSB6dXN0YWVuZGlnZW4gUk0pIEJlc2NoZWlkIHVuZAorICBiaXR0ZXN0IGlobiwgZGVuIGVudHNwcmVjaGVuZGVuIEJyYW5jaCAoei5CLiBzeW50YXhfYnVnZml4KSB6dSBwdWxsZW4uCisKKyogV2llIHZlcm1laWRlIGljaCBlaW5lbiAnbWVyZ2UgY29tbWl0Jywgd2VubiBpY2ggbG9rYWxlIEFlbmRlcnVuZ2VuIGluIGVpbmVtCisqIFp3ZWlnIGhhYmUsIGluIGRlbiBpY2ggQWVuZGVydW5nZW4gYXVzIGRlbSBNRyBwdWxsZW4gbW9lY2h0ZT8KKyAgRWluZSBNb2VnbGljaGtlaXQgaGllcmZ1ZXIgaXN0IGRhcyBQdWxsZW4gbWl0ICdnaXQgcHVsbCAtLXJlYmFzZScsIHVtIGdpdAorICBlaW5lbiBpbXBsaXppdGVzIFJlYmFzZSBiZWltIFB1bGwgZHVyY2hmdWVocmVuIHp1IGxhc3Nlbi4KKworCitXYXMgaXN0IGdpdD8KK1dvIGtyaWVnIGljaCBnaXQgaGVyPworV2llIGthbm4gaWNoIGRhcyBSZXBvc2l0b3J5IGNsb25lbj8KK1dpZSBrYW5uIGljaCBlaW4gQ2hhbmdlbG9nIGFuemVpZ2VuIGxhc3Nlbj8KK1dpZSBrYW5uIGljaCBlaW4gQ2hhbmdlbG9nIG1pdCBEaWZmIGFuemVpZ2VuIGxhc3Nlbj8KKworU0lFSEUgQVVDSDoKKyAgZ2l0LXJlcG9zaXRvcmllczogUmVwb3NpdG9yeS1WZXJ3YWx0dW5nIGltIE11ZAorICBnaXQtaG93dG86IFdpZSBnaXQgYmVudXR6dCB3aXJkCisgIGdpdC13b3JrZmxvdzogRWluIHNpbXBsZXMgQmVpc3BpZWwgZWluZXMgQXJiZWl0c2ZsdXNzZXMgbWl0IEdpdAorICBnaXQtc3luYzogV2llIGRpZSBTeW5jaHJvbmlzaWVydW5nIHp3LiBnaXQtUmVwb3MgdW5kIE11ZGxpYiBhYmxhZXVmdAorICBnaXQtbGlua3M6IFZlcndlaXNlIGlucyBXV1cKKworMTAuMDMuMjAxNSBBbWFyeWxsaXMKKwpkaWZmIC0tZ2l0IGEvZG9jL3dpei9naXQtaG93dG8gYi9kb2Mvd2l6L2dpdC1ob3d0bwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44YTZhY2RkCi0tLSAvZGV2L251bGwKKysrIGIvZG9jL3dpei9naXQtaG93dG8KQEAgLTAsMCArMSwxMTEgQEAKK0dpdC1CZW51dHp1bmcgaW0gTW9yZ2VuR3JhdWVuCis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorCiswLiBFaW5sZWl0dW5nCisgIEhpZXIgc29sbCBrdXJ6IGJlc2NocmllYmVuIHdlcmRlbiwgd2llIG1hbiBudW4gYW4gZGllIFJlcG9zaXRvcmllcyBhdWYgZGVtCisgIE11ZHJlY2huZXIgcmFua29tbXQuCisgIEVzIHdpcmQgYW4gZGllc2VyIFN0ZWxsZSB2b3JhdXNnZXNldHp0LCBkYXNzIGRlciBMZXNlci9NYWdpZXIKKyAgZ3J1bmRzYWV0emxpY2ggd2Vpc3MsIHdhcyBHaXQgaXN0IHVuZCB3aWUgZXMgYmVudXR6dCB3aXJkLiBIaWVyIHNvbGxlbgorICBsZWRpZ2xpY2ggQmVzb25kZXJoZWl0ZW4gaW0gWnVzYW1tZW5oYW5nIG1pdCBkZW0gTUcgZXJsYWV1dGVydCB3ZXJkZW4uCisgIEViZW5zbyB3aXJkIHZvcmF1c2dlc2V0enQsIGRhc3MgZGVyIE1hZ2llciBHaXQgdW5kIGVpbmVuIFNTSC1DbGllbnQgYXVmCisgIHNlaW5lbSBSZWNobmVyIGluc3RhbGxpZXJ0IGhhdC4KKworICBXZXIgamV0enQgbm9jaCBuaXggdm9uIEdpdCB3ZWlzcywgc2VpIGF1ZiBkaWUgcmVpY2hoYWx0aWcgaW0gTmV0egorICB2ZXJmdWVnYmFyZSBEb2t1IHZlcndpZXNlbjogcy4gYS4gZ2l0LWxpbmtzLgorCisKKzEuIFp1Z3JpZmZzcmVjaHRlIGF1ZiBHaXQtUmVwb3NpdG9yaWVzCisgIFp1bmFlY2hzdCBtdXNzIG1hbiBzaWNoIGFscyBHaXQtTnV0emVyIGVpbnRyYWdlbiBsYXNzZW4uIEhpZXJ6dSBicmF1Y2h0IG1hbgorICBlaW4gU1NILVNjaGx1ZXNzZWxwYWFyLCB3ZWxjaGVzIG1hbiB6LkIuIG1pdHRlbHMgc3NoLWtleWdlbiBlcnN0ZWxsZW4KKyAga2Fubi4gRGVuIF9vZWZmZW50bGljaGVuXyBTY2hsdWVzc2VsICgucHViIGFtIEVuZGUpIGxlZ3QgbWFuIGRhbm4gYWxzCisgIDxtYWdpZXI+LnB1YiBpbiBzZWluIEhvbWV2ZXJ6ZWljaG5pcyB1bmQgc3ByaWNodCBlaW5lbiBFTSAoei5CLiBaZXNzdHJhKQorICBhbi4KKworICBNaXR0ZWxzIGRlcyBCZWZlaGxzCisgID4gc3NoIGdpdEBtZy5tdWQuZGUgaW5mbworICBrYW5uIG1hbiBzaWNoIGFuemVpZ2VuIGxhc3NlbiwgYXVmIHdlbGNoZSBleGlzdGllcmVuZGVuIFJlcG9zaXRvcmllcyBtYW4KKyAgd2VsY2hlIFp1Z3JpZmZzcmVjaHRlIGhhdCAoUjogbGVzZW4sIFc6IHNjaHJlaWJlbikuIEJlaXNwaWVsOgorICAgIFIgICBXICAgKHplc3N0cmEpIGQvaW5zZWxuL3plc3N0cmEvdnVsa2Fud2VnCisgIEluIGRpZXNlbSBGYWxsIGhhdCBkZXIgQmVudXR6ZXIgTGVzZS0gdW5kIFNjaHJlaWJyZWNodGUgYXVmCisgIGQvaW5zZWxuL3plc3N0cmEvdnVsa2Fud2VnLiBEYXMgUmVwb3NpdG9yeSBnZWhvZXJ0IHplc3N0cmEuCisKKyAgWnVzYWV0emxpY2ggdW1mYXNzdCBkaWUgQXVzZ2FiZSBhdWNoIGRpZSBadWdyaWZmc3JlY2h0ZSBhbGxlciBfbW9lZ2xpY2hlbl8KKyAgKGFiZXIgbm9jaCBuaWNodCBleGlzdGllcmVuZGVuKSBSZXBvcy4KKyAgV2ljaHRpZyBpc3QgaGllciBkYXMgRXJzdGVsbHVuZ3NyZWNodCAoQykuIEJlaXNwaWVsOgorICBDICBSICAgVyAgZC91bnRlcndlbHQvemVzc3RyYS9bYS16QS1aXXsxfVthLXpBLVowLTlfLlwtXSoKKyAgSGllciBoYXQgZGVyIEJlbnV0emVyIGF1ZiBhbGxlIFJlcG9zIHVudGVyaGFsYiB2b24gZC91bnRlcndlbHQvemVzc3RyYS8KKyAgKHdvYmVpIGFsbGUgZGllc2UgUmVwb3MgbWl0IGVpbmVtIEJ1Y2hzdGFiZW4gYmVnaW5uZW4gdW5kIGFuc29uc3RlbiBudXIKKyAgIEJ1Y2hzdGFiZW4sIFphaGxlbiwgXywgLiB1bmQgLSBlbnRoYWx0ZW4gZHVlcmZlbikgTGVzZS0sIFNjaHJlaWItIHVuZAorICBFcnN0ZWxsdW5nc3JlY2h0ZS4KKworMi4gRWluIGV4aXN0aWVyZW5kZXMgUmVwb3NpdG9yeSBjbG9uZW4KKyAgRGllcyBlcmZvbGd0IGdhbnogc2ltcGVsIG1pdCBkZW0gQmVmZWhsOgorICA+IGdpdCBjbG9uZSBnaXRAbWcubXVkLmRlOnBsYXllcnMvemVzc3RyYS90ZXN0Z2ViaWV0IDx6aWVsdmVyemVpY2huaXM+CisgIERhcyBaaWVsdmVyemVpY2huaXMgaXN0IGhpZXJiZWkgYmVsaWViaWcuIEVtcGZlaGx1bmc6IGFsbGUgTUctUmVwb3MgaW4KKyAgZWluZW0gVmVyemVpY2huaXMgc2FtbWVsbiB1bmQgZG9ydCBkaWUgVmVyemVpY2huaXNzdHJ1a3R1ciBhdXMgZGVtIE11ZAorICBiZWliZWhhbHRlbjoKKyAgPiBnaXQgY2xvbmUgZ2l0QG1nLm11ZC5kZTpwbGF5ZXJzL3plc3N0cmEvdGVzdGdlYmlldAorICAgIHBsYXllcnMvemVzc3RyYS90ZXN0Z2ViaWV0CisgIERhbWl0IEFlbmRlcnVuZ2VuIHNwYWV0ZXIgYXVjaCBFdXJlbiBNYWdpZXJuYW1lbiB0cmFnZW4sIGdlaHQgbnVuIGJpdHRlIGluCisgIEV1ZXIgZ2VjbG9udGVzIFJlcG8gdW5kIHNldHp0IE5hbWVuIHVuZCBlTWFpbC1BZHJlc3NlOgorICA+IGdpdCBjb25maWcgdXNlci5uYW1lICJNYWdpZXIiCisgID4gZ2l0IGNvbmZpZyB1c2VyLmVtYWlsICJ1c2VyQGV4YW1wbGUuY29tIgorICAKKzMuIEVpbiBuZXVlcyBSZXBvc2l0b3J5IGVyc3RlbGxlbi4KKyAgICBWb3JhdXNzZXR6dW5nOiBkYXMgVmVyemVpY2huaXMgaW0gTXVkIGV4aXN0aWVydC4KKyAgICBEaWVzIGdlaHQsIHdlbm4gaWhyIFNjaHJlaWJ6dWdyaWZmIGF1ZiBkYXMgVmVyemVpY2huaXMgaW0gTXVkIGhhYnQuIExlZ3QKKyAgICBlaW5mYWNoIGluIGRlbSBWZXJ6ZWljaG5pcyBlaW5lIERhdGVpIG5hbWVucyAiZ2l0LW11ZC1pbXBvcnQiIGFuIChJbmhhbHQKKyAgICBpc3QgZWdhbCkgdW5kIHdhcnRldCBiaXMgenVyIG5hZWNoc3RlbiB2b2xsZW4gU3R1bmRlLgorICAgIEFDSFRVTkc6IGRhcyBWZXJ6ZWljaG5pcyBpbSBNdWQgZGFyZiBOSUNIVCBsZWVyIHNlaW4sIHNvbmRlcm4gbXVzcyBtaW4uCisgICAgZWluZSBEYXRlaSAoZ2dmLiBpbiBlaW5lbSBVbnRlcnZlcnplaWNobmlzKSBlbnRoYWx0ZW4hCisgCisgIEFubWVya3VuZ2VuOgorICBFeGlzdGllcnQgZWluIFJlcG8gYmVyZWl0cywgaXN0IGVpbiBhdXRvbWF0aXNjaGVyIEltcG9ydCBhdXMgZGVtIE11ZCBuaWNodAorICBtZWhyIG1vZWdsaWNoLgorICBCZWkgZWluZW0gImdpdCBjbG9uZSIgYXVmIGVpbiBub2NoIG5pY2h0IGV4aXN0aWVyZW5kZXMgUmVwbyB3aXJkIGRhcyAKKyAgZGFzIFJlcG8gYXV0b21hdGlzY2ggYW5nZWxlZ3QgLSBkaWVzZXMgUmVwbyB3aXJkIGRhbm4gYWJlciBuaWNodCBtaXQKKyAgZGVtIE11ZCBzeW5jaHJvbmlzaWVydCEKKyAgRGFoZXI6IGVyc3QgKGVyZm9sZ3JlaWNoKSBpbXBvcnRpZXJlbiwgZGFubiBjbG9uZW4uIAorCis0LiBBcmJlaXRlbiBtaXQgZGVtIFJlcG8KKyAgSGllcnp1IHNlaSB6dWVyc3QgZWlubWFsIGF1ZiBkaWUgYWxsZ2VtZWluIGltIE5ldHogdmVyZnVlZ2JhcmUgRG9rdW1lbnRhdGlvbgorICB6dSBHaXQgdW5kIG5hdHVlcmxpY2ggc2VpbmUgTWFucGFnZXMgdmVyd2llc2VuLgorICBFaW5lbiBiZWlzcGllbGhhZnRlbiBBcmJlaXRzYWJsYXVmIGZpbmRldCBzaWNoIGluIGRlciBNYW5wYWdlIGdpdC13b3JrZmxvdy4KKworNS4gU3luY2hyb25pc2F0aW9uIG1pdCBkZW0gTXVkCisgIFJlcG9zIGtvZW5uZW4gYmVpIGVpbmVtICdnaXQgcHVzaCcgdm9uIGF1c3NlbiBhdXRvbWF0aXNjaCBkaWUgQWVuZGVydW5nZW4KKyAgZGVzIG1hc3Rlci1CcmFuY2hlcyBpbnMgTXVkIHVlYmVydHJhZ2VuLiBEZXN3ZWl0ZXJlbiBrb2VubmVuIEFlbmRlcnVuZ2VuCisgIGF1cyBkZW0gTXVkIGF1dG9tYXRpc2NoIGluIGRhcyBSZXBvIGltcG9ydGllcnQgd2VyZGVuLgorICBBdWYgZGllc2UgV2Vpc2UgaXN0IGRhcyBWZXJ3ZW5kZW4gdm9uIEZUUCBmYXN0IHVlYmVyZmx1ZXNzaWcuCisgIERldGFpbHMgc2luZCBpbiBkZXIgTWFucGFnZSBnaXQtc3luYyBhbmdlZ2ViZW4uCisKKzYuIExvZXNjaGVuIHZvbiBSZXBvc2l0b3JpZXMKKyAgR2l0LVJlcG9zLCBkaWUgdm9uIGV1Y2ggc2VsYmVyIEdFSE9FUkVOIChTY2hyZWlicmVjaHRlIGFsbGVpbiByZWljaGVuIG5pY2h0KQorICBrb2VubmVuIGdlbG9lc2NodCB1bmQgLSB6dW1pbmRlc3QgZWluZSBXZWlsZSBhdWNoIHdpZWRlciByZXN0YXVyaWVydCB3ZXJkZW4uCisKKzYuMS4gTG9lc2NoZW4KKyAgPiBzc2ggZ2l0QG1nLm11ZC5kZSBEIHRyYXNoIHBsYXllcnMvY2FsZHJhL25lYmVsYmVyZ2UKKyAgcGxheWVycy9jYWxkcmEvbmViZWxiZXJnZSBtb3ZlZCB0byB0cmFzaGNhbi4KKworNi4yLiBNdWVsbGVpbWVyIGFuemVpZ2VuCisgID4gc3NoIGdpdEBtZy5tdWQuZGUgRCBsaXN0LXRyYXNoCisgIHBsYXllcnMvY2FsZHJhL25lYmVsYmVyZ2UvMjAxMS0xMS0yOF8yMjozNTo1NQorCis2LjMuIFJlc3RhdXJpZXJlbgorICA+IHNzaCBnaXRAbWcubXVkLmRlIEQgcmVzdG9yZSBwbGF5ZXJzL2NhbGRyYS9uZWJlbGJlcmdlLzIwMTEtMTEtMjhfMjI6MzU6NTUKKyAgcGxheWVycy9jYWxkcmEvbmViZWxiZXJnZS8yMDExLTExLTI4XzIyOjM1OjU1IHJlc3RvcmVkIHRvCisgIHBsYXllcnMvY2FsZHJhL25lYmVsYmVyZ2UKKworICBFcyB2ZXJzdGVodCBzaWNoIHZvbiBzZWxic3QsIGRhc3MgSWhyIG1pdCBkaWVzZW0gTWl0dGVsIHNlaHIgenVydWVja2hhbHRlbmQKKyAgdW1nZWhlbiBzb2xsdGV0LiBCZWkgTWlzc2JyYXVjaCB3aXJkIGdnZi4gZWluIEJhY2t1cCBlaW5nZXNwaWVsdCB1bmQgZGllc2UKKyAgTW9lZ2xpY2hrZWl0IHdpZWRlciBnZWxvZXNjaHQuCisKK1NJRUhFIEFVQ0g6CisgIGdpdC1yZXBvc2l0b3JpZXM6IFJlcG9zaXRvcnktVmVyd2FsdHVuZyBpbSBNdWQKKyAgZ2l0LXdvcmtmbG93OiBFaW4gc2ltcGxlcyBCZWlzcGllbCBlaW5lcyBBcmJlaXRzZmx1c3NlcyBtaXQgR2l0CisgIGdpdC1zeW5jOiBXaWUgZGllIFN5bmNocm9uaXNpZXJ1bmcgencuIGdpdC1SZXBvcyB1bmQgTXVkbGliIGFibGFldWZ0CisgIGdpdC1mYXE6IGhhZXVmaWcgZ2VzdGVsbHRlIEZyYWdlbi9Qcm9ibGVtZQorICBnaXQtbGlua3M6IFZlcndlaXNlIGlucyBXV1cKKworMjkuMDEuMjAxMyBHbG9pbnNvbgorTGV0enRlIEFlbmRlcnVuZzogMDIuMDcuMjAxNCBOb3RzdHJvbQpkaWZmIC0tZ2l0IGEvZG9jL3dpei9naXQta29vcGVyYXRpb24gYi9kb2Mvd2l6L2dpdC1rb29wZXJhdGlvbgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5hY2JkYTZlCi0tLSAvZGV2L251bGwKKysrIGIvZG9jL3dpei9naXQta29vcGVyYXRpb24KQEAgLTAsMCArMSw2OCBAQAorRXJ3ZWl0ZXJ1bmcgenVtIEdpdC1Xb3JrZmxvdzoKKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09CisKK0JlaSBtYW5jaGVuIFByb2pla3RlbiB3aWxsIG1hbiBtaXQgYW5kZXJlbiBNYWdpZXJuIGtvb3BlcmllcmVuLCBhYmVyOgorKiBkaWUgRGF0ZWllbiBpbSBNVUQgZnVlciBkaWUgU3BpZWxlciB1bnZlcmFlbmRlcnQgbGFzc2VuCisqIGluIGVpbmVtIG9yZGVudGxpY2hlbiBad2VpZyB6dXNhbW1lbmFyYmVpdGVuCisKK0RhenUga2FubiBtYW4gWndlaWdlIGF1Y2ggcmVtb3RlLCBhbHNvIGltIE1VRCBlcnN0ZWxsZW4uIERhIG51ciBkZXIKKydtYXN0ZXInLVp3ZWlnIGluIGRhcyBNVUQgc2VsYnN0IHN5bmNocm9uaXNpZXJ0IHdpcmQsIGthbm4gbWFuIHVlYmVyCitkYXMgTVVEIHNvIGRpZSBSZXBvc2l0b3JpZXMgYXVmIG1laHIgYWxzIGVpbmVuIENvbXB1dGVyL21laHIgYWxzIGVpbmVyCitQZXJzb24gc3luY2hyb25pc2llcmVuLCBvaG5lIGRpZSBTcGllbGVyIG1pdCBzZWluZXIgRW50d2lja2x1bmdzYXJiZWl0Cit6dSBiZWhlbGxpZ2VuOgorCisjIEFsdGVybmF0aXZlbiBpbi96dSBTY2hyaXR0IDQ6IEtvb3BlcmF0aW9uIGluIGVpbmVtIHJlbW90ZSBad2VpZy4KK0ZhbGxzIGljaCBtaXQgYW5kZXJlbiBMZXV0ZW4gbWVpbmVuIENvZGUgdGVpbGVuIHdpbGwsIGRpZXNlciBhYmVyIG5pY2h0IGltCitNVUQgaW0gJ21hc3RlcictWndlaWcgYXVmdGF1Y2hlbiAoYWxzbyBhbHMgRGF0ZWlhZW5kZXJ1bmcgZnVlciBhbGxlIFNwaWVsZXIKK2dlbHRlbikgc29sbCwga2FubiBpY2ggYXVjaCBudXIgbWVpbmVuIFp3ZWlnIHNlbGJzdCBpbnMgTVVEIHNjaGlja2VuOgorPiBnaXQgY2hlY2tvdXQgbmV1ZV9rYW1wZnRha3RpaworPiBnaXQgcHVzaCAtdSBnaXRAbWcubXVkLmRlOi9kaW5ncy9idW1zIG5ldWVfa2FtcGZ0YWt0aWsKKworQWxzIEFudHdvcnQgZHVlcmZ0ZSBzb3dhcyB3aWU6CisgKiBbbmV3IGJyYW5jaF0gICAgICBuZXVlX2thbXBmdGFrdGlrIC0+IG5ldWVfa2FtcGZ0YWt0aWsKK2RvcnQgc3RlaGVuLgorCitNaXQKKz4gZ2l0IHB1bGwKK2tvZW5uZW4gd2lyIHVucyBkaWVzZSBBZW5kZXJ1bmdlbiBhbSBNVUQtUmVwb3NpdG9yeSBob2xlbi4gRGVyIFp3ZWlnCisnbmV1ZV9rYW1wZnRha3RpaycgaXN0IGpldHp0IGVpbiBad2VpZyBhdWNoIGltIE1VRCB1bmQgYWxsZSBMZXV0ZSwKK2RpZSBzaWNoIGpldHp0IGRhcyBSZXBvc2l0b3J5IC9kaW5ncy9idW1zIGNsb25lbiwgc3RlaHQgZ2VuYXUgZGllc2VyCitad2VpZyBtaXQgYWxsIHVuc2VyZW4gQWVuZGVydW5nZW4gamV0enQgYXVjaCB6dXIgVmVyZnVlZ3VuZy4KKworVW5zZXIgbG9rYWxlciBad2VpZyAnbmV1ZV9rYW1wZnRha3RpaycgYmVrb21tdCBhYmVyIGRpZSBBZW5kZXJ1bmdlbgorYW4gZGllc2VtIFp3ZWlnIGFuZGVyZXIgZXZlbnR1ZWxsIG5vY2ggbmljaHQgZ2FueiBtaXQuIE1pdAorPiBnaXQgYnJhbmNoIC0tc2V0LXVwc3RyZWFtIG5ldWVfa2FtcGZ0YWt0aWsgcmVtb3Rlcy9vcmlnaW4vbmV1ZV9rYW1wZnRha3Rpaworc2FnZW4gd2lyIGRlbSBsb2thbGVuIFp3ZWlnLCBkYXNzIGVyIGFiIGpldHp0IG1pdCBkZW0gcmVtb3Rlcy1ad2VpZworJ25ldWVfa2FtcGZ0YWt0aWsnIHZlcmJ1bmRlbiBpc3QuCisKK0RhbWl0IGJla29tbWVuIHdpciBldHdhaWdlIHJlbW90ZS1BZW5kZXJ1bmdlbiBpbiBkaWVzZW0gWndlaWcgbmFjaCBlaW5lbQorPiBnaXQgcHVsbAorYmVpIGVpbmVtIGZvbGdlbmRlbgorPiBnaXQgY2hlY2tvdXQgbmV1ZV9rYW1wZnRha3RpaworZGlyZWt0IG1pdGdldGVpbHQsIGV2ZW50dWVsbCBpbiBkZXIgRm9ybToKKyAgWW91ciBicmFuY2ggaXMgYmVoaW5kICdvcmlnaW4vbmV1ZV9rYW1wZnRha3RpaycgYnkgMSBjb21taXQsIGFuZCBjYW4gYmUKKyAgZmFzdC1mb3J3YXJkZWQuCitEYXMgaXN0IHNlaHIgZWluZmFjaCBkdXJjaCBlaW4KKz4gZ2l0IG1lcmdlIG9yaWdpbi9uZXVlX2thbXBmdGFrdGlrCitrb3JyaWdpZXJiYXIgdW5kIHNjaG9uIGtvZW5uZW4gd2lyIHNlbGJlciB3aWVkZXIgYW4gZGVtIGFrdHVhbGlzaWVydGVuIFp3ZWlnCithcmJlaXRlbiB1bmQgQWVuZGVydW5nZW4gcHVzaGVuLiBTaWVoZSBTY2hyaXR0IDUuCisKK1ppZWwgZWluZXIgc29sY2hlbiBadXNhbW1lbmFyYmVpdCBpc3QgbmF0dWVybGljaCBpbW1lciwgaXJnZW5kd2FubiBhdWNoCit3aWVkZXIgZGVuIGF1cyBTY2hyaXR0IDQgYmVrYW5udGVuIE1lcmdlIGdlZ2VuIGRlbiBad2VpZyAnbWFzdGVyJyBkdXJjaHp1LQorZnVlaHJlbiwgZGFtaXQgZGllIFNwaWVsZXIgd2FzIGRhdm9uIGhhYmVuLgorV2VubiB3aXIgYWxzbyBpcmdlbmR3YW5uIGRpZXNlbiBNZXJnZSBkdXJjaGdlZnVlaHJ0IGhhYmVuIHVuZCBkZXIgWndlaWcKKyduZXVlX2thbXBmdGFrdGlrJyB1bm5vZXRpZyBnZXdvcmRlbiBpc3QsIGtvZW5uZW4gd2lyIGlobiBhdWYgZGVyIFNlaXRlCitkZXMgTVVEcyBtaXQ6Cis+IGdpdCBwdXNoIGdpdEBtZy5tdWQuZGU6L2RpbmdzL2J1bXMgOm5ldWVfa2FtcGZ0YWt0aWsKK2F1ZnJhZXVtZW4uIERlciBlaW56aWdlIFVudGVyc2NoaWVkIHp1bSBFcnN0ZWxsZW4gZGVzIFp3ZWlnZXMgYXVmIE1VRC1TZWl0ZQoraXN0IHRhdHNhZWNobGljaCBkZXIgJzonIHZvciBkZW0gTmFtZW4gZGVzIFp3ZWlncy4KK0FjaHR1bmc6IGRhcyBnZWh0IG1vbWVudGFuIChub2NoKSBuaWNodCB1bmQgYXVmICdtYXN0ZXInIG9obmVoaW4gbmllLgorCitTSUVIRSBBVUNICisgIGdpdC1yZXBvc2l0b3JpZXM6IFJlcG9zaXRvcnktVmVyd2FsdHVuZyBpbSBNdWQKKyAgZ2l0LWhvd3RvOiBXaWUgZ2l0IGJlbnV0enQgd2lyZAorICBnaXQtd29ya2Zsb3c6IEVpbiBzaW1wbGVzIEJlaXNwaWVsIGVpbmVzIEFyYmVpdHNmbHVzc2VzIG1pdCBHaXQKKyAgZ2l0LXN5bmM6IFdpZSBkaWUgU3luY2hyb25pc2llcnVuZyB6dy4gZ2l0LVJlcG9zIHVuZCBNdWRsaWIgYWJsYWV1ZnQKKyAgZ2l0LWZhcTogaGFldWZpZyBnZXN0ZWxsdGUgRnJhZ2VuL1Byb2JsZW1lCisKKzAyLiBGZWIgMjAxMyBHbG9pbnNvbgpkaWZmIC0tZ2l0IGEvZG9jL3dpei9naXQtbGlua3MgYi9kb2Mvd2l6L2dpdC1saW5rcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4wMjU5MmEyCi0tLSAvZGV2L251bGwKKysrIGIvZG9jL3dpei9naXQtbGlua3MKQEAgLTAsMCArMSwzOCBAQAorTGlzdGUgdm9uIG51ZXR6bGljaGVuIHVuZCB3ZWl0ZXJmdWVocmVuZGVuIExpbmtzIGltIE5ldHoKKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CisKKyAgKiBEYXMgJ29mZml6aWVsbGUnIFR1dG9yaWFsCisgICAgaHR0cDovL3d3dy5rZXJuZWwub3JnL3B1Yi9zb2Z0d2FyZS9zY20vZ2l0L2RvY3MvZ2l0dHV0b3JpYWwuaHRtbAorICAqIEdpdCAtIFNWTiBDcmFzaCBDb3Vyc2UgKGZ1ZXIgTGV1dGUsIGRpZSBTVk4ga2VubmVuKQorICAgIGh0dHA6Ly9naXQub3IuY3ovY291cnNlL3N2bi5odG1sCisgICogRXZlcnlkYXkgZ2l0IHdpdGggMjAgY29tbWFuZHMgb3Igc28KKyAgICBodHRwOi8vd3d3Lmtlcm5lbC5vcmcvcHViL3NvZnR3YXJlL3NjbS9naXQvZG9jcy9ldmVyeWRheS5odG1sCisgICAgKHNvcnRpZXJ0IG5hY2ggRGV2ZWxvcGVycywgSW50ZWdyYXRvcnMsIEFkbWlucykKKyAgKiBEYXMgZ2l0IENvbW11bml0eSBCb29rIChzZWhyIGVtcGZlaGxlbnN3ZXJ0KQorICAgIGh0dHA6Ly9ib29rLmdpdC1zY20uY29tLworICAqIFVuZGVyc3RhbmRpbmcgZ2l0IGNvbmNlcHR1YWxseQorICAgIGh0dHA6Ly93d3cuZWVjcy5oYXJ2YXJkLmVkdS9+Y2R1YW4vdGVjaG5pY2FsL2dpdC8KKyAgKiBHaXQgY2hlYXQgc2hlZXRzCisgICAgaHR0cDovL2hlbHAuZ2l0aHViLmNvbS9naXQtY2hlYXQtc2hlZXRzLworICAgIGh0dHA6Ly9qYW4ta3J1ZWdlci5uZXQvZGV2ZWxvcG1lbnQvZ2l0LWNoZWF0LXNoZWV0LWV4dGVuZGVkLWVkaXRpb24KKyAgICBodHRwczovL2dpdGh1Yi5jb20vQWxleFplaXRsZXIvZ2l0Y2hlYXRzaGVldC9ibG9iL21hc3Rlci9naXRjaGVhdHNoZWV0LnBkZgorICAgIGh0dHA6Ly93d3cuY2hlYXQtc2hlZXRzLm9yZy9zYXZlZC1jb3B5L2dpdC1jaGVhdC1zaGVldC5wZGYKKyAgICBodHRwOi8vY2hlYXQuZXJydGhlYmxvZy5jb20vcy9naXQKKyAgKiBHdWlkZXMvSG93dG9zIHZvbiBHaXRIdWIKKyAgICBodHRwOi8vaGVscC5naXRodWIuY29tLworICAqIERpZmZlcmVuY2Ugb2YgbWVyZ2UgYW5kIHB1bGwKKyAgICBodHRwOi8vbG9uZ2Fpci5uZXQvYmxvZy8yMDA5LzA0LzE2L2dpdC1mZXRjaC1hbmQtbWVyZ2UvCisgICogRGl2LiBUaXBzIHVuZCBUcmlja3MKKyAgICBodHRwOi8vbG9uZ2Fpci5uZXQvYmxvZy8yMDA5LzA0LzI1L2EtZmV3LWdpdC10aXBzLworICAqIEdpdCBmdWVyIFdpbmRvd3MKKyAgICBodHRwczovL2NvZGUuZ29vZ2xlLmNvbS9wL2dpdGV4dGVuc2lvbnMvCisgICAgKE1pdCBJbnRlZ3JhdGlvbiBpbiBkZW4gRXhwbG9yZXIpCisgICogR2l0LUJlbnV0enVuZyB1bnRlciBXaW5kb3dzCisgICAgaHR0cDovL3JvZ2VyZHVkbGVyLmdpdGh1Yi5pby9naXQtZ3VpZGUvCisgICAgaHR0cDovL2hlbHAuZ2l0aHViLmNvbS93aW4tc2V0LXVwLWdpdC8KKyAgKiBHaXQtSW50ZXJuYSB2ZXJzdGFlbmRsaWNoIGVya2xhZXJ0OgorICAgIEdpdCBGb3IgQWdlcyA0IEFuZCBVcCAKKyAgICBodHRwczovL3d3dy55b3V0dWJlLmNvbS93YXRjaD92PTFmZkJKNHNWVWI0CisKKzEwLjAzLjIwMTUgQW1hcnlsbGlzCisKZGlmZiAtLWdpdCBhL2RvYy93aXovZ2l0LXJlcG9zaXRvcmllcyBiL2RvYy93aXovZ2l0LXJlcG9zaXRvcmllcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi45ZWQ3YzMzCi0tLSAvZGV2L251bGwKKysrIGIvZG9jL3dpei9naXQtcmVwb3NpdG9yaWVzCkBAIC0wLDAgKzEsNzIgQEAKK0dpdC1SZXBvc2l0b3JpZXMgaW0gTW9yZ2VuR3JhdWVuCis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorCitEaWUgZm9sZ2VuZGVuIFJlcG9zaXRvcmllcyBzdGVoZW4gZnVlciBkaWUgQmVudXR6dW5nIGR1cmNoIE1hZ2llciBiZXJlaXQgYnp3LgorbGFzc2VuIHNpY2ggZHVyY2ggTWFnaWVyIGJlaSBCZWRhcmYgKGxlZXIgb2RlciBkdXJjaCBJbXBvcnQgdm9uIFZlcnplaWNobmlzc2VuCithdXMgZGVtIE11ZCkgYW5sZWdlbjoKKworKiAvZC9yZWdpb24vbWFnaWVyLyoKKyAgVmVyemVpY2huaXNzZSB1bnRlcmhhbGIgZGVyIE1hZ2llcmViZW5lIGluIGRlbiBSZWdpb25lbiBsYXNzZW4gc2ljaCBpbgorICBnaXQtUmVwb3MgYXVmbmVobWVuLgorICBBbmxlZ2VuOiBSZWdpb25zbWl0YXJiZWl0ZXIsIE1hZ2llciBtaXQgU2NocmVpYnp1Z3JpZmYgYXVmIGRlbiBQZmFkCisgIFNjaHJlaWJ6dWdyaWZmOiBFaWdlbnR1ZW1lciAoTWFnaWVyKSwgUmVnaW9uc21hZ2llciBkaWVzZXIgUmVnaW9uLCBXZWlzZQorICBMZXNlenVncmlmZjogcy4gU2NocmVpYnp1Z3JpZmYgKHdlZ2VuIHNlY3VyZS8pCisKKyogL3Avc2VydmljZS9tYWdpZXIvKgorICBBbmxlZ2VuOiBXZWlzZSwgTWFnaWVyIG1pdCBTY2hyZWlienVncmlmZiBhdWYgZGVuIFBmYWQKKyAgU2NocmVpYnp1Z3JpZmY6IEVpZ2VudHVlbWVyIChNYWdpZXIpLCBXZWlzZQorICBMZXNlenVncmlmZjogYWxsZSBNYWdpZXIgKD49IDIwKQorICAKKyogL3BsYXllcnMvbWFnaWVyLyoKKyAgQW5sZWdlbjogTWFnaWVyIHNlbGJlciwgTWFnaWVyIG1pdCBTY2hyZWlienVncmlmZiBhdWYgZGVuIFBmYWQKKyAgU2NocmVpYnp1Z3JpZmY6IE1hZ2llciBzZWxiZXIKKyAgTGVzZXp1Z3JpZmY6IE1hZ2llciBzZWxiZXIKKworKiAvcGxheWVycy9tYWdpZXIvcHVibGljLyoKKyAgQW5sZWdlbjogTWFnaWVyIHNlbGJlciwgTWFnaWVyIG1pdCBTY2hyZWlienVncmlmZiBhdWYgZGVuIFBmYWQKKyAgU2NocmVpYnp1Z3JpZmY6IE1hZ2llciBzZWxiZXIsIFdlaXNlCisgIExlc2V6dWdyaWZmOiBqZWRlciBNYWdpZXIgKD49IDIwKQorCisqIHBsYXlncm91bmQvbWFnaWVyLyoKKyAgU3BpZWx3aWVzZSB6dW0gVGVzdGVuIHZvbiBNYWdpZXJuLiBTb2xsIHp1bSBSdW1zcGllbGVuIHVuZCBUZXN0ZW4gdm9uIEdpdAorICBkaWVuZW4uCisgIERpZXNlIFJlcG9zIHdlcmRlbiBOSUNIVCBtaXQgZGVtIE11ZCBzeW5jaHJvbmlzaWVydC4KKyAgRGllc2UgUmVwb3Mgd2VyZGVuIGF1dG9tYXRpc2NoIGdlbG9lc2NodCwgd2VubiBzaWUgbGFlbmdlciBhbHMgMTQgVGFnZSBuaWNodAorICB2ZXJhZW5kZXJ0IHdlcmRlbi4KKyAgQW5sZWdlbjogamVkZXIgTWFnaWVyCisgIFNjaHJlaWJ6dWdyaWZmOiBNYWdpZXIgc2VsYmVyLCBXZWlzZQorICBMZXNlenVncmlmZjogamVkZXIgTGVocmxpbmcgKHVuZCBob2VoZXIpICg+PSAxNSkKKworVWVicmlnZW5zIGdlaHQgZXMgZXhwbGl6aXQgTklDSFQsIHNlaW4gZ2VzYW10ZXMgfiBpbiBlaW4gUmVwbyB6dSBmYXNzZW4uCisKK1dlbm4gbWFuIHNlaW4ga29tcGxldHRlbiBSZWdpb25zdmVyemVpY2huaXMgKC9kL3JlZ2lvbi9tYWdpZXIpIGluIGVpbiBSZXBvCitpbXBvcnRpZXJ0LCBzaW5kIGFuc2NobGllc3NlbmQga2VpbmUgZWluemVsbmVuIFJlcG9zIHVudGVyaGFsYiBkaWVzZXMKK1ZlcnplaWNobmlzc2VzIG1vZWdsaWNoIChiencuIGZ1ZWhyZW4genUgUHJvYmxlbWVtKSEgRWJlbnNvIGthbm4gZGFzIGtvbXBsZXR0ZQorTWFnaWVydmVyemVpY2huaXMgbmljaHQgbWVociBhbHMgUmVwbyBpbXBvcnRpZXJ0IHdlcmRlbiwgd2VubiBlcyB1bnRlciBpaG0KK3NjaG9uIFJlcG9zIGdpYnQuCisKK0Vyem1hZ2llciB1bmQgR29ldHRlciBoYWJlbiB1ZWJyaWdlbnMgYXVmIF9hbGxlXyBSZXBvc2l0b3JpZXMgTGVzZS0gdW5kCitTY2hyZWlienVncmlmZi4gU2llIHNpbmQgYXVjaCBkaWUgZWluemlnZW4sIGRpZSBpbiBkZW4gUmVwb3NpdG9yaWVzIGVpbmVuIHNvZy4KK1Jld2luZCBkdXJjaGZ1ZWhyZW4ga29lbm5lbiAtIGQuaC4gZGllIFZlcnNpb25zZ2VzY2hpY2h0ZSBpbSBOYWNoaGluZWluCithZW5kZXJuLgorRWluZSBCZXJ1ZWNrc2ljaHRpZ3VuZyB2b24gYWNjZXNzX3JpZ2h0cy5jLCBBQ0NFU1NfUklHSFRTIGV0Yy4gZmluZGV0IGhpZXJiZWkKK2RlcnplaXQgTklDSFQgc3RhdHQuCisKK1p1bSBMb2VzY2hlbiB2b24gUmVwb3NpdG9yaWVzIHNpZWhlIFB1bmt0IDYgaW4gZ2l0LWhvd3RvLgorCitFaW4gKGF1dG9tYXRpc2NoZXIpIEltcG9ydCBiZXN0ZWhlbmRlciBWZXJ6ZWljaG5pc3NlIGF1cyBkZW0gTXVkIGlzdAorbW9lZ2xpY2guIEluIGRpZXNlbSBGYWxsIHdlcmRlbiBkYXMgc28gZXJzdGVsbHRlIFJlcG9zaXRvcnkgdW5kIGRpZSBNdWRsaWIKK2F1dG9tYXRpc2NoIHN5bmNocm9uaXNpZXJ0LCB3ZW5uIGplbWFuZCB2b24gYXVzc2VuIGluIGRhcyBSZXBvc2l0b3J5IHB1c2h0LgorSGllcmJlaSB3aXJkIF92ZXJzdWNodF8gZXR3YWlnZSBnbGVpY2h6ZWl0aWdlIEFlbmRlcnVuZyBpbSBHaXQtUmVwbyB1bmQgaW4gZGVyCitNdWRsaWIgc2lubnZvbGwgenUgJ21lcmdlbicgLSBpbSBGYWxsZSB2b24gS29uZmxpa3RlbiBpc3QgZGllcyBuaWNodCBpbW1lcgorbW9lZ2xpY2gsIHdlc3dlZ2VuIE1hZ2llciBhdWYgZGFzIEVyZ2VibmlzIHNvbGNoZXIgYXV0b21hdGlzaWVydGVyIE1lcmdlcyBlaW4KK0F1Z2Ugd2VyZmVuIHNvbGx0ZW4uCisKK1NJRUhFIEFVQ0g6CisgIGdpdC1ob3d0bzogV2llIGdpdCBiZW51dHp0IHdpcmQKKyAgZ2l0LXdvcmtmbG93OiBFaW4gc2ltcGxlcyBCZWlzcGllbCBlaW5lcyBBcmJlaXRzZmx1c3NlcyBtaXQgR2l0CisgIGdpdC1zeW5jOiBXaWUgZGllIFN5bmNocm9uaXNpZXJ1bmcgencuIGdpdC1SZXBvcyB1bmQgTXVkbGliIGFibGFldWZ0CisgIGdpdC1mYXE6IGhhZXVmaWcgZ2VzdGVsbHRlIEZyYWdlbi9Qcm9ibGVtZQorICBnaXQtbGlua3M6IFZlcndlaXNlIGlucyBXV1cKKworMjkuMDEuMjAxMyBHbG9pbnNvbi4KZGlmZiAtLWdpdCBhL2RvYy93aXovZ2l0LXN5bmMgYi9kb2Mvd2l6L2dpdC1zeW5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjg3YzVkOWYKLS0tIC9kZXYvbnVsbAorKysgYi9kb2Mvd2l6L2dpdC1zeW5jCkBAIC0wLDAgKzEsNDkgQEAKK1N5bmNocm9uaXNhdGlvbiB6d2lzY2hlbiBnaXQtUmVwb3NpdG9yaWVzIHVuZCBNdWQKKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKworSS4gUHVzaCB2b24gYXVzc2VuIGlucyBNdWQuCisKK0FtIEVuZGUgZXMgUHVzaGVzIChpbSBzb2cuIHBvc3QtdXBkYXRlIGhvb2spIHdpcmQgZWluIFNjcmlwdCBnZXN0YXJ0ZXQsCit3YXMgZm9sZ2VuZGVzIG1hY2h0OgorCisxKSBXZW5uIGZ1ZXIgZGllIFN5bmNocm9uaXNhdGlvbiBtaXQgZGVtIE11ZCBha3RpdiBpc3QsIHdpcmQgbWl0IGRlciBNdWRsaWIKKyAgIGdlc3luY3QuIFdlbm4gbmljaHQ6IEVuZGUKKzIpIFp1bmFlY2hzdCB3aXJkIGluIGVpbmVtIGxva2FsZW4gQ2xvbmUgZGVzIGdpdC1SZXBvc2l0b3JpZXMgZWluIHRlbXBvcmFlcmVyCisgICBCcmFuY2ggenVtIE1lcmdlbiB2b24gQWVuZGVydW5nZW4gYXVzIGRlbSBNdWQgYW5nZWxlZ3QgKGF1dG8tbXVkLXN5bmMpLAorICAgd2VsY2hlciBiZWkgZGVtIFRhZyBsYXN0LWF1dG8tbXVkLXN5bmMgc3RhcnRldCB1bmQgZGllc2VyIEJyYW5jaAorICAgYXVzZ2VjaGVja3QuCiszKSBNaXQgSGlsZmUgdm9uIHJzeW5jIHdlcmRlbiBhbGxlIEFlbmRlcnVuZ2VuIGF1cyBkZXIgTXVkbGliIGhlcmVpbmtvcGllcnQuCis0KSBXZW5uIEFlbmRlcnVuZ2VuIGV4aXN0aWVyZW4sIHdpcmQgZWluIG5ldWVyIENvbW1pdCBhdWYgZGVtIEJyYW5jaCBnZW1hY2h0LgorNSkgQW5zY2hsaWVzc2VuZCB3aXJkIEJyYW5jaCBtYXN0ZXIgYXVzZ2VjaGVja3QuCis2KSBXZW5uIGVzIEFlbmRlcnVuZ2VuIGdhYiwgZGllIGluIDQpIGNvbW1pdGV0IHd1cmRlbiwgd2lyZCBqZXR6dCBkZXIgQnJhbmNoCisgICBhdXRvLW11ZC1zeW5jIG1pdCBkaWVzZW0gQ29tbWl0IGluIG1hc3RlciBnZW1lcmd0LgorICAgS29tbXQgZXMgaGllcmJlaSB6dSBLb25mbGlrdGVuLCB3ZXJkZW4gZGllIF9hdXRvbWF0aXNjaF8genVndW5zdGVuIGRlcworICAgU3RhbmRlcyBkZXIgZ2l0LVJlcG9zaXRvcmllcyBhdWZnZWxvZXN0LCBkLmguIGVzIGdlaGVuIGdnZi4gQWVuZGVydW5nZW4gYXVzCisgICBkZW0gTXVkIHZlcmxvcmVuLiBFcyBrYW5uIGhpZXJiZWkgZGFoZXIgcGFzc2llcmVuLCBkYXNzIHZvbiA4IGltIE11ZAorICAgZ2VhZW5kZXJ0ZW4gWmVpbGVuIG51ciA2IHVlYmVybm9tbWVuIHdlcmRlbiwgd2VpbCAyIFplaWxlbiBpbiBLb25mbGlrdCBtaXQKKyAgIGRlbiBBZW5kZXJ1bmdlbiBpbSBnaXQtUmVwb3NpdG9yeSBzdGVoZW4uIERhaGVyIGlzdCBlcyB3aWNodGlnLCBkYXMKKyAgIEVyZ2VibmlzIGRpZXNlcyBNZXJnZXMgaW0gTmFjaGhpbmVpbiB6dSBwcnVlZmVuIHVuZCBnZ2YuIHp1IGtvcnJpZ2llcmVuIQorNykgRmFsbHMgZXMgQWVuZGVydW5nZW4gZ2FiLCB3aXJkIGpldHp0IGRlciBpbiA3KSBlcnN0ZWxsdGUgTWVyZ2UtQ29tbWl0IGlucworICAgZ2l0LVJlcG9zaXRvcnkgZ2VwdXNodC4KKzgpIERlciBqZXR6dCBnZW1lcmd0ZSBTdGFuZCB3aXJkIHBlciByc3luYyBpbnMgTXVkIGtvcGllcnQuCis5KSBEYXMgVGFnIGxhc3QtYXV0by1tdWQtc3luYyB3aXJkIGFrdHVhbGlzaWVydC4KKworCitJSS4gQXV0b21hdGlzY2hlciByZWdlbG1hZXNzaWdlciBDb21taXQgdm9tIE11ZAorCitKZWRlbiBUYWcgdW0gMDU6MTEgd2lyZCB2aWEgY3JvbmpvYiB1bmQgZGFzIFNjcmlwdCB+L3NjcmlwdHMvZ2l0LWF1dG9jb21taXQKK2Z1ZXIgamVkZXMgUmVwbyBpbiB+L2dpdC1yZXBvc2l0b3JpZXMvIGRhcyB1bnRlciBJLiBiZXNjaHJpZWJlbmUgU2NyaXB0Cit+L3NjcmlwdHMvZ2l0LXN5bmMybGliIGF1c2dlZnVlaHJ0LgorCisKK0lJSS4gSW1wb3J0IHZvbiBWZXJ6ZWljaG5pc3NlbiBhdXMgZGVtIE11ZAorCitadSBqZWRlciB2b2xsZW4gU3R1bmRlIHdpcmQgaW4gYWxsZW4gVmVyemVpY2huaXNzZW4gdW50ZXIgL2QvLCAvcC8gdW5kCisvcGxheWVycy8gZGllIERhdGVpICdnaXQtbXVkLWltcG9ydCcgZ2VzdWNodC4gQWxsZSBWZXJ6ZWljaG5pc3NlLCBpbiBkZW5lbgorZGllc2UgZXhpc3RpZXJ0LCB3ZXJkZW4gaW4gZ2l0b2xpdGUgaW1wb3J0aWVydCB1bmQgZ2xlaWNoemVpdGlnIGF1Y2ggZWluIENsb25lCitpbiB+L2dpdC1yZXBvc2l0b3JpZXMvIGVyc3RlbGx0LCBkLmguIGRhc3MgZGllIFN5bmNocm9uaXNhdGlvbnNtYXNzbmFobWVuCit1bnRlciBJLiB1bmQgSUkuIGZ1ZXIgZGllc2VzIG5ldWUgZ2l0LVJlcG9zaXRvcnkgYWt0aXYgc2luZC4KKworTEVUWlRFIEFlTkRFUlVORzoKKzA1LjA0LjIwMTEsIFplc3N0cmEKKwpkaWZmIC0tZ2l0IGEvZG9jL3dpei9naXQtd29ya2Zsb3cgYi9kb2Mvd2l6L2dpdC13b3JrZmxvdwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi42NTVjNzZkCi0tLSAvZGV2L251bGwKKysrIGIvZG9jL3dpei9naXQtd29ya2Zsb3cKQEAgLTAsMCArMSwxNTEgQEAKK1R5cGlzY2hlciBBcmJlaXRzYWJsYXVmCis9PT09PT09PT09PT09PT09PT09PT09PQorCisoRXMgZ2lidCBhbmRlcmUgQXJiZWl0c3dlaXNlbiwgYWJlciBkaWVzIGhpZXIgaXN0IGVpbmUsIGRpZSBzaWNoIGJld2FlaHJ0CisgaGF0LikKKworTmVobWVuIHdpciBhbiwgaWNoIG1vZWNodGUgZXR3YXMgbmV1ZXMgZWluYmF1ZW4sIGVpbmVuIEJ1ZyBmaXhlbiBldGMuCitBbGxlIGRlciBmb2xnZW5kZW4gU2Nocml0dCB3ZXJkZW4gYXVmIGV1cmVtIGVpZ2VuZW4gUmVjaG5lciBpbiBldXJlbSBsb2thbGVuCitDbG9uZSBkZXMgamV3ZWlsaWdlbiBSZXBvc2l0b3JpZXMgZHVyY2hnZWZ1ZWhydC4KKworIyBTY2hyaXR0IDE6IFJlcG9zaXRvcnkgY2xvbmVuIHVuZC9vZGVyIHVwZGF0ZW4KKz4gZ2l0IGNsb25lIGdpdEBtZy5tdWQuZGU6L2RpbmdzL2J1bXMKKz4gZ2l0IGNoZWNrb3V0IG1hc3RlcgorPiBnaXQgcHVsbAorWnVlcnN0IGVpbm1hbCB3aXJkIGVpbiBjaGVja291dCBkZXMgWndlaWdlcyAnbWFzdGVyJyBnZW1hY2h0LiBVbmQgaW4gZGllc2VuCitad2VpZyBob2wgaWNoIG1pciBlcnN0bWFsIGRlbiBha3R1ZWxsZW4gU3RhbmQgYXVzIGRlbSBNdWQgKHB1bGwpLgorCitKZXR6dCBtb2VjaHRlIGljaCBhbGxlIEFlbmRlcnVuZ2VuIGVyc3RtYWwgaW4gZWluZW0gc2VwYXJhdGVuIFp3ZWlnIG1hY2hlbi4KK1dhcnVtPyBXZWlsIGRhbm4gZGVyICdtYXN0ZXInIChkYXMgaXN0IGRlciBha3RpdmUgWndlaWcgaW0gTXVkISkgaW1tZXIgaW4KK2VpbmVtIGJlbnV0emJhcmVuIFp1c3RhbmQgaXN0LiBEZXN3ZWl0ZXJlbiBrYW5uIG1hbiBlaW5lbiBad2VpZyBlaW5mYWNoCit3ZWd3ZXJmZW4sIHdlbm4gaXJnZW5kd2FzIGdyb2Vzc2VyZXMgc2NoaWVmZ2VsYXVmZW4gaXN0Li4uCitBdXNzZXJkZW0gaXN0IGVzIGRhbm4gZWluZmFjaGVyLCB6d2lzY2hlbnplaXRsaWNoZSBBZW5kZXJ1bmdlbiBhdXMgZGVtIE11ZCB6dQoraW50ZWdyaWVyZW4uCisKKyMgU2Nocml0dCAyOiBOZXVlbiBad2VpZyBlcnN0ZWxsZW4KKz4gZ2l0IGNoZWNrb3V0IC1iIG5ldWVfa2FtcGZ0YWt0aWsKK0hpZXJtaXQgd2lyZCAgZWluIG5ldWVyIFp3ZWlnIGVyc3RlbGx0IHVuZCBnbGVpY2h6ZWl0aWcgaW4gaWhuIGdld2VjaHNlbHQuCisKK0hpZXIgbWFjaCBpY2ggamV0enQgYWxsZSBtb2VnbGljaGVuIEFyYmVpdGVuIHVuZCBCYXN0ZWxlaWVuLCBkaWUgaWNoIGZ1ZXIgZGllCituZXVlIEthbXBmdGFrdGlrIGJyYXVjaGUuIFRpcHBzIGRhenU6CisqIFZpZWxlIHVuZCBoYWV1ZmlnZSBDb21taXRzIG1hY2hlbiEgSmUga2xlaW5lciBlaW56ZWxuZSBDb21taXRzIHNpbmQsIGRlc3RvCisgIGJlc3NlciBrYW5uIG1hbiBBZW5kZXJ1bmdlbiBzcGFldGVyIHZlcmZvbGdlbiAod2FzIHouQi4gc3VwZXIgaXN0LCB3ZW5uCisgIGplbWFuZCB3YXMgYWJuZWhtZW4gbXVzcyEpIHVuZCBkZXN0byBiZXNzZXIga2FubiBtYW4gZWluemVsbmUgQWVuZGVydW5nZW4KKyAgc3BhZXRlciBiZWkgQmVkYXJmIGF1Y2ggcnVlY2tnYWVuZ2lnIG1hY2hlbiwgd2VubiBtYW4gbWVya3QsIGRhc3MgbWFuCisgIHN0ZWxsZW53ZWlzZSBVbnNpbm4gZ2ViYXV0IGhhdC4gOy0pCisqIFRoZW1hdGlzY2ggdW50ZXJzY2hpZWRsaWNoZSBEaW5nZSBpbiB2ZXJzY2hpZWRlbmUgQ29tbWl0cyBwYWNrZW4uIEFsc28gekIKKyAgZXJzdCBTeW50YXhmZWhsZXIgZWRpdGllcmVuIHVuZCBjb21taXRlbiwgZGFubiBlaW5lIG5ldWUgTWV0aG9kZSBmdWVyCisgIGV0d2FzIGdhbnogYW5kZXJlIHNjaHJlaWJlbiB1bmQgY29tbWl0ZW4uCisKKyMgU2Nocml0dCAzLjE6IEFlbmRlcnVuZ2VuIHBydWVmZW4KKz4gZ2l0IHN0YXR1cworSGllcm1pdCBsYXNzZSBpY2ggbWlyIGFuemVpZ2VuLCB3ZWxjaGUgRGF0ZWllbiBuaWNodC1jb21taXR0ZXRlIEFlbmRlcnVuZ2VuCitlbnRoYWx0ZW4gKG9kZXIgbmV1IHNpbmQvZ2Vsb2VzY2h0IHd1cmRlbikuCisKKz4gZ2l0IGRpZmYKK0RpZXMgemVpZ3QgbWlyIGFsbGUgbmljaHQtY29tbWl0dGV0ZW4gQWVuZGVydW5nZW4gYW4gLSB6ZWlsZW53ZWlzZSB2ZXJnbGljaGVuCittaXQgZGVtIHZvcmhlcmlnZW4gWnVzdGFuZC4KKworIyBTY2hyaXR0IDMuMjogQWVuZGVydW5nZW4gaW4gbG9rYWxlcyBSZXBvc2l0b3J5IGNvbW1pdGVuCis+IGdpdCBhZGQgPGZpbGU+ICAgICAgICAgICAgICAgICAgICAvLyBlaW56ZWxuZSBGaWxlcyBhdXN3YWVobGVuCitPREVSCis+IGdpdCBhZGQgLUEgLi8gICAgICAgICAgICAgICAgICAgICAvLyBhbGxlIEZpbGVzIGF1c3dhZWhsZW4KK0hpZXJtaXQgbWVya2UgYWxsZSBnZW1hY2h0ZW4gQWVuZGVydW5nZW4gZnVlciBkZW4gbmFlY2hzdGVuIENvbW1pdCB2b3IuCitJY2gga29lbm50ZSBoaWVyIGFiZXIgYXVjaCBlaW56ZWxuZSBEYXRlaWVuIGF1c3dhZWhsZW4gb2RlciBzb2dhciBudXIKK2Jlc3RpbW10ZSBUZWlsZSBkZXIgQWVuZGVydW5nZW4gaW4gZWluZXIgRGF0ZWkuIChIaWVyenUgYml0dGUgZGllCitHaXQtRG9rdSBiZW11ZWhlbi4pCisKKz4gZ2l0IGNvbW1pdAorSGllcm1pdCBlcnN0ZWxsZSBpY2ggZWluZW4gQ29tbWl0LCBkZXIgZGllIGJpc2hlcmlnZW4gQWVuZGVydW5nZW4gdW1mYXNzdC4KK0RhYmVpIHdpcmQgZWluIEVkaXRvciBnZW9lZmZuZXQsIGluIGRlbiBpY2ggZWluZSBpbmZvcm1hdGl2ZSBOYWNocmljaHQgdWViZXIKK21laW5lIEFlbmRlcnVuZ2VuIGhpbnRlcmxhc3NlbiBrYW5uLiBEYXMgaXN0IGJlc29uZGVycyB3aWNodGlnLCB3ZW5uIGljaCBpbgorZnJlbWRlbiBHZWJpZXRlbiBhcmJlaXRlLCBhYmVyIGF1Y2ggZnVlciBtaWNoIHVuZCBlaW5lbiBldHdhaWdlbiBhYm5laG1lbmRlbgorTWFnaWVyIHNlaHIgc2lubnZvbGwuCitBbnJlZ3VuZzogRGllIGVyc3RlIFplaWxlIGlzdCBkYXMgc29nLiBCZXRyZWZmIGRlcyBDb21taXRzIC0gdmVyZ2xlaWNoYmFyIG1pdAorZGVtIEJldHJlZmYgZWluZXIgZU1haWwuIEFuc2NobGllc3NlbmQgc29sbHRlIGVpbmUgbGVlcmUgWmVpbGUgZm9sZ2VuIHVuZAorZGFuYWNoIGVpbmUgbGFlbmdlcmUgQmVzY2hyZWlidW5nIGVpbmdlYmVuIHdlcmRlbiwgc29mZXJuIG5vZXRpZy9zaW5udm9sbC4KKworV2VubiBpY2ggYW4gZGllc2VtIFB1bmt0IG1pdCBkZW0gQnVnZml4IG9kZXIgRmVhdHVyZSBub2NoIG5pY2h0IGZlcnRpZyBiaW46CitlaW5mYWNoIGRpZSBsZXR6dGVuIDQgQmVmZWhsZSBhdXMgU2Nocml0dCAzIGJlbGllYmlnIG9mdCB3aWVkZXJob2xlbiwgZC5oLgorYmVsaWViaWcgdmllbGUgd2VpdGVyZSBDb21taXRzIG1hY2hlbi4KKworIyBTY2hyaXR0IDQ6IEFlbmRlcnVuZ2VuIGluIGxva2FsZW4gTWFzdGVyLVp3ZWlnIG1lcmdlbgorQmluIGljaCBkYW5uIHNjaGxpZXNzbGljaCBhYmVyIG1hbCBmZXJ0aWcsIGdlaGUgaWNoIGVyc3RtYWwgenVydWVjayB6dW0KK21hc3Rlci1ad2VpZzoKKworPiBnaXQgY2hlY2tvdXQgbWFzdGVyCitIdWNoISBQbG9ldHpsaWNoIHNpbmQgYWxsZSBEYXRlaWVuIGF1ZiBkZW0gYWx0ZW4gU3RhbmQhIEtlaW5lIFNvcmdlLAordW5zZXJlIEFlbmRlcnVuZ2VuIHNpbmQgaW0gWndlaWcgJ25ldWVfa2FtcGZ0YWt0aWsnIHNpY2hlciB2ZXJ3YWhydC4KKworQWNodHVuZzogd2VubiBpaHIgbWl0IGFuZGVyZW4genVzYW1tZW4gYXJiZWl0ZXQsIGtvZW5udGUgamVtYW5kCithbmRlcmVzIGltIE1VRCBBZW5kZXJ1bmdlbiB2b3JnZW5vbW1lbiBoYWJlbi4gRWluIGVpbmZhY2hlcworPiBnaXQgcHVsbAordW0gZGllIERhdGVpZW4gaW0gJ21hc3RlcictWndlaWcgYXVmIGRlbiBuZXVlc3RlbiBTdGFuZCB6dSBicmluZ2VuLAoremVpZ3QgZXVjaCBhdWNoIEFlbmRlcnVuZ2VuLiBXZW5uIGRhIGpldHp0CisgICdBbHJlYWR5IHVwLXRvLWRhdGUuJworc3RlaHQsIGlzdCBhbGxlcyBpbiBCdXR0ZXIsIGFuc29uc3RlbiBzaWVoZSB1bnRlbiBiZWkgNC4xLmV4dHJhLgorCis+IGdpdCBtZXJnZSBuZXVlX2thbXBmdGFrdGlrCitNaXQgZGllc2VtIEtvbW1hbmRvIGhvbGUgaWNoIG51biBhbGxlIEFlbmRlcnVuZ2VuIGF1cyBtZWluZW0gWndlaWcKKyduZXVlX2thbXBmdGFrdGlrJyBpbiBkZW4gWndlaWcgJ21hc3RlcicgKG1lcmdlKS4KKworIyBTY2hyaXR0IDU6IEFlbmRlcnVuZ2VuIGluIGRhcyBNVUQtUmVwb3NpdG9yeSB1ZWJlcnRyYWdlbgorSmV0enQgYmluIGljaCBiZXJlaXQsIGRpZSBBZW5kZXJ1bmdlbiBpbnMgTXVkIHp1IHVlYmVydHJhZ2VuOgorPiBnaXQgcHVzaCAKK0pvYiBkb25lIQorSGllciBrb21tZW4gamV0enQgZGl2LiBBdXNnYWJlbiB2b20gTXVkLCBkaWUgZXR3YXMgdWViZXIgZGVuIEVyZm9sZyB1bmQKK01pc3NlcmZvbGcgZGVzIFB1c2hlcyBzYWdlbi4gOy0pCitXZW5uIGFtIEVuZGUgc3RlaHQKKyAgJ1lvdXIgY2hhbmdlcyB3ZXJlIGNvcGllZCB0byB0aGUgbXVkbGliLicKK2lzdCBhbGxlcyBlcmZvbGdyZWljaC4KKworU3RlaHQgYW0gRW5kZSBlaW4KKyAgJ1lvdXIgY2hhbmdlcyB3ZXJlIG1lcmdlZCBzdWNjZXNzZnVsbCB3aXRoIGNoYW5nZXMgaW4gdGhlIG11ZGxpYiBhbmQgdGhlCisgICBtZXJnZWQgc3RhdGUgd2FzIGNvcGllZCB0byB0aGUgbXVkbGliLiBEbyBub3QgZm9yZ2V0IHRvIHB1bGwgdGhlIG1lcmdlCisgICBjb21taXQhIiAKK2lzdCBhbiBzaWNoIGF1Y2ggYWxsZXMgZ3V0LiBBYmVyIGRhbm4gZ2FiIGVzIGltIE11ZCBlYmVuIGRvY2ggbm9jaAorQWVuZGVydW5nZW4sIGRpZSBlcyBuaWNodCBpbSBHaXQtUmVwbyBnYWIsIGRpZSBnZW1lcmdlZCB3dXJkZW4uIEluIGRpZXNlbQorRmFsbCBzb2xsdGUgbWFuIGRlbiBha3R1ZWxsZW4gWnVzdGFuZCBzaWNoIG5vY2htYWwgaG9sZW46Cis+IGdpdCBwdWxsCitVbmQgZGFubiBhbnNjaGF1ZW4sIGRpZXNlciBNZXJnZSBhdWNoIGRhcyByaWNodGlnZSBnZW1hY2h0IGhhdDoKKz4gZ2l0IGxvZyAtcAorSGllcm1pdCBrcmllZ2UgaWNoIGVpbmUgc2Nob2VuZSBMaXN0ZSBhbGxlciBDb21taXRzIGFuZ2V6ZWlndCB1bmQgLXAgc29yZ3QKK2RhZnVlciwgZGFzcyBkYWJlaSBhbGxlIEFlbmRlcnVuZ2VuIGFuZ2V6ZWlndCB3ZXJkZW4sIG5pY2h0IG51ciBkaWUKK0NvbW1pdC1OYWNocmljaHQuCisKKyMgU29uZGVyZmFlbGxlIHVuZCBlcndlaXRlcnRlIE1vZWdsaWNoa2VpdGVuCisjIFNjaHJpdHQgNC4xLmV4dHJhOiBad2lzY2hlbnplaXRsaWNoZSBBZW5kZXJ1bmdlbiBpbSBNVUQgYmVydWVja3NpY2h0aWdlbgorCitFcyBrb2VubnRlIHNlaW4sIGRhc3MgbWFuIGZ1ZXIgZGVuIEJyYW5jaCBuZSBnYW56ZSBXZWlsZSBnZWJyYXVjaHQgaGF0IC0KK3VuZCBkYXNzIHdhZWhyZW5kIG1laW5lciBBcmJlaXQgamVtYW5kIGFuZGVycyBBZW5kZXJ1bmdlbiAoaW0gTXVkIG9kZXIKK1JlcG8pIGdlbWFjaHQgaGF0LgorCitEaWVzZSBBZW5kZXJ1bmdlbiBzb2xsdGUgbWFuIHNpY2ggd2llIGdlc2NocmllYmVuIGFscyBlcnN0ZXMgbmFjaCBkZW0KK1Vtc2NoYWx0ZW4genVtIG1hc3Rlci1ad2VpZyBob2xlbjoKKz4gZ2l0IHB1bGwKKworSmV0enQgZ2VoIGljaCB3aWVkZXIgaW4gbWVpbmVuIFp3ZWlnIChvaG5lIC1iKQorPiBnaXQgY2hlY2tvdXQgbmV1ZV9rYW1wZnRha3RpawordW5kIG1hY2hlIGVpbiBzb2cuIFJlYmFzZS4gRGFtaXQgdmVyc2NoaWViZSBpY2ggc296dXNhZ2VuLCBkZW4gUHVua3QsCithbiBkZW0gbWVpbiBad2VpZyB2b20gJ21hc3RlcicgYWJ6d2VpZ3QgdW5kIHR1ZSBzbywgYWxzIG9iIGRpZSBlYmVuCitnZWhvbHRlbiBBZW5kZXJ1bmdlbiBzY2hvbiBkYSBnZXdlc2VuIHdhZXJlbiwgYWxzIGljaCBkZW4gWndlaWcgZXJzdGVsbHRlLgorKEFuZGVyZSBTaWNodHdlaXNlOiBpY2ggbmVobWUgbWVpbmUgWndlaWcgdW5kIHNldHogaWhuIGF1ZiBkZW4gYWt0dWVsbGVuCisgJ21hc3RlcicgZHJhbi4pCis+IGdpdCByZWJhc2UgbWFzdGVyCisKK0RlciBWb3J0ZWlsIGlzdDogd2VubiBqZXR6dCB3YXMga2FwdXR0IGdlZ2FuZ2VuIGlzdCwgZXMgYWxzbyBLb25mbGlrdGUgZ2lidCwKK2Rhbm4gZ2lidCBlcyBkaWUgbnVyIGluIG1laW5lbSBad2VpZyAnbmV1ZV9rYW1wZnRha3RpaycgdW5kIGRvcnQga2FubiBpY2gKK3NpZSBpbiBhbGxlciBSdWhlIHJlcGFyaWVyZW4uIFNvd29obCBkZXIgJ21hc3RlcicgaW0gTVVEIGFscyBhdWNoIG1laW4KK2xva2FsZXIgJ21hc3Rlcicgc2luZCBpbnRha3QuCisKK1VuZCBqZXR6dCBnZWh0IGVzIHdpZSBvYmVuIHdlaXRlci4KKworU0lFSEUgQVVDSAorICBnaXQtcmVwb3NpdG9yaWVzOiBSZXBvc2l0b3J5LVZlcndhbHR1bmcgaW0gTXVkCisgIGdpdC1ob3d0bzogV2llIGdpdCBiZW51dHp0IHdpcmQKKyAgZ2l0LWtvb3BlcmF0aW9uOiBFaW4gdWViZXIgZ2l0LXdvcmtmbG93IGhpbmF1c2dlaGVuZGVzIEJlaXNwaWVsIHp1cgorICAgICAgICAgICAgICAgICAgIFN5bmNocm9uaXNhdGlvbiBiencgS29vcGVyYXRpb24gbWVocmVyZXIgTWFnaWVyL1JlY2huZXIKKyAgZ2l0LXN5bmM6IFdpZSBkaWUgU3luY2hyb25pc2llcnVuZyB6dy4gZ2l0LVJlcG9zIHVuZCBNdWRsaWIgYWJsYWV1ZnQKKyAgZ2l0LWZhcTogaGFldWZpZyBnZXN0ZWxsdGUgRnJhZ2VuL1Byb2JsZW1lCisKKzAyLiBGZWIgMjAxMyBHbG9pbnNvbgpkaWZmIC0tZ2l0IGEvZG9jL3dpei9oYXVzYmF1IGIvZG9jL3dpei9oYXVzYmF1Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjZjOWMyYTUKLS0tIC9kZXYvbnVsbAorKysgYi9kb2Mvd2l6L2hhdXNiYXUKQEAgLTAsMCArMSw0MCBAQAorSGlsZmVzZWl0ZSBmdWVyIE1hZ2llcjogSGF1c2JhdSBpbSBNb3JnZW5HcmF1ZW4KKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK0FscyBNYWdpZXIgd2lyZCBtYW4gZGVzb2VmdGVyZW4gdm9uIFNwaWVsZXJuIGdlYmV0ZW4sIElobmVuIGJlaW0KK0hhdXNiYXUgYmVoaWxmbGljaCB6dSBzZWluLiBEaWVzZSBCaXR0ZSBlcmZvbGd0IG1laXN0ZW5zIGFscworCisxKSAnS2FubnN0IER1IGhpZXIgaW4gZGVtIFJhdW0gd28gaWNoIGJpbiwgZXMgbWFsIHNvIGVpbnJpY2h0ZW4sCisgICAgZGFzcyBpY2ggbWVpbiBIYXVzIGFic3RlbGxlbiB1bmQgZ2llc3NlbiBrYW5uJworCit1bmQgCisKKzIpICdJY2ggbW9lY2h0IGhpZXIgZ2VybmUgbWVpbiBIYXVzIGFic3RlbGxlbiwgYWJlciBlcyBzb2xsIHVuLQorICAgIHNpY2h0YmFyIHNlaW4sIGVpbmUgYW5kZXJlIEt1cnpiZXNjaHJlaWJ1bmcgaGFiZW4gdW5kIG1hbiAKKyAgICBzb2xsIGVzIG5pY2h0IG1pdCA8YmV0cmV0ZT4gYmV0cmV0ZW4ga29lbm5lbiwgb2RlciAuLi4uICcuCisKKworRnVlciAxKSBpc3QgZXMgcmVsYXRpdiBlaW5mYWNoLiBNYW4gYmVnZWJlIHNpY2ggYWxzIE1hZ2llciBpbiBkZW4gCitSYXVtLCB6dWVja2Ugc2VpbiBNRy1Ub29sIHVuZCB0aXBwZSBlaW4gCisKKyAgICAgICAgICAgICAgJ3hjYWxsICRoLT5TZXRQcm9wKFBfSEFVU19FUkxBVUJULDEpJy4KKworRGFubiBmb3JkZXJlIG1hbiBkZW4gU3BpZWxlciBhdWYsIHNlaW4gSGF1cyBhYnp1c3RlbGxlbiB1bmQgZ2llcy0KK3NlbiB1bmQgc2V0emUgZGllc2UgUHJvcGVydHkgd2llZGVyIGF1ZiAwLgorCitBQ0hUVU5HOiBEYXMgQWJzdGVsbGVuIGVpbmVzIEhhdXNlcyBtdXNzIHVuYmVkaW5ndCB2b3JoZXIgbWl0IGRlbSAKKy0tLS0tLS0gIE1hZ2llciBhYmdlc3Byb2NoZW4gd2VyZGVuLCBkZW0gZGllc2VyIFJhdW0gZ2Vob2VydCEgQmVpIAorICAgICAgICAgaW5ha3RpdmVuIE1hZ2llciBpc3QgZGllcyBkZXIgenVzdGFlbmRpZ2UgUmVnaW9uc21hZ2llci4KKworQmVpIDIpIHZlcmZhZWhydCBtYW4sIHdpZSBmdWVyIGRlbiBGYWxsIDEpIGdlc2NoaWxkZXJ0LiBKZWRvY2ggc2luZCAKK2RhenUgbm9jaCBhbmRlcmUgRGluZ2Ugbm90d2VuZGlnLiBEYSBkaWVzZSBkZW4gUmFobWVuIGVpbmVyIEhpbGZlLQorc2VpdGUgc3ByZW5nZW4sIGxpZWd0IHVudGVyIAorCisgICAgICAgICAgICAgICAgICAgICAgIC9kb2MvYmVpc3BpZWxlL21pc2Mvc2VoZXJoYXVzLmMKKworZWluIEZpbGUsIGluIGRlbSBhbGxlcyBhdXNmdWVocmxpY2ggZG9rdW1lbnRpZXJ0IGlzdC4KKworU0lFSEUgQVVDSDogUF9IQVVTX0VSTEFVQlQKKworLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCitMRVRaVEUgQWVOREVSVU5HOiBTYW0sIDE5LjA1LjIwMDEsIDIzOjAwOjAwIHZvbiBUaWxseQpkaWZmIC0tZ2l0IGEvZG9jL3dpei9oZWlsdW5nIGIvZG9jL3dpei9oZWlsdW5nCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjNkMWI2YzgKLS0tIC9kZXYvbnVsbAorKysgYi9kb2Mvd2l6L2hlaWx1bmcKQEAgLTAsMCArMSwxNTYgQEAKK0hlaWx1bmcgdm9uIFNwaWVsZXJuIGR1cmNoIE9iamVrdGUsIFJhZXVtZSwgcG9ydGFibGUgSGVpbHVuZworPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CisKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHZW5lcmVsbGVzOgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoqKioqKioqKioKKworTmViZW4gZGVuIGJla2FubnRlbiBIZWlsc3RlbGxlbiBmdWVyIFNwaWVsZXIgKGRlbiBLbmVpcGVuIHNvd2llIGdpbGRlbmludGVybmUKK0ZhZWhpZ2tlaXRlbikgZ2lidCBlcyBub2NoIGRpZSBNb2VnbGljaGtlaXQsIGRlbiBTcGllbGVybiBIZWlsdW5nIGR1cmNoIFZlci0KK3dlbmR1bmcgZGVyIExGVU5zICJoZWFsX3NlbGYiLCAicmVzdG9yZV9oaXRfcG9pbnRzIiwgInJlc3RvcmVfc3BlbGxfcG9pbnRzIiwKKyJidWZmZXJfaHAiIHVuZCAiYnVmZmVyX3NwIiBIZWlsdW5nIHp1a29tbWVuIHp1IGxhc3Nlbi4KKworRGllcyB3aXJkIG1laXN0IHVlYmVyIFJhZXVtZSBnZW1hY2h0LCBpbiBkZW5lbiBkZXIgU3BpZWxlciBlaW4gYmVzdGltbXRlcworS29tbWFuZG8gYXVzZnVlaHJlbiBtdXNzIG9kZXIgdWViZXIgT2JqZWt0ZSwgZGllIGRlciBTcGllbGVyIG1pdCBzaWNoIHRyYWdlbgora2FubiAoJ3RyYWdiYXJlIFRhbmtlbicpLCB1bSBIZWlsdW5nIHp1IGVyZmFocmVuLgorCitFUyBXSVJEIEVNUEZPSExFTiwgamVkZSBtb2JpbGUgSGVpbHVuZyB1ZWJlciAiL3N0ZC9mb29kIiB6dSBpbXBsZW1lbnRpZXJlbi4KK0RvcnQgbXVlc3NlbiBsZWRpZ2xpY2ggZWluIHBhYXIgUHJvcGVydGllcyBnZXNldHp0IHdlcmRlbiwgdW0gc2ljaGVyenVnZWhlbiwKK2Rhc3MgZGllc2UgSGVpbHVuZ3NyZWdlbG4gZWluZ2VoYWx0ZW4gd2VyZGVuLgorR2xlaWNoemVpdGlnIHdpcmQgYXVjaCBzaWNoZXJnZXN0ZWxsdCwgZGFzcyB6LkIuIFByb3BzIHZvbiBDb250YWluZXJuLCBkaWUKK0hlaWx1bmcgZW50aGFsdGVuLCBuYWNoIExlZXJ1bmcga29ycmVrdCBnZXNldHp0IHdlcmRlbi4KKworTmViZW4gZGllc2VuIE1vZWdsaWNoa2VpdGVuIGdpYnQgZXMgYXVjaCBub2NoIEVudHRhbmt1bmdlbiwgYWxzbyBkaWUKK01vZWdsaWNoa2VpdCwgaW0gU3BpZWxlciBlaW5lIGRlciBQcm9wZXJ0aWVzIFBfRFJJTkssIFBfRk9PRCBvZGVyIFBfQUxDT0hPTAordWViZXIgZGllIExGVU5zICJkZWZ1ZWxfZm9vZC9kcmluayIgb2RlciAicmVkdWNlX2Zvb2QvZHJpbmsvYWxjb2hvbCIgenUKK21pbmRlcm4uIERpZXMgaXN0IGVpbmUgRm9ybSBkZXIgSGVpbHVuZywgZGEgZGVyIFNwaWVsZXIgZGFuYWNoIHdpZWRlcgorcmVndWxhZXIgZXNzZW4gdW5kIHRyaW5rZW4ga2Fubi4gU2llIG11c3MgYWxsZXJkaW5ncyBvcnRzZ2VidW5kZW4gc2Vpbi4KKworR3J1bmRzYWV0emxpY2gga2FubiBlaW5lIEhlaWxzdGVsbGUgbmF0dWVybGljaCBhdWNoIFNjaGFkZW4gaW4gZWluZW0gU3BpZWxlcgordmVydXJzYWNoZW4uIERhcyBtYWNodCBkYW5uIFNpbm4sIHdlbm4gZXIgei5CLiBkZXIgLSBmdWVyIGRpZXNlIEhlaWxzdGVsbGUgLQorJ2ZhbHNjaGVuJyBHaWxkZSBvZGVyIFJhc3NlIGFuZ2Vob2VydC4gRGFiZWkgTVVTUyBmdWVyIGRlbiBTcGllbGVyIGFiZXIKK3ZvcmhlciBkZXV0bGljaCBlcmtlbm5iYXIgZ2V3ZXNlbiBzZWluLCBkYXNzIGRpZXNlICdIZWlsc3RlbGxlJyBmdWVyIGlobgorbmljaHQgZ2VlaWduZXQgaXN0LgorCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTcGV6aWZpc2NoZXM6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKioqKioqKioqKioKKworQmVpIGplZGVyIEZvcm0gdm9uIEhlaWx1bmcgTVVTUyAiZWF0X2Zvb2QiIChiZWkgRXNzZW4pIG9kZXIgImRyaW5rX3NvZnQiIChiZWkKK1RyaW5rZW4pIHVuZCBnZ2YuICJkcmlua19hbGNvaG9sIiB2ZXJ3ZW5kZXQgd2VyZGVuISBEaWVzZSBGdW5rdGlvbmVuIHNvcmdlbgorZnVlciBlaW5lbiB1bmtvbXBsaXppZXJ0ZW4gQWJsYXVmIGRlciBIZWlsdW5nLCBkYSBzaWUgcHJ1ZWZlbiwgb2IgZGVyIFNwaWVsZXIKK25vY2ggZ2VudWVnZW5kIFRhbmtrYXBheml0YWV0ZW4gaGF0IHVuZCB3ZW5uIGphLCBkaWUgZW50c3ByZWNoZW5kZW4gUHJvcGVydGllcworKFBfRFJJTkssIFBfRk9PRCBvZGVyIFBfQUxDT0hPTCkgYXV0b21hdGlzY2ggcmF1ZnNldHplbi4KKworImRyaW5rX2FsY29ob2wiIGlzdCBpbiBkaWVzZW0gWnVzYW1tZW5oYW5nIGJlc29uZGVycyB3aWNodGlnLCBkYSBlcyBhdWYgZWluZW4KK2V2dGwuIHZvcmhhbmRlbmVuIFNhdWZza2lsbCBwcnVlZnQhCisKK0RpZSBIZWlsdW5nIHNlbGJlciBtdXNzIGRhbm4gYWJlciBub2NoIHVlYmVyICJoZWFsX3NlbGYiLCAicmVzdG9yZV9oaXRfcG9pbnRzIiwKKyJyZXN0b3JlX3NwZWxsX3BvaW50cyIsICJidWZmZXJfaHAiIG9kZXIgImJ1ZmZlcl9zcCIgZ2VzY2hlaGVuIQorCitPcnRzZ2VidW5kZW5lIEhlaWx1bmc6CistLS0tLS0tLS0tLS0tLS0tLS0tLS0KK0tuZWlwZW46IEhpZXIgaXN0IGtsYXIsIGRhc3MsIGplIGhvZWhlciBkaWUgSGVpbHVuZyBpc3QsIHVtc28gdGV1cmVyIGRpZQorICAgICAgICAgSGVpbHVuZyBzZWluIG11c3MuIEF1c3NlcmRlbSBNVVNTICJidWZmZXJfaHAiIHZlcndlbmRldCB3ZXJkZW4uCisgICAgICAgICBBdXNuYWhtZSBoaWVydm9uIGlzdCBkaWUgS25laXBlIGJlaSBkZW4gRWlzdHJvbGxlbiBpbSBXYXJvay4KKyAgICAgICAgIE1pdCBkZW0gUHVidG9vbCAoIi9vYmovdG9vbHMvcHVidG9vbCIpIGthbm4gbWFuIHBydWVmZW4sIG9iIGRpZQorICAgICAgICAgV2VydGUgZGVyIEtuZWlwZSBpbiBPcmRudW5nIGdlaGVuLgorCitSYWV1bWU6ICBFcyBnaWJ0IHZpZWxlIG9ydHNnZWJ1bmRlbmUgSGVpbHVuZ3NzdGVsbGVuIGltIE1HLCB3ZWxjaGUgaW4gZXJzdGVyCisgICAgICAgICBMaW5pZSBkYXp1IGRhIHNpbmQsIGRlbiBTcGllbGVybiAqaW4gZGllc2VtIEdlYmlldCogZWluZSBUYW5rbW9lZy0KKyAgICAgICAgIGxpY2hrZWl0IHp1ciBWZXJmdWVndW5nIHp1IHN0ZWxsZW4gKC0+IERyYWtvbmllbikuIEhpZXJmdWVyIHNvbGx0ZQorICAgICAgICAgbWFuIGRpZSBQcm9wZXJ0eSBQX0xBU1RfWFAgYmVudXR6ZW4sIHdhcyBhYmVyIGFsbGVyZGluZ3Mga2VpbmUKKyAgICAgICAgIFBmbGljaHQgaXN0LCB3ZW5uIG1hbiBtb2VjaHRlLCBkYXNzIGF1Y2ggImdlYmlldHNmcmVtZGUiIFNwaWVsZXIKKyAgICAgICAgIGhpZXIgdGFua2VuIGdlaGVuIGtvZW5uZW4gKC0+IFNTUCkuIERhbm4gd2llZGVydW0gc29sbHRlIG1hbiBhYmVyCisgICAgICAgICBkYXJhdWYgYWNodGVuLCBkYXNzIHNpZSBuaWNodCB6dSBndXQgc2luZCwgdS5VLiBzY2h3ZXIgenUgZXJyZWljaGVuCisgICAgICAgICBzaW5kICgtPiBUJ2Vtb25nKSwgQmxvY2ttb25zdGVyIGRlbiBXZWcgdmVyc3BlcnJlbiAoLT4gU1NQKSBldGMuCisKKyAgICAgICAgIEluIGplZGVtIEZhbGwgYWJlciBNVVNTIGVpbmUgQmVncmVuenVuZyBkZXIgVGFua21vZWdsaWNoa2VpdCBzaWNoZXItCisgICAgICAgICBnZXN0ZWxsdCB3ZXJkZW47IGVudHdlZGVyIGVyZm9sZ3QgZGllIExpbWl0aWVydW5nIGR1cmNoIFJlc2V0IG9kZXIKKyAgICAgICAgIGR1cmNoIFplaXRiZWdyZW56dW5nICgtPiBjaGVja19hbmRfdXBkYXRlX3RpbWVkX2tleSkuCisKKyAgICAgICAgICJlYXRfZm9vZCIgYnp3LiAiZHJpbmtfc29mdCIgTVVTUyBiZWkgZGVuIFRhbmtlbiBnZXNldHp0IHdlcmRlbiwgZGllCisgICAgICAgICBkZW4gU3BpZWxlciBkYXJhdWYgc2NobGllc3NlbiBsYXNzZW4sIE5haHJ1bmcgYXVmZ2Vub21tZW4genUgaGFiZW4KKyAgICAgICAgICgtPiAiaXNzIGJlZXJlbiIsICJ0cmlua2Ugc2NobGVpbSIsIGV0Yy4pLgorICAgICAgICAgQmVpIGFsbGVuIGFuZGVyZW4gKC0+ICJyaWVjaGUgYmx1bWUiLCBldGMuKSBzb2xsdGVuIFF1YWxpdGFldCB1bmQKKyAgICAgICAgIFF1YW50aXRhZXQgaW0gUmFobWVuIGJsZWliZW4uCisgICAgICAgICBEaWVzZSBvcnRzZ2VidW5kZW5lbiBIZWlsdW5nZW4gZHVlcmZlbiBJbnN0YW50LVRhbmtlbiBzZWluLgorCitUcmFnYmFyZSBIZWlsdW5nOgorLS0tLS0tLS0tLS0tLS0tLQorVHJhZ2JhcmUgSGVpbHVuZyBzb2xsdGUgbmFjaCBtYXggNSBSZXNldHMgdmVyZGVyYmVuLCBkaWUgV2lya3VuZyB2ZXJtaW5kZXJuCitvZGVyIHZlcmxvcmVuIGdlaGVuLiBTaWUgc29sbHRlIG5pY2h0IGJlbGllYmlnIGltIFNwaWVsZXIgb2RlciBhbmRlcnN3bworaG9ydGJhciBzZWluLiBFaW5lIGJlZ3Jlbnp0ZSBBbnphaGwgcHJvIFJlc2V0IGtvbW10IGhpZXJiZWkgYXVjaCBpbW1lciBndXQKKyhndXRlIEJlaXNwaWVsZSBoaWVyZnVlcjogRHJvcHMgdm9uIFR3aW5naSwgSGVpbGJsYWV0dGVyIHZvbiBab29rKS4KKworUmljaHR3ZXJ0ZSBmdWVyIEF1ZmxvZXN1bmcgb2RlciBXaXJrdW5nc21pbmRlcnVuZyB2b24gdHJhZ2JhcmVyIEhlaWx1bmc6CisKKyAgICAgICAgICAgICAgICAgICAgICAgIEhlaWx1bmcgICAgICAgICBSZXNldC1aZWl0CisgICAgICAgICAgICAgICAgICAgICAgICAgID4gMjAwICAgIDogICAgIDMwLSA2MCBtaW4KKyAgICAgICAgICAgICAgICAgICAgICAxNTAgLSAyMDAgICAgOiAgICAgNjAtMTIwIG1pbgorICAgICAgICAgICAgICAgICAgICAgIDEwMCAtIDE1MCAgICA6ICAgICA5MC0xODAgbWluCisgICAgICAgICAgICAgICAgICAgICAgIDUwIC0gMTAwICAgIDogICAgMTIwLTI0MCBtaW4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgPCAgNTAgICAgOiAgICAxNTAtMzAwIG1pbgorCitEaWVzZSBSaWNodHdlcnRlIHNpbmQgZ3V0ZSBBbmhhbHRzcHVua3RlLCBrb2VubmVuIGFiZXIgYmVpIEJlZGFyZiBtaXQgZGVtCitFcnptYWdpZXIgZGVyIEhlaWx1bmdzLUJhbGFuY2UgaW5kaXZpZHVlbGwgYWJnZXN0aW1tdCB3ZXJkZW4uCisKKydXaXJrdW5nc21pbmRlcnVuZycgaXN0IGhpZXJiZWkgaW0gU2lubmUgdm9uICpkZXV0bGljaCogZ2VtZWludC4KKworKioqIE5FVSAtIE5FVSAtIE5FVSAtIE5FVSAtIE5FVSAtIE5FVSAtIE5FVSAtIE5FVSAtIE5FVSAtIE5FVSAtIE5FVSAtIE5FVSAgKioqCisKKyAgIFRyYWdiYXJlIEhlaWx1bmdlbiwgZGllIGltIHdlaXRlc3RlbiBTaW5uZSBhdXMgTGViZW5zbWl0dGVsbiBiZXN0ZWhlbiwKKyAgZHVlcmZlbiBuaWNodCBtZWhyIGluc3RhbnQgc2Vpbiwgc29uZGVybiBNVUVTU0VOICJidWZmZXJfaHAvc3AiIHZlcndlbmRlbiEKKworKioqIE5FVSAtIE5FVSAtIE5FVSAtIE5FVSAtIE5FVSAtIE5FVSAtIE5FVSAtIE5FVSAtIE5FVSAtIE5FVSAtIE5FVSAtIE5FVSAgKioqCisKK0JlaSB0cmFnYmFyZW4gSGVpbHVuZ3Ntb2VnbGljaGtlaXRlbiwgZGllIHdlZGVyIGF1cyBFc3NiYXJlbSwgbm9jaCBhdXMgVHJpbmstCitiYXJlbSBiZXN0ZWh0IChiZWkgZGVuZW4gZXMgYWxzbyBuaWNodCBsb2dpc2NoIHdhZXJlLCAiYnVmZmVyX2hwL3NwIiB6dQorYmVudXR6ZW4pLCBNVVNTICJjaGVja19hbmRfdXBkYXRlX3RpbWVkX2tleSIgdmVyd2VuZGV0IHdlcmRlbiwgZGEgc2llIHNvbnN0IHp1Citrcml0aXNjaCB3ZXJkZW4uIERhbm4gZGFyZiBlcyBuYXR1ZXJsaWNoIGF1Y2ggc293YXMgZ2ViZW4uIEJlaXNwaWVsc3dlaXNlIGthbm4KK21hbiBzb2xjaGUgT2JqZWt0ZSBndXQgYWxzIChNaW5pLSlRdWVzdGJlbG9obnVuZyBpbnRlZ3JpZXJlbi4KKworSGllciBnaWx0OiBKZSBob2VoZXIgZGllIEhlaWx1bmcsIHVtIHNvIGhvZWhlciBkaWUgWmVpdGRhdWVyLCBuYWNoIGRlciBkZXIKK1NwaWVsZXIgZGllc2UgTW9lZ2xpY2hrZWl0IHdpZWRlciBpbiBBbnNwcnVjaCBuZWhtZW4gZGFyZi4KKyhSaWNodHdlcnRlOiBoZWFsX3NlbGYoNTApOiB+IDE4MDAgc2VjLiwgaGVhbF9zZWxmKDE1MCk6IH4gMzYwMCBzZWMuKQorCitBdWNoIGJlaSBkaWVzZW4gT2JqZWt0ZW4gaXN0IGVzIGVpbiBNVVNTLCBkaWUgSGVpbHVuZ3Ntb2VnbGljaGtlaXRlbiBlaW5tYWwKK2Vyc2Nob2VwZmVuIHp1IGxhc3Nlbiwgc2llIGFsc28gZW50d2VkZXIgJ3ZlcmRlcmJlbicgb2RlciBzaWNoIHZlcmFic2NoaWVkZW4KKygtPiBEc2NoaW5uKSB6dSBsYXNzZW4gb2RlciBzaWUgJ3N0aWxsZWdlbicsIGRhIHNpZSBkYW5uIGVpbmZhY2ggZWluZSB6ZWl0bGFuZworUnVoZSBicmF1Y2hlbiwgdW0gc2ljaCBuZXUgJ2F1Znp1bGFkZW4nLgorCitRdWVzdGJlbG9obnVuZ2VuOgorLS0tLS0tLS0tLS0tLS0tLQorRGllc2UgT2JqZWt0ZSBzdGVsbGVuIGVpbmUgQXVzbmFobWUgdW50ZXIgZGVuIHRyYWdiYXJlbiBIZWlsdW5nZW4gZGFyLiBIaWVyCitrYW5uIGF1ZiAiYnVmZmVyX2hwL3NwIiB2ZXJ6aWNodGV0IHdlcmRlbjsgZGFmdWVyIG11ZXNzZW4gYWJlciBhbmRlcmUgUmVnZWxuCitiZWFjaHRldCB3ZXJkZW46IGRhcyBPYmpla3QgZGFyZiBwcm8gUmVzZXQgbnVyIGJlZ3Jlbnp0IGhlaWxlbiBiencuIG5hY2ggZGVyCitBbndlbmR1bmcgc2ljaCBzZWxiZXIgemVyc3RvZXJlbiAoLT4gZ2VsYmVyIFN0ZWluKS4gT2RlciBlcyBtdXNzIHZvcmhlciBlaW5lCitlcmhlYmxpY2hlIE1lbmdlIExQL0tQIGludmVzdGllcnQgd2VyZGVuLCB1bSBkYXMgT2JqZWt0IHp1IG51dHplbgorKC0+IEluZmVybm9ibG9jaykuCisKK0VudHRhbmtlbjoKKy0tLS0tLS0tLQorRGllIE1vZWdsaWNoa2VpdCB6dXIgRW50dGFua3VuZyBNVVNTIGFuIGVpbmVuIGZlc3RlbiBPcnQgZ2VidW5kZW4gc2Vpbi4gU2llCitkYXJmIGFsc28gbmljaHQgZHVyY2ggdHJhZ2JhcmUgT2JqZWt0ZSBoZXJ2b3JnZXJ1ZmVuIHdlcmRlbiBrb2VubmVuLiBFaW4KK0JlaXNwaWVsIGhpZXJmdWVyIHNpbmQgZGllIFRvaWxldHRlbiB2b24gV3VyemVsIGluIFdpbGhlbG1zYnVyZyBvZGVyIGRpZQorRmxlaXNjaHJlc3RlIGluIGRlciBTU1AuIFdlaXRlcmVzIGhpZXJ6dSBzaWVoZSAtPiAibWFuIGVudHRhbmtlbiIuCisKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIExvZ2lzY2hlczoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoqKioqKioqKgorCitKZWRlICghKSBNb2VnbGljaGtlaXQgenVyIEhlaWx1bmcsIGFiZ2VzZWhlbiB2b24gcmVndWxhZXJlbiBLbmVpcGVuLCBtdXNzIGRlbQorenVzdGFlbmRpZ2VuIE1hZ2llciBmdWVyIEhlaWx1bmdzLUJhbGFuY2UgZ2VtZWxkZXQgdW5kIHZvbiBkaWVzZW0gZ2VuZWhtaWd0Cit3ZXJkZW4uIFdlciBkaWVzZW4gUG9zdGVuIG1vbWVudGFuIGlubmVoYXQsIGthbm4gZGVtIE1haWxBbGlhcworImhlaWx1bmdzX2JhbGFuY2UiIGVudG5vbW1lbiB3ZXJkZW4uCisKK1NpZWhlIGF1Y2g6CistLS0tLS0tLS0tCisgICAgIFRhbmtlbjogICAgY29uc3VtZSwgZHJpbmtfYWxjb2hvbCwgZWF0X2Zvb2QsIGRyaW5rX3NvZnQKKyAgICAgSGVpbHVuZzogICBoZWFsX3NlbGYsIHJlc3RvcmVfc3BlbGxfcG9pbnRzLCByZXN0b3JlX2hpdF9wb2ludHMsIAorICAgICAgICAgICAgICAgIGJ1ZmZlcl9ocCwgYnVmZmVyX3NwCisgICAgIFRpbWluZzogICAgY2hlY2tfYW5kX3VwZGF0ZV90aW1lZF9rZXkKKyAgICAgRW50dGFua2VuOiBkZWZ1ZWxfZHJpbmssIGRlZnVlbF9mb29kCisgICAgIFByb3BzOiAgICAgUF9EUklOSywgUF9GT09ELCBQX0FMQ09IT0wsIFBfU1AsIFBfSFAsCisgICAgICAgICAgICAgICAgUF9ERUZVRUxfVElNRV9EUklOSworICAgICBLb256ZXB0ZTogIGVudHRhbmtlbiwgZm9vZAorCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisxNy4wOS4yMDEwLCBaZXNzdHJhCmRpZmYgLS1naXQgYS9kb2Mvd2l6L2thbXBmb2JqZWt0ZSBiL2RvYy93aXova2FtcGZvYmpla3RlCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjM5ZDZlMjgKLS0tIC9kZXYvbnVsbAorKysgYi9kb2Mvd2l6L2thbXBmb2JqZWt0ZQpAQCAtMCwwICsxLDYwIEBACisgU09OU1RJR0UgS0FNUEZPQkpFS1RFOgorCisgICAgSGllcnp1IHphZWhsZW4gYWxsZSBTYWNoZW4sIGRpZSBpcmdlbmRlaW5lbiBFaW5mbHVzcyBhdWYgZGVuIEthbXBmIG5laG1lbgorICAgIHVuZCB3ZWRlciBgL3N0ZC93ZWFwb24uYycgbm9jaCBgL3N0ZC9hcm1vdXIuYycgc2luZC4gQWxzbyBkaWUgc29nZW5hbm50ZQorICAgIEFydGlsbGVyaWUsIEVpc3N0YWIgdW5kIGFydHZlcndhbmR0ZXMsIFd1cmZzdGVybmUsIFBhcmFzdGVpbmUsIEJ1bWlzLi4uCisgICAgc293aWUgc2FlbXRsaWNoZSB0cmFnYmFyZW4gSGVpbG1vZWdsaWNoa2VpdGVuIHVuZCB1bnRlcnN0dWV0emVuZGUgTlBDLgorCisgICAgUHJpbnppcGllbGwgc2luZCBhbGxlIGRpZXNlIFNhY2hlbiBnZW5laG1pZ3VuZ3NwZmxpY2h0aWcuCisgICAgQXV0by1TZWxic3RmYWhyZXIsIGFsc28gU2FjaGVuLCBkaWUgb2huZSBFaW5ncmlmZiBkZXMgU3BpZWxlcnMgYWdpZXJlbiwKKyAgICBzaW5kIHVuZXJ3dWVuc2NodCB1bmQgc29sbHRlbiB2ZXJtaWVkZW4gd2VyZGVuLiBTb3JyeSBmdWVyIGRpZQorICAgIExhZ2dlcGxhZ3Rlbi4uLgorCisgICAgS2FtcGZvYmpla3RlIHNvbGx0ZW4gUF9BVFRBQ0tfQlVTWSBzZXR6ZW4gdW5kIGF1Y2ggdm9yIGRlciBBbndlbmR1bmcKKyAgICBhYmZyYWdlbiwgZGFtaXQgc2llIG5pY2h0IHVuYmVncmVuenQgaGludGVyZWluYW5kZXIgZ2VudXR6dCB3ZXJkZW4KKyAgICBrb2VubmVuLiBNYWdpc2NoZSBTYWNoZW4gc29sbHRlbiBlbnR3ZWRlciBhdWZnZWxhZGVuIHdlcmRlbiBtdWVzc2VuIG9kZXIKKyAgICBpaHJlIG1hZ2lzY2hlIEVuZXJnaWUgdmVybGllcmVuLCBkYW1pdCBzaWUgbmljaHQgdW5lbmRsaWNoIGhhbHRiYXIgc2luZC4KKyAgICBBdXNzZXJkZW0gaGF0IE1hZ2llIG5vcm1hbGVyd2Vpc2UgYXVjaCB1bmVyd3VlbnNjaHRlIE5lYmVud2lya3VuZ2VuLiBEaWUKKyAgICBTcGllbGVyIHNvbGxlbiBkaWUgbW9lZ2xpY2hlbiBWb3J0ZWlsZSBnZWdlbiBOYWNodGVpbGUgb2RlciBOZWJlbndpcmt1bmdlbgorICAgIGRlcyBHZWdlbnN0YW5kcyBhYndhZWdlbi4gQXVjaCBiZWkgZGllc2VuIE9iamVrdGVuICptdXNzKiBQX0lORk8gZ2VzZXR6dAorICAgIHdlcmRlbiwgdW0gZWluZSBCZWdydWVuZHVuZyBmdWVyIGRpZSBiZXNvbmRlcmUgV2lya3VuZyB1bmQgei5CLiBlaW5lbgorICAgIEhpbndlaXMgYXVmIGRpZSBCZW51dHp1bmcgenUgbGllZmVybi4KKyAgICBTaWUgc29sbHRlbiBrZWluZXNmYWxscyBrYWV1ZmxpY2ggZXJ3b3JiZW4gd2VyZGVuIGtvZW5uZW4uCisKKyAgICBUcmFnYmFyZSBIZWlsc3RlbGxlbiBzb2xsdGVuIGFldXNzZXJzdCBzcGFlcmxpY2ggdmVyd2VuZGV0IHdlcmRlbi4gSGFuZGVsdAorICAgIGVzIHNpY2ggdW0gaXJnZW5kZWluZSBGb3JtIHZvbiBGcmVzc2FsaWVuIChCcm90LCBQZmlyc2ljaCwKKyAgICBTY2huZWxsaGFlcnRlci4uLikgc28gbXVzcyBQX0ZPT0Qgb2RlciBQX0RSSU5LIHVuZCBldnRsLiBQX0FMQ09IT0wgZ2VzZXR6dAorICAgIHdlcmRlbi4gQW5zb25zdGVuIHNvbGx0ZW4gc29sY2hlIERpbmdlIHdlbmlnc3RlbnMgaXJnZW5kd2VsY2hlCisgICAgQXVzd2lya3VuZ2VuIGF1ZiBkZW4gU3BpZWxlciBoYWJlbiBhdXNzZXIgZGVyIEhlaWx1bmcuIEVpbiBzb2dlbmFubnRlcworICAgICJSZXN0cmlzaWtvIiB3YWVyZSBuaWNodCB2ZXJrZWhydC4uLgorCisgICAgU2llIHNvbGx0ZW4gbmllbWFscyB1bmJlZ3Jlbnp0IGVyd29yYmVuIHdlcmRlbiBrb2VubmVuLCBzY2hvbiBnYXIgbmljaHQKKyAgICBrYWV1ZmxpY2ghIEF1c3NlcmRlbSBpc3QgZWluZSBnZXdpc3NlIFZlcmZhbGxzemVpdCBzZWhyIHNpbm52b2xsIHVuZAorICAgIGVyaG9laHQgZGllIENoYW5jZW4gYXVmIEdlbmVobWlndW5nLiBSaWNodHdlcnRlOiBlcmhvZWh0ZXMgUmlzaWtvIG5hY2ggMS4KKyAgICBSZXNldCwgdW5icmF1Y2hiYXIgbmFjaCAyLTMgUmVzZXRzLgorCisgICAgT2JqZWt0ZSwgZGllIEF1c2t1bmZ0IHVlYmVyIGVpbi0gdW5kL29kZXIgYXVzZ2VoZW5kZSBTY2hhZWRlbiBnZWJlbiwgCisgICAgc2luZCBnZW5laG1pZ3VuZ3NwZmxpY2h0aWcuIFNvbGNoZSBPYmpla3RlIHNvbGx0ZW4gbmFjaCBNb2VnbGljaGtlaXQKKyAgICBlaW5lIFdhZmZlIG9kZXIgS2xlaWR1bmdzc3R1ZWNrIC0gZGllcyBqZWRvY2ggbmljaHQgQVRfTUlTQyAtIHNlaW4uCisgICAgRGFzcyBzb2xjaGUgT2JqZWt0ZSBhdWNoIHVlYmVyIEx1ZWNrZW4gaW4gZGVyIEFuZ2FiZSBkZXIgU2NoYWVkZW4gdW5kCisgICAgTmFjaHRlaWxlIHZlcmZ1ZWdlbiBzb2xsdGVuLCBpc3QgZWlnZW50bGljaCBrbGFyLiAKKyAgICBTb2xjaGUgTmFjaHRlaWxlIGxpZXNzZW4gc2ljaCB1ZWJlciBlaW5lIE1pbmRlc3QtU2NoYWRlbnNob2VoZSBvZGVyCisgICAgcmFuZG9tIHJlYWxpc2llcmVuLiBJbmZvcm1hdGlvbmVuIHVlYmVyIG1laHJlcmUgU2NoYWRlbnN0eXBlbiBkdXJjaCAKKyAgICBlaW4gdW5kIGRhcyBzZWxiZSBPYmpla3Qgc2luZCBuaWNodCBlcnd1ZW5zY2h0LgorCisgICAgRWJlbmZhbGxzIGdlbmVobWlndW5nc3BmbGljaHRpZyBzaW5kIGFsbGUgT2JqZWt0ZSwgZGllIGluIGlyZ2VuZCBlaW5lcgorICAgIFdlaXNlIEVpbmZsdXNzIGF1ZiBzcGV6aWZpc2NoZSBHaWxkZW5mYWVoaWdrZWl0ZW4gb2RlciBCZXNvbmRlcmhlaXRlbgorICAgIG5laG1lbi4gSGllcnp1IHNvbGx0ZSBuZWJlbiBkZXIgQmFsYW5jZSBhdWNoIG5vY2ggZGVyIEdpbGRlbm1hZ2llcgorICAgIGJlZnJhZ3Qgd2VyZGVuLiAKKyAgICAKKyAgICBIaW5zaWNodGxpY2ggS29tcG9uZW50ZW4gZGVyIFphdWJlcmVyIGlzdCBkZXIgR2lsZGVuY2hlZiBkZXIKKyAgICBBbnNwcmVjaHBhcnRuZXIuCisgICAgCisgU0lFSEUgQVVDSAorCisgICAgIGJhbGFuY2UsIHJ1ZXN0dW5nZW4sIHdhZmZlbiwgZmVybndhZmZlbiwgdW5pcXVlcywgbnBjcywgb2JqZWN0cywKKyAgICAgYXR0cmlidXRzdmVyYWVuZGVydW5nZW4sIHJlc2lzdGVuemVuLCBncmVuendlcnRlLCBhcnRpbGxlcmllCisKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIExFVFpURSBBZU5ERVJVTkc6CisgICAgU28sIDI2LjAxLjIwMDMsIDE4OjUwOjAwIHZvbiBIdW1uaQpkaWZmIC0tZ2l0IGEvZG9jL3dpei9rYXR6ZW5rcmllZ2VyLnRlc3RzcGllbGVyIGIvZG9jL3dpei9rYXR6ZW5rcmllZ2VyLnRlc3RzcGllbGVyCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjMzYzJhYzkKLS0tIC9kZXYvbnVsbAorKysgYi9kb2Mvd2l6L2thdHplbmtyaWVnZXIudGVzdHNwaWVsZXIKQEAgLTAsMCArMSwzNyBAQAorTWFnaWVyLU1hbnBhZ2UKKworR2lsZGVudGVzdGllICJLYXR6ZW5rcmllZ2VyIi4KKworCitFcyBnaWJ0IGluIGRlciBLYXR6ZW5rcmllZ2VyZ2lsZGUgZWluZSBGdW5rdGlvbiwgbWl0IGRlciBtYW4gZWluZW4KK1Rlc3RzcGllbGVyIGVyc2NoYWZmZW4ga2Fubiwgd2VsY2hlciBkZXIgS2F0emVua3JpZWdlcmdpbGRlIGFuZ2Vob2VydC4KK0RpZSBGdW5rdGlvbiBoZWlzc3QgIm1ha2VfdGVzdHBsYXllciIgdW5kIGVyd2FydGV0IGFscyBlaW56aWdlbiBQYXJhbWV0ZXIKK2VpbiBTcGllbGVyLU9iamVrdC4KKworCisKK0RpZSBGdW5rdGlvbiB2ZXJoYWVsdCBzaWNoIHdpZSBmb2xndC4KKworRGVyIFNwaWVsZXIgbXVzcyBlaW4gVGVzdHNwaWVsZXIgc2Vpbi4KK0RlciBTcGllbGVyIHNvbGx0ZSBpbiBkaWUgR2lsZGUgZWludHJldGVuIGtvZW5uZW4uCitEZXIgU3BpZWxlciBsZXJudCBhbGxlIFNwZWxscyB1bmQgU2tpbGxzIGRlciBHaWxkZSwgZGllIGVyIGF1ZiBzZWluZW0KK2RlcnplaXRpZ2VuIFNwaWVsZXJsZXZlbCBsZXJuZW4ga2Fubi4KK0RpZSBTcGVsbHMgaGFiZW4gamUgZGVuIGhvZWNoc3Rtb2VnbGljaGVuIFNraWxsd2VydCwgZGVuIGRlciBTcGllbGVyIGF1Zgorc2VpbmVtIExldmVsIGVycmVpY2hlbiBrYW5uLCBlcyBzZWkgZGVubiwgZXIga2FubnRlIGRlbiBTcGVsbCB6dXZvciBzY2hvbi4KK0Rhbm4gYmxlaWJ0IGRlciBTcGVsbCB1bnZlcmFlbmRlcnQuCisKKworCitVbSBlaW5lbiBUZXN0c3BpZWxlciB6dSBlcnNjaGFmZmVuLCBnZWh0IG1hbiB3aWUgZm9sZ3Qgdm9yLgorCitNYW4gbmVobWUgZWluZW4gKGVpZ2VuZW4hKSBUZXN0c3BpZWxlciwgei5CLiAiYmFtYnMiLgorTWFuIHNldHplIGlobSBkYXMgZ2V3dWVuc2NodGUgU3BpZWxlcmxldmVsLCB6LkIuIDExCisgIHhjYWxsIGJhbWJzLT5TZXRQcm9wKFBfTEVWRUwsIDExKTsKK01hbiBnZWhlIGluIGRlbiBHaWxkZW5yYXVtIGRlciBLYXR6ZW5rcmllZ2VyLgorICBnb3RvIC9naWxkZW4va2F0emVua3JpZWdlcgorTWFuIHJ1ZmUgZGllIEZ1bmt0aW9uIGF1ZiwgZGllIGVpbmVuIEthdHplbmtyaWVnZXIgYXVzIGRlbSBUZXN0c3BpZWxlciBtYWNodC4KKyAgeGNhbGwgJGgtPm1ha2VfdGVzdHBsYXllcihmaW5kX3BsYXllcigiYmFtYnMiKSk7CitEZXIgVGVzdHNwaWVsZXIgc29sbHRlIG51biBLYXR6ZW5rcmllZ2VyIHNlaW4uCisKKyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorTGV0enRlIEFlbmRlcnVuZzogVHVlIEphbiAgNyAyMzowMzoxNiAyMDAzIGR1cmNoIEJhbWJpClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZG9jL3dpei9rbmV0ZSBiL2RvYy93aXova25ldGUKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZTRkMWYzZQotLS0gL2Rldi9udWxsCisrKyBiL2RvYy93aXova25ldGUKQEAgLTAsMCArMSw4MSBAQAorTkFNRToKKwkJKioqIEtORVRFICoqKgorCitCRVNDSFJFSUJVTkc6CisJRGllIEtuZXRlIGlzdCBlaW4gaW4gTFBDIGdlc2NocmllYmVuZXIgTGlzcC1JbnRlcnByZXRlci4gRGllc2VyIGhhdAorCWRpZSBiZXNvbmRlcmUgRWlnZW5zY2hhZnQsIGRpZSBMaXNwLVF1ZWxsZW4gZGlyZWt0IGluIGRlbiB2b20gCisJQW15bGFhciBHYW1lRHJpdmVyIGFuZ2Vib3RlbmVuIGNsb3N1cmVzIHp1IHVlYmVyc2V0emVuLiBEYWR1cmNoIGlzdAorCW1pdCBkZXIgS25ldGUgYWxsZXMgZGFzIG1vZWdsaWNoLCB3YXMgYXVjaCBtaXQgTFBDIG1vZWdsaWNoIGlzdC4KKwlFcyBpc3QgZWluIGdlbmVyaXNjaGVzLCBmcmVpIHByb2dyYW1taWVyYmFyZXMgSGlsZnNtaXR0ZWwuCisKKwlEaWUgS25ldGUgYmVmaW5kZXQgc2ljaCB1bnRlcjogIi9vYmovdG9vbHMvbGlzcCIKKworRlVOS1RJT05TQkVTQ0hSRUlCVU5HOgorCURpZSBLbmV0ZSBrYW5uIGltIFByaW56aXAgZmFzdCBhbGxlcywgd2FzIGVpbiBlaW5mYWNoZXIgTGlzcC0KKwlJbnRlcnByZXRlciBrYW5uLiBBdXNuYWhtZW4gc2luZCBUdXBlbCAoQnNwOiAoMSAuIDIpKSwgd2VsY2hlIG5pY2h0CisJaW1wbGVtZW50aWVydCBzaW5kLiBEaWUgR3J1bmRsZWdlbmRlbiBGdW5rdGlvbmVuLCB3aWUgZGVmaW5lLCBzZXRxLAorCWNvbnMsIGNkciwgY2FyIGV0YyB3ZXJkZW4gYmVpbSBMYWRlbiBkZXIgS25ldGUgYW5nZXplaWd0LiBKZSBuYWNoCisJWmVpdCwgd2VyZGVuIGV2ZW50dWVsbGUgYXVjaCB3ZWl0ZXJlIFN0YW5kYXJkZnVua3Rpb25lbiBoaW56dS0KKwlrb21tZW4sIHVtIGRpZSBLbmV0ZSBtb2VnbGljaHN0IGNvbW1vbi1saXNwIGtvbXBhdGliZWwgenUgbWFjaGVuLgorCitCRU5VVFpVTkc6CisJWnUgYWxsZXJlcnN0IHNvbGx0ZSBtYW4gd2lzc2VuLCBkYXNzIGRpZXMgaGllciBrZWluZSBFaW5mdWVocnVuZyBpbgorCUxpc3AgaXN0IG9kZXIgc2VpbiBzb2xsISBEaWUgd2ljaHRpZ3N0ZW4gTWVya21hbCBkZXIgS25ldGUgd2VyZGVuCisJYXVmZ2VmdWVocnQgYW4gZWluaWdlbiBrbGVpbmVuIEJlaXNwaWVsZW4uIFdlciBMaXNwIGtlbm5lbmxlcm5lbgorCW1vZWNodGUga2FubiBkaWVzIG1pdCBkZW4gaGFuZGVsc3VlYmxpY2hlbiBCdWVjaGVybiB0dW4uCisKKwlXZXIgZGVubm9jaCBiYXN0ZWxuIG1vZWNodGU6IExpc3AgaXN0IGVpbmUgU3ByYWNoZSBpbiBQcmVmaXhub3RhdGlvbiwKKwlkLmguIGRlciBGdW5rdGlvbnNuYW1lIHN0ZWh0IGltbWVyIGFscyBlcnN0ZXMgdW5kIGRhbm4ga29tbWVuIGRpZQorCUFyZ3VtZW50ZS4gRWluIEF1c2RydWNrIGlzdCBtaXQgZGVuIGlobiB1bWdlYmVuZGVuIEtsYW1tZXJuIGtvbXBsZXR0LgorCSAgQmVpc3BpZWw6ICgrIDEgMSkgOzs7IGVycmVjaG5ldCBkaWUgU3VtbWUgYXVzIDEgdW5kIDEKKwlTb2xjaGUgS2xhbW1lcmF1c2RydWVja2Uga29lbm5lbiBiZWxpZWJpZyBnZXNjaGFjaHRlbHQgd2VyZGVuLgorCSAgQmVpc3BpZWw6ICgrIDEgKCsgKCsgMSAxKSAxKSkKKworCUVzIHN0ZWhlbiBhbGxlIGVmdW5zLCBzb3dpZSBlaW5pZ2UgbGZ1bnMgenVyIFZlcmZ1ZWd1bmchIFp1IGRlbiBlZnVucworCWdlaG9lcmVuIGF1Y2ggKywtLCosLywlLCEsWyxbPCxbPC4uIGV0YywgYWxzbyBhbGxlIE9wZXJhdG9yZW4gdm9uIExQQy4KKworCURpZSBLbmV0ZSBoYXQgendlaSBNb2RpOgorCQlhKSBMYWRlbiB2b24gTGlzcCBhdXMgZWluZXIgRGF0ZWkKKwkJYikgVmVyYXJiZWl0ZW4gdm9uIEVpbmdhYmVuIGF1cyBkZXIgS29tbWFuZG96ZWlsZQorCisJWnUgYSkKKwkgIE1pdCBkZXIgRnVua3Rpb24gImxvYWQiIGtvZW5uZW4gRGF0ZWllbiBlaW5nZWxlc2VuIHVuZCBpbnRlcnByZXRpZXJ0CisJICB3ZXJkZW4uIERpZSBGdW5rdGlvbiBoYXQgbnVyIGVpbiBBcmd1bWVudCwgdW5kIGRhcyBpc3QgZGVyIERhdGVpbmFtZS4KKworCSAgQmVpc3BpZWw6IChsb2FkICIvcGxheWVycy9oYXRlL2xpc3AubCIpCisJCisJWnUgYikKKwkgIFdlbm4gZGllIEtuZXRlIGdlY2xvbmVkIHd1cmRlLCBrb2VubmVuIGplZGVyemVpdCBMaXNwYXVzZHJ1ZWNrZQorCSAgZWluZ2VnZWJlbiB3ZXJkZW4sIHdlbGNoZSBkYW5uIGludGVycHJldGllcnQgd2VyZGVuLiBEYWJlaSBzb2xsdGUKKwkgIGJlYWNodGV0IHdlcmRlbiwgZGFzcyBkaWUgYWV1c3NlcnN0ZSBLbGFtbWVyIG5pY2h0IG5vdHdlbmRpZyBpc3QhCisKKwkgIEJlaXNwaWVsOiAoKyAxICgrIDEgMSkpIGtvZW5udGUgbWFuIGF1Y2ggc2NocmVpYmVuIGFsczoKKwkgICAgICAgICAgICArIDEgKCsgMSAxKQorCisJICBEaWVzIGlzdCB2b3IgYWxsZW0gZGFubiBpbnRlcmVzc2FudCwgd2VubiBtYW4gZGllIE1vZWdsaWNoa2VpdGVuCisJICBkZXIgS25ldGUgYWxzIGFsaWFzLVdlcmt6ZXVnIGluIGJldHJhY2h0IHppZWh0LiBTb21pdCBpc3QgZXMKKwkgIG1vZWdsaWNoLCBlaW5lIEZ1bmt0aW9uIHp1IHNjaHJlaWJlbiB1bmQgZGllc2UgZGFubiB3aWUgZWluIGFsaWFzCisJICB6dSBiZW51dHplbi4KKworCSAgQmVpc3BpZWw6IChkZWZ1biB3aG8gKCkgKHVzZXJzKSkgOzs7IGdpYnQgZGFzIHVzZXJzIGFycmF5IGF1cworCSAgICAgICAgICAgICBKZXR6dCBtdXNzIG51ciBub2NoIHdobyBlaW5nZWdlYmVuIHdlcmRlbiB1bmQgZGFzCisJCSAgICAgYXJyYXkgd2lyZCBhdXNnZWdlYmVuLgorCisJICBEYSBMaXNwIHdlc2VudGxpY2gga29tcGxleGVyZSBBdXNkcnVlY2tlIGVybW9lZ2xpY2h0LCBhbHMgZGVyCisJICBub3JtYWxlIGFsaWFzLUludGVycHJldGVyLCBsaWVnZW4gZGllIFZvcnRlaWxlIGF1ZiBkZXIgSGFuZC4KKworS09ORklHVVJBVElPTjoKKwlEaWUgS25ldGUgbGFlc3N0IHNpY2ggZnVlciBqZWRlbiBOdXR6ZXIga29uZmlndXJpZXJlbiwgaW5kZW0gc2llIGVpbmUKKwlEYXRlaSAiL3BsYXllcnMvPG5hbWU+L2xpc3AubCIgYXVzIGRlc3NlbiBIZWltYXR2ZXJ6ZWljaG5pcyBsYWVkdC4KKworCUVpbiBCZWlzcGllbCwgd2FzIG1hbiBkYW1pdCBtYWNoZW4ga2FubiBiZWZpbmRldCBzaWNoIHVudGVyOgorCSAgIi9wbGF5ZXJzL2hhdGUvbGlzcC5sIgorCURpZSBNVUQgU3BlemlmaXNjaGVuIFRlaWxlIHVuZCBBYmZyYWdlbiBrb2VubmVuIGlnbm9lcmllcnQgd2VyZGVuLgorCitCVUdTOgorCUVzIGdpYnQgbW9tZW50YW4gbm9jaCBlaW4gUHJvYmxlbSwgd2VubiBhdWYgZGVyIEtvbW1hbmRvemVpbGUKKwlLbGFtbWVybiBmZWhsZW4uIERhbm4ga29tbXQgZWluZSBNZWxkdW5nOiAiKk1pc3NpbmcgMiApIgorCUluIGRpZXNlbSBGYWxsIGVpbmZhY2ggendlaW1hbCBoaW50ZXJlaW5hbmRlciApIGF1ZiBqZXdlaWxzIGVpbmVyCisJZWluemVsbmVuIFplaWxlIGVpbmdlYmVuISBEaWVzZXMgUHJvYmxlbSB0cml0dCB2b3IgYWxsZW0gZGFubiBhdWYsCisJd2VubiBtYW4genVtIEJlaXNwaWVsIGVpbiA6KCBlaW5naWJ0LgorCmRpZmYgLS1naXQgYS9kb2Mvd2l6L2xhZGVuIGIvZG9jL3dpei9sYWRlbgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4yZGUyZWEzCi0tLSAvZGV2L251bGwKKysrIGIvZG9jL3dpei9sYWRlbgpAQCAtMCwwICsxLDE1IEBACitMQUVERU4gSU0gTU9SR0VOR1JBVUVNCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK0xhZWRlbiBpbSBNb3JnZW5HcmF1ZW4gc29sbHRlbiBncnVuZHNhZXR6bGljaCAvc3RkL3Nob3AgZXJiZW4uCisKK0RlcyBXZWl0ZXJlbiBiZW5vZXRpZ3QgbWFuIGVpbmVuIFN0b3JhZ2VSb29tLCBhbHNvIGVpbmVuIFJhdW0sIGluIGRlbSBkZXIKK0xhZGVuIHNlaW5lIEdlZ2Vuc3RhZW5kZSB2ZXJ3YWx0ZXQuIERpZXNlciB3aXJkIG1pdCAiU2V0U3RvcmFnZVJvb20iCitnZXNldHp0LiBEaWUgSGlsZmVzZWl0ZSB6dSBkaWVzZW0gQmVmZWhsIGhhdCBhdWNoIGVpbiBCZWlzcGllbC4KKworT2JqZWt0ZSwgZGllIGRlciBMYWRlbiBpbW1lciB2ZXJrYXVmZW4gc29sbCwga2FubiBtYW4gbWl0ICJBZGRGaXhlZE9iamVjdCIKK3NldHplbi4KKworU2llaGUgYXVjaDogU2V0U3RvcmFnZVJvb20sIEFkZEZpeGVkT2JqZWN0LCBRdWVyeVNlbGxWYWx1ZQorCitMZXR6dGUgQWVuZGVydW5nOiBIdW1uaSwgMjAxNS0wNi0xNwpkaWZmIC0tZ2l0IGEvZG9jL3dpei9sZWl0ZmFkZW4gYi9kb2Mvd2l6L2xlaXRmYWRlbgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi43ZDgwNmMxCi0tLSAvZGV2L251bGwKKysrIGIvZG9jL3dpei9sZWl0ZmFkZW4KQEAgLTAsMCArMSw0ODcgQEAKKworCitBQ0hUVU5HOiBESUVTRVIgTEVJVEZBREVOIElTVCBGVVJDSFRCQVIgVkVSQUxURVQhIDotKAorCisKK0RFUiBMRUlURkFERU4gJ1dJRSBTQ0hMSUVTU0UgSUNIIEVSRk9MR1JFSUNIIE1FSU4gR0VCSUVUIEFOJy4KKyhpbiBzaWViZW4gU2Nocml0dGVuIHp1bSBFcmZvbGcsIHZvbiBUc3VuYW1pIHVuZCBGZXVlcndlaHIpCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK0RpZXNlciBMZWl0ZmFkZW4gaXN0IGFic29sdXQgdW52ZXJiaW5kbGljaCB1bmQga2VpbiBSZWdsZW1lbnQuIERpZSAKK1JlaWhlbmZvbGdlIG11c3MgbmljaHQgZWluZ2VoYWx0ZW4gd2VyZGVuLCB1bmQgYXVjaCBkaWUgQW5tZXJrdW5nZW4gCit6dSBkZW4gZWluemVsbmVuIFB1bmt0ZW4gc2luZCBuaWNodCB6d2luZ2VuZCB6dSBiZWZvbGdlbi4KKworRnVlciBTY2huZWxsbGVzZXI6CisKKzEpIFJhZXVtZS9PYmpla3RlL05QQ3MgcHJvZ2dlbgorMikgQWxsZXMgVGVzdGVuIHVuZCBNYWlsIGFuIGRpZSBSZWdpb25zbWFnaWVyIChSTSkgc2NoaWNrZW4uCiszKSBSTXMgcHJ1ZWZlbiBDb2RlIHVuZCB3ZWlzZW4gYXVmIG1vZWdsaWNoZSBQcm9ibGVtZSBoaW4uCis0KSBBbnRyYWcgQmFsYW5jZSB2ZXJmYXNzZW4gKCdnb3RvIC9wbGF5ZXJzL3BhcmFjZWxzdXMvb2ZmaWNlJykuCis1KSBGb3JzY2hlcnB1bmt0ZSBiZWFudHJhZ2VuIChoaWxmZSBlcnptYWdpZXIpLgorNikgTWFpbCBhbiBSTXMsIGRhc3MgbnVuIGFsbGVzIGkuTy4gaXN0LgorNykgUk1zIHNjaGxpZXNzZW4gR2ViaWV0IGFuLgorCitOdW4gZXR3YXMgYXVzZnVlaHJsaWNoZXIuCisKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KK1AgSCBBIFMgRSAxCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCitEdSBiaXN0IG51biBhbHNvIE1hZ2llciwgdm9sbGVyIElkZWVuIHVuZCBUYXRlbmRyYW5nLiBCZXZvciBEdSB3aWxkIGRyYXVmbG9zCitwcm9ncmFtbWllcnN0LCBlaW4gcGFhciBUaXBzLCB1bSBEaXIgdW5kIGRlbiB6dXN0YWVuZGlnZW4gUk1zIGRhcyBMZWJlbiB6dSAKK2VybGVpY2h0ZXJuOgorCitGZXJ0aWdlIERpciBlaW5lIEFTQ0lJLUthcnRlIGFuLCB1bmQgc2NocmVpYmUgZWluZW4ga3VyemVuIFRleHQsIGRlciBEZWluIAorbmV1ZXMgR2ViaWV0IGJlc2NocmVpYnQuIEZyYWdlIHNjaG9uIG1hbCBEZWluZW4gUk0sIHdvIHVuZ2VmYWVociBkaWVzZXMKK25ldWUgR2ViaWV0IGFuZ2VzY2hsb3NzZW4gd2VyZGVuIGtvZW5udGUuIFNvIGthbm5zdCBEdSBEaXIgZWluIHBhYXIgR2VkYW5rZW4KK21hY2hlbiwgd2llIGRpZSBBbnNjaGx1c3NyYWV1bWUgYXVzc2NoYXVlbiBrb2VubnRlbi4KKworRXJzdGVsbGUgc2lubnZvbGxlIFVudGVydmVyemVpY2huaXNlOiBlcyBoYXQgc2ljaCBmb2xnZW5kZXMgYmV3YWVocnQ6CitFaW4gSGF1cHR2ZXJ6ZWljaG5pcyBtaXQgZGVtIE5hbWVuIGRlcyBHZWJpZXRlcyAoa3Vyeiwgd2VubnMgZ2VodCkuIERvcnQKK2tvbW1lbiBkYW5uIGRpZSBVbnRlcnZlcnplaWNobmlzZSByZWluOiB6LkIuICcrL2RvYyArL21vbiArL29iaiArL3Jvb21zJy4gCitJbiBkYXMgJysvZG9jJyBrb21tZW4gZGFubiBEZWluZSBLYXJ0ZW4gdW5kIFRleHRlLiBGYWxscyBEdSBtaXQgCisnTm90aWZ5UGxheWVyRGVhdGgoKScgRGVpbmUgS2VyYmVuIGxvZ2dlbiB3aWxsc3QsIG9kZXIgYW5kZXJlIHdpY2h0aWdlIAorU2FjaGVuIGxvZ2dlbiBtb2VjaHRlc3QsIGRhbm4gc2NocmVpYmUgZGllc2UgRmlsZXMgaW4gZGFzICcvbG9nLzxkZWlubmFtZT4vJyAKK1ZlcnplaWNobmlzLiAKK0luIGRhcyAnKy9tb24nIFZlcnplaWNobmlzIGtvbW1lbiBhbGxlIE5QQ3MgdXN3LgorCitXZW5uIER1IGVpbiBUZXh0ZmlsZSBhdWZydWZlbiB3aWxsc3QsIGRhc3MgZGVuIEluaGFsdCBkZXIgVW50ZXJ2ZXJ6ZWljaG5pc2UKK2Jlc2NocmVpYnQsIHNvIGxlZ2UgZWluZmFjaCBlaW5lICcucmVhZG1lJyBEYXRlaSBpbSBlbnRzcHJlY2hlbmRlbiAKK1ZlcnplaWNobmlzIGFuLiBEaWVzZXMgRmlsZSB3aXJkIGJlaSBqZWRlbSAnY2QnIGF1ZmdlcnVmZW4uCisKK0Jldm9yIER1IGpldHp0IGxvc3NjaGxhZWdzdCwgdWViZXJsZWdlIERpciBlaW4gRGVmaW5lLUZpbGUsIHdvcmluIER1IGRpZQorZ2FuemVuIFBmYWRlIGRlZmluaWVyc3QuIERlbm4gd2VubiBEdSB6dWVyc3QgYWxsZXMgaW4gRGVpbmVtIFBsYXllci0KK1ZlcnplaWNobmlzIHByb2dnc3QsIHVuZCB2b3IgQW5zY2hsdXNzIHdpcmQgZGFzIEdlYmlldCBpbiBkYXMgUmVnaW9ucy0KK3ZlcnplaWNobmlzIGdlbW92ZWQsIHdpbGwgbmllbWFuZCBkaWUgZ2FuemVuIFBmYWRuYW1lbiBhYmFlbmRlcm4uCitFaW4gQmVpc3BpZWw6IGluIERlaW4gJ2dlYmlldC5oJyAoZ2liIGlobSBlaW5lbiBwcmFrdGlzY2hlbiBOYW1lbiBkZXIgenUgCitEZWluZW0gR2ViaWV0IHBhc3N0OiBlaXNtaW5lLmgsIGhvZWhsZS5oIG9kZXIga2VsbGVyLmggdXN3KSBrYWVtZSBzb3dhcyAKK2luIGRlciBBcnQ6CisKKyNkZWZpbmUgRUlTTUlORSh4KSAoIi9kL3BvbGFyL3RzdW5hbWkvZWlzbWluZS8iK3gpCisjZGVmaW5lIFJPT00oeCkgKEVJU01JTkUoInJvb21zLyIreCkpCisjZGVmaW5lIE1PTih4KSAoRUlTTUlORSgibW9uLyIreCkpCisjZGVmaW5lIE9CSih4KSAoRUlTTUlORSgib2JqLyIreCkpCisKK0RlaW4gUmF1bSBpbmNsdWRlZCBkYW5uIGRhcyBGaWxlOiAjaW5jbHVkZSAiLi4vZ2ViaWV0LmgiCitEZWluIEF1c2dhbmcgaW4gZWluZW4gYW5kZXJlbiBSYXVtIG1hY2hzdCBEdSBkYW5uIGZvbGdlbmRlcm1hc3NlbjoKK0FkZEV4aXQoIm5vcmRlbiIsIFJPT00oInJhdW0wMiIpKTsKKworRWluIE5QQyB3dWVyZGUgc29taXQgZm9sZ2VuZGVybWFzc2VuIGluIGRlbiBSYXVtIGdlc3RlbGx0OgorQWRkSXRlbShNT04oImVpc2VsZiIpLCBSRUZSRVNIX0RFU1RSVUNUKTsKKworV2VubiBzcGFldGVyIGF1cyBpcmdlbmQgZWluZW0gR3J1bmQgRGVpbiBHZWJpZXQgdmVyc2Nob2JlbiB3ZXJkZW4gbXVzcywgZGFubgora2FubiBkZXIgUk0gZWluZmFjaCBkaWUgZXJzdGUgWmVpbGUgaW4gJ2dlYmlldC5oJyBhYmFlbmRlcm4uIERhcyBzcGFydCBaZWl0Cit1bmQgTmVydmVuLgorCitXZWl0ZXIgYmlldGV0IGRhcyBEZWZpbmUtRmlsZSBkaWUgTW9lZ2xpY2hrZWl0LCBsYWVuZ2VyZSBCZWZlaGxlIHp1Cit2ZXJrdWVyemVuLiBFaW4gQmVpc3BpZWw6IER1IG1vZWNodGVzdCBOYW1lbiBkZXMgU3BpZWxlcnMgKGdyb3NzIGdlc2NocmllYmVuKQorYXVzZ2ViZW4uIERlciBCZWZlaGwgZGF6dSB3YWVyZTogdGhpc19wbGF5ZXIoKS0+TmFtZShXRVIpCitEYXMgaXN0IHppZW1saWNoIGxhbmcuIERlZmluaWVyZSBpbiBEZWluZW0gRGVmaW5lLUZpbGUgZG9jaCBlaW5mYWNoOgorI2RlZmluZSBUUE4gdGhpc19wbGF5ZXIoKS0+TmFtZShXRVIpCit1bmQgc2Nob24gd2lyZCBEZWluIENvZGUgZXR3YXMgdWViZXJzaWNodGxpY2hlci4gRGllIEFud2VuZHVuZyB3YWVyZSB6LkIuCitzYXkoVFBOKyIgcG9wZWx0IGluIGRlciBOYXNlLlxuIik7CisKK1dlbm4gRHUgYXV0b21hdGlzY2hlIFplaWxlbnVtYnJ1ZWNoZSBtb2VjaHRlc3QsIGRhbm4gc2NocmVpYmUgZm9sZ2VuZGVzCitpbiBEZWluIERlZmluZSBGaWxlOgorI2RlZmluZSBCUyh4KSBicmVha19zdHJpbmcoeCwgNzggLCAiIiwgQlNfTEVBVkVfTVlfTEZTKQorQlNfTEVBVkVfTVlfTEZTIGJld2lya3QsIGRhc3MgRHUgaW1tZXIgbm9jaCBzZWxic3QgWmVpbGVudW1icnVlY2hlIGVpbmJhdWVuCitrYW5uc3QgbWl0IFxuLiBVbmQgc28gd2lyZCBCUyBkYW5uIGJlbnV0enQ6CitBZGREZXRhaWwoICh7IndhbmQiLCJ3YWVuZGUifSksQlMoCisgICJEaWUgV2FlbmRlIGJlc3RlaGVuIHdpZSBhbGxlcyBoaWVyIGF1cyBwdXJlbSBTYXBoaXIuIEluIGRpZSBub2VyZGxpY2hlICIrCisgICJXYW5kIHd1cmRlIGVpbiBzY2hyZWNrbGljaCBnZXphY2t0ZXMgdW5kIHNjaGFyZmthbnRpZ2VzIExvY2ggZ2VzcHJlbmd0LiIpKTsKKworVW0gZGllcyB6dSBiZW51dHplbiBtdXNzdCBEdSBhbGxlcmRpbmdzIG5vY2ggI2luY2x1ZGUgPGJyZWFrX3N0cmluZy5oPiBpbiBkYXMgCitIZWFkZXJmaWxlIHNldHplbiAodm9yIGRpZSAjZGVmaW5lIEJTKHgpLi4uKS1aZWlsZSksIHNvbnN0IGtlbm50IGRlciAKK1ByZWNvbXBpbGVyIGRlbiBBdXNkcnVjayBCU19MRUFWRV9NWV9MRlMgbmljaHQuCisKK0R1IHdpcnN0IERlaW4gR2ViaWV0IGV2dGwuIGluIERlaW5lbSBIb21lLVZlcnplaWNobmlzICgvcGxheWVycy8uLi4pCitzY2hyZWliZW4sIGRhIER1IG5vY2ggbmljaHQgZGVuIFNwcnVuZyB6dSBMZXZlbCAyMSBnZXNjaGFmZnQgaGFzdC4gRHUKK3NvbGx0ZXN0IGFiZXIgd2lzc2VuLCBkYXNzIERlaW5lIFJlZ2lvbnNtYWdpZXJJbm5lbiBudXIgR2ViaWV0ZSBhbm5laG1lbgord2VyZGVuLCB3ZWxjaGUgaW0gUmVnaW9uc3ZlcnplaWNobmlzIC9kLy4uLi9kZWluX25hbWUvIGdlc3BlaWNoZXJ0IHNpbmQuIERhcworaXN0IHdpY2h0aWcsIGRlbm4gaW4gRGVpbmVtIEhlaW0tVmVyemVpY2huaXMga29lbm5lbiBzaWUgbmljaHQgc2NocmVpYmVuIHVuZAorc28ga2VpbmUgRmVobGVyIGtvcnJpZ2llcmVuLiBEZW5rZSBkYXJhbiEgQmVudXR6ZSB1bmJlZGluZ3QgZGllIERlZmluZXMsCitkZW5uIHZvciBkZW0gQW5zY2hsdXNzIHdpcnN0IER1IGRhcyBHZWJpZXQgaW4gZGFzIFJlZ2lvbnN2ZXJ6ZWljaG5pcworc2NoaWViZW4gbXVlc3Nlbi4KKworVmllbGUgU3BpZWxlciAnbG9nZ2VuJywgYWxzbyBzcGVpY2hlcm4gZ2VybmUgVG9kZSBvZGVyIEFrdGlvbmVuIHZvbiBTcGllbGVybgoraW4gaWhyZW4gSGVpbS1WZXJ6ZWljaG5pc3Nlbi4gRGllc2VzIFNjaHJlaWJlbiBmdW5rdGlvbmllcnQgbmljaHQgdm9uCitSZWdpb25zdmVyemVpY2huaXNzZW4gaW4gSGVpbS1WZXJ6ZWljaG5pc3NlLiBCZW51dHplIGF1Y2ggaGllciBlaW4gZGVmaW5lIQorCitOdW4ga29tbWVuIHdpciB6dW0gcHJvZ2dlbi4gRmFsbHMgRHUgbm9jaCBuaWUgcHJvZ3JhbW1pZXJ0IGhhc3QsIGlzdCBlcworc2lubnZvbGwsIHNpY2ggQmVpc3BpZWxmaWxlcyBhbnp1c2NoYXVlbi4gV3VlaGwgRGljaCBkdXJjaCBkYXMgJy9kb2MnCitWZXJ6ZWljaG5pcyBvZGVyIG5vY2ggYmVzc2VyOiBmcmFnIERlaW5lbiBQYXBpbWFnaWVyL0RlaW5lIE1hbWltYWdpZXJpbiBvZGVyCitkZW4gUk0sIG9iIGVyIERpciBlaW4gcGFhciBzZWluZXIgRmlsZXMgenVzY2hpY2t0LiBIYXN0IER1IGRpZXNlIEh1ZXJkZQordWViZXJ3dW5kZW4sIGthbm4gZXMgbG9zZ2VoZW4uIFdlbm4gRHUgYW5mYWVuZ3N0IHp1IHByb2dnZW4gdW5kIG5pY2h0IHdlaXNzdCwgCit3aWUgbWFuIGVpbmVuIGJlc3RpbW10ZW4gQmVmZWhsIGJlbnV0enQsIGthbm5zdCBEdSBkaWUgJ21hbiBwYWdlJyBrb25zdWx0aWVyZW4gCisoZGFzIE1hbnVhbCA9IE9ubGluZSBIaWxmZSkuIFRpcHAgZWluZmFjaCAnbWFuIDxiZWZlaGw+JyB1bmQgc2Nob24ga29tbXQgZGllIAorZW50c3ByZWNoZW5kZSBIaWxmZXNlaXRlLCBmYWxscyB2b3JoYW5kZW4uCisKK0VpbiBwYWFyIFdvcnRlIHp1IGRlbiBSYWV1bWVuOiBEZXRhaWxzIHNpbmQgaGllciBzZWhyIHdpY2h0aWcuCitNYWNoIHZpZWxlIERldGFpbHMgdW5kIGJlc2NocmVpYmUgc2llIG5ldHQuICd1bnQgYm9kZW4nIC0+ICdEZXIgaXN0IHVudGVyIERpci4nCitpc3QgbmljaHQgc2VociBpbnRlcmVzc2FudC4gRWluIFJhdW0gbWl0IHdlbmlnZXIgYWxzIDIwIERldGFpbHMgd2lyZAorbWl0dGxlcndlaWxlIGFscyB1bmdlbnVlZ2VuZCBhbmdlc2VoZW4sIGF1Y2ggd2VubiBlcyBub2NoIGVpbiBwYWFyIEdlYmlldGUKK2ltIE1HIGdpYnQsIHdvIGRpZSBSYWV1bWUgZmFzdCBrZWluZSBEZXRhaWxzIGhhYmVuIChkaWVzZSBaYWhsIHNjaHdhbmt0CituYXR1ZXJsaWNoIHZvbiBSZWdpb24genUgUmVnaW9uIC0tIHRyb3R6ZGVtOiBqZSBtZWhyIERldGFpbHMsIGRlc3RvIGJlc3NlcikuIAorQWRkU21lbGxzIHVuZCBBZGRTb3VuZHMgc29sbHRlc3QgRHUgZWJlbmZhbGxzIG5pY2h0IHZlcmdlc3Nlbi4gRGVyIFNwaWVsZXIgCit2b24gV2VsdCB3aWxsIGF1Y2ggcmllY2hlbiB1bmQgaG9lcmVuIGtvZW5uZW4uIFdlbm4gRHUgZWluZW4gUmF1bSBlcnN0ZWxsc3QsIAordWViZXJsZWdlIERpciBhdWNoIHdpdHppZ2UgdW5kL29kZXIgc2lubnZvbGxlIEJlZmVobGUsIGRpZSBtYW4gaW4gZGVtIFJhdW0gCithdXNmdWVocmVuIGthbm4uIEJlaSBsYWVuZ2VyZW4gUHJvemVkdXJlbiBpc3QgZXMgZnVlciBkZW4gUk0gaGlsZnJlaWNoLCB3ZW5uIAorRHUgaW0gamV3ZWlsaWdlbiBSYXVtIGVpbmVuIGt1cnplbiBLb21tZW50YXIgYWJzZXR6dC4KKworU2NoYXUsIGRhc3MgRHUgZWluIGF0bW9zcGhhZXJpc2NoIHNjaG9lbmVzIEdlYmlldCBwcm9ncmFtbWllcnN0LiBTY2hhdSwKK2Rhc3MgZXMgc2ljaCBtaXQgc2VpbmVyIFVtZ2VidW5nIHZlcnRyYWVndC4gQmV2b3IgRHUgZWluIGFiZ2VzdHVlcnp0ZXMKK1JhdW1zY2hpZmYgdm9uIGRlciBWZWdhIHByb2dyYW1taWVyc3QsIGZyYWdlIGxpZWJlciBEZWluZW4gUk0sIGRlbm4KK3dhaHJzY2hlaW5saWNoIHBhc3N0IGVzIHRoZW1hdGlzY2ggbmljaHQgaW4gc2VpbmUgUmVnaW9uICh3ZWxjaGUgUmVnaW9uIGF1Y2gKK2ltbWVyIGVzIGlzdCA6LSkpLgorCitBY2h0ZSBkYXJhdWYsIGRhc3MgZGllIFRvZWRsaWNoa2VpdCBEZWluZXMgR2ViaWV0cyBzaWNoIG1pdCBEZWluZXIgVW1nZWJ1bmcKK3ZlcnRyYWVndC4gVWViZXItU2Nod2VyZS1NZWdhLU1vbnN0ZXIgc29sbHRlbiB2b24ga2xlaW5lbiBTcGllbGVybiBuaWNodAorcHJvYmxlbWxvcyBlcnJlaWNodCB3ZXJkZW4ga29lbm5lbi4gQmVudXR6ZSBuaWNodCBnYW56IHNvIHRvZWRsaWNoZQorJ0Jsb2NrLU1vbnN0ZXInLCB3ZWxjaGUgZGVuIFp1Z2FuZyB2ZXJzcGVycmVuLiBTbyBtdXNzIGVpbiBTcGllbGVyIGVyc3QKK3NlaW5lIFd1ZXJkaWdrZWl0IGJld2Vpc2VuLCBiZXZvciBlciBhbiBkaWUgaGFydGVuIE1vbnN0ZXIga29tbXQuIFRpZ29uZW4gaW0KK0dsb2NrZW53YWxkIHNpbmQgS0VJTkUgZ3V0ZSBJZGVlLgorCitWaWVsZSBNYWdpZXIgZmluZGVuIGVzIGx1c3RpZywgU3BpZWxlciBpbiBpaHJlbiBHZWJpZXRlbiBkdXJjaCBGYWxsZW4KK3N0ZXJiZW4genUgbGFzc2VuLiBEYXMgc2luZCB6LkIuIEtub2VwZmUsIGRpZSBtYW4gZHJ1ZWNrdCwgdW5kIGRpZSBkYW5uIHNvZm9ydAordGhpc19wbGF5ZXIoKS0+ZGllKCkgYXVmcnVmZW4uIE5hY2hkZW0gdm9yIGVpbmlnZXIgWmVpdCBkaWUgVG9kZXNmb2xnZW4KK3ZlcnNjaGFlcmZ0IHd1cmRlbiwgc2luZCBkZXJhcnRpZ2UgRmFsbGVuIG5pY2h0IG1laHIgZ2VybiBnZXNlaGVuLiBWZXJtZWlkZQorc2llIHdlbm4gbW9lZ2xpY2guIFNwaWVsZXIgbWFjaGVuIGplZGVuIE11ZWxsLCBhYmVyIGxhc3Mgc2llIG5pY2h0IGRhZnVlcgorc3RlcmJlbiwgd2VubiBEdSBlcyBhbmRlcnMgcmVnZWxuIGthbm5zdC4gSmVkZSBUb2Rlc2ZhbGxlIGlzdCBkZW0gUk0KK2F1Znp1enVlaWdlbi4KKworRGllIE9iamVrdGU6IGRhenUgZ2Vob2VyZW4gYXVjaCBXYWZmZW4gdW5kIFJ1ZXN0dW5nZW4sIHNvd2llIGFsbGUgYW5kZXJlbgorc2NocmFlbmdlbiBEaW5nZSwgZGllIERpciBub2NoIHNvIGVpbmZhbGxlbiB3ZXJkZW4uIEJldm9yIER1IERpciBEZWluZQorZXJzdGUgTWVnYS1TdXBlci1BbGxlcy1LYXB1dHRzY2hsYWctQXh0IG9kZXIgZGVuIEFsbGUtU2NoYWVkZW4tQWJ3ZWhyLVBhbnplcgorenVzYW1tZW5iYXN0ZWxzdCwgc2V0eiBEaWNoIGhpbiwgYXRtZSBydWhpZyBkdXJjaCB1bmQgdGlwcCBkYW5uICdtYW4gYmFsYW5jZScuCitEb3J0IHN0ZWhlbiBhbGxlIHdpY2h0aWdlbiBFY2tkYXRlbiwgZGllIER1IGJlZm9sZ2VuIHNvbGx0ZXN0LiBVbmQgZGVuayBkYXJhbiwKK25pY2h0IHp1dmllbGUgZXhrbHVzaXZlbiBXYWZmZW4gdW5kL29kZXIgUnVlc3R1bmdlbiBpbiBlaW5lbSBlaW5pZ2VuIEdlYmlldC4KK1dlbm4gRHUgZ3Jvc3NlIE9iamVrdGUgc2NocmVpYnN0LCBpc3QgaGllciBhdWNoIHdpZWRlciBlaW4ga2xlaW5lciBLb21tZW50YXIKK2ltIEZpbGUgc2VociBoaWxmcmVpY2ggZnVlciBkZW4gUk0uIERlbmsgZGFyYW4sIER1IGJpc3QgdmllbGxlaWNodCBpcmdlbmR3YW5uCitlaW5tYWwgbmljaHQgbWVociBlcnJlaWNoYmFyIHVuZCBkYW5uIGlzdCBlcyBndXQsIHdlbm4gaW0gRmlsZSBnZXNjaHJpZWJlbgorc3RlaHQsIHdhcyBkYXMgUHJvZ3JhbW0gdW5nZWZhZWhyIG1hY2h0LgorCitKZXR6dCBrb21tZW4gd2lyIHp1IGVpbiBwYWFyIGhhZXVmaWdlbiBQcm9ibGVtZW46CitFcnpldWdzdCBEdSBlaW4gT2JqZWt0LCBkYXMgaW4gZWluZW4gU3BpZWxlciBnZXNjaG9iZW4gd2lyZCwgbXVzc3QgRHUgCit1bmJlZGluZ3QgZGVuIFJldHVybi1XZXJ0IGFiZnJhZ2VuLCBvYiBkZXIgU3BpZWxlciBkYXMgbm9jaCB0cmFnZW4ga2FubjoKK0VpbiBCZWlzcGllbDogRWluZSBlaWdlbmUgRnVua3Rpb24gJ25laG1lbicuCitJbiBkYXMgY3JlYXRlKCkgdm9tIFJhdW0ga29tbXQ6CitBZGRDbWQoKHsibmltbSIsIm5laG0iLCJuZWhtZSJ9KSwibmVobWVuIik7CisKK0RpZSBGdW5rdGlvbiAnbmVobWVuJyBlcnpldWd0IGVpbmUgWmlnYXJyZS4gU2llIHBydWVmdCwgb2IgZWluZW4gWmlnYXJyZQorc2Nob24gaW0gUmF1bSBsaWVndCwgZGFubiBuaW1tdCBkZXIgU3BpZWxlciBkaWVzZS4gRmFsbHMga2VpbmUgWmlnYXJyZQorcnVtbGllZ3QsIHdpcmQgZWluZSBuZXVlIGVyemV1Z3QgdW5kIGluIGRlbiBTcGllbGVyIGdlc2Nob2Jlbi4gCitEYW1pdCBlaW4gU3BpZWxlciBuaWNodCBodW5kZXJ0ZSBaaWdhcnJlbiBlcnpldWdlbiBrYW5uLCB3dXJkZSBlaW5lCitnbG9iYWxlIFZhcmlhYmxlICdpbnQgemFlaGxlcjsgemFlaGxlcj01OyBvYmVuIGltIGNyZWF0ZSgpIHZvbSBSYXVtIGVyc3RlbGx0LiAKK05hY2ggZWluZW0gUmF1bXJlc2V0IHN0ZWh0IGRlciBaYWVobGVyIHdpZWRlciBhdWYgNSwgd2VubiBtYW4gZGFzIGluIGRlcgorcmVzZXQoKSBGdW5rdGlvbiAoc2llaGUgdW50ZW4pIGRlZmluaWVydC4KKworbmVobWVuKHN0cmluZyBzdHIpCit7CisgIG9iamVjdCBvYjsKKworICAgbm90aWZ5X2ZhaWwoIldhcyBtb2VjaHRlc3QgRHUgbmVobWVuP1xuIik7CisgICBpZighc3RyKSByZXR1cm4gMDsKKyAgIGlmKHN0cj09InppZ2FycmUiKSB7CisgICBpZihwcmVzZW50KCJ6aWdhcnJlIix0aGlzX29iamVjdCgpKSkgcmV0dXJuIDA7IAorICAgLy8gc28gd2lyZCBkaWUgWmlnYXJyZSBJTSBSYXVtIGdlbm9tbWVuCisKKyAgICAgaWYgKHphZWhsZXIpIHsgICAKKyAgICAgICB3cml0ZShCUygiRHUgbmltbXN0IGVpbmUgWmlnYXJyZSBhdXMgZGVtIEZhY2guIikpOworICAgICAgIHNheShUUE4rIiBuaW1tdCBlaW5lIFppZ2FycmUgYXVzIGVpbmVtIEZhY2guXG4iLHRoaXNfcGxheWVyKCkpOworICAgICAgIC8vIFRQTjogc2llaGUgb2JlbiwgQWJzY2huaXR0ICdEZWZpbmVzJworICAgICAgIG9iPWNsb25lX29iamVjdChPQkooInppZ2FycmUiKSk7CisgICAgICAgaWYgKG9iLT5tb3ZlKHRoaXNfcGxheWVyKCksTV9HRVQpICE9MSkgeworICAgICAgIC8vIGRpZXNlcyAnIT0xJyBmYWVuZ3QgTUVfVE9PX0hFQVZZLCBNRV9UT09fTUFOWV9PQkpFQ1RTLCAKKyAgICAgICAvLyB1bmQgTUVfQ0FOVF9CRV9JTlNFUlRFRCBhYgorCisgICAgICAgICAgIHdyaXRlKCJEdSBrYW5uc3QgZGllIFppZ2FycmUgbmljaHQgbWVociB0cmFnZW4uIFNpZSBmYWVsbHQgenUgIisKKyAgICAgICAgICAgIkJvZGVuLlxuIik7CisgICAgICAgICAgIG9iLT5tb3ZlKGVudmlyb25tZW50KFRQKSxNX1BVVCk7CisgICAgICAgICAgIH0KKyAgICAgICAgIHphZWhsZXItLTsKKyAgICAgICAgIHJldHVybiAxOworICAgICAgICAgfQorICAgICB3cml0ZShCUygiU28gZWluIFBlY2guIEplbWFuZCBoYXQgZGllIGJlc3RlbiBTdHVlY2tlIGJlcmVpdHMgZ2Vub21tZW4uIikpOworICAgICByZXR1cm4gMTsKKyAgICAgfQorICAvLyB1bmQgZGFtaXQgbWFuIGF1Y2ggYW5kZXJlIFNhY2hlbiBhbHMgWmlnYXJyZW4gaW0gUmF1bSBuZWhtZW4ga2FubjoKKyAgcmV0dXJuIDA7CisgIAorfQorCityZXNldCgpCit7CisgICAgOjpyZXNldCgpOworICAgIC8vIG5hY2ggMzAtNDUgbWluIGthbm4gbWFuIHdpZWRlciA1IG5ldWUgWmlnYXJyZW4gbmVobWVuCisgICAgemFlaGxlcj01OworfQorCitEaWUgTlBDcy4gRXMgZ2lidCAobm9jaCkga2VpbmUgVm9yc2NocmlmdCwgd2llIHN0YXJrIG1heGltYWwgTlBDcyBzZWluIGR1ZXJmZW4sCithYmVyIHNjaGF1IERpciB0cm90emRlbSAnbWFuIGJhbGFuY2UnIHp1IGRpZXNlbSBUaGVtYSBhbi4KK05QQ3Mgd2VyZGVuIG9mdCBzY2htZXJ6bGljaCB2b24gaWhyZW4gTWFnaWVybiB2ZXJuYWNobGFlc3NpZ3QuIE9mdAorc3RlaHQgZGVyIGdyb3NzZSBEcmFjaGUgYXVmIGRlbSBTcGVpY2hlciwga2FubiBEaWNoIGluIGVpbmVtIFNjaGxhZyB1bWhhdW4sCit3ZWlzcyBhYmVyIG5pY2h0IGVpbm1hbCBzZWluZW4gTmFtZW4gdW5kIGJlc2l0enQgbmljaHQgZWluIERldGFpbC4gS3VlbW1lcgorRGljaCB1bSBEZWluZSBOUENzLiBHaWIgaWhuZW4gZWluZSBzY2hvZW5lIEJlc2NocmVpYnVuZywgbGFzcyBzaWUgZXR3YXMKK3VlYmVyIHNpY2ggZXJ6YWVobGVuLCBnaWIgaWhuZW4gRGV0YWlscywgZ2liIGlobmVuIEtsZWlkdW5nLgorCitPZnQgd2lsbCBtYW4gTlBDcyBkdXJjaCBHZWJpZXRlIGxhdWZlbiBsYXNzZW4sIHNvIGRhc3Mgc2llIG1hbCBMYW5kIHVuZAorTGV1dGUga2VubmVubGVybmVuLiBEYXMgaXN0IGV0d2FzIHJlY2huZXJsYXN0aWcsIHVuZCBhdWNoIHdlbm4gd2lyIGpldHp0CitqZWRlIE1lbmdlIFBvd2VyIHVudGVyIGRlciBIYXViZSBoYWJlbiwgc29sbHRlIG1hbiBlaW5pZ2UgRGluZ2UgYmVhY2h0ZW46CisqIEVzIGdpYnQgZWluaWdlIHNlaHIgc2Nob2VuZSBTdGFuZGFyZC1MYXVmLU5QQ3MuIEVzIGJpZXRldCBzaWNoIGFuLCBkaWVzZQorICB6dSBiZW51dHplbi4gU2llIGhhYmVuIGFsbGUgbm9ldGlnZW4gRWlnZW5zY2hhZnRlbiwgdW50ZXIgYW5kZXJlbSwgZGFzcyBzaWUgCisgIHN0ZWhlbiBibGVpYmVuLCB3ZW5uIHNpZSBrZWluZSBTcGllbGVyIG1laHIgYW50cmVmZmVuLiBEYXMgc3BhcnQgCisgIFBlcmZvcm1hbmNlLiBBdXNzZXJkZW0gd2VyZGVuIHNpZSBvZnQgdm9uIGVpbmVtIE1hc3RlciBnZXN0ZXVlcnQsIHVuZCBkYXMgCisgIHNwYXJ0IGNhbGxfb3V0cy4KKyogQXVmd2VuZGlnIGlzdCBiZXNvbmRlcnMgZGFzIEJld2VnZW4gdm9uIE5QQ3MuIFJlbm5lbmRlIE5QQ3Mgc2luZCBkb2NoCisgIG9lZGUuIExhc3Mgc2llIHNpY2ggbGFuZ3NhbSBiZXdlZ2VuLiBKZWRlcyBzY2hvZW5lIEdlc3ByYWVjaCBtaXQgZWluZW0gTlBDIAorICBnZWh0IGluIGRpZSBIb3NlLCB3ZW5uIGRlciBOUEMgc3RhZW5kaWcgdm9yIGVpbmVtIHdlZ2xhZXVmdC4KKworRGVua2UgZ2VuZXJlbGwgZGFyYW4sIHVlYmVyc2ljaHRsaWNoIHp1IHByb2dyYW1taWVyZW4uIEJlbnV0emUgbmljaHQKK21laHIgYWxzIDc4IFplaWNoZW4gcHJvIFplaWxlLCBmdWVnZSBydWhpZyBMZWVyemVpbGVuIGVpbiwgdW0gZGllIFN0cnVrdHVyCit6dSB1bnRlcnN0cmVpY2hlbi4gUnVlY2tlIGluIFNjaGxlaWZlbiBkZW4gQ29kZSBlaW4gcGFhciAoei5CLiAzKSBaZWljaGVuCitlaW4uIEtvbW1lbnRhcmUgbWFjaGVuIERlaW5lbiBSTSBnbHVlY2tsaWNoISBXZW5uIER1IGVpbnN0IHZpZWxsZWljaHQgbmljaHQKK21laHIgZGEgYmlzdCwgd2lyZCBpcmdlbmQgamVtYW5kIERlaW5lbiBDb2RlIHdhcnRlbiBtdWVzc2VuLiBEZW5rIGFuIGRlbgorYXJtZW4gS2VybCEgRnVlZ2UgYmVpIERlaW5lbiBPYmpla3RlbiBlaW5lbiBIaW53ZWlzIGRhcmF1ZiBlaW4sIHdvdm9uIHVuZAord29mdWVyIHNpZSBiZW51dHp0IHdlcmRlbiEgV2VubiBEdSBkaWUgV2FobCBoYXN0LCBDb2RlIGluIGVpbmVyCitmdWVyY2h0ZXJsaWNoIGVmZml6aWVudGVuLCBhYmVyIHVudWViZXJzaWNodGxpY2hlbiBXZWlzZSB6dSBzY2hyZWliZW4sIG9kZXIKK2V0d2FzIHdlbmlnZXIgZWZmaXppZW50LCBhYmVyIGludHVpdGl2IHVuZCBlaW5sZXVjaHRlbmQsIG5pbW0gZGllCitlaW5sZXVjaHRlbmRlIFdlaXNlLiAKKworWmF1YmVydHJhZW5rZSwgR2lsZGVub2JqZWt0ZSwgR2lsZGVucXVlc3RzCisKK1phdWJlcnRyYWVua2UKKworWmF1YmVydHJhZW5rZSBzaW5kIHdpY2h0aWcsIHVuZCBvYndvaGwgZXMgc2llIHNjaG9uIGFuIHZpZWxlbiBTdGVsbGVuIGltIE1HCitnaWJ0LCBzaW5kIHNpZSBpbW1lciBub2NoIGdlZnJhZ3QuIE1hbiBzb2xsdGUgYmVpbSBFaW5iYXVlbiB2b24gWlRzIGRhcmFuCitkZW5rZW4sIHNpZSBuaWNodCB0aWVmIGluIFF1ZXN0LUdlYmlldGVuIHp1IHZlcnN0ZWNrZW4sIHNvIGRhc3MgZWluIFNwaWVsZXIKK2tlaW5lIFF1ZXN0IG5vY2htYWwgc3BpZWxlbiBtdXNzLCBudXIgdW0gZGVuIFpUIHp1IGJla29tbWVuLiBBdXNzZXJkZW0KK3NvbGx0ZW4gc2llIG5pY2h0IHp1IHNjaHdlciB2ZXJzdGVja3Qgd2VyZGVuLiBFaW4gWmF1YmVydHJhbmsgaW4gZWluZW0gQnVjaAorYmVrb21tdCBtYW4gei5CLiBkdXJjaDoKKworY3JlYXRlKCkgeworLi4uCitBZGRSZWFkRGV0YWlsKCJidWNoIiwiQEBkZXRfYnVjaEBAIik7Cit9CisKK3N0cmluZyBkZXRfYnVjaCgpIAoreworIGlmICh0aGlzX3BsYXllcigpLT5GaW5kUG90aW9uKCJEdSBmaW5kZXN0IE1hY2h0IGluIGRpZXNlbSBCdWNoLi4uXG4iKSkgCisgICByZXR1cm4gIiI7CisgZWxzZQorICAgcmV0dXJuICJEdSBmaW5kZXN0IGtlaW5lIE1hY2h0IGluIGRpZXNlbSBCdWNoLiBXaWUgc2NoYWRlLi4uXG4iOworfQorCitEZW5rZSBkYXJhbiwgYXVjaCBlaW5lbiBWZXJzIHp1IHNjaHJlaWJlbiwgd2VsY2hlciBpbSBPcmFrZWwgZGVuIFRpcCBmdWVyCitkaWVzZW4gWlQgZGFyc3RlbGx0LiBEdSBrZW5uc3QgZGllc2UgVmVyc2Ugc2ljaGVyIHNjaG9uIHp1ciBHZW51ZWdlIDotKS4KK0R1IG11c3N0IGRlbiBaYXViZXJ0cmFuayBzcGFldGVyIHp1c2FtbWVuIG1pdCBkZW4gRm9yc2NoZXJwdW5rdGVuIGFubWVsZGVuLgorCitHaWxkZW4tIHVuZCBNaW5pcXVlc3RzLgorCitHaWxkZW5xdWVzdHMgc2luZCBrbGVpbmUgQXVmZ2FiZW4sIG5pY2h0IGdyb3NzIGdlbnVnIGZ1ZXIgcmljaHRpZ2UgUXVlc3RzLAord2VsY2hlIHZvbiBkZW4gTWl0Z2xpZWRlcm4gZWluZXIgR2lsZGUgZ2Vsb2VzdCB3ZXJkZW4gbXVlc3NlbiwgYmV2b3Igc2llCithdWZzdGVpZ2VuIGtvZW5uZW4uIERpZSBEaW5nZXIgc2luZCB2b2xsIGltIEtvbW1lbi4gWmF1YmVyZXItLCBLYWVtcGZlci0KK29kZXIgQ2hhb3MtR2lsZGVubWFnaWVyIHNpbmQgaW1tZXIgaGludGVyIGRlbmVuIGhlci4gUXVlc3RzIHdpZSAnRmluZGUgZGFzCit2ZXJzY2hvbGxlbmUgQnVjaCcgb2RlciAnQmVmcmVpZSBkZW4gVmVydXJ0ZWlsdGVuJyBsYXNzZW4gc2ljaCBvZnQgb2huZQorZ3Jvc3NlbiBBdWZ3YW5kIGluIEdlYmlldGUgZWluYmF1ZW4uIFNpZSBnYXJhbnRpZXJlbiBhdWNoIGVpbmUgZ2V3aXNzZQorcGVybWFuZW50ZSBCZXN1Y2hlcnphaGwgaW0gR2ViaWV0IDotKSkuIEJldm9yIG1hbiBkaWVzZSBRdWVzdHMgZWluYmF1dCwKK3NvbGx0ZSBtYW4gZGFzIHByaW56aXBpZWxsZSBPSyBkZXIgR2lsZGVubWFnaWVyIGhvbGVuLCBuYWNoaGVyIG11c3MgbWFuCitpaG5lbiBkaWUgUXVlc3Qgdm9yc3RlbGxlbiwgZGFtaXQgc2llIHNpZSBiZXdlcnRlbiB1bmQgZnJlaWdlYmVuLgorCitXaWxsIG1hbiBlaW5lIGtsZWluZSBBdWZnYWJlIG5pY2h0IGdpbGRlbmFiaGFlbmdpZywgc29uZGVybiBmdWVyIGFsbGUKK1NwaWVsZXIgZWluYmF1ZW4gdW5kIGRhZnVlciBTdHVmZW5wdW5rdGUgdmVyZ2ViZW4sIGRhbm4ga2FubiBtYW4gZGllIEF1ZmdhYmUKK2F1Y2ggYWxzIE1pbmlxdWVzdCBlaW50cmFnZW4gbGFzc2VuLCB1bmQgendhciBiZWltIGdsZWljaGVuIEVNLCBkZXIgYXVjaCBkaWUKK0ZQcyBlaW50cmFlZ3QuIEVzIGZvbGdlbiBDb2RlLUJlaXNwaWVsZSBmdWVyIGRpZSBWZXJnYWJlIGRlciBRdWVzdHMuLi4KKworaW50IGJlZnJlaWUoc3RyaW5nIHdlbikgCit7CisgIG5vdGlmeV9mYWlsKCJXZW4gbW9lY2h0ZXN0IER1IGJlZnJlaWVuP1xuIik7CisgIGlmICh3ZXIgIT0gImdlZmFuZ2VuZXIiKSAKKyAgICByZXR1cm4gMDsKKyAgCisgIC8vIEhpZXIgd2VyZGVuIGRpZSBTdHVmZW5wdW5rdGUgZnVlciBkaWUgTWluaXF1ZXN0IHZlcmdlYmVuLi4uCisgIC8vIEZhbGxzIG1hbiBrZWluZSBNaW5pcXVlc3QgYW5nZW1lbGRldCBoYXQsIGxhZXNzdCBtYW4gZGFzIG5hdHVlcmxpY2ggd2VnCisgIFNDT1JFTUFTVEVSLT5HaXZlTWluaVF1ZXN0KHRoaXNfcGxheWVyKCkpOworCisgIC8vIEhpZXIgc2luZCBkaWUgS2FlbXBmZXIuIERlciBDb2RlIGthbm4gdmFyaWllcmVuLi4uCisgIGNhbGxfb3RoZXIoIi9wL2thZW1wZmVyL3N0ZC9rX21hc3RlciIsIlNldHplQXVmZ2FiZSIsZ2V0dWlkKHRoaXNfcGxheWVyKCkpLAorICAgICJCZWZyZWllIGRlbiBHZWZhbmdlbmVuIik7CisKKyAgLy8gTGV0enRlcyBCZWlzcGllbDogSGllciBzaW5kIGRpZSBaYXViZXJlcjoKKyAgY2FsbF9vdGhlcigiL3AvemF1YmVyZXIvbnBjL3Rlc3QiLCJHaXZlUXVlc3QiLHRoaXNfcGxheWVyKCksCisgICAgIkJlZnJlaWUgZGVuIEdlZmFuZ2VuZW4iKTsKKyAgLi4uCit9CisKK0dpbGRlbm9iamVrdGUKKworR2lsZGVub2JqZWt0ZSB3aXJrZW4gbm9jaCBiZXNzZXIgYWxzIEdpbGRlbnF1ZXN0ZW4sIHVtIFNwaWVsZXIgaW4gR2ViaWV0ZSB6dQorbG9ja2VuIDotKS4gRGllcyBzb2xsdGUgamVkb2NoIGtlaW4gQW5sYXNzIHNlaW4sIGVpbiBHZWJpZXQgbWl0IGRlcmFydGlnZW4KK0RpbmdlbiB6dSB1ZWJlcmxhZGVuIGFiZXIgZGFmdWVyIGRpZSBEZXRhaWxzIHVuZCBkaWUgQXRtb3NwaGFlcmUgenUKK3Zlcmdlc3Nlbi4gR2FueiBnZW5lcmVsbCBnaWx0OiBNYWVzc2lnZSBEaWNoISBXZW5pZ2VyIGlzdCBtZWhyIQorCitHYW56IGdlbmVyZWxsIHNpbmQgR2lsZGVub2JqZWt0ZSB6LkIuIFV0ZW5zaWxpZW4gZGVyIFphdWJlcmVyLCBXYWZmZW4gbWl0CitLYWVtcGZlci1Cb25pIGZ1ZXIgS2FlbXBmZXIgb2RlciBLcmVpZGVuIGV0Yy4gZnVlciBDaGFvdGVuLiBEaWVzZSBPYmpla3RlCittdWVzc2VuIG5hdHVlcmxpY2ggdm9uIGRlbiBHaWxkZW5tYWdpZXJuIGdlbmVobWlndCB3ZXJkZW4sIGJldm9yIGRhcyBHZWJpZXQKK2FuZ2VzY2hsb3NzZW4gd2lyZC4gU3ByZWNodCBmcnVlaCBnZW51ZyBtaXQgZGVuIEdpbGRlbm1hZ2llcm4uIFNpZSB3ZXJkZW4KK2V1Y2ggc2ljaGVyIGdlbnVnIEJlaXNwaWVsZSBmdWVyIGRlcmFydGlnZSBPYmpla3RlIGdlYmVuLCB3ZXNoYWxiIGhpZXIgYXVmCitkZXJhcnRpZ2VzIHZlcnppY2h0ZXQgd2lyZC4KKworLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorUCBIIEEgUyBFIDIKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KK0R1IGhhc3QgbnVuIGFsbGUgUmFldW1lL09iamVrdGUvTlBDcyBlcnN0ZWxsdC4gTnVuIGdlaHQgZXMgaW4gZGllIFRlc3RwaGFzZS4KK0VyemV1Z2UgRGlyIGVpbmVuIFRlc3RzcGllbGVyLCBkYW1pdCBEdSBEZWluZSBSYXVtbWVsZHVuZ2VuIHdpZSB6LkIuIG1pdHRlbHMKK3RlbGxfcm9vbSgpIGF1ZiBpaHJlIFJpY2h0aWdrZWl0IHVlYmVycHJ1ZWZlbiBrYW5uc3QuIFNjaGF1IERpciBpbiBSdWhlCitEZWluZSBTYWNoZW4gYW4gdW5kIHZlcnN1Y2hlLCBkaWUgdW5zaW5uaWdzdGVuIFNhY2hlbiBkYXJpbiB6dSB0dW4uIERhcyB3ZXJkZW4KK2RpZSBTcGllbGVyIG5hZW1saWNoIG5hY2hoZXIgYXVjaCBtYWNoZW4uIElzdCBEZWluZXIgTWVpbnVuZyBuYWNoIGFsbGVzIE9LLAorc2NocmVpYiBlaW5lIEVtYWlsIGFuIERlaW5lIHp1c3RhZW5kaWdlbiBSTXMuIFNlaHIgaGlsZnJlaWNoIChmdWVyIGRpZSBSTXMpCit3YWVyZSBlaW5lIHp1c2FldHpsaWNoZSBMaXN0ZSAoc2llaGUgYXVjaCBQaGFzZSA0KSBtaXQ6CisKKzEpIGFsbGVuIE5QQ3MgKHdlbGNoZSBPYmpla3RlIHRyYWdlbiBzaWUpIHVuZCBhbGxmYWVsbGlnZSBTb25kZXJmdW5rdGlvbmVuCisgICBnYW56IGt1cnogZXJsYWV1dGVydC4KKzIpIEVpbmUgTGlzdGUgYWxsZXIgT2JqZWt0ZS4gQmVpIGtvbXBsaXppZXJ0ZW4gT2JqZWt0ZW4gZWluZSBrdXJ6ZSBCZXNjaHJlaWJ1bmcKKzMpIEVpbmUgTGlzdGUsIGluIHdlbGNoZW0gUmF1bSBsaWVndCB3ZWxjaGVzIE9iamVrdC9aVC9IZWlsc3RlbGxlL05QQworCitEaWVzZSBMaXN0ZSBrYW5uc3QgRHUgbmF0dWVybGljaCBpbiBEZWluIC9kb2MgVmVyemVpY2huaXMgbGVnZW4sIHdhcyBkYW5uIGF1Y2gKK3NwYWV0ZXIgc2VociBoaWxmcmVpY2ggc2VpbiBrYW5uLgorCitGYWxscyBzaWNoIERlaW5lIFJNcyBuaWNodCBtZWxkZW4sIHNwcmljaCBzaWUgYW4sIG1haWwgaWhuZW4gbm9jaG1hbC4KK1ZpZWxsZWljaHQgaGFiZW4gc2llIERlaW5lIE1haWwgdmVyZ2Vzc2VuLiBSTXMgc2luZCBwcmluemlwaWVsbCB2ZXJnZXNzbGljaC4KK1NpZSB1bnRlcmhhbHRlbiBzaWNoIGplZG9jaCBzaWNoZXJsaWNoIGdlcm4gbWl0IERpci4gS2VpbmUgZmFsc2NoZQorQmVzY2hlaWRlbmhlaXQsIHJhbiBhbiBkZW4gRmVpbmQuCisKKy0gVGVzdHNwaWVsZXIgLSAgIG9kZXIgICAtIFp3aXNjaGVuIExlZ2FsaXRhZXQgdW5kIFdhaG5zaW5uIC0KKworS2F1bSBlaW4gTWFnaWVyIGthbm4gZGllIG1lcmt3dWVyZGlnZW4sIG9mdCB3aWRlcnNpbm5pZ2VuIHVuZCBrcmFua2VuCitHZWRhbmtlbmdhZW5nZSBlaW5lcyBTcGllbGVycyBuYWNodm9sbHppZWhlbi4gRGVzaGFsYiBpc3QgZXMgZWluZSBndXRlCitTYWNoZSwgc2VpbiBHZWJpZXQgdm9uIFNwaWVsZXJuIHRlc3RlbiB6dSBsYXNzZW4uIFNpZSBrb2VubmVuIGRpZSBTdGFlcmtlCitkZXIgTlBDcyBndXQgZWluc2NoYWV0emVuIHVuZCBrb3JyaWdpZXJlbiwga2VubmVuIGRpZSBnZWhlaW1lbiBLbmlmZmUgZGVyCitHaWxkZW4gdW5kIG1hY2hlbiBnZW5lcmVsbCBkYXMsIHdvcmFuIG1hbiBuaWUgZ2VkYWNodCBoYXQuCisKK1NwaWVsZXJ0ZXN0aWVzIHNpbmQgc28gZWluZSBTYWNoZS4gQWxzIGVyc3RlcyBtdXNzIG1hbiBrb21wZXRlbnRlIFNwaWVsZXIKK2ZpbmRlbiwgd2VsY2hlIGJlcmVpdCBzaW5kLCBkYXMgR2ViaWV0IHp1IHRlc3Rlbi4gRGllcyBpc3QgbmljaHQgZWluZmFjaCwKK2Rlbm4gZGllIHdpcmtsaWNoIGd1dGVuIFRlc3RlciBzaW5kIG9mdCBob2ZmbnVuZ3Nsb3MgdWViZXJiZWxlZ3QuIEhhdCBtYW4KK2VpbmVuIHdpbGxpZ2VuIFNwaWVsZXIgZ2VmdW5kZW4sIGtyZWllcnQgbWFuIHNpY2ggZWluZW4gVGVzdHNwaWVsZXIsIGluZGVtCittYW4gZWluZW4gbmV1ZW4gU3BpZWxlciBlaW5sb2dndCB1bmQgaW0gUF9URVNUUExBWUVSIGF1ZiBkZW4gZWlnZW5lbiBOYW1lbgorc2V0enQuIERhcyBrYW5uc3QgRHUgei5CLiBzbyBtYWNoZW46IAoreGNhbGwgdGVzdGktPlNldFByb3AoUF9URVNUUExBWUVSLCI8TWFnaWVyPiIpIHdvYmVpIDxNYWdpZXI+IERlaW4gTmFtZSBpc3QuCisKK0RhbmFjaCBkYXJmIG1hbiBpaG4gd2lsZCBpbiBHaWxkZW4gZWludHJldGVuIGxhc3NlbiwgaWhtIHNlaW5lIAorV2VydGUgc2V0emVuIHVuZCBpaG0gQXVzcnVlc3R1bmcgY2xvbmVuLiBFcyBnaWJ0IGVpbmlnZSBzY2hvZW5lCitUZXN0c3BpZWxlci1Ub29scywgbWl0IGRlbmVuIHNpY2ggVGVzdGllcyBSdWVzdHVuZ2VuIHNldHplbiB1bmQgc2ljaCBoZWlsZW4KK2tvZW5uZW4uCisKK0hhdCBtYW4gU3BpZWxlciB1bmQgVGVzdHNwaWVsZXIsIHNvIGtvbW10IG1hbiBhbiBkaWUgbGVnYWxlbiBQcm9ibGVtZS4gQWxsZXMKK3dpY2h0aWdlIGVyZmFlaHJ0IG1hbiBkdXJjaCAnaGlsZmUgdGVzdHNwaWVsZXInLiBEb3J0IHN0ZWh0LCBkYXNzCitUZXN0c3BpZWxlciBiZWkgRXJ6bWFnaWVybiBhbmdlbWVsZGV0IHdlcmRlbiBtdWVzc2VuLCB3ZWxjaGUgc2llIGRhbm4gaW4gZWluCitVZWJlcndhY2h1bmdzdG9vbCBlaW50cmFnZW4sIHNvIGRhc3Mgc2VpbmUgSGFuZGx1bmdlbiBnZWxvZ2d0IHdlcmRlbi4gCitUYXRzYWNoZSBpc3QsIGRhc3Mgc2ljaCBhYmVyIGthdW0gZWluZXIgc2VpbmUgVGVzdHNwaWVsZXIgYmVpIGVpbmVtCitFcnptYWdpZXIgYW5tZWxkZXQgdW5kIGRpZSBtZWlzdGVuIEVNcyBkYXMgc2VsYnN0IG5pY2h0IHR1bi4gKFRlc3RpZXMgbmV1ZXIKK0dpbGRlbiBtb2VnZW4gaGllciBlaW5lIEF1c25haG1lIGJpbGRlbikuCisKK0dlbmVyZWxsIGJlYWNodGUgZm9sZ2VuZGVzOiBNYWNoIGtlaW5lIFNwaWVsZXIgenUgVGVzdHNwaWVsZXJuLCBkZW5lbiBEdSBuaWNodAordHJhdXN0IG9kZXIgZGllIER1IG5pY2h0IGtlbm5zdC4gV2VubiBlaW4gU3BpZWxlciBtaXQgc2VpbmVuIFRvb2xzIGR1cmNocyBNRworbGFldWZ0IHVuZCBVbnNpbm4gYW5zdGVsbHQsIGJpc3QgRHUgbWl0IFNjaHVsZCwgZWdhbCBvYiBkZXIgVGVzdGllCithbmdlbWVsZGV0IGlzdCBvZGVyIG5pY2h0LiBXZW5uIER1IGVpbmVuIFNwaWVsZXIgZHVyY2ggZWluIEdlYmlldCBsYXVmZW4KK2xhZXNzdCwgYmV2b3IgZGllIEZQcyBlaW5nZXRyYWdlbiB3dXJkZW4sIGRhbm4gaXN0IGRhcyBuaWNodCBsZWdhbCwgYWJlciBlcword2lyZCBrZWluZXIgbWVja2Vybiwgd2VubiBEdSBpaG4gdWViZXJ3YWNoc3QgdW5kIHNvbWl0IGF1ZnBhc3N0LCBkYXNzIGVyCitrZWluZW4gVW5zaW5uIGF1c3NlcmhhbGIgZGVzIEdlYmlldHMgYW5zdGVsbHQuIFdlbm4gRHUgZWluZW4gU3BpZWxlciBkdXJjaAorZWluIEdlYmlldCBtaXQgRlBzIGxhdWZlbiBsYWVzc3QgdW5kIGRlciBTcGllbGVyIGRpZSB2b24gaWhtIGdlZnVuZGVuZW4gRlBzCitiZWtvbW1lbiB3aWxsLCBzbyBtdXNzdCBEdSBpaG4gYmVpIGVpbmVtIEVyem1hZ2llciBhbm1lbGRlbiwgZGVubiBGUHMga2FubgorbnVyIGVpbiBFcnptYWdpZXIgc2V0emVuLgorCitPaCwgdW5kIHNjaHJlaWJlIERpciBkaWUgTmFtZW4gdW5kIFBhc3N3b2VydGVyIERlaW5lciBUZXN0c3BpZWxlciBhdWYuIEZhbGxzCittYW4gbWVocmVyZSBoYXQsIHZlcmdpc3N0IG1hbiB2ZXJmbHVjaHQgc2NobmVsbCBkaWUgTmFtZW4gOi0pLgorCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCitQIEggQSBTIEUgMworLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorRGllIFJNcyBzY2hhdWVuIGFsbGUgRmlsZXMgYW4sIGRpZSBEdSBlcnpldWd0IGhhc3QuIERhbmFjaCB3ZXJkZW4gc2llIERpcgorZWluZSBMaXN0ZSB6dXJ1ZWNrc2NoaWNrZW4gbWl0IGFsbGVuIFByb2JsZW1mYWVsbGVuLCBkaWUgc2llIGdlZnVuZGVuIGhhYmVuLgorSmUgbmFjaCBVbWZhbmcgRGVpbmVzIEdlYmlldGVzIGthbm4gZGFzIG5hdHVlcmxpY2ggZXR3YXMgZGF1ZXJuLgorSGFzdCBEdSBkaWUgSW5mb3JtYXRpb25lbiB6dXJ1ZWNrYmVrb21tZW4sIGthbm5zdCBEdSBEaWNoIGFuIGRlbiBGZWluc2NobGlmZgorbWFjaGVuLiBJbiBkZXIgWndpc2NoZW56ZWl0IHNvbGx0ZXN0IER1IFBoYXNlIDQgdW5kIFBoYXNlIDUgZXJsZWRpZ2VuLgorCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCitQIEggQSBTIEUgNAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorRmFsbHMgRHUgT2JqZWt0ZSBoYXN0LCBkaWUgZ2VuZWhtaWd1bmdzcGZsaWNodGlnIHNpbmQgKG1hbiBiYWxhbmNlKSwgc28gbXVzc3QKK0R1IGVpbmVuIEFudHJhZyBhbiBkYXMgQmFsYW5jZXRlYW0gc3RlbGxlbi4gSW4gZGVyIFp3aXNjaGVuemVpdCBzb2xsdGUgRGVpbgorTWFnaWVybGV2ZWwgc28gaG9jaCBzZWluLCBkYXNzIER1IGRlbiBCZWZlaGwgJ2dvdG8nIGJlbnV0emVuIGthbm5zdC4gRXMKK2dpYnQgZWluZW4gRXh0cmEgUmF1bSBmdWVyIGRpZSBCYWxhbmNlYW50cmFlZ2U6IAorZ290byAvcGxheWVycy9wYXJhY2Vsc3VzL29mZmljZQorRG9ydCBnaWJ0IGVzIGRhbm4gZWluZSBndXRlIEhpbGZlc2VpdGUuCitXaWNodGlnZXMgenVtIEFudHJhZzogbWFjaCBiaXR0ZSBuaWNodCBmdWVyIGplZGVzIE9iamVrdCBlaW5lbiBlaWdlbmVuCitBbnRyYWcsIHNvbmRlcm4gc2NocmVpYmUgRGlyIGVpbmVuIGdyb3NzZW4gQW50cmFnLCBpbiBkZW4gYWxsZSBEZWluZQorT2JqZWt0ZSByZWlua29tbWVuLCBkaWUgZGVyIEJhbGFuY2Ugdm9yZ2VsZWd0IHdlcmRlbiBtdWVzc2VuIChzaWVoZSBQaGFzZSAyOgorYXVzIGRlciBMaXN0ZSwgZGllIER1IGVyc3RlbGx0IGhhc3QpLiBEYXp1IHNvbGx0ZXN0IER1IGplZGVzIE9iamVrdCBrdXJ6IAorYmVzY2hyZWliZW4uIERhenUga29tbWVuIGRpZSB3aWNodGlnc3RlbiBXZXJ0ZSwgYmVpIFdhZmZlbiB6LkIuIFdhZmZlbmFydCwgCitQX1dDLCBQX05SX0hBTkRTLCBQX0RBTV9UWVBFLCBQX1dFSUdIVCwgdW5kIGVpbmUga3VyemUgQmVzY2hyZWlidW5nIGRlciAKK1NvbmRlcmZ1bmt0aW9uZW4uCitEYXMgQmV3aWxsaWdlbiBEZWluZXIgT2JqZWt0ZSBrYW5uIGVpbmUgemllbWxpY2ggbGFuZ2UgWmVpdCBpbiBBbnNwcnVjaAorbmVobWVuIChXb2NoZW4pLiBIaWVyIG5pY2h0IHVuZ2VkdWxkaWcgc2Vpbi4gRGFzIGRhdWVydCBzZWluZSBaZWl0LgorV2VubiBEdSBPYmpla3RlIHByb2dnc3QsIGRpZSBiZXN0aW1tdCBkdXJjaCBkaWUgQmFsYW5jZSBtdWVzc2VuLCBnaWIgZG9jaAorRGVpbmVtIFJNIGZydWVoemVpdGlnIEJlc2NoZWlkLCBkYXNzIGVyIHNpY2ggZGFzIGFuZ3Vja3QuIERhbm4ga2FubnN0IER1IAorZGllIFNhY2hlbiBiZXJlaXRzIGJlYW50cmFnZW4sIHVuZCBpbiBkZXIgWmVpdCwgYmlzIGRpZSBBbnRyYWVnZSAKK2Jld2lsbGlndCB3dXJkZW4sIGRpZSBhbmRlcmVuIERpbmdlIHByb2dnZW4uIERpZXNlciBBbnNhdHogZ2lsdCBhYmVyIGVoZXIKK2Z1ZXIgTWFnaWVyLCBkaWUgYmVyZWl0cyBldHdhcyBhbmdlc2NobG9zc2VuIGhhYmVuIHVuZCBuZXVlIEdlYmlldGUgCitlcnN0ZWxsZW4uIEZ1ZXIgZGVuIE5ldWxpbmcgaXN0IGVzIGVtcGZlaGxlbnN3ZXJ0ZXIsIGFsbGVzIGZlcnRpZ3p1bWFjaGVuCit1bmQgZGFubiB6dSBiZWFudHJhZ2VuLiBHcnVuZDogc2llaGUgb2JlbjogU28ga2FubnN0IER1IHZvcndlaXNlbiwgZGFzcyBEdQorRGlyIE11ZWhlIGdlZ2ViZW4gaGFzdCwgdG9sbGUgU2FjaGVuIGF1ZiBkaWUgQmVpbmUgenUgc3RlbGxlbiwgdW5kIG5pY2h0CitlaW5mYWNoIGVpbmVuIE5QQyBpbiBkaWUgV2VsdCBzdGVsbGVuIHdpbGxzdCwgbWl0IGh1bmRlcnRlbiB0b2xsZXIgT2JqZWt0ZS4KKworLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorUCBIIEEgUyBFIDUKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KK0dsZWljaHplaXRpZyBzb2xsdGVzdCBEdSBkaWUgRm9yc2NoZXJwdW5rdGUgYmVhbnRyYWdlbi4gV2VsY2hlciBFcnptYWdpZXIKK2RhZnVlciB6dXN0YWVuZGlnIGlzdCwgZmluZGVzdCBEdSBtaXQgJ21hbiBlcnptYWdpZXInIGhlcmF1cy4gRGllIAorRmF1c3RyZWdlbCBsYXV0ZXQ6IGV0d2EgMSBGUCBwcm8gMTAgUmFldW1lLiBWZXJtZWlkZSBGUCBmdWVyIERldGFpbHMsIGRhbWl0CitkaWUgJ1VudGVyc3VjaGUtU2tyaXB0ZScga2VpbmUgQ2hhbmNlIGhhYmVuLiBHZWggbGllYmVyIHNvIHZvcjogCitEZXRhaWw6ICdncmFzJyAtPiAnRHUgd3VlcmRlc3QgRGljaCBhbSBsaWVic3RlbiBpbnMgR3JhcyBsZWdlbi4nCitXZW5uIGRlciBTcGllbGVyIGRhbm4gZWludGlwcHQgJ2xpZWcgaW5zIGdyYXMnIG9kZXIgc28gYWVobmxpY2gsIGdpYiBkYWZ1ZXIKK2RlbiBGUCwgYWJlciBuaWNodCBmdWVycyBVbnRlcnN1Y2hlbiB2b20gR3Jhcy4KK1dvZnVlciBEdSBhbGxlcyBGb3JzY2hlcnB1bmt0ZSBlaW50cmFnZW4ga2FubnN0LCBlcmZhZWhyc3QgRHUgZHVyY2gKKydoaWxmZSBmb3JzY2hlcnB1bmt0ZScuCitNYWNoZSBlaW4gcGFhciBWb3JzY2hsYWVnZSwgdW5kIHNjaGljayBzaWUgZGFubiBkZW0genVzdGFlbmRpZ2VuIEVyem1hZ2llci4KK0RlciB3aXJkIGF1cyBEZWluZW4gVm9yc2NobGFlZ2VuIGVpbiBwYWFyIHJhdXNwaWNrZW4gdW5kIGFuc2NobGllc3Nlbi4KK0FiZXIgYmV2b3IgRHUgZGFzIHR1c3QsIG11c3MgRGVpbiBHZWJpZXQgendpbmdlbmQgc2Nob24gaW0gUmVnaW9uc3ZlcnplaWNobmlzIAorbGllZ2VuLCBkYW1pdCBrZWluZSBGUHMgYXVzIC9wbGF5ZXJzIGVpbmdldHJhZ2VuIHdlcmRlbi4KKworR2xlaWNoemVpdCBtaXQgZGVuIEZQcyBtZWxkZXN0IER1IGF1Y2ggTWluaVF1ZXN0cyB1bmQgWmF1YmVydHJhZW5rZQorYmVpIGRpZXNlbSBFcnptYWdpZXIgYW4uIER1IG11c3N0IGFuZ2ViZW4sIHdpZXZpZWxlIFN0dWZlbnB1bmt0ZSBkaWUKK01pbmlxdWVzdCBicmluZ2VuIHNvbGwgdW5kIGluIHdlbGNoZSBkZXIgMyBLYXRlZ29yaWVuIGVpbmZhY2gvbWl0dGVsL3NjaHdlcgorRGVpbmUgWmF1YmVydHJhZW5rZSBmYWxsZW4uCisKK0RlbmtlIGRhcmFuLCBzcGFldGVzdGVucyBqZXR6dCBkaWUgR2lsZGVucXVlc3RzIHVuZCBHaWxkZW5vYmpla3RlIGJlaSBkZW4KK0dpbGRlbm1hZ2llcm4gYW56dW1lbGRlbi4gVW5hbmdlbWVsZGV0ZXMgZGFyZiBuaWNodCBhbmdlc2NobG9zc2VuIHdlcmRlbi4KK1dlbmRlIERpY2ggYWxzbyBmcnVlaCBnZW51ZyBhbiBkaWVzZSBMZXV0ZS4KKworLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorUCBIIEEgUyBFIDYKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KK0lzdCBhbGxlcyB2b24gZGVyIEJhbGFuY2UgZ2VuZWhtaWd0IHdvcmRlbiwgdW5kIHNpbmQgZGllIEZQIGFuZ2VzY2hsb3NzZW4sCitzb2xsdGVzdCBEdSBEZWluZSBSTXMgaW5mb3JtaWVyZW4uIEZhbGxzIERlaW4gR2ViaWV0IGltbWVyIG5vY2ggaW0KK0hlaW12ZXJ6ZWljaG5pcyBsaWVndCwgd2lyZCBlcyBudW4gaW4gZGVpbiBSZWdpb25zdmVyemVpY2huaXMKK3ZlcnNjaG9iZW4uIER1IHN0ZWhzdCBudW4ga3VyeiB2b3IgZGVtIEFuc2NobGllc3Nlbi4gVWViZXJsZWcgRGlyIGRvY2gKK3NjaG9uIGVpbmUgbmV0dGUgQm90c2NoYWZ0LCBkaWUgRHUgZGFubiBpbiBkZXIgTVBBIHZlcm9lZmZlbnRsaWNoZW4gd2lyc3QuCisKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KK1AgSCBBIFMgRSA3CistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCitHUkFUVUxBVElPTiEgRHUgaGFzdCBlcyBnZXNjaGFmZnQhIEFiZXIgamV0enQgbmljaHQgYXVmIGRlbiBMb2hyYmVlcmVuCithdXNydWhlbi4gRGllIGVyc3RlbiBTcGllbGVyIHdlcmRlbiBzaWNoIGVpbmZpbmRlbiwgdW5kIHZpZWxlIHNpbmQKK3dhbmRlbG5kZSBLb252ZXJzYXRpb25zbGV4aWtvbnMsIGRpZSBhdWNoIGRlbiBrbGVpbnN0ZW4gR3JhbW1hdGlrZmVobGVyIAoraW4gRGVpbmVuIEJlc2NocmVpYnVuZ2VuIGZpbmRlbi4gQW5kZXJlIFNwaWVsZXIgd2VyZGVuIERpciBuZXVlIFZvcnNjaGxhZWdlCitmdWVyIGNvbW1hbmRzIHp1c2VuZGVuLCBkaWUgaW4gZGllIGVudHNwcmVjaGVuZGVuIFJhZXVtZSBwYXNzZW4gd3VlcmRlbi4KK0luIC9sb2cvcmVwb3J0LzxtYWdpZXJuYW1lPi5yZXAgd2lyZCBhdXRvbWF0aXNjaCBEZWluIFJlcG9ydC1GaWxlIGVyemV1Z3QsCitpbiBkYXMgZGllIFNwaWVsZXIgZGllIGdlZnVuZGVuZW4gVHlwb3MsIEJ1Z3MgdW5kIHNvbnN0aWdlIElkZWVuIHJlaW5zY2hyZWliZW4uCitTY2hhdSBEaXIgRGVpbiBSZXBmaWxlIGFuLCB1bmQgYXJiZWl0ZSBlcyBhYiBzbyBndXQgZXMgZ2VodC4KK051ciBzbyB3aXJkIGRhcyBHZWJpZXQgenUgZWluZW0gd2lya2xpY2ggJ2dlcGZsZWd0ZW4nIEdlYmlldC4KK0RlbmtlIGRhcmFuLCBkYXMgcmVwLUZpbGUgbmFjaCBkZW0gQWJhcmJlaXRlbiB6dSBsb2VzY2hlbiwgc29uc3Qgd2lyZAorZXMgenUgdm9sbC4KKworCitTSUVIRSBBVUNIOgorICAgIGJhbGFuY2UsIGhpbGZlIG1hZ2llciwgL2RvYy93aXovCisKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KK0xhc3QgbW9kaWZpZWQ6IDE2OjAwIDIwMDMtMDItMjIgYnkgSHVtbmkKZGlmZiAtLWdpdCBhL2RvYy93aXovbGljaHQgYi9kb2Mvd2l6L2xpY2h0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmQ5OTVhMjMKLS0tIC9kZXYvbnVsbAorKysgYi9kb2Mvd2l6L2xpY2h0CkBAIC0wLDAgKzEsMzQgQEAKK0VpbmUgWnVzYW1tZW5mYXNzdW5nIGFsbGVyIExpY2h0cHJvcGVydGllcyAoZnVlciBnZW5hdWVyZXMgc2llaGUgbWFucGFnZXMpCisKK1BfTElHSFQgICAgICAgICAgICAgIC0gZ2lidCBhbiB3aWUgc3RhcmsgZWluZSBMaWNodHF1ZWxsZSBzZWxic3QgbGV1Y2h0ZXQuCisKK1BfVE9UQUxfTElHSFQgICAgICAgIC0gZ2lidCBkYXMgTGljaHRsZXZlbCBhbiwgZGFzIHZvbiBlaW5lbSBPYmpla3QgYXVzZ2VodCwKKyAgICAgICAgICAgICAgICAgICAgICAgZGllc2VzIGthbm4gIT0gUF9MSUdIVCBzZWluLCB6LkIuIHdlaWwgZWluZSBGYWNrZWwgaW4KKyAgICAgICAgICAgICAgICAgICAgICAgZWluZW0gUGFrZXQgbGllZ3QuCisKK1BfSU5UX0xJR0hUICAgICAgICAgIC0gTGljaHRsZXZlbCBpbiBlaW5lbSBPYmpla3QsIHouQi4gZWluIFJhdW0KKyAgICAgICAgICAgICAgICAgICAgICAgZ2lidCBhbiB3aWUgZ3V0IGRpZXNlcyBPYmpla3QgYXVzZ2VsZXVjaHRldCBpc3QuCisKK1BfUExBWUVSX0xJR0hUICAgICAgIC0gZ2lidCBhbiBtaXQgd2VsY2hlbSBMaWNodGxldmVsIGRlciBTcGllbGVyIGdlcmFkZSBzaWVodAorCitQX0xJR0hUX01PRElGSUVSICAgICAtIHZlcmFlbmRlcnQgZGVuIExpY2h0bGV2ZWwgZGVyIHZvbiBlaW5lbSBTcGllbGVyCisgICAgICAgICAgICAgICAgICAgICAgIHdhaHJnZW5vbW1lbiB3aXJkLCB6LkIuIGVpbmUgU29ubmVuYnJpbGxlCisKK1BfTElHSFRfQUJTT1JQVElPTiAgIC0gV2lldmllbCBMaWNodCB3aXJkIHZvbSBSYXVtIGdlc2NobHVja3Q/IHdpcmt0IHNpY2gKKyAgICAgICAgICAgICAgICAgICAgICAgZGlyZWt0IGF1ZiBQX0lOVF9MSUdIVCBkZXMgUmF1bWVzIGF1cy4gQW5kZXJlIFNwaWVsZXIKKyAgICAgICAgICAgICAgICAgICAgICAgcHJvZml0aWVyZW4gdm9uIGRlbiBMaWNodHF1ZWxsZW4gaWhyZXIgTWl0c3BpZWxlcgorICAgICAgICAgICAgICAgICAgICAgICB3ZW5pZ2VyIGJlaSBob2VoZXJlbiBXZXJ0ZW4uIERlZmF1bHQ6IDEuCisKK1BfTElHSFRfVFJBTlNQQVJFTkNZIC0gV2lldmllbCBMaWNodCBzY2hsdWNrdCBlaW4gQ29udGFpbmVyIHVuZCB3aWV2aWVsCisgICAgICAgICAgICAgICAgICAgICAgIExpY2h0IGRyaW5ndCBuYWNoIGF1c3Nlbi4gRGVmYXVsdHRyYW5zcGFyZW56OiAyCisKK0hpbndlaXM6IEFsbGUgT2JqZWt0ZSBtaXQgTGljaHRsZXZlbCA8MCB1bmQgPjIgc293aWUgYWxsZSBPYmpla3RlLCBkaWUKKyAgICAgICAgIFBfTElHSFRfTU9ESUZJRVIgb2RlciBDbG9zdXJlcyBzZXR6ZW4gc2luZCBnZW5laG1pZ3VuZ3NwZmxpY2h0aWchCisgICAgICAgICBEYWZ1ZXIgc2luZCBkaWUgUmVnaW9uc21hZ2llciB6dXN0YWVuZGlnLgorCisKK1NJRUhFIEFVQ0g6IFBfTElHSFQKKworLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgTEVUWlRFIEFlTkRFUlVORzoKKyAgICAyMDAyLTExLTIxLCAxNy4zMCB2b24gWm9vawpkaWZmIC0tZ2l0IGEvZG9jL3dpei9sdXBlIGIvZG9jL3dpei9sdXBlCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjI4ZTIzZmUKLS0tIC9kZXYvbnVsbAorKysgYi9kb2Mvd2l6L2x1cGUKQEAgLTAsMCArMSwyMDkgQEAKK0FMTEdFTUVJTkVTOgorCURpZSBMdXBlIGJlbnV0enQgZWluZW4gU3RhcGVsIChTdGFjayksIHVtIE9iamVrdGUgenUgYmVhcmJlaXRlbi4KKwlFaW5pZ2UgQmVmZWhsZSBzY2hpZWJlbiBPYmpla3RlIGF1ZiBkZW4gU3RhcGVsLCBhbmRlcmUgd2llZGVydW0KKwlob2xlbiBzaWUgd2llZGVyIHZvbSBTdGFwZWwgaGVydW50ZXIgdW5kIGJlbnV0emVuIHNpZSBmdWVyIGRpZQorCXZlcnNjaGllZGVuc3RlbiBad2Vja2UuCisJTWFuIGthbm4gaW4gZWluZXIgWmVpbGUgbWVocmVyZSBLb21tYW5kb3MgZ2xlaWNoemVpdGlnIGFuZ2ViZW4KKwkoZHVyY2ggTGVlcnplaWNoZW4gZ2V0cmVubnQpLgorCUVpbmUgWmVpbGUgd2lyZCBpbW1lciB2b24gbGlua3MgbmFjaCByZWNodHMgYWJnZWFyYmVpdGV0LgorCitTQ0hSRUlCV0VJU0VOOgorCTxhcmc+CS0gRWluZSBSZWloZSB2b24gWmVpY2hlbiwgZGllIHdlZGVyIExlZXJ6ZWljaGVuIG5vY2ggUHVua3RlCisJCSAgKC4pIGVudGhhZWx0LiBGYWxscyBkb2NoIExlZXJ6ZWljaGVuIG9kZXIgUHVua3RlIGluIDxhcmc+CisJCSAgYXVmdGF1Y2hlbiwgbXVzcyBtYW4gZGllIFplaWNoZW5rZXR0ZSB6d2lzY2hlbiAiLi4uIiwKKwkJICAnLi4uJyBvZGVyIHwuLi58IGVpbnNjaGxpZXNzZW4uCisJPG5yPgktIEVpbmUgKHBvc2l0aXZlIG9kZXIgbmVnYXRpdmUpIGdhbnplIFphaGwuCisJPGZpbGVuYW1lPiAtIEVpbiBEYXRlaW5hbWUuIEZ1ZXIgaWhuIGdpbHQgZGFzIEdsZWljaGUgd2llIGZ1ZXIgPGFyZz46CisJCSAgV2VubiBlciBQdW5rdGUgZW50aGFlbHQsIG11c3MgbWFuIGlobiB6d2lzY2hlbiAiLi4uIiwKKwkJICAnLi4uJyBvZGVyIHwuLi58IGVpbnNjaGxpZXNzZW4uCisJCSAgRXMgc2luZCBhbGxlIFZhcmlhdGlvbmVuIG1vZWdsaWNoLCBkaWUgbWFuIGF1Y2ggYXVzIGRlcgorCQkgIE1hZ2llcnNoZWxsIGtlbm50OiBhYnNvbHV0ZSBEYXRlaW5hbWVuIChiZWdpbm5lbiBtaXQgIi8iKSwKKwkJICBEYXRlaW5hbWVuIHJlbGF0aXYgenVtIGVpZ2VuZW4gSG9tZXZlcnplaWNobmlzICgifi8iKQorCQkgIG9kZXIgenVtIEhvbWV2ZXJ6ZWljaG5pcyBlaW5lcyBhbmRlcmVuIE1hZ2llcnMgKCJ+bmFtZS8iKSwKKwkJICBEYXRlaW5hbWVuIGluIGVpbmVyIFJlZ2lvbiAoIityZWdpb24vIikgdW5kIERhdGVpbmFtZW4KKwkJICByZWxhdGl2IHp1bSBha3R1ZWxsZW4gVmVyemVpY2huaXMgKGFsbGVzIGFuZGVyZSA7KS4KKwk8ZnVuYz4JLSBOYW1lIGVpbmVyIExQQy1GdW5rdGlvbi4KKwlUT1MJLSBEYXMgT2JqZWt0IGdhbnogb2JlbiBhdWYgZGVtIFN0YXBlbCAoVG9wIE9mIFN0YWNrKS4KKworREVSIFNUQVBFTDoKKwlCZWkgZGVtIFN0YXBlbCBoYW5kZWx0IGVzIHNpY2ggdW0gZWluZW4gTElGTy1TdGFwZWwgKExhc3QgSW4gLSBGaXJzdAorCU91dCksIGQuaC4gZGFzIE9iamVrdCwgZGFzIHp1bGV0enQgYXVmIGRlbiBTdGFwZWwgZ2VzY2hvYmVuIHd1cmRlLAorCXdpcmQgYWxzIGVyc3RlcyBiZWFyYmVpdGV0LgorCUJlaSBkZXIgQmVhcmJlaXR1bmcgd2lyZCBkZXIgVE9TIGluIGRlciBSZWdlbCB2b20gU3RhcGVsIGVudGZlcm50CisJKEF1c25haG1lbjogPSwgc3RrIHVuZCAjKSwgZGVyIFN0YXBlbCB3aXJkIGFsc28gaW0gTGF1ZmUgZGVyIFplaXQKKwl3aWVkZXIga2xlaW5lci4KKwlEZXIgU3RhcGVsIGthbm4gbWF4aW1hbCB6ZWhuIEVsZW1lbnRlIGF1Zm5laG1lbi4gRGllc2VzIExpbWl0IHdpcmQKKwltYW4gYmVpICJub3JtYWxlbSBCZXRyaWViIiBhbGxlcmRpbmdzIHNlbHRlbiBlcnJlaWNoZW4uCisJU29sbHRlIGVzIHRyb3R6ZGVtIGVpbm1hbCBlbmcgd2VyZGVuLCBzdGVoZW4gZWluZW0gbm9jaCB6ZWhuCisJVmFyaWFibGVuIHp1ciBWZXJmdWVndW5nLCBpbiBkZW5lbiBtYW4genVzYWV0emxpY2ggT2JqZWt0ZSAodm9tCisJU3RhcGVsKSBhYmxlZ2VuIGthbm4uCisKK0JFRkVITEU6CisJRXMgZ2lidCBkcmVpIHVudGVyc2NoaWVkbGljaGUgQmVmZWhsc2dydXBwZW46CisJYSkgQmVmZWhsZSwgZGllIGVpbiBPYmpla3QgYXVmIGRlbiBTdGFwZWwgc2NoaWViZW47CisJYikgQmVmZWhsZSwgZGllIG1pdCBPYmpla3RlbiBhdWYgZGVtIFN0YXBlbCBhcmJlaXRlbjsKKwljKSBCZWZlaGxlLCBkaWUgb2huZSBkZW4gU3RhcGVsIGF1c2tvbW1lbi4KKwlFaW5pZ2UgQmVmZWhsZSBzZXR6ZW4gdm9yYXVzLCBkYXMgZGVyIFRPUyBlaW4gTGViZXdlc2VuIG9kZXIgZ2FyIGVpbgorCVNwaWVsZXJvYmpla3QgaXN0OyBhbmRlcmUgQmVmZWhsZSBzaW5kIGVyc3QgYWIgZWluZW0gYmVzdGltbXRlbgorCU1hZ2llcmxldmVsIHp1Z2FlbmdsaWNoLiBEaWVzIGlzdCBiZWkgZGVuIGVudHNwcmVjaGVuZGVuIEJlZmVobGVuCisJamV3ZWlscyB2ZXJtZXJrdC4KKworICAgIERpZXNlIEJlZmVobGUgc2NoaWViZW4gZWluIG5ldWVzIE9iamVrdCBhdWYgZGVuIFN0YXBlbDoKKwljcmVhdCA8ZmlsZW5hbWU+IE1hY2h0IGRhcyBHbGVpY2hlIHdpZSAnbmV3JywgZGFzIE9iamVrdCB3aXJkIGFsbGVyLQorCQkJZGluZ3MgbmljaHQgaW4gRGVpbiBJbnZlbnRvcnkgZ2VzdGVja3QuCisJaGVyZQkJRGFzIE9iamVrdCwgaW4gZGVtIG1hbiBnZXJhZGUgc3RlaHQsIGF1ZiBkZW4gU3RhcGVsCisJCQlzY2hpZWJlbi4KKwlsdiA8YXJnPglTY2hpZWJ0IGRhcyBMZWJld2VzZW4gbWl0IGRlbSBsaXZpbmdfbmFtZSA8YXJnPiBhdWYKKwkJCWRlbiBTdGFwZWwuIEFDSFRVTkchIERhcyBtdXNzIGRhbm4gbmljaHQgdW5iZWRpbmd0CisJCQlkYXMgTGViZXdlc2VuIHNlaW4sIGRhcyBtYW4gZG9ydCBlaWdlbnRsaWNoIGhhYmVuCisJCQl3aWxsISBFcyB3aXJkIGVpbmZhY2ggZGFzIGVyc3RlIE9iamVrdCBnZW5vbW1lbiwKKwkJCWRlc3NlbiBsaXZpbmdfbmFtZSBwYXNzdCEgV2VubiBtYW4gZXR3YXMgbWl0IGVpbmVtCisJCQlOUEMgdm9yaGF0LCBkZXIgaW0gZ2xlaWNoZW4gUmF1bSBzdGVodCwgc3ByaWNodCBtYW4KKwkJCWlobiBiZXNzZXIgbWl0IGhlcmUubmFtZSBhbi4KKwltZQkJU2ljaCBzZWxic3QgYXVmIGRlbiBTdGFwZWwgc2NoaWViZW4uCisJbmV3IDxmaWxlbmFtZT4JQ2xvbmVkIGRhcyBtaXQgPGZpbGVuYW1lPiBhbmdlZ2ViZW5lIE9iamVrdCB1bmQKKwkJCXNjaGllYnQgZXMgYXVmIGRlbiBTdGFwZWwuIEFuc2NobGllc3NlbmQgYmVmaW5kZXQgZXMKKwkJCXNpY2ggaW4gRGVpbmVtIEludmVudG9yeS4KKwlvYiA8ZmlsZW5hbWU+CUxhZWR0IGRhcyBPYmpla3QsIGRhcyBtaXQgPGZpbGVuYW1lPiBhbmdlZ2ViZW4gaXN0LAorCQkJdW5kIHNjaGllYnQgZXMgYXVmIGRlbiBTdGFwZWwuCisJcGwgPGFyZz4JU2NoaWVidCBkYXMgU3BpZWxlcm9iamVrdCBtaXQgZGVtIE5hbWVuIDxhcmc+IGF1ZiBkZW4KKwkJCVN0YXBlbC4KKwkJCUVzIHdlcmRlbiBhdWNoIG5ldHp0b3RlIFNwaWVsZXIgYmVydWNrc2ljaHRpZ3QuCisJcHVzaCA8ZmlsZW5hbWU+IFNjaGllYnQgZGFzIE9iamVrdCwgZGFzIG1pdCA8ZmlsZW5hbWU+IGFuZ2VnZWJlbiBpc3QsCisJCQlhdWYgZGVuIFN0YXBlbC4KKwk8ZmlsZW5hbWU+CU1hY2h0IGRhcyBnbGVpY2hlIHdpZSAnb2InLCBmYWxscyA8ZmlsZW5hbWU+IG1pdCAiLyIKKwkJCW9kZXIgIn4iIGJlZ2lubnQuCisKKyAgICBEaWUgbmFlY2hzdGVuIEJlZmVobGUgc2NoYWx0ZW4gT3B0aW9uZW4gZGVyIEx1cGUgYW4vYXVzL3VtOgorCWRlc2MJCURpZSB6dXNhZXR6bGljaGUgQW5nYWJlIGRlciBLdXJ6YmVzY2hyZWlidW5nIGRlcworCQkJYWt0dWVsbGVuIE9iamVrdGVzIHdpcmQgdW50ZXJkcnVlY2t0LgorCXJlYwkJU2NoYWx0ZXQgaW4gZGVuICJyZWt1cnNpdiItTW9kdXMgdW0uIERpZXNlciBNb2R1cworCQkJd2lyZCB2b24gZm9sZ2VuZGVuIEJlZmVobGVuIGdlbnV0enQ6CisJCQknaW52JywgJ2NsbicgdW5kICdjbG5vZicKKwkJCU5hY2ggQXVzZnVlaHJ1bmcgZWluZXMgZGllc2VyIEJlZmVobGUgd2lyZCBkZXIKKwkJCSJyZWt1cnNpdiItTW9kdXMgYXV0b21hdGlzY2ggd2llZGVyIGFiZ2VzdGVsbHQuCisJbm9yZWMJCVN0ZWxsdCBkZW4gInJla3Vyc2l2Ii1Nb2R1cyAidm9uIEhhbmQiIGFiLgorCisgICAgRGllc2UgQmVmZWhsZSBzY2hpZWJlbiBlYmVuZmFsbHMgZWluIG5ldWVzIE9iamVrdCBhdWYgZGVuIFN0YXBlbC4gU2llCisgICAgYXJiZWl0ZW4gZGFiZWkgYWxsZXJkaW5ncyByZWxhdGl2IHp1bSBUT1MuIE1hbiBtdXNzIGFsc28gc2Nob24gbWluZGVzdGVucworICAgIGVpbiBPYmpla3QgYXVmIGRlbiBTdGFwZWwgZ2VzY2hvYmVuIGhhYmVuLiBEZXIgYWx0ZSBUT1Mgd2lyZCBkYWJlaSBpbiBkZXIKKyAgICBSZWdlbCBlbnRmZXJudC4KKwkuPG5yPgkJU2NoaWVidCBkYXMgPG5yPnRlIE9iamVrdCBpbSBJbnZlbnRvcnkgZGVzIFRPUyBhdWYgZGVuCisJCQlTdGFwZWwuCisJLjxhcmc+CQlTY2hpZWJ0IGRhcyBPYmpla3QgbWl0IGRlciBJRCA8YXJnPiBpbSBJbnZlbnRvcnkgZGVzCisJCQlUT1MgYXVmIGRlbiBTdGFwZWwuCisJPDxucj4JCVNjaGllYnQgZGllIFZhcmlhYmxlIDxucj4gYXVmIGRlbiBTdGFwZWwuIEFscyA8bnI+CisJCQlzaW5kIFdlcnRlIHp3aXNjaGVuIDAgdW5kIDkgbW9lZ2xpY2guCisJQDxucj4JCVNjaGllYnQgZGFzIDxucj50ZSBPYmpla3Qgdm9uIG9iZW4gbm9jaCBlaW5tYWwgYXVmIGRlbgorCQkJU3RhcGVsLiBEZXIgYWx0ZSBUT1MgaGF0IGRpZSBOdW1tZXIgMC4gV2VkZXIgZGVyIGFsdGUKKwkJCVRPUyBub2NoIGRhcyB2ZXJzY2hvYmVuZSBPYmpla3Qgd2VyZGVuIHZvbSBTdGFwZWwgZW50LQorCQkJZmVybnQuCisJCQlAMSBpc3QgYW5hbG9nIHp1ICdvdmVyJy4KKwljb3B5CQlMZWd0IGVpbmUgS29waWUgZGVzIFRPUyBhbiAoaW5rbC4gYWxsZXIgUHJvcGVydHl3ZXJ0ZSkKKwkJCXVuZCBzY2hpZWJ0IGRpZXNlIEtvcGllIGF1ZiBkZW4gU3RhcGVsLiBEaWUgS29waWUKKwkJCWJlZmluZGV0IHNpY2ggZGFuYWNoIGluIERlaW5lbSBJbnZlbnRvcnkuCisJZHVwCQlTY2hpZWJ0IGRlbiBUT1MgZG9wcGVsdCBhdWYgZGVuIFN0YXBlbC4KKwllbnYJCVNjaGllYnQgZGFzIE9iamVrdCwgaW4gZGVtIHNpY2ggZGVyIFRPUyBiZWZpbmRldCwgYXVmCisJCQlkZW4gU3RhcGVsLgorCW92ZXIJCVNjaGllYnQgZGFzIE9iamVrdCwgZGFzIHNpY2ggdW50ZXIgZGVtIFRPUyBiZWZpbmRldCwKKwkJCW5vY2htYWwgYXVmIGRlbiBTdGFwZWwuIERhYmVpIHdlcmRlbiB3ZWRlciBkZXIgYWx0ZQorCQkJVE9TIG5vY2ggZGFzIE9iamVrdCB1bnRlciBpaG0gZW50ZmVybnQuCisJcmVzdWx0CQlXZW5uIGluIGVpbmVtIE9iamVrdCBlaW5lIEZ1bmt0aW9uIGF1ZmdlcnVmZW4gd3VyZGUsCisJCQl1bmQgZGllc2UgRnVua3Rpb24gd2llZGVyIGVpbiBPYmpla3QgenVydWVja2dlZ2ViZW4KKwkJCWhhdCwgc28gd2lyZCBkaWVzZXMgT2JqZWt0IGF1ZiBkZW4gU3RhcGVsIGdlc2Nob2Jlbi4KKwlzd2FwCQlUYXVzY2h0IFRPUyB1bmQgZGFzIGRhcnVudGVyIGxpZWdlbmRlIEVsZW1lbnQgZ2VnZW4tCisJCQllaW5hbmRlciBhdXMuCisKKyAgICBEaWUgbmFlY2hzdGVuIEJlZmVobGUgYXJiZWl0ZW4gbWl0IGRlbiBhdWYgZGVtIFN0YXBlbCBsaWVnZW5kZW4gT2JqZWt0ZW4uCisgICAgRGFiZWkgd2VyZGVuIGRpZSBiZWFyYmVpdGV0ZW4gT2JqZWt0ZSBpbiBkZXIgUmVnZWwgdm9tIFN0YXBlbCBlbnRmZXJudC4KKwk+PG5yPgkJU3BlaWNoZXJ0IGRlbiBUT1MgaW4gZGVyIFZhcmlhYmxlbiA8bnI+LiBBbHMgPG5yPgorCQkJc2luZCBXZXJ0ZSB6d2lzY2hlbiAwIHVuZCA5IG1vZWdsaWNoLgorCT0JCVplaWd0IGRlbiBUT1MuIERpZXNlciBibGVpYnQgZGFiZWkgdW52ZXJhZW5kZXJ0LgorCSMJCURlciBTdGFjayBibGVpYnQgdWViZXIgZGFzIG5hZWNoc3RlIEtvbW1hbmRvIGhpbmF1cworCQkJZXJoYWx0ZW4uCisJaW52CQlaZWlndCBkYXMgSW52ZW50b3J5IGRlcyBUT1MuIERlciBUT1MgYmxlaWJ0IGRhYmVpCisJCQl1bnZlcmFlbmRlcnQuCisJY2xuCQlFbnRmZXJudCBhbGxlIE9iamVrdGUgYXVzIGRlbSBJbnZlbnRvcnkgZGVzIFRPUy4gRXMKKwkJCXdlcmRlbiBhbGxlcmRpbmdzIGtlaW5lIFNwaWVsZXIgZW50ZmVybnQuCisJY2xub2YgPGFyZz4JRW50ZmVybnQgYWxsZSBPYmpla3RlLCBkaWUgYXVmIGRpZSBJRCA8YXJnPiBhbnNwcmUtCisJCQljaGVuLCBhdXMgZGVtIEludmVudGFyIGRlcyBUT1MuCisJY2xyCQlMb2VzY2h0IGRlbiBnZXNhbXRlbiBTdGFjay4KKwlEZXN0CQlEZXIgVE9TIHdpcmQgemVyc3RvZXJ0LiBEYXMgZ2VodCBhbGxlcmRpbmdzIE5JQ0hULAorCQkJd2VubiBkZXIgVE9TIGVpbiBTcGllbGVyb2JqZWt0IG9kZXIgZGllIEx1cGUgc2VsYnN0CisJCQlpc3QuCisJZGVzdAkJV2llIERlc3QsIGFsbGVyZGluZ3Mgd2lyZCB6dWVyc3QgVE9TLT5yZW1vdmUoKSBhdWYtCisJCQlnZXJ1ZmVuLCB1bSBkZW0gVE9TIGRpZSBNb2VnbGljaGtlaXQgenUgZ2ViZW4sIG5vY2gKKwkJCWhpbnRlciBzaWNoIGF1Znp1cmFldW1lbi4KKwlkaW5mbwkJR2lidCBlaW5pZ2UgR2FtZURyaXZlci1pbnRlcm5lIEluZm9ybWF0aW9uZW4gd2llIHpCLgorCQkJZGllIFplaXQgZGVzIG5hZWNoc3RlbiByZXNldCgpLUF1ZnJ1ZnMgb2RlciBkaWUgYW4tCisJCQlnZXNhbW1lbHRlIGV2YWxjb3N0IGRlcyBUT1MgYXVzLgorCWRpc2NvCQlVbnRlcmJyaWNodCBkaWUgVmVyYmluZHVnIGRlcyBUT1MgKG11c3MgZWluIGFrdGl2ZXIKKwkJCVNwaWVsZXIgc2VpbikgenVtIE1HIChkaXNjb25uZWN0KS4KKwlobAkJWmVpZ3QgZGllIEhpc3RvcnlsaXN0ZSBkZXMgVE9TIGFuIChoaWVyYmVpIG11c3MgZXMKKwkJCXNpY2ggdW0gZWluZW4gU3BpZWxlciBoYW5kZWxuKS4KKwkJCURpZXNlciBCZWZlaGwgc3RlaHQgYWIgRUxERVJfTFZMICg1MCkgenVyIFZlcmZ1ZWd1bmcuCisJCQkhISFGdWVyIGRpZSBCZW51dHp1bmcgZ2lsdCBkYXMgR2xlaWNoZSB3aWUgZnVlciBkYXMKKwkJCVNub29wZW4hISEKKwlpZGxlCQlHaWJ0IGFuLCB3aWUgbGFuZ2UgZGVyIFRPUyBzY2hvbiBpZGxldC4gKERlciBUT1MKKwkJCXNvbGx0ZSBkYWJlaSBuYXR1ZXJsaWNoIGVpbiBTcGllbGVyIHNlaW4pLgorCWluZm8JCUdpYnQgZWluaWdlIEluZm9ybWF0aW9uZW4gdWViZXIgZGVuIFRPUyBhdXMuCisJaW5oZXJpdF9saXN0CUdpYnQgZGVuIFZlcmVyYnVuZ3NiYXVtIGRlcyBUT1MgYXVzIChhbGxlcmRpbmdzIG5pY2h0CisJCQlzZWhyIGJhdW1mb2VybWlnIDspCisJaW52CQlaZWlndCBkYXMgSW52ZW50b3J5IGRlcyBUT1MgYW4uCisKKwltYWtlCQlGdWVocnQgZWluIFVwZGF0ZSBkZXMgVE9TIGR1cmNoLiBHZWh0IG5pY2h0IGJlaQorCQkJU3BpZWxlcm4hIERhZnVlciBnaWJ0IGVzIHJlbmV3LgorCW1pbmZvCQlHaWJ0IGVpbmlnZSBJbmZvcm1hdGlvbmVuIHVlYmVyIGRlbiBTcGVpY2hlcnZlcmJyYXVjaAorCQkJZGVzIFRPUyBhdXMuCisJbW92ZSwgbW92LCBtbwlEYXMgT2JqZWt0LCBkYXMgdW50ZXIgZGVtIFRPUyBzdGVodCwgd2lyZCBpbiBkZW4gVE9TCisJCQlnZW1vdmVkLiBCZWlkZSBPYmpla3RlIHdlcmRlbiBkYWJlaSB2b20gU3RhcGVsIGVudC0KKwkJCWZlcm50LgorCV9tb3ZlLCBfbW92LCBfbW8sIF9tdgorCQkJRGFzIE9iamVrdCwgZGFzIHVudGVyIGRlbSBUT1Mgc3RlaHQsIHdpcmQgaW4gZGVuIFRPUworCQkJZ2Vtb3ZlZCwgb2huZSBkYXNzIGRvcnQgaW5pdCgpIGF1ZmdlcnVmZW4gd2lyZC4gQmVpZGUKKwkJCU9iamVrdGUgd2VyZGVuIGRhYmVpIHZvbSBTdGFwZWwgZW50ZmVybnQuCisJCQlEaWVzZXIgQmVmZWhsIHN0ZWh0IGFiIEFSQ0hfTFZMICg2MCkgenVyIFZlcmZ1ZWd1bmcuCisJcG9wCQlFbnRmZXJudCBkZW4gVE9TLgorCXJlbmV3CQlBZWhubGljaCB3aWUgJ21ha2UnLCBkZXIgVE9TIG11c3MgYWxsZXJkaW5ncyBlaW4KKwkJCVNwaWVsZXIgc2Vpbi4gQUNIVFVORyEgTWFuIHNvbGx0ZSBuaWNodCAiZWluZmFjaCBzbyIKKwkJCVNwaWVsZXIgJ3JlbmV3J2VuLCBzb25kZXJuIG51ciBkYW5uLCB3ZW5uIGVzIHdpcmtsaWNoCisJCQlnZXJlY2h0ZmVydGlndCBpc3QhCisJc2Nhbiwgc2MJS29tYmluaWVydCAnc3RhdCcgdW5kIGZpbmdlci4gRGVyIFRPUyBtdXNzIGVpbiBMZWJlLQorCQkJd2VzZW4gc2Vpbi4KKwlzdGF0CQlHaWJ0IEluZm9ybWF0aW9uZW4gdWViZXIgWnVzdGFuZCwgQXVzcnVlc3R1bmcsIGdlLQorCQkJbG9lc3RlIFF1ZXN0cyBldGMuIGRlcyBUT1MgYXVzLiBEZXIgVE9TIG11c3MgZGFiZWkKKwkJCWVpbiBMZWJld2VzZW4gc2Vpbi4KKwlzdGsJCVplaWd0IGRlbiBnZXNhbXRlbiBTdGFjay4gRGllc2VyIGJsZWlidCBkYWJlaSB1bnZlci0KKwkJCWFlbmRlcnQuCisJWzxmdW5jPl0JUnVmdCBpbSBUT1MgZGllIEZ1bmt0aW9uIDxmdW5jPiBvaG5lIFBhcmFtZXRlciBhdWYuCisJCQlGYWxscyBkaWVzZSBGdW5rdGlvbiBlaW4gT2JqZWt0IHp1cnVlY2tnaWJ0LCBrYW5uIG1hbgorCQkJZGllc2VzIGFuc2NobGllc3NlbmQgbWl0IHJlc3VsdCBhdWYgZGVuIFN0YXBlbAorCQkJc2NoaWViZW4uCisJWzxmdW5jPiA8YXJnMT4gLi4uIDxhcmduPl0KKwkJCVJ1ZnQgaW0gVE9TIGRpZSBGdW5rdGlvbiA8ZnVuYz4gbWl0IGRlbiBQYXJhbWV0ZXJuCisJCQk8YXJnMT4gYmlzIDxhcmduPiBhdWYuIERpZSBQYXJhbWV0ZXIgc2luZCBtaXQgTGVlci0KKwkJCXplaWNoZW4genUgdHJlbm5lbi4gRW50aGFsdGVuIGRpZSBQYXJhbWV0ZXIgc2VsYnN0CisJCQlMZWVyemVpY2hlbiwgc28gc2luZCBzaWUgaW4gIi4uLiIsICcuLi4nIG9kZXIgfC4uLnwKKwkJCWVpbnp1c2NobGllc3Nlbi4KKwkJCU1pdHRlbHMgQDxucj4ga2FubiBtYW4gYXVjaCBPYmpla3RlLCBkaWUgc2ljaCBhdWYgZGVtCisJCQlTdGFwZWwgYmVmaW5kZW4sIGFscyBBcmd1bWVudGUgYW5nZWJlbi4KKworICAgIERpZSBmb2xnZW5kZW4gQmVmZWhsZSBrb21tZW4gb2huZSBPYmpla3RlIGF1ZiBkZW0gU3RhY2sgYXVzOgorCWNhbGxfb3V0CUdpYnQgZWluZSBMaXN0ZSBhbGxlciBPYmpla3RlIG1pdCBlaW5lbSBsYXVmZW5kZW4KKwkJCWNhbGxfb3V0IGF1cy4KKwlkdW1wCQlTY2hyZWlidCBkaWUgTGlzdGVuIGFsbGVyIE9iamVrdGUgbWl0IGFrdGl2ZW0KKwkJCWhlYXJ0X2JlYXQgdW5kIGFsbGVyIE9iamVrdGUgbWl0IGxhdWZlbmRlbSBjYWxsX291dAorCQkJaW4gZGllIERhdGFpIExJU1RTLkxVUEUgaW4gRGVpbiBIb21ldmVyemVpY2huaXMuCisJZHVtcGhpc3RzCVNjaHJlaWJ0IGRpZSBCZWZlaGxzaGlzdG9yeSBhbGxlciBtb21lbnRhbiBlaW5nZS0KKwkJCWxvZ2d0ZW4gU3BpZWxlciBuYWNoIC9sb2cvQVJDSC9IRC4KKwkJCURpZXNlciBCZWZlaGwgc3RlaHQgZXJzdCBhYiBBUkNIX0xWTCAoNjApIHp1cgorCQkJVmVyZnVlZ3VuZy4KKwloZWFydF9iZWF0CUdpYnQgZWluZSBMaXN0ZSBhbGxlciBPYmpla3RlIG1pdCBha3RpdmVtIGhlYXJ0X2JlYXQKKwkJCWF1cy4KKwlydXNhZ2UJCVplaWd0IGVpbmlnZSBJbmZvcyB1ZWJlciBkZW4gUmVzc291cmNlbmdlLS8tdmVyYnJhdWNoCisJCQlkZXMgTXVkcyBhbi4KKwlzd2hvCQlaZWlndCAoc28gZ3V0IHdpZSkgYWxsZSBha3RpdmVuIFNub29wcy4KKwl2YXJzCQlaZWlndCBkaWUgYmVsZWd0ZW4gVmFyaWFibGVuIGFuLgorCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCitMYXN0IG1vZGlmaWVkOiBXZWQgSnVuIDI2IDE0OjQ5OjAyIDE5OTYgYnkgV2FyZ29uClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZG9jL3dpei9tYXRlcmlhbCBiL2RvYy93aXovbWF0ZXJpYWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uY2JmODAyMgotLS0gL2Rldi9udWxsCisrKyBiL2RvYy93aXovbWF0ZXJpYWwKQEAgLTAsMCArMSw5OCBAQAorTWF0ZXJpYWxpZW4KKz09PT09PT09PT09CisKKyAgICAgTWF0ZXJpYWxpZW4gaW4gTW9yZ2VuZ3JhdWVuIGtvZW5uZW4gdWViZXIgZGllIFByb3BlcnR5IFBfTUFURVJJQUwgamVkZW0gCisgICAgIE9iamVrdCBpbSBTcGllbCB6dWdlb3JkbmV0IHdlcmRlbi4gVWViZXIgZGllIE1hdGVyaWFsaWVuZGF0ZW5iYW5rIAorICAgICBzdGVoZW4gZGFmdWVyIGplZGUgTWVuZ2UgTWF0ZXJpYWxpZW4genVyIFZlcmZ1ZWd1bmcuIFdlbm4gbW9lZ2xpY2gsIAorICAgICBzb2xsdGVuIGRpZXNlIGF1Y2ggYmVudXR6dCB3ZXJkZW4sIGVzIHdlcmRlbiBEZWZhdWx0bWF0ZXJpYWxpZW4gCisgICAgIGdlc2V0enQsIGRpZXNlIGVudHNwcmVjaGVuIGFiZXIgc2VsdGVuIGV1cmVyIFJlYWxpdGFldC4KKworICAgICBEaWUgTWF0ZXJpYWxpZW5kYXRlbmJhbmsgL3NlY3VyZS9tYXRlcmlhbGRiLmMgaGFlbHQgc2FlbXRsaWNoZSAKKyAgICAgSW5mb3JtYXRpb25lbiB1ZWJlciBkaWUgdmVyd2VuZGJhcmVuIE1hdGVyaWFsaWVuLCBkaWUgdW50ZXIgCisgICAgIC9zeXMvdGhpbmcvbWF0ZXJpYWwuaCBhdWZnZWZ1ZWhydCBzaW5kLiBFcyBlbXBmaWVobHQgc2ljaCBTRUhSLCBWZXJ3ZWlzZQorICAgICBhdWYgZGllIE1hdERCIG51ciBpbiBGb3JtIHZvbiBNQVRFUklBTERCIHp1IGZvcm11bGllcmVuLgorICAgICBTaWUgdmVyd2FsdGV0IGF1Y2ggZGllIEVpZ2Vuc2NoYWZ0ZW4gZWluemVsbmVyIE1hdGVyaWFsaWVuLiBFcyBnaWJ0IAorICAgICBkaXZlcnNlIE1hdGVyaWFsaWVuZ3J1cHBlbiB3aWUgImVudGZsYW1tYmFyIiwgIk1ldGFsbCIsICJiaW9sb2dpc2NoZXMgCisgICAgIE1hdGVyaWFsIiwgZGVuZW4gZGllIE1hdGVyaWFsaWVuIGVudHNwcmVjaGVuZCB6dWdlb3JkbmV0IHNpbmQuIERpZXNlIAorICAgICBJbmZvcm1hdGlvbmVuIGtvZW5uZW4gbWl0IGVudHNwcmVjaGVuZGVuIE1ldGhvZGVuIGFiZ2VydWZlbi9hdXNnZXdlcnRldCAKKyAgICAgd2VyZGVuLgorICAgICBEYXJ1ZWJlciBoaW5hdXMgc2luZCBNYXRlcmlhbGllbiBiZWkgZGVyIEVya2VubnVuZyBtaXQgYW5kZXJlbiAKKyAgICAgTWF0ZXJpYWxpZW4gdmVyd2VjaHNlbGJhci4gV2llIGRhcyBnZW5hdSBmdW5rdGlvbmllcnQsIGlzdCBpbiAibWFuIAorICAgICBtYXRlcmlhbGVya2VubnVuZyIgYXVzZ2VmdWVocnQuCisKKyAgICAgUF9NQVRFUklBTDoKKyAgICAgICBEaWUgUHJvcGVydHkgUF9NQVRFUklBTCBpc3QgZ3J1bmRzYWV0emxpY2ggZWluIE1hcHBpbmcsIGluIGRlbSB6dSAKKyAgICAgICBqZWRlbSBNYXRlcmlhbCBkZXIgQW50ZWlsIGFuIGRlbSBPYmpla3Qgc3RlaGVuIHNvbGx0ZSwgWi5CLiBrYW5uIAorICAgICAgIGVpbiBTcGVlciB6dSA4MCUgYXVzIEhvbHogdW5kIHp1IDIwJSBhdXMgTWV0YWxsIChTcGVlcnNwaXR6ZSkgCisgICAgICAgYmVzdGVoZW46CisKKwlTZXRQcm9wKFBfTUFURVJJQUwsIChbTUFUX01JU0NfTUVUQUw6MjAsTUFUX01JU0NfV09PRDo4MF0pKQorCisgICAgICAgKFp1ciBWZXJlaW5mYWNodW5nIGlzdCBlcyBlcmxhdWJ0LCBiZWkgU2V0UHJvcCBlaW4gZWluemVsbmVzIE1hdGVyaWFsIAorICAgICAgICBvZGVyIGVpbiBBcnJheSBhdXMgTWF0ZXJpYWxpZW4gYW56dWdlYmVuLCBiZWlkZXMgd2lyZCBhdXRvbWF0aXNjaCAKKyAgICAgICAgdW1nZXdhbmRlbHQgaW4gZWluIE1hcHBpbmcgbWl0IGdsZWljaGVuIEFudGVpbGVuIGFsbGVyIE1hdGVyaWFsaWVuLikKKworICAgICBEZWZhdWx0cyBm/HIgUF9NQVRFUklBTDoKKwlXYWZmZW4gZ2VuZXJlbGw6CSAgIChbTUFUX01JU0NfTUVUQUw6MTAwXSkKKwlTY2h3ZXJ0ZXI6CQkgICAoW01BVF9NSVNDX01FVEFMOjEwMF0pCisgICAgCU1lc3NlcjoJCQkgICAoW01BVF9NSVNDX01FVEFMOjgwLCBNQVRfTUlTQ19XT09EOjIwXSkKKwlBZXh0ZToJCQkgICAoW01BVF9NSVNDX01FVEFMOjUwLCBNQVRfTUlTQ19XT09EOjUwXSkKKwlTcGVlcmU6CQkJICAgKFtNQVRfTUlTQ19NRVRBTDoyMCwgTUFUX01JU0NfV09PRDo4MF0pCisJS2V1bGVuOgkJCSAgIChbTUFUX01JU0NfV09PRDoxMDBdKQorCVJ1ZXN0dW5nZW4gZ2VuZXJlbGw6CSAgIChbTUFUX0xFQVRIRVI6MTAwXSkKKwlLb2VycGVycnVlc3R1bmdlbiwgSGVsbWUsCisJUmluZ2UsIEFtdWxldHRlLCBTY2hpbGRlOiAgKFtNQVRfTUlTQ19NRVRBTDoxMDBdKQorCVVtaGFlbmdlLCBIb3NlbjoJICAgKFtNQVRfQ0xPVEg6MTAwXSkKKwlIYW5kc2NodWhlLCBTY2h1aGU6CSAgIChbTUFUX0xFQVRIRVI6MTAwXSkKKwlhbmRlcmUgRGluZ2U6CQkgICAoW01BVF9NSVNDOjEwMF0pCisKKyAgICAgIFVlYmVyc2ljaHQgdWViZXIgZGllIE1ldGhvZGVuIGFuIE9iamVrdGVuICgvc3RkL3RoaW5nL2Rlc2NyaXB0aW9uKToKKwlpbnQgUXVlcnlNYXRlcmlhbChzdHJpbmcgbWF0KToKKwktIGdpYnQgJSBkZXMgTWF0ZXJpYWxhbnRlaWxzIHZvbiBtYXQgYW0gT2JqZWt0IHp1cnVlY2sKKwlpbnQgUXVlcnlNYXRlcmlhbEdyb3VwKHN0cmluZyBncnApOgorCS0gZ2lidCAlIGRlcyBNYXRlcmlhbGdydXBwZW5hbnRlaWxzIHZvbiBncnAgYW0gT2JqZWt0IHp1cnVlY2sKKwlzdHJpbmcgTWF0ZXJpYWxMaXN0KGludCBjYXN1cywgbWl4ZWQgaWRpbmYpOgorCS0gZ2lidCBTdHJpbmcgbWl0IFp1c2FtbWVuc2V0enVuZyBkZXMgT2JqZWt0ZXMgenVydWVjaworCisgICAgICBVZWJlcnNpY2h0IHVlYmVyIGRpZSBNZXRob2RlbiBhbSBNYXN0ZXIgKE1BVEVSSUFMREIpOgorCXN0cmluZyAqR2V0TWF0TWVtYmVyc2hpcChzdHJpbmcgbWF0KToKKwktIGFsbGUgR3J1cHBlbiwgaW4gZGVuZW4gZGFzIE1hdGVyaWFsIG1hdCBpc3QKKwlzdHJpbmcgKkdldEdyb3VwTWVtYmVycyhzdHJpbmcgZ3JwKToKKwktIGFsbGUgTWF0ZXJpYWxpZW4sIGRpZSBpbiBkZXIgR3J1cHBlIGdycCBzaW5kCisJc3RyaW5nIE1hdGVyaWFsTmFtZShzdHJpbmcgbWF0LCBpbnQgY2FzdXMsIG1peGVkIGlkaW5mKToKKwktIGVyZ2lidCBkaWUgc3BpZWxlcmxlc2JhcmUgQW5nYWJlIGVpbmVzIE1hdGVyaWFscyBtYXQKKwlzdHJpbmcgR3JvdXBOYW1lKHN0cmluZyBncnApOgorCS0gZXJnaWJ0IHNwaWVsZXJsZXNiYXJlIEFuZ2FiZSBkZXIgR3J1cHBlIGdycAorCXN0cmluZyBDb252TWF0ZXJpYWxMaXN0KG1peGVkIG1hdHMsIGludCBjYXN1cywgbWl4ZWQgaWRpbmYpOgorICAJLSB3aXJkIHZvbiBNYXRlcmlhbExpc3QoKSBtaXQgZGVuIE1hdGVyaWFsaWVuIGRlcyBPYmpla3RlcyBnZXJ1ZmVuCisJdm9pZCBEdW1wKCk6CisgIAktIHNjaHJlaWJ0IE1hdGVyaWFsaWVuIHVuZCBHcnVwcGVuIGluIC9wL2RhZW1vbi9zYXZlL01BVEVSSUFMUworCXN0cmluZyAqQWxsTWF0ZXJpYWxzKCk6CisJLSBMaXN0ZSBhbGxlciBha3R1ZWxsZW4gTWF0ZXJpYWxpZW4KKwlzdHJpbmcgKkFsbEdyb3VwcygpOgorCS0gTGlzdGUgYWxsZXIgYWt0dWVsbGVuIEdydXBwZW4KKworICAgICAgRmFsbHMgZXVjaCBlaW4gTWF0ZXJpYWwgZmVobHQ6CisJLSBmYWxscyBlcyBrZWluIGdlbmF1IHBhc3NlbmRlcyBNYXRlcmlhbCBnaWJ0LCBzb2xsdGUgbWFuIGRhcyBhbSAKKwkgIGVoZXN0ZW4gcGFzc2VuZGUgTUFUX01JU0MtTWF0ZXJpYWwgdmVyd2VuZGVuLgorCS0gZmFsbHMgZXMgc2ljaCBsb2huZW4gd3VlcmRlLCBkYXMgYmlzaGVyIG5vY2ggbmljaHQgZGVmaW5pZXJ0ZSAKKwkgIE1hdGVyaWFsIGVpbnp1YmF1ZW4gKHdlbm4gZXMgaGFldWZpZyBnZW51ZyB2ZXJ3ZW5kZXQgd2lyZCksIGJpdHRlIAorCSAgTWFpbCBhbiBlaW5lbiBFTSAoLT4gbWFuIEFkZE1hdGVyaWFsKCkgKQorCS0gdmVyc2NoaWVkZW5lIEVpZ2Vuc2NoYWZ0ZW4gbGFzc2VuIHNpY2gga29tYmluaWVyZW4uIFouQi4gYmVzdGVodCAKKwkgIGVpbiAodW5iZWthbm50ZXMpIGV4cGxvc2l2ZXMgR2FzIHp1IDEwMCUgYXVzIEdhcyB1bmQgenUgMTAwJSBhdXMgCisJICBleHBsb3NpdmVtIE1hdGVyaWFsLiBJbnNvZmVybiBrYW5uIG1hbiBlcyBtaXQKKyAgICAgICAgICBTZXRQcm9wKFBfTUFURVJJQUwsIChbTUFUX01JU0NfR0FTOjEwMCwgTUFUX01JU0NfRVhQTE9TSVZFOjEwMF0pKQorICAgICAgICAgIHp1c2FtbWVuc2V0emVuLgorCitTSUVIRSBBVUNIOgorICAgICBLb256ZXB0ZToJICBtYXRlcmlhbGVya2VubnVuZworICAgICBHcnVuZGxlZ2VuZDogUF9NQVRFUklBTCwgL3N5cy90aGluZy9tYXRlcmlhbC5oCisgICAgIE1ldGhvZGVuOiAgICBRdWVyeU1hdGVyaWFsKCksIFF1ZXJ5TWF0ZXJpYWxHcm91cCgpLCBNYXRlcmlhbExpc3QoKSwKKyAgICAgTGlzdGVuOgkgIEFsbE1hdGVyaWFscygpLCBBbGxHcm91cHMoKSwgRHVtcCgpCisJCSAgbWF0ZXJpYWxsaXN0ZSwgbWF0ZXJpYWxncnVwcGVuCisgICAgIE1hc3RlcjoJICBBZGRNYXRlcmlhbCgpLCBDb252TWF0ZXJpYWxMaXN0KCksIE1hdGVyaWFsR3JvdXAoKSwKKwkJICBHcm91cE5hbWUoKSwgTWF0ZXJpYWxOYW1lKCksCisJCSAgR2V0R3JvdXBNZW1iZXJzKCksIEdldE1hdE1lbWJlcnNoaXAoKQorICAgICBTb25zdGlnZXM6CSAgUF9NQVRFUklBTF9LTk9XTEVER0UKKworNy4gTWFpIDIwMDQgR2xvaW5zb24KZGlmZiAtLWdpdCBhL2RvYy93aXovbWF0ZXJpYWxlcmtlbm51bmcgYi9kb2Mvd2l6L21hdGVyaWFsZXJrZW5udW5nCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjk3NjEwNmYKLS0tIC9kZXYvbnVsbAorKysgYi9kb2Mvd2l6L21hdGVyaWFsZXJrZW5udW5nCkBAIC0wLDAgKzEsNzkgQEAKK01hdGVyaWFsZXJrZW5udW5nCis9PT09PT09PT09PT09PT09PQorCisgICAgIEJlaSBNYXRlcmlhbE5hbWUobWF0LGNhc3VzLGlkaW5mKSB1bmQgTWF0ZXJpYWxMaXN0KGNhc3VzLGlkaW5mKSBpZCBkZXIgCisgICAgIFBhcmFtZXRlciA8aWRpbmY+IGFscyBBbmdhYmUgZGFmdWVyIGdlZGFjaHQsIHdpZSBndXQgTWF0ZXJpYWxpZW4gCisgICAgIGVya2FubnQgd2VyZGVuIHNvbGxlbi4gRXMgc2luZCBmb2xnZW5kZSBBcnRlbiB2b24gQW5nYWJlbiBtb2VnbGljaDoKKworICAgICAgLSBFaW4gQXJyYXkKKwlEaWUgZWluemVsbmVuIEFycmF5ZWxlbWVudGUgd2VyZGVuIG5hY2ggdW50ZW5zdGVoZW5kZW4gUmVnZWxuIAorCWJlaGFuZGVsdCB1bmQgZGVyZW4gRXJnZWJuaXNzZSBhZGRpZXJ0LgorICAgICAgLSBFaW4gT2JqZWt0CisJSW4gZGllc2VtIEZhbGwgd2lyZAorCW9iLT5RdWVyeVByb3AoUF9NQVRFUklBTF9LTk9XTEVER0UpCisJbmFjaCB1bnRlbnN0ZWhlbmRlbiBSZWdlbG4gYmVoYW5kZWx0LgorCURpZXNlIFByb3BlcnR5IGlzdCBmdWVyIHJhc3NlbmFiaGFlbmdpZ2UgRmFlaGlna2VpdGVuIGdlZGFjaHQuCisgICAgICAtIEVpbmUgWmFobAorCUluIGRpZXNlbSBGYWxsIHdpcmQgZGVyIFdlcnQgZGlyZWt0IGFscyBGYWVoaWdrZWl0IGFuZ2VzZWhlbiwgZGFzIAorCU1hdGVyaWFsIGVya2VubmVuIHp1IGtvZW5uZW4uCisgICAgICAtIEVpbmUgQ2xvc3VyZQorCUluIGRpZXNlbSBGYWxsIHdpcmQgZGVyIFJldHVybndlcnQgdm9uCisJZnVuY2FsbChjbG9zdXJlLG1hdGVyaWFsLGdydXBwZW5faW5fZGVuZW5fZGllc2VfbWF0ZXJpYWxfaXN0KQorCWdlbm9tbWVuLgorICAgICAgLSBFaW4gTWFwcGluZworCUluIGVpbmVtIE1hcHBpbmcgc2luZCAzIEFydGVuIHZvbiBFaW50cmFlZ2VuIG1vZWdsaWNoOgorCS0gSXN0IGltIE1hcHBpbmcgdW50ZXIgPG1hdD4gZWluZSBaYWhsIGVpbmdldHJhZ2VuLCB3aXJkIGRpZXNlIAorCSAgZ2Vub21tZW4gdW5kIGRpZSB3ZWl0ZXJlbiBFaW50cmFlZ2UgbmljaHQgd2VpdGVyIGF1c2dld2VydGV0LgorICAgICAgICAtIERpZSBXZXJ0ZSB2b24gYWxsZW4gR3J1cHBlbiBpbSBNYXBwaW5nLCB6dSBkZW5lbiBkYXMgTWF0ZXJpYWwKKyAgICAgICAgICBnZWhvZXJ0LCB3ZXJkZW4gYWRkaWVydC4KKyAgICAgICAgLSBGYWxscyBkYXMgTWFwcGluZyBlaW5lbiBFaW50cmFnIE1BVEVSSUFMX1NZTU1FVFJJQ19SRUNPR05JWkFCSUxJVFkgCisgICAgICAgICAgaGF0LCBkZXIgZWluIEFycmF5IHZvbiBkZXIgCSAgRm9ybQorCQkoe2dydXBwZTEsIHdlcnQxLCBncnVwcGUyLCB3ZXJ0MiwgLi4ufSkKKwkgIGlzdCwgd2lyZCBmdWVyIGplZGUgZGllc2VyIEdydXBwZW4gZGVyIHp1Z2Vob2VyaWdlIFdlcnQgCisJICBhZGRpZXJ0LCBmYWxscyBkYXMgTWF0ZXJpYWwgaW4gZGVyIEdydXBwZSBpc3QsIHVuZCBzb25zdCAKKwkgIGFiZ2V6b2dlbi4KKyAgICAgICAgICBJbSBCZWlzcGllbDogKHtNQVRHUk9VUF9CSU86IDV9KSBnaWJ0IGVpbmVuIEVya2VubmJvbnVzIHZvbiA1JSBhdWYgCisgICAgICAgICAgYWxsZSBiaW9sb2dpc2NoZW4gTWF0ZXJpYWxpZW4sIGFiZXIgZWluZW4gTWFsdXMgdm9uIC01JSBhdWYgYWxsZSAKKyAgICAgICAgICBuaWNodGJpb2xvZ2lzY2hlbiBNYXRlcmlhbGllbi4KKworICAgICBTY2h3ZXIgZXJrZW5uYmFyZSBNYXRlcmlhbGllbiBoYWJlbiBpbiBkZXIgTWF0ZXJpYWxkYXRlbmJhbmsgZWluZSAKKyAgICAgenVzYWV0emxpY2hlIEFuZ2FiZSBkZXIgRm9ybQorCSh7bWF0MSwgd2VydDIsIG1hdDMsIHdlcnQ0LCBtYXQ1LCAuLi4gd2VydChuLTEpLCBtYXQobil9KQorICAgICB3b2JlaSBtYXQobikgZGFzIE1hdGVyaWFsIHNlbGJlciBpc3QuCisKKyAgICAgRGFzIGVya2FubnRlIE1hdGVyaWFsIGlzdCBkYXMgTWF0ZXJpYWwgbWF0KGspLCBiZWkgZGVtIGRpZQorCXdlcnQoay0xKSA8PSBFcmtlbm51bmdzZmFlaGlna2VpdCA8IHdlcnQoaysxKQorICAgICBpc3QuIEJlaSBFcmtlbm51bmdzZmFlaGlna2VpdCAxMDAgb2RlciBtZWhyIHdpcmQgZGFzIE1hdGVyaWFsIGF1ZiBqZWRlbiAKKyAgICAgRmFsbCBlcmthbm50LgorCisgICAgIERlciBXZXJ0IGZ1ZXIgRHVyY2hzY2huaXR0c3NwaWVsZXIgaXN0IDAuCisKK0JFSVNQSUVMOgorICAgICBBbmdlbm9tbWVuLCBiZWkgUGxhdGluIHdhZXJlIGRpZSBBbmdhYmUgaW4gZGVyIERhdGVuYmFuaworCSh7TWV0YWxsLCAtMjAsIFNpbGJlciwgMjAsIFBsYXRpbn0pCisgICAgIEVpbiBTcGllbGVyIG9obmUgYmVzb25kZXJlIEVya2VubnVuZ3NmYWVoaWdrZWl0ZW4gKGFsc28gV2VydCAwKSB3dWVyZGUgCisgICAgIGFsc28gUGxhdGluIGZ1ZXIgU2lsYmVyIGhhbHRlbiwgamVtYW5kLCBkZXIgdm9uIE1ldGFsbGVuIGtlaW5lIEFobnVuZyAKKyAgICAgaGF0IChiZWlzcGllbHN3ZWlzZSBtaXQgZGVyIEFuZ2FiZSAoW01BVEdST1VQX01FVEFMOi0yNV0pIGluIAorICAgICBQX01BVEVSSUFMX0tOT1dMRURHRSkgc2llaHQgbnVyIG5vY2gsIGRhc3MgZXMgZWluIE1ldGFsbCBpc3QgdW5kIGplbWFuZCAKKyAgICAgbWl0IHVlYmVyZHVyY2hzY2huaXR0bGljaGVyIEZhZWhpZ2tlaXQgZXJrZW5udCBQbGF0aW4gYWxzIGRhcywgd2FzIGVzIAorICAgICBpc3QuCisKKyAgICAgUF9NQVRFUklBTF9LTk9XTEVER0Uga29lbm50ZSB6LkIuIGZ1ZXIgUmFzc2VuIHdpZSBmb2xndCBnZXNldHp0IHdlcmRlbjoKKwlFbGY6ICAgKFtNQVRHUk9VUF9XT09EOjMwXSkKKwlad2VyZzogKFtNQVRHUk9VUF9TVE9ORTozMF0pCisgICAgIG9kZXIgZXR3YXMga29tcGxleGVyCisJWndlcmc6IChbTUFUR1JPVVBfU1RPTkU6MzAsCisJCSBNQVRFUklBTF9TWU1NRVRSSUNfUkVDT0dOSVpBQklMSVRZOiAoe01BVEdST1VQX0JJTzogLTV9KV0pCisKK1NJRUhFIEFVQ0g6CisgICAgIEtvbnplcHRlOgkgIG1hdGVyaWFsCisgICAgIEdydW5kbGVnZW5kOiBQX01BVEVSSUFMLCAvc3lzL3RoaW5nL21hdGVyaWFsLmgKKyAgICAgTWV0aG9kZW46ICAgIFF1ZXJ5TWF0ZXJpYWwoKSwgUXVlcnlNYXRlcmlhbEdyb3VwKCksIE1hdGVyaWFsTGlzdCgpLAorICAgICBMaXN0ZW46CSAgQWxsTWF0ZXJpYWxzKCksIEFsbEdyb3VwcygpLCBEdW1wKCkKKwkJICBtYXRlcmlhbGxpc3RlLCBtYXRlcmlhbGdydXBwZW4KKyAgICAgTWFzdGVyOgkgIEFkZE1hdGVyaWFsKCksIENvbnZNYXRlcmlhbExpc3QoKSwgTWF0ZXJpYWxHcm91cCgpLAorCQkgIEdyb3VwTmFtZSgpLCBNYXRlcmlhbE5hbWUoKSwKKwkJICBHZXRHcm91cE1lbWJlcnMoKSwgR2V0TWF0TWVtYmVyc2hpcCgpCisgICAgIFNvbnN0aWdlczoJICBQX01BVEVSSUFMX0tOT1dMRURHRQorCis3LiBNYWkgMjAwNCBHbG9pbnNvbgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2RvYy93aXovbWF0ZXJpYWxncnVwcGVuIGIvZG9jL3dpei9tYXRlcmlhbGdydXBwZW4KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNTIwMWJhZQotLS0gL2Rldi9udWxsCisrKyBiL2RvYy93aXovbWF0ZXJpYWxncnVwcGVuCkBAIC0wLDAgKzEsNTMgQEAKK01hdGVyaWFsZ3J1cHBlbgorPT09PT09PT09PT09PT09CisKKyAgRGllIGViZW5mYWxscyBrb21tZW50aWVydGUgTGlzdGUgdW50ZXIgL3N5cy90aGluZy9tYXRlcmlhbC5oIGlzdCBpbW1lcgorICBha3R1ZWxsZXIgYWxzIGRpZXNlIGhpZXIuCisKKyAgTUFUR1JPVVBfU09MSUQgICAgICAgICAgZmVzdGUgRGluZ2UKKyAgTUFUR1JPVVBfRkxVSUQgICAgICAgICAgRmx1ZXNzaWdrZWl0ZW4KKyAgTUFUR1JPVVBfR0FTICAgICAgICAgICAgR2FzZQorCisgIE1BVEdST1VQX1dPT0QgICAgICAgICAgIEhvZWx6ZXIKKyAgTUFUR1JPVVBfREVDSURVT1VTX1dPT0QgTGF1YmhvZWx6ZXIKKyAgTUFUR1JPVVBfQ09OSUZFUl9XT09EICAgTmFkZWxob2VsemVyCisgIE1BVEdST1VQX1RST1BJQ0FMX1dPT0QgIFRyb3BlbmhvZWx6ZXIKKyAgTUFUR1JPVVBfSkVXRUwgICAgICAgICAgRWRlbHN0ZWluZQorICBNQVRHUk9VUF9NSU5FUkFMICAgICAgICBNaW5lcmFsaWVuCisgIE1BVEdST1VQX1NUT05FICAgICAgICAgIFN0ZWluZQorICBNQVRHUk9VUF9NRVRBTCAgICAgICAgICBNZXRhbGxlCisgIE1BVEdST1VQX1BSRUNJT1VTX01FVEFMIEVkZWxtZXRhbGxlCisgIE1BVEdST1VQX1BBUEVSICAgICAgICAgIFBhcGllciB1bmQgQWVobmxpY2hlcworICBNQVRHUk9VUF9DTE9USCAgICAgICAgICBTdG9mZmUKKworICBNQVRHUk9VUF9FTEVNRU5UQUwgICAgICAoYWx0ZXJ0dWVtbGljaGUpIEVsZW1lbnRlCisgIE1BVEdST1VQX0JJTyAgICAgICAgICAgIEFsbGVzLCB3YXMgbGVidCBvZGVyIGxlYnRlCisgIE1BVEdST1VQX0xJVklORyAgICAgICAgIExlYmV3ZXNlbgorICBNQVRHUk9VUF9IRVJCQUwgICAgICAgICBQZmxhbnpsaWNoZXMKKyAgTUFUR1JPVVBfREVBRCAgICAgICAgICAgVWViZXJyZXN0ZSB2b24gTGViZXdlc2VuCisgIE1BVEdST1VQX0RSVUcgICAgICAgICAgIERyb2dlbiwgSGVpbHRyYWVua2UKKworICBNQVRHUk9VUF9JTkZMQU1NQUJMRSAgICBFbnRmbGFtbWJhcmVzCisgIE1BVEdST1VQX0VYUExPU0lWRSAgICAgIEV4cGxvc2l2ZXMKKyAgTUFUR1JPVVBfUE9JU09OT1VTICAgICAgR2lmdGlnZXMKKyAgTUFUR1JPVVBfTUFHSUMgICAgICAgICAgTWFnaXNjaGVzCisgIE1BVEdST1VQX1JBRElPQUNUSVZFICAgIFJhZGlvYWt0aXZlcworICBNQVRHUk9VUF9FTEVDVFJJQ0FMICAgICBFbGVrdHJpc2NoZXMKKyAgTUFUR1JPVVBfTUFHTkVUSUMgICAgICAgTWFnbmV0aXNjaGVzCisgIE1BVEdST1VQX0FDSURJQyAgICAgICAgIFNhdXJlcworICBNQVRHUk9VUF9FQVRBQkxFICAgICAgICBFc3NiYXJlcworICBNQVRHUk9VUF9GTEVYSUJMRSAgICAgICBCaWVnc2FtZXMKKyAgTUFUR1JPVVBfSU5WSVMgICAgICAgICAgVW5zaWNodGJhcmVzCisKK1NJRUhFIEFVQ0g6CisgICAgIEtvbnplcHRlOgkgIG1hdGVyaWFsLCBtYXRlcmlhbGVya2VubnVuZworICAgICBHcnVuZGxlZ2VuZDogUF9NQVRFUklBTCwgL3N5cy90aGluZy9tYXRlcmlhbC5oCisgICAgIE1ldGhvZGVuOiAgICBRdWVyeU1hdGVyaWFsKCksIFF1ZXJ5TWF0ZXJpYWxHcm91cCgpLCBNYXRlcmlhbExpc3QoKSwKKyAgICAgTGlzdGVuOgkgIEFsbE1hdGVyaWFscygpLCBBbGxHcm91cHMoKSwgRHVtcCgpCisJCSAgbWF0ZXJpYWxsaXN0ZQorICAgICBNYXN0ZXI6CSAgQWRkTWF0ZXJpYWwoKSwgQ29udk1hdGVyaWFsTGlzdCgpLCBNYXRlcmlhbEdyb3VwKCksCisJCSAgR3JvdXBOYW1lKCksIE1hdGVyaWFsTmFtZSgpLAorCQkgIEdldEdyb3VwTWVtYmVycygpLCBHZXRNYXRNZW1iZXJzaGlwKCkKKyAgICAgU29uc3RpZ2VzOgkgIFBfTUFURVJJQUxfS05PV0xFREdFCisKKzcuIE1haSAyMDA0IEdsb2luc29uClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZG9jL3dpei9tdWRsaWItY29kZXN0eWxlIGIvZG9jL3dpei9tdWRsaWItY29kZXN0eWxlCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjc3YjRiYWEKLS0tIC9kZXYvbnVsbAorKysgYi9kb2Mvd2l6L211ZGxpYi1jb2Rlc3R5bGUKQEAgLTAsMCArMSwzNiBAQAorV29sbHQgaWhyIENvZGUgaW4gZGVyIGFsbGdlbWVpbmVuLCBvZWZmZW50bGljaGVuIE11ZGxpYiBhbnNjaGxpZXNzZW4sIGJpdHRlCitiZWFjaHRldCBkaWUgZm9sZ2VuZGVuIEhpbndlaXNlIHp1bSBDb2Rlc3R5bGUgKG5pY2h0IGVyc2Nob2VwZmVuZCk6CisKKyogRWlucnVlY2t1bmdlbiBwZXIgTGVlcnplaWNoZW4sIG5pY2h0IFRhYnMKKyogRWlucnVlY2t1bmcgdm9uIDIgTGVlcnplaWNoZW4gcHJvIEViZW5lCisqIHByYWVnbmFudGUgdW5kIHZpZWxlIEtvbW1lbnRhcmUKKyoga2VpbmUgbGFtYmRhcworKiBCZWkgaW5saW5lLWNsb3N1cmVzIGRpZSBmdW5jdGlvbi1TeW50YXggc3RhdHQgZGVyICg6IDopLVN5bnRheCB2ZXJ3ZW5kZW4uCisqIGVsc2UsIGVsc2UgaWYgaW4gZWluZSBlaWdlbmUgWmVpbGUKKyogeyBhbSBCZWdpbm4gdm9uIEJsb2Vja2VuIHNvbGwgaW4gZWluZSBlaWdlbmUgWmVpbGUuCisqIE5hY2ggaWZzLCBMb29wcyAmIENvOiB1bWZhc3N0IGRlciBkYXZvbiBrb250cm9sbGllcnRlIENvZGUgbWVociBhbHMgZWluZQorICBwaHlzaXNjaGUgWmVpbGUgQ29kZSwgZWluZW4gQmxvY2sgbWl0IHsgfSBmb3JtdWxpZXJlbi4KKyoga2VpbmUgcmV0dXJuIGZ1bigpLCAwOworKiAodHlwZSkgQ2FzdHMgc29sbHRlbiB2ZXJtaWVkZW4gd2VyZGVuIChBdXNuYWhtZTogKHR5cGUpY2FsbF9vdGhlcikuCisgICh0eXBlKSBrb252ZXJ0aWVyZW4gbnVyLCB3ZW5uIGRpZSBUeXBlbiB6dXIgQ29tcGlsZXplaXQgYmVrYW5udCB1bmQKKyAgdW50ZXJzY2hpZWRsaWNoIHNpbmQuIERhaGVyIGJlaSBnZXd1ZW5zY2h0ZW4gS29udmVyc2lvbmVuIHRvX3R5cGUoKSBuZWhtZW4uCisqIFBmYWRlLCBkaWUgYWJzb2x1dCBzaW5kLCBzb2xsZW4gYXVjaCBtaXQgLyBiZWdpbm5lbiwgei5CLiAKKyAgaW5oZXJpdCAiL3N0ZC90aGluZyIsIG5pY2h0IGluaGVyaXQgInN0ZC90aGluZyIKKworQmVuZW5udW5nIHZvbiBQcm9wZXJ0aWVzOgorKiBkZXIgaW50ZXJuZSBOYW1lIHZvbiBQcm9wZXJ0aWVzIGluIGRlciBCYXNpcy1NdWRsaWIgYmVnaW5udCBpbW1lciBtaXQKKyAgInBfbGliXyIuIE5pZW1hbmQgc29uc3Qgc29sbHRlIFByb3BlcnRpZXMgbWl0IGRpZXNlbSBQcmFlZml4IGVyc3RlbGxlbi4KKworU29uc3RpZ2VzOgorKiBJbiBkZXIgTXVkbGliIHdpcmQga2VpbmUgbmV1ZSBGdW5rdGlvbihhbGl0YWV0KSBhbmdlc2NobG9zc2VuLCBiZXZvciBkaWUKKyAgRG9rdW1lbnRhdGlvbiBkYWZ1ZXIgZmVydGlnIGlzdC4KKyAgQW0gbGllYnN0ZW4gaXN0IG1pciwgYmVpIGRlciBLb256ZXB0ZW50d2lja2x1bmcgenVlcnN0IGRpZSBmZXJ0aWdlCisgIERva3VtZW50YXRpb24gKE1hbnBhZ2UpIGZ1ZXIgTnV0emVyL1NwaWVsZXIgenUgZW50d2lja2VsbiwgYmV2b3IgZWluIE1hZ2llcgorICB1ZWJlcmhhdXB0IGVpbmUgWmVpbGUgQ29kZSBzY2hyZWlidC4KKyogUGF0Y2hlcyBtdWVzc2VuIGVpbmUgWnVzYW1tZW5mYXNzdW5nIGhhYmVuLCB3ZWxjaGUga3VyeiBlcmxhZXV0ZXJ0LAorICB3YXMgZGllc2VyIFBhdGNoIGZpeGVuL2FlbmRlcm4vdmVyYmVzc2VybiBzb2xsIHVuZCBhdWYgd2VsY2hlIFdlaXNlCisgIGRpZXNlIHVtZ2VzZXR6dCB3aXJkLiAoQW5kZXJzIGdlc2FndDogZWluZSBDb21taXQtTWVzc2FnZSkKKworTEVUWlRFIEFlTkRFUlVORzoKKyAgMTUuOC4yMDE1LCBaZXNzdHJhCisKZGlmZiAtLWdpdCBhL2RvYy93aXovbXVzdGVyX3JhdW0uYyBiL2RvYy93aXovbXVzdGVyX3JhdW0uYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi43NGU0Yzk5Ci0tLSAvZGV2L251bGwKKysrIGIvZG9jL3dpei9tdXN0ZXJfcmF1bS5jCkBAIC0wLDAgKzEsODIgQEAKKy8qCisgKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAqIEVpbiBrbGVpbmVyIEJlaXNwaWVscmF1bS4KKyAqIEVyIGxhZXNzdCBzaWNoIGFscyAvb2JqL2RvYy9tdXN0ZXJfcmF1bSBhbnNwcmVjaGVuLgorICoKKyAqIERpZXNlcyBGaWxlIGlzdCBUZWlsIGRlciBNb3JnZW5HcmF1ZW4tTXVkbGliIHZvbiBKb2YgdW5kIFJ1bWF0YQorICogTGV0enRlIEFlbmRlcnVuZzogMTcuMDguOTIKKyAqICNpbmNsdWRlIGVpbmdlZnVlZ3Q6IFJ1bWF0YSAxMC4xMS45OAorICotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgKi8KKyNwcmFnbWEgc3Ryb25nX3R5cGVzLHJ0dF9jaGVja3MKKworaW5oZXJpdCAiL3N0ZC9yb29tIjsKKwkvKiBEaWVzZSBaZWlsZSBkZXV0ZXQgYW4sIGRhc3MgZGVyIFJhdW0gYXVzIGRlciBTdGFuZGFyZCBtdWRsaWIgKi8KKwkvKiBhYmdlbGVpdGV0IHdpcmQuIERpZXNlIFplaWxlIHNvbGx0ZSBpbiBKRURFTSBSYXVtIHZvcmtvbW1lbi4gKi8KKworI2luY2x1ZGUgPHByb3BlcnRpZXMuaD4KKwkvKiBEaWVzZSBaZWlsZSBkZWZpbmllcnQgZGllIGdyb3NzYnVjaHN0YWJpZ2VuIE5hbWVuLCBkaWUgaW4gZGVuICovCisJLyogU2V0UHJvcC1CZWZlaGxlbiBiZW51dHp0IHdlcmRlbi4gRXMgZ2lidCBub2NoIHdlaXRlcmUgKi5oICAgICAqLworCS8qIERhdGVpZW4sIGRpZSBhbmRlcmUgbnVldHpsaWNoZSBEaW5nZSBkZWZpbmllcmVuLiAgICAgICAgICAgICAgKi8KKworcHJvdGVjdGVkIHZvaWQgY3JlYXRlKCkKK3sKKwk6OmNyZWF0ZSgpOworCQkvKiBEaWVzZSBaZWlsZSBpbml0aWFsaXNpZXJ0IGRpZSBTdGFuZGFyZC1hdHRyaWJ1dGUuICovCisJCS8qIFNpZSBkYXJmIG5pY2h0IGZlaGxlbiAhICovCisKKwlTZXRQcm9wKFBfSU5UX1NIT1JULCAiTXVzdGVyLXJhdW0iICk7CisJCS8qIERpZSBCZXNjaHJlaWJ1bmcgZGVzIFJhdW1lcyBmdWVyIFNwaWVsZXIsIGRpZSBkZW4gKi8KKwkJLyoga3Vyei9icmllZi1Nb2R1cyBlaW5nZXN0ZWxsdCBoYWJlbi4gKi8KKworCVNldFByb3AoUF9JTlRfTE9ORywgIkRpZXNlcyBpc3QgZWluIE11c3RlcnJhdW0sIGRlciBudXIgenVyIEVybGFldXRlcnVuZ1xuIgorCQkrICJkaWVudC4gRWluIHVuYW5nZW5laG1lciBSYXVtIHZvbGxlciBTdGVybmUgdW5kIHNjaHJhZWdlclxuIgorCQkrICJTdHJpY2hlLiBJbSBTdWVkZW4ga2FubnN0IER1IGluIHZlcnRyYXV0ZXJlIFJhZXVtZSBmbGllaGVuLlxuIgorCQkrICJJbSBOb3JkZW4gaXN0IGV0d2FzIHNlbHRzYW1lcy5cbiIgKTsKKwkJLyogRGllc2UgQmVzY2hyZWlidW5nIGJla29tbWVuIFNwaWVsZXIsIGRpZSBkZW4ga3Vyei0gKi8KKwkJLyogTW9kdXMgbmljaHQgYmVudXR6ZW4sIG9kZXIgd2VubiBzaWUgInNjaGF1IiBlaW5nZWJlbi4gKi8KKworCVNldFByb3AoUF9MSUdIVCwgMSApOworCQkvKiBEaWVzZSBaYWhsIGlzdCAxIGZ1ZXIgUmFldW1lLCBpbiBkZW5lbiBtYW4gb2huZSAqLworCQkvKiBMaWNodHF1ZWxsZSBldHdhcyBzZWhlbiBrYW5uIHVuZCAwIGZ1ZXIgUmFldW1lLCAqLworCQkvKiBpbiBkZW5lbiBtYW4gZWluZSBTb2xjaGUgYnJhdWNodC4gKi8KKworCUFkZEV4aXQoICJzdWVkZW4iLCAicm9vbS9hZHZfZ3VpbGQiICk7CisJCS8qIEJhdWUgZWluZW4gQXVzZ2FuZyBuYWNoIFN1ZWRlbiwgZXIgd2lyZCBtaXR0ZWxzIGRlcyAqLworCQkvKiBLb21tYW5kb3MgImV4aXRzIiBhbmdlemVpZ3QuICovCisKKwlBZGRTcGVjaWFsRXhpdCggIm5vcmRlbiIsICJnb19ub3JkIiApOworCQkvKiBXZW5uIGRlciBTcGllbGVyIHZlcnN1Y2h0LCBkaWVzZW4gQXVzZ2FuZyB6dSAqLworCQkvKiBiZW51dHplbiwgc28gd2lyZCBlciBuaWNodCBpbiBlaW5lbiBhbmRlcmVuIFJhdW0gKi8KKwkJLyogYmV3ZWd0LCBzb25kZXJuIGVzIHdpcmQgaW0gUmF1bSBkaWUgYW5nZWdlYmVuZSAqLworCQkvKiBGdW5rdGlvbiBhdWZnZXJ1ZmVuLiAqLworCisJQWRkQ21kKCAiaGlsZmUiLCAiZ2liX2hpbGZlIiApOworCQkvKiBEaWVzZXMgS29tbWFuZG8gcnVmdCBkaWUgRnVua3Rpb24gImdpYl9oaWxmZSIgYXVmLCAqLworCQkvKiB3ZW5uIGRlciBTcGllbGVyIGRhcyBLb21tYW5kbyAiaGlsZmUiIGVpbmdpYnQuICovCisJCS8qIERhcyBLb21tYW5kbyB0YXVjaHQgbmljaHQgaW4gZGVyICJleGl0cy1saXN0ZSIgYXVmLiAqLworCit9CisKKy8qCisgKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAqIFNvIGpldHp0IGlzdCBkZXIgUmF1bSBmZXRpZy4KKyAqIFdpcmtsaWNoPyBOZWluLCBmYXN0LgorICogRGllIG9iZW4gYW5nZWdlYmVuZW4gRnVua3Rpb24gZmVobGVuIG5vY2gsIGFiZXIgZGFzIHNpbmQgYmVyZWl0cworICogIkV4dHJhcyIuCisgKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAqLworCitpbnQgZ29fbm9yZCgpCit7CisJd3JpdGUoICJIbW0gZGFzIHdhciB3b2hsIGRvY2ggbnVyIGRpZSBXYW5kLlxuIiApOworCXJldHVybiAxOworCQkvKiBEYXMgS29tbWFuZG8gd2lyZGUgZXJmb2xnZWljaCBiZWVuZGV0LiAqLworfQorCitpbnQgZ2liX2hpbGZlKCkKK3sKKwl3cml0ZSggIkdlaGUgbmFjaCBTdWVkZW4sIHVuZCBEdSBrb21tc3QgaW4gZGllIEFiZW50ZXVyZXItR2lsZGUuXG4iICk7CisJcmV0dXJuIDE7Cit9CisKZGlmZiAtLWdpdCBhL2RvYy93aXovbmFjaHRlaWxlIGIvZG9jL3dpei9uYWNodGVpbGUKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZDM3ZTU2ZgotLS0gL2Rldi9udWxsCisrKyBiL2RvYy93aXovbmFjaHRlaWxlCkBAIC0wLDAgKzEsNTEgQEAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KK05BQ0hURUlMRQorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorQmVpIGRlciBHZW5laG1pZ3VuZyB2b24gT2JqZWt0ZW4gaW0gQmFsYW5jZXRlYW0ga29tbXQgaW1tZXIgd2llZGVyIGRpZSBGcmFnZQorYXVmLCB3ZWxjaGUgTmFjaHRlaWxlIGRhcyBPYmpla3QgZGVubiBoYXQsIHdlbm4gZXMgc2Nob24gc28gdmllbGUgVm9ydGVpbGUKK2Jlc2l0enQuIEdlbmVyZWxsIGdpbHQsIGRhc3Mgc3RhcmtlIE9iamVrdGUgbnVyIGRhbm4gZ2VuZWhtaWd0IHdlcmRlbiwgd2Vubgorc2llIGF1Y2ggdWViZXIgZW50c3ByZWNoZW5kIGdyb3NzZSBOYWNodGVpbGUgdmVyZnVlZ2VuLgorCitEYWhlciBoaWVyIG1hbCBlaW5lIGtsZWluZSBBdWZsaXN0dW5nIGRlc3Nlbiwgd2FzIGFscyBzb2xjaGVyIGJldHJhY2h0ZXQKK3dpcmQ6CisKKy0gR2V3aWNodCAobmljaHQgYmVpIEtldWxlbiBmdWVyIEtsZXJpa2VyKQorCistIEFuZmFlbGxpZ2tlaXRlbiBnZWdlbiBTY2hhZGVuYXJ0ZW4KKworLSBMUC1LUC1BYnp1ZyAoT2JlcmdyZW56ZW4sIGplZGUgUnVuZGUsIGplZGVyIFJlc2V0KQorLSBBYnNlbmtlbiBkZXIgTWF4d2VydGUgdm9uIExQLCBLUAorLSBBYnNlbmtlbiB2b24gQXR0cmlidXRlbgorLSBBYnNlbmtlbiB2b24gU0FfU1BFRUQsIFNBX1FVQUxJVFkgdXN3LgorCistIFNjaGFkZW4vTnV0emVuIGFiaGFlbmdpZyB2b20gQWxpZ25tZW50CistIEdlbmVyZWxsZSBSZXN0cmlrdGlvbmVuCisKKy0gT2JqZWt0IG11c3MgYW4gZWluZXIgYmVzdGltbXRlbiBTdGVsbGUgKHouQi4gZHVyY2ggZGFzIFRvZXRlbiBlaW5lbiBOUEMpCisgIGF1ZmdlbGFkZW4gd2VyZGVuCistIHdpZWRlcmtlaHJlbmRlIEtvc3RlbiAoYXVzc2VyIExQL0tQIGF1Y2ggc293YXMgd2llIEdlbGQvSXRlbXMvQXVmZ2FiZSkKKworLSBCZWhpbmRlcnVuZyBhbmRlcmVyIE9iamVrdGUKKy0gQmVsZWd1bmcgdm9uIFNsb3RzIChTZXQpCisKKy0gU2tpbGxvYmpla3QKKworLSBCZWdyZW56dGUgSGFsdGJhcmtlaXQKKy0gQWJudXR6dW5nICh6LkIuIFBfUVVBTElUWSwgb2RlciBlaW5mYWNoIGR1cmNoIFplaXQvTmljaHRiZW51dHp1bmcpCistIFVtc3RhZW5kZSwgZGllIGRhcyBPYmpla3QgemVyc3RvZXJlbgorLSBCZWdyZW56dGUgV2lya3VuZyAoei5CLiBXYWZmZSB3aXJrdCBudXIgZ2VnZW4gZWluZSBSYXNzZSkKKworLSBVbmlxdWUKKy0gVW5pcXVlIG1pdCBiZWdyZW56dGVyIEFuemFobAorCitHZW5lcmVsbCBzb2xsdGVuIFBhcmFvYmpla3RlIGRpZSBSZXN0cmlrdGlvbiBTZWhlciBiZXNpdHplbiwgZGEgc2llIGF1Y2ggbnVyCit2b24gU2VoZXJuIGdlaG9sdCB3ZXJkZW4ga29lbm5lbi4gQWVobmxpY2hlIFJlc3RyaWt0aW9uZW4gc29sbHRlbiBmdWVyIAorT2JqZWt0ZSBhdXMgR2ViaWV0ZW4gZ2VsdGVuLCBkaWUgZXJzdCBhYiBlaW5lciBnZXdpc3NlbiBTdHVmZSBiZXRyZXRlbiAKK3dlcmRlbiBrb2VubmVuLgorCitPYmpla3RlLCBkaWUgbnVyIGluIGVuZyBiZWdyZW56dGVuIEdlYmlldGVuIHdpcmtlbiAoei5CLiBRdWVzdGl0ZW1zIHdpZSBkZXIgCitTcGlubmVudG9ldGVyKSBtdWVzc2VuIGJlaSBkZXIgQmFsYW5jZSBuaWNodCBiZWFudHJhZ3Qgd2VyZGVuLCBzZWxic3Qgd2Vubgorc2llIFdlcnRlIGJlc2l0emVuLCBkaWUgZGllIEJhbGFuY2VncmVuemVuIHVlYmVyc2NocmVpdGVuLgorCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCitMZXR6dGUgQWVuZGVydW5nOiAxOC4xMC4yMDA1IC0gTWlyaWwKZGlmZiAtLWdpdCBhL2RvYy93aXovbmV0eiBiL2RvYy93aXovbmV0egpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4yZGQ4Y2Y0Ci0tLSAvZGV2L251bGwKKysrIGIvZG9jL3dpei9uZXR6CkBAIC0wLDAgKzEsMjcgQEAKK1N0YW5kOiAxNy4wOC45MgorVWViZXJhcmJlaXRldCBhbSAyNC4wOC45NCB2b24gVmlwZXIKKworRGllIE5ldHpwaGlsb3NvcGhpZSBpbSBNb3JnZW5HcmF1ZW4KKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK0RpZSB3aWNodGlnZW4gV2VnZSB1bmQgVmVyYmluZHVuZ2VuIGluIE1vcmdlbkdyYXVlbiBzb2xsZW4gZWluZSBBcnQKK05ldHpzdHJ1a3R1ciAgYmVzaXR6ZW4sIGQuaC4gZXMgd2lyZCBuaWNodCBhbSBSYW5kIGFuZ2ViYXV0ICh3aWUgaW0gCithbHRlbiBORiksIHNvbmRlcm4gbWl0dGVuIGRyaW4uCisKK0JlaXNwaWVsOgorCitNYW4gc3RlbGxlIHNpY2ggZWluZSBTdHJhc3NlIGF1cyA2IFJhZXVtZW4gdm9yLiBBbSBBbmZhbmcgdmVybGFldWZ0CitkaWUgU3RyYXNzZSB2b24gT3N0ZW4gbmFjaCBXZXN0ZW4gb2huZSBiZXNvbmRlcmUgRGV0YWlscyBhbSAgV2VnZXMtCityYW5kLiBNaXQgZGVyIFplaXQgYmF1ZW4gZWluaWdlIE1hZ2llciBhdXMgZGllc2VyIFJlZ2lvbiAgbm9lcmRsaWNoCit1bmQgc3VlZGxpY2ggaWhyZSBSYWV1bWUgdW5kIFF1ZXN0cyBhbi4gSXJnZW5kd2FubiBqZWRvY2ggc2luZCBhbGxlIAorUmFldW1lIGF1c2dlc2Nob2VwZnQuIERhbm4ga2FubiAgZGVyICBFcnptYWdpZXIgZGVyIFJlZ2lvbiBaV0lTQ0hFTiAKK2RpZSBiZXN0ZWhlbmRlbiBSYWV1bWUgZGVyIFN0cmFzc2Ugd2VpdGVyZSBTdHJhc3NlbnJhZXVtZSBlaW5mdWVnZW4uIAorRG9ydCBrYW5uIGRhbm4gd2llZGVyIE5vZXJkbGljaCB1bmQgU3VlZGxpY2ggYW5nZWJhdXQgd2VyZGVuLiBJbiBkZW4gCituZXVlbiBTdHJhc3NlbnRlaWxlbiAgc29sbHRlbiBuYXR1ZXJsaWNoIGtlaW5lIE1vbnN0ZXIgb2RlciBIaW5kZXItCituaXNzZSBhdWZnZXN0ZWxsdCB3ZXJkZW4sIHNvIGRhc3MgZGllIFN0cmFzc2UgZnVlciBkaWUgU3BpZWxlcklubmVuIAorbGVkaWdsaWNoIGV0d2FzIGxhZW5nZXIgd2lyZCwgZG9ydCBhYmVyIGtlaW5lIG5ldWVuIFByb2JsZW1lIGF1ZiBpaG4KKy9zaWUgd2FydGVuLgorCitadXNhZXR6bGljaGUgSGluZGVybmlzc2Ugc29sbHRlbiBudXIgbmFjaCBBYnNwcmFjaGUgbWl0IGVpbmVtIEVyei0KK21hZ2llciAoZGFzIHNpbmQgZGllIE1hZ2llciBhYiBMZXZlbCA2MCkgaW4gYmVzdGVoZW5kZSBTdHJhc3NlbgorZWluZ2ViYXV0IHdlcmRlbi4KZGlmZiAtLWdpdCBhL2RvYy93aXovbnBjcyBiL2RvYy93aXovbnBjcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4wMjQyZTRjCi0tLSAvZGV2L251bGwKKysrIGIvZG9jL3dpei9ucGNzCkBAIC0wLDAgKzEsMTIxIEBACisgSElOV0VJU0UgWlUgTlBDUzoKKworICBhLiBBbGxnZW1laW5lcyAvIEhpbndlaXNlIC8gVGlwcHMKKworICAgICBEaWVzIHNpbmQgUmljaHRsaW5pZW4sIGtlaW5lIFZvcnNjaHJpZnRlbiEhISEKKworICAgICBOaWNodCBqZWRlciBOUEMgYnJhdWNodCBlaW5lbiBsaXZpbmdfbmFtZS4gTnVyIGluIGJlc29uZGVyZW4gTlBDcworICAgICBzb2xsdGUgbWFuIGVpbmVuIHNvbGNoZW4gc2V0emVuLiBBbGxlcyBhbmRlcmUgaXN0IHVuc2lubmlnIHVuZCBiZWxhc3RldAorICAgICBudXIgdW5ub2V0aWcgZGVuIFNwZWljaGVyLgorCisgICAgIEVpbiBNb25zdGVyIHNvbGx0ZSBuaWVtYWxzIHp1IHZpZWwgWmV1ZyBtaXQgc2ljaCBoZXJ1bXRyYWdlbi4gRWluIGJpcworICAgICB6d2VpIFNhY2hlbiByZWljaGVuIGltIE5vcm1hbGZhbGwuCisKKyAgICAgTmllbWFscyBzb2xsdGUgZWluIE1vbnN0ZXIgYWxsZWluIG1pdCBtZWhyZXJlbiBUb3AtUXVhbGl0YWV0cy1TYWNoZW4KKyAgICAgKHNlaHIgZ3V0ZSBXYWZmZSBwbHVzIGd1dGUgUnVlc3R1bmdbZW5dKSBhdXNnZXN0YXR0ZXQgc2Vpbi4gRGFzIHdhZXJlCisgICAgIGRvY2ggenUgZWluZmFjaC4KKworICAgICBEaWUgSGFlcnRlIGRlciBNb25zdGVyIGlzdCBpbSBQcmluemlwIGVnYWw7IHBmbGFzdGVydCBkaWUgR2ViaWV0ZSBydWhpZworICAgICBtaXQgSHlkcmVuLgorICAgICBOdXI6IEFuZmFlbmdlcm4gb2RlciBrbGVpbmVyZW4gU3BpZWxlcm4genVnYWVuZ2xpY2hlIEdlYmlldGUgc29sbHRlbgorICAgICBrZWluZSBBdXRvYXR0YWNrbW9uc3RlciBlbnRoYWx0ZW4sIGRpZSBkaWUgIktsZWluZW4iIGdsZWljaCB1bW5pZXRlbi4KKyAgICAgU29sY2hlIEdlZ2VuZGVuIHNvbGx0ZW4gZW50d2VkZXIgbWl0IFdhY2hlbiBiZXN0dWVja3Qgb2RlciBtaXQgZWluaWdlbgorICAgICB6dW5laG1lbmQgaGFlcnRlcmVuIE1vbnN0ZXJuIGVpbmVuICJWb3JnZXNjaG1hY2siIGJpZXRlbiwgZGFtaXQgbWFuCisgICAgIG5pY2h0IHVuYmVkYXJmdCByZWlucmVubnQuIFVuZmFlbGxlIHdpcmQncyBkZW5ub2NoIGdlYmVuLiBXYXMgc29sbCdzLAorICAgICBSb2NodXMgbGllYnQgc2VpbmUgU3RhdGlzdGlrLi4uIDopCisKKyAgICAgQXVjaCBiZWkgTlBDcyBrYW5uIGRpZSBQcm9wZXJ0eSBQX0lORk8gZ2VzZXR6dCB3ZXJkZW4sIGRpZXMgc29sbHRlCisgICAgIGluc2Jlc29uZGVyZSBiZWkgc3RhcmtlbiB1bmQgc3BlemllbGxlbiBOUENzIGdlbWFjaHQgd2VyZGVuLgorCisgICAgIEJlaSBOUENzLCBkaWUgYmVzb25kZXJlIFNwZWxscyBiZW51dHplbiwgc29sbHRlbiBkaWUgUk1zIGRhcmF1ZiBhY2h0ZW4sCisgICAgIGRhc3MgbmljaHQgcGxvZXR6bGljaCBkaWUgZ2FuemUgR2VnZW5kIHZvbiBOUENzIHdpbW1lbHQsIHZvbiBkZW5lbgorICAgICBqZWRlciBzZWluZW4gR2VnbmVyIGJsaW5kIG9kZXIgdGF1YiBtYWNodCBvZGVyIHZlcmdpZnRldC4KKworICAgICBOdXIgYWxzIFRpcHA6CisgICAgIE1vbnN0ZXIgbWl0IEF0dGFjay1DaGF0cyBzaW5kIGVyaGVibGljaCBrbmlmZmxpZ2VyIHp1IGtpbGxlbiB1bmQgbWFjaGVuCisgICAgIGF1Y2ggdW0gaWhyZXIgU2VsYnN0IHdpbGxlbiBtZWhyIFNwYXNzIGFscyBibG9lZGUgSGF1LURyYXVmLU1vbnN0ZXIsCisgICAgIGRpZSB6d2FyIHVlYmVyIHVuZW5kbGljaCBIUCB2ZXJmdWVnZW4sIGFiZXIgaW0gUHJpbnppcCBudXIgR2VkdWxkCisgICAgIGJyYXVjaGVuLCB1bSBzaWUgenUgYmVzaWVnZW4uIFBoYW50YXNpZSBpc3QgZ2VmcmFndC4KKworICBiLiBFaWdlbnNjaGFmdGVuCisgICAgICBGdWVyIGVpbmZhY2hlIE1vbnN0ZXIgYml0dGUgY3JlYXRlX2RlZmF1bHRfbnBjKCkgYmVudXR6ZW4hCisKKyAgICAgIEFuc29uc3RlbjoKKyAgICAgIFBfSEFORFMKKwlCZWkgTW9uc3Rlcm4gb2huZSBXYWZmZW4gc29sbHRlIGRpZSBQcm9wZXJ0eSBQX0hBTkRTIGluIGFsbGVuIGRyZWkKKwlXZXJ0ZW4gZGVtIEVyc2NoZWludW5nc2JpbGQgZGVzIE1vbnN0ZXJzIGVudHNwcmVjaGVuLCBhbHNvIGluIFRleHQsCisJU2NoYWRlbnNob2VoZSB1bmQgU2NoYWRlbnNhcnQuCisJQXVjaCBiZWkgTW9uc3Rlcm4gbWl0IGVpbmVyIFdhZmZlIHNvbGx0ZSBQX0hBTkRTIHZlcm51ZW5mdGlnIGdlc2V0enQKKwl3ZXJkZW4sIGFsc28gbmljaHQgenUgaG9jaC4gRGFyYXVmIHp1IGFjaHRlbiBpc3QgQXVmZ2FiZSBkZXIgUk1zLgorCisgICAgICBQX0JPRFkKKwlNb25zdGVyIHNvbGx0ZW4gbmljaHQgdWViZXIgdW5kdXJjaGRyaW5nbGljaGUgQm9kaWVzIHZlcmZ1ZWdlbiwgd2VpbAorCXNpZSBkYW5uIG51ciBtYWdpc2NoIHp1IHNjaGxhY2h0ZW4gc2luZC4gQm9kaWVzIHVlYmVyIDE1MCAob2RlcgorCVBfVE9UQUxfQUMgdWViZXIgMTUwIGluY2wuIFJ1ZXN0dW5nZW4hKSBzaW5kIGthdW0gbm9jaAorCSJoZXJrb2VtbWxpY2giIHp1IGtpbGxlbi4gTm9ybWFsZSBNb25zdGVyLCBhbHNvIG5pY2h0LW1hZ2lzY2hlLCBzaW5kCisJZWlnZW50bGljaCBpbW1lciBhbmZhZWxsaWcgZ2VnZW4gZGllIHBoeXNpa2FsaXNjaGVuIFNjaGFkZW5zdHlwZW4uCisJQWxzbyBiaXR0ZSBkYSBrZWluZSBQX1JFU0lTVEFOQ0Ugc2V0emVuLgorCisgICAgICBQX1JFU0lTVEFOQ0UvUF9WVUxCRVJBQklMSVRZL1BfUkVTSVNUQU5DRV9TVFJFTkdUSFMKKyAgICAgIFBfTk9NQUdJQworCURpZSBSRVNJU1RBTkNFIGRlciBNb25zdGVyIHNvbGx0ZSBzaWNoIGF1ZiBlaW4gb2RlciB6d2VpCisJU2NoYWRlbnN0eXBlbiBiZWdyZW56ZW4sIHVuZCBkaWUgc29sbHRlbiBhdWNoIGJlZ3J1ZW5kYmFyIHNlaW4uIEVpbgorCW5vcm1hbGVzIFdlc2VuIGdlZ2VuIEJMVURHRU9OLCBTTEFTSCBvZGVyIFBJRVJDRSB1bmVtcGZpbmRsaWNoIHp1CisJbWFjaGVuIGlzdCB1bmxvZ2lzY2ggdW5kIHNvbGx0ZSB2ZXJtaWVkZW4gd2VyZGVuLiBHbGVpY2hlcyBnaWx0IGZ1ZXIKKwlFbXBmaW5kbGljaGtlaXRlbi4KKwlFYmVuc28gc29sbHRlIGVzIEdydWVuZGUgZ2ViZW4sIHdhcnVtIGVpbiBNb25zdGVyIGVpbmUgTWFnaWUKKwl1bndpcmtzYW0gbWFjaHQuCisKKyAgICAgIFBfWFAKKwlEZXIgVG9ldHVuZ3Nib251cyBpbiBYUCwgZGllIGRlciBLaWxsZXIgZXJoYWVsdCwgYmV0cmFnZW4gMS8xMDAgZGVzCisJV2VydGVzLCBkZXIgaW4gUF9YUCBhbmdlZ2ViZW4gd2lyZC4gRGVyIFdlcnQgc2VsYnN0IHNvbGx0ZSBkZXIKKwlIYWVydGUgZGVzIE1vbnN0ZXJzIGFuZ2VtZXNzZW4gc2VpbiwgYWxzIEZhdXN0cmVnZWwgZnVlcgorCSdnZXdvZWhubGljaGUnIE5QQ3MgZ2lsdDoKKworCSAgUF9YUCA9IDUgKiBXQyAqIE1BWF9IUAorCisJRGllIFJNcyBzb2xsdGVuIGRhcmF1ZiBhY2h0ZW4sIGRhc3MgaGllciBrZWluZSB1ZWJlcmhvZWh0ZW4gV2VydGUKKwlnZXNldHp0IHdlcmRlbi4KKworCUZ1ZXIgQXR0YWNrLVNwZWxscyB1bmQgYWVobmxpY2ggZmllc2VzIGthbm4gZWluIEJvbnVzIGdlZ2ViZW4KKwl3ZXJkZW4uIEZ1ZXIgcXVlc3RyZWxldmFudGUgTlBDcyBvZGVyICJJbmZvcm1hdGlvbnMtTlBDcyIsIGRpZSBuaWNodAorCXVuYmVkaW5ndCBhbHMgTWV0emVsb2JqZWt0ZSBoZXJ1bXN0ZWhlbiwga2FubiBtYW4gYXVjaCBkaWUgRVAKKwlzZW5rZW4sIHVtIHNpZSBmdWVyIEVQLVNhbW1sZXIgdW5pbnRlcmVzc2FudCB6dSBtYWNoZW4uCisKKyAgICAgIFBfTVVSREVSX01TRy9QX0tJTExfTVNHCisJTmljaHQgamVkZXIgTlBDIGJyYXVjaHQgc2VpbmUgZWlnZW5lIE1vZXJkZXItIG9kZXIgS2lsbGVybWVsZHVuZy4KKwlCZWkgbm9ybWFsZW4gCU5QQ3Mgc29sbHRlIG1hbiBhbHNvIGRhcmF1ZiB2ZXJ6aWNodGVuLgorCisgICAgICBQX0RJRV9NU0cvUF9OT0NPUlBTRQorCVdlbm4gZWluIE5QQyBlaW4gd2VuaWcgYW5kZXJzIHVtZmFlbGx0IGFscyBzb25zdCwgdHJhZWd0IGRhcyBhdWNoCisJenVtIFNwaWVsIGJlaS4KKworICAgICAgUF9HVUFSRAorCVdlbm4gZGVyIE5QQyBuaWNodHMgYmV3YWNodCB1bmQgbmljaHQgdWViZXJtYWVzc2lnIHN0YXJrIGlzdCwgc29sbHRlCisJbWFuIGlobiBhdWNoIGZvcnRsb2NrZW4ga29lbm5lbi4gU2V0enQgUF9HVUFSRCBlbnRzcHJlY2hlbmQgdW5kCisJbGFzc3QgZGVuIE5QQyBtaXQgQWRkSXRlbSB1bmQgUkVGUkVTSF9NT1ZFX0hPTUUgZXJ6ZXVnZW4uCisKKyAgICAgIEFkZENsYXNzCisJV2VubiBpaHIgZXVyZW4gTlBDIGluIGRlbiBkZWZpbmllcnRlbiBLbGFzc2VuIGVpbm9yZG5lbiBrb2VubnQsIGRhbm4KKwltYWNodCBkYXMgYml0dGUuIEJlc2l0emVyIHZvbiBTcGV6aWFsd2FmZmVuIG9kZXIgUnVlc3R1bmdlbiB3ZXJkZW4KKwllcyBldWNoIGRhbmtlbi4KKworICBjLiBIaWxmcy0vQmVnbGVpdC1OUENzCisKKyAgICAgIEJlaSBzb2xjaGVuIE5QQyB3aXJkIGF1ZiBBdXNnZXdvZ2VuaGVpdCBXZXJ0IGdlbGVndCwgZGVyIFByb2dyYW1taWVyZXIKKyAgICAgIHNvbGx0ZSBzaWNoIHNjaG9uIHZvciBBbnRyYWctU3RlbGx1bmcgYW4gZGllIEJhbGFuY2UgR2VkYW5rZW4gZGFydWViZXIKKyAgICAgIG1hY2hlbiwgd2llIHNpY2ggZGVyIE5QQyBzZWxiZXIgdmVyaGFlbHQuCisgICAgICBCZWlzcGllbCB3YWVyZSBoaWVyIFVudmVydHJhZWdsaWNoa2VpdCBtaXQgYW5kZXJlbiBOUENzLAorICAgICAgQWdncmVzc2l2aXRhZXQgZ2VnZW51ZWJlciBhbmRlcmVuIE5QQ3MgLyBTcGllbGVybiwgV2Fua2VsLSBtdWV0aWdrZWl0LAorICAgICAgVW56dXZlcmxhZXNzaWdrZWl0LCB6ZWl0bGljaGUgQmVncmVuenVuZywgU2NodXR6IG9kZXIgU2NoYWRlbiBpbgorICAgICAgQWJoYWVuZ2lna2VpdCB2b24gQWxpZ24sIEdpbGRlIGRlcyBTcGllbGVycywgQW5ncmlmZiwgdm9tIE9ydCBkZXMKKyAgICAgIEdlc2NoZWhlbnMgb2RlciBkZXIgQmVnYWJ1bmcgZGVzIFNwaWVsZXJzIGZ1ZXIgTWFnaWUgdS5hZS4gRGVyCisgICAgICBQaGFudGFzaWUgc2luZCBoaWVyIGtlaW5lIEdyZW56ZW4gZ2VzZXR6dC4KKworU0lFSEUgQVVDSDoKKyAgICAgVmVyd2FuZHQ6ICAgIGJhbGFuY2UsIHJ1ZXN0dW5nZW4sIHdhZmZlbiwgZmVybndhZmZlbiwgdW5pcXVlcywKKyAgICAgICAgICAgICAgICAgIGdyZW56d2VydGUsIGF0dHJpYnV0c3ZlcmFlbmRlcnVuZ2VuLCByZXNpc3RlbnplbiwKKyAgICAgICAgICAgICAgICAgIGthbXBmb2JqZWt0ZSwgYmVnbGVpdG5wY3MKKyAgICAgRnVua3Rpb25lbjogIGNyZWF0ZV9kZWZhdWx0X25wYworCisxNC5GZWIgMjAwNyBHbG9pbnNvbgpkaWZmIC0tZ2l0IGEvZG9jL3dpei9vYmpfZ2VydWVzdCBiL2RvYy93aXovb2JqX2dlcnVlc3QKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZmMxZjk1NQotLS0gL2Rldi9udWxsCisrKyBiL2RvYy93aXovb2JqX2dlcnVlc3QKQEAgLTAsMCArMSwxMzQgQEAKKy8qCisgKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAqIG9ial9nZXJ1ZXN0CisgKiBEaWVzZXMgRmlsZSBpc3QgVGVpbCBkZXIgTW9yZ2VuZ3JhdWVuLU11ZGxpYi4KKyAqIERpZXNlcyBGaWxlIHdpcmQgb3B0aW1hbCBmb3JtYXRpZXJ0LCB3ZW5uIFRhYnVsYXRvcmVuIDQgWmVpY2hlbiBicmVpdAorICogc2luZC4KKyAqCisgKiBBbGxnZW1laW5lcyBHZXJ1ZXN0IGZ1ZXIgZWluIE9iamVrdC4gV2VyIGVpZ2VuZSBPYmpla3RlIHNjaHJlaWJ0LAorICogc29sbHRlIHNpZSBuaWNodCBnYW56IHNvIGludGVuc2l2IGtvbW1lbnRpZXJlbiB3aWUgZGllc2VzIGhpZXIsIGFiZXIKKyAqIGhpZXIgc29sbGVuIGdsZWljaHplaXRpZywgZGllIGdydW5kbGVnZW5kZW4gTWVjaGFuaXNtZW4gZXJsYWV1dGVydAorICogd2VyZGVuLgorICoKKyAqIDE2LjA4LjkyIFJ1bWF0YQorICogVWViZXJhcmJlaXRldCBhbSAyNC4wOC45NCB2b24gVmlwZXIKKyAqLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICovCitpbmhlcml0ICJzdGQvdGhpbmciOyAgICAgICAgICAgIC8qIExlaXRlIGF1cyBkZW4gc3RkLU9iamVrdGVuIGFiICovCisKKyNpbmNsdWRlIDxsYW5ndWFnZS5oPiAgICAgICAgICAgLyogU3RlbGxlIE5hbWVuIGRlciBGYWVsbGUgdW5kIGRlciBHZXNjaGxlY2h0ZXIgKi8KKwkJCQkJCQkvKiBkZW0gT2JqZWt0IHp1ciBWZXJmdWVndW5nLiAqLworCitjcmVhdGUoKQoreworCTo6Y3JlYXRlKCk7CisJCS8qIERpZXNlIFplaWxlIE5JRU1BTFMgdmVyZ2Vzc2VuISEhICovCisKKwlBZGRJZCggImJhbGwiICk7ICAgICAgICAKKwlBZGRJZCggInN0cmFuZGJhbGwiICk7CisJCS8qIFVudGVyIGRpZXNlbiBCZXplaWNobnVuZ2VuIGZ1ZWhsdCBkZXIgQmFsbCBzaWNoICJhbmdlc3Byb2NoZW4iICovCisJCS8qIE1hbm4gc29sbHRlIG1pdCBJZHMgbmljaHQgc3BhcmVuLCBkYW1pdCBkaWUgU3BpZWxlciBuaWNodCBld2lnICAqLworCQkvKiBudXIgbmFjaCBkZW0gcmljaHRpZ2VuIE5hbWVuIGVpbmVzIE9iamVrdGVzIHN1Y2hlbiBtdWVzc2VuLiAqLworCisJU2V0UHJvcCggUF9OQU1FLCAiQmFsbCIgKTsKKwlTZXRQcm9wKCBQX0dFTkRFUiwgTUFMRSApOworCVNldFByb3AoIFBfQVJUSUNMRSwgMSApOworCQkvKiBEaWVzZSBNZWxkdW5nZW4gZXJtb2VnbGljaGVuIGVzIGRlciBNdWRsaWIsIGRhcyBPYmpla3QgcmljaHRpZyAqLworCQkvKiB6dSBkZWtsaW5pZXJlbi4gU2V0UHJvcChQX0FSVElDTEUsIDEpIGthbm4gd2VnZmFsbGVuLCBkYSAxIERlZmF1bHQgaXN0LiAqLworCisJU2V0UHJvcCggUF9TSE9SVCwgIkVpbiBidW50ZXIgQmFsbCIgKTsKKwlTZXRQcm9wKCBQX0xPTkcsICJXYXMgZnVlciBlaW4gaHVlYnNjaGVyIGtsZWluZXIgU3RyYW5kYmFsbC5cbiIKKwkJCSsiV2VtIGtvZW5udGVzdCBEdSBkZW4gbWFsIHp1d2VyZmVuP1xuIiApOworCQkvKiBCZXNjaHJlaWJ1bmdlbiB6dXIgQmV0cmFjaHR1bmcgZGVzIEJhbGxzLiAqLworCisJU2V0UHJvcCggUF9WQUxVRSwgMTAgKTsKKwlTZXRQcm9wKCBQX1dFSUdIVCwgMjUwICk7CisJCS8qIEJlaSBkaWVzZW4gV2VydGVuIHNvbGx0ZSBkaWUgVmVyaGFlbHRuaXNtYWVzc2lna2VpdCAqLworCQkvKiBuaWNodCBhdXMgZGVuIEF1Z2VuIGdlbGFzc2VuIHdlcmRlbi4gKi8KK30KKworaW5pdCgpCit7CisJOjppbml0KCk7CisJCS8qIE5JQ0hUIFZFUkdFU1NFTiAqLworCQkvKiBXZW5uIGtlaW5lIGVpZ2VuZW4gQWt0aW9uZW4gZGVmaW5pZXJ0IHdlcmRlbiBzb2xsZW4sIHNvIGthbm4gZGllICovCisJCS8qIEZ1bmt0aW9uIGluaXQgZ2FueiB3ZWdnZWxhc3NlbiB3ZXJkZW4uIEVpbiBpbml0LCBkYXMgbnVyICovCisJCS8qIDo6aW5pdCgpIGF1ZnJ1ZnQgaXN0IHVlYmVyZmx1ZXNzaWcuICovCisKKwlhZGRfYWN0aW9uKCAid3VyZiIsICJ3ZXJmIiwgMSApOworCWFkZF9hY3Rpb24oICJ3dXJmIiwgIndpcmYiICk7CisJCS8qIHdlcmZlLCB3ZXJmIG9kZXIgd2lyZiBqZW1hbmRlbSBkZW4gQmFsbCB6dS4gTWFuIHNvbGx0ZSBkYXJhdWYgKi8KKwkJLyogYWNodGVuLCBkYXNzIG5hdHVlcmxpY2hlIFNhZXR6ZSBhbHMgRWluZ2FiZSBha3plcHRpZXJ0IHdlcmRlbi4gKi8KK30KKworLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisvKioqKioqKioqKioqKiBEaWUgZ3J1bmRsZWdlbmRlbiBGdW5rdGlvbmVuIGVuZGVuIGhpZXIgKioqKioqKioqKioqKioqKioqKi8KKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworCisKKy8qIEVpbmUgQmVpc3BpZWxha3Rpb24gZnVlciBkZW4gQmFsbC4gKi8KK3d1cmYoIGFyZ3VtZW50ICkKK3sKKwkvKiAid2VyZiBiYWxsIHJ1bWF0YSB6dSIgd2lyZCBhbHMgQXJndW1lbnQgImJhbGwgcnVtYXRhIHp1IiBiZWtvbW1lbi4gKi8KKwlzdHJpbmcgYXJnMSwgYXJnMjsKKwlzdHJpbmcgemllbDsKKwlvYmplY3QgemllbE9iajsKKworCWlmICggc3NjYW5mKCBhcmd1bWVudCwgIiVzICVzIHp1IiwgYXJnMSwgYXJnMiApICE9IDIgKSByZXR1cm4gMDsKKwkJLyogUnVlY2tnYWJlIHZvbiAwIGJlZGV1dGV0LCBkYXNzIGRpZXNlcyBPYmpla3QgbWl0IGRlciBFaW5nYWJlICovCisJCS8qIG5pY2h0cyBhbmZhbmdlbiBrb25udGUsIHVuZCBkYXNzIGRlciBHYW1lZHJpdmVyIGRhcyBuYWVjaHN0ZSAqLworCQkvKiBPYmpla3QgYmVmcmFnZW4gc29sbC4gKi8KKworCWlmICggaWQoIGFyZzEgKSApCisJCQkvKiBXZWxjaGVzIGRlciBBcmd1bWVudGUgc3ByaWNodCBkZW4gQmFsbCBhbiA/ICovCisJCQkvKiBEYXMgYW5kZXJlIG11c3MgZGFubiBkYXMgWmllbCBkZXMgQmFsbHMgc2Vpbi4gKi8KKwkJemllbCA9IGFyZzI7CisJZWxzZSBpZiAoIGlkKCBhcmcyICkgKQorCQl6aWVsID0gYXJnMTsKKwllbHNlCisJCXJldHVybiAwOworCQkJLyogS2VpbmVzIGRlciBBcmd1bWVudGUgd2FyIGRlciBCYWxsLiAqLworCisJemllbE9iaiA9IHByZXNlbnQoIHppZWwsIGVudmlyb25tZW50KCkgKTsKKwkJLyogU3VjaGUgZWluIE9iamVrdCwgZGFzIHNpY2ggYWxzIFppZWwgYW5nZXNwcm9jaGVuIGZ1ZWhsdC4gKi8KKworCWlmICggISB6aWVsT2JqICkKKwl7CisJCXdyaXRlKCAiSGllciBpc3Qga2VpbiBcIiIgKyB6aWVsICsgIlwiLlxuIiApOworCQlyZXR1cm4gMTsKKwkJCS8qIEhpZXIgd2lyZCAxIHp1cnVlY2tnZWdlYmVuLCBkYSBkZXIgQmFsbCBkYXMgS29tbWFuZG8gZGVuICAqLworCQkJLyogQmVmZWhsIGJlYXJiZWl0ZW4ga29ubnRlLiBFciBoYXQgendhciBrZWluIFppZWwgZ2VmdW5kZW4sICovCisJCQkvKiBhYmVyIG1hbiBrYW5uIGphIG5pY2h0IGFsbGVzIGhhYmVuLiA6LSkgKi8KKwl9CisJCisJaWYoICFsaXZpbmcoIHppZWxPYmogKSApCisJeworCQl3cml0ZSggIlVuZCB3aWUgc29sbCAiICsgemllbE9iai0+bmFtZShXRVIsMSkgKyAiIGRlbiBCYWxsIGZhbmdlbj9cbiIgKTsKKwkJcmV0dXJuIDE7CisJCQkvKiBOdXIgbGViZW5kZSBXZXNlbiBzb2xsZW4gQmFlbGxlIGZhbmdlbiBrb2VubmVuLiAqLworCX0KKworCXdyaXRlKCAiRHUgd2lyZnN0ICIgKyB6aWVsT2JqLT5uYW1lKFdFTiwxKSArICIgZGVuIEJhbGwgenUuXG4iICk7CisJCQkvKiBNaXR0ZWlsdW5nIGFuIGRlbiBXZXJmZXIgKi8KKwlzYXkoIFBMLT5uYW1lKFdFUiwyKSArICIgd2lyZnQgIiArIHppZWxPYmotPm5hbWUoV0VNLDIpCisJCSsgIiBlaW5lbiBCYWxsIHp1LlxuIiwgemllbE9iaiApOworCQkJLyogTWl0dGVpbHVuZyBhbiBhbGxlIFdlc2VtIGltIHNlbGJlbiBSYXVtLiAqLworCXRlbGxfb2JqZWN0KCB6aWVsT2JqLCAiSG9wcGxhLCAiICsgUEwtPm5hbWUoV0VSLDIpCisJCSsgIiB3aXJmdCBEaXIgZWluZW4gQmFsbCB6dS5cbiIgKTsKKwkJCS8qIE1pdHRlaWx1bmcgYW4gZGVuIEJld29yZmVuZW4gKi8KKworCWlmICggbW92ZSggemllbE9iaiApICkgcmV0dXJuIDE7CisJCS8qIEVzIGhhdCBnZWtsYXBwdC4gKi8KKworCW1vdmUoIGVudmlyb25tZW50KCkgKTsKKwkJLyogSW0gRmVobGVyZmFsbCBzb2xsIGRlciBCYWxsIHp1IEJvZGVuIGZhbGxlbi4gKi8KKworCXdyaXRlKCAiQWJlciAiICsgemllbE9iai0+UXVlcnlQcm9ub3VuKFdFUikKKwkJKyAiIGthbm4gaWhuIG5pY2h0IGZhbmdlbi5cbkRlciBCYWxsIHBsdW1wc3QgenUgQm9kZW4uXG4iICk7CisJc2F5KCAiQWJlciAiICsgemllbE9iai0+UXVlcnlQcm9ub3VuKFdFUikKKwkJKyAiIGthbm4gaWhuIG5pY2h0IGZhbmdlbi5cbkRlciBCYWxsIHBsdW1wc3QgenUgQm9kZW4uXG4iLCB6aWVsT2JqICk7CisJdGVsbF9vYmplY3QoIHppZWxPYmosCisJCSJBYmVyIER1IGthbm5zdCBpaG4gbmljaHQgZmFuZ2VuLlxuRGVyIEJhbGwgcGx1bXBzdCB6dSBCb2Rlbi5cbiIgKTsKKworCXJldHVybiAxOworfQpkaWZmIC0tZ2l0IGEvZG9jL3dpei9wYXJhcmFldW1lIGIvZG9jL3dpei9wYXJhcmFldW1lCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjkyNjNkYTYKLS0tIC9kZXYvbnVsbAorKysgYi9kb2Mvd2l6L3BhcmFyYWV1bWUKQEAgLTAsMCArMSw4NCBAQAorUGFyYS1SYWV1bWUKKworICAgIEdydW5kc2FldHpsaWNoIHdpcmQgZWluIFBhcmEtUmF1bSBkYWR1cmNoIGdla2VubnplaWNobmV0LCBkYXNzIGFuIGRlbiAKKyAgICBEYXRlaW5hbWVuIGVpbiBebiBhbmdlaGFlbmd0IHdpcmQsIG4gZ2lidCBkaWUgRGltZW5zaW9uIGFuLiBFaW4gUmF1bSBpbiAKKyAgICBQYXJhIDEgd3VlcmRlIGFsc28gcmF1bV4xLmMgaGVpc3Nlbi4KKworICAgIE1hbiBtdXNzIHNpY2ggbmljaHQgc2VsYnN0IGRhcnVtIGt1ZW1tZXJuLCBkYXNzIFNwaWVsZXIgaW4gZGVuIHJpY2h0aWdlbgorICAgIFBhcmEtUmF1bSBiZXdlZ3Qgd2VyZGVuLCBkYXMgcGFzc2llcnQgaW0gbW92ZSgpLgorCisgICAgRGFtaXQgbWFuIGJlaSBnbGVpY2hlbiBSYWV1bWVuLCBkaWUgc2ljaCBudXIgZHVyY2ggYmVpc3BpZWxzd2Vpc2UgZGllCisgICAgQW53ZXNlbmhlaXQgZWluZXMgZmllc2VuIE1vbnN0ZXJzIHVudGVyc2NoZWlkZW4gbmljaHQgYWxsZXMgZG9wcGVsdAorICAgIGJlc2NocmVpYmVuIG11c3MsIHNvbGx0ZSBtYW4gZGFzIGJla2FubnRlIEtvbnplcHQgZGVyIFZlcmVyYnVuZworICAgIHZlcndlbmRlbi4gSGllcmZ1ZXIgZ2lidCBlcyB6d2VpIEFuc2FldHplOgorCitMT0VTVU5HIDE6CisgICAgSGFiZSBpY2ggZWluZW4gUmF1bSwgZGVyIGluIFBhcmEgZXhha3Qgc28gaXN0IHdpZSBpbiBOb3JtYWwsIHdvIG51ciBlaW5lCisgICAgU2FjaGUgaGluenVnZWZ1ZWd0IHdpcmQsIHNjaHJlaWJlIGljaCBtZWluZW4gUmF1bSBpbiBub3JtYWwgc28gd2llIGljaCBlcworICAgIGltbWVyIHR1biB3dWVyZGUsIGVyYmUgZGllc2VuIGltIFBhcmEtUmF1bSB1bmQgc2V0emUgbWVpbiBmaWVzZXMgTW9uc3RlcgorICAgIGhpbmVpbi4KKyAgICBFaW56aWdlciBVbnRlcnNjaGllZCBpbSBOb3JtYWwtUmF1bTogRGFtaXQgZXIgaW1tZXIgaW5pdGlhbGlzaWVydCB3aXJkLAorICAgIG11c3MgaWNoIGNyZWF0ZV9zdXBlcigpIGVyc3RlbGxlbiB1bmQgZGFyaW4gY3JlYXRlIGF1ZnJ1ZmVuLiBTb25zdCBidWdndAorICAgIGRlciBOb3JtYWxyYXVtIGJlaW0gQmV0cmV0ZW4sIGZhbGxzIGRlciBQYXJhcmF1bSB6dWVyc3QgYmV0cmV0ZW4gd3VyZGUsCisgICAgd2VpbCBkZXIgTm9ybWFscmF1bSBkYW5uIHp3YXIgZ2VsYWRlbiBhYmVyIHNlbGJzdCBuaWNodCBpbml0aWFsaXNpZXJ0CisgICAgd3VyZGUuCisKKyAgICBCZWlzcGllbDoKKworICAgIHJhdW0uYzoKKyAgICBpbmhlcml0ICIvc3RkL3Jvb20iOworCisgICAgcHJvdGVjdGVkIHZvaWQgY3JlYXRlKCkgeworICAgICAgOjpjcmVhdGUoKTsKKyAgICAgIC4uLgorICAgIH0KKworICAgIHByb3RlY3RlZCB2b2lkIGNyZWF0ZV9zdXBlcigpIHsKKyAgICAgIGNyZWF0ZSgpOworICAgIH0KKworICAgIHJhdW1eMS5jOgorICAgIGluaGVyaXQgInJhdW0iOworCisgICAgcHJvdGVjdGVkIHZvaWQgY3JlYXRlKCkgeworICAgICAgOjpjcmVhdGUoKTsKKyAgICAgIEFkZEl0ZW0oImZpZXNlc19tb25zdGVyIixSRUZSRVNIX1JFTU9WRSk7CisgICAgfQorCitMT0VTVU5HIDI6CisgICAgSGFiZSBpY2ggZWluZW4gUmF1bSwgd28gYXVjaCBpbiBOb3JtYWwgRGluZ2UgZXhpc3RpZXJlbiwgZGllIGVzIG5pY2h0IGluCisgICAgUGFyYSBnZWJlbiBzb2xsLCBrYW5uIGljaCBlaW5lbiBSYXVtIG1pdCBkZXIgRGltZW5zaW9uc251bW1lciAwIGVyc3RlbGxlbi4KKyAgICBEaWVzZXIgd2lyZCBuaWVtYWxzIGF1dG9tYXRpc2NoIGJldHJldGVuLCBhdXNzZXIgZWluIEF1c2dhbmcgZnVlaHJ0CisgICAgZXhwbGl6aXQgZG9ydCBoaW4uCisKKyAgICBCZWlzcGllbDoKKworICAgIHJhdW1eMC5jOgorICAgIGluaGVyaXQgIi9zdGQvcm9vbSI7CisKKyAgICBwcm90ZWN0ZWQgdm9pZCBjcmVhdGUoKSB7CisgICAgICA6OmNyZWF0ZSgpOworICAgICAgLi4uCisgICAgfQorCisgICAgcmF1bS5jOgorICAgIGluaGVyaXQgInJhdW1eMCI7CisKKyAgICBwcm90ZWN0ZWQgdm9pZCBjcmVhdGUoKSB7CisgICAgICA6OmNyZWF0ZSgpOworICAgICAgQWRkSXRlbSgiaGFybWxvc2VzX21vbnN0ZXIiLFJFRlJFU0hfUkVNT1ZFKTsKKyAgICB9CisKKyAgICByYXVtXjEuYzoKKyAgICBpbmhlcml0ICJyYXVtXjAiOworCisgICAgcHJvdGVjdGVkIHZvaWQgY3JlYXRlKCkgeworICAgICAgOjpjcmVhdGUoKTsKKyAgICAgIEFkZEl0ZW0oImZpZXNlc19tb25zdGVyIixSRUZSRVNIX1JFTU9WRSk7CisgICAgfQorCisKK1NJRUhFIEFVQ0g6CisgICAgbW92ZShMKSwgY3JlYXRlX3N1cGVyKEwpLCBQX1BBUkEoUCkKKworTGV0enRlIEFlbmRlcnVuZzogMTguMDEuMjAxNSwgQnVnZml4CmRpZmYgLS1naXQgYS9kb2Mvd2l6L3BhcmllcndhZmZlbiBiL2RvYy93aXovcGFyaWVyd2FmZmVuCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjY0Y2I5YmMKLS0tIC9kZXYvbnVsbAorKysgYi9kb2Mvd2l6L3BhcmllcndhZmZlbgpAQCAtMCwwICsxLDE4IEBACis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKyAgICAgICAgICAgICAgICAgUmVnZWxuIHp1ciBQcm9ncmFtbWllcnVuZyB2b24gUGFyaWVyd2FmZmVuOgorPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CisKK1N0YW5kYXJkb2JqZWt0OiAvc3RkL3dlYXBvbi5jCisKK1NpZWhlIGhpZXJ6dTogL2RvYy93aXovYmFsYW5jZSAgIChvZGVyICdtYW4gYmFsYW5jZScpCisKK0FrdHVlbGxlIEdyZW56d2VydGU6Cis9PT09PT09PT09PT09PT09PT09PQorCisgICBQYXJpZXItVHlwICAgR2VuZWhtaWd1bmdzZ3JlbnplCisgIC0tLS0tLS0tLS0tLSAtLS0tLS0tLS0tLS0tLS0tLS0tLQorICBQQVJSWV9PTkxZICAgV2llIFJ1c3R1bmdlbiB2b20gVHlwIEFUX1NISUVMRAorICBQQVJSWV9UT08gICAgR2VuZXJlbGxlIEdlbmVobWlndW5nc3BmbGljaHQKKworPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CitQYXJhY2Vsc3VzQE1vcmdlbkdyYXVlbiwgMTgvMDgvMTk5OQpkaWZmIC0tZ2l0IGEvZG9jL3dpei9wb3Rpb25tYXN0ZXIgYi9kb2Mvd2l6L3BvdGlvbm1hc3RlcgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi42YjhiZmQyCi0tLSAvZGV2L251bGwKKysrIGIvZG9jL3dpei9wb3Rpb25tYXN0ZXIKQEAgLTAsMCArMSwxOTcgQEAKK0RlciBQb3Rpb25tYXN0ZXIgKC9zZWN1cmUvcG90aW9ubWFzdGVyKQorPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CisKK0JFU0NIUkVJQlVORworCisgICAgRnVua3Rpb246IFZlcndhbHR1bmcgZGVyIFphdWJlcnRyYWVua2UsIGRpZSBTcGllbGVyIGZpbmRlbiBrb2VubmVuLgorCisgICAgWmF1YmVydHJhZW5rZSBrb2VubmVuIHZvbiBiZWxpZWJpZ2VuIE9iamVrdGVuIGltIFNwaWVsIHZlcmdlYmVuIHdlcmRlbi4KKyAgICBKZWRlciBTcHJ1Y2ggaXN0IGluIGVpbmVyIGVpZ2VuZW4gRGF0ZWkgaW4gL3NlY3VyZS9BUkNIL1pUIGhpbnRlcmxlZ3QsCisgICAgd29iZWkgZGVyIERhdGVpbmFtZSBkYXMgYWxsZ2VtZWluZSBGb3JtYXQgPG5yPi56dCBoYWJlbiBtdXNzLiA8bnI+CisgICAgZW50c3ByaWNodCBoaWVyYmVpIGRlciBaVC1OdW1tZXIuCisKKyAgICBEaWUgVGlwcyB6dSBkZW4gVHJhZW5rZW4gd2VyZGVuIHZvbSBPcmFrZWwgL3Jvb20vb3Jha2VsIGF1c2dlZ2ViZW4sCisgICAgc29mZXJuIGRlciBTcGllbGVyIGdlbnVnIFN0dWZlbnB1bmt0ZSBmdWVyIGVpbmVuIG5ldWVuIFNwcnVjaCBlcnNwaWVsdAorICAgIGhhdCAoc2llaGUgaGllcnp1ICJoaWxmZSB6dCIpLiBEaWUgVGlwcyB3ZXJkZW4gZGFiZWkgYXVzIGRlbiBvLmcuIERhdGVpZW4KKyAgICBlaW5nZWxlc2VuLiBEZXIgWlQgd2lyZCB2b24gZGVtIHZlcmdlYmVuZGVuIE9iamVrdCBkdXJjaCBBdWZydWYgdm9uCisgICAgRmluZFBvdGlvbihzdHJpbmcgbXNnKSBpbSBTcGllbGVyb2JqZWt0IGd1dGdlc2NocmllYmVuLgorCisgICAgSW4gZGllc2VyIERhdGVpIHNpbmQgZGllIEZ1bmt0aW9uZW4gZGVzIFBvdGlvbm1hc3RlcnMgZG9rdW1lbnRpZXJ0LgorICAgIEluaGFsdDoKKworICAgIDEuIFphdWJlcnRyYWVua2UgZWludHJhZ2VuIHVuZCBha3RpdmllcmVuL2RlYWt0aXZpZXJlbgorICAgIDIuIFphdWJlcnRyYWVua2UgaW4gZWluZSBMaXN0ZSBlaW5zb3J0aWVyZW4KKyAgICAzLiBaYXViZXJ0cmFlbmtlIHZlcmxlZ2VuCisgICAgNC4gRGF0ZW4genUgWmF1YmVydHJhZW5rZW4gYWJmcmFnZW4KKyAgICA1LiBFaW4gbmV1ZXIgWlQ6IFdhcyB0dW4/CisgICAgNi4gRm9ybWF0IGRlciBaYXViZXJ0cmFuay1UaXBzCisgICAgNy4gV28gZmluZGUgaWNoIGVpZ2VudGxpY2g/CisgICAgOC4gVmVyc2NoaWVkZW5lcworCisKK0ZVTktUSU9ORU4KKworMS4gWmF1YmVydHJhZW5rZSBlaW50cmFnZW4gdW5kIGFrdGl2aWVyZW4vZGVha3RpdmllcmVuCisKKyAgIGludCBBZGRQb3Rpb25yb29tKHN0cmluZyByb29tLCBpbnQgbGlzdCkKKyAgICAgIERlciBSYXVtIDxyb29tPiB3aXJkIGFscyBuZXVlciBaVC1GdW5kb3J0IGVpbmdldHJhZ2VuIHVuZCBpbiBkaWUgTGlzdGUKKyAgICAgIG1pdCBkZXIgTnVtbWVyIDxsaXN0PiBlaW5nZWZ1ZWd0LiByb29tIG11c3MgaGllcmJlaSBkZXIgbG9hZF9uYW1lKCkgCisgICAgICBkZXMgT2JqZWt0cyBzZWluLCB1bnQgPGxpc3Q+IGRhcmYgV2VydGUgdm9uIDAgYmlzIDcgaGFiZW4uIERlciBaVAorICAgICAgd2lyZCBkYWJlaSBha3RpdmllcnQuCisgICAgICAKKyAgICAgIFJ1ZWNrZ2FiZXdlcnRlOgorICAgICAgPG51bT4gTnVtbWVyIGRlcyBuYWVjaHN0ZW4gbmV1ZW4gWlRzLCA8bnVtLTE+IGlzdCBkaWUgTnVtbWVyIGRlcworICAgICAgICAgICAgbmV1IGVpbmdldHJhZ2VuZW4gWlRzLgorICAgICAgLTEgICAgWnVncmlmZiB2ZXJ3ZWlnZXJ0CisgICAgICAtMiAgICA8cm9vbT4ga2VpbiBTdHJpbmcsIDxsaXN0PiBpc3QgbmljaHQgaW0gQmVyZWljaCAwLTcKKyAgICAgIC0zICAgIDxyb29tPiBpc3QgbmljaHQgbGFkYmFyCisgICAgICAtNCAgICA8cm9vbT4gdmVyZ2lidCBzY2hvbiBlaW5lbiAoYW5kZXJlbikgWlQKKyAgICAgIC02ICAgIERhdGVpIG1pdCBaVC1TcHJ1Y2ggKC9zZWN1cmUvQVJDSC9aVC88bnVtPi56dCkgZXhpc3RpZXJ0IG5pY2h0LgorCisgICBpbnQgQWN0aXZhdGVSb29tKHN0cmluZyByb29tKQorICAgICAgRGVyIFpUIGltIFJhdW0gPHJvb20+IHdpcmQgYWt0aXZpZXJ0LCBkLmguIGVyIGthbm4gYWt0aXYgdm9uIGRlbSBSYXVtCisgICAgICB2ZXJnZWJlbiB3ZXJkZW4uIFRlY2huaXNjaCB3aXJkIGVyIGF1cyBkZXIgTGlzdGUgZGVyIGluYWt0aXZlbiBaVHMKKyAgICAgIGF1c2dldHJhZ2VuLiA8cm9vbT4gbXVzcyBoaWVyYmVpIGRlciBsb2FkX25hbWUoKSBkZXMgUmF1bWVzIHNlaW4uCisKKyAgICAgIFJ1ZWNrZ2FiZXdlcnRlOgorICAgICAgPG51bT4gIE51bW1lciBkZXMgYWt0aXZpZXJ0ZW4gWlRzCisgICAgICAtMSAgICAgWnVncmlmZiB2ZXJ3ZWlnZXJ0CisgICAgICAtNSAgICAgdW5ndWVsdGlnZXIgWlQgKFJhdW0gaXN0IG5pY2h0IGFscyBaVC1PYmpla3QgZWluZ2V0cmFnZW4pCisgICAgICAtOCAgICAgPHJvb20+IGlzdCBiZXJlaXRzIGFrdGl2aWVydAorCisgICBpbnQgRGVhY3RpdmF0ZVJvb20oc3RyaW5nIHJvb20pCisgICAgICBEZXIgWlQgaW0gT2JqZWt0IDxyb29tPiB3aXJkIGRlYWt0aXZpZXJ0LCBkLmguIGVyIGthbm4gbmljaHQgbWVocgorICAgICAgdm9uIGRlbSBPYmpla3QgdmVyZ2ViZW4gd2VyZGVuLiBUZWNobmlzY2ggd2lyZCBlciBpbiBkaWUgTGlzdGUgZGVyCisgICAgICBpbmFrdGl2ZW4gWlRzIGVpbmdldHJhZ2VuLiA8cm9vbT4gbXVzcyBoaWVyYmVpIGRlciBsb2FkX25hbWUoKSBkZXMKKyAgICAgIFJhdW1lcyBzZWluLgorCisgICAgICBSdWVja2dhYmV3ZXJ0ZToKKyAgICAgIDxudW0+ICBOdW1tZXIgZGVzIGdlYWVuZGVydGVuIFpUcworICAgICAgLTEgICAgIFp1Z3JpZmYgdmVyd2VpZ2VydAorICAgICAgLTUgICAgIHVuZ3VlbHRpZ2VyIFpUCisgICAgICAtOSAgICAgPHJvb20+IGlzdCBiZXJlaXRzIGluYWt0aXYKKworMi4gWmF1YmVydHJhZW5rZSBpbiBlaW5lIExpc3RlIGVpbnNvcnRpZXJlbgorCisgICBpbnQgU2V0TGlzdE5yKHN0cmluZyByb29tLCBpbnQgbGlzdCkKKyAgICAgIFRyYWVndCBkZW4gWmF1YmVydHJhbmsgaW4gUmF1bSA8cm9vbT4gaW4gZGllIExpc3RlIDxsaXN0PiBlaW4uIAorICAgICAgPHJvb20+IG11c3MgaGllcmJlaSBkZXIgbG9hZF9uYW1lKCkgZGVzIE9iamVrdHMgc2Vpbi4KKworICAgICAgUnVlY2tnYWJld2VydGU6CisgICAgICA8bnVtPiAgTnVtbWVyIGRlcyBnZWFlbmRlcnRlbiBaVHMKKyAgICAgIC0xICAgICBadWdyaWZmIHZlcndlaWdlcnQKKyAgICAgIC01ICAgICB1bmd1ZWx0aWdlciBaVAorICAgICAgLTcgICAgIDxsaXN0PiBhdXNzZXJoYWxiIGRlciB6dWdlbGFzc2VuZW4gV2VydGUsIGQuaC4gPDAgb2RlciA+NworCiszLiBaYXViZXJ0cmFlbmtlIHZlcmxlZ2VuCisKKyAgIGludCBDaGFuZ2VSb29tUGF0aChzdHJpbmcgb2xkLCBzdHJpbmcgbmV3KQorICAgICAgRGVyIFphdWJlcnRyYW5rIGluIFJhdW0gPG9sZD4gd2lyZCBpbiBkZW4gUmF1bSA8bmV3PiB1bWdldHJhZ2VuLgorCisgICAgICBSdWVja2dhYmV3ZXJ0ZToKKyAgICAgIDxudW0+IE51bW1lciBkZXMgZXJmb2xncmVpY2ggZ2VhZW5kZXJ0ZW4gWmF1YmVydHJhbmtzCisgICAgICAtMSAgICBadWdyaWZmIHZlcndlaWdlcnQKKyAgICAgIC0yICAgIDxuZXc+IG9kZXIgPG9sZD4gb2RlciBiZWlkZSBzaW5kIGtlaW5lIFN0cmluZ3MKKyAgICAgIC0zICAgIDxvbGQ+IHZlcmdpYnQga2VpbmVuIFpULCBlcyBnaWJ0IGFsc28gbmljaHRzIHp1IHZlcmxlZ2VuLCBvZGVyCisgICAgICAgICAgICA8bmV3PiBpc3QgbmljaHQgbGFkYmFyLCBkb3J0aGluIGthbm4gYWxzbyBuaWNodCB2ZXJsZWd0IHdlcmRlbgorICAgICAgLTQgICAgPG5ldz4gaGF0IHNjaG9uIGVpbmVuIFphdWJlcnRyYW5rCisKKzQuIERhdGVuIHp1IFphdWJlcnRyYWVua2VuIGFiZnJhZ2VuCisKKyAgIG1peGVkIFF1ZXJ5UG90aW9uRGF0YShpbnQgbnVtKQorICAgICAgQWJmcmFnZSBkZXIgRGF0ZW4genUgZGVtIFpUIG1pdCBkZXIgTnVtbWVyIDxudW0+LiBBdXNnZWdlYmVuIHdpcmQgZWluCisgICAgICBNYXBwaW5nIGRlciBGb3JtIChbIG51bSA6IFJhdW1wZmFkOyBMaXN0ZW5udW1tZXIgXSkKKworICAgaW50IFF1ZXJ5SW5hY3RpdmVQb3Rpb25zKCkKKyAgICAgIExpZWZlcnQgZWluIEFycmF5IG1pdCBkZW4gTnVtbWVybiBkZXIgYWt0dWVsbCBkZWFrdGl2aWVydGVuIFpUcyB6dXJ1ZWNrLgorCisgICBpbnQgUXVlcnlBY3RpdmUobWl4ZWQgcG90aW9uKQorICAgICAgR2lidCB6dSBlaW5lciBaVC1OdW1tZXIgb2RlciBlaW5lbSBSYXVtcGZhZCBhbiwgb2IgZGVyIGJldHJlZmZlbmRlIFpUCisgICAgICBha3RpdiBpc3Qgb2RlciBuaWNodC4gV2VubiBqYSwgd2lyZCBkaWUgZW50c3ByZWNoZW5kZSBaVC1OdW1tZXIKKyAgICAgIHp1cnVlY2tnZWdlYmVuLgorICAgICAgCisgICAgICBSdWVja2dhYmV3ZXJ0ZToKKyAgICAgIDxudW0+IE51bW1lciBkZXMgYWJnZWZyYWd0ZW4gWlRzCisgICAgICAtMSAgICBadWdyaWZmIHZlcndlaWdlcnQKKyAgICAgIC01ICAgIHVuZ3VlbHRpZ2VyIFpUCisgICAgICAtMTEgICBaVCBpc3QgbmljaHQgYWt0aXYKKyAgIAorICAgc3RyaW5nIEdldEZpbGVuYW1lQnlOdW1iZXIoaW50IG5yKQorICAgICAgQWJmcmFnZSBkZXMgRGF0ZWluYW1lbnMgenUgWmF1YmVydHJhbmsgTnVtbWVyIDxucj4uCisgICAgICAKKyAgICAgIFJ1ZWNrZ2FiZXdlcnRlOgorICAgICAgPG51bT4gTnVtbWVyIGRlcyBhYmdlZnJhZ3RlbiBaVHMKKyAgICAgIC0xICAgIFp1Z3JpZmYgdmVyd2VpZ2VydAorICAgICAgLTUgICAgdW5ndWVsdGlnZXIgWlQKKworICAgaW50IEhhc1BvdGlvbihvYmplY3Qgb2JqKQorICAgICAgQWJmcmFnZSBkZXIgWmF1YmVydHJhbmtudW1tZXIsIGRpZSB2b24gZGVtIE9iamVrdCA8b2JqPiB2ZXJnZWJlbiB3aXJkLgorICAgICAgCisgICAgICBSdWVja2dhYmV3ZXJ0ZToKKyAgICAgIDxudW0+IE51bW1lciBkZXMgYWJnZWZyYWd0ZW4gWlRzCisgICAgICAtMSAgICBadWdyaWZmIHZlcndlaWdlcnQKKyAgICAgIC0zICAgIFJhdW0gdmVyZ2lidCBrZWluZW4gWlQKKworICAgaW50IEdldExpc3RCeU51bWJlcihpbnQgbnIpCisgICAgICBBYmZyYWdlIGRlciBMaXN0ZSBha3RpdmVyIFpUcywgaW4gZGVyIGRlciBaVCBtaXQgZGVyIE51bW1lciA8bnI+CisgICAgICBlaW5nZXRyYWdlbiBpc3QuCisgICAgICBSdWVja2dhYmU6IE51bW1lciBkZXIgTGlzdGUsIGluIGRlciBkZXIgWlQgZW50aGFsdGVuIGlzdCwgc29uc3QgLTUuCisKKyAgIGludCBHZXRJbmFjdExpc3RCeU51bWJlcihpbnQgbnIpCisgICAgICBBYmZyYWdlIGRlciBMaXN0ZSBpbmFrdGl2ZXIgWlRzLCBpbiBkZXIgZGVyIFpUIG1pdCBkZXIgTnVtbWVyIDxucj4KKyAgICAgIGVpbmdldHJhZ2VuIGlzdC4KKyAgICAgIFJ1ZWNrZ2FiZTogTnVtbWVyIGRlciBMaXN0ZSwgaW4gZGVyIGRlciBaVCBlbnRoYWx0ZW4gaXN0LCBzb25zdCAtMTAuCisKKzUuIEVpbiBuZXVlciBaVDogV2FzIHR1bj8KKworICAgQWRkUG90aW9uUm9vbShuZXdyb29tLCBsaXN0ZSkgYXVmcnVmZW4uIFdlbm4gZWluIEZlaGxlciBhdWZ0cml0dCwgbXVzcworICAgbm9jaCBkZXIgWlQtVGlwIGluIGRlbSB1bnRlciA2LiBiZXNjaHJpZWJlbmVuIEZvcm1hdCBoaW50ZXJsZWd0IHdlcmRlbi4KKyAgIERlciB6dSB2ZXJ3ZW5kZW5kZSBEYXRlaW5hbWUgaXN0IGluIGRlciBGZWhsZXJtZWxkdW5nIGFuZ2VnZWJlbi4KKworNi4gRm9ybWF0IGRlciBaYXViZXJ0cmFuay1UaXBzCisKKyAgIEVpbiBCZWlzcGllbCBtaXQgendlaSBUaXBzIGZ1ZXIgZGVuc2VsYmVuIFphdWJlcnRyYW5rOgorCisgICBEaWUgWmF1YmVybWF1cyB3b2xsdHMgd29obCB2ZXJzdGVja2VuLAorICAgSW0gQnVlY2hlcndhbGQgc29sbHN0IG5pY2h0cyBlbnRkZWNrZW4sCisgICBEZW5uIFRyaW5rZ2VudXNzIGlzdCBkb3J0IHZlcnBvZW50LAorICAgU28gaXN0IG1hbnMgYXVjaCBSTCBnZXdvZWhudC4KKyAgIFhYWFhYCisgICBEZXIgUmF1bSBpc3QgcHJhbGwgdW5kIHN0YXIgZ2VmdWVsbHQsCisgICBNaXQgdmllbCBQYXBpZXIsIGRhcyBnZXJuIHZlcmh1ZWxsdAorICAgSW4gWmF1YmVyYnVjaGZvcm0gbWFuY2hlcyBPZCwKKyAgIERhcyBoaWxmdCBEaXIgZGFubiBhdXMgRGVpbmVyIE5vdC4KKyAgICUlJSUlCisKKyAgIERpZSBQcm96ZW50emVpY2hlbiBzaW5kIGRhcyBFbmRlemVpY2hlbiwgZGFuYWNoIGtvZW5uZW4gZXZlbnR1ZWxsZQorICAgS29tbWVudGFyZSBzdGVoZW4uIFhYWFhYIGlzdCBkYXMgVHJlbm56ZWljaGVuIHp3aXNjaGVuIHp3ZWkgVGlwcworICAgenVtIHNlbGJlbiBaVC4gQXVzd2lya3VuZyBpc3QsIGRhc3MgZGVyIFNwaWVsZXIgYmVpIGplZGVtIEF1ZnJ1ZgorICAgc2VpbmVyIFphdWJlcnRyYW5rLUxpc3RlIHp1ZmFlbGxpZyBlaW5lbiBTcHJ1Y2ggYXVzIGRlciBMaXN0ZSAKKyAgIGFuZ2V6ZWlndCBiZWtvbW10LgorCis3LiBXbyBmaW5kZSBpY2ggZWlnZW50bGljaD8KKworICAgLSBkaWUgWmF1YmVydHJhbmstVGlwczogICAgICAgICAgIC9zZWN1cmUvQVJDSC9aVC8qLnp0CisgICAtIGRpZSBHZXNhbXRsaXN0ZSBkZXIgWlRzOiAgICAgICAgL3NlY3VyZS9BUkNIL1BPVElPTlMuZHVtcAorICAgLSBkYXMgU2F2ZWZpbGUgZGVzIFBvdGlvbm1hc3RlcnM6IC9zZWN1cmUvQVJDSC9wb3Rpb25zLm8KKyAgIC0gZGFzIExvZ2ZpbGUgZnVlciBBZW5kZXJ1bmdlbjogICAvbG9nL0FSQ0gvUE9USU9OU19NT0QubG9nCisKKzguIFZlcnNjaGllZGVuZXMKKworICAgbWl4ZWQgVGlwTGVzZW4oaW50IG5yKQorICAgICAgRGFzIE9yYWtlbCBhdWYgZGVyIEhvY2hlYmVuZSBydWZ0IGRpZSBaYXViZXJ0cmFuay1UaXBwcyBhYiwgZGllc2UKKyAgICAgIHdlcmRlbiB2b24gZGVyIFBsYXR0ZSBnZWxlc2VuIHVuZCBhbHMgU3RyaW5nIGFuIGRhcyBPcmFrZWwgCisgICAgICB6dXJ1ZWNrZ2VsaWVmZXJ0LgorICAgaW50IER1bXBMaXN0KCkKKyAgICAgIERpZSBLb21wbGV0dGxpc3RlIGRlciBaVHMgaW4gZGFzIER1bXBmaWxlIC9zZWN1cmUvQVJDSC9QT1RJT05TLmR1bXAKKyAgICAgIHNjaHJlaWJlbi4KKworU0lFSEUgQVVDSDoKKyAgIFNwaWVsZXJiZWZlaGxlOiB6YXViZXJ0cmFlbmtlCisgICBNYWdpZXJiZWZlaGxlOiAgdHJhZW5rZQorICAgUHJvcGVydGllczogICAgIFBfUE9USU9OUk9PTVMsIFBfS05PV05fUE9USU9OUk9PTVMKKyAgIEFubGVpdHVuZzogICAgICB3aXovemF1YmVydHJhZW5rZQorICAgWlQgZmluZGVuOiAgICAgIEZpbmRQb3Rpb24oTCkKKworMjAxMy1NYWktMzAgQXJhdGhvcm4KKwpkaWZmIC0tZ2l0IGEvZG9jL3dpei9xdWVzdHMgYi9kb2Mvd2l6L3F1ZXN0cwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41YzQ1MDIzCi0tLSAvZGV2L251bGwKKysrIGIvZG9jL3dpei9xdWVzdHMKQEAgLTAsMCArMSwxNjAgQEAKK0xlaXRmYWRlbiBmdWVyIGRpZSBRdWVzdGVyc3RlbGx1bmcvLWFibmFobWU6Cis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorCisKK1F1ZXN0cyBpbSBNb3JnZW5HcmF1ZW46CistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCitCZWdpbm5lbiB3aXIgbWl0IGVpbmVtIFppdGF0OgorCisgIEJvaW5nIHNhZ3Q6ICdEYXMgTW9yZ2VuR3JhdWVuIGlzdCBlaW4gUXVlc3RtdWQuJworCitEYXMgTW9yZ2VuR3JhdWVuIHVudGVyc2NoZWlkZXQgc2ljaCB2b24gZWluaWdlbiBhbmRlcmVuIE11ZHMsIGluZGVtCitlYmVuIGVpbiBzZWhyIGdyb3NzZXIgV2VydCBhdWYgUXVlc3RzIGdlbGVndCB3aXJkLiBNaXR0bGVyd2VpbGUgaGFiZW4KK3dpciBqYSBhdWNoIHNjaG9uIGVpbmUgb3JkZW50bGljaGUgQW56YWhsIFF1ZXN0cy4gVHJvdHpkZW0gaXN0IGVzCit3aWNodGlnIHVuZCB3aXJkIGltbWVyIHdpZWRlciBnZXJuZSBnZXNlaGVuLCB3ZW5uIG5ldWUgUXVlc3RzIGdlcHJvZ2d0Cit3ZXJkZW4uIERhcnVlYmVyaGluYXVzIGJsZWlidCBtYW4gYWxzIE1hZ2llciBuYXR1ZXJsaWNoIGF1Y2ggbGFlbmdlcgoraW0gU3BpZWwgYmVrYW5udC4gR2VyYWRlIHdlaWwgUXVlc3RzIGF1Y2ggZWluZSB3aWNodGlnZSBBbmZvcmRlcnVuZworenVtIFNlaGVydHVtIHNpbmQsIG11c3MgaWhuZW4gZWluIGJlc29uZGVyZXMgQXVnZW5tZXJrIHNlaXRlbnMgZGVzCitwcm9ncmFtbWllcmVuZGVuIE1hZ2llcnMgZ2V3aWRtZXQgd2VyZGVuIHVuZCBiZXNvbmRlcnMgc29yZ2ZhZWx0aWcKK2dlYXJiZWl0ZXQgd2VyZGVuLiBEYXp1IGdpYnQgZXMgbnVuIGltIGZvbGdlbmRlbiBlaW4gcGFhciBIaW53ZWlzZSwKK2RpZSBtYW4gYWxzIFF1ZXN0cHJvZ3JhbW1pZXJlciBlaW5oYWx0ZW4gc29sbHRlLCBkYW1pdCBkaWUgUXVlc3QKK2dlbmVobWlndCB3ZXJkZW4ga2FubiB1bmQgYmVpIGRlbiBTcGllbGVybiBndXQgYW5rb21tdC4KKworUXVlc3RpZGVlbjoKKy0tLS0tLS0tLS0tCisKK0RpZXMgaXN0IGRlciB3aWNodGlnc3RlIEJlc3RhbmR0ZWlsIGVpbmVyIFF1ZXN0LiBIaWVyIHNvbGx0ZSBtYW4gc2ljaAorc2VociB2aWVsIE11ZWhlIGdlYmVuLCBkZW5uIG1pdCBkZW0gS29uemVwdCBzdGVodCB1bmQgZmFlbGx0IGVpbmUKK1F1ZXN0LiBEYW1pdCBTcGllbGVyIFNwYXNzIGFuIGVpbmVyIFF1ZXN0IGhhYmVuLCBpc3QgZWluZSBndXRlIFN0b3J5LAorZWluIGd1dGVzIEtvbnplcHQgdW5hYmRpbmdiYXIuIEVpbiB3aWNodGlnZXIgRXJmb2xnc2Zha3RvciBpc3QgYW4KK2RpZXNlciBTdGVsbGUgYXVjaCwgc2ljaCByZWNodHplaXRpZyBtaXQgZGVtIGJldHJvZmZlbmVuIFJlZ2lvbnNtYWdpZXIKK3VuZCBkZW0gUXVlc3RlcnptYWdpZXIgYWJ6dXNwcmVjaGVuLiBTcGFldGVyIGhhdCBtYW4gZGEgdmllbGxlaWNodAora2VpbmUgR2VsZWdlbmhlaXQgbWVociB1bmQgaGF0IHNpY2ggdmllbCBBcmJlaXQgZ2VtYWNodCB1bmQgbXVzcword2llZGVyIHZpZWwgYWVuZGVybi4gRGFoZXI6IFZPUkhFUklHRVIgQUJTUFJBQ0hFIFZFUk1FSURFVAorQUVSR0VSLiBJbnNiZXNvbmRlcmUgYmVpIFF1ZXN0cyBtaXQgaG9oZW0gTWV0emVsYW50ZWlsIHNvbGx0ZQordW5iZWRpbmd0IFJ1ZWNrc3ByYWNoZSBnZWhhbHRlbiB3ZXJkZW4sIGRhIHNvbGNoZSBRdWVzdHMgbmljaHQgc28KK2dlcm5lIGdlc2VoZW4gc2luZC4gCisKK1F1ZXN0dW1zZXR6dW5nOgorLS0tLS0tLS0tLS0tLS0tCisKK0JlaSBkZXIgVW1zZXR6dW5nIGthbm4gbWFuIHNpY2ggYW4gZGllIFJlZ2VsbiBoYWx0ZW4sIGRpZSBhbGxnZW1laW4KK2Z1ZXIgZGVuIEFuc2NobHVzcyB2b24gR2ViaWV0ZW4gZ2VsdGVuIChOUENzLCBCYWxhbmNlLi4uKS4gQmVzb25kZXJlCitBdWZtZXJrc2Fta2VpdCB2ZXJkaWVuZW4gZGllIFRlaWxlLCBkaWUgenVyIExvZXN1bmcgZGVyIFF1ZXN0Citub3R3ZW5kaWcgc2luZCAoUXVlc3RpdGVtcywgUXVlc3RtYXN0ZXIuLi4pICBFcyBlbXBmaWVobHQgc2ljaCBhdWNoIGluCitkaWVzZXIgUGhhc2UsIGltbWVyIG1hbCBSdWVja3NwcmFjaGUgbWl0IGRlbSBSZWdpb25zbWFnaWVyIG9kZXIKK1F1ZXN0ZXJ6bWFnaWVyIHp1IGhhbHRlbi4KKworRWluZSBRdWVzdGJlbG9obnVuZyB3aXJkIHZvbiBTcGllbGVybiBpbW1lciB3aWVkZXIgZ2VybmUKK2dlbm9tbWVuLiBEYWJlaSBzb2xsdGUgbWFuIGFsbGVyZGluZ3MgZWluIGdld2lzc2VzIEF1Z2VubWFzcworYW5sZWdlbi4gTmljaHQgZnVlciBqZWRlIFF1ZXN0IG11c3MgZXMgZWluZSBzdXBlciB0b2xsZQorQXV0by1Mb2FkLUJlbG9obnVuZyBnZWJlbi4gCisKK0Z1ZXIgZGFzIGtvbmtyZXRlIFVtc2V0emVuIHNlaWVuIG5vY2ggZWluIHBhYXIgSGlud2Vpc2UgZ2VnZWJlbjoKKworIC0gRnVlciBkaWUgQXRtb3NwaGFlcmUgdW5kIGRpZSBEZXRhaWxzIHNvbGx0ZSBtYW4gc2VociB2aWVsIE11ZWhlCisgICB2ZXJ3ZW5kZW4sIHNvIGRhc3Mgc2ljaCBkZW0gU3BpZWxlciBkZXIgbG9naXNjaGUgQXVmYmF1CisgICBlcnNjaGxpZXNzdC4gRXMgaXN0IGZ1ZXIgU3BpZWxlciBhdXNzZXJvcmRlbnRsaWNoIGFlcmdlcmxpY2gsIGVpbmUKKyAgIFF1ZXN0IHp1IHNwaWVsZW4sIGRlcmVuIEJlc3RhbmR0ZWlsZSBpcmdlbmR3aWUgaW4gZGVyIEx1ZnQKKyAgIGhhZW5nZW4uIAorIC0gRXMgc29sbHRlIHNpY2ggc2VociBndXQgdWViZXJsZWd0IHdlcmRlbiwgd2llIGRpZSBRdWVzdCByZWFnaWVydCwgCisgICB3ZW5uIG1laHJlcmUgU3BpZWxlciBnbGVpY2h6ZWl0aWcgZGllIFF1ZXN0IHNwaWVsZW4gd29sbGVuIChkYXMKKyAgIHdpcmQgaW5iZXNvbmRlcmUgZGlyZWt0IG5hY2ggZGVtIEFuc2NobHVzcyBkZXIgRmFsbCBzZWluKS4KKyAgIERpZXMgYmV6aWVodCBzaWNoIGluc2Jlc29uZGVyZSBhdWYgUXVlc3QtT2JqZWt0ZSwgZGllIGVpbmVtIFNwaWVsZXIKKyAgIGV2dGwuIG5pY2h0IHp1ciBWZXJmdWVndW5nIHN0ZWhlbiwgd2VpbCBzaWUgZ2VyYWRlIGVpbiBhbmRlcmUKKyAgIGdlbm9tbWVuIGhhdCwgb2RlciBRdWVzdC1OUENzLCBkaWUgd2ljaHRpZ2UgQXVza3VlbmZ0ZSBoYWJlbiwKKyAgIGFiZXIgbGVpZGVyIHVtZ2VuaWV0ZXQgd3VyZGVuLiBXaWNodGlnZSBRdWVzdC1OUENzIHNvbGx0ZW4gbmFjaAorICAgTW9lZ2xpY2hrZWl0IGJlc3NlciBuaWNodCBhbHMgTWV0emVsb3BmZXIga29uemlwaWVydCB3ZXJkZW4uCisgLSBOYWNoIE1vZWdsaWNoa2VpdCBzb2xsdGUgZXMgbmljaHQgZGFzIGh1bmRlcnRzdGUgTGFieXJpbnRoIGdlYmVuLgorIC0gV2VyZGVuIGZ1ZXIgZGllIFF1ZXN0IGFsbGdlbWVpbmUgT2JqZWt0ZSAod2llIFNjaGF1ZmVsbiwgU2VpbGUKKyAgIGV0Yy4pIGJlbm9ldGlndCwgc28gc29sbHRlbiBhdWNoIGRpZSBhbiBhbmRlcmVyIFN0ZWxsZSBpbSBNdWQKKyAgIGVyaGFlbHRsaWNoZW4gT2JqZWt0ZSBmdW5rdGlvbmllcmVuIG9kZXIgZXMgc29sbHRlIGZ1ZXIgZGVuIFNwaWVsZXIKKyAgIGVya2VubmJhciBzZWluLCB3aWVzbyBudXIgZWluIHNwZXppZWxsZXMgT2JqZWt0IGRlbiBad2VjayBlcmZ1ZWxsdC4KKyAtIFF1ZXN0b2JqZWt0ZSBzb2xsdGVuIGZ1ZXIgU3BpZWxlciBuaWNodCBlcnN0ZWxsYmFyIHNlaW4gKC0+CisgICBTZWhlcmJldXRlbCkuIAorIC0gV2lyZCBkZXIgUXVlc3Rmb3J0c2Nocml0dCBpbiBlaW5lbSBNYXN0ZXIgZ2VzcGVpY2hlcnQsIHNvIGVtcGZpZWhsdAorICAgZXMgc2ljaCwgZGllIERhdGVuIHp1IGRlbiBTcGllbGVybiBuYWNoIGRlbSBMb2VzZW4gZGVyIFF1ZXN0IHdpZWRlcgorICAgenUgbG9lc2NoZW4gKGViZW5zbyBiZWkgU3BpZWxlcm4sIGRpZSBzaWNoIGdlbG9lc2NodCBoYWJlbikuCisgLSBFcyBzb2xsdGVuIHNpY2ggYXVjaCBHZWRhbmtlbiBnZW1hY2h0IHdlcmRlbiwgd2llIGRpZSBRdWVzdCBiZWltCisgICBFaW5zY2hsYWZlbiwgQmVlbmRlbiBvZGVyIGJlaSBlaW5lbSBDcmFzaCByZWFnaWVydC4gRXMgbXVzcyBhbHNvCisgICBzaWNoZXJnZXN0ZWxsdCBzZWluLCBkYXNzIGRlciBTcGllbGVyIGRhbm4gYmVpbSBuYWVjaHN0ZW4gCisgICBRdWVzdHZlcnN1Y2ggbmljaHQgaW4gZWluZW4gaW5rb25zaXN0ZW50ZW4gWnVzdGFuZCBsYW5kZXQuCisgLSBHdXQgaXN0LCBkZW4gUXVlc3R2ZXJsYXVmIGVpbiB3ZW5pZyB2YXJpYWJsZSB6dSBnZXN0YWx0ZW4sIHNvCisgICBkYXNzIGRpZSBRdWVzdCBuaWNodCBvaG5lIHdlaXRlcmVzIGR1cmNoc2tyaXB0YmFyIGlzdC4KKyAtIEJlaSBQZmxpY2h0cXVlc3RzIGJpdHRlIGJlYWNodGVuLCBkYXNzIE5QQ3MsIGRpZSB6d2luZ2VuZCB6dSB0b2V0ZW4KKyAgIHNpbmQsIG5pY2h0IHp1IHN0YXJrIHNpbmQuCisgLSBEYXMgT2JqZWt0LCB3ZWxjaGVzIGRpZSBRdWVzdCBuYWNoIGRlbSBMb2VzZW4gc2V0emVuIHNvbGwsIG11c3MgZWluZW4gCisgICBBdWZydWYgdm9uIEdpdmVRdWVzdCBlbnRoYWx0ZW4uIERlc3dlaXRlcmVuIGlzdCBiZWltIGVyc3RlbiBMb2VzZW4gCisgICBpbiBlaW4gUXVlc3Rsb2dmaWxlIGltIFZlcnplaWNobmlzIC9sb2cvcXVlc3QgZWluIEVpbnRyYWcgenUgbWFjaGVuLCAKKyAgIGRhc3MgZGVyIFNwaWVsZXIgZGllIFF1ZXN0IGJlc3RhbmRlbiBoYXQuIERpZXNlbiBFaW50cmFnIGJpdHRlIAorICAgbWl0IHdyaXRlX2ZpbGUgc2NocmVpYmVuLgorICAKK1F1ZXN0dGVzdCAoTWFnaWVyKToKKy0tLS0tLS0tLS0tLS0tLS0tLS0KKworTnVuIGtvbW10IGVpbiBlbnRzY2hlaWRlbmRlciBTY2hyaXR0IGZ1ZXIgZGllIFF1ZXN0LiBEZW5uIGpldHp0CitzY2hhdWVuIGF1Y2ggZWlubWFsIE1hZ2llcmtvbGxlZ2VuIHVlYmVyIGRpZSBRdWVzdCB1bmQga29lbm5lbiBhdWYKK0J1Z3MsIGxvZ2lzY2hlIEZlaGxlciB1bmQga2xlaW5lcmUgUHJvYmxlbWUgaGlud2Vpc2VuLiBVbSBtb2VnbGljaHN0Cit2aWVsZSBkZXJhcnRpZ2VyIERpbmdlIGFienVmYW5nZW4sIHNvbGx0ZSBtYW4gYXVmIGRlbiBRdWVzdHRlc3QgdmllbAorWmVpdCB2ZXJ3ZW5kZW4gdW5kIE1hZ2llcmtvbGxlZ2VuIGJpdHRlbiwgZGllIFF1ZXN0IGVpbm1hbCB6dSB0ZXN0ZW4uIAorCitRdWVzdHRlc3QgKFNwaWVsZXIpOgorLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworV2VubiBlcyBtb2VnbGljaCBpc3QsIHNvbGx0ZSBhdWNoIGVpbiBTcGllbGVyIGRpZSBRdWVzdCBlaW5tYWwKK3Rlc3Rlbi4gSmVkb2NoIHNpbmQgZGF6dSBkaWUgUmVnZWxuIGZ1ZXIgU3BpZWxlcnRlc3RpZXMgKCdtYW4KK3Rlc3RpZXMnKSBlaW56dWhhbHRlbi4gRXMgaXN0IGluc2Jlc29uZGVyZSBkYXJhdWYgenUgYWNodGVuLCBkYXNzCit3ZW5uIGRlbSBUZXN0aWUgZXZlbnR1ZWxsZSBGb3JzY2hlcnB1bmt0ZSBvLmFlLiB6dWdlc3Byb2NoZW4gd2VyZGVuLAorZGllIG5lZ2F0aXZlbiBTZWl0ZW4gZGVyIFF1ZXN0IG5pY2h0IHdlZ2ZhbGxlbiBkdWVyZmVuIChzb3dlaXQgc2llCituaWNodCBhdWYgRmVobGVybiBiZXJ1aGVuKS4gCisKK0FibmFobWUgZGVyIFF1ZXN0OgorLS0tLS0tLS0tLS0tLS0tLS0tCisKK1NvZmVybiBub2NoIG5pY2h0IGdlc2NoZWhlbiwgbXVzcyBudW4gZGVyIFJlZ2lvbnNtYWdpZXIgZGllIFF1ZXN0CithYm5laG1lbi4gKElzdCBkZXIgUHJvZ3JhbW1pZXJlciBzZWxic3QgZGVyIFJlZ2lvbnNtYWdpZXIsIHNvbGx0ZSBlcgorZWluZW4gTWFnaWVya29sbGVnZW4gYml0dGVuLCBkaWVzIHp1IG1hY2hlbiAoZnVlciBkaWUgbWVpc3RlbiBSZWdpb25lbgorZ2lidCBlcyBqYSBtZWhyIGFscyBlaW5lbiBSTSkuKSBXZW5uIGRpZXMgYWxsZXMgZ2VzY2hlbiBpc3QsIGthbm4gZGVyCitRdWVzdGVyem1hZ2llciBkaWUgUXVlc3QgYWJuZWhtZW4uIAorCitEaWUgQmVhcmJlaXR1bmcgZGVyIFF1ZXN0IGdlaHQgYW0gc2NobmVsbHN0ZW4sIHdlbm4gZGVtIFF1ZXN0LUVNCitmb2xnZW5kZSBJbmZvcyB2b3JsaWVnZW4gKHouQi4gaW4gZWluZXIgTWFpbCk6CisKKyAtIEVpbmUga3VyemUgQmVzY2hyZWlidW5nIGRlciBRdWVzdCwgYWxzbyB3b3J1bSBnZWh0IGVzIHVlYmVyaGF1cHQ/CisgLSBFaW5lIExvZXN1bmdzc2tpenplIChiaXR0ZSBuaWNodCBpbSBIb21lLVZlcnplaWNobmlzIHJ1bWxpZWdlbgorICAgbGFzc2VuKQorIC0gRWluZSBCZXNjaHJlaWJ1bmcgZGVyIHRlY2huaXNjaGVuIExvZXN1bmcsIGFsc28gd2llIGlzdCBkYXMgZ2FuemUKKyAgIHByb2dyYW1taWVydD8gCisgLSBJbiB3ZWxjaGVtIE9iamVrdCB3aXJkIGRpZSBRdWVzdCBtaXR0ZWxzIEdpdmVRdWVzdCBnZXNldHp0PworIC0gRWluZSBBdWZzdGVsbHVuZywgd2VsY2hlIEZpbGVzIHp1IGRlciBRdWVzdCBnZWhvZXJlbiB1bmQgd28gc2llCisgICBzaWNoIGJlZmluZGVuLgorIC0gRWluZSBMaXN0ZSBkZXIgQWJoYWVuZ2lna2VpdGVuIHp1IGFuZGVyZW4gVGVpbGVuIGltIE11ZD8gKEdpbGRlbi1OUENzLAorICAgTU5QQ3MuLikKKyAtIEVpbmUgRWluc2NoYWV0enVuZyBkZXIgU2Nod2llcmlna2VpdCBkZXIgUXVlc3QuIFdpZSBndXQgc29sbHRlIG1hbgorICAgc2Vpbj8gV2VsY2hlbiBMZXZlbD8gV2FzIGZ1ZXIgU3RhdHM/Li4uCisgLSBFaW5lbiBWb3JzY2hsYWcsIHdpZXZpZWxlIEFQcyBmdWVyIGRpZSBRdWVzdCB2ZXJnZWJlbiB3ZXJkZW4gc29sbGVuLgorIC0gRWluZW4gVm9yc2NobGFnLCB3ZWxjaGVuIFNwcnVjaCBkZXIgV2FuZGVyZXIgZGVuIFNwaWVsZXJuIHNhZ2VuCisgICBzb2xsLgorIC0gRWluZSBMaXN0ZSBkZXIgTWFnaWVyIHVuZCBTcGllbGVyLCBkaWUgZGllIFF1ZXN0IHNjaG9uIGdldGVzdGV0IGhhYmVuLgorCitEYW5hY2ggc2NoYXV0IHNpY2ggZGVyIFF1ZXN0LUVNIGRpZSBRdWVzdCBhbiB1bmQgbGVndCBtaXQgZGVtCitQcm9ncmFtbWllcmVyIHp1c2FtbWVuIEFQcywgU2Nod2llcmlna2VpdHNncmFkLCBkZW4gU3BydWNoIGZ1ZXIgZGVuCitXYW5kZXJlciBldGMuIGZlc3QuIERhbm4gd2lyZCBkaWUgUXVlc3Qgdm9tIFF1ZXN0LUVNIGVpbmdldHJhZ2VuLgorCitRdWVzdGFuc2NobHVzczoKKy0tLS0tLS0tLS0tLS0tLQorCitadW0gQW5zY2hsdXNzIGRlciBRdWVzdCBzb2xsdGUgbWFuIG5hY2ggTW9lZ2xpY2hrZWl0IGViZW5mYWxscyBvbmxpbmUKK3NlaW4sIHVtIGV2ZW50dWVsbGUgUHJvYmxlbWUsIEJ1Z3MgenUgYmVzZWl0aWdlbi4gQXVjaCBzb2xsdGUgbWFuIG5hY2gKK0Fuc2NobHVzcyBkZXIgUXVlc3QgZ2V3aXNzZW5oYWZ0IHNlaW4gUmVwZmlsZSBhYmFyYmVpdGVuIHVtIFR5cG9zLAorSWRlZW4gdW5kIEJ1Z3MgYWJ6dWFyYmVpdGVuLgorCitTaWVoZSBhdWNoOgorLS0tLS0tLS0tLS0KKworIFF1ZXJ5UXVlc3QsIEdpdmVRdWVzdCwgd3JpdGVfZmlsZQorCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KK1p1bGV0enQgZ2VhZW5kZXJ0OiBNb24sIDE3LiBKdWwgMjAwMCwgMTI6MTY6NDEgdm9uIFpvb2suCisKZGlmZiAtLWdpdCBhL2RvYy93aXovcXVlc3RzLmRvYyBiL2RvYy93aXovcXVlc3RzLmRvYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4yNGM5MWM4Ci0tLSAvZGV2L251bGwKKysrIGIvZG9jL3dpei9xdWVzdHMuZG9jCkBAIC0wLDAgKzEsNjYgQEAKKyBEYXMgUXVlc3RzeXN0ZW0gd2lyZCBpbiBNb3JnZW5HcmF1ZW4gdm9uIGVpbmVtIHplbnRyYWxlbiBRdWVzdGhhbmRsZXIKK2dlc3RldWVydC4gRGllc2VyIHN0ZWxsdCBkaWUgZm9sZ2VuZGVuIEZ1bmt0aW9uZW4genVyIFZlcmZ1ZWd1bmc6CisKK0FkZFF1ZXN0KHN0cmluZyBxdWVzdG5hbWUsIGludCBxdWVzdHBvaW50cywgaW50IGV4cGVyaWVuY2UsCisgICAgICAgICBzdHJpbmcgKmFsbG93ZWRvYmosIHN0cmluZyBoaW50LCBpbnQgZGlmZmljdWx0eSwgaW50IG5lZWRlZCkKKyBEaWVzZSBGdW5rdGlvbiBkZWZpbmllcnQgZWluZSBRdWVzdCB1bmQgZ2lidCBzaWUgenVyIEJlbnV0enVuZyBkdXJjaCBkaWUKKyBTcGllbGVyIGZyZWkuIFNpZSBkYXJmIG51ciB2b24gRXJ6bWFnaWVybiBhdWZnZXJ1ZmVuIHdlcmRlbi4KKyBCZWRldXR1bmcgZGVyIFBhcmFtZXRlcjoKKyAgIHF1ZXN0bmFtZSBnaWJ0IGRlbiBOYW1lbiBkZXIgenUgZGVmaW5pZXJlbmRlbiBRdWVzdCBhbi4gRXMgZGFyZiBiZXJlaXRzCisgICAgICAgICAgICAgZWluZSBRdWVzdCBkaWVzZXMgTmFtZW5zIGdlYmVuLCBpaHJlIFBhcmFtZXRlciB3ZXJkZW4gZGFubgorICAgICAgICAgICAgIGdlYWVuZGVydC4KKyAgIHF1ZXN0cG9pbnRzIGdpYnQgZGllIFphaGwgZGVyIFF1ZXN0cHVua3RlIGFuLCBkaWUgZGVyIFNwaWVsZXIgZnVlciBkaWUKKyAgICAgICAgICAgICAgIExvZXN1bmcgZGllc2VyIFF1ZXN0IGFuZ2VyZWNobmV0IGJla29tbXQuIE11c3MgPjAgc2Vpbi4KKyAgIGV4cGVyaWVuY2UgZ2lidCBkaWUgWmFobCBkZXIgRXJmYWhydW5nc3B1bmt0ZSBhbiwgZGllIGRlciBTcGllbGVyIGZ1ZXIKKyAgICAgICAgICAgICAgZWluZSBRdWVzdCBiZWtvbW1lbiBrYW5uLiBESUVTRSBaQUhMIEtBTk4gPDAgU0VJTiEKKyAgIGFsbG93ZWRvYmogaXN0IGVpbiBBcnJheSBtaXQgZGVuIEZpbGVuYW1lbiBkZXIgT2JqZWt0ZSwgZGllIGRpZXNlIFF1ZXN0IGFscworICAgICAgICAgICAgICBkdXJjaCBlaW5lbiBTcGllbGVyIGdlbG9lc3Qga2VubnplaWNobmVuIGR1ZXJmZW4uIERhcnVlYmVyaGluYXVzCisgICAgICAgICAgICAgIGR1ZXJmZW4gRXJ6bWFnaWVyIGRpZXMgaW1tZXIgdHVuLgorICAgaGludCBpc3QgZWluIFN0cmluZywgZGVyIFRpcHMgenVyIExvZXN1bmcgZGVyIFF1ZXN0IGVudGhhZWx0LiBEaWVzZXIgU3RyaW5nCisgICAgICAgIHdpcmQgZGVtIFNwaWVsZXIgdm9tIE9yYWtlbCBhbHMgSGlud2VpcyBnZWdlYmVuLgorICAgZGlmZmljdWx0eSBpc3QgZWluZSBaYWhsIHp3aXNjaGVuIDAgdW5kIDIwLCBkaWUgZGVuICJTY2h3aWVyaWdrZWl0c2dyYWQiCisgICAgICAgICAgICAgIGRlciBRdWVzdCBhbmdpYnQuIDAgaGF0IGVpbmUgYmVzb25kZXJlIEJlZGV1dHVuZywgbmFlbWxpY2ggZGllLAorICAgICAgICAgICAgICBkYXMga2VpbmUgRWluc2NoYWV0enVuZyB2b3JsaWVndC4KKyAgIG5lZWRlZCBsZWd0IGZlc3QsIG9iIGRpZSBRdWVzdCB2b24gZWluZW0gU3BpZWxlciBnZWxvZXN0IHdlcmRlbiBtdXNzLCBiZS0KKyAgICAgICAgICB2b3IgZXIgTWFnaWVyIHdlcmRlbiBrYW5uLiBGYWxscyBuZWVkZWQgIT0wIGlzdCwgTVVTUyBlciBkaWUgUXVlc3QKKyAgICAgICAgICBsb2VzZW4sIHVuYWJoYWVuZ2lnIHZvbiBkZXIgOTAlLVJlZ2VsLgorCitSZW1vdmVRdWVzdChzdHJpbmcgcXVlc3RuYW1lKTsKKyBHZWdlbnN0dWVjayB6dSBBZGRRdWVzdCwgbG9lc2NodCBlaW5lIFF1ZXN0LiBLYW5uIG5hdHVlcmxpY2ggZWJlbmZhbGxzIG51cgorIHZvbiBFcnptYWdpZXJuIGF1ZmdlcnVmZW4gd2VyZGVuLiBESUUgU1BJRUxFUiwgRElFIERJRSBRVUVTVCBTQ0hPTiBHRUxPRVNUCisgSEFCRU4sIEJFSEFMVEVOIERJRSBFTlRTUFJFQ0hFTkRFTiBRVUVTVFBVTktURSAhIQorCitRdWVyeVJlYWR5Rm9yV2l6KG9iamVjdCBwbGF5ZXIpCisgRGllc2VyIEZ1bmt0aW9uIG11c3MgZWluIFBsYXllcm9iamVrdCB1ZWJlcmdlYmVuIGJla29tbWVuIHVuZCBwcnVlZnQsIG9iCisgZGVyIFNwaWVsZXIgc2VpdGVucyBkZXIgUXVlc3RzIGJlcmVpdCBpc3QgenVyIEF1ZnN0dWZ1bmcgenVtIE1hZ2llciwgZGgKKyBvYiBlciA5MCUgZGVyIFFQIHNvd2llIGFsbGUgendpbmdlbmQgdm9yZ2VzY2hyaWViZW5lbiBRdWVzdHMgKHNpZWhlCisgQWRkUXVlc3QsIFBhcmFtZXRlciBuZWVkZWQpIGdlbG9lc3QgaGF0LiBGYWxscyBkaWVzIGRlciBGYWxsIGlzdCwgbGllZmVydAorIGRpZSBGdW5rdGlvbiBlaW5lIDEgenVydWVjay4gV2VubiBlciBkaWUgOTAlIG5pY2h0IGhhdCwgZWluZSAtMS4gRmFsbHMKKyBpaG0gbm9ldGlnZSBRdWVzdHMgZmVobGVuLCBlaW5lIExpc3RlIGRlciBuaWNodCBnZWxvZXN0ZW4sIG5vZXRpZ2VuIFF1ZXN0cy4KKworUXVlcnlRdWVzdChxdWVzdG5hbWUpCisgTGllZmVydCBlaW5lIC0xLCBmYWxscyBrZWluZSBRdWVzdCBkaWVzZXMgTmFtZXMgZWluZ2V0cmFnZW4gaXN0LCBzb25zdAorIGVpbmVuIEFycmF5IG1pdCBkZW4gRGF0ZW4gZGVyIFF1ZXN0LCBpbiBkZXIgUmVpaGVuZm9sZ2UsIGluIGRlciBzaWUgaW4KKyBBZGRRdWVzdCBlaW5nZWdlYmVuIHdlcmRlbi4gRGFiZWkgaXN0IHF1ZXN0cG9pbnRzIGRhcyBlcnN0ZSBBcnJheWVsZW1lbnQuCisKK1F1ZXJ5QWR2YW5jZUV4cChvYmplY3QgcGxheWVyKQorIFN0ZWxsdCBmZXN0LCBvYiBkZXIgU3BpZWxlciBwbGF5ZXIgZ2VudWVnZW5kIFF1ZXN0cHVua3RlIGhhdCwgdW0gc2VpbmUKKyBFcmZhaHJ1bmcgenUgZXJob2VoZW4uCisKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgV2VpdGVyaGluIGVudGhhZWx0IGplZGVzIFBsYXllcm9iamVrdCBlaW4gUXVlc3QtTW9kdWwsIGRhcyBkaWUgZm9sZ2VuZGVuCitGdW5rdGlvbmVuIG9mZmVyaWVydDoKKworR2l2ZVF1ZXN0KHN0cmluZyBxdWVzdG5hbWUpCisgTWFya2llcnQgZWluZSBRdWVzdCBiZWkgZGVtIFBsYXllciBhbHMgZ2Vsb2VzdC4gRXMgd2lyZCBnZXRlc3RldCwgb2IgZGllCisgQWt0aW9uIHZvbiBlaW5lbSAiYWxsb3dlZF9vYmplY3QiIHZvcmdlbm9tbWVuIHdpcmQuIERpZSBRdWVzdHB1bmt0ZSB3ZXJkZW4KKyBlbnRzcHJlY2hlbmQgZ2V1cGRhdGVkLgorCitRdWVyeVF1ZXN0cygpCisgR2lidCBlaW5lIEFsaXN0IG1pdCBkZW4gTmFtZW4gZGVyIHZvbSBQbGF5ZXIgZ2Vsb2VzdGVuIFF1ZXN0cyB6dXJ1ZWNrLgorCitRdWVyeVFQKCkKKyBHaWJ0IGRpZSBBbnphaGwgZGVyIHZvbSBQbGF5ZXIgZXJyZWljaHRlbiBRdWVzdHB1bmt0ZSB6dXJ1ZWNrLgorCitRdWVyeVF1ZXN0KHN0cmluZyBxdWVzdG5hbWUpCisgU3RlbGx0IGZlc3QsIG9iIGVpbiBTcGllbGVyIGRpZSBRdWVzdCBnZWxvZXN0IGhhdCBvZGVyIG5pY2h0LgpkaWZmIC0tZ2l0IGEvZG9jL3dpei9yZWdpb25zbGVpdGZhZGVuIGIvZG9jL3dpei9yZWdpb25zbGVpdGZhZGVuCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjA1MjhkMDIKLS0tIC9kZXYvbnVsbAorKysgYi9kb2Mvd2l6L3JlZ2lvbnNsZWl0ZmFkZW4KQEAgLTAsMCArMSwyMDAgQEAKKworSGFsbG8sIHdpbGxrb21tZW4gaW4gZGVuIHVuZW5kbGljaGVuIFdlaXRlbiBkZXIgUmVnaW9uc3ZlcnplaWNobmlzc2UhCisKK0R1IG1vZWNodGVzdCBpbiBlaW5lciBSZWdpb24gbWl0cHJvZ3JhbW1pZXJlbj8gUHJpbWEsIG5ldWUga3JlYXRpdmUgCitNaXRhcmJlaXRlciBzaW5kIGplZGVyemVpdCB3aWxsa29tbWVuISBEdSBiaXN0IGhlcnpsaWNoIGVpbmdlbGFkZW4sIG1pdCAKK0RlaW5lbiBJZGVlbiB6dXIgRW50d2lja2x1bmcgYmVpenV0cmFnZW4uCisKK1VtIGRpZSBQcm9ncmFtbWllcnVuZyB1bmQgYW5zY2hsaWVzc2VuZGUgQWJuYWhtZSBmdWVyIGFsbGUgQmV0ZWlsaWd0ZW4KK21vZWdsaWNoc3QgcmVpYnVuZ3Nsb3MgenUgZ2VzdGFsdGVuLCBzZWllbiBEaXIgZGllIGluIGRpZXNlciBIaWxmZXNlaXRlCitnZW5hbm50ZW4gRGluZ2UgYW5zIEhlcnogZ2VsZWd0LiBEaWVzZSBsYXNzZW4gc2ljaCBpbiBmb2xnZW5kZSBLYXRlZ29yaWVuCitlaW50ZWlsZW46CisKKzEpIEZvcm1hbGVzIHp1bSBDb2Rlc3RpbAorMikgSW5oYWx0bGljaGUgQW5mb3JkZXJ1bmdlbgorMykgV2FzIG5pY2h0IGFremVwdGllcnQgd2lyZAorNCkgV2FzIGlzdCB2b3IgZGVtIEFuc2NobHVzcyB6dSBiZWFjaHRlbj8KKworCisxKSBGb3JtYWxlcyB6dW0gQ29kZXN0aWwKKworbyAgI3ByYWdtYSBzdHJvbmdfdHlwZXMsc2F2ZV90eXBlcyBzb2xsIGluIGFsbGVuIEZpbGVzIHZlcndlbmRldCB3ZXJkZW4sCisgICBhYiBEcml2ZXItVmVyc2lvbiBMRF8zLjUueCB3aXJkIGF1Y2ggcnJ0dF9jaGVja3MgZHJpbmdlbmQgZW1wZm9obGVuLgorCitvICBEZXIgQ29kZSBzb2xsIGtlaW5lIFplaWxlbiBtaXQgbWVociBhbHMgNzggWmVpY2hlbiBlbnRoYWx0ZW4uCisKK28gIERlciBDb2RlIHNvbGwgc2F1YmVyIGVpbmdlcnVlY2t0IHVuZCBzb3JnZmFlbHRpZyBmb3JtYXRpZXJ0IHNlaW4sIGFiZXIKKyAgIGJpdHRlIG9obmUgVGFidWxhdG9yZW4uCisKK28gIFZlcndlbmRlIGtlaW5lIExhbWJkYS1DbG9zdXJlcyEgV2FzIGF1Y2ggaW1tZXIgRHUgdm9yaGFzdDogRXMgZ2VodAorICAgb2huZS4gRXMgc2VpIGF1c2RydWVja2xpY2ggYXVmIGRpZSBNb2VnbGljaGtlaXQgdm9uIGlubGluZS1DbG9zdXJlcworICAgdmVyd2llc2VuLCB3ZW5uIER1IHVuYmVkaW5ndCB2ZXJtZWlkZW4gd2lsbHN0LCBlaW5lIHNlcGFyYXRlIEZ1bmt0aW9uCisgICB6dSBzY2hyZWliZW4uCisKK28gIEtvbW1lbnRpZXJlIERlaW5lbiBDb2RlISBJbnNiZXNvbmRlcmUgZG9ydCwgd28ga29tcGxleGVyZSBPYmpla3QtCisgICBJbnRlcmFrdGlvbmVuIHN0YXR0ZmluZGVuLCBvZGVyIHdvIGltcGxpeml0IGJlc29uZGVyZSBFaWdlbnNjaGFmdGVuCisgICAoei5CLiBkZXIgTXVkbGliLCBvZGVyIG1hdGhlbWF0aXNjaGUgIkZlYXR1cmVzIikgZ2VudXR6dCB3ZXJkZW4sIGRpZSBpbQorICAgQ29kZSBuaWNodCBhdWYgZGVuIGVyc3RlbiBCbGljayBlcnNpY2h0bGljaCBvZGVyIGR1cmNoc2NoYXViYXIgc2luZC4KKyAgIERhdW1lbnJlZ2VsOiAiV2VubiBEdSBsYWVuZ2VyIGFscyBlaW5lIE1pbnV0ZSB1ZWJlciBlaW5lIFplaWxlIG5hY2hkZW5rZW4KKyAgIG11c3N0ZXN0LCBrb21tZW50aWVyZSBzaWUuIiA7LSkgUmVjaG5lIGltbWVyIGRhbWl0LCBkYXNzIGplbWFuZCwgZGVyCisgICBEZWluZW4gQ29kZSBsaWVzdCwga2VpbmUgQWhudW5nIGhhdCwgd2FzIER1IGRhIGVpZ2VudGxpY2ggdHVzdC4gOi0pCisKK28gIFdpcmYgYml0dGUgbmFjaCBBYnNjaGx1c3MgZGVyIEFyYmVpdGVuIFBsYXR6aGFsdGVyLUNvZGUgcmF1cyAoei5CLiBsZWVyZQorICAgQWRkRGV0YWlsKCktQW53ZWlzdW5nZW4pIHVuZCBlbnRmZXJuZSBuaWNodCBmdWVyIGRhcyBHZWJpZXQgYmVub2V0aWd0ZQorICAgRGF0ZWllbiBhdXMgZGVuIFZlcnplaWNobmlzc2VuLgorCitvICBTcGVpY2hlcnVuZyB2b24gRGF0ZW4gaW4gc2VjdXJlLVZlcnplaWNobmlzc2VuIHNvbGwgYml0dGUgbnVyIHNlaHIKKyAgIHNwYXJzYW0gZXJmb2xnZW4gdW5kIG51ciBpbiBBYnN0aW1tdW5nIG1pdCBkZW0gUk0uCisKK28gIHNhdmVfb2JqZWN0KCkgYml0dGUgc2VociBzcGFyc2FtIHZlcndlbmRlbiAobmljaHQgYmVpIGplZGVyIERhdGVuLQorICAgYWVuZGVydW5nLCBiZWkgQmVkYXJmIGluIHJlc2V0L3JlbW92ZSkuCisKK28gIFdlbm4gRGVmaW5lcyB6dW0gRWluc2F0eiBrb21tZW4sIHZlcndlbmRlIHNpZSBiaXR0ZSBtb2VnbGljaHN0IHNwYXJzYW0KKyAgIHVuZCBzb3JnZSBkYWZ1ZXIsIGRhc3MgRGVmaW5lcyBrbGFyIGFscyBzb2xjaGUgZXJrZW5uYmFyIHNpbmQuIEF1c3NlciBpbgorICAgRmFlbGxlbiwgd28gZXMgZ2FyIG5pY2h0IGFuZGVycyBnZWh0LCBzb2xsdGVzdCBEdSBrZWluZSBDb2RlLURlZmluZXMKKyAgIHZlcndlbmRlbiwgZGllIG1laHIgdW1mYXNzZW4gYWxzIGVpbmZhY2hlIEZ1bmt0aW9uc2F1ZnJ1ZmUgd2llIHouQi4KKyAgICAgICNkZWZpbmUgVFAgdGhpc19wbGF5ZXIoKQorICAgRnVlciB1ZWJsaWNoZSBTdGFuZGFyZGZhZWxsZSBleGlzdGllcnQgYmVyZWl0cyBlaW5lIEhlYWRlcmRhdGVpIGluIGRlciAKKyAgIE11ZGxpYiB1bnRlciAvc3lzL2RlZmluZXMuaC4gCisKK28gIFNvbGx0ZXN0IER1IGJlc3RpbW10ZSBFcmVpZ25pc3NlIGluIERlaW5lbSBHZWJpZXQgbG9nZ2VuIHdvbGxlbiAoei5CLgorICAgKE1pbmktKVF1ZXN0YWJzY2hsdWVzc2Ugb2RlciBiZXNvbmRlcmUgS2lsbHMpLCBkYW5uIGJlbnV0emUgYml0dGUgCisgICBsb2dfZmlsZSgpLCBzbyBkYXNzIGRpZSBMb2dmaWxlcyBuYWNoIC9sb2cvIGdlc2NocmllYmVuIHdlcmRlbi4gWnVzYWV0emxpY2gKKyAgIHdlcmRlbiBzbyBlcnN0ZWxsdGUgTG9nZmlsZXMgYXV0b21hdGlzY2ggYmVpIEVycmVpY2hlbiBlaW5lciBiZXN0aW1tdGVuCisgICBEYXRlaWdyb2Vzc2Ugcm90aWVydCwgc28gZGFzcyBzaWNoIGRlciBQbGF0enZlcmJyYXVjaCBpbiBHcmVuemVuIGhhZWx0LgorICAgRGFzIFByb3Rva29sbGllcmVuIG1pdHRlbHMgd3JpdGVfZmlsZSgpIGluIFJlZ2lvbnN2ZXJ6ZWljaG5pc3NlbiB1bnRlciAKKyAgIC9kLyBpc3QgZ3J1bmRzYWV0emxpY2ggTklDSFQgZXJ3dWVuc2NodC4gCisgICBOYWNoIEFic3ByYWNoZSBLQU5OIGVzIGZ1ZXIgU0VMVEVORSB1bmQgV0lDSFRJR0UgTWVsZHVuZ2VuIGVybGF1YnQgd2VyZGVuLAorICAgbWl0dGVscyB3cml0ZV9maWxlKCgpIG5hY2ggL2xvZy8genUgc2NocmVpYmVuLgorCitvICBXZW5uIER1IGluIERlaW5lbSBHZWJpZXQgRGF0ZW4gb2RlciBDb2RlIGFibGVnc3QsIGRlciBuaWNodCBmdWVyIAorICAgamVkZXJtYW5ucyBBdWdlbiBiZXN0aW1tdCBpc3QgKFF1ZXN0bG9lc3VuZ2VuLCBHZWJpZXRza2FydGVuLCBTYXZlZmlsZXMKKyAgIHZvbiBxdWVzdHJlbGV2YW50ZW4gKE1hc3Rlci0pT2JqZWt0ZW4pLCBzb2xsdGVzdCBEdSBpbiBBYnN0aW1tdW5nIG1pdAorICAgRGVpbmVtIFJlZ2lvbnNtYWdpZXIgdWViZXJsZWdlbiwgZGllc2UgaW4gZWluIC4vc2VjdXJlLy1WZXJ6ZWljaG5pcworICAgenUgdmVyc2NoaWViZW4sIGRhbWl0IHNpY2hlcmdlc3RlbGx0IGlzdCwgZGFzcyBhdWNoIHRhdHNhZWNobGljaCBudXIKKyAgIGJlcmVjaHRpZ3RlIE1hZ2llciBkYXJhdWYgWnVncmlmZiBlcmhhbHRlbi4gRGVubiBiZWRlbmtlLCBkYXNzIExlc2UtCisgICB1bmQgU2NocmVpYnJlY2h0ZSBudXIgZnVlciBDb2RlZGF0ZWllbiBnZXBydWVmdCB3ZXJkZW4sIGplZG9jaCBuaWNodAorICAgZnVlciBiZWxpZWJpZ2Ugc29uc3RpZ2UgVGV4dGRhdGVpZW4uCisKK28gIEVzIHNlaSBhdXNkcnVlY2tsaWNoIGF1ZiBkaWUgTWFucGFnZXMgImdvb2RzdHlsZSIsICJlZmZpemllbnoiLCBldGMuCisgICB2ZXJ3aWVzZW4uCisKKworRGFzIHNvbGwgamV0enQgbmljaHQgaGVpc3NlbiwgZGFzcyBkZXIgQW5zY2hsdXNzIHZvbiBDb2RlIGthdGVnb3Jpc2NoCithYmdlbGVobnQgd2VyZGVuIHdpcmQsIGRlciBkaWVzZSBGb3JtYWxpZW4gbmljaHQgZXJmdWVsbHQuIChBdXNuYWhtZTogTGFtYmRhLQorQ2xvc3VyZXMgd2VyZGVuIGluIGRlbiBSZWdpb25lbiBuaWNodCBtZWhyIGFremVwdGllcnQuKSBJY2ggbW9lY2h0ZSBhYmVyCit3aXJrbGljaCBuYWNoZHJ1ZWNrbGljaCBkYXJ1bSBiaXR0ZW4sIHNpZSBhdXMgZWluZW0gZWluZmFjaGVuIEdydW5kCitlaW56dWJhdWVuOiBEdSB3aXJzdCBuaWNodCBpbW1lciBkZXIgZWluemlnZSBzZWluLCBkZXIgRGVpbmVuIENvZGUgbGVzZW4gdW5kCit3YXJ0ZW4gbXVzcywgYXVjaCBpbiBEZWluZXIgQWJ3ZXNlbmhlaXQga29lbm5lbiBCdWdzIGF1ZnRyZXRlbi4gVW5kIGRhbm4gaXN0CitlcyB3ZXNlbnRsaWNoIGVpbmZhY2hlciwgZWluZW4gTWluaW1hbHN0YW5kYXJkIHp1IGhhYmVuLCBkZXIgZXMgYWxsZW4KK2VybW9lZ2xpY2h0LCBkZW4gQ29kZSBhdWNoIGltIE1HIHp1IGxlc2VuIHVuZCBkb3J0IHp1IGZpeGVuLiBEZW5uIG5pY2h0IGltbWVyCit3aXJkIGVzIG1vZWdsaWNoIHNlaW4sIHNpY2ggRGF0ZWllbiBoZXJ1bnRlcnp1bGFkZW4gdW5kIGxva2FsIHp1IGJlYXJiZWl0ZW4uCisKK1p1bSBCdWdmaXhpbmcgYW4gZGllc2VyIFN0ZWxsZSBhdXMgYWt0dWVsbGVtIEFubGFzcyBlaW5lIEFubWVya3VuZzogRXMgd2lyZAordm9uIGplZGVtIGFrdGl2ZW4gUmVnaW9uc21pdGFyYmVpdGVyIGVyd2FydGV0LCBkYXNzIGVyIGVpbmVuIEZlaGxlcnRldWZlbAorKC9vYmovdG9vbHMvZmVobGVydGV1ZmVsKSBiZXNpdHp0IHVuZCBkZXNzZW4gRmVobGVybGlzdGUgcmVnZWxtYWVzc2lnCitkdXJjaHNpZWh0IHVuZCBhdWZnZXRyZXRlbmUgRmVobGVyIHVuZCBXYXJudW5nZW4gYmVoZWJ0LiAoT2t0LiAyMDA3KQorCisKKzIpIEluaGFsdGxpY2hlIEFuZm9yZGVydW5nZW46CisKK28gIFdlbm4gRHUgZWluIGtvbXBsZXR0IG5ldWVzIEdlYmlldCBzY2hyZWliZW4gbW9lY2h0ZXN0LCBkYXMgaW4gZWluZXIgUmVnaW9uIAorICAgc2VpbmVuIFBsYXR6IGZpbmRlbiBzb2xsLCBzcHJpY2ggYml0dGUgZGllIHRoZW1hdGlzY2hlIEF1c3JpY2h0dW5nIG1pdAorICAgZGVtIFJNIGFiLCBiZXZvciBEdSBhbmZhZW5nc3QsIENvZGUgenUgc2NocmVpYmVuLiBGYWxscyB2b24gRGVpbmVuIElkZWVuCisgICBpcmdlbmRldHdhcyBuaWNodCBoaWVyaGVyIHBhc3NlbiBzb2xsdGUsIGxhZXNzdCBzaWNoIGRhcyBtaXQgd2VzZW50bGljaAorICAgd2VuaWdlciBGcnVzdCBpbSBWb3JmZWxkIGtsYWVyZW4sIGFscyB3ZW5uIGhpbnRlcmhlciBkYXMgaGFsYmUgR2ViaWV0CisgICB1bWdlYmF1dCB3ZXJkZW4gbXVlc3N0ZS4gU29sbHRlIHNpY2ggZGllIGtvbnplcHRpb25lbGxlIEF1c3JpY2h0dW5nIAorICAgb2RlciBkZXIgVW1mYW5nIHdhZWhyZW5kIGRlciBQcm9ncmFtbWllcnVuZyBncnVuZGxlZ2VuZCBhZW5kZXJuLCBiZXNwcmljaAorICAgZGllcyBiaXR0ZSBrdXJ6IG1pdCBkZW0gUk0uCisKK28gIE9iIG5ldWUgb2RlciBhbHRlIFJlY2h0c2NocmVpYnVuZywgaXN0IGltIHdlc2VudGxpY2hlbiBEaXIgc2VsYnN0IHVlYmVyLQorICAgbGFzc2VuLCBqZWRvY2ggd2FlcmUgZXMgc2Nob2VuLCB3ZW5uIER1IGRpZSBTcGllbGVyLUFucmVkZW4gd2llICJmcnVlaGVyIgorICAgdWVibGljaCBncm9zcyBzY2hyZWliZW4gd3VlcmRlc3QgKCJEdSIsICJEaWNoIiwgIkRlaW4iKS4KKworbyAgRXMgbXVlc3NlbiBpbiBqZWRlbSBSYXVtIGdld2lzc2UgU3RhbmRhcmRkZXRhaWxzIHZvcmhhbmRlbiBzZWluLCB6LkIuCisgICBCb2RlbiwgRGVja2UsIFdhZW5kZSwgSGltbWVsIChTb25uZSwgV29sa2VuKSwgZXRjLiBEaWVzIGthbm4gbWFuIHNlaHIKKyAgIGJlcXVlbSBtaXQgZGVtICJPdGVzdGVyIiBwcnVlZmVuLgorICAgRXMgc2VpIGFiZXIgYXVzZHJ1ZWNrbGljaCBkYXJhdWYgaGluZ2V3aWVzZW4sIGRhc3MgZGVyIE90ZXN0ZXIga2VpbmVzZmFsbHMKKyAgIGJlbnV0enQgd2VyZGVuIHNvbGx0ZSwgdW0gc2FlbXRsaWNoZSB2b3JoYW5kZW5lbiBTdWJzdGFudGl2ZSBiaXMgaW5zCisgICBrbGVpbnN0ZSB6dSBiZXNjaHJlaWJlbi4gRXMgaXN0IHNjaG9lbiwgd2VubiBPYmpla3RlIG1vZWdsaWNoc3Qgdm9sbC0KKyAgIHN0YWVuZGlnIGJlc2NocmllYmVuIHdlcmRlbiwgYWJlciBtYW4gc29sbHRlIGVzIGF1Y2ggbmljaHQgdWViZXJ0cmVpYmVuLgorCitvICBXYXMgYml0dGUgbnVyIGluIEF1c25haG1lZmFlbGxlbiBnZW1hY2h0IHdlcmRlbiBzb2xsdGUsIGlzdCwgRGV0YWlscywgCisgICBJbmZvcyBvZGVyIExhbmctL0t1cnpiZXNjaHJlaWJ1bmdlbiBhdXMgU3RhbmRhcmRyYWV1bWVuIHp1IGluaGVyaXRlbi4KKworbyAgRmFsbHMgRHUgQmVzY2hyZWlidW5nZW4vQXVzZ2FiZW4gaW4gQVNDSUktR3JhZmlrIGVpbmJpbmRlbiBtb2VjaHRlc3QsIGFjaHRlCisgICBiaXR0ZSBkYXJhdWYsIGRhc3MgRHUgYXVmIGplZGVuIEZhbGwgZWluZW4ga3VyemVuIEFsdGVybmF0aXZ0ZXh0IG1pdC0KKyAgIGxpZWZlcnN0IHVuZCBkaWVzZW4gYXVzZ2lic3QsIHdlbm4gZGVyIFNwaWVsZXIgUF9OT19BU0NJSV9BUlQgZ2VzZXR6dCBoYXQuCisgICBFcyBiZXN0ZWh0IGltbWVyIGRpZSBNb2VnbGljaGtlaXQsIGRhc3MgU3BpZWxlciBtaXQgU2Voc2Nod2FlY2hlIG9kZXIKKyAgIEJsaW5kZSBEZWluZSBPYmpla3RlIGFuc2NoYXVlbiwgdW5kIGRpZXNlIGtvbW1lbiBtaXQgT2JqZWt0ZW4gaW4gcmVpbmVyCisgICBBU0NJSS1HcmFmaWsgbmljaHQgenVyZWNodC4KKyAgIChTaWVoZSBhdWNoIGRpZSBNYW5wYWdlIHp1IFBfTk9fQVNDSUlfQVJUIHVuZCAiaGlsZmUgZ3JhZmlrIi4pCisKK28gIEVpbmUgQW5tZXJrdW5nIHp1IGRlbiBTY2hhZGVuc2FydGVuIERUX0hPTFkgdW5kIERUX1VOSE9MWSBzb2xsIG5pY2h0CisgICB1bmVyd2FlaG50IGJsZWliZW46IEVzIHdpcmQgdm9uIHZpZWxlbiBTcGllbGVybiB1bmQgTWFnaWVybiBhbHMgbG9naXNjaAorICAgdW5kIGF0bW9zcGhhZXJpc2NoIG5pY2h0IGJlZ3J1ZW5kYmFyIGVtcGZ1bmRlbiwgd2VubiBHZWdlbnN0YWVuZGUgb2RlcgorICAgTlBDcyBkaWVzZSBiZWlkZW4gU2NoYWRlbnNhcnRlbiBnbGVpY2hlcm1hc3NlbiBlaW5zZXR6ZW4gYnp3LiB2ZXJ1cnNhY2hlbgorICAga29lbm5lbi4gVmVyZ2xlaWNoYmFyZXMgZ2lsdCBmdWVyIGRpZSBnbGVpY2h6ZWl0aWdlIEFid2VociBiZWlkZXIgCisgICBTY2hhZGVuc2FydGVuLiBXZW5uZ2xlaWNoIGJpc2hlciBkaWVzYmV6dWVnbGljaCBrZWluZSBrbGFyZSBFaW5pZ3VuZworICAgZXJ6aWVsdCB3ZXJkZW4ga29ubnRlLCBzb2xsIGFuIGRpZXNlciBTdGVsbGUgZGVubm9jaCBlbXBmb2hsZW4gd2VyZGVuLAorICAgdm9uIGVpbmVyIGdsZWljaHplaXRpZ2VuIE51dHp1bmcgdm9uIERUX0hPTFkgdW5kIERUX1VOSE9MWSBhYnp1c2VoZW4uCisgICBEZXIgenVzdGFlbmRpZ2UgUmVnaW9uc21hZ2llciBtdXNzIGFiZXIgYXVmIGplZGVuIEZhbGwgaW4gS2VubnRuaXMKKyAgIGdlc2V0enQgd2VyZGVuIHVuZCBlbnRzcHJlY2hlbmRlIE9iamVrdGUgenVyIFBydWVmdW5nIHZvcmdlbGVndCBiZWtvbW1lbiwKKyAgIGZhbGxzIGRpZXNlIE51dHp1bmcgZGVubm9jaCBmdWVyIHVudW1nYWVuZ2xpY2ggZ2VoYWx0ZW4gd2lyZC4KKworCiszKSBXYXMga2VpbmVzZmFsbHMgYWt6ZXB0aWVydCB3aXJkCisKK28gIEZpbGVzLCBkaWUgaW4gL3BsYXllcnMgbGllZ2VuLCBpbmNsLiBIZWFkZXJmaWxlcy4gRGllcyBlcnNjaHdlcnQgZGFzCisgICBSZXBhcmllcmVuIHZvbiBCdWdzIHVuZ2VtZWluIHVuZCBicmluZ3QgZWluZSBnZXdpc3NlIFVudWViZXJzaWNodGxpY2hrZWl0CisgICBtaXQgc2ljaC4gQml0dGUgYXVjaCBuaWNodHMgYXVzIC9wbGF5ZXJzIGluaGVyaXRlbiAoQXVzbmFobWVuIGhpZXJ2b24gc2luZCAKKyAgIGF1ZmdydW5kIGVpbmVzIG5ldWVuIERyaXZlci1GZWF0dXJlcyBudXIgbm9jaCBtaXQgSGlsZmUgZWluZXMgRXJ6bWFnaWVycyAKKyAgIG1vZWdsaWNoLiBLdXJ6IGdlc2FndDogZXMgZ2lidCBlaW5lIFdoaXRlbGlzdCB2b24gT2JqZWt0ZW4sIGRpZSBkYXMgCisgICBkdWVyZmVuLiBBbGxlIGFuZGVyZW4gZHVlcmZlbiBkYXMgcGVyIERlZmF1bHQgbmljaHQuKS4KKworCis0KSBXYXMgaXN0IHZvciBkZW0gQW5zY2hsdXNzIHp1IGJlYWNodGVuPworCitvICBDb2RlIG11c3Mgdm9sbHN0YWVuZGlnIGZlcnRpZyBzZWluLiBEYXMgaGVpc3N0IGluc2Jlc29uZGVyZSwgZGFzcyAKKyAgIERlYnVnLSB1bmQgbmljaHQgbWVociBiZW5vZXRpZ3RlciBDb2RlIGVudGZlcm50IHd1cmRlIHVuZCBkYXNzIGFsbGUgCisgICBlcmZvcmRlcmxpY2hlbiBLb21tZW50YXJlIHZvcmhhbmRlbiBzaW5kLgorCitvICBBYm5haG1lIGR1cmNoIGRlbiBSTSB1bmQgZ2dmLiBkZW4gZnVlciBHZXNlbGxlbnN0dWVja2UgenVzdGFlbmRpZ2VuIEVNCisgICBtdXNzIGVybGVkaWd0IHNlaW4uIFJlZ2lvbnNtYWdpZXIgc2luZCBhbmdlaGFsdGVuLCBlaWdlbmUgR2ViaWV0ZSwgZGllIHp1bQorICAgQW5zY2hsdXNzIGluIGRlciBlaWdlbmVuIFJlZ2lvbiBnZXBsYW50IHNpbmQsIHZvbiBhbmRlcmVuIE1hZ2llcm4gYWJuZWhtZW4KKyAgIGxhc3Nlbi4KKworbyAgRGVyIE1hZ2llciBpc3QgYW5nZWhhbHRlbiwgZGFzIEdlYmlldCBkdXJjaCBUZXN0c3BpZWxlciB0ZXN0ZW4genUgbGFzc2VuCisgICAoc2llaGUgaGllcnp1IGRpZSBUZXN0c3BpZWxlci1SZWdlbG4pLiBPYiBlaW4gU3BpZWx0ZXN0IGFscyBWb3JhdXNzZXR6dW5nCisgICBmdWVyIGRpZSBBYm5haG1lIGdlZm9yZGVydCB3aXJkLCBlbnRzY2hlaWRldCBkZXIgenVzdGFlbmRpZ2UgUk0uIEVyIGthbm4KKyAgIGRlbiBUZXN0IGF1Y2ggc2VsYnN0IGR1cmNoZnVlaHJlbiBvZGVyIGdhbnogZGFyYXVmIHZlcnppY2h0ZW4uCisKK28gIFF1ZXN0cyB1bmQgTWluaXF1ZXN0cyBtdWVzc2VuIHZvbSB6dXN0YWVuZGlnZW4gUXVlc3QtRU0gZ2V0ZXN0ZXQsCisgICBlaW5nZXRyYWdlbiB1bmQgYWt0aXZpZXJ0IHdvcmRlbiBzZWluLgorCitvICBGZWVkYmFjayBkZXIgVGVzdHNwaWVsZXIgdW5kIHRlc3RlbmRlbiBNYWdpZXIgc29sbHRlIHVtZ2VzZXR6dCBzZWluLgorCitvICBGb3JzY2hlcnB1bmt0ZSBtdWVzc2VuIHZvbSB6dXN0YWVuZGlnZW4gRU0gZWluZ2V0cmFnZW4gd29yZGVuIHNlaW4uCisKK28gIEJhbGFuY2UtR2VuZWhtaWd1bmdlbiAoT2JqZWt0ZSwgSGVpbHVuZywgZ2dmLiBHaWxkZW5iYWxhbmNlKSBtdWVzc2VuIAorICAgdm9ybGllZ2VuOyBkaWUgZ2VuZWhtaWd0ZW4gRWNrcGFyYW1ldGVyIHNvbGxlbiBuYWNodm9sbHppZWhiYXIgaW0gCisgICBHZWJpZXRzdmVyemVpY2huaXMgZG9rdW1lbnRpZXJ0IHNlaW46IGVudHdlZGVyIGltIGpld2VpbGlnZW4gRmlsZSwgb2RlcgorICAgYWxzIFRleHRmaWxlIHouQi4gaW4gZWluZW0gRG9rdS1WZXJ6ZWljaG5pcy4KKworbyAgS3JhZXV0ZXIgZnVlciBkZW4gS3JhZXV0ZXJza2lsbCBtdWVzc2VuIGdlbmVobWlndCB1bmQgZWluZ2V0cmFnZW4gd29yZGVuIAorICAgc2VpbiAoZGllcyBrYW5uIGplZGVyIEVNIG1pdCBkZW0gS3JhZXV0ZXJ0b29sIGVybGVkaWdlbikuCisKK28gIEhpbndlaXM6IEVyc3RraWxscyBtdWVzc2VuIE5JQ0hUIFpXSU5HRU5EIHZvbSB6dXN0YWVuZGlnZW4gRU0gZWluZ2V0cmFnZW4KKyAgIHdvcmRlbiBzZWluLiBEaWUgRXJzdGtpbGwtTlBDcyB3ZXJkZW4gYXV0b21hdGlzY2ggaW4gZWluZXIgdm9ybGFldWZpZ2VuCisgICBMaXN0ZSBnZXNhbW1lbHQgdW5kIHZvbSBFTSBlbnR3ZWRlciBmcmVpZ2VnZWJlbiBvZGVyIGFiZ2VsZWhudC4gQXVjaAorICAgU29uZGVyLVN0dWZlbnB1bmt0ZSBmdWVyIEVLcyBtdWVzc2VuIG5pY2h0IHZvciBkZW0gQW5zY2hsdXNzIGJlYW50cmFndAorICAgb2RlciBnZW5laG1pZ3Qgd29yZGVuIHNlaW4sIGF1Y2ggZGllc2UgRWludHJhZ3VuZyBsYWVzc3Qgc2ljaCBlcmxlZGlnZW4sCisgICB3ZW5uIGRlciBiZXRyZWZmZW5kZSBOUEMgZGFzIGVyc3RlIE1hbCBnZXRvZXRldCB3dXJkZS4KKworbyAgQXVjaCBkaWUgZnVlciBkZW4gUnVlc3R1bmdzc2tpbGwgc28gYmVsaWVidGVuIFJ1ZXN0dW5nZW4gbXVlc3NlbiBuaWNodAorICAgdm9yIGRlbSBBbnNjaGx1c3MgZWluZ2V0cmFnZW4gd2VyZGVuLiBOZXVlIFJ1ZXN0dW5nZW4gd2VyZGVuIGF1dG9tYXRpc2NoCisgICBiZWltIHp1c3RhZW5kaWdlbiBNYXN0ZXJvYmpla3QgYW5nZW1lbGRldCwgc29iYWxkIHNpZSBkYXMgZXJzdGUgTWFsCisgICByZXBhcmllcnQgd2VyZGVuLgorCitVbmQgbnVuIHZpZWwgU3Bhc3MgYmVpIGRlciBQcm9ncmFtbWllcnVuZyEgCisKZGlmZiAtLWdpdCBhL2RvYy93aXovcmVnaW9uc21hZ2llciBiL2RvYy93aXovcmVnaW9uc21hZ2llcgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5mYWU1ZjlmCi0tLSAvZGV2L251bGwKKysrIGIvZG9jL3dpei9yZWdpb25zbWFnaWVyCkBAIC0wLDAgKzEsMTA4IEBACisKK1JlZ2lvbnNtYWdpZXIKKz09PT09PT09PT09PT0KKworVm9yYmVtZXJrdW5nOiBEaWVzZXMgRG9rdW1lbnQgaXN0IG5pY2h0IGF1ZiBkZW0gYWt0dWVsbGVuIFN0YW5kLAorQW5yZWd1bmdlbiBkYXp1IG5laG1lIGljaCwgWm9vaywgZ2VybmUgZW50Z2VnZW4uIEljaCB3ZXJkZSBkYXMKK0Rva3VtZW50IGRhbm4gbmFjaCB1bmQgbmFjaCBlcndlaXRlcm4sIGJlcmljaHRpZ2VuLgorCisgICAgSGllciBzaW5kIGVpbmlnZSBWZXJoYWx0ZW5zcmVnZWxuIGZ1ZXIgUmVnaW9uc21hZ2llciB6dXNhbW1lbmdldHJhZ2VuLiBTaWUKKyAgICBzb2xsdGVuIHR1bmxpY2hzdCBiZWFjaHRldCB3ZXJkZW4sIGRhbWl0IGVzIG5pY2h0IHp1IEFlcmdlciB1bmQKKyAgICBFbnR0YWV1c2NodW5nZW4gZnVlciBTcGllbGVyIHVuZCBNYWdpZXIga29tbXQuCisKKyAgICBFaW5zdGVsbGVuIHZvbiBuZXVlbiBNaXRhcmJlaXRlcm46CisKKyAgICAgKiBNYW4gc29sbHRlIGRlbSBuZXVlbiBNYWdpZXIgKnZvcmhlciogc2FnZW4sIHdhcyBmdWVyIFJpY2h0bGluaWVuIGZ1ZXIKKyAgICAgICBkaWUgUmVnaW9uIGdlbHRlbi4KKyAgICAgKiBEZXIgbmV1ZSBNYWdpZXIgc29sbHRlIHp1ZXJzdCBzZWluZSBQbGFlbmUgZXJsYWV1dGVybiB1bmQgbWl0IGRlbSBSTQorICAgICAgIGFic3ByZWNoZW4sIG9iIGRhcyBpbiBkaWUgUmVnaW9uIHBhc3N0LgorICAgICAqIFp1bSBBdWZuZWhtZW4gaW4gZGllIFJlZ2lvbiBlaW5mYWNoIGVpbiBWZXJ6ZWljaG5pcyBtaXQgZGVtIE1hZ2llcm5hbWVuCisgICAgICAgYW5sZWdlbiwgZGFubiB6dSBNZXJsaW4gZ2VoZW4gdW5kIHNhZ2VuCisKKyAgICAgICBtZXJsaW4gbWFjaCA8eHh4PiB6dW0gbWFnaWVyIC8gbWVybGluIG1hY2ggPHh4eD4genVyIG1hZ2llcmluCisKKyAgICBadW0gVGVzdGVuIHZvbiBuZXVlbiBHZWJpZXRlbjoKKworICAgICAqIEdlbmVyZWxsIGdpbHQ6IEVSU1QgdGVzdGVuLCBkYW5uIGFuc2NobGllc3Nlbi4KKyAgICAgKiBMb2dpayBiZWFjaHRlbiEKKyAgICAgKiBTeW50YXggdm9uIEJlZmVobGVuIGJlYWNodGVuLCBrYW5uIGRlciBTcGllbGVyIGRyYXVma29tbWVuPworICAgICAqIE9iamVrdGUgcHJ1ZWZlbiwgZ2VuYXVlcmVzIHNpZWhlIHVudGVuIGJlaW0gUHVua3QgQmFsYW5jZS4KKyAgICAgKiBKZWRlcyBNb25zdGVyIGt1cnogdW1oYXVlbiAobmljaHQgemFwcGVuKSwgZ2VodCBwcmltYSBtaXQgZWluZW0KKyAgICAgICBlbnRzcHJlY2hlbmQgaG9oZW4gV2VydCBmdWVyIFBfSEFORFMuIERhbm4gYHRhaWwgL2xvZy9OUENfWFAnIHVuZCBkaWUKKyAgICAgICBYUC1WZXJnYWJlIHVlYmVycHJ1ZWZlbi4KKyAgICAgKiBBdWNoIGRlbiBDb2RlIGFuc2NoYXVlbiwgdW5ub2V0aWdlIG9kZXIgc2NobGVjaHQgcHJvZ3JhbW1pZXJ0ZSBEaW5nZQorICAgICAgIGJlbWFlbmdlbG4sIG5hdHVlcmxpY2ggbWl0IFZlcmJlc3NlcnVuZ3N2b3JzY2hsYWcuCisgICAgICogdHlwaXNjaGVyIEZlaGxlcjogZGFyYXVmIGFjaHRlbiwgb2IgYmVpbSBCZXdlZ2VuIHZvbiBPYmpla3RlbiBpbiBkZW4KKyAgICAgICBTcGllbGVyIGRlciBSdWVja2dhYmV3ZXJ0IHZvbiBtb3ZlKCkgdWViZXJwcnVlZnQgd2lyZCB1bmQgZGllCisgICAgICAgZW50c3ByZWNoZW5kZW4gTWFzc25haG1lbiBlcmdyaWZmZW4gd2VyZGVuLCB3ZW5uIGRlciBTcGllbGVyIG5pY2h0cworICAgICAgIG1laHIgdHJhZ2VuIGthbm4uCisgICAgICogQmVpIHNpY2ggYmV3ZWdlbmRlbiBNb25zdGVybiBtaXQgZGVtIE1hZ2llciBiZXNwcmVjaGVuLCBvYiBkYXMgd2lya2xpY2gKKyAgICAgICBub2V0aWcgaXN0LCBiencuIG9iIG1hbiBkZW4gVGFrdCB2ZXJsYWVuZ2VybiBrYW5uLiBMYXVmLU5QQ3Mgc2luZAorICAgICAgIENQVS1GcmVzc2VyLgorICAgICAqIFZvciBkZW0gQW5zY2hsdXNzIE1VRVNTRU4gRm9yc2NoZXJwdW5rdGUgZWluZ2V0cmFnZW4gd2VyZGVuLiBEYXMgbWFjaHQKKyAgICAgICBkZXIgZW50c3ByZWNoZW5kZSBFcnptYWdpZXIsIG1vbWVudGFuIGlzdCBkYXMgUmlrdXMuIE5hZWhlcmVzIGRhenUKKyAgICAgICBzdGVodCB1bnRlciBgaGlsZmUgZm9yc2NoZXJwdW5rdGUnLgorCisgICAgRWluIHBhYXIgZ3JvYmUgUmVnZWxuIHp1ciBCYWxhbmNlOgorCisgICAgICogRGllcyBzaW5kIFJpY2h0bGluaWVuLCBkaWUgZXZ0bC4gbmljaHQgbWVociBha3R1ZWxsIHNpbmQuIERpZSBha3R1ZWxsZW4KKyAgICAgICBSZWdlbG4sIGRpZSB2b24gZGVuIE1hZ2llcm4gYmVmb2xndCB3ZXJkZW4gbXVlc3Nlbiwgc3RlaGVuIGltCisgICAgICAgVmVyemVpY2huaXMgYC9kb2MvUkVHRUxOJyBzb3dpZSBpbnNiZXNvbmRlcmUgaW4gYC9kb2Mvd2l6L2JhbGFuY2UnLgorICAgICAqIGd1dGUgV2FmZmVuIChXQyB1ZWJlciAxOTApIHNvbGx0ZW4gbnVyIHNlbHRlbiBpbnMgU3BpZWwga29tbWVuLCBkYXMKKyAgICAgICBoZWlzc3QgZXMgc29sbHRlIGtlaW5lIDUgTlBDcyBhdWYgZWluZW0gSGF1ZmVuIG1pdCBzb2xjaGVuIFdhZmZlbiBnZWJlbgorICAgICAgIChhbHMgQmVpc3BpZWwpLiBBdXNzZXJkZW0gc29sbHRlbiBkaWVzZSBXYWZmZW4gc2Nod2VyIHp1IGVybGFuZ2VuIHNlaW4uCisgICAgICogc2VociBndXRlIFdhZmZlbiAoMjAwIG9kZXIgbWVocikgc29sbHRlbiBzZWhyIHNlbHRlbiBzZWluIHVuZCBzZWhyCisgICAgICAgc2Nod2llcmlnIHp1IGJla29tbWVuLiBFeHRyZW0gZ3V0ZSBXYWZmZW4ga29lbm5lbiBydWhpZyBleGlzdGllcmVuLAorICAgICAgIGFsbGVyZGluZ3Mgc29sbHRlbiBzaWUgZGFubiBlaW5tYWxpZyBzZWluIChCZWlzcGllbDogSGF1cnVjaykuCisgICAgICogQXJ0aWxsZXJpZTogR2lidCBlcyBzY2hvbiBtZWhyIGFscyBnZW51Zywgc29sbHRlIGVpZ2VudGxpY2ggbnVyIG5vY2ggaW4KKyAgICAgICBleHRyZW1lbSBBdXNuYWhtZWZhZWxsZW4gbmV1IHJlaW5rb21tZW4uIEFscyBBcnRpbGxlcmllIGJlemVpY2huZSBpY2gKKyAgICAgICBhbGxlcywgd2FzIGltIEthbXBmIHp1c2FldHpsaWNoIGhpbGZ0IChGbGFtbWVua3VnZWxuLCBXdXJmc3Rlcm5lLAorICAgICAgIEVpc3N0YWIpLgorICAgICAqIEhlaWx1bmc6IHRyYWdiYXJlIEhlaWx1bmcgaXN0IGdlbmVyZWxsIG5pY2h0IGVybGF1YnQsIGFsbGVyZGluZ3Mga2FubgorICAgICAgIG1hbiBBdXNuYWhtZW4gbWFjaGVuIGJlaSBlbnRzcHJlY2hlbmRlbiBOYWNodGVpbGVuLCB6LmIuIGhvaGUKKyAgICAgICBTYWV0dGlndW5nLCBnbGVpY2h6ZWl0aWdlIFZlcmdpZnR1bmcsIEFiaGFlbmdpZ2tlaXQgLi4uIGRlciBGYW50YXNpZQorICAgICAgIHNpbmQga2VpbmUgR3JlbnplbiBnZXNldHp0LgorICAgICAqIEF1c2dlZ2xpY2hlbmhlaXQ6IERhcmF1ZiBhY2h0ZW4sIGRhc3MgbmljaHQgbnVyIE1lZ2EtTW9uc3RlciBydW1sYXVmZW4sCisgICAgICAgc29uZGVybiBmdWVyIGplZGVuIGV0d2FzIGRhYmVpIGlzdC4gRGFiZWkgc29sbHRlbiBoYXJ0ZSBNb25zdGVyIG5pY2h0CisgICAgICAgb2huZSB3ZWl0ZXJlcyB6dSBlcnJlaWNoZW4gc2VpbjsgbWFuIHNvbGx0ZSBzcHVlcmJhcmVuIFdpZGVyc3RhbmQKKyAgICAgICB1ZWJlcndpbmRlbiBtdWVzc2VuLCBiZXZvciBtYW4gc2llIGVycmVpY2h0LgorCitQcm9ncmFtbWhpZXJoaW53ZWlzZTogW0VyZ2Flbnp1bmcgdm9tIDIwMDMtMDMtMDYsIFpvb2tdCisKK0JpdHRlIGFjaHRldCBkYXJhdWYsIGRhc3MgYmVpbSBQcm9ncmFtbWllcmVuIEV1cmVyIFJlZ2lvbnNtaXRhcmJlaXRlcgorZ2V3aXNzZSBTdGFuZGFyZHMgZWluZ2VoYWx0ZW4gd2VyZGVuIHVuZCBkYXNzIHR5cGlzY2hlIEZlaGxlciB2ZXJtaWVkZW4KK3dlcmRlbi4gSW0gZm9sZ2VuZGVuIGVpbiBwYWFyIEhpbndlaXNlOgorCisgKiBCZWkgTGFlZGVuIGJpdHRlIGRhcmF1ZiBhY2h0ZW4sIGRhc3MgbmljaHQgdW5ub2V0aWcgInZlcmthdWZlIiBtaXQKKyAgIGVpbmVtIEFkZENtZCB1ZWJlcnNjaHJpZWJlbiB3aXJkLCB3ZW5uIHN0YXR0IGRlc3NlbiBidXlfb2JqKCkgb2RlcgorICAgc2VsbF9vYmooKSB2ZXJ3ZW5kZXQgd2VyZGVuIGthbm4uCisgICBVbSBMYWVkZW4gYmVzc2VyIGFuenVwYXNzZW4sIGthbm4gZG9ydCBhdWNoIFBfR0VOREVSLCBQX05BTUUgdW5kCisgICBQX0FSVElDTEUgZ2VzZXR6dCB3ZXJkZW4uCisgKiBCZWkgV2FmZmVuIGthbm4gdW5kIHNvbGx0ZSBkaWUgRnVua3Rpb24gImlzX3Vuc2FmZSIgdmVyd2VuZGV0IHdlcmRlbiwKKyAgIHdlbm4gTlBDcyBkaWUgV2FmZmUgbmljaHQgenVlY2tlbiBzb2xsdGVuLiBaLkIuIGxpZWZlcnQgZWluZW4gCisgICBSdW5lbnNjaHdlcnQgYmVpIEVsZmVuLU5QQ3MgZWluZSAxIHp1cnVlY2ssIHNvbnN0IGVpbmUgMC4KKyAqIEVzIGdpYnQgZWluZSBQcm9wZXJ0eSBQX1BMVVJBTC4gRGllIHNvbGx0ZSBtYW4gYXVjaCB2ZXJ3ZW5kZW4uIAorICAgU2llaGUgZGF6dSBkaWUgSGlsZmVzZWl0ZS4KKyAqIFp1bSBIYW50aWVyZW4gbWl0IEdlZ2Vuc3RhZW5kZW4gc3RlbGx0IHB1dCZnZXQgZWluaWdlIGtvbWZvcnRhYmxlCisgICBGdW5rdGlvbmVuIHp1ciBWZXJmdWVndW5nOiBwaWNrX29iaigpLCBkcm9wX29iaigpLCBwdXRfb2JqKCksIAorICAgZ2l2ZV9vYmooKS4KKyAgIFVtIE9iamVrdGUgYXVzenV3YWVobGVuIGthbm4gZmluZF9vYnMoKSBnZW51dHp0IHdlcmRlbi4KKyAgIFBydWVmdCBlaW4gT2JqZWt0LCBvYiBlcyBzZWxic3QgZ2VtZWludCBpc3QgKHouQi4gaW4gZWluZW0gQWRkQ21kKQorICAgYml0dGUgcHJ1ZWZlbiwgb2IgaWQoKSB2ZXJ3ZW5kZXQgd2VyZGVuIHNvbGx0ZS4KKyAgIAorCisgICAgU29uc3RpZ2VzOgorCisgICAgICogV2VubiBtYW4gZWluIFZlcnplaWNobmlzIHVudGVyIC9kLzxyZWdpb24+IGFubGVndCwgbXVzcyBtYW4gZGFyYXVmCisgICAgICAgYWNodGVuLCBkYXNzIGRlciBlbnRzcHJlY2hlbmRlIE5hbWUgZ2ViYW5pc2h0IHdpcmQsIHNvbnN0IGlzdCBlaW4KKyAgICAgICBTcGllbGVyIGRlciBkaWVzZW4gTmFtZW4gaGF0IGF1dG9tYXRpc2NoIE1pdGFyYmVpdGVyIGRlciBSZWdpb24gKGRhcworICAgICAgIGJldHJpZmZ0IFZlcnplaWNobmlzc2UsIGRpZSBuaWNodCBmdWVyIFJlZ2lvbnNtaXRnbGllZGVyLCBzb25kZXJuIGZ1ZXIKKyAgICAgICBhbmRlcmUgQXVmZ2FiZW4gZ2VkYWNodCBzaW5kKS4KKyAgICAgKiBFaW4gTmFtZSB3aXJkIGdlYmFuaXNodCBpbmRlbSBtYW4gaW4gZGllIEdpbGRlIGdlaHQgdW5kIGRvcnQgYGJhbmlzaAorICAgICAgIDxuYW1lPicgZWluZ2lidC4gQml0dGUga2VpbmUgZGlyZWt0ZW4gRnVua3Rpb25zYXVmcnVmZSBpbSBtYXN0ZXIhCisKKyBTSUVIRSBBVUNIOgorICAgIGZvcnNjaGVycHVua3RlLCBiYWxhbmNlLCBiYW5pc2gKKworIExFVFpURSBBZU5ERVJVTkc6CisgICAgRG9uLCAgNi4gRmViIDIwMDMsIDEzOjMwOjU2IHZvbiBab29rLgpkaWZmIC0tZ2l0IGEvZG9jL3dpei9yZXB1dGF0aW9uIGIvZG9jL3dpei9yZXB1dGF0aW9uCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjZlMWFjMjAKLS0tIC9kZXYvbnVsbAorKysgYi9kb2Mvd2l6L3JlcHV0YXRpb24KQEAgLTAsMCArMSwxNjQgQEAKK1RIRU1BOgorICBSZXB1dGF0aW9uZW4KKworCitBTExHRU1FSU5FIEJFU0NIUkVJQlVORzoKKyAgTWFuIGthbm4gYmVpIGVpbmVyIEdydXBwaWVydW5nL1ZvbGsvUGFydGVpL2V0Yy4gUnVmIGdld2lubmVuIG9kZXIgdmVybGllcmVuIAorICB1bmQgc29taXQgZW50d2VkZXIgZGVyZW4gUmVzcGVrdCBlcmxhbmdlbiBvZGVyIGF1ZiBpaHJlciBBYnNjaHVzc2xpc3RlIAorICBsYW5kZW4uCisKKyAgQW0gQmVpc3BpZWwgZGVyIEdvYmxpbnMgaW0gV2FsZGRvcmYgU2tvZ2E6IERvcnQgZ2lidCBlcyBkYXMgRnJlaWUgVm9saywgZGFzIAorICBhdXMgc2VpbmVtIEhlaW1hdGRvcmYgdmVydHJpZWJlbiB3dXJkZSwgdW5kIGRpZSBHb2JsaW5zLCB3ZWxjaGUgZGFzIERvcmYKKyAgYmVzZXR6dCBoYWJlbi4gSGlsZnQgbWFuIGVpbmVyIFNlaXRlLCBiYXV0IG1hbiBSdWYgYXVmIHVuZCBlcmhhZWx0IAorICBiZWlzcGllbHN3ZWlzZSBadWdhbmcgenUgSGVpbHN0ZWxsZW4gdW5kIHNwZXppZWxsZW4gSXRlbXMsIHdhZWhyZW5kIGRpZSAKKyAgYW5kZXJlIFNlaXRlIHp1bmVobWVuZCBtaXNzdHJhdWlzY2ggcmVhZ2llcnQgdW5kIGVpbmVuIHNjaGx1c3NlbmRsaWNoIG9obmUgCisgIHp1IGZyYWdlbiBhdHRhY2tpZXJ0LgorCisgIEVzIG11ZXNzZW4gbmljaHQgaW1tZXIgbWVocmVyZSBTZWl0ZW4gaW52b2x2aWVydCBzZWluLiBBdWNoIGVpbmUgZWluemVsbmUgCisgIFBhcnRlaSBpc3QgZGVua2JhciwgZGVyIG1hbiBoZWxmZW4ga2FubiB1bmQgaW4gZGVyZW4gTGFlZGVuL0tuZWlwZW4gbWFuIG1pdCAKKyAgc3RlaWdlbmRlbSBSdWYgei5CLiBWZXJndWVuc3RpZ3VuZ2VuLCBtZWhyIEluZm9ybWF0aW9uZW4sIEJvbnVzaXRlbXMgdW5kIAorICBBZWhubGljaGVzIGVyaGFlbHQuCisKKyAgRGVua2JhciBpc3QgZXMgYXVjaCwgZGFzIEdhbnplIHp1IHZlcm5ldHplbi4gQmVpc3BpZWxzd2Vpc2Uga29lbm50ZSBlaW4gCisgIFZlcndhbmR0ZXIgZWluZXMgTWl0Z2xpZWRzIHZvbiBvYmVuZ2VuYW5udGVtIEZyZWllbiBWb2xrIHZvciBkZW4gQW5ncmlmZmVuIAorICBpbnMgUG9sYXJnZWJpZXQgdW1nZXpvZ2VuIHNlaW4sIGFiZXIgdm9uIGRlcyBTcGllbGVycyBIZWxkZW50YXRlbiBnZWhvZXJ0IAorICBoYWJlbiB1bmQgaWhtIHNvIGZyZXVuZGxpY2hlciBnZXNvbm5lbiBzZWluLgorCisKK01FVEhPREVOIChzLiBhLiBlaW56ZWxuZSBNYW5wYWdlcyk6CisKKyAgaW50IENoYW5nZVJlcHV0YXRpb24oc3RyaW5nIHJlcGlkLCBpbnQgdmFsdWUsIGludCBzaWxlbnQpCisgICAgICBEaWUgRnVua3Rpb24gaXN0IGluIGplZGVtIFNwaWVsZXJvYmpla3Qgdm9yZGVmaW5pZXJ0LgorICAgICAgVm9yIGRlciBBZW5kZXJ1bmcgd2lyZCBlaW4gQ2hlY2sgYXVmIGRpZSBVSUQgZGVzIGF1c2Z1ZWhyZW5kZW4gT2JqZWt0ZXMKKyAgICAgIGF1c2dlZnVlaHJ0LCAiZnJlbWRlIiBSZXB1dGF0aW9uZW4gZGFyZiBtYW4gc29taXQgbmljaHQgdmVyYWVuZGVybi4KKyAgICAgIE1hbiBrYW5uIGFiZXIgc2VsYnN0dmVyc3RhZW5kbGljaCBpbiBiZWdydWVuZGV0ZW4gRmFlbGxlbiBtaXQgZGVtCisgICAgICB6dXN0YWVuZGlnZW4gTWFnaWVyL1JlZ2lvbnNtYWdpZXIgc3ByZWNoZW4sIG9iIG1hbiBlYmVuZmFsbHMgWnVncmlmZgorICAgICAgZXJoYWVsdC4gRWluZ2V0cmFnZW4gd2lyZCBkaWVzIHNjaGx1c3NlbmRsaWNoIGR1cmNoIGVpbmVuIEVNLgorCisKKyAgaW50IEdldFJlcHV0YXRpb24oc3RyaW5nIHJlcGlkKQorICAgICAgRWJlbmZhbGxzIGltIFNwaWVsZXJvYmpla3Qgdm9yZGVmaW5pZXJ0LiBMaWVmZXJ0IGRlbiBha3R1ZWxsZW4gV2VydCBkZXIKKyAgICAgIGFuZ2VnZWJlbmVuIFJlcHV0YXRpb24genVydWVjay4KKworCisgIG1hcHBpbmcgR2V0UmVwdXRhdGlvbnMoKQorICAgICAgRWJlbnNvIHZvcmRlZmluaWVydC4gTGllZmVydCBlaW4gTWFwcGluZyBhbGxlciBpbSBTcGllbGVyIGdlc3BlaWNoZXJ0ZW4KKyAgICAgIFJlcHV0YXRpb25lbiB1bmQgaWhyZXIgV2VydGUgenVydWVjay4KKworCitCRUlTUElFTEU6CisKKyAgLy8gRWluZSBrbGVpbmUgQXVmZ2FiZSBmdWVyIGRhcyAiRnJlaWUgVm9sayIgYnJpbmd0IGRlbSBTcGllbGVyIGV0d2FzIAorICAvLyBBbnNlaGVuLgorCisgIHZvaWQgUXVlc3RHZWxvZXN0KG9iamVjdCBwbCkgeworICAgIC8vIFNpbGVudCwgd2lyIGdlYmVuIGVpbmUgZWlnZW5lIE1lbGR1bmcgYXVzLgorICAgIHBsLT5DaGFuZ2VSZXB1dGF0aW9uKCJmcmVpZXN2b2xrIiwgMjUwLCAxKTsKKworICAgIHRlbGxfb2JqZWN0KHBsLCAiRHUgYmVmcmVpc3QgZWluZW4gR2VmYW5nZW5lbi4gRGFzIGZyZWllIFZvbGsgd2lyZCBlcyAiCisgICAgICAiRGlyIGRhbmtlbi5cbiIpOworICB9CisKKyAgLy8gRWluIE5QQyBkZXMgIlNjaGFlZGxzcGFsdGEtS2xhbnMiLiBXZW5uIGVyIGdldG9ldGV0IHdpcmQsIHZlcmxpZXJlbiBkaWUgCisgIC8vIHRvZXRlbmRlbiBTcGllbGVyIFJ1ZiBiZWkgZGllc2VyIEZyYWt0aW9uLgorIAorICAjaW5jbHVkZSA8cHJvcGVydGllcy5oPgorCisgIGluaGVyaXQgIi9zdGQvbnBjLmMiOworCisgIHZvaWQgY3JlYXRlKCkgeworICAgIG5wYzo6Y3JlYXRlKCk7CisgICAgU2V0UHJvcChQX1NIT1JULCAiRWluIEdvYmxpbiBkZXMgU2NoYWVkbHNwYWx0YS1LbGFucyIpOworICAgIC4uLgorICB9CisKKyAgdmFyYXJncyB2b2lkIGRpZShpbnQgcG9pc29uLCBpbnQgZXh0KSB7CisgICAgb2JqZWN0ICplbmVtaWVzOworICAgIGludCB2YWx1ZTsKKyAgICAvLyBCZWdsZWl0LU5QQ3MgYnJhdWNoZW4ga2VpbmUgUmVwdXRhdGlvbgorICAgIGVuZW1pZXMgPSBmaWx0ZXIoUHJlc2VudEVuZW1pZXMoKSwgIydpbnRlcmFjdGl2ZSk7CisgICAgLy8gNTAgUmVwdXRhdGlvbnNhYnp1ZyBwcm8gS2lsbCwgYXVmZ2V0ZWlsdCBhdWYgYWxsZSBHZWduZXIKKyAgICB2YWx1ZSA9IC01MCAvIHNpemVvZihlbmVtaWVzKTsKKyAgICBmb3JlYWNoKG9iamVjdCBwbCA6IGVuZW1pZXMpIHsKKyAgICAgIHBsLT5DaGFuZ2VSZXB1dGF0aW9uKCJzY2hhZWRsc3BhbHRhIiwgdmFsdWUpOworICAgICAgLy8gT3B0aW9uYWwga29lbm50ZSBpaHJlICJGZWluZGZyYWt0aW9uIiBkYXMgZ3V0aGVpc3NlbjoKKyAgICAgIC8vIHBsLT5DaGFuZ2VSZXB1dGF0aW9uKCJmcmVpZXN2b2xrIiwgYWJzKHZhbHVlKSk7CisgICAgfQorICAgIHJldHVybiBucGM6OmRpZShwb2lzb24sIGV4dCk7CisgIH0KKworICAvLyBKZWRlciBiZXRlaWxpZ3RlIEZlaW5kIGtyaWVndCBudW4gZWluZSBNZWxkdW5nLCBkaWUgaW4gZXR3YSBsYXV0ZW4gCisgIC8vIGtvZW5udGU6ICJEZWluIEFuc2VoZW4gYmVpbSBTY2hhZWRsc3BhbHRhLUtsYW4gaGF0IHNpY2ggZXR3YXMgCisgIC8vIHZlcnNjaGxlY2h0ZXJ0LiIgRGVyIE5QQyBrb2VubnRlIG51biBTcGllbGVyIGF1dG9tYXRpc2NoIGFuZ3JlaWZlbiwgCisgIC8vIHNvYmFsZCBpaHIgUnVmIHp1IHRpZWYgZ2VzdW5rZW4gaXN0OgorICAKKyAgI2luY2x1ZGUgPHJlcHV0YXRpb24uaD4KKworICB2b2lkIGluaXQoKSB7CisgICAgbnBjOjppbml0KCk7CisgICAgaWYob2JqZWN0cCh0aGlzX3BsYXllcigpKSAmJiAhSXNFbmVteSh0aGlzX3BsYXllcigpKSAmJiAKKyAgICAgICB0aGlzX3BsYXllcigpLT5HZXRSZXB1dGF0aW9uKCJzY2hhZWRsc3BhbHRhIikgPD0gUkVQX0RJU0xJS0VEKQorICAgICAgSW5zZXJ0RW5lbXkodGhpc19wbGF5ZXIoKSk7CisgIH0KKworICAvLyBFaW4gTlBDIHJ1ZWNrdCBiZXN0aW1tdGUgSW5mb3JtYXRpb25lbiBlcnN0IHJhdXMsIHNvYmFsZCBkYXMgQW5zZWhlbgorICAvLyBkZXMgU3BpZWxlcnMgaG9jaCBnZW51ZyBpc3Q6CisKKyAgI2luY2x1ZGUgPHByb3BlcnRpZXMuaD4KKyAgI2luY2x1ZGUgPHJlcHV0YXRpb24uaD4KKworICBpbmhlcml0ICIvc3RkL25wYy5jIjsKKworICBzdHJpbmcgSW5mb0dlaGVpbXBsYW4oKTsKKworICB2b2lkIGNyZWF0ZSgpIHsKKyAgICBucGM6OmNyZWF0ZSgpOworICAgIFNldFByb3AoUF9TSE9SVCwgIkRlciBLb21tYW5kYW50IGRlcyBmcmVpZW4gVm9sa2VzIik7CisgICAgLi4uCisgICAgQWRkSW5mbygiZ2VoZWltcGxhbiIsICMnSW5mb0dlaGVpbXBsYW4sICJzYWd0OiAiKTsKKyAgfQorCisgIHN0cmluZyBJbmZvR2VoZWltcGxhbigpIHsKKyAgICBpZih0aGlzX3BsYXllcigpLT5HZXRSZXB1dGF0aW9uKCJmcmVpZXN2b2xrIikgPCBSRVBfVFJVU1RFRCkKKyAgICAgIHJldHVybiAiRGFzIGdlaHQgRGljaCB1ZWJlcmhhdXB0IG5pY2h0cyBhbiEiOworICAgIHJldHVybiAiTnVuLCBpY2ggdmVydHJhdWUgRGlyLiBBbHNvLCBoZXV0ZSB1bSBNaXR0ZXJuYWNodCAuLi4gLi4uIC4uLiI7CisgIH0gICAKKworICAvLyBQcnVlZnVuZyBkZXIgKHdpY2h0aWdzdGVuKSBSdWVja2dhYmV3ZXJ0ZToKKworICAjaW5jbHVkZSA8cmVwdXRhdGlvbnMuaD4KKyAgCisgIHZvaWQgUXVlc3RHZWxvZXN0KG9iamVjdCBwbCkgeworICAgIHN0cmluZyBtc2c7CisKKyAgICAvLyBTb25zdGlnZSBNZWxkdW5nZW4KKyAgICAuLi4KKworICAgIHN3aXRjaChwbC0+Q2hhbmdlUmVwdXRhdGlvbigiZnJlaWVzdm9sayIsIDUwMCwgMSkpIHsKKyAgICAgIC8vIFJlcHV0YXRpb24gYmVyZWl0cyBNYXgKKyAgICAgIGNhc2UgUkVQX1JFVF9BTFJFQURZTUFYOgorICAgICAgICBtc2cgPSAiRGVpbiBBbnNlaGVuIGJlaW0gZnJlaWVuIFZvbGsga2FubiBzaWNoIG5pY2h0IG1laHIgd2VpdGVyICIKKyAgICAgICAgICAgICAgInZlcmJlc3Nlcm4uIjsKKyAgICAgICAgYnJlYWs7CisgICAgICAvLyBSZXB1dGF0aW9uIHdhZXJlIGhvZWhlciBhbHMgTWF4IGdld29yZGVuLCBkYWhlciBhdWYgTWF4IGdlc2V0enQKKyAgICAgIGNhc2UgUkVQX1JFVF9TVUNDRVNTQ1VUOgorICAgICAgICBtc2cgPSAiRGVpbiBBbnNlaGVuIGJlaW0gZnJlaWVuIFZvbGsgaGF0IHNpY2ggZXR3YXMgdmVyYmVzc2VydCwgIgorICAgICAgICAgICAgICAiYWJlciB3ZWl0ZXIgc3RlaWdlcm4ga2FubnN0IER1IGVzIG5pY2h0IG1laHIuIjsKKyAgICAgICAgYnJlYWs7CisgICAgICAvLyBSZXB1dGF0aW9uIGVyZm9sZ3JlaWNoIGdlYWVuZGVydAorICAgICAgY2FzZSBSRVBfUkVUX1NVQ0NFU1M6CisgICAgICAgIG1zZyA9ICJEZWluIEFuc2VoZW4gYmVpbSBmcmVpZW4gVm9sayBoYXQgc2ljaCBldHdhcyB2ZXJiZXNzZXJ0LiI7CisgICAgICAgIGJyZWFrOworICAgICAgZGVmYXVsdDoKKyAgICAgICAgLy8gVGVjaG5pc2NoZXIgRmVobGVyCisgICAgICAgIGJyZWFrOworICAgIH0KKworICAgIGlmKHN0cmluZ3AobXNnKSAmJiBzdHJsZW4obXNnKSkKKyAgICAgIHRlbGxfb2JqZWN0KHBsLCBicmVha19zdHJpbmcobXNnLCA3OCkpOworICB9CisKK1NJRUhFIEFVQ0g6IAorCitMRVRaVEUgQUVOREVSVU5HOgorICAyMDA5LTIyLTAzLCAxMjozMDowMCB2b24gTmliZWwKZGlmZiAtLWdpdCBhL2RvYy93aXovcm0taG93dG8gYi9kb2Mvd2l6L3JtLWhvd3RvCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjc1YjlhYzcKLS0tIC9kZXYvbnVsbAorKysgYi9kb2Mvd2l6L3JtLWhvd3RvCkBAIC0wLDAgKzEsMzM0IEBACitSTSAtIEhPV1RPCisqKioqKioqKioqCisKK1ZvcmxhZXVmaWdlcyBJbmhhbHRzdmVyemVpY2huaXM6CisKKzEpIEFsbGdlbWVpbmVzCisgICAtIEZlaGxlcnRldWZlbAorICAgLSBMb2d0b29sCisgICAtIEtvbW1lbnRpZXJ1bmcgdm9uIEFlbmRlcnVuZ2VuCisgICAtIGVpZ2VuZSBBbnNjaGx1ZXNzZQorMikgQWJuYWhtZSB2b24gQ29kZS9HZWJpZXRlbgorICAgLSBCYWxhbmNlL0dlbmVobWlndW5nZW4KKyAgIC0gS29uemVwdGlvbmVsbGUgRWlnbnVuZworICAgLSBmb3JtYWxlIFBydWVmdW5nCisgICAtIEdlbWVpbnNjaGFmdHNhcmJlaXRlbgorMykgVmVybGVndW5nIHZvbiBEYXRlaWVuCis0KSBTZWhlcmhhZXVzZXIKKyAgIC0gU29uZGVyd3VlbnNjaGUvVW5zaWNodGJhcmtlaXQKKyAgIC0gYW5kZXJlciBCZWZlaGwgenVtIEJldHJldGVuCisgICAtIFZlcndlaXNlIGF1ZiBCZWlzcGllbGNvZGUKKzUpIERlYnVnZ2VuIHZvbiBDb2RlCis2KSBiZXNvbmRlcmUgRnVua3Rpb25lbi9GdW5rdGlvbmFlbGl0YWV0ZW4KKyAgIC0gY2F0Y2hfdGVsbCgpIC8gUmVjZWl2ZU1zZygpCisgICAtIG1vdmUoKQorICAgLSBBdHRhY2soKSAvIERlZmVuZCgpCisgICAtIGNhbGxfb3V0KCkKKyAgIC0gcmVtb3ZlKCkgLyBkZXN0cnVjdCgpCisgICAtIGZvcigpLVNjaGxlaWZlbgorICAgLSB3cml0ZV9maWxlKCkKKyAgIC0gVmVyd2FsdGVuIHZvbiBjaGFyYWt0ZXJiZXpvZ2VuZW4gRGF0ZW4KKworMSkgQWxsZ2VtZWluZXMKKz09PT09PT09PT09PT09CisKK28gVW0gc3RldHMgZWluZW4gVWViZXJibGljayB1ZWJlciBkaWUgaW4gRGVpbmVyIFJlZ2lvbiAoaG9mZmVudGxpY2ggc2VsdGVuKQorICBhdWZ0cmV0ZW5kZW4gQnVncyB1bmQgV2FybnVuZ2VuIHp1IGJlaGFsdGVuLCBzb2xsdGVzdCBEdSBlaW5lbgorICBGZWhsZXJ0ZXVmZWwgKC9vYmovdG9vbHMvZmVobGVydGV1ZmVsLmMpIGJlc2l0emVuLCBiZWRpZW5lbiBrb2VubmVuIHVuZAorICByZWdlbG1hZXNzaWcgZGVzc2VuIExpc3RlbiBkdXJjaHNlaGVuLiBEZWluZW4gUmVnaW9uc21pdGFyYmVpdGVybiBzb2xsdGVzdAorICBEdSwgYWxsZWluIHNjaG9uLCB1bSB6dXNhZXR6bGljaGUgQXJiZWl0IGZ1ZXIgRGljaCBzZWxic3QgenUgcmVkdXppZXJlbiwKKyAgZGllc2VzIFdlcmt6ZXVnIGViZW5mYWxscyBhbiBkaWUgSGFuZCBnZWJlbiB1bmQgc2llIGF1ZmZvcmRlcm4sIGlocmVuCisgIEtyYW0gbW9lZ2xpY2hzdCB1bWZhc3NlbmQgc2VsYnN0IHp1IHJlcGFyaWVyZW4uCisgIE5ldWVuIE1hZ2llcm4gd2lyZCBkaWVzZXMgVG9vbCB1ZWJyaWdlbnMgYXV0b21hdGlzY2ggdm9uIE1lcmxpbiBpbiBkaWUKKyAgSGFuZCBnZWRydWVja3QsIHNvIGRhc3Mgc2llIHNpY2ggdm9tIGVyc3RlbiBUYWcgYW4gZGFyYW4gZ2V3b2VobmVuIGtvZW5uZW4uCisKK28gRXMgaXN0IGVtcGZlaGxlbnN3ZXJ0LCBkYXMgTG9ndG9vbCB6dSBiZXNpdHplbiAoL29iai90b29scy9sb2d0b29sLmMpIHVuZAorICBpbiBkaWVzZW0gZnVlciBqZWRlcyBSZXBmaWxlIGVpbmVzIFJlZ2lvbnNtaXRhcmJlaXRlcnMgZWluZW4gRWludHJhZyB2b3ItCisgIHp1c2VoZW4uIFdhcnVtIGRhcz8gRXMgaXN0IGJlcmVpdHMgdm9yZ2Vrb21tZW4sIGRhc3MgU3BpZWxlciBlcm5zdGhhZnQKKyAgYXJndW1lbnRpZXJ0IGhhYmVuLCBzaWUgZHVlcmZ0ZW4gZWluZW4gdm9uIGlobmVuIGVudGRlY2t0ZW4gQnVnIGF1c251dHplbiwKKyAgd2VpbCBzaWUgaWhuIGphIGdlbWVsZGV0IGhhZXR0ZW4gKGltIFJlcGZpbGUhKSwgZXIgYWJlciBuaWNodCByZXBhcmllcnQKKyAgd29yZGVuIHNlaSAod2FzIG5pY2h0IHZlcnd1bmRlcnQsIGRhIGVyIGltIFJlcGZpbGUgaW4gZGVyIE1laHJ6YWhsIGRlcgorICBGYWVsbGUgd2VpdCB1bnRlcmhhbGIgZGVzIFdhaHJuZWhtdW5nc2hvcml6b250cyBkZXIgYWxsZXJtZWlzdGVuCisgIFJlZ2lvbnNtYWdpZXIgc2Nod2VidCkuCisKK28gV2VubiBEdSBpbiBmcmVtZGVtIENvZGUgQWVuZGVydW5nZW4gdm9ybmVobWVuIG11c3N0LCBkaWUgbWVociBiZXJ1ZWhyZW4KKyAgYWxzIG51ciBlaW4gcGFhciBUaXBwZmVobGVyIGluIERldGFpbHMgb2RlciBJbmZvcywgZGFubiBrb21tZW50aWVyZSBkZW4KKyAgZGVmZWt0ZW4gQ29kZSBhdXMgdW5kIGZ1ZWdlIGRlbiByZXBhcmllcnRlbiBtaXQgS29tbWVudGFyIGVpbi4gRXMgcmVpY2h0CisgIGFuIGRpZXNlciBTdGVsbGUgYXVzLCBEZWluZW4gTmFtZW4gdW5kIGRhcyBEYXR1bSB6dSB2ZXJtZXJrZW4uIEluIGRlbgorICBIZWFkZXIgZGVyIERhdGVpIHNvbGx0ZXN0IER1IHVuYmVkaW5ndCBlaW4gQ2hhbmdlbG9nIGVpbmZ1ZWdlbiwgaW4gZGVtCisgIGRhcyBEYXR1bSBkZXIgQWVuZGVydW5nLCBkZXIgTmFtZSBkZXMgQXVzZnVlaHJlbmRlbiAoRGVpbmVyKSBzb3dpZSBkaWUKKyAgdm9yZ2Vub21tZW5lIEFlbmRlcnVuZyBtaXQgQmVncnVlbmR1bmcgYnp3LiB1LlUuIEJ1Zy1JRCBhdXMgZGVtIEZlaGxlci0KKyAgdGV1ZmVsIGVpbnp1dHJhZ2VuIGlzdC4gV2lyIGhhYmVuIGltIE1HIGxlaWRlciBrZWluZW4gd2lya3VuZ3N2b2xsZW4KKyAgRGVidWdnZXIgdW5kIEJ1Z3RyYWNrZXItTWVjaGFuaXNtdXMsIHNvIGRhc3Mgd2lyIHp1ciBFcmhhbHR1bmcgZWluZXIKKyAgZ2V3aXNzZW4gQ29kZS1IeWdpZW5lIEJ1Z2ZpeGVzIG1pdCBIaWxmZSBzb2xjaGVyIEVpbnRyYWd1bmdlbiBkb2t1bWVudGllcmVuCisgIHVuZCBydWVja3ZlcmZvbGdlbiBtdWVzc2VuLiBJbnNiZXNvbmRlcmUgaXN0IGVpbiBzb2xjaGVyIEVpbnRyYWcgd2ljaHRpZywKKyAgdW0gaW0gRmFsbGUgdm9uIEZvbGdlLUJ1Z3MgZGllIFVyc2FjaGUgc2NobmVsbGVyIHp1IGZpbmRlbi4KKworbyBXaWxsc3QgRHUgaW4gRGVpbmVyIGVpZ2VuZW4gUmVnaW9uIGVpbiBHZWJpZXQgYW5zY2hsaWVzc2VuLCBzb2xsdGVzdCBEdQorICBkaWVzZW4gdm9yIEFuc2NobHVzcyBlbnR3ZWRlciB2b20gQ28tUk0gb2RlciB2b24gZWluZW0gUk0gZWluZXIgYW5kZXJlbgorICBSZWdpb24gbGVzZW4gbGFzc2VuLiBBdWNoIHdlbm4gRHUgZWluIGd1dGVyIFByb2dyYW1taWVyZXIgYmlzdCwgZmluZGV0IGVpbgorICB6d2VpdGVzIFBhYXIgQXVnZW4gb2Z0IERpbmdlLCBhbiBkaWUgbWFuIG5pY2h0IGdlZGFjaHQgaGF0LgorCisKKzIpIENvZGUgd2lyZCB6dXIgQWJuYWhtZSB2b3JnZWxlZ3QKKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKworbyBCZWkgV2FmZmVuIHVuZCBSdWVzdHVuZ2VuIHVuYmVkaW5ndCBhdWYgRWluaGFsdHVuZyBkZXIgQmFsYW5jZS1Wb3JnYWJlbgorICBhY2h0ZW4uCisKK28gU29mZXJuIGVpbiBPYmpla3QgZWluZSBCYWxhbmNlLUdlbmVobWlndW5nIGJlc2l0enQsIG11c3MgZGllIEJUT1AtTnVtbWVyLAorICBkaWUgZGllIEJhbGFuY2UgYWxzIGVpbmRldXRpZ2UgSUQgZnVlciBqZWRlbiBBbnRyYWcgdmVyZ2lidCwgaW0gSGVhZGVyCisgIGRlcyBiZXRyZWZmZW5kZW4gT2JqZWt0ZXMgZXJrZW5uYmFyIGVpbmdldHJhZ2VuIHNlaW4uCisKK28gVm9yIEFuc2NobHVzcyBzb2xsdGUgbWFuIFJ1ZWNrc3ByYWNoZSBtaXQgdmVyc2NoaWVkZW5lbiBJbnN0YW56ZW4gaGFsdGVuLAorICB1bSBzaWNoZXJ6dXN0ZWxsZW4sIGRhc3MgZGVyIE1hZ2llciBhbGxlIHdlc2VudGxpY2hlbiBQdW5rdGUKKyAgYmVydWVja3NpY2h0aWd0IGhhdDoKKyAgLSBsaWVnZW4gYWxsZSBCYWxhbmNlLUdlbmVobWlndW5nZW4gdm9yPworICAtIHNpbmQgZGllIEZQIGVpbmdldHJhZ2VuPworICAtIHNpbmQgZGllIFpUcyBlaW5nZXRyYWdlbiB1bmQgZ2V0ZXN0ZXQ/CisgIC0gc2luZCBTb25kZXItRUstU3R1cHNlIGdlbmVobWlndCB1bmQgZWluZ2V0cmFnZW4/CisKK28gRnVlciBuZXVlIEdlYmlldGUgaXN0IGVpbmUgZ3J1bmRzYWV0emxpY2hlIFBydWVmdW5nIGRlcyBLb256ZXB0cyBhdWYKKyAgUmVnaW9uc3RhdWdsaWNoa2VpdCBzaW5udm9sbCwgZGFtaXQgbmljaHQgYWx0ZWluZ2VzZXNzZW5lIEluc3RpdHV0aW9uZW4KKyAgb2RlciBPcnRlIHBsb2V0emxpY2ggenVyIHp3ZWl0ZW4gV2FobCBhYmdld2VydGV0IHdlcmRlbiAtIGJlaXNwaWVsc3dlaXNlCisgIGVpbmVuIGdyb3NzZW4sIG5ldWVuIEhhdXB0b3J0IGluIGRlciBFYmVuZSBhbnp1c2NobGllc3NlbiwgZGVyIFBvcnQgVmFpbgorICB2b3JhdXNzZWhiYXIgZGVuIFJhbmcgYWJsYXVmZW4gd3VlcmRlLgorCitvIEFsbGUgTlBDcyBzb2xsdGVuIHZvciBBbnNjaGx1c3MgZWlubWFsIGdla2lsbHQgd2VyZGVuLCB1bSBzaWUgYXVmCisgIGdydW5kc2FldHpsaWNoZSBLYW1wZi1GdW5rdGlvbnNmYWVoaWdrZWl0IHp1IHBydWVmZW4uCisKK28gSGFiZW4gTlBDcyBOYW1lbiwgc29sbHRlIHVlYmVybGVndCB3ZXJkZW4sIGRpZXNlIE5hbWVuIGdnZi4genUgYmFuaXNoZW4uCisgIChoaWxmZSBiYW5pc2gpLgorCitvIEVzIGV4aXN0aWVydCBlaW4gU2hlbGwtU2tyaXB0LCBtaXQgZGVzc2VuIEhpbGZlIG1hbiBvZmZlbnNpY2h0bGljaGUKKyAgRm9ybWZlaGxlciBpbiBlaW5lbSBrb21wbGV0dGVuIFZlcnplaWNobmlzIGVybWl0dGVsbiBrYW5uIChVbWxhdXRlIGltCisgIENvZGUsIHp1IGxhbmdlIFplaWxlbiBldGMuKSwgd29iZWkgYmV6dWVnbGljaCBkZXIgRm9ybWFsaWVuIGF1Y2ggYXVmCisgIGRlbiBSZWdpb25zbWl0YXJiZWl0ZXItTGVpdGZhZGVuIGZ1ZXIgbmV1ZSBQcm9qZWt0ZSB2ZXJ3aWVzZW4gd2VyZGVuCisgIHNvbGwuIERhcyBTa3JpcHQgaGllcnp1IGlzdCBhdWYgQW5mcmFnZSBiZWkgWmVzc3RyYSBlcmhhZWx0bGljaC4gRGVyCisgIFJlZ2lvbnNtYWdpZXIgaGF0IGhpZXJiZWkgZGllIEVudHNjaGVpZHVuZ3NmcmVpaGVpdCwgZGllIEJlcmljaHRlIGRpZXNlcworICBTa3JpcHRzIGRlbSBQcm9ncmFtbWllcmVyIGRlcyBuZXVlbiBHZWJpZXRzIGFscyBBbmhhbHRzcHVua3RlIHp1cgorICBWZXJmdWVndW5nIHp1IHN0ZWxsZW4sIG9kZXIgZGllIEFiYXJiZWl0dW5nIGRlciBnZW1lbGRldGVuIFB1bmt0ZSBhbHMKKyAgVm9yYXVzc2V0enVuZyB2b3IgZGVtIEFuc2NobHVzcyB2b3J6dXNjaHJlaWJlbiwgYWJlciBhdWNoIGplZGUgQWJzdHVmdW5nCisgIGRhendpc2NoZW4gaXN0IE9LLiA6LSkKKyAgWnVzYWV0emxpY2hlciBUaXA6IERhcyBTa3JpcHQgZGlmZmVyZW56aWVydCB6d2lzY2hlbiBlaWdlbnRsaWNoIG5pY2h0CisgIGFremVwdGFibGVuIEtvbnN0cnVrdGVuIHVuZCB6dW1pbmRlc3QgZnJhZ3d1ZXJkaWdlbiwgZC5oLiBtYW4ga2FubiBkaWVzZQorICBVbnRlcnNjaGVpZHVuZyBhbiBkZW4gVmVyYW50d29ydGxpY2hlbiBtaXQgZW50c3ByZWNoZW5kZW4gRm9yZGVydW5nZW4KKyAgd2VpdGVyZ2ViZW4uCisgIERhcyBTa3JpcHQgaXN0IHVudGVyIGZ0cDovL21nLm11ZC5kZS9Tb2Z0d2FyZS9zcmNfY2hlY2svIGVyaGFlbHRsaWNoLgorCitvIFNvbGx0ZSBlaW4genVyIEFibmFobWUgYW5zdGVoZW5kZXMgUHJvamVrdCBlaW5lIChncnVuZHNhZXR6bGljaAorICBzZWxic3R2ZXJzdGFlbmRsaWNoIHp1bGFlc3NpZ2UpIEdlbWVpbnNjaGFmdHNhcmJlaXQgc2Vpbiwgc29sbHRlIG1hbgorICBhbHMgUmVnaW9uc21hZ2llciBkYXJhdWYgYmVzdGVoZW4sIGVpbmUgc2F1YmVyIGdldHJlbm50ZSBDb2RlYmFzaXMKKyAgaW4gdW50ZXJzY2hpZWRsaWNoZW4gVmVyemVpY2huaXNzZW4gdm9yZ2VsZWd0IHp1IGJla29tbWVuLCBvZGVyIGFiZXIKKyAgZWluZSBBdWZsaXN0dW5nLCB3ZWxjaGVyIEJlaXRyYWcgdm9uIHdlbGNoZW0gTWFnaWVyIHN0YW1tdC4KKyAgV2VubiBkaWVzZSBBdWZsaXN0dW5nIHNpY2ggYmlzIGF1ZiBGdW5rdGlvbnNlYmVuZSBlcnN0cmVja2VuIHNvbGx0ZQorICAoei5CLiAiRG9XaWVsZCgpIGlzdCB2b24gWCwgRGV0YWlscyB2b24gWSwgRGVmZW5kRnVuYyB2b24gWiIpLCBpc3QKKyAgZGFzIHVuc2Nob2VuIHVuZCBhbiBzaWNoIGFienVsZWhuZW4uCisKKworMykgVmVybGVndW5nIHZvbiBEYXRlaWVuCis9PT09PT09PT09PT09PT09PT09PT09PT0KKworbyBTb2xsdGUgZWluIE9iamVrdCBhdXMgZWluZXIgYW5kZXJlbiBSZWdpb24gYnp3LiBhbGxnZW1laW4gYXVzIGVpbmVtCisgIGFuZGVyZW4gVmVyemVpY2huaXMgKHouQi4gL3BsYXllcnMpIGluIERlaW5lIFJlZ2lvbiB2ZXJsZWd0IHdlcmRlbgorICBtdWVzc2VuLCBzaW5kIFZPUiBkZW0gVW1oYWVuZ2VuIGZvbGdlbmRlIFB1bmt0ZSB6dSBiZWFjaHRlbjoKKyAgLS0gRm9yc2NoZXJwdW5rdGUgbXVlc3NlbiB1bWdldHJhZ2VuIHdlcmRlbiAoRU0gYW5zcHJlY2hlbiksCisgIC0tIEVyc3RraWxsLVN0dWZlbnB1bmt0ZSBtdWVzc2VuIHVtZ2V0cmFnZW4gd2VyZGVuIChFTSBhbnNwcmVjaGVuKSwKKyAgLS0gWmF1YmVydHJhZW5rZSB1bXRyYWdlbiBsYXNzZW4gKEVNIGFuc3ByZWNoZW4pLAorICAtLSBpbiBQYWRyZWljcyBSdWVzdHVuZ3Nza2lsbCB1bXRyYWdlbiBsYXNzZW4gKEVNIGFuc3ByZWNoZW4pLAorICAtLSBldnRsLiBpbSBHZWJpZXRlIHZvcmhhbmRlbmUgU2VoZXJoYWV1c2VyIHVtemllaGVuLAorICAtLSBldnRsLiBpbSBHZWJpZXQgdm9yaGFuZGVuZSBLcmFldXRlcnNraWxsLUtyYWV1dGVyIGJlcnVlY2tzaWNodGlnZW4sCisgIC0tIGV2dGwuIEJyaWVmZW1wZmFlbmdlciBkZXIgUG9zdHF1ZXN0IGJlcnVlY2tzaWNodGlnZW4sCisgIC0tIHVlYmVyIGRpZSBNdWRsaWIgZ3JlcHBlbiBsYXNzZW4sIHVtIGV2ZW50dWVsbCBpbiBhbmRlcmVuIFJlZ2lvbmVuCisgICAgIHZlcndlbmRldGUgUmVmZXJlbnplbiBhdWYgZGllIGFsdGVuIFBmYWRlIGRlcyB1bXppZWhlbmRlbiBDb2RlcworICAgICB6dSBmaW5kZW4gdW5kIGRvcnQgdW16dXN0ZWxsZW4uIEhpZXJiZWkgc2luZCBpbiBBdXNuYWhtZWZhZWxsZW4gdm9uCisgICAgIGZpZXNlbSBDb2RlIGF1Y2ggaW4gU3BpZWxlcnNhdmVmaWxlcyBnZXNwZWljaGVydGUgUGZhZGUgenUKKyAgICAgYmVydWVja3NpY2h0aWdlbiAoKkFSR0wqKS4KKworCis0KSBTZWhlcmhhZXVzZXIKKz09PT09PT09PT09PT09PQorCitvIERpZSBFcmxhdWJuaXMgenVtIEJhdSBlaW5lcyBTZWhlcmhhdXNlcyBpbiBlaW5lbSBHZWJpZXQgaGFlbmd0IGVpbnppZyB1bmQKKyAgYWxsZWluIHZvbiBkZW0gdmVyYW50d29ydGxpY2hlbiBNYWdpZXIgYWIuIFNvbGx0ZSBkaWVzZXIgbGFlbmdlciBuaWNodAorICBlcnJlaWNoYmFyIHNlaW4gKGF1Y2ggbmljaHQgdWViZXIgZXh0ZXJuZSBNYWlsISksIGxpZWd0IGRpZSBFbnRzY2hlaWR1bmcKKyAgYmVpbSBSZWdpb25zbWFnaWVyLCBkZXIgYWJlciBpbiBqZWRlbSBGYWxsIGRpZSBFaWdudW5nIGRlcyBCYXVwbGF0emVzCisgIGluIGRlciBVbWdlYnVuZyBiZXdlcnRlbiBtdXNzLgorCitvIEZ1ZXIgU29uZGVyd3VlbnNjaGUgYmV6dWVnbGljaCBVbnNpY2h0YmFya2VpdCB2b24gU2VoZXJoYWV1c2VybiBvZGVyCisgIGJlc29uZGVyZXIgS29tbWFuZG9zIHp1bSBCZXRyZXRlbiBkZXMgSGF1c2VzIHNlaSBhdWYgZGllIERhdGVpCisgIC9kb2MvYmVpc3BpZWxlL21pc2Mvc2VoZXJoYXVzLmMgdmVyd2llc2VuLCB3byBkaWUgVm9yZ2VoZW5zd2Vpc2UKKyAgZXJsYWV1dGVydCB3aXJkLiBFaW4gQmVpc3BpZWwgZWluZXIgc2VociB1bWZhbmdyZWljaGVuIEltcGxlbWVudGllcnVuZworICBmaW5kZXQgc2ljaCBpbiAvZC9lYmVuZS9yb29tL2hwX3N0cjhhLmMuCisKK28gQmVpIGdlYWVuZGVydGVuIEJlZmVobGVuIHp1bSBCZXRyZXRlbiBtdXNzIGJlYWNodGV0IHdlcmRlbiwgZGFzcyBiZWkgZWluZXIKKyAgU3RhbmRhcmRpbXBsZW1lbnRpZXJ1bmcgZGllIEVybGF1YmUtTGlzdGUgdW1nYW5nZW4gd2lyZCwgZC5oLiBvaG5lCisgIGJlc29uZGVyZSBWb3JrZWhydW5nZW4gdS5VLiBKRURFUiBkYXMgSGF1cyB1bmdlaGluZGVydCBiZXRyZXRlbiBrYW5uLgorICBFcyBpc3QgaGluZ2VnZW4gbW9lZ2xpY2gsIGRpZSBFcmxhdWJlLUxpc3RlIGFienVmcmFnZW4gdW5kIGVudHNwcmVjaGVuZAorICB6dSBiZWhhbmRlbG4sIGVpbiBCZWlzcGllbCBoaWVyZnVlciBpc3QgaW4gL2QvZWJlbmUvcm9vbS9ocF9zdHI4YS5jCisgIG5hY2h6dWxlc2VuIChkZXJ6ZWl0IGplZG9jaCBhdWYgU3BpZWxlcnd1bnNjaCBkZWFrdGl2aWVydCkuCisKKworNSkgRGVidWdnZW4gdm9uIENvZGUKKz09PT09PT09PT09PT09PT09PT09CisKK28gTmFjaCBkZW0gUmVwYXJpZXJlbiBlaW5lcyBPYmpla3RlcyBpc3QgZXMgbWVpc3QgZXJmb3JkZXJsaWNoLCBkYXMKKyAgYmV0cmVmZmVuZGUgT2JqZWt0IG5ldSB6dSBsYWRlbi4gRmFsbHMgZXMgc2ljaCBkYWJlaSB1bSBPYmpla3RlIGhhbmRlbHQsCisgIGRpZSB6LkIuIGluIGVpbmVtIFJhdW0gbWl0dGVscyBBZGRJdGVtKCkgaGluenVnZWZ1ZWd0IHd1cmRlbiAod2llIGV0d2EKKyAgZWluIE5QQyksIGRhbm4gaXN0IGVzIGFtIGJlc3RlbiwgZGllIERhdGVpIG1pdCBkZW0gQmVmZWhsCisgIDx1cGQgLWFkIGRhdGVpLmM+IHp1IGFrdHVhbGlzaWVyZW4gdW5kIHNvbWl0IHNhZW10bGljaGUgQ2xvbmVzIHp1CisgIHplcnN0b2VyZW4uIFdlbm4gbWFuIG1pdHRlbHMgPHVwZCAtYXIgZGF0ZWkuYz4gZGllIGJlc3RlaGVuZGVuIENsb25lcworICBlcnNldHplbiB3dWVyZGUsIHd1ZXJkZW4gZGllc2UgYXVzIGRlciBJdGVtLUxpc3RlIGRlcyBjbG9uZW5kZW4gUmF1bWVzCisgIGF1c2dldHJhZ2VuLCBzbyBkYXNzIGRpZXNlciBSYXVtIGRhbm4gaW0gcmVzZXQoKSBuZXVlIEl0ZW1zIGVyemV1Z3QgdW5kCisgIGRpZXNlIGluIGRlciBGb2xnZSBkb3BwZWx0IGV4aXN0aWVyZW4gd3VlcmRlbi4KKworCis2KSBiZXNvbmRlcmUgRnVua3Rpb25lbgorPT09PT09PT09PT09PT09PT09PT09PT0KKworRXMga29tbXQgaGFldWZpZyB2b3IsIGRhc3MgRnVua3Rpb25lbiB1ZWJlcnNjaHJpZWJlbiB3ZXJkZW4gbXVlc3NlbiwgdW5kIGRhcworaXN0IGF1Y2ggbm9ybWFsZXJ3ZWlzZSB2b2xsa29tbWVuIG5vcm1hbCB1bmQgbmljaHQgYmVhbnN0YW5kZW5zd2VydC4gSmVkb2NoCitzb2xsdGUgbWFuIGJlaSBiZXN0aW1tdGVuIEZ1bmt0aW9uZW4gZWluaWdlcyBBdWdlbm1lcmsgYXVmIGRpZSBrb3JyZWt0ZQorQXVzZnVlaHJ1bmcgcmljaHRlbi4gRWluaWdlIEJlaXNwaWVsZSBzaW5kIG5hY2hmb2xnZW5kIGF1ZmdlZnVlaHJ0OgorCitvIGNhdGNoX3RlbGwoKSAvIFJlY2VpdmVNc2coKQorICBEaWUgUmVha3Rpb24gdm9uIE9iamVrdGVuLCBpbnNiZXNvbmRlcmUgTlBDcywgYXVmIGVpbmdlaGVuZGUgVGV4dG1lbGR1bmdlbgorICBsYWVzc3Qgc2ljaCBudXR6ZW4sIHVtIHNjaG9lbmUgdW5kIHN0aW1tdW5nc3ZvbGxlIEdlYmlldGUgbWl0IGR5bmFtaXNjaAorICByZWFnaWVyZW5kZW4gQmV3b2huZXJuIHp1IHNjaGFmZmVuLiBFcyBsYWVzc3Qgc2ljaCBhdWYgZGVyIGR1bmtsZW4gU2VpdGUKKyAgZGVyIE1hY2h0IGhpbmdlZ2VuIGF1Y2ggdmVyd2VuZGVuLCB1bSB1ZWJsZSBLb25zdHJ1a3RlIHp1IHJlYWxpc2llcmVuLAorICBmdWVyIGRpZSBlcyBzZWl0IEV3aWdrZWl0ZW4gZ2VlaWduZXRlIEltcGxlbWVudGllcnVuZ2VuIGdpYnQsIHVuZCBkaWUKKyAgZGVtenVmb2xnZSBuaWVtYWxzIGR1cmNoIGVpbmUgRW5kYWJuYWhtZSBkdXJjaCBlaW5lbiBSTSBkdXJjaHNjaGx1ZXBmZW4KKyAgZHVlcmZlbi4gRWluIHBhYXIgcmVhbGUgTlBDLUJlaXNwaWVsZSBhdXMgZGVyIFByYXhpczoKKworICBTY2huaXBzZWwgMSkKKworICBpZiAoc3NjYW5mKHN0ciwgIiAgJXMgZ3JlaWZ0IGRlbiBQcmllc3RlciAlcyIsbmFtZTEsIGR1bW15KSA9PSAyKQorICB7CisgICAgcGwgPSBmaW5kX3BsYXllcihsb3dlcl9jYXNlKG5hbWUxKSk7CisgICAgaWYgKCFwbCB8fCAhbGl2aW5nKHBsKSkKKyAgICAgIHJldHVybiAxOworICAgIGVsc2UKKyAgICAgIEtpbGwocGwpOworICB9CisgIFp3ZWNrOiAgICAgU2ltdWxhdGlvbiB2b24gQWRkRGVmZW5kZXIoKSB1bmQgSW5mb3JtRGVmZW5kKCkvRGVmZW5kT3RoZXIoKQorICBLb21tZW50YXI6IEFic29sdXRlcyBOby1HbyEgTWl0IEVjaG8tRmFlaGlna2VpdGVuIHZvbiBTcGllbGVybiAoR2lsZGUgb2RlcgorICAgICAgICAgICAgIGFuZGVyd2VpdGlnKSBpc3QgaGllcm1pdCBlaW4gaW5kaXJla3RlciBQbGF5ZXJraWxsIG1vZWdsaWNoLgorICAgICAgICAgICAgIEluYWt6ZXB0YWJsZSBJbXBsZW1lbnRpZXJ1bmcuCisKKworICBTY2huaXBzZWwgMikKKworICBpZiAoc3NjYW5mKHN0ciwgIiVzIHNhZ3Q6ICVzXG4iLCB3ZXIsd2FzKSkKKyAgeworICAgIGlmIChsb3dlcl9jYXNlKHdhcyk9PSJqYSIgKQorICAgICAgdGhpc19wbGF5ZXIoKS0+bW92ZSh6aWVscmF1bSwgTV9UUE9SVCk7CisgIH0KKyAgWndlY2s6ICAgICBBdXNsb2VzZW4gZWluZXMgS29tbWFuZG9zLCBvaG5lICJzYWdlIC4uLiIgYWxzIEJlZmVobAorICAgICAgICAgICAgIHVlYmVyc2NocmVpYmVuIHp1IG11ZXNzZW4uCisgIEtvbW1lbnRhcjogQXVzbnV0emJhciBhbHMgUmVtb3RlLUZsdWNodHRlbGVwb3J0LCBpbmRlbSBtYW4gZGllIE1lbGR1bmcKKyAgICAgICAgICAgICBtaXR0ZWxzIHRlaWxlLW1pdCBhbiBkZW4gTlBDIHNlbmRldDoKKyAgICAgICAgICAgICAiUm9iZXJ0IHRlaWx0IERpciBtaXQ6IHNhZ3Q6IGphIiwgd2FzIHVuZ2VwcnVlZnQgZWluIG1vdmUoKSAKKyAgICAgICAgICAgICB6dXIgRm9sZ2UgaGF0LiBPZmZlbnNpY2h0bGljaCBlYmVuc28gdW5nZWVpZ25ldCB3aWUgZGFzIAorICAgICAgICAgICAgIHZvcmlnZSBCZWlzcGllbC4KKworCisgIFNjaG5pcHNlbCAzKQorCisgIGlmIChzc2NhbmYobG93ZXJfY2FzZShzdHIpLCIlcyBzYWd0OiAlc3ZlcnN0ZWNrJXMiLHMxLHMyLHMzKSkKKyAgICB0ZWxsX3Jvb20oZW52aXJvbm1lbnQoKSxzcHJpbnRmKCJEZXIgRmlzY2ggc2FndDogRGFzIGlzdCBhYmVyIGtlaW5lICIKKyAgICAgICJncm9zc2UgSGlsZmUsICVzLlxuIixjYXBpdGFsaXplKHMxKSksKHtUT30pKTsKKworICBzaWVodCBlcnN0bWFsIGhhcm1sb3MgYXVzLCBmdWVocnQgYWJlciBtaXQgZGVyIEFud2Vpc3VuZworCisgIFNldENoYXRzKDgsICh7ICJEZXIgRmlzY2ggc2FndDogV28ga2FubiBpY2ggbWljaCBudXIgdmVyc3RlY2tlbj8ifSkgKTsKKworICBkYXp1LCBkYXNzIGRlciBOUEMgZGF1ZXJuZCBtaXQgc2ljaCBzZWxiZXIgc2Nod2F0enQuIEtlaW4ga3JpdGlzY2hlciBCdWcKKyAgaW0gZWlnZW50bGljaGVuIFNpbm4sIGFiZXIgYXVmIGplZGVuIEZhbGwgZGVyIEF0bW9zcGhhZXJlIGltIEdlYmlldAorICBzZWhyIGFidHJhZWdsaWNoLgorCitvIG1vdmUoKQorICBVZWJlcnNjaHJlaWJlbiB2b24gbW92ZSgpIGlzdCBlaW5lIGV4dHJlbSBoZWlrbGUgQW5nZWxlZ2VuaGVpdCwgYmVpIGRlcgorICBiZWltIGtsZWluc3RlbiBGZWhsZXIgbWFzc2l2ZSBQcm9ibGVtZSByZXN1bHRpZXJlbiBrb2VubmVuLCBqZWRvY2ggbWVpc3QKKyAgbmljaHQgb2ZmZW5zaWNodGxpY2ggaXN0LCB3b2hlciBkYXMgcmVzdWx0aWVydC4gQWxzIGFsbGdlbWVpbmUgRW1wZmVobHVuZworICBzb2xsdGUgZ2VsdGVuLCBkYXNzIG1vdmUoKSBOSUUgdWViZXJzY2hyaWViZW4gd2lyZCwgdW5kIHdlbm4sIGRhbm4gbXVzcworICBhdXNmdWVocmxpY2ggdW5kIGF1Zm1lcmtzYW0gZ2VwcnVlZnQgd2VyZGVuLCB3YXMgZGEgcGFzc2llcnQsIHVuZCBvYiBkZXIKKyAgZ2V3dWVuc2NodGUgRWZmZWt0IG5pY2h0IGFuZGVycyBzYXViZXJlciBlcnJlaWNodCB3ZXJkZW4ga2Fubi4KKyAgQWxzIHp1c2FldHpsaWNoZXIgSGlud2VpcyBzZWkgYXVmIE5vdGlmeU1vdmUoKSB1bmQgUHJldmVudE1vdmUoKSB2ZXJ3aWVzZW4sCisgIG1pdCBkZXJlbiBIaWxmZSBzaWNoIGRpZSBhbGxlcm1laXN0ZW4gRmFlbGxlIGVyc2NobGFnZW4gbGFzc2VuLCBpbiBkZW5lbgorICBNYWdpZXIgZmFlbHNjaGxpY2hlcndlaXNlIGdsYXViZW4sIG1vdmUoKSB1ZWJlcnNjaHJlaWJlbiB6dSBtdWVzc2VuLgorCitvIERlZmVuZCgpL0F0dGFjaygpCisgIGhpZXIgaXN0IGVpbiBiZWxpZWJ0ZXIgRmVobGVyIGVpbmZhY2ggZGVyLCBkYXNzIG1hbiBhbSBFbmRlIGRlciBGdW5rdGlvbgorICA6OkRlZmVuZCgpIGJ6dy4gOjpBdHRhY2soKSBydWZ0LCBhYmVyIGltIENvZGVibG9jayB2b3JoZXIgZGFzIE9iamVrdAorICBkdXJjaCBlaWdlbmVuIFRvZCBvZGVyIGFuZGVyZXMgc2Nob24gemVyc3RvZXJ0IHd1cmRlLiBEYW5uIGdlaHQgZGFzIHNjaGllZi4KKyAgRWluZmFjaCBtYWwgaGluc2NoYXVlbiAtIGVzIGlzdCBhYmVyIGtlaW4gd2lya2xpY2ggZ3JhdmllcmVuZGVyIEZlaGxlciwKKyAgZGEgc293YXMgaW0gS2FtcGYgbWVpc3QgemllbWxpY2ggc2NobmVsbCBhdWZmYWVsbHQuCisKK28gY2FsbF9vdXQoKQorICBIaWVyenUgendlaSBIaW53ZWlzZTogenVtIGVpbmVuIGZ1ZWhydCBjYWxsX291dCgieCIsMCkgc2VpdCBkZXIgVW1zdGVsbHVuZworICBhdWYgTERtdWQgYWxzIERyaXZlciBuaWNodCBtZWhyIGltcGxpeml0IHp1IGVpbmVtIGNhbGxfb3V0KCJ4IiwxKSwgd2llIGVzCisgIHp1dm9yIHdhciwgc29uZGVybiB0YXRzYWVjaGxpY2ggenUgZWluZW0gZmFzdCBzb2ZvcnRpZ2VuIEZ1bmt0aW9uc2F1ZnJ1ZiBkZXIKKyAgRnVua3Rpb24geCgpIC0gbWl0IGFsbGVuIEtvbnNlcXVlbnplbiwgaW5rbHVzaXZlIGVpbmVzICJ0b28gbG9uZyBldmFsIi0KKyAgQnVncy4gV2VyIGVpbmUgZWNodGUgVmVyem9lZ2VydW5nIGJyYXVjaHQsIG11c3MgbWluZGVzdGVucyBjYWxsX291dCgieCIsMSkKKyAgdmVyd2VuZGVuLgorICBadW0gYW5kZXJlbiB3dXJkZSBtaXQgTERtdWQgZGllIEdyYW51bGFyaXRhZXQgZGVzIHJlc2V0KCktQXVmcnVmZXMgYXVmCisgIEhlYXJ0YmVhdC1HZW5hdWlna2VpdCAoMiBzKSB2ZXJmZWluZXJ0LCBzbyBkYXNzIG1hbiBiZXF1ZW0gbGFlbmdlcmUKKyAgVmVyem9lZ2VydW5nZW4gYXVmIGRpZSBWZXJ3ZW5kdW5nIHZvbiByZXNldCgpIHVtc3RlbGxlbiBrYW5uLgorCitvIFplcnN0b2VyZW4gdm9uIE9iamVrdGVuIG1pdCByZW1vdmUoKSBvZGVyIGRlc3RydWN0KCkKKyAgTWFuIHNvbGx0ZSBlaW5lbiBzZWhyIGtyaXRpc2NoZW4gQmxpY2sgYXVmIEtvbnN0cnVrdGUgd2VyZmVuLCBkaWUKKyAgbmFjaCBlaW5lbSByZW1vdmUoKSBub2NoIHdlaXRlcmVuIENvZGUgYXVzZnVlaHJlbiAoQXVzbmFobWU6IGVjaHRlIGVmdW5zIAorICB1bmQgQ29tcGlsZXItS29uc3RydWt0ZSB3aWUgcmV0dXJuKS4KKyAgV2VubiBtYW4gT2JqZWt0ZSB6ZXJzdG9lcmVuIHdpbGwgb2RlciBtdXNzLCBzb2xsdGUgbWFuIGltbWVyIHp1ZXJzdCAKKyAgcmVtb3ZlKCkgdmVyd2VuZGVuLiBEZXN0cnVjdCBtdXNzIGRlbSBhYnNvbHV0ZW4gQXVzbmFobWVmYWxsIHZvcmJlaGFsdGVuIAorICBibGVpYmVuLiBNYW4gc29sbHRlIGltIEhpbnRlcmtvcGYgYmVoYWx0ZW4sIGRhc3MgT2JqZWt0ZSBndXRlIEdydWVuZGUgaGFiZW4KKyAga29lbm5lbiwgc2ljaCBlaW5lbSByZW1vdmUoKSB6dSB2ZXJ3ZWlnZXJuLgorCitvIGZvcigpLVNjaGxlaWZlbgorICBFaWdlbnRsaWNoIGtlaW5lIEZ1bmt0aW9uLCBhYmVyIGFuIGRpZXNlciBTdGVsbGUgZG9jaCBwYXNzZW5kOgorICBmb3IoKS1TY2hsZWlmZW4gc29sbHRlbiBnZW5lcmVsbCBkdXJjaCBmb3JlYWNoKCktS29uc3RydWt0aW9uZW4gZXJzZXR6dAorICB3ZXJkZW4sIGRhIGRpZXMgc2lnbmlmaWthbnQgdW5kIG1lc3NiYXIgc2NobmVsbGVyIGlzdC4gRGllIG5hZWNoc3QtCisgIHNjaG5lbGxlcmUgVmFyaWFudGUgd2FlcmUgZXR3YSBmb2xnZW5kZXMsIHNvZmVybiBkaWUgUmVpaGVuZm9sZ2UgZGVyCisgIEFiYXJiZWl0dW5nIHVuZXJoZWJsaWNoIGlzdCAoaSBpc3QgaW50ZWdlciwgYXJyIGlzdCBlaW4gbWl4ZWQtQXJyYXkpOgorCisgIGZvciAoIGk9c2l6ZW9mKGFycik7IGktLTsgKSB7CisgICAgdHVfZXR3YXNfbWl0KGFycltpXSk7CisgIH0KKworbyB3cml0ZV9maWxlKCkKKyAgQmVudXR6dW5nIGRpZXNlciBGdW5rdGlvbiBudXIgaW4gYmVncnVlbmRldGVuIEF1c25haG1lZmFlbGxlbiBhYm5laG1lbiwgZGEKKyAga2VpbmVybGVpIEJlZ3Jlbnp1bmcgZGVyIERhdGVpZ3JvZXNzZSBleGlzdGllcnQuIEluc2Jlc29uZGVyZSBiZWkgTG9nZmlsZXMKKyAgZW50c3RlaGVuIGhpZXJkdXJjaCBpbSBMYXVmZSBkZXIgWmVpdCBNb25zdGVyZGF0ZWllbiwgZGllIG51ciBQbGF0dGVucGxhdHoKKyAgdmVyYnJhdWNoZW4sIGFiZXIga2F1bSB6dSB1ZWJlcnNjaGF1ZW4gc2luZC4gU3RhdHQgd3JpdGVfZmlsZSgpIHdpcmQgaW4KKyAgZGVuIGFsbGVybWVpc3RlbiBGYWVsbGVuIGxvZ19maWxlKCkgbWl0IGRlciBTdGFuZGFyZGdyb2Vzc2Ugdm9uIDUwIGtCIGZ1ZXIKKyAgTG9nZmlsZSB1bmQgZWluZSBnZ2YuIHZvcmhhbmRlbmUgQWx0dmVyc2lvbiAoKi5PTEQpIGF1c3JlaWNoZW5kIHNlaW4uCisKK28gVmVyd2FsdGVuIHZvbiBjaGFyYWt0ZXJiZXpvZ2VuZW4gRGF0ZW4KKyAgQWxzIEJlaXNwaWVsIHNlaWVuIGhpZXIgU3RhdHVzZGF0ZW4gZnVlciBkZW4gQWJsYXVmIHZvbiBRdWVzdHMgZ2VuYW5udCwKKyAgb2RlciBIaWdoc2NvcmVzIGluIGlyZ2VuZHdlbGNoZW4gVG9wbGlzdGVuLiBGdWVyIGRpZSBVbXNldHp1bmcgZGllc2VyCisgIERhdGVuZXJmYXNzdW5nIHdlcmRlbiB0eXBpc2NoZXJ3ZWlzZSB6d2VpIFRlY2huaWtlbiBlaW5nZXNldHp0LiBadW0KKyAgZWluZW4ga2FubiBlaW4gTWFzdGVyb2JqZWt0IGVyc3RlbGx0IHdlcmRlbiwgZGFzIGRpZSBEYXRlbiBzYW1tZWx0IHVuZAorICBtaXR0ZWxzIHNhdmVfb2JqZWN0KCkgZGF1ZXJoYWZ0IHNwZWljaGVydC4gWnVtIGFuZGVyZW4ga2FubiBtYW4gYXVjaAorICBEYXRlbiBpbiBlaW5lciBQcm9wZXJ0eSBpbSBTcGllbGVyIGFibGVnZW4gdW5kIGRpZXNlIGplIG5hY2ggQW53ZW5kdW5ncy0KKyAgZmFsbCBhdWYgU0FWRSBzZXR6ZW4uCisKKyAgQmVpIGRlciBlcnN0ZW4gVmFyaWFudGUgd2lyZCBtYW4gdWVibGljaGVyd2Vpc2UgZGllIFVJRCBvZGVyIFVVSUQgZGVzIAorICBTcGllbGVycyBhbHMgSW5kaXppZXJ1bmdzbWVya21hbCB2ZXJ3ZW5kZW4uIERlciBlcnN0ZSBGYWxsc3RyaWNrIGlzdCBudW4sCisgIGRhc3MgZGllIFVJRCBiZWkgU3BpZWxlcm4gKG5pY2h0IFNlaGVybikgZ2dmLiBuYWNoIGVpbmVyIFNlbGJzdGxvZXNjaHVuZworICBuZXUgdmVyZ2ViZW4gd2VyZGVuIGthbm4sIHNvIGRhc3MgZGllIERhdGVuIGlua29uc2lzdGVudCB3ZXJkZW4gYnp3LiBkZXIKKyAgU3BpZWxlciBzY2hlaW5iYXIgc2Nob24gaW4gRXVyZW0gTWFzdGVyIGVpbmdldHJhZ2VuIGlzdCwgb2J3b2hsIGVzIHNpY2gKKyAgZWlnZW50bGljaCB1bSBqZW1hbmQgZ2FueiBhbmRlcmVzIGhhbmRlbHQuCisgIEFscyBBYmhpbGZlbWFzc25haG1lIGJpZXRldCBzaWNoIGZvbGdlbmRlcyBhbjogCisgIGEpIFVVSUQgdmVyd2VuZGVuLCBkYSBkaWVzZSBmdWVyIGplZGVuIFNwaWVsZXIgZWluZGV1dGlnIGlzdC4KKyAgYikgSGlud2VpczogZmluZF9wbGF5ZXIoKSBrYW5uIGF1Y2ggbWl0IFVVSURzIHVtZ2VoZW4gdW5kIGRhcyB6dWdlaG9lcmlnZQorICAgICBTcGllbGVyb2JqZWt0IGVybWl0dGVsbi4KKyAgYykgTWFuIHNvbGx0ZSBnZ2YuIGF1ZiBkYXMgTXVkbGliLUV2ZW50IEVWVF9MSUJfUExBWUVSX0RFTEVUSU9OIGxhdXNjaGVuLCAKKyAgICAgdW0gU3BpZWxlciBhdXN6dXRyYWdlbiwgZGllIHNpY2ggbG9lc2NoZW4sIHdvZHVyY2ggZGllIHp1Z2Vob2VyaWdlbgorICAgICBEYXRlbiBvYnNvbGV0IHdlcmRlbi4KKworICBCZWkgZGVyIHp3ZWl0ZW4gVmFyaWFudGUgbXVzcyBtYW4gdmVyc2NoaWVkZW5lIERpbmdlIGJlcnVlY2tzaWNodGlnZW46CisgIGEpIG5pY2h0IGVuZGxvcyB2aWVsZSBQcm9wZXJ0aWVzIG1hY2hlbiwgc29uZGVybiBwcm8gVGhlbWEgKHouQi4gUXVlc3QpCisgICAgIGVpbmZhY2ggZWluZS4KKyAgYikgbnVyIGRpZSBQcm9wZXJ0aWVzIHNwZWljaGVybiwgYmVpIGRlbmVuIGRhcyB3aXJrbGljaCBub2V0aWcgaXN0LgorICBjKSBTcGVpY2hlcnQgbWFuIFByb3BlcnRpZXMgdW5kIGRpZSBBdWZnYWJlIHdpcmQgZXJsZWRpZ3QsIGQuaC4gZGVyIAorICAgICBJbmhhbHQgZGVyIFByb3BlcnR5IG9ic29sZXQsIG11c3MgZGllIFByb3BlcnR5IHdpZWRlciBnZWxvZXNjaHQgd2VyZGVuLgpkaWZmIC0tZ2l0IGEvZG9jL3dpei9ydWVzdHVuZ2VuIGIvZG9jL3dpei9ydWVzdHVuZ2VuCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjZjNzQyNWIKLS0tIC9kZXYvbnVsbAorKysgYi9kb2Mvd2l6L3J1ZXN0dW5nZW4KQEAgLTAsMCArMSwyMTIgQEAKKyBSVWVTVFVOR0VOOgorICAgICBhLiBBbGxnZW1laW5lcworCisJQXVjaCBoaWVyIGdlbHRlbiBkaWUgYWt0dWVsbGVuIEdlbmVobWlndW5nc2dyZW56d2VydGUuIEFsbGVzLCB3YXMKKwlkaWVzZSBBQy1HcmVuendlcnRlIHVlYmVyc3RlaWd0LCBpc3QgcHJpbnppcGllbGwgCisJZ2VuZWhtaWd1bmdzcGZsaWNodGlnLiBEaWUgUk1zIHNpbmQgZ2Vmb3JkZXJ0LCBmdWVyIGVpbmUgYXVzZ2V3b2dlbmUKKwlCZXN0dWVja3VuZyBkZXIgUnVlc3R1bmdlbiBpbiBpaHJlbSBHZWJpZXQgenUgc29yZ2VuLiBOaWNodCBudXIgZGllCisJb2JlcmVuIFNjaHV0endlcnRlIGdpbHQgZXMgYWJ6dWRlY2tlbiwgYXVjaCBkaWUgd2VuaWdlciBndXRlbiAKKwlSdWVzdHVuZ2VuIHNvbGx0ZSBlcyBnZWJlbi4KKworCUFscyBSaWNodHdlcnQgc29sbHRlIGdlbHRlbjogRWluZSBndXRlIExlZGVycnVlc3R1bmcgaGF0IGNhLiBBQyAyMCwgCisJZWluZSBzdGFiaWxlIEplYW5zIGV0d2EgQUMgNSwgZWluZSBnZWhhZXJ0ZXRlIExlZGVya2FwcGUgQUMgNS4gTnVyIAorCXNvIGFscyBJZGVlLi4uCisKKwlCZXNvbmRlcnMgZXhpc3RpZXJlbmRlIFJ1ZXN0dW5nZW4gd2llIGRlciBMaWNodHBhbnplciBldGMuIHNpbmQgCisJZGVmaW5pdGl2IHp1IGd1dCwgYnp3LiBlciBpc3QgZnVlciBlaW5lIHNvIGxlaWNodCBlcnJlaWNoYmFyZSAKKwlSdWVzdHVuZyB6dSBndXQuIEhpZXIgc29sbHRlbiBkaWUgUk1zIHZlcnN0YWVya3QgZGFyYXVmIGFjaHRlbiwgZGFzcyAKKwluaWNodCB1bmJlZGluZ3QgZGVyIER1cmNoc2Nobml0dCBkZXIgQUNzIGJlaSA0LzUgZGVyIE1heC1BQyBsaWVndCwgCisJc29uZGVybiBkYXNzIGF1Y2ggaGllciBhdWYgZWluZSBSdWVzdHVuZyBtaXQgaG9oZXIgQUMgdmllbGUgbWl0IAorCW5pZWRyaWdlcmVyIEFDIGtvbW1lbi4KKworCVJ1ZXN0dW5nZW4gdm9tIFR5cCBBVF9NSVNDIGR1ZXJmZW4ga2VpbmVybGVpIFZlcmFlbmRlcnVuZ2VuIGltIAorCVNwaWVsZXIgdmVydXJzYWNoZW4sIGtlaW5lIEF0dHJpYnV0ZSB2ZXJhZW5kZXJuIG5vY2ggc29uc3R3aWUgCisJa2FtcGZyZWxldmFudGUgQmVkZXV0dW5nIGJlc2l0emVuIG9kZXIgU3BpZWxlci9HZWduZXIgbWFuaXB1bGllcmVuLiAKKwlEaWUgQUMgc29sY2hlciBSdWVzdHVuZ2VuIGlzdCBpbW1lciAwIHVuZCB3aXJkIG5pY2h0IGFuZGVycyBnZS0KKwluZWhtaWd0LiBXZWl0ZXIgZHVlcmZlbiBzb2xjaGUgUnVlc3R1bmdlbiBuaWNodCB1ZWJlciBlaW5lIEhpdC0KKwl1bmQvb2RlciBEZWZlbmRGdW5jIHZlcmZ1ZWdlbi4KKworICAgICBiLiBQcm9wZXJ0aWVzCisKKyAgICAgIFBfV0VJR0hUCisJQml0dGUgcmVhbGlzdGlzY2ggaGFsdGVuLiBSaW5nZSBtaXQgd2VpdCB1ZWJlciAxMDAgR3JhbW0gc2luZCAKKwlTY2h3YWNoc2lubiwgZWJlbnNvIEhvc2VuIG1pdCBHZXdpY2h0ZW4gdW50ZXIgMjAwIHVzdy4KKyAgKEJUVzogU3BpZWxlciBrb2VubmVuIGJlaSBNYXgtU3RhZXJrZSAoMzApIDMzMjAwIGdyIHp6Z2wuIGV0d2FpZ2UKKyAgIFRyYWdlc2tpbGxzIGRlciBHaWxkZSB0cmFnZW4uKQorCisgICAgICBQX1ZBTFVFCisJV2VydCBkZXIgUnVlc3R1bmdlbiBzb2xsdGUgYXVjaCBuaWNodCB6dSBncm9zcyBzZWluIHVuZCBzaWNoIGVpbiAKKwl3ZW5pZyBhbiBkZXIgQUMgb3JpZW50aWVyZW4uIEViZW5mYWxsczogUk1zLCBzY2hhdXQgZ2VuYXUgaGluLgorCisgICAgICBQX0FSTU9VUl9UWVBFCisJQml0dGUgc2lubnZvbGwgYmVudXR6ZW4hIEtsZWlkZXIgYWxzIEhvc2VuIGRlZmluaWVyZW4gb2RlciAKKwlhZWhubGljaGVzIGlzdCB1bnNpbm5pZyB1bmQgc29sbHRlIG5pY2h0IGdlbmVobWlndCB3ZXJkZW4uIFNpbmQgbWFsIAorCXdpZWRlciBkaWUgUk1zIGZ1ZXIgenVzdGFlbmRpZy4gQml0dGUgYWNodGV0IGRyYXVmIQorCisJRm9sZ2VuZGUgUnVlc3R1bmdzdHlwZW4gc2luZCBtb2VnbGljaDoKKworCUFUX0FSTU9VUgorCQlBbGxlcyB3YXMgaXJnZW5kd2llIGRlbiBUb3JzbyBzY2h1ZXR6dC4gQWxzbyB2b3JuIHVuZCAKKwkJaGludGVuLCB3aWUgZWluIFB1bGxvdmVyLCBlaW4gS2V0dGVuaGVtZCwgZWluIFBhbnplciBldGMuCisJQVRfQ0xPQUsKKwkJVW1oYWVuZ2UsIGF1Y2ggaW0gd2VpdGVyZW4gU2lubiB3aWUgRGVja2VuIHVuZCBTY2hsZWllci4gSW0gCisJCVByaW56aXAgZGFzLCB3YXMgbm9ybWFsZXJ3ZWlzZSBudXIgZGVuIFJ1ZWNrZW4gc2NodWV0enQsIGJlaSAKKwkJQmVkYXJmIGFiZXIgYXVjaCB2b3JuIGhlcnVtIGdld2lja2VsdCB3ZXJkZW4ga29lbm50ZS4KKwlBVF9IRUxNRVQKKwkJS29wZmJlZGVja3VuZ2VuIGplZGVyIEFydCwgdm9tIG5vcm1hbGVuIEh1dCB1ZWJlciBLcm9uZW4gYmlzIAorCQloaW4genUgU3Rpcm5iYWVuZGVybiAod2VubiBzaWUgc2NodWV0emVuIHNvbGxlbikKKwlBVF9UUk9VU0VSUworCQlIb3Nlbi4gQWxsZXMgd2FzIHp1bSB1ZWJlcndpZWdlbmRlbiBUZWlsIGRhenUgZ2VkYWNodCBpc3QsIAorCQlkaWUgQmVpbmUgdW5kL29kZXIgZGVuIFBvcG8genUgc2NodWV0emVuLCBhbHNvIGF1Y2ggCisJCVNjaHVlcnplbiBvZGVyIExlZ2dpbnMuIE5hdHVlcmxpY2ggZ2Vob2VyZW4gYXVjaCBCYWRlaG9zZW4gCisJCW9kZXIgTGVuZGVuc2NodWVyemUgaGllcmhlci4gQUMgZGFubiBzZWxic3R2ZXJzdGFlbmRsaWNoIAorCQlnZXJpbmcuCisJQVRfQk9PVAorCQlTY2h1aGUsIFN0aWVmZWwgdW5kIEZ1c3NiZWtsZWlkdW5nZW4gamVkZXIgQXJ0LgorCUFUX0dMT1ZFCisJCUhhbmRzY2h1aGUgb2RlciBhbGxlcywgd2FzIG1hbiBzbyB6dW0gU2NodXR6IGRlciBvYmVyZW4gCisJCUV4dHJlbWl0YWV0ZW4gYmVudXR6dCwgd2llIEFybXNjaG9uZXIsIEdsYWNlaGFuZHNjaHVoZSwgCisJCUZhZXVzdGxpbmdlLCBCb3hoYW5kc2NodWhlIGV0Yy4KKwlBVF9RVUlWRVIKKwkJS29lY2hlciB1bmQgYWVobmxpY2hlcywgaW4gZGVuZW4gbWFuIE11bml0aW9uIGZ1ZXIgCisJCVNjaHVzc3dhZmZlbiB1bnRlcmJyaW5nZW4ga2Fubi4gU2NodWV0emVuIHR1dCBzb3dhcyAKKwkJbmF0dWVybGljaCBuaWNodC4KKwlBVF9TSElFTEQKKwkJQWxsZXMsIHdhcyBtYW4gc28gYW5zdGVsbGUgZGVyIGVpZ2VuZW4gQXJtZSBpbiBlaW5lbiAKKwkJZ2VnbmVyaXNjaGVuIFNjaGxhZyBoYWx0ZW4ga2FubiB1bmQgZGFzIG5pY2h0IG9mZml6aWVsbCBhbHMgCisJCVdhZmZlIGRla2xhcmllcnQgaXN0LiBFcyBzb2xsdGUgbmljaHQgZ3JhZGUgYXVzIFBhcGllciAKKwkJYmVzdGVoZW4sIHVuZCBkYXMgR2V3aWNodCBpc3QgbWl0IGVudHNjaGVpZGVuZCBmdWVyIGRpZSAKKwkJR3VldGUgZGVzIFNjaGlsZGVzLiBTaWUgd2VyZGVuIHNlaHIgd2VuaWcgaW0gTUcgZ2VudXR6dCwgd2FzIAorCQllaWdlbnRsaWNoIHNlbHRzYW0gaXN0LiBTY2hsaWVzc2xpY2ggZXJyZWljaHQgZWluIGd1dGVyIAorCQlTY2hpbGQgZGllIEd1ZXRlIHZvbiBIZWxtLCBIb3NlIHVuZCBIYW5kc2NodWhlbiB6dXNhbW1lbiAKKwkJb2RlciAzLzQgZGVyIFF1YWxpdGFldCBlaW5lciBSdWVzdHVuZy4gQW5kZXJlcnNlaXRzOiBlcyBnaWJ0IAorCQlhdWNoIG5pY2h0IHNlaHIgdmllbGUgU2NoaWxkZS4gRGEgaGVycnNjaHQgQmVkYXJmIQorCUFUX1JJTkcKKwkJUmluZ2UuIFByaW56aXBpZWxsIHNvbGx0ZSBnZWx0ZW4sIGRhcyBSaW5nZSBwcmFrdGlzY2gga2VpbmUgCisJCVNjaHV0endpcmt1bmcgaGFiZW4gKGFsc28gQUMgMSBvZGVyIG1heC4gMikuIE51ciwgdW5kIGRhZnVlciAKKwkJc2luZCBkaWUgRGluZ2VyIGRhLCB3ZW5uIHNpZSBtYWdpc2NoIHNpbmQga29lbm5lbiBzaWUgCisJCXp1c2FldHpsaWNoZSBGdW5rdGlvbmVuIGhhYmVuLgorCUFUX0FNVUxFVAorCQlJbSBQcmluemlwIGRhc3NlbGJlIHdpZSBiZWkgQVRfUklORywgbnVyIHdlcmRlbiBkaWUgRGluZ2VyIAorCQltZWlzdCBhbiBLb3JkZWxuIHVtIGRlbiBIYWxzIG9kZXIgYWxzIEJyb3NjaGVuIGFuIGRlbiAKKwkJS2xhbW90dGVuIGdldHJhZ2VuLCBrb2VubnRlbiBhbHNvIGplIG5hY2ggR3JvZXNzZSAKKwkJdGF0c2FlY2hsaWNoIG1laHIgU2NodXR6IGJpZXRlbiBhbHMgZWluIFJpbmcuIEFiZXIgYXVjaCBoaWVyIAorCQlnaWx0OiBBQz4yIHNjaHJlaXQgbmFjaCBFcmtsYWVydW5nIHVuZCBzb2xsdGUgbWFnaXNjaGVuIAorCQlEaW5nZXJuIHZvcmJlaGFsdGVuIGJsZWliZW4uCisJQVRfQkVMVAorCQlHdWVydGVsIGFsbGVyIEFydCAoei5CLiBXYWZmZW5ndWVydGVsIG9kZXIgTWFnaXN0ZXJndWVydGVsIAorCQlkZXIgWmF1YmVyZXIpLiBTY2h1dHp3aXJrdW5nIGhhdCBzb3dhcyBuYXR1ZXJsaWNoIGthdW0uCisJQVRfTUlTQworCQlBbGxlcywgd2FzIG1hbiBzb25zdCBub2NoIHNvIGFuemllaGVuIGthbm4sIHdhcyBhYmVyIGVoZXIgCisJCWFscyBaaWVycmF0IGdlZGFjaHQgaXN0LiBBQyBpbW1lciAwLiBCaXR0ZSAqa2VpbmUqIAorCQlLbGVpZHVuZ3NzdHVlY2tlLCBkaWUgaW4gZWluZSBkZXIgYW5kZXJlbiBLYXRlZ29yaWVuIHBhc3NlbiwgCisJCWFscyBBVF9NSVNDIGRlZmluaWVyZW4uIERhbm4gbGllYmVyIGRpZSBBQyBzZWhyIHRpZWYuIFdlbm4gCisJCWVzIGVoIGFscyBHYWcgZ2VkYWNodCBpc3Qga29lbm5lbiBkaWUgU3BpZWxlciBzaWNoIGF1Y2ggYmVpIAorCQlCZWRhcmYgdW16aWVoZW4uCisJCVNvbGNoZSBSdWVzdHVuZ2VuIGR1ZXJmZW4ga2VpbmVybGVpICghKSBCZWRldXR1bmcgaW0gS2FtcGYgCisJCWZ1ZXIgZGVuIFNwaWVsZXIgaGFiZW4uIEtlaW5lcmxlaSBWZXJhZW5kZXJ1bmdlbiBpbS9hbiAKKwkJU3BpZWxlci9HZWduZXIgdmVydXJzYWNoZW4gb2RlciBhZWhubGljaGVzLgorCisgICAgICBQX0FDCisJc2llaGUgVGFiZWxsZSB3ZWl0ZXIgdW50ZW4KKworICAgICAgUF9FRkZFQ1RJVkVfQUMKKwlGYWxscyBlaW5lIERlZmVuZEZ1bmMgdm9yaGFuZGVuIGlzdCB1bmQgZGllIHJlZ3VsYWVyZSBBQyB2ZXJhZW5kZXJ0LCAKKwlzb2xsdGUgc2llIGdlc2V0enQgd2VyZGVuLiBFcyB3aXJkIGRlciBEdXJjaHNjaG5pdHRzd2VydCBkZXIgQUMgCisJaW5jbC4gZGVyIERlZmVuZEZ1bmMgZ2VzZXR6dC4gRGllbnQgZGVyIEthZW1wZmVyZ2lsZGUgenVyIAorCUVpbnNjaGFldHp1bmcuCisKKyAgICAgIFBfREFNX1RZUEUKKwlBdWNoIFJ1ZXN0dW5nZW4ga29lbm5lbiBlaW5lbiBEYW1hZ2UtVHlwIGhhYmVuLiBOdXR6ZW4gdHV0IGRhcyAKKwliaXNoZXIgbnVyIGRpZSBLYWVtcGZlcmdpbGRlLCBhYmVyIHNjaGFkZW4gdHV0J3Mga2VpbmVtLiBEZWZhdWx0IGlzdCAKKwlEVF9CTFVER0VPTi4KKworICAgICAgUF9OT0JVWQorCUFsbGUgUnVlc3R1bmdlbiBhYiAyLzMgZGVyIG1heGltYWwgZnVlciBkZW4gamV3ZWlsaWdlbiBSdWVzdHVuZ3N0eXAgCisJenVsYWVzc2lnZW4gQUMgd2VyZGVuIGJlaW0gVmVya2F1ZiBpbSBMYWRlbiBlaW5iZWhhbHRlbi4gRGVubm9jaCAKKwlzb2xsdGVuIGJlc29uZGVyZSBSdWVzdHVuZ2VuIFBfTk9CVVkgZ2VzZXR6dCBoYWJlbi4gSW5zYmVzb25kZXJlIAorCXdhZXJlIGRhcyBmdWVyIGFsbGVzIG1pdCBEZWZlbmRGdW5jcyB6dSB3dWVuc2NoZW4sIGFiZXIgYXVjaCBTYWNoZW4sIAorCWRpZSBhbHMgR2FnIGdlZGFjaHQgc2luZC4gRGFmdWVyIGtvZW5uZW4gc2ljaCBkaWUgU3BpZWxlciBydWhpZyAKKwlldHdhcyByZWNrZW4uCisKKyAgICBjLiBTcGV6aWFscnVlc3R1bmdlbi9SdWVzdHVuZ2VuIG1pdCBTb25kZXJmdW5rdGlvbgorCisJQWxsZSBSdWVzdHVuZ2VuLCBkaWUgdWViZXIgZWluZSBEZWZlbmRGdW5jIG9kZXIgYWVobmxpY2hlcyB2ZXJmdWVnZW4gCisJc2luZCBnZW5laG1pZ3VuZ3NwZmxpY2h0aWcuCisKKwlQcmluemlwaWVsbCBzb2xsdGVuIGRpZSBnZWx0ZW5kZW4gR3Jlbnp3ZXJ0ZSAocy51LikgbmljaHQgCisJdWViZXJzY2hyaXR0ZW4gd2VyZGVuOyBBdXNuYWhtZW4ga29lbm5lbiB1bnRlciBVbXN0YWVuZGVuIGdlbmVobWlndCAKKwl3ZXJkZW4uIEltbWVyIGlzdCBkZXIgUmV0dXJuLVdlcnQgcGVyIHJhbmRvbSgpIHp1cnVlY2t6dWxpZWZlcm4sIGRhIAorCWRlciBXZXJ0IG9obmUgd2VpdGVyZXMgcmFuZG9tKCkgYXVmYWRkaWVydCB3aXJkLgorCisJV2VhckZ1bmNzLCBkaWUgUmVzdHJpa3Rpb25lbiB2b3JzZWhlbiAoR2VzY2hsZWNodHNhYmhhZW5naWdrZWl0LAorCVJhc3Nlbi0gb2RlciBHaWxkZW5yZXN0cmlrdGlvbmVuKSBzb2xsdGVuIGRpZSBSTXMgdWViZXJwcnVlZmVuLgorCisJU2FlbXRsaWNoZSBTb25kZXJmdW5rdGlvbmVuLCB3aWUgSGVpbHVuZ2VuLCBTb25kZXJhdHRhY2tlbiBhdWYgCisJR2VnbmVyLCBXYWZmZW5iZXNjaGFlZGlndW5nZW4gZXRjLiBtdWVzc2VuIGdlbmVobWlndCB3ZXJkZW4uCisKKyAgRGllIFByb3BlcnRpZXMsIG1pdCBkZW5lbiBIYW5kc2NodWhlICdoYW5kZnJlaScgYnp3ICdmaW5nZXJmcmVpJyBnZW1hY2h0CisgIHdlcmRlbiwgZHVlcmZlbiBudXIgdmVyZ2ViZW4gd2VyZGVuLCB3ZW5uIGRpZSBIYW5kc2NodWhlIGRlbiBTY2hhZGVuIGRlciBIYW5kCisgIG5pY2h0IHZlcmFlbmRlcm4gdW5kIGRpZSBCZXNjaHJlaWJ1bmcgZGVyIEhhbmRzY2h1aGUgZGF6dSBwYXNzdC4KKworCisgICAgZC4gQUMtIHVuZCBHZW5laG1pZ3VuZ3NncmVuemVuCisKKwlGb2xnZW5kZSBHcmVuendlcnRlIGdlbHRlbiBkZXJ6ZWl0OgorCisJKy0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rCisJfCBSdWVzdHVuZ3N0eXAgfCBNQVhfQUMgfCBHZW5laG1pZ3VuZ3NncmVuemUgKGlua2wuKSB8CisJKy0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rCisJfCBBVF9BTVVMRVQgICAgfCAgICAyICAgfAkgICAgICAtLQkgICAgIHwKKwkrLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSsKKwl8IEFUX0FSTU9VUiAgICB8ICAgNTAgICB8CSAgICAgIDM4CSAgICAgfAorCSstLS0tLS0tLS0tLS0tLSstLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKworCXwgQVRfQkVMVCAgICAgIHwgICAgMiAgIHwJICAgICAgLS0JICAgICB8CisJKy0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rCisJfCBBVF9CT09UICAgICAgfCAgICA2ICAgfAkJNQkgICAgIHwKKwkrLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSsKKwl8IEFUX0NMT0FLICAgICB8ICAgMTAgICB8CQk4CSAgICAgfAorCSstLS0tLS0tLS0tLS0tLSstLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKworCXwgQVRfR0xPVkUgICAgIHwgICAgNSAgIHwJCTUJICAgICB8CisJKy0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rCisJfCBBVF9IRUxNRVQgICAgfCAgIDE1ICAgfAkgICAgICAxMwkgICAgIHwKKwkrLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSsKKwl8IEFUX1FVSVZFUiAgICB8ICAgIDAgICB8CSAgICAgIC0tCSAgICAgfAorCSstLS0tLS0tLS0tLS0tLSstLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKworCXwgQVRfUklORyAgICAgIHwgICAgMiAgIHwJICAgICAgLS0JICAgICB8CisJKy0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rCisJfCBBVF9TSElFTEQgICAgfCAgIDQwICAgfAkgICAgICAyOAkgICAgIHwKKwkrLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSsKKwl8IEFUX1RST1VTRVJTICB8ICAgMTUgICB8CSAgICAgIDEzCSAgICAgfAorCSstLS0tLS0tLS0tLS0tLSstLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKworCSstLS0tLS0tLS0tLS0tLSstLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKworCXwgQVRfTUlTQyAgICAgIHwgICAgMCAgIHwJICAgICAgLS0JICAgICB8CisJKy0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rCisKKyAgICAgZS4gUnVlc3R1bmdlbiBmdWVyIFphdWJlcmVyCisKKwlaYXViZXJlciB3ZXJkZW4gbm9ybWFsZXJ3ZWlzZSBkdXJjaCBSdWVzdHVuZ2VuIGJlaGluZGVydC4gR2lidCBtYW4gCisJZGVyIFJ1ZXN0dW5nIGplZG9jaCBkaWUgaW4gYC9wL3phdWJlcmVyL3phdWJlcmVyLmgnIGRlZmluaWVydGUgSUQgCisJR0lMREVOX1JPQkVOX0lELCBiZWhpbmRlcnQgZGllIFJ1ZXN0dW5nIFphdWJlcmVyIG5pY2h0IG1laHIuIERhcyAKKwlTZXR6ZW4gZGllc2VyIElEIGlzdCBhdWYgamVkZW4gRmFsbCBtaXQgZGVtIENoZWYgZGVyIFphdWJlcmVyZ2lsZGUgCisJYWJ6dWtsYWVyZW4gc293aWUgbWl0IGRlciBPYmpla3RiYWxhbmNlIQorCisJWmF1YmVyZXJydWVzdHVuZ2VuIGtvZW5uZW4gYXVzc2VyZGVtIGJlc3RpbW10ZSBaYXViZXJzcHJ1ZWNoZSAKKwl1bnRlcnN0dWV0emVuLCBuYWVoZXJlcyBkYXp1IGViZW5mYWxscyBiZWltIFphdWJlcmVyZ2lsZGVuY2hlZiBzb3dpZSAKKwliZWkgZGVyIE9iamVrdGJhbGFuY2UuCisKKyAgICAgZi4gUnVlc3R1bmdlbiBtaXQgc29uc3RpZ2VuIEdpbGRlbmZhZWhpZ2tlaXRlbgorCisJUnVlc3R1bmdlbiwgZGllIGluIGlyZ2VuZCBlaW5lciBXZWlzZSBkaWUgRmFlaGlna2VpdGVuIGRlciBHaWxkZW4gCisJc3BlemlmaXNjaCB2ZXJhZW5kZXJuICh6dW0gQmVpc3BpZWwgZGllIFNjaGFkZW5zYXJ0IGRlciBLYXJhdGVrYXMgCisJb2RlciBkZXMgYWtzaGFyYSBkZXIgVGFuamlhbiB2ZXJhZW5kZXJuKSBzaW5kIGF1ZiBqZWRlbiBGYWxsIG1pdCBkZW4gCisJR2lsZGVuY2hlZnMgZGVyIGpld2VpbGlnZW4gR2lsZGUgc293aWUgbWl0IGRlciBPYmpla3RiYWxhbmNlIAorCWFienVzcHJlY2hlbi4KKworIFNJRUhFIEFVQ0g6CisgICAgIGJhbGFuY2UsIHdhZmZlbiwgZmVybndhZmZlbiwgdW5pcXVlcywgbnBjcywgZ3Jlbnp3ZXJ0ZSwKKyAgICAgYXR0cmlidXRzdmVyYWVuZGVydW5nZW4sIHJlc2lzdGVuemVuLCBrYW1wZm9iamVrdGUKKworIExFVFpURSBBZU5ERVJVTkc6CisgIDE4LjEwLjIwMTAsIFplc3N0cmEKKwpkaWZmIC0tZ2l0IGEvZG9jL3dpei9zY2hhZGVuc3R5cGVuIGIvZG9jL3dpei9zY2hhZGVuc3R5cGVuCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmI4ZjA5MDkKLS0tIC9kZXYvbnVsbAorKysgYi9kb2Mvd2l6L3NjaGFkZW5zdHlwZW4KQEAgLTAsMCArMSw0NyBAQAorU2NoYWRlbnN0eXBlbjoKKworRXMgd2VyZGVuIHp3ZWkgQXJ0ZW4gdm9uIFNjaGFkZW5zdHlwZW4gdW50ZXJzY2hpZWRlbjoKKworYSkgcGh5c2lrYWxpc2NoZSBTY2hhZGVuc3R5cGVuCisKKyAgIERUX0JMVURHRU9OICAgICAgU2NobGFnc2NoYWRlbiwgei5CLiBLZXVsZW4KKyAgIERUX0VYUExPU0lPTiAgICAgU2NoYWRlbiBkdXJjaCBlaW5lIEV4cGxvc2lvbgorICAgRFRfUElFUkNFICAgICAgICBTdGVjaHNjaGFkZW4sIHouQi4gTGFuemVuCisgICBEVF9SSVAgICAgICAgICAgIFJlaXNzZW5kZXIgU2NoYWRlLCB6LkIuIEtyYWxsZW4KKyAgIERUX1NMQVNIICAgICAgICAgU2Nobml0dHNjaGFkZW4sIHouQi4gU2Nod2VydGVyCisgICBEVF9TUVVFRVpFICAgICAgIFF1ZXRzY2hzY2hhZGVuLCB6LkIuIFRlbnRha2VsCisgICBEVF9XSElQICAgICAgICAgIFBlaXRzY2hlbnNjaGFkZW4sIHouQi4gUGVpdHNjaGVuCisKKyAgIEFsbGUgcGh5c2lrYWxpc2NoZW4gU2NoYWRlbnN0eXBlbiBzdGVoZW4gYXVjaCBpbiBkZW0gTWFwcGluZworICAgUEhZU0lDQUxfREFNQUdFX1RZUEVTLgorCitiKSBtYWdpc2NoZSBTY2hhZGVuc3R5cGVuCisKKyAgIERUX0FDSUQgICAgICAgICAgU2FldXJlc2NoYWRlbgorICAgRFRfQUlSICAgICAgICAgICBMdWZ0KG1hbmdlbClzY2hhZGVuCisgICBEVF9DT0xEICAgICAgICAgIEthZWx0ZXNjaGFkZW4KKyAgIERUX0ZJUkUgICAgICAgICAgRmV1ZXJzY2hhZGVuCisgICBEVF9IT0xZICAgICAgICAgIEhlaWxpZ2VyIFNjaGFkZW4KKyAgIERUX0xJR0hUTklORyAgICAgQmxpdHpzY2hhZGVuCisgICBEVF9NQUdJQyAgICAgICAgIEdlbmVyZWxsZXIgbWFnaXNjaGVyIFNjaGFkZW4KKyAgIERUX1BPSVNPTiAgICAgICAgR2lmdHNjaGFkZW4KKyAgIERUX1NPVU5EICAgICAgICAgTGFlcm1zY2hhZGVuCisgICBEVF9URVJST1IgICAgICAgIEFuZ3N0c2NoYWRlbgorICAgRFRfVU5IT0xZICAgICAgICBVbmhlaWxpZ2VyL2RhZW1vbmlzY2hlciBTY2hhZGVuCisgICBEVF9XQVRFUiAgICAgICAgIFdhc3NlcnNjaGFkZW4KKworICAgQWxsZSBtYWdpc2NoZW4gU2NoYWRlbnN0eXBlbiBzdGVoZW4gYXVjaCBpbiBkZW0gTWFwcGluZworICAgTUFHSUNBTF9EQU1BR0VfVFlQRVMuCisKK0VpbmUgTGlzdGUgYWxsZXIgZGVmaW5pZXJ0ZW4gU2NoYWRlbnN0eXBlbiBzdGVodCBhdXNzZXJkZW0gaW4gZGVtCitBcnJheSBBTExfREFNQUdFX1RZUEVTLgorCitBbGxlIFNjaGFkZW5zdHlwZW4gdW5kIHp1c2FtbWVuZ2VmYXNzdGUgR3J1cHBlbiBzaW5kIGRlZmluaWVydCBpbgorPGNvbWJhdC5oPgorCitXYWZmZW4gZHVlcmZlbiBtYXhpbWFsIDUwJSBtYWcuIFNjaGFkZW4gbWFjaGVuLiBEaWUgU3VtbWUgZGVyIG1hZy4KK1NjaGFlZGVuIGRhcmYgbWF4aW1hbCA2NiUgYmV0cmFnZW4uIEVzIF9tdXNzXyBpbW1lciBtaW5kLiBlaW4gcGh5LgorU2NoYWRlbiBnZXNldHp0IHNlaW4uCisKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KK0xhc3QgbW9kaWZpZWQ6IE1pdCwgMDMuMDEgMTI6MDA6NTQgMjAwMiB2b24gVGlsbHkKZGlmZiAtLWdpdCBhL2RvYy93aXovc2NoZWlkdW5nIGIvZG9jL3dpei9zY2hlaWR1bmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZDQ0YzVkOAotLS0gL2Rldi9udWxsCisrKyBiL2RvYy93aXovc2NoZWlkdW5nCkBAIC0wLDAgKzEsOTUgQEAKKworICAgICAgICAgICAgICAgICAgICAgICAgICBTY2hlaWR1bmcgZWluZXIgTUctRWhlCisgICAgICAgICAgICAgICAgICAgICAgICAgID09PT09PT09PT09PT09PT09PT09PT0KKworICBEaWUgSG9jaHplaXQgaW0gTW9yZ2VuR3JhdWVuIGlzdCBlaW4gc2VociB1bnRlcnNjaGllZGxpY2ggZHVyY2hnZWZ1ZWhydGVzCisgIFJpdHVhbCwgZGFzIG1pdCBkZXIgSGlsZmUgdm9uIE5QQ3Mgb2RlciBhdWNoIFNwaWVsZXJuIHZvcmdlbm9tbWVuIHdlcmRlbgorICBrYW5uLiBBdWZncnVuZCBkaWVzZXIgVmllbGZhbHQgbXVlc3NlbiBlaW5pZ2UgRGluZ2UgYmVhY2h0ZXQgd2VyZGVuLCB3ZW5uCisgIG1hbiBlaW5lIEhvY2h6ZWl0IHJ1ZWNrZ2FlbmdpZyBtYWNoZW4gd2lsbC4KKworICBEYSBkYWJlaSBhdWNoIFByb3BlcnRpZXMgaW0gU3BpZWxlciBnZWxvZXNjaHQsIGdnZi4gTG9nZmlsZXMgZWRpdGllcnQgdW5kCisgIE9iamVrdGUgaW0gU3BpZWxlcmludmVudGFyIHplcnN0b2VydCB3ZXJkZW4gbXVlc3NlbiwgZW1wZmllaGx0IGVzIHNpY2gsCisgIGRpZXNlbiBWb3JnYW5nIHZvbiBlaW5lbSBNYWdpZXIgbWl0IGVudHNwcmVjaGVuZGVyIEVyZmFocnVuZyB1bmQgaW5zYmVzb24tCisgIGRlcmUgZGVuIG5vZXRpZ2VuIFNjaHJlaWJyZWNodGVuIGluIGRlciBVbnRlcndlbHQgZHVyY2hmdWVocmVuIHp1IGxhc3Nlbi4KKworICAxKSBHcnVuZHNhZXR6bGljaGVzIHp1ciBIb2NoemVpdAorIAorICAgICBhKSBQX01BUlJJRUQ6CisKKyAgICAgICAgUHJvcGVydHkgaW0gU3BpZWxlciwgZGllIGRlbiBOYW1lbiBkZXMgRWhlcGFydG5lcnMgYWxzIGxvd2VyY2FzZSAKKyAgICAgICAgU3RyaW5nIGVudGhhZWx0IChVSUQsIHouQi4gImJvaW5nIikuIERpZXNlIFByb3BlcnR5IHdpcmQgdm9uIGFsbGVuIAorICAgICAgICBPYmpla3RlbiwgZGllIGVpbmUgSG9jaHplaXQgZHVyY2hmdWVocmVuIGtvZW5uZW4sIGlkZW50aXNjaAorICAgICAgICB2ZXJ3ZW5kZXQuCisKKyAgICAgYikgUHJpZXN0ZXI6CisKKyAgICAgICAgTmViZW4gTWl0Z2xpZWRlcm4gZGVyIEtsZXJ1cy1HaWxkZSBrb2VubmVuIEhvY2h6ZWl0ZW4gdm9uIGZvbGdlbmRlbgorICAgICAgICBOUENzIGR1cmNoZ2VmdWVocnQgd2VyZGVuOgorICAgICAgICAvZC91bnRlcndlbHQvY2hyaXMvbW9uc3Rlci9wcmllc3Rlci5jICAgICAoS2FwZWxsZSBpbiBkZXIgVW50ZXJ3ZWx0KQorICAgICAgICAvZC9wb2xhci9maWxlcy5jaGFvcy9mZXVlcndlaHIvbW9uL2NsMl94cnV1ci5jICAgICAgIChDaGFvc3ByaWVzdGVyKQorCisgICAgIGMpIFZlcmxvYnVuZ3MtIHVuZCBFaGVyaW5nZToKKyAgICAgICAgCisgICAgICAgIEFscyBFaGVyaW5nZSBrb21tZW4gdmVyc2NoaWVkZW5lIE9iamVrdGUgaW0gTUcgenVtIEVpbnNhdHo6CisgICAgICAgIC9kL3VudGVyd2VsdC9jaHJpcy9vYmpla3RlL3JpbmcuYyAgICAgICAoUmluZyB2b20gVW50ZXJ3ZWx0cHJpZXN0ZXIpCisgICAgICAgIC9kL3BvbGFyL2ZpbGVzLmNoYW9zL2ZldWVyd2Voci9vYmovY2wyX2VoZXJpbmcuYyAgICAoc2Nod2FyemVyIERvcm4pCisgICAgICAgIC9naWxkZW4vZmlsZXMua2xlcnVzL2VoZXJpbmcuYyAgICAgICAgICAgICAgICAoUmluZyBkZXIgS2xlcnVzZ2lsZGUpCisKKyAgICAgICAgWnVzYWV0emxpY2ggZXhpc3RpZXJ0IG5vY2ggZWluIFZlcmxvYnVuZ3NyaW5nIHZvbiBSaWt1czoKKyAgICAgICAgL3BsYXllcnMvcmlrdXMvb2JqL3ZlcmxyaW5nLmMKKyAgICAgICAgRWluIHZlcmhlaXJhdGV0ZXIgU3BpZWxlciBrYW5uIGRpZXNlbiBSaW5nIHp1c2FldHpsaWNoIGltIEludmVudGFyCisgICAgICAgIGhhYmVuLiBFciB3aXJkIGJlaSBkZXIgZWlnZW50bGljaGVuIEhvY2h6ZWl0IG5pY2h0IHplcnN0b2VydC4KKworICAgICAgICBEaWUgYmVpZGVuIEVoZXBhcnRuZXIgc293aWUgZGFzIERhdHVtIGRlcyBIb2NoemVpdHN0YWdzIHdlcmRlbiAKKyAgICAgICAgenVzYWV0emxpY2ggenVyIFNwaWVsZXItUHJvcGVydHkgKHMuIDFhKSBhbHMgQXV0b2xvYWQtRGF0ZW4gCisgICAgICAgIGluIGRlbiBSaW5nZW4gYWJnZXNwZWljaGVydC4KKworICAgICBkKSBMb2dmaWxlczoKKyAKKyAgICAgICAgSmUgbmFjaGRlbSwgd2VsY2hlciBQcmllc3RlciBkaWUgSG9jaHplaXQgZHVyY2hmdWVocnQsIHdpcmQgZGVyCisgICAgICAgIGVyZm9sZ3JlaWNoZSBBYnNjaGx1c3MgZGVyIFplcmVtb25pZSBpbiB1bnRlcnNjaGllZGxpY2hlbiBMb2dzCisgICAgICAgIHByb3Rva29sbGllcnQuCisKKyAgICAgICAgLSBEaWUgQmx1dGhvY2h6ZWl0IGRlciBDaGFvdGVuIGluCisgICAgICAgICAgL2QvcG9sYXIvZmlsZXMuY2hhb3MvZmV1ZXJ3ZWhyL3NhdmUvQnVjaERlckhhc3NlbmRlbgorICAgICAgICAtIERpZSBIb2NoemVpdCBkZXIgS2xlcmlrZXIgaW4KKyAgICAgICAgICAvbG9nL2tsZXJ1cy9IRUlSQVQKKyAgICAgICAgLSBEaWUgSG9jaHplaXQgaW4gZGVyIFVudGVyd2VsdC1LYXBlbGxlIGluCisgICAgICAgICAgL2QvdW50ZXJ3ZWx0L2NocmlzL0hPQ0haRUlUU0JVQ0gKKyAgICAgICAgICB1bmQKKyAgICAgICAgICAvbG9nL2hvY2h6ZWl0ZW4uY2hyaXMKKworICAyKSBWb3JnZWhlbnN3ZWlzZSB6dXIgQXVmbG9lc3VuZyBkZXIgRWhlCisKKyAgICAgYSkgTG9lc2NoZW4gdm9uIFBfTUFSUklFRCBpbiBfYmVpZGVuXyBTcGllbGVybiAoU2V0UHJvcChQX01BUlJJRUQsMCkpCisgICAgICAgIHVuZCBhbnNjaGxpZXNzZW5kZXMgU3BlaWNoZXJuIGRlcyBTcGllbGVycworCisgICAgIElzdCBkZXIgendlaXRlIFNwaWVsZXIgbmV0enRvdCwga2FubiBkaWUgUHJvcGVydHkgZGlyZWt0IGdlc2V0enQgd2VyZGVuLgorICAgICBTb2xsdGUgZGVyIHp3ZWl0ZSBTcGllbGVyIG5pY2h0IGV4aXN0aWVyZW4sIHdlaWwgZXIgaW56d2lzY2hlbiAKKyAgICAgZ2Vsb2VzY2h0IHd1cmRlLCByZWljaHQgZXMsIGRpZSBQcm9wZXJ0eSBpbSB2ZXJibGVpYmVuZGVuIFNwaWVsZXIgCisgICAgIHp1IGFlbmRlcm4gKGRpZXMgd2lyZCBoYWV1ZmlnIGF1Y2ggZGVyIEdydW5kIGRlciBCaXR0ZSB1bSBTY2hlaWR1bmcKKyAgICAgc2VpbikuCisKKyAgICAgU29sbHRlIGRlciB6d2VpdGUgU3BpZWxlciBpbiBkZXIgbGF1ZmVuZGVuIFVwdGltZSBub2NoIG5pY2h0IGVpbmdlbG9nZ3QKKyAgICAgZ2V3ZXNlbiBzZWluLCBrYW5uIGRpZSBQcm9wZXJ0eSBudXIgdm9uIGVpbmVtIEVyem1hZ2llciBtaXQgSGlsZmUgCisgICAgIGRlciBGdW5rdGlvbiBfX2NyZWF0ZV9wbGF5ZXJfZHVtbXkoKSB6dXJ1ZWNrZ2VzZXR6dCB3ZXJkZW4uCisKKyAgICAgYikgWmVyc3RvZXJlbiBfYmVpZGVyXyBFaGVyaW5nZS4gRmFsbHMgamVkb2NoIHZvbiBkZW0gRWhlcGFydG5lciAKKyAgICAgICAga2VpbiBTcGllbGVyb2JqZWt0IGV4aXN0aWVydCwgaXN0IGVzIG5pY2h0IG1vZWdsaWNoLCBkZXNzZW4gCisgICAgICAgIEVoZXJpbmcgenUgemVyc3RvZXJlbi4KKworICAgICBjKSB6ZXJzdG9lcmVuIGV2dGwuIHZvcmhhbmRlbmVyIFZlcmxvYnVuZ3NyaW5nZSwgZmFsbHMgZ2V3dWVuc2NodC4KKworICAgICBkKSBJbSBGYWxsIHZvbiBIb2NoemVpdGVuLCBkaWUgaW4gZGVyIFVudGVyd2VsdGthcGVsbGUgZHVyY2hnZWZ1ZWhydAorICAgICAgICB3dXJkZW4sIGlzdCBlcyBvZmZlbmJhciBUcmFkaXRpb24sIGRhc3MgZGllIFNjaGVpZHVuZyBkb3J0IGluIEZvcm0KKyAgICAgICAgZWluZXMgWnVzYXR6ZXMgenVtIExvZ2ZpbGUtRWludHJhZyBuYWNoZ2V0cmFnZW4gd2lyZC4gQmVpc3BpZWw6CisgICAgICAgIFsuLi5dICJDYXNzYW5kcmEgdW5kIFZpcGVyICAoZ2VzLjogRG9uLCAwMi4gTm92IDE5OTUsIFdhcmdvbikiCisgICAgICAgIERpZXMgc29sbCBhdWNoIGluIFp1a3VuZnQgYmVpYmVoYWx0ZW4gd2VyZGVuLiBGdWVyIGRpZSBBZW5kZXJ1bmcKKyAgICAgICAgc2luZCBTY2hyZWlicmVjaHRlIGluIGRlciBSZWdpb24gVW50ZXJ3ZWx0IGVyZm9yZGVybGljaC4KKworCisgIFNJRUhFIEFVQ0g6CisgICAgIFByb3BlcnRpZXM6ICBQX01BUlJJRUQKKyAgICAgS2xlcnVzZ2lsZGU6IG1hbiB0cmF1ZSAoL2RvYy9nLmtsZXJ1cy90cmF1ZSkKKworQXJhdGhvcm4sIDA0LjAxLjIwMTAKZGlmZiAtLWdpdCBhL2RvYy93aXovc2NvcmVtYXN0ZXIgYi9kb2Mvd2l6L3Njb3JlbWFzdGVyCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmMzMjMxOWYKLS0tIC9kZXYvbnVsbAorKysgYi9kb2Mvd2l6L3Njb3JlbWFzdGVyCkBAIC0wLDAgKzEsMjEzIEBACitEZXIgU2NvcmVtYXN0ZXIKKz09PT09PT09PT09PT09PQorCitCRVNDSFJFSUJVTkcKKworICBGdW5rdGlvbjogVmVyd2FsdHVuZyBkZXIgRXJzdGtpbGwtU3R1ZmVucHVua3RlLCBkaWUgZnVlciBkYXMgVG9ldGVuIHZvbgorICBOUENzIHZlcmdlYmVuIHdlcmRlbi4gRnVlciBhbGxlIE5QQ3MsIGRpZSBtZWhyIGFscyAyMDAwMDAgWFAKKyAgKFNDT1JFX0xPV19NQVJLKSBnZWJlbiwgd2lyZCBlaW4gU3R1ZmVucHVua3QgdmVyZ2ViZW4uIEFiIDYwMDAwMCBYUAorICAoU0NPUkVfSElHSF9NQVJLKSBzaW5kIGVzIDIgU3R1ZmVucHVua3RlLiBVZWJlciBkaWVzZSBXZXJ0ZSBoaW5hdXNnZWhlbmRlCisgIFB1bmt0ZSBtdWVzc2VuIGJlYW50cmFndCB1bmQgbWFudWVsbCB1ZWJlciBkZW4gU2NvcmVtYXN0ZXIgZWluZ2V0cmFnZW4KKyAgd2VyZGVuLgorCisgIEplZGVyIE5QQywgZGVyIG1pbmRlc3RlbnMgZWluZW4gU3R1ZmVucHVua3QgZ2lidCwgd2lyZCBhdXRvbWF0aXNjaCBpbgorICBlaW5lIExpc3RlIHRlbXBvcmFlcmVyIEVLcyBlaW5nZXRyYWdlbiwgZGllIHZvbSBFSy1NYWludGFpbmVyIGVpbnplbG4KKyAgYmVzdGFldGlndCB3ZXJkZW4gbXVlc3Nlbi4gRGllc2VzIFZlcmZhaHJlbiBpc3QgZXJmb3JkZXJsaWNoLCB3ZWlsIGRlcgorICBiaXMgdm9yIGVpbmlnZXIgWmVpdCBlaW5nZXNldHp0ZSBNZWNoYW5pc211cywgRUtzIGF1dG9tYXRpc2NoIGVpbnp1dHJhZ2VuLAorICBkYXp1IGdlZnVlaHJ0IGhhdCwgZGFzcyBlaWdlbnRsaWNoIG5pY2h0IGFscyBFSyB2b3JnZXNlaGVuZSBvZGVyIGVybGF1YnRlLAorICBhYmVyIGF1Y2ggbGFlbmdzdCB3aWVkZXIgYWJnZWhhZW5ndGUgb2RlciBnYXIgbmllIGFuZ2VzY2hsb3NzZW5lIE5QQ3MKKyAgZWluZ2V0cmFnZW4gd2FyZW4uIERhIGF1cyBkZW0gU2NvcmVtYXN0ZXIgYXVjaCBkaWUgdm9uIEJydW1uaSBpbiBkZXIKKyAgRnJhdGVybml0YXMgYXVzZ2VnZWJlbmVuIEVLLVRpcHMgYWJnZWZyYWd0IHdlcmRlbiwgaXN0IGRhcyBuYXR1ZXJsaWNoIGZhdGFsCisgIGZ1ZXIgU3BpZWxlciwgd2VubiBzaWUgVGlwcyBiZWtvbW1lbiwgZGllIHNpZSBuaWNodCBlcnJlaWNoZW4ga29lbm5lbi4KKworICBEaWUgTGlzdGUgZGVyIEVyc3RraWxscyBpc3QgZWluIE1hcHBpbmcsIGRhcyBhbHMgS2V5cyBlaW5lIGZvcnRsYXVmZW5kZQorICBOdW1tZXIgZW50aGFlbHQsIHp1IGRlciBqZXdlaWxzIGRpZSBEYXRlbiBkZXMgTlBDcyB6dWdlb3JkbmV0IHNpbmQuIERpZXNlCisgIE51bW1lciBkaWVudCB2b3IgYWxsZW0gYXVjaCB6dXIgSW5kaXppZXJ1bmcgZGVzIEJpdHN0cmluZ3MgaW0gU3BpZWxlciwKKyAgaW4gZGVtIGRpZSBFcnN0a2lsbHMgZ2VzcGVpY2hlcnQgd2VyZGVuLgorCisgIERpZXNlIERhdGVpIGRva3VtZW50aWVydCBkaWUgRnVua3Rpb25hbGl0YWV0IGRlcyBTY29yZW1hc3RlcnMgZnVlciBkaWUKKyAgQmVudXR6dW5nIGR1cmNoIEVNIHVuZCBFSy1NYWludGFpbmVyLCBqZWRvY2ggbmljaHQgZGllIHZvbGxzdGFlbmRpZ2UKKyAgaW50ZXJuZSBBcmJlaXRzd2Vpc2UgdW5kIFZlcndhbHR1bmcgZGVyIERhdGVuLgorCisgIEluaGFsdHN2ZXJ6ZWljaG5pcyBkaWVzZXIgRG9rdW1lbnRhdGlvbgorICAxKSBOZXVlaW50cmFndW5nIHZvbiBFS3MKKyAgMikgVmVyd2FsdHVuZyBkZXIgdW5iZXN0YWV0aWd0ZW4gRUtzCisgIDMpIEFlbmRlcnVuZ2VuIGFuIGJlc3RlaGVuZGVuIEVLcworICA0KSBTcGllbGVyYmV6b2dlbmUgRGF0ZW4gdmVyd2FsdGVuCisgIDUpIERhdGVuIHZvbiBOUENzIGFiZnJhZ2VuCisgIDYpIFBlcm1hbmVudGVzIExvZXNjaGVuIHZvbiBFS3MKKyAgNykgVmVyd2FsdHVuZyBkZXIgRUstVGlwcyB2b24gQnJ1bW5pCisgIDgpIFNvbnN0aWdlIEZ1bmt0aW9uZW4gKG51ciB2b24gTlBDcyBnZXJ1ZmVuKQorCisKK1JVRUNLR0FCRVdFUlRFOgorCisgIFNDT1JFX0lOVkFMSURfQVJHICAgLTEKKyAgU0NPUkVfTk9fUEVSTUlTU0lPTiAtMgorCisKK0ZVTktUSU9ORU4KKworMSkgTmV1ZWludHJhZ3VuZyB2b24gRUtzCisKKyAgTmV3TlBDKHN0cmluZyBrZXksIGludCBzY29yZSkKKyAgQWRkTlBDKHN0cmluZyBrZXksIGludCBzY29yZSkgW3ZlcmFsdGV0LCBsZWl0ZXQgYW4gTmV3TlBDIHdlaXRlcl0KKyAgICAgICAgTmV1ZW4gTlBDIGVpbnRyYWdlbiwga2V5IGlzdCBoaWVyYmVpIGRlciBQZmFkLCBzY29yZSBkaWUgUHVua3R6YWhsCisgICAgICAgIERpZSBJRCBkZXMgRUtzIHdpcmQgYXV0b21hdGlzY2ggYXVzZ2V3YWVobHQsIGluZGVtIGRlciBuYWVjaHN0ZQorICAgICAgICBmcmVpZSBQbGF0eiBpbSBNYXBwaW5nIGJlbGVndCB3aXJkLgorCisKKzIpIFZlcndhbHR1bmcgZGVyIHVuYmVzdGFldGlndGVuIEVLcworCisgIENvbmZpcm1TY29yZShtaXhlZCBrZXkpCisgICAgICAgIHVuYmVzdGFldGlndGVuIEVLIG1pdCBkZXIgTnVtbWVyIG9kZXIgZGVtIFBmYWQgImtleSIgZ2VuZWhtaWdlbgorICAgID0+ICBFSyBpbiBkZW4gU3BpZWxlcm4gc2V0emVuIHVuZCBTdGF0aXN0aWsgaG9jaHphZWhsZW4sCisgICAgPT4gIEVLIGF1cyBkZXIgTGlzdGUgZGVyIHVuYmVzdGFldGlndGVuIEVLcyBpbiBkaWUgTGlzdGUgZGVyIGFrdGl2ZW4KKyAgICAgICAgdWViZXJ0cmFnZW4sCisKKyAgUmVqZWN0U2NvcmUobWl4ZWQga2V5KQorICAgICAgICB1bmJlc3RhZXRpZ3RlbiBFSyBtaXQgZGVyIE51bW1lciBvZGVyIGRlbSBQZmFkICJrZXkiIGFibGVobmVuCisgICAgPT4gIEVpbnRyYWcgYXVzIGRlciBMaXN0ZSBkZXIgdW5iZXN0YWV0aWd0ZW4gRUtzIGxvZXNjaGVuCisgICAgPT4gIEJpdC1Oci4gaW4gZGllIExpc3RlIGRlciBmcmVpZW4gTnVtbWVybiBlaW50cmFnZW4KKworICBEdW1wVW5jb25maXJtZWRTY29yZXMoKQorICAgICAgICB1bmJlc3RhZXRpZ3RlIE5QQ3MgYW4gZGVuIGFiZnJhZ2VuZGVuIE1hZ2llciBhdXNnZWJlbgorCisKKzMpIEFlbmRlcnVuZ2VuIGFuIGJlc3RlaGVuZGVuIEVLcworCisgIFNldFNjb3JlKG1peGVkIGtleSwgaW50IHNjb3JlKQorICAgICAgICBQdW5rdHphaGwgZnVlciBiZXJlaXRzIGVpbmdldHJhZ2VuZW4gTlBDIGFlbmRlcm4sIGtleSBpc3QgZGVyIFBmYWQKKyAgICAgICAgb2RlciBkaWUgTlBDLU51bW1lciwgc2NvcmUgZGllIG5ldWUgUHVua3R6YWhsCisKKyAgUmVtb3ZlU2NvcmUobWl4ZWQga2V5KQorICAgICAgICBTZXR6dCBkaWUgUHVua3R6YWhsIGF1ZiAwLiBTb2xjaGUgRUtzIGtvZW5uZW4gc3BhZXRlciBkdXJjaCBBbmdhYmUKKyAgICAgICAgZWluZXIgbmV1ZW4gUHVua3R6YWhsIHJlYWt0aXZpZXJ0IHdlcmRlbi4KKyAgICAgICAgQWx0ZXJuYXRpdiBrYW5uIGZ1ZXIgZGllc2UgRnVua3Rpb24gYXVjaCBTZXRTY29yZShtaXhlZCBrZXksIDApCisgICAgICAgIHZlcndlbmRldCB3ZXJkZW4uCisgICAgICAgIGtleSBrYW5uIGhpZXJiZWkgZGVyIFBmYWQgb2RlciBkaWUgTlBDLU51bW1lciBzZWluCisKKyAgTW92ZVNjb3JlKG1peGVkIG9sZGtleSwgc3RyaW5nIG5ld3BhdGgpCisgICAgICAgIFZlcmxlZ3QgZWluZW4gRUsKKyAgICAgICAgb2xka2V5IGlzdCBkZXIgYWt0dWVsbGUgUGZhZCBvZGVyIGRpZSBOdW1tZXIKKyAgICAgICAgbmV3cGF0aCBpc3QgZGVyIG5ldWUgUGZhZAorCisKKzQpIFNwaWVsZXJiZXpvZ2VuZSBEYXRlbiB2ZXJ3YWx0ZW4KKworICBIYXNLaWxsKG1peGVkIHBsLCBtaXhlZCBucGMpCisgICAgICAgIGZyYWd0IGFiLCBvYiBkZXIgU3BpZWxlciAicGwiIGRlbiBLaWxsICJucGMiIGhhdAorICAgICAgICBwbCBrYW5uIGhpZXJiZWkgZGVyIFNwaWVsZXJuYW1lIG9kZXIgZGFzIFNwaWVsZXJvYmpla3Qgc2VpbiwKKyAgICAgICAgbnBjIGRlciBQZmFkIG9kZXIgZGVzc2VuIE51bW1lcgorCisgIFNldFNjb3JlQml0KHN0cmluZyBwbCwgaW50IGJpdCkKKyAgICAgICAgTWl0IGRpZXNlciBGdW5rdGlvbiB3aXJkIGRlbSBTcGllbGVyICJwbCIgZGVyIEVLIG1pdCBkZXIgTnVtbWVyCisgICAgICAgICJiaXQiIGd1dGdlc2NocmllYmVuLgorCisgIENsZWFyU2NvcmVCaXQoc3RyaW5nIHBsLCBpbnQgYml0KQorICAgICAgICBNaXQgZGllc2VyIEZ1bmt0aW9uIHdpcmQgZGVtIFNwaWVsZXIgInBsIiBkZXIgRUsgbWl0IGRlciBOdW1tZXIKKyAgICAgICAgImJpdCIgcGVybWFuZW50IGF1c2dldHJhZ2VuLgorCisgIFF1ZXJ5S2lsbFBvaW50cyhtaXhlZCBwbCkKKyAgICAgICAgbGllZmVydCBkaWUgQW56YWhsIGRlciBTdHVmZW5wdW5rdGUgenVydWVjaywgZGllIGRlbSBTcGllbGVyIHBsCisgICAgICAgIGR1cmNoIGRpZSBha3RpdmVuIEVLcyBndXRnZXNjaHJpZWJlbiB3dXJkZW4KKworICBnZXRGcmVlRUtzRm9yUGxheWVyKG9iamVjdCBwbGF5ZXIpCisgICAgICAgIGxpZWZlcnQgYWxsZSBFS3MsIGRpZSBha3RpdiBzaW5kLCB1bmQgZGllIGRlciBTcGllbGVyIG5vY2ggbmljaHQKKyAgICAgICAgaGF0LCBpbiBlaW5lbSBNYXBwaW5nIGVudHNwcmVjaGVuZCBkZXIgTGlzdGUgIm5wY3MiIHp1cnVlY2suCisKKyAgUXVlcnlBbGxLaWxscyhzdHJpbmcgcGwpCisgICAgICAgIGxpZWZlcnQgYWxsZSBLaWxscyBkZXMgU3BpZWxlcnMgYWxzIEJpdHN0cmluZyB6dXJ1ZWNrLCBhdWNoIHNvbGNoZSwKKyAgICAgICAgZGllIG1vbWVudGFuIGF1c2dldHJhZ2VuL2RlYWt0aXZpZXJ0IHNpbmQKKyAgICAgICAgcGwgaXN0IGhpZXJiZWkgZGVyIFNwaWVsZXJuYW1lIGFscyBTdHJpbmcKKworICBRdWVyeUtpbGxzKHN0cmluZyBwbCkKKyAgICAgICAgbGllZmVydCBkaWUgYWt0aXZlbiBLaWxscyBkZXMgU3BpZWxlcnMgYWxzIEJpdHN0cmluZyB6dXJ1ZWNrCisgICAgICAgIHBsIGlzdCBoaWVyYmVpIGRlciBTcGllbGVybmFtZSBhbHMgU3RyaW5nCisKKworNSkgRGF0ZW4gdm9uIE5QQ3MgYWJmcmFnZW4KKworICBRdWVyeU5QQ2J5TnVtYmVyKGludCBudW0pCisgICAgICAgIGxpZWZlcnQgZGllIERhdGVuIGRlcyBOUENzIG1pdCBkZXIgTnVtbWVyICJudW0iIGFscyBBcnJheSB6dXJ1ZWNrCisKKyAgUXVlcnlOUENieU9iamVjdChvYmplY3QgbykKKyAgICAgICAgbGllZmVydCBkaWUgRGF0ZW4gZGVzIE5QQ3MgbWl0IGRlbSBPYmpla3QgIm8iIGFscyBBcnJheSB6dXJ1ZWNrCisKKworNikgUGVybWFuZW50ZXMgTG9lc2NoZW4gdm9uIEVLcworCisgIE1hcmtFS0ZvckxpcXVpZGF0aW9uKG1peGVkIGtleSkKKyAgICAgICAgZW50ZmVybnQgZWluZW4gRUsgZW5kZ3VlbHRpZyB1bmQgdW53aWRlcnJ1ZmxpY2ggdW5kIGdpYnQgZGllIE5yLgorICAgICAgICB3aWVkZXIgZnJlaS4KKyAgICAgICAgVGVjaG5pc2NoIHdpcmQgZGVyIEVLIGVyc3RtYWwgaW4gZWluZSBMaXN0ZSBlaW5nZXRyYWdlbi4gSW0gUmVzZXQKKyAgICAgICAgaXRlcmllcnQgZGVyIE1hc3RlciB1ZWJlciBhbGxlIFNwaWVsZXItU2F2ZWZpbGVzIHVuZCBsb2VzY2h0IGRlbiBFSworICAgICAgICBhdXMgYWxsZW4gU3BpZWxlcm4uIE5hY2ggQWJzY2hsdXNzIHdpcmQgZGVyIEVpbnRyYWcgaW4gIm5wY3MiCisgICAgICAgIGdlbG9lc2NodCB1bmQgc2VpbmUgTnIuIGluIGRpZSBMaXN0ZSBmcmVpZXIgTnVtbWVybiBlaW5nZXRyYWdlbi4KKworICBVbm1hcmtFS0ZvckxpcXVpZGF0aW9uKG1peGVkIGtleSkKKyAgICAgICAgRW50ZmVybnQgZGllIExvZXNjaG1hcmtpZXJ1bmcgdm9uIGVpbmVtIEVLCisgICAgPT4gIERpZXMgZ2VodCBudXIsIHNvbGFuZ2UgbmFjaCBlaW5lbSBNYXJrRUtGb3JMaXF1aWRhdGlvbigpIG5vY2gga2VpbgorICAgICAgICByZXNldCgpIGdlbGF1ZmVuIGlzdCEKKworICBRdWVyeUxpcXVpZGF0aW9uTWFya3MoKQorICAgICAgICBGcmFndCBkaWUgZnVlciBMb2VzY2h1bmcgdm9yZ2VzZWhlbmVuIEVLcyBhYi4KKworICBSZXN0b3JlRUsoc3RyaW5nIGtleSwgaW50IGJpdCwgaW50IHNjb3JlKQorICAgICAgICByZXN0YXVyaWVydCBkaWUgRGF0ZW4gZWluZXMgZnJ1ZWhlciBnZWxvZXNjaHRlbiwgaW4gZGVuIFNwaWVsZXJuIG5vY2gKKyAgICAgICAgZW50aGFsdGVuZW4gRUtzLiBNb2VnbGljaCBudXIgZGFubiwgd2VubiBkZXIgRUsgZnJ1ZWhlciBtYWwgZ2Vsb2VzY2h0CisgICAgICAgIHd1cmRlLCBhYmVyIGluIGRlbiBCaXRzdHJpbmdzIGluIGRlbiBTcGllbGVybiBub2NoIGVpbmdldHJhZ2VuIGlzdC4KKyAgICAgICAgRXMgd2VyZGVuIFBmYWQsIE5yLiB1bmQgUHVua3RlIGJlbm9ldGlndC4KKyAgICAgICAgRnVlciBuYWNoIGRlbSBVbWJhdSBkZXMgU2NvcmVtYXN0ZXJzIGdlbG9lc2NodGUgRUtzIG5pY2h0IG1laHIKKyAgICAgICAgbW9lZ2xpY2gsIHdlaWwgZGllc2UgcGVybWFuZW50IGF1cyBkZW4gQml0c3RyaW5ncyBhdXNnZXRyYWdlbiB3aXJkLgorCisKKzcpIFZlcndhbHR1bmcgZGVyIEVLLVRpcHMgdm9uIEJydW1uaQorCisgIGFkZFRpcChtaXhlZCBrZXksc3RyaW5nIHRpcCkKKyAgICAgICAgVHJhZWd0IGZ1ZXIgZGVuIE5QQyBtaXQgZGVyIE51bW1lciBvZGVyIGRlbSBQZmFkICJrZXkiIGVpbmVuIEVLLVRpcC0KKyAgICAgICAgVGV4dCBmdWVyIEJydW1uaSBlaW4uCisKKyAgY2hhbmdlVGlwKG1peGVkIGtleSxzdHJpbmcgdGlwKQorICAgICAgICBBZW5kZXJ0IGRlbiBkdXJjaCBCcnVtbmkgYXVzenVnZWJlbmRlbiBFSy1UaXAgZnVlciBkZW4gTlBDIG1pdCBkZXIKKyAgICAgICAgTnVtbWVyIG9kZXIgZGVtIFBmYWQgImtleSIuIERlciBuZXVlIFRpcCB3aXJkIGRhYmVpIGFscyAyLiBQYXJhbWV0ZXIKKyAgICAgICAgInRpcCIgdWViZXJnZWJlbi4KKworICByZW1vdmVUaXAobWl4ZWQga2V5KQorICAgICAgICBMb2VzY2h0IGRlbiBkdXJjaCBCcnVtbmkgYXVzenVnZWJlbmRlbiBFSy1UaXAtU3BydWNoLiBEZXIgVGlwIGFscworICAgICAgICBzb2xjaGVyIGJsZWlidCBiZXN0ZWhlbiAtIGFuc2NobGllc3NlbmQgd2lyZCB3aWVkZXIgZGVyIFN0YW5kYXJkLQorICAgICAgICBTcHJ1Y2ggYXVzZ2VnZWJlbi4KKworICBnZXRUaXAobWl4ZWQga2V5KQorICAgICAgICBHaWJ0IGRlbiBUaXAtU3BydWNoIGZ1ZXIgZGVuIE5QQyBtaXQgZGVyIE51bW1lciBvZGVyIGRlbSBQZmFkCisgICAgICAgICJrZXkiIHp1cnVlY2ssIG9kZXIgZGVuIFN0YW5kYXJkLVNwcnVjaC4gTGllZmVydCBmdWVyIG5pY2h0CisgICAgICAgIGVpbmdldHJhZ2VuZW4gImtleSIgZGVuIExlZXJzdHJpbmcgenVydWVjay4KKworICBRdWVyeVRpcE9iamVjdHMobWl4ZWQgcGxheWVyKQorICAgICAgICBHaWJ0IGRpZSBPYmpla3RuYW1lbiBkZXIgRUstVGlwcyBkZXMgamV3ZWlsaWdlbiBTcGllbGVycyB6dXJ1ZWNrLgorCisgIGFsbFRpcHNGb3JQbGF5ZXIob2JqZWN0IHBsYXllcikKKyAgICAgICAgR2lidCBkZW4gR2VzYW10c3RyaW5nIGFsbGVyIFRpcHMgZGVzIFNwaWVsZXJzICJwbGF5ZXIiIHp1cnVlY2suCisKKyAgcGxheWVyTWF5R2V0VGlwKG9iamVjdCBwbGF5ZXIpCisgICAgICAgIEZyYWd0IGFiLCBvYiBkZXIgU3BpZWxlciAicGxheWVyIiBlaW5lbiBUaXAgYmVrb21tZW4ga2Fubi4KKworICBnaXZlVGlwRm9yUGxheWVyKG9iamVjdCBwbGF5ZXIpCisgICAgICAgIFdhZWhsdCBlaW5lbiB6dWZhZWxsaWdlbiBFSyBhdXMsIGRlbiBkZXIgU3BpZWxlciBub2NoIG5pY2h0IGhhdCwgdW5kCisgICAgICAgIHRyYWVndCBkaWVzZW4gaW0gTWFzdGVyIGluIGRpZSBMaXN0ZSBlaW4sIGRpZSBtaXQgYWxsVGlwc0ZvclBsYXllcigpCisgICAgICAgIGFiZ2VmcmFndCB3ZXJkZW4ga2Fubi4KKworCis4KSBTb25zdGlnZSBGdW5rdGlvbmVuIChudXIgdm9uIE5QQ3MgZ2VydWZlbikKKworICBHaXZlS2lsbChvYmplY3QgcGwsIGludCBiaXQpCisgICAgICAgIHNjaHJlaWJ0IGRlbSBTcGllbGVyICJwbCIgZGVuIEVLIG1pdCBkZXIgTnVtbWVyICJiaXQiIGd1dC4KKyAgICAgICAgRGllc2UgRnVua3Rpb24gd2lyZCBhdXNzY2hsaWVzc2xpY2ggYXVzIE5QQ3MgaGVyYXVzIGdlcnVmZW4uCisKKyAgUXVlcnlOUEMoaW50IHNjb3JlKQorICAgICAgICBXaXJkIHZvbSBnZXRvZXRldGVuIE5QQyBnZXJ1ZmVuLCB1bSB6dSBlcm1pdHRlbG4sIG9iIGRpZXNlciBlaW5lbgorICAgICAgICBFcnN0a2lsbCBnaWJ0LiBXZW5uIGRlciBFSyBub2NoIG5pY2h0IGV4aXN0aWVydCwgd2lyZCBkaWVzZXIgaW0KKyAgICAgICAgTWFzdGVyIHp1bmFlY2hzdCBpbiBkZXIgTGlzdGUgZGVyIHVuYmVzdGFldGlndGVuIEVLcyBlaW5nZXRyYWdlbgorICAgICAgICBEaXJla3RlIEFiZnJhZ2UgZGllc2VyIEZ1bmt0aW9uIHZvbiBhdXNzZW4gei5CLiBkdXJjaCBNYWdpZXIgbmljaHQKKyAgICAgICAgIG1vZWdsaWNoLCB3ZWlsIG5pY2h0IHNpbm52b2xsLgorCmRpZmYgLS1naXQgYS9kb2Mvd2l6L3NlaWwgYi9kb2Mvd2l6L3NlaWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNDA4Njg0MgotLS0gL2Rldi9udWxsCisrKyBiL2RvYy93aXovc2VpbApAQCAtMCwwICsxLDY4IEBACisKK0Rva3VtZW50YXRpb24gZnVlciBkYXMgU3RkLVNlaWw6IC9vYmovc2VpbC5jCisKK0FiaGFlbmdpZ2tlaXRlbjogL3N5cy90aGluZy9zZWlsLmgKKworRGFzIFN0YW5kYXJkLVNlaWwgZXJtb2VnbGljaHN0IGRhcyBGZXN0YmluZGVuIHVuZCBMb2VzZW4gZWluZXMgU2VpbGVzIGFuCitPYmplY3RlbiB1bmQgUmFldW1lbi4gRXMga2FubiBpbSBnYW56ZW4gTW9yZ2VuZ3JhdWVuIHZlcndlbmRldCB3ZXJkZW4uCisKK2luIGRlbiBPYmplY3RlbiwgZGllIGZlc3RnZWJ1bmRlbiB3ZXJkZW4sIHdpcmQgZGllIFByb3BlcnRpZSBQX1RJRUQgZ2VzZXR6dC4KK1NpZSBlbnRoYWVsdCBlaW4gTWFwcG5nIGRlciBGb3JtOgorCisoWworCisgb2JqZWN0aWQ6IChbICJwbGF5ZXIiIDogcGxheWVyaWQsICJ0aW1lIiA6IHRpbWVzdGFtcCBdKQorCitdKQorCitXZW5uIGVpbiBPYmplY3QgZmVzdGdlYnVuZGVuIHdpcmQsIHNvIHdpcmQgZGllIEZ1bmt0aW9uIHRpZSgpIGluIGRlbSBPYmplY3QKK2F1ZmdlcnVmZW4uIERpZSBGdW5rdGlvbiBtdXNzIGluIGRlbSBPYmplY3Qgdm9yaGFuZGVuIHNlaW4uIExpZWZlcnQgZGllCitGdW5rdGlvbiAxIHp1cnVlY2ssIGRhcmYgbWFuIGVpbiBTZWlsIGRhcmFuIGJpbmRlbi4KKworQXVzIGRlciBGdW5rdGlvbiBoZXJhdXMga2FubiBpbSBTZWlsIGluIGRlciBQcm9wZXJ0aWUgUF9USUVfVVNFUiBhdXNnZWxlc2VuCit3ZXJkZW4sIHdlbGNoZSBVc2VyIGRpZSBBa3Rpb24gYXVzZ2Vsb2VzdCBoYXQuCisoRGllc2UgRGF0ZW4gd2VyZGVuIGF1cyBLb21wYXRpYmlsaXRhZXRzZ3J1ZW5kZW4gbmljaHQgYW4gZGllIEZrdC4gZGlyZWt0Cit1ZWJlcmdlYmVuLikKKworV2lyZCBlaW4gU2VpbCB3aWVkZXIgbG9zZ2VidW5kZW4sIHNvIHdpcmQgZGllIEZ1bmt0aW9uIAordW50aWUoKQoraW4gZGVtIE9iamVjdCBhdWZnZXJ1ZmVuLiAKKworRGFtaXQgZWluIFNlaWwgaW4gZWluZW0gUmF1bSBmZXN0Z2VidW5kZW4gd2VyZGVuIGthbm4sIG11c3MgZGVyIFJhdW0gZWluZQoraWQoKSBiZWtvbW1lbiAtIHdpZSBlaW4gbm9ybWFsZXMgT2JqZWN0LgorCitJbiBkZW4gRnVua3Rpb25lbiB0aWUoKSB1bmQgdW50aWUoKSBrYW5uIGpld2VpbHMgdWViZXJwcnVlZnQgd2VyZGVuLCBvYiBlaW4KK1NwaWVsZXIgZWluIFNlaWwgYmVudXR6ZW4gZGFyZiBvZGVyIG5pY2h0LiBMaWVmZXJuIGRpZSBGdW5rdGlvbmVuIDAgenVydWVjaywKK3NvIHdpcmQgZGllIEJlbnV0enVuZyBkZXMgU2VpbGVzIHZlcndlaWdlcnQuCisKK0RpZSBGdW5rdGlvbiBzZWlsLT5xdWVyeV90aWVkX3RvX29iKCkgbGllZmVydCBkYXMgT2JqZWN0IHp1cnVlY2ssIGFuIHdlbGNoZXMKK2VpbiBTZWlsIGdlYnVuZGVuIGlzdCBvZGVyIDA7CisKK0JlaSBkZXIgQmVudXR6dW5nIGVpbmVzIFNlaWxlcyBpbSBSYXVtIHdpcmQgenVyIEJlc2NocmVpYnVuZyBkaWUgRnVua3Rpb24KK25hbWUoKSBhdWZnZXJ1ZmVuLiBFcyBrYW5uIGFsc28gUF9OQU1FIGdlc2V0enQgd2VyZGVuIG9kZXIgZGlyZWt0IG5hbWUoKSBpbQorUmF1bSB1ZWJlcnNjaHJpZWJlbiB3ZXJkZW4uCisKK1NlaWxlIGtvZW5uZW4gdWViZXIgTlBDJ3MvUmFldW1lIHVuZCBaYXViZXIgZ2VzdGV1ZXJ0IHdlcmRlbjoKKwordmFyYXJncyBpbnQgYmluZGVfc2VpbChzdHJpbmcgemllbCwgc3RyaW5nIG1zZykKKworCVppZWwgYmVzY2hyZWlidCBkYXMgT2JqZWN0IG9kZXIgUmF1bSwgd28gZXMgZmVzdGdlYnVuZGVuIHdlcmRlbiBzb2xsCisJbXNnIGlzdCBkaWUgQXVzZ2FiZS4gV2lyZCBtc2cgbmljaHQgZ2VzZXR6dCwgc28gd2lyZCBlaW5lIAorCSAgICBTdGFuZGFyZC1BdXNnYWJlIGF1c2dlZ2ViZW4uCisKK3ZhcmFyZ3MgaW50IGxvZXNlX3NlaWwoc3RyaW5nIG1zZykKKwlEYXMgU2VpbCB3aXJkIGdlbG9lc3QgLSBlcyB3aXJkIGRhYmVpIGRpZSBtc2cgaW4gZGVuIFJhdW0KKyAgICAgICAgYXVzZ2VnZWJlbi4gSXN0IG1zZyBuaWNodCBkZWZpbmllcnQsIHdpcmQgZWluZSBTdGFuZGFyZGF1c2dhYmUKKyAgICAJZXJ6ZXVndC4KKworCitCZWlkZSBGdW5rdGlvbmVuIHdlcmRlbiB3aXIgdm9uIGVuZW0gU3BpZWxlciBiZWhhbmRlbHQgLSBlcyB3ZXJkZW4gdGllKCkgdW5kCit1bnRpZSgpIGluIGRlbiBmZXN0Z2VidW5kZW5lbiBPYmplY3RlbiBhdXNnZXdlcnRldC4KKworRWluZSB3ZWl0ZXJlIFByb3BlcnRpZSBpc3QgUF9USUVfQVVUTy4KK0RpZXNlciBXZXJ0IHN0ZWh0IHBlciBEZWZhdWx0IGF1ZiAxIHVuZCBlcmxhdWJ0IGRhbWl0IGVpbmUgYXV0b21hdGlzY2hlCitCZW51dHp1bmcgZGVzIFNlaWxlcyB1ZWJlciBkaWUgRnVua3Rpb25lbiBiaW5kZV9zZWlsKCkgdW5kIGxvZXNlX3NlaWwoKS4KK0lzdCBkaWVzZSBQcm9wZXJ0aWUgYXVmIDAsIHNvIGtvZW5uZW4gbnVyIFNwaWVsZXIgZGFzIFNlaWwgYmVudXR6ZW4uCisKKworTGV0enRlIMRuZGVydW5nOiAyNS42LiBHYW5kbwpkaWZmIC0tZ2l0IGEvZG9jL3dpei9zZW5zaXRpdmUgYi9kb2Mvd2l6L3NlbnNpdGl2ZQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi45YTkyMGExCi0tLSAvZGV2L251bGwKKysrIGIvZG9jL3dpei9zZW5zaXRpdmUKQEAgLTAsMCArMSw2NyBAQAorU2Vuc2l0aXZlIE9iamVrdGUKKworTWFuIGthbm4gZWluIE9iamVrdCBtaXQgZGVyIFByb3BlcnR5IFBfU0VOU0lUSVZFIGRhenUgdmVyYW5sYXNzZW4sIGF1ZgorZ2V3aXNzZSBEaW5nZSB6dSByZWFnaWVyZW4uIFdlbm4gZGllc2UgUHJvcGVydHkgYmVudXR6dCB3aXJkLCBzb2xsdGUgc2llIGVpbgorQXJyYXkgdm9uIEFycmF5cyBlbnRoYWx0ZW4sIGRhcyBzbyBhdXNzaWVodDoKKworKHsgKHsgZXJlaWduaXMxLCBrZXkxLCBncmVuendlcnQxICgsT3B0aW9uZW4xKSB9KSwKKyAgICh7IGVyZWlnbmlzMiwga2V5MiwgZ3Jlbnp3ZXJ0MiAoLE9wdGlvbmVuMikgfSksCisgICAuLi4KKyAgICh7IGVyZWlnbmlzTiwga2V5TiwgZ3Jlbnp3ZXJ0TiAoLE9wdGlvbmVuTikgfSkgfSkKKworRm9sZ2VuZGUgbW9lZ2xpY2hlIEVyZWlnbmlzc2Ugc2luZCBpbiA8c2Vuc2l0aXZlLmg+IGRlZmluaWVydDoKKworU0VOU0lUSVZFX0FUVEFDSyAtIHJlYWdpZXJ0IGF1ZiBBbmdyaWZmLgorICAgICBJbiBkaWVzZW0gRmFsbCBpc3QgZGVyIEtleSBkZXIgU2NoYWRlbnN0eXAgdW5kIGRlciBHcmVuendlcnQgZGVyCisgICAgIFNjaGFkZW4sIGFiIGRlbSBkaWUgRnVua3Rpb24gdHJpZ2dlcl9zZW5zaXRpdmVfYXR0YWNrKCkgaW4gZGVtIE9iamVrdAorICAgICBhdWZnZXJ1ZmVuIHdpcmQuIERpZXNlIEZ1bmt0aW9uIGJla29tbXQgdWViZXJnZWJlbjoKKyAgICAgICAxLiBEZW4gRmVpbmQKKyAgICAgICAyLiBEZW4gS2V5IChuaWNodCBBTExFIFNjaGFkZW5zdHlwZW4pCisgICAgICAgMy4gRGVuIFNjaGFkZW4KKyAgICAgICA0LiBEYXMgQXJndW1lbnQgc3BlbGwgdm9uIERlZmVuZCgpCisgICAgICAgNS4gRGllIE9wdGlvbmVuLCB1bmQgendhciBhbGxlcyBuYWNoIGRlbSBHcmVuendlcnQgYWxzIEFycmF5LgorCisgICAgIEJlbWVya3VuZ2VuOgorICAgICAgICBvIERlciBTY2hhZGVuIG5hY2ggQWJ6dWcgZHVyY2ggUnVlc3R1bmdlbiB1bmQgdm9yIEJlcnVlY2tzaWNodGlndW5nCisgICAgICAgICAgdm9uIFJlc2lzdGVueiB1bmQgS29lcnBlcnNjaHV0eiBpc3QgYXVzc2NobGFnZ2ViZW5kLgorICAgICAgICBvIEVpbiBFcmVpZ25pcyBrYW5uIG1pdCB2ZXJzY2hpZWRlbmVuIEtleXMgbWVocmZhY2ggYW5nZWdlYmVuCisgICAgICAgICAgd2VyZGVuLgorU0VOU0lUSVZFX0lOVkVOVE9SWSAtIHJlYWdpZXJ0IGF1ZiBiZXN0aW1tdGUgT2JqZWt0ZSBpbSBJbnZlbnRvcnkuCisgICAgIEVpbiBzb2xjaGVzIE9iamVrdCByZWFnaWVydCBhdWYgYW5kZXJlIE9iamVrdGUgZW1wZmluZGxpY2gsIGRpZQorICAgICBzZW5zaXRpdiBzaW5kIHVuZCBTRU5TSVRJVkVfSU5WRU5UT1JZX1RSSUdHRVIgbWl0IGRlbSBnbGVpY2hlbiBLZXkgdW5kCisgICAgIGVpbmVtIGhvZWhlcmVuIEdyZW56d2VydCBhdXNsb2VzZW4uCisKKyAgICAgRXMgaXN0IGRhYmVpIGVnYWwsIHdlbGNoZXMgZGVyIGJlaWRlbiBPYmpla3RlIHp1ZXJzdCBkYSB3YXIuIEluIGVpbmVtCisgICAgIHNvbGNoZW4gT2JqZWt0IHdpcmQgZGFubiBkaWUgRnVua3Rpb24gdHJpZ2dlcl9zZW5zaXRpdmVfaW52KCkKKyAgICAgYXVmZ2VydWZlbiwgdW5kIHp3YXIgbWl0IGZvbGdlbmRlbiBBcmd1bWVudGVuOgorICAgICAgIDEuIERhcyBhdXNsb2VzZW5kZSBPYmpla3QgKERhcyBtaXQgRXJlaWduaXMKKyAgICAgICAgICBTRU5TSVRJVkVfSU5WRU5UT1JZX1RSSUdHRVIpCisgICAgICAgMi4gRGVyIEtleQorICAgICAgIDMuIERlciBHcmVuendlcnQgZGVzIGF1c2xvZXNlbmRlbiBPYmpla3RzCisgICAgICAgNC4gRGllIE9wdGlvbmVuIGRlcyBhdXNsb2VzZW5kZW4gT2JqZWt0cworICAgICAgIDUuIERpZSBPcHRpb25lbiBkZXMgcmVhZ2llcmVuZGVuIE9iamVrdHMKK1NFTlNJVElWRV9JTlZFTlRPUllfVFJJR0dFUiAtIHNpZWhlIG9iZW4KKyAgICAgTWl0IGRpZXNlbSBPYmpla3Qgc2VsYmVyIGdlc2NoaWVodCBuaWNodHMsIGVzIGxvZXN0IG51ciBGdW5rdGlvbmVuIGluCisgICAgIGFuZGVyZW4gT2JqZWt0ZW4gYXVzIChzaWVoZSBvYmVuKS4KKworSW4gUGxhbnVuZyBpc3Qgbm9jaDoKKworU0VOU0lUSVZFX0VOVklST05NRU5UX0NIQU5HRSAoZmFsbHMgaW0gSW52ZW50b3J5IHZvbiBMZWJld2VzZW4pCisKK0RpZSBFaW5zYXR6bW9lZ2xpY2hrZWl0ZW4gc2Vuc2l0aXZlciBPYmpla3RlIHNpbmQgdmllbGZhZWx0aWc6CisKKyAgICogRHluYW1pdCBrb2VubnRlIGpldHp0IFNFTlNJVElWRV9BVFRBQ0sgbWl0IERUX0ZJUkUgdW5kIHouQi4gR3Jlbnp3ZXJ0CisgICAgIDE1MCBoYWJlbiwgZGllIEZ1bmt0aW9uIHRyaWdnZXJfc2Vuc2l0aXZlX2F0dGFjaygpIHNvbGx0ZSBkYW5uIHouQi4gZGllCisgICAgIFp1ZW5kc2NobnVyIGFuenVlbmRlbi4uLgorICAgKiBCZWkgTml0cm9nbHljZXJpbiBlbnRzcHJlY2hlbmQgbWl0IERUX0JMVURHRU9OLCBlaW5lbSBzZWhyIGtsZWluZW4KKyAgICAgR3Jlbnp3ZXJ0IHVuZCBlaW5lciB0cmlnZ2VyX3NlbnNpdGl2ZV9hdHRhY2soKS1GdW5rdGlvbiwgZGllIEJVTU0KKyAgICAgbWFjaHQuLi4KKyAgICogRXMgc29sbCBhdWNoIERpbmdlIGdlYmVuLCBkaWUgbWFuIGJlc3NlciBOSUNIVCBnbGVpY2h6ZWl0aWcgYW0gZ2xlaWNoZW4KKyAgICAgT3J0IGF1ZmJld2FocmVuIHNvbGx0ZS4uLiBGdWVyIHNvbGNoZSBEaW5nZSBzaW5kIFNFTlNJVElWRV9JTlZFTlRPUlkKKyAgICAgdW5kIFNFTlNJVElWRV9JTlZFTlRPUllfVFJJR0dFUiBkYS4KKyAgICogU0VOU0lUSVZFX0VOVklST05NRU5UX0NIQU5HRSBpc3QgZGFmdWVyIHZvcmdlc2VoZW4sIGRhc3MgT2JqZWt0ZSBpbQorICAgICBJbnZlbnRvcnkgZW1wZmluZGxpY2ggYXVmIFRhdWNoZW4gb2RlciBBdWZlbnRoYWx0IGFuIGhlaXNzZW4gT3J0ZW4gdXN3LgorICAgICByZWFnaWVyZW4sIGRpZXMgaXN0IGplZG9jaCBub2NoIGluIFBsYW51bmcuCisKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KK0xhc3QgbW9kaWZpZWQ6IFdlZCBNYXkgOCAxMDowMDoyOCAxOTk2IGJ5IFdhcmdvbgpkaWZmIC0tZ2l0IGEvZG9jL3dpei9zaGVyaWZmIGIvZG9jL3dpei9zaGVyaWZmCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjRmYjgzNjYKLS0tIC9kZXYvbnVsbAorKysgYi9kb2Mvd2l6L3NoZXJpZmYKQEAgLTAsMCArMSw0MSBAQAorV2FzIGlzdCB6dSB0dW4sIHdlbm4gaWNoIGplbWFuZGVuIGJlaSBlaW5lbSBSZWdlbHZlcnN0b3NzIGVyd2lzY2hlPworPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorCisgICAgICAgIEdydW5kc2FldHpsaWNoIHNvbGx0ZXQgaWhyIGRlbiBTaGVyaWZmLCBlaW5lbiBkZXIgRGVwdXRpZXMgb2RlcgorICAgICAgICBlaW5lbiBFcnptYWdpZXIgYmVuYWNocmljaHRpZ2VuLgorCisgICAgICAgIElzdCBrZWluIE1hZ2llciBhdXMgZGllc2VyIEdydXBwZSBhbndlc2VuZCBvZGVyIHNpbmQgZGllc2UgbmljaHQKKyAgICAgICAgYW5zcHJlY2hiYXIsIHNvIGVtcGZpZWhsdCBzaWNoIGRpZSBmb2xnZW5kZSBIYW5kbHVuZ3N3ZWlzZS4KKworICAgICAgICBTcHJlY2h0IGRlbiBTcGllbGVyIGF1ZiBzZWluIEZlaGx2ZXJoYWx0ZW4gYW4gdW5kIHdlaXN0IGlobiBkYXJhdWYKKyAgICAgICAgaGluLCBkYXNzIGRpZXMgYW4gZGVuIFNoZXJpZmYgZ2VtZWxkZXQgd2lyZCwgZGFtaXQgZXIgZGllCisgICAgICAgIEdlbGVnZW5oZWl0IGhhdCBzZWluZSBTaWNodCBkZXIgU2l0dWF0aW9uIGZlc3R6dWhhbHRlbiB1bmQKKyAgICAgICAgZWJlbmZhbGxzIGFuIGRlbiBTaGVyaWZmIHp1IHNlbmRlbi4KKyAgICAgICAgRGllc2VyIEhpbndlaXMgc29sbHRlIGRldXRsaWNoIGVyZm9sZ2VuIHVuZCBhdWNoIGV2ZW50dWVsbGUgVGF1Yi0KKyAgICAgICAgb2RlciBCbGluZGhlaXQgYmVydWVja3NpY2h0aWdlbiwgZXMgZW1wZmllaGx0IHNpY2ggdGVsbF9vYmplY3QoKQorICAgICAgICBiencuIGVjaG90byB6dSB2ZXJ3ZW5kZW4uCisKKyAgICAgICAgU29sbHRlIGRlciBTcGllbGVyIG5pY2h0IHJlYWdpZXJlbiB1bmQgbWl0IHNlaW5lbSBWZXJoYWx0ZW4gYW5kZXJlCisgICAgICAgIFNwaWVsZXIgaW0gU3BpZWwgYmVlaW50cmFlY2h0aWdlbiwgc28gc29sbHRlIGVyIG5hY2ggL3Jvb20vamFpbAorICAgICAgICBiZWZvZXJkZXJ0IHdlcmRlbi4gVmVyd2VuZGV0IGRhenUgYml0dGUgZGllIE1ldGhvZGUgbW92ZSBpbQorICAgICAgICBQbGF5ZXIsIGFuc3RhdHQgaW5zIEphaWwgenUgZ2VoZW4gdW5kIGlobiBkYW5uIHp1IHRyYW5zZW4uIEJlaQorICAgICAgICBsZXR6dGVyZW0gc2V0enQgSWhyIGV1Y2ggc2VsYnN0IGZlc3QuCisKKyAgICAgICAgQml0dGUgc2VodCB2b24gWmFwcywgRGlzY29ubmVjdHMgb2RlciBBZWhubGljaGVtIGFiLCBzb3dlaXQgYW5kZXJlCisgICAgICAgIE1vZWdsaWNoa2VpdGVuIGJsZWliZW4uIEJlaSBkZW4sIGR1cmNoYXVzIG5pY2h0IHVudWVibGljaGVuLAorICAgICAgICBvYnN6b2VuZW4gTGV2ZWwtMS1SdWZlcm4gaXN0IGVpbiBEaXNjb25uZWN0IGR1cmNoYXVzIGFuZ2VicmFjaHQuCisKKyAgICAgICAgU2VuZGV0IGRlbSBTaGVyaWZmIGVpbmUga3VyemUgQmVzY2hyZWlidW5nIGRlciBTaXR1YXRpb24gdW5kIHdhcworICAgICAgICBJaHIgdW50ZXJub21tZW4gaGFidC4KKworICAgICAgICBCaXR0ZSB1ZWJlcnBydWVmdCBzb3JnZmFlbHRpZyBiZXZvciBJaHIgaGFuZGVsdCwgb2IgZXMgc2ljaAorICAgICAgICB1ZWJlcmhhdXB0IHVtIGVpbmVuIFJlZ2VsdmVyc3Rvc3MgaGFuZGVsdCB1bmQgb2IgZGllIFNpdHVhdGlvbgorICAgICAgICBuaWNodCBhdWNoIG9obmUgb2JpZ2UgRWluZ3JpZmZlIGdla2xhZXJ0IHdlcmRlbiBrYW5uLgorCisKKyBTSUVIRSBBVUNIOgorICAgIGxlaXRmYWRlbgorCisgTEVUWlRFIEFlTkRFUlVORzoKKyAgICBXZWQsIDMwLjA4LjIwMDAsIDExOjM1OjAwIHZvbiBNdWFkaWIKKwpkaWZmIC0tZ2l0IGEvZG9jL3dpei9zaW11bF9lZnVucyBiL2RvYy93aXovc2ltdWxfZWZ1bnMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uODY3MDgwMQotLS0gL2Rldi9udWxsCisrKyBiL2RvYy93aXovc2ltdWxfZWZ1bnMKQEAgLTAsMCArMSw0NyBAQAorQWxsZ2VtZWluIG51ZXR6bGljaGUgc2ltdWxfZWZ1bidzOgorCitmaWxlX3RpbWUoc3RyaW5nIGZpbGVuYW1lKSBsaWVmZXJ0IGRpZSBBY2Nlc3N0aW1lIGRlcyBGaWxlcyBpbiBTZWt1bmRlbiBzZWl0CisJMS4xLjE5NzAgKGRhcyBrYW5uIG1hbiBhbHMgaW5wdXQgZnVlciBjdGltZSBvZGVyIGR0aW1lIHZlcndlbmRlbikuCisKK3F1ZXJ5X3dpel9sZXZlbChtaXhlZCBwbGF5ZXIpIGJla29tbXQgZWluZW4gU3BpZWxlcm5hbWVuIG9kZXIgZWluIFNwaWVsZXItCisJT2JqZWN0IGFscyBhcmd1bWVudCB1bmQgbGllZmVydCBkZW4gTWFnaWVybGV2ZWwgKHNpZWhlIGF1Y2ggCisJL3NlY3VyZS93aXpsZXZlbHMuaCkKKworcXVlcnlfd2l6X2dycChtaXhlZCBwbGF5ZXIpIHdpZSBxdWVyeV93aXpfbGV2ZWwsIGxpZWZlcnQgYWJlciBkaWUgTWFnaWVyLQorCUdydXBwZSAoYXVjaCB3aXpsZXZlbHMuaCkKKworbWl4ZWQgKmV4Y2x1ZGVfYXJyYXkobWl4ZWQgKmFycixpbnQgZnJvbSxpbnQgdG8pIGxpZWZlcnQgZGVuIGFycmF5IG9obmUgZGllCisJYXJyWzAuLmZyb20tMV0rYXJyW3RvKzEuLjwxXQorCittaXhlZCAqcmVtb3ZlX2FsaXN0KG1peGVkIGtleSxtaXhlZCAqYWxpc3QpIG5pbW10IGRhcyBFbGVtLiBtaXQgU2NobHVlc3NlbAorCWtleSBhdXMgZGVyIEFsaXN0IGhlcmF1cy4KKworbWl4ZWQgKmV4Y2x1ZGVfYWxpc3QoaW50IGksbWl4ZWQgKmFsaXN0KSBuaW1tdCBkYXMgRWxlbWVudCBtaXQgZGVyIE51bW1lciBpCisJYXVzIGRlciBBbGlzdC4KKworc3RyaW5nIGR0aW1lKGludCB3YW5uKSB3aWUgY3RpbWUsIGFiZXIgZGV1dHNjaCAobWFjaHQgYXVzIGRlciBaYWhsLCBkaWUgdGltZQorCXVzdyBsaWVmZXJuLCBlaW5lbiBsZXNiYXJlbiBTdHJpbmcpCisKK3ZhcmFncyBzdHJpbmcKKwlicmVha19zdHJpbmcoc3RyaW5nIHN0ciwgaW50IHdpZHRoLCBtaXhlZCBpbmRlbnQsIGludCBsZWF2ZV9teV9sZnMpCisJYnJpY2h0IGVpbmVuIFN0cmluZyB1bSBhdWYgV2VpdGUgd2lkdGgsIG1hbiBrYW5uIGVpbmVuIGluZGVudC1TdHJpbmcKKwlhbmdlYmVuLCBkZXIgdm9yIGplZGVuIFRlaWxzdHJpbmcgZ2VoYWVuZ3Qgd2lyZCwgb2RlciBhdWNoIGVpbmUgWmFobAorCWRhbm4gd2VyZGVuIGVudHNwcmVjaGVuIHZpZWxlIExlZXJ6ZWljaGVuIGRvcnRoaW4gZ2VoYWVuZ3QuIERlciBsZXR6dGUKKwlQYXJhbWV0ZXIgbGVndCBmZXN0LCBvYiBiZXJlaXRzIGV4aXN0aWVyZW5kZSBMaW5lZmVlZHMgZXJoYWx0ZW4gYmxlaWJlbgorCW9kZXIgbmljaHQuCisKK3N0cmluZyB1cHRpbWUoKSBsaWVmZXJ0IGdlbmF1IGRpZXNlIGluIGxlc2JhcmVyIEZvcm0uCisKK3B1YmxpYyBvYmplY3QgKmFsbF9lbnZpcm9ubWVudChvYmplY3Qgb2IpIGxpZWZlcnQgZWluZW4gQXJyYXkgbWl0IGRlbSByZS0KKwlrdXJzaXZlbiBFbnZpcm9ubWVudCAoZGVuIEJldXRlbCwgaW4gZGVtIG9iIHN0ZWNrdCwgZGVuIFNwaWVsZXIsCisJZGVyIGRlbiBCZXV0ZWwgdHJhZWd0LCB1bmQgZGVuIFJhdW0sIGluIGRlbSBzaWNoIGRlciBTcGllbGVyIGF1ZmhhZWx0LgorCit2YXJhcmdzIG1peGVkIG1hdGNoX2xpdmluZyhzdHJpbmcgc3RyLCBpbnQgcGxheWVyc19vbmx5KQorCWJla29tbXQgZWluZW4gU3RyaW5nLiBGYWxscyBkZXIgR0VOQVUgZGVtIE5hbWVuIGVpbmVzIG5pY2h0IG5ldHp0b3RlbgorCVNwaWVsZXJzIGVudHNwcmljaHQsIGJla29tbXQgbWFuIGRlbi4gRmFsbHMgZXIgZ2VuYXUgZGVtIE5hbWVuIGVpbmVzCisJTW9uc3RlcnMgZW50c3ByaWNodCB1bmQgbWFuIG5pY2h0IHBsYXllcnNfb25seSE9MCBhbmdlZ2ViZW4gaGF0LAorCWxpZWZlcnQgZXIgZGVuIE5hbWVuIGRlcyBNb25zdGVycy4gQW5zb25zdGVuIHN1Y2h0IGVyIG5hY2ggZWluZW0gCisJU3BpZWxlciwgZGVzc2VuIE5hbWUgbWl0IHN0ZCBhbmZhZW5ndC4gR2lidCBlcyBrZWluZW4sIHJldHVybmVkCisJZXIgZWluZSAtMiwgZ2lidCBlcyBtZWhyIGFscyBlaW5lbiwgZWluZSAtMSwgYmVpIGdlbmF1IGVpbmVtIGRlbgorCU5hbWVuLgorCmRpZmYgLS1naXQgYS9kb2Mvd2l6L3NraWxscy5kb2MgYi9kb2Mvd2l6L3NraWxscy5kb2MKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNjg1YjM4MwotLS0gL2Rldi9udWxsCisrKyBiL2RvYy93aXovc2tpbGxzLmRvYwpAQCAtMCwwICsxLDc3IEBACisgU2tpbGxzIHNpbmQgRmVydGlna2VpdGVuLCBkaWUgZWluIFNwaWVsZXIgZXJ3ZXJiZW4ga2Fubi4gWnUgZWluZW0gU2tpbGwga29lbm5lbgorbWVocmVyZSBWZXJiZW4gZ2Vob2VyZW4uIEF1c3NlcmRlbSBrYW5uIGVpbiBWZXJiIHVudGVyIFVtc3RhZW5kZW4gYmVpIG1laHJlcmVuCitTa2lsbHMgZGVmaW5pZXJ0IHNlaW4gKHpCLCBmYWxscyBlcyBlaW5lIE1hZ2llcmdpbGRlIHVuZCBlaW5lIFBzaW9ua2llci0KK2dpbGRlIGdhZWJlLCBrb2VubnRlIGVzIHNraWxscyAibWFnaWUiIHVuZCAicHNpIiBnZWJlbiwgZGllIGJlaWRlIGRhcworVmVyYiAidGVsZXBvcnRpZXJlIiBkZWZpbmllcmVuKS4KKworIFdlbGNoZSBTa2lsbHMgZXMgZ2lidCwgd2VsY2hlIFZlcmJlbiBkYXp1Z2Vob2VyZW4sIHdlbGNoZSBPYmpla3RlIHVuZAorRnVua3Rpb25lbiBkaWVzZW4genVnZW9yZG5ldCBzaW5kLCByZWdlbHQgZWluIHplbnRyYWxlciAiU2tpbGxtYXN0ZXIiLgorRGFydWViZXJoaW5hdXMgZ2lidCBlcyBpbiBqZWRlbSBTcGllbGVyb2JqZWt0IGVpbiAiU2tpbGwiLU1vZHVsLgorCitEZXIgU2tpbGxtYXN0ZXIgb2ZmZXJpZXJ0IGRpZSBmb2xnZW5kZW4gRnVua3Rpb25lbjoKKworSW5zZXJ0U2tpbGwoc3RyaW5nIHNraWxsbmFtZSwgc3RyaW5nIHNraWxsZGVzY3IsIHN0cmluZyAqdmVyYmVuLAorICAgICAgICAgICAgc3RyaW5nICpvYmpGdW5EZXNjcikKKyBza2lsbG5hbWUgaXN0IChuYXR1ZXJsaWNoKSBkZXIgTmFtZSBkZXMgU2tpbGxzICh6QiBNYWdpZSkuCisgc2tpbGxkZXNjciBpc3QgZWluIHN0cmluZywgZGVyIGRlbiBTa2lsbCBuYWVoZXIgYmVzY2hyZWlidCwgekIKKyAgICAgICAgICAgICJNYWdpZSBnaWJ0IGRlbSBBbndlbmRlciBlaW4gYnJlaXRlcyBTcGVrdHJ1bSB2b24gTW9lZ2xpY2hrZWl0ZW4sCisgICAgICAgICAgICAgc293b2hsIGltIEthbXBmIGFscyBhdWNoIGF1c3NlcmhhbGIuIgorIHZlcmJlbiBpc3QgZWluIEFycmF5LCBkZXIgZGllIFZlcmJlbiB6dSBkZW0gU2tpbGwgZW50aGFlbHQuCisgb2JqRnVuRGVzY3IgaXN0IGVpbiBBcnJheSwgZGVyIGRpZXNlbGJlIEdyb2Vzc2UgaGFiZW4gbXVzcyB3aWUgVmVyYmVuLiBKZWRlcworICAgICAgICAgICAgIEVsZW1lbnQgaXN0IGVpbiA0LWVsZW1lbnRpZ2VyIEFycmF5LiBFcnN0ZXMgRWxlbWVudCBkaWVzZXMgQXJyYXlzCisgICAgICAgICAgICAgaXN0IGVpbiBGaWxlbmFtZSwgendlaXRlcyBlaW5lIEZ1bmt0aW9uLiBCZWkgZGVyIEVpbmdhYmUgZGVzIFZlcmJzCisgICAgICAgICAgICAgd2lyZCBpbiBkZW0gT2JqZWt0IGRpZSBGdW5rdGlvbiBhdWZnZXJ1ZmVuLiBEaWUgZGFiZWkgdWViZXJnZWJlbmVuCisgICAgICAgICAgICAgUGFyYW1ldGVyIHdlcmRlbiBzcGFldGVyIGJlc2NocmllYmVuLgorICAgICAgICAgICAgIERyaXR0ZXMgRWxlbWVudCBpc3QgZWluIFN0cmluZywgZGVyIGRpZSB6dSBkaWVzZW0gVmVyYiB1bmQgU2tpbGwKKyAgICAgICAgICAgICBnZWhvZXJlbmRlIEFrdGlvbiBuYWVoZXIgYmVzY2hyZWlidCwgekI6CisgICAgICAgICAgICAgIkRpZSBNYWdpc2NoZSBSYWtldGUga29zdGV0IGRlbiBHZWduZXIgendpc2NoZW4gNSB1bmQgMTAgSGl0cG9pbnRzIgorICAgICAgICAgICAgIERhcyA0LiBFbGVtZW50IG11c3MgZWluZSBaYWhsIGF1cyBbMS4uMTldIHNlaW4gdW5kIGdpYnQgZGVuIExldmVsCisgICAgICAgICAgICAgYW4sIGFiIGRlbSBlaW4gUGxheWVyIGRpZXNlcyBTa2lsbHZlcmIgZXJ3ZXJiZW4ga2Fubi4KKyBEaWUgRnVua3Rpb24gZGFyZiBudXIgdm9uIEVyem1hZ2llcm4gYXVmZ2VydWZlbiB3ZXJkZW4uCisgRXMgZGFyZiBub2NoIGtlaW5lbiBTa2lsbCBkaWVzZXMgTmFtZXMgZ2ViZW4uIEZhbGxzIG1hbiBlaW5lbiBiZXN0ZWhlbmRlbgorIFNraWxsIGxlZGlnbGljaCBlcndlaXRlcm4gbW9lY2h0ZSwgbXVzcyBtYW4gZGllIEZ1bmt0aW9uIEFkZFZlcmJzIGJlbnV0emVuCisgKHNpZWhlIHVudGVuKS4KKworUmVtb3ZlU2tpbGwoc2tpbGxuYW1lKQorIGVudGZlcm50IGVpbmVuIFNraWxsIHdpZWRlci4gQUNIVFVORzogV2VubiBQbGF5ZXIgZGVuIFNraWxsIGJlcmVpdHMgZXJ3b3JiZW4KKyBoYWJlbiwgdmVybGllcmVuIHNpZSBpaG4sIHdlbm4gc2llIHp1bSBuYWVjaHN0ZW4gbWFsIHZlcnN1Y2hlbiwgaWhuIHp1IGJlLQorIG51dHplbi4KKworR2V0U2tpbGxzKCkKKyBnaWJ0IGRpZSBBTGlzdCBtaXQgZGVuIFNraWxscyB6dXJ1ZWNrLgorCitHZXRTa2lsbChza2lsbG5hbWUpCisgbGllZmVydCBkZW4gZW50c3ByZWNoZW5kZW4gRWludHJhZyBhdXMgZGVyIEFMaXN0IHp1cnVlY2suCisKK0dldEZ1bmN0aW9uQW5kRGVzY3JpcHRpb24oc2tpbGxuYW1lLCB2ZXJiKQorIGxpZWZlcnQgZGVuIGluIEFkZFNraWxsIHVlYmVyZ2ViZW5lbiA0ZWxlbWVudGlnZW4gQXJyYXkgbWl0IE9iamVrdG5hbWUsCisgRnVua3Rpb25zbmFtZSwgQWt0aW9uc2Jlc2NocmVpYnVuZyB1bmQgTGV2ZWwgenVydWVjay4KKworR2V0U2tpbGxEZXNjcmlwdGlvbihza2lsbG5hbWUpCisgbGllZmVydCBkaWUgaW4gQWRkU2tpbGwgdWViZXJnZWJlbmUgQmVzY2hyZWlidW5nIGRlcyBTa2lsbHMgenVydWVjay4KKworQWRkVmVyYnMoc2tpbGxuYW1lLCBtaXhlZCAqdmVyYnMsIG1peGVkICpvYmpGdW5EZXNjcikKKyBlcndlaXRlcnQgZWluZW4gYmVzdGVoZW5kZW4gU2tpbGwgdW0gZWluaWdlIFZlcmJlbiwgbmFlaGVyZSBCZXNjaHJlaWJ1bmcKKyBzaWVoZSBBZGRTa2lsbC4KKworLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorRGFzIFNraWxsbW9kdWwgaW0gUGxheWVyb2JqZWt0IGJpZXRldCBkaWUgZm9sZ2VuZGVuIEZ1bmt0aW9uZW46CisKK0dpdmVBYmlsaXR5KHZlcmIsIHNraWxsLCBpbnQgcHJvbWlsbCkKKyBnaWJ0IGVpbmVtIFNwaWVsZXIgZGllIEZhZWhpZ2tlaXQsIGRhcyBWZXJiIHZlcmIgYXVzIGRlbSBTa2lsbCBza2lsbCB6dSBiZW51dC0KKyB6ZW4uIFByb21pbGwgd2lyZCBiZWkgZGVtIFZlcnN1Y2gsIGRhcyBWZXJiIHp1IGJlbnV0emVuLCBhbiBkYXMgU2tpbGxvYmpla3QKKyB1ZWJlcmdlYmVuIHVuZCBzb2xsdGUgZGllIFdhaHJzY2hlaW5saWNoa2VpdCwgZGFzIGRlbSBQbGF5ZXIgZGllIFNraWxsYWt0aW9uCisgZ2VsaW5ndCwgaW4gUHJvbWlsbCBiZXNjaHJlaWJlbi4gV2VubiBkZXIgUGxheWVyIGRpZSBBYmlsaXR5IHNjaG9uIGhhdHRlLCB3aXJkCisgbGVkaWdsaWNoIHByb21pbGwgZ2V1cGRhdGVkLgorIEVzIHdpcmQgZWluZSAtMSB6dXJ1ZWNrZ2VnZWJlbiwgZmFsbHMgZWluZSBzb2xjaGUgS29tYmluYXRpb24gYXVzIFNraWxsIHVuZAorIFZlcmIgKG5vY2gpIG5pY2h0IGRlZmluaWVydCBpc3QsIGVpbmUgLTIgZmFsbHMgZGVyIExldmVsIGRlcyBTcGllbGVycyBuaWNodAorIGF1c3JlaWNodC4KKworR2V0QWxsQWJpbGl0aWVzKCkKKyBnaWJ0IGRpZSBBTGlzdCBtaXQgZGVuIEFiaWxpdGllcyBkZXMgU3BpZWxlcnMgenVydWVjay4gU2NobHVlc3NlbCBpbiBkZXIgQUxpc3QKKyBzaW5kIGRpZSBWZXJiZW4sIEVpbnRyYWVnZSBzaW5kIEFycmF5cyBtaXQgZGVuIFNraWxscy4gRGllIEFycmF5cyBoYWJlbiBzbworIHZpZWxlIEVpbnRyYWVnZSwgd2llIGRlciBQbGF5ZXIgU2tpbGxzIGhhdCwgZGllIGRhcyBiZXRyZWZmZW5kZSBXb3J0CisgZGVmaW5pZXJlbiAoaW0gSWRlYWxmYWxsIGFsc28gRUlORU4gRWludHJhZywgbmFlbWxpY2ggd2VubiBlcyBrZWluZSBVZWJlci0KKyBzY2hlaWR1bmdlbiBnaWJ0KS4gRGllIEVpbnRyYWVnZSBzaW5kIHdpZWRlcnVtIDJlbGVtZW50aWdlIEFycmF5cywgZGllCisgYWxzIDEuIEVsZW1lbnQgZGVuIFNraWxsbmFtZW4sIGFscyAyLiBFbGVtZW50IGRpZSBQcm9taWxsIGVudGhhbHRlbi4KKwpkaWZmIC0tZ2l0IGEvZG9jL3dpei9zcWxpdGVkYiBiL2RvYy93aXovc3FsaXRlZGIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNDRhN2RjZQotLS0gL2Rldi9udWxsCisrKyBiL2RvYy93aXovc3FsaXRlZGIKQEAgLTAsMCArMSwxNCBAQAorU1FMaXRlLURCcyBpbSBNb3JnZW5ncmF1ZW4KKworSW0gTUcga29lbm5lbiBPYmpla3RlIHNxbGl0ZS1EYXRlbmJhbmtlbiB2ZXJ3ZW5kZW4uCitEaWUgbm90d2VuZGlnZW4gZWZ1bnMgZGFmdWVyIHNpbmQgc2xfb3Blbiwgc2xfY2xvc2UsIHNsX2V4ZWMsIHNsX2luc2VydF9pZC4KKworSGF0IG1hbiBkYXMgU3BlaWNoZXJmaWxlIChTYXZlZmlsZSkgZGVyIERCLCBrYW5uIG1hbiBkaWVzZXMgbWl0IGRlbSBLb21tYW5kbworc3FsaXRlMyBhdWYgZWluZXIgU2hlbGwgYXVjaCBkaXJla3QgYWJmcmFnZW46CisKK0F1ZiBkZXIgU2hlbGwgZnJhZ3QgbWFuIGRpZSBEQiByZWNodCBzaW1wZWwgc28gYWI6CitzcWxpdGUzIC1jb2x1bW4gLWhlYWRlciA8cGZhZF96dXJfZGI+CisKK0FsbGVzIGF1cyBlaW5lciBUYWJlbGxlIGFuemVpZ2VuLCB3byBlaW5lIFNwYWx0ZSBlaW5lbiBiZXN0aW1tdGVuIFdlcnQgaGF0Ogorc2VsZWN0ICogZnJvbSA8dGFiZWxsZT4gd2hlcmUgPHNwYWx0ZT49J2FiYyc7CisKZGlmZiAtLWdpdCBhL2RvYy93aXovdGVhbWthbXBmIGIvZG9jL3dpei90ZWFta2FtcGYKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNGNmYzkzNAotLS0gL2Rldi9udWxsCisrKyBiL2RvYy93aXovdGVhbWthbXBmCkBAIC0wLDAgKzEsMTEzIEBACisKK1RlYW1rYW1wZiBpbSBNb3JnZW5HcmF1ZW4KKz09PT09PT09PT09PT09PT09PT09PT09PT0KKworWnVtIFRlYW1rYW1wZiBpbSBNRyBnZWhvZXJlbiB6d2VpIE9iamVrdGU6IERhcyBMZWJld2VzZW4sIGRhcyBpbSBUZWFtIGlzdCwKK3Nvd2llIGRhcyBUZWFtb2JqZWt0LiBFcnN0ZXJlcyBlcmJ0IHNlaW5lIEZ1bmt0aW9uYWxpdGFldCBhdXMKKworL3N0ZC9saXZpbmcvdGVhbS5jCisKK2RhcyBUZWFtb2JqZWt0IGlzdCBlaW4gY2xvbmUgdm9uCisKKy9vYmovdGVhbS5jCisKK0FsbGVyZGluZ3Mgc29sbHRlIG1hbiBpbW1lciBkYXMgI2RlZmluZSBmdWVyIGRpZXNlbiBQZmFkIG51dHplbiwgd2VsY2hlcworaW4gL3N5cy9saXZpbmcvdGVhbS5oIGRlZmluaWVydCBpc3Q6IFRFQU1fT0JKRUNUCisKK0RhcnVlYmVyaGluYXVzIGdpYnQgZXMgaW4gZGllc2VtIFZlcnplaWNobmlzIG5vY2ggZGVuIFRlYW1tYXN0ZXIuCisKKworQWxsZSByZWxldmFudGVuIEZ1bmt0aW9uZW4gdW5kIFByb3BlcnRpZXMgc2luZCBpbSBUZWFtbWl0Z2xpZWQgYWJydWZiYXIgdW5kCitsaWVmZXJuIEluZm9ybWF0aW9uZW4gdWViZXIgZGVuIFRlYW1rYW1wZi4KKworCitVRUJFUlNJQ0hUIHVlYmVyIGRpZSBQcm9wZXJ0aWVzIHVuZCBGdW5rdGlvbmVuIGRlcyBUZWFta2FtcGZzCis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CisKK1Byb3BlcnRpZXMgZGVzIFRlYW1taXRnbGllZHM6CistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCitQX1RFQU0gICAgICAgICAgICAgICAgIC0gVGVhbW9iamVrdAorUF9URUFNX05FV01FTUJFUiAgICAgICAtIFNwaWVsZXIgbW9lY2h0ZSBpbnMgVGVhbSBoaWVydm9uIGF1Zmdlbm9tbWVuIHdlcmRlbi4KK1BfVEVBTV9BVFRBQ0tfQ01EICAgICAgLSBBbmdyaWZmc2JlZmVobCBkZXMgU3BpZWxlcnMsIG5pY2h0IHNldHpiYXIuCitQX1RFQU1fQVVUT0ZPTExPVyAgICAgIC0gRm9sZ2V3dW5zY2ggZGVzIFNwaWVsZXJzLCBuaWNodCBzZXR6YmFyLgorUF9URUFNX1dBTlRFRF9ST1cgICAgICAtIEdld3VlbnNjaHRlIFJlaWhlIGRlcyBTcGllbGVycy4KK1BfVEVBTV9XSU1QWV9ST1cgICAgICAgLSBGbHVjaHRyZWloZSBkZXMgU3BpZWxlcnMuCitQX1RFQU1fTEVBREVSICAgICAgICAgIC0gU3BpZWxlciBpc3QgQW5mdWVocmVyIGRpZXNlcyBUZWFtcy4KK1BfVEVBTV9BU1NPQ19NRU1CRVJTICAgLSBBbGxlIHp1Z2VvcmRuZXRlbiBOUENzIGJ6dy4gZGVyIFNwaWVsZXIgZGVtIGRpZXNlcgorICAgICAgICAgICAgICAgICAgICAgICAgIE5QQyB6dWdlb3JkbmV0IGlzdC4KK1BfVEVBTV9DT0xPUlMgICAgICAgICAgLSBHcmVuendlcnRlIGZ1ZXIgZmFyYmlnZSBBbnplaWdlLgorCitGdW5rdGlvbmVuIGRlcyBUZWFtbWl0Z2xpZWRzOgorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorVGVhbVByZWZpeCgpICAgICAgICAgICAtICJbVGVhbSBUZWFtbmFtZV0gIiBmYWxscyBUZWFtbWl0Z2xpZWQsICIiIHNvbnN0LgorSXNUZWFtTGVhZGVyKCkgICAgICAgICAtIFRlc3Qgb2IgU3BpZWxlciBBbmZ1ZWhyZXIgZWluZXMgVGVhbXMgaXN0LgorSXNUZWFtTW92ZSgpICAgICAgICAgICAtIFRlc3Qgb2IgQW5ncmlmZnNiZXdlZ3VuZyBnZXJhZGUgYXVzZ2VmdWVocnQgd2lyZC4KK1RlYW1NZW1iZXJzKCkgICAgICAgICAgLSBUZWFtbWl0Z2xpZWRlci4KK1ByZXNlbnRQb3NpdGlvbigpICAgICAgLSBBa3R1ZWxsZSBSZWloZW5udW1tZXIgZGVzIFNwaWVsZXJzLgorUHJlc2VudFRlYW1Qb3NpdGlvbnMoKSAtIFJlaWhlbm51bW1lcm4gYWxsZXIgYW53ZXNlbmRlbiBUZWFtbWl0Z2xpZWRlci4KK1ByZXNlbnRUZWFtUm93cygpICAgICAgLSBSZWloZW4gYWxsZXIgYW53ZXNlbmRlbiBUZWFtbWl0Z2xpZWRlci4KK1ByZXNlbnRFbmVteVJvd3MoKSAgICAgLSBSZWloZW4gYWxsZXIgYW53ZXNlbmRlbiBGZWluZHRlYW1zIHp1c2FtbWVuLgorU2VsZWN0TmVhckVuZW15KCkgICAgICAtIFdhZWhsdCBkaXJla3QgYW5ncmVpZmJhcmVuIEZlaW5kIGF1cy4KK1NlbGVjdEZhckVuZW15KCkgICAgICAgLSBXYWVobHQgRmVpbmQgYXVzIGhpbnRlcmVuIFJlaWhlbiBhdXMuCitJbnNlcnRFbmVteVRlYW0oKSAgICAgIC0gTWFjaHQgYWxsZSBNaXRnbGllZGVyIHZvbiBUZWFtIGRlcyBGZWluZGVzIHp1CisgICAgICAgICAgICAgICAgICAgICAgICAgRmVpbmRlbiBhbGxlciBNaXRnbGllZGVyIGRlcyBlaWdlbmVuIFRlYW1zLgorQXNzb2NNZW1iZXIoKSAgICAgICAgICAtIEFzc296aWllcnQgZWluZW4gSGlsZnNOUEMgbWl0IGVpbmVtIFNwaWVsZXIuCitEZUFzc29jTWVtYmVyKCkgICAgICAgIC0gSGVidCBBc3NvemlhdGlvbiB6d2lzY2hlbiBOUEMgdW5kIFNwaWVsZXIgYXVmLgorVGVhbUZsZWUoKSAgICAgICAgICAgICAtIFNwaWVsZXIgd2lyZCB2ZXJhbmxhc3N0IGluIEZsdWNodHJlaWhlIHp1IHdlY2hzZWxuLgorCitGdW5rdGlvbmVuIGRlcyBUZWFtb2JqZWt0czoKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCitTd2FwUm93cygpICAgICAgICAgICAgIC0gU3BpZWxlciB0YXVzY2hlbiBkaWUgUmVpaGVuCisKKworQkVJU1BJRUw6CisgIE1hbiBtb2VjaHRlIHZvbiBlaW5lbSBTcGllbGVyLCB3ZWxjaGVyIHNpY2ggaW4gZWluZW0gVGVhbSBiZWZpbmRldCwgYWxsZQorICBUZWFtbWl0Z2xpZWRlciBzb3dpZSBkZXJlbiBBbnphaGwgZXJtaXR0ZWxuLCBkaWUgVk9SIGRpZXNlbSBTcGllbGVyIHN0ZWhlbi4KKworICBJbSBhYmZyYWdlbmRlbiBPYmpla3QgbXVzcyBtYW4genVuYWVjaHN0IGRpZSBIZWFkZXJkYXRlaSBkZXMgVGVhbWthbXBmcworICBpbmNsdWRlbjoKKworICAjaW5jbHVkZSAiL3N5cy9saXZpbmcvdGVhbS5oIgorCisKKyAgdm9pZCBmdW4oIG9iamVjdCBwbCApCisgIHsKKyAgIGludCBhY3Rfcm93LGFsbDsKKyAgIG1peGVkICpyb3dzOworICAgb2JqZWN0IHRlYW0sKnRlYW1fbWVtYmVyczsKKworICAgdGVhbT1wbC0+UXVlcnlQcm9wKFBfVEVBTSk7ICAgICAgICAgICAvLyBsaWVmZXJ0IGRhcyBUZWFtb2JqZWt0CisKKyAgIGFjdF9yb3c9cGwtPlByZXNlbnRQb3NpdGlvbigpOyAgICAgICAgLy8gYWt0dWVsbGUgUG9zaXRpb24gZXJtaXR0ZWxuCisKKyAgIHRlYW1fbWVtYmVycz0oe30pOworCisgICBpZiAoIG9iamVjdHAodGVhbSkgJiYgKGFjdF9yb3cgPiAxKSApCisgICAgeworICAgICByb3dzPXRlYW0tPlByZXNlbnRSb3dzKEVOVihwbCkpOyAgICAvLyBkaWUgUmVpaGVuIHdlcmRlbiBhbHMgbWl4ZWQtYXJyYXkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gdWViZXJnZWJlbgorCisgICAgIGZvcmVhY2ggKCBpbnQgaSA6IGFjdF9yb3cgKQorICAgICAgdGVhbV9tZW1iZXJzKz1yb3dzW2ldOyAgICAgICAgICAgICAvLyBkaWUgUmVpaGVuIHdlcmRlbiBrb21wbGV0dCBpbnMKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gbmV1ZSBBcnJheSB1ZWJlcnRyYWdlbgorICAgIH0KKworICAgYWxsPXNpemVvZih0ZWFtX21lbWJlcnMpOyAgICAgICAgICAgICAvLyBBbnphaGwgZGVyIFRlYW1taXRnbGllZGVyLCBkaWUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gdm9yIGRlbSBTcGllbGVyIHN0ZWhlbgorICB9CisKKworU0lFSEUgQVVDSDoKKyAgICAgICAgUHJvcGVydGllczogUF9URUFNLCBQX0FTU09DX01FTUJFUlMsIFBfVEVBTV9BVFRBQ0tfQ01ELAorICAgICAgICAgICAgICAgICAgICBQX1RFQU1fQVVUT0ZPTExPVywgUF9URUFNX0NPTE9SUywgUF9URUFNX0xFQURFUiwKKyAgICAgICAgICAgICAgICAgICAgUF9URUFNX05FV01FTUJFUiwgUF9URUFNX1dBTlRFRF9ST1csIFBfVEVBTV9XSU1QWV9ST1cKKyAgICAgICAgQmV3ZWd1bmc6ICAgSXNUZWFtTW92ZSwgVGVhbUZsZWUKKyAgICAgICAgTWl0Z2xpZWRlcjogSXNUZWFtTGVhZGVyLCBUZWFtTWVtYmVycworICAgICAgICBLYW1wZjogICAgICBBc3NvY01lbWJlciwgRGVBc3NvY01lbWJlciwgSW5zZXJ0RW5lbXlUZWFtCisgICAgICAgICAgICAgICAgICAgIFNlbGVjdE5lYXJFbmVteSwgU2VsZWN0RmFyRW5lbXkKKyAgICAgICAgUG9zaXRpb25lbjogUHJlc2VudFBvc2l0aW9uLCBQcmVzZW50Um93cywgUHJlc2VudEVuZW15Um93cywKKyAgICAgICAgICAgICAgICAgICAgUHJlc2VudFRlYW1Qb3NpdGlvbiwgU3dhcFJvd3MKKyAgICAgICAgU29uc3RpZ2VzOiAgVGVhbVByZWZpeCwgdGVhbWthbXBmX2ludGVybgorCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCitMYXN0IG1vZGlmaWVkOiAxNi0wOC0yMDEwLCBHYWJ5bG9uCmRpZmYgLS1naXQgYS9kb2Mvd2l6L3RlYW1rYW1wZl9pbnRlcm4gYi9kb2Mvd2l6L3RlYW1rYW1wZl9pbnRlcm4KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNzljMjk2MwotLS0gL2Rldi9udWxsCisrKyBiL2RvYy93aXovdGVhbWthbXBmX2ludGVybgpAQCAtMCwwICsxLDEyNyBAQAorCitUZWFta2FtcGYtSW50ZXJuYQorPT09PT09PT09PT09PT09PT0KKworVmVyd2FsdHVuZyBkZXIgS2FtcGZyZWloZW4KKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK0RpZSBVbW9yZG51bmcgZGVyIFRlYW1taXRnbGllZGVyIHdpcmQgZHVyY2ggZGllIEZvcm1hdGlvbiBnZXN0ZXVlcnQuCisKKyAgZm9ybWluW3JlaWhlXSAtIE1pbmltYWxlIEFuemFobCB2b24gVGVhbW1pdGdsaWVkZXJuIGluIGRpZXNlciBSZWloZQorICBmb3JtYXhbcmVpaGVdIC0gTWF4aW1hbGUgQW56YWhsIHZvbiBUZWFtbWl0Z2xpZWRlcm4gaW4gZGllc2VyIFJlaWhlCisKK0RpZSBGdW5rdGlvbiBDaGVja0Zvcm1hdGlvbigpIHBhc3N0IGRpZSBXZXJ0ZSBzbyBhbiwgZGFzcyBzaWUgYmVpIEFud2VzZW5oZWl0CithbGxlciBUZWFtbWl0Z2xpZWRlciBlcmZ1ZWxsYmFyIHNpbmQsIHdvYmVpIGdnZi4gZGVyIE1heGltYWx3ZXJ0IHZvcm5lCithbmZhbmdlbmQgZXJob2VodCB3aXJkIHVuZCBkZXIgTWluaW1hbHdlcnQgaGludGVuIGFuZmFuZ2VuZCB2ZXJyaW5nZXJ0IHdpcmQuCitEYWJlaSBpc3QgZGVyIE1pbmltYWx3ZXJ0IGRlciBlcnN0ZW4gUmVpaGUgMS4KKworRXMgaXN0IHp3aXNjaGVuIGRlciBUZWFtYXVmc3RlbGx1bmcgdW5kIGRlciBSYXVtYXVmc3RlbGx1bmcgenUgdW50ZXJzY2hlaWRlbi4KK0RpZSBUZWFtYXVmc3RlbGx1bmcgaXN0IGRpZSBBdWZzdGVsbHVuZywgaW4gZGVyIGRpZSBNaXRnbGllZGVyIGFuZ2VvcmRuZXQKK3dhZXJlbiwgd2VubiBhbGxlIGFud2VzZW5kIHdhZXJlbi4gSW4gZGVyIFRlYW1hdWZzdGVsbHVuZyBpc3QgZHVyY2ggZGllCitGdW5rdGlvbiBNYWtlRm9ybWF0aW9uKCkgc2ljaGVyZ2VzdGVsbHQsIGRhc3MgZGllIE1pbmltYWwtIHVuZAorTWF4aW1hbGFuZm9yZGVydW5nZW4gZXJmdWVsbHQgc2luZC4KK0RpZSBSYXVtYXVmc3RlbGx1bmcgZXJnaWJ0IHNpY2ggYXVzIGRlbiBhbndlc2VuZGVuIE1pdGdsaWVkZXJuIGRlcgorVGVhbWF1ZnN0ZWxsdW5nLiBTb2xsdGVuIGRpZSBNaW5pbWFsYW5mb3JkZXJ1bmdlbiBlaW5lciB2b3JkZXJlbiBSZWloZSBuaWNodAorZXJmdWVsbHQgc2Vpbiwgd2VyZGVuIGFud2VzZW5kZSBNaXRnbGllZGVyIGF1cyBkZW4gaGludGVyZW4gUmVpaGVuIElOIERFUgorUkFVTUFVRlNURUxMVU5HIG5hY2ggdm9ybmUgZ2VzY2hvYmVuIHNvd2VpdCBub2V0aWcuCisKK1ZvciBWZXJzY2hpZWJ1bmdlbiB1bmQgYmVpIFVwZGF0ZXMgZGVyIFRFQU1BVUZTVEVMTFVORyB3ZXJkZW4gZGllIEFycmF5cyBtaXQKK2RlbiBNaXRnbGllZGVybiBqZWRlciBSZWloZSBzb3J0aWVydCwgd29iZWkgZGllIGdld3VlbnNjaHRlIFJlaWhlIGRlcgorTWl0Z2xpZWRlciBkYXMgZ3JvZXNzdGUgR2V3aWNodCAoMTI1KSBpbSBTb3J0aWVya3JpdGVyaXVtIGhhdCB1bmQgZGllIEFuemFobAorZGVyIExlYmVuc3B1bmt0ZSBlaW5mYWNoIGVpbmdlaHQuIFNvbGFuZ2UgZGllIFRlYW1taXRnbGllZGVyIHVudGVyIDI1MCBMUAoraGFiZW4sIGthbm4gZWluIE1pdGdsaWVkIG1pdCB3ZW5pZ2VuIExQIGhpbnRlciBlaW5lbSBtaXQgdmllbGVuIExQIGVpbnNvcnRpZXJ0CitzZWluLCBkZXIgRUlORSBSZWloZSB3ZWl0ZXIgaGludGVyIHN0ZWhlbiB3aWxsLCBhYmVyIG5pY2h0IHp3ZWkgb2RlciBtZWhyLgorV2lyZCBlcyBub2V0aWcsIE1pdGdsaWVkZXIgYXVzIGVpbmVyIFJlaWhlIGluIGVpbmUgYW5kZXJlIHp1IHZlcnNjaGllYmVuLAord2VyZGVuIE1pdGdsaWVkZXIgdm9tIEFuZmFuZyBkZXMgQXJyYXlzIG5hY2ggdm9ybmUgdmVyc2Nob2JlbiAoYW4gZGFzIEVuZGUKK2RlcyBkYXZvcmxpZWdlbmRlbiBBcnJheXMpIGJ6dy4gTWl0Z2xpZWRlciB2b20gRW5kZSBkZXMgQXJyYXlzIG5hY2ggaGludGVuCisoYW4gZGVuIEFuZmFuZyBkZXMgZGFoaW50ZXJsaWVnZW5kZW4gQXJyYXlzKS4gRGFkdXJjaCB3ZXJkZW4gaW1tZXIgZGllCitNaXRnbGllZGVyIG1pdCBkZW0gc3RhZXJrc3RlbiBEcmFuZyBuYWNoIHZvcm5lIGFuIGRpZSBGcm9udCBnZXNjaGlja3QgOi0pCisKK1dlbm4gamVtYW5kIGRpZSBSZWloZSB3ZWNoc2VsdCB1bmQgZGFiZWkgZGllIE1pbmltYWxhbmZvcmRlcnVuZyBkZXIgUXVlbGxyZWloZQordW50ZXJzY2hyaXR0ZW4gb2RlciBkaWUgTWF4aW1hbGFuZm9yZGVydW5nIGRlciBaaWVscmVpaGUgdWViZXJzY2hyaXR0ZW4gd2lyZCwKK3dpcmQgbWl0IEN5Y2xlUm93cygpIHJvdGllcnQuIEtvbW10IGVpbiBuZXVlcyBNaXRnbGllZCBoaW56dSB1bmQgZGllCitNYXhpbWFsYW5mb3JkZXJ1bmcgc2VpbmVyIGdld3VlbnNjaHRlbiBSZWloZSB3dWVyZGUgdWViZXJzY2hyaXR0ZW4sIHdpcmQKK2luIEFkZFRvUm93KCkgenVuYWVjaHN0IHZlcnN1Y2h0IGVpbiBNaXRnbGllZCBlaW5lIFJlaWhlIHZvcnp1c2NoaWViZW4sIGZhbGxzCitkYSBub2NoIFBsYXR6IGlzdCwgc29uc3QgZWluZSBSZWloZSB6dXJ1ZWNrLCBmYWxscyBkYSBub2NoIFBsYXR6IGlzdCAoZGllCitBbnphaGwgZGVyIE1pdGdsaWVkZXIgYWxzbyA8IGZvcm1heCBpc3QpLiBXaXJkIGVpbiBNaXRnbGllZCBlbnRmZXJudCBvZGVyCitnZXdhbHRzYW0gZW50ZmVybnQgdW5kIHd1ZXJkZSBkYWJlaSBkaWUgTWluaW1hbGFuZm9yZGVydW5nIHNlaW5lciBSZWloZQordW50ZXJzY2hyaXR0ZW4sIHdpcmQgaW4gUmVtb3ZlRnJvbVJvdygpIHZlcnN1Y2h0LCBlaW4gTWl0Z2xpZWQgYXVzIGRlcgorbmFjaGZvbGdlbmRlbiBSZWloZSBuYWNoIHZvcm5lIHp1IGhvbGVuLCBmYWxscyBkb3J0IFVlYmVyc2NodXNzIHZvcmhhbmRlbiBpc3QKKyhpbiBkZXIgbmFjaGZvbGdlbmRlbiBSZWloZSBhbHNvIG1laHIgTWl0Z2xpZWRlciBhbHMgZm9ybWluIHNpbmQpLCBzb25zdCBhdXMKK2RlciB2b3JhbmdlaGVuZGVuIFJlaWhlLCBmYWxscyBkb3J0IFVlYmVyc2NodXNzIGlzdC4KKworU29sbHRlbiBkaWVzZSBVbW9yZG51bmdlbiBuaWNodCBhdXNyZWljaGVuIGRpZSBGb3JtYXRpb24gaW4gZGVyCitURUFNQVVGU1RFTExVTkcgZWluenVoYWx0ZW4sIHdpcmQgZGllIEZvcm1hdGlvbiBtaXQgTWFrZUZvcm1hdGlvbigpIGVyend1bmdlbi4KK0RpZXMgd2lyZCBpbiB6d2VpIER1cmNobGFldWZlbiBlcnJlaWNodC4gRGVyIGVyc3RlIER1cmNobGF1ZiB3aXJkIHZvbiB2b3JuZQorbmFjaCBoaW50ZW4gZHVyY2hnZWZ1ZWhydC4gSXN0IGRhcyBNYXhpbXVtIGVpbmVyIFJlaWhlIHVlYmVyc2Nocml0dGVuLCB3ZXJkZW4KK3NvdmllbGUgTWl0Z2xpZWRlciBuYWNoIHZvcm5lIGdlc2Nob2JlbiB3aWUgaW4gZGVyIGRhdm9ybGllZ2VuZGVuIFJlaWhlIGZyZWllCitQbGFldHplIHNpbmQgdW5kIGRpZSByZXN0bGljaGVuIHVlYmVyc2NodWVzc2lnZW4gTWl0Z2xpZWRlciBuYWNoIGhpbnRlbi4gU29sbHRlCitkYXMgTWluaW11bSBlaW5lciBSZWloZSB1bnRlcnNjaHJpdHRlbiBzZWluLCB3ZXJkZW4gc292aWVsZSBNaXRnbGllZGVyIGF1cyBkZW4KK25hY2hmb2xnZW5kZW4gUmVpaGVuIGhlcmdlaG9sdCwgd2llIHp1bSBFcnJlaWNoZW4gZGVzIE1pbmltdW1zIG5vZXRpZyBpc3QuIERlcgorendlaXRlIER1cmNobGF1ZiB3aXJkIHZvbiBoaW50ZW4gbmFjaCB2b3JuZSBhdXNnZWZ1ZWhydC4gRmFsbHMgZGFzIE1pbmltdW0KK2VpbmVyIFJlaWhlIHVudGVyc2Nocml0dGVuIHdpcmQsIHdlcmRlbiBNaXRnbGllZGVyIGF1cyBkZW4gZGF2b3JsaWVnZW5kZW4KK1JlaWhlbiBnZWhvbHQgc293ZWl0IG5vZXRpZywgd2VubiBqZWRvY2ggVWViZXJzY2h1c3Mgdm9yaGFuZGVuIGlzdCwgd2lyZAorZGllc2VyIG5hY2ggdm9ybmUgZ2VzY2hvYmVuLgorCitCRUlTUElFTDoKKworRm9ybWF0aW9uIDMtNiAyLTIgMS0yIDAtNiAxLTEgKGJsb2Vkc2lubmlnZSBGb3JtYXRpb24gOy0pCisKKzEuIER1cmNobGF1ZiAodm9ybmUgYmVnaW5uZW5kKToKKworICAgMSAxIDYgMSAwCisgICA8LS0tLSAgICAgKE1pbmltdW0gUmVpaGUgMSB1bnRlcnNjaHJpdHRlbikKKyAgIDMgMCA1IDEgMAorICAgICA8LS0gICAgIChNaW5pbXVtIFJlaWhlIDIgdW50ZXJzY2hyaXR0ZW4pCisgICAzIDIgMyAxIDAKKyAgICAgICAtLT4gICAoTWF4aW11bSBSZWloZSAzIHVlYmVyc2Nocml0dGVuKQorICAgMyAyIDIgMiAwCisKKzIuIER1cmNobGF1ZiAoaGludGVuIGJlZ2lubmVuZCk6CisKKyAgIDMgMiAyIDIgMAorICAgICAgICAgLS0+IChNaW5pbXVtIFJlaWhlIDUgdW50ZXJzY2hyaXR0ZW4pCisgICAzIDIgMiAxIDEKKworRXJnZWJuaXMgZW50c3ByaWNodCBkZXIgZ2V3dWVuc2NodGVuIEZvcm1hdGlvbi4gRXJtaXR0bHVuZyBkZXIgUkFVTWF1ZnN0ZWxsdW5nOgorCisgICAyIDAgMiAxIDEgKEFud2VzZW5kZSBhdXMgZGVyIHZvcmFuZ2VnYW5nZW5lbiBURUFNYXVmc3RlbGx1bmcpCisgICA8LS0tLQorICAgMyAwIDEgMSAxCisgICAgIDwtLS0tCisgICAzIDIgMCAwIDEKKyAgICAgICA8LS0tLQorICAgMyAyIDEgMCAwCisKK0VyZ2VibmlzIGVyZnVlbGx0IE1pbmltYWxhbmZvcmRlcnVuZ2VuIHp1bWluZGVzdCB2b3JuZSwgTWF4aW1hbGFuZm9yZGVydW5nZW4KK2tvZW5uZW4gbmljaHQgdWViZXJzY2hyaXR0ZW4gd2VyZGVuLCB3ZWlsIGRpZSBSYXVtYXVmc3RlbGx1bmcgaG9lY2hzdGVucworc292aWVsZSBNaXRnbGllZGVyIHdpZSBkaWUgVGVhbWF1ZnN0ZWxsdW5nIGhhdC4KKworCitBYmFyYmVpdHVuZyBkZXMgQW5ncmlmZnNiZWZlaGxzIHVuZCBWZXJ0ZWlsdW5nIGRlciBCZWdydWVzc3VuZ3NzY2hsYWVnZQorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KK0RhcyBHcnVuZHByaW56aXAgaXN0IGZvbGdlbmRlczoKK1dlbm4gZGFzIGdhbnplIFRlYW0gYmV3ZWd0IHdpcmQsIHdlcmRlbiBkaWUgQmVncnVlc3N1bmdzc2NobGFlZ2UgdW50ZXIKK1ZvcmJlaGFsdCB3ZWdnZWxhc3Nlbi4gU29iYWxkIGFsbGUgVGVhbW1pdGdsaWVkZXIgYmV3ZWd0IHd1cmRlbiwgbWFjaHQKK2plZGVzIE1vbnN0ZXIsIGRhcyBub2NoIGVpbmVuIEJlZ3J1ZXNzdW5nc3NjaGxhZyBhdXNmdWVocmVuIG11c3MsIGVpbmVuCitTY2hsYWcgYXVmIEVJTiBUZWFtbWl0Z2xpZWQgZGFzIGltIE5haGthbXBmIGVycmVpY2hiYXIgaXN0IHVuZCBkZXIgVm9yYmVoYWx0Cit3aXJkIGZ1ZXIgYWxsZSBNaXRnbGllZGVyIGF1ZmdlaG9iZW4uIFdlbm4gZWluIFRlYW1taXRnbGllZCB2ZXJzdWNodAorc2ljaCB6dSBiZXdlZ2VuIHVuZCBub2NoIGVpbiBCZWdydWVzc3VuZ3NzY2hsYWcgdW50ZXIgVm9yYmVoYWx0IGZlaGx0LAord2lyZCBkaWVzZXIgbm9jaCB2b3IgZGVyIEJld2VndW5nIG5hY2hnZWhvbHQuCisKKworU0lFSEUgQVVDSDoKKyAgICAgICAgVWViZXJzaWNodDogdGVhbWthbXBmCisgICAgICAgIFByb3BlcnRpZXM6IFBfVEVBTSwgUF9BU1NPQ19NRU1CRVJTLCBQX1RFQU1fQVRUQUNLX0NNRCwKKyAgICAgICAgICAgICAgICAgICAgUF9URUFNX0FVVE9GT0xMT1csIFBfVEVBTV9DT0xPUlMsIFBfVEVBTV9MRUFERVIsCisgICAgICAgICAgICAgICAgICAgIFBfVEVBTV9ORVdNRU1CRVIsIFBfVEVBTV9XQU5URURfUk9XLCBQX1RFQU1fV0lNUFlfUk9XCisgICAgICAgIEJld2VndW5nOiAgIElzVGVhbU1vdmUsIFRlYW1GbGVlCisgICAgICAgIE1pdGdsaWVkZXI6IElzVGVhbUxlYWRlciwgVGVhbU1lbWJlcnMKKyAgICAgICAgS2FtcGY6ICAgICAgQXNzb2NNZW1iZXIsIERlQXNzb2NNZW1iZXIsIEluc2VydEVuZW15VGVhbSwKKyAgICAgICAgICAgICAgICAgICAgU2VsZWN0TmVhckVuZW15LCBTZWxlY3RGYXJFbmVteQorICAgICAgICBQb3NpdGlvbmVuOiBQcmVzZW50UG9zaXRpb24sIFByZXNlbnRSb3dzLCBQcmVzZW50RW5lbXlSb3dzLAorICAgICAgICAgICAgICAgICAgICBQcmVzZW50VGVhbVBvc2l0aW9uLCBTd2FwUm93cworICAgICAgICBTb25zdGlnZXM6ICBUZWFtUHJlZml4CisKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KK0xhc3QgbW9kaWZpZWQ6IDE2LTA4LTIwMTAsIEdhYnlsb24KZGlmZiAtLWdpdCBhL2RvYy93aXovdGVjaG5pa2VuIGIvZG9jL3dpei90ZWNobmlrZW4KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNWRlZmQ1OQotLS0gL2Rldi9udWxsCisrKyBiL2RvYy93aXovdGVjaG5pa2VuCkBAIC0wLDAgKzEsMTExIEBACisqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisqIERpZXNlciBUZXh0IGlzdCB2ZXJhbHRldC4gRGllIFRlY2huaWtlbiB3ZXJkZW4gdm9uIGRlciBNdWRsaWIgbmljaHQgICAgICAqCisqIGF1c2dld2VydGV0IHVuZCBtb21lbnRhbiBhdWNoIHZvbiBrZWluZXIgR2lsZGUgKEF1c25haG1lOiBkaWUgVGFuamlhbiAgICAqCisqIHplaWd0IHNpZSBhbiwgdHV0IGFiZXIgbml4IGRhbWl0LiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqCisqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgICAgICAgICAgICAgVGVjaG5pa2VuLCBtaXQgZGVuZW4gV2FmZmVuIGVpbmdlc2V0enQgd2VyZGVuIGtvZW5uZW4KKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworVFFfVEhSQVNIIC0gIlNjaGxhZ3RlY2huaWsiCisKKyAgICBEaWUgdm9tIFZlcnN0YWVuZG5pcyBoZXIgZWluZmFjaHN0ZSBUZWNobmlrOiBNYW4gbmVobWUgc2ljaCBlaW5lbgorICAgIEdlZ2Vuc3RhbmQsICBkZXIgZ3Jvc3MgZ2VudWcgaXN0IHVuZCBoYWxid2VncyAgYnJhdWNoYmFyZSAgRGljaHRlIAorICAgIGJlc2l0enQgLSBhbHNvIG5pY2h0IGdlcmFkZSBmZWRlcmxlaWNodCAgZnVlciBzZWluZSBHcm9lc3NlIGlzdCAtIAorICAgIHVuZCBoYXVlIGRyYXVmLiAgRWdhbCBvYiBIZW5rZXJzYXh0LCAgU3RvY2ssICBTdHVobCwgIEJpZXJmbGFzY2hlIAorICAgIChnYW56KSwgS251ZXBwZWwsIEtldWxlIG9kZXIgQnJhdHBmYW5uZSwgIGRhcyB1bmQgYWVobmxpY2hlcyBzaW5kIAorICAgIGJyYXVjaGJhcmUgICdXYWZmZW4nLCAgdW0gbWl0IGRpZXNlciBUZWNobmlrIEVyZm9sZyB6dSBoYWJlbi4gIEVzIAorICAgIGlzdCBlaW5lIHNjaGxhZ2VuZGUgQmV3ZWd1bmcsICBhbHNvIGRhcyBnZXdvbGx0ZSBzY2h3dW5naGFmdGUgWnUtCisgICAgc2FtbWVuZnVlaHJlbiB6d2VpZXIgS29lcnBlciwgZnVlciBnZXdvZWhubGljaCBXYWZmZSB1bmQgR2VnbmVyLgorCisKK1RRX1RIUlVTVCAtICJTdG9zc3RlY2huaWsiCisKKyAgICBBdWNoIGRpZXNlIFRlY2huaWsgZXJmcmV1dCBzaWNoIHp1bWluZGVzdCBpbiBLbmVpcGVuc2NobGFlZ2VyZWllbgorICAgIGdyb3NzZXIgQmVsaWVidGhlaXQ6IERhcyBTdG9zc2VuLiAgTWl0IGVpbmVtIHZvcnp1Z3N3ZWlzZSBzcGl0emVuCisgICAgR2VnZW5zdGFuZCB3aWUgU3BlZXIsIERvbGNoLCBCaWVyZmxhc2NoZSAoemVyYnJvY2hlbikgb2RlciBIZWxsZS0KKyAgICBiYXJkZSAgd2lyZCBkZW0gR2VnbmVyIGVpbiBMb2NoIGluIGRlbiBMZWliICBnZXN0b3NzZW4sICBpbSBGYWxsZSAKKyAgICBlaW5lcyAgIHN0dW1wZmVuIEdlZ2Vuc3RhbmRlcyB3aWUgei5CLiAgZWluZW0gS2FtcGZzdG9jayBvZGVyIGRlbSAKKyAgICBlaWdlbmVuICBaZWlnZWZpbmdlciBvZGVyIEtub2VjaGVsIHppZWx0IG1hbiBhdWYgVml0YWxwdW5rdGUgb2RlcgorICAgIFdlaWNodGVpbGUgdW5kIGVyemllbHQgYXVjaCBkYW1pdCBiZWVpbmRydWNrZW5kZSBFcmdlYm5pc3NlLiAgRGFzCisgICAgR2V3aWNodCBkZXIgV2FmZmUgaXN0ICB3ZW5pZ2VyIHZvbiBCZWRldXR1bmcsICBkYSAgZGVyIEFrdGV1ciBiZWkgCisgICAgZWluZW0ga29ycmVrdCBhdXNnZWZ1ZWhydGVtIHNlaW5lIGVpZ2VuZSBNYXNzZSBtaXQgZWluc2V0enQuCisKKworVFFfU1RST0tFIC0gIlN0cmVpY2h0ZWNobmlrIgorCisgICAgRWluIGV0d2FzIGVpZ2Vud2lsbGlnIGFubXV0ZW5kZXIgQmVncmlmZiwgIGFiZXIgYmVpIGdlbmF1ZXJlciBCZS0KKyAgICB0cmFjaHR1bmcgaGF0ICBkaWVzZSBUZWNobmlrIHRhdHNhZWNobGljaCBldHdhcyBtaXQgU3RyZWljaGVsbiB6dQorICAgIHR1bjogIERpZSB3aWNodGlnc3RlIEtvbXBvbmVudGUgZGVyIEJld2VndW5nIGZ1ZWhydCBtZWhyIG9kZXIgd2UtCisgICAgbmlnZXIgYW0gIEdlZ25lciBfZW50bGFuZ18gdW5kIG5pY2h0IGF1ZiBpaG4genUuICBNYW4gc3RlbGxlIHNpY2ggCisgICAgZWluIFNjaHdlcnQgdm9yLCBkYXMgZ2VzY2htZWlkaWcgZHVyY2ggZGllIEtlaGxlIGVpbmVzIE9ya3MgZ2xlaS0KKyAgICB0ZXQgIHVuZCBlaW5lIE1lbmdlIEJsdXQgIGZyZWlzZXR6dCBvZGVyIGVpbiBQZXJnYW1lbnRibGF0dCwgIGRhcworICAgIG1hbiBhdXMgZGVyIEhhbmQgZ2V6b2dlbiBiZWtvbW10ICAodW5kIGViZW5mYWxscyBlaW5lIE1lbmdlICBCbHV0CisgICAgZnJlaXNldHp0KS4gIEluIGRlbiBhbGxlcm1laXN0ZW4gRmFlbGxlbiBpc3QgYWxzbyBlaW5lIG1vZWdsaWNoc3QKKyAgICBzY2hhcmZlIFNjaG5laWRlIGltIFNwaWVsIHVuZCwgYXVjaCB3ZW5uIHNjaG1lcnpoYWZ0ZSBFcmZhaHJ1bmdlbgorICAgIG1pdCAgUGFyZ2FtZW50a2FudGVuIGdlbGVnZW50bGljaCBnZWdlbnRlaWxpZ2VzICB2ZXJtdXRlbiBsYXNzZW4sIAorICAgIGplIHNjaGFlcmZlciBkaWUgU2NobmVpZGUsIGRlc3RvIHdlbmlnZXIgRHJ1Y2sgaW4gUmljaHR1bmcgZmVpbmQtCisgICAgbGljaGVuICBaaWVsa29lcnBlciAgbXVzcyBmdWVyICBlaW5lbiAgImR1cmNoc2NobmVpZGVuZGVuIEVyZm9sZyIgCisgICAgYXVzZ2V1ZWJ0IHdlcmRlbi4KKworCitUUV9XSElQIC0gIlBlaXRzY2h0ZWNobmlrIgorCisgICAgVW50ZXIgZGVyIFBlaXRzY2h0ZWNobmlrIHdpcmQgbnVuIGFsbGVzIHp1c2FtbWVuZ2VmYXNzdCwgIHdhcyBkZW4KKyAgICBVbWdhbmcgbWl0IGJld2VnbGljaGVuIEVsZW1lbnRlbiBhbiBkZXIgV2FmZmUgYmV0cmlmZnQuICBFZ2FsLCBvYgorICAgIFBlaXRzY2hlIGEgbGEgR2VvcmdlIEx1Y2FzLCBuZXVuc2Nod2FlbnppZ2UgS2F0emUsIE1hbnJpa2ktR3VzYXJpCisgICAgKGVpbmUgaGFsYm1ldGVyIGxhbmdlIEtldHRlIG1pdCBHZXdpY2h0ZW4gYW4gZGVuIEVuZGVuKSwgZWluLSBiaXMKKyAgICBkcmVpa29lcGZpZ2VtICBiZWtldHRldGVuIE1vcmdlbnN0ZXJuIG9kZXIgZ2FyIERyZXNjaGZsZWdlbCwgIHNpZSAKKyAgICBzaW5kIHp1bWluZGVzdHRlaWx3ZWlzZSBzZWhyIHVudGVyc2NoaWVkbGljaCBrb256aXBpZXJ0IChzbyBmZWhsdAorICAgIGRlciAgUGVpdHNjaGUgYW0gYWV1c3NlcmVuIEVuZGUgZGFzIEdld2ljaHQsICBzbyBkYXNzIGplbmVzIGR1cmNoCisgICAgZWluZSBnZWdlbmxhZXVmaWdlIEJld2VndW5nIGJlc2NobGV1bmlndCB3ZXJkZW4gbXVzcyksIGhhYmVuIGFiZXIKKyAgICBlaW5lcyBnZW1laW5zYW06IERlciBTY2hhZGVuIHdpcmQgZHVyY2ggZWluIHVlYmVyIGRpZSBub3JtYWxlIEJlLQorICAgIHdlZ3VuZyBkZXMgS2FlbXBmZXJzICBoaW5hdXMgYmVzY2hsZXVuaWd0ZXMgVGVpbCBkZXIgV2FmZmUgdmVydXItCisgICAgc2FjaHQuIER1cmNoIGplbmUgQmV3ZWdsaWNoa2VpdCBkZXIgIFdhZmZlIHdpcmQgZWluIHNlaHIgIGdyb3NzZXMgCisgICAgTWFzcyBhbiBLb29yZGluYXRpb25zdmVybW9lZ2VuIHZvbSBLYWVtcGZlciBhYnZlcmxhbmd0LgorCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK1Zlcm1pc2NodGVzCisKKyAgICAtIFdhZmZlbiBrb2VubmVuICBzaWNoIGZ1ZXIgbWVocmVyZSAgVGVjaG5pa2VuIGVpZ25lbi4gIE1pdCBlaW5lbQorICAgICAgS2F0YW5hLCBkZW0gU2Nod2VydCBkZXIgU2FtdXJhaSwgYmVpc3BpZWxzd2Vpc2Uga2FubiBtYW4gaW4gZGllCisgICAgICB1bmdlc2NodWV0enRlbiBQYXJ0aWVuIGRlcyBHZWduZXJzIHN0ZWNoZW4sICBkZW0gR2VnbmVyIG1pdCBkZXIgCisgICAgICBTdHJlaWNodGVjaG5payB0aWVmZSBTY2huaXR0ZSBpbiBkaWUgVW50ZXJzZWl0ZW4gZGVyIEFybWUgIChlaW4KKyAgICAgIGR1cmNoIHR5cGlzY2hlIFNhbXVyYWlydWVzdHVuZ2VuIHNjaGxlY2h0IGdlc2NodWV0enRlciBCZXJlaWNoKQorICAgICAgenVmdWVnZW4sIHVuZCBtaXQgZGVyIGJlcnVlaG10ZW4gaGFsYmVuIEtvZXJwZXJkcmVodW5nIGRlbSBpbi0KKyAgICAgIHp3aXNjaGVuIHRhdW1lbG5kZW0gS29udHJhaGVudGVuIGRlbiBLb3BmIGFic2NobGFnZW4uIAorCisgICAgLSBXYWZmZW4ga29lbm5lbiBzaWNoLCBvYndvaGwgdm9uIGRlciBnbGVpY2hlbiBHYXR0dW5nLCBmdWVyIHZlci0KKyAgICAgIHNjaGllZGVuZSBUZWNobmlrZW4gZWlnbmVuLiAgRWluIHNwaXR6ZXIgRG9sY2ggbWFnIGVpbmUgc3R1bXBmZQorICAgICAgS2xpbmdlIGhhYmVuICB1bmQgbnVyIGZ1ZXIgYXVzc2NobGllc3NsaWNoIHN0b3NzZW5kZSAgUHJha3Rpa2VuCisgICAgICB6dSBnZWJyYXVjaGVuIHp1IHNlaW4sIHdhZWhyZW5kIGVpbiBhYmdlcnVuZGV0ZXMgS3VlY2hlbm1lc3NlciwKKyAgICAgIGViZW5mYWxscyB2b20gVHlwICJaeW4iLCBmdWVyIGthbnRpZ2VzIFp1c2NobGFnZW4gdW5kIGV2ZW50dWVsbAorICAgICAgYXVjaCBmdWVyIHNjaG5pdHRpZ2UgU3RyZWljaHRlY2huaWtlbiBoZXJoYWx0ZW4ga2Fubi4KKworICAgIC0gSmUgbmFjaCBad2VjayB1bmQgS29lbm5lbiB3aXJkIGRpZSBiZXN0ZSB6dSB2ZXJ3ZW5kZW5kZSBUZWNobmlrIAorICAgICAgdmFyaWllcmVuOiAgV2VubiBlcyB1bSBhcm1lIEdyYXNoYWxtZSBnZWh0LCAgd2lyZCBkaWUgU2Vuc2UgbWl0IAorICAgICAgc2NobmVpZGVuZGVuIEJld2VndW5nZW4gZ2VmdWVocnQgIChzY2hvZW4gaW4gZGVyICBNaWxrYS1XZXJidW5nIAorICAgICAgenUgc2VoZW4sICBmdWVyIGRpZSwgZGllIGVzIHBhcnRvdXQgbmljaHQgZ2xhdWJlbiB3b2xsZW4pLCAgYmVpIAorICAgICAgZWluZXIgQmF1ZXJucmV2b2x0ZSBtYWcgZGFzIGd1dGUgU3R1ZWNrIGplZG9jaCBhdWNoIG1pdCBhbmRlcmVuIAorICAgICAgVGVjaG5pa2VuIGVmZmVrdGl2ICh1bmQgdmllbGxlaWNodCBzb2dhciBlZmZla3RpdmVyKSBlaW5nZXNldHp0IAorICAgICAgd2VyZGVuLCB3ZXIgd2Vpc3MsIHdlciB3YXIgc2Nob24gZGFiZWkuLi4/ICBTZWxic3QgYmVpIG5vcm1hbGVuCisgICAgICBXYWZmZW4gd2llIFNjaHdlcnRlcm4gIHd1ZXJkZSBlaW4gVW5nZXVlYnRlciAgc2VsdGVuIHZlcnN1Y2hlbiwgIAorICAgICAgbWl0IFN0cmVpY2h0ZWNobmlrZW4gU2NoYWRlbiB6dSB2ZXJ1cnNhY2hlbiwgZGVubiBkYXMgWnVzdGVjaGVuIAorICAgICAgaXN0IHNjaGxpY2h0IGVpbmZhY2hlci4KKworICAgIC0gRXMgd2lyZCBpbW1lciAgYmVzb25kZXJlIFdhZmZlbiBnZWJlbi4gIFNvICBzaW5kIGJlaXNwaWVsc3dlaXNlCisgICAgICBkYXMgWndlaWxpbGllbiB1bmQgIGRpZSBIZWxsZWJhcmRlICBiZWlkZSBkZW0gVHlwICJLenJvayIgKGZ1ZXIKKyAgICAgIG5pY2h0LVRydmVzOiBTdGFuZ2Vud2FmZmVuKSB6dXp1b3JkbmVuLCBkaWUgVGVjaG5pa2VuICB3ZWljaGVuLAorICAgICAgYmVkaW5ndCAgZHVyY2ggZGllIFZpZWxzZWl0aWdrZWl0ICBkZXIgV2FmZmVuLCAgamVkb2NoIHZvbiAgZGVyCisgICAgICBOb3JtIGFiOiBEYXMgWndlaWxpbGllbiwgYW4gamVkZW0gIEVuZGUgZWluZSBsYW5nZSB1bmQgIHNjaGFyZmUKKyAgICAgIEtsaW5nZSwgIGthbm4gIGViZW5zbyAgdmllbHNlaXRpZyAgZ2VoYW5kaGFidCAgd2VyZGVuICB3aWUgIGVpbiAKKyAgICAgIFNjaHdlcnQsICB3YWVocmVuZCBkaWUgSGVsbGViYXJkZSAoZWluZSBNaXNjaHVuZyBhdXMgIExhbnplIHVuZAorICAgICAgQXh0KSBkdXJjaCBpaHJlIHVuYXVzZ2V3b2dlbmUgR2V3aWNodHN2ZXJ0ZWlsdW5nICB1bmQgZGVtIGRhbWl0CisgICAgICB2ZXJidW5kZW5lbiBQb3RlbnppYWwgYW4gU2Nod3VuZyBzY2hsaWNodHdlZyBESUUgV2FmZmUgZGVyIFdhaGwgCisgICAgICBmdWVyIGZlaWdlIFp3ZXJnZSBpc3Q6ICBTY2h3aW5nZW4gd2llIGVpbmUgZ3Jvc3NlICBBeHQgdW5kICBkZW4gCisgICAgICBHZWduZXIgYXVmIERpc3RhbnogaGFsdGVuIGtvZW5uZW4uICBHdXQsICBkYXNzIGVzIGtlaW5lICBmZWlnZW4gCisgICAgICBad2VyZ2UgZ2lidCA7bykKKworLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorTGFzdCBtb2RpZmllZDogVHVlIEFwciAxMyAxMzowMDowMCAyMDAwIGJ5IEFuYXRvbApkaWZmIC0tZ2l0IGEvZG9jL3dpei90ZXN0c3BpZWxlciBiL2RvYy93aXovdGVzdHNwaWVsZXIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYjdmYzJmOAotLS0gL2Rldi9udWxsCisrKyBiL2RvYy93aXovdGVzdHNwaWVsZXIKQEAgLTAsMCArMSw0MCBAQAorCitUZXN0c3BpZWxlcgorPT09PT09PT09PT0KKworIFRFU1RTUElFTEVSOgorICAgIFRlc3RzcGllbGVyIHNpbmQgWndlaXRjaGFyYWt0ZXJlIHZvbiBNYWdpZXJuLCBkaWUgYXVjaCBnbGVpY2h6ZWl0aWcgbWl0CisgICAgZGVtIE1hZ2llciBlaW5nZWxvZ2d0IHNlaW4gZHVlcmZlbi4gU2llIG11ZXNzZW4gZW50c3ByZWNoZW5kIG1hcmtpZXJ0IHNlaW4KKyAgICAoc2llaGUgdW50ZW4pIHVuZCBkdWVyZmVuIGF1Y2ggcnVoaWcgdm9tIE1hZ2llciBtYW5pcHVsaWVydCB3ZXJkZW4uCisKKyAgICBURVNUU1BJRUxFUiBVTlRFUkxJRUdFTiBWT0xMIERFTiBSRUdFTE4gREVTIE1BR0lFUlZFUlRSQUdTIQorCisgICAgVGVzdHNwaWVsZXIgd2VyZGVuIGhhdXB0c2FlY2hsaWNoIGRhbm4gZ2VicmF1Y2h0LCB3ZW5uIE9iamVrdGUgb2RlcgorICAgIEdlYmlldGUgd2lya2xpY2ggYXVzIFNwaWVsZXJzaWNodCBnZXRlc3RldCB3ZXJkZW4gc29sbGVuIHVuZCBkYXMKKyAgICBBYnNjaGFsdGVuIGRlcyBNYWdpZXJtb2R1cyBkYXp1IG5pY2h0IGF1c3JlaWNodC4gRWluIGFuZGVyZXMgRWluc2F0emdlYmlldAorICAgIGlzdCBkYXMgVGVzdGVuIHZvbiBNZWxkdW5nZW4gb2RlciBBa3Rpb25lbiwgZGllIG5pY2h0IG51ciBkZW4KKyAgICBBdXNmdWVocmVuZGVuIHNlbGJzdCBiZXRyZWZmZW4sIHNvbmRlcm4gei5CLiBhdWNoIHVtc3RlaGVuZGUgUGVyc29uZW4gaW4KKyAgICBlaW5lbSBSYXVtLgorCisgR0lMREVOVEVTVFNQSUVMRVI6CisgICAgU29mZXJuIGVpbmUgR2lsZGUgZGFzIEFubGVnZW4gdm9uIFRlc3RzcGllbGVybiB1bnRlcnN0dWV0enQsIGdpYnQgZXMKKyAgICBlbnRzcHJlY2hlbmRlIEhpbGZlc2VpdGVuIHVudGVyICJoaWxmZSA8Z2lsZGVubmFtZT4udGVzdHNwaWVsZXIiLgorCisgTUFSS0lFUkVOOgorICAgIEVpbiBUZXN0c3BpZWxlciB3aXJkIGR1cmNoIHNldHplbiBkZXIgUHJvcGVydHkgUF9URVNUUExBWUVSIG1hcmtpZXJ0LiBFcworICAgIHJlaWNodCB6d2FyIGF1cywgZGllc2UgUHJvcGVydHkgZWluZmFjaCBhdWYgZWluZW4gV2VydCAhPSAwIHp1IHNldHplbiwKKyAgICBhYmVyIG1hbiBzb2xsdGUgaGllciBsaWViZXIgZGVuIE5hbWVuIGRlcyBNYWdpZXJzIGVpbnRyYWdlbiwgenUgZGVtIGRlcgorICAgIFRlc3RpZSBnZWhvZXJ0LgorCisgICAgRWluaWdlIE1hZ2llciBtYXJraWVyZW4gaWhyZSBUZXN0c3BpZWxlciBuaWNodCwgdW5kIHp3YXIgbWl0IGRlcgorICAgIEJlZ3J1ZW5kdW5nLCBkYXNzIGRhbm4gVG9kZXNtZWxkdW5nZW4gbmljaHQgYXVzZ2VnZWJlbiB3ZXJkZW4uIERhcyBpc3QKKyAgICBhbGxlcmRpbmdzIGtlaW5lIEF1c3JlZGUgbWVociwgZGFzIFRlc3RzcGllbGVyLVRvZGVzbWVsZHVuZ2VuIGF1ZiAtVGRUCisgICAgYXVzZ2VnZWJlbiB3ZXJkZW4uCisgICAgU2luZCBuaWNodG1hcmtpZXJ0ZXIgVGVzdHNwaWVsZXIgZW50c3ByZWNoZW5kIG1hbmlwdWxpZXJ0LCBrb2VubnRlIGVzCisgICAgcGFzc2llcmVuLCBkYXNzIHNpZSB3ZWdlbiBTY2h1bW1lbGVpIGdlbG9lc2NodCB3ZXJkZW4uLi4KKworIFNJRUhFIEFVQ0g6CisgICAgendlaXRzcGllbGVyLCB2ZXJ0cmFnLCBtc2NoYXUsIFBfVEVTVFBMQVlFUgorCisgTEVUWlRFIEFlTkRFUlVORzoKKyAgICAxOS4gTWFlcnogMjAwNCBHbG9pbnNvbgpkaWZmIC0tZ2l0IGEvZG9jL3dpei90b2Rlc2ZhbGxlbiBiL2RvYy93aXovdG9kZXNmYWxsZW4KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNTU4NTAzMgotLS0gL2Rldi9udWxsCisrKyBiL2RvYy93aXovdG9kZXNmYWxsZW4KQEAgLTAsMCArMSwzNTUgQEAKK01hbnBhZ2UgenUgVG9kZXNmYWxsZW4uIFRlY2huaXNjaGVyIExlaXRmYWRlbi4KKworCitEaWVzZSBNYW5wYWdlIHJpY2h0ZXQgc2ljaCBhbiAoSnVuZyltYWdpZXIsIGRpZSBUb2Rlc2ZhbGxlbiBudXR6ZW4gd29sbGVuLAordW0gdmVyc2NoaWVkZW5zdGUgRGluZ2UgaW4gaWhyZW4gR2ViaWV0ZW4gZGFtaXQgenUgZXJyZWljaGVuLiBEYWJlaSBzb2xsIGhpZXIKK25pY2h0IGRpc2t1dGllcnQgd2VyZGVuLCB3byB3ZWxjaGUgQXJ0IHZvbiBUb2Rlc2ZhbGxlIFNpbm4gbWFjaHQgKG9kZXIgYXVjaAorbmljaHQpLCBzb25kZXJuIGVzIHNvbGxlbiB0ZWNobmlzY2hlIEFzcGVrdGUgYmVpIGRlciBQcm9ncmFtbWllcnVuZyBlaW5lcgorc29sY2hlbiAoVG9kZXMpZmFsbGUgYXVmZ2V6ZWlndCB3ZXJkZW4uCisKKworS2FwaXRlbCAxLiBEYXMgVW1mZWxkIGVpbmVyIFRvZGVzZmFsbGUuCisKK0VpbmUgVG9kZXNmYWxsZSBrYW5uIHdpZSBpbiBzcGFldGVyZW4gS2FwaXRlbG4gYmVzY2hyaWViZW4sIGxlaWNodCB1bWdlc2V0enQKK3dlcmRlbi4gRGFtaXQgc2llIHNpY2ggYXVjaCBzbyB2ZXJoYWVsdCB3aWUgc2llIHNvbGwsIHdlcmRlbiBoaWVyIGVpbmlnZQorU2ljaGVyaGVpdHNhc3Bla3RlIGJlaGFuZGVsdCwgZGllIGR1cmNoZ2VnYW5nZW4gd2VyZGVuIHNvbGx0ZW4uCisKKworS2FwaXRlbCAxLjEgV2VyIGhhdCBkaWUgVG9kZXNmYWxsZSBhdXNnZWxvZXN0PworCitEaWUgbWVpc3RlbiBUb2Rlc2ZhbGxlbiB3ZXJkZW4gZHVyY2ggZWluIEtvbW1hbmRvIGF1c2dlbG9lc3QsIHdlbGNoZXMgZGVyCitTcGllbGVyIGF1c2Z1ZWhydC4gWi5CLgorCWRydWVja2UgZ3Jvc3NlbiByb3RlbiBrbm9wZiBtaXQgZGVyIGF1ZnNjaHJpZnQgInRvZGVzZmFsbGUgYXVzbG9lc2VuIgorSW4gZGllc2VtIEZhbGwgZXhpc3RpZXJ0IGluIGRlciBhdWZnZXJ1ZmVuZW4gRnVua3Rpb24gZGllIE1vZWdsaWNoa2VpdCwgdWViZXIKK2RpZSBGdW5rdGlvbiB0aGlzX3BsYXllcigpIGRlbiBha3R1ZWxsICJndWVsdGlnZW4iIFNwaWVsZXIgYXVzenVmaXNjaGVuLgorSGllcmJlaSBpc3QgenUgYmVhY2h0ZW4sIGRhc3MgYXVjaCBOUENzIHZvbiBkaWVzZXIgRnVua3Rpb24genVydWVja2dlZ2ViZW4KK3dlcmRlbiBrb2VubmVuLiBBdWNoIGltIGluaXQoKSBlaW5lcyBSYXVtZXMgd2lyZCBpbiB0aGlzX3BsYXllcigpIGRlciBTcGllbGVyCit6dXJ1ZWNrZ2VnZWJlbi4gSGllcmJlaSBpc3QgamVkb2NoIHp1IGJlYWNodGVuLCBkYXNzIG1hbiBpbW1lciBzY2hhdWVuIHNvbGx0ZSwKK29iIHRoaXNfcGxheWVyKCkgYXVjaCB0YXRzYWVjaGxpY2ggZWluIE9iamVrdCB6dXJ1ZWNrbGllZmVydC4gRGllcyBpc3QKK3dpY2h0aWcsIGRhIGRhcyBpbml0KCkgKG9kZXIgYXVjaCBhbmRlcmUgRnVua3Rpb25lbikgZHVyY2ggR2VnZW5zdGFlbmRlLCB3aWUKK2RlbiBCdW1lcmFuZyBhdXNnZWxvZXN0IHdlcmRlbiBrb2VubmVuLiBJbiBkaWVzZW0gRmFsbCBzdGVodCBpbiB0aGlzX3BsYXllcigpCit1ZWJsaWNoZXJ3ZWlzZSBrZWluIE9iamVrdC4gRGllIFNpY2hlcmhlaXRzYWJmcmFnZSBzb2xsdGUgYWxzbyB3aWUgZm9sZ3QKK2F1c3NlaGVuOgorCisgICAgb2JqZWN0IHNwaWVsZXI7CisgICAgc3BpZWxlciA9IHRoaXNfcGxheWVyKCk7CisgICAgaWYgKHNwaWVsZXIpIC8vIEVpbiBMZWJld2VzZW4/CisgICAgeworICAgICAgLi4uCisgICAgfQorICAgIC8vIGVsc2U6IERpZSBGYWxsZSBuaWNodCBhdXNsb2VzZW4sIGRhIGtlaW4gTGViZXdlc2VuLgorCisKK0thcGl0ZWwgMS4yIFdlciBzb2xsIGRpZSBUb2Rlc2ZhbGxlIG5pY2h0IGF1c2xvZXNlbj8KKworT2Z0IGtvbW10IGVzIHZvciwgZGFzcyBlaW5lIHNjaG9lbmUgVG9kZXNmYWxsZSB2b24gR290dCB1bmQgZGVyIFdlbHQKK2F1c2dlbG9lc3Qgd2lyZC4gTm9ybWFsZXJ3ZWlzZSBtb2VjaHRlIG1hbiBhYmVyIG5pY2h0LCBkYXNzICJHb3R0IiBvZGVyIGFuZGVyZQorYmVzb25kZXJlIFBlcnNvbmVuZ3J1cHBlbiBkaWVzZSBGYWxsZSBhdXNsb2VzZW4uIEluIGRlbiBmb2xnZW5kZW4KK1VudGVya2FwaXRlbG4gd2VyZGVuIEFiZnJhZ2VuIGdlemVpZ3QsIHVtIFBlcnNvbmVuZ3J1cHBlbiBhdXN6dXNjaGxpZXNzZW4uCisKKworS2FwaXRlbCAxLjIuMSBUb2Rlc2ZhbGxlbiwgZGllIG5pY2h0IGF1ZiBHZWlzdGVyIHJlYWdpZXJlbi4KKworVWVibGljaGVyd2Vpc2Ugc29sbGVuIFRvZGVzZmFsbGVuIGJlaSBkZW4gQXVzbG9lc2VybiBTY2hhZGVuIHZlcnVyc2FjaGVuLiBCZWkKK0dlaXN0ZXJuIGxhZXVmdCBkaWVzIGplZG9jaCBpbnMgTGVlcmUuIE1hbiBrb2VubnRlIG51biBhdWYgZGllIElkZWUga29tbWVuLAorYWx0ZXJuYXRpdiBhdWYgR2Vpc3RlciB6dSByZWFnaWVyZW4uCisKKworS2FwaXRlbCAxLjIuMS4xIE5pY2h0IGF1ZiBHZWlzdGVyIHJlYWdpZXJlbi4KKworQW5nZW5vbW1lbiwgbWFuIGhhdCBlaW5lbiBTcGllbGVyIChzaWVoZSBvYmVuKSwgZGVyIGltIEJlZ3JpZmYgaXN0LCBkaWUgRmFsbGUKK2F1c3p1bG9lc2VuLiBNYW4gc29sbHRlIG51biBwcnVlZmVuLCBvYiBlciBlaW4gR2Vpc3QgaXN0LiBGYWxscyBlciBrZWluIEdlaXN0Citpc3QsIGthbm4gbWFuIHdpZSBnZXd1ZW5zY2h0IChUb2Rlc2ZhbGxlKSByZWFnaWVyZW4uIEZhbGxzIG5pY2h0LCBzb2xsdGUgbWFuCitlaW5lIHBhc3NlbmRlIE1lbGR1bmcgYXVzZ2ViZW4uIFouQi4gIkFscyBHZWlzdCBoYXN0IER1IG5pY2h0IGRpZSBub3R3ZW5kaWdlCitLcmFmdCwgZGllc2VuIEtub3BmIHp1IGRydWVja2VuLiIgRGllIHRlY2huaXNjaGUgQWJmcmFnZSwgb2IgZWluIFNwaWVsZXIgZWluCitHZWlzdCBpc3QsIHNpZWh0IHdpZSBmb2xndCBhdXMuCisKKyAgICBpZiAoIXNwaWVsZXItPlF1ZXJ5UHJvcChQX0dIT1NUKSkKKyAgICB7CisgICAgICAgIC8vIGlzdCBfa2Vpbl8gR2Vpc3QsIGFsc28gVG9kZXNmYWxsZS4KKyAgICB9CisgICAgZWxzZQorICAgIHsKKyAgICAgICAgLy8gQWx0ZXJuYXRpdmVyIFRleHQsIGRhIEdlaXN0LgorICAgIH0KKworCitLYXBpdGVsIDEuMi4xLjIgR2Vpc3RlciBlbnRnZWlzdGVybi4KKworRGEgYXVzc2NobGllc3NsaWNoIGRpZSBSYXNzZW5zdGFydHJhZXVtZSBlbnRnZWlzdGVybiBzb2xsZW4sIHd1cmRlIGRpZXNlcgorUHVua3QgaGVyYXVzZ2Vub21tZW4uIEFsc286IEVzIGlzdCB1bmVyd3VlbnNjaHQsIEdlaXN0ZXIgenUgZW50Z2Vpc3Rlcm4sIHVtCitlaW5lIFRvZGVzZmFsbGUga29ycmVrdCBhdXN6dWxvZXNlbi4KKworCitLYXBpdGVsIDEuMi4xLjMgQWx0ZXJuYXRpdmUgZnVlciBHZWlzdGVyLgorCitSb2xsZW5zcGllbHRlY2huaXNjaCBnZXNlaGVuIG1hY2h0IGVzIGluIGRlbiBhbGxlcndlbmlnc3RlbiBGYWVsbGVuIFNpbm4sCithbHRlcm5hdGl2IGF1ZiBlaW5lbiBHZWlzdCB6dSByZWFnaWVyZW4uIERlciBWb2xsc3RhZW5kaWdrZWl0IGhhbGJlciBzZWkgZGllc2UKK0xvZXN1bmcgdHJvdHpkZW0gZXJ3YWVobnQuIEVpbiBQcm9ncmFtbWJlaXNwaWVsIHNvbGx0ZSBvaG5lIGdyb3NzZSBNdWVoZSBkdXJjaAorZGllIHNjaG9uIHZvcmhhbmRlbmVuIEJlaXNwaWVsZSBlcnN0ZWxsdCB3ZXJkZW4ga29lbm5lbi4KKworCitLYXBpdGVsIDEuMi4yIEdhZXN0ZSB1bmQga2xlaW5lIFNwaWVsZXIuCisKK1JvbGxlbnNwaWVsdGVjaG5pc2NoIG1hY2h0IGVzIG9mdCBrZWluZW4gU2lubiwgYXVmIEdhZXN0ZSBvZGVyIGtsZWluZSBTcGllbGVyCithbmRlcnMgenUgcmVhZ2llcmVuLCBhbHMgYXVmICJkZW4gUmVzdCIuIE1vZWNodGUgbWFuIGplZG9jaCBlaW5lbiBiZXNvbmRlcmVuCitTY2h1dHogZnVlciBrbGVpbmUgU3BpZWxlciBlaW5iYXVlbiAoIkR1IGhhc3QgenUgZ3Jvc3NlIEFuZ3N0LCBkaWVzZW4gZ3Jvc3NlbiwKK3JvdGVuIEtub3BmIHp1IGRydWVja2VuLiIpIG9kZXIgbW9lY2h0ZSBtYW4gR2FzdC1TdGVyYmUtVGVzdGVybiBkZW4gSGFobiAKK3p1ZHJlaGVuIChkaWUgV2VpY2hlaWVyISksIHNvIHNpbmQgZm9sZ2VuZGUgQWJmcmFnZW4gdW50ZXIgVW1zdGFlbmRlbgorc2lubnZvbGwuCisKKyAgLy8gR2FzdD8KKyAgaWYgKHNwaWVsZXItPlF1ZXJ5R3Vlc3QoKSkKKyAgeworICAgICAgLy8gSXN0IGVpbiBHYXN0Li4uCisgIH0KKyAgZWxzZQorICB7CisgICAgICAvLyBUb2Rlc2ZhbGxlLiBLZWluIEdhc3QuCisgIH0KKyAgCisgIC8vIEtsZWluZXIgU3BpZWxlcj8KKyAgLy8gSW4gZGllc2VtIEJlaXNwaWVsIEFiZnJhZ2UgZGVzIFNwaWVsZXJsZXZlbHMuCisgIGlmIChzcGllbGVyLT5RdWVyeVByb3AoUF9MRVZFTCkgPCAxMCkKKyAgeworICAgICAgLy8gU3BpZWxlcmxldmVsIDwgMTAgaGFiZW4genV2aWVsIEFuZ3N0LgorICB9CisgIGVsc2UKKyAgeworICAgICAgLy8gU3BpZWxlcmxldmVsID49IDEwIGtvZW5uZW4gaGllciBydWhpZyBkaWUgVG9kZXNmYWxsZSBhdXNsb2VzZW4uCisgIH0KKworCitLYXBpdGVsIDEuMi4zIE1hZ2llcgorCitVZWJsaWNoZXJ3ZWlzZSBzaW5kIE1hZ2llciB1bnN0ZXJibGljaCB1bmQgc29sbCh0KWVuIGF1Y2ggbmljaHQKKyh2ZXJzZWhlbnRsaWNoKSBUb2Rlc2ZhbGxlbiBhdXNsb2VzZW4uIERpZXMgaXN0IHZvciBhbGxlbSBkYW5uIGRlciBGYWxsLCB3ZW5uCisienVmYWVsbGlnIiBpbSBnbGVpY2hlbiBSYXVtIHN0ZWhlbmRlIFNwaWVsZXIgTWVsZHVuZ2VuIGJla29tbWVuIHd1ZXJkZW4gdW5kCitkYWR1cmNoIGdld2FybnQgd2VyZGVuLiBEaWUgdGVjaG5pc2NoZSBVbXNldHp1bmcsIGRhc3MgTWFnaWVyIFRvZGVzZmFsbGVuCituaWNodCBhdXNsb2VzZW4sIHNpZWh0IHdpZSBmb2xndCBhdXMuIERpZSBBYmZyYWdlIGJlcnVlY2tzaWNodGlndAorIm1zY2hhdSBhdXMiLiBEYXMgaGVpc3N0LCBNYWdpZXIga29lbm5lbiBzdGVyYmVuLCB3ZW5uIHNpZSBtc2NoYXUgYXVzIGdlbWFjaHQKK2hhYmVuLgorCisgICAgI2luY2x1ZGUgPHdpemxldmVscy5oPgorCisgICAgaWYoSVNfTEVBUk5FUihzcGllbGVyKSAmJiBzcGllbGVyLT5RdWVyeVByb3AoUF9XQU5UU19UT19MRUFSTikpCisgICAgeworICAgICAgLy8gTWFnaWVyOiBNYW4gc29sbCBpaG0gbWl0dGVpbGVuLCBkYXNzIGVyIGRpZXNlIEFrdGlvbiBhbHMgTWFnaWVyIG5pY2h0CisgICAgICAvLyB0dW4gZGFyZi4KKyAgICB9CisgICAgZWxzZQorICAgIHsKKyAgICAgIC8vIEtlaW4gTWFnaWVyLiA9PiBUb2Rlc2ZhbGxlLgorICAgIH0KKworCitLYXBpdGVsIDEuMyBXaWNodGlnZSBQdW5rdGUgZWluZXIgbmljaHQgc2lubmZyZWllbiBUb2Rlc2ZhbGxlLgorCitFaW5lIFRvZGVzZmFsbGUgaXN0LCB3aWUgaW4gS2FwaXRlbCAyIGdlemVpZ3QsIGVpZ2VudGxpY2ggZWluZSBlaW5mYWNoZSBTYWNoZS4KK0tvbWJpbmllcnQgbWl0IGRlbiBzY2hvbiBnZXplaXRndGVuIFNpY2hlcmhlaXRzYWJmcmFnZW4gaGF0IG1hbiB1ZWJsaWNoZXJ3ZWlzZQorZWluIGd1ZWx0aWdlcyBPcGZlci4gQWxsZ2VtZWluZSBEaW5nZSwgd2llIGJlaXNwaWVsc3dlaXNlICJEYXMgT3BmZXIgc29sbHRlCitlaW4gZW52aXJvbm1lbnQgaGFiZW4iIHdlcmRlbiBoaWVyIHVlYmVyZ2FuZ2VuIHVuZCBudXIgZGllIHdlc2VudGxpY2hlbiBEaW5nZQorZ2VuYW5udCwgZGllIGJlaW0gcG90ZW50aWVsbGVuIFRvZXRlbiBlaW5lcyBTcGllbGVycyB2b24gQmVsYW5nIHNpbmQuCisKKworS2FwaXRlbCAxLjMuMSBXbyBpc3QgZGVyIFNwaWVsZXI/CisKK0dhbnogd2ljaHRpZyBiZWkgVG9kZXNmYWxsZW4gaXN0IGRpZSBGcmFnZSwgd28gc2ljaCBkZXIgU3BpZWxlciBiZWZpbmRldC4KK1dpcmQgZWluZSBUb2Rlc2ZhbGxlIGluIGluaXQoKSBhdXNnZWxvZXN0LCBkYW5uIGJlZmluZGV0IHNpY2ggZGVyIFNwaWVsZXIKK3NjaG9uIGluIGRlbSBlbnRzcHJlY2hlbmRlbiBSYXVtLCBkZXNzZW4gaW5pdCgpIG51biBhdXNnZWZ1ZWhydCB3aXJkLiBEYXMKK2JlZGV1dGV0LCB3ZW5uIGRlciBTcGllbGVyIHN0aXJidCwgc2luZCBzZWluZSBTYWNoZW4genVuYWVjaHN0IGVpbm1hbCBpbiBkZW0KK2JldHJlZmZlbmRlbiBSYXVtLiBJbiBzZWx0ZW5lbiBGYWVsbGVuIHNwaWVsdCBlcyB3aXJrbGljaCBlaW5lIFJvbGxlLCB3byBzaWNoCitkZXIgU3BpZWxlciBiZWZpbmRldCB1bmQgZXIgaGF0IGVpZ2VudGxpY2ggaW1tZXIgZWluIGVudmlyb25tZW50LCBpbiBkYXMgc2VpbmUKK0xlaWNoZSBkYW5uIGtvbW10LiBEZW5ub2NoIHNvbGx0ZSBtYW4gYmVpIFRvZGVzZmFsbGVuIHRlc3Rlbiwgd28gc2ljaCBkZXIKK1NwaWVsZXIgYmVmaW5kZXQuIFdlbm4gZGVyIFNwaWVsZXIgZGllIEZhbGxlIGltIFZvcnJhdXMgb2RlciB2b24gd29hbmRlcnMKK2F1c2xvZXNlbiBrYW5uLCBkYW5uIG1hY2h0IGVzIG5pY2h0IGltbWVyIFNpbm4sIGRpZSBGYWxsZSB0YXRzYWVjaGxpY2gKK2F1c3p1bG9lc2VuIG9kZXIgZGVtIFNwaWVsZXIgZGVuIEVmZmVrdCAienV6dW11dGVuIi4KK0VpbmUgZWluZmFjaGUgQWJmcmFnZSwgb2Igc2ljaCBkZXIgU3BpZWxlciBpbSBnbGVpY2hlbiBSYXVtIGJlZmluZGV0LCBzaWVodCBzbworYXVzOgorCisgICAgaWYgKGVudmlyb25tZW50KHNwaWVsZXIpICYmIChlbnZpcm9ubWVudChzcGllbGVyKSA9PSB0aGlzX29iamVjdCgpKSkKKyAgICB7CisgICAgICAgIC8vIFNwaWVsZXIgaGF0IGVpbiBlbnZpcm9ubWVudCB1bmQgZGFzIGVudmlyb25tZW50IGlzdCBkaWVzZXIgUmF1bS4KKyAgICB9CisgICAgCisKK0thcGl0ZWwgMS4zLjIgV2VyIHRvZXRldCBkZW4gU3BpZWxlcj8KKworVWVibGljaGVyd2Vpc2UgdG9ldGV0IG1hbiBlaW5lbiBTcGllbGVyIG1pdCBkZW4gaW4gS2FwaXRlbCAyIGdlbmFubnRlbgorTW9lZ2xpY2hrZWl0ZW4uIEluIGRpZXNlbiBNb2VnbGljaGtlaXRlbiBpc3QgZGFzIHRvZXRlbmRlIE9iamVrdCBkZXIgUmF1bS4KK0RhIGFiZXIgbnVuIGRlciBSYXVtIGtlaW5lbiBOYW1lbiBoYXQsIG11c3MgbWFuIGRpZXNlbSBSYXVtIGVpbmlnZSBQcm9wZXJ0aWVzCitzZXR6ZW4sIGRpZSB1ZWJsaWNoZXJ3ZWlzZSBlcnN0IGVpbm1hbCBudXIgTlBDcyBoYWJlbi4gRGllIFByb3BlcnRpZXMgcmVnZWxuLAorIndlciIgaW4gS2FtcGZtZWxkdW5nZW4sIEFuZ3JpZmZlbiB1bmQgVG9kZXNtZWxkdW5nZW4gYWxzIEFuZ3JlaWZlciBvZGVyCitLaWxsZXIgc3RlaHQuIFNldHp0IG1hbiBkaWVzZSBXZXJ0ZSBkaXJla3Qgdm9yIGRlciBBdXNmdWVocnVuZyBlaW5lcgorVG9kZXNmYWxsZSwgZGFubiBrYW5uIG1hbiBtZWhyZXJlIFRvZGVzZmFsbGVuIGluIGVpbmVtIFJhdW0gbWl0IHZlcnNjaGllZGVuZW4KK01lbGR1bmdlbiB2ZXJzZWhlbi4KKworICAgIFNldFByb3AoUF9OQU1FLCAiRWluIGdsZWlzc2VuZGVyIEZldWVyYmFsbCIpOyAvLyBEZXIgQW5ncmVpZmVyLU5hbWUKKyAgICBTZXRQcm9wKFBfS0lMTF9OQU1FLCAiRWluIGdsZWlzc2VuZGVyIEZldWVyYmFsbCIpOworICAgICAgICAvLyBOYW1lIGZ1ZXIgZGVuIFRvZGVza2FuYWwuCisKKworS2FwaXRlbCAxLjQgR2ltbWlja3MKKworRGVyIFZvbGxzdGFlbmRpZ2tlaXQgaGFsYmVyIHNvbGwgbm9jaCBlcndhZWhudCB3ZXJkZW4sIGRhc3MgbWFuIGluIGRlcgorUHJvcGVydHkgUF9FTkVNWV9ERUFUSF9TRVFVRU5DRSBkYXMgRmlsZSBlaW5lciAoZWlnZW5lbikgVG9kZXNzZXF1ZW56IGFibGVnZW4KK2thbm4uCisKKworS2FwaXRlbCAyIFRlY2huaXNjaGUgVW1zZXR6dW5nIHZvbiBUb2Rlc2ZhbGxlbi4KKworRGVuIFRvZCBkdXJjaCBvZGVyIGRlbiBBbmdyaWZmIGF1ZiBlaW5lbiBTcGllbGVyIG1pdHRlbHMgZWluZXIgVG9kZXNmYWxsZSBrYW5uCittYW4gYXVmIHZlcnNjaGllZGVuZSBXZWlzZSBiZXdlcmtzdGVsbGlnZW4uIERpZSB3aWNodGlnc3RlbiBNb2VnbGljaGtlaXRlbgord2VyZGVuIGluIGRlbiBmb2xnZW5kZW4gVW50ZXJrYXBpdGVsbiBrdXJ6IGVybGFldXRlcnQuIEVzIHdpcmQgYXVzc2VyZGVtIGF1ZgorZWluaWdlIHRlY2huaXNjaGUgRmVpbmhlaXRlbiBlaW5nZWdhbmdlbiwgZGllIHp1IGJlYWNodGVuIHNpbmQuCisKKworS2FwaXRlbCAyLjEgVG9kIGR1cmNoIGRpZSgpCisKK0RpZSBlaW5mYWNoc3RlIE1vZWdsaWNoa2VpdCwgZWluZW4gU3BpZWxlciBzaWNoZXIgc3RlcmJlbiB6dSBsYXNzZW4sIGlzdCBkZXIKK0F1ZnJ1ZiB2b24gZGllKCkuIERpZSBzcGFldGVyIGdlbmFubnRlbiBNb2VnbGljaGtlaXRlbiBtaXQgQXVzbmFobWUgZGVzCitGYWtldG9kcyBiZXdpcmtlbiBsZXR6dGVuZGxpY2ggYXVjaCBlaW5lbiBBdWZydWYgdm9uIGRpZSgpLCBzb2xsdGUgZGVyIFNwaWVsZXIKK3NpY2ggbmljaHQgYXVzcmVpY2hlbmQgZGFnZWdlbiBnZXNjaHVldHp0IGhhYmVuLiBCZWkgZGVtIGRpcmVrdGVuIEF1ZnJ1ZiBrYW5uCitzaWNoIGRlciBTcGllbGVyIG5pY2h0IGRhZ2VnZW4gd2VocmVuLiAoQXVzbmFobWU6IEdlaXN0IHNlaW4sIHNpZWhlIG9iZW4uKQorRGllIHRlY2huaXNjaGUgVW1zZXR6dW5nIHNpZWh0IHdpZSBmb2xndCBhdXMuIEV2ZW50dWVsbGUgUGFyYW1ldGVyIGZ1ZXIgZGllKCkKK3NpbmQgZGVyIG1hbnBhZ2UgZnVlciBkaWUoKSB6dSBlbnRuZWhtZW4uCisKKyAgICBzcGllbGVyLT5kaWUoKTsgLy8gSmV0enQgaXN0IGRlciBTcGllbGVyIHRvdC4KKworCitLYXBpdGVsIDIuMiBUb2Rlc2ZhbGxlIG1pdCBkb19kYW1hZ2UoKQorCitEaWUgendlaXRlIEZvcm0gZGVyIFRvZGVzZmFsbGUgaXN0IG5pY2h0IGdhbnogc28gYWdncmVzc2l2LCB3aWUgZGllIGVyc3RlLgorSGllciB3aXJkIGRlbSBTcGllbGVyIGVpbmUgZmVzdGUgb2RlciB6dWZhZWxsaWdlIFphaGwgYW4gU2NoYWRlbnNwdW5rdGVuIAorenVnZWZ1ZWd0LiBEZXIgZXJsaXR0ZW5lIFNjaGFkZW4gaXN0IGRhYmVpIG5pY2h0IHZvbiBSdWVzdHVuZyBvZGVyIHNvbnN0aWdlbQorU2NodXR6IGFiaGFlbmdpZywgc29uZGVybiBkZXIgU2NoYWRlbiBiZXRyYWVndCBkZW0gdWViZXJnZWJlbmVuIFdlcnQuIElzdCBkZXIKK3VlYmVyZ2ViZW5lIFdlcnQgaG9laGVyIGFscyBkaWUgWmFobCBkZXIgTGViZW5zcHVua3RlIGRlcyBTcGllbGVycywgc28gc3RpcmJ0CitkZXIgU3BpZWxlci4gTmFjaGxlc2VuIGthbm4gbWFuIGRpZXMgaW4gZGVyIG1hbnBhZ2UgenUgZG9fZGFtYWdlKCkuCitEaWVzZSBGb3JtIGRlciBUb2Rlc2ZhbGxlIGlzdCB2ZXJtdXRsaWNoIGRpZSBhbSBoYWV1Zmlnc3RlbiB2ZXJicmVpdGV0ZSwgZGEKK2RlciBNYWdpZXIgYW0gZWluZmFjaHN0ZW4gZGllIEtvbnNlcXVlbnplbiB1ZWJlcmJsaWNrZW4ga2Fubiwgb2huZSBkZW4gU3BpZWxlcgorendpbmdlbmQgenUgdG9ldGVuLiBXaWNodGlnIGJlaSBkaWVzZXIgVW1zZXR6dW5nIGlzdCwgZGFzcyBkZXIgU3BpZWxlciBrZWluZQorQW5ncmlmZnNtZWxkdW5nIG9kZXIgZGVyZ2xlaWNoZW4gc2llaHQuIEVyIGJla29tbXQgaG9lY2hzdGVuZmFsbHMgbWl0LCBkYXNzIGVyCit1ZWJlcmhhdXB0IFNjaGFkZW4gZXJoYWx0ZW4gaGF0LiBEYWhlciBzb2xsdGUgdm9yIGRlbSBadWZ1ZWdlbiBkZXMgU2NoYWRlbnMKK2VpbmUgTWVsZHVuZyBhdXNnZWdlYmVuIHdlcmRlbiwgZGllIGRlbSBTcGllbGVyIGFuemVpZ3QsIHdlc2hhbGIgZXIgU2NoYWRlbgorYmVrYW0uIChCc3AuICJFaW4gRmV1ZXJiYWxsIHJhc3QgYXVmIERpY2ggenUgdW5kIHRyaWZmdCBEaWNoLiIpCitEaWUgdGVjaG5pc2NoZSBVbXNldHp1bmcgc2llaHQgd2llIGZvbGd0IGF1czoKKworICAgIHRlbGxfb2JqZWN0KHNwaWVsZXIsICJFaW4gRmV1ZXJiYWxsIHRyaWZmdCBEaWNoIHZvbiBoaW50ZW4uXG4iKTsKKyAgICBzcGllbGVyLT5kb19kYW1hZ2UoMTAsIHRoaXNfb2JqZWN0KCkpOworICAgICAgICAgICAgICAgICAgICAgICAgIC8vIFNwaWVsZXIgZXJoYWVsdCBnZW5hdSAxMCBTY2hhZGVuc3B1bmt0ZSB1bmQKKyAgICAgICAgICAgICAgICAgICAgICAgICAvLyBzdGlyYnQsIHdlbm4gZXIgZGFkdXJjaCB1bnRlciAwIEhQIGtvbW10LgorCitLYXBpdGVsIDIuMi4xIEFuZ2VwYXNzdGUgVG9kZXNmYWxsZSBtaXQgZG9fZGFtYWdlKCkKKworTW9lY2h0ZSBtYW4sIGRhc3MgZGllIFN0YWVya2UgZGVyIFRvZGVzZmFsbGUgYWJoYWVuZ2lnIHZvbSBTcGllbGVyIGlzdCwgZGFubgora2FubiBtYW4gZGVuIGluIGRvX2RhbWFnZSgpIHVlYmVyZ2ViZW5lbiBTY2hhZGVuIGFiaGFlbmdpZyB2b20gU3BpZWxlciBtYWNoZW4uCitEaWVzIGlzdCBpbiBHZWJpZXRlbiBzaW5udm9sbCwgaW4gZGVuZW4gQW5mYWVuZ2VyIHVuZCBncm9lc3NlcmUgU3BpZWxlcgorZ2xlaWNoZXJtYXNzZW4gZ2Vmb3JkZXJ0IHNlaW4gc29sbGVuICh6LkIuIFF1ZXN0KS4gRm9sZ2VuZGVzIEJlaXNwaWVsIHplaWd0LAord2llIG1hbiBlaW5lIFRvZGVzZmFsbGUgbWFjaHQsIGRpZSBkZW0gU3BpZWxlciBldHdhIDEvNCBzZWluZXIgbWF4aW1hbGVuIEhQCithYnppZWh0LgorICAgIAorICAgIHNwaWVsZXItPmRvX2RhbWFnZShzcGllbGVyLT5RdWVyeVByb3AoUF9NQVhfSFApIC8gNCk7CisKKworS2FwaXRlbCAyLjMgVG9kZXNmYWxsZSBtaXQgcmVkdWNlX2hpdF9wb2ludAorCitNaXR0ZWxzIHJlZHVjZV9oaXRfcG9pbnQoKSBpc3QgZXMgbW9lZ2xpY2gsIGVpbmUgbmljaHQgdG9lZGxpY2hlICJUb2RlcyItRmFsbGUKK3p1IGVudHdpY2tlbG4uIERpZXMga2FubiBnZW51dHp0IHdlcmRlbiwgd2VubiBtYW4gZWluZSBlaWdlbnRsaWNoIHRvZWRsaWNoZQorRmFsbGUgbWFjaGVuIHdpbGwsIGRpZSBBdXN3aXJrdW5nZW4gZWluZXMgVG9kZXMgZGVtIFNwaWVsZXIgZ2VnZW51ZWJlciBhYmVyIHp1CithZ2dyZXNzaXYgd2FlcmVuLiBIaWVyYmVpIGlzdCB6dSBiZWFjaHRlbiwgZGFzcyBlaW4gbmVnYXRpdmVyIFdlcnQgZWluZQorSGVpbHVuZyBiZXdpcmtlbiB3dWVyZGUuIERhaGVyIGlzdCB6dXZvciBlaW5lIFNpY2hlcmhlaXRzYWJmcmFnZSB6dSBtYWNoZW4uCitXaWUgYmVpIGRvX2RhbWFnZSgpIGlzdCBlaW5lIE1lbGR1bmcgYXVzenVnZWJlbiwgZGEgcmVkdWNlX2hpdF9wb2ludCBlaW5lCitzb2xjaGUgbmljaHQgZ2VuZXJpZXJ0LiBBbGxlcyB6dXNhbW1lbiBzYWVoZSBkZXIgUGFydCB3aWUgZm9sZ3QgYXVzOgorCisgICAgaW50IHNjaGFkZW47CisgICAgdGVsbF9vYmplY3Qoc3BpZWxlciwgIkVpbiBGZXVlcmJhbGwgdHJpZmZ0IERpY2guXG4iKTsKKyAgICAvLyBIaWVyIGRlbiBTY2hhZGVuIGJlcmVjaG5lbjsKKyAgICAvLyBaLkIuIHNjaGFkZW4gPSAzOworICAgIGlmIChzY2hhZGVuIDwgMSkgc2NoYWRlbiA9IDE7IC8vIEVzIHNvbGwgbWluZGVzdGVucyAxIFNjaGFkZW5zcHVua3QgZ2ViZW4hCisgICAgc3BpZWxlci0+cmVkdWNlX2hpdF9wb2ludChzY2hhZGVuKTsKKworCitLYXBpdGVsIDIuNCBGYWtldG9kZQorCitGYWtldG9kZSBzaW5kIGtlaW5lIFRvZGUgaW0gZWlnZW50bGljaGVuIFNpbm4sIGRhIGRlciBTcGllbGVyIHZvbiBkZW4KK21laXN0ZW4gbmVnYXRpdmVuIEF1c3dpcmt1bmdlbiB2ZXJzY2hvbnQgYmxlaWJ0LiBFaW4gRmFrZXRvZCBpc3QgaW0gR3J1bmRlCitrZWluZSBrb21wbGl6aWVydGUgU2FjaGUgdW5kIGVpZ25ldCBzaWNoIGhlcnZvcnJhZ2VuZCBmdWVyIEFuZmFlbmdlcmdlYmlldGUuCitWZXJzY2hpZWRlbmVuIEF1c3ByYWVndW5nZW4gKEJzcC4gR2lidCBlcyBlaW5lIExlaWNoZSBtaXQgZGVyIEF1c3J1ZXN0dW5nIGRlcworU3BpZWxlcnMgb2RlciBiZWhhZWx0IGVyIGRpZSBBdXNydWVzdHVuZz8pIGdlbWVpbiBpc3QgZGllIFRhdHNhY2hlLCBkYXNzIGRlcgorU3BpZWxlciBhdWdlbnNjaGVpbmxpY2ggZ2VzdG9yYmVuIGlzdCwgamVkb2NoIGtlaW4gZGllKCkgYXVmZ2VydWZlbiB3aXJkLiBFcword2VyZGVuIHRvZGVzYmVkaW5ndCBhbHNvIGtlaW5lIEF0dHJpYnV0ZSBhYmdlem9nZW4sIGRpZSBFcmZhaHJ1bmdzcHVua3RlCitibGVpYmVuIHVuYW5nZXRhc3RldCB1c3csIHVzZi4KK0RpZSB0ZWNobmlzY2hlIFVtc2V0enVuZyBzaWVodCB3aWUgZm9sZ3QgYXVzLiBEYWJlaSBpc3QgenUgYmVhY2h0ZW4sIGRhc3MgZGVyCitTcGllbGVyIEdlaXN0IHdlcmRlbiBtdXNzLiBadXZvciBzb2xsdGUgd2llIGJlaSBkZW4gdm9yaGVyZ2VoZW5kZW4gTWV0aG9kZW4KK2RlciBLaWxsLU5hbWUgZXRjLiBnZXNldHp0IHdlcmRlbi4KKworICAgIHNwaWVsZXItPlNldFByb3AoUF9HSE9TVCwxKTsKKyAgICBjbG9uZV9vYmplY3QoIi9yb29tL2RlYXRoL2RlYXRoX21hcmsiKS0+bW92ZShzcGllbGVyKTsKKworCitLYXBpdGVsIDIuNC4xIEJlZGluZ3RlIEZha2V0b2RlLgorCitNYW4ga2FubiBkaWUgVGVjaG5payB2b24gS2FwaXRlbCAyLjMgbWl0IGRlbiBGYWtldG9kZW4ga29tYmluaWVyZW4sIGluZGVtIG1hbgordGVzdGV0LCBvYiBkZXIgU3BpZWxlciBhdWYgb2RlciB1bnRlciAwIExlYmVuc3B1bmt0ZSBrb21tZW4gd3VlcmRlLCB3ZW5uIG1hbgorYW5zdGF0dCByZWR1Y2VfaGl0cG9pbnQgZG9fZGFtYWdlKCkgbWFjaGVuIHd1ZXJkZSB1bmQgZGFubiB6dXNhZXR6bGljaCB6dW0KK0FiemllaGVuIGRlciBMUCBub2NoIGVpbmVuIEZha2V0b2QgYXVzZnVlaHJ0LiBEYWJlaSBzaW5kIHp3ZWkgRGluZ2UgenUKK2JlYWNodGVuOgorRXJzdGVucyBzb2xsdGUgbWFuIGtlaW5lIHp3ZWkgTWVsZHVuZ2VuIGF1c2dlYmVuLCBhbHNvIGRlciBTcGllbGVyIHNvbGx0ZQora2VpbmUgendlaSBGZXVlcmJhZWxsZSBhdWYgc2ljaCB6dWZsaWVnZW4gc2VoZW4sIG9id29obCBudXIgZWluZXIgZGEgaXN0LgorWndlaXRlbnMgc29sbHRlIG1hbiBuaWNodCB2ZXJnZXNzZW4sIGRlbSBTcGllbGVyIGRlbm5vY2ggZGllIExQIGFienV6aWVoZW4sCit3ZWlsIGRlciBTcGllbGVyIGFuc29uc3RlbiBuYWNoIGRlbSBFbnRnZWlzdGVybiBhbnN0YXR0IDEgTFAgbm9jaCBzb3ZpZWxlIGhhdCwKK3dpZSB2b3IgZGVtIEZldWVyYmFsbC1BbmdyaWZmLgorRGllIHRlY2huaXNjaGUgVW1zZXR6dW5nIGRpZXNlciBLb21iaW5hdGlvbiB3aXJkIGFuIGRpZXNlciBTdGVsbGUgbmljaHQgbmFlaGVyCitlcmxhZXV0ZXJ0LCBkYSBkYXMgVm9yZ2VoZW4gYXVzIGRlbiB2b3JpZ2VuIEthcGl0ZWxuIGtsYXIgaXN0LgorCisKK0thcGl0ZWwgMi41IEFuZ3JpZmYgbWl0dGVscyBEZWZlbmQoKQorCitFaW5lIHJlYWxpc3Rpc2NoZSwgd2VubiBhdWNoIHRlaWx3ZWlzZSBoZWlrbGUgTW9lZ2xpY2hrZWl0IGZ1ZXIgZWluZQorVG9kZXNmYWxsZSBpc3QgZGVyIEF1ZnJ1ZiBkZXIgRGVmZW5kKCktRnVua3Rpb24gZGVzIFNwaWVsZXJzLiBEZXIgVm9ydGVpbAordm9uIERlZmVuZCBpc3QsIGRhc3MgbWFuIHVudGVyIEFuZ2FiZSBkZXIga29ycmVrdGVuIFBhcmFtZXRlciBkZW4gU2NodXR6IGRlcgorUnVlc3R1bmdlbiBlaW5lcyBTcGllbGVycyBvZGVyIGF1Y2ggZGllIEdpbGRlbmZhZWhpZ2tlaXRlbiBiZXJ1ZWNrc2ljaHRpZ3QKK3dlcmRlbi4gRGFyYXVzIGZvbGd0LCBkYXNzIGRlciBhbHMgQmVpc3BpZWwgdmVyd2VuZGV0ZSBGZXVlcmJhbGwgdm9uIGVpbmVtIHZvcgorRmV1ZXIgc2NodWV0emVuZGVuIE9iamVrdCBhYmdlc2Nod2FlY2h0IHd1ZXJkZS4gQW53ZW5kdW5nc3RlY2huaXNjaCBnaWJ0IGVzCitlcnN0IGVpbm1hbCBrZWluZSBQcm9ibGVtZSwgc29mZXJuIGVpbmlnZSB3aWNodGlnZSBQdW5rdGUgYmVhY2h0ZXQgd2VyZGVuLCBhdWYKK2RpZSBoaWVyIG51biBlaW5nZWdhbmdlbiB3aXJkLiBFaW56aWdlciBOYWNodGVpbCBiZXN0ZWh0IG51ciBpbiBkZXIgbWFuZ2VsbmRlbgorRXJmYWhydW5nIGRlciBlaW56dXRyYWdlbmRlbiBTY2hhZGVuc3dlcnRlLCBkYSBkaWVzZSBuaWNodCAxOjEgYW4gZGllCitTY2hhZGVuc3B1bmt0ZSBnZWtvcHBlbHQgc2luZCwgZGllIGFuIGRlbiBTcGllbGVyIHdlaXRlcmdlcmVpY2h0IHdlcmRlbi4KK0RpZSB0ZWNobmlzY2hlIFVtc2V0enVuZyBmdWVyIGRlbiBBbmdyaWZmIGVpbmVzIFNwaWVsZXJzIGR1cmNoIGVpbmUgVG9kZXNmYWxsZQordWViZXIgRGVmZW5kIHNpZWh0IHdpZSBmb2xndCBhdXM6CisKKyAgICAjaW5jbHVkZSA8bmV3X3NraWxscy5oPgorCisgICAgaW50IHNjaGFkZW47CisgICAgc2NoYWRlbiA9IDUwMCtyYW5kb20oNTAwKTsgLy8gRGllc2UgV2VydGUgbWFjaGVuIHUuVS4gdmllbCBTY2hhZGVuLgorCisgICAgc3BpZWxlci0+RGVmZW5kKAorICAgICAgICAxMDAsCisgICAgICAgIERUX0ZJUkUsCisgICAgICAgIChbCisgICAgICAgICAgICBTUF9TSE9XX0RBTUFHRTowLAorICAgICAgICAgICAgU1BfUEhZU0lDQUxfQVRUQUNLOjEKKyAgICAgICAgXSksCisgICAgICAgIHRoaXNfb2JqZWN0KCkKKyAgICApOworCitXaWNodGlnIHNpbmQgaGllcmJlaSBmb2xnZW5kZSBQdW5rdGU6CisgICAgMS4gTWFuIHNvbGx0ZSBTUF9TSE9XX0RBTUFHRTowIGltIE1hcHBpbmcgYW5nZWJlbiwgd2VubiBtYW4gZGllIE1lbGR1bmcKKyAgICAgICB6LkIuICJFaW4gRmV1ZXJiYWxsIHRyaWZmdCBEaWNoIHZvbiBoaW50ZW4uXG4iIHNlbGJzdCBhdXNnZWJlbiB3aWxsLgorICAgICAgIFR1dCBtYW4gZGllcyBuaWNodCwgbXVzcyBpbSBSYXVtIHp1c2FldHpsaWNoIFBfR0VOREVSLCBQX05BTUUsIGV0Yy4KKyAgICAgICBhdWYgZWluZW4gc2lubnZvbGxlbiBXZXJ0IGdlc2V0enQgd2VyZGVuLCBiZWlzcGllbHN3ZWlzZSBQX0dFTkRFUiBhdWYKKyAgICAgICBNQUxFIHVuZCBQX05BTUUgYXVmICJGZXVlcmJhbGwiLgorICAgIDIuIFNQX1BIWVNJQ0FMX0FUVEFDSzoxIHNvbGx0ZSBnZXNldHp0IHdlcmRlbiwgd2VubiBkZXMgU3BpZWxlcnMgUnVlc3R1bmcKKyAgICAgICBmdWVyIGRpZSBWZXJ0ZWlkaWd1bmcgYmVydWVja3NpY2h0aWd0IHdlcmRlbiBzb2xsLiBHZW5hdWVyZXMgZmluZGV0IG1hbgorICAgICAgIGF1ZiBkZXIgTWFucGFnZSB2b24gRGVmZW5kKCkuCisgICAgMy4gdGhpc19vYmplY3QoKSBzb2xsdGUgaW1tZXIgYW5nZWdlYmVuIHdlcmRlbiwgZGFtaXQgZGVyIFJhdW0gZGVyCisgICAgICAgQW5ncmVpZmVyIGlzdCwgYW5zdGF0dCBlaW4gbmljaHQgbmFlaGVyIGJlc3RpbW10ZXMgT2JqZWt0LiBEaWVzIGtvZW5udGUKKyAgICAgICBkYW5uIGJlaXNwaWVsc3dlaXNlIGRlciBTcGllbGVyIHNlbGJzdCBzZWluLCB3YXMgZGF6dSBmdWVocnQsIGRhc3MgaW0KKyAgICAgICBGYWxsZSBlaW5lcyBUb2RlcyBkZXIgU3BpZWxlciBhbHMgS2lsbGVyIHZvbiBzaWNoIHNlbGJzdCBnZW5hbm50IHdpcmQsCisgICAgICAgYW5zdGF0dCAiRWluIEZldWVyYmFsbCIuCisKKworCisKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KK0xhc3QgbW9kaWZpZWQ6IFdlZCBGZWIgMTMgMTc6MDA6NTQgMjAwMiBieSBCYW1iaQpkaWZmIC0tZ2l0IGEvZG9jL3dpei90b2Rlc3NlcXVlbnogYi9kb2Mvd2l6L3RvZGVzc2VxdWVuegpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4wYWIwM2U4Ci0tLSAvZGV2L251bGwKKysrIGIvZG9jL3dpei90b2Rlc3NlcXVlbnoKQEAgLTAsMCArMSwxMTUgQEAKK0VpbmUgVG9kZXNzZXF1ZW56IGlzdCBlaW5lIGdhbnogbm9ybWFsZSBUZXh0ZGF0ZWkgbWl0IGZvbGdlbmRlbSBBdWZiYXU6CitJbiBkZXIgZXJzdGVuIFplaWxlIHN0ZWh0IGRpZSBEYXVlciBkZXIgVG9kZXNzZXF1ZW56IGluIGhlYXJ0X2JlYXQtRWluaGVpdGVuLgorRXMgZm9sZ2VuIEVpbnRyYWVnZSBkZXIgRm9ybSA8emVpdD46PHRleHQ+LiA8emVpdD4gaXN0IGRhYmVpIGRlciBaZWl0cHVua3QKKyhlYmVuZmFsbHMgaW4gaGVhcnRfYmVhdC1FaW5oZWl0ZW4pLCBpbiBkZW5lbiBkZXIgVGV4dCA8dGV4dD4gYXVzZ2VnZWJlbgord2VyZGVuIHNvbGwuIDx0ZXh0PiBrYW5uIHNpY2ggZGFiZWkgYXVjaCB1ZWJlciBtZWhyZXJlIFplaWxlbiBlcnN0cmVja2VuOworTGVlcnplaWxlbiB3ZXJkZW4gMToxIHVlYmVybm9tbWVuLgorCitCZWlzcGllbDoKKy0tLS0gPHNuaXA+IC0tLS0KKzcwCisxOlZvciBEaXIgdHV0IHNpY2ggZWluIHRpZWZlciwgc2Nod2FyemVyIEFiZ3J1bmQgYXVmLiBFaW4gc3RhcmtlciBTb2cKK3ZlcnN1Y2h0LCBEaWNoIGhpbmVpbnp1emllaGVuLgorCisyOkR1IGJhbGFuY2llcnN0IG11ZWhzYW0gYXVmIGRlbSBSYW5kIGRlcyBBYmdydW5kZXMsIGRvY2ggZGFubiB3aXJkIGRlcgorU29nIHp1IHN0YXJrIQorCiszOkR1IGZhZWxsc3QhIFVtIERpY2ggaGVydW0gaXN0IG51ciBub2NoIHRpZWZlIFNjaHdhZXJ6ZS4KKy4uLiB1c3cuCistLS0tIDxzbmlwPiAtLS0KKworVW0gZGllIFRvZGVzc2VxdWVueiBlaW4gd2VuaWcgYWJ3ZWNoc2x1bmdzcmVpY2hlciB6dSBnZXN0YWx0ZW4sIGthbm4gbWFuCitlaW5pZ2UgUGxhdHpoYWx0ZXIgdmVyd2VuZGVuLiBNYW4ga2FubiBNZWxkdW5nZW4gZWluYmF1ZW4sIGRpZSBhYmhhZW5pZyBzaW5kCisKKy0gdm9tIEdlc2NobGVjaHQ6IGRpZXMgZ2VodCBtaXQgPEc+bVRleHQ6d1RleHQ8L0c+LiBtVGV4dCB3aXJkIGJlaSBtYWVubmxpY2hlbgorICBUb3RlbiBlaW5nZWJhdXQsIHdUZXh0IGJlaSB3ZWlibGljaGVuLiBNYW4ga2FubiBhdWNoIGVpbmVuIGRlciBUZXh0ZSB3ZWctCisgIGxhc3NlbjsgZGVyIERvcHBlbHB1bmt0IGlzdCBqZWRvY2ggUGZsaWNodCEKKyAgQmVpc3BpZWw6CisgICAgNTpEZXIgVG9kIHNhZ3Q6IEtPTU0gTUlUIE1JUiwgU1RFUkJMSUNIRTxHPlI6PC9HPiEKKyAgICA2OkRlciBUb2Qgc2FndDogV0FSIFdPSEwgTklYLCA8Rz5CVUVSU0NIQ0hFTjpGUk9MTEVJTkNIRU48L0c+IQorCistIHZvbiBkZXIgUmFzc2U6IERpZXMgZ2VodCBhZWhubGljaCB3aWUgYmVpbSBHZXNjaGxlY2h0LCB1bmQgendhciBpbiBkZXIgRm9ybQorICA8Uj5kVGV4dHxtVGV4dHxlVGV4dHx6VGV4dHxoVGV4dHxmVGV4dDwvUj4uCisgIG1UZXh0IHdpcmQgYmVpIE1lbnNjaGVuIGF1c2dlZ2ViZW4sIGVUZXh0IGJlaSBFbGZlbiwgelRleHQgYmVpIFp3ZXJnZW4sCisgIGhUZXh0IGJlaSBIb2JiaXRzLCBmVGV4dCBiZWkgRmVsaW5lbiB1bmQgZFRleHQgYmVpIGFsbGVuIGFuZGVyZW4KKyAgKHpCLiBNYWdpZXIgbWl0IHNlbGJzdCBnZXNldHp0ZW4gUmFzc2VuKS4KKworICBXaWUgYmVpIGdlc2NobGVjaHRzYWJoYWVuZ2lnZW4gTWVsZHVuZ2VuIGtvZW5uZW4gYXVjaCBoaWVyIGVpbnplbG5lIFRleHRlCisgIHdlZ2dlbGFzc2VuIHdlcmRlbi4KKworICBCZWlzcGllbDoKKyAgICAxOkRlciBUb2Qgc2FndDogU0NIT0VOIEdFU1RPUkJFTiwgPFI+RlJFTURMSU5HfE1FTlNDSExFSU58U1BJVFpPSFJ8RFJFSUtBRVNFSE9DSDwvUj4/CisgICAgMjo8Uj58fERlciBUb2Qgc2FndDogRUxGRU4gV0FSRU4gU0NIT04gTEFOR0UgTklDSFQgTUVIUiBISUVSIXw8L1I+CisKKy0gdm9tIENoYXJha3RlcjogRGVyIENoYXJha3RlciBlaW5lcyBTcGllbGVycyBrYW5uIHNpY2ggaW0gQmVyZWljaCB2b24gLTEwMDAKKyAgKHNhdGFuaXNjaCkgYmlzICsxMDAwIChoZWlsaWcpIGJld2VnZW4uIFp3aXNjaGVuIDxBPiB1bmQgPC9BPiBrYW5uIG1hbgorICBjaGFyYWt0ZXJhYmhhZW5naWdlIE1lbGR1bmdlbiBlaW5iYXVlbi4gRGllIEFic3R1ZnVuZ2VuIHdlcmRlbiBkYWJlaSBpbiBkZXIKKyAgRm9ybSAjIzxVbnRlcmdyZW56ZT4jIyBhbmdlZ2ViZW4sIHdvYmVpIDxVbnRlcmdyZW56ZT4gZGllIHVudGVyZSBHcmVuemUgZGVzCisgIENoYXJha3RlcndlcnRlcyBpc3QsIGFiIGRlbSBkaWUgTWVsZHVuZyBhdXNnZWdlYmVuIHdpcmQuCisgIERlciBUZXh0IGRpcmVrdCBuYWNoIDxBPiBlbnRzcHJpY2h0IGVpbmVyIFVudGVyZ3JlbnplIHZvbiAtMTAwMCwgZGllCisgIHdlaXRlcmVuIFRleHRlIHNvbGx0ZW4gaW4gYXVmc3RlaWdlbmRlciBSZWloZW5mb2xnZSBhbmdlZ2ViZW4gd2VyZGVuLgorICBCZWlzcGllbDoKKyAgICA3OjxBPgorICAgIERlciBUb2Qgc2FndDogQUgsIEVJTiBTQVRBTklTVCEKKyAgICAjIy05OTkjIworICAgIERlciBUb2Qgc2FndDogU08gRUlOPEc+OkU8L0c+IFNDSExJTU1FPEc+Ujo8L0c+IQorICAgICMjMCMjCisgICAgRGVyIFRvZCBzYWd0OiBFSU4gVFlQSVNDSEVTIFVORU5UU0NISUVERU4uLi4KKyAgICAjIzEjIworICAgIERlciBUb2Qgc2FndDogU08gRUlOPEc+OkU8L0c+IExJRUJFPEc+Ujo8L0c+IQorICAgICMjMTAwMCMjCisgICAgRGVyIFRvZCBzYWd0OiBPSCwgR1VURU4gVEFHLCBFVUVSIEhFSUxJR0tFSVQhCisgICAgPC9BPgorCistIHZvbiBkZXIgWmFobCBkZXIgVG9kZTogRGllcyBnZWh0IGFlaGxpY2ggd2llIGJlaW0gQ2hhcmFrdGVyLCBhbGxlcmRpbmdzCisgIGlzdCBkZXIgUGxhdHpoYWx0ZXIgaGllciA8RD4uLi48L0Q+LiBEaWUgVW50ZXJncmVuemUgZnVlciBkZW4gZXJzdGVuIFRleHQKKyAgaXN0IDEgKHNvbnN0IHdhZXJlIGRlciBTcGllbGVyIGphIG5pY2h0IGhpZXIgOykKKyAgQmVpc3BpZWw6CisgICAgODo8RD4KKyAgICBEZXIgVG9kIHNhZ3Q6IFNDSE9FTiwgRElDSCBBVUNIIE1BTCBISUVSIFpVIFNFSEVOIQorICAgICMjMiMjCisgICAgRGVyIFRvZCBzYWd0OiBNQUNIIERJUiBOSVggRFJBVVMsIERBUyBQQVNTSUVSVCBTQ0hPTiBNQUwhCisgICAgIyMyMCMjCisgICAgRGVyIFRvZCBzYWd0OiBXQVMsIERVIFNDSE9OIFdJRURFUj8KKyAgICAjIzUwIyMKKyAgICBEZXIgVG9kIHNhZ3Q6IE5PQ0ggRUlOTUFMLCBVTkQgSUNIIEJFSEFMVEUgRElDSCBFTkRHVUVMVElHIEhJRVIhCisgICAgPC9EPgorCistIHZvbSBMZXZlbDogQXVjaCBoaWVyIGVyZm9sZ3QgZGllIEF1c3dlcnR1bmcgd2llIGJlaW0gQ2hhcmFrdGVyLCBhbGxlcmRpbmdzCisgIHp3aXNjaGVuIGRlbiBQbGF0emhhbHRlcm4gPEw+IHVuZCA8L0w+LiBEaWUgVW50ZXJncmVuemUgZnVlciBkZW4gZXJzdGVuCisgIFRleHQgaXN0IDAuCisgIEJlaXNwaWVsOgorICAgIDg6PEw+CisgICAgRGVyIFRvZCBzYWd0OiBNQUNIIERJUiBOSUNIVFMgRFJBVVMuCisgICAgIyM1IyMKKyAgICBEZXIgVG9kIHNhZ3Q6IFZJRUxMRUlDSFQgU09MTFRFU1QgRFUgREFTIE5BRUNIU1RFIE1BTCBCRVNTRVIgQVVGUEFTU0VOIQorICAgICMjMTUjIworICAgIERlciBUb2Qgc2FndDogU08gV0lSU1QgRFUgTklFIFNFSEVSIE9ERVIgTUFHSUVSIQorICAgICMjMjAjIworICAgIERlciBUb2Qgc2FndDogTlVSIEVJTiBUT1RFUiBTRUhFUiBJU1QgRUlOIEdVVEVSIFNFSEVSISA7KQorICAgIDwvTD4KKworLSB2b20gWnVmYWxsOiBVbmQgbm9jaCBtZWhyIEFid2VjaHNsdW5nLi4uIDspIERlciBBdWZiYXUgaXN0IGFlaG5saWNoIGRlbSBkZXIKKyAgdm9yaGVyaWdlbi4gWndpc2NoZW4gZGVuIFBsYXR6aGFsdGVybiA8Wj13ZXJ0PiB1bmQgPC9aPiBzdGVoZW4gTWVsZHVuZ2VuIGRlcgorICAjI3gjI3RleHQsIHdvYmVpIGRpZSB4IGRpZSByZWxhdGl2ZSBXYWhyc2NoZWlubGljaGtlaXQgKGJlem9nZW4gYXVmIHdlcnQpCisgIGFuZ2ViZW4sIG1pdCBkZXIgZGVyIFRleHQgdGV4dCBhdXNnZWdlYmVuIHdpcmQuCisgIERpZSB4IHNvbGx0ZW4genVzYW1tZW5nZXphZWhsdCB3ZXJ0IGVyZ2ViZW4hIERpZSBSZWloZW5mb2xnZSBpc3QgendhcgorICBwcmluemlwaWVsbCBlZ2FsLCBhdXMgUGVyZm9ybWFuY2VncnVlbmRlbiBzb2xsdGUgbWFuIGRpZSBUZXh0ZSBhYmVyIG1pdAorICBhYnN0ZWlnZW5kZXIgV2FocnNjaGVpbmxpY2hrZWl0IGFub3JkbmVuLgorICBCZWlzcGllbDoKKyAgICA5OjxaPTY+CisgICAgIyMzIyMKKyAgICBEaWVzZXIgVGV4dCB3aXJkIGluIDUwJSBhbGxlciBGYWVsbGUgYXVzZ2VnZWJlbiAoMy82KQorICAgICMjMiMjCisgICAgRGllc2VyIFRleHQgaW4gMzMlIGFsbGVyIEZhZWxsZSAoMi82KQorICAgICMjMSMjCisgICAgVW5kIGRpZXNlciBUZXh0IGluIDE3JSBhbGxlciBGYWVsbGUgKDEvNikKKyAgICA8L1o+CisKK0F1c3NlcmRlbSBrYW5uIG1hbiBub2NoIGRlbiBOYW1lbiBkZXMgVG90ZW4gZWluYmF1ZW4sIHVuZCB6d2FyIG1pdCA8bj4gaW4KK25vcm1hbGVyIFNjaHJlaWJ3ZWlzZSwgdW5kIG1pdCA8Tj4gaW4gR1JPU1NidWNoc3RhYmVuLgorQmVpc3BpZWw6CisgIDEwOkR1IHNjaGF1c3QgaW4gZGVuIFNwaWVnZWwgdW5kIHNpZWhzdDogPG4+IQorICAxMTpEZXIgVG9kIHNhZ3Q6IEhBTExPLCA8Tj4hCisKKwpkaWZmIC0tZ2l0IGEvZG9jL3dpei90b3BsaXN0ZSBiL2RvYy93aXovdG9wbGlzdGUKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYTM5ZWZjNgotLS0gL2Rldi9udWxsCisrKyBiL2RvYy93aXovdG9wbGlzdGUKQEAgLTAsMCArMSwzMyBAQAorRnVlciBkaWUgVmVyd2FsdHVuZyBkZXIgU3RhbmRhcmR0b3BsaXN0ZW4gZ2lidCBlcyAvc2VjdXJlL3RvcGxpc3RlLCB3ZWxjaGVzICh6dXIgWmVpdCkgYmVpIExvZ2luIGJlaSB0b3BsaXN0ZW4td2lsbGlnZW4gU3BpZWxlcm4gZGllIHRvcGxpc3Rlbi1yZWxldmFudGVuIERhdGVuIHZvbSBTcGllbGVyIGFiZnJhZ3QgdW5kIGluIGVpbmVyIFRhYmVsbGUgZWludHJhZWd0LgorCitBYmZyYWdlbiBsYWVzc3QgZGllIExpc3RlIGplZGVyemVpdCB3aWUgZm9sZ3QgZHVyY2ggQXVmcnVmIGZvbGdlbmRlciBGdW5rdGlvbmVuIGluIC9zZWN1cmUvdG9wbGlzdGU6IExpc3RlLCBTcGllbGVyTGlzdGUsIFNlaGVyTGlzdGUgdW5kIEhhcmRjb3JlTGlzdGUuCisKK0RpZSA0IHNpbmQgdmFyYXJncyB1bmQgYmVrb21tZW4gZm9sZ2VuZGUgbW9lZ2xpY2hlIEFyZ3VtZW50ZToKKyogc3RyaW5nIHJhc3NlCisgIE51ciBTcGllbGVyIGRlciBSYXNzZSA8cmFzc2U+IGJlcnVlY2tzaWNodGlnZW4KKyogc3RyaW5nIGdpbGRlCisgIE51ciBTcGllbGVyIGRlciBHaWxkZSA8Z2lsZGU+IGJlcnVlY2tzaWNodGlnZW4KKyogaW50IGxpbWl0CisgIE1heC4gPGxpbWl0PiBFaW50cmFlZ2UsIERlZmF1bHQ6IDEwMCwgTWF4OiAxMDAKKyogc3RyaW5nIHNvcnQKKyAgTGlzdGUgc29ydGllcmVuIG5hY2g6IGxlcCwgcXAsIHhwLCBhZ2UsIHdpemxldmVsLCBoYXJkY29yZSwgZ2lsZGUsIHJhc3NlLCAKKyAgbmFtZQorICBEZWZhdWx0OiBsZXAKKworRGllIEZ1bmt0aW9uZW4gbGllZmVybiBlaW4gQXJyYXkgenVydWVjaywgd2FzIGZ1ZXIgamVkZW4gRWludHJhZyBpbiBkZXIgVG9wbGlzdGUgd2llZGVyIGVpbiBBcnJheSBlbnRoYWVsdDogPCA8c3RyaW5nfGludD4qID4qCisKK0JlaXNwaWVsZToKKyMgL3NlY3VyZS90b3BsaXN0ZS0+TGlzdGUoKQorICBEaWUgMTAwIENoYXJzIG1pdCBkZW4gbWVpc3RlbiBTdHVmZW5wdW5rdGVuCisjIC9zZWN1cmUvdG9wbGlzdGUtPkhhcmRjb3JlTGlzdGUoMCwwLDEwKQorICBEaWUgMTAgSEMtQ2hhcnMgbWl0IGRlbiBtZWlzdGVuIFN0dWZlbnB1bmt0ZW4KKyMgL3NlY3VyZS90b3BsaXN0ZS0+TGlzdGUoMCwia2FlbXBmZXIiLDEwLCJ4cCIpCisgIERpZSAxMCBLYWVtcGZlci1DaGFycyBtaXQgZGVuIG1laXN0ZW4gWFAKKyMgL3NlY3VyZS90b3BsaXN0ZS0+TGlzdGUoIlp3ZXJnIiwiemF1YmVyZXIiKQorICBEaWUgMTAwIFp3ZXJnZW56YXViZXJlciBtaXQgZGVuIG1laXN0ZW4gU3R1ZmVucHVua3RlbgorV2VpdGVyZXMga29lbm50IGlociBldWNoIGphIHNpY2hlciBkZW5rZW4uCisKK0FjaHNvLCBkYXMgRXJnZWJuaXMgc2llaHQgZGFubiB1bmdlZmFlaHIgc28gYXVzOgorKHsgKHtuYW1lLCBsZXAsIHFwLCB4cCwgbGV2ZWwsIGFnZSwgcmFzc2UsIGdpbGRlLCB3aXpsZXZlbCwgaGFyZGNvcmV9KSwgLi4uIH0pCisoeyh7ImhjcGxheSIsMTAwLDAsMCwxLDYyLCJNZW5zY2giLCJhYmVudGV1cmVyIiwwLDF9KX0pCisKZGlmZiAtLWdpdCBhL2RvYy93aXovdHJhbnNwb3J0ZXIgYi9kb2Mvd2l6L3RyYW5zcG9ydGVyCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmEzZjAwMWMKLS0tIC9kZXYvbnVsbAorKysgYi9kb2Mvd2l6L3RyYW5zcG9ydGVyCkBAIC0wLDAgKzEsMTkgQEAKK0RFRklOSUVSVCBJTjoKKwkiL3N0ZC90cmFuc3BvcnQiCisJIi9zeXMvdHJhbnNwb3J0LmgiCisKK0JFTUVSS1VOR0VOOgorCVp1IFRyYW5zcG9ydGVybiBnaWJ0IGVzIGVpbiBCZWlzcGllbCB1bnRlcgorICAgICAgICAnL2RvYy9iZWlzcGllbGUvbWlzYy9ic3B0cmFuc3BvcnRlcjEuYycgdW5kIGF1Y2ggZGllIHZlcndlbmRldGVuIAorICAgICAgICBQcm9wZXJ0aWVzIHNpbmQgZG9rdW1lbnRpZXJ0LgorCQorICAgICAgICBVbSBlaW5lbiBUcmFuc3BvcnRlciB6dSBha3RpdmllcmVuLCBtdXNzIGVyIGluIGRhcyBQcmVsb2FkLUZpbGUgZGVyCisJUmVnaW9uIGdlc2NocmllYmVuIHdlcmRlbiwgb2RlciBhYmVyIHVlYmVyIGVpbmUgRnVua3Rpb24gaW0gU3RhcnQtCisJdW5kIFppZWxyYXVtIGF1ZmdlcnVmZW4gd2VyZGVuLCBkaWUgZGFzIGVybGVkaWd0LgorCitTSUVIRSBBVUNIOgorCVBfQVJSSVZFTVNHLCBQX0RFUEFSVE1TRywgUF9FTlRFUk1TRywgUF9MRUFWRU1TRywgUF9MRUFWRUZBSUwsCisJUF9FTlRFUkZBSUwsIFBfTUFYX1BBU1NFTkdFUlMsIEFkZFJvdXRlLCBBZGRNc2csIFN0YXJ0CisgICAgICAgIC9kL2luc2Vsbi9zY2hpZmZlL0hvd1RvCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCitMYXN0IG1vZGlmaWVkOiBXZWQgRGVjIDI2IDE0LjQzOjA3IDIwMDEgYnkgVGlsbHkKZGlmZiAtLWdpdCBhL2RvYy93aXovdW5pcXVlcyBiL2RvYy93aXovdW5pcXVlcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5jNTA3ZmY4Ci0tLSAvZGV2L251bGwKKysrIGIvZG9jL3dpei91bmlxdWVzCkBAIC0wLDAgKzEsNDIgQEAKKworIFVOSVFVRVMKKyAgICAKKyAgICBTb2dlbmFubnRlICJ1bmlxdWVzIiBzaW5kIE9iamVrdGUsIGRpZSBuaWNodCBpbiBiZWxpZWJpZ2VyIEFuemFobCBpbSBNdWQKKyAgICB2b3JoYW5kZW4gc2VpbiBrb2VubmVuLCBzb25kZXJuIHZvbiBkZW5lbiBlcyBlbnR3ZWRlciBudXIgZWlucyBvZGVyIGVpbmUKKyAgICBiZWdyZW56dGUgQW56YWhsIGdpYnQuIEJlaXNwaWVsZSBmdWVyIHVuaXF1ZXMgc2luZCBkZXIgYmVrYW5udGUgVm9sbC0KKyAgICBzdHJlY2tlciBkZXMgV2VnaGllcnMgb2RlciBkaWUgZ3J1ZW5lbiBSb2JlbiBhdXMgZGVtIFNjaGVtZW5yZWljaC4KKyAgICBEaWUgQmVncmVuenVuZyBhdWYgd2VuaWdlIE9iamVrdGUgaGF0IG5vcm1hbGVyd2Vpc2UgZGVuIFNpbm4sIGJlc29uZGVyZQorICAgIEVpZ2Vuc2NoYWZ0ZW4gb2RlciBhdXNzZXJnZXdvZWhubGljaGUgU3RhZXJrZSB6dSByZWNodGZlcnRpZ2VuLiBCZWkgCisgICAgZWluaWdlbiBPYmpla3RlbiBwYXNzaWVydCBkaWVzIGF1Y2ggYXVzIGxvZ2lzY2hlbiBHcnVlbmRlLCB3ZWlsIGRhcworICAgIE9iamVrdCBlaW5mYWNoIGVpbnppZ2FydGlnIGlzdC4KKworICAgIEZ1ZXIgdW5pcXVlcyBnZWx0ZW4gZm9sZ2VuZGUgUmljaHRsaW5pZW46CisKKyAgICAtIERpZSBFcnJlaWNoYmFya2VpdCBkZXMvZGVyIHVuaXF1ZXMgZGFyZiBuaWNodCB2b20gUmVib290IGFiaGFlbmdlbi4KKyAgICAgIERhcyBiZWRldXRldCwgZWluIFNwaWVsZXIgbXVzcyB3YWVocmVuZCBkZXIgZ2VzYW10ZW4gVXB0aW1lIGRpZQorICAgICAgdGhlb3JldGlzY2hlIE1vZWdsaWNoa2VpdCBoYWJlbiwgZWluIGJlc3RpbW10ZXMgT2JqZWt0IGR1cmNoIHdlbGNoZW4KKyAgICAgIEF1ZndhbmQgYXVjaCBpbW1lciB6dSBlcnJlaWNoZW4uCisKKyAgICAtIERhcyBPYmpla3QgbXVzcyBhdWNoIGdlZ2VuIGRlbiBXaWxsZW4gZGVzIGJpc2hlcmlnZW4gQmVzaXR6ZXJzIHp1CisgICAgICBiZWtvbW1lbiBzZWluLgorCisgICAgLSBTb2xsdGUgZGFzIE9iamVrdCBpbiBVbWxhdWYgc2VpbiwgbXVzcyBhbiBkZXIgRnVuZHN0ZWxsZSBlaW4gSGlud2VpcworICAgICAgZGFyYXVmIGV4aXN0aWVyZW4sIGRhc3MgZGllc2VzIE9iamVrdCBkb3J0IHp1IGJla29tbWVuIGlzdC4gQXVjaCB3ZW5uCisgICAgICBmYW5hdGlzY2hlIFNwaWVsZXIgZWluIFVuaXF1ZSA1IFNla3VuZGVuIG5hY2ggUmVib290IHdlZ3NjcmlwdGVuLAorICAgICAgc29sbHRlbiBuYWNoZm9sZ2VuZGUgU3BpZWxlciB3ZW5pZ3N0ZW5zIHdpc3Nlbiwgd28gZXMgbWFsIGdld2VzZW4gaXN0LgorCisgICAgVW5pcXVlcywgZGllIGF1ZmdydW5kIGlocmVyIFdlcnRlIG5pY2h0IGdlbmVobWlndW5nc3BmbGljaHRpZyBzaW5kLCBzb2xsdGVuCisgICAgc2ljaCB0cm90emRlbSBhbiBkaWVzZSBSaWNodGxpbmllIGhhbHRlbi4gVW5pcXVlcyBvaG5lIGplZ2xpY2hlcyBLb256ZXB0LAorICAgIGRpZSBkZXIgQmFsYW5jZSB2b3JnZWxlZ3Qgd2VyZGVuLCBoYWJlbiBqZWRvY2gga2F1bSBDaGFuY2UgYXVmIEdlbmVobWlndW5nLgorICAgIAorCisgU0lFSEUgQVVDSAorCisgICAgIGJhbGFuY2UsIHJ1ZXN0dW5nZW4sIHdhZmZlbiwgZmVybndhZmZlbiwgbnBjcywgZ3Jlbnp3ZXJ0ZSwKKyAgICAgYXR0cmlidXRzdmVyYWVuZGVydW5nZW4sIHJlc2lzdGVuemVuLCBrYW1wZm9iamVrdGUKKworCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyBMRVRaVEUgQWVOREVSVU5HOgorICAgIERvbiwgMzEuMTAuMTk5OSwgMjA6MDA6MDAgdm9uIE5hY2h0d2luZAorICAgCmRpZmYgLS1naXQgYS9kb2Mvd2l6L3ZlcnRyYWcgYi9kb2Mvd2l6L3ZlcnRyYWcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMWFiYzY4YQotLS0gL2Rldi9udWxsCisrKyBiL2RvYy93aXovdmVydHJhZwpAQCAtMCwwICsxLDEyOCBAQAorCitIZXJ6bGljaCB3aWxsa29tbWVuIGltIEtyZWlzIGRlciBNYWdpZXIhCisKK0FiIGpldHp0IGthbm5zdCBEdSBoaW50ZXIgZGllIEt1bGlzc2UgZGVzIE1vcmdlbkdyYXVlbnMgc2NoYXVlbi4KK0RpZXNlIEZhZWhpZ2tlaXQgYmlyZ3QgVmVyYW50d29ydHVuZy4KKworRGVzaGFsYiBnZWx0ZW4gYWIgamV0enQgenVzYWV0emxpY2ggenUgZGVuIGJpc2hlcmlnZW4gUmVnZWxuIGZvbGdlbmRlCitNYWdpZXJyZWdlbG4gZnVlciBEaWNoOgorCitNYW4gZGFyZiBTcGllbGVybiBrZWluZSBIaWxmZW4gZ2ViZW4sIGVzIHNlaSBkZW5uLCBlcyBsaWVndCBlaW4KKypvZmZlbnNpY2h0bGljaGVyKiBGZWhsZXIgdm9yLiBEYWJlaSB6YWVobHQgYXVjaCBlaW4gWndlaXRzcGllbGVyLAorbWl0IGRlbSBlaW4gTWFnaWVyIHNwaWVsdCwgenUgZGVuIFNwaWVsZXJuIQorSGFlbHQgZGVyIFNoZXJpZmYgZWluZW4gRXh0cmEtQ2hhcmFrdGVyIGVpbmVzIE1hZ2llcnMgbmljaHQgZnVlciBlaW5lbgorZWNodGVuIFp3ZWl0aWUsIGthbm4gZXIgaWhuIGplZGVyemVpdCB6dW0gVGVzdHNwaWVsZXIgZXJrbGFlcmVuLiAKKworQmVpc3BpZWxlIGZ1ZXIgbmljaHQgZXJsYXVidGUgSGlsZmVuOgorLSBTdGF0cyB2b24gTW9uc3Rlcm4gbWl0dGVpbGVuLgorLSBPYmpla3RlIGNsb25lbiwgdW5kIFNwaWVsZXJuIGdlYmVuLgorLSBPYmpla3RlIHNjaHJlaWJlbiwgZGllIGRlbiBTcGllbGVybiB6dSBzZWhyIGhlbGZlbiwgb2RlciB1bWdla2VocnQKKyAgZGllIFNwaWVsZXIgc2NoYWVkaWdlbi4KKy0gU3BpZWxlciB0ZWxlcG9ydGllcmVuLgorLSBFeHBsaXppdGUgS29tbWFuZG9zIGFuZ2ViZW4sIGRpZSBlaW4gU3BpZWxlciBlaW5nZWJlbiBtdXNzLgorLSBTZWxiZXIgKG9kZXIgbWl0IFp3ZWl0Y2hhcmFrdGVyZW4pIG1pdHNwaWVsZW4gb2RlciAta2FlbXBmZW4sIHNvYmFsZCAKKyAgSW5zaWRlcndpc3NlbiBpbiBBbndlbmR1bmcga29tbXQuIEhpZXIgaXN0IGRlciBnZXN1bmRlIE1lbnNjaGVudmVyc3RhbmQKKyAgYmVpIGRlciBFbnRzY2hlaWR1bmcgZ2VmcmFndCwgYWIgd2FubiBkaWVzIGRlciBGYWxsIGlzdC4KKy0gUmFldW1lIHJlc2V0dGVuLCBkYW1pdCBkaWUgU3BpZWxlciBPYmpla3RlIGJla29tbWVuLgorICAoSW5zYmVzb25kZXJlIGthbm4gZGFzIE5lYmVuZWZmZWt0ZSBoYWJlbiwgZGllIG1hbiBhbHMgbm9ybWFsZXIKKyAgIE1hZ2llciBuaWNodCB1ZWJlcnNjaGF1ZW4ga2FubiwgYXVzc2VyZGVtIGtvZW5uZW4gZGllIFNwaWVsZXIgYXVjaCBtYWwKKyAgIHdhcnRlbi4pCistIFdlaXRlcmdhYmUgdm9uIE9iamVrdGluZm9ybWF0aW9uZW4sIGRpZSBkZXIgU3BpZWxlciBuaWNodCBlaW5zZWhlbiBrYW5uLgorCitJbiBkZW4gZm9sZ2VuZGVuIEZhZWxsZW4gZGFyZiBuYXR1ZXJsaWNoIGdlaG9sZmVuIHdlcmRlbjoKKy0gU3BpZWxlcm4gYXVzIGZlaGxlcmhhZnRlbiBSYWV1bWVuIG9kZXIgZGVyICd2b2lkJyBoZXJhdXNoZWxmZW4uCistIE1hbiBzaWVodCwgZGFzcyBkZXIgU3BpZWxlciB3ZWlzcywgd2FzIGVyIHp1IHR1biBoYXQsIGFiZXIgaWhtIGRpZQorICBhYndlZ2lnZSghKSBGb3JtdWxpZXJ1bmcgbmljaHQgZWluZmFlbGx0LiAoSGllciBzb2xsdGUgbWFuIGFiZXIKKyAgenVzYWV0emxpY2ggZGVtIE1hZ2llciwgZGVyIGRhcyBlbnRzcHJlY2hlbmRlIE9iamVrdCAndmVyYnJvY2hlbicKKyAgaGF0LCBlaW5lIE1pdHRlaWx1bmcgZ2ViZW4sIGF1ZiBkYXNzIGVyIGVzIHZlcmJlc3NlcnQuKQorCitTZWxiZXIgc3BpZWxlbiBzb2xsIG1hbiBudXIgZGFubiwgd2VubiBtYW4gZGVuIFNwaWVsZXJuIGRhYmVpIG5pY2h0CitoaWxmdCBvZGVyIGlobmVuIGVpbiBBYmVudGV1ZXIgdm9yIGRlciBOYXNlIHdlZ2xvZXN0LgorCisKK0dlbmVyZWxsIG11c3MgZGllIFByaXZhdHNwaGFlcmUgdm9uIFNwaWVsZXJuIGdlYWNodGV0IHdlcmRlbi4gCisKK1Nub29wZW4gdm9uIFNwaWVsZXJuIGlzdCBudXIgZGFubiBlcmxhdWJ0LCB3ZW5uIGVzIGRhcnVtIGdlaHQsIEZlaGxlcgoraW0gTXVkIHp1IGZpbmRlbiBvZGVyIElkZWVuIHp1IHNhbW1lbG4sIHVtIHNlaW5lbiBfZWlnZW5lbl8gR2ViaWV0ZSwKK2J6dy4gUmVnaW9uZW4gZnVlciBkaWUgbWFuIHZlcmFudHdvcnRsaWNoIGlzdCwgenUgdmVyYmVzc2VybiB1bmQgCithbnp1cGFzc2VuLiBFcyBkYXJmIGF1ZiBrZWluZW4gRmFsbCBkYWZ1ZXIgYmVudXR6dCB3ZXJkZW4sIFNwaWVsZXIKK29obmUgYmVzb25kZXJlbiBHcnVuZCB6dSBiZW9iYWNodGVuLCBzaWNoIHVlYmVyIHNpZSBsdXN0aWcgenUgbWFjaGVuLCAKK29kZXIgc2llIGF1c3p1c3Bpb25pZXJlbi4gV2VubiBTcGllbGVyIFBvc3Qgc2NocmVpYmVuIG9kZXIgbGVzZW4gaXN0IAorc25vb3BlbiBzdHJlbmdzdGVucyB1bnRlcnNhZ3QgKEJyaWVmZ2VoZWltbmlzKS4KK0dlbmVyZWxsIGlzdCBlcyBhbmdlYnJhY2h0IFNwaWVsZXIgZGFyYXVmIGhpbnp1d2Vpc2VuLCBkYXNzIHNpZSAKK2dlc25vb3B0IHdlcmRlbi4KKworRXMgaXN0IGViZW5zbyB1bnp1bGFlc3NpZywgYW5kZXJlIE1vZWdsaWNoa2VpdGVuIGF1c3p1bnV0emVuLCBkaWUgCitkYXp1IGRpZW5lbiBTcGllbGVyIHp1IGJlb2JhY2h0ZW4sIGJ6dy4gYXVzenVzcGlvbmllcmVuICh6QiB2ZXJmb2xnZW4pLgorCitJbnNiZXNvbmRlcmUgaXN0IGVzIFNUUklLVCB1bnRlcnNhZ3QsIE9iamVrdGUgenUgc2NocmVpYmVuLCBkaWUgaW4KK2lyZ2VuZGVpbmVyIFdlaXNlICh6QiBhZGRfYWN0aW9uKC4uLiwiIiwxKSkgJ3RlaWxlIG1pdCcsICdmbHVlc3RlcicKK3VuZCBhZWhubGljaGUgS29tbXVuaWthdGlvbnNiZWZlaGxlIGFiZmFuZ2VuLCB1bSBHZXNwcmFlY2hlIHZvbiBhbmRlcmVuCithYnp1aG9lcmVuLiBEaWVzIHN0ZWxsdCBlaW5lbiBzY2h3ZXJlbiBFaW5ncmlmZiBpbiBkaWUgSW50aW1zcGhhZXJlIGRlcgorYW5kZXJlbiBUZWlsbmVobWVyIGRhciB1bmQgd2lyZCBkZW1lbnRzcHJlY2hlbmQgZ2VhaG5kZXQhCisKK0plZ2xpY2hlIEFydCB2b24gQmVsYWVzdGlndW5nIHZvbiBTcGllbGVybiBpc3QgdW50ZXJzYWd0LiAKK0RhenUgZ2Vob2VydCBkYXMgVmVyZmx1Y2hlbiwgTW9uc3RlciBhdWYgc2llIGhldHplbiwgb2RlciBpaG5lbiBhdWYKK2lyZ2VuZGVpbmUgQXJ0IGJvZXN3aWxsaWcgU2NoYWRlbiB6dXp1ZnVlZ2VuLgorCisKK1p1IGRlbSwgd2FzIER1IGhpZXIgc28gcHJvZ3JhbW1pZXJzdDoKK0FsbGVzIHdhcyBEdSBoaWVyIGFuIERhdGVuIGFibGVnc3QgaXN0IG5hdHVlcmxpY2ggRGVpbiBlaWdlbmVzLCAKK2dlaXN0aWdlcyBFaWdlbnR1bS4gVHJvdHpkZW0gZ2VoZW4gd2lyIGRhdm9uIGF1cywgZGFzIGFsbGVzLCB3YXMgaGllcgoraW0gTXVkdmVyemVpY2huaXMgbGFuZGV0LCBhdWNoIGZ1ZXIgZGFzIE1vcmdlbkdyYXVlbiBlbnR3aWNrZWx0IHdvcmRlbgoraXN0LCBhbHNvIGFsbGVzIHdhcyBEdSBzY2hyZWlic3QsIGF1Y2ggdm9tIE11ZCBnZW51dHp0IHdlcmRlbiBkYXJmLgorRGllcyBmdWVocnQgenUgZm9sZ2VuZGVyIFJlZ2VsdW5nOgorIAorRnVlciBkYXMgTW9yZ2VuR3JhdWVuIGdpbHQgdW5laW5nZXNjaHJhZW5rdGVzIE51dHp1bmdzcmVjaHQgZnVlciBhbGxlIAorTW9uc3RlciwgT2JqZWt0ZSBvZGVyIFJhZXVtZSBkaWUgRHUgaGllciBwcm9ncmFtbWllcnN0LiBEaWVzIGdpbHQgCitpbnNiZXNvbmRlcmUgZnVlciBhbGxlIFNhY2hlbiwgZGllIGJlcmVpdHMgYW4gZGllIFJlZ2lvbmVuIGRlcyBNR3MKK2FuZ2VzY2hsb3NzZW4gc2luZC4KK0RhcyBiZWRldXRldCBmdWVyIERpY2gsIGRhc3MgdW50ZXIgVW1zdGFlbmRlbiB2b24gRGlyIGdlc2NocmllYmVuZSAKK09iamVrdGUgYXVjaCBnZWdlbiBEZWluZW4gV2lsbGVuIGFuZ2VzY2hsb3NzZW4gYmxlaWJlbiwgdW5kIHZpZWxsZWljaHQKK3NvZ2FyIGdnZi4gYXVzIGVpbmVtIEJhY2t1cCB3aWVkZXIgZWluZ2VzcGllbHQgd2VyZGVuLgorTWl0IGRpZXNlciBSZWdlbCBzb2xsIHZlcmhpbmRlcnQgd2VyZGVuLCBkYXMgdW5nbHVlY2tzZWxpZ2UgTWFnaWVyIGF1cy0KK3N0ZWlnZW4gdW5kIGJlaW0gVmVybGFzc2VuIGRlcyBNRyByaWVzaWdlIExvZWNoZXIgaW4gZGVyIExhbmRzY2hhZnQgCit1bmQgaW0gYWxsZ2VtZWluZW4gR2xlaWNoZ2V3aWNodCBoaW50ZXJsYXNzZW4uCisKKworU29sbHRlIERlaW5lIE1hZ2llcnplaXQgYmVlbmRldCBzZWluLCB2ZXJwZmxpY2h0ZXN0IER1IERpY2gsIHVlYmVyCitldHdhaWdlIHdhZWhyZW5kIERlaW5lciBNYWdpZXJ6ZWl0IGdld29ubmUgbmljaHQtb2VmZmVudGxpY2hlIEludGVybmEKKy0gaW5zYi4gbmljaHQtb2VmZmVudGxpY2hlbiBDb2RlIC0gYXVjaCB3ZWl0ZXJoaW4gU3RpbGxzY2h3ZWlnZW4genUgCitiZXdhaHJlbi4gRGllcyBnaWx0IHVuYWJoYWVuZ2lnIHZvbiBkZW0gR3J1bmQgb2RlciBkZXIgQXJ0IHVuZCBXZWlzZSwKK0RlaW5lIE1hZ2llcnplaXQgenUgYmVlbmRlbiAoei5CLiBMb2VzY2h1bmcpLgorCisKK1dlbm4gRHUgZGllc2VuIFZlcnRyYWcgdW50ZXJzY2hyZWlic3QsIGVya2VubnN0IER1IGRpZSBSZWdlbG4gYW4uCitEaWUgUmVnZWxuIGluIC9ldGMvV0laUlVMRVMgc2luZCBpbW1lciB2ZXJiaW5kbGljaCwgdW5hYmhhZW5naWcgZGF2b24sCit3aWUgc2llIHp1bSBaZWl0cHVua3QgZGVpbmVzIE1hZ2llcndlcmRlbnMgYXVzc2FoZW4uCisKKworTnVuIGdlbnVnIGRlciBzdHJlbmdlbiBSZWdlbG4gOykuCitOdW4genUgZGVtLCB3YXMgRHUgamVkZW4gTW9tZW50IHdpcnN0OyB1bmQgenUgZGVtLCB3YXMgZGFuYWNoIGtvbW10OgorCisxLikgV2VubiBEdSBkaWVzZW4gVmVydHJhZyB1bnRlcnNjaHJpZWJlbiBoYXN0LCB1bmQgRGVpbiBTcG9uc29yIChkYXMgaXN0CisgICAgZGVyLCBkZXIgRGlyIGRlbiBWZXJ0cmFnIGdlZ2ViZW4gaGF0KSBNZXJsaW4gZ2ViZXRlbiBoYXQsIERpY2ggenVtCisgICAgTWFnaWVyIHp1IG1hY2hlbiwgYmVrb21tc3QgRHUgZGllIG1hZ2lzY2hlbiBGYWVoaWdrZWl0ZW4gZGVyIE1hZ2llci4KKyAgICBEdSB3aXJzdCBEaWNoIHVuc2ljaHRiYXIgbWFjaGVuIGtvZW5uZW4sIGFuZGVyZSBXZXNlbiB0ZWxlcG9ydGllcmVuCisgICAga29lbm5lbiAoc2llaGUgamVkb2NoIFJlZ2VsbiksIE9iamVrdGUgY2xvbmVuIHVuZCBzbyB3ZWl0ZXIgdW5kIHNvCisgICAgd2VpdGVyLiBEZWluIFNwb25zb3IgaGF0IGRpZSBBdWZnYWJlLCBEaXIgZGVuIFVtZ2FuZyBtaXQgZGVuIG5ldWVuCisgICAgRmFlaGlna2VpdGVuIGJlaXp1YnJpbmdlbiAoRHUgZGFyZnN0IGlobiBkYXJhdWYgZmVzdG5hZ2VsbiA7LSkpLgorCisyLikgRHUga2FubnN0IGplZG9jaCBzZWxic3Qgbm9jaCBrZWluZXJsZWkgUHJvZ3JhbW1lIHNjaHJlaWJlbi4gV2VubiBEdQorICAgIGF1Y2ggc2VsYmVyIHByb2dyYW1taWVyZW4gd2lsbHN0LCBtdXNzdCBEdSB6dWVyc3QgZWluIEdlc2VsbGVuc3R1ZWNrCisgICAgYWJsaWVmZXJuLiBXaWUgZGFzIGdlaHQsIGZpbmRlc3QgZHUgYmVpIGRlciBIaWxmZSB6dW0gR2VzZWxsZW5zdHVlY2sKKyAgICBiZXNjaHJpZWJlbigiaGlsZmUgZ2VzZWxsZW5zdHVlY2siKS4KKworCitTbyB1bmQgbnVuIHp1IGRlbiBEaW5nZW4sIGRpZSBmdWVyIERpY2ggZGEgc2luZDoKKworICAgIE1pdCBkZW0gQmVmZWhsICJtaGlsZmUiIGthbm5zdCBEdSBlaW5lIFVlYmVyc2ljaHQgdWViZXIgZGllIEJlZmVobGUKKyAgICBiZWtvbW1lbiwgZGllIGVpbiBNYWdpZXIgenVzYWV0emxpY2ggenUgZGVuZW4gZGVyIFNwaWVsZXIgaGF0LiBJbgorICAgIGRlbSBWZXJ6ZWljaG5pc3MgL2RvYyBmaW5kZXN0IER1IHZlcnNjaGllZGVuZSBGaWxlcywgZGllIERpciBkYXMKKyAgICBWZXJzdGFlbmRuaXMgZXJsZWljaHRlcm4gc29sbGVuLiBFaW5lIFVlYmVyc2ljaHQga2FubnN0IER1IG1pdCBkZW0KKyAgICBCZWZlaGwuICJtb3JlIC9kb2MvUkVBRE1FIiBiZWtvbW1lbi4KKwkKKyAgICBEZXIgZ3V0ZSBhbHRlIE1lcmxpbiBpc3QgbmljaHQgbnVyIGRlciBVcnZhdGVyIGFsbGVyIE1hZ2llciwgc29uZGVybgorICAgIGJlaGVyYmVyZ3QgZGFydWViZXIgaGluYXVzIGF1Y2ggZWluZW4gKGFiIHVuZCB6dSkgZ3V0IGJlc3VjaHRlbiBXaXpDbHViLgorICAgIFdlciBzaWNoIG1pdCAiZ290byIgbm9jaCBuaWNodCBzbyBndXQgYXVza2VubnQsIGthbm4gaWhuIGluIGRlciAKKyAgICBBYmVudGV1cmVyZ2lsZGUgbWl0IGRlbSBLb21tYW5kbyAidHJlZmYiIGJldHJldGVuLgpkaWZmIC0tZ2l0IGEvZG9jL3dpei93YWZmZW4gYi9kb2Mvd2l6L3dhZmZlbgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41OGM0YzA0Ci0tLSAvZGV2L251bGwKKysrIGIvZG9jL3dpei93YWZmZW4KQEAgLTAsMCArMSwyMDIgQEAKKyBXQUZGRU46CisKKyAgICBhLiBBbGxnZW1laW5lcworCisgICAgQWxsZSAoenVtaW5kZXN0IG5ldWVuISkgV2FmZmVuIHNvbGx0ZW4gdWViZXIgZWluZSB2ZXJudWVuZnRpZ2UKKyAgICBCZXNjaHJlaWJ1bmcgdW5kIGF1Y2ggRGV0YWlscyB2ZXJmdWVnZW4uIEVpbmZhY2ggIkVpbiBTY2h3ZXJ0IiBpc3QKKyAgICBlaW4gYmlzc2VsIGFyZyBkdWVyZnRpZyB1bmQgcmVjaHRmZXJ0aWd0IGF1ZiBrZWluZW4gRmFsbAorICAgIGlyZ2VuZHdlbGNoZSBob2hlbiBXQ3Mgb2RlciBnYXIgSGl0RnVuY3MhIERhcmF1ZiBzb2xsdGVuIHNjaG9uIGRpZQorICAgIFJNcyBhY2h0ZW4uLi4KKworICAgIE5hY2ggTW9lZ2xpY2hrZWl0IGF1Y2ggUF9JTkZPIHNldHplbiwgZGFzIGlzdCBmdWVyIFNwaWVsZXIgbmljaHQgc28KKyAgICBmcnVzdHJpZXJlbmQgdW5kIGthbm4gamEgYXVjaCBlaW5lbiBuZXR0ZW4gU3BydWNoIGVudGhhbHRlbi4gUF9JTkZPCisgICAgaXN0ICp6d2luZ2VuZCogYmVpIFdhZmZlbiBtaXQgSGl0RnVuY3MhIE11c3MgamEgbmljaHQgYWJzb2x1dCBlaW4tCisgICAgZGV1dGlnIHNlaW4sIGFiZXIgZXR3YXMgTGllYmUgenVtIERldGFpbCBzb2xsdGUgYmVpIFNvbmRlcndhZmZlbiBhdWYKKyAgICBqZWRlbiBGYWxsIGdlbHRlbi4KKworICAgIFdhZmZlbiB2b20gVHlwIFdUX01JU0MgZHVlcmZlbiB3ZWRlciB1ZWJlciBlaW5lIERlZmVuZC0gbm9jaCBlaW5lCisgICAgSGl0RnVuYyB2ZXJmdWVnZW4uIERpZSBBQyBzb2xjaGVyIFdhZmZlbiBpc3QgaW1tZXIgMC4gV2VpdGVyIGR1ZXJmZW4KKyAgICBzb2xjaGUgV2FmZmVuIGtlaW5lcmxlaSBhbmRlcmUga2FtcGZyZWxldmFudGUgQmVkZXV0dW5nIGJlc2l0emVuCisgICAgb2RlciBNYW5pcHVsYXRpb25lbiBhbS9pbSBTcGllbGVyL0dlZ25lciB2ZXJ1cnNhY2hlbi4KKworCisgICAgYi4gQmVtZXJrdW5nZW4genUgZWluaWdlbiBQcm9wZXJ0aWVzOgorCisgICAgIFBfV0MKKyAgICAgICAgRGllIFdDIHNvbGx0ZSBlaW5pZ2VybWFzc2VuICJyZWFsaXN0aXNjaCIgZ2V3YWVobHQgd2VyZGVuLiBEaWUKKyAgICAgICAgVmVyYW50d29ydHVuZyBoaWVyZnVlciBvYmxpZWd0IGRlbiBqZXdlaWxpZ2VuIFJNcy4gU2llIHNvbGx0ZQorICAgICAgICB6d2lzY2hlbiBjYS4gMzUgdW5kIDIwMCBsaWVnZW4uIEF1ZiBqZWRlbiBGYWxsIHNpbmQgZGllIGFrdHVlbGxlbgorICAgICAgICBHZW5laG1pZ3VuZ3NncmVuemVuIHp1IGJlYWNodGVuLiBTb2xsdGUgZGllIFdDIGRpZXNlIEdyZW56ZW4KKyAgICAgICAgdWViZXJzY2hyZWl0ZW4sIHVudGVybGllZ3QgZGllIFdhZmZlIGF1c3NlciBkZXIgR2VuZWhtaWd1bmcgZHVyY2gKKyAgICAgICAgZGVuIFJNIGRlciBCZXVydGVpbHVuZyBkdXJjaCBkYXMgV2FmZmVuZ3JlbWl1bS4KKworICAgICBQX05SX0hBTkRTCisgICAgICAgIFdhZmZlbiB1ZWJlciBlaW5lciBlZmZla3RpdmVuIFdDIHZvbiAxNTAgbXVlc3NlbiB6d2VpaGFlbmRpZyBzZWluLgorICAgICAgICBBdXNuYWhtZW4ga29lbm5lbiB1bnRlciBVbXN0YWVuZGVuIGdlbmVobWlndCB3ZXJkZW4sIHp1bSBCZWlzcGllbAorICAgICAgICB3ZW5uIGRpZSBXYWZmZSBzY2h3ZXIgZXJyZWljaGJhciBvZGVyIHphaGxlbm1hZXNzaWcgYmVncmVuenQsIGVpbmUKKyAgICAgICAgUXVlc3RiZWxvaG51bmcgZXRjLiBpc3QuIEFsbGUgZWluaGFlbmRpZ2VuIFdhZmZlbiB1ZWJlciBXQyAxNDAgc2luZAorICAgICAgICBpbiBqZWRlbSBGYWxsIGdlbmVobWlnZW4genUgbGFzc2VuLgorCisgICAgICAgIE1lc3NlciBtdWVzc2VuIGdlbmVyZWxsIGVpbmhhZW5kaWcgc2VpbiEKKworICAgICBQX1dFSUdIVAorICAgICAgICBCaXR0ZSByZWFsaXN0aXNjaCBoYWx0ZW4uIERhbWl0IGlzdCAqbmljaHQqIGRhcyBSTC1HZXdpY2h0CisgICAgICAgIGdlbWVpbnQsIHNvbmRlcm4gbWFuIHNvbGx0ZSBhbSBiZXN0ZW4gdmVyZ2xlaWNoYmFyZSBXYWZmZW4gZGVzCisgICAgICAgIE1HIGFscyBNYXNzc3RhYiBudXR6ZW4uIERhIGhpZXIgei5ULiBncmF2aWVyZW5kZSBEaXNrcmVwYW56ZW4KKyAgICAgICAgYmVzdGVoZW4sIGV2dGwuIG1hbCBtZWhyZXJlIHZlcmdsZWljaGVuLiBEaWUgVmVyYW50d29ydHVuZworICAgICAgICBoaWVyZnVlciBvYmxpZWd0IGRlbiBSTXMuCisKKyAgICAgICAgV2FmZmVuIG1pdCBlaW5lbSBHZXdpY2h0IHZvbiB1ZWJlciA0MDAwIEdyYW1tIHNvbGx0ZW4gbm9ybWFsZXJ3ZWlzZQorICAgICAgICBhdWNoIHp3ZWloYWVuZGlnIHNlaW4gb2RlciBtdWVzc2VuIGRlciBCYWxhbmNlIHZvcmdlbGVndCB3ZXJkZW4uCisKKyAgICAgKiogQmVzb25kZXJlIExlaWNodGdld2ljaHRlIGJpdHRlIGdlbmVobWlnZW4gbGFzc2VuLCB1bSBzcGFldGVyZW0gICAgICoqCisgICAgICoqIEFlcmdlciB2b3J6dWJldWdlbi4gR3JhZGUgZnVlciBLYWVtcGZlciBpc3QgZGFzIEdld2ljaHQgdm9uIFdhZmZlbiAqKgorICAgICAqKiBzZWhyIHdpY2h0aWchICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKioKKworICAgIFp1ciBFcmlubmVydW5nOiBTcGllbGVyIG1pdCBLcmFmdCAyMCBrb2VubmVuIG51ciAyNTAwMCBHZXdpY2h0cy0KKyAgICBlaW5oZWl0ZW4gKCJHcmFtbSIpIHRyYWdlbi4KKworICAgICBQX1NJWkUKKyAgICAgICAgRGllIExhZW5nZSBkZXIgV2FmZmUgaW4gY20uIFNldHp0IG1hbiBzaWUgbmljaHQsIHNvIGdpbHQgZGVyCisgICAgICAgIERlZmF1bHQtIHdlcnQgZnVlciBkZW4gamV3ZWlsaWdlbiBXYWZmZW50eXAsIHdlbGNoZXIgaW4gZGVyIE1hbnBhZ2UKKyAgICAgICAgenUgUF9TSVpFIG5vdGllcnQgaXN0LgorCisgICAgIFBfVkFMVUUKKyAgICAgICAgV2llIGJlaSBQX1dFSUdIVCBzaW5kIGRpZSBSTXMgZ2VmcmFndDogQXVnZW5tYXNzIHphZWhsdC4gV2VydGUgdWViZXIKKyAgICAgICAgMTAwMDAgb2RlciBzbyBzaW5kIHp3YXIgbmV0dCwgYWJlciBzaW5ubG9zIHVuZCB1bnJlYWxpc3Rpc2NoLgorCisgICAgIFBfREFNX1RZUEUKKyAgICAgICAgSmVkZSBXYWZmZSwgZGllIGF1cyBwaHlzaWthbGlzY2hlbSBNYXRlcmlhbCBiZXN0ZWh0IChhbHNvIGZha3Rpc2NoCisgICAgICAgIGFsbGVzIG1pdCBIYXJkd2FyZSkgKm11c3MqIGVpbmVuIHBoeXNpa2FsaXNjaGVuIFNjaGFkZW5zdHlwIGhhYmVuLgorCisgICAgICoqIFdhZmZlbiBtaXQgbWVociBhbHMgZWluZW0gbmljaHRwaHlzaWthbGlzY2hlbiBTY2hhZGVuc3R5cCBvZGVyICAgKioKKyAgICAgKiogbWVociBhbHMgNTAlIG5pY2h0cGh5c2lrYWxpc2NoZW4gQW50ZWlsZW4gc2luZCBnZW5lcmVsbCB6dXIgICAgICAqKgorICAgICAqKiBHZW5laG1pZ3VuZyB2b3J6dWxlZ2VuIHVuZCBhbHMgQmVzb25kZXJoZWl0IHp1IGhhbmRoYWJlbi4gTmljaHQgICoqCisgICAgICoqIGdlbmVobWlndCB1bmQgbnVyIGltIFJhaG1lbiBkZXIgR2lsZGVuYmFsYW5jZSBlcm1vZWdsaWNodCB3ZXJkZW4gKioKKyAgICAgKiogYSkgV2FmZmVuIG1pdCBtZWhyIGFscyA2NiUgbmljaHRwaHlzaWthbGlzY2hlbSBTY2hhZGVuIGltIEFycmF5LCAqKgorICAgICAqKiBiKSBXYWZmZW4gbWl0IGVpbmVtIG5pY2h0cGh5c2lrYWxpc2NoZW4gU2NoYWRlbnN0eXAgdWViZXIgNTAlICAgICoqCisKKyAgICBXZWl0ZXJoaW4gZ2VuZWhtaWd1bmdzcGZsaWNodGlnIHNpbmQgZGllIFNjaGFkZW5zdHlwZW46CisKKyAgICBEVF9URVJST1IsIERUX1NPVU5ELCBEVF9TUVVFRVpFCisKKyAgICBEaWVzZSBTY2hhZGVuc3R5cGVuIHdlcmRlbiBpbiBXYWZmZW4gbnVyIGdlbmVobWlndCwgd2VubiBzaWUgZ3V0CisgICAgYmVncnVlbmRldCBzaW5kLgorCisgICAgRGVyIFNjaGFkZW5zdHlwIERUX0VYUExPU0lPTiB3aXJkIGluIFdhZmZlbiBnZW5lcmVsbCBuaWNodCBtZWhyCisgICAgZ2VuZWhtaWd0LgorCisgICAgIFBfV0VBUE9OX1RZUEUKKyAgICAgICAgTnVyIHp1ciBFcmlubmVydW5nOiBlcyBnaWJ0IGltIE1HIHp1IHZpZWxlIFNjaHdlcnRlciB1bmQgU3BlZXJlLgorICAgICAgICBOdXR6dCBhdWNoIGRpZSBhbmRlcmVuIFdhZmZlbnR5cGVuISAoTWVzc2VyIHVuZCBQZWl0c2NoZW4gc2luZCBzZWhyCisgICAgICAgIHJhci4gQml0dGUgYW5nZXBhc3N0ZSBXQ3MhKQorCisgICAgIFBfRUZGRUNUSVZFX1dDCisgICAgICAgIEhpZXIga2FubiBkaWUgZXZ0bCBkdXJjaCBlaW5lIEhpdEZ1bmMgdmVyYWVuZGVydGUgV0MgYW5nZWdlYmVuCisgICAgICAgIHdlcmRlbi4gRGVyIER1cmNoc2Nobml0dHN3ZXJ0IHNvbGwgZGEgc3RlaGVuLiBEaWUgS2FlbXBmZXJnaWxkZSBrYW5uCisgICAgICAgIGRhcyBpbiBnZXdpc3NlbiBHcmVuemVuIGFic2NoYWV0emVuLgorCisgICAgIFBfRUZGRUNUSVZFX0FDCisgICAgICAgIEZ1ZXIgUGFyYWRld2FmZmVuIHNldHplbi4gV2VydGUgdW5iZWRpbmd0IG1pdCBCb2luZyBhYnNwcmVjaGVuIQorCisgICAgIFBfTk9CVVkKKyAgICAgICAgV2FmZmVuIGFiIFdDIDE1MCB3ZXJkZW4gYmVpbSBWZXJrYXVmIGltIExhZGVuIHp1cnVlY2tiZWhhbHRlbi4gRXMKKyAgICAgICAgc29sbHRlIGFiZXIgYXVjaCBmdWVyIFdhZmZlbiwgZGllIEhpdEZ1bmNzIGVudGhhbHRlbiwgUF9OT0JVWQorICAgICAgICBnZXNldHp0IHdlcmRlbi4KKworCisgICAgYy4gU3BlemlhbHdhZmZlbi9XYWZmZW4gbWl0IFNvbmRlcmZ1bmt0aW9uCisKKyAgICAgKiogQUxMRSBXYWZmZW4gbWl0IEhpdEZ1bmMgb2RlciBlbnRzcHJlY2hlbmRlciBGa3QuIG11ZXNzZW4gICAqKgorICAgICAqKiBnZW5laG1pZ3Qgd2VyZGVuISAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoqCisKKyAgICBTb2xjaGUgV2FmZmVuIG11ZXNzZW4gdWViZXIgZWluIFBfSU5GTyB2ZXJmdWVnZW4gdW5kIGlyZ2VuZHdvIGluCisgICAgaWhyZXIgQmVzY2hyZWlidW5nIG9kZXIgaW0gUF9JTkZPIG1pbmRlc3RlbnMgZWluZSBBbmRldXR1bmcgdWViZXIKKyAgICBkaWUgSGVya3VuZnQgb2RlciBkZW4gR3J1bmQgaWhyZXIgYmVzb25kZXJlbiBGYWVoaWdrZWl0IGhhYmVuLgorCisgICAgQXVjaCBTcGV6aWFsd2FmZmVuIHNvbGx0ZW4gbmFjaCBNb2VnbGljaGtlaXQgbmljaHQgdWViZXIgZWluZQorICAgIEVGRkVDVElWRV9XQyB2b24gMjAwIGhpbmF1c2dlaGVuLiBEZXIgUmV0dXJuLVdlcnQgZGVyIEhpdEZ1bmMsCisgICAgc29mZXJuIGVyIHZvbiAwIGFid2VpY2h0LCBNVVNTIHBlciByYW5kb20oKSB6dXJ1ZWNrZ2VnZWJlbiB3ZXJkZW4sCisgICAgZGEgZXIgb2huZSB3ZWl0ZXJlcyByYW5kb20oKSBhdWYgZGllIFdDIGF1ZmFkZGllcnQgd2lyZC4KKworICAgIFp1IGJlYWNodGVuIGlzdCwgZGFzcyBtYW4gYmVpIFdhZmZlbiwgZGllIG51ciBmdWVyIE5QQ3MgbWVociBTY2hhZGVuCisgICAgbWFjaGVuIHNvbGxlbiwgbmljaHQgKG51cikgdWViZXIgUF9SQUNFIHBydWVmdCwgb2IgZGVyIEJlbnV0emVyIGVpbgorICAgIHNvbGNoZXIgaXN0LiBFcyBpc3QgZGVua2JhciwgZGFzcyBTcGllbGVyIGlocmUgUmFzc2UgdGVtcG9yYWVyIHZlci0KKyAgICBhZW5kZXJuIGtvZW5uZW4uIFdhZmZlbiBkaWUgbnVyIGJlaQorICAgICFpbnRlcmFjdGl2ZShRdWVyeVByb3AoUF9XSUVMREVEKSkgYmVzc2VyIHp1c2NobGFnZW4sIGJyYXVjaGVuCisgICAgbmF0dWVybGljaCBuaWNodCBnZW5laG1pZ3QgenUgd2VyZGVuLgorCisgICAgRGllIERpY2h0ZSBzb2xjaGVyIFdhZmZlbiBpbiBlaW5lbSBHZWJpZXQgc29sbHRlIGVpbiB2ZXJudWVuZnRpZ2VzCisgICAgTWFzcyBuaWNodCB1ZWJlcnNjaHJlaXRlbi4gRnVlciBlaW5lIFNvbmRlcndhZmZlIHNvbGx0ZW4gYXVjaAorICAgIGV0bGljaGUgbmljaHQtbWFnaXNjaGUgV2FmZmVuIGluIGRlciBVbWdlYnVuZyBzZWluLiBadW1pbmRlc3QgZGllCisgICAgc3RhcmtlbiBXYWZmZW4gKGFsc28gbmljaHQgZGllLCBkaWUgbnVyIGVpbmVuIEdhZyBvZGVyIHNvCisgICAgYmVpbmhhbHRlbiwgc29uZGVybiB3aXJrbGljaCBpbiBkZW4gS2FtcGYgZWluZ3JlaWZlbikgc29sbHRlbiBuaWNodAorICAgIHp1IGxlaWNodCB6dSBiZWtvbW1lbiBzZWluLiBIaWVyYXVmIHNvbGxlbiBkaWUgUk1zIGFjaHRlbi4gU29sY2hlCisgICAgU2FjaGVuIGdlaG9lcmVuIHp1IE1vbnN0ZXJuLCBkaWUgZWluIHdlbmlnIHNjaGxlY2h0ZXIgZXJyZWljaGJhcgorICAgIHNpbmQgb2RlciBkaWUgYmVzb25kZXJzIHN0YXJrIG9kZXIgc29uc3R3aWUgdW5hbmdlbmVobSBzaW5kLiBBbHNvCisgICAgbml4IHZlcnNjaGVua2VuLgorCisgICAgV2FmZmVuLCBkaWUgTW9uc3RlciB2ZXJnaWZ0ZW4gKGFsc28gbmljaHQgbnVyIFBfREFNX1RZUEUgRFRfUE9JU09OCisgICAgaGFiZW4pIHNpbmQgendhciBuaWNodCBncnVuZHNhZXR6bGljaCB2ZXJib3RlbiwgYWJlciBkb2NoCisgICAgdW5lcnd1ZW5zY2h0LiBTaWUgc2luZCBhdWYgamVkZW4gRmFsbCBnZW5laG1pZ3VuZ3NwZmxpY2h0aWcuCisgICAgQXVzc2VyZGVtIHNvbGx0ZSBkaWUgV2FocnNjaGVpbmxpY2hrZWl0IGVpbmVyIFZlcmdpZnR1bmcgcHJvCisgICAgS2FtcGZydW5kZSBtYXguIGJlaSAxJSBsaWVnZW4uCisKKyAgICBEZXMgd2VpdGVyZW4gbXVlc3NlbiBXYWZmZW4sIGRpZSBmdWVyIGJlc3RpbW10ZSBHaWxkZW4gYmVzdGltbXRlCisgICAgVm9ydGVpbGUgYnJpbmdlbiAoc2ljaCBiZWltIEthbWkgZGVyIFRhbmppYW4gbmljaHQgYWJudXR6ZW4genVtCisgICAgQmVpc3BpZWwpIGViZW5mYWxscyB2b24gZGVyIEJhbGFuY2UgZ2VuZWhtaWd0IHdlcmRlbi4KKworCisgICAgZC4gR2VuZWhtaWd1bmdzZ3JlbnplbgorCisgICAgRWluaGFlbmRpZ2UgV2FmZmVuICA6ICAgIGFiIFBfV0MgPj0gMTQwCisgICAgWndlaWhhZW5kaWdlIFdhZmZlbiA6ICAgIGFiIFBfV0MgPj0gMTc1CisKKyAgICBGdWVyIFdhZmZlbiBkaWUgZWluZW4gbmljaHRwaHlzaWthbGlzY2hlbiBTY2hhZGVuc3R5cCBlbnRoYWx0ZW46CisKKyAgICBFaW5oYWVuZGlnZSBXYWZmZW4gIDogICAgYWIgUF9XQyA+PSAxMjAKKyAgICBad2VpaGFlbmRpZ2UgV2FmZmVuIDogICAgYWIgUF9XQyA+PSAxNTAKKworCisgICAgZS4gU3BlemllbGxlIFByb3BlcnRpZXMgZnVlciBkaWUgS2FlbXBmZXJnaWxkZQorCisgICAgRGllc2UgUHJvcGVydGllcyBzaW5kIGRlZmluaWVydCBpbiAnL3Ava2FlbXBmZXIva2FlbXBmZXIuaCcuIE1pdCBpaG5lbgorICAgIGthbm4gbWFuIEJvbmkgZnVlciBiZXN0aW1tdGUgQXR0YWNrZW4gZGVyIEthZW1wZmVyIHZlcmdlYmVuICh6LkIuCisgICAgQm9udXMgYXVmIFdhZmZlbnNjaGxhZyBvZGVyIFRvZGVzc3Rvc3MpLgorCisgICAgR2VuYXVlcmUgSGlud2Vpc2UgenUgZGllc2VuIFByb3BlcnRpZXMgdW5kIGRlbiB6dSBzZXR6ZW5kZW4gV2VydGVuCisgICAgZmluZGV0IG1hbiBpbiAnbWFuIGthZW1wZmVyYm9uaScuCisKKyAgICBQcmluemlwaWVsbCBnaWx0OgorCisgICAgICoqIEFsbGUgV2FmZmVuLCBpbiBkZW5lbiBlaW5lIHNvbGNoZSBQcm9wZXJ0eSBnZXNldHp0IHdpcmQsICAqKgorICAgICAqKiBzaW5kIG1pdCBkZXIgT2JqZWt0YmFsYW5jZSBhYnp1a2xhZXJlbi4gICAgICAgICAgICAgICAgICAgKioKKworCisgICAgZi4gUGFyaWVyd2FmZmVuCisKKyAgICBQYXJpZXJ3YWZmZW4gc2luZCBXYWZmZW4sIGRpZSBkaWUgVmVydGVpZGlndW5nIHVudGVyc3R1ZXR6ZW4uICBFaW5lCisgICAgV2FmZmUgd2lyZCBhbHMgUGFyaWVyd2FmZmUgdmVyd2VuZGV0LCB3ZW5uIGRpZSBQcm9wZXJ0eSBQX1BBUlJZCisgICAgZ2VzZXR6dCBpc3QuIEZvbGdlbmRlIFdlcnRlIHNpbmQgbW9lZ2xpY2g6CisKKyAgICBQQVJSWV9OT1QgICAgIERpZSBpc3QgS0VJTkUgUGFyaWVyd2FmZmUgKD1kZWZhdWx0KS4KKworICAgIFBBUlJZX09OTFkgICAgRGllcyBpc3QgZWluZSByZWluZSBQYXJpZXJ3YWZmZS4KKworICAgIFBBUlJZX1RPTyAgICAgRGllc2UgV2FmZmUgd2lyZCBzb3dvaGwgYWxzIFBhcmllcndhZmZlIGFscyBhdWNoCisgICAgICAgICAgICAgICAgICBhbHMgQW5ncmlmZnN3YWZmZSBiZW51dHp0CisKKyAgICBEaWUgU2NodXR6d2lya3VuZyBkZXIgUGFyaWVyd2FmZmUgd2lyZCB3aWUgYmVpIFJ1ZXN0dW5nZW4gdWViZXIgZGllCisgICAgUHJvcGVydHkgUF9BQyBnZXNldHp0LiBVZWJlciBkaWUgUHJvcGVydHkgUF9ERUZFTkRfRlVOQyBrYW5uIHdpZSBiZWkKKyAgICBSdWVzdHVuZ2VuIGVpbmUgRGVmZW5kRnVuYyBnZXNldHp0IHdlcmRlbi4KKworICAgIFdhZmZlbiBtaXQgUEFSUllfT05MWSB1bnRlcmxpZWdlbiBkZW4gZ2xlaWNoZW4gUF9BQy1HcmVuendlcnRlbiB3aWUKKyAgICBSdWVzdHVuZ2VuIHZvbSBUeXAgQVRfU0hJRUxELiBXYWZmZW4gbWl0IFBBUlJZX1RPTyBvZGVyIGVpbmVyCisgICAgRGVmZW5kRnVuYyBtdWVzc2VuIGdlbmVyZWxsIGdlbmVobWlndCB3ZXJkZW4uCisKKyBTSUVIRSBBVUNIOgorICAgICBiYWxhbmNlLCBydWVzdHVuZ2VuLCBmZXJud2FmZmVuLCB1bmlxdWVzLCBucGNzLCBncmVuendlcnRlLAorICAgICBhdHRyaWJ1dHN2ZXJhZW5kZXJ1bmdlbiwgcmVzaXN0ZW56ZW4sIGthbXBmb2JqZWt0ZSwga2FlbXBmZXJib25pCisKKyBMRVRaVEUgQWVOREVSVU5HOgorICAgICAxNi4gSmFudWFyIDIwMTQgR2xvaW5zb24KZGlmZiAtLWdpdCBhL2RvYy93aXovd2FmZmVuc2tpbGxzIGIvZG9jL3dpei93YWZmZW5za2lsbHMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNmUyZGRmNQotLS0gL2Rldi9udWxsCisrKyBiL2RvYy93aXovd2FmZmVuc2tpbGxzCkBAIC0wLDAgKzEsNTkgQEAKK1dhZmZlbnNraWxscyBpbSBNb3JnZW5HcmF1ZW4KKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworRGFzIFNraWxsc3lzdGVtIGRlcyBNR3MgaXN0IHJlY2h0IGtvbXBsZXguIEhpZXIgbnVyIGVpbiBwYWFyIEJlbWVlcmt1bmdlbgorenUgZGVuIFdhZmZlbnNraWxscy4KKworRXMgZ2lidCAyIFNvcnRlbiB2b24gV2FmZmVuc2tpbGxzOgorCisqIGFsbGdlbWVpbmUgV2FmZmVuc2tpbGxzLiBEaWVzZSBzaW5kIGluIGRpZSBTaGVsbCBlaW5nZWJ1bmRlbi4KKyogR2lsZGVuc3BlemlmaXNjaGUgU2tpbGxzLiBEaWVzZSBzaW5kIGluIGRlciBlbnRzcHJlY2hlbmRlbiBHaWxkZSBkZWZpbmllcnQuCisKK0RpZSBTa2lsbHMgd2VyZGVuIGluIGVpbmVyIFByb3BlcnR5IGltIFNwaWVsZXIgZ2VzcGVpY2hlcnQgKFBfTkVXU0tJTExTKS4gRXMKK2hhbmRlbHQgZXMgc2ljaCB1bSBlaW4gbWFwcGluZywgZGFzIGRpZXNlbiBBdWZiYXUgaGF0OgorCisoWyJBTlkiOihbQU5ZU0tJTExTXSksCisiZ2lsZGUxIjooW1NLSUxMU19WT05fR0lMREVfMV0pLAorImdpbGRlMiI6KFtTS0lMTFNfVk9OX0dJTERFXzJdKSwKKy4uLl0pCisKK01pdCBRdWVyeShQX05FV1NLSUxMUykgZXJoYWVsdCBtYW4gZGFzIGdlc2FtdGUgTWFwcGluZy4KKworTWl0IFF1ZXJ5UHJvcChQX05FV1NLSUxMUykgZXJoYWVsdCBtYW4gTlVSIERJRSBTS0lMTFMgREVSIEFLVFVFTExFTiBHSUxERSEKK0RhcyBoZWlzc3QsIGltIG9iaWdlbiBCZWlzcGllbCwgd2VubiBkZXIgU3BpZWxlciBpbiBnaWxkZTEgaXN0LCBpc3QKK2RlciBSZXR1cm53ZXJ0IFNLSUxMU19WT05fR0lMREVfMS4KKworU3ByaWNoOiBBbGxnZW1laW5lIFNraWxscywgd2llIGFsbGdlbWVpbmUgV2FmZmVuc2tpbGxzLCBzdGVoZW4gaW4gZGllc2VtIAorTWFwcGluZyBuaWNodCBkcmluISBFYmVuc28gd2llIHouQi4gZGVyIGVudGdpZnRlLVNwZWxsIGF1cyBkZXIgCitEdWVzdGVyd2FsZHF1ZXN0ICh3b2hsIGFiZXIgZGVyIGRlciBLbGVyaWtlciwgd2VubiBtYW4gZWluZXIgaXN0KS4KKworTWl0IFF1ZXJ5U2tpbGwoInNraWxsbmFtZSIpIGthbm4gbWFuIGVpbmVuIFNraWxsIGFiZnJhZ2VuLiBEYWJlaSB3aXJkLCB3ZW5uCitrZWluIFNraWxsIHVudGVyIGRpZXNlbSBOYW1lbiBpbiBkZXIgYWt0dWVsbGVuIEdpbGRlIGVpbmdldHJhZ2VuIGlzdCwgZWluCitldmVudHVlbGwgdm9yaGFuZGVuZXIgQU5ZLVNraWxsIHp1cnVlY2tnZWdlYmVuLiBEYWhlciB3aXJkIHouQi4gYmVpIGVpbmVtCitBYmVudGV1cmVyIGJlaSBRdWVyeVByb3AoUF9ORVdTS0lMTFMpIGRlciBTY2h3ZXJ0d2FmZmVuc2tpbGwgbmljaHQKK2FuZ2V6ZWlndCwgd29obCBhYmVyIGJlaSBlaW5lbSBRdWVyeVNraWxsKEZJR0hUKFdUX1NXT1JEKSkuCisKK1ByaW9yaXRhZXQgaGF0IGltbWVyIGRlciBTa2lsbCBkZXIgR2lsZGUsIHdlbm4gZXIgdm9yaGFuZGVuIGlzdC4KKworTWFuIGthbm4gYXVjaCBTa2lsbHMgaW4gZGVyIEdpbGRlIHVudGVyZHJ1ZWNrZW4uIERpZXMgZ2VodCB1ZWJlciBkaWUgUG9wZXJ0eQorUF9HVUlMRF9ERUFDVElWQVRFX1NLSUxMUy4gRGllc2UgU2tpbGxzIHdlcmRlbiBuaWNodCBwZXIgc2UgdW50ZXJkcnVlY2t0LAorc29uZGVybiBudXIgZGllIGVudHNwcmVjaGVuZGVuIEFOWS1Ta2lsbHMuCisKK1NwcmljaDogRXMgc2VpIEEgZWluIEFiZW50ZXVyZXIuCisKK3hjYWxsIEEtPlF1ZXJ5U2tpbGwoRklHSFQoV1RfU1dPUkQpKQorCittYWcgZm9sZ2VuZGVzIHp1cnVlY2tnZWJlbjoKKworUmVzdWx0OiAoWyJzaV9kaWZmaWN1bHR5IjoxNTAsInNpX2FiaWwiOjAsInNpX2d1aWxkIjoiQU5ZIl0pCisKK3RyaXR0IEEgZGFyYXVmaGluIGRlbiBLYWVtcGZlcm4gYmVpIHVuZCBoYXQgZG9ydCBub2NoIGtlaW5lbiBTY2h3ZXJ0c2tpbGwKK2dlbGVybnQsIHdpcmQgaGluZ2VnZW4gMCB6dXJ1ZWNrZ2VnZWJuLiBGdWVyIGRlbiBGYWxsIGVpbmVzIEF1c3RyaXR0cyBpc3QgZGVyCitXZXJ0IGFiZXIgbmFjaCB3aWUgdm9yIGdlc3BlaWNoZXJ0LCB3aWUgbWFuIHBlciBRdWVyeShQX05FV1NLSUxMUykgbGVpY2h0CitzZWhlbiBrYW5uLiBEaWVzIHdpcmQgdW50ZXJkcnVlY2t0LCBkYSBpbiBkZXIgS2FlbXBmZXJnaWxkZSBkaWUgUHJvcCAKK1BfR1VJTERfREVBQ1RJVkFURV9TS0lMTFMgZ2VzZXR6dCB3aXJkLgorCitUcml0dCBkZXIgU3BpZWxlciBkZW4gQ2hhb3RlbiBiZWksIGFlbmRlcnQgc2ljaCBoaW5nZWdlbiBiZWkgZGllc2VtIEF1ZnJ1ZgorbmljaHRzLgorCitMZXR6dGUgQWVuZGVydW5nOiBIdW1uaSwgMjAwMy0wNy0wOQpkaWZmIC0tZ2l0IGEvZG9jL3dpei96YXViZXJ0cmFlbmtlIGIvZG9jL3dpei96YXViZXJ0cmFlbmtlCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmFhZGI1NGEKLS0tIC9kZXYvbnVsbAorKysgYi9kb2Mvd2l6L3phdWJlcnRyYWVua2UKQEAgLTAsMCArMSw5NSBAQAorCitaYXViZXJ0cmFlbmtlIGZ1ZXIgTWFnaWVyCis9PT09PT09PT09PT09PT09PT09PT09PT09CisKK1dpZSBtYW4gZGllIFRyYWVua2UgamV0enQgZ2VuYXUgdmVyc3RlY2t0IGJsZWlidCBkZW0gYmV0cmVmZmVuZGVuIE1hZ2llcgordWViZXJsYXNzZW4sIGVzIHNvbGx0ZSBoYWx0IGluc2dlc2FtdCBlaW4gYnJlaXRlcyBTcGVrdHJ1bSB2b24gc2VociBsZWljaHQKK3p1IGZpbmRlbiBiaXMgZmFzdCB1bm1vZWdsaWNoIGFiZ2VkZWNrdCBzZWluLgorRnVlciBkYXMgT3Jha2VsIGRlciBIb2NoZWJlbmUgc29sbHRlIGRhbm4gZWluIGVudHNwcmVjaGVuZGVyIFNwcnVjaAordm9yYmVyZWl0ZXQgd2VyZGVuLCBuaWNodCB6dSBrcnlwdGlzY2ggYWJlciBkb2NoIG9yYWtsZWlnLgorCitEaWUgenVmYWVsbGlnZSBBdXN3YWhsIGFuIHp1Z2VvcmRuZXRlbiBaYXViZXJ0cmFlbmtlbiB3aXJkIGJlaW0gZXJzdGVuCitFaW5sb2dnZW4gZGVzIFNwaWVsZXJzIGZlc3RnZWxlZ3QuCisKK0RpZSBSYWV1bWUsIGluIGRlbmVuIFRyYWVua2UgdmVyc3RlY2t0IHdlcmRlbiAodW5kIGVzIGR1ZXJmZW4gbnVyIFJhZXVtZQorc2VpbiksIHdlcmRlbiBpbiA4IExpc3RlbiBlaW5nZXRlaWx0LCBqZSBuYWNoIFNjaHdpZXJpZ2tlaXRzZ3JhZC4gRGVyIGhhZW5ndAorbmF0dWVybGljaCB2b24gZGVyIExhZ2UgKHNvIGlzdCBlaW4gVHJhbmsgaW4gZWluZW0gbW9uc3RlcndpbW1lbG5kZW4KK0xhYnlyaW50aCBzY2h3aWVyaWdlciB6dSBlcnJlaWNoZW4sIGFscyBlaW5lciBhdWYgZGVyIEhvY2hlYmVuZSksIHVuZCB2b24KK2RlbSBWZXJzdGVjayBzZWxic3QgYWIuCitRdWVzdHJhZXVtZSwgZGllIG51ciBpbSBSYWhtZW4gZGVyIFF1ZXN0IGVycmVpY2hiYXIgc2luZCwgc2luZCB1bmdlZWlnbmV0LgorCisKK01laW4gU3RhbmRhcmRiZWlzcGllbCBmdWVyIGVpbiBWZXJzdGVjayBpc3QgaW1tZXIgZm9sZ2VuZGVzOgorIAorPiBzY2hhdWUKK2JsYWJsYWJsYWJsYSAuLi4uIEVpbiBTY2hyZWlidGlzY2ggc3RlaHQgaW4gZGVyIEVja2UuIC4uLiBibGFibGFibGEKKz4gdW50IHNjaHJlaWJ0aXNjaAorRXIgaGF0IGVpbmUgU2NodWJsYWRlLgorPiBvZWZmbmUgc2NodWJsYWRlICAgICAgICAgICAgICAgICAgICAgICAgIAorRHUgb2VmZm5lc3QgZGllIFNjaHVibGFkZS4KKz4gdW50IHNjaHVibGFkZQorSW4gZGVyIFNjaHVibGFkZSBlbnRlY2tzdCBEdSBlaW4gcGFhciBQYXBpZXJlLgorPiB1bnQgcGFwaWVyZQorQmVpbSBSdW13dWVobGVuIGluIGRlbiBQYXBpZXJlbiBlbnRkZWNrc3QgRHUgZWluZW4ga2xlaW5lbiBaYXViZXJ0cmFuaywgZGVuCitEdSBzb2ZvcnQgdHJpbmtzdC4KKyAKK0Rhbm4ga29tbXQgZGllIEF1c3dhaGxzZXF1ZW56LCB3ZWxjaGUgRWlnZW5zY2hhZnQgbWFuIGVyaG9laGVuIHdpbGwuCisgCitJbiBkaWVzZW0gRmFsbCByZWljaGVuIERldGFpbHMsIERldGFpbHMgbWl0IENsb3N1cmUgdW5kIGVpbmUgS29tbWFuZG8gZnVlcgorIm9lZmZuZSIgYXVzLiBFdHdhIHdpZSBmb2xndDoKKworICB2b2lkIGNyZWF0ZSgpIHsKKyAgICBbLi4uXQorICAgIFNldFByb3AoUF9JTlRfTE9ORywgLi4uIEVpbiBTY2hyZWlidGlzY2ggc3RlaHQgaW4gZGVyIEVja2UgLi4uKTsKKyAgCisgICAgQWRkRGV0YWlsKCh7InRpc2NoIiwgInNjaHJlaWJ0aXNjaCJ9KSwKKyAgICAgICJFciBoYXQgZWluZSBTY2h1YmxhZGUuIik7CisKKyAgICBBZGRDbWQoIm9lZmZuZSZzY2h1YmxhZGUiLCAjJ2FjdGlvbl9vZWZmbmUsCisgICAgICAgICAgICJXYXMgbW9lY2h0ZXN0IGR1IG9lZmZuZW4uIik7CisgIH0KKworICBwcml2YXRlIGludCBhY3Rpb25fb2VmZm5lKCkgeworICAgIHRlbGxfb2JqZWN0KHRoaXNfcGxheWVyKCksICJEdSBvZWZmbmVzdCBkaWUgU2NodWJsYWRlLlxuIik7CisgICAgdGVsbF9yb29tKHRoaXNfb2JqZWN0KCksIHRoaXNfcGxheWVyKCktPk5hbWUoKSsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIiBvZWZmbmV0IGVpbmUgU2NodWJsYWRlLlxuIiwgKHt0aGlzX3BsYXllcigpfSkpOworCisgICAgQWRkRGV0YWlsKCJzY2h1YmxhZGUiLAorICAgICAgICAgICAgICAiSW4gZGVyIFNjaHVibGFkZSBlbnRkZWNrc3QgZHUgZWluIHBhYXIgUGFwaWVyZS5cbiIpOworICAgIEFkZERldGFpbCgicGFwaWVyZSIsICMnZGV0YWlsX3BhcGllcmUpOworICB9CisKKyAgLy8gWmF1YmVydHJhbmtnZWJlbmRlcyBEZXRhaWwgIAorICBwcml2YXRlIHN0cmluZyBkZXRhaWxfcGFwaWVyZSgpIHsKKyAgICBpZiAodGhpc19wbGF5ZXIoKS0+RmluZFBvdGlvbigKKyAgICAgICAgYnJlYWtfc3RyaW5nKCJCZWltIFJ1bXd1ZWhsZW4gaW4gZGVuIFBhcGllcmVuIGVudGRlY2tzdCBEdSBlaW5lbiAiCisgICAgICAgICAgICAgICAgICAgICAia2xlaW5lbiBaYXViZXJ0cmFuaywgZGVuIER1IHNvZm9ydCB0cmlua3N0LiIsIDc4KSkpCisgICAgICByZXR1cm4gIiI7ICAKKyAgICAgIC8vIEVzIG11c3MgZWluIFN0cmluZyB6dXJ1ZWNrZ2VnZWJlbiB3ZXJkZW4sIGRhIG1hbiBzb25zdAorICAgICAgLy8gZGllIEZlaGxlcm1lbGR1bmcgIlNvd2FzIHNpZWhzdCBkdSBoaWVyIG5pY2h0LiIgYmVrb21tdAorICAgIGVsc2UKKyAgICAgIHJldHVybiAiRGllIFBhcGllcmUgc2luZCBhbGxlIHVuYmVzY2hyaWZ0ZXQuXG4iOworICB9CisKKyAgLy8gQXVmcmFldW1lbiBkZXMgUmF1bWVzCisgIHZvaWQgcmVzZXQoKSB7CisgICAgaWYoIXNpemVvZihmaWx0ZXIoYWxsX2ludmVudG9yeSh0aGlzX29iamVjdCgpKSwgIydpbnRlcmFjdGl2ZSkpKSB7CisgICAgICBSZW1vdmVEZXRhaWwoInBhcGllcmUiKTsKKyAgICAgIFJlbW92ZURldGFpbCgic2NodWJsYWRlIik7CisgICAgfQorICAgIDo6cmVzZXQoKTsKKyAgfQorICAKK0ZpbmRQb3Rpb24oKSBnaWJ0IDEgenVydWVjaywgd2VubiBkZXIgU3BpZWxlciBkZW4gWmF1YmVydHJhbmsgZmluZGVuIGRhcmYuCisKK1dlciBhbHNvIFRyYWVua2UgdmVyc3RlY2tlbiB3aWxsLCBtYWNodCBzb3dhcyBpbiBkZXIgQXJ0IHVuZCBtZWxkZXQgZGFubiBkZW4KK1JhdW0gcGVyc29lbmxpY2ggb2RlciBwZXIgUG9zdCBiZWkgZGVuIEVyem1hZ2llcm4gYnp3IHNlaW5lbSBha3RpdmVuCitSZWdpb25zbWFnaWVyIGFuLgorIAorU0lFSEUgQVVDSDoKKyAgICBXZWl0ZXJlIERhdGVpbmFtZW4gbWl0IEJlaXNwaWVsZW4gZnVlciBUcmFua3ZlcnN0ZWNrZSBrYW5uIG1hbiBkZXIKKyAgICBEYXRlaSAvZXRjL3RyYWVua2UgZW50bmVobWVuLgorCisgICAgQmVmZWhsOiAgICB0cmFlbmtlIChmdWVyIE1hZ2llciB6dW0gRWluc2NoYWx0ZW4gZGVzIEZpbmRlbnMgdm9uIFpUcykKKworMTAuIEF1Z3VzdCAyMDE1IEdsb2luc29uCmRpZmYgLS1naXQgYS9kb2Mvd2l6L3p3ZWl0aWVkYiBiL2RvYy93aXovendlaXRpZWRiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmJmNzJkMjYKLS0tIC9kZXYvbnVsbAorKysgYi9kb2Mvd2l6L3p3ZWl0aWVkYgpAQCAtMCwwICsxLDIxIEBACitJbiBkZXIgWndlaXRpZS1EQiB3ZXJkZW4gYWxsZSBDaGFycyB2ZXJ3YWx0ZXQsIGRpZSBhbHMgWndlaXRpZSB2b24gaXJnZW5kZWluZW0gYW5kZXJlbiBtYXJraWVydCBzaW5kLiAoWnVyIFplaXQ6IG51ciBkaWUgc2VpdCBIZXJic3QgMjAxNCBlaW5nZWxvZ2d0ZW4uKQorCitEaXJla3RlIEFiZnJhZ2UgZGVyIFp3ZWl0aWUtREIgKGZ1ZXIgRXJ6bWFnaWVyKToKKworRGllIFp3ZWl0aWUtREIgbGllZ3QgdW50ZXIKK3NlY3VyZS9BUkNIL3NlY29uZC5zcWxpdGUKK0RhcyB2ZXJ3YWx0ZW5kZSBPYmpla3QgaW0gTXVkIGlzdCAvc2VjdXJlL3p3ZWl0aWVzCisKK0F1ZiBkZXIgU2hlbGwgZnJhZ3QgbWFuIGRpZSBEQiByZWNodCBzaW1wZWwgc28gYWI6CitzcWxpdGUzIC1jb2x1bW4gLWhlYWRlciBzZWN1cmUvQVJDSC9zZWNvbmQuc3FsaXRlCisKK0FsbGUgWndlaXRpZXMgdm9uIEFyYXRob3JuIGVybWl0dGVsbjoKK3NlbGVjdCAqIGZyb20gendlaXRpZXMgd2hlcmUgZXJzdGllPSdhcmF0aG9ybic7CisKK0Vyc3RpZSB2b24gQWhhYiBlcm1pdHRlbG46CitzZWxlY3QgZXJzdGllIGZyb20gendlaXRpZXMgd2hlcmUgbmFtZT0nYWhhYic7CisKK0RpZXNlIHNlbGVjdC1BbndlaXN1bmdlbiBsYXNzZW4gc2ljaCAoYWxzIEVNKSBhdWNoIGltIE11ZCBhYnNldHplbjoKK3hjYWxsIC9zZWN1cmUvendlaXRpZXMtPnNxbF9xdWVyeSgKKyAgICAic2VsZWN0ICogZnJvbSB6d2VpdGllcyB3aGVyZSBlcnN0aWU9J2FyYXRob3JuJzsiKQorCg==